2025-11-03T09:00:05.322 [DEBUG] [Thread-112935 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:00:10.770 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:00:10.771 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:00:20.361 [DEBUG] [Thread-112936 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:00:24.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:00:24.924 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:00:24.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:00:25.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 8, 59, 28), 31.99, 10.4, 0.0, 12.12, 19.13, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:00:25.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 08:59:28
2025-11-03T09:00:25.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:00:25.873 [DEBUG] [Thread-112937] [transport.py] [_log()] starting thread (client mode): 0x11799120
2025-11-03T09:00:25.873 [DEBUG] [Thread-112937] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:00:25.893 [DEBUG] [Thread-112937] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:00:25.893 [INFO] [Thread-112937] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:00:25.896 [DEBUG] [Thread-112937] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:00:25.896 [DEBUG] [Thread-112937] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:00:25.896 [DEBUG] [Thread-112937] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:00:25.896 [DEBUG] [Thread-112937] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:00:25.897 [DEBUG] [Thread-112937] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:00:25.897 [DEBUG] [Thread-112937] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:00:25.897 [DEBUG] [Thread-112937] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:00:25.897 [DEBUG] [Thread-112937] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:00:25.897 [DEBUG] [Thread-112937] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:00:25.897 [DEBUG] [Thread-112937] [transport.py] [_log()] client lang: <none>
2025-11-03T09:00:25.897 [DEBUG] [Thread-112937] [transport.py] [_log()] server lang: <none>
2025-11-03T09:00:25.897 [DEBUG] [Thread-112937] [transport.py] [_log()] kex follows: False
2025-11-03T09:00:25.897 [DEBUG] [Thread-112937] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:00:25.897 [DEBUG] [Thread-112937] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:00:25.897 [DEBUG] [Thread-112937] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:00:25.897 [DEBUG] [Thread-112937] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:00:25.897 [DEBUG] [Thread-112937] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:00:25.897 [DEBUG] [Thread-112937] [transport.py] [_log()] Compression: none
2025-11-03T09:00:25.897 [DEBUG] [Thread-112937] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:00:25.913 [DEBUG] [Thread-112937] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:00:25.922 [DEBUG] [Thread-112937] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:00:25.922 [DEBUG] [Thread-112937] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:00:25.922 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:00:25.922 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:00:25.923 [DEBUG] [Thread-112937] [transport.py] [_log()] userauth is OK
2025-11-03T09:00:25.923 [DEBUG] [Thread-112937] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:00:25.923 [DEBUG] [Thread-112937] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:00:25.923 [DEBUG] [Thread-112937] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:00:25.923 [DEBUG] [Thread-112937] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:00:25.933 [INFO] [Thread-112937] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:00:25.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:00:26.574 [DEBUG] [Thread-112937] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:00:26.583 [DEBUG] [Thread-112937] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:00:26.584 [DEBUG] [Thread-112937] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:00:26.615 [DEBUG] [Thread-112937] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:00:26.615 [DEBUG] [Thread-112937] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:00:26.619 [DEBUG] [Thread-112937] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:00:26.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:00:26.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:00:26.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:00:26.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:00:26.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:00:26.642 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:00:26.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:00:26.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:00:26.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:00:26.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.291414 -999.00  +18.40  16.86     15   -8.00 1 1 1 1 1   888    0 28.99 128.77 ----- 15.5 16.9 64.4 19.3 24.6 -29.3 23.7 -29.5 22.1 -29.4 22.9 -29.6
2025-11-03T09:00:26.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:00:26.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:00:26.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.291414
2025-11-03T09:00:26.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:00:26.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:00:26.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:00:26.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:00:26.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:00:26.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T08:59:28', tmtdew=31.99, humidity=10.4, cloud=0.0, wind=12.12, temperature=19.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T06:59:38.170', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:00:26.646 [DEBUG] [Thread-112937] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:00:26.732 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:00:26.745 [DEBUG] [Thread-112940] [transport.py] [_log()] starting thread (client mode): 0xed2fdc0
2025-11-03T09:00:26.745 [DEBUG] [Thread-112940] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:00:26.760 [DEBUG] [Thread-112940] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:00:26.760 [INFO] [Thread-112940] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:00:26.771 [DEBUG] [Thread-112940] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:00:26.771 [DEBUG] [Thread-112940] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:00:26.771 [DEBUG] [Thread-112940] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:00:26.771 [DEBUG] [Thread-112940] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:00:26.772 [DEBUG] [Thread-112940] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:00:26.772 [DEBUG] [Thread-112940] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:00:26.772 [DEBUG] [Thread-112940] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:00:26.772 [DEBUG] [Thread-112940] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:00:26.772 [DEBUG] [Thread-112940] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:00:26.772 [DEBUG] [Thread-112940] [transport.py] [_log()] client lang: <none>
2025-11-03T09:00:26.772 [DEBUG] [Thread-112940] [transport.py] [_log()] server lang: <none>
2025-11-03T09:00:26.772 [DEBUG] [Thread-112940] [transport.py] [_log()] kex follows: False
2025-11-03T09:00:26.772 [DEBUG] [Thread-112940] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:00:26.773 [DEBUG] [Thread-112940] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:00:26.773 [DEBUG] [Thread-112940] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:00:26.773 [DEBUG] [Thread-112940] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:00:26.773 [DEBUG] [Thread-112940] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:00:26.773 [DEBUG] [Thread-112940] [transport.py] [_log()] Compression: none
2025-11-03T09:00:26.773 [DEBUG] [Thread-112940] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:00:26.842 [DEBUG] [Thread-112940] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:00:26.843 [DEBUG] [Thread-112940] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:00:26.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:00:26.844 [DEBUG] [Thread-112940] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:00:26.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:00:26.899 [DEBUG] [Thread-112940] [transport.py] [_log()] userauth is OK
2025-11-03T09:00:26.899 [DEBUG] [Thread-112940] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:00:26.899 [DEBUG] [Thread-112940] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:00:26.899 [DEBUG] [Thread-112940] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:00:26.899 [DEBUG] [Thread-112940] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:00:26.918 [INFO] [Thread-112940] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:00:26.919 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:00:26.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:00:27.775 [DEBUG] [Thread-112940] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:00:27.776 [DEBUG] [Thread-112940] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:00:27.824 [DEBUG] [Thread-112940] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:00:27.824 [DEBUG] [Thread-112940] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:00:27.834 [DEBUG] [Thread-112940] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:00:27.843 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:00:27.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:00:27.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:00:27.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:00:27.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:00:27.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:00:27.871 [DEBUG] [Thread-112940] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:00:35.397 [DEBUG] [Thread-112942 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:00:46.399 [DEBUG] [Thread-112943 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:00:50.434 [DEBUG] [Thread-112944 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:00:57.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:00:57.893 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:00:57.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:00:58.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 0, 32), 31.59, 10.79, 0.0, 11.68, 19.06, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:00:58.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:00:32
2025-11-03T09:00:58.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:00:58.837 [DEBUG] [Thread-112945] [transport.py] [_log()] starting thread (client mode): 0xed2fa90
2025-11-03T09:00:58.837 [DEBUG] [Thread-112945] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:00:58.848 [DEBUG] [Thread-112945] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:00:58.848 [INFO] [Thread-112945] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:00:58.851 [DEBUG] [Thread-112945] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:00:58.851 [DEBUG] [Thread-112945] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:00:58.851 [DEBUG] [Thread-112945] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:00:58.851 [DEBUG] [Thread-112945] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:00:58.851 [DEBUG] [Thread-112945] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:00:58.851 [DEBUG] [Thread-112945] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:00:58.851 [DEBUG] [Thread-112945] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:00:58.851 [DEBUG] [Thread-112945] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:00:58.851 [DEBUG] [Thread-112945] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:00:58.851 [DEBUG] [Thread-112945] [transport.py] [_log()] client lang: <none>
2025-11-03T09:00:58.851 [DEBUG] [Thread-112945] [transport.py] [_log()] server lang: <none>
2025-11-03T09:00:58.851 [DEBUG] [Thread-112945] [transport.py] [_log()] kex follows: False
2025-11-03T09:00:58.851 [DEBUG] [Thread-112945] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:00:58.851 [DEBUG] [Thread-112945] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:00:58.851 [DEBUG] [Thread-112945] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:00:58.852 [DEBUG] [Thread-112945] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:00:58.852 [DEBUG] [Thread-112945] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:00:58.852 [DEBUG] [Thread-112945] [transport.py] [_log()] Compression: none
2025-11-03T09:00:58.852 [DEBUG] [Thread-112945] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:00:58.866 [DEBUG] [Thread-112945] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:00:58.866 [DEBUG] [Thread-112945] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:00:58.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:00:58.868 [DEBUG] [Thread-112945] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:00:58.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:00:58.869 [DEBUG] [Thread-112945] [transport.py] [_log()] userauth is OK
2025-11-03T09:00:58.870 [DEBUG] [Thread-112945] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:00:58.870 [DEBUG] [Thread-112945] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:00:58.870 [DEBUG] [Thread-112945] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:00:58.870 [DEBUG] [Thread-112945] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:00:58.895 [INFO] [Thread-112945] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:00:58.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:00:59.548 [DEBUG] [Thread-112945] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:00:59.548 [DEBUG] [Thread-112945] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:00:59.548 [DEBUG] [Thread-112945] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:00:59.589 [DEBUG] [Thread-112945] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:00:59.589 [DEBUG] [Thread-112945] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:00:59.593 [DEBUG] [Thread-112945] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:00:59.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:00:59.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:00:59.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:00:59.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:00:59.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:00:59.617 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:00:59.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:00:59.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:00:59.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:00:59.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.291760 -999.00  +18.40  16.93     15   -8.00 1 1 1 1 1   888    0 28.71 128.94 ----- 13.9 16.9 52.2 19.3 24.6 -29.3 23.6 -29.7 22.1 -30.2 22.9 -29.6
2025-11-03T09:00:59.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:00:59.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:00:59.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.291760
2025-11-03T09:00:59.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:00:59.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:00:59.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:00:59.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:00:59.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:00:59.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:00:32', tmtdew=31.59, humidity=10.79, cloud=0.0, wind=11.68, temperature=19.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:00:08.064', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:00:59.620 [DEBUG] [Thread-112945] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:00:59.705 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:00:59.716 [DEBUG] [Thread-112948] [transport.py] [_log()] starting thread (client mode): 0xed413c0
2025-11-03T09:00:59.716 [DEBUG] [Thread-112948] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:00:59.733 [DEBUG] [Thread-112948] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:00:59.733 [INFO] [Thread-112948] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:00:59.743 [DEBUG] [Thread-112948] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:00:59.743 [DEBUG] [Thread-112948] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:00:59.743 [DEBUG] [Thread-112948] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:00:59.743 [DEBUG] [Thread-112948] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:00:59.743 [DEBUG] [Thread-112948] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:00:59.744 [DEBUG] [Thread-112948] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:00:59.744 [DEBUG] [Thread-112948] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:00:59.744 [DEBUG] [Thread-112948] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:00:59.744 [DEBUG] [Thread-112948] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:00:59.744 [DEBUG] [Thread-112948] [transport.py] [_log()] client lang: <none>
2025-11-03T09:00:59.744 [DEBUG] [Thread-112948] [transport.py] [_log()] server lang: <none>
2025-11-03T09:00:59.744 [DEBUG] [Thread-112948] [transport.py] [_log()] kex follows: False
2025-11-03T09:00:59.744 [DEBUG] [Thread-112948] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:00:59.745 [DEBUG] [Thread-112948] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:00:59.745 [DEBUG] [Thread-112948] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:00:59.745 [DEBUG] [Thread-112948] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:00:59.745 [DEBUG] [Thread-112948] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:00:59.745 [DEBUG] [Thread-112948] [transport.py] [_log()] Compression: none
2025-11-03T09:00:59.745 [DEBUG] [Thread-112948] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:00:59.803 [DEBUG] [Thread-112948] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:00:59.803 [DEBUG] [Thread-112948] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:00:59.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:00:59.804 [DEBUG] [Thread-112948] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:00:59.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:00:59.863 [DEBUG] [Thread-112948] [transport.py] [_log()] userauth is OK
2025-11-03T09:00:59.863 [DEBUG] [Thread-112948] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:00:59.863 [DEBUG] [Thread-112948] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:00:59.863 [DEBUG] [Thread-112948] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:00:59.864 [DEBUG] [Thread-112948] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:00:59.883 [INFO] [Thread-112948] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:00:59.883 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:00:59.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:01:00.729 [DEBUG] [Thread-112948] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:01:00.729 [DEBUG] [Thread-112948] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:01:00.778 [DEBUG] [Thread-112948] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:01:00.778 [DEBUG] [Thread-112948] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:01:00.787 [DEBUG] [Thread-112948] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:01:00.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:01:00.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:01:00.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:01:00.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:01:00.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:01:00.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:01:00.823 [DEBUG] [Thread-112948] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:01:05.473 [DEBUG] [Thread-112950 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:01:10.912 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:01:10.913 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:01:20.531 [DEBUG] [Thread-112951 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:01:30.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:01:30.845 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:01:30.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:01:31.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 1, 5), 31.85, 10.57, 0.0, 12.7, 19.1, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:01:31.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:01:05
2025-11-03T09:01:31.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:01:31.808 [DEBUG] [Thread-112952] [transport.py] [_log()] starting thread (client mode): 0xedb1bd0
2025-11-03T09:01:31.808 [DEBUG] [Thread-112952] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:01:31.828 [DEBUG] [Thread-112952] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:01:31.828 [INFO] [Thread-112952] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:01:31.831 [DEBUG] [Thread-112952] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:01:31.831 [DEBUG] [Thread-112952] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:01:31.831 [DEBUG] [Thread-112952] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:01:31.831 [DEBUG] [Thread-112952] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:01:31.831 [DEBUG] [Thread-112952] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:01:31.831 [DEBUG] [Thread-112952] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:01:31.831 [DEBUG] [Thread-112952] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:01:31.831 [DEBUG] [Thread-112952] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:01:31.831 [DEBUG] [Thread-112952] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:01:31.831 [DEBUG] [Thread-112952] [transport.py] [_log()] client lang: <none>
2025-11-03T09:01:31.831 [DEBUG] [Thread-112952] [transport.py] [_log()] server lang: <none>
2025-11-03T09:01:31.831 [DEBUG] [Thread-112952] [transport.py] [_log()] kex follows: False
2025-11-03T09:01:31.831 [DEBUG] [Thread-112952] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:01:31.831 [DEBUG] [Thread-112952] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:01:31.831 [DEBUG] [Thread-112952] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:01:31.831 [DEBUG] [Thread-112952] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:01:31.831 [DEBUG] [Thread-112952] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:01:31.832 [DEBUG] [Thread-112952] [transport.py] [_log()] Compression: none
2025-11-03T09:01:31.832 [DEBUG] [Thread-112952] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:01:31.850 [DEBUG] [Thread-112952] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:01:31.850 [DEBUG] [Thread-112952] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:01:31.851 [DEBUG] [Thread-112952] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:01:31.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:01:31.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:01:31.852 [DEBUG] [Thread-112952] [transport.py] [_log()] userauth is OK
2025-11-03T09:01:31.853 [DEBUG] [Thread-112952] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:01:31.853 [DEBUG] [Thread-112952] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:01:31.853 [DEBUG] [Thread-112952] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:01:31.853 [DEBUG] [Thread-112952] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:01:31.884 [INFO] [Thread-112952] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:01:31.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:01:32.502 [DEBUG] [Thread-112952] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:01:32.511 [DEBUG] [Thread-112952] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:01:32.511 [DEBUG] [Thread-112952] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:01:32.543 [DEBUG] [Thread-112952] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:01:32.543 [DEBUG] [Thread-112952] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:01:32.547 [DEBUG] [Thread-112952] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:01:32.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:01:32.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:01:32.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:01:32.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:01:32.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:01:32.571 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:01:32.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:01:32.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:01:32.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:01:32.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.292108 -999.00  +18.20  12.96     16   -7.70 1 1 1 1 1   888    0 28.47 129.65 ----- 11.4 13.0 40.0 17.4 24.6 -30.5 23.7 -29.4 22.1 -28.9 22.9 -29.1
2025-11-03T09:01:32.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:01:32.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:01:32.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.292108
2025-11-03T09:01:32.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:01:32.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:01:32.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:01:32.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:01:32.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:01:32.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:01:05', tmtdew=31.85, humidity=10.57, cloud=0.0, wind=12.7, temperature=19.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:00:38.131', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:01:32.576 [DEBUG] [Thread-112952] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:01:32.658 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:01:32.671 [DEBUG] [Thread-112955] [transport.py] [_log()] starting thread (client mode): 0xedb0a90
2025-11-03T09:01:32.671 [DEBUG] [Thread-112955] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:01:32.687 [DEBUG] [Thread-112955] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:01:32.688 [INFO] [Thread-112955] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:01:32.696 [DEBUG] [Thread-112955] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:01:32.696 [DEBUG] [Thread-112955] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:01:32.696 [DEBUG] [Thread-112955] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:01:32.696 [DEBUG] [Thread-112955] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:01:32.696 [DEBUG] [Thread-112955] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:01:32.696 [DEBUG] [Thread-112955] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:01:32.697 [DEBUG] [Thread-112955] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:01:32.697 [DEBUG] [Thread-112955] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:01:32.697 [DEBUG] [Thread-112955] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:01:32.697 [DEBUG] [Thread-112955] [transport.py] [_log()] client lang: <none>
2025-11-03T09:01:32.697 [DEBUG] [Thread-112955] [transport.py] [_log()] server lang: <none>
2025-11-03T09:01:32.697 [DEBUG] [Thread-112955] [transport.py] [_log()] kex follows: False
2025-11-03T09:01:32.697 [DEBUG] [Thread-112955] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:01:32.697 [DEBUG] [Thread-112955] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:01:32.697 [DEBUG] [Thread-112955] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:01:32.697 [DEBUG] [Thread-112955] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:01:32.697 [DEBUG] [Thread-112955] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:01:32.697 [DEBUG] [Thread-112955] [transport.py] [_log()] Compression: none
2025-11-03T09:01:32.697 [DEBUG] [Thread-112955] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:01:32.754 [DEBUG] [Thread-112955] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:01:32.755 [DEBUG] [Thread-112955] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:01:32.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:01:32.756 [DEBUG] [Thread-112955] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:01:32.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:01:32.813 [DEBUG] [Thread-112955] [transport.py] [_log()] userauth is OK
2025-11-03T09:01:32.813 [DEBUG] [Thread-112955] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:01:32.813 [DEBUG] [Thread-112955] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:01:32.814 [DEBUG] [Thread-112955] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:01:32.814 [DEBUG] [Thread-112955] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:01:32.832 [INFO] [Thread-112955] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:01:32.833 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:01:32.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:01:33.713 [DEBUG] [Thread-112955] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:01:33.714 [DEBUG] [Thread-112955] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:01:33.763 [DEBUG] [Thread-112955] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:01:33.763 [DEBUG] [Thread-112955] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:01:33.772 [DEBUG] [Thread-112955] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:01:33.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:01:33.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:01:33.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:01:33.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:01:33.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:01:33.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:01:33.810 [DEBUG] [Thread-112955] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:01:35.562 [DEBUG] [Thread-112957 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:01:46.461 [DEBUG] [Thread-112958 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:01:50.614 [DEBUG] [Thread-112959 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:02:03.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:02:03.832 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:02:03.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:02:04.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 1, 37), 32.04, 10.45, 0.0, 13.6, 18.95, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:02:04.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:01:37
2025-11-03T09:02:04.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:02:04.756 [DEBUG] [Thread-112960] [transport.py] [_log()] starting thread (client mode): 0xed34520
2025-11-03T09:02:04.756 [DEBUG] [Thread-112960] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:02:04.779 [DEBUG] [Thread-112960] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:02:04.780 [INFO] [Thread-112960] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:02:04.783 [DEBUG] [Thread-112960] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:02:04.784 [DEBUG] [Thread-112960] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:02:04.784 [DEBUG] [Thread-112960] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:02:04.784 [DEBUG] [Thread-112960] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:02:04.784 [DEBUG] [Thread-112960] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:02:04.784 [DEBUG] [Thread-112960] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:02:04.784 [DEBUG] [Thread-112960] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:02:04.784 [DEBUG] [Thread-112960] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:02:04.784 [DEBUG] [Thread-112960] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:02:04.784 [DEBUG] [Thread-112960] [transport.py] [_log()] client lang: <none>
2025-11-03T09:02:04.785 [DEBUG] [Thread-112960] [transport.py] [_log()] server lang: <none>
2025-11-03T09:02:04.785 [DEBUG] [Thread-112960] [transport.py] [_log()] kex follows: False
2025-11-03T09:02:04.785 [DEBUG] [Thread-112960] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:02:04.785 [DEBUG] [Thread-112960] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:02:04.785 [DEBUG] [Thread-112960] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:02:04.785 [DEBUG] [Thread-112960] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:02:04.785 [DEBUG] [Thread-112960] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:02:04.785 [DEBUG] [Thread-112960] [transport.py] [_log()] Compression: none
2025-11-03T09:02:04.786 [DEBUG] [Thread-112960] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:02:04.804 [DEBUG] [Thread-112960] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:02:04.804 [DEBUG] [Thread-112960] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:02:04.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:02:04.805 [DEBUG] [Thread-112960] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:02:04.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:02:04.807 [DEBUG] [Thread-112960] [transport.py] [_log()] userauth is OK
2025-11-03T09:02:04.808 [DEBUG] [Thread-112960] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:02:04.808 [DEBUG] [Thread-112960] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:02:04.808 [DEBUG] [Thread-112960] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:02:04.808 [DEBUG] [Thread-112960] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:02:04.833 [INFO] [Thread-112960] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:02:04.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:02:05.461 [DEBUG] [Thread-112960] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:02:05.462 [DEBUG] [Thread-112960] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:02:05.462 [DEBUG] [Thread-112960] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:02:05.503 [DEBUG] [Thread-112960] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:02:05.503 [DEBUG] [Thread-112960] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:02:05.507 [DEBUG] [Thread-112960] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:02:05.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:02:05.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:02:05.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:02:05.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:02:05.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:02:05.530 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:02:05.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:02:05.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:02:05.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:02:05.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.292455 -999.00  +18.30  13.55     16   -7.50 1 1 1 1 1   888    0 28.34 121.14 ----- 14.4 13.6 38.4 15.5 24.7 -29.7 23.8 -29.0 22.2 -28.3 23.0 -29.1
2025-11-03T09:02:05.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:02:05.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:02:05.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.292455
2025-11-03T09:02:05.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:02:05.532 [DEBUG] [Thread-112960] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:02:05.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:02:05.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:02:05.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:02:05.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:02:05.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:01:37', tmtdew=32.04, humidity=10.45, cloud=0.0, wind=13.6, temperature=18.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:01:08.112', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:02:05.628 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:02:05.641 [DEBUG] [Thread-112963] [transport.py] [_log()] starting thread (client mode): 0x11798370
2025-11-03T09:02:05.641 [DEBUG] [Thread-112963] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:02:05.657 [DEBUG] [Thread-112964 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:02:05.657 [DEBUG] [Thread-112963] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:02:05.657 [INFO] [Thread-112963] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:02:05.664 [DEBUG] [Thread-112963] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:02:05.665 [DEBUG] [Thread-112963] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:02:05.665 [DEBUG] [Thread-112963] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:02:05.665 [DEBUG] [Thread-112963] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:02:05.665 [DEBUG] [Thread-112963] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:02:05.665 [DEBUG] [Thread-112963] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:02:05.665 [DEBUG] [Thread-112963] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:02:05.665 [DEBUG] [Thread-112963] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:02:05.665 [DEBUG] [Thread-112963] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:02:05.665 [DEBUG] [Thread-112963] [transport.py] [_log()] client lang: <none>
2025-11-03T09:02:05.665 [DEBUG] [Thread-112963] [transport.py] [_log()] server lang: <none>
2025-11-03T09:02:05.665 [DEBUG] [Thread-112963] [transport.py] [_log()] kex follows: False
2025-11-03T09:02:05.666 [DEBUG] [Thread-112963] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:02:05.666 [DEBUG] [Thread-112963] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:02:05.666 [DEBUG] [Thread-112963] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:02:05.666 [DEBUG] [Thread-112963] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:02:05.666 [DEBUG] [Thread-112963] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:02:05.666 [DEBUG] [Thread-112963] [transport.py] [_log()] Compression: none
2025-11-03T09:02:05.666 [DEBUG] [Thread-112963] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:02:05.730 [DEBUG] [Thread-112963] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:02:05.731 [DEBUG] [Thread-112963] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:02:05.731 [DEBUG] [Thread-112963] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:02:05.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:02:05.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:02:05.786 [DEBUG] [Thread-112963] [transport.py] [_log()] userauth is OK
2025-11-03T09:02:05.787 [DEBUG] [Thread-112963] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:02:05.787 [DEBUG] [Thread-112963] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:02:05.787 [DEBUG] [Thread-112963] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:02:05.787 [DEBUG] [Thread-112963] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:02:05.810 [INFO] [Thread-112963] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:02:05.811 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:02:05.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:02:06.647 [DEBUG] [Thread-112963] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:02:06.647 [DEBUG] [Thread-112963] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:02:06.695 [DEBUG] [Thread-112963] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:02:06.695 [DEBUG] [Thread-112963] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:02:06.705 [DEBUG] [Thread-112963] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:02:06.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:02:06.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:02:06.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:02:06.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:02:06.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:02:06.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:02:06.742 [DEBUG] [Thread-112963] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:02:11.053 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:02:11.054 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:02:20.704 [DEBUG] [Thread-112966 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:02:35.743 [DEBUG] [Thread-112967 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:02:36.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:02:36.764 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:02:36.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:02:37.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 2, 9), 32.43, 10.16, 0.0, 14.66, 18.95, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:02:37.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:02:09
2025-11-03T09:02:37.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:02:37.769 [DEBUG] [Thread-112968] [transport.py] [_log()] starting thread (client mode): 0x81db400
2025-11-03T09:02:37.769 [DEBUG] [Thread-112968] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:02:37.787 [DEBUG] [Thread-112968] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:02:37.787 [INFO] [Thread-112968] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:02:37.790 [DEBUG] [Thread-112968] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:02:37.790 [DEBUG] [Thread-112968] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:02:37.790 [DEBUG] [Thread-112968] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:02:37.790 [DEBUG] [Thread-112968] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:02:37.790 [DEBUG] [Thread-112968] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:02:37.790 [DEBUG] [Thread-112968] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:02:37.790 [DEBUG] [Thread-112968] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:02:37.791 [DEBUG] [Thread-112968] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:02:37.791 [DEBUG] [Thread-112968] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:02:37.791 [DEBUG] [Thread-112968] [transport.py] [_log()] client lang: <none>
2025-11-03T09:02:37.791 [DEBUG] [Thread-112968] [transport.py] [_log()] server lang: <none>
2025-11-03T09:02:37.791 [DEBUG] [Thread-112968] [transport.py] [_log()] kex follows: False
2025-11-03T09:02:37.791 [DEBUG] [Thread-112968] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:02:37.791 [DEBUG] [Thread-112968] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:02:37.791 [DEBUG] [Thread-112968] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:02:37.791 [DEBUG] [Thread-112968] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:02:37.791 [DEBUG] [Thread-112968] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:02:37.791 [DEBUG] [Thread-112968] [transport.py] [_log()] Compression: none
2025-11-03T09:02:37.791 [DEBUG] [Thread-112968] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:02:37.806 [DEBUG] [Thread-112968] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:02:37.807 [DEBUG] [Thread-112968] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:02:37.807 [DEBUG] [Thread-112968] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:02:37.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:02:37.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:02:37.807 [DEBUG] [Thread-112968] [transport.py] [_log()] userauth is OK
2025-11-03T09:02:37.808 [DEBUG] [Thread-112968] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:02:37.808 [DEBUG] [Thread-112968] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:02:37.808 [DEBUG] [Thread-112968] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:02:37.808 [DEBUG] [Thread-112968] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:02:37.823 [INFO] [Thread-112968] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:02:37.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:02:38.456 [DEBUG] [Thread-112968] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:02:38.456 [DEBUG] [Thread-112968] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:02:38.456 [DEBUG] [Thread-112968] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:02:38.497 [DEBUG] [Thread-112968] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:02:38.497 [DEBUG] [Thread-112968] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:02:38.499 [DEBUG] [Thread-112968] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:02:38.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:02:38.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:02:38.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:02:38.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:02:38.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:02:38.526 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:02:38.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:02:38.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:02:38.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:02:38.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.293150 -999.00  +18.60  17.83     15   -7.80 1 1 1 1 1   888    0 28.97 125.79 ----- 16.1 17.8 38.0 18.5 24.9 -29.5 23.9 -29.5 22.3 -28.6 23.1 -29.1
2025-11-03T09:02:38.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:02:38.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:02:38.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.293150
2025-11-03T09:02:38.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:02:38.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:02:38.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:02:38.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:02:38.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:02:38.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:02:09', tmtdew=32.43, humidity=10.16, cloud=0.0, wind=14.66, temperature=18.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:02:08.160', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:02:38.527 [DEBUG] [Thread-112968] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:02:38.601 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:02:38.613 [DEBUG] [Thread-112971] [transport.py] [_log()] starting thread (client mode): 0x117bdc00
2025-11-03T09:02:38.613 [DEBUG] [Thread-112971] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:02:38.627 [DEBUG] [Thread-112971] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:02:38.627 [INFO] [Thread-112971] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:02:38.635 [DEBUG] [Thread-112971] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:02:38.635 [DEBUG] [Thread-112971] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:02:38.635 [DEBUG] [Thread-112971] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:02:38.635 [DEBUG] [Thread-112971] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:02:38.635 [DEBUG] [Thread-112971] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:02:38.635 [DEBUG] [Thread-112971] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:02:38.635 [DEBUG] [Thread-112971] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:02:38.635 [DEBUG] [Thread-112971] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:02:38.635 [DEBUG] [Thread-112971] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:02:38.635 [DEBUG] [Thread-112971] [transport.py] [_log()] client lang: <none>
2025-11-03T09:02:38.635 [DEBUG] [Thread-112971] [transport.py] [_log()] server lang: <none>
2025-11-03T09:02:38.635 [DEBUG] [Thread-112971] [transport.py] [_log()] kex follows: False
2025-11-03T09:02:38.635 [DEBUG] [Thread-112971] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:02:38.635 [DEBUG] [Thread-112971] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:02:38.635 [DEBUG] [Thread-112971] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:02:38.635 [DEBUG] [Thread-112971] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:02:38.636 [DEBUG] [Thread-112971] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:02:38.636 [DEBUG] [Thread-112971] [transport.py] [_log()] Compression: none
2025-11-03T09:02:38.636 [DEBUG] [Thread-112971] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:02:38.692 [DEBUG] [Thread-112971] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:02:38.692 [DEBUG] [Thread-112971] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:02:38.692 [DEBUG] [Thread-112971] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:02:38.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:02:38.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:02:38.750 [DEBUG] [Thread-112971] [transport.py] [_log()] userauth is OK
2025-11-03T09:02:38.750 [DEBUG] [Thread-112971] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:02:38.750 [DEBUG] [Thread-112971] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:02:38.750 [DEBUG] [Thread-112971] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:02:38.750 [DEBUG] [Thread-112971] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:02:38.764 [INFO] [Thread-112971] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:02:38.764 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:02:38.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:02:39.604 [DEBUG] [Thread-112971] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:02:39.604 [DEBUG] [Thread-112971] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:02:39.651 [DEBUG] [Thread-112971] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:02:39.651 [DEBUG] [Thread-112971] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:02:39.659 [DEBUG] [Thread-112971] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:02:39.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:02:39.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:02:39.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:02:39.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:02:39.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:02:39.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:02:39.693 [DEBUG] [Thread-112971] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:02:46.538 [DEBUG] [Thread-112973 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:02:50.779 [DEBUG] [Thread-112974 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:03:05.836 [DEBUG] [Thread-112975 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:03:09.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:03:09.713 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:03:09.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:03:10.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 2, 41), 32.28, 10.16, 0.0, 13.02, 19.2, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:03:10.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:02:41
2025-11-03T09:03:10.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:03:10.681 [DEBUG] [Thread-112976] [transport.py] [_log()] starting thread (client mode): 0x11798b80
2025-11-03T09:03:10.682 [DEBUG] [Thread-112976] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:03:10.705 [DEBUG] [Thread-112976] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:03:10.705 [INFO] [Thread-112976] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:03:10.709 [DEBUG] [Thread-112976] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:03:10.709 [DEBUG] [Thread-112976] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:03:10.709 [DEBUG] [Thread-112976] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:03:10.710 [DEBUG] [Thread-112976] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:03:10.710 [DEBUG] [Thread-112976] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:03:10.710 [DEBUG] [Thread-112976] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:03:10.710 [DEBUG] [Thread-112976] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:03:10.710 [DEBUG] [Thread-112976] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:03:10.710 [DEBUG] [Thread-112976] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:03:10.710 [DEBUG] [Thread-112976] [transport.py] [_log()] client lang: <none>
2025-11-03T09:03:10.710 [DEBUG] [Thread-112976] [transport.py] [_log()] server lang: <none>
2025-11-03T09:03:10.710 [DEBUG] [Thread-112976] [transport.py] [_log()] kex follows: False
2025-11-03T09:03:10.710 [DEBUG] [Thread-112976] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:03:10.710 [DEBUG] [Thread-112976] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:03:10.710 [DEBUG] [Thread-112976] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:03:10.710 [DEBUG] [Thread-112976] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:03:10.710 [DEBUG] [Thread-112976] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:03:10.710 [DEBUG] [Thread-112976] [transport.py] [_log()] Compression: none
2025-11-03T09:03:10.710 [DEBUG] [Thread-112976] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:03:10.724 [DEBUG] [Thread-112976] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:03:10.725 [DEBUG] [Thread-112976] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:03:10.726 [DEBUG] [Thread-112976] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:03:10.726 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:03:10.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:03:10.728 [DEBUG] [Thread-112976] [transport.py] [_log()] userauth is OK
2025-11-03T09:03:10.728 [DEBUG] [Thread-112976] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:03:10.728 [DEBUG] [Thread-112976] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:03:10.729 [DEBUG] [Thread-112976] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:03:10.729 [DEBUG] [Thread-112976] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:03:10.752 [INFO] [Thread-112976] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:03:10.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:03:11.195 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:03:11.196 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:03:11.392 [DEBUG] [Thread-112976] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:03:11.401 [DEBUG] [Thread-112976] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:03:11.402 [DEBUG] [Thread-112976] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:03:11.433 [DEBUG] [Thread-112976] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:03:11.433 [DEBUG] [Thread-112976] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:03:11.437 [DEBUG] [Thread-112976] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:03:11.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:03:11.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:03:11.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:03:11.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:03:11.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:03:11.462 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:03:11.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:03:11.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:03:11.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:03:11.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.293497 -999.00  +18.60  15.62     15   -8.20 1 1 1 1 1   888    0 29.23 129.03 ----- 16.4 15.6 37.8 17.6 24.9 -30.1 23.9 -29.3 22.3 -29.7 23.0 -29.1
2025-11-03T09:03:11.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:03:11.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:03:11.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.293497
2025-11-03T09:03:11.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:03:11.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:03:11.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:03:11.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:03:11.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:03:11.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:02:41', tmtdew=32.28, humidity=10.16, cloud=0.0, wind=13.02, temperature=19.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:02:38.141', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:03:11.465 [DEBUG] [Thread-112976] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:03:11.553 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:03:11.566 [DEBUG] [Thread-112979] [transport.py] [_log()] starting thread (client mode): 0xed42b60
2025-11-03T09:03:11.566 [DEBUG] [Thread-112979] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:03:11.582 [DEBUG] [Thread-112979] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:03:11.582 [INFO] [Thread-112979] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:03:11.589 [DEBUG] [Thread-112979] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:03:11.590 [DEBUG] [Thread-112979] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:03:11.590 [DEBUG] [Thread-112979] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:03:11.590 [DEBUG] [Thread-112979] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:03:11.590 [DEBUG] [Thread-112979] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:03:11.590 [DEBUG] [Thread-112979] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:03:11.590 [DEBUG] [Thread-112979] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:03:11.590 [DEBUG] [Thread-112979] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:03:11.590 [DEBUG] [Thread-112979] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:03:11.590 [DEBUG] [Thread-112979] [transport.py] [_log()] client lang: <none>
2025-11-03T09:03:11.590 [DEBUG] [Thread-112979] [transport.py] [_log()] server lang: <none>
2025-11-03T09:03:11.590 [DEBUG] [Thread-112979] [transport.py] [_log()] kex follows: False
2025-11-03T09:03:11.590 [DEBUG] [Thread-112979] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:03:11.590 [DEBUG] [Thread-112979] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:03:11.590 [DEBUG] [Thread-112979] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:03:11.590 [DEBUG] [Thread-112979] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:03:11.590 [DEBUG] [Thread-112979] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:03:11.590 [DEBUG] [Thread-112979] [transport.py] [_log()] Compression: none
2025-11-03T09:03:11.590 [DEBUG] [Thread-112979] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:03:11.648 [DEBUG] [Thread-112979] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:03:11.648 [DEBUG] [Thread-112979] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:03:11.648 [DEBUG] [Thread-112979] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:03:11.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:03:11.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:03:11.705 [DEBUG] [Thread-112979] [transport.py] [_log()] userauth is OK
2025-11-03T09:03:11.705 [DEBUG] [Thread-112979] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:03:11.705 [DEBUG] [Thread-112979] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:03:11.705 [DEBUG] [Thread-112979] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:03:11.705 [DEBUG] [Thread-112979] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:03:11.719 [INFO] [Thread-112979] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:03:11.719 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:03:11.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:03:12.624 [DEBUG] [Thread-112979] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:03:12.624 [DEBUG] [Thread-112979] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:03:12.672 [DEBUG] [Thread-112979] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:03:12.673 [DEBUG] [Thread-112979] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:03:12.681 [DEBUG] [Thread-112979] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:03:12.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:03:12.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:03:12.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:03:12.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:03:12.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:03:12.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:03:12.714 [DEBUG] [Thread-112979] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:03:20.866 [DEBUG] [Thread-112981 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:03:35.906 [DEBUG] [Thread-112982 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:03:42.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:03:42.737 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:03:42.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:03:43.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 3, 13), 32.05, 10.32, 0.0, 10.68, 19.15, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:03:43.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:03:13
2025-11-03T09:03:43.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:03:43.672 [DEBUG] [Thread-112983] [transport.py] [_log()] starting thread (client mode): 0xed40880
2025-11-03T09:03:43.672 [DEBUG] [Thread-112983] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:03:43.693 [DEBUG] [Thread-112983] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:03:43.693 [INFO] [Thread-112983] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:03:43.695 [DEBUG] [Thread-112983] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:03:43.696 [DEBUG] [Thread-112983] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:03:43.696 [DEBUG] [Thread-112983] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:03:43.696 [DEBUG] [Thread-112983] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:03:43.696 [DEBUG] [Thread-112983] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:03:43.696 [DEBUG] [Thread-112983] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:03:43.696 [DEBUG] [Thread-112983] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:03:43.696 [DEBUG] [Thread-112983] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:03:43.696 [DEBUG] [Thread-112983] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:03:43.696 [DEBUG] [Thread-112983] [transport.py] [_log()] client lang: <none>
2025-11-03T09:03:43.696 [DEBUG] [Thread-112983] [transport.py] [_log()] server lang: <none>
2025-11-03T09:03:43.696 [DEBUG] [Thread-112983] [transport.py] [_log()] kex follows: False
2025-11-03T09:03:43.696 [DEBUG] [Thread-112983] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:03:43.696 [DEBUG] [Thread-112983] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:03:43.696 [DEBUG] [Thread-112983] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:03:43.696 [DEBUG] [Thread-112983] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:03:43.696 [DEBUG] [Thread-112983] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:03:43.696 [DEBUG] [Thread-112983] [transport.py] [_log()] Compression: none
2025-11-03T09:03:43.696 [DEBUG] [Thread-112983] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:03:43.716 [DEBUG] [Thread-112983] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:03:43.717 [DEBUG] [Thread-112983] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:03:43.718 [DEBUG] [Thread-112983] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:03:43.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:03:43.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:03:43.720 [DEBUG] [Thread-112983] [transport.py] [_log()] userauth is OK
2025-11-03T09:03:43.720 [DEBUG] [Thread-112983] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:03:43.720 [DEBUG] [Thread-112983] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:03:43.720 [DEBUG] [Thread-112983] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:03:43.720 [DEBUG] [Thread-112983] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:03:43.744 [INFO] [Thread-112983] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:03:43.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:03:44.400 [DEBUG] [Thread-112983] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:03:44.401 [DEBUG] [Thread-112983] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:03:44.401 [DEBUG] [Thread-112983] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:03:44.442 [DEBUG] [Thread-112983] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:03:44.442 [DEBUG] [Thread-112983] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:03:44.446 [DEBUG] [Thread-112983] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:03:44.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:03:44.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:03:44.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:03:44.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:03:44.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:03:44.470 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:03:44.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:03:44.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:03:44.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:03:44.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.293844 -999.00  +18.50  16.26     15   -8.30 1 1 1 1 1   888    0 29.41 123.93 ----- 15.8 16.3 40.8 20.5 24.9 -30.1 23.9 -29.4 22.2 -28.9 23.0 -29.1
2025-11-03T09:03:44.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:03:44.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:03:44.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.293844
2025-11-03T09:03:44.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:03:44.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:03:44.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:03:44.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:03:44.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:03:44.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:03:13', tmtdew=32.05, humidity=10.32, cloud=0.0, wind=10.68, temperature=19.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:03:08.122', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:03:44.473 [DEBUG] [Thread-112983] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:03:44.558 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:03:44.569 [DEBUG] [Thread-112986] [transport.py] [_log()] starting thread (client mode): 0xed5ffd0
2025-11-03T09:03:44.570 [DEBUG] [Thread-112986] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:03:44.587 [DEBUG] [Thread-112986] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:03:44.587 [INFO] [Thread-112986] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:03:44.595 [DEBUG] [Thread-112986] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:03:44.595 [DEBUG] [Thread-112986] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:03:44.595 [DEBUG] [Thread-112986] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:03:44.595 [DEBUG] [Thread-112986] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:03:44.595 [DEBUG] [Thread-112986] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:03:44.595 [DEBUG] [Thread-112986] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:03:44.595 [DEBUG] [Thread-112986] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:03:44.595 [DEBUG] [Thread-112986] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:03:44.595 [DEBUG] [Thread-112986] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:03:44.595 [DEBUG] [Thread-112986] [transport.py] [_log()] client lang: <none>
2025-11-03T09:03:44.595 [DEBUG] [Thread-112986] [transport.py] [_log()] server lang: <none>
2025-11-03T09:03:44.595 [DEBUG] [Thread-112986] [transport.py] [_log()] kex follows: False
2025-11-03T09:03:44.595 [DEBUG] [Thread-112986] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:03:44.595 [DEBUG] [Thread-112986] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:03:44.595 [DEBUG] [Thread-112986] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:03:44.595 [DEBUG] [Thread-112986] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:03:44.595 [DEBUG] [Thread-112986] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:03:44.595 [DEBUG] [Thread-112986] [transport.py] [_log()] Compression: none
2025-11-03T09:03:44.595 [DEBUG] [Thread-112986] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:03:44.652 [DEBUG] [Thread-112986] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:03:44.652 [DEBUG] [Thread-112986] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:03:44.652 [DEBUG] [Thread-112986] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:03:44.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:03:44.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:03:44.709 [DEBUG] [Thread-112986] [transport.py] [_log()] userauth is OK
2025-11-03T09:03:44.710 [DEBUG] [Thread-112986] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:03:44.710 [DEBUG] [Thread-112986] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:03:44.710 [DEBUG] [Thread-112986] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:03:44.710 [DEBUG] [Thread-112986] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:03:44.728 [INFO] [Thread-112986] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:03:44.728 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:03:44.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:03:45.599 [DEBUG] [Thread-112986] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:03:45.599 [DEBUG] [Thread-112986] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:03:45.647 [DEBUG] [Thread-112986] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:03:45.647 [DEBUG] [Thread-112986] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:03:45.656 [DEBUG] [Thread-112986] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:03:45.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:03:45.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:03:45.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:03:45.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:03:45.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:03:45.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:03:45.693 [DEBUG] [Thread-112986] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:03:46.616 [DEBUG] [Thread-112988 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:03:50.943 [DEBUG] [Thread-112989 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:04:05.995 [DEBUG] [Thread-112990 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:04:11.337 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:04:11.339 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:04:15.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:04:15.716 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:04:15.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:04:16.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 3, 46), 32.59, 9.92, 0.0, 14.24, 19.0, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:04:16.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:03:46
2025-11-03T09:04:16.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:04:16.671 [DEBUG] [Thread-112991] [transport.py] [_log()] starting thread (client mode): 0xedb1d80
2025-11-03T09:04:16.672 [DEBUG] [Thread-112991] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:04:16.693 [DEBUG] [Thread-112991] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:04:16.693 [INFO] [Thread-112991] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:04:16.694 [DEBUG] [Thread-112991] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:04:16.694 [DEBUG] [Thread-112991] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:04:16.694 [DEBUG] [Thread-112991] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:04:16.694 [DEBUG] [Thread-112991] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:04:16.694 [DEBUG] [Thread-112991] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:04:16.694 [DEBUG] [Thread-112991] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:04:16.694 [DEBUG] [Thread-112991] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:04:16.694 [DEBUG] [Thread-112991] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:04:16.694 [DEBUG] [Thread-112991] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:04:16.694 [DEBUG] [Thread-112991] [transport.py] [_log()] client lang: <none>
2025-11-03T09:04:16.694 [DEBUG] [Thread-112991] [transport.py] [_log()] server lang: <none>
2025-11-03T09:04:16.694 [DEBUG] [Thread-112991] [transport.py] [_log()] kex follows: False
2025-11-03T09:04:16.694 [DEBUG] [Thread-112991] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:04:16.694 [DEBUG] [Thread-112991] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:04:16.694 [DEBUG] [Thread-112991] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:04:16.694 [DEBUG] [Thread-112991] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:04:16.695 [DEBUG] [Thread-112991] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:04:16.695 [DEBUG] [Thread-112991] [transport.py] [_log()] Compression: none
2025-11-03T09:04:16.695 [DEBUG] [Thread-112991] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:04:16.711 [DEBUG] [Thread-112991] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:04:16.711 [DEBUG] [Thread-112991] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:04:16.711 [DEBUG] [Thread-112991] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:04:16.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:04:16.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:04:16.712 [DEBUG] [Thread-112991] [transport.py] [_log()] userauth is OK
2025-11-03T09:04:16.712 [DEBUG] [Thread-112991] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:04:16.712 [DEBUG] [Thread-112991] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:04:16.712 [DEBUG] [Thread-112991] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:04:16.712 [DEBUG] [Thread-112991] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:04:16.721 [INFO] [Thread-112991] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:04:16.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:04:17.389 [DEBUG] [Thread-112991] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:04:17.389 [DEBUG] [Thread-112991] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:04:17.389 [DEBUG] [Thread-112991] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:04:17.430 [DEBUG] [Thread-112991] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:04:17.430 [DEBUG] [Thread-112991] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:04:17.433 [DEBUG] [Thread-112991] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:04:17.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:04:17.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:04:17.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:04:17.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:04:17.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:04:17.455 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:04:17.455 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:04:17.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:04:17.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:04:17.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.294192 -999.00  +18.70  17.98     15   -7.90 1 1 1 1 1   888    0 28.52 121.62 ----- 18.1 18.0 56.4 20.5 24.8 -29.9 23.9 -29.6 22.4 -28.7 23.1 -29.7
2025-11-03T09:04:17.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:04:17.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:04:17.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.294192
2025-11-03T09:04:17.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:04:17.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:04:17.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:04:17.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:04:17.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:04:17.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:03:46', tmtdew=32.59, humidity=9.92, cloud=0.0, wind=14.24, temperature=19.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:03:38.189', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:04:17.458 [DEBUG] [Thread-112991] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:04:17.539 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:04:17.551 [DEBUG] [Thread-112994] [transport.py] [_log()] starting thread (client mode): 0xed2f040
2025-11-03T09:04:17.551 [DEBUG] [Thread-112994] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:04:17.568 [DEBUG] [Thread-112994] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:04:17.568 [INFO] [Thread-112994] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:04:17.577 [DEBUG] [Thread-112994] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:04:17.578 [DEBUG] [Thread-112994] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:04:17.578 [DEBUG] [Thread-112994] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:04:17.578 [DEBUG] [Thread-112994] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:04:17.578 [DEBUG] [Thread-112994] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:04:17.578 [DEBUG] [Thread-112994] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:04:17.578 [DEBUG] [Thread-112994] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:04:17.578 [DEBUG] [Thread-112994] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:04:17.579 [DEBUG] [Thread-112994] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:04:17.579 [DEBUG] [Thread-112994] [transport.py] [_log()] client lang: <none>
2025-11-03T09:04:17.579 [DEBUG] [Thread-112994] [transport.py] [_log()] server lang: <none>
2025-11-03T09:04:17.579 [DEBUG] [Thread-112994] [transport.py] [_log()] kex follows: False
2025-11-03T09:04:17.579 [DEBUG] [Thread-112994] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:04:17.579 [DEBUG] [Thread-112994] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:04:17.579 [DEBUG] [Thread-112994] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:04:17.579 [DEBUG] [Thread-112994] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:04:17.579 [DEBUG] [Thread-112994] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:04:17.580 [DEBUG] [Thread-112994] [transport.py] [_log()] Compression: none
2025-11-03T09:04:17.580 [DEBUG] [Thread-112994] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:04:17.638 [DEBUG] [Thread-112994] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:04:17.638 [DEBUG] [Thread-112994] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:04:17.638 [DEBUG] [Thread-112994] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:04:17.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:04:17.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:04:17.694 [DEBUG] [Thread-112994] [transport.py] [_log()] userauth is OK
2025-11-03T09:04:17.694 [DEBUG] [Thread-112994] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:04:17.695 [DEBUG] [Thread-112994] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:04:17.695 [DEBUG] [Thread-112994] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:04:17.695 [DEBUG] [Thread-112994] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:04:17.714 [INFO] [Thread-112994] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:04:17.715 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:04:17.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:04:18.573 [DEBUG] [Thread-112994] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:04:18.574 [DEBUG] [Thread-112994] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:04:18.621 [DEBUG] [Thread-112994] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:04:18.621 [DEBUG] [Thread-112994] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:04:18.630 [DEBUG] [Thread-112994] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:04:18.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:04:18.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:04:18.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:04:18.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:04:18.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:04:18.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:04:18.673 [DEBUG] [Thread-112994] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:04:21.028 [DEBUG] [Thread-112996 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:04:36.067 [DEBUG] [Thread-112997 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:04:46.695 [DEBUG] [Thread-112998 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:04:48.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:04:48.662 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:04:48.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:04:49.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 4, 18), 32.67, 9.85, 0.0, 14.19, 18.98, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:04:49.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:04:18
2025-11-03T09:04:49.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:04:49.622 [DEBUG] [Thread-112999] [transport.py] [_log()] starting thread (client mode): 0xed34ee0
2025-11-03T09:04:49.622 [DEBUG] [Thread-112999] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:04:49.642 [DEBUG] [Thread-112999] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:04:49.642 [INFO] [Thread-112999] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:04:49.645 [DEBUG] [Thread-112999] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:04:49.645 [DEBUG] [Thread-112999] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:04:49.645 [DEBUG] [Thread-112999] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:04:49.645 [DEBUG] [Thread-112999] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:04:49.645 [DEBUG] [Thread-112999] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:04:49.646 [DEBUG] [Thread-112999] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:04:49.646 [DEBUG] [Thread-112999] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:04:49.655 [DEBUG] [Thread-112999] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:04:49.655 [DEBUG] [Thread-112999] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:04:49.655 [DEBUG] [Thread-112999] [transport.py] [_log()] client lang: <none>
2025-11-03T09:04:49.655 [DEBUG] [Thread-112999] [transport.py] [_log()] server lang: <none>
2025-11-03T09:04:49.655 [DEBUG] [Thread-112999] [transport.py] [_log()] kex follows: False
2025-11-03T09:04:49.655 [DEBUG] [Thread-112999] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:04:49.655 [DEBUG] [Thread-112999] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:04:49.656 [DEBUG] [Thread-112999] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:04:49.656 [DEBUG] [Thread-112999] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:04:49.656 [DEBUG] [Thread-112999] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:04:49.656 [DEBUG] [Thread-112999] [transport.py] [_log()] Compression: none
2025-11-03T09:04:49.656 [DEBUG] [Thread-112999] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:04:49.676 [DEBUG] [Thread-112999] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:04:49.676 [DEBUG] [Thread-112999] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:04:49.677 [DEBUG] [Thread-112999] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:04:49.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:04:49.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:04:49.680 [DEBUG] [Thread-112999] [transport.py] [_log()] userauth is OK
2025-11-03T09:04:49.680 [DEBUG] [Thread-112999] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:04:49.680 [DEBUG] [Thread-112999] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:04:49.680 [DEBUG] [Thread-112999] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:04:49.680 [DEBUG] [Thread-112999] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:04:49.716 [INFO] [Thread-112999] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:04:49.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:04:50.352 [DEBUG] [Thread-112999] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:04:50.353 [DEBUG] [Thread-112999] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:04:50.353 [DEBUG] [Thread-112999] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:04:50.394 [DEBUG] [Thread-112999] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:04:50.394 [DEBUG] [Thread-112999] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:04:50.398 [DEBUG] [Thread-112999] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:04:50.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:04:50.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:04:50.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:04:50.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:04:50.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:04:50.422 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:04:50.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:04:50.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:04:50.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:04:50.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.294539 -999.00  +18.50  16.59     15   -8.10 1 1 1 1 1   888    0 29.04 123.39 ----- 14.3 16.6 38.2 20.5 24.9 -29.7 23.9 -29.3 22.3 -29.2 23.1 -29.0
2025-11-03T09:04:50.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:04:50.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:04:50.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.294539
2025-11-03T09:04:50.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:04:50.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:04:50.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:04:50.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:04:50.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:04:50.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:04:18', tmtdew=32.67, humidity=9.85, cloud=0.0, wind=14.19, temperature=18.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:04:08.170', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:04:50.425 [DEBUG] [Thread-112999] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:04:50.507 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:04:50.521 [DEBUG] [Thread-113002] [transport.py] [_log()] starting thread (client mode): 0x81d95d0
2025-11-03T09:04:50.521 [DEBUG] [Thread-113002] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:04:50.537 [DEBUG] [Thread-113002] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:04:50.537 [INFO] [Thread-113002] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:04:50.545 [DEBUG] [Thread-113002] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:04:50.545 [DEBUG] [Thread-113002] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:04:50.545 [DEBUG] [Thread-113002] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:04:50.545 [DEBUG] [Thread-113002] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:04:50.545 [DEBUG] [Thread-113002] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:04:50.545 [DEBUG] [Thread-113002] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:04:50.546 [DEBUG] [Thread-113002] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:04:50.546 [DEBUG] [Thread-113002] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:04:50.546 [DEBUG] [Thread-113002] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:04:50.546 [DEBUG] [Thread-113002] [transport.py] [_log()] client lang: <none>
2025-11-03T09:04:50.546 [DEBUG] [Thread-113002] [transport.py] [_log()] server lang: <none>
2025-11-03T09:04:50.546 [DEBUG] [Thread-113002] [transport.py] [_log()] kex follows: False
2025-11-03T09:04:50.546 [DEBUG] [Thread-113002] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:04:50.546 [DEBUG] [Thread-113002] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:04:50.546 [DEBUG] [Thread-113002] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:04:50.546 [DEBUG] [Thread-113002] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:04:50.546 [DEBUG] [Thread-113002] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:04:50.546 [DEBUG] [Thread-113002] [transport.py] [_log()] Compression: none
2025-11-03T09:04:50.546 [DEBUG] [Thread-113002] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:04:50.602 [DEBUG] [Thread-113002] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:04:50.603 [DEBUG] [Thread-113002] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:04:50.603 [DEBUG] [Thread-113002] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:04:50.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:04:50.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:04:50.666 [DEBUG] [Thread-113002] [transport.py] [_log()] userauth is OK
2025-11-03T09:04:50.666 [DEBUG] [Thread-113002] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:04:50.666 [DEBUG] [Thread-113002] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:04:50.666 [DEBUG] [Thread-113002] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:04:50.667 [DEBUG] [Thread-113002] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:04:50.684 [INFO] [Thread-113002] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:04:50.693 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:04:50.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:04:51.096 [DEBUG] [Thread-113004 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:04:51.530 [DEBUG] [Thread-113002] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:04:51.530 [DEBUG] [Thread-113002] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:04:51.579 [DEBUG] [Thread-113002] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:04:51.579 [DEBUG] [Thread-113002] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:04:51.587 [DEBUG] [Thread-113002] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:04:51.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:04:51.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:04:51.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:04:51.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:04:51.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:04:51.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:04:51.619 [DEBUG] [Thread-113002] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:05:06.148 [DEBUG] [Thread-113005 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:05:11.479 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:05:11.480 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:05:21.182 [DEBUG] [Thread-113006 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:05:21.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:05:21.613 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:05:21.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:05:22.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 4, 50), 32.73, 9.92, 0.0, 14.1, 19.36, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:05:22.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:04:50
2025-11-03T09:05:22.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:05:22.568 [DEBUG] [Thread-113007] [transport.py] [_log()] starting thread (client mode): 0xedb0700
2025-11-03T09:05:22.568 [DEBUG] [Thread-113007] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:05:22.589 [DEBUG] [Thread-113007] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:05:22.589 [INFO] [Thread-113007] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:05:22.592 [DEBUG] [Thread-113007] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:05:22.592 [DEBUG] [Thread-113007] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:05:22.592 [DEBUG] [Thread-113007] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:05:22.592 [DEBUG] [Thread-113007] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:05:22.592 [DEBUG] [Thread-113007] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:05:22.592 [DEBUG] [Thread-113007] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:05:22.592 [DEBUG] [Thread-113007] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:05:22.592 [DEBUG] [Thread-113007] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:05:22.592 [DEBUG] [Thread-113007] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:05:22.592 [DEBUG] [Thread-113007] [transport.py] [_log()] client lang: <none>
2025-11-03T09:05:22.592 [DEBUG] [Thread-113007] [transport.py] [_log()] server lang: <none>
2025-11-03T09:05:22.592 [DEBUG] [Thread-113007] [transport.py] [_log()] kex follows: False
2025-11-03T09:05:22.592 [DEBUG] [Thread-113007] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:05:22.593 [DEBUG] [Thread-113007] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:05:22.593 [DEBUG] [Thread-113007] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:05:22.593 [DEBUG] [Thread-113007] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:05:22.593 [DEBUG] [Thread-113007] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:05:22.593 [DEBUG] [Thread-113007] [transport.py] [_log()] Compression: none
2025-11-03T09:05:22.593 [DEBUG] [Thread-113007] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:05:22.609 [DEBUG] [Thread-113007] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:05:22.609 [DEBUG] [Thread-113007] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:05:22.609 [DEBUG] [Thread-113007] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:05:22.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:05:22.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:05:22.611 [DEBUG] [Thread-113007] [transport.py] [_log()] userauth is OK
2025-11-03T09:05:22.611 [DEBUG] [Thread-113007] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:05:22.611 [DEBUG] [Thread-113007] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:05:22.611 [DEBUG] [Thread-113007] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:05:22.611 [DEBUG] [Thread-113007] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:05:22.627 [INFO] [Thread-113007] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:05:22.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:05:23.191 [DEBUG] [Thread-113007] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:05:23.192 [DEBUG] [Thread-113007] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:05:23.193 [DEBUG] [Thread-113007] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:05:23.233 [DEBUG] [Thread-113007] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:05:23.233 [DEBUG] [Thread-113007] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:05:23.237 [DEBUG] [Thread-113007] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:05:23.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:05:23.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:05:23.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:05:23.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:05:23.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:05:23.260 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:05:23.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:05:23.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:05:23.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:05:23.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.294886 -999.00  +18.60  15.83     15   -8.30 1 1 1 1 1   888    0 29.18 131.17 ----- 13.1 15.8 5.4 18.8 24.9 -29.7 23.9 -28.3 22.4 -28.6 23.0 -29.9
2025-11-03T09:05:23.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:05:23.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:05:23.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.294886
2025-11-03T09:05:23.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:05:23.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:05:23.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:05:23.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:05:23.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:05:23.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:04:50', tmtdew=32.73, humidity=9.92, cloud=0.0, wind=14.1, temperature=19.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:04:38.150', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:05:23.263 [DEBUG] [Thread-113007] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:05:23.352 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:05:23.365 [DEBUG] [Thread-113010] [transport.py] [_log()] starting thread (client mode): 0xed42620
2025-11-03T09:05:23.365 [DEBUG] [Thread-113010] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:05:23.380 [DEBUG] [Thread-113010] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:05:23.380 [INFO] [Thread-113010] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:05:23.387 [DEBUG] [Thread-113010] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:05:23.388 [DEBUG] [Thread-113010] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:05:23.388 [DEBUG] [Thread-113010] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:05:23.388 [DEBUG] [Thread-113010] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:05:23.388 [DEBUG] [Thread-113010] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:05:23.388 [DEBUG] [Thread-113010] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:05:23.388 [DEBUG] [Thread-113010] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:05:23.388 [DEBUG] [Thread-113010] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:05:23.388 [DEBUG] [Thread-113010] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:05:23.388 [DEBUG] [Thread-113010] [transport.py] [_log()] client lang: <none>
2025-11-03T09:05:23.388 [DEBUG] [Thread-113010] [transport.py] [_log()] server lang: <none>
2025-11-03T09:05:23.388 [DEBUG] [Thread-113010] [transport.py] [_log()] kex follows: False
2025-11-03T09:05:23.389 [DEBUG] [Thread-113010] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:05:23.389 [DEBUG] [Thread-113010] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:05:23.389 [DEBUG] [Thread-113010] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:05:23.389 [DEBUG] [Thread-113010] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:05:23.389 [DEBUG] [Thread-113010] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:05:23.389 [DEBUG] [Thread-113010] [transport.py] [_log()] Compression: none
2025-11-03T09:05:23.389 [DEBUG] [Thread-113010] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:05:23.449 [DEBUG] [Thread-113010] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:05:23.450 [DEBUG] [Thread-113010] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:05:23.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:05:23.451 [DEBUG] [Thread-113010] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:05:23.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:05:23.511 [DEBUG] [Thread-113010] [transport.py] [_log()] userauth is OK
2025-11-03T09:05:23.511 [DEBUG] [Thread-113010] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:05:23.511 [DEBUG] [Thread-113010] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:05:23.511 [DEBUG] [Thread-113010] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:05:23.512 [DEBUG] [Thread-113010] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:05:23.532 [INFO] [Thread-113010] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:05:23.532 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:05:23.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:05:24.379 [DEBUG] [Thread-113010] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:05:24.379 [DEBUG] [Thread-113010] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:05:24.434 [DEBUG] [Thread-113010] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:05:24.434 [DEBUG] [Thread-113010] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:05:24.442 [DEBUG] [Thread-113010] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:05:24.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:05:24.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:05:24.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:05:24.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:05:24.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:05:24.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:05:24.474 [DEBUG] [Thread-113010] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:05:36.218 [DEBUG] [Thread-113012 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:05:46.746 [DEBUG] [Thread-113013 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:05:51.277 [DEBUG] [Thread-113014 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:05:54.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:05:54.496 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:05:54.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:05:55.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 5, 23), 32.6, 10.04, 0.0, 13.29, 19.43, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:05:55.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:05:23
2025-11-03T09:05:55.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:05:55.436 [DEBUG] [Thread-113015] [transport.py] [_log()] starting thread (client mode): 0xed5d810
2025-11-03T09:05:55.437 [DEBUG] [Thread-113015] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:05:55.457 [DEBUG] [Thread-113015] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:05:55.457 [INFO] [Thread-113015] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:05:55.460 [DEBUG] [Thread-113015] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:05:55.460 [DEBUG] [Thread-113015] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:05:55.460 [DEBUG] [Thread-113015] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:05:55.460 [DEBUG] [Thread-113015] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:05:55.460 [DEBUG] [Thread-113015] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:05:55.460 [DEBUG] [Thread-113015] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:05:55.460 [DEBUG] [Thread-113015] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:05:55.461 [DEBUG] [Thread-113015] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:05:55.461 [DEBUG] [Thread-113015] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:05:55.461 [DEBUG] [Thread-113015] [transport.py] [_log()] client lang: <none>
2025-11-03T09:05:55.461 [DEBUG] [Thread-113015] [transport.py] [_log()] server lang: <none>
2025-11-03T09:05:55.461 [DEBUG] [Thread-113015] [transport.py] [_log()] kex follows: False
2025-11-03T09:05:55.461 [DEBUG] [Thread-113015] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:05:55.461 [DEBUG] [Thread-113015] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:05:55.461 [DEBUG] [Thread-113015] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:05:55.461 [DEBUG] [Thread-113015] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:05:55.461 [DEBUG] [Thread-113015] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:05:55.461 [DEBUG] [Thread-113015] [transport.py] [_log()] Compression: none
2025-11-03T09:05:55.461 [DEBUG] [Thread-113015] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:05:55.479 [DEBUG] [Thread-113015] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:05:55.479 [DEBUG] [Thread-113015] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:05:55.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:05:55.480 [DEBUG] [Thread-113015] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:05:55.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:05:55.483 [DEBUG] [Thread-113015] [transport.py] [_log()] userauth is OK
2025-11-03T09:05:55.483 [DEBUG] [Thread-113015] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:05:55.483 [DEBUG] [Thread-113015] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:05:55.483 [DEBUG] [Thread-113015] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:05:55.483 [DEBUG] [Thread-113015] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:05:55.508 [INFO] [Thread-113015] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:05:55.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:05:56.313 [DEBUG] [Thread-113015] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:05:56.314 [DEBUG] [Thread-113015] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:05:56.314 [DEBUG] [Thread-113015] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:05:56.354 [DEBUG] [Thread-113015] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:05:56.354 [DEBUG] [Thread-113015] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:05:56.356 [DEBUG] [Thread-113015] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:05:56.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:05:56.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:05:56.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:05:56.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:05:56.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:05:56.377 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:05:56.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:05:56.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:05:56.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:05:56.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.295232 -999.00  +18.50  15.20     15   -8.00 1 1 1 1 1   888    0 29.25 123.17 ----- 14.7 15.2 358.5 18.3 24.9 -30.5 23.9 -30.0 22.3 -28.9 22.9 -31.8
2025-11-03T09:05:56.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:05:56.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:05:56.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.295232
2025-11-03T09:05:56.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:05:56.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:05:56.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:05:56.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:05:56.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:05:56.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:05:23', tmtdew=32.6, humidity=10.04, cloud=0.0, wind=13.29, temperature=19.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:05:08.045', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:05:56.379 [DEBUG] [Thread-113015] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:05:56.461 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:05:56.471 [DEBUG] [Thread-113018] [transport.py] [_log()] starting thread (client mode): 0x117991b0
2025-11-03T09:05:56.471 [DEBUG] [Thread-113018] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:05:56.490 [DEBUG] [Thread-113018] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:05:56.490 [INFO] [Thread-113018] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:05:56.498 [DEBUG] [Thread-113018] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:05:56.498 [DEBUG] [Thread-113018] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:05:56.498 [DEBUG] [Thread-113018] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:05:56.498 [DEBUG] [Thread-113018] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:05:56.498 [DEBUG] [Thread-113018] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:05:56.498 [DEBUG] [Thread-113018] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:05:56.498 [DEBUG] [Thread-113018] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:05:56.498 [DEBUG] [Thread-113018] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:05:56.498 [DEBUG] [Thread-113018] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:05:56.498 [DEBUG] [Thread-113018] [transport.py] [_log()] client lang: <none>
2025-11-03T09:05:56.498 [DEBUG] [Thread-113018] [transport.py] [_log()] server lang: <none>
2025-11-03T09:05:56.498 [DEBUG] [Thread-113018] [transport.py] [_log()] kex follows: False
2025-11-03T09:05:56.498 [DEBUG] [Thread-113018] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:05:56.498 [DEBUG] [Thread-113018] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:05:56.498 [DEBUG] [Thread-113018] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:05:56.498 [DEBUG] [Thread-113018] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:05:56.499 [DEBUG] [Thread-113018] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:05:56.499 [DEBUG] [Thread-113018] [transport.py] [_log()] Compression: none
2025-11-03T09:05:56.499 [DEBUG] [Thread-113018] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:05:56.555 [DEBUG] [Thread-113018] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:05:56.556 [DEBUG] [Thread-113018] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:05:56.556 [DEBUG] [Thread-113018] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:05:56.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:05:56.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:05:56.613 [DEBUG] [Thread-113018] [transport.py] [_log()] userauth is OK
2025-11-03T09:05:56.613 [DEBUG] [Thread-113018] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:05:56.613 [DEBUG] [Thread-113018] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:05:56.613 [DEBUG] [Thread-113018] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:05:56.613 [DEBUG] [Thread-113018] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:05:56.627 [INFO] [Thread-113018] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:05:56.627 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:05:56.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:05:57.501 [DEBUG] [Thread-113018] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:05:57.502 [DEBUG] [Thread-113018] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:05:57.550 [DEBUG] [Thread-113018] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:05:57.550 [DEBUG] [Thread-113018] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:05:57.564 [DEBUG] [Thread-113018] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:05:57.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:05:57.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:05:57.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:05:57.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:05:57.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:05:57.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:05:57.600 [DEBUG] [Thread-113018] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:06:06.305 [DEBUG] [Thread-113020 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:06:11.622 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:06:11.623 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:06:21.366 [DEBUG] [Thread-113021 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:06:27.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:06:27.610 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:06:27.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:06:28.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 5, 55), 32.71, 9.9, 0.0, 14.93, 19.13, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:06:28.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:05:55
2025-11-03T09:06:28.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:06:28.642 [DEBUG] [Thread-113022] [transport.py] [_log()] starting thread (client mode): 0x11798430
2025-11-03T09:06:28.642 [DEBUG] [Thread-113022] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:06:28.650 [DEBUG] [Thread-113022] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:06:28.650 [INFO] [Thread-113022] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:06:28.653 [DEBUG] [Thread-113022] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:06:28.653 [DEBUG] [Thread-113022] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:06:28.653 [DEBUG] [Thread-113022] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:06:28.653 [DEBUG] [Thread-113022] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:06:28.653 [DEBUG] [Thread-113022] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:06:28.653 [DEBUG] [Thread-113022] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:06:28.653 [DEBUG] [Thread-113022] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:06:28.653 [DEBUG] [Thread-113022] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:06:28.653 [DEBUG] [Thread-113022] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:06:28.653 [DEBUG] [Thread-113022] [transport.py] [_log()] client lang: <none>
2025-11-03T09:06:28.653 [DEBUG] [Thread-113022] [transport.py] [_log()] server lang: <none>
2025-11-03T09:06:28.653 [DEBUG] [Thread-113022] [transport.py] [_log()] kex follows: False
2025-11-03T09:06:28.653 [DEBUG] [Thread-113022] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:06:28.653 [DEBUG] [Thread-113022] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:06:28.653 [DEBUG] [Thread-113022] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:06:28.653 [DEBUG] [Thread-113022] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:06:28.653 [DEBUG] [Thread-113022] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:06:28.653 [DEBUG] [Thread-113022] [transport.py] [_log()] Compression: none
2025-11-03T09:06:28.653 [DEBUG] [Thread-113022] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:06:28.668 [DEBUG] [Thread-113022] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:06:28.669 [DEBUG] [Thread-113022] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:06:28.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:06:28.669 [DEBUG] [Thread-113022] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:06:28.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:06:28.670 [DEBUG] [Thread-113022] [transport.py] [_log()] userauth is OK
2025-11-03T09:06:28.670 [DEBUG] [Thread-113022] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:06:28.670 [DEBUG] [Thread-113022] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:06:28.670 [DEBUG] [Thread-113022] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:06:28.670 [DEBUG] [Thread-113022] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:06:28.685 [INFO] [Thread-113022] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:06:28.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:06:29.312 [DEBUG] [Thread-113022] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:06:29.312 [DEBUG] [Thread-113022] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:06:29.312 [DEBUG] [Thread-113022] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:06:29.352 [DEBUG] [Thread-113022] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:06:29.352 [DEBUG] [Thread-113022] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:06:29.354 [DEBUG] [Thread-113022] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:06:29.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:06:29.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:06:29.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:06:29.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:06:29.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:06:29.371 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:06:29.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:06:29.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:06:29.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:06:29.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.295580 -999.00  +18.40  10.69     15   -8.10 1 1 1 1 1   888    0 28.48 117.74 ----- 9.9 10.7 340.5 19.4 24.9 -30.0 23.8 -29.3 22.4 -28.7 22.8 -29.0
2025-11-03T09:06:29.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:06:29.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:06:29.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.295580
2025-11-03T09:06:29.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:06:29.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:06:29.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:06:29.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:06:29.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:06:29.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:05:55', tmtdew=32.71, humidity=9.9, cloud=0.0, wind=14.93, temperature=19.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:05:38.112', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:06:29.372 [DEBUG] [Thread-113022] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:06:29.447 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:06:29.460 [DEBUG] [Thread-113025] [transport.py] [_log()] starting thread (client mode): 0xed06b00
2025-11-03T09:06:29.460 [DEBUG] [Thread-113025] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:06:29.476 [DEBUG] [Thread-113025] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:06:29.476 [INFO] [Thread-113025] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:06:29.483 [DEBUG] [Thread-113025] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:06:29.483 [DEBUG] [Thread-113025] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:06:29.483 [DEBUG] [Thread-113025] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:06:29.483 [DEBUG] [Thread-113025] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:06:29.483 [DEBUG] [Thread-113025] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:06:29.484 [DEBUG] [Thread-113025] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:06:29.484 [DEBUG] [Thread-113025] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:06:29.484 [DEBUG] [Thread-113025] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:06:29.484 [DEBUG] [Thread-113025] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:06:29.484 [DEBUG] [Thread-113025] [transport.py] [_log()] client lang: <none>
2025-11-03T09:06:29.484 [DEBUG] [Thread-113025] [transport.py] [_log()] server lang: <none>
2025-11-03T09:06:29.484 [DEBUG] [Thread-113025] [transport.py] [_log()] kex follows: False
2025-11-03T09:06:29.484 [DEBUG] [Thread-113025] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:06:29.484 [DEBUG] [Thread-113025] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:06:29.484 [DEBUG] [Thread-113025] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:06:29.484 [DEBUG] [Thread-113025] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:06:29.484 [DEBUG] [Thread-113025] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:06:29.484 [DEBUG] [Thread-113025] [transport.py] [_log()] Compression: none
2025-11-03T09:06:29.484 [DEBUG] [Thread-113025] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:06:29.544 [DEBUG] [Thread-113025] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:06:29.544 [DEBUG] [Thread-113025] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:06:29.544 [DEBUG] [Thread-113025] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:06:29.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:06:29.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:06:29.601 [DEBUG] [Thread-113025] [transport.py] [_log()] userauth is OK
2025-11-03T09:06:29.601 [DEBUG] [Thread-113025] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:06:29.601 [DEBUG] [Thread-113025] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:06:29.601 [DEBUG] [Thread-113025] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:06:29.601 [DEBUG] [Thread-113025] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:06:29.619 [INFO] [Thread-113025] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:06:29.619 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:06:29.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:06:30.470 [DEBUG] [Thread-113025] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:06:30.470 [DEBUG] [Thread-113025] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:06:30.517 [DEBUG] [Thread-113025] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:06:30.518 [DEBUG] [Thread-113025] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:06:30.526 [DEBUG] [Thread-113025] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:06:30.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:06:30.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:06:30.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:06:30.550 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:06:30.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:06:30.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:06:30.558 [DEBUG] [Thread-113025] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:06:36.403 [DEBUG] [Thread-113027 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:06:46.834 [DEBUG] [Thread-113028 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:06:51.457 [DEBUG] [Thread-113029 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:07:00.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:07:00.580 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:07:00.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:07:01.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 6, 27), 32.76, 9.87, 0.0, 14.81, 19.16, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:07:01.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:06:27
2025-11-03T09:07:01.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:07:01.573 [DEBUG] [Thread-113030] [transport.py] [_log()] starting thread (client mode): 0xed5ecb0
2025-11-03T09:07:01.573 [DEBUG] [Thread-113030] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:07:01.592 [DEBUG] [Thread-113030] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:07:01.592 [INFO] [Thread-113030] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:07:01.593 [DEBUG] [Thread-113030] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:07:01.593 [DEBUG] [Thread-113030] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:07:01.593 [DEBUG] [Thread-113030] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:07:01.593 [DEBUG] [Thread-113030] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:07:01.593 [DEBUG] [Thread-113030] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:07:01.593 [DEBUG] [Thread-113030] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:07:01.593 [DEBUG] [Thread-113030] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:07:01.593 [DEBUG] [Thread-113030] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:07:01.593 [DEBUG] [Thread-113030] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:07:01.593 [DEBUG] [Thread-113030] [transport.py] [_log()] client lang: <none>
2025-11-03T09:07:01.593 [DEBUG] [Thread-113030] [transport.py] [_log()] server lang: <none>
2025-11-03T09:07:01.593 [DEBUG] [Thread-113030] [transport.py] [_log()] kex follows: False
2025-11-03T09:07:01.593 [DEBUG] [Thread-113030] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:07:01.593 [DEBUG] [Thread-113030] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:07:01.593 [DEBUG] [Thread-113030] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:07:01.593 [DEBUG] [Thread-113030] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:07:01.593 [DEBUG] [Thread-113030] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:07:01.593 [DEBUG] [Thread-113030] [transport.py] [_log()] Compression: none
2025-11-03T09:07:01.593 [DEBUG] [Thread-113030] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:07:01.604 [DEBUG] [Thread-113030] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:07:01.604 [DEBUG] [Thread-113030] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:07:01.604 [DEBUG] [Thread-113030] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:07:01.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:07:01.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:07:01.605 [DEBUG] [Thread-113030] [transport.py] [_log()] userauth is OK
2025-11-03T09:07:01.605 [DEBUG] [Thread-113030] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:07:01.605 [DEBUG] [Thread-113030] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:07:01.605 [DEBUG] [Thread-113030] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:07:01.605 [DEBUG] [Thread-113030] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:07:01.615 [INFO] [Thread-113030] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:07:01.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:07:02.239 [DEBUG] [Thread-113030] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:07:02.240 [DEBUG] [Thread-113030] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:07:02.240 [DEBUG] [Thread-113030] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:07:02.280 [DEBUG] [Thread-113030] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:07:02.280 [DEBUG] [Thread-113030] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:07:02.283 [DEBUG] [Thread-113030] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:07:02.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:07:02.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:07:02.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:07:02.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:07:02.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:07:02.301 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:07:02.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:07:02.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:07:02.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:07:02.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.296275 -999.00  +18.60  13.14     15   -7.70 1 1 1 1 1   888    0 29.13 122.97 ----- 12.2 13.1 33.2 14.9 25.0 -30.5 24.1 -29.1 22.4 -28.6 23.1 -28.9
2025-11-03T09:07:02.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:07:02.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:07:02.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.296275
2025-11-03T09:07:02.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:07:02.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:07:02.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:07:02.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:07:02.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:07:02.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:06:27', tmtdew=32.76, humidity=9.87, cloud=0.0, wind=14.81, temperature=19.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:06:38.160', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:07:02.302 [DEBUG] [Thread-113030] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:07:02.376 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:07:02.390 [DEBUG] [Thread-113033] [transport.py] [_log()] starting thread (client mode): 0xed5ef80
2025-11-03T09:07:02.390 [DEBUG] [Thread-113033] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:07:02.406 [DEBUG] [Thread-113033] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:07:02.406 [INFO] [Thread-113033] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:07:02.414 [DEBUG] [Thread-113033] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:07:02.414 [DEBUG] [Thread-113033] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:07:02.414 [DEBUG] [Thread-113033] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:07:02.414 [DEBUG] [Thread-113033] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:07:02.414 [DEBUG] [Thread-113033] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:07:02.414 [DEBUG] [Thread-113033] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:07:02.414 [DEBUG] [Thread-113033] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:07:02.414 [DEBUG] [Thread-113033] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:07:02.414 [DEBUG] [Thread-113033] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:07:02.414 [DEBUG] [Thread-113033] [transport.py] [_log()] client lang: <none>
2025-11-03T09:07:02.414 [DEBUG] [Thread-113033] [transport.py] [_log()] server lang: <none>
2025-11-03T09:07:02.414 [DEBUG] [Thread-113033] [transport.py] [_log()] kex follows: False
2025-11-03T09:07:02.414 [DEBUG] [Thread-113033] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:07:02.414 [DEBUG] [Thread-113033] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:07:02.414 [DEBUG] [Thread-113033] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:07:02.414 [DEBUG] [Thread-113033] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:07:02.414 [DEBUG] [Thread-113033] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:07:02.414 [DEBUG] [Thread-113033] [transport.py] [_log()] Compression: none
2025-11-03T09:07:02.415 [DEBUG] [Thread-113033] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:07:02.472 [DEBUG] [Thread-113033] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:07:02.472 [DEBUG] [Thread-113033] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:07:02.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:07:02.473 [DEBUG] [Thread-113033] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:07:02.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:07:02.529 [DEBUG] [Thread-113033] [transport.py] [_log()] userauth is OK
2025-11-03T09:07:02.529 [DEBUG] [Thread-113033] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:07:02.529 [DEBUG] [Thread-113033] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:07:02.529 [DEBUG] [Thread-113033] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:07:02.529 [DEBUG] [Thread-113033] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:07:02.544 [INFO] [Thread-113033] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:07:02.544 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:07:02.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:07:03.394 [DEBUG] [Thread-113033] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:07:03.394 [DEBUG] [Thread-113033] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:07:03.443 [DEBUG] [Thread-113033] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:07:03.444 [DEBUG] [Thread-113033] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:07:03.454 [DEBUG] [Thread-113033] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:07:03.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:07:03.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:07:03.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:07:03.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:07:03.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:07:03.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:07:03.493 [DEBUG] [Thread-113033] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:07:06.497 [DEBUG] [Thread-113035 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:07:11.774 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:07:11.774 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:07:21.536 [DEBUG] [Thread-113036 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:07:33.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:07:33.489 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:07:33.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:07:34.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 6, 27), 32.76, 9.87, 0.0, 14.81, 19.16, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:07:34.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:06:27
2025-11-03T09:07:34.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:07:34.470 [DEBUG] [Thread-113037] [transport.py] [_log()] starting thread (client mode): 0xed06c20
2025-11-03T09:07:34.470 [DEBUG] [Thread-113037] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:07:34.491 [DEBUG] [Thread-113037] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:07:34.491 [INFO] [Thread-113037] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:07:34.495 [DEBUG] [Thread-113037] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:07:34.495 [DEBUG] [Thread-113037] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:07:34.495 [DEBUG] [Thread-113037] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:07:34.495 [DEBUG] [Thread-113037] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:07:34.495 [DEBUG] [Thread-113037] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:07:34.495 [DEBUG] [Thread-113037] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:07:34.495 [DEBUG] [Thread-113037] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:07:34.495 [DEBUG] [Thread-113037] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:07:34.495 [DEBUG] [Thread-113037] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:07:34.495 [DEBUG] [Thread-113037] [transport.py] [_log()] client lang: <none>
2025-11-03T09:07:34.495 [DEBUG] [Thread-113037] [transport.py] [_log()] server lang: <none>
2025-11-03T09:07:34.495 [DEBUG] [Thread-113037] [transport.py] [_log()] kex follows: False
2025-11-03T09:07:34.495 [DEBUG] [Thread-113037] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:07:34.495 [DEBUG] [Thread-113037] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:07:34.495 [DEBUG] [Thread-113037] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:07:34.495 [DEBUG] [Thread-113037] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:07:34.495 [DEBUG] [Thread-113037] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:07:34.495 [DEBUG] [Thread-113037] [transport.py] [_log()] Compression: none
2025-11-03T09:07:34.496 [DEBUG] [Thread-113037] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:07:34.510 [DEBUG] [Thread-113037] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:07:34.510 [DEBUG] [Thread-113037] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:07:34.510 [DEBUG] [Thread-113037] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:07:34.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:07:34.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:07:34.511 [DEBUG] [Thread-113037] [transport.py] [_log()] userauth is OK
2025-11-03T09:07:34.511 [DEBUG] [Thread-113037] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:07:34.511 [DEBUG] [Thread-113037] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:07:34.511 [DEBUG] [Thread-113037] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:07:34.511 [DEBUG] [Thread-113037] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:07:34.520 [INFO] [Thread-113037] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:07:34.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:07:35.157 [DEBUG] [Thread-113037] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:07:35.157 [DEBUG] [Thread-113037] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:07:35.158 [DEBUG] [Thread-113037] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:07:35.198 [DEBUG] [Thread-113037] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:07:35.198 [DEBUG] [Thread-113037] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:07:35.201 [DEBUG] [Thread-113037] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:07:35.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:07:35.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:07:35.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:07:35.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:07:35.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:07:35.222 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:07:35.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:07:35.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:07:35.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:07:35.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.296622 -999.00  +18.90  12.57     16   -7.10 1 1 1 1 1   888    0 29.41 131.57 ----- 14.1 12.6 29.8 16.1 25.1 -29.7 24.2 -28.2 22.5 -28.3 23.2 -28.3
2025-11-03T09:07:35.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:07:35.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:07:35.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.296622
2025-11-03T09:07:35.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:07:35.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:07:35.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:07:35.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:07:35.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:07:35.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:06:27', tmtdew=32.76, humidity=9.87, cloud=0.0, wind=14.81, temperature=19.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:07:08.141', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:07:35.225 [DEBUG] [Thread-113037] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:07:35.309 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:07:35.320 [DEBUG] [Thread-113040] [transport.py] [_log()] starting thread (client mode): 0xed06e00
2025-11-03T09:07:35.320 [DEBUG] [Thread-113040] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:07:35.335 [DEBUG] [Thread-113040] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:07:35.335 [INFO] [Thread-113040] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:07:35.343 [DEBUG] [Thread-113040] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:07:35.343 [DEBUG] [Thread-113040] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:07:35.343 [DEBUG] [Thread-113040] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:07:35.343 [DEBUG] [Thread-113040] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:07:35.343 [DEBUG] [Thread-113040] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:07:35.343 [DEBUG] [Thread-113040] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:07:35.344 [DEBUG] [Thread-113040] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:07:35.344 [DEBUG] [Thread-113040] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:07:35.344 [DEBUG] [Thread-113040] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:07:35.344 [DEBUG] [Thread-113040] [transport.py] [_log()] client lang: <none>
2025-11-03T09:07:35.344 [DEBUG] [Thread-113040] [transport.py] [_log()] server lang: <none>
2025-11-03T09:07:35.344 [DEBUG] [Thread-113040] [transport.py] [_log()] kex follows: False
2025-11-03T09:07:35.344 [DEBUG] [Thread-113040] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:07:35.344 [DEBUG] [Thread-113040] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:07:35.344 [DEBUG] [Thread-113040] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:07:35.345 [DEBUG] [Thread-113040] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:07:35.345 [DEBUG] [Thread-113040] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:07:35.345 [DEBUG] [Thread-113040] [transport.py] [_log()] Compression: none
2025-11-03T09:07:35.345 [DEBUG] [Thread-113040] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:07:35.405 [DEBUG] [Thread-113040] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:07:35.406 [DEBUG] [Thread-113040] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:07:35.407 [DEBUG] [Thread-113040] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:07:35.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:07:35.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:07:35.461 [DEBUG] [Thread-113040] [transport.py] [_log()] userauth is OK
2025-11-03T09:07:35.462 [DEBUG] [Thread-113040] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:07:35.462 [DEBUG] [Thread-113040] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:07:35.462 [DEBUG] [Thread-113040] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:07:35.462 [DEBUG] [Thread-113040] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:07:35.483 [INFO] [Thread-113040] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:07:35.484 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:07:35.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:07:36.344 [DEBUG] [Thread-113040] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:07:36.345 [DEBUG] [Thread-113040] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:07:36.393 [DEBUG] [Thread-113040] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:07:36.393 [DEBUG] [Thread-113040] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:07:36.403 [DEBUG] [Thread-113040] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:07:36.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:07:36.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:07:36.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:07:36.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:07:36.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:07:36.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:07:36.440 [DEBUG] [Thread-113040] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:07:36.582 [DEBUG] [Thread-113042 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:07:46.876 [DEBUG] [Thread-113043 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:07:51.632 [DEBUG] [Thread-113044 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:08:06.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:08:06.462 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:08:06.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:08:06.664 [DEBUG] [Thread-113045 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:08:07.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 7, 32), 32.42, 9.9, 0.0, 7.82, 19.21, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:08:07.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:07:32
2025-11-03T09:08:07.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:08:07.439 [DEBUG] [Thread-113046] [transport.py] [_log()] starting thread (client mode): 0xed05b40
2025-11-03T09:08:07.440 [DEBUG] [Thread-113046] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:08:07.460 [DEBUG] [Thread-113046] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:08:07.460 [INFO] [Thread-113046] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:08:07.463 [DEBUG] [Thread-113046] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:08:07.464 [DEBUG] [Thread-113046] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:08:07.464 [DEBUG] [Thread-113046] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:08:07.464 [DEBUG] [Thread-113046] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:08:07.464 [DEBUG] [Thread-113046] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:08:07.464 [DEBUG] [Thread-113046] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:08:07.464 [DEBUG] [Thread-113046] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:08:07.464 [DEBUG] [Thread-113046] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:08:07.464 [DEBUG] [Thread-113046] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:08:07.464 [DEBUG] [Thread-113046] [transport.py] [_log()] client lang: <none>
2025-11-03T09:08:07.464 [DEBUG] [Thread-113046] [transport.py] [_log()] server lang: <none>
2025-11-03T09:08:07.464 [DEBUG] [Thread-113046] [transport.py] [_log()] kex follows: False
2025-11-03T09:08:07.464 [DEBUG] [Thread-113046] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:08:07.464 [DEBUG] [Thread-113046] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:08:07.464 [DEBUG] [Thread-113046] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:08:07.464 [DEBUG] [Thread-113046] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:08:07.465 [DEBUG] [Thread-113046] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:08:07.465 [DEBUG] [Thread-113046] [transport.py] [_log()] Compression: none
2025-11-03T09:08:07.465 [DEBUG] [Thread-113046] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:08:07.474 [DEBUG] [Thread-113046] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:08:07.475 [DEBUG] [Thread-113046] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:08:07.475 [DEBUG] [Thread-113046] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:08:07.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:08:07.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:08:07.477 [DEBUG] [Thread-113046] [transport.py] [_log()] userauth is OK
2025-11-03T09:08:07.477 [DEBUG] [Thread-113046] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:08:07.477 [DEBUG] [Thread-113046] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:08:07.477 [DEBUG] [Thread-113046] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:08:07.477 [DEBUG] [Thread-113046] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:08:07.495 [INFO] [Thread-113046] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:08:07.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:08:08.127 [DEBUG] [Thread-113046] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:08:08.128 [DEBUG] [Thread-113046] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:08:08.128 [DEBUG] [Thread-113046] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:08:08.169 [DEBUG] [Thread-113046] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:08:08.169 [DEBUG] [Thread-113046] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:08:08.172 [DEBUG] [Thread-113046] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:08:08.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:08:08.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:08:08.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:08:08.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:08:08.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:08:08.194 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:08:08.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:08:08.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:08:08.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:08:08.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.296969 -999.00  +19.00  15.65     15   -8.10 1 1 1 1 1   888    0 29.82 125.33 ----- 12.9 15.7 55.4 17.8 25.2 -29.4 24.1 -29.1 22.5 -29.7 23.2 -29.0
2025-11-03T09:08:08.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:08:08.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:08:08.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.296969
2025-11-03T09:08:08.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:08:08.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:08:08.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:08:08.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:08:08.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:08:08.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:07:32', tmtdew=32.42, humidity=9.9, cloud=0.0, wind=7.82, temperature=19.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:07:38.122', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:08:08.198 [DEBUG] [Thread-113046] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:08:08.281 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:08:08.294 [DEBUG] [Thread-113049] [transport.py] [_log()] starting thread (client mode): 0x81d8070
2025-11-03T09:08:08.294 [DEBUG] [Thread-113049] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:08:08.313 [DEBUG] [Thread-113049] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:08:08.313 [INFO] [Thread-113049] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:08:08.323 [DEBUG] [Thread-113049] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:08:08.324 [DEBUG] [Thread-113049] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:08:08.324 [DEBUG] [Thread-113049] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:08:08.324 [DEBUG] [Thread-113049] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:08:08.324 [DEBUG] [Thread-113049] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:08:08.324 [DEBUG] [Thread-113049] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:08:08.324 [DEBUG] [Thread-113049] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:08:08.324 [DEBUG] [Thread-113049] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:08:08.324 [DEBUG] [Thread-113049] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:08:08.324 [DEBUG] [Thread-113049] [transport.py] [_log()] client lang: <none>
2025-11-03T09:08:08.324 [DEBUG] [Thread-113049] [transport.py] [_log()] server lang: <none>
2025-11-03T09:08:08.324 [DEBUG] [Thread-113049] [transport.py] [_log()] kex follows: False
2025-11-03T09:08:08.324 [DEBUG] [Thread-113049] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:08:08.324 [DEBUG] [Thread-113049] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:08:08.325 [DEBUG] [Thread-113049] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:08:08.325 [DEBUG] [Thread-113049] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:08:08.325 [DEBUG] [Thread-113049] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:08:08.325 [DEBUG] [Thread-113049] [transport.py] [_log()] Compression: none
2025-11-03T09:08:08.325 [DEBUG] [Thread-113049] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:08:08.385 [DEBUG] [Thread-113049] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:08:08.385 [DEBUG] [Thread-113049] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:08:08.386 [DEBUG] [Thread-113049] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:08:08.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:08:08.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:08:08.448 [DEBUG] [Thread-113049] [transport.py] [_log()] userauth is OK
2025-11-03T09:08:08.449 [DEBUG] [Thread-113049] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:08:08.449 [DEBUG] [Thread-113049] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:08:08.449 [DEBUG] [Thread-113049] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:08:08.449 [DEBUG] [Thread-113049] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:08:08.483 [INFO] [Thread-113049] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:08:08.484 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:08:08.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:08:09.359 [DEBUG] [Thread-113049] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:08:09.359 [DEBUG] [Thread-113049] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:08:09.408 [DEBUG] [Thread-113049] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:08:09.408 [DEBUG] [Thread-113049] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:08:09.416 [DEBUG] [Thread-113049] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:08:09.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:08:09.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:08:09.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:08:09.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:08:09.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:08:09.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:08:09.448 [DEBUG] [Thread-113049] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:08:11.918 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:08:11.919 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:08:21.695 [DEBUG] [Thread-113051 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:08:36.756 [DEBUG] [Thread-113052 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:08:39.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:08:39.470 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:08:39.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:08:40.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 8, 4), 32.57, 9.77, 0.0, 8.59, 19.14, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:08:40.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:08:04
2025-11-03T09:08:40.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:08:40.404 [DEBUG] [Thread-113053] [transport.py] [_log()] starting thread (client mode): 0xed5e560
2025-11-03T09:08:40.404 [DEBUG] [Thread-113053] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:08:40.423 [DEBUG] [Thread-113053] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:08:40.423 [INFO] [Thread-113053] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:08:40.427 [DEBUG] [Thread-113053] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:08:40.427 [DEBUG] [Thread-113053] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:08:40.427 [DEBUG] [Thread-113053] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:08:40.427 [DEBUG] [Thread-113053] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:08:40.427 [DEBUG] [Thread-113053] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:08:40.427 [DEBUG] [Thread-113053] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:08:40.427 [DEBUG] [Thread-113053] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:08:40.427 [DEBUG] [Thread-113053] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:08:40.427 [DEBUG] [Thread-113053] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:08:40.427 [DEBUG] [Thread-113053] [transport.py] [_log()] client lang: <none>
2025-11-03T09:08:40.427 [DEBUG] [Thread-113053] [transport.py] [_log()] server lang: <none>
2025-11-03T09:08:40.427 [DEBUG] [Thread-113053] [transport.py] [_log()] kex follows: False
2025-11-03T09:08:40.427 [DEBUG] [Thread-113053] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:08:40.427 [DEBUG] [Thread-113053] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:08:40.427 [DEBUG] [Thread-113053] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:08:40.427 [DEBUG] [Thread-113053] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:08:40.428 [DEBUG] [Thread-113053] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:08:40.428 [DEBUG] [Thread-113053] [transport.py] [_log()] Compression: none
2025-11-03T09:08:40.428 [DEBUG] [Thread-113053] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:08:40.445 [DEBUG] [Thread-113053] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:08:40.445 [DEBUG] [Thread-113053] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:08:40.446 [DEBUG] [Thread-113053] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:08:40.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:08:40.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:08:40.448 [DEBUG] [Thread-113053] [transport.py] [_log()] userauth is OK
2025-11-03T09:08:40.448 [DEBUG] [Thread-113053] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:08:40.448 [DEBUG] [Thread-113053] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:08:40.448 [DEBUG] [Thread-113053] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:08:40.448 [DEBUG] [Thread-113053] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:08:40.462 [INFO] [Thread-113053] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:08:40.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:08:41.046 [DEBUG] [Thread-113053] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:08:41.047 [DEBUG] [Thread-113053] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:08:41.047 [DEBUG] [Thread-113053] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:08:41.088 [DEBUG] [Thread-113053] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:08:41.088 [DEBUG] [Thread-113053] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:08:41.092 [DEBUG] [Thread-113053] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:08:41.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:08:41.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:08:41.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:08:41.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:08:41.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:08:41.118 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:08:41.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:08:41.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:08:41.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:08:41.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.297316 -999.00  +18.80  11.49     15   -8.00 1 1 1 1 1   888    0 29.21 128.26 ----- 13.2 11.5 54.8 14.3 25.2 -29.9 24.2 -29.3 22.5 -29.0 23.3 -28.9
2025-11-03T09:08:41.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:08:41.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:08:41.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.297316
2025-11-03T09:08:41.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:08:41.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:08:41.120 [DEBUG] [Thread-113053] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:08:41.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:08:41.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:08:41.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:08:41.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:08:04', tmtdew=32.57, humidity=9.77, cloud=0.0, wind=8.59, temperature=19.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:08:08.102', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:08:41.204 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:08:41.216 [DEBUG] [Thread-113056] [transport.py] [_log()] starting thread (client mode): 0xed5cd00
2025-11-03T09:08:41.216 [DEBUG] [Thread-113056] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:08:41.231 [DEBUG] [Thread-113056] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:08:41.231 [INFO] [Thread-113056] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:08:41.242 [DEBUG] [Thread-113056] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:08:41.243 [DEBUG] [Thread-113056] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:08:41.243 [DEBUG] [Thread-113056] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:08:41.243 [DEBUG] [Thread-113056] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:08:41.243 [DEBUG] [Thread-113056] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:08:41.243 [DEBUG] [Thread-113056] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:08:41.243 [DEBUG] [Thread-113056] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:08:41.243 [DEBUG] [Thread-113056] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:08:41.243 [DEBUG] [Thread-113056] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:08:41.243 [DEBUG] [Thread-113056] [transport.py] [_log()] client lang: <none>
2025-11-03T09:08:41.243 [DEBUG] [Thread-113056] [transport.py] [_log()] server lang: <none>
2025-11-03T09:08:41.243 [DEBUG] [Thread-113056] [transport.py] [_log()] kex follows: False
2025-11-03T09:08:41.243 [DEBUG] [Thread-113056] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:08:41.243 [DEBUG] [Thread-113056] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:08:41.243 [DEBUG] [Thread-113056] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:08:41.243 [DEBUG] [Thread-113056] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:08:41.244 [DEBUG] [Thread-113056] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:08:41.244 [DEBUG] [Thread-113056] [transport.py] [_log()] Compression: none
2025-11-03T09:08:41.244 [DEBUG] [Thread-113056] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:08:41.302 [DEBUG] [Thread-113056] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:08:41.302 [DEBUG] [Thread-113056] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:08:41.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:08:41.304 [DEBUG] [Thread-113056] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:08:41.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:08:41.361 [DEBUG] [Thread-113056] [transport.py] [_log()] userauth is OK
2025-11-03T09:08:41.361 [DEBUG] [Thread-113056] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:08:41.361 [DEBUG] [Thread-113056] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:08:41.361 [DEBUG] [Thread-113056] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:08:41.361 [DEBUG] [Thread-113056] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:08:41.380 [INFO] [Thread-113056] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:08:41.381 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:08:41.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:08:42.252 [DEBUG] [Thread-113056] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:08:42.253 [DEBUG] [Thread-113056] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:08:42.301 [DEBUG] [Thread-113056] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:08:42.301 [DEBUG] [Thread-113056] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:08:42.311 [DEBUG] [Thread-113056] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:08:42.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:08:42.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:08:42.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:08:42.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:08:42.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:08:42.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:08:42.348 [DEBUG] [Thread-113056] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:08:46.934 [DEBUG] [Thread-113058 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:08:51.790 [DEBUG] [Thread-113059 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:09:06.839 [DEBUG] [Thread-113060 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:09:12.060 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:09:12.062 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:09:12.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:09:12.356 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:09:12.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:09:13.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 9, 9), 32.48, 9.99, 0.0, 11.4, 19.26, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:09:13.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:09:09
2025-11-03T09:09:13.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:09:13.320 [DEBUG] [Thread-113061] [transport.py] [_log()] starting thread (client mode): 0xed41d20
2025-11-03T09:09:13.320 [DEBUG] [Thread-113061] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:09:13.333 [DEBUG] [Thread-113061] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:09:13.333 [INFO] [Thread-113061] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:09:13.336 [DEBUG] [Thread-113061] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:09:13.336 [DEBUG] [Thread-113061] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:09:13.336 [DEBUG] [Thread-113061] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:09:13.336 [DEBUG] [Thread-113061] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:09:13.336 [DEBUG] [Thread-113061] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:09:13.336 [DEBUG] [Thread-113061] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:09:13.336 [DEBUG] [Thread-113061] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:09:13.336 [DEBUG] [Thread-113061] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:09:13.336 [DEBUG] [Thread-113061] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:09:13.336 [DEBUG] [Thread-113061] [transport.py] [_log()] client lang: <none>
2025-11-03T09:09:13.336 [DEBUG] [Thread-113061] [transport.py] [_log()] server lang: <none>
2025-11-03T09:09:13.336 [DEBUG] [Thread-113061] [transport.py] [_log()] kex follows: False
2025-11-03T09:09:13.336 [DEBUG] [Thread-113061] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:09:13.336 [DEBUG] [Thread-113061] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:09:13.336 [DEBUG] [Thread-113061] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:09:13.336 [DEBUG] [Thread-113061] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:09:13.336 [DEBUG] [Thread-113061] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:09:13.336 [DEBUG] [Thread-113061] [transport.py] [_log()] Compression: none
2025-11-03T09:09:13.336 [DEBUG] [Thread-113061] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:09:13.344 [DEBUG] [Thread-113061] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:09:13.344 [DEBUG] [Thread-113061] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:09:13.344 [DEBUG] [Thread-113061] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:09:13.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:09:13.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:09:13.345 [DEBUG] [Thread-113061] [transport.py] [_log()] userauth is OK
2025-11-03T09:09:13.345 [DEBUG] [Thread-113061] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:09:13.346 [DEBUG] [Thread-113061] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:09:13.346 [DEBUG] [Thread-113061] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:09:13.346 [DEBUG] [Thread-113061] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:09:13.365 [INFO] [Thread-113061] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:09:13.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:09:13.979 [DEBUG] [Thread-113061] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:09:13.979 [DEBUG] [Thread-113061] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:09:13.980 [DEBUG] [Thread-113061] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:09:14.020 [DEBUG] [Thread-113061] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:09:14.020 [DEBUG] [Thread-113061] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:09:14.023 [DEBUG] [Thread-113061] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:09:14.037 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:09:14.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:09:14.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:09:14.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:09:14.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:09:14.051 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:09:14.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:09:14.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:09:14.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:09:14.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.297664 -999.00  +18.70  16.69     15   -7.90 1 1 1 1 1   888    0 29.62 130.65 ----- 15.3 16.7 54.6 20.0 25.3 -29.7 24.2 -30.0 22.5 -29.9 23.3 -29.4
2025-11-03T09:09:14.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:09:14.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:09:14.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.297664
2025-11-03T09:09:14.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:09:14.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:09:14.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:09:14.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:09:14.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:09:14.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:09:09', tmtdew=32.48, humidity=9.99, cloud=0.0, wind=11.4, temperature=19.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:08:38.170', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:09:14.054 [DEBUG] [Thread-113061] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:09:14.146 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:09:14.158 [DEBUG] [Thread-113064] [transport.py] [_log()] starting thread (client mode): 0xed43040
2025-11-03T09:09:14.158 [DEBUG] [Thread-113064] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:09:14.178 [DEBUG] [Thread-113064] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:09:14.178 [INFO] [Thread-113064] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:09:14.186 [DEBUG] [Thread-113064] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:09:14.186 [DEBUG] [Thread-113064] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:09:14.186 [DEBUG] [Thread-113064] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:09:14.186 [DEBUG] [Thread-113064] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:09:14.187 [DEBUG] [Thread-113064] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:09:14.187 [DEBUG] [Thread-113064] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:09:14.187 [DEBUG] [Thread-113064] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:09:14.187 [DEBUG] [Thread-113064] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:09:14.187 [DEBUG] [Thread-113064] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:09:14.187 [DEBUG] [Thread-113064] [transport.py] [_log()] client lang: <none>
2025-11-03T09:09:14.187 [DEBUG] [Thread-113064] [transport.py] [_log()] server lang: <none>
2025-11-03T09:09:14.187 [DEBUG] [Thread-113064] [transport.py] [_log()] kex follows: False
2025-11-03T09:09:14.187 [DEBUG] [Thread-113064] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:09:14.188 [DEBUG] [Thread-113064] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:09:14.188 [DEBUG] [Thread-113064] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:09:14.188 [DEBUG] [Thread-113064] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:09:14.188 [DEBUG] [Thread-113064] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:09:14.188 [DEBUG] [Thread-113064] [transport.py] [_log()] Compression: none
2025-11-03T09:09:14.188 [DEBUG] [Thread-113064] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:09:14.250 [DEBUG] [Thread-113064] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:09:14.250 [DEBUG] [Thread-113064] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:09:14.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:09:14.252 [DEBUG] [Thread-113064] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:09:14.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:09:14.310 [DEBUG] [Thread-113064] [transport.py] [_log()] userauth is OK
2025-11-03T09:09:14.310 [DEBUG] [Thread-113064] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:09:14.311 [DEBUG] [Thread-113064] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:09:14.311 [DEBUG] [Thread-113064] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:09:14.311 [DEBUG] [Thread-113064] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:09:14.331 [INFO] [Thread-113064] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:09:14.331 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:09:14.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:09:15.190 [DEBUG] [Thread-113064] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:09:15.191 [DEBUG] [Thread-113064] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:09:15.239 [DEBUG] [Thread-113064] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:09:15.239 [DEBUG] [Thread-113064] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:09:15.254 [DEBUG] [Thread-113064] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:09:15.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:09:15.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:09:15.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:09:15.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:09:15.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:09:15.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:09:15.292 [DEBUG] [Thread-113064] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:09:21.867 [DEBUG] [Thread-113066 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:09:36.919 [DEBUG] [Thread-113067 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:09:45.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:09:45.313 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:09:45.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:09:45.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 9, 41), 32.1, 10.17, 0.0, 10.38, 19.44, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:09:45.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:09:41
2025-11-03T09:09:46.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:09:46.254 [DEBUG] [Thread-113068] [transport.py] [_log()] starting thread (client mode): 0xed057e0
2025-11-03T09:09:46.254 [DEBUG] [Thread-113068] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:09:46.274 [DEBUG] [Thread-113068] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:09:46.274 [INFO] [Thread-113068] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:09:46.277 [DEBUG] [Thread-113068] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:09:46.278 [DEBUG] [Thread-113068] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:09:46.278 [DEBUG] [Thread-113068] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:09:46.278 [DEBUG] [Thread-113068] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:09:46.278 [DEBUG] [Thread-113068] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:09:46.278 [DEBUG] [Thread-113068] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:09:46.278 [DEBUG] [Thread-113068] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:09:46.278 [DEBUG] [Thread-113068] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:09:46.278 [DEBUG] [Thread-113068] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:09:46.278 [DEBUG] [Thread-113068] [transport.py] [_log()] client lang: <none>
2025-11-03T09:09:46.278 [DEBUG] [Thread-113068] [transport.py] [_log()] server lang: <none>
2025-11-03T09:09:46.278 [DEBUG] [Thread-113068] [transport.py] [_log()] kex follows: False
2025-11-03T09:09:46.278 [DEBUG] [Thread-113068] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:09:46.278 [DEBUG] [Thread-113068] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:09:46.278 [DEBUG] [Thread-113068] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:09:46.278 [DEBUG] [Thread-113068] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:09:46.278 [DEBUG] [Thread-113068] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:09:46.278 [DEBUG] [Thread-113068] [transport.py] [_log()] Compression: none
2025-11-03T09:09:46.278 [DEBUG] [Thread-113068] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:09:46.296 [DEBUG] [Thread-113068] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:09:46.296 [DEBUG] [Thread-113068] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:09:46.296 [DEBUG] [Thread-113068] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:09:46.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:09:46.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:09:46.297 [DEBUG] [Thread-113068] [transport.py] [_log()] userauth is OK
2025-11-03T09:09:46.297 [DEBUG] [Thread-113068] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:09:46.297 [DEBUG] [Thread-113068] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:09:46.297 [DEBUG] [Thread-113068] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:09:46.297 [DEBUG] [Thread-113068] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:09:46.312 [INFO] [Thread-113068] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:09:46.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:09:46.938 [DEBUG] [Thread-113068] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:09:46.938 [DEBUG] [Thread-113068] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:09:46.939 [DEBUG] [Thread-113068] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:09:46.969 [DEBUG] [Thread-113070 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:09:46.979 [DEBUG] [Thread-113068] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:09:46.979 [DEBUG] [Thread-113068] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:09:46.981 [DEBUG] [Thread-113068] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:09:46.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:09:46.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:09:46.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:09:46.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:09:46.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:09:46.998 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:09:46.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:09:46.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:09:46.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:09:46.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.298011 -999.00  +18.60  11.49     16   -7.60 1 1 1 1 1   888    0 30.51 139.95 ----- 10.6 11.5 47.2 15.8 25.2 -29.4 24.1 -29.0 22.5 -29.2 23.3 -28.9
2025-11-03T09:09:46.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:09:46.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:09:46.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.298011
2025-11-03T09:09:46.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:09:46.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:09:46.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:09:46.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:09:46.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:09:46.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:09:41', tmtdew=32.1, humidity=10.17, cloud=0.0, wind=10.38, temperature=19.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:09:08.150', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:09:46.999 [DEBUG] [Thread-113068] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:09:47.071 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:09:47.084 [DEBUG] [Thread-113072] [transport.py] [_log()] starting thread (client mode): 0xed5d5a0
2025-11-03T09:09:47.084 [DEBUG] [Thread-113072] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:09:47.098 [DEBUG] [Thread-113072] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:09:47.099 [INFO] [Thread-113072] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:09:47.108 [DEBUG] [Thread-113072] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:09:47.108 [DEBUG] [Thread-113072] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:09:47.108 [DEBUG] [Thread-113072] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:09:47.108 [DEBUG] [Thread-113072] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:09:47.108 [DEBUG] [Thread-113072] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:09:47.109 [DEBUG] [Thread-113072] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:09:47.109 [DEBUG] [Thread-113072] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:09:47.109 [DEBUG] [Thread-113072] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:09:47.109 [DEBUG] [Thread-113072] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:09:47.109 [DEBUG] [Thread-113072] [transport.py] [_log()] client lang: <none>
2025-11-03T09:09:47.109 [DEBUG] [Thread-113072] [transport.py] [_log()] server lang: <none>
2025-11-03T09:09:47.109 [DEBUG] [Thread-113072] [transport.py] [_log()] kex follows: False
2025-11-03T09:09:47.109 [DEBUG] [Thread-113072] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:09:47.109 [DEBUG] [Thread-113072] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:09:47.109 [DEBUG] [Thread-113072] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:09:47.109 [DEBUG] [Thread-113072] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:09:47.109 [DEBUG] [Thread-113072] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:09:47.109 [DEBUG] [Thread-113072] [transport.py] [_log()] Compression: none
2025-11-03T09:09:47.109 [DEBUG] [Thread-113072] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:09:47.163 [DEBUG] [Thread-113072] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:09:47.163 [DEBUG] [Thread-113072] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:09:47.163 [DEBUG] [Thread-113072] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:09:47.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:09:47.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:09:47.220 [DEBUG] [Thread-113072] [transport.py] [_log()] userauth is OK
2025-11-03T09:09:47.220 [DEBUG] [Thread-113072] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:09:47.220 [DEBUG] [Thread-113072] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:09:47.220 [DEBUG] [Thread-113072] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:09:47.220 [DEBUG] [Thread-113072] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:09:47.234 [INFO] [Thread-113072] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:09:47.234 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:09:47.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:09:48.111 [DEBUG] [Thread-113072] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:09:48.111 [DEBUG] [Thread-113072] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:09:48.159 [DEBUG] [Thread-113072] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:09:48.159 [DEBUG] [Thread-113072] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:09:48.169 [DEBUG] [Thread-113072] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:09:48.178 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:09:48.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:09:48.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:09:48.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:09:48.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:09:48.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:09:48.206 [DEBUG] [Thread-113072] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:09:51.954 [DEBUG] [Thread-113074 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:10:07.016 [DEBUG] [Thread-113075 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:10:12.203 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:10:12.204 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:10:18.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:10:18.214 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:10:18.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:10:18.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 10, 13), 31.98, 10.27, 0.0, 11.43, 19.41, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:10:18.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:10:13
2025-11-03T09:10:19.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:10:19.183 [DEBUG] [Thread-113076] [transport.py] [_log()] starting thread (client mode): 0x81d85e0
2025-11-03T09:10:19.183 [DEBUG] [Thread-113076] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:10:19.204 [DEBUG] [Thread-113076] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:10:19.204 [INFO] [Thread-113076] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:10:19.207 [DEBUG] [Thread-113076] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:10:19.207 [DEBUG] [Thread-113076] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:10:19.207 [DEBUG] [Thread-113076] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:10:19.207 [DEBUG] [Thread-113076] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:10:19.207 [DEBUG] [Thread-113076] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:10:19.207 [DEBUG] [Thread-113076] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:10:19.207 [DEBUG] [Thread-113076] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:10:19.207 [DEBUG] [Thread-113076] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:10:19.207 [DEBUG] [Thread-113076] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:10:19.207 [DEBUG] [Thread-113076] [transport.py] [_log()] client lang: <none>
2025-11-03T09:10:19.207 [DEBUG] [Thread-113076] [transport.py] [_log()] server lang: <none>
2025-11-03T09:10:19.207 [DEBUG] [Thread-113076] [transport.py] [_log()] kex follows: False
2025-11-03T09:10:19.207 [DEBUG] [Thread-113076] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:10:19.207 [DEBUG] [Thread-113076] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:10:19.207 [DEBUG] [Thread-113076] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:10:19.207 [DEBUG] [Thread-113076] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:10:19.208 [DEBUG] [Thread-113076] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:10:19.208 [DEBUG] [Thread-113076] [transport.py] [_log()] Compression: none
2025-11-03T09:10:19.208 [DEBUG] [Thread-113076] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:10:19.224 [DEBUG] [Thread-113076] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:10:19.224 [DEBUG] [Thread-113076] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:10:19.224 [DEBUG] [Thread-113076] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:10:19.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:10:19.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:10:19.226 [DEBUG] [Thread-113076] [transport.py] [_log()] userauth is OK
2025-11-03T09:10:19.226 [DEBUG] [Thread-113076] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:10:19.226 [DEBUG] [Thread-113076] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:10:19.226 [DEBUG] [Thread-113076] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:10:19.226 [DEBUG] [Thread-113076] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:10:19.243 [INFO] [Thread-113076] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:10:19.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:10:19.877 [DEBUG] [Thread-113076] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:10:19.877 [DEBUG] [Thread-113076] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:10:19.877 [DEBUG] [Thread-113076] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:10:19.918 [DEBUG] [Thread-113076] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:10:19.918 [DEBUG] [Thread-113076] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:10:19.920 [DEBUG] [Thread-113076] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:10:19.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:10:19.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:10:19.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:10:19.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:10:19.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:10:19.938 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:10:19.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:10:19.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:10:19.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:10:19.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.298358 -999.00  +18.70  14.25     16   -7.50 1 1 1 1 1   888    0 29.57 125.96 ----- 14.4 14.2 44.8 16.0 25.2 -29.6 24.2 -28.7 22.6 -29.0 23.4 -29.1
2025-11-03T09:10:19.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:10:19.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:10:19.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.298358
2025-11-03T09:10:19.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:10:19.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:10:19.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:10:19.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:10:19.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:10:19.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:10:13', tmtdew=31.98, humidity=10.27, cloud=0.0, wind=11.43, temperature=19.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:09:38.131', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:10:19.940 [DEBUG] [Thread-113076] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:10:20.013 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:10:20.025 [DEBUG] [Thread-113079] [transport.py] [_log()] starting thread (client mode): 0xed5e950
2025-11-03T09:10:20.025 [DEBUG] [Thread-113079] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:10:20.040 [DEBUG] [Thread-113079] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:10:20.040 [INFO] [Thread-113079] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:10:20.048 [DEBUG] [Thread-113079] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:10:20.048 [DEBUG] [Thread-113079] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:10:20.048 [DEBUG] [Thread-113079] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:10:20.048 [DEBUG] [Thread-113079] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:10:20.048 [DEBUG] [Thread-113079] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:10:20.048 [DEBUG] [Thread-113079] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:10:20.048 [DEBUG] [Thread-113079] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:10:20.048 [DEBUG] [Thread-113079] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:10:20.048 [DEBUG] [Thread-113079] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:10:20.048 [DEBUG] [Thread-113079] [transport.py] [_log()] client lang: <none>
2025-11-03T09:10:20.048 [DEBUG] [Thread-113079] [transport.py] [_log()] server lang: <none>
2025-11-03T09:10:20.048 [DEBUG] [Thread-113079] [transport.py] [_log()] kex follows: False
2025-11-03T09:10:20.048 [DEBUG] [Thread-113079] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:10:20.048 [DEBUG] [Thread-113079] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:10:20.048 [DEBUG] [Thread-113079] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:10:20.048 [DEBUG] [Thread-113079] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:10:20.048 [DEBUG] [Thread-113079] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:10:20.048 [DEBUG] [Thread-113079] [transport.py] [_log()] Compression: none
2025-11-03T09:10:20.048 [DEBUG] [Thread-113079] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:10:20.112 [DEBUG] [Thread-113079] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:10:20.112 [DEBUG] [Thread-113079] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:10:20.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:10:20.112 [DEBUG] [Thread-113079] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:10:20.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:10:20.172 [DEBUG] [Thread-113079] [transport.py] [_log()] userauth is OK
2025-11-03T09:10:20.172 [DEBUG] [Thread-113079] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:10:20.172 [DEBUG] [Thread-113079] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:10:20.172 [DEBUG] [Thread-113079] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:10:20.172 [DEBUG] [Thread-113079] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:10:20.186 [INFO] [Thread-113079] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:10:20.186 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:10:20.187 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:10:21.032 [DEBUG] [Thread-113079] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:10:21.032 [DEBUG] [Thread-113079] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:10:21.079 [DEBUG] [Thread-113079] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:10:21.079 [DEBUG] [Thread-113079] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:10:21.087 [DEBUG] [Thread-113079] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:10:21.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:10:21.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:10:21.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:10:21.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:10:21.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:10:21.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:10:21.120 [DEBUG] [Thread-113079] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:10:22.046 [DEBUG] [Thread-113081 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:10:37.088 [DEBUG] [Thread-113082 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:10:47.000 [DEBUG] [Thread-113083 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:10:51.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:10:51.136 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:10:51.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:10:51.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 10, 45), 31.94, 10.3, 0.0, 8.79, 19.61, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:10:51.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:10:45
2025-11-03T09:10:51.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:10:52.088 [DEBUG] [Thread-113084] [transport.py] [_log()] starting thread (client mode): 0x81da650
2025-11-03T09:10:52.088 [DEBUG] [Thread-113084] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:10:52.102 [DEBUG] [Thread-113084] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:10:52.102 [INFO] [Thread-113084] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:10:52.104 [DEBUG] [Thread-113084] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:10:52.104 [DEBUG] [Thread-113084] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:10:52.104 [DEBUG] [Thread-113084] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:10:52.104 [DEBUG] [Thread-113084] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:10:52.104 [DEBUG] [Thread-113084] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:10:52.104 [DEBUG] [Thread-113084] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:10:52.104 [DEBUG] [Thread-113084] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:10:52.104 [DEBUG] [Thread-113084] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:10:52.104 [DEBUG] [Thread-113084] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:10:52.104 [DEBUG] [Thread-113084] [transport.py] [_log()] client lang: <none>
2025-11-03T09:10:52.104 [DEBUG] [Thread-113084] [transport.py] [_log()] server lang: <none>
2025-11-03T09:10:52.104 [DEBUG] [Thread-113084] [transport.py] [_log()] kex follows: False
2025-11-03T09:10:52.104 [DEBUG] [Thread-113084] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:10:52.104 [DEBUG] [Thread-113084] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:10:52.104 [DEBUG] [Thread-113084] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:10:52.104 [DEBUG] [Thread-113084] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:10:52.104 [DEBUG] [Thread-113084] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:10:52.104 [DEBUG] [Thread-113084] [transport.py] [_log()] Compression: none
2025-11-03T09:10:52.104 [DEBUG] [Thread-113084] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:10:52.117 [DEBUG] [Thread-113084] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:10:52.117 [DEBUG] [Thread-113084] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:10:52.117 [DEBUG] [Thread-113084] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:10:52.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:10:52.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:10:52.118 [DEBUG] [Thread-113084] [transport.py] [_log()] userauth is OK
2025-11-03T09:10:52.119 [DEBUG] [Thread-113084] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:10:52.119 [DEBUG] [Thread-113084] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:10:52.119 [DEBUG] [Thread-113084] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:10:52.119 [DEBUG] [Thread-113084] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:10:52.131 [DEBUG] [Thread-113086 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:10:52.145 [INFO] [Thread-113084] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:10:52.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:10:52.760 [DEBUG] [Thread-113084] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:10:52.760 [DEBUG] [Thread-113084] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:10:52.761 [DEBUG] [Thread-113084] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:10:52.801 [DEBUG] [Thread-113084] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:10:52.801 [DEBUG] [Thread-113084] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:10:52.804 [DEBUG] [Thread-113084] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:10:52.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:10:52.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:10:52.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:10:52.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:10:52.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:10:52.821 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:10:52.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:10:52.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:10:52.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:10:52.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.299052 -999.00  +18.90  11.61     16   -7.30 1 1 1 1 1   888    0 29.65 126.54 ----- 9.7 11.6 52.4 15.6 25.3 -29.8 24.4 -28.5 22.7 -28.4 23.5 -29.0
2025-11-03T09:10:52.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:10:52.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:10:52.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.299052
2025-11-03T09:10:52.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:10:52.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:10:52.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:10:52.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:10:52.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:10:52.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:10:45', tmtdew=31.94, humidity=10.3, cloud=0.0, wind=8.79, temperature=19.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:10:38.093', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:10:52.822 [DEBUG] [Thread-113084] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:10:52.894 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:10:52.909 [DEBUG] [Thread-113088] [transport.py] [_log()] starting thread (client mode): 0xed35cc0
2025-11-03T09:10:52.909 [DEBUG] [Thread-113088] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:10:52.923 [DEBUG] [Thread-113088] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:10:52.923 [INFO] [Thread-113088] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:10:52.930 [DEBUG] [Thread-113088] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:10:52.930 [DEBUG] [Thread-113088] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:10:52.930 [DEBUG] [Thread-113088] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:10:52.930 [DEBUG] [Thread-113088] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:10:52.931 [DEBUG] [Thread-113088] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:10:52.931 [DEBUG] [Thread-113088] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:10:52.931 [DEBUG] [Thread-113088] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:10:52.931 [DEBUG] [Thread-113088] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:10:52.931 [DEBUG] [Thread-113088] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:10:52.931 [DEBUG] [Thread-113088] [transport.py] [_log()] client lang: <none>
2025-11-03T09:10:52.931 [DEBUG] [Thread-113088] [transport.py] [_log()] server lang: <none>
2025-11-03T09:10:52.931 [DEBUG] [Thread-113088] [transport.py] [_log()] kex follows: False
2025-11-03T09:10:52.931 [DEBUG] [Thread-113088] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:10:52.931 [DEBUG] [Thread-113088] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:10:52.931 [DEBUG] [Thread-113088] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:10:52.931 [DEBUG] [Thread-113088] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:10:52.931 [DEBUG] [Thread-113088] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:10:52.931 [DEBUG] [Thread-113088] [transport.py] [_log()] Compression: none
2025-11-03T09:10:52.931 [DEBUG] [Thread-113088] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:10:52.992 [DEBUG] [Thread-113088] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:10:52.992 [DEBUG] [Thread-113088] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:10:52.992 [DEBUG] [Thread-113088] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:10:52.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:10:52.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:10:53.053 [DEBUG] [Thread-113088] [transport.py] [_log()] userauth is OK
2025-11-03T09:10:53.053 [DEBUG] [Thread-113088] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:10:53.053 [DEBUG] [Thread-113088] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:10:53.053 [DEBUG] [Thread-113088] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:10:53.053 [DEBUG] [Thread-113088] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:10:53.067 [INFO] [Thread-113088] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:10:53.067 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:10:53.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:10:53.922 [DEBUG] [Thread-113088] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:10:53.922 [DEBUG] [Thread-113088] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:10:53.970 [DEBUG] [Thread-113088] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:10:53.970 [DEBUG] [Thread-113088] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:10:53.980 [DEBUG] [Thread-113088] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:10:53.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:10:53.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:10:54.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:10:54.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:10:54.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:10:54.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:10:54.022 [DEBUG] [Thread-113088] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:11:07.165 [DEBUG] [Thread-113090 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:11:12.346 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:11:12.347 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:11:22.225 [DEBUG] [Thread-113091 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:11:24.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:11:24.015 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:11:24.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:11:24.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 11, 17), 31.99, 10.29, 0.0, 9.14, 19.74, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:11:24.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:11:17
2025-11-03T09:11:24.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:11:24.953 [DEBUG] [Thread-113092] [transport.py] [_log()] starting thread (client mode): 0xed40fd0
2025-11-03T09:11:24.954 [DEBUG] [Thread-113092] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:11:24.974 [DEBUG] [Thread-113092] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:11:24.974 [INFO] [Thread-113092] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:11:24.977 [DEBUG] [Thread-113092] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:11:24.977 [DEBUG] [Thread-113092] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:11:24.986 [DEBUG] [Thread-113092] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:11:24.986 [DEBUG] [Thread-113092] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:11:24.986 [DEBUG] [Thread-113092] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:11:24.987 [DEBUG] [Thread-113092] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:11:24.987 [DEBUG] [Thread-113092] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:11:24.987 [DEBUG] [Thread-113092] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:11:24.987 [DEBUG] [Thread-113092] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:11:24.987 [DEBUG] [Thread-113092] [transport.py] [_log()] client lang: <none>
2025-11-03T09:11:24.987 [DEBUG] [Thread-113092] [transport.py] [_log()] server lang: <none>
2025-11-03T09:11:24.987 [DEBUG] [Thread-113092] [transport.py] [_log()] kex follows: False
2025-11-03T09:11:24.987 [DEBUG] [Thread-113092] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:11:24.987 [DEBUG] [Thread-113092] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:11:24.987 [DEBUG] [Thread-113092] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:11:24.987 [DEBUG] [Thread-113092] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:11:24.987 [DEBUG] [Thread-113092] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:11:24.987 [DEBUG] [Thread-113092] [transport.py] [_log()] Compression: none
2025-11-03T09:11:24.987 [DEBUG] [Thread-113092] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:11:25.001 [DEBUG] [Thread-113092] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:11:25.002 [DEBUG] [Thread-113092] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:11:25.002 [DEBUG] [Thread-113092] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:11:25.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:11:25.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:11:25.004 [DEBUG] [Thread-113092] [transport.py] [_log()] userauth is OK
2025-11-03T09:11:25.004 [DEBUG] [Thread-113092] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:11:25.004 [DEBUG] [Thread-113092] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:11:25.004 [DEBUG] [Thread-113092] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:11:25.005 [DEBUG] [Thread-113092] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:11:25.024 [INFO] [Thread-113092] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:11:25.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:11:25.632 [DEBUG] [Thread-113092] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:11:25.632 [DEBUG] [Thread-113092] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:11:25.633 [DEBUG] [Thread-113092] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:11:25.674 [DEBUG] [Thread-113092] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:11:25.674 [DEBUG] [Thread-113092] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:11:25.677 [DEBUG] [Thread-113092] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:11:25.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:11:25.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:11:25.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:11:25.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:11:25.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:11:25.706 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:11:25.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:11:25.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:11:25.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:11:25.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.299400 -999.00  +19.00  12.75     15   -7.50 1 1 1 1 1   888    0 29.92 120.66 ----- 14.5 12.8 53.5 16.2 25.4 -29.2 24.4 -28.4 22.7 -29.2 23.6 -28.9
2025-11-03T09:11:25.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:11:25.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:11:25.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.299400
2025-11-03T09:11:25.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:11:25.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:11:25.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:11:25.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:11:25.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:11:25.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:11:17', tmtdew=31.99, humidity=10.29, cloud=0.0, wind=9.14, temperature=19.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:11:08.160', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:11:25.709 [DEBUG] [Thread-113092] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:11:25.793 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:11:25.806 [DEBUG] [Thread-113095] [transport.py] [_log()] starting thread (client mode): 0xed40c10
2025-11-03T09:11:25.806 [DEBUG] [Thread-113095] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:11:25.821 [DEBUG] [Thread-113095] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:11:25.822 [INFO] [Thread-113095] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:11:25.829 [DEBUG] [Thread-113095] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:11:25.829 [DEBUG] [Thread-113095] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:11:25.830 [DEBUG] [Thread-113095] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:11:25.830 [DEBUG] [Thread-113095] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:11:25.830 [DEBUG] [Thread-113095] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:11:25.830 [DEBUG] [Thread-113095] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:11:25.830 [DEBUG] [Thread-113095] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:11:25.830 [DEBUG] [Thread-113095] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:11:25.830 [DEBUG] [Thread-113095] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:11:25.830 [DEBUG] [Thread-113095] [transport.py] [_log()] client lang: <none>
2025-11-03T09:11:25.830 [DEBUG] [Thread-113095] [transport.py] [_log()] server lang: <none>
2025-11-03T09:11:25.830 [DEBUG] [Thread-113095] [transport.py] [_log()] kex follows: False
2025-11-03T09:11:25.830 [DEBUG] [Thread-113095] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:11:25.830 [DEBUG] [Thread-113095] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:11:25.830 [DEBUG] [Thread-113095] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:11:25.830 [DEBUG] [Thread-113095] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:11:25.830 [DEBUG] [Thread-113095] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:11:25.830 [DEBUG] [Thread-113095] [transport.py] [_log()] Compression: none
2025-11-03T09:11:25.830 [DEBUG] [Thread-113095] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:11:25.889 [DEBUG] [Thread-113095] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:11:25.889 [DEBUG] [Thread-113095] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:11:25.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:11:25.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:11:25.891 [DEBUG] [Thread-113095] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:11:25.945 [DEBUG] [Thread-113095] [transport.py] [_log()] userauth is OK
2025-11-03T09:11:25.945 [DEBUG] [Thread-113095] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:11:25.945 [DEBUG] [Thread-113095] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:11:25.946 [DEBUG] [Thread-113095] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:11:25.946 [DEBUG] [Thread-113095] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:11:25.964 [INFO] [Thread-113095] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:11:25.965 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:11:25.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:11:26.831 [DEBUG] [Thread-113095] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:11:26.831 [DEBUG] [Thread-113095] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:11:26.879 [DEBUG] [Thread-113095] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:11:26.879 [DEBUG] [Thread-113095] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:11:26.888 [DEBUG] [Thread-113095] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:11:26.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:11:26.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:11:26.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:11:26.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:11:26.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:11:26.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:11:26.929 [DEBUG] [Thread-113095] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:11:37.261 [DEBUG] [Thread-113097 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:11:47.049 [DEBUG] [Thread-113098 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:11:52.308 [DEBUG] [Thread-113099 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:11:56.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:11:56.949 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:11:56.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:11:57.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 11, 50), 33.22, 9.32, 0.0, 11.47, 19.84, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:11:57.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:11:50
2025-11-03T09:11:57.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:11:57.926 [DEBUG] [Thread-113100] [transport.py] [_log()] starting thread (client mode): 0x1179a500
2025-11-03T09:11:57.926 [DEBUG] [Thread-113100] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:11:57.946 [DEBUG] [Thread-113100] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:11:57.946 [INFO] [Thread-113100] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:11:57.950 [DEBUG] [Thread-113100] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:11:57.950 [DEBUG] [Thread-113100] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:11:57.950 [DEBUG] [Thread-113100] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:11:57.950 [DEBUG] [Thread-113100] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:11:57.950 [DEBUG] [Thread-113100] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:11:57.950 [DEBUG] [Thread-113100] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:11:57.950 [DEBUG] [Thread-113100] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:11:57.950 [DEBUG] [Thread-113100] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:11:57.950 [DEBUG] [Thread-113100] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:11:57.950 [DEBUG] [Thread-113100] [transport.py] [_log()] client lang: <none>
2025-11-03T09:11:57.950 [DEBUG] [Thread-113100] [transport.py] [_log()] server lang: <none>
2025-11-03T09:11:57.950 [DEBUG] [Thread-113100] [transport.py] [_log()] kex follows: False
2025-11-03T09:11:57.950 [DEBUG] [Thread-113100] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:11:57.950 [DEBUG] [Thread-113100] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:11:57.950 [DEBUG] [Thread-113100] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:11:57.950 [DEBUG] [Thread-113100] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:11:57.950 [DEBUG] [Thread-113100] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:11:57.950 [DEBUG] [Thread-113100] [transport.py] [_log()] Compression: none
2025-11-03T09:11:57.950 [DEBUG] [Thread-113100] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:11:57.958 [DEBUG] [Thread-113100] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:11:57.959 [DEBUG] [Thread-113100] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:11:57.959 [DEBUG] [Thread-113100] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:11:57.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:11:57.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:11:57.960 [DEBUG] [Thread-113100] [transport.py] [_log()] userauth is OK
2025-11-03T09:11:57.960 [DEBUG] [Thread-113100] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:11:57.960 [DEBUG] [Thread-113100] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:11:57.960 [DEBUG] [Thread-113100] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:11:57.961 [DEBUG] [Thread-113100] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:11:57.974 [INFO] [Thread-113100] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:11:57.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:11:58.576 [DEBUG] [Thread-113100] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:11:58.576 [DEBUG] [Thread-113100] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:11:58.577 [DEBUG] [Thread-113100] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:11:58.617 [DEBUG] [Thread-113100] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:11:58.617 [DEBUG] [Thread-113100] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:11:58.620 [DEBUG] [Thread-113100] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:11:58.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:11:58.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:11:58.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:11:58.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:11:58.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:11:58.634 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:11:58.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:11:58.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:11:58.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:11:58.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.299747 -999.00  +18.80  17.58     16   -7.20 1 1 1 1 1   888    0 29.99 128.43 ----- 17.1 17.6 56.0 19.6 25.5 -30.1 24.3 -29.7 22.6 -29.9 23.5 -29.5
2025-11-03T09:11:58.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:11:58.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:11:58.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.299747
2025-11-03T09:11:58.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:11:58.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:11:58.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:11:58.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:11:58.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:11:58.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:11:50', tmtdew=33.22, humidity=9.32, cloud=0.0, wind=11.47, temperature=19.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:11:38.141', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:11:58.638 [DEBUG] [Thread-113100] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:11:58.720 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:11:58.731 [DEBUG] [Thread-113103] [transport.py] [_log()] starting thread (client mode): 0x1179bee0
2025-11-03T09:11:58.731 [DEBUG] [Thread-113103] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:11:58.746 [DEBUG] [Thread-113103] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:11:58.746 [INFO] [Thread-113103] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:11:58.754 [DEBUG] [Thread-113103] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:11:58.754 [DEBUG] [Thread-113103] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:11:58.755 [DEBUG] [Thread-113103] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:11:58.755 [DEBUG] [Thread-113103] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:11:58.755 [DEBUG] [Thread-113103] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:11:58.755 [DEBUG] [Thread-113103] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:11:58.755 [DEBUG] [Thread-113103] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:11:58.755 [DEBUG] [Thread-113103] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:11:58.755 [DEBUG] [Thread-113103] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:11:58.755 [DEBUG] [Thread-113103] [transport.py] [_log()] client lang: <none>
2025-11-03T09:11:58.756 [DEBUG] [Thread-113103] [transport.py] [_log()] server lang: <none>
2025-11-03T09:11:58.756 [DEBUG] [Thread-113103] [transport.py] [_log()] kex follows: False
2025-11-03T09:11:58.756 [DEBUG] [Thread-113103] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:11:58.756 [DEBUG] [Thread-113103] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:11:58.756 [DEBUG] [Thread-113103] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:11:58.756 [DEBUG] [Thread-113103] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:11:58.756 [DEBUG] [Thread-113103] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:11:58.756 [DEBUG] [Thread-113103] [transport.py] [_log()] Compression: none
2025-11-03T09:11:58.757 [DEBUG] [Thread-113103] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:11:58.820 [DEBUG] [Thread-113103] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:11:58.821 [DEBUG] [Thread-113103] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:11:58.822 [DEBUG] [Thread-113103] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:11:58.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:11:58.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:11:58.877 [DEBUG] [Thread-113103] [transport.py] [_log()] userauth is OK
2025-11-03T09:11:58.877 [DEBUG] [Thread-113103] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:11:58.877 [DEBUG] [Thread-113103] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:11:58.878 [DEBUG] [Thread-113103] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:11:58.878 [DEBUG] [Thread-113103] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:11:58.897 [INFO] [Thread-113103] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:11:58.897 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:11:58.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:11:59.754 [DEBUG] [Thread-113103] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:11:59.754 [DEBUG] [Thread-113103] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:11:59.802 [DEBUG] [Thread-113103] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:11:59.802 [DEBUG] [Thread-113103] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:11:59.811 [DEBUG] [Thread-113103] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:11:59.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:11:59.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:11:59.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:11:59.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:11:59.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:11:59.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:11:59.848 [DEBUG] [Thread-113103] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:12:07.339 [DEBUG] [Thread-113105 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:12:12.488 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:12:12.489 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:12:22.389 [DEBUG] [Thread-113106 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:12:29.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:12:29.871 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:12:29.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:12:30.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 12, 22), 33.29, 9.29, 0.0, 11.36, 19.94, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:12:30.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:12:22
2025-11-03T09:12:30.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:12:30.800 [DEBUG] [Thread-113107] [transport.py] [_log()] starting thread (client mode): 0xed077f0
2025-11-03T09:12:30.800 [DEBUG] [Thread-113107] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:12:30.820 [DEBUG] [Thread-113107] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:12:30.820 [INFO] [Thread-113107] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:12:30.823 [DEBUG] [Thread-113107] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:12:30.823 [DEBUG] [Thread-113107] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:12:30.823 [DEBUG] [Thread-113107] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:12:30.823 [DEBUG] [Thread-113107] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:12:30.823 [DEBUG] [Thread-113107] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:12:30.823 [DEBUG] [Thread-113107] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:12:30.823 [DEBUG] [Thread-113107] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:12:30.823 [DEBUG] [Thread-113107] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:12:30.823 [DEBUG] [Thread-113107] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:12:30.824 [DEBUG] [Thread-113107] [transport.py] [_log()] client lang: <none>
2025-11-03T09:12:30.824 [DEBUG] [Thread-113107] [transport.py] [_log()] server lang: <none>
2025-11-03T09:12:30.824 [DEBUG] [Thread-113107] [transport.py] [_log()] kex follows: False
2025-11-03T09:12:30.824 [DEBUG] [Thread-113107] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:12:30.824 [DEBUG] [Thread-113107] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:12:30.824 [DEBUG] [Thread-113107] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:12:30.824 [DEBUG] [Thread-113107] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:12:30.824 [DEBUG] [Thread-113107] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:12:30.824 [DEBUG] [Thread-113107] [transport.py] [_log()] Compression: none
2025-11-03T09:12:30.824 [DEBUG] [Thread-113107] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:12:30.843 [DEBUG] [Thread-113107] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:12:30.844 [DEBUG] [Thread-113107] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:12:30.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:12:30.845 [DEBUG] [Thread-113107] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:12:30.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:12:30.857 [DEBUG] [Thread-113107] [transport.py] [_log()] userauth is OK
2025-11-03T09:12:30.857 [DEBUG] [Thread-113107] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:12:30.857 [DEBUG] [Thread-113107] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:12:30.857 [DEBUG] [Thread-113107] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:12:30.857 [DEBUG] [Thread-113107] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:12:30.886 [INFO] [Thread-113107] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:12:30.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:12:31.517 [DEBUG] [Thread-113107] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:12:31.526 [DEBUG] [Thread-113107] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:12:31.527 [DEBUG] [Thread-113107] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:12:31.558 [DEBUG] [Thread-113107] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:12:31.558 [DEBUG] [Thread-113107] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:12:31.562 [DEBUG] [Thread-113107] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:12:31.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:12:31.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:12:31.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:12:31.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:12:31.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:12:31.580 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:12:31.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:12:31.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:12:31.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:12:31.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.299747 -999.00  +18.80  17.58     16   -7.20 1 1 1 1 1   888    0 29.99 128.43 ----- 17.1 17.6 56.0 19.6 25.5 -30.1 24.3 -29.7 22.6 -29.9 23.5 -29.5
2025-11-03T09:12:31.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:12:31.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:12:31.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.299747
2025-11-03T09:12:31.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:12:31.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:12:31.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:12:31.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:12:31.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:12:31.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:12:22', tmtdew=33.29, humidity=9.29, cloud=0.0, wind=11.36, temperature=19.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:11:38.141', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:12:31.583 [DEBUG] [Thread-113107] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:12:31.666 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:12:31.679 [DEBUG] [Thread-113110] [transport.py] [_log()] starting thread (client mode): 0xed5fee0
2025-11-03T09:12:31.680 [DEBUG] [Thread-113110] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:12:31.695 [DEBUG] [Thread-113110] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:12:31.695 [INFO] [Thread-113110] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:12:31.703 [DEBUG] [Thread-113110] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:12:31.703 [DEBUG] [Thread-113110] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:12:31.703 [DEBUG] [Thread-113110] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:12:31.703 [DEBUG] [Thread-113110] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:12:31.703 [DEBUG] [Thread-113110] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:12:31.703 [DEBUG] [Thread-113110] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:12:31.703 [DEBUG] [Thread-113110] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:12:31.703 [DEBUG] [Thread-113110] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:12:31.703 [DEBUG] [Thread-113110] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:12:31.703 [DEBUG] [Thread-113110] [transport.py] [_log()] client lang: <none>
2025-11-03T09:12:31.703 [DEBUG] [Thread-113110] [transport.py] [_log()] server lang: <none>
2025-11-03T09:12:31.704 [DEBUG] [Thread-113110] [transport.py] [_log()] kex follows: False
2025-11-03T09:12:31.704 [DEBUG] [Thread-113110] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:12:31.704 [DEBUG] [Thread-113110] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:12:31.704 [DEBUG] [Thread-113110] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:12:31.704 [DEBUG] [Thread-113110] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:12:31.704 [DEBUG] [Thread-113110] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:12:31.704 [DEBUG] [Thread-113110] [transport.py] [_log()] Compression: none
2025-11-03T09:12:31.704 [DEBUG] [Thread-113110] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:12:31.761 [DEBUG] [Thread-113110] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:12:31.762 [DEBUG] [Thread-113110] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:12:31.762 [DEBUG] [Thread-113110] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:12:31.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:12:31.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:12:31.820 [DEBUG] [Thread-113110] [transport.py] [_log()] userauth is OK
2025-11-03T09:12:31.821 [DEBUG] [Thread-113110] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:12:31.821 [DEBUG] [Thread-113110] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:12:31.821 [DEBUG] [Thread-113110] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:12:31.821 [DEBUG] [Thread-113110] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:12:31.846 [INFO] [Thread-113110] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:12:31.855 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:12:31.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:12:32.722 [DEBUG] [Thread-113110] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:12:32.723 [DEBUG] [Thread-113110] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:12:32.770 [DEBUG] [Thread-113110] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:12:32.770 [DEBUG] [Thread-113110] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:12:32.779 [DEBUG] [Thread-113110] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:12:32.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:12:32.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:12:32.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:12:32.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:12:32.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:12:32.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:12:32.816 [DEBUG] [Thread-113110] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:12:37.429 [DEBUG] [Thread-113112 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:12:47.108 [DEBUG] [Thread-113113 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:12:52.488 [DEBUG] [Thread-113114 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:13:02.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:13:02.823 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:13:02.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:13:03.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 12, 54), 33.28, 9.3, 0.0, 11.29, 20.01, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:13:03.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:12:54
2025-11-03T09:13:03.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:13:03.773 [DEBUG] [Thread-113115] [transport.py] [_log()] starting thread (client mode): 0xed06dd0
2025-11-03T09:13:03.773 [DEBUG] [Thread-113115] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:13:03.793 [DEBUG] [Thread-113115] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:13:03.794 [INFO] [Thread-113115] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:13:03.796 [DEBUG] [Thread-113115] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:13:03.796 [DEBUG] [Thread-113115] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:13:03.796 [DEBUG] [Thread-113115] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:13:03.796 [DEBUG] [Thread-113115] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:13:03.796 [DEBUG] [Thread-113115] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:13:03.797 [DEBUG] [Thread-113115] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:13:03.797 [DEBUG] [Thread-113115] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:13:03.797 [DEBUG] [Thread-113115] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:13:03.797 [DEBUG] [Thread-113115] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:13:03.797 [DEBUG] [Thread-113115] [transport.py] [_log()] client lang: <none>
2025-11-03T09:13:03.797 [DEBUG] [Thread-113115] [transport.py] [_log()] server lang: <none>
2025-11-03T09:13:03.797 [DEBUG] [Thread-113115] [transport.py] [_log()] kex follows: False
2025-11-03T09:13:03.797 [DEBUG] [Thread-113115] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:13:03.797 [DEBUG] [Thread-113115] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:13:03.797 [DEBUG] [Thread-113115] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:13:03.797 [DEBUG] [Thread-113115] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:13:03.797 [DEBUG] [Thread-113115] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:13:03.797 [DEBUG] [Thread-113115] [transport.py] [_log()] Compression: none
2025-11-03T09:13:03.797 [DEBUG] [Thread-113115] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:13:03.815 [DEBUG] [Thread-113115] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:13:03.815 [DEBUG] [Thread-113115] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:13:03.816 [DEBUG] [Thread-113115] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:13:03.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:13:03.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:13:03.818 [DEBUG] [Thread-113115] [transport.py] [_log()] userauth is OK
2025-11-03T09:13:03.818 [DEBUG] [Thread-113115] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:13:03.819 [DEBUG] [Thread-113115] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:13:03.819 [DEBUG] [Thread-113115] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:13:03.819 [DEBUG] [Thread-113115] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:13:03.855 [INFO] [Thread-113115] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:13:03.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:13:04.503 [DEBUG] [Thread-113115] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:13:04.503 [DEBUG] [Thread-113115] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:13:04.503 [DEBUG] [Thread-113115] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:13:04.545 [DEBUG] [Thread-113115] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:13:04.545 [DEBUG] [Thread-113115] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:13:04.547 [DEBUG] [Thread-113115] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:13:04.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:13:04.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:13:04.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:13:04.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:13:04.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:13:04.563 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:13:04.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:13:04.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:13:04.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:13:04.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.300094 -999.00  +18.70  14.62     16   -7.30 1 1 1 1 1   888    0 28.70 118.66 ----- 13.4 14.6 48.2 20.2 25.4 -30.2 24.4 -29.1 22.7 -28.7 23.6 -28.9
2025-11-03T09:13:04.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:13:04.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:13:04.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.300094
2025-11-03T09:13:04.572 [DEBUG] [Thread-113115] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:13:04.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:13:04.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:13:04.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:13:04.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:13:04.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:13:04.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:12:54', tmtdew=33.28, humidity=9.3, cloud=0.0, wind=11.29, temperature=20.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:12:08.122', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:13:04.645 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:13:04.656 [DEBUG] [Thread-113118] [transport.py] [_log()] starting thread (client mode): 0x117bdae0
2025-11-03T09:13:04.656 [DEBUG] [Thread-113118] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:13:04.671 [DEBUG] [Thread-113118] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:13:04.672 [INFO] [Thread-113118] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:13:04.679 [DEBUG] [Thread-113118] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:13:04.679 [DEBUG] [Thread-113118] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:13:04.679 [DEBUG] [Thread-113118] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:13:04.679 [DEBUG] [Thread-113118] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:13:04.679 [DEBUG] [Thread-113118] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:13:04.679 [DEBUG] [Thread-113118] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:13:04.679 [DEBUG] [Thread-113118] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:13:04.679 [DEBUG] [Thread-113118] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:13:04.679 [DEBUG] [Thread-113118] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:13:04.679 [DEBUG] [Thread-113118] [transport.py] [_log()] client lang: <none>
2025-11-03T09:13:04.679 [DEBUG] [Thread-113118] [transport.py] [_log()] server lang: <none>
2025-11-03T09:13:04.679 [DEBUG] [Thread-113118] [transport.py] [_log()] kex follows: False
2025-11-03T09:13:04.679 [DEBUG] [Thread-113118] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:13:04.679 [DEBUG] [Thread-113118] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:13:04.679 [DEBUG] [Thread-113118] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:13:04.679 [DEBUG] [Thread-113118] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:13:04.679 [DEBUG] [Thread-113118] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:13:04.679 [DEBUG] [Thread-113118] [transport.py] [_log()] Compression: none
2025-11-03T09:13:04.679 [DEBUG] [Thread-113118] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:13:04.735 [DEBUG] [Thread-113118] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:13:04.735 [DEBUG] [Thread-113118] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:13:04.735 [DEBUG] [Thread-113118] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:13:04.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:13:04.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:13:04.792 [DEBUG] [Thread-113118] [transport.py] [_log()] userauth is OK
2025-11-03T09:13:04.792 [DEBUG] [Thread-113118] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:13:04.792 [DEBUG] [Thread-113118] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:13:04.792 [DEBUG] [Thread-113118] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:13:04.792 [DEBUG] [Thread-113118] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:13:04.806 [INFO] [Thread-113118] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:13:04.806 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:13:04.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:13:05.669 [DEBUG] [Thread-113118] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:13:05.670 [DEBUG] [Thread-113118] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:13:05.718 [DEBUG] [Thread-113118] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:13:05.718 [DEBUG] [Thread-113118] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:13:05.727 [DEBUG] [Thread-113118] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:13:05.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:13:05.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:13:05.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:13:05.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:13:05.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:13:05.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:13:05.783 [DEBUG] [Thread-113118] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:13:07.522 [DEBUG] [Thread-113120 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:13:12.630 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:13:12.632 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:13:22.573 [DEBUG] [Thread-113121 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:13:35.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:13:35.801 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:13:35.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:13:36.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 13, 26), 32.26, 10.32, 0.0, 6.16, 19.56, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:13:36.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:13:26
2025-11-03T09:13:36.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:13:36.709 [DEBUG] [Thread-113122] [transport.py] [_log()] starting thread (client mode): 0x1179b3a0
2025-11-03T09:13:36.709 [DEBUG] [Thread-113122] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:13:36.732 [DEBUG] [Thread-113122] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:13:36.732 [INFO] [Thread-113122] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:13:36.741 [DEBUG] [Thread-113122] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:13:36.741 [DEBUG] [Thread-113122] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:13:36.741 [DEBUG] [Thread-113122] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:13:36.741 [DEBUG] [Thread-113122] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:13:36.741 [DEBUG] [Thread-113122] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:13:36.741 [DEBUG] [Thread-113122] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:13:36.741 [DEBUG] [Thread-113122] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:13:36.741 [DEBUG] [Thread-113122] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:13:36.741 [DEBUG] [Thread-113122] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:13:36.741 [DEBUG] [Thread-113122] [transport.py] [_log()] client lang: <none>
2025-11-03T09:13:36.741 [DEBUG] [Thread-113122] [transport.py] [_log()] server lang: <none>
2025-11-03T09:13:36.741 [DEBUG] [Thread-113122] [transport.py] [_log()] kex follows: False
2025-11-03T09:13:36.741 [DEBUG] [Thread-113122] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:13:36.741 [DEBUG] [Thread-113122] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:13:36.741 [DEBUG] [Thread-113122] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:13:36.741 [DEBUG] [Thread-113122] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:13:36.741 [DEBUG] [Thread-113122] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:13:36.741 [DEBUG] [Thread-113122] [transport.py] [_log()] Compression: none
2025-11-03T09:13:36.741 [DEBUG] [Thread-113122] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:13:36.757 [DEBUG] [Thread-113122] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:13:36.757 [DEBUG] [Thread-113122] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:13:36.757 [DEBUG] [Thread-113122] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:13:36.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:13:36.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:13:36.758 [DEBUG] [Thread-113122] [transport.py] [_log()] userauth is OK
2025-11-03T09:13:36.758 [DEBUG] [Thread-113122] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:13:36.758 [DEBUG] [Thread-113122] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:13:36.758 [DEBUG] [Thread-113122] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:13:36.758 [DEBUG] [Thread-113122] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:13:36.785 [INFO] [Thread-113122] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:13:36.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:13:37.458 [DEBUG] [Thread-113122] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:13:37.458 [DEBUG] [Thread-113122] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:13:37.458 [DEBUG] [Thread-113122] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:13:37.498 [DEBUG] [Thread-113122] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:13:37.499 [DEBUG] [Thread-113122] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:13:37.501 [DEBUG] [Thread-113122] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:13:37.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:13:37.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:13:37.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:13:37.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:13:37.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:13:37.519 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:13:37.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:13:37.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:13:37.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:13:37.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.300441 -999.00  +18.70   7.42     16   -7.00 1 1 1 1 1   888    0 29.14 117.34 ----- 7.9 7.4 66.2 13.2 25.5 -29.2 24.4 -28.5 22.7 -29.6 23.6 -29.0
2025-11-03T09:13:37.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:13:37.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:13:37.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.300441
2025-11-03T09:13:37.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:13:37.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:13:37.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:13:37.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:13:37.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:13:37.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:13:26', tmtdew=32.26, humidity=10.32, cloud=0.0, wind=6.16, temperature=19.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:12:38.102', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:13:37.520 [DEBUG] [Thread-113122] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:13:37.594 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:13:37.605 [DEBUG] [Thread-113125] [transport.py] [_log()] starting thread (client mode): 0xed2ddb0
2025-11-03T09:13:37.606 [DEBUG] [Thread-113125] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:13:37.613 [DEBUG] [Thread-113126 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:13:37.621 [DEBUG] [Thread-113125] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:13:37.621 [INFO] [Thread-113125] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:13:37.629 [DEBUG] [Thread-113125] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:13:37.629 [DEBUG] [Thread-113125] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:13:37.630 [DEBUG] [Thread-113125] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:13:37.630 [DEBUG] [Thread-113125] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:13:37.630 [DEBUG] [Thread-113125] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:13:37.630 [DEBUG] [Thread-113125] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:13:37.630 [DEBUG] [Thread-113125] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:13:37.630 [DEBUG] [Thread-113125] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:13:37.630 [DEBUG] [Thread-113125] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:13:37.630 [DEBUG] [Thread-113125] [transport.py] [_log()] client lang: <none>
2025-11-03T09:13:37.630 [DEBUG] [Thread-113125] [transport.py] [_log()] server lang: <none>
2025-11-03T09:13:37.631 [DEBUG] [Thread-113125] [transport.py] [_log()] kex follows: False
2025-11-03T09:13:37.631 [DEBUG] [Thread-113125] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:13:37.631 [DEBUG] [Thread-113125] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:13:37.631 [DEBUG] [Thread-113125] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:13:37.631 [DEBUG] [Thread-113125] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:13:37.631 [DEBUG] [Thread-113125] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:13:37.631 [DEBUG] [Thread-113125] [transport.py] [_log()] Compression: none
2025-11-03T09:13:37.631 [DEBUG] [Thread-113125] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:13:37.693 [DEBUG] [Thread-113125] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:13:37.694 [DEBUG] [Thread-113125] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:13:37.694 [DEBUG] [Thread-113125] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:13:37.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:13:37.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:13:37.753 [DEBUG] [Thread-113125] [transport.py] [_log()] userauth is OK
2025-11-03T09:13:37.753 [DEBUG] [Thread-113125] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:13:37.753 [DEBUG] [Thread-113125] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:13:37.753 [DEBUG] [Thread-113125] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:13:37.754 [DEBUG] [Thread-113125] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:13:37.773 [INFO] [Thread-113125] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:13:37.774 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:13:37.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:13:38.647 [DEBUG] [Thread-113125] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:13:38.648 [DEBUG] [Thread-113125] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:13:38.697 [DEBUG] [Thread-113125] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:13:38.697 [DEBUG] [Thread-113125] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:13:38.707 [DEBUG] [Thread-113125] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:13:38.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:13:38.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:13:38.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:13:38.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:13:38.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:13:38.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:13:38.745 [DEBUG] [Thread-113125] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:13:47.181 [DEBUG] [Thread-113128 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:13:52.660 [DEBUG] [Thread-113129 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:14:07.699 [DEBUG] [Thread-113130 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:14:08.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:14:08.768 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:14:08.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:14:09.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 13, 59), 32.23, 10.34, 0.0, 6.02, 19.52, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:14:09.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:13:59
2025-11-03T09:14:09.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:14:09.740 [DEBUG] [Thread-113131] [transport.py] [_log()] starting thread (client mode): 0x11798a60
2025-11-03T09:14:09.741 [DEBUG] [Thread-113131] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:14:09.761 [DEBUG] [Thread-113131] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:14:09.761 [INFO] [Thread-113131] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:14:09.762 [DEBUG] [Thread-113131] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:14:09.762 [DEBUG] [Thread-113131] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:14:09.762 [DEBUG] [Thread-113131] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:14:09.762 [DEBUG] [Thread-113131] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:14:09.762 [DEBUG] [Thread-113131] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:14:09.762 [DEBUG] [Thread-113131] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:14:09.762 [DEBUG] [Thread-113131] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:14:09.762 [DEBUG] [Thread-113131] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:14:09.762 [DEBUG] [Thread-113131] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:14:09.762 [DEBUG] [Thread-113131] [transport.py] [_log()] client lang: <none>
2025-11-03T09:14:09.762 [DEBUG] [Thread-113131] [transport.py] [_log()] server lang: <none>
2025-11-03T09:14:09.762 [DEBUG] [Thread-113131] [transport.py] [_log()] kex follows: False
2025-11-03T09:14:09.762 [DEBUG] [Thread-113131] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:14:09.762 [DEBUG] [Thread-113131] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:14:09.763 [DEBUG] [Thread-113131] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:14:09.763 [DEBUG] [Thread-113131] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:14:09.763 [DEBUG] [Thread-113131] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:14:09.763 [DEBUG] [Thread-113131] [transport.py] [_log()] Compression: none
2025-11-03T09:14:09.763 [DEBUG] [Thread-113131] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:14:09.776 [DEBUG] [Thread-113131] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:14:09.777 [DEBUG] [Thread-113131] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:14:09.777 [DEBUG] [Thread-113131] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:14:09.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:14:09.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:14:09.779 [DEBUG] [Thread-113131] [transport.py] [_log()] userauth is OK
2025-11-03T09:14:09.779 [DEBUG] [Thread-113131] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:14:09.780 [DEBUG] [Thread-113131] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:14:09.780 [DEBUG] [Thread-113131] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:14:09.780 [DEBUG] [Thread-113131] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:14:09.798 [INFO] [Thread-113131] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:14:09.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:14:10.431 [DEBUG] [Thread-113131] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:14:10.431 [DEBUG] [Thread-113131] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:14:10.431 [DEBUG] [Thread-113131] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:14:10.471 [DEBUG] [Thread-113131] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:14:10.471 [DEBUG] [Thread-113131] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:14:10.474 [DEBUG] [Thread-113131] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:14:10.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:14:10.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:14:10.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:14:10.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:14:10.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:14:10.492 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:14:10.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:14:10.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:14:10.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:14:10.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.301136 -999.00  +18.90  11.02     14   -8.40 1 1 1 1 1   888    0 29.32 112.31 ----- 11.2 11.0 20.2 14.0 25.6 -29.1 24.6 -28.7 22.9 -29.0 23.7 -28.9
2025-11-03T09:14:10.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:14:10.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:14:10.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.301136
2025-11-03T09:14:10.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:14:10.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:14:10.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:14:10.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:14:10.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:14:10.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:13:59', tmtdew=32.23, humidity=10.34, cloud=0.0, wind=6.02, temperature=19.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:13:38.150', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:14:10.493 [DEBUG] [Thread-113131] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:14:10.568 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:14:10.581 [DEBUG] [Thread-113134] [transport.py] [_log()] starting thread (client mode): 0x117bdae0
2025-11-03T09:14:10.581 [DEBUG] [Thread-113134] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:14:10.596 [DEBUG] [Thread-113134] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:14:10.596 [INFO] [Thread-113134] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:14:10.604 [DEBUG] [Thread-113134] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:14:10.604 [DEBUG] [Thread-113134] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:14:10.604 [DEBUG] [Thread-113134] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:14:10.604 [DEBUG] [Thread-113134] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:14:10.604 [DEBUG] [Thread-113134] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:14:10.604 [DEBUG] [Thread-113134] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:14:10.604 [DEBUG] [Thread-113134] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:14:10.604 [DEBUG] [Thread-113134] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:14:10.604 [DEBUG] [Thread-113134] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:14:10.604 [DEBUG] [Thread-113134] [transport.py] [_log()] client lang: <none>
2025-11-03T09:14:10.604 [DEBUG] [Thread-113134] [transport.py] [_log()] server lang: <none>
2025-11-03T09:14:10.604 [DEBUG] [Thread-113134] [transport.py] [_log()] kex follows: False
2025-11-03T09:14:10.604 [DEBUG] [Thread-113134] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:14:10.604 [DEBUG] [Thread-113134] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:14:10.604 [DEBUG] [Thread-113134] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:14:10.604 [DEBUG] [Thread-113134] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:14:10.604 [DEBUG] [Thread-113134] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:14:10.604 [DEBUG] [Thread-113134] [transport.py] [_log()] Compression: none
2025-11-03T09:14:10.604 [DEBUG] [Thread-113134] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:14:10.659 [DEBUG] [Thread-113134] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:14:10.659 [DEBUG] [Thread-113134] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:14:10.659 [DEBUG] [Thread-113134] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:14:10.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:14:10.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:14:10.722 [DEBUG] [Thread-113134] [transport.py] [_log()] userauth is OK
2025-11-03T09:14:10.722 [DEBUG] [Thread-113134] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:14:10.722 [DEBUG] [Thread-113134] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:14:10.722 [DEBUG] [Thread-113134] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:14:10.723 [DEBUG] [Thread-113134] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:14:10.737 [INFO] [Thread-113134] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:14:10.737 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:14:10.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:14:11.588 [DEBUG] [Thread-113134] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:14:11.588 [DEBUG] [Thread-113134] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:14:11.639 [DEBUG] [Thread-113134] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:14:11.639 [DEBUG] [Thread-113134] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:14:11.650 [DEBUG] [Thread-113134] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:14:11.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:14:11.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:14:11.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:14:11.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:14:11.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:14:11.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:14:11.693 [DEBUG] [Thread-113134] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:14:12.773 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:14:12.773 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:14:22.731 [DEBUG] [Thread-113136 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:14:37.782 [DEBUG] [Thread-113137 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:14:41.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:14:41.712 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:14:41.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:14:42.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 14, 31), 32.79, 9.92, 0.0, 9.58, 19.72, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:14:42.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:14:31
2025-11-03T09:14:42.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:14:42.623 [DEBUG] [Thread-113138] [transport.py] [_log()] starting thread (client mode): 0xed05ae0
2025-11-03T09:14:42.623 [DEBUG] [Thread-113138] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:14:42.642 [DEBUG] [Thread-113138] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:14:42.643 [INFO] [Thread-113138] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:14:42.645 [DEBUG] [Thread-113138] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:14:42.645 [DEBUG] [Thread-113138] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:14:42.645 [DEBUG] [Thread-113138] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:14:42.645 [DEBUG] [Thread-113138] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:14:42.645 [DEBUG] [Thread-113138] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:14:42.645 [DEBUG] [Thread-113138] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:14:42.645 [DEBUG] [Thread-113138] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:14:42.645 [DEBUG] [Thread-113138] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:14:42.645 [DEBUG] [Thread-113138] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:14:42.645 [DEBUG] [Thread-113138] [transport.py] [_log()] client lang: <none>
2025-11-03T09:14:42.645 [DEBUG] [Thread-113138] [transport.py] [_log()] server lang: <none>
2025-11-03T09:14:42.645 [DEBUG] [Thread-113138] [transport.py] [_log()] kex follows: False
2025-11-03T09:14:42.645 [DEBUG] [Thread-113138] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:14:42.645 [DEBUG] [Thread-113138] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:14:42.646 [DEBUG] [Thread-113138] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:14:42.646 [DEBUG] [Thread-113138] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:14:42.646 [DEBUG] [Thread-113138] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:14:42.646 [DEBUG] [Thread-113138] [transport.py] [_log()] Compression: none
2025-11-03T09:14:42.646 [DEBUG] [Thread-113138] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:14:42.664 [DEBUG] [Thread-113138] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:14:42.664 [DEBUG] [Thread-113138] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:14:42.665 [DEBUG] [Thread-113138] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:14:42.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:14:42.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:14:42.667 [DEBUG] [Thread-113138] [transport.py] [_log()] userauth is OK
2025-11-03T09:14:42.667 [DEBUG] [Thread-113138] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:14:42.667 [DEBUG] [Thread-113138] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:14:42.667 [DEBUG] [Thread-113138] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:14:42.667 [DEBUG] [Thread-113138] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:14:42.686 [INFO] [Thread-113138] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:14:42.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:14:43.309 [DEBUG] [Thread-113138] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:14:43.309 [DEBUG] [Thread-113138] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:14:43.309 [DEBUG] [Thread-113138] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:14:43.350 [DEBUG] [Thread-113138] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:14:43.350 [DEBUG] [Thread-113138] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:14:43.354 [DEBUG] [Thread-113138] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:14:43.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:14:43.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:14:43.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:14:43.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:14:43.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:14:43.379 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:14:43.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:14:43.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:14:43.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:14:43.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.301483 -999.00  +19.20  11.57     14   -8.10 1 1 1 1 1   888    0 29.69 115.84 ----- 15.2 11.6 17.0 15.1 25.7 -29.5 24.7 -28.2 23.0 -28.8 23.7 -29.4
2025-11-03T09:14:43.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:14:43.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:14:43.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.301483
2025-11-03T09:14:43.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:14:43.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:14:43.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:14:43.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:14:43.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:14:43.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:14:31', tmtdew=32.79, humidity=9.92, cloud=0.0, wind=9.58, temperature=19.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:14:08.131', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:14:43.382 [DEBUG] [Thread-113138] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:14:43.465 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:14:43.481 [DEBUG] [Thread-113141] [transport.py] [_log()] starting thread (client mode): 0x117bc8b0
2025-11-03T09:14:43.481 [DEBUG] [Thread-113141] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:14:43.498 [DEBUG] [Thread-113141] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:14:43.498 [INFO] [Thread-113141] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:14:43.508 [DEBUG] [Thread-113141] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:14:43.509 [DEBUG] [Thread-113141] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:14:43.509 [DEBUG] [Thread-113141] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:14:43.509 [DEBUG] [Thread-113141] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:14:43.509 [DEBUG] [Thread-113141] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:14:43.509 [DEBUG] [Thread-113141] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:14:43.509 [DEBUG] [Thread-113141] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:14:43.509 [DEBUG] [Thread-113141] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:14:43.509 [DEBUG] [Thread-113141] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:14:43.509 [DEBUG] [Thread-113141] [transport.py] [_log()] client lang: <none>
2025-11-03T09:14:43.509 [DEBUG] [Thread-113141] [transport.py] [_log()] server lang: <none>
2025-11-03T09:14:43.509 [DEBUG] [Thread-113141] [transport.py] [_log()] kex follows: False
2025-11-03T09:14:43.510 [DEBUG] [Thread-113141] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:14:43.510 [DEBUG] [Thread-113141] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:14:43.510 [DEBUG] [Thread-113141] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:14:43.510 [DEBUG] [Thread-113141] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:14:43.510 [DEBUG] [Thread-113141] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:14:43.510 [DEBUG] [Thread-113141] [transport.py] [_log()] Compression: none
2025-11-03T09:14:43.510 [DEBUG] [Thread-113141] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:14:43.569 [DEBUG] [Thread-113141] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:14:43.570 [DEBUG] [Thread-113141] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:14:43.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:14:43.571 [DEBUG] [Thread-113141] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:14:43.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:14:43.629 [DEBUG] [Thread-113141] [transport.py] [_log()] userauth is OK
2025-11-03T09:14:43.629 [DEBUG] [Thread-113141] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:14:43.629 [DEBUG] [Thread-113141] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:14:43.629 [DEBUG] [Thread-113141] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:14:43.629 [DEBUG] [Thread-113141] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:14:43.652 [INFO] [Thread-113141] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:14:43.652 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:14:43.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:14:44.515 [DEBUG] [Thread-113141] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:14:44.515 [DEBUG] [Thread-113141] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:14:44.566 [DEBUG] [Thread-113141] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:14:44.566 [DEBUG] [Thread-113141] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:14:44.579 [DEBUG] [Thread-113141] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:14:44.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:14:44.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:14:44.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:14:44.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:14:44.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:14:44.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:14:44.615 [DEBUG] [Thread-113141] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:14:47.246 [DEBUG] [Thread-113143 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:14:52.814 [DEBUG] [Thread-113144 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:15:07.867 [DEBUG] [Thread-113145 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:15:12.915 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:15:12.916 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:15:14.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:15:14.636 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:15:14.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:15:15.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 15, 3), 33.61, 9.32, 0.0, 9.74, 19.82, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:15:15.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:15:03
2025-11-03T09:15:15.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:15:15.573 [DEBUG] [Thread-113146] [transport.py] [_log()] starting thread (client mode): 0x1179a890
2025-11-03T09:15:15.573 [DEBUG] [Thread-113146] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:15:15.587 [DEBUG] [Thread-113146] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:15:15.587 [INFO] [Thread-113146] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:15:15.588 [DEBUG] [Thread-113146] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:15:15.588 [DEBUG] [Thread-113146] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:15:15.589 [DEBUG] [Thread-113146] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:15:15.589 [DEBUG] [Thread-113146] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:15:15.589 [DEBUG] [Thread-113146] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:15:15.589 [DEBUG] [Thread-113146] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:15:15.589 [DEBUG] [Thread-113146] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:15:15.589 [DEBUG] [Thread-113146] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:15:15.589 [DEBUG] [Thread-113146] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:15:15.589 [DEBUG] [Thread-113146] [transport.py] [_log()] client lang: <none>
2025-11-03T09:15:15.589 [DEBUG] [Thread-113146] [transport.py] [_log()] server lang: <none>
2025-11-03T09:15:15.589 [DEBUG] [Thread-113146] [transport.py] [_log()] kex follows: False
2025-11-03T09:15:15.589 [DEBUG] [Thread-113146] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:15:15.589 [DEBUG] [Thread-113146] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:15:15.589 [DEBUG] [Thread-113146] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:15:15.589 [DEBUG] [Thread-113146] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:15:15.589 [DEBUG] [Thread-113146] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:15:15.589 [DEBUG] [Thread-113146] [transport.py] [_log()] Compression: none
2025-11-03T09:15:15.589 [DEBUG] [Thread-113146] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:15:15.604 [DEBUG] [Thread-113146] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:15:15.604 [DEBUG] [Thread-113146] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:15:15.605 [DEBUG] [Thread-113146] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:15:15.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:15:15.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:15:15.606 [DEBUG] [Thread-113146] [transport.py] [_log()] userauth is OK
2025-11-03T09:15:15.607 [DEBUG] [Thread-113146] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:15:15.607 [DEBUG] [Thread-113146] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:15:15.607 [DEBUG] [Thread-113146] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:15:15.607 [DEBUG] [Thread-113146] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:15:15.642 [INFO] [Thread-113146] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:15:15.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:15:16.324 [DEBUG] [Thread-113146] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:15:16.333 [DEBUG] [Thread-113146] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:15:16.334 [DEBUG] [Thread-113146] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:15:16.365 [DEBUG] [Thread-113146] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:15:16.365 [DEBUG] [Thread-113146] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:15:16.369 [DEBUG] [Thread-113146] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:15:16.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:15:16.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:15:16.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:15:16.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:15:16.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:15:16.393 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:15:16.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:15:16.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:15:16.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:15:16.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.301830 -999.00  +19.20  13.28     15   -7.40 1 1 1 1 1   888    0 29.49 107.20 ----- 12.8 13.3 46.2 16.9 25.8 -29.6 24.7 -28.8 23.0 -29.2 23.9 -29.0
2025-11-03T09:15:16.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:15:16.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:15:16.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.301830
2025-11-03T09:15:16.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:15:16.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:15:16.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:15:16.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:15:16.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:15:16.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:15:03', tmtdew=33.61, humidity=9.32, cloud=0.0, wind=9.74, temperature=19.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:14:38.112', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:15:16.397 [DEBUG] [Thread-113146] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:15:16.479 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:15:16.492 [DEBUG] [Thread-113149] [transport.py] [_log()] starting thread (client mode): 0xed2fc70
2025-11-03T09:15:16.492 [DEBUG] [Thread-113149] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:15:16.509 [DEBUG] [Thread-113149] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:15:16.509 [INFO] [Thread-113149] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:15:16.517 [DEBUG] [Thread-113149] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:15:16.517 [DEBUG] [Thread-113149] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:15:16.518 [DEBUG] [Thread-113149] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:15:16.518 [DEBUG] [Thread-113149] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:15:16.518 [DEBUG] [Thread-113149] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:15:16.518 [DEBUG] [Thread-113149] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:15:16.518 [DEBUG] [Thread-113149] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:15:16.518 [DEBUG] [Thread-113149] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:15:16.518 [DEBUG] [Thread-113149] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:15:16.518 [DEBUG] [Thread-113149] [transport.py] [_log()] client lang: <none>
2025-11-03T09:15:16.518 [DEBUG] [Thread-113149] [transport.py] [_log()] server lang: <none>
2025-11-03T09:15:16.518 [DEBUG] [Thread-113149] [transport.py] [_log()] kex follows: False
2025-11-03T09:15:16.518 [DEBUG] [Thread-113149] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:15:16.518 [DEBUG] [Thread-113149] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:15:16.518 [DEBUG] [Thread-113149] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:15:16.518 [DEBUG] [Thread-113149] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:15:16.518 [DEBUG] [Thread-113149] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:15:16.518 [DEBUG] [Thread-113149] [transport.py] [_log()] Compression: none
2025-11-03T09:15:16.519 [DEBUG] [Thread-113149] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:15:16.576 [DEBUG] [Thread-113149] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:15:16.577 [DEBUG] [Thread-113149] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:15:16.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:15:16.578 [DEBUG] [Thread-113149] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:15:16.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:15:16.632 [DEBUG] [Thread-113149] [transport.py] [_log()] userauth is OK
2025-11-03T09:15:16.633 [DEBUG] [Thread-113149] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:15:16.633 [DEBUG] [Thread-113149] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:15:16.633 [DEBUG] [Thread-113149] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:15:16.633 [DEBUG] [Thread-113149] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:15:16.652 [INFO] [Thread-113149] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:15:16.653 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:15:16.654 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:15:17.591 [DEBUG] [Thread-113149] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:15:17.591 [DEBUG] [Thread-113149] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:15:17.640 [DEBUG] [Thread-113149] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:15:17.640 [DEBUG] [Thread-113149] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:15:17.650 [DEBUG] [Thread-113149] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:15:17.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:15:17.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:15:17.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:15:17.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:15:17.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:15:17.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:15:17.686 [DEBUG] [Thread-113149] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:15:22.907 [DEBUG] [Thread-113151 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:15:37.962 [DEBUG] [Thread-113152 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:15:47.310 [DEBUG] [Thread-113153 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:15:47.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:15:47.709 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:15:47.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:15:48.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 15, 35), 33.16, 9.66, 0.0, 11.96, 20.02, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:15:48.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:15:35
2025-11-03T09:15:48.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:15:48.674 [DEBUG] [Thread-113154] [transport.py] [_log()] starting thread (client mode): 0x117bce20
2025-11-03T09:15:48.674 [DEBUG] [Thread-113154] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:15:48.696 [DEBUG] [Thread-113154] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:15:48.696 [INFO] [Thread-113154] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:15:48.699 [DEBUG] [Thread-113154] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:15:48.700 [DEBUG] [Thread-113154] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:15:48.700 [DEBUG] [Thread-113154] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:15:48.700 [DEBUG] [Thread-113154] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:15:48.700 [DEBUG] [Thread-113154] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:15:48.700 [DEBUG] [Thread-113154] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:15:48.700 [DEBUG] [Thread-113154] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:15:48.700 [DEBUG] [Thread-113154] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:15:48.700 [DEBUG] [Thread-113154] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:15:48.700 [DEBUG] [Thread-113154] [transport.py] [_log()] client lang: <none>
2025-11-03T09:15:48.700 [DEBUG] [Thread-113154] [transport.py] [_log()] server lang: <none>
2025-11-03T09:15:48.700 [DEBUG] [Thread-113154] [transport.py] [_log()] kex follows: False
2025-11-03T09:15:48.700 [DEBUG] [Thread-113154] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:15:48.701 [DEBUG] [Thread-113154] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:15:48.701 [DEBUG] [Thread-113154] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:15:48.701 [DEBUG] [Thread-113154] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:15:48.701 [DEBUG] [Thread-113154] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:15:48.701 [DEBUG] [Thread-113154] [transport.py] [_log()] Compression: none
2025-11-03T09:15:48.701 [DEBUG] [Thread-113154] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:15:48.730 [DEBUG] [Thread-113154] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:15:48.730 [DEBUG] [Thread-113154] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:15:48.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:15:48.732 [DEBUG] [Thread-113154] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:15:48.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:15:48.734 [DEBUG] [Thread-113154] [transport.py] [_log()] userauth is OK
2025-11-03T09:15:48.734 [DEBUG] [Thread-113154] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:15:48.734 [DEBUG] [Thread-113154] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:15:48.734 [DEBUG] [Thread-113154] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:15:48.734 [DEBUG] [Thread-113154] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:15:48.760 [INFO] [Thread-113154] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:15:48.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:15:49.414 [DEBUG] [Thread-113154] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:15:49.414 [DEBUG] [Thread-113154] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:15:49.415 [DEBUG] [Thread-113154] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:15:49.456 [DEBUG] [Thread-113154] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:15:49.456 [DEBUG] [Thread-113154] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:15:49.459 [DEBUG] [Thread-113154] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:15:49.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:15:49.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:15:49.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:15:49.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:15:49.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:15:49.484 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:15:49.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:15:49.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:15:49.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:15:49.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.302177 -999.00  +19.00  17.36     15   -8.00 1 1 1 1 1   888    0 29.06 103.17 ----- 14.6 17.4 46.0 22.6 25.8 -29.7 24.6 -29.5 23.0 -30.7 23.8 -29.1
2025-11-03T09:15:49.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:15:49.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:15:49.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.302177
2025-11-03T09:15:49.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:15:49.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:15:49.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:15:49.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:15:49.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:15:49.486 [DEBUG] [Thread-113154] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:15:49.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:15:35', tmtdew=33.16, humidity=9.66, cloud=0.0, wind=11.96, temperature=20.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:15:08.093', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:15:49.570 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:15:49.584 [DEBUG] [Thread-113157] [transport.py] [_log()] starting thread (client mode): 0xed2c340
2025-11-03T09:15:49.584 [DEBUG] [Thread-113157] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:15:49.600 [DEBUG] [Thread-113157] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:15:49.600 [INFO] [Thread-113157] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:15:49.611 [DEBUG] [Thread-113157] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:15:49.612 [DEBUG] [Thread-113157] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:15:49.612 [DEBUG] [Thread-113157] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:15:49.612 [DEBUG] [Thread-113157] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:15:49.612 [DEBUG] [Thread-113157] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:15:49.612 [DEBUG] [Thread-113157] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:15:49.612 [DEBUG] [Thread-113157] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:15:49.612 [DEBUG] [Thread-113157] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:15:49.613 [DEBUG] [Thread-113157] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:15:49.613 [DEBUG] [Thread-113157] [transport.py] [_log()] client lang: <none>
2025-11-03T09:15:49.613 [DEBUG] [Thread-113157] [transport.py] [_log()] server lang: <none>
2025-11-03T09:15:49.613 [DEBUG] [Thread-113157] [transport.py] [_log()] kex follows: False
2025-11-03T09:15:49.613 [DEBUG] [Thread-113157] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:15:49.613 [DEBUG] [Thread-113157] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:15:49.613 [DEBUG] [Thread-113157] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:15:49.614 [DEBUG] [Thread-113157] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:15:49.614 [DEBUG] [Thread-113157] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:15:49.614 [DEBUG] [Thread-113157] [transport.py] [_log()] Compression: none
2025-11-03T09:15:49.614 [DEBUG] [Thread-113157] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:15:49.677 [DEBUG] [Thread-113157] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:15:49.678 [DEBUG] [Thread-113157] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:15:49.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:15:49.679 [DEBUG] [Thread-113157] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:15:49.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:15:49.736 [DEBUG] [Thread-113157] [transport.py] [_log()] userauth is OK
2025-11-03T09:15:49.737 [DEBUG] [Thread-113157] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:15:49.737 [DEBUG] [Thread-113157] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:15:49.737 [DEBUG] [Thread-113157] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:15:49.737 [DEBUG] [Thread-113157] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:15:49.756 [INFO] [Thread-113157] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:15:49.757 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:15:49.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:15:50.649 [DEBUG] [Thread-113157] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:15:50.649 [DEBUG] [Thread-113157] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:15:50.697 [DEBUG] [Thread-113157] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:15:50.697 [DEBUG] [Thread-113157] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:15:50.706 [DEBUG] [Thread-113157] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:15:50.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:15:50.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:15:50.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:15:50.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:15:50.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:15:50.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:15:50.743 [DEBUG] [Thread-113157] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:15:52.995 [DEBUG] [Thread-113159 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:16:08.044 [DEBUG] [Thread-113160 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:16:13.055 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:16:13.056 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:16:20.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:16:20.766 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:16:20.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:16:21.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 16, 8), 33.04, 9.77, 0.0, 14.42, 20.12, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:16:21.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:16:08
2025-11-03T09:16:21.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:16:21.702 [DEBUG] [Thread-113161] [transport.py] [_log()] starting thread (client mode): 0x81d9120
2025-11-03T09:16:21.711 [DEBUG] [Thread-113161] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:16:21.721 [DEBUG] [Thread-113161] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:16:21.721 [INFO] [Thread-113161] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:16:21.723 [DEBUG] [Thread-113161] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:16:21.723 [DEBUG] [Thread-113161] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:16:21.723 [DEBUG] [Thread-113161] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:16:21.723 [DEBUG] [Thread-113161] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:16:21.723 [DEBUG] [Thread-113161] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:16:21.723 [DEBUG] [Thread-113161] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:16:21.723 [DEBUG] [Thread-113161] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:16:21.723 [DEBUG] [Thread-113161] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:16:21.723 [DEBUG] [Thread-113161] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:16:21.723 [DEBUG] [Thread-113161] [transport.py] [_log()] client lang: <none>
2025-11-03T09:16:21.723 [DEBUG] [Thread-113161] [transport.py] [_log()] server lang: <none>
2025-11-03T09:16:21.723 [DEBUG] [Thread-113161] [transport.py] [_log()] kex follows: False
2025-11-03T09:16:21.723 [DEBUG] [Thread-113161] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:16:21.724 [DEBUG] [Thread-113161] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:16:21.724 [DEBUG] [Thread-113161] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:16:21.724 [DEBUG] [Thread-113161] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:16:21.724 [DEBUG] [Thread-113161] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:16:21.724 [DEBUG] [Thread-113161] [transport.py] [_log()] Compression: none
2025-11-03T09:16:21.724 [DEBUG] [Thread-113161] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:16:21.737 [DEBUG] [Thread-113161] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:16:21.737 [DEBUG] [Thread-113161] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:16:21.737 [DEBUG] [Thread-113161] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:16:21.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:16:21.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:16:21.738 [DEBUG] [Thread-113161] [transport.py] [_log()] userauth is OK
2025-11-03T09:16:21.738 [DEBUG] [Thread-113161] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:16:21.739 [DEBUG] [Thread-113161] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:16:21.739 [DEBUG] [Thread-113161] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:16:21.739 [DEBUG] [Thread-113161] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:16:21.758 [INFO] [Thread-113161] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:16:21.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:16:22.396 [DEBUG] [Thread-113161] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:16:22.396 [DEBUG] [Thread-113161] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:16:22.396 [DEBUG] [Thread-113161] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:16:22.437 [DEBUG] [Thread-113161] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:16:22.437 [DEBUG] [Thread-113161] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:16:22.440 [DEBUG] [Thread-113161] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:16:22.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:16:22.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:16:22.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:16:22.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:16:22.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:16:22.462 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:16:22.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:16:22.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:16:22.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:16:22.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.302524 -999.00  +19.00  13.28     15   -7.70 1 1 1 1 1   888    0 29.42 103.83 ----- 14.2 13.3 42.2 15.4 25.8 -30.0 24.8 -28.8 23.0 -28.3 23.9 -28.8
2025-11-03T09:16:22.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:16:22.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:16:22.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.302524
2025-11-03T09:16:22.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:16:22.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:16:22.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:16:22.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:16:22.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:16:22.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:16:08', tmtdew=33.04, humidity=9.77, cloud=0.0, wind=14.42, temperature=20.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:15:38.074', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:16:22.465 [DEBUG] [Thread-113161] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:16:22.556 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:16:22.568 [DEBUG] [Thread-113164] [transport.py] [_log()] starting thread (client mode): 0x117994b0
2025-11-03T09:16:22.568 [DEBUG] [Thread-113164] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:16:22.587 [DEBUG] [Thread-113164] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:16:22.587 [INFO] [Thread-113164] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:16:22.594 [DEBUG] [Thread-113164] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:16:22.594 [DEBUG] [Thread-113164] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:16:22.594 [DEBUG] [Thread-113164] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:16:22.594 [DEBUG] [Thread-113164] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:16:22.594 [DEBUG] [Thread-113164] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:16:22.595 [DEBUG] [Thread-113164] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:16:22.595 [DEBUG] [Thread-113164] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:16:22.595 [DEBUG] [Thread-113164] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:16:22.595 [DEBUG] [Thread-113164] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:16:22.595 [DEBUG] [Thread-113164] [transport.py] [_log()] client lang: <none>
2025-11-03T09:16:22.595 [DEBUG] [Thread-113164] [transport.py] [_log()] server lang: <none>
2025-11-03T09:16:22.595 [DEBUG] [Thread-113164] [transport.py] [_log()] kex follows: False
2025-11-03T09:16:22.595 [DEBUG] [Thread-113164] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:16:22.595 [DEBUG] [Thread-113164] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:16:22.595 [DEBUG] [Thread-113164] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:16:22.595 [DEBUG] [Thread-113164] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:16:22.595 [DEBUG] [Thread-113164] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:16:22.595 [DEBUG] [Thread-113164] [transport.py] [_log()] Compression: none
2025-11-03T09:16:22.595 [DEBUG] [Thread-113164] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:16:22.652 [DEBUG] [Thread-113164] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:16:22.652 [DEBUG] [Thread-113164] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:16:22.652 [DEBUG] [Thread-113164] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:16:22.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:16:22.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:16:22.708 [DEBUG] [Thread-113164] [transport.py] [_log()] userauth is OK
2025-11-03T09:16:22.708 [DEBUG] [Thread-113164] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:16:22.708 [DEBUG] [Thread-113164] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:16:22.708 [DEBUG] [Thread-113164] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:16:22.708 [DEBUG] [Thread-113164] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:16:22.728 [INFO] [Thread-113164] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:16:22.729 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:16:22.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:16:23.075 [DEBUG] [Thread-113166 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:16:23.594 [DEBUG] [Thread-113164] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:16:23.595 [DEBUG] [Thread-113164] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:16:23.642 [DEBUG] [Thread-113164] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:16:23.643 [DEBUG] [Thread-113164] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:16:23.652 [DEBUG] [Thread-113164] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:16:23.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:16:23.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:16:23.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:16:23.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:16:23.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:16:23.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:16:23.687 [DEBUG] [Thread-113164] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:16:38.129 [DEBUG] [Thread-113167 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:16:47.350 [DEBUG] [Thread-113168 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:16:53.165 [DEBUG] [Thread-113169 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:16:53.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:16:53.710 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:16:53.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:16:54.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 16, 40), 33.51, 9.22, 0.0, 11.52, 20.17, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:16:54.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:16:40
2025-11-03T09:16:54.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:16:54.649 [DEBUG] [Thread-113170] [transport.py] [_log()] starting thread (client mode): 0x81d8070
2025-11-03T09:16:54.649 [DEBUG] [Thread-113170] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:16:54.669 [DEBUG] [Thread-113170] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:16:54.669 [INFO] [Thread-113170] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:16:54.672 [DEBUG] [Thread-113170] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:16:54.672 [DEBUG] [Thread-113170] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:16:54.672 [DEBUG] [Thread-113170] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:16:54.672 [DEBUG] [Thread-113170] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:16:54.672 [DEBUG] [Thread-113170] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:16:54.673 [DEBUG] [Thread-113170] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:16:54.673 [DEBUG] [Thread-113170] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:16:54.673 [DEBUG] [Thread-113170] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:16:54.673 [DEBUG] [Thread-113170] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:16:54.673 [DEBUG] [Thread-113170] [transport.py] [_log()] client lang: <none>
2025-11-03T09:16:54.673 [DEBUG] [Thread-113170] [transport.py] [_log()] server lang: <none>
2025-11-03T09:16:54.673 [DEBUG] [Thread-113170] [transport.py] [_log()] kex follows: False
2025-11-03T09:16:54.673 [DEBUG] [Thread-113170] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:16:54.673 [DEBUG] [Thread-113170] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:16:54.673 [DEBUG] [Thread-113170] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:16:54.673 [DEBUG] [Thread-113170] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:16:54.673 [DEBUG] [Thread-113170] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:16:54.673 [DEBUG] [Thread-113170] [transport.py] [_log()] Compression: none
2025-11-03T09:16:54.673 [DEBUG] [Thread-113170] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:16:54.691 [DEBUG] [Thread-113170] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:16:54.692 [DEBUG] [Thread-113170] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:16:54.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:16:54.693 [DEBUG] [Thread-113170] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:16:54.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:16:54.704 [DEBUG] [Thread-113170] [transport.py] [_log()] userauth is OK
2025-11-03T09:16:54.704 [DEBUG] [Thread-113170] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:16:54.704 [DEBUG] [Thread-113170] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:16:54.704 [DEBUG] [Thread-113170] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:16:54.704 [DEBUG] [Thread-113170] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:16:54.725 [INFO] [Thread-113170] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:16:54.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:16:55.343 [DEBUG] [Thread-113170] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:16:55.343 [DEBUG] [Thread-113170] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:16:55.344 [DEBUG] [Thread-113170] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:16:55.384 [DEBUG] [Thread-113170] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:16:55.384 [DEBUG] [Thread-113170] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:16:55.387 [DEBUG] [Thread-113170] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:16:55.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:16:55.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:16:55.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:16:55.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:16:55.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:16:55.416 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:16:55.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:16:55.417 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:16:55.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:16:55.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.302872 -999.00  +19.20  17.51     14   -8.80 1 1 1 1 1   888    0 29.61 102.88 ----- 14.8 17.5 29.4 19.3 25.8 -29.6 24.7 -28.8 23.0 -29.8 23.9 -29.0
2025-11-03T09:16:55.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:16:55.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:16:55.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.302872
2025-11-03T09:16:55.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:16:55.418 [DEBUG] [Thread-113170] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:16:55.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:16:55.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:16:55.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:16:55.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:16:55.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:16:40', tmtdew=33.51, humidity=9.22, cloud=0.0, wind=11.52, temperature=20.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:16:08.141', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:16:55.503 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:16:55.517 [DEBUG] [Thread-113173] [transport.py] [_log()] starting thread (client mode): 0xed5faf0
2025-11-03T09:16:55.517 [DEBUG] [Thread-113173] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:16:55.532 [DEBUG] [Thread-113173] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:16:55.532 [INFO] [Thread-113173] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:16:55.540 [DEBUG] [Thread-113173] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:16:55.540 [DEBUG] [Thread-113173] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:16:55.540 [DEBUG] [Thread-113173] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:16:55.540 [DEBUG] [Thread-113173] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:16:55.540 [DEBUG] [Thread-113173] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:16:55.540 [DEBUG] [Thread-113173] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:16:55.540 [DEBUG] [Thread-113173] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:16:55.540 [DEBUG] [Thread-113173] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:16:55.540 [DEBUG] [Thread-113173] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:16:55.540 [DEBUG] [Thread-113173] [transport.py] [_log()] client lang: <none>
2025-11-03T09:16:55.540 [DEBUG] [Thread-113173] [transport.py] [_log()] server lang: <none>
2025-11-03T09:16:55.540 [DEBUG] [Thread-113173] [transport.py] [_log()] kex follows: False
2025-11-03T09:16:55.540 [DEBUG] [Thread-113173] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:16:55.540 [DEBUG] [Thread-113173] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:16:55.541 [DEBUG] [Thread-113173] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:16:55.549 [DEBUG] [Thread-113173] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:16:55.550 [DEBUG] [Thread-113173] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:16:55.550 [DEBUG] [Thread-113173] [transport.py] [_log()] Compression: none
2025-11-03T09:16:55.550 [DEBUG] [Thread-113173] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:16:55.601 [DEBUG] [Thread-113173] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:16:55.601 [DEBUG] [Thread-113173] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:16:55.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:16:55.602 [DEBUG] [Thread-113173] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:16:55.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:16:55.657 [DEBUG] [Thread-113173] [transport.py] [_log()] userauth is OK
2025-11-03T09:16:55.657 [DEBUG] [Thread-113173] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:16:55.658 [DEBUG] [Thread-113173] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:16:55.658 [DEBUG] [Thread-113173] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:16:55.658 [DEBUG] [Thread-113173] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:16:55.677 [INFO] [Thread-113173] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:16:55.678 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:16:55.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:16:56.548 [DEBUG] [Thread-113173] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:16:56.548 [DEBUG] [Thread-113173] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:16:56.597 [DEBUG] [Thread-113173] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:16:56.597 [DEBUG] [Thread-113173] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:16:56.606 [DEBUG] [Thread-113173] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:16:56.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:16:56.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:16:56.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:16:56.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:16:56.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:16:56.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:16:56.649 [DEBUG] [Thread-113173] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:17:08.206 [DEBUG] [Thread-113175 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:17:13.197 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:17:13.198 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:17:23.264 [DEBUG] [Thread-113176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:17:26.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:17:26.672 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:17:26.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:17:27.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 17, 12), 33.54, 9.22, 0.0, 12.14, 20.27, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:17:27.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:17:12
2025-11-03T09:17:27.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:17:27.633 [DEBUG] [Thread-113177] [transport.py] [_log()] starting thread (client mode): 0xedb1390
2025-11-03T09:17:27.633 [DEBUG] [Thread-113177] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:17:27.640 [DEBUG] [Thread-113177] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:17:27.640 [INFO] [Thread-113177] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:17:27.643 [DEBUG] [Thread-113177] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:17:27.643 [DEBUG] [Thread-113177] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:17:27.643 [DEBUG] [Thread-113177] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:17:27.643 [DEBUG] [Thread-113177] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:17:27.643 [DEBUG] [Thread-113177] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:17:27.643 [DEBUG] [Thread-113177] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:17:27.643 [DEBUG] [Thread-113177] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:17:27.643 [DEBUG] [Thread-113177] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:17:27.643 [DEBUG] [Thread-113177] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:17:27.643 [DEBUG] [Thread-113177] [transport.py] [_log()] client lang: <none>
2025-11-03T09:17:27.643 [DEBUG] [Thread-113177] [transport.py] [_log()] server lang: <none>
2025-11-03T09:17:27.643 [DEBUG] [Thread-113177] [transport.py] [_log()] kex follows: False
2025-11-03T09:17:27.643 [DEBUG] [Thread-113177] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:17:27.643 [DEBUG] [Thread-113177] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:17:27.643 [DEBUG] [Thread-113177] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:17:27.643 [DEBUG] [Thread-113177] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:17:27.643 [DEBUG] [Thread-113177] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:17:27.643 [DEBUG] [Thread-113177] [transport.py] [_log()] Compression: none
2025-11-03T09:17:27.643 [DEBUG] [Thread-113177] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:17:27.657 [DEBUG] [Thread-113177] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:17:27.657 [DEBUG] [Thread-113177] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:17:27.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:17:27.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:17:27.658 [DEBUG] [Thread-113177] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:17:27.659 [DEBUG] [Thread-113177] [transport.py] [_log()] userauth is OK
2025-11-03T09:17:27.659 [DEBUG] [Thread-113177] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:17:27.659 [DEBUG] [Thread-113177] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:17:27.659 [DEBUG] [Thread-113177] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:17:27.659 [DEBUG] [Thread-113177] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:17:27.678 [INFO] [Thread-113177] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:17:27.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:17:28.320 [DEBUG] [Thread-113177] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:17:28.320 [DEBUG] [Thread-113177] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:17:28.320 [DEBUG] [Thread-113177] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:17:28.362 [DEBUG] [Thread-113177] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:17:28.362 [DEBUG] [Thread-113177] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:17:28.364 [DEBUG] [Thread-113177] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:17:28.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:17:28.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:17:28.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:17:28.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:17:28.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:17:28.382 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:17:28.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:17:28.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:17:28.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:17:28.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.303219 -999.00  +19.50  14.56     13   -9.00 1 1 1 1 1   888    0 29.72 113.55 ----- 16.9 14.6 35.4 24.5 25.8 -30.3 24.6 -28.9 23.1 -29.4 23.9 -29.3
2025-11-03T09:17:28.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:17:28.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:17:28.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.303219
2025-11-03T09:17:28.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:17:28.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:17:28.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:17:28.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:17:28.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:17:28.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:17:12', tmtdew=33.54, humidity=9.22, cloud=0.0, wind=12.14, temperature=20.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:16:38.122', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:17:28.384 [DEBUG] [Thread-113177] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:17:28.456 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:17:28.469 [DEBUG] [Thread-113180] [transport.py] [_log()] starting thread (client mode): 0xedb3d00
2025-11-03T09:17:28.469 [DEBUG] [Thread-113180] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:17:28.484 [DEBUG] [Thread-113180] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:17:28.484 [INFO] [Thread-113180] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:17:28.491 [DEBUG] [Thread-113180] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:17:28.491 [DEBUG] [Thread-113180] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:17:28.491 [DEBUG] [Thread-113180] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:17:28.491 [DEBUG] [Thread-113180] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:17:28.491 [DEBUG] [Thread-113180] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:17:28.491 [DEBUG] [Thread-113180] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:17:28.491 [DEBUG] [Thread-113180] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:17:28.491 [DEBUG] [Thread-113180] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:17:28.491 [DEBUG] [Thread-113180] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:17:28.491 [DEBUG] [Thread-113180] [transport.py] [_log()] client lang: <none>
2025-11-03T09:17:28.492 [DEBUG] [Thread-113180] [transport.py] [_log()] server lang: <none>
2025-11-03T09:17:28.492 [DEBUG] [Thread-113180] [transport.py] [_log()] kex follows: False
2025-11-03T09:17:28.492 [DEBUG] [Thread-113180] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:17:28.492 [DEBUG] [Thread-113180] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:17:28.492 [DEBUG] [Thread-113180] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:17:28.492 [DEBUG] [Thread-113180] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:17:28.492 [DEBUG] [Thread-113180] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:17:28.492 [DEBUG] [Thread-113180] [transport.py] [_log()] Compression: none
2025-11-03T09:17:28.492 [DEBUG] [Thread-113180] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:17:28.546 [DEBUG] [Thread-113180] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:17:28.547 [DEBUG] [Thread-113180] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:17:28.547 [DEBUG] [Thread-113180] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:17:28.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:17:28.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:17:28.604 [DEBUG] [Thread-113180] [transport.py] [_log()] userauth is OK
2025-11-03T09:17:28.604 [DEBUG] [Thread-113180] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:17:28.604 [DEBUG] [Thread-113180] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:17:28.604 [DEBUG] [Thread-113180] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:17:28.604 [DEBUG] [Thread-113180] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:17:28.618 [INFO] [Thread-113180] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:17:28.618 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:17:28.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:17:29.482 [DEBUG] [Thread-113180] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:17:29.482 [DEBUG] [Thread-113180] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:17:29.529 [DEBUG] [Thread-113180] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:17:29.530 [DEBUG] [Thread-113180] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:17:29.540 [DEBUG] [Thread-113180] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:17:29.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:17:29.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:17:29.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:17:29.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:17:29.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:17:29.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:17:29.577 [DEBUG] [Thread-113180] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:17:38.297 [DEBUG] [Thread-113182 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:17:47.381 [DEBUG] [Thread-113183 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:17:53.346 [DEBUG] [Thread-113184 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:17:59.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:17:59.600 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:17:59.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:18:00.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 17, 44), 34.94, 8.36, 0.0, 18.12, 20.49, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:18:00.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:17:44
2025-11-03T09:18:00.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:18:00.554 [DEBUG] [Thread-113185] [transport.py] [_log()] starting thread (client mode): 0xedb3520
2025-11-03T09:18:00.554 [DEBUG] [Thread-113185] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:18:00.575 [DEBUG] [Thread-113185] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:18:00.575 [INFO] [Thread-113185] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:18:00.578 [DEBUG] [Thread-113185] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:18:00.578 [DEBUG] [Thread-113185] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:18:00.578 [DEBUG] [Thread-113185] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:18:00.578 [DEBUG] [Thread-113185] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:18:00.578 [DEBUG] [Thread-113185] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:18:00.578 [DEBUG] [Thread-113185] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:18:00.578 [DEBUG] [Thread-113185] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:18:00.578 [DEBUG] [Thread-113185] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:18:00.578 [DEBUG] [Thread-113185] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:18:00.578 [DEBUG] [Thread-113185] [transport.py] [_log()] client lang: <none>
2025-11-03T09:18:00.578 [DEBUG] [Thread-113185] [transport.py] [_log()] server lang: <none>
2025-11-03T09:18:00.578 [DEBUG] [Thread-113185] [transport.py] [_log()] kex follows: False
2025-11-03T09:18:00.578 [DEBUG] [Thread-113185] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:18:00.578 [DEBUG] [Thread-113185] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:18:00.578 [DEBUG] [Thread-113185] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:18:00.578 [DEBUG] [Thread-113185] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:18:00.578 [DEBUG] [Thread-113185] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:18:00.578 [DEBUG] [Thread-113185] [transport.py] [_log()] Compression: none
2025-11-03T09:18:00.578 [DEBUG] [Thread-113185] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:18:00.596 [DEBUG] [Thread-113185] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:18:00.596 [DEBUG] [Thread-113185] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:18:00.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:18:00.597 [DEBUG] [Thread-113185] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:18:00.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:18:00.600 [DEBUG] [Thread-113185] [transport.py] [_log()] userauth is OK
2025-11-03T09:18:00.600 [DEBUG] [Thread-113185] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:18:00.600 [DEBUG] [Thread-113185] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:18:00.600 [DEBUG] [Thread-113185] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:18:00.600 [DEBUG] [Thread-113185] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:18:00.618 [INFO] [Thread-113185] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:18:00.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:18:01.218 [DEBUG] [Thread-113185] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:18:01.218 [DEBUG] [Thread-113185] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:18:01.218 [DEBUG] [Thread-113185] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:18:01.260 [DEBUG] [Thread-113185] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:18:01.260 [DEBUG] [Thread-113185] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:18:01.263 [DEBUG] [Thread-113185] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:18:01.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:18:01.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:18:01.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:18:01.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:18:01.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:18:01.288 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:18:01.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:18:01.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:18:01.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:18:01.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.303566 -999.00  +19.80  16.19     13   -8.60 1 1 1 1 1   888    0 29.78 109.22 ----- 15.3 16.2 31.4 20.6 25.8 -29.2 24.8 -28.6 23.1 -29.1 23.9 -28.7
2025-11-03T09:18:01.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:18:01.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:18:01.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.303566
2025-11-03T09:18:01.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:18:01.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:18:01.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:18:01.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:18:01.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:18:01.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:17:44', tmtdew=34.94, humidity=8.36, cloud=0.0, wind=18.12, temperature=20.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:17:08.102', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:18:01.291 [DEBUG] [Thread-113185] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:18:01.373 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:18:01.384 [DEBUG] [Thread-113188] [transport.py] [_log()] starting thread (client mode): 0xedb17b0
2025-11-03T09:18:01.384 [DEBUG] [Thread-113188] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:18:01.399 [DEBUG] [Thread-113188] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:18:01.400 [INFO] [Thread-113188] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:18:01.408 [DEBUG] [Thread-113188] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:18:01.408 [DEBUG] [Thread-113188] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:18:01.408 [DEBUG] [Thread-113188] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:18:01.408 [DEBUG] [Thread-113188] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:18:01.408 [DEBUG] [Thread-113188] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:18:01.408 [DEBUG] [Thread-113188] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:18:01.408 [DEBUG] [Thread-113188] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:18:01.409 [DEBUG] [Thread-113188] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:18:01.409 [DEBUG] [Thread-113188] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:18:01.409 [DEBUG] [Thread-113188] [transport.py] [_log()] client lang: <none>
2025-11-03T09:18:01.409 [DEBUG] [Thread-113188] [transport.py] [_log()] server lang: <none>
2025-11-03T09:18:01.409 [DEBUG] [Thread-113188] [transport.py] [_log()] kex follows: False
2025-11-03T09:18:01.409 [DEBUG] [Thread-113188] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:18:01.409 [DEBUG] [Thread-113188] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:18:01.409 [DEBUG] [Thread-113188] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:18:01.409 [DEBUG] [Thread-113188] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:18:01.409 [DEBUG] [Thread-113188] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:18:01.409 [DEBUG] [Thread-113188] [transport.py] [_log()] Compression: none
2025-11-03T09:18:01.409 [DEBUG] [Thread-113188] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:18:01.464 [DEBUG] [Thread-113188] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:18:01.465 [DEBUG] [Thread-113188] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:18:01.465 [DEBUG] [Thread-113188] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:18:01.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:18:01.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:18:01.522 [DEBUG] [Thread-113188] [transport.py] [_log()] userauth is OK
2025-11-03T09:18:01.522 [DEBUG] [Thread-113188] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:18:01.522 [DEBUG] [Thread-113188] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:18:01.523 [DEBUG] [Thread-113188] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:18:01.523 [DEBUG] [Thread-113188] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:18:01.550 [INFO] [Thread-113188] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:18:01.550 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:18:01.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:18:02.405 [DEBUG] [Thread-113188] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:18:02.405 [DEBUG] [Thread-113188] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:18:02.452 [DEBUG] [Thread-113188] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:18:02.452 [DEBUG] [Thread-113188] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:18:02.461 [DEBUG] [Thread-113188] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:18:02.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:18:02.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:18:02.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:18:02.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:18:02.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:18:02.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:18:02.493 [DEBUG] [Thread-113188] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:18:08.380 [DEBUG] [Thread-113190 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:18:13.339 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:18:13.340 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:18:23.432 [DEBUG] [Thread-113191 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:18:32.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:18:32.515 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:18:32.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:18:33.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 18, 17), 35.34, 8.09, 0.0, 16.8, 20.55, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:18:33.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:18:17
2025-11-03T09:18:33.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:18:33.553 [DEBUG] [Thread-113192] [transport.py] [_log()] starting thread (client mode): 0xed2edd0
2025-11-03T09:18:33.553 [DEBUG] [Thread-113192] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:18:33.574 [DEBUG] [Thread-113192] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:18:33.574 [INFO] [Thread-113192] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:18:33.577 [DEBUG] [Thread-113192] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:18:33.577 [DEBUG] [Thread-113192] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:18:33.577 [DEBUG] [Thread-113192] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:18:33.577 [DEBUG] [Thread-113192] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:18:33.577 [DEBUG] [Thread-113192] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:18:33.577 [DEBUG] [Thread-113192] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:18:33.577 [DEBUG] [Thread-113192] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:18:33.577 [DEBUG] [Thread-113192] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:18:33.577 [DEBUG] [Thread-113192] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:18:33.577 [DEBUG] [Thread-113192] [transport.py] [_log()] client lang: <none>
2025-11-03T09:18:33.577 [DEBUG] [Thread-113192] [transport.py] [_log()] server lang: <none>
2025-11-03T09:18:33.577 [DEBUG] [Thread-113192] [transport.py] [_log()] kex follows: False
2025-11-03T09:18:33.577 [DEBUG] [Thread-113192] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:18:33.577 [DEBUG] [Thread-113192] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:18:33.577 [DEBUG] [Thread-113192] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:18:33.577 [DEBUG] [Thread-113192] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:18:33.577 [DEBUG] [Thread-113192] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:18:33.577 [DEBUG] [Thread-113192] [transport.py] [_log()] Compression: none
2025-11-03T09:18:33.577 [DEBUG] [Thread-113192] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:18:33.592 [DEBUG] [Thread-113192] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:18:33.593 [DEBUG] [Thread-113192] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:18:33.593 [DEBUG] [Thread-113192] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:18:33.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:18:33.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:18:33.594 [DEBUG] [Thread-113192] [transport.py] [_log()] userauth is OK
2025-11-03T09:18:33.594 [DEBUG] [Thread-113192] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:18:33.594 [DEBUG] [Thread-113192] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:18:33.594 [DEBUG] [Thread-113192] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:18:33.594 [DEBUG] [Thread-113192] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:18:33.607 [INFO] [Thread-113192] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:18:33.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:18:34.242 [DEBUG] [Thread-113192] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:18:34.242 [DEBUG] [Thread-113192] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:18:34.243 [DEBUG] [Thread-113192] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:18:34.282 [DEBUG] [Thread-113192] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:18:34.283 [DEBUG] [Thread-113192] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:18:34.286 [DEBUG] [Thread-113192] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:18:34.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:18:34.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:18:34.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:18:34.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:18:34.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:18:34.309 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:18:34.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:18:34.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:18:34.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:18:34.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.304260 -999.00  +20.20  15.04     14   -7.50 1 1 1 1 1   888    0 29.34 107.53 ----- 14.8 15.0 55.6 17.3 26.0 -28.8 25.0 -28.6 23.4 -28.6 24.1 -28.5
2025-11-03T09:18:34.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:18:34.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:18:34.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.304260
2025-11-03T09:18:34.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:18:34.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:18:34.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:18:34.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:18:34.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:18:34.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:18:17', tmtdew=35.34, humidity=8.09, cloud=0.0, wind=16.8, temperature=20.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:18:08.064', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:18:34.312 [DEBUG] [Thread-113192] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:18:34.402 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:18:34.413 [DEBUG] [Thread-113195] [transport.py] [_log()] starting thread (client mode): 0xed2f4f0
2025-11-03T09:18:34.413 [DEBUG] [Thread-113195] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:18:34.429 [DEBUG] [Thread-113195] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:18:34.429 [INFO] [Thread-113195] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:18:34.437 [DEBUG] [Thread-113195] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:18:34.437 [DEBUG] [Thread-113195] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:18:34.437 [DEBUG] [Thread-113195] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:18:34.437 [DEBUG] [Thread-113195] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:18:34.437 [DEBUG] [Thread-113195] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:18:34.437 [DEBUG] [Thread-113195] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:18:34.438 [DEBUG] [Thread-113195] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:18:34.438 [DEBUG] [Thread-113195] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:18:34.438 [DEBUG] [Thread-113195] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:18:34.438 [DEBUG] [Thread-113195] [transport.py] [_log()] client lang: <none>
2025-11-03T09:18:34.438 [DEBUG] [Thread-113195] [transport.py] [_log()] server lang: <none>
2025-11-03T09:18:34.438 [DEBUG] [Thread-113195] [transport.py] [_log()] kex follows: False
2025-11-03T09:18:34.438 [DEBUG] [Thread-113195] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:18:34.438 [DEBUG] [Thread-113195] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:18:34.438 [DEBUG] [Thread-113195] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:18:34.439 [DEBUG] [Thread-113195] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:18:34.439 [DEBUG] [Thread-113195] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:18:34.439 [DEBUG] [Thread-113195] [transport.py] [_log()] Compression: none
2025-11-03T09:18:34.439 [DEBUG] [Thread-113195] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:18:34.499 [DEBUG] [Thread-113195] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:18:34.499 [DEBUG] [Thread-113195] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:18:34.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:18:34.500 [DEBUG] [Thread-113195] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:18:34.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:18:34.560 [DEBUG] [Thread-113195] [transport.py] [_log()] userauth is OK
2025-11-03T09:18:34.560 [DEBUG] [Thread-113195] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:18:34.561 [DEBUG] [Thread-113195] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:18:34.561 [DEBUG] [Thread-113195] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:18:34.561 [DEBUG] [Thread-113195] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:18:34.582 [INFO] [Thread-113195] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:18:34.583 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:18:34.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:18:35.493 [DEBUG] [Thread-113195] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:18:35.493 [DEBUG] [Thread-113195] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:18:35.542 [DEBUG] [Thread-113195] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:18:35.542 [DEBUG] [Thread-113195] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:18:35.551 [DEBUG] [Thread-113195] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:18:35.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:18:35.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:18:35.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:18:35.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:18:35.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:18:35.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:18:35.596 [DEBUG] [Thread-113195] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:18:38.466 [DEBUG] [Thread-113197 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:18:47.463 [DEBUG] [Thread-113198 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:18:53.534 [DEBUG] [Thread-113199 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:19:05.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:19:05.619 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:19:05.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:19:06.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 18, 49), 35.07, 8.21, 0.0, 18.58, 20.72, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:19:06.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:18:49
2025-11-03T09:19:06.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:19:06.572 [DEBUG] [Thread-113200] [transport.py] [_log()] starting thread (client mode): 0xed2d270
2025-11-03T09:19:06.572 [DEBUG] [Thread-113200] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:19:06.593 [DEBUG] [Thread-113200] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:19:06.593 [INFO] [Thread-113200] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:19:06.596 [DEBUG] [Thread-113200] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:19:06.596 [DEBUG] [Thread-113200] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:19:06.596 [DEBUG] [Thread-113200] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:19:06.596 [DEBUG] [Thread-113200] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:19:06.596 [DEBUG] [Thread-113200] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:19:06.596 [DEBUG] [Thread-113200] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:19:06.596 [DEBUG] [Thread-113200] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:19:06.596 [DEBUG] [Thread-113200] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:19:06.596 [DEBUG] [Thread-113200] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:19:06.596 [DEBUG] [Thread-113200] [transport.py] [_log()] client lang: <none>
2025-11-03T09:19:06.596 [DEBUG] [Thread-113200] [transport.py] [_log()] server lang: <none>
2025-11-03T09:19:06.596 [DEBUG] [Thread-113200] [transport.py] [_log()] kex follows: False
2025-11-03T09:19:06.597 [DEBUG] [Thread-113200] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:19:06.597 [DEBUG] [Thread-113200] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:19:06.597 [DEBUG] [Thread-113200] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:19:06.597 [DEBUG] [Thread-113200] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:19:06.597 [DEBUG] [Thread-113200] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:19:06.597 [DEBUG] [Thread-113200] [transport.py] [_log()] Compression: none
2025-11-03T09:19:06.597 [DEBUG] [Thread-113200] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:19:06.615 [DEBUG] [Thread-113200] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:19:06.616 [DEBUG] [Thread-113200] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:19:06.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:19:06.617 [DEBUG] [Thread-113200] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:19:06.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:19:06.619 [DEBUG] [Thread-113200] [transport.py] [_log()] userauth is OK
2025-11-03T09:19:06.620 [DEBUG] [Thread-113200] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:19:06.620 [DEBUG] [Thread-113200] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:19:06.620 [DEBUG] [Thread-113200] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:19:06.620 [DEBUG] [Thread-113200] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:19:06.643 [INFO] [Thread-113200] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:19:06.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:19:07.254 [DEBUG] [Thread-113200] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:19:07.254 [DEBUG] [Thread-113200] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:19:07.254 [DEBUG] [Thread-113200] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:19:07.295 [DEBUG] [Thread-113200] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:19:07.295 [DEBUG] [Thread-113200] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:19:07.299 [DEBUG] [Thread-113200] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:19:07.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:19:07.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:19:07.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:19:07.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:19:07.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:19:07.325 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:19:07.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:19:07.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:19:07.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:19:07.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.304608 -999.00  +20.20  12.82     13   -8.20 1 1 1 1 1   888    0 30.11 113.64 ----- 13.1 12.8 51.0 18.2 26.0 -29.3 25.0 -27.9 23.4 -28.3 24.2 -28.5
2025-11-03T09:19:07.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:19:07.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:19:07.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.304608
2025-11-03T09:19:07.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:19:07.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:19:07.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:19:07.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:19:07.328 [DEBUG] [Thread-113200] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:19:07.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:19:07.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:18:49', tmtdew=35.07, humidity=8.21, cloud=0.0, wind=18.58, temperature=20.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:18:38.131', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:19:07.411 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:19:07.424 [DEBUG] [Thread-113203] [transport.py] [_log()] starting thread (client mode): 0x117bf0a0
2025-11-03T09:19:07.424 [DEBUG] [Thread-113203] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:19:07.440 [DEBUG] [Thread-113203] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:19:07.440 [INFO] [Thread-113203] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:19:07.448 [DEBUG] [Thread-113203] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:19:07.448 [DEBUG] [Thread-113203] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:19:07.448 [DEBUG] [Thread-113203] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:19:07.448 [DEBUG] [Thread-113203] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:19:07.448 [DEBUG] [Thread-113203] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:19:07.448 [DEBUG] [Thread-113203] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:19:07.448 [DEBUG] [Thread-113203] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:19:07.448 [DEBUG] [Thread-113203] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:19:07.448 [DEBUG] [Thread-113203] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:19:07.448 [DEBUG] [Thread-113203] [transport.py] [_log()] client lang: <none>
2025-11-03T09:19:07.448 [DEBUG] [Thread-113203] [transport.py] [_log()] server lang: <none>
2025-11-03T09:19:07.449 [DEBUG] [Thread-113203] [transport.py] [_log()] kex follows: False
2025-11-03T09:19:07.449 [DEBUG] [Thread-113203] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:19:07.449 [DEBUG] [Thread-113203] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:19:07.449 [DEBUG] [Thread-113203] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:19:07.449 [DEBUG] [Thread-113203] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:19:07.449 [DEBUG] [Thread-113203] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:19:07.449 [DEBUG] [Thread-113203] [transport.py] [_log()] Compression: none
2025-11-03T09:19:07.449 [DEBUG] [Thread-113203] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:19:07.511 [DEBUG] [Thread-113203] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:19:07.512 [DEBUG] [Thread-113203] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:19:07.512 [DEBUG] [Thread-113203] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:19:07.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:19:07.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:19:07.569 [DEBUG] [Thread-113203] [transport.py] [_log()] userauth is OK
2025-11-03T09:19:07.569 [DEBUG] [Thread-113203] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:19:07.569 [DEBUG] [Thread-113203] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:19:07.569 [DEBUG] [Thread-113203] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:19:07.569 [DEBUG] [Thread-113203] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:19:07.588 [INFO] [Thread-113203] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:19:07.589 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:19:07.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:19:08.458 [DEBUG] [Thread-113203] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:19:08.459 [DEBUG] [Thread-113203] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:19:08.508 [DEBUG] [Thread-113203] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:19:08.508 [DEBUG] [Thread-113203] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:19:08.520 [DEBUG] [Thread-113203] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:19:08.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:19:08.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:19:08.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:19:08.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:19:08.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:19:08.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:19:08.558 [DEBUG] [Thread-113203] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:19:08.576 [DEBUG] [Thread-113205 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:19:13.481 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:19:13.482 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:19:23.623 [DEBUG] [Thread-113206 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:19:38.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:19:38.580 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:19:38.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:19:38.656 [DEBUG] [Thread-113207 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:19:39.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 19, 21), 35.5, 7.93, 0.0, 19.55, 20.75, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:19:39.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:19:21
2025-11-03T09:19:39.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:19:39.499 [DEBUG] [Thread-113208] [transport.py] [_log()] starting thread (client mode): 0x117bdc00
2025-11-03T09:19:39.499 [DEBUG] [Thread-113208] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:19:39.519 [DEBUG] [Thread-113208] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:19:39.519 [INFO] [Thread-113208] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:19:39.522 [DEBUG] [Thread-113208] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:19:39.522 [DEBUG] [Thread-113208] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:19:39.522 [DEBUG] [Thread-113208] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:19:39.522 [DEBUG] [Thread-113208] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:19:39.522 [DEBUG] [Thread-113208] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:19:39.522 [DEBUG] [Thread-113208] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:19:39.523 [DEBUG] [Thread-113208] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:19:39.523 [DEBUG] [Thread-113208] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:19:39.523 [DEBUG] [Thread-113208] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:19:39.523 [DEBUG] [Thread-113208] [transport.py] [_log()] client lang: <none>
2025-11-03T09:19:39.523 [DEBUG] [Thread-113208] [transport.py] [_log()] server lang: <none>
2025-11-03T09:19:39.523 [DEBUG] [Thread-113208] [transport.py] [_log()] kex follows: False
2025-11-03T09:19:39.523 [DEBUG] [Thread-113208] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:19:39.523 [DEBUG] [Thread-113208] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:19:39.523 [DEBUG] [Thread-113208] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:19:39.523 [DEBUG] [Thread-113208] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:19:39.523 [DEBUG] [Thread-113208] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:19:39.523 [DEBUG] [Thread-113208] [transport.py] [_log()] Compression: none
2025-11-03T09:19:39.523 [DEBUG] [Thread-113208] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:19:39.539 [DEBUG] [Thread-113208] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:19:39.540 [DEBUG] [Thread-113208] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:19:39.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:19:39.541 [DEBUG] [Thread-113208] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:19:39.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:19:39.542 [DEBUG] [Thread-113208] [transport.py] [_log()] userauth is OK
2025-11-03T09:19:39.543 [DEBUG] [Thread-113208] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:19:39.543 [DEBUG] [Thread-113208] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:19:39.543 [DEBUG] [Thread-113208] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:19:39.543 [DEBUG] [Thread-113208] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:19:39.561 [INFO] [Thread-113208] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:19:39.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:19:40.196 [DEBUG] [Thread-113208] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:19:40.196 [DEBUG] [Thread-113208] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:19:40.196 [DEBUG] [Thread-113208] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:19:40.237 [DEBUG] [Thread-113208] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:19:40.237 [DEBUG] [Thread-113208] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:19:40.241 [DEBUG] [Thread-113208] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:19:40.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:19:40.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:19:40.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:19:40.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:19:40.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:19:40.268 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:19:40.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:19:40.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:19:40.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:19:40.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.304955 -999.00  +20.30  13.66     13   -8.70 1 1 1 1 1   888    0 29.49 109.82 ----- 16.5 13.7 34.9 24.4 26.1 -29.2 25.0 -28.3 23.5 -28.3 24.3 -28.5
2025-11-03T09:19:40.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:19:40.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:19:40.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.304955
2025-11-03T09:19:40.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:19:40.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:19:40.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:19:40.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:19:40.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:19:40.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:19:21', tmtdew=35.5, humidity=7.93, cloud=0.0, wind=19.55, temperature=20.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:19:08.112', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:19:40.271 [DEBUG] [Thread-113208] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:19:40.355 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:19:40.366 [DEBUG] [Thread-113211] [transport.py] [_log()] starting thread (client mode): 0xed2ead0
2025-11-03T09:19:40.366 [DEBUG] [Thread-113211] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:19:40.381 [DEBUG] [Thread-113211] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:19:40.382 [INFO] [Thread-113211] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:19:40.389 [DEBUG] [Thread-113211] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:19:40.389 [DEBUG] [Thread-113211] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:19:40.389 [DEBUG] [Thread-113211] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:19:40.389 [DEBUG] [Thread-113211] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:19:40.389 [DEBUG] [Thread-113211] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:19:40.389 [DEBUG] [Thread-113211] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:19:40.389 [DEBUG] [Thread-113211] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:19:40.389 [DEBUG] [Thread-113211] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:19:40.389 [DEBUG] [Thread-113211] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:19:40.390 [DEBUG] [Thread-113211] [transport.py] [_log()] client lang: <none>
2025-11-03T09:19:40.390 [DEBUG] [Thread-113211] [transport.py] [_log()] server lang: <none>
2025-11-03T09:19:40.390 [DEBUG] [Thread-113211] [transport.py] [_log()] kex follows: False
2025-11-03T09:19:40.390 [DEBUG] [Thread-113211] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:19:40.390 [DEBUG] [Thread-113211] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:19:40.390 [DEBUG] [Thread-113211] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:19:40.390 [DEBUG] [Thread-113211] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:19:40.390 [DEBUG] [Thread-113211] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:19:40.390 [DEBUG] [Thread-113211] [transport.py] [_log()] Compression: none
2025-11-03T09:19:40.390 [DEBUG] [Thread-113211] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:19:40.451 [DEBUG] [Thread-113211] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:19:40.452 [DEBUG] [Thread-113211] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:19:40.453 [DEBUG] [Thread-113211] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:19:40.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:19:40.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:19:40.508 [DEBUG] [Thread-113211] [transport.py] [_log()] userauth is OK
2025-11-03T09:19:40.509 [DEBUG] [Thread-113211] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:19:40.509 [DEBUG] [Thread-113211] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:19:40.509 [DEBUG] [Thread-113211] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:19:40.509 [DEBUG] [Thread-113211] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:19:40.528 [INFO] [Thread-113211] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:19:40.528 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:19:40.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:19:41.385 [DEBUG] [Thread-113211] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:19:41.385 [DEBUG] [Thread-113211] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:19:41.433 [DEBUG] [Thread-113211] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:19:41.433 [DEBUG] [Thread-113211] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:19:41.442 [DEBUG] [Thread-113211] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:19:41.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:19:41.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:19:41.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:19:41.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:19:41.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:19:41.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:19:41.479 [DEBUG] [Thread-113211] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:19:47.524 [DEBUG] [Thread-113213 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:19:53.691 [DEBUG] [Thread-113214 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:20:08.747 [DEBUG] [Thread-113215 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:20:11.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:20:11.502 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:20:11.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:20:12.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 19, 53), 35.54, 7.98, 0.0, 14.45, 20.82, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:20:12.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:19:53
2025-11-03T09:20:12.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:20:12.435 [DEBUG] [Thread-113216] [transport.py] [_log()] starting thread (client mode): 0xedb3e50
2025-11-03T09:20:12.435 [DEBUG] [Thread-113216] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:20:12.455 [DEBUG] [Thread-113216] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:20:12.455 [INFO] [Thread-113216] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:20:12.458 [DEBUG] [Thread-113216] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:20:12.459 [DEBUG] [Thread-113216] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:20:12.459 [DEBUG] [Thread-113216] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:20:12.459 [DEBUG] [Thread-113216] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:20:12.459 [DEBUG] [Thread-113216] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:20:12.459 [DEBUG] [Thread-113216] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:20:12.459 [DEBUG] [Thread-113216] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:20:12.459 [DEBUG] [Thread-113216] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:20:12.459 [DEBUG] [Thread-113216] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:20:12.459 [DEBUG] [Thread-113216] [transport.py] [_log()] client lang: <none>
2025-11-03T09:20:12.459 [DEBUG] [Thread-113216] [transport.py] [_log()] server lang: <none>
2025-11-03T09:20:12.459 [DEBUG] [Thread-113216] [transport.py] [_log()] kex follows: False
2025-11-03T09:20:12.459 [DEBUG] [Thread-113216] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:20:12.459 [DEBUG] [Thread-113216] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:20:12.459 [DEBUG] [Thread-113216] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:20:12.459 [DEBUG] [Thread-113216] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:20:12.459 [DEBUG] [Thread-113216] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:20:12.459 [DEBUG] [Thread-113216] [transport.py] [_log()] Compression: none
2025-11-03T09:20:12.459 [DEBUG] [Thread-113216] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:20:12.476 [DEBUG] [Thread-113216] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:20:12.477 [DEBUG] [Thread-113216] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:20:12.478 [DEBUG] [Thread-113216] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:20:12.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:20:12.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:20:12.520 [DEBUG] [Thread-113216] [transport.py] [_log()] userauth is OK
2025-11-03T09:20:12.520 [DEBUG] [Thread-113216] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:20:12.521 [DEBUG] [Thread-113216] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:20:12.521 [DEBUG] [Thread-113216] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:20:12.521 [DEBUG] [Thread-113216] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:20:12.541 [INFO] [Thread-113216] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:20:12.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:20:13.625 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:20:13.627 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:20:14.003 [DEBUG] [Thread-113216] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:20:14.003 [DEBUG] [Thread-113216] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:20:14.004 [DEBUG] [Thread-113216] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:20:14.045 [DEBUG] [Thread-113216] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:20:14.045 [DEBUG] [Thread-113216] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:20:14.048 [DEBUG] [Thread-113216] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:20:14.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:20:14.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:20:14.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:20:14.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:20:14.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:20:14.070 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:20:14.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:20:14.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:20:14.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:20:14.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.305302 -999.00  +20.40  18.53     13   -8.30 1 1 1 1 1   888    0 30.35 126.54 ----- 19.1 18.5 30.8 23.3 26.1 -29.7 25.1 -28.3 23.4 -28.6 24.3 -28.2
2025-11-03T09:20:14.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:20:14.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:20:14.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.305302
2025-11-03T09:20:14.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:20:14.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:20:14.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:20:14.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:20:14.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:20:14.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:19:53', tmtdew=35.54, humidity=7.98, cloud=0.0, wind=14.45, temperature=20.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:19:38.093', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:20:14.073 [DEBUG] [Thread-113216] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:20:14.155 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:20:14.167 [DEBUG] [Thread-113219] [transport.py] [_log()] starting thread (client mode): 0x11799300
2025-11-03T09:20:14.168 [DEBUG] [Thread-113219] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:20:14.187 [DEBUG] [Thread-113219] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:20:14.188 [INFO] [Thread-113219] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:20:14.196 [DEBUG] [Thread-113219] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:20:14.196 [DEBUG] [Thread-113219] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:20:14.196 [DEBUG] [Thread-113219] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:20:14.196 [DEBUG] [Thread-113219] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:20:14.196 [DEBUG] [Thread-113219] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:20:14.196 [DEBUG] [Thread-113219] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:20:14.196 [DEBUG] [Thread-113219] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:20:14.196 [DEBUG] [Thread-113219] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:20:14.196 [DEBUG] [Thread-113219] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:20:14.197 [DEBUG] [Thread-113219] [transport.py] [_log()] client lang: <none>
2025-11-03T09:20:14.197 [DEBUG] [Thread-113219] [transport.py] [_log()] server lang: <none>
2025-11-03T09:20:14.197 [DEBUG] [Thread-113219] [transport.py] [_log()] kex follows: False
2025-11-03T09:20:14.197 [DEBUG] [Thread-113219] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:20:14.197 [DEBUG] [Thread-113219] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:20:14.197 [DEBUG] [Thread-113219] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:20:14.197 [DEBUG] [Thread-113219] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:20:14.197 [DEBUG] [Thread-113219] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:20:14.197 [DEBUG] [Thread-113219] [transport.py] [_log()] Compression: none
2025-11-03T09:20:14.197 [DEBUG] [Thread-113219] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:20:14.257 [DEBUG] [Thread-113219] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:20:14.258 [DEBUG] [Thread-113219] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:20:14.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:20:14.259 [DEBUG] [Thread-113219] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:20:14.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:20:14.316 [DEBUG] [Thread-113219] [transport.py] [_log()] userauth is OK
2025-11-03T09:20:14.316 [DEBUG] [Thread-113219] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:20:14.317 [DEBUG] [Thread-113219] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:20:14.317 [DEBUG] [Thread-113219] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:20:14.317 [DEBUG] [Thread-113219] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:20:14.336 [INFO] [Thread-113219] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:20:14.337 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:20:14.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:20:15.188 [DEBUG] [Thread-113219] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:20:15.188 [DEBUG] [Thread-113219] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:20:15.236 [DEBUG] [Thread-113219] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:20:15.236 [DEBUG] [Thread-113219] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:20:15.244 [DEBUG] [Thread-113219] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:20:15.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:20:15.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:20:15.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:20:15.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:20:15.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:20:15.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:20:15.276 [DEBUG] [Thread-113219] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:20:23.786 [DEBUG] [Thread-113221 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:20:38.832 [DEBUG] [Thread-113222 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:20:45.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:20:45.298 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:20:45.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:20:45.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 20, 26), 35.8, 7.81, 0.0, 12.4, 20.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:20:45.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:20:26
2025-11-03T09:20:46.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:20:46.223 [DEBUG] [Thread-113223] [transport.py] [_log()] starting thread (client mode): 0xed2c580
2025-11-03T09:20:46.223 [DEBUG] [Thread-113223] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:20:46.245 [DEBUG] [Thread-113223] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:20:46.245 [INFO] [Thread-113223] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:20:46.248 [DEBUG] [Thread-113223] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:20:46.249 [DEBUG] [Thread-113223] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:20:46.249 [DEBUG] [Thread-113223] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:20:46.249 [DEBUG] [Thread-113223] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:20:46.249 [DEBUG] [Thread-113223] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:20:46.249 [DEBUG] [Thread-113223] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:20:46.249 [DEBUG] [Thread-113223] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:20:46.249 [DEBUG] [Thread-113223] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:20:46.249 [DEBUG] [Thread-113223] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:20:46.249 [DEBUG] [Thread-113223] [transport.py] [_log()] client lang: <none>
2025-11-03T09:20:46.249 [DEBUG] [Thread-113223] [transport.py] [_log()] server lang: <none>
2025-11-03T09:20:46.249 [DEBUG] [Thread-113223] [transport.py] [_log()] kex follows: False
2025-11-03T09:20:46.249 [DEBUG] [Thread-113223] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:20:46.250 [DEBUG] [Thread-113223] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:20:46.250 [DEBUG] [Thread-113223] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:20:46.250 [DEBUG] [Thread-113223] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:20:46.250 [DEBUG] [Thread-113223] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:20:46.250 [DEBUG] [Thread-113223] [transport.py] [_log()] Compression: none
2025-11-03T09:20:46.250 [DEBUG] [Thread-113223] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:20:46.269 [DEBUG] [Thread-113223] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:20:46.270 [DEBUG] [Thread-113223] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:20:46.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:20:46.271 [DEBUG] [Thread-113223] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:20:46.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:20:46.274 [DEBUG] [Thread-113223] [transport.py] [_log()] userauth is OK
2025-11-03T09:20:46.274 [DEBUG] [Thread-113223] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:20:46.274 [DEBUG] [Thread-113223] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:20:46.274 [DEBUG] [Thread-113223] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:20:46.274 [DEBUG] [Thread-113223] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:20:46.292 [INFO] [Thread-113223] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:20:46.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:20:46.919 [DEBUG] [Thread-113223] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:20:46.920 [DEBUG] [Thread-113223] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:20:46.921 [DEBUG] [Thread-113223] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:20:46.960 [DEBUG] [Thread-113223] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:20:46.960 [DEBUG] [Thread-113223] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:20:46.963 [DEBUG] [Thread-113223] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:20:46.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:20:46.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:20:46.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:20:46.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:20:46.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:20:46.985 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:20:46.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:20:46.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:20:46.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:20:46.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.305649 -999.00  +20.30  18.53     13   -8.50 1 1 1 1 1   888    0 30.05 121.41 ----- 18.1 18.5 57.4 20.8 26.1 -29.5 25.0 -29.3 23.5 -29.6 24.3 -29.4
2025-11-03T09:20:46.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:20:46.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:20:46.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.305649
2025-11-03T09:20:46.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:20:46.988 [DEBUG] [Thread-113223] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:20:46.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:20:46.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:20:46.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:20:46.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:20:46.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:20:26', tmtdew=35.8, humidity=7.81, cloud=0.0, wind=12.4, temperature=20.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:20:08.074', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:20:47.070 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:20:47.083 [DEBUG] [Thread-113226] [transport.py] [_log()] starting thread (client mode): 0xed2e620
2025-11-03T09:20:47.083 [DEBUG] [Thread-113226] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:20:47.098 [DEBUG] [Thread-113226] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:20:47.099 [INFO] [Thread-113226] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:20:47.106 [DEBUG] [Thread-113226] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:20:47.106 [DEBUG] [Thread-113226] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:20:47.107 [DEBUG] [Thread-113226] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:20:47.107 [DEBUG] [Thread-113226] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:20:47.107 [DEBUG] [Thread-113226] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:20:47.107 [DEBUG] [Thread-113226] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:20:47.107 [DEBUG] [Thread-113226] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:20:47.107 [DEBUG] [Thread-113226] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:20:47.107 [DEBUG] [Thread-113226] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:20:47.107 [DEBUG] [Thread-113226] [transport.py] [_log()] client lang: <none>
2025-11-03T09:20:47.107 [DEBUG] [Thread-113226] [transport.py] [_log()] server lang: <none>
2025-11-03T09:20:47.107 [DEBUG] [Thread-113226] [transport.py] [_log()] kex follows: False
2025-11-03T09:20:47.107 [DEBUG] [Thread-113226] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:20:47.107 [DEBUG] [Thread-113226] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:20:47.107 [DEBUG] [Thread-113226] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:20:47.107 [DEBUG] [Thread-113226] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:20:47.107 [DEBUG] [Thread-113226] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:20:47.107 [DEBUG] [Thread-113226] [transport.py] [_log()] Compression: none
2025-11-03T09:20:47.107 [DEBUG] [Thread-113226] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:20:47.168 [DEBUG] [Thread-113226] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:20:47.169 [DEBUG] [Thread-113226] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:20:47.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:20:47.170 [DEBUG] [Thread-113226] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:20:47.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:20:47.225 [DEBUG] [Thread-113226] [transport.py] [_log()] userauth is OK
2025-11-03T09:20:47.225 [DEBUG] [Thread-113226] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:20:47.225 [DEBUG] [Thread-113226] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:20:47.226 [DEBUG] [Thread-113226] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:20:47.226 [DEBUG] [Thread-113226] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:20:47.245 [INFO] [Thread-113226] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:20:47.246 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:20:47.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:20:47.568 [DEBUG] [Thread-113228 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:20:48.117 [DEBUG] [Thread-113226] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:20:48.117 [DEBUG] [Thread-113226] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:20:48.165 [DEBUG] [Thread-113226] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:20:48.165 [DEBUG] [Thread-113226] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:20:48.175 [DEBUG] [Thread-113226] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:20:48.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:20:48.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:20:48.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:20:48.202 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:20:48.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:20:48.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:20:48.211 [DEBUG] [Thread-113226] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:20:53.860 [DEBUG] [Thread-113229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:21:08.909 [DEBUG] [Thread-113230 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:21:13.767 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:21:13.768 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:21:18.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:21:18.208 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:21:18.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:21:18.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 20, 58), 35.62, 7.86, 0.0, 18.44, 20.99, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:21:18.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:20:58
2025-11-03T09:21:19.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:21:19.207 [DEBUG] [Thread-113231] [transport.py] [_log()] starting thread (client mode): 0x1179b640
2025-11-03T09:21:19.207 [DEBUG] [Thread-113231] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:21:19.226 [DEBUG] [Thread-113231] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:21:19.226 [INFO] [Thread-113231] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:21:19.229 [DEBUG] [Thread-113231] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:21:19.230 [DEBUG] [Thread-113231] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:21:19.230 [DEBUG] [Thread-113231] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:21:19.230 [DEBUG] [Thread-113231] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:21:19.230 [DEBUG] [Thread-113231] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:21:19.230 [DEBUG] [Thread-113231] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:21:19.230 [DEBUG] [Thread-113231] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:21:19.230 [DEBUG] [Thread-113231] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:21:19.230 [DEBUG] [Thread-113231] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:21:19.230 [DEBUG] [Thread-113231] [transport.py] [_log()] client lang: <none>
2025-11-03T09:21:19.230 [DEBUG] [Thread-113231] [transport.py] [_log()] server lang: <none>
2025-11-03T09:21:19.230 [DEBUG] [Thread-113231] [transport.py] [_log()] kex follows: False
2025-11-03T09:21:19.230 [DEBUG] [Thread-113231] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:21:19.230 [DEBUG] [Thread-113231] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:21:19.230 [DEBUG] [Thread-113231] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:21:19.230 [DEBUG] [Thread-113231] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:21:19.230 [DEBUG] [Thread-113231] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:21:19.230 [DEBUG] [Thread-113231] [transport.py] [_log()] Compression: none
2025-11-03T09:21:19.230 [DEBUG] [Thread-113231] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:21:19.246 [DEBUG] [Thread-113231] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:21:19.246 [DEBUG] [Thread-113231] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:21:19.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:21:19.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:21:19.246 [DEBUG] [Thread-113231] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:21:19.247 [DEBUG] [Thread-113231] [transport.py] [_log()] userauth is OK
2025-11-03T09:21:19.247 [DEBUG] [Thread-113231] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:21:19.247 [DEBUG] [Thread-113231] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:21:19.247 [DEBUG] [Thread-113231] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:21:19.247 [DEBUG] [Thread-113231] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:21:19.277 [INFO] [Thread-113231] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:21:19.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:21:19.900 [DEBUG] [Thread-113231] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:21:19.900 [DEBUG] [Thread-113231] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:21:19.900 [DEBUG] [Thread-113231] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:21:19.941 [DEBUG] [Thread-113231] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:21:19.941 [DEBUG] [Thread-113231] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:21:19.943 [DEBUG] [Thread-113231] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:21:19.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:21:19.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:21:19.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:21:19.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:21:19.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:21:19.969 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:21:19.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:21:19.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:21:19.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:21:19.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.305997 -999.00  +20.20  22.45     13   -8.50 1 1 1 1 1   888    0 30.46 126.42 ----- 23.3 22.4 62.6 25.3 26.1 -30.0 25.0 -28.5 23.5 -28.9 24.4 -29.9
2025-11-03T09:21:19.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:21:19.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:21:19.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.305997
2025-11-03T09:21:19.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:21:19.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:21:19.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:21:19.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:21:19.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:21:19.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:20:58', tmtdew=35.62, humidity=7.86, cloud=0.0, wind=18.44, temperature=20.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:20:38.141', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:21:19.970 [DEBUG] [Thread-113231] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:21:20.044 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:21:20.056 [DEBUG] [Thread-113234] [transport.py] [_log()] starting thread (client mode): 0x117bcfa0
2025-11-03T09:21:20.056 [DEBUG] [Thread-113234] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:21:20.073 [DEBUG] [Thread-113234] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:21:20.073 [INFO] [Thread-113234] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:21:20.081 [DEBUG] [Thread-113234] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:21:20.081 [DEBUG] [Thread-113234] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:21:20.081 [DEBUG] [Thread-113234] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:21:20.081 [DEBUG] [Thread-113234] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:21:20.081 [DEBUG] [Thread-113234] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:21:20.081 [DEBUG] [Thread-113234] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:21:20.081 [DEBUG] [Thread-113234] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:21:20.081 [DEBUG] [Thread-113234] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:21:20.081 [DEBUG] [Thread-113234] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:21:20.081 [DEBUG] [Thread-113234] [transport.py] [_log()] client lang: <none>
2025-11-03T09:21:20.081 [DEBUG] [Thread-113234] [transport.py] [_log()] server lang: <none>
2025-11-03T09:21:20.081 [DEBUG] [Thread-113234] [transport.py] [_log()] kex follows: False
2025-11-03T09:21:20.081 [DEBUG] [Thread-113234] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:21:20.081 [DEBUG] [Thread-113234] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:21:20.081 [DEBUG] [Thread-113234] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:21:20.081 [DEBUG] [Thread-113234] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:21:20.090 [DEBUG] [Thread-113234] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:21:20.090 [DEBUG] [Thread-113234] [transport.py] [_log()] Compression: none
2025-11-03T09:21:20.090 [DEBUG] [Thread-113234] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:21:20.138 [DEBUG] [Thread-113234] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:21:20.139 [DEBUG] [Thread-113234] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:21:20.139 [DEBUG] [Thread-113234] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:21:20.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:21:20.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:21:20.196 [DEBUG] [Thread-113234] [transport.py] [_log()] userauth is OK
2025-11-03T09:21:20.196 [DEBUG] [Thread-113234] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:21:20.196 [DEBUG] [Thread-113234] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:21:20.196 [DEBUG] [Thread-113234] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:21:20.196 [DEBUG] [Thread-113234] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:21:20.213 [INFO] [Thread-113234] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:21:20.222 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:21:20.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:21:21.127 [DEBUG] [Thread-113234] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:21:21.127 [DEBUG] [Thread-113234] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:21:21.175 [DEBUG] [Thread-113234] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:21:21.175 [DEBUG] [Thread-113234] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:21:21.184 [DEBUG] [Thread-113234] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:21:21.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:21:21.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:21:21.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:21:21.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:21:21.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:21:21.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:21:21.230 [DEBUG] [Thread-113234] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:21:23.944 [DEBUG] [Thread-113236 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:21:39.008 [DEBUG] [Thread-113237 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:21:47.626 [DEBUG] [Thread-113238 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:21:51.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:21:51.253 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:21:51.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:21:51.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 21, 30), 35.7, 7.81, 0.0, 18.58, 21.02, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:21:51.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:21:30
2025-11-03T09:21:52.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:21:52.231 [DEBUG] [Thread-113239] [transport.py] [_log()] starting thread (client mode): 0xed2ece0
2025-11-03T09:21:52.231 [DEBUG] [Thread-113239] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:21:52.252 [DEBUG] [Thread-113239] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:21:52.252 [INFO] [Thread-113239] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:21:52.262 [DEBUG] [Thread-113239] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:21:52.262 [DEBUG] [Thread-113239] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:21:52.263 [DEBUG] [Thread-113239] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:21:52.263 [DEBUG] [Thread-113239] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:21:52.263 [DEBUG] [Thread-113239] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:21:52.263 [DEBUG] [Thread-113239] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:21:52.263 [DEBUG] [Thread-113239] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:21:52.263 [DEBUG] [Thread-113239] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:21:52.263 [DEBUG] [Thread-113239] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:21:52.263 [DEBUG] [Thread-113239] [transport.py] [_log()] client lang: <none>
2025-11-03T09:21:52.263 [DEBUG] [Thread-113239] [transport.py] [_log()] server lang: <none>
2025-11-03T09:21:52.263 [DEBUG] [Thread-113239] [transport.py] [_log()] kex follows: False
2025-11-03T09:21:52.263 [DEBUG] [Thread-113239] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:21:52.263 [DEBUG] [Thread-113239] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:21:52.263 [DEBUG] [Thread-113239] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:21:52.263 [DEBUG] [Thread-113239] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:21:52.263 [DEBUG] [Thread-113239] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:21:52.263 [DEBUG] [Thread-113239] [transport.py] [_log()] Compression: none
2025-11-03T09:21:52.263 [DEBUG] [Thread-113239] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:21:52.284 [DEBUG] [Thread-113239] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:21:52.284 [DEBUG] [Thread-113239] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:21:52.285 [DEBUG] [Thread-113239] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:21:52.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:21:52.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:21:52.287 [DEBUG] [Thread-113239] [transport.py] [_log()] userauth is OK
2025-11-03T09:21:52.287 [DEBUG] [Thread-113239] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:21:52.287 [DEBUG] [Thread-113239] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:21:52.287 [DEBUG] [Thread-113239] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:21:52.287 [DEBUG] [Thread-113239] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:21:52.313 [INFO] [Thread-113239] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:21:52.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:21:52.928 [DEBUG] [Thread-113239] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:21:52.928 [DEBUG] [Thread-113239] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:21:52.929 [DEBUG] [Thread-113239] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:21:52.969 [DEBUG] [Thread-113239] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:21:52.969 [DEBUG] [Thread-113239] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:21:52.973 [DEBUG] [Thread-113239] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:21:52.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:21:52.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:21:52.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:21:52.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:21:52.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:21:52.997 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:21:52.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:21:52.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:21:52.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:21:52.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.306344 -999.00  +20.10  18.41     13   -8.70 1 1 1 1 1   888    0 31.43 141.63 ----- 16.6 18.4 48.8 24.0 26.0 -28.9 25.0 -29.3 23.5 -30.7 24.4 -29.2
2025-11-03T09:21:52.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:21:52.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:21:52.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.306344
2025-11-03T09:21:52.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:21:52.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:21:52.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:21:53.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:21:53.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:21:53.000 [DEBUG] [Thread-113239] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:21:53.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:21:30', tmtdew=35.7, humidity=7.81, cloud=0.0, wind=18.58, temperature=21.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:21:08.122', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:21:53.084 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:21:53.095 [DEBUG] [Thread-113242] [transport.py] [_log()] starting thread (client mode): 0xed37970
2025-11-03T09:21:53.096 [DEBUG] [Thread-113242] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:21:53.110 [DEBUG] [Thread-113242] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:21:53.110 [INFO] [Thread-113242] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:21:53.117 [DEBUG] [Thread-113242] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:21:53.118 [DEBUG] [Thread-113242] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:21:53.118 [DEBUG] [Thread-113242] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:21:53.118 [DEBUG] [Thread-113242] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:21:53.118 [DEBUG] [Thread-113242] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:21:53.118 [DEBUG] [Thread-113242] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:21:53.118 [DEBUG] [Thread-113242] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:21:53.118 [DEBUG] [Thread-113242] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:21:53.118 [DEBUG] [Thread-113242] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:21:53.118 [DEBUG] [Thread-113242] [transport.py] [_log()] client lang: <none>
2025-11-03T09:21:53.118 [DEBUG] [Thread-113242] [transport.py] [_log()] server lang: <none>
2025-11-03T09:21:53.118 [DEBUG] [Thread-113242] [transport.py] [_log()] kex follows: False
2025-11-03T09:21:53.118 [DEBUG] [Thread-113242] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:21:53.118 [DEBUG] [Thread-113242] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:21:53.118 [DEBUG] [Thread-113242] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:21:53.118 [DEBUG] [Thread-113242] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:21:53.118 [DEBUG] [Thread-113242] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:21:53.118 [DEBUG] [Thread-113242] [transport.py] [_log()] Compression: none
2025-11-03T09:21:53.118 [DEBUG] [Thread-113242] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:21:53.185 [DEBUG] [Thread-113242] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:21:53.186 [DEBUG] [Thread-113242] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:21:53.187 [DEBUG] [Thread-113242] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:21:53.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:21:53.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:21:53.244 [DEBUG] [Thread-113242] [transport.py] [_log()] userauth is OK
2025-11-03T09:21:53.244 [DEBUG] [Thread-113242] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:21:53.245 [DEBUG] [Thread-113242] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:21:53.245 [DEBUG] [Thread-113242] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:21:53.245 [DEBUG] [Thread-113242] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:21:53.263 [INFO] [Thread-113242] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:21:53.264 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:21:53.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:21:54.042 [DEBUG] [Thread-113244 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:21:54.153 [DEBUG] [Thread-113242] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:21:54.153 [DEBUG] [Thread-113242] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:21:54.201 [DEBUG] [Thread-113242] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:21:54.202 [DEBUG] [Thread-113242] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:21:54.210 [DEBUG] [Thread-113242] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:21:54.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:21:54.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:21:54.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:21:54.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:21:54.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:21:54.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:21:54.241 [DEBUG] [Thread-113242] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:22:09.098 [DEBUG] [Thread-113245 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:22:13.910 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:22:13.912 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:22:24.137 [DEBUG] [Thread-113246 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:22:24.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:22:24.264 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:22:24.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:22:24.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 22, 2), 35.69, 7.78, 0.0, 13.09, 20.77, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:22:24.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:22:02
2025-11-03T09:22:25.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:22:25.296 [DEBUG] [Thread-113247] [transport.py] [_log()] starting thread (client mode): 0xed2d570
2025-11-03T09:22:25.296 [DEBUG] [Thread-113247] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:22:25.318 [DEBUG] [Thread-113247] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:22:25.318 [INFO] [Thread-113247] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:22:25.321 [DEBUG] [Thread-113247] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:22:25.321 [DEBUG] [Thread-113247] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:22:25.321 [DEBUG] [Thread-113247] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:22:25.321 [DEBUG] [Thread-113247] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:22:25.321 [DEBUG] [Thread-113247] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:22:25.321 [DEBUG] [Thread-113247] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:22:25.321 [DEBUG] [Thread-113247] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:22:25.321 [DEBUG] [Thread-113247] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:22:25.321 [DEBUG] [Thread-113247] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:22:25.321 [DEBUG] [Thread-113247] [transport.py] [_log()] client lang: <none>
2025-11-03T09:22:25.321 [DEBUG] [Thread-113247] [transport.py] [_log()] server lang: <none>
2025-11-03T09:22:25.321 [DEBUG] [Thread-113247] [transport.py] [_log()] kex follows: False
2025-11-03T09:22:25.321 [DEBUG] [Thread-113247] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:22:25.321 [DEBUG] [Thread-113247] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:22:25.321 [DEBUG] [Thread-113247] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:22:25.321 [DEBUG] [Thread-113247] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:22:25.321 [DEBUG] [Thread-113247] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:22:25.321 [DEBUG] [Thread-113247] [transport.py] [_log()] Compression: none
2025-11-03T09:22:25.321 [DEBUG] [Thread-113247] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:22:25.338 [DEBUG] [Thread-113247] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:22:25.339 [DEBUG] [Thread-113247] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:22:25.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:22:25.340 [DEBUG] [Thread-113247] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:22:25.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:22:25.342 [DEBUG] [Thread-113247] [transport.py] [_log()] userauth is OK
2025-11-03T09:22:25.343 [DEBUG] [Thread-113247] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:22:25.343 [DEBUG] [Thread-113247] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:22:25.343 [DEBUG] [Thread-113247] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:22:25.343 [DEBUG] [Thread-113247] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:22:25.367 [INFO] [Thread-113247] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:22:25.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:22:26.010 [DEBUG] [Thread-113247] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:22:26.018 [DEBUG] [Thread-113247] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:22:26.018 [DEBUG] [Thread-113247] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:22:26.050 [DEBUG] [Thread-113247] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:22:26.050 [DEBUG] [Thread-113247] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:22:26.053 [DEBUG] [Thread-113247] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:22:26.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:22:26.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:22:26.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:22:26.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:22:26.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:22:26.072 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:22:26.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:22:26.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:22:26.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:22:26.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.307038 -999.00  +19.70  21.33     13   -9.10 1 1 1 1 1   888    0 31.77 161.15 ----- 19.9 21.3 66.4 28.0 26.0 -29.7 24.9 -29.1 23.4 -29.5 24.2 -29.8
2025-11-03T09:22:26.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:22:26.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:22:26.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.307038
2025-11-03T09:22:26.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:22:26.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:22:26.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:22:26.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:22:26.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:22:26.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:22:02', tmtdew=35.69, humidity=7.78, cloud=0.0, wind=13.09, temperature=20.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:22:08.083', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:22:26.074 [DEBUG] [Thread-113247] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:22:26.145 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:22:26.158 [DEBUG] [Thread-113250] [transport.py] [_log()] starting thread (client mode): 0xed07430
2025-11-03T09:22:26.159 [DEBUG] [Thread-113250] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:22:26.173 [DEBUG] [Thread-113250] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:22:26.173 [INFO] [Thread-113250] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:22:26.191 [DEBUG] [Thread-113250] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:22:26.191 [DEBUG] [Thread-113250] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:22:26.191 [DEBUG] [Thread-113250] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:22:26.191 [DEBUG] [Thread-113250] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:22:26.191 [DEBUG] [Thread-113250] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:22:26.191 [DEBUG] [Thread-113250] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:22:26.191 [DEBUG] [Thread-113250] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:22:26.191 [DEBUG] [Thread-113250] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:22:26.191 [DEBUG] [Thread-113250] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:22:26.191 [DEBUG] [Thread-113250] [transport.py] [_log()] client lang: <none>
2025-11-03T09:22:26.191 [DEBUG] [Thread-113250] [transport.py] [_log()] server lang: <none>
2025-11-03T09:22:26.191 [DEBUG] [Thread-113250] [transport.py] [_log()] kex follows: False
2025-11-03T09:22:26.191 [DEBUG] [Thread-113250] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:22:26.191 [DEBUG] [Thread-113250] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:22:26.191 [DEBUG] [Thread-113250] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:22:26.191 [DEBUG] [Thread-113250] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:22:26.191 [DEBUG] [Thread-113250] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:22:26.191 [DEBUG] [Thread-113250] [transport.py] [_log()] Compression: none
2025-11-03T09:22:26.191 [DEBUG] [Thread-113250] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:22:26.240 [DEBUG] [Thread-113250] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:22:26.240 [DEBUG] [Thread-113250] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:22:26.240 [DEBUG] [Thread-113250] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:22:26.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:22:26.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:22:26.297 [DEBUG] [Thread-113250] [transport.py] [_log()] userauth is OK
2025-11-03T09:22:26.297 [DEBUG] [Thread-113250] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:22:26.297 [DEBUG] [Thread-113250] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:22:26.297 [DEBUG] [Thread-113250] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:22:26.297 [DEBUG] [Thread-113250] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:22:26.311 [INFO] [Thread-113250] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:22:26.311 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:22:26.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:22:27.275 [DEBUG] [Thread-113250] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:22:27.284 [DEBUG] [Thread-113250] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:22:27.330 [DEBUG] [Thread-113250] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:22:27.330 [DEBUG] [Thread-113250] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:22:27.345 [DEBUG] [Thread-113250] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:22:27.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:22:27.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:22:27.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:22:27.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:22:27.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:22:27.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:22:27.390 [DEBUG] [Thread-113250] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:22:39.171 [DEBUG] [Thread-113252 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:22:47.683 [DEBUG] [Thread-113253 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:22:54.224 [DEBUG] [Thread-113254 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:22:57.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:22:57.413 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:22:57.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:22:58.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 22, 35), 35.34, 7.91, 0.0, 17.24, 20.19, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:22:58.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:22:35
2025-11-03T09:22:58.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:22:58.387 [DEBUG] [Thread-113255] [transport.py] [_log()] starting thread (client mode): 0xed2d000
2025-11-03T09:22:58.387 [DEBUG] [Thread-113255] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:22:58.408 [DEBUG] [Thread-113255] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:22:58.408 [INFO] [Thread-113255] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:22:58.411 [DEBUG] [Thread-113255] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:22:58.411 [DEBUG] [Thread-113255] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:22:58.411 [DEBUG] [Thread-113255] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:22:58.411 [DEBUG] [Thread-113255] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:22:58.411 [DEBUG] [Thread-113255] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:22:58.411 [DEBUG] [Thread-113255] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:22:58.411 [DEBUG] [Thread-113255] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:22:58.411 [DEBUG] [Thread-113255] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:22:58.411 [DEBUG] [Thread-113255] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:22:58.411 [DEBUG] [Thread-113255] [transport.py] [_log()] client lang: <none>
2025-11-03T09:22:58.411 [DEBUG] [Thread-113255] [transport.py] [_log()] server lang: <none>
2025-11-03T09:22:58.411 [DEBUG] [Thread-113255] [transport.py] [_log()] kex follows: False
2025-11-03T09:22:58.411 [DEBUG] [Thread-113255] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:22:58.412 [DEBUG] [Thread-113255] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:22:58.412 [DEBUG] [Thread-113255] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:22:58.412 [DEBUG] [Thread-113255] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:22:58.412 [DEBUG] [Thread-113255] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:22:58.412 [DEBUG] [Thread-113255] [transport.py] [_log()] Compression: none
2025-11-03T09:22:58.412 [DEBUG] [Thread-113255] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:22:58.427 [DEBUG] [Thread-113255] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:22:58.427 [DEBUG] [Thread-113255] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:22:58.427 [DEBUG] [Thread-113255] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:22:58.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:22:58.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:22:58.428 [DEBUG] [Thread-113255] [transport.py] [_log()] userauth is OK
2025-11-03T09:22:58.428 [DEBUG] [Thread-113255] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:22:58.428 [DEBUG] [Thread-113255] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:22:58.428 [DEBUG] [Thread-113255] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:22:58.428 [DEBUG] [Thread-113255] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:22:58.442 [INFO] [Thread-113255] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:22:58.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:22:59.227 [DEBUG] [Thread-113255] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:22:59.227 [DEBUG] [Thread-113255] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:22:59.228 [DEBUG] [Thread-113255] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:22:59.268 [DEBUG] [Thread-113255] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:22:59.268 [DEBUG] [Thread-113255] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:22:59.272 [DEBUG] [Thread-113255] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:22:59.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:22:59.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:22:59.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:22:59.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:22:59.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:22:59.296 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:22:59.296 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:22:59.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:22:59.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:22:59.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.307386 -999.00  +19.60  23.01     13   -8.60 1 1 1 1 1   888    0 32.17 178.97 ----- 24.0 23.0 53.3 27.8 25.7 -29.3 24.9 -29.1 23.4 -29.9 24.2 -28.9
2025-11-03T09:22:59.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:22:59.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:22:59.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.307386
2025-11-03T09:22:59.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:22:59.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:22:59.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:22:59.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:22:59.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:22:59.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:22:35', tmtdew=35.34, humidity=7.91, cloud=0.0, wind=17.24, temperature=20.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:22:38.150', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:22:59.299 [DEBUG] [Thread-113255] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:22:59.382 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:22:59.394 [DEBUG] [Thread-113258] [transport.py] [_log()] starting thread (client mode): 0xed41990
2025-11-03T09:22:59.394 [DEBUG] [Thread-113258] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:22:59.409 [DEBUG] [Thread-113258] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:22:59.409 [INFO] [Thread-113258] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:22:59.417 [DEBUG] [Thread-113258] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:22:59.417 [DEBUG] [Thread-113258] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:22:59.417 [DEBUG] [Thread-113258] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:22:59.418 [DEBUG] [Thread-113258] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:22:59.418 [DEBUG] [Thread-113258] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:22:59.418 [DEBUG] [Thread-113258] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:22:59.418 [DEBUG] [Thread-113258] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:22:59.418 [DEBUG] [Thread-113258] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:22:59.418 [DEBUG] [Thread-113258] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:22:59.418 [DEBUG] [Thread-113258] [transport.py] [_log()] client lang: <none>
2025-11-03T09:22:59.418 [DEBUG] [Thread-113258] [transport.py] [_log()] server lang: <none>
2025-11-03T09:22:59.419 [DEBUG] [Thread-113258] [transport.py] [_log()] kex follows: False
2025-11-03T09:22:59.419 [DEBUG] [Thread-113258] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:22:59.419 [DEBUG] [Thread-113258] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:22:59.419 [DEBUG] [Thread-113258] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:22:59.419 [DEBUG] [Thread-113258] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:22:59.419 [DEBUG] [Thread-113258] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:22:59.419 [DEBUG] [Thread-113258] [transport.py] [_log()] Compression: none
2025-11-03T09:22:59.420 [DEBUG] [Thread-113258] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:22:59.477 [DEBUG] [Thread-113258] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:22:59.477 [DEBUG] [Thread-113258] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:22:59.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:22:59.479 [DEBUG] [Thread-113258] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:22:59.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:22:59.543 [DEBUG] [Thread-113258] [transport.py] [_log()] userauth is OK
2025-11-03T09:22:59.544 [DEBUG] [Thread-113258] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:22:59.544 [DEBUG] [Thread-113258] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:22:59.544 [DEBUG] [Thread-113258] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:22:59.544 [DEBUG] [Thread-113258] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:22:59.564 [INFO] [Thread-113258] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:22:59.564 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:22:59.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:23:00.465 [DEBUG] [Thread-113258] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:23:00.466 [DEBUG] [Thread-113258] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:23:00.514 [DEBUG] [Thread-113258] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:23:00.514 [DEBUG] [Thread-113258] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:23:00.524 [DEBUG] [Thread-113258] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:23:00.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:23:00.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:23:00.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:23:00.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:23:00.552 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:23:00.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:23:00.561 [DEBUG] [Thread-113258] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:23:09.258 [DEBUG] [Thread-113260 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:23:14.061 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:23:14.062 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:23:24.297 [DEBUG] [Thread-113261 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:23:30.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:23:30.560 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:23:30.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:23:31.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 23, 7), 34.96, 8.13, 0.0, 12.76, 19.97, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:23:31.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:23:07
2025-11-03T09:23:31.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:23:31.505 [DEBUG] [Thread-113262] [transport.py] [_log()] starting thread (client mode): 0xedb1d20
2025-11-03T09:23:31.505 [DEBUG] [Thread-113262] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:23:31.525 [DEBUG] [Thread-113262] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:23:31.525 [INFO] [Thread-113262] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:23:31.528 [DEBUG] [Thread-113262] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:23:31.528 [DEBUG] [Thread-113262] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:23:31.528 [DEBUG] [Thread-113262] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:23:31.528 [DEBUG] [Thread-113262] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:23:31.528 [DEBUG] [Thread-113262] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:23:31.528 [DEBUG] [Thread-113262] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:23:31.528 [DEBUG] [Thread-113262] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:23:31.528 [DEBUG] [Thread-113262] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:23:31.528 [DEBUG] [Thread-113262] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:23:31.528 [DEBUG] [Thread-113262] [transport.py] [_log()] client lang: <none>
2025-11-03T09:23:31.528 [DEBUG] [Thread-113262] [transport.py] [_log()] server lang: <none>
2025-11-03T09:23:31.528 [DEBUG] [Thread-113262] [transport.py] [_log()] kex follows: False
2025-11-03T09:23:31.528 [DEBUG] [Thread-113262] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:23:31.528 [DEBUG] [Thread-113262] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:23:31.528 [DEBUG] [Thread-113262] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:23:31.528 [DEBUG] [Thread-113262] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:23:31.528 [DEBUG] [Thread-113262] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:23:31.528 [DEBUG] [Thread-113262] [transport.py] [_log()] Compression: none
2025-11-03T09:23:31.528 [DEBUG] [Thread-113262] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:23:31.544 [DEBUG] [Thread-113262] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:23:31.545 [DEBUG] [Thread-113262] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:23:31.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:23:31.546 [DEBUG] [Thread-113262] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:23:31.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:23:31.557 [DEBUG] [Thread-113262] [transport.py] [_log()] userauth is OK
2025-11-03T09:23:31.558 [DEBUG] [Thread-113262] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:23:31.558 [DEBUG] [Thread-113262] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:23:31.558 [DEBUG] [Thread-113262] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:23:31.558 [DEBUG] [Thread-113262] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:23:31.594 [INFO] [Thread-113262] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:23:31.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:23:32.240 [DEBUG] [Thread-113262] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:23:32.240 [DEBUG] [Thread-113262] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:23:32.240 [DEBUG] [Thread-113262] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:23:32.281 [DEBUG] [Thread-113262] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:23:32.281 [DEBUG] [Thread-113262] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:23:32.284 [DEBUG] [Thread-113262] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:23:32.296 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:23:32.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:23:32.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:23:32.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:23:32.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:23:32.308 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:23:32.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:23:32.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:23:32.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:23:32.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.307733 -999.00  +19.50  16.98     13   -8.80 1 1 1 1 1   888    0 32.44 191.39 ----- 19.6 17.0 20.6 29.6 25.7 -30.3 24.7 -29.5 23.3 -30.4 24.1 -29.1
2025-11-03T09:23:32.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:23:32.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:23:32.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.307733
2025-11-03T09:23:32.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:23:32.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:23:32.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:23:32.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:23:32.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:23:32.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:23:07', tmtdew=34.96, humidity=8.13, cloud=0.0, wind=12.76, temperature=19.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:23:08.131', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:23:32.311 [DEBUG] [Thread-113262] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:23:32.395 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:23:32.407 [DEBUG] [Thread-113265] [transport.py] [_log()] starting thread (client mode): 0xed04700
2025-11-03T09:23:32.407 [DEBUG] [Thread-113265] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:23:32.422 [DEBUG] [Thread-113265] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:23:32.422 [INFO] [Thread-113265] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:23:32.430 [DEBUG] [Thread-113265] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:23:32.430 [DEBUG] [Thread-113265] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:23:32.430 [DEBUG] [Thread-113265] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:23:32.430 [DEBUG] [Thread-113265] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:23:32.430 [DEBUG] [Thread-113265] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:23:32.430 [DEBUG] [Thread-113265] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:23:32.430 [DEBUG] [Thread-113265] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:23:32.430 [DEBUG] [Thread-113265] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:23:32.430 [DEBUG] [Thread-113265] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:23:32.430 [DEBUG] [Thread-113265] [transport.py] [_log()] client lang: <none>
2025-11-03T09:23:32.430 [DEBUG] [Thread-113265] [transport.py] [_log()] server lang: <none>
2025-11-03T09:23:32.430 [DEBUG] [Thread-113265] [transport.py] [_log()] kex follows: False
2025-11-03T09:23:32.430 [DEBUG] [Thread-113265] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:23:32.431 [DEBUG] [Thread-113265] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:23:32.431 [DEBUG] [Thread-113265] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:23:32.431 [DEBUG] [Thread-113265] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:23:32.431 [DEBUG] [Thread-113265] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:23:32.431 [DEBUG] [Thread-113265] [transport.py] [_log()] Compression: none
2025-11-03T09:23:32.431 [DEBUG] [Thread-113265] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:23:32.489 [DEBUG] [Thread-113265] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:23:32.489 [DEBUG] [Thread-113265] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:23:32.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:23:32.490 [DEBUG] [Thread-113265] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:23:32.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:23:32.544 [DEBUG] [Thread-113265] [transport.py] [_log()] userauth is OK
2025-11-03T09:23:32.545 [DEBUG] [Thread-113265] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:23:32.545 [DEBUG] [Thread-113265] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:23:32.545 [DEBUG] [Thread-113265] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:23:32.545 [DEBUG] [Thread-113265] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:23:32.565 [INFO] [Thread-113265] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:23:32.574 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:23:32.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:23:33.445 [DEBUG] [Thread-113265] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:23:33.445 [DEBUG] [Thread-113265] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:23:33.493 [DEBUG] [Thread-113265] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:23:33.493 [DEBUG] [Thread-113265] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:23:33.502 [DEBUG] [Thread-113265] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:23:33.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:23:33.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:23:33.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:23:33.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:23:33.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:23:33.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:23:33.535 [DEBUG] [Thread-113265] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:23:39.331 [DEBUG] [Thread-113267 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:23:47.761 [DEBUG] [Thread-113268 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:23:54.377 [DEBUG] [Thread-113269 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:24:03.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:24:03.542 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:24:03.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:24:04.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 23, 39), 34.6, 8.22, 0.0, 16.75, 19.87, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:24:04.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:23:39
2025-11-03T09:24:04.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:24:04.493 [DEBUG] [Thread-113270] [transport.py] [_log()] starting thread (client mode): 0xed2d720
2025-11-03T09:24:04.493 [DEBUG] [Thread-113270] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:24:04.514 [DEBUG] [Thread-113270] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:24:04.514 [INFO] [Thread-113270] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:24:04.517 [DEBUG] [Thread-113270] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:24:04.517 [DEBUG] [Thread-113270] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:24:04.517 [DEBUG] [Thread-113270] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:24:04.517 [DEBUG] [Thread-113270] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:24:04.517 [DEBUG] [Thread-113270] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:24:04.517 [DEBUG] [Thread-113270] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:24:04.518 [DEBUG] [Thread-113270] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:24:04.518 [DEBUG] [Thread-113270] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:24:04.518 [DEBUG] [Thread-113270] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:24:04.518 [DEBUG] [Thread-113270] [transport.py] [_log()] client lang: <none>
2025-11-03T09:24:04.518 [DEBUG] [Thread-113270] [transport.py] [_log()] server lang: <none>
2025-11-03T09:24:04.518 [DEBUG] [Thread-113270] [transport.py] [_log()] kex follows: False
2025-11-03T09:24:04.518 [DEBUG] [Thread-113270] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:24:04.518 [DEBUG] [Thread-113270] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:24:04.518 [DEBUG] [Thread-113270] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:24:04.518 [DEBUG] [Thread-113270] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:24:04.518 [DEBUG] [Thread-113270] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:24:04.519 [DEBUG] [Thread-113270] [transport.py] [_log()] Compression: none
2025-11-03T09:24:04.519 [DEBUG] [Thread-113270] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:24:04.538 [DEBUG] [Thread-113270] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:24:04.539 [DEBUG] [Thread-113270] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:24:04.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:24:04.540 [DEBUG] [Thread-113270] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:24:04.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:24:04.542 [DEBUG] [Thread-113270] [transport.py] [_log()] userauth is OK
2025-11-03T09:24:04.543 [DEBUG] [Thread-113270] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:24:04.543 [DEBUG] [Thread-113270] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:24:04.543 [DEBUG] [Thread-113270] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:24:04.543 [DEBUG] [Thread-113270] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:24:04.578 [INFO] [Thread-113270] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:24:04.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:24:05.218 [DEBUG] [Thread-113270] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:24:05.218 [DEBUG] [Thread-113270] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:24:05.219 [DEBUG] [Thread-113270] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:24:05.259 [DEBUG] [Thread-113270] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:24:05.259 [DEBUG] [Thread-113270] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:24:05.262 [DEBUG] [Thread-113270] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:24:05.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:24:05.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:24:05.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:24:05.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:24:05.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:24:05.285 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:24:05.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:24:05.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:24:05.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:24:05.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.308080 -999.00  +19.30  20.49     14   -8.80 1 1 1 1 1   888    0 32.13 176.11 ----- 20.1 20.5 57.0 27.5 25.7 -29.3 24.7 -29.9 23.2 -31.2 24.1 -29.2
2025-11-03T09:24:05.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:24:05.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:24:05.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.308080
2025-11-03T09:24:05.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:24:05.288 [DEBUG] [Thread-113270] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:24:05.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:24:05.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:24:05.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:24:05.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:24:05.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:23:39', tmtdew=34.6, humidity=8.22, cloud=0.0, wind=16.75, temperature=19.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:23:38.112', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:24:05.373 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:24:05.385 [DEBUG] [Thread-113273] [transport.py] [_log()] starting thread (client mode): 0xed370a0
2025-11-03T09:24:05.385 [DEBUG] [Thread-113273] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:24:05.403 [DEBUG] [Thread-113273] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:24:05.403 [INFO] [Thread-113273] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:24:05.410 [DEBUG] [Thread-113273] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:24:05.410 [DEBUG] [Thread-113273] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:24:05.411 [DEBUG] [Thread-113273] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:24:05.411 [DEBUG] [Thread-113273] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:24:05.411 [DEBUG] [Thread-113273] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:24:05.411 [DEBUG] [Thread-113273] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:24:05.411 [DEBUG] [Thread-113273] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:24:05.411 [DEBUG] [Thread-113273] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:24:05.411 [DEBUG] [Thread-113273] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:24:05.411 [DEBUG] [Thread-113273] [transport.py] [_log()] client lang: <none>
2025-11-03T09:24:05.411 [DEBUG] [Thread-113273] [transport.py] [_log()] server lang: <none>
2025-11-03T09:24:05.411 [DEBUG] [Thread-113273] [transport.py] [_log()] kex follows: False
2025-11-03T09:24:05.411 [DEBUG] [Thread-113273] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:24:05.411 [DEBUG] [Thread-113273] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:24:05.411 [DEBUG] [Thread-113273] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:24:05.411 [DEBUG] [Thread-113273] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:24:05.411 [DEBUG] [Thread-113273] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:24:05.412 [DEBUG] [Thread-113273] [transport.py] [_log()] Compression: none
2025-11-03T09:24:05.412 [DEBUG] [Thread-113273] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:24:05.469 [DEBUG] [Thread-113273] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:24:05.470 [DEBUG] [Thread-113273] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:24:05.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:24:05.471 [DEBUG] [Thread-113273] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:24:05.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:24:05.532 [DEBUG] [Thread-113273] [transport.py] [_log()] userauth is OK
2025-11-03T09:24:05.532 [DEBUG] [Thread-113273] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:24:05.532 [DEBUG] [Thread-113273] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:24:05.533 [DEBUG] [Thread-113273] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:24:05.533 [DEBUG] [Thread-113273] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:24:05.553 [INFO] [Thread-113273] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:24:05.554 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:24:05.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:24:06.498 [DEBUG] [Thread-113273] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:24:06.498 [DEBUG] [Thread-113273] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:24:06.545 [DEBUG] [Thread-113273] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:24:06.545 [DEBUG] [Thread-113273] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:24:06.553 [DEBUG] [Thread-113273] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:24:06.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:24:06.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:24:06.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:24:06.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:24:06.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:24:06.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:24:06.585 [DEBUG] [Thread-113273] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:24:09.412 [DEBUG] [Thread-113275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:24:14.202 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:24:14.202 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:24:24.479 [DEBUG] [Thread-113276 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:24:36.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:24:36.590 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:24:36.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:24:37.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 24, 12), 34.47, 8.31, 0.0, 12.64, 19.84, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:24:37.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:24:12
2025-11-03T09:24:37.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:24:37.533 [DEBUG] [Thread-113277] [transport.py] [_log()] starting thread (client mode): 0xed42500
2025-11-03T09:24:37.533 [DEBUG] [Thread-113277] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:24:37.554 [DEBUG] [Thread-113277] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:24:37.554 [INFO] [Thread-113277] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:24:37.566 [DEBUG] [Thread-113277] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:24:37.567 [DEBUG] [Thread-113277] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:24:37.567 [DEBUG] [Thread-113277] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:24:37.567 [DEBUG] [Thread-113277] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:24:37.567 [DEBUG] [Thread-113277] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:24:37.567 [DEBUG] [Thread-113277] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:24:37.567 [DEBUG] [Thread-113277] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:24:37.567 [DEBUG] [Thread-113277] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:24:37.567 [DEBUG] [Thread-113277] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:24:37.567 [DEBUG] [Thread-113277] [transport.py] [_log()] client lang: <none>
2025-11-03T09:24:37.567 [DEBUG] [Thread-113277] [transport.py] [_log()] server lang: <none>
2025-11-03T09:24:37.567 [DEBUG] [Thread-113277] [transport.py] [_log()] kex follows: False
2025-11-03T09:24:37.567 [DEBUG] [Thread-113277] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:24:37.567 [DEBUG] [Thread-113277] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:24:37.567 [DEBUG] [Thread-113277] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:24:37.567 [DEBUG] [Thread-113277] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:24:37.568 [DEBUG] [Thread-113277] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:24:37.568 [DEBUG] [Thread-113277] [transport.py] [_log()] Compression: none
2025-11-03T09:24:37.568 [DEBUG] [Thread-113277] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:24:37.585 [DEBUG] [Thread-113277] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:24:37.585 [DEBUG] [Thread-113277] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:24:37.586 [DEBUG] [Thread-113277] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:24:37.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:24:37.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:24:37.588 [DEBUG] [Thread-113277] [transport.py] [_log()] userauth is OK
2025-11-03T09:24:37.588 [DEBUG] [Thread-113277] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:24:37.588 [DEBUG] [Thread-113277] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:24:37.588 [DEBUG] [Thread-113277] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:24:37.588 [DEBUG] [Thread-113277] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:24:37.610 [INFO] [Thread-113277] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:24:37.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:24:38.251 [DEBUG] [Thread-113277] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:24:38.251 [DEBUG] [Thread-113277] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:24:38.251 [DEBUG] [Thread-113277] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:24:38.291 [DEBUG] [Thread-113277] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:24:38.291 [DEBUG] [Thread-113277] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:24:38.293 [DEBUG] [Thread-113277] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:24:38.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:24:38.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:24:38.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:24:38.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:24:38.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:24:38.312 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:24:38.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:24:38.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:24:38.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:24:38.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.308427 -999.00  +19.30  15.24     13   -9.10 1 1 1 1 1   888    0 32.53 183.30 ----- 16.3 15.2 36.2 22.4 25.7 -29.1 24.8 -28.8 23.3 -29.5 24.1 -29.0
2025-11-03T09:24:38.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:24:38.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:24:38.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.308427
2025-11-03T09:24:38.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:24:38.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:24:38.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:24:38.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:24:38.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:24:38.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:24:12', tmtdew=34.47, humidity=8.31, cloud=0.0, wind=12.64, temperature=19.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:24:08.093', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:24:38.313 [DEBUG] [Thread-113277] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:24:38.385 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:24:38.397 [DEBUG] [Thread-113280] [transport.py] [_log()] starting thread (client mode): 0x81d9bd0
2025-11-03T09:24:38.397 [DEBUG] [Thread-113280] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:24:38.415 [DEBUG] [Thread-113280] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:24:38.415 [INFO] [Thread-113280] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:24:38.423 [DEBUG] [Thread-113280] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:24:38.423 [DEBUG] [Thread-113280] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:24:38.423 [DEBUG] [Thread-113280] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:24:38.423 [DEBUG] [Thread-113280] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:24:38.423 [DEBUG] [Thread-113280] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:24:38.423 [DEBUG] [Thread-113280] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:24:38.423 [DEBUG] [Thread-113280] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:24:38.423 [DEBUG] [Thread-113280] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:24:38.423 [DEBUG] [Thread-113280] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:24:38.423 [DEBUG] [Thread-113280] [transport.py] [_log()] client lang: <none>
2025-11-03T09:24:38.423 [DEBUG] [Thread-113280] [transport.py] [_log()] server lang: <none>
2025-11-03T09:24:38.423 [DEBUG] [Thread-113280] [transport.py] [_log()] kex follows: False
2025-11-03T09:24:38.423 [DEBUG] [Thread-113280] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:24:38.423 [DEBUG] [Thread-113280] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:24:38.423 [DEBUG] [Thread-113280] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:24:38.423 [DEBUG] [Thread-113280] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:24:38.424 [DEBUG] [Thread-113280] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:24:38.424 [DEBUG] [Thread-113280] [transport.py] [_log()] Compression: none
2025-11-03T09:24:38.424 [DEBUG] [Thread-113280] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:24:38.478 [DEBUG] [Thread-113280] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:24:38.479 [DEBUG] [Thread-113280] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:24:38.479 [DEBUG] [Thread-113280] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:24:38.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:24:38.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:24:38.535 [DEBUG] [Thread-113280] [transport.py] [_log()] userauth is OK
2025-11-03T09:24:38.535 [DEBUG] [Thread-113280] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:24:38.535 [DEBUG] [Thread-113280] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:24:38.535 [DEBUG] [Thread-113280] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:24:38.536 [DEBUG] [Thread-113280] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:24:38.549 [INFO] [Thread-113280] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:24:38.550 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:24:38.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:24:39.413 [DEBUG] [Thread-113280] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:24:39.413 [DEBUG] [Thread-113280] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:24:39.464 [DEBUG] [Thread-113280] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:24:39.465 [DEBUG] [Thread-113280] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:24:39.477 [DEBUG] [Thread-113280] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:24:39.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:24:39.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:24:39.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:24:39.515 [DEBUG] [Thread-113282 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:24:39.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:24:39.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:24:39.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:24:39.528 [DEBUG] [Thread-113280] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:24:47.805 [DEBUG] [Thread-113283 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:24:54.571 [DEBUG] [Thread-113284 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:25:09.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:25:09.548 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:25:09.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:25:09.601 [DEBUG] [Thread-113285 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:25:10.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 24, 44), 34.5, 8.27, 0.0, 14.38, 19.87, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:25:10.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:24:44
2025-11-03T09:25:10.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:25:10.534 [DEBUG] [Thread-113286] [transport.py] [_log()] starting thread (client mode): 0xed2c190
2025-11-03T09:25:10.534 [DEBUG] [Thread-113286] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:25:10.554 [DEBUG] [Thread-113286] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:25:10.554 [INFO] [Thread-113286] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:25:10.558 [DEBUG] [Thread-113286] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:25:10.558 [DEBUG] [Thread-113286] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:25:10.558 [DEBUG] [Thread-113286] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:25:10.558 [DEBUG] [Thread-113286] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:25:10.558 [DEBUG] [Thread-113286] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:25:10.558 [DEBUG] [Thread-113286] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:25:10.558 [DEBUG] [Thread-113286] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:25:10.558 [DEBUG] [Thread-113286] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:25:10.558 [DEBUG] [Thread-113286] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:25:10.558 [DEBUG] [Thread-113286] [transport.py] [_log()] client lang: <none>
2025-11-03T09:25:10.558 [DEBUG] [Thread-113286] [transport.py] [_log()] server lang: <none>
2025-11-03T09:25:10.558 [DEBUG] [Thread-113286] [transport.py] [_log()] kex follows: False
2025-11-03T09:25:10.558 [DEBUG] [Thread-113286] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:25:10.558 [DEBUG] [Thread-113286] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:25:10.558 [DEBUG] [Thread-113286] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:25:10.558 [DEBUG] [Thread-113286] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:25:10.558 [DEBUG] [Thread-113286] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:25:10.558 [DEBUG] [Thread-113286] [transport.py] [_log()] Compression: none
2025-11-03T09:25:10.558 [DEBUG] [Thread-113286] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:25:10.574 [DEBUG] [Thread-113286] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:25:10.574 [DEBUG] [Thread-113286] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:25:10.574 [DEBUG] [Thread-113286] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:25:10.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:25:10.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:25:10.575 [DEBUG] [Thread-113286] [transport.py] [_log()] userauth is OK
2025-11-03T09:25:10.575 [DEBUG] [Thread-113286] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:25:10.575 [DEBUG] [Thread-113286] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:25:10.575 [DEBUG] [Thread-113286] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:25:10.575 [DEBUG] [Thread-113286] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:25:10.584 [INFO] [Thread-113286] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:25:10.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:25:14.343 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:25:14.344 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:25:16.659 [DEBUG] [Thread-113286] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:25:16.668 [DEBUG] [Thread-113286] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:25:16.669 [DEBUG] [Thread-113286] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:25:16.702 [DEBUG] [Thread-113286] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:25:16.702 [DEBUG] [Thread-113286] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:25:16.705 [DEBUG] [Thread-113286] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:25:16.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:25:16.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:25:16.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:25:16.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:25:16.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:25:16.751 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:25:16.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:25:16.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:25:16.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:25:16.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.308774 -999.00  +19.40  15.80     14   -8.70 1 1 1 1 1   888    0 32.67 195.98 ----- 16.4 15.8 54.4 18.0 25.7 -29.3 24.8 -28.2 23.4 -28.0 24.1 -28.5
2025-11-03T09:25:16.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:25:16.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:25:16.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.308774
2025-11-03T09:25:16.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:25:16.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:25:16.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:25:16.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:25:16.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:25:16.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:24:44', tmtdew=34.5, humidity=8.27, cloud=0.0, wind=14.38, temperature=19.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:24:38.074', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:25:16.754 [DEBUG] [Thread-113286] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:25:16.829 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:25:16.842 [DEBUG] [Thread-113289] [transport.py] [_log()] starting thread (client mode): 0x117bc460
2025-11-03T09:25:16.842 [DEBUG] [Thread-113289] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:25:16.858 [DEBUG] [Thread-113289] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:25:16.858 [INFO] [Thread-113289] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:25:16.865 [DEBUG] [Thread-113289] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:25:16.866 [DEBUG] [Thread-113289] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:25:16.866 [DEBUG] [Thread-113289] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:25:16.866 [DEBUG] [Thread-113289] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:25:16.866 [DEBUG] [Thread-113289] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:25:16.866 [DEBUG] [Thread-113289] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:25:16.866 [DEBUG] [Thread-113289] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:25:16.866 [DEBUG] [Thread-113289] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:25:16.866 [DEBUG] [Thread-113289] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:25:16.866 [DEBUG] [Thread-113289] [transport.py] [_log()] client lang: <none>
2025-11-03T09:25:16.866 [DEBUG] [Thread-113289] [transport.py] [_log()] server lang: <none>
2025-11-03T09:25:16.866 [DEBUG] [Thread-113289] [transport.py] [_log()] kex follows: False
2025-11-03T09:25:16.866 [DEBUG] [Thread-113289] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:25:16.866 [DEBUG] [Thread-113289] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:25:16.866 [DEBUG] [Thread-113289] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:25:16.866 [DEBUG] [Thread-113289] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:25:16.867 [DEBUG] [Thread-113289] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:25:16.876 [DEBUG] [Thread-113289] [transport.py] [_log()] Compression: none
2025-11-03T09:25:16.876 [DEBUG] [Thread-113289] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:25:16.924 [DEBUG] [Thread-113289] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:25:16.925 [DEBUG] [Thread-113289] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:25:16.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:25:16.926 [DEBUG] [Thread-113289] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:25:16.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:25:16.980 [DEBUG] [Thread-113289] [transport.py] [_log()] userauth is OK
2025-11-03T09:25:16.981 [DEBUG] [Thread-113289] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:25:16.981 [DEBUG] [Thread-113289] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:25:16.981 [DEBUG] [Thread-113289] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:25:16.981 [DEBUG] [Thread-113289] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:25:16.999 [INFO] [Thread-113289] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:25:17.000 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:25:17.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:25:17.882 [DEBUG] [Thread-113289] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:25:17.882 [DEBUG] [Thread-113289] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:25:17.929 [DEBUG] [Thread-113289] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:25:17.929 [DEBUG] [Thread-113289] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:25:17.937 [DEBUG] [Thread-113289] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:25:17.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:25:17.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:25:17.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:25:17.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:25:17.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:25:17.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:25:17.968 [DEBUG] [Thread-113289] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:25:24.637 [DEBUG] [Thread-113291 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:25:39.703 [DEBUG] [Thread-113292 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:25:47.857 [DEBUG] [Thread-113293 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:25:47.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:25:47.990 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:25:47.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:25:48.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 25, 16), 34.94, 8.01, 0.0, 15.6, 20.05, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:25:48.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:25:16
2025-11-03T09:25:48.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:25:48.965 [DEBUG] [Thread-113294] [transport.py] [_log()] starting thread (client mode): 0xed2fb50
2025-11-03T09:25:48.965 [DEBUG] [Thread-113294] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:25:48.985 [DEBUG] [Thread-113294] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:25:48.985 [INFO] [Thread-113294] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:25:48.988 [DEBUG] [Thread-113294] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:25:48.988 [DEBUG] [Thread-113294] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:25:48.988 [DEBUG] [Thread-113294] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:25:48.988 [DEBUG] [Thread-113294] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:25:48.989 [DEBUG] [Thread-113294] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:25:48.989 [DEBUG] [Thread-113294] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:25:48.989 [DEBUG] [Thread-113294] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:25:48.989 [DEBUG] [Thread-113294] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:25:48.989 [DEBUG] [Thread-113294] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:25:48.989 [DEBUG] [Thread-113294] [transport.py] [_log()] client lang: <none>
2025-11-03T09:25:48.989 [DEBUG] [Thread-113294] [transport.py] [_log()] server lang: <none>
2025-11-03T09:25:48.989 [DEBUG] [Thread-113294] [transport.py] [_log()] kex follows: False
2025-11-03T09:25:48.989 [DEBUG] [Thread-113294] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:25:48.989 [DEBUG] [Thread-113294] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:25:48.989 [DEBUG] [Thread-113294] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:25:48.989 [DEBUG] [Thread-113294] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:25:48.989 [DEBUG] [Thread-113294] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:25:48.989 [DEBUG] [Thread-113294] [transport.py] [_log()] Compression: none
2025-11-03T09:25:48.989 [DEBUG] [Thread-113294] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:25:49.005 [DEBUG] [Thread-113294] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:25:49.005 [DEBUG] [Thread-113294] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:25:49.005 [DEBUG] [Thread-113294] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:25:49.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:25:49.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:25:49.006 [DEBUG] [Thread-113294] [transport.py] [_log()] userauth is OK
2025-11-03T09:25:49.006 [DEBUG] [Thread-113294] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:25:49.006 [DEBUG] [Thread-113294] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:25:49.006 [DEBUG] [Thread-113294] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:25:49.007 [DEBUG] [Thread-113294] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:25:49.019 [INFO] [Thread-113294] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:25:49.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:25:49.664 [DEBUG] [Thread-113294] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:25:49.664 [DEBUG] [Thread-113294] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:25:49.665 [DEBUG] [Thread-113294] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:25:49.706 [DEBUG] [Thread-113294] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:25:49.706 [DEBUG] [Thread-113294] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:25:49.708 [DEBUG] [Thread-113294] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:25:49.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:25:49.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:25:49.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:25:49.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:25:49.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:25:49.725 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:25:49.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:25:49.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:25:49.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:25:49.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.309121 -999.00  +19.60  15.65     14   -8.50 1 1 1 1 1   888    0 33.66 206.91 ----- 15.7 15.7 53.6 18.3 25.8 -28.3 24.9 -29.1 23.5 -28.9 24.2 -28.9
2025-11-03T09:25:49.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:25:49.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:25:49.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.309121
2025-11-03T09:25:49.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:25:49.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:25:49.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:25:49.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:25:49.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:25:49.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:25:16', tmtdew=34.94, humidity=8.01, cloud=0.0, wind=15.6, temperature=20.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:25:08.054', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:25:49.726 [DEBUG] [Thread-113294] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:25:49.801 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:25:49.812 [DEBUG] [Thread-113297] [transport.py] [_log()] starting thread (client mode): 0xed2dd50
2025-11-03T09:25:49.813 [DEBUG] [Thread-113297] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:25:49.827 [DEBUG] [Thread-113297] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:25:49.827 [INFO] [Thread-113297] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:25:49.834 [DEBUG] [Thread-113297] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:25:49.835 [DEBUG] [Thread-113297] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:25:49.835 [DEBUG] [Thread-113297] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:25:49.835 [DEBUG] [Thread-113297] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:25:49.835 [DEBUG] [Thread-113297] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:25:49.835 [DEBUG] [Thread-113297] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:25:49.835 [DEBUG] [Thread-113297] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:25:49.835 [DEBUG] [Thread-113297] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:25:49.835 [DEBUG] [Thread-113297] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:25:49.835 [DEBUG] [Thread-113297] [transport.py] [_log()] client lang: <none>
2025-11-03T09:25:49.835 [DEBUG] [Thread-113297] [transport.py] [_log()] server lang: <none>
2025-11-03T09:25:49.835 [DEBUG] [Thread-113297] [transport.py] [_log()] kex follows: False
2025-11-03T09:25:49.835 [DEBUG] [Thread-113297] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:25:49.835 [DEBUG] [Thread-113297] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:25:49.835 [DEBUG] [Thread-113297] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:25:49.835 [DEBUG] [Thread-113297] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:25:49.835 [DEBUG] [Thread-113297] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:25:49.835 [DEBUG] [Thread-113297] [transport.py] [_log()] Compression: none
2025-11-03T09:25:49.835 [DEBUG] [Thread-113297] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:25:49.890 [DEBUG] [Thread-113297] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:25:49.890 [DEBUG] [Thread-113297] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:25:49.891 [DEBUG] [Thread-113297] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:25:49.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:25:49.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:25:49.947 [DEBUG] [Thread-113297] [transport.py] [_log()] userauth is OK
2025-11-03T09:25:49.947 [DEBUG] [Thread-113297] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:25:49.947 [DEBUG] [Thread-113297] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:25:49.947 [DEBUG] [Thread-113297] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:25:49.947 [DEBUG] [Thread-113297] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:25:49.962 [INFO] [Thread-113297] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:25:49.963 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:25:49.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:25:50.823 [DEBUG] [Thread-113297] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:25:50.824 [DEBUG] [Thread-113297] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:25:50.871 [DEBUG] [Thread-113297] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:25:50.871 [DEBUG] [Thread-113297] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:25:50.880 [DEBUG] [Thread-113297] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:25:50.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:25:50.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:25:50.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:25:50.904 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:25:50.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:25:50.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:25:50.912 [DEBUG] [Thread-113297] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:25:54.733 [DEBUG] [Thread-113299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:26:09.777 [DEBUG] [Thread-113300 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:26:14.485 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:26:14.487 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:26:20.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:26:20.935 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:26:20.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:26:21.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 25, 48), 35.22, 7.84, 0.0, 12.12, 20.29, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:26:21.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:25:48
2025-11-03T09:26:21.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:26:21.899 [DEBUG] [Thread-113301] [transport.py] [_log()] starting thread (client mode): 0xedb3400
2025-11-03T09:26:21.899 [DEBUG] [Thread-113301] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:26:21.914 [DEBUG] [Thread-113301] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:26:21.914 [INFO] [Thread-113301] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:26:21.915 [DEBUG] [Thread-113301] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:26:21.915 [DEBUG] [Thread-113301] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:26:21.915 [DEBUG] [Thread-113301] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:26:21.915 [DEBUG] [Thread-113301] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:26:21.915 [DEBUG] [Thread-113301] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:26:21.915 [DEBUG] [Thread-113301] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:26:21.915 [DEBUG] [Thread-113301] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:26:21.915 [DEBUG] [Thread-113301] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:26:21.915 [DEBUG] [Thread-113301] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:26:21.915 [DEBUG] [Thread-113301] [transport.py] [_log()] client lang: <none>
2025-11-03T09:26:21.916 [DEBUG] [Thread-113301] [transport.py] [_log()] server lang: <none>
2025-11-03T09:26:21.916 [DEBUG] [Thread-113301] [transport.py] [_log()] kex follows: False
2025-11-03T09:26:21.916 [DEBUG] [Thread-113301] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:26:21.916 [DEBUG] [Thread-113301] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:26:21.916 [DEBUG] [Thread-113301] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:26:21.916 [DEBUG] [Thread-113301] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:26:21.916 [DEBUG] [Thread-113301] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:26:21.916 [DEBUG] [Thread-113301] [transport.py] [_log()] Compression: none
2025-11-03T09:26:21.916 [DEBUG] [Thread-113301] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:26:21.925 [DEBUG] [Thread-113301] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:26:21.925 [DEBUG] [Thread-113301] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:26:21.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:26:21.925 [DEBUG] [Thread-113301] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:26:21.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:26:21.926 [DEBUG] [Thread-113301] [transport.py] [_log()] userauth is OK
2025-11-03T09:26:21.926 [DEBUG] [Thread-113301] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:26:21.926 [DEBUG] [Thread-113301] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:26:21.926 [DEBUG] [Thread-113301] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:26:21.926 [DEBUG] [Thread-113301] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:26:21.940 [INFO] [Thread-113301] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:26:21.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:26:22.488 [DEBUG] [Thread-113301] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:26:22.488 [DEBUG] [Thread-113301] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:26:22.488 [DEBUG] [Thread-113301] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:26:22.528 [DEBUG] [Thread-113301] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:26:22.528 [DEBUG] [Thread-113301] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:26:22.531 [DEBUG] [Thread-113301] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:26:22.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:26:22.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:26:22.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:26:22.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:26:22.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:26:22.550 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:26:22.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:26:22.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:26:22.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:26:22.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.309469 -999.00  +19.90  15.21     13   -8.40 1 1 1 1 1   888    0 32.64 166.87 ----- 17.0 15.2 53.2 17.4 25.9 -28.8 25.0 -28.5 23.5 -28.5 24.3 -28.4
2025-11-03T09:26:22.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:26:22.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:26:22.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.309469
2025-11-03T09:26:22.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:26:22.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:26:22.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:26:22.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:26:22.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:26:22.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:25:48', tmtdew=35.22, humidity=7.84, cloud=0.0, wind=12.12, temperature=20.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:25:38.122', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:26:22.552 [DEBUG] [Thread-113301] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:26:22.626 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:26:22.638 [DEBUG] [Thread-113304] [transport.py] [_log()] starting thread (client mode): 0x81dad10
2025-11-03T09:26:22.638 [DEBUG] [Thread-113304] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:26:22.655 [DEBUG] [Thread-113304] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:26:22.655 [INFO] [Thread-113304] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:26:22.662 [DEBUG] [Thread-113304] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:26:22.662 [DEBUG] [Thread-113304] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:26:22.662 [DEBUG] [Thread-113304] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:26:22.662 [DEBUG] [Thread-113304] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:26:22.662 [DEBUG] [Thread-113304] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:26:22.662 [DEBUG] [Thread-113304] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:26:22.662 [DEBUG] [Thread-113304] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:26:22.662 [DEBUG] [Thread-113304] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:26:22.663 [DEBUG] [Thread-113304] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:26:22.663 [DEBUG] [Thread-113304] [transport.py] [_log()] client lang: <none>
2025-11-03T09:26:22.663 [DEBUG] [Thread-113304] [transport.py] [_log()] server lang: <none>
2025-11-03T09:26:22.663 [DEBUG] [Thread-113304] [transport.py] [_log()] kex follows: False
2025-11-03T09:26:22.663 [DEBUG] [Thread-113304] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:26:22.663 [DEBUG] [Thread-113304] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:26:22.663 [DEBUG] [Thread-113304] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:26:22.663 [DEBUG] [Thread-113304] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:26:22.663 [DEBUG] [Thread-113304] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:26:22.663 [DEBUG] [Thread-113304] [transport.py] [_log()] Compression: none
2025-11-03T09:26:22.663 [DEBUG] [Thread-113304] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:26:22.721 [DEBUG] [Thread-113304] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:26:22.721 [DEBUG] [Thread-113304] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:26:22.721 [DEBUG] [Thread-113304] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:26:22.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:26:22.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:26:22.779 [DEBUG] [Thread-113304] [transport.py] [_log()] userauth is OK
2025-11-03T09:26:22.779 [DEBUG] [Thread-113304] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:26:22.779 [DEBUG] [Thread-113304] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:26:22.779 [DEBUG] [Thread-113304] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:26:22.779 [DEBUG] [Thread-113304] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:26:22.793 [INFO] [Thread-113304] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:26:22.793 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:26:22.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:26:23.663 [DEBUG] [Thread-113304] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:26:23.664 [DEBUG] [Thread-113304] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:26:23.712 [DEBUG] [Thread-113304] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:26:23.712 [DEBUG] [Thread-113304] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:26:23.722 [DEBUG] [Thread-113304] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:26:23.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:26:23.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:26:23.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:26:23.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:26:23.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:26:23.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:26:23.760 [DEBUG] [Thread-113304] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:26:24.810 [DEBUG] [Thread-113306 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:26:39.849 [DEBUG] [Thread-113307 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:26:47.938 [DEBUG] [Thread-113308 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:26:53.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:26:53.783 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:26:53.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:26:54.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 26, 20), 35.2, 7.86, 0.0, 12.67, 20.34, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:26:54.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:26:20
2025-11-03T09:26:54.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:26:54.776 [DEBUG] [Thread-113309] [transport.py] [_log()] starting thread (client mode): 0xedb3ca0
2025-11-03T09:26:54.776 [DEBUG] [Thread-113309] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:26:54.798 [DEBUG] [Thread-113309] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:26:54.798 [INFO] [Thread-113309] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:26:54.801 [DEBUG] [Thread-113309] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:26:54.801 [DEBUG] [Thread-113309] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:26:54.801 [DEBUG] [Thread-113309] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:26:54.801 [DEBUG] [Thread-113309] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:26:54.801 [DEBUG] [Thread-113309] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:26:54.801 [DEBUG] [Thread-113309] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:26:54.801 [DEBUG] [Thread-113309] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:26:54.801 [DEBUG] [Thread-113309] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:26:54.801 [DEBUG] [Thread-113309] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:26:54.801 [DEBUG] [Thread-113309] [transport.py] [_log()] client lang: <none>
2025-11-03T09:26:54.801 [DEBUG] [Thread-113309] [transport.py] [_log()] server lang: <none>
2025-11-03T09:26:54.801 [DEBUG] [Thread-113309] [transport.py] [_log()] kex follows: False
2025-11-03T09:26:54.801 [DEBUG] [Thread-113309] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:26:54.801 [DEBUG] [Thread-113309] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:26:54.801 [DEBUG] [Thread-113309] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:26:54.801 [DEBUG] [Thread-113309] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:26:54.801 [DEBUG] [Thread-113309] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:26:54.801 [DEBUG] [Thread-113309] [transport.py] [_log()] Compression: none
2025-11-03T09:26:54.801 [DEBUG] [Thread-113309] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:26:54.813 [DEBUG] [Thread-113309] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:26:54.813 [DEBUG] [Thread-113309] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:26:54.813 [DEBUG] [Thread-113309] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:26:54.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:26:54.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:26:54.814 [DEBUG] [Thread-113309] [transport.py] [_log()] userauth is OK
2025-11-03T09:26:54.814 [DEBUG] [Thread-113309] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:26:54.814 [DEBUG] [Thread-113309] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:26:54.814 [DEBUG] [Thread-113309] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:26:54.814 [DEBUG] [Thread-113309] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:26:54.829 [INFO] [Thread-113309] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:26:54.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:26:54.885 [DEBUG] [Thread-113311 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:26:55.481 [DEBUG] [Thread-113309] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:26:55.482 [DEBUG] [Thread-113309] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:26:55.482 [DEBUG] [Thread-113309] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:26:55.522 [DEBUG] [Thread-113309] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:26:55.522 [DEBUG] [Thread-113309] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:26:55.524 [DEBUG] [Thread-113309] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:26:55.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:26:55.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:26:55.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:26:55.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:26:55.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:26:55.542 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:26:55.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:26:55.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:26:55.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:26:55.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.310163 -999.00  +20.10  16.52     13   -8.80 1 1 1 1 1   888    0 33.18 195.71 ----- 19.3 16.5 51.2 18.4 26.1 -29.2 25.2 -28.6 23.7 -28.5 24.4 -28.6
2025-11-03T09:26:55.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:26:55.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:26:55.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.310163
2025-11-03T09:26:55.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:26:55.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:26:55.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:26:55.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:26:55.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:26:55.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:26:20', tmtdew=35.2, humidity=7.86, cloud=0.0, wind=12.67, temperature=20.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:26:38.083', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:26:55.544 [DEBUG] [Thread-113309] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:26:55.617 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:26:55.628 [DEBUG] [Thread-113313] [transport.py] [_log()] starting thread (client mode): 0xed37280
2025-11-03T09:26:55.628 [DEBUG] [Thread-113313] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:26:55.643 [DEBUG] [Thread-113313] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:26:55.643 [INFO] [Thread-113313] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:26:55.651 [DEBUG] [Thread-113313] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:26:55.651 [DEBUG] [Thread-113313] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:26:55.651 [DEBUG] [Thread-113313] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:26:55.651 [DEBUG] [Thread-113313] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:26:55.651 [DEBUG] [Thread-113313] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:26:55.651 [DEBUG] [Thread-113313] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:26:55.651 [DEBUG] [Thread-113313] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:26:55.651 [DEBUG] [Thread-113313] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:26:55.651 [DEBUG] [Thread-113313] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:26:55.651 [DEBUG] [Thread-113313] [transport.py] [_log()] client lang: <none>
2025-11-03T09:26:55.651 [DEBUG] [Thread-113313] [transport.py] [_log()] server lang: <none>
2025-11-03T09:26:55.651 [DEBUG] [Thread-113313] [transport.py] [_log()] kex follows: False
2025-11-03T09:26:55.651 [DEBUG] [Thread-113313] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:26:55.651 [DEBUG] [Thread-113313] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:26:55.651 [DEBUG] [Thread-113313] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:26:55.651 [DEBUG] [Thread-113313] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:26:55.651 [DEBUG] [Thread-113313] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:26:55.651 [DEBUG] [Thread-113313] [transport.py] [_log()] Compression: none
2025-11-03T09:26:55.651 [DEBUG] [Thread-113313] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:26:55.708 [DEBUG] [Thread-113313] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:26:55.708 [DEBUG] [Thread-113313] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:26:55.708 [DEBUG] [Thread-113313] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:26:55.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:26:55.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:26:55.765 [DEBUG] [Thread-113313] [transport.py] [_log()] userauth is OK
2025-11-03T09:26:55.765 [DEBUG] [Thread-113313] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:26:55.765 [DEBUG] [Thread-113313] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:26:55.765 [DEBUG] [Thread-113313] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:26:55.765 [DEBUG] [Thread-113313] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:26:55.779 [INFO] [Thread-113313] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:26:55.779 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:26:55.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:26:56.651 [DEBUG] [Thread-113313] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:26:56.651 [DEBUG] [Thread-113313] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:26:56.699 [DEBUG] [Thread-113313] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:26:56.700 [DEBUG] [Thread-113313] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:26:56.708 [DEBUG] [Thread-113313] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:26:56.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:26:56.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:26:56.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:26:56.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:26:56.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:26:56.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:26:56.741 [DEBUG] [Thread-113313] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:27:09.911 [DEBUG] [Thread-113315 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:27:14.628 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:27:14.629 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:27:24.955 [DEBUG] [Thread-113316 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:27:26.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:27:26.763 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:27:26.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:27:27.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 26, 53), 35.95, 7.94, 0.0, 14.86, 20.6, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:27:27.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:26:53
2025-11-03T09:27:27.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:27:27.736 [DEBUG] [Thread-113317] [transport.py] [_log()] starting thread (client mode): 0xed5f340
2025-11-03T09:27:27.736 [DEBUG] [Thread-113317] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:27:27.755 [DEBUG] [Thread-113317] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:27:27.755 [INFO] [Thread-113317] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:27:27.758 [DEBUG] [Thread-113317] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:27:27.758 [DEBUG] [Thread-113317] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:27:27.758 [DEBUG] [Thread-113317] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:27:27.758 [DEBUG] [Thread-113317] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:27:27.758 [DEBUG] [Thread-113317] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:27:27.758 [DEBUG] [Thread-113317] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:27:27.758 [DEBUG] [Thread-113317] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:27:27.758 [DEBUG] [Thread-113317] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:27:27.759 [DEBUG] [Thread-113317] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:27:27.759 [DEBUG] [Thread-113317] [transport.py] [_log()] client lang: <none>
2025-11-03T09:27:27.759 [DEBUG] [Thread-113317] [transport.py] [_log()] server lang: <none>
2025-11-03T09:27:27.759 [DEBUG] [Thread-113317] [transport.py] [_log()] kex follows: False
2025-11-03T09:27:27.759 [DEBUG] [Thread-113317] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:27:27.759 [DEBUG] [Thread-113317] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:27:27.759 [DEBUG] [Thread-113317] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:27:27.759 [DEBUG] [Thread-113317] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:27:27.759 [DEBUG] [Thread-113317] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:27:27.759 [DEBUG] [Thread-113317] [transport.py] [_log()] Compression: none
2025-11-03T09:27:27.759 [DEBUG] [Thread-113317] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:27:27.772 [DEBUG] [Thread-113317] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:27:27.772 [DEBUG] [Thread-113317] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:27:27.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:27:27.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:27:27.772 [DEBUG] [Thread-113317] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:27:27.773 [DEBUG] [Thread-113317] [transport.py] [_log()] userauth is OK
2025-11-03T09:27:27.773 [DEBUG] [Thread-113317] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:27:27.773 [DEBUG] [Thread-113317] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:27:27.773 [DEBUG] [Thread-113317] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:27:27.773 [DEBUG] [Thread-113317] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:27:27.782 [INFO] [Thread-113317] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:27:27.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:27:28.341 [DEBUG] [Thread-113317] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:27:28.341 [DEBUG] [Thread-113317] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:27:28.341 [DEBUG] [Thread-113317] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:27:28.382 [DEBUG] [Thread-113317] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:27:28.382 [DEBUG] [Thread-113317] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:27:28.385 [DEBUG] [Thread-113317] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:27:28.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:27:28.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:27:28.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:27:28.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:27:28.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:27:28.404 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:27:28.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:27:28.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:27:28.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:27:28.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.310510 -999.00  +20.00  16.34     12   -9.30 1 1 1 1 1   888    0 33.22 198.77 ----- 14.4 16.3 45.8 21.4 26.1 -29.8 25.1 -28.7 23.6 -29.6 24.4 -28.8
2025-11-03T09:27:28.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:27:28.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:27:28.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.310510
2025-11-03T09:27:28.413 [DEBUG] [Thread-113317] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:27:28.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:27:28.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:27:28.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:27:28.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:27:28.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:27:28.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:26:53', tmtdew=35.95, humidity=7.94, cloud=0.0, wind=14.86, temperature=20.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:27:08.064', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:27:28.486 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:27:28.500 [DEBUG] [Thread-113320] [transport.py] [_log()] starting thread (client mode): 0x81da920
2025-11-03T09:27:28.500 [DEBUG] [Thread-113320] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:27:28.515 [DEBUG] [Thread-113320] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:27:28.515 [INFO] [Thread-113320] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:27:28.522 [DEBUG] [Thread-113320] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:27:28.522 [DEBUG] [Thread-113320] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:27:28.522 [DEBUG] [Thread-113320] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:27:28.522 [DEBUG] [Thread-113320] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:27:28.522 [DEBUG] [Thread-113320] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:27:28.522 [DEBUG] [Thread-113320] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:27:28.522 [DEBUG] [Thread-113320] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:27:28.522 [DEBUG] [Thread-113320] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:27:28.522 [DEBUG] [Thread-113320] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:27:28.522 [DEBUG] [Thread-113320] [transport.py] [_log()] client lang: <none>
2025-11-03T09:27:28.522 [DEBUG] [Thread-113320] [transport.py] [_log()] server lang: <none>
2025-11-03T09:27:28.522 [DEBUG] [Thread-113320] [transport.py] [_log()] kex follows: False
2025-11-03T09:27:28.522 [DEBUG] [Thread-113320] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:27:28.522 [DEBUG] [Thread-113320] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:27:28.522 [DEBUG] [Thread-113320] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:27:28.522 [DEBUG] [Thread-113320] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:27:28.522 [DEBUG] [Thread-113320] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:27:28.522 [DEBUG] [Thread-113320] [transport.py] [_log()] Compression: none
2025-11-03T09:27:28.522 [DEBUG] [Thread-113320] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:27:28.579 [DEBUG] [Thread-113320] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:27:28.579 [DEBUG] [Thread-113320] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:27:28.579 [DEBUG] [Thread-113320] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:27:28.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:27:28.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:27:28.635 [DEBUG] [Thread-113320] [transport.py] [_log()] userauth is OK
2025-11-03T09:27:28.635 [DEBUG] [Thread-113320] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:27:28.635 [DEBUG] [Thread-113320] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:27:28.635 [DEBUG] [Thread-113320] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:27:28.635 [DEBUG] [Thread-113320] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:27:28.649 [INFO] [Thread-113320] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:27:28.649 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:27:28.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:27:29.510 [DEBUG] [Thread-113320] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:27:29.510 [DEBUG] [Thread-113320] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:27:29.558 [DEBUG] [Thread-113320] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:27:29.559 [DEBUG] [Thread-113320] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:27:29.568 [DEBUG] [Thread-113320] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:27:29.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:27:29.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:27:29.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:27:29.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:27:29.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:27:29.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:27:29.605 [DEBUG] [Thread-113320] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:27:39.993 [DEBUG] [Thread-113322 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:27:47.997 [DEBUG] [Thread-113323 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:27:55.039 [DEBUG] [Thread-113324 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:27:59.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:27:59.627 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:27:59.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:28:00.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 27, 25), 36.13, 7.84, 0.0, 16.3, 20.68, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:28:00.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:27:25
2025-11-03T09:28:00.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:28:00.614 [DEBUG] [Thread-113325] [transport.py] [_log()] starting thread (client mode): 0xed5fa90
2025-11-03T09:28:00.614 [DEBUG] [Thread-113325] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:28:00.633 [DEBUG] [Thread-113325] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:28:00.633 [INFO] [Thread-113325] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:28:00.637 [DEBUG] [Thread-113325] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:28:00.637 [DEBUG] [Thread-113325] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:28:00.637 [DEBUG] [Thread-113325] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:28:00.637 [DEBUG] [Thread-113325] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:28:00.637 [DEBUG] [Thread-113325] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:28:00.637 [DEBUG] [Thread-113325] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:28:00.637 [DEBUG] [Thread-113325] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:28:00.637 [DEBUG] [Thread-113325] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:28:00.637 [DEBUG] [Thread-113325] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:28:00.637 [DEBUG] [Thread-113325] [transport.py] [_log()] client lang: <none>
2025-11-03T09:28:00.637 [DEBUG] [Thread-113325] [transport.py] [_log()] server lang: <none>
2025-11-03T09:28:00.638 [DEBUG] [Thread-113325] [transport.py] [_log()] kex follows: False
2025-11-03T09:28:00.638 [DEBUG] [Thread-113325] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:28:00.638 [DEBUG] [Thread-113325] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:28:00.638 [DEBUG] [Thread-113325] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:28:00.638 [DEBUG] [Thread-113325] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:28:00.638 [DEBUG] [Thread-113325] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:28:00.638 [DEBUG] [Thread-113325] [transport.py] [_log()] Compression: none
2025-11-03T09:28:00.638 [DEBUG] [Thread-113325] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:28:00.656 [DEBUG] [Thread-113325] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:28:00.657 [DEBUG] [Thread-113325] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:28:00.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:28:00.659 [DEBUG] [Thread-113325] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:28:00.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:28:00.661 [DEBUG] [Thread-113325] [transport.py] [_log()] userauth is OK
2025-11-03T09:28:00.661 [DEBUG] [Thread-113325] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:28:00.661 [DEBUG] [Thread-113325] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:28:00.661 [DEBUG] [Thread-113325] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:28:00.661 [DEBUG] [Thread-113325] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:28:00.697 [INFO] [Thread-113325] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:28:00.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:28:01.370 [DEBUG] [Thread-113325] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:28:01.370 [DEBUG] [Thread-113325] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:28:01.371 [DEBUG] [Thread-113325] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:28:01.411 [DEBUG] [Thread-113325] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:28:01.412 [DEBUG] [Thread-113325] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:28:01.415 [DEBUG] [Thread-113325] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:28:01.426 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:28:01.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:28:01.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:28:01.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:28:01.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:28:01.440 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:28:01.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:28:01.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:28:01.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:28:01.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.310858 -999.00  +19.80  14.00     13   -8.90 1 1 1 1 1   888    0 32.98 192.23 ----- 15.3 14.0 42.6 19.2 26.1 -29.8 25.1 -28.3 23.6 -29.2 24.4 -28.4
2025-11-03T09:28:01.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:28:01.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:28:01.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.310858
2025-11-03T09:28:01.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:28:01.443 [DEBUG] [Thread-113325] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:28:01.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:28:01.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:28:01.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:28:01.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:28:01.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:27:25', tmtdew=36.13, humidity=7.84, cloud=0.0, wind=16.3, temperature=20.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:27:38.131', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:28:01.529 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:28:01.541 [DEBUG] [Thread-113328] [transport.py] [_log()] starting thread (client mode): 0xed07760
2025-11-03T09:28:01.541 [DEBUG] [Thread-113328] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:28:01.557 [DEBUG] [Thread-113328] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:28:01.557 [INFO] [Thread-113328] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:28:01.567 [DEBUG] [Thread-113328] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:28:01.567 [DEBUG] [Thread-113328] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:28:01.567 [DEBUG] [Thread-113328] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:28:01.567 [DEBUG] [Thread-113328] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:28:01.567 [DEBUG] [Thread-113328] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:28:01.567 [DEBUG] [Thread-113328] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:28:01.567 [DEBUG] [Thread-113328] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:28:01.567 [DEBUG] [Thread-113328] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:28:01.567 [DEBUG] [Thread-113328] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:28:01.567 [DEBUG] [Thread-113328] [transport.py] [_log()] client lang: <none>
2025-11-03T09:28:01.567 [DEBUG] [Thread-113328] [transport.py] [_log()] server lang: <none>
2025-11-03T09:28:01.568 [DEBUG] [Thread-113328] [transport.py] [_log()] kex follows: False
2025-11-03T09:28:01.568 [DEBUG] [Thread-113328] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:28:01.568 [DEBUG] [Thread-113328] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:28:01.568 [DEBUG] [Thread-113328] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:28:01.568 [DEBUG] [Thread-113328] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:28:01.568 [DEBUG] [Thread-113328] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:28:01.568 [DEBUG] [Thread-113328] [transport.py] [_log()] Compression: none
2025-11-03T09:28:01.568 [DEBUG] [Thread-113328] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:28:01.635 [DEBUG] [Thread-113328] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:28:01.636 [DEBUG] [Thread-113328] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:28:01.636 [DEBUG] [Thread-113328] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:28:01.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:28:01.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:28:01.694 [DEBUG] [Thread-113328] [transport.py] [_log()] userauth is OK
2025-11-03T09:28:01.694 [DEBUG] [Thread-113328] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:28:01.694 [DEBUG] [Thread-113328] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:28:01.694 [DEBUG] [Thread-113328] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:28:01.694 [DEBUG] [Thread-113328] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:28:01.708 [INFO] [Thread-113328] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:28:01.708 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:28:01.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:28:02.640 [DEBUG] [Thread-113328] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:28:02.649 [DEBUG] [Thread-113328] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:28:02.688 [DEBUG] [Thread-113328] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:28:02.688 [DEBUG] [Thread-113328] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:28:02.698 [DEBUG] [Thread-113328] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:28:02.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:28:02.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:28:02.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:28:02.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:28:02.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:28:02.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:28:02.742 [DEBUG] [Thread-113328] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:28:10.075 [DEBUG] [Thread-113330 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:28:14.770 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:28:14.771 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:28:25.132 [DEBUG] [Thread-113331 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:28:32.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:28:32.761 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:28:32.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:28:33.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 28, 29), 35.84, 7.86, 0.0, 14.65, 20.43, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:28:33.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:28:29
2025-11-03T09:28:33.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:28:33.730 [DEBUG] [Thread-113332] [transport.py] [_log()] starting thread (client mode): 0xed5ca90
2025-11-03T09:28:33.730 [DEBUG] [Thread-113332] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:28:33.747 [DEBUG] [Thread-113332] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:28:33.747 [INFO] [Thread-113332] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:28:33.750 [DEBUG] [Thread-113332] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:28:33.751 [DEBUG] [Thread-113332] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:28:33.751 [DEBUG] [Thread-113332] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:28:33.751 [DEBUG] [Thread-113332] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:28:33.751 [DEBUG] [Thread-113332] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:28:33.751 [DEBUG] [Thread-113332] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:28:33.751 [DEBUG] [Thread-113332] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:28:33.751 [DEBUG] [Thread-113332] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:28:33.751 [DEBUG] [Thread-113332] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:28:33.751 [DEBUG] [Thread-113332] [transport.py] [_log()] client lang: <none>
2025-11-03T09:28:33.751 [DEBUG] [Thread-113332] [transport.py] [_log()] server lang: <none>
2025-11-03T09:28:33.751 [DEBUG] [Thread-113332] [transport.py] [_log()] kex follows: False
2025-11-03T09:28:33.751 [DEBUG] [Thread-113332] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:28:33.751 [DEBUG] [Thread-113332] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:28:33.751 [DEBUG] [Thread-113332] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:28:33.752 [DEBUG] [Thread-113332] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:28:33.752 [DEBUG] [Thread-113332] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:28:33.752 [DEBUG] [Thread-113332] [transport.py] [_log()] Compression: none
2025-11-03T09:28:33.752 [DEBUG] [Thread-113332] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:28:33.763 [DEBUG] [Thread-113332] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:28:33.763 [DEBUG] [Thread-113332] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:28:33.764 [DEBUG] [Thread-113332] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:28:33.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:28:33.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:28:33.804 [DEBUG] [Thread-113332] [transport.py] [_log()] userauth is OK
2025-11-03T09:28:33.805 [DEBUG] [Thread-113332] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:28:33.805 [DEBUG] [Thread-113332] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:28:33.805 [DEBUG] [Thread-113332] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:28:33.805 [DEBUG] [Thread-113332] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:28:33.830 [INFO] [Thread-113332] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:28:33.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:28:34.431 [DEBUG] [Thread-113332] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:28:34.431 [DEBUG] [Thread-113332] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:28:34.431 [DEBUG] [Thread-113332] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:28:34.472 [DEBUG] [Thread-113332] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:28:34.472 [DEBUG] [Thread-113332] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:28:34.475 [DEBUG] [Thread-113332] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:28:34.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:28:34.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:28:34.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:28:34.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:28:34.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:28:34.494 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:28:34.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:28:34.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:28:34.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:28:34.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.311205 -999.00  +20.00  25.01     13   -8.80 1 1 1 1 1   888    0 33.57 202.93 ----- 26.1 25.0 64.8 26.5 26.1 -30.7 25.2 -29.4 23.7 -29.4 24.4 -30.8
2025-11-03T09:28:34.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:28:34.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:28:34.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.311205
2025-11-03T09:28:34.503 [DEBUG] [Thread-113332] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:28:34.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:28:34.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:28:34.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:28:34.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:28:34.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:28:34.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:28:29', tmtdew=35.84, humidity=7.86, cloud=0.0, wind=14.65, temperature=20.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:28:08.112', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:28:34.576 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:28:34.588 [DEBUG] [Thread-113335] [transport.py] [_log()] starting thread (client mode): 0xed5cc40
2025-11-03T09:28:34.588 [DEBUG] [Thread-113335] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:28:34.603 [DEBUG] [Thread-113335] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:28:34.603 [INFO] [Thread-113335] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:28:34.611 [DEBUG] [Thread-113335] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:28:34.611 [DEBUG] [Thread-113335] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:28:34.611 [DEBUG] [Thread-113335] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:28:34.611 [DEBUG] [Thread-113335] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:28:34.611 [DEBUG] [Thread-113335] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:28:34.611 [DEBUG] [Thread-113335] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:28:34.611 [DEBUG] [Thread-113335] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:28:34.611 [DEBUG] [Thread-113335] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:28:34.611 [DEBUG] [Thread-113335] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:28:34.611 [DEBUG] [Thread-113335] [transport.py] [_log()] client lang: <none>
2025-11-03T09:28:34.611 [DEBUG] [Thread-113335] [transport.py] [_log()] server lang: <none>
2025-11-03T09:28:34.611 [DEBUG] [Thread-113335] [transport.py] [_log()] kex follows: False
2025-11-03T09:28:34.611 [DEBUG] [Thread-113335] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:28:34.611 [DEBUG] [Thread-113335] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:28:34.611 [DEBUG] [Thread-113335] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:28:34.611 [DEBUG] [Thread-113335] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:28:34.611 [DEBUG] [Thread-113335] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:28:34.611 [DEBUG] [Thread-113335] [transport.py] [_log()] Compression: none
2025-11-03T09:28:34.611 [DEBUG] [Thread-113335] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:28:34.667 [DEBUG] [Thread-113335] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:28:34.676 [DEBUG] [Thread-113335] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:28:34.676 [DEBUG] [Thread-113335] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:28:34.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:28:34.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:28:34.724 [DEBUG] [Thread-113335] [transport.py] [_log()] userauth is OK
2025-11-03T09:28:34.724 [DEBUG] [Thread-113335] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:28:34.724 [DEBUG] [Thread-113335] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:28:34.724 [DEBUG] [Thread-113335] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:28:34.724 [DEBUG] [Thread-113335] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:28:34.738 [INFO] [Thread-113335] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:28:34.738 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:28:34.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:28:35.618 [DEBUG] [Thread-113335] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:28:35.619 [DEBUG] [Thread-113335] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:28:35.666 [DEBUG] [Thread-113335] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:28:35.666 [DEBUG] [Thread-113335] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:28:35.675 [DEBUG] [Thread-113335] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:28:35.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:28:35.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:28:35.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:28:35.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:28:35.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:28:35.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:28:35.713 [DEBUG] [Thread-113335] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:28:40.167 [DEBUG] [Thread-113337 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:28:48.069 [DEBUG] [Thread-113338 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:28:55.222 [DEBUG] [Thread-113339 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:29:05.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:29:05.706 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:29:05.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:29:06.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 29, 1), 35.74, 7.94, 0.0, 14.43, 20.55, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:29:06.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:29:01
2025-11-03T09:29:06.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:29:06.692 [DEBUG] [Thread-113340] [transport.py] [_log()] starting thread (client mode): 0xed5e290
2025-11-03T09:29:06.692 [DEBUG] [Thread-113340] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:29:06.712 [DEBUG] [Thread-113340] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:29:06.713 [INFO] [Thread-113340] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:29:06.716 [DEBUG] [Thread-113340] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:29:06.716 [DEBUG] [Thread-113340] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:29:06.716 [DEBUG] [Thread-113340] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:29:06.716 [DEBUG] [Thread-113340] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:29:06.716 [DEBUG] [Thread-113340] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:29:06.716 [DEBUG] [Thread-113340] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:29:06.716 [DEBUG] [Thread-113340] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:29:06.716 [DEBUG] [Thread-113340] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:29:06.716 [DEBUG] [Thread-113340] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:29:06.716 [DEBUG] [Thread-113340] [transport.py] [_log()] client lang: <none>
2025-11-03T09:29:06.716 [DEBUG] [Thread-113340] [transport.py] [_log()] server lang: <none>
2025-11-03T09:29:06.717 [DEBUG] [Thread-113340] [transport.py] [_log()] kex follows: False
2025-11-03T09:29:06.717 [DEBUG] [Thread-113340] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:29:06.717 [DEBUG] [Thread-113340] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:29:06.717 [DEBUG] [Thread-113340] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:29:06.717 [DEBUG] [Thread-113340] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:29:06.717 [DEBUG] [Thread-113340] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:29:06.717 [DEBUG] [Thread-113340] [transport.py] [_log()] Compression: none
2025-11-03T09:29:06.717 [DEBUG] [Thread-113340] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:29:06.737 [DEBUG] [Thread-113340] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:29:06.737 [DEBUG] [Thread-113340] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:29:06.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:29:06.739 [DEBUG] [Thread-113340] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:29:06.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:29:06.740 [DEBUG] [Thread-113340] [transport.py] [_log()] userauth is OK
2025-11-03T09:29:06.741 [DEBUG] [Thread-113340] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:29:06.741 [DEBUG] [Thread-113340] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:29:06.741 [DEBUG] [Thread-113340] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:29:06.741 [DEBUG] [Thread-113340] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:29:06.774 [INFO] [Thread-113340] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:29:06.775 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:29:07.414 [DEBUG] [Thread-113340] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:29:07.414 [DEBUG] [Thread-113340] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:29:07.414 [DEBUG] [Thread-113340] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:29:07.455 [DEBUG] [Thread-113340] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:29:07.455 [DEBUG] [Thread-113340] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:29:07.457 [DEBUG] [Thread-113340] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:29:07.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:29:07.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:29:07.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:29:07.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:29:07.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:29:07.475 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:29:07.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:29:07.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:29:07.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:29:07.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.311552 -999.00  +19.60  20.68     13   -8.90 1 1 1 1 1   888    0 32.76 180.44 ----- 14.9 20.7 49.8 25.5 26.1 -30.0 25.0 -29.7 23.5 -30.6 24.4 -28.9
2025-11-03T09:29:07.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:29:07.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:29:07.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.311552
2025-11-03T09:29:07.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:29:07.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:29:07.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:29:07.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:29:07.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:29:07.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:29:01', tmtdew=35.74, humidity=7.94, cloud=0.0, wind=14.43, temperature=20.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:28:38.093', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:29:07.476 [DEBUG] [Thread-113340] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:29:07.549 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:29:07.559 [DEBUG] [Thread-113343] [transport.py] [_log()] starting thread (client mode): 0x81d8c40
2025-11-03T09:29:07.559 [DEBUG] [Thread-113343] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:29:07.574 [DEBUG] [Thread-113343] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:29:07.574 [INFO] [Thread-113343] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:29:07.581 [DEBUG] [Thread-113343] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:29:07.581 [DEBUG] [Thread-113343] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:29:07.581 [DEBUG] [Thread-113343] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:29:07.581 [DEBUG] [Thread-113343] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:29:07.581 [DEBUG] [Thread-113343] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:29:07.581 [DEBUG] [Thread-113343] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:29:07.581 [DEBUG] [Thread-113343] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:29:07.581 [DEBUG] [Thread-113343] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:29:07.581 [DEBUG] [Thread-113343] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:29:07.581 [DEBUG] [Thread-113343] [transport.py] [_log()] client lang: <none>
2025-11-03T09:29:07.581 [DEBUG] [Thread-113343] [transport.py] [_log()] server lang: <none>
2025-11-03T09:29:07.582 [DEBUG] [Thread-113343] [transport.py] [_log()] kex follows: False
2025-11-03T09:29:07.582 [DEBUG] [Thread-113343] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:29:07.582 [DEBUG] [Thread-113343] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:29:07.582 [DEBUG] [Thread-113343] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:29:07.582 [DEBUG] [Thread-113343] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:29:07.582 [DEBUG] [Thread-113343] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:29:07.582 [DEBUG] [Thread-113343] [transport.py] [_log()] Compression: none
2025-11-03T09:29:07.582 [DEBUG] [Thread-113343] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:29:07.637 [DEBUG] [Thread-113343] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:29:07.637 [DEBUG] [Thread-113343] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:29:07.637 [DEBUG] [Thread-113343] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:29:07.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:29:07.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:29:07.694 [DEBUG] [Thread-113343] [transport.py] [_log()] userauth is OK
2025-11-03T09:29:07.694 [DEBUG] [Thread-113343] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:29:07.694 [DEBUG] [Thread-113343] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:29:07.694 [DEBUG] [Thread-113343] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:29:07.694 [DEBUG] [Thread-113343] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:29:07.712 [INFO] [Thread-113343] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:29:07.712 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:29:07.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:29:08.640 [DEBUG] [Thread-113343] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:29:08.641 [DEBUG] [Thread-113343] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:29:08.689 [DEBUG] [Thread-113343] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:29:08.689 [DEBUG] [Thread-113343] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:29:08.698 [DEBUG] [Thread-113343] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:29:08.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:29:08.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:29:08.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:29:08.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:29:08.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:29:08.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:29:08.732 [DEBUG] [Thread-113343] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:29:10.254 [DEBUG] [Thread-113345 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:29:14.912 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:29:14.914 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:29:25.298 [DEBUG] [Thread-113346 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:29:38.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:29:38.754 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:29:38.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:29:39.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 29, 34), 35.46, 7.89, 0.0, 18.95, 20.6, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:29:39.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:29:34
2025-11-03T09:29:39.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:29:39.728 [DEBUG] [Thread-113347] [transport.py] [_log()] starting thread (client mode): 0x81da920
2025-11-03T09:29:39.729 [DEBUG] [Thread-113347] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:29:39.749 [DEBUG] [Thread-113347] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:29:39.749 [INFO] [Thread-113347] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:29:39.751 [DEBUG] [Thread-113347] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:29:39.751 [DEBUG] [Thread-113347] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:29:39.751 [DEBUG] [Thread-113347] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:29:39.751 [DEBUG] [Thread-113347] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:29:39.751 [DEBUG] [Thread-113347] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:29:39.751 [DEBUG] [Thread-113347] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:29:39.751 [DEBUG] [Thread-113347] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:29:39.751 [DEBUG] [Thread-113347] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:29:39.751 [DEBUG] [Thread-113347] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:29:39.751 [DEBUG] [Thread-113347] [transport.py] [_log()] client lang: <none>
2025-11-03T09:29:39.751 [DEBUG] [Thread-113347] [transport.py] [_log()] server lang: <none>
2025-11-03T09:29:39.751 [DEBUG] [Thread-113347] [transport.py] [_log()] kex follows: False
2025-11-03T09:29:39.751 [DEBUG] [Thread-113347] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:29:39.751 [DEBUG] [Thread-113347] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:29:39.751 [DEBUG] [Thread-113347] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:29:39.751 [DEBUG] [Thread-113347] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:29:39.751 [DEBUG] [Thread-113347] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:29:39.751 [DEBUG] [Thread-113347] [transport.py] [_log()] Compression: none
2025-11-03T09:29:39.751 [DEBUG] [Thread-113347] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:29:39.762 [DEBUG] [Thread-113347] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:29:39.762 [DEBUG] [Thread-113347] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:29:39.762 [DEBUG] [Thread-113347] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:29:39.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:29:39.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:29:39.763 [DEBUG] [Thread-113347] [transport.py] [_log()] userauth is OK
2025-11-03T09:29:39.763 [DEBUG] [Thread-113347] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:29:39.763 [DEBUG] [Thread-113347] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:29:39.763 [DEBUG] [Thread-113347] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:29:39.763 [DEBUG] [Thread-113347] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:29:39.773 [INFO] [Thread-113347] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:29:39.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:29:40.343 [DEBUG] [Thread-113349 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:29:40.397 [DEBUG] [Thread-113347] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:29:40.397 [DEBUG] [Thread-113347] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:29:40.397 [DEBUG] [Thread-113347] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:29:40.438 [DEBUG] [Thread-113347] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:29:40.438 [DEBUG] [Thread-113347] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:29:40.440 [DEBUG] [Thread-113347] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:29:40.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:29:40.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:29:40.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:29:40.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:29:40.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:29:40.458 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:29:40.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:29:40.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:29:40.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:29:40.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.311899 -999.00  +19.60  15.91     13   -8.70 1 1 1 1 1   888    0 33.39 177.19 ----- 14.9 15.9 55.2 17.1 26.1 -29.0 25.1 -29.0 23.7 -29.1 24.5 -29.7
2025-11-03T09:29:40.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:29:40.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:29:40.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.311899
2025-11-03T09:29:40.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:29:40.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:29:40.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:29:40.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:29:40.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:29:40.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:29:34', tmtdew=35.46, humidity=7.89, cloud=0.0, wind=18.95, temperature=20.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:29:08.074', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:29:40.459 [DEBUG] [Thread-113347] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:29:40.532 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:29:40.543 [DEBUG] [Thread-113351] [transport.py] [_log()] starting thread (client mode): 0xed5cc10
2025-11-03T09:29:40.544 [DEBUG] [Thread-113351] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:29:40.558 [DEBUG] [Thread-113351] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:29:40.558 [INFO] [Thread-113351] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:29:40.566 [DEBUG] [Thread-113351] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:29:40.566 [DEBUG] [Thread-113351] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:29:40.566 [DEBUG] [Thread-113351] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:29:40.566 [DEBUG] [Thread-113351] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:29:40.566 [DEBUG] [Thread-113351] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:29:40.566 [DEBUG] [Thread-113351] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:29:40.566 [DEBUG] [Thread-113351] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:29:40.566 [DEBUG] [Thread-113351] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:29:40.566 [DEBUG] [Thread-113351] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:29:40.566 [DEBUG] [Thread-113351] [transport.py] [_log()] client lang: <none>
2025-11-03T09:29:40.566 [DEBUG] [Thread-113351] [transport.py] [_log()] server lang: <none>
2025-11-03T09:29:40.566 [DEBUG] [Thread-113351] [transport.py] [_log()] kex follows: False
2025-11-03T09:29:40.566 [DEBUG] [Thread-113351] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:29:40.566 [DEBUG] [Thread-113351] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:29:40.566 [DEBUG] [Thread-113351] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:29:40.566 [DEBUG] [Thread-113351] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:29:40.566 [DEBUG] [Thread-113351] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:29:40.566 [DEBUG] [Thread-113351] [transport.py] [_log()] Compression: none
2025-11-03T09:29:40.566 [DEBUG] [Thread-113351] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:29:40.624 [DEBUG] [Thread-113351] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:29:40.624 [DEBUG] [Thread-113351] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:29:40.624 [DEBUG] [Thread-113351] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:29:40.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:29:40.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:29:40.681 [DEBUG] [Thread-113351] [transport.py] [_log()] userauth is OK
2025-11-03T09:29:40.681 [DEBUG] [Thread-113351] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:29:40.681 [DEBUG] [Thread-113351] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:29:40.681 [DEBUG] [Thread-113351] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:29:40.681 [DEBUG] [Thread-113351] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:29:40.699 [INFO] [Thread-113351] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:29:40.699 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:29:40.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:29:41.637 [DEBUG] [Thread-113351] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:29:41.637 [DEBUG] [Thread-113351] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:29:41.685 [DEBUG] [Thread-113351] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:29:41.685 [DEBUG] [Thread-113351] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:29:41.694 [DEBUG] [Thread-113351] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:29:41.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:29:41.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:29:41.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:29:41.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:29:41.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:29:41.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:29:41.727 [DEBUG] [Thread-113351] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:29:48.155 [DEBUG] [Thread-113353 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:29:55.379 [DEBUG] [Thread-113354 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:30:10.427 [DEBUG] [Thread-113355 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:30:11.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:30:11.750 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:30:11.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:30:12.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 30, 6), 35.42, 7.93, 0.0, 16.67, 20.67, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:30:12.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:30:06
2025-11-03T09:30:12.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:30:12.736 [DEBUG] [Thread-113356] [transport.py] [_log()] starting thread (client mode): 0xed41d20
2025-11-03T09:30:12.736 [DEBUG] [Thread-113356] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:30:12.747 [DEBUG] [Thread-113356] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:30:12.747 [INFO] [Thread-113356] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:30:12.750 [DEBUG] [Thread-113356] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:30:12.751 [DEBUG] [Thread-113356] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:30:12.751 [DEBUG] [Thread-113356] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:30:12.751 [DEBUG] [Thread-113356] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:30:12.751 [DEBUG] [Thread-113356] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:30:12.751 [DEBUG] [Thread-113356] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:30:12.751 [DEBUG] [Thread-113356] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:30:12.751 [DEBUG] [Thread-113356] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:30:12.751 [DEBUG] [Thread-113356] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:30:12.751 [DEBUG] [Thread-113356] [transport.py] [_log()] client lang: <none>
2025-11-03T09:30:12.751 [DEBUG] [Thread-113356] [transport.py] [_log()] server lang: <none>
2025-11-03T09:30:12.751 [DEBUG] [Thread-113356] [transport.py] [_log()] kex follows: False
2025-11-03T09:30:12.751 [DEBUG] [Thread-113356] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:30:12.751 [DEBUG] [Thread-113356] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:30:12.751 [DEBUG] [Thread-113356] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:30:12.751 [DEBUG] [Thread-113356] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:30:12.751 [DEBUG] [Thread-113356] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:30:12.751 [DEBUG] [Thread-113356] [transport.py] [_log()] Compression: none
2025-11-03T09:30:12.751 [DEBUG] [Thread-113356] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:30:12.758 [DEBUG] [Thread-113356] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:30:12.758 [DEBUG] [Thread-113356] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:30:12.759 [DEBUG] [Thread-113356] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:30:12.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:30:12.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:30:12.759 [DEBUG] [Thread-113356] [transport.py] [_log()] userauth is OK
2025-11-03T09:30:12.759 [DEBUG] [Thread-113356] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:30:12.760 [DEBUG] [Thread-113356] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:30:12.760 [DEBUG] [Thread-113356] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:30:12.760 [DEBUG] [Thread-113356] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:30:12.778 [INFO] [Thread-113356] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:30:12.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:30:15.057 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:30:15.059 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:30:15.577 [DEBUG] [Thread-113356] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:30:15.578 [DEBUG] [Thread-113356] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:30:15.578 [DEBUG] [Thread-113356] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:30:15.619 [DEBUG] [Thread-113356] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:30:15.619 [DEBUG] [Thread-113356] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:30:15.622 [DEBUG] [Thread-113356] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:30:15.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:30:15.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:30:15.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:30:15.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:30:15.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:30:15.742 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:30:15.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:30:15.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:30:15.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:30:15.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.311899 -999.00  +19.60  15.91     13   -8.70 1 1 1 1 1   888    0 33.39 177.19 ----- 14.9 15.9 55.2 17.1 26.1 -29.0 25.1 -29.0 23.7 -29.1 24.5 -29.7
2025-11-03T09:30:15.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:30:15.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:30:15.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.311899
2025-11-03T09:30:15.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:30:15.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:30:15.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:30:15.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:30:15.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:30:15.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:30:06', tmtdew=35.42, humidity=7.93, cloud=0.0, wind=16.67, temperature=20.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:29:08.074', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:30:15.745 [DEBUG] [Thread-113356] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:30:15.831 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:30:15.844 [DEBUG] [Thread-113359] [transport.py] [_log()] starting thread (client mode): 0xed351b0
2025-11-03T09:30:15.844 [DEBUG] [Thread-113359] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:30:15.862 [DEBUG] [Thread-113359] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:30:15.863 [INFO] [Thread-113359] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:30:15.871 [DEBUG] [Thread-113359] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:30:15.871 [DEBUG] [Thread-113359] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:30:15.871 [DEBUG] [Thread-113359] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:30:15.872 [DEBUG] [Thread-113359] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:30:15.872 [DEBUG] [Thread-113359] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:30:15.872 [DEBUG] [Thread-113359] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:30:15.872 [DEBUG] [Thread-113359] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:30:15.872 [DEBUG] [Thread-113359] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:30:15.872 [DEBUG] [Thread-113359] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:30:15.872 [DEBUG] [Thread-113359] [transport.py] [_log()] client lang: <none>
2025-11-03T09:30:15.872 [DEBUG] [Thread-113359] [transport.py] [_log()] server lang: <none>
2025-11-03T09:30:15.872 [DEBUG] [Thread-113359] [transport.py] [_log()] kex follows: False
2025-11-03T09:30:15.872 [DEBUG] [Thread-113359] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:30:15.872 [DEBUG] [Thread-113359] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:30:15.872 [DEBUG] [Thread-113359] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:30:15.872 [DEBUG] [Thread-113359] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:30:15.872 [DEBUG] [Thread-113359] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:30:15.872 [DEBUG] [Thread-113359] [transport.py] [_log()] Compression: none
2025-11-03T09:30:15.872 [DEBUG] [Thread-113359] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:30:15.936 [DEBUG] [Thread-113359] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:30:15.936 [DEBUG] [Thread-113359] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:30:15.936 [DEBUG] [Thread-113359] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:30:15.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:30:15.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:30:16.002 [DEBUG] [Thread-113359] [transport.py] [_log()] userauth is OK
2025-11-03T09:30:16.002 [DEBUG] [Thread-113359] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:30:16.002 [DEBUG] [Thread-113359] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:30:16.002 [DEBUG] [Thread-113359] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:30:16.002 [DEBUG] [Thread-113359] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:30:16.019 [INFO] [Thread-113359] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:30:16.019 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:30:16.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:30:16.958 [DEBUG] [Thread-113359] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:30:16.958 [DEBUG] [Thread-113359] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:30:17.006 [DEBUG] [Thread-113359] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:30:17.006 [DEBUG] [Thread-113359] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:30:17.017 [DEBUG] [Thread-113359] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:30:17.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:30:17.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:30:17.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:30:17.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:30:17.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:30:17.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:30:17.057 [DEBUG] [Thread-113359] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:30:25.457 [DEBUG] [Thread-113361 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:30:40.507 [DEBUG] [Thread-113362 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:30:47.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:30:47.074 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:30:47.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:30:47.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 30, 39), 35.26, 7.84, 0.0, 20.48, 20.62, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:30:47.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:30:39
2025-11-03T09:30:47.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:30:48.129 [DEBUG] [Thread-113363] [transport.py] [_log()] starting thread (client mode): 0xed416f0
2025-11-03T09:30:48.130 [DEBUG] [Thread-113363] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:30:48.150 [DEBUG] [Thread-113363] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:30:48.150 [INFO] [Thread-113363] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:30:48.153 [DEBUG] [Thread-113363] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:30:48.153 [DEBUG] [Thread-113363] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:30:48.153 [DEBUG] [Thread-113363] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:30:48.153 [DEBUG] [Thread-113363] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:30:48.153 [DEBUG] [Thread-113363] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:30:48.153 [DEBUG] [Thread-113363] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:30:48.154 [DEBUG] [Thread-113363] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:30:48.154 [DEBUG] [Thread-113363] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:30:48.154 [DEBUG] [Thread-113363] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:30:48.154 [DEBUG] [Thread-113363] [transport.py] [_log()] client lang: <none>
2025-11-03T09:30:48.154 [DEBUG] [Thread-113363] [transport.py] [_log()] server lang: <none>
2025-11-03T09:30:48.154 [DEBUG] [Thread-113363] [transport.py] [_log()] kex follows: False
2025-11-03T09:30:48.154 [DEBUG] [Thread-113363] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:30:48.154 [DEBUG] [Thread-113363] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:30:48.154 [DEBUG] [Thread-113363] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:30:48.154 [DEBUG] [Thread-113363] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:30:48.154 [DEBUG] [Thread-113363] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:30:48.154 [DEBUG] [Thread-113363] [transport.py] [_log()] Compression: none
2025-11-03T09:30:48.154 [DEBUG] [Thread-113363] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:30:48.171 [DEBUG] [Thread-113363] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:30:48.171 [DEBUG] [Thread-113363] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:30:48.172 [DEBUG] [Thread-113363] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:30:48.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:30:48.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:30:48.174 [DEBUG] [Thread-113363] [transport.py] [_log()] userauth is OK
2025-11-03T09:30:48.174 [DEBUG] [Thread-113363] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:30:48.174 [DEBUG] [Thread-113363] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:30:48.174 [DEBUG] [Thread-113363] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:30:48.175 [DEBUG] [Thread-113363] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:30:48.198 [INFO] [Thread-113363] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:30:48.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:30:48.224 [DEBUG] [Thread-113365 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:30:48.815 [DEBUG] [Thread-113363] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:30:48.815 [DEBUG] [Thread-113363] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:30:48.816 [DEBUG] [Thread-113363] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:30:48.856 [DEBUG] [Thread-113363] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:30:48.856 [DEBUG] [Thread-113363] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:30:48.859 [DEBUG] [Thread-113363] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:30:48.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:30:48.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:30:48.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:30:48.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:30:48.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:30:48.882 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:30:48.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:30:48.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:30:48.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:30:48.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.312246 -999.00  +19.60  17.09     13   -8.70 1 1 1 1 1   888    0 32.96 171.68 ----- 18.0 17.1 54.6 19.3 26.1 -29.9 25.2 -30.1 23.6 -29.0 24.5 -29.2
2025-11-03T09:30:48.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:30:48.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:30:48.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.312246
2025-11-03T09:30:48.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:30:48.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:30:48.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:30:48.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:30:48.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:30:48.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:30:39', tmtdew=35.26, humidity=7.84, cloud=0.0, wind=20.48, temperature=20.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:29:38.054', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:30:48.884 [DEBUG] [Thread-113363] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:30:48.960 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:30:48.972 [DEBUG] [Thread-113367] [transport.py] [_log()] starting thread (client mode): 0xed42830
2025-11-03T09:30:48.972 [DEBUG] [Thread-113367] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:30:48.987 [DEBUG] [Thread-113367] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:30:48.987 [INFO] [Thread-113367] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:30:48.995 [DEBUG] [Thread-113367] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:30:48.995 [DEBUG] [Thread-113367] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:30:48.995 [DEBUG] [Thread-113367] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:30:48.995 [DEBUG] [Thread-113367] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:30:48.995 [DEBUG] [Thread-113367] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:30:48.995 [DEBUG] [Thread-113367] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:30:48.995 [DEBUG] [Thread-113367] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:30:48.995 [DEBUG] [Thread-113367] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:30:48.995 [DEBUG] [Thread-113367] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:30:48.995 [DEBUG] [Thread-113367] [transport.py] [_log()] client lang: <none>
2025-11-03T09:30:48.995 [DEBUG] [Thread-113367] [transport.py] [_log()] server lang: <none>
2025-11-03T09:30:48.995 [DEBUG] [Thread-113367] [transport.py] [_log()] kex follows: False
2025-11-03T09:30:48.995 [DEBUG] [Thread-113367] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:30:48.995 [DEBUG] [Thread-113367] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:30:48.996 [DEBUG] [Thread-113367] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:30:48.996 [DEBUG] [Thread-113367] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:30:48.996 [DEBUG] [Thread-113367] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:30:48.996 [DEBUG] [Thread-113367] [transport.py] [_log()] Compression: none
2025-11-03T09:30:48.996 [DEBUG] [Thread-113367] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:30:49.055 [DEBUG] [Thread-113367] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:30:49.056 [DEBUG] [Thread-113367] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:30:49.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:30:49.057 [DEBUG] [Thread-113367] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:30:49.058 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:30:49.114 [DEBUG] [Thread-113367] [transport.py] [_log()] userauth is OK
2025-11-03T09:30:49.115 [DEBUG] [Thread-113367] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:30:49.115 [DEBUG] [Thread-113367] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:30:49.116 [DEBUG] [Thread-113367] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:30:49.116 [DEBUG] [Thread-113367] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:30:49.135 [INFO] [Thread-113367] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:30:49.135 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:30:49.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:30:50.034 [DEBUG] [Thread-113367] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:30:50.034 [DEBUG] [Thread-113367] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:30:50.082 [DEBUG] [Thread-113367] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:30:50.083 [DEBUG] [Thread-113367] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:30:50.091 [DEBUG] [Thread-113367] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:30:50.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:30:50.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:30:50.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:30:50.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:30:50.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:30:50.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:30:50.126 [DEBUG] [Thread-113367] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:30:55.535 [DEBUG] [Thread-113369 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:31:10.573 [DEBUG] [Thread-113370 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:31:15.201 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:31:15.202 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:31:20.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:31:20.149 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:31:20.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:31:20.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 31, 12), 35.61, 7.63, 0.0, 15.81, 20.62, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:31:20.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:31:12
2025-11-03T09:31:21.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:31:21.173 [DEBUG] [Thread-113371] [transport.py] [_log()] starting thread (client mode): 0x117bd660
2025-11-03T09:31:21.173 [DEBUG] [Thread-113371] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:31:21.193 [DEBUG] [Thread-113371] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:31:21.193 [INFO] [Thread-113371] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:31:21.196 [DEBUG] [Thread-113371] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:31:21.196 [DEBUG] [Thread-113371] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:31:21.196 [DEBUG] [Thread-113371] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:31:21.196 [DEBUG] [Thread-113371] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:31:21.196 [DEBUG] [Thread-113371] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:31:21.196 [DEBUG] [Thread-113371] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:31:21.196 [DEBUG] [Thread-113371] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:31:21.196 [DEBUG] [Thread-113371] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:31:21.196 [DEBUG] [Thread-113371] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:31:21.197 [DEBUG] [Thread-113371] [transport.py] [_log()] client lang: <none>
2025-11-03T09:31:21.197 [DEBUG] [Thread-113371] [transport.py] [_log()] server lang: <none>
2025-11-03T09:31:21.197 [DEBUG] [Thread-113371] [transport.py] [_log()] kex follows: False
2025-11-03T09:31:21.197 [DEBUG] [Thread-113371] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:31:21.197 [DEBUG] [Thread-113371] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:31:21.197 [DEBUG] [Thread-113371] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:31:21.197 [DEBUG] [Thread-113371] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:31:21.197 [DEBUG] [Thread-113371] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:31:21.197 [DEBUG] [Thread-113371] [transport.py] [_log()] Compression: none
2025-11-03T09:31:21.197 [DEBUG] [Thread-113371] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:31:21.214 [DEBUG] [Thread-113371] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:31:21.214 [DEBUG] [Thread-113371] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:31:21.215 [DEBUG] [Thread-113371] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:31:21.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:31:21.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:31:21.216 [DEBUG] [Thread-113371] [transport.py] [_log()] userauth is OK
2025-11-03T09:31:21.217 [DEBUG] [Thread-113371] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:31:21.217 [DEBUG] [Thread-113371] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:31:21.217 [DEBUG] [Thread-113371] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:31:21.217 [DEBUG] [Thread-113371] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:31:21.235 [INFO] [Thread-113371] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:31:21.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:31:21.874 [DEBUG] [Thread-113371] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:31:21.874 [DEBUG] [Thread-113371] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:31:21.875 [DEBUG] [Thread-113371] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:31:21.916 [DEBUG] [Thread-113371] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:31:21.916 [DEBUG] [Thread-113371] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:31:21.918 [DEBUG] [Thread-113371] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:31:21.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:31:21.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:31:21.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:31:21.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:31:21.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:31:21.937 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:31:21.937 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:31:21.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:31:21.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:31:21.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.312941 -999.00  +19.70  21.36     13   -8.70 1 1 1 1 1   888    0 32.54 155.91 ----- 25.3 21.4 59.6 28.0 26.1 -29.2 25.1 -29.0 23.6 -30.3 24.4 -29.5
2025-11-03T09:31:21.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:31:21.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:31:21.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.312941
2025-11-03T09:31:21.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:31:21.939 [DEBUG] [Thread-113371] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:31:21.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:31:21.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:31:21.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:31:21.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:31:21.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:31:12', tmtdew=35.61, humidity=7.63, cloud=0.0, wind=15.81, temperature=20.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:30:38.102', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:31:22.021 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:31:22.032 [DEBUG] [Thread-113374] [transport.py] [_log()] starting thread (client mode): 0x117be950
2025-11-03T09:31:22.033 [DEBUG] [Thread-113374] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:31:22.046 [DEBUG] [Thread-113374] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:31:22.046 [INFO] [Thread-113374] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:31:22.054 [DEBUG] [Thread-113374] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:31:22.054 [DEBUG] [Thread-113374] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:31:22.054 [DEBUG] [Thread-113374] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:31:22.054 [DEBUG] [Thread-113374] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:31:22.054 [DEBUG] [Thread-113374] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:31:22.054 [DEBUG] [Thread-113374] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:31:22.054 [DEBUG] [Thread-113374] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:31:22.054 [DEBUG] [Thread-113374] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:31:22.054 [DEBUG] [Thread-113374] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:31:22.054 [DEBUG] [Thread-113374] [transport.py] [_log()] client lang: <none>
2025-11-03T09:31:22.055 [DEBUG] [Thread-113374] [transport.py] [_log()] server lang: <none>
2025-11-03T09:31:22.055 [DEBUG] [Thread-113374] [transport.py] [_log()] kex follows: False
2025-11-03T09:31:22.055 [DEBUG] [Thread-113374] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:31:22.055 [DEBUG] [Thread-113374] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:31:22.055 [DEBUG] [Thread-113374] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:31:22.055 [DEBUG] [Thread-113374] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:31:22.055 [DEBUG] [Thread-113374] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:31:22.055 [DEBUG] [Thread-113374] [transport.py] [_log()] Compression: none
2025-11-03T09:31:22.055 [DEBUG] [Thread-113374] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:31:22.117 [DEBUG] [Thread-113374] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:31:22.118 [DEBUG] [Thread-113374] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:31:22.118 [DEBUG] [Thread-113374] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:31:22.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:31:22.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:31:22.173 [DEBUG] [Thread-113374] [transport.py] [_log()] userauth is OK
2025-11-03T09:31:22.173 [DEBUG] [Thread-113374] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:31:22.173 [DEBUG] [Thread-113374] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:31:22.173 [DEBUG] [Thread-113374] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:31:22.173 [DEBUG] [Thread-113374] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:31:22.191 [INFO] [Thread-113374] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:31:22.191 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:31:22.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:31:23.082 [DEBUG] [Thread-113374] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:31:23.082 [DEBUG] [Thread-113374] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:31:23.130 [DEBUG] [Thread-113374] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:31:23.130 [DEBUG] [Thread-113374] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:31:23.139 [DEBUG] [Thread-113374] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:31:23.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:31:23.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:31:23.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:31:23.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:31:23.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:31:23.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:31:23.176 [DEBUG] [Thread-113374] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:31:25.602 [DEBUG] [Thread-113376 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:31:40.662 [DEBUG] [Thread-113377 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:31:48.290 [DEBUG] [Thread-113378 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:31:53.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:31:53.181 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:31:53.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:31:53.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 31, 44), 35.9, 7.66, 0.0, 19.0, 20.97, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:31:53.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:31:44
2025-11-03T09:31:54.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:31:54.180 [DEBUG] [Thread-113379] [transport.py] [_log()] starting thread (client mode): 0xed5f160
2025-11-03T09:31:54.180 [DEBUG] [Thread-113379] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:31:54.201 [DEBUG] [Thread-113379] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:31:54.201 [INFO] [Thread-113379] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:31:54.204 [DEBUG] [Thread-113379] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:31:54.204 [DEBUG] [Thread-113379] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:31:54.204 [DEBUG] [Thread-113379] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:31:54.204 [DEBUG] [Thread-113379] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:31:54.204 [DEBUG] [Thread-113379] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:31:54.204 [DEBUG] [Thread-113379] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:31:54.204 [DEBUG] [Thread-113379] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:31:54.204 [DEBUG] [Thread-113379] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:31:54.204 [DEBUG] [Thread-113379] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:31:54.204 [DEBUG] [Thread-113379] [transport.py] [_log()] client lang: <none>
2025-11-03T09:31:54.204 [DEBUG] [Thread-113379] [transport.py] [_log()] server lang: <none>
2025-11-03T09:31:54.204 [DEBUG] [Thread-113379] [transport.py] [_log()] kex follows: False
2025-11-03T09:31:54.204 [DEBUG] [Thread-113379] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:31:54.204 [DEBUG] [Thread-113379] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:31:54.204 [DEBUG] [Thread-113379] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:31:54.204 [DEBUG] [Thread-113379] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:31:54.204 [DEBUG] [Thread-113379] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:31:54.204 [DEBUG] [Thread-113379] [transport.py] [_log()] Compression: none
2025-11-03T09:31:54.204 [DEBUG] [Thread-113379] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:31:54.220 [DEBUG] [Thread-113379] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:31:54.220 [DEBUG] [Thread-113379] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:31:54.220 [DEBUG] [Thread-113379] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:31:54.220 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:31:54.220 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:31:54.221 [DEBUG] [Thread-113379] [transport.py] [_log()] userauth is OK
2025-11-03T09:31:54.221 [DEBUG] [Thread-113379] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:31:54.221 [DEBUG] [Thread-113379] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:31:54.221 [DEBUG] [Thread-113379] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:31:54.221 [DEBUG] [Thread-113379] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:31:54.230 [INFO] [Thread-113379] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:31:54.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:31:54.857 [DEBUG] [Thread-113379] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:31:54.857 [DEBUG] [Thread-113379] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:31:54.857 [DEBUG] [Thread-113379] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:31:54.899 [DEBUG] [Thread-113379] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:31:54.899 [DEBUG] [Thread-113379] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:31:54.901 [DEBUG] [Thread-113379] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:31:54.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:31:54.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:31:54.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:31:54.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:31:54.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:31:54.918 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:31:54.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:31:54.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:31:54.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:31:54.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.313288 -999.00  +19.80  22.49     13   -8.80 1 1 1 1 1   888    0 33.37 168.87 ----- 21.6 22.5 69.8 32.1 26.1 -29.4 25.0 -28.4 23.5 -29.5 24.4 -29.6
2025-11-03T09:31:54.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:31:54.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:31:54.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.313288
2025-11-03T09:31:54.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:31:54.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:31:54.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:31:54.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:31:54.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:31:54.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:31:44', tmtdew=35.9, humidity=7.66, cloud=0.0, wind=19.0, temperature=20.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:31:08.083', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:31:54.920 [DEBUG] [Thread-113379] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:31:54.991 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:31:55.001 [DEBUG] [Thread-113382] [transport.py] [_log()] starting thread (client mode): 0xed407f0
2025-11-03T09:31:55.001 [DEBUG] [Thread-113382] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:31:55.015 [DEBUG] [Thread-113382] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:31:55.015 [INFO] [Thread-113382] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:31:55.024 [DEBUG] [Thread-113382] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:31:55.024 [DEBUG] [Thread-113382] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:31:55.024 [DEBUG] [Thread-113382] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:31:55.024 [DEBUG] [Thread-113382] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:31:55.024 [DEBUG] [Thread-113382] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:31:55.024 [DEBUG] [Thread-113382] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:31:55.024 [DEBUG] [Thread-113382] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:31:55.024 [DEBUG] [Thread-113382] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:31:55.024 [DEBUG] [Thread-113382] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:31:55.024 [DEBUG] [Thread-113382] [transport.py] [_log()] client lang: <none>
2025-11-03T09:31:55.024 [DEBUG] [Thread-113382] [transport.py] [_log()] server lang: <none>
2025-11-03T09:31:55.024 [DEBUG] [Thread-113382] [transport.py] [_log()] kex follows: False
2025-11-03T09:31:55.024 [DEBUG] [Thread-113382] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:31:55.024 [DEBUG] [Thread-113382] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:31:55.024 [DEBUG] [Thread-113382] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:31:55.024 [DEBUG] [Thread-113382] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:31:55.024 [DEBUG] [Thread-113382] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:31:55.024 [DEBUG] [Thread-113382] [transport.py] [_log()] Compression: none
2025-11-03T09:31:55.024 [DEBUG] [Thread-113382] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:31:55.086 [DEBUG] [Thread-113382] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:31:55.087 [DEBUG] [Thread-113382] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:31:55.088 [DEBUG] [Thread-113382] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:31:55.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:31:55.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:31:55.149 [DEBUG] [Thread-113382] [transport.py] [_log()] userauth is OK
2025-11-03T09:31:55.149 [DEBUG] [Thread-113382] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:31:55.150 [DEBUG] [Thread-113382] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:31:55.150 [DEBUG] [Thread-113382] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:31:55.150 [DEBUG] [Thread-113382] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:31:55.169 [INFO] [Thread-113382] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:31:55.170 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:31:55.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:31:55.702 [DEBUG] [Thread-113384 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:31:56.094 [DEBUG] [Thread-113382] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:31:56.094 [DEBUG] [Thread-113382] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:31:56.145 [DEBUG] [Thread-113382] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:31:56.146 [DEBUG] [Thread-113382] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:31:56.158 [DEBUG] [Thread-113382] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:31:56.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:31:56.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:31:56.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:31:56.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:31:56.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:31:56.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:31:56.197 [DEBUG] [Thread-113382] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:32:10.755 [DEBUG] [Thread-113385 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:32:15.342 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:32:15.343 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:32:25.793 [DEBUG] [Thread-113386 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:32:26.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:32:26.220 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:32:26.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:32:26.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 32, 16), 36.19, 7.5, 0.0, 18.28, 21.01, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:32:26.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:32:16
2025-11-03T09:32:27.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:32:27.243 [DEBUG] [Thread-113387] [transport.py] [_log()] starting thread (client mode): 0xed41e40
2025-11-03T09:32:27.244 [DEBUG] [Thread-113387] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:32:27.262 [DEBUG] [Thread-113387] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:32:27.262 [INFO] [Thread-113387] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:32:27.265 [DEBUG] [Thread-113387] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:32:27.265 [DEBUG] [Thread-113387] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:32:27.265 [DEBUG] [Thread-113387] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:32:27.265 [DEBUG] [Thread-113387] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:32:27.265 [DEBUG] [Thread-113387] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:32:27.265 [DEBUG] [Thread-113387] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:32:27.265 [DEBUG] [Thread-113387] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:32:27.265 [DEBUG] [Thread-113387] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:32:27.265 [DEBUG] [Thread-113387] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:32:27.265 [DEBUG] [Thread-113387] [transport.py] [_log()] client lang: <none>
2025-11-03T09:32:27.265 [DEBUG] [Thread-113387] [transport.py] [_log()] server lang: <none>
2025-11-03T09:32:27.265 [DEBUG] [Thread-113387] [transport.py] [_log()] kex follows: False
2025-11-03T09:32:27.265 [DEBUG] [Thread-113387] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:32:27.265 [DEBUG] [Thread-113387] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:32:27.265 [DEBUG] [Thread-113387] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:32:27.266 [DEBUG] [Thread-113387] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:32:27.266 [DEBUG] [Thread-113387] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:32:27.266 [DEBUG] [Thread-113387] [transport.py] [_log()] Compression: none
2025-11-03T09:32:27.266 [DEBUG] [Thread-113387] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:32:27.283 [DEBUG] [Thread-113387] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:32:27.284 [DEBUG] [Thread-113387] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:32:27.285 [DEBUG] [Thread-113387] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:32:27.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:32:27.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:32:27.287 [DEBUG] [Thread-113387] [transport.py] [_log()] userauth is OK
2025-11-03T09:32:27.287 [DEBUG] [Thread-113387] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:32:27.287 [DEBUG] [Thread-113387] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:32:27.287 [DEBUG] [Thread-113387] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:32:27.287 [DEBUG] [Thread-113387] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:32:27.301 [INFO] [Thread-113387] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:32:27.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:32:27.944 [DEBUG] [Thread-113387] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:32:27.944 [DEBUG] [Thread-113387] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:32:27.945 [DEBUG] [Thread-113387] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:32:27.985 [DEBUG] [Thread-113387] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:32:27.985 [DEBUG] [Thread-113387] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:32:27.988 [DEBUG] [Thread-113387] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:32:28.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:32:28.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:32:28.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:32:28.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:32:28.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:32:28.015 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:32:28.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:32:28.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:32:28.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:32:28.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.313635 -999.00  +19.70  10.22     13   -9.40 1 1 1 1 1   888    0 32.11 151.28 ----- 13.9 10.2 38.4 24.0 25.9 -29.8 25.1 -28.4 23.6 -28.5 24.4 -28.7
2025-11-03T09:32:28.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:32:28.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:32:28.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.313635
2025-11-03T09:32:28.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:32:28.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:32:28.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:32:28.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:32:28.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:32:28.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:32:16', tmtdew=36.19, humidity=7.5, cloud=0.0, wind=18.28, temperature=21.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:31:38.064', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:32:28.018 [DEBUG] [Thread-113387] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:32:28.100 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:32:28.112 [DEBUG] [Thread-113390] [transport.py] [_log()] starting thread (client mode): 0xed43010
2025-11-03T09:32:28.112 [DEBUG] [Thread-113390] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:32:28.127 [DEBUG] [Thread-113390] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:32:28.127 [INFO] [Thread-113390] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:32:28.135 [DEBUG] [Thread-113390] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:32:28.135 [DEBUG] [Thread-113390] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:32:28.135 [DEBUG] [Thread-113390] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:32:28.135 [DEBUG] [Thread-113390] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:32:28.135 [DEBUG] [Thread-113390] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:32:28.135 [DEBUG] [Thread-113390] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:32:28.135 [DEBUG] [Thread-113390] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:32:28.136 [DEBUG] [Thread-113390] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:32:28.136 [DEBUG] [Thread-113390] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:32:28.136 [DEBUG] [Thread-113390] [transport.py] [_log()] client lang: <none>
2025-11-03T09:32:28.136 [DEBUG] [Thread-113390] [transport.py] [_log()] server lang: <none>
2025-11-03T09:32:28.136 [DEBUG] [Thread-113390] [transport.py] [_log()] kex follows: False
2025-11-03T09:32:28.136 [DEBUG] [Thread-113390] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:32:28.136 [DEBUG] [Thread-113390] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:32:28.136 [DEBUG] [Thread-113390] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:32:28.136 [DEBUG] [Thread-113390] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:32:28.137 [DEBUG] [Thread-113390] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:32:28.137 [DEBUG] [Thread-113390] [transport.py] [_log()] Compression: none
2025-11-03T09:32:28.137 [DEBUG] [Thread-113390] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:32:28.195 [DEBUG] [Thread-113390] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:32:28.196 [DEBUG] [Thread-113390] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:32:28.196 [DEBUG] [Thread-113390] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:32:28.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:32:28.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:32:28.251 [DEBUG] [Thread-113390] [transport.py] [_log()] userauth is OK
2025-11-03T09:32:28.252 [DEBUG] [Thread-113390] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:32:28.252 [DEBUG] [Thread-113390] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:32:28.252 [DEBUG] [Thread-113390] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:32:28.252 [DEBUG] [Thread-113390] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:32:28.271 [INFO] [Thread-113390] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:32:28.271 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:32:28.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:32:29.149 [DEBUG] [Thread-113390] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:32:29.150 [DEBUG] [Thread-113390] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:32:29.198 [DEBUG] [Thread-113390] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:32:29.198 [DEBUG] [Thread-113390] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:32:29.207 [DEBUG] [Thread-113390] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:32:29.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:32:29.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:32:29.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:32:29.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:32:29.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:32:29.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:32:29.241 [DEBUG] [Thread-113390] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:32:40.832 [DEBUG] [Thread-113392 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:32:48.341 [DEBUG] [Thread-113393 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:32:55.881 [DEBUG] [Thread-113394 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:32:59.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:32:59.265 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:32:59.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:32:59.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 32, 48), 37.16, 7.2, 0.0, 11.77, 20.86, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:32:59.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:32:48
2025-11-03T09:33:00.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:33:00.212 [DEBUG] [Thread-113395] [transport.py] [_log()] starting thread (client mode): 0xed34b80
2025-11-03T09:33:00.212 [DEBUG] [Thread-113395] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:33:00.236 [DEBUG] [Thread-113395] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:33:00.236 [INFO] [Thread-113395] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:33:00.246 [DEBUG] [Thread-113395] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:33:00.247 [DEBUG] [Thread-113395] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:33:00.247 [DEBUG] [Thread-113395] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:33:00.247 [DEBUG] [Thread-113395] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:33:00.247 [DEBUG] [Thread-113395] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:33:00.247 [DEBUG] [Thread-113395] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:33:00.248 [DEBUG] [Thread-113395] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:33:00.248 [DEBUG] [Thread-113395] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:33:00.248 [DEBUG] [Thread-113395] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:33:00.248 [DEBUG] [Thread-113395] [transport.py] [_log()] client lang: <none>
2025-11-03T09:33:00.248 [DEBUG] [Thread-113395] [transport.py] [_log()] server lang: <none>
2025-11-03T09:33:00.248 [DEBUG] [Thread-113395] [transport.py] [_log()] kex follows: False
2025-11-03T09:33:00.248 [DEBUG] [Thread-113395] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:33:00.249 [DEBUG] [Thread-113395] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:33:00.249 [DEBUG] [Thread-113395] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:33:00.249 [DEBUG] [Thread-113395] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:33:00.249 [DEBUG] [Thread-113395] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:33:00.249 [DEBUG] [Thread-113395] [transport.py] [_log()] Compression: none
2025-11-03T09:33:00.249 [DEBUG] [Thread-113395] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:33:00.271 [DEBUG] [Thread-113395] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:33:00.272 [DEBUG] [Thread-113395] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:33:00.272 [DEBUG] [Thread-113395] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:33:00.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:33:00.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:33:00.274 [DEBUG] [Thread-113395] [transport.py] [_log()] userauth is OK
2025-11-03T09:33:00.275 [DEBUG] [Thread-113395] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:33:00.275 [DEBUG] [Thread-113395] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:33:00.275 [DEBUG] [Thread-113395] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:33:00.275 [DEBUG] [Thread-113395] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:33:00.311 [INFO] [Thread-113395] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:33:00.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:33:00.979 [DEBUG] [Thread-113395] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:33:00.980 [DEBUG] [Thread-113395] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:33:00.980 [DEBUG] [Thread-113395] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:33:01.020 [DEBUG] [Thread-113395] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:33:01.020 [DEBUG] [Thread-113395] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:33:01.024 [DEBUG] [Thread-113395] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:33:01.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:33:01.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:33:01.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:33:01.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:33:01.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:33:01.046 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:33:01.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:33:01.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:33:01.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:33:01.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.313983 -999.00  +19.70  15.58     13   -9.30 1 1 1 1 1   888    0 31.61 145.93 ----- 14.1 15.6 61.8 18.5 26.1 -29.7 25.2 -28.3 23.7 -29.4 24.5 -28.9
2025-11-03T09:33:01.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:33:01.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:33:01.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.313983
2025-11-03T09:33:01.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:33:01.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:33:01.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:33:01.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:33:01.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:33:01.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:32:48', tmtdew=37.16, humidity=7.2, cloud=0.0, wind=11.77, temperature=20.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:32:08.131', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:33:01.051 [DEBUG] [Thread-113395] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:33:01.133 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:33:01.143 [DEBUG] [Thread-113398] [transport.py] [_log()] starting thread (client mode): 0xed37280
2025-11-03T09:33:01.143 [DEBUG] [Thread-113398] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:33:01.158 [DEBUG] [Thread-113398] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:33:01.158 [INFO] [Thread-113398] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:33:01.166 [DEBUG] [Thread-113398] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:33:01.167 [DEBUG] [Thread-113398] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:33:01.167 [DEBUG] [Thread-113398] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:33:01.167 [DEBUG] [Thread-113398] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:33:01.167 [DEBUG] [Thread-113398] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:33:01.167 [DEBUG] [Thread-113398] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:33:01.167 [DEBUG] [Thread-113398] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:33:01.167 [DEBUG] [Thread-113398] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:33:01.167 [DEBUG] [Thread-113398] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:33:01.168 [DEBUG] [Thread-113398] [transport.py] [_log()] client lang: <none>
2025-11-03T09:33:01.168 [DEBUG] [Thread-113398] [transport.py] [_log()] server lang: <none>
2025-11-03T09:33:01.168 [DEBUG] [Thread-113398] [transport.py] [_log()] kex follows: False
2025-11-03T09:33:01.168 [DEBUG] [Thread-113398] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:33:01.168 [DEBUG] [Thread-113398] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:33:01.168 [DEBUG] [Thread-113398] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:33:01.168 [DEBUG] [Thread-113398] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:33:01.169 [DEBUG] [Thread-113398] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:33:01.178 [DEBUG] [Thread-113398] [transport.py] [_log()] Compression: none
2025-11-03T09:33:01.178 [DEBUG] [Thread-113398] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:33:01.228 [DEBUG] [Thread-113398] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:33:01.229 [DEBUG] [Thread-113398] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:33:01.230 [DEBUG] [Thread-113398] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:33:01.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:33:01.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:33:01.286 [DEBUG] [Thread-113398] [transport.py] [_log()] userauth is OK
2025-11-03T09:33:01.286 [DEBUG] [Thread-113398] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:33:01.286 [DEBUG] [Thread-113398] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:33:01.287 [DEBUG] [Thread-113398] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:33:01.287 [DEBUG] [Thread-113398] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:33:01.310 [INFO] [Thread-113398] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:33:01.310 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:33:01.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:33:02.176 [DEBUG] [Thread-113398] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:33:02.177 [DEBUG] [Thread-113398] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:33:02.224 [DEBUG] [Thread-113398] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:33:02.225 [DEBUG] [Thread-113398] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:33:02.234 [DEBUG] [Thread-113398] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:33:02.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:33:02.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:33:02.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:33:02.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:33:02.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:33:02.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:33:02.267 [DEBUG] [Thread-113398] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:33:10.917 [DEBUG] [Thread-113400 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:33:15.484 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:33:15.485 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:33:25.977 [DEBUG] [Thread-113401 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:33:32.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:33:32.290 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:33:32.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:33:32.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 33, 21), 36.68, 7.43, 0.0, 14.91, 20.62, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:33:32.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:33:21
2025-11-03T09:33:33.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:33:33.233 [DEBUG] [Thread-113402] [transport.py] [_log()] starting thread (client mode): 0xed43940
2025-11-03T09:33:33.233 [DEBUG] [Thread-113402] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:33:33.251 [DEBUG] [Thread-113402] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:33:33.251 [INFO] [Thread-113402] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:33:33.254 [DEBUG] [Thread-113402] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:33:33.254 [DEBUG] [Thread-113402] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:33:33.254 [DEBUG] [Thread-113402] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:33:33.254 [DEBUG] [Thread-113402] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:33:33.254 [DEBUG] [Thread-113402] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:33:33.254 [DEBUG] [Thread-113402] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:33:33.254 [DEBUG] [Thread-113402] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:33:33.254 [DEBUG] [Thread-113402] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:33:33.254 [DEBUG] [Thread-113402] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:33:33.254 [DEBUG] [Thread-113402] [transport.py] [_log()] client lang: <none>
2025-11-03T09:33:33.254 [DEBUG] [Thread-113402] [transport.py] [_log()] server lang: <none>
2025-11-03T09:33:33.254 [DEBUG] [Thread-113402] [transport.py] [_log()] kex follows: False
2025-11-03T09:33:33.255 [DEBUG] [Thread-113402] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:33:33.255 [DEBUG] [Thread-113402] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:33:33.255 [DEBUG] [Thread-113402] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:33:33.255 [DEBUG] [Thread-113402] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:33:33.255 [DEBUG] [Thread-113402] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:33:33.255 [DEBUG] [Thread-113402] [transport.py] [_log()] Compression: none
2025-11-03T09:33:33.255 [DEBUG] [Thread-113402] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:33:33.262 [DEBUG] [Thread-113402] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:33:33.262 [DEBUG] [Thread-113402] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:33:33.262 [DEBUG] [Thread-113402] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:33:33.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:33:33.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:33:33.272 [DEBUG] [Thread-113402] [transport.py] [_log()] userauth is OK
2025-11-03T09:33:33.272 [DEBUG] [Thread-113402] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:33:33.272 [DEBUG] [Thread-113402] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:33:33.272 [DEBUG] [Thread-113402] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:33:33.272 [DEBUG] [Thread-113402] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:33:33.285 [INFO] [Thread-113402] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:33:33.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:33:33.883 [DEBUG] [Thread-113402] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:33:33.892 [DEBUG] [Thread-113402] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:33:33.892 [DEBUG] [Thread-113402] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:33:33.925 [DEBUG] [Thread-113402] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:33:33.925 [DEBUG] [Thread-113402] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:33:33.927 [DEBUG] [Thread-113402] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:33:33.940 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:33:33.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:33:33.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:33:33.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:33:33.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:33:33.947 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:33:33.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:33:33.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:33:33.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:33:33.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.314330 -999.00  +19.90  19.77     13   -9.20 1 1 1 1 1   888    0 32.42 151.46 ----- 24.6 19.8 66.7 22.4 26.1 -30.7 25.2 -28.4 23.7 -29.0 24.5 -30.2
2025-11-03T09:33:33.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:33:33.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:33:33.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.314330
2025-11-03T09:33:33.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:33:33.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:33:33.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:33:33.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:33:33.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:33:33.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:33:21', tmtdew=36.68, humidity=7.43, cloud=0.0, wind=14.91, temperature=20.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:32:38.112', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:33:33.948 [DEBUG] [Thread-113402] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:33:34.019 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:33:34.031 [DEBUG] [Thread-113405] [transport.py] [_log()] starting thread (client mode): 0xed424a0
2025-11-03T09:33:34.031 [DEBUG] [Thread-113405] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:33:34.046 [DEBUG] [Thread-113405] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:33:34.046 [INFO] [Thread-113405] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:33:34.053 [DEBUG] [Thread-113405] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:33:34.053 [DEBUG] [Thread-113405] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:33:34.053 [DEBUG] [Thread-113405] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:33:34.053 [DEBUG] [Thread-113405] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:33:34.053 [DEBUG] [Thread-113405] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:33:34.054 [DEBUG] [Thread-113405] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:33:34.054 [DEBUG] [Thread-113405] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:33:34.054 [DEBUG] [Thread-113405] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:33:34.054 [DEBUG] [Thread-113405] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:33:34.054 [DEBUG] [Thread-113405] [transport.py] [_log()] client lang: <none>
2025-11-03T09:33:34.054 [DEBUG] [Thread-113405] [transport.py] [_log()] server lang: <none>
2025-11-03T09:33:34.054 [DEBUG] [Thread-113405] [transport.py] [_log()] kex follows: False
2025-11-03T09:33:34.054 [DEBUG] [Thread-113405] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:33:34.054 [DEBUG] [Thread-113405] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:33:34.054 [DEBUG] [Thread-113405] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:33:34.054 [DEBUG] [Thread-113405] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:33:34.054 [DEBUG] [Thread-113405] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:33:34.054 [DEBUG] [Thread-113405] [transport.py] [_log()] Compression: none
2025-11-03T09:33:34.054 [DEBUG] [Thread-113405] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:33:34.111 [DEBUG] [Thread-113405] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:33:34.111 [DEBUG] [Thread-113405] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:33:34.111 [DEBUG] [Thread-113405] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:33:34.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:33:34.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:33:34.168 [DEBUG] [Thread-113405] [transport.py] [_log()] userauth is OK
2025-11-03T09:33:34.168 [DEBUG] [Thread-113405] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:33:34.168 [DEBUG] [Thread-113405] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:33:34.168 [DEBUG] [Thread-113405] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:33:34.168 [DEBUG] [Thread-113405] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:33:34.182 [INFO] [Thread-113405] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:33:34.182 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:33:34.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:33:35.043 [DEBUG] [Thread-113405] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:33:35.043 [DEBUG] [Thread-113405] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:33:35.090 [DEBUG] [Thread-113405] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:33:35.091 [DEBUG] [Thread-113405] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:33:35.100 [DEBUG] [Thread-113405] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:33:35.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:33:35.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:33:35.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:33:35.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:33:35.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:33:35.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:33:35.136 [DEBUG] [Thread-113405] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:33:41.007 [DEBUG] [Thread-113407 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:33:48.399 [DEBUG] [Thread-113408 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:33:56.058 [DEBUG] [Thread-113409 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:34:05.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:34:05.159 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:34:05.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:34:05.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 33, 53), 36.43, 7.51, 0.0, 14.26, 20.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:34:05.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:33:53
2025-11-03T09:34:05.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:34:06.122 [DEBUG] [Thread-113410] [transport.py] [_log()] starting thread (client mode): 0x1179a920
2025-11-03T09:34:06.122 [DEBUG] [Thread-113410] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:34:06.139 [DEBUG] [Thread-113410] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:34:06.139 [INFO] [Thread-113410] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:34:06.142 [DEBUG] [Thread-113410] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:34:06.142 [DEBUG] [Thread-113410] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:34:06.142 [DEBUG] [Thread-113410] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:34:06.142 [DEBUG] [Thread-113410] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:34:06.142 [DEBUG] [Thread-113410] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:34:06.142 [DEBUG] [Thread-113410] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:34:06.142 [DEBUG] [Thread-113410] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:34:06.142 [DEBUG] [Thread-113410] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:34:06.142 [DEBUG] [Thread-113410] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:34:06.142 [DEBUG] [Thread-113410] [transport.py] [_log()] client lang: <none>
2025-11-03T09:34:06.142 [DEBUG] [Thread-113410] [transport.py] [_log()] server lang: <none>
2025-11-03T09:34:06.142 [DEBUG] [Thread-113410] [transport.py] [_log()] kex follows: False
2025-11-03T09:34:06.142 [DEBUG] [Thread-113410] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:34:06.142 [DEBUG] [Thread-113410] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:34:06.142 [DEBUG] [Thread-113410] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:34:06.142 [DEBUG] [Thread-113410] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:34:06.142 [DEBUG] [Thread-113410] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:34:06.142 [DEBUG] [Thread-113410] [transport.py] [_log()] Compression: none
2025-11-03T09:34:06.142 [DEBUG] [Thread-113410] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:34:06.159 [DEBUG] [Thread-113410] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:34:06.160 [DEBUG] [Thread-113410] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:34:06.160 [DEBUG] [Thread-113410] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:34:06.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:34:06.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:34:06.163 [DEBUG] [Thread-113410] [transport.py] [_log()] userauth is OK
2025-11-03T09:34:06.163 [DEBUG] [Thread-113410] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:34:06.163 [DEBUG] [Thread-113410] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:34:06.163 [DEBUG] [Thread-113410] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:34:06.163 [DEBUG] [Thread-113410] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:34:06.199 [INFO] [Thread-113410] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:34:06.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:34:06.779 [DEBUG] [Thread-113410] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:34:06.779 [DEBUG] [Thread-113410] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:34:06.779 [DEBUG] [Thread-113410] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:34:06.820 [DEBUG] [Thread-113410] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:34:06.820 [DEBUG] [Thread-113410] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:34:06.822 [DEBUG] [Thread-113410] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:34:06.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:34:06.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:34:06.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:34:06.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:34:06.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:34:06.839 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:34:06.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:34:06.839 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:34:06.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:34:06.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.315024 -999.00  +20.40  18.86     12   -9.20 1 1 1 1 1   888    0 32.55 157.39 ----- 17.7 18.9 59.6 23.5 26.2 -28.9 25.2 -29.1 23.9 -29.8 24.6 -29.1
2025-11-03T09:34:06.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:34:06.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:34:06.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.315024
2025-11-03T09:34:06.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:34:06.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:34:06.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:34:06.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:34:06.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:34:06.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:33:53', tmtdew=36.43, humidity=7.51, cloud=0.0, wind=14.26, temperature=20.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:33:38.074', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:34:06.840 [DEBUG] [Thread-113410] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:34:06.912 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:34:06.923 [DEBUG] [Thread-113413] [transport.py] [_log()] starting thread (client mode): 0xed424a0
2025-11-03T09:34:06.923 [DEBUG] [Thread-113413] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:34:06.938 [DEBUG] [Thread-113413] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:34:06.938 [INFO] [Thread-113413] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:34:06.946 [DEBUG] [Thread-113413] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:34:06.946 [DEBUG] [Thread-113413] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:34:06.946 [DEBUG] [Thread-113413] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:34:06.946 [DEBUG] [Thread-113413] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:34:06.946 [DEBUG] [Thread-113413] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:34:06.946 [DEBUG] [Thread-113413] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:34:06.946 [DEBUG] [Thread-113413] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:34:06.946 [DEBUG] [Thread-113413] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:34:06.946 [DEBUG] [Thread-113413] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:34:06.946 [DEBUG] [Thread-113413] [transport.py] [_log()] client lang: <none>
2025-11-03T09:34:06.946 [DEBUG] [Thread-113413] [transport.py] [_log()] server lang: <none>
2025-11-03T09:34:06.946 [DEBUG] [Thread-113413] [transport.py] [_log()] kex follows: False
2025-11-03T09:34:06.946 [DEBUG] [Thread-113413] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:34:06.946 [DEBUG] [Thread-113413] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:34:06.946 [DEBUG] [Thread-113413] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:34:06.946 [DEBUG] [Thread-113413] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:34:06.946 [DEBUG] [Thread-113413] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:34:06.946 [DEBUG] [Thread-113413] [transport.py] [_log()] Compression: none
2025-11-03T09:34:06.946 [DEBUG] [Thread-113413] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:34:07.005 [DEBUG] [Thread-113413] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:34:07.005 [DEBUG] [Thread-113413] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:34:07.006 [DEBUG] [Thread-113413] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:34:07.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:34:07.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:34:07.063 [DEBUG] [Thread-113413] [transport.py] [_log()] userauth is OK
2025-11-03T09:34:07.063 [DEBUG] [Thread-113413] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:34:07.063 [DEBUG] [Thread-113413] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:34:07.063 [DEBUG] [Thread-113413] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:34:07.063 [DEBUG] [Thread-113413] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:34:07.086 [INFO] [Thread-113413] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:34:07.086 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:34:07.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:34:08.003 [DEBUG] [Thread-113413] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:34:08.003 [DEBUG] [Thread-113413] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:34:08.051 [DEBUG] [Thread-113413] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:34:08.051 [DEBUG] [Thread-113413] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:34:08.060 [DEBUG] [Thread-113413] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:34:08.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:34:08.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:34:08.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:34:08.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:34:08.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:34:08.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:34:08.091 [DEBUG] [Thread-113413] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:34:11.089 [DEBUG] [Thread-113415 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:34:15.636 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:34:15.637 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:34:26.135 [DEBUG] [Thread-113416 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:34:38.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:34:38.110 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:34:38.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:34:38.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 34, 25), 36.72, 7.35, 0.0, 12.32, 20.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:34:38.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:34:25
2025-11-03T09:34:38.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:34:39.092 [DEBUG] [Thread-113417] [transport.py] [_log()] starting thread (client mode): 0xed5f400
2025-11-03T09:34:39.092 [DEBUG] [Thread-113417] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:34:39.111 [DEBUG] [Thread-113417] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:34:39.112 [INFO] [Thread-113417] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:34:39.112 [DEBUG] [Thread-113417] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:34:39.112 [DEBUG] [Thread-113417] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:34:39.112 [DEBUG] [Thread-113417] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:34:39.112 [DEBUG] [Thread-113417] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:34:39.112 [DEBUG] [Thread-113417] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:34:39.113 [DEBUG] [Thread-113417] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:34:39.113 [DEBUG] [Thread-113417] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:34:39.113 [DEBUG] [Thread-113417] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:34:39.113 [DEBUG] [Thread-113417] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:34:39.113 [DEBUG] [Thread-113417] [transport.py] [_log()] client lang: <none>
2025-11-03T09:34:39.113 [DEBUG] [Thread-113417] [transport.py] [_log()] server lang: <none>
2025-11-03T09:34:39.113 [DEBUG] [Thread-113417] [transport.py] [_log()] kex follows: False
2025-11-03T09:34:39.113 [DEBUG] [Thread-113417] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:34:39.113 [DEBUG] [Thread-113417] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:34:39.113 [DEBUG] [Thread-113417] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:34:39.113 [DEBUG] [Thread-113417] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:34:39.113 [DEBUG] [Thread-113417] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:34:39.113 [DEBUG] [Thread-113417] [transport.py] [_log()] Compression: none
2025-11-03T09:34:39.113 [DEBUG] [Thread-113417] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:34:39.120 [DEBUG] [Thread-113417] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:34:39.121 [DEBUG] [Thread-113417] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:34:39.121 [DEBUG] [Thread-113417] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:34:39.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:34:39.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:34:39.122 [DEBUG] [Thread-113417] [transport.py] [_log()] userauth is OK
2025-11-03T09:34:39.123 [DEBUG] [Thread-113417] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:34:39.123 [DEBUG] [Thread-113417] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:34:39.123 [DEBUG] [Thread-113417] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:34:39.123 [DEBUG] [Thread-113417] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:34:39.139 [INFO] [Thread-113417] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:34:39.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:34:39.790 [DEBUG] [Thread-113417] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:34:39.791 [DEBUG] [Thread-113417] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:34:39.791 [DEBUG] [Thread-113417] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:34:39.832 [DEBUG] [Thread-113417] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:34:39.832 [DEBUG] [Thread-113417] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:34:39.836 [DEBUG] [Thread-113417] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:34:39.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:34:39.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:34:39.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:34:39.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:34:39.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:34:39.858 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:34:39.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:34:39.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:34:39.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:34:39.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.315372 -999.00  +20.20  23.49     12   -9.20 1 1 1 1 1   888    0 32.36 137.96 ----- 23.7 23.5 67.0 26.1 26.2 -29.1 25.2 -29.0 23.8 -29.5 24.6 -30.1
2025-11-03T09:34:39.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:34:39.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:34:39.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.315372
2025-11-03T09:34:39.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:34:39.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:34:39.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:34:39.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:34:39.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:34:39.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:34:25', tmtdew=36.72, humidity=7.35, cloud=0.0, wind=12.32, temperature=20.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:34:08.141', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:34:39.861 [DEBUG] [Thread-113417] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:34:39.948 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:34:39.958 [DEBUG] [Thread-113420] [transport.py] [_log()] starting thread (client mode): 0xed061a0
2025-11-03T09:34:39.958 [DEBUG] [Thread-113420] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:34:39.972 [DEBUG] [Thread-113420] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:34:39.973 [INFO] [Thread-113420] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:34:39.980 [DEBUG] [Thread-113420] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:34:39.980 [DEBUG] [Thread-113420] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:34:39.981 [DEBUG] [Thread-113420] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:34:39.981 [DEBUG] [Thread-113420] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:34:39.981 [DEBUG] [Thread-113420] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:34:39.981 [DEBUG] [Thread-113420] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:34:39.981 [DEBUG] [Thread-113420] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:34:39.981 [DEBUG] [Thread-113420] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:34:39.981 [DEBUG] [Thread-113420] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:34:39.981 [DEBUG] [Thread-113420] [transport.py] [_log()] client lang: <none>
2025-11-03T09:34:39.982 [DEBUG] [Thread-113420] [transport.py] [_log()] server lang: <none>
2025-11-03T09:34:39.982 [DEBUG] [Thread-113420] [transport.py] [_log()] kex follows: False
2025-11-03T09:34:39.982 [DEBUG] [Thread-113420] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:34:39.982 [DEBUG] [Thread-113420] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:34:39.982 [DEBUG] [Thread-113420] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:34:39.983 [DEBUG] [Thread-113420] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:34:39.983 [DEBUG] [Thread-113420] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:34:39.983 [DEBUG] [Thread-113420] [transport.py] [_log()] Compression: none
2025-11-03T09:34:39.983 [DEBUG] [Thread-113420] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:34:40.039 [DEBUG] [Thread-113420] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:34:40.040 [DEBUG] [Thread-113420] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:34:40.040 [DEBUG] [Thread-113420] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:34:40.041 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:34:40.041 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:34:40.095 [DEBUG] [Thread-113420] [transport.py] [_log()] userauth is OK
2025-11-03T09:34:40.095 [DEBUG] [Thread-113420] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:34:40.095 [DEBUG] [Thread-113420] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:34:40.095 [DEBUG] [Thread-113420] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:34:40.095 [DEBUG] [Thread-113420] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:34:40.114 [INFO] [Thread-113420] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:34:40.124 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:34:40.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:34:40.941 [DEBUG] [Thread-113420] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:34:40.941 [DEBUG] [Thread-113420] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:34:40.991 [DEBUG] [Thread-113420] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:34:40.991 [DEBUG] [Thread-113420] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:34:41.002 [DEBUG] [Thread-113420] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:34:41.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:34:41.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:34:41.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:34:41.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:34:41.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:34:41.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:34:41.042 [DEBUG] [Thread-113420] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:34:41.167 [DEBUG] [Thread-113422 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:34:48.434 [DEBUG] [Thread-113423 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:34:56.228 [DEBUG] [Thread-113424 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:35:11.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:35:11.061 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:35:11.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:35:11.264 [DEBUG] [Thread-113425 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:35:11.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 34, 57), 36.97, 7.31, 0.0, 16.39, 20.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:35:11.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:34:57
2025-11-03T09:35:11.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:35:12.010 [DEBUG] [Thread-113426] [transport.py] [_log()] starting thread (client mode): 0xed41360
2025-11-03T09:35:12.010 [DEBUG] [Thread-113426] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:35:12.029 [DEBUG] [Thread-113426] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:35:12.029 [INFO] [Thread-113426] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:35:12.032 [DEBUG] [Thread-113426] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:35:12.032 [DEBUG] [Thread-113426] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:35:12.032 [DEBUG] [Thread-113426] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:35:12.032 [DEBUG] [Thread-113426] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:35:12.032 [DEBUG] [Thread-113426] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:35:12.032 [DEBUG] [Thread-113426] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:35:12.033 [DEBUG] [Thread-113426] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:35:12.033 [DEBUG] [Thread-113426] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:35:12.033 [DEBUG] [Thread-113426] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:35:12.033 [DEBUG] [Thread-113426] [transport.py] [_log()] client lang: <none>
2025-11-03T09:35:12.033 [DEBUG] [Thread-113426] [transport.py] [_log()] server lang: <none>
2025-11-03T09:35:12.033 [DEBUG] [Thread-113426] [transport.py] [_log()] kex follows: False
2025-11-03T09:35:12.033 [DEBUG] [Thread-113426] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:35:12.033 [DEBUG] [Thread-113426] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:35:12.033 [DEBUG] [Thread-113426] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:35:12.033 [DEBUG] [Thread-113426] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:35:12.033 [DEBUG] [Thread-113426] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:35:12.033 [DEBUG] [Thread-113426] [transport.py] [_log()] Compression: none
2025-11-03T09:35:12.033 [DEBUG] [Thread-113426] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:35:12.050 [DEBUG] [Thread-113426] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:35:12.050 [DEBUG] [Thread-113426] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:35:12.051 [DEBUG] [Thread-113426] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:35:12.051 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:35:12.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:35:12.053 [DEBUG] [Thread-113426] [transport.py] [_log()] userauth is OK
2025-11-03T09:35:12.053 [DEBUG] [Thread-113426] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:35:12.053 [DEBUG] [Thread-113426] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:35:12.053 [DEBUG] [Thread-113426] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:35:12.053 [DEBUG] [Thread-113426] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:35:12.077 [INFO] [Thread-113426] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:35:12.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:35:13.634 [DEBUG] [Thread-113426] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:35:13.634 [DEBUG] [Thread-113426] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:35:13.634 [DEBUG] [Thread-113426] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:35:13.675 [DEBUG] [Thread-113426] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:35:13.675 [DEBUG] [Thread-113426] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:35:13.678 [DEBUG] [Thread-113426] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:35:13.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:35:13.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:35:13.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:35:13.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:35:13.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:35:13.696 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:35:13.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:35:13.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:35:13.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:35:13.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.315719 -999.00  +20.30  27.58     12   -9.30 1 1 1 1 1   888    0 32.53 155.03 ----- 28.9 27.6 38.8 37.6 26.1 -29.0 25.2 -29.9 23.9 -28.6 24.6 -29.4
2025-11-03T09:35:13.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:35:13.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:35:13.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.315719
2025-11-03T09:35:13.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:35:13.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:35:13.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:35:13.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:35:13.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:35:13.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:34:57', tmtdew=36.97, humidity=7.31, cloud=0.0, wind=16.39, temperature=20.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:34:38.122', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:35:13.699 [DEBUG] [Thread-113426] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:35:13.782 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:35:13.794 [DEBUG] [Thread-113429] [transport.py] [_log()] starting thread (client mode): 0xed07550
2025-11-03T09:35:13.794 [DEBUG] [Thread-113429] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:35:13.809 [DEBUG] [Thread-113429] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:35:13.809 [INFO] [Thread-113429] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:35:13.820 [DEBUG] [Thread-113429] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:35:13.820 [DEBUG] [Thread-113429] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:35:13.820 [DEBUG] [Thread-113429] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:35:13.820 [DEBUG] [Thread-113429] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:35:13.820 [DEBUG] [Thread-113429] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:35:13.821 [DEBUG] [Thread-113429] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:35:13.821 [DEBUG] [Thread-113429] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:35:13.821 [DEBUG] [Thread-113429] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:35:13.821 [DEBUG] [Thread-113429] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:35:13.821 [DEBUG] [Thread-113429] [transport.py] [_log()] client lang: <none>
2025-11-03T09:35:13.821 [DEBUG] [Thread-113429] [transport.py] [_log()] server lang: <none>
2025-11-03T09:35:13.821 [DEBUG] [Thread-113429] [transport.py] [_log()] kex follows: False
2025-11-03T09:35:13.821 [DEBUG] [Thread-113429] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:35:13.821 [DEBUG] [Thread-113429] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:35:13.821 [DEBUG] [Thread-113429] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:35:13.821 [DEBUG] [Thread-113429] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:35:13.821 [DEBUG] [Thread-113429] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:35:13.821 [DEBUG] [Thread-113429] [transport.py] [_log()] Compression: none
2025-11-03T09:35:13.821 [DEBUG] [Thread-113429] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:35:13.874 [DEBUG] [Thread-113429] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:35:13.875 [DEBUG] [Thread-113429] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:35:13.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:35:13.876 [DEBUG] [Thread-113429] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:35:13.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:35:13.931 [DEBUG] [Thread-113429] [transport.py] [_log()] userauth is OK
2025-11-03T09:35:13.931 [DEBUG] [Thread-113429] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:35:13.931 [DEBUG] [Thread-113429] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:35:13.931 [DEBUG] [Thread-113429] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:35:13.932 [DEBUG] [Thread-113429] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:35:13.950 [INFO] [Thread-113429] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:35:13.951 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:35:13.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:35:14.812 [DEBUG] [Thread-113429] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:35:14.821 [DEBUG] [Thread-113429] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:35:14.860 [DEBUG] [Thread-113429] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:35:14.860 [DEBUG] [Thread-113429] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:35:14.869 [DEBUG] [Thread-113429] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:35:14.878 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:35:14.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:35:14.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:35:14.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:35:14.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:35:14.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:35:14.906 [DEBUG] [Thread-113429] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:35:15.778 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:35:15.779 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:35:26.297 [DEBUG] [Thread-113431 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:35:41.336 [DEBUG] [Thread-113432 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:35:44.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:35:44.924 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:35:44.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:35:45.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 35, 30), 36.48, 7.56, 0.0, 17.01, 20.43, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:35:45.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:35:30
2025-11-03T09:35:45.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:35:45.865 [DEBUG] [Thread-113433] [transport.py] [_log()] starting thread (client mode): 0xed5f3a0
2025-11-03T09:35:45.865 [DEBUG] [Thread-113433] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:35:45.886 [DEBUG] [Thread-113433] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:35:45.886 [INFO] [Thread-113433] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:35:45.890 [DEBUG] [Thread-113433] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:35:45.890 [DEBUG] [Thread-113433] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:35:45.890 [DEBUG] [Thread-113433] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:35:45.890 [DEBUG] [Thread-113433] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:35:45.890 [DEBUG] [Thread-113433] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:35:45.890 [DEBUG] [Thread-113433] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:35:45.890 [DEBUG] [Thread-113433] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:35:45.890 [DEBUG] [Thread-113433] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:35:45.890 [DEBUG] [Thread-113433] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:35:45.890 [DEBUG] [Thread-113433] [transport.py] [_log()] client lang: <none>
2025-11-03T09:35:45.890 [DEBUG] [Thread-113433] [transport.py] [_log()] server lang: <none>
2025-11-03T09:35:45.890 [DEBUG] [Thread-113433] [transport.py] [_log()] kex follows: False
2025-11-03T09:35:45.890 [DEBUG] [Thread-113433] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:35:45.890 [DEBUG] [Thread-113433] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:35:45.890 [DEBUG] [Thread-113433] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:35:45.890 [DEBUG] [Thread-113433] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:35:45.890 [DEBUG] [Thread-113433] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:35:45.890 [DEBUG] [Thread-113433] [transport.py] [_log()] Compression: none
2025-11-03T09:35:45.890 [DEBUG] [Thread-113433] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:35:45.908 [DEBUG] [Thread-113433] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:35:45.908 [DEBUG] [Thread-113433] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:35:45.908 [DEBUG] [Thread-113433] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:35:45.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:35:45.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:35:45.909 [DEBUG] [Thread-113433] [transport.py] [_log()] userauth is OK
2025-11-03T09:35:45.909 [DEBUG] [Thread-113433] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:35:45.909 [DEBUG] [Thread-113433] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:35:45.909 [DEBUG] [Thread-113433] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:35:45.909 [DEBUG] [Thread-113433] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:35:45.918 [INFO] [Thread-113433] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:35:45.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:35:46.555 [DEBUG] [Thread-113433] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:35:46.555 [DEBUG] [Thread-113433] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:35:46.555 [DEBUG] [Thread-113433] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:35:46.596 [DEBUG] [Thread-113433] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:35:46.596 [DEBUG] [Thread-113433] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:35:46.600 [DEBUG] [Thread-113433] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:35:46.613 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:35:46.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:35:46.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:35:46.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:35:46.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:35:46.625 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:35:46.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:35:46.625 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:35:46.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:35:46.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.316065 -999.00  +20.30  19.15     12   -9.40 1 1 1 1 1   888    0 32.54 156.96 ----- 15.8 19.1 54.2 25.9 26.1 -29.1 25.3 -28.6 23.9 -28.4 24.7 -28.4
2025-11-03T09:35:46.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:35:46.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:35:46.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.316065
2025-11-03T09:35:46.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:35:46.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:35:46.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:35:46.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:35:46.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:35:46.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:35:30', tmtdew=36.48, humidity=7.56, cloud=0.0, wind=17.01, temperature=20.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:35:08.016', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:35:46.628 [DEBUG] [Thread-113433] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:35:46.719 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:35:46.731 [DEBUG] [Thread-113436] [transport.py] [_log()] starting thread (client mode): 0xed42aa0
2025-11-03T09:35:46.731 [DEBUG] [Thread-113436] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:35:46.745 [DEBUG] [Thread-113436] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:35:46.746 [INFO] [Thread-113436] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:35:46.753 [DEBUG] [Thread-113436] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:35:46.753 [DEBUG] [Thread-113436] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:35:46.753 [DEBUG] [Thread-113436] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:35:46.754 [DEBUG] [Thread-113436] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:35:46.754 [DEBUG] [Thread-113436] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:35:46.754 [DEBUG] [Thread-113436] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:35:46.754 [DEBUG] [Thread-113436] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:35:46.754 [DEBUG] [Thread-113436] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:35:46.754 [DEBUG] [Thread-113436] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:35:46.754 [DEBUG] [Thread-113436] [transport.py] [_log()] client lang: <none>
2025-11-03T09:35:46.754 [DEBUG] [Thread-113436] [transport.py] [_log()] server lang: <none>
2025-11-03T09:35:46.754 [DEBUG] [Thread-113436] [transport.py] [_log()] kex follows: False
2025-11-03T09:35:46.754 [DEBUG] [Thread-113436] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:35:46.754 [DEBUG] [Thread-113436] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:35:46.754 [DEBUG] [Thread-113436] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:35:46.754 [DEBUG] [Thread-113436] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:35:46.754 [DEBUG] [Thread-113436] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:35:46.754 [DEBUG] [Thread-113436] [transport.py] [_log()] Compression: none
2025-11-03T09:35:46.754 [DEBUG] [Thread-113436] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:35:46.813 [DEBUG] [Thread-113436] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:35:46.814 [DEBUG] [Thread-113436] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:35:46.815 [DEBUG] [Thread-113436] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:35:46.815 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:35:46.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:35:46.869 [DEBUG] [Thread-113436] [transport.py] [_log()] userauth is OK
2025-11-03T09:35:46.870 [DEBUG] [Thread-113436] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:35:46.870 [DEBUG] [Thread-113436] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:35:46.870 [DEBUG] [Thread-113436] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:35:46.870 [DEBUG] [Thread-113436] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:35:46.889 [INFO] [Thread-113436] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:35:46.889 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:35:46.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:35:47.805 [DEBUG] [Thread-113436] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:35:47.805 [DEBUG] [Thread-113436] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:35:47.853 [DEBUG] [Thread-113436] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:35:47.853 [DEBUG] [Thread-113436] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:35:47.863 [DEBUG] [Thread-113436] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:35:47.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:35:47.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:35:47.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:35:47.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:35:47.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:35:47.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:35:47.900 [DEBUG] [Thread-113436] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:35:48.492 [DEBUG] [Thread-113438 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:35:56.375 [DEBUG] [Thread-113439 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:36:11.425 [DEBUG] [Thread-113440 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:36:15.919 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:36:15.920 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:36:17.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:36:17.905 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:36:17.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:36:18.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 36, 2), 36.59, 7.5, 0.0, 20.17, 20.43, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:36:18.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:36:02
2025-11-03T09:36:18.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:36:18.864 [DEBUG] [Thread-113441] [transport.py] [_log()] starting thread (client mode): 0x81d9c90
2025-11-03T09:36:18.865 [DEBUG] [Thread-113441] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:36:18.884 [DEBUG] [Thread-113441] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:36:18.884 [INFO] [Thread-113441] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:36:18.885 [DEBUG] [Thread-113441] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:36:18.885 [DEBUG] [Thread-113441] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:36:18.885 [DEBUG] [Thread-113441] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:36:18.885 [DEBUG] [Thread-113441] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:36:18.885 [DEBUG] [Thread-113441] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:36:18.885 [DEBUG] [Thread-113441] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:36:18.885 [DEBUG] [Thread-113441] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:36:18.885 [DEBUG] [Thread-113441] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:36:18.885 [DEBUG] [Thread-113441] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:36:18.885 [DEBUG] [Thread-113441] [transport.py] [_log()] client lang: <none>
2025-11-03T09:36:18.885 [DEBUG] [Thread-113441] [transport.py] [_log()] server lang: <none>
2025-11-03T09:36:18.885 [DEBUG] [Thread-113441] [transport.py] [_log()] kex follows: False
2025-11-03T09:36:18.886 [DEBUG] [Thread-113441] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:36:18.886 [DEBUG] [Thread-113441] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:36:18.886 [DEBUG] [Thread-113441] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:36:18.886 [DEBUG] [Thread-113441] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:36:18.886 [DEBUG] [Thread-113441] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:36:18.886 [DEBUG] [Thread-113441] [transport.py] [_log()] Compression: none
2025-11-03T09:36:18.886 [DEBUG] [Thread-113441] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:36:18.893 [DEBUG] [Thread-113441] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:36:18.893 [DEBUG] [Thread-113441] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:36:18.893 [DEBUG] [Thread-113441] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:36:18.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:36:18.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:36:18.894 [DEBUG] [Thread-113441] [transport.py] [_log()] userauth is OK
2025-11-03T09:36:18.894 [DEBUG] [Thread-113441] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:36:18.894 [DEBUG] [Thread-113441] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:36:18.894 [DEBUG] [Thread-113441] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:36:18.894 [DEBUG] [Thread-113441] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:36:18.903 [INFO] [Thread-113441] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:36:18.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:36:19.452 [DEBUG] [Thread-113441] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:36:19.452 [DEBUG] [Thread-113441] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:36:19.453 [DEBUG] [Thread-113441] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:36:19.493 [DEBUG] [Thread-113441] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:36:19.493 [DEBUG] [Thread-113441] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:36:19.496 [DEBUG] [Thread-113441] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:36:19.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:36:19.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:36:19.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:36:19.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:36:19.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:36:19.521 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:36:19.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:36:19.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:36:19.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:36:19.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.316413 -999.00  +20.20   9.86     12   -9.60 1 1 1 1 1   888    0 33.17 157.54 ----- 14.2 9.9 53.0 20.3 26.2 -29.0 25.3 -28.8 23.9 -29.6 24.7 -28.5
2025-11-03T09:36:19.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:36:19.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:36:19.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.316413
2025-11-03T09:36:19.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:36:19.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:36:19.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:36:19.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:36:19.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:36:19.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:36:02', tmtdew=36.59, humidity=7.5, cloud=0.0, wind=20.17, temperature=20.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:35:38.083', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:36:19.524 [DEBUG] [Thread-113441] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:36:19.607 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:36:19.620 [DEBUG] [Thread-113444] [transport.py] [_log()] starting thread (client mode): 0xed06500
2025-11-03T09:36:19.620 [DEBUG] [Thread-113444] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:36:19.635 [DEBUG] [Thread-113444] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:36:19.635 [INFO] [Thread-113444] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:36:19.642 [DEBUG] [Thread-113444] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:36:19.643 [DEBUG] [Thread-113444] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:36:19.643 [DEBUG] [Thread-113444] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:36:19.643 [DEBUG] [Thread-113444] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:36:19.643 [DEBUG] [Thread-113444] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:36:19.643 [DEBUG] [Thread-113444] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:36:19.644 [DEBUG] [Thread-113444] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:36:19.644 [DEBUG] [Thread-113444] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:36:19.644 [DEBUG] [Thread-113444] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:36:19.644 [DEBUG] [Thread-113444] [transport.py] [_log()] client lang: <none>
2025-11-03T09:36:19.644 [DEBUG] [Thread-113444] [transport.py] [_log()] server lang: <none>
2025-11-03T09:36:19.644 [DEBUG] [Thread-113444] [transport.py] [_log()] kex follows: False
2025-11-03T09:36:19.644 [DEBUG] [Thread-113444] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:36:19.644 [DEBUG] [Thread-113444] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:36:19.645 [DEBUG] [Thread-113444] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:36:19.645 [DEBUG] [Thread-113444] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:36:19.645 [DEBUG] [Thread-113444] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:36:19.645 [DEBUG] [Thread-113444] [transport.py] [_log()] Compression: none
2025-11-03T09:36:19.645 [DEBUG] [Thread-113444] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:36:19.706 [DEBUG] [Thread-113444] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:36:19.706 [DEBUG] [Thread-113444] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:36:19.707 [DEBUG] [Thread-113444] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:36:19.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:36:19.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:36:19.766 [DEBUG] [Thread-113444] [transport.py] [_log()] userauth is OK
2025-11-03T09:36:19.767 [DEBUG] [Thread-113444] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:36:19.767 [DEBUG] [Thread-113444] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:36:19.767 [DEBUG] [Thread-113444] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:36:19.767 [DEBUG] [Thread-113444] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:36:19.788 [INFO] [Thread-113444] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:36:19.788 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:36:19.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:36:20.628 [DEBUG] [Thread-113444] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:36:20.638 [DEBUG] [Thread-113444] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:36:20.677 [DEBUG] [Thread-113444] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:36:20.677 [DEBUG] [Thread-113444] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:36:20.686 [DEBUG] [Thread-113444] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:36:20.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:36:20.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:36:20.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:36:20.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:36:20.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:36:20.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:36:20.724 [DEBUG] [Thread-113444] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:36:26.470 [DEBUG] [Thread-113446 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:36:41.524 [DEBUG] [Thread-113447 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:36:48.558 [DEBUG] [Thread-113448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:36:50.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:36:50.719 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:36:50.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:36:51.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 36, 34), 36.77, 6.95, 0.0, 16.6, 20.58, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:36:51.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:36:34
2025-11-03T09:36:51.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:36:51.671 [DEBUG] [Thread-113449] [transport.py] [_log()] starting thread (client mode): 0xed2f370
2025-11-03T09:36:51.671 [DEBUG] [Thread-113449] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:36:51.681 [DEBUG] [Thread-113449] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:36:51.682 [INFO] [Thread-113449] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:36:51.685 [DEBUG] [Thread-113449] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:36:51.685 [DEBUG] [Thread-113449] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:36:51.685 [DEBUG] [Thread-113449] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:36:51.685 [DEBUG] [Thread-113449] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:36:51.685 [DEBUG] [Thread-113449] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:36:51.685 [DEBUG] [Thread-113449] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:36:51.685 [DEBUG] [Thread-113449] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:36:51.685 [DEBUG] [Thread-113449] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:36:51.685 [DEBUG] [Thread-113449] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:36:51.685 [DEBUG] [Thread-113449] [transport.py] [_log()] client lang: <none>
2025-11-03T09:36:51.685 [DEBUG] [Thread-113449] [transport.py] [_log()] server lang: <none>
2025-11-03T09:36:51.685 [DEBUG] [Thread-113449] [transport.py] [_log()] kex follows: False
2025-11-03T09:36:51.685 [DEBUG] [Thread-113449] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:36:51.685 [DEBUG] [Thread-113449] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:36:51.685 [DEBUG] [Thread-113449] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:36:51.685 [DEBUG] [Thread-113449] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:36:51.685 [DEBUG] [Thread-113449] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:36:51.685 [DEBUG] [Thread-113449] [transport.py] [_log()] Compression: none
2025-11-03T09:36:51.685 [DEBUG] [Thread-113449] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:36:51.702 [DEBUG] [Thread-113449] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:36:51.702 [DEBUG] [Thread-113449] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:36:51.703 [DEBUG] [Thread-113449] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:36:51.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:36:51.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:36:51.705 [DEBUG] [Thread-113449] [transport.py] [_log()] userauth is OK
2025-11-03T09:36:51.705 [DEBUG] [Thread-113449] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:36:51.705 [DEBUG] [Thread-113449] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:36:51.705 [DEBUG] [Thread-113449] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:36:51.705 [DEBUG] [Thread-113449] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:36:51.729 [INFO] [Thread-113449] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:36:51.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:36:52.380 [DEBUG] [Thread-113449] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:36:52.381 [DEBUG] [Thread-113449] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:36:52.381 [DEBUG] [Thread-113449] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:36:52.422 [DEBUG] [Thread-113449] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:36:52.422 [DEBUG] [Thread-113449] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:36:52.425 [DEBUG] [Thread-113449] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:36:52.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:36:52.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:36:52.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:36:52.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:36:52.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:36:52.450 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:36:52.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:36:52.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:36:52.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:36:52.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.316760 -999.00  +20.20  15.47     12   -9.40 1 1 1 1 1   888    0 32.62 154.66 ----- 13.7 15.5 39.6 20.4 26.3 -29.8 25.4 -28.5 23.9 -27.9 24.8 -28.2
2025-11-03T09:36:52.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:36:52.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:36:52.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.316760
2025-11-03T09:36:52.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:36:52.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:36:52.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:36:52.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:36:52.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:36:52.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:36:34', tmtdew=36.77, humidity=6.95, cloud=0.0, wind=16.6, temperature=20.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:36:08.064', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:36:52.454 [DEBUG] [Thread-113449] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:36:52.537 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:36:52.548 [DEBUG] [Thread-113452] [transport.py] [_log()] starting thread (client mode): 0x1179b850
2025-11-03T09:36:52.548 [DEBUG] [Thread-113452] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:36:52.562 [DEBUG] [Thread-113452] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:36:52.562 [INFO] [Thread-113452] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:36:52.570 [DEBUG] [Thread-113452] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:36:52.570 [DEBUG] [Thread-113452] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:36:52.570 [DEBUG] [Thread-113452] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:36:52.570 [DEBUG] [Thread-113452] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:36:52.570 [DEBUG] [Thread-113452] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:36:52.570 [DEBUG] [Thread-113452] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:36:52.570 [DEBUG] [Thread-113452] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:36:52.570 [DEBUG] [Thread-113452] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:36:52.570 [DEBUG] [Thread-113452] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:36:52.570 [DEBUG] [Thread-113452] [transport.py] [_log()] client lang: <none>
2025-11-03T09:36:52.570 [DEBUG] [Thread-113452] [transport.py] [_log()] server lang: <none>
2025-11-03T09:36:52.571 [DEBUG] [Thread-113452] [transport.py] [_log()] kex follows: False
2025-11-03T09:36:52.571 [DEBUG] [Thread-113452] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:36:52.571 [DEBUG] [Thread-113452] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:36:52.571 [DEBUG] [Thread-113452] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:36:52.571 [DEBUG] [Thread-113452] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:36:52.571 [DEBUG] [Thread-113452] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:36:52.571 [DEBUG] [Thread-113452] [transport.py] [_log()] Compression: none
2025-11-03T09:36:52.571 [DEBUG] [Thread-113452] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:36:52.632 [DEBUG] [Thread-113452] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:36:52.632 [DEBUG] [Thread-113452] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:36:52.633 [DEBUG] [Thread-113452] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:36:52.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:36:52.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:36:52.691 [DEBUG] [Thread-113452] [transport.py] [_log()] userauth is OK
2025-11-03T09:36:52.692 [DEBUG] [Thread-113452] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:36:52.692 [DEBUG] [Thread-113452] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:36:52.692 [DEBUG] [Thread-113452] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:36:52.692 [DEBUG] [Thread-113452] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:36:52.711 [INFO] [Thread-113452] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:36:52.712 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:36:52.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:36:53.591 [DEBUG] [Thread-113452] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:36:53.592 [DEBUG] [Thread-113452] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:36:53.640 [DEBUG] [Thread-113452] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:36:53.641 [DEBUG] [Thread-113452] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:36:53.650 [DEBUG] [Thread-113452] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:36:53.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:36:53.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:36:53.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:36:53.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:36:53.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:36:53.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:36:53.686 [DEBUG] [Thread-113452] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:36:56.560 [DEBUG] [Thread-113454 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:37:11.619 [DEBUG] [Thread-113455 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:37:16.060 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:37:16.061 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:37:23.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:37:23.708 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:37:23.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:37:24.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 37, 7), 36.54, 7.08, 0.0, 14.66, 20.57, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:37:24.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:37:07
2025-11-03T09:37:24.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:37:24.662 [DEBUG] [Thread-113456] [transport.py] [_log()] starting thread (client mode): 0xed5ffa0
2025-11-03T09:37:24.662 [DEBUG] [Thread-113456] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:37:24.684 [DEBUG] [Thread-113456] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:37:24.684 [INFO] [Thread-113456] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:37:24.688 [DEBUG] [Thread-113456] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:37:24.688 [DEBUG] [Thread-113456] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:37:24.688 [DEBUG] [Thread-113456] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:37:24.688 [DEBUG] [Thread-113456] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:37:24.688 [DEBUG] [Thread-113456] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:37:24.688 [DEBUG] [Thread-113456] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:37:24.688 [DEBUG] [Thread-113456] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:37:24.688 [DEBUG] [Thread-113456] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:37:24.688 [DEBUG] [Thread-113456] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:37:24.688 [DEBUG] [Thread-113456] [transport.py] [_log()] client lang: <none>
2025-11-03T09:37:24.688 [DEBUG] [Thread-113456] [transport.py] [_log()] server lang: <none>
2025-11-03T09:37:24.688 [DEBUG] [Thread-113456] [transport.py] [_log()] kex follows: False
2025-11-03T09:37:24.688 [DEBUG] [Thread-113456] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:37:24.688 [DEBUG] [Thread-113456] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:37:24.688 [DEBUG] [Thread-113456] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:37:24.688 [DEBUG] [Thread-113456] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:37:24.688 [DEBUG] [Thread-113456] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:37:24.688 [DEBUG] [Thread-113456] [transport.py] [_log()] Compression: none
2025-11-03T09:37:24.688 [DEBUG] [Thread-113456] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:37:24.702 [DEBUG] [Thread-113456] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:37:24.703 [DEBUG] [Thread-113456] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:37:24.703 [DEBUG] [Thread-113456] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:37:24.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:37:24.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:37:24.704 [DEBUG] [Thread-113456] [transport.py] [_log()] userauth is OK
2025-11-03T09:37:24.704 [DEBUG] [Thread-113456] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:37:24.704 [DEBUG] [Thread-113456] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:37:24.704 [DEBUG] [Thread-113456] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:37:24.704 [DEBUG] [Thread-113456] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:37:24.713 [INFO] [Thread-113456] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:37:24.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:37:25.441 [DEBUG] [Thread-113456] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:37:25.441 [DEBUG] [Thread-113456] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:37:25.441 [DEBUG] [Thread-113456] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:37:25.482 [DEBUG] [Thread-113456] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:37:25.482 [DEBUG] [Thread-113456] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:37:25.484 [DEBUG] [Thread-113456] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:37:25.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:37:25.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:37:25.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:37:25.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:37:25.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:37:25.502 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:37:25.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:37:25.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:37:25.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:37:25.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.317108 -999.00  +20.20  16.91     12   -9.30 1 1 1 1 1   888    0 32.22 153.68 ----- 16.1 16.9 47.0 20.1 26.3 -29.2 25.4 -28.6 23.9 -28.3 24.8 -28.3
2025-11-03T09:37:25.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:37:25.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:37:25.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.317108
2025-11-03T09:37:25.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:37:25.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:37:25.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:37:25.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:37:25.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:37:25.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:37:07', tmtdew=36.54, humidity=7.08, cloud=0.0, wind=14.66, temperature=20.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:36:38.131', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:37:25.503 [DEBUG] [Thread-113456] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:37:25.577 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:37:25.589 [DEBUG] [Thread-113459] [transport.py] [_log()] starting thread (client mode): 0xed5e680
2025-11-03T09:37:25.589 [DEBUG] [Thread-113459] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:37:25.608 [DEBUG] [Thread-113459] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:37:25.608 [INFO] [Thread-113459] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:37:25.616 [DEBUG] [Thread-113459] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:37:25.616 [DEBUG] [Thread-113459] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:37:25.616 [DEBUG] [Thread-113459] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:37:25.616 [DEBUG] [Thread-113459] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:37:25.616 [DEBUG] [Thread-113459] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:37:25.616 [DEBUG] [Thread-113459] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:37:25.616 [DEBUG] [Thread-113459] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:37:25.616 [DEBUG] [Thread-113459] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:37:25.616 [DEBUG] [Thread-113459] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:37:25.616 [DEBUG] [Thread-113459] [transport.py] [_log()] client lang: <none>
2025-11-03T09:37:25.617 [DEBUG] [Thread-113459] [transport.py] [_log()] server lang: <none>
2025-11-03T09:37:25.617 [DEBUG] [Thread-113459] [transport.py] [_log()] kex follows: False
2025-11-03T09:37:25.617 [DEBUG] [Thread-113459] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:37:25.617 [DEBUG] [Thread-113459] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:37:25.617 [DEBUG] [Thread-113459] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:37:25.617 [DEBUG] [Thread-113459] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:37:25.617 [DEBUG] [Thread-113459] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:37:25.617 [DEBUG] [Thread-113459] [transport.py] [_log()] Compression: none
2025-11-03T09:37:25.617 [DEBUG] [Thread-113459] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:37:25.673 [DEBUG] [Thread-113459] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:37:25.673 [DEBUG] [Thread-113459] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:37:25.673 [DEBUG] [Thread-113459] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:37:25.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:37:25.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:37:25.730 [DEBUG] [Thread-113459] [transport.py] [_log()] userauth is OK
2025-11-03T09:37:25.730 [DEBUG] [Thread-113459] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:37:25.730 [DEBUG] [Thread-113459] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:37:25.730 [DEBUG] [Thread-113459] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:37:25.731 [DEBUG] [Thread-113459] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:37:25.745 [INFO] [Thread-113459] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:37:25.745 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:37:25.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:37:26.619 [DEBUG] [Thread-113459] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:37:26.619 [DEBUG] [Thread-113459] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:37:26.651 [DEBUG] [Thread-113461 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:37:26.668 [DEBUG] [Thread-113459] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:37:26.668 [DEBUG] [Thread-113459] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:37:26.677 [DEBUG] [Thread-113459] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:37:26.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:37:26.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:37:26.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:37:26.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:37:26.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:37:26.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:37:26.710 [DEBUG] [Thread-113459] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:37:41.693 [DEBUG] [Thread-113462 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:37:48.617 [DEBUG] [Thread-113463 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:37:56.727 [DEBUG] [Thread-113464 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:37:56.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:37:56.733 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:37:56.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:37:57.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 37, 39), 36.62, 7.51, 0.0, 15.7, 20.63, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:37:57.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:37:39
2025-11-03T09:37:57.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:37:57.709 [DEBUG] [Thread-113465] [transport.py] [_log()] starting thread (client mode): 0xed5e830
2025-11-03T09:37:57.709 [DEBUG] [Thread-113465] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:37:57.728 [DEBUG] [Thread-113465] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:37:57.728 [INFO] [Thread-113465] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:37:57.731 [DEBUG] [Thread-113465] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:37:57.731 [DEBUG] [Thread-113465] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:37:57.732 [DEBUG] [Thread-113465] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:37:57.732 [DEBUG] [Thread-113465] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:37:57.732 [DEBUG] [Thread-113465] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:37:57.732 [DEBUG] [Thread-113465] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:37:57.732 [DEBUG] [Thread-113465] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:37:57.732 [DEBUG] [Thread-113465] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:37:57.732 [DEBUG] [Thread-113465] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:37:57.732 [DEBUG] [Thread-113465] [transport.py] [_log()] client lang: <none>
2025-11-03T09:37:57.732 [DEBUG] [Thread-113465] [transport.py] [_log()] server lang: <none>
2025-11-03T09:37:57.732 [DEBUG] [Thread-113465] [transport.py] [_log()] kex follows: False
2025-11-03T09:37:57.732 [DEBUG] [Thread-113465] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:37:57.732 [DEBUG] [Thread-113465] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:37:57.732 [DEBUG] [Thread-113465] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:37:57.732 [DEBUG] [Thread-113465] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:37:57.732 [DEBUG] [Thread-113465] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:37:57.732 [DEBUG] [Thread-113465] [transport.py] [_log()] Compression: none
2025-11-03T09:37:57.732 [DEBUG] [Thread-113465] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:37:57.746 [DEBUG] [Thread-113465] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:37:57.746 [DEBUG] [Thread-113465] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:37:57.746 [DEBUG] [Thread-113465] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:37:57.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:37:57.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:37:57.747 [DEBUG] [Thread-113465] [transport.py] [_log()] userauth is OK
2025-11-03T09:37:57.747 [DEBUG] [Thread-113465] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:37:57.747 [DEBUG] [Thread-113465] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:37:57.747 [DEBUG] [Thread-113465] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:37:57.747 [DEBUG] [Thread-113465] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:37:57.756 [INFO] [Thread-113465] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:37:57.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:37:58.394 [DEBUG] [Thread-113465] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:37:58.394 [DEBUG] [Thread-113465] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:37:58.394 [DEBUG] [Thread-113465] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:37:58.436 [DEBUG] [Thread-113465] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:37:58.436 [DEBUG] [Thread-113465] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:37:58.439 [DEBUG] [Thread-113465] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:37:58.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:37:58.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:37:58.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:37:58.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:37:58.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:37:58.462 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:37:58.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:37:58.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:37:58.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:37:58.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.317455 -999.00  +20.30  15.31     12   -9.50 1 1 1 1 1   888    0 32.80 155.65 ----- 20.3 15.3 68.4 22.7 26.4 -29.0 25.4 -28.3 23.9 -29.3 24.8 -29.3
2025-11-03T09:37:58.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:37:58.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:37:58.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.317455
2025-11-03T09:37:58.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:37:58.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:37:58.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:37:58.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:37:58.464 [DEBUG] [Thread-113465] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:37:58.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:37:58.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:37:39', tmtdew=36.62, humidity=7.51, cloud=0.0, wind=15.7, temperature=20.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:37:08.112', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:37:58.542 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:37:58.553 [DEBUG] [Thread-113468] [transport.py] [_log()] starting thread (client mode): 0xed42aa0
2025-11-03T09:37:58.553 [DEBUG] [Thread-113468] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:37:58.569 [DEBUG] [Thread-113468] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:37:58.569 [INFO] [Thread-113468] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:37:58.576 [DEBUG] [Thread-113468] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:37:58.576 [DEBUG] [Thread-113468] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:37:58.577 [DEBUG] [Thread-113468] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:37:58.577 [DEBUG] [Thread-113468] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:37:58.577 [DEBUG] [Thread-113468] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:37:58.577 [DEBUG] [Thread-113468] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:37:58.577 [DEBUG] [Thread-113468] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:37:58.577 [DEBUG] [Thread-113468] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:37:58.577 [DEBUG] [Thread-113468] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:37:58.577 [DEBUG] [Thread-113468] [transport.py] [_log()] client lang: <none>
2025-11-03T09:37:58.577 [DEBUG] [Thread-113468] [transport.py] [_log()] server lang: <none>
2025-11-03T09:37:58.578 [DEBUG] [Thread-113468] [transport.py] [_log()] kex follows: False
2025-11-03T09:37:58.578 [DEBUG] [Thread-113468] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:37:58.578 [DEBUG] [Thread-113468] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:37:58.578 [DEBUG] [Thread-113468] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:37:58.578 [DEBUG] [Thread-113468] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:37:58.578 [DEBUG] [Thread-113468] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:37:58.578 [DEBUG] [Thread-113468] [transport.py] [_log()] Compression: none
2025-11-03T09:37:58.579 [DEBUG] [Thread-113468] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:37:58.643 [DEBUG] [Thread-113468] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:37:58.644 [DEBUG] [Thread-113468] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:37:58.645 [DEBUG] [Thread-113468] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:37:58.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:37:58.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:37:58.702 [DEBUG] [Thread-113468] [transport.py] [_log()] userauth is OK
2025-11-03T09:37:58.702 [DEBUG] [Thread-113468] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:37:58.703 [DEBUG] [Thread-113468] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:37:58.703 [DEBUG] [Thread-113468] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:37:58.703 [DEBUG] [Thread-113468] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:37:58.722 [INFO] [Thread-113468] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:37:58.722 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:37:58.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:37:59.575 [DEBUG] [Thread-113468] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:37:59.575 [DEBUG] [Thread-113468] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:37:59.623 [DEBUG] [Thread-113468] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:37:59.623 [DEBUG] [Thread-113468] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:37:59.632 [DEBUG] [Thread-113468] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:37:59.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:37:59.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:37:59.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:37:59.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:37:59.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:37:59.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:37:59.669 [DEBUG] [Thread-113468] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:38:11.765 [DEBUG] [Thread-113470 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:38:16.201 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:38:16.202 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:38:26.817 [DEBUG] [Thread-113471 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:38:29.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:38:29.691 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:38:29.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:38:30.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 38, 11), 36.47, 7.59, 0.0, 13.59, 20.6, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:38:30.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:38:11
2025-11-03T09:38:30.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:38:30.632 [DEBUG] [Thread-113472] [transport.py] [_log()] starting thread (client mode): 0xed5f250
2025-11-03T09:38:30.632 [DEBUG] [Thread-113472] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:38:30.655 [DEBUG] [Thread-113472] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:38:30.656 [INFO] [Thread-113472] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:38:30.666 [DEBUG] [Thread-113472] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:38:30.666 [DEBUG] [Thread-113472] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:38:30.667 [DEBUG] [Thread-113472] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:38:30.667 [DEBUG] [Thread-113472] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:38:30.667 [DEBUG] [Thread-113472] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:38:30.667 [DEBUG] [Thread-113472] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:38:30.667 [DEBUG] [Thread-113472] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:38:30.667 [DEBUG] [Thread-113472] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:38:30.667 [DEBUG] [Thread-113472] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:38:30.667 [DEBUG] [Thread-113472] [transport.py] [_log()] client lang: <none>
2025-11-03T09:38:30.667 [DEBUG] [Thread-113472] [transport.py] [_log()] server lang: <none>
2025-11-03T09:38:30.667 [DEBUG] [Thread-113472] [transport.py] [_log()] kex follows: False
2025-11-03T09:38:30.667 [DEBUG] [Thread-113472] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:38:30.667 [DEBUG] [Thread-113472] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:38:30.667 [DEBUG] [Thread-113472] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:38:30.667 [DEBUG] [Thread-113472] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:38:30.667 [DEBUG] [Thread-113472] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:38:30.667 [DEBUG] [Thread-113472] [transport.py] [_log()] Compression: none
2025-11-03T09:38:30.667 [DEBUG] [Thread-113472] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:38:30.678 [DEBUG] [Thread-113472] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:38:30.679 [DEBUG] [Thread-113472] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:38:30.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:38:30.680 [DEBUG] [Thread-113472] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:38:30.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:38:30.682 [DEBUG] [Thread-113472] [transport.py] [_log()] userauth is OK
2025-11-03T09:38:30.682 [DEBUG] [Thread-113472] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:38:30.682 [DEBUG] [Thread-113472] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:38:30.682 [DEBUG] [Thread-113472] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:38:30.682 [DEBUG] [Thread-113472] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:38:30.700 [INFO] [Thread-113472] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:38:30.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:38:31.362 [DEBUG] [Thread-113472] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:38:31.363 [DEBUG] [Thread-113472] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:38:31.363 [DEBUG] [Thread-113472] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:38:31.404 [DEBUG] [Thread-113472] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:38:31.404 [DEBUG] [Thread-113472] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:38:31.417 [DEBUG] [Thread-113472] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:38:31.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:38:31.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:38:31.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:38:31.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:38:31.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:38:31.438 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:38:31.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:38:31.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:38:31.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:38:31.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.318149 -999.00  +20.30  15.47     12   -9.10 1 1 1 1 1   888    0 33.32 164.94 ----- 17.7 15.5 38.8 20.0 26.4 -30.0 25.5 -28.1 24.1 -28.4 24.9 -28.5
2025-11-03T09:38:31.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:38:31.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:38:31.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.318149
2025-11-03T09:38:31.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:38:31.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:38:31.441 [DEBUG] [Thread-113472] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:38:31.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:38:31.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:38:31.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:38:31.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:38:11', tmtdew=36.47, humidity=7.59, cloud=0.0, wind=13.59, temperature=20.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:38:08.074', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:38:31.537 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:38:31.549 [DEBUG] [Thread-113475] [transport.py] [_log()] starting thread (client mode): 0x1179b3a0
2025-11-03T09:38:31.549 [DEBUG] [Thread-113475] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:38:31.563 [DEBUG] [Thread-113475] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:38:31.564 [INFO] [Thread-113475] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:38:31.571 [DEBUG] [Thread-113475] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:38:31.571 [DEBUG] [Thread-113475] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:38:31.571 [DEBUG] [Thread-113475] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:38:31.571 [DEBUG] [Thread-113475] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:38:31.571 [DEBUG] [Thread-113475] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:38:31.571 [DEBUG] [Thread-113475] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:38:31.571 [DEBUG] [Thread-113475] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:38:31.572 [DEBUG] [Thread-113475] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:38:31.572 [DEBUG] [Thread-113475] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:38:31.572 [DEBUG] [Thread-113475] [transport.py] [_log()] client lang: <none>
2025-11-03T09:38:31.572 [DEBUG] [Thread-113475] [transport.py] [_log()] server lang: <none>
2025-11-03T09:38:31.572 [DEBUG] [Thread-113475] [transport.py] [_log()] kex follows: False
2025-11-03T09:38:31.572 [DEBUG] [Thread-113475] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:38:31.572 [DEBUG] [Thread-113475] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:38:31.572 [DEBUG] [Thread-113475] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:38:31.572 [DEBUG] [Thread-113475] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:38:31.572 [DEBUG] [Thread-113475] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:38:31.572 [DEBUG] [Thread-113475] [transport.py] [_log()] Compression: none
2025-11-03T09:38:31.572 [DEBUG] [Thread-113475] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:38:31.630 [DEBUG] [Thread-113475] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:38:31.630 [DEBUG] [Thread-113475] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:38:31.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:38:31.632 [DEBUG] [Thread-113475] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:38:31.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:38:31.685 [DEBUG] [Thread-113475] [transport.py] [_log()] userauth is OK
2025-11-03T09:38:31.686 [DEBUG] [Thread-113475] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:38:31.686 [DEBUG] [Thread-113475] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:38:31.686 [DEBUG] [Thread-113475] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:38:31.686 [DEBUG] [Thread-113475] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:38:31.704 [INFO] [Thread-113475] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:38:31.705 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:38:31.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:38:32.553 [DEBUG] [Thread-113475] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:38:32.554 [DEBUG] [Thread-113475] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:38:32.603 [DEBUG] [Thread-113475] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:38:32.603 [DEBUG] [Thread-113475] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:38:32.615 [DEBUG] [Thread-113475] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:38:32.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:38:32.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:38:32.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:38:32.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:38:32.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:38:32.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:38:32.654 [DEBUG] [Thread-113475] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:38:41.852 [DEBUG] [Thread-113477 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:38:48.682 [DEBUG] [Thread-113478 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:38:56.902 [DEBUG] [Thread-113479 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:39:02.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:39:02.667 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:39:02.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:39:03.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 38, 43), 36.33, 7.23, 0.0, 14.65, 20.58, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:39:03.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:38:43
2025-11-03T09:39:03.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:39:03.619 [DEBUG] [Thread-113480] [transport.py] [_log()] starting thread (client mode): 0xed5e620
2025-11-03T09:39:03.619 [DEBUG] [Thread-113480] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:39:03.642 [DEBUG] [Thread-113480] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:39:03.642 [INFO] [Thread-113480] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:39:03.645 [DEBUG] [Thread-113480] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:39:03.645 [DEBUG] [Thread-113480] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:39:03.645 [DEBUG] [Thread-113480] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:39:03.645 [DEBUG] [Thread-113480] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:39:03.646 [DEBUG] [Thread-113480] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:39:03.646 [DEBUG] [Thread-113480] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:39:03.646 [DEBUG] [Thread-113480] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:39:03.646 [DEBUG] [Thread-113480] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:39:03.646 [DEBUG] [Thread-113480] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:39:03.646 [DEBUG] [Thread-113480] [transport.py] [_log()] client lang: <none>
2025-11-03T09:39:03.646 [DEBUG] [Thread-113480] [transport.py] [_log()] server lang: <none>
2025-11-03T09:39:03.646 [DEBUG] [Thread-113480] [transport.py] [_log()] kex follows: False
2025-11-03T09:39:03.646 [DEBUG] [Thread-113480] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:39:03.646 [DEBUG] [Thread-113480] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:39:03.646 [DEBUG] [Thread-113480] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:39:03.646 [DEBUG] [Thread-113480] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:39:03.646 [DEBUG] [Thread-113480] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:39:03.646 [DEBUG] [Thread-113480] [transport.py] [_log()] Compression: none
2025-11-03T09:39:03.646 [DEBUG] [Thread-113480] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:39:03.665 [DEBUG] [Thread-113480] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:39:03.666 [DEBUG] [Thread-113480] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:39:03.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:39:03.667 [DEBUG] [Thread-113480] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:39:03.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:39:03.669 [DEBUG] [Thread-113480] [transport.py] [_log()] userauth is OK
2025-11-03T09:39:03.669 [DEBUG] [Thread-113480] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:39:03.669 [DEBUG] [Thread-113480] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:39:03.669 [DEBUG] [Thread-113480] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:39:03.670 [DEBUG] [Thread-113480] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:39:03.693 [INFO] [Thread-113480] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:39:03.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:39:04.322 [DEBUG] [Thread-113480] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:39:04.332 [DEBUG] [Thread-113480] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:39:04.333 [DEBUG] [Thread-113480] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:39:04.364 [DEBUG] [Thread-113480] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:39:04.364 [DEBUG] [Thread-113480] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:39:04.368 [DEBUG] [Thread-113480] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:39:04.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:39:04.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:39:04.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:39:04.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:39:04.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:39:04.391 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:39:04.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:39:04.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:39:04.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:39:04.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.318496 -999.00  +20.20  14.25     12   -9.30 1 1 1 1 1   888    0 33.27 170.53 ----- 10.8 14.2 38.6 21.5 26.5 -29.1 25.5 -28.4 24.1 -28.4 24.9 -28.1
2025-11-03T09:39:04.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:39:04.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:39:04.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.318496
2025-11-03T09:39:04.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:39:04.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:39:04.394 [DEBUG] [Thread-113480] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:39:04.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:39:04.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:39:04.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:39:04.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:38:43', tmtdew=36.33, humidity=7.23, cloud=0.0, wind=14.65, temperature=20.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:38:38.054', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:39:04.478 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:39:04.491 [DEBUG] [Thread-113483] [transport.py] [_log()] starting thread (client mode): 0xedb3850
2025-11-03T09:39:04.491 [DEBUG] [Thread-113483] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:39:04.508 [DEBUG] [Thread-113483] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:39:04.509 [INFO] [Thread-113483] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:39:04.519 [DEBUG] [Thread-113483] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:39:04.519 [DEBUG] [Thread-113483] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:39:04.519 [DEBUG] [Thread-113483] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:39:04.519 [DEBUG] [Thread-113483] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:39:04.520 [DEBUG] [Thread-113483] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:39:04.520 [DEBUG] [Thread-113483] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:39:04.520 [DEBUG] [Thread-113483] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:39:04.520 [DEBUG] [Thread-113483] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:39:04.520 [DEBUG] [Thread-113483] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:39:04.520 [DEBUG] [Thread-113483] [transport.py] [_log()] client lang: <none>
2025-11-03T09:39:04.520 [DEBUG] [Thread-113483] [transport.py] [_log()] server lang: <none>
2025-11-03T09:39:04.520 [DEBUG] [Thread-113483] [transport.py] [_log()] kex follows: False
2025-11-03T09:39:04.520 [DEBUG] [Thread-113483] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:39:04.521 [DEBUG] [Thread-113483] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:39:04.521 [DEBUG] [Thread-113483] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:39:04.521 [DEBUG] [Thread-113483] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:39:04.521 [DEBUG] [Thread-113483] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:39:04.521 [DEBUG] [Thread-113483] [transport.py] [_log()] Compression: none
2025-11-03T09:39:04.521 [DEBUG] [Thread-113483] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:39:04.590 [DEBUG] [Thread-113483] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:39:04.590 [DEBUG] [Thread-113483] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:39:04.591 [DEBUG] [Thread-113483] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:39:04.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:39:04.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:39:04.648 [DEBUG] [Thread-113483] [transport.py] [_log()] userauth is OK
2025-11-03T09:39:04.649 [DEBUG] [Thread-113483] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:39:04.649 [DEBUG] [Thread-113483] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:39:04.649 [DEBUG] [Thread-113483] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:39:04.649 [DEBUG] [Thread-113483] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:39:04.669 [INFO] [Thread-113483] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:39:04.669 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:39:04.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:39:05.557 [DEBUG] [Thread-113483] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:39:05.557 [DEBUG] [Thread-113483] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:39:05.597 [DEBUG] [Thread-113483] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:39:05.597 [DEBUG] [Thread-113483] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:39:05.607 [DEBUG] [Thread-113483] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:39:05.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:39:05.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:39:05.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:39:05.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:39:05.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:39:05.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:39:05.645 [DEBUG] [Thread-113483] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:39:11.942 [DEBUG] [Thread-113485 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:39:16.342 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:39:16.344 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:39:27.001 [DEBUG] [Thread-113486 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:39:35.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:39:35.666 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:39:35.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:39:36.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 39, 16), 36.36, 7.23, 0.0, 17.86, 20.72, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:39:36.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:39:16
2025-11-03T09:39:36.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:39:36.604 [DEBUG] [Thread-113487] [transport.py] [_log()] starting thread (client mode): 0xed07580
2025-11-03T09:39:36.604 [DEBUG] [Thread-113487] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:39:36.605 [DEBUG] [Thread-113487] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:39:36.605 [INFO] [Thread-113487] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:39:36.609 [DEBUG] [Thread-113487] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:39:36.609 [DEBUG] [Thread-113487] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:39:36.609 [DEBUG] [Thread-113487] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:39:36.609 [DEBUG] [Thread-113487] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:39:36.609 [DEBUG] [Thread-113487] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:39:36.609 [DEBUG] [Thread-113487] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:39:36.609 [DEBUG] [Thread-113487] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:39:36.609 [DEBUG] [Thread-113487] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:39:36.609 [DEBUG] [Thread-113487] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:39:36.609 [DEBUG] [Thread-113487] [transport.py] [_log()] client lang: <none>
2025-11-03T09:39:36.609 [DEBUG] [Thread-113487] [transport.py] [_log()] server lang: <none>
2025-11-03T09:39:36.609 [DEBUG] [Thread-113487] [transport.py] [_log()] kex follows: False
2025-11-03T09:39:36.609 [DEBUG] [Thread-113487] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:39:36.609 [DEBUG] [Thread-113487] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:39:36.609 [DEBUG] [Thread-113487] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:39:36.609 [DEBUG] [Thread-113487] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:39:36.609 [DEBUG] [Thread-113487] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:39:36.609 [DEBUG] [Thread-113487] [transport.py] [_log()] Compression: none
2025-11-03T09:39:36.610 [DEBUG] [Thread-113487] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:39:36.626 [DEBUG] [Thread-113487] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:39:36.627 [DEBUG] [Thread-113487] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:39:36.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:39:36.629 [DEBUG] [Thread-113487] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:39:36.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:39:36.631 [DEBUG] [Thread-113487] [transport.py] [_log()] userauth is OK
2025-11-03T09:39:36.631 [DEBUG] [Thread-113487] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:39:36.631 [DEBUG] [Thread-113487] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:39:36.631 [DEBUG] [Thread-113487] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:39:36.631 [DEBUG] [Thread-113487] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:39:36.658 [INFO] [Thread-113487] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:39:36.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:39:37.248 [DEBUG] [Thread-113487] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:39:37.248 [DEBUG] [Thread-113487] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:39:37.248 [DEBUG] [Thread-113487] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:39:37.288 [DEBUG] [Thread-113487] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:39:37.288 [DEBUG] [Thread-113487] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:39:37.290 [DEBUG] [Thread-113487] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:39:37.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:39:37.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:39:37.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:39:37.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:39:37.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:39:37.310 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:39:37.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:39:37.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:39:37.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:39:37.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.318844 -999.00  +20.20  16.21     13   -8.90 1 1 1 1 1   888    0 33.21 162.13 ----- 17.6 16.2 58.4 20.3 26.6 -28.9 25.5 -28.9 24.0 -29.2 24.9 -28.2
2025-11-03T09:39:37.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:39:37.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:39:37.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.318844
2025-11-03T09:39:37.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:39:37.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:39:37.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:39:37.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:39:37.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:39:37.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:39:16', tmtdew=36.36, humidity=7.23, cloud=0.0, wind=17.86, temperature=20.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:39:08.122', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:39:37.311 [DEBUG] [Thread-113487] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:39:37.386 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:39:37.398 [DEBUG] [Thread-113490] [transport.py] [_log()] starting thread (client mode): 0xed67160
2025-11-03T09:39:37.398 [DEBUG] [Thread-113490] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:39:37.418 [DEBUG] [Thread-113490] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:39:37.418 [INFO] [Thread-113490] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:39:37.426 [DEBUG] [Thread-113490] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:39:37.426 [DEBUG] [Thread-113490] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:39:37.426 [DEBUG] [Thread-113490] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:39:37.426 [DEBUG] [Thread-113490] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:39:37.426 [DEBUG] [Thread-113490] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:39:37.426 [DEBUG] [Thread-113490] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:39:37.426 [DEBUG] [Thread-113490] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:39:37.426 [DEBUG] [Thread-113490] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:39:37.426 [DEBUG] [Thread-113490] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:39:37.426 [DEBUG] [Thread-113490] [transport.py] [_log()] client lang: <none>
2025-11-03T09:39:37.427 [DEBUG] [Thread-113490] [transport.py] [_log()] server lang: <none>
2025-11-03T09:39:37.427 [DEBUG] [Thread-113490] [transport.py] [_log()] kex follows: False
2025-11-03T09:39:37.427 [DEBUG] [Thread-113490] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:39:37.427 [DEBUG] [Thread-113490] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:39:37.427 [DEBUG] [Thread-113490] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:39:37.427 [DEBUG] [Thread-113490] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:39:37.427 [DEBUG] [Thread-113490] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:39:37.427 [DEBUG] [Thread-113490] [transport.py] [_log()] Compression: none
2025-11-03T09:39:37.427 [DEBUG] [Thread-113490] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:39:37.482 [DEBUG] [Thread-113490] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:39:37.482 [DEBUG] [Thread-113490] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:39:37.482 [DEBUG] [Thread-113490] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:39:37.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:39:37.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:39:37.540 [DEBUG] [Thread-113490] [transport.py] [_log()] userauth is OK
2025-11-03T09:39:37.540 [DEBUG] [Thread-113490] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:39:37.540 [DEBUG] [Thread-113490] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:39:37.540 [DEBUG] [Thread-113490] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:39:37.540 [DEBUG] [Thread-113490] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:39:37.557 [INFO] [Thread-113490] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:39:37.557 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:39:37.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:39:38.393 [DEBUG] [Thread-113490] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:39:38.393 [DEBUG] [Thread-113490] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:39:38.441 [DEBUG] [Thread-113490] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:39:38.441 [DEBUG] [Thread-113490] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:39:38.450 [DEBUG] [Thread-113490] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:39:38.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:39:38.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:39:38.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:39:38.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:39:38.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:39:38.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:39:38.485 [DEBUG] [Thread-113490] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:39:42.038 [DEBUG] [Thread-113492 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:39:48.740 [DEBUG] [Thread-113493 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:39:57.088 [DEBUG] [Thread-113494 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:40:08.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:40:08.502 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:40:08.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:40:09.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 39, 48), 36.2, 7.71, 0.0, 16.2, 20.96, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:40:09.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:39:48
2025-11-03T09:40:09.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:40:09.422 [DEBUG] [Thread-113495] [transport.py] [_log()] starting thread (client mode): 0xed66bf0
2025-11-03T09:40:09.422 [DEBUG] [Thread-113495] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:40:09.442 [DEBUG] [Thread-113495] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:40:09.442 [INFO] [Thread-113495] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:40:09.445 [DEBUG] [Thread-113495] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:40:09.446 [DEBUG] [Thread-113495] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:40:09.446 [DEBUG] [Thread-113495] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:40:09.446 [DEBUG] [Thread-113495] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:40:09.446 [DEBUG] [Thread-113495] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:40:09.446 [DEBUG] [Thread-113495] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:40:09.446 [DEBUG] [Thread-113495] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:40:09.446 [DEBUG] [Thread-113495] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:40:09.446 [DEBUG] [Thread-113495] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:40:09.446 [DEBUG] [Thread-113495] [transport.py] [_log()] client lang: <none>
2025-11-03T09:40:09.446 [DEBUG] [Thread-113495] [transport.py] [_log()] server lang: <none>
2025-11-03T09:40:09.446 [DEBUG] [Thread-113495] [transport.py] [_log()] kex follows: False
2025-11-03T09:40:09.446 [DEBUG] [Thread-113495] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:40:09.446 [DEBUG] [Thread-113495] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:40:09.446 [DEBUG] [Thread-113495] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:40:09.446 [DEBUG] [Thread-113495] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:40:09.446 [DEBUG] [Thread-113495] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:40:09.446 [DEBUG] [Thread-113495] [transport.py] [_log()] Compression: none
2025-11-03T09:40:09.446 [DEBUG] [Thread-113495] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:40:09.463 [DEBUG] [Thread-113495] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:40:09.464 [DEBUG] [Thread-113495] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:40:09.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:40:09.465 [DEBUG] [Thread-113495] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:40:09.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:40:09.467 [DEBUG] [Thread-113495] [transport.py] [_log()] userauth is OK
2025-11-03T09:40:09.467 [DEBUG] [Thread-113495] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:40:09.467 [DEBUG] [Thread-113495] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:40:09.467 [DEBUG] [Thread-113495] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:40:09.468 [DEBUG] [Thread-113495] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:40:09.486 [INFO] [Thread-113495] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:40:09.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:40:12.120 [DEBUG] [Thread-113497 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:40:13.498 [DEBUG] [Thread-113495] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:40:13.499 [DEBUG] [Thread-113495] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:40:13.499 [DEBUG] [Thread-113495] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:40:13.540 [DEBUG] [Thread-113495] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:40:13.540 [DEBUG] [Thread-113495] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:40:13.543 [DEBUG] [Thread-113495] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:40:13.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:40:13.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:40:13.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:40:13.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:40:13.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:40:13.607 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:40:13.607 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:40:13.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:40:13.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:40:13.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.319191 -999.00  +20.40  17.40     13   -8.60 1 1 1 1 1   888    0 33.48 151.91 ----- 20.7 17.4 55.4 24.9 26.6 -29.5 25.6 -27.8 24.1 -27.8 24.9 -29.2
2025-11-03T09:40:13.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:40:13.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:40:13.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.319191
2025-11-03T09:40:13.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:40:13.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:40:13.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:40:13.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:40:13.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:40:13.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:39:48', tmtdew=36.2, humidity=7.71, cloud=0.0, wind=16.2, temperature=20.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:39:38.102', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:40:13.610 [DEBUG] [Thread-113495] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:40:13.695 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:40:13.708 [DEBUG] [Thread-113499] [transport.py] [_log()] starting thread (client mode): 0xed65240
2025-11-03T09:40:13.708 [DEBUG] [Thread-113499] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:40:13.723 [DEBUG] [Thread-113499] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:40:13.723 [INFO] [Thread-113499] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:40:13.731 [DEBUG] [Thread-113499] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:40:13.731 [DEBUG] [Thread-113499] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:40:13.731 [DEBUG] [Thread-113499] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:40:13.731 [DEBUG] [Thread-113499] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:40:13.731 [DEBUG] [Thread-113499] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:40:13.731 [DEBUG] [Thread-113499] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:40:13.731 [DEBUG] [Thread-113499] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:40:13.731 [DEBUG] [Thread-113499] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:40:13.731 [DEBUG] [Thread-113499] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:40:13.731 [DEBUG] [Thread-113499] [transport.py] [_log()] client lang: <none>
2025-11-03T09:40:13.731 [DEBUG] [Thread-113499] [transport.py] [_log()] server lang: <none>
2025-11-03T09:40:13.732 [DEBUG] [Thread-113499] [transport.py] [_log()] kex follows: False
2025-11-03T09:40:13.732 [DEBUG] [Thread-113499] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:40:13.732 [DEBUG] [Thread-113499] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:40:13.732 [DEBUG] [Thread-113499] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:40:13.732 [DEBUG] [Thread-113499] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:40:13.732 [DEBUG] [Thread-113499] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:40:13.732 [DEBUG] [Thread-113499] [transport.py] [_log()] Compression: none
2025-11-03T09:40:13.732 [DEBUG] [Thread-113499] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:40:13.787 [DEBUG] [Thread-113499] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:40:13.788 [DEBUG] [Thread-113499] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:40:13.788 [DEBUG] [Thread-113499] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:40:13.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:40:13.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:40:13.843 [DEBUG] [Thread-113499] [transport.py] [_log()] userauth is OK
2025-11-03T09:40:13.844 [DEBUG] [Thread-113499] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:40:13.844 [DEBUG] [Thread-113499] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:40:13.844 [DEBUG] [Thread-113499] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:40:13.844 [DEBUG] [Thread-113499] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:40:13.863 [INFO] [Thread-113499] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:40:13.863 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:40:13.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:40:14.757 [DEBUG] [Thread-113499] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:40:14.757 [DEBUG] [Thread-113499] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:40:14.805 [DEBUG] [Thread-113499] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:40:14.805 [DEBUG] [Thread-113499] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:40:14.815 [DEBUG] [Thread-113499] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:40:14.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:40:14.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:40:14.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:40:14.843 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:40:14.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:40:14.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:40:14.855 [DEBUG] [Thread-113499] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:40:16.483 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:40:16.484 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:40:27.161 [DEBUG] [Thread-113501 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:40:42.210 [DEBUG] [Thread-113502 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:40:44.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:40:44.849 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:40:44.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:40:45.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 40, 20), 36.64, 7.46, 0.0, 16.41, 21.05, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:40:45.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:40:20
2025-11-03T09:40:45.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:40:45.809 [DEBUG] [Thread-113503] [transport.py] [_log()] starting thread (client mode): 0xed64460
2025-11-03T09:40:45.809 [DEBUG] [Thread-113503] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:40:45.829 [DEBUG] [Thread-113503] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:40:45.829 [INFO] [Thread-113503] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:40:45.832 [DEBUG] [Thread-113503] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:40:45.832 [DEBUG] [Thread-113503] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:40:45.832 [DEBUG] [Thread-113503] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:40:45.832 [DEBUG] [Thread-113503] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:40:45.832 [DEBUG] [Thread-113503] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:40:45.832 [DEBUG] [Thread-113503] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:40:45.832 [DEBUG] [Thread-113503] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:40:45.833 [DEBUG] [Thread-113503] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:40:45.833 [DEBUG] [Thread-113503] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:40:45.833 [DEBUG] [Thread-113503] [transport.py] [_log()] client lang: <none>
2025-11-03T09:40:45.833 [DEBUG] [Thread-113503] [transport.py] [_log()] server lang: <none>
2025-11-03T09:40:45.833 [DEBUG] [Thread-113503] [transport.py] [_log()] kex follows: False
2025-11-03T09:40:45.833 [DEBUG] [Thread-113503] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:40:45.833 [DEBUG] [Thread-113503] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:40:45.833 [DEBUG] [Thread-113503] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:40:45.833 [DEBUG] [Thread-113503] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:40:45.833 [DEBUG] [Thread-113503] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:40:45.833 [DEBUG] [Thread-113503] [transport.py] [_log()] Compression: none
2025-11-03T09:40:45.833 [DEBUG] [Thread-113503] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:40:45.848 [DEBUG] [Thread-113503] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:40:45.848 [DEBUG] [Thread-113503] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:40:45.848 [DEBUG] [Thread-113503] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:40:45.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:40:45.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:40:45.849 [DEBUG] [Thread-113503] [transport.py] [_log()] userauth is OK
2025-11-03T09:40:45.849 [DEBUG] [Thread-113503] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:40:45.849 [DEBUG] [Thread-113503] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:40:45.849 [DEBUG] [Thread-113503] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:40:45.849 [DEBUG] [Thread-113503] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:40:45.864 [INFO] [Thread-113503] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:40:45.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:40:46.503 [DEBUG] [Thread-113503] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:40:46.504 [DEBUG] [Thread-113503] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:40:46.504 [DEBUG] [Thread-113503] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:40:46.545 [DEBUG] [Thread-113503] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:40:46.545 [DEBUG] [Thread-113503] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:40:46.549 [DEBUG] [Thread-113503] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:40:46.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:40:46.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:40:46.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:40:46.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:40:46.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:40:46.574 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:40:46.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:40:46.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:40:46.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:40:46.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.319538 -999.00  +20.50  22.72     13   -8.80 1 1 1 1 1   888    0 33.60 156.13 ----- 30.1 22.7 62.6 27.8 26.6 -28.5 25.6 -28.0 24.1 -29.0 24.9 -29.2
2025-11-03T09:40:46.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:40:46.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:40:46.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.319538
2025-11-03T09:40:46.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:40:46.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:40:46.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:40:46.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:40:46.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:40:46.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:40:20', tmtdew=36.64, humidity=7.46, cloud=0.0, wind=16.41, temperature=21.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:40:08.083', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:40:46.577 [DEBUG] [Thread-113503] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:40:46.666 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:40:46.678 [DEBUG] [Thread-113506] [transport.py] [_log()] starting thread (client mode): 0xed66200
2025-11-03T09:40:46.678 [DEBUG] [Thread-113506] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:40:46.693 [DEBUG] [Thread-113506] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:40:46.694 [INFO] [Thread-113506] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:40:46.702 [DEBUG] [Thread-113506] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:40:46.703 [DEBUG] [Thread-113506] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:40:46.703 [DEBUG] [Thread-113506] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:40:46.703 [DEBUG] [Thread-113506] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:40:46.703 [DEBUG] [Thread-113506] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:40:46.703 [DEBUG] [Thread-113506] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:40:46.703 [DEBUG] [Thread-113506] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:40:46.703 [DEBUG] [Thread-113506] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:40:46.703 [DEBUG] [Thread-113506] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:40:46.703 [DEBUG] [Thread-113506] [transport.py] [_log()] client lang: <none>
2025-11-03T09:40:46.703 [DEBUG] [Thread-113506] [transport.py] [_log()] server lang: <none>
2025-11-03T09:40:46.703 [DEBUG] [Thread-113506] [transport.py] [_log()] kex follows: False
2025-11-03T09:40:46.703 [DEBUG] [Thread-113506] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:40:46.703 [DEBUG] [Thread-113506] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:40:46.703 [DEBUG] [Thread-113506] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:40:46.703 [DEBUG] [Thread-113506] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:40:46.712 [DEBUG] [Thread-113506] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:40:46.713 [DEBUG] [Thread-113506] [transport.py] [_log()] Compression: none
2025-11-03T09:40:46.713 [DEBUG] [Thread-113506] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:40:46.762 [DEBUG] [Thread-113506] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:40:46.763 [DEBUG] [Thread-113506] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:40:46.764 [DEBUG] [Thread-113506] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:40:46.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:40:46.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:40:46.821 [DEBUG] [Thread-113506] [transport.py] [_log()] userauth is OK
2025-11-03T09:40:46.821 [DEBUG] [Thread-113506] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:40:46.821 [DEBUG] [Thread-113506] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:40:46.822 [DEBUG] [Thread-113506] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:40:46.822 [DEBUG] [Thread-113506] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:40:46.841 [INFO] [Thread-113506] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:40:46.841 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:40:46.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:40:47.700 [DEBUG] [Thread-113506] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:40:47.701 [DEBUG] [Thread-113506] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:40:47.749 [DEBUG] [Thread-113506] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:40:47.750 [DEBUG] [Thread-113506] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:40:47.760 [DEBUG] [Thread-113506] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:40:47.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:40:47.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:40:47.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:40:47.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:40:47.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:40:47.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:40:47.800 [DEBUG] [Thread-113506] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:40:48.785 [DEBUG] [Thread-113508 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:40:57.247 [DEBUG] [Thread-113509 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:41:12.301 [DEBUG] [Thread-113510 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:41:16.624 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:41:16.625 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:41:17.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:41:17.820 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:41:17.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:41:18.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 40, 53), 36.83, 7.35, 0.0, 18.3, 21.05, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:41:18.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:40:53
2025-11-03T09:41:18.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:41:18.792 [DEBUG] [Thread-113511] [transport.py] [_log()] starting thread (client mode): 0xed66320
2025-11-03T09:41:18.792 [DEBUG] [Thread-113511] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:41:18.812 [DEBUG] [Thread-113511] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:41:18.812 [INFO] [Thread-113511] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:41:18.815 [DEBUG] [Thread-113511] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:41:18.815 [DEBUG] [Thread-113511] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:41:18.815 [DEBUG] [Thread-113511] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:41:18.815 [DEBUG] [Thread-113511] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:41:18.816 [DEBUG] [Thread-113511] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:41:18.816 [DEBUG] [Thread-113511] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:41:18.816 [DEBUG] [Thread-113511] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:41:18.816 [DEBUG] [Thread-113511] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:41:18.816 [DEBUG] [Thread-113511] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:41:18.816 [DEBUG] [Thread-113511] [transport.py] [_log()] client lang: <none>
2025-11-03T09:41:18.816 [DEBUG] [Thread-113511] [transport.py] [_log()] server lang: <none>
2025-11-03T09:41:18.816 [DEBUG] [Thread-113511] [transport.py] [_log()] kex follows: False
2025-11-03T09:41:18.816 [DEBUG] [Thread-113511] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:41:18.816 [DEBUG] [Thread-113511] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:41:18.816 [DEBUG] [Thread-113511] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:41:18.816 [DEBUG] [Thread-113511] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:41:18.816 [DEBUG] [Thread-113511] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:41:18.816 [DEBUG] [Thread-113511] [transport.py] [_log()] Compression: none
2025-11-03T09:41:18.816 [DEBUG] [Thread-113511] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:41:18.829 [DEBUG] [Thread-113511] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:41:18.829 [DEBUG] [Thread-113511] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:41:18.829 [DEBUG] [Thread-113511] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:41:18.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:41:18.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:41:18.830 [DEBUG] [Thread-113511] [transport.py] [_log()] userauth is OK
2025-11-03T09:41:18.830 [DEBUG] [Thread-113511] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:41:18.830 [DEBUG] [Thread-113511] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:41:18.830 [DEBUG] [Thread-113511] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:41:18.830 [DEBUG] [Thread-113511] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:41:18.839 [INFO] [Thread-113511] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:41:18.839 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:41:19.466 [DEBUG] [Thread-113511] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:41:19.466 [DEBUG] [Thread-113511] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:41:19.466 [DEBUG] [Thread-113511] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:41:19.507 [DEBUG] [Thread-113511] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:41:19.507 [DEBUG] [Thread-113511] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:41:19.510 [DEBUG] [Thread-113511] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:41:19.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:41:19.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:41:19.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:41:19.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:41:19.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:41:19.527 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:41:19.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:41:19.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:41:19.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:41:19.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.319885 -999.00  +20.60  30.59     12   -9.30 1 1 2 1 1   888    0 32.80 125.87 ----- 27.6 30.6 57.8 31.9 26.4 -29.9 25.4 -29.5 24.1 -30.6 24.9 -28.5
2025-11-03T09:41:19.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:41:19.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:41:19.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.319885
2025-11-03T09:41:19.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:41:19.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:41:19.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:41:19.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:41:19.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:41:19.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:40:53', tmtdew=36.83, humidity=7.35, cloud=0.0, wind=18.3, temperature=21.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:40:38.064', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:41:19.527 [DEBUG] [Thread-113511] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:41:19.601 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:41:19.613 [DEBUG] [Thread-113514] [transport.py] [_log()] starting thread (client mode): 0xedb39a0
2025-11-03T09:41:19.613 [DEBUG] [Thread-113514] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:41:19.631 [DEBUG] [Thread-113514] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:41:19.631 [INFO] [Thread-113514] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:41:19.639 [DEBUG] [Thread-113514] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:41:19.639 [DEBUG] [Thread-113514] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:41:19.639 [DEBUG] [Thread-113514] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:41:19.639 [DEBUG] [Thread-113514] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:41:19.639 [DEBUG] [Thread-113514] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:41:19.639 [DEBUG] [Thread-113514] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:41:19.639 [DEBUG] [Thread-113514] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:41:19.639 [DEBUG] [Thread-113514] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:41:19.639 [DEBUG] [Thread-113514] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:41:19.639 [DEBUG] [Thread-113514] [transport.py] [_log()] client lang: <none>
2025-11-03T09:41:19.639 [DEBUG] [Thread-113514] [transport.py] [_log()] server lang: <none>
2025-11-03T09:41:19.639 [DEBUG] [Thread-113514] [transport.py] [_log()] kex follows: False
2025-11-03T09:41:19.639 [DEBUG] [Thread-113514] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:41:19.639 [DEBUG] [Thread-113514] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:41:19.639 [DEBUG] [Thread-113514] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:41:19.639 [DEBUG] [Thread-113514] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:41:19.639 [DEBUG] [Thread-113514] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:41:19.639 [DEBUG] [Thread-113514] [transport.py] [_log()] Compression: none
2025-11-03T09:41:19.639 [DEBUG] [Thread-113514] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:41:19.696 [DEBUG] [Thread-113514] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:41:19.696 [DEBUG] [Thread-113514] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:41:19.697 [DEBUG] [Thread-113514] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:41:19.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:41:19.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:41:19.753 [DEBUG] [Thread-113514] [transport.py] [_log()] userauth is OK
2025-11-03T09:41:19.754 [DEBUG] [Thread-113514] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:41:19.754 [DEBUG] [Thread-113514] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:41:19.754 [DEBUG] [Thread-113514] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:41:19.754 [DEBUG] [Thread-113514] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:41:19.768 [INFO] [Thread-113514] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:41:19.768 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:41:19.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:41:20.712 [DEBUG] [Thread-113514] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:41:20.713 [DEBUG] [Thread-113514] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:41:20.760 [DEBUG] [Thread-113514] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:41:20.760 [DEBUG] [Thread-113514] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:41:20.770 [DEBUG] [Thread-113514] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:41:20.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:41:20.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:41:20.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:41:20.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:41:20.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:41:20.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:41:20.807 [DEBUG] [Thread-113514] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:41:27.337 [DEBUG] [Thread-113516 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:41:42.378 [DEBUG] [Thread-113517 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:41:48.819 [DEBUG] [Thread-113518 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:41:50.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:41:50.829 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:41:50.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:41:51.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 41, 25), 36.64, 7.45, 0.0, 19.29, 21.0, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:41:51.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:41:25
2025-11-03T09:41:51.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:41:51.788 [DEBUG] [Thread-113519] [transport.py] [_log()] starting thread (client mode): 0xedb35b0
2025-11-03T09:41:51.788 [DEBUG] [Thread-113519] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:41:51.808 [DEBUG] [Thread-113519] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:41:51.808 [INFO] [Thread-113519] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:41:51.811 [DEBUG] [Thread-113519] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:41:51.811 [DEBUG] [Thread-113519] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:41:51.811 [DEBUG] [Thread-113519] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:41:51.811 [DEBUG] [Thread-113519] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:41:51.811 [DEBUG] [Thread-113519] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:41:51.812 [DEBUG] [Thread-113519] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:41:51.812 [DEBUG] [Thread-113519] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:41:51.812 [DEBUG] [Thread-113519] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:41:51.812 [DEBUG] [Thread-113519] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:41:51.812 [DEBUG] [Thread-113519] [transport.py] [_log()] client lang: <none>
2025-11-03T09:41:51.812 [DEBUG] [Thread-113519] [transport.py] [_log()] server lang: <none>
2025-11-03T09:41:51.812 [DEBUG] [Thread-113519] [transport.py] [_log()] kex follows: False
2025-11-03T09:41:51.812 [DEBUG] [Thread-113519] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:41:51.812 [DEBUG] [Thread-113519] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:41:51.812 [DEBUG] [Thread-113519] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:41:51.812 [DEBUG] [Thread-113519] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:41:51.812 [DEBUG] [Thread-113519] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:41:51.812 [DEBUG] [Thread-113519] [transport.py] [_log()] Compression: none
2025-11-03T09:41:51.812 [DEBUG] [Thread-113519] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:41:51.833 [DEBUG] [Thread-113519] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:41:51.834 [DEBUG] [Thread-113519] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:41:51.834 [DEBUG] [Thread-113519] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:41:51.835 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:41:51.835 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:41:51.836 [DEBUG] [Thread-113519] [transport.py] [_log()] userauth is OK
2025-11-03T09:41:51.837 [DEBUG] [Thread-113519] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:41:51.837 [DEBUG] [Thread-113519] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:41:51.837 [DEBUG] [Thread-113519] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:41:51.837 [DEBUG] [Thread-113519] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:41:51.861 [INFO] [Thread-113519] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:41:51.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:41:52.473 [DEBUG] [Thread-113519] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:41:52.473 [DEBUG] [Thread-113519] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:41:52.474 [DEBUG] [Thread-113519] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:41:52.514 [DEBUG] [Thread-113519] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:41:52.514 [DEBUG] [Thread-113519] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:41:52.517 [DEBUG] [Thread-113519] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:41:52.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:41:52.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:41:52.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:41:52.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:41:52.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:41:52.540 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:41:52.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:41:52.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:41:52.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:41:52.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.320232 -999.00  +20.70  21.18     12   -9.10 1 1 1 1 1   888    0 32.58 127.71 ----- 21.1 21.2 59.6 26.2 26.4 -28.9 25.5 -27.8 24.1 -28.5 24.9 -28.7
2025-11-03T09:41:52.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:41:52.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:41:52.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.320232
2025-11-03T09:41:52.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:41:52.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:41:52.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:41:52.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:41:52.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:41:52.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:41:25', tmtdew=36.64, humidity=7.45, cloud=0.0, wind=19.29, temperature=21.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:41:08.045', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:41:52.543 [DEBUG] [Thread-113519] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:41:52.620 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:41:52.631 [DEBUG] [Thread-113522] [transport.py] [_log()] starting thread (client mode): 0xedb3400
2025-11-03T09:41:52.631 [DEBUG] [Thread-113522] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:41:52.646 [DEBUG] [Thread-113522] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:41:52.646 [INFO] [Thread-113522] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:41:52.653 [DEBUG] [Thread-113522] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:41:52.654 [DEBUG] [Thread-113522] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:41:52.654 [DEBUG] [Thread-113522] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:41:52.654 [DEBUG] [Thread-113522] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:41:52.654 [DEBUG] [Thread-113522] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:41:52.654 [DEBUG] [Thread-113522] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:41:52.654 [DEBUG] [Thread-113522] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:41:52.654 [DEBUG] [Thread-113522] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:41:52.654 [DEBUG] [Thread-113522] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:41:52.654 [DEBUG] [Thread-113522] [transport.py] [_log()] client lang: <none>
2025-11-03T09:41:52.654 [DEBUG] [Thread-113522] [transport.py] [_log()] server lang: <none>
2025-11-03T09:41:52.654 [DEBUG] [Thread-113522] [transport.py] [_log()] kex follows: False
2025-11-03T09:41:52.654 [DEBUG] [Thread-113522] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:41:52.654 [DEBUG] [Thread-113522] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:41:52.654 [DEBUG] [Thread-113522] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:41:52.654 [DEBUG] [Thread-113522] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:41:52.654 [DEBUG] [Thread-113522] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:41:52.654 [DEBUG] [Thread-113522] [transport.py] [_log()] Compression: none
2025-11-03T09:41:52.654 [DEBUG] [Thread-113522] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:41:52.713 [DEBUG] [Thread-113522] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:41:52.713 [DEBUG] [Thread-113522] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:41:52.714 [DEBUG] [Thread-113522] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:41:52.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:41:52.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:41:52.769 [DEBUG] [Thread-113522] [transport.py] [_log()] userauth is OK
2025-11-03T09:41:52.769 [DEBUG] [Thread-113522] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:41:52.770 [DEBUG] [Thread-113522] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:41:52.770 [DEBUG] [Thread-113522] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:41:52.770 [DEBUG] [Thread-113522] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:41:52.792 [INFO] [Thread-113522] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:41:52.792 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:41:52.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:41:53.709 [DEBUG] [Thread-113522] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:41:53.709 [DEBUG] [Thread-113522] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:41:53.757 [DEBUG] [Thread-113522] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:41:53.757 [DEBUG] [Thread-113522] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:41:53.765 [DEBUG] [Thread-113522] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:41:53.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:41:53.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:41:53.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:41:53.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:41:53.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:41:53.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:41:53.796 [DEBUG] [Thread-113522] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:41:57.411 [DEBUG] [Thread-113524 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:42:12.462 [DEBUG] [Thread-113525 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:42:16.768 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:42:16.769 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:42:23.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:42:23.819 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:42:23.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:42:24.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 41, 57), 36.91, 7.06, 0.0, 21.14, 20.95, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:42:24.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:41:57
2025-11-03T09:42:24.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:42:24.784 [DEBUG] [Thread-113526] [transport.py] [_log()] starting thread (client mode): 0xed2cb50
2025-11-03T09:42:24.784 [DEBUG] [Thread-113526] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:42:24.804 [DEBUG] [Thread-113526] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:42:24.804 [INFO] [Thread-113526] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:42:24.807 [DEBUG] [Thread-113526] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:42:24.808 [DEBUG] [Thread-113526] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:42:24.808 [DEBUG] [Thread-113526] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:42:24.808 [DEBUG] [Thread-113526] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:42:24.808 [DEBUG] [Thread-113526] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:42:24.808 [DEBUG] [Thread-113526] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:42:24.808 [DEBUG] [Thread-113526] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:42:24.808 [DEBUG] [Thread-113526] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:42:24.808 [DEBUG] [Thread-113526] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:42:24.808 [DEBUG] [Thread-113526] [transport.py] [_log()] client lang: <none>
2025-11-03T09:42:24.808 [DEBUG] [Thread-113526] [transport.py] [_log()] server lang: <none>
2025-11-03T09:42:24.808 [DEBUG] [Thread-113526] [transport.py] [_log()] kex follows: False
2025-11-03T09:42:24.808 [DEBUG] [Thread-113526] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:42:24.808 [DEBUG] [Thread-113526] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:42:24.808 [DEBUG] [Thread-113526] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:42:24.808 [DEBUG] [Thread-113526] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:42:24.809 [DEBUG] [Thread-113526] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:42:24.809 [DEBUG] [Thread-113526] [transport.py] [_log()] Compression: none
2025-11-03T09:42:24.809 [DEBUG] [Thread-113526] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:42:24.827 [DEBUG] [Thread-113526] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:42:24.827 [DEBUG] [Thread-113526] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:42:24.828 [DEBUG] [Thread-113526] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:42:24.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:42:24.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:42:24.830 [DEBUG] [Thread-113526] [transport.py] [_log()] userauth is OK
2025-11-03T09:42:24.830 [DEBUG] [Thread-113526] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:42:24.830 [DEBUG] [Thread-113526] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:42:24.830 [DEBUG] [Thread-113526] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:42:24.830 [DEBUG] [Thread-113526] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:42:24.852 [INFO] [Thread-113526] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:42:24.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:42:25.481 [DEBUG] [Thread-113526] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:42:25.481 [DEBUG] [Thread-113526] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:42:25.482 [DEBUG] [Thread-113526] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:42:25.522 [DEBUG] [Thread-113526] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:42:25.522 [DEBUG] [Thread-113526] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:42:25.525 [DEBUG] [Thread-113526] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:42:25.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:42:25.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:42:25.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:42:25.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:42:25.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:42:25.549 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:42:25.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:42:25.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:42:25.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:42:25.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.320927 -999.00  +20.70  19.87     12   -9.20 1 1 1 1 1   888    0 32.50 118.70 ----- 22.3 19.9 46.8 22.6 26.6 -28.4 25.6 -28.3 24.2 -28.6 25.0 -28.0
2025-11-03T09:42:25.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:42:25.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:42:25.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.320927
2025-11-03T09:42:25.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:42:25.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:42:25.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:42:25.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:42:25.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:42:25.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:41:57', tmtdew=36.91, humidity=7.06, cloud=0.0, wind=21.14, temperature=20.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:42:08.093', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:42:25.552 [DEBUG] [Thread-113526] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:42:25.635 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:42:25.649 [DEBUG] [Thread-113529] [transport.py] [_log()] starting thread (client mode): 0xed2c670
2025-11-03T09:42:25.650 [DEBUG] [Thread-113529] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:42:25.664 [DEBUG] [Thread-113529] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:42:25.664 [INFO] [Thread-113529] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:42:25.671 [DEBUG] [Thread-113529] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:42:25.672 [DEBUG] [Thread-113529] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:42:25.672 [DEBUG] [Thread-113529] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:42:25.672 [DEBUG] [Thread-113529] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:42:25.672 [DEBUG] [Thread-113529] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:42:25.672 [DEBUG] [Thread-113529] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:42:25.672 [DEBUG] [Thread-113529] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:42:25.672 [DEBUG] [Thread-113529] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:42:25.672 [DEBUG] [Thread-113529] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:42:25.672 [DEBUG] [Thread-113529] [transport.py] [_log()] client lang: <none>
2025-11-03T09:42:25.672 [DEBUG] [Thread-113529] [transport.py] [_log()] server lang: <none>
2025-11-03T09:42:25.672 [DEBUG] [Thread-113529] [transport.py] [_log()] kex follows: False
2025-11-03T09:42:25.672 [DEBUG] [Thread-113529] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:42:25.672 [DEBUG] [Thread-113529] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:42:25.672 [DEBUG] [Thread-113529] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:42:25.672 [DEBUG] [Thread-113529] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:42:25.673 [DEBUG] [Thread-113529] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:42:25.673 [DEBUG] [Thread-113529] [transport.py] [_log()] Compression: none
2025-11-03T09:42:25.673 [DEBUG] [Thread-113529] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:42:25.734 [DEBUG] [Thread-113529] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:42:25.734 [DEBUG] [Thread-113529] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:42:25.735 [DEBUG] [Thread-113529] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:42:25.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:42:25.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:42:25.789 [DEBUG] [Thread-113529] [transport.py] [_log()] userauth is OK
2025-11-03T09:42:25.790 [DEBUG] [Thread-113529] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:42:25.790 [DEBUG] [Thread-113529] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:42:25.790 [DEBUG] [Thread-113529] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:42:25.790 [DEBUG] [Thread-113529] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:42:25.808 [INFO] [Thread-113529] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:42:25.809 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:42:25.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:42:26.674 [DEBUG] [Thread-113529] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:42:26.674 [DEBUG] [Thread-113529] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:42:26.722 [DEBUG] [Thread-113529] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:42:26.722 [DEBUG] [Thread-113529] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:42:26.731 [DEBUG] [Thread-113529] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:42:26.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:42:26.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:42:26.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:42:26.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:42:26.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:42:26.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:42:26.768 [DEBUG] [Thread-113529] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:42:27.504 [DEBUG] [Thread-113531 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:42:42.553 [DEBUG] [Thread-113532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:42:48.878 [DEBUG] [Thread-113533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:42:56.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:42:56.788 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:42:56.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:42:57.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 42, 29), 37.36, 6.8, 0.0, 19.02, 20.9, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:42:57.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:42:29
2025-11-03T09:42:57.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:42:57.587 [DEBUG] [Thread-113534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:42:57.715 [DEBUG] [Thread-113535] [transport.py] [_log()] starting thread (client mode): 0xed66d10
2025-11-03T09:42:57.715 [DEBUG] [Thread-113535] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:42:57.735 [DEBUG] [Thread-113535] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:42:57.735 [INFO] [Thread-113535] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:42:57.738 [DEBUG] [Thread-113535] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:42:57.739 [DEBUG] [Thread-113535] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:42:57.739 [DEBUG] [Thread-113535] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:42:57.739 [DEBUG] [Thread-113535] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:42:57.739 [DEBUG] [Thread-113535] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:42:57.739 [DEBUG] [Thread-113535] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:42:57.739 [DEBUG] [Thread-113535] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:42:57.739 [DEBUG] [Thread-113535] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:42:57.739 [DEBUG] [Thread-113535] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:42:57.739 [DEBUG] [Thread-113535] [transport.py] [_log()] client lang: <none>
2025-11-03T09:42:57.739 [DEBUG] [Thread-113535] [transport.py] [_log()] server lang: <none>
2025-11-03T09:42:57.739 [DEBUG] [Thread-113535] [transport.py] [_log()] kex follows: False
2025-11-03T09:42:57.739 [DEBUG] [Thread-113535] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:42:57.739 [DEBUG] [Thread-113535] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:42:57.739 [DEBUG] [Thread-113535] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:42:57.739 [DEBUG] [Thread-113535] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:42:57.739 [DEBUG] [Thread-113535] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:42:57.739 [DEBUG] [Thread-113535] [transport.py] [_log()] Compression: none
2025-11-03T09:42:57.739 [DEBUG] [Thread-113535] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:42:57.757 [DEBUG] [Thread-113535] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:42:57.757 [DEBUG] [Thread-113535] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:42:57.758 [DEBUG] [Thread-113535] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:42:57.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:42:57.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:42:57.760 [DEBUG] [Thread-113535] [transport.py] [_log()] userauth is OK
2025-11-03T09:42:57.760 [DEBUG] [Thread-113535] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:42:57.760 [DEBUG] [Thread-113535] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:42:57.760 [DEBUG] [Thread-113535] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:42:57.760 [DEBUG] [Thread-113535] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:42:57.786 [INFO] [Thread-113535] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:42:57.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:42:58.415 [DEBUG] [Thread-113535] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:42:58.415 [DEBUG] [Thread-113535] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:42:58.415 [DEBUG] [Thread-113535] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:42:58.457 [DEBUG] [Thread-113535] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:42:58.457 [DEBUG] [Thread-113535] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:42:58.459 [DEBUG] [Thread-113535] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:42:58.473 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:42:58.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:42:58.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:42:58.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:42:58.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:42:58.481 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:42:58.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:42:58.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:42:58.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:42:58.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.321274 -999.00  +20.70  17.34     12   -9.30 1 1 1 1 1   888    0 31.97 109.67 ----- 16.3 17.3 47.4 22.9 26.6 -29.1 25.6 -28.4 24.2 -28.6 25.1 -28.2
2025-11-03T09:42:58.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:42:58.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:42:58.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.321274
2025-11-03T09:42:58.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:42:58.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:42:58.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:42:58.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:42:58.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:42:58.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:42:29', tmtdew=37.36, humidity=6.8, cloud=0.0, wind=19.02, temperature=20.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:42:38.074', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:42:58.482 [DEBUG] [Thread-113535] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:42:58.553 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:42:58.565 [DEBUG] [Thread-113538] [transport.py] [_log()] starting thread (client mode): 0xedb1960
2025-11-03T09:42:58.565 [DEBUG] [Thread-113538] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:42:58.580 [DEBUG] [Thread-113538] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:42:58.580 [INFO] [Thread-113538] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:42:58.587 [DEBUG] [Thread-113538] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:42:58.587 [DEBUG] [Thread-113538] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:42:58.587 [DEBUG] [Thread-113538] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:42:58.587 [DEBUG] [Thread-113538] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:42:58.587 [DEBUG] [Thread-113538] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:42:58.588 [DEBUG] [Thread-113538] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:42:58.588 [DEBUG] [Thread-113538] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:42:58.588 [DEBUG] [Thread-113538] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:42:58.588 [DEBUG] [Thread-113538] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:42:58.588 [DEBUG] [Thread-113538] [transport.py] [_log()] client lang: <none>
2025-11-03T09:42:58.588 [DEBUG] [Thread-113538] [transport.py] [_log()] server lang: <none>
2025-11-03T09:42:58.588 [DEBUG] [Thread-113538] [transport.py] [_log()] kex follows: False
2025-11-03T09:42:58.588 [DEBUG] [Thread-113538] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:42:58.588 [DEBUG] [Thread-113538] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:42:58.588 [DEBUG] [Thread-113538] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:42:58.588 [DEBUG] [Thread-113538] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:42:58.588 [DEBUG] [Thread-113538] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:42:58.588 [DEBUG] [Thread-113538] [transport.py] [_log()] Compression: none
2025-11-03T09:42:58.588 [DEBUG] [Thread-113538] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:42:58.647 [DEBUG] [Thread-113538] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:42:58.648 [DEBUG] [Thread-113538] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:42:58.648 [DEBUG] [Thread-113538] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:42:58.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:42:58.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:42:58.704 [DEBUG] [Thread-113538] [transport.py] [_log()] userauth is OK
2025-11-03T09:42:58.704 [DEBUG] [Thread-113538] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:42:58.704 [DEBUG] [Thread-113538] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:42:58.704 [DEBUG] [Thread-113538] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:42:58.704 [DEBUG] [Thread-113538] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:42:58.718 [INFO] [Thread-113538] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:42:58.719 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:42:58.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:42:59.563 [DEBUG] [Thread-113538] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:42:59.563 [DEBUG] [Thread-113538] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:42:59.611 [DEBUG] [Thread-113538] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:42:59.611 [DEBUG] [Thread-113538] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:42:59.621 [DEBUG] [Thread-113538] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:42:59.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:42:59.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:42:59.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:42:59.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:42:59.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:42:59.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:42:59.658 [DEBUG] [Thread-113538] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:43:12.615 [DEBUG] [Thread-113540 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:43:16.910 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:43:16.912 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:43:27.657 [DEBUG] [Thread-113541 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:43:29.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:43:29.665 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:43:29.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:43:30.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 43, 2), 37.55, 6.71, 0.0, 18.99, 21.03, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:43:30.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:43:02
2025-11-03T09:43:30.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:43:30.600 [DEBUG] [Thread-113542] [transport.py] [_log()] starting thread (client mode): 0xedb0760
2025-11-03T09:43:30.600 [DEBUG] [Thread-113542] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:43:30.619 [DEBUG] [Thread-113542] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:43:30.619 [INFO] [Thread-113542] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:43:30.622 [DEBUG] [Thread-113542] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:43:30.623 [DEBUG] [Thread-113542] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:43:30.623 [DEBUG] [Thread-113542] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:43:30.623 [DEBUG] [Thread-113542] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:43:30.623 [DEBUG] [Thread-113542] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:43:30.623 [DEBUG] [Thread-113542] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:43:30.623 [DEBUG] [Thread-113542] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:43:30.623 [DEBUG] [Thread-113542] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:43:30.623 [DEBUG] [Thread-113542] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:43:30.623 [DEBUG] [Thread-113542] [transport.py] [_log()] client lang: <none>
2025-11-03T09:43:30.623 [DEBUG] [Thread-113542] [transport.py] [_log()] server lang: <none>
2025-11-03T09:43:30.623 [DEBUG] [Thread-113542] [transport.py] [_log()] kex follows: False
2025-11-03T09:43:30.623 [DEBUG] [Thread-113542] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:43:30.623 [DEBUG] [Thread-113542] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:43:30.623 [DEBUG] [Thread-113542] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:43:30.623 [DEBUG] [Thread-113542] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:43:30.623 [DEBUG] [Thread-113542] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:43:30.623 [DEBUG] [Thread-113542] [transport.py] [_log()] Compression: none
2025-11-03T09:43:30.623 [DEBUG] [Thread-113542] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:43:30.639 [DEBUG] [Thread-113542] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:43:30.640 [DEBUG] [Thread-113542] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:43:30.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:43:30.641 [DEBUG] [Thread-113542] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:43:30.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:43:30.643 [DEBUG] [Thread-113542] [transport.py] [_log()] userauth is OK
2025-11-03T09:43:30.643 [DEBUG] [Thread-113542] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:43:30.643 [DEBUG] [Thread-113542] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:43:30.643 [DEBUG] [Thread-113542] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:43:30.643 [DEBUG] [Thread-113542] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:43:30.669 [INFO] [Thread-113542] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:43:30.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:43:31.306 [DEBUG] [Thread-113542] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:43:31.306 [DEBUG] [Thread-113542] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:43:31.307 [DEBUG] [Thread-113542] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:43:31.347 [DEBUG] [Thread-113542] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:43:31.347 [DEBUG] [Thread-113542] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:43:31.350 [DEBUG] [Thread-113542] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:43:31.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:43:31.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:43:31.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:43:31.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:43:31.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:43:31.373 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:43:31.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:43:31.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:43:31.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:43:31.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.321621 -999.00  +21.10  18.72     12   -9.30 1 1 1 1 1   888    0 32.44 114.87 ----- 20.3 18.7 35.8 24.8 26.7 -28.8 25.7 -28.6 24.4 -28.0 25.1 -27.6
2025-11-03T09:43:31.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:43:31.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:43:31.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.321621
2025-11-03T09:43:31.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:43:31.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:43:31.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:43:31.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:43:31.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:43:31.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:43:02', tmtdew=37.55, humidity=6.71, cloud=0.0, wind=18.99, temperature=21.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:43:08.054', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:43:31.376 [DEBUG] [Thread-113542] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:43:31.460 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:43:31.473 [DEBUG] [Thread-113545] [transport.py] [_log()] starting thread (client mode): 0xedb2920
2025-11-03T09:43:31.473 [DEBUG] [Thread-113545] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:43:31.487 [DEBUG] [Thread-113545] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:43:31.487 [INFO] [Thread-113545] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:43:31.495 [DEBUG] [Thread-113545] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:43:31.495 [DEBUG] [Thread-113545] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:43:31.495 [DEBUG] [Thread-113545] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:43:31.495 [DEBUG] [Thread-113545] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:43:31.495 [DEBUG] [Thread-113545] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:43:31.495 [DEBUG] [Thread-113545] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:43:31.495 [DEBUG] [Thread-113545] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:43:31.495 [DEBUG] [Thread-113545] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:43:31.495 [DEBUG] [Thread-113545] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:43:31.496 [DEBUG] [Thread-113545] [transport.py] [_log()] client lang: <none>
2025-11-03T09:43:31.496 [DEBUG] [Thread-113545] [transport.py] [_log()] server lang: <none>
2025-11-03T09:43:31.496 [DEBUG] [Thread-113545] [transport.py] [_log()] kex follows: False
2025-11-03T09:43:31.496 [DEBUG] [Thread-113545] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:43:31.496 [DEBUG] [Thread-113545] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:43:31.496 [DEBUG] [Thread-113545] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:43:31.496 [DEBUG] [Thread-113545] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:43:31.496 [DEBUG] [Thread-113545] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:43:31.496 [DEBUG] [Thread-113545] [transport.py] [_log()] Compression: none
2025-11-03T09:43:31.496 [DEBUG] [Thread-113545] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:43:31.552 [DEBUG] [Thread-113545] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:43:31.553 [DEBUG] [Thread-113545] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:43:31.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:43:31.554 [DEBUG] [Thread-113545] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:43:31.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:43:31.608 [DEBUG] [Thread-113545] [transport.py] [_log()] userauth is OK
2025-11-03T09:43:31.609 [DEBUG] [Thread-113545] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:43:31.609 [DEBUG] [Thread-113545] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:43:31.609 [DEBUG] [Thread-113545] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:43:31.609 [DEBUG] [Thread-113545] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:43:31.627 [INFO] [Thread-113545] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:43:31.628 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:43:31.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:43:32.524 [DEBUG] [Thread-113545] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:43:32.525 [DEBUG] [Thread-113545] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:43:32.572 [DEBUG] [Thread-113545] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:43:32.572 [DEBUG] [Thread-113545] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:43:32.581 [DEBUG] [Thread-113545] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:43:32.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:43:32.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:43:32.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:43:32.607 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:43:32.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:43:32.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:43:32.615 [DEBUG] [Thread-113545] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:43:42.692 [DEBUG] [Thread-113547 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:43:48.918 [DEBUG] [Thread-113548 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:43:57.745 [DEBUG] [Thread-113549 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:44:02.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:44:02.637 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:44:02.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:44:03.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 43, 34), 38.03, 6.65, 0.0, 15.62, 21.66, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:44:03.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:43:34
2025-11-03T09:44:03.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:44:03.574 [DEBUG] [Thread-113550] [transport.py] [_log()] starting thread (client mode): 0xedb1f00
2025-11-03T09:44:03.574 [DEBUG] [Thread-113550] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:44:03.595 [DEBUG] [Thread-113550] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:44:03.595 [INFO] [Thread-113550] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:44:03.598 [DEBUG] [Thread-113550] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:44:03.598 [DEBUG] [Thread-113550] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:44:03.598 [DEBUG] [Thread-113550] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:44:03.598 [DEBUG] [Thread-113550] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:44:03.598 [DEBUG] [Thread-113550] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:44:03.598 [DEBUG] [Thread-113550] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:44:03.598 [DEBUG] [Thread-113550] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:44:03.598 [DEBUG] [Thread-113550] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:44:03.598 [DEBUG] [Thread-113550] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:44:03.598 [DEBUG] [Thread-113550] [transport.py] [_log()] client lang: <none>
2025-11-03T09:44:03.598 [DEBUG] [Thread-113550] [transport.py] [_log()] server lang: <none>
2025-11-03T09:44:03.598 [DEBUG] [Thread-113550] [transport.py] [_log()] kex follows: False
2025-11-03T09:44:03.598 [DEBUG] [Thread-113550] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:44:03.598 [DEBUG] [Thread-113550] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:44:03.598 [DEBUG] [Thread-113550] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:44:03.598 [DEBUG] [Thread-113550] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:44:03.598 [DEBUG] [Thread-113550] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:44:03.598 [DEBUG] [Thread-113550] [transport.py] [_log()] Compression: none
2025-11-03T09:44:03.598 [DEBUG] [Thread-113550] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:44:03.618 [DEBUG] [Thread-113550] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:44:03.618 [DEBUG] [Thread-113550] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:44:03.619 [DEBUG] [Thread-113550] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:44:03.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:44:03.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:44:03.621 [DEBUG] [Thread-113550] [transport.py] [_log()] userauth is OK
2025-11-03T09:44:03.621 [DEBUG] [Thread-113550] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:44:03.621 [DEBUG] [Thread-113550] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:44:03.621 [DEBUG] [Thread-113550] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:44:03.621 [DEBUG] [Thread-113550] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:44:03.656 [INFO] [Thread-113550] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:44:03.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:44:04.290 [DEBUG] [Thread-113550] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:44:04.290 [DEBUG] [Thread-113550] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:44:04.290 [DEBUG] [Thread-113550] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:44:04.331 [DEBUG] [Thread-113550] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:44:04.331 [DEBUG] [Thread-113550] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:44:04.333 [DEBUG] [Thread-113550] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:44:04.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:44:04.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:44:04.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:44:04.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:44:04.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:44:04.350 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:44:04.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:44:04.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:44:04.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:44:04.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.321969 -999.00  +21.10  18.60     11   -9.70 1 1 1 1 1   888    0 32.51 111.21 ----- 18.1 18.6 46.8 25.8 26.8 -29.2 25.8 -28.6 24.4 -28.6 25.2 -28.6
2025-11-03T09:44:04.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:44:04.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:44:04.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.321969
2025-11-03T09:44:04.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:44:04.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:44:04.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:44:04.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:44:04.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:44:04.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:43:34', tmtdew=38.03, humidity=6.65, cloud=0.0, wind=15.62, temperature=21.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:43:38.122', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:44:04.351 [DEBUG] [Thread-113550] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:44:04.424 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:44:04.437 [DEBUG] [Thread-113553] [transport.py] [_log()] starting thread (client mode): 0x1179acb0
2025-11-03T09:44:04.437 [DEBUG] [Thread-113553] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:44:04.453 [DEBUG] [Thread-113553] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:44:04.453 [INFO] [Thread-113553] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:44:04.461 [DEBUG] [Thread-113553] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:44:04.462 [DEBUG] [Thread-113553] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:44:04.462 [DEBUG] [Thread-113553] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:44:04.462 [DEBUG] [Thread-113553] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:44:04.462 [DEBUG] [Thread-113553] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:44:04.462 [DEBUG] [Thread-113553] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:44:04.462 [DEBUG] [Thread-113553] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:44:04.462 [DEBUG] [Thread-113553] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:44:04.462 [DEBUG] [Thread-113553] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:44:04.462 [DEBUG] [Thread-113553] [transport.py] [_log()] client lang: <none>
2025-11-03T09:44:04.462 [DEBUG] [Thread-113553] [transport.py] [_log()] server lang: <none>
2025-11-03T09:44:04.462 [DEBUG] [Thread-113553] [transport.py] [_log()] kex follows: False
2025-11-03T09:44:04.462 [DEBUG] [Thread-113553] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:44:04.462 [DEBUG] [Thread-113553] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:44:04.462 [DEBUG] [Thread-113553] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:44:04.462 [DEBUG] [Thread-113553] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:44:04.462 [DEBUG] [Thread-113553] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:44:04.462 [DEBUG] [Thread-113553] [transport.py] [_log()] Compression: none
2025-11-03T09:44:04.462 [DEBUG] [Thread-113553] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:44:04.519 [DEBUG] [Thread-113553] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:44:04.519 [DEBUG] [Thread-113553] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:44:04.519 [DEBUG] [Thread-113553] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:44:04.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:44:04.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:44:04.575 [DEBUG] [Thread-113553] [transport.py] [_log()] userauth is OK
2025-11-03T09:44:04.576 [DEBUG] [Thread-113553] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:44:04.576 [DEBUG] [Thread-113553] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:44:04.576 [DEBUG] [Thread-113553] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:44:04.576 [DEBUG] [Thread-113553] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:44:04.593 [INFO] [Thread-113553] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:44:04.594 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:44:04.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:44:05.478 [DEBUG] [Thread-113553] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:44:05.478 [DEBUG] [Thread-113553] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:44:05.528 [DEBUG] [Thread-113553] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:44:05.528 [DEBUG] [Thread-113553] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:44:05.538 [DEBUG] [Thread-113553] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:44:05.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:44:05.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:44:05.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:44:05.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:44:05.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:44:05.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:44:05.572 [DEBUG] [Thread-113553] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:44:12.778 [DEBUG] [Thread-113555 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:44:17.053 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:44:17.054 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:44:27.830 [DEBUG] [Thread-113556 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:44:35.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:44:35.587 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:44:35.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:44:36.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 44, 6), 37.98, 6.68, 0.0, 18.44, 21.7, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:44:36.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:44:06
2025-11-03T09:44:36.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:44:36.543 [DEBUG] [Thread-113557] [transport.py] [_log()] starting thread (client mode): 0x1179b370
2025-11-03T09:44:36.543 [DEBUG] [Thread-113557] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:44:36.564 [DEBUG] [Thread-113557] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:44:36.564 [INFO] [Thread-113557] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:44:36.567 [DEBUG] [Thread-113557] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:44:36.567 [DEBUG] [Thread-113557] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:44:36.568 [DEBUG] [Thread-113557] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:44:36.568 [DEBUG] [Thread-113557] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:44:36.568 [DEBUG] [Thread-113557] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:44:36.568 [DEBUG] [Thread-113557] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:44:36.568 [DEBUG] [Thread-113557] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:44:36.568 [DEBUG] [Thread-113557] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:44:36.568 [DEBUG] [Thread-113557] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:44:36.568 [DEBUG] [Thread-113557] [transport.py] [_log()] client lang: <none>
2025-11-03T09:44:36.568 [DEBUG] [Thread-113557] [transport.py] [_log()] server lang: <none>
2025-11-03T09:44:36.568 [DEBUG] [Thread-113557] [transport.py] [_log()] kex follows: False
2025-11-03T09:44:36.568 [DEBUG] [Thread-113557] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:44:36.568 [DEBUG] [Thread-113557] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:44:36.568 [DEBUG] [Thread-113557] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:44:36.568 [DEBUG] [Thread-113557] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:44:36.568 [DEBUG] [Thread-113557] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:44:36.568 [DEBUG] [Thread-113557] [transport.py] [_log()] Compression: none
2025-11-03T09:44:36.568 [DEBUG] [Thread-113557] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:44:36.585 [DEBUG] [Thread-113557] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:44:36.586 [DEBUG] [Thread-113557] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:44:36.586 [DEBUG] [Thread-113557] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:44:36.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:44:36.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:44:36.588 [DEBUG] [Thread-113557] [transport.py] [_log()] userauth is OK
2025-11-03T09:44:36.589 [DEBUG] [Thread-113557] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:44:36.589 [DEBUG] [Thread-113557] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:44:36.589 [DEBUG] [Thread-113557] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:44:36.589 [DEBUG] [Thread-113557] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:44:36.610 [INFO] [Thread-113557] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:44:36.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:44:37.204 [DEBUG] [Thread-113557] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:44:37.204 [DEBUG] [Thread-113557] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:44:37.204 [DEBUG] [Thread-113557] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:44:37.244 [DEBUG] [Thread-113557] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:44:37.244 [DEBUG] [Thread-113557] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:44:37.247 [DEBUG] [Thread-113557] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:44:37.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:44:37.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:44:37.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:44:37.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:44:37.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:44:37.266 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:44:37.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:44:37.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:44:37.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:44:37.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.322316 -999.00  +21.30  14.70     12   -9.00 1 1 1 1 1   888    0 32.61 103.86 ----- 15.5 14.7 25.8 22.2 26.8 -29.6 25.9 -27.9 24.5 -27.6 25.3 -28.0
2025-11-03T09:44:37.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:44:37.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:44:37.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.322316
2025-11-03T09:44:37.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:44:37.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:44:37.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:44:37.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:44:37.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:44:37.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:44:06', tmtdew=37.98, humidity=6.68, cloud=0.0, wind=18.44, temperature=21.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:44:08.102', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:44:37.267 [DEBUG] [Thread-113557] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:44:37.338 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:44:37.350 [DEBUG] [Thread-113560] [transport.py] [_log()] starting thread (client mode): 0xedb0880
2025-11-03T09:44:37.350 [DEBUG] [Thread-113560] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:44:37.370 [DEBUG] [Thread-113560] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:44:37.370 [INFO] [Thread-113560] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:44:37.377 [DEBUG] [Thread-113560] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:44:37.377 [DEBUG] [Thread-113560] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:44:37.377 [DEBUG] [Thread-113560] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:44:37.377 [DEBUG] [Thread-113560] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:44:37.378 [DEBUG] [Thread-113560] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:44:37.378 [DEBUG] [Thread-113560] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:44:37.378 [DEBUG] [Thread-113560] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:44:37.378 [DEBUG] [Thread-113560] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:44:37.378 [DEBUG] [Thread-113560] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:44:37.378 [DEBUG] [Thread-113560] [transport.py] [_log()] client lang: <none>
2025-11-03T09:44:37.378 [DEBUG] [Thread-113560] [transport.py] [_log()] server lang: <none>
2025-11-03T09:44:37.378 [DEBUG] [Thread-113560] [transport.py] [_log()] kex follows: False
2025-11-03T09:44:37.378 [DEBUG] [Thread-113560] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:44:37.378 [DEBUG] [Thread-113560] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:44:37.378 [DEBUG] [Thread-113560] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:44:37.378 [DEBUG] [Thread-113560] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:44:37.378 [DEBUG] [Thread-113560] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:44:37.378 [DEBUG] [Thread-113560] [transport.py] [_log()] Compression: none
2025-11-03T09:44:37.378 [DEBUG] [Thread-113560] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:44:37.438 [DEBUG] [Thread-113560] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:44:37.439 [DEBUG] [Thread-113560] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:44:37.439 [DEBUG] [Thread-113560] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:44:37.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:44:37.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:44:37.495 [DEBUG] [Thread-113560] [transport.py] [_log()] userauth is OK
2025-11-03T09:44:37.495 [DEBUG] [Thread-113560] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:44:37.495 [DEBUG] [Thread-113560] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:44:37.495 [DEBUG] [Thread-113560] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:44:37.495 [DEBUG] [Thread-113560] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:44:37.512 [INFO] [Thread-113560] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:44:37.512 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:44:37.512 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:44:38.371 [DEBUG] [Thread-113560] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:44:38.372 [DEBUG] [Thread-113560] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:44:38.420 [DEBUG] [Thread-113560] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:44:38.420 [DEBUG] [Thread-113560] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:44:38.429 [DEBUG] [Thread-113560] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:44:38.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:44:38.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:44:38.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:44:38.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:44:38.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:44:38.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:44:38.465 [DEBUG] [Thread-113560] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:44:42.858 [DEBUG] [Thread-113562 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:44:48.986 [DEBUG] [Thread-113563 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:44:57.921 [DEBUG] [Thread-113564 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:45:08.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:45:08.487 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:45:08.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:45:09.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 44, 38), 37.58, 6.63, 0.0, 11.77, 21.81, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:45:09.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:44:38
2025-11-03T09:45:09.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:45:09.423 [DEBUG] [Thread-113565] [transport.py] [_log()] starting thread (client mode): 0xedb2e90
2025-11-03T09:45:09.423 [DEBUG] [Thread-113565] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:45:09.438 [DEBUG] [Thread-113565] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:45:09.438 [INFO] [Thread-113565] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:45:09.440 [DEBUG] [Thread-113565] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:45:09.440 [DEBUG] [Thread-113565] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:45:09.440 [DEBUG] [Thread-113565] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:45:09.440 [DEBUG] [Thread-113565] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:45:09.440 [DEBUG] [Thread-113565] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:45:09.440 [DEBUG] [Thread-113565] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:45:09.440 [DEBUG] [Thread-113565] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:45:09.440 [DEBUG] [Thread-113565] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:45:09.440 [DEBUG] [Thread-113565] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:45:09.440 [DEBUG] [Thread-113565] [transport.py] [_log()] client lang: <none>
2025-11-03T09:45:09.440 [DEBUG] [Thread-113565] [transport.py] [_log()] server lang: <none>
2025-11-03T09:45:09.440 [DEBUG] [Thread-113565] [transport.py] [_log()] kex follows: False
2025-11-03T09:45:09.440 [DEBUG] [Thread-113565] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:45:09.440 [DEBUG] [Thread-113565] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:45:09.440 [DEBUG] [Thread-113565] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:45:09.441 [DEBUG] [Thread-113565] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:45:09.441 [DEBUG] [Thread-113565] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:45:09.441 [DEBUG] [Thread-113565] [transport.py] [_log()] Compression: none
2025-11-03T09:45:09.441 [DEBUG] [Thread-113565] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:45:09.453 [DEBUG] [Thread-113565] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:45:09.453 [DEBUG] [Thread-113565] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:45:09.453 [DEBUG] [Thread-113565] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:45:09.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:45:09.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:45:09.454 [DEBUG] [Thread-113565] [transport.py] [_log()] userauth is OK
2025-11-03T09:45:09.454 [DEBUG] [Thread-113565] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:45:09.454 [DEBUG] [Thread-113565] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:45:09.454 [DEBUG] [Thread-113565] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:45:09.454 [DEBUG] [Thread-113565] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:45:09.463 [INFO] [Thread-113565] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:45:09.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:45:10.379 [DEBUG] [Thread-113565] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:45:10.379 [DEBUG] [Thread-113565] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:45:10.379 [DEBUG] [Thread-113565] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:45:10.420 [DEBUG] [Thread-113565] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:45:10.421 [DEBUG] [Thread-113565] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:45:10.423 [DEBUG] [Thread-113565] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:45:10.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:45:10.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:45:10.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:45:10.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:45:10.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:45:10.443 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:45:10.443 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:45:10.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:45:10.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:45:10.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.322663 -999.00  +21.20  10.17     12   -9.00 1 1 1 1 1   888    0 32.09 102.84 ----- 14.6 10.2 347.5 24.9 26.9 -28.7 25.9 -28.3 24.5 -27.5 25.2 -28.6
2025-11-03T09:45:10.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:45:10.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:45:10.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.322663
2025-11-03T09:45:10.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:45:10.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:45:10.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:45:10.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:45:10.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:45:10.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:44:38', tmtdew=37.58, humidity=6.63, cloud=0.0, wind=11.77, temperature=21.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:44:38.083', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:45:10.444 [DEBUG] [Thread-113565] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:45:10.518 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:45:10.532 [DEBUG] [Thread-113568] [transport.py] [_log()] starting thread (client mode): 0x117bd0c0
2025-11-03T09:45:10.532 [DEBUG] [Thread-113568] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:45:10.546 [DEBUG] [Thread-113568] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:45:10.547 [INFO] [Thread-113568] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:45:10.554 [DEBUG] [Thread-113568] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:45:10.554 [DEBUG] [Thread-113568] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:45:10.554 [DEBUG] [Thread-113568] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:45:10.554 [DEBUG] [Thread-113568] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:45:10.554 [DEBUG] [Thread-113568] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:45:10.554 [DEBUG] [Thread-113568] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:45:10.554 [DEBUG] [Thread-113568] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:45:10.554 [DEBUG] [Thread-113568] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:45:10.554 [DEBUG] [Thread-113568] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:45:10.554 [DEBUG] [Thread-113568] [transport.py] [_log()] client lang: <none>
2025-11-03T09:45:10.554 [DEBUG] [Thread-113568] [transport.py] [_log()] server lang: <none>
2025-11-03T09:45:10.554 [DEBUG] [Thread-113568] [transport.py] [_log()] kex follows: False
2025-11-03T09:45:10.554 [DEBUG] [Thread-113568] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:45:10.554 [DEBUG] [Thread-113568] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:45:10.554 [DEBUG] [Thread-113568] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:45:10.554 [DEBUG] [Thread-113568] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:45:10.554 [DEBUG] [Thread-113568] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:45:10.554 [DEBUG] [Thread-113568] [transport.py] [_log()] Compression: none
2025-11-03T09:45:10.554 [DEBUG] [Thread-113568] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:45:10.610 [DEBUG] [Thread-113568] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:45:10.610 [DEBUG] [Thread-113568] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:45:10.610 [DEBUG] [Thread-113568] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:45:10.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:45:10.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:45:10.667 [DEBUG] [Thread-113568] [transport.py] [_log()] userauth is OK
2025-11-03T09:45:10.667 [DEBUG] [Thread-113568] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:45:10.667 [DEBUG] [Thread-113568] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:45:10.667 [DEBUG] [Thread-113568] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:45:10.667 [DEBUG] [Thread-113568] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:45:10.685 [INFO] [Thread-113568] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:45:10.685 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:45:10.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:45:11.519 [DEBUG] [Thread-113568] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:45:11.519 [DEBUG] [Thread-113568] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:45:11.567 [DEBUG] [Thread-113568] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:45:11.567 [DEBUG] [Thread-113568] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:45:11.575 [DEBUG] [Thread-113568] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:45:11.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:45:11.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:45:11.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:45:11.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:45:11.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:45:11.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:45:11.607 [DEBUG] [Thread-113568] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:45:12.951 [DEBUG] [Thread-113570 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:45:17.194 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:45:17.195 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:45:27.994 [DEBUG] [Thread-113571 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:45:41.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:45:41.630 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:45:41.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:45:42.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 45, 10), 37.45, 6.74, 0.0, 14.59, 22.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:45:42.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:45:10
2025-11-03T09:45:42.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:45:42.575 [DEBUG] [Thread-113572] [transport.py] [_log()] starting thread (client mode): 0xed64910
2025-11-03T09:45:42.575 [DEBUG] [Thread-113572] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:45:42.596 [DEBUG] [Thread-113572] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:45:42.596 [INFO] [Thread-113572] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:45:42.598 [DEBUG] [Thread-113572] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:45:42.599 [DEBUG] [Thread-113572] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:45:42.599 [DEBUG] [Thread-113572] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:45:42.599 [DEBUG] [Thread-113572] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:45:42.599 [DEBUG] [Thread-113572] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:45:42.599 [DEBUG] [Thread-113572] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:45:42.599 [DEBUG] [Thread-113572] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:45:42.599 [DEBUG] [Thread-113572] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:45:42.599 [DEBUG] [Thread-113572] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:45:42.599 [DEBUG] [Thread-113572] [transport.py] [_log()] client lang: <none>
2025-11-03T09:45:42.599 [DEBUG] [Thread-113572] [transport.py] [_log()] server lang: <none>
2025-11-03T09:45:42.599 [DEBUG] [Thread-113572] [transport.py] [_log()] kex follows: False
2025-11-03T09:45:42.599 [DEBUG] [Thread-113572] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:45:42.599 [DEBUG] [Thread-113572] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:45:42.599 [DEBUG] [Thread-113572] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:45:42.599 [DEBUG] [Thread-113572] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:45:42.599 [DEBUG] [Thread-113572] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:45:42.599 [DEBUG] [Thread-113572] [transport.py] [_log()] Compression: none
2025-11-03T09:45:42.599 [DEBUG] [Thread-113572] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:45:42.619 [DEBUG] [Thread-113572] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:45:42.620 [DEBUG] [Thread-113572] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:45:42.621 [DEBUG] [Thread-113572] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:45:42.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:45:42.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:45:42.665 [DEBUG] [Thread-113572] [transport.py] [_log()] userauth is OK
2025-11-03T09:45:42.665 [DEBUG] [Thread-113572] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:45:42.665 [DEBUG] [Thread-113572] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:45:42.666 [DEBUG] [Thread-113572] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:45:42.666 [DEBUG] [Thread-113572] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:45:42.697 [INFO] [Thread-113572] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:45:42.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:45:43.038 [DEBUG] [Thread-113574 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:45:43.342 [DEBUG] [Thread-113572] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:45:43.342 [DEBUG] [Thread-113572] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:45:43.342 [DEBUG] [Thread-113572] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:45:43.383 [DEBUG] [Thread-113572] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:45:43.383 [DEBUG] [Thread-113572] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:45:43.387 [DEBUG] [Thread-113572] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:45:43.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:45:43.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:45:43.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:45:43.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:45:43.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:45:43.421 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:45:43.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:45:43.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:45:43.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:45:43.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.323010 -999.00  +21.30  20.95     12   -8.50 1 1 1 1 1   888    0 31.90 96.83 ----- 15.1 20.9 70.2 27.1 27.0 -29.1 26.0 -28.8 24.6 -29.4 25.3 -27.4
2025-11-03T09:45:43.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:45:43.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:45:43.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.323010
2025-11-03T09:45:43.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:45:43.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:45:43.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:45:43.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:45:43.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:45:43.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:45:10', tmtdew=37.45, humidity=6.74, cloud=0.0, wind=14.59, temperature=22.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:45:08.064', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:45:43.424 [DEBUG] [Thread-113572] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:45:43.507 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:45:43.523 [DEBUG] [Thread-113576] [transport.py] [_log()] starting thread (client mode): 0x117bc280
2025-11-03T09:45:43.523 [DEBUG] [Thread-113576] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:45:43.541 [DEBUG] [Thread-113576] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:45:43.542 [INFO] [Thread-113576] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:45:43.551 [DEBUG] [Thread-113576] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:45:43.552 [DEBUG] [Thread-113576] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:45:43.552 [DEBUG] [Thread-113576] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:45:43.552 [DEBUG] [Thread-113576] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:45:43.552 [DEBUG] [Thread-113576] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:45:43.552 [DEBUG] [Thread-113576] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:45:43.552 [DEBUG] [Thread-113576] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:45:43.552 [DEBUG] [Thread-113576] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:45:43.552 [DEBUG] [Thread-113576] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:45:43.552 [DEBUG] [Thread-113576] [transport.py] [_log()] client lang: <none>
2025-11-03T09:45:43.552 [DEBUG] [Thread-113576] [transport.py] [_log()] server lang: <none>
2025-11-03T09:45:43.552 [DEBUG] [Thread-113576] [transport.py] [_log()] kex follows: False
2025-11-03T09:45:43.552 [DEBUG] [Thread-113576] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:45:43.552 [DEBUG] [Thread-113576] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:45:43.552 [DEBUG] [Thread-113576] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:45:43.552 [DEBUG] [Thread-113576] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:45:43.552 [DEBUG] [Thread-113576] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:45:43.552 [DEBUG] [Thread-113576] [transport.py] [_log()] Compression: none
2025-11-03T09:45:43.552 [DEBUG] [Thread-113576] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:45:43.614 [DEBUG] [Thread-113576] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:45:43.615 [DEBUG] [Thread-113576] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:45:43.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:45:43.616 [DEBUG] [Thread-113576] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:45:43.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:45:43.673 [DEBUG] [Thread-113576] [transport.py] [_log()] userauth is OK
2025-11-03T09:45:43.673 [DEBUG] [Thread-113576] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:45:43.673 [DEBUG] [Thread-113576] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:45:43.673 [DEBUG] [Thread-113576] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:45:43.673 [DEBUG] [Thread-113576] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:45:43.689 [INFO] [Thread-113576] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:45:43.689 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:45:43.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:45:44.568 [DEBUG] [Thread-113576] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:45:44.568 [DEBUG] [Thread-113576] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:45:44.617 [DEBUG] [Thread-113576] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:45:44.618 [DEBUG] [Thread-113576] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:45:44.628 [DEBUG] [Thread-113576] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:45:44.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:45:44.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:45:44.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:45:44.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:45:44.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:45:44.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:45:44.665 [DEBUG] [Thread-113576] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:45:49.023 [DEBUG] [Thread-113578 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:45:58.074 [DEBUG] [Thread-113579 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:46:13.124 [DEBUG] [Thread-113580 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:46:14.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:46:14.686 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:46:14.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:46:15.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 45, 43), 37.28, 7.11, 0.0, 22.04, 22.24, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:46:15.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:45:43
2025-11-03T09:46:15.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:46:15.628 [DEBUG] [Thread-113581] [transport.py] [_log()] starting thread (client mode): 0xed67820
2025-11-03T09:46:15.628 [DEBUG] [Thread-113581] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:46:15.649 [DEBUG] [Thread-113581] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:46:15.649 [INFO] [Thread-113581] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:46:15.652 [DEBUG] [Thread-113581] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:46:15.653 [DEBUG] [Thread-113581] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:46:15.653 [DEBUG] [Thread-113581] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:46:15.653 [DEBUG] [Thread-113581] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:46:15.653 [DEBUG] [Thread-113581] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:46:15.653 [DEBUG] [Thread-113581] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:46:15.653 [DEBUG] [Thread-113581] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:46:15.653 [DEBUG] [Thread-113581] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:46:15.653 [DEBUG] [Thread-113581] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:46:15.653 [DEBUG] [Thread-113581] [transport.py] [_log()] client lang: <none>
2025-11-03T09:46:15.653 [DEBUG] [Thread-113581] [transport.py] [_log()] server lang: <none>
2025-11-03T09:46:15.653 [DEBUG] [Thread-113581] [transport.py] [_log()] kex follows: False
2025-11-03T09:46:15.653 [DEBUG] [Thread-113581] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:46:15.653 [DEBUG] [Thread-113581] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:46:15.653 [DEBUG] [Thread-113581] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:46:15.654 [DEBUG] [Thread-113581] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:46:15.654 [DEBUG] [Thread-113581] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:46:15.654 [DEBUG] [Thread-113581] [transport.py] [_log()] Compression: none
2025-11-03T09:46:15.654 [DEBUG] [Thread-113581] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:46:15.671 [DEBUG] [Thread-113581] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:46:15.672 [DEBUG] [Thread-113581] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:46:15.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:46:15.673 [DEBUG] [Thread-113581] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:46:15.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:46:15.675 [DEBUG] [Thread-113581] [transport.py] [_log()] userauth is OK
2025-11-03T09:46:15.675 [DEBUG] [Thread-113581] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:46:15.675 [DEBUG] [Thread-113581] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:46:15.675 [DEBUG] [Thread-113581] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:46:15.675 [DEBUG] [Thread-113581] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:46:15.711 [INFO] [Thread-113581] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:46:15.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:46:16.348 [DEBUG] [Thread-113581] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:46:16.348 [DEBUG] [Thread-113581] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:46:16.348 [DEBUG] [Thread-113581] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:46:16.391 [DEBUG] [Thread-113581] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:46:16.391 [DEBUG] [Thread-113581] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:46:16.393 [DEBUG] [Thread-113581] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:46:16.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:46:16.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:46:16.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:46:16.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:46:16.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:46:16.411 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:46:16.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:46:16.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:46:16.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:46:16.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.323358 -999.00  +21.40   3.99     12   -8.40 1 1 1 1 1   888    0 31.52 87.49 ----- 8.3 4.0 85.6 23.1 27.0 -28.8 26.2 -27.4 24.8 -27.5 25.4 -28.2
2025-11-03T09:46:16.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:46:16.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:46:16.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.323358
2025-11-03T09:46:16.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:46:16.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:46:16.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:46:16.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:46:16.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:46:16.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:45:43', tmtdew=37.28, humidity=7.11, cloud=0.0, wind=22.04, temperature=22.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:45:38.131', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:46:16.412 [DEBUG] [Thread-113581] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:46:16.486 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:46:16.498 [DEBUG] [Thread-113584] [transport.py] [_log()] starting thread (client mode): 0xed677c0
2025-11-03T09:46:16.498 [DEBUG] [Thread-113584] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:46:16.515 [DEBUG] [Thread-113584] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:46:16.516 [INFO] [Thread-113584] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:46:16.523 [DEBUG] [Thread-113584] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:46:16.523 [DEBUG] [Thread-113584] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:46:16.523 [DEBUG] [Thread-113584] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:46:16.523 [DEBUG] [Thread-113584] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:46:16.523 [DEBUG] [Thread-113584] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:46:16.523 [DEBUG] [Thread-113584] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:46:16.523 [DEBUG] [Thread-113584] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:46:16.523 [DEBUG] [Thread-113584] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:46:16.523 [DEBUG] [Thread-113584] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:46:16.523 [DEBUG] [Thread-113584] [transport.py] [_log()] client lang: <none>
2025-11-03T09:46:16.523 [DEBUG] [Thread-113584] [transport.py] [_log()] server lang: <none>
2025-11-03T09:46:16.523 [DEBUG] [Thread-113584] [transport.py] [_log()] kex follows: False
2025-11-03T09:46:16.523 [DEBUG] [Thread-113584] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:46:16.523 [DEBUG] [Thread-113584] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:46:16.523 [DEBUG] [Thread-113584] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:46:16.523 [DEBUG] [Thread-113584] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:46:16.523 [DEBUG] [Thread-113584] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:46:16.523 [DEBUG] [Thread-113584] [transport.py] [_log()] Compression: none
2025-11-03T09:46:16.523 [DEBUG] [Thread-113584] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:46:16.580 [DEBUG] [Thread-113584] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:46:16.580 [DEBUG] [Thread-113584] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:46:16.581 [DEBUG] [Thread-113584] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:46:16.581 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:46:16.581 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:46:16.638 [DEBUG] [Thread-113584] [transport.py] [_log()] userauth is OK
2025-11-03T09:46:16.638 [DEBUG] [Thread-113584] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:46:16.638 [DEBUG] [Thread-113584] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:46:16.638 [DEBUG] [Thread-113584] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:46:16.638 [DEBUG] [Thread-113584] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:46:16.652 [INFO] [Thread-113584] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:46:16.652 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:46:16.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:46:17.335 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:46:17.336 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:46:17.538 [DEBUG] [Thread-113584] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:46:17.538 [DEBUG] [Thread-113584] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:46:17.586 [DEBUG] [Thread-113584] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:46:17.586 [DEBUG] [Thread-113584] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:46:17.595 [DEBUG] [Thread-113584] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:46:17.603 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:46:17.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:46:17.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:46:17.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:46:17.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:46:17.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:46:17.631 [DEBUG] [Thread-113584] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:46:28.153 [DEBUG] [Thread-113586 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:46:43.204 [DEBUG] [Thread-113587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:46:47.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:46:47.645 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:46:47.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:46:48.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 46, 15), 37.46, 7.01, 0.0, 21.3, 22.27, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:46:48.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:46:15
2025-11-03T09:46:48.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:46:48.599 [DEBUG] [Thread-113588] [transport.py] [_log()] starting thread (client mode): 0x1179b0a0
2025-11-03T09:46:48.600 [DEBUG] [Thread-113588] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:46:48.619 [DEBUG] [Thread-113588] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:46:48.620 [INFO] [Thread-113588] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:46:48.623 [DEBUG] [Thread-113588] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:46:48.623 [DEBUG] [Thread-113588] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:46:48.623 [DEBUG] [Thread-113588] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:46:48.623 [DEBUG] [Thread-113588] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:46:48.623 [DEBUG] [Thread-113588] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:46:48.623 [DEBUG] [Thread-113588] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:46:48.623 [DEBUG] [Thread-113588] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:46:48.623 [DEBUG] [Thread-113588] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:46:48.623 [DEBUG] [Thread-113588] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:46:48.623 [DEBUG] [Thread-113588] [transport.py] [_log()] client lang: <none>
2025-11-03T09:46:48.623 [DEBUG] [Thread-113588] [transport.py] [_log()] server lang: <none>
2025-11-03T09:46:48.623 [DEBUG] [Thread-113588] [transport.py] [_log()] kex follows: False
2025-11-03T09:46:48.623 [DEBUG] [Thread-113588] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:46:48.623 [DEBUG] [Thread-113588] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:46:48.623 [DEBUG] [Thread-113588] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:46:48.623 [DEBUG] [Thread-113588] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:46:48.623 [DEBUG] [Thread-113588] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:46:48.623 [DEBUG] [Thread-113588] [transport.py] [_log()] Compression: none
2025-11-03T09:46:48.623 [DEBUG] [Thread-113588] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:46:48.640 [DEBUG] [Thread-113588] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:46:48.641 [DEBUG] [Thread-113588] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:46:48.641 [DEBUG] [Thread-113588] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:46:48.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:46:48.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:46:48.684 [DEBUG] [Thread-113588] [transport.py] [_log()] userauth is OK
2025-11-03T09:46:48.684 [DEBUG] [Thread-113588] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:46:48.684 [DEBUG] [Thread-113588] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:46:48.684 [DEBUG] [Thread-113588] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:46:48.684 [DEBUG] [Thread-113588] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:46:48.711 [INFO] [Thread-113588] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:46:48.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:46:49.056 [DEBUG] [Thread-113590 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:46:49.368 [DEBUG] [Thread-113588] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:46:49.368 [DEBUG] [Thread-113588] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:46:49.368 [DEBUG] [Thread-113588] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:46:49.410 [DEBUG] [Thread-113588] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:46:49.410 [DEBUG] [Thread-113588] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:46:49.412 [DEBUG] [Thread-113588] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:46:49.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:46:49.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:46:49.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:46:49.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:46:49.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:46:49.431 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:46:49.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:46:49.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:46:49.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:46:49.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.324052 -999.00  +21.00  27.64     13   -8.30 1 1 1 1 1   888    0 31.99 88.45 ----- 24.9 27.6 64.4 31.0 27.1 -29.9 26.1 -29.4 24.7 -29.0 25.6 -29.0
2025-11-03T09:46:49.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:46:49.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:46:49.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.324052
2025-11-03T09:46:49.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:46:49.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:46:49.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:46:49.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:46:49.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:46:49.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:46:15', tmtdew=37.46, humidity=7.01, cloud=0.0, wind=21.3, temperature=22.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:46:38.093', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:46:49.432 [DEBUG] [Thread-113588] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:46:49.507 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:46:49.518 [DEBUG] [Thread-113592] [transport.py] [_log()] starting thread (client mode): 0xed37670
2025-11-03T09:46:49.518 [DEBUG] [Thread-113592] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:46:49.533 [DEBUG] [Thread-113592] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:46:49.533 [INFO] [Thread-113592] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:46:49.540 [DEBUG] [Thread-113592] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:46:49.541 [DEBUG] [Thread-113592] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:46:49.541 [DEBUG] [Thread-113592] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:46:49.541 [DEBUG] [Thread-113592] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:46:49.541 [DEBUG] [Thread-113592] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:46:49.541 [DEBUG] [Thread-113592] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:46:49.541 [DEBUG] [Thread-113592] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:46:49.541 [DEBUG] [Thread-113592] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:46:49.541 [DEBUG] [Thread-113592] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:46:49.541 [DEBUG] [Thread-113592] [transport.py] [_log()] client lang: <none>
2025-11-03T09:46:49.541 [DEBUG] [Thread-113592] [transport.py] [_log()] server lang: <none>
2025-11-03T09:46:49.541 [DEBUG] [Thread-113592] [transport.py] [_log()] kex follows: False
2025-11-03T09:46:49.541 [DEBUG] [Thread-113592] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:46:49.541 [DEBUG] [Thread-113592] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:46:49.541 [DEBUG] [Thread-113592] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:46:49.541 [DEBUG] [Thread-113592] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:46:49.541 [DEBUG] [Thread-113592] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:46:49.541 [DEBUG] [Thread-113592] [transport.py] [_log()] Compression: none
2025-11-03T09:46:49.541 [DEBUG] [Thread-113592] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:46:49.601 [DEBUG] [Thread-113592] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:46:49.601 [DEBUG] [Thread-113592] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:46:49.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:46:49.601 [DEBUG] [Thread-113592] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:46:49.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:46:49.657 [DEBUG] [Thread-113592] [transport.py] [_log()] userauth is OK
2025-11-03T09:46:49.657 [DEBUG] [Thread-113592] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:46:49.657 [DEBUG] [Thread-113592] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:46:49.657 [DEBUG] [Thread-113592] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:46:49.657 [DEBUG] [Thread-113592] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:46:49.671 [INFO] [Thread-113592] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:46:49.671 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:46:49.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:46:50.558 [DEBUG] [Thread-113592] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:46:50.558 [DEBUG] [Thread-113592] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:46:50.606 [DEBUG] [Thread-113592] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:46:50.606 [DEBUG] [Thread-113592] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:46:50.614 [DEBUG] [Thread-113592] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:46:50.623 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:46:50.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:46:50.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:46:50.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:46:50.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:46:50.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:46:50.653 [DEBUG] [Thread-113592] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:46:58.240 [DEBUG] [Thread-113594 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:47:13.299 [DEBUG] [Thread-113595 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:47:17.477 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:47:17.478 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:47:20.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:47:20.669 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:47:20.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:47:21.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 46, 47), 37.56, 7.15, 0.0, 17.05, 21.87, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:47:21.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:46:47
2025-11-03T09:47:21.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:47:21.655 [DEBUG] [Thread-113596] [transport.py] [_log()] starting thread (client mode): 0xed36800
2025-11-03T09:47:21.656 [DEBUG] [Thread-113596] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:47:21.675 [DEBUG] [Thread-113596] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:47:21.675 [INFO] [Thread-113596] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:47:21.678 [DEBUG] [Thread-113596] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:47:21.678 [DEBUG] [Thread-113596] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:47:21.678 [DEBUG] [Thread-113596] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:47:21.679 [DEBUG] [Thread-113596] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:47:21.679 [DEBUG] [Thread-113596] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:47:21.679 [DEBUG] [Thread-113596] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:47:21.679 [DEBUG] [Thread-113596] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:47:21.679 [DEBUG] [Thread-113596] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:47:21.679 [DEBUG] [Thread-113596] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:47:21.679 [DEBUG] [Thread-113596] [transport.py] [_log()] client lang: <none>
2025-11-03T09:47:21.679 [DEBUG] [Thread-113596] [transport.py] [_log()] server lang: <none>
2025-11-03T09:47:21.679 [DEBUG] [Thread-113596] [transport.py] [_log()] kex follows: False
2025-11-03T09:47:21.679 [DEBUG] [Thread-113596] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:47:21.679 [DEBUG] [Thread-113596] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:47:21.679 [DEBUG] [Thread-113596] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:47:21.679 [DEBUG] [Thread-113596] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:47:21.679 [DEBUG] [Thread-113596] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:47:21.679 [DEBUG] [Thread-113596] [transport.py] [_log()] Compression: none
2025-11-03T09:47:21.679 [DEBUG] [Thread-113596] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:47:21.695 [DEBUG] [Thread-113596] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:47:21.696 [DEBUG] [Thread-113596] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:47:21.696 [DEBUG] [Thread-113596] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:47:21.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:47:21.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:47:21.740 [DEBUG] [Thread-113596] [transport.py] [_log()] userauth is OK
2025-11-03T09:47:21.740 [DEBUG] [Thread-113596] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:47:21.740 [DEBUG] [Thread-113596] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:47:21.740 [DEBUG] [Thread-113596] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:47:21.740 [DEBUG] [Thread-113596] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:47:21.758 [INFO] [Thread-113596] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:47:21.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:47:22.394 [DEBUG] [Thread-113596] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:47:22.395 [DEBUG] [Thread-113596] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:47:22.395 [DEBUG] [Thread-113596] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:47:22.435 [DEBUG] [Thread-113596] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:47:22.435 [DEBUG] [Thread-113596] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:47:22.437 [DEBUG] [Thread-113596] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:47:22.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:47:22.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:47:22.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:47:22.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:47:22.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:47:22.454 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:47:22.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:47:22.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:47:22.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:47:22.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.324399 -999.00  +20.90  20.85     12   -9.00 1 1 1 1 1   888    0 31.99 88.58 ----- 20.9 20.9 55.4 25.2 26.9 -29.5 26.0 -29.5 24.6 -29.4 25.5 -30.0
2025-11-03T09:47:22.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:47:22.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:47:22.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.324399
2025-11-03T09:47:22.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:47:22.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:47:22.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:47:22.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:47:22.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:47:22.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:46:47', tmtdew=37.56, humidity=7.15, cloud=0.0, wind=17.05, temperature=21.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:47:08.074', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:47:22.455 [DEBUG] [Thread-113596] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:47:22.528 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:47:22.540 [DEBUG] [Thread-113599] [transport.py] [_log()] starting thread (client mode): 0x117bdd80
2025-11-03T09:47:22.540 [DEBUG] [Thread-113599] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:47:22.558 [DEBUG] [Thread-113599] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:47:22.558 [INFO] [Thread-113599] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:47:22.566 [DEBUG] [Thread-113599] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:47:22.566 [DEBUG] [Thread-113599] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:47:22.566 [DEBUG] [Thread-113599] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:47:22.566 [DEBUG] [Thread-113599] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:47:22.566 [DEBUG] [Thread-113599] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:47:22.566 [DEBUG] [Thread-113599] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:47:22.566 [DEBUG] [Thread-113599] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:47:22.566 [DEBUG] [Thread-113599] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:47:22.566 [DEBUG] [Thread-113599] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:47:22.566 [DEBUG] [Thread-113599] [transport.py] [_log()] client lang: <none>
2025-11-03T09:47:22.566 [DEBUG] [Thread-113599] [transport.py] [_log()] server lang: <none>
2025-11-03T09:47:22.566 [DEBUG] [Thread-113599] [transport.py] [_log()] kex follows: False
2025-11-03T09:47:22.566 [DEBUG] [Thread-113599] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:47:22.566 [DEBUG] [Thread-113599] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:47:22.566 [DEBUG] [Thread-113599] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:47:22.566 [DEBUG] [Thread-113599] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:47:22.566 [DEBUG] [Thread-113599] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:47:22.566 [DEBUG] [Thread-113599] [transport.py] [_log()] Compression: none
2025-11-03T09:47:22.566 [DEBUG] [Thread-113599] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:47:22.624 [DEBUG] [Thread-113599] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:47:22.624 [DEBUG] [Thread-113599] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:47:22.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:47:22.624 [DEBUG] [Thread-113599] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:47:22.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:47:22.683 [DEBUG] [Thread-113599] [transport.py] [_log()] userauth is OK
2025-11-03T09:47:22.683 [DEBUG] [Thread-113599] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:47:22.683 [DEBUG] [Thread-113599] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:47:22.683 [DEBUG] [Thread-113599] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:47:22.683 [DEBUG] [Thread-113599] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:47:22.697 [INFO] [Thread-113599] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:47:22.698 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:47:22.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:47:23.631 [DEBUG] [Thread-113599] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:47:23.640 [DEBUG] [Thread-113599] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:47:23.679 [DEBUG] [Thread-113599] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:47:23.679 [DEBUG] [Thread-113599] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:47:23.687 [DEBUG] [Thread-113599] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:47:23.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:47:23.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:47:23.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:47:23.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:47:23.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:47:23.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:47:23.725 [DEBUG] [Thread-113599] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:47:28.339 [DEBUG] [Thread-113601 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:47:43.395 [DEBUG] [Thread-113602 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:47:49.118 [DEBUG] [Thread-113603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:47:53.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:47:53.747 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:47:53.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:47:54.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 47, 20), 37.22, 7.31, 0.0, 16.34, 21.76, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:47:54.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:47:20
2025-11-03T09:47:54.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:47:54.746 [DEBUG] [Thread-113604] [transport.py] [_log()] starting thread (client mode): 0xedb2b90
2025-11-03T09:47:54.746 [DEBUG] [Thread-113604] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:47:54.769 [DEBUG] [Thread-113604] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:47:54.769 [INFO] [Thread-113604] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:47:54.773 [DEBUG] [Thread-113604] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:47:54.773 [DEBUG] [Thread-113604] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:47:54.773 [DEBUG] [Thread-113604] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:47:54.773 [DEBUG] [Thread-113604] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:47:54.773 [DEBUG] [Thread-113604] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:47:54.773 [DEBUG] [Thread-113604] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:47:54.773 [DEBUG] [Thread-113604] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:47:54.773 [DEBUG] [Thread-113604] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:47:54.773 [DEBUG] [Thread-113604] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:47:54.773 [DEBUG] [Thread-113604] [transport.py] [_log()] client lang: <none>
2025-11-03T09:47:54.773 [DEBUG] [Thread-113604] [transport.py] [_log()] server lang: <none>
2025-11-03T09:47:54.773 [DEBUG] [Thread-113604] [transport.py] [_log()] kex follows: False
2025-11-03T09:47:54.773 [DEBUG] [Thread-113604] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:47:54.773 [DEBUG] [Thread-113604] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:47:54.773 [DEBUG] [Thread-113604] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:47:54.773 [DEBUG] [Thread-113604] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:47:54.773 [DEBUG] [Thread-113604] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:47:54.773 [DEBUG] [Thread-113604] [transport.py] [_log()] Compression: none
2025-11-03T09:47:54.773 [DEBUG] [Thread-113604] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:47:54.790 [DEBUG] [Thread-113604] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:47:54.790 [DEBUG] [Thread-113604] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:47:54.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:47:54.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:47:54.790 [DEBUG] [Thread-113604] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:47:54.791 [DEBUG] [Thread-113604] [transport.py] [_log()] userauth is OK
2025-11-03T09:47:54.791 [DEBUG] [Thread-113604] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:47:54.791 [DEBUG] [Thread-113604] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:47:54.791 [DEBUG] [Thread-113604] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:47:54.791 [DEBUG] [Thread-113604] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:47:54.820 [INFO] [Thread-113604] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:47:54.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:47:55.422 [DEBUG] [Thread-113604] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:47:55.423 [DEBUG] [Thread-113604] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:47:55.423 [DEBUG] [Thread-113604] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:47:55.464 [DEBUG] [Thread-113604] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:47:55.465 [DEBUG] [Thread-113604] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:47:55.468 [DEBUG] [Thread-113604] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:47:55.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:47:55.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:47:55.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:47:55.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:47:55.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:47:55.493 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:47:55.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:47:55.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:47:55.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:47:55.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.324746 -999.00  +20.70  19.22     12   -9.40 1 1 1 1 1   888    0 31.90 92.37 ----- 20.0 19.2 58.2 23.0 26.9 -29.2 26.0 -28.8 24.6 -29.8 25.5 -29.4
2025-11-03T09:47:55.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:47:55.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:47:55.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.324746
2025-11-03T09:47:55.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:47:55.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:47:55.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:47:55.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:47:55.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:47:55.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:47:20', tmtdew=37.22, humidity=7.31, cloud=0.0, wind=16.34, temperature=21.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:47:38.054', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:47:55.496 [DEBUG] [Thread-113604] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:47:55.586 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:47:55.597 [DEBUG] [Thread-113607] [transport.py] [_log()] starting thread (client mode): 0xed5e890
2025-11-03T09:47:55.597 [DEBUG] [Thread-113607] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:47:55.611 [DEBUG] [Thread-113607] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:47:55.611 [INFO] [Thread-113607] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:47:55.619 [DEBUG] [Thread-113607] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:47:55.619 [DEBUG] [Thread-113607] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:47:55.619 [DEBUG] [Thread-113607] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:47:55.619 [DEBUG] [Thread-113607] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:47:55.619 [DEBUG] [Thread-113607] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:47:55.619 [DEBUG] [Thread-113607] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:47:55.619 [DEBUG] [Thread-113607] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:47:55.619 [DEBUG] [Thread-113607] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:47:55.619 [DEBUG] [Thread-113607] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:47:55.619 [DEBUG] [Thread-113607] [transport.py] [_log()] client lang: <none>
2025-11-03T09:47:55.619 [DEBUG] [Thread-113607] [transport.py] [_log()] server lang: <none>
2025-11-03T09:47:55.619 [DEBUG] [Thread-113607] [transport.py] [_log()] kex follows: False
2025-11-03T09:47:55.619 [DEBUG] [Thread-113607] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:47:55.619 [DEBUG] [Thread-113607] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:47:55.619 [DEBUG] [Thread-113607] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:47:55.619 [DEBUG] [Thread-113607] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:47:55.619 [DEBUG] [Thread-113607] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:47:55.619 [DEBUG] [Thread-113607] [transport.py] [_log()] Compression: none
2025-11-03T09:47:55.619 [DEBUG] [Thread-113607] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:47:55.675 [DEBUG] [Thread-113607] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:47:55.675 [DEBUG] [Thread-113607] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:47:55.675 [DEBUG] [Thread-113607] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:47:55.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:47:55.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:47:55.732 [DEBUG] [Thread-113607] [transport.py] [_log()] userauth is OK
2025-11-03T09:47:55.732 [DEBUG] [Thread-113607] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:47:55.732 [DEBUG] [Thread-113607] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:47:55.732 [DEBUG] [Thread-113607] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:47:55.732 [DEBUG] [Thread-113607] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:47:55.746 [INFO] [Thread-113607] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:47:55.746 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:47:55.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:47:56.604 [DEBUG] [Thread-113607] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:47:56.605 [DEBUG] [Thread-113607] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:47:56.653 [DEBUG] [Thread-113607] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:47:56.653 [DEBUG] [Thread-113607] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:47:56.662 [DEBUG] [Thread-113607] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:47:56.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:47:56.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:47:56.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:47:56.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:47:56.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:47:56.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:47:56.701 [DEBUG] [Thread-113607] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:47:58.424 [DEBUG] [Thread-113609 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:48:13.475 [DEBUG] [Thread-113610 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:48:17.620 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:48:17.621 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:48:26.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:48:26.723 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:48:26.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:48:27.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 47, 52), 37.13, 7.26, 0.0, 16.68, 21.72, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:48:27.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:47:52
2025-11-03T09:48:27.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:48:27.683 [DEBUG] [Thread-113611] [transport.py] [_log()] starting thread (client mode): 0x1179a890
2025-11-03T09:48:27.684 [DEBUG] [Thread-113611] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:48:27.704 [DEBUG] [Thread-113611] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:48:27.704 [INFO] [Thread-113611] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:48:27.707 [DEBUG] [Thread-113611] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:48:27.707 [DEBUG] [Thread-113611] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:48:27.707 [DEBUG] [Thread-113611] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:48:27.707 [DEBUG] [Thread-113611] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:48:27.707 [DEBUG] [Thread-113611] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:48:27.707 [DEBUG] [Thread-113611] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:48:27.707 [DEBUG] [Thread-113611] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:48:27.707 [DEBUG] [Thread-113611] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:48:27.707 [DEBUG] [Thread-113611] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:48:27.707 [DEBUG] [Thread-113611] [transport.py] [_log()] client lang: <none>
2025-11-03T09:48:27.707 [DEBUG] [Thread-113611] [transport.py] [_log()] server lang: <none>
2025-11-03T09:48:27.707 [DEBUG] [Thread-113611] [transport.py] [_log()] kex follows: False
2025-11-03T09:48:27.707 [DEBUG] [Thread-113611] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:48:27.707 [DEBUG] [Thread-113611] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:48:27.707 [DEBUG] [Thread-113611] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:48:27.707 [DEBUG] [Thread-113611] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:48:27.707 [DEBUG] [Thread-113611] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:48:27.707 [DEBUG] [Thread-113611] [transport.py] [_log()] Compression: none
2025-11-03T09:48:27.707 [DEBUG] [Thread-113611] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:48:27.722 [DEBUG] [Thread-113611] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:48:27.722 [DEBUG] [Thread-113611] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:48:27.722 [DEBUG] [Thread-113611] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:48:27.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:48:27.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:48:27.723 [DEBUG] [Thread-113611] [transport.py] [_log()] userauth is OK
2025-11-03T09:48:27.723 [DEBUG] [Thread-113611] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:48:27.723 [DEBUG] [Thread-113611] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:48:27.723 [DEBUG] [Thread-113611] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:48:27.723 [DEBUG] [Thread-113611] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:48:27.733 [INFO] [Thread-113611] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:48:27.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:48:28.356 [DEBUG] [Thread-113611] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:48:28.357 [DEBUG] [Thread-113611] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:48:28.357 [DEBUG] [Thread-113611] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:48:28.398 [DEBUG] [Thread-113611] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:48:28.398 [DEBUG] [Thread-113611] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:48:28.402 [DEBUG] [Thread-113611] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:48:28.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:48:28.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:48:28.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:48:28.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:48:28.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:48:28.427 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:48:28.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:48:28.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:48:28.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:48:28.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.325093 -999.00  +20.60  13.61     12   -9.40 1 1 1 1 1   888    0 31.84 94.78 ----- 13.2 13.6 35.6 20.6 26.9 -29.2 26.0 -27.7 24.8 -27.9 25.5 -28.9
2025-11-03T09:48:28.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:48:28.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:48:28.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.325093
2025-11-03T09:48:28.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:48:28.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:48:28.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:48:28.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:48:28.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:48:28.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:47:52', tmtdew=37.13, humidity=7.26, cloud=0.0, wind=16.68, temperature=21.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:48:08.035', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:48:28.430 [DEBUG] [Thread-113611] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:48:28.504 [DEBUG] [Thread-113614 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:48:28.518 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:48:28.529 [DEBUG] [Thread-113615] [transport.py] [_log()] starting thread (client mode): 0xed2d6f0
2025-11-03T09:48:28.529 [DEBUG] [Thread-113615] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:48:28.544 [DEBUG] [Thread-113615] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:48:28.544 [INFO] [Thread-113615] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:48:28.552 [DEBUG] [Thread-113615] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:48:28.552 [DEBUG] [Thread-113615] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:48:28.552 [DEBUG] [Thread-113615] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:48:28.552 [DEBUG] [Thread-113615] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:48:28.552 [DEBUG] [Thread-113615] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:48:28.552 [DEBUG] [Thread-113615] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:48:28.552 [DEBUG] [Thread-113615] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:48:28.552 [DEBUG] [Thread-113615] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:48:28.552 [DEBUG] [Thread-113615] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:48:28.553 [DEBUG] [Thread-113615] [transport.py] [_log()] client lang: <none>
2025-11-03T09:48:28.553 [DEBUG] [Thread-113615] [transport.py] [_log()] server lang: <none>
2025-11-03T09:48:28.553 [DEBUG] [Thread-113615] [transport.py] [_log()] kex follows: False
2025-11-03T09:48:28.553 [DEBUG] [Thread-113615] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:48:28.553 [DEBUG] [Thread-113615] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:48:28.553 [DEBUG] [Thread-113615] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:48:28.553 [DEBUG] [Thread-113615] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:48:28.553 [DEBUG] [Thread-113615] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:48:28.553 [DEBUG] [Thread-113615] [transport.py] [_log()] Compression: none
2025-11-03T09:48:28.553 [DEBUG] [Thread-113615] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:48:28.614 [DEBUG] [Thread-113615] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:48:28.615 [DEBUG] [Thread-113615] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:48:28.616 [DEBUG] [Thread-113615] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:48:28.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:48:28.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:48:28.673 [DEBUG] [Thread-113615] [transport.py] [_log()] userauth is OK
2025-11-03T09:48:28.673 [DEBUG] [Thread-113615] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:48:28.673 [DEBUG] [Thread-113615] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:48:28.673 [DEBUG] [Thread-113615] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:48:28.673 [DEBUG] [Thread-113615] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:48:28.694 [INFO] [Thread-113615] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:48:28.695 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:48:28.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:48:29.600 [DEBUG] [Thread-113615] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:48:29.600 [DEBUG] [Thread-113615] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:48:29.648 [DEBUG] [Thread-113615] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:48:29.648 [DEBUG] [Thread-113615] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:48:29.658 [DEBUG] [Thread-113615] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:48:29.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:48:29.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:48:29.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:48:29.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:48:29.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:48:29.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:48:29.696 [DEBUG] [Thread-113615] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:48:43.548 [DEBUG] [Thread-113617 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:48:49.172 [DEBUG] [Thread-113618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:48:58.582 [DEBUG] [Thread-113619 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:48:59.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:48:59.717 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:48:59.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:49:00.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 48, 24), 37.05, 7.31, 0.0, 17.72, 21.77, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:49:00.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:48:24
2025-11-03T09:49:00.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:49:00.697 [DEBUG] [Thread-113620] [transport.py] [_log()] starting thread (client mode): 0x117997e0
2025-11-03T09:49:00.697 [DEBUG] [Thread-113620] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:49:00.717 [DEBUG] [Thread-113620] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:49:00.717 [INFO] [Thread-113620] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:49:00.721 [DEBUG] [Thread-113620] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:49:00.721 [DEBUG] [Thread-113620] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:49:00.721 [DEBUG] [Thread-113620] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:49:00.721 [DEBUG] [Thread-113620] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:49:00.721 [DEBUG] [Thread-113620] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:49:00.721 [DEBUG] [Thread-113620] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:49:00.721 [DEBUG] [Thread-113620] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:49:00.721 [DEBUG] [Thread-113620] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:49:00.721 [DEBUG] [Thread-113620] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:49:00.721 [DEBUG] [Thread-113620] [transport.py] [_log()] client lang: <none>
2025-11-03T09:49:00.721 [DEBUG] [Thread-113620] [transport.py] [_log()] server lang: <none>
2025-11-03T09:49:00.721 [DEBUG] [Thread-113620] [transport.py] [_log()] kex follows: False
2025-11-03T09:49:00.721 [DEBUG] [Thread-113620] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:49:00.721 [DEBUG] [Thread-113620] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:49:00.721 [DEBUG] [Thread-113620] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:49:00.721 [DEBUG] [Thread-113620] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:49:00.721 [DEBUG] [Thread-113620] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:49:00.721 [DEBUG] [Thread-113620] [transport.py] [_log()] Compression: none
2025-11-03T09:49:00.721 [DEBUG] [Thread-113620] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:49:00.736 [DEBUG] [Thread-113620] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:49:00.736 [DEBUG] [Thread-113620] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:49:00.736 [DEBUG] [Thread-113620] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:49:00.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:49:00.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:49:00.738 [DEBUG] [Thread-113620] [transport.py] [_log()] userauth is OK
2025-11-03T09:49:00.738 [DEBUG] [Thread-113620] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:49:00.738 [DEBUG] [Thread-113620] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:49:00.738 [DEBUG] [Thread-113620] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:49:00.738 [DEBUG] [Thread-113620] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:49:00.747 [INFO] [Thread-113620] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:49:00.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:49:01.382 [DEBUG] [Thread-113620] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:49:01.382 [DEBUG] [Thread-113620] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:49:01.382 [DEBUG] [Thread-113620] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:49:01.423 [DEBUG] [Thread-113620] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:49:01.423 [DEBUG] [Thread-113620] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:49:01.425 [DEBUG] [Thread-113620] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:49:01.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:49:01.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:49:01.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:49:01.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:49:01.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:49:01.443 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:49:01.443 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:49:01.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:49:01.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:49:01.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.325441 -999.00  +20.70  13.84     12   -9.20 1 1 1 1 1   888    0 32.45 90.77 ----- 13.9 13.8 111.6 20.4 26.9 -29.7 26.2 -28.2 24.8 -28.7 25.6 -28.5
2025-11-03T09:49:01.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:49:01.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:49:01.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.325441
2025-11-03T09:49:01.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:49:01.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:49:01.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:49:01.444 [DEBUG] [Thread-113620] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:49:01.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:49:01.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:49:01.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:48:24', tmtdew=37.05, humidity=7.31, cloud=0.0, wind=17.72, temperature=21.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:48:38.102', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:49:01.521 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:49:01.532 [DEBUG] [Thread-113623] [transport.py] [_log()] starting thread (client mode): 0xed361d0
2025-11-03T09:49:01.532 [DEBUG] [Thread-113623] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:49:01.547 [DEBUG] [Thread-113623] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:49:01.547 [INFO] [Thread-113623] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:49:01.555 [DEBUG] [Thread-113623] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:49:01.555 [DEBUG] [Thread-113623] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:49:01.555 [DEBUG] [Thread-113623] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:49:01.555 [DEBUG] [Thread-113623] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:49:01.555 [DEBUG] [Thread-113623] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:49:01.555 [DEBUG] [Thread-113623] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:49:01.555 [DEBUG] [Thread-113623] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:49:01.555 [DEBUG] [Thread-113623] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:49:01.555 [DEBUG] [Thread-113623] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:49:01.555 [DEBUG] [Thread-113623] [transport.py] [_log()] client lang: <none>
2025-11-03T09:49:01.555 [DEBUG] [Thread-113623] [transport.py] [_log()] server lang: <none>
2025-11-03T09:49:01.555 [DEBUG] [Thread-113623] [transport.py] [_log()] kex follows: False
2025-11-03T09:49:01.555 [DEBUG] [Thread-113623] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:49:01.555 [DEBUG] [Thread-113623] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:49:01.555 [DEBUG] [Thread-113623] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:49:01.555 [DEBUG] [Thread-113623] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:49:01.555 [DEBUG] [Thread-113623] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:49:01.555 [DEBUG] [Thread-113623] [transport.py] [_log()] Compression: none
2025-11-03T09:49:01.555 [DEBUG] [Thread-113623] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:49:01.610 [DEBUG] [Thread-113623] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:49:01.610 [DEBUG] [Thread-113623] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:49:01.610 [DEBUG] [Thread-113623] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:49:01.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:49:01.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:49:01.668 [DEBUG] [Thread-113623] [transport.py] [_log()] userauth is OK
2025-11-03T09:49:01.668 [DEBUG] [Thread-113623] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:49:01.668 [DEBUG] [Thread-113623] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:49:01.669 [DEBUG] [Thread-113623] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:49:01.669 [DEBUG] [Thread-113623] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:49:01.682 [INFO] [Thread-113623] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:49:01.682 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:49:01.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:49:02.605 [DEBUG] [Thread-113623] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:49:02.605 [DEBUG] [Thread-113623] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:49:02.653 [DEBUG] [Thread-113623] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:49:02.653 [DEBUG] [Thread-113623] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:49:02.662 [DEBUG] [Thread-113623] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:49:02.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:49:02.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:49:02.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:49:02.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:49:02.686 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:49:02.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:49:02.694 [DEBUG] [Thread-113623] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:49:13.613 [DEBUG] [Thread-113625 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:49:17.763 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:49:17.764 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:49:28.665 [DEBUG] [Thread-113626 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:49:32.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:49:32.717 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:49:32.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:49:33.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 49, 29), 37.79, 6.7, 0.0, 11.31, 21.53, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:49:33.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:49:29
2025-11-03T09:49:33.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:49:33.674 [DEBUG] [Thread-113627] [transport.py] [_log()] starting thread (client mode): 0x11799b70
2025-11-03T09:49:33.674 [DEBUG] [Thread-113627] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:49:33.694 [DEBUG] [Thread-113627] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:49:33.694 [INFO] [Thread-113627] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:49:33.698 [DEBUG] [Thread-113627] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:49:33.698 [DEBUG] [Thread-113627] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:49:33.698 [DEBUG] [Thread-113627] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:49:33.698 [DEBUG] [Thread-113627] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:49:33.698 [DEBUG] [Thread-113627] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:49:33.698 [DEBUG] [Thread-113627] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:49:33.698 [DEBUG] [Thread-113627] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:49:33.698 [DEBUG] [Thread-113627] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:49:33.698 [DEBUG] [Thread-113627] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:49:33.698 [DEBUG] [Thread-113627] [transport.py] [_log()] client lang: <none>
2025-11-03T09:49:33.698 [DEBUG] [Thread-113627] [transport.py] [_log()] server lang: <none>
2025-11-03T09:49:33.698 [DEBUG] [Thread-113627] [transport.py] [_log()] kex follows: False
2025-11-03T09:49:33.698 [DEBUG] [Thread-113627] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:49:33.698 [DEBUG] [Thread-113627] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:49:33.698 [DEBUG] [Thread-113627] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:49:33.698 [DEBUG] [Thread-113627] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:49:33.698 [DEBUG] [Thread-113627] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:49:33.699 [DEBUG] [Thread-113627] [transport.py] [_log()] Compression: none
2025-11-03T09:49:33.699 [DEBUG] [Thread-113627] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:49:33.716 [DEBUG] [Thread-113627] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:49:33.716 [DEBUG] [Thread-113627] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:49:33.717 [DEBUG] [Thread-113627] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:49:33.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:49:33.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:49:33.719 [DEBUG] [Thread-113627] [transport.py] [_log()] userauth is OK
2025-11-03T09:49:33.719 [DEBUG] [Thread-113627] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:49:33.719 [DEBUG] [Thread-113627] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:49:33.719 [DEBUG] [Thread-113627] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:49:33.719 [DEBUG] [Thread-113627] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:49:33.740 [INFO] [Thread-113627] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:49:33.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:49:34.369 [DEBUG] [Thread-113627] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:49:34.369 [DEBUG] [Thread-113627] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:49:34.370 [DEBUG] [Thread-113627] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:49:34.410 [DEBUG] [Thread-113627] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:49:34.410 [DEBUG] [Thread-113627] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:49:34.413 [DEBUG] [Thread-113627] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:49:34.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:49:34.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:49:34.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:49:34.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:49:34.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:49:34.433 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:49:34.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:49:34.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:49:34.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:49:34.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.325788 -999.00  +20.70  16.44     12   -9.20 1 1 1 1 1   888    0 32.27 98.63 ----- 18.6 16.4 72.4 20.8 26.9 -29.2 26.2 -28.6 24.8 -29.0 25.7 -29.4
2025-11-03T09:49:34.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:49:34.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:49:34.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.325788
2025-11-03T09:49:34.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:49:34.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:49:34.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:49:34.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:49:34.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:49:34.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:49:29', tmtdew=37.79, humidity=6.7, cloud=0.0, wind=11.31, temperature=21.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:49:08.083', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:49:34.436 [DEBUG] [Thread-113627] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:49:34.513 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:49:34.525 [DEBUG] [Thread-113630] [transport.py] [_log()] starting thread (client mode): 0x81d9c90
2025-11-03T09:49:34.525 [DEBUG] [Thread-113630] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:49:34.539 [DEBUG] [Thread-113630] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:49:34.539 [INFO] [Thread-113630] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:49:34.546 [DEBUG] [Thread-113630] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:49:34.547 [DEBUG] [Thread-113630] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:49:34.547 [DEBUG] [Thread-113630] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:49:34.547 [DEBUG] [Thread-113630] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:49:34.547 [DEBUG] [Thread-113630] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:49:34.547 [DEBUG] [Thread-113630] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:49:34.547 [DEBUG] [Thread-113630] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:49:34.547 [DEBUG] [Thread-113630] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:49:34.547 [DEBUG] [Thread-113630] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:49:34.547 [DEBUG] [Thread-113630] [transport.py] [_log()] client lang: <none>
2025-11-03T09:49:34.547 [DEBUG] [Thread-113630] [transport.py] [_log()] server lang: <none>
2025-11-03T09:49:34.547 [DEBUG] [Thread-113630] [transport.py] [_log()] kex follows: False
2025-11-03T09:49:34.547 [DEBUG] [Thread-113630] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:49:34.547 [DEBUG] [Thread-113630] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:49:34.547 [DEBUG] [Thread-113630] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:49:34.547 [DEBUG] [Thread-113630] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:49:34.547 [DEBUG] [Thread-113630] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:49:34.547 [DEBUG] [Thread-113630] [transport.py] [_log()] Compression: none
2025-11-03T09:49:34.547 [DEBUG] [Thread-113630] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:49:34.604 [DEBUG] [Thread-113630] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:49:34.604 [DEBUG] [Thread-113630] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:49:34.605 [DEBUG] [Thread-113630] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:49:34.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:49:34.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:49:34.664 [DEBUG] [Thread-113630] [transport.py] [_log()] userauth is OK
2025-11-03T09:49:34.664 [DEBUG] [Thread-113630] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:49:34.664 [DEBUG] [Thread-113630] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:49:34.664 [DEBUG] [Thread-113630] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:49:34.664 [DEBUG] [Thread-113630] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:49:34.682 [INFO] [Thread-113630] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:49:34.683 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:49:34.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:49:35.591 [DEBUG] [Thread-113630] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:49:35.591 [DEBUG] [Thread-113630] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:49:35.638 [DEBUG] [Thread-113630] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:49:35.639 [DEBUG] [Thread-113630] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:49:35.648 [DEBUG] [Thread-113630] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:49:35.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:49:35.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:49:35.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:49:35.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:49:35.676 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:49:35.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:49:35.685 [DEBUG] [Thread-113630] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:49:43.695 [DEBUG] [Thread-113632 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:49:49.242 [DEBUG] [Thread-113633 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:49:58.746 [DEBUG] [Thread-113634 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:50:05.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:50:05.681 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:50:05.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:50:06.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 50, 1), 37.75, 6.7, 0.0, 13.92, 21.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:50:06.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:50:01
2025-11-03T09:50:06.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:50:06.627 [DEBUG] [Thread-113635] [transport.py] [_log()] starting thread (client mode): 0x117be110
2025-11-03T09:50:06.627 [DEBUG] [Thread-113635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:50:06.647 [DEBUG] [Thread-113635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:50:06.647 [INFO] [Thread-113635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:50:06.650 [DEBUG] [Thread-113635] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:50:06.650 [DEBUG] [Thread-113635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:50:06.650 [DEBUG] [Thread-113635] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:50:06.650 [DEBUG] [Thread-113635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:50:06.650 [DEBUG] [Thread-113635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:50:06.650 [DEBUG] [Thread-113635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:50:06.650 [DEBUG] [Thread-113635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:50:06.650 [DEBUG] [Thread-113635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:50:06.650 [DEBUG] [Thread-113635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:50:06.650 [DEBUG] [Thread-113635] [transport.py] [_log()] client lang: <none>
2025-11-03T09:50:06.650 [DEBUG] [Thread-113635] [transport.py] [_log()] server lang: <none>
2025-11-03T09:50:06.651 [DEBUG] [Thread-113635] [transport.py] [_log()] kex follows: False
2025-11-03T09:50:06.651 [DEBUG] [Thread-113635] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:50:06.651 [DEBUG] [Thread-113635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:50:06.651 [DEBUG] [Thread-113635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:50:06.651 [DEBUG] [Thread-113635] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:50:06.651 [DEBUG] [Thread-113635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:50:06.651 [DEBUG] [Thread-113635] [transport.py] [_log()] Compression: none
2025-11-03T09:50:06.651 [DEBUG] [Thread-113635] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:50:06.669 [DEBUG] [Thread-113635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:50:06.670 [DEBUG] [Thread-113635] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:50:06.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:50:06.671 [DEBUG] [Thread-113635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:50:06.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:50:06.717 [DEBUG] [Thread-113635] [transport.py] [_log()] userauth is OK
2025-11-03T09:50:06.718 [DEBUG] [Thread-113635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:50:06.718 [DEBUG] [Thread-113635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:50:06.718 [DEBUG] [Thread-113635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:50:06.718 [DEBUG] [Thread-113635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:50:06.749 [INFO] [Thread-113635] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:50:06.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:50:07.951 [DEBUG] [Thread-113635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:50:07.961 [DEBUG] [Thread-113635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:50:07.961 [DEBUG] [Thread-113635] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:50:07.992 [DEBUG] [Thread-113635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:50:07.992 [DEBUG] [Thread-113635] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:50:07.995 [DEBUG] [Thread-113635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:50:08.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:50:08.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:50:08.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:50:08.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:50:08.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:50:08.017 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:50:08.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:50:08.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:50:08.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:50:08.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.326135 -999.00  +20.80  17.38     12   -8.90 1 1 1 1 1   888    0 32.48 101.02 ----- 19.2 17.4 57.4 22.8 27.1 -29.3 26.1 -29.0 24.9 -29.8 25.6 -29.0
2025-11-03T09:50:08.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:50:08.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:50:08.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.326135
2025-11-03T09:50:08.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:50:08.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:50:08.021 [DEBUG] [Thread-113635] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:50:08.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:50:08.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:50:08.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:50:08.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:50:01', tmtdew=37.75, humidity=6.7, cloud=0.0, wind=13.92, temperature=21.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:49:38.064', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:50:08.104 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:50:08.116 [DEBUG] [Thread-113638] [transport.py] [_log()] starting thread (client mode): 0x1179bb50
2025-11-03T09:50:08.116 [DEBUG] [Thread-113638] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:50:08.130 [DEBUG] [Thread-113638] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:50:08.131 [INFO] [Thread-113638] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:50:08.139 [DEBUG] [Thread-113638] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:50:08.139 [DEBUG] [Thread-113638] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:50:08.139 [DEBUG] [Thread-113638] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:50:08.139 [DEBUG] [Thread-113638] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:50:08.139 [DEBUG] [Thread-113638] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:50:08.139 [DEBUG] [Thread-113638] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:50:08.139 [DEBUG] [Thread-113638] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:50:08.139 [DEBUG] [Thread-113638] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:50:08.139 [DEBUG] [Thread-113638] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:50:08.139 [DEBUG] [Thread-113638] [transport.py] [_log()] client lang: <none>
2025-11-03T09:50:08.139 [DEBUG] [Thread-113638] [transport.py] [_log()] server lang: <none>
2025-11-03T09:50:08.139 [DEBUG] [Thread-113638] [transport.py] [_log()] kex follows: False
2025-11-03T09:50:08.139 [DEBUG] [Thread-113638] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:50:08.139 [DEBUG] [Thread-113638] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:50:08.140 [DEBUG] [Thread-113638] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:50:08.140 [DEBUG] [Thread-113638] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:50:08.140 [DEBUG] [Thread-113638] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:50:08.140 [DEBUG] [Thread-113638] [transport.py] [_log()] Compression: none
2025-11-03T09:50:08.140 [DEBUG] [Thread-113638] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:50:08.196 [DEBUG] [Thread-113638] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:50:08.206 [DEBUG] [Thread-113638] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:50:08.207 [DEBUG] [Thread-113638] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:50:08.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:50:08.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:50:08.256 [DEBUG] [Thread-113638] [transport.py] [_log()] userauth is OK
2025-11-03T09:50:08.256 [DEBUG] [Thread-113638] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:50:08.256 [DEBUG] [Thread-113638] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:50:08.256 [DEBUG] [Thread-113638] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:50:08.257 [DEBUG] [Thread-113638] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:50:08.275 [INFO] [Thread-113638] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:50:08.276 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:50:08.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:50:09.127 [DEBUG] [Thread-113638] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:50:09.136 [DEBUG] [Thread-113638] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:50:09.175 [DEBUG] [Thread-113638] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:50:09.175 [DEBUG] [Thread-113638] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:50:09.184 [DEBUG] [Thread-113638] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:50:09.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:50:09.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:50:09.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:50:09.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:50:09.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:50:09.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:50:09.219 [DEBUG] [Thread-113638] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:50:13.786 [DEBUG] [Thread-113640 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:50:17.907 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:50:17.908 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:50:28.833 [DEBUG] [Thread-113641 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:50:39.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:50:39.231 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:50:39.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:50:39.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 50, 33), 37.14, 7.26, 0.0, 21.16, 21.54, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:50:39.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:50:33
2025-11-03T09:50:40.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:50:40.179 [DEBUG] [Thread-113642] [transport.py] [_log()] starting thread (client mode): 0x11798ca0
2025-11-03T09:50:40.179 [DEBUG] [Thread-113642] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:50:40.186 [DEBUG] [Thread-113642] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:50:40.186 [INFO] [Thread-113642] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:50:40.189 [DEBUG] [Thread-113642] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:50:40.190 [DEBUG] [Thread-113642] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:50:40.190 [DEBUG] [Thread-113642] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:50:40.190 [DEBUG] [Thread-113642] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:50:40.190 [DEBUG] [Thread-113642] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:50:40.190 [DEBUG] [Thread-113642] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:50:40.190 [DEBUG] [Thread-113642] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:50:40.190 [DEBUG] [Thread-113642] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:50:40.190 [DEBUG] [Thread-113642] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:50:40.190 [DEBUG] [Thread-113642] [transport.py] [_log()] client lang: <none>
2025-11-03T09:50:40.190 [DEBUG] [Thread-113642] [transport.py] [_log()] server lang: <none>
2025-11-03T09:50:40.190 [DEBUG] [Thread-113642] [transport.py] [_log()] kex follows: False
2025-11-03T09:50:40.190 [DEBUG] [Thread-113642] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:50:40.190 [DEBUG] [Thread-113642] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:50:40.190 [DEBUG] [Thread-113642] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:50:40.190 [DEBUG] [Thread-113642] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:50:40.191 [DEBUG] [Thread-113642] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:50:40.191 [DEBUG] [Thread-113642] [transport.py] [_log()] Compression: none
2025-11-03T09:50:40.191 [DEBUG] [Thread-113642] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:50:40.209 [DEBUG] [Thread-113642] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:50:40.210 [DEBUG] [Thread-113642] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:50:40.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:50:40.212 [DEBUG] [Thread-113642] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:50:40.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:50:40.214 [DEBUG] [Thread-113642] [transport.py] [_log()] userauth is OK
2025-11-03T09:50:40.214 [DEBUG] [Thread-113642] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:50:40.214 [DEBUG] [Thread-113642] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:50:40.214 [DEBUG] [Thread-113642] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:50:40.214 [DEBUG] [Thread-113642] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:50:40.231 [INFO] [Thread-113642] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:50:40.232 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:50:40.843 [DEBUG] [Thread-113642] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:50:40.843 [DEBUG] [Thread-113642] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:50:40.843 [DEBUG] [Thread-113642] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:50:40.884 [DEBUG] [Thread-113642] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:50:40.884 [DEBUG] [Thread-113642] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:50:40.887 [DEBUG] [Thread-113642] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:50:40.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:50:40.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:50:40.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:50:40.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:50:40.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:50:40.913 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:50:40.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:50:40.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:50:40.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:50:40.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.326135 -999.00  +20.80  17.38     12   -8.90 1 1 1 1 1   888    0 32.48 101.02 ----- 19.2 17.4 57.4 22.8 27.1 -29.3 26.1 -29.0 24.9 -29.8 25.6 -29.0
2025-11-03T09:50:40.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:50:40.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:50:40.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.326135
2025-11-03T09:50:40.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:50:40.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:50:40.916 [DEBUG] [Thread-113642] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:50:40.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:50:40.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:50:40.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:50:40.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:50:33', tmtdew=37.14, humidity=7.26, cloud=0.0, wind=21.16, temperature=21.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:49:38.064', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:50:41.006 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:50:41.017 [DEBUG] [Thread-113645] [transport.py] [_log()] starting thread (client mode): 0x81d9540
2025-11-03T09:50:41.017 [DEBUG] [Thread-113645] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:50:41.032 [DEBUG] [Thread-113645] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:50:41.032 [INFO] [Thread-113645] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:50:41.039 [DEBUG] [Thread-113645] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:50:41.039 [DEBUG] [Thread-113645] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:50:41.039 [DEBUG] [Thread-113645] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:50:41.040 [DEBUG] [Thread-113645] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:50:41.040 [DEBUG] [Thread-113645] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:50:41.040 [DEBUG] [Thread-113645] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:50:41.040 [DEBUG] [Thread-113645] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:50:41.040 [DEBUG] [Thread-113645] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:50:41.040 [DEBUG] [Thread-113645] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:50:41.040 [DEBUG] [Thread-113645] [transport.py] [_log()] client lang: <none>
2025-11-03T09:50:41.040 [DEBUG] [Thread-113645] [transport.py] [_log()] server lang: <none>
2025-11-03T09:50:41.040 [DEBUG] [Thread-113645] [transport.py] [_log()] kex follows: False
2025-11-03T09:50:41.040 [DEBUG] [Thread-113645] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:50:41.040 [DEBUG] [Thread-113645] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:50:41.040 [DEBUG] [Thread-113645] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:50:41.040 [DEBUG] [Thread-113645] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:50:41.040 [DEBUG] [Thread-113645] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:50:41.040 [DEBUG] [Thread-113645] [transport.py] [_log()] Compression: none
2025-11-03T09:50:41.040 [DEBUG] [Thread-113645] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:50:41.099 [DEBUG] [Thread-113645] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:50:41.100 [DEBUG] [Thread-113645] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:50:41.100 [DEBUG] [Thread-113645] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:50:41.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:50:41.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:50:41.156 [DEBUG] [Thread-113645] [transport.py] [_log()] userauth is OK
2025-11-03T09:50:41.156 [DEBUG] [Thread-113645] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:50:41.156 [DEBUG] [Thread-113645] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:50:41.156 [DEBUG] [Thread-113645] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:50:41.157 [DEBUG] [Thread-113645] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:50:41.176 [INFO] [Thread-113645] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:50:41.176 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:50:41.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:50:42.033 [DEBUG] [Thread-113645] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:50:42.034 [DEBUG] [Thread-113645] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:50:42.082 [DEBUG] [Thread-113645] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:50:42.082 [DEBUG] [Thread-113645] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:50:42.092 [DEBUG] [Thread-113645] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:50:42.101 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:50:42.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:50:42.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:50:42.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:50:42.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:50:42.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:50:42.129 [DEBUG] [Thread-113645] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:50:43.867 [DEBUG] [Thread-113647 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:50:49.308 [DEBUG] [Thread-113648 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:50:58.914 [DEBUG] [Thread-113649 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:51:12.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:51:12.139 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:51:12.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:51:12.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 51, 5), 37.25, 7.2, 0.0, 19.53, 21.48, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:51:12.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:51:05
2025-11-03T09:51:12.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:51:13.094 [DEBUG] [Thread-113650] [transport.py] [_log()] starting thread (client mode): 0xed40c40
2025-11-03T09:51:13.094 [DEBUG] [Thread-113650] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:51:13.114 [DEBUG] [Thread-113650] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:51:13.114 [INFO] [Thread-113650] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:51:13.116 [DEBUG] [Thread-113650] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:51:13.116 [DEBUG] [Thread-113650] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:51:13.116 [DEBUG] [Thread-113650] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:51:13.116 [DEBUG] [Thread-113650] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:51:13.116 [DEBUG] [Thread-113650] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:51:13.116 [DEBUG] [Thread-113650] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:51:13.116 [DEBUG] [Thread-113650] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:51:13.116 [DEBUG] [Thread-113650] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:51:13.116 [DEBUG] [Thread-113650] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:51:13.116 [DEBUG] [Thread-113650] [transport.py] [_log()] client lang: <none>
2025-11-03T09:51:13.116 [DEBUG] [Thread-113650] [transport.py] [_log()] server lang: <none>
2025-11-03T09:51:13.116 [DEBUG] [Thread-113650] [transport.py] [_log()] kex follows: False
2025-11-03T09:51:13.116 [DEBUG] [Thread-113650] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:51:13.116 [DEBUG] [Thread-113650] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:51:13.116 [DEBUG] [Thread-113650] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:51:13.116 [DEBUG] [Thread-113650] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:51:13.116 [DEBUG] [Thread-113650] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:51:13.116 [DEBUG] [Thread-113650] [transport.py] [_log()] Compression: none
2025-11-03T09:51:13.116 [DEBUG] [Thread-113650] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:51:13.128 [DEBUG] [Thread-113650] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:51:13.128 [DEBUG] [Thread-113650] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:51:13.129 [DEBUG] [Thread-113650] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:51:13.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:51:13.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:51:13.131 [DEBUG] [Thread-113650] [transport.py] [_log()] userauth is OK
2025-11-03T09:51:13.131 [DEBUG] [Thread-113650] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:51:13.131 [DEBUG] [Thread-113650] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:51:13.131 [DEBUG] [Thread-113650] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:51:13.131 [DEBUG] [Thread-113650] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:51:13.149 [INFO] [Thread-113650] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:51:13.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:51:13.773 [DEBUG] [Thread-113650] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:51:13.774 [DEBUG] [Thread-113650] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:51:13.775 [DEBUG] [Thread-113650] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:51:13.815 [DEBUG] [Thread-113650] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:51:13.815 [DEBUG] [Thread-113650] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:51:13.819 [DEBUG] [Thread-113650] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:51:13.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:51:13.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:51:13.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:51:13.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:51:13.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:51:13.844 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:51:13.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:51:13.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:51:13.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:51:13.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.326830 -999.00  +20.70  22.55     12   -9.10 1 1 1 1 1   888    0 32.14 96.56 ----- 19.6 22.6 48.8 23.4 27.1 -29.2 26.1 -28.3 24.8 -29.4 25.6 -28.4
2025-11-03T09:51:13.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:51:13.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:51:13.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.326830
2025-11-03T09:51:13.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:51:13.853 [DEBUG] [Thread-113650] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:51:13.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:51:13.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:51:13.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:51:13.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:51:13.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:51:05', tmtdew=37.25, humidity=7.2, cloud=0.0, wind=19.53, temperature=21.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:50:38.112', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:51:13.938 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:51:13.943 [DEBUG] [Thread-113653 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:51:13.950 [DEBUG] [Thread-113654] [transport.py] [_log()] starting thread (client mode): 0x117bdcc0
2025-11-03T09:51:13.950 [DEBUG] [Thread-113654] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:51:13.964 [DEBUG] [Thread-113654] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:51:13.964 [INFO] [Thread-113654] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:51:13.972 [DEBUG] [Thread-113654] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:51:13.972 [DEBUG] [Thread-113654] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:51:13.972 [DEBUG] [Thread-113654] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:51:13.972 [DEBUG] [Thread-113654] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:51:13.972 [DEBUG] [Thread-113654] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:51:13.972 [DEBUG] [Thread-113654] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:51:13.972 [DEBUG] [Thread-113654] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:51:13.972 [DEBUG] [Thread-113654] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:51:13.972 [DEBUG] [Thread-113654] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:51:13.972 [DEBUG] [Thread-113654] [transport.py] [_log()] client lang: <none>
2025-11-03T09:51:13.972 [DEBUG] [Thread-113654] [transport.py] [_log()] server lang: <none>
2025-11-03T09:51:13.972 [DEBUG] [Thread-113654] [transport.py] [_log()] kex follows: False
2025-11-03T09:51:13.973 [DEBUG] [Thread-113654] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:51:13.973 [DEBUG] [Thread-113654] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:51:13.973 [DEBUG] [Thread-113654] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:51:13.973 [DEBUG] [Thread-113654] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:51:13.973 [DEBUG] [Thread-113654] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:51:13.973 [DEBUG] [Thread-113654] [transport.py] [_log()] Compression: none
2025-11-03T09:51:13.973 [DEBUG] [Thread-113654] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:51:14.030 [DEBUG] [Thread-113654] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:51:14.031 [DEBUG] [Thread-113654] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:51:14.032 [DEBUG] [Thread-113654] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:51:14.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:51:14.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:51:14.087 [DEBUG] [Thread-113654] [transport.py] [_log()] userauth is OK
2025-11-03T09:51:14.087 [DEBUG] [Thread-113654] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:51:14.087 [DEBUG] [Thread-113654] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:51:14.088 [DEBUG] [Thread-113654] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:51:14.088 [DEBUG] [Thread-113654] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:51:14.107 [INFO] [Thread-113654] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:51:14.107 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:51:14.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:51:14.959 [DEBUG] [Thread-113654] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:51:14.959 [DEBUG] [Thread-113654] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:51:15.006 [DEBUG] [Thread-113654] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:51:15.006 [DEBUG] [Thread-113654] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:51:15.015 [DEBUG] [Thread-113654] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:51:15.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:51:15.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:51:15.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:51:15.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:51:15.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:51:15.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:51:15.046 [DEBUG] [Thread-113654] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:51:18.047 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:51:18.048 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:51:28.987 [DEBUG] [Thread-113656 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:51:44.018 [DEBUG] [Thread-113657 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:51:45.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:51:45.066 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:51:45.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:51:45.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 51, 37), 37.74, 6.73, 0.0, 19.22, 22.08, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:51:45.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:51:37
2025-11-03T09:51:45.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:51:46.046 [DEBUG] [Thread-113658] [transport.py] [_log()] starting thread (client mode): 0xed40280
2025-11-03T09:51:46.046 [DEBUG] [Thread-113658] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:51:46.065 [DEBUG] [Thread-113658] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:51:46.065 [INFO] [Thread-113658] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:51:46.068 [DEBUG] [Thread-113658] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:51:46.068 [DEBUG] [Thread-113658] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:51:46.068 [DEBUG] [Thread-113658] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:51:46.068 [DEBUG] [Thread-113658] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:51:46.068 [DEBUG] [Thread-113658] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:51:46.068 [DEBUG] [Thread-113658] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:51:46.068 [DEBUG] [Thread-113658] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:51:46.068 [DEBUG] [Thread-113658] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:51:46.068 [DEBUG] [Thread-113658] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:51:46.068 [DEBUG] [Thread-113658] [transport.py] [_log()] client lang: <none>
2025-11-03T09:51:46.068 [DEBUG] [Thread-113658] [transport.py] [_log()] server lang: <none>
2025-11-03T09:51:46.068 [DEBUG] [Thread-113658] [transport.py] [_log()] kex follows: False
2025-11-03T09:51:46.068 [DEBUG] [Thread-113658] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:51:46.068 [DEBUG] [Thread-113658] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:51:46.068 [DEBUG] [Thread-113658] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:51:46.068 [DEBUG] [Thread-113658] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:51:46.068 [DEBUG] [Thread-113658] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:51:46.068 [DEBUG] [Thread-113658] [transport.py] [_log()] Compression: none
2025-11-03T09:51:46.068 [DEBUG] [Thread-113658] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:51:46.082 [DEBUG] [Thread-113658] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:51:46.083 [DEBUG] [Thread-113658] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:51:46.083 [DEBUG] [Thread-113658] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:51:46.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:51:46.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:51:46.083 [DEBUG] [Thread-113658] [transport.py] [_log()] userauth is OK
2025-11-03T09:51:46.084 [DEBUG] [Thread-113658] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:51:46.084 [DEBUG] [Thread-113658] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:51:46.084 [DEBUG] [Thread-113658] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:51:46.084 [DEBUG] [Thread-113658] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:51:46.093 [INFO] [Thread-113658] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:51:46.093 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:51:46.730 [DEBUG] [Thread-113658] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:51:46.730 [DEBUG] [Thread-113658] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:51:46.731 [DEBUG] [Thread-113658] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:51:46.771 [DEBUG] [Thread-113658] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:51:46.771 [DEBUG] [Thread-113658] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:51:46.775 [DEBUG] [Thread-113658] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:51:46.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:51:46.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:51:46.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:51:46.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:51:46.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:51:46.798 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:51:46.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:51:46.799 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:51:46.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:51:46.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.327177 -999.00  +21.20  13.98     12   -8.90 1 1 1 1 1   888    0 32.61 103.12 ----- 20.8 14.0 353.1 20.3 27.2 -28.6 26.2 -29.3 24.9 -30.2 25.6 -27.8
2025-11-03T09:51:46.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:51:46.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:51:46.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.327177
2025-11-03T09:51:46.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:51:46.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:51:46.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:51:46.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:51:46.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:51:46.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:51:37', tmtdew=37.74, humidity=6.73, cloud=0.0, wind=19.22, temperature=22.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:51:08.093', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:51:46.801 [DEBUG] [Thread-113658] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:51:46.885 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:51:46.896 [DEBUG] [Thread-113661] [transport.py] [_log()] starting thread (client mode): 0xed40610
2025-11-03T09:51:46.897 [DEBUG] [Thread-113661] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:51:46.912 [DEBUG] [Thread-113661] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:51:46.912 [INFO] [Thread-113661] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:51:46.919 [DEBUG] [Thread-113661] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:51:46.920 [DEBUG] [Thread-113661] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:51:46.920 [DEBUG] [Thread-113661] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:51:46.920 [DEBUG] [Thread-113661] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:51:46.920 [DEBUG] [Thread-113661] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:51:46.920 [DEBUG] [Thread-113661] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:51:46.920 [DEBUG] [Thread-113661] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:51:46.920 [DEBUG] [Thread-113661] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:51:46.920 [DEBUG] [Thread-113661] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:51:46.920 [DEBUG] [Thread-113661] [transport.py] [_log()] client lang: <none>
2025-11-03T09:51:46.920 [DEBUG] [Thread-113661] [transport.py] [_log()] server lang: <none>
2025-11-03T09:51:46.920 [DEBUG] [Thread-113661] [transport.py] [_log()] kex follows: False
2025-11-03T09:51:46.920 [DEBUG] [Thread-113661] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:51:46.920 [DEBUG] [Thread-113661] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:51:46.920 [DEBUG] [Thread-113661] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:51:46.920 [DEBUG] [Thread-113661] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:51:46.920 [DEBUG] [Thread-113661] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:51:46.920 [DEBUG] [Thread-113661] [transport.py] [_log()] Compression: none
2025-11-03T09:51:46.921 [DEBUG] [Thread-113661] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:51:46.978 [DEBUG] [Thread-113661] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:51:46.979 [DEBUG] [Thread-113661] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:51:46.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:51:46.980 [DEBUG] [Thread-113661] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:51:46.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:51:47.038 [DEBUG] [Thread-113661] [transport.py] [_log()] userauth is OK
2025-11-03T09:51:47.038 [DEBUG] [Thread-113661] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:51:47.039 [DEBUG] [Thread-113661] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:51:47.039 [DEBUG] [Thread-113661] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:51:47.039 [DEBUG] [Thread-113661] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:51:47.063 [INFO] [Thread-113661] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:51:47.063 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:51:47.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:51:47.952 [DEBUG] [Thread-113661] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:51:47.953 [DEBUG] [Thread-113661] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:51:48.000 [DEBUG] [Thread-113661] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:51:48.000 [DEBUG] [Thread-113661] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:51:48.009 [DEBUG] [Thread-113661] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:51:48.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:51:48.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:51:48.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:51:48.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:51:48.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:51:48.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:51:48.047 [DEBUG] [Thread-113661] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:51:49.367 [DEBUG] [Thread-113663 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:51:59.055 [DEBUG] [Thread-113664 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:52:14.103 [DEBUG] [Thread-113665 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:52:18.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:52:18.069 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:52:18.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:52:18.189 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:52:18.190 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:52:18.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 52, 10), 37.73, 6.73, 0.0, 20.41, 22.06, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:52:18.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:52:10
2025-11-03T09:52:18.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:52:19.040 [DEBUG] [Thread-113666] [transport.py] [_log()] starting thread (client mode): 0x81dac50
2025-11-03T09:52:19.040 [DEBUG] [Thread-113666] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:52:19.060 [DEBUG] [Thread-113666] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:52:19.060 [INFO] [Thread-113666] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:52:19.063 [DEBUG] [Thread-113666] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:52:19.063 [DEBUG] [Thread-113666] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:52:19.063 [DEBUG] [Thread-113666] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:52:19.063 [DEBUG] [Thread-113666] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:52:19.063 [DEBUG] [Thread-113666] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:52:19.063 [DEBUG] [Thread-113666] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:52:19.063 [DEBUG] [Thread-113666] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:52:19.063 [DEBUG] [Thread-113666] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:52:19.063 [DEBUG] [Thread-113666] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:52:19.063 [DEBUG] [Thread-113666] [transport.py] [_log()] client lang: <none>
2025-11-03T09:52:19.063 [DEBUG] [Thread-113666] [transport.py] [_log()] server lang: <none>
2025-11-03T09:52:19.063 [DEBUG] [Thread-113666] [transport.py] [_log()] kex follows: False
2025-11-03T09:52:19.063 [DEBUG] [Thread-113666] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:52:19.063 [DEBUG] [Thread-113666] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:52:19.063 [DEBUG] [Thread-113666] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:52:19.063 [DEBUG] [Thread-113666] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:52:19.063 [DEBUG] [Thread-113666] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:52:19.063 [DEBUG] [Thread-113666] [transport.py] [_log()] Compression: none
2025-11-03T09:52:19.064 [DEBUG] [Thread-113666] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:52:19.077 [DEBUG] [Thread-113666] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:52:19.077 [DEBUG] [Thread-113666] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:52:19.077 [DEBUG] [Thread-113666] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:52:19.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:52:19.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:52:19.078 [DEBUG] [Thread-113666] [transport.py] [_log()] userauth is OK
2025-11-03T09:52:19.078 [DEBUG] [Thread-113666] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:52:19.078 [DEBUG] [Thread-113666] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:52:19.078 [DEBUG] [Thread-113666] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:52:19.078 [DEBUG] [Thread-113666] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:52:19.094 [INFO] [Thread-113666] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:52:19.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:52:19.758 [DEBUG] [Thread-113666] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:52:19.759 [DEBUG] [Thread-113666] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:52:19.759 [DEBUG] [Thread-113666] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:52:19.800 [DEBUG] [Thread-113666] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:52:19.800 [DEBUG] [Thread-113666] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:52:19.804 [DEBUG] [Thread-113666] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:52:19.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:52:19.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:52:19.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:52:19.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:52:19.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:52:19.831 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:52:19.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:52:19.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:52:19.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:52:19.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.327524 -999.00  +21.20  25.44     12   -8.80 1 1 1 1 1   888    0 32.66 103.21 ----- 16.0 25.4 26.4 29.8 27.1 -30.1 26.1 -28.0 24.9 -28.3 25.5 -29.0
2025-11-03T09:52:19.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:52:19.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:52:19.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.327524
2025-11-03T09:52:19.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:52:19.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:52:19.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:52:19.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:52:19.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:52:19.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:52:10', tmtdew=37.73, humidity=6.73, cloud=0.0, wind=20.41, temperature=22.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:51:38.074', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:52:19.834 [DEBUG] [Thread-113666] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:52:19.927 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:52:19.939 [DEBUG] [Thread-113669] [transport.py] [_log()] starting thread (client mode): 0xed361d0
2025-11-03T09:52:19.940 [DEBUG] [Thread-113669] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:52:19.954 [DEBUG] [Thread-113669] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:52:19.954 [INFO] [Thread-113669] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:52:19.961 [DEBUG] [Thread-113669] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:52:19.962 [DEBUG] [Thread-113669] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:52:19.962 [DEBUG] [Thread-113669] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:52:19.962 [DEBUG] [Thread-113669] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:52:19.962 [DEBUG] [Thread-113669] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:52:19.962 [DEBUG] [Thread-113669] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:52:19.962 [DEBUG] [Thread-113669] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:52:19.962 [DEBUG] [Thread-113669] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:52:19.962 [DEBUG] [Thread-113669] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:52:19.962 [DEBUG] [Thread-113669] [transport.py] [_log()] client lang: <none>
2025-11-03T09:52:19.962 [DEBUG] [Thread-113669] [transport.py] [_log()] server lang: <none>
2025-11-03T09:52:19.962 [DEBUG] [Thread-113669] [transport.py] [_log()] kex follows: False
2025-11-03T09:52:19.962 [DEBUG] [Thread-113669] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:52:19.962 [DEBUG] [Thread-113669] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:52:19.962 [DEBUG] [Thread-113669] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:52:19.962 [DEBUG] [Thread-113669] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:52:19.963 [DEBUG] [Thread-113669] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:52:19.963 [DEBUG] [Thread-113669] [transport.py] [_log()] Compression: none
2025-11-03T09:52:19.963 [DEBUG] [Thread-113669] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:52:20.026 [DEBUG] [Thread-113669] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:52:20.027 [DEBUG] [Thread-113669] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:52:20.027 [DEBUG] [Thread-113669] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:52:20.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:52:20.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:52:20.082 [DEBUG] [Thread-113669] [transport.py] [_log()] userauth is OK
2025-11-03T09:52:20.083 [DEBUG] [Thread-113669] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:52:20.083 [DEBUG] [Thread-113669] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:52:20.083 [DEBUG] [Thread-113669] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:52:20.083 [DEBUG] [Thread-113669] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:52:20.102 [INFO] [Thread-113669] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:52:20.102 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:52:20.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:52:20.951 [DEBUG] [Thread-113669] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:52:20.952 [DEBUG] [Thread-113669] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:52:21.001 [DEBUG] [Thread-113669] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:52:21.001 [DEBUG] [Thread-113669] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:52:21.014 [DEBUG] [Thread-113669] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:52:21.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:52:21.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:52:21.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:52:21.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:52:21.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:52:21.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:52:21.062 [DEBUG] [Thread-113669] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:52:29.137 [DEBUG] [Thread-113671 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:52:44.190 [DEBUG] [Thread-113672 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:52:49.447 [DEBUG] [Thread-113673 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:52:51.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:52:51.083 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:52:51.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:52:51.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 52, 42), 37.84, 6.75, 0.0, 21.95, 21.61, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:52:51.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:52:42
2025-11-03T09:52:51.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:52:52.109 [DEBUG] [Thread-113674] [transport.py] [_log()] starting thread (client mode): 0xed413c0
2025-11-03T09:52:52.109 [DEBUG] [Thread-113674] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:52:52.128 [DEBUG] [Thread-113674] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:52:52.128 [INFO] [Thread-113674] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:52:52.131 [DEBUG] [Thread-113674] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:52:52.132 [DEBUG] [Thread-113674] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:52:52.132 [DEBUG] [Thread-113674] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:52:52.132 [DEBUG] [Thread-113674] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:52:52.132 [DEBUG] [Thread-113674] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:52:52.132 [DEBUG] [Thread-113674] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:52:52.132 [DEBUG] [Thread-113674] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:52:52.132 [DEBUG] [Thread-113674] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:52:52.132 [DEBUG] [Thread-113674] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:52:52.132 [DEBUG] [Thread-113674] [transport.py] [_log()] client lang: <none>
2025-11-03T09:52:52.132 [DEBUG] [Thread-113674] [transport.py] [_log()] server lang: <none>
2025-11-03T09:52:52.132 [DEBUG] [Thread-113674] [transport.py] [_log()] kex follows: False
2025-11-03T09:52:52.132 [DEBUG] [Thread-113674] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:52:52.132 [DEBUG] [Thread-113674] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:52:52.132 [DEBUG] [Thread-113674] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:52:52.132 [DEBUG] [Thread-113674] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:52:52.132 [DEBUG] [Thread-113674] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:52:52.132 [DEBUG] [Thread-113674] [transport.py] [_log()] Compression: none
2025-11-03T09:52:52.132 [DEBUG] [Thread-113674] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:52:52.145 [DEBUG] [Thread-113674] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:52:52.145 [DEBUG] [Thread-113674] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:52:52.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:52:52.146 [DEBUG] [Thread-113674] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:52:52.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:52:52.147 [DEBUG] [Thread-113674] [transport.py] [_log()] userauth is OK
2025-11-03T09:52:52.147 [DEBUG] [Thread-113674] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:52:52.147 [DEBUG] [Thread-113674] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:52:52.147 [DEBUG] [Thread-113674] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:52:52.147 [DEBUG] [Thread-113674] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:52:52.163 [INFO] [Thread-113674] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:52:52.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:52:52.789 [DEBUG] [Thread-113674] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:52:52.789 [DEBUG] [Thread-113674] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:52:52.789 [DEBUG] [Thread-113674] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:52:52.829 [DEBUG] [Thread-113674] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:52:52.830 [DEBUG] [Thread-113674] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:52:52.832 [DEBUG] [Thread-113674] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:52:52.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:52:52.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:52:52.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:52:52.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:52:52.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:52:52.849 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:52:52.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:52:52.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:52:52.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:52:52.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.327871 -999.00  +21.10  12.59     12   -9.00 1 1 1 1 1   888    0 32.49 97.47 ----- 13.9 12.6 320.2 27.2 27.1 -29.8 26.1 -29.5 24.8 -28.9 25.6 -28.9
2025-11-03T09:52:52.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:52:52.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:52:52.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.327871
2025-11-03T09:52:52.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:52:52.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:52:52.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:52:52.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:52:52.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:52:52.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:52:42', tmtdew=37.84, humidity=6.75, cloud=0.0, wind=21.95, temperature=21.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:52:08.054', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:52:52.851 [DEBUG] [Thread-113674] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:52:52.924 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:52:52.936 [DEBUG] [Thread-113677] [transport.py] [_log()] starting thread (client mode): 0xed5fb80
2025-11-03T09:52:52.936 [DEBUG] [Thread-113677] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:52:52.950 [DEBUG] [Thread-113677] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:52:52.950 [INFO] [Thread-113677] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:52:52.958 [DEBUG] [Thread-113677] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:52:52.958 [DEBUG] [Thread-113677] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:52:52.958 [DEBUG] [Thread-113677] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:52:52.958 [DEBUG] [Thread-113677] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:52:52.958 [DEBUG] [Thread-113677] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:52:52.958 [DEBUG] [Thread-113677] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:52:52.958 [DEBUG] [Thread-113677] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:52:52.958 [DEBUG] [Thread-113677] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:52:52.958 [DEBUG] [Thread-113677] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:52:52.958 [DEBUG] [Thread-113677] [transport.py] [_log()] client lang: <none>
2025-11-03T09:52:52.958 [DEBUG] [Thread-113677] [transport.py] [_log()] server lang: <none>
2025-11-03T09:52:52.958 [DEBUG] [Thread-113677] [transport.py] [_log()] kex follows: False
2025-11-03T09:52:52.958 [DEBUG] [Thread-113677] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:52:52.958 [DEBUG] [Thread-113677] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:52:52.958 [DEBUG] [Thread-113677] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:52:52.958 [DEBUG] [Thread-113677] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:52:52.958 [DEBUG] [Thread-113677] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:52:52.958 [DEBUG] [Thread-113677] [transport.py] [_log()] Compression: none
2025-11-03T09:52:52.959 [DEBUG] [Thread-113677] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:52:53.017 [DEBUG] [Thread-113677] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:52:53.017 [DEBUG] [Thread-113677] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:52:53.017 [DEBUG] [Thread-113677] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:52:53.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:52:53.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:52:53.077 [DEBUG] [Thread-113677] [transport.py] [_log()] userauth is OK
2025-11-03T09:52:53.077 [DEBUG] [Thread-113677] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:52:53.077 [DEBUG] [Thread-113677] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:52:53.077 [DEBUG] [Thread-113677] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:52:53.077 [DEBUG] [Thread-113677] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:52:53.091 [INFO] [Thread-113677] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:52:53.091 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:52:53.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:52:53.980 [DEBUG] [Thread-113677] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:52:53.980 [DEBUG] [Thread-113677] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:52:54.028 [DEBUG] [Thread-113677] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:52:54.028 [DEBUG] [Thread-113677] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:52:54.037 [DEBUG] [Thread-113677] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:52:54.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:52:54.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:52:54.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:52:54.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:52:54.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:52:54.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:52:54.069 [DEBUG] [Thread-113677] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:52:59.221 [DEBUG] [Thread-113679 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:53:14.276 [DEBUG] [Thread-113680 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:53:18.330 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:53:18.332 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:53:24.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:53:24.079 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:53:24.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:53:24.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 53, 14), 37.73, 6.81, 0.0, 22.74, 21.64, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:53:24.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:53:14
2025-11-03T09:53:24.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:53:25.107 [DEBUG] [Thread-113681] [transport.py] [_log()] starting thread (client mode): 0xed5f6a0
2025-11-03T09:53:25.107 [DEBUG] [Thread-113681] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:53:25.127 [DEBUG] [Thread-113681] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:53:25.127 [INFO] [Thread-113681] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:53:25.130 [DEBUG] [Thread-113681] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:53:25.130 [DEBUG] [Thread-113681] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:53:25.130 [DEBUG] [Thread-113681] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:53:25.130 [DEBUG] [Thread-113681] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:53:25.130 [DEBUG] [Thread-113681] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:53:25.130 [DEBUG] [Thread-113681] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:53:25.130 [DEBUG] [Thread-113681] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:53:25.130 [DEBUG] [Thread-113681] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:53:25.130 [DEBUG] [Thread-113681] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:53:25.130 [DEBUG] [Thread-113681] [transport.py] [_log()] client lang: <none>
2025-11-03T09:53:25.130 [DEBUG] [Thread-113681] [transport.py] [_log()] server lang: <none>
2025-11-03T09:53:25.130 [DEBUG] [Thread-113681] [transport.py] [_log()] kex follows: False
2025-11-03T09:53:25.130 [DEBUG] [Thread-113681] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:53:25.130 [DEBUG] [Thread-113681] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:53:25.130 [DEBUG] [Thread-113681] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:53:25.130 [DEBUG] [Thread-113681] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:53:25.130 [DEBUG] [Thread-113681] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:53:25.130 [DEBUG] [Thread-113681] [transport.py] [_log()] Compression: none
2025-11-03T09:53:25.130 [DEBUG] [Thread-113681] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:53:25.145 [DEBUG] [Thread-113681] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:53:25.145 [DEBUG] [Thread-113681] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:53:25.145 [DEBUG] [Thread-113681] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:53:25.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:53:25.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:53:25.146 [DEBUG] [Thread-113681] [transport.py] [_log()] userauth is OK
2025-11-03T09:53:25.146 [DEBUG] [Thread-113681] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:53:25.146 [DEBUG] [Thread-113681] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:53:25.146 [DEBUG] [Thread-113681] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:53:25.146 [DEBUG] [Thread-113681] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:53:25.156 [INFO] [Thread-113681] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:53:25.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:53:25.775 [DEBUG] [Thread-113681] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:53:25.775 [DEBUG] [Thread-113681] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:53:25.775 [DEBUG] [Thread-113681] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:53:25.816 [DEBUG] [Thread-113681] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:53:25.816 [DEBUG] [Thread-113681] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:53:25.820 [DEBUG] [Thread-113681] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:53:25.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:53:25.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:53:25.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:53:25.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:53:25.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:53:25.845 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:53:25.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:53:25.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:53:25.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:53:25.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.328218 -999.00  +21.40  13.15     12   -8.60 1 1 1 1 1   888    0 32.57 112.54 ----- 18.7 13.2 8.4 24.5 27.3 -28.8 26.3 -27.6 24.9 -28.3 25.4 -28.5
2025-11-03T09:53:25.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:53:25.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:53:25.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.328218
2025-11-03T09:53:25.853 [DEBUG] [Thread-113681] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:53:25.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:53:25.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:53:25.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:53:25.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:53:25.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:53:25.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:53:14', tmtdew=37.73, humidity=6.81, cloud=0.0, wind=22.74, temperature=21.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:52:38.035', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:53:25.939 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:53:25.952 [DEBUG] [Thread-113684] [transport.py] [_log()] starting thread (client mode): 0xed06c80
2025-11-03T09:53:25.952 [DEBUG] [Thread-113684] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:53:25.966 [DEBUG] [Thread-113684] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:53:25.966 [INFO] [Thread-113684] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:53:25.974 [DEBUG] [Thread-113684] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:53:25.974 [DEBUG] [Thread-113684] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:53:25.974 [DEBUG] [Thread-113684] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:53:25.974 [DEBUG] [Thread-113684] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:53:25.974 [DEBUG] [Thread-113684] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:53:25.975 [DEBUG] [Thread-113684] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:53:25.975 [DEBUG] [Thread-113684] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:53:25.975 [DEBUG] [Thread-113684] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:53:25.975 [DEBUG] [Thread-113684] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:53:25.975 [DEBUG] [Thread-113684] [transport.py] [_log()] client lang: <none>
2025-11-03T09:53:25.975 [DEBUG] [Thread-113684] [transport.py] [_log()] server lang: <none>
2025-11-03T09:53:25.975 [DEBUG] [Thread-113684] [transport.py] [_log()] kex follows: False
2025-11-03T09:53:25.975 [DEBUG] [Thread-113684] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:53:25.976 [DEBUG] [Thread-113684] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:53:25.976 [DEBUG] [Thread-113684] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:53:25.976 [DEBUG] [Thread-113684] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:53:25.976 [DEBUG] [Thread-113684] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:53:25.976 [DEBUG] [Thread-113684] [transport.py] [_log()] Compression: none
2025-11-03T09:53:25.976 [DEBUG] [Thread-113684] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:53:26.038 [DEBUG] [Thread-113684] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:53:26.039 [DEBUG] [Thread-113684] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:53:26.039 [DEBUG] [Thread-113684] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:53:26.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:53:26.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:53:26.102 [DEBUG] [Thread-113684] [transport.py] [_log()] userauth is OK
2025-11-03T09:53:26.102 [DEBUG] [Thread-113684] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:53:26.102 [DEBUG] [Thread-113684] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:53:26.102 [DEBUG] [Thread-113684] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:53:26.102 [DEBUG] [Thread-113684] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:53:26.121 [INFO] [Thread-113684] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:53:26.122 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:53:26.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:53:27.005 [DEBUG] [Thread-113684] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:53:27.005 [DEBUG] [Thread-113684] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:53:27.053 [DEBUG] [Thread-113684] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:53:27.053 [DEBUG] [Thread-113684] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:53:27.062 [DEBUG] [Thread-113684] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:53:27.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:53:27.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:53:27.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:53:27.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:53:27.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:53:27.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:53:27.099 [DEBUG] [Thread-113684] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:53:29.309 [DEBUG] [Thread-113686 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:53:44.359 [DEBUG] [Thread-113687 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:53:49.479 [DEBUG] [Thread-113688 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:53:57.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:53:57.117 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:53:57.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:53:57.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 53, 46), 37.62, 6.78, 0.0, 26.55, 21.63, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:53:57.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:53:46
2025-11-03T09:53:57.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:53:58.111 [DEBUG] [Thread-113689] [transport.py] [_log()] starting thread (client mode): 0xed5f880
2025-11-03T09:53:58.111 [DEBUG] [Thread-113689] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:53:58.131 [DEBUG] [Thread-113689] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:53:58.131 [INFO] [Thread-113689] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:53:58.134 [DEBUG] [Thread-113689] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:53:58.135 [DEBUG] [Thread-113689] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:53:58.135 [DEBUG] [Thread-113689] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:53:58.135 [DEBUG] [Thread-113689] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:53:58.135 [DEBUG] [Thread-113689] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:53:58.135 [DEBUG] [Thread-113689] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:53:58.135 [DEBUG] [Thread-113689] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:53:58.135 [DEBUG] [Thread-113689] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:53:58.135 [DEBUG] [Thread-113689] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:53:58.135 [DEBUG] [Thread-113689] [transport.py] [_log()] client lang: <none>
2025-11-03T09:53:58.135 [DEBUG] [Thread-113689] [transport.py] [_log()] server lang: <none>
2025-11-03T09:53:58.135 [DEBUG] [Thread-113689] [transport.py] [_log()] kex follows: False
2025-11-03T09:53:58.135 [DEBUG] [Thread-113689] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:53:58.135 [DEBUG] [Thread-113689] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:53:58.136 [DEBUG] [Thread-113689] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:53:58.136 [DEBUG] [Thread-113689] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:53:58.136 [DEBUG] [Thread-113689] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:53:58.136 [DEBUG] [Thread-113689] [transport.py] [_log()] Compression: none
2025-11-03T09:53:58.136 [DEBUG] [Thread-113689] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:53:58.155 [DEBUG] [Thread-113689] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:53:58.156 [DEBUG] [Thread-113689] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:53:58.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:53:58.157 [DEBUG] [Thread-113689] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:53:58.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:53:58.201 [DEBUG] [Thread-113689] [transport.py] [_log()] userauth is OK
2025-11-03T09:53:58.201 [DEBUG] [Thread-113689] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:53:58.201 [DEBUG] [Thread-113689] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:53:58.201 [DEBUG] [Thread-113689] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:53:58.202 [DEBUG] [Thread-113689] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:53:58.222 [INFO] [Thread-113689] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:53:58.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:53:58.866 [DEBUG] [Thread-113689] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:53:58.867 [DEBUG] [Thread-113689] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:53:58.867 [DEBUG] [Thread-113689] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:53:58.908 [DEBUG] [Thread-113689] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:53:58.908 [DEBUG] [Thread-113689] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:53:58.912 [DEBUG] [Thread-113689] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:53:58.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:53:58.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:53:58.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:53:58.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:53:58.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:53:58.937 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:53:58.937 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:53:58.937 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:53:58.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:53:58.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.328566 -999.00  +21.30   8.20     12   -9.00 1 1 1 1 1   888    0 33.31 118.91 ----- 16.7 8.2 338.4 28.4 27.2 -30.8 26.1 -27.9 24.8 -28.3 25.6 -29.6
2025-11-03T09:53:58.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:53:58.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:53:58.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.328566
2025-11-03T09:53:58.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:53:58.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:53:58.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:53:58.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:53:58.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:53:58.940 [DEBUG] [Thread-113689] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:53:58.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:53:46', tmtdew=37.62, humidity=6.78, cloud=0.0, wind=26.55, temperature=21.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:53:08.102', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:53:59.023 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:53:59.035 [DEBUG] [Thread-113692] [transport.py] [_log()] starting thread (client mode): 0xed41e40
2025-11-03T09:53:59.035 [DEBUG] [Thread-113692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:53:59.054 [DEBUG] [Thread-113692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:53:59.054 [INFO] [Thread-113692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:53:59.062 [DEBUG] [Thread-113692] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:53:59.062 [DEBUG] [Thread-113692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:53:59.062 [DEBUG] [Thread-113692] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:53:59.062 [DEBUG] [Thread-113692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:53:59.062 [DEBUG] [Thread-113692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:53:59.062 [DEBUG] [Thread-113692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:53:59.062 [DEBUG] [Thread-113692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:53:59.063 [DEBUG] [Thread-113692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:53:59.063 [DEBUG] [Thread-113692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:53:59.063 [DEBUG] [Thread-113692] [transport.py] [_log()] client lang: <none>
2025-11-03T09:53:59.063 [DEBUG] [Thread-113692] [transport.py] [_log()] server lang: <none>
2025-11-03T09:53:59.063 [DEBUG] [Thread-113692] [transport.py] [_log()] kex follows: False
2025-11-03T09:53:59.063 [DEBUG] [Thread-113692] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:53:59.063 [DEBUG] [Thread-113692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:53:59.063 [DEBUG] [Thread-113692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:53:59.063 [DEBUG] [Thread-113692] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:53:59.063 [DEBUG] [Thread-113692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:53:59.063 [DEBUG] [Thread-113692] [transport.py] [_log()] Compression: none
2025-11-03T09:53:59.063 [DEBUG] [Thread-113692] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:53:59.122 [DEBUG] [Thread-113692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:53:59.123 [DEBUG] [Thread-113692] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:53:59.123 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:53:59.124 [DEBUG] [Thread-113692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:53:59.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:53:59.181 [DEBUG] [Thread-113692] [transport.py] [_log()] userauth is OK
2025-11-03T09:53:59.181 [DEBUG] [Thread-113692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:53:59.182 [DEBUG] [Thread-113692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:53:59.182 [DEBUG] [Thread-113692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:53:59.182 [DEBUG] [Thread-113692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:53:59.200 [INFO] [Thread-113692] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:53:59.201 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:53:59.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:53:59.402 [DEBUG] [Thread-113694 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:54:00.042 [DEBUG] [Thread-113692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:54:00.042 [DEBUG] [Thread-113692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:54:00.089 [DEBUG] [Thread-113692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:54:00.090 [DEBUG] [Thread-113692] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:54:00.098 [DEBUG] [Thread-113692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:54:00.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:54:00.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:54:00.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:54:00.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:54:00.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:54:00.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:54:00.133 [DEBUG] [Thread-113692] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:54:14.454 [DEBUG] [Thread-113695 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:54:18.474 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:54:18.475 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:54:29.489 [DEBUG] [Thread-113696 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:54:30.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:54:30.156 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:54:30.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:54:30.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 54, 19), 37.45, 6.88, 0.0, 24.23, 21.68, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:54:30.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:54:19
2025-11-03T09:54:30.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:54:31.132 [DEBUG] [Thread-113697] [transport.py] [_log()] starting thread (client mode): 0xed40160
2025-11-03T09:54:31.132 [DEBUG] [Thread-113697] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:54:31.152 [DEBUG] [Thread-113697] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:54:31.153 [INFO] [Thread-113697] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:54:31.156 [DEBUG] [Thread-113697] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:54:31.156 [DEBUG] [Thread-113697] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:54:31.156 [DEBUG] [Thread-113697] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:54:31.157 [DEBUG] [Thread-113697] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:54:31.157 [DEBUG] [Thread-113697] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:54:31.157 [DEBUG] [Thread-113697] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:54:31.157 [DEBUG] [Thread-113697] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:54:31.157 [DEBUG] [Thread-113697] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:54:31.157 [DEBUG] [Thread-113697] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:54:31.157 [DEBUG] [Thread-113697] [transport.py] [_log()] client lang: <none>
2025-11-03T09:54:31.157 [DEBUG] [Thread-113697] [transport.py] [_log()] server lang: <none>
2025-11-03T09:54:31.157 [DEBUG] [Thread-113697] [transport.py] [_log()] kex follows: False
2025-11-03T09:54:31.157 [DEBUG] [Thread-113697] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:54:31.157 [DEBUG] [Thread-113697] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:54:31.157 [DEBUG] [Thread-113697] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:54:31.157 [DEBUG] [Thread-113697] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:54:31.157 [DEBUG] [Thread-113697] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:54:31.157 [DEBUG] [Thread-113697] [transport.py] [_log()] Compression: none
2025-11-03T09:54:31.157 [DEBUG] [Thread-113697] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:54:31.176 [DEBUG] [Thread-113697] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:54:31.176 [DEBUG] [Thread-113697] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:54:31.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:54:31.177 [DEBUG] [Thread-113697] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:54:31.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:54:31.180 [DEBUG] [Thread-113697] [transport.py] [_log()] userauth is OK
2025-11-03T09:54:31.180 [DEBUG] [Thread-113697] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:54:31.180 [DEBUG] [Thread-113697] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:54:31.180 [DEBUG] [Thread-113697] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:54:31.181 [DEBUG] [Thread-113697] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:54:31.204 [INFO] [Thread-113697] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:54:31.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:54:31.865 [DEBUG] [Thread-113697] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:54:31.865 [DEBUG] [Thread-113697] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:54:31.866 [DEBUG] [Thread-113697] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:54:31.906 [DEBUG] [Thread-113697] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:54:31.906 [DEBUG] [Thread-113697] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:54:31.910 [DEBUG] [Thread-113697] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:54:31.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:54:31.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:54:31.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:54:31.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:54:31.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:54:31.934 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:54:31.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:54:31.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:54:31.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:54:31.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.328913 -999.00  +21.40  20.52     12   -8.80 1 1 1 1 1   888    0 33.69 118.23 ----- 20.7 20.5 22.6 28.1 27.2 -29.1 26.2 -28.8 24.9 -28.1 25.5 -30.6
2025-11-03T09:54:31.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:54:31.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:54:31.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.328913
2025-11-03T09:54:31.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:54:31.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:54:31.936 [DEBUG] [Thread-113697] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:54:31.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:54:31.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:54:31.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:54:31.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:54:19', tmtdew=37.45, humidity=6.88, cloud=0.0, wind=24.23, temperature=21.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:53:38.083', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:54:32.017 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:54:32.029 [DEBUG] [Thread-113700] [transport.py] [_log()] starting thread (client mode): 0xed407c0
2025-11-03T09:54:32.029 [DEBUG] [Thread-113700] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:54:32.044 [DEBUG] [Thread-113700] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:54:32.044 [INFO] [Thread-113700] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:54:32.052 [DEBUG] [Thread-113700] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:54:32.053 [DEBUG] [Thread-113700] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:54:32.053 [DEBUG] [Thread-113700] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:54:32.053 [DEBUG] [Thread-113700] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:54:32.053 [DEBUG] [Thread-113700] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:54:32.053 [DEBUG] [Thread-113700] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:54:32.053 [DEBUG] [Thread-113700] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:54:32.053 [DEBUG] [Thread-113700] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:54:32.053 [DEBUG] [Thread-113700] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:54:32.054 [DEBUG] [Thread-113700] [transport.py] [_log()] client lang: <none>
2025-11-03T09:54:32.054 [DEBUG] [Thread-113700] [transport.py] [_log()] server lang: <none>
2025-11-03T09:54:32.054 [DEBUG] [Thread-113700] [transport.py] [_log()] kex follows: False
2025-11-03T09:54:32.054 [DEBUG] [Thread-113700] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:54:32.054 [DEBUG] [Thread-113700] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:54:32.054 [DEBUG] [Thread-113700] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:54:32.054 [DEBUG] [Thread-113700] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:54:32.055 [DEBUG] [Thread-113700] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:54:32.055 [DEBUG] [Thread-113700] [transport.py] [_log()] Compression: none
2025-11-03T09:54:32.055 [DEBUG] [Thread-113700] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:54:32.113 [DEBUG] [Thread-113700] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:54:32.114 [DEBUG] [Thread-113700] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:54:32.114 [DEBUG] [Thread-113700] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:54:32.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:54:32.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:54:32.169 [DEBUG] [Thread-113700] [transport.py] [_log()] userauth is OK
2025-11-03T09:54:32.170 [DEBUG] [Thread-113700] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:54:32.170 [DEBUG] [Thread-113700] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:54:32.170 [DEBUG] [Thread-113700] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:54:32.170 [DEBUG] [Thread-113700] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:54:32.189 [INFO] [Thread-113700] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:54:32.189 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:54:32.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:54:33.109 [DEBUG] [Thread-113700] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:54:33.110 [DEBUG] [Thread-113700] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:54:33.158 [DEBUG] [Thread-113700] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:54:33.158 [DEBUG] [Thread-113700] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:54:33.167 [DEBUG] [Thread-113700] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:54:33.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:54:33.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:54:33.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:54:33.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:54:33.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:54:33.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:54:33.204 [DEBUG] [Thread-113700] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:54:44.520 [DEBUG] [Thread-113702 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:54:49.538 [DEBUG] [Thread-113703 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:54:59.570 [DEBUG] [Thread-113704 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:55:03.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:55:03.227 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:55:03.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:55:03.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 54, 51), 38.03, 6.7, 0.0, 18.46, 22.02, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:55:03.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:54:51
2025-11-03T09:55:04.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:55:04.190 [DEBUG] [Thread-113705] [transport.py] [_log()] starting thread (client mode): 0xed37fd0
2025-11-03T09:55:04.191 [DEBUG] [Thread-113705] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:55:04.211 [DEBUG] [Thread-113705] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:55:04.212 [INFO] [Thread-113705] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:55:04.215 [DEBUG] [Thread-113705] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:55:04.215 [DEBUG] [Thread-113705] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:55:04.215 [DEBUG] [Thread-113705] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:55:04.215 [DEBUG] [Thread-113705] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:55:04.215 [DEBUG] [Thread-113705] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:55:04.215 [DEBUG] [Thread-113705] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:55:04.215 [DEBUG] [Thread-113705] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:55:04.215 [DEBUG] [Thread-113705] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:55:04.215 [DEBUG] [Thread-113705] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:55:04.215 [DEBUG] [Thread-113705] [transport.py] [_log()] client lang: <none>
2025-11-03T09:55:04.215 [DEBUG] [Thread-113705] [transport.py] [_log()] server lang: <none>
2025-11-03T09:55:04.215 [DEBUG] [Thread-113705] [transport.py] [_log()] kex follows: False
2025-11-03T09:55:04.215 [DEBUG] [Thread-113705] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:55:04.215 [DEBUG] [Thread-113705] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:55:04.215 [DEBUG] [Thread-113705] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:55:04.215 [DEBUG] [Thread-113705] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:55:04.215 [DEBUG] [Thread-113705] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:55:04.215 [DEBUG] [Thread-113705] [transport.py] [_log()] Compression: none
2025-11-03T09:55:04.215 [DEBUG] [Thread-113705] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:55:04.233 [DEBUG] [Thread-113705] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:55:04.234 [DEBUG] [Thread-113705] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:55:04.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:55:04.235 [DEBUG] [Thread-113705] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:55:04.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:55:04.236 [DEBUG] [Thread-113705] [transport.py] [_log()] userauth is OK
2025-11-03T09:55:04.236 [DEBUG] [Thread-113705] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:55:04.237 [DEBUG] [Thread-113705] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:55:04.237 [DEBUG] [Thread-113705] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:55:04.237 [DEBUG] [Thread-113705] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:55:04.251 [INFO] [Thread-113705] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:55:04.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:55:08.006 [DEBUG] [Thread-113705] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:55:08.006 [DEBUG] [Thread-113705] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:55:08.006 [DEBUG] [Thread-113705] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:55:08.047 [DEBUG] [Thread-113705] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:55:08.047 [DEBUG] [Thread-113705] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:55:08.050 [DEBUG] [Thread-113705] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:55:08.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:55:08.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:55:08.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:55:08.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:55:08.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:55:08.129 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:55:08.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:55:08.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:55:08.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:55:08.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.329607 -999.00  +21.70  17.90     12   -8.90 1 1 1 1 1   888    0 32.65 103.81 ----- 27.4 17.9 348.2 25.9 27.3 -29.1 26.3 -29.0 25.0 -28.3 25.6 -30.5
2025-11-03T09:55:08.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:55:08.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:55:08.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.329607
2025-11-03T09:55:08.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:55:08.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:55:08.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:55:08.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:55:08.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:55:08.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:54:51', tmtdew=38.03, humidity=6.7, cloud=0.0, wind=18.46, temperature=22.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:54:38.045', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:55:08.132 [DEBUG] [Thread-113705] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:55:08.224 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:55:08.237 [DEBUG] [Thread-113708] [transport.py] [_log()] starting thread (client mode): 0xedb07f0
2025-11-03T09:55:08.237 [DEBUG] [Thread-113708] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:55:08.252 [DEBUG] [Thread-113708] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:55:08.252 [INFO] [Thread-113708] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:55:08.259 [DEBUG] [Thread-113708] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:55:08.260 [DEBUG] [Thread-113708] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:55:08.260 [DEBUG] [Thread-113708] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:55:08.260 [DEBUG] [Thread-113708] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:55:08.260 [DEBUG] [Thread-113708] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:55:08.260 [DEBUG] [Thread-113708] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:55:08.260 [DEBUG] [Thread-113708] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:55:08.260 [DEBUG] [Thread-113708] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:55:08.260 [DEBUG] [Thread-113708] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:55:08.260 [DEBUG] [Thread-113708] [transport.py] [_log()] client lang: <none>
2025-11-03T09:55:08.260 [DEBUG] [Thread-113708] [transport.py] [_log()] server lang: <none>
2025-11-03T09:55:08.260 [DEBUG] [Thread-113708] [transport.py] [_log()] kex follows: False
2025-11-03T09:55:08.260 [DEBUG] [Thread-113708] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:55:08.260 [DEBUG] [Thread-113708] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:55:08.260 [DEBUG] [Thread-113708] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:55:08.260 [DEBUG] [Thread-113708] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:55:08.260 [DEBUG] [Thread-113708] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:55:08.260 [DEBUG] [Thread-113708] [transport.py] [_log()] Compression: none
2025-11-03T09:55:08.260 [DEBUG] [Thread-113708] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:55:08.317 [DEBUG] [Thread-113708] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:55:08.317 [DEBUG] [Thread-113708] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:55:08.318 [DEBUG] [Thread-113708] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:55:08.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:55:08.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:55:08.373 [DEBUG] [Thread-113708] [transport.py] [_log()] userauth is OK
2025-11-03T09:55:08.373 [DEBUG] [Thread-113708] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:55:08.373 [DEBUG] [Thread-113708] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:55:08.373 [DEBUG] [Thread-113708] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:55:08.373 [DEBUG] [Thread-113708] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:55:08.393 [INFO] [Thread-113708] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:55:08.393 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:55:08.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:55:09.294 [DEBUG] [Thread-113708] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:55:09.294 [DEBUG] [Thread-113708] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:55:09.341 [DEBUG] [Thread-113708] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:55:09.341 [DEBUG] [Thread-113708] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:55:09.349 [DEBUG] [Thread-113708] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:55:09.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:55:09.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:55:09.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:55:09.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:55:09.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:55:09.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:55:09.382 [DEBUG] [Thread-113708] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:55:14.607 [DEBUG] [Thread-113710 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:55:18.615 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:55:18.616 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:55:29.653 [DEBUG] [Thread-113711 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:55:39.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:55:39.404 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:55:39.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:55:40.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 55, 23), 38.03, 6.68, 0.0, 18.14, 21.94, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:55:40.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:55:23
2025-11-03T09:55:40.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:55:40.328 [DEBUG] [Thread-113712] [transport.py] [_log()] starting thread (client mode): 0x117bc250
2025-11-03T09:55:40.329 [DEBUG] [Thread-113712] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:55:40.348 [DEBUG] [Thread-113712] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:55:40.349 [INFO] [Thread-113712] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:55:40.350 [DEBUG] [Thread-113712] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:55:40.350 [DEBUG] [Thread-113712] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:55:40.350 [DEBUG] [Thread-113712] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:55:40.350 [DEBUG] [Thread-113712] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:55:40.350 [DEBUG] [Thread-113712] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:55:40.350 [DEBUG] [Thread-113712] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:55:40.350 [DEBUG] [Thread-113712] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:55:40.350 [DEBUG] [Thread-113712] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:55:40.351 [DEBUG] [Thread-113712] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:55:40.351 [DEBUG] [Thread-113712] [transport.py] [_log()] client lang: <none>
2025-11-03T09:55:40.351 [DEBUG] [Thread-113712] [transport.py] [_log()] server lang: <none>
2025-11-03T09:55:40.351 [DEBUG] [Thread-113712] [transport.py] [_log()] kex follows: False
2025-11-03T09:55:40.351 [DEBUG] [Thread-113712] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:55:40.351 [DEBUG] [Thread-113712] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:55:40.351 [DEBUG] [Thread-113712] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:55:40.351 [DEBUG] [Thread-113712] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:55:40.351 [DEBUG] [Thread-113712] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:55:40.351 [DEBUG] [Thread-113712] [transport.py] [_log()] Compression: none
2025-11-03T09:55:40.351 [DEBUG] [Thread-113712] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:55:40.371 [DEBUG] [Thread-113712] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:55:40.371 [DEBUG] [Thread-113712] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:55:40.372 [DEBUG] [Thread-113712] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:55:40.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:55:40.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:55:40.374 [DEBUG] [Thread-113712] [transport.py] [_log()] userauth is OK
2025-11-03T09:55:40.374 [DEBUG] [Thread-113712] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:55:40.374 [DEBUG] [Thread-113712] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:55:40.375 [DEBUG] [Thread-113712] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:55:40.375 [DEBUG] [Thread-113712] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:55:40.398 [INFO] [Thread-113712] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:55:40.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:55:41.168 [DEBUG] [Thread-113712] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:55:41.177 [DEBUG] [Thread-113712] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:55:41.177 [DEBUG] [Thread-113712] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:55:41.210 [DEBUG] [Thread-113712] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:55:41.210 [DEBUG] [Thread-113712] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:55:41.211 [DEBUG] [Thread-113712] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:55:41.220 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:55:41.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:55:41.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:55:41.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:55:41.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:55:41.226 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:55:41.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:55:41.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:55:41.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:55:41.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.329954 -999.00  +21.50  19.09     12   -8.80 1 1 1 1 1   888    0 32.11 96.67 ----- 20.1 19.1 25.2 27.4 27.3 -29.9 26.2 -28.3 25.0 -27.9 25.7 -28.2
2025-11-03T09:55:41.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:55:41.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:55:41.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.329954
2025-11-03T09:55:41.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:55:41.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:55:41.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:55:41.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:55:41.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:55:41.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:55:23', tmtdew=38.03, humidity=6.68, cloud=0.0, wind=18.14, temperature=21.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:55:08.026', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:55:41.228 [DEBUG] [Thread-113712] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:55:41.299 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:55:41.310 [DEBUG] [Thread-113715] [transport.py] [_log()] starting thread (client mode): 0xed407f0
2025-11-03T09:55:41.310 [DEBUG] [Thread-113715] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:55:41.325 [DEBUG] [Thread-113715] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:55:41.325 [INFO] [Thread-113715] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:55:41.333 [DEBUG] [Thread-113715] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:55:41.333 [DEBUG] [Thread-113715] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:55:41.333 [DEBUG] [Thread-113715] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:55:41.333 [DEBUG] [Thread-113715] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:55:41.333 [DEBUG] [Thread-113715] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:55:41.333 [DEBUG] [Thread-113715] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:55:41.333 [DEBUG] [Thread-113715] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:55:41.333 [DEBUG] [Thread-113715] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:55:41.333 [DEBUG] [Thread-113715] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:55:41.333 [DEBUG] [Thread-113715] [transport.py] [_log()] client lang: <none>
2025-11-03T09:55:41.333 [DEBUG] [Thread-113715] [transport.py] [_log()] server lang: <none>
2025-11-03T09:55:41.333 [DEBUG] [Thread-113715] [transport.py] [_log()] kex follows: False
2025-11-03T09:55:41.333 [DEBUG] [Thread-113715] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:55:41.333 [DEBUG] [Thread-113715] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:55:41.333 [DEBUG] [Thread-113715] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:55:41.333 [DEBUG] [Thread-113715] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:55:41.333 [DEBUG] [Thread-113715] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:55:41.333 [DEBUG] [Thread-113715] [transport.py] [_log()] Compression: none
2025-11-03T09:55:41.333 [DEBUG] [Thread-113715] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:55:41.393 [DEBUG] [Thread-113715] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:55:41.394 [DEBUG] [Thread-113715] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:55:41.394 [DEBUG] [Thread-113715] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:55:41.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:55:41.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:55:41.452 [DEBUG] [Thread-113715] [transport.py] [_log()] userauth is OK
2025-11-03T09:55:41.452 [DEBUG] [Thread-113715] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:55:41.452 [DEBUG] [Thread-113715] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:55:41.452 [DEBUG] [Thread-113715] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:55:41.452 [DEBUG] [Thread-113715] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:55:41.466 [INFO] [Thread-113715] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:55:41.466 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:55:41.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:55:42.321 [DEBUG] [Thread-113715] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:55:42.321 [DEBUG] [Thread-113715] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:55:42.369 [DEBUG] [Thread-113715] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:55:42.369 [DEBUG] [Thread-113715] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:55:42.387 [DEBUG] [Thread-113715] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:55:42.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:55:42.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:55:42.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:55:42.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:55:42.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:55:42.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:55:42.425 [DEBUG] [Thread-113715] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:55:44.683 [DEBUG] [Thread-113717 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:55:49.606 [DEBUG] [Thread-113718 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:55:59.724 [DEBUG] [Thread-113719 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:56:12.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:56:12.447 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:56:12.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:56:13.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 55, 56), 38.08, 6.66, 0.0, 16.41, 21.87, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:56:13.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:55:56
2025-11-03T09:56:13.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:56:13.414 [DEBUG] [Thread-113720] [transport.py] [_log()] starting thread (client mode): 0xed36770
2025-11-03T09:56:13.414 [DEBUG] [Thread-113720] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:56:13.428 [DEBUG] [Thread-113720] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:56:13.428 [INFO] [Thread-113720] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:56:13.431 [DEBUG] [Thread-113720] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:56:13.431 [DEBUG] [Thread-113720] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:56:13.431 [DEBUG] [Thread-113720] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:56:13.431 [DEBUG] [Thread-113720] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:56:13.431 [DEBUG] [Thread-113720] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:56:13.431 [DEBUG] [Thread-113720] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:56:13.431 [DEBUG] [Thread-113720] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:56:13.431 [DEBUG] [Thread-113720] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:56:13.431 [DEBUG] [Thread-113720] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:56:13.431 [DEBUG] [Thread-113720] [transport.py] [_log()] client lang: <none>
2025-11-03T09:56:13.431 [DEBUG] [Thread-113720] [transport.py] [_log()] server lang: <none>
2025-11-03T09:56:13.431 [DEBUG] [Thread-113720] [transport.py] [_log()] kex follows: False
2025-11-03T09:56:13.432 [DEBUG] [Thread-113720] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:56:13.432 [DEBUG] [Thread-113720] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:56:13.432 [DEBUG] [Thread-113720] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:56:13.432 [DEBUG] [Thread-113720] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:56:13.432 [DEBUG] [Thread-113720] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:56:13.432 [DEBUG] [Thread-113720] [transport.py] [_log()] Compression: none
2025-11-03T09:56:13.432 [DEBUG] [Thread-113720] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:56:13.447 [DEBUG] [Thread-113720] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:56:13.447 [DEBUG] [Thread-113720] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:56:13.449 [DEBUG] [Thread-113720] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:56:13.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:56:13.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:56:13.451 [DEBUG] [Thread-113720] [transport.py] [_log()] userauth is OK
2025-11-03T09:56:13.451 [DEBUG] [Thread-113720] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:56:13.451 [DEBUG] [Thread-113720] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:56:13.451 [DEBUG] [Thread-113720] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:56:13.451 [DEBUG] [Thread-113720] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:56:13.471 [INFO] [Thread-113720] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:56:13.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:56:14.125 [DEBUG] [Thread-113720] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:56:14.126 [DEBUG] [Thread-113720] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:56:14.126 [DEBUG] [Thread-113720] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:56:14.167 [DEBUG] [Thread-113720] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:56:14.167 [DEBUG] [Thread-113720] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:56:14.169 [DEBUG] [Thread-113720] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:56:14.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:56:14.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:56:14.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:56:14.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:56:14.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:56:14.189 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:56:14.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:56:14.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:56:14.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:56:14.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.330302 -999.00  +21.10  26.11     12   -9.30 1 1 1 1 1   888    0 32.27 84.95 ----- 22.6 26.1 40.4 27.4 27.2 -30.5 26.2 -29.5 24.8 -30.2 25.7 -28.6
2025-11-03T09:56:14.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:56:14.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:56:14.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.330302
2025-11-03T09:56:14.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:56:14.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:56:14.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:56:14.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:56:14.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:56:14.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:55:56', tmtdew=38.08, humidity=6.66, cloud=0.0, wind=16.41, temperature=21.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:55:38.093', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:56:14.191 [DEBUG] [Thread-113720] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:56:14.262 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:56:14.275 [DEBUG] [Thread-113723] [transport.py] [_log()] starting thread (client mode): 0x1179b430
2025-11-03T09:56:14.275 [DEBUG] [Thread-113723] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:56:14.293 [DEBUG] [Thread-113723] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:56:14.293 [INFO] [Thread-113723] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:56:14.300 [DEBUG] [Thread-113723] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:56:14.300 [DEBUG] [Thread-113723] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:56:14.300 [DEBUG] [Thread-113723] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:56:14.300 [DEBUG] [Thread-113723] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:56:14.300 [DEBUG] [Thread-113723] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:56:14.300 [DEBUG] [Thread-113723] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:56:14.300 [DEBUG] [Thread-113723] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:56:14.301 [DEBUG] [Thread-113723] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:56:14.301 [DEBUG] [Thread-113723] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:56:14.301 [DEBUG] [Thread-113723] [transport.py] [_log()] client lang: <none>
2025-11-03T09:56:14.301 [DEBUG] [Thread-113723] [transport.py] [_log()] server lang: <none>
2025-11-03T09:56:14.301 [DEBUG] [Thread-113723] [transport.py] [_log()] kex follows: False
2025-11-03T09:56:14.301 [DEBUG] [Thread-113723] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:56:14.301 [DEBUG] [Thread-113723] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:56:14.301 [DEBUG] [Thread-113723] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:56:14.301 [DEBUG] [Thread-113723] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:56:14.301 [DEBUG] [Thread-113723] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:56:14.301 [DEBUG] [Thread-113723] [transport.py] [_log()] Compression: none
2025-11-03T09:56:14.301 [DEBUG] [Thread-113723] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:56:14.358 [DEBUG] [Thread-113723] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:56:14.358 [DEBUG] [Thread-113723] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:56:14.358 [DEBUG] [Thread-113723] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:56:14.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:56:14.359 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:56:14.415 [DEBUG] [Thread-113723] [transport.py] [_log()] userauth is OK
2025-11-03T09:56:14.415 [DEBUG] [Thread-113723] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:56:14.415 [DEBUG] [Thread-113723] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:56:14.415 [DEBUG] [Thread-113723] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:56:14.415 [DEBUG] [Thread-113723] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:56:14.438 [INFO] [Thread-113723] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:56:14.438 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:56:14.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:56:14.768 [DEBUG] [Thread-113725 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:56:15.276 [DEBUG] [Thread-113723] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:56:15.276 [DEBUG] [Thread-113723] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:56:15.324 [DEBUG] [Thread-113723] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:56:15.324 [DEBUG] [Thread-113723] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:56:15.333 [DEBUG] [Thread-113723] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:56:15.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:56:15.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:56:15.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:56:15.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:56:15.361 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:56:15.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:56:15.371 [DEBUG] [Thread-113723] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:56:18.763 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:56:18.764 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:56:29.817 [DEBUG] [Thread-113726 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:56:44.846 [DEBUG] [Thread-113727 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:56:45.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:56:45.392 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:56:45.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:56:46.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 56, 28), 37.46, 6.98, 0.0, 19.85, 21.68, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:56:46.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:56:28
2025-11-03T09:56:46.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:56:46.352 [DEBUG] [Thread-113728] [transport.py] [_log()] starting thread (client mode): 0xed5f250
2025-11-03T09:56:46.352 [DEBUG] [Thread-113728] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:56:46.372 [DEBUG] [Thread-113728] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:56:46.373 [INFO] [Thread-113728] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:56:46.375 [DEBUG] [Thread-113728] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:56:46.376 [DEBUG] [Thread-113728] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:56:46.376 [DEBUG] [Thread-113728] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:56:46.376 [DEBUG] [Thread-113728] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:56:46.376 [DEBUG] [Thread-113728] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:56:46.376 [DEBUG] [Thread-113728] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:56:46.376 [DEBUG] [Thread-113728] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:56:46.376 [DEBUG] [Thread-113728] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:56:46.376 [DEBUG] [Thread-113728] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:56:46.376 [DEBUG] [Thread-113728] [transport.py] [_log()] client lang: <none>
2025-11-03T09:56:46.376 [DEBUG] [Thread-113728] [transport.py] [_log()] server lang: <none>
2025-11-03T09:56:46.376 [DEBUG] [Thread-113728] [transport.py] [_log()] kex follows: False
2025-11-03T09:56:46.376 [DEBUG] [Thread-113728] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:56:46.376 [DEBUG] [Thread-113728] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:56:46.376 [DEBUG] [Thread-113728] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:56:46.376 [DEBUG] [Thread-113728] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:56:46.376 [DEBUG] [Thread-113728] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:56:46.376 [DEBUG] [Thread-113728] [transport.py] [_log()] Compression: none
2025-11-03T09:56:46.376 [DEBUG] [Thread-113728] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:56:46.392 [DEBUG] [Thread-113728] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:56:46.392 [DEBUG] [Thread-113728] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:56:46.392 [DEBUG] [Thread-113728] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:56:46.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:56:46.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:56:46.393 [DEBUG] [Thread-113728] [transport.py] [_log()] userauth is OK
2025-11-03T09:56:46.393 [DEBUG] [Thread-113728] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:56:46.393 [DEBUG] [Thread-113728] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:56:46.393 [DEBUG] [Thread-113728] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:56:46.393 [DEBUG] [Thread-113728] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:56:46.403 [INFO] [Thread-113728] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:56:46.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:56:46.971 [DEBUG] [Thread-113728] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:56:46.971 [DEBUG] [Thread-113728] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:56:46.972 [DEBUG] [Thread-113728] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:56:47.012 [DEBUG] [Thread-113728] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:56:47.012 [DEBUG] [Thread-113728] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:56:47.015 [DEBUG] [Thread-113728] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:56:47.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:56:47.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:56:47.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:56:47.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:56:47.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:56:47.031 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:56:47.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:56:47.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:56:47.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:56:47.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.330649 -999.00  +20.90  18.36     12   -9.20 1 1 1 1 1   888    0 32.07 85.35 ----- 16.0 18.4 26.2 25.4 27.2 -31.3 26.1 -28.8 24.9 -28.3 25.6 -28.3
2025-11-03T09:56:47.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:56:47.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:56:47.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.330649
2025-11-03T09:56:47.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:56:47.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:56:47.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:56:47.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:56:47.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:56:47.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:56:28', tmtdew=37.46, humidity=6.98, cloud=0.0, wind=19.85, temperature=21.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:56:08.074', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:56:47.032 [DEBUG] [Thread-113728] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:56:47.106 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:56:47.117 [DEBUG] [Thread-113731] [transport.py] [_log()] starting thread (client mode): 0xed5c2e0
2025-11-03T09:56:47.117 [DEBUG] [Thread-113731] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:56:47.132 [DEBUG] [Thread-113731] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:56:47.132 [INFO] [Thread-113731] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:56:47.139 [DEBUG] [Thread-113731] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:56:47.139 [DEBUG] [Thread-113731] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:56:47.139 [DEBUG] [Thread-113731] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:56:47.139 [DEBUG] [Thread-113731] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:56:47.139 [DEBUG] [Thread-113731] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:56:47.139 [DEBUG] [Thread-113731] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:56:47.139 [DEBUG] [Thread-113731] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:56:47.139 [DEBUG] [Thread-113731] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:56:47.139 [DEBUG] [Thread-113731] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:56:47.139 [DEBUG] [Thread-113731] [transport.py] [_log()] client lang: <none>
2025-11-03T09:56:47.139 [DEBUG] [Thread-113731] [transport.py] [_log()] server lang: <none>
2025-11-03T09:56:47.139 [DEBUG] [Thread-113731] [transport.py] [_log()] kex follows: False
2025-11-03T09:56:47.139 [DEBUG] [Thread-113731] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:56:47.139 [DEBUG] [Thread-113731] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:56:47.139 [DEBUG] [Thread-113731] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:56:47.139 [DEBUG] [Thread-113731] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:56:47.139 [DEBUG] [Thread-113731] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:56:47.139 [DEBUG] [Thread-113731] [transport.py] [_log()] Compression: none
2025-11-03T09:56:47.140 [DEBUG] [Thread-113731] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:56:47.193 [DEBUG] [Thread-113731] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:56:47.193 [DEBUG] [Thread-113731] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:56:47.193 [DEBUG] [Thread-113731] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:56:47.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:56:47.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:56:47.251 [DEBUG] [Thread-113731] [transport.py] [_log()] userauth is OK
2025-11-03T09:56:47.251 [DEBUG] [Thread-113731] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:56:47.251 [DEBUG] [Thread-113731] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:56:47.251 [DEBUG] [Thread-113731] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:56:47.251 [DEBUG] [Thread-113731] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:56:47.265 [INFO] [Thread-113731] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:56:47.265 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:56:47.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:56:48.163 [DEBUG] [Thread-113731] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:56:48.163 [DEBUG] [Thread-113731] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:56:48.211 [DEBUG] [Thread-113731] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:56:48.211 [DEBUG] [Thread-113731] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:56:48.219 [DEBUG] [Thread-113731] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:56:48.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:56:48.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:56:48.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:56:48.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:56:48.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:56:48.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:56:48.251 [DEBUG] [Thread-113731] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:56:49.679 [DEBUG] [Thread-113733 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:56:59.873 [DEBUG] [Thread-113734 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:57:14.927 [DEBUG] [Thread-113735 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:57:18.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:57:18.274 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:57:18.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:57:18.905 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:57:18.906 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:57:19.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 57), 37.49, 7.04, 0.0, 17.38, 21.84, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:57:19.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:57:00
2025-11-03T09:57:19.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:57:19.332 [DEBUG] [Thread-113736] [transport.py] [_log()] starting thread (client mode): 0xed43010
2025-11-03T09:57:19.333 [DEBUG] [Thread-113736] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:57:19.353 [DEBUG] [Thread-113736] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:57:19.353 [INFO] [Thread-113736] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:57:19.356 [DEBUG] [Thread-113736] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:57:19.356 [DEBUG] [Thread-113736] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:57:19.356 [DEBUG] [Thread-113736] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:57:19.356 [DEBUG] [Thread-113736] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:57:19.365 [DEBUG] [Thread-113736] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:57:19.365 [DEBUG] [Thread-113736] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:57:19.365 [DEBUG] [Thread-113736] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:57:19.365 [DEBUG] [Thread-113736] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:57:19.365 [DEBUG] [Thread-113736] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:57:19.365 [DEBUG] [Thread-113736] [transport.py] [_log()] client lang: <none>
2025-11-03T09:57:19.365 [DEBUG] [Thread-113736] [transport.py] [_log()] server lang: <none>
2025-11-03T09:57:19.365 [DEBUG] [Thread-113736] [transport.py] [_log()] kex follows: False
2025-11-03T09:57:19.365 [DEBUG] [Thread-113736] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:57:19.365 [DEBUG] [Thread-113736] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:57:19.365 [DEBUG] [Thread-113736] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:57:19.365 [DEBUG] [Thread-113736] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:57:19.365 [DEBUG] [Thread-113736] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:57:19.365 [DEBUG] [Thread-113736] [transport.py] [_log()] Compression: none
2025-11-03T09:57:19.365 [DEBUG] [Thread-113736] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:57:19.386 [DEBUG] [Thread-113736] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:57:19.387 [DEBUG] [Thread-113736] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:57:19.387 [DEBUG] [Thread-113736] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:57:19.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:57:19.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:57:19.388 [DEBUG] [Thread-113736] [transport.py] [_log()] userauth is OK
2025-11-03T09:57:19.388 [DEBUG] [Thread-113736] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:57:19.388 [DEBUG] [Thread-113736] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:57:19.388 [DEBUG] [Thread-113736] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:57:19.388 [DEBUG] [Thread-113736] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:57:19.405 [INFO] [Thread-113736] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:57:19.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:57:20.044 [DEBUG] [Thread-113736] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:57:20.045 [DEBUG] [Thread-113736] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:57:20.045 [DEBUG] [Thread-113736] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:57:20.085 [DEBUG] [Thread-113736] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:57:20.085 [DEBUG] [Thread-113736] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:57:20.089 [DEBUG] [Thread-113736] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:57:20.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:57:20.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:57:20.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:57:20.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:57:20.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:57:20.111 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:57:20.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:57:20.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:57:20.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:57:20.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.330996 -999.00  +21.20  24.98     12   -8.60 1 1 1 1 1   888    0 31.97 80.84 ----- 24.5 25.0 45.0 28.4 27.3 -29.3 26.3 -27.7 24.9 -27.5 25.5 -29.3
2025-11-03T09:57:20.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:57:20.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:57:20.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.330996
2025-11-03T09:57:20.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:57:20.114 [DEBUG] [Thread-113736] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:57:20.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:57:20.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:57:20.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:57:20.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:57:20.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:57:00', tmtdew=37.49, humidity=7.04, cloud=0.0, wind=17.38, temperature=21.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:56:38.054', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:57:20.197 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:57:20.213 [DEBUG] [Thread-113739] [transport.py] [_log()] starting thread (client mode): 0xed37a00
2025-11-03T09:57:20.213 [DEBUG] [Thread-113739] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:57:20.228 [DEBUG] [Thread-113739] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:57:20.228 [INFO] [Thread-113739] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:57:20.236 [DEBUG] [Thread-113739] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:57:20.237 [DEBUG] [Thread-113739] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:57:20.237 [DEBUG] [Thread-113739] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:57:20.237 [DEBUG] [Thread-113739] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:57:20.237 [DEBUG] [Thread-113739] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:57:20.237 [DEBUG] [Thread-113739] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:57:20.237 [DEBUG] [Thread-113739] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:57:20.237 [DEBUG] [Thread-113739] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:57:20.237 [DEBUG] [Thread-113739] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:57:20.237 [DEBUG] [Thread-113739] [transport.py] [_log()] client lang: <none>
2025-11-03T09:57:20.238 [DEBUG] [Thread-113739] [transport.py] [_log()] server lang: <none>
2025-11-03T09:57:20.238 [DEBUG] [Thread-113739] [transport.py] [_log()] kex follows: False
2025-11-03T09:57:20.238 [DEBUG] [Thread-113739] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:57:20.238 [DEBUG] [Thread-113739] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:57:20.238 [DEBUG] [Thread-113739] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:57:20.238 [DEBUG] [Thread-113739] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:57:20.238 [DEBUG] [Thread-113739] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:57:20.238 [DEBUG] [Thread-113739] [transport.py] [_log()] Compression: none
2025-11-03T09:57:20.239 [DEBUG] [Thread-113739] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:57:20.298 [DEBUG] [Thread-113739] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:57:20.298 [DEBUG] [Thread-113739] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:57:20.298 [DEBUG] [Thread-113739] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:57:20.298 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:57:20.298 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:57:20.355 [DEBUG] [Thread-113739] [transport.py] [_log()] userauth is OK
2025-11-03T09:57:20.356 [DEBUG] [Thread-113739] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:57:20.356 [DEBUG] [Thread-113739] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:57:20.356 [DEBUG] [Thread-113739] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:57:20.356 [DEBUG] [Thread-113739] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:57:20.378 [INFO] [Thread-113739] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:57:20.378 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:57:20.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:57:21.273 [DEBUG] [Thread-113739] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:57:21.283 [DEBUG] [Thread-113739] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:57:21.322 [DEBUG] [Thread-113739] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:57:21.322 [DEBUG] [Thread-113739] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:57:21.331 [DEBUG] [Thread-113739] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:57:21.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:57:21.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:57:21.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:57:21.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:57:21.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:57:21.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:57:21.369 [DEBUG] [Thread-113739] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:57:29.966 [DEBUG] [Thread-113741 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:57:45.039 [DEBUG] [Thread-113742 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:57:49.740 [DEBUG] [Thread-113743 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:57:51.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:57:51.392 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:57:51.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:57:52.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 57, 32), 37.81, 6.88, 0.0, 18.61, 21.94, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:57:52.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:57:32
2025-11-03T09:57:52.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:57:52.371 [DEBUG] [Thread-113744] [transport.py] [_log()] starting thread (client mode): 0xed5ee60
2025-11-03T09:57:52.371 [DEBUG] [Thread-113744] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:57:52.396 [DEBUG] [Thread-113744] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:57:52.396 [INFO] [Thread-113744] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:57:52.399 [DEBUG] [Thread-113744] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:57:52.399 [DEBUG] [Thread-113744] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:57:52.399 [DEBUG] [Thread-113744] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:57:52.399 [DEBUG] [Thread-113744] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:57:52.399 [DEBUG] [Thread-113744] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:57:52.400 [DEBUG] [Thread-113744] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:57:52.400 [DEBUG] [Thread-113744] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:57:52.400 [DEBUG] [Thread-113744] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:57:52.400 [DEBUG] [Thread-113744] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:57:52.400 [DEBUG] [Thread-113744] [transport.py] [_log()] client lang: <none>
2025-11-03T09:57:52.400 [DEBUG] [Thread-113744] [transport.py] [_log()] server lang: <none>
2025-11-03T09:57:52.400 [DEBUG] [Thread-113744] [transport.py] [_log()] kex follows: False
2025-11-03T09:57:52.400 [DEBUG] [Thread-113744] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:57:52.400 [DEBUG] [Thread-113744] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:57:52.400 [DEBUG] [Thread-113744] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:57:52.400 [DEBUG] [Thread-113744] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:57:52.400 [DEBUG] [Thread-113744] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:57:52.400 [DEBUG] [Thread-113744] [transport.py] [_log()] Compression: none
2025-11-03T09:57:52.400 [DEBUG] [Thread-113744] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:57:52.414 [DEBUG] [Thread-113744] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:57:52.414 [DEBUG] [Thread-113744] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:57:52.415 [DEBUG] [Thread-113744] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:57:52.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:57:52.416 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:57:52.417 [DEBUG] [Thread-113744] [transport.py] [_log()] userauth is OK
2025-11-03T09:57:52.417 [DEBUG] [Thread-113744] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:57:52.417 [DEBUG] [Thread-113744] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:57:52.417 [DEBUG] [Thread-113744] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:57:52.417 [DEBUG] [Thread-113744] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:57:52.440 [INFO] [Thread-113744] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:57:52.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:57:53.074 [DEBUG] [Thread-113744] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:57:53.074 [DEBUG] [Thread-113744] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:57:53.075 [DEBUG] [Thread-113744] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:57:53.115 [DEBUG] [Thread-113744] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:57:53.115 [DEBUG] [Thread-113744] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:57:53.119 [DEBUG] [Thread-113744] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:57:53.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:57:53.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:57:53.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:57:53.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:57:53.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:57:53.144 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:57:53.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:57:53.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:57:53.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:57:53.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.331343 -999.00  +21.30  21.64     12   -8.80 1 1 1 1 1   888    0 32.02 76.04 ----- 20.8 21.6 37.2 26.2 27.3 -30.0 26.2 -29.0 25.0 -29.5 25.7 -28.2
2025-11-03T09:57:53.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:57:53.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:57:53.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.331343
2025-11-03T09:57:53.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:57:53.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:57:53.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:57:53.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:57:53.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:57:53.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:57:32', tmtdew=37.81, humidity=6.88, cloud=0.0, wind=18.61, temperature=21.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:57:08.035', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:57:53.147 [DEBUG] [Thread-113744] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:57:53.225 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:57:53.237 [DEBUG] [Thread-113747] [transport.py] [_log()] starting thread (client mode): 0xed2faf0
2025-11-03T09:57:53.237 [DEBUG] [Thread-113747] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:57:53.252 [DEBUG] [Thread-113747] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:57:53.252 [INFO] [Thread-113747] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:57:53.260 [DEBUG] [Thread-113747] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:57:53.261 [DEBUG] [Thread-113747] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:57:53.261 [DEBUG] [Thread-113747] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:57:53.261 [DEBUG] [Thread-113747] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:57:53.261 [DEBUG] [Thread-113747] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:57:53.261 [DEBUG] [Thread-113747] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:57:53.261 [DEBUG] [Thread-113747] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:57:53.262 [DEBUG] [Thread-113747] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:57:53.262 [DEBUG] [Thread-113747] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:57:53.262 [DEBUG] [Thread-113747] [transport.py] [_log()] client lang: <none>
2025-11-03T09:57:53.262 [DEBUG] [Thread-113747] [transport.py] [_log()] server lang: <none>
2025-11-03T09:57:53.262 [DEBUG] [Thread-113747] [transport.py] [_log()] kex follows: False
2025-11-03T09:57:53.262 [DEBUG] [Thread-113747] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:57:53.262 [DEBUG] [Thread-113747] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:57:53.262 [DEBUG] [Thread-113747] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:57:53.263 [DEBUG] [Thread-113747] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:57:53.263 [DEBUG] [Thread-113747] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:57:53.263 [DEBUG] [Thread-113747] [transport.py] [_log()] Compression: none
2025-11-03T09:57:53.263 [DEBUG] [Thread-113747] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:57:53.325 [DEBUG] [Thread-113747] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:57:53.326 [DEBUG] [Thread-113747] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:57:53.327 [DEBUG] [Thread-113747] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:57:53.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:57:53.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:57:53.383 [DEBUG] [Thread-113747] [transport.py] [_log()] userauth is OK
2025-11-03T09:57:53.383 [DEBUG] [Thread-113747] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:57:53.384 [DEBUG] [Thread-113747] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:57:53.384 [DEBUG] [Thread-113747] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:57:53.384 [DEBUG] [Thread-113747] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:57:53.403 [INFO] [Thread-113747] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:57:53.404 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:57:53.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:57:54.290 [DEBUG] [Thread-113747] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:57:54.290 [DEBUG] [Thread-113747] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:57:54.338 [DEBUG] [Thread-113747] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:57:54.338 [DEBUG] [Thread-113747] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:57:54.348 [DEBUG] [Thread-113747] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:57:54.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:57:54.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:57:54.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:57:54.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:57:54.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:57:54.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:57:54.385 [DEBUG] [Thread-113747] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:58:00.074 [DEBUG] [Thread-113749 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:58:15.124 [DEBUG] [Thread-113750 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:58:19.045 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:58:19.046 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:58:24.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:58:24.379 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:58:24.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:58:25.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 58, 5), 37.89, 6.85, 0.0, 18.1, 22.02, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:58:25.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:58:05
2025-11-03T09:58:25.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:58:25.359 [DEBUG] [Thread-113751] [transport.py] [_log()] starting thread (client mode): 0xed5cd30
2025-11-03T09:58:25.359 [DEBUG] [Thread-113751] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:58:25.380 [DEBUG] [Thread-113751] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:58:25.380 [INFO] [Thread-113751] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:58:25.390 [DEBUG] [Thread-113751] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:58:25.390 [DEBUG] [Thread-113751] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:58:25.391 [DEBUG] [Thread-113751] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:58:25.391 [DEBUG] [Thread-113751] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:58:25.391 [DEBUG] [Thread-113751] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:58:25.391 [DEBUG] [Thread-113751] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:58:25.391 [DEBUG] [Thread-113751] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:58:25.391 [DEBUG] [Thread-113751] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:58:25.391 [DEBUG] [Thread-113751] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:58:25.391 [DEBUG] [Thread-113751] [transport.py] [_log()] client lang: <none>
2025-11-03T09:58:25.391 [DEBUG] [Thread-113751] [transport.py] [_log()] server lang: <none>
2025-11-03T09:58:25.391 [DEBUG] [Thread-113751] [transport.py] [_log()] kex follows: False
2025-11-03T09:58:25.391 [DEBUG] [Thread-113751] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:58:25.391 [DEBUG] [Thread-113751] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:58:25.392 [DEBUG] [Thread-113751] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:58:25.392 [DEBUG] [Thread-113751] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:58:25.392 [DEBUG] [Thread-113751] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:58:25.392 [DEBUG] [Thread-113751] [transport.py] [_log()] Compression: none
2025-11-03T09:58:25.392 [DEBUG] [Thread-113751] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:58:25.413 [DEBUG] [Thread-113751] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:58:25.414 [DEBUG] [Thread-113751] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:58:25.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:58:25.415 [DEBUG] [Thread-113751] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:58:25.416 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:58:25.417 [DEBUG] [Thread-113751] [transport.py] [_log()] userauth is OK
2025-11-03T09:58:25.417 [DEBUG] [Thread-113751] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:58:25.418 [DEBUG] [Thread-113751] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:58:25.418 [DEBUG] [Thread-113751] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:58:25.418 [DEBUG] [Thread-113751] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:58:25.454 [INFO] [Thread-113751] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:58:25.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:58:26.121 [DEBUG] [Thread-113751] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:58:26.131 [DEBUG] [Thread-113751] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:58:26.131 [DEBUG] [Thread-113751] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:58:26.162 [DEBUG] [Thread-113751] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:58:26.162 [DEBUG] [Thread-113751] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:58:26.165 [DEBUG] [Thread-113751] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:58:26.177 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:58:26.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:58:26.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:58:26.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:58:26.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:58:26.189 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:58:26.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:58:26.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:58:26.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:58:26.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.331691 -999.00  +21.30  17.30     12   -8.80 1 1 1 1 1   888    0 32.33 81.65 ----- 17.3 17.3 16.2 22.1 27.3 -29.9 26.2 -29.3 25.0 -28.7 25.7 -28.0
2025-11-03T09:58:26.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:58:26.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:58:26.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.331691
2025-11-03T09:58:26.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:58:26.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:58:26.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:58:26.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:58:26.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:58:26.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:58:05', tmtdew=37.89, humidity=6.85, cloud=0.0, wind=18.1, temperature=22.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:57:38.102', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:58:26.192 [DEBUG] [Thread-113751] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:58:26.276 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:58:26.289 [DEBUG] [Thread-113754] [transport.py] [_log()] starting thread (client mode): 0xed5e890
2025-11-03T09:58:26.289 [DEBUG] [Thread-113754] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:58:26.304 [DEBUG] [Thread-113754] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:58:26.304 [INFO] [Thread-113754] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:58:26.312 [DEBUG] [Thread-113754] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:58:26.312 [DEBUG] [Thread-113754] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:58:26.312 [DEBUG] [Thread-113754] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:58:26.312 [DEBUG] [Thread-113754] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:58:26.312 [DEBUG] [Thread-113754] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:58:26.312 [DEBUG] [Thread-113754] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:58:26.312 [DEBUG] [Thread-113754] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:58:26.312 [DEBUG] [Thread-113754] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:58:26.312 [DEBUG] [Thread-113754] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:58:26.312 [DEBUG] [Thread-113754] [transport.py] [_log()] client lang: <none>
2025-11-03T09:58:26.312 [DEBUG] [Thread-113754] [transport.py] [_log()] server lang: <none>
2025-11-03T09:58:26.312 [DEBUG] [Thread-113754] [transport.py] [_log()] kex follows: False
2025-11-03T09:58:26.312 [DEBUG] [Thread-113754] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:58:26.312 [DEBUG] [Thread-113754] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:58:26.312 [DEBUG] [Thread-113754] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:58:26.312 [DEBUG] [Thread-113754] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:58:26.312 [DEBUG] [Thread-113754] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:58:26.312 [DEBUG] [Thread-113754] [transport.py] [_log()] Compression: none
2025-11-03T09:58:26.312 [DEBUG] [Thread-113754] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:58:26.373 [DEBUG] [Thread-113754] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:58:26.373 [DEBUG] [Thread-113754] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:58:26.374 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:58:26.374 [DEBUG] [Thread-113754] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:58:26.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:58:26.431 [DEBUG] [Thread-113754] [transport.py] [_log()] userauth is OK
2025-11-03T09:58:26.432 [DEBUG] [Thread-113754] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:58:26.432 [DEBUG] [Thread-113754] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:58:26.441 [DEBUG] [Thread-113754] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:58:26.441 [DEBUG] [Thread-113754] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:58:26.466 [INFO] [Thread-113754] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:58:26.467 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:58:26.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:58:27.372 [DEBUG] [Thread-113754] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:58:27.372 [DEBUG] [Thread-113754] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:58:27.420 [DEBUG] [Thread-113754] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:58:27.420 [DEBUG] [Thread-113754] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:58:27.430 [DEBUG] [Thread-113754] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:58:27.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:58:27.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:58:27.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:58:27.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:58:27.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:58:27.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:58:27.467 [DEBUG] [Thread-113754] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:58:30.163 [DEBUG] [Thread-113756 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:58:45.222 [DEBUG] [Thread-113757 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:58:49.814 [DEBUG] [Thread-113758 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:58:57.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:58:57.490 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:58:57.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:58:58.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 58, 37), 37.56, 6.88, 0.0, 23.01, 21.87, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:58:58.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:58:37
2025-11-03T09:58:58.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:58:58.444 [DEBUG] [Thread-113759] [transport.py] [_log()] starting thread (client mode): 0xed5f550
2025-11-03T09:58:58.444 [DEBUG] [Thread-113759] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:58:58.465 [DEBUG] [Thread-113759] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:58:58.465 [INFO] [Thread-113759] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:58:58.467 [DEBUG] [Thread-113759] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:58:58.467 [DEBUG] [Thread-113759] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:58:58.467 [DEBUG] [Thread-113759] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:58:58.467 [DEBUG] [Thread-113759] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:58:58.467 [DEBUG] [Thread-113759] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:58:58.467 [DEBUG] [Thread-113759] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:58:58.467 [DEBUG] [Thread-113759] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:58:58.467 [DEBUG] [Thread-113759] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:58:58.467 [DEBUG] [Thread-113759] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:58:58.467 [DEBUG] [Thread-113759] [transport.py] [_log()] client lang: <none>
2025-11-03T09:58:58.467 [DEBUG] [Thread-113759] [transport.py] [_log()] server lang: <none>
2025-11-03T09:58:58.467 [DEBUG] [Thread-113759] [transport.py] [_log()] kex follows: False
2025-11-03T09:58:58.467 [DEBUG] [Thread-113759] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:58:58.467 [DEBUG] [Thread-113759] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:58:58.467 [DEBUG] [Thread-113759] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:58:58.467 [DEBUG] [Thread-113759] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:58:58.467 [DEBUG] [Thread-113759] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:58:58.467 [DEBUG] [Thread-113759] [transport.py] [_log()] Compression: none
2025-11-03T09:58:58.467 [DEBUG] [Thread-113759] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:58:58.477 [DEBUG] [Thread-113759] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:58:58.478 [DEBUG] [Thread-113759] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:58:58.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:58:58.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:58:58.479 [DEBUG] [Thread-113759] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:58:58.479 [DEBUG] [Thread-113759] [transport.py] [_log()] userauth is OK
2025-11-03T09:58:58.480 [DEBUG] [Thread-113759] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:58:58.480 [DEBUG] [Thread-113759] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:58:58.480 [DEBUG] [Thread-113759] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:58:58.480 [DEBUG] [Thread-113759] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:58:58.502 [INFO] [Thread-113759] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:58:58.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:58:59.118 [DEBUG] [Thread-113759] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:58:59.118 [DEBUG] [Thread-113759] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:58:59.118 [DEBUG] [Thread-113759] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:58:59.159 [DEBUG] [Thread-113759] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:58:59.159 [DEBUG] [Thread-113759] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:58:59.161 [DEBUG] [Thread-113759] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:58:59.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:58:59.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:58:59.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:58:59.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:58:59.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:58:59.180 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:58:59.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:58:59.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:58:59.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:58:59.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.332038 -999.00  +21.30  12.16     12   -8.80 1 1 1 1 1   888    0 32.03 71.52 ----- 16.8 12.2 14.2 21.0 27.4 -29.5 26.2 -28.5 25.0 -28.3 25.6 -28.4
2025-11-03T09:58:59.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:58:59.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:58:59.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.332038
2025-11-03T09:58:59.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:58:59.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:58:59.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:58:59.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:58:59.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:58:59.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:58:37', tmtdew=37.56, humidity=6.88, cloud=0.0, wind=23.01, temperature=21.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:58:08.083', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:58:59.182 [DEBUG] [Thread-113759] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:58:59.255 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:58:59.266 [DEBUG] [Thread-113762] [transport.py] [_log()] starting thread (client mode): 0x11799e40
2025-11-03T09:58:59.266 [DEBUG] [Thread-113762] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:58:59.282 [DEBUG] [Thread-113762] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:58:59.282 [INFO] [Thread-113762] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:58:59.289 [DEBUG] [Thread-113762] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:58:59.289 [DEBUG] [Thread-113762] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:58:59.289 [DEBUG] [Thread-113762] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:58:59.289 [DEBUG] [Thread-113762] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:58:59.289 [DEBUG] [Thread-113762] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:58:59.289 [DEBUG] [Thread-113762] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:58:59.290 [DEBUG] [Thread-113762] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:58:59.290 [DEBUG] [Thread-113762] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:58:59.290 [DEBUG] [Thread-113762] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:58:59.290 [DEBUG] [Thread-113762] [transport.py] [_log()] client lang: <none>
2025-11-03T09:58:59.290 [DEBUG] [Thread-113762] [transport.py] [_log()] server lang: <none>
2025-11-03T09:58:59.290 [DEBUG] [Thread-113762] [transport.py] [_log()] kex follows: False
2025-11-03T09:58:59.290 [DEBUG] [Thread-113762] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:58:59.290 [DEBUG] [Thread-113762] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:58:59.290 [DEBUG] [Thread-113762] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:58:59.290 [DEBUG] [Thread-113762] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:58:59.290 [DEBUG] [Thread-113762] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:58:59.290 [DEBUG] [Thread-113762] [transport.py] [_log()] Compression: none
2025-11-03T09:58:59.290 [DEBUG] [Thread-113762] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:58:59.345 [DEBUG] [Thread-113762] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:58:59.345 [DEBUG] [Thread-113762] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:58:59.345 [DEBUG] [Thread-113762] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:58:59.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:58:59.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:58:59.402 [DEBUG] [Thread-113762] [transport.py] [_log()] userauth is OK
2025-11-03T09:58:59.402 [DEBUG] [Thread-113762] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:58:59.402 [DEBUG] [Thread-113762] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:58:59.402 [DEBUG] [Thread-113762] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:58:59.402 [DEBUG] [Thread-113762] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:58:59.417 [INFO] [Thread-113762] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:58:59.417 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:58:59.417 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:59:00.259 [DEBUG] [Thread-113764 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:59:00.306 [DEBUG] [Thread-113762] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:59:00.306 [DEBUG] [Thread-113762] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:59:00.353 [DEBUG] [Thread-113762] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:59:00.354 [DEBUG] [Thread-113762] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:59:00.363 [DEBUG] [Thread-113762] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:59:00.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:59:00.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:59:00.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:59:00.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:59:00.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:59:00.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:59:00.400 [DEBUG] [Thread-113762] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:59:15.319 [DEBUG] [Thread-113765 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:59:19.186 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:59:19.187 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:59:30.356 [DEBUG] [Thread-113766 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:59:30.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T09:59:30.399 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T09:59:30.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T09:59:31.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 59, 9), 37.62, 6.86, 0.0, 21.42, 21.96, 0, 0, 0, 2, 0, 0),)
2025-11-03T09:59:31.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:59:09
2025-11-03T09:59:31.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T09:59:31.306 [DEBUG] [Thread-113767] [transport.py] [_log()] starting thread (client mode): 0x11798a60
2025-11-03T09:59:31.306 [DEBUG] [Thread-113767] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:59:31.327 [DEBUG] [Thread-113767] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T09:59:31.328 [INFO] [Thread-113767] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T09:59:31.338 [DEBUG] [Thread-113767] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:59:31.338 [DEBUG] [Thread-113767] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T09:59:31.338 [DEBUG] [Thread-113767] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:59:31.338 [DEBUG] [Thread-113767] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:59:31.338 [DEBUG] [Thread-113767] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:59:31.338 [DEBUG] [Thread-113767] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:59:31.339 [DEBUG] [Thread-113767] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:59:31.339 [DEBUG] [Thread-113767] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:59:31.339 [DEBUG] [Thread-113767] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:59:31.339 [DEBUG] [Thread-113767] [transport.py] [_log()] client lang: <none>
2025-11-03T09:59:31.339 [DEBUG] [Thread-113767] [transport.py] [_log()] server lang: <none>
2025-11-03T09:59:31.339 [DEBUG] [Thread-113767] [transport.py] [_log()] kex follows: False
2025-11-03T09:59:31.339 [DEBUG] [Thread-113767] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:59:31.339 [DEBUG] [Thread-113767] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:59:31.340 [DEBUG] [Thread-113767] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:59:31.340 [DEBUG] [Thread-113767] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:59:31.340 [DEBUG] [Thread-113767] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:59:31.340 [DEBUG] [Thread-113767] [transport.py] [_log()] Compression: none
2025-11-03T09:59:31.340 [DEBUG] [Thread-113767] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:59:31.360 [DEBUG] [Thread-113767] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:59:31.361 [DEBUG] [Thread-113767] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:59:31.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T09:59:31.362 [DEBUG] [Thread-113767] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T09:59:31.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:59:31.365 [DEBUG] [Thread-113767] [transport.py] [_log()] userauth is OK
2025-11-03T09:59:31.365 [DEBUG] [Thread-113767] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:59:31.365 [DEBUG] [Thread-113767] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:59:31.365 [DEBUG] [Thread-113767] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T09:59:31.365 [DEBUG] [Thread-113767] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:59:31.389 [INFO] [Thread-113767] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:59:31.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:59:32.010 [DEBUG] [Thread-113767] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:59:32.010 [DEBUG] [Thread-113767] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:59:32.011 [DEBUG] [Thread-113767] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T09:59:32.051 [DEBUG] [Thread-113767] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:59:32.052 [DEBUG] [Thread-113767] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:59:32.055 [DEBUG] [Thread-113767] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:59:32.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:59:32.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T09:59:32.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T09:59:32.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T09:59:32.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:59:32.090 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T09:59:32.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:59:32.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:59:32.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T09:59:32.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.332732 -999.00  +21.00  20.40     12   -9.00 1 1 1 1 1   888    0 31.63 67.89 ----- 19.5 20.4 336.2 31.9 27.3 -29.7 26.2 -29.5 25.0 -28.4 25.6 -28.3
2025-11-03T09:59:32.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T09:59:32.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T09:59:32.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.332732
2025-11-03T09:59:32.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T09:59:32.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T09:59:32.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T09:59:32.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T09:59:32.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T09:59:32.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:59:09', tmtdew=37.62, humidity=6.86, cloud=0.0, wind=21.42, temperature=21.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:59:08.045', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T09:59:32.092 [DEBUG] [Thread-113767] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:59:32.176 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T09:59:32.189 [DEBUG] [Thread-113770] [transport.py] [_log()] starting thread (client mode): 0xed40160
2025-11-03T09:59:32.189 [DEBUG] [Thread-113770] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T09:59:32.204 [DEBUG] [Thread-113770] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T09:59:32.205 [INFO] [Thread-113770] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T09:59:32.215 [DEBUG] [Thread-113770] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T09:59:32.215 [DEBUG] [Thread-113770] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T09:59:32.215 [DEBUG] [Thread-113770] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T09:59:32.215 [DEBUG] [Thread-113770] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:59:32.216 [DEBUG] [Thread-113770] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T09:59:32.216 [DEBUG] [Thread-113770] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:59:32.216 [DEBUG] [Thread-113770] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T09:59:32.216 [DEBUG] [Thread-113770] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T09:59:32.216 [DEBUG] [Thread-113770] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T09:59:32.216 [DEBUG] [Thread-113770] [transport.py] [_log()] client lang: <none>
2025-11-03T09:59:32.216 [DEBUG] [Thread-113770] [transport.py] [_log()] server lang: <none>
2025-11-03T09:59:32.216 [DEBUG] [Thread-113770] [transport.py] [_log()] kex follows: False
2025-11-03T09:59:32.216 [DEBUG] [Thread-113770] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T09:59:32.216 [DEBUG] [Thread-113770] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T09:59:32.216 [DEBUG] [Thread-113770] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T09:59:32.216 [DEBUG] [Thread-113770] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T09:59:32.216 [DEBUG] [Thread-113770] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T09:59:32.216 [DEBUG] [Thread-113770] [transport.py] [_log()] Compression: none
2025-11-03T09:59:32.217 [DEBUG] [Thread-113770] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T09:59:32.278 [DEBUG] [Thread-113770] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T09:59:32.278 [DEBUG] [Thread-113770] [transport.py] [_log()] Switch to new keys ...
2025-11-03T09:59:32.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T09:59:32.279 [DEBUG] [Thread-113770] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T09:59:32.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T09:59:32.334 [DEBUG] [Thread-113770] [transport.py] [_log()] userauth is OK
2025-11-03T09:59:32.335 [DEBUG] [Thread-113770] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T09:59:32.335 [DEBUG] [Thread-113770] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T09:59:32.335 [DEBUG] [Thread-113770] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T09:59:32.335 [DEBUG] [Thread-113770] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T09:59:32.354 [INFO] [Thread-113770] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T09:59:32.354 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T09:59:32.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T09:59:33.205 [DEBUG] [Thread-113770] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T09:59:33.207 [DEBUG] [Thread-113770] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T09:59:33.254 [DEBUG] [Thread-113770] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T09:59:33.254 [DEBUG] [Thread-113770] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T09:59:33.263 [DEBUG] [Thread-113770] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T09:59:33.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T09:59:33.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T09:59:33.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T09:59:33.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T09:59:33.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T09:59:33.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T09:59:33.301 [DEBUG] [Thread-113770] [transport.py] [_log()] EOF in transport thread
2025-11-03T09:59:45.388 [DEBUG] [Thread-113772 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T09:59:49.891 [DEBUG] [Thread-113773 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:00:00.429 [DEBUG] [Thread-113774 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:00:03.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:00:03.323 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:00:03.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:00:03.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 9, 59, 41), 37.42, 6.85, 0.0, 17.19, 21.91, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:00:03.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 09:59:41
2025-11-03T10:00:04.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:00:04.271 [DEBUG] [Thread-113775] [transport.py] [_log()] starting thread (client mode): 0xed2c850
2025-11-03T10:00:04.271 [DEBUG] [Thread-113775] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:00:04.294 [DEBUG] [Thread-113775] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:00:04.295 [INFO] [Thread-113775] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:00:04.299 [DEBUG] [Thread-113775] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:00:04.299 [DEBUG] [Thread-113775] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:00:04.299 [DEBUG] [Thread-113775] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:00:04.299 [DEBUG] [Thread-113775] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:00:04.299 [DEBUG] [Thread-113775] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:00:04.299 [DEBUG] [Thread-113775] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:00:04.299 [DEBUG] [Thread-113775] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:00:04.299 [DEBUG] [Thread-113775] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:00:04.299 [DEBUG] [Thread-113775] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:00:04.299 [DEBUG] [Thread-113775] [transport.py] [_log()] client lang: <none>
2025-11-03T10:00:04.299 [DEBUG] [Thread-113775] [transport.py] [_log()] server lang: <none>
2025-11-03T10:00:04.299 [DEBUG] [Thread-113775] [transport.py] [_log()] kex follows: False
2025-11-03T10:00:04.299 [DEBUG] [Thread-113775] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:00:04.299 [DEBUG] [Thread-113775] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:00:04.299 [DEBUG] [Thread-113775] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:00:04.299 [DEBUG] [Thread-113775] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:00:04.299 [DEBUG] [Thread-113775] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:00:04.299 [DEBUG] [Thread-113775] [transport.py] [_log()] Compression: none
2025-11-03T10:00:04.299 [DEBUG] [Thread-113775] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:00:04.319 [DEBUG] [Thread-113775] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:00:04.320 [DEBUG] [Thread-113775] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:00:04.321 [DEBUG] [Thread-113775] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:00:04.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:00:04.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:00:04.323 [DEBUG] [Thread-113775] [transport.py] [_log()] userauth is OK
2025-11-03T10:00:04.323 [DEBUG] [Thread-113775] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:00:04.323 [DEBUG] [Thread-113775] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:00:04.323 [DEBUG] [Thread-113775] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:00:04.323 [DEBUG] [Thread-113775] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:00:04.358 [INFO] [Thread-113775] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:00:04.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:00:06.391 [DEBUG] [Thread-113775] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:00:06.391 [DEBUG] [Thread-113775] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:00:06.391 [DEBUG] [Thread-113775] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:00:06.431 [DEBUG] [Thread-113775] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:00:06.432 [DEBUG] [Thread-113775] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:00:06.434 [DEBUG] [Thread-113775] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:00:06.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:00:06.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:00:06.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:00:06.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:00:06.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:00:06.456 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:00:06.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:00:06.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:00:06.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:00:06.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.333080 -999.00  +20.70  17.73     12   -9.00 1 1 1 1 1   888    0 31.45 60.52 ----- 13.3 17.7 10.0 29.7 27.2 -30.8 26.1 -28.9 24.9 -28.2 25.5 -31.0
2025-11-03T10:00:06.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:00:06.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:00:06.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.333080
2025-11-03T10:00:06.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:00:06.465 [DEBUG] [Thread-113775] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:00:06.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:00:06.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:00:06.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:00:06.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:00:06.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T09:59:41', tmtdew=37.42, humidity=6.85, cloud=0.0, wind=17.19, temperature=21.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T07:59:38.112', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:00:06.551 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:00:06.562 [DEBUG] [Thread-113778] [transport.py] [_log()] starting thread (client mode): 0xed04700
2025-11-03T10:00:06.563 [DEBUG] [Thread-113778] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:00:06.577 [DEBUG] [Thread-113778] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:00:06.577 [INFO] [Thread-113778] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:00:06.584 [DEBUG] [Thread-113778] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:00:06.585 [DEBUG] [Thread-113778] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:00:06.585 [DEBUG] [Thread-113778] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:00:06.585 [DEBUG] [Thread-113778] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:00:06.585 [DEBUG] [Thread-113778] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:00:06.585 [DEBUG] [Thread-113778] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:00:06.585 [DEBUG] [Thread-113778] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:00:06.585 [DEBUG] [Thread-113778] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:00:06.585 [DEBUG] [Thread-113778] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:00:06.585 [DEBUG] [Thread-113778] [transport.py] [_log()] client lang: <none>
2025-11-03T10:00:06.585 [DEBUG] [Thread-113778] [transport.py] [_log()] server lang: <none>
2025-11-03T10:00:06.585 [DEBUG] [Thread-113778] [transport.py] [_log()] kex follows: False
2025-11-03T10:00:06.585 [DEBUG] [Thread-113778] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:00:06.585 [DEBUG] [Thread-113778] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:00:06.585 [DEBUG] [Thread-113778] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:00:06.585 [DEBUG] [Thread-113778] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:00:06.585 [DEBUG] [Thread-113778] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:00:06.585 [DEBUG] [Thread-113778] [transport.py] [_log()] Compression: none
2025-11-03T10:00:06.585 [DEBUG] [Thread-113778] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:00:06.651 [DEBUG] [Thread-113778] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:00:06.652 [DEBUG] [Thread-113778] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:00:06.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:00:06.653 [DEBUG] [Thread-113778] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:00:06.654 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:00:06.710 [DEBUG] [Thread-113778] [transport.py] [_log()] userauth is OK
2025-11-03T10:00:06.711 [DEBUG] [Thread-113778] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:00:06.711 [DEBUG] [Thread-113778] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:00:06.711 [DEBUG] [Thread-113778] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:00:06.711 [DEBUG] [Thread-113778] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:00:06.737 [INFO] [Thread-113778] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:00:06.738 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:00:06.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:00:07.611 [DEBUG] [Thread-113778] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:00:07.611 [DEBUG] [Thread-113778] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:00:07.659 [DEBUG] [Thread-113778] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:00:07.659 [DEBUG] [Thread-113778] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:00:07.667 [DEBUG] [Thread-113778] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:00:07.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:00:07.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:00:07.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:00:07.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:00:07.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:00:07.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:00:07.701 [DEBUG] [Thread-113778] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:00:15.459 [DEBUG] [Thread-113780 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:00:19.330 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:00:19.331 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:00:30.503 [DEBUG] [Thread-113781 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:00:37.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:00:37.722 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:00:37.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:00:38.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 0, 14), 37.54, 6.78, 0.0, 13.96, 21.91, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:00:38.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:00:14
2025-11-03T10:00:38.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:00:38.711 [DEBUG] [Thread-113782] [transport.py] [_log()] starting thread (client mode): 0xed2f310
2025-11-03T10:00:38.720 [DEBUG] [Thread-113782] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:00:38.733 [DEBUG] [Thread-113782] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:00:38.733 [INFO] [Thread-113782] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:00:38.736 [DEBUG] [Thread-113782] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:00:38.736 [DEBUG] [Thread-113782] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:00:38.736 [DEBUG] [Thread-113782] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:00:38.736 [DEBUG] [Thread-113782] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:00:38.736 [DEBUG] [Thread-113782] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:00:38.736 [DEBUG] [Thread-113782] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:00:38.736 [DEBUG] [Thread-113782] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:00:38.736 [DEBUG] [Thread-113782] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:00:38.736 [DEBUG] [Thread-113782] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:00:38.736 [DEBUG] [Thread-113782] [transport.py] [_log()] client lang: <none>
2025-11-03T10:00:38.736 [DEBUG] [Thread-113782] [transport.py] [_log()] server lang: <none>
2025-11-03T10:00:38.736 [DEBUG] [Thread-113782] [transport.py] [_log()] kex follows: False
2025-11-03T10:00:38.736 [DEBUG] [Thread-113782] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:00:38.736 [DEBUG] [Thread-113782] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:00:38.736 [DEBUG] [Thread-113782] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:00:38.736 [DEBUG] [Thread-113782] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:00:38.736 [DEBUG] [Thread-113782] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:00:38.736 [DEBUG] [Thread-113782] [transport.py] [_log()] Compression: none
2025-11-03T10:00:38.736 [DEBUG] [Thread-113782] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:00:38.752 [DEBUG] [Thread-113782] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:00:38.752 [DEBUG] [Thread-113782] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:00:38.752 [DEBUG] [Thread-113782] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:00:38.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:00:38.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:00:38.753 [DEBUG] [Thread-113782] [transport.py] [_log()] userauth is OK
2025-11-03T10:00:38.753 [DEBUG] [Thread-113782] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:00:38.753 [DEBUG] [Thread-113782] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:00:38.753 [DEBUG] [Thread-113782] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:00:38.753 [DEBUG] [Thread-113782] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:00:38.771 [INFO] [Thread-113782] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:00:38.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:00:39.399 [DEBUG] [Thread-113782] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:00:39.399 [DEBUG] [Thread-113782] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:00:39.399 [DEBUG] [Thread-113782] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:00:39.441 [DEBUG] [Thread-113782] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:00:39.441 [DEBUG] [Thread-113782] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:00:39.443 [DEBUG] [Thread-113782] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:00:39.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:00:39.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:00:39.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:00:39.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:00:39.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:00:39.460 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:00:39.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:00:39.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:00:39.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:00:39.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.333427 -999.00  +20.70  17.65     12   -9.00 1 1 1 1 1   888    0 31.81 47.60 ----- 16.0 17.6 18.8 20.2 27.2 -29.1 26.2 -29.2 25.0 -29.2 25.5 -32.5
2025-11-03T10:00:39.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:00:39.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:00:39.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.333427
2025-11-03T10:00:39.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:00:39.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:00:39.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:00:39.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:00:39.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:00:39.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:00:14', tmtdew=37.54, humidity=6.78, cloud=0.0, wind=13.96, temperature=21.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:00:08.093', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:00:39.461 [DEBUG] [Thread-113782] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:00:39.537 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:00:39.548 [DEBUG] [Thread-113785] [transport.py] [_log()] starting thread (client mode): 0x1179b8b0
2025-11-03T10:00:39.548 [DEBUG] [Thread-113785] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:00:39.564 [DEBUG] [Thread-113785] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:00:39.564 [INFO] [Thread-113785] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:00:39.571 [DEBUG] [Thread-113785] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:00:39.571 [DEBUG] [Thread-113785] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:00:39.571 [DEBUG] [Thread-113785] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:00:39.571 [DEBUG] [Thread-113785] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:00:39.571 [DEBUG] [Thread-113785] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:00:39.571 [DEBUG] [Thread-113785] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:00:39.571 [DEBUG] [Thread-113785] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:00:39.571 [DEBUG] [Thread-113785] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:00:39.571 [DEBUG] [Thread-113785] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:00:39.571 [DEBUG] [Thread-113785] [transport.py] [_log()] client lang: <none>
2025-11-03T10:00:39.571 [DEBUG] [Thread-113785] [transport.py] [_log()] server lang: <none>
2025-11-03T10:00:39.571 [DEBUG] [Thread-113785] [transport.py] [_log()] kex follows: False
2025-11-03T10:00:39.571 [DEBUG] [Thread-113785] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:00:39.571 [DEBUG] [Thread-113785] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:00:39.571 [DEBUG] [Thread-113785] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:00:39.571 [DEBUG] [Thread-113785] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:00:39.571 [DEBUG] [Thread-113785] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:00:39.571 [DEBUG] [Thread-113785] [transport.py] [_log()] Compression: none
2025-11-03T10:00:39.571 [DEBUG] [Thread-113785] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:00:39.629 [DEBUG] [Thread-113785] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:00:39.629 [DEBUG] [Thread-113785] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:00:39.629 [DEBUG] [Thread-113785] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:00:39.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:00:39.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:00:39.685 [DEBUG] [Thread-113785] [transport.py] [_log()] userauth is OK
2025-11-03T10:00:39.685 [DEBUG] [Thread-113785] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:00:39.685 [DEBUG] [Thread-113785] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:00:39.685 [DEBUG] [Thread-113785] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:00:39.685 [DEBUG] [Thread-113785] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:00:39.700 [INFO] [Thread-113785] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:00:39.700 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:00:39.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:00:40.569 [DEBUG] [Thread-113785] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:00:40.569 [DEBUG] [Thread-113785] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:00:40.617 [DEBUG] [Thread-113785] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:00:40.617 [DEBUG] [Thread-113785] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:00:40.625 [DEBUG] [Thread-113785] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:00:40.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:00:40.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:00:40.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:00:40.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:00:40.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:00:40.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:00:40.657 [DEBUG] [Thread-113785] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:00:45.541 [DEBUG] [Thread-113787 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:00:49.944 [DEBUG] [Thread-113788 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:01:00.590 [DEBUG] [Thread-113789 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:01:10.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:01:10.680 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:01:10.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:01:11.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 0, 46), 37.42, 6.85, 0.0, 19.32, 21.56, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:01:11.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:00:46
2025-11-03T10:01:11.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:01:11.646 [DEBUG] [Thread-113790] [transport.py] [_log()] starting thread (client mode): 0xed5e3e0
2025-11-03T10:01:11.646 [DEBUG] [Thread-113790] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:01:11.664 [DEBUG] [Thread-113790] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:01:11.664 [INFO] [Thread-113790] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:01:11.666 [DEBUG] [Thread-113790] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:01:11.666 [DEBUG] [Thread-113790] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:01:11.666 [DEBUG] [Thread-113790] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:01:11.666 [DEBUG] [Thread-113790] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:01:11.666 [DEBUG] [Thread-113790] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:01:11.666 [DEBUG] [Thread-113790] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:01:11.666 [DEBUG] [Thread-113790] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:01:11.666 [DEBUG] [Thread-113790] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:01:11.666 [DEBUG] [Thread-113790] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:01:11.666 [DEBUG] [Thread-113790] [transport.py] [_log()] client lang: <none>
2025-11-03T10:01:11.666 [DEBUG] [Thread-113790] [transport.py] [_log()] server lang: <none>
2025-11-03T10:01:11.666 [DEBUG] [Thread-113790] [transport.py] [_log()] kex follows: False
2025-11-03T10:01:11.666 [DEBUG] [Thread-113790] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:01:11.666 [DEBUG] [Thread-113790] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:01:11.666 [DEBUG] [Thread-113790] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:01:11.666 [DEBUG] [Thread-113790] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:01:11.666 [DEBUG] [Thread-113790] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:01:11.666 [DEBUG] [Thread-113790] [transport.py] [_log()] Compression: none
2025-11-03T10:01:11.666 [DEBUG] [Thread-113790] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:01:11.679 [DEBUG] [Thread-113790] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:01:11.679 [DEBUG] [Thread-113790] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:01:11.680 [DEBUG] [Thread-113790] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:01:11.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:01:11.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:01:11.682 [DEBUG] [Thread-113790] [transport.py] [_log()] userauth is OK
2025-11-03T10:01:11.682 [DEBUG] [Thread-113790] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:01:11.682 [DEBUG] [Thread-113790] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:01:11.682 [DEBUG] [Thread-113790] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:01:11.682 [DEBUG] [Thread-113790] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:01:11.701 [INFO] [Thread-113790] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:01:11.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:01:12.502 [DEBUG] [Thread-113790] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:01:12.502 [DEBUG] [Thread-113790] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:01:12.502 [DEBUG] [Thread-113790] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:01:12.543 [DEBUG] [Thread-113790] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:01:12.543 [DEBUG] [Thread-113790] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:01:12.546 [DEBUG] [Thread-113790] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:01:12.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:01:12.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:01:12.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:01:12.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:01:12.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:01:12.568 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:01:12.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:01:12.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:01:12.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:01:12.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.333774 -999.00  +21.10  18.14     12   -8.60 1 1 1 1 1   888    0 31.61 42.39 ----- 20.8 18.1 30.0 23.3 27.3 -29.1 26.2 -28.7 25.0 -28.4 25.6 -28.0
2025-11-03T10:01:12.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:01:12.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:01:12.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.333774
2025-11-03T10:01:12.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:01:12.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:01:12.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:01:12.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:01:12.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:01:12.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:00:46', tmtdew=37.42, humidity=6.85, cloud=0.0, wind=19.32, temperature=21.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:00:38.074', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:01:12.571 [DEBUG] [Thread-113790] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:01:12.668 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:01:12.679 [DEBUG] [Thread-113793] [transport.py] [_log()] starting thread (client mode): 0xed67ee0
2025-11-03T10:01:12.680 [DEBUG] [Thread-113793] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:01:12.695 [DEBUG] [Thread-113793] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:01:12.695 [INFO] [Thread-113793] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:01:12.712 [DEBUG] [Thread-113793] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:01:12.712 [DEBUG] [Thread-113793] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:01:12.712 [DEBUG] [Thread-113793] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:01:12.712 [DEBUG] [Thread-113793] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:01:12.712 [DEBUG] [Thread-113793] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:01:12.712 [DEBUG] [Thread-113793] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:01:12.713 [DEBUG] [Thread-113793] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:01:12.713 [DEBUG] [Thread-113793] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:01:12.713 [DEBUG] [Thread-113793] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:01:12.713 [DEBUG] [Thread-113793] [transport.py] [_log()] client lang: <none>
2025-11-03T10:01:12.713 [DEBUG] [Thread-113793] [transport.py] [_log()] server lang: <none>
2025-11-03T10:01:12.713 [DEBUG] [Thread-113793] [transport.py] [_log()] kex follows: False
2025-11-03T10:01:12.713 [DEBUG] [Thread-113793] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:01:12.713 [DEBUG] [Thread-113793] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:01:12.713 [DEBUG] [Thread-113793] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:01:12.714 [DEBUG] [Thread-113793] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:01:12.714 [DEBUG] [Thread-113793] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:01:12.714 [DEBUG] [Thread-113793] [transport.py] [_log()] Compression: none
2025-11-03T10:01:12.714 [DEBUG] [Thread-113793] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:01:12.763 [DEBUG] [Thread-113793] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:01:12.764 [DEBUG] [Thread-113793] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:01:12.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:01:12.765 [DEBUG] [Thread-113793] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:01:12.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:01:12.822 [DEBUG] [Thread-113793] [transport.py] [_log()] userauth is OK
2025-11-03T10:01:12.823 [DEBUG] [Thread-113793] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:01:12.823 [DEBUG] [Thread-113793] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:01:12.823 [DEBUG] [Thread-113793] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:01:12.823 [DEBUG] [Thread-113793] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:01:12.844 [INFO] [Thread-113793] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:01:12.853 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:01:12.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:01:13.714 [DEBUG] [Thread-113793] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:01:13.715 [DEBUG] [Thread-113793] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:01:13.763 [DEBUG] [Thread-113793] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:01:13.764 [DEBUG] [Thread-113793] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:01:13.773 [DEBUG] [Thread-113793] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:01:13.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:01:13.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:01:13.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:01:13.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:01:13.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:01:13.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:01:13.808 [DEBUG] [Thread-113793] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:01:15.616 [DEBUG] [Thread-113795 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:01:19.470 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:01:19.471 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:01:30.653 [DEBUG] [Thread-113796 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:01:43.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:01:43.811 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:01:43.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:01:44.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 1, 19), 37.13, 6.98, 0.0, 14.17, 21.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:01:44.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:01:19
2025-11-03T10:01:44.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:01:44.801 [DEBUG] [Thread-113797] [transport.py] [_log()] starting thread (client mode): 0x117beb00
2025-11-03T10:01:44.801 [DEBUG] [Thread-113797] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:01:44.823 [DEBUG] [Thread-113797] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:01:44.823 [INFO] [Thread-113797] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:01:44.826 [DEBUG] [Thread-113797] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:01:44.826 [DEBUG] [Thread-113797] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:01:44.826 [DEBUG] [Thread-113797] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:01:44.826 [DEBUG] [Thread-113797] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:01:44.826 [DEBUG] [Thread-113797] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:01:44.826 [DEBUG] [Thread-113797] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:01:44.826 [DEBUG] [Thread-113797] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:01:44.826 [DEBUG] [Thread-113797] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:01:44.826 [DEBUG] [Thread-113797] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:01:44.826 [DEBUG] [Thread-113797] [transport.py] [_log()] client lang: <none>
2025-11-03T10:01:44.826 [DEBUG] [Thread-113797] [transport.py] [_log()] server lang: <none>
2025-11-03T10:01:44.826 [DEBUG] [Thread-113797] [transport.py] [_log()] kex follows: False
2025-11-03T10:01:44.826 [DEBUG] [Thread-113797] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:01:44.827 [DEBUG] [Thread-113797] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:01:44.827 [DEBUG] [Thread-113797] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:01:44.827 [DEBUG] [Thread-113797] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:01:44.827 [DEBUG] [Thread-113797] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:01:44.827 [DEBUG] [Thread-113797] [transport.py] [_log()] Compression: none
2025-11-03T10:01:44.827 [DEBUG] [Thread-113797] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:01:44.843 [DEBUG] [Thread-113797] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:01:44.844 [DEBUG] [Thread-113797] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:01:44.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:01:44.845 [DEBUG] [Thread-113797] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:01:44.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:01:44.847 [DEBUG] [Thread-113797] [transport.py] [_log()] userauth is OK
2025-11-03T10:01:44.847 [DEBUG] [Thread-113797] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:01:44.847 [DEBUG] [Thread-113797] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:01:44.848 [DEBUG] [Thread-113797] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:01:44.848 [DEBUG] [Thread-113797] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:01:44.871 [INFO] [Thread-113797] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:01:44.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:01:45.515 [DEBUG] [Thread-113797] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:01:45.515 [DEBUG] [Thread-113797] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:01:45.515 [DEBUG] [Thread-113797] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:01:45.556 [DEBUG] [Thread-113797] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:01:45.556 [DEBUG] [Thread-113797] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:01:45.559 [DEBUG] [Thread-113797] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:01:45.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:01:45.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:01:45.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:01:45.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:01:45.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:01:45.583 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:01:45.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:01:45.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:01:45.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:01:45.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.334121 -999.00  +21.10  27.80     12   -8.80 1 1 1 1 1   888    0 31.16 39.78 ----- 25.6 27.8 57.0 32.1 27.2 -30.4 26.1 -30.9 24.8 -30.9 25.6 -28.1
2025-11-03T10:01:45.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:01:45.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:01:45.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.334121
2025-11-03T10:01:45.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:01:45.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:01:45.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:01:45.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:01:45.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:01:45.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:01:19', tmtdew=37.13, humidity=6.98, cloud=0.0, wind=14.17, temperature=21.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:01:08.054', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:01:45.586 [DEBUG] [Thread-113797] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:01:45.669 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:01:45.681 [DEBUG] [Thread-113800] [transport.py] [_log()] starting thread (client mode): 0xed647c0
2025-11-03T10:01:45.681 [DEBUG] [Thread-113800] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:01:45.688 [DEBUG] [Thread-113801 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:01:45.697 [DEBUG] [Thread-113800] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:01:45.697 [INFO] [Thread-113800] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:01:45.704 [DEBUG] [Thread-113800] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:01:45.704 [DEBUG] [Thread-113800] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:01:45.705 [DEBUG] [Thread-113800] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:01:45.705 [DEBUG] [Thread-113800] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:01:45.705 [DEBUG] [Thread-113800] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:01:45.705 [DEBUG] [Thread-113800] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:01:45.705 [DEBUG] [Thread-113800] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:01:45.705 [DEBUG] [Thread-113800] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:01:45.705 [DEBUG] [Thread-113800] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:01:45.705 [DEBUG] [Thread-113800] [transport.py] [_log()] client lang: <none>
2025-11-03T10:01:45.705 [DEBUG] [Thread-113800] [transport.py] [_log()] server lang: <none>
2025-11-03T10:01:45.706 [DEBUG] [Thread-113800] [transport.py] [_log()] kex follows: False
2025-11-03T10:01:45.706 [DEBUG] [Thread-113800] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:01:45.706 [DEBUG] [Thread-113800] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:01:45.706 [DEBUG] [Thread-113800] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:01:45.706 [DEBUG] [Thread-113800] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:01:45.706 [DEBUG] [Thread-113800] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:01:45.706 [DEBUG] [Thread-113800] [transport.py] [_log()] Compression: none
2025-11-03T10:01:45.706 [DEBUG] [Thread-113800] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:01:45.765 [DEBUG] [Thread-113800] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:01:45.765 [DEBUG] [Thread-113800] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:01:45.766 [DEBUG] [Thread-113800] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:01:45.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:01:45.767 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:01:45.824 [DEBUG] [Thread-113800] [transport.py] [_log()] userauth is OK
2025-11-03T10:01:45.824 [DEBUG] [Thread-113800] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:01:45.824 [DEBUG] [Thread-113800] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:01:45.825 [DEBUG] [Thread-113800] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:01:45.825 [DEBUG] [Thread-113800] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:01:45.843 [INFO] [Thread-113800] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:01:45.844 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:01:45.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:01:46.725 [DEBUG] [Thread-113800] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:01:46.725 [DEBUG] [Thread-113800] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:01:46.773 [DEBUG] [Thread-113800] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:01:46.773 [DEBUG] [Thread-113800] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:01:46.782 [DEBUG] [Thread-113800] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:01:46.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:01:46.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:01:46.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:01:46.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:01:46.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:01:46.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:01:46.813 [DEBUG] [Thread-113800] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:01:50.009 [DEBUG] [Thread-113803 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:02:00.728 [DEBUG] [Thread-113804 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:02:15.770 [DEBUG] [Thread-113805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:02:16.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:02:16.813 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:02:16.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:02:17.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 1, 51), 36.82, 7.13, 0.0, 23.34, 21.44, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:02:17.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:01:51
2025-11-03T10:02:17.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:02:17.757 [DEBUG] [Thread-113806] [transport.py] [_log()] starting thread (client mode): 0xed660e0
2025-11-03T10:02:17.757 [DEBUG] [Thread-113806] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:02:17.772 [DEBUG] [Thread-113806] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:02:17.772 [INFO] [Thread-113806] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:02:17.775 [DEBUG] [Thread-113806] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:02:17.775 [DEBUG] [Thread-113806] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:02:17.775 [DEBUG] [Thread-113806] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:02:17.775 [DEBUG] [Thread-113806] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:02:17.775 [DEBUG] [Thread-113806] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:02:17.775 [DEBUG] [Thread-113806] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:02:17.775 [DEBUG] [Thread-113806] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:02:17.775 [DEBUG] [Thread-113806] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:02:17.775 [DEBUG] [Thread-113806] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:02:17.775 [DEBUG] [Thread-113806] [transport.py] [_log()] client lang: <none>
2025-11-03T10:02:17.775 [DEBUG] [Thread-113806] [transport.py] [_log()] server lang: <none>
2025-11-03T10:02:17.775 [DEBUG] [Thread-113806] [transport.py] [_log()] kex follows: False
2025-11-03T10:02:17.775 [DEBUG] [Thread-113806] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:02:17.775 [DEBUG] [Thread-113806] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:02:17.776 [DEBUG] [Thread-113806] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:02:17.776 [DEBUG] [Thread-113806] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:02:17.776 [DEBUG] [Thread-113806] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:02:17.776 [DEBUG] [Thread-113806] [transport.py] [_log()] Compression: none
2025-11-03T10:02:17.776 [DEBUG] [Thread-113806] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:02:17.793 [DEBUG] [Thread-113806] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:02:17.793 [DEBUG] [Thread-113806] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:02:17.794 [DEBUG] [Thread-113806] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:02:17.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:02:17.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:02:17.796 [DEBUG] [Thread-113806] [transport.py] [_log()] userauth is OK
2025-11-03T10:02:17.796 [DEBUG] [Thread-113806] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:02:17.796 [DEBUG] [Thread-113806] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:02:17.796 [DEBUG] [Thread-113806] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:02:17.796 [DEBUG] [Thread-113806] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:02:17.824 [INFO] [Thread-113806] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:02:17.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:02:18.543 [DEBUG] [Thread-113806] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:02:18.543 [DEBUG] [Thread-113806] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:02:18.544 [DEBUG] [Thread-113806] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:02:18.584 [DEBUG] [Thread-113806] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:02:18.584 [DEBUG] [Thread-113806] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:02:18.586 [DEBUG] [Thread-113806] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:02:18.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:02:18.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:02:18.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:02:18.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:02:18.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:02:18.605 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:02:18.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:02:18.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:02:18.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:02:18.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.334468 -999.00  +20.70  19.33     12   -9.00 1 1 1 1 1   888    0 30.81 33.25 ----- 21.1 19.3 58.6 24.2 27.2 -29.2 26.1 -29.0 24.8 -29.0 25.6 -28.1
2025-11-03T10:02:18.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:02:18.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:02:18.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.334468
2025-11-03T10:02:18.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:02:18.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:02:18.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:02:18.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:02:18.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:02:18.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:01:51', tmtdew=36.82, humidity=7.13, cloud=0.0, wind=23.34, temperature=21.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:01:38.035', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:02:18.606 [DEBUG] [Thread-113806] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:02:18.677 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:02:18.690 [DEBUG] [Thread-113809] [transport.py] [_log()] starting thread (client mode): 0xed67220
2025-11-03T10:02:18.690 [DEBUG] [Thread-113809] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:02:18.705 [DEBUG] [Thread-113809] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:02:18.705 [INFO] [Thread-113809] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:02:18.713 [DEBUG] [Thread-113809] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:02:18.713 [DEBUG] [Thread-113809] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:02:18.713 [DEBUG] [Thread-113809] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:02:18.713 [DEBUG] [Thread-113809] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:02:18.713 [DEBUG] [Thread-113809] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:02:18.713 [DEBUG] [Thread-113809] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:02:18.713 [DEBUG] [Thread-113809] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:02:18.713 [DEBUG] [Thread-113809] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:02:18.713 [DEBUG] [Thread-113809] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:02:18.713 [DEBUG] [Thread-113809] [transport.py] [_log()] client lang: <none>
2025-11-03T10:02:18.713 [DEBUG] [Thread-113809] [transport.py] [_log()] server lang: <none>
2025-11-03T10:02:18.713 [DEBUG] [Thread-113809] [transport.py] [_log()] kex follows: False
2025-11-03T10:02:18.713 [DEBUG] [Thread-113809] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:02:18.713 [DEBUG] [Thread-113809] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:02:18.713 [DEBUG] [Thread-113809] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:02:18.713 [DEBUG] [Thread-113809] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:02:18.713 [DEBUG] [Thread-113809] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:02:18.713 [DEBUG] [Thread-113809] [transport.py] [_log()] Compression: none
2025-11-03T10:02:18.713 [DEBUG] [Thread-113809] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:02:18.770 [DEBUG] [Thread-113809] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:02:18.770 [DEBUG] [Thread-113809] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:02:18.770 [DEBUG] [Thread-113809] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:02:18.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:02:18.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:02:18.828 [DEBUG] [Thread-113809] [transport.py] [_log()] userauth is OK
2025-11-03T10:02:18.828 [DEBUG] [Thread-113809] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:02:18.828 [DEBUG] [Thread-113809] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:02:18.828 [DEBUG] [Thread-113809] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:02:18.828 [DEBUG] [Thread-113809] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:02:18.842 [INFO] [Thread-113809] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:02:18.842 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:02:18.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:02:19.615 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:02:19.616 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:02:19.686 [DEBUG] [Thread-113809] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:02:19.687 [DEBUG] [Thread-113809] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:02:19.734 [DEBUG] [Thread-113809] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:02:19.734 [DEBUG] [Thread-113809] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:02:19.743 [DEBUG] [Thread-113809] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:02:19.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:02:19.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:02:19.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:02:19.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:02:19.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:02:19.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:02:19.781 [DEBUG] [Thread-113809] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:02:30.809 [DEBUG] [Thread-113811 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:02:45.856 [DEBUG] [Thread-113812 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:02:49.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:02:49.804 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:02:49.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:02:50.066 [DEBUG] [Thread-113813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:02:50.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 2, 24), 37.05, 7.01, 0.0, 21.21, 21.56, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:02:50.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:02:24
2025-11-03T10:02:50.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:02:50.751 [DEBUG] [Thread-113814] [transport.py] [_log()] starting thread (client mode): 0xed2d570
2025-11-03T10:02:50.751 [DEBUG] [Thread-113814] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:02:50.770 [DEBUG] [Thread-113814] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:02:50.771 [INFO] [Thread-113814] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:02:50.773 [DEBUG] [Thread-113814] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:02:50.774 [DEBUG] [Thread-113814] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:02:50.774 [DEBUG] [Thread-113814] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:02:50.774 [DEBUG] [Thread-113814] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:02:50.774 [DEBUG] [Thread-113814] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:02:50.774 [DEBUG] [Thread-113814] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:02:50.774 [DEBUG] [Thread-113814] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:02:50.774 [DEBUG] [Thread-113814] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:02:50.774 [DEBUG] [Thread-113814] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:02:50.774 [DEBUG] [Thread-113814] [transport.py] [_log()] client lang: <none>
2025-11-03T10:02:50.774 [DEBUG] [Thread-113814] [transport.py] [_log()] server lang: <none>
2025-11-03T10:02:50.774 [DEBUG] [Thread-113814] [transport.py] [_log()] kex follows: False
2025-11-03T10:02:50.774 [DEBUG] [Thread-113814] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:02:50.775 [DEBUG] [Thread-113814] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:02:50.775 [DEBUG] [Thread-113814] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:02:50.775 [DEBUG] [Thread-113814] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:02:50.775 [DEBUG] [Thread-113814] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:02:50.775 [DEBUG] [Thread-113814] [transport.py] [_log()] Compression: none
2025-11-03T10:02:50.775 [DEBUG] [Thread-113814] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:02:50.793 [DEBUG] [Thread-113814] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:02:50.794 [DEBUG] [Thread-113814] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:02:50.795 [DEBUG] [Thread-113814] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:02:50.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:02:50.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:02:50.797 [DEBUG] [Thread-113814] [transport.py] [_log()] userauth is OK
2025-11-03T10:02:50.797 [DEBUG] [Thread-113814] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:02:50.797 [DEBUG] [Thread-113814] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:02:50.798 [DEBUG] [Thread-113814] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:02:50.798 [DEBUG] [Thread-113814] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:02:50.818 [INFO] [Thread-113814] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:02:50.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:02:51.471 [DEBUG] [Thread-113814] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:02:51.471 [DEBUG] [Thread-113814] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:02:51.472 [DEBUG] [Thread-113814] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:02:51.512 [DEBUG] [Thread-113814] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:02:51.512 [DEBUG] [Thread-113814] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:02:51.516 [DEBUG] [Thread-113814] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:02:51.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:02:51.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:02:51.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:02:51.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:02:51.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:02:51.541 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:02:51.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:02:51.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:02:51.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:02:51.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.334816 -999.00  +20.70  16.02     12   -8.90 1 1 1 1 1   888    0 30.41 27.60 ----- 14.2 16.0 67.0 23.7 27.2 -29.0 26.1 -28.2 24.8 -28.8 25.6 -28.9
2025-11-03T10:02:51.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:02:51.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:02:51.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.334816
2025-11-03T10:02:51.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:02:51.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:02:51.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:02:51.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:02:51.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:02:51.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:02:24', tmtdew=37.05, humidity=7.01, cloud=0.0, wind=21.21, temperature=21.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:02:08.102', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:02:51.544 [DEBUG] [Thread-113814] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:02:51.627 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:02:51.639 [DEBUG] [Thread-113817] [transport.py] [_log()] starting thread (client mode): 0xed2f790
2025-11-03T10:02:51.639 [DEBUG] [Thread-113817] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:02:51.654 [DEBUG] [Thread-113817] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:02:51.654 [INFO] [Thread-113817] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:02:51.661 [DEBUG] [Thread-113817] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:02:51.661 [DEBUG] [Thread-113817] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:02:51.662 [DEBUG] [Thread-113817] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:02:51.662 [DEBUG] [Thread-113817] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:02:51.662 [DEBUG] [Thread-113817] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:02:51.662 [DEBUG] [Thread-113817] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:02:51.662 [DEBUG] [Thread-113817] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:02:51.662 [DEBUG] [Thread-113817] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:02:51.662 [DEBUG] [Thread-113817] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:02:51.662 [DEBUG] [Thread-113817] [transport.py] [_log()] client lang: <none>
2025-11-03T10:02:51.662 [DEBUG] [Thread-113817] [transport.py] [_log()] server lang: <none>
2025-11-03T10:02:51.662 [DEBUG] [Thread-113817] [transport.py] [_log()] kex follows: False
2025-11-03T10:02:51.663 [DEBUG] [Thread-113817] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:02:51.663 [DEBUG] [Thread-113817] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:02:51.663 [DEBUG] [Thread-113817] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:02:51.663 [DEBUG] [Thread-113817] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:02:51.663 [DEBUG] [Thread-113817] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:02:51.663 [DEBUG] [Thread-113817] [transport.py] [_log()] Compression: none
2025-11-03T10:02:51.663 [DEBUG] [Thread-113817] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:02:51.721 [DEBUG] [Thread-113817] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:02:51.721 [DEBUG] [Thread-113817] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:02:51.722 [DEBUG] [Thread-113817] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:02:51.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:02:51.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:02:51.776 [DEBUG] [Thread-113817] [transport.py] [_log()] userauth is OK
2025-11-03T10:02:51.777 [DEBUG] [Thread-113817] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:02:51.777 [DEBUG] [Thread-113817] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:02:51.777 [DEBUG] [Thread-113817] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:02:51.777 [DEBUG] [Thread-113817] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:02:51.809 [INFO] [Thread-113817] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:02:51.809 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:02:51.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:02:52.721 [DEBUG] [Thread-113817] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:02:52.722 [DEBUG] [Thread-113817] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:02:52.770 [DEBUG] [Thread-113817] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:02:52.770 [DEBUG] [Thread-113817] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:02:52.779 [DEBUG] [Thread-113817] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:02:52.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:02:52.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:02:52.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:02:52.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:02:52.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:02:52.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:02:52.814 [DEBUG] [Thread-113817] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:03:00.888 [DEBUG] [Thread-113819 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:03:15.932 [DEBUG] [Thread-113820 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:03:19.759 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:03:19.760 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:03:22.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:03:22.815 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:03:22.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:03:23.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 2, 56), 36.88, 7.01, 0.0, 18.58, 21.37, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:03:23.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:02:56
2025-11-03T10:03:23.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:03:23.759 [DEBUG] [Thread-113821] [transport.py] [_log()] starting thread (client mode): 0xed673a0
2025-11-03T10:03:23.760 [DEBUG] [Thread-113821] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:03:23.781 [DEBUG] [Thread-113821] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:03:23.781 [INFO] [Thread-113821] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:03:23.784 [DEBUG] [Thread-113821] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:03:23.785 [DEBUG] [Thread-113821] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:03:23.785 [DEBUG] [Thread-113821] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:03:23.785 [DEBUG] [Thread-113821] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:03:23.785 [DEBUG] [Thread-113821] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:03:23.785 [DEBUG] [Thread-113821] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:03:23.785 [DEBUG] [Thread-113821] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:03:23.785 [DEBUG] [Thread-113821] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:03:23.785 [DEBUG] [Thread-113821] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:03:23.785 [DEBUG] [Thread-113821] [transport.py] [_log()] client lang: <none>
2025-11-03T10:03:23.785 [DEBUG] [Thread-113821] [transport.py] [_log()] server lang: <none>
2025-11-03T10:03:23.785 [DEBUG] [Thread-113821] [transport.py] [_log()] kex follows: False
2025-11-03T10:03:23.785 [DEBUG] [Thread-113821] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:03:23.785 [DEBUG] [Thread-113821] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:03:23.785 [DEBUG] [Thread-113821] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:03:23.785 [DEBUG] [Thread-113821] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:03:23.785 [DEBUG] [Thread-113821] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:03:23.785 [DEBUG] [Thread-113821] [transport.py] [_log()] Compression: none
2025-11-03T10:03:23.785 [DEBUG] [Thread-113821] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:03:23.802 [DEBUG] [Thread-113821] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:03:23.803 [DEBUG] [Thread-113821] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:03:23.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:03:23.804 [DEBUG] [Thread-113821] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:03:23.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:03:23.806 [DEBUG] [Thread-113821] [transport.py] [_log()] userauth is OK
2025-11-03T10:03:23.806 [DEBUG] [Thread-113821] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:03:23.807 [DEBUG] [Thread-113821] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:03:23.807 [DEBUG] [Thread-113821] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:03:23.807 [DEBUG] [Thread-113821] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:03:23.821 [INFO] [Thread-113821] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:03:23.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:03:24.406 [DEBUG] [Thread-113821] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:03:24.406 [DEBUG] [Thread-113821] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:03:24.407 [DEBUG] [Thread-113821] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:03:24.447 [DEBUG] [Thread-113821] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:03:24.447 [DEBUG] [Thread-113821] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:03:24.451 [DEBUG] [Thread-113821] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:03:24.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:03:24.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:03:24.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:03:24.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:03:24.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:03:24.474 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:03:24.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:03:24.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:03:24.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:03:24.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.335510 -999.00  +20.70  13.05     12   -8.90 1 1 1 1 1   888    0 30.00 17.62 ----- 16.5 13.1 35.2 26.3 27.1 -29.2 26.1 -28.4 24.8 -27.9 25.6 -28.1
2025-11-03T10:03:24.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:03:24.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:03:24.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.335510
2025-11-03T10:03:24.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:03:24.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:03:24.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:03:24.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:03:24.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:03:24.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:02:56', tmtdew=36.88, humidity=7.01, cloud=0.0, wind=18.58, temperature=21.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:03:08.064', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:03:24.478 [DEBUG] [Thread-113821] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:03:24.560 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:03:24.572 [DEBUG] [Thread-113824] [transport.py] [_log()] starting thread (client mode): 0xed2df90
2025-11-03T10:03:24.573 [DEBUG] [Thread-113824] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:03:24.588 [DEBUG] [Thread-113824] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:03:24.588 [INFO] [Thread-113824] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:03:24.595 [DEBUG] [Thread-113824] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:03:24.596 [DEBUG] [Thread-113824] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:03:24.596 [DEBUG] [Thread-113824] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:03:24.596 [DEBUG] [Thread-113824] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:03:24.596 [DEBUG] [Thread-113824] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:03:24.596 [DEBUG] [Thread-113824] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:03:24.596 [DEBUG] [Thread-113824] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:03:24.596 [DEBUG] [Thread-113824] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:03:24.596 [DEBUG] [Thread-113824] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:03:24.596 [DEBUG] [Thread-113824] [transport.py] [_log()] client lang: <none>
2025-11-03T10:03:24.596 [DEBUG] [Thread-113824] [transport.py] [_log()] server lang: <none>
2025-11-03T10:03:24.596 [DEBUG] [Thread-113824] [transport.py] [_log()] kex follows: False
2025-11-03T10:03:24.596 [DEBUG] [Thread-113824] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:03:24.596 [DEBUG] [Thread-113824] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:03:24.596 [DEBUG] [Thread-113824] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:03:24.596 [DEBUG] [Thread-113824] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:03:24.596 [DEBUG] [Thread-113824] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:03:24.596 [DEBUG] [Thread-113824] [transport.py] [_log()] Compression: none
2025-11-03T10:03:24.596 [DEBUG] [Thread-113824] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:03:24.653 [DEBUG] [Thread-113824] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:03:24.654 [DEBUG] [Thread-113824] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:03:24.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:03:24.655 [DEBUG] [Thread-113824] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:03:24.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:03:24.711 [DEBUG] [Thread-113824] [transport.py] [_log()] userauth is OK
2025-11-03T10:03:24.712 [DEBUG] [Thread-113824] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:03:24.712 [DEBUG] [Thread-113824] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:03:24.712 [DEBUG] [Thread-113824] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:03:24.712 [DEBUG] [Thread-113824] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:03:24.731 [INFO] [Thread-113824] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:03:24.732 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:03:24.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:03:25.683 [DEBUG] [Thread-113824] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:03:25.683 [DEBUG] [Thread-113824] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:03:25.731 [DEBUG] [Thread-113824] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:03:25.731 [DEBUG] [Thread-113824] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:03:25.740 [DEBUG] [Thread-113824] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:03:25.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:03:25.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:03:25.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:03:25.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:03:25.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:03:25.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:03:25.778 [DEBUG] [Thread-113824] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:03:30.960 [DEBUG] [Thread-113826 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:03:46.000 [DEBUG] [Thread-113827 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:03:50.131 [DEBUG] [Thread-113828 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:03:55.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:03:55.800 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:03:55.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:03:56.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 3, 28), 36.74, 7.08, 0.0, 15.95, 21.28, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:03:56.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:03:28
2025-11-03T10:03:56.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:03:56.714 [DEBUG] [Thread-113829] [transport.py] [_log()] starting thread (client mode): 0xed2ddb0
2025-11-03T10:03:56.714 [DEBUG] [Thread-113829] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:03:56.735 [DEBUG] [Thread-113829] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:03:56.735 [INFO] [Thread-113829] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:03:56.739 [DEBUG] [Thread-113829] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:03:56.739 [DEBUG] [Thread-113829] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:03:56.739 [DEBUG] [Thread-113829] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:03:56.739 [DEBUG] [Thread-113829] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:03:56.739 [DEBUG] [Thread-113829] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:03:56.739 [DEBUG] [Thread-113829] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:03:56.739 [DEBUG] [Thread-113829] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:03:56.739 [DEBUG] [Thread-113829] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:03:56.739 [DEBUG] [Thread-113829] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:03:56.739 [DEBUG] [Thread-113829] [transport.py] [_log()] client lang: <none>
2025-11-03T10:03:56.740 [DEBUG] [Thread-113829] [transport.py] [_log()] server lang: <none>
2025-11-03T10:03:56.740 [DEBUG] [Thread-113829] [transport.py] [_log()] kex follows: False
2025-11-03T10:03:56.740 [DEBUG] [Thread-113829] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:03:56.740 [DEBUG] [Thread-113829] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:03:56.740 [DEBUG] [Thread-113829] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:03:56.740 [DEBUG] [Thread-113829] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:03:56.740 [DEBUG] [Thread-113829] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:03:56.740 [DEBUG] [Thread-113829] [transport.py] [_log()] Compression: none
2025-11-03T10:03:56.740 [DEBUG] [Thread-113829] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:03:56.760 [DEBUG] [Thread-113829] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:03:56.761 [DEBUG] [Thread-113829] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:03:56.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:03:56.762 [DEBUG] [Thread-113829] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:03:56.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:03:56.764 [DEBUG] [Thread-113829] [transport.py] [_log()] userauth is OK
2025-11-03T10:03:56.764 [DEBUG] [Thread-113829] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:03:56.764 [DEBUG] [Thread-113829] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:03:56.764 [DEBUG] [Thread-113829] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:03:56.765 [DEBUG] [Thread-113829] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:03:56.800 [INFO] [Thread-113829] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:03:56.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:03:57.421 [DEBUG] [Thread-113829] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:03:57.421 [DEBUG] [Thread-113829] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:03:57.422 [DEBUG] [Thread-113829] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:03:57.462 [DEBUG] [Thread-113829] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:03:57.462 [DEBUG] [Thread-113829] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:03:57.466 [DEBUG] [Thread-113829] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:03:57.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:03:57.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:03:57.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:03:57.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:03:57.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:03:57.488 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:03:57.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:03:57.489 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:03:57.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:03:57.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.335857 -999.00  +20.70  20.53     12   -8.80 1 1 1 1 1   888    0 30.42 15.32 ----- 21.2 20.5 62.6 25.8 27.2 -29.1 26.1 -28.3 24.8 -28.5 25.6 -28.3
2025-11-03T10:03:57.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:03:57.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:03:57.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.335857
2025-11-03T10:03:57.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:03:57.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:03:57.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:03:57.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:03:57.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:03:57.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:03:28', tmtdew=36.74, humidity=7.08, cloud=0.0, wind=15.95, temperature=21.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:03:38.045', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:03:57.491 [DEBUG] [Thread-113829] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:03:57.575 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:03:57.621 [DEBUG] [Thread-113832] [transport.py] [_log()] starting thread (client mode): 0xed64670
2025-11-03T10:03:57.622 [DEBUG] [Thread-113832] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:03:57.635 [DEBUG] [Thread-113832] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:03:57.635 [INFO] [Thread-113832] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:03:57.643 [DEBUG] [Thread-113832] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:03:57.643 [DEBUG] [Thread-113832] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:03:57.643 [DEBUG] [Thread-113832] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:03:57.643 [DEBUG] [Thread-113832] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:03:57.643 [DEBUG] [Thread-113832] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:03:57.643 [DEBUG] [Thread-113832] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:03:57.643 [DEBUG] [Thread-113832] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:03:57.643 [DEBUG] [Thread-113832] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:03:57.643 [DEBUG] [Thread-113832] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:03:57.643 [DEBUG] [Thread-113832] [transport.py] [_log()] client lang: <none>
2025-11-03T10:03:57.643 [DEBUG] [Thread-113832] [transport.py] [_log()] server lang: <none>
2025-11-03T10:03:57.644 [DEBUG] [Thread-113832] [transport.py] [_log()] kex follows: False
2025-11-03T10:03:57.644 [DEBUG] [Thread-113832] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:03:57.644 [DEBUG] [Thread-113832] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:03:57.644 [DEBUG] [Thread-113832] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:03:57.644 [DEBUG] [Thread-113832] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:03:57.644 [DEBUG] [Thread-113832] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:03:57.644 [DEBUG] [Thread-113832] [transport.py] [_log()] Compression: none
2025-11-03T10:03:57.644 [DEBUG] [Thread-113832] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:03:57.704 [DEBUG] [Thread-113832] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:03:57.704 [DEBUG] [Thread-113832] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:03:57.705 [DEBUG] [Thread-113832] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:03:57.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:03:57.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:03:57.766 [DEBUG] [Thread-113832] [transport.py] [_log()] userauth is OK
2025-11-03T10:03:57.767 [DEBUG] [Thread-113832] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:03:57.767 [DEBUG] [Thread-113832] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:03:57.767 [DEBUG] [Thread-113832] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:03:57.767 [DEBUG] [Thread-113832] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:03:57.786 [INFO] [Thread-113832] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:03:57.786 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:03:57.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:03:58.616 [DEBUG] [Thread-113832] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:03:58.617 [DEBUG] [Thread-113832] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:03:58.665 [DEBUG] [Thread-113832] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:03:58.665 [DEBUG] [Thread-113832] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:03:58.675 [DEBUG] [Thread-113832] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:03:58.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:03:58.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:03:58.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:03:58.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:03:58.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:03:58.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:03:58.711 [DEBUG] [Thread-113832] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:04:01.032 [DEBUG] [Thread-113834 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:04:16.086 [DEBUG] [Thread-113835 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:04:19.901 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:04:19.902 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:04:28.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:04:28.709 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:04:28.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:04:29.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 4), 36.76, 7.11, 0.0, 17.1, 21.12, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:04:29.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:04:00
2025-11-03T10:04:29.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:04:29.666 [DEBUG] [Thread-113836] [transport.py] [_log()] starting thread (client mode): 0xed66860
2025-11-03T10:04:29.666 [DEBUG] [Thread-113836] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:04:29.686 [DEBUG] [Thread-113836] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:04:29.686 [INFO] [Thread-113836] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:04:29.689 [DEBUG] [Thread-113836] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:04:29.689 [DEBUG] [Thread-113836] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:04:29.690 [DEBUG] [Thread-113836] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:04:29.690 [DEBUG] [Thread-113836] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:04:29.690 [DEBUG] [Thread-113836] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:04:29.690 [DEBUG] [Thread-113836] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:04:29.690 [DEBUG] [Thread-113836] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:04:29.690 [DEBUG] [Thread-113836] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:04:29.690 [DEBUG] [Thread-113836] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:04:29.690 [DEBUG] [Thread-113836] [transport.py] [_log()] client lang: <none>
2025-11-03T10:04:29.690 [DEBUG] [Thread-113836] [transport.py] [_log()] server lang: <none>
2025-11-03T10:04:29.690 [DEBUG] [Thread-113836] [transport.py] [_log()] kex follows: False
2025-11-03T10:04:29.690 [DEBUG] [Thread-113836] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:04:29.690 [DEBUG] [Thread-113836] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:04:29.690 [DEBUG] [Thread-113836] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:04:29.690 [DEBUG] [Thread-113836] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:04:29.690 [DEBUG] [Thread-113836] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:04:29.690 [DEBUG] [Thread-113836] [transport.py] [_log()] Compression: none
2025-11-03T10:04:29.690 [DEBUG] [Thread-113836] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:04:29.696 [DEBUG] [Thread-113836] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:04:29.697 [DEBUG] [Thread-113836] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:04:29.697 [DEBUG] [Thread-113836] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:04:29.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:04:29.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:04:29.697 [DEBUG] [Thread-113836] [transport.py] [_log()] userauth is OK
2025-11-03T10:04:29.697 [DEBUG] [Thread-113836] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:04:29.697 [DEBUG] [Thread-113836] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:04:29.697 [DEBUG] [Thread-113836] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:04:29.697 [DEBUG] [Thread-113836] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:04:29.707 [INFO] [Thread-113836] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:04:29.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:04:30.341 [DEBUG] [Thread-113836] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:04:30.341 [DEBUG] [Thread-113836] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:04:30.341 [DEBUG] [Thread-113836] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:04:30.382 [DEBUG] [Thread-113836] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:04:30.382 [DEBUG] [Thread-113836] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:04:30.385 [DEBUG] [Thread-113836] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:04:30.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:04:30.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:04:30.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:04:30.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:04:30.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:04:30.402 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:04:30.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:04:30.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:04:30.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:04:30.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.336204 -999.00  +20.90  17.60     12   -8.80 1 1 1 1 1   888    0 30.05 11.85 ----- 20.4 17.6 37.2 22.6 27.3 -29.1 26.2 -28.8 24.9 -29.2 25.6 -27.8
2025-11-03T10:04:30.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:04:30.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:04:30.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.336204
2025-11-03T10:04:30.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:04:30.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:04:30.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:04:30.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:04:30.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:04:30.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:04:00', tmtdew=36.76, humidity=7.11, cloud=0.0, wind=17.1, temperature=21.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:04:08.026', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:04:30.403 [DEBUG] [Thread-113836] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:04:30.477 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:04:30.491 [DEBUG] [Thread-113839] [transport.py] [_log()] starting thread (client mode): 0x81daa70
2025-11-03T10:04:30.491 [DEBUG] [Thread-113839] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:04:30.505 [DEBUG] [Thread-113839] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:04:30.505 [INFO] [Thread-113839] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:04:30.513 [DEBUG] [Thread-113839] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:04:30.513 [DEBUG] [Thread-113839] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:04:30.513 [DEBUG] [Thread-113839] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:04:30.513 [DEBUG] [Thread-113839] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:04:30.513 [DEBUG] [Thread-113839] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:04:30.513 [DEBUG] [Thread-113839] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:04:30.513 [DEBUG] [Thread-113839] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:04:30.513 [DEBUG] [Thread-113839] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:04:30.513 [DEBUG] [Thread-113839] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:04:30.513 [DEBUG] [Thread-113839] [transport.py] [_log()] client lang: <none>
2025-11-03T10:04:30.513 [DEBUG] [Thread-113839] [transport.py] [_log()] server lang: <none>
2025-11-03T10:04:30.513 [DEBUG] [Thread-113839] [transport.py] [_log()] kex follows: False
2025-11-03T10:04:30.513 [DEBUG] [Thread-113839] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:04:30.513 [DEBUG] [Thread-113839] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:04:30.513 [DEBUG] [Thread-113839] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:04:30.513 [DEBUG] [Thread-113839] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:04:30.513 [DEBUG] [Thread-113839] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:04:30.513 [DEBUG] [Thread-113839] [transport.py] [_log()] Compression: none
2025-11-03T10:04:30.513 [DEBUG] [Thread-113839] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:04:30.569 [DEBUG] [Thread-113839] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:04:30.569 [DEBUG] [Thread-113839] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:04:30.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:04:30.569 [DEBUG] [Thread-113839] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:04:30.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:04:30.630 [DEBUG] [Thread-113839] [transport.py] [_log()] userauth is OK
2025-11-03T10:04:30.630 [DEBUG] [Thread-113839] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:04:30.630 [DEBUG] [Thread-113839] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:04:30.630 [DEBUG] [Thread-113839] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:04:30.630 [DEBUG] [Thread-113839] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:04:30.645 [INFO] [Thread-113839] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:04:30.645 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:04:30.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:04:31.125 [DEBUG] [Thread-113841 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:04:31.504 [DEBUG] [Thread-113839] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:04:31.504 [DEBUG] [Thread-113839] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:04:31.552 [DEBUG] [Thread-113839] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:04:31.552 [DEBUG] [Thread-113839] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:04:31.561 [DEBUG] [Thread-113839] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:04:31.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:04:31.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:04:31.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:04:31.585 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:04:31.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:04:31.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:04:31.593 [DEBUG] [Thread-113839] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:04:46.163 [DEBUG] [Thread-113842 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:04:50.192 [DEBUG] [Thread-113843 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:05:01.200 [DEBUG] [Thread-113844 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:05:01.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:05:01.616 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:05:01.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:05:02.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 4, 33), 36.74, 7.51, 0.0, 11.96, 21.32, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:05:02.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:04:33
2025-11-03T10:05:02.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:05:02.576 [DEBUG] [Thread-113845] [transport.py] [_log()] starting thread (client mode): 0xed64e50
2025-11-03T10:05:02.576 [DEBUG] [Thread-113845] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:05:02.597 [DEBUG] [Thread-113845] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:05:02.597 [INFO] [Thread-113845] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:05:02.598 [DEBUG] [Thread-113845] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:05:02.598 [DEBUG] [Thread-113845] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:05:02.598 [DEBUG] [Thread-113845] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:05:02.598 [DEBUG] [Thread-113845] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:05:02.598 [DEBUG] [Thread-113845] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:05:02.598 [DEBUG] [Thread-113845] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:05:02.598 [DEBUG] [Thread-113845] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:05:02.599 [DEBUG] [Thread-113845] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:05:02.599 [DEBUG] [Thread-113845] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:05:02.599 [DEBUG] [Thread-113845] [transport.py] [_log()] client lang: <none>
2025-11-03T10:05:02.599 [DEBUG] [Thread-113845] [transport.py] [_log()] server lang: <none>
2025-11-03T10:05:02.599 [DEBUG] [Thread-113845] [transport.py] [_log()] kex follows: False
2025-11-03T10:05:02.599 [DEBUG] [Thread-113845] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:05:02.599 [DEBUG] [Thread-113845] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:05:02.599 [DEBUG] [Thread-113845] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:05:02.599 [DEBUG] [Thread-113845] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:05:02.599 [DEBUG] [Thread-113845] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:05:02.599 [DEBUG] [Thread-113845] [transport.py] [_log()] Compression: none
2025-11-03T10:05:02.599 [DEBUG] [Thread-113845] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:05:02.619 [DEBUG] [Thread-113845] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:05:02.619 [DEBUG] [Thread-113845] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:05:02.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:05:02.621 [DEBUG] [Thread-113845] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:05:02.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:05:02.623 [DEBUG] [Thread-113845] [transport.py] [_log()] userauth is OK
2025-11-03T10:05:02.623 [DEBUG] [Thread-113845] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:05:02.623 [DEBUG] [Thread-113845] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:05:02.623 [DEBUG] [Thread-113845] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:05:02.623 [DEBUG] [Thread-113845] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:05:02.645 [INFO] [Thread-113845] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:05:02.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:05:03.472 [DEBUG] [Thread-113845] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:05:03.472 [DEBUG] [Thread-113845] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:05:03.473 [DEBUG] [Thread-113845] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:05:03.513 [DEBUG] [Thread-113845] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:05:03.513 [DEBUG] [Thread-113845] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:05:03.515 [DEBUG] [Thread-113845] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:05:03.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:05:03.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:05:03.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:05:03.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:05:03.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:05:03.562 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:05:03.562 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:05:03.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:05:03.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:05:03.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.336552 -999.00  +20.90  22.28     12   -8.70 1 1 1 1 1   888    0 30.19 8.08 ----- 23.6 22.3 43.4 27.9 27.3 -29.4 26.2 -27.8 24.9 -27.6 25.7 -28.1
2025-11-03T10:05:03.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:05:03.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:05:03.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.336552
2025-11-03T10:05:03.571 [DEBUG] [Thread-113845] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:05:03.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:05:03.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:05:03.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:05:03.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:05:03.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:05:03.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:04:33', tmtdew=36.74, humidity=7.51, cloud=0.0, wind=11.96, temperature=21.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:04:38.093', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:05:03.658 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:05:03.672 [DEBUG] [Thread-113848] [transport.py] [_log()] starting thread (client mode): 0xed67a60
2025-11-03T10:05:03.672 [DEBUG] [Thread-113848] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:05:03.686 [DEBUG] [Thread-113848] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:05:03.686 [INFO] [Thread-113848] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:05:03.696 [DEBUG] [Thread-113848] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:05:03.697 [DEBUG] [Thread-113848] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:05:03.697 [DEBUG] [Thread-113848] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:05:03.697 [DEBUG] [Thread-113848] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:05:03.697 [DEBUG] [Thread-113848] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:05:03.697 [DEBUG] [Thread-113848] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:05:03.697 [DEBUG] [Thread-113848] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:05:03.697 [DEBUG] [Thread-113848] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:05:03.697 [DEBUG] [Thread-113848] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:05:03.697 [DEBUG] [Thread-113848] [transport.py] [_log()] client lang: <none>
2025-11-03T10:05:03.697 [DEBUG] [Thread-113848] [transport.py] [_log()] server lang: <none>
2025-11-03T10:05:03.697 [DEBUG] [Thread-113848] [transport.py] [_log()] kex follows: False
2025-11-03T10:05:03.697 [DEBUG] [Thread-113848] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:05:03.697 [DEBUG] [Thread-113848] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:05:03.698 [DEBUG] [Thread-113848] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:05:03.698 [DEBUG] [Thread-113848] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:05:03.698 [DEBUG] [Thread-113848] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:05:03.698 [DEBUG] [Thread-113848] [transport.py] [_log()] Compression: none
2025-11-03T10:05:03.698 [DEBUG] [Thread-113848] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:05:03.763 [DEBUG] [Thread-113848] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:05:03.764 [DEBUG] [Thread-113848] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:05:03.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:05:03.765 [DEBUG] [Thread-113848] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:05:03.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:05:03.818 [DEBUG] [Thread-113848] [transport.py] [_log()] userauth is OK
2025-11-03T10:05:03.819 [DEBUG] [Thread-113848] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:05:03.819 [DEBUG] [Thread-113848] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:05:03.819 [DEBUG] [Thread-113848] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:05:03.819 [DEBUG] [Thread-113848] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:05:03.843 [INFO] [Thread-113848] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:05:03.843 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:05:03.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:05:04.713 [DEBUG] [Thread-113848] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:05:04.714 [DEBUG] [Thread-113848] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:05:04.763 [DEBUG] [Thread-113848] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:05:04.763 [DEBUG] [Thread-113848] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:05:04.776 [DEBUG] [Thread-113848] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:05:04.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:05:04.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:05:04.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:05:04.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:05:04.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:05:04.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:05:04.821 [DEBUG] [Thread-113848] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:05:16.231 [DEBUG] [Thread-113850 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:05:20.041 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:05:20.042 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:05:31.291 [DEBUG] [Thread-113851 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:05:34.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:05:34.842 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:05:34.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:05:35.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 5, 5), 36.87, 7.46, 0.0, 15.03, 21.51, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:05:35.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:05:05
2025-11-03T10:05:35.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:05:35.815 [DEBUG] [Thread-113852] [transport.py] [_log()] starting thread (client mode): 0xed2f6a0
2025-11-03T10:05:35.816 [DEBUG] [Thread-113852] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:05:35.840 [DEBUG] [Thread-113852] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:05:35.840 [INFO] [Thread-113852] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:05:35.843 [DEBUG] [Thread-113852] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:05:35.843 [DEBUG] [Thread-113852] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:05:35.843 [DEBUG] [Thread-113852] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:05:35.843 [DEBUG] [Thread-113852] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:05:35.843 [DEBUG] [Thread-113852] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:05:35.843 [DEBUG] [Thread-113852] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:05:35.844 [DEBUG] [Thread-113852] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:05:35.844 [DEBUG] [Thread-113852] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:05:35.844 [DEBUG] [Thread-113852] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:05:35.844 [DEBUG] [Thread-113852] [transport.py] [_log()] client lang: <none>
2025-11-03T10:05:35.844 [DEBUG] [Thread-113852] [transport.py] [_log()] server lang: <none>
2025-11-03T10:05:35.844 [DEBUG] [Thread-113852] [transport.py] [_log()] kex follows: False
2025-11-03T10:05:35.844 [DEBUG] [Thread-113852] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:05:35.844 [DEBUG] [Thread-113852] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:05:35.844 [DEBUG] [Thread-113852] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:05:35.844 [DEBUG] [Thread-113852] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:05:35.844 [DEBUG] [Thread-113852] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:05:35.844 [DEBUG] [Thread-113852] [transport.py] [_log()] Compression: none
2025-11-03T10:05:35.844 [DEBUG] [Thread-113852] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:05:35.861 [DEBUG] [Thread-113852] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:05:35.862 [DEBUG] [Thread-113852] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:05:35.862 [DEBUG] [Thread-113852] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:05:35.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:05:35.864 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:05:35.865 [DEBUG] [Thread-113852] [transport.py] [_log()] userauth is OK
2025-11-03T10:05:35.865 [DEBUG] [Thread-113852] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:05:35.865 [DEBUG] [Thread-113852] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:05:35.865 [DEBUG] [Thread-113852] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:05:35.865 [DEBUG] [Thread-113852] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:05:35.885 [INFO] [Thread-113852] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:05:35.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:05:36.512 [DEBUG] [Thread-113852] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:05:36.512 [DEBUG] [Thread-113852] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:05:36.512 [DEBUG] [Thread-113852] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:05:36.553 [DEBUG] [Thread-113852] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:05:36.553 [DEBUG] [Thread-113852] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:05:36.556 [DEBUG] [Thread-113852] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:05:36.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:05:36.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:05:36.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:05:36.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:05:36.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:05:36.578 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:05:36.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:05:36.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:05:36.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:05:36.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.336899 -999.00  +21.00  27.71     12   -8.90 1 1 1 1 1   888    0 30.20 6.97 ----- 25.7 27.7 41.8 31.1 27.3 -29.9 26.2 -30.4 24.9 -30.3 25.7 -27.9
2025-11-03T10:05:36.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:05:36.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:05:36.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.336899
2025-11-03T10:05:36.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:05:36.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:05:36.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:05:36.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:05:36.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:05:36.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:05:05', tmtdew=36.87, humidity=7.46, cloud=0.0, wind=15.03, temperature=21.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:05:08.074', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:05:36.582 [DEBUG] [Thread-113852] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:05:36.665 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:05:36.677 [DEBUG] [Thread-113855] [transport.py] [_log()] starting thread (client mode): 0xed2cfd0
2025-11-03T10:05:36.677 [DEBUG] [Thread-113855] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:05:36.692 [DEBUG] [Thread-113855] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:05:36.692 [INFO] [Thread-113855] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:05:36.700 [DEBUG] [Thread-113855] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:05:36.700 [DEBUG] [Thread-113855] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:05:36.701 [DEBUG] [Thread-113855] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:05:36.701 [DEBUG] [Thread-113855] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:05:36.701 [DEBUG] [Thread-113855] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:05:36.701 [DEBUG] [Thread-113855] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:05:36.701 [DEBUG] [Thread-113855] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:05:36.701 [DEBUG] [Thread-113855] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:05:36.701 [DEBUG] [Thread-113855] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:05:36.701 [DEBUG] [Thread-113855] [transport.py] [_log()] client lang: <none>
2025-11-03T10:05:36.701 [DEBUG] [Thread-113855] [transport.py] [_log()] server lang: <none>
2025-11-03T10:05:36.702 [DEBUG] [Thread-113855] [transport.py] [_log()] kex follows: False
2025-11-03T10:05:36.702 [DEBUG] [Thread-113855] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:05:36.702 [DEBUG] [Thread-113855] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:05:36.702 [DEBUG] [Thread-113855] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:05:36.702 [DEBUG] [Thread-113855] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:05:36.703 [DEBUG] [Thread-113855] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:05:36.703 [DEBUG] [Thread-113855] [transport.py] [_log()] Compression: none
2025-11-03T10:05:36.703 [DEBUG] [Thread-113855] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:05:36.760 [DEBUG] [Thread-113855] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:05:36.760 [DEBUG] [Thread-113855] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:05:36.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:05:36.761 [DEBUG] [Thread-113855] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:05:36.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:05:36.820 [DEBUG] [Thread-113855] [transport.py] [_log()] userauth is OK
2025-11-03T10:05:36.820 [DEBUG] [Thread-113855] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:05:36.821 [DEBUG] [Thread-113855] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:05:36.821 [DEBUG] [Thread-113855] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:05:36.821 [DEBUG] [Thread-113855] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:05:36.839 [INFO] [Thread-113855] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:05:36.840 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:05:36.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:05:37.689 [DEBUG] [Thread-113855] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:05:37.690 [DEBUG] [Thread-113855] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:05:37.738 [DEBUG] [Thread-113855] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:05:37.738 [DEBUG] [Thread-113855] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:05:37.748 [DEBUG] [Thread-113855] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:05:37.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:05:37.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:05:37.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:05:37.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:05:37.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:05:37.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:05:37.785 [DEBUG] [Thread-113855] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:05:46.326 [DEBUG] [Thread-113857 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:05:50.247 [DEBUG] [Thread-113858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:06:01.367 [DEBUG] [Thread-113859 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:06:07.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:06:07.780 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:06:07.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:06:08.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 5, 37), 37.3, 6.88, 0.0, 18.0, 21.72, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:06:08.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:05:37
2025-11-03T10:06:08.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:06:08.709 [DEBUG] [Thread-113860] [transport.py] [_log()] starting thread (client mode): 0xed2c970
2025-11-03T10:06:08.709 [DEBUG] [Thread-113860] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:06:08.730 [DEBUG] [Thread-113860] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:06:08.730 [INFO] [Thread-113860] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:06:08.740 [DEBUG] [Thread-113860] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:06:08.740 [DEBUG] [Thread-113860] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:06:08.740 [DEBUG] [Thread-113860] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:06:08.741 [DEBUG] [Thread-113860] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:06:08.741 [DEBUG] [Thread-113860] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:06:08.741 [DEBUG] [Thread-113860] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:06:08.741 [DEBUG] [Thread-113860] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:06:08.741 [DEBUG] [Thread-113860] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:06:08.741 [DEBUG] [Thread-113860] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:06:08.741 [DEBUG] [Thread-113860] [transport.py] [_log()] client lang: <none>
2025-11-03T10:06:08.741 [DEBUG] [Thread-113860] [transport.py] [_log()] server lang: <none>
2025-11-03T10:06:08.741 [DEBUG] [Thread-113860] [transport.py] [_log()] kex follows: False
2025-11-03T10:06:08.741 [DEBUG] [Thread-113860] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:06:08.741 [DEBUG] [Thread-113860] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:06:08.741 [DEBUG] [Thread-113860] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:06:08.741 [DEBUG] [Thread-113860] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:06:08.741 [DEBUG] [Thread-113860] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:06:08.741 [DEBUG] [Thread-113860] [transport.py] [_log()] Compression: none
2025-11-03T10:06:08.741 [DEBUG] [Thread-113860] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:06:08.759 [DEBUG] [Thread-113860] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:06:08.760 [DEBUG] [Thread-113860] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:06:08.760 [DEBUG] [Thread-113860] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:06:08.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:06:08.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:06:08.763 [DEBUG] [Thread-113860] [transport.py] [_log()] userauth is OK
2025-11-03T10:06:08.763 [DEBUG] [Thread-113860] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:06:08.763 [DEBUG] [Thread-113860] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:06:08.763 [DEBUG] [Thread-113860] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:06:08.763 [DEBUG] [Thread-113860] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:06:08.790 [INFO] [Thread-113860] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:06:08.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:06:09.414 [DEBUG] [Thread-113860] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:06:09.415 [DEBUG] [Thread-113860] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:06:09.415 [DEBUG] [Thread-113860] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:06:09.456 [DEBUG] [Thread-113860] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:06:09.456 [DEBUG] [Thread-113860] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:06:09.459 [DEBUG] [Thread-113860] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:06:09.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:06:09.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:06:09.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:06:09.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:06:09.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:06:09.482 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:06:09.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:06:09.482 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:06:09.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:06:09.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.337246 -999.00  +20.90  18.94     12   -8.80 1 1 1 1 1   888    0 30.05 6.83 ----- 20.9 18.9 20.5 33.2 27.2 -29.0 26.2 -30.3 25.0 -28.9 25.7 -28.2
2025-11-03T10:06:09.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:06:09.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:06:09.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.337246
2025-11-03T10:06:09.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:06:09.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:06:09.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:06:09.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:06:09.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:06:09.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:05:37', tmtdew=37.3, humidity=6.88, cloud=0.0, wind=18.0, temperature=21.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:05:38.054', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:06:09.485 [DEBUG] [Thread-113860] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:06:09.568 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:06:09.582 [DEBUG] [Thread-113863] [transport.py] [_log()] starting thread (client mode): 0xedb2b30
2025-11-03T10:06:09.582 [DEBUG] [Thread-113863] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:06:09.601 [DEBUG] [Thread-113863] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:06:09.602 [INFO] [Thread-113863] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:06:09.609 [DEBUG] [Thread-113863] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:06:09.609 [DEBUG] [Thread-113863] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:06:09.609 [DEBUG] [Thread-113863] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:06:09.610 [DEBUG] [Thread-113863] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:06:09.610 [DEBUG] [Thread-113863] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:06:09.610 [DEBUG] [Thread-113863] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:06:09.610 [DEBUG] [Thread-113863] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:06:09.610 [DEBUG] [Thread-113863] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:06:09.610 [DEBUG] [Thread-113863] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:06:09.611 [DEBUG] [Thread-113863] [transport.py] [_log()] client lang: <none>
2025-11-03T10:06:09.611 [DEBUG] [Thread-113863] [transport.py] [_log()] server lang: <none>
2025-11-03T10:06:09.611 [DEBUG] [Thread-113863] [transport.py] [_log()] kex follows: False
2025-11-03T10:06:09.611 [DEBUG] [Thread-113863] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:06:09.611 [DEBUG] [Thread-113863] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:06:09.611 [DEBUG] [Thread-113863] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:06:09.611 [DEBUG] [Thread-113863] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:06:09.611 [DEBUG] [Thread-113863] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:06:09.611 [DEBUG] [Thread-113863] [transport.py] [_log()] Compression: none
2025-11-03T10:06:09.611 [DEBUG] [Thread-113863] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:06:09.668 [DEBUG] [Thread-113863] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:06:09.669 [DEBUG] [Thread-113863] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:06:09.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:06:09.670 [DEBUG] [Thread-113863] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:06:09.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:06:09.731 [DEBUG] [Thread-113863] [transport.py] [_log()] userauth is OK
2025-11-03T10:06:09.732 [DEBUG] [Thread-113863] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:06:09.732 [DEBUG] [Thread-113863] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:06:09.732 [DEBUG] [Thread-113863] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:06:09.732 [DEBUG] [Thread-113863] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:06:09.751 [INFO] [Thread-113863] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:06:09.751 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:06:09.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:06:10.586 [DEBUG] [Thread-113863] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:06:10.586 [DEBUG] [Thread-113863] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:06:10.633 [DEBUG] [Thread-113863] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:06:10.633 [DEBUG] [Thread-113863] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:06:10.642 [DEBUG] [Thread-113863] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:06:10.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:06:10.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:06:10.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:06:10.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:06:10.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:06:10.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:06:10.673 [DEBUG] [Thread-113863] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:06:16.403 [DEBUG] [Thread-113865 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:06:20.184 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:06:20.185 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:06:31.445 [DEBUG] [Thread-113866 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:06:40.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:06:40.696 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:06:40.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:06:41.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 6, 9), 37.05, 7.01, 0.0, 16.55, 21.67, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:06:41.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:06:09
2025-11-03T10:06:41.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:06:41.622 [DEBUG] [Thread-113867] [transport.py] [_log()] starting thread (client mode): 0xed2fa90
2025-11-03T10:06:41.623 [DEBUG] [Thread-113867] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:06:41.642 [DEBUG] [Thread-113867] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:06:41.642 [INFO] [Thread-113867] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:06:41.645 [DEBUG] [Thread-113867] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:06:41.645 [DEBUG] [Thread-113867] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:06:41.645 [DEBUG] [Thread-113867] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:06:41.645 [DEBUG] [Thread-113867] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:06:41.645 [DEBUG] [Thread-113867] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:06:41.645 [DEBUG] [Thread-113867] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:06:41.645 [DEBUG] [Thread-113867] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:06:41.645 [DEBUG] [Thread-113867] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:06:41.646 [DEBUG] [Thread-113867] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:06:41.646 [DEBUG] [Thread-113867] [transport.py] [_log()] client lang: <none>
2025-11-03T10:06:41.646 [DEBUG] [Thread-113867] [transport.py] [_log()] server lang: <none>
2025-11-03T10:06:41.646 [DEBUG] [Thread-113867] [transport.py] [_log()] kex follows: False
2025-11-03T10:06:41.646 [DEBUG] [Thread-113867] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:06:41.646 [DEBUG] [Thread-113867] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:06:41.646 [DEBUG] [Thread-113867] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:06:41.646 [DEBUG] [Thread-113867] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:06:41.646 [DEBUG] [Thread-113867] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:06:41.646 [DEBUG] [Thread-113867] [transport.py] [_log()] Compression: none
2025-11-03T10:06:41.646 [DEBUG] [Thread-113867] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:06:41.664 [DEBUG] [Thread-113867] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:06:41.665 [DEBUG] [Thread-113867] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:06:41.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:06:41.666 [DEBUG] [Thread-113867] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:06:41.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:06:41.669 [DEBUG] [Thread-113867] [transport.py] [_log()] userauth is OK
2025-11-03T10:06:41.669 [DEBUG] [Thread-113867] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:06:41.669 [DEBUG] [Thread-113867] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:06:41.669 [DEBUG] [Thread-113867] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:06:41.669 [DEBUG] [Thread-113867] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:06:41.686 [INFO] [Thread-113867] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:06:41.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:06:42.318 [DEBUG] [Thread-113867] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:06:42.319 [DEBUG] [Thread-113867] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:06:42.319 [DEBUG] [Thread-113867] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:06:42.359 [DEBUG] [Thread-113867] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:06:42.359 [DEBUG] [Thread-113867] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:06:42.363 [DEBUG] [Thread-113867] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:06:42.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:06:42.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:06:42.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:06:42.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:06:42.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:06:42.386 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:06:42.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:06:42.386 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:06:42.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:06:42.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.337593 -999.00  +20.70  18.59     12   -9.10 1 1 1 1 1   888    0 30.12 6.17 ----- 9.7 18.6 325.5 23.6 27.2 -29.5 26.2 -28.1 24.9 -27.9 25.6 -28.3
2025-11-03T10:06:42.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:06:42.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:06:42.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.337593
2025-11-03T10:06:42.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:06:42.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:06:42.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:06:42.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:06:42.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:06:42.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:06:09', tmtdew=37.05, humidity=7.01, cloud=0.0, wind=16.55, temperature=21.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:06:08.035', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:06:42.389 [DEBUG] [Thread-113867] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:06:42.472 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:06:42.484 [DEBUG] [Thread-113870] [transport.py] [_log()] starting thread (client mode): 0xed2d3f0
2025-11-03T10:06:42.485 [DEBUG] [Thread-113870] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:06:42.499 [DEBUG] [Thread-113870] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:06:42.500 [INFO] [Thread-113870] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:06:42.510 [DEBUG] [Thread-113870] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:06:42.511 [DEBUG] [Thread-113870] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:06:42.511 [DEBUG] [Thread-113870] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:06:42.511 [DEBUG] [Thread-113870] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:06:42.511 [DEBUG] [Thread-113870] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:06:42.511 [DEBUG] [Thread-113870] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:06:42.511 [DEBUG] [Thread-113870] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:06:42.511 [DEBUG] [Thread-113870] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:06:42.511 [DEBUG] [Thread-113870] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:06:42.511 [DEBUG] [Thread-113870] [transport.py] [_log()] client lang: <none>
2025-11-03T10:06:42.511 [DEBUG] [Thread-113870] [transport.py] [_log()] server lang: <none>
2025-11-03T10:06:42.511 [DEBUG] [Thread-113870] [transport.py] [_log()] kex follows: False
2025-11-03T10:06:42.511 [DEBUG] [Thread-113870] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:06:42.511 [DEBUG] [Thread-113870] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:06:42.511 [DEBUG] [Thread-113870] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:06:42.512 [DEBUG] [Thread-113870] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:06:42.512 [DEBUG] [Thread-113870] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:06:42.512 [DEBUG] [Thread-113870] [transport.py] [_log()] Compression: none
2025-11-03T10:06:42.512 [DEBUG] [Thread-113870] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:06:42.575 [DEBUG] [Thread-113870] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:06:42.575 [DEBUG] [Thread-113870] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:06:42.576 [DEBUG] [Thread-113870] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:06:42.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:06:42.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:06:42.631 [DEBUG] [Thread-113870] [transport.py] [_log()] userauth is OK
2025-11-03T10:06:42.631 [DEBUG] [Thread-113870] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:06:42.631 [DEBUG] [Thread-113870] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:06:42.631 [DEBUG] [Thread-113870] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:06:42.631 [DEBUG] [Thread-113870] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:06:42.648 [INFO] [Thread-113870] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:06:42.648 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:06:42.648 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:06:43.525 [DEBUG] [Thread-113870] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:06:43.525 [DEBUG] [Thread-113870] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:06:43.573 [DEBUG] [Thread-113870] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:06:43.573 [DEBUG] [Thread-113870] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:06:43.581 [DEBUG] [Thread-113870] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:06:43.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:06:43.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:06:43.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:06:43.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:06:43.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:06:43.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:06:43.613 [DEBUG] [Thread-113870] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:06:46.482 [DEBUG] [Thread-113872 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:06:50.330 [DEBUG] [Thread-113873 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:07:01.530 [DEBUG] [Thread-113874 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:07:13.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:07:13.624 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:07:13.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:07:14.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 6, 42), 37.34, 7.01, 0.0, 19.23, 21.86, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:07:14.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:06:42
2025-11-03T10:07:14.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:07:14.563 [DEBUG] [Thread-113875] [transport.py] [_log()] starting thread (client mode): 0xed2de70
2025-11-03T10:07:14.563 [DEBUG] [Thread-113875] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:07:14.584 [DEBUG] [Thread-113875] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:07:14.584 [INFO] [Thread-113875] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:07:14.588 [DEBUG] [Thread-113875] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:07:14.588 [DEBUG] [Thread-113875] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:07:14.588 [DEBUG] [Thread-113875] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:07:14.588 [DEBUG] [Thread-113875] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:07:14.588 [DEBUG] [Thread-113875] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:07:14.588 [DEBUG] [Thread-113875] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:07:14.588 [DEBUG] [Thread-113875] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:07:14.588 [DEBUG] [Thread-113875] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:07:14.588 [DEBUG] [Thread-113875] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:07:14.588 [DEBUG] [Thread-113875] [transport.py] [_log()] client lang: <none>
2025-11-03T10:07:14.588 [DEBUG] [Thread-113875] [transport.py] [_log()] server lang: <none>
2025-11-03T10:07:14.588 [DEBUG] [Thread-113875] [transport.py] [_log()] kex follows: False
2025-11-03T10:07:14.588 [DEBUG] [Thread-113875] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:07:14.588 [DEBUG] [Thread-113875] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:07:14.588 [DEBUG] [Thread-113875] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:07:14.589 [DEBUG] [Thread-113875] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:07:14.589 [DEBUG] [Thread-113875] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:07:14.589 [DEBUG] [Thread-113875] [transport.py] [_log()] Compression: none
2025-11-03T10:07:14.589 [DEBUG] [Thread-113875] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:07:14.608 [DEBUG] [Thread-113875] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:07:14.608 [DEBUG] [Thread-113875] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:07:14.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:07:14.609 [DEBUG] [Thread-113875] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:07:14.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:07:14.611 [DEBUG] [Thread-113875] [transport.py] [_log()] userauth is OK
2025-11-03T10:07:14.612 [DEBUG] [Thread-113875] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:07:14.612 [DEBUG] [Thread-113875] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:07:14.612 [DEBUG] [Thread-113875] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:07:14.612 [DEBUG] [Thread-113875] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:07:14.636 [INFO] [Thread-113875] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:07:14.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:07:15.263 [DEBUG] [Thread-113875] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:07:15.263 [DEBUG] [Thread-113875] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:07:15.263 [DEBUG] [Thread-113875] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:07:15.305 [DEBUG] [Thread-113875] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:07:15.305 [DEBUG] [Thread-113875] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:07:15.307 [DEBUG] [Thread-113875] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:07:15.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:07:15.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:07:15.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:07:15.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:07:15.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:07:15.326 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:07:15.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:07:15.326 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:07:15.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:07:15.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.337941 -999.00  +20.50  17.04     12   -9.10 1 1 1 1 1   888    0 30.14 2.97 ----- 16.0 17.0 22.2 23.6 27.2 -29.7 26.1 -28.3 24.9 -27.9 25.4 -29.7
2025-11-03T10:07:15.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:07:15.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:07:15.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.337941
2025-11-03T10:07:15.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:07:15.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:07:15.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:07:15.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:07:15.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:07:15.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:06:42', tmtdew=37.34, humidity=7.01, cloud=0.0, wind=19.23, temperature=21.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:06:38.102', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:07:15.327 [DEBUG] [Thread-113875] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:07:15.402 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:07:15.414 [DEBUG] [Thread-113878] [transport.py] [_log()] starting thread (client mode): 0xed043a0
2025-11-03T10:07:15.414 [DEBUG] [Thread-113878] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:07:15.429 [DEBUG] [Thread-113878] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:07:15.429 [INFO] [Thread-113878] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:07:15.438 [DEBUG] [Thread-113878] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:07:15.438 [DEBUG] [Thread-113878] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:07:15.438 [DEBUG] [Thread-113878] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:07:15.438 [DEBUG] [Thread-113878] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:07:15.438 [DEBUG] [Thread-113878] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:07:15.438 [DEBUG] [Thread-113878] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:07:15.438 [DEBUG] [Thread-113878] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:07:15.438 [DEBUG] [Thread-113878] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:07:15.438 [DEBUG] [Thread-113878] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:07:15.438 [DEBUG] [Thread-113878] [transport.py] [_log()] client lang: <none>
2025-11-03T10:07:15.438 [DEBUG] [Thread-113878] [transport.py] [_log()] server lang: <none>
2025-11-03T10:07:15.438 [DEBUG] [Thread-113878] [transport.py] [_log()] kex follows: False
2025-11-03T10:07:15.438 [DEBUG] [Thread-113878] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:07:15.438 [DEBUG] [Thread-113878] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:07:15.439 [DEBUG] [Thread-113878] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:07:15.439 [DEBUG] [Thread-113878] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:07:15.439 [DEBUG] [Thread-113878] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:07:15.439 [DEBUG] [Thread-113878] [transport.py] [_log()] Compression: none
2025-11-03T10:07:15.439 [DEBUG] [Thread-113878] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:07:15.496 [DEBUG] [Thread-113878] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:07:15.496 [DEBUG] [Thread-113878] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:07:15.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:07:15.496 [DEBUG] [Thread-113878] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:07:15.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:07:15.551 [DEBUG] [Thread-113878] [transport.py] [_log()] userauth is OK
2025-11-03T10:07:15.551 [DEBUG] [Thread-113878] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:07:15.551 [DEBUG] [Thread-113878] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:07:15.551 [DEBUG] [Thread-113878] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:07:15.551 [DEBUG] [Thread-113878] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:07:15.566 [INFO] [Thread-113878] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:07:15.566 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:07:15.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:07:16.410 [DEBUG] [Thread-113878] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:07:16.410 [DEBUG] [Thread-113878] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:07:16.459 [DEBUG] [Thread-113878] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:07:16.459 [DEBUG] [Thread-113878] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:07:16.467 [DEBUG] [Thread-113878] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:07:16.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:07:16.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:07:16.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:07:16.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:07:16.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:07:16.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:07:16.502 [DEBUG] [Thread-113878] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:07:16.562 [DEBUG] [Thread-113880 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:07:20.326 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:07:20.327 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:07:31.610 [DEBUG] [Thread-113881 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:07:46.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:07:46.524 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:07:46.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:07:46.643 [DEBUG] [Thread-113882 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:07:47.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 7, 14), 37.45, 6.95, 0.0, 15.37, 21.86, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:07:47.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:07:14
2025-11-03T10:07:47.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:07:47.542 [DEBUG] [Thread-113883] [transport.py] [_log()] starting thread (client mode): 0xed64e80
2025-11-03T10:07:47.543 [DEBUG] [Thread-113883] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:07:47.563 [DEBUG] [Thread-113883] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:07:47.563 [INFO] [Thread-113883] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:07:47.566 [DEBUG] [Thread-113883] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:07:47.566 [DEBUG] [Thread-113883] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:07:47.566 [DEBUG] [Thread-113883] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:07:47.567 [DEBUG] [Thread-113883] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:07:47.567 [DEBUG] [Thread-113883] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:07:47.567 [DEBUG] [Thread-113883] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:07:47.567 [DEBUG] [Thread-113883] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:07:47.567 [DEBUG] [Thread-113883] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:07:47.567 [DEBUG] [Thread-113883] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:07:47.567 [DEBUG] [Thread-113883] [transport.py] [_log()] client lang: <none>
2025-11-03T10:07:47.567 [DEBUG] [Thread-113883] [transport.py] [_log()] server lang: <none>
2025-11-03T10:07:47.567 [DEBUG] [Thread-113883] [transport.py] [_log()] kex follows: False
2025-11-03T10:07:47.567 [DEBUG] [Thread-113883] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:07:47.567 [DEBUG] [Thread-113883] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:07:47.567 [DEBUG] [Thread-113883] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:07:47.567 [DEBUG] [Thread-113883] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:07:47.567 [DEBUG] [Thread-113883] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:07:47.567 [DEBUG] [Thread-113883] [transport.py] [_log()] Compression: none
2025-11-03T10:07:47.567 [DEBUG] [Thread-113883] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:07:47.583 [DEBUG] [Thread-113883] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:07:47.583 [DEBUG] [Thread-113883] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:07:47.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:07:47.583 [DEBUG] [Thread-113883] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:07:47.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:07:47.584 [DEBUG] [Thread-113883] [transport.py] [_log()] userauth is OK
2025-11-03T10:07:47.584 [DEBUG] [Thread-113883] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:07:47.584 [DEBUG] [Thread-113883] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:07:47.584 [DEBUG] [Thread-113883] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:07:47.584 [DEBUG] [Thread-113883] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:07:47.603 [INFO] [Thread-113883] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:07:47.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:07:48.244 [DEBUG] [Thread-113883] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:07:48.244 [DEBUG] [Thread-113883] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:07:48.244 [DEBUG] [Thread-113883] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:07:48.285 [DEBUG] [Thread-113883] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:07:48.285 [DEBUG] [Thread-113883] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:07:48.287 [DEBUG] [Thread-113883] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:07:48.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:07:48.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:07:48.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:07:48.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:07:48.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:07:48.303 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:07:48.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:07:48.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:07:48.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:07:48.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.338635 -999.00  +20.70  23.52     12   -9.00 1 1 1 1 1   888    0 30.36 -2.22 ----- 24.4 23.5 43.4 26.5 27.2 -29.8 26.2 -29.4 24.8 -29.9 25.6 -27.6
2025-11-03T10:07:48.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:07:48.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:07:48.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.338635
2025-11-03T10:07:48.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:07:48.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:07:48.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:07:48.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:07:48.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:07:48.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:07:14', tmtdew=37.45, humidity=6.95, cloud=0.0, wind=15.37, temperature=21.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:07:38.064', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:07:48.304 [DEBUG] [Thread-113883] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:07:48.380 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:07:48.391 [DEBUG] [Thread-113886] [transport.py] [_log()] starting thread (client mode): 0x81d8fd0
2025-11-03T10:07:48.391 [DEBUG] [Thread-113886] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:07:48.406 [DEBUG] [Thread-113886] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:07:48.406 [INFO] [Thread-113886] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:07:48.413 [DEBUG] [Thread-113886] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:07:48.413 [DEBUG] [Thread-113886] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:07:48.413 [DEBUG] [Thread-113886] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:07:48.413 [DEBUG] [Thread-113886] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:07:48.413 [DEBUG] [Thread-113886] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:07:48.413 [DEBUG] [Thread-113886] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:07:48.414 [DEBUG] [Thread-113886] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:07:48.414 [DEBUG] [Thread-113886] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:07:48.414 [DEBUG] [Thread-113886] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:07:48.414 [DEBUG] [Thread-113886] [transport.py] [_log()] client lang: <none>
2025-11-03T10:07:48.414 [DEBUG] [Thread-113886] [transport.py] [_log()] server lang: <none>
2025-11-03T10:07:48.414 [DEBUG] [Thread-113886] [transport.py] [_log()] kex follows: False
2025-11-03T10:07:48.414 [DEBUG] [Thread-113886] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:07:48.414 [DEBUG] [Thread-113886] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:07:48.414 [DEBUG] [Thread-113886] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:07:48.414 [DEBUG] [Thread-113886] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:07:48.414 [DEBUG] [Thread-113886] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:07:48.414 [DEBUG] [Thread-113886] [transport.py] [_log()] Compression: none
2025-11-03T10:07:48.414 [DEBUG] [Thread-113886] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:07:48.471 [DEBUG] [Thread-113886] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:07:48.471 [DEBUG] [Thread-113886] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:07:48.471 [DEBUG] [Thread-113886] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:07:48.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:07:48.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:07:48.528 [DEBUG] [Thread-113886] [transport.py] [_log()] userauth is OK
2025-11-03T10:07:48.528 [DEBUG] [Thread-113886] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:07:48.528 [DEBUG] [Thread-113886] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:07:48.528 [DEBUG] [Thread-113886] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:07:48.528 [DEBUG] [Thread-113886] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:07:48.542 [INFO] [Thread-113886] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:07:48.542 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:07:48.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:07:49.405 [DEBUG] [Thread-113886] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:07:49.405 [DEBUG] [Thread-113886] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:07:49.453 [DEBUG] [Thread-113886] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:07:49.453 [DEBUG] [Thread-113886] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:07:49.462 [DEBUG] [Thread-113886] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:07:49.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:07:49.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:07:49.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:07:49.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:07:49.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:07:49.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:07:49.499 [DEBUG] [Thread-113886] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:07:50.382 [DEBUG] [Thread-113888 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:08:01.685 [DEBUG] [Thread-113889 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:08:16.745 [DEBUG] [Thread-113890 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:08:19.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:08:19.521 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:08:19.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:08:20.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 7, 46), 37.0, 7.11, 0.0, 22.0, 21.59, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:08:20.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:07:46
2025-11-03T10:08:20.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:08:20.466 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:08:20.467 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:08:20.543 [DEBUG] [Thread-113891] [transport.py] [_log()] starting thread (client mode): 0xedb3a60
2025-11-03T10:08:20.543 [DEBUG] [Thread-113891] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:08:20.557 [DEBUG] [Thread-113891] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:08:20.557 [INFO] [Thread-113891] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:08:20.559 [DEBUG] [Thread-113891] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:08:20.559 [DEBUG] [Thread-113891] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:08:20.559 [DEBUG] [Thread-113891] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:08:20.559 [DEBUG] [Thread-113891] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:08:20.559 [DEBUG] [Thread-113891] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:08:20.559 [DEBUG] [Thread-113891] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:08:20.559 [DEBUG] [Thread-113891] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:08:20.559 [DEBUG] [Thread-113891] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:08:20.559 [DEBUG] [Thread-113891] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:08:20.559 [DEBUG] [Thread-113891] [transport.py] [_log()] client lang: <none>
2025-11-03T10:08:20.559 [DEBUG] [Thread-113891] [transport.py] [_log()] server lang: <none>
2025-11-03T10:08:20.559 [DEBUG] [Thread-113891] [transport.py] [_log()] kex follows: False
2025-11-03T10:08:20.559 [DEBUG] [Thread-113891] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:08:20.559 [DEBUG] [Thread-113891] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:08:20.559 [DEBUG] [Thread-113891] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:08:20.559 [DEBUG] [Thread-113891] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:08:20.559 [DEBUG] [Thread-113891] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:08:20.559 [DEBUG] [Thread-113891] [transport.py] [_log()] Compression: none
2025-11-03T10:08:20.559 [DEBUG] [Thread-113891] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:08:20.574 [DEBUG] [Thread-113891] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:08:20.574 [DEBUG] [Thread-113891] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:08:20.574 [DEBUG] [Thread-113891] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:08:20.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:08:20.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:08:20.575 [DEBUG] [Thread-113891] [transport.py] [_log()] userauth is OK
2025-11-03T10:08:20.575 [DEBUG] [Thread-113891] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:08:20.575 [DEBUG] [Thread-113891] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:08:20.575 [DEBUG] [Thread-113891] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:08:20.575 [DEBUG] [Thread-113891] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:08:20.585 [INFO] [Thread-113891] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:08:20.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:08:21.240 [DEBUG] [Thread-113891] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:08:21.240 [DEBUG] [Thread-113891] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:08:21.241 [DEBUG] [Thread-113891] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:08:21.281 [DEBUG] [Thread-113891] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:08:21.282 [DEBUG] [Thread-113891] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:08:21.284 [DEBUG] [Thread-113891] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:08:21.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:08:21.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:08:21.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:08:21.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:08:21.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:08:21.302 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:08:21.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:08:21.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:08:21.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:08:21.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.338982 -999.00  +20.70  17.34     12   -8.70 1 1 1 1 1   888    0 29.60 -5.20 ----- 16.4 17.3 59.8 23.3 27.3 -28.6 26.2 -28.0 24.8 -28.2 25.7 -27.9
2025-11-03T10:08:21.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:08:21.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:08:21.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.338982
2025-11-03T10:08:21.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:08:21.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:08:21.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:08:21.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:08:21.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:08:21.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:07:46', tmtdew=37.0, humidity=7.11, cloud=0.0, wind=22.0, temperature=21.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:08:08.045', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:08:21.303 [DEBUG] [Thread-113891] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:08:21.378 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:08:21.390 [DEBUG] [Thread-113894] [transport.py] [_log()] starting thread (client mode): 0xedb10f0
2025-11-03T10:08:21.390 [DEBUG] [Thread-113894] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:08:21.404 [DEBUG] [Thread-113894] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:08:21.404 [INFO] [Thread-113894] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:08:21.412 [DEBUG] [Thread-113894] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:08:21.412 [DEBUG] [Thread-113894] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:08:21.412 [DEBUG] [Thread-113894] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:08:21.412 [DEBUG] [Thread-113894] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:08:21.412 [DEBUG] [Thread-113894] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:08:21.412 [DEBUG] [Thread-113894] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:08:21.412 [DEBUG] [Thread-113894] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:08:21.412 [DEBUG] [Thread-113894] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:08:21.412 [DEBUG] [Thread-113894] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:08:21.412 [DEBUG] [Thread-113894] [transport.py] [_log()] client lang: <none>
2025-11-03T10:08:21.412 [DEBUG] [Thread-113894] [transport.py] [_log()] server lang: <none>
2025-11-03T10:08:21.412 [DEBUG] [Thread-113894] [transport.py] [_log()] kex follows: False
2025-11-03T10:08:21.412 [DEBUG] [Thread-113894] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:08:21.412 [DEBUG] [Thread-113894] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:08:21.412 [DEBUG] [Thread-113894] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:08:21.412 [DEBUG] [Thread-113894] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:08:21.412 [DEBUG] [Thread-113894] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:08:21.412 [DEBUG] [Thread-113894] [transport.py] [_log()] Compression: none
2025-11-03T10:08:21.412 [DEBUG] [Thread-113894] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:08:21.467 [DEBUG] [Thread-113894] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:08:21.467 [DEBUG] [Thread-113894] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:08:21.467 [DEBUG] [Thread-113894] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:08:21.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:08:21.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:08:21.524 [DEBUG] [Thread-113894] [transport.py] [_log()] userauth is OK
2025-11-03T10:08:21.524 [DEBUG] [Thread-113894] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:08:21.524 [DEBUG] [Thread-113894] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:08:21.524 [DEBUG] [Thread-113894] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:08:21.524 [DEBUG] [Thread-113894] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:08:21.540 [INFO] [Thread-113894] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:08:21.540 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:08:21.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:08:22.396 [DEBUG] [Thread-113894] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:08:22.396 [DEBUG] [Thread-113894] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:08:22.443 [DEBUG] [Thread-113894] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:08:22.443 [DEBUG] [Thread-113894] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:08:22.452 [DEBUG] [Thread-113894] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:08:22.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:08:22.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:08:22.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:08:22.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:08:22.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:08:22.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:08:22.484 [DEBUG] [Thread-113894] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:08:31.782 [DEBUG] [Thread-113896 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:08:46.843 [DEBUG] [Thread-113897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:08:50.461 [DEBUG] [Thread-113898 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:08:52.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:08:52.507 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:08:52.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:08:53.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 8, 18), 37.02, 7.13, 0.0, 20.66, 21.76, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:08:53.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:08:18
2025-11-03T10:08:53.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:08:53.507 [DEBUG] [Thread-113899] [transport.py] [_log()] starting thread (client mode): 0xedb2950
2025-11-03T10:08:53.507 [DEBUG] [Thread-113899] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:08:53.526 [DEBUG] [Thread-113899] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:08:53.526 [INFO] [Thread-113899] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:08:53.530 [DEBUG] [Thread-113899] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:08:53.530 [DEBUG] [Thread-113899] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:08:53.530 [DEBUG] [Thread-113899] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:08:53.530 [DEBUG] [Thread-113899] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:08:53.530 [DEBUG] [Thread-113899] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:08:53.530 [DEBUG] [Thread-113899] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:08:53.530 [DEBUG] [Thread-113899] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:08:53.530 [DEBUG] [Thread-113899] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:08:53.530 [DEBUG] [Thread-113899] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:08:53.530 [DEBUG] [Thread-113899] [transport.py] [_log()] client lang: <none>
2025-11-03T10:08:53.530 [DEBUG] [Thread-113899] [transport.py] [_log()] server lang: <none>
2025-11-03T10:08:53.530 [DEBUG] [Thread-113899] [transport.py] [_log()] kex follows: False
2025-11-03T10:08:53.530 [DEBUG] [Thread-113899] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:08:53.530 [DEBUG] [Thread-113899] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:08:53.530 [DEBUG] [Thread-113899] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:08:53.530 [DEBUG] [Thread-113899] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:08:53.530 [DEBUG] [Thread-113899] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:08:53.530 [DEBUG] [Thread-113899] [transport.py] [_log()] Compression: none
2025-11-03T10:08:53.531 [DEBUG] [Thread-113899] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:08:53.548 [DEBUG] [Thread-113899] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:08:53.549 [DEBUG] [Thread-113899] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:08:53.549 [DEBUG] [Thread-113899] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:08:53.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:08:53.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:08:53.550 [DEBUG] [Thread-113899] [transport.py] [_log()] userauth is OK
2025-11-03T10:08:53.550 [DEBUG] [Thread-113899] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:08:53.550 [DEBUG] [Thread-113899] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:08:53.550 [DEBUG] [Thread-113899] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:08:53.550 [DEBUG] [Thread-113899] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:08:53.561 [INFO] [Thread-113899] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:08:53.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:08:54.211 [DEBUG] [Thread-113899] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:08:54.212 [DEBUG] [Thread-113899] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:08:54.212 [DEBUG] [Thread-113899] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:08:54.253 [DEBUG] [Thread-113899] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:08:54.253 [DEBUG] [Thread-113899] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:08:54.257 [DEBUG] [Thread-113899] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:08:54.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:08:54.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:08:54.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:08:54.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:08:54.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:08:54.281 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:08:54.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:08:54.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:08:54.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:08:54.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.339329 -999.00  +21.00  20.07     12   -8.40 1 1 1 1 1   888    0 29.65 -10.30 ----- 20.7 20.1 46.8 21.6 27.4 -28.7 26.2 -28.0 25.0 -27.8 25.7 -28.2
2025-11-03T10:08:54.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:08:54.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:08:54.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.339329
2025-11-03T10:08:54.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:08:54.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:08:54.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:08:54.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:08:54.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:08:54.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:08:18', tmtdew=37.02, humidity=7.13, cloud=0.0, wind=20.66, temperature=21.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:08:38.026', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:08:54.285 [DEBUG] [Thread-113899] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:08:54.369 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:08:54.380 [DEBUG] [Thread-113902] [transport.py] [_log()] starting thread (client mode): 0xed2ddb0
2025-11-03T10:08:54.380 [DEBUG] [Thread-113902] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:08:54.395 [DEBUG] [Thread-113902] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:08:54.396 [INFO] [Thread-113902] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:08:54.403 [DEBUG] [Thread-113902] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:08:54.403 [DEBUG] [Thread-113902] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:08:54.403 [DEBUG] [Thread-113902] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:08:54.403 [DEBUG] [Thread-113902] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:08:54.403 [DEBUG] [Thread-113902] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:08:54.403 [DEBUG] [Thread-113902] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:08:54.403 [DEBUG] [Thread-113902] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:08:54.403 [DEBUG] [Thread-113902] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:08:54.403 [DEBUG] [Thread-113902] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:08:54.403 [DEBUG] [Thread-113902] [transport.py] [_log()] client lang: <none>
2025-11-03T10:08:54.404 [DEBUG] [Thread-113902] [transport.py] [_log()] server lang: <none>
2025-11-03T10:08:54.404 [DEBUG] [Thread-113902] [transport.py] [_log()] kex follows: False
2025-11-03T10:08:54.404 [DEBUG] [Thread-113902] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:08:54.404 [DEBUG] [Thread-113902] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:08:54.404 [DEBUG] [Thread-113902] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:08:54.404 [DEBUG] [Thread-113902] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:08:54.404 [DEBUG] [Thread-113902] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:08:54.404 [DEBUG] [Thread-113902] [transport.py] [_log()] Compression: none
2025-11-03T10:08:54.404 [DEBUG] [Thread-113902] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:08:54.459 [DEBUG] [Thread-113902] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:08:54.459 [DEBUG] [Thread-113902] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:08:54.459 [DEBUG] [Thread-113902] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:08:54.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:08:54.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:08:54.516 [DEBUG] [Thread-113902] [transport.py] [_log()] userauth is OK
2025-11-03T10:08:54.516 [DEBUG] [Thread-113902] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:08:54.516 [DEBUG] [Thread-113902] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:08:54.516 [DEBUG] [Thread-113902] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:08:54.516 [DEBUG] [Thread-113902] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:08:54.531 [INFO] [Thread-113902] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:08:54.531 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:08:54.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:08:55.392 [DEBUG] [Thread-113902] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:08:55.392 [DEBUG] [Thread-113902] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:08:55.440 [DEBUG] [Thread-113902] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:08:55.440 [DEBUG] [Thread-113902] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:08:55.450 [DEBUG] [Thread-113902] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:08:55.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:08:55.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:08:55.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:08:55.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:08:55.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:08:55.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:08:55.495 [DEBUG] [Thread-113902] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:09:01.876 [DEBUG] [Thread-113904 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:09:16.916 [DEBUG] [Thread-113905 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:09:20.608 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:09:20.609 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:09:25.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:09:25.518 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:09:25.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:09:26.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 8, 51), 37.23, 6.99, 0.0, 15.1, 21.84, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:09:26.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:08:51
2025-11-03T10:09:26.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:09:26.514 [DEBUG] [Thread-113906] [transport.py] [_log()] starting thread (client mode): 0xedb1f30
2025-11-03T10:09:26.514 [DEBUG] [Thread-113906] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:09:26.534 [DEBUG] [Thread-113906] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:09:26.534 [INFO] [Thread-113906] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:09:26.538 [DEBUG] [Thread-113906] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:09:26.538 [DEBUG] [Thread-113906] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:09:26.538 [DEBUG] [Thread-113906] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:09:26.538 [DEBUG] [Thread-113906] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:09:26.538 [DEBUG] [Thread-113906] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:09:26.538 [DEBUG] [Thread-113906] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:09:26.538 [DEBUG] [Thread-113906] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:09:26.538 [DEBUG] [Thread-113906] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:09:26.538 [DEBUG] [Thread-113906] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:09:26.538 [DEBUG] [Thread-113906] [transport.py] [_log()] client lang: <none>
2025-11-03T10:09:26.538 [DEBUG] [Thread-113906] [transport.py] [_log()] server lang: <none>
2025-11-03T10:09:26.538 [DEBUG] [Thread-113906] [transport.py] [_log()] kex follows: False
2025-11-03T10:09:26.538 [DEBUG] [Thread-113906] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:09:26.538 [DEBUG] [Thread-113906] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:09:26.538 [DEBUG] [Thread-113906] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:09:26.539 [DEBUG] [Thread-113906] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:09:26.539 [DEBUG] [Thread-113906] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:09:26.539 [DEBUG] [Thread-113906] [transport.py] [_log()] Compression: none
2025-11-03T10:09:26.539 [DEBUG] [Thread-113906] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:09:26.547 [DEBUG] [Thread-113906] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:09:26.547 [DEBUG] [Thread-113906] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:09:26.548 [DEBUG] [Thread-113906] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:09:26.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:09:26.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:09:26.549 [DEBUG] [Thread-113906] [transport.py] [_log()] userauth is OK
2025-11-03T10:09:26.550 [DEBUG] [Thread-113906] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:09:26.550 [DEBUG] [Thread-113906] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:09:26.550 [DEBUG] [Thread-113906] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:09:26.550 [DEBUG] [Thread-113906] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:09:26.565 [INFO] [Thread-113906] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:09:26.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:09:27.211 [DEBUG] [Thread-113906] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:09:27.211 [DEBUG] [Thread-113906] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:09:27.211 [DEBUG] [Thread-113906] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:09:27.252 [DEBUG] [Thread-113906] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:09:27.253 [DEBUG] [Thread-113906] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:09:27.255 [DEBUG] [Thread-113906] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:09:27.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:09:27.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:09:27.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:09:27.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:09:27.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:09:27.272 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:09:27.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:09:27.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:09:27.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:09:27.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.339677 -999.00  +21.20  22.29     12   -8.60 1 1 1 1 1   888    0 28.54 -13.38 ----- 21.6 22.3 41.2 26.8 27.4 -29.4 26.2 -28.7 24.8 -29.7 25.8 -27.9
2025-11-03T10:09:27.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:09:27.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:09:27.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.339677
2025-11-03T10:09:27.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:09:27.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:09:27.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:09:27.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:09:27.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:09:27.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:08:51', tmtdew=37.23, humidity=6.99, cloud=0.0, wind=15.1, temperature=21.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:09:08.093', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:09:27.273 [DEBUG] [Thread-113906] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:09:27.351 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:09:27.364 [DEBUG] [Thread-113909] [transport.py] [_log()] starting thread (client mode): 0xed04f10
2025-11-03T10:09:27.364 [DEBUG] [Thread-113909] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:09:27.380 [DEBUG] [Thread-113909] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:09:27.380 [INFO] [Thread-113909] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:09:27.389 [DEBUG] [Thread-113909] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:09:27.389 [DEBUG] [Thread-113909] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:09:27.389 [DEBUG] [Thread-113909] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:09:27.390 [DEBUG] [Thread-113909] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:09:27.390 [DEBUG] [Thread-113909] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:09:27.390 [DEBUG] [Thread-113909] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:09:27.390 [DEBUG] [Thread-113909] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:09:27.390 [DEBUG] [Thread-113909] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:09:27.390 [DEBUG] [Thread-113909] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:09:27.390 [DEBUG] [Thread-113909] [transport.py] [_log()] client lang: <none>
2025-11-03T10:09:27.390 [DEBUG] [Thread-113909] [transport.py] [_log()] server lang: <none>
2025-11-03T10:09:27.390 [DEBUG] [Thread-113909] [transport.py] [_log()] kex follows: False
2025-11-03T10:09:27.390 [DEBUG] [Thread-113909] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:09:27.390 [DEBUG] [Thread-113909] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:09:27.390 [DEBUG] [Thread-113909] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:09:27.390 [DEBUG] [Thread-113909] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:09:27.390 [DEBUG] [Thread-113909] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:09:27.390 [DEBUG] [Thread-113909] [transport.py] [_log()] Compression: none
2025-11-03T10:09:27.390 [DEBUG] [Thread-113909] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:09:27.448 [DEBUG] [Thread-113909] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:09:27.448 [DEBUG] [Thread-113909] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:09:27.448 [DEBUG] [Thread-113909] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:09:27.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:09:27.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:09:27.504 [DEBUG] [Thread-113909] [transport.py] [_log()] userauth is OK
2025-11-03T10:09:27.504 [DEBUG] [Thread-113909] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:09:27.504 [DEBUG] [Thread-113909] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:09:27.504 [DEBUG] [Thread-113909] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:09:27.504 [DEBUG] [Thread-113909] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:09:27.519 [INFO] [Thread-113909] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:09:27.520 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:09:27.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:09:28.420 [DEBUG] [Thread-113909] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:09:28.420 [DEBUG] [Thread-113909] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:09:28.468 [DEBUG] [Thread-113909] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:09:28.469 [DEBUG] [Thread-113909] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:09:28.482 [DEBUG] [Thread-113909] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:09:28.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:09:28.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:09:28.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:09:28.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:09:28.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:09:28.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:09:28.519 [DEBUG] [Thread-113909] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:09:31.955 [DEBUG] [Thread-113911 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:09:47.022 [DEBUG] [Thread-113912 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:09:50.496 [DEBUG] [Thread-113913 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:09:58.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:09:58.542 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:09:58.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:09:59.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 9, 55), 37.08, 6.98, 0.0, 12.07, 21.82, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:09:59.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:09:55
2025-11-03T10:09:59.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:09:59.581 [DEBUG] [Thread-113914] [transport.py] [_log()] starting thread (client mode): 0xed5ec20
2025-11-03T10:09:59.581 [DEBUG] [Thread-113914] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:09:59.601 [DEBUG] [Thread-113914] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:09:59.602 [INFO] [Thread-113914] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:09:59.604 [DEBUG] [Thread-113914] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:09:59.604 [DEBUG] [Thread-113914] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:09:59.604 [DEBUG] [Thread-113914] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:09:59.604 [DEBUG] [Thread-113914] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:09:59.604 [DEBUG] [Thread-113914] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:09:59.604 [DEBUG] [Thread-113914] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:09:59.605 [DEBUG] [Thread-113914] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:09:59.605 [DEBUG] [Thread-113914] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:09:59.605 [DEBUG] [Thread-113914] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:09:59.605 [DEBUG] [Thread-113914] [transport.py] [_log()] client lang: <none>
2025-11-03T10:09:59.605 [DEBUG] [Thread-113914] [transport.py] [_log()] server lang: <none>
2025-11-03T10:09:59.605 [DEBUG] [Thread-113914] [transport.py] [_log()] kex follows: False
2025-11-03T10:09:59.605 [DEBUG] [Thread-113914] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:09:59.605 [DEBUG] [Thread-113914] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:09:59.605 [DEBUG] [Thread-113914] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:09:59.605 [DEBUG] [Thread-113914] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:09:59.605 [DEBUG] [Thread-113914] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:09:59.605 [DEBUG] [Thread-113914] [transport.py] [_log()] Compression: none
2025-11-03T10:09:59.605 [DEBUG] [Thread-113914] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:09:59.624 [DEBUG] [Thread-113914] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:09:59.624 [DEBUG] [Thread-113914] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:09:59.625 [DEBUG] [Thread-113914] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:09:59.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:09:59.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:09:59.627 [DEBUG] [Thread-113914] [transport.py] [_log()] userauth is OK
2025-11-03T10:09:59.627 [DEBUG] [Thread-113914] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:09:59.628 [DEBUG] [Thread-113914] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:09:59.628 [DEBUG] [Thread-113914] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:09:59.628 [DEBUG] [Thread-113914] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:09:59.645 [INFO] [Thread-113914] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:09:59.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:10:00.206 [DEBUG] [Thread-113914] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:10:00.206 [DEBUG] [Thread-113914] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:10:00.207 [DEBUG] [Thread-113914] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:10:00.247 [DEBUG] [Thread-113914] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:10:00.247 [DEBUG] [Thread-113914] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:10:00.251 [DEBUG] [Thread-113914] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:10:00.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:10:00.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:10:00.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:10:00.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:10:00.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:10:00.277 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:10:00.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:10:00.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:10:00.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:10:00.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.340024 -999.00  +21.00  19.32     12   -8.60 1 1 1 1 1   888    0 29.53 -17.84 ----- 19.8 19.3 42.6 21.6 27.4 -29.0 26.3 -28.8 25.0 -28.3 25.8 -27.8
2025-11-03T10:10:00.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:10:00.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:10:00.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.340024
2025-11-03T10:10:00.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:10:00.279 [DEBUG] [Thread-113914] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:10:00.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:10:00.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:10:00.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:10:00.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:10:00.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:09:55', tmtdew=37.08, humidity=6.98, cloud=0.0, wind=12.07, temperature=21.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:09:38.074', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:10:00.364 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:10:00.376 [DEBUG] [Thread-113917] [transport.py] [_log()] starting thread (client mode): 0xed5dc30
2025-11-03T10:10:00.377 [DEBUG] [Thread-113917] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:10:00.395 [DEBUG] [Thread-113917] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:10:00.395 [INFO] [Thread-113917] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:10:00.402 [DEBUG] [Thread-113917] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:10:00.403 [DEBUG] [Thread-113917] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:10:00.403 [DEBUG] [Thread-113917] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:10:00.403 [DEBUG] [Thread-113917] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:10:00.403 [DEBUG] [Thread-113917] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:10:00.403 [DEBUG] [Thread-113917] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:10:00.403 [DEBUG] [Thread-113917] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:10:00.403 [DEBUG] [Thread-113917] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:10:00.403 [DEBUG] [Thread-113917] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:10:00.403 [DEBUG] [Thread-113917] [transport.py] [_log()] client lang: <none>
2025-11-03T10:10:00.403 [DEBUG] [Thread-113917] [transport.py] [_log()] server lang: <none>
2025-11-03T10:10:00.403 [DEBUG] [Thread-113917] [transport.py] [_log()] kex follows: False
2025-11-03T10:10:00.403 [DEBUG] [Thread-113917] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:10:00.403 [DEBUG] [Thread-113917] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:10:00.403 [DEBUG] [Thread-113917] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:10:00.404 [DEBUG] [Thread-113917] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:10:00.404 [DEBUG] [Thread-113917] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:10:00.404 [DEBUG] [Thread-113917] [transport.py] [_log()] Compression: none
2025-11-03T10:10:00.404 [DEBUG] [Thread-113917] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:10:00.462 [DEBUG] [Thread-113917] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:10:00.462 [DEBUG] [Thread-113917] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:10:00.463 [DEBUG] [Thread-113917] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:10:00.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:10:00.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:10:00.521 [DEBUG] [Thread-113917] [transport.py] [_log()] userauth is OK
2025-11-03T10:10:00.521 [DEBUG] [Thread-113917] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:10:00.521 [DEBUG] [Thread-113917] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:10:00.522 [DEBUG] [Thread-113917] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:10:00.522 [DEBUG] [Thread-113917] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:10:00.540 [INFO] [Thread-113917] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:10:00.541 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:10:00.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:10:01.381 [DEBUG] [Thread-113917] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:10:01.381 [DEBUG] [Thread-113917] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:10:01.429 [DEBUG] [Thread-113917] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:10:01.429 [DEBUG] [Thread-113917] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:10:01.441 [DEBUG] [Thread-113917] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:10:01.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:10:01.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:10:01.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:10:01.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:10:01.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:10:01.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:10:01.476 [DEBUG] [Thread-113917] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:10:02.059 [DEBUG] [Thread-113919 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:10:17.096 [DEBUG] [Thread-113920 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:10:20.751 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:10:20.752 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:10:31.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:10:31.502 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:10:31.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:10:32.149 [DEBUG] [Thread-113921 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:10:32.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 10, 27), 36.88, 7.08, 0.0, 16.53, 21.74, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:10:32.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:10:27
2025-11-03T10:10:32.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:10:32.639 [DEBUG] [Thread-113922] [transport.py] [_log()] starting thread (client mode): 0xed06080
2025-11-03T10:10:32.639 [DEBUG] [Thread-113922] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:10:32.655 [DEBUG] [Thread-113922] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:10:32.655 [INFO] [Thread-113922] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:10:32.658 [DEBUG] [Thread-113922] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:10:32.658 [DEBUG] [Thread-113922] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:10:32.658 [DEBUG] [Thread-113922] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:10:32.658 [DEBUG] [Thread-113922] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:10:32.658 [DEBUG] [Thread-113922] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:10:32.658 [DEBUG] [Thread-113922] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:10:32.658 [DEBUG] [Thread-113922] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:10:32.658 [DEBUG] [Thread-113922] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:10:32.658 [DEBUG] [Thread-113922] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:10:32.658 [DEBUG] [Thread-113922] [transport.py] [_log()] client lang: <none>
2025-11-03T10:10:32.658 [DEBUG] [Thread-113922] [transport.py] [_log()] server lang: <none>
2025-11-03T10:10:32.658 [DEBUG] [Thread-113922] [transport.py] [_log()] kex follows: False
2025-11-03T10:10:32.658 [DEBUG] [Thread-113922] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:10:32.658 [DEBUG] [Thread-113922] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:10:32.659 [DEBUG] [Thread-113922] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:10:32.659 [DEBUG] [Thread-113922] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:10:32.659 [DEBUG] [Thread-113922] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:10:32.659 [DEBUG] [Thread-113922] [transport.py] [_log()] Compression: none
2025-11-03T10:10:32.659 [DEBUG] [Thread-113922] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:10:32.685 [DEBUG] [Thread-113922] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:10:32.687 [DEBUG] [Thread-113922] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:10:32.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:10:32.689 [DEBUG] [Thread-113922] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:10:32.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:10:32.691 [DEBUG] [Thread-113922] [transport.py] [_log()] userauth is OK
2025-11-03T10:10:32.691 [DEBUG] [Thread-113922] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:10:32.691 [DEBUG] [Thread-113922] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:10:32.691 [DEBUG] [Thread-113922] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:10:32.691 [DEBUG] [Thread-113922] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:10:32.709 [INFO] [Thread-113922] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:10:32.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:10:33.273 [DEBUG] [Thread-113922] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:10:33.273 [DEBUG] [Thread-113922] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:10:33.274 [DEBUG] [Thread-113922] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:10:33.314 [DEBUG] [Thread-113922] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:10:33.314 [DEBUG] [Thread-113922] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:10:33.316 [DEBUG] [Thread-113922] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:10:33.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:10:33.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:10:33.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:10:33.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:10:33.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:10:33.336 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:10:33.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:10:33.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:10:33.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:10:33.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.340371 -999.00  +20.90  22.64     12   -8.80 1 1 1 1 1   888    0 29.57 -22.33 ----- 21.5 22.6 38.2 26.8 27.4 -29.7 26.2 -29.4 24.9 -29.5 25.8 -27.8
2025-11-03T10:10:33.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:10:33.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:10:33.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.340371
2025-11-03T10:10:33.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:10:33.340 [DEBUG] [Thread-113922] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:10:33.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:10:33.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:10:33.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:10:33.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:10:33.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:10:27', tmtdew=36.88, humidity=7.08, cloud=0.0, wind=16.53, temperature=21.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:10:08.054', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:10:33.417 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:10:33.430 [DEBUG] [Thread-113925] [transport.py] [_log()] starting thread (client mode): 0xedb24d0
2025-11-03T10:10:33.430 [DEBUG] [Thread-113925] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:10:33.445 [DEBUG] [Thread-113925] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:10:33.445 [INFO] [Thread-113925] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:10:33.452 [DEBUG] [Thread-113925] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:10:33.452 [DEBUG] [Thread-113925] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:10:33.452 [DEBUG] [Thread-113925] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:10:33.452 [DEBUG] [Thread-113925] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:10:33.452 [DEBUG] [Thread-113925] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:10:33.452 [DEBUG] [Thread-113925] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:10:33.452 [DEBUG] [Thread-113925] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:10:33.452 [DEBUG] [Thread-113925] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:10:33.452 [DEBUG] [Thread-113925] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:10:33.452 [DEBUG] [Thread-113925] [transport.py] [_log()] client lang: <none>
2025-11-03T10:10:33.452 [DEBUG] [Thread-113925] [transport.py] [_log()] server lang: <none>
2025-11-03T10:10:33.452 [DEBUG] [Thread-113925] [transport.py] [_log()] kex follows: False
2025-11-03T10:10:33.452 [DEBUG] [Thread-113925] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:10:33.452 [DEBUG] [Thread-113925] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:10:33.452 [DEBUG] [Thread-113925] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:10:33.452 [DEBUG] [Thread-113925] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:10:33.452 [DEBUG] [Thread-113925] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:10:33.452 [DEBUG] [Thread-113925] [transport.py] [_log()] Compression: none
2025-11-03T10:10:33.452 [DEBUG] [Thread-113925] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:10:33.508 [DEBUG] [Thread-113925] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:10:33.508 [DEBUG] [Thread-113925] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:10:33.508 [DEBUG] [Thread-113925] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:10:33.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:10:33.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:10:33.565 [DEBUG] [Thread-113925] [transport.py] [_log()] userauth is OK
2025-11-03T10:10:33.565 [DEBUG] [Thread-113925] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:10:33.565 [DEBUG] [Thread-113925] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:10:33.565 [DEBUG] [Thread-113925] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:10:33.565 [DEBUG] [Thread-113925] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:10:33.579 [INFO] [Thread-113925] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:10:33.579 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:10:33.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:10:34.453 [DEBUG] [Thread-113925] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:10:34.453 [DEBUG] [Thread-113925] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:10:34.500 [DEBUG] [Thread-113925] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:10:34.500 [DEBUG] [Thread-113925] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:10:34.508 [DEBUG] [Thread-113925] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:10:34.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:10:34.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:10:34.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:10:34.536 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:10:34.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:10:34.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:10:34.545 [DEBUG] [Thread-113925] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:10:47.267 [DEBUG] [Thread-113927 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:10:50.768 [DEBUG] [Thread-113928 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:11:02.431 [DEBUG] [Thread-113929 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:11:04.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:11:04.557 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:11:04.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:11:05.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 11), 36.94, 7.03, 0.0, 18.1, 21.7, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:11:05.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:11:00
2025-11-03T10:11:05.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:11:05.728 [DEBUG] [Thread-113930] [transport.py] [_log()] starting thread (client mode): 0xedb0400
2025-11-03T10:11:05.729 [DEBUG] [Thread-113930] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:11:05.740 [DEBUG] [Thread-113930] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:11:05.740 [INFO] [Thread-113930] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:11:05.745 [DEBUG] [Thread-113930] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:11:05.745 [DEBUG] [Thread-113930] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:11:05.745 [DEBUG] [Thread-113930] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:11:05.745 [DEBUG] [Thread-113930] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:11:05.745 [DEBUG] [Thread-113930] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:11:05.746 [DEBUG] [Thread-113930] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:11:05.746 [DEBUG] [Thread-113930] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:11:05.746 [DEBUG] [Thread-113930] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:11:05.746 [DEBUG] [Thread-113930] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:11:05.746 [DEBUG] [Thread-113930] [transport.py] [_log()] client lang: <none>
2025-11-03T10:11:05.746 [DEBUG] [Thread-113930] [transport.py] [_log()] server lang: <none>
2025-11-03T10:11:05.746 [DEBUG] [Thread-113930] [transport.py] [_log()] kex follows: False
2025-11-03T10:11:05.746 [DEBUG] [Thread-113930] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:11:05.747 [DEBUG] [Thread-113930] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:11:05.747 [DEBUG] [Thread-113930] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:11:05.747 [DEBUG] [Thread-113930] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:11:05.747 [DEBUG] [Thread-113930] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:11:05.747 [DEBUG] [Thread-113930] [transport.py] [_log()] Compression: none
2025-11-03T10:11:05.747 [DEBUG] [Thread-113930] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:11:05.775 [DEBUG] [Thread-113930] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:11:05.779 [DEBUG] [Thread-113930] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:11:05.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:11:05.782 [DEBUG] [Thread-113930] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:11:05.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:11:05.783 [DEBUG] [Thread-113930] [transport.py] [_log()] userauth is OK
2025-11-03T10:11:05.783 [DEBUG] [Thread-113930] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:11:05.783 [DEBUG] [Thread-113930] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:11:05.783 [DEBUG] [Thread-113930] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:11:05.784 [DEBUG] [Thread-113930] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:11:05.804 [INFO] [Thread-113930] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:11:05.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:11:06.381 [DEBUG] [Thread-113930] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:11:06.381 [DEBUG] [Thread-113930] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:11:06.382 [DEBUG] [Thread-113930] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:11:06.422 [DEBUG] [Thread-113930] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:11:06.422 [DEBUG] [Thread-113930] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:11:06.425 [DEBUG] [Thread-113930] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:11:06.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:11:06.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:11:06.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:11:06.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:11:06.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:11:06.447 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:11:06.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:11:06.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:11:06.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:11:06.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.340718 -999.00  +20.70  13.22     12   -8.70 1 1 1 1 1   888    0 28.96 -26.06 ----- 15.2 13.2 42.8 20.0 27.4 -29.1 26.4 -28.2 24.9 -27.7 25.9 -27.9
2025-11-03T10:11:06.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:11:06.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:11:06.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.340718
2025-11-03T10:11:06.454 [DEBUG] [Thread-113930] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:11:06.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:11:06.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:11:06.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:11:06.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:11:06.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:11:06.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:11:00', tmtdew=36.94, humidity=7.03, cloud=0.0, wind=18.1, temperature=21.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:10:38.035', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:11:06.547 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:11:06.560 [DEBUG] [Thread-113933] [transport.py] [_log()] starting thread (client mode): 0xed34490
2025-11-03T10:11:06.560 [DEBUG] [Thread-113933] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:11:06.575 [DEBUG] [Thread-113933] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:11:06.575 [INFO] [Thread-113933] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:11:06.583 [DEBUG] [Thread-113933] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:11:06.583 [DEBUG] [Thread-113933] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:11:06.583 [DEBUG] [Thread-113933] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:11:06.583 [DEBUG] [Thread-113933] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:11:06.583 [DEBUG] [Thread-113933] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:11:06.583 [DEBUG] [Thread-113933] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:11:06.583 [DEBUG] [Thread-113933] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:11:06.583 [DEBUG] [Thread-113933] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:11:06.583 [DEBUG] [Thread-113933] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:11:06.583 [DEBUG] [Thread-113933] [transport.py] [_log()] client lang: <none>
2025-11-03T10:11:06.583 [DEBUG] [Thread-113933] [transport.py] [_log()] server lang: <none>
2025-11-03T10:11:06.583 [DEBUG] [Thread-113933] [transport.py] [_log()] kex follows: False
2025-11-03T10:11:06.583 [DEBUG] [Thread-113933] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:11:06.583 [DEBUG] [Thread-113933] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:11:06.583 [DEBUG] [Thread-113933] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:11:06.584 [DEBUG] [Thread-113933] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:11:06.584 [DEBUG] [Thread-113933] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:11:06.584 [DEBUG] [Thread-113933] [transport.py] [_log()] Compression: none
2025-11-03T10:11:06.584 [DEBUG] [Thread-113933] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:11:06.640 [DEBUG] [Thread-113933] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:11:06.640 [DEBUG] [Thread-113933] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:11:06.640 [DEBUG] [Thread-113933] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:11:06.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:11:06.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:11:06.697 [DEBUG] [Thread-113933] [transport.py] [_log()] userauth is OK
2025-11-03T10:11:06.697 [DEBUG] [Thread-113933] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:11:06.697 [DEBUG] [Thread-113933] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:11:06.697 [DEBUG] [Thread-113933] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:11:06.697 [DEBUG] [Thread-113933] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:11:06.715 [INFO] [Thread-113933] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:11:06.715 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:11:06.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:11:07.615 [DEBUG] [Thread-113933] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:11:07.615 [DEBUG] [Thread-113933] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:11:07.662 [DEBUG] [Thread-113933] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:11:07.662 [DEBUG] [Thread-113933] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:11:07.671 [DEBUG] [Thread-113933] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:11:07.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:11:07.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:11:07.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:11:07.697 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:11:07.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:11:07.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:11:07.705 [DEBUG] [Thread-113933] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:11:17.521 [DEBUG] [Thread-113935 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:11:20.893 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:11:20.894 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:11:32.792 [DEBUG] [Thread-113936 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:11:37.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:11:37.713 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:11:37.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:11:38.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 11, 33), 36.9, 7.48, 0.0, 14.31, 21.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:11:38.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:11:33
2025-11-03T10:11:38.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:11:38.944 [DEBUG] [Thread-113937] [transport.py] [_log()] starting thread (client mode): 0xed37820
2025-11-03T10:11:38.945 [DEBUG] [Thread-113937] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:11:38.953 [DEBUG] [Thread-113937] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:11:38.953 [INFO] [Thread-113937] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:11:38.957 [DEBUG] [Thread-113937] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:11:38.958 [DEBUG] [Thread-113937] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:11:38.958 [DEBUG] [Thread-113937] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:11:38.958 [DEBUG] [Thread-113937] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:11:38.958 [DEBUG] [Thread-113937] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:11:38.958 [DEBUG] [Thread-113937] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:11:38.958 [DEBUG] [Thread-113937] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:11:38.958 [DEBUG] [Thread-113937] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:11:38.958 [DEBUG] [Thread-113937] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:11:38.958 [DEBUG] [Thread-113937] [transport.py] [_log()] client lang: <none>
2025-11-03T10:11:38.958 [DEBUG] [Thread-113937] [transport.py] [_log()] server lang: <none>
2025-11-03T10:11:38.958 [DEBUG] [Thread-113937] [transport.py] [_log()] kex follows: False
2025-11-03T10:11:38.958 [DEBUG] [Thread-113937] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:11:38.959 [DEBUG] [Thread-113937] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:11:38.959 [DEBUG] [Thread-113937] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:11:38.959 [DEBUG] [Thread-113937] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:11:38.959 [DEBUG] [Thread-113937] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:11:38.959 [DEBUG] [Thread-113937] [transport.py] [_log()] Compression: none
2025-11-03T10:11:38.959 [DEBUG] [Thread-113937] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:11:38.995 [DEBUG] [Thread-113937] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:11:39.000 [DEBUG] [Thread-113937] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:11:39.002 [DEBUG] [Thread-113937] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:11:39.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:11:39.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:11:39.006 [DEBUG] [Thread-113937] [transport.py] [_log()] userauth is OK
2025-11-03T10:11:39.007 [DEBUG] [Thread-113937] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:11:39.007 [DEBUG] [Thread-113937] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:11:39.007 [DEBUG] [Thread-113937] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:11:39.007 [DEBUG] [Thread-113937] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:11:39.046 [INFO] [Thread-113937] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:11:39.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:11:39.608 [DEBUG] [Thread-113937] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:11:39.608 [DEBUG] [Thread-113937] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:11:39.609 [DEBUG] [Thread-113937] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:11:39.649 [DEBUG] [Thread-113937] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:11:39.649 [DEBUG] [Thread-113937] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:11:39.651 [DEBUG] [Thread-113937] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:11:39.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:11:39.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:11:39.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:11:39.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:11:39.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:11:39.674 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:11:39.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:11:39.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:11:39.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:11:39.676 [DEBUG] [Thread-113937] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:11:39.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.340718 -999.00  +20.70  13.22     12   -8.70 1 1 1 1 1   888    0 28.96 -26.06 ----- 15.2 13.2 42.8 20.0 27.4 -29.1 26.4 -28.2 24.9 -27.7 25.9 -27.9
2025-11-03T10:11:39.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:11:39.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:11:39.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.340718
2025-11-03T10:11:39.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:11:39.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:11:39.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:11:39.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:11:39.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:11:39.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:11:33', tmtdew=36.9, humidity=7.48, cloud=0.0, wind=14.31, temperature=21.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:10:38.035', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:11:39.776 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:11:39.787 [DEBUG] [Thread-113940] [transport.py] [_log()] starting thread (client mode): 0xed07940
2025-11-03T10:11:39.787 [DEBUG] [Thread-113940] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:11:39.802 [DEBUG] [Thread-113940] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:11:39.802 [INFO] [Thread-113940] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:11:39.810 [DEBUG] [Thread-113940] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:11:39.810 [DEBUG] [Thread-113940] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:11:39.810 [DEBUG] [Thread-113940] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:11:39.810 [DEBUG] [Thread-113940] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:11:39.810 [DEBUG] [Thread-113940] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:11:39.810 [DEBUG] [Thread-113940] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:11:39.810 [DEBUG] [Thread-113940] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:11:39.810 [DEBUG] [Thread-113940] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:11:39.810 [DEBUG] [Thread-113940] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:11:39.810 [DEBUG] [Thread-113940] [transport.py] [_log()] client lang: <none>
2025-11-03T10:11:39.810 [DEBUG] [Thread-113940] [transport.py] [_log()] server lang: <none>
2025-11-03T10:11:39.810 [DEBUG] [Thread-113940] [transport.py] [_log()] kex follows: False
2025-11-03T10:11:39.810 [DEBUG] [Thread-113940] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:11:39.810 [DEBUG] [Thread-113940] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:11:39.810 [DEBUG] [Thread-113940] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:11:39.810 [DEBUG] [Thread-113940] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:11:39.810 [DEBUG] [Thread-113940] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:11:39.810 [DEBUG] [Thread-113940] [transport.py] [_log()] Compression: none
2025-11-03T10:11:39.810 [DEBUG] [Thread-113940] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:11:39.871 [DEBUG] [Thread-113940] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:11:39.872 [DEBUG] [Thread-113940] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:11:39.872 [DEBUG] [Thread-113940] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:11:39.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:11:39.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:11:39.929 [DEBUG] [Thread-113940] [transport.py] [_log()] userauth is OK
2025-11-03T10:11:39.930 [DEBUG] [Thread-113940] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:11:39.930 [DEBUG] [Thread-113940] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:11:39.930 [DEBUG] [Thread-113940] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:11:39.930 [DEBUG] [Thread-113940] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:11:39.948 [INFO] [Thread-113940] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:11:39.948 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:11:39.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:11:40.793 [DEBUG] [Thread-113940] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:11:40.793 [DEBUG] [Thread-113940] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:11:40.841 [DEBUG] [Thread-113940] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:11:40.841 [DEBUG] [Thread-113940] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:11:40.849 [DEBUG] [Thread-113940] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:11:40.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:11:40.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:11:40.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:11:40.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:11:40.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:11:40.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:11:40.890 [DEBUG] [Thread-113940] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:11:47.923 [DEBUG] [Thread-113942 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:11:50.999 [DEBUG] [Thread-113943 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:12:03.133 [DEBUG] [Thread-113944 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:12:10.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:12:10.945 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:12:10.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:12:11.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 11, 33), 36.9, 7.48, 0.0, 14.31, 21.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:12:12.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:11:33
2025-11-03T10:12:12.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:12:12.351 [DEBUG] [Thread-113945] [transport.py] [_log()] starting thread (client mode): 0xed407c0
2025-11-03T10:12:12.352 [DEBUG] [Thread-113945] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:12:12.356 [DEBUG] [Thread-113945] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:12:12.356 [INFO] [Thread-113945] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:12:12.362 [DEBUG] [Thread-113945] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:12:12.362 [DEBUG] [Thread-113945] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:12:12.362 [DEBUG] [Thread-113945] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:12:12.362 [DEBUG] [Thread-113945] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:12:12.362 [DEBUG] [Thread-113945] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:12:12.362 [DEBUG] [Thread-113945] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:12:12.362 [DEBUG] [Thread-113945] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:12:12.362 [DEBUG] [Thread-113945] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:12:12.362 [DEBUG] [Thread-113945] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:12:12.362 [DEBUG] [Thread-113945] [transport.py] [_log()] client lang: <none>
2025-11-03T10:12:12.362 [DEBUG] [Thread-113945] [transport.py] [_log()] server lang: <none>
2025-11-03T10:12:12.362 [DEBUG] [Thread-113945] [transport.py] [_log()] kex follows: False
2025-11-03T10:12:12.362 [DEBUG] [Thread-113945] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:12:12.363 [DEBUG] [Thread-113945] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:12:12.363 [DEBUG] [Thread-113945] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:12:12.363 [DEBUG] [Thread-113945] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:12:12.363 [DEBUG] [Thread-113945] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:12:12.363 [DEBUG] [Thread-113945] [transport.py] [_log()] Compression: none
2025-11-03T10:12:12.363 [DEBUG] [Thread-113945] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:12:12.398 [DEBUG] [Thread-113945] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:12:12.403 [DEBUG] [Thread-113945] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:12:12.405 [DEBUG] [Thread-113945] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:12:12.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:12:12.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:12:12.410 [DEBUG] [Thread-113945] [transport.py] [_log()] userauth is OK
2025-11-03T10:12:12.410 [DEBUG] [Thread-113945] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:12:12.410 [DEBUG] [Thread-113945] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:12:12.410 [DEBUG] [Thread-113945] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:12:12.410 [DEBUG] [Thread-113945] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:12:12.429 [INFO] [Thread-113945] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:12:12.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:12:13.076 [DEBUG] [Thread-113945] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:12:13.077 [DEBUG] [Thread-113945] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:12:13.078 [DEBUG] [Thread-113945] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:12:13.117 [DEBUG] [Thread-113945] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:12:13.117 [DEBUG] [Thread-113945] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:12:13.121 [DEBUG] [Thread-113945] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:12:13.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:12:13.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:12:13.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:12:13.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:12:13.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:12:13.144 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:12:13.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:12:13.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:12:13.152 [DEBUG] [Thread-113945] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:12:13.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:12:13.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.341413 -999.00  +21.30  22.27     12   -8.40 1 1 1 1 1   888    0 29.08 -31.01 ----- 21.7 22.3 48.4 26.6 27.6 -29.3 26.4 -28.5 25.1 -28.5 26.0 -27.4
2025-11-03T10:12:13.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:12:13.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:12:13.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.341413
2025-11-03T10:12:13.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:12:13.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:12:13.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:12:13.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:12:13.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:12:13.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:11:33', tmtdew=36.9, humidity=7.48, cloud=0.0, wind=14.31, temperature=21.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:11:38.083', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:12:13.253 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:12:13.264 [DEBUG] [Thread-113948] [transport.py] [_log()] starting thread (client mode): 0xed37e50
2025-11-03T10:12:13.264 [DEBUG] [Thread-113948] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:12:13.279 [DEBUG] [Thread-113948] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:12:13.279 [INFO] [Thread-113948] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:12:13.287 [DEBUG] [Thread-113948] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:12:13.287 [DEBUG] [Thread-113948] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:12:13.287 [DEBUG] [Thread-113948] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:12:13.287 [DEBUG] [Thread-113948] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:12:13.287 [DEBUG] [Thread-113948] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:12:13.287 [DEBUG] [Thread-113948] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:12:13.287 [DEBUG] [Thread-113948] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:12:13.287 [DEBUG] [Thread-113948] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:12:13.287 [DEBUG] [Thread-113948] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:12:13.287 [DEBUG] [Thread-113948] [transport.py] [_log()] client lang: <none>
2025-11-03T10:12:13.287 [DEBUG] [Thread-113948] [transport.py] [_log()] server lang: <none>
2025-11-03T10:12:13.287 [DEBUG] [Thread-113948] [transport.py] [_log()] kex follows: False
2025-11-03T10:12:13.287 [DEBUG] [Thread-113948] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:12:13.288 [DEBUG] [Thread-113948] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:12:13.288 [DEBUG] [Thread-113948] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:12:13.288 [DEBUG] [Thread-113948] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:12:13.288 [DEBUG] [Thread-113948] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:12:13.288 [DEBUG] [Thread-113948] [transport.py] [_log()] Compression: none
2025-11-03T10:12:13.288 [DEBUG] [Thread-113948] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:12:13.344 [DEBUG] [Thread-113948] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:12:13.345 [DEBUG] [Thread-113948] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:12:13.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:12:13.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:12:13.346 [DEBUG] [Thread-113948] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:12:13.402 [DEBUG] [Thread-113948] [transport.py] [_log()] userauth is OK
2025-11-03T10:12:13.402 [DEBUG] [Thread-113948] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:12:13.402 [DEBUG] [Thread-113948] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:12:13.402 [DEBUG] [Thread-113948] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:12:13.402 [DEBUG] [Thread-113948] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:12:13.422 [INFO] [Thread-113948] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:12:13.423 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:12:13.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:12:14.291 [DEBUG] [Thread-113948] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:12:14.291 [DEBUG] [Thread-113948] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:12:14.339 [DEBUG] [Thread-113948] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:12:14.339 [DEBUG] [Thread-113948] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:12:14.348 [DEBUG] [Thread-113948] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:12:14.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:12:14.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:12:14.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:12:14.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:12:14.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:12:14.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:12:14.381 [DEBUG] [Thread-113948] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:12:18.249 [DEBUG] [Thread-113950 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:12:21.035 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:12:21.036 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:12:33.360 [DEBUG] [Thread-113951 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:12:44.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:12:44.385 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:12:44.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:12:45.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 12, 6), 36.91, 7.48, 0.0, 12.02, 21.87, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:12:45.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:12:06
2025-11-03T10:12:45.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:12:46.011 [DEBUG] [Thread-113952] [transport.py] [_log()] starting thread (client mode): 0xed67760
2025-11-03T10:12:46.013 [DEBUG] [Thread-113952] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:12:46.014 [DEBUG] [Thread-113952] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:12:46.014 [INFO] [Thread-113952] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:12:46.019 [DEBUG] [Thread-113952] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:12:46.019 [DEBUG] [Thread-113952] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:12:46.019 [DEBUG] [Thread-113952] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:12:46.019 [DEBUG] [Thread-113952] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:12:46.019 [DEBUG] [Thread-113952] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:12:46.019 [DEBUG] [Thread-113952] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:12:46.019 [DEBUG] [Thread-113952] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:12:46.019 [DEBUG] [Thread-113952] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:12:46.019 [DEBUG] [Thread-113952] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:12:46.020 [DEBUG] [Thread-113952] [transport.py] [_log()] client lang: <none>
2025-11-03T10:12:46.020 [DEBUG] [Thread-113952] [transport.py] [_log()] server lang: <none>
2025-11-03T10:12:46.020 [DEBUG] [Thread-113952] [transport.py] [_log()] kex follows: False
2025-11-03T10:12:46.020 [DEBUG] [Thread-113952] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:12:46.021 [DEBUG] [Thread-113952] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:12:46.021 [DEBUG] [Thread-113952] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:12:46.021 [DEBUG] [Thread-113952] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:12:46.021 [DEBUG] [Thread-113952] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:12:46.021 [DEBUG] [Thread-113952] [transport.py] [_log()] Compression: none
2025-11-03T10:12:46.021 [DEBUG] [Thread-113952] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:12:46.052 [DEBUG] [Thread-113952] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:12:46.056 [DEBUG] [Thread-113952] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:12:46.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:12:46.059 [DEBUG] [Thread-113952] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:12:46.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:12:46.061 [DEBUG] [Thread-113952] [transport.py] [_log()] userauth is OK
2025-11-03T10:12:46.061 [DEBUG] [Thread-113952] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:12:46.062 [DEBUG] [Thread-113952] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:12:46.062 [DEBUG] [Thread-113952] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:12:46.062 [DEBUG] [Thread-113952] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:12:46.081 [INFO] [Thread-113952] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:12:46.085 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:12:46.741 [DEBUG] [Thread-113952] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:12:46.742 [DEBUG] [Thread-113952] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:12:46.743 [DEBUG] [Thread-113952] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:12:46.783 [DEBUG] [Thread-113952] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:12:46.783 [DEBUG] [Thread-113952] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:12:46.786 [DEBUG] [Thread-113952] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:12:46.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:12:46.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:12:46.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:12:46.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:12:46.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:12:46.812 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:12:46.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:12:46.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:12:46.815 [DEBUG] [Thread-113952] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:12:46.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:12:46.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.341760 -999.00  +21.40  19.99     12   -8.50 1 1 1 1 1   888    0 28.81 -33.38 ----- 17.1 20.0 66.2 24.2 27.6 -28.7 26.4 -28.4 25.1 -28.6 26.0 -27.8
2025-11-03T10:12:46.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:12:46.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:12:46.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.341760
2025-11-03T10:12:46.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:12:46.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:12:46.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:12:46.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:12:46.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:12:46.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:12:06', tmtdew=36.91, humidity=7.48, cloud=0.0, wind=12.02, temperature=21.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:12:08.064', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:12:46.933 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:12:46.944 [DEBUG] [Thread-113955] [transport.py] [_log()] starting thread (client mode): 0xed423e0
2025-11-03T10:12:46.944 [DEBUG] [Thread-113955] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:12:46.963 [DEBUG] [Thread-113955] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:12:46.963 [INFO] [Thread-113955] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:12:46.970 [DEBUG] [Thread-113955] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:12:46.970 [DEBUG] [Thread-113955] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:12:46.970 [DEBUG] [Thread-113955] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:12:46.970 [DEBUG] [Thread-113955] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:12:46.970 [DEBUG] [Thread-113955] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:12:46.970 [DEBUG] [Thread-113955] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:12:46.970 [DEBUG] [Thread-113955] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:12:46.970 [DEBUG] [Thread-113955] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:12:46.970 [DEBUG] [Thread-113955] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:12:46.970 [DEBUG] [Thread-113955] [transport.py] [_log()] client lang: <none>
2025-11-03T10:12:46.970 [DEBUG] [Thread-113955] [transport.py] [_log()] server lang: <none>
2025-11-03T10:12:46.970 [DEBUG] [Thread-113955] [transport.py] [_log()] kex follows: False
2025-11-03T10:12:46.970 [DEBUG] [Thread-113955] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:12:46.970 [DEBUG] [Thread-113955] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:12:46.970 [DEBUG] [Thread-113955] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:12:46.971 [DEBUG] [Thread-113955] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:12:46.971 [DEBUG] [Thread-113955] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:12:46.971 [DEBUG] [Thread-113955] [transport.py] [_log()] Compression: none
2025-11-03T10:12:46.971 [DEBUG] [Thread-113955] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:12:47.029 [DEBUG] [Thread-113955] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:12:47.029 [DEBUG] [Thread-113955] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:12:47.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:12:47.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:12:47.030 [DEBUG] [Thread-113955] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:12:47.085 [DEBUG] [Thread-113955] [transport.py] [_log()] userauth is OK
2025-11-03T10:12:47.085 [DEBUG] [Thread-113955] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:12:47.085 [DEBUG] [Thread-113955] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:12:47.085 [DEBUG] [Thread-113955] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:12:47.086 [DEBUG] [Thread-113955] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:12:47.101 [INFO] [Thread-113955] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:12:47.102 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:12:47.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:12:47.966 [DEBUG] [Thread-113955] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:12:47.967 [DEBUG] [Thread-113955] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:12:48.014 [DEBUG] [Thread-113955] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:12:48.014 [DEBUG] [Thread-113955] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:12:48.023 [DEBUG] [Thread-113955] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:12:48.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:12:48.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:12:48.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:12:48.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:12:48.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:12:48.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:12:48.057 [DEBUG] [Thread-113955] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:12:48.401 [DEBUG] [Thread-113957 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:12:51.353 [DEBUG] [Thread-113958 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:13:03.559 [DEBUG] [Thread-113959 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:13:18.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:13:18.077 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:13:18.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:13:18.693 [DEBUG] [Thread-113960 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:13:18.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 12, 40), 37.13, 6.98, 0.0, 12.86, 22.17, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:13:18.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:12:40
2025-11-03T10:13:18.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:13:19.157 [DEBUG] [Thread-113961] [transport.py] [_log()] starting thread (client mode): 0xed42260
2025-11-03T10:13:19.159 [DEBUG] [Thread-113961] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:13:19.167 [DEBUG] [Thread-113961] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:13:19.167 [INFO] [Thread-113961] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:13:19.182 [DEBUG] [Thread-113961] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:13:19.182 [DEBUG] [Thread-113961] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:13:19.182 [DEBUG] [Thread-113961] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:13:19.182 [DEBUG] [Thread-113961] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:13:19.182 [DEBUG] [Thread-113961] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:13:19.182 [DEBUG] [Thread-113961] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:13:19.182 [DEBUG] [Thread-113961] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:13:19.182 [DEBUG] [Thread-113961] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:13:19.182 [DEBUG] [Thread-113961] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:13:19.182 [DEBUG] [Thread-113961] [transport.py] [_log()] client lang: <none>
2025-11-03T10:13:19.182 [DEBUG] [Thread-113961] [transport.py] [_log()] server lang: <none>
2025-11-03T10:13:19.182 [DEBUG] [Thread-113961] [transport.py] [_log()] kex follows: False
2025-11-03T10:13:19.182 [DEBUG] [Thread-113961] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:13:19.183 [DEBUG] [Thread-113961] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:13:19.184 [DEBUG] [Thread-113961] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:13:19.184 [DEBUG] [Thread-113961] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:13:19.184 [DEBUG] [Thread-113961] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:13:19.184 [DEBUG] [Thread-113961] [transport.py] [_log()] Compression: none
2025-11-03T10:13:19.184 [DEBUG] [Thread-113961] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:13:19.228 [DEBUG] [Thread-113961] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:13:19.232 [DEBUG] [Thread-113961] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:13:19.233 [DEBUG] [Thread-113961] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:13:19.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:13:19.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:13:19.238 [DEBUG] [Thread-113961] [transport.py] [_log()] userauth is OK
2025-11-03T10:13:19.238 [DEBUG] [Thread-113961] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:13:19.238 [DEBUG] [Thread-113961] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:13:19.238 [DEBUG] [Thread-113961] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:13:19.238 [DEBUG] [Thread-113961] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:13:19.268 [INFO] [Thread-113961] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:13:19.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:13:19.909 [DEBUG] [Thread-113961] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:13:19.910 [DEBUG] [Thread-113961] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:13:19.912 [DEBUG] [Thread-113961] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:13:19.951 [DEBUG] [Thread-113961] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:13:19.951 [DEBUG] [Thread-113961] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:13:19.954 [DEBUG] [Thread-113961] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:13:19.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:13:19.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:13:19.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:13:19.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:13:19.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:13:19.975 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:13:19.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:13:19.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:13:19.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:13:19.976 [DEBUG] [Thread-113961] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:13:19.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.342107 -999.00  +21.30  13.92     12   -8.60 1 1 1 1 1   888    0 29.11 -32.55 ----- 11.6 13.9 62.2 18.3 27.6 -28.5 26.6 -28.0 25.3 -28.5 26.1 -28.0
2025-11-03T10:13:19.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:13:19.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:13:19.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.342107
2025-11-03T10:13:19.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:13:20.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:13:20.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:13:20.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:13:20.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:13:20.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:12:40', tmtdew=37.13, humidity=6.98, cloud=0.0, wind=12.86, temperature=22.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:12:38.045', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:13:20.083 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:13:20.095 [DEBUG] [Thread-113964] [transport.py] [_log()] starting thread (client mode): 0xed42b60
2025-11-03T10:13:20.095 [DEBUG] [Thread-113964] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:13:20.111 [DEBUG] [Thread-113964] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:13:20.111 [INFO] [Thread-113964] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:13:20.123 [DEBUG] [Thread-113964] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:13:20.123 [DEBUG] [Thread-113964] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:13:20.123 [DEBUG] [Thread-113964] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:13:20.123 [DEBUG] [Thread-113964] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:13:20.123 [DEBUG] [Thread-113964] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:13:20.123 [DEBUG] [Thread-113964] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:13:20.123 [DEBUG] [Thread-113964] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:13:20.123 [DEBUG] [Thread-113964] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:13:20.123 [DEBUG] [Thread-113964] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:13:20.123 [DEBUG] [Thread-113964] [transport.py] [_log()] client lang: <none>
2025-11-03T10:13:20.123 [DEBUG] [Thread-113964] [transport.py] [_log()] server lang: <none>
2025-11-03T10:13:20.123 [DEBUG] [Thread-113964] [transport.py] [_log()] kex follows: False
2025-11-03T10:13:20.123 [DEBUG] [Thread-113964] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:13:20.123 [DEBUG] [Thread-113964] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:13:20.123 [DEBUG] [Thread-113964] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:13:20.123 [DEBUG] [Thread-113964] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:13:20.123 [DEBUG] [Thread-113964] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:13:20.123 [DEBUG] [Thread-113964] [transport.py] [_log()] Compression: none
2025-11-03T10:13:20.124 [DEBUG] [Thread-113964] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:13:20.177 [DEBUG] [Thread-113964] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:13:20.177 [DEBUG] [Thread-113964] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:13:20.177 [DEBUG] [Thread-113964] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:13:20.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:13:20.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:13:20.234 [DEBUG] [Thread-113964] [transport.py] [_log()] userauth is OK
2025-11-03T10:13:20.234 [DEBUG] [Thread-113964] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:13:20.234 [DEBUG] [Thread-113964] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:13:20.234 [DEBUG] [Thread-113964] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:13:20.234 [DEBUG] [Thread-113964] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:13:20.249 [INFO] [Thread-113964] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:13:20.249 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:13:20.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:13:21.125 [DEBUG] [Thread-113964] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:13:21.125 [DEBUG] [Thread-113964] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:13:21.173 [DEBUG] [Thread-113964] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:13:21.173 [DEBUG] [Thread-113964] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:13:21.175 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:13:21.176 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:13:21.181 [DEBUG] [Thread-113964] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:13:21.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:13:21.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:13:21.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:13:21.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:13:21.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:13:21.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:13:21.215 [DEBUG] [Thread-113964] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:13:33.818 [DEBUG] [Thread-113966 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:13:49.027 [DEBUG] [Thread-113967 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:13:51.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:13:51.212 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:13:51.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:13:51.837 [DEBUG] [Thread-113968 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:13:52.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 13, 15), 37.39, 6.83, 0.0, 14.8, 22.15, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:13:52.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:13:15
2025-11-03T10:13:52.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:13:52.684 [DEBUG] [Thread-113969] [transport.py] [_log()] starting thread (client mode): 0x81dbb50
2025-11-03T10:13:52.685 [DEBUG] [Thread-113969] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:13:52.692 [DEBUG] [Thread-113969] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:13:52.692 [INFO] [Thread-113969] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:13:52.698 [DEBUG] [Thread-113969] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:13:52.698 [DEBUG] [Thread-113969] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:13:52.699 [DEBUG] [Thread-113969] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:13:52.699 [DEBUG] [Thread-113969] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:13:52.699 [DEBUG] [Thread-113969] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:13:52.699 [DEBUG] [Thread-113969] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:13:52.699 [DEBUG] [Thread-113969] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:13:52.699 [DEBUG] [Thread-113969] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:13:52.699 [DEBUG] [Thread-113969] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:13:52.699 [DEBUG] [Thread-113969] [transport.py] [_log()] client lang: <none>
2025-11-03T10:13:52.699 [DEBUG] [Thread-113969] [transport.py] [_log()] server lang: <none>
2025-11-03T10:13:52.699 [DEBUG] [Thread-113969] [transport.py] [_log()] kex follows: False
2025-11-03T10:13:52.699 [DEBUG] [Thread-113969] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:13:52.700 [DEBUG] [Thread-113969] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:13:52.700 [DEBUG] [Thread-113969] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:13:52.700 [DEBUG] [Thread-113969] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:13:52.700 [DEBUG] [Thread-113969] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:13:52.700 [DEBUG] [Thread-113969] [transport.py] [_log()] Compression: none
2025-11-03T10:13:52.700 [DEBUG] [Thread-113969] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:13:52.742 [DEBUG] [Thread-113969] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:13:52.747 [DEBUG] [Thread-113969] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:13:52.749 [DEBUG] [Thread-113969] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:13:52.750 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:13:52.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:13:52.754 [DEBUG] [Thread-113969] [transport.py] [_log()] userauth is OK
2025-11-03T10:13:52.754 [DEBUG] [Thread-113969] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:13:52.754 [DEBUG] [Thread-113969] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:13:52.754 [DEBUG] [Thread-113969] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:13:52.754 [DEBUG] [Thread-113969] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:13:52.773 [INFO] [Thread-113969] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:13:52.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:13:53.412 [DEBUG] [Thread-113969] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:13:53.412 [DEBUG] [Thread-113969] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:13:53.416 [DEBUG] [Thread-113969] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:13:53.454 [DEBUG] [Thread-113969] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:13:53.454 [DEBUG] [Thread-113969] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:13:53.457 [DEBUG] [Thread-113969] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:13:53.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:13:53.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:13:53.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:13:53.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:13:53.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:13:53.487 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:13:53.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:13:53.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:13:53.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:13:53.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.342454 -999.00  +21.30   8.74     12   -8.60 1 1 1 1 1   888    0 28.40 -30.40 ----- 12.3 8.7 67.5 11.4 27.7 -28.4 26.7 -28.2 25.4 -28.6 26.2 -27.8
2025-11-03T10:13:53.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:13:53.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:13:53.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.342454
2025-11-03T10:13:53.499 [DEBUG] [Thread-113969] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:13:53.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:13:53.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:13:53.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:13:53.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:13:53.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:13:53.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:13:15', tmtdew=37.39, humidity=6.83, cloud=0.0, wind=14.8, temperature=22.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:13:08.026', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:13:53.612 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:13:53.623 [DEBUG] [Thread-113972] [transport.py] [_log()] starting thread (client mode): 0xed5e860
2025-11-03T10:13:53.623 [DEBUG] [Thread-113972] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:13:53.638 [DEBUG] [Thread-113972] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:13:53.638 [INFO] [Thread-113972] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:13:53.646 [DEBUG] [Thread-113972] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:13:53.646 [DEBUG] [Thread-113972] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:13:53.646 [DEBUG] [Thread-113972] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:13:53.646 [DEBUG] [Thread-113972] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:13:53.646 [DEBUG] [Thread-113972] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:13:53.646 [DEBUG] [Thread-113972] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:13:53.646 [DEBUG] [Thread-113972] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:13:53.646 [DEBUG] [Thread-113972] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:13:53.646 [DEBUG] [Thread-113972] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:13:53.646 [DEBUG] [Thread-113972] [transport.py] [_log()] client lang: <none>
2025-11-03T10:13:53.646 [DEBUG] [Thread-113972] [transport.py] [_log()] server lang: <none>
2025-11-03T10:13:53.646 [DEBUG] [Thread-113972] [transport.py] [_log()] kex follows: False
2025-11-03T10:13:53.646 [DEBUG] [Thread-113972] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:13:53.646 [DEBUG] [Thread-113972] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:13:53.646 [DEBUG] [Thread-113972] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:13:53.646 [DEBUG] [Thread-113972] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:13:53.646 [DEBUG] [Thread-113972] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:13:53.646 [DEBUG] [Thread-113972] [transport.py] [_log()] Compression: none
2025-11-03T10:13:53.646 [DEBUG] [Thread-113972] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:13:53.703 [DEBUG] [Thread-113972] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:13:53.703 [DEBUG] [Thread-113972] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:13:53.704 [DEBUG] [Thread-113972] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:13:53.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:13:53.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:13:53.757 [DEBUG] [Thread-113972] [transport.py] [_log()] userauth is OK
2025-11-03T10:13:53.757 [DEBUG] [Thread-113972] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:13:53.758 [DEBUG] [Thread-113972] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:13:53.758 [DEBUG] [Thread-113972] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:13:53.758 [DEBUG] [Thread-113972] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:13:53.777 [INFO] [Thread-113972] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:13:53.777 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:13:53.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:13:54.618 [DEBUG] [Thread-113972] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:13:54.618 [DEBUG] [Thread-113972] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:13:54.661 [DEBUG] [Thread-113972] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:13:54.661 [DEBUG] [Thread-113972] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:13:54.669 [DEBUG] [Thread-113972] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:13:54.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:13:54.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:13:54.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:13:54.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:13:54.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:13:54.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:13:54.703 [DEBUG] [Thread-113972] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:14:04.161 [DEBUG] [Thread-113974 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:14:19.328 [DEBUG] [Thread-113975 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:14:21.325 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:14:21.328 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:14:24.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:14:24.715 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:14:24.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:14:25.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 13, 48), 37.32, 6.9, 0.0, 13.55, 21.7, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:14:25.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:13:48
2025-11-03T10:14:25.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:14:25.803 [DEBUG] [Thread-113976] [transport.py] [_log()] starting thread (client mode): 0xed5cee0
2025-11-03T10:14:25.803 [DEBUG] [Thread-113976] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:14:25.822 [DEBUG] [Thread-113976] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:14:25.822 [INFO] [Thread-113976] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:14:25.824 [DEBUG] [Thread-113976] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:14:25.824 [DEBUG] [Thread-113976] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:14:25.824 [DEBUG] [Thread-113976] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:14:25.824 [DEBUG] [Thread-113976] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:14:25.824 [DEBUG] [Thread-113976] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:14:25.824 [DEBUG] [Thread-113976] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:14:25.824 [DEBUG] [Thread-113976] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:14:25.824 [DEBUG] [Thread-113976] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:14:25.824 [DEBUG] [Thread-113976] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:14:25.824 [DEBUG] [Thread-113976] [transport.py] [_log()] client lang: <none>
2025-11-03T10:14:25.824 [DEBUG] [Thread-113976] [transport.py] [_log()] server lang: <none>
2025-11-03T10:14:25.824 [DEBUG] [Thread-113976] [transport.py] [_log()] kex follows: False
2025-11-03T10:14:25.824 [DEBUG] [Thread-113976] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:14:25.824 [DEBUG] [Thread-113976] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:14:25.824 [DEBUG] [Thread-113976] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:14:25.824 [DEBUG] [Thread-113976] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:14:25.824 [DEBUG] [Thread-113976] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:14:25.824 [DEBUG] [Thread-113976] [transport.py] [_log()] Compression: none
2025-11-03T10:14:25.824 [DEBUG] [Thread-113976] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:14:25.840 [DEBUG] [Thread-113976] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:14:25.841 [DEBUG] [Thread-113976] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:14:25.841 [DEBUG] [Thread-113976] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:14:25.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:14:25.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:14:25.842 [DEBUG] [Thread-113976] [transport.py] [_log()] userauth is OK
2025-11-03T10:14:25.842 [DEBUG] [Thread-113976] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:14:25.842 [DEBUG] [Thread-113976] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:14:25.842 [DEBUG] [Thread-113976] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:14:25.842 [DEBUG] [Thread-113976] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:14:25.857 [INFO] [Thread-113976] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:14:25.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:14:26.457 [DEBUG] [Thread-113976] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:14:26.458 [DEBUG] [Thread-113976] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:14:26.458 [DEBUG] [Thread-113976] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:14:26.499 [DEBUG] [Thread-113976] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:14:26.499 [DEBUG] [Thread-113976] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:14:26.503 [DEBUG] [Thread-113976] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:14:26.514 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:14:26.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:14:26.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:14:26.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:14:26.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:14:26.527 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:14:26.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:14:26.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:14:26.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:14:26.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.342802 -999.00  +21.20  13.10     12   -8.50 1 1 1 1 1   888    0 28.90 -28.31 ----- 14.5 13.1 49.2 14.7 27.8 -28.6 26.8 -28.1 25.4 -28.2 26.3 -27.8
2025-11-03T10:14:26.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:14:26.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:14:26.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.342802
2025-11-03T10:14:26.534 [DEBUG] [Thread-113976] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:14:26.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:14:26.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:14:26.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:14:26.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:14:26.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:14:26.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:13:48', tmtdew=37.32, humidity=6.9, cloud=0.0, wind=13.55, temperature=21.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:13:38.093', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:14:26.629 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:14:26.639 [DEBUG] [Thread-113979] [transport.py] [_log()] starting thread (client mode): 0xed07940
2025-11-03T10:14:26.639 [DEBUG] [Thread-113979] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:14:26.654 [DEBUG] [Thread-113979] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:14:26.654 [INFO] [Thread-113979] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:14:26.661 [DEBUG] [Thread-113979] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:14:26.661 [DEBUG] [Thread-113979] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:14:26.662 [DEBUG] [Thread-113979] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:14:26.662 [DEBUG] [Thread-113979] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:14:26.662 [DEBUG] [Thread-113979] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:14:26.662 [DEBUG] [Thread-113979] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:14:26.662 [DEBUG] [Thread-113979] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:14:26.662 [DEBUG] [Thread-113979] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:14:26.662 [DEBUG] [Thread-113979] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:14:26.662 [DEBUG] [Thread-113979] [transport.py] [_log()] client lang: <none>
2025-11-03T10:14:26.662 [DEBUG] [Thread-113979] [transport.py] [_log()] server lang: <none>
2025-11-03T10:14:26.662 [DEBUG] [Thread-113979] [transport.py] [_log()] kex follows: False
2025-11-03T10:14:26.662 [DEBUG] [Thread-113979] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:14:26.662 [DEBUG] [Thread-113979] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:14:26.662 [DEBUG] [Thread-113979] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:14:26.662 [DEBUG] [Thread-113979] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:14:26.662 [DEBUG] [Thread-113979] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:14:26.662 [DEBUG] [Thread-113979] [transport.py] [_log()] Compression: none
2025-11-03T10:14:26.662 [DEBUG] [Thread-113979] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:14:26.726 [DEBUG] [Thread-113979] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:14:26.727 [DEBUG] [Thread-113979] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:14:26.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:14:26.728 [DEBUG] [Thread-113979] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:14:26.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:14:26.782 [DEBUG] [Thread-113979] [transport.py] [_log()] userauth is OK
2025-11-03T10:14:26.782 [DEBUG] [Thread-113979] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:14:26.785 [DEBUG] [Thread-113979] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:14:26.785 [DEBUG] [Thread-113979] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:14:26.785 [DEBUG] [Thread-113979] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:14:26.807 [INFO] [Thread-113979] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:14:26.807 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:14:26.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:14:27.726 [DEBUG] [Thread-113979] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:14:27.727 [DEBUG] [Thread-113979] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:14:27.774 [DEBUG] [Thread-113979] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:14:27.774 [DEBUG] [Thread-113979] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:14:27.783 [DEBUG] [Thread-113979] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:14:27.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:14:27.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:14:27.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:14:27.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:14:27.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:14:27.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:14:27.819 [DEBUG] [Thread-113979] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:14:34.362 [DEBUG] [Thread-113981 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:14:49.411 [DEBUG] [Thread-113982 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:14:52.063 [DEBUG] [Thread-113983 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:14:57.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:14:57.842 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:14:57.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:14:58.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 14, 22), 36.97, 7.09, 0.0, 15.17, 21.69, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:14:58.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:14:22
2025-11-03T10:14:58.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:14:58.801 [DEBUG] [Thread-113984] [transport.py] [_log()] starting thread (client mode): 0x81dad10
2025-11-03T10:14:58.801 [DEBUG] [Thread-113984] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:14:58.823 [DEBUG] [Thread-113984] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:14:58.823 [INFO] [Thread-113984] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:14:58.833 [DEBUG] [Thread-113984] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:14:58.834 [DEBUG] [Thread-113984] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:14:58.834 [DEBUG] [Thread-113984] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:14:58.834 [DEBUG] [Thread-113984] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:14:58.834 [DEBUG] [Thread-113984] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:14:58.834 [DEBUG] [Thread-113984] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:14:58.834 [DEBUG] [Thread-113984] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:14:58.834 [DEBUG] [Thread-113984] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:14:58.834 [DEBUG] [Thread-113984] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:14:58.834 [DEBUG] [Thread-113984] [transport.py] [_log()] client lang: <none>
2025-11-03T10:14:58.834 [DEBUG] [Thread-113984] [transport.py] [_log()] server lang: <none>
2025-11-03T10:14:58.834 [DEBUG] [Thread-113984] [transport.py] [_log()] kex follows: False
2025-11-03T10:14:58.834 [DEBUG] [Thread-113984] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:14:58.834 [DEBUG] [Thread-113984] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:14:58.834 [DEBUG] [Thread-113984] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:14:58.834 [DEBUG] [Thread-113984] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:14:58.834 [DEBUG] [Thread-113984] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:14:58.834 [DEBUG] [Thread-113984] [transport.py] [_log()] Compression: none
2025-11-03T10:14:58.835 [DEBUG] [Thread-113984] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:14:58.853 [DEBUG] [Thread-113984] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:14:58.854 [DEBUG] [Thread-113984] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:14:58.854 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:14:58.855 [DEBUG] [Thread-113984] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:14:58.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:14:58.858 [DEBUG] [Thread-113984] [transport.py] [_log()] userauth is OK
2025-11-03T10:14:58.858 [DEBUG] [Thread-113984] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:14:58.858 [DEBUG] [Thread-113984] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:14:58.858 [DEBUG] [Thread-113984] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:14:58.858 [DEBUG] [Thread-113984] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:14:58.885 [INFO] [Thread-113984] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:14:58.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:14:59.489 [DEBUG] [Thread-113984] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:14:59.489 [DEBUG] [Thread-113984] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:14:59.489 [DEBUG] [Thread-113984] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:14:59.529 [DEBUG] [Thread-113984] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:14:59.529 [DEBUG] [Thread-113984] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:14:59.532 [DEBUG] [Thread-113984] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:14:59.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:14:59.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:14:59.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:14:59.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:14:59.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:14:59.551 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:14:59.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:14:59.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:14:59.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:14:59.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.343149 -999.00  +21.30  15.36     12   -8.40 1 1 1 1 1   888    0 28.95 -23.63 ----- 16.1 15.4 38.0 18.9 27.9 -29.3 26.8 -28.6 25.5 -28.2 26.4 -27.5
2025-11-03T10:14:59.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:14:59.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:14:59.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.343149
2025-11-03T10:14:59.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:14:59.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:14:59.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:14:59.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:14:59.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:14:59.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:14:22', tmtdew=36.97, humidity=7.09, cloud=0.0, wind=15.17, temperature=21.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:14:08.074', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:14:59.552 [DEBUG] [Thread-113984] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:14:59.623 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:14:59.634 [DEBUG] [Thread-113987] [transport.py] [_log()] starting thread (client mode): 0xed40c40
2025-11-03T10:14:59.634 [DEBUG] [Thread-113987] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:14:59.649 [DEBUG] [Thread-113987] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:14:59.649 [INFO] [Thread-113987] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:14:59.657 [DEBUG] [Thread-113987] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:14:59.657 [DEBUG] [Thread-113987] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:14:59.657 [DEBUG] [Thread-113987] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:14:59.657 [DEBUG] [Thread-113987] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:14:59.657 [DEBUG] [Thread-113987] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:14:59.657 [DEBUG] [Thread-113987] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:14:59.657 [DEBUG] [Thread-113987] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:14:59.657 [DEBUG] [Thread-113987] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:14:59.657 [DEBUG] [Thread-113987] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:14:59.657 [DEBUG] [Thread-113987] [transport.py] [_log()] client lang: <none>
2025-11-03T10:14:59.657 [DEBUG] [Thread-113987] [transport.py] [_log()] server lang: <none>
2025-11-03T10:14:59.657 [DEBUG] [Thread-113987] [transport.py] [_log()] kex follows: False
2025-11-03T10:14:59.657 [DEBUG] [Thread-113987] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:14:59.657 [DEBUG] [Thread-113987] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:14:59.657 [DEBUG] [Thread-113987] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:14:59.657 [DEBUG] [Thread-113987] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:14:59.657 [DEBUG] [Thread-113987] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:14:59.657 [DEBUG] [Thread-113987] [transport.py] [_log()] Compression: none
2025-11-03T10:14:59.657 [DEBUG] [Thread-113987] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:14:59.712 [DEBUG] [Thread-113987] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:14:59.712 [DEBUG] [Thread-113987] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:14:59.712 [DEBUG] [Thread-113987] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:14:59.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:14:59.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:14:59.769 [DEBUG] [Thread-113987] [transport.py] [_log()] userauth is OK
2025-11-03T10:14:59.770 [DEBUG] [Thread-113987] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:14:59.770 [DEBUG] [Thread-113987] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:14:59.770 [DEBUG] [Thread-113987] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:14:59.770 [DEBUG] [Thread-113987] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:14:59.783 [INFO] [Thread-113987] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:14:59.784 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:14:59.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:15:00.706 [DEBUG] [Thread-113987] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:15:00.707 [DEBUG] [Thread-113987] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:15:00.755 [DEBUG] [Thread-113987] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:15:00.755 [DEBUG] [Thread-113987] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:15:00.765 [DEBUG] [Thread-113987] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:15:00.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:15:00.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:15:00.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:15:00.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:15:00.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:15:00.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:15:00.801 [DEBUG] [Thread-113987] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:15:04.446 [DEBUG] [Thread-113989 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:15:19.502 [DEBUG] [Thread-113990 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:15:21.469 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:15:21.470 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:15:30.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:15:30.824 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:15:30.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:15:31.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 15, 27), 36.72, 7.54, 0.0, 14.73, 21.82, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:15:31.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:15:27
2025-11-03T10:15:31.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:15:31.816 [DEBUG] [Thread-113991] [transport.py] [_log()] starting thread (client mode): 0xed41e40
2025-11-03T10:15:31.816 [DEBUG] [Thread-113991] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:15:31.821 [DEBUG] [Thread-113991] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:15:31.822 [INFO] [Thread-113991] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:15:31.825 [DEBUG] [Thread-113991] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:15:31.825 [DEBUG] [Thread-113991] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:15:31.825 [DEBUG] [Thread-113991] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:15:31.825 [DEBUG] [Thread-113991] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:15:31.825 [DEBUG] [Thread-113991] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:15:31.825 [DEBUG] [Thread-113991] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:15:31.825 [DEBUG] [Thread-113991] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:15:31.825 [DEBUG] [Thread-113991] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:15:31.825 [DEBUG] [Thread-113991] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:15:31.825 [DEBUG] [Thread-113991] [transport.py] [_log()] client lang: <none>
2025-11-03T10:15:31.825 [DEBUG] [Thread-113991] [transport.py] [_log()] server lang: <none>
2025-11-03T10:15:31.825 [DEBUG] [Thread-113991] [transport.py] [_log()] kex follows: False
2025-11-03T10:15:31.825 [DEBUG] [Thread-113991] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:15:31.825 [DEBUG] [Thread-113991] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:15:31.825 [DEBUG] [Thread-113991] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:15:31.825 [DEBUG] [Thread-113991] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:15:31.825 [DEBUG] [Thread-113991] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:15:31.826 [DEBUG] [Thread-113991] [transport.py] [_log()] Compression: none
2025-11-03T10:15:31.826 [DEBUG] [Thread-113991] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:15:31.844 [DEBUG] [Thread-113991] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:15:31.845 [DEBUG] [Thread-113991] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:15:31.846 [DEBUG] [Thread-113991] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:15:31.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:15:31.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:15:31.849 [DEBUG] [Thread-113991] [transport.py] [_log()] userauth is OK
2025-11-03T10:15:31.849 [DEBUG] [Thread-113991] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:15:31.849 [DEBUG] [Thread-113991] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:15:31.849 [DEBUG] [Thread-113991] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:15:31.849 [DEBUG] [Thread-113991] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:15:31.863 [INFO] [Thread-113991] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:15:31.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:15:32.504 [DEBUG] [Thread-113991] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:15:32.505 [DEBUG] [Thread-113991] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:15:32.505 [DEBUG] [Thread-113991] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:15:32.546 [DEBUG] [Thread-113991] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:15:32.547 [DEBUG] [Thread-113991] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:15:32.550 [DEBUG] [Thread-113991] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:15:32.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:15:32.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:15:32.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:15:32.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:15:32.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:15:32.575 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:15:32.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:15:32.576 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:15:32.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:15:32.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.343496 -999.00  +21.40  14.62     12   -8.30 1 1 1 1 1   888    0 28.73 -21.23 ----- 13.2 14.6 34.4 20.3 28.0 -28.7 26.9 -28.2 25.5 -28.6 26.5 -28.0
2025-11-03T10:15:32.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:15:32.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:15:32.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.343496
2025-11-03T10:15:32.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:15:32.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:15:32.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:15:32.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:15:32.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:15:32.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:15:27', tmtdew=36.72, humidity=7.54, cloud=0.0, wind=14.73, temperature=21.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:14:38.054', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:15:32.578 [DEBUG] [Thread-113991] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:15:32.667 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:15:32.679 [DEBUG] [Thread-113994] [transport.py] [_log()] starting thread (client mode): 0xed43700
2025-11-03T10:15:32.679 [DEBUG] [Thread-113994] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:15:32.697 [DEBUG] [Thread-113994] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:15:32.698 [INFO] [Thread-113994] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:15:32.708 [DEBUG] [Thread-113994] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:15:32.708 [DEBUG] [Thread-113994] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:15:32.708 [DEBUG] [Thread-113994] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:15:32.709 [DEBUG] [Thread-113994] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:15:32.709 [DEBUG] [Thread-113994] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:15:32.709 [DEBUG] [Thread-113994] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:15:32.709 [DEBUG] [Thread-113994] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:15:32.709 [DEBUG] [Thread-113994] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:15:32.709 [DEBUG] [Thread-113994] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:15:32.709 [DEBUG] [Thread-113994] [transport.py] [_log()] client lang: <none>
2025-11-03T10:15:32.709 [DEBUG] [Thread-113994] [transport.py] [_log()] server lang: <none>
2025-11-03T10:15:32.709 [DEBUG] [Thread-113994] [transport.py] [_log()] kex follows: False
2025-11-03T10:15:32.709 [DEBUG] [Thread-113994] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:15:32.709 [DEBUG] [Thread-113994] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:15:32.709 [DEBUG] [Thread-113994] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:15:32.709 [DEBUG] [Thread-113994] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:15:32.709 [DEBUG] [Thread-113994] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:15:32.709 [DEBUG] [Thread-113994] [transport.py] [_log()] Compression: none
2025-11-03T10:15:32.710 [DEBUG] [Thread-113994] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:15:32.774 [DEBUG] [Thread-113994] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:15:32.775 [DEBUG] [Thread-113994] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:15:32.775 [DEBUG] [Thread-113994] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:15:32.776 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:15:32.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:15:32.830 [DEBUG] [Thread-113994] [transport.py] [_log()] userauth is OK
2025-11-03T10:15:32.831 [DEBUG] [Thread-113994] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:15:32.831 [DEBUG] [Thread-113994] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:15:32.831 [DEBUG] [Thread-113994] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:15:32.831 [DEBUG] [Thread-113994] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:15:32.851 [INFO] [Thread-113994] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:15:32.852 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:15:32.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:15:33.764 [DEBUG] [Thread-113994] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:15:33.765 [DEBUG] [Thread-113994] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:15:33.812 [DEBUG] [Thread-113994] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:15:33.812 [DEBUG] [Thread-113994] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:15:33.820 [DEBUG] [Thread-113994] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:15:33.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:15:33.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:15:33.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:15:33.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:15:33.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:15:33.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:15:33.852 [DEBUG] [Thread-113994] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:15:34.535 [DEBUG] [Thread-113996 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:15:49.594 [DEBUG] [Thread-113997 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:15:52.127 [DEBUG] [Thread-113998 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:16:03.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:16:03.874 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:16:03.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:16:04.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 15, 27), 36.92, 7.54, 0.0, 12.93, 22.27, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:16:04.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:15:27
2025-11-03T10:16:04.624 [DEBUG] [Thread-113999 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:16:04.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:16:04.855 [DEBUG] [Thread-114000] [transport.py] [_log()] starting thread (client mode): 0xed42290
2025-11-03T10:16:04.855 [DEBUG] [Thread-114000] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:16:04.876 [DEBUG] [Thread-114000] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:16:04.877 [INFO] [Thread-114000] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:16:04.879 [DEBUG] [Thread-114000] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:16:04.879 [DEBUG] [Thread-114000] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:16:04.880 [DEBUG] [Thread-114000] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:16:04.880 [DEBUG] [Thread-114000] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:16:04.880 [DEBUG] [Thread-114000] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:16:04.880 [DEBUG] [Thread-114000] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:16:04.880 [DEBUG] [Thread-114000] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:16:04.880 [DEBUG] [Thread-114000] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:16:04.880 [DEBUG] [Thread-114000] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:16:04.880 [DEBUG] [Thread-114000] [transport.py] [_log()] client lang: <none>
2025-11-03T10:16:04.880 [DEBUG] [Thread-114000] [transport.py] [_log()] server lang: <none>
2025-11-03T10:16:04.880 [DEBUG] [Thread-114000] [transport.py] [_log()] kex follows: False
2025-11-03T10:16:04.880 [DEBUG] [Thread-114000] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:16:04.880 [DEBUG] [Thread-114000] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:16:04.880 [DEBUG] [Thread-114000] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:16:04.880 [DEBUG] [Thread-114000] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:16:04.880 [DEBUG] [Thread-114000] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:16:04.880 [DEBUG] [Thread-114000] [transport.py] [_log()] Compression: none
2025-11-03T10:16:04.881 [DEBUG] [Thread-114000] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:16:04.899 [DEBUG] [Thread-114000] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:16:04.900 [DEBUG] [Thread-114000] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:16:04.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:16:04.901 [DEBUG] [Thread-114000] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:16:04.902 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:16:04.903 [DEBUG] [Thread-114000] [transport.py] [_log()] userauth is OK
2025-11-03T10:16:04.903 [DEBUG] [Thread-114000] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:16:04.904 [DEBUG] [Thread-114000] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:16:04.904 [DEBUG] [Thread-114000] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:16:04.904 [DEBUG] [Thread-114000] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:16:04.922 [INFO] [Thread-114000] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:16:04.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:16:05.576 [DEBUG] [Thread-114000] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:16:05.576 [DEBUG] [Thread-114000] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:16:05.576 [DEBUG] [Thread-114000] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:16:05.616 [DEBUG] [Thread-114000] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:16:05.617 [DEBUG] [Thread-114000] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:16:05.619 [DEBUG] [Thread-114000] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:16:05.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:16:05.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:16:05.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:16:05.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:16:05.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:16:05.638 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:16:05.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:16:05.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:16:05.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:16:05.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.343843 -999.00  +21.60  18.90     13   -7.70 1 1 1 1 1   888    0 28.95 -22.49 ----- 15.2 18.9 44.0 26.6 28.1 -28.8 26.9 -28.5 25.6 -27.7 26.2 -28.6
2025-11-03T10:16:05.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:16:05.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:16:05.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.343843
2025-11-03T10:16:05.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:16:05.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:16:05.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:16:05.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:16:05.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:16:05.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:15:27', tmtdew=36.92, humidity=7.54, cloud=0.0, wind=12.93, temperature=22.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:15:08.035', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:16:05.647 [DEBUG] [Thread-114000] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:16:05.719 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:16:05.731 [DEBUG] [Thread-114003] [transport.py] [_log()] starting thread (client mode): 0xed361d0
2025-11-03T10:16:05.732 [DEBUG] [Thread-114003] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:16:05.747 [DEBUG] [Thread-114003] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:16:05.747 [INFO] [Thread-114003] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:16:05.754 [DEBUG] [Thread-114003] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:16:05.754 [DEBUG] [Thread-114003] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:16:05.754 [DEBUG] [Thread-114003] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:16:05.754 [DEBUG] [Thread-114003] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:16:05.754 [DEBUG] [Thread-114003] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:16:05.754 [DEBUG] [Thread-114003] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:16:05.754 [DEBUG] [Thread-114003] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:16:05.754 [DEBUG] [Thread-114003] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:16:05.754 [DEBUG] [Thread-114003] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:16:05.754 [DEBUG] [Thread-114003] [transport.py] [_log()] client lang: <none>
2025-11-03T10:16:05.754 [DEBUG] [Thread-114003] [transport.py] [_log()] server lang: <none>
2025-11-03T10:16:05.754 [DEBUG] [Thread-114003] [transport.py] [_log()] kex follows: False
2025-11-03T10:16:05.754 [DEBUG] [Thread-114003] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:16:05.754 [DEBUG] [Thread-114003] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:16:05.754 [DEBUG] [Thread-114003] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:16:05.754 [DEBUG] [Thread-114003] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:16:05.754 [DEBUG] [Thread-114003] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:16:05.754 [DEBUG] [Thread-114003] [transport.py] [_log()] Compression: none
2025-11-03T10:16:05.754 [DEBUG] [Thread-114003] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:16:05.812 [DEBUG] [Thread-114003] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:16:05.812 [DEBUG] [Thread-114003] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:16:05.812 [DEBUG] [Thread-114003] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:16:05.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:16:05.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:16:05.869 [DEBUG] [Thread-114003] [transport.py] [_log()] userauth is OK
2025-11-03T10:16:05.869 [DEBUG] [Thread-114003] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:16:05.869 [DEBUG] [Thread-114003] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:16:05.869 [DEBUG] [Thread-114003] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:16:05.870 [DEBUG] [Thread-114003] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:16:05.883 [INFO] [Thread-114003] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:16:05.892 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:16:05.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:16:06.759 [DEBUG] [Thread-114003] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:16:06.759 [DEBUG] [Thread-114003] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:16:06.807 [DEBUG] [Thread-114003] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:16:06.807 [DEBUG] [Thread-114003] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:16:06.816 [DEBUG] [Thread-114003] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:16:06.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:16:06.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:16:06.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:16:06.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:16:06.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:16:06.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:16:06.854 [DEBUG] [Thread-114003] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:16:19.669 [DEBUG] [Thread-114005 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:16:21.612 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:16:21.613 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:16:34.720 [DEBUG] [Thread-114006 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:16:36.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:16:36.876 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:16:36.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:16:37.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 16, 32), 36.55, 7.76, 0.0, 10.78, 22.2, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:16:37.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:16:32
2025-11-03T10:16:37.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:16:37.904 [DEBUG] [Thread-114007] [transport.py] [_log()] starting thread (client mode): 0xed064d0
2025-11-03T10:16:37.905 [DEBUG] [Thread-114007] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:16:37.925 [DEBUG] [Thread-114007] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:16:37.925 [INFO] [Thread-114007] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:16:37.928 [DEBUG] [Thread-114007] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:16:37.928 [DEBUG] [Thread-114007] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:16:37.928 [DEBUG] [Thread-114007] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:16:37.928 [DEBUG] [Thread-114007] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:16:37.928 [DEBUG] [Thread-114007] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:16:37.928 [DEBUG] [Thread-114007] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:16:37.928 [DEBUG] [Thread-114007] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:16:37.928 [DEBUG] [Thread-114007] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:16:37.928 [DEBUG] [Thread-114007] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:16:37.928 [DEBUG] [Thread-114007] [transport.py] [_log()] client lang: <none>
2025-11-03T10:16:37.928 [DEBUG] [Thread-114007] [transport.py] [_log()] server lang: <none>
2025-11-03T10:16:37.928 [DEBUG] [Thread-114007] [transport.py] [_log()] kex follows: False
2025-11-03T10:16:37.928 [DEBUG] [Thread-114007] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:16:37.929 [DEBUG] [Thread-114007] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:16:37.929 [DEBUG] [Thread-114007] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:16:37.929 [DEBUG] [Thread-114007] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:16:37.929 [DEBUG] [Thread-114007] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:16:37.929 [DEBUG] [Thread-114007] [transport.py] [_log()] Compression: none
2025-11-03T10:16:37.929 [DEBUG] [Thread-114007] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:16:37.943 [DEBUG] [Thread-114007] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:16:37.944 [DEBUG] [Thread-114007] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:16:37.944 [DEBUG] [Thread-114007] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:16:37.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:16:37.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:16:37.945 [DEBUG] [Thread-114007] [transport.py] [_log()] userauth is OK
2025-11-03T10:16:37.945 [DEBUG] [Thread-114007] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:16:37.945 [DEBUG] [Thread-114007] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:16:37.945 [DEBUG] [Thread-114007] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:16:37.945 [DEBUG] [Thread-114007] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:16:37.955 [INFO] [Thread-114007] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:16:37.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:16:38.614 [DEBUG] [Thread-114007] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:16:38.614 [DEBUG] [Thread-114007] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:16:38.614 [DEBUG] [Thread-114007] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:16:38.656 [DEBUG] [Thread-114007] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:16:38.656 [DEBUG] [Thread-114007] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:16:38.658 [DEBUG] [Thread-114007] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:16:38.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:16:38.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:16:38.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:16:38.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:16:38.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:16:38.677 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:16:38.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:16:38.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:16:38.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:16:38.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.344538 -999.00  +22.00  13.76     12   -7.70 1 1 1 1 1   888    0 29.52 -26.93 ----- 15.6 13.8 10.7 22.0 28.2 -29.3 27.1 -27.9 25.8 -27.9 26.6 -27.5
2025-11-03T10:16:38.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:16:38.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:16:38.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.344538
2025-11-03T10:16:38.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:16:38.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:16:38.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:16:38.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:16:38.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:16:38.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:16:32', tmtdew=36.55, humidity=7.76, cloud=0.0, wind=10.78, temperature=22.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:16:08.083', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:16:38.679 [DEBUG] [Thread-114007] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:16:38.752 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:16:38.763 [DEBUG] [Thread-114010] [transport.py] [_log()] starting thread (client mode): 0xed37a00
2025-11-03T10:16:38.763 [DEBUG] [Thread-114010] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:16:38.782 [DEBUG] [Thread-114010] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:16:38.782 [INFO] [Thread-114010] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:16:38.790 [DEBUG] [Thread-114010] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:16:38.790 [DEBUG] [Thread-114010] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:16:38.790 [DEBUG] [Thread-114010] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:16:38.790 [DEBUG] [Thread-114010] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:16:38.790 [DEBUG] [Thread-114010] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:16:38.790 [DEBUG] [Thread-114010] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:16:38.790 [DEBUG] [Thread-114010] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:16:38.790 [DEBUG] [Thread-114010] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:16:38.790 [DEBUG] [Thread-114010] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:16:38.790 [DEBUG] [Thread-114010] [transport.py] [_log()] client lang: <none>
2025-11-03T10:16:38.790 [DEBUG] [Thread-114010] [transport.py] [_log()] server lang: <none>
2025-11-03T10:16:38.790 [DEBUG] [Thread-114010] [transport.py] [_log()] kex follows: False
2025-11-03T10:16:38.790 [DEBUG] [Thread-114010] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:16:38.790 [DEBUG] [Thread-114010] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:16:38.790 [DEBUG] [Thread-114010] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:16:38.790 [DEBUG] [Thread-114010] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:16:38.790 [DEBUG] [Thread-114010] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:16:38.790 [DEBUG] [Thread-114010] [transport.py] [_log()] Compression: none
2025-11-03T10:16:38.790 [DEBUG] [Thread-114010] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:16:38.848 [DEBUG] [Thread-114010] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:16:38.848 [DEBUG] [Thread-114010] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:16:38.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:16:38.849 [DEBUG] [Thread-114010] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:16:38.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:16:38.906 [DEBUG] [Thread-114010] [transport.py] [_log()] userauth is OK
2025-11-03T10:16:38.906 [DEBUG] [Thread-114010] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:16:38.906 [DEBUG] [Thread-114010] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:16:38.906 [DEBUG] [Thread-114010] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:16:38.906 [DEBUG] [Thread-114010] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:16:38.920 [INFO] [Thread-114010] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:16:38.920 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:16:38.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:16:39.809 [DEBUG] [Thread-114010] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:16:39.809 [DEBUG] [Thread-114010] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:16:39.857 [DEBUG] [Thread-114010] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:16:39.858 [DEBUG] [Thread-114010] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:16:39.866 [DEBUG] [Thread-114010] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:16:39.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:16:39.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:16:39.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:16:39.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:16:39.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:16:39.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:16:39.898 [DEBUG] [Thread-114010] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:16:49.754 [DEBUG] [Thread-114012 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:16:52.204 [DEBUG] [Thread-114013 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:17:04.819 [DEBUG] [Thread-114014 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:17:09.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:17:09.921 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:17:09.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:17:10.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 17, 5), 36.63, 7.73, 0.0, 12.4, 22.3, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:17:10.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:17:05
2025-11-03T10:17:10.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:17:10.880 [DEBUG] [Thread-114015] [transport.py] [_log()] starting thread (client mode): 0xed34eb0
2025-11-03T10:17:10.880 [DEBUG] [Thread-114015] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:17:10.902 [DEBUG] [Thread-114015] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:17:10.902 [INFO] [Thread-114015] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:17:10.912 [DEBUG] [Thread-114015] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:17:10.913 [DEBUG] [Thread-114015] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:17:10.913 [DEBUG] [Thread-114015] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:17:10.913 [DEBUG] [Thread-114015] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:17:10.913 [DEBUG] [Thread-114015] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:17:10.913 [DEBUG] [Thread-114015] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:17:10.913 [DEBUG] [Thread-114015] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:17:10.913 [DEBUG] [Thread-114015] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:17:10.913 [DEBUG] [Thread-114015] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:17:10.913 [DEBUG] [Thread-114015] [transport.py] [_log()] client lang: <none>
2025-11-03T10:17:10.913 [DEBUG] [Thread-114015] [transport.py] [_log()] server lang: <none>
2025-11-03T10:17:10.913 [DEBUG] [Thread-114015] [transport.py] [_log()] kex follows: False
2025-11-03T10:17:10.913 [DEBUG] [Thread-114015] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:17:10.913 [DEBUG] [Thread-114015] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:17:10.913 [DEBUG] [Thread-114015] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:17:10.913 [DEBUG] [Thread-114015] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:17:10.913 [DEBUG] [Thread-114015] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:17:10.913 [DEBUG] [Thread-114015] [transport.py] [_log()] Compression: none
2025-11-03T10:17:10.913 [DEBUG] [Thread-114015] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:17:10.933 [DEBUG] [Thread-114015] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:17:10.934 [DEBUG] [Thread-114015] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:17:10.934 [DEBUG] [Thread-114015] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:17:10.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:17:10.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:17:10.937 [DEBUG] [Thread-114015] [transport.py] [_log()] userauth is OK
2025-11-03T10:17:10.937 [DEBUG] [Thread-114015] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:17:10.937 [DEBUG] [Thread-114015] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:17:10.937 [DEBUG] [Thread-114015] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:17:10.937 [DEBUG] [Thread-114015] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:17:10.952 [INFO] [Thread-114015] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:17:10.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:17:11.612 [DEBUG] [Thread-114015] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:17:11.613 [DEBUG] [Thread-114015] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:17:11.613 [DEBUG] [Thread-114015] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:17:11.654 [DEBUG] [Thread-114015] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:17:11.654 [DEBUG] [Thread-114015] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:17:11.658 [DEBUG] [Thread-114015] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:17:11.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:17:11.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:17:11.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:17:11.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:17:11.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:17:11.682 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:17:11.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:17:11.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:17:11.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:17:11.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.344885 -999.00  +22.20  13.12     12   -7.80 1 1 1 1 1   888    0 29.06 -28.89 ----- 16.7 13.1 23.6 26.1 28.3 -29.3 27.1 -27.8 25.8 -27.6 26.6 -28.3
2025-11-03T10:17:11.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:17:11.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:17:11.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.344885
2025-11-03T10:17:11.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:17:11.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:17:11.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:17:11.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:17:11.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:17:11.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:17:05', tmtdew=36.63, humidity=7.73, cloud=0.0, wind=12.4, temperature=22.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:16:38.064', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:17:11.693 [DEBUG] [Thread-114015] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:17:11.777 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:17:11.790 [DEBUG] [Thread-114018] [transport.py] [_log()] starting thread (client mode): 0xed43a90
2025-11-03T10:17:11.790 [DEBUG] [Thread-114018] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:17:11.804 [DEBUG] [Thread-114018] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:17:11.804 [INFO] [Thread-114018] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:17:11.812 [DEBUG] [Thread-114018] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:17:11.813 [DEBUG] [Thread-114018] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:17:11.813 [DEBUG] [Thread-114018] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:17:11.813 [DEBUG] [Thread-114018] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:17:11.813 [DEBUG] [Thread-114018] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:17:11.813 [DEBUG] [Thread-114018] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:17:11.813 [DEBUG] [Thread-114018] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:17:11.813 [DEBUG] [Thread-114018] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:17:11.814 [DEBUG] [Thread-114018] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:17:11.814 [DEBUG] [Thread-114018] [transport.py] [_log()] client lang: <none>
2025-11-03T10:17:11.814 [DEBUG] [Thread-114018] [transport.py] [_log()] server lang: <none>
2025-11-03T10:17:11.814 [DEBUG] [Thread-114018] [transport.py] [_log()] kex follows: False
2025-11-03T10:17:11.814 [DEBUG] [Thread-114018] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:17:11.814 [DEBUG] [Thread-114018] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:17:11.815 [DEBUG] [Thread-114018] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:17:11.815 [DEBUG] [Thread-114018] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:17:11.815 [DEBUG] [Thread-114018] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:17:11.815 [DEBUG] [Thread-114018] [transport.py] [_log()] Compression: none
2025-11-03T10:17:11.815 [DEBUG] [Thread-114018] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:17:11.874 [DEBUG] [Thread-114018] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:17:11.875 [DEBUG] [Thread-114018] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:17:11.875 [DEBUG] [Thread-114018] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:17:11.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:17:11.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:17:11.930 [DEBUG] [Thread-114018] [transport.py] [_log()] userauth is OK
2025-11-03T10:17:11.931 [DEBUG] [Thread-114018] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:17:11.931 [DEBUG] [Thread-114018] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:17:11.931 [DEBUG] [Thread-114018] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:17:11.931 [DEBUG] [Thread-114018] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:17:11.950 [INFO] [Thread-114018] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:17:11.950 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:17:11.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:17:12.811 [DEBUG] [Thread-114018] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:17:12.812 [DEBUG] [Thread-114018] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:17:12.860 [DEBUG] [Thread-114018] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:17:12.860 [DEBUG] [Thread-114018] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:17:12.869 [DEBUG] [Thread-114018] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:17:12.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:17:12.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:17:12.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:17:12.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:17:12.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:17:12.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:17:12.907 [DEBUG] [Thread-114018] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:17:19.854 [DEBUG] [Thread-114020 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:17:21.763 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:17:21.764 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:17:34.908 [DEBUG] [Thread-114021 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:17:42.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:17:42.920 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:17:42.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:17:43.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 17, 37), 36.95, 7.61, 0.0, 12.86, 22.5, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:17:43.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:17:37
2025-11-03T10:17:43.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:17:43.875 [DEBUG] [Thread-114022] [transport.py] [_log()] starting thread (client mode): 0xedb23b0
2025-11-03T10:17:43.875 [DEBUG] [Thread-114022] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:17:43.897 [DEBUG] [Thread-114022] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:17:43.897 [INFO] [Thread-114022] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:17:43.907 [DEBUG] [Thread-114022] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:17:43.907 [DEBUG] [Thread-114022] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:17:43.907 [DEBUG] [Thread-114022] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:17:43.907 [DEBUG] [Thread-114022] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:17:43.907 [DEBUG] [Thread-114022] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:17:43.907 [DEBUG] [Thread-114022] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:17:43.907 [DEBUG] [Thread-114022] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:17:43.907 [DEBUG] [Thread-114022] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:17:43.907 [DEBUG] [Thread-114022] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:17:43.907 [DEBUG] [Thread-114022] [transport.py] [_log()] client lang: <none>
2025-11-03T10:17:43.907 [DEBUG] [Thread-114022] [transport.py] [_log()] server lang: <none>
2025-11-03T10:17:43.907 [DEBUG] [Thread-114022] [transport.py] [_log()] kex follows: False
2025-11-03T10:17:43.907 [DEBUG] [Thread-114022] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:17:43.907 [DEBUG] [Thread-114022] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:17:43.907 [DEBUG] [Thread-114022] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:17:43.907 [DEBUG] [Thread-114022] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:17:43.907 [DEBUG] [Thread-114022] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:17:43.907 [DEBUG] [Thread-114022] [transport.py] [_log()] Compression: none
2025-11-03T10:17:43.907 [DEBUG] [Thread-114022] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:17:43.923 [DEBUG] [Thread-114022] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:17:43.924 [DEBUG] [Thread-114022] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:17:43.924 [DEBUG] [Thread-114022] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:17:43.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:17:43.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:17:43.924 [DEBUG] [Thread-114022] [transport.py] [_log()] userauth is OK
2025-11-03T10:17:43.924 [DEBUG] [Thread-114022] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:17:43.925 [DEBUG] [Thread-114022] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:17:43.925 [DEBUG] [Thread-114022] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:17:43.925 [DEBUG] [Thread-114022] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:17:43.939 [INFO] [Thread-114022] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:17:43.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:17:44.561 [DEBUG] [Thread-114022] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:17:44.562 [DEBUG] [Thread-114022] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:17:44.562 [DEBUG] [Thread-114022] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:17:44.601 [DEBUG] [Thread-114022] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:17:44.602 [DEBUG] [Thread-114022] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:17:44.604 [DEBUG] [Thread-114022] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:17:44.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:17:44.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:17:44.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:17:44.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:17:44.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:17:44.624 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:17:44.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:17:44.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:17:44.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:17:44.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.345232 -999.00  +22.70  21.96     12   -7.30 1 1 1 1 1   888    0 28.95 -28.88 ----- 17.5 22.0 8.2 28.9 28.4 -29.6 27.2 -29.1 25.9 -27.5 26.8 -27.4
2025-11-03T10:17:44.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:17:44.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:17:44.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.345232
2025-11-03T10:17:44.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:17:44.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:17:44.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:17:44.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:17:44.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:17:44.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:17:37', tmtdew=36.95, humidity=7.61, cloud=0.0, wind=12.86, temperature=22.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:17:08.045', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:17:44.625 [DEBUG] [Thread-114022] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:17:44.697 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:17:44.710 [DEBUG] [Thread-114025] [transport.py] [_log()] starting thread (client mode): 0xedb3cd0
2025-11-03T10:17:44.710 [DEBUG] [Thread-114025] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:17:44.725 [DEBUG] [Thread-114025] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:17:44.725 [INFO] [Thread-114025] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:17:44.732 [DEBUG] [Thread-114025] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:17:44.732 [DEBUG] [Thread-114025] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:17:44.732 [DEBUG] [Thread-114025] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:17:44.733 [DEBUG] [Thread-114025] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:17:44.733 [DEBUG] [Thread-114025] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:17:44.733 [DEBUG] [Thread-114025] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:17:44.733 [DEBUG] [Thread-114025] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:17:44.733 [DEBUG] [Thread-114025] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:17:44.733 [DEBUG] [Thread-114025] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:17:44.733 [DEBUG] [Thread-114025] [transport.py] [_log()] client lang: <none>
2025-11-03T10:17:44.733 [DEBUG] [Thread-114025] [transport.py] [_log()] server lang: <none>
2025-11-03T10:17:44.733 [DEBUG] [Thread-114025] [transport.py] [_log()] kex follows: False
2025-11-03T10:17:44.733 [DEBUG] [Thread-114025] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:17:44.733 [DEBUG] [Thread-114025] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:17:44.733 [DEBUG] [Thread-114025] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:17:44.733 [DEBUG] [Thread-114025] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:17:44.733 [DEBUG] [Thread-114025] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:17:44.733 [DEBUG] [Thread-114025] [transport.py] [_log()] Compression: none
2025-11-03T10:17:44.733 [DEBUG] [Thread-114025] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:17:44.790 [DEBUG] [Thread-114025] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:17:44.791 [DEBUG] [Thread-114025] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:17:44.791 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:17:44.792 [DEBUG] [Thread-114025] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:17:44.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:17:44.846 [DEBUG] [Thread-114025] [transport.py] [_log()] userauth is OK
2025-11-03T10:17:44.846 [DEBUG] [Thread-114025] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:17:44.846 [DEBUG] [Thread-114025] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:17:44.847 [DEBUG] [Thread-114025] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:17:44.847 [DEBUG] [Thread-114025] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:17:44.864 [INFO] [Thread-114025] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:17:44.865 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:17:44.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:17:45.723 [DEBUG] [Thread-114025] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:17:45.723 [DEBUG] [Thread-114025] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:17:45.771 [DEBUG] [Thread-114025] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:17:45.771 [DEBUG] [Thread-114025] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:17:45.779 [DEBUG] [Thread-114025] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:17:45.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:17:45.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:17:45.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:17:45.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:17:45.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:17:45.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:17:45.820 [DEBUG] [Thread-114025] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:17:49.945 [DEBUG] [Thread-114027 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:17:52.257 [DEBUG] [Thread-114028 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:18:04.996 [DEBUG] [Thread-114029 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:18:15.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:18:15.843 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:18:15.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:18:16.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 18, 9), 37.25, 7.43, 0.0, 13.85, 22.47, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:18:16.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:18:09
2025-11-03T10:18:16.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:18:16.819 [DEBUG] [Thread-114030] [transport.py] [_log()] starting thread (client mode): 0x11798b50
2025-11-03T10:18:16.819 [DEBUG] [Thread-114030] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:18:16.837 [DEBUG] [Thread-114030] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:18:16.837 [INFO] [Thread-114030] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:18:16.840 [DEBUG] [Thread-114030] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:18:16.840 [DEBUG] [Thread-114030] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:18:16.840 [DEBUG] [Thread-114030] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:18:16.840 [DEBUG] [Thread-114030] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:18:16.840 [DEBUG] [Thread-114030] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:18:16.840 [DEBUG] [Thread-114030] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:18:16.840 [DEBUG] [Thread-114030] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:18:16.840 [DEBUG] [Thread-114030] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:18:16.840 [DEBUG] [Thread-114030] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:18:16.840 [DEBUG] [Thread-114030] [transport.py] [_log()] client lang: <none>
2025-11-03T10:18:16.841 [DEBUG] [Thread-114030] [transport.py] [_log()] server lang: <none>
2025-11-03T10:18:16.841 [DEBUG] [Thread-114030] [transport.py] [_log()] kex follows: False
2025-11-03T10:18:16.841 [DEBUG] [Thread-114030] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:18:16.841 [DEBUG] [Thread-114030] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:18:16.841 [DEBUG] [Thread-114030] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:18:16.841 [DEBUG] [Thread-114030] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:18:16.841 [DEBUG] [Thread-114030] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:18:16.841 [DEBUG] [Thread-114030] [transport.py] [_log()] Compression: none
2025-11-03T10:18:16.841 [DEBUG] [Thread-114030] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:18:16.860 [DEBUG] [Thread-114030] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:18:16.861 [DEBUG] [Thread-114030] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:18:16.862 [DEBUG] [Thread-114030] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:18:16.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:18:16.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:18:16.864 [DEBUG] [Thread-114030] [transport.py] [_log()] userauth is OK
2025-11-03T10:18:16.865 [DEBUG] [Thread-114030] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:18:16.865 [DEBUG] [Thread-114030] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:18:16.865 [DEBUG] [Thread-114030] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:18:16.865 [DEBUG] [Thread-114030] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:18:16.888 [INFO] [Thread-114030] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:18:16.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:18:17.548 [DEBUG] [Thread-114030] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:18:17.549 [DEBUG] [Thread-114030] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:18:17.549 [DEBUG] [Thread-114030] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:18:17.590 [DEBUG] [Thread-114030] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:18:17.590 [DEBUG] [Thread-114030] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:18:17.593 [DEBUG] [Thread-114030] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:18:17.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:18:17.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:18:17.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:18:17.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:18:17.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:18:17.612 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:18:17.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:18:17.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:18:17.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:18:17.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.345580 -999.00  +22.10  13.89     12   -7.60 1 1 1 1 1   888    0 28.73 -27.10 ----- 15.8 13.9 348.8 26.0 28.2 -29.7 27.1 -29.3 26.0 -29.0 26.6 -30.6
2025-11-03T10:18:17.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:18:17.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:18:17.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.345580
2025-11-03T10:18:17.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:18:17.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:18:17.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:18:17.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:18:17.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:18:17.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:18:09', tmtdew=37.25, humidity=7.43, cloud=0.0, wind=13.85, temperature=22.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:17:38.112', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:18:17.613 [DEBUG] [Thread-114030] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:18:17.697 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:18:17.708 [DEBUG] [Thread-114033] [transport.py] [_log()] starting thread (client mode): 0x1179b310
2025-11-03T10:18:17.708 [DEBUG] [Thread-114033] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:18:17.723 [DEBUG] [Thread-114033] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:18:17.723 [INFO] [Thread-114033] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:18:17.730 [DEBUG] [Thread-114033] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:18:17.730 [DEBUG] [Thread-114033] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:18:17.730 [DEBUG] [Thread-114033] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:18:17.731 [DEBUG] [Thread-114033] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:18:17.731 [DEBUG] [Thread-114033] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:18:17.731 [DEBUG] [Thread-114033] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:18:17.731 [DEBUG] [Thread-114033] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:18:17.731 [DEBUG] [Thread-114033] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:18:17.731 [DEBUG] [Thread-114033] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:18:17.731 [DEBUG] [Thread-114033] [transport.py] [_log()] client lang: <none>
2025-11-03T10:18:17.731 [DEBUG] [Thread-114033] [transport.py] [_log()] server lang: <none>
2025-11-03T10:18:17.731 [DEBUG] [Thread-114033] [transport.py] [_log()] kex follows: False
2025-11-03T10:18:17.731 [DEBUG] [Thread-114033] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:18:17.731 [DEBUG] [Thread-114033] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:18:17.731 [DEBUG] [Thread-114033] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:18:17.731 [DEBUG] [Thread-114033] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:18:17.731 [DEBUG] [Thread-114033] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:18:17.731 [DEBUG] [Thread-114033] [transport.py] [_log()] Compression: none
2025-11-03T10:18:17.731 [DEBUG] [Thread-114033] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:18:17.789 [DEBUG] [Thread-114033] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:18:17.790 [DEBUG] [Thread-114033] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:18:17.790 [DEBUG] [Thread-114033] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:18:17.791 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:18:17.791 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:18:17.846 [DEBUG] [Thread-114033] [transport.py] [_log()] userauth is OK
2025-11-03T10:18:17.846 [DEBUG] [Thread-114033] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:18:17.846 [DEBUG] [Thread-114033] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:18:17.846 [DEBUG] [Thread-114033] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:18:17.846 [DEBUG] [Thread-114033] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:18:17.866 [INFO] [Thread-114033] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:18:17.866 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:18:17.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:18:18.720 [DEBUG] [Thread-114033] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:18:18.720 [DEBUG] [Thread-114033] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:18:18.768 [DEBUG] [Thread-114033] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:18:18.768 [DEBUG] [Thread-114033] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:18:18.776 [DEBUG] [Thread-114033] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:18:18.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:18:18.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:18:18.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:18:18.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:18:18.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:18:18.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:18:18.808 [DEBUG] [Thread-114033] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:18:20.029 [DEBUG] [Thread-114035 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:18:21.904 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:18:21.905 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:18:35.088 [DEBUG] [Thread-114036 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:18:48.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:18:48.831 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:18:48.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:18:49.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 18, 41), 36.96, 7.54, 0.0, 19.13, 22.07, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:18:49.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:18:41
2025-11-03T10:18:49.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:18:49.778 [DEBUG] [Thread-114037] [transport.py] [_log()] starting thread (client mode): 0xed5e830
2025-11-03T10:18:49.779 [DEBUG] [Thread-114037] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:18:49.798 [DEBUG] [Thread-114037] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:18:49.799 [INFO] [Thread-114037] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:18:49.801 [DEBUG] [Thread-114037] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:18:49.802 [DEBUG] [Thread-114037] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:18:49.802 [DEBUG] [Thread-114037] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:18:49.802 [DEBUG] [Thread-114037] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:18:49.802 [DEBUG] [Thread-114037] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:18:49.802 [DEBUG] [Thread-114037] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:18:49.802 [DEBUG] [Thread-114037] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:18:49.802 [DEBUG] [Thread-114037] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:18:49.802 [DEBUG] [Thread-114037] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:18:49.802 [DEBUG] [Thread-114037] [transport.py] [_log()] client lang: <none>
2025-11-03T10:18:49.802 [DEBUG] [Thread-114037] [transport.py] [_log()] server lang: <none>
2025-11-03T10:18:49.802 [DEBUG] [Thread-114037] [transport.py] [_log()] kex follows: False
2025-11-03T10:18:49.802 [DEBUG] [Thread-114037] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:18:49.803 [DEBUG] [Thread-114037] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:18:49.803 [DEBUG] [Thread-114037] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:18:49.803 [DEBUG] [Thread-114037] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:18:49.803 [DEBUG] [Thread-114037] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:18:49.803 [DEBUG] [Thread-114037] [transport.py] [_log()] Compression: none
2025-11-03T10:18:49.803 [DEBUG] [Thread-114037] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:18:49.813 [DEBUG] [Thread-114037] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:18:49.814 [DEBUG] [Thread-114037] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:18:49.815 [DEBUG] [Thread-114037] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:18:49.815 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:18:49.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:18:49.817 [DEBUG] [Thread-114037] [transport.py] [_log()] userauth is OK
2025-11-03T10:18:49.818 [DEBUG] [Thread-114037] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:18:49.818 [DEBUG] [Thread-114037] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:18:49.818 [DEBUG] [Thread-114037] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:18:49.818 [DEBUG] [Thread-114037] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:18:49.843 [INFO] [Thread-114037] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:18:49.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:18:50.130 [DEBUG] [Thread-114039 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:18:50.475 [DEBUG] [Thread-114037] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:18:50.476 [DEBUG] [Thread-114037] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:18:50.476 [DEBUG] [Thread-114037] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:18:50.517 [DEBUG] [Thread-114037] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:18:50.517 [DEBUG] [Thread-114037] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:18:50.520 [DEBUG] [Thread-114037] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:18:50.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:18:50.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:18:50.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:18:50.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:18:50.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:18:50.545 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:18:50.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:18:50.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:18:50.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:18:50.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.345926 -999.00  +21.90  24.52     12   -8.20 1 1 1 1 1   888    0 29.45 -26.06 ----- 25.3 24.5 351.1 28.0 28.1 -29.6 27.1 -29.0 25.9 -27.8 26.7 -27.7
2025-11-03T10:18:50.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:18:50.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:18:50.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.345926
2025-11-03T10:18:50.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:18:50.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:18:50.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:18:50.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:18:50.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:18:50.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:18:41', tmtdew=36.96, humidity=7.54, cloud=0.0, wind=19.13, temperature=22.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:18:08.006', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:18:50.548 [DEBUG] [Thread-114037] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:18:50.631 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:18:50.643 [DEBUG] [Thread-114041] [transport.py] [_log()] starting thread (client mode): 0xedb2f20
2025-11-03T10:18:50.643 [DEBUG] [Thread-114041] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:18:50.658 [DEBUG] [Thread-114041] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:18:50.658 [INFO] [Thread-114041] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:18:50.666 [DEBUG] [Thread-114041] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:18:50.666 [DEBUG] [Thread-114041] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:18:50.666 [DEBUG] [Thread-114041] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:18:50.666 [DEBUG] [Thread-114041] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:18:50.666 [DEBUG] [Thread-114041] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:18:50.666 [DEBUG] [Thread-114041] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:18:50.667 [DEBUG] [Thread-114041] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:18:50.667 [DEBUG] [Thread-114041] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:18:50.667 [DEBUG] [Thread-114041] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:18:50.667 [DEBUG] [Thread-114041] [transport.py] [_log()] client lang: <none>
2025-11-03T10:18:50.667 [DEBUG] [Thread-114041] [transport.py] [_log()] server lang: <none>
2025-11-03T10:18:50.667 [DEBUG] [Thread-114041] [transport.py] [_log()] kex follows: False
2025-11-03T10:18:50.667 [DEBUG] [Thread-114041] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:18:50.667 [DEBUG] [Thread-114041] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:18:50.667 [DEBUG] [Thread-114041] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:18:50.667 [DEBUG] [Thread-114041] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:18:50.667 [DEBUG] [Thread-114041] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:18:50.667 [DEBUG] [Thread-114041] [transport.py] [_log()] Compression: none
2025-11-03T10:18:50.667 [DEBUG] [Thread-114041] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:18:50.726 [DEBUG] [Thread-114041] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:18:50.727 [DEBUG] [Thread-114041] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:18:50.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:18:50.728 [DEBUG] [Thread-114041] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:18:50.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:18:50.783 [DEBUG] [Thread-114041] [transport.py] [_log()] userauth is OK
2025-11-03T10:18:50.783 [DEBUG] [Thread-114041] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:18:50.783 [DEBUG] [Thread-114041] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:18:50.783 [DEBUG] [Thread-114041] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:18:50.783 [DEBUG] [Thread-114041] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:18:50.802 [INFO] [Thread-114041] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:18:50.811 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:18:50.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:18:51.684 [DEBUG] [Thread-114041] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:18:51.685 [DEBUG] [Thread-114041] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:18:51.732 [DEBUG] [Thread-114041] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:18:51.732 [DEBUG] [Thread-114041] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:18:51.741 [DEBUG] [Thread-114041] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:18:51.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:18:51.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:18:51.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:18:51.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:18:51.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:18:51.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:18:51.777 [DEBUG] [Thread-114041] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:18:52.309 [DEBUG] [Thread-114043 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:19:05.172 [DEBUG] [Thread-114044 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:19:20.232 [DEBUG] [Thread-114045 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:19:21.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:19:21.800 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:19:21.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:19:22.047 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:19:22.048 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:19:22.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 19, 14), 36.82, 7.64, 0.0, 17.05, 22.19, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:19:22.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:19:14
2025-11-03T10:19:22.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:19:22.735 [DEBUG] [Thread-114046] [transport.py] [_log()] starting thread (client mode): 0xed05d80
2025-11-03T10:19:22.735 [DEBUG] [Thread-114046] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:19:22.757 [DEBUG] [Thread-114046] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:19:22.757 [INFO] [Thread-114046] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:19:22.761 [DEBUG] [Thread-114046] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:19:22.761 [DEBUG] [Thread-114046] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:19:22.761 [DEBUG] [Thread-114046] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:19:22.761 [DEBUG] [Thread-114046] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:19:22.761 [DEBUG] [Thread-114046] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:19:22.761 [DEBUG] [Thread-114046] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:19:22.761 [DEBUG] [Thread-114046] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:19:22.761 [DEBUG] [Thread-114046] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:19:22.761 [DEBUG] [Thread-114046] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:19:22.761 [DEBUG] [Thread-114046] [transport.py] [_log()] client lang: <none>
2025-11-03T10:19:22.761 [DEBUG] [Thread-114046] [transport.py] [_log()] server lang: <none>
2025-11-03T10:19:22.762 [DEBUG] [Thread-114046] [transport.py] [_log()] kex follows: False
2025-11-03T10:19:22.762 [DEBUG] [Thread-114046] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:19:22.762 [DEBUG] [Thread-114046] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:19:22.762 [DEBUG] [Thread-114046] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:19:22.762 [DEBUG] [Thread-114046] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:19:22.762 [DEBUG] [Thread-114046] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:19:22.762 [DEBUG] [Thread-114046] [transport.py] [_log()] Compression: none
2025-11-03T10:19:22.762 [DEBUG] [Thread-114046] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:19:22.779 [DEBUG] [Thread-114046] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:19:22.780 [DEBUG] [Thread-114046] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:19:22.781 [DEBUG] [Thread-114046] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:19:22.781 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:19:22.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:19:22.783 [DEBUG] [Thread-114046] [transport.py] [_log()] userauth is OK
2025-11-03T10:19:22.783 [DEBUG] [Thread-114046] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:19:22.792 [DEBUG] [Thread-114046] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:19:22.793 [DEBUG] [Thread-114046] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:19:22.793 [DEBUG] [Thread-114046] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:19:22.818 [INFO] [Thread-114046] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:19:22.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:19:23.491 [DEBUG] [Thread-114046] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:19:23.492 [DEBUG] [Thread-114046] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:19:23.492 [DEBUG] [Thread-114046] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:19:23.533 [DEBUG] [Thread-114046] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:19:23.533 [DEBUG] [Thread-114046] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:19:23.536 [DEBUG] [Thread-114046] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:19:23.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:19:23.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:19:23.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:19:23.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:19:23.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:19:23.559 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:19:23.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:19:23.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:19:23.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:19:23.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.346274 -999.00  +21.60  20.63     12   -8.40 1 1 1 1 1   888    0 29.14 -25.21 ----- 17.3 20.6 54.6 31.5 28.1 -29.4 27.0 -29.0 25.9 -28.5 26.6 -28.6
2025-11-03T10:19:23.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:19:23.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:19:23.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.346274
2025-11-03T10:19:23.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:19:23.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:19:23.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:19:23.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:19:23.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:19:23.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:19:14', tmtdew=36.82, humidity=7.64, cloud=0.0, wind=17.05, temperature=22.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:18:38.074', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:19:23.562 [DEBUG] [Thread-114046] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:19:23.645 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:19:23.657 [DEBUG] [Thread-114049] [transport.py] [_log()] starting thread (client mode): 0xed5ff40
2025-11-03T10:19:23.657 [DEBUG] [Thread-114049] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:19:23.676 [DEBUG] [Thread-114049] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:19:23.676 [INFO] [Thread-114049] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:19:23.685 [DEBUG] [Thread-114049] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:19:23.685 [DEBUG] [Thread-114049] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:19:23.685 [DEBUG] [Thread-114049] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:19:23.685 [DEBUG] [Thread-114049] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:19:23.686 [DEBUG] [Thread-114049] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:19:23.686 [DEBUG] [Thread-114049] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:19:23.686 [DEBUG] [Thread-114049] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:19:23.686 [DEBUG] [Thread-114049] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:19:23.686 [DEBUG] [Thread-114049] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:19:23.686 [DEBUG] [Thread-114049] [transport.py] [_log()] client lang: <none>
2025-11-03T10:19:23.686 [DEBUG] [Thread-114049] [transport.py] [_log()] server lang: <none>
2025-11-03T10:19:23.686 [DEBUG] [Thread-114049] [transport.py] [_log()] kex follows: False
2025-11-03T10:19:23.686 [DEBUG] [Thread-114049] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:19:23.686 [DEBUG] [Thread-114049] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:19:23.687 [DEBUG] [Thread-114049] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:19:23.687 [DEBUG] [Thread-114049] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:19:23.687 [DEBUG] [Thread-114049] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:19:23.687 [DEBUG] [Thread-114049] [transport.py] [_log()] Compression: none
2025-11-03T10:19:23.687 [DEBUG] [Thread-114049] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:19:23.748 [DEBUG] [Thread-114049] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:19:23.758 [DEBUG] [Thread-114049] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:19:23.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:19:23.759 [DEBUG] [Thread-114049] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:19:23.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:19:23.813 [DEBUG] [Thread-114049] [transport.py] [_log()] userauth is OK
2025-11-03T10:19:23.813 [DEBUG] [Thread-114049] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:19:23.813 [DEBUG] [Thread-114049] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:19:23.813 [DEBUG] [Thread-114049] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:19:23.814 [DEBUG] [Thread-114049] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:19:23.838 [INFO] [Thread-114049] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:19:23.839 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:19:23.839 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:19:24.747 [DEBUG] [Thread-114049] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:19:24.747 [DEBUG] [Thread-114049] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:19:24.795 [DEBUG] [Thread-114049] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:19:24.796 [DEBUG] [Thread-114049] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:19:24.805 [DEBUG] [Thread-114049] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:19:24.815 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:19:24.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:19:24.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:19:24.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:19:24.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:19:24.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:19:24.844 [DEBUG] [Thread-114049] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:19:35.270 [DEBUG] [Thread-114051 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:19:50.324 [DEBUG] [Thread-114052 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:19:52.345 [DEBUG] [Thread-114053 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:19:54.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:19:54.866 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:19:54.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:19:55.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 19, 46), 37.03, 7.09, 0.0, 17.45, 22.35, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:19:55.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:19:46
2025-11-03T10:19:55.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:19:55.803 [DEBUG] [Thread-114054] [transport.py] [_log()] starting thread (client mode): 0xed42dd0
2025-11-03T10:19:55.803 [DEBUG] [Thread-114054] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:19:55.822 [DEBUG] [Thread-114054] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:19:55.823 [INFO] [Thread-114054] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:19:55.831 [DEBUG] [Thread-114054] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:19:55.832 [DEBUG] [Thread-114054] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:19:55.832 [DEBUG] [Thread-114054] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:19:55.832 [DEBUG] [Thread-114054] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:19:55.832 [DEBUG] [Thread-114054] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:19:55.832 [DEBUG] [Thread-114054] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:19:55.832 [DEBUG] [Thread-114054] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:19:55.832 [DEBUG] [Thread-114054] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:19:55.832 [DEBUG] [Thread-114054] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:19:55.832 [DEBUG] [Thread-114054] [transport.py] [_log()] client lang: <none>
2025-11-03T10:19:55.832 [DEBUG] [Thread-114054] [transport.py] [_log()] server lang: <none>
2025-11-03T10:19:55.832 [DEBUG] [Thread-114054] [transport.py] [_log()] kex follows: False
2025-11-03T10:19:55.832 [DEBUG] [Thread-114054] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:19:55.832 [DEBUG] [Thread-114054] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:19:55.832 [DEBUG] [Thread-114054] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:19:55.832 [DEBUG] [Thread-114054] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:19:55.832 [DEBUG] [Thread-114054] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:19:55.832 [DEBUG] [Thread-114054] [transport.py] [_log()] Compression: none
2025-11-03T10:19:55.832 [DEBUG] [Thread-114054] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:19:55.848 [DEBUG] [Thread-114054] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:19:55.849 [DEBUG] [Thread-114054] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:19:55.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:19:55.849 [DEBUG] [Thread-114054] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:19:55.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:19:55.850 [DEBUG] [Thread-114054] [transport.py] [_log()] userauth is OK
2025-11-03T10:19:55.850 [DEBUG] [Thread-114054] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:19:55.850 [DEBUG] [Thread-114054] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:19:55.850 [DEBUG] [Thread-114054] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:19:55.850 [DEBUG] [Thread-114054] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:19:55.865 [INFO] [Thread-114054] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:19:55.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:19:56.513 [DEBUG] [Thread-114054] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:19:56.513 [DEBUG] [Thread-114054] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:19:56.514 [DEBUG] [Thread-114054] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:19:56.555 [DEBUG] [Thread-114054] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:19:56.555 [DEBUG] [Thread-114054] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:19:56.557 [DEBUG] [Thread-114054] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:19:56.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:19:56.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:19:56.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:19:56.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:19:56.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:19:56.575 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:19:56.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:19:56.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:19:56.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:19:56.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.346621 -999.00  +21.40  15.19     12   -8.50 1 1 1 1 1   888    0 29.22 -21.42 ----- 12.4 15.2 29.2 17.0 28.1 -29.3 27.1 -27.9 25.8 -29.2 26.6 -28.1
2025-11-03T10:19:56.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:19:56.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:19:56.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.346621
2025-11-03T10:19:56.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:19:56.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:19:56.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:19:56.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:19:56.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:19:56.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:19:46', tmtdew=37.03, humidity=7.09, cloud=0.0, wind=17.45, temperature=22.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:19:08.054', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:19:56.576 [DEBUG] [Thread-114054] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:19:56.652 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:19:56.663 [DEBUG] [Thread-114057] [transport.py] [_log()] starting thread (client mode): 0xed41fc0
2025-11-03T10:19:56.663 [DEBUG] [Thread-114057] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:19:56.678 [DEBUG] [Thread-114057] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:19:56.678 [INFO] [Thread-114057] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:19:56.686 [DEBUG] [Thread-114057] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:19:56.686 [DEBUG] [Thread-114057] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:19:56.686 [DEBUG] [Thread-114057] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:19:56.686 [DEBUG] [Thread-114057] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:19:56.686 [DEBUG] [Thread-114057] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:19:56.686 [DEBUG] [Thread-114057] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:19:56.686 [DEBUG] [Thread-114057] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:19:56.686 [DEBUG] [Thread-114057] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:19:56.686 [DEBUG] [Thread-114057] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:19:56.686 [DEBUG] [Thread-114057] [transport.py] [_log()] client lang: <none>
2025-11-03T10:19:56.686 [DEBUG] [Thread-114057] [transport.py] [_log()] server lang: <none>
2025-11-03T10:19:56.686 [DEBUG] [Thread-114057] [transport.py] [_log()] kex follows: False
2025-11-03T10:19:56.686 [DEBUG] [Thread-114057] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:19:56.686 [DEBUG] [Thread-114057] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:19:56.686 [DEBUG] [Thread-114057] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:19:56.686 [DEBUG] [Thread-114057] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:19:56.686 [DEBUG] [Thread-114057] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:19:56.686 [DEBUG] [Thread-114057] [transport.py] [_log()] Compression: none
2025-11-03T10:19:56.686 [DEBUG] [Thread-114057] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:19:56.744 [DEBUG] [Thread-114057] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:19:56.744 [DEBUG] [Thread-114057] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:19:56.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:19:56.744 [DEBUG] [Thread-114057] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:19:56.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:19:56.801 [DEBUG] [Thread-114057] [transport.py] [_log()] userauth is OK
2025-11-03T10:19:56.801 [DEBUG] [Thread-114057] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:19:56.801 [DEBUG] [Thread-114057] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:19:56.801 [DEBUG] [Thread-114057] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:19:56.801 [DEBUG] [Thread-114057] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:19:56.815 [INFO] [Thread-114057] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:19:56.816 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:19:56.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:19:57.699 [DEBUG] [Thread-114057] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:19:57.699 [DEBUG] [Thread-114057] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:19:57.746 [DEBUG] [Thread-114057] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:19:57.747 [DEBUG] [Thread-114057] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:19:57.756 [DEBUG] [Thread-114057] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:19:57.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:19:57.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:19:57.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:19:57.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:19:57.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:19:57.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:19:57.801 [DEBUG] [Thread-114057] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:20:05.361 [DEBUG] [Thread-114059 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:20:20.415 [DEBUG] [Thread-114060 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:20:22.191 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:20:22.192 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:20:27.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:20:27.794 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:20:27.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:20:28.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 20, 18), 37.19, 7.01, 0.0, 24.08, 22.45, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:20:28.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:20:18
2025-11-03T10:20:28.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:20:28.770 [DEBUG] [Thread-114061] [transport.py] [_log()] starting thread (client mode): 0xed5d6c0
2025-11-03T10:20:28.770 [DEBUG] [Thread-114061] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:20:28.790 [DEBUG] [Thread-114061] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:20:28.791 [INFO] [Thread-114061] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:20:28.794 [DEBUG] [Thread-114061] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:20:28.794 [DEBUG] [Thread-114061] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:20:28.794 [DEBUG] [Thread-114061] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:20:28.794 [DEBUG] [Thread-114061] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:20:28.794 [DEBUG] [Thread-114061] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:20:28.794 [DEBUG] [Thread-114061] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:20:28.794 [DEBUG] [Thread-114061] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:20:28.794 [DEBUG] [Thread-114061] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:20:28.794 [DEBUG] [Thread-114061] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:20:28.794 [DEBUG] [Thread-114061] [transport.py] [_log()] client lang: <none>
2025-11-03T10:20:28.794 [DEBUG] [Thread-114061] [transport.py] [_log()] server lang: <none>
2025-11-03T10:20:28.794 [DEBUG] [Thread-114061] [transport.py] [_log()] kex follows: False
2025-11-03T10:20:28.794 [DEBUG] [Thread-114061] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:20:28.794 [DEBUG] [Thread-114061] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:20:28.794 [DEBUG] [Thread-114061] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:20:28.795 [DEBUG] [Thread-114061] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:20:28.795 [DEBUG] [Thread-114061] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:20:28.795 [DEBUG] [Thread-114061] [transport.py] [_log()] Compression: none
2025-11-03T10:20:28.795 [DEBUG] [Thread-114061] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:20:28.812 [DEBUG] [Thread-114061] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:20:28.822 [DEBUG] [Thread-114061] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:20:28.823 [DEBUG] [Thread-114061] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:20:28.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:20:28.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:20:28.825 [DEBUG] [Thread-114061] [transport.py] [_log()] userauth is OK
2025-11-03T10:20:28.825 [DEBUG] [Thread-114061] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:20:28.825 [DEBUG] [Thread-114061] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:20:28.825 [DEBUG] [Thread-114061] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:20:28.825 [DEBUG] [Thread-114061] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:20:28.849 [INFO] [Thread-114061] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:20:28.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:20:29.460 [DEBUG] [Thread-114061] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:20:29.461 [DEBUG] [Thread-114061] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:20:29.461 [DEBUG] [Thread-114061] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:20:29.502 [DEBUG] [Thread-114061] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:20:29.502 [DEBUG] [Thread-114061] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:20:29.506 [DEBUG] [Thread-114061] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:20:29.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:20:29.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:20:29.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:20:29.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:20:29.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:20:29.540 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:20:29.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:20:29.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:20:29.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:20:29.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.347315 -999.00  +22.40  20.64     12   -7.50 1 1 1 1 1   888    0 29.78 -20.13 ----- 22.2 20.6 30.0 25.6 28.4 -29.1 27.3 -27.7 26.0 -28.1 26.8 -27.4
2025-11-03T10:20:29.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:20:29.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:20:29.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.347315
2025-11-03T10:20:29.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:20:29.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:20:29.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:20:29.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:20:29.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:20:29.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:20:18', tmtdew=37.19, humidity=7.01, cloud=0.0, wind=24.08, temperature=22.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:20:08.016', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:20:29.544 [DEBUG] [Thread-114061] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:20:29.626 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:20:29.639 [DEBUG] [Thread-114064] [transport.py] [_log()] starting thread (client mode): 0xed2e800
2025-11-03T10:20:29.640 [DEBUG] [Thread-114064] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:20:29.654 [DEBUG] [Thread-114064] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:20:29.654 [INFO] [Thread-114064] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:20:29.671 [DEBUG] [Thread-114064] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:20:29.671 [DEBUG] [Thread-114064] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:20:29.672 [DEBUG] [Thread-114064] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:20:29.672 [DEBUG] [Thread-114064] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:20:29.672 [DEBUG] [Thread-114064] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:20:29.672 [DEBUG] [Thread-114064] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:20:29.672 [DEBUG] [Thread-114064] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:20:29.673 [DEBUG] [Thread-114064] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:20:29.673 [DEBUG] [Thread-114064] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:20:29.673 [DEBUG] [Thread-114064] [transport.py] [_log()] client lang: <none>
2025-11-03T10:20:29.673 [DEBUG] [Thread-114064] [transport.py] [_log()] server lang: <none>
2025-11-03T10:20:29.673 [DEBUG] [Thread-114064] [transport.py] [_log()] kex follows: False
2025-11-03T10:20:29.673 [DEBUG] [Thread-114064] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:20:29.673 [DEBUG] [Thread-114064] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:20:29.673 [DEBUG] [Thread-114064] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:20:29.673 [DEBUG] [Thread-114064] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:20:29.673 [DEBUG] [Thread-114064] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:20:29.673 [DEBUG] [Thread-114064] [transport.py] [_log()] Compression: none
2025-11-03T10:20:29.673 [DEBUG] [Thread-114064] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:20:29.721 [DEBUG] [Thread-114064] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:20:29.722 [DEBUG] [Thread-114064] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:20:29.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:20:29.723 [DEBUG] [Thread-114064] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:20:29.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:20:29.778 [DEBUG] [Thread-114064] [transport.py] [_log()] userauth is OK
2025-11-03T10:20:29.779 [DEBUG] [Thread-114064] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:20:29.779 [DEBUG] [Thread-114064] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:20:29.779 [DEBUG] [Thread-114064] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:20:29.779 [DEBUG] [Thread-114064] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:20:29.798 [INFO] [Thread-114064] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:20:29.808 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:20:29.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:20:30.667 [DEBUG] [Thread-114064] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:20:30.667 [DEBUG] [Thread-114064] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:20:30.715 [DEBUG] [Thread-114064] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:20:30.715 [DEBUG] [Thread-114064] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:20:30.724 [DEBUG] [Thread-114064] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:20:30.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:20:30.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:20:30.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:20:30.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:20:30.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:20:30.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:20:30.756 [DEBUG] [Thread-114064] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:20:35.442 [DEBUG] [Thread-114066 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:20:50.486 [DEBUG] [Thread-114067 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:20:52.393 [DEBUG] [Thread-114068 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:21:00.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:21:00.755 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:21:00.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:21:01.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 20, 51), 37.27, 7.46, 0.0, 25.92, 22.85, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:21:01.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:20:51
2025-11-03T10:21:01.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:21:01.738 [DEBUG] [Thread-114069] [transport.py] [_log()] starting thread (client mode): 0xed5dea0
2025-11-03T10:21:01.738 [DEBUG] [Thread-114069] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:21:01.758 [DEBUG] [Thread-114069] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:21:01.758 [INFO] [Thread-114069] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:21:01.761 [DEBUG] [Thread-114069] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:21:01.761 [DEBUG] [Thread-114069] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:21:01.761 [DEBUG] [Thread-114069] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:21:01.761 [DEBUG] [Thread-114069] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:21:01.761 [DEBUG] [Thread-114069] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:21:01.761 [DEBUG] [Thread-114069] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:21:01.761 [DEBUG] [Thread-114069] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:21:01.762 [DEBUG] [Thread-114069] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:21:01.762 [DEBUG] [Thread-114069] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:21:01.762 [DEBUG] [Thread-114069] [transport.py] [_log()] client lang: <none>
2025-11-03T10:21:01.762 [DEBUG] [Thread-114069] [transport.py] [_log()] server lang: <none>
2025-11-03T10:21:01.762 [DEBUG] [Thread-114069] [transport.py] [_log()] kex follows: False
2025-11-03T10:21:01.762 [DEBUG] [Thread-114069] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:21:01.762 [DEBUG] [Thread-114069] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:21:01.762 [DEBUG] [Thread-114069] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:21:01.762 [DEBUG] [Thread-114069] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:21:01.762 [DEBUG] [Thread-114069] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:21:01.762 [DEBUG] [Thread-114069] [transport.py] [_log()] Compression: none
2025-11-03T10:21:01.762 [DEBUG] [Thread-114069] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:21:01.780 [DEBUG] [Thread-114069] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:21:01.781 [DEBUG] [Thread-114069] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:21:01.781 [DEBUG] [Thread-114069] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:21:01.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:21:01.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:21:01.783 [DEBUG] [Thread-114069] [transport.py] [_log()] userauth is OK
2025-11-03T10:21:01.784 [DEBUG] [Thread-114069] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:21:01.784 [DEBUG] [Thread-114069] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:21:01.784 [DEBUG] [Thread-114069] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:21:01.784 [DEBUG] [Thread-114069] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:21:01.804 [INFO] [Thread-114069] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:21:01.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:21:02.459 [DEBUG] [Thread-114069] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:21:02.459 [DEBUG] [Thread-114069] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:21:02.459 [DEBUG] [Thread-114069] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:21:02.501 [DEBUG] [Thread-114069] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:21:02.501 [DEBUG] [Thread-114069] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:21:02.503 [DEBUG] [Thread-114069] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:21:02.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:21:02.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:21:02.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:21:02.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:21:02.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:21:02.523 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:21:02.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:21:02.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:21:02.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:21:02.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.347663 -999.00  +22.20  26.58     12   -7.80 1 1 1 1 1   888    0 29.52 -16.85 ----- 19.7 26.6 41.8 40.9 28.2 -29.2 27.2 -27.5 26.1 -27.0 26.9 -29.2
2025-11-03T10:21:02.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:21:02.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:21:02.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.347663
2025-11-03T10:21:02.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:21:02.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:21:02.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:21:02.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:21:02.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:21:02.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:20:51', tmtdew=37.27, humidity=7.46, cloud=0.0, wind=25.92, temperature=22.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:20:38.083', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:21:02.524 [DEBUG] [Thread-114069] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:21:02.595 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:21:02.607 [DEBUG] [Thread-114072] [transport.py] [_log()] starting thread (client mode): 0xed646d0
2025-11-03T10:21:02.607 [DEBUG] [Thread-114072] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:21:02.622 [DEBUG] [Thread-114072] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:21:02.622 [INFO] [Thread-114072] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:21:02.629 [DEBUG] [Thread-114072] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:21:02.629 [DEBUG] [Thread-114072] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:21:02.629 [DEBUG] [Thread-114072] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:21:02.629 [DEBUG] [Thread-114072] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:21:02.629 [DEBUG] [Thread-114072] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:21:02.629 [DEBUG] [Thread-114072] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:21:02.629 [DEBUG] [Thread-114072] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:21:02.629 [DEBUG] [Thread-114072] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:21:02.629 [DEBUG] [Thread-114072] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:21:02.629 [DEBUG] [Thread-114072] [transport.py] [_log()] client lang: <none>
2025-11-03T10:21:02.629 [DEBUG] [Thread-114072] [transport.py] [_log()] server lang: <none>
2025-11-03T10:21:02.629 [DEBUG] [Thread-114072] [transport.py] [_log()] kex follows: False
2025-11-03T10:21:02.629 [DEBUG] [Thread-114072] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:21:02.629 [DEBUG] [Thread-114072] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:21:02.629 [DEBUG] [Thread-114072] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:21:02.629 [DEBUG] [Thread-114072] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:21:02.629 [DEBUG] [Thread-114072] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:21:02.630 [DEBUG] [Thread-114072] [transport.py] [_log()] Compression: none
2025-11-03T10:21:02.630 [DEBUG] [Thread-114072] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:21:02.689 [DEBUG] [Thread-114072] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:21:02.689 [DEBUG] [Thread-114072] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:21:02.689 [DEBUG] [Thread-114072] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:21:02.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:21:02.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:21:02.750 [DEBUG] [Thread-114072] [transport.py] [_log()] userauth is OK
2025-11-03T10:21:02.750 [DEBUG] [Thread-114072] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:21:02.758 [DEBUG] [Thread-114072] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:21:02.758 [DEBUG] [Thread-114072] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:21:02.758 [DEBUG] [Thread-114072] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:21:02.772 [INFO] [Thread-114072] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:21:02.772 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:21:02.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:21:03.644 [DEBUG] [Thread-114072] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:21:03.644 [DEBUG] [Thread-114072] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:21:03.692 [DEBUG] [Thread-114072] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:21:03.692 [DEBUG] [Thread-114072] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:21:03.702 [DEBUG] [Thread-114072] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:21:03.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:21:03.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:21:03.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:21:03.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:21:03.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:21:03.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:21:03.739 [DEBUG] [Thread-114072] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:21:05.523 [DEBUG] [Thread-114074 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:21:20.580 [DEBUG] [Thread-114075 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:21:22.333 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:21:22.334 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:21:33.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:21:33.761 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:21:33.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:21:34.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 21, 23), 37.06, 7.58, 0.0, 29.92, 22.82, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:21:34.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:21:23
2025-11-03T10:21:34.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:21:34.702 [DEBUG] [Thread-114076] [transport.py] [_log()] starting thread (client mode): 0xedb1030
2025-11-03T10:21:34.702 [DEBUG] [Thread-114076] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:21:34.722 [DEBUG] [Thread-114076] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:21:34.722 [INFO] [Thread-114076] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:21:34.725 [DEBUG] [Thread-114076] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:21:34.725 [DEBUG] [Thread-114076] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:21:34.725 [DEBUG] [Thread-114076] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:21:34.725 [DEBUG] [Thread-114076] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:21:34.725 [DEBUG] [Thread-114076] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:21:34.725 [DEBUG] [Thread-114076] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:21:34.725 [DEBUG] [Thread-114076] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:21:34.725 [DEBUG] [Thread-114076] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:21:34.725 [DEBUG] [Thread-114076] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:21:34.725 [DEBUG] [Thread-114076] [transport.py] [_log()] client lang: <none>
2025-11-03T10:21:34.725 [DEBUG] [Thread-114076] [transport.py] [_log()] server lang: <none>
2025-11-03T10:21:34.725 [DEBUG] [Thread-114076] [transport.py] [_log()] kex follows: False
2025-11-03T10:21:34.725 [DEBUG] [Thread-114076] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:21:34.725 [DEBUG] [Thread-114076] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:21:34.725 [DEBUG] [Thread-114076] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:21:34.725 [DEBUG] [Thread-114076] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:21:34.725 [DEBUG] [Thread-114076] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:21:34.725 [DEBUG] [Thread-114076] [transport.py] [_log()] Compression: none
2025-11-03T10:21:34.725 [DEBUG] [Thread-114076] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:21:34.735 [DEBUG] [Thread-114076] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:21:34.735 [DEBUG] [Thread-114076] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:21:34.735 [DEBUG] [Thread-114076] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:21:34.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:21:34.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:21:34.737 [DEBUG] [Thread-114076] [transport.py] [_log()] userauth is OK
2025-11-03T10:21:34.737 [DEBUG] [Thread-114076] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:21:34.737 [DEBUG] [Thread-114076] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:21:34.738 [DEBUG] [Thread-114076] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:21:34.738 [DEBUG] [Thread-114076] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:21:34.755 [INFO] [Thread-114076] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:21:34.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:21:35.412 [DEBUG] [Thread-114076] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:21:35.412 [DEBUG] [Thread-114076] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:21:35.413 [DEBUG] [Thread-114076] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:21:35.453 [DEBUG] [Thread-114076] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:21:35.453 [DEBUG] [Thread-114076] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:21:35.457 [DEBUG] [Thread-114076] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:21:35.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:21:35.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:21:35.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:21:35.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:21:35.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:21:35.482 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:21:35.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:21:35.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:21:35.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:21:35.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.348010 -999.00  +22.40  22.98     12   -7.70 1 1 1 1 1   888    0 29.57 -16.01 ----- 28.9 23.0 6.2 34.7 28.3 -30.6 27.1 -29.1 26.0 -27.3 26.8 -28.9
2025-11-03T10:21:35.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:21:35.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:21:35.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.348010
2025-11-03T10:21:35.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:21:35.492 [DEBUG] [Thread-114076] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:21:35.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:21:35.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:21:35.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:21:35.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:21:35.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:21:23', tmtdew=37.06, humidity=7.58, cloud=0.0, wind=29.92, temperature=22.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:21:08.064', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:21:35.577 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:21:35.588 [DEBUG] [Thread-114079] [transport.py] [_log()] starting thread (client mode): 0xed2da80
2025-11-03T10:21:35.589 [DEBUG] [Thread-114079] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:21:35.604 [DEBUG] [Thread-114079] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:21:35.604 [INFO] [Thread-114079] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:21:35.614 [DEBUG] [Thread-114079] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:21:35.615 [DEBUG] [Thread-114079] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:21:35.615 [DEBUG] [Thread-114079] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:21:35.615 [DEBUG] [Thread-114079] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:21:35.615 [DEBUG] [Thread-114079] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:21:35.615 [DEBUG] [Thread-114079] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:21:35.615 [DEBUG] [Thread-114079] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:21:35.615 [DEBUG] [Thread-114079] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:21:35.615 [DEBUG] [Thread-114079] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:21:35.616 [DEBUG] [Thread-114079] [transport.py] [_log()] client lang: <none>
2025-11-03T10:21:35.616 [DEBUG] [Thread-114079] [transport.py] [_log()] server lang: <none>
2025-11-03T10:21:35.616 [DEBUG] [Thread-114079] [transport.py] [_log()] kex follows: False
2025-11-03T10:21:35.616 [DEBUG] [Thread-114079] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:21:35.616 [DEBUG] [Thread-114079] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:21:35.616 [DEBUG] [Thread-114079] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:21:35.616 [DEBUG] [Thread-114079] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:21:35.616 [DEBUG] [Thread-114079] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:21:35.617 [DEBUG] [Thread-114079] [transport.py] [_log()] Compression: none
2025-11-03T10:21:35.617 [DEBUG] [Thread-114079] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:21:35.622 [DEBUG] [Thread-114081 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:21:35.669 [DEBUG] [Thread-114079] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:21:35.670 [DEBUG] [Thread-114079] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:21:35.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:21:35.671 [DEBUG] [Thread-114079] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:21:35.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:21:35.728 [DEBUG] [Thread-114079] [transport.py] [_log()] userauth is OK
2025-11-03T10:21:35.728 [DEBUG] [Thread-114079] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:21:35.729 [DEBUG] [Thread-114079] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:21:35.729 [DEBUG] [Thread-114079] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:21:35.729 [DEBUG] [Thread-114079] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:21:35.749 [INFO] [Thread-114079] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:21:35.750 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:21:35.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:21:36.630 [DEBUG] [Thread-114079] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:21:36.630 [DEBUG] [Thread-114079] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:21:36.678 [DEBUG] [Thread-114079] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:21:36.679 [DEBUG] [Thread-114079] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:21:36.688 [DEBUG] [Thread-114079] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:21:36.697 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:21:36.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:21:36.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:21:36.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:21:36.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:21:36.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:21:36.725 [DEBUG] [Thread-114079] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:21:50.674 [DEBUG] [Thread-114082 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:21:52.453 [DEBUG] [Thread-114083 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:22:05.705 [DEBUG] [Thread-114084 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:22:06.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:22:06.747 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:22:06.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:22:07.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 21, 55), 37.53, 6.98, 0.0, 33.93, 22.88, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:22:07.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:21:55
2025-11-03T10:22:07.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:22:07.676 [DEBUG] [Thread-114085] [transport.py] [_log()] starting thread (client mode): 0xed5e1a0
2025-11-03T10:22:07.676 [DEBUG] [Thread-114085] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:22:07.695 [DEBUG] [Thread-114085] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:22:07.695 [INFO] [Thread-114085] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:22:07.697 [DEBUG] [Thread-114085] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:22:07.697 [DEBUG] [Thread-114085] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:22:07.697 [DEBUG] [Thread-114085] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:22:07.697 [DEBUG] [Thread-114085] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:22:07.697 [DEBUG] [Thread-114085] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:22:07.697 [DEBUG] [Thread-114085] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:22:07.697 [DEBUG] [Thread-114085] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:22:07.697 [DEBUG] [Thread-114085] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:22:07.697 [DEBUG] [Thread-114085] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:22:07.697 [DEBUG] [Thread-114085] [transport.py] [_log()] client lang: <none>
2025-11-03T10:22:07.697 [DEBUG] [Thread-114085] [transport.py] [_log()] server lang: <none>
2025-11-03T10:22:07.697 [DEBUG] [Thread-114085] [transport.py] [_log()] kex follows: False
2025-11-03T10:22:07.698 [DEBUG] [Thread-114085] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:22:07.698 [DEBUG] [Thread-114085] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:22:07.698 [DEBUG] [Thread-114085] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:22:07.698 [DEBUG] [Thread-114085] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:22:07.698 [DEBUG] [Thread-114085] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:22:07.698 [DEBUG] [Thread-114085] [transport.py] [_log()] Compression: none
2025-11-03T10:22:07.698 [DEBUG] [Thread-114085] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:22:07.716 [DEBUG] [Thread-114085] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:22:07.716 [DEBUG] [Thread-114085] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:22:07.717 [DEBUG] [Thread-114085] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:22:07.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:22:07.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:22:07.719 [DEBUG] [Thread-114085] [transport.py] [_log()] userauth is OK
2025-11-03T10:22:07.720 [DEBUG] [Thread-114085] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:22:07.720 [DEBUG] [Thread-114085] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:22:07.720 [DEBUG] [Thread-114085] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:22:07.720 [DEBUG] [Thread-114085] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:22:07.745 [INFO] [Thread-114085] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:22:07.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:22:08.331 [DEBUG] [Thread-114085] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:22:08.331 [DEBUG] [Thread-114085] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:22:08.332 [DEBUG] [Thread-114085] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:22:08.372 [DEBUG] [Thread-114085] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:22:08.372 [DEBUG] [Thread-114085] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:22:08.376 [DEBUG] [Thread-114085] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:22:08.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:22:08.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:22:08.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:22:08.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:22:08.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:22:08.398 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:22:08.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:22:08.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:22:08.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:22:08.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.348357 -999.00  +22.40  22.66     12   -7.70 1 1 1 1 1   888    0 29.72 -13.27 ----- 26.2 22.7 30.2 37.3 28.1 -29.4 27.1 -30.4 26.0 -28.8 26.6 -28.1
2025-11-03T10:22:08.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:22:08.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:22:08.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.348357
2025-11-03T10:22:08.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:22:08.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:22:08.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:22:08.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:22:08.401 [DEBUG] [Thread-114085] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:22:08.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:22:08.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:21:55', tmtdew=37.53, humidity=6.98, cloud=0.0, wind=33.93, temperature=22.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:21:38.045', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:22:08.484 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:22:08.497 [DEBUG] [Thread-114088] [transport.py] [_log()] starting thread (client mode): 0xed2cfd0
2025-11-03T10:22:08.497 [DEBUG] [Thread-114088] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:22:08.513 [DEBUG] [Thread-114088] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:22:08.513 [INFO] [Thread-114088] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:22:08.523 [DEBUG] [Thread-114088] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:22:08.523 [DEBUG] [Thread-114088] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:22:08.524 [DEBUG] [Thread-114088] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:22:08.524 [DEBUG] [Thread-114088] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:22:08.524 [DEBUG] [Thread-114088] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:22:08.524 [DEBUG] [Thread-114088] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:22:08.524 [DEBUG] [Thread-114088] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:22:08.524 [DEBUG] [Thread-114088] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:22:08.524 [DEBUG] [Thread-114088] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:22:08.524 [DEBUG] [Thread-114088] [transport.py] [_log()] client lang: <none>
2025-11-03T10:22:08.524 [DEBUG] [Thread-114088] [transport.py] [_log()] server lang: <none>
2025-11-03T10:22:08.524 [DEBUG] [Thread-114088] [transport.py] [_log()] kex follows: False
2025-11-03T10:22:08.524 [DEBUG] [Thread-114088] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:22:08.524 [DEBUG] [Thread-114088] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:22:08.524 [DEBUG] [Thread-114088] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:22:08.524 [DEBUG] [Thread-114088] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:22:08.524 [DEBUG] [Thread-114088] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:22:08.524 [DEBUG] [Thread-114088] [transport.py] [_log()] Compression: none
2025-11-03T10:22:08.524 [DEBUG] [Thread-114088] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:22:08.582 [DEBUG] [Thread-114088] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:22:08.583 [DEBUG] [Thread-114088] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:22:08.583 [DEBUG] [Thread-114088] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:22:08.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:22:08.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:22:08.638 [DEBUG] [Thread-114088] [transport.py] [_log()] userauth is OK
2025-11-03T10:22:08.638 [DEBUG] [Thread-114088] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:22:08.638 [DEBUG] [Thread-114088] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:22:08.638 [DEBUG] [Thread-114088] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:22:08.639 [DEBUG] [Thread-114088] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:22:08.664 [INFO] [Thread-114088] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:22:08.664 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:22:08.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:22:09.509 [DEBUG] [Thread-114088] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:22:09.509 [DEBUG] [Thread-114088] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:22:09.557 [DEBUG] [Thread-114088] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:22:09.557 [DEBUG] [Thread-114088] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:22:09.567 [DEBUG] [Thread-114088] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:22:09.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:22:09.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:22:09.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:22:09.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:22:09.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:22:09.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:22:09.604 [DEBUG] [Thread-114088] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:22:20.741 [DEBUG] [Thread-114090 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:22:22.475 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:22:22.477 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:22:35.788 [DEBUG] [Thread-114091 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:22:39.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:22:39.626 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:22:39.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:22:40.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 22, 27), 37.55, 6.93, 0.0, 27.53, 22.62, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:22:40.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:22:27
2025-11-03T10:22:40.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:22:40.550 [DEBUG] [Thread-114092] [transport.py] [_log()] starting thread (client mode): 0xed66b90
2025-11-03T10:22:40.550 [DEBUG] [Thread-114092] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:22:40.565 [DEBUG] [Thread-114092] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:22:40.565 [INFO] [Thread-114092] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:22:40.566 [DEBUG] [Thread-114092] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:22:40.566 [DEBUG] [Thread-114092] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:22:40.567 [DEBUG] [Thread-114092] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:22:40.567 [DEBUG] [Thread-114092] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:22:40.567 [DEBUG] [Thread-114092] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:22:40.567 [DEBUG] [Thread-114092] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:22:40.567 [DEBUG] [Thread-114092] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:22:40.567 [DEBUG] [Thread-114092] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:22:40.567 [DEBUG] [Thread-114092] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:22:40.567 [DEBUG] [Thread-114092] [transport.py] [_log()] client lang: <none>
2025-11-03T10:22:40.567 [DEBUG] [Thread-114092] [transport.py] [_log()] server lang: <none>
2025-11-03T10:22:40.567 [DEBUG] [Thread-114092] [transport.py] [_log()] kex follows: False
2025-11-03T10:22:40.567 [DEBUG] [Thread-114092] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:22:40.567 [DEBUG] [Thread-114092] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:22:40.567 [DEBUG] [Thread-114092] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:22:40.567 [DEBUG] [Thread-114092] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:22:40.567 [DEBUG] [Thread-114092] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:22:40.567 [DEBUG] [Thread-114092] [transport.py] [_log()] Compression: none
2025-11-03T10:22:40.567 [DEBUG] [Thread-114092] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:22:40.577 [DEBUG] [Thread-114092] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:22:40.577 [DEBUG] [Thread-114092] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:22:40.578 [DEBUG] [Thread-114092] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:22:40.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:22:40.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:22:40.579 [DEBUG] [Thread-114092] [transport.py] [_log()] userauth is OK
2025-11-03T10:22:40.579 [DEBUG] [Thread-114092] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:22:40.579 [DEBUG] [Thread-114092] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:22:40.579 [DEBUG] [Thread-114092] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:22:40.579 [DEBUG] [Thread-114092] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:22:40.595 [INFO] [Thread-114092] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:22:40.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:22:41.180 [DEBUG] [Thread-114092] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:22:41.181 [DEBUG] [Thread-114092] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:22:41.181 [DEBUG] [Thread-114092] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:22:41.221 [DEBUG] [Thread-114092] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:22:41.221 [DEBUG] [Thread-114092] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:22:41.224 [DEBUG] [Thread-114092] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:22:41.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:22:41.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:22:41.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:22:41.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:22:41.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:22:41.246 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:22:41.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:22:41.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:22:41.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:22:41.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.348704 -999.00  +22.30  39.40     12   -8.00 1 1 2 1 1   888    0 29.50 -11.66 ----- 36.8 39.4 49.4 40.9 28.1 -30.3 26.9 -30.3 25.9 -28.8 26.6 -27.9
2025-11-03T10:22:41.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:22:41.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:22:41.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.348704
2025-11-03T10:22:41.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:22:41.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:22:41.255 [DEBUG] [Thread-114092] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:22:41.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:22:41.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:22:41.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:22:41.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:22:27', tmtdew=37.55, humidity=6.93, cloud=0.0, wind=27.53, temperature=22.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:22:08.026', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:22:41.342 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:22:41.358 [DEBUG] [Thread-114095] [transport.py] [_log()] starting thread (client mode): 0xedb31c0
2025-11-03T10:22:41.358 [DEBUG] [Thread-114095] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:22:41.375 [DEBUG] [Thread-114095] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:22:41.375 [INFO] [Thread-114095] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:22:41.383 [DEBUG] [Thread-114095] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:22:41.383 [DEBUG] [Thread-114095] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:22:41.383 [DEBUG] [Thread-114095] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:22:41.383 [DEBUG] [Thread-114095] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:22:41.383 [DEBUG] [Thread-114095] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:22:41.384 [DEBUG] [Thread-114095] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:22:41.384 [DEBUG] [Thread-114095] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:22:41.384 [DEBUG] [Thread-114095] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:22:41.384 [DEBUG] [Thread-114095] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:22:41.384 [DEBUG] [Thread-114095] [transport.py] [_log()] client lang: <none>
2025-11-03T10:22:41.384 [DEBUG] [Thread-114095] [transport.py] [_log()] server lang: <none>
2025-11-03T10:22:41.384 [DEBUG] [Thread-114095] [transport.py] [_log()] kex follows: False
2025-11-03T10:22:41.384 [DEBUG] [Thread-114095] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:22:41.384 [DEBUG] [Thread-114095] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:22:41.384 [DEBUG] [Thread-114095] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:22:41.384 [DEBUG] [Thread-114095] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:22:41.384 [DEBUG] [Thread-114095] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:22:41.384 [DEBUG] [Thread-114095] [transport.py] [_log()] Compression: none
2025-11-03T10:22:41.384 [DEBUG] [Thread-114095] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:22:41.447 [DEBUG] [Thread-114095] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:22:41.448 [DEBUG] [Thread-114095] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:22:41.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:22:41.449 [DEBUG] [Thread-114095] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:22:41.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:22:41.506 [DEBUG] [Thread-114095] [transport.py] [_log()] userauth is OK
2025-11-03T10:22:41.507 [DEBUG] [Thread-114095] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:22:41.507 [DEBUG] [Thread-114095] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:22:41.507 [DEBUG] [Thread-114095] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:22:41.507 [DEBUG] [Thread-114095] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:22:41.532 [INFO] [Thread-114095] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:22:41.533 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:22:41.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:22:42.403 [DEBUG] [Thread-114095] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:22:42.404 [DEBUG] [Thread-114095] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:22:42.452 [DEBUG] [Thread-114095] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:22:42.452 [DEBUG] [Thread-114095] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:22:42.462 [DEBUG] [Thread-114095] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:22:42.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:22:42.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:22:42.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:22:42.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:22:42.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:22:42.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:22:42.501 [DEBUG] [Thread-114095] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:22:50.827 [DEBUG] [Thread-114097 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:22:52.536 [DEBUG] [Thread-114098 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:23:05.882 [DEBUG] [Thread-114099 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:23:12.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:23:12.522 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:23:12.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:23:13.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 22, 59), 37.14, 7.01, 0.0, 24.74, 22.17, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:23:13.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:22:59
2025-11-03T10:23:13.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:23:13.435 [DEBUG] [Thread-114100] [transport.py] [_log()] starting thread (client mode): 0xed5d0f0
2025-11-03T10:23:13.435 [DEBUG] [Thread-114100] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:23:13.456 [DEBUG] [Thread-114100] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:23:13.456 [INFO] [Thread-114100] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:23:13.459 [DEBUG] [Thread-114100] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:23:13.459 [DEBUG] [Thread-114100] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:23:13.459 [DEBUG] [Thread-114100] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:23:13.460 [DEBUG] [Thread-114100] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:23:13.460 [DEBUG] [Thread-114100] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:23:13.460 [DEBUG] [Thread-114100] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:23:13.460 [DEBUG] [Thread-114100] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:23:13.460 [DEBUG] [Thread-114100] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:23:13.460 [DEBUG] [Thread-114100] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:23:13.460 [DEBUG] [Thread-114100] [transport.py] [_log()] client lang: <none>
2025-11-03T10:23:13.460 [DEBUG] [Thread-114100] [transport.py] [_log()] server lang: <none>
2025-11-03T10:23:13.460 [DEBUG] [Thread-114100] [transport.py] [_log()] kex follows: False
2025-11-03T10:23:13.460 [DEBUG] [Thread-114100] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:23:13.460 [DEBUG] [Thread-114100] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:23:13.460 [DEBUG] [Thread-114100] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:23:13.460 [DEBUG] [Thread-114100] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:23:13.461 [DEBUG] [Thread-114100] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:23:13.461 [DEBUG] [Thread-114100] [transport.py] [_log()] Compression: none
2025-11-03T10:23:13.461 [DEBUG] [Thread-114100] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:23:13.479 [DEBUG] [Thread-114100] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:23:13.489 [DEBUG] [Thread-114100] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:23:13.490 [DEBUG] [Thread-114100] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:23:13.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:23:13.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:23:13.492 [DEBUG] [Thread-114100] [transport.py] [_log()] userauth is OK
2025-11-03T10:23:13.492 [DEBUG] [Thread-114100] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:23:13.492 [DEBUG] [Thread-114100] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:23:13.492 [DEBUG] [Thread-114100] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:23:13.492 [DEBUG] [Thread-114100] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:23:13.516 [INFO] [Thread-114100] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:23:13.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:23:14.166 [DEBUG] [Thread-114100] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:23:14.167 [DEBUG] [Thread-114100] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:23:14.167 [DEBUG] [Thread-114100] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:23:14.208 [DEBUG] [Thread-114100] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:23:14.208 [DEBUG] [Thread-114100] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:23:14.212 [DEBUG] [Thread-114100] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:23:14.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:23:14.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:23:14.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:23:14.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:23:14.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:23:14.236 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:23:14.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:23:14.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:23:14.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:23:14.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.349051 -999.00  +21.70  31.75     12   -8.30 1 1 2 1 1   888    0 29.28 -9.03 ----- 28.4 31.8 47.4 41.9 27.8 -30.1 26.8 -29.8 25.7 -29.5 26.5 -28.7
2025-11-03T10:23:14.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:23:14.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:23:14.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.349051
2025-11-03T10:23:14.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:23:14.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:23:14.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:23:14.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:23:14.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:23:14.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:22:59', tmtdew=37.14, humidity=7.01, cloud=0.0, wind=24.74, temperature=22.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:22:38.006', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:23:14.239 [DEBUG] [Thread-114100] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:23:14.322 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:23:14.334 [DEBUG] [Thread-114103] [transport.py] [_log()] starting thread (client mode): 0xed64580
2025-11-03T10:23:14.335 [DEBUG] [Thread-114103] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:23:14.350 [DEBUG] [Thread-114103] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:23:14.350 [INFO] [Thread-114103] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:23:14.358 [DEBUG] [Thread-114103] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:23:14.358 [DEBUG] [Thread-114103] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:23:14.359 [DEBUG] [Thread-114103] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:23:14.359 [DEBUG] [Thread-114103] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:23:14.359 [DEBUG] [Thread-114103] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:23:14.359 [DEBUG] [Thread-114103] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:23:14.359 [DEBUG] [Thread-114103] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:23:14.359 [DEBUG] [Thread-114103] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:23:14.360 [DEBUG] [Thread-114103] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:23:14.360 [DEBUG] [Thread-114103] [transport.py] [_log()] client lang: <none>
2025-11-03T10:23:14.360 [DEBUG] [Thread-114103] [transport.py] [_log()] server lang: <none>
2025-11-03T10:23:14.360 [DEBUG] [Thread-114103] [transport.py] [_log()] kex follows: False
2025-11-03T10:23:14.360 [DEBUG] [Thread-114103] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:23:14.360 [DEBUG] [Thread-114103] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:23:14.360 [DEBUG] [Thread-114103] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:23:14.360 [DEBUG] [Thread-114103] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:23:14.360 [DEBUG] [Thread-114103] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:23:14.360 [DEBUG] [Thread-114103] [transport.py] [_log()] Compression: none
2025-11-03T10:23:14.360 [DEBUG] [Thread-114103] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:23:14.418 [DEBUG] [Thread-114103] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:23:14.419 [DEBUG] [Thread-114103] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:23:14.419 [DEBUG] [Thread-114103] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:23:14.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:23:14.420 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:23:14.474 [DEBUG] [Thread-114103] [transport.py] [_log()] userauth is OK
2025-11-03T10:23:14.474 [DEBUG] [Thread-114103] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:23:14.475 [DEBUG] [Thread-114103] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:23:14.475 [DEBUG] [Thread-114103] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:23:14.475 [DEBUG] [Thread-114103] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:23:14.497 [INFO] [Thread-114103] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:23:14.507 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:23:14.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:23:15.359 [DEBUG] [Thread-114103] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:23:15.360 [DEBUG] [Thread-114103] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:23:15.408 [DEBUG] [Thread-114103] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:23:15.408 [DEBUG] [Thread-114103] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:23:15.418 [DEBUG] [Thread-114103] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:23:15.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:23:15.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:23:15.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:23:15.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:23:15.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:23:15.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:23:15.455 [DEBUG] [Thread-114103] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:23:20.911 [DEBUG] [Thread-114105 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:23:22.618 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:23:22.619 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:23:35.971 [DEBUG] [Thread-114106 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:23:45.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:23:45.477 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:23:45.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:23:46.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 23, 32), 36.79, 7.21, 0.0, 32.06, 22.09, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:23:46.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:23:32
2025-11-03T10:23:46.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:23:46.445 [DEBUG] [Thread-114107] [transport.py] [_log()] starting thread (client mode): 0xed64cd0
2025-11-03T10:23:46.445 [DEBUG] [Thread-114107] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:23:46.458 [DEBUG] [Thread-114107] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:23:46.459 [INFO] [Thread-114107] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:23:46.462 [DEBUG] [Thread-114107] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:23:46.462 [DEBUG] [Thread-114107] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:23:46.462 [DEBUG] [Thread-114107] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:23:46.462 [DEBUG] [Thread-114107] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:23:46.462 [DEBUG] [Thread-114107] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:23:46.462 [DEBUG] [Thread-114107] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:23:46.462 [DEBUG] [Thread-114107] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:23:46.462 [DEBUG] [Thread-114107] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:23:46.462 [DEBUG] [Thread-114107] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:23:46.462 [DEBUG] [Thread-114107] [transport.py] [_log()] client lang: <none>
2025-11-03T10:23:46.462 [DEBUG] [Thread-114107] [transport.py] [_log()] server lang: <none>
2025-11-03T10:23:46.462 [DEBUG] [Thread-114107] [transport.py] [_log()] kex follows: False
2025-11-03T10:23:46.462 [DEBUG] [Thread-114107] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:23:46.462 [DEBUG] [Thread-114107] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:23:46.462 [DEBUG] [Thread-114107] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:23:46.462 [DEBUG] [Thread-114107] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:23:46.462 [DEBUG] [Thread-114107] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:23:46.462 [DEBUG] [Thread-114107] [transport.py] [_log()] Compression: none
2025-11-03T10:23:46.462 [DEBUG] [Thread-114107] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:23:46.478 [DEBUG] [Thread-114107] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:23:46.478 [DEBUG] [Thread-114107] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:23:46.479 [DEBUG] [Thread-114107] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:23:46.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:23:46.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:23:46.480 [DEBUG] [Thread-114107] [transport.py] [_log()] userauth is OK
2025-11-03T10:23:46.480 [DEBUG] [Thread-114107] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:23:46.480 [DEBUG] [Thread-114107] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:23:46.480 [DEBUG] [Thread-114107] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:23:46.480 [DEBUG] [Thread-114107] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:23:46.492 [INFO] [Thread-114107] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:23:46.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:23:47.119 [DEBUG] [Thread-114107] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:23:47.119 [DEBUG] [Thread-114107] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:23:47.119 [DEBUG] [Thread-114107] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:23:47.160 [DEBUG] [Thread-114107] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:23:47.160 [DEBUG] [Thread-114107] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:23:47.162 [DEBUG] [Thread-114107] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:23:47.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:23:47.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:23:47.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:23:47.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:23:47.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:23:47.181 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:23:47.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:23:47.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:23:47.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:23:47.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.349746 -999.00  +21.60  17.12     12   -8.10 1 1 1 1 1   888    0 29.76 -5.89 ----- 17.4 17.1 360.0 26.9 27.9 -28.8 26.9 -28.9 25.8 -28.2 26.4 -28.4
2025-11-03T10:23:47.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:23:47.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:23:47.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.349746
2025-11-03T10:23:47.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:23:47.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:23:47.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:23:47.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:23:47.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:23:47.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:23:32', tmtdew=36.79, humidity=7.21, cloud=0.0, wind=32.06, temperature=22.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:23:38.054', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:23:47.182 [DEBUG] [Thread-114107] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:23:47.270 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:23:47.281 [DEBUG] [Thread-114110] [transport.py] [_log()] starting thread (client mode): 0xed65d50
2025-11-03T10:23:47.282 [DEBUG] [Thread-114110] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:23:47.300 [DEBUG] [Thread-114110] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:23:47.300 [INFO] [Thread-114110] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:23:47.308 [DEBUG] [Thread-114110] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:23:47.308 [DEBUG] [Thread-114110] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:23:47.308 [DEBUG] [Thread-114110] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:23:47.308 [DEBUG] [Thread-114110] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:23:47.308 [DEBUG] [Thread-114110] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:23:47.308 [DEBUG] [Thread-114110] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:23:47.308 [DEBUG] [Thread-114110] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:23:47.308 [DEBUG] [Thread-114110] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:23:47.308 [DEBUG] [Thread-114110] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:23:47.308 [DEBUG] [Thread-114110] [transport.py] [_log()] client lang: <none>
2025-11-03T10:23:47.308 [DEBUG] [Thread-114110] [transport.py] [_log()] server lang: <none>
2025-11-03T10:23:47.308 [DEBUG] [Thread-114110] [transport.py] [_log()] kex follows: False
2025-11-03T10:23:47.308 [DEBUG] [Thread-114110] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:23:47.308 [DEBUG] [Thread-114110] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:23:47.308 [DEBUG] [Thread-114110] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:23:47.308 [DEBUG] [Thread-114110] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:23:47.308 [DEBUG] [Thread-114110] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:23:47.308 [DEBUG] [Thread-114110] [transport.py] [_log()] Compression: none
2025-11-03T10:23:47.308 [DEBUG] [Thread-114110] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:23:47.363 [DEBUG] [Thread-114110] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:23:47.363 [DEBUG] [Thread-114110] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:23:47.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:23:47.364 [DEBUG] [Thread-114110] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:23:47.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:23:47.421 [DEBUG] [Thread-114110] [transport.py] [_log()] userauth is OK
2025-11-03T10:23:47.421 [DEBUG] [Thread-114110] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:23:47.421 [DEBUG] [Thread-114110] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:23:47.421 [DEBUG] [Thread-114110] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:23:47.421 [DEBUG] [Thread-114110] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:23:47.435 [INFO] [Thread-114110] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:23:47.435 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:23:47.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:23:48.309 [DEBUG] [Thread-114110] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:23:48.309 [DEBUG] [Thread-114110] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:23:48.357 [DEBUG] [Thread-114110] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:23:48.357 [DEBUG] [Thread-114110] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:23:48.365 [DEBUG] [Thread-114110] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:23:48.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:23:48.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:23:48.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:23:48.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:23:48.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:23:48.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:23:48.397 [DEBUG] [Thread-114110] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:23:51.008 [DEBUG] [Thread-114112 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:23:52.595 [DEBUG] [Thread-114113 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:24:06.059 [DEBUG] [Thread-114114 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:24:18.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:24:18.401 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:24:18.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:24:19.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 24, 4), 37.26, 6.99, 0.0, 31.97, 22.52, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:24:19.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:24:04
2025-11-03T10:24:19.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:24:19.565 [DEBUG] [Thread-114115] [transport.py] [_log()] starting thread (client mode): 0xed67d00
2025-11-03T10:24:19.565 [DEBUG] [Thread-114115] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:24:19.585 [DEBUG] [Thread-114115] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:24:19.585 [INFO] [Thread-114115] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:24:19.588 [DEBUG] [Thread-114115] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:24:19.588 [DEBUG] [Thread-114115] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:24:19.588 [DEBUG] [Thread-114115] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:24:19.588 [DEBUG] [Thread-114115] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:24:19.589 [DEBUG] [Thread-114115] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:24:19.589 [DEBUG] [Thread-114115] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:24:19.589 [DEBUG] [Thread-114115] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:24:19.589 [DEBUG] [Thread-114115] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:24:19.589 [DEBUG] [Thread-114115] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:24:19.589 [DEBUG] [Thread-114115] [transport.py] [_log()] client lang: <none>
2025-11-03T10:24:19.589 [DEBUG] [Thread-114115] [transport.py] [_log()] server lang: <none>
2025-11-03T10:24:19.589 [DEBUG] [Thread-114115] [transport.py] [_log()] kex follows: False
2025-11-03T10:24:19.589 [DEBUG] [Thread-114115] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:24:19.589 [DEBUG] [Thread-114115] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:24:19.589 [DEBUG] [Thread-114115] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:24:19.589 [DEBUG] [Thread-114115] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:24:19.589 [DEBUG] [Thread-114115] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:24:19.589 [DEBUG] [Thread-114115] [transport.py] [_log()] Compression: none
2025-11-03T10:24:19.589 [DEBUG] [Thread-114115] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:24:19.606 [DEBUG] [Thread-114115] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:24:19.607 [DEBUG] [Thread-114115] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:24:19.607 [DEBUG] [Thread-114115] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:24:19.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:24:19.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:24:19.610 [DEBUG] [Thread-114115] [transport.py] [_log()] userauth is OK
2025-11-03T10:24:19.610 [DEBUG] [Thread-114115] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:24:19.610 [DEBUG] [Thread-114115] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:24:19.610 [DEBUG] [Thread-114115] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:24:19.610 [DEBUG] [Thread-114115] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:24:19.634 [INFO] [Thread-114115] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:24:19.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:24:20.250 [DEBUG] [Thread-114115] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:24:20.250 [DEBUG] [Thread-114115] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:24:20.250 [DEBUG] [Thread-114115] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:24:20.291 [DEBUG] [Thread-114115] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:24:20.291 [DEBUG] [Thread-114115] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:24:20.293 [DEBUG] [Thread-114115] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:24:20.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:24:20.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:24:20.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:24:20.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:24:20.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:24:20.316 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:24:20.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:24:20.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:24:20.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:24:20.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.350093 -999.00  +21.90  21.36     12   -8.10 1 1 1 1 1   888    0 29.88 -4.26 ----- 20.6 21.4 18.2 25.4 28.0 -29.5 26.9 -29.8 25.7 -28.0 26.4 -27.3
2025-11-03T10:24:20.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:24:20.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:24:20.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.350093
2025-11-03T10:24:20.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:24:20.318 [DEBUG] [Thread-114115] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:24:20.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:24:20.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:24:20.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:24:20.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:24:20.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:24:04', tmtdew=37.26, humidity=6.99, cloud=0.0, wind=31.97, temperature=22.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:24:08.035', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:24:20.403 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:24:21.092 [DEBUG] [Thread-114118 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:24:22.760 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:24:22.761 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:24:36.139 [DEBUG] [Thread-114119 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:24:51.179 [DEBUG] [Thread-114120 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:24:52.666 [DEBUG] [Thread-114121 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:25:06.214 [DEBUG] [Thread-114122 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:25:21.245 [DEBUG] [Thread-114123 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:25:22.903 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:25:22.904 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:25:36.281 [DEBUG] [Thread-114124 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:25:51.329 [DEBUG] [Thread-114125 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:25:52.787 [DEBUG] [Thread-114126 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:26:06.370 [DEBUG] [Thread-114127 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:26:21.407 [DEBUG] [Thread-114128 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:26:23.045 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:26:23.045 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:26:34.217 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T10:26:36.440 [DEBUG] [Thread-114129 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:26:51.472 [DEBUG] [Thread-114130 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:26:52.833 [DEBUG] [Thread-114131 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:27:04.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:27:04.247 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:27:04.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:27:04.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 26, 45), 37.24, 7.03, 0.0, 22.94, 22.37, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:27:04.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:26:45
2025-11-03T10:27:05.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:27:05.272 [DEBUG] [Thread-114132] [transport.py] [_log()] starting thread (client mode): 0xed66a10
2025-11-03T10:27:05.273 [DEBUG] [Thread-114132] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:27:05.279 [DEBUG] [Thread-114132] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:27:05.279 [INFO] [Thread-114132] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:27:05.288 [DEBUG] [Thread-114132] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:27:05.288 [DEBUG] [Thread-114132] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:27:05.289 [DEBUG] [Thread-114132] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:27:05.289 [DEBUG] [Thread-114132] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:27:05.289 [DEBUG] [Thread-114132] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:27:05.289 [DEBUG] [Thread-114132] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:27:05.289 [DEBUG] [Thread-114132] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:27:05.289 [DEBUG] [Thread-114132] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:27:05.289 [DEBUG] [Thread-114132] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:27:05.289 [DEBUG] [Thread-114132] [transport.py] [_log()] client lang: <none>
2025-11-03T10:27:05.289 [DEBUG] [Thread-114132] [transport.py] [_log()] server lang: <none>
2025-11-03T10:27:05.289 [DEBUG] [Thread-114132] [transport.py] [_log()] kex follows: False
2025-11-03T10:27:05.289 [DEBUG] [Thread-114132] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:27:05.289 [DEBUG] [Thread-114132] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:27:05.289 [DEBUG] [Thread-114132] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:27:05.289 [DEBUG] [Thread-114132] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:27:05.289 [DEBUG] [Thread-114132] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:27:05.289 [DEBUG] [Thread-114132] [transport.py] [_log()] Compression: none
2025-11-03T10:27:05.289 [DEBUG] [Thread-114132] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:27:05.310 [DEBUG] [Thread-114132] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:27:05.313 [DEBUG] [Thread-114132] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:27:05.314 [DEBUG] [Thread-114132] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:27:05.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:27:05.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:27:05.316 [DEBUG] [Thread-114132] [transport.py] [_log()] userauth is OK
2025-11-03T10:27:05.316 [DEBUG] [Thread-114132] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:27:05.316 [DEBUG] [Thread-114132] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:27:05.316 [DEBUG] [Thread-114132] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:27:05.316 [DEBUG] [Thread-114132] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:27:05.327 [INFO] [Thread-114132] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:27:05.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:27:05.970 [DEBUG] [Thread-114132] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:27:05.970 [DEBUG] [Thread-114132] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:27:05.970 [DEBUG] [Thread-114132] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:27:06.020 [DEBUG] [Thread-114132] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:27:06.020 [DEBUG] [Thread-114132] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:27:06.022 [DEBUG] [Thread-114132] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:27:06.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:27:06.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:27:06.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:27:06.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:27:06.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:27:06.036 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:27:06.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:27:06.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:27:06.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:27:06.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.351829 -999.00  +22.30  17.64     12   -8.00 1 1 1 1 1   888    0 30.30 15.24 ----- 20.5 17.6 30.9 32.8 27.9 -27.8 26.9 -27.5 25.6 -28.5 26.4 -27.4
2025-11-03T10:27:06.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:27:06.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:27:06.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.351829
2025-11-03T10:27:06.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:27:06.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:27:06.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:27:06.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:27:06.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:27:06.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:26:45', tmtdew=37.24, humidity=7.03, cloud=0.0, wind=22.94, temperature=22.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:26:38.026', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:27:06.043 [DEBUG] [Thread-114132] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:27:06.118 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:27:06.133 [DEBUG] [Thread-114135] [transport.py] [_log()] starting thread (client mode): 0xed2d1e0
2025-11-03T10:27:06.133 [DEBUG] [Thread-114135] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:27:06.148 [DEBUG] [Thread-114135] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:27:06.148 [INFO] [Thread-114135] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:27:06.156 [DEBUG] [Thread-114135] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:27:06.156 [DEBUG] [Thread-114135] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:27:06.156 [DEBUG] [Thread-114135] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:27:06.156 [DEBUG] [Thread-114135] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:27:06.156 [DEBUG] [Thread-114135] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:27:06.156 [DEBUG] [Thread-114135] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:27:06.156 [DEBUG] [Thread-114135] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:27:06.156 [DEBUG] [Thread-114135] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:27:06.156 [DEBUG] [Thread-114135] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:27:06.156 [DEBUG] [Thread-114135] [transport.py] [_log()] client lang: <none>
2025-11-03T10:27:06.156 [DEBUG] [Thread-114135] [transport.py] [_log()] server lang: <none>
2025-11-03T10:27:06.156 [DEBUG] [Thread-114135] [transport.py] [_log()] kex follows: False
2025-11-03T10:27:06.156 [DEBUG] [Thread-114135] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:27:06.156 [DEBUG] [Thread-114135] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:27:06.156 [DEBUG] [Thread-114135] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:27:06.156 [DEBUG] [Thread-114135] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:27:06.156 [DEBUG] [Thread-114135] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:27:06.156 [DEBUG] [Thread-114135] [transport.py] [_log()] Compression: none
2025-11-03T10:27:06.156 [DEBUG] [Thread-114135] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:27:06.212 [DEBUG] [Thread-114135] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:27:06.212 [DEBUG] [Thread-114135] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:27:06.212 [DEBUG] [Thread-114135] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:27:06.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:27:06.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:27:06.269 [DEBUG] [Thread-114135] [transport.py] [_log()] userauth is OK
2025-11-03T10:27:06.269 [DEBUG] [Thread-114135] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:27:06.269 [DEBUG] [Thread-114135] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:27:06.269 [DEBUG] [Thread-114135] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:27:06.269 [DEBUG] [Thread-114135] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:27:06.283 [INFO] [Thread-114135] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:27:06.283 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:27:06.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:27:06.505 [DEBUG] [Thread-114137 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:27:07.125 [DEBUG] [Thread-114135] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:27:07.125 [DEBUG] [Thread-114135] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:27:07.177 [DEBUG] [Thread-114135] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:27:07.178 [DEBUG] [Thread-114135] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:27:07.189 [DEBUG] [Thread-114135] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:27:07.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:27:07.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:27:07.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:27:07.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:27:07.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:27:07.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:27:07.235 [DEBUG] [Thread-114135] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:27:21.551 [DEBUG] [Thread-114138 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:27:23.195 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:27:23.197 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:27:36.590 [DEBUG] [Thread-114139 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:27:37.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:27:37.258 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:27:37.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:27:37.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 27, 18), 37.26, 7.03, 0.0, 24.22, 22.45, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:27:37.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:27:18
2025-11-03T10:27:38.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:27:38.208 [DEBUG] [Thread-114140] [transport.py] [_log()] starting thread (client mode): 0xed2d9f0
2025-11-03T10:27:38.208 [DEBUG] [Thread-114140] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:27:38.219 [DEBUG] [Thread-114140] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:27:38.219 [INFO] [Thread-114140] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:27:38.220 [DEBUG] [Thread-114140] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:27:38.221 [DEBUG] [Thread-114140] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:27:38.221 [DEBUG] [Thread-114140] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:27:38.221 [DEBUG] [Thread-114140] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:27:38.221 [DEBUG] [Thread-114140] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:27:38.221 [DEBUG] [Thread-114140] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:27:38.221 [DEBUG] [Thread-114140] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:27:38.221 [DEBUG] [Thread-114140] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:27:38.221 [DEBUG] [Thread-114140] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:27:38.221 [DEBUG] [Thread-114140] [transport.py] [_log()] client lang: <none>
2025-11-03T10:27:38.221 [DEBUG] [Thread-114140] [transport.py] [_log()] server lang: <none>
2025-11-03T10:27:38.221 [DEBUG] [Thread-114140] [transport.py] [_log()] kex follows: False
2025-11-03T10:27:38.221 [DEBUG] [Thread-114140] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:27:38.221 [DEBUG] [Thread-114140] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:27:38.221 [DEBUG] [Thread-114140] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:27:38.221 [DEBUG] [Thread-114140] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:27:38.221 [DEBUG] [Thread-114140] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:27:38.221 [DEBUG] [Thread-114140] [transport.py] [_log()] Compression: none
2025-11-03T10:27:38.221 [DEBUG] [Thread-114140] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:27:38.239 [DEBUG] [Thread-114140] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:27:38.240 [DEBUG] [Thread-114140] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:27:38.240 [DEBUG] [Thread-114140] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:27:38.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:27:38.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:27:38.243 [DEBUG] [Thread-114140] [transport.py] [_log()] userauth is OK
2025-11-03T10:27:38.243 [DEBUG] [Thread-114140] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:27:38.243 [DEBUG] [Thread-114140] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:27:38.243 [DEBUG] [Thread-114140] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:27:38.243 [DEBUG] [Thread-114140] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:27:38.258 [INFO] [Thread-114140] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:27:38.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:27:38.823 [DEBUG] [Thread-114140] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:27:38.832 [DEBUG] [Thread-114140] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:27:38.832 [DEBUG] [Thread-114140] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:27:38.864 [DEBUG] [Thread-114140] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:27:38.865 [DEBUG] [Thread-114140] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:27:38.867 [DEBUG] [Thread-114140] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:27:38.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:27:38.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:27:38.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:27:38.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:27:38.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:27:38.889 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:27:38.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:27:38.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:27:38.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:27:38.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.352176 -999.00  +22.70  24.88     12   -8.00 1 1 1 1 1   888    0 30.37 18.79 ----- 26.4 24.9 36.2 28.4 28.1 -29.6 26.9 -27.5 25.8 -28.0 26.6 -26.9
2025-11-03T10:27:38.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:27:38.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:27:38.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.352176
2025-11-03T10:27:38.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:27:38.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:27:38.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:27:38.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:27:38.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:27:38.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:27:18', tmtdew=37.26, humidity=7.03, cloud=0.0, wind=24.22, temperature=22.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:27:08.006', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:27:38.890 [DEBUG] [Thread-114140] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:27:38.964 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:27:38.975 [DEBUG] [Thread-114143] [transport.py] [_log()] starting thread (client mode): 0xed67a90
2025-11-03T10:27:38.975 [DEBUG] [Thread-114143] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:27:38.991 [DEBUG] [Thread-114143] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:27:38.991 [INFO] [Thread-114143] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:27:38.999 [DEBUG] [Thread-114143] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:27:38.999 [DEBUG] [Thread-114143] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:27:39.000 [DEBUG] [Thread-114143] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:27:39.000 [DEBUG] [Thread-114143] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:27:39.000 [DEBUG] [Thread-114143] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:27:39.000 [DEBUG] [Thread-114143] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:27:39.000 [DEBUG] [Thread-114143] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:27:39.000 [DEBUG] [Thread-114143] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:27:39.000 [DEBUG] [Thread-114143] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:27:39.000 [DEBUG] [Thread-114143] [transport.py] [_log()] client lang: <none>
2025-11-03T10:27:39.001 [DEBUG] [Thread-114143] [transport.py] [_log()] server lang: <none>
2025-11-03T10:27:39.001 [DEBUG] [Thread-114143] [transport.py] [_log()] kex follows: False
2025-11-03T10:27:39.001 [DEBUG] [Thread-114143] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:27:39.001 [DEBUG] [Thread-114143] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:27:39.001 [DEBUG] [Thread-114143] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:27:39.001 [DEBUG] [Thread-114143] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:27:39.001 [DEBUG] [Thread-114143] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:27:39.001 [DEBUG] [Thread-114143] [transport.py] [_log()] Compression: none
2025-11-03T10:27:39.002 [DEBUG] [Thread-114143] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:27:39.060 [DEBUG] [Thread-114143] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:27:39.061 [DEBUG] [Thread-114143] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:27:39.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:27:39.063 [DEBUG] [Thread-114143] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:27:39.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:27:39.118 [DEBUG] [Thread-114143] [transport.py] [_log()] userauth is OK
2025-11-03T10:27:39.118 [DEBUG] [Thread-114143] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:27:39.118 [DEBUG] [Thread-114143] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:27:39.119 [DEBUG] [Thread-114143] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:27:39.119 [DEBUG] [Thread-114143] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:27:39.141 [INFO] [Thread-114143] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:27:39.143 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:27:39.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:27:39.995 [DEBUG] [Thread-114143] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:27:39.996 [DEBUG] [Thread-114143] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:27:40.043 [DEBUG] [Thread-114143] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:27:40.043 [DEBUG] [Thread-114143] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:27:40.054 [DEBUG] [Thread-114143] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:27:40.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:27:40.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:27:40.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:27:40.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:27:40.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:27:40.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:27:40.100 [DEBUG] [Thread-114143] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:27:51.623 [DEBUG] [Thread-114145 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:27:52.868 [DEBUG] [Thread-114146 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:28:06.665 [DEBUG] [Thread-114147 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:28:10.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:28:10.117 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:28:10.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:28:10.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 27, 50), 38.23, 6.78, 0.0, 20.01, 23.28, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:28:10.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:27:50
2025-11-03T10:28:11.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:28:11.181 [DEBUG] [Thread-114148] [transport.py] [_log()] starting thread (client mode): 0xed2d510
2025-11-03T10:28:11.182 [DEBUG] [Thread-114148] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:28:11.201 [DEBUG] [Thread-114148] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:28:11.202 [INFO] [Thread-114148] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:28:11.204 [DEBUG] [Thread-114148] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:28:11.205 [DEBUG] [Thread-114148] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:28:11.205 [DEBUG] [Thread-114148] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:28:11.205 [DEBUG] [Thread-114148] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:28:11.205 [DEBUG] [Thread-114148] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:28:11.205 [DEBUG] [Thread-114148] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:28:11.205 [DEBUG] [Thread-114148] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:28:11.205 [DEBUG] [Thread-114148] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:28:11.205 [DEBUG] [Thread-114148] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:28:11.205 [DEBUG] [Thread-114148] [transport.py] [_log()] client lang: <none>
2025-11-03T10:28:11.205 [DEBUG] [Thread-114148] [transport.py] [_log()] server lang: <none>
2025-11-03T10:28:11.206 [DEBUG] [Thread-114148] [transport.py] [_log()] kex follows: False
2025-11-03T10:28:11.206 [DEBUG] [Thread-114148] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:28:11.206 [DEBUG] [Thread-114148] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:28:11.206 [DEBUG] [Thread-114148] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:28:11.206 [DEBUG] [Thread-114148] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:28:11.206 [DEBUG] [Thread-114148] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:28:11.206 [DEBUG] [Thread-114148] [transport.py] [_log()] Compression: none
2025-11-03T10:28:11.206 [DEBUG] [Thread-114148] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:28:11.227 [DEBUG] [Thread-114148] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:28:11.228 [DEBUG] [Thread-114148] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:28:11.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:28:11.230 [DEBUG] [Thread-114148] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:28:11.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:28:11.232 [DEBUG] [Thread-114148] [transport.py] [_log()] userauth is OK
2025-11-03T10:28:11.233 [DEBUG] [Thread-114148] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:28:11.233 [DEBUG] [Thread-114148] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:28:11.233 [DEBUG] [Thread-114148] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:28:11.233 [DEBUG] [Thread-114148] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:28:11.271 [INFO] [Thread-114148] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:28:11.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:28:12.018 [DEBUG] [Thread-114148] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:28:12.018 [DEBUG] [Thread-114148] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:28:12.018 [DEBUG] [Thread-114148] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:28:12.059 [DEBUG] [Thread-114148] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:28:12.059 [DEBUG] [Thread-114148] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:28:12.062 [DEBUG] [Thread-114148] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:28:12.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:28:12.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:28:12.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:28:12.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:28:12.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:28:12.080 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:28:12.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:28:12.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:28:12.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:28:12.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.352176 -999.00  +22.70  24.88     12   -8.00 1 1 1 1 1   888    0 30.37 18.79 ----- 26.4 24.9 36.2 28.4 28.1 -29.6 26.9 -27.5 25.8 -28.0 26.6 -26.9
2025-11-03T10:28:12.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:28:12.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:28:12.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.352176
2025-11-03T10:28:12.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:28:12.082 [DEBUG] [Thread-114148] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:28:12.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:28:12.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:28:12.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:28:12.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:28:12.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:27:50', tmtdew=38.23, humidity=6.78, cloud=0.0, wind=20.01, temperature=23.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:27:08.006', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:28:12.170 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:28:12.184 [DEBUG] [Thread-114151] [transport.py] [_log()] starting thread (client mode): 0x1179bc10
2025-11-03T10:28:12.184 [DEBUG] [Thread-114151] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:28:12.202 [DEBUG] [Thread-114151] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:28:12.202 [INFO] [Thread-114151] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:28:12.210 [DEBUG] [Thread-114151] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:28:12.210 [DEBUG] [Thread-114151] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:28:12.210 [DEBUG] [Thread-114151] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:28:12.210 [DEBUG] [Thread-114151] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:28:12.210 [DEBUG] [Thread-114151] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:28:12.210 [DEBUG] [Thread-114151] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:28:12.210 [DEBUG] [Thread-114151] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:28:12.210 [DEBUG] [Thread-114151] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:28:12.210 [DEBUG] [Thread-114151] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:28:12.210 [DEBUG] [Thread-114151] [transport.py] [_log()] client lang: <none>
2025-11-03T10:28:12.210 [DEBUG] [Thread-114151] [transport.py] [_log()] server lang: <none>
2025-11-03T10:28:12.211 [DEBUG] [Thread-114151] [transport.py] [_log()] kex follows: False
2025-11-03T10:28:12.211 [DEBUG] [Thread-114151] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:28:12.211 [DEBUG] [Thread-114151] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:28:12.211 [DEBUG] [Thread-114151] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:28:12.211 [DEBUG] [Thread-114151] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:28:12.211 [DEBUG] [Thread-114151] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:28:12.211 [DEBUG] [Thread-114151] [transport.py] [_log()] Compression: none
2025-11-03T10:28:12.211 [DEBUG] [Thread-114151] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:28:12.270 [DEBUG] [Thread-114151] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:28:12.271 [DEBUG] [Thread-114151] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:28:12.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:28:12.273 [DEBUG] [Thread-114151] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:28:12.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:28:12.325 [DEBUG] [Thread-114151] [transport.py] [_log()] userauth is OK
2025-11-03T10:28:12.325 [DEBUG] [Thread-114151] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:28:12.325 [DEBUG] [Thread-114151] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:28:12.325 [DEBUG] [Thread-114151] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:28:12.325 [DEBUG] [Thread-114151] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:28:12.347 [INFO] [Thread-114151] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:28:12.347 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:28:12.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:28:13.249 [DEBUG] [Thread-114151] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:28:13.249 [DEBUG] [Thread-114151] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:28:13.297 [DEBUG] [Thread-114151] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:28:13.298 [DEBUG] [Thread-114151] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:28:13.308 [DEBUG] [Thread-114151] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:28:13.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:28:13.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:28:13.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:28:13.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:28:13.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:28:13.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:28:13.345 [DEBUG] [Thread-114151] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:28:21.703 [DEBUG] [Thread-114153 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:28:23.336 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:28:23.337 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:28:36.745 [DEBUG] [Thread-114154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:28:43.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:28:43.367 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:28:43.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:28:44.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 28, 22), 38.13, 6.8, 0.0, 15.42, 23.03, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:28:44.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:28:22
2025-11-03T10:28:44.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:28:44.314 [DEBUG] [Thread-114155] [transport.py] [_log()] starting thread (client mode): 0xed67fd0
2025-11-03T10:28:44.315 [DEBUG] [Thread-114155] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:28:44.335 [DEBUG] [Thread-114155] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:28:44.335 [INFO] [Thread-114155] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:28:44.338 [DEBUG] [Thread-114155] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:28:44.338 [DEBUG] [Thread-114155] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:28:44.338 [DEBUG] [Thread-114155] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:28:44.338 [DEBUG] [Thread-114155] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:28:44.338 [DEBUG] [Thread-114155] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:28:44.338 [DEBUG] [Thread-114155] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:28:44.338 [DEBUG] [Thread-114155] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:28:44.338 [DEBUG] [Thread-114155] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:28:44.338 [DEBUG] [Thread-114155] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:28:44.339 [DEBUG] [Thread-114155] [transport.py] [_log()] client lang: <none>
2025-11-03T10:28:44.339 [DEBUG] [Thread-114155] [transport.py] [_log()] server lang: <none>
2025-11-03T10:28:44.339 [DEBUG] [Thread-114155] [transport.py] [_log()] kex follows: False
2025-11-03T10:28:44.339 [DEBUG] [Thread-114155] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:28:44.339 [DEBUG] [Thread-114155] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:28:44.339 [DEBUG] [Thread-114155] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:28:44.339 [DEBUG] [Thread-114155] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:28:44.339 [DEBUG] [Thread-114155] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:28:44.339 [DEBUG] [Thread-114155] [transport.py] [_log()] Compression: none
2025-11-03T10:28:44.339 [DEBUG] [Thread-114155] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:28:44.356 [DEBUG] [Thread-114155] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:28:44.357 [DEBUG] [Thread-114155] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:28:44.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:28:44.358 [DEBUG] [Thread-114155] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:28:44.359 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:28:44.360 [DEBUG] [Thread-114155] [transport.py] [_log()] userauth is OK
2025-11-03T10:28:44.360 [DEBUG] [Thread-114155] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:28:44.360 [DEBUG] [Thread-114155] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:28:44.360 [DEBUG] [Thread-114155] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:28:44.360 [DEBUG] [Thread-114155] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:28:44.381 [INFO] [Thread-114155] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:28:44.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:28:44.995 [DEBUG] [Thread-114155] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:28:44.995 [DEBUG] [Thread-114155] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:28:44.995 [DEBUG] [Thread-114155] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:28:45.035 [DEBUG] [Thread-114155] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:28:45.035 [DEBUG] [Thread-114155] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:28:45.038 [DEBUG] [Thread-114155] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:28:45.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:28:45.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:28:45.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:28:45.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:28:45.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:28:45.060 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:28:45.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:28:45.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:28:45.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:28:45.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.352871 -999.00  +22.70  37.23     11   -8.20 1 1 2 1 1   888    0 30.65 26.89 ----- 38.9 37.2 56.0 40.6 28.0 -30.6 26.9 -28.1 25.7 -28.4 26.7 -27.1
2025-11-03T10:28:45.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:28:45.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:28:45.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.352871
2025-11-03T10:28:45.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:28:45.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:28:45.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:28:45.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:28:45.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:28:45.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:28:22', tmtdew=38.13, humidity=6.8, cloud=0.0, wind=15.42, temperature=23.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:28:08.054', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:28:45.062 [DEBUG] [Thread-114155] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:28:45.148 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:28:45.162 [DEBUG] [Thread-114158] [transport.py] [_log()] starting thread (client mode): 0xed67610
2025-11-03T10:28:45.162 [DEBUG] [Thread-114158] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:28:45.177 [DEBUG] [Thread-114158] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:28:45.177 [INFO] [Thread-114158] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:28:45.185 [DEBUG] [Thread-114158] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:28:45.185 [DEBUG] [Thread-114158] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:28:45.185 [DEBUG] [Thread-114158] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:28:45.185 [DEBUG] [Thread-114158] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:28:45.185 [DEBUG] [Thread-114158] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:28:45.185 [DEBUG] [Thread-114158] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:28:45.186 [DEBUG] [Thread-114158] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:28:45.186 [DEBUG] [Thread-114158] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:28:45.186 [DEBUG] [Thread-114158] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:28:45.186 [DEBUG] [Thread-114158] [transport.py] [_log()] client lang: <none>
2025-11-03T10:28:45.186 [DEBUG] [Thread-114158] [transport.py] [_log()] server lang: <none>
2025-11-03T10:28:45.186 [DEBUG] [Thread-114158] [transport.py] [_log()] kex follows: False
2025-11-03T10:28:45.186 [DEBUG] [Thread-114158] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:28:45.186 [DEBUG] [Thread-114158] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:28:45.186 [DEBUG] [Thread-114158] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:28:45.187 [DEBUG] [Thread-114158] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:28:45.187 [DEBUG] [Thread-114158] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:28:45.187 [DEBUG] [Thread-114158] [transport.py] [_log()] Compression: none
2025-11-03T10:28:45.187 [DEBUG] [Thread-114158] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:28:45.245 [DEBUG] [Thread-114158] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:28:45.246 [DEBUG] [Thread-114158] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:28:45.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:28:45.247 [DEBUG] [Thread-114158] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:28:45.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:28:45.301 [DEBUG] [Thread-114158] [transport.py] [_log()] userauth is OK
2025-11-03T10:28:45.301 [DEBUG] [Thread-114158] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:28:45.301 [DEBUG] [Thread-114158] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:28:45.301 [DEBUG] [Thread-114158] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:28:45.301 [DEBUG] [Thread-114158] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:28:45.318 [INFO] [Thread-114158] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:28:45.319 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:28:45.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:28:46.170 [DEBUG] [Thread-114158] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:28:46.170 [DEBUG] [Thread-114158] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:28:46.218 [DEBUG] [Thread-114158] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:28:46.218 [DEBUG] [Thread-114158] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:28:46.226 [DEBUG] [Thread-114158] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:28:46.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:28:46.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:28:46.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:28:46.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:28:46.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:28:46.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:28:46.258 [DEBUG] [Thread-114158] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:28:51.784 [DEBUG] [Thread-114160 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:28:52.929 [DEBUG] [Thread-114161 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:29:06.844 [DEBUG] [Thread-114162 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:29:16.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:29:16.281 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:29:16.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:29:16.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 28, 54), 38.66, 6.28, 0.0, 20.82, 23.13, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:29:16.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:28:54
2025-11-03T10:29:17.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:29:17.217 [DEBUG] [Thread-114163] [transport.py] [_log()] starting thread (client mode): 0xed2faf0
2025-11-03T10:29:17.217 [DEBUG] [Thread-114163] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:29:17.238 [DEBUG] [Thread-114163] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:29:17.238 [INFO] [Thread-114163] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:29:17.241 [DEBUG] [Thread-114163] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:29:17.241 [DEBUG] [Thread-114163] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:29:17.241 [DEBUG] [Thread-114163] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:29:17.241 [DEBUG] [Thread-114163] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:29:17.242 [DEBUG] [Thread-114163] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:29:17.242 [DEBUG] [Thread-114163] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:29:17.242 [DEBUG] [Thread-114163] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:29:17.242 [DEBUG] [Thread-114163] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:29:17.242 [DEBUG] [Thread-114163] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:29:17.242 [DEBUG] [Thread-114163] [transport.py] [_log()] client lang: <none>
2025-11-03T10:29:17.242 [DEBUG] [Thread-114163] [transport.py] [_log()] server lang: <none>
2025-11-03T10:29:17.242 [DEBUG] [Thread-114163] [transport.py] [_log()] kex follows: False
2025-11-03T10:29:17.242 [DEBUG] [Thread-114163] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:29:17.242 [DEBUG] [Thread-114163] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:29:17.242 [DEBUG] [Thread-114163] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:29:17.242 [DEBUG] [Thread-114163] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:29:17.242 [DEBUG] [Thread-114163] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:29:17.242 [DEBUG] [Thread-114163] [transport.py] [_log()] Compression: none
2025-11-03T10:29:17.242 [DEBUG] [Thread-114163] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:29:17.258 [DEBUG] [Thread-114163] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:29:17.258 [DEBUG] [Thread-114163] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:29:17.258 [DEBUG] [Thread-114163] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:29:17.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:29:17.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:29:17.259 [DEBUG] [Thread-114163] [transport.py] [_log()] userauth is OK
2025-11-03T10:29:17.259 [DEBUG] [Thread-114163] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:29:17.259 [DEBUG] [Thread-114163] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:29:17.259 [DEBUG] [Thread-114163] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:29:17.259 [DEBUG] [Thread-114163] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:29:17.271 [INFO] [Thread-114163] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:29:17.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:29:18.101 [DEBUG] [Thread-114163] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:29:18.101 [DEBUG] [Thread-114163] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:29:18.102 [DEBUG] [Thread-114163] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:29:18.142 [DEBUG] [Thread-114163] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:29:18.142 [DEBUG] [Thread-114163] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:29:18.145 [DEBUG] [Thread-114163] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:29:18.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:29:18.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:29:18.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:29:18.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:29:18.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:29:18.177 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:29:18.177 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:29:18.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:29:18.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:29:18.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.353218 -999.00  +22.00  25.41     12   -8.40 1 1 1 1 1   888    0 30.94 30.66 ----- 26.7 25.4 54.0 40.1 27.9 -29.0 26.9 -30.4 25.6 -30.7 26.6 -28.9
2025-11-03T10:29:18.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:29:18.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:29:18.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.353218
2025-11-03T10:29:18.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:29:18.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:29:18.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:29:18.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:29:18.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:29:18.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:28:54', tmtdew=38.66, humidity=6.28, cloud=0.0, wind=20.82, temperature=23.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:28:38.035', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:29:18.181 [DEBUG] [Thread-114163] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:29:18.262 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:29:18.275 [DEBUG] [Thread-114166] [transport.py] [_log()] starting thread (client mode): 0xed66ec0
2025-11-03T10:29:18.275 [DEBUG] [Thread-114166] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:29:18.289 [DEBUG] [Thread-114166] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:29:18.289 [INFO] [Thread-114166] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:29:18.298 [DEBUG] [Thread-114166] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:29:18.298 [DEBUG] [Thread-114166] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:29:18.298 [DEBUG] [Thread-114166] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:29:18.298 [DEBUG] [Thread-114166] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:29:18.299 [DEBUG] [Thread-114166] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:29:18.299 [DEBUG] [Thread-114166] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:29:18.299 [DEBUG] [Thread-114166] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:29:18.299 [DEBUG] [Thread-114166] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:29:18.299 [DEBUG] [Thread-114166] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:29:18.299 [DEBUG] [Thread-114166] [transport.py] [_log()] client lang: <none>
2025-11-03T10:29:18.299 [DEBUG] [Thread-114166] [transport.py] [_log()] server lang: <none>
2025-11-03T10:29:18.299 [DEBUG] [Thread-114166] [transport.py] [_log()] kex follows: False
2025-11-03T10:29:18.299 [DEBUG] [Thread-114166] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:29:18.299 [DEBUG] [Thread-114166] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:29:18.299 [DEBUG] [Thread-114166] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:29:18.299 [DEBUG] [Thread-114166] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:29:18.299 [DEBUG] [Thread-114166] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:29:18.308 [DEBUG] [Thread-114166] [transport.py] [_log()] Compression: none
2025-11-03T10:29:18.308 [DEBUG] [Thread-114166] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:29:18.367 [DEBUG] [Thread-114166] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:29:18.367 [DEBUG] [Thread-114166] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:29:18.367 [DEBUG] [Thread-114166] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:29:18.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:29:18.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:29:18.429 [DEBUG] [Thread-114166] [transport.py] [_log()] userauth is OK
2025-11-03T10:29:18.429 [DEBUG] [Thread-114166] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:29:18.429 [DEBUG] [Thread-114166] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:29:18.429 [DEBUG] [Thread-114166] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:29:18.429 [DEBUG] [Thread-114166] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:29:18.443 [INFO] [Thread-114166] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:29:18.443 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:29:18.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:29:19.301 [DEBUG] [Thread-114166] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:29:19.302 [DEBUG] [Thread-114166] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:29:19.351 [DEBUG] [Thread-114166] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:29:19.352 [DEBUG] [Thread-114166] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:29:19.361 [DEBUG] [Thread-114166] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:29:19.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:29:19.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:29:19.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:29:19.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:29:19.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:29:19.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:29:19.399 [DEBUG] [Thread-114166] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:29:21.892 [DEBUG] [Thread-114168 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:29:23.476 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:29:23.477 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:29:36.945 [DEBUG] [Thread-114169 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:29:49.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:29:49.403 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:29:49.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:29:50.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 29, 27), 38.3, 6.46, 0.0, 28.81, 23.02, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:29:50.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:29:27
2025-11-03T10:29:50.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:29:50.351 [DEBUG] [Thread-114170] [transport.py] [_log()] starting thread (client mode): 0xed2f880
2025-11-03T10:29:50.352 [DEBUG] [Thread-114170] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:29:50.362 [DEBUG] [Thread-114170] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:29:50.362 [INFO] [Thread-114170] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:29:50.364 [DEBUG] [Thread-114170] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:29:50.364 [DEBUG] [Thread-114170] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:29:50.364 [DEBUG] [Thread-114170] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:29:50.364 [DEBUG] [Thread-114170] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:29:50.364 [DEBUG] [Thread-114170] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:29:50.365 [DEBUG] [Thread-114170] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:29:50.365 [DEBUG] [Thread-114170] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:29:50.365 [DEBUG] [Thread-114170] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:29:50.365 [DEBUG] [Thread-114170] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:29:50.365 [DEBUG] [Thread-114170] [transport.py] [_log()] client lang: <none>
2025-11-03T10:29:50.365 [DEBUG] [Thread-114170] [transport.py] [_log()] server lang: <none>
2025-11-03T10:29:50.365 [DEBUG] [Thread-114170] [transport.py] [_log()] kex follows: False
2025-11-03T10:29:50.365 [DEBUG] [Thread-114170] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:29:50.365 [DEBUG] [Thread-114170] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:29:50.365 [DEBUG] [Thread-114170] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:29:50.365 [DEBUG] [Thread-114170] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:29:50.365 [DEBUG] [Thread-114170] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:29:50.365 [DEBUG] [Thread-114170] [transport.py] [_log()] Compression: none
2025-11-03T10:29:50.365 [DEBUG] [Thread-114170] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:29:50.375 [DEBUG] [Thread-114170] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:29:50.376 [DEBUG] [Thread-114170] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:29:50.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:29:50.377 [DEBUG] [Thread-114170] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:29:50.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:29:50.379 [DEBUG] [Thread-114170] [transport.py] [_log()] userauth is OK
2025-11-03T10:29:50.379 [DEBUG] [Thread-114170] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:29:50.379 [DEBUG] [Thread-114170] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:29:50.379 [DEBUG] [Thread-114170] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:29:50.380 [DEBUG] [Thread-114170] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:29:50.402 [INFO] [Thread-114170] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:29:50.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:29:51.029 [DEBUG] [Thread-114170] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:29:51.030 [DEBUG] [Thread-114170] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:29:51.030 [DEBUG] [Thread-114170] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:29:51.070 [DEBUG] [Thread-114170] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:29:51.070 [DEBUG] [Thread-114170] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:29:51.074 [DEBUG] [Thread-114170] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:29:51.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:29:51.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:29:51.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:29:51.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:29:51.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:29:51.096 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:29:51.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:29:51.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:29:51.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:29:51.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.353565 -999.00  +21.80  26.82     12   -8.40 1 1 1 1 1   888    0 31.20 35.60 ----- 30.7 26.8 51.4 31.9 27.8 -29.5 26.8 -29.6 25.6 -29.7 26.6 -28.6
2025-11-03T10:29:51.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:29:51.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:29:51.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.353565
2025-11-03T10:29:51.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:29:51.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:29:51.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:29:51.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:29:51.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:29:51.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:29:27', tmtdew=38.3, humidity=6.46, cloud=0.0, wind=28.81, temperature=23.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:29:08.016', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:29:51.100 [DEBUG] [Thread-114170] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:29:51.192 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:29:51.204 [DEBUG] [Thread-114173] [transport.py] [_log()] starting thread (client mode): 0xed43a90
2025-11-03T10:29:51.204 [DEBUG] [Thread-114173] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:29:51.219 [DEBUG] [Thread-114173] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:29:51.219 [INFO] [Thread-114173] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:29:51.226 [DEBUG] [Thread-114173] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:29:51.227 [DEBUG] [Thread-114173] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:29:51.227 [DEBUG] [Thread-114173] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:29:51.227 [DEBUG] [Thread-114173] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:29:51.227 [DEBUG] [Thread-114173] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:29:51.227 [DEBUG] [Thread-114173] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:29:51.227 [DEBUG] [Thread-114173] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:29:51.227 [DEBUG] [Thread-114173] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:29:51.227 [DEBUG] [Thread-114173] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:29:51.227 [DEBUG] [Thread-114173] [transport.py] [_log()] client lang: <none>
2025-11-03T10:29:51.227 [DEBUG] [Thread-114173] [transport.py] [_log()] server lang: <none>
2025-11-03T10:29:51.227 [DEBUG] [Thread-114173] [transport.py] [_log()] kex follows: False
2025-11-03T10:29:51.227 [DEBUG] [Thread-114173] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:29:51.227 [DEBUG] [Thread-114173] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:29:51.227 [DEBUG] [Thread-114173] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:29:51.227 [DEBUG] [Thread-114173] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:29:51.227 [DEBUG] [Thread-114173] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:29:51.227 [DEBUG] [Thread-114173] [transport.py] [_log()] Compression: none
2025-11-03T10:29:51.227 [DEBUG] [Thread-114173] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:29:51.290 [DEBUG] [Thread-114173] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:29:51.290 [DEBUG] [Thread-114173] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:29:51.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:29:51.291 [DEBUG] [Thread-114173] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:29:51.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:29:51.349 [DEBUG] [Thread-114173] [transport.py] [_log()] userauth is OK
2025-11-03T10:29:51.350 [DEBUG] [Thread-114173] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:29:51.350 [DEBUG] [Thread-114173] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:29:51.350 [DEBUG] [Thread-114173] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:29:51.350 [DEBUG] [Thread-114173] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:29:51.369 [INFO] [Thread-114173] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:29:51.369 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:29:51.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:29:51.979 [DEBUG] [Thread-114175 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:29:52.215 [DEBUG] [Thread-114173] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:29:52.215 [DEBUG] [Thread-114173] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:29:52.263 [DEBUG] [Thread-114173] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:29:52.263 [DEBUG] [Thread-114173] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:29:52.272 [DEBUG] [Thread-114173] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:29:52.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:29:52.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:29:52.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:29:52.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:29:52.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:29:52.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:29:52.309 [DEBUG] [Thread-114173] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:29:52.983 [DEBUG] [Thread-114176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:30:07.039 [DEBUG] [Thread-114177 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:30:22.071 [DEBUG] [Thread-114178 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:30:22.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:30:22.331 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:30:22.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:30:22.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 29, 59), 37.89, 6.94, 0.0, 23.71, 22.5, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:30:22.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:29:59
2025-11-03T10:30:23.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:30:23.277 [DEBUG] [Thread-114179] [transport.py] [_log()] starting thread (client mode): 0xed2fa90
2025-11-03T10:30:23.277 [DEBUG] [Thread-114179] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:30:23.298 [DEBUG] [Thread-114179] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:30:23.298 [INFO] [Thread-114179] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:30:23.301 [DEBUG] [Thread-114179] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:30:23.301 [DEBUG] [Thread-114179] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:30:23.301 [DEBUG] [Thread-114179] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:30:23.301 [DEBUG] [Thread-114179] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:30:23.301 [DEBUG] [Thread-114179] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:30:23.301 [DEBUG] [Thread-114179] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:30:23.301 [DEBUG] [Thread-114179] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:30:23.301 [DEBUG] [Thread-114179] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:30:23.301 [DEBUG] [Thread-114179] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:30:23.301 [DEBUG] [Thread-114179] [transport.py] [_log()] client lang: <none>
2025-11-03T10:30:23.301 [DEBUG] [Thread-114179] [transport.py] [_log()] server lang: <none>
2025-11-03T10:30:23.301 [DEBUG] [Thread-114179] [transport.py] [_log()] kex follows: False
2025-11-03T10:30:23.301 [DEBUG] [Thread-114179] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:30:23.301 [DEBUG] [Thread-114179] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:30:23.301 [DEBUG] [Thread-114179] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:30:23.301 [DEBUG] [Thread-114179] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:30:23.301 [DEBUG] [Thread-114179] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:30:23.301 [DEBUG] [Thread-114179] [transport.py] [_log()] Compression: none
2025-11-03T10:30:23.302 [DEBUG] [Thread-114179] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:30:23.324 [DEBUG] [Thread-114179] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:30:23.325 [DEBUG] [Thread-114179] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:30:23.326 [DEBUG] [Thread-114179] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:30:23.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:30:23.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:30:23.328 [DEBUG] [Thread-114179] [transport.py] [_log()] userauth is OK
2025-11-03T10:30:23.328 [DEBUG] [Thread-114179] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:30:23.328 [DEBUG] [Thread-114179] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:30:23.328 [DEBUG] [Thread-114179] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:30:23.328 [DEBUG] [Thread-114179] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:30:23.364 [INFO] [Thread-114179] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:30:23.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:30:23.616 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:30:23.617 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:30:24.018 [DEBUG] [Thread-114179] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:30:24.018 [DEBUG] [Thread-114179] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:30:24.018 [DEBUG] [Thread-114179] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:30:24.058 [DEBUG] [Thread-114179] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:30:24.058 [DEBUG] [Thread-114179] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:30:24.061 [DEBUG] [Thread-114179] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:30:24.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:30:24.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:30:24.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:30:24.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:30:24.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:30:24.079 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:30:24.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:30:24.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:30:24.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:30:24.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.353913 -999.00  +21.80  32.54     12   -8.20 1 1 2 1 1   888    0 30.86 34.82 ----- 36.7 32.5 49.6 39.7 27.7 -29.7 26.7 -29.9 25.6 -28.4 26.6 -27.8
2025-11-03T10:30:24.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:30:24.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:30:24.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.353913
2025-11-03T10:30:24.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:30:24.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:30:24.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:30:24.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:30:24.088 [DEBUG] [Thread-114179] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:30:24.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:30:24.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:29:59', tmtdew=37.89, humidity=6.94, cloud=0.0, wind=23.71, temperature=22.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:29:38.083', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:30:24.161 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:30:24.175 [DEBUG] [Thread-114182] [transport.py] [_log()] starting thread (client mode): 0x11798d60
2025-11-03T10:30:24.175 [DEBUG] [Thread-114182] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:30:24.189 [DEBUG] [Thread-114182] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:30:24.189 [INFO] [Thread-114182] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:30:24.197 [DEBUG] [Thread-114182] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:30:24.197 [DEBUG] [Thread-114182] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:30:24.198 [DEBUG] [Thread-114182] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:30:24.198 [DEBUG] [Thread-114182] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:30:24.198 [DEBUG] [Thread-114182] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:30:24.198 [DEBUG] [Thread-114182] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:30:24.198 [DEBUG] [Thread-114182] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:30:24.198 [DEBUG] [Thread-114182] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:30:24.198 [DEBUG] [Thread-114182] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:30:24.198 [DEBUG] [Thread-114182] [transport.py] [_log()] client lang: <none>
2025-11-03T10:30:24.198 [DEBUG] [Thread-114182] [transport.py] [_log()] server lang: <none>
2025-11-03T10:30:24.198 [DEBUG] [Thread-114182] [transport.py] [_log()] kex follows: False
2025-11-03T10:30:24.198 [DEBUG] [Thread-114182] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:30:24.198 [DEBUG] [Thread-114182] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:30:24.198 [DEBUG] [Thread-114182] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:30:24.198 [DEBUG] [Thread-114182] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:30:24.198 [DEBUG] [Thread-114182] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:30:24.198 [DEBUG] [Thread-114182] [transport.py] [_log()] Compression: none
2025-11-03T10:30:24.198 [DEBUG] [Thread-114182] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:30:24.266 [DEBUG] [Thread-114182] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:30:24.267 [DEBUG] [Thread-114182] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:30:24.267 [DEBUG] [Thread-114182] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:30:24.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:30:24.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:30:24.324 [DEBUG] [Thread-114182] [transport.py] [_log()] userauth is OK
2025-11-03T10:30:24.325 [DEBUG] [Thread-114182] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:30:24.325 [DEBUG] [Thread-114182] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:30:24.325 [DEBUG] [Thread-114182] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:30:24.325 [DEBUG] [Thread-114182] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:30:24.338 [INFO] [Thread-114182] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:30:24.339 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:30:24.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:30:25.174 [DEBUG] [Thread-114182] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:30:25.174 [DEBUG] [Thread-114182] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:30:25.222 [DEBUG] [Thread-114182] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:30:25.222 [DEBUG] [Thread-114182] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:30:25.232 [DEBUG] [Thread-114182] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:30:25.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:30:25.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:30:25.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:30:25.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:30:25.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:30:25.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:30:25.268 [DEBUG] [Thread-114182] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:30:37.105 [DEBUG] [Thread-114184 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:30:52.161 [DEBUG] [Thread-114185 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:30:53.027 [DEBUG] [Thread-114186 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:30:55.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:30:55.261 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:30:55.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:30:55.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 30, 31), 37.86, 6.94, 0.0, 22.46, 22.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:30:55.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:30:31
2025-11-03T10:30:56.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:30:56.246 [DEBUG] [Thread-114187] [transport.py] [_log()] starting thread (client mode): 0xed35c00
2025-11-03T10:30:56.246 [DEBUG] [Thread-114187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:30:56.264 [DEBUG] [Thread-114187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:30:56.264 [INFO] [Thread-114187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:30:56.266 [DEBUG] [Thread-114187] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:30:56.266 [DEBUG] [Thread-114187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:30:56.266 [DEBUG] [Thread-114187] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:30:56.266 [DEBUG] [Thread-114187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:30:56.266 [DEBUG] [Thread-114187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:30:56.266 [DEBUG] [Thread-114187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:30:56.266 [DEBUG] [Thread-114187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:30:56.266 [DEBUG] [Thread-114187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:30:56.266 [DEBUG] [Thread-114187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:30:56.266 [DEBUG] [Thread-114187] [transport.py] [_log()] client lang: <none>
2025-11-03T10:30:56.266 [DEBUG] [Thread-114187] [transport.py] [_log()] server lang: <none>
2025-11-03T10:30:56.266 [DEBUG] [Thread-114187] [transport.py] [_log()] kex follows: False
2025-11-03T10:30:56.266 [DEBUG] [Thread-114187] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:30:56.266 [DEBUG] [Thread-114187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:30:56.266 [DEBUG] [Thread-114187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:30:56.266 [DEBUG] [Thread-114187] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:30:56.266 [DEBUG] [Thread-114187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:30:56.266 [DEBUG] [Thread-114187] [transport.py] [_log()] Compression: none
2025-11-03T10:30:56.267 [DEBUG] [Thread-114187] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:30:56.275 [DEBUG] [Thread-114187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:30:56.276 [DEBUG] [Thread-114187] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:30:56.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:30:56.276 [DEBUG] [Thread-114187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:30:56.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:30:56.277 [DEBUG] [Thread-114187] [transport.py] [_log()] userauth is OK
2025-11-03T10:30:56.277 [DEBUG] [Thread-114187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:30:56.277 [DEBUG] [Thread-114187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:30:56.277 [DEBUG] [Thread-114187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:30:56.277 [DEBUG] [Thread-114187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:30:56.289 [INFO] [Thread-114187] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:30:56.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:30:56.956 [DEBUG] [Thread-114187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:30:56.956 [DEBUG] [Thread-114187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:30:56.956 [DEBUG] [Thread-114187] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:30:56.997 [DEBUG] [Thread-114187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:30:56.998 [DEBUG] [Thread-114187] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:30:57.000 [DEBUG] [Thread-114187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:30:57.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:30:57.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:30:57.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:30:57.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:30:57.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:30:57.019 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:30:57.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:30:57.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:30:57.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:30:57.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.354259 -999.00  +21.60  24.54     12   -8.60 1 1 1 1 1   888    0 30.99 35.11 ----- 23.3 24.5 35.6 44.0 27.6 -29.6 26.7 -29.6 25.6 -29.0 26.5 -27.7
2025-11-03T10:30:57.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:30:57.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:30:57.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.354259
2025-11-03T10:30:57.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:30:57.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:30:57.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:30:57.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:30:57.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:30:57.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:30:31', tmtdew=37.86, humidity=6.94, cloud=0.0, wind=22.46, temperature=22.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:30:07.978', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:30:57.020 [DEBUG] [Thread-114187] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:30:57.105 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:30:57.114 [DEBUG] [Thread-114190] [transport.py] [_log()] starting thread (client mode): 0xedb0430
2025-11-03T10:30:57.114 [DEBUG] [Thread-114190] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:30:57.128 [DEBUG] [Thread-114190] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:30:57.128 [INFO] [Thread-114190] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:30:57.136 [DEBUG] [Thread-114190] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:30:57.136 [DEBUG] [Thread-114190] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:30:57.136 [DEBUG] [Thread-114190] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:30:57.136 [DEBUG] [Thread-114190] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:30:57.136 [DEBUG] [Thread-114190] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:30:57.136 [DEBUG] [Thread-114190] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:30:57.136 [DEBUG] [Thread-114190] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:30:57.136 [DEBUG] [Thread-114190] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:30:57.136 [DEBUG] [Thread-114190] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:30:57.136 [DEBUG] [Thread-114190] [transport.py] [_log()] client lang: <none>
2025-11-03T10:30:57.136 [DEBUG] [Thread-114190] [transport.py] [_log()] server lang: <none>
2025-11-03T10:30:57.136 [DEBUG] [Thread-114190] [transport.py] [_log()] kex follows: False
2025-11-03T10:30:57.136 [DEBUG] [Thread-114190] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:30:57.136 [DEBUG] [Thread-114190] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:30:57.136 [DEBUG] [Thread-114190] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:30:57.136 [DEBUG] [Thread-114190] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:30:57.136 [DEBUG] [Thread-114190] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:30:57.136 [DEBUG] [Thread-114190] [transport.py] [_log()] Compression: none
2025-11-03T10:30:57.136 [DEBUG] [Thread-114190] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:30:57.195 [DEBUG] [Thread-114190] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:30:57.195 [DEBUG] [Thread-114190] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:30:57.195 [DEBUG] [Thread-114190] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:30:57.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:30:57.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:30:57.254 [DEBUG] [Thread-114190] [transport.py] [_log()] userauth is OK
2025-11-03T10:30:57.254 [DEBUG] [Thread-114190] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:30:57.254 [DEBUG] [Thread-114190] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:30:57.254 [DEBUG] [Thread-114190] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:30:57.254 [DEBUG] [Thread-114190] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:30:57.272 [INFO] [Thread-114190] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:30:57.272 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:30:57.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:30:58.089 [DEBUG] [Thread-114190] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:30:58.090 [DEBUG] [Thread-114190] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:30:58.137 [DEBUG] [Thread-114190] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:30:58.137 [DEBUG] [Thread-114190] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:30:58.146 [DEBUG] [Thread-114190] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:30:58.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:30:58.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:30:58.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:30:58.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:30:58.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:30:58.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:30:58.179 [DEBUG] [Thread-114190] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:31:07.190 [DEBUG] [Thread-114192 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:31:22.242 [DEBUG] [Thread-114193 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:31:23.757 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:31:23.758 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:31:28.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:31:28.203 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:31:28.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:31:28.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 31, 4), 37.8, 6.98, 0.0, 23.41, 22.37, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:31:28.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:31:04
2025-11-03T10:31:29.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:31:29.198 [DEBUG] [Thread-114194] [transport.py] [_log()] starting thread (client mode): 0xedb1c60
2025-11-03T10:31:29.198 [DEBUG] [Thread-114194] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:31:29.218 [DEBUG] [Thread-114194] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:31:29.218 [INFO] [Thread-114194] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:31:29.221 [DEBUG] [Thread-114194] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:31:29.221 [DEBUG] [Thread-114194] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:31:29.221 [DEBUG] [Thread-114194] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:31:29.221 [DEBUG] [Thread-114194] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:31:29.221 [DEBUG] [Thread-114194] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:31:29.221 [DEBUG] [Thread-114194] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:31:29.222 [DEBUG] [Thread-114194] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:31:29.222 [DEBUG] [Thread-114194] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:31:29.222 [DEBUG] [Thread-114194] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:31:29.222 [DEBUG] [Thread-114194] [transport.py] [_log()] client lang: <none>
2025-11-03T10:31:29.222 [DEBUG] [Thread-114194] [transport.py] [_log()] server lang: <none>
2025-11-03T10:31:29.222 [DEBUG] [Thread-114194] [transport.py] [_log()] kex follows: False
2025-11-03T10:31:29.222 [DEBUG] [Thread-114194] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:31:29.222 [DEBUG] [Thread-114194] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:31:29.222 [DEBUG] [Thread-114194] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:31:29.222 [DEBUG] [Thread-114194] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:31:29.222 [DEBUG] [Thread-114194] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:31:29.223 [DEBUG] [Thread-114194] [transport.py] [_log()] Compression: none
2025-11-03T10:31:29.223 [DEBUG] [Thread-114194] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:31:29.241 [DEBUG] [Thread-114194] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:31:29.241 [DEBUG] [Thread-114194] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:31:29.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:31:29.242 [DEBUG] [Thread-114194] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:31:29.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:31:29.245 [DEBUG] [Thread-114194] [transport.py] [_log()] userauth is OK
2025-11-03T10:31:29.245 [DEBUG] [Thread-114194] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:31:29.245 [DEBUG] [Thread-114194] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:31:29.245 [DEBUG] [Thread-114194] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:31:29.245 [DEBUG] [Thread-114194] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:31:29.270 [INFO] [Thread-114194] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:31:29.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:31:29.895 [DEBUG] [Thread-114194] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:31:29.895 [DEBUG] [Thread-114194] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:31:29.895 [DEBUG] [Thread-114194] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:31:29.936 [DEBUG] [Thread-114194] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:31:29.937 [DEBUG] [Thread-114194] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:31:29.940 [DEBUG] [Thread-114194] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:31:29.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:31:29.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:31:29.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:31:29.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:31:29.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:31:29.965 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:31:29.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:31:29.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:31:29.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:31:29.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.354607 -999.00  +21.50  23.09     12   -8.50 1 1 1 1 1   888    0 31.29 35.73 ----- 20.7 23.1 56.4 28.0 27.8 -28.7 26.6 -28.8 25.5 -29.6 26.4 -28.1
2025-11-03T10:31:29.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:31:29.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:31:29.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.354607
2025-11-03T10:31:29.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:31:29.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:31:29.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:31:29.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:31:29.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:31:29.968 [DEBUG] [Thread-114194] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:31:29.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:31:04', tmtdew=37.8, humidity=6.98, cloud=0.0, wind=23.41, temperature=22.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:30:38.045', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:31:30.051 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:31:30.064 [DEBUG] [Thread-114197] [transport.py] [_log()] starting thread (client mode): 0xed64b50
2025-11-03T10:31:30.064 [DEBUG] [Thread-114197] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:31:30.079 [DEBUG] [Thread-114197] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:31:30.079 [INFO] [Thread-114197] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:31:30.087 [DEBUG] [Thread-114197] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:31:30.087 [DEBUG] [Thread-114197] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:31:30.087 [DEBUG] [Thread-114197] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:31:30.087 [DEBUG] [Thread-114197] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:31:30.087 [DEBUG] [Thread-114197] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:31:30.087 [DEBUG] [Thread-114197] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:31:30.087 [DEBUG] [Thread-114197] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:31:30.087 [DEBUG] [Thread-114197] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:31:30.087 [DEBUG] [Thread-114197] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:31:30.087 [DEBUG] [Thread-114197] [transport.py] [_log()] client lang: <none>
2025-11-03T10:31:30.087 [DEBUG] [Thread-114197] [transport.py] [_log()] server lang: <none>
2025-11-03T10:31:30.087 [DEBUG] [Thread-114197] [transport.py] [_log()] kex follows: False
2025-11-03T10:31:30.087 [DEBUG] [Thread-114197] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:31:30.087 [DEBUG] [Thread-114197] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:31:30.088 [DEBUG] [Thread-114197] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:31:30.088 [DEBUG] [Thread-114197] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:31:30.088 [DEBUG] [Thread-114197] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:31:30.088 [DEBUG] [Thread-114197] [transport.py] [_log()] Compression: none
2025-11-03T10:31:30.088 [DEBUG] [Thread-114197] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:31:30.150 [DEBUG] [Thread-114197] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:31:30.151 [DEBUG] [Thread-114197] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:31:30.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:31:30.152 [DEBUG] [Thread-114197] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:31:30.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:31:30.209 [DEBUG] [Thread-114197] [transport.py] [_log()] userauth is OK
2025-11-03T10:31:30.209 [DEBUG] [Thread-114197] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:31:30.209 [DEBUG] [Thread-114197] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:31:30.209 [DEBUG] [Thread-114197] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:31:30.210 [DEBUG] [Thread-114197] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:31:30.228 [INFO] [Thread-114197] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:31:30.229 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:31:30.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:31:31.110 [DEBUG] [Thread-114197] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:31:31.111 [DEBUG] [Thread-114197] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:31:31.162 [DEBUG] [Thread-114197] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:31:31.162 [DEBUG] [Thread-114197] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:31:31.172 [DEBUG] [Thread-114197] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:31:31.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:31:31.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:31:31.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:31:31.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:31:31.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:31:31.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:31:31.209 [DEBUG] [Thread-114197] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:31:37.275 [DEBUG] [Thread-114199 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:31:52.314 [DEBUG] [Thread-114200 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:31:53.211 [DEBUG] [Thread-114201 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:32:01.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:32:01.231 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:32:01.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:32:01.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 31, 36), 36.96, 7.08, 0.0, 20.82, 21.98, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:32:01.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:31:36
2025-11-03T10:32:02.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:32:02.193 [DEBUG] [Thread-114202] [transport.py] [_log()] starting thread (client mode): 0xed351b0
2025-11-03T10:32:02.193 [DEBUG] [Thread-114202] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:32:02.214 [DEBUG] [Thread-114202] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:32:02.215 [INFO] [Thread-114202] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:32:02.216 [DEBUG] [Thread-114202] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:32:02.216 [DEBUG] [Thread-114202] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:32:02.216 [DEBUG] [Thread-114202] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:32:02.216 [DEBUG] [Thread-114202] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:32:02.216 [DEBUG] [Thread-114202] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:32:02.216 [DEBUG] [Thread-114202] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:32:02.216 [DEBUG] [Thread-114202] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:32:02.217 [DEBUG] [Thread-114202] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:32:02.217 [DEBUG] [Thread-114202] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:32:02.217 [DEBUG] [Thread-114202] [transport.py] [_log()] client lang: <none>
2025-11-03T10:32:02.217 [DEBUG] [Thread-114202] [transport.py] [_log()] server lang: <none>
2025-11-03T10:32:02.217 [DEBUG] [Thread-114202] [transport.py] [_log()] kex follows: False
2025-11-03T10:32:02.217 [DEBUG] [Thread-114202] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:32:02.217 [DEBUG] [Thread-114202] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:32:02.217 [DEBUG] [Thread-114202] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:32:02.217 [DEBUG] [Thread-114202] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:32:02.217 [DEBUG] [Thread-114202] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:32:02.217 [DEBUG] [Thread-114202] [transport.py] [_log()] Compression: none
2025-11-03T10:32:02.217 [DEBUG] [Thread-114202] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:32:02.230 [DEBUG] [Thread-114202] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:32:02.231 [DEBUG] [Thread-114202] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:32:02.231 [DEBUG] [Thread-114202] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:32:02.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:32:02.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:32:02.232 [DEBUG] [Thread-114202] [transport.py] [_log()] userauth is OK
2025-11-03T10:32:02.232 [DEBUG] [Thread-114202] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:32:02.232 [DEBUG] [Thread-114202] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:32:02.232 [DEBUG] [Thread-114202] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:32:02.232 [DEBUG] [Thread-114202] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:32:02.242 [INFO] [Thread-114202] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:32:02.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:32:02.858 [DEBUG] [Thread-114202] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:32:02.858 [DEBUG] [Thread-114202] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:32:02.858 [DEBUG] [Thread-114202] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:32:02.898 [DEBUG] [Thread-114202] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:32:02.898 [DEBUG] [Thread-114202] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:32:02.900 [DEBUG] [Thread-114202] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:32:02.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:32:02.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:32:02.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:32:02.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:32:02.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:32:02.919 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:32:02.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:32:02.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:32:02.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:32:02.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.354954 -999.00  +21.90  26.92     12   -8.10 1 1 1 1 1   888    0 31.00 38.38 ----- 24.0 26.9 40.0 33.7 27.9 -28.8 26.6 -28.1 25.6 -27.9 26.5 -29.3
2025-11-03T10:32:02.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:32:02.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:32:02.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.354954
2025-11-03T10:32:02.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:32:02.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:32:02.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:32:02.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:32:02.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:32:02.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:31:36', tmtdew=36.96, humidity=7.08, cloud=0.0, wind=20.82, temperature=21.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:31:08.026', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:32:02.920 [DEBUG] [Thread-114202] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:32:02.992 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:32:03.005 [DEBUG] [Thread-114205] [transport.py] [_log()] starting thread (client mode): 0xed65780
2025-11-03T10:32:03.005 [DEBUG] [Thread-114205] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:32:03.021 [DEBUG] [Thread-114205] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:32:03.021 [INFO] [Thread-114205] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:32:03.028 [DEBUG] [Thread-114205] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:32:03.028 [DEBUG] [Thread-114205] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:32:03.028 [DEBUG] [Thread-114205] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:32:03.028 [DEBUG] [Thread-114205] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:32:03.028 [DEBUG] [Thread-114205] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:32:03.028 [DEBUG] [Thread-114205] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:32:03.028 [DEBUG] [Thread-114205] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:32:03.028 [DEBUG] [Thread-114205] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:32:03.028 [DEBUG] [Thread-114205] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:32:03.028 [DEBUG] [Thread-114205] [transport.py] [_log()] client lang: <none>
2025-11-03T10:32:03.028 [DEBUG] [Thread-114205] [transport.py] [_log()] server lang: <none>
2025-11-03T10:32:03.028 [DEBUG] [Thread-114205] [transport.py] [_log()] kex follows: False
2025-11-03T10:32:03.028 [DEBUG] [Thread-114205] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:32:03.028 [DEBUG] [Thread-114205] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:32:03.029 [DEBUG] [Thread-114205] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:32:03.029 [DEBUG] [Thread-114205] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:32:03.029 [DEBUG] [Thread-114205] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:32:03.029 [DEBUG] [Thread-114205] [transport.py] [_log()] Compression: none
2025-11-03T10:32:03.029 [DEBUG] [Thread-114205] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:32:03.086 [DEBUG] [Thread-114205] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:32:03.087 [DEBUG] [Thread-114205] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:32:03.087 [DEBUG] [Thread-114205] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:32:03.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:32:03.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:32:03.148 [DEBUG] [Thread-114205] [transport.py] [_log()] userauth is OK
2025-11-03T10:32:03.149 [DEBUG] [Thread-114205] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:32:03.149 [DEBUG] [Thread-114205] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:32:03.149 [DEBUG] [Thread-114205] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:32:03.149 [DEBUG] [Thread-114205] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:32:03.162 [INFO] [Thread-114205] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:32:03.162 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:32:03.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:32:04.021 [DEBUG] [Thread-114205] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:32:04.021 [DEBUG] [Thread-114205] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:32:04.069 [DEBUG] [Thread-114205] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:32:04.069 [DEBUG] [Thread-114205] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:32:04.078 [DEBUG] [Thread-114205] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:32:04.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:32:04.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:32:04.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:32:04.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:32:04.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:32:04.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:32:04.116 [DEBUG] [Thread-114205] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:32:07.356 [DEBUG] [Thread-114207 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:32:22.427 [DEBUG] [Thread-114208 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:32:23.898 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:32:23.899 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:32:34.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:32:34.139 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:32:34.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:32:34.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 32, 8), 37.15, 6.99, 0.0, 20.91, 22.18, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:32:34.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:32:08
2025-11-03T10:32:34.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:32:35.079 [DEBUG] [Thread-114209] [transport.py] [_log()] starting thread (client mode): 0xedb2d10
2025-11-03T10:32:35.079 [DEBUG] [Thread-114209] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:32:35.099 [DEBUG] [Thread-114209] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:32:35.099 [INFO] [Thread-114209] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:32:35.102 [DEBUG] [Thread-114209] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:32:35.102 [DEBUG] [Thread-114209] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:32:35.102 [DEBUG] [Thread-114209] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:32:35.102 [DEBUG] [Thread-114209] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:32:35.102 [DEBUG] [Thread-114209] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:32:35.102 [DEBUG] [Thread-114209] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:32:35.102 [DEBUG] [Thread-114209] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:32:35.102 [DEBUG] [Thread-114209] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:32:35.102 [DEBUG] [Thread-114209] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:32:35.102 [DEBUG] [Thread-114209] [transport.py] [_log()] client lang: <none>
2025-11-03T10:32:35.102 [DEBUG] [Thread-114209] [transport.py] [_log()] server lang: <none>
2025-11-03T10:32:35.102 [DEBUG] [Thread-114209] [transport.py] [_log()] kex follows: False
2025-11-03T10:32:35.102 [DEBUG] [Thread-114209] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:32:35.102 [DEBUG] [Thread-114209] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:32:35.102 [DEBUG] [Thread-114209] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:32:35.102 [DEBUG] [Thread-114209] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:32:35.102 [DEBUG] [Thread-114209] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:32:35.102 [DEBUG] [Thread-114209] [transport.py] [_log()] Compression: none
2025-11-03T10:32:35.102 [DEBUG] [Thread-114209] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:32:35.118 [DEBUG] [Thread-114209] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:32:35.118 [DEBUG] [Thread-114209] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:32:35.118 [DEBUG] [Thread-114209] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:32:35.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:32:35.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:32:35.119 [DEBUG] [Thread-114209] [transport.py] [_log()] userauth is OK
2025-11-03T10:32:35.119 [DEBUG] [Thread-114209] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:32:35.119 [DEBUG] [Thread-114209] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:32:35.119 [DEBUG] [Thread-114209] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:32:35.119 [DEBUG] [Thread-114209] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:32:35.129 [INFO] [Thread-114209] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:32:35.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:32:35.750 [DEBUG] [Thread-114209] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:32:35.750 [DEBUG] [Thread-114209] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:32:35.751 [DEBUG] [Thread-114209] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:32:35.791 [DEBUG] [Thread-114209] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:32:35.791 [DEBUG] [Thread-114209] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:32:35.794 [DEBUG] [Thread-114209] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:32:35.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:32:35.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:32:35.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:32:35.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:32:35.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:32:35.827 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:32:35.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:32:35.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:32:35.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:32:35.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.355649 -999.00  +21.80  19.50     12   -8.60 1 1 1 1 1   888    0 31.03 38.56 ----- 16.2 19.5 357.5 33.3 27.8 -29.1 26.7 -28.9 25.7 -28.8 26.4 -27.9
2025-11-03T10:32:35.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:32:35.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:32:35.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.355649
2025-11-03T10:32:35.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:32:35.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:32:35.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:32:35.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:32:35.829 [DEBUG] [Thread-114209] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:32:35.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:32:35.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:32:08', tmtdew=37.15, humidity=6.99, cloud=0.0, wind=20.91, temperature=22.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:32:08.074', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:32:35.906 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:32:35.918 [DEBUG] [Thread-114212] [transport.py] [_log()] starting thread (client mode): 0xed06b00
2025-11-03T10:32:35.919 [DEBUG] [Thread-114212] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:32:35.933 [DEBUG] [Thread-114212] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:32:35.934 [INFO] [Thread-114212] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:32:35.941 [DEBUG] [Thread-114212] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:32:35.942 [DEBUG] [Thread-114212] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:32:35.942 [DEBUG] [Thread-114212] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:32:35.942 [DEBUG] [Thread-114212] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:32:35.942 [DEBUG] [Thread-114212] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:32:35.942 [DEBUG] [Thread-114212] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:32:35.943 [DEBUG] [Thread-114212] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:32:35.943 [DEBUG] [Thread-114212] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:32:35.943 [DEBUG] [Thread-114212] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:32:35.943 [DEBUG] [Thread-114212] [transport.py] [_log()] client lang: <none>
2025-11-03T10:32:35.943 [DEBUG] [Thread-114212] [transport.py] [_log()] server lang: <none>
2025-11-03T10:32:35.943 [DEBUG] [Thread-114212] [transport.py] [_log()] kex follows: False
2025-11-03T10:32:35.943 [DEBUG] [Thread-114212] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:32:35.943 [DEBUG] [Thread-114212] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:32:35.943 [DEBUG] [Thread-114212] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:32:35.943 [DEBUG] [Thread-114212] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:32:35.943 [DEBUG] [Thread-114212] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:32:35.943 [DEBUG] [Thread-114212] [transport.py] [_log()] Compression: none
2025-11-03T10:32:35.943 [DEBUG] [Thread-114212] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:32:36.000 [DEBUG] [Thread-114212] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:32:36.001 [DEBUG] [Thread-114212] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:32:36.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:32:36.002 [DEBUG] [Thread-114212] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:32:36.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:32:36.057 [DEBUG] [Thread-114212] [transport.py] [_log()] userauth is OK
2025-11-03T10:32:36.057 [DEBUG] [Thread-114212] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:32:36.057 [DEBUG] [Thread-114212] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:32:36.057 [DEBUG] [Thread-114212] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:32:36.057 [DEBUG] [Thread-114212] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:32:36.076 [INFO] [Thread-114212] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:32:36.076 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:32:36.077 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:32:36.913 [DEBUG] [Thread-114212] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:32:36.913 [DEBUG] [Thread-114212] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:32:36.961 [DEBUG] [Thread-114212] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:32:36.961 [DEBUG] [Thread-114212] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:32:36.970 [DEBUG] [Thread-114212] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:32:36.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:32:36.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:32:36.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:32:37.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:32:37.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:32:37.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:32:37.016 [DEBUG] [Thread-114212] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:32:37.464 [DEBUG] [Thread-114214 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:32:52.531 [DEBUG] [Thread-114215 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:32:53.279 [DEBUG] [Thread-114216 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:33:07.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:33:07.022 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:33:07.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:33:07.561 [DEBUG] [Thread-114217 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:33:07.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 32, 40), 37.91, 6.85, 0.0, 19.9, 22.35, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:33:07.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:32:40
2025-11-03T10:33:07.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:33:07.972 [DEBUG] [Thread-114218] [transport.py] [_log()] starting thread (client mode): 0xed07550
2025-11-03T10:33:07.972 [DEBUG] [Thread-114218] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:33:07.990 [DEBUG] [Thread-114218] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:33:07.990 [INFO] [Thread-114218] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:33:08.000 [DEBUG] [Thread-114218] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:33:08.000 [DEBUG] [Thread-114218] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:33:08.000 [DEBUG] [Thread-114218] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:33:08.000 [DEBUG] [Thread-114218] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:33:08.000 [DEBUG] [Thread-114218] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:33:08.000 [DEBUG] [Thread-114218] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:33:08.001 [DEBUG] [Thread-114218] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:33:08.001 [DEBUG] [Thread-114218] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:33:08.001 [DEBUG] [Thread-114218] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:33:08.001 [DEBUG] [Thread-114218] [transport.py] [_log()] client lang: <none>
2025-11-03T10:33:08.001 [DEBUG] [Thread-114218] [transport.py] [_log()] server lang: <none>
2025-11-03T10:33:08.001 [DEBUG] [Thread-114218] [transport.py] [_log()] kex follows: False
2025-11-03T10:33:08.001 [DEBUG] [Thread-114218] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:33:08.001 [DEBUG] [Thread-114218] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:33:08.001 [DEBUG] [Thread-114218] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:33:08.001 [DEBUG] [Thread-114218] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:33:08.002 [DEBUG] [Thread-114218] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:33:08.002 [DEBUG] [Thread-114218] [transport.py] [_log()] Compression: none
2025-11-03T10:33:08.002 [DEBUG] [Thread-114218] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:33:08.013 [DEBUG] [Thread-114218] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:33:08.014 [DEBUG] [Thread-114218] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:33:08.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:33:08.015 [DEBUG] [Thread-114218] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:33:08.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:33:08.018 [DEBUG] [Thread-114218] [transport.py] [_log()] userauth is OK
2025-11-03T10:33:08.019 [DEBUG] [Thread-114218] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:33:08.019 [DEBUG] [Thread-114218] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:33:08.019 [DEBUG] [Thread-114218] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:33:08.019 [DEBUG] [Thread-114218] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:33:08.038 [INFO] [Thread-114218] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:33:08.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:33:08.706 [DEBUG] [Thread-114218] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:33:08.716 [DEBUG] [Thread-114218] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:33:08.716 [DEBUG] [Thread-114218] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:33:08.748 [DEBUG] [Thread-114218] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:33:08.748 [DEBUG] [Thread-114218] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:33:08.751 [DEBUG] [Thread-114218] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:33:08.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:33:08.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:33:08.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:33:08.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:33:08.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:33:08.777 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:33:08.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:33:08.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:33:08.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:33:08.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.355996 -999.00  +21.40  15.68     12   -8.50 1 1 1 1 1   888    0 31.09 40.78 ----- 14.2 15.7 22.0 24.8 27.9 -29.0 26.7 -27.9 25.7 -27.9 26.4 -29.9
2025-11-03T10:33:08.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:33:08.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:33:08.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.355996
2025-11-03T10:33:08.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:33:08.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:33:08.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:33:08.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:33:08.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:33:08.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:32:40', tmtdew=37.91, humidity=6.85, cloud=0.0, wind=19.9, temperature=22.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:32:38.054', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:33:08.780 [DEBUG] [Thread-114218] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:33:08.878 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:33:08.890 [DEBUG] [Thread-114221] [transport.py] [_log()] starting thread (client mode): 0xed67c70
2025-11-03T10:33:08.891 [DEBUG] [Thread-114221] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:33:08.905 [DEBUG] [Thread-114221] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:33:08.906 [INFO] [Thread-114221] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:33:08.915 [DEBUG] [Thread-114221] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:33:08.916 [DEBUG] [Thread-114221] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:33:08.916 [DEBUG] [Thread-114221] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:33:08.916 [DEBUG] [Thread-114221] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:33:08.916 [DEBUG] [Thread-114221] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:33:08.916 [DEBUG] [Thread-114221] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:33:08.916 [DEBUG] [Thread-114221] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:33:08.916 [DEBUG] [Thread-114221] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:33:08.916 [DEBUG] [Thread-114221] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:33:08.916 [DEBUG] [Thread-114221] [transport.py] [_log()] client lang: <none>
2025-11-03T10:33:08.916 [DEBUG] [Thread-114221] [transport.py] [_log()] server lang: <none>
2025-11-03T10:33:08.916 [DEBUG] [Thread-114221] [transport.py] [_log()] kex follows: False
2025-11-03T10:33:08.916 [DEBUG] [Thread-114221] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:33:08.916 [DEBUG] [Thread-114221] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:33:08.916 [DEBUG] [Thread-114221] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:33:08.916 [DEBUG] [Thread-114221] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:33:08.916 [DEBUG] [Thread-114221] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:33:08.916 [DEBUG] [Thread-114221] [transport.py] [_log()] Compression: none
2025-11-03T10:33:08.917 [DEBUG] [Thread-114221] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:33:08.980 [DEBUG] [Thread-114221] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:33:08.981 [DEBUG] [Thread-114221] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:33:08.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:33:08.982 [DEBUG] [Thread-114221] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:33:08.984 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:33:09.037 [DEBUG] [Thread-114221] [transport.py] [_log()] userauth is OK
2025-11-03T10:33:09.037 [DEBUG] [Thread-114221] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:33:09.037 [DEBUG] [Thread-114221] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:33:09.037 [DEBUG] [Thread-114221] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:33:09.038 [DEBUG] [Thread-114221] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:33:09.057 [INFO] [Thread-114221] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:33:09.057 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:33:09.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:33:10.010 [DEBUG] [Thread-114221] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:33:10.016 [DEBUG] [Thread-114221] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:33:10.058 [DEBUG] [Thread-114221] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:33:10.058 [DEBUG] [Thread-114221] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:33:10.068 [DEBUG] [Thread-114221] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:33:10.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:33:10.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:33:10.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:33:10.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:33:10.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:33:10.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:33:10.106 [DEBUG] [Thread-114221] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:33:22.590 [DEBUG] [Thread-114223 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:33:24.040 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:33:24.041 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:33:37.632 [DEBUG] [Thread-114224 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:33:40.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:33:40.129 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:33:40.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:33:40.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 33, 13), 37.62, 6.99, 0.0, 20.75, 22.25, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:33:40.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:33:13
2025-11-03T10:33:40.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:33:41.074 [DEBUG] [Thread-114225] [transport.py] [_log()] starting thread (client mode): 0x117993f0
2025-11-03T10:33:41.075 [DEBUG] [Thread-114225] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:33:41.095 [DEBUG] [Thread-114225] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:33:41.095 [INFO] [Thread-114225] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:33:41.098 [DEBUG] [Thread-114225] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:33:41.098 [DEBUG] [Thread-114225] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:33:41.098 [DEBUG] [Thread-114225] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:33:41.098 [DEBUG] [Thread-114225] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:33:41.098 [DEBUG] [Thread-114225] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:33:41.098 [DEBUG] [Thread-114225] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:33:41.098 [DEBUG] [Thread-114225] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:33:41.098 [DEBUG] [Thread-114225] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:33:41.098 [DEBUG] [Thread-114225] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:33:41.098 [DEBUG] [Thread-114225] [transport.py] [_log()] client lang: <none>
2025-11-03T10:33:41.098 [DEBUG] [Thread-114225] [transport.py] [_log()] server lang: <none>
2025-11-03T10:33:41.098 [DEBUG] [Thread-114225] [transport.py] [_log()] kex follows: False
2025-11-03T10:33:41.098 [DEBUG] [Thread-114225] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:33:41.098 [DEBUG] [Thread-114225] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:33:41.098 [DEBUG] [Thread-114225] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:33:41.099 [DEBUG] [Thread-114225] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:33:41.099 [DEBUG] [Thread-114225] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:33:41.099 [DEBUG] [Thread-114225] [transport.py] [_log()] Compression: none
2025-11-03T10:33:41.099 [DEBUG] [Thread-114225] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:33:41.116 [DEBUG] [Thread-114225] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:33:41.117 [DEBUG] [Thread-114225] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:33:41.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:33:41.118 [DEBUG] [Thread-114225] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:33:41.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:33:41.120 [DEBUG] [Thread-114225] [transport.py] [_log()] userauth is OK
2025-11-03T10:33:41.120 [DEBUG] [Thread-114225] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:33:41.120 [DEBUG] [Thread-114225] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:33:41.120 [DEBUG] [Thread-114225] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:33:41.120 [DEBUG] [Thread-114225] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:33:41.145 [INFO] [Thread-114225] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:33:41.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:33:41.778 [DEBUG] [Thread-114225] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:33:41.778 [DEBUG] [Thread-114225] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:33:41.778 [DEBUG] [Thread-114225] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:33:41.819 [DEBUG] [Thread-114225] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:33:41.819 [DEBUG] [Thread-114225] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:33:41.822 [DEBUG] [Thread-114225] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:33:41.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:33:41.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:33:41.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:33:41.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:33:41.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:33:41.840 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:33:41.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:33:41.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:33:41.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:33:41.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.356343 -999.00  +21.70  17.63     12   -8.20 1 1 1 1 1   888    0 31.37 39.26 ----- 17.4 17.6 33.1 26.3 28.0 -28.5 26.8 -28.4 25.7 -27.9 26.4 -27.8
2025-11-03T10:33:41.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:33:41.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:33:41.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.356343
2025-11-03T10:33:41.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:33:41.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:33:41.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:33:41.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:33:41.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:33:41.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:33:13', tmtdew=37.62, humidity=6.99, cloud=0.0, wind=20.75, temperature=22.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:33:08.035', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:33:41.842 [DEBUG] [Thread-114225] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:33:41.913 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:33:41.925 [DEBUG] [Thread-114228] [transport.py] [_log()] starting thread (client mode): 0xed64160
2025-11-03T10:33:41.925 [DEBUG] [Thread-114228] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:33:41.939 [DEBUG] [Thread-114228] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:33:41.939 [INFO] [Thread-114228] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:33:41.949 [DEBUG] [Thread-114228] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:33:41.949 [DEBUG] [Thread-114228] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:33:41.949 [DEBUG] [Thread-114228] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:33:41.949 [DEBUG] [Thread-114228] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:33:41.949 [DEBUG] [Thread-114228] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:33:41.949 [DEBUG] [Thread-114228] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:33:41.949 [DEBUG] [Thread-114228] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:33:41.949 [DEBUG] [Thread-114228] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:33:41.949 [DEBUG] [Thread-114228] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:33:41.949 [DEBUG] [Thread-114228] [transport.py] [_log()] client lang: <none>
2025-11-03T10:33:41.949 [DEBUG] [Thread-114228] [transport.py] [_log()] server lang: <none>
2025-11-03T10:33:41.949 [DEBUG] [Thread-114228] [transport.py] [_log()] kex follows: False
2025-11-03T10:33:41.949 [DEBUG] [Thread-114228] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:33:41.949 [DEBUG] [Thread-114228] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:33:41.949 [DEBUG] [Thread-114228] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:33:41.949 [DEBUG] [Thread-114228] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:33:41.949 [DEBUG] [Thread-114228] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:33:41.949 [DEBUG] [Thread-114228] [transport.py] [_log()] Compression: none
2025-11-03T10:33:41.949 [DEBUG] [Thread-114228] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:33:42.007 [DEBUG] [Thread-114228] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:33:42.007 [DEBUG] [Thread-114228] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:33:42.007 [DEBUG] [Thread-114228] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:33:42.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:33:42.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:33:42.064 [DEBUG] [Thread-114228] [transport.py] [_log()] userauth is OK
2025-11-03T10:33:42.064 [DEBUG] [Thread-114228] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:33:42.064 [DEBUG] [Thread-114228] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:33:42.064 [DEBUG] [Thread-114228] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:33:42.064 [DEBUG] [Thread-114228] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:33:42.078 [INFO] [Thread-114228] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:33:42.078 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:33:42.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:33:42.949 [DEBUG] [Thread-114228] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:33:42.950 [DEBUG] [Thread-114228] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:33:42.998 [DEBUG] [Thread-114228] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:33:42.998 [DEBUG] [Thread-114228] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:33:43.007 [DEBUG] [Thread-114228] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:33:43.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:33:43.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:33:43.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:33:43.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:33:43.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:33:43.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:33:43.044 [DEBUG] [Thread-114228] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:33:52.661 [DEBUG] [Thread-114230 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:33:53.341 [DEBUG] [Thread-114231 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:34:07.711 [DEBUG] [Thread-114232 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:34:13.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:34:13.066 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:34:13.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:34:13.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 33, 45), 37.37, 6.98, 0.0, 13.73, 22.15, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:34:13.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:33:45
2025-11-03T10:34:13.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:34:14.049 [DEBUG] [Thread-114233] [transport.py] [_log()] starting thread (client mode): 0xed2e7a0
2025-11-03T10:34:14.050 [DEBUG] [Thread-114233] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:34:14.068 [DEBUG] [Thread-114233] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:34:14.068 [INFO] [Thread-114233] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:34:14.071 [DEBUG] [Thread-114233] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:34:14.071 [DEBUG] [Thread-114233] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:34:14.071 [DEBUG] [Thread-114233] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:34:14.071 [DEBUG] [Thread-114233] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:34:14.071 [DEBUG] [Thread-114233] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:34:14.071 [DEBUG] [Thread-114233] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:34:14.071 [DEBUG] [Thread-114233] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:34:14.071 [DEBUG] [Thread-114233] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:34:14.071 [DEBUG] [Thread-114233] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:34:14.071 [DEBUG] [Thread-114233] [transport.py] [_log()] client lang: <none>
2025-11-03T10:34:14.071 [DEBUG] [Thread-114233] [transport.py] [_log()] server lang: <none>
2025-11-03T10:34:14.071 [DEBUG] [Thread-114233] [transport.py] [_log()] kex follows: False
2025-11-03T10:34:14.071 [DEBUG] [Thread-114233] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:34:14.071 [DEBUG] [Thread-114233] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:34:14.071 [DEBUG] [Thread-114233] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:34:14.071 [DEBUG] [Thread-114233] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:34:14.071 [DEBUG] [Thread-114233] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:34:14.071 [DEBUG] [Thread-114233] [transport.py] [_log()] Compression: none
2025-11-03T10:34:14.071 [DEBUG] [Thread-114233] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:34:14.082 [DEBUG] [Thread-114233] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:34:14.082 [DEBUG] [Thread-114233] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:34:14.082 [DEBUG] [Thread-114233] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:34:14.082 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:34:14.082 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:34:14.083 [DEBUG] [Thread-114233] [transport.py] [_log()] userauth is OK
2025-11-03T10:34:14.083 [DEBUG] [Thread-114233] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:34:14.083 [DEBUG] [Thread-114233] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:34:14.083 [DEBUG] [Thread-114233] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:34:14.083 [DEBUG] [Thread-114233] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:34:14.092 [INFO] [Thread-114233] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:34:14.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:34:14.715 [DEBUG] [Thread-114233] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:34:14.716 [DEBUG] [Thread-114233] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:34:14.716 [DEBUG] [Thread-114233] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:34:14.757 [DEBUG] [Thread-114233] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:34:14.757 [DEBUG] [Thread-114233] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:34:14.759 [DEBUG] [Thread-114233] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:34:14.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:34:14.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:34:14.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:34:14.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:34:14.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:34:14.779 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:34:14.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:34:14.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:34:14.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:34:14.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.356690 -999.00  +22.10  15.82     12   -8.30 1 1 1 1 1   888    0 31.57 40.77 ----- 9.5 15.8 11.4 20.2 28.0 -28.5 26.9 -27.8 25.8 -26.9 26.4 -28.5
2025-11-03T10:34:14.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:34:14.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:34:14.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.356690
2025-11-03T10:34:14.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:34:14.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:34:14.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:34:14.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:34:14.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:34:14.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:33:45', tmtdew=37.37, humidity=6.98, cloud=0.0, wind=13.73, temperature=22.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:33:38.016', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:34:14.781 [DEBUG] [Thread-114233] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:34:14.860 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:34:14.872 [DEBUG] [Thread-114236] [transport.py] [_log()] starting thread (client mode): 0xed67970
2025-11-03T10:34:14.872 [DEBUG] [Thread-114236] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:34:14.887 [DEBUG] [Thread-114236] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:34:14.888 [INFO] [Thread-114236] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:34:14.895 [DEBUG] [Thread-114236] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:34:14.895 [DEBUG] [Thread-114236] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:34:14.895 [DEBUG] [Thread-114236] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:34:14.895 [DEBUG] [Thread-114236] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:34:14.895 [DEBUG] [Thread-114236] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:34:14.895 [DEBUG] [Thread-114236] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:34:14.895 [DEBUG] [Thread-114236] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:34:14.895 [DEBUG] [Thread-114236] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:34:14.895 [DEBUG] [Thread-114236] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:34:14.895 [DEBUG] [Thread-114236] [transport.py] [_log()] client lang: <none>
2025-11-03T10:34:14.895 [DEBUG] [Thread-114236] [transport.py] [_log()] server lang: <none>
2025-11-03T10:34:14.895 [DEBUG] [Thread-114236] [transport.py] [_log()] kex follows: False
2025-11-03T10:34:14.895 [DEBUG] [Thread-114236] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:34:14.895 [DEBUG] [Thread-114236] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:34:14.895 [DEBUG] [Thread-114236] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:34:14.896 [DEBUG] [Thread-114236] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:34:14.896 [DEBUG] [Thread-114236] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:34:14.896 [DEBUG] [Thread-114236] [transport.py] [_log()] Compression: none
2025-11-03T10:34:14.896 [DEBUG] [Thread-114236] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:34:14.954 [DEBUG] [Thread-114236] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:34:14.955 [DEBUG] [Thread-114236] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:34:14.955 [DEBUG] [Thread-114236] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:34:14.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:34:14.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:34:15.012 [DEBUG] [Thread-114236] [transport.py] [_log()] userauth is OK
2025-11-03T10:34:15.012 [DEBUG] [Thread-114236] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:34:15.012 [DEBUG] [Thread-114236] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:34:15.012 [DEBUG] [Thread-114236] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:34:15.012 [DEBUG] [Thread-114236] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:34:15.029 [INFO] [Thread-114236] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:34:15.029 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:34:15.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:34:15.897 [DEBUG] [Thread-114236] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:34:15.897 [DEBUG] [Thread-114236] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:34:15.944 [DEBUG] [Thread-114236] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:34:15.944 [DEBUG] [Thread-114236] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:34:15.953 [DEBUG] [Thread-114236] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:34:15.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:34:15.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:34:15.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:34:15.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:34:15.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:34:15.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:34:15.984 [DEBUG] [Thread-114236] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:34:22.746 [DEBUG] [Thread-114238 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:34:24.182 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:34:24.183 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:34:37.799 [DEBUG] [Thread-114239 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:34:45.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:34:45.978 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:34:45.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:34:46.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 34, 17), 37.48, 6.93, 0.0, 17.17, 22.21, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:34:46.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:34:17
2025-11-03T10:34:46.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:34:46.939 [DEBUG] [Thread-114240] [transport.py] [_log()] starting thread (client mode): 0xed344c0
2025-11-03T10:34:46.939 [DEBUG] [Thread-114240] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:34:46.958 [DEBUG] [Thread-114240] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:34:46.959 [INFO] [Thread-114240] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:34:46.961 [DEBUG] [Thread-114240] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:34:46.961 [DEBUG] [Thread-114240] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:34:46.961 [DEBUG] [Thread-114240] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:34:46.962 [DEBUG] [Thread-114240] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:34:46.962 [DEBUG] [Thread-114240] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:34:46.962 [DEBUG] [Thread-114240] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:34:46.962 [DEBUG] [Thread-114240] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:34:46.962 [DEBUG] [Thread-114240] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:34:46.962 [DEBUG] [Thread-114240] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:34:46.962 [DEBUG] [Thread-114240] [transport.py] [_log()] client lang: <none>
2025-11-03T10:34:46.962 [DEBUG] [Thread-114240] [transport.py] [_log()] server lang: <none>
2025-11-03T10:34:46.962 [DEBUG] [Thread-114240] [transport.py] [_log()] kex follows: False
2025-11-03T10:34:46.962 [DEBUG] [Thread-114240] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:34:46.962 [DEBUG] [Thread-114240] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:34:46.962 [DEBUG] [Thread-114240] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:34:46.962 [DEBUG] [Thread-114240] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:34:46.962 [DEBUG] [Thread-114240] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:34:46.962 [DEBUG] [Thread-114240] [transport.py] [_log()] Compression: none
2025-11-03T10:34:46.962 [DEBUG] [Thread-114240] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:34:46.979 [DEBUG] [Thread-114240] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:34:46.980 [DEBUG] [Thread-114240] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:34:46.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:34:46.981 [DEBUG] [Thread-114240] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:34:46.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:34:46.984 [DEBUG] [Thread-114240] [transport.py] [_log()] userauth is OK
2025-11-03T10:34:46.984 [DEBUG] [Thread-114240] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:34:46.984 [DEBUG] [Thread-114240] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:34:46.984 [DEBUG] [Thread-114240] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:34:46.984 [DEBUG] [Thread-114240] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:34:46.998 [INFO] [Thread-114240] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:34:46.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:34:47.649 [DEBUG] [Thread-114240] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:34:47.649 [DEBUG] [Thread-114240] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:34:47.650 [DEBUG] [Thread-114240] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:34:47.690 [DEBUG] [Thread-114240] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:34:47.690 [DEBUG] [Thread-114240] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:34:47.692 [DEBUG] [Thread-114240] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:34:47.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:34:47.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:34:47.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:34:47.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:34:47.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:34:47.710 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:34:47.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:34:47.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:34:47.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:34:47.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.357038 -999.00  +21.80  13.12     12   -8.60 1 1 1 1 1   888    0 31.65 41.03 ----- 10.8 13.1 32.6 20.4 28.1 -29.1 26.9 -28.2 25.8 -27.9 26.6 -27.8
2025-11-03T10:34:47.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:34:47.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:34:47.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.357038
2025-11-03T10:34:47.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:34:47.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:34:47.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:34:47.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:34:47.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:34:47.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:34:17', tmtdew=37.48, humidity=6.93, cloud=0.0, wind=17.17, temperature=22.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:34:08.083', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:34:47.712 [DEBUG] [Thread-114240] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:34:47.783 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:34:47.795 [DEBUG] [Thread-114243] [transport.py] [_log()] starting thread (client mode): 0xed5ee30
2025-11-03T10:34:47.795 [DEBUG] [Thread-114243] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:34:47.809 [DEBUG] [Thread-114243] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:34:47.809 [INFO] [Thread-114243] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:34:47.817 [DEBUG] [Thread-114243] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:34:47.817 [DEBUG] [Thread-114243] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:34:47.817 [DEBUG] [Thread-114243] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:34:47.817 [DEBUG] [Thread-114243] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:34:47.817 [DEBUG] [Thread-114243] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:34:47.817 [DEBUG] [Thread-114243] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:34:47.817 [DEBUG] [Thread-114243] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:34:47.817 [DEBUG] [Thread-114243] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:34:47.817 [DEBUG] [Thread-114243] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:34:47.817 [DEBUG] [Thread-114243] [transport.py] [_log()] client lang: <none>
2025-11-03T10:34:47.817 [DEBUG] [Thread-114243] [transport.py] [_log()] server lang: <none>
2025-11-03T10:34:47.817 [DEBUG] [Thread-114243] [transport.py] [_log()] kex follows: False
2025-11-03T10:34:47.817 [DEBUG] [Thread-114243] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:34:47.817 [DEBUG] [Thread-114243] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:34:47.817 [DEBUG] [Thread-114243] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:34:47.817 [DEBUG] [Thread-114243] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:34:47.817 [DEBUG] [Thread-114243] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:34:47.817 [DEBUG] [Thread-114243] [transport.py] [_log()] Compression: none
2025-11-03T10:34:47.817 [DEBUG] [Thread-114243] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:34:47.872 [DEBUG] [Thread-114243] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:34:47.872 [DEBUG] [Thread-114243] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:34:47.872 [DEBUG] [Thread-114243] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:34:47.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:34:47.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:34:47.929 [DEBUG] [Thread-114243] [transport.py] [_log()] userauth is OK
2025-11-03T10:34:47.929 [DEBUG] [Thread-114243] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:34:47.929 [DEBUG] [Thread-114243] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:34:47.929 [DEBUG] [Thread-114243] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:34:47.929 [DEBUG] [Thread-114243] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:34:47.943 [INFO] [Thread-114243] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:34:47.951 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:34:47.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:34:48.808 [DEBUG] [Thread-114243] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:34:48.808 [DEBUG] [Thread-114243] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:34:48.856 [DEBUG] [Thread-114243] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:34:48.856 [DEBUG] [Thread-114243] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:34:48.865 [DEBUG] [Thread-114243] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:34:48.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:34:48.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:34:48.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:34:48.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:34:48.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:34:48.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:34:48.900 [DEBUG] [Thread-114243] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:34:52.832 [DEBUG] [Thread-114245 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:34:53.385 [DEBUG] [Thread-114246 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:35:07.870 [DEBUG] [Thread-114247 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:35:18.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:35:18.918 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:35:18.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:35:19.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 34, 50), 37.47, 6.93, 0.0, 23.94, 22.51, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:35:19.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:34:50
2025-11-03T10:35:19.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:35:19.881 [DEBUG] [Thread-114248] [transport.py] [_log()] starting thread (client mode): 0x11799660
2025-11-03T10:35:19.881 [DEBUG] [Thread-114248] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:35:19.910 [DEBUG] [Thread-114248] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:35:19.910 [INFO] [Thread-114248] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:35:19.920 [DEBUG] [Thread-114248] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:35:19.920 [DEBUG] [Thread-114248] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:35:19.920 [DEBUG] [Thread-114248] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:35:19.921 [DEBUG] [Thread-114248] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:35:19.921 [DEBUG] [Thread-114248] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:35:19.921 [DEBUG] [Thread-114248] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:35:19.921 [DEBUG] [Thread-114248] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:35:19.921 [DEBUG] [Thread-114248] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:35:19.921 [DEBUG] [Thread-114248] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:35:19.921 [DEBUG] [Thread-114248] [transport.py] [_log()] client lang: <none>
2025-11-03T10:35:19.921 [DEBUG] [Thread-114248] [transport.py] [_log()] server lang: <none>
2025-11-03T10:35:19.921 [DEBUG] [Thread-114248] [transport.py] [_log()] kex follows: False
2025-11-03T10:35:19.921 [DEBUG] [Thread-114248] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:35:19.921 [DEBUG] [Thread-114248] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:35:19.921 [DEBUG] [Thread-114248] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:35:19.921 [DEBUG] [Thread-114248] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:35:19.921 [DEBUG] [Thread-114248] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:35:19.921 [DEBUG] [Thread-114248] [transport.py] [_log()] Compression: none
2025-11-03T10:35:19.922 [DEBUG] [Thread-114248] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:35:19.941 [DEBUG] [Thread-114248] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:35:19.942 [DEBUG] [Thread-114248] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:35:19.942 [DEBUG] [Thread-114248] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:35:19.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:35:19.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:35:19.944 [DEBUG] [Thread-114248] [transport.py] [_log()] userauth is OK
2025-11-03T10:35:19.945 [DEBUG] [Thread-114248] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:35:19.945 [DEBUG] [Thread-114248] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:35:19.945 [DEBUG] [Thread-114248] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:35:19.945 [DEBUG] [Thread-114248] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:35:19.962 [INFO] [Thread-114248] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:35:19.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:35:20.834 [DEBUG] [Thread-114248] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:35:20.834 [DEBUG] [Thread-114248] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:35:20.835 [DEBUG] [Thread-114248] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:35:20.875 [DEBUG] [Thread-114248] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:35:20.875 [DEBUG] [Thread-114248] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:35:20.879 [DEBUG] [Thread-114248] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:35:20.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:35:20.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:35:20.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:35:20.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:35:20.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:35:20.902 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:35:20.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:35:20.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:35:20.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:35:20.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.357385 -999.00  +21.90  14.24     12   -8.20 1 1 1 1 1   888    0 30.85 40.85 ----- 8.5 14.2 22.6 18.6 28.1 -28.7 26.9 -28.5 25.9 -27.2 26.6 -27.0
2025-11-03T10:35:20.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:35:20.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:35:20.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.357385
2025-11-03T10:35:20.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:35:20.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:35:20.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:35:20.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:35:20.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:35:20.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:34:50', tmtdew=37.47, humidity=6.93, cloud=0.0, wind=23.94, temperature=22.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:34:38.064', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:35:20.905 [DEBUG] [Thread-114248] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:35:20.988 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:35:21.001 [DEBUG] [Thread-114251] [transport.py] [_log()] starting thread (client mode): 0xed34730
2025-11-03T10:35:21.001 [DEBUG] [Thread-114251] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:35:21.018 [DEBUG] [Thread-114251] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:35:21.018 [INFO] [Thread-114251] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:35:21.025 [DEBUG] [Thread-114251] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:35:21.026 [DEBUG] [Thread-114251] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:35:21.026 [DEBUG] [Thread-114251] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:35:21.026 [DEBUG] [Thread-114251] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:35:21.026 [DEBUG] [Thread-114251] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:35:21.026 [DEBUG] [Thread-114251] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:35:21.026 [DEBUG] [Thread-114251] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:35:21.026 [DEBUG] [Thread-114251] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:35:21.026 [DEBUG] [Thread-114251] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:35:21.026 [DEBUG] [Thread-114251] [transport.py] [_log()] client lang: <none>
2025-11-03T10:35:21.026 [DEBUG] [Thread-114251] [transport.py] [_log()] server lang: <none>
2025-11-03T10:35:21.026 [DEBUG] [Thread-114251] [transport.py] [_log()] kex follows: False
2025-11-03T10:35:21.026 [DEBUG] [Thread-114251] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:35:21.026 [DEBUG] [Thread-114251] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:35:21.026 [DEBUG] [Thread-114251] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:35:21.027 [DEBUG] [Thread-114251] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:35:21.027 [DEBUG] [Thread-114251] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:35:21.027 [DEBUG] [Thread-114251] [transport.py] [_log()] Compression: none
2025-11-03T10:35:21.027 [DEBUG] [Thread-114251] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:35:21.084 [DEBUG] [Thread-114251] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:35:21.084 [DEBUG] [Thread-114251] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:35:21.085 [DEBUG] [Thread-114251] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:35:21.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:35:21.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:35:21.140 [DEBUG] [Thread-114251] [transport.py] [_log()] userauth is OK
2025-11-03T10:35:21.140 [DEBUG] [Thread-114251] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:35:21.140 [DEBUG] [Thread-114251] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:35:21.140 [DEBUG] [Thread-114251] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:35:21.140 [DEBUG] [Thread-114251] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:35:21.161 [INFO] [Thread-114251] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:35:21.162 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:35:21.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:35:22.151 [DEBUG] [Thread-114251] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:35:22.152 [DEBUG] [Thread-114251] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:35:22.204 [DEBUG] [Thread-114251] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:35:22.204 [DEBUG] [Thread-114251] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:35:22.213 [DEBUG] [Thread-114251] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:35:22.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:35:22.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:35:22.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:35:22.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:35:22.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:35:22.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:35:22.256 [DEBUG] [Thread-114251] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:35:22.899 [DEBUG] [Thread-114253 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:35:24.323 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:35:24.324 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:35:37.939 [DEBUG] [Thread-114254 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:35:52.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:35:52.270 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:35:52.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:35:52.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 35, 21), 37.49, 6.93, 0.0, 24.01, 22.58, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:35:52.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:35:21
2025-11-03T10:35:52.974 [DEBUG] [Thread-114255 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:35:53.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:35:53.216 [DEBUG] [Thread-114256] [transport.py] [_log()] starting thread (client mode): 0x1179acb0
2025-11-03T10:35:53.216 [DEBUG] [Thread-114256] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:35:53.236 [DEBUG] [Thread-114256] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:35:53.236 [INFO] [Thread-114256] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:35:53.239 [DEBUG] [Thread-114256] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:35:53.239 [DEBUG] [Thread-114256] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:35:53.239 [DEBUG] [Thread-114256] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:35:53.239 [DEBUG] [Thread-114256] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:35:53.239 [DEBUG] [Thread-114256] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:35:53.239 [DEBUG] [Thread-114256] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:35:53.240 [DEBUG] [Thread-114256] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:35:53.240 [DEBUG] [Thread-114256] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:35:53.240 [DEBUG] [Thread-114256] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:35:53.240 [DEBUG] [Thread-114256] [transport.py] [_log()] client lang: <none>
2025-11-03T10:35:53.240 [DEBUG] [Thread-114256] [transport.py] [_log()] server lang: <none>
2025-11-03T10:35:53.240 [DEBUG] [Thread-114256] [transport.py] [_log()] kex follows: False
2025-11-03T10:35:53.240 [DEBUG] [Thread-114256] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:35:53.240 [DEBUG] [Thread-114256] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:35:53.240 [DEBUG] [Thread-114256] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:35:53.240 [DEBUG] [Thread-114256] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:35:53.240 [DEBUG] [Thread-114256] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:35:53.240 [DEBUG] [Thread-114256] [transport.py] [_log()] Compression: none
2025-11-03T10:35:53.240 [DEBUG] [Thread-114256] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:35:53.257 [DEBUG] [Thread-114256] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:35:53.258 [DEBUG] [Thread-114256] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:35:53.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:35:53.259 [DEBUG] [Thread-114256] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:35:53.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:35:53.261 [DEBUG] [Thread-114256] [transport.py] [_log()] userauth is OK
2025-11-03T10:35:53.261 [DEBUG] [Thread-114256] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:35:53.261 [DEBUG] [Thread-114256] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:35:53.261 [DEBUG] [Thread-114256] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:35:53.261 [DEBUG] [Thread-114256] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:35:53.297 [INFO] [Thread-114256] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:35:53.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:35:53.440 [DEBUG] [Thread-114258 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:35:53.936 [DEBUG] [Thread-114256] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:35:53.936 [DEBUG] [Thread-114256] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:35:53.936 [DEBUG] [Thread-114256] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:35:53.976 [DEBUG] [Thread-114256] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:35:53.977 [DEBUG] [Thread-114256] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:35:53.979 [DEBUG] [Thread-114256] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:35:53.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:35:53.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:35:53.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:35:53.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:35:53.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:35:53.997 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:35:53.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:35:53.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:35:53.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:35:53.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.357732 -999.00  +22.40  25.51     12   -7.70 1 1 1 1 1   888    0 31.49 42.17 ----- 22.0 25.5 20.0 29.7 28.2 -28.6 27.1 -28.1 26.0 -27.2 26.6 -27.4
2025-11-03T10:35:53.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:35:53.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:35:53.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.357732
2025-11-03T10:35:53.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:35:53.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:35:53.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:35:53.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:35:53.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:35:53.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:35:21', tmtdew=37.49, humidity=6.93, cloud=0.0, wind=24.01, temperature=22.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:35:08.045', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:35:53.999 [DEBUG] [Thread-114256] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:35:54.070 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:35:54.083 [DEBUG] [Thread-114260] [transport.py] [_log()] starting thread (client mode): 0xedb14b0
2025-11-03T10:35:54.083 [DEBUG] [Thread-114260] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:35:54.100 [DEBUG] [Thread-114260] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:35:54.100 [INFO] [Thread-114260] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:35:54.110 [DEBUG] [Thread-114260] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:35:54.110 [DEBUG] [Thread-114260] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:35:54.110 [DEBUG] [Thread-114260] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:35:54.110 [DEBUG] [Thread-114260] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:35:54.111 [DEBUG] [Thread-114260] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:35:54.111 [DEBUG] [Thread-114260] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:35:54.111 [DEBUG] [Thread-114260] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:35:54.111 [DEBUG] [Thread-114260] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:35:54.111 [DEBUG] [Thread-114260] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:35:54.111 [DEBUG] [Thread-114260] [transport.py] [_log()] client lang: <none>
2025-11-03T10:35:54.111 [DEBUG] [Thread-114260] [transport.py] [_log()] server lang: <none>
2025-11-03T10:35:54.111 [DEBUG] [Thread-114260] [transport.py] [_log()] kex follows: False
2025-11-03T10:35:54.111 [DEBUG] [Thread-114260] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:35:54.111 [DEBUG] [Thread-114260] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:35:54.111 [DEBUG] [Thread-114260] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:35:54.111 [DEBUG] [Thread-114260] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:35:54.111 [DEBUG] [Thread-114260] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:35:54.111 [DEBUG] [Thread-114260] [transport.py] [_log()] Compression: none
2025-11-03T10:35:54.111 [DEBUG] [Thread-114260] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:35:54.166 [DEBUG] [Thread-114260] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:35:54.166 [DEBUG] [Thread-114260] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:35:54.166 [DEBUG] [Thread-114260] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:35:54.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:35:54.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:35:54.227 [DEBUG] [Thread-114260] [transport.py] [_log()] userauth is OK
2025-11-03T10:35:54.227 [DEBUG] [Thread-114260] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:35:54.227 [DEBUG] [Thread-114260] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:35:54.227 [DEBUG] [Thread-114260] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:35:54.227 [DEBUG] [Thread-114260] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:35:54.243 [INFO] [Thread-114260] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:35:54.243 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:35:54.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:35:55.086 [DEBUG] [Thread-114260] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:35:55.086 [DEBUG] [Thread-114260] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:35:55.133 [DEBUG] [Thread-114260] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:35:55.133 [DEBUG] [Thread-114260] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:35:55.141 [DEBUG] [Thread-114260] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:35:55.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:35:55.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:35:55.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:35:55.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:35:55.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:35:55.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:35:55.173 [DEBUG] [Thread-114260] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:36:08.008 [DEBUG] [Thread-114262 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:36:23.044 [DEBUG] [Thread-114263 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:36:24.464 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:36:24.465 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:36:25.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:36:25.184 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:36:25.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:36:25.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 35, 54), 37.46, 6.88, 0.0, 21.58, 22.66, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:36:25.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:35:54
2025-11-03T10:36:26.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:36:26.309 [DEBUG] [Thread-114264] [transport.py] [_log()] starting thread (client mode): 0x11798700
2025-11-03T10:36:26.309 [DEBUG] [Thread-114264] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:36:26.329 [DEBUG] [Thread-114264] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:36:26.329 [INFO] [Thread-114264] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:36:26.332 [DEBUG] [Thread-114264] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:36:26.332 [DEBUG] [Thread-114264] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:36:26.332 [DEBUG] [Thread-114264] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:36:26.332 [DEBUG] [Thread-114264] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:36:26.332 [DEBUG] [Thread-114264] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:36:26.332 [DEBUG] [Thread-114264] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:36:26.332 [DEBUG] [Thread-114264] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:36:26.332 [DEBUG] [Thread-114264] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:36:26.332 [DEBUG] [Thread-114264] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:36:26.332 [DEBUG] [Thread-114264] [transport.py] [_log()] client lang: <none>
2025-11-03T10:36:26.332 [DEBUG] [Thread-114264] [transport.py] [_log()] server lang: <none>
2025-11-03T10:36:26.332 [DEBUG] [Thread-114264] [transport.py] [_log()] kex follows: False
2025-11-03T10:36:26.332 [DEBUG] [Thread-114264] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:36:26.333 [DEBUG] [Thread-114264] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:36:26.333 [DEBUG] [Thread-114264] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:36:26.333 [DEBUG] [Thread-114264] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:36:26.333 [DEBUG] [Thread-114264] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:36:26.333 [DEBUG] [Thread-114264] [transport.py] [_log()] Compression: none
2025-11-03T10:36:26.333 [DEBUG] [Thread-114264] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:36:26.352 [DEBUG] [Thread-114264] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:36:26.352 [DEBUG] [Thread-114264] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:36:26.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:36:26.353 [DEBUG] [Thread-114264] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:36:26.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:36:26.356 [DEBUG] [Thread-114264] [transport.py] [_log()] userauth is OK
2025-11-03T10:36:26.356 [DEBUG] [Thread-114264] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:36:26.356 [DEBUG] [Thread-114264] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:36:26.356 [DEBUG] [Thread-114264] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:36:26.356 [DEBUG] [Thread-114264] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:36:26.381 [INFO] [Thread-114264] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:36:26.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:36:27.159 [DEBUG] [Thread-114264] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:36:27.159 [DEBUG] [Thread-114264] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:36:27.159 [DEBUG] [Thread-114264] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:36:27.200 [DEBUG] [Thread-114264] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:36:27.201 [DEBUG] [Thread-114264] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:36:27.203 [DEBUG] [Thread-114264] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:36:27.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:36:27.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:36:27.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:36:27.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:36:27.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:36:27.221 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:36:27.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:36:27.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:36:27.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:36:27.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.358079 -999.00  +22.70  17.50     12   -7.90 1 1 1 1 1   888    0 30.87 42.79 ----- 16.9 17.5 330.1 28.4 28.2 -29.7 27.1 -28.8 26.0 -27.3 26.4 -28.5
2025-11-03T10:36:27.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:36:27.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:36:27.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.358079
2025-11-03T10:36:27.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:36:27.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:36:27.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:36:27.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:36:27.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:36:27.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:35:54', tmtdew=37.46, humidity=6.88, cloud=0.0, wind=21.58, temperature=22.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:35:38.026', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:36:27.223 [DEBUG] [Thread-114264] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:36:27.301 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:36:27.313 [DEBUG] [Thread-114267] [transport.py] [_log()] starting thread (client mode): 0xed375b0
2025-11-03T10:36:27.313 [DEBUG] [Thread-114267] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:36:27.331 [DEBUG] [Thread-114267] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:36:27.331 [INFO] [Thread-114267] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:36:27.339 [DEBUG] [Thread-114267] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:36:27.339 [DEBUG] [Thread-114267] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:36:27.339 [DEBUG] [Thread-114267] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:36:27.339 [DEBUG] [Thread-114267] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:36:27.339 [DEBUG] [Thread-114267] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:36:27.339 [DEBUG] [Thread-114267] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:36:27.339 [DEBUG] [Thread-114267] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:36:27.339 [DEBUG] [Thread-114267] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:36:27.339 [DEBUG] [Thread-114267] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:36:27.339 [DEBUG] [Thread-114267] [transport.py] [_log()] client lang: <none>
2025-11-03T10:36:27.339 [DEBUG] [Thread-114267] [transport.py] [_log()] server lang: <none>
2025-11-03T10:36:27.339 [DEBUG] [Thread-114267] [transport.py] [_log()] kex follows: False
2025-11-03T10:36:27.339 [DEBUG] [Thread-114267] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:36:27.339 [DEBUG] [Thread-114267] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:36:27.339 [DEBUG] [Thread-114267] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:36:27.339 [DEBUG] [Thread-114267] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:36:27.339 [DEBUG] [Thread-114267] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:36:27.339 [DEBUG] [Thread-114267] [transport.py] [_log()] Compression: none
2025-11-03T10:36:27.339 [DEBUG] [Thread-114267] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:36:27.395 [DEBUG] [Thread-114267] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:36:27.395 [DEBUG] [Thread-114267] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:36:27.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:36:27.395 [DEBUG] [Thread-114267] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:36:27.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:36:27.451 [DEBUG] [Thread-114267] [transport.py] [_log()] userauth is OK
2025-11-03T10:36:27.451 [DEBUG] [Thread-114267] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:36:27.451 [DEBUG] [Thread-114267] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:36:27.451 [DEBUG] [Thread-114267] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:36:27.451 [DEBUG] [Thread-114267] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:36:27.469 [INFO] [Thread-114267] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:36:27.469 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:36:27.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:36:28.300 [DEBUG] [Thread-114267] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:36:28.300 [DEBUG] [Thread-114267] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:36:28.348 [DEBUG] [Thread-114267] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:36:28.348 [DEBUG] [Thread-114267] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:36:28.357 [DEBUG] [Thread-114267] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:36:28.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:36:28.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:36:28.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:36:28.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:36:28.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:36:28.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:36:28.393 [DEBUG] [Thread-114267] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:36:38.074 [DEBUG] [Thread-114269 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:36:53.112 [DEBUG] [Thread-114270 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:36:53.494 [DEBUG] [Thread-114271 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:36:58.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:36:58.415 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:36:58.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:36:59.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 36, 26), 37.19, 7.01, 0.0, 24.6, 22.53, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:36:59.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:36:26
2025-11-03T10:36:59.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:36:59.369 [DEBUG] [Thread-114272] [transport.py] [_log()] starting thread (client mode): 0xed5ccd0
2025-11-03T10:36:59.369 [DEBUG] [Thread-114272] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:36:59.389 [DEBUG] [Thread-114272] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:36:59.389 [INFO] [Thread-114272] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:36:59.392 [DEBUG] [Thread-114272] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:36:59.392 [DEBUG] [Thread-114272] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:36:59.393 [DEBUG] [Thread-114272] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:36:59.393 [DEBUG] [Thread-114272] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:36:59.393 [DEBUG] [Thread-114272] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:36:59.393 [DEBUG] [Thread-114272] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:36:59.393 [DEBUG] [Thread-114272] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:36:59.393 [DEBUG] [Thread-114272] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:36:59.393 [DEBUG] [Thread-114272] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:36:59.393 [DEBUG] [Thread-114272] [transport.py] [_log()] client lang: <none>
2025-11-03T10:36:59.393 [DEBUG] [Thread-114272] [transport.py] [_log()] server lang: <none>
2025-11-03T10:36:59.393 [DEBUG] [Thread-114272] [transport.py] [_log()] kex follows: False
2025-11-03T10:36:59.393 [DEBUG] [Thread-114272] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:36:59.393 [DEBUG] [Thread-114272] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:36:59.393 [DEBUG] [Thread-114272] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:36:59.393 [DEBUG] [Thread-114272] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:36:59.394 [DEBUG] [Thread-114272] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:36:59.394 [DEBUG] [Thread-114272] [transport.py] [_log()] Compression: none
2025-11-03T10:36:59.394 [DEBUG] [Thread-114272] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:36:59.415 [DEBUG] [Thread-114272] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:36:59.416 [DEBUG] [Thread-114272] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:36:59.416 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:36:59.417 [DEBUG] [Thread-114272] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:36:59.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:36:59.418 [DEBUG] [Thread-114272] [transport.py] [_log()] userauth is OK
2025-11-03T10:36:59.418 [DEBUG] [Thread-114272] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:36:59.419 [DEBUG] [Thread-114272] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:36:59.419 [DEBUG] [Thread-114272] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:36:59.419 [DEBUG] [Thread-114272] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:36:59.443 [INFO] [Thread-114272] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:36:59.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:37:00.073 [DEBUG] [Thread-114272] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:37:00.074 [DEBUG] [Thread-114272] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:37:00.074 [DEBUG] [Thread-114272] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:37:00.114 [DEBUG] [Thread-114272] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:37:00.114 [DEBUG] [Thread-114272] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:37:00.117 [DEBUG] [Thread-114272] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:37:00.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:37:00.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:37:00.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:37:00.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:37:00.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:37:00.138 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:37:00.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:37:00.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:37:00.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:37:00.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.358774 -999.00  +22.20  18.37     12   -7.90 1 1 1 1 1   888    0 30.91 47.47 ----- 23.5 18.4 358.9 31.0 28.1 -30.3 26.9 -29.7 26.0 -27.4 26.5 -32.6
2025-11-03T10:37:00.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:37:00.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:37:00.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.358774
2025-11-03T10:37:00.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:37:00.141 [DEBUG] [Thread-114272] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:37:00.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:37:00.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:37:00.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:37:00.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:37:00.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:36:26', tmtdew=37.19, humidity=7.01, cloud=0.0, wind=24.6, temperature=22.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:36:38.074', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:37:00.229 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:37:00.240 [DEBUG] [Thread-114275] [transport.py] [_log()] starting thread (client mode): 0xedb38b0
2025-11-03T10:37:00.240 [DEBUG] [Thread-114275] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:37:00.255 [DEBUG] [Thread-114275] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:37:00.256 [INFO] [Thread-114275] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:37:00.263 [DEBUG] [Thread-114275] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:37:00.263 [DEBUG] [Thread-114275] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:37:00.263 [DEBUG] [Thread-114275] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:37:00.263 [DEBUG] [Thread-114275] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:37:00.263 [DEBUG] [Thread-114275] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:37:00.263 [DEBUG] [Thread-114275] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:37:00.263 [DEBUG] [Thread-114275] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:37:00.263 [DEBUG] [Thread-114275] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:37:00.264 [DEBUG] [Thread-114275] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:37:00.264 [DEBUG] [Thread-114275] [transport.py] [_log()] client lang: <none>
2025-11-03T10:37:00.264 [DEBUG] [Thread-114275] [transport.py] [_log()] server lang: <none>
2025-11-03T10:37:00.264 [DEBUG] [Thread-114275] [transport.py] [_log()] kex follows: False
2025-11-03T10:37:00.264 [DEBUG] [Thread-114275] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:37:00.264 [DEBUG] [Thread-114275] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:37:00.264 [DEBUG] [Thread-114275] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:37:00.264 [DEBUG] [Thread-114275] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:37:00.264 [DEBUG] [Thread-114275] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:37:00.264 [DEBUG] [Thread-114275] [transport.py] [_log()] Compression: none
2025-11-03T10:37:00.264 [DEBUG] [Thread-114275] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:37:00.321 [DEBUG] [Thread-114275] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:37:00.322 [DEBUG] [Thread-114275] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:37:00.322 [DEBUG] [Thread-114275] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:37:00.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:37:00.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:37:00.378 [DEBUG] [Thread-114275] [transport.py] [_log()] userauth is OK
2025-11-03T10:37:00.378 [DEBUG] [Thread-114275] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:37:00.379 [DEBUG] [Thread-114275] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:37:00.379 [DEBUG] [Thread-114275] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:37:00.379 [DEBUG] [Thread-114275] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:37:00.397 [INFO] [Thread-114275] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:37:00.398 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:37:00.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:37:01.237 [DEBUG] [Thread-114275] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:37:01.237 [DEBUG] [Thread-114275] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:37:01.285 [DEBUG] [Thread-114275] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:37:01.285 [DEBUG] [Thread-114275] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:37:01.294 [DEBUG] [Thread-114275] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:37:01.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:37:01.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:37:01.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:37:01.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:37:01.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:37:01.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:37:01.325 [DEBUG] [Thread-114275] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:37:08.143 [DEBUG] [Thread-114277 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:37:23.218 [DEBUG] [Thread-114278 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:37:24.606 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:37:24.607 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:37:31.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:37:31.347 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:37:31.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:37:32.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 36, 58), 37.62, 6.98, 0.0, 30.28, 22.73, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:37:32.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:36:58
2025-11-03T10:37:32.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:37:32.310 [DEBUG] [Thread-114279] [transport.py] [_log()] starting thread (client mode): 0xed5fc10
2025-11-03T10:37:32.319 [DEBUG] [Thread-114279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:37:32.330 [DEBUG] [Thread-114279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:37:32.330 [INFO] [Thread-114279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:37:32.333 [DEBUG] [Thread-114279] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:37:32.333 [DEBUG] [Thread-114279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:37:32.333 [DEBUG] [Thread-114279] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:37:32.333 [DEBUG] [Thread-114279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:37:32.334 [DEBUG] [Thread-114279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:37:32.334 [DEBUG] [Thread-114279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:37:32.334 [DEBUG] [Thread-114279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:37:32.334 [DEBUG] [Thread-114279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:37:32.334 [DEBUG] [Thread-114279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:37:32.334 [DEBUG] [Thread-114279] [transport.py] [_log()] client lang: <none>
2025-11-03T10:37:32.334 [DEBUG] [Thread-114279] [transport.py] [_log()] server lang: <none>
2025-11-03T10:37:32.334 [DEBUG] [Thread-114279] [transport.py] [_log()] kex follows: False
2025-11-03T10:37:32.334 [DEBUG] [Thread-114279] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:37:32.334 [DEBUG] [Thread-114279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:37:32.334 [DEBUG] [Thread-114279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:37:32.334 [DEBUG] [Thread-114279] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:37:32.335 [DEBUG] [Thread-114279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:37:32.335 [DEBUG] [Thread-114279] [transport.py] [_log()] Compression: none
2025-11-03T10:37:32.335 [DEBUG] [Thread-114279] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:37:32.353 [DEBUG] [Thread-114279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:37:32.353 [DEBUG] [Thread-114279] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:37:32.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:37:32.354 [DEBUG] [Thread-114279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:37:32.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:37:32.356 [DEBUG] [Thread-114279] [transport.py] [_log()] userauth is OK
2025-11-03T10:37:32.356 [DEBUG] [Thread-114279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:37:32.356 [DEBUG] [Thread-114279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:37:32.356 [DEBUG] [Thread-114279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:37:32.357 [DEBUG] [Thread-114279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:37:32.378 [INFO] [Thread-114279] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:37:32.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:37:33.159 [DEBUG] [Thread-114279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:37:33.160 [DEBUG] [Thread-114279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:37:33.160 [DEBUG] [Thread-114279] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:37:33.201 [DEBUG] [Thread-114279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:37:33.201 [DEBUG] [Thread-114279] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:37:33.203 [DEBUG] [Thread-114279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:37:33.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:37:33.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:37:33.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:37:33.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:37:33.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:37:33.221 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:37:33.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:37:33.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:37:33.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:37:33.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.359121 -999.00  +22.20  17.16     12   -7.90 1 1 1 1 1   888    0 31.29 44.56 ----- 17.0 17.2 3.1 26.9 28.1 -29.8 27.0 -28.6 26.0 -28.4 26.6 -29.0
2025-11-03T10:37:33.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:37:33.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:37:33.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.359121
2025-11-03T10:37:33.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:37:33.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:37:33.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:37:33.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:37:33.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:37:33.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:36:58', tmtdew=37.62, humidity=6.98, cloud=0.0, wind=30.28, temperature=22.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:37:08.054', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:37:33.223 [DEBUG] [Thread-114279] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:37:33.297 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:37:33.309 [DEBUG] [Thread-114282] [transport.py] [_log()] starting thread (client mode): 0xed5dff0
2025-11-03T10:37:33.309 [DEBUG] [Thread-114282] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:37:33.323 [DEBUG] [Thread-114282] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:37:33.323 [INFO] [Thread-114282] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:37:33.331 [DEBUG] [Thread-114282] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:37:33.331 [DEBUG] [Thread-114282] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:37:33.331 [DEBUG] [Thread-114282] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:37:33.331 [DEBUG] [Thread-114282] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:37:33.331 [DEBUG] [Thread-114282] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:37:33.331 [DEBUG] [Thread-114282] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:37:33.331 [DEBUG] [Thread-114282] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:37:33.331 [DEBUG] [Thread-114282] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:37:33.331 [DEBUG] [Thread-114282] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:37:33.331 [DEBUG] [Thread-114282] [transport.py] [_log()] client lang: <none>
2025-11-03T10:37:33.331 [DEBUG] [Thread-114282] [transport.py] [_log()] server lang: <none>
2025-11-03T10:37:33.331 [DEBUG] [Thread-114282] [transport.py] [_log()] kex follows: False
2025-11-03T10:37:33.331 [DEBUG] [Thread-114282] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:37:33.331 [DEBUG] [Thread-114282] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:37:33.331 [DEBUG] [Thread-114282] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:37:33.331 [DEBUG] [Thread-114282] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:37:33.331 [DEBUG] [Thread-114282] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:37:33.331 [DEBUG] [Thread-114282] [transport.py] [_log()] Compression: none
2025-11-03T10:37:33.331 [DEBUG] [Thread-114282] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:37:33.386 [DEBUG] [Thread-114282] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:37:33.386 [DEBUG] [Thread-114282] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:37:33.386 [DEBUG] [Thread-114282] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:37:33.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:37:33.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:37:33.443 [DEBUG] [Thread-114282] [transport.py] [_log()] userauth is OK
2025-11-03T10:37:33.443 [DEBUG] [Thread-114282] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:37:33.443 [DEBUG] [Thread-114282] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:37:33.443 [DEBUG] [Thread-114282] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:37:33.443 [DEBUG] [Thread-114282] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:37:33.457 [INFO] [Thread-114282] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:37:33.457 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:37:33.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:37:34.304 [DEBUG] [Thread-114282] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:37:34.304 [DEBUG] [Thread-114282] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:37:34.352 [DEBUG] [Thread-114282] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:37:34.352 [DEBUG] [Thread-114282] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:37:34.361 [DEBUG] [Thread-114282] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:37:34.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:37:34.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:37:34.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:37:34.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:37:34.385 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:37:34.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:37:34.393 [DEBUG] [Thread-114282] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:37:38.252 [DEBUG] [Thread-114284 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:37:53.305 [DEBUG] [Thread-114285 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:37:53.563 [DEBUG] [Thread-114286 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:38:04.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:38:04.416 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:38:04.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:38:05.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 37, 32), 37.85, 6.88, 0.0, 27.81, 22.91, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:38:05.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:37:32
2025-11-03T10:38:05.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:38:05.421 [DEBUG] [Thread-114287] [transport.py] [_log()] starting thread (client mode): 0xed5fb80
2025-11-03T10:38:05.421 [DEBUG] [Thread-114287] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:38:05.441 [DEBUG] [Thread-114287] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:38:05.441 [INFO] [Thread-114287] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:38:05.445 [DEBUG] [Thread-114287] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:38:05.445 [DEBUG] [Thread-114287] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:38:05.445 [DEBUG] [Thread-114287] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:38:05.445 [DEBUG] [Thread-114287] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:38:05.445 [DEBUG] [Thread-114287] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:38:05.445 [DEBUG] [Thread-114287] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:38:05.445 [DEBUG] [Thread-114287] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:38:05.445 [DEBUG] [Thread-114287] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:38:05.445 [DEBUG] [Thread-114287] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:38:05.445 [DEBUG] [Thread-114287] [transport.py] [_log()] client lang: <none>
2025-11-03T10:38:05.445 [DEBUG] [Thread-114287] [transport.py] [_log()] server lang: <none>
2025-11-03T10:38:05.445 [DEBUG] [Thread-114287] [transport.py] [_log()] kex follows: False
2025-11-03T10:38:05.445 [DEBUG] [Thread-114287] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:38:05.445 [DEBUG] [Thread-114287] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:38:05.445 [DEBUG] [Thread-114287] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:38:05.445 [DEBUG] [Thread-114287] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:38:05.445 [DEBUG] [Thread-114287] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:38:05.445 [DEBUG] [Thread-114287] [transport.py] [_log()] Compression: none
2025-11-03T10:38:05.445 [DEBUG] [Thread-114287] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:38:05.461 [DEBUG] [Thread-114287] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:38:05.461 [DEBUG] [Thread-114287] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:38:05.462 [DEBUG] [Thread-114287] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:38:05.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:38:05.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:38:05.463 [DEBUG] [Thread-114287] [transport.py] [_log()] userauth is OK
2025-11-03T10:38:05.463 [DEBUG] [Thread-114287] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:38:05.463 [DEBUG] [Thread-114287] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:38:05.463 [DEBUG] [Thread-114287] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:38:05.463 [DEBUG] [Thread-114287] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:38:05.494 [INFO] [Thread-114287] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:38:05.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:38:06.121 [DEBUG] [Thread-114287] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:38:06.121 [DEBUG] [Thread-114287] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:38:06.121 [DEBUG] [Thread-114287] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:38:06.162 [DEBUG] [Thread-114287] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:38:06.162 [DEBUG] [Thread-114287] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:38:06.164 [DEBUG] [Thread-114287] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:38:06.177 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:38:06.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:38:06.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:38:06.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:38:06.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:38:06.182 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:38:06.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:38:06.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:38:06.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:38:06.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.359468 -999.00  +22.30  26.29     12   -8.30 1 1 1 1 1   888    0 31.45 49.27 ----- 19.0 26.3 12.8 32.5 28.1 -29.5 26.9 -28.4 26.0 -28.4 26.5 -29.9
2025-11-03T10:38:06.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:38:06.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:38:06.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.359468
2025-11-03T10:38:06.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:38:06.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:38:06.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:38:06.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:38:06.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:38:06.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:37:32', tmtdew=37.85, humidity=6.88, cloud=0.0, wind=27.81, temperature=22.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:37:38.035', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:38:06.184 [DEBUG] [Thread-114287] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:38:06.259 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:38:06.271 [DEBUG] [Thread-114290] [transport.py] [_log()] starting thread (client mode): 0xed04820
2025-11-03T10:38:06.271 [DEBUG] [Thread-114290] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:38:06.285 [DEBUG] [Thread-114290] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:38:06.285 [INFO] [Thread-114290] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:38:06.293 [DEBUG] [Thread-114290] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:38:06.293 [DEBUG] [Thread-114290] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:38:06.293 [DEBUG] [Thread-114290] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:38:06.293 [DEBUG] [Thread-114290] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:38:06.293 [DEBUG] [Thread-114290] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:38:06.293 [DEBUG] [Thread-114290] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:38:06.293 [DEBUG] [Thread-114290] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:38:06.293 [DEBUG] [Thread-114290] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:38:06.293 [DEBUG] [Thread-114290] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:38:06.293 [DEBUG] [Thread-114290] [transport.py] [_log()] client lang: <none>
2025-11-03T10:38:06.293 [DEBUG] [Thread-114290] [transport.py] [_log()] server lang: <none>
2025-11-03T10:38:06.293 [DEBUG] [Thread-114290] [transport.py] [_log()] kex follows: False
2025-11-03T10:38:06.293 [DEBUG] [Thread-114290] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:38:06.293 [DEBUG] [Thread-114290] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:38:06.293 [DEBUG] [Thread-114290] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:38:06.293 [DEBUG] [Thread-114290] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:38:06.293 [DEBUG] [Thread-114290] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:38:06.294 [DEBUG] [Thread-114290] [transport.py] [_log()] Compression: none
2025-11-03T10:38:06.294 [DEBUG] [Thread-114290] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:38:06.352 [DEBUG] [Thread-114290] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:38:06.352 [DEBUG] [Thread-114290] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:38:06.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:38:06.352 [DEBUG] [Thread-114290] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:38:06.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:38:06.409 [DEBUG] [Thread-114290] [transport.py] [_log()] userauth is OK
2025-11-03T10:38:06.409 [DEBUG] [Thread-114290] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:38:06.409 [DEBUG] [Thread-114290] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:38:06.409 [DEBUG] [Thread-114290] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:38:06.409 [DEBUG] [Thread-114290] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:38:06.423 [INFO] [Thread-114290] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:38:06.423 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:38:06.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:38:07.283 [DEBUG] [Thread-114290] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:38:07.283 [DEBUG] [Thread-114290] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:38:07.333 [DEBUG] [Thread-114290] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:38:07.333 [DEBUG] [Thread-114290] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:38:07.341 [DEBUG] [Thread-114290] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:38:07.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:38:07.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:38:07.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:38:07.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:38:07.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:38:07.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:38:07.375 [DEBUG] [Thread-114290] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:38:08.342 [DEBUG] [Thread-114292 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:38:23.392 [DEBUG] [Thread-114293 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:38:24.748 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:38:24.749 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:38:37.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:38:37.397 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:38:37.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:38:38.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 38, 4), 38.32, 6.65, 0.0, 30.56, 23.06, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:38:38.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:38:04
2025-11-03T10:38:38.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:38:38.384 [DEBUG] [Thread-114294] [transport.py] [_log()] starting thread (client mode): 0xed07820
2025-11-03T10:38:38.384 [DEBUG] [Thread-114294] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:38:38.404 [DEBUG] [Thread-114294] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:38:38.404 [INFO] [Thread-114294] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:38:38.407 [DEBUG] [Thread-114294] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:38:38.407 [DEBUG] [Thread-114294] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:38:38.407 [DEBUG] [Thread-114294] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:38:38.407 [DEBUG] [Thread-114294] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:38:38.407 [DEBUG] [Thread-114294] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:38:38.407 [DEBUG] [Thread-114294] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:38:38.407 [DEBUG] [Thread-114294] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:38:38.407 [DEBUG] [Thread-114294] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:38:38.407 [DEBUG] [Thread-114294] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:38:38.407 [DEBUG] [Thread-114294] [transport.py] [_log()] client lang: <none>
2025-11-03T10:38:38.408 [DEBUG] [Thread-114294] [transport.py] [_log()] server lang: <none>
2025-11-03T10:38:38.408 [DEBUG] [Thread-114294] [transport.py] [_log()] kex follows: False
2025-11-03T10:38:38.408 [DEBUG] [Thread-114294] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:38:38.408 [DEBUG] [Thread-114294] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:38:38.408 [DEBUG] [Thread-114294] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:38:38.408 [DEBUG] [Thread-114294] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:38:38.408 [DEBUG] [Thread-114294] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:38:38.408 [DEBUG] [Thread-114294] [transport.py] [_log()] Compression: none
2025-11-03T10:38:38.408 [DEBUG] [Thread-114294] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:38:38.422 [DEBUG] [Thread-114294] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:38:38.422 [DEBUG] [Thread-114294] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:38:38.422 [DEBUG] [Thread-114294] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:38:38.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:38:38.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:38:38.424 [DEBUG] [Thread-114296 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:38:38.424 [DEBUG] [Thread-114294] [transport.py] [_log()] userauth is OK
2025-11-03T10:38:38.424 [DEBUG] [Thread-114294] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:38:38.424 [DEBUG] [Thread-114294] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:38:38.424 [DEBUG] [Thread-114294] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:38:38.424 [DEBUG] [Thread-114294] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:38:38.434 [INFO] [Thread-114294] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:38:38.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:38:39.172 [DEBUG] [Thread-114294] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:38:39.172 [DEBUG] [Thread-114294] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:38:39.172 [DEBUG] [Thread-114294] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:38:39.212 [DEBUG] [Thread-114294] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:38:39.212 [DEBUG] [Thread-114294] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:38:39.214 [DEBUG] [Thread-114294] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:38:39.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:38:39.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:38:39.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:38:39.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:38:39.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:38:39.230 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:38:39.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:38:39.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:38:39.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:38:39.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.359815 -999.00  +22.50  28.20     11   -8.90 1 1 1 1 1   888    0 32.43 52.18 ----- 25.3 28.2 336.8 32.2 28.0 -29.4 26.9 -28.6 26.0 -28.9 26.6 -28.4
2025-11-03T10:38:39.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:38:39.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:38:39.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.359815
2025-11-03T10:38:39.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:38:39.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:38:39.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:38:39.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:38:39.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:38:39.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:38:04', tmtdew=38.32, humidity=6.65, cloud=0.0, wind=30.56, temperature=23.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:38:08.016', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:38:39.231 [DEBUG] [Thread-114294] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:38:39.307 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:38:39.319 [DEBUG] [Thread-114298] [transport.py] [_log()] starting thread (client mode): 0xed5ccd0
2025-11-03T10:38:39.319 [DEBUG] [Thread-114298] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:38:39.333 [DEBUG] [Thread-114298] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:38:39.333 [INFO] [Thread-114298] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:38:39.340 [DEBUG] [Thread-114298] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:38:39.340 [DEBUG] [Thread-114298] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:38:39.340 [DEBUG] [Thread-114298] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:38:39.340 [DEBUG] [Thread-114298] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:38:39.340 [DEBUG] [Thread-114298] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:38:39.340 [DEBUG] [Thread-114298] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:38:39.340 [DEBUG] [Thread-114298] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:38:39.340 [DEBUG] [Thread-114298] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:38:39.340 [DEBUG] [Thread-114298] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:38:39.340 [DEBUG] [Thread-114298] [transport.py] [_log()] client lang: <none>
2025-11-03T10:38:39.340 [DEBUG] [Thread-114298] [transport.py] [_log()] server lang: <none>
2025-11-03T10:38:39.340 [DEBUG] [Thread-114298] [transport.py] [_log()] kex follows: False
2025-11-03T10:38:39.340 [DEBUG] [Thread-114298] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:38:39.340 [DEBUG] [Thread-114298] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:38:39.340 [DEBUG] [Thread-114298] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:38:39.340 [DEBUG] [Thread-114298] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:38:39.340 [DEBUG] [Thread-114298] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:38:39.340 [DEBUG] [Thread-114298] [transport.py] [_log()] Compression: none
2025-11-03T10:38:39.340 [DEBUG] [Thread-114298] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:38:39.397 [DEBUG] [Thread-114298] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:38:39.397 [DEBUG] [Thread-114298] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:38:39.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:38:39.397 [DEBUG] [Thread-114298] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:38:39.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:38:39.454 [DEBUG] [Thread-114298] [transport.py] [_log()] userauth is OK
2025-11-03T10:38:39.454 [DEBUG] [Thread-114298] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:38:39.454 [DEBUG] [Thread-114298] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:38:39.455 [DEBUG] [Thread-114298] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:38:39.455 [DEBUG] [Thread-114298] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:38:39.468 [INFO] [Thread-114298] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:38:39.469 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:38:39.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:38:40.320 [DEBUG] [Thread-114298] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:38:40.320 [DEBUG] [Thread-114298] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:38:40.368 [DEBUG] [Thread-114298] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:38:40.368 [DEBUG] [Thread-114298] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:38:40.377 [DEBUG] [Thread-114298] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:38:40.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:38:40.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:38:40.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:38:40.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:38:40.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:38:40.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:38:40.414 [DEBUG] [Thread-114298] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:38:53.453 [DEBUG] [Thread-114300 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:38:53.594 [DEBUG] [Thread-114301 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:39:08.497 [DEBUG] [Thread-114302 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:39:10.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:39:10.436 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:39:10.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:39:11.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 38, 36), 38.81, 6.5, 0.0, 23.01, 23.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:39:11.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:38:36
2025-11-03T10:39:11.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:39:11.470 [DEBUG] [Thread-114303] [transport.py] [_log()] starting thread (client mode): 0xedb0ca0
2025-11-03T10:39:11.470 [DEBUG] [Thread-114303] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:39:11.491 [DEBUG] [Thread-114303] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:39:11.491 [INFO] [Thread-114303] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:39:11.495 [DEBUG] [Thread-114303] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:39:11.495 [DEBUG] [Thread-114303] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:39:11.495 [DEBUG] [Thread-114303] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:39:11.495 [DEBUG] [Thread-114303] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:39:11.495 [DEBUG] [Thread-114303] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:39:11.495 [DEBUG] [Thread-114303] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:39:11.495 [DEBUG] [Thread-114303] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:39:11.495 [DEBUG] [Thread-114303] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:39:11.495 [DEBUG] [Thread-114303] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:39:11.495 [DEBUG] [Thread-114303] [transport.py] [_log()] client lang: <none>
2025-11-03T10:39:11.495 [DEBUG] [Thread-114303] [transport.py] [_log()] server lang: <none>
2025-11-03T10:39:11.495 [DEBUG] [Thread-114303] [transport.py] [_log()] kex follows: False
2025-11-03T10:39:11.495 [DEBUG] [Thread-114303] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:39:11.495 [DEBUG] [Thread-114303] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:39:11.495 [DEBUG] [Thread-114303] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:39:11.495 [DEBUG] [Thread-114303] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:39:11.495 [DEBUG] [Thread-114303] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:39:11.495 [DEBUG] [Thread-114303] [transport.py] [_log()] Compression: none
2025-11-03T10:39:11.495 [DEBUG] [Thread-114303] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:39:11.510 [DEBUG] [Thread-114303] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:39:11.511 [DEBUG] [Thread-114303] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:39:11.511 [DEBUG] [Thread-114303] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:39:11.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:39:11.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:39:11.511 [DEBUG] [Thread-114303] [transport.py] [_log()] userauth is OK
2025-11-03T10:39:11.511 [DEBUG] [Thread-114303] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:39:11.512 [DEBUG] [Thread-114303] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:39:11.512 [DEBUG] [Thread-114303] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:39:11.512 [DEBUG] [Thread-114303] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:39:11.521 [INFO] [Thread-114303] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:39:11.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:39:12.085 [DEBUG] [Thread-114303] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:39:12.085 [DEBUG] [Thread-114303] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:39:12.086 [DEBUG] [Thread-114303] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:39:12.127 [DEBUG] [Thread-114303] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:39:12.127 [DEBUG] [Thread-114303] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:39:12.131 [DEBUG] [Thread-114303] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:39:12.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:39:12.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:39:12.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:39:12.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:39:12.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:39:12.153 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:39:12.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:39:12.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:39:12.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:39:12.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.360162 -999.00  +22.20  23.18     11   -9.10 1 1 1 1 1   888    0 31.74 54.57 ----- 18.8 23.2 334.8 36.9 28.0 -30.6 26.8 -30.3 25.9 -28.5 26.6 -28.2
2025-11-03T10:39:12.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:39:12.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:39:12.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.360162
2025-11-03T10:39:12.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:39:12.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:39:12.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:39:12.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:39:12.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:39:12.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:38:36', tmtdew=38.81, humidity=6.5, cloud=0.0, wind=23.01, temperature=23.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:38:37.997', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:39:12.156 [DEBUG] [Thread-114303] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:39:12.242 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:39:12.255 [DEBUG] [Thread-114306] [transport.py] [_log()] starting thread (client mode): 0xedb0700
2025-11-03T10:39:12.255 [DEBUG] [Thread-114306] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:39:12.270 [DEBUG] [Thread-114306] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:39:12.270 [INFO] [Thread-114306] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:39:12.278 [DEBUG] [Thread-114306] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:39:12.278 [DEBUG] [Thread-114306] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:39:12.278 [DEBUG] [Thread-114306] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:39:12.278 [DEBUG] [Thread-114306] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:39:12.278 [DEBUG] [Thread-114306] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:39:12.279 [DEBUG] [Thread-114306] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:39:12.279 [DEBUG] [Thread-114306] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:39:12.279 [DEBUG] [Thread-114306] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:39:12.279 [DEBUG] [Thread-114306] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:39:12.279 [DEBUG] [Thread-114306] [transport.py] [_log()] client lang: <none>
2025-11-03T10:39:12.279 [DEBUG] [Thread-114306] [transport.py] [_log()] server lang: <none>
2025-11-03T10:39:12.279 [DEBUG] [Thread-114306] [transport.py] [_log()] kex follows: False
2025-11-03T10:39:12.279 [DEBUG] [Thread-114306] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:39:12.279 [DEBUG] [Thread-114306] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:39:12.279 [DEBUG] [Thread-114306] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:39:12.279 [DEBUG] [Thread-114306] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:39:12.279 [DEBUG] [Thread-114306] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:39:12.279 [DEBUG] [Thread-114306] [transport.py] [_log()] Compression: none
2025-11-03T10:39:12.279 [DEBUG] [Thread-114306] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:39:12.336 [DEBUG] [Thread-114306] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:39:12.337 [DEBUG] [Thread-114306] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:39:12.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:39:12.338 [DEBUG] [Thread-114306] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:39:12.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:39:12.393 [DEBUG] [Thread-114306] [transport.py] [_log()] userauth is OK
2025-11-03T10:39:12.393 [DEBUG] [Thread-114306] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:39:12.393 [DEBUG] [Thread-114306] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:39:12.393 [DEBUG] [Thread-114306] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:39:12.394 [DEBUG] [Thread-114306] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:39:12.413 [INFO] [Thread-114306] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:39:12.414 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:39:12.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:39:13.270 [DEBUG] [Thread-114306] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:39:13.270 [DEBUG] [Thread-114306] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:39:13.318 [DEBUG] [Thread-114306] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:39:13.318 [DEBUG] [Thread-114306] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:39:13.327 [DEBUG] [Thread-114306] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:39:13.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:39:13.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:39:13.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:39:13.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:39:13.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:39:13.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:39:13.364 [DEBUG] [Thread-114306] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:39:23.535 [DEBUG] [Thread-114308 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:39:24.889 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:39:24.890 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:39:38.569 [DEBUG] [Thread-114309 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:39:43.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:39:43.360 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:39:43.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:39:44.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 39, 9), 39.07, 6.35, 0.0, 17.8, 22.88, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:39:44.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:39:09
2025-11-03T10:39:44.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:39:44.379 [DEBUG] [Thread-114310] [transport.py] [_log()] starting thread (client mode): 0xed5d930
2025-11-03T10:39:44.379 [DEBUG] [Thread-114310] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:39:44.393 [DEBUG] [Thread-114310] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:39:44.393 [INFO] [Thread-114310] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:39:44.396 [DEBUG] [Thread-114310] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:39:44.396 [DEBUG] [Thread-114310] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:39:44.396 [DEBUG] [Thread-114310] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:39:44.396 [DEBUG] [Thread-114310] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:39:44.396 [DEBUG] [Thread-114310] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:39:44.397 [DEBUG] [Thread-114310] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:39:44.397 [DEBUG] [Thread-114310] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:39:44.397 [DEBUG] [Thread-114310] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:39:44.397 [DEBUG] [Thread-114310] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:39:44.397 [DEBUG] [Thread-114310] [transport.py] [_log()] client lang: <none>
2025-11-03T10:39:44.397 [DEBUG] [Thread-114310] [transport.py] [_log()] server lang: <none>
2025-11-03T10:39:44.397 [DEBUG] [Thread-114310] [transport.py] [_log()] kex follows: False
2025-11-03T10:39:44.397 [DEBUG] [Thread-114310] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:39:44.397 [DEBUG] [Thread-114310] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:39:44.397 [DEBUG] [Thread-114310] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:39:44.397 [DEBUG] [Thread-114310] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:39:44.397 [DEBUG] [Thread-114310] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:39:44.397 [DEBUG] [Thread-114310] [transport.py] [_log()] Compression: none
2025-11-03T10:39:44.397 [DEBUG] [Thread-114310] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:39:44.413 [DEBUG] [Thread-114310] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:39:44.413 [DEBUG] [Thread-114310] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:39:44.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:39:44.414 [DEBUG] [Thread-114310] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:39:44.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:39:44.414 [DEBUG] [Thread-114310] [transport.py] [_log()] userauth is OK
2025-11-03T10:39:44.414 [DEBUG] [Thread-114310] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:39:44.414 [DEBUG] [Thread-114310] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:39:44.414 [DEBUG] [Thread-114310] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:39:44.414 [DEBUG] [Thread-114310] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:39:44.423 [INFO] [Thread-114310] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:39:44.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:39:45.050 [DEBUG] [Thread-114310] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:39:45.051 [DEBUG] [Thread-114310] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:39:45.051 [DEBUG] [Thread-114310] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:39:45.092 [DEBUG] [Thread-114310] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:39:45.092 [DEBUG] [Thread-114310] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:39:45.094 [DEBUG] [Thread-114310] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:39:45.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:39:45.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:39:45.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:39:45.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:39:45.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:39:45.110 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:39:45.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:39:45.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:39:45.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:39:45.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.360510 -999.00  +21.90  22.02     11   -9.40 1 1 1 1 1   888    0 32.67 60.97 ----- 25.6 22.0 323.0 42.4 27.9 -30.0 26.9 -28.7 26.0 -28.3 26.6 -29.4
2025-11-03T10:39:45.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:39:45.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:39:45.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.360510
2025-11-03T10:39:45.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:39:45.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:39:45.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:39:45.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:39:45.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:39:45.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:39:09', tmtdew=39.07, humidity=6.35, cloud=0.0, wind=17.8, temperature=22.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:39:08.064', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:39:45.113 [DEBUG] [Thread-114310] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:39:45.198 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:39:45.209 [DEBUG] [Thread-114313] [transport.py] [_log()] starting thread (client mode): 0xed05870
2025-11-03T10:39:45.209 [DEBUG] [Thread-114313] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:39:45.224 [DEBUG] [Thread-114313] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:39:45.224 [INFO] [Thread-114313] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:39:45.231 [DEBUG] [Thread-114313] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:39:45.231 [DEBUG] [Thread-114313] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:39:45.232 [DEBUG] [Thread-114313] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:39:45.232 [DEBUG] [Thread-114313] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:39:45.232 [DEBUG] [Thread-114313] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:39:45.232 [DEBUG] [Thread-114313] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:39:45.232 [DEBUG] [Thread-114313] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:39:45.232 [DEBUG] [Thread-114313] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:39:45.232 [DEBUG] [Thread-114313] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:39:45.232 [DEBUG] [Thread-114313] [transport.py] [_log()] client lang: <none>
2025-11-03T10:39:45.232 [DEBUG] [Thread-114313] [transport.py] [_log()] server lang: <none>
2025-11-03T10:39:45.233 [DEBUG] [Thread-114313] [transport.py] [_log()] kex follows: False
2025-11-03T10:39:45.233 [DEBUG] [Thread-114313] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:39:45.233 [DEBUG] [Thread-114313] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:39:45.233 [DEBUG] [Thread-114313] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:39:45.233 [DEBUG] [Thread-114313] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:39:45.233 [DEBUG] [Thread-114313] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:39:45.233 [DEBUG] [Thread-114313] [transport.py] [_log()] Compression: none
2025-11-03T10:39:45.233 [DEBUG] [Thread-114313] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:39:45.289 [DEBUG] [Thread-114313] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:39:45.290 [DEBUG] [Thread-114313] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:39:45.290 [DEBUG] [Thread-114313] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:39:45.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:39:45.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:39:45.345 [DEBUG] [Thread-114313] [transport.py] [_log()] userauth is OK
2025-11-03T10:39:45.345 [DEBUG] [Thread-114313] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:39:45.346 [DEBUG] [Thread-114313] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:39:45.346 [DEBUG] [Thread-114313] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:39:45.346 [DEBUG] [Thread-114313] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:39:45.360 [INFO] [Thread-114313] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:39:45.360 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:39:45.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:39:46.240 [DEBUG] [Thread-114313] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:39:46.240 [DEBUG] [Thread-114313] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:39:46.288 [DEBUG] [Thread-114313] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:39:46.288 [DEBUG] [Thread-114313] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:39:46.297 [DEBUG] [Thread-114313] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:39:46.306 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:39:46.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:39:46.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:39:46.324 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:39:46.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:39:46.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:39:46.332 [DEBUG] [Thread-114313] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:39:53.601 [DEBUG] [Thread-114315 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:39:53.666 [DEBUG] [Thread-114316 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:40:08.654 [DEBUG] [Thread-114317 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:40:16.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:40:16.349 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:40:16.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:40:17.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 39, 41), 39.06, 6.2, 0.0, 21.88, 22.96, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:40:17.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:39:41
2025-11-03T10:40:17.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:40:17.326 [DEBUG] [Thread-114318] [transport.py] [_log()] starting thread (client mode): 0xed419f0
2025-11-03T10:40:17.326 [DEBUG] [Thread-114318] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:40:17.341 [DEBUG] [Thread-114318] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:40:17.341 [INFO] [Thread-114318] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:40:17.344 [DEBUG] [Thread-114318] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:40:17.344 [DEBUG] [Thread-114318] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:40:17.344 [DEBUG] [Thread-114318] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:40:17.344 [DEBUG] [Thread-114318] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:40:17.344 [DEBUG] [Thread-114318] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:40:17.344 [DEBUG] [Thread-114318] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:40:17.344 [DEBUG] [Thread-114318] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:40:17.345 [DEBUG] [Thread-114318] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:40:17.345 [DEBUG] [Thread-114318] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:40:17.345 [DEBUG] [Thread-114318] [transport.py] [_log()] client lang: <none>
2025-11-03T10:40:17.345 [DEBUG] [Thread-114318] [transport.py] [_log()] server lang: <none>
2025-11-03T10:40:17.345 [DEBUG] [Thread-114318] [transport.py] [_log()] kex follows: False
2025-11-03T10:40:17.345 [DEBUG] [Thread-114318] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:40:17.345 [DEBUG] [Thread-114318] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:40:17.345 [DEBUG] [Thread-114318] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:40:17.345 [DEBUG] [Thread-114318] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:40:17.345 [DEBUG] [Thread-114318] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:40:17.345 [DEBUG] [Thread-114318] [transport.py] [_log()] Compression: none
2025-11-03T10:40:17.345 [DEBUG] [Thread-114318] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:40:17.361 [DEBUG] [Thread-114318] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:40:17.361 [DEBUG] [Thread-114318] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:40:17.361 [DEBUG] [Thread-114318] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:40:17.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:40:17.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:40:17.362 [DEBUG] [Thread-114318] [transport.py] [_log()] userauth is OK
2025-11-03T10:40:17.362 [DEBUG] [Thread-114318] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:40:17.362 [DEBUG] [Thread-114318] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:40:17.362 [DEBUG] [Thread-114318] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:40:17.362 [DEBUG] [Thread-114318] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:40:17.376 [INFO] [Thread-114318] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:40:17.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:40:18.000 [DEBUG] [Thread-114318] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:40:18.000 [DEBUG] [Thread-114318] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:40:18.001 [DEBUG] [Thread-114318] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:40:18.041 [DEBUG] [Thread-114318] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:40:18.041 [DEBUG] [Thread-114318] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:40:18.044 [DEBUG] [Thread-114318] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:40:18.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:40:18.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:40:18.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:40:18.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:40:18.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:40:18.069 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:40:18.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:40:18.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:40:18.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:40:18.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.360857 -999.00  +21.80  22.31     11   -9.30 1 1 1 1 1   888    0 32.26 59.11 ----- 24.1 22.3 333.4 27.2 27.9 -28.9 26.8 -27.9 25.9 -27.7 26.7 -27.8
2025-11-03T10:40:18.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:40:18.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:40:18.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.360857
2025-11-03T10:40:18.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:40:18.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:40:18.071 [DEBUG] [Thread-114318] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:40:18.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:40:18.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:40:18.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:40:18.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:39:41', tmtdew=39.06, humidity=6.2, cloud=0.0, wind=21.88, temperature=22.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:39:38.045', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:40:18.152 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:40:18.165 [DEBUG] [Thread-114321] [transport.py] [_log()] starting thread (client mode): 0xed05ae0
2025-11-03T10:40:18.165 [DEBUG] [Thread-114321] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:40:18.180 [DEBUG] [Thread-114321] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:40:18.180 [INFO] [Thread-114321] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:40:18.188 [DEBUG] [Thread-114321] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:40:18.188 [DEBUG] [Thread-114321] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:40:18.188 [DEBUG] [Thread-114321] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:40:18.188 [DEBUG] [Thread-114321] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:40:18.188 [DEBUG] [Thread-114321] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:40:18.188 [DEBUG] [Thread-114321] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:40:18.188 [DEBUG] [Thread-114321] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:40:18.188 [DEBUG] [Thread-114321] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:40:18.188 [DEBUG] [Thread-114321] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:40:18.188 [DEBUG] [Thread-114321] [transport.py] [_log()] client lang: <none>
2025-11-03T10:40:18.188 [DEBUG] [Thread-114321] [transport.py] [_log()] server lang: <none>
2025-11-03T10:40:18.188 [DEBUG] [Thread-114321] [transport.py] [_log()] kex follows: False
2025-11-03T10:40:18.189 [DEBUG] [Thread-114321] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:40:18.189 [DEBUG] [Thread-114321] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:40:18.189 [DEBUG] [Thread-114321] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:40:18.189 [DEBUG] [Thread-114321] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:40:18.189 [DEBUG] [Thread-114321] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:40:18.189 [DEBUG] [Thread-114321] [transport.py] [_log()] Compression: none
2025-11-03T10:40:18.189 [DEBUG] [Thread-114321] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:40:18.248 [DEBUG] [Thread-114321] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:40:18.248 [DEBUG] [Thread-114321] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:40:18.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:40:18.249 [DEBUG] [Thread-114321] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:40:18.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:40:18.303 [DEBUG] [Thread-114321] [transport.py] [_log()] userauth is OK
2025-11-03T10:40:18.304 [DEBUG] [Thread-114321] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:40:18.304 [DEBUG] [Thread-114321] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:40:18.304 [DEBUG] [Thread-114321] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:40:18.304 [DEBUG] [Thread-114321] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:40:18.323 [INFO] [Thread-114321] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:40:18.323 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:40:18.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:40:19.234 [DEBUG] [Thread-114321] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:40:19.234 [DEBUG] [Thread-114321] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:40:19.282 [DEBUG] [Thread-114321] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:40:19.282 [DEBUG] [Thread-114321] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:40:19.291 [DEBUG] [Thread-114321] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:40:19.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:40:19.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:40:19.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:40:19.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:40:19.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:40:19.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:40:19.337 [DEBUG] [Thread-114321] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:40:23.686 [DEBUG] [Thread-114323 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:40:25.030 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:40:25.031 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:40:38.728 [DEBUG] [Thread-114324 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:40:49.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:40:49.360 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:40:49.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:40:50.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 40, 14), 39.15, 6.15, 0.0, 23.43, 22.96, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:40:50.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:40:14
2025-11-03T10:40:50.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:40:50.408 [DEBUG] [Thread-114325] [transport.py] [_log()] starting thread (client mode): 0xedb0730
2025-11-03T10:40:50.409 [DEBUG] [Thread-114325] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:40:50.419 [DEBUG] [Thread-114325] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:40:50.419 [INFO] [Thread-114325] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:40:50.421 [DEBUG] [Thread-114325] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:40:50.421 [DEBUG] [Thread-114325] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:40:50.421 [DEBUG] [Thread-114325] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:40:50.421 [DEBUG] [Thread-114325] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:40:50.421 [DEBUG] [Thread-114325] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:40:50.421 [DEBUG] [Thread-114325] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:40:50.421 [DEBUG] [Thread-114325] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:40:50.421 [DEBUG] [Thread-114325] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:40:50.421 [DEBUG] [Thread-114325] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:40:50.421 [DEBUG] [Thread-114325] [transport.py] [_log()] client lang: <none>
2025-11-03T10:40:50.421 [DEBUG] [Thread-114325] [transport.py] [_log()] server lang: <none>
2025-11-03T10:40:50.421 [DEBUG] [Thread-114325] [transport.py] [_log()] kex follows: False
2025-11-03T10:40:50.421 [DEBUG] [Thread-114325] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:40:50.421 [DEBUG] [Thread-114325] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:40:50.421 [DEBUG] [Thread-114325] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:40:50.421 [DEBUG] [Thread-114325] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:40:50.421 [DEBUG] [Thread-114325] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:40:50.421 [DEBUG] [Thread-114325] [transport.py] [_log()] Compression: none
2025-11-03T10:40:50.422 [DEBUG] [Thread-114325] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:40:50.437 [DEBUG] [Thread-114325] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:40:50.437 [DEBUG] [Thread-114325] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:40:50.438 [DEBUG] [Thread-114325] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:40:50.438 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:40:50.438 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:40:50.438 [DEBUG] [Thread-114325] [transport.py] [_log()] userauth is OK
2025-11-03T10:40:50.438 [DEBUG] [Thread-114325] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:40:50.438 [DEBUG] [Thread-114325] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:40:50.438 [DEBUG] [Thread-114325] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:40:50.438 [DEBUG] [Thread-114325] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:40:50.447 [INFO] [Thread-114325] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:40:50.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:40:51.037 [DEBUG] [Thread-114325] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:40:51.037 [DEBUG] [Thread-114325] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:40:51.037 [DEBUG] [Thread-114325] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:40:51.078 [DEBUG] [Thread-114325] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:40:51.079 [DEBUG] [Thread-114325] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:40:51.080 [DEBUG] [Thread-114325] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:40:51.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:40:51.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:40:51.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:40:51.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:40:51.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:40:51.090 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:40:51.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:40:51.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:40:51.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:40:51.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.361551 -999.00  +21.80  19.89     11   -9.20 1 1 1 1 1   888    0 31.68 59.18 ----- 26.4 19.9 358.6 39.5 28.1 -29.5 26.9 -29.1 26.1 -28.1 26.7 -27.9
2025-11-03T10:40:51.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:40:51.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:40:51.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.361551
2025-11-03T10:40:51.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:40:51.098 [DEBUG] [Thread-114325] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:40:51.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:40:51.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:40:51.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:40:51.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:40:51.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:40:14', tmtdew=39.15, humidity=6.15, cloud=0.0, wind=23.43, temperature=22.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:40:38.006', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:40:51.172 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:40:51.183 [DEBUG] [Thread-114328] [transport.py] [_log()] starting thread (client mode): 0xed67970
2025-11-03T10:40:51.183 [DEBUG] [Thread-114328] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:40:51.203 [DEBUG] [Thread-114328] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:40:51.203 [INFO] [Thread-114328] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:40:51.214 [DEBUG] [Thread-114328] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:40:51.214 [DEBUG] [Thread-114328] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:40:51.214 [DEBUG] [Thread-114328] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:40:51.214 [DEBUG] [Thread-114328] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:40:51.214 [DEBUG] [Thread-114328] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:40:51.214 [DEBUG] [Thread-114328] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:40:51.214 [DEBUG] [Thread-114328] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:40:51.214 [DEBUG] [Thread-114328] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:40:51.214 [DEBUG] [Thread-114328] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:40:51.214 [DEBUG] [Thread-114328] [transport.py] [_log()] client lang: <none>
2025-11-03T10:40:51.214 [DEBUG] [Thread-114328] [transport.py] [_log()] server lang: <none>
2025-11-03T10:40:51.214 [DEBUG] [Thread-114328] [transport.py] [_log()] kex follows: False
2025-11-03T10:40:51.214 [DEBUG] [Thread-114328] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:40:51.214 [DEBUG] [Thread-114328] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:40:51.214 [DEBUG] [Thread-114328] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:40:51.214 [DEBUG] [Thread-114328] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:40:51.214 [DEBUG] [Thread-114328] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:40:51.214 [DEBUG] [Thread-114328] [transport.py] [_log()] Compression: none
2025-11-03T10:40:51.214 [DEBUG] [Thread-114328] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:40:51.268 [DEBUG] [Thread-114328] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:40:51.268 [DEBUG] [Thread-114328] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:40:51.268 [DEBUG] [Thread-114328] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:40:51.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:40:51.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:40:51.324 [DEBUG] [Thread-114328] [transport.py] [_log()] userauth is OK
2025-11-03T10:40:51.324 [DEBUG] [Thread-114328] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:40:51.324 [DEBUG] [Thread-114328] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:40:51.324 [DEBUG] [Thread-114328] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:40:51.324 [DEBUG] [Thread-114328] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:40:51.339 [INFO] [Thread-114328] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:40:51.339 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:40:51.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:40:52.225 [DEBUG] [Thread-114328] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:40:52.226 [DEBUG] [Thread-114328] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:40:52.274 [DEBUG] [Thread-114328] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:40:52.274 [DEBUG] [Thread-114328] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:40:52.283 [DEBUG] [Thread-114328] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:40:52.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:40:52.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:40:52.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:40:52.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:40:52.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:40:52.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:40:52.319 [DEBUG] [Thread-114328] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:40:53.738 [DEBUG] [Thread-114330 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:40:53.757 [DEBUG] [Thread-114331 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:41:08.807 [DEBUG] [Thread-114332 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:41:22.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:41:22.343 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:41:22.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:41:23.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 41, 19), 39.46, 5.86, 0.0, 26.87, 22.61, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:41:23.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:41:19
2025-11-03T10:41:23.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:41:23.371 [DEBUG] [Thread-114333] [transport.py] [_log()] starting thread (client mode): 0xed413f0
2025-11-03T10:41:23.371 [DEBUG] [Thread-114333] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:41:23.391 [DEBUG] [Thread-114333] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:41:23.392 [INFO] [Thread-114333] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:41:23.395 [DEBUG] [Thread-114333] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:41:23.395 [DEBUG] [Thread-114333] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:41:23.395 [DEBUG] [Thread-114333] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:41:23.395 [DEBUG] [Thread-114333] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:41:23.395 [DEBUG] [Thread-114333] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:41:23.395 [DEBUG] [Thread-114333] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:41:23.396 [DEBUG] [Thread-114333] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:41:23.396 [DEBUG] [Thread-114333] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:41:23.396 [DEBUG] [Thread-114333] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:41:23.396 [DEBUG] [Thread-114333] [transport.py] [_log()] client lang: <none>
2025-11-03T10:41:23.396 [DEBUG] [Thread-114333] [transport.py] [_log()] server lang: <none>
2025-11-03T10:41:23.396 [DEBUG] [Thread-114333] [transport.py] [_log()] kex follows: False
2025-11-03T10:41:23.396 [DEBUG] [Thread-114333] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:41:23.396 [DEBUG] [Thread-114333] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:41:23.396 [DEBUG] [Thread-114333] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:41:23.396 [DEBUG] [Thread-114333] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:41:23.396 [DEBUG] [Thread-114333] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:41:23.397 [DEBUG] [Thread-114333] [transport.py] [_log()] Compression: none
2025-11-03T10:41:23.397 [DEBUG] [Thread-114333] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:41:23.416 [DEBUG] [Thread-114333] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:41:23.417 [DEBUG] [Thread-114333] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:41:23.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:41:23.418 [DEBUG] [Thread-114333] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:41:23.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:41:23.461 [DEBUG] [Thread-114333] [transport.py] [_log()] userauth is OK
2025-11-03T10:41:23.461 [DEBUG] [Thread-114333] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:41:23.461 [DEBUG] [Thread-114333] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:41:23.461 [DEBUG] [Thread-114333] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:41:23.462 [DEBUG] [Thread-114333] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:41:23.495 [INFO] [Thread-114333] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:41:23.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:41:23.840 [DEBUG] [Thread-114335 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:41:24.127 [DEBUG] [Thread-114333] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:41:24.127 [DEBUG] [Thread-114333] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:41:24.128 [DEBUG] [Thread-114333] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:41:24.168 [DEBUG] [Thread-114333] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:41:24.169 [DEBUG] [Thread-114333] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:41:24.183 [DEBUG] [Thread-114333] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:41:24.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:41:24.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:41:24.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:41:24.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:41:24.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:41:24.203 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:41:24.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:41:24.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:41:24.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:41:24.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.361899 -999.00  +21.70  25.76     11   -9.50 1 1 1 1 1   888    0 31.80 61.80 ----- 28.2 25.8 324.9 38.3 28.0 -29.4 26.9 -29.2 26.0 -28.2 26.6 -32.6
2025-11-03T10:41:24.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:41:24.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:41:24.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.361899
2025-11-03T10:41:24.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:41:24.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:41:24.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:41:24.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:41:24.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:41:24.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:41:19', tmtdew=39.46, humidity=5.86, cloud=0.0, wind=26.87, temperature=22.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:41:08.074', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:41:24.204 [DEBUG] [Thread-114333] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:41:24.279 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:41:24.291 [DEBUG] [Thread-114337] [transport.py] [_log()] starting thread (client mode): 0xed5d720
2025-11-03T10:41:24.292 [DEBUG] [Thread-114337] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:41:24.307 [DEBUG] [Thread-114337] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:41:24.307 [INFO] [Thread-114337] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:41:24.314 [DEBUG] [Thread-114337] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:41:24.314 [DEBUG] [Thread-114337] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:41:24.314 [DEBUG] [Thread-114337] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:41:24.314 [DEBUG] [Thread-114337] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:41:24.314 [DEBUG] [Thread-114337] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:41:24.314 [DEBUG] [Thread-114337] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:41:24.314 [DEBUG] [Thread-114337] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:41:24.314 [DEBUG] [Thread-114337] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:41:24.315 [DEBUG] [Thread-114337] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:41:24.315 [DEBUG] [Thread-114337] [transport.py] [_log()] client lang: <none>
2025-11-03T10:41:24.315 [DEBUG] [Thread-114337] [transport.py] [_log()] server lang: <none>
2025-11-03T10:41:24.315 [DEBUG] [Thread-114337] [transport.py] [_log()] kex follows: False
2025-11-03T10:41:24.315 [DEBUG] [Thread-114337] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:41:24.315 [DEBUG] [Thread-114337] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:41:24.315 [DEBUG] [Thread-114337] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:41:24.315 [DEBUG] [Thread-114337] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:41:24.315 [DEBUG] [Thread-114337] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:41:24.315 [DEBUG] [Thread-114337] [transport.py] [_log()] Compression: none
2025-11-03T10:41:24.315 [DEBUG] [Thread-114337] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:41:24.373 [DEBUG] [Thread-114337] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:41:24.373 [DEBUG] [Thread-114337] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:41:24.374 [DEBUG] [Thread-114337] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:41:24.374 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:41:24.374 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:41:24.429 [DEBUG] [Thread-114337] [transport.py] [_log()] userauth is OK
2025-11-03T10:41:24.429 [DEBUG] [Thread-114337] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:41:24.429 [DEBUG] [Thread-114337] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:41:24.429 [DEBUG] [Thread-114337] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:41:24.429 [DEBUG] [Thread-114337] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:41:24.443 [INFO] [Thread-114337] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:41:24.443 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:41:24.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:41:25.182 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:41:25.182 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:41:25.322 [DEBUG] [Thread-114337] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:41:25.322 [DEBUG] [Thread-114337] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:41:25.371 [DEBUG] [Thread-114337] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:41:25.371 [DEBUG] [Thread-114337] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:41:25.379 [DEBUG] [Thread-114337] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:41:25.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:41:25.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:41:25.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:41:25.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:41:25.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:41:25.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:41:25.410 [DEBUG] [Thread-114337] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:41:38.867 [DEBUG] [Thread-114339 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:41:53.788 [DEBUG] [Thread-114340 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:41:53.928 [DEBUG] [Thread-114341 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:41:55.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:41:55.413 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:41:55.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:41:56.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 41, 51), 38.87, 6.21, 0.0, 28.51, 22.68, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:41:56.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:41:51
2025-11-03T10:41:56.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:41:56.439 [DEBUG] [Thread-114342] [transport.py] [_log()] starting thread (client mode): 0xed37b20
2025-11-03T10:41:56.440 [DEBUG] [Thread-114342] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:41:56.461 [DEBUG] [Thread-114342] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:41:56.461 [INFO] [Thread-114342] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:41:56.464 [DEBUG] [Thread-114342] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:41:56.465 [DEBUG] [Thread-114342] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:41:56.465 [DEBUG] [Thread-114342] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:41:56.465 [DEBUG] [Thread-114342] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:41:56.465 [DEBUG] [Thread-114342] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:41:56.465 [DEBUG] [Thread-114342] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:41:56.465 [DEBUG] [Thread-114342] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:41:56.465 [DEBUG] [Thread-114342] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:41:56.465 [DEBUG] [Thread-114342] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:41:56.465 [DEBUG] [Thread-114342] [transport.py] [_log()] client lang: <none>
2025-11-03T10:41:56.465 [DEBUG] [Thread-114342] [transport.py] [_log()] server lang: <none>
2025-11-03T10:41:56.465 [DEBUG] [Thread-114342] [transport.py] [_log()] kex follows: False
2025-11-03T10:41:56.465 [DEBUG] [Thread-114342] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:41:56.465 [DEBUG] [Thread-114342] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:41:56.465 [DEBUG] [Thread-114342] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:41:56.466 [DEBUG] [Thread-114342] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:41:56.466 [DEBUG] [Thread-114342] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:41:56.466 [DEBUG] [Thread-114342] [transport.py] [_log()] Compression: none
2025-11-03T10:41:56.466 [DEBUG] [Thread-114342] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:41:56.483 [DEBUG] [Thread-114342] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:41:56.484 [DEBUG] [Thread-114342] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:41:56.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:41:56.485 [DEBUG] [Thread-114342] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:41:56.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:41:56.486 [DEBUG] [Thread-114342] [transport.py] [_log()] userauth is OK
2025-11-03T10:41:56.486 [DEBUG] [Thread-114342] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:41:56.487 [DEBUG] [Thread-114342] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:41:56.487 [DEBUG] [Thread-114342] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:41:56.487 [DEBUG] [Thread-114342] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:41:56.500 [INFO] [Thread-114342] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:41:56.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:41:57.145 [DEBUG] [Thread-114342] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:41:57.145 [DEBUG] [Thread-114342] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:41:57.145 [DEBUG] [Thread-114342] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:41:57.186 [DEBUG] [Thread-114342] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:41:57.186 [DEBUG] [Thread-114342] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:41:57.189 [DEBUG] [Thread-114342] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:41:57.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:41:57.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:41:57.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:41:57.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:41:57.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:41:57.213 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:41:57.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:41:57.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:41:57.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:41:57.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.362247 -999.00  +21.70  22.81     11   -9.80 1 1 1 1 1   888    0 32.02 66.23 ----- 30.9 22.8 341.0 41.8 28.0 -28.2 26.9 -27.2 26.1 -27.6 26.7 -28.0
2025-11-03T10:41:57.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:41:57.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:41:57.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.362247
2025-11-03T10:41:57.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:41:57.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:41:57.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:41:57.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:41:57.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:41:57.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:41:51', tmtdew=38.87, humidity=6.21, cloud=0.0, wind=28.51, temperature=22.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:41:38.141', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:41:57.217 [DEBUG] [Thread-114342] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:41:57.298 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:41:57.309 [DEBUG] [Thread-114345] [transport.py] [_log()] starting thread (client mode): 0xed35d20
2025-11-03T10:41:57.309 [DEBUG] [Thread-114345] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:41:57.323 [DEBUG] [Thread-114345] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:41:57.324 [INFO] [Thread-114345] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:41:57.331 [DEBUG] [Thread-114345] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:41:57.331 [DEBUG] [Thread-114345] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:41:57.331 [DEBUG] [Thread-114345] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:41:57.331 [DEBUG] [Thread-114345] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:41:57.332 [DEBUG] [Thread-114345] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:41:57.332 [DEBUG] [Thread-114345] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:41:57.332 [DEBUG] [Thread-114345] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:41:57.332 [DEBUG] [Thread-114345] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:41:57.332 [DEBUG] [Thread-114345] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:41:57.332 [DEBUG] [Thread-114345] [transport.py] [_log()] client lang: <none>
2025-11-03T10:41:57.332 [DEBUG] [Thread-114345] [transport.py] [_log()] server lang: <none>
2025-11-03T10:41:57.332 [DEBUG] [Thread-114345] [transport.py] [_log()] kex follows: False
2025-11-03T10:41:57.332 [DEBUG] [Thread-114345] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:41:57.332 [DEBUG] [Thread-114345] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:41:57.332 [DEBUG] [Thread-114345] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:41:57.332 [DEBUG] [Thread-114345] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:41:57.332 [DEBUG] [Thread-114345] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:41:57.332 [DEBUG] [Thread-114345] [transport.py] [_log()] Compression: none
2025-11-03T10:41:57.332 [DEBUG] [Thread-114345] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:41:57.391 [DEBUG] [Thread-114345] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:41:57.392 [DEBUG] [Thread-114345] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:41:57.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:41:57.393 [DEBUG] [Thread-114345] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:41:57.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:41:57.448 [DEBUG] [Thread-114345] [transport.py] [_log()] userauth is OK
2025-11-03T10:41:57.448 [DEBUG] [Thread-114345] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:41:57.448 [DEBUG] [Thread-114345] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:41:57.448 [DEBUG] [Thread-114345] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:41:57.448 [DEBUG] [Thread-114345] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:41:57.467 [INFO] [Thread-114345] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:41:57.467 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:41:57.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:41:58.304 [DEBUG] [Thread-114345] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:41:58.304 [DEBUG] [Thread-114345] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:41:58.352 [DEBUG] [Thread-114345] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:41:58.352 [DEBUG] [Thread-114345] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:41:58.361 [DEBUG] [Thread-114345] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:41:58.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:41:58.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:41:58.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:41:58.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:41:58.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:41:58.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:41:58.402 [DEBUG] [Thread-114345] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:42:08.956 [DEBUG] [Thread-114347 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:42:24.023 [DEBUG] [Thread-114348 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:42:25.324 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:42:25.325 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:42:28.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:42:28.420 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:42:28.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:42:29.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 42, 23), 38.81, 6.28, 0.0, 32.08, 22.88, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:42:29.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:42:23
2025-11-03T10:42:29.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:42:29.450 [DEBUG] [Thread-114349] [transport.py] [_log()] starting thread (client mode): 0xed5e0e0
2025-11-03T10:42:29.450 [DEBUG] [Thread-114349] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:42:29.470 [DEBUG] [Thread-114349] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:42:29.471 [INFO] [Thread-114349] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:42:29.474 [DEBUG] [Thread-114349] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:42:29.474 [DEBUG] [Thread-114349] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:42:29.474 [DEBUG] [Thread-114349] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:42:29.474 [DEBUG] [Thread-114349] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:42:29.474 [DEBUG] [Thread-114349] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:42:29.474 [DEBUG] [Thread-114349] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:42:29.474 [DEBUG] [Thread-114349] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:42:29.474 [DEBUG] [Thread-114349] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:42:29.474 [DEBUG] [Thread-114349] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:42:29.474 [DEBUG] [Thread-114349] [transport.py] [_log()] client lang: <none>
2025-11-03T10:42:29.474 [DEBUG] [Thread-114349] [transport.py] [_log()] server lang: <none>
2025-11-03T10:42:29.474 [DEBUG] [Thread-114349] [transport.py] [_log()] kex follows: False
2025-11-03T10:42:29.474 [DEBUG] [Thread-114349] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:42:29.474 [DEBUG] [Thread-114349] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:42:29.474 [DEBUG] [Thread-114349] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:42:29.474 [DEBUG] [Thread-114349] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:42:29.474 [DEBUG] [Thread-114349] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:42:29.474 [DEBUG] [Thread-114349] [transport.py] [_log()] Compression: none
2025-11-03T10:42:29.474 [DEBUG] [Thread-114349] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:42:29.492 [DEBUG] [Thread-114349] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:42:29.492 [DEBUG] [Thread-114349] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:42:29.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:42:29.503 [DEBUG] [Thread-114349] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:42:29.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:42:29.505 [DEBUG] [Thread-114349] [transport.py] [_log()] userauth is OK
2025-11-03T10:42:29.505 [DEBUG] [Thread-114349] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:42:29.505 [DEBUG] [Thread-114349] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:42:29.505 [DEBUG] [Thread-114349] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:42:29.505 [DEBUG] [Thread-114349] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:42:29.529 [INFO] [Thread-114349] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:42:29.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:42:30.136 [DEBUG] [Thread-114349] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:42:30.136 [DEBUG] [Thread-114349] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:42:30.137 [DEBUG] [Thread-114349] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:42:30.177 [DEBUG] [Thread-114349] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:42:30.177 [DEBUG] [Thread-114349] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:42:30.181 [DEBUG] [Thread-114349] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:42:30.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:42:30.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:42:30.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:42:30.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:42:30.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:42:30.216 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:42:30.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:42:30.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:42:30.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:42:30.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.362593 -999.00  +21.70  20.53     11   -9.50 1 1 1 1 1   888    0 32.09 62.38 ----- 19.0 20.5 359.0 25.5 27.9 -29.2 26.7 -28.1 25.9 -27.7 26.7 -27.4
2025-11-03T10:42:30.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:42:30.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:42:30.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.362593
2025-11-03T10:42:30.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:42:30.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:42:30.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:42:30.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:42:30.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:42:30.219 [DEBUG] [Thread-114349] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:42:30.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:42:23', tmtdew=38.81, humidity=6.28, cloud=0.0, wind=32.08, temperature=22.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:42:08.035', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:42:30.303 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:42:30.314 [DEBUG] [Thread-114352] [transport.py] [_log()] starting thread (client mode): 0xed5e800
2025-11-03T10:42:30.314 [DEBUG] [Thread-114352] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:42:30.328 [DEBUG] [Thread-114352] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:42:30.328 [INFO] [Thread-114352] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:42:30.336 [DEBUG] [Thread-114352] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:42:30.336 [DEBUG] [Thread-114352] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:42:30.336 [DEBUG] [Thread-114352] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:42:30.336 [DEBUG] [Thread-114352] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:42:30.336 [DEBUG] [Thread-114352] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:42:30.336 [DEBUG] [Thread-114352] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:42:30.336 [DEBUG] [Thread-114352] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:42:30.336 [DEBUG] [Thread-114352] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:42:30.336 [DEBUG] [Thread-114352] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:42:30.336 [DEBUG] [Thread-114352] [transport.py] [_log()] client lang: <none>
2025-11-03T10:42:30.336 [DEBUG] [Thread-114352] [transport.py] [_log()] server lang: <none>
2025-11-03T10:42:30.336 [DEBUG] [Thread-114352] [transport.py] [_log()] kex follows: False
2025-11-03T10:42:30.336 [DEBUG] [Thread-114352] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:42:30.336 [DEBUG] [Thread-114352] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:42:30.336 [DEBUG] [Thread-114352] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:42:30.337 [DEBUG] [Thread-114352] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:42:30.337 [DEBUG] [Thread-114352] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:42:30.337 [DEBUG] [Thread-114352] [transport.py] [_log()] Compression: none
2025-11-03T10:42:30.337 [DEBUG] [Thread-114352] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:42:30.397 [DEBUG] [Thread-114352] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:42:30.397 [DEBUG] [Thread-114352] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:42:30.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:42:30.398 [DEBUG] [Thread-114352] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:42:30.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:42:30.456 [DEBUG] [Thread-114352] [transport.py] [_log()] userauth is OK
2025-11-03T10:42:30.457 [DEBUG] [Thread-114352] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:42:30.457 [DEBUG] [Thread-114352] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:42:30.457 [DEBUG] [Thread-114352] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:42:30.457 [DEBUG] [Thread-114352] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:42:30.475 [INFO] [Thread-114352] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:42:30.476 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:42:30.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:42:31.350 [DEBUG] [Thread-114352] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:42:31.351 [DEBUG] [Thread-114352] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:42:31.398 [DEBUG] [Thread-114352] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:42:31.398 [DEBUG] [Thread-114352] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:42:31.407 [DEBUG] [Thread-114352] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:42:31.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:42:31.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:42:31.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:42:31.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:42:31.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:42:31.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:42:31.444 [DEBUG] [Thread-114352] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:42:39.056 [DEBUG] [Thread-114354 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:42:53.836 [DEBUG] [Thread-114355 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:42:54.097 [DEBUG] [Thread-114356 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:43:01.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:43:01.466 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:43:01.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:43:02.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 42, 56), 39.16, 6.18, 0.0, 26.34, 22.99, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:43:02.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:42:56
2025-11-03T10:43:02.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:43:02.481 [DEBUG] [Thread-114357] [transport.py] [_log()] starting thread (client mode): 0xed407c0
2025-11-03T10:43:02.481 [DEBUG] [Thread-114357] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:43:02.501 [DEBUG] [Thread-114357] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:43:02.501 [INFO] [Thread-114357] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:43:02.503 [DEBUG] [Thread-114357] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:43:02.503 [DEBUG] [Thread-114357] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:43:02.503 [DEBUG] [Thread-114357] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:43:02.503 [DEBUG] [Thread-114357] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:43:02.503 [DEBUG] [Thread-114357] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:43:02.504 [DEBUG] [Thread-114357] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:43:02.504 [DEBUG] [Thread-114357] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:43:02.504 [DEBUG] [Thread-114357] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:43:02.504 [DEBUG] [Thread-114357] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:43:02.504 [DEBUG] [Thread-114357] [transport.py] [_log()] client lang: <none>
2025-11-03T10:43:02.504 [DEBUG] [Thread-114357] [transport.py] [_log()] server lang: <none>
2025-11-03T10:43:02.504 [DEBUG] [Thread-114357] [transport.py] [_log()] kex follows: False
2025-11-03T10:43:02.504 [DEBUG] [Thread-114357] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:43:02.504 [DEBUG] [Thread-114357] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:43:02.504 [DEBUG] [Thread-114357] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:43:02.504 [DEBUG] [Thread-114357] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:43:02.504 [DEBUG] [Thread-114357] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:43:02.504 [DEBUG] [Thread-114357] [transport.py] [_log()] Compression: none
2025-11-03T10:43:02.504 [DEBUG] [Thread-114357] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:43:02.521 [DEBUG] [Thread-114357] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:43:02.521 [DEBUG] [Thread-114357] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:43:02.522 [DEBUG] [Thread-114357] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:43:02.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:43:02.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:43:02.523 [DEBUG] [Thread-114357] [transport.py] [_log()] userauth is OK
2025-11-03T10:43:02.524 [DEBUG] [Thread-114357] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:43:02.524 [DEBUG] [Thread-114357] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:43:02.524 [DEBUG] [Thread-114357] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:43:02.524 [DEBUG] [Thread-114357] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:43:02.538 [INFO] [Thread-114357] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:43:02.539 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:43:03.173 [DEBUG] [Thread-114357] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:43:03.173 [DEBUG] [Thread-114357] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:43:03.173 [DEBUG] [Thread-114357] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:43:03.214 [DEBUG] [Thread-114357] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:43:03.214 [DEBUG] [Thread-114357] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:43:03.217 [DEBUG] [Thread-114357] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:43:03.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:43:03.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:43:03.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:43:03.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:43:03.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:43:03.237 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:43:03.237 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:43:03.237 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:43:03.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:43:03.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.362940 -999.00  +22.10  21.55     12   -8.50 1 1 1 1 1   888    0 31.90 65.01 ----- 22.8 21.6 357.3 27.0 28.0 -28.6 26.9 -28.0 25.9 -27.9 26.7 -28.6
2025-11-03T10:43:03.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:43:03.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:43:03.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.362940
2025-11-03T10:43:03.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:43:03.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:43:03.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:43:03.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:43:03.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:43:03.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:42:56', tmtdew=39.16, humidity=6.18, cloud=0.0, wind=26.34, temperature=22.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:42:38.016', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:43:03.246 [DEBUG] [Thread-114357] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:43:03.319 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:43:03.330 [DEBUG] [Thread-114360] [transport.py] [_log()] starting thread (client mode): 0xed5e6b0
2025-11-03T10:43:03.330 [DEBUG] [Thread-114360] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:43:03.345 [DEBUG] [Thread-114360] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:43:03.345 [INFO] [Thread-114360] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:43:03.356 [DEBUG] [Thread-114360] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:43:03.356 [DEBUG] [Thread-114360] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:43:03.356 [DEBUG] [Thread-114360] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:43:03.356 [DEBUG] [Thread-114360] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:43:03.356 [DEBUG] [Thread-114360] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:43:03.356 [DEBUG] [Thread-114360] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:43:03.356 [DEBUG] [Thread-114360] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:43:03.356 [DEBUG] [Thread-114360] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:43:03.356 [DEBUG] [Thread-114360] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:43:03.356 [DEBUG] [Thread-114360] [transport.py] [_log()] client lang: <none>
2025-11-03T10:43:03.357 [DEBUG] [Thread-114360] [transport.py] [_log()] server lang: <none>
2025-11-03T10:43:03.357 [DEBUG] [Thread-114360] [transport.py] [_log()] kex follows: False
2025-11-03T10:43:03.357 [DEBUG] [Thread-114360] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:43:03.357 [DEBUG] [Thread-114360] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:43:03.357 [DEBUG] [Thread-114360] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:43:03.357 [DEBUG] [Thread-114360] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:43:03.357 [DEBUG] [Thread-114360] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:43:03.357 [DEBUG] [Thread-114360] [transport.py] [_log()] Compression: none
2025-11-03T10:43:03.357 [DEBUG] [Thread-114360] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:43:03.419 [DEBUG] [Thread-114360] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:43:03.419 [DEBUG] [Thread-114360] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:43:03.419 [DEBUG] [Thread-114360] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:43:03.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:43:03.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:43:03.477 [DEBUG] [Thread-114360] [transport.py] [_log()] userauth is OK
2025-11-03T10:43:03.477 [DEBUG] [Thread-114360] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:43:03.477 [DEBUG] [Thread-114360] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:43:03.477 [DEBUG] [Thread-114360] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:43:03.477 [DEBUG] [Thread-114360] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:43:03.492 [INFO] [Thread-114360] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:43:03.493 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:43:03.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:43:04.316 [DEBUG] [Thread-114360] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:43:04.316 [DEBUG] [Thread-114360] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:43:04.364 [DEBUG] [Thread-114360] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:43:04.365 [DEBUG] [Thread-114360] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:43:04.374 [DEBUG] [Thread-114360] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:43:04.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:43:04.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:43:04.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:43:04.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:43:04.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:43:04.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:43:04.412 [DEBUG] [Thread-114360] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:43:09.147 [DEBUG] [Thread-114362 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:43:24.200 [DEBUG] [Thread-114363 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:43:25.465 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:43:25.465 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:43:34.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:43:34.413 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:43:34.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:43:35.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 43, 28), 39.43, 6.03, 0.0, 24.07, 22.93, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:43:35.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:43:28
2025-11-03T10:43:35.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:43:35.359 [DEBUG] [Thread-114364] [transport.py] [_log()] starting thread (client mode): 0xed36dd0
2025-11-03T10:43:35.359 [DEBUG] [Thread-114364] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:43:35.380 [DEBUG] [Thread-114364] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:43:35.380 [INFO] [Thread-114364] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:43:35.392 [DEBUG] [Thread-114364] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:43:35.392 [DEBUG] [Thread-114364] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:43:35.392 [DEBUG] [Thread-114364] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:43:35.392 [DEBUG] [Thread-114364] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:43:35.392 [DEBUG] [Thread-114364] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:43:35.392 [DEBUG] [Thread-114364] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:43:35.393 [DEBUG] [Thread-114364] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:43:35.393 [DEBUG] [Thread-114364] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:43:35.393 [DEBUG] [Thread-114364] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:43:35.393 [DEBUG] [Thread-114364] [transport.py] [_log()] client lang: <none>
2025-11-03T10:43:35.393 [DEBUG] [Thread-114364] [transport.py] [_log()] server lang: <none>
2025-11-03T10:43:35.393 [DEBUG] [Thread-114364] [transport.py] [_log()] kex follows: False
2025-11-03T10:43:35.393 [DEBUG] [Thread-114364] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:43:35.393 [DEBUG] [Thread-114364] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:43:35.393 [DEBUG] [Thread-114364] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:43:35.394 [DEBUG] [Thread-114364] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:43:35.394 [DEBUG] [Thread-114364] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:43:35.394 [DEBUG] [Thread-114364] [transport.py] [_log()] Compression: none
2025-11-03T10:43:35.394 [DEBUG] [Thread-114364] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:43:35.412 [DEBUG] [Thread-114364] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:43:35.412 [DEBUG] [Thread-114364] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:43:35.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:43:35.413 [DEBUG] [Thread-114364] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:43:35.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:43:35.416 [DEBUG] [Thread-114364] [transport.py] [_log()] userauth is OK
2025-11-03T10:43:35.416 [DEBUG] [Thread-114364] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:43:35.417 [DEBUG] [Thread-114364] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:43:35.417 [DEBUG] [Thread-114364] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:43:35.417 [DEBUG] [Thread-114364] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:43:35.441 [INFO] [Thread-114364] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:43:35.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:43:36.079 [DEBUG] [Thread-114364] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:43:36.079 [DEBUG] [Thread-114364] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:43:36.079 [DEBUG] [Thread-114364] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:43:36.120 [DEBUG] [Thread-114364] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:43:36.120 [DEBUG] [Thread-114364] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:43:36.124 [DEBUG] [Thread-114364] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:43:36.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:43:36.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:43:36.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:43:36.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:43:36.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:43:36.149 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:43:36.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:43:36.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:43:36.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:43:36.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.363287 -999.00  +22.30  18.43     12   -8.20 1 1 1 1 1   888    0 32.20 61.06 ----- 12.0 18.4 26.6 25.8 27.9 -28.9 26.8 -27.7 26.0 -27.3 26.6 -28.9
2025-11-03T10:43:36.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:43:36.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:43:36.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.363287
2025-11-03T10:43:36.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:43:36.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:43:36.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:43:36.152 [DEBUG] [Thread-114364] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:43:36.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:43:36.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:43:36.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:43:28', tmtdew=39.43, humidity=6.03, cloud=0.0, wind=24.07, temperature=22.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:43:07.997', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:43:36.237 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:43:36.250 [DEBUG] [Thread-114367] [transport.py] [_log()] starting thread (client mode): 0xed2e7a0
2025-11-03T10:43:36.250 [DEBUG] [Thread-114367] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:43:36.270 [DEBUG] [Thread-114367] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:43:36.270 [INFO] [Thread-114367] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:43:36.278 [DEBUG] [Thread-114367] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:43:36.278 [DEBUG] [Thread-114367] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:43:36.278 [DEBUG] [Thread-114367] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:43:36.278 [DEBUG] [Thread-114367] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:43:36.278 [DEBUG] [Thread-114367] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:43:36.278 [DEBUG] [Thread-114367] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:43:36.279 [DEBUG] [Thread-114367] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:43:36.279 [DEBUG] [Thread-114367] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:43:36.279 [DEBUG] [Thread-114367] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:43:36.279 [DEBUG] [Thread-114367] [transport.py] [_log()] client lang: <none>
2025-11-03T10:43:36.279 [DEBUG] [Thread-114367] [transport.py] [_log()] server lang: <none>
2025-11-03T10:43:36.279 [DEBUG] [Thread-114367] [transport.py] [_log()] kex follows: False
2025-11-03T10:43:36.279 [DEBUG] [Thread-114367] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:43:36.279 [DEBUG] [Thread-114367] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:43:36.280 [DEBUG] [Thread-114367] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:43:36.280 [DEBUG] [Thread-114367] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:43:36.280 [DEBUG] [Thread-114367] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:43:36.280 [DEBUG] [Thread-114367] [transport.py] [_log()] Compression: none
2025-11-03T10:43:36.280 [DEBUG] [Thread-114367] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:43:36.339 [DEBUG] [Thread-114367] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:43:36.339 [DEBUG] [Thread-114367] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:43:36.340 [DEBUG] [Thread-114367] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:43:36.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:43:36.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:43:36.398 [DEBUG] [Thread-114367] [transport.py] [_log()] userauth is OK
2025-11-03T10:43:36.399 [DEBUG] [Thread-114367] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:43:36.399 [DEBUG] [Thread-114367] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:43:36.399 [DEBUG] [Thread-114367] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:43:36.399 [DEBUG] [Thread-114367] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:43:36.418 [INFO] [Thread-114367] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:43:36.419 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:43:36.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:43:37.274 [DEBUG] [Thread-114367] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:43:37.274 [DEBUG] [Thread-114367] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:43:37.322 [DEBUG] [Thread-114367] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:43:37.322 [DEBUG] [Thread-114367] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:43:37.331 [DEBUG] [Thread-114367] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:43:37.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:43:37.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:43:37.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:43:37.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:43:37.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:43:37.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:43:37.362 [DEBUG] [Thread-114367] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:43:39.227 [DEBUG] [Thread-114369 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:43:53.867 [DEBUG] [Thread-114370 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:43:54.275 [DEBUG] [Thread-114371 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:44:07.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:44:07.387 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:44:07.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:44:08.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 44), 39.33, 6.06, 0.0, 22.55, 22.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:44:08.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:44:00
2025-11-03T10:44:08.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:44:08.472 [DEBUG] [Thread-114372] [transport.py] [_log()] starting thread (client mode): 0xed5d540
2025-11-03T10:44:08.472 [DEBUG] [Thread-114372] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:44:08.489 [DEBUG] [Thread-114372] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:44:08.489 [INFO] [Thread-114372] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:44:08.491 [DEBUG] [Thread-114372] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:44:08.491 [DEBUG] [Thread-114372] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:44:08.491 [DEBUG] [Thread-114372] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:44:08.491 [DEBUG] [Thread-114372] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:44:08.491 [DEBUG] [Thread-114372] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:44:08.491 [DEBUG] [Thread-114372] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:44:08.491 [DEBUG] [Thread-114372] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:44:08.491 [DEBUG] [Thread-114372] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:44:08.491 [DEBUG] [Thread-114372] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:44:08.491 [DEBUG] [Thread-114372] [transport.py] [_log()] client lang: <none>
2025-11-03T10:44:08.491 [DEBUG] [Thread-114372] [transport.py] [_log()] server lang: <none>
2025-11-03T10:44:08.491 [DEBUG] [Thread-114372] [transport.py] [_log()] kex follows: False
2025-11-03T10:44:08.491 [DEBUG] [Thread-114372] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:44:08.491 [DEBUG] [Thread-114372] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:44:08.491 [DEBUG] [Thread-114372] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:44:08.491 [DEBUG] [Thread-114372] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:44:08.491 [DEBUG] [Thread-114372] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:44:08.491 [DEBUG] [Thread-114372] [transport.py] [_log()] Compression: none
2025-11-03T10:44:08.492 [DEBUG] [Thread-114372] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:44:08.499 [DEBUG] [Thread-114372] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:44:08.500 [DEBUG] [Thread-114372] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:44:08.500 [DEBUG] [Thread-114372] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:44:08.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:44:08.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:44:08.501 [DEBUG] [Thread-114372] [transport.py] [_log()] userauth is OK
2025-11-03T10:44:08.501 [DEBUG] [Thread-114372] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:44:08.501 [DEBUG] [Thread-114372] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:44:08.501 [DEBUG] [Thread-114372] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:44:08.501 [DEBUG] [Thread-114372] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:44:08.514 [INFO] [Thread-114372] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:44:08.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:44:09.145 [DEBUG] [Thread-114372] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:44:09.146 [DEBUG] [Thread-114372] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:44:09.146 [DEBUG] [Thread-114372] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:44:09.185 [DEBUG] [Thread-114372] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:44:09.186 [DEBUG] [Thread-114372] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:44:09.188 [DEBUG] [Thread-114372] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:44:09.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:44:09.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:44:09.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:44:09.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:44:09.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:44:09.209 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:44:09.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:44:09.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:44:09.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:44:09.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.363635 -999.00  +22.90  20.59     11   -8.00 1 1 1 1 1   888    0 32.04 61.43 ----- 16.9 20.6 15.4 28.4 28.0 -27.7 26.9 -27.1 26.1 -26.8 26.7 -27.4
2025-11-03T10:44:09.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:44:09.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:44:09.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.363635
2025-11-03T10:44:09.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:44:09.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:44:09.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:44:09.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:44:09.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:44:09.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:44:00', tmtdew=39.33, humidity=6.06, cloud=0.0, wind=22.55, temperature=22.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:43:38.064', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:44:09.211 [DEBUG] [Thread-114372] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:44:09.283 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:44:09.296 [DEBUG] [Thread-114375] [transport.py] [_log()] starting thread (client mode): 0xed36d70
2025-11-03T10:44:09.296 [DEBUG] [Thread-114375] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:44:09.308 [DEBUG] [Thread-114376 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:44:09.312 [DEBUG] [Thread-114375] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:44:09.312 [INFO] [Thread-114375] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:44:09.319 [DEBUG] [Thread-114375] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:44:09.319 [DEBUG] [Thread-114375] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:44:09.319 [DEBUG] [Thread-114375] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:44:09.319 [DEBUG] [Thread-114375] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:44:09.319 [DEBUG] [Thread-114375] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:44:09.319 [DEBUG] [Thread-114375] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:44:09.319 [DEBUG] [Thread-114375] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:44:09.319 [DEBUG] [Thread-114375] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:44:09.319 [DEBUG] [Thread-114375] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:44:09.319 [DEBUG] [Thread-114375] [transport.py] [_log()] client lang: <none>
2025-11-03T10:44:09.319 [DEBUG] [Thread-114375] [transport.py] [_log()] server lang: <none>
2025-11-03T10:44:09.319 [DEBUG] [Thread-114375] [transport.py] [_log()] kex follows: False
2025-11-03T10:44:09.319 [DEBUG] [Thread-114375] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:44:09.319 [DEBUG] [Thread-114375] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:44:09.319 [DEBUG] [Thread-114375] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:44:09.319 [DEBUG] [Thread-114375] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:44:09.319 [DEBUG] [Thread-114375] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:44:09.319 [DEBUG] [Thread-114375] [transport.py] [_log()] Compression: none
2025-11-03T10:44:09.319 [DEBUG] [Thread-114375] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:44:09.377 [DEBUG] [Thread-114375] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:44:09.377 [DEBUG] [Thread-114375] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:44:09.378 [DEBUG] [Thread-114375] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:44:09.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:44:09.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:44:09.435 [DEBUG] [Thread-114375] [transport.py] [_log()] userauth is OK
2025-11-03T10:44:09.435 [DEBUG] [Thread-114375] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:44:09.435 [DEBUG] [Thread-114375] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:44:09.435 [DEBUG] [Thread-114375] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:44:09.435 [DEBUG] [Thread-114375] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:44:09.449 [INFO] [Thread-114375] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:44:09.450 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:44:09.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:44:10.315 [DEBUG] [Thread-114375] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:44:10.316 [DEBUG] [Thread-114375] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:44:10.363 [DEBUG] [Thread-114375] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:44:10.363 [DEBUG] [Thread-114375] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:44:10.372 [DEBUG] [Thread-114375] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:44:10.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:44:10.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:44:10.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:44:10.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:44:10.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:44:10.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:44:10.409 [DEBUG] [Thread-114375] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:44:24.352 [DEBUG] [Thread-114378 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:44:25.606 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:44:25.607 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:44:39.391 [DEBUG] [Thread-114379 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:44:40.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:44:40.405 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:44:40.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:44:41.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 44, 34), 38.66, 6.21, 0.0, 31.09, 22.66, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:44:41.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:44:34
2025-11-03T10:44:41.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:44:41.419 [DEBUG] [Thread-114380] [transport.py] [_log()] starting thread (client mode): 0xed35e70
2025-11-03T10:44:41.419 [DEBUG] [Thread-114380] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:44:41.439 [DEBUG] [Thread-114380] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:44:41.439 [INFO] [Thread-114380] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:44:41.443 [DEBUG] [Thread-114380] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:44:41.443 [DEBUG] [Thread-114380] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:44:41.443 [DEBUG] [Thread-114380] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:44:41.443 [DEBUG] [Thread-114380] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:44:41.443 [DEBUG] [Thread-114380] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:44:41.443 [DEBUG] [Thread-114380] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:44:41.443 [DEBUG] [Thread-114380] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:44:41.443 [DEBUG] [Thread-114380] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:44:41.443 [DEBUG] [Thread-114380] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:44:41.443 [DEBUG] [Thread-114380] [transport.py] [_log()] client lang: <none>
2025-11-03T10:44:41.443 [DEBUG] [Thread-114380] [transport.py] [_log()] server lang: <none>
2025-11-03T10:44:41.443 [DEBUG] [Thread-114380] [transport.py] [_log()] kex follows: False
2025-11-03T10:44:41.443 [DEBUG] [Thread-114380] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:44:41.443 [DEBUG] [Thread-114380] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:44:41.443 [DEBUG] [Thread-114380] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:44:41.443 [DEBUG] [Thread-114380] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:44:41.443 [DEBUG] [Thread-114380] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:44:41.443 [DEBUG] [Thread-114380] [transport.py] [_log()] Compression: none
2025-11-03T10:44:41.443 [DEBUG] [Thread-114380] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:44:41.460 [DEBUG] [Thread-114380] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:44:41.460 [DEBUG] [Thread-114380] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:44:41.460 [DEBUG] [Thread-114380] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:44:41.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:44:41.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:44:41.504 [DEBUG] [Thread-114380] [transport.py] [_log()] userauth is OK
2025-11-03T10:44:41.504 [DEBUG] [Thread-114380] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:44:41.504 [DEBUG] [Thread-114380] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:44:41.504 [DEBUG] [Thread-114380] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:44:41.504 [DEBUG] [Thread-114380] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:44:41.521 [INFO] [Thread-114380] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:44:41.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:44:42.114 [DEBUG] [Thread-114380] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:44:42.114 [DEBUG] [Thread-114380] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:44:42.114 [DEBUG] [Thread-114380] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:44:42.155 [DEBUG] [Thread-114380] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:44:42.155 [DEBUG] [Thread-114380] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:44:42.157 [DEBUG] [Thread-114380] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:44:42.169 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:44:42.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:44:42.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:44:42.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:44:42.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:44:42.182 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:44:42.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:44:42.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:44:42.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:44:42.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.364329 -999.00  +23.10  17.65     11   -8.30 1 1 1 1 1   888    0 31.98 57.62 ----- 22.6 17.6 354.4 27.5 28.1 -28.6 27.1 -27.7 26.1 -27.2 26.8 -30.7
2025-11-03T10:44:42.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:44:42.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:44:42.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.364329
2025-11-03T10:44:42.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:44:42.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:44:42.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:44:42.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:44:42.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:44:42.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:44:34', tmtdew=38.66, humidity=6.21, cloud=0.0, wind=31.09, temperature=22.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:44:38.026', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:44:42.183 [DEBUG] [Thread-114380] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:44:42.258 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:44:42.269 [DEBUG] [Thread-114383] [transport.py] [_log()] starting thread (client mode): 0x11798e20
2025-11-03T10:44:42.269 [DEBUG] [Thread-114383] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:44:42.285 [DEBUG] [Thread-114383] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:44:42.285 [INFO] [Thread-114383] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:44:42.292 [DEBUG] [Thread-114383] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:44:42.293 [DEBUG] [Thread-114383] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:44:42.293 [DEBUG] [Thread-114383] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:44:42.293 [DEBUG] [Thread-114383] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:44:42.293 [DEBUG] [Thread-114383] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:44:42.293 [DEBUG] [Thread-114383] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:44:42.293 [DEBUG] [Thread-114383] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:44:42.293 [DEBUG] [Thread-114383] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:44:42.293 [DEBUG] [Thread-114383] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:44:42.293 [DEBUG] [Thread-114383] [transport.py] [_log()] client lang: <none>
2025-11-03T10:44:42.293 [DEBUG] [Thread-114383] [transport.py] [_log()] server lang: <none>
2025-11-03T10:44:42.293 [DEBUG] [Thread-114383] [transport.py] [_log()] kex follows: False
2025-11-03T10:44:42.293 [DEBUG] [Thread-114383] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:44:42.293 [DEBUG] [Thread-114383] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:44:42.293 [DEBUG] [Thread-114383] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:44:42.293 [DEBUG] [Thread-114383] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:44:42.293 [DEBUG] [Thread-114383] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:44:42.293 [DEBUG] [Thread-114383] [transport.py] [_log()] Compression: none
2025-11-03T10:44:42.293 [DEBUG] [Thread-114383] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:44:42.350 [DEBUG] [Thread-114383] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:44:42.350 [DEBUG] [Thread-114383] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:44:42.351 [DEBUG] [Thread-114383] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:44:42.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:44:42.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:44:42.407 [DEBUG] [Thread-114383] [transport.py] [_log()] userauth is OK
2025-11-03T10:44:42.407 [DEBUG] [Thread-114383] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:44:42.408 [DEBUG] [Thread-114383] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:44:42.408 [DEBUG] [Thread-114383] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:44:42.408 [DEBUG] [Thread-114383] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:44:42.425 [INFO] [Thread-114383] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:44:42.425 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:44:42.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:44:43.255 [DEBUG] [Thread-114383] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:44:43.255 [DEBUG] [Thread-114383] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:44:43.303 [DEBUG] [Thread-114383] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:44:43.303 [DEBUG] [Thread-114383] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:44:43.312 [DEBUG] [Thread-114383] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:44:43.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:44:43.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:44:43.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:44:43.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:44:43.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:44:43.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:44:43.344 [DEBUG] [Thread-114383] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:44:54.007 [DEBUG] [Thread-114385 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:44:54.426 [DEBUG] [Thread-114386 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:45:09.480 [DEBUG] [Thread-114387 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:45:13.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:45:13.341 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:45:13.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:45:14.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 45, 7), 39.01, 6.05, 0.0, 27.1, 22.78, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:45:14.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:45:07
2025-11-03T10:45:14.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:45:14.378 [DEBUG] [Thread-114388] [transport.py] [_log()] starting thread (client mode): 0xed65ba0
2025-11-03T10:45:14.379 [DEBUG] [Thread-114388] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:45:14.398 [DEBUG] [Thread-114388] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:45:14.398 [INFO] [Thread-114388] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:45:14.401 [DEBUG] [Thread-114388] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:45:14.401 [DEBUG] [Thread-114388] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:45:14.401 [DEBUG] [Thread-114388] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:45:14.401 [DEBUG] [Thread-114388] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:45:14.401 [DEBUG] [Thread-114388] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:45:14.402 [DEBUG] [Thread-114388] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:45:14.402 [DEBUG] [Thread-114388] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:45:14.402 [DEBUG] [Thread-114388] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:45:14.402 [DEBUG] [Thread-114388] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:45:14.402 [DEBUG] [Thread-114388] [transport.py] [_log()] client lang: <none>
2025-11-03T10:45:14.402 [DEBUG] [Thread-114388] [transport.py] [_log()] server lang: <none>
2025-11-03T10:45:14.402 [DEBUG] [Thread-114388] [transport.py] [_log()] kex follows: False
2025-11-03T10:45:14.402 [DEBUG] [Thread-114388] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:45:14.402 [DEBUG] [Thread-114388] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:45:14.403 [DEBUG] [Thread-114388] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:45:14.403 [DEBUG] [Thread-114388] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:45:14.403 [DEBUG] [Thread-114388] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:45:14.403 [DEBUG] [Thread-114388] [transport.py] [_log()] Compression: none
2025-11-03T10:45:14.403 [DEBUG] [Thread-114388] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:45:14.422 [DEBUG] [Thread-114388] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:45:14.422 [DEBUG] [Thread-114388] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:45:14.423 [DEBUG] [Thread-114388] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:45:14.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:45:14.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:45:14.425 [DEBUG] [Thread-114388] [transport.py] [_log()] userauth is OK
2025-11-03T10:45:14.425 [DEBUG] [Thread-114388] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:45:14.425 [DEBUG] [Thread-114388] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:45:14.425 [DEBUG] [Thread-114388] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:45:14.425 [DEBUG] [Thread-114388] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:45:14.461 [INFO] [Thread-114388] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:45:14.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:45:23.120 [DEBUG] [Thread-114388] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:45:23.120 [DEBUG] [Thread-114388] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:45:23.120 [DEBUG] [Thread-114388] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:45:23.161 [DEBUG] [Thread-114388] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:45:23.161 [DEBUG] [Thread-114388] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:45:23.164 [DEBUG] [Thread-114388] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:45:23.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:45:23.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:45:23.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:45:23.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:45:23.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:45:23.180 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:45:23.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:45:23.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:45:23.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:45:23.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.364329 -999.00  +23.10  17.65     11   -8.30 1 1 1 1 1   888    0 31.98 57.62 ----- 22.6 17.6 354.4 27.5 28.1 -28.6 27.1 -27.7 26.1 -27.2 26.8 -30.7
2025-11-03T10:45:23.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:45:23.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:45:23.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.364329
2025-11-03T10:45:23.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:45:23.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:45:23.189 [DEBUG] [Thread-114388] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:45:23.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:45:23.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:45:23.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:45:23.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:45:07', tmtdew=39.01, humidity=6.05, cloud=0.0, wind=27.1, temperature=22.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:44:38.026', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:45:23.264 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:45:23.277 [DEBUG] [Thread-114391] [transport.py] [_log()] starting thread (client mode): 0xed669e0
2025-11-03T10:45:23.277 [DEBUG] [Thread-114391] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:45:23.299 [DEBUG] [Thread-114391] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:45:23.299 [INFO] [Thread-114391] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:45:23.308 [DEBUG] [Thread-114391] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:45:23.309 [DEBUG] [Thread-114391] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:45:23.309 [DEBUG] [Thread-114391] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:45:23.309 [DEBUG] [Thread-114391] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:45:23.309 [DEBUG] [Thread-114391] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:45:23.309 [DEBUG] [Thread-114391] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:45:23.309 [DEBUG] [Thread-114391] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:45:23.309 [DEBUG] [Thread-114391] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:45:23.309 [DEBUG] [Thread-114391] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:45:23.309 [DEBUG] [Thread-114391] [transport.py] [_log()] client lang: <none>
2025-11-03T10:45:23.309 [DEBUG] [Thread-114391] [transport.py] [_log()] server lang: <none>
2025-11-03T10:45:23.309 [DEBUG] [Thread-114391] [transport.py] [_log()] kex follows: False
2025-11-03T10:45:23.309 [DEBUG] [Thread-114391] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:45:23.309 [DEBUG] [Thread-114391] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:45:23.309 [DEBUG] [Thread-114391] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:45:23.309 [DEBUG] [Thread-114391] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:45:23.309 [DEBUG] [Thread-114391] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:45:23.309 [DEBUG] [Thread-114391] [transport.py] [_log()] Compression: none
2025-11-03T10:45:23.309 [DEBUG] [Thread-114391] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:45:23.374 [DEBUG] [Thread-114391] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:45:23.374 [DEBUG] [Thread-114391] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:45:23.374 [DEBUG] [Thread-114391] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:45:23.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:45:23.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:45:23.440 [DEBUG] [Thread-114391] [transport.py] [_log()] userauth is OK
2025-11-03T10:45:23.441 [DEBUG] [Thread-114391] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:45:23.441 [DEBUG] [Thread-114391] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:45:23.441 [DEBUG] [Thread-114391] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:45:23.441 [DEBUG] [Thread-114391] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:45:23.456 [INFO] [Thread-114391] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:45:23.456 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:45:23.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:45:24.375 [DEBUG] [Thread-114391] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:45:24.375 [DEBUG] [Thread-114391] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:45:24.422 [DEBUG] [Thread-114391] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:45:24.422 [DEBUG] [Thread-114391] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:45:24.431 [DEBUG] [Thread-114391] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:45:24.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:45:24.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:45:24.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:45:24.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:45:24.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:45:24.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:45:24.467 [DEBUG] [Thread-114391] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:45:24.505 [DEBUG] [Thread-114393 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:45:25.747 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:45:25.748 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:45:39.544 [DEBUG] [Thread-114394 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:45:54.038 [DEBUG] [Thread-114395 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:45:54.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:45:54.461 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:45:54.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:45:54.572 [DEBUG] [Thread-114396 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:45:55.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 45, 39), 38.63, 6.11, 0.0, 19.2, 22.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:45:55.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:45:39
2025-11-03T10:45:55.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:45:55.459 [DEBUG] [Thread-114397] [transport.py] [_log()] starting thread (client mode): 0xed2f880
2025-11-03T10:45:55.459 [DEBUG] [Thread-114397] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:45:55.477 [DEBUG] [Thread-114397] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:45:55.477 [INFO] [Thread-114397] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:45:55.480 [DEBUG] [Thread-114397] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:45:55.480 [DEBUG] [Thread-114397] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:45:55.480 [DEBUG] [Thread-114397] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:45:55.480 [DEBUG] [Thread-114397] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:45:55.480 [DEBUG] [Thread-114397] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:45:55.481 [DEBUG] [Thread-114397] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:45:55.481 [DEBUG] [Thread-114397] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:45:55.481 [DEBUG] [Thread-114397] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:45:55.481 [DEBUG] [Thread-114397] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:45:55.481 [DEBUG] [Thread-114397] [transport.py] [_log()] client lang: <none>
2025-11-03T10:45:55.481 [DEBUG] [Thread-114397] [transport.py] [_log()] server lang: <none>
2025-11-03T10:45:55.481 [DEBUG] [Thread-114397] [transport.py] [_log()] kex follows: False
2025-11-03T10:45:55.481 [DEBUG] [Thread-114397] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:45:55.481 [DEBUG] [Thread-114397] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:45:55.481 [DEBUG] [Thread-114397] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:45:55.481 [DEBUG] [Thread-114397] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:45:55.481 [DEBUG] [Thread-114397] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:45:55.481 [DEBUG] [Thread-114397] [transport.py] [_log()] Compression: none
2025-11-03T10:45:55.481 [DEBUG] [Thread-114397] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:45:55.498 [DEBUG] [Thread-114397] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:45:55.498 [DEBUG] [Thread-114397] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:45:55.499 [DEBUG] [Thread-114397] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:45:55.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:45:55.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:45:55.501 [DEBUG] [Thread-114397] [transport.py] [_log()] userauth is OK
2025-11-03T10:45:55.501 [DEBUG] [Thread-114397] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:45:55.501 [DEBUG] [Thread-114397] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:45:55.501 [DEBUG] [Thread-114397] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:45:55.501 [DEBUG] [Thread-114397] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:45:55.526 [INFO] [Thread-114397] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:45:55.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:45:56.144 [DEBUG] [Thread-114397] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:45:56.144 [DEBUG] [Thread-114397] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:45:56.145 [DEBUG] [Thread-114397] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:45:56.186 [DEBUG] [Thread-114397] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:45:56.186 [DEBUG] [Thread-114397] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:45:56.190 [DEBUG] [Thread-114397] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:45:56.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:45:56.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:45:56.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:45:56.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:45:56.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:45:56.214 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:45:56.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:45:56.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:45:56.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:45:56.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.364687 -999.00  +22.70  30.12     11   -8.70 1 1 2 1 1   888    0 31.89 56.00 ----- 28.0 30.1 45.0 34.9 28.2 -29.2 27.1 -28.1 26.2 -27.6 26.9 -28.0
2025-11-03T10:45:56.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:45:56.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:45:56.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.364687
2025-11-03T10:45:56.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:45:56.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:45:56.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:45:56.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:45:56.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:45:56.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:45:39', tmtdew=38.63, humidity=6.11, cloud=0.0, wind=19.2, temperature=22.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:45:08.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:45:56.218 [DEBUG] [Thread-114397] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:45:56.300 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:45:56.311 [DEBUG] [Thread-114400] [transport.py] [_log()] starting thread (client mode): 0xed2ed40
2025-11-03T10:45:56.312 [DEBUG] [Thread-114400] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:45:56.326 [DEBUG] [Thread-114400] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:45:56.326 [INFO] [Thread-114400] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:45:56.334 [DEBUG] [Thread-114400] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:45:56.334 [DEBUG] [Thread-114400] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:45:56.334 [DEBUG] [Thread-114400] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:45:56.334 [DEBUG] [Thread-114400] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:45:56.334 [DEBUG] [Thread-114400] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:45:56.334 [DEBUG] [Thread-114400] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:45:56.334 [DEBUG] [Thread-114400] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:45:56.335 [DEBUG] [Thread-114400] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:45:56.335 [DEBUG] [Thread-114400] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:45:56.335 [DEBUG] [Thread-114400] [transport.py] [_log()] client lang: <none>
2025-11-03T10:45:56.335 [DEBUG] [Thread-114400] [transport.py] [_log()] server lang: <none>
2025-11-03T10:45:56.335 [DEBUG] [Thread-114400] [transport.py] [_log()] kex follows: False
2025-11-03T10:45:56.335 [DEBUG] [Thread-114400] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:45:56.335 [DEBUG] [Thread-114400] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:45:56.335 [DEBUG] [Thread-114400] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:45:56.336 [DEBUG] [Thread-114400] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:45:56.336 [DEBUG] [Thread-114400] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:45:56.336 [DEBUG] [Thread-114400] [transport.py] [_log()] Compression: none
2025-11-03T10:45:56.336 [DEBUG] [Thread-114400] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:45:56.394 [DEBUG] [Thread-114400] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:45:56.394 [DEBUG] [Thread-114400] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:45:56.395 [DEBUG] [Thread-114400] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:45:56.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:45:56.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:45:56.449 [DEBUG] [Thread-114400] [transport.py] [_log()] userauth is OK
2025-11-03T10:45:56.450 [DEBUG] [Thread-114400] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:45:56.450 [DEBUG] [Thread-114400] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:45:56.450 [DEBUG] [Thread-114400] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:45:56.450 [DEBUG] [Thread-114400] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:45:56.469 [INFO] [Thread-114400] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:45:56.469 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:45:56.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:45:57.311 [DEBUG] [Thread-114400] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:45:57.311 [DEBUG] [Thread-114400] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:45:57.359 [DEBUG] [Thread-114400] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:45:57.359 [DEBUG] [Thread-114400] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:45:57.376 [DEBUG] [Thread-114400] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:45:57.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:45:57.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:45:57.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:45:57.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:45:57.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:45:57.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:45:57.408 [DEBUG] [Thread-114400] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:46:09.601 [DEBUG] [Thread-114402 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:46:24.658 [DEBUG] [Thread-114403 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:46:25.890 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:46:25.891 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:46:27.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:46:27.431 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:46:27.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:46:28.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 46, 11), 38.42, 6.21, 0.0, 21.67, 22.3, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:46:28.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:46:11
2025-11-03T10:46:28.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:46:28.391 [DEBUG] [Thread-114404] [transport.py] [_log()] starting thread (client mode): 0xed2ebc0
2025-11-03T10:46:28.391 [DEBUG] [Thread-114404] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:46:28.411 [DEBUG] [Thread-114404] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:46:28.411 [INFO] [Thread-114404] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:46:28.421 [DEBUG] [Thread-114404] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:46:28.421 [DEBUG] [Thread-114404] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:46:28.421 [DEBUG] [Thread-114404] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:46:28.421 [DEBUG] [Thread-114404] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:46:28.421 [DEBUG] [Thread-114404] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:46:28.421 [DEBUG] [Thread-114404] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:46:28.421 [DEBUG] [Thread-114404] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:46:28.422 [DEBUG] [Thread-114404] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:46:28.422 [DEBUG] [Thread-114404] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:46:28.422 [DEBUG] [Thread-114404] [transport.py] [_log()] client lang: <none>
2025-11-03T10:46:28.422 [DEBUG] [Thread-114404] [transport.py] [_log()] server lang: <none>
2025-11-03T10:46:28.422 [DEBUG] [Thread-114404] [transport.py] [_log()] kex follows: False
2025-11-03T10:46:28.422 [DEBUG] [Thread-114404] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:46:28.422 [DEBUG] [Thread-114404] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:46:28.422 [DEBUG] [Thread-114404] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:46:28.422 [DEBUG] [Thread-114404] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:46:28.422 [DEBUG] [Thread-114404] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:46:28.422 [DEBUG] [Thread-114404] [transport.py] [_log()] Compression: none
2025-11-03T10:46:28.422 [DEBUG] [Thread-114404] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:46:28.436 [DEBUG] [Thread-114404] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:46:28.437 [DEBUG] [Thread-114404] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:46:28.437 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:46:28.437 [DEBUG] [Thread-114404] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:46:28.438 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:46:28.439 [DEBUG] [Thread-114404] [transport.py] [_log()] userauth is OK
2025-11-03T10:46:28.440 [DEBUG] [Thread-114404] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:46:28.440 [DEBUG] [Thread-114404] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:46:28.440 [DEBUG] [Thread-114404] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:46:28.440 [DEBUG] [Thread-114404] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:46:28.462 [INFO] [Thread-114404] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:46:28.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:46:29.107 [DEBUG] [Thread-114404] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:46:29.108 [DEBUG] [Thread-114404] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:46:29.108 [DEBUG] [Thread-114404] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:46:29.149 [DEBUG] [Thread-114404] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:46:29.150 [DEBUG] [Thread-114404] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:46:29.153 [DEBUG] [Thread-114404] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:46:29.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:46:29.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:46:29.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:46:29.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:46:29.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:46:29.177 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:46:29.178 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:46:29.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:46:29.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:46:29.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.365023 -999.00  +22.30  28.18     11   -8.70 1 1 1 1 1   888    0 32.18 54.91 ----- 24.4 28.2 39.4 33.3 28.1 -29.6 26.9 -29.3 25.9 -29.3 26.7 -27.3
2025-11-03T10:46:29.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:46:29.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:46:29.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.365023
2025-11-03T10:46:29.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:46:29.186 [DEBUG] [Thread-114404] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:46:29.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:46:29.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:46:29.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:46:29.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:46:29.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:46:11', tmtdew=38.42, humidity=6.21, cloud=0.0, wind=21.67, temperature=22.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:45:37.987', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:46:29.271 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:46:29.288 [DEBUG] [Thread-114407] [transport.py] [_log()] starting thread (client mode): 0xed67ca0
2025-11-03T10:46:29.289 [DEBUG] [Thread-114407] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:46:29.304 [DEBUG] [Thread-114407] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:46:29.304 [INFO] [Thread-114407] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:46:29.312 [DEBUG] [Thread-114407] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:46:29.312 [DEBUG] [Thread-114407] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:46:29.312 [DEBUG] [Thread-114407] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:46:29.312 [DEBUG] [Thread-114407] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:46:29.312 [DEBUG] [Thread-114407] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:46:29.312 [DEBUG] [Thread-114407] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:46:29.312 [DEBUG] [Thread-114407] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:46:29.312 [DEBUG] [Thread-114407] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:46:29.313 [DEBUG] [Thread-114407] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:46:29.313 [DEBUG] [Thread-114407] [transport.py] [_log()] client lang: <none>
2025-11-03T10:46:29.313 [DEBUG] [Thread-114407] [transport.py] [_log()] server lang: <none>
2025-11-03T10:46:29.313 [DEBUG] [Thread-114407] [transport.py] [_log()] kex follows: False
2025-11-03T10:46:29.313 [DEBUG] [Thread-114407] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:46:29.313 [DEBUG] [Thread-114407] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:46:29.313 [DEBUG] [Thread-114407] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:46:29.313 [DEBUG] [Thread-114407] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:46:29.313 [DEBUG] [Thread-114407] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:46:29.313 [DEBUG] [Thread-114407] [transport.py] [_log()] Compression: none
2025-11-03T10:46:29.313 [DEBUG] [Thread-114407] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:46:29.375 [DEBUG] [Thread-114407] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:46:29.375 [DEBUG] [Thread-114407] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:46:29.376 [DEBUG] [Thread-114407] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:46:29.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:46:29.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:46:29.435 [DEBUG] [Thread-114407] [transport.py] [_log()] userauth is OK
2025-11-03T10:46:29.435 [DEBUG] [Thread-114407] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:46:29.435 [DEBUG] [Thread-114407] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:46:29.435 [DEBUG] [Thread-114407] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:46:29.435 [DEBUG] [Thread-114407] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:46:29.458 [INFO] [Thread-114407] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:46:29.458 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:46:29.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:46:30.310 [DEBUG] [Thread-114407] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:46:30.311 [DEBUG] [Thread-114407] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:46:30.357 [DEBUG] [Thread-114407] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:46:30.358 [DEBUG] [Thread-114407] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:46:30.367 [DEBUG] [Thread-114407] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:46:30.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:46:30.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:46:30.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:46:30.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:46:30.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:46:30.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:46:30.404 [DEBUG] [Thread-114407] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:46:39.694 [DEBUG] [Thread-114409 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:46:54.089 [DEBUG] [Thread-114410 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:46:54.730 [DEBUG] [Thread-114411 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:47:00.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:47:00.427 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:47:00.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:47:01.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 46, 43), 38.18, 6.78, 0.0, 24.24, 22.46, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:47:01.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:46:43
2025-11-03T10:47:01.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:47:01.365 [DEBUG] [Thread-114412] [transport.py] [_log()] starting thread (client mode): 0xed2d3f0
2025-11-03T10:47:01.365 [DEBUG] [Thread-114412] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:47:01.384 [DEBUG] [Thread-114412] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:47:01.385 [INFO] [Thread-114412] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:47:01.394 [DEBUG] [Thread-114412] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:47:01.394 [DEBUG] [Thread-114412] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:47:01.395 [DEBUG] [Thread-114412] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:47:01.395 [DEBUG] [Thread-114412] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:47:01.395 [DEBUG] [Thread-114412] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:47:01.395 [DEBUG] [Thread-114412] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:47:01.395 [DEBUG] [Thread-114412] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:47:01.395 [DEBUG] [Thread-114412] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:47:01.395 [DEBUG] [Thread-114412] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:47:01.395 [DEBUG] [Thread-114412] [transport.py] [_log()] client lang: <none>
2025-11-03T10:47:01.395 [DEBUG] [Thread-114412] [transport.py] [_log()] server lang: <none>
2025-11-03T10:47:01.395 [DEBUG] [Thread-114412] [transport.py] [_log()] kex follows: False
2025-11-03T10:47:01.395 [DEBUG] [Thread-114412] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:47:01.395 [DEBUG] [Thread-114412] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:47:01.395 [DEBUG] [Thread-114412] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:47:01.395 [DEBUG] [Thread-114412] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:47:01.395 [DEBUG] [Thread-114412] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:47:01.395 [DEBUG] [Thread-114412] [transport.py] [_log()] Compression: none
2025-11-03T10:47:01.395 [DEBUG] [Thread-114412] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:47:01.413 [DEBUG] [Thread-114412] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:47:01.414 [DEBUG] [Thread-114412] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:47:01.414 [DEBUG] [Thread-114412] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:47:01.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:47:01.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:47:01.416 [DEBUG] [Thread-114412] [transport.py] [_log()] userauth is OK
2025-11-03T10:47:01.416 [DEBUG] [Thread-114412] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:47:01.417 [DEBUG] [Thread-114412] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:47:01.417 [DEBUG] [Thread-114412] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:47:01.417 [DEBUG] [Thread-114412] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:47:01.453 [INFO] [Thread-114412] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:47:01.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:47:02.093 [DEBUG] [Thread-114412] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:47:02.093 [DEBUG] [Thread-114412] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:47:02.094 [DEBUG] [Thread-114412] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:47:02.134 [DEBUG] [Thread-114412] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:47:02.134 [DEBUG] [Thread-114412] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:47:02.137 [DEBUG] [Thread-114412] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:47:02.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:47:02.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:47:02.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:47:02.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:47:02.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:47:02.159 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:47:02.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:47:02.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:47:02.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:47:02.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.365371 -999.00  +22.20  26.63     11   -8.70 1 1 1 1 1   888    0 32.12 53.06 ----- 29.4 26.6 45.6 29.4 28.1 -28.7 26.9 -28.8 25.9 -29.0 26.9 -27.7
2025-11-03T10:47:02.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:47:02.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:47:02.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.365371
2025-11-03T10:47:02.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:47:02.168 [DEBUG] [Thread-114412] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:47:02.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:47:02.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:47:02.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:47:02.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:47:02.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:46:43', tmtdew=38.18, humidity=6.78, cloud=0.0, wind=24.24, temperature=22.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:46:08.054', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:47:02.254 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:47:02.265 [DEBUG] [Thread-114415] [transport.py] [_log()] starting thread (client mode): 0x1179b7f0
2025-11-03T10:47:02.265 [DEBUG] [Thread-114415] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:47:02.280 [DEBUG] [Thread-114415] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:47:02.281 [INFO] [Thread-114415] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:47:02.290 [DEBUG] [Thread-114415] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:47:02.290 [DEBUG] [Thread-114415] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:47:02.290 [DEBUG] [Thread-114415] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:47:02.290 [DEBUG] [Thread-114415] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:47:02.290 [DEBUG] [Thread-114415] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:47:02.290 [DEBUG] [Thread-114415] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:47:02.290 [DEBUG] [Thread-114415] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:47:02.290 [DEBUG] [Thread-114415] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:47:02.290 [DEBUG] [Thread-114415] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:47:02.290 [DEBUG] [Thread-114415] [transport.py] [_log()] client lang: <none>
2025-11-03T10:47:02.290 [DEBUG] [Thread-114415] [transport.py] [_log()] server lang: <none>
2025-11-03T10:47:02.290 [DEBUG] [Thread-114415] [transport.py] [_log()] kex follows: False
2025-11-03T10:47:02.290 [DEBUG] [Thread-114415] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:47:02.290 [DEBUG] [Thread-114415] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:47:02.290 [DEBUG] [Thread-114415] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:47:02.290 [DEBUG] [Thread-114415] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:47:02.290 [DEBUG] [Thread-114415] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:47:02.290 [DEBUG] [Thread-114415] [transport.py] [_log()] Compression: none
2025-11-03T10:47:02.290 [DEBUG] [Thread-114415] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:47:02.345 [DEBUG] [Thread-114415] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:47:02.346 [DEBUG] [Thread-114415] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:47:02.346 [DEBUG] [Thread-114415] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:47:02.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:47:02.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:47:02.409 [DEBUG] [Thread-114415] [transport.py] [_log()] userauth is OK
2025-11-03T10:47:02.409 [DEBUG] [Thread-114415] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:47:02.409 [DEBUG] [Thread-114415] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:47:02.409 [DEBUG] [Thread-114415] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:47:02.409 [DEBUG] [Thread-114415] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:47:02.432 [INFO] [Thread-114415] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:47:02.432 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:47:02.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:47:03.296 [DEBUG] [Thread-114415] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:47:03.296 [DEBUG] [Thread-114415] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:47:03.344 [DEBUG] [Thread-114415] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:47:03.344 [DEBUG] [Thread-114415] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:47:03.354 [DEBUG] [Thread-114415] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:47:03.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:47:03.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:47:03.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:47:03.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:47:03.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:47:03.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:47:03.400 [DEBUG] [Thread-114415] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:47:09.770 [DEBUG] [Thread-114417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:47:24.830 [DEBUG] [Thread-114418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:47:26.032 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:47:26.033 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:47:33.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:47:33.419 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:47:33.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:47:34.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 47, 16), 38.1, 6.81, 0.0, 20.01, 22.4, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:47:34.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:47:16
2025-11-03T10:47:34.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:47:34.338 [DEBUG] [Thread-114419] [transport.py] [_log()] starting thread (client mode): 0x11798280
2025-11-03T10:47:34.338 [DEBUG] [Thread-114419] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:47:34.350 [DEBUG] [Thread-114419] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:47:34.350 [INFO] [Thread-114419] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:47:34.353 [DEBUG] [Thread-114419] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:47:34.353 [DEBUG] [Thread-114419] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:47:34.353 [DEBUG] [Thread-114419] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:47:34.353 [DEBUG] [Thread-114419] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:47:34.353 [DEBUG] [Thread-114419] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:47:34.353 [DEBUG] [Thread-114419] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:47:34.353 [DEBUG] [Thread-114419] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:47:34.353 [DEBUG] [Thread-114419] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:47:34.353 [DEBUG] [Thread-114419] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:47:34.353 [DEBUG] [Thread-114419] [transport.py] [_log()] client lang: <none>
2025-11-03T10:47:34.353 [DEBUG] [Thread-114419] [transport.py] [_log()] server lang: <none>
2025-11-03T10:47:34.353 [DEBUG] [Thread-114419] [transport.py] [_log()] kex follows: False
2025-11-03T10:47:34.353 [DEBUG] [Thread-114419] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:47:34.354 [DEBUG] [Thread-114419] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:47:34.354 [DEBUG] [Thread-114419] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:47:34.354 [DEBUG] [Thread-114419] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:47:34.354 [DEBUG] [Thread-114419] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:47:34.354 [DEBUG] [Thread-114419] [transport.py] [_log()] Compression: none
2025-11-03T10:47:34.354 [DEBUG] [Thread-114419] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:47:34.369 [DEBUG] [Thread-114419] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:47:34.369 [DEBUG] [Thread-114419] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:47:34.370 [DEBUG] [Thread-114419] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:47:34.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:47:34.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:47:34.371 [DEBUG] [Thread-114419] [transport.py] [_log()] userauth is OK
2025-11-03T10:47:34.371 [DEBUG] [Thread-114419] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:47:34.371 [DEBUG] [Thread-114419] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:47:34.371 [DEBUG] [Thread-114419] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:47:34.372 [DEBUG] [Thread-114419] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:47:34.395 [INFO] [Thread-114419] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:47:34.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:47:34.989 [DEBUG] [Thread-114419] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:47:34.989 [DEBUG] [Thread-114419] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:47:34.989 [DEBUG] [Thread-114419] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:47:35.030 [DEBUG] [Thread-114419] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:47:35.030 [DEBUG] [Thread-114419] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:47:35.034 [DEBUG] [Thread-114419] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:47:35.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:47:35.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:47:35.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:47:35.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:47:35.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:47:35.058 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:47:35.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:47:35.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:47:35.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:47:35.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.365718 -999.00  +22.50  27.21     12   -8.20 1 1 1 1 1   888    0 32.44 57.69 ----- 25.8 27.2 12.8 36.4 28.1 -28.6 26.9 -28.4 26.0 -28.1 26.8 -27.9
2025-11-03T10:47:35.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:47:35.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:47:35.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.365718
2025-11-03T10:47:35.067 [DEBUG] [Thread-114419] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:47:35.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:47:35.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:47:35.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:47:35.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:47:35.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:47:35.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:47:16', tmtdew=38.1, humidity=6.81, cloud=0.0, wind=20.01, temperature=22.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:46:38.035', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:47:35.153 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:47:35.166 [DEBUG] [Thread-114422] [transport.py] [_log()] starting thread (client mode): 0x1179a110
2025-11-03T10:47:35.166 [DEBUG] [Thread-114422] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:47:35.181 [DEBUG] [Thread-114422] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:47:35.181 [INFO] [Thread-114422] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:47:35.188 [DEBUG] [Thread-114422] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:47:35.189 [DEBUG] [Thread-114422] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:47:35.189 [DEBUG] [Thread-114422] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:47:35.189 [DEBUG] [Thread-114422] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:47:35.189 [DEBUG] [Thread-114422] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:47:35.189 [DEBUG] [Thread-114422] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:47:35.189 [DEBUG] [Thread-114422] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:47:35.189 [DEBUG] [Thread-114422] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:47:35.189 [DEBUG] [Thread-114422] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:47:35.189 [DEBUG] [Thread-114422] [transport.py] [_log()] client lang: <none>
2025-11-03T10:47:35.189 [DEBUG] [Thread-114422] [transport.py] [_log()] server lang: <none>
2025-11-03T10:47:35.189 [DEBUG] [Thread-114422] [transport.py] [_log()] kex follows: False
2025-11-03T10:47:35.189 [DEBUG] [Thread-114422] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:47:35.189 [DEBUG] [Thread-114422] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:47:35.189 [DEBUG] [Thread-114422] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:47:35.189 [DEBUG] [Thread-114422] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:47:35.189 [DEBUG] [Thread-114422] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:47:35.189 [DEBUG] [Thread-114422] [transport.py] [_log()] Compression: none
2025-11-03T10:47:35.189 [DEBUG] [Thread-114422] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:47:35.248 [DEBUG] [Thread-114422] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:47:35.249 [DEBUG] [Thread-114422] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:47:35.249 [DEBUG] [Thread-114422] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:47:35.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:47:35.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:47:35.304 [DEBUG] [Thread-114422] [transport.py] [_log()] userauth is OK
2025-11-03T10:47:35.304 [DEBUG] [Thread-114422] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:47:35.304 [DEBUG] [Thread-114422] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:47:35.304 [DEBUG] [Thread-114422] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:47:35.305 [DEBUG] [Thread-114422] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:47:35.323 [INFO] [Thread-114422] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:47:35.324 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:47:35.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:47:36.185 [DEBUG] [Thread-114422] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:47:36.185 [DEBUG] [Thread-114422] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:47:36.233 [DEBUG] [Thread-114422] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:47:36.233 [DEBUG] [Thread-114422] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:47:36.242 [DEBUG] [Thread-114422] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:47:36.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:47:36.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:47:36.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:47:36.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:47:36.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:47:36.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:47:36.278 [DEBUG] [Thread-114422] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:47:39.867 [DEBUG] [Thread-114424 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:47:54.132 [DEBUG] [Thread-114425 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:47:54.924 [DEBUG] [Thread-114426 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:48:06.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:48:06.297 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:48:06.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:48:06.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 47, 48), 37.93, 6.94, 0.0, 27.0, 22.11, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:48:06.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:47:48
2025-11-03T10:48:07.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:48:07.234 [DEBUG] [Thread-114427] [transport.py] [_log()] starting thread (client mode): 0xed04fd0
2025-11-03T10:48:07.234 [DEBUG] [Thread-114427] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:48:07.254 [DEBUG] [Thread-114427] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:48:07.254 [INFO] [Thread-114427] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:48:07.257 [DEBUG] [Thread-114427] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:48:07.257 [DEBUG] [Thread-114427] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:48:07.257 [DEBUG] [Thread-114427] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:48:07.257 [DEBUG] [Thread-114427] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:48:07.257 [DEBUG] [Thread-114427] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:48:07.257 [DEBUG] [Thread-114427] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:48:07.257 [DEBUG] [Thread-114427] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:48:07.257 [DEBUG] [Thread-114427] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:48:07.257 [DEBUG] [Thread-114427] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:48:07.257 [DEBUG] [Thread-114427] [transport.py] [_log()] client lang: <none>
2025-11-03T10:48:07.257 [DEBUG] [Thread-114427] [transport.py] [_log()] server lang: <none>
2025-11-03T10:48:07.257 [DEBUG] [Thread-114427] [transport.py] [_log()] kex follows: False
2025-11-03T10:48:07.257 [DEBUG] [Thread-114427] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:48:07.257 [DEBUG] [Thread-114427] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:48:07.257 [DEBUG] [Thread-114427] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:48:07.257 [DEBUG] [Thread-114427] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:48:07.258 [DEBUG] [Thread-114427] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:48:07.258 [DEBUG] [Thread-114427] [transport.py] [_log()] Compression: none
2025-11-03T10:48:07.258 [DEBUG] [Thread-114427] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:48:07.275 [DEBUG] [Thread-114427] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:48:07.276 [DEBUG] [Thread-114427] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:48:07.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:48:07.277 [DEBUG] [Thread-114427] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:48:07.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:48:07.279 [DEBUG] [Thread-114427] [transport.py] [_log()] userauth is OK
2025-11-03T10:48:07.279 [DEBUG] [Thread-114427] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:48:07.279 [DEBUG] [Thread-114427] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:48:07.279 [DEBUG] [Thread-114427] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:48:07.280 [DEBUG] [Thread-114427] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:48:07.305 [INFO] [Thread-114427] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:48:07.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:48:07.917 [DEBUG] [Thread-114427] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:48:07.918 [DEBUG] [Thread-114427] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:48:07.918 [DEBUG] [Thread-114427] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:48:07.958 [DEBUG] [Thread-114427] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:48:07.958 [DEBUG] [Thread-114427] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:48:07.961 [DEBUG] [Thread-114427] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:48:07.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:48:07.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:48:07.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:48:07.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:48:07.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:48:07.995 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:48:07.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:48:07.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:48:07.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:48:07.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.366412 -999.00  +22.20  28.60     11   -8.60 1 1 1 1 1   888    0 31.79 58.49 ----- 34.0 28.6 52.2 35.7 28.0 -29.8 26.9 -29.1 26.0 -28.0 26.7 -28.2
2025-11-03T10:48:07.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:48:07.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:48:07.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.366412
2025-11-03T10:48:07.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:48:07.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:48:07.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:48:07.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:48:07.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:48:07.999 [DEBUG] [Thread-114427] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:48:07.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:47:48', tmtdew=37.93, humidity=6.94, cloud=0.0, wind=27.0, temperature=22.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:47:37.997', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:48:08.083 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:48:08.095 [DEBUG] [Thread-114430] [transport.py] [_log()] starting thread (client mode): 0xedb1450
2025-11-03T10:48:08.096 [DEBUG] [Thread-114430] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:48:08.109 [DEBUG] [Thread-114430] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:48:08.110 [INFO] [Thread-114430] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:48:08.117 [DEBUG] [Thread-114430] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:48:08.118 [DEBUG] [Thread-114430] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:48:08.118 [DEBUG] [Thread-114430] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:48:08.118 [DEBUG] [Thread-114430] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:48:08.118 [DEBUG] [Thread-114430] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:48:08.118 [DEBUG] [Thread-114430] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:48:08.118 [DEBUG] [Thread-114430] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:48:08.118 [DEBUG] [Thread-114430] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:48:08.118 [DEBUG] [Thread-114430] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:48:08.118 [DEBUG] [Thread-114430] [transport.py] [_log()] client lang: <none>
2025-11-03T10:48:08.118 [DEBUG] [Thread-114430] [transport.py] [_log()] server lang: <none>
2025-11-03T10:48:08.118 [DEBUG] [Thread-114430] [transport.py] [_log()] kex follows: False
2025-11-03T10:48:08.118 [DEBUG] [Thread-114430] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:48:08.118 [DEBUG] [Thread-114430] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:48:08.118 [DEBUG] [Thread-114430] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:48:08.118 [DEBUG] [Thread-114430] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:48:08.118 [DEBUG] [Thread-114430] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:48:08.118 [DEBUG] [Thread-114430] [transport.py] [_log()] Compression: none
2025-11-03T10:48:08.118 [DEBUG] [Thread-114430] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:48:08.176 [DEBUG] [Thread-114430] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:48:08.177 [DEBUG] [Thread-114430] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:48:08.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:48:08.178 [DEBUG] [Thread-114430] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:48:08.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:48:08.233 [DEBUG] [Thread-114430] [transport.py] [_log()] userauth is OK
2025-11-03T10:48:08.233 [DEBUG] [Thread-114430] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:48:08.233 [DEBUG] [Thread-114430] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:48:08.233 [DEBUG] [Thread-114430] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:48:08.234 [DEBUG] [Thread-114430] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:48:08.254 [INFO] [Thread-114430] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:48:08.254 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:48:08.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:48:09.139 [DEBUG] [Thread-114430] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:48:09.140 [DEBUG] [Thread-114430] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:48:09.187 [DEBUG] [Thread-114430] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:48:09.187 [DEBUG] [Thread-114430] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:48:09.196 [DEBUG] [Thread-114430] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:48:09.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:48:09.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:48:09.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:48:09.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:48:09.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:48:09.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:48:09.231 [DEBUG] [Thread-114430] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:48:09.953 [DEBUG] [Thread-114432 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:48:25.001 [DEBUG] [Thread-114433 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:48:26.181 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:48:26.182 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:48:39.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:48:39.253 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:48:39.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:48:39.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 48, 20), 37.98, 6.93, 0.0, 25.36, 22.18, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:48:39.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:48:20
2025-11-03T10:48:40.030 [DEBUG] [Thread-114434 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:48:40.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:48:40.221 [DEBUG] [Thread-114435] [transport.py] [_log()] starting thread (client mode): 0xedc6c50
2025-11-03T10:48:40.222 [DEBUG] [Thread-114435] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:48:40.238 [DEBUG] [Thread-114435] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:48:40.238 [INFO] [Thread-114435] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:48:40.239 [DEBUG] [Thread-114435] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:48:40.239 [DEBUG] [Thread-114435] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:48:40.239 [DEBUG] [Thread-114435] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:48:40.239 [DEBUG] [Thread-114435] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:48:40.239 [DEBUG] [Thread-114435] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:48:40.239 [DEBUG] [Thread-114435] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:48:40.239 [DEBUG] [Thread-114435] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:48:40.239 [DEBUG] [Thread-114435] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:48:40.239 [DEBUG] [Thread-114435] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:48:40.239 [DEBUG] [Thread-114435] [transport.py] [_log()] client lang: <none>
2025-11-03T10:48:40.239 [DEBUG] [Thread-114435] [transport.py] [_log()] server lang: <none>
2025-11-03T10:48:40.239 [DEBUG] [Thread-114435] [transport.py] [_log()] kex follows: False
2025-11-03T10:48:40.239 [DEBUG] [Thread-114435] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:48:40.240 [DEBUG] [Thread-114435] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:48:40.240 [DEBUG] [Thread-114435] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:48:40.240 [DEBUG] [Thread-114435] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:48:40.240 [DEBUG] [Thread-114435] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:48:40.240 [DEBUG] [Thread-114435] [transport.py] [_log()] Compression: none
2025-11-03T10:48:40.240 [DEBUG] [Thread-114435] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:48:40.247 [DEBUG] [Thread-114435] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:48:40.247 [DEBUG] [Thread-114435] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:48:40.248 [DEBUG] [Thread-114435] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:48:40.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:48:40.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:48:40.248 [DEBUG] [Thread-114435] [transport.py] [_log()] userauth is OK
2025-11-03T10:48:40.248 [DEBUG] [Thread-114435] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:48:40.248 [DEBUG] [Thread-114435] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:48:40.248 [DEBUG] [Thread-114435] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:48:40.248 [DEBUG] [Thread-114435] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:48:40.261 [INFO] [Thread-114435] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:48:40.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:48:40.851 [DEBUG] [Thread-114435] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:48:40.852 [DEBUG] [Thread-114435] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:48:40.852 [DEBUG] [Thread-114435] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:48:40.892 [DEBUG] [Thread-114435] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:48:40.892 [DEBUG] [Thread-114435] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:48:40.894 [DEBUG] [Thread-114435] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:48:40.904 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:48:40.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:48:40.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:48:40.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:48:40.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:48:40.911 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:48:40.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:48:40.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:48:40.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:48:40.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.366760 -999.00  +22.10  27.27     12   -8.60 1 1 1 1 1   888    0 31.97 55.40 ----- 31.2 27.3 60.2 35.4 27.9 -30.2 26.9 -29.3 25.8 -30.9 26.7 -28.6
2025-11-03T10:48:40.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:48:40.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:48:40.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.366760
2025-11-03T10:48:40.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:48:40.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:48:40.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:48:40.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:48:40.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:48:40.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:48:20', tmtdew=37.98, humidity=6.93, cloud=0.0, wind=25.36, temperature=22.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:48:08.064', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:48:40.912 [DEBUG] [Thread-114435] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:48:40.984 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:48:40.996 [DEBUG] [Thread-114438] [transport.py] [_log()] starting thread (client mode): 0xedc7e50
2025-11-03T10:48:40.996 [DEBUG] [Thread-114438] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:48:41.010 [DEBUG] [Thread-114438] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:48:41.010 [INFO] [Thread-114438] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:48:41.018 [DEBUG] [Thread-114438] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:48:41.018 [DEBUG] [Thread-114438] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:48:41.018 [DEBUG] [Thread-114438] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:48:41.018 [DEBUG] [Thread-114438] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:48:41.018 [DEBUG] [Thread-114438] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:48:41.018 [DEBUG] [Thread-114438] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:48:41.018 [DEBUG] [Thread-114438] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:48:41.018 [DEBUG] [Thread-114438] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:48:41.018 [DEBUG] [Thread-114438] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:48:41.018 [DEBUG] [Thread-114438] [transport.py] [_log()] client lang: <none>
2025-11-03T10:48:41.018 [DEBUG] [Thread-114438] [transport.py] [_log()] server lang: <none>
2025-11-03T10:48:41.018 [DEBUG] [Thread-114438] [transport.py] [_log()] kex follows: False
2025-11-03T10:48:41.018 [DEBUG] [Thread-114438] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:48:41.018 [DEBUG] [Thread-114438] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:48:41.018 [DEBUG] [Thread-114438] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:48:41.018 [DEBUG] [Thread-114438] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:48:41.018 [DEBUG] [Thread-114438] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:48:41.018 [DEBUG] [Thread-114438] [transport.py] [_log()] Compression: none
2025-11-03T10:48:41.018 [DEBUG] [Thread-114438] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:48:41.079 [DEBUG] [Thread-114438] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:48:41.079 [DEBUG] [Thread-114438] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:48:41.079 [DEBUG] [Thread-114438] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:48:41.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:48:41.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:48:41.137 [DEBUG] [Thread-114438] [transport.py] [_log()] userauth is OK
2025-11-03T10:48:41.137 [DEBUG] [Thread-114438] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:48:41.137 [DEBUG] [Thread-114438] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:48:41.137 [DEBUG] [Thread-114438] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:48:41.137 [DEBUG] [Thread-114438] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:48:41.151 [INFO] [Thread-114438] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:48:41.151 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:48:41.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:48:41.995 [DEBUG] [Thread-114438] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:48:41.995 [DEBUG] [Thread-114438] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:48:42.043 [DEBUG] [Thread-114438] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:48:42.043 [DEBUG] [Thread-114438] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:48:42.053 [DEBUG] [Thread-114438] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:48:42.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:48:42.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:48:42.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:48:42.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:48:42.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:48:42.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:48:42.090 [DEBUG] [Thread-114438] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:48:54.164 [DEBUG] [Thread-114440 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:48:55.060 [DEBUG] [Thread-114441 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:49:10.101 [DEBUG] [Thread-114442 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:49:12.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:49:12.113 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:49:12.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:49:12.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 48, 52), 37.85, 6.91, 0.0, 30.19, 22.23, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:49:12.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:48:52
2025-11-03T10:49:12.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:49:13.107 [DEBUG] [Thread-114443] [transport.py] [_log()] starting thread (client mode): 0xedc4a60
2025-11-03T10:49:13.107 [DEBUG] [Thread-114443] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:49:13.127 [DEBUG] [Thread-114443] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:49:13.127 [INFO] [Thread-114443] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:49:13.130 [DEBUG] [Thread-114443] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:49:13.130 [DEBUG] [Thread-114443] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:49:13.130 [DEBUG] [Thread-114443] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:49:13.130 [DEBUG] [Thread-114443] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:49:13.130 [DEBUG] [Thread-114443] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:49:13.130 [DEBUG] [Thread-114443] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:49:13.130 [DEBUG] [Thread-114443] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:49:13.130 [DEBUG] [Thread-114443] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:49:13.130 [DEBUG] [Thread-114443] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:49:13.130 [DEBUG] [Thread-114443] [transport.py] [_log()] client lang: <none>
2025-11-03T10:49:13.130 [DEBUG] [Thread-114443] [transport.py] [_log()] server lang: <none>
2025-11-03T10:49:13.130 [DEBUG] [Thread-114443] [transport.py] [_log()] kex follows: False
2025-11-03T10:49:13.130 [DEBUG] [Thread-114443] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:49:13.130 [DEBUG] [Thread-114443] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:49:13.130 [DEBUG] [Thread-114443] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:49:13.131 [DEBUG] [Thread-114443] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:49:13.131 [DEBUG] [Thread-114443] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:49:13.131 [DEBUG] [Thread-114443] [transport.py] [_log()] Compression: none
2025-11-03T10:49:13.131 [DEBUG] [Thread-114443] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:49:13.147 [DEBUG] [Thread-114443] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:49:13.148 [DEBUG] [Thread-114443] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:49:13.148 [DEBUG] [Thread-114443] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:49:13.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:49:13.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:49:13.150 [DEBUG] [Thread-114443] [transport.py] [_log()] userauth is OK
2025-11-03T10:49:13.150 [DEBUG] [Thread-114443] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:49:13.150 [DEBUG] [Thread-114443] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:49:13.150 [DEBUG] [Thread-114443] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:49:13.150 [DEBUG] [Thread-114443] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:49:13.168 [INFO] [Thread-114443] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:49:13.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:49:13.780 [DEBUG] [Thread-114443] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:49:13.780 [DEBUG] [Thread-114443] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:49:13.780 [DEBUG] [Thread-114443] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:49:13.821 [DEBUG] [Thread-114443] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:49:13.821 [DEBUG] [Thread-114443] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:49:13.823 [DEBUG] [Thread-114443] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:49:13.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:49:13.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:49:13.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:49:13.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:49:13.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:49:13.834 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:49:13.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:49:13.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:49:13.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:49:13.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.367107 -999.00  +21.80  29.00     12   -8.70 1 1 1 1 1   888    0 32.10 55.69 ----- 22.7 29.0 63.2 35.7 27.9 -29.3 26.8 -30.1 25.7 -30.4 26.6 -28.0
2025-11-03T10:49:13.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:49:13.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:49:13.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.367107
2025-11-03T10:49:13.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:49:13.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:49:13.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:49:13.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:49:13.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:49:13.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:48:52', tmtdew=37.85, humidity=6.91, cloud=0.0, wind=30.19, temperature=22.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:48:38.045', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:49:13.835 [DEBUG] [Thread-114443] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:49:13.910 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:49:13.920 [DEBUG] [Thread-114446] [transport.py] [_log()] starting thread (client mode): 0x1179ad40
2025-11-03T10:49:13.920 [DEBUG] [Thread-114446] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:49:13.939 [DEBUG] [Thread-114446] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:49:13.939 [INFO] [Thread-114446] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:49:13.946 [DEBUG] [Thread-114446] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:49:13.946 [DEBUG] [Thread-114446] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:49:13.946 [DEBUG] [Thread-114446] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:49:13.947 [DEBUG] [Thread-114446] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:49:13.947 [DEBUG] [Thread-114446] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:49:13.947 [DEBUG] [Thread-114446] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:49:13.947 [DEBUG] [Thread-114446] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:49:13.947 [DEBUG] [Thread-114446] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:49:13.947 [DEBUG] [Thread-114446] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:49:13.947 [DEBUG] [Thread-114446] [transport.py] [_log()] client lang: <none>
2025-11-03T10:49:13.947 [DEBUG] [Thread-114446] [transport.py] [_log()] server lang: <none>
2025-11-03T10:49:13.947 [DEBUG] [Thread-114446] [transport.py] [_log()] kex follows: False
2025-11-03T10:49:13.947 [DEBUG] [Thread-114446] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:49:13.947 [DEBUG] [Thread-114446] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:49:13.947 [DEBUG] [Thread-114446] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:49:13.947 [DEBUG] [Thread-114446] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:49:13.947 [DEBUG] [Thread-114446] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:49:13.947 [DEBUG] [Thread-114446] [transport.py] [_log()] Compression: none
2025-11-03T10:49:13.947 [DEBUG] [Thread-114446] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:49:14.005 [DEBUG] [Thread-114446] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:49:14.005 [DEBUG] [Thread-114446] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:49:14.005 [DEBUG] [Thread-114446] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:49:14.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:49:14.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:49:14.061 [DEBUG] [Thread-114446] [transport.py] [_log()] userauth is OK
2025-11-03T10:49:14.061 [DEBUG] [Thread-114446] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:49:14.061 [DEBUG] [Thread-114446] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:49:14.061 [DEBUG] [Thread-114446] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:49:14.061 [DEBUG] [Thread-114446] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:49:14.075 [INFO] [Thread-114446] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:49:14.076 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:49:14.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:49:14.917 [DEBUG] [Thread-114446] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:49:14.917 [DEBUG] [Thread-114446] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:49:14.965 [DEBUG] [Thread-114446] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:49:14.965 [DEBUG] [Thread-114446] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:49:14.973 [DEBUG] [Thread-114446] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:49:14.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:49:14.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:49:14.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:49:14.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:49:14.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:49:14.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:49:15.006 [DEBUG] [Thread-114446] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:49:25.137 [DEBUG] [Thread-114448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:49:26.323 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:49:26.323 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:49:40.208 [DEBUG] [Thread-114449 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:49:45.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:49:45.028 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:49:45.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:49:45.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 49, 25), 37.93, 6.89, 0.0, 29.41, 22.43, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:49:45.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:49:25
2025-11-03T10:49:45.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:49:46.061 [DEBUG] [Thread-114450] [transport.py] [_log()] starting thread (client mode): 0xedc71f0
2025-11-03T10:49:46.062 [DEBUG] [Thread-114450] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:49:46.079 [DEBUG] [Thread-114450] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:49:46.079 [INFO] [Thread-114450] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:49:46.082 [DEBUG] [Thread-114450] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:49:46.082 [DEBUG] [Thread-114450] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:49:46.082 [DEBUG] [Thread-114450] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:49:46.082 [DEBUG] [Thread-114450] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:49:46.082 [DEBUG] [Thread-114450] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:49:46.082 [DEBUG] [Thread-114450] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:49:46.083 [DEBUG] [Thread-114450] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:49:46.083 [DEBUG] [Thread-114450] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:49:46.083 [DEBUG] [Thread-114450] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:49:46.083 [DEBUG] [Thread-114450] [transport.py] [_log()] client lang: <none>
2025-11-03T10:49:46.083 [DEBUG] [Thread-114450] [transport.py] [_log()] server lang: <none>
2025-11-03T10:49:46.083 [DEBUG] [Thread-114450] [transport.py] [_log()] kex follows: False
2025-11-03T10:49:46.083 [DEBUG] [Thread-114450] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:49:46.083 [DEBUG] [Thread-114450] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:49:46.083 [DEBUG] [Thread-114450] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:49:46.083 [DEBUG] [Thread-114450] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:49:46.083 [DEBUG] [Thread-114450] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:49:46.083 [DEBUG] [Thread-114450] [transport.py] [_log()] Compression: none
2025-11-03T10:49:46.083 [DEBUG] [Thread-114450] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:49:46.098 [DEBUG] [Thread-114450] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:49:46.098 [DEBUG] [Thread-114450] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:49:46.098 [DEBUG] [Thread-114450] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:49:46.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:49:46.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:49:46.099 [DEBUG] [Thread-114450] [transport.py] [_log()] userauth is OK
2025-11-03T10:49:46.099 [DEBUG] [Thread-114450] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:49:46.099 [DEBUG] [Thread-114450] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:49:46.099 [DEBUG] [Thread-114450] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:49:46.099 [DEBUG] [Thread-114450] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:49:46.108 [INFO] [Thread-114450] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:49:46.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:49:46.668 [DEBUG] [Thread-114450] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:49:46.669 [DEBUG] [Thread-114450] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:49:46.669 [DEBUG] [Thread-114450] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:49:46.711 [DEBUG] [Thread-114450] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:49:46.711 [DEBUG] [Thread-114450] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:49:46.713 [DEBUG] [Thread-114450] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:49:46.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:49:46.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:49:46.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:49:46.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:49:46.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:49:46.741 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:49:46.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:49:46.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:49:46.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:49:46.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.367454 -999.00  +22.10  29.28     12   -8.60 1 1 1 1 1   888    0 32.18 52.32 ----- 27.5 29.3 44.6 33.2 27.8 -28.1 26.8 -27.7 25.9 -27.8 26.8 -28.0
2025-11-03T10:49:46.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:49:46.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:49:46.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.367454
2025-11-03T10:49:46.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:49:46.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:49:46.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:49:46.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:49:46.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:49:46.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:49:25', tmtdew=37.93, humidity=6.89, cloud=0.0, wind=29.41, temperature=22.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:49:08.026', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:49:46.744 [DEBUG] [Thread-114450] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:49:46.828 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:49:46.840 [DEBUG] [Thread-114453] [transport.py] [_log()] starting thread (client mode): 0xedc5ba0
2025-11-03T10:49:46.840 [DEBUG] [Thread-114453] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:49:46.855 [DEBUG] [Thread-114453] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:49:46.855 [INFO] [Thread-114453] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:49:46.863 [DEBUG] [Thread-114453] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:49:46.863 [DEBUG] [Thread-114453] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:49:46.863 [DEBUG] [Thread-114453] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:49:46.863 [DEBUG] [Thread-114453] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:49:46.863 [DEBUG] [Thread-114453] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:49:46.863 [DEBUG] [Thread-114453] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:49:46.863 [DEBUG] [Thread-114453] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:49:46.863 [DEBUG] [Thread-114453] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:49:46.863 [DEBUG] [Thread-114453] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:49:46.863 [DEBUG] [Thread-114453] [transport.py] [_log()] client lang: <none>
2025-11-03T10:49:46.864 [DEBUG] [Thread-114453] [transport.py] [_log()] server lang: <none>
2025-11-03T10:49:46.864 [DEBUG] [Thread-114453] [transport.py] [_log()] kex follows: False
2025-11-03T10:49:46.864 [DEBUG] [Thread-114453] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:49:46.864 [DEBUG] [Thread-114453] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:49:46.864 [DEBUG] [Thread-114453] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:49:46.864 [DEBUG] [Thread-114453] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:49:46.864 [DEBUG] [Thread-114453] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:49:46.864 [DEBUG] [Thread-114453] [transport.py] [_log()] Compression: none
2025-11-03T10:49:46.864 [DEBUG] [Thread-114453] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:49:46.922 [DEBUG] [Thread-114453] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:49:46.922 [DEBUG] [Thread-114453] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:49:46.923 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:49:46.924 [DEBUG] [Thread-114453] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:49:46.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:49:46.978 [DEBUG] [Thread-114453] [transport.py] [_log()] userauth is OK
2025-11-03T10:49:46.979 [DEBUG] [Thread-114453] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:49:46.979 [DEBUG] [Thread-114453] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:49:46.979 [DEBUG] [Thread-114453] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:49:46.979 [DEBUG] [Thread-114453] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:49:46.998 [INFO] [Thread-114453] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:49:46.999 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:49:46.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:49:47.858 [DEBUG] [Thread-114453] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:49:47.858 [DEBUG] [Thread-114453] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:49:47.906 [DEBUG] [Thread-114453] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:49:47.906 [DEBUG] [Thread-114453] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:49:47.915 [DEBUG] [Thread-114453] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:49:47.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:49:47.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:49:47.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:49:47.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:49:47.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:49:47.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:49:47.952 [DEBUG] [Thread-114453] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:49:54.205 [DEBUG] [Thread-114455 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:49:55.241 [DEBUG] [Thread-114456 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:50:10.274 [DEBUG] [Thread-114457 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:50:17.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:50:17.975 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:50:17.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:50:18.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 49, 57), 38.11, 6.78, 0.0, 25.74, 22.56, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:50:18.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:49:57
2025-11-03T10:50:18.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:50:18.944 [DEBUG] [Thread-114458] [transport.py] [_log()] starting thread (client mode): 0xedc5840
2025-11-03T10:50:18.944 [DEBUG] [Thread-114458] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:50:18.966 [DEBUG] [Thread-114458] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:50:18.966 [INFO] [Thread-114458] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:50:18.969 [DEBUG] [Thread-114458] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:50:18.969 [DEBUG] [Thread-114458] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:50:18.969 [DEBUG] [Thread-114458] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:50:18.969 [DEBUG] [Thread-114458] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:50:18.969 [DEBUG] [Thread-114458] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:50:18.969 [DEBUG] [Thread-114458] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:50:18.969 [DEBUG] [Thread-114458] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:50:18.969 [DEBUG] [Thread-114458] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:50:18.969 [DEBUG] [Thread-114458] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:50:18.969 [DEBUG] [Thread-114458] [transport.py] [_log()] client lang: <none>
2025-11-03T10:50:18.969 [DEBUG] [Thread-114458] [transport.py] [_log()] server lang: <none>
2025-11-03T10:50:18.969 [DEBUG] [Thread-114458] [transport.py] [_log()] kex follows: False
2025-11-03T10:50:18.969 [DEBUG] [Thread-114458] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:50:18.969 [DEBUG] [Thread-114458] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:50:18.969 [DEBUG] [Thread-114458] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:50:18.969 [DEBUG] [Thread-114458] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:50:18.969 [DEBUG] [Thread-114458] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:50:18.969 [DEBUG] [Thread-114458] [transport.py] [_log()] Compression: none
2025-11-03T10:50:18.969 [DEBUG] [Thread-114458] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:50:18.994 [DEBUG] [Thread-114458] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:50:18.994 [DEBUG] [Thread-114458] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:50:18.994 [DEBUG] [Thread-114458] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:50:18.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:50:18.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:50:18.995 [DEBUG] [Thread-114458] [transport.py] [_log()] userauth is OK
2025-11-03T10:50:18.995 [DEBUG] [Thread-114458] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:50:18.995 [DEBUG] [Thread-114458] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:50:18.995 [DEBUG] [Thread-114458] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:50:18.995 [DEBUG] [Thread-114458] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:50:19.004 [INFO] [Thread-114458] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:50:19.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:50:19.650 [DEBUG] [Thread-114458] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:50:19.650 [DEBUG] [Thread-114458] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:50:19.651 [DEBUG] [Thread-114458] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:50:19.691 [DEBUG] [Thread-114458] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:50:19.691 [DEBUG] [Thread-114458] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:50:19.695 [DEBUG] [Thread-114458] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:50:19.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:50:19.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:50:19.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:50:19.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:50:19.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:50:19.719 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:50:19.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:50:19.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:50:19.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:50:19.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.367801 -999.00  +22.10  31.31     12   -8.50 1 1 2 1 1   888    0 31.65 48.67 ----- 26.1 31.3 50.2 34.9 27.9 -29.2 26.8 -28.3 25.9 -28.3 26.8 -27.9
2025-11-03T10:50:19.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:50:19.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:50:19.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.367801
2025-11-03T10:50:19.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:50:19.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:50:19.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:50:19.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:50:19.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:50:19.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:49:57', tmtdew=38.11, humidity=6.78, cloud=0.0, wind=25.74, temperature=22.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:49:38.006', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:50:19.722 [DEBUG] [Thread-114458] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:50:19.805 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:50:19.818 [DEBUG] [Thread-114461] [transport.py] [_log()] starting thread (client mode): 0xed363b0
2025-11-03T10:50:19.818 [DEBUG] [Thread-114461] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:50:19.833 [DEBUG] [Thread-114461] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:50:19.833 [INFO] [Thread-114461] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:50:19.840 [DEBUG] [Thread-114461] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:50:19.840 [DEBUG] [Thread-114461] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:50:19.841 [DEBUG] [Thread-114461] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:50:19.841 [DEBUG] [Thread-114461] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:50:19.841 [DEBUG] [Thread-114461] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:50:19.841 [DEBUG] [Thread-114461] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:50:19.841 [DEBUG] [Thread-114461] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:50:19.841 [DEBUG] [Thread-114461] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:50:19.841 [DEBUG] [Thread-114461] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:50:19.841 [DEBUG] [Thread-114461] [transport.py] [_log()] client lang: <none>
2025-11-03T10:50:19.841 [DEBUG] [Thread-114461] [transport.py] [_log()] server lang: <none>
2025-11-03T10:50:19.841 [DEBUG] [Thread-114461] [transport.py] [_log()] kex follows: False
2025-11-03T10:50:19.841 [DEBUG] [Thread-114461] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:50:19.841 [DEBUG] [Thread-114461] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:50:19.841 [DEBUG] [Thread-114461] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:50:19.841 [DEBUG] [Thread-114461] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:50:19.841 [DEBUG] [Thread-114461] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:50:19.841 [DEBUG] [Thread-114461] [transport.py] [_log()] Compression: none
2025-11-03T10:50:19.841 [DEBUG] [Thread-114461] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:50:19.904 [DEBUG] [Thread-114461] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:50:19.905 [DEBUG] [Thread-114461] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:50:19.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:50:19.906 [DEBUG] [Thread-114461] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:50:19.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:50:19.963 [DEBUG] [Thread-114461] [transport.py] [_log()] userauth is OK
2025-11-03T10:50:19.963 [DEBUG] [Thread-114461] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:50:19.963 [DEBUG] [Thread-114461] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:50:19.963 [DEBUG] [Thread-114461] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:50:19.964 [DEBUG] [Thread-114461] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:50:19.983 [INFO] [Thread-114461] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:50:19.983 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:50:19.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:50:20.862 [DEBUG] [Thread-114461] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:50:20.862 [DEBUG] [Thread-114461] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:50:20.910 [DEBUG] [Thread-114461] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:50:20.910 [DEBUG] [Thread-114461] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:50:20.920 [DEBUG] [Thread-114461] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:50:20.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:50:20.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:50:20.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:50:20.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:50:20.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:50:20.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:50:20.957 [DEBUG] [Thread-114461] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:50:25.323 [DEBUG] [Thread-114463 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:50:26.465 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:50:26.466 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:50:40.377 [DEBUG] [Thread-114464 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:50:50.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:50:50.953 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:50:50.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:50:51.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 50, 29), 38.17, 6.78, 0.0, 25.07, 22.79, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:50:51.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:50:29
2025-11-03T10:50:51.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:50:51.886 [DEBUG] [Thread-114465] [transport.py] [_log()] starting thread (client mode): 0xedc4ac0
2025-11-03T10:50:51.886 [DEBUG] [Thread-114465] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:50:51.906 [DEBUG] [Thread-114465] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:50:51.906 [INFO] [Thread-114465] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:50:51.909 [DEBUG] [Thread-114465] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:50:51.910 [DEBUG] [Thread-114465] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:50:51.910 [DEBUG] [Thread-114465] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:50:51.910 [DEBUG] [Thread-114465] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:50:51.910 [DEBUG] [Thread-114465] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:50:51.910 [DEBUG] [Thread-114465] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:50:51.910 [DEBUG] [Thread-114465] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:50:51.910 [DEBUG] [Thread-114465] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:50:51.910 [DEBUG] [Thread-114465] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:50:51.910 [DEBUG] [Thread-114465] [transport.py] [_log()] client lang: <none>
2025-11-03T10:50:51.910 [DEBUG] [Thread-114465] [transport.py] [_log()] server lang: <none>
2025-11-03T10:50:51.910 [DEBUG] [Thread-114465] [transport.py] [_log()] kex follows: False
2025-11-03T10:50:51.910 [DEBUG] [Thread-114465] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:50:51.910 [DEBUG] [Thread-114465] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:50:51.911 [DEBUG] [Thread-114465] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:50:51.911 [DEBUG] [Thread-114465] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:50:51.911 [DEBUG] [Thread-114465] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:50:51.911 [DEBUG] [Thread-114465] [transport.py] [_log()] Compression: none
2025-11-03T10:50:51.911 [DEBUG] [Thread-114465] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:50:51.929 [DEBUG] [Thread-114465] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:50:51.931 [DEBUG] [Thread-114465] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:50:51.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:50:51.932 [DEBUG] [Thread-114465] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:50:51.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:50:51.934 [DEBUG] [Thread-114465] [transport.py] [_log()] userauth is OK
2025-11-03T10:50:51.934 [DEBUG] [Thread-114465] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:50:51.934 [DEBUG] [Thread-114465] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:50:51.934 [DEBUG] [Thread-114465] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:50:51.935 [DEBUG] [Thread-114465] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:50:51.957 [INFO] [Thread-114465] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:50:51.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:50:52.599 [DEBUG] [Thread-114465] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:50:52.600 [DEBUG] [Thread-114465] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:50:52.600 [DEBUG] [Thread-114465] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:50:52.631 [DEBUG] [Thread-114465] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:50:52.631 [DEBUG] [Thread-114465] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:50:52.634 [DEBUG] [Thread-114465] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:50:52.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:50:52.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:50:52.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:50:52.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:50:52.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:50:52.661 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:50:52.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:50:52.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:50:52.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:50:52.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.368160 -999.00  +21.90  21.98     12   -8.70 1 1 1 1 1   888    0 31.75 45.63 ----- 22.5 22.0 36.2 34.3 27.8 -30.1 26.8 -28.3 25.8 -29.4 26.7 -28.7
2025-11-03T10:50:52.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:50:52.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:50:52.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.368160
2025-11-03T10:50:52.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:50:52.663 [DEBUG] [Thread-114465] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:50:52.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:50:52.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:50:52.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:50:52.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:50:52.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:50:29', tmtdew=38.17, humidity=6.78, cloud=0.0, wind=25.07, temperature=22.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:50:09.024', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:50:52.747 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:50:52.759 [DEBUG] [Thread-114468] [transport.py] [_log()] starting thread (client mode): 0x1179b310
2025-11-03T10:50:52.759 [DEBUG] [Thread-114468] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:50:52.778 [DEBUG] [Thread-114468] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:50:52.778 [INFO] [Thread-114468] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:50:52.788 [DEBUG] [Thread-114468] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:50:52.788 [DEBUG] [Thread-114468] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:50:52.788 [DEBUG] [Thread-114468] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:50:52.788 [DEBUG] [Thread-114468] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:50:52.788 [DEBUG] [Thread-114468] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:50:52.788 [DEBUG] [Thread-114468] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:50:52.788 [DEBUG] [Thread-114468] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:50:52.788 [DEBUG] [Thread-114468] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:50:52.788 [DEBUG] [Thread-114468] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:50:52.788 [DEBUG] [Thread-114468] [transport.py] [_log()] client lang: <none>
2025-11-03T10:50:52.788 [DEBUG] [Thread-114468] [transport.py] [_log()] server lang: <none>
2025-11-03T10:50:52.788 [DEBUG] [Thread-114468] [transport.py] [_log()] kex follows: False
2025-11-03T10:50:52.788 [DEBUG] [Thread-114468] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:50:52.788 [DEBUG] [Thread-114468] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:50:52.789 [DEBUG] [Thread-114468] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:50:52.789 [DEBUG] [Thread-114468] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:50:52.789 [DEBUG] [Thread-114468] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:50:52.790 [DEBUG] [Thread-114468] [transport.py] [_log()] Compression: none
2025-11-03T10:50:52.790 [DEBUG] [Thread-114468] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:50:52.844 [DEBUG] [Thread-114468] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:50:52.845 [DEBUG] [Thread-114468] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:50:52.846 [DEBUG] [Thread-114468] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:50:52.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:50:52.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:50:52.903 [DEBUG] [Thread-114468] [transport.py] [_log()] userauth is OK
2025-11-03T10:50:52.903 [DEBUG] [Thread-114468] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:50:52.904 [DEBUG] [Thread-114468] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:50:52.904 [DEBUG] [Thread-114468] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:50:52.904 [DEBUG] [Thread-114468] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:50:52.923 [INFO] [Thread-114468] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:50:52.923 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:50:52.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:50:53.813 [DEBUG] [Thread-114468] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:50:53.813 [DEBUG] [Thread-114468] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:50:53.861 [DEBUG] [Thread-114468] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:50:53.861 [DEBUG] [Thread-114468] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:50:53.870 [DEBUG] [Thread-114468] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:50:53.878 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:50:53.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:50:53.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:50:53.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:50:53.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:50:53.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:50:53.903 [DEBUG] [Thread-114468] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:50:54.262 [DEBUG] [Thread-114470 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:50:55.423 [DEBUG] [Thread-114471 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:51:10.479 [DEBUG] [Thread-114472 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:51:23.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:51:23.927 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:51:23.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:51:24.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 51, 1), 38.59, 6.58, 0.0, 26.73, 22.93, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:51:24.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:51:01
2025-11-03T10:51:24.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:51:24.861 [DEBUG] [Thread-114473] [transport.py] [_log()] starting thread (client mode): 0x1179bee0
2025-11-03T10:51:24.861 [DEBUG] [Thread-114473] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:51:24.882 [DEBUG] [Thread-114473] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:51:24.882 [INFO] [Thread-114473] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:51:24.885 [DEBUG] [Thread-114473] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:51:24.885 [DEBUG] [Thread-114473] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:51:24.885 [DEBUG] [Thread-114473] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:51:24.885 [DEBUG] [Thread-114473] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:51:24.885 [DEBUG] [Thread-114473] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:51:24.885 [DEBUG] [Thread-114473] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:51:24.885 [DEBUG] [Thread-114473] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:51:24.885 [DEBUG] [Thread-114473] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:51:24.885 [DEBUG] [Thread-114473] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:51:24.885 [DEBUG] [Thread-114473] [transport.py] [_log()] client lang: <none>
2025-11-03T10:51:24.885 [DEBUG] [Thread-114473] [transport.py] [_log()] server lang: <none>
2025-11-03T10:51:24.885 [DEBUG] [Thread-114473] [transport.py] [_log()] kex follows: False
2025-11-03T10:51:24.885 [DEBUG] [Thread-114473] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:51:24.885 [DEBUG] [Thread-114473] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:51:24.885 [DEBUG] [Thread-114473] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:51:24.885 [DEBUG] [Thread-114473] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:51:24.885 [DEBUG] [Thread-114473] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:51:24.885 [DEBUG] [Thread-114473] [transport.py] [_log()] Compression: none
2025-11-03T10:51:24.885 [DEBUG] [Thread-114473] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:51:24.902 [DEBUG] [Thread-114473] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:51:24.903 [DEBUG] [Thread-114473] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:51:24.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:51:24.904 [DEBUG] [Thread-114473] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:51:24.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:51:24.906 [DEBUG] [Thread-114473] [transport.py] [_log()] userauth is OK
2025-11-03T10:51:24.906 [DEBUG] [Thread-114473] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:51:24.907 [DEBUG] [Thread-114473] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:51:24.907 [DEBUG] [Thread-114473] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:51:24.907 [DEBUG] [Thread-114473] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:51:24.930 [INFO] [Thread-114473] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:51:24.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:51:25.510 [DEBUG] [Thread-114475 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:51:25.574 [DEBUG] [Thread-114473] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:51:25.574 [DEBUG] [Thread-114473] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:51:25.575 [DEBUG] [Thread-114473] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:51:25.615 [DEBUG] [Thread-114473] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:51:25.615 [DEBUG] [Thread-114473] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:51:25.619 [DEBUG] [Thread-114473] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:51:25.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:51:25.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:51:25.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:51:25.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:51:25.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:51:25.644 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:51:25.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:51:25.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:51:25.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:51:25.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.368496 -999.00  +22.40  28.24     12   -8.30 1 1 1 1 1   888    0 31.66 42.39 ----- 22.0 28.2 45.6 34.6 27.9 -27.9 26.8 -27.4 26.0 -27.1 26.9 -27.7
2025-11-03T10:51:25.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:51:25.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:51:25.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.368496
2025-11-03T10:51:25.653 [DEBUG] [Thread-114473] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:51:25.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:51:25.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:51:25.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:51:25.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:51:25.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:51:25.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:51:01', tmtdew=38.59, humidity=6.58, cloud=0.0, wind=26.73, temperature=22.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:50:38.054', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:51:25.739 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:51:25.752 [DEBUG] [Thread-114477] [transport.py] [_log()] starting thread (client mode): 0xedc4c10
2025-11-03T10:51:25.752 [DEBUG] [Thread-114477] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:51:25.767 [DEBUG] [Thread-114477] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:51:25.767 [INFO] [Thread-114477] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:51:25.775 [DEBUG] [Thread-114477] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:51:25.775 [DEBUG] [Thread-114477] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:51:25.775 [DEBUG] [Thread-114477] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:51:25.775 [DEBUG] [Thread-114477] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:51:25.775 [DEBUG] [Thread-114477] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:51:25.775 [DEBUG] [Thread-114477] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:51:25.775 [DEBUG] [Thread-114477] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:51:25.775 [DEBUG] [Thread-114477] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:51:25.775 [DEBUG] [Thread-114477] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:51:25.776 [DEBUG] [Thread-114477] [transport.py] [_log()] client lang: <none>
2025-11-03T10:51:25.776 [DEBUG] [Thread-114477] [transport.py] [_log()] server lang: <none>
2025-11-03T10:51:25.776 [DEBUG] [Thread-114477] [transport.py] [_log()] kex follows: False
2025-11-03T10:51:25.776 [DEBUG] [Thread-114477] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:51:25.776 [DEBUG] [Thread-114477] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:51:25.776 [DEBUG] [Thread-114477] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:51:25.776 [DEBUG] [Thread-114477] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:51:25.776 [DEBUG] [Thread-114477] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:51:25.776 [DEBUG] [Thread-114477] [transport.py] [_log()] Compression: none
2025-11-03T10:51:25.776 [DEBUG] [Thread-114477] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:51:25.832 [DEBUG] [Thread-114477] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:51:25.833 [DEBUG] [Thread-114477] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:51:25.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:51:25.834 [DEBUG] [Thread-114477] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:51:25.835 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:51:25.892 [DEBUG] [Thread-114477] [transport.py] [_log()] userauth is OK
2025-11-03T10:51:25.892 [DEBUG] [Thread-114477] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:51:25.892 [DEBUG] [Thread-114477] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:51:25.892 [DEBUG] [Thread-114477] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:51:25.892 [DEBUG] [Thread-114477] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:51:25.911 [INFO] [Thread-114477] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:51:25.911 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:51:25.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:51:26.607 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:51:26.608 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:51:26.770 [DEBUG] [Thread-114477] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:51:26.771 [DEBUG] [Thread-114477] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:51:26.819 [DEBUG] [Thread-114477] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:51:26.819 [DEBUG] [Thread-114477] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:51:26.829 [DEBUG] [Thread-114477] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:51:26.838 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:51:26.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:51:26.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:51:26.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:51:26.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:51:26.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:51:26.866 [DEBUG] [Thread-114477] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:51:40.548 [DEBUG] [Thread-114479 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:51:54.292 [DEBUG] [Thread-114480 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:51:55.600 [DEBUG] [Thread-114481 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:51:56.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:51:56.888 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:51:56.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:51:57.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 51, 33), 38.94, 6.58, 0.0, 16.62, 23.59, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:51:57.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:51:33
2025-11-03T10:51:57.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:51:57.828 [DEBUG] [Thread-114482] [transport.py] [_log()] starting thread (client mode): 0x1179b970
2025-11-03T10:51:57.829 [DEBUG] [Thread-114482] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:51:57.849 [DEBUG] [Thread-114482] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:51:57.849 [INFO] [Thread-114482] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:51:57.853 [DEBUG] [Thread-114482] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:51:57.853 [DEBUG] [Thread-114482] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:51:57.853 [DEBUG] [Thread-114482] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:51:57.853 [DEBUG] [Thread-114482] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:51:57.853 [DEBUG] [Thread-114482] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:51:57.853 [DEBUG] [Thread-114482] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:51:57.854 [DEBUG] [Thread-114482] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:51:57.854 [DEBUG] [Thread-114482] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:51:57.854 [DEBUG] [Thread-114482] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:51:57.854 [DEBUG] [Thread-114482] [transport.py] [_log()] client lang: <none>
2025-11-03T10:51:57.854 [DEBUG] [Thread-114482] [transport.py] [_log()] server lang: <none>
2025-11-03T10:51:57.854 [DEBUG] [Thread-114482] [transport.py] [_log()] kex follows: False
2025-11-03T10:51:57.854 [DEBUG] [Thread-114482] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:51:57.854 [DEBUG] [Thread-114482] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:51:57.854 [DEBUG] [Thread-114482] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:51:57.854 [DEBUG] [Thread-114482] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:51:57.854 [DEBUG] [Thread-114482] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:51:57.854 [DEBUG] [Thread-114482] [transport.py] [_log()] Compression: none
2025-11-03T10:51:57.854 [DEBUG] [Thread-114482] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:51:57.861 [DEBUG] [Thread-114482] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:51:57.861 [DEBUG] [Thread-114482] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:51:57.862 [DEBUG] [Thread-114482] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:51:57.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:51:57.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:51:57.862 [DEBUG] [Thread-114482] [transport.py] [_log()] userauth is OK
2025-11-03T10:51:57.862 [DEBUG] [Thread-114482] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:51:57.862 [DEBUG] [Thread-114482] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:51:57.862 [DEBUG] [Thread-114482] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:51:57.862 [DEBUG] [Thread-114482] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:51:57.871 [INFO] [Thread-114482] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:51:57.871 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:51:58.502 [DEBUG] [Thread-114482] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:51:58.503 [DEBUG] [Thread-114482] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:51:58.503 [DEBUG] [Thread-114482] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:51:58.544 [DEBUG] [Thread-114482] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:51:58.544 [DEBUG] [Thread-114482] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:51:58.547 [DEBUG] [Thread-114482] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:51:58.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:51:58.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:51:58.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:51:58.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:51:58.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:51:58.569 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:51:58.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:51:58.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:51:58.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:51:58.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.368843 -999.00  +22.90  18.55     11   -8.20 1 1 1 1 1   888    0 31.74 42.08 ----- 20.6 18.6 18.8 31.2 28.1 -28.4 27.1 -28.1 26.1 -26.7 26.9 -27.5
2025-11-03T10:51:58.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:51:58.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:51:58.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.368843
2025-11-03T10:51:58.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:51:58.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:51:58.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:51:58.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:51:58.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:51:58.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:51:33', tmtdew=38.94, humidity=6.58, cloud=0.0, wind=16.62, temperature=23.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:51:08.035', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:51:58.572 [DEBUG] [Thread-114482] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:51:58.657 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:52:10.633 [DEBUG] [Thread-114485 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:52:25.676 [DEBUG] [Thread-114486 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:52:26.749 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:52:26.751 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:52:40.707 [DEBUG] [Thread-114487 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:52:54.350 [DEBUG] [Thread-114488 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:52:55.744 [DEBUG] [Thread-114489 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:53:10.777 [DEBUG] [Thread-114490 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:53:25.819 [DEBUG] [Thread-114491 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:53:26.892 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:53:26.893 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:53:40.858 [DEBUG] [Thread-114492 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:53:54.411 [DEBUG] [Thread-114493 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:53:55.898 [DEBUG] [Thread-114494 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:54:10.936 [DEBUG] [Thread-114495 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:54:13.096 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T10:54:25.968 [DEBUG] [Thread-114496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:54:27.044 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:54:27.045 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:54:41.001 [DEBUG] [Thread-114497 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:54:43.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:54:43.117 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:54:43.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:54:43.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 54, 15), 38.91, 6.13, 0.0, 27.19, 23.33, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:54:43.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:54:15
2025-11-03T10:54:43.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:54:44.106 [DEBUG] [Thread-114498] [transport.py] [_log()] starting thread (client mode): 0xed2f280
2025-11-03T10:54:44.106 [DEBUG] [Thread-114498] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:54:44.121 [DEBUG] [Thread-114498] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:54:44.121 [INFO] [Thread-114498] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:54:44.124 [DEBUG] [Thread-114498] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:54:44.124 [DEBUG] [Thread-114498] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:54:44.124 [DEBUG] [Thread-114498] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:54:44.124 [DEBUG] [Thread-114498] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:54:44.124 [DEBUG] [Thread-114498] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:54:44.124 [DEBUG] [Thread-114498] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:54:44.125 [DEBUG] [Thread-114498] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:54:44.125 [DEBUG] [Thread-114498] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:54:44.125 [DEBUG] [Thread-114498] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:54:44.125 [DEBUG] [Thread-114498] [transport.py] [_log()] client lang: <none>
2025-11-03T10:54:44.125 [DEBUG] [Thread-114498] [transport.py] [_log()] server lang: <none>
2025-11-03T10:54:44.125 [DEBUG] [Thread-114498] [transport.py] [_log()] kex follows: False
2025-11-03T10:54:44.125 [DEBUG] [Thread-114498] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:54:44.125 [DEBUG] [Thread-114498] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:54:44.125 [DEBUG] [Thread-114498] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:54:44.125 [DEBUG] [Thread-114498] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:54:44.126 [DEBUG] [Thread-114498] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:54:44.126 [DEBUG] [Thread-114498] [transport.py] [_log()] Compression: none
2025-11-03T10:54:44.126 [DEBUG] [Thread-114498] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:54:44.160 [DEBUG] [Thread-114498] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:54:44.163 [DEBUG] [Thread-114498] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:54:44.164 [DEBUG] [Thread-114498] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:54:44.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:54:44.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:54:44.205 [DEBUG] [Thread-114498] [transport.py] [_log()] userauth is OK
2025-11-03T10:54:44.206 [DEBUG] [Thread-114498] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:54:44.206 [DEBUG] [Thread-114498] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:54:44.206 [DEBUG] [Thread-114498] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:54:44.206 [DEBUG] [Thread-114498] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:54:44.245 [INFO] [Thread-114498] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:54:44.249 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:54:44.891 [DEBUG] [Thread-114498] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:54:44.892 [DEBUG] [Thread-114498] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:54:44.892 [DEBUG] [Thread-114498] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:54:44.933 [DEBUG] [Thread-114498] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:54:44.933 [DEBUG] [Thread-114498] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:54:44.935 [DEBUG] [Thread-114498] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:54:44.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:54:44.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:54:44.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:54:44.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:54:44.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:54:44.964 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:54:44.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:54:44.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:54:44.967 [DEBUG] [Thread-114498] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:54:44.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:54:44.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.370926 -999.00  +22.40  32.52     11   -8.70 1 1 2 1 1   888    0 31.75 41.08 ----- 27.9 32.5 18.0 40.3 28.1 -30.5 27.0 -29.3 26.2 -29.0 26.8 -28.5
2025-11-03T10:54:44.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:54:44.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:54:44.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.370926
2025-11-03T10:54:44.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:54:44.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:54:44.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:54:44.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:54:44.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:54:44.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:54:15', tmtdew=38.91, humidity=6.13, cloud=0.0, wind=27.19, temperature=23.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:54:08.006', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:54:45.057 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:54:45.070 [DEBUG] [Thread-114501] [transport.py] [_log()] starting thread (client mode): 0x1179ac80
2025-11-03T10:54:45.070 [DEBUG] [Thread-114501] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:54:45.085 [DEBUG] [Thread-114501] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:54:45.085 [INFO] [Thread-114501] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:54:45.092 [DEBUG] [Thread-114501] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:54:45.093 [DEBUG] [Thread-114501] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:54:45.093 [DEBUG] [Thread-114501] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:54:45.093 [DEBUG] [Thread-114501] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:54:45.093 [DEBUG] [Thread-114501] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:54:45.093 [DEBUG] [Thread-114501] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:54:45.093 [DEBUG] [Thread-114501] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:54:45.093 [DEBUG] [Thread-114501] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:54:45.093 [DEBUG] [Thread-114501] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:54:45.093 [DEBUG] [Thread-114501] [transport.py] [_log()] client lang: <none>
2025-11-03T10:54:45.094 [DEBUG] [Thread-114501] [transport.py] [_log()] server lang: <none>
2025-11-03T10:54:45.094 [DEBUG] [Thread-114501] [transport.py] [_log()] kex follows: False
2025-11-03T10:54:45.094 [DEBUG] [Thread-114501] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:54:45.094 [DEBUG] [Thread-114501] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:54:45.094 [DEBUG] [Thread-114501] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:54:45.094 [DEBUG] [Thread-114501] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:54:45.094 [DEBUG] [Thread-114501] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:54:45.094 [DEBUG] [Thread-114501] [transport.py] [_log()] Compression: none
2025-11-03T10:54:45.094 [DEBUG] [Thread-114501] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:54:45.149 [DEBUG] [Thread-114501] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:54:45.150 [DEBUG] [Thread-114501] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:54:45.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:54:45.151 [DEBUG] [Thread-114501] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:54:45.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:54:45.206 [DEBUG] [Thread-114501] [transport.py] [_log()] userauth is OK
2025-11-03T10:54:45.206 [DEBUG] [Thread-114501] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:54:45.207 [DEBUG] [Thread-114501] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:54:45.207 [DEBUG] [Thread-114501] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:54:45.207 [DEBUG] [Thread-114501] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:54:45.225 [INFO] [Thread-114501] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:54:45.225 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:54:45.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:54:46.067 [DEBUG] [Thread-114501] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:54:46.067 [DEBUG] [Thread-114501] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:54:46.114 [DEBUG] [Thread-114501] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:54:46.114 [DEBUG] [Thread-114501] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:54:46.123 [DEBUG] [Thread-114501] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:54:46.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:54:46.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:54:46.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:54:46.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:54:46.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:54:46.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:54:46.164 [DEBUG] [Thread-114501] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:54:54.486 [DEBUG] [Thread-114503 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:54:56.037 [DEBUG] [Thread-114504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:55:11.122 [DEBUG] [Thread-114505 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:55:16.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:55:16.187 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:55:16.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:55:16.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 54, 47), 39.1, 6.1, 0.0, 20.19, 23.11, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:55:16.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:54:47
2025-11-03T10:55:16.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:55:17.135 [DEBUG] [Thread-114506] [transport.py] [_log()] starting thread (client mode): 0xed2e500
2025-11-03T10:55:17.135 [DEBUG] [Thread-114506] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:55:17.154 [DEBUG] [Thread-114506] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:55:17.154 [INFO] [Thread-114506] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:55:17.157 [DEBUG] [Thread-114506] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:55:17.157 [DEBUG] [Thread-114506] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:55:17.157 [DEBUG] [Thread-114506] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:55:17.157 [DEBUG] [Thread-114506] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:55:17.157 [DEBUG] [Thread-114506] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:55:17.157 [DEBUG] [Thread-114506] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:55:17.157 [DEBUG] [Thread-114506] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:55:17.157 [DEBUG] [Thread-114506] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:55:17.157 [DEBUG] [Thread-114506] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:55:17.157 [DEBUG] [Thread-114506] [transport.py] [_log()] client lang: <none>
2025-11-03T10:55:17.157 [DEBUG] [Thread-114506] [transport.py] [_log()] server lang: <none>
2025-11-03T10:55:17.157 [DEBUG] [Thread-114506] [transport.py] [_log()] kex follows: False
2025-11-03T10:55:17.157 [DEBUG] [Thread-114506] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:55:17.157 [DEBUG] [Thread-114506] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:55:17.157 [DEBUG] [Thread-114506] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:55:17.157 [DEBUG] [Thread-114506] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:55:17.157 [DEBUG] [Thread-114506] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:55:17.157 [DEBUG] [Thread-114506] [transport.py] [_log()] Compression: none
2025-11-03T10:55:17.157 [DEBUG] [Thread-114506] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:55:17.174 [DEBUG] [Thread-114506] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:55:17.174 [DEBUG] [Thread-114506] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:55:17.174 [DEBUG] [Thread-114506] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:55:17.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:55:17.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:55:17.176 [DEBUG] [Thread-114506] [transport.py] [_log()] userauth is OK
2025-11-03T10:55:17.176 [DEBUG] [Thread-114506] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:55:17.176 [DEBUG] [Thread-114506] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:55:17.176 [DEBUG] [Thread-114506] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:55:17.176 [DEBUG] [Thread-114506] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:55:17.201 [INFO] [Thread-114506] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:55:17.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:55:17.926 [DEBUG] [Thread-114506] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:55:17.927 [DEBUG] [Thread-114506] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:55:17.927 [DEBUG] [Thread-114506] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:55:17.968 [DEBUG] [Thread-114506] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:55:17.968 [DEBUG] [Thread-114506] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:55:17.971 [DEBUG] [Thread-114506] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:55:17.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:55:17.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:55:17.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:55:17.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:55:17.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:55:17.997 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:55:17.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:55:17.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:55:17.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:55:17.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.371273 -999.00  +22.70  26.20     11   -8.50 1 1 1 1 1   888    0 31.91 40.19 ----- 25.5 26.2 35.0 33.3 28.1 -31.4 27.0 -28.8 26.2 -27.9 26.9 -28.5
2025-11-03T10:55:17.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:55:17.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:55:17.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.371273
2025-11-03T10:55:17.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:55:17.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:55:17.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:55:17.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:55:18.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:55:18.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:54:47', tmtdew=39.1, humidity=6.1, cloud=0.0, wind=20.19, temperature=23.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:54:37.987', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:55:18.000 [DEBUG] [Thread-114506] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:55:18.094 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:55:18.109 [DEBUG] [Thread-114509] [transport.py] [_log()] starting thread (client mode): 0xed65ea0
2025-11-03T10:55:18.109 [DEBUG] [Thread-114509] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:55:18.122 [DEBUG] [Thread-114509] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:55:18.122 [INFO] [Thread-114509] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:55:18.129 [DEBUG] [Thread-114509] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:55:18.130 [DEBUG] [Thread-114509] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:55:18.130 [DEBUG] [Thread-114509] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:55:18.130 [DEBUG] [Thread-114509] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:55:18.130 [DEBUG] [Thread-114509] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:55:18.130 [DEBUG] [Thread-114509] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:55:18.130 [DEBUG] [Thread-114509] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:55:18.130 [DEBUG] [Thread-114509] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:55:18.130 [DEBUG] [Thread-114509] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:55:18.130 [DEBUG] [Thread-114509] [transport.py] [_log()] client lang: <none>
2025-11-03T10:55:18.130 [DEBUG] [Thread-114509] [transport.py] [_log()] server lang: <none>
2025-11-03T10:55:18.130 [DEBUG] [Thread-114509] [transport.py] [_log()] kex follows: False
2025-11-03T10:55:18.130 [DEBUG] [Thread-114509] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:55:18.130 [DEBUG] [Thread-114509] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:55:18.130 [DEBUG] [Thread-114509] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:55:18.130 [DEBUG] [Thread-114509] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:55:18.130 [DEBUG] [Thread-114509] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:55:18.130 [DEBUG] [Thread-114509] [transport.py] [_log()] Compression: none
2025-11-03T10:55:18.130 [DEBUG] [Thread-114509] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:55:18.186 [DEBUG] [Thread-114509] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:55:18.187 [DEBUG] [Thread-114509] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:55:18.187 [DEBUG] [Thread-114509] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:55:18.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:55:18.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:55:18.242 [DEBUG] [Thread-114509] [transport.py] [_log()] userauth is OK
2025-11-03T10:55:18.242 [DEBUG] [Thread-114509] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:55:18.242 [DEBUG] [Thread-114509] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:55:18.242 [DEBUG] [Thread-114509] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:55:18.242 [DEBUG] [Thread-114509] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:55:18.256 [INFO] [Thread-114509] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:55:18.256 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:55:18.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:55:19.103 [DEBUG] [Thread-114509] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:55:19.103 [DEBUG] [Thread-114509] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:55:19.151 [DEBUG] [Thread-114509] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:55:19.151 [DEBUG] [Thread-114509] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:55:19.160 [DEBUG] [Thread-114509] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:55:19.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:55:19.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:55:19.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:55:19.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:55:19.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:55:19.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:55:19.195 [DEBUG] [Thread-114509] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:55:26.154 [DEBUG] [Thread-114511 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:55:27.186 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:55:27.187 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:55:41.210 [DEBUG] [Thread-114512 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:55:49.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:55:49.216 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:55:49.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:55:49.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 55, 19), 39.15, 6.06, 0.0, 25.21, 23.06, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:55:49.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:55:19
2025-11-03T10:55:50.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:55:50.147 [DEBUG] [Thread-114513] [transport.py] [_log()] starting thread (client mode): 0xed36110
2025-11-03T10:55:50.147 [DEBUG] [Thread-114513] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:55:50.167 [DEBUG] [Thread-114513] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:55:50.167 [INFO] [Thread-114513] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:55:50.170 [DEBUG] [Thread-114513] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:55:50.171 [DEBUG] [Thread-114513] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:55:50.171 [DEBUG] [Thread-114513] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:55:50.171 [DEBUG] [Thread-114513] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:55:50.171 [DEBUG] [Thread-114513] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:55:50.171 [DEBUG] [Thread-114513] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:55:50.171 [DEBUG] [Thread-114513] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:55:50.171 [DEBUG] [Thread-114513] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:55:50.171 [DEBUG] [Thread-114513] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:55:50.171 [DEBUG] [Thread-114513] [transport.py] [_log()] client lang: <none>
2025-11-03T10:55:50.171 [DEBUG] [Thread-114513] [transport.py] [_log()] server lang: <none>
2025-11-03T10:55:50.171 [DEBUG] [Thread-114513] [transport.py] [_log()] kex follows: False
2025-11-03T10:55:50.171 [DEBUG] [Thread-114513] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:55:50.171 [DEBUG] [Thread-114513] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:55:50.171 [DEBUG] [Thread-114513] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:55:50.171 [DEBUG] [Thread-114513] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:55:50.171 [DEBUG] [Thread-114513] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:55:50.171 [DEBUG] [Thread-114513] [transport.py] [_log()] Compression: none
2025-11-03T10:55:50.171 [DEBUG] [Thread-114513] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:55:50.189 [DEBUG] [Thread-114513] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:55:50.189 [DEBUG] [Thread-114513] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:55:50.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:55:50.190 [DEBUG] [Thread-114513] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:55:50.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:55:50.192 [DEBUG] [Thread-114513] [transport.py] [_log()] userauth is OK
2025-11-03T10:55:50.193 [DEBUG] [Thread-114513] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:55:50.193 [DEBUG] [Thread-114513] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:55:50.193 [DEBUG] [Thread-114513] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:55:50.193 [DEBUG] [Thread-114513] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:55:50.217 [INFO] [Thread-114513] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:55:50.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:55:50.849 [DEBUG] [Thread-114513] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:55:50.849 [DEBUG] [Thread-114513] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:55:50.849 [DEBUG] [Thread-114513] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:55:50.890 [DEBUG] [Thread-114513] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:55:50.890 [DEBUG] [Thread-114513] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:55:50.894 [DEBUG] [Thread-114513] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:55:50.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:55:50.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:55:50.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:55:50.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:55:50.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:55:50.927 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:55:50.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:55:50.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:55:50.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:55:50.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.371632 -999.00  +22.10  30.29     11   -8.90 1 1 2 1 1   888    0 31.89 40.37 ----- 24.0 30.3 54.2 34.0 28.1 -30.1 27.0 -30.7 26.1 -30.7 26.9 -28.5
2025-11-03T10:55:50.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:55:50.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:55:50.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.371632
2025-11-03T10:55:50.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:55:50.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:55:50.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:55:50.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:55:50.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:55:50.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:55:19', tmtdew=39.15, humidity=6.06, cloud=0.0, wind=25.21, temperature=23.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:55:09.005', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:55:50.930 [DEBUG] [Thread-114513] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:55:51.014 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:55:51.026 [DEBUG] [Thread-114516] [transport.py] [_log()] starting thread (client mode): 0xed2e830
2025-11-03T10:55:51.026 [DEBUG] [Thread-114516] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:55:51.041 [DEBUG] [Thread-114516] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:55:51.041 [INFO] [Thread-114516] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:55:51.052 [DEBUG] [Thread-114516] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:55:51.052 [DEBUG] [Thread-114516] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:55:51.052 [DEBUG] [Thread-114516] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:55:51.052 [DEBUG] [Thread-114516] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:55:51.052 [DEBUG] [Thread-114516] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:55:51.052 [DEBUG] [Thread-114516] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:55:51.052 [DEBUG] [Thread-114516] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:55:51.052 [DEBUG] [Thread-114516] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:55:51.052 [DEBUG] [Thread-114516] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:55:51.052 [DEBUG] [Thread-114516] [transport.py] [_log()] client lang: <none>
2025-11-03T10:55:51.052 [DEBUG] [Thread-114516] [transport.py] [_log()] server lang: <none>
2025-11-03T10:55:51.052 [DEBUG] [Thread-114516] [transport.py] [_log()] kex follows: False
2025-11-03T10:55:51.052 [DEBUG] [Thread-114516] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:55:51.052 [DEBUG] [Thread-114516] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:55:51.053 [DEBUG] [Thread-114516] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:55:51.053 [DEBUG] [Thread-114516] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:55:51.053 [DEBUG] [Thread-114516] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:55:51.053 [DEBUG] [Thread-114516] [transport.py] [_log()] Compression: none
2025-11-03T10:55:51.053 [DEBUG] [Thread-114516] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:55:51.119 [DEBUG] [Thread-114516] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:55:51.120 [DEBUG] [Thread-114516] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:55:51.121 [DEBUG] [Thread-114516] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:55:51.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:55:51.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:55:51.175 [DEBUG] [Thread-114516] [transport.py] [_log()] userauth is OK
2025-11-03T10:55:51.175 [DEBUG] [Thread-114516] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:55:51.175 [DEBUG] [Thread-114516] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:55:51.176 [DEBUG] [Thread-114516] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:55:51.176 [DEBUG] [Thread-114516] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:55:51.198 [INFO] [Thread-114516] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:55:51.198 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:55:51.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:55:52.098 [DEBUG] [Thread-114516] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:55:52.098 [DEBUG] [Thread-114516] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:55:52.146 [DEBUG] [Thread-114516] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:55:52.146 [DEBUG] [Thread-114516] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:55:52.154 [DEBUG] [Thread-114516] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:55:52.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:55:52.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:55:52.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:55:52.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:55:52.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:55:52.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:55:52.187 [DEBUG] [Thread-114516] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:55:54.564 [DEBUG] [Thread-114518 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:55:56.245 [DEBUG] [Thread-114519 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:56:11.300 [DEBUG] [Thread-114520 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:56:22.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:56:22.187 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:56:22.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:56:22.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 55, 51), 38.6, 6.16, 0.0, 27.93, 22.54, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:56:22.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:55:51
2025-11-03T10:56:23.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:56:23.182 [DEBUG] [Thread-114521] [transport.py] [_log()] starting thread (client mode): 0xed34130
2025-11-03T10:56:23.182 [DEBUG] [Thread-114521] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:56:23.203 [DEBUG] [Thread-114521] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:56:23.203 [INFO] [Thread-114521] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:56:23.206 [DEBUG] [Thread-114521] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:56:23.206 [DEBUG] [Thread-114521] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:56:23.206 [DEBUG] [Thread-114521] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:56:23.206 [DEBUG] [Thread-114521] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:56:23.206 [DEBUG] [Thread-114521] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:56:23.206 [DEBUG] [Thread-114521] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:56:23.206 [DEBUG] [Thread-114521] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:56:23.206 [DEBUG] [Thread-114521] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:56:23.206 [DEBUG] [Thread-114521] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:56:23.206 [DEBUG] [Thread-114521] [transport.py] [_log()] client lang: <none>
2025-11-03T10:56:23.206 [DEBUG] [Thread-114521] [transport.py] [_log()] server lang: <none>
2025-11-03T10:56:23.206 [DEBUG] [Thread-114521] [transport.py] [_log()] kex follows: False
2025-11-03T10:56:23.206 [DEBUG] [Thread-114521] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:56:23.206 [DEBUG] [Thread-114521] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:56:23.206 [DEBUG] [Thread-114521] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:56:23.207 [DEBUG] [Thread-114521] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:56:23.207 [DEBUG] [Thread-114521] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:56:23.207 [DEBUG] [Thread-114521] [transport.py] [_log()] Compression: none
2025-11-03T10:56:23.207 [DEBUG] [Thread-114521] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:56:23.223 [DEBUG] [Thread-114521] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:56:23.223 [DEBUG] [Thread-114521] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:56:23.223 [DEBUG] [Thread-114521] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:56:23.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:56:23.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:56:23.223 [DEBUG] [Thread-114521] [transport.py] [_log()] userauth is OK
2025-11-03T10:56:23.223 [DEBUG] [Thread-114521] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:56:23.223 [DEBUG] [Thread-114521] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:56:23.223 [DEBUG] [Thread-114521] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:56:23.223 [DEBUG] [Thread-114521] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:56:23.236 [INFO] [Thread-114521] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:56:23.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:56:23.992 [DEBUG] [Thread-114521] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:56:23.993 [DEBUG] [Thread-114521] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:56:23.993 [DEBUG] [Thread-114521] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:56:24.033 [DEBUG] [Thread-114521] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:56:24.034 [DEBUG] [Thread-114521] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:56:24.035 [DEBUG] [Thread-114521] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:56:24.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:56:24.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:56:24.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:56:24.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:56:24.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:56:24.051 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:56:24.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:56:24.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:56:24.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:56:24.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.371968 -999.00  +22.10  32.06     11   -9.00 1 1 2 1 1   888    0 31.83 39.91 ----- 27.7 32.1 47.0 38.6 28.0 -29.4 26.9 -29.2 26.1 -27.3 26.9 -28.3
2025-11-03T10:56:24.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:56:24.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:56:24.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.371968
2025-11-03T10:56:24.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:56:24.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:56:24.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:56:24.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:56:24.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:56:24.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:55:51', tmtdew=38.6, humidity=6.16, cloud=0.0, wind=27.93, temperature=22.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:55:38.035', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:56:24.052 [DEBUG] [Thread-114521] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:56:24.127 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:56:24.139 [DEBUG] [Thread-114524] [transport.py] [_log()] starting thread (client mode): 0xed05870
2025-11-03T10:56:24.140 [DEBUG] [Thread-114524] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:56:24.154 [DEBUG] [Thread-114524] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:56:24.154 [INFO] [Thread-114524] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:56:24.162 [DEBUG] [Thread-114524] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:56:24.162 [DEBUG] [Thread-114524] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:56:24.162 [DEBUG] [Thread-114524] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:56:24.162 [DEBUG] [Thread-114524] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:56:24.162 [DEBUG] [Thread-114524] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:56:24.162 [DEBUG] [Thread-114524] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:56:24.162 [DEBUG] [Thread-114524] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:56:24.162 [DEBUG] [Thread-114524] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:56:24.162 [DEBUG] [Thread-114524] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:56:24.162 [DEBUG] [Thread-114524] [transport.py] [_log()] client lang: <none>
2025-11-03T10:56:24.162 [DEBUG] [Thread-114524] [transport.py] [_log()] server lang: <none>
2025-11-03T10:56:24.162 [DEBUG] [Thread-114524] [transport.py] [_log()] kex follows: False
2025-11-03T10:56:24.162 [DEBUG] [Thread-114524] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:56:24.162 [DEBUG] [Thread-114524] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:56:24.162 [DEBUG] [Thread-114524] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:56:24.162 [DEBUG] [Thread-114524] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:56:24.162 [DEBUG] [Thread-114524] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:56:24.162 [DEBUG] [Thread-114524] [transport.py] [_log()] Compression: none
2025-11-03T10:56:24.162 [DEBUG] [Thread-114524] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:56:24.220 [DEBUG] [Thread-114524] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:56:24.220 [DEBUG] [Thread-114524] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:56:24.220 [DEBUG] [Thread-114524] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:56:24.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:56:24.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:56:24.278 [DEBUG] [Thread-114524] [transport.py] [_log()] userauth is OK
2025-11-03T10:56:24.278 [DEBUG] [Thread-114524] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:56:24.279 [DEBUG] [Thread-114524] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:56:24.279 [DEBUG] [Thread-114524] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:56:24.279 [DEBUG] [Thread-114524] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:56:24.292 [INFO] [Thread-114524] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:56:24.292 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:56:24.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:56:25.131 [DEBUG] [Thread-114524] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:56:25.131 [DEBUG] [Thread-114524] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:56:25.180 [DEBUG] [Thread-114524] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:56:25.180 [DEBUG] [Thread-114524] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:56:25.188 [DEBUG] [Thread-114524] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:56:25.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:56:25.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:56:25.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:56:25.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:56:25.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:56:25.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:56:25.220 [DEBUG] [Thread-114524] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:56:26.333 [DEBUG] [Thread-114526 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:56:27.328 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:56:27.329 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:56:41.372 [DEBUG] [Thread-114527 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:56:54.639 [DEBUG] [Thread-114528 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:56:55.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:56:55.240 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:56:55.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:56:55.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 56, 24), 39.08, 5.93, 0.0, 26.54, 22.64, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:56:55.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:56:24
2025-11-03T10:56:56.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:56:56.202 [DEBUG] [Thread-114529] [transport.py] [_log()] starting thread (client mode): 0xed37fa0
2025-11-03T10:56:56.203 [DEBUG] [Thread-114529] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:56:56.214 [DEBUG] [Thread-114529] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:56:56.214 [INFO] [Thread-114529] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:56:56.217 [DEBUG] [Thread-114529] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:56:56.218 [DEBUG] [Thread-114529] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:56:56.218 [DEBUG] [Thread-114529] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:56:56.218 [DEBUG] [Thread-114529] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:56:56.218 [DEBUG] [Thread-114529] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:56:56.218 [DEBUG] [Thread-114529] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:56:56.218 [DEBUG] [Thread-114529] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:56:56.218 [DEBUG] [Thread-114529] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:56:56.218 [DEBUG] [Thread-114529] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:56:56.218 [DEBUG] [Thread-114529] [transport.py] [_log()] client lang: <none>
2025-11-03T10:56:56.218 [DEBUG] [Thread-114529] [transport.py] [_log()] server lang: <none>
2025-11-03T10:56:56.218 [DEBUG] [Thread-114529] [transport.py] [_log()] kex follows: False
2025-11-03T10:56:56.218 [DEBUG] [Thread-114529] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:56:56.218 [DEBUG] [Thread-114529] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:56:56.218 [DEBUG] [Thread-114529] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:56:56.219 [DEBUG] [Thread-114529] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:56:56.219 [DEBUG] [Thread-114529] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:56:56.219 [DEBUG] [Thread-114529] [transport.py] [_log()] Compression: none
2025-11-03T10:56:56.219 [DEBUG] [Thread-114529] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:56:56.238 [DEBUG] [Thread-114529] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:56:56.238 [DEBUG] [Thread-114529] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:56:56.239 [DEBUG] [Thread-114529] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:56:56.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:56:56.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:56:56.281 [DEBUG] [Thread-114529] [transport.py] [_log()] userauth is OK
2025-11-03T10:56:56.281 [DEBUG] [Thread-114529] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:56:56.281 [DEBUG] [Thread-114529] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:56:56.282 [DEBUG] [Thread-114529] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:56:56.282 [DEBUG] [Thread-114529] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:56:56.313 [INFO] [Thread-114529] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:56:56.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:56:56.419 [DEBUG] [Thread-114531 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:56:56.992 [DEBUG] [Thread-114529] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:56:56.992 [DEBUG] [Thread-114529] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:56:56.992 [DEBUG] [Thread-114529] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:56:57.032 [DEBUG] [Thread-114529] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:56:57.032 [DEBUG] [Thread-114529] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:56:57.035 [DEBUG] [Thread-114529] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:56:57.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:56:57.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:56:57.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:56:57.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:56:57.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:56:57.053 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:56:57.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:56:57.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:56:57.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:56:57.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.372662 -999.00  +22.10  31.11     11   -9.20 1 1 2 1 1   888    0 32.21 40.51 ----- 28.0 31.1 43.0 44.0 27.9 -30.7 26.9 -30.5 25.9 -30.0 26.8 -28.7
2025-11-03T10:56:57.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:56:57.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:56:57.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.372662
2025-11-03T10:56:57.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:56:57.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:56:57.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:56:57.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:56:57.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:56:57.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:56:24', tmtdew=39.08, humidity=5.93, cloud=0.0, wind=26.54, temperature=22.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:56:37.997', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:56:57.055 [DEBUG] [Thread-114529] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:56:57.131 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:56:57.142 [DEBUG] [Thread-114533] [transport.py] [_log()] starting thread (client mode): 0xed37370
2025-11-03T10:56:57.142 [DEBUG] [Thread-114533] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:56:57.156 [DEBUG] [Thread-114533] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:56:57.156 [INFO] [Thread-114533] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:56:57.163 [DEBUG] [Thread-114533] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:56:57.163 [DEBUG] [Thread-114533] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:56:57.163 [DEBUG] [Thread-114533] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:56:57.163 [DEBUG] [Thread-114533] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:56:57.163 [DEBUG] [Thread-114533] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:56:57.163 [DEBUG] [Thread-114533] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:56:57.163 [DEBUG] [Thread-114533] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:56:57.163 [DEBUG] [Thread-114533] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:56:57.163 [DEBUG] [Thread-114533] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:56:57.164 [DEBUG] [Thread-114533] [transport.py] [_log()] client lang: <none>
2025-11-03T10:56:57.164 [DEBUG] [Thread-114533] [transport.py] [_log()] server lang: <none>
2025-11-03T10:56:57.164 [DEBUG] [Thread-114533] [transport.py] [_log()] kex follows: False
2025-11-03T10:56:57.164 [DEBUG] [Thread-114533] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:56:57.164 [DEBUG] [Thread-114533] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:56:57.164 [DEBUG] [Thread-114533] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:56:57.164 [DEBUG] [Thread-114533] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:56:57.164 [DEBUG] [Thread-114533] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:56:57.164 [DEBUG] [Thread-114533] [transport.py] [_log()] Compression: none
2025-11-03T10:56:57.164 [DEBUG] [Thread-114533] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:56:57.223 [DEBUG] [Thread-114533] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:56:57.223 [DEBUG] [Thread-114533] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:56:57.223 [DEBUG] [Thread-114533] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:56:57.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:56:57.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:56:57.279 [DEBUG] [Thread-114533] [transport.py] [_log()] userauth is OK
2025-11-03T10:56:57.279 [DEBUG] [Thread-114533] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:56:57.279 [DEBUG] [Thread-114533] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:56:57.279 [DEBUG] [Thread-114533] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:56:57.279 [DEBUG] [Thread-114533] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:56:57.293 [INFO] [Thread-114533] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:56:57.293 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:56:57.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:56:58.200 [DEBUG] [Thread-114533] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:56:58.200 [DEBUG] [Thread-114533] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:56:58.248 [DEBUG] [Thread-114533] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:56:58.248 [DEBUG] [Thread-114533] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:56:58.257 [DEBUG] [Thread-114533] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:56:58.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:56:58.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:56:58.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:56:58.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:56:58.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:56:58.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:56:58.289 [DEBUG] [Thread-114533] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:57:11.464 [DEBUG] [Thread-114535 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:57:26.523 [DEBUG] [Thread-114536 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:57:27.469 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:57:27.471 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:57:28.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:57:28.309 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:57:28.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:57:28.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 56, 56), 39.19, 6.01, 0.0, 22.02, 22.78, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:57:28.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:56:56
2025-11-03T10:57:29.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:57:29.262 [DEBUG] [Thread-114537] [transport.py] [_log()] starting thread (client mode): 0xed665f0
2025-11-03T10:57:29.263 [DEBUG] [Thread-114537] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:57:29.283 [DEBUG] [Thread-114537] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:57:29.283 [INFO] [Thread-114537] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:57:29.286 [DEBUG] [Thread-114537] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:57:29.286 [DEBUG] [Thread-114537] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:57:29.286 [DEBUG] [Thread-114537] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:57:29.286 [DEBUG] [Thread-114537] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:57:29.286 [DEBUG] [Thread-114537] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:57:29.286 [DEBUG] [Thread-114537] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:57:29.286 [DEBUG] [Thread-114537] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:57:29.286 [DEBUG] [Thread-114537] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:57:29.286 [DEBUG] [Thread-114537] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:57:29.286 [DEBUG] [Thread-114537] [transport.py] [_log()] client lang: <none>
2025-11-03T10:57:29.286 [DEBUG] [Thread-114537] [transport.py] [_log()] server lang: <none>
2025-11-03T10:57:29.286 [DEBUG] [Thread-114537] [transport.py] [_log()] kex follows: False
2025-11-03T10:57:29.286 [DEBUG] [Thread-114537] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:57:29.286 [DEBUG] [Thread-114537] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:57:29.286 [DEBUG] [Thread-114537] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:57:29.286 [DEBUG] [Thread-114537] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:57:29.286 [DEBUG] [Thread-114537] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:57:29.286 [DEBUG] [Thread-114537] [transport.py] [_log()] Compression: none
2025-11-03T10:57:29.287 [DEBUG] [Thread-114537] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:57:29.301 [DEBUG] [Thread-114537] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:57:29.301 [DEBUG] [Thread-114537] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:57:29.301 [DEBUG] [Thread-114537] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:57:29.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:57:29.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:57:29.302 [DEBUG] [Thread-114537] [transport.py] [_log()] userauth is OK
2025-11-03T10:57:29.302 [DEBUG] [Thread-114537] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:57:29.302 [DEBUG] [Thread-114537] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:57:29.302 [DEBUG] [Thread-114537] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:57:29.302 [DEBUG] [Thread-114537] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:57:29.311 [INFO] [Thread-114537] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:57:29.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:57:29.922 [DEBUG] [Thread-114537] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:57:29.922 [DEBUG] [Thread-114537] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:57:29.922 [DEBUG] [Thread-114537] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:57:29.963 [DEBUG] [Thread-114537] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:57:29.964 [DEBUG] [Thread-114537] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:57:29.966 [DEBUG] [Thread-114537] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:57:29.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:57:29.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:57:29.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:57:29.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:57:29.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:57:29.982 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:57:29.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:57:29.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:57:29.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:57:29.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.373010 -999.00  +22.70  22.42     11   -8.60 1 1 1 1 1   888    0 32.08 43.39 ----- 26.6 22.4 33.8 28.8 27.9 -31.1 26.9 -28.4 26.0 -28.5 26.9 -28.0
2025-11-03T10:57:29.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:57:29.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:57:29.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.373010
2025-11-03T10:57:29.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:57:29.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:57:29.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:57:29.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:57:29.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:57:29.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:56:56', tmtdew=39.19, humidity=6.01, cloud=0.0, wind=22.02, temperature=22.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:57:08.064', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:57:29.983 [DEBUG] [Thread-114537] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:57:30.058 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:57:30.070 [DEBUG] [Thread-114540] [transport.py] [_log()] starting thread (client mode): 0xed37a00
2025-11-03T10:57:30.070 [DEBUG] [Thread-114540] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:57:30.087 [DEBUG] [Thread-114540] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:57:30.087 [INFO] [Thread-114540] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:57:30.095 [DEBUG] [Thread-114540] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:57:30.095 [DEBUG] [Thread-114540] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:57:30.095 [DEBUG] [Thread-114540] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:57:30.095 [DEBUG] [Thread-114540] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:57:30.095 [DEBUG] [Thread-114540] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:57:30.095 [DEBUG] [Thread-114540] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:57:30.095 [DEBUG] [Thread-114540] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:57:30.095 [DEBUG] [Thread-114540] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:57:30.095 [DEBUG] [Thread-114540] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:57:30.095 [DEBUG] [Thread-114540] [transport.py] [_log()] client lang: <none>
2025-11-03T10:57:30.095 [DEBUG] [Thread-114540] [transport.py] [_log()] server lang: <none>
2025-11-03T10:57:30.095 [DEBUG] [Thread-114540] [transport.py] [_log()] kex follows: False
2025-11-03T10:57:30.095 [DEBUG] [Thread-114540] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:57:30.095 [DEBUG] [Thread-114540] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:57:30.095 [DEBUG] [Thread-114540] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:57:30.095 [DEBUG] [Thread-114540] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:57:30.095 [DEBUG] [Thread-114540] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:57:30.095 [DEBUG] [Thread-114540] [transport.py] [_log()] Compression: none
2025-11-03T10:57:30.095 [DEBUG] [Thread-114540] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:57:30.151 [DEBUG] [Thread-114540] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:57:30.151 [DEBUG] [Thread-114540] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:57:30.152 [DEBUG] [Thread-114540] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:57:30.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:57:30.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:57:30.207 [DEBUG] [Thread-114540] [transport.py] [_log()] userauth is OK
2025-11-03T10:57:30.207 [DEBUG] [Thread-114540] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:57:30.207 [DEBUG] [Thread-114540] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:57:30.207 [DEBUG] [Thread-114540] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:57:30.207 [DEBUG] [Thread-114540] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:57:30.221 [INFO] [Thread-114540] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:57:30.221 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:57:30.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:57:31.087 [DEBUG] [Thread-114540] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:57:31.087 [DEBUG] [Thread-114540] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:57:31.135 [DEBUG] [Thread-114540] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:57:31.135 [DEBUG] [Thread-114540] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:57:31.143 [DEBUG] [Thread-114540] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:57:31.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:57:31.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:57:31.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:57:31.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:57:31.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:57:31.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:57:31.176 [DEBUG] [Thread-114540] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:57:41.557 [DEBUG] [Thread-114542 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:57:54.737 [DEBUG] [Thread-114543 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:57:56.609 [DEBUG] [Thread-114544 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:58:01.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:58:01.198 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:58:01.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:58:01.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 57, 28), 39.03, 6.08, 0.0, 19.14, 22.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:58:01.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:57:28
2025-11-03T10:58:02.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:58:02.252 [DEBUG] [Thread-114545] [transport.py] [_log()] starting thread (client mode): 0xed2f5e0
2025-11-03T10:58:02.253 [DEBUG] [Thread-114545] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:58:02.272 [DEBUG] [Thread-114545] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:58:02.273 [INFO] [Thread-114545] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:58:02.276 [DEBUG] [Thread-114545] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:58:02.276 [DEBUG] [Thread-114545] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:58:02.276 [DEBUG] [Thread-114545] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:58:02.276 [DEBUG] [Thread-114545] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:58:02.276 [DEBUG] [Thread-114545] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:58:02.276 [DEBUG] [Thread-114545] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:58:02.276 [DEBUG] [Thread-114545] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:58:02.276 [DEBUG] [Thread-114545] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:58:02.276 [DEBUG] [Thread-114545] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:58:02.276 [DEBUG] [Thread-114545] [transport.py] [_log()] client lang: <none>
2025-11-03T10:58:02.276 [DEBUG] [Thread-114545] [transport.py] [_log()] server lang: <none>
2025-11-03T10:58:02.276 [DEBUG] [Thread-114545] [transport.py] [_log()] kex follows: False
2025-11-03T10:58:02.276 [DEBUG] [Thread-114545] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:58:02.276 [DEBUG] [Thread-114545] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:58:02.276 [DEBUG] [Thread-114545] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:58:02.276 [DEBUG] [Thread-114545] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:58:02.276 [DEBUG] [Thread-114545] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:58:02.276 [DEBUG] [Thread-114545] [transport.py] [_log()] Compression: none
2025-11-03T10:58:02.276 [DEBUG] [Thread-114545] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:58:02.291 [DEBUG] [Thread-114545] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:58:02.291 [DEBUG] [Thread-114545] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:58:02.291 [DEBUG] [Thread-114545] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:58:02.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:58:02.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:58:02.292 [DEBUG] [Thread-114545] [transport.py] [_log()] userauth is OK
2025-11-03T10:58:02.292 [DEBUG] [Thread-114545] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:58:02.292 [DEBUG] [Thread-114545] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:58:02.292 [DEBUG] [Thread-114545] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:58:02.292 [DEBUG] [Thread-114545] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:58:02.301 [INFO] [Thread-114545] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:58:02.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:58:02.942 [DEBUG] [Thread-114545] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:58:02.942 [DEBUG] [Thread-114545] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:58:02.942 [DEBUG] [Thread-114545] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:58:02.983 [DEBUG] [Thread-114545] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:58:02.983 [DEBUG] [Thread-114545] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:58:02.985 [DEBUG] [Thread-114545] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:58:02.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:58:02.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:58:02.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:58:02.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:58:03.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:58:03.002 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:58:03.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:58:03.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:58:03.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:58:03.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.373357 -999.00  +22.30  25.33     11   -9.00 1 1 1 1 1   888    0 32.21 43.11 ----- 28.4 25.3 27.8 32.8 28.0 -30.5 26.9 -29.8 26.0 -28.7 26.9 -28.2
2025-11-03T10:58:03.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:58:03.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:58:03.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.373357
2025-11-03T10:58:03.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:58:03.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:58:03.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:58:03.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:58:03.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:58:03.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:57:28', tmtdew=39.03, humidity=6.08, cloud=0.0, wind=19.14, temperature=22.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:57:38.045', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:58:03.003 [DEBUG] [Thread-114545] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:58:03.078 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:58:03.090 [DEBUG] [Thread-114548] [transport.py] [_log()] starting thread (client mode): 0xed43580
2025-11-03T10:58:03.090 [DEBUG] [Thread-114548] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:58:03.105 [DEBUG] [Thread-114548] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:58:03.105 [INFO] [Thread-114548] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:58:03.112 [DEBUG] [Thread-114548] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:58:03.112 [DEBUG] [Thread-114548] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:58:03.112 [DEBUG] [Thread-114548] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:58:03.112 [DEBUG] [Thread-114548] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:58:03.112 [DEBUG] [Thread-114548] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:58:03.112 [DEBUG] [Thread-114548] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:58:03.112 [DEBUG] [Thread-114548] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:58:03.112 [DEBUG] [Thread-114548] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:58:03.112 [DEBUG] [Thread-114548] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:58:03.112 [DEBUG] [Thread-114548] [transport.py] [_log()] client lang: <none>
2025-11-03T10:58:03.113 [DEBUG] [Thread-114548] [transport.py] [_log()] server lang: <none>
2025-11-03T10:58:03.113 [DEBUG] [Thread-114548] [transport.py] [_log()] kex follows: False
2025-11-03T10:58:03.113 [DEBUG] [Thread-114548] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:58:03.113 [DEBUG] [Thread-114548] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:58:03.113 [DEBUG] [Thread-114548] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:58:03.113 [DEBUG] [Thread-114548] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:58:03.113 [DEBUG] [Thread-114548] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:58:03.113 [DEBUG] [Thread-114548] [transport.py] [_log()] Compression: none
2025-11-03T10:58:03.113 [DEBUG] [Thread-114548] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:58:03.172 [DEBUG] [Thread-114548] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:58:03.172 [DEBUG] [Thread-114548] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:58:03.173 [DEBUG] [Thread-114548] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:58:03.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:58:03.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:58:03.228 [DEBUG] [Thread-114548] [transport.py] [_log()] userauth is OK
2025-11-03T10:58:03.228 [DEBUG] [Thread-114548] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:58:03.228 [DEBUG] [Thread-114548] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:58:03.228 [DEBUG] [Thread-114548] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:58:03.228 [DEBUG] [Thread-114548] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:58:03.242 [INFO] [Thread-114548] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:58:03.242 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:58:03.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:58:04.105 [DEBUG] [Thread-114548] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:58:04.105 [DEBUG] [Thread-114548] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:58:04.153 [DEBUG] [Thread-114548] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:58:04.153 [DEBUG] [Thread-114548] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:58:04.162 [DEBUG] [Thread-114548] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:58:04.170 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:58:04.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:58:04.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:58:04.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:58:04.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:58:04.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:58:04.194 [DEBUG] [Thread-114548] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:58:11.646 [DEBUG] [Thread-114550 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:58:26.695 [DEBUG] [Thread-114551 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:58:27.613 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:58:27.615 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:58:34.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:58:34.216 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:58:34.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:58:34.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 58), 39.54, 6.03, 0.0, 20.06, 22.96, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:58:34.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:58:00
2025-11-03T10:58:35.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:58:35.197 [DEBUG] [Thread-114552] [transport.py] [_log()] starting thread (client mode): 0xed64490
2025-11-03T10:58:35.197 [DEBUG] [Thread-114552] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:58:35.217 [DEBUG] [Thread-114552] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:58:35.217 [INFO] [Thread-114552] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:58:35.220 [DEBUG] [Thread-114552] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:58:35.220 [DEBUG] [Thread-114552] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:58:35.220 [DEBUG] [Thread-114552] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:58:35.220 [DEBUG] [Thread-114552] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:58:35.220 [DEBUG] [Thread-114552] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:58:35.220 [DEBUG] [Thread-114552] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:58:35.220 [DEBUG] [Thread-114552] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:58:35.220 [DEBUG] [Thread-114552] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:58:35.220 [DEBUG] [Thread-114552] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:58:35.220 [DEBUG] [Thread-114552] [transport.py] [_log()] client lang: <none>
2025-11-03T10:58:35.220 [DEBUG] [Thread-114552] [transport.py] [_log()] server lang: <none>
2025-11-03T10:58:35.220 [DEBUG] [Thread-114552] [transport.py] [_log()] kex follows: False
2025-11-03T10:58:35.220 [DEBUG] [Thread-114552] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:58:35.220 [DEBUG] [Thread-114552] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:58:35.220 [DEBUG] [Thread-114552] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:58:35.220 [DEBUG] [Thread-114552] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:58:35.220 [DEBUG] [Thread-114552] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:58:35.220 [DEBUG] [Thread-114552] [transport.py] [_log()] Compression: none
2025-11-03T10:58:35.220 [DEBUG] [Thread-114552] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:58:35.237 [DEBUG] [Thread-114552] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:58:35.237 [DEBUG] [Thread-114552] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:58:35.237 [DEBUG] [Thread-114552] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:58:35.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:58:35.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:58:35.238 [DEBUG] [Thread-114552] [transport.py] [_log()] userauth is OK
2025-11-03T10:58:35.238 [DEBUG] [Thread-114552] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:58:35.238 [DEBUG] [Thread-114552] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:58:35.238 [DEBUG] [Thread-114552] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:58:35.238 [DEBUG] [Thread-114552] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:58:35.247 [INFO] [Thread-114552] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:58:35.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:58:35.887 [DEBUG] [Thread-114552] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:58:35.887 [DEBUG] [Thread-114552] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:58:35.888 [DEBUG] [Thread-114552] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:58:35.928 [DEBUG] [Thread-114552] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:58:35.929 [DEBUG] [Thread-114552] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:58:35.932 [DEBUG] [Thread-114552] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:58:35.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:58:35.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:58:35.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:58:35.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:58:35.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:58:35.951 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:58:35.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:58:35.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:58:35.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:58:35.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.373704 -999.00  +22.30  19.68     11   -9.10 1 1 1 1 1   888    0 32.38 45.33 ----- 15.8 19.7 27.6 29.2 28.0 -29.4 26.9 -29.8 26.1 -28.3 26.9 -28.0
2025-11-03T10:58:35.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:58:35.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:58:35.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.373704
2025-11-03T10:58:35.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:58:35.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:58:35.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:58:35.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:58:35.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:58:35.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:58:00', tmtdew=39.54, humidity=6.03, cloud=0.0, wind=20.06, temperature=22.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:58:08.026', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:58:35.954 [DEBUG] [Thread-114552] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:58:36.044 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:58:36.055 [DEBUG] [Thread-114555] [transport.py] [_log()] starting thread (client mode): 0xed2e770
2025-11-03T10:58:36.055 [DEBUG] [Thread-114555] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:58:36.070 [DEBUG] [Thread-114555] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:58:36.070 [INFO] [Thread-114555] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:58:36.077 [DEBUG] [Thread-114555] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:58:36.078 [DEBUG] [Thread-114555] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:58:36.078 [DEBUG] [Thread-114555] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:58:36.078 [DEBUG] [Thread-114555] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:58:36.078 [DEBUG] [Thread-114555] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:58:36.078 [DEBUG] [Thread-114555] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:58:36.078 [DEBUG] [Thread-114555] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:58:36.078 [DEBUG] [Thread-114555] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:58:36.079 [DEBUG] [Thread-114555] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:58:36.079 [DEBUG] [Thread-114555] [transport.py] [_log()] client lang: <none>
2025-11-03T10:58:36.079 [DEBUG] [Thread-114555] [transport.py] [_log()] server lang: <none>
2025-11-03T10:58:36.079 [DEBUG] [Thread-114555] [transport.py] [_log()] kex follows: False
2025-11-03T10:58:36.079 [DEBUG] [Thread-114555] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:58:36.079 [DEBUG] [Thread-114555] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:58:36.079 [DEBUG] [Thread-114555] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:58:36.079 [DEBUG] [Thread-114555] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:58:36.080 [DEBUG] [Thread-114555] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:58:36.080 [DEBUG] [Thread-114555] [transport.py] [_log()] Compression: none
2025-11-03T10:58:36.080 [DEBUG] [Thread-114555] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:58:36.136 [DEBUG] [Thread-114555] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:58:36.136 [DEBUG] [Thread-114555] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:58:36.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:58:36.137 [DEBUG] [Thread-114555] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:58:36.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:58:36.192 [DEBUG] [Thread-114555] [transport.py] [_log()] userauth is OK
2025-11-03T10:58:36.192 [DEBUG] [Thread-114555] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:58:36.192 [DEBUG] [Thread-114555] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:58:36.192 [DEBUG] [Thread-114555] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:58:36.192 [DEBUG] [Thread-114555] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:58:36.211 [INFO] [Thread-114555] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:58:36.212 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:58:36.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:58:37.063 [DEBUG] [Thread-114555] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:58:37.063 [DEBUG] [Thread-114555] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:58:37.113 [DEBUG] [Thread-114555] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:58:37.113 [DEBUG] [Thread-114555] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:58:37.125 [DEBUG] [Thread-114555] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:58:37.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:58:37.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:58:37.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:58:37.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:58:37.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:58:37.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:58:37.162 [DEBUG] [Thread-114555] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:58:41.734 [DEBUG] [Thread-114557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:58:54.817 [DEBUG] [Thread-114558 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:58:56.786 [DEBUG] [Thread-114559 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:59:07.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:59:07.185 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:59:07.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:59:07.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 58, 33), 39.94, 5.83, 0.0, 19.96, 22.93, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:59:07.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:58:33
2025-11-03T10:59:08.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:59:08.187 [DEBUG] [Thread-114560] [transport.py] [_log()] starting thread (client mode): 0xed66ef0
2025-11-03T10:59:08.187 [DEBUG] [Thread-114560] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:59:08.207 [DEBUG] [Thread-114560] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:59:08.207 [INFO] [Thread-114560] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:59:08.211 [DEBUG] [Thread-114560] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:59:08.211 [DEBUG] [Thread-114560] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:59:08.211 [DEBUG] [Thread-114560] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:59:08.211 [DEBUG] [Thread-114560] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:59:08.211 [DEBUG] [Thread-114560] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:59:08.211 [DEBUG] [Thread-114560] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:59:08.211 [DEBUG] [Thread-114560] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:59:08.211 [DEBUG] [Thread-114560] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:59:08.211 [DEBUG] [Thread-114560] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:59:08.211 [DEBUG] [Thread-114560] [transport.py] [_log()] client lang: <none>
2025-11-03T10:59:08.211 [DEBUG] [Thread-114560] [transport.py] [_log()] server lang: <none>
2025-11-03T10:59:08.211 [DEBUG] [Thread-114560] [transport.py] [_log()] kex follows: False
2025-11-03T10:59:08.211 [DEBUG] [Thread-114560] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:59:08.211 [DEBUG] [Thread-114560] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:59:08.211 [DEBUG] [Thread-114560] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:59:08.211 [DEBUG] [Thread-114560] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:59:08.212 [DEBUG] [Thread-114560] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:59:08.212 [DEBUG] [Thread-114560] [transport.py] [_log()] Compression: none
2025-11-03T10:59:08.212 [DEBUG] [Thread-114560] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:59:08.225 [DEBUG] [Thread-114560] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:59:08.226 [DEBUG] [Thread-114560] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:59:08.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:59:08.227 [DEBUG] [Thread-114560] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:59:08.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:59:08.229 [DEBUG] [Thread-114560] [transport.py] [_log()] userauth is OK
2025-11-03T10:59:08.229 [DEBUG] [Thread-114560] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:59:08.229 [DEBUG] [Thread-114560] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:59:08.229 [DEBUG] [Thread-114560] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:59:08.229 [DEBUG] [Thread-114560] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:59:08.248 [INFO] [Thread-114560] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:59:08.249 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:59:08.900 [DEBUG] [Thread-114560] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:59:08.901 [DEBUG] [Thread-114560] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:59:08.901 [DEBUG] [Thread-114560] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:59:08.942 [DEBUG] [Thread-114560] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:59:08.942 [DEBUG] [Thread-114560] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:59:08.945 [DEBUG] [Thread-114560] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:59:08.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:59:08.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:59:08.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:59:08.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:59:08.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:59:08.962 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:59:08.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:59:08.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:59:08.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:59:08.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.374051 -999.00  +22.10  16.62     11   -9.60 1 1 1 1 1   888    0 31.48 47.15 ----- 19.3 16.6 39.4 20.5 28.1 -29.6 27.1 -29.7 26.1 -29.7 26.9 -27.9
2025-11-03T10:59:08.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:59:08.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:59:08.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.374051
2025-11-03T10:59:08.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:59:08.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:59:08.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:59:08.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:59:08.965 [DEBUG] [Thread-114560] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:59:08.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:59:08.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:58:33', tmtdew=39.94, humidity=5.83, cloud=0.0, wind=19.96, temperature=22.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:58:38.006', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:59:09.048 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:59:09.060 [DEBUG] [Thread-114563] [transport.py] [_log()] starting thread (client mode): 0xed660b0
2025-11-03T10:59:09.061 [DEBUG] [Thread-114563] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:59:09.076 [DEBUG] [Thread-114563] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:59:09.076 [INFO] [Thread-114563] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:59:09.084 [DEBUG] [Thread-114563] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:59:09.084 [DEBUG] [Thread-114563] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:59:09.084 [DEBUG] [Thread-114563] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:59:09.084 [DEBUG] [Thread-114563] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:59:09.084 [DEBUG] [Thread-114563] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:59:09.085 [DEBUG] [Thread-114563] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:59:09.085 [DEBUG] [Thread-114563] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:59:09.085 [DEBUG] [Thread-114563] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:59:09.085 [DEBUG] [Thread-114563] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:59:09.085 [DEBUG] [Thread-114563] [transport.py] [_log()] client lang: <none>
2025-11-03T10:59:09.085 [DEBUG] [Thread-114563] [transport.py] [_log()] server lang: <none>
2025-11-03T10:59:09.085 [DEBUG] [Thread-114563] [transport.py] [_log()] kex follows: False
2025-11-03T10:59:09.085 [DEBUG] [Thread-114563] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:59:09.085 [DEBUG] [Thread-114563] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:59:09.085 [DEBUG] [Thread-114563] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:59:09.085 [DEBUG] [Thread-114563] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:59:09.085 [DEBUG] [Thread-114563] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:59:09.085 [DEBUG] [Thread-114563] [transport.py] [_log()] Compression: none
2025-11-03T10:59:09.085 [DEBUG] [Thread-114563] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:59:09.141 [DEBUG] [Thread-114563] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:59:09.141 [DEBUG] [Thread-114563] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:59:09.142 [DEBUG] [Thread-114563] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:59:09.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:59:09.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:59:09.197 [DEBUG] [Thread-114563] [transport.py] [_log()] userauth is OK
2025-11-03T10:59:09.198 [DEBUG] [Thread-114563] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:59:09.198 [DEBUG] [Thread-114563] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:59:09.198 [DEBUG] [Thread-114563] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:59:09.198 [DEBUG] [Thread-114563] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:59:09.217 [INFO] [Thread-114563] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:59:09.218 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:59:09.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:59:10.065 [DEBUG] [Thread-114563] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:59:10.066 [DEBUG] [Thread-114563] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:59:10.113 [DEBUG] [Thread-114563] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:59:10.113 [DEBUG] [Thread-114563] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:59:10.122 [DEBUG] [Thread-114563] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:59:10.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:59:10.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:59:10.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:59:10.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:59:10.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:59:10.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:59:10.154 [DEBUG] [Thread-114563] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:59:11.815 [DEBUG] [Thread-114565 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:59:26.871 [DEBUG] [Thread-114566 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:59:27.754 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:59:27.755 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:59:40.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T10:59:40.165 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T10:59:40.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T10:59:40.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 10, 59, 37), 39.31, 5.98, 0.0, 17.19, 22.56, 0, 0, 0, 2, 0, 0),)
2025-11-03T10:59:40.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 10:59:37
2025-11-03T10:59:41.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T10:59:41.156 [DEBUG] [Thread-114567] [transport.py] [_log()] starting thread (client mode): 0xed07640
2025-11-03T10:59:41.156 [DEBUG] [Thread-114567] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:59:41.178 [DEBUG] [Thread-114567] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T10:59:41.178 [INFO] [Thread-114567] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T10:59:41.181 [DEBUG] [Thread-114567] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:59:41.181 [DEBUG] [Thread-114567] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T10:59:41.181 [DEBUG] [Thread-114567] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:59:41.181 [DEBUG] [Thread-114567] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:59:41.181 [DEBUG] [Thread-114567] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:59:41.181 [DEBUG] [Thread-114567] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:59:41.181 [DEBUG] [Thread-114567] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:59:41.181 [DEBUG] [Thread-114567] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:59:41.181 [DEBUG] [Thread-114567] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:59:41.181 [DEBUG] [Thread-114567] [transport.py] [_log()] client lang: <none>
2025-11-03T10:59:41.181 [DEBUG] [Thread-114567] [transport.py] [_log()] server lang: <none>
2025-11-03T10:59:41.181 [DEBUG] [Thread-114567] [transport.py] [_log()] kex follows: False
2025-11-03T10:59:41.181 [DEBUG] [Thread-114567] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:59:41.181 [DEBUG] [Thread-114567] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:59:41.181 [DEBUG] [Thread-114567] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:59:41.181 [DEBUG] [Thread-114567] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:59:41.181 [DEBUG] [Thread-114567] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:59:41.181 [DEBUG] [Thread-114567] [transport.py] [_log()] Compression: none
2025-11-03T10:59:41.181 [DEBUG] [Thread-114567] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:59:41.203 [DEBUG] [Thread-114567] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:59:41.203 [DEBUG] [Thread-114567] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:59:41.204 [DEBUG] [Thread-114567] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T10:59:41.204 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T10:59:41.204 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:59:41.204 [DEBUG] [Thread-114567] [transport.py] [_log()] userauth is OK
2025-11-03T10:59:41.204 [DEBUG] [Thread-114567] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:59:41.204 [DEBUG] [Thread-114567] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:59:41.204 [DEBUG] [Thread-114567] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T10:59:41.205 [DEBUG] [Thread-114567] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:59:41.223 [INFO] [Thread-114567] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:59:41.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:59:41.845 [DEBUG] [Thread-114567] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:59:41.846 [DEBUG] [Thread-114567] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:59:41.846 [DEBUG] [Thread-114567] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T10:59:41.887 [DEBUG] [Thread-114567] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:59:41.887 [DEBUG] [Thread-114567] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:59:41.889 [DEBUG] [Thread-114567] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:59:41.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:59:41.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T10:59:41.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T10:59:41.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T10:59:41.914 [DEBUG] [Thread-114570 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:59:41.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:59:41.917 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T10:59:41.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:59:41.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:59:41.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T10:59:41.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.374398 -999.00  +22.00  12.76     11   -9.70 1 1 1 1 1   888    0 32.47 53.55 ----- 8.5 12.8 17.4 21.4 28.1 -29.3 27.1 -29.8 26.0 -29.3 27.0 -27.7
2025-11-03T10:59:41.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T10:59:41.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T10:59:41.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.374398
2025-11-03T10:59:41.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T10:59:41.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T10:59:41.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T10:59:41.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T10:59:41.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T10:59:41.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T10:59:37', tmtdew=39.31, humidity=5.98, cloud=0.0, wind=17.19, temperature=22.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:59:07.987', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T10:59:41.918 [DEBUG] [Thread-114567] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:59:41.992 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T10:59:42.004 [DEBUG] [Thread-114571] [transport.py] [_log()] starting thread (client mode): 0xed5ffa0
2025-11-03T10:59:42.004 [DEBUG] [Thread-114571] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T10:59:42.020 [DEBUG] [Thread-114571] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T10:59:42.020 [INFO] [Thread-114571] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T10:59:42.027 [DEBUG] [Thread-114571] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T10:59:42.027 [DEBUG] [Thread-114571] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T10:59:42.028 [DEBUG] [Thread-114571] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T10:59:42.028 [DEBUG] [Thread-114571] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:59:42.028 [DEBUG] [Thread-114571] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T10:59:42.028 [DEBUG] [Thread-114571] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:59:42.028 [DEBUG] [Thread-114571] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T10:59:42.028 [DEBUG] [Thread-114571] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T10:59:42.028 [DEBUG] [Thread-114571] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T10:59:42.028 [DEBUG] [Thread-114571] [transport.py] [_log()] client lang: <none>
2025-11-03T10:59:42.028 [DEBUG] [Thread-114571] [transport.py] [_log()] server lang: <none>
2025-11-03T10:59:42.028 [DEBUG] [Thread-114571] [transport.py] [_log()] kex follows: False
2025-11-03T10:59:42.028 [DEBUG] [Thread-114571] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T10:59:42.028 [DEBUG] [Thread-114571] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T10:59:42.028 [DEBUG] [Thread-114571] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T10:59:42.028 [DEBUG] [Thread-114571] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T10:59:42.028 [DEBUG] [Thread-114571] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T10:59:42.028 [DEBUG] [Thread-114571] [transport.py] [_log()] Compression: none
2025-11-03T10:59:42.028 [DEBUG] [Thread-114571] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T10:59:42.084 [DEBUG] [Thread-114571] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T10:59:42.084 [DEBUG] [Thread-114571] [transport.py] [_log()] Switch to new keys ...
2025-11-03T10:59:42.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T10:59:42.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T10:59:42.084 [DEBUG] [Thread-114571] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T10:59:42.141 [DEBUG] [Thread-114571] [transport.py] [_log()] userauth is OK
2025-11-03T10:59:42.141 [DEBUG] [Thread-114571] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T10:59:42.141 [DEBUG] [Thread-114571] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T10:59:42.141 [DEBUG] [Thread-114571] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T10:59:42.141 [DEBUG] [Thread-114571] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T10:59:42.159 [INFO] [Thread-114571] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T10:59:42.168 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T10:59:42.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T10:59:43.024 [DEBUG] [Thread-114571] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T10:59:43.024 [DEBUG] [Thread-114571] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T10:59:43.072 [DEBUG] [Thread-114571] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T10:59:43.072 [DEBUG] [Thread-114571] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T10:59:43.081 [DEBUG] [Thread-114571] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T10:59:43.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T10:59:43.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T10:59:43.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T10:59:43.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T10:59:43.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T10:59:43.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T10:59:43.113 [DEBUG] [Thread-114571] [transport.py] [_log()] EOF in transport thread
2025-11-03T10:59:54.910 [DEBUG] [Thread-114573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T10:59:56.947 [DEBUG] [Thread-114574 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:00:12.006 [DEBUG] [Thread-114575 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:00:13.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:00:13.114 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:00:13.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:00:13.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 0, 9), 39.19, 6.05, 0.0, 23.68, 22.59, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:00:13.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:00:09
2025-11-03T11:00:13.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:00:14.113 [DEBUG] [Thread-114576] [transport.py] [_log()] starting thread (client mode): 0xed5e5c0
2025-11-03T11:00:14.113 [DEBUG] [Thread-114576] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:00:14.133 [DEBUG] [Thread-114576] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:00:14.134 [INFO] [Thread-114576] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:00:14.135 [DEBUG] [Thread-114576] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:00:14.135 [DEBUG] [Thread-114576] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:00:14.135 [DEBUG] [Thread-114576] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:00:14.135 [DEBUG] [Thread-114576] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:00:14.135 [DEBUG] [Thread-114576] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:00:14.135 [DEBUG] [Thread-114576] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:00:14.135 [DEBUG] [Thread-114576] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:00:14.135 [DEBUG] [Thread-114576] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:00:14.135 [DEBUG] [Thread-114576] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:00:14.135 [DEBUG] [Thread-114576] [transport.py] [_log()] client lang: <none>
2025-11-03T11:00:14.135 [DEBUG] [Thread-114576] [transport.py] [_log()] server lang: <none>
2025-11-03T11:00:14.135 [DEBUG] [Thread-114576] [transport.py] [_log()] kex follows: False
2025-11-03T11:00:14.135 [DEBUG] [Thread-114576] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:00:14.135 [DEBUG] [Thread-114576] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:00:14.136 [DEBUG] [Thread-114576] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:00:14.136 [DEBUG] [Thread-114576] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:00:14.136 [DEBUG] [Thread-114576] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:00:14.136 [DEBUG] [Thread-114576] [transport.py] [_log()] Compression: none
2025-11-03T11:00:14.136 [DEBUG] [Thread-114576] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:00:14.155 [DEBUG] [Thread-114576] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:00:14.156 [DEBUG] [Thread-114576] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:00:14.156 [DEBUG] [Thread-114576] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:00:14.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:00:14.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:00:14.158 [DEBUG] [Thread-114576] [transport.py] [_log()] userauth is OK
2025-11-03T11:00:14.159 [DEBUG] [Thread-114576] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:00:14.159 [DEBUG] [Thread-114576] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:00:14.159 [DEBUG] [Thread-114576] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:00:14.159 [DEBUG] [Thread-114576] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:00:14.195 [INFO] [Thread-114576] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:00:14.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:00:14.816 [DEBUG] [Thread-114576] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:00:14.816 [DEBUG] [Thread-114576] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:00:14.817 [DEBUG] [Thread-114576] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:00:14.858 [DEBUG] [Thread-114576] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:00:14.858 [DEBUG] [Thread-114576] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:00:14.861 [DEBUG] [Thread-114576] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:00:14.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:00:14.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:00:14.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:00:14.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:00:14.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:00:14.885 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:00:14.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:00:14.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:00:14.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:00:14.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.374746 -999.00  +22.10  12.36     10   -9.70 1 1 1 1 1   888    0 33.02 60.80 ----- 13.1 12.4 326.4 19.6 28.3 -28.9 27.2 -27.5 26.3 -27.3 27.2 -27.8
2025-11-03T11:00:14.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:00:14.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:00:14.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.374746
2025-11-03T11:00:14.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:00:14.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:00:14.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:00:14.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:00:14.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:00:14.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:00:09', tmtdew=39.19, humidity=6.05, cloud=0.0, wind=23.68, temperature=22.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T08:59:38.054', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:00:14.889 [DEBUG] [Thread-114576] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:00:14.970 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:00:14.982 [DEBUG] [Thread-114579] [transport.py] [_log()] starting thread (client mode): 0xed07c10
2025-11-03T11:00:14.982 [DEBUG] [Thread-114579] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:00:14.997 [DEBUG] [Thread-114579] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:00:14.997 [INFO] [Thread-114579] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:00:15.005 [DEBUG] [Thread-114579] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:00:15.005 [DEBUG] [Thread-114579] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:00:15.005 [DEBUG] [Thread-114579] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:00:15.006 [DEBUG] [Thread-114579] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:00:15.006 [DEBUG] [Thread-114579] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:00:15.006 [DEBUG] [Thread-114579] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:00:15.006 [DEBUG] [Thread-114579] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:00:15.006 [DEBUG] [Thread-114579] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:00:15.006 [DEBUG] [Thread-114579] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:00:15.006 [DEBUG] [Thread-114579] [transport.py] [_log()] client lang: <none>
2025-11-03T11:00:15.006 [DEBUG] [Thread-114579] [transport.py] [_log()] server lang: <none>
2025-11-03T11:00:15.006 [DEBUG] [Thread-114579] [transport.py] [_log()] kex follows: False
2025-11-03T11:00:15.006 [DEBUG] [Thread-114579] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:00:15.006 [DEBUG] [Thread-114579] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:00:15.006 [DEBUG] [Thread-114579] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:00:15.006 [DEBUG] [Thread-114579] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:00:15.006 [DEBUG] [Thread-114579] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:00:15.006 [DEBUG] [Thread-114579] [transport.py] [_log()] Compression: none
2025-11-03T11:00:15.006 [DEBUG] [Thread-114579] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:00:15.068 [DEBUG] [Thread-114579] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:00:15.068 [DEBUG] [Thread-114579] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:00:15.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:00:15.070 [DEBUG] [Thread-114579] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:00:15.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:00:15.125 [DEBUG] [Thread-114579] [transport.py] [_log()] userauth is OK
2025-11-03T11:00:15.125 [DEBUG] [Thread-114579] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:00:15.125 [DEBUG] [Thread-114579] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:00:15.126 [DEBUG] [Thread-114579] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:00:15.126 [DEBUG] [Thread-114579] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:00:15.144 [INFO] [Thread-114579] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:00:15.145 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:00:15.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:00:15.994 [DEBUG] [Thread-114579] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:00:15.995 [DEBUG] [Thread-114579] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:00:16.043 [DEBUG] [Thread-114579] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:00:16.043 [DEBUG] [Thread-114579] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:00:16.052 [DEBUG] [Thread-114579] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:00:16.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:00:16.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:00:16.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:00:16.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:00:16.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:00:16.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:00:16.086 [DEBUG] [Thread-114579] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:00:27.039 [DEBUG] [Thread-114581 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:00:27.898 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:00:27.899 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:00:42.094 [DEBUG] [Thread-114582 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:00:46.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:00:46.109 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:00:46.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:00:46.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 0, 41), 39.59, 6.03, 0.0, 21.65, 22.76, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:00:46.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:00:41
2025-11-03T11:00:46.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:00:47.084 [DEBUG] [Thread-114583] [transport.py] [_log()] starting thread (client mode): 0xed07640
2025-11-03T11:00:47.084 [DEBUG] [Thread-114583] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:00:47.104 [DEBUG] [Thread-114583] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:00:47.104 [INFO] [Thread-114583] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:00:47.107 [DEBUG] [Thread-114583] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:00:47.107 [DEBUG] [Thread-114583] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:00:47.108 [DEBUG] [Thread-114583] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:00:47.108 [DEBUG] [Thread-114583] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:00:47.108 [DEBUG] [Thread-114583] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:00:47.108 [DEBUG] [Thread-114583] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:00:47.108 [DEBUG] [Thread-114583] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:00:47.108 [DEBUG] [Thread-114583] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:00:47.108 [DEBUG] [Thread-114583] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:00:47.108 [DEBUG] [Thread-114583] [transport.py] [_log()] client lang: <none>
2025-11-03T11:00:47.108 [DEBUG] [Thread-114583] [transport.py] [_log()] server lang: <none>
2025-11-03T11:00:47.108 [DEBUG] [Thread-114583] [transport.py] [_log()] kex follows: False
2025-11-03T11:00:47.108 [DEBUG] [Thread-114583] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:00:47.108 [DEBUG] [Thread-114583] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:00:47.108 [DEBUG] [Thread-114583] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:00:47.108 [DEBUG] [Thread-114583] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:00:47.109 [DEBUG] [Thread-114583] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:00:47.109 [DEBUG] [Thread-114583] [transport.py] [_log()] Compression: none
2025-11-03T11:00:47.109 [DEBUG] [Thread-114583] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:00:47.118 [DEBUG] [Thread-114583] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:00:47.119 [DEBUG] [Thread-114583] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:00:47.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:00:47.120 [DEBUG] [Thread-114583] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:00:47.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:00:47.122 [DEBUG] [Thread-114583] [transport.py] [_log()] userauth is OK
2025-11-03T11:00:47.122 [DEBUG] [Thread-114583] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:00:47.122 [DEBUG] [Thread-114583] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:00:47.122 [DEBUG] [Thread-114583] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:00:47.122 [DEBUG] [Thread-114583] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:00:47.136 [INFO] [Thread-114583] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:00:47.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:00:47.778 [DEBUG] [Thread-114583] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:00:47.778 [DEBUG] [Thread-114583] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:00:47.778 [DEBUG] [Thread-114583] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:00:47.819 [DEBUG] [Thread-114583] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:00:47.819 [DEBUG] [Thread-114583] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:00:47.822 [DEBUG] [Thread-114583] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:00:47.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:00:47.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:00:47.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:00:47.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:00:47.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:00:47.851 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:00:47.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:00:47.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:00:47.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:00:47.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.375440 -999.00  +22.60  22.09     11   -8.60 1 1 1 1 1   888    0 32.00 51.34 ----- 23.9 22.1 18.6 31.4 28.4 -29.6 27.2 -28.4 26.4 -26.9 27.2 -27.4
2025-11-03T11:00:47.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:00:47.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:00:47.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.375440
2025-11-03T11:00:47.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:00:47.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:00:47.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:00:47.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:00:47.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:00:47.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:00:41', tmtdew=39.59, humidity=6.03, cloud=0.0, wind=21.65, temperature=22.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:00:38.016', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:00:47.853 [DEBUG] [Thread-114583] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:00:47.938 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:00:47.950 [DEBUG] [Thread-114586] [transport.py] [_log()] starting thread (client mode): 0xed2ece0
2025-11-03T11:00:47.950 [DEBUG] [Thread-114586] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:00:47.965 [DEBUG] [Thread-114586] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:00:47.966 [INFO] [Thread-114586] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:00:47.973 [DEBUG] [Thread-114586] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:00:47.973 [DEBUG] [Thread-114586] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:00:47.973 [DEBUG] [Thread-114586] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:00:47.973 [DEBUG] [Thread-114586] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:00:47.973 [DEBUG] [Thread-114586] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:00:47.973 [DEBUG] [Thread-114586] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:00:47.973 [DEBUG] [Thread-114586] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:00:47.973 [DEBUG] [Thread-114586] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:00:47.974 [DEBUG] [Thread-114586] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:00:47.974 [DEBUG] [Thread-114586] [transport.py] [_log()] client lang: <none>
2025-11-03T11:00:47.974 [DEBUG] [Thread-114586] [transport.py] [_log()] server lang: <none>
2025-11-03T11:00:47.974 [DEBUG] [Thread-114586] [transport.py] [_log()] kex follows: False
2025-11-03T11:00:47.974 [DEBUG] [Thread-114586] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:00:47.974 [DEBUG] [Thread-114586] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:00:47.974 [DEBUG] [Thread-114586] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:00:47.974 [DEBUG] [Thread-114586] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:00:47.974 [DEBUG] [Thread-114586] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:00:47.974 [DEBUG] [Thread-114586] [transport.py] [_log()] Compression: none
2025-11-03T11:00:47.974 [DEBUG] [Thread-114586] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:00:48.033 [DEBUG] [Thread-114586] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:00:48.042 [DEBUG] [Thread-114586] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:00:48.043 [DEBUG] [Thread-114586] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:00:48.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:00:48.044 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:00:48.089 [DEBUG] [Thread-114586] [transport.py] [_log()] userauth is OK
2025-11-03T11:00:48.089 [DEBUG] [Thread-114586] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:00:48.089 [DEBUG] [Thread-114586] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:00:48.089 [DEBUG] [Thread-114586] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:00:48.089 [DEBUG] [Thread-114586] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:00:48.112 [INFO] [Thread-114586] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:00:48.112 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:00:48.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:00:48.971 [DEBUG] [Thread-114586] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:00:48.971 [DEBUG] [Thread-114586] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:00:49.018 [DEBUG] [Thread-114586] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:00:49.018 [DEBUG] [Thread-114586] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:00:49.027 [DEBUG] [Thread-114586] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:00:49.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:00:49.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:00:49.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:00:49.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:00:49.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:00:49.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:00:49.061 [DEBUG] [Thread-114586] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:00:54.994 [DEBUG] [Thread-114588 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:00:57.125 [DEBUG] [Thread-114589 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:01:12.163 [DEBUG] [Thread-114590 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:01:19.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:01:19.069 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:01:19.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:01:19.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 1, 14), 39.65, 6.0, 0.0, 21.45, 22.74, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:01:19.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:01:14
2025-11-03T11:01:19.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:01:20.048 [DEBUG] [Thread-114591] [transport.py] [_log()] starting thread (client mode): 0x1179ad40
2025-11-03T11:01:20.048 [DEBUG] [Thread-114591] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:01:20.068 [DEBUG] [Thread-114591] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:01:20.068 [INFO] [Thread-114591] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:01:20.069 [DEBUG] [Thread-114591] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:01:20.070 [DEBUG] [Thread-114591] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:01:20.070 [DEBUG] [Thread-114591] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:01:20.070 [DEBUG] [Thread-114591] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:01:20.070 [DEBUG] [Thread-114591] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:01:20.070 [DEBUG] [Thread-114591] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:01:20.070 [DEBUG] [Thread-114591] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:01:20.070 [DEBUG] [Thread-114591] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:01:20.070 [DEBUG] [Thread-114591] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:01:20.070 [DEBUG] [Thread-114591] [transport.py] [_log()] client lang: <none>
2025-11-03T11:01:20.070 [DEBUG] [Thread-114591] [transport.py] [_log()] server lang: <none>
2025-11-03T11:01:20.070 [DEBUG] [Thread-114591] [transport.py] [_log()] kex follows: False
2025-11-03T11:01:20.070 [DEBUG] [Thread-114591] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:01:20.070 [DEBUG] [Thread-114591] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:01:20.070 [DEBUG] [Thread-114591] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:01:20.070 [DEBUG] [Thread-114591] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:01:20.070 [DEBUG] [Thread-114591] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:01:20.070 [DEBUG] [Thread-114591] [transport.py] [_log()] Compression: none
2025-11-03T11:01:20.070 [DEBUG] [Thread-114591] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:01:20.082 [DEBUG] [Thread-114591] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:01:20.083 [DEBUG] [Thread-114591] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:01:20.083 [DEBUG] [Thread-114591] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:01:20.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:01:20.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:01:20.085 [DEBUG] [Thread-114591] [transport.py] [_log()] userauth is OK
2025-11-03T11:01:20.085 [DEBUG] [Thread-114591] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:01:20.085 [DEBUG] [Thread-114591] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:01:20.085 [DEBUG] [Thread-114591] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:01:20.085 [DEBUG] [Thread-114591] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:01:20.103 [INFO] [Thread-114591] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:01:20.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:01:20.762 [DEBUG] [Thread-114591] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:01:20.763 [DEBUG] [Thread-114591] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:01:20.764 [DEBUG] [Thread-114591] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:01:20.803 [DEBUG] [Thread-114591] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:01:20.803 [DEBUG] [Thread-114591] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:01:20.807 [DEBUG] [Thread-114591] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:01:20.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:01:20.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:01:20.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:01:20.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:01:20.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:01:20.830 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:01:20.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:01:20.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:01:20.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:01:20.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.375787 -999.00  +22.80  23.66     11   -8.60 1 1 1 1 1   888    0 32.36 51.22 ----- 25.8 23.7 28.8 33.1 28.4 -30.6 27.3 -30.1 26.3 -29.0 27.2 -28.4
2025-11-03T11:01:20.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:01:20.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:01:20.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.375787
2025-11-03T11:01:20.839 [DEBUG] [Thread-114591] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:01:20.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:01:20.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:01:20.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:01:20.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:01:20.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:01:20.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:01:14', tmtdew=39.65, humidity=6.0, cloud=0.0, wind=21.45, temperature=22.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:01:07.997', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:01:20.926 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:01:20.938 [DEBUG] [Thread-114594] [transport.py] [_log()] starting thread (client mode): 0xedc63b0
2025-11-03T11:01:20.938 [DEBUG] [Thread-114594] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:01:20.955 [DEBUG] [Thread-114594] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:01:20.956 [INFO] [Thread-114594] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:01:20.970 [DEBUG] [Thread-114594] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:01:20.970 [DEBUG] [Thread-114594] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:01:20.970 [DEBUG] [Thread-114594] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:01:20.970 [DEBUG] [Thread-114594] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:01:20.970 [DEBUG] [Thread-114594] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:01:20.970 [DEBUG] [Thread-114594] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:01:20.970 [DEBUG] [Thread-114594] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:01:20.970 [DEBUG] [Thread-114594] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:01:20.970 [DEBUG] [Thread-114594] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:01:20.970 [DEBUG] [Thread-114594] [transport.py] [_log()] client lang: <none>
2025-11-03T11:01:20.970 [DEBUG] [Thread-114594] [transport.py] [_log()] server lang: <none>
2025-11-03T11:01:20.971 [DEBUG] [Thread-114594] [transport.py] [_log()] kex follows: False
2025-11-03T11:01:20.971 [DEBUG] [Thread-114594] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:01:20.971 [DEBUG] [Thread-114594] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:01:20.971 [DEBUG] [Thread-114594] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:01:20.971 [DEBUG] [Thread-114594] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:01:20.971 [DEBUG] [Thread-114594] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:01:20.971 [DEBUG] [Thread-114594] [transport.py] [_log()] Compression: none
2025-11-03T11:01:20.971 [DEBUG] [Thread-114594] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:01:21.023 [DEBUG] [Thread-114594] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:01:21.023 [DEBUG] [Thread-114594] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:01:21.024 [DEBUG] [Thread-114594] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:01:21.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:01:21.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:01:21.082 [DEBUG] [Thread-114594] [transport.py] [_log()] userauth is OK
2025-11-03T11:01:21.082 [DEBUG] [Thread-114594] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:01:21.082 [DEBUG] [Thread-114594] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:01:21.082 [DEBUG] [Thread-114594] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:01:21.082 [DEBUG] [Thread-114594] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:01:21.107 [INFO] [Thread-114594] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:01:21.117 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:01:21.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:01:21.972 [DEBUG] [Thread-114594] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:01:21.973 [DEBUG] [Thread-114594] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:01:22.021 [DEBUG] [Thread-114594] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:01:22.021 [DEBUG] [Thread-114594] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:01:22.031 [DEBUG] [Thread-114594] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:01:22.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:01:22.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:01:22.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:01:22.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:01:22.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:01:22.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:01:22.070 [DEBUG] [Thread-114594] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:01:27.198 [DEBUG] [Thread-114596 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:01:28.039 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:01:28.040 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:01:42.247 [DEBUG] [Thread-114597 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:01:52.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:01:52.067 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:01:52.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:01:52.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 1, 46), 39.52, 5.96, 0.0, 30.26, 23.14, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:01:52.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:01:46
2025-11-03T11:01:52.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:01:53.045 [DEBUG] [Thread-114598] [transport.py] [_log()] starting thread (client mode): 0xedb2da0
2025-11-03T11:01:53.045 [DEBUG] [Thread-114598] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:01:53.059 [DEBUG] [Thread-114598] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:01:53.059 [INFO] [Thread-114598] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:01:53.061 [DEBUG] [Thread-114598] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:01:53.061 [DEBUG] [Thread-114598] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:01:53.061 [DEBUG] [Thread-114598] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:01:53.061 [DEBUG] [Thread-114598] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:01:53.061 [DEBUG] [Thread-114598] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:01:53.061 [DEBUG] [Thread-114598] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:01:53.061 [DEBUG] [Thread-114598] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:01:53.061 [DEBUG] [Thread-114598] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:01:53.061 [DEBUG] [Thread-114598] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:01:53.061 [DEBUG] [Thread-114598] [transport.py] [_log()] client lang: <none>
2025-11-03T11:01:53.061 [DEBUG] [Thread-114598] [transport.py] [_log()] server lang: <none>
2025-11-03T11:01:53.061 [DEBUG] [Thread-114598] [transport.py] [_log()] kex follows: False
2025-11-03T11:01:53.061 [DEBUG] [Thread-114598] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:01:53.061 [DEBUG] [Thread-114598] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:01:53.061 [DEBUG] [Thread-114598] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:01:53.061 [DEBUG] [Thread-114598] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:01:53.061 [DEBUG] [Thread-114598] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:01:53.061 [DEBUG] [Thread-114598] [transport.py] [_log()] Compression: none
2025-11-03T11:01:53.061 [DEBUG] [Thread-114598] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:01:53.070 [DEBUG] [Thread-114598] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:01:53.070 [DEBUG] [Thread-114598] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:01:53.070 [DEBUG] [Thread-114598] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:01:53.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:01:53.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:01:53.072 [DEBUG] [Thread-114598] [transport.py] [_log()] userauth is OK
2025-11-03T11:01:53.072 [DEBUG] [Thread-114598] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:01:53.072 [DEBUG] [Thread-114598] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:01:53.072 [DEBUG] [Thread-114598] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:01:53.072 [DEBUG] [Thread-114598] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:01:53.088 [INFO] [Thread-114598] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:01:53.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:01:53.721 [DEBUG] [Thread-114598] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:01:53.722 [DEBUG] [Thread-114598] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:01:53.722 [DEBUG] [Thread-114598] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:01:53.763 [DEBUG] [Thread-114598] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:01:53.763 [DEBUG] [Thread-114598] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:01:53.766 [DEBUG] [Thread-114598] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:01:53.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:01:53.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:01:53.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:01:53.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:01:53.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:01:53.790 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:01:53.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:01:53.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:01:53.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:01:53.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.376134 -999.00  +22.70  19.53     11   -9.00 1 1 1 1 1   888    0 32.66 50.34 ----- 23.8 19.5 8.5 37.2 28.4 -29.6 27.3 -28.6 26.4 -29.0 27.1 -29.2
2025-11-03T11:01:53.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:01:53.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:01:53.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.376134
2025-11-03T11:01:53.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:01:53.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:01:53.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:01:53.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:01:53.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:01:53.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:01:46', tmtdew=39.52, humidity=5.96, cloud=0.0, wind=30.26, temperature=23.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:01:37.978', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:01:53.793 [DEBUG] [Thread-114598] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:01:53.878 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:01:53.889 [DEBUG] [Thread-114601] [transport.py] [_log()] starting thread (client mode): 0xedb0910
2025-11-03T11:01:53.889 [DEBUG] [Thread-114601] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:01:53.908 [DEBUG] [Thread-114601] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:01:53.908 [INFO] [Thread-114601] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:01:53.916 [DEBUG] [Thread-114601] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:01:53.916 [DEBUG] [Thread-114601] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:01:53.916 [DEBUG] [Thread-114601] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:01:53.916 [DEBUG] [Thread-114601] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:01:53.916 [DEBUG] [Thread-114601] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:01:53.916 [DEBUG] [Thread-114601] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:01:53.916 [DEBUG] [Thread-114601] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:01:53.916 [DEBUG] [Thread-114601] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:01:53.916 [DEBUG] [Thread-114601] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:01:53.916 [DEBUG] [Thread-114601] [transport.py] [_log()] client lang: <none>
2025-11-03T11:01:53.917 [DEBUG] [Thread-114601] [transport.py] [_log()] server lang: <none>
2025-11-03T11:01:53.917 [DEBUG] [Thread-114601] [transport.py] [_log()] kex follows: False
2025-11-03T11:01:53.917 [DEBUG] [Thread-114601] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:01:53.917 [DEBUG] [Thread-114601] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:01:53.917 [DEBUG] [Thread-114601] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:01:53.917 [DEBUG] [Thread-114601] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:01:53.917 [DEBUG] [Thread-114601] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:01:53.917 [DEBUG] [Thread-114601] [transport.py] [_log()] Compression: none
2025-11-03T11:01:53.917 [DEBUG] [Thread-114601] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:01:53.975 [DEBUG] [Thread-114601] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:01:53.976 [DEBUG] [Thread-114601] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:01:53.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:01:53.977 [DEBUG] [Thread-114601] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:01:53.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:01:54.034 [DEBUG] [Thread-114601] [transport.py] [_log()] userauth is OK
2025-11-03T11:01:54.035 [DEBUG] [Thread-114601] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:01:54.035 [DEBUG] [Thread-114601] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:01:54.035 [DEBUG] [Thread-114601] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:01:54.035 [DEBUG] [Thread-114601] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:01:54.054 [INFO] [Thread-114601] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:01:54.054 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:01:54.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:01:54.923 [DEBUG] [Thread-114601] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:01:54.924 [DEBUG] [Thread-114601] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:01:54.972 [DEBUG] [Thread-114601] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:01:54.972 [DEBUG] [Thread-114601] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:01:54.981 [DEBUG] [Thread-114601] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:01:54.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:01:54.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:01:55.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:01:55.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:01:55.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:01:55.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:01:55.019 [DEBUG] [Thread-114601] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:01:55.079 [DEBUG] [Thread-114603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:01:57.281 [DEBUG] [Thread-114604 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:02:12.336 [DEBUG] [Thread-114605 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:02:25.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:02:25.042 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:02:25.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:02:25.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 2, 18), 39.35, 6.03, 0.0, 27.72, 23.03, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:02:25.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:02:18
2025-11-03T11:02:25.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:02:25.997 [DEBUG] [Thread-114606] [transport.py] [_log()] starting thread (client mode): 0xed411e0
2025-11-03T11:02:25.997 [DEBUG] [Thread-114606] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:02:26.017 [DEBUG] [Thread-114606] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:02:26.017 [INFO] [Thread-114606] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:02:26.020 [DEBUG] [Thread-114606] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:02:26.020 [DEBUG] [Thread-114606] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:02:26.020 [DEBUG] [Thread-114606] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:02:26.020 [DEBUG] [Thread-114606] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:02:26.020 [DEBUG] [Thread-114606] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:02:26.020 [DEBUG] [Thread-114606] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:02:26.020 [DEBUG] [Thread-114606] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:02:26.020 [DEBUG] [Thread-114606] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:02:26.020 [DEBUG] [Thread-114606] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:02:26.020 [DEBUG] [Thread-114606] [transport.py] [_log()] client lang: <none>
2025-11-03T11:02:26.020 [DEBUG] [Thread-114606] [transport.py] [_log()] server lang: <none>
2025-11-03T11:02:26.020 [DEBUG] [Thread-114606] [transport.py] [_log()] kex follows: False
2025-11-03T11:02:26.020 [DEBUG] [Thread-114606] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:02:26.020 [DEBUG] [Thread-114606] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:02:26.020 [DEBUG] [Thread-114606] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:02:26.020 [DEBUG] [Thread-114606] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:02:26.020 [DEBUG] [Thread-114606] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:02:26.020 [DEBUG] [Thread-114606] [transport.py] [_log()] Compression: none
2025-11-03T11:02:26.020 [DEBUG] [Thread-114606] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:02:26.037 [DEBUG] [Thread-114606] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:02:26.037 [DEBUG] [Thread-114606] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:02:26.038 [DEBUG] [Thread-114606] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:02:26.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:02:26.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:02:26.040 [DEBUG] [Thread-114606] [transport.py] [_log()] userauth is OK
2025-11-03T11:02:26.040 [DEBUG] [Thread-114606] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:02:26.040 [DEBUG] [Thread-114606] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:02:26.040 [DEBUG] [Thread-114606] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:02:26.040 [DEBUG] [Thread-114606] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:02:26.058 [INFO] [Thread-114606] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:02:26.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:02:26.674 [DEBUG] [Thread-114606] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:02:26.675 [DEBUG] [Thread-114606] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:02:26.675 [DEBUG] [Thread-114606] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:02:26.716 [DEBUG] [Thread-114606] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:02:26.716 [DEBUG] [Thread-114606] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:02:26.719 [DEBUG] [Thread-114606] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:02:26.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:02:26.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:02:26.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:02:26.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:02:26.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:02:26.736 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:02:26.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:02:26.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:02:26.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:02:26.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.376482 -999.00  +22.50  26.40     11   -8.90 1 1 1 1 1   888    0 32.25 48.08 ----- 24.6 26.4 20.3 29.8 28.2 -30.2 27.2 -30.6 26.4 -27.7 26.9 -30.3
2025-11-03T11:02:26.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:02:26.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:02:26.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.376482
2025-11-03T11:02:26.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:02:26.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:02:26.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:02:26.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:02:26.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:02:26.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:02:18', tmtdew=39.35, humidity=6.03, cloud=0.0, wind=27.72, temperature=23.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:02:08.045', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:02:26.740 [DEBUG] [Thread-114606] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:02:26.822 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:02:26.835 [DEBUG] [Thread-114609] [transport.py] [_log()] starting thread (client mode): 0xed35d50
2025-11-03T11:02:26.836 [DEBUG] [Thread-114609] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:02:26.851 [DEBUG] [Thread-114609] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:02:26.851 [INFO] [Thread-114609] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:02:26.858 [DEBUG] [Thread-114609] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:02:26.858 [DEBUG] [Thread-114609] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:02:26.858 [DEBUG] [Thread-114609] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:02:26.859 [DEBUG] [Thread-114609] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:02:26.859 [DEBUG] [Thread-114609] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:02:26.859 [DEBUG] [Thread-114609] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:02:26.859 [DEBUG] [Thread-114609] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:02:26.859 [DEBUG] [Thread-114609] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:02:26.859 [DEBUG] [Thread-114609] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:02:26.859 [DEBUG] [Thread-114609] [transport.py] [_log()] client lang: <none>
2025-11-03T11:02:26.859 [DEBUG] [Thread-114609] [transport.py] [_log()] server lang: <none>
2025-11-03T11:02:26.859 [DEBUG] [Thread-114609] [transport.py] [_log()] kex follows: False
2025-11-03T11:02:26.859 [DEBUG] [Thread-114609] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:02:26.859 [DEBUG] [Thread-114609] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:02:26.859 [DEBUG] [Thread-114609] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:02:26.859 [DEBUG] [Thread-114609] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:02:26.859 [DEBUG] [Thread-114609] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:02:26.859 [DEBUG] [Thread-114609] [transport.py] [_log()] Compression: none
2025-11-03T11:02:26.859 [DEBUG] [Thread-114609] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:02:26.918 [DEBUG] [Thread-114609] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:02:26.919 [DEBUG] [Thread-114609] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:02:26.920 [DEBUG] [Thread-114609] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:02:26.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:02:26.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:02:26.975 [DEBUG] [Thread-114609] [transport.py] [_log()] userauth is OK
2025-11-03T11:02:26.975 [DEBUG] [Thread-114609] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:02:26.975 [DEBUG] [Thread-114609] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:02:26.975 [DEBUG] [Thread-114609] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:02:26.975 [DEBUG] [Thread-114609] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:02:26.994 [INFO] [Thread-114609] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:02:26.995 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:02:26.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:02:27.374 [DEBUG] [Thread-114611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:02:27.881 [DEBUG] [Thread-114609] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:02:27.881 [DEBUG] [Thread-114609] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:02:27.928 [DEBUG] [Thread-114609] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:02:27.929 [DEBUG] [Thread-114609] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:02:27.937 [DEBUG] [Thread-114609] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:02:27.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:02:27.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:02:27.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:02:27.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:02:27.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:02:27.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:02:27.973 [DEBUG] [Thread-114609] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:02:28.181 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:02:28.182 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:02:42.429 [DEBUG] [Thread-114612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:02:55.132 [DEBUG] [Thread-114613 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:02:57.458 [DEBUG] [Thread-114614 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:02:57.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:02:57.996 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:02:58.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:02:58.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 2, 51), 39.03, 6.15, 0.0, 24.51, 22.78, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:02:58.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:02:51
2025-11-03T11:02:58.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:02:58.941 [DEBUG] [Thread-114615] [transport.py] [_log()] starting thread (client mode): 0xed378b0
2025-11-03T11:02:58.941 [DEBUG] [Thread-114615] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:02:58.961 [DEBUG] [Thread-114615] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:02:58.961 [INFO] [Thread-114615] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:02:58.964 [DEBUG] [Thread-114615] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:02:58.964 [DEBUG] [Thread-114615] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:02:58.964 [DEBUG] [Thread-114615] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:02:58.964 [DEBUG] [Thread-114615] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:02:58.964 [DEBUG] [Thread-114615] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:02:58.964 [DEBUG] [Thread-114615] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:02:58.964 [DEBUG] [Thread-114615] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:02:58.964 [DEBUG] [Thread-114615] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:02:58.964 [DEBUG] [Thread-114615] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:02:58.964 [DEBUG] [Thread-114615] [transport.py] [_log()] client lang: <none>
2025-11-03T11:02:58.964 [DEBUG] [Thread-114615] [transport.py] [_log()] server lang: <none>
2025-11-03T11:02:58.964 [DEBUG] [Thread-114615] [transport.py] [_log()] kex follows: False
2025-11-03T11:02:58.964 [DEBUG] [Thread-114615] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:02:58.964 [DEBUG] [Thread-114615] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:02:58.965 [DEBUG] [Thread-114615] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:02:58.965 [DEBUG] [Thread-114615] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:02:58.965 [DEBUG] [Thread-114615] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:02:58.965 [DEBUG] [Thread-114615] [transport.py] [_log()] Compression: none
2025-11-03T11:02:58.965 [DEBUG] [Thread-114615] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:02:58.972 [DEBUG] [Thread-114615] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:02:58.972 [DEBUG] [Thread-114615] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:02:58.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:02:58.973 [DEBUG] [Thread-114615] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:02:58.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:02:58.973 [DEBUG] [Thread-114615] [transport.py] [_log()] userauth is OK
2025-11-03T11:02:58.973 [DEBUG] [Thread-114615] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:02:58.973 [DEBUG] [Thread-114615] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:02:58.973 [DEBUG] [Thread-114615] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:02:58.973 [DEBUG] [Thread-114615] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:02:58.983 [INFO] [Thread-114615] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:02:58.983 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:02:59.566 [DEBUG] [Thread-114615] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:02:59.567 [DEBUG] [Thread-114615] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:02:59.567 [DEBUG] [Thread-114615] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:02:59.608 [DEBUG] [Thread-114615] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:02:59.608 [DEBUG] [Thread-114615] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:02:59.612 [DEBUG] [Thread-114615] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:02:59.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:02:59.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:02:59.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:02:59.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:02:59.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:02:59.631 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:02:59.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:02:59.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:02:59.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:02:59.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.376829 -999.00  +22.70  28.07     11   -8.60 1 1 1 1 1   888    0 31.91 45.81 ----- 18.5 28.1 18.4 30.8 28.3 -29.9 27.1 -30.1 26.4 -28.0 27.1 -28.7
2025-11-03T11:02:59.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:02:59.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:02:59.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.376829
2025-11-03T11:02:59.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:02:59.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:02:59.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:02:59.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:02:59.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:02:59.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:02:51', tmtdew=39.03, humidity=6.15, cloud=0.0, wind=24.51, temperature=22.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:02:38.026', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:02:59.634 [DEBUG] [Thread-114615] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:02:59.718 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:02:59.732 [DEBUG] [Thread-114618] [transport.py] [_log()] starting thread (client mode): 0xed43a00
2025-11-03T11:02:59.732 [DEBUG] [Thread-114618] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:02:59.750 [DEBUG] [Thread-114618] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:02:59.750 [INFO] [Thread-114618] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:02:59.763 [DEBUG] [Thread-114618] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:02:59.763 [DEBUG] [Thread-114618] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:02:59.764 [DEBUG] [Thread-114618] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:02:59.764 [DEBUG] [Thread-114618] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:02:59.764 [DEBUG] [Thread-114618] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:02:59.764 [DEBUG] [Thread-114618] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:02:59.764 [DEBUG] [Thread-114618] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:02:59.764 [DEBUG] [Thread-114618] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:02:59.764 [DEBUG] [Thread-114618] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:02:59.764 [DEBUG] [Thread-114618] [transport.py] [_log()] client lang: <none>
2025-11-03T11:02:59.765 [DEBUG] [Thread-114618] [transport.py] [_log()] server lang: <none>
2025-11-03T11:02:59.765 [DEBUG] [Thread-114618] [transport.py] [_log()] kex follows: False
2025-11-03T11:02:59.765 [DEBUG] [Thread-114618] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:02:59.765 [DEBUG] [Thread-114618] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:02:59.765 [DEBUG] [Thread-114618] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:02:59.765 [DEBUG] [Thread-114618] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:02:59.766 [DEBUG] [Thread-114618] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:02:59.766 [DEBUG] [Thread-114618] [transport.py] [_log()] Compression: none
2025-11-03T11:02:59.766 [DEBUG] [Thread-114618] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:02:59.825 [DEBUG] [Thread-114618] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:02:59.826 [DEBUG] [Thread-114618] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:02:59.826 [DEBUG] [Thread-114618] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:02:59.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:02:59.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:02:59.887 [DEBUG] [Thread-114618] [transport.py] [_log()] userauth is OK
2025-11-03T11:02:59.887 [DEBUG] [Thread-114618] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:02:59.887 [DEBUG] [Thread-114618] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:02:59.887 [DEBUG] [Thread-114618] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:02:59.887 [DEBUG] [Thread-114618] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:02:59.912 [INFO] [Thread-114618] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:02:59.912 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:02:59.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:03:00.768 [DEBUG] [Thread-114618] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:03:00.769 [DEBUG] [Thread-114618] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:03:00.816 [DEBUG] [Thread-114618] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:03:00.817 [DEBUG] [Thread-114618] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:03:00.825 [DEBUG] [Thread-114618] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:03:00.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:03:00.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:03:00.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:03:00.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:03:00.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:03:00.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:03:00.861 [DEBUG] [Thread-114618] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:03:12.492 [DEBUG] [Thread-114620 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:03:27.543 [DEBUG] [Thread-114621 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:03:28.322 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:03:28.323 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:03:30.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:03:30.883 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:03:30.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:03:31.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 3, 23), 38.89, 6.18, 0.0, 25.16, 22.51, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:03:31.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:03:23
2025-11-03T11:03:31.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:03:31.886 [DEBUG] [Thread-114622] [transport.py] [_log()] starting thread (client mode): 0xed34ee0
2025-11-03T11:03:31.886 [DEBUG] [Thread-114622] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:03:31.905 [DEBUG] [Thread-114622] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:03:31.906 [INFO] [Thread-114622] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:03:31.909 [DEBUG] [Thread-114622] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:03:31.909 [DEBUG] [Thread-114622] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:03:31.909 [DEBUG] [Thread-114622] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:03:31.909 [DEBUG] [Thread-114622] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:03:31.909 [DEBUG] [Thread-114622] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:03:31.909 [DEBUG] [Thread-114622] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:03:31.909 [DEBUG] [Thread-114622] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:03:31.909 [DEBUG] [Thread-114622] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:03:31.909 [DEBUG] [Thread-114622] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:03:31.909 [DEBUG] [Thread-114622] [transport.py] [_log()] client lang: <none>
2025-11-03T11:03:31.909 [DEBUG] [Thread-114622] [transport.py] [_log()] server lang: <none>
2025-11-03T11:03:31.909 [DEBUG] [Thread-114622] [transport.py] [_log()] kex follows: False
2025-11-03T11:03:31.909 [DEBUG] [Thread-114622] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:03:31.909 [DEBUG] [Thread-114622] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:03:31.909 [DEBUG] [Thread-114622] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:03:31.909 [DEBUG] [Thread-114622] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:03:31.909 [DEBUG] [Thread-114622] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:03:31.909 [DEBUG] [Thread-114622] [transport.py] [_log()] Compression: none
2025-11-03T11:03:31.909 [DEBUG] [Thread-114622] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:03:31.918 [DEBUG] [Thread-114622] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:03:31.918 [DEBUG] [Thread-114622] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:03:31.918 [DEBUG] [Thread-114622] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:03:31.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:03:31.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:03:31.919 [DEBUG] [Thread-114622] [transport.py] [_log()] userauth is OK
2025-11-03T11:03:31.919 [DEBUG] [Thread-114622] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:03:31.919 [DEBUG] [Thread-114622] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:03:31.919 [DEBUG] [Thread-114622] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:03:31.919 [DEBUG] [Thread-114622] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:03:31.928 [INFO] [Thread-114622] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:03:31.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:03:32.509 [DEBUG] [Thread-114622] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:03:32.509 [DEBUG] [Thread-114622] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:03:32.509 [DEBUG] [Thread-114622] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:03:32.550 [DEBUG] [Thread-114622] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:03:32.550 [DEBUG] [Thread-114622] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:03:32.552 [DEBUG] [Thread-114622] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:03:32.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:03:32.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:03:32.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:03:32.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:03:32.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:03:32.568 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:03:32.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:03:32.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:03:32.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:03:32.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.377176 -999.00  +22.80  19.22     11   -8.70 1 1 1 1 1   888    0 32.41 46.73 ----- 28.4 19.2 346.7 28.5 28.3 -29.5 27.2 -28.5 26.4 -28.6 27.1 -27.9
2025-11-03T11:03:32.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:03:32.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:03:32.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.377176
2025-11-03T11:03:32.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:03:32.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:03:32.569 [DEBUG] [Thread-114622] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:03:32.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:03:32.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:03:32.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:03:32.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:03:23', tmtdew=38.89, humidity=6.18, cloud=0.0, wind=25.16, temperature=22.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:03:08.006', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:03:32.646 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:03:32.658 [DEBUG] [Thread-114625] [transport.py] [_log()] starting thread (client mode): 0xed06920
2025-11-03T11:03:32.658 [DEBUG] [Thread-114625] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:03:32.673 [DEBUG] [Thread-114625] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:03:32.673 [INFO] [Thread-114625] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:03:32.681 [DEBUG] [Thread-114625] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:03:32.681 [DEBUG] [Thread-114625] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:03:32.681 [DEBUG] [Thread-114625] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:03:32.681 [DEBUG] [Thread-114625] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:03:32.681 [DEBUG] [Thread-114625] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:03:32.681 [DEBUG] [Thread-114625] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:03:32.681 [DEBUG] [Thread-114625] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:03:32.681 [DEBUG] [Thread-114625] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:03:32.681 [DEBUG] [Thread-114625] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:03:32.681 [DEBUG] [Thread-114625] [transport.py] [_log()] client lang: <none>
2025-11-03T11:03:32.681 [DEBUG] [Thread-114625] [transport.py] [_log()] server lang: <none>
2025-11-03T11:03:32.681 [DEBUG] [Thread-114625] [transport.py] [_log()] kex follows: False
2025-11-03T11:03:32.681 [DEBUG] [Thread-114625] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:03:32.681 [DEBUG] [Thread-114625] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:03:32.681 [DEBUG] [Thread-114625] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:03:32.681 [DEBUG] [Thread-114625] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:03:32.681 [DEBUG] [Thread-114625] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:03:32.681 [DEBUG] [Thread-114625] [transport.py] [_log()] Compression: none
2025-11-03T11:03:32.682 [DEBUG] [Thread-114625] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:03:32.738 [DEBUG] [Thread-114625] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:03:32.738 [DEBUG] [Thread-114625] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:03:32.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:03:32.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:03:32.738 [DEBUG] [Thread-114625] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:03:32.794 [DEBUG] [Thread-114625] [transport.py] [_log()] userauth is OK
2025-11-03T11:03:32.794 [DEBUG] [Thread-114625] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:03:32.794 [DEBUG] [Thread-114625] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:03:32.794 [DEBUG] [Thread-114625] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:03:32.794 [DEBUG] [Thread-114625] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:03:32.808 [INFO] [Thread-114625] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:03:32.809 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:03:32.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:03:33.629 [DEBUG] [Thread-114625] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:03:33.629 [DEBUG] [Thread-114625] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:03:33.678 [DEBUG] [Thread-114625] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:03:33.678 [DEBUG] [Thread-114625] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:03:33.686 [DEBUG] [Thread-114625] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:03:33.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:03:33.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:03:33.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:03:33.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:03:33.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:03:33.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:03:33.718 [DEBUG] [Thread-114625] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:03:42.574 [DEBUG] [Thread-114627 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:03:55.177 [DEBUG] [Thread-114628 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:03:57.624 [DEBUG] [Thread-114629 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:04:03.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:04:03.741 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:04:03.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:04:04.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 3, 55), 39.0, 6.15, 0.0, 27.98, 22.61, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:04:04.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:03:55
2025-11-03T11:04:04.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:04:04.687 [DEBUG] [Thread-114630] [transport.py] [_log()] starting thread (client mode): 0xed43f40
2025-11-03T11:04:04.687 [DEBUG] [Thread-114630] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:04:04.708 [DEBUG] [Thread-114630] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:04:04.708 [INFO] [Thread-114630] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:04:04.712 [DEBUG] [Thread-114630] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:04:04.712 [DEBUG] [Thread-114630] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:04:04.712 [DEBUG] [Thread-114630] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:04:04.712 [DEBUG] [Thread-114630] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:04:04.712 [DEBUG] [Thread-114630] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:04:04.712 [DEBUG] [Thread-114630] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:04:04.712 [DEBUG] [Thread-114630] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:04:04.712 [DEBUG] [Thread-114630] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:04:04.712 [DEBUG] [Thread-114630] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:04:04.713 [DEBUG] [Thread-114630] [transport.py] [_log()] client lang: <none>
2025-11-03T11:04:04.713 [DEBUG] [Thread-114630] [transport.py] [_log()] server lang: <none>
2025-11-03T11:04:04.713 [DEBUG] [Thread-114630] [transport.py] [_log()] kex follows: False
2025-11-03T11:04:04.713 [DEBUG] [Thread-114630] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:04:04.713 [DEBUG] [Thread-114630] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:04:04.713 [DEBUG] [Thread-114630] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:04:04.713 [DEBUG] [Thread-114630] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:04:04.713 [DEBUG] [Thread-114630] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:04:04.713 [DEBUG] [Thread-114630] [transport.py] [_log()] Compression: none
2025-11-03T11:04:04.713 [DEBUG] [Thread-114630] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:04:04.728 [DEBUG] [Thread-114630] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:04:04.729 [DEBUG] [Thread-114630] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:04:04.730 [DEBUG] [Thread-114630] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:04:04.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:04:04.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:04:04.733 [DEBUG] [Thread-114630] [transport.py] [_log()] userauth is OK
2025-11-03T11:04:04.733 [DEBUG] [Thread-114630] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:04:04.733 [DEBUG] [Thread-114630] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:04:04.733 [DEBUG] [Thread-114630] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:04:04.734 [DEBUG] [Thread-114630] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:04:04.759 [INFO] [Thread-114630] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:04:04.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:04:05.414 [DEBUG] [Thread-114630] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:04:05.415 [DEBUG] [Thread-114630] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:04:05.415 [DEBUG] [Thread-114630] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:04:05.456 [DEBUG] [Thread-114630] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:04:05.456 [DEBUG] [Thread-114630] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:04:05.460 [DEBUG] [Thread-114630] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:04:05.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:04:05.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:04:05.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:04:05.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:04:05.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:04:05.483 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:04:05.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:04:05.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:04:05.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:04:05.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.377176 -999.00  +22.80  19.22     11   -8.70 1 1 1 1 1   888    0 32.41 46.73 ----- 28.4 19.2 346.7 28.5 28.3 -29.5 27.2 -28.5 26.4 -28.6 27.1 -27.9
2025-11-03T11:04:05.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:04:05.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:04:05.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.377176
2025-11-03T11:04:05.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:04:05.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:04:05.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:04:05.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:04:05.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:04:05.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:03:55', tmtdew=39.0, humidity=6.15, cloud=0.0, wind=27.98, temperature=22.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:03:08.006', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:04:05.487 [DEBUG] [Thread-114630] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:04:05.570 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:04:05.583 [DEBUG] [Thread-114633] [transport.py] [_log()] starting thread (client mode): 0xed5ca60
2025-11-03T11:04:05.583 [DEBUG] [Thread-114633] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:04:05.602 [DEBUG] [Thread-114633] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:04:05.603 [INFO] [Thread-114633] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:04:05.611 [DEBUG] [Thread-114633] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:04:05.611 [DEBUG] [Thread-114633] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:04:05.611 [DEBUG] [Thread-114633] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:04:05.611 [DEBUG] [Thread-114633] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:04:05.611 [DEBUG] [Thread-114633] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:04:05.612 [DEBUG] [Thread-114633] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:04:05.612 [DEBUG] [Thread-114633] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:04:05.612 [DEBUG] [Thread-114633] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:04:05.612 [DEBUG] [Thread-114633] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:04:05.612 [DEBUG] [Thread-114633] [transport.py] [_log()] client lang: <none>
2025-11-03T11:04:05.612 [DEBUG] [Thread-114633] [transport.py] [_log()] server lang: <none>
2025-11-03T11:04:05.612 [DEBUG] [Thread-114633] [transport.py] [_log()] kex follows: False
2025-11-03T11:04:05.612 [DEBUG] [Thread-114633] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:04:05.612 [DEBUG] [Thread-114633] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:04:05.613 [DEBUG] [Thread-114633] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:04:05.613 [DEBUG] [Thread-114633] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:04:05.613 [DEBUG] [Thread-114633] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:04:05.613 [DEBUG] [Thread-114633] [transport.py] [_log()] Compression: none
2025-11-03T11:04:05.613 [DEBUG] [Thread-114633] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:04:05.673 [DEBUG] [Thread-114633] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:04:05.674 [DEBUG] [Thread-114633] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:04:05.675 [DEBUG] [Thread-114633] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:04:05.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:04:05.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:04:05.736 [DEBUG] [Thread-114633] [transport.py] [_log()] userauth is OK
2025-11-03T11:04:05.736 [DEBUG] [Thread-114633] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:04:05.737 [DEBUG] [Thread-114633] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:04:05.737 [DEBUG] [Thread-114633] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:04:05.737 [DEBUG] [Thread-114633] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:04:05.757 [INFO] [Thread-114633] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:04:05.758 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:04:05.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:04:06.608 [DEBUG] [Thread-114633] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:04:06.608 [DEBUG] [Thread-114633] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:04:06.656 [DEBUG] [Thread-114633] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:04:06.656 [DEBUG] [Thread-114633] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:04:06.665 [DEBUG] [Thread-114633] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:04:06.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:04:06.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:04:06.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:04:06.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:04:06.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:04:06.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:04:06.700 [DEBUG] [Thread-114633] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:04:12.654 [DEBUG] [Thread-114635 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:04:27.692 [DEBUG] [Thread-114636 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:04:28.462 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:04:28.462 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:04:36.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:04:36.721 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:04:36.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:04:37.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 4, 27), 39.05, 6.13, 0.0, 24.47, 22.68, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:04:37.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:04:27
2025-11-03T11:04:37.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:04:37.655 [DEBUG] [Thread-114637] [transport.py] [_log()] starting thread (client mode): 0xed5e620
2025-11-03T11:04:37.655 [DEBUG] [Thread-114637] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:04:37.674 [DEBUG] [Thread-114637] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:04:37.674 [INFO] [Thread-114637] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:04:37.677 [DEBUG] [Thread-114637] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:04:37.677 [DEBUG] [Thread-114637] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:04:37.677 [DEBUG] [Thread-114637] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:04:37.677 [DEBUG] [Thread-114637] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:04:37.677 [DEBUG] [Thread-114637] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:04:37.677 [DEBUG] [Thread-114637] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:04:37.677 [DEBUG] [Thread-114637] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:04:37.677 [DEBUG] [Thread-114637] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:04:37.677 [DEBUG] [Thread-114637] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:04:37.677 [DEBUG] [Thread-114637] [transport.py] [_log()] client lang: <none>
2025-11-03T11:04:37.677 [DEBUG] [Thread-114637] [transport.py] [_log()] server lang: <none>
2025-11-03T11:04:37.677 [DEBUG] [Thread-114637] [transport.py] [_log()] kex follows: False
2025-11-03T11:04:37.677 [DEBUG] [Thread-114637] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:04:37.677 [DEBUG] [Thread-114637] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:04:37.677 [DEBUG] [Thread-114637] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:04:37.677 [DEBUG] [Thread-114637] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:04:37.677 [DEBUG] [Thread-114637] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:04:37.677 [DEBUG] [Thread-114637] [transport.py] [_log()] Compression: none
2025-11-03T11:04:37.677 [DEBUG] [Thread-114637] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:04:37.694 [DEBUG] [Thread-114637] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:04:37.695 [DEBUG] [Thread-114637] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:04:37.696 [DEBUG] [Thread-114637] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:04:37.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:04:37.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:04:37.698 [DEBUG] [Thread-114637] [transport.py] [_log()] userauth is OK
2025-11-03T11:04:37.698 [DEBUG] [Thread-114637] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:04:37.698 [DEBUG] [Thread-114637] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:04:37.698 [DEBUG] [Thread-114637] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:04:37.698 [DEBUG] [Thread-114637] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:04:37.723 [INFO] [Thread-114637] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:04:37.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:04:38.354 [DEBUG] [Thread-114637] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:04:38.354 [DEBUG] [Thread-114637] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:04:38.354 [DEBUG] [Thread-114637] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:04:38.395 [DEBUG] [Thread-114637] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:04:38.396 [DEBUG] [Thread-114637] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:04:38.398 [DEBUG] [Thread-114637] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:04:38.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:04:38.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:04:38.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:04:38.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:04:38.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:04:38.418 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:04:38.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:04:38.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:04:38.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:04:38.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.377523 -999.00  +22.80  19.79     11   -8.50 1 1 1 1 1   888    0 32.47 44.52 ----- 26.6 19.8 3.5 27.8 28.3 -29.4 27.2 -29.9 26.4 -27.9 27.0 -29.2
2025-11-03T11:04:38.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:04:38.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:04:38.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.377523
2025-11-03T11:04:38.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:04:38.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:04:38.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:04:38.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:04:38.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:04:38.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:04:27', tmtdew=39.05, humidity=6.13, cloud=0.0, wind=24.47, temperature=22.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:03:37.987', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:04:38.419 [DEBUG] [Thread-114637] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:04:38.490 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:04:38.502 [DEBUG] [Thread-114640] [transport.py] [_log()] starting thread (client mode): 0xedb23b0
2025-11-03T11:04:38.502 [DEBUG] [Thread-114640] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:04:38.516 [DEBUG] [Thread-114640] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:04:38.516 [INFO] [Thread-114640] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:04:38.524 [DEBUG] [Thread-114640] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:04:38.524 [DEBUG] [Thread-114640] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:04:38.524 [DEBUG] [Thread-114640] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:04:38.524 [DEBUG] [Thread-114640] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:04:38.524 [DEBUG] [Thread-114640] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:04:38.524 [DEBUG] [Thread-114640] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:04:38.524 [DEBUG] [Thread-114640] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:04:38.524 [DEBUG] [Thread-114640] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:04:38.524 [DEBUG] [Thread-114640] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:04:38.524 [DEBUG] [Thread-114640] [transport.py] [_log()] client lang: <none>
2025-11-03T11:04:38.524 [DEBUG] [Thread-114640] [transport.py] [_log()] server lang: <none>
2025-11-03T11:04:38.524 [DEBUG] [Thread-114640] [transport.py] [_log()] kex follows: False
2025-11-03T11:04:38.524 [DEBUG] [Thread-114640] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:04:38.524 [DEBUG] [Thread-114640] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:04:38.524 [DEBUG] [Thread-114640] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:04:38.524 [DEBUG] [Thread-114640] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:04:38.524 [DEBUG] [Thread-114640] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:04:38.524 [DEBUG] [Thread-114640] [transport.py] [_log()] Compression: none
2025-11-03T11:04:38.524 [DEBUG] [Thread-114640] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:04:38.581 [DEBUG] [Thread-114640] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:04:38.581 [DEBUG] [Thread-114640] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:04:38.582 [DEBUG] [Thread-114640] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:04:38.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:04:38.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:04:38.639 [DEBUG] [Thread-114640] [transport.py] [_log()] userauth is OK
2025-11-03T11:04:38.639 [DEBUG] [Thread-114640] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:04:38.639 [DEBUG] [Thread-114640] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:04:38.639 [DEBUG] [Thread-114640] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:04:38.639 [DEBUG] [Thread-114640] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:04:38.653 [INFO] [Thread-114640] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:04:38.653 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:04:38.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:04:39.512 [DEBUG] [Thread-114640] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:04:39.512 [DEBUG] [Thread-114640] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:04:39.560 [DEBUG] [Thread-114640] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:04:39.561 [DEBUG] [Thread-114640] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:04:39.569 [DEBUG] [Thread-114640] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:04:39.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:04:39.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:04:39.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:04:39.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:04:39.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:04:39.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:04:39.603 [DEBUG] [Thread-114640] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:04:42.736 [DEBUG] [Thread-114642 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:04:55.231 [DEBUG] [Thread-114643 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:04:57.783 [DEBUG] [Thread-114644 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:05:09.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:05:09.607 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:05:09.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:05:10.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 4, 27), 38.85, 6.13, 0.0, 22.67, 22.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:05:10.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:04:27
2025-11-03T11:05:10.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:05:10.584 [DEBUG] [Thread-114645] [transport.py] [_log()] starting thread (client mode): 0xed5caf0
2025-11-03T11:05:10.584 [DEBUG] [Thread-114645] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:05:10.600 [DEBUG] [Thread-114645] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:05:10.600 [INFO] [Thread-114645] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:05:10.604 [DEBUG] [Thread-114645] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:05:10.605 [DEBUG] [Thread-114645] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:05:10.605 [DEBUG] [Thread-114645] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:05:10.605 [DEBUG] [Thread-114645] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:05:10.605 [DEBUG] [Thread-114645] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:05:10.605 [DEBUG] [Thread-114645] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:05:10.605 [DEBUG] [Thread-114645] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:05:10.605 [DEBUG] [Thread-114645] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:05:10.605 [DEBUG] [Thread-114645] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:05:10.605 [DEBUG] [Thread-114645] [transport.py] [_log()] client lang: <none>
2025-11-03T11:05:10.605 [DEBUG] [Thread-114645] [transport.py] [_log()] server lang: <none>
2025-11-03T11:05:10.605 [DEBUG] [Thread-114645] [transport.py] [_log()] kex follows: False
2025-11-03T11:05:10.605 [DEBUG] [Thread-114645] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:05:10.605 [DEBUG] [Thread-114645] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:05:10.605 [DEBUG] [Thread-114645] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:05:10.605 [DEBUG] [Thread-114645] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:05:10.605 [DEBUG] [Thread-114645] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:05:10.605 [DEBUG] [Thread-114645] [transport.py] [_log()] Compression: none
2025-11-03T11:05:10.605 [DEBUG] [Thread-114645] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:05:10.623 [DEBUG] [Thread-114645] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:05:10.624 [DEBUG] [Thread-114645] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:05:10.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:05:10.625 [DEBUG] [Thread-114645] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:05:10.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:05:10.627 [DEBUG] [Thread-114645] [transport.py] [_log()] userauth is OK
2025-11-03T11:05:10.627 [DEBUG] [Thread-114645] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:05:10.627 [DEBUG] [Thread-114645] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:05:10.627 [DEBUG] [Thread-114645] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:05:10.628 [DEBUG] [Thread-114645] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:05:10.646 [INFO] [Thread-114645] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:05:10.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:05:12.816 [DEBUG] [Thread-114647 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:05:12.915 [DEBUG] [Thread-114645] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:05:12.916 [DEBUG] [Thread-114645] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:05:12.916 [DEBUG] [Thread-114645] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:05:12.957 [DEBUG] [Thread-114645] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:05:12.957 [DEBUG] [Thread-114645] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:05:12.961 [DEBUG] [Thread-114645] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:05:12.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:05:12.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:05:12.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:05:12.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:05:12.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:05:12.998 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:05:12.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:05:12.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:05:12.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:05:12.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.378218 -999.00  +22.40  12.00     11   -9.00 1 1 1 1 1   888    0 32.59 41.37 ----- 15.4 12.0 28.9 28.4 28.2 -30.1 27.2 -30.5 26.4 -28.4 26.8 -31.7
2025-11-03T11:05:12.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:05:12.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:05:12.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.378218
2025-11-03T11:05:13.007 [DEBUG] [Thread-114645] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:05:13.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:05:13.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:05:13.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:05:13.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:05:13.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:05:13.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:04:27', tmtdew=38.85, humidity=6.13, cloud=0.0, wind=22.67, temperature=22.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:04:38.035', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:05:13.094 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:05:13.107 [DEBUG] [Thread-114649] [transport.py] [_log()] starting thread (client mode): 0xed424a0
2025-11-03T11:05:13.107 [DEBUG] [Thread-114649] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:05:13.121 [DEBUG] [Thread-114649] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:05:13.121 [INFO] [Thread-114649] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:05:13.130 [DEBUG] [Thread-114649] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:05:13.130 [DEBUG] [Thread-114649] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:05:13.130 [DEBUG] [Thread-114649] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:05:13.130 [DEBUG] [Thread-114649] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:05:13.130 [DEBUG] [Thread-114649] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:05:13.130 [DEBUG] [Thread-114649] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:05:13.131 [DEBUG] [Thread-114649] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:05:13.131 [DEBUG] [Thread-114649] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:05:13.131 [DEBUG] [Thread-114649] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:05:13.131 [DEBUG] [Thread-114649] [transport.py] [_log()] client lang: <none>
2025-11-03T11:05:13.131 [DEBUG] [Thread-114649] [transport.py] [_log()] server lang: <none>
2025-11-03T11:05:13.131 [DEBUG] [Thread-114649] [transport.py] [_log()] kex follows: False
2025-11-03T11:05:13.131 [DEBUG] [Thread-114649] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:05:13.131 [DEBUG] [Thread-114649] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:05:13.132 [DEBUG] [Thread-114649] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:05:13.132 [DEBUG] [Thread-114649] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:05:13.132 [DEBUG] [Thread-114649] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:05:13.132 [DEBUG] [Thread-114649] [transport.py] [_log()] Compression: none
2025-11-03T11:05:13.132 [DEBUG] [Thread-114649] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:05:13.188 [DEBUG] [Thread-114649] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:05:13.188 [DEBUG] [Thread-114649] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:05:13.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:05:13.189 [DEBUG] [Thread-114649] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:05:13.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:05:13.249 [DEBUG] [Thread-114649] [transport.py] [_log()] userauth is OK
2025-11-03T11:05:13.249 [DEBUG] [Thread-114649] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:05:13.249 [DEBUG] [Thread-114649] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:05:13.250 [DEBUG] [Thread-114649] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:05:13.250 [DEBUG] [Thread-114649] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:05:13.268 [INFO] [Thread-114649] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:05:13.268 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:05:13.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:05:14.113 [DEBUG] [Thread-114649] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:05:14.114 [DEBUG] [Thread-114649] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:05:14.164 [DEBUG] [Thread-114649] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:05:14.164 [DEBUG] [Thread-114649] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:05:14.176 [DEBUG] [Thread-114649] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:05:14.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:05:14.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:05:14.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:05:14.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:05:14.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:05:14.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:05:14.217 [DEBUG] [Thread-114649] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:05:27.862 [DEBUG] [Thread-114651 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:05:28.605 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:05:28.606 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:05:42.902 [DEBUG] [Thread-114652 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:05:44.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:05:44.239 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:05:44.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:05:44.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 5, 32), 39.06, 6.06, 0.0, 24.3, 22.68, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:05:44.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:05:32
2025-11-03T11:05:45.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:05:45.184 [DEBUG] [Thread-114653] [transport.py] [_log()] starting thread (client mode): 0xed05ae0
2025-11-03T11:05:45.184 [DEBUG] [Thread-114653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:05:45.204 [DEBUG] [Thread-114653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:05:45.204 [INFO] [Thread-114653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:05:45.207 [DEBUG] [Thread-114653] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:05:45.207 [DEBUG] [Thread-114653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:05:45.207 [DEBUG] [Thread-114653] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:05:45.207 [DEBUG] [Thread-114653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:05:45.207 [DEBUG] [Thread-114653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:05:45.207 [DEBUG] [Thread-114653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:05:45.208 [DEBUG] [Thread-114653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:05:45.208 [DEBUG] [Thread-114653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:05:45.208 [DEBUG] [Thread-114653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:05:45.208 [DEBUG] [Thread-114653] [transport.py] [_log()] client lang: <none>
2025-11-03T11:05:45.208 [DEBUG] [Thread-114653] [transport.py] [_log()] server lang: <none>
2025-11-03T11:05:45.208 [DEBUG] [Thread-114653] [transport.py] [_log()] kex follows: False
2025-11-03T11:05:45.208 [DEBUG] [Thread-114653] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:05:45.208 [DEBUG] [Thread-114653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:05:45.208 [DEBUG] [Thread-114653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:05:45.217 [DEBUG] [Thread-114653] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:05:45.217 [DEBUG] [Thread-114653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:05:45.217 [DEBUG] [Thread-114653] [transport.py] [_log()] Compression: none
2025-11-03T11:05:45.217 [DEBUG] [Thread-114653] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:05:45.228 [DEBUG] [Thread-114653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:05:45.229 [DEBUG] [Thread-114653] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:05:45.229 [DEBUG] [Thread-114653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:05:45.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:05:45.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:05:45.231 [DEBUG] [Thread-114653] [transport.py] [_log()] userauth is OK
2025-11-03T11:05:45.232 [DEBUG] [Thread-114653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:05:45.232 [DEBUG] [Thread-114653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:05:45.232 [DEBUG] [Thread-114653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:05:45.232 [DEBUG] [Thread-114653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:05:45.255 [INFO] [Thread-114653] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:05:45.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:05:45.870 [DEBUG] [Thread-114653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:05:45.870 [DEBUG] [Thread-114653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:05:45.871 [DEBUG] [Thread-114653] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:05:45.911 [DEBUG] [Thread-114653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:05:45.911 [DEBUG] [Thread-114653] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:05:45.915 [DEBUG] [Thread-114653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:05:45.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:05:45.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:05:45.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:05:45.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:05:45.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:05:45.940 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:05:45.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:05:45.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:05:45.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:05:45.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.378576 -999.00  +22.20  19.41     11   -9.00 1 1 1 1 1   888    0 31.80 40.10 ----- 17.4 19.4 2.1 21.6 28.3 -30.1 27.2 -29.1 26.4 -28.5 27.1 -28.4
2025-11-03T11:05:45.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:05:45.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:05:45.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.378576
2025-11-03T11:05:45.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:05:45.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:05:45.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:05:45.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:05:45.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:05:45.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:05:32', tmtdew=39.06, humidity=6.06, cloud=0.0, wind=24.3, temperature=22.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:05:08.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:05:45.944 [DEBUG] [Thread-114653] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:05:46.027 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:05:46.039 [DEBUG] [Thread-114656] [transport.py] [_log()] starting thread (client mode): 0xed43430
2025-11-03T11:05:46.039 [DEBUG] [Thread-114656] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:05:46.054 [DEBUG] [Thread-114656] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:05:46.054 [INFO] [Thread-114656] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:05:46.062 [DEBUG] [Thread-114656] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:05:46.062 [DEBUG] [Thread-114656] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:05:46.062 [DEBUG] [Thread-114656] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:05:46.062 [DEBUG] [Thread-114656] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:05:46.062 [DEBUG] [Thread-114656] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:05:46.062 [DEBUG] [Thread-114656] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:05:46.062 [DEBUG] [Thread-114656] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:05:46.062 [DEBUG] [Thread-114656] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:05:46.062 [DEBUG] [Thread-114656] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:05:46.062 [DEBUG] [Thread-114656] [transport.py] [_log()] client lang: <none>
2025-11-03T11:05:46.062 [DEBUG] [Thread-114656] [transport.py] [_log()] server lang: <none>
2025-11-03T11:05:46.062 [DEBUG] [Thread-114656] [transport.py] [_log()] kex follows: False
2025-11-03T11:05:46.062 [DEBUG] [Thread-114656] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:05:46.062 [DEBUG] [Thread-114656] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:05:46.063 [DEBUG] [Thread-114656] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:05:46.063 [DEBUG] [Thread-114656] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:05:46.063 [DEBUG] [Thread-114656] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:05:46.063 [DEBUG] [Thread-114656] [transport.py] [_log()] Compression: none
2025-11-03T11:05:46.063 [DEBUG] [Thread-114656] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:05:46.120 [DEBUG] [Thread-114656] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:05:46.120 [DEBUG] [Thread-114656] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:05:46.121 [DEBUG] [Thread-114656] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:05:46.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:05:46.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:05:46.175 [DEBUG] [Thread-114656] [transport.py] [_log()] userauth is OK
2025-11-03T11:05:46.176 [DEBUG] [Thread-114656] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:05:46.176 [DEBUG] [Thread-114656] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:05:46.176 [DEBUG] [Thread-114656] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:05:46.176 [DEBUG] [Thread-114656] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:05:46.195 [INFO] [Thread-114656] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:05:46.196 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:05:46.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:05:47.048 [DEBUG] [Thread-114656] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:05:47.048 [DEBUG] [Thread-114656] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:05:47.096 [DEBUG] [Thread-114656] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:05:47.096 [DEBUG] [Thread-114656] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:05:47.105 [DEBUG] [Thread-114656] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:05:47.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:05:47.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:05:47.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:05:47.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:05:47.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:05:47.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:05:47.150 [DEBUG] [Thread-114656] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:05:55.298 [DEBUG] [Thread-114658 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:05:57.941 [DEBUG] [Thread-114659 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:06:12.998 [DEBUG] [Thread-114660 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:06:17.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:06:17.173 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:06:17.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:06:17.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 6, 4), 39.3, 5.98, 0.0, 22.23, 22.92, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:06:17.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:06:04
2025-11-03T11:06:17.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:06:18.080 [DEBUG] [Thread-114661] [transport.py] [_log()] starting thread (client mode): 0xed439a0
2025-11-03T11:06:18.080 [DEBUG] [Thread-114661] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:06:18.096 [DEBUG] [Thread-114661] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:06:18.096 [INFO] [Thread-114661] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:06:18.099 [DEBUG] [Thread-114661] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:06:18.099 [DEBUG] [Thread-114661] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:06:18.099 [DEBUG] [Thread-114661] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:06:18.099 [DEBUG] [Thread-114661] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:06:18.099 [DEBUG] [Thread-114661] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:06:18.099 [DEBUG] [Thread-114661] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:06:18.099 [DEBUG] [Thread-114661] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:06:18.099 [DEBUG] [Thread-114661] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:06:18.099 [DEBUG] [Thread-114661] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:06:18.099 [DEBUG] [Thread-114661] [transport.py] [_log()] client lang: <none>
2025-11-03T11:06:18.099 [DEBUG] [Thread-114661] [transport.py] [_log()] server lang: <none>
2025-11-03T11:06:18.099 [DEBUG] [Thread-114661] [transport.py] [_log()] kex follows: False
2025-11-03T11:06:18.099 [DEBUG] [Thread-114661] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:06:18.099 [DEBUG] [Thread-114661] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:06:18.099 [DEBUG] [Thread-114661] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:06:18.099 [DEBUG] [Thread-114661] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:06:18.099 [DEBUG] [Thread-114661] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:06:18.100 [DEBUG] [Thread-114661] [transport.py] [_log()] Compression: none
2025-11-03T11:06:18.100 [DEBUG] [Thread-114661] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:06:18.118 [DEBUG] [Thread-114661] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:06:18.119 [DEBUG] [Thread-114661] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:06:18.119 [DEBUG] [Thread-114661] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:06:18.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:06:18.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:06:18.122 [DEBUG] [Thread-114661] [transport.py] [_log()] userauth is OK
2025-11-03T11:06:18.122 [DEBUG] [Thread-114661] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:06:18.122 [DEBUG] [Thread-114661] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:06:18.122 [DEBUG] [Thread-114661] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:06:18.122 [DEBUG] [Thread-114661] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:06:18.147 [INFO] [Thread-114661] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:06:18.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:06:18.932 [DEBUG] [Thread-114661] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:06:18.932 [DEBUG] [Thread-114661] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:06:18.932 [DEBUG] [Thread-114661] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:06:18.973 [DEBUG] [Thread-114661] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:06:18.973 [DEBUG] [Thread-114661] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:06:18.975 [DEBUG] [Thread-114661] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:06:18.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:06:18.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:06:18.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:06:18.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:06:18.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:06:18.997 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:06:18.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:06:18.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:06:18.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:06:18.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.378912 -999.00  +22.30  17.32     11   -8.70 1 1 1 1 1   888    0 32.78 42.67 ----- 24.8 17.3 26.6 29.2 28.2 -29.8 27.2 -29.6 26.4 -28.9 27.0 -27.8
2025-11-03T11:06:18.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:06:18.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:06:18.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.378912
2025-11-03T11:06:18.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:06:18.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:06:18.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:06:18.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:06:18.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:06:18.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:06:04', tmtdew=39.3, humidity=5.98, cloud=0.0, wind=22.23, temperature=22.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:05:37.997', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:06:18.998 [DEBUG] [Thread-114661] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:06:19.070 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:06:19.082 [DEBUG] [Thread-114664] [transport.py] [_log()] starting thread (client mode): 0xedb2950
2025-11-03T11:06:19.082 [DEBUG] [Thread-114664] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:06:19.096 [DEBUG] [Thread-114664] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:06:19.097 [INFO] [Thread-114664] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:06:19.104 [DEBUG] [Thread-114664] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:06:19.104 [DEBUG] [Thread-114664] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:06:19.104 [DEBUG] [Thread-114664] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:06:19.104 [DEBUG] [Thread-114664] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:06:19.104 [DEBUG] [Thread-114664] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:06:19.104 [DEBUG] [Thread-114664] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:06:19.104 [DEBUG] [Thread-114664] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:06:19.104 [DEBUG] [Thread-114664] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:06:19.104 [DEBUG] [Thread-114664] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:06:19.104 [DEBUG] [Thread-114664] [transport.py] [_log()] client lang: <none>
2025-11-03T11:06:19.104 [DEBUG] [Thread-114664] [transport.py] [_log()] server lang: <none>
2025-11-03T11:06:19.104 [DEBUG] [Thread-114664] [transport.py] [_log()] kex follows: False
2025-11-03T11:06:19.104 [DEBUG] [Thread-114664] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:06:19.104 [DEBUG] [Thread-114664] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:06:19.104 [DEBUG] [Thread-114664] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:06:19.104 [DEBUG] [Thread-114664] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:06:19.104 [DEBUG] [Thread-114664] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:06:19.104 [DEBUG] [Thread-114664] [transport.py] [_log()] Compression: none
2025-11-03T11:06:19.104 [DEBUG] [Thread-114664] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:06:19.162 [DEBUG] [Thread-114664] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:06:19.162 [DEBUG] [Thread-114664] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:06:19.162 [DEBUG] [Thread-114664] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:06:19.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:06:19.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:06:19.219 [DEBUG] [Thread-114664] [transport.py] [_log()] userauth is OK
2025-11-03T11:06:19.219 [DEBUG] [Thread-114664] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:06:19.219 [DEBUG] [Thread-114664] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:06:19.219 [DEBUG] [Thread-114664] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:06:19.219 [DEBUG] [Thread-114664] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:06:19.233 [INFO] [Thread-114664] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:06:19.234 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:06:19.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:06:20.055 [DEBUG] [Thread-114664] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:06:20.056 [DEBUG] [Thread-114664] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:06:20.104 [DEBUG] [Thread-114664] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:06:20.105 [DEBUG] [Thread-114664] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:06:20.114 [DEBUG] [Thread-114664] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:06:20.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:06:20.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:06:20.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:06:20.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:06:20.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:06:20.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:06:20.152 [DEBUG] [Thread-114664] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:06:28.044 [DEBUG] [Thread-114666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:06:28.745 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:06:28.746 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:06:43.098 [DEBUG] [Thread-114667 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:06:50.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:06:50.173 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:06:50.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:06:50.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 6, 36), 39.55, 5.88, 0.0, 28.23, 23.31, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:06:50.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:06:36
2025-11-03T11:06:50.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:06:51.102 [DEBUG] [Thread-114668] [transport.py] [_log()] starting thread (client mode): 0xed66ce0
2025-11-03T11:06:51.102 [DEBUG] [Thread-114668] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:06:51.123 [DEBUG] [Thread-114668] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:06:51.123 [INFO] [Thread-114668] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:06:51.126 [DEBUG] [Thread-114668] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:06:51.126 [DEBUG] [Thread-114668] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:06:51.126 [DEBUG] [Thread-114668] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:06:51.126 [DEBUG] [Thread-114668] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:06:51.126 [DEBUG] [Thread-114668] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:06:51.126 [DEBUG] [Thread-114668] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:06:51.126 [DEBUG] [Thread-114668] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:06:51.126 [DEBUG] [Thread-114668] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:06:51.126 [DEBUG] [Thread-114668] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:06:51.126 [DEBUG] [Thread-114668] [transport.py] [_log()] client lang: <none>
2025-11-03T11:06:51.126 [DEBUG] [Thread-114668] [transport.py] [_log()] server lang: <none>
2025-11-03T11:06:51.126 [DEBUG] [Thread-114668] [transport.py] [_log()] kex follows: False
2025-11-03T11:06:51.126 [DEBUG] [Thread-114668] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:06:51.126 [DEBUG] [Thread-114668] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:06:51.126 [DEBUG] [Thread-114668] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:06:51.126 [DEBUG] [Thread-114668] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:06:51.126 [DEBUG] [Thread-114668] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:06:51.126 [DEBUG] [Thread-114668] [transport.py] [_log()] Compression: none
2025-11-03T11:06:51.126 [DEBUG] [Thread-114668] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:06:51.146 [DEBUG] [Thread-114668] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:06:51.147 [DEBUG] [Thread-114668] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:06:51.147 [DEBUG] [Thread-114668] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:06:51.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:06:51.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:06:51.149 [DEBUG] [Thread-114668] [transport.py] [_log()] userauth is OK
2025-11-03T11:06:51.149 [DEBUG] [Thread-114668] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:06:51.150 [DEBUG] [Thread-114668] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:06:51.150 [DEBUG] [Thread-114668] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:06:51.150 [DEBUG] [Thread-114668] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:06:51.182 [INFO] [Thread-114668] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:06:51.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:06:51.844 [DEBUG] [Thread-114668] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:06:51.854 [DEBUG] [Thread-114668] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:06:51.855 [DEBUG] [Thread-114668] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:06:51.886 [DEBUG] [Thread-114668] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:06:51.886 [DEBUG] [Thread-114668] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:06:51.890 [DEBUG] [Thread-114668] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:06:51.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:06:51.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:06:51.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:06:51.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:06:51.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:06:51.913 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:06:51.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:06:51.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:06:51.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:06:51.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.379271 -999.00  +22.60  27.60     11   -9.00 1 1 1 1 1   888    0 32.15 37.29 ----- 29.4 27.6 18.7 35.0 28.2 -30.6 27.2 -28.4 26.4 -29.2 26.9 -28.7
2025-11-03T11:06:51.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:06:51.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:06:51.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.379271
2025-11-03T11:06:51.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:06:51.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:06:51.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:06:51.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:06:51.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:06:51.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:06:36', tmtdew=39.55, humidity=5.88, cloud=0.0, wind=28.23, temperature=23.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:06:09.014', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:06:51.916 [DEBUG] [Thread-114668] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:06:52.000 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:06:52.012 [DEBUG] [Thread-114671] [transport.py] [_log()] starting thread (client mode): 0xed647f0
2025-11-03T11:06:52.012 [DEBUG] [Thread-114671] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:06:52.027 [DEBUG] [Thread-114671] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:06:52.027 [INFO] [Thread-114671] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:06:52.037 [DEBUG] [Thread-114671] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:06:52.038 [DEBUG] [Thread-114671] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:06:52.038 [DEBUG] [Thread-114671] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:06:52.038 [DEBUG] [Thread-114671] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:06:52.038 [DEBUG] [Thread-114671] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:06:52.038 [DEBUG] [Thread-114671] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:06:52.038 [DEBUG] [Thread-114671] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:06:52.038 [DEBUG] [Thread-114671] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:06:52.038 [DEBUG] [Thread-114671] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:06:52.038 [DEBUG] [Thread-114671] [transport.py] [_log()] client lang: <none>
2025-11-03T11:06:52.038 [DEBUG] [Thread-114671] [transport.py] [_log()] server lang: <none>
2025-11-03T11:06:52.038 [DEBUG] [Thread-114671] [transport.py] [_log()] kex follows: False
2025-11-03T11:06:52.038 [DEBUG] [Thread-114671] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:06:52.038 [DEBUG] [Thread-114671] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:06:52.038 [DEBUG] [Thread-114671] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:06:52.038 [DEBUG] [Thread-114671] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:06:52.038 [DEBUG] [Thread-114671] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:06:52.039 [DEBUG] [Thread-114671] [transport.py] [_log()] Compression: none
2025-11-03T11:06:52.039 [DEBUG] [Thread-114671] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:06:52.104 [DEBUG] [Thread-114671] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:06:52.105 [DEBUG] [Thread-114671] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:06:52.106 [DEBUG] [Thread-114671] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:06:52.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:06:52.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:06:52.160 [DEBUG] [Thread-114671] [transport.py] [_log()] userauth is OK
2025-11-03T11:06:52.160 [DEBUG] [Thread-114671] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:06:52.161 [DEBUG] [Thread-114671] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:06:52.161 [DEBUG] [Thread-114671] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:06:52.161 [DEBUG] [Thread-114671] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:06:52.180 [INFO] [Thread-114671] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:06:52.181 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:06:52.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:06:53.068 [DEBUG] [Thread-114671] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:06:53.068 [DEBUG] [Thread-114671] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:06:53.116 [DEBUG] [Thread-114671] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:06:53.116 [DEBUG] [Thread-114671] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:06:53.126 [DEBUG] [Thread-114671] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:06:53.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:06:53.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:06:53.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:06:53.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:06:53.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:06:53.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:06:53.163 [DEBUG] [Thread-114671] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:06:55.364 [DEBUG] [Thread-114673 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:06:58.143 [DEBUG] [Thread-114674 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:07:13.194 [DEBUG] [Thread-114675 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:07:23.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:07:23.165 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:07:23.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:07:23.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 7, 9), 39.34, 5.93, 0.0, 24.98, 22.94, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:07:23.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:07:09
2025-11-03T11:07:23.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:07:24.125 [DEBUG] [Thread-114676] [transport.py] [_log()] starting thread (client mode): 0xed67490
2025-11-03T11:07:24.125 [DEBUG] [Thread-114676] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:07:24.146 [DEBUG] [Thread-114676] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:07:24.146 [INFO] [Thread-114676] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:07:24.149 [DEBUG] [Thread-114676] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:07:24.149 [DEBUG] [Thread-114676] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:07:24.149 [DEBUG] [Thread-114676] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:07:24.149 [DEBUG] [Thread-114676] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:07:24.149 [DEBUG] [Thread-114676] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:07:24.149 [DEBUG] [Thread-114676] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:07:24.149 [DEBUG] [Thread-114676] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:07:24.149 [DEBUG] [Thread-114676] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:07:24.149 [DEBUG] [Thread-114676] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:07:24.149 [DEBUG] [Thread-114676] [transport.py] [_log()] client lang: <none>
2025-11-03T11:07:24.149 [DEBUG] [Thread-114676] [transport.py] [_log()] server lang: <none>
2025-11-03T11:07:24.149 [DEBUG] [Thread-114676] [transport.py] [_log()] kex follows: False
2025-11-03T11:07:24.149 [DEBUG] [Thread-114676] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:07:24.149 [DEBUG] [Thread-114676] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:07:24.149 [DEBUG] [Thread-114676] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:07:24.149 [DEBUG] [Thread-114676] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:07:24.149 [DEBUG] [Thread-114676] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:07:24.149 [DEBUG] [Thread-114676] [transport.py] [_log()] Compression: none
2025-11-03T11:07:24.149 [DEBUG] [Thread-114676] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:07:24.164 [DEBUG] [Thread-114676] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:07:24.164 [DEBUG] [Thread-114676] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:07:24.165 [DEBUG] [Thread-114676] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:07:24.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:07:24.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:07:24.166 [DEBUG] [Thread-114676] [transport.py] [_log()] userauth is OK
2025-11-03T11:07:24.166 [DEBUG] [Thread-114676] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:07:24.166 [DEBUG] [Thread-114676] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:07:24.166 [DEBUG] [Thread-114676] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:07:24.166 [DEBUG] [Thread-114676] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:07:24.181 [INFO] [Thread-114676] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:07:24.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:07:24.980 [DEBUG] [Thread-114676] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:07:24.981 [DEBUG] [Thread-114676] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:07:24.981 [DEBUG] [Thread-114676] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:07:25.021 [DEBUG] [Thread-114676] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:07:25.021 [DEBUG] [Thread-114676] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:07:25.024 [DEBUG] [Thread-114676] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:07:25.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:07:25.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:07:25.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:07:25.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:07:25.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:07:25.036 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:07:25.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:07:25.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:07:25.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:07:25.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.379607 -999.00  +22.80  24.01     11   -8.60 1 1 1 1 1   888    0 32.05 33.69 ----- 21.1 24.0 16.0 33.5 28.2 -29.8 27.0 -29.4 26.4 -28.0 27.0 -34.2
2025-11-03T11:07:25.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:07:25.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:07:25.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.379607
2025-11-03T11:07:25.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:07:25.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:07:25.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:07:25.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:07:25.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:07:25.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:07:09', tmtdew=39.34, humidity=5.93, cloud=0.0, wind=24.98, temperature=22.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:06:38.045', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:07:25.037 [DEBUG] [Thread-114676] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:07:25.111 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:07:25.125 [DEBUG] [Thread-114679] [transport.py] [_log()] starting thread (client mode): 0xed5f3a0
2025-11-03T11:07:25.125 [DEBUG] [Thread-114679] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:07:25.140 [DEBUG] [Thread-114679] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:07:25.140 [INFO] [Thread-114679] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:07:25.148 [DEBUG] [Thread-114679] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:07:25.148 [DEBUG] [Thread-114679] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:07:25.148 [DEBUG] [Thread-114679] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:07:25.148 [DEBUG] [Thread-114679] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:07:25.148 [DEBUG] [Thread-114679] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:07:25.148 [DEBUG] [Thread-114679] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:07:25.148 [DEBUG] [Thread-114679] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:07:25.148 [DEBUG] [Thread-114679] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:07:25.148 [DEBUG] [Thread-114679] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:07:25.148 [DEBUG] [Thread-114679] [transport.py] [_log()] client lang: <none>
2025-11-03T11:07:25.148 [DEBUG] [Thread-114679] [transport.py] [_log()] server lang: <none>
2025-11-03T11:07:25.148 [DEBUG] [Thread-114679] [transport.py] [_log()] kex follows: False
2025-11-03T11:07:25.148 [DEBUG] [Thread-114679] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:07:25.148 [DEBUG] [Thread-114679] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:07:25.148 [DEBUG] [Thread-114679] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:07:25.148 [DEBUG] [Thread-114679] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:07:25.148 [DEBUG] [Thread-114679] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:07:25.148 [DEBUG] [Thread-114679] [transport.py] [_log()] Compression: none
2025-11-03T11:07:25.148 [DEBUG] [Thread-114679] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:07:25.207 [DEBUG] [Thread-114679] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:07:25.207 [DEBUG] [Thread-114679] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:07:25.207 [DEBUG] [Thread-114679] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:07:25.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:07:25.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:07:25.264 [DEBUG] [Thread-114679] [transport.py] [_log()] userauth is OK
2025-11-03T11:07:25.264 [DEBUG] [Thread-114679] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:07:25.264 [DEBUG] [Thread-114679] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:07:25.264 [DEBUG] [Thread-114679] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:07:25.264 [DEBUG] [Thread-114679] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:07:25.278 [INFO] [Thread-114679] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:07:25.278 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:07:25.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:07:26.215 [DEBUG] [Thread-114679] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:07:26.215 [DEBUG] [Thread-114679] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:07:26.263 [DEBUG] [Thread-114679] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:07:26.263 [DEBUG] [Thread-114679] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:07:26.272 [DEBUG] [Thread-114679] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:07:26.279 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:07:26.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:07:26.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:07:26.296 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:07:26.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:07:26.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:07:26.304 [DEBUG] [Thread-114679] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:07:28.223 [DEBUG] [Thread-114681 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:07:28.886 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:07:28.888 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:07:43.270 [DEBUG] [Thread-114682 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:07:55.445 [DEBUG] [Thread-114683 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:07:56.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:07:56.326 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:07:56.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:07:56.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 7, 41), 39.5, 6.05, 0.0, 25.76, 22.66, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:07:56.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:07:41
2025-11-03T11:07:57.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:07:57.257 [DEBUG] [Thread-114684] [transport.py] [_log()] starting thread (client mode): 0xed65db0
2025-11-03T11:07:57.257 [DEBUG] [Thread-114684] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:07:57.276 [DEBUG] [Thread-114684] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:07:57.276 [INFO] [Thread-114684] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:07:57.280 [DEBUG] [Thread-114684] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:07:57.280 [DEBUG] [Thread-114684] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:07:57.280 [DEBUG] [Thread-114684] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:07:57.280 [DEBUG] [Thread-114684] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:07:57.280 [DEBUG] [Thread-114684] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:07:57.280 [DEBUG] [Thread-114684] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:07:57.280 [DEBUG] [Thread-114684] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:07:57.280 [DEBUG] [Thread-114684] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:07:57.280 [DEBUG] [Thread-114684] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:07:57.280 [DEBUG] [Thread-114684] [transport.py] [_log()] client lang: <none>
2025-11-03T11:07:57.280 [DEBUG] [Thread-114684] [transport.py] [_log()] server lang: <none>
2025-11-03T11:07:57.280 [DEBUG] [Thread-114684] [transport.py] [_log()] kex follows: False
2025-11-03T11:07:57.280 [DEBUG] [Thread-114684] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:07:57.280 [DEBUG] [Thread-114684] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:07:57.280 [DEBUG] [Thread-114684] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:07:57.281 [DEBUG] [Thread-114684] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:07:57.281 [DEBUG] [Thread-114684] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:07:57.281 [DEBUG] [Thread-114684] [transport.py] [_log()] Compression: none
2025-11-03T11:07:57.290 [DEBUG] [Thread-114684] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:07:57.307 [DEBUG] [Thread-114684] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:07:57.308 [DEBUG] [Thread-114684] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:07:57.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:07:57.309 [DEBUG] [Thread-114684] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:07:57.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:07:57.311 [DEBUG] [Thread-114684] [transport.py] [_log()] userauth is OK
2025-11-03T11:07:57.311 [DEBUG] [Thread-114684] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:07:57.311 [DEBUG] [Thread-114684] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:07:57.311 [DEBUG] [Thread-114684] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:07:57.311 [DEBUG] [Thread-114684] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:07:57.329 [INFO] [Thread-114684] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:07:57.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:07:57.932 [DEBUG] [Thread-114684] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:07:57.941 [DEBUG] [Thread-114684] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:07:57.941 [DEBUG] [Thread-114684] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:07:57.973 [DEBUG] [Thread-114684] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:07:57.974 [DEBUG] [Thread-114684] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:07:57.976 [DEBUG] [Thread-114684] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:07:57.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:07:57.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:07:57.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:07:57.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:07:57.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:07:57.994 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:07:57.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:07:57.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:07:57.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:07:57.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.379954 -999.00  +22.60  30.10     11   -9.10 1 1 2 1 1   888    0 33.21 35.25 ----- 35.1 30.1 9.8 36.5 28.1 -33.3 27.1 -30.1 26.3 -29.4 26.8 -33.8
2025-11-03T11:07:57.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:07:57.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:07:57.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.379954
2025-11-03T11:07:57.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:07:57.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:07:57.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:07:57.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:07:57.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:07:57.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:07:41', tmtdew=39.5, humidity=6.05, cloud=0.0, wind=25.76, temperature=22.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:07:08.026', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:07:57.995 [DEBUG] [Thread-114684] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:07:58.067 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:07:58.079 [DEBUG] [Thread-114687] [transport.py] [_log()] starting thread (client mode): 0xedb39a0
2025-11-03T11:07:58.079 [DEBUG] [Thread-114687] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:07:58.093 [DEBUG] [Thread-114687] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:07:58.093 [INFO] [Thread-114687] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:07:58.101 [DEBUG] [Thread-114687] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:07:58.101 [DEBUG] [Thread-114687] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:07:58.101 [DEBUG] [Thread-114687] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:07:58.101 [DEBUG] [Thread-114687] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:07:58.101 [DEBUG] [Thread-114687] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:07:58.101 [DEBUG] [Thread-114687] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:07:58.101 [DEBUG] [Thread-114687] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:07:58.101 [DEBUG] [Thread-114687] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:07:58.101 [DEBUG] [Thread-114687] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:07:58.101 [DEBUG] [Thread-114687] [transport.py] [_log()] client lang: <none>
2025-11-03T11:07:58.101 [DEBUG] [Thread-114687] [transport.py] [_log()] server lang: <none>
2025-11-03T11:07:58.101 [DEBUG] [Thread-114687] [transport.py] [_log()] kex follows: False
2025-11-03T11:07:58.101 [DEBUG] [Thread-114687] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:07:58.101 [DEBUG] [Thread-114687] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:07:58.101 [DEBUG] [Thread-114687] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:07:58.101 [DEBUG] [Thread-114687] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:07:58.101 [DEBUG] [Thread-114687] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:07:58.101 [DEBUG] [Thread-114687] [transport.py] [_log()] Compression: none
2025-11-03T11:07:58.101 [DEBUG] [Thread-114687] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:07:58.158 [DEBUG] [Thread-114687] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:07:58.158 [DEBUG] [Thread-114687] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:07:58.159 [DEBUG] [Thread-114687] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:07:58.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:07:58.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:07:58.216 [DEBUG] [Thread-114687] [transport.py] [_log()] userauth is OK
2025-11-03T11:07:58.216 [DEBUG] [Thread-114687] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:07:58.216 [DEBUG] [Thread-114687] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:07:58.216 [DEBUG] [Thread-114687] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:07:58.216 [DEBUG] [Thread-114687] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:07:58.229 [INFO] [Thread-114687] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:07:58.238 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:07:58.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:07:58.300 [DEBUG] [Thread-114689 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:07:59.098 [DEBUG] [Thread-114687] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:07:59.098 [DEBUG] [Thread-114687] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:07:59.146 [DEBUG] [Thread-114687] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:07:59.146 [DEBUG] [Thread-114687] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:07:59.155 [DEBUG] [Thread-114687] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:07:59.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:07:59.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:07:59.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:07:59.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:07:59.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:07:59.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:07:59.193 [DEBUG] [Thread-114687] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:08:13.346 [DEBUG] [Thread-114690 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:08:28.388 [DEBUG] [Thread-114691 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:08:29.027 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:08:29.028 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:08:29.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:08:29.215 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:08:29.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:08:29.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 8, 13), 39.43, 6.08, 0.0, 22.74, 22.64, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:08:29.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:08:13
2025-11-03T11:08:30.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:08:30.190 [DEBUG] [Thread-114692] [transport.py] [_log()] starting thread (client mode): 0xedb14e0
2025-11-03T11:08:30.190 [DEBUG] [Thread-114692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:08:30.210 [DEBUG] [Thread-114692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:08:30.211 [INFO] [Thread-114692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:08:30.214 [DEBUG] [Thread-114692] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:08:30.214 [DEBUG] [Thread-114692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:08:30.214 [DEBUG] [Thread-114692] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:08:30.214 [DEBUG] [Thread-114692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:08:30.214 [DEBUG] [Thread-114692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:08:30.214 [DEBUG] [Thread-114692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:08:30.214 [DEBUG] [Thread-114692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:08:30.214 [DEBUG] [Thread-114692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:08:30.214 [DEBUG] [Thread-114692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:08:30.214 [DEBUG] [Thread-114692] [transport.py] [_log()] client lang: <none>
2025-11-03T11:08:30.214 [DEBUG] [Thread-114692] [transport.py] [_log()] server lang: <none>
2025-11-03T11:08:30.214 [DEBUG] [Thread-114692] [transport.py] [_log()] kex follows: False
2025-11-03T11:08:30.214 [DEBUG] [Thread-114692] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:08:30.214 [DEBUG] [Thread-114692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:08:30.214 [DEBUG] [Thread-114692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:08:30.214 [DEBUG] [Thread-114692] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:08:30.214 [DEBUG] [Thread-114692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:08:30.214 [DEBUG] [Thread-114692] [transport.py] [_log()] Compression: none
2025-11-03T11:08:30.214 [DEBUG] [Thread-114692] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:08:30.231 [DEBUG] [Thread-114692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:08:30.232 [DEBUG] [Thread-114692] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:08:30.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:08:30.233 [DEBUG] [Thread-114692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:08:30.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:08:30.235 [DEBUG] [Thread-114692] [transport.py] [_log()] userauth is OK
2025-11-03T11:08:30.235 [DEBUG] [Thread-114692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:08:30.235 [DEBUG] [Thread-114692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:08:30.236 [DEBUG] [Thread-114692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:08:30.236 [DEBUG] [Thread-114692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:08:30.256 [INFO] [Thread-114692] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:08:30.257 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:08:31.010 [DEBUG] [Thread-114692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:08:31.010 [DEBUG] [Thread-114692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:08:31.010 [DEBUG] [Thread-114692] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:08:31.052 [DEBUG] [Thread-114692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:08:31.052 [DEBUG] [Thread-114692] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:08:31.054 [DEBUG] [Thread-114692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:08:31.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:08:31.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:08:31.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:08:31.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:08:31.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:08:31.074 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:08:31.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:08:31.074 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:08:31.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:08:31.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.380301 -999.00  +22.50  29.61     11   -8.90 1 1 1 1 1   888    0 32.65 33.37 ----- 27.5 29.6 21.2 35.7 27.9 -29.8 26.8 -29.6 26.1 -29.6 26.8 -27.2
2025-11-03T11:08:31.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:08:31.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:08:31.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.380301
2025-11-03T11:08:31.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:08:31.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:08:31.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:08:31.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:08:31.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:08:31.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:08:13', tmtdew=39.43, humidity=6.08, cloud=0.0, wind=22.74, temperature=22.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:07:38.006', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:08:31.075 [DEBUG] [Thread-114692] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:08:31.146 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:08:31.158 [DEBUG] [Thread-114695] [transport.py] [_log()] starting thread (client mode): 0xedc66b0
2025-11-03T11:08:31.158 [DEBUG] [Thread-114695] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:08:31.174 [DEBUG] [Thread-114695] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:08:31.174 [INFO] [Thread-114695] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:08:31.181 [DEBUG] [Thread-114695] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:08:31.181 [DEBUG] [Thread-114695] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:08:31.181 [DEBUG] [Thread-114695] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:08:31.181 [DEBUG] [Thread-114695] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:08:31.181 [DEBUG] [Thread-114695] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:08:31.181 [DEBUG] [Thread-114695] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:08:31.181 [DEBUG] [Thread-114695] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:08:31.181 [DEBUG] [Thread-114695] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:08:31.181 [DEBUG] [Thread-114695] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:08:31.181 [DEBUG] [Thread-114695] [transport.py] [_log()] client lang: <none>
2025-11-03T11:08:31.181 [DEBUG] [Thread-114695] [transport.py] [_log()] server lang: <none>
2025-11-03T11:08:31.181 [DEBUG] [Thread-114695] [transport.py] [_log()] kex follows: False
2025-11-03T11:08:31.181 [DEBUG] [Thread-114695] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:08:31.182 [DEBUG] [Thread-114695] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:08:31.182 [DEBUG] [Thread-114695] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:08:31.182 [DEBUG] [Thread-114695] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:08:31.182 [DEBUG] [Thread-114695] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:08:31.182 [DEBUG] [Thread-114695] [transport.py] [_log()] Compression: none
2025-11-03T11:08:31.182 [DEBUG] [Thread-114695] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:08:31.239 [DEBUG] [Thread-114695] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:08:31.248 [DEBUG] [Thread-114695] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:08:31.248 [DEBUG] [Thread-114695] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:08:31.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:08:31.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:08:31.296 [DEBUG] [Thread-114695] [transport.py] [_log()] userauth is OK
2025-11-03T11:08:31.296 [DEBUG] [Thread-114695] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:08:31.296 [DEBUG] [Thread-114695] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:08:31.296 [DEBUG] [Thread-114695] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:08:31.296 [DEBUG] [Thread-114695] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:08:31.310 [INFO] [Thread-114695] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:08:31.310 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:08:31.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:08:32.212 [DEBUG] [Thread-114695] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:08:32.213 [DEBUG] [Thread-114695] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:08:32.260 [DEBUG] [Thread-114695] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:08:32.260 [DEBUG] [Thread-114695] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:08:32.269 [DEBUG] [Thread-114695] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:08:32.279 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:08:32.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:08:32.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:08:32.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:08:32.298 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:08:32.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:08:32.307 [DEBUG] [Thread-114695] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:08:43.426 [DEBUG] [Thread-114697 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:08:55.503 [DEBUG] [Thread-114698 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:08:58.464 [DEBUG] [Thread-114699 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:09:02.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:09:02.329 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:09:02.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:09:03.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 8, 45), 39.3, 5.98, 0.0, 28.04, 22.41, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:09:03.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:08:45
2025-11-03T11:09:03.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:09:03.312 [DEBUG] [Thread-114700] [transport.py] [_log()] starting thread (client mode): 0xed5dc00
2025-11-03T11:09:03.312 [DEBUG] [Thread-114700] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:09:03.332 [DEBUG] [Thread-114700] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:09:03.332 [INFO] [Thread-114700] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:09:03.336 [DEBUG] [Thread-114700] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:09:03.337 [DEBUG] [Thread-114700] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:09:03.337 [DEBUG] [Thread-114700] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:09:03.337 [DEBUG] [Thread-114700] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:09:03.337 [DEBUG] [Thread-114700] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:09:03.337 [DEBUG] [Thread-114700] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:09:03.337 [DEBUG] [Thread-114700] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:09:03.337 [DEBUG] [Thread-114700] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:09:03.337 [DEBUG] [Thread-114700] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:09:03.337 [DEBUG] [Thread-114700] [transport.py] [_log()] client lang: <none>
2025-11-03T11:09:03.337 [DEBUG] [Thread-114700] [transport.py] [_log()] server lang: <none>
2025-11-03T11:09:03.338 [DEBUG] [Thread-114700] [transport.py] [_log()] kex follows: False
2025-11-03T11:09:03.338 [DEBUG] [Thread-114700] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:09:03.338 [DEBUG] [Thread-114700] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:09:03.338 [DEBUG] [Thread-114700] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:09:03.338 [DEBUG] [Thread-114700] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:09:03.338 [DEBUG] [Thread-114700] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:09:03.339 [DEBUG] [Thread-114700] [transport.py] [_log()] Compression: none
2025-11-03T11:09:03.339 [DEBUG] [Thread-114700] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:09:03.349 [DEBUG] [Thread-114700] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:09:03.349 [DEBUG] [Thread-114700] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:09:03.350 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:09:03.350 [DEBUG] [Thread-114700] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:09:03.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:09:03.353 [DEBUG] [Thread-114700] [transport.py] [_log()] userauth is OK
2025-11-03T11:09:03.353 [DEBUG] [Thread-114700] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:09:03.353 [DEBUG] [Thread-114700] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:09:03.353 [DEBUG] [Thread-114700] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:09:03.353 [DEBUG] [Thread-114700] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:09:03.371 [INFO] [Thread-114700] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:09:03.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:09:03.994 [DEBUG] [Thread-114700] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:09:03.994 [DEBUG] [Thread-114700] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:09:03.995 [DEBUG] [Thread-114700] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:09:04.035 [DEBUG] [Thread-114700] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:09:04.035 [DEBUG] [Thread-114700] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:09:04.037 [DEBUG] [Thread-114700] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:09:04.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:09:04.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:09:04.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:09:04.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:09:04.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:09:04.054 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:09:04.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:09:04.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:09:04.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:09:04.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.380648 -999.00  +22.70  32.08     11   -9.10 1 1 2 1 1   888    0 32.46 34.01 ----- 22.1 32.1 3.7 35.8 28.0 -30.6 27.0 -28.9 26.2 -28.4 26.7 -28.5
2025-11-03T11:09:04.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:09:04.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:09:04.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.380648
2025-11-03T11:09:04.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:09:04.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:09:04.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:09:04.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:09:04.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:09:04.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:08:45', tmtdew=39.3, humidity=5.98, cloud=0.0, wind=28.04, temperature=22.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:08:07.987', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:09:04.055 [DEBUG] [Thread-114700] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:09:04.126 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:09:04.139 [DEBUG] [Thread-114703] [transport.py] [_log()] starting thread (client mode): 0xed2ef50
2025-11-03T11:09:04.140 [DEBUG] [Thread-114703] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:09:04.154 [DEBUG] [Thread-114703] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:09:04.154 [INFO] [Thread-114703] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:09:04.161 [DEBUG] [Thread-114703] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:09:04.161 [DEBUG] [Thread-114703] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:09:04.161 [DEBUG] [Thread-114703] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:09:04.161 [DEBUG] [Thread-114703] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:09:04.161 [DEBUG] [Thread-114703] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:09:04.161 [DEBUG] [Thread-114703] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:09:04.162 [DEBUG] [Thread-114703] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:09:04.162 [DEBUG] [Thread-114703] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:09:04.162 [DEBUG] [Thread-114703] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:09:04.162 [DEBUG] [Thread-114703] [transport.py] [_log()] client lang: <none>
2025-11-03T11:09:04.162 [DEBUG] [Thread-114703] [transport.py] [_log()] server lang: <none>
2025-11-03T11:09:04.162 [DEBUG] [Thread-114703] [transport.py] [_log()] kex follows: False
2025-11-03T11:09:04.162 [DEBUG] [Thread-114703] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:09:04.162 [DEBUG] [Thread-114703] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:09:04.162 [DEBUG] [Thread-114703] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:09:04.162 [DEBUG] [Thread-114703] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:09:04.162 [DEBUG] [Thread-114703] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:09:04.162 [DEBUG] [Thread-114703] [transport.py] [_log()] Compression: none
2025-11-03T11:09:04.162 [DEBUG] [Thread-114703] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:09:04.218 [DEBUG] [Thread-114703] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:09:04.218 [DEBUG] [Thread-114703] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:09:04.218 [DEBUG] [Thread-114703] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:09:04.218 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:09:04.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:09:04.277 [DEBUG] [Thread-114703] [transport.py] [_log()] userauth is OK
2025-11-03T11:09:04.277 [DEBUG] [Thread-114703] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:09:04.277 [DEBUG] [Thread-114703] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:09:04.277 [DEBUG] [Thread-114703] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:09:04.277 [DEBUG] [Thread-114703] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:09:04.291 [INFO] [Thread-114703] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:09:04.291 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:09:04.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:09:05.143 [DEBUG] [Thread-114703] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:09:05.143 [DEBUG] [Thread-114703] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:09:05.192 [DEBUG] [Thread-114703] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:09:05.192 [DEBUG] [Thread-114703] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:09:05.205 [DEBUG] [Thread-114703] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:09:05.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:09:05.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:09:05.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:09:05.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:09:05.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:09:05.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:09:05.252 [DEBUG] [Thread-114703] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:09:13.500 [DEBUG] [Thread-114705 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:09:28.545 [DEBUG] [Thread-114706 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:09:29.172 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:09:29.173 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:09:35.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:09:35.273 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:09:35.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:09:35.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 9, 18), 39.19, 6.01, 0.0, 26.82, 22.26, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:09:35.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:09:18
2025-11-03T11:09:36.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:09:36.238 [DEBUG] [Thread-114707] [transport.py] [_log()] starting thread (client mode): 0xed5d3c0
2025-11-03T11:09:36.238 [DEBUG] [Thread-114707] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:09:36.257 [DEBUG] [Thread-114707] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:09:36.257 [INFO] [Thread-114707] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:09:36.260 [DEBUG] [Thread-114707] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:09:36.260 [DEBUG] [Thread-114707] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:09:36.260 [DEBUG] [Thread-114707] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:09:36.260 [DEBUG] [Thread-114707] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:09:36.260 [DEBUG] [Thread-114707] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:09:36.260 [DEBUG] [Thread-114707] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:09:36.261 [DEBUG] [Thread-114707] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:09:36.261 [DEBUG] [Thread-114707] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:09:36.261 [DEBUG] [Thread-114707] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:09:36.261 [DEBUG] [Thread-114707] [transport.py] [_log()] client lang: <none>
2025-11-03T11:09:36.261 [DEBUG] [Thread-114707] [transport.py] [_log()] server lang: <none>
2025-11-03T11:09:36.261 [DEBUG] [Thread-114707] [transport.py] [_log()] kex follows: False
2025-11-03T11:09:36.261 [DEBUG] [Thread-114707] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:09:36.261 [DEBUG] [Thread-114707] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:09:36.261 [DEBUG] [Thread-114707] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:09:36.261 [DEBUG] [Thread-114707] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:09:36.261 [DEBUG] [Thread-114707] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:09:36.261 [DEBUG] [Thread-114707] [transport.py] [_log()] Compression: none
2025-11-03T11:09:36.261 [DEBUG] [Thread-114707] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:09:36.277 [DEBUG] [Thread-114707] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:09:36.277 [DEBUG] [Thread-114707] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:09:36.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:09:36.278 [DEBUG] [Thread-114707] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:09:36.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:09:36.281 [DEBUG] [Thread-114707] [transport.py] [_log()] userauth is OK
2025-11-03T11:09:36.281 [DEBUG] [Thread-114707] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:09:36.281 [DEBUG] [Thread-114707] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:09:36.281 [DEBUG] [Thread-114707] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:09:36.281 [DEBUG] [Thread-114707] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:09:36.300 [INFO] [Thread-114707] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:09:36.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:09:37.077 [DEBUG] [Thread-114707] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:09:37.086 [DEBUG] [Thread-114707] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:09:37.086 [DEBUG] [Thread-114707] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:09:37.118 [DEBUG] [Thread-114707] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:09:37.118 [DEBUG] [Thread-114707] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:09:37.124 [DEBUG] [Thread-114707] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:09:37.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:09:37.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:09:37.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:09:37.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:09:37.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:09:37.146 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:09:37.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:09:37.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:09:37.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:09:37.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.381343 -999.00  +22.10  17.91     11   -9.10 1 1 1 1 1   888    0 32.52 34.94 ----- 18.2 17.9 342.3 35.9 27.9 -29.4 26.8 -29.0 26.1 -28.1 26.8 -28.2
2025-11-03T11:09:37.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:09:37.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:09:37.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.381343
2025-11-03T11:09:37.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:09:37.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:09:37.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:09:37.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:09:37.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:09:37.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:09:18', tmtdew=39.19, humidity=6.01, cloud=0.0, wind=26.82, temperature=22.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:09:08.035', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:09:37.149 [DEBUG] [Thread-114707] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:09:37.232 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:09:37.244 [DEBUG] [Thread-114710] [transport.py] [_log()] starting thread (client mode): 0xed2de40
2025-11-03T11:09:37.244 [DEBUG] [Thread-114710] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:09:37.259 [DEBUG] [Thread-114710] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:09:37.259 [INFO] [Thread-114710] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:09:37.275 [DEBUG] [Thread-114710] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:09:37.275 [DEBUG] [Thread-114710] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:09:37.275 [DEBUG] [Thread-114710] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:09:37.275 [DEBUG] [Thread-114710] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:09:37.275 [DEBUG] [Thread-114710] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:09:37.276 [DEBUG] [Thread-114710] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:09:37.276 [DEBUG] [Thread-114710] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:09:37.276 [DEBUG] [Thread-114710] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:09:37.276 [DEBUG] [Thread-114710] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:09:37.276 [DEBUG] [Thread-114710] [transport.py] [_log()] client lang: <none>
2025-11-03T11:09:37.276 [DEBUG] [Thread-114710] [transport.py] [_log()] server lang: <none>
2025-11-03T11:09:37.276 [DEBUG] [Thread-114710] [transport.py] [_log()] kex follows: False
2025-11-03T11:09:37.276 [DEBUG] [Thread-114710] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:09:37.276 [DEBUG] [Thread-114710] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:09:37.276 [DEBUG] [Thread-114710] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:09:37.276 [DEBUG] [Thread-114710] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:09:37.276 [DEBUG] [Thread-114710] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:09:37.276 [DEBUG] [Thread-114710] [transport.py] [_log()] Compression: none
2025-11-03T11:09:37.276 [DEBUG] [Thread-114710] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:09:37.323 [DEBUG] [Thread-114710] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:09:37.323 [DEBUG] [Thread-114710] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:09:37.324 [DEBUG] [Thread-114710] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:09:37.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:09:37.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:09:37.380 [DEBUG] [Thread-114710] [transport.py] [_log()] userauth is OK
2025-11-03T11:09:37.380 [DEBUG] [Thread-114710] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:09:37.380 [DEBUG] [Thread-114710] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:09:37.380 [DEBUG] [Thread-114710] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:09:37.380 [DEBUG] [Thread-114710] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:09:37.398 [INFO] [Thread-114710] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:09:37.408 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:09:37.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:09:38.282 [DEBUG] [Thread-114710] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:09:38.282 [DEBUG] [Thread-114710] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:09:38.330 [DEBUG] [Thread-114710] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:09:38.330 [DEBUG] [Thread-114710] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:09:38.339 [DEBUG] [Thread-114710] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:09:38.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:09:38.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:09:38.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:09:38.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:09:38.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:09:38.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:09:38.371 [DEBUG] [Thread-114710] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:09:43.587 [DEBUG] [Thread-114712 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:09:55.556 [DEBUG] [Thread-114713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:09:58.645 [DEBUG] [Thread-114714 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:10:08.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:10:08.386 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:10:08.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:10:09.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 9, 50), 38.52, 6.61, 0.0, 13.75, 22.29, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:10:09.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:09:50
2025-11-03T11:10:09.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:10:09.311 [DEBUG] [Thread-114715] [transport.py] [_log()] starting thread (client mode): 0xed437f0
2025-11-03T11:10:09.311 [DEBUG] [Thread-114715] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:10:09.330 [DEBUG] [Thread-114715] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:10:09.330 [INFO] [Thread-114715] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:10:09.333 [DEBUG] [Thread-114715] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:10:09.333 [DEBUG] [Thread-114715] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:10:09.334 [DEBUG] [Thread-114715] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:10:09.334 [DEBUG] [Thread-114715] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:10:09.334 [DEBUG] [Thread-114715] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:10:09.334 [DEBUG] [Thread-114715] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:10:09.334 [DEBUG] [Thread-114715] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:10:09.334 [DEBUG] [Thread-114715] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:10:09.334 [DEBUG] [Thread-114715] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:10:09.334 [DEBUG] [Thread-114715] [transport.py] [_log()] client lang: <none>
2025-11-03T11:10:09.334 [DEBUG] [Thread-114715] [transport.py] [_log()] server lang: <none>
2025-11-03T11:10:09.334 [DEBUG] [Thread-114715] [transport.py] [_log()] kex follows: False
2025-11-03T11:10:09.334 [DEBUG] [Thread-114715] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:10:09.334 [DEBUG] [Thread-114715] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:10:09.334 [DEBUG] [Thread-114715] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:10:09.335 [DEBUG] [Thread-114715] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:10:09.335 [DEBUG] [Thread-114715] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:10:09.335 [DEBUG] [Thread-114715] [transport.py] [_log()] Compression: none
2025-11-03T11:10:09.335 [DEBUG] [Thread-114715] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:10:09.353 [DEBUG] [Thread-114715] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:10:09.354 [DEBUG] [Thread-114715] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:10:09.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:10:09.356 [DEBUG] [Thread-114715] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:10:09.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:10:09.359 [DEBUG] [Thread-114715] [transport.py] [_log()] userauth is OK
2025-11-03T11:10:09.359 [DEBUG] [Thread-114715] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:10:09.359 [DEBUG] [Thread-114715] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:10:09.359 [DEBUG] [Thread-114715] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:10:09.359 [DEBUG] [Thread-114715] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:10:09.388 [INFO] [Thread-114715] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:10:09.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:10:13.676 [DEBUG] [Thread-114717 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:10:17.752 [DEBUG] [Thread-114715] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:10:17.752 [DEBUG] [Thread-114715] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:10:17.752 [DEBUG] [Thread-114715] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:10:17.793 [DEBUG] [Thread-114715] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:10:17.793 [DEBUG] [Thread-114715] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:10:17.796 [DEBUG] [Thread-114715] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:10:17.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:10:17.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:10:17.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:10:17.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:10:17.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:10:17.957 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:10:17.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:10:17.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:10:17.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:10:17.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.381690 -999.00  +22.20  14.05     11   -9.00 1 1 1 1 1   888    0 31.88 34.99 ----- 15.3 14.1 4.0 24.1 27.9 -28.5 26.8 -28.7 26.2 -27.4 26.8 -27.4
2025-11-03T11:10:17.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:10:17.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:10:17.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.381690
2025-11-03T11:10:17.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:10:17.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:10:17.959 [DEBUG] [Thread-114715] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:10:17.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:10:17.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:10:17.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:10:17.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:09:50', tmtdew=38.52, humidity=6.61, cloud=0.0, wind=13.75, temperature=22.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:09:38.016', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:10:18.043 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:10:18.056 [DEBUG] [Thread-114719] [transport.py] [_log()] starting thread (client mode): 0xed076a0
2025-11-03T11:10:18.056 [DEBUG] [Thread-114719] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:10:18.071 [DEBUG] [Thread-114719] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:10:18.071 [INFO] [Thread-114719] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:10:18.079 [DEBUG] [Thread-114719] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:10:18.079 [DEBUG] [Thread-114719] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:10:18.079 [DEBUG] [Thread-114719] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:10:18.079 [DEBUG] [Thread-114719] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:10:18.079 [DEBUG] [Thread-114719] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:10:18.079 [DEBUG] [Thread-114719] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:10:18.079 [DEBUG] [Thread-114719] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:10:18.079 [DEBUG] [Thread-114719] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:10:18.079 [DEBUG] [Thread-114719] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:10:18.079 [DEBUG] [Thread-114719] [transport.py] [_log()] client lang: <none>
2025-11-03T11:10:18.079 [DEBUG] [Thread-114719] [transport.py] [_log()] server lang: <none>
2025-11-03T11:10:18.079 [DEBUG] [Thread-114719] [transport.py] [_log()] kex follows: False
2025-11-03T11:10:18.079 [DEBUG] [Thread-114719] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:10:18.079 [DEBUG] [Thread-114719] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:10:18.079 [DEBUG] [Thread-114719] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:10:18.080 [DEBUG] [Thread-114719] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:10:18.080 [DEBUG] [Thread-114719] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:10:18.080 [DEBUG] [Thread-114719] [transport.py] [_log()] Compression: none
2025-11-03T11:10:18.080 [DEBUG] [Thread-114719] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:10:18.135 [DEBUG] [Thread-114719] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:10:18.136 [DEBUG] [Thread-114719] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:10:18.137 [DEBUG] [Thread-114719] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:10:18.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:10:18.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:10:18.192 [DEBUG] [Thread-114719] [transport.py] [_log()] userauth is OK
2025-11-03T11:10:18.192 [DEBUG] [Thread-114719] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:10:18.193 [DEBUG] [Thread-114719] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:10:18.193 [DEBUG] [Thread-114719] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:10:18.193 [DEBUG] [Thread-114719] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:10:18.211 [INFO] [Thread-114719] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:10:18.212 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:10:18.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:10:19.059 [DEBUG] [Thread-114719] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:10:19.059 [DEBUG] [Thread-114719] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:10:19.109 [DEBUG] [Thread-114719] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:10:19.109 [DEBUG] [Thread-114719] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:10:19.118 [DEBUG] [Thread-114719] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:10:19.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:10:19.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:10:19.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:10:19.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:10:19.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:10:19.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:10:19.160 [DEBUG] [Thread-114719] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:10:28.714 [DEBUG] [Thread-114721 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:10:29.316 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:10:29.317 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:10:43.770 [DEBUG] [Thread-114722 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:10:49.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:10:49.180 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:10:49.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:10:49.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 10, 22), 38.69, 6.55, 0.0, 17.68, 22.46, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:10:49.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:10:22
2025-11-03T11:10:49.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:10:50.121 [DEBUG] [Thread-114723] [transport.py] [_log()] starting thread (client mode): 0xed66d70
2025-11-03T11:10:50.121 [DEBUG] [Thread-114723] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:10:50.142 [DEBUG] [Thread-114723] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:10:50.142 [INFO] [Thread-114723] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:10:50.152 [DEBUG] [Thread-114723] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:10:50.152 [DEBUG] [Thread-114723] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:10:50.152 [DEBUG] [Thread-114723] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:10:50.152 [DEBUG] [Thread-114723] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:10:50.153 [DEBUG] [Thread-114723] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:10:50.153 [DEBUG] [Thread-114723] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:10:50.153 [DEBUG] [Thread-114723] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:10:50.153 [DEBUG] [Thread-114723] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:10:50.153 [DEBUG] [Thread-114723] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:10:50.153 [DEBUG] [Thread-114723] [transport.py] [_log()] client lang: <none>
2025-11-03T11:10:50.153 [DEBUG] [Thread-114723] [transport.py] [_log()] server lang: <none>
2025-11-03T11:10:50.153 [DEBUG] [Thread-114723] [transport.py] [_log()] kex follows: False
2025-11-03T11:10:50.153 [DEBUG] [Thread-114723] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:10:50.154 [DEBUG] [Thread-114723] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:10:50.154 [DEBUG] [Thread-114723] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:10:50.154 [DEBUG] [Thread-114723] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:10:50.154 [DEBUG] [Thread-114723] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:10:50.154 [DEBUG] [Thread-114723] [transport.py] [_log()] Compression: none
2025-11-03T11:10:50.154 [DEBUG] [Thread-114723] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:10:50.174 [DEBUG] [Thread-114723] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:10:50.174 [DEBUG] [Thread-114723] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:10:50.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:10:50.175 [DEBUG] [Thread-114723] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:10:50.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:10:50.177 [DEBUG] [Thread-114723] [transport.py] [_log()] userauth is OK
2025-11-03T11:10:50.178 [DEBUG] [Thread-114723] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:10:50.178 [DEBUG] [Thread-114723] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:10:50.178 [DEBUG] [Thread-114723] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:10:50.178 [DEBUG] [Thread-114723] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:10:50.213 [INFO] [Thread-114723] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:10:50.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:10:50.844 [DEBUG] [Thread-114723] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:10:50.844 [DEBUG] [Thread-114723] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:10:50.845 [DEBUG] [Thread-114723] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:10:50.885 [DEBUG] [Thread-114723] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:10:50.885 [DEBUG] [Thread-114723] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:10:50.889 [DEBUG] [Thread-114723] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:10:50.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:10:50.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:10:50.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:10:50.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:10:50.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:10:50.914 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:10:50.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:10:50.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:10:50.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:10:50.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.382048 -999.00  +22.60  13.66     11   -8.70 1 1 1 1 1   888    0 32.31 32.96 ----- 18.2 13.7 5.4 18.9 28.1 -28.5 26.9 -27.4 26.3 -27.2 27.0 -27.0
2025-11-03T11:10:50.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:10:50.922 [DEBUG] [Thread-114723] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:10:50.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:10:50.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.382048
2025-11-03T11:10:50.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:10:50.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:10:50.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:10:50.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:10:50.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:10:50.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:10:22', tmtdew=38.69, humidity=6.55, cloud=0.0, wind=17.68, temperature=22.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:10:08.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:10:51.009 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:10:51.022 [DEBUG] [Thread-114726] [transport.py] [_log()] starting thread (client mode): 0xedc5240
2025-11-03T11:10:51.022 [DEBUG] [Thread-114726] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:10:51.039 [DEBUG] [Thread-114726] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:10:51.039 [INFO] [Thread-114726] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:10:51.049 [DEBUG] [Thread-114726] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:10:51.050 [DEBUG] [Thread-114726] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:10:51.050 [DEBUG] [Thread-114726] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:10:51.050 [DEBUG] [Thread-114726] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:10:51.050 [DEBUG] [Thread-114726] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:10:51.050 [DEBUG] [Thread-114726] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:10:51.050 [DEBUG] [Thread-114726] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:10:51.051 [DEBUG] [Thread-114726] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:10:51.051 [DEBUG] [Thread-114726] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:10:51.051 [DEBUG] [Thread-114726] [transport.py] [_log()] client lang: <none>
2025-11-03T11:10:51.051 [DEBUG] [Thread-114726] [transport.py] [_log()] server lang: <none>
2025-11-03T11:10:51.051 [DEBUG] [Thread-114726] [transport.py] [_log()] kex follows: False
2025-11-03T11:10:51.051 [DEBUG] [Thread-114726] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:10:51.051 [DEBUG] [Thread-114726] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:10:51.052 [DEBUG] [Thread-114726] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:10:51.052 [DEBUG] [Thread-114726] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:10:51.052 [DEBUG] [Thread-114726] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:10:51.052 [DEBUG] [Thread-114726] [transport.py] [_log()] Compression: none
2025-11-03T11:10:51.052 [DEBUG] [Thread-114726] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:10:51.111 [DEBUG] [Thread-114726] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:10:51.112 [DEBUG] [Thread-114726] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:10:51.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:10:51.113 [DEBUG] [Thread-114726] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:10:51.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:10:51.167 [DEBUG] [Thread-114726] [transport.py] [_log()] userauth is OK
2025-11-03T11:10:51.167 [DEBUG] [Thread-114726] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:10:51.168 [DEBUG] [Thread-114726] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:10:51.168 [DEBUG] [Thread-114726] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:10:51.168 [DEBUG] [Thread-114726] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:10:51.187 [INFO] [Thread-114726] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:10:51.188 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:10:51.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:10:52.076 [DEBUG] [Thread-114726] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:10:52.077 [DEBUG] [Thread-114726] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:10:52.125 [DEBUG] [Thread-114726] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:10:52.125 [DEBUG] [Thread-114726] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:10:52.134 [DEBUG] [Thread-114726] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:10:52.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:10:52.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:10:52.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:10:52.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:10:52.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:10:52.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:10:52.170 [DEBUG] [Thread-114726] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:10:55.638 [DEBUG] [Thread-114728 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:10:58.807 [DEBUG] [Thread-114729 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:11:13.870 [DEBUG] [Thread-114730 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:11:22.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:11:22.192 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:11:22.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:11:22.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 10, 55), 38.94, 6.06, 0.0, 16.5, 22.82, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:11:22.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:10:55
2025-11-03T11:11:22.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:11:23.130 [DEBUG] [Thread-114731] [transport.py] [_log()] starting thread (client mode): 0xedc4310
2025-11-03T11:11:23.130 [DEBUG] [Thread-114731] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:11:23.150 [DEBUG] [Thread-114731] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:11:23.150 [INFO] [Thread-114731] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:11:23.153 [DEBUG] [Thread-114731] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:11:23.153 [DEBUG] [Thread-114731] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:11:23.153 [DEBUG] [Thread-114731] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:11:23.153 [DEBUG] [Thread-114731] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:11:23.153 [DEBUG] [Thread-114731] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:11:23.153 [DEBUG] [Thread-114731] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:11:23.153 [DEBUG] [Thread-114731] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:11:23.153 [DEBUG] [Thread-114731] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:11:23.153 [DEBUG] [Thread-114731] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:11:23.153 [DEBUG] [Thread-114731] [transport.py] [_log()] client lang: <none>
2025-11-03T11:11:23.153 [DEBUG] [Thread-114731] [transport.py] [_log()] server lang: <none>
2025-11-03T11:11:23.153 [DEBUG] [Thread-114731] [transport.py] [_log()] kex follows: False
2025-11-03T11:11:23.153 [DEBUG] [Thread-114731] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:11:23.153 [DEBUG] [Thread-114731] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:11:23.153 [DEBUG] [Thread-114731] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:11:23.153 [DEBUG] [Thread-114731] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:11:23.153 [DEBUG] [Thread-114731] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:11:23.153 [DEBUG] [Thread-114731] [transport.py] [_log()] Compression: none
2025-11-03T11:11:23.153 [DEBUG] [Thread-114731] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:11:23.168 [DEBUG] [Thread-114731] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:11:23.169 [DEBUG] [Thread-114731] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:11:23.169 [DEBUG] [Thread-114731] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:11:23.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:11:23.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:11:23.171 [DEBUG] [Thread-114731] [transport.py] [_log()] userauth is OK
2025-11-03T11:11:23.172 [DEBUG] [Thread-114731] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:11:23.172 [DEBUG] [Thread-114731] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:11:23.172 [DEBUG] [Thread-114731] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:11:23.172 [DEBUG] [Thread-114731] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:11:23.195 [INFO] [Thread-114731] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:11:23.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:11:24.001 [DEBUG] [Thread-114731] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:11:24.001 [DEBUG] [Thread-114731] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:11:24.001 [DEBUG] [Thread-114731] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:11:24.043 [DEBUG] [Thread-114731] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:11:24.043 [DEBUG] [Thread-114731] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:11:24.045 [DEBUG] [Thread-114731] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:11:24.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:11:24.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:11:24.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:11:24.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:11:24.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:11:24.058 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:11:24.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:11:24.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:11:24.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:11:24.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.382384 -999.00  +22.70  12.85     11   -8.80 1 1 1 1 1   888    0 32.41 33.40 ----- 14.8 12.8 356.4 18.8 28.1 -28.7 27.1 -28.7 26.4 -27.6 27.1 -30.0
2025-11-03T11:11:24.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:11:24.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:11:24.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.382384
2025-11-03T11:11:24.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:11:24.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:11:24.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:11:24.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:11:24.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:11:24.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:10:55', tmtdew=38.94, humidity=6.06, cloud=0.0, wind=16.5, temperature=22.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:10:37.978', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:11:24.059 [DEBUG] [Thread-114731] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:11:24.132 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:11:24.144 [DEBUG] [Thread-114734] [transport.py] [_log()] starting thread (client mode): 0xed2c6a0
2025-11-03T11:11:24.144 [DEBUG] [Thread-114734] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:11:24.159 [DEBUG] [Thread-114734] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:11:24.159 [INFO] [Thread-114734] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:11:24.166 [DEBUG] [Thread-114734] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:11:24.166 [DEBUG] [Thread-114734] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:11:24.166 [DEBUG] [Thread-114734] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:11:24.166 [DEBUG] [Thread-114734] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:11:24.166 [DEBUG] [Thread-114734] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:11:24.166 [DEBUG] [Thread-114734] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:11:24.166 [DEBUG] [Thread-114734] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:11:24.166 [DEBUG] [Thread-114734] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:11:24.166 [DEBUG] [Thread-114734] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:11:24.166 [DEBUG] [Thread-114734] [transport.py] [_log()] client lang: <none>
2025-11-03T11:11:24.166 [DEBUG] [Thread-114734] [transport.py] [_log()] server lang: <none>
2025-11-03T11:11:24.166 [DEBUG] [Thread-114734] [transport.py] [_log()] kex follows: False
2025-11-03T11:11:24.166 [DEBUG] [Thread-114734] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:11:24.166 [DEBUG] [Thread-114734] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:11:24.166 [DEBUG] [Thread-114734] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:11:24.166 [DEBUG] [Thread-114734] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:11:24.166 [DEBUG] [Thread-114734] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:11:24.166 [DEBUG] [Thread-114734] [transport.py] [_log()] Compression: none
2025-11-03T11:11:24.166 [DEBUG] [Thread-114734] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:11:24.221 [DEBUG] [Thread-114734] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:11:24.221 [DEBUG] [Thread-114734] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:11:24.221 [DEBUG] [Thread-114734] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:11:24.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:11:24.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:11:24.279 [DEBUG] [Thread-114734] [transport.py] [_log()] userauth is OK
2025-11-03T11:11:24.279 [DEBUG] [Thread-114734] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:11:24.279 [DEBUG] [Thread-114734] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:11:24.279 [DEBUG] [Thread-114734] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:11:24.279 [DEBUG] [Thread-114734] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:11:24.300 [INFO] [Thread-114734] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:11:24.309 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:11:24.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:11:25.196 [DEBUG] [Thread-114734] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:11:25.197 [DEBUG] [Thread-114734] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:11:25.244 [DEBUG] [Thread-114734] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:11:25.245 [DEBUG] [Thread-114734] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:11:25.253 [DEBUG] [Thread-114734] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:11:25.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:11:25.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:11:25.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:11:25.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:11:25.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:11:25.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:11:25.296 [DEBUG] [Thread-114734] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:11:28.900 [DEBUG] [Thread-114736 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:11:29.457 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:11:29.458 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:11:43.945 [DEBUG] [Thread-114737 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:11:55.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:11:55.319 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:11:55.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:11:55.680 [DEBUG] [Thread-114738 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:11:56.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 11, 27), 38.98, 6.03, 0.0, 16.29, 22.71, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:11:56.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:11:27
2025-11-03T11:11:56.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:11:56.306 [DEBUG] [Thread-114739] [transport.py] [_log()] starting thread (client mode): 0xedc4430
2025-11-03T11:11:56.306 [DEBUG] [Thread-114739] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:11:56.326 [DEBUG] [Thread-114739] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:11:56.326 [INFO] [Thread-114739] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:11:56.330 [DEBUG] [Thread-114739] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:11:56.330 [DEBUG] [Thread-114739] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:11:56.330 [DEBUG] [Thread-114739] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:11:56.330 [DEBUG] [Thread-114739] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:11:56.330 [DEBUG] [Thread-114739] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:11:56.330 [DEBUG] [Thread-114739] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:11:56.330 [DEBUG] [Thread-114739] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:11:56.330 [DEBUG] [Thread-114739] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:11:56.330 [DEBUG] [Thread-114739] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:11:56.330 [DEBUG] [Thread-114739] [transport.py] [_log()] client lang: <none>
2025-11-03T11:11:56.330 [DEBUG] [Thread-114739] [transport.py] [_log()] server lang: <none>
2025-11-03T11:11:56.330 [DEBUG] [Thread-114739] [transport.py] [_log()] kex follows: False
2025-11-03T11:11:56.330 [DEBUG] [Thread-114739] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:11:56.330 [DEBUG] [Thread-114739] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:11:56.330 [DEBUG] [Thread-114739] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:11:56.330 [DEBUG] [Thread-114739] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:11:56.330 [DEBUG] [Thread-114739] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:11:56.330 [DEBUG] [Thread-114739] [transport.py] [_log()] Compression: none
2025-11-03T11:11:56.330 [DEBUG] [Thread-114739] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:11:56.346 [DEBUG] [Thread-114739] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:11:56.346 [DEBUG] [Thread-114739] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:11:56.346 [DEBUG] [Thread-114739] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:11:56.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:11:56.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:11:56.347 [DEBUG] [Thread-114739] [transport.py] [_log()] userauth is OK
2025-11-03T11:11:56.347 [DEBUG] [Thread-114739] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:11:56.347 [DEBUG] [Thread-114739] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:11:56.347 [DEBUG] [Thread-114739] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:11:56.347 [DEBUG] [Thread-114739] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:11:56.362 [INFO] [Thread-114739] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:11:56.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:11:56.992 [DEBUG] [Thread-114739] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:11:56.992 [DEBUG] [Thread-114739] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:11:56.992 [DEBUG] [Thread-114739] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:11:57.033 [DEBUG] [Thread-114739] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:11:57.033 [DEBUG] [Thread-114739] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:11:57.035 [DEBUG] [Thread-114739] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:11:57.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:11:57.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:11:57.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:11:57.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:11:57.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:11:57.053 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:11:57.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:11:57.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:11:57.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:11:57.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.382732 -999.00  +22.30   8.49     11   -9.10 1 1 1 1 1   888    0 32.40 31.34 ----- 11.9 8.5 346.6 12.2 28.2 -28.6 27.1 -28.4 26.4 -28.0 27.1 -28.8
2025-11-03T11:11:57.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:11:57.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:11:57.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.382732
2025-11-03T11:11:57.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:11:57.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:11:57.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:11:57.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:11:57.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:11:57.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:11:27', tmtdew=38.98, humidity=6.03, cloud=0.0, wind=16.29, temperature=22.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:11:08.045', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:11:57.054 [DEBUG] [Thread-114739] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:11:57.128 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:11:57.142 [DEBUG] [Thread-114742] [transport.py] [_log()] starting thread (client mode): 0xed43490
2025-11-03T11:11:57.142 [DEBUG] [Thread-114742] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:11:57.159 [DEBUG] [Thread-114742] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:11:57.159 [INFO] [Thread-114742] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:11:57.169 [DEBUG] [Thread-114742] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:11:57.169 [DEBUG] [Thread-114742] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:11:57.170 [DEBUG] [Thread-114742] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:11:57.170 [DEBUG] [Thread-114742] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:11:57.170 [DEBUG] [Thread-114742] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:11:57.170 [DEBUG] [Thread-114742] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:11:57.170 [DEBUG] [Thread-114742] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:11:57.170 [DEBUG] [Thread-114742] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:11:57.170 [DEBUG] [Thread-114742] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:11:57.170 [DEBUG] [Thread-114742] [transport.py] [_log()] client lang: <none>
2025-11-03T11:11:57.170 [DEBUG] [Thread-114742] [transport.py] [_log()] server lang: <none>
2025-11-03T11:11:57.170 [DEBUG] [Thread-114742] [transport.py] [_log()] kex follows: False
2025-11-03T11:11:57.170 [DEBUG] [Thread-114742] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:11:57.170 [DEBUG] [Thread-114742] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:11:57.170 [DEBUG] [Thread-114742] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:11:57.170 [DEBUG] [Thread-114742] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:11:57.170 [DEBUG] [Thread-114742] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:11:57.170 [DEBUG] [Thread-114742] [transport.py] [_log()] Compression: none
2025-11-03T11:11:57.170 [DEBUG] [Thread-114742] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:11:57.226 [DEBUG] [Thread-114742] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:11:57.226 [DEBUG] [Thread-114742] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:11:57.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:11:57.226 [DEBUG] [Thread-114742] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:11:57.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:11:57.284 [DEBUG] [Thread-114742] [transport.py] [_log()] userauth is OK
2025-11-03T11:11:57.284 [DEBUG] [Thread-114742] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:11:57.284 [DEBUG] [Thread-114742] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:11:57.284 [DEBUG] [Thread-114742] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:11:57.284 [DEBUG] [Thread-114742] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:11:57.303 [INFO] [Thread-114742] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:11:57.303 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:11:57.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:11:58.164 [DEBUG] [Thread-114742] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:11:58.164 [DEBUG] [Thread-114742] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:11:58.216 [DEBUG] [Thread-114742] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:11:58.216 [DEBUG] [Thread-114742] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:11:58.227 [DEBUG] [Thread-114742] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:11:58.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:11:58.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:11:58.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:11:58.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:11:58.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:11:58.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:11:58.271 [DEBUG] [Thread-114742] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:11:58.977 [DEBUG] [Thread-114744 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:12:14.023 [DEBUG] [Thread-114745 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:12:28.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:12:28.291 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:12:28.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:12:28.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 11, 59), 38.7, 6.6, 0.0, 12.6, 22.81, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:12:28.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:11:59
2025-11-03T11:12:29.061 [DEBUG] [Thread-114746 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:12:29.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:12:29.239 [DEBUG] [Thread-114747] [transport.py] [_log()] starting thread (client mode): 0xed351b0
2025-11-03T11:12:29.239 [DEBUG] [Thread-114747] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:12:29.259 [DEBUG] [Thread-114747] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:12:29.259 [INFO] [Thread-114747] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:12:29.262 [DEBUG] [Thread-114747] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:12:29.262 [DEBUG] [Thread-114747] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:12:29.262 [DEBUG] [Thread-114747] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:12:29.262 [DEBUG] [Thread-114747] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:12:29.262 [DEBUG] [Thread-114747] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:12:29.263 [DEBUG] [Thread-114747] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:12:29.263 [DEBUG] [Thread-114747] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:12:29.263 [DEBUG] [Thread-114747] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:12:29.263 [DEBUG] [Thread-114747] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:12:29.263 [DEBUG] [Thread-114747] [transport.py] [_log()] client lang: <none>
2025-11-03T11:12:29.263 [DEBUG] [Thread-114747] [transport.py] [_log()] server lang: <none>
2025-11-03T11:12:29.263 [DEBUG] [Thread-114747] [transport.py] [_log()] kex follows: False
2025-11-03T11:12:29.263 [DEBUG] [Thread-114747] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:12:29.263 [DEBUG] [Thread-114747] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:12:29.263 [DEBUG] [Thread-114747] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:12:29.263 [DEBUG] [Thread-114747] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:12:29.263 [DEBUG] [Thread-114747] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:12:29.263 [DEBUG] [Thread-114747] [transport.py] [_log()] Compression: none
2025-11-03T11:12:29.263 [DEBUG] [Thread-114747] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:12:29.283 [DEBUG] [Thread-114747] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:12:29.283 [DEBUG] [Thread-114747] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:12:29.284 [DEBUG] [Thread-114747] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:12:29.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:12:29.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:12:29.324 [DEBUG] [Thread-114747] [transport.py] [_log()] userauth is OK
2025-11-03T11:12:29.324 [DEBUG] [Thread-114747] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:12:29.324 [DEBUG] [Thread-114747] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:12:29.325 [DEBUG] [Thread-114747] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:12:29.325 [DEBUG] [Thread-114747] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:12:29.344 [INFO] [Thread-114747] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:12:29.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:12:29.597 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:12:29.599 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:12:30.105 [DEBUG] [Thread-114747] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:12:30.106 [DEBUG] [Thread-114747] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:12:30.106 [DEBUG] [Thread-114747] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:12:30.146 [DEBUG] [Thread-114747] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:12:30.147 [DEBUG] [Thread-114747] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:12:30.150 [DEBUG] [Thread-114747] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:12:30.159 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:12:30.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:12:30.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:12:30.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:12:30.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:12:30.168 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:12:30.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:12:30.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:12:30.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:12:30.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.383079 -999.00  +22.30  17.71     11   -9.00 1 1 1 1 1   888    0 32.63 36.44 ----- 20.4 17.7 357.6 21.7 28.3 -29.5 27.2 -28.6 26.4 -28.0 27.0 -30.0
2025-11-03T11:12:30.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:12:30.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:12:30.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.383079
2025-11-03T11:12:30.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:12:30.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:12:30.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:12:30.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:12:30.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:12:30.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:11:59', tmtdew=38.7, humidity=6.6, cloud=0.0, wind=12.6, temperature=22.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:11:38.026', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:12:30.172 [DEBUG] [Thread-114747] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:12:30.255 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:12:30.280 [DEBUG] [Thread-114750] [transport.py] [_log()] starting thread (client mode): 0x1179a680
2025-11-03T11:12:30.281 [DEBUG] [Thread-114750] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:12:30.293 [DEBUG] [Thread-114750] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:12:30.294 [INFO] [Thread-114750] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:12:30.301 [DEBUG] [Thread-114750] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:12:30.301 [DEBUG] [Thread-114750] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:12:30.301 [DEBUG] [Thread-114750] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:12:30.301 [DEBUG] [Thread-114750] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:12:30.302 [DEBUG] [Thread-114750] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:12:30.302 [DEBUG] [Thread-114750] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:12:30.302 [DEBUG] [Thread-114750] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:12:30.302 [DEBUG] [Thread-114750] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:12:30.302 [DEBUG] [Thread-114750] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:12:30.302 [DEBUG] [Thread-114750] [transport.py] [_log()] client lang: <none>
2025-11-03T11:12:30.302 [DEBUG] [Thread-114750] [transport.py] [_log()] server lang: <none>
2025-11-03T11:12:30.302 [DEBUG] [Thread-114750] [transport.py] [_log()] kex follows: False
2025-11-03T11:12:30.302 [DEBUG] [Thread-114750] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:12:30.302 [DEBUG] [Thread-114750] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:12:30.302 [DEBUG] [Thread-114750] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:12:30.302 [DEBUG] [Thread-114750] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:12:30.302 [DEBUG] [Thread-114750] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:12:30.302 [DEBUG] [Thread-114750] [transport.py] [_log()] Compression: none
2025-11-03T11:12:30.302 [DEBUG] [Thread-114750] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:12:30.362 [DEBUG] [Thread-114750] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:12:30.363 [DEBUG] [Thread-114750] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:12:30.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:12:30.364 [DEBUG] [Thread-114750] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:12:30.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:12:30.419 [DEBUG] [Thread-114750] [transport.py] [_log()] userauth is OK
2025-11-03T11:12:30.419 [DEBUG] [Thread-114750] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:12:30.419 [DEBUG] [Thread-114750] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:12:30.419 [DEBUG] [Thread-114750] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:12:30.419 [DEBUG] [Thread-114750] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:12:30.438 [INFO] [Thread-114750] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:12:30.447 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:12:30.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:12:31.284 [DEBUG] [Thread-114750] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:12:31.284 [DEBUG] [Thread-114750] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:12:31.333 [DEBUG] [Thread-114750] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:12:31.333 [DEBUG] [Thread-114750] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:12:31.342 [DEBUG] [Thread-114750] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:12:31.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:12:31.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:12:31.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:12:31.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:12:31.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:12:31.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:12:31.388 [DEBUG] [Thread-114750] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:12:44.094 [DEBUG] [Thread-114752 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:12:55.742 [DEBUG] [Thread-114753 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:12:59.157 [DEBUG] [Thread-114754 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:13:01.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:13:01.388 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:13:01.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:13:02.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 12, 31), 38.58, 6.66, 0.0, 14.84, 22.86, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:13:02.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:12:31
2025-11-03T11:13:02.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:13:02.337 [DEBUG] [Thread-114755] [transport.py] [_log()] starting thread (client mode): 0xed06620
2025-11-03T11:13:02.338 [DEBUG] [Thread-114755] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:13:02.351 [DEBUG] [Thread-114755] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:13:02.351 [INFO] [Thread-114755] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:13:02.354 [DEBUG] [Thread-114755] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:13:02.354 [DEBUG] [Thread-114755] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:13:02.354 [DEBUG] [Thread-114755] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:13:02.354 [DEBUG] [Thread-114755] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:13:02.354 [DEBUG] [Thread-114755] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:13:02.354 [DEBUG] [Thread-114755] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:13:02.354 [DEBUG] [Thread-114755] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:13:02.354 [DEBUG] [Thread-114755] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:13:02.354 [DEBUG] [Thread-114755] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:13:02.354 [DEBUG] [Thread-114755] [transport.py] [_log()] client lang: <none>
2025-11-03T11:13:02.354 [DEBUG] [Thread-114755] [transport.py] [_log()] server lang: <none>
2025-11-03T11:13:02.354 [DEBUG] [Thread-114755] [transport.py] [_log()] kex follows: False
2025-11-03T11:13:02.354 [DEBUG] [Thread-114755] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:13:02.355 [DEBUG] [Thread-114755] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:13:02.355 [DEBUG] [Thread-114755] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:13:02.355 [DEBUG] [Thread-114755] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:13:02.355 [DEBUG] [Thread-114755] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:13:02.355 [DEBUG] [Thread-114755] [transport.py] [_log()] Compression: none
2025-11-03T11:13:02.355 [DEBUG] [Thread-114755] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:13:02.372 [DEBUG] [Thread-114755] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:13:02.373 [DEBUG] [Thread-114755] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:13:02.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:13:02.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:13:02.373 [DEBUG] [Thread-114755] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:13:02.416 [DEBUG] [Thread-114755] [transport.py] [_log()] userauth is OK
2025-11-03T11:13:02.416 [DEBUG] [Thread-114755] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:13:02.416 [DEBUG] [Thread-114755] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:13:02.416 [DEBUG] [Thread-114755] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:13:02.416 [DEBUG] [Thread-114755] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:13:02.443 [INFO] [Thread-114755] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:13:02.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:13:03.090 [DEBUG] [Thread-114755] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:13:03.090 [DEBUG] [Thread-114755] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:13:03.091 [DEBUG] [Thread-114755] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:13:03.131 [DEBUG] [Thread-114755] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:13:03.131 [DEBUG] [Thread-114755] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:13:03.134 [DEBUG] [Thread-114755] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:13:03.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:13:03.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:13:03.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:13:03.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:13:03.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:13:03.158 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:13:03.159 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:13:03.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:13:03.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:13:03.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.383426 -999.00  +22.70  23.41     11   -8.40 1 1 1 1 1   888    0 31.57 33.29 ----- 25.7 23.4 40.0 28.1 28.2 -29.2 27.2 -29.1 26.4 -27.3 27.2 -27.4
2025-11-03T11:13:03.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:13:03.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:13:03.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.383426
2025-11-03T11:13:03.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:13:03.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:13:03.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:13:03.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:13:03.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:13:03.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:12:31', tmtdew=38.58, humidity=6.66, cloud=0.0, wind=14.84, temperature=22.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:12:08.006', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:13:03.161 [DEBUG] [Thread-114755] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:13:03.247 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:13:03.258 [DEBUG] [Thread-114758] [transport.py] [_log()] starting thread (client mode): 0x11799a80
2025-11-03T11:13:03.258 [DEBUG] [Thread-114758] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:13:03.272 [DEBUG] [Thread-114758] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:13:03.273 [INFO] [Thread-114758] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:13:03.280 [DEBUG] [Thread-114758] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:13:03.280 [DEBUG] [Thread-114758] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:13:03.280 [DEBUG] [Thread-114758] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:13:03.280 [DEBUG] [Thread-114758] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:13:03.280 [DEBUG] [Thread-114758] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:13:03.280 [DEBUG] [Thread-114758] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:13:03.281 [DEBUG] [Thread-114758] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:13:03.281 [DEBUG] [Thread-114758] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:13:03.281 [DEBUG] [Thread-114758] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:13:03.281 [DEBUG] [Thread-114758] [transport.py] [_log()] client lang: <none>
2025-11-03T11:13:03.281 [DEBUG] [Thread-114758] [transport.py] [_log()] server lang: <none>
2025-11-03T11:13:03.281 [DEBUG] [Thread-114758] [transport.py] [_log()] kex follows: False
2025-11-03T11:13:03.281 [DEBUG] [Thread-114758] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:13:03.281 [DEBUG] [Thread-114758] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:13:03.281 [DEBUG] [Thread-114758] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:13:03.281 [DEBUG] [Thread-114758] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:13:03.281 [DEBUG] [Thread-114758] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:13:03.281 [DEBUG] [Thread-114758] [transport.py] [_log()] Compression: none
2025-11-03T11:13:03.281 [DEBUG] [Thread-114758] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:13:03.338 [DEBUG] [Thread-114758] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:13:03.339 [DEBUG] [Thread-114758] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:13:03.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:13:03.340 [DEBUG] [Thread-114758] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:13:03.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:13:03.394 [DEBUG] [Thread-114758] [transport.py] [_log()] userauth is OK
2025-11-03T11:13:03.395 [DEBUG] [Thread-114758] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:13:03.395 [DEBUG] [Thread-114758] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:13:03.396 [DEBUG] [Thread-114758] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:13:03.396 [DEBUG] [Thread-114758] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:13:03.415 [INFO] [Thread-114758] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:13:03.416 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:13:03.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:13:04.278 [DEBUG] [Thread-114758] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:13:04.278 [DEBUG] [Thread-114758] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:13:04.325 [DEBUG] [Thread-114758] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:13:04.326 [DEBUG] [Thread-114758] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:13:04.335 [DEBUG] [Thread-114758] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:13:04.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:13:04.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:13:04.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:13:04.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:13:04.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:13:04.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:13:04.371 [DEBUG] [Thread-114758] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:13:14.197 [DEBUG] [Thread-114760 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:13:29.236 [DEBUG] [Thread-114761 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:13:29.740 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:13:29.741 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:13:34.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:13:34.394 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:13:34.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:13:35.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 13, 4), 38.66, 6.61, 0.0, 14.29, 22.79, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:13:35.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:13:04
2025-11-03T11:13:35.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:13:35.340 [DEBUG] [Thread-114762] [transport.py] [_log()] starting thread (client mode): 0xed2dc30
2025-11-03T11:13:35.340 [DEBUG] [Thread-114762] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:13:35.360 [DEBUG] [Thread-114762] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:13:35.361 [INFO] [Thread-114762] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:13:35.364 [DEBUG] [Thread-114762] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:13:35.364 [DEBUG] [Thread-114762] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:13:35.364 [DEBUG] [Thread-114762] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:13:35.364 [DEBUG] [Thread-114762] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:13:35.364 [DEBUG] [Thread-114762] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:13:35.364 [DEBUG] [Thread-114762] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:13:35.364 [DEBUG] [Thread-114762] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:13:35.364 [DEBUG] [Thread-114762] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:13:35.364 [DEBUG] [Thread-114762] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:13:35.364 [DEBUG] [Thread-114762] [transport.py] [_log()] client lang: <none>
2025-11-03T11:13:35.364 [DEBUG] [Thread-114762] [transport.py] [_log()] server lang: <none>
2025-11-03T11:13:35.365 [DEBUG] [Thread-114762] [transport.py] [_log()] kex follows: False
2025-11-03T11:13:35.365 [DEBUG] [Thread-114762] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:13:35.365 [DEBUG] [Thread-114762] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:13:35.365 [DEBUG] [Thread-114762] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:13:35.365 [DEBUG] [Thread-114762] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:13:35.365 [DEBUG] [Thread-114762] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:13:35.365 [DEBUG] [Thread-114762] [transport.py] [_log()] Compression: none
2025-11-03T11:13:35.365 [DEBUG] [Thread-114762] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:13:35.383 [DEBUG] [Thread-114762] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:13:35.384 [DEBUG] [Thread-114762] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:13:35.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:13:35.385 [DEBUG] [Thread-114762] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:13:35.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:13:35.387 [DEBUG] [Thread-114762] [transport.py] [_log()] userauth is OK
2025-11-03T11:13:35.387 [DEBUG] [Thread-114762] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:13:35.387 [DEBUG] [Thread-114762] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:13:35.387 [DEBUG] [Thread-114762] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:13:35.387 [DEBUG] [Thread-114762] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:13:35.405 [INFO] [Thread-114762] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:13:35.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:13:36.218 [DEBUG] [Thread-114762] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:13:36.219 [DEBUG] [Thread-114762] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:13:36.219 [DEBUG] [Thread-114762] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:13:36.260 [DEBUG] [Thread-114762] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:13:36.260 [DEBUG] [Thread-114762] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:13:36.262 [DEBUG] [Thread-114762] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:13:36.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:13:36.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:13:36.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:13:36.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:13:36.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:13:36.284 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:13:36.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:13:36.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:13:36.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:13:36.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.384120 -999.00  +22.70  17.35     11   -8.40 1 1 1 1 1   888    0 32.26 26.17 ----- 14.7 17.4 40.8 19.9 28.4 -28.0 27.3 -28.1 26.5 -26.9 27.4 -27.6
2025-11-03T11:13:36.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:13:36.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:13:36.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.384120
2025-11-03T11:13:36.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:13:36.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:13:36.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:13:36.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:13:36.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:13:36.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:13:04', tmtdew=38.66, humidity=6.61, cloud=0.0, wind=14.29, temperature=22.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:13:07.968', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:13:36.287 [DEBUG] [Thread-114762] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:13:36.370 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:13:36.383 [DEBUG] [Thread-114765] [transport.py] [_log()] starting thread (client mode): 0xed2e710
2025-11-03T11:13:36.383 [DEBUG] [Thread-114765] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:13:36.398 [DEBUG] [Thread-114765] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:13:36.398 [INFO] [Thread-114765] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:13:36.405 [DEBUG] [Thread-114765] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:13:36.405 [DEBUG] [Thread-114765] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:13:36.406 [DEBUG] [Thread-114765] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:13:36.406 [DEBUG] [Thread-114765] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:13:36.406 [DEBUG] [Thread-114765] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:13:36.406 [DEBUG] [Thread-114765] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:13:36.406 [DEBUG] [Thread-114765] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:13:36.406 [DEBUG] [Thread-114765] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:13:36.406 [DEBUG] [Thread-114765] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:13:36.406 [DEBUG] [Thread-114765] [transport.py] [_log()] client lang: <none>
2025-11-03T11:13:36.406 [DEBUG] [Thread-114765] [transport.py] [_log()] server lang: <none>
2025-11-03T11:13:36.406 [DEBUG] [Thread-114765] [transport.py] [_log()] kex follows: False
2025-11-03T11:13:36.407 [DEBUG] [Thread-114765] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:13:36.407 [DEBUG] [Thread-114765] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:13:36.407 [DEBUG] [Thread-114765] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:13:36.407 [DEBUG] [Thread-114765] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:13:36.407 [DEBUG] [Thread-114765] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:13:36.407 [DEBUG] [Thread-114765] [transport.py] [_log()] Compression: none
2025-11-03T11:13:36.407 [DEBUG] [Thread-114765] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:13:36.465 [DEBUG] [Thread-114765] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:13:36.465 [DEBUG] [Thread-114765] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:13:36.466 [DEBUG] [Thread-114765] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:13:36.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:13:36.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:13:36.522 [DEBUG] [Thread-114765] [transport.py] [_log()] userauth is OK
2025-11-03T11:13:36.522 [DEBUG] [Thread-114765] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:13:36.522 [DEBUG] [Thread-114765] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:13:36.522 [DEBUG] [Thread-114765] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:13:36.522 [DEBUG] [Thread-114765] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:13:36.541 [INFO] [Thread-114765] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:13:36.542 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:13:36.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:13:37.396 [DEBUG] [Thread-114765] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:13:37.396 [DEBUG] [Thread-114765] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:13:37.444 [DEBUG] [Thread-114765] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:13:37.445 [DEBUG] [Thread-114765] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:13:37.453 [DEBUG] [Thread-114765] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:13:37.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:13:37.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:13:37.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:13:37.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:13:37.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:13:37.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:13:37.485 [DEBUG] [Thread-114765] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:13:44.273 [DEBUG] [Thread-114767 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:13:55.775 [DEBUG] [Thread-114768 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:13:59.324 [DEBUG] [Thread-114769 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:14:07.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:14:07.498 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:14:07.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:14:08.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 13, 36), 38.59, 6.23, 0.0, 19.48, 22.99, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:14:08.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:13:36
2025-11-03T11:14:08.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:14:08.459 [DEBUG] [Thread-114770] [transport.py] [_log()] starting thread (client mode): 0xed2d1b0
2025-11-03T11:14:08.460 [DEBUG] [Thread-114770] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:14:08.479 [DEBUG] [Thread-114770] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:14:08.479 [INFO] [Thread-114770] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:14:08.482 [DEBUG] [Thread-114770] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:14:08.482 [DEBUG] [Thread-114770] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:14:08.482 [DEBUG] [Thread-114770] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:14:08.482 [DEBUG] [Thread-114770] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:14:08.482 [DEBUG] [Thread-114770] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:14:08.483 [DEBUG] [Thread-114770] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:14:08.483 [DEBUG] [Thread-114770] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:14:08.483 [DEBUG] [Thread-114770] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:14:08.483 [DEBUG] [Thread-114770] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:14:08.483 [DEBUG] [Thread-114770] [transport.py] [_log()] client lang: <none>
2025-11-03T11:14:08.483 [DEBUG] [Thread-114770] [transport.py] [_log()] server lang: <none>
2025-11-03T11:14:08.483 [DEBUG] [Thread-114770] [transport.py] [_log()] kex follows: False
2025-11-03T11:14:08.483 [DEBUG] [Thread-114770] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:14:08.483 [DEBUG] [Thread-114770] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:14:08.483 [DEBUG] [Thread-114770] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:14:08.483 [DEBUG] [Thread-114770] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:14:08.483 [DEBUG] [Thread-114770] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:14:08.483 [DEBUG] [Thread-114770] [transport.py] [_log()] Compression: none
2025-11-03T11:14:08.483 [DEBUG] [Thread-114770] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:14:08.501 [DEBUG] [Thread-114770] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:14:08.502 [DEBUG] [Thread-114770] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:14:08.502 [DEBUG] [Thread-114770] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:14:08.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:14:08.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:14:08.504 [DEBUG] [Thread-114770] [transport.py] [_log()] userauth is OK
2025-11-03T11:14:08.505 [DEBUG] [Thread-114770] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:14:08.505 [DEBUG] [Thread-114770] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:14:08.505 [DEBUG] [Thread-114770] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:14:08.505 [DEBUG] [Thread-114770] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:14:08.529 [INFO] [Thread-114770] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:14:08.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:14:09.174 [DEBUG] [Thread-114770] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:14:09.175 [DEBUG] [Thread-114770] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:14:09.175 [DEBUG] [Thread-114770] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:14:09.216 [DEBUG] [Thread-114770] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:14:09.216 [DEBUG] [Thread-114770] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:14:09.219 [DEBUG] [Thread-114770] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:14:09.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:14:09.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:14:09.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:14:09.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:14:09.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:14:09.243 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:14:09.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:14:09.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:14:09.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:14:09.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.384468 -999.00  +22.90  15.13     11   -8.50 1 1 1 1 1   888    0 31.58 23.22 ----- 19.1 15.1 40.2 18.1 28.6 -28.3 27.4 -27.8 26.7 -27.0 27.6 -27.3
2025-11-03T11:14:09.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:14:09.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:14:09.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.384468
2025-11-03T11:14:09.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:14:09.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:14:09.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:14:09.245 [DEBUG] [Thread-114770] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:14:09.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:14:09.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:14:09.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:13:36', tmtdew=38.59, humidity=6.23, cloud=0.0, wind=19.48, temperature=22.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:13:38.035', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:14:09.330 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:14:09.342 [DEBUG] [Thread-114773] [transport.py] [_log()] starting thread (client mode): 0x11798b80
2025-11-03T11:14:09.342 [DEBUG] [Thread-114773] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:14:09.357 [DEBUG] [Thread-114773] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:14:09.357 [INFO] [Thread-114773] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:14:09.365 [DEBUG] [Thread-114773] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:14:09.365 [DEBUG] [Thread-114773] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:14:09.365 [DEBUG] [Thread-114773] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:14:09.365 [DEBUG] [Thread-114773] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:14:09.365 [DEBUG] [Thread-114773] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:14:09.365 [DEBUG] [Thread-114773] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:14:09.365 [DEBUG] [Thread-114773] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:14:09.365 [DEBUG] [Thread-114773] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:14:09.365 [DEBUG] [Thread-114773] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:14:09.366 [DEBUG] [Thread-114773] [transport.py] [_log()] client lang: <none>
2025-11-03T11:14:09.366 [DEBUG] [Thread-114773] [transport.py] [_log()] server lang: <none>
2025-11-03T11:14:09.366 [DEBUG] [Thread-114773] [transport.py] [_log()] kex follows: False
2025-11-03T11:14:09.366 [DEBUG] [Thread-114773] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:14:09.366 [DEBUG] [Thread-114773] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:14:09.366 [DEBUG] [Thread-114773] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:14:09.366 [DEBUG] [Thread-114773] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:14:09.366 [DEBUG] [Thread-114773] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:14:09.366 [DEBUG] [Thread-114773] [transport.py] [_log()] Compression: none
2025-11-03T11:14:09.366 [DEBUG] [Thread-114773] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:14:09.420 [DEBUG] [Thread-114773] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:14:09.420 [DEBUG] [Thread-114773] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:14:09.420 [DEBUG] [Thread-114773] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:14:09.420 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:14:09.420 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:14:09.477 [DEBUG] [Thread-114773] [transport.py] [_log()] userauth is OK
2025-11-03T11:14:09.477 [DEBUG] [Thread-114773] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:14:09.477 [DEBUG] [Thread-114773] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:14:09.477 [DEBUG] [Thread-114773] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:14:09.477 [DEBUG] [Thread-114773] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:14:09.491 [INFO] [Thread-114773] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:14:09.491 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:14:09.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:14:10.410 [DEBUG] [Thread-114773] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:14:10.410 [DEBUG] [Thread-114773] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:14:10.460 [DEBUG] [Thread-114773] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:14:10.460 [DEBUG] [Thread-114773] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:14:10.478 [DEBUG] [Thread-114773] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:14:10.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:14:10.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:14:10.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:14:10.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:14:10.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:14:10.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:14:10.509 [DEBUG] [Thread-114773] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:14:14.360 [DEBUG] [Thread-114775 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:14:29.417 [DEBUG] [Thread-114776 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:14:29.883 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:14:29.883 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:14:40.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:14:40.527 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:14:40.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:14:41.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 14, 8), 38.68, 6.16, 0.0, 19.66, 22.86, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:14:41.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:14:08
2025-11-03T11:14:41.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:14:41.483 [DEBUG] [Thread-114777] [transport.py] [_log()] starting thread (client mode): 0x1179b370
2025-11-03T11:14:41.484 [DEBUG] [Thread-114777] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:14:41.505 [DEBUG] [Thread-114777] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:14:41.505 [INFO] [Thread-114777] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:14:41.508 [DEBUG] [Thread-114777] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:14:41.508 [DEBUG] [Thread-114777] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:14:41.509 [DEBUG] [Thread-114777] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:14:41.509 [DEBUG] [Thread-114777] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:14:41.509 [DEBUG] [Thread-114777] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:14:41.509 [DEBUG] [Thread-114777] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:14:41.509 [DEBUG] [Thread-114777] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:14:41.509 [DEBUG] [Thread-114777] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:14:41.509 [DEBUG] [Thread-114777] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:14:41.509 [DEBUG] [Thread-114777] [transport.py] [_log()] client lang: <none>
2025-11-03T11:14:41.509 [DEBUG] [Thread-114777] [transport.py] [_log()] server lang: <none>
2025-11-03T11:14:41.509 [DEBUG] [Thread-114777] [transport.py] [_log()] kex follows: False
2025-11-03T11:14:41.509 [DEBUG] [Thread-114777] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:14:41.509 [DEBUG] [Thread-114777] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:14:41.510 [DEBUG] [Thread-114777] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:14:41.510 [DEBUG] [Thread-114777] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:14:41.510 [DEBUG] [Thread-114777] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:14:41.510 [DEBUG] [Thread-114777] [transport.py] [_log()] Compression: none
2025-11-03T11:14:41.510 [DEBUG] [Thread-114777] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:14:41.530 [DEBUG] [Thread-114777] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:14:41.530 [DEBUG] [Thread-114777] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:14:41.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:14:41.532 [DEBUG] [Thread-114777] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:14:41.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:14:41.534 [DEBUG] [Thread-114777] [transport.py] [_log()] userauth is OK
2025-11-03T11:14:41.534 [DEBUG] [Thread-114777] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:14:41.534 [DEBUG] [Thread-114777] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:14:41.534 [DEBUG] [Thread-114777] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:14:41.534 [DEBUG] [Thread-114777] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:14:41.553 [INFO] [Thread-114777] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:14:41.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:14:42.281 [DEBUG] [Thread-114777] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:14:42.282 [DEBUG] [Thread-114777] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:14:42.282 [DEBUG] [Thread-114777] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:14:42.322 [DEBUG] [Thread-114777] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:14:42.322 [DEBUG] [Thread-114777] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:14:42.324 [DEBUG] [Thread-114777] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:14:42.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:14:42.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:14:42.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:14:42.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:14:42.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:14:42.342 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:14:42.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:14:42.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:14:42.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:14:42.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.384815 -999.00  +22.90  12.90     11   -8.30 1 1 1 1 1   888    0 31.58 22.30 ----- 15.6 12.9 35.8 24.5 28.6 -28.3 27.5 -28.4 26.7 -28.2 27.7 -26.7
2025-11-03T11:14:42.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:14:42.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:14:42.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.384815
2025-11-03T11:14:42.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:14:42.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:14:42.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:14:42.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:14:42.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:14:42.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:14:08', tmtdew=38.68, humidity=6.16, cloud=0.0, wind=19.66, temperature=22.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:14:08.016', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:14:42.344 [DEBUG] [Thread-114777] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:14:42.418 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:14:42.429 [DEBUG] [Thread-114780] [transport.py] [_log()] starting thread (client mode): 0xed2c5e0
2025-11-03T11:14:42.429 [DEBUG] [Thread-114780] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:14:42.444 [DEBUG] [Thread-114780] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:14:42.444 [INFO] [Thread-114780] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:14:42.452 [DEBUG] [Thread-114780] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:14:42.452 [DEBUG] [Thread-114780] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:14:42.452 [DEBUG] [Thread-114780] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:14:42.452 [DEBUG] [Thread-114780] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:14:42.452 [DEBUG] [Thread-114780] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:14:42.452 [DEBUG] [Thread-114780] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:14:42.452 [DEBUG] [Thread-114780] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:14:42.452 [DEBUG] [Thread-114780] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:14:42.452 [DEBUG] [Thread-114780] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:14:42.452 [DEBUG] [Thread-114780] [transport.py] [_log()] client lang: <none>
2025-11-03T11:14:42.452 [DEBUG] [Thread-114780] [transport.py] [_log()] server lang: <none>
2025-11-03T11:14:42.452 [DEBUG] [Thread-114780] [transport.py] [_log()] kex follows: False
2025-11-03T11:14:42.452 [DEBUG] [Thread-114780] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:14:42.452 [DEBUG] [Thread-114780] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:14:42.452 [DEBUG] [Thread-114780] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:14:42.452 [DEBUG] [Thread-114780] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:14:42.452 [DEBUG] [Thread-114780] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:14:42.452 [DEBUG] [Thread-114780] [transport.py] [_log()] Compression: none
2025-11-03T11:14:42.452 [DEBUG] [Thread-114780] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:14:42.508 [DEBUG] [Thread-114780] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:14:42.508 [DEBUG] [Thread-114780] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:14:42.508 [DEBUG] [Thread-114780] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:14:42.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:14:42.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:14:42.565 [DEBUG] [Thread-114780] [transport.py] [_log()] userauth is OK
2025-11-03T11:14:42.565 [DEBUG] [Thread-114780] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:14:42.565 [DEBUG] [Thread-114780] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:14:42.565 [DEBUG] [Thread-114780] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:14:42.565 [DEBUG] [Thread-114780] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:14:42.579 [INFO] [Thread-114780] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:14:42.579 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:14:42.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:14:43.441 [DEBUG] [Thread-114780] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:14:43.442 [DEBUG] [Thread-114780] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:14:43.489 [DEBUG] [Thread-114780] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:14:43.489 [DEBUG] [Thread-114780] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:14:43.497 [DEBUG] [Thread-114780] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:14:43.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:14:43.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:14:43.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:14:43.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:14:43.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:14:43.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:14:43.528 [DEBUG] [Thread-114780] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:14:44.448 [DEBUG] [Thread-114782 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:14:55.835 [DEBUG] [Thread-114783 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:14:59.503 [DEBUG] [Thread-114784 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:15:13.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:15:13.550 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:15:13.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:15:14.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 14, 41), 39.05, 6.13, 0.0, 19.71, 22.99, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:15:14.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:14:41
2025-11-03T11:15:14.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:15:14.533 [DEBUG] [Thread-114785 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:15:14.549 [DEBUG] [Thread-114786] [transport.py] [_log()] starting thread (client mode): 0xed2e200
2025-11-03T11:15:14.549 [DEBUG] [Thread-114786] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:15:14.568 [DEBUG] [Thread-114786] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:15:14.569 [INFO] [Thread-114786] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:15:14.570 [DEBUG] [Thread-114786] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:15:14.570 [DEBUG] [Thread-114786] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:15:14.570 [DEBUG] [Thread-114786] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:15:14.570 [DEBUG] [Thread-114786] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:15:14.570 [DEBUG] [Thread-114786] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:15:14.570 [DEBUG] [Thread-114786] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:15:14.570 [DEBUG] [Thread-114786] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:15:14.570 [DEBUG] [Thread-114786] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:15:14.570 [DEBUG] [Thread-114786] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:15:14.570 [DEBUG] [Thread-114786] [transport.py] [_log()] client lang: <none>
2025-11-03T11:15:14.570 [DEBUG] [Thread-114786] [transport.py] [_log()] server lang: <none>
2025-11-03T11:15:14.570 [DEBUG] [Thread-114786] [transport.py] [_log()] kex follows: False
2025-11-03T11:15:14.570 [DEBUG] [Thread-114786] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:15:14.570 [DEBUG] [Thread-114786] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:15:14.570 [DEBUG] [Thread-114786] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:15:14.570 [DEBUG] [Thread-114786] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:15:14.570 [DEBUG] [Thread-114786] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:15:14.570 [DEBUG] [Thread-114786] [transport.py] [_log()] Compression: none
2025-11-03T11:15:14.570 [DEBUG] [Thread-114786] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:15:14.586 [DEBUG] [Thread-114786] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:15:14.586 [DEBUG] [Thread-114786] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:15:14.586 [DEBUG] [Thread-114786] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:15:14.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:15:14.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:15:14.587 [DEBUG] [Thread-114786] [transport.py] [_log()] userauth is OK
2025-11-03T11:15:14.587 [DEBUG] [Thread-114786] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:15:14.587 [DEBUG] [Thread-114786] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:15:14.587 [DEBUG] [Thread-114786] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:15:14.587 [DEBUG] [Thread-114786] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:15:14.615 [INFO] [Thread-114786] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:15:14.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:15:15.311 [DEBUG] [Thread-114786] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:15:15.311 [DEBUG] [Thread-114786] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:15:15.311 [DEBUG] [Thread-114786] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:15:15.352 [DEBUG] [Thread-114786] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:15:15.352 [DEBUG] [Thread-114786] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:15:15.355 [DEBUG] [Thread-114786] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:15:15.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:15:15.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:15:15.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:15:15.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:15:15.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:15:15.372 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:15:15.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:15:15.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:15:15.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:15:15.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.385162 -999.00  +23.50  28.75     11   -8.10 1 1 1 1 1   888    0 31.71 21.39 ----- 31.1 28.8 17.6 32.5 28.8 -28.5 27.6 -28.1 26.9 -26.9 27.7 -28.7
2025-11-03T11:15:15.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:15:15.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:15:15.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.385162
2025-11-03T11:15:15.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:15:15.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:15:15.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:15:15.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:15:15.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:15:15.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:14:41', tmtdew=39.05, humidity=6.13, cloud=0.0, wind=19.71, temperature=22.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:14:37.997', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:15:15.373 [DEBUG] [Thread-114786] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:15:15.447 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:15:15.459 [DEBUG] [Thread-114789] [transport.py] [_log()] starting thread (client mode): 0xedc77c0
2025-11-03T11:15:15.459 [DEBUG] [Thread-114789] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:15:15.473 [DEBUG] [Thread-114789] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:15:15.473 [INFO] [Thread-114789] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:15:15.481 [DEBUG] [Thread-114789] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:15:15.481 [DEBUG] [Thread-114789] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:15:15.481 [DEBUG] [Thread-114789] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:15:15.481 [DEBUG] [Thread-114789] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:15:15.481 [DEBUG] [Thread-114789] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:15:15.481 [DEBUG] [Thread-114789] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:15:15.481 [DEBUG] [Thread-114789] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:15:15.481 [DEBUG] [Thread-114789] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:15:15.481 [DEBUG] [Thread-114789] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:15:15.481 [DEBUG] [Thread-114789] [transport.py] [_log()] client lang: <none>
2025-11-03T11:15:15.481 [DEBUG] [Thread-114789] [transport.py] [_log()] server lang: <none>
2025-11-03T11:15:15.481 [DEBUG] [Thread-114789] [transport.py] [_log()] kex follows: False
2025-11-03T11:15:15.481 [DEBUG] [Thread-114789] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:15:15.481 [DEBUG] [Thread-114789] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:15:15.481 [DEBUG] [Thread-114789] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:15:15.481 [DEBUG] [Thread-114789] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:15:15.481 [DEBUG] [Thread-114789] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:15:15.481 [DEBUG] [Thread-114789] [transport.py] [_log()] Compression: none
2025-11-03T11:15:15.481 [DEBUG] [Thread-114789] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:15:15.540 [DEBUG] [Thread-114789] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:15:15.540 [DEBUG] [Thread-114789] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:15:15.540 [DEBUG] [Thread-114789] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:15:15.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:15:15.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:15:15.596 [DEBUG] [Thread-114789] [transport.py] [_log()] userauth is OK
2025-11-03T11:15:15.597 [DEBUG] [Thread-114789] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:15:15.597 [DEBUG] [Thread-114789] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:15:15.597 [DEBUG] [Thread-114789] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:15:15.597 [DEBUG] [Thread-114789] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:15:15.611 [INFO] [Thread-114789] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:15:15.611 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:15:15.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:15:16.481 [DEBUG] [Thread-114789] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:15:16.481 [DEBUG] [Thread-114789] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:15:16.529 [DEBUG] [Thread-114789] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:15:16.529 [DEBUG] [Thread-114789] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:15:16.538 [DEBUG] [Thread-114789] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:15:16.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:15:16.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:15:16.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:15:16.566 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:15:16.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:15:16.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:15:16.576 [DEBUG] [Thread-114789] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:15:29.565 [DEBUG] [Thread-114791 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:15:30.025 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:15:30.027 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:15:44.611 [DEBUG] [Thread-114792 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:15:46.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:15:46.597 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:15:46.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:15:47.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 15, 13), 38.99, 6.16, 0.0, 17.77, 22.99, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:15:47.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:15:13
2025-11-03T11:15:47.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:15:47.605 [DEBUG] [Thread-114793] [transport.py] [_log()] starting thread (client mode): 0xed2e7d0
2025-11-03T11:15:47.605 [DEBUG] [Thread-114793] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:15:47.624 [DEBUG] [Thread-114793] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:15:47.625 [INFO] [Thread-114793] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:15:47.628 [DEBUG] [Thread-114793] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:15:47.628 [DEBUG] [Thread-114793] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:15:47.628 [DEBUG] [Thread-114793] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:15:47.628 [DEBUG] [Thread-114793] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:15:47.628 [DEBUG] [Thread-114793] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:15:47.628 [DEBUG] [Thread-114793] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:15:47.628 [DEBUG] [Thread-114793] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:15:47.628 [DEBUG] [Thread-114793] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:15:47.628 [DEBUG] [Thread-114793] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:15:47.628 [DEBUG] [Thread-114793] [transport.py] [_log()] client lang: <none>
2025-11-03T11:15:47.628 [DEBUG] [Thread-114793] [transport.py] [_log()] server lang: <none>
2025-11-03T11:15:47.628 [DEBUG] [Thread-114793] [transport.py] [_log()] kex follows: False
2025-11-03T11:15:47.628 [DEBUG] [Thread-114793] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:15:47.628 [DEBUG] [Thread-114793] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:15:47.628 [DEBUG] [Thread-114793] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:15:47.628 [DEBUG] [Thread-114793] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:15:47.628 [DEBUG] [Thread-114793] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:15:47.628 [DEBUG] [Thread-114793] [transport.py] [_log()] Compression: none
2025-11-03T11:15:47.628 [DEBUG] [Thread-114793] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:15:47.644 [DEBUG] [Thread-114793] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:15:47.644 [DEBUG] [Thread-114793] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:15:47.644 [DEBUG] [Thread-114793] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:15:47.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:15:47.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:15:47.645 [DEBUG] [Thread-114793] [transport.py] [_log()] userauth is OK
2025-11-03T11:15:47.645 [DEBUG] [Thread-114793] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:15:47.645 [DEBUG] [Thread-114793] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:15:47.645 [DEBUG] [Thread-114793] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:15:47.645 [DEBUG] [Thread-114793] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:15:47.660 [INFO] [Thread-114793] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:15:47.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:15:48.451 [DEBUG] [Thread-114793] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:15:48.451 [DEBUG] [Thread-114793] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:15:48.452 [DEBUG] [Thread-114793] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:15:48.492 [DEBUG] [Thread-114793] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:15:48.492 [DEBUG] [Thread-114793] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:15:48.495 [DEBUG] [Thread-114793] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:15:48.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:15:48.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:15:48.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:15:48.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:15:48.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:15:48.512 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:15:48.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:15:48.512 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:15:48.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:15:48.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.385521 -999.00  +23.00  22.51     11   -8.60 1 1 1 1 1   888    0 32.15 24.39 ----- 17.4 22.5 353.0 29.7 28.8 -28.6 27.5 -29.9 26.8 -27.4 27.5 -28.6
2025-11-03T11:15:48.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:15:48.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:15:48.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.385521
2025-11-03T11:15:48.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:15:48.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:15:48.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:15:48.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:15:48.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:15:48.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:15:13', tmtdew=38.99, humidity=6.16, cloud=0.0, wind=17.77, temperature=22.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:15:09.014', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:15:48.514 [DEBUG] [Thread-114793] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:15:48.588 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:15:48.599 [DEBUG] [Thread-114796] [transport.py] [_log()] starting thread (client mode): 0xedc55d0
2025-11-03T11:15:48.599 [DEBUG] [Thread-114796] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:15:48.613 [DEBUG] [Thread-114796] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:15:48.613 [INFO] [Thread-114796] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:15:48.621 [DEBUG] [Thread-114796] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:15:48.621 [DEBUG] [Thread-114796] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:15:48.621 [DEBUG] [Thread-114796] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:15:48.621 [DEBUG] [Thread-114796] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:15:48.621 [DEBUG] [Thread-114796] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:15:48.621 [DEBUG] [Thread-114796] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:15:48.621 [DEBUG] [Thread-114796] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:15:48.621 [DEBUG] [Thread-114796] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:15:48.621 [DEBUG] [Thread-114796] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:15:48.621 [DEBUG] [Thread-114796] [transport.py] [_log()] client lang: <none>
2025-11-03T11:15:48.621 [DEBUG] [Thread-114796] [transport.py] [_log()] server lang: <none>
2025-11-03T11:15:48.621 [DEBUG] [Thread-114796] [transport.py] [_log()] kex follows: False
2025-11-03T11:15:48.621 [DEBUG] [Thread-114796] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:15:48.621 [DEBUG] [Thread-114796] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:15:48.621 [DEBUG] [Thread-114796] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:15:48.621 [DEBUG] [Thread-114796] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:15:48.621 [DEBUG] [Thread-114796] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:15:48.621 [DEBUG] [Thread-114796] [transport.py] [_log()] Compression: none
2025-11-03T11:15:48.621 [DEBUG] [Thread-114796] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:15:48.680 [DEBUG] [Thread-114796] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:15:48.680 [DEBUG] [Thread-114796] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:15:48.680 [DEBUG] [Thread-114796] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:15:48.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:15:48.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:15:48.736 [DEBUG] [Thread-114796] [transport.py] [_log()] userauth is OK
2025-11-03T11:15:48.737 [DEBUG] [Thread-114796] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:15:48.737 [DEBUG] [Thread-114796] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:15:48.737 [DEBUG] [Thread-114796] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:15:48.737 [DEBUG] [Thread-114796] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:15:48.751 [INFO] [Thread-114796] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:15:48.751 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:15:48.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:15:49.630 [DEBUG] [Thread-114796] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:15:49.630 [DEBUG] [Thread-114796] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:15:49.678 [DEBUG] [Thread-114796] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:15:49.678 [DEBUG] [Thread-114796] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:15:49.687 [DEBUG] [Thread-114796] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:15:49.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:15:49.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:15:49.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:15:49.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:15:49.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:15:49.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:15:49.719 [DEBUG] [Thread-114796] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:15:55.890 [DEBUG] [Thread-114798 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:15:59.639 [DEBUG] [Thread-114799 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:16:14.693 [DEBUG] [Thread-114800 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:16:19.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:16:19.741 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:16:19.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:16:20.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 15, 45), 39.01, 6.25, 0.0, 29.5, 22.99, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:16:20.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:15:45
2025-11-03T11:16:20.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:16:20.800 [DEBUG] [Thread-114801] [transport.py] [_log()] starting thread (client mode): 0xedc5ea0
2025-11-03T11:16:20.801 [DEBUG] [Thread-114801] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:16:20.811 [DEBUG] [Thread-114801] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:16:20.811 [INFO] [Thread-114801] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:16:20.815 [DEBUG] [Thread-114801] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:16:20.815 [DEBUG] [Thread-114801] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:16:20.815 [DEBUG] [Thread-114801] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:16:20.815 [DEBUG] [Thread-114801] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:16:20.815 [DEBUG] [Thread-114801] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:16:20.815 [DEBUG] [Thread-114801] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:16:20.815 [DEBUG] [Thread-114801] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:16:20.815 [DEBUG] [Thread-114801] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:16:20.815 [DEBUG] [Thread-114801] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:16:20.815 [DEBUG] [Thread-114801] [transport.py] [_log()] client lang: <none>
2025-11-03T11:16:20.815 [DEBUG] [Thread-114801] [transport.py] [_log()] server lang: <none>
2025-11-03T11:16:20.815 [DEBUG] [Thread-114801] [transport.py] [_log()] kex follows: False
2025-11-03T11:16:20.815 [DEBUG] [Thread-114801] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:16:20.815 [DEBUG] [Thread-114801] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:16:20.815 [DEBUG] [Thread-114801] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:16:20.816 [DEBUG] [Thread-114801] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:16:20.816 [DEBUG] [Thread-114801] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:16:20.816 [DEBUG] [Thread-114801] [transport.py] [_log()] Compression: none
2025-11-03T11:16:20.816 [DEBUG] [Thread-114801] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:16:20.833 [DEBUG] [Thread-114801] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:16:20.834 [DEBUG] [Thread-114801] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:16:20.834 [DEBUG] [Thread-114801] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:16:20.835 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:16:20.835 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:16:20.877 [DEBUG] [Thread-114801] [transport.py] [_log()] userauth is OK
2025-11-03T11:16:20.877 [DEBUG] [Thread-114801] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:16:20.877 [DEBUG] [Thread-114801] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:16:20.877 [DEBUG] [Thread-114801] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:16:20.878 [DEBUG] [Thread-114801] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:16:20.903 [INFO] [Thread-114801] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:16:20.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:16:21.538 [DEBUG] [Thread-114801] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:16:21.538 [DEBUG] [Thread-114801] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:16:21.539 [DEBUG] [Thread-114801] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:16:21.580 [DEBUG] [Thread-114801] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:16:21.580 [DEBUG] [Thread-114801] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:16:21.583 [DEBUG] [Thread-114801] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:16:21.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:16:21.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:16:21.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:16:21.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:16:21.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:16:21.616 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:16:21.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:16:21.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:16:21.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:16:21.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.385857 -999.00  +22.70  14.42     11   -8.50 1 1 1 1 1   888    0 31.34 24.35 ----- 18.7 14.4 355.6 27.5 28.6 -29.2 27.4 -29.7 26.7 -27.6 27.6 -27.5
2025-11-03T11:16:21.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:16:21.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:16:21.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.385857
2025-11-03T11:16:21.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:16:21.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:16:21.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:16:21.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:16:21.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:16:21.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:15:45', tmtdew=39.01, humidity=6.25, cloud=0.0, wind=29.5, temperature=22.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:15:38.045', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:16:21.618 [DEBUG] [Thread-114801] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:16:21.700 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:16:21.713 [DEBUG] [Thread-114804] [transport.py] [_log()] starting thread (client mode): 0xed2c160
2025-11-03T11:16:21.713 [DEBUG] [Thread-114804] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:16:21.727 [DEBUG] [Thread-114804] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:16:21.728 [INFO] [Thread-114804] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:16:21.735 [DEBUG] [Thread-114804] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:16:21.735 [DEBUG] [Thread-114804] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:16:21.735 [DEBUG] [Thread-114804] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:16:21.735 [DEBUG] [Thread-114804] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:16:21.735 [DEBUG] [Thread-114804] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:16:21.735 [DEBUG] [Thread-114804] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:16:21.735 [DEBUG] [Thread-114804] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:16:21.735 [DEBUG] [Thread-114804] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:16:21.735 [DEBUG] [Thread-114804] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:16:21.735 [DEBUG] [Thread-114804] [transport.py] [_log()] client lang: <none>
2025-11-03T11:16:21.736 [DEBUG] [Thread-114804] [transport.py] [_log()] server lang: <none>
2025-11-03T11:16:21.736 [DEBUG] [Thread-114804] [transport.py] [_log()] kex follows: False
2025-11-03T11:16:21.736 [DEBUG] [Thread-114804] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:16:21.736 [DEBUG] [Thread-114804] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:16:21.736 [DEBUG] [Thread-114804] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:16:21.736 [DEBUG] [Thread-114804] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:16:21.736 [DEBUG] [Thread-114804] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:16:21.736 [DEBUG] [Thread-114804] [transport.py] [_log()] Compression: none
2025-11-03T11:16:21.736 [DEBUG] [Thread-114804] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:16:21.796 [DEBUG] [Thread-114804] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:16:21.796 [DEBUG] [Thread-114804] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:16:21.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:16:21.797 [DEBUG] [Thread-114804] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:16:21.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:16:21.852 [DEBUG] [Thread-114804] [transport.py] [_log()] userauth is OK
2025-11-03T11:16:21.852 [DEBUG] [Thread-114804] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:16:21.852 [DEBUG] [Thread-114804] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:16:21.852 [DEBUG] [Thread-114804] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:16:21.852 [DEBUG] [Thread-114804] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:16:21.867 [INFO] [Thread-114804] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:16:21.867 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:16:21.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:16:22.720 [DEBUG] [Thread-114804] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:16:22.720 [DEBUG] [Thread-114804] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:16:22.767 [DEBUG] [Thread-114804] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:16:22.767 [DEBUG] [Thread-114804] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:16:22.777 [DEBUG] [Thread-114804] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:16:22.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:16:22.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:16:22.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:16:22.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:16:22.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:16:22.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:16:22.817 [DEBUG] [Thread-114804] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:16:29.727 [DEBUG] [Thread-114806 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:16:30.173 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:16:30.173 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:16:36.733 [DEBUG] [Thread-114807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:16:44.772 [DEBUG] [Thread-114808 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:16:52.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:16:52.832 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:16:52.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:16:53.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 16, 17), 39.24, 6.15, 0.0, 25.35, 23.16, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:16:53.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:16:17
2025-11-03T11:16:53.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:16:53.763 [DEBUG] [Thread-114809] [transport.py] [_log()] starting thread (client mode): 0xed2de40
2025-11-03T11:16:53.763 [DEBUG] [Thread-114809] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:16:53.783 [DEBUG] [Thread-114809] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:16:53.783 [INFO] [Thread-114809] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:16:53.795 [DEBUG] [Thread-114809] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:16:53.795 [DEBUG] [Thread-114809] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:16:53.796 [DEBUG] [Thread-114809] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:16:53.796 [DEBUG] [Thread-114809] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:16:53.796 [DEBUG] [Thread-114809] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:16:53.796 [DEBUG] [Thread-114809] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:16:53.796 [DEBUG] [Thread-114809] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:16:53.796 [DEBUG] [Thread-114809] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:16:53.796 [DEBUG] [Thread-114809] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:16:53.796 [DEBUG] [Thread-114809] [transport.py] [_log()] client lang: <none>
2025-11-03T11:16:53.796 [DEBUG] [Thread-114809] [transport.py] [_log()] server lang: <none>
2025-11-03T11:16:53.796 [DEBUG] [Thread-114809] [transport.py] [_log()] kex follows: False
2025-11-03T11:16:53.797 [DEBUG] [Thread-114809] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:16:53.797 [DEBUG] [Thread-114809] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:16:53.797 [DEBUG] [Thread-114809] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:16:53.797 [DEBUG] [Thread-114809] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:16:53.797 [DEBUG] [Thread-114809] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:16:53.797 [DEBUG] [Thread-114809] [transport.py] [_log()] Compression: none
2025-11-03T11:16:53.797 [DEBUG] [Thread-114809] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:16:53.818 [DEBUG] [Thread-114809] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:16:53.819 [DEBUG] [Thread-114809] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:16:53.819 [DEBUG] [Thread-114809] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:16:53.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:16:53.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:16:53.822 [DEBUG] [Thread-114809] [transport.py] [_log()] userauth is OK
2025-11-03T11:16:53.822 [DEBUG] [Thread-114809] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:16:53.822 [DEBUG] [Thread-114809] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:16:53.822 [DEBUG] [Thread-114809] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:16:53.822 [DEBUG] [Thread-114809] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:16:53.847 [INFO] [Thread-114809] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:16:53.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:16:54.630 [DEBUG] [Thread-114809] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:16:54.630 [DEBUG] [Thread-114809] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:16:54.630 [DEBUG] [Thread-114809] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:16:54.670 [DEBUG] [Thread-114809] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:16:54.670 [DEBUG] [Thread-114809] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:16:54.673 [DEBUG] [Thread-114809] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:16:54.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:16:54.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:16:54.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:16:54.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:16:54.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:16:54.701 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:16:54.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:16:54.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:16:54.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:16:54.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.386215 -999.00  +22.80  27.44     11   -8.60 1 1 1 1 1   888    0 32.08 25.61 ----- 27.0 27.4 11.2 35.4 28.7 -28.9 27.6 -27.9 26.8 -28.5 27.6 -28.0
2025-11-03T11:16:54.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:16:54.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:16:54.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.386215
2025-11-03T11:16:54.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:16:54.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:16:54.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:16:54.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:16:54.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:16:54.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:16:17', tmtdew=39.24, humidity=6.15, cloud=0.0, wind=25.35, temperature=23.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:16:08.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:16:54.703 [DEBUG] [Thread-114809] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:16:54.774 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:16:54.785 [DEBUG] [Thread-114812] [transport.py] [_log()] starting thread (client mode): 0xedc46d0
2025-11-03T11:16:54.785 [DEBUG] [Thread-114812] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:16:54.800 [DEBUG] [Thread-114812] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:16:54.800 [INFO] [Thread-114812] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:16:54.808 [DEBUG] [Thread-114812] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:16:54.808 [DEBUG] [Thread-114812] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:16:54.808 [DEBUG] [Thread-114812] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:16:54.808 [DEBUG] [Thread-114812] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:16:54.808 [DEBUG] [Thread-114812] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:16:54.808 [DEBUG] [Thread-114812] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:16:54.808 [DEBUG] [Thread-114812] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:16:54.808 [DEBUG] [Thread-114812] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:16:54.808 [DEBUG] [Thread-114812] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:16:54.808 [DEBUG] [Thread-114812] [transport.py] [_log()] client lang: <none>
2025-11-03T11:16:54.808 [DEBUG] [Thread-114812] [transport.py] [_log()] server lang: <none>
2025-11-03T11:16:54.808 [DEBUG] [Thread-114812] [transport.py] [_log()] kex follows: False
2025-11-03T11:16:54.808 [DEBUG] [Thread-114812] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:16:54.808 [DEBUG] [Thread-114812] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:16:54.808 [DEBUG] [Thread-114812] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:16:54.808 [DEBUG] [Thread-114812] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:16:54.808 [DEBUG] [Thread-114812] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:16:54.808 [DEBUG] [Thread-114812] [transport.py] [_log()] Compression: none
2025-11-03T11:16:54.808 [DEBUG] [Thread-114812] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:16:54.863 [DEBUG] [Thread-114812] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:16:54.863 [DEBUG] [Thread-114812] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:16:54.863 [DEBUG] [Thread-114812] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:16:54.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:16:54.864 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:16:54.920 [DEBUG] [Thread-114812] [transport.py] [_log()] userauth is OK
2025-11-03T11:16:54.920 [DEBUG] [Thread-114812] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:16:54.920 [DEBUG] [Thread-114812] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:16:54.920 [DEBUG] [Thread-114812] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:16:54.920 [DEBUG] [Thread-114812] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:16:54.934 [INFO] [Thread-114812] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:16:54.934 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:16:54.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:16:55.775 [DEBUG] [Thread-114812] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:16:55.776 [DEBUG] [Thread-114812] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:16:55.824 [DEBUG] [Thread-114812] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:16:55.824 [DEBUG] [Thread-114812] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:16:55.833 [DEBUG] [Thread-114812] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:16:55.842 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:16:55.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:16:55.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:16:55.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:16:55.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:16:55.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:16:55.879 [DEBUG] [Thread-114812] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:16:55.975 [DEBUG] [Thread-114814 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:16:59.806 [DEBUG] [Thread-114815 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:17:14.859 [DEBUG] [Thread-114816 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:17:23.073 [DEBUG] [Thread-114807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:17:25.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:17:25.888 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:17:25.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:17:26.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 17, 22), 38.67, 6.2, 0.0, 23.66, 22.84, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:17:26.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:17:22
2025-11-03T11:17:26.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:17:26.871 [DEBUG] [Thread-114817] [transport.py] [_log()] starting thread (client mode): 0xedc79d0
2025-11-03T11:17:26.871 [DEBUG] [Thread-114817] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:17:26.891 [DEBUG] [Thread-114817] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:17:26.891 [INFO] [Thread-114817] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:17:26.894 [DEBUG] [Thread-114817] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:17:26.894 [DEBUG] [Thread-114817] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:17:26.894 [DEBUG] [Thread-114817] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:17:26.894 [DEBUG] [Thread-114817] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:17:26.894 [DEBUG] [Thread-114817] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:17:26.894 [DEBUG] [Thread-114817] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:17:26.894 [DEBUG] [Thread-114817] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:17:26.894 [DEBUG] [Thread-114817] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:17:26.894 [DEBUG] [Thread-114817] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:17:26.894 [DEBUG] [Thread-114817] [transport.py] [_log()] client lang: <none>
2025-11-03T11:17:26.894 [DEBUG] [Thread-114817] [transport.py] [_log()] server lang: <none>
2025-11-03T11:17:26.895 [DEBUG] [Thread-114817] [transport.py] [_log()] kex follows: False
2025-11-03T11:17:26.895 [DEBUG] [Thread-114817] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:17:26.895 [DEBUG] [Thread-114817] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:17:26.895 [DEBUG] [Thread-114817] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:17:26.895 [DEBUG] [Thread-114817] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:17:26.895 [DEBUG] [Thread-114817] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:17:26.895 [DEBUG] [Thread-114817] [transport.py] [_log()] Compression: none
2025-11-03T11:17:26.895 [DEBUG] [Thread-114817] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:17:26.915 [DEBUG] [Thread-114817] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:17:26.915 [DEBUG] [Thread-114817] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:17:26.915 [DEBUG] [Thread-114817] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:17:26.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:17:26.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:17:26.916 [DEBUG] [Thread-114817] [transport.py] [_log()] userauth is OK
2025-11-03T11:17:26.916 [DEBUG] [Thread-114817] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:17:26.916 [DEBUG] [Thread-114817] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:17:26.916 [DEBUG] [Thread-114817] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:17:26.916 [DEBUG] [Thread-114817] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:17:26.932 [INFO] [Thread-114817] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:17:26.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:17:27.556 [DEBUG] [Thread-114817] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:17:27.556 [DEBUG] [Thread-114817] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:17:27.557 [DEBUG] [Thread-114817] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:17:27.597 [DEBUG] [Thread-114817] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:17:27.598 [DEBUG] [Thread-114817] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:17:27.601 [DEBUG] [Thread-114817] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:17:27.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:17:27.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:17:27.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:17:27.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:17:27.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:17:27.626 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:17:27.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:17:27.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:17:27.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:17:27.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.386551 -999.00  +22.50  26.42     11   -8.80 1 1 1 1 1   888    0 31.96 23.93 ----- 26.1 26.4 19.6 40.7 28.6 -29.7 27.4 -28.9 26.7 -29.3 27.4 -27.9
2025-11-03T11:17:27.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:17:27.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:17:27.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.386551
2025-11-03T11:17:27.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:17:27.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:17:27.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:17:27.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:17:27.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:17:27.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:17:22', tmtdew=38.67, humidity=6.2, cloud=0.0, wind=23.66, temperature=22.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:16:38.006', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:17:27.630 [DEBUG] [Thread-114817] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:17:27.712 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:17:27.724 [DEBUG] [Thread-114820] [transport.py] [_log()] starting thread (client mode): 0xed2f280
2025-11-03T11:17:27.725 [DEBUG] [Thread-114820] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:17:27.739 [DEBUG] [Thread-114820] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:17:27.739 [INFO] [Thread-114820] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:17:27.747 [DEBUG] [Thread-114820] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:17:27.747 [DEBUG] [Thread-114820] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:17:27.747 [DEBUG] [Thread-114820] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:17:27.747 [DEBUG] [Thread-114820] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:17:27.747 [DEBUG] [Thread-114820] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:17:27.747 [DEBUG] [Thread-114820] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:17:27.747 [DEBUG] [Thread-114820] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:17:27.748 [DEBUG] [Thread-114820] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:17:27.748 [DEBUG] [Thread-114820] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:17:27.748 [DEBUG] [Thread-114820] [transport.py] [_log()] client lang: <none>
2025-11-03T11:17:27.748 [DEBUG] [Thread-114820] [transport.py] [_log()] server lang: <none>
2025-11-03T11:17:27.748 [DEBUG] [Thread-114820] [transport.py] [_log()] kex follows: False
2025-11-03T11:17:27.748 [DEBUG] [Thread-114820] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:17:27.748 [DEBUG] [Thread-114820] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:17:27.748 [DEBUG] [Thread-114820] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:17:27.748 [DEBUG] [Thread-114820] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:17:27.748 [DEBUG] [Thread-114820] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:17:27.748 [DEBUG] [Thread-114820] [transport.py] [_log()] Compression: none
2025-11-03T11:17:27.748 [DEBUG] [Thread-114820] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:17:27.805 [DEBUG] [Thread-114820] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:17:27.815 [DEBUG] [Thread-114820] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:17:27.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:17:27.816 [DEBUG] [Thread-114820] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:17:27.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:17:27.861 [DEBUG] [Thread-114820] [transport.py] [_log()] userauth is OK
2025-11-03T11:17:27.861 [DEBUG] [Thread-114820] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:17:27.861 [DEBUG] [Thread-114820] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:17:27.861 [DEBUG] [Thread-114820] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:17:27.861 [DEBUG] [Thread-114820] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:17:27.880 [INFO] [Thread-114820] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:17:27.881 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:17:27.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:17:28.723 [DEBUG] [Thread-114820] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:17:28.723 [DEBUG] [Thread-114820] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:17:28.771 [DEBUG] [Thread-114820] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:17:28.771 [DEBUG] [Thread-114820] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:17:28.780 [DEBUG] [Thread-114820] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:17:28.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:17:28.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:17:28.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:17:28.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:17:28.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:17:28.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:17:28.817 [DEBUG] [Thread-114820] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:17:29.891 [DEBUG] [Thread-114822 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:17:30.314 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:17:30.315 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:17:44.943 [DEBUG] [Thread-114823 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:17:56.110 [DEBUG] [Thread-114824 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:17:58.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:17:58.840 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:17:58.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:17:59.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 17, 54), 38.8, 6.18, 0.0, 17.57, 22.91, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:17:59.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:17:54
2025-11-03T11:17:59.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:17:59.822 [DEBUG] [Thread-114825] [transport.py] [_log()] starting thread (client mode): 0xed649a0
2025-11-03T11:17:59.822 [DEBUG] [Thread-114825] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:17:59.842 [DEBUG] [Thread-114825] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:17:59.842 [INFO] [Thread-114825] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:17:59.852 [DEBUG] [Thread-114825] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:17:59.852 [DEBUG] [Thread-114825] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:17:59.852 [DEBUG] [Thread-114825] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:17:59.852 [DEBUG] [Thread-114825] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:17:59.852 [DEBUG] [Thread-114825] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:17:59.852 [DEBUG] [Thread-114825] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:17:59.852 [DEBUG] [Thread-114825] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:17:59.852 [DEBUG] [Thread-114825] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:17:59.852 [DEBUG] [Thread-114825] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:17:59.852 [DEBUG] [Thread-114825] [transport.py] [_log()] client lang: <none>
2025-11-03T11:17:59.852 [DEBUG] [Thread-114825] [transport.py] [_log()] server lang: <none>
2025-11-03T11:17:59.852 [DEBUG] [Thread-114825] [transport.py] [_log()] kex follows: False
2025-11-03T11:17:59.852 [DEBUG] [Thread-114825] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:17:59.852 [DEBUG] [Thread-114825] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:17:59.852 [DEBUG] [Thread-114825] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:17:59.852 [DEBUG] [Thread-114825] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:17:59.852 [DEBUG] [Thread-114825] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:17:59.852 [DEBUG] [Thread-114825] [transport.py] [_log()] Compression: none
2025-11-03T11:17:59.852 [DEBUG] [Thread-114825] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:17:59.866 [DEBUG] [Thread-114825] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:17:59.867 [DEBUG] [Thread-114825] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:17:59.867 [DEBUG] [Thread-114825] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:17:59.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:17:59.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:17:59.867 [DEBUG] [Thread-114825] [transport.py] [_log()] userauth is OK
2025-11-03T11:17:59.867 [DEBUG] [Thread-114825] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:17:59.867 [DEBUG] [Thread-114825] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:17:59.867 [DEBUG] [Thread-114825] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:17:59.867 [DEBUG] [Thread-114825] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:17:59.882 [INFO] [Thread-114825] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:17:59.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:17:59.972 [DEBUG] [Thread-114827 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:18:00.636 [DEBUG] [Thread-114825] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:18:00.645 [DEBUG] [Thread-114825] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:18:00.646 [DEBUG] [Thread-114825] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:18:00.677 [DEBUG] [Thread-114825] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:18:00.678 [DEBUG] [Thread-114825] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:18:00.681 [DEBUG] [Thread-114825] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:18:00.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:18:00.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:18:00.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:18:00.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:18:00.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:18:00.705 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:18:00.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:18:00.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:18:00.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:18:00.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.387246 -999.00  +22.70  21.90     11   -8.60 1 1 1 1 1   888    0 32.15 21.34 ----- 16.1 21.9 23.4 27.1 28.6 -29.4 27.5 -29.4 26.8 -27.8 27.5 -29.5
2025-11-03T11:18:00.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:18:00.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:18:00.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.387246
2025-11-03T11:18:00.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:18:00.707 [DEBUG] [Thread-114825] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:18:00.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:18:00.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:18:00.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:18:00.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:18:00.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:17:54', tmtdew=38.8, humidity=6.18, cloud=0.0, wind=17.57, temperature=22.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:17:38.054', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:18:00.791 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:18:00.801 [DEBUG] [Thread-114829] [transport.py] [_log()] starting thread (client mode): 0xedc6170
2025-11-03T11:18:00.802 [DEBUG] [Thread-114829] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:18:00.816 [DEBUG] [Thread-114829] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:18:00.817 [INFO] [Thread-114829] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:18:00.827 [DEBUG] [Thread-114829] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:18:00.827 [DEBUG] [Thread-114829] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:18:00.827 [DEBUG] [Thread-114829] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:18:00.827 [DEBUG] [Thread-114829] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:18:00.827 [DEBUG] [Thread-114829] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:18:00.827 [DEBUG] [Thread-114829] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:18:00.827 [DEBUG] [Thread-114829] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:18:00.827 [DEBUG] [Thread-114829] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:18:00.827 [DEBUG] [Thread-114829] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:18:00.827 [DEBUG] [Thread-114829] [transport.py] [_log()] client lang: <none>
2025-11-03T11:18:00.827 [DEBUG] [Thread-114829] [transport.py] [_log()] server lang: <none>
2025-11-03T11:18:00.827 [DEBUG] [Thread-114829] [transport.py] [_log()] kex follows: False
2025-11-03T11:18:00.827 [DEBUG] [Thread-114829] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:18:00.827 [DEBUG] [Thread-114829] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:18:00.828 [DEBUG] [Thread-114829] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:18:00.828 [DEBUG] [Thread-114829] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:18:00.828 [DEBUG] [Thread-114829] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:18:00.828 [DEBUG] [Thread-114829] [transport.py] [_log()] Compression: none
2025-11-03T11:18:00.828 [DEBUG] [Thread-114829] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:18:00.898 [DEBUG] [Thread-114829] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:18:00.899 [DEBUG] [Thread-114829] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:18:00.899 [DEBUG] [Thread-114829] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:18:00.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:18:00.900 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:18:00.957 [DEBUG] [Thread-114829] [transport.py] [_log()] userauth is OK
2025-11-03T11:18:00.957 [DEBUG] [Thread-114829] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:18:00.957 [DEBUG] [Thread-114829] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:18:00.957 [DEBUG] [Thread-114829] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:18:00.957 [DEBUG] [Thread-114829] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:18:00.975 [INFO] [Thread-114829] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:18:00.976 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:18:00.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:18:01.832 [DEBUG] [Thread-114829] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:18:01.832 [DEBUG] [Thread-114829] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:18:01.879 [DEBUG] [Thread-114829] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:18:01.879 [DEBUG] [Thread-114829] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:18:01.888 [DEBUG] [Thread-114829] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:18:01.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:18:01.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:18:01.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:18:01.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:18:01.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:18:01.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:18:01.929 [DEBUG] [Thread-114829] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:18:15.004 [DEBUG] [Thread-114831 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:18:30.048 [DEBUG] [Thread-114832 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:18:30.460 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:18:30.461 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:18:31.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:18:31.952 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:18:31.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:18:32.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 18, 26), 38.78, 6.21, 0.0, 20.08, 23.07, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:18:32.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:18:26
2025-11-03T11:18:32.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:18:32.894 [DEBUG] [Thread-114833] [transport.py] [_log()] starting thread (client mode): 0xed41f90
2025-11-03T11:18:32.894 [DEBUG] [Thread-114833] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:18:32.913 [DEBUG] [Thread-114833] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:18:32.913 [INFO] [Thread-114833] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:18:32.916 [DEBUG] [Thread-114833] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:18:32.916 [DEBUG] [Thread-114833] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:18:32.917 [DEBUG] [Thread-114833] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:18:32.917 [DEBUG] [Thread-114833] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:18:32.917 [DEBUG] [Thread-114833] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:18:32.917 [DEBUG] [Thread-114833] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:18:32.917 [DEBUG] [Thread-114833] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:18:32.917 [DEBUG] [Thread-114833] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:18:32.917 [DEBUG] [Thread-114833] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:18:32.917 [DEBUG] [Thread-114833] [transport.py] [_log()] client lang: <none>
2025-11-03T11:18:32.917 [DEBUG] [Thread-114833] [transport.py] [_log()] server lang: <none>
2025-11-03T11:18:32.917 [DEBUG] [Thread-114833] [transport.py] [_log()] kex follows: False
2025-11-03T11:18:32.917 [DEBUG] [Thread-114833] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:18:32.917 [DEBUG] [Thread-114833] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:18:32.917 [DEBUG] [Thread-114833] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:18:32.917 [DEBUG] [Thread-114833] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:18:32.917 [DEBUG] [Thread-114833] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:18:32.917 [DEBUG] [Thread-114833] [transport.py] [_log()] Compression: none
2025-11-03T11:18:32.917 [DEBUG] [Thread-114833] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:18:32.936 [DEBUG] [Thread-114833] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:18:32.937 [DEBUG] [Thread-114833] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:18:32.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:18:32.938 [DEBUG] [Thread-114833] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:18:32.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:18:32.940 [DEBUG] [Thread-114833] [transport.py] [_log()] userauth is OK
2025-11-03T11:18:32.940 [DEBUG] [Thread-114833] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:18:32.941 [DEBUG] [Thread-114833] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:18:32.941 [DEBUG] [Thread-114833] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:18:32.941 [DEBUG] [Thread-114833] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:18:32.977 [INFO] [Thread-114833] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:18:32.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:18:33.620 [DEBUG] [Thread-114833] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:18:33.620 [DEBUG] [Thread-114833] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:18:33.621 [DEBUG] [Thread-114833] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:18:33.661 [DEBUG] [Thread-114833] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:18:33.661 [DEBUG] [Thread-114833] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:18:33.664 [DEBUG] [Thread-114833] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:18:33.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:18:33.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:18:33.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:18:33.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:18:33.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:18:33.699 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:18:33.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:18:33.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:18:33.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:18:33.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.387604 -999.00  +22.50  19.57     11   -8.80 1 1 1 1 1   888    0 31.61 18.38 ----- 19.6 19.6 10.2 25.8 28.5 -29.5 27.5 -29.5 26.7 -28.5 27.4 -28.1
2025-11-03T11:18:33.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:18:33.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:18:33.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.387604
2025-11-03T11:18:33.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:18:33.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:18:33.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:18:33.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:18:33.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:18:33.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:18:26', tmtdew=38.78, humidity=6.21, cloud=0.0, wind=20.08, temperature=23.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:18:08.986', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:18:33.702 [DEBUG] [Thread-114833] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:18:33.785 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:18:33.798 [DEBUG] [Thread-114836] [transport.py] [_log()] starting thread (client mode): 0xed430d0
2025-11-03T11:18:33.798 [DEBUG] [Thread-114836] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:18:33.813 [DEBUG] [Thread-114836] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:18:33.813 [INFO] [Thread-114836] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:18:33.820 [DEBUG] [Thread-114836] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:18:33.821 [DEBUG] [Thread-114836] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:18:33.821 [DEBUG] [Thread-114836] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:18:33.821 [DEBUG] [Thread-114836] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:18:33.821 [DEBUG] [Thread-114836] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:18:33.821 [DEBUG] [Thread-114836] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:18:33.821 [DEBUG] [Thread-114836] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:18:33.821 [DEBUG] [Thread-114836] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:18:33.821 [DEBUG] [Thread-114836] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:18:33.821 [DEBUG] [Thread-114836] [transport.py] [_log()] client lang: <none>
2025-11-03T11:18:33.821 [DEBUG] [Thread-114836] [transport.py] [_log()] server lang: <none>
2025-11-03T11:18:33.821 [DEBUG] [Thread-114836] [transport.py] [_log()] kex follows: False
2025-11-03T11:18:33.821 [DEBUG] [Thread-114836] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:18:33.821 [DEBUG] [Thread-114836] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:18:33.821 [DEBUG] [Thread-114836] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:18:33.821 [DEBUG] [Thread-114836] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:18:33.821 [DEBUG] [Thread-114836] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:18:33.821 [DEBUG] [Thread-114836] [transport.py] [_log()] Compression: none
2025-11-03T11:18:33.822 [DEBUG] [Thread-114836] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:18:33.881 [DEBUG] [Thread-114836] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:18:33.881 [DEBUG] [Thread-114836] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:18:33.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:18:33.882 [DEBUG] [Thread-114836] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:18:33.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:18:33.937 [DEBUG] [Thread-114836] [transport.py] [_log()] userauth is OK
2025-11-03T11:18:33.937 [DEBUG] [Thread-114836] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:18:33.937 [DEBUG] [Thread-114836] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:18:33.938 [DEBUG] [Thread-114836] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:18:33.938 [DEBUG] [Thread-114836] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:18:33.956 [INFO] [Thread-114836] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:18:33.957 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:18:33.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:18:34.785 [DEBUG] [Thread-114836] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:18:34.785 [DEBUG] [Thread-114836] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:18:34.833 [DEBUG] [Thread-114836] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:18:34.833 [DEBUG] [Thread-114836] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:18:34.842 [DEBUG] [Thread-114836] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:18:34.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:18:34.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:18:34.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:18:34.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:18:34.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:18:34.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:18:34.875 [DEBUG] [Thread-114836] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:18:45.082 [DEBUG] [Thread-114838 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:18:56.141 [DEBUG] [Thread-114839 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:19:00.133 [DEBUG] [Thread-114840 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:19:04.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:19:04.897 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:19:04.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:19:05.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 18, 58), 39.06, 6.13, 0.0, 18.88, 23.16, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:19:05.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:18:58
2025-11-03T11:19:05.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:19:05.863 [DEBUG] [Thread-114841] [transport.py] [_log()] starting thread (client mode): 0xedc5000
2025-11-03T11:19:05.864 [DEBUG] [Thread-114841] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:19:05.882 [DEBUG] [Thread-114841] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:19:05.882 [INFO] [Thread-114841] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:19:05.883 [DEBUG] [Thread-114841] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:19:05.883 [DEBUG] [Thread-114841] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:19:05.883 [DEBUG] [Thread-114841] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:19:05.883 [DEBUG] [Thread-114841] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:19:05.883 [DEBUG] [Thread-114841] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:19:05.883 [DEBUG] [Thread-114841] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:19:05.883 [DEBUG] [Thread-114841] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:19:05.883 [DEBUG] [Thread-114841] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:19:05.883 [DEBUG] [Thread-114841] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:19:05.884 [DEBUG] [Thread-114841] [transport.py] [_log()] client lang: <none>
2025-11-03T11:19:05.884 [DEBUG] [Thread-114841] [transport.py] [_log()] server lang: <none>
2025-11-03T11:19:05.884 [DEBUG] [Thread-114841] [transport.py] [_log()] kex follows: False
2025-11-03T11:19:05.884 [DEBUG] [Thread-114841] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:19:05.884 [DEBUG] [Thread-114841] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:19:05.884 [DEBUG] [Thread-114841] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:19:05.884 [DEBUG] [Thread-114841] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:19:05.884 [DEBUG] [Thread-114841] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:19:05.884 [DEBUG] [Thread-114841] [transport.py] [_log()] Compression: none
2025-11-03T11:19:05.884 [DEBUG] [Thread-114841] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:19:05.891 [DEBUG] [Thread-114841] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:19:05.891 [DEBUG] [Thread-114841] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:19:05.891 [DEBUG] [Thread-114841] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:19:05.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:19:05.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:19:05.892 [DEBUG] [Thread-114841] [transport.py] [_log()] userauth is OK
2025-11-03T11:19:05.892 [DEBUG] [Thread-114841] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:19:05.892 [DEBUG] [Thread-114841] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:19:05.892 [DEBUG] [Thread-114841] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:19:05.892 [DEBUG] [Thread-114841] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:19:05.900 [INFO] [Thread-114841] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:19:05.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:19:06.669 [DEBUG] [Thread-114841] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:19:06.669 [DEBUG] [Thread-114841] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:19:06.669 [DEBUG] [Thread-114841] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:19:06.710 [DEBUG] [Thread-114841] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:19:06.710 [DEBUG] [Thread-114841] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:19:06.711 [DEBUG] [Thread-114841] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:19:06.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:19:06.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:19:06.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:19:06.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:19:06.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:19:06.728 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:19:06.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:19:06.728 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:19:06.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:19:06.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.387940 -999.00  +22.60  22.74     11   -8.70 1 1 1 1 1   888    0 31.75 16.20 ----- 21.3 22.7 30.4 29.7 28.6 -30.6 27.4 -29.1 26.7 -28.8 27.5 -27.1
2025-11-03T11:19:06.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:19:06.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:19:06.737 [DEBUG] [Thread-114841] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:19:06.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.387940
2025-11-03T11:19:06.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:19:06.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:19:06.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:19:06.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:19:06.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:19:06.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:18:58', tmtdew=39.06, humidity=6.13, cloud=0.0, wind=18.88, temperature=23.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:18:38.016', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:19:06.811 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:19:06.822 [DEBUG] [Thread-114844] [transport.py] [_log()] starting thread (client mode): 0xed070d0
2025-11-03T11:19:06.823 [DEBUG] [Thread-114844] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:19:06.837 [DEBUG] [Thread-114844] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:19:06.837 [INFO] [Thread-114844] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:19:06.844 [DEBUG] [Thread-114844] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:19:06.844 [DEBUG] [Thread-114844] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:19:06.845 [DEBUG] [Thread-114844] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:19:06.845 [DEBUG] [Thread-114844] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:19:06.845 [DEBUG] [Thread-114844] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:19:06.845 [DEBUG] [Thread-114844] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:19:06.845 [DEBUG] [Thread-114844] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:19:06.845 [DEBUG] [Thread-114844] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:19:06.845 [DEBUG] [Thread-114844] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:19:06.845 [DEBUG] [Thread-114844] [transport.py] [_log()] client lang: <none>
2025-11-03T11:19:06.845 [DEBUG] [Thread-114844] [transport.py] [_log()] server lang: <none>
2025-11-03T11:19:06.845 [DEBUG] [Thread-114844] [transport.py] [_log()] kex follows: False
2025-11-03T11:19:06.845 [DEBUG] [Thread-114844] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:19:06.845 [DEBUG] [Thread-114844] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:19:06.845 [DEBUG] [Thread-114844] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:19:06.845 [DEBUG] [Thread-114844] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:19:06.845 [DEBUG] [Thread-114844] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:19:06.845 [DEBUG] [Thread-114844] [transport.py] [_log()] Compression: none
2025-11-03T11:19:06.845 [DEBUG] [Thread-114844] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:19:06.902 [DEBUG] [Thread-114844] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:19:06.902 [DEBUG] [Thread-114844] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:19:06.903 [DEBUG] [Thread-114844] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:19:06.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:19:06.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:19:06.963 [DEBUG] [Thread-114844] [transport.py] [_log()] userauth is OK
2025-11-03T11:19:06.963 [DEBUG] [Thread-114844] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:19:06.963 [DEBUG] [Thread-114844] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:19:06.963 [DEBUG] [Thread-114844] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:19:06.963 [DEBUG] [Thread-114844] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:19:06.978 [INFO] [Thread-114844] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:19:06.978 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:19:06.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:19:07.905 [DEBUG] [Thread-114844] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:19:07.905 [DEBUG] [Thread-114844] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:19:07.953 [DEBUG] [Thread-114844] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:19:07.953 [DEBUG] [Thread-114844] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:19:07.962 [DEBUG] [Thread-114844] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:19:07.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:19:07.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:19:07.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:19:07.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:19:07.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:19:07.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:19:07.996 [DEBUG] [Thread-114844] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:19:12.883 [DEBUG] [Thread-114807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:19:15.159 [DEBUG] [Thread-114846 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:19:30.211 [DEBUG] [Thread-114847 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:19:30.609 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:19:30.610 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:19:37.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:19:37.997 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:19:38.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:19:38.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 19, 31), 39.18, 6.05, 0.0, 18.21, 23.01, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:19:38.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:19:31
2025-11-03T11:19:38.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:19:38.963 [DEBUG] [Thread-114848] [transport.py] [_log()] starting thread (client mode): 0xed05b40
2025-11-03T11:19:38.963 [DEBUG] [Thread-114848] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:19:38.984 [DEBUG] [Thread-114848] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:19:38.984 [INFO] [Thread-114848] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:19:38.987 [DEBUG] [Thread-114848] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:19:38.987 [DEBUG] [Thread-114848] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:19:38.987 [DEBUG] [Thread-114848] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:19:38.987 [DEBUG] [Thread-114848] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:19:38.987 [DEBUG] [Thread-114848] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:19:38.987 [DEBUG] [Thread-114848] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:19:38.987 [DEBUG] [Thread-114848] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:19:38.987 [DEBUG] [Thread-114848] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:19:38.987 [DEBUG] [Thread-114848] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:19:38.987 [DEBUG] [Thread-114848] [transport.py] [_log()] client lang: <none>
2025-11-03T11:19:38.987 [DEBUG] [Thread-114848] [transport.py] [_log()] server lang: <none>
2025-11-03T11:19:38.987 [DEBUG] [Thread-114848] [transport.py] [_log()] kex follows: False
2025-11-03T11:19:38.987 [DEBUG] [Thread-114848] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:19:38.987 [DEBUG] [Thread-114848] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:19:38.987 [DEBUG] [Thread-114848] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:19:38.987 [DEBUG] [Thread-114848] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:19:38.988 [DEBUG] [Thread-114848] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:19:38.988 [DEBUG] [Thread-114848] [transport.py] [_log()] Compression: none
2025-11-03T11:19:38.988 [DEBUG] [Thread-114848] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:19:39.003 [DEBUG] [Thread-114848] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:19:39.004 [DEBUG] [Thread-114848] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:19:39.004 [DEBUG] [Thread-114848] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:19:39.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:19:39.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:19:39.005 [DEBUG] [Thread-114848] [transport.py] [_log()] userauth is OK
2025-11-03T11:19:39.005 [DEBUG] [Thread-114848] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:19:39.005 [DEBUG] [Thread-114848] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:19:39.005 [DEBUG] [Thread-114848] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:19:39.005 [DEBUG] [Thread-114848] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:19:39.014 [INFO] [Thread-114848] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:19:39.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:19:39.679 [DEBUG] [Thread-114848] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:19:39.679 [DEBUG] [Thread-114848] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:19:39.680 [DEBUG] [Thread-114848] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:19:39.720 [DEBUG] [Thread-114848] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:19:39.720 [DEBUG] [Thread-114848] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:19:39.723 [DEBUG] [Thread-114848] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:19:39.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:19:39.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:19:39.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:19:39.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:19:39.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:19:39.744 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:19:39.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:19:39.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:19:39.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:19:39.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.388299 -999.00  +23.00  24.97     11   -8.30 1 1 1 1 1   888    0 31.98 12.61 ----- 31.9 25.0 41.6 30.8 28.6 -29.3 27.5 -27.4 26.8 -28.2 27.5 -27.7
2025-11-03T11:19:39.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:19:39.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:19:39.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.388299
2025-11-03T11:19:39.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:19:39.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:19:39.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:19:39.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:19:39.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:19:39.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:19:31', tmtdew=39.18, humidity=6.05, cloud=0.0, wind=18.21, temperature=23.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:19:09.034', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:19:39.746 [DEBUG] [Thread-114848] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:19:39.837 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:19:39.848 [DEBUG] [Thread-114851] [transport.py] [_log()] starting thread (client mode): 0xed66110
2025-11-03T11:19:39.849 [DEBUG] [Thread-114851] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:19:39.863 [DEBUG] [Thread-114851] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:19:39.864 [INFO] [Thread-114851] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:19:39.871 [DEBUG] [Thread-114851] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:19:39.871 [DEBUG] [Thread-114851] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:19:39.871 [DEBUG] [Thread-114851] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:19:39.871 [DEBUG] [Thread-114851] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:19:39.871 [DEBUG] [Thread-114851] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:19:39.872 [DEBUG] [Thread-114851] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:19:39.872 [DEBUG] [Thread-114851] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:19:39.872 [DEBUG] [Thread-114851] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:19:39.872 [DEBUG] [Thread-114851] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:19:39.872 [DEBUG] [Thread-114851] [transport.py] [_log()] client lang: <none>
2025-11-03T11:19:39.872 [DEBUG] [Thread-114851] [transport.py] [_log()] server lang: <none>
2025-11-03T11:19:39.872 [DEBUG] [Thread-114851] [transport.py] [_log()] kex follows: False
2025-11-03T11:19:39.872 [DEBUG] [Thread-114851] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:19:39.872 [DEBUG] [Thread-114851] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:19:39.872 [DEBUG] [Thread-114851] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:19:39.872 [DEBUG] [Thread-114851] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:19:39.872 [DEBUG] [Thread-114851] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:19:39.872 [DEBUG] [Thread-114851] [transport.py] [_log()] Compression: none
2025-11-03T11:19:39.872 [DEBUG] [Thread-114851] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:19:39.928 [DEBUG] [Thread-114851] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:19:39.929 [DEBUG] [Thread-114851] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:19:39.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:19:39.930 [DEBUG] [Thread-114851] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:19:39.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:19:39.987 [DEBUG] [Thread-114851] [transport.py] [_log()] userauth is OK
2025-11-03T11:19:39.988 [DEBUG] [Thread-114851] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:19:39.997 [DEBUG] [Thread-114851] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:19:39.997 [DEBUG] [Thread-114851] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:19:39.997 [DEBUG] [Thread-114851] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:19:40.017 [INFO] [Thread-114851] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:19:40.017 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:19:40.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:19:40.846 [DEBUG] [Thread-114851] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:19:40.846 [DEBUG] [Thread-114851] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:19:40.894 [DEBUG] [Thread-114851] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:19:40.894 [DEBUG] [Thread-114851] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:19:40.903 [DEBUG] [Thread-114851] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:19:40.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:19:40.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:19:40.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:19:40.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:19:40.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:19:40.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:19:40.937 [DEBUG] [Thread-114851] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:19:45.242 [DEBUG] [Thread-114853 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:19:56.201 [DEBUG] [Thread-114854 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:20:00.278 [DEBUG] [Thread-114855 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:20:10.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:20:10.961 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:20:10.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:20:11.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 20, 3), 38.99, 6.15, 0.0, 22.41, 23.02, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:20:11.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:20:03
2025-11-03T11:20:11.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:20:11.912 [DEBUG] [Thread-114856] [transport.py] [_log()] starting thread (client mode): 0xed05ae0
2025-11-03T11:20:11.922 [DEBUG] [Thread-114856] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:20:11.933 [DEBUG] [Thread-114856] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:20:11.933 [INFO] [Thread-114856] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:20:11.936 [DEBUG] [Thread-114856] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:20:11.937 [DEBUG] [Thread-114856] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:20:11.937 [DEBUG] [Thread-114856] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:20:11.937 [DEBUG] [Thread-114856] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:20:11.937 [DEBUG] [Thread-114856] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:20:11.937 [DEBUG] [Thread-114856] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:20:11.937 [DEBUG] [Thread-114856] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:20:11.937 [DEBUG] [Thread-114856] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:20:11.937 [DEBUG] [Thread-114856] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:20:11.937 [DEBUG] [Thread-114856] [transport.py] [_log()] client lang: <none>
2025-11-03T11:20:11.937 [DEBUG] [Thread-114856] [transport.py] [_log()] server lang: <none>
2025-11-03T11:20:11.937 [DEBUG] [Thread-114856] [transport.py] [_log()] kex follows: False
2025-11-03T11:20:11.937 [DEBUG] [Thread-114856] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:20:11.937 [DEBUG] [Thread-114856] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:20:11.937 [DEBUG] [Thread-114856] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:20:11.937 [DEBUG] [Thread-114856] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:20:11.937 [DEBUG] [Thread-114856] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:20:11.937 [DEBUG] [Thread-114856] [transport.py] [_log()] Compression: none
2025-11-03T11:20:11.937 [DEBUG] [Thread-114856] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:20:11.955 [DEBUG] [Thread-114856] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:20:11.956 [DEBUG] [Thread-114856] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:20:11.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:20:11.957 [DEBUG] [Thread-114856] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:20:11.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:20:11.959 [DEBUG] [Thread-114856] [transport.py] [_log()] userauth is OK
2025-11-03T11:20:11.959 [DEBUG] [Thread-114856] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:20:11.959 [DEBUG] [Thread-114856] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:20:11.959 [DEBUG] [Thread-114856] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:20:11.959 [DEBUG] [Thread-114856] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:20:11.977 [INFO] [Thread-114856] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:20:11.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:20:15.323 [DEBUG] [Thread-114858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:20:20.424 [DEBUG] [Thread-114856] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:20:20.425 [DEBUG] [Thread-114856] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:20:20.425 [DEBUG] [Thread-114856] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:20:20.465 [DEBUG] [Thread-114856] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:20:20.465 [DEBUG] [Thread-114856] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:20:20.469 [DEBUG] [Thread-114856] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:20:20.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:20:20.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:20:20.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:20:20.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:20:20.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:20:20.509 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:20:20.509 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:20:20.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:20:20.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:20:20.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.388646 -999.00  +22.80  22.82     11   -8.40 1 1 1 1 1   888    0 31.47 9.86 ----- 26.4 22.8 36.4 34.2 28.4 -29.3 27.4 -29.7 26.6 -28.6 27.6 -27.6
2025-11-03T11:20:20.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:20:20.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:20:20.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.388646
2025-11-03T11:20:20.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:20:20.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:20:20.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:20:20.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:20:20.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:20:20.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:20:03', tmtdew=38.99, humidity=6.15, cloud=0.0, wind=22.41, temperature=23.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:19:39.014', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:20:20.513 [DEBUG] [Thread-114856] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:20:20.596 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:20:20.608 [DEBUG] [Thread-114860] [transport.py] [_log()] starting thread (client mode): 0xed07520
2025-11-03T11:20:20.608 [DEBUG] [Thread-114860] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:20:20.622 [DEBUG] [Thread-114860] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:20:20.623 [INFO] [Thread-114860] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:20:20.632 [DEBUG] [Thread-114860] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:20:20.633 [DEBUG] [Thread-114860] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:20:20.633 [DEBUG] [Thread-114860] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:20:20.633 [DEBUG] [Thread-114860] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:20:20.633 [DEBUG] [Thread-114860] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:20:20.633 [DEBUG] [Thread-114860] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:20:20.633 [DEBUG] [Thread-114860] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:20:20.633 [DEBUG] [Thread-114860] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:20:20.633 [DEBUG] [Thread-114860] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:20:20.633 [DEBUG] [Thread-114860] [transport.py] [_log()] client lang: <none>
2025-11-03T11:20:20.633 [DEBUG] [Thread-114860] [transport.py] [_log()] server lang: <none>
2025-11-03T11:20:20.633 [DEBUG] [Thread-114860] [transport.py] [_log()] kex follows: False
2025-11-03T11:20:20.633 [DEBUG] [Thread-114860] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:20:20.633 [DEBUG] [Thread-114860] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:20:20.633 [DEBUG] [Thread-114860] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:20:20.634 [DEBUG] [Thread-114860] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:20:20.634 [DEBUG] [Thread-114860] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:20:20.634 [DEBUG] [Thread-114860] [transport.py] [_log()] Compression: none
2025-11-03T11:20:20.634 [DEBUG] [Thread-114860] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:20:20.688 [DEBUG] [Thread-114860] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:20:20.689 [DEBUG] [Thread-114860] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:20:20.689 [DEBUG] [Thread-114860] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:20:20.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:20:20.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:20:20.745 [DEBUG] [Thread-114860] [transport.py] [_log()] userauth is OK
2025-11-03T11:20:20.745 [DEBUG] [Thread-114860] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:20:20.745 [DEBUG] [Thread-114860] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:20:20.745 [DEBUG] [Thread-114860] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:20:20.746 [DEBUG] [Thread-114860] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:20:20.770 [INFO] [Thread-114860] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:20:20.770 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:20:20.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:20:21.602 [DEBUG] [Thread-114860] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:20:21.602 [DEBUG] [Thread-114860] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:20:21.650 [DEBUG] [Thread-114860] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:20:21.650 [DEBUG] [Thread-114860] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:20:21.658 [DEBUG] [Thread-114860] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:20:21.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:20:21.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:20:21.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:20:21.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:20:21.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:20:21.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:20:21.691 [DEBUG] [Thread-114860] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:20:30.366 [DEBUG] [Thread-114862 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:20:30.760 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:20:30.761 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:20:45.415 [DEBUG] [Thread-114863 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:20:51.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:20:51.714 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:20:51.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:20:52.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 20, 35), 39.14, 6.13, 0.0, 25.83, 23.02, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:20:52.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:20:35
2025-11-03T11:20:52.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:20:52.659 [DEBUG] [Thread-114864] [transport.py] [_log()] starting thread (client mode): 0xed5cfd0
2025-11-03T11:20:52.659 [DEBUG] [Thread-114864] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:20:52.679 [DEBUG] [Thread-114864] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:20:52.679 [INFO] [Thread-114864] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:20:52.682 [DEBUG] [Thread-114864] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:20:52.682 [DEBUG] [Thread-114864] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:20:52.682 [DEBUG] [Thread-114864] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:20:52.683 [DEBUG] [Thread-114864] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:20:52.683 [DEBUG] [Thread-114864] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:20:52.683 [DEBUG] [Thread-114864] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:20:52.683 [DEBUG] [Thread-114864] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:20:52.683 [DEBUG] [Thread-114864] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:20:52.683 [DEBUG] [Thread-114864] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:20:52.683 [DEBUG] [Thread-114864] [transport.py] [_log()] client lang: <none>
2025-11-03T11:20:52.683 [DEBUG] [Thread-114864] [transport.py] [_log()] server lang: <none>
2025-11-03T11:20:52.683 [DEBUG] [Thread-114864] [transport.py] [_log()] kex follows: False
2025-11-03T11:20:52.683 [DEBUG] [Thread-114864] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:20:52.683 [DEBUG] [Thread-114864] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:20:52.683 [DEBUG] [Thread-114864] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:20:52.683 [DEBUG] [Thread-114864] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:20:52.683 [DEBUG] [Thread-114864] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:20:52.683 [DEBUG] [Thread-114864] [transport.py] [_log()] Compression: none
2025-11-03T11:20:52.683 [DEBUG] [Thread-114864] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:20:52.702 [DEBUG] [Thread-114864] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:20:52.702 [DEBUG] [Thread-114864] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:20:52.703 [DEBUG] [Thread-114864] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:20:52.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:20:52.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:20:52.745 [DEBUG] [Thread-114864] [transport.py] [_log()] userauth is OK
2025-11-03T11:20:52.745 [DEBUG] [Thread-114864] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:20:52.745 [DEBUG] [Thread-114864] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:20:52.745 [DEBUG] [Thread-114864] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:20:52.745 [DEBUG] [Thread-114864] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:20:52.777 [INFO] [Thread-114864] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:20:52.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:20:53.413 [DEBUG] [Thread-114864] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:20:53.413 [DEBUG] [Thread-114864] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:20:53.414 [DEBUG] [Thread-114864] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:20:53.454 [DEBUG] [Thread-114864] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:20:53.454 [DEBUG] [Thread-114864] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:20:53.458 [DEBUG] [Thread-114864] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:20:53.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:20:53.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:20:53.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:20:53.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:20:53.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:20:53.481 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:20:53.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:20:53.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:20:53.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:20:53.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.388993 -999.00  +22.80  17.32     11   -8.60 1 1 1 1 1   888    0 31.66 9.03 ----- 17.9 17.3 44.8 27.9 28.5 -29.2 27.4 -28.2 26.6 -28.8 27.6 -26.8
2025-11-03T11:20:53.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:20:53.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:20:53.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.388993
2025-11-03T11:20:53.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:20:53.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:20:53.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:20:53.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:20:53.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:20:53.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:20:35', tmtdew=39.14, humidity=6.13, cloud=0.0, wind=25.83, temperature=23.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:20:08.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:20:53.484 [DEBUG] [Thread-114864] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:20:53.567 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:20:53.578 [DEBUG] [Thread-114867] [transport.py] [_log()] starting thread (client mode): 0xed64d60
2025-11-03T11:20:53.579 [DEBUG] [Thread-114867] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:20:53.595 [DEBUG] [Thread-114867] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:20:53.596 [INFO] [Thread-114867] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:20:53.603 [DEBUG] [Thread-114867] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:20:53.603 [DEBUG] [Thread-114867] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:20:53.603 [DEBUG] [Thread-114867] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:20:53.603 [DEBUG] [Thread-114867] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:20:53.603 [DEBUG] [Thread-114867] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:20:53.603 [DEBUG] [Thread-114867] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:20:53.603 [DEBUG] [Thread-114867] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:20:53.603 [DEBUG] [Thread-114867] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:20:53.603 [DEBUG] [Thread-114867] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:20:53.603 [DEBUG] [Thread-114867] [transport.py] [_log()] client lang: <none>
2025-11-03T11:20:53.604 [DEBUG] [Thread-114867] [transport.py] [_log()] server lang: <none>
2025-11-03T11:20:53.604 [DEBUG] [Thread-114867] [transport.py] [_log()] kex follows: False
2025-11-03T11:20:53.604 [DEBUG] [Thread-114867] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:20:53.604 [DEBUG] [Thread-114867] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:20:53.604 [DEBUG] [Thread-114867] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:20:53.604 [DEBUG] [Thread-114867] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:20:53.604 [DEBUG] [Thread-114867] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:20:53.604 [DEBUG] [Thread-114867] [transport.py] [_log()] Compression: none
2025-11-03T11:20:53.604 [DEBUG] [Thread-114867] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:20:53.664 [DEBUG] [Thread-114867] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:20:53.664 [DEBUG] [Thread-114867] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:20:53.665 [DEBUG] [Thread-114867] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:20:53.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:20:53.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:20:53.720 [DEBUG] [Thread-114867] [transport.py] [_log()] userauth is OK
2025-11-03T11:20:53.721 [DEBUG] [Thread-114867] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:20:53.721 [DEBUG] [Thread-114867] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:20:53.721 [DEBUG] [Thread-114867] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:20:53.721 [DEBUG] [Thread-114867] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:20:53.749 [INFO] [Thread-114867] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:20:53.750 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:20:53.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:20:54.644 [DEBUG] [Thread-114867] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:20:54.644 [DEBUG] [Thread-114867] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:20:54.692 [DEBUG] [Thread-114867] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:20:54.692 [DEBUG] [Thread-114867] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:20:54.701 [DEBUG] [Thread-114867] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:20:54.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:20:54.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:20:54.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:20:54.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:20:54.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:20:54.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:20:54.747 [DEBUG] [Thread-114867] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:20:56.240 [DEBUG] [Thread-114869 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:21:00.448 [DEBUG] [Thread-114870 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:21:15.484 [DEBUG] [Thread-114871 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:21:24.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:21:24.741 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:21:24.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:21:25.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 21, 8), 39.25, 6.08, 0.0, 25.55, 23.11, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:21:25.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:21:08
2025-11-03T11:21:25.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:21:25.690 [DEBUG] [Thread-114872] [transport.py] [_log()] starting thread (client mode): 0xed2f6a0
2025-11-03T11:21:25.690 [DEBUG] [Thread-114872] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:21:25.707 [DEBUG] [Thread-114872] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:21:25.707 [INFO] [Thread-114872] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:21:25.710 [DEBUG] [Thread-114872] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:21:25.710 [DEBUG] [Thread-114872] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:21:25.710 [DEBUG] [Thread-114872] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:21:25.710 [DEBUG] [Thread-114872] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:21:25.710 [DEBUG] [Thread-114872] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:21:25.710 [DEBUG] [Thread-114872] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:21:25.710 [DEBUG] [Thread-114872] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:21:25.710 [DEBUG] [Thread-114872] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:21:25.710 [DEBUG] [Thread-114872] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:21:25.710 [DEBUG] [Thread-114872] [transport.py] [_log()] client lang: <none>
2025-11-03T11:21:25.710 [DEBUG] [Thread-114872] [transport.py] [_log()] server lang: <none>
2025-11-03T11:21:25.710 [DEBUG] [Thread-114872] [transport.py] [_log()] kex follows: False
2025-11-03T11:21:25.710 [DEBUG] [Thread-114872] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:21:25.710 [DEBUG] [Thread-114872] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:21:25.710 [DEBUG] [Thread-114872] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:21:25.710 [DEBUG] [Thread-114872] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:21:25.710 [DEBUG] [Thread-114872] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:21:25.710 [DEBUG] [Thread-114872] [transport.py] [_log()] Compression: none
2025-11-03T11:21:25.710 [DEBUG] [Thread-114872] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:21:25.726 [DEBUG] [Thread-114872] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:21:25.726 [DEBUG] [Thread-114872] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:21:25.726 [DEBUG] [Thread-114872] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:21:25.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:21:25.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:21:25.727 [DEBUG] [Thread-114872] [transport.py] [_log()] userauth is OK
2025-11-03T11:21:25.727 [DEBUG] [Thread-114872] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:21:25.727 [DEBUG] [Thread-114872] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:21:25.727 [DEBUG] [Thread-114872] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:21:25.727 [DEBUG] [Thread-114872] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:21:25.737 [INFO] [Thread-114872] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:21:25.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:21:26.313 [DEBUG] [Thread-114872] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:21:26.314 [DEBUG] [Thread-114872] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:21:26.314 [DEBUG] [Thread-114872] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:21:26.355 [DEBUG] [Thread-114872] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:21:26.355 [DEBUG] [Thread-114872] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:21:26.359 [DEBUG] [Thread-114872] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:21:26.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:21:26.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:21:26.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:21:26.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:21:26.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:21:26.382 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:21:26.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:21:26.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:21:26.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:21:26.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.389329 -999.00  +22.80  24.71     11   -8.60 1 1 1 1 1   888    0 31.61 5.50 ----- 29.8 24.7 46.4 33.5 28.5 -29.4 27.5 -29.3 26.6 -28.6 27.6 -27.6
2025-11-03T11:21:26.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:21:26.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:21:26.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.389329
2025-11-03T11:21:26.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:21:26.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:21:26.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:21:26.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:21:26.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:21:26.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:21:08', tmtdew=39.25, humidity=6.08, cloud=0.0, wind=25.55, temperature=23.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:20:38.026', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:21:26.385 [DEBUG] [Thread-114872] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:21:26.468 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:21:26.480 [DEBUG] [Thread-114875] [transport.py] [_log()] starting thread (client mode): 0xed66b90
2025-11-03T11:21:26.481 [DEBUG] [Thread-114875] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:21:26.501 [DEBUG] [Thread-114875] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:21:26.501 [INFO] [Thread-114875] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:21:26.510 [DEBUG] [Thread-114875] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:21:26.510 [DEBUG] [Thread-114875] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:21:26.510 [DEBUG] [Thread-114875] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:21:26.510 [DEBUG] [Thread-114875] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:21:26.511 [DEBUG] [Thread-114875] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:21:26.511 [DEBUG] [Thread-114875] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:21:26.511 [DEBUG] [Thread-114875] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:21:26.511 [DEBUG] [Thread-114875] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:21:26.511 [DEBUG] [Thread-114875] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:21:26.511 [DEBUG] [Thread-114875] [transport.py] [_log()] client lang: <none>
2025-11-03T11:21:26.511 [DEBUG] [Thread-114875] [transport.py] [_log()] server lang: <none>
2025-11-03T11:21:26.511 [DEBUG] [Thread-114875] [transport.py] [_log()] kex follows: False
2025-11-03T11:21:26.512 [DEBUG] [Thread-114875] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:21:26.512 [DEBUG] [Thread-114875] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:21:26.512 [DEBUG] [Thread-114875] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:21:26.512 [DEBUG] [Thread-114875] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:21:26.512 [DEBUG] [Thread-114875] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:21:26.512 [DEBUG] [Thread-114875] [transport.py] [_log()] Compression: none
2025-11-03T11:21:26.512 [DEBUG] [Thread-114875] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:21:26.573 [DEBUG] [Thread-114875] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:21:26.574 [DEBUG] [Thread-114875] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:21:26.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:21:26.575 [DEBUG] [Thread-114875] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:21:26.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:21:26.632 [DEBUG] [Thread-114875] [transport.py] [_log()] userauth is OK
2025-11-03T11:21:26.633 [DEBUG] [Thread-114875] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:21:26.633 [DEBUG] [Thread-114875] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:21:26.633 [DEBUG] [Thread-114875] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:21:26.633 [DEBUG] [Thread-114875] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:21:26.652 [INFO] [Thread-114875] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:21:26.653 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:21:26.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:21:27.497 [DEBUG] [Thread-114875] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:21:27.498 [DEBUG] [Thread-114875] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:21:27.546 [DEBUG] [Thread-114875] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:21:27.546 [DEBUG] [Thread-114875] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:21:27.556 [DEBUG] [Thread-114875] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:21:27.566 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:21:27.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:21:27.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:21:27.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:21:27.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:21:27.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:21:27.593 [DEBUG] [Thread-114875] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:21:30.528 [DEBUG] [Thread-114877 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:21:30.900 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:21:30.901 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:21:45.565 [DEBUG] [Thread-114878 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:21:56.301 [DEBUG] [Thread-114879 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:21:57.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:21:57.602 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:21:57.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:21:58.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 21, 40), 39.3, 6.06, 0.0, 22.46, 23.16, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:21:58.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:21:40
2025-11-03T11:21:58.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:21:58.522 [DEBUG] [Thread-114880] [transport.py] [_log()] starting thread (client mode): 0xed5d900
2025-11-03T11:21:58.522 [DEBUG] [Thread-114880] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:21:58.540 [DEBUG] [Thread-114880] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:21:58.540 [INFO] [Thread-114880] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:21:58.543 [DEBUG] [Thread-114880] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:21:58.543 [DEBUG] [Thread-114880] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:21:58.543 [DEBUG] [Thread-114880] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:21:58.543 [DEBUG] [Thread-114880] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:21:58.543 [DEBUG] [Thread-114880] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:21:58.543 [DEBUG] [Thread-114880] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:21:58.543 [DEBUG] [Thread-114880] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:21:58.543 [DEBUG] [Thread-114880] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:21:58.544 [DEBUG] [Thread-114880] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:21:58.544 [DEBUG] [Thread-114880] [transport.py] [_log()] client lang: <none>
2025-11-03T11:21:58.544 [DEBUG] [Thread-114880] [transport.py] [_log()] server lang: <none>
2025-11-03T11:21:58.544 [DEBUG] [Thread-114880] [transport.py] [_log()] kex follows: False
2025-11-03T11:21:58.544 [DEBUG] [Thread-114880] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:21:58.544 [DEBUG] [Thread-114880] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:21:58.544 [DEBUG] [Thread-114880] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:21:58.544 [DEBUG] [Thread-114880] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:21:58.544 [DEBUG] [Thread-114880] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:21:58.544 [DEBUG] [Thread-114880] [transport.py] [_log()] Compression: none
2025-11-03T11:21:58.544 [DEBUG] [Thread-114880] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:21:58.561 [DEBUG] [Thread-114880] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:21:58.562 [DEBUG] [Thread-114880] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:21:58.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:21:58.563 [DEBUG] [Thread-114880] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:21:58.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:21:58.565 [DEBUG] [Thread-114880] [transport.py] [_log()] userauth is OK
2025-11-03T11:21:58.565 [DEBUG] [Thread-114880] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:21:58.565 [DEBUG] [Thread-114880] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:21:58.565 [DEBUG] [Thread-114880] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:21:58.565 [DEBUG] [Thread-114880] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:21:58.592 [INFO] [Thread-114880] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:21:58.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:21:59.231 [DEBUG] [Thread-114880] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:21:59.231 [DEBUG] [Thread-114880] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:21:59.232 [DEBUG] [Thread-114880] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:21:59.272 [DEBUG] [Thread-114880] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:21:59.272 [DEBUG] [Thread-114880] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:21:59.276 [DEBUG] [Thread-114880] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:21:59.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:21:59.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:21:59.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:21:59.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:21:59.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:21:59.302 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:21:59.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:21:59.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:21:59.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:21:59.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.389687 -999.00  +22.70  27.24     11   -8.80 1 1 1 1 1   888    0 31.35 4.12 ----- 23.5 27.2 25.6 36.5 28.5 -29.3 27.4 -29.3 26.7 -28.2 27.5 -28.4
2025-11-03T11:21:59.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:21:59.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:21:59.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.389687
2025-11-03T11:21:59.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:21:59.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:21:59.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:21:59.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:21:59.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:21:59.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:21:40', tmtdew=39.3, humidity=6.06, cloud=0.0, wind=22.46, temperature=23.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:21:08.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:21:59.305 [DEBUG] [Thread-114880] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:21:59.389 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:21:59.401 [DEBUG] [Thread-114883] [transport.py] [_log()] starting thread (client mode): 0xed07be0
2025-11-03T11:21:59.401 [DEBUG] [Thread-114883] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:21:59.415 [DEBUG] [Thread-114883] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:21:59.416 [INFO] [Thread-114883] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:21:59.423 [DEBUG] [Thread-114883] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:21:59.423 [DEBUG] [Thread-114883] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:21:59.424 [DEBUG] [Thread-114883] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:21:59.424 [DEBUG] [Thread-114883] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:21:59.424 [DEBUG] [Thread-114883] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:21:59.424 [DEBUG] [Thread-114883] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:21:59.424 [DEBUG] [Thread-114883] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:21:59.424 [DEBUG] [Thread-114883] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:21:59.424 [DEBUG] [Thread-114883] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:21:59.424 [DEBUG] [Thread-114883] [transport.py] [_log()] client lang: <none>
2025-11-03T11:21:59.424 [DEBUG] [Thread-114883] [transport.py] [_log()] server lang: <none>
2025-11-03T11:21:59.425 [DEBUG] [Thread-114883] [transport.py] [_log()] kex follows: False
2025-11-03T11:21:59.425 [DEBUG] [Thread-114883] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:21:59.425 [DEBUG] [Thread-114883] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:21:59.425 [DEBUG] [Thread-114883] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:21:59.425 [DEBUG] [Thread-114883] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:21:59.425 [DEBUG] [Thread-114883] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:21:59.426 [DEBUG] [Thread-114883] [transport.py] [_log()] Compression: none
2025-11-03T11:21:59.426 [DEBUG] [Thread-114883] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:21:59.485 [DEBUG] [Thread-114883] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:21:59.486 [DEBUG] [Thread-114883] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:21:59.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:21:59.487 [DEBUG] [Thread-114883] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:21:59.489 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:21:59.544 [DEBUG] [Thread-114883] [transport.py] [_log()] userauth is OK
2025-11-03T11:21:59.545 [DEBUG] [Thread-114883] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:21:59.545 [DEBUG] [Thread-114883] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:21:59.545 [DEBUG] [Thread-114883] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:21:59.545 [DEBUG] [Thread-114883] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:21:59.564 [INFO] [Thread-114883] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:21:59.564 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:21:59.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:22:00.431 [DEBUG] [Thread-114883] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:22:00.431 [DEBUG] [Thread-114883] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:22:00.479 [DEBUG] [Thread-114883] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:22:00.479 [DEBUG] [Thread-114883] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:22:00.488 [DEBUG] [Thread-114883] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:22:00.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:22:00.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:22:00.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:22:00.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:22:00.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:22:00.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:22:00.526 [DEBUG] [Thread-114883] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:22:00.600 [DEBUG] [Thread-114885 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:22:04.074 [DEBUG] [Thread-114807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:22:15.650 [DEBUG] [Thread-114886 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:22:17.656 [DEBUG] [Thread-114807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:22:30.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:22:30.539 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:22:30.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:22:30.680 [DEBUG] [Thread-114887 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:22:31.041 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:22:31.041 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:22:31.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 22, 12), 39.31, 6.06, 0.0, 24.61, 23.21, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:22:31.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:22:12
2025-11-03T11:22:31.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:22:31.486 [DEBUG] [Thread-114888] [transport.py] [_log()] starting thread (client mode): 0xed43760
2025-11-03T11:22:31.487 [DEBUG] [Thread-114888] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:22:31.497 [DEBUG] [Thread-114888] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:22:31.498 [INFO] [Thread-114888] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:22:31.501 [DEBUG] [Thread-114888] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:22:31.501 [DEBUG] [Thread-114888] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:22:31.501 [DEBUG] [Thread-114888] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:22:31.501 [DEBUG] [Thread-114888] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:22:31.501 [DEBUG] [Thread-114888] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:22:31.501 [DEBUG] [Thread-114888] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:22:31.501 [DEBUG] [Thread-114888] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:22:31.501 [DEBUG] [Thread-114888] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:22:31.502 [DEBUG] [Thread-114888] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:22:31.502 [DEBUG] [Thread-114888] [transport.py] [_log()] client lang: <none>
2025-11-03T11:22:31.502 [DEBUG] [Thread-114888] [transport.py] [_log()] server lang: <none>
2025-11-03T11:22:31.502 [DEBUG] [Thread-114888] [transport.py] [_log()] kex follows: False
2025-11-03T11:22:31.502 [DEBUG] [Thread-114888] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:22:31.502 [DEBUG] [Thread-114888] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:22:31.502 [DEBUG] [Thread-114888] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:22:31.502 [DEBUG] [Thread-114888] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:22:31.502 [DEBUG] [Thread-114888] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:22:31.502 [DEBUG] [Thread-114888] [transport.py] [_log()] Compression: none
2025-11-03T11:22:31.502 [DEBUG] [Thread-114888] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:22:31.522 [DEBUG] [Thread-114888] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:22:31.523 [DEBUG] [Thread-114888] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:22:31.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:22:31.524 [DEBUG] [Thread-114888] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:22:31.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:22:31.526 [DEBUG] [Thread-114888] [transport.py] [_log()] userauth is OK
2025-11-03T11:22:31.527 [DEBUG] [Thread-114888] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:22:31.527 [DEBUG] [Thread-114888] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:22:31.527 [DEBUG] [Thread-114888] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:22:31.527 [DEBUG] [Thread-114888] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:22:31.548 [INFO] [Thread-114888] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:22:31.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:22:32.195 [DEBUG] [Thread-114888] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:22:32.195 [DEBUG] [Thread-114888] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:22:32.196 [DEBUG] [Thread-114888] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:22:32.236 [DEBUG] [Thread-114888] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:22:32.236 [DEBUG] [Thread-114888] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:22:32.240 [DEBUG] [Thread-114888] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:22:32.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:22:32.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:22:32.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:22:32.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:22:32.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:22:32.276 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:22:32.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:22:32.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:22:32.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:22:32.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.390370 -999.00  +23.10  27.81     11   -8.40 1 1 1 1 1   888    0 31.50 4.28 ----- 26.9 27.8 10.4 33.6 28.6 -28.4 27.4 -26.9 26.9 -27.0 27.5 -29.8
2025-11-03T11:22:32.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:22:32.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:22:32.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.390370
2025-11-03T11:22:32.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:22:32.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:22:32.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:22:32.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:22:32.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:22:32.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:22:12', tmtdew=39.31, humidity=6.06, cloud=0.0, wind=24.61, temperature=23.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:22:07.968', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:22:32.281 [DEBUG] [Thread-114888] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:22:32.364 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:22:32.376 [DEBUG] [Thread-114891] [transport.py] [_log()] starting thread (client mode): 0xed06e00
2025-11-03T11:22:32.377 [DEBUG] [Thread-114891] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:22:32.392 [DEBUG] [Thread-114891] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:22:32.392 [INFO] [Thread-114891] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:22:32.400 [DEBUG] [Thread-114891] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:22:32.400 [DEBUG] [Thread-114891] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:22:32.400 [DEBUG] [Thread-114891] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:22:32.400 [DEBUG] [Thread-114891] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:22:32.400 [DEBUG] [Thread-114891] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:22:32.400 [DEBUG] [Thread-114891] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:22:32.400 [DEBUG] [Thread-114891] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:22:32.400 [DEBUG] [Thread-114891] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:22:32.400 [DEBUG] [Thread-114891] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:22:32.400 [DEBUG] [Thread-114891] [transport.py] [_log()] client lang: <none>
2025-11-03T11:22:32.400 [DEBUG] [Thread-114891] [transport.py] [_log()] server lang: <none>
2025-11-03T11:22:32.400 [DEBUG] [Thread-114891] [transport.py] [_log()] kex follows: False
2025-11-03T11:22:32.400 [DEBUG] [Thread-114891] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:22:32.400 [DEBUG] [Thread-114891] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:22:32.401 [DEBUG] [Thread-114891] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:22:32.401 [DEBUG] [Thread-114891] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:22:32.401 [DEBUG] [Thread-114891] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:22:32.401 [DEBUG] [Thread-114891] [transport.py] [_log()] Compression: none
2025-11-03T11:22:32.401 [DEBUG] [Thread-114891] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:22:32.459 [DEBUG] [Thread-114891] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:22:32.459 [DEBUG] [Thread-114891] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:22:32.460 [DEBUG] [Thread-114891] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:22:32.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:22:32.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:22:32.516 [DEBUG] [Thread-114891] [transport.py] [_log()] userauth is OK
2025-11-03T11:22:32.516 [DEBUG] [Thread-114891] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:22:32.517 [DEBUG] [Thread-114891] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:22:32.517 [DEBUG] [Thread-114891] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:22:32.517 [DEBUG] [Thread-114891] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:22:32.539 [INFO] [Thread-114891] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:22:32.540 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:22:32.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:22:33.407 [DEBUG] [Thread-114891] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:22:33.407 [DEBUG] [Thread-114891] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:22:33.455 [DEBUG] [Thread-114891] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:22:33.455 [DEBUG] [Thread-114891] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:22:33.465 [DEBUG] [Thread-114891] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:22:33.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:22:33.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:22:33.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:22:33.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:22:33.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:22:33.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:22:33.501 [DEBUG] [Thread-114891] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:22:45.715 [DEBUG] [Thread-114893 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:22:56.351 [DEBUG] [Thread-114894 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:23:00.755 [DEBUG] [Thread-114895 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:23:03.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:23:03.524 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:23:03.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:23:04.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 22, 44), 39.26, 6.03, 0.0, 25.58, 23.34, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:23:04.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:22:44
2025-11-03T11:23:04.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:23:04.462 [DEBUG] [Thread-114896] [transport.py] [_log()] starting thread (client mode): 0xed677c0
2025-11-03T11:23:04.462 [DEBUG] [Thread-114896] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:23:04.482 [DEBUG] [Thread-114896] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:23:04.482 [INFO] [Thread-114896] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:23:04.485 [DEBUG] [Thread-114896] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:23:04.486 [DEBUG] [Thread-114896] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:23:04.486 [DEBUG] [Thread-114896] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:23:04.486 [DEBUG] [Thread-114896] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:23:04.486 [DEBUG] [Thread-114896] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:23:04.486 [DEBUG] [Thread-114896] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:23:04.486 [DEBUG] [Thread-114896] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:23:04.486 [DEBUG] [Thread-114896] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:23:04.486 [DEBUG] [Thread-114896] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:23:04.486 [DEBUG] [Thread-114896] [transport.py] [_log()] client lang: <none>
2025-11-03T11:23:04.486 [DEBUG] [Thread-114896] [transport.py] [_log()] server lang: <none>
2025-11-03T11:23:04.486 [DEBUG] [Thread-114896] [transport.py] [_log()] kex follows: False
2025-11-03T11:23:04.487 [DEBUG] [Thread-114896] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:23:04.487 [DEBUG] [Thread-114896] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:23:04.487 [DEBUG] [Thread-114896] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:23:04.487 [DEBUG] [Thread-114896] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:23:04.487 [DEBUG] [Thread-114896] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:23:04.487 [DEBUG] [Thread-114896] [transport.py] [_log()] Compression: none
2025-11-03T11:23:04.487 [DEBUG] [Thread-114896] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:23:04.506 [DEBUG] [Thread-114896] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:23:04.507 [DEBUG] [Thread-114896] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:23:04.507 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:23:04.508 [DEBUG] [Thread-114896] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:23:04.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:23:04.510 [DEBUG] [Thread-114896] [transport.py] [_log()] userauth is OK
2025-11-03T11:23:04.510 [DEBUG] [Thread-114896] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:23:04.510 [DEBUG] [Thread-114896] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:23:04.510 [DEBUG] [Thread-114896] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:23:04.510 [DEBUG] [Thread-114896] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:23:04.534 [INFO] [Thread-114896] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:23:04.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:23:05.153 [DEBUG] [Thread-114896] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:23:05.153 [DEBUG] [Thread-114896] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:23:05.153 [DEBUG] [Thread-114896] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:23:05.194 [DEBUG] [Thread-114896] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:23:05.194 [DEBUG] [Thread-114896] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:23:05.197 [DEBUG] [Thread-114896] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:23:05.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:23:05.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:23:05.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:23:05.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:23:05.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:23:05.218 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:23:05.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:23:05.219 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:23:05.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:23:05.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.390729 -999.00  +23.00  23.57     11   -8.30 1 1 1 1 1   888    0 31.34 2.57 ----- 25.6 23.6 35.4 27.7 28.5 -29.0 27.4 -28.7 26.8 -27.3 27.6 -29.4
2025-11-03T11:23:05.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:23:05.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:23:05.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.390729
2025-11-03T11:23:05.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:23:05.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:23:05.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:23:05.221 [DEBUG] [Thread-114896] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:23:05.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:23:05.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:23:05.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:22:44', tmtdew=39.26, humidity=6.03, cloud=0.0, wind=25.58, temperature=23.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:22:38.986', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:23:05.304 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:23:05.317 [DEBUG] [Thread-114899] [transport.py] [_log()] starting thread (client mode): 0xed65ea0
2025-11-03T11:23:05.317 [DEBUG] [Thread-114899] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:23:05.332 [DEBUG] [Thread-114899] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:23:05.332 [INFO] [Thread-114899] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:23:05.339 [DEBUG] [Thread-114899] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:23:05.339 [DEBUG] [Thread-114899] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:23:05.339 [DEBUG] [Thread-114899] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:23:05.339 [DEBUG] [Thread-114899] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:23:05.339 [DEBUG] [Thread-114899] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:23:05.339 [DEBUG] [Thread-114899] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:23:05.339 [DEBUG] [Thread-114899] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:23:05.339 [DEBUG] [Thread-114899] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:23:05.339 [DEBUG] [Thread-114899] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:23:05.339 [DEBUG] [Thread-114899] [transport.py] [_log()] client lang: <none>
2025-11-03T11:23:05.340 [DEBUG] [Thread-114899] [transport.py] [_log()] server lang: <none>
2025-11-03T11:23:05.340 [DEBUG] [Thread-114899] [transport.py] [_log()] kex follows: False
2025-11-03T11:23:05.340 [DEBUG] [Thread-114899] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:23:05.340 [DEBUG] [Thread-114899] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:23:05.340 [DEBUG] [Thread-114899] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:23:05.340 [DEBUG] [Thread-114899] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:23:05.340 [DEBUG] [Thread-114899] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:23:05.340 [DEBUG] [Thread-114899] [transport.py] [_log()] Compression: none
2025-11-03T11:23:05.340 [DEBUG] [Thread-114899] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:23:05.405 [DEBUG] [Thread-114899] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:23:05.406 [DEBUG] [Thread-114899] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:23:05.407 [DEBUG] [Thread-114899] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:23:05.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:23:05.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:23:05.464 [DEBUG] [Thread-114899] [transport.py] [_log()] userauth is OK
2025-11-03T11:23:05.465 [DEBUG] [Thread-114899] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:23:05.465 [DEBUG] [Thread-114899] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:23:05.465 [DEBUG] [Thread-114899] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:23:05.465 [DEBUG] [Thread-114899] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:23:05.485 [INFO] [Thread-114899] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:23:05.486 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:23:05.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:23:06.348 [DEBUG] [Thread-114899] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:23:06.348 [DEBUG] [Thread-114899] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:23:06.396 [DEBUG] [Thread-114899] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:23:06.396 [DEBUG] [Thread-114899] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:23:06.405 [DEBUG] [Thread-114899] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:23:06.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:23:06.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:23:06.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:23:06.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:23:06.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:23:06.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:23:06.440 [DEBUG] [Thread-114899] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:23:15.790 [DEBUG] [Thread-114901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:23:30.852 [DEBUG] [Thread-114902 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:23:31.182 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:23:31.183 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:23:36.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:23:36.463 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:23:36.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:23:37.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 23, 16), 38.98, 6.16, 0.0, 24.24, 23.26, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:23:37.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:23:16
2025-11-03T11:23:37.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:23:37.455 [DEBUG] [Thread-114903] [transport.py] [_log()] starting thread (client mode): 0xed65ba0
2025-11-03T11:23:37.455 [DEBUG] [Thread-114903] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:23:37.475 [DEBUG] [Thread-114903] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:23:37.475 [INFO] [Thread-114903] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:23:37.478 [DEBUG] [Thread-114903] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:23:37.478 [DEBUG] [Thread-114903] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:23:37.478 [DEBUG] [Thread-114903] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:23:37.478 [DEBUG] [Thread-114903] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:23:37.478 [DEBUG] [Thread-114903] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:23:37.478 [DEBUG] [Thread-114903] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:23:37.478 [DEBUG] [Thread-114903] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:23:37.478 [DEBUG] [Thread-114903] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:23:37.478 [DEBUG] [Thread-114903] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:23:37.478 [DEBUG] [Thread-114903] [transport.py] [_log()] client lang: <none>
2025-11-03T11:23:37.478 [DEBUG] [Thread-114903] [transport.py] [_log()] server lang: <none>
2025-11-03T11:23:37.478 [DEBUG] [Thread-114903] [transport.py] [_log()] kex follows: False
2025-11-03T11:23:37.478 [DEBUG] [Thread-114903] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:23:37.479 [DEBUG] [Thread-114903] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:23:37.479 [DEBUG] [Thread-114903] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:23:37.479 [DEBUG] [Thread-114903] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:23:37.479 [DEBUG] [Thread-114903] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:23:37.479 [DEBUG] [Thread-114903] [transport.py] [_log()] Compression: none
2025-11-03T11:23:37.479 [DEBUG] [Thread-114903] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:23:37.493 [DEBUG] [Thread-114903] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:23:37.493 [DEBUG] [Thread-114903] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:23:37.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:23:37.493 [DEBUG] [Thread-114903] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:23:37.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:23:37.536 [DEBUG] [Thread-114903] [transport.py] [_log()] userauth is OK
2025-11-03T11:23:37.536 [DEBUG] [Thread-114903] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:23:37.536 [DEBUG] [Thread-114903] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:23:37.536 [DEBUG] [Thread-114903] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:23:37.536 [DEBUG] [Thread-114903] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:23:37.564 [INFO] [Thread-114903] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:23:37.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:23:38.216 [DEBUG] [Thread-114903] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:23:38.216 [DEBUG] [Thread-114903] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:23:38.216 [DEBUG] [Thread-114903] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:23:38.257 [DEBUG] [Thread-114903] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:23:38.257 [DEBUG] [Thread-114903] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:23:38.259 [DEBUG] [Thread-114903] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:23:38.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:23:38.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:23:38.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:23:38.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:23:38.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:23:38.276 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:23:38.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:23:38.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:23:38.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:23:38.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.391065 -999.00  +23.40  26.17     11   -8.30 1 1 1 1 1   888    0 31.16 1.84 ----- 29.9 26.2 21.4 39.6 28.6 -30.4 27.5 -28.1 26.8 -28.5 27.6 -28.4
2025-11-03T11:23:38.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:23:38.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:23:38.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.391065
2025-11-03T11:23:38.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:23:38.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:23:38.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:23:38.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:23:38.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:23:38.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:23:16', tmtdew=38.98, humidity=6.16, cloud=0.0, wind=24.24, temperature=23.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:23:08.016', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:23:38.277 [DEBUG] [Thread-114903] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:23:38.351 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:23:38.364 [DEBUG] [Thread-114906] [transport.py] [_log()] starting thread (client mode): 0xed5db70
2025-11-03T11:23:38.364 [DEBUG] [Thread-114906] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:23:38.379 [DEBUG] [Thread-114906] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:23:38.380 [INFO] [Thread-114906] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:23:38.387 [DEBUG] [Thread-114906] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:23:38.387 [DEBUG] [Thread-114906] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:23:38.387 [DEBUG] [Thread-114906] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:23:38.387 [DEBUG] [Thread-114906] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:23:38.387 [DEBUG] [Thread-114906] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:23:38.388 [DEBUG] [Thread-114906] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:23:38.388 [DEBUG] [Thread-114906] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:23:38.388 [DEBUG] [Thread-114906] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:23:38.388 [DEBUG] [Thread-114906] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:23:38.388 [DEBUG] [Thread-114906] [transport.py] [_log()] client lang: <none>
2025-11-03T11:23:38.388 [DEBUG] [Thread-114906] [transport.py] [_log()] server lang: <none>
2025-11-03T11:23:38.388 [DEBUG] [Thread-114906] [transport.py] [_log()] kex follows: False
2025-11-03T11:23:38.388 [DEBUG] [Thread-114906] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:23:38.388 [DEBUG] [Thread-114906] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:23:38.388 [DEBUG] [Thread-114906] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:23:38.388 [DEBUG] [Thread-114906] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:23:38.388 [DEBUG] [Thread-114906] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:23:38.388 [DEBUG] [Thread-114906] [transport.py] [_log()] Compression: none
2025-11-03T11:23:38.388 [DEBUG] [Thread-114906] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:23:38.449 [DEBUG] [Thread-114906] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:23:38.450 [DEBUG] [Thread-114906] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:23:38.450 [DEBUG] [Thread-114906] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:23:38.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:23:38.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:23:38.508 [DEBUG] [Thread-114906] [transport.py] [_log()] userauth is OK
2025-11-03T11:23:38.508 [DEBUG] [Thread-114906] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:23:38.508 [DEBUG] [Thread-114906] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:23:38.508 [DEBUG] [Thread-114906] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:23:38.508 [DEBUG] [Thread-114906] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:23:38.522 [INFO] [Thread-114906] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:23:38.523 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:23:38.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:23:39.371 [DEBUG] [Thread-114906] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:23:39.371 [DEBUG] [Thread-114906] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:23:39.418 [DEBUG] [Thread-114906] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:23:39.418 [DEBUG] [Thread-114906] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:23:39.427 [DEBUG] [Thread-114906] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:23:39.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:23:39.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:23:39.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:23:39.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:23:39.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:23:39.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:23:39.459 [DEBUG] [Thread-114906] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:23:45.888 [DEBUG] [Thread-114908 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:23:56.409 [DEBUG] [Thread-114909 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:24:00.931 [DEBUG] [Thread-114910 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:24:09.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:24:09.481 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:24:09.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:24:10.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 23, 49), 39.31, 6.05, 0.0, 24.12, 23.16, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:24:10.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:23:49
2025-11-03T11:24:10.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:24:10.433 [DEBUG] [Thread-114911] [transport.py] [_log()] starting thread (client mode): 0xedc6c50
2025-11-03T11:24:10.433 [DEBUG] [Thread-114911] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:24:10.445 [DEBUG] [Thread-114911] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:24:10.445 [INFO] [Thread-114911] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:24:10.448 [DEBUG] [Thread-114911] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:24:10.449 [DEBUG] [Thread-114911] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:24:10.449 [DEBUG] [Thread-114911] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:24:10.449 [DEBUG] [Thread-114911] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:24:10.449 [DEBUG] [Thread-114911] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:24:10.449 [DEBUG] [Thread-114911] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:24:10.449 [DEBUG] [Thread-114911] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:24:10.449 [DEBUG] [Thread-114911] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:24:10.449 [DEBUG] [Thread-114911] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:24:10.449 [DEBUG] [Thread-114911] [transport.py] [_log()] client lang: <none>
2025-11-03T11:24:10.449 [DEBUG] [Thread-114911] [transport.py] [_log()] server lang: <none>
2025-11-03T11:24:10.449 [DEBUG] [Thread-114911] [transport.py] [_log()] kex follows: False
2025-11-03T11:24:10.449 [DEBUG] [Thread-114911] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:24:10.449 [DEBUG] [Thread-114911] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:24:10.449 [DEBUG] [Thread-114911] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:24:10.449 [DEBUG] [Thread-114911] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:24:10.449 [DEBUG] [Thread-114911] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:24:10.449 [DEBUG] [Thread-114911] [transport.py] [_log()] Compression: none
2025-11-03T11:24:10.449 [DEBUG] [Thread-114911] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:24:10.467 [DEBUG] [Thread-114911] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:24:10.467 [DEBUG] [Thread-114911] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:24:10.468 [DEBUG] [Thread-114911] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:24:10.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:24:10.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:24:10.469 [DEBUG] [Thread-114911] [transport.py] [_log()] userauth is OK
2025-11-03T11:24:10.470 [DEBUG] [Thread-114911] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:24:10.470 [DEBUG] [Thread-114911] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:24:10.470 [DEBUG] [Thread-114911] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:24:10.470 [DEBUG] [Thread-114911] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:24:10.504 [INFO] [Thread-114911] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:24:10.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:24:11.133 [DEBUG] [Thread-114911] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:24:11.133 [DEBUG] [Thread-114911] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:24:11.133 [DEBUG] [Thread-114911] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:24:11.174 [DEBUG] [Thread-114911] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:24:11.174 [DEBUG] [Thread-114911] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:24:11.177 [DEBUG] [Thread-114911] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:24:11.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:24:11.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:24:11.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:24:11.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:24:11.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:24:11.195 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:24:11.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:24:11.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:24:11.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:24:11.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.391412 -999.00  +22.80  25.63     11   -8.80 1 1 1 1 1   888    0 31.35 1.76 ----- 16.6 25.6 37.8 35.6 28.4 -29.5 27.4 -30.4 26.8 -27.5 27.5 -27.6
2025-11-03T11:24:11.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:24:11.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:24:11.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.391412
2025-11-03T11:24:11.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:24:11.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:24:11.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:24:11.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:24:11.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:24:11.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:23:49', tmtdew=39.31, humidity=6.05, cloud=0.0, wind=24.12, temperature=23.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:23:37.997', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:24:11.196 [DEBUG] [Thread-114911] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:24:11.270 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:24:11.282 [DEBUG] [Thread-114914] [transport.py] [_log()] starting thread (client mode): 0x81c9930
2025-11-03T11:24:11.282 [DEBUG] [Thread-114914] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:24:11.297 [DEBUG] [Thread-114914] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:24:11.297 [INFO] [Thread-114914] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:24:11.305 [DEBUG] [Thread-114914] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:24:11.305 [DEBUG] [Thread-114914] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:24:11.305 [DEBUG] [Thread-114914] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:24:11.305 [DEBUG] [Thread-114914] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:24:11.305 [DEBUG] [Thread-114914] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:24:11.305 [DEBUG] [Thread-114914] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:24:11.305 [DEBUG] [Thread-114914] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:24:11.306 [DEBUG] [Thread-114914] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:24:11.306 [DEBUG] [Thread-114914] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:24:11.306 [DEBUG] [Thread-114914] [transport.py] [_log()] client lang: <none>
2025-11-03T11:24:11.306 [DEBUG] [Thread-114914] [transport.py] [_log()] server lang: <none>
2025-11-03T11:24:11.306 [DEBUG] [Thread-114914] [transport.py] [_log()] kex follows: False
2025-11-03T11:24:11.306 [DEBUG] [Thread-114914] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:24:11.306 [DEBUG] [Thread-114914] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:24:11.306 [DEBUG] [Thread-114914] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:24:11.306 [DEBUG] [Thread-114914] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:24:11.306 [DEBUG] [Thread-114914] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:24:11.306 [DEBUG] [Thread-114914] [transport.py] [_log()] Compression: none
2025-11-03T11:24:11.306 [DEBUG] [Thread-114914] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:24:11.364 [DEBUG] [Thread-114914] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:24:11.364 [DEBUG] [Thread-114914] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:24:11.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:24:11.365 [DEBUG] [Thread-114914] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:24:11.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:24:11.419 [DEBUG] [Thread-114914] [transport.py] [_log()] userauth is OK
2025-11-03T11:24:11.419 [DEBUG] [Thread-114914] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:24:11.419 [DEBUG] [Thread-114914] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:24:11.419 [DEBUG] [Thread-114914] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:24:11.419 [DEBUG] [Thread-114914] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:24:11.440 [INFO] [Thread-114914] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:24:11.441 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:24:11.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:24:12.304 [DEBUG] [Thread-114914] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:24:12.304 [DEBUG] [Thread-114914] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:24:12.352 [DEBUG] [Thread-114914] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:24:12.352 [DEBUG] [Thread-114914] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:24:12.361 [DEBUG] [Thread-114914] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:24:12.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:24:12.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:24:12.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:24:12.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:24:12.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:24:12.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:24:12.391 [DEBUG] [Thread-114914] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:24:15.961 [DEBUG] [Thread-114916 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:24:31.001 [DEBUG] [Thread-114917 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:24:31.323 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:24:31.324 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:24:42.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:24:42.415 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:24:42.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:24:43.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 24, 21), 39.11, 6.11, 0.0, 25.92, 22.92, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:24:43.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:24:21
2025-11-03T11:24:43.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:24:43.384 [DEBUG] [Thread-114918] [transport.py] [_log()] starting thread (client mode): 0x81ca3b0
2025-11-03T11:24:43.384 [DEBUG] [Thread-114918] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:24:43.404 [DEBUG] [Thread-114918] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:24:43.404 [INFO] [Thread-114918] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:24:43.406 [DEBUG] [Thread-114918] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:24:43.407 [DEBUG] [Thread-114918] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:24:43.407 [DEBUG] [Thread-114918] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:24:43.407 [DEBUG] [Thread-114918] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:24:43.407 [DEBUG] [Thread-114918] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:24:43.407 [DEBUG] [Thread-114918] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:24:43.407 [DEBUG] [Thread-114918] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:24:43.407 [DEBUG] [Thread-114918] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:24:43.407 [DEBUG] [Thread-114918] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:24:43.407 [DEBUG] [Thread-114918] [transport.py] [_log()] client lang: <none>
2025-11-03T11:24:43.407 [DEBUG] [Thread-114918] [transport.py] [_log()] server lang: <none>
2025-11-03T11:24:43.407 [DEBUG] [Thread-114918] [transport.py] [_log()] kex follows: False
2025-11-03T11:24:43.407 [DEBUG] [Thread-114918] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:24:43.407 [DEBUG] [Thread-114918] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:24:43.408 [DEBUG] [Thread-114918] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:24:43.408 [DEBUG] [Thread-114918] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:24:43.408 [DEBUG] [Thread-114918] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:24:43.408 [DEBUG] [Thread-114918] [transport.py] [_log()] Compression: none
2025-11-03T11:24:43.408 [DEBUG] [Thread-114918] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:24:43.423 [DEBUG] [Thread-114918] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:24:43.423 [DEBUG] [Thread-114918] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:24:43.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:24:43.424 [DEBUG] [Thread-114918] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:24:43.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:24:43.427 [DEBUG] [Thread-114918] [transport.py] [_log()] userauth is OK
2025-11-03T11:24:43.427 [DEBUG] [Thread-114918] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:24:43.427 [DEBUG] [Thread-114918] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:24:43.427 [DEBUG] [Thread-114918] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:24:43.427 [DEBUG] [Thread-114918] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:24:43.446 [INFO] [Thread-114918] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:24:43.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:24:44.069 [DEBUG] [Thread-114918] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:24:44.069 [DEBUG] [Thread-114918] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:24:44.069 [DEBUG] [Thread-114918] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:24:44.110 [DEBUG] [Thread-114918] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:24:44.110 [DEBUG] [Thread-114918] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:24:44.114 [DEBUG] [Thread-114918] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:24:44.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:24:44.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:24:44.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:24:44.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:24:44.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:24:44.137 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:24:44.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:24:44.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:24:44.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:24:44.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.391759 -999.00  +22.60  20.71     11   -8.70 1 1 1 1 1   888    0 31.27 0.12 ----- 20.4 20.7 29.8 27.0 28.5 -28.3 27.4 -29.1 26.8 -27.1 27.5 -27.0
2025-11-03T11:24:44.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:24:44.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:24:44.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.391759
2025-11-03T11:24:44.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:24:44.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:24:44.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:24:44.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:24:44.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:24:44.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:24:21', tmtdew=39.11, humidity=6.11, cloud=0.0, wind=25.92, temperature=22.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:24:07.978', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:24:44.140 [DEBUG] [Thread-114918] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:24:44.223 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:24:44.235 [DEBUG] [Thread-114921] [transport.py] [_log()] starting thread (client mode): 0x81cad70
2025-11-03T11:24:44.235 [DEBUG] [Thread-114921] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:24:44.250 [DEBUG] [Thread-114921] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:24:44.250 [INFO] [Thread-114921] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:24:44.258 [DEBUG] [Thread-114921] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:24:44.258 [DEBUG] [Thread-114921] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:24:44.259 [DEBUG] [Thread-114921] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:24:44.259 [DEBUG] [Thread-114921] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:24:44.259 [DEBUG] [Thread-114921] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:24:44.259 [DEBUG] [Thread-114921] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:24:44.259 [DEBUG] [Thread-114921] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:24:44.259 [DEBUG] [Thread-114921] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:24:44.259 [DEBUG] [Thread-114921] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:24:44.259 [DEBUG] [Thread-114921] [transport.py] [_log()] client lang: <none>
2025-11-03T11:24:44.260 [DEBUG] [Thread-114921] [transport.py] [_log()] server lang: <none>
2025-11-03T11:24:44.260 [DEBUG] [Thread-114921] [transport.py] [_log()] kex follows: False
2025-11-03T11:24:44.260 [DEBUG] [Thread-114921] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:24:44.260 [DEBUG] [Thread-114921] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:24:44.260 [DEBUG] [Thread-114921] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:24:44.260 [DEBUG] [Thread-114921] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:24:44.260 [DEBUG] [Thread-114921] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:24:44.261 [DEBUG] [Thread-114921] [transport.py] [_log()] Compression: none
2025-11-03T11:24:44.261 [DEBUG] [Thread-114921] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:24:44.317 [DEBUG] [Thread-114921] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:24:44.318 [DEBUG] [Thread-114921] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:24:44.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:24:44.319 [DEBUG] [Thread-114921] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:24:44.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:24:44.375 [DEBUG] [Thread-114921] [transport.py] [_log()] userauth is OK
2025-11-03T11:24:44.376 [DEBUG] [Thread-114921] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:24:44.376 [DEBUG] [Thread-114921] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:24:44.376 [DEBUG] [Thread-114921] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:24:44.376 [DEBUG] [Thread-114921] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:24:44.395 [INFO] [Thread-114921] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:24:44.395 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:24:44.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:24:45.234 [DEBUG] [Thread-114921] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:24:45.234 [DEBUG] [Thread-114921] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:24:45.282 [DEBUG] [Thread-114921] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:24:45.282 [DEBUG] [Thread-114921] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:24:45.291 [DEBUG] [Thread-114921] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:24:45.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:24:45.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:24:45.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:24:45.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:24:45.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:24:45.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:24:45.325 [DEBUG] [Thread-114921] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:24:46.036 [DEBUG] [Thread-114923 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:24:56.464 [DEBUG] [Thread-114924 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:25:01.073 [DEBUG] [Thread-114925 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:25:15.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:25:15.348 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:25:15.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:25:15.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 24, 53), 38.8, 6.1, 0.0, 20.45, 22.57, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:25:15.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:24:53
2025-11-03T11:25:16.113 [DEBUG] [Thread-114926 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:25:16.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:25:16.285 [DEBUG] [Thread-114927] [transport.py] [_log()] starting thread (client mode): 0xed35810
2025-11-03T11:25:16.285 [DEBUG] [Thread-114927] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:25:16.305 [DEBUG] [Thread-114927] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:25:16.305 [INFO] [Thread-114927] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:25:16.308 [DEBUG] [Thread-114927] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:25:16.308 [DEBUG] [Thread-114927] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:25:16.308 [DEBUG] [Thread-114927] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:25:16.308 [DEBUG] [Thread-114927] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:25:16.308 [DEBUG] [Thread-114927] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:25:16.308 [DEBUG] [Thread-114927] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:25:16.308 [DEBUG] [Thread-114927] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:25:16.308 [DEBUG] [Thread-114927] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:25:16.308 [DEBUG] [Thread-114927] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:25:16.308 [DEBUG] [Thread-114927] [transport.py] [_log()] client lang: <none>
2025-11-03T11:25:16.308 [DEBUG] [Thread-114927] [transport.py] [_log()] server lang: <none>
2025-11-03T11:25:16.308 [DEBUG] [Thread-114927] [transport.py] [_log()] kex follows: False
2025-11-03T11:25:16.308 [DEBUG] [Thread-114927] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:25:16.308 [DEBUG] [Thread-114927] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:25:16.308 [DEBUG] [Thread-114927] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:25:16.308 [DEBUG] [Thread-114927] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:25:16.309 [DEBUG] [Thread-114927] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:25:16.309 [DEBUG] [Thread-114927] [transport.py] [_log()] Compression: none
2025-11-03T11:25:16.309 [DEBUG] [Thread-114927] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:25:16.327 [DEBUG] [Thread-114927] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:25:16.327 [DEBUG] [Thread-114927] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:25:16.327 [DEBUG] [Thread-114927] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:25:16.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:25:16.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:25:16.328 [DEBUG] [Thread-114927] [transport.py] [_log()] userauth is OK
2025-11-03T11:25:16.328 [DEBUG] [Thread-114927] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:25:16.328 [DEBUG] [Thread-114927] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:25:16.328 [DEBUG] [Thread-114927] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:25:16.328 [DEBUG] [Thread-114927] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:25:16.340 [INFO] [Thread-114927] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:25:16.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:25:16.980 [DEBUG] [Thread-114927] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:25:16.980 [DEBUG] [Thread-114927] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:25:16.980 [DEBUG] [Thread-114927] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:25:17.021 [DEBUG] [Thread-114927] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:25:17.021 [DEBUG] [Thread-114927] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:25:17.024 [DEBUG] [Thread-114927] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:25:17.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:25:17.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:25:17.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:25:17.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:25:17.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:25:17.056 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:25:17.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:25:17.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:25:17.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:25:17.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.392107 -999.00  +23.00  28.38     11   -8.50 1 1 1 1 1   888    0 31.11 -1.97 ----- 32.2 28.4 59.0 29.6 28.6 -27.8 27.5 -28.0 26.8 -27.5 27.6 -28.8
2025-11-03T11:25:17.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:25:17.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:25:17.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.392107
2025-11-03T11:25:17.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:25:17.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:25:17.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:25:17.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:25:17.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:25:17.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:24:53', tmtdew=38.8, humidity=6.1, cloud=0.0, wind=20.45, temperature=22.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:24:38.045', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:25:17.060 [DEBUG] [Thread-114927] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:25:17.154 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:25:17.169 [DEBUG] [Thread-114930] [transport.py] [_log()] starting thread (client mode): 0xed35d20
2025-11-03T11:25:17.169 [DEBUG] [Thread-114930] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:25:17.190 [DEBUG] [Thread-114930] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:25:17.190 [INFO] [Thread-114930] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:25:17.201 [DEBUG] [Thread-114930] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:25:17.201 [DEBUG] [Thread-114930] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:25:17.201 [DEBUG] [Thread-114930] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:25:17.201 [DEBUG] [Thread-114930] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:25:17.201 [DEBUG] [Thread-114930] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:25:17.201 [DEBUG] [Thread-114930] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:25:17.201 [DEBUG] [Thread-114930] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:25:17.201 [DEBUG] [Thread-114930] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:25:17.201 [DEBUG] [Thread-114930] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:25:17.201 [DEBUG] [Thread-114930] [transport.py] [_log()] client lang: <none>
2025-11-03T11:25:17.201 [DEBUG] [Thread-114930] [transport.py] [_log()] server lang: <none>
2025-11-03T11:25:17.201 [DEBUG] [Thread-114930] [transport.py] [_log()] kex follows: False
2025-11-03T11:25:17.201 [DEBUG] [Thread-114930] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:25:17.201 [DEBUG] [Thread-114930] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:25:17.201 [DEBUG] [Thread-114930] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:25:17.201 [DEBUG] [Thread-114930] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:25:17.201 [DEBUG] [Thread-114930] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:25:17.202 [DEBUG] [Thread-114930] [transport.py] [_log()] Compression: none
2025-11-03T11:25:17.202 [DEBUG] [Thread-114930] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:25:17.259 [DEBUG] [Thread-114930] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:25:17.259 [DEBUG] [Thread-114930] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:25:17.259 [DEBUG] [Thread-114930] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:25:17.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:25:17.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:25:17.315 [DEBUG] [Thread-114930] [transport.py] [_log()] userauth is OK
2025-11-03T11:25:17.316 [DEBUG] [Thread-114930] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:25:17.316 [DEBUG] [Thread-114930] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:25:17.316 [DEBUG] [Thread-114930] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:25:17.316 [DEBUG] [Thread-114930] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:25:17.335 [INFO] [Thread-114930] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:25:17.336 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:25:17.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:25:18.202 [DEBUG] [Thread-114930] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:25:18.203 [DEBUG] [Thread-114930] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:25:18.250 [DEBUG] [Thread-114930] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:25:18.250 [DEBUG] [Thread-114930] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:25:18.259 [DEBUG] [Thread-114930] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:25:18.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:25:18.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:25:18.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:25:18.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:25:18.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:25:18.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:25:18.297 [DEBUG] [Thread-114930] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:25:31.146 [DEBUG] [Thread-114932 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:25:31.473 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:25:31.474 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:25:46.196 [DEBUG] [Thread-114933 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:25:48.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:25:48.320 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:25:48.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:25:48.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 25, 26), 38.66, 6.15, 0.0, 18.37, 22.43, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:25:48.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:25:26
2025-11-03T11:25:49.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:25:49.272 [DEBUG] [Thread-114934] [transport.py] [_log()] starting thread (client mode): 0x81c9060
2025-11-03T11:25:49.272 [DEBUG] [Thread-114934] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:25:49.289 [DEBUG] [Thread-114934] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:25:49.289 [INFO] [Thread-114934] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:25:49.299 [DEBUG] [Thread-114934] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:25:49.299 [DEBUG] [Thread-114934] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:25:49.299 [DEBUG] [Thread-114934] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:25:49.299 [DEBUG] [Thread-114934] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:25:49.299 [DEBUG] [Thread-114934] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:25:49.299 [DEBUG] [Thread-114934] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:25:49.299 [DEBUG] [Thread-114934] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:25:49.299 [DEBUG] [Thread-114934] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:25:49.299 [DEBUG] [Thread-114934] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:25:49.299 [DEBUG] [Thread-114934] [transport.py] [_log()] client lang: <none>
2025-11-03T11:25:49.299 [DEBUG] [Thread-114934] [transport.py] [_log()] server lang: <none>
2025-11-03T11:25:49.300 [DEBUG] [Thread-114934] [transport.py] [_log()] kex follows: False
2025-11-03T11:25:49.300 [DEBUG] [Thread-114934] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:25:49.300 [DEBUG] [Thread-114934] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:25:49.300 [DEBUG] [Thread-114934] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:25:49.300 [DEBUG] [Thread-114934] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:25:49.300 [DEBUG] [Thread-114934] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:25:49.300 [DEBUG] [Thread-114934] [transport.py] [_log()] Compression: none
2025-11-03T11:25:49.300 [DEBUG] [Thread-114934] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:25:49.314 [DEBUG] [Thread-114934] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:25:49.315 [DEBUG] [Thread-114934] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:25:49.315 [DEBUG] [Thread-114934] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:25:49.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:25:49.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:25:49.317 [DEBUG] [Thread-114934] [transport.py] [_log()] userauth is OK
2025-11-03T11:25:49.317 [DEBUG] [Thread-114934] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:25:49.317 [DEBUG] [Thread-114934] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:25:49.317 [DEBUG] [Thread-114934] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:25:49.317 [DEBUG] [Thread-114934] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:25:49.350 [INFO] [Thread-114934] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:25:49.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:25:49.996 [DEBUG] [Thread-114934] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:25:49.996 [DEBUG] [Thread-114934] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:25:49.996 [DEBUG] [Thread-114934] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:25:50.037 [DEBUG] [Thread-114934] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:25:50.037 [DEBUG] [Thread-114934] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:25:50.041 [DEBUG] [Thread-114934] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:25:50.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:25:50.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:25:50.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:25:50.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:25:50.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:25:50.065 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:25:50.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:25:50.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:25:50.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:25:50.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.392812 -999.00  +22.90  29.07     11   -8.60 1 1 1 1 1   888    0 31.32 -3.97 ----- 29.3 29.1 51.0 31.7 28.3 -28.2 27.4 -29.2 26.6 -28.0 27.6 -28.1
2025-11-03T11:25:50.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:25:50.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:25:50.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.392812
2025-11-03T11:25:50.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:25:50.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:25:50.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:25:50.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:25:50.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:25:50.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:25:26', tmtdew=38.66, humidity=6.15, cloud=0.0, wind=18.37, temperature=22.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:25:38.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:25:50.068 [DEBUG] [Thread-114934] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:25:50.151 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:25:50.162 [DEBUG] [Thread-114937] [transport.py] [_log()] starting thread (client mode): 0xed5ecb0
2025-11-03T11:25:50.163 [DEBUG] [Thread-114937] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:25:50.178 [DEBUG] [Thread-114937] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:25:50.178 [INFO] [Thread-114937] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:25:50.185 [DEBUG] [Thread-114937] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:25:50.185 [DEBUG] [Thread-114937] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:25:50.186 [DEBUG] [Thread-114937] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:25:50.186 [DEBUG] [Thread-114937] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:25:50.186 [DEBUG] [Thread-114937] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:25:50.186 [DEBUG] [Thread-114937] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:25:50.186 [DEBUG] [Thread-114937] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:25:50.186 [DEBUG] [Thread-114937] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:25:50.186 [DEBUG] [Thread-114937] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:25:50.186 [DEBUG] [Thread-114937] [transport.py] [_log()] client lang: <none>
2025-11-03T11:25:50.186 [DEBUG] [Thread-114937] [transport.py] [_log()] server lang: <none>
2025-11-03T11:25:50.187 [DEBUG] [Thread-114937] [transport.py] [_log()] kex follows: False
2025-11-03T11:25:50.187 [DEBUG] [Thread-114937] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:25:50.187 [DEBUG] [Thread-114937] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:25:50.187 [DEBUG] [Thread-114937] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:25:50.187 [DEBUG] [Thread-114937] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:25:50.187 [DEBUG] [Thread-114937] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:25:50.187 [DEBUG] [Thread-114937] [transport.py] [_log()] Compression: none
2025-11-03T11:25:50.187 [DEBUG] [Thread-114937] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:25:50.248 [DEBUG] [Thread-114937] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:25:50.249 [DEBUG] [Thread-114937] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:25:50.250 [DEBUG] [Thread-114937] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:25:50.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:25:50.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:25:50.311 [DEBUG] [Thread-114937] [transport.py] [_log()] userauth is OK
2025-11-03T11:25:50.311 [DEBUG] [Thread-114937] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:25:50.312 [DEBUG] [Thread-114937] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:25:50.312 [DEBUG] [Thread-114937] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:25:50.312 [DEBUG] [Thread-114937] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:25:50.330 [INFO] [Thread-114937] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:25:50.331 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:25:50.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:25:51.185 [DEBUG] [Thread-114937] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:25:51.185 [DEBUG] [Thread-114937] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:25:51.233 [DEBUG] [Thread-114937] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:25:51.233 [DEBUG] [Thread-114937] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:25:51.252 [DEBUG] [Thread-114937] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:25:51.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:25:51.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:25:51.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:25:51.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:25:51.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:25:51.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:25:51.289 [DEBUG] [Thread-114937] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:25:56.519 [DEBUG] [Thread-114939 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:26:01.224 [DEBUG] [Thread-114940 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:26:16.259 [DEBUG] [Thread-114941 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:26:21.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:26:21.284 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:26:21.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:26:21.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 25, 58), 38.78, 6.18, 0.0, 21.62, 22.68, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:26:21.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:25:58
2025-11-03T11:26:22.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:26:22.230 [DEBUG] [Thread-114942] [transport.py] [_log()] starting thread (client mode): 0xed35d50
2025-11-03T11:26:22.230 [DEBUG] [Thread-114942] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:26:22.243 [DEBUG] [Thread-114942] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:26:22.243 [INFO] [Thread-114942] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:26:22.246 [DEBUG] [Thread-114942] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:26:22.246 [DEBUG] [Thread-114942] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:26:22.246 [DEBUG] [Thread-114942] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:26:22.246 [DEBUG] [Thread-114942] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:26:22.246 [DEBUG] [Thread-114942] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:26:22.246 [DEBUG] [Thread-114942] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:26:22.246 [DEBUG] [Thread-114942] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:26:22.246 [DEBUG] [Thread-114942] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:26:22.246 [DEBUG] [Thread-114942] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:26:22.246 [DEBUG] [Thread-114942] [transport.py] [_log()] client lang: <none>
2025-11-03T11:26:22.246 [DEBUG] [Thread-114942] [transport.py] [_log()] server lang: <none>
2025-11-03T11:26:22.246 [DEBUG] [Thread-114942] [transport.py] [_log()] kex follows: False
2025-11-03T11:26:22.246 [DEBUG] [Thread-114942] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:26:22.247 [DEBUG] [Thread-114942] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:26:22.247 [DEBUG] [Thread-114942] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:26:22.247 [DEBUG] [Thread-114942] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:26:22.247 [DEBUG] [Thread-114942] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:26:22.247 [DEBUG] [Thread-114942] [transport.py] [_log()] Compression: none
2025-11-03T11:26:22.247 [DEBUG] [Thread-114942] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:26:22.263 [DEBUG] [Thread-114942] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:26:22.264 [DEBUG] [Thread-114942] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:26:22.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:26:22.265 [DEBUG] [Thread-114942] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:26:22.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:26:22.267 [DEBUG] [Thread-114942] [transport.py] [_log()] userauth is OK
2025-11-03T11:26:22.268 [DEBUG] [Thread-114942] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:26:22.268 [DEBUG] [Thread-114942] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:26:22.268 [DEBUG] [Thread-114942] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:26:22.268 [DEBUG] [Thread-114942] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:26:22.289 [INFO] [Thread-114942] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:26:22.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:26:22.840 [DEBUG] [Thread-114942] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:26:22.840 [DEBUG] [Thread-114942] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:26:22.840 [DEBUG] [Thread-114942] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:26:22.881 [DEBUG] [Thread-114942] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:26:22.881 [DEBUG] [Thread-114942] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:26:22.884 [DEBUG] [Thread-114942] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:26:22.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:26:22.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:26:22.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:26:22.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:26:22.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:26:22.904 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:26:22.904 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:26:22.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:26:22.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:26:22.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.393160 -999.00  +22.60  23.59     11   -8.70 1 1 1 1 1   888    0 30.97 -6.25 ----- 22.3 23.6 59.2 31.8 28.2 -29.2 27.3 -29.4 26.5 -28.6 27.6 -28.1
2025-11-03T11:26:22.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:26:22.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:26:22.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.393160
2025-11-03T11:26:22.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:26:22.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:26:22.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:26:22.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:26:22.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:26:22.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:25:58', tmtdew=38.78, humidity=6.18, cloud=0.0, wind=21.62, temperature=22.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:26:09.024', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:26:22.907 [DEBUG] [Thread-114942] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:26:22.991 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:26:23.003 [DEBUG] [Thread-114945] [transport.py] [_log()] starting thread (client mode): 0xed36d70
2025-11-03T11:26:23.003 [DEBUG] [Thread-114945] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:26:23.018 [DEBUG] [Thread-114945] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:26:23.018 [INFO] [Thread-114945] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:26:23.025 [DEBUG] [Thread-114945] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:26:23.025 [DEBUG] [Thread-114945] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:26:23.025 [DEBUG] [Thread-114945] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:26:23.025 [DEBUG] [Thread-114945] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:26:23.025 [DEBUG] [Thread-114945] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:26:23.025 [DEBUG] [Thread-114945] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:26:23.025 [DEBUG] [Thread-114945] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:26:23.025 [DEBUG] [Thread-114945] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:26:23.025 [DEBUG] [Thread-114945] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:26:23.026 [DEBUG] [Thread-114945] [transport.py] [_log()] client lang: <none>
2025-11-03T11:26:23.026 [DEBUG] [Thread-114945] [transport.py] [_log()] server lang: <none>
2025-11-03T11:26:23.026 [DEBUG] [Thread-114945] [transport.py] [_log()] kex follows: False
2025-11-03T11:26:23.026 [DEBUG] [Thread-114945] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:26:23.026 [DEBUG] [Thread-114945] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:26:23.026 [DEBUG] [Thread-114945] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:26:23.026 [DEBUG] [Thread-114945] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:26:23.026 [DEBUG] [Thread-114945] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:26:23.026 [DEBUG] [Thread-114945] [transport.py] [_log()] Compression: none
2025-11-03T11:26:23.026 [DEBUG] [Thread-114945] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:26:23.083 [DEBUG] [Thread-114945] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:26:23.083 [DEBUG] [Thread-114945] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:26:23.084 [DEBUG] [Thread-114945] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:26:23.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:26:23.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:26:23.357 [DEBUG] [Thread-114945] [transport.py] [_log()] userauth is OK
2025-11-03T11:26:23.358 [DEBUG] [Thread-114945] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:26:23.358 [DEBUG] [Thread-114945] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:26:23.358 [DEBUG] [Thread-114945] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:26:23.358 [DEBUG] [Thread-114945] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:26:23.382 [INFO] [Thread-114945] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:26:23.382 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:26:23.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:26:24.230 [DEBUG] [Thread-114945] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:26:24.231 [DEBUG] [Thread-114945] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:26:24.278 [DEBUG] [Thread-114945] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:26:24.278 [DEBUG] [Thread-114945] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:26:24.288 [DEBUG] [Thread-114945] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:26:24.306 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:26:24.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:26:24.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:26:24.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:26:24.326 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:26:24.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:26:24.334 [DEBUG] [Thread-114945] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:26:31.291 [DEBUG] [Thread-114947 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:26:31.615 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:26:31.616 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:26:46.341 [DEBUG] [Thread-114948 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:26:54.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:26:54.357 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:26:54.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:26:55.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 26, 30), 38.72, 6.23, 0.0, 23.38, 22.77, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:26:55.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:26:30
2025-11-03T11:26:55.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:26:55.328 [DEBUG] [Thread-114949] [transport.py] [_log()] starting thread (client mode): 0xed419f0
2025-11-03T11:26:55.328 [DEBUG] [Thread-114949] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:26:55.347 [DEBUG] [Thread-114949] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:26:55.347 [INFO] [Thread-114949] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:26:55.350 [DEBUG] [Thread-114949] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:26:55.350 [DEBUG] [Thread-114949] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:26:55.350 [DEBUG] [Thread-114949] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:26:55.350 [DEBUG] [Thread-114949] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:26:55.350 [DEBUG] [Thread-114949] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:26:55.350 [DEBUG] [Thread-114949] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:26:55.350 [DEBUG] [Thread-114949] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:26:55.351 [DEBUG] [Thread-114949] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:26:55.351 [DEBUG] [Thread-114949] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:26:55.351 [DEBUG] [Thread-114949] [transport.py] [_log()] client lang: <none>
2025-11-03T11:26:55.351 [DEBUG] [Thread-114949] [transport.py] [_log()] server lang: <none>
2025-11-03T11:26:55.351 [DEBUG] [Thread-114949] [transport.py] [_log()] kex follows: False
2025-11-03T11:26:55.351 [DEBUG] [Thread-114949] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:26:55.351 [DEBUG] [Thread-114949] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:26:55.351 [DEBUG] [Thread-114949] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:26:55.351 [DEBUG] [Thread-114949] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:26:55.351 [DEBUG] [Thread-114949] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:26:55.351 [DEBUG] [Thread-114949] [transport.py] [_log()] Compression: none
2025-11-03T11:26:55.351 [DEBUG] [Thread-114949] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:26:55.359 [DEBUG] [Thread-114949] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:26:55.359 [DEBUG] [Thread-114949] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:26:55.359 [DEBUG] [Thread-114949] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:26:55.359 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:26:55.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:26:55.360 [DEBUG] [Thread-114949] [transport.py] [_log()] userauth is OK
2025-11-03T11:26:55.360 [DEBUG] [Thread-114949] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:26:55.360 [DEBUG] [Thread-114949] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:26:55.360 [DEBUG] [Thread-114949] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:26:55.360 [DEBUG] [Thread-114949] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:26:55.373 [INFO] [Thread-114949] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:26:55.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:26:55.955 [DEBUG] [Thread-114949] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:26:55.956 [DEBUG] [Thread-114949] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:26:55.956 [DEBUG] [Thread-114949] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:26:55.997 [DEBUG] [Thread-114949] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:26:55.998 [DEBUG] [Thread-114949] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:26:56.001 [DEBUG] [Thread-114949] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:26:56.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:26:56.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:26:56.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:26:56.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:26:56.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:26:56.025 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:26:56.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:26:56.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:26:56.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:26:56.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.393507 -999.00  +23.50  29.82     11   -8.50 1 1 1 1 1   888    0 31.95 -5.58 ----- 23.5 29.8 24.2 33.6 28.5 -27.0 27.3 -27.7 26.9 -26.1 27.6 -26.6
2025-11-03T11:26:56.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:26:56.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:26:56.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.393507
2025-11-03T11:26:56.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:26:56.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:26:56.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:26:56.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:26:56.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:26:56.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:26:30', tmtdew=38.72, humidity=6.23, cloud=0.0, wind=23.38, temperature=22.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:26:39.005', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:26:56.028 [DEBUG] [Thread-114949] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:26:56.115 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:26:56.127 [DEBUG] [Thread-114952] [transport.py] [_log()] starting thread (client mode): 0x81cb7c0
2025-11-03T11:26:56.127 [DEBUG] [Thread-114952] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:26:56.142 [DEBUG] [Thread-114952] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:26:56.142 [INFO] [Thread-114952] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:26:56.149 [DEBUG] [Thread-114952] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:26:56.149 [DEBUG] [Thread-114952] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:26:56.149 [DEBUG] [Thread-114952] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:26:56.150 [DEBUG] [Thread-114952] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:26:56.150 [DEBUG] [Thread-114952] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:26:56.150 [DEBUG] [Thread-114952] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:26:56.150 [DEBUG] [Thread-114952] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:26:56.150 [DEBUG] [Thread-114952] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:26:56.150 [DEBUG] [Thread-114952] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:26:56.150 [DEBUG] [Thread-114952] [transport.py] [_log()] client lang: <none>
2025-11-03T11:26:56.150 [DEBUG] [Thread-114952] [transport.py] [_log()] server lang: <none>
2025-11-03T11:26:56.150 [DEBUG] [Thread-114952] [transport.py] [_log()] kex follows: False
2025-11-03T11:26:56.150 [DEBUG] [Thread-114952] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:26:56.150 [DEBUG] [Thread-114952] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:26:56.150 [DEBUG] [Thread-114952] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:26:56.150 [DEBUG] [Thread-114952] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:26:56.150 [DEBUG] [Thread-114952] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:26:56.150 [DEBUG] [Thread-114952] [transport.py] [_log()] Compression: none
2025-11-03T11:26:56.150 [DEBUG] [Thread-114952] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:26:56.206 [DEBUG] [Thread-114952] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:26:56.206 [DEBUG] [Thread-114952] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:26:56.206 [DEBUG] [Thread-114952] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:26:56.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:26:56.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:26:56.263 [DEBUG] [Thread-114952] [transport.py] [_log()] userauth is OK
2025-11-03T11:26:56.263 [DEBUG] [Thread-114952] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:26:56.263 [DEBUG] [Thread-114952] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:26:56.263 [DEBUG] [Thread-114952] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:26:56.263 [DEBUG] [Thread-114952] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:26:56.277 [INFO] [Thread-114952] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:26:56.278 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:26:56.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:26:56.577 [DEBUG] [Thread-114954 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:26:57.113 [DEBUG] [Thread-114952] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:26:57.113 [DEBUG] [Thread-114952] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:26:57.161 [DEBUG] [Thread-114952] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:26:57.161 [DEBUG] [Thread-114952] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:26:57.171 [DEBUG] [Thread-114952] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:26:57.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:26:57.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:26:57.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:26:57.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:26:57.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:26:57.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:26:57.207 [DEBUG] [Thread-114952] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:27:01.375 [DEBUG] [Thread-114955 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:27:16.439 [DEBUG] [Thread-114956 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:27:27.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:27:27.230 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:27:27.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:27:27.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 27, 3), 39.28, 6.01, 0.0, 27.84, 23.3, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:27:27.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:27:03
2025-11-03T11:27:28.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:27:28.218 [DEBUG] [Thread-114957] [transport.py] [_log()] starting thread (client mode): 0xed35a50
2025-11-03T11:27:28.218 [DEBUG] [Thread-114957] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:27:28.238 [DEBUG] [Thread-114957] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:27:28.239 [INFO] [Thread-114957] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:27:28.249 [DEBUG] [Thread-114957] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:27:28.249 [DEBUG] [Thread-114957] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:27:28.249 [DEBUG] [Thread-114957] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:27:28.250 [DEBUG] [Thread-114957] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:27:28.250 [DEBUG] [Thread-114957] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:27:28.250 [DEBUG] [Thread-114957] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:27:28.250 [DEBUG] [Thread-114957] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:27:28.250 [DEBUG] [Thread-114957] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:27:28.250 [DEBUG] [Thread-114957] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:27:28.250 [DEBUG] [Thread-114957] [transport.py] [_log()] client lang: <none>
2025-11-03T11:27:28.250 [DEBUG] [Thread-114957] [transport.py] [_log()] server lang: <none>
2025-11-03T11:27:28.250 [DEBUG] [Thread-114957] [transport.py] [_log()] kex follows: False
2025-11-03T11:27:28.250 [DEBUG] [Thread-114957] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:27:28.250 [DEBUG] [Thread-114957] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:27:28.251 [DEBUG] [Thread-114957] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:27:28.251 [DEBUG] [Thread-114957] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:27:28.251 [DEBUG] [Thread-114957] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:27:28.251 [DEBUG] [Thread-114957] [transport.py] [_log()] Compression: none
2025-11-03T11:27:28.251 [DEBUG] [Thread-114957] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:27:28.268 [DEBUG] [Thread-114957] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:27:28.269 [DEBUG] [Thread-114957] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:27:28.269 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:27:28.270 [DEBUG] [Thread-114957] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:27:28.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:27:28.272 [DEBUG] [Thread-114957] [transport.py] [_log()] userauth is OK
2025-11-03T11:27:28.272 [DEBUG] [Thread-114957] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:27:28.272 [DEBUG] [Thread-114957] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:27:28.272 [DEBUG] [Thread-114957] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:27:28.272 [DEBUG] [Thread-114957] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:27:28.289 [INFO] [Thread-114957] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:27:28.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:27:28.891 [DEBUG] [Thread-114957] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:27:28.899 [DEBUG] [Thread-114957] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:27:28.899 [DEBUG] [Thread-114957] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:27:28.931 [DEBUG] [Thread-114957] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:27:28.931 [DEBUG] [Thread-114957] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:27:28.934 [DEBUG] [Thread-114957] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:27:28.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:27:28.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:27:28.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:27:28.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:27:28.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:27:28.950 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:27:28.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:27:28.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:27:28.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:27:28.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.393854 -999.00  +23.30  26.72     10   -9.00 1 1 1 1 1   888    0 31.02 -1.64 ----- 29.4 26.7 357.5 41.2 28.4 -29.9 27.4 -29.6 26.8 -27.7 27.7 -28.0
2025-11-03T11:27:28.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:27:28.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:27:28.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.393854
2025-11-03T11:27:28.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:27:28.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:27:28.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:27:28.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:27:28.951 [DEBUG] [Thread-114957] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:27:28.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:27:28.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:27:03', tmtdew=39.28, humidity=6.01, cloud=0.0, wind=27.84, temperature=23.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:27:08.986', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:27:29.028 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:27:29.041 [DEBUG] [Thread-114960] [transport.py] [_log()] starting thread (client mode): 0xed370d0
2025-11-03T11:27:29.041 [DEBUG] [Thread-114960] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:27:29.056 [DEBUG] [Thread-114960] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:27:29.056 [INFO] [Thread-114960] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:27:29.064 [DEBUG] [Thread-114960] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:27:29.064 [DEBUG] [Thread-114960] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:27:29.064 [DEBUG] [Thread-114960] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:27:29.064 [DEBUG] [Thread-114960] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:27:29.064 [DEBUG] [Thread-114960] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:27:29.064 [DEBUG] [Thread-114960] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:27:29.064 [DEBUG] [Thread-114960] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:27:29.064 [DEBUG] [Thread-114960] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:27:29.064 [DEBUG] [Thread-114960] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:27:29.064 [DEBUG] [Thread-114960] [transport.py] [_log()] client lang: <none>
2025-11-03T11:27:29.064 [DEBUG] [Thread-114960] [transport.py] [_log()] server lang: <none>
2025-11-03T11:27:29.064 [DEBUG] [Thread-114960] [transport.py] [_log()] kex follows: False
2025-11-03T11:27:29.064 [DEBUG] [Thread-114960] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:27:29.064 [DEBUG] [Thread-114960] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:27:29.064 [DEBUG] [Thread-114960] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:27:29.064 [DEBUG] [Thread-114960] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:27:29.064 [DEBUG] [Thread-114960] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:27:29.064 [DEBUG] [Thread-114960] [transport.py] [_log()] Compression: none
2025-11-03T11:27:29.064 [DEBUG] [Thread-114960] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:27:29.130 [DEBUG] [Thread-114960] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:27:29.130 [DEBUG] [Thread-114960] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:27:29.130 [DEBUG] [Thread-114960] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:27:29.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:27:29.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:27:29.188 [DEBUG] [Thread-114960] [transport.py] [_log()] userauth is OK
2025-11-03T11:27:29.188 [DEBUG] [Thread-114960] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:27:29.188 [DEBUG] [Thread-114960] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:27:29.188 [DEBUG] [Thread-114960] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:27:29.188 [DEBUG] [Thread-114960] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:27:29.202 [INFO] [Thread-114960] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:27:29.202 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:27:29.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:27:30.132 [DEBUG] [Thread-114960] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:27:30.133 [DEBUG] [Thread-114960] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:27:30.180 [DEBUG] [Thread-114960] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:27:30.181 [DEBUG] [Thread-114960] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:27:30.189 [DEBUG] [Thread-114960] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:27:30.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:27:30.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:27:30.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:27:30.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:27:30.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:27:30.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:27:30.222 [DEBUG] [Thread-114960] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:27:31.476 [DEBUG] [Thread-114962 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:27:31.757 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:27:31.758 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:27:46.518 [DEBUG] [Thread-114963 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:27:56.637 [DEBUG] [Thread-114964 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:28:00.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:28:00.244 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:28:00.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:28:00.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 27, 35), 40.05, 5.91, 0.0, 28.88, 23.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:28:00.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:27:35
2025-11-03T11:28:01.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:28:01.204 [DEBUG] [Thread-114965] [transport.py] [_log()] starting thread (client mode): 0xed42b60
2025-11-03T11:28:01.204 [DEBUG] [Thread-114965] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:28:01.214 [DEBUG] [Thread-114965] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:28:01.214 [INFO] [Thread-114965] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:28:01.217 [DEBUG] [Thread-114965] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:28:01.217 [DEBUG] [Thread-114965] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:28:01.217 [DEBUG] [Thread-114965] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:28:01.217 [DEBUG] [Thread-114965] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:28:01.217 [DEBUG] [Thread-114965] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:28:01.217 [DEBUG] [Thread-114965] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:28:01.217 [DEBUG] [Thread-114965] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:28:01.217 [DEBUG] [Thread-114965] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:28:01.217 [DEBUG] [Thread-114965] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:28:01.217 [DEBUG] [Thread-114965] [transport.py] [_log()] client lang: <none>
2025-11-03T11:28:01.217 [DEBUG] [Thread-114965] [transport.py] [_log()] server lang: <none>
2025-11-03T11:28:01.217 [DEBUG] [Thread-114965] [transport.py] [_log()] kex follows: False
2025-11-03T11:28:01.217 [DEBUG] [Thread-114965] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:28:01.217 [DEBUG] [Thread-114965] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:28:01.217 [DEBUG] [Thread-114965] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:28:01.218 [DEBUG] [Thread-114965] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:28:01.218 [DEBUG] [Thread-114965] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:28:01.218 [DEBUG] [Thread-114965] [transport.py] [_log()] Compression: none
2025-11-03T11:28:01.218 [DEBUG] [Thread-114965] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:28:01.226 [DEBUG] [Thread-114965] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:28:01.226 [DEBUG] [Thread-114965] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:28:01.226 [DEBUG] [Thread-114965] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:28:01.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:28:01.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:28:01.228 [DEBUG] [Thread-114965] [transport.py] [_log()] userauth is OK
2025-11-03T11:28:01.228 [DEBUG] [Thread-114965] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:28:01.228 [DEBUG] [Thread-114965] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:28:01.228 [DEBUG] [Thread-114965] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:28:01.229 [DEBUG] [Thread-114965] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:28:01.251 [INFO] [Thread-114965] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:28:01.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:28:01.563 [DEBUG] [Thread-114967 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:28:01.868 [DEBUG] [Thread-114965] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:28:01.869 [DEBUG] [Thread-114965] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:28:01.869 [DEBUG] [Thread-114965] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:28:01.910 [DEBUG] [Thread-114965] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:28:01.910 [DEBUG] [Thread-114965] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:28:01.914 [DEBUG] [Thread-114965] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:28:01.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:28:01.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:28:01.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:28:01.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:28:01.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:28:01.933 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:28:01.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:28:01.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:28:01.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:28:01.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.394190 -999.00  +23.10  27.96     10   -9.10 1 1 1 1 1   888    0 31.81 3.02 ----- 23.4 28.0 12.2 36.9 28.3 -29.5 27.3 -29.5 26.8 -28.3 27.5 -28.6
2025-11-03T11:28:01.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:28:01.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:28:01.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.394190
2025-11-03T11:28:01.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:28:01.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:28:01.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:28:01.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:28:01.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:28:01.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:27:35', tmtdew=40.05, humidity=5.91, cloud=0.0, wind=28.88, temperature=23.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:27:38.016', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:28:01.936 [DEBUG] [Thread-114965] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:28:02.019 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:28:02.030 [DEBUG] [Thread-114969] [transport.py] [_log()] starting thread (client mode): 0xed5d5a0
2025-11-03T11:28:02.031 [DEBUG] [Thread-114969] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:28:02.047 [DEBUG] [Thread-114969] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:28:02.047 [INFO] [Thread-114969] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:28:02.055 [DEBUG] [Thread-114969] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:28:02.055 [DEBUG] [Thread-114969] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:28:02.055 [DEBUG] [Thread-114969] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:28:02.055 [DEBUG] [Thread-114969] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:28:02.055 [DEBUG] [Thread-114969] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:28:02.055 [DEBUG] [Thread-114969] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:28:02.055 [DEBUG] [Thread-114969] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:28:02.055 [DEBUG] [Thread-114969] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:28:02.055 [DEBUG] [Thread-114969] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:28:02.055 [DEBUG] [Thread-114969] [transport.py] [_log()] client lang: <none>
2025-11-03T11:28:02.055 [DEBUG] [Thread-114969] [transport.py] [_log()] server lang: <none>
2025-11-03T11:28:02.055 [DEBUG] [Thread-114969] [transport.py] [_log()] kex follows: False
2025-11-03T11:28:02.055 [DEBUG] [Thread-114969] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:28:02.055 [DEBUG] [Thread-114969] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:28:02.055 [DEBUG] [Thread-114969] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:28:02.056 [DEBUG] [Thread-114969] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:28:02.056 [DEBUG] [Thread-114969] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:28:02.056 [DEBUG] [Thread-114969] [transport.py] [_log()] Compression: none
2025-11-03T11:28:02.056 [DEBUG] [Thread-114969] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:28:02.112 [DEBUG] [Thread-114969] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:28:02.113 [DEBUG] [Thread-114969] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:28:02.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:28:02.114 [DEBUG] [Thread-114969] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:28:02.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:28:02.168 [DEBUG] [Thread-114969] [transport.py] [_log()] userauth is OK
2025-11-03T11:28:02.168 [DEBUG] [Thread-114969] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:28:02.169 [DEBUG] [Thread-114969] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:28:02.169 [DEBUG] [Thread-114969] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:28:02.169 [DEBUG] [Thread-114969] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:28:02.189 [INFO] [Thread-114969] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:28:02.190 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:28:02.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:28:03.083 [DEBUG] [Thread-114969] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:28:03.092 [DEBUG] [Thread-114969] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:28:03.131 [DEBUG] [Thread-114969] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:28:03.131 [DEBUG] [Thread-114969] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:28:03.140 [DEBUG] [Thread-114969] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:28:03.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:28:03.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:28:03.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:28:03.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:28:03.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:28:03.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:28:03.176 [DEBUG] [Thread-114969] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:28:16.598 [DEBUG] [Thread-114971 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:28:31.649 [DEBUG] [Thread-114972 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:28:31.898 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:28:31.899 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:28:33.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:28:33.199 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:28:33.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:28:33.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 28, 7), 40.16, 5.86, 0.0, 23.4, 23.4, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:28:33.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:28:07
2025-11-03T11:28:34.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:28:34.163 [DEBUG] [Thread-114973] [transport.py] [_log()] starting thread (client mode): 0x1179bb50
2025-11-03T11:28:34.163 [DEBUG] [Thread-114973] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:28:34.182 [DEBUG] [Thread-114973] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:28:34.182 [INFO] [Thread-114973] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:28:34.193 [DEBUG] [Thread-114973] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:28:34.193 [DEBUG] [Thread-114973] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:28:34.193 [DEBUG] [Thread-114973] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:28:34.193 [DEBUG] [Thread-114973] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:28:34.194 [DEBUG] [Thread-114973] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:28:34.194 [DEBUG] [Thread-114973] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:28:34.194 [DEBUG] [Thread-114973] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:28:34.194 [DEBUG] [Thread-114973] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:28:34.194 [DEBUG] [Thread-114973] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:28:34.194 [DEBUG] [Thread-114973] [transport.py] [_log()] client lang: <none>
2025-11-03T11:28:34.194 [DEBUG] [Thread-114973] [transport.py] [_log()] server lang: <none>
2025-11-03T11:28:34.194 [DEBUG] [Thread-114973] [transport.py] [_log()] kex follows: False
2025-11-03T11:28:34.194 [DEBUG] [Thread-114973] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:28:34.195 [DEBUG] [Thread-114973] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:28:34.195 [DEBUG] [Thread-114973] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:28:34.195 [DEBUG] [Thread-114973] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:28:34.195 [DEBUG] [Thread-114973] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:28:34.195 [DEBUG] [Thread-114973] [transport.py] [_log()] Compression: none
2025-11-03T11:28:34.195 [DEBUG] [Thread-114973] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:28:34.215 [DEBUG] [Thread-114973] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:28:34.215 [DEBUG] [Thread-114973] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:28:34.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:28:34.217 [DEBUG] [Thread-114973] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:28:34.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:28:34.218 [DEBUG] [Thread-114973] [transport.py] [_log()] userauth is OK
2025-11-03T11:28:34.219 [DEBUG] [Thread-114973] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:28:34.219 [DEBUG] [Thread-114973] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:28:34.219 [DEBUG] [Thread-114973] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:28:34.219 [DEBUG] [Thread-114973] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:28:34.237 [INFO] [Thread-114973] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:28:34.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:28:34.827 [DEBUG] [Thread-114973] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:28:34.827 [DEBUG] [Thread-114973] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:28:34.828 [DEBUG] [Thread-114973] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:28:34.868 [DEBUG] [Thread-114973] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:28:34.868 [DEBUG] [Thread-114973] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:28:34.870 [DEBUG] [Thread-114973] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:28:34.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:28:34.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:28:34.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:28:34.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:28:34.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:28:34.893 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:28:34.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:28:34.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:28:34.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:28:34.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.394190 -999.00  +23.10  27.96     10   -9.10 1 1 1 1 1   888    0 31.81 3.02 ----- 23.4 28.0 12.2 36.9 28.3 -29.5 27.3 -29.5 26.8 -28.3 27.5 -28.6
2025-11-03T11:28:34.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:28:34.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:28:34.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.394190
2025-11-03T11:28:34.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:28:34.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:28:34.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:28:34.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:28:34.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:28:34.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:28:07', tmtdew=40.16, humidity=5.86, cloud=0.0, wind=23.4, temperature=23.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:27:38.016', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:28:34.897 [DEBUG] [Thread-114973] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:28:34.980 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:28:34.996 [DEBUG] [Thread-114976] [transport.py] [_log()] starting thread (client mode): 0x1179a2c0
2025-11-03T11:28:34.997 [DEBUG] [Thread-114976] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:28:35.015 [DEBUG] [Thread-114976] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:28:35.015 [INFO] [Thread-114976] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:28:35.024 [DEBUG] [Thread-114976] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:28:35.024 [DEBUG] [Thread-114976] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:28:35.024 [DEBUG] [Thread-114976] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:28:35.024 [DEBUG] [Thread-114976] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:28:35.024 [DEBUG] [Thread-114976] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:28:35.024 [DEBUG] [Thread-114976] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:28:35.025 [DEBUG] [Thread-114976] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:28:35.025 [DEBUG] [Thread-114976] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:28:35.025 [DEBUG] [Thread-114976] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:28:35.025 [DEBUG] [Thread-114976] [transport.py] [_log()] client lang: <none>
2025-11-03T11:28:35.025 [DEBUG] [Thread-114976] [transport.py] [_log()] server lang: <none>
2025-11-03T11:28:35.025 [DEBUG] [Thread-114976] [transport.py] [_log()] kex follows: False
2025-11-03T11:28:35.025 [DEBUG] [Thread-114976] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:28:35.025 [DEBUG] [Thread-114976] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:28:35.025 [DEBUG] [Thread-114976] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:28:35.025 [DEBUG] [Thread-114976] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:28:35.025 [DEBUG] [Thread-114976] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:28:35.025 [DEBUG] [Thread-114976] [transport.py] [_log()] Compression: none
2025-11-03T11:28:35.025 [DEBUG] [Thread-114976] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:28:35.087 [DEBUG] [Thread-114976] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:28:35.088 [DEBUG] [Thread-114976] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:28:35.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:28:35.089 [DEBUG] [Thread-114976] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:28:35.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:28:35.152 [DEBUG] [Thread-114976] [transport.py] [_log()] userauth is OK
2025-11-03T11:28:35.152 [DEBUG] [Thread-114976] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:28:35.152 [DEBUG] [Thread-114976] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:28:35.152 [DEBUG] [Thread-114976] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:28:35.153 [DEBUG] [Thread-114976] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:28:35.174 [INFO] [Thread-114976] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:28:35.175 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:28:35.175 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:28:36.020 [DEBUG] [Thread-114976] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:28:36.020 [DEBUG] [Thread-114976] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:28:36.070 [DEBUG] [Thread-114976] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:28:36.071 [DEBUG] [Thread-114976] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:28:36.083 [DEBUG] [Thread-114976] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:28:36.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:28:36.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:28:36.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:28:36.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:28:36.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:28:36.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:28:36.139 [DEBUG] [Thread-114976] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:28:46.685 [DEBUG] [Thread-114978 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:28:56.830 [DEBUG] [Thread-114979 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:29:01.754 [DEBUG] [Thread-114980 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:29:06.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:29:06.162 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:29:06.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:29:07.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 28, 39), 40.25, 5.78, 0.0, 25.46, 23.42, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:29:07.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:28:39
2025-11-03T11:29:07.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:29:07.422 [DEBUG] [Thread-114981] [transport.py] [_log()] starting thread (client mode): 0xed37fd0
2025-11-03T11:29:07.423 [DEBUG] [Thread-114981] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:29:07.436 [DEBUG] [Thread-114981] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:29:07.436 [INFO] [Thread-114981] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:29:07.442 [DEBUG] [Thread-114981] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:29:07.442 [DEBUG] [Thread-114981] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:29:07.442 [DEBUG] [Thread-114981] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:29:07.442 [DEBUG] [Thread-114981] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:29:07.442 [DEBUG] [Thread-114981] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:29:07.442 [DEBUG] [Thread-114981] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:29:07.442 [DEBUG] [Thread-114981] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:29:07.442 [DEBUG] [Thread-114981] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:29:07.442 [DEBUG] [Thread-114981] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:29:07.442 [DEBUG] [Thread-114981] [transport.py] [_log()] client lang: <none>
2025-11-03T11:29:07.442 [DEBUG] [Thread-114981] [transport.py] [_log()] server lang: <none>
2025-11-03T11:29:07.442 [DEBUG] [Thread-114981] [transport.py] [_log()] kex follows: False
2025-11-03T11:29:07.442 [DEBUG] [Thread-114981] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:29:07.443 [DEBUG] [Thread-114981] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:29:07.443 [DEBUG] [Thread-114981] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:29:07.443 [DEBUG] [Thread-114981] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:29:07.443 [DEBUG] [Thread-114981] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:29:07.443 [DEBUG] [Thread-114981] [transport.py] [_log()] Compression: none
2025-11-03T11:29:07.443 [DEBUG] [Thread-114981] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:29:07.473 [DEBUG] [Thread-114981] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:29:07.476 [DEBUG] [Thread-114981] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:29:07.477 [DEBUG] [Thread-114981] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:29:07.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:29:07.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:29:07.483 [DEBUG] [Thread-114981] [transport.py] [_log()] userauth is OK
2025-11-03T11:29:07.483 [DEBUG] [Thread-114981] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:29:07.483 [DEBUG] [Thread-114981] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:29:07.483 [DEBUG] [Thread-114981] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:29:07.483 [DEBUG] [Thread-114981] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:29:07.523 [INFO] [Thread-114981] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:29:07.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:29:08.174 [DEBUG] [Thread-114981] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:29:08.174 [DEBUG] [Thread-114981] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:29:08.175 [DEBUG] [Thread-114981] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:29:08.225 [DEBUG] [Thread-114981] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:29:08.225 [DEBUG] [Thread-114981] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:29:08.229 [DEBUG] [Thread-114981] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:29:08.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:29:08.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:29:08.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:29:08.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:29:08.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:29:08.255 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:29:08.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:29:08.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:29:08.258 [DEBUG] [Thread-114981] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:29:08.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:29:08.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.394537 -999.00  +23.10  20.42     11   -8.90 1 1 1 1 1   888    0 31.80 5.50 ----- 21.3 20.4 8.0 41.1 28.2 -28.4 27.2 -29.9 26.7 -28.0 27.2 -30.2
2025-11-03T11:29:08.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:29:08.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:29:08.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.394537
2025-11-03T11:29:08.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:29:08.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:29:08.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:29:08.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:29:08.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:29:08.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:28:39', tmtdew=40.25, humidity=5.78, cloud=0.0, wind=25.46, temperature=23.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:28:07.997', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:29:08.354 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:29:08.366 [DEBUG] [Thread-114984] [transport.py] [_log()] starting thread (client mode): 0xed5fcd0
2025-11-03T11:29:08.366 [DEBUG] [Thread-114984] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:29:08.380 [DEBUG] [Thread-114984] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:29:08.381 [INFO] [Thread-114984] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:29:08.388 [DEBUG] [Thread-114984] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:29:08.388 [DEBUG] [Thread-114984] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:29:08.389 [DEBUG] [Thread-114984] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:29:08.389 [DEBUG] [Thread-114984] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:29:08.389 [DEBUG] [Thread-114984] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:29:08.389 [DEBUG] [Thread-114984] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:29:08.389 [DEBUG] [Thread-114984] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:29:08.389 [DEBUG] [Thread-114984] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:29:08.389 [DEBUG] [Thread-114984] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:29:08.389 [DEBUG] [Thread-114984] [transport.py] [_log()] client lang: <none>
2025-11-03T11:29:08.389 [DEBUG] [Thread-114984] [transport.py] [_log()] server lang: <none>
2025-11-03T11:29:08.390 [DEBUG] [Thread-114984] [transport.py] [_log()] kex follows: False
2025-11-03T11:29:08.390 [DEBUG] [Thread-114984] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:29:08.390 [DEBUG] [Thread-114984] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:29:08.390 [DEBUG] [Thread-114984] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:29:08.390 [DEBUG] [Thread-114984] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:29:08.390 [DEBUG] [Thread-114984] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:29:08.390 [DEBUG] [Thread-114984] [transport.py] [_log()] Compression: none
2025-11-03T11:29:08.391 [DEBUG] [Thread-114984] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:29:08.450 [DEBUG] [Thread-114984] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:29:08.451 [DEBUG] [Thread-114984] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:29:08.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:29:08.453 [DEBUG] [Thread-114984] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:29:08.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:29:08.508 [DEBUG] [Thread-114984] [transport.py] [_log()] userauth is OK
2025-11-03T11:29:08.508 [DEBUG] [Thread-114984] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:29:08.508 [DEBUG] [Thread-114984] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:29:08.508 [DEBUG] [Thread-114984] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:29:08.509 [DEBUG] [Thread-114984] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:29:08.527 [INFO] [Thread-114984] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:29:08.528 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:29:08.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:29:09.427 [DEBUG] [Thread-114984] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:29:09.427 [DEBUG] [Thread-114984] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:29:09.465 [DEBUG] [Thread-114984] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:29:09.465 [DEBUG] [Thread-114984] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:29:09.474 [DEBUG] [Thread-114984] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:29:09.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:29:09.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:29:09.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:29:09.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:29:09.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:29:09.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:29:09.514 [DEBUG] [Thread-114984] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:29:16.801 [DEBUG] [Thread-114986 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:29:31.879 [DEBUG] [Thread-114987 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:29:32.051 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:29:32.053 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:29:39.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:29:39.508 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:29:39.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:29:40.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 29, 12), 40.42, 5.7, 0.0, 25.64, 23.37, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:29:40.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:29:12
2025-11-03T11:29:40.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:29:40.462 [DEBUG] [Thread-114988] [transport.py] [_log()] starting thread (client mode): 0xed06a70
2025-11-03T11:29:40.462 [DEBUG] [Thread-114988] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:29:40.480 [DEBUG] [Thread-114988] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:29:40.481 [INFO] [Thread-114988] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:29:40.484 [DEBUG] [Thread-114988] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:29:40.484 [DEBUG] [Thread-114988] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:29:40.484 [DEBUG] [Thread-114988] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:29:40.484 [DEBUG] [Thread-114988] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:29:40.484 [DEBUG] [Thread-114988] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:29:40.484 [DEBUG] [Thread-114988] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:29:40.484 [DEBUG] [Thread-114988] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:29:40.484 [DEBUG] [Thread-114988] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:29:40.485 [DEBUG] [Thread-114988] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:29:40.485 [DEBUG] [Thread-114988] [transport.py] [_log()] client lang: <none>
2025-11-03T11:29:40.485 [DEBUG] [Thread-114988] [transport.py] [_log()] server lang: <none>
2025-11-03T11:29:40.485 [DEBUG] [Thread-114988] [transport.py] [_log()] kex follows: False
2025-11-03T11:29:40.485 [DEBUG] [Thread-114988] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:29:40.485 [DEBUG] [Thread-114988] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:29:40.485 [DEBUG] [Thread-114988] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:29:40.485 [DEBUG] [Thread-114988] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:29:40.485 [DEBUG] [Thread-114988] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:29:40.485 [DEBUG] [Thread-114988] [transport.py] [_log()] Compression: none
2025-11-03T11:29:40.485 [DEBUG] [Thread-114988] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:29:40.503 [DEBUG] [Thread-114988] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:29:40.504 [DEBUG] [Thread-114988] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:29:40.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:29:40.505 [DEBUG] [Thread-114988] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:29:40.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:29:40.508 [DEBUG] [Thread-114988] [transport.py] [_log()] userauth is OK
2025-11-03T11:29:40.508 [DEBUG] [Thread-114988] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:29:40.508 [DEBUG] [Thread-114988] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:29:40.508 [DEBUG] [Thread-114988] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:29:40.509 [DEBUG] [Thread-114988] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:29:40.545 [INFO] [Thread-114988] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:29:40.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:29:41.176 [DEBUG] [Thread-114988] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:29:41.177 [DEBUG] [Thread-114988] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:29:41.177 [DEBUG] [Thread-114988] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:29:41.218 [DEBUG] [Thread-114988] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:29:41.218 [DEBUG] [Thread-114988] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:29:41.228 [DEBUG] [Thread-114988] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:29:41.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:29:41.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:29:41.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:29:41.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:29:41.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:29:41.246 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:29:41.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:29:41.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:29:41.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:29:41.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.394884 -999.00  +23.40  23.03     11   -8.60 1 1 1 1 1   888    0 31.71 8.28 ----- 20.1 23.0 20.2 30.5 28.2 -29.3 27.2 -28.0 26.7 -27.3 27.2 -30.1
2025-11-03T11:29:41.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:29:41.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:29:41.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.394884
2025-11-03T11:29:41.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:29:41.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:29:41.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:29:41.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:29:41.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:29:41.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:29:12', tmtdew=40.42, humidity=5.7, cloud=0.0, wind=25.64, temperature=23.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:28:37.978', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:29:41.249 [DEBUG] [Thread-114988] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:29:41.331 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:29:41.344 [DEBUG] [Thread-114991] [transport.py] [_log()] starting thread (client mode): 0xed64b50
2025-11-03T11:29:41.344 [DEBUG] [Thread-114991] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:29:41.358 [DEBUG] [Thread-114991] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:29:41.359 [INFO] [Thread-114991] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:29:41.368 [DEBUG] [Thread-114991] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:29:41.368 [DEBUG] [Thread-114991] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:29:41.368 [DEBUG] [Thread-114991] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:29:41.369 [DEBUG] [Thread-114991] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:29:41.369 [DEBUG] [Thread-114991] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:29:41.369 [DEBUG] [Thread-114991] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:29:41.369 [DEBUG] [Thread-114991] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:29:41.369 [DEBUG] [Thread-114991] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:29:41.369 [DEBUG] [Thread-114991] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:29:41.369 [DEBUG] [Thread-114991] [transport.py] [_log()] client lang: <none>
2025-11-03T11:29:41.369 [DEBUG] [Thread-114991] [transport.py] [_log()] server lang: <none>
2025-11-03T11:29:41.369 [DEBUG] [Thread-114991] [transport.py] [_log()] kex follows: False
2025-11-03T11:29:41.369 [DEBUG] [Thread-114991] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:29:41.369 [DEBUG] [Thread-114991] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:29:41.369 [DEBUG] [Thread-114991] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:29:41.369 [DEBUG] [Thread-114991] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:29:41.369 [DEBUG] [Thread-114991] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:29:41.369 [DEBUG] [Thread-114991] [transport.py] [_log()] Compression: none
2025-11-03T11:29:41.369 [DEBUG] [Thread-114991] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:29:41.432 [DEBUG] [Thread-114991] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:29:41.433 [DEBUG] [Thread-114991] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:29:41.433 [DEBUG] [Thread-114991] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:29:41.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:29:41.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:29:41.488 [DEBUG] [Thread-114991] [transport.py] [_log()] userauth is OK
2025-11-03T11:29:41.488 [DEBUG] [Thread-114991] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:29:41.488 [DEBUG] [Thread-114991] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:29:41.488 [DEBUG] [Thread-114991] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:29:41.489 [DEBUG] [Thread-114991] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:29:41.507 [INFO] [Thread-114991] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:29:41.507 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:29:41.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:29:42.336 [DEBUG] [Thread-114991] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:29:42.336 [DEBUG] [Thread-114991] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:29:42.384 [DEBUG] [Thread-114991] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:29:42.384 [DEBUG] [Thread-114991] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:29:42.395 [DEBUG] [Thread-114991] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:29:42.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:29:42.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:29:42.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:29:42.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:29:42.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:29:42.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:29:42.432 [DEBUG] [Thread-114991] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:29:46.921 [DEBUG] [Thread-114993 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:29:56.941 [DEBUG] [Thread-114994 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:30:01.965 [DEBUG] [Thread-114995 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:30:12.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:30:12.454 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:30:12.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:30:13.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 29, 44), 40.37, 5.72, 0.0, 33.12, 23.44, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:30:13.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:29:44
2025-11-03T11:30:13.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:30:13.417 [DEBUG] [Thread-114996] [transport.py] [_log()] starting thread (client mode): 0x81c8670
2025-11-03T11:30:13.417 [DEBUG] [Thread-114996] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:30:13.436 [DEBUG] [Thread-114996] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:30:13.436 [INFO] [Thread-114996] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:30:13.440 [DEBUG] [Thread-114996] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:30:13.440 [DEBUG] [Thread-114996] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:30:13.440 [DEBUG] [Thread-114996] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:30:13.440 [DEBUG] [Thread-114996] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:30:13.440 [DEBUG] [Thread-114996] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:30:13.440 [DEBUG] [Thread-114996] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:30:13.440 [DEBUG] [Thread-114996] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:30:13.440 [DEBUG] [Thread-114996] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:30:13.440 [DEBUG] [Thread-114996] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:30:13.440 [DEBUG] [Thread-114996] [transport.py] [_log()] client lang: <none>
2025-11-03T11:30:13.440 [DEBUG] [Thread-114996] [transport.py] [_log()] server lang: <none>
2025-11-03T11:30:13.440 [DEBUG] [Thread-114996] [transport.py] [_log()] kex follows: False
2025-11-03T11:30:13.441 [DEBUG] [Thread-114996] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:30:13.441 [DEBUG] [Thread-114996] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:30:13.441 [DEBUG] [Thread-114996] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:30:13.441 [DEBUG] [Thread-114996] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:30:13.441 [DEBUG] [Thread-114996] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:30:13.441 [DEBUG] [Thread-114996] [transport.py] [_log()] Compression: none
2025-11-03T11:30:13.441 [DEBUG] [Thread-114996] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:30:13.452 [DEBUG] [Thread-114996] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:30:13.453 [DEBUG] [Thread-114996] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:30:13.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:30:13.455 [DEBUG] [Thread-114996] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:30:13.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:30:13.457 [DEBUG] [Thread-114996] [transport.py] [_log()] userauth is OK
2025-11-03T11:30:13.457 [DEBUG] [Thread-114996] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:30:13.457 [DEBUG] [Thread-114996] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:30:13.457 [DEBUG] [Thread-114996] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:30:13.457 [DEBUG] [Thread-114996] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:30:13.477 [INFO] [Thread-114996] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:30:13.478 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:30:15.527 [DEBUG] [Thread-114996] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:30:15.527 [DEBUG] [Thread-114996] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:30:15.528 [DEBUG] [Thread-114996] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:30:15.569 [DEBUG] [Thread-114996] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:30:15.569 [DEBUG] [Thread-114996] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:30:15.573 [DEBUG] [Thread-114996] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:30:15.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:30:15.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:30:15.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:30:15.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:30:15.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:30:15.724 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:30:15.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:30:15.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:30:15.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:30:15.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.395579 -999.00  +23.50  30.79     10   -8.80 1 1 2 1 1   888    0 32.51 20.41 ----- 34.0 30.8 22.0 41.1 28.3 -28.6 27.3 -28.3 26.8 -27.5 27.5 -27.5
2025-11-03T11:30:15.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:30:15.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:30:15.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.395579
2025-11-03T11:30:15.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:30:15.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:30:15.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:30:15.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:30:15.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:30:15.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:29:44', tmtdew=40.37, humidity=5.72, cloud=0.0, wind=33.12, temperature=23.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:29:38.026', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:30:15.728 [DEBUG] [Thread-114996] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:30:15.812 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:30:15.826 [DEBUG] [Thread-114999] [transport.py] [_log()] starting thread (client mode): 0xed06b60
2025-11-03T11:30:15.826 [DEBUG] [Thread-114999] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:30:15.845 [DEBUG] [Thread-114999] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:30:15.845 [INFO] [Thread-114999] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:30:15.856 [DEBUG] [Thread-114999] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:30:15.857 [DEBUG] [Thread-114999] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:30:15.857 [DEBUG] [Thread-114999] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:30:15.857 [DEBUG] [Thread-114999] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:30:15.857 [DEBUG] [Thread-114999] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:30:15.857 [DEBUG] [Thread-114999] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:30:15.857 [DEBUG] [Thread-114999] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:30:15.858 [DEBUG] [Thread-114999] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:30:15.858 [DEBUG] [Thread-114999] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:30:15.858 [DEBUG] [Thread-114999] [transport.py] [_log()] client lang: <none>
2025-11-03T11:30:15.858 [DEBUG] [Thread-114999] [transport.py] [_log()] server lang: <none>
2025-11-03T11:30:15.858 [DEBUG] [Thread-114999] [transport.py] [_log()] kex follows: False
2025-11-03T11:30:15.858 [DEBUG] [Thread-114999] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:30:15.858 [DEBUG] [Thread-114999] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:30:15.858 [DEBUG] [Thread-114999] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:30:15.859 [DEBUG] [Thread-114999] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:30:15.859 [DEBUG] [Thread-114999] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:30:15.859 [DEBUG] [Thread-114999] [transport.py] [_log()] Compression: none
2025-11-03T11:30:15.859 [DEBUG] [Thread-114999] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:30:15.920 [DEBUG] [Thread-114999] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:30:15.920 [DEBUG] [Thread-114999] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:30:15.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:30:15.921 [DEBUG] [Thread-114999] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:30:15.922 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:30:15.976 [DEBUG] [Thread-114999] [transport.py] [_log()] userauth is OK
2025-11-03T11:30:15.976 [DEBUG] [Thread-114999] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:30:15.976 [DEBUG] [Thread-114999] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:30:15.977 [DEBUG] [Thread-114999] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:30:15.977 [DEBUG] [Thread-114999] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:30:15.996 [INFO] [Thread-114999] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:30:15.996 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:30:15.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:30:16.838 [DEBUG] [Thread-114999] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:30:16.838 [DEBUG] [Thread-114999] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:30:16.886 [DEBUG] [Thread-114999] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:30:16.886 [DEBUG] [Thread-114999] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:30:16.896 [DEBUG] [Thread-114999] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:30:16.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:30:16.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:30:16.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:30:16.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:30:16.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:30:16.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:30:16.941 [DEBUG] [Thread-114999] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:30:16.994 [DEBUG] [Thread-115001 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:30:32.048 [DEBUG] [Thread-115002 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:30:32.193 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:30:32.194 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:30:46.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:30:46.938 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:30:46.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:30:47.079 [DEBUG] [Thread-115003 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:30:47.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 30, 17), 40.43, 5.67, 0.0, 29.06, 23.24, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:30:47.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:30:17
2025-11-03T11:30:47.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:30:47.937 [DEBUG] [Thread-115004] [transport.py] [_log()] starting thread (client mode): 0xed05450
2025-11-03T11:30:47.937 [DEBUG] [Thread-115004] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:30:47.956 [DEBUG] [Thread-115004] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:30:47.956 [INFO] [Thread-115004] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:30:47.959 [DEBUG] [Thread-115004] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:30:47.959 [DEBUG] [Thread-115004] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:30:47.959 [DEBUG] [Thread-115004] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:30:47.959 [DEBUG] [Thread-115004] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:30:47.959 [DEBUG] [Thread-115004] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:30:47.959 [DEBUG] [Thread-115004] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:30:47.959 [DEBUG] [Thread-115004] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:30:47.959 [DEBUG] [Thread-115004] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:30:47.959 [DEBUG] [Thread-115004] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:30:47.959 [DEBUG] [Thread-115004] [transport.py] [_log()] client lang: <none>
2025-11-03T11:30:47.959 [DEBUG] [Thread-115004] [transport.py] [_log()] server lang: <none>
2025-11-03T11:30:47.959 [DEBUG] [Thread-115004] [transport.py] [_log()] kex follows: False
2025-11-03T11:30:47.959 [DEBUG] [Thread-115004] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:30:47.959 [DEBUG] [Thread-115004] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:30:47.959 [DEBUG] [Thread-115004] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:30:47.959 [DEBUG] [Thread-115004] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:30:47.959 [DEBUG] [Thread-115004] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:30:47.959 [DEBUG] [Thread-115004] [transport.py] [_log()] Compression: none
2025-11-03T11:30:47.959 [DEBUG] [Thread-115004] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:30:47.975 [DEBUG] [Thread-115004] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:30:47.975 [DEBUG] [Thread-115004] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:30:47.975 [DEBUG] [Thread-115004] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:30:47.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:30:47.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:30:47.976 [DEBUG] [Thread-115004] [transport.py] [_log()] userauth is OK
2025-11-03T11:30:47.976 [DEBUG] [Thread-115004] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:30:47.976 [DEBUG] [Thread-115004] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:30:47.976 [DEBUG] [Thread-115004] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:30:47.976 [DEBUG] [Thread-115004] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:30:47.991 [INFO] [Thread-115004] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:30:47.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:30:48.623 [DEBUG] [Thread-115004] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:30:48.623 [DEBUG] [Thread-115004] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:30:48.623 [DEBUG] [Thread-115004] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:30:48.663 [DEBUG] [Thread-115004] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:30:48.663 [DEBUG] [Thread-115004] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:30:48.666 [DEBUG] [Thread-115004] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:30:48.676 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:30:48.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:30:48.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:30:48.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:30:48.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:30:48.691 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:30:48.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:30:48.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:30:48.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:30:48.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.395937 -999.00  +24.20  22.99     10   -8.80 1 1 1 1 1   888    0 32.07 26.28 ----- 29.2 23.0 0.2 39.1 28.6 -27.9 27.4 -27.7 26.9 -26.8 27.5 -29.9
2025-11-03T11:30:48.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:30:48.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:30:48.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.395937
2025-11-03T11:30:48.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:30:48.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:30:48.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:30:48.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:30:48.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:30:48.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:30:17', tmtdew=40.43, humidity=5.67, cloud=0.0, wind=29.06, temperature=23.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:30:08.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:30:48.692 [DEBUG] [Thread-115004] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:30:48.768 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:30:48.780 [DEBUG] [Thread-115007] [transport.py] [_log()] starting thread (client mode): 0x11798190
2025-11-03T11:30:48.780 [DEBUG] [Thread-115007] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:30:48.795 [DEBUG] [Thread-115007] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:30:48.795 [INFO] [Thread-115007] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:30:48.802 [DEBUG] [Thread-115007] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:30:48.802 [DEBUG] [Thread-115007] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:30:48.802 [DEBUG] [Thread-115007] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:30:48.802 [DEBUG] [Thread-115007] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:30:48.802 [DEBUG] [Thread-115007] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:30:48.802 [DEBUG] [Thread-115007] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:30:48.803 [DEBUG] [Thread-115007] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:30:48.803 [DEBUG] [Thread-115007] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:30:48.803 [DEBUG] [Thread-115007] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:30:48.803 [DEBUG] [Thread-115007] [transport.py] [_log()] client lang: <none>
2025-11-03T11:30:48.803 [DEBUG] [Thread-115007] [transport.py] [_log()] server lang: <none>
2025-11-03T11:30:48.803 [DEBUG] [Thread-115007] [transport.py] [_log()] kex follows: False
2025-11-03T11:30:48.803 [DEBUG] [Thread-115007] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:30:48.803 [DEBUG] [Thread-115007] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:30:48.803 [DEBUG] [Thread-115007] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:30:48.803 [DEBUG] [Thread-115007] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:30:48.803 [DEBUG] [Thread-115007] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:30:48.803 [DEBUG] [Thread-115007] [transport.py] [_log()] Compression: none
2025-11-03T11:30:48.803 [DEBUG] [Thread-115007] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:30:48.858 [DEBUG] [Thread-115007] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:30:48.858 [DEBUG] [Thread-115007] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:30:48.858 [DEBUG] [Thread-115007] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:30:48.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:30:48.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:30:48.916 [DEBUG] [Thread-115007] [transport.py] [_log()] userauth is OK
2025-11-03T11:30:48.916 [DEBUG] [Thread-115007] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:30:48.916 [DEBUG] [Thread-115007] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:30:48.916 [DEBUG] [Thread-115007] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:30:48.916 [DEBUG] [Thread-115007] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:30:48.930 [INFO] [Thread-115007] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:30:48.930 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:30:48.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:30:49.785 [DEBUG] [Thread-115007] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:30:49.785 [DEBUG] [Thread-115007] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:30:49.833 [DEBUG] [Thread-115007] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:30:49.834 [DEBUG] [Thread-115007] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:30:49.842 [DEBUG] [Thread-115007] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:30:49.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:30:49.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:30:49.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:30:49.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:30:49.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:30:49.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:30:49.876 [DEBUG] [Thread-115007] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:30:57.015 [DEBUG] [Thread-115009 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:31:02.115 [DEBUG] [Thread-115010 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:31:17.170 [DEBUG] [Thread-115011 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:31:19.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:31:19.877 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:31:19.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:31:20.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 30, 49), 40.56, 5.78, 0.0, 35.22, 23.15, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:31:20.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:30:49
2025-11-03T11:31:20.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:31:20.812 [DEBUG] [Thread-115012] [transport.py] [_log()] starting thread (client mode): 0xed06ec0
2025-11-03T11:31:20.812 [DEBUG] [Thread-115012] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:31:20.831 [DEBUG] [Thread-115012] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:31:20.831 [INFO] [Thread-115012] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:31:20.833 [DEBUG] [Thread-115012] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:31:20.833 [DEBUG] [Thread-115012] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:31:20.833 [DEBUG] [Thread-115012] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:31:20.833 [DEBUG] [Thread-115012] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:31:20.833 [DEBUG] [Thread-115012] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:31:20.833 [DEBUG] [Thread-115012] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:31:20.834 [DEBUG] [Thread-115012] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:31:20.834 [DEBUG] [Thread-115012] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:31:20.834 [DEBUG] [Thread-115012] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:31:20.834 [DEBUG] [Thread-115012] [transport.py] [_log()] client lang: <none>
2025-11-03T11:31:20.834 [DEBUG] [Thread-115012] [transport.py] [_log()] server lang: <none>
2025-11-03T11:31:20.834 [DEBUG] [Thread-115012] [transport.py] [_log()] kex follows: False
2025-11-03T11:31:20.834 [DEBUG] [Thread-115012] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:31:20.834 [DEBUG] [Thread-115012] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:31:20.834 [DEBUG] [Thread-115012] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:31:20.834 [DEBUG] [Thread-115012] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:31:20.834 [DEBUG] [Thread-115012] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:31:20.835 [DEBUG] [Thread-115012] [transport.py] [_log()] Compression: none
2025-11-03T11:31:20.835 [DEBUG] [Thread-115012] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:31:20.843 [DEBUG] [Thread-115012] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:31:20.843 [DEBUG] [Thread-115012] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:31:20.844 [DEBUG] [Thread-115012] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:31:20.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:31:20.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:31:20.846 [DEBUG] [Thread-115012] [transport.py] [_log()] userauth is OK
2025-11-03T11:31:20.846 [DEBUG] [Thread-115012] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:31:20.846 [DEBUG] [Thread-115012] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:31:20.846 [DEBUG] [Thread-115012] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:31:20.846 [DEBUG] [Thread-115012] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:31:20.881 [INFO] [Thread-115012] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:31:20.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:31:21.623 [DEBUG] [Thread-115012] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:31:21.624 [DEBUG] [Thread-115012] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:31:21.624 [DEBUG] [Thread-115012] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:31:21.664 [DEBUG] [Thread-115012] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:31:21.665 [DEBUG] [Thread-115012] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:31:21.668 [DEBUG] [Thread-115012] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:31:21.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:31:21.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:31:21.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:31:21.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:31:21.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:31:21.689 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:31:21.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:31:21.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:31:21.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:31:21.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.396285 -999.00  +22.90  20.12     10   -9.80 1 1 1 1 1   888    0 32.26 32.17 ----- 22.3 20.1 358.3 38.3 28.1 -31.1 27.2 -29.5 26.6 -29.6 27.4 -31.2
2025-11-03T11:31:21.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:31:21.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:31:21.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.396285
2025-11-03T11:31:21.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:31:21.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:31:21.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:31:21.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:31:21.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:31:21.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:30:49', tmtdew=40.56, humidity=5.78, cloud=0.0, wind=35.22, temperature=23.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:30:39.024', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:31:21.692 [DEBUG] [Thread-115012] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:31:21.773 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:31:21.788 [DEBUG] [Thread-115015] [transport.py] [_log()] starting thread (client mode): 0xedb1900
2025-11-03T11:31:21.788 [DEBUG] [Thread-115015] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:31:21.803 [DEBUG] [Thread-115015] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:31:21.804 [INFO] [Thread-115015] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:31:21.813 [DEBUG] [Thread-115015] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:31:21.813 [DEBUG] [Thread-115015] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:31:21.814 [DEBUG] [Thread-115015] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:31:21.814 [DEBUG] [Thread-115015] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:31:21.814 [DEBUG] [Thread-115015] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:31:21.814 [DEBUG] [Thread-115015] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:31:21.814 [DEBUG] [Thread-115015] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:31:21.814 [DEBUG] [Thread-115015] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:31:21.814 [DEBUG] [Thread-115015] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:31:21.814 [DEBUG] [Thread-115015] [transport.py] [_log()] client lang: <none>
2025-11-03T11:31:21.814 [DEBUG] [Thread-115015] [transport.py] [_log()] server lang: <none>
2025-11-03T11:31:21.814 [DEBUG] [Thread-115015] [transport.py] [_log()] kex follows: False
2025-11-03T11:31:21.814 [DEBUG] [Thread-115015] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:31:21.814 [DEBUG] [Thread-115015] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:31:21.814 [DEBUG] [Thread-115015] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:31:21.814 [DEBUG] [Thread-115015] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:31:21.814 [DEBUG] [Thread-115015] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:31:21.814 [DEBUG] [Thread-115015] [transport.py] [_log()] Compression: none
2025-11-03T11:31:21.814 [DEBUG] [Thread-115015] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:31:21.871 [DEBUG] [Thread-115015] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:31:21.872 [DEBUG] [Thread-115015] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:31:21.872 [DEBUG] [Thread-115015] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:31:21.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:31:21.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:31:21.928 [DEBUG] [Thread-115015] [transport.py] [_log()] userauth is OK
2025-11-03T11:31:21.928 [DEBUG] [Thread-115015] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:31:21.928 [DEBUG] [Thread-115015] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:31:21.928 [DEBUG] [Thread-115015] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:31:21.929 [DEBUG] [Thread-115015] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:31:21.947 [INFO] [Thread-115015] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:31:21.947 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:31:21.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:31:22.792 [DEBUG] [Thread-115015] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:31:22.792 [DEBUG] [Thread-115015] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:31:22.840 [DEBUG] [Thread-115015] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:31:22.840 [DEBUG] [Thread-115015] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:31:22.848 [DEBUG] [Thread-115015] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:31:22.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:31:22.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:31:22.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:31:22.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:31:22.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:31:22.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:31:22.880 [DEBUG] [Thread-115015] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:31:32.197 [DEBUG] [Thread-115017 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:31:32.337 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:31:32.338 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:31:47.264 [DEBUG] [Thread-115018 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:31:52.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:31:52.903 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:31:52.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:31:53.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 31, 21), 40.53, 5.8, 0.0, 32.29, 23.17, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:31:53.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:31:21
2025-11-03T11:31:53.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:31:53.844 [DEBUG] [Thread-115019] [transport.py] [_log()] starting thread (client mode): 0x81cb490
2025-11-03T11:31:53.845 [DEBUG] [Thread-115019] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:31:53.859 [DEBUG] [Thread-115019] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:31:53.860 [INFO] [Thread-115019] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:31:53.863 [DEBUG] [Thread-115019] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:31:53.863 [DEBUG] [Thread-115019] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:31:53.863 [DEBUG] [Thread-115019] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:31:53.863 [DEBUG] [Thread-115019] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:31:53.863 [DEBUG] [Thread-115019] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:31:53.863 [DEBUG] [Thread-115019] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:31:53.863 [DEBUG] [Thread-115019] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:31:53.863 [DEBUG] [Thread-115019] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:31:53.863 [DEBUG] [Thread-115019] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:31:53.863 [DEBUG] [Thread-115019] [transport.py] [_log()] client lang: <none>
2025-11-03T11:31:53.863 [DEBUG] [Thread-115019] [transport.py] [_log()] server lang: <none>
2025-11-03T11:31:53.863 [DEBUG] [Thread-115019] [transport.py] [_log()] kex follows: False
2025-11-03T11:31:53.863 [DEBUG] [Thread-115019] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:31:53.863 [DEBUG] [Thread-115019] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:31:53.863 [DEBUG] [Thread-115019] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:31:53.863 [DEBUG] [Thread-115019] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:31:53.863 [DEBUG] [Thread-115019] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:31:53.863 [DEBUG] [Thread-115019] [transport.py] [_log()] Compression: none
2025-11-03T11:31:53.863 [DEBUG] [Thread-115019] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:31:53.878 [DEBUG] [Thread-115019] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:31:53.878 [DEBUG] [Thread-115019] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:31:53.878 [DEBUG] [Thread-115019] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:31:53.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:31:53.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:31:53.880 [DEBUG] [Thread-115019] [transport.py] [_log()] userauth is OK
2025-11-03T11:31:53.880 [DEBUG] [Thread-115019] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:31:53.880 [DEBUG] [Thread-115019] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:31:53.880 [DEBUG] [Thread-115019] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:31:53.880 [DEBUG] [Thread-115019] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:31:53.896 [INFO] [Thread-115019] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:31:53.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:31:54.564 [DEBUG] [Thread-115019] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:31:54.564 [DEBUG] [Thread-115019] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:31:54.564 [DEBUG] [Thread-115019] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:31:54.606 [DEBUG] [Thread-115019] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:31:54.606 [DEBUG] [Thread-115019] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:31:54.608 [DEBUG] [Thread-115019] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:31:54.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:31:54.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:31:54.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:31:54.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:31:54.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:31:54.628 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:31:54.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:31:54.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:31:54.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:31:54.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.396620 -999.00  +22.80  16.25     10   -9.40 1 1 1 1 1   888    0 32.79 33.67 ----- 20.2 16.2 288.3 34.3 28.1 -30.1 27.1 -29.3 26.6 -28.7 27.1 -28.4
2025-11-03T11:31:54.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:31:54.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:31:54.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.396620
2025-11-03T11:31:54.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:31:54.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:31:54.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:31:54.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:31:54.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:31:54.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:31:21', tmtdew=40.53, humidity=5.8, cloud=0.0, wind=32.29, temperature=23.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:31:07.968', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:31:54.629 [DEBUG] [Thread-115019] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:31:54.703 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:31:54.715 [DEBUG] [Thread-115022] [transport.py] [_log()] starting thread (client mode): 0x81cb580
2025-11-03T11:31:54.715 [DEBUG] [Thread-115022] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:31:54.731 [DEBUG] [Thread-115022] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:31:54.731 [INFO] [Thread-115022] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:31:54.739 [DEBUG] [Thread-115022] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:31:54.739 [DEBUG] [Thread-115022] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:31:54.739 [DEBUG] [Thread-115022] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:31:54.739 [DEBUG] [Thread-115022] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:31:54.739 [DEBUG] [Thread-115022] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:31:54.739 [DEBUG] [Thread-115022] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:31:54.739 [DEBUG] [Thread-115022] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:31:54.739 [DEBUG] [Thread-115022] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:31:54.739 [DEBUG] [Thread-115022] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:31:54.739 [DEBUG] [Thread-115022] [transport.py] [_log()] client lang: <none>
2025-11-03T11:31:54.739 [DEBUG] [Thread-115022] [transport.py] [_log()] server lang: <none>
2025-11-03T11:31:54.739 [DEBUG] [Thread-115022] [transport.py] [_log()] kex follows: False
2025-11-03T11:31:54.739 [DEBUG] [Thread-115022] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:31:54.739 [DEBUG] [Thread-115022] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:31:54.739 [DEBUG] [Thread-115022] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:31:54.739 [DEBUG] [Thread-115022] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:31:54.739 [DEBUG] [Thread-115022] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:31:54.739 [DEBUG] [Thread-115022] [transport.py] [_log()] Compression: none
2025-11-03T11:31:54.739 [DEBUG] [Thread-115022] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:31:54.795 [DEBUG] [Thread-115022] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:31:54.795 [DEBUG] [Thread-115022] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:31:54.795 [DEBUG] [Thread-115022] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:31:54.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:31:54.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:31:54.853 [DEBUG] [Thread-115022] [transport.py] [_log()] userauth is OK
2025-11-03T11:31:54.853 [DEBUG] [Thread-115022] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:31:54.853 [DEBUG] [Thread-115022] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:31:54.853 [DEBUG] [Thread-115022] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:31:54.853 [DEBUG] [Thread-115022] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:31:54.870 [INFO] [Thread-115022] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:31:54.870 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:31:54.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:31:55.737 [DEBUG] [Thread-115022] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:31:55.737 [DEBUG] [Thread-115022] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:31:55.784 [DEBUG] [Thread-115022] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:31:55.784 [DEBUG] [Thread-115022] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:31:55.793 [DEBUG] [Thread-115022] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:31:55.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:31:55.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:31:55.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:31:55.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:31:55.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:31:55.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:31:55.824 [DEBUG] [Thread-115022] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:31:57.059 [DEBUG] [Thread-115024 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:32:02.299 [DEBUG] [Thread-115025 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:32:17.337 [DEBUG] [Thread-115026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:32:25.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:32:25.847 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:32:25.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:32:26.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 31, 53), 40.46, 5.81, 0.0, 27.86, 23.32, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:32:26.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:31:53
2025-11-03T11:32:26.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:32:26.810 [DEBUG] [Thread-115027] [transport.py] [_log()] starting thread (client mode): 0x81cbd60
2025-11-03T11:32:26.810 [DEBUG] [Thread-115027] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:32:26.826 [DEBUG] [Thread-115027] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:32:26.826 [INFO] [Thread-115027] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:32:26.827 [DEBUG] [Thread-115027] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:32:26.827 [DEBUG] [Thread-115027] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:32:26.827 [DEBUG] [Thread-115027] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:32:26.827 [DEBUG] [Thread-115027] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:32:26.827 [DEBUG] [Thread-115027] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:32:26.827 [DEBUG] [Thread-115027] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:32:26.828 [DEBUG] [Thread-115027] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:32:26.828 [DEBUG] [Thread-115027] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:32:26.828 [DEBUG] [Thread-115027] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:32:26.828 [DEBUG] [Thread-115027] [transport.py] [_log()] client lang: <none>
2025-11-03T11:32:26.828 [DEBUG] [Thread-115027] [transport.py] [_log()] server lang: <none>
2025-11-03T11:32:26.828 [DEBUG] [Thread-115027] [transport.py] [_log()] kex follows: False
2025-11-03T11:32:26.828 [DEBUG] [Thread-115027] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:32:26.828 [DEBUG] [Thread-115027] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:32:26.828 [DEBUG] [Thread-115027] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:32:26.828 [DEBUG] [Thread-115027] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:32:26.828 [DEBUG] [Thread-115027] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:32:26.828 [DEBUG] [Thread-115027] [transport.py] [_log()] Compression: none
2025-11-03T11:32:26.828 [DEBUG] [Thread-115027] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:32:26.835 [DEBUG] [Thread-115027] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:32:26.836 [DEBUG] [Thread-115027] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:32:26.836 [DEBUG] [Thread-115027] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:32:26.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:32:26.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:32:26.836 [DEBUG] [Thread-115027] [transport.py] [_log()] userauth is OK
2025-11-03T11:32:26.836 [DEBUG] [Thread-115027] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:32:26.836 [DEBUG] [Thread-115027] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:32:26.836 [DEBUG] [Thread-115027] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:32:26.836 [DEBUG] [Thread-115027] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:32:26.845 [INFO] [Thread-115027] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:32:26.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:32:27.457 [DEBUG] [Thread-115027] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:32:27.457 [DEBUG] [Thread-115027] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:32:27.457 [DEBUG] [Thread-115027] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:32:27.497 [DEBUG] [Thread-115027] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:32:27.497 [DEBUG] [Thread-115027] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:32:27.500 [DEBUG] [Thread-115027] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:32:27.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:32:27.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:32:27.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:32:27.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:32:27.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:32:27.518 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:32:27.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:32:27.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:32:27.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:32:27.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.396968 -999.00  +22.70  12.16     10   -9.40 1 1 1 1 1   888    0 32.37 41.00 ----- 15.1 12.2 9.5 29.1 28.1 -29.1 27.1 -28.5 26.6 -27.8 27.1 -33.3
2025-11-03T11:32:27.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:32:27.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:32:27.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.396968
2025-11-03T11:32:27.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:32:27.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:32:27.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:32:27.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:32:27.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:32:27.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:31:53', tmtdew=40.46, humidity=5.81, cloud=0.0, wind=27.86, temperature=23.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:31:38.035', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:32:27.520 [DEBUG] [Thread-115027] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:32:27.594 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:32:27.606 [DEBUG] [Thread-115030] [transport.py] [_log()] starting thread (client mode): 0x81cb3d0
2025-11-03T11:32:27.606 [DEBUG] [Thread-115030] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:32:27.624 [DEBUG] [Thread-115030] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:32:27.624 [INFO] [Thread-115030] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:32:27.632 [DEBUG] [Thread-115030] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:32:27.632 [DEBUG] [Thread-115030] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:32:27.632 [DEBUG] [Thread-115030] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:32:27.632 [DEBUG] [Thread-115030] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:32:27.632 [DEBUG] [Thread-115030] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:32:27.632 [DEBUG] [Thread-115030] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:32:27.632 [DEBUG] [Thread-115030] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:32:27.632 [DEBUG] [Thread-115030] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:32:27.632 [DEBUG] [Thread-115030] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:32:27.632 [DEBUG] [Thread-115030] [transport.py] [_log()] client lang: <none>
2025-11-03T11:32:27.632 [DEBUG] [Thread-115030] [transport.py] [_log()] server lang: <none>
2025-11-03T11:32:27.632 [DEBUG] [Thread-115030] [transport.py] [_log()] kex follows: False
2025-11-03T11:32:27.632 [DEBUG] [Thread-115030] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:32:27.632 [DEBUG] [Thread-115030] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:32:27.632 [DEBUG] [Thread-115030] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:32:27.632 [DEBUG] [Thread-115030] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:32:27.632 [DEBUG] [Thread-115030] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:32:27.632 [DEBUG] [Thread-115030] [transport.py] [_log()] Compression: none
2025-11-03T11:32:27.632 [DEBUG] [Thread-115030] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:32:27.690 [DEBUG] [Thread-115030] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:32:27.690 [DEBUG] [Thread-115030] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:32:27.690 [DEBUG] [Thread-115030] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:32:27.691 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:32:27.691 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:32:27.747 [DEBUG] [Thread-115030] [transport.py] [_log()] userauth is OK
2025-11-03T11:32:27.747 [DEBUG] [Thread-115030] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:32:27.747 [DEBUG] [Thread-115030] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:32:27.747 [DEBUG] [Thread-115030] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:32:27.747 [DEBUG] [Thread-115030] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:32:27.761 [INFO] [Thread-115030] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:32:27.762 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:32:27.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:32:28.630 [DEBUG] [Thread-115030] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:32:28.630 [DEBUG] [Thread-115030] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:32:28.677 [DEBUG] [Thread-115030] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:32:28.677 [DEBUG] [Thread-115030] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:32:28.686 [DEBUG] [Thread-115030] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:32:28.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:32:28.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:32:28.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:32:28.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:32:28.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:32:28.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:32:28.723 [DEBUG] [Thread-115030] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:32:32.378 [DEBUG] [Thread-115032 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:32:32.482 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:32:32.483 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:32:47.427 [DEBUG] [Thread-115033 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:32:57.122 [DEBUG] [Thread-115034 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:32:58.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:32:58.723 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:32:58.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:32:59.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 32, 26), 40.52, 5.8, 0.0, 27.53, 23.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:32:59.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:32:26
2025-11-03T11:32:59.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:32:59.713 [DEBUG] [Thread-115035] [transport.py] [_log()] starting thread (client mode): 0xed37970
2025-11-03T11:32:59.713 [DEBUG] [Thread-115035] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:32:59.734 [DEBUG] [Thread-115035] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:32:59.734 [INFO] [Thread-115035] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:32:59.737 [DEBUG] [Thread-115035] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:32:59.737 [DEBUG] [Thread-115035] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:32:59.737 [DEBUG] [Thread-115035] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:32:59.737 [DEBUG] [Thread-115035] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:32:59.737 [DEBUG] [Thread-115035] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:32:59.737 [DEBUG] [Thread-115035] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:32:59.737 [DEBUG] [Thread-115035] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:32:59.737 [DEBUG] [Thread-115035] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:32:59.737 [DEBUG] [Thread-115035] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:32:59.737 [DEBUG] [Thread-115035] [transport.py] [_log()] client lang: <none>
2025-11-03T11:32:59.737 [DEBUG] [Thread-115035] [transport.py] [_log()] server lang: <none>
2025-11-03T11:32:59.737 [DEBUG] [Thread-115035] [transport.py] [_log()] kex follows: False
2025-11-03T11:32:59.737 [DEBUG] [Thread-115035] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:32:59.737 [DEBUG] [Thread-115035] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:32:59.737 [DEBUG] [Thread-115035] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:32:59.737 [DEBUG] [Thread-115035] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:32:59.737 [DEBUG] [Thread-115035] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:32:59.737 [DEBUG] [Thread-115035] [transport.py] [_log()] Compression: none
2025-11-03T11:32:59.737 [DEBUG] [Thread-115035] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:32:59.751 [DEBUG] [Thread-115035] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:32:59.751 [DEBUG] [Thread-115035] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:32:59.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:32:59.752 [DEBUG] [Thread-115035] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:32:59.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:32:59.752 [DEBUG] [Thread-115035] [transport.py] [_log()] userauth is OK
2025-11-03T11:32:59.752 [DEBUG] [Thread-115035] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:32:59.752 [DEBUG] [Thread-115035] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:32:59.752 [DEBUG] [Thread-115035] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:32:59.752 [DEBUG] [Thread-115035] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:32:59.767 [INFO] [Thread-115035] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:32:59.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:33:00.414 [DEBUG] [Thread-115035] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:33:00.415 [DEBUG] [Thread-115035] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:33:00.415 [DEBUG] [Thread-115035] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:33:00.455 [DEBUG] [Thread-115035] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:33:00.456 [DEBUG] [Thread-115035] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:33:00.458 [DEBUG] [Thread-115035] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:33:00.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:33:00.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:33:00.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:33:00.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:33:00.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:33:00.477 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:33:00.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:33:00.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:33:00.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:33:00.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.397315 -999.00  +22.70  18.14     10   -9.30 1 1 1 1 1   888    0 33.04 44.97 ----- 14.9 18.1 324.2 24.9 28.1 -30.6 27.1 -29.6 26.6 -27.8 27.2 -28.3
2025-11-03T11:33:00.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:33:00.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:33:00.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.397315
2025-11-03T11:33:00.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:33:00.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:33:00.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:33:00.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:33:00.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:33:00.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:32:26', tmtdew=40.52, humidity=5.8, cloud=0.0, wind=27.53, temperature=23.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:32:08.016', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:33:00.478 [DEBUG] [Thread-115035] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:33:00.552 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:33:00.564 [DEBUG] [Thread-115038] [transport.py] [_log()] starting thread (client mode): 0xedb25c0
2025-11-03T11:33:00.564 [DEBUG] [Thread-115038] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:33:00.578 [DEBUG] [Thread-115038] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:33:00.579 [INFO] [Thread-115038] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:33:00.586 [DEBUG] [Thread-115038] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:33:00.586 [DEBUG] [Thread-115038] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:33:00.586 [DEBUG] [Thread-115038] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:33:00.586 [DEBUG] [Thread-115038] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:33:00.586 [DEBUG] [Thread-115038] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:33:00.586 [DEBUG] [Thread-115038] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:33:00.586 [DEBUG] [Thread-115038] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:33:00.586 [DEBUG] [Thread-115038] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:33:00.586 [DEBUG] [Thread-115038] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:33:00.586 [DEBUG] [Thread-115038] [transport.py] [_log()] client lang: <none>
2025-11-03T11:33:00.586 [DEBUG] [Thread-115038] [transport.py] [_log()] server lang: <none>
2025-11-03T11:33:00.586 [DEBUG] [Thread-115038] [transport.py] [_log()] kex follows: False
2025-11-03T11:33:00.586 [DEBUG] [Thread-115038] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:33:00.586 [DEBUG] [Thread-115038] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:33:00.586 [DEBUG] [Thread-115038] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:33:00.586 [DEBUG] [Thread-115038] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:33:00.586 [DEBUG] [Thread-115038] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:33:00.586 [DEBUG] [Thread-115038] [transport.py] [_log()] Compression: none
2025-11-03T11:33:00.586 [DEBUG] [Thread-115038] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:33:00.642 [DEBUG] [Thread-115038] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:33:00.642 [DEBUG] [Thread-115038] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:33:00.642 [DEBUG] [Thread-115038] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:33:00.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:33:00.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:33:00.703 [DEBUG] [Thread-115038] [transport.py] [_log()] userauth is OK
2025-11-03T11:33:00.703 [DEBUG] [Thread-115038] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:33:00.703 [DEBUG] [Thread-115038] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:33:00.703 [DEBUG] [Thread-115038] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:33:00.703 [DEBUG] [Thread-115038] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:33:00.717 [INFO] [Thread-115038] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:33:00.717 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:33:00.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:33:01.562 [DEBUG] [Thread-115038] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:33:01.563 [DEBUG] [Thread-115038] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:33:01.611 [DEBUG] [Thread-115038] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:33:01.612 [DEBUG] [Thread-115038] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:33:01.621 [DEBUG] [Thread-115038] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:33:01.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:33:01.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:33:01.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:33:01.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:33:01.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:33:01.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:33:01.658 [DEBUG] [Thread-115038] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:33:02.462 [DEBUG] [Thread-115040 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:33:17.507 [DEBUG] [Thread-115041 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:33:31.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:33:31.680 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:33:31.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:33:32.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 32, 58), 40.09, 5.91, 0.0, 22.0, 23.34, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:33:32.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:32:58
2025-11-03T11:33:32.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:33:32.537 [DEBUG] [Thread-115042 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:33:32.625 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:33:32.626 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:33:32.674 [DEBUG] [Thread-115043] [transport.py] [_log()] starting thread (client mode): 0x81cb3d0
2025-11-03T11:33:32.674 [DEBUG] [Thread-115043] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:33:32.694 [DEBUG] [Thread-115043] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:33:32.694 [INFO] [Thread-115043] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:33:32.698 [DEBUG] [Thread-115043] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:33:32.698 [DEBUG] [Thread-115043] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:33:32.698 [DEBUG] [Thread-115043] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:33:32.698 [DEBUG] [Thread-115043] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:33:32.698 [DEBUG] [Thread-115043] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:33:32.698 [DEBUG] [Thread-115043] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:33:32.698 [DEBUG] [Thread-115043] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:33:32.698 [DEBUG] [Thread-115043] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:33:32.698 [DEBUG] [Thread-115043] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:33:32.698 [DEBUG] [Thread-115043] [transport.py] [_log()] client lang: <none>
2025-11-03T11:33:32.698 [DEBUG] [Thread-115043] [transport.py] [_log()] server lang: <none>
2025-11-03T11:33:32.698 [DEBUG] [Thread-115043] [transport.py] [_log()] kex follows: False
2025-11-03T11:33:32.698 [DEBUG] [Thread-115043] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:33:32.698 [DEBUG] [Thread-115043] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:33:32.698 [DEBUG] [Thread-115043] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:33:32.698 [DEBUG] [Thread-115043] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:33:32.698 [DEBUG] [Thread-115043] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:33:32.698 [DEBUG] [Thread-115043] [transport.py] [_log()] Compression: none
2025-11-03T11:33:32.698 [DEBUG] [Thread-115043] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:33:32.716 [DEBUG] [Thread-115043] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:33:32.716 [DEBUG] [Thread-115043] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:33:32.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:33:32.716 [DEBUG] [Thread-115043] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:33:32.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:33:32.717 [DEBUG] [Thread-115043] [transport.py] [_log()] userauth is OK
2025-11-03T11:33:32.717 [DEBUG] [Thread-115043] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:33:32.717 [DEBUG] [Thread-115043] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:33:32.717 [DEBUG] [Thread-115043] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:33:32.717 [DEBUG] [Thread-115043] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:33:32.733 [INFO] [Thread-115043] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:33:32.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:33:33.363 [DEBUG] [Thread-115043] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:33:33.363 [DEBUG] [Thread-115043] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:33:33.364 [DEBUG] [Thread-115043] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:33:33.404 [DEBUG] [Thread-115043] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:33:33.405 [DEBUG] [Thread-115043] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:33:33.408 [DEBUG] [Thread-115043] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:33:33.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:33:33.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:33:33.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:33:33.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:33:33.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:33:33.435 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:33:33.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:33:33.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:33:33.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:33:33.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.397662 -999.00  +22.70  21.00     10   -9.40 1 1 1 1 1   888    0 32.82 43.48 ----- 27.1 21.0 351.4 32.1 28.1 -29.0 27.1 -28.2 26.6 -27.7 27.1 -28.2
2025-11-03T11:33:33.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:33:33.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:33:33.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.397662
2025-11-03T11:33:33.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:33:33.438 [DEBUG] [Thread-115043] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:33:33.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:33:33.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:33:33.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:33:33.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:33:33.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:32:58', tmtdew=40.09, humidity=5.91, cloud=0.0, wind=22.0, temperature=23.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:32:37.997', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:33:33.525 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:33:33.537 [DEBUG] [Thread-115046] [transport.py] [_log()] starting thread (client mode): 0xedc4be0
2025-11-03T11:33:33.537 [DEBUG] [Thread-115046] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:33:33.551 [DEBUG] [Thread-115046] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:33:33.552 [INFO] [Thread-115046] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:33:33.559 [DEBUG] [Thread-115046] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:33:33.559 [DEBUG] [Thread-115046] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:33:33.559 [DEBUG] [Thread-115046] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:33:33.559 [DEBUG] [Thread-115046] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:33:33.559 [DEBUG] [Thread-115046] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:33:33.559 [DEBUG] [Thread-115046] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:33:33.559 [DEBUG] [Thread-115046] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:33:33.559 [DEBUG] [Thread-115046] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:33:33.559 [DEBUG] [Thread-115046] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:33:33.559 [DEBUG] [Thread-115046] [transport.py] [_log()] client lang: <none>
2025-11-03T11:33:33.559 [DEBUG] [Thread-115046] [transport.py] [_log()] server lang: <none>
2025-11-03T11:33:33.559 [DEBUG] [Thread-115046] [transport.py] [_log()] kex follows: False
2025-11-03T11:33:33.560 [DEBUG] [Thread-115046] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:33:33.560 [DEBUG] [Thread-115046] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:33:33.560 [DEBUG] [Thread-115046] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:33:33.560 [DEBUG] [Thread-115046] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:33:33.560 [DEBUG] [Thread-115046] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:33:33.560 [DEBUG] [Thread-115046] [transport.py] [_log()] Compression: none
2025-11-03T11:33:33.560 [DEBUG] [Thread-115046] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:33:33.616 [DEBUG] [Thread-115046] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:33:33.617 [DEBUG] [Thread-115046] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:33:33.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:33:33.618 [DEBUG] [Thread-115046] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:33:33.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:33:33.672 [DEBUG] [Thread-115046] [transport.py] [_log()] userauth is OK
2025-11-03T11:33:33.672 [DEBUG] [Thread-115046] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:33:33.673 [DEBUG] [Thread-115046] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:33:33.673 [DEBUG] [Thread-115046] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:33:33.673 [DEBUG] [Thread-115046] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:33:33.692 [INFO] [Thread-115046] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:33:33.692 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:33:33.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:33:34.529 [DEBUG] [Thread-115046] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:33:34.530 [DEBUG] [Thread-115046] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:33:34.578 [DEBUG] [Thread-115046] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:33:34.578 [DEBUG] [Thread-115046] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:33:34.587 [DEBUG] [Thread-115046] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:33:34.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:33:34.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:33:34.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:33:34.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:33:34.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:33:34.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:33:34.625 [DEBUG] [Thread-115046] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:33:47.573 [DEBUG] [Thread-115048 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:33:57.168 [DEBUG] [Thread-115049 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:34:02.632 [DEBUG] [Thread-115050 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:34:04.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:34:04.647 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:34:04.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:34:05.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 33, 30), 40.56, 5.7, 0.0, 21.17, 23.4, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:34:05.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:33:30
2025-11-03T11:34:05.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:34:05.637 [DEBUG] [Thread-115051] [transport.py] [_log()] starting thread (client mode): 0x11799a80
2025-11-03T11:34:05.637 [DEBUG] [Thread-115051] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:34:05.656 [DEBUG] [Thread-115051] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:34:05.656 [INFO] [Thread-115051] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:34:05.657 [DEBUG] [Thread-115051] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:34:05.657 [DEBUG] [Thread-115051] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:34:05.657 [DEBUG] [Thread-115051] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:34:05.657 [DEBUG] [Thread-115051] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:34:05.657 [DEBUG] [Thread-115051] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:34:05.657 [DEBUG] [Thread-115051] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:34:05.657 [DEBUG] [Thread-115051] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:34:05.657 [DEBUG] [Thread-115051] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:34:05.657 [DEBUG] [Thread-115051] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:34:05.657 [DEBUG] [Thread-115051] [transport.py] [_log()] client lang: <none>
2025-11-03T11:34:05.657 [DEBUG] [Thread-115051] [transport.py] [_log()] server lang: <none>
2025-11-03T11:34:05.657 [DEBUG] [Thread-115051] [transport.py] [_log()] kex follows: False
2025-11-03T11:34:05.657 [DEBUG] [Thread-115051] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:34:05.657 [DEBUG] [Thread-115051] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:34:05.657 [DEBUG] [Thread-115051] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:34:05.657 [DEBUG] [Thread-115051] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:34:05.657 [DEBUG] [Thread-115051] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:34:05.657 [DEBUG] [Thread-115051] [transport.py] [_log()] Compression: none
2025-11-03T11:34:05.657 [DEBUG] [Thread-115051] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:34:05.673 [DEBUG] [Thread-115051] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:34:05.673 [DEBUG] [Thread-115051] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:34:05.674 [DEBUG] [Thread-115051] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:34:05.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:34:05.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:34:05.676 [DEBUG] [Thread-115051] [transport.py] [_log()] userauth is OK
2025-11-03T11:34:05.676 [DEBUG] [Thread-115051] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:34:05.676 [DEBUG] [Thread-115051] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:34:05.676 [DEBUG] [Thread-115051] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:34:05.676 [DEBUG] [Thread-115051] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:34:05.701 [INFO] [Thread-115051] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:34:05.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:34:06.357 [DEBUG] [Thread-115051] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:34:06.358 [DEBUG] [Thread-115051] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:34:06.358 [DEBUG] [Thread-115051] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:34:06.398 [DEBUG] [Thread-115051] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:34:06.398 [DEBUG] [Thread-115051] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:34:06.400 [DEBUG] [Thread-115051] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:34:06.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:34:06.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:34:06.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:34:06.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:34:06.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:34:06.418 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:34:06.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:34:06.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:34:06.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:34:06.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.398356 -999.00  +22.40  21.28     10   -9.50 1 1 1 1 1   888    0 33.31 55.81 ----- 19.6 21.3 328.0 30.7 28.3 -28.7 27.2 -28.2 26.8 -27.5 27.5 -27.5
2025-11-03T11:34:06.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:34:06.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:34:06.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.398356
2025-11-03T11:34:06.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:34:06.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:34:06.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:34:06.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:34:06.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:34:06.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:33:30', tmtdew=40.56, humidity=5.7, cloud=0.0, wind=21.17, temperature=23.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:33:37.958', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:34:06.420 [DEBUG] [Thread-115051] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:34:06.491 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:34:06.503 [DEBUG] [Thread-115054] [transport.py] [_log()] starting thread (client mode): 0xed2f340
2025-11-03T11:34:06.504 [DEBUG] [Thread-115054] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:34:06.519 [DEBUG] [Thread-115054] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:34:06.520 [INFO] [Thread-115054] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:34:06.527 [DEBUG] [Thread-115054] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:34:06.527 [DEBUG] [Thread-115054] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:34:06.527 [DEBUG] [Thread-115054] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:34:06.527 [DEBUG] [Thread-115054] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:34:06.527 [DEBUG] [Thread-115054] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:34:06.527 [DEBUG] [Thread-115054] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:34:06.527 [DEBUG] [Thread-115054] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:34:06.527 [DEBUG] [Thread-115054] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:34:06.527 [DEBUG] [Thread-115054] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:34:06.527 [DEBUG] [Thread-115054] [transport.py] [_log()] client lang: <none>
2025-11-03T11:34:06.527 [DEBUG] [Thread-115054] [transport.py] [_log()] server lang: <none>
2025-11-03T11:34:06.527 [DEBUG] [Thread-115054] [transport.py] [_log()] kex follows: False
2025-11-03T11:34:06.527 [DEBUG] [Thread-115054] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:34:06.527 [DEBUG] [Thread-115054] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:34:06.527 [DEBUG] [Thread-115054] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:34:06.527 [DEBUG] [Thread-115054] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:34:06.527 [DEBUG] [Thread-115054] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:34:06.527 [DEBUG] [Thread-115054] [transport.py] [_log()] Compression: none
2025-11-03T11:34:06.527 [DEBUG] [Thread-115054] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:34:06.586 [DEBUG] [Thread-115054] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:34:06.586 [DEBUG] [Thread-115054] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:34:06.586 [DEBUG] [Thread-115054] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:34:06.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:34:06.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:34:06.643 [DEBUG] [Thread-115054] [transport.py] [_log()] userauth is OK
2025-11-03T11:34:06.644 [DEBUG] [Thread-115054] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:34:06.644 [DEBUG] [Thread-115054] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:34:06.644 [DEBUG] [Thread-115054] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:34:06.644 [DEBUG] [Thread-115054] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:34:06.658 [INFO] [Thread-115054] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:34:06.658 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:34:06.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:34:07.521 [DEBUG] [Thread-115054] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:34:07.521 [DEBUG] [Thread-115054] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:34:07.569 [DEBUG] [Thread-115054] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:34:07.569 [DEBUG] [Thread-115054] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:34:07.579 [DEBUG] [Thread-115054] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:34:07.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:34:07.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:34:07.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:34:07.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:34:07.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:34:07.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:34:07.618 [DEBUG] [Thread-115054] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:34:17.665 [DEBUG] [Thread-115056 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:34:32.725 [DEBUG] [Thread-115057 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:34:32.766 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:34:32.768 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:34:37.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:34:37.640 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:34:37.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:34:38.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 34, 2), 40.35, 5.78, 0.0, 20.33, 23.27, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:34:38.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:34:02
2025-11-03T11:34:38.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:34:38.613 [DEBUG] [Thread-115058] [transport.py] [_log()] starting thread (client mode): 0xed07220
2025-11-03T11:34:38.613 [DEBUG] [Thread-115058] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:34:38.626 [DEBUG] [Thread-115058] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:34:38.626 [INFO] [Thread-115058] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:34:38.627 [DEBUG] [Thread-115058] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:34:38.627 [DEBUG] [Thread-115058] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:34:38.627 [DEBUG] [Thread-115058] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:34:38.627 [DEBUG] [Thread-115058] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:34:38.627 [DEBUG] [Thread-115058] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:34:38.627 [DEBUG] [Thread-115058] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:34:38.627 [DEBUG] [Thread-115058] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:34:38.627 [DEBUG] [Thread-115058] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:34:38.627 [DEBUG] [Thread-115058] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:34:38.627 [DEBUG] [Thread-115058] [transport.py] [_log()] client lang: <none>
2025-11-03T11:34:38.627 [DEBUG] [Thread-115058] [transport.py] [_log()] server lang: <none>
2025-11-03T11:34:38.627 [DEBUG] [Thread-115058] [transport.py] [_log()] kex follows: False
2025-11-03T11:34:38.627 [DEBUG] [Thread-115058] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:34:38.627 [DEBUG] [Thread-115058] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:34:38.627 [DEBUG] [Thread-115058] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:34:38.627 [DEBUG] [Thread-115058] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:34:38.627 [DEBUG] [Thread-115058] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:34:38.627 [DEBUG] [Thread-115058] [transport.py] [_log()] Compression: none
2025-11-03T11:34:38.627 [DEBUG] [Thread-115058] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:34:38.635 [DEBUG] [Thread-115058] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:34:38.635 [DEBUG] [Thread-115058] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:34:38.635 [DEBUG] [Thread-115058] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:34:38.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:34:38.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:34:38.636 [DEBUG] [Thread-115058] [transport.py] [_log()] userauth is OK
2025-11-03T11:34:38.636 [DEBUG] [Thread-115058] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:34:38.636 [DEBUG] [Thread-115058] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:34:38.636 [DEBUG] [Thread-115058] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:34:38.636 [DEBUG] [Thread-115058] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:34:38.649 [INFO] [Thread-115058] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:34:38.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:34:39.229 [DEBUG] [Thread-115058] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:34:39.229 [DEBUG] [Thread-115058] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:34:39.229 [DEBUG] [Thread-115058] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:34:39.270 [DEBUG] [Thread-115058] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:34:39.270 [DEBUG] [Thread-115058] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:34:39.272 [DEBUG] [Thread-115058] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:34:39.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:34:39.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:34:39.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:34:39.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:34:39.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:34:39.293 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:34:39.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:34:39.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:34:39.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:34:39.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.398715 -999.00  +22.50   8.91     10   -9.40 1 1 1 1 1   888    0 32.76 54.47 ----- 10.6 8.9 17.4 18.5 28.5 -27.9 27.4 -27.2 26.9 -26.6 27.6 -27.5
2025-11-03T11:34:39.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:34:39.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:34:39.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.398715
2025-11-03T11:34:39.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:34:39.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:34:39.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:34:39.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:34:39.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:34:39.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:34:02', tmtdew=40.35, humidity=5.78, cloud=0.0, wind=20.33, temperature=23.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:34:08.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:34:39.294 [DEBUG] [Thread-115058] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:34:39.369 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:34:39.384 [DEBUG] [Thread-115061] [transport.py] [_log()] starting thread (client mode): 0xed67790
2025-11-03T11:34:39.385 [DEBUG] [Thread-115061] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:34:39.403 [DEBUG] [Thread-115061] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:34:39.403 [INFO] [Thread-115061] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:34:39.415 [DEBUG] [Thread-115061] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:34:39.415 [DEBUG] [Thread-115061] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:34:39.415 [DEBUG] [Thread-115061] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:34:39.415 [DEBUG] [Thread-115061] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:34:39.415 [DEBUG] [Thread-115061] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:34:39.415 [DEBUG] [Thread-115061] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:34:39.415 [DEBUG] [Thread-115061] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:34:39.415 [DEBUG] [Thread-115061] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:34:39.415 [DEBUG] [Thread-115061] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:34:39.415 [DEBUG] [Thread-115061] [transport.py] [_log()] client lang: <none>
2025-11-03T11:34:39.415 [DEBUG] [Thread-115061] [transport.py] [_log()] server lang: <none>
2025-11-03T11:34:39.415 [DEBUG] [Thread-115061] [transport.py] [_log()] kex follows: False
2025-11-03T11:34:39.415 [DEBUG] [Thread-115061] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:34:39.415 [DEBUG] [Thread-115061] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:34:39.415 [DEBUG] [Thread-115061] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:34:39.416 [DEBUG] [Thread-115061] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:34:39.416 [DEBUG] [Thread-115061] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:34:39.416 [DEBUG] [Thread-115061] [transport.py] [_log()] Compression: none
2025-11-03T11:34:39.416 [DEBUG] [Thread-115061] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:34:39.471 [DEBUG] [Thread-115061] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:34:39.471 [DEBUG] [Thread-115061] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:34:39.471 [DEBUG] [Thread-115061] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:34:39.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:34:39.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:34:39.528 [DEBUG] [Thread-115061] [transport.py] [_log()] userauth is OK
2025-11-03T11:34:39.528 [DEBUG] [Thread-115061] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:34:39.528 [DEBUG] [Thread-115061] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:34:39.528 [DEBUG] [Thread-115061] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:34:39.528 [DEBUG] [Thread-115061] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:34:39.546 [INFO] [Thread-115061] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:34:39.546 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:34:39.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:34:40.394 [DEBUG] [Thread-115061] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:34:40.394 [DEBUG] [Thread-115061] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:34:40.443 [DEBUG] [Thread-115061] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:34:40.443 [DEBUG] [Thread-115061] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:34:40.451 [DEBUG] [Thread-115061] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:34:40.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:34:40.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:34:40.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:34:40.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:34:40.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:34:40.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:34:40.484 [DEBUG] [Thread-115061] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:34:47.756 [DEBUG] [Thread-115063 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:34:57.228 [DEBUG] [Thread-115064 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:35:02.823 [DEBUG] [Thread-115065 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:35:10.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:35:10.507 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:35:10.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:35:11.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 35, 7), 40.19, 5.86, 0.0, 14.73, 23.07, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:35:11.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:35:07
2025-11-03T11:35:11.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:35:11.473 [DEBUG] [Thread-115066] [transport.py] [_log()] starting thread (client mode): 0xed06740
2025-11-03T11:35:11.474 [DEBUG] [Thread-115066] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:35:11.488 [DEBUG] [Thread-115066] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:35:11.488 [INFO] [Thread-115066] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:35:11.491 [DEBUG] [Thread-115066] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:35:11.491 [DEBUG] [Thread-115066] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:35:11.491 [DEBUG] [Thread-115066] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:35:11.491 [DEBUG] [Thread-115066] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:35:11.491 [DEBUG] [Thread-115066] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:35:11.491 [DEBUG] [Thread-115066] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:35:11.491 [DEBUG] [Thread-115066] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:35:11.491 [DEBUG] [Thread-115066] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:35:11.491 [DEBUG] [Thread-115066] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:35:11.491 [DEBUG] [Thread-115066] [transport.py] [_log()] client lang: <none>
2025-11-03T11:35:11.491 [DEBUG] [Thread-115066] [transport.py] [_log()] server lang: <none>
2025-11-03T11:35:11.492 [DEBUG] [Thread-115066] [transport.py] [_log()] kex follows: False
2025-11-03T11:35:11.492 [DEBUG] [Thread-115066] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:35:11.492 [DEBUG] [Thread-115066] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:35:11.492 [DEBUG] [Thread-115066] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:35:11.492 [DEBUG] [Thread-115066] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:35:11.492 [DEBUG] [Thread-115066] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:35:11.492 [DEBUG] [Thread-115066] [transport.py] [_log()] Compression: none
2025-11-03T11:35:11.492 [DEBUG] [Thread-115066] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:35:11.508 [DEBUG] [Thread-115066] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:35:11.508 [DEBUG] [Thread-115066] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:35:11.508 [DEBUG] [Thread-115066] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:35:11.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:35:11.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:35:11.509 [DEBUG] [Thread-115066] [transport.py] [_log()] userauth is OK
2025-11-03T11:35:11.509 [DEBUG] [Thread-115066] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:35:11.509 [DEBUG] [Thread-115066] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:35:11.509 [DEBUG] [Thread-115066] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:35:11.509 [DEBUG] [Thread-115066] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:35:11.518 [INFO] [Thread-115066] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:35:11.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:35:13.508 [DEBUG] [Thread-115066] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:35:13.508 [DEBUG] [Thread-115066] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:35:13.508 [DEBUG] [Thread-115066] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:35:13.549 [DEBUG] [Thread-115066] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:35:13.549 [DEBUG] [Thread-115066] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:35:13.553 [DEBUG] [Thread-115066] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:35:13.566 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:35:13.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:35:13.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:35:13.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:35:13.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:35:13.581 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:35:13.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:35:13.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:35:13.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:35:13.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.399062 -999.00  +22.80  10.64     10   -9.30 1 1 1 1 1   888    0 32.86 59.42 ----- 12.6 10.6 33.8 19.3 28.6 -28.6 27.5 -27.2 26.9 -27.7 27.8 -27.0
2025-11-03T11:35:13.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:35:13.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:35:13.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.399062
2025-11-03T11:35:13.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:35:13.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:35:13.584 [DEBUG] [Thread-115066] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:35:13.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:35:13.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:35:13.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:35:13.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:35:07', tmtdew=40.19, humidity=5.86, cloud=0.0, wind=14.73, temperature=23.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:34:38.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:35:13.670 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:35:13.682 [DEBUG] [Thread-115069] [transport.py] [_log()] starting thread (client mode): 0xed2f880
2025-11-03T11:35:13.682 [DEBUG] [Thread-115069] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:35:13.697 [DEBUG] [Thread-115069] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:35:13.697 [INFO] [Thread-115069] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:35:13.704 [DEBUG] [Thread-115069] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:35:13.705 [DEBUG] [Thread-115069] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:35:13.705 [DEBUG] [Thread-115069] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:35:13.705 [DEBUG] [Thread-115069] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:35:13.705 [DEBUG] [Thread-115069] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:35:13.705 [DEBUG] [Thread-115069] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:35:13.705 [DEBUG] [Thread-115069] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:35:13.705 [DEBUG] [Thread-115069] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:35:13.705 [DEBUG] [Thread-115069] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:35:13.705 [DEBUG] [Thread-115069] [transport.py] [_log()] client lang: <none>
2025-11-03T11:35:13.705 [DEBUG] [Thread-115069] [transport.py] [_log()] server lang: <none>
2025-11-03T11:35:13.706 [DEBUG] [Thread-115069] [transport.py] [_log()] kex follows: False
2025-11-03T11:35:13.706 [DEBUG] [Thread-115069] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:35:13.706 [DEBUG] [Thread-115069] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:35:13.706 [DEBUG] [Thread-115069] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:35:13.706 [DEBUG] [Thread-115069] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:35:13.706 [DEBUG] [Thread-115069] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:35:13.706 [DEBUG] [Thread-115069] [transport.py] [_log()] Compression: none
2025-11-03T11:35:13.706 [DEBUG] [Thread-115069] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:35:13.764 [DEBUG] [Thread-115069] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:35:13.765 [DEBUG] [Thread-115069] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:35:13.765 [DEBUG] [Thread-115069] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:35:13.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:35:13.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:35:13.820 [DEBUG] [Thread-115069] [transport.py] [_log()] userauth is OK
2025-11-03T11:35:13.821 [DEBUG] [Thread-115069] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:35:13.821 [DEBUG] [Thread-115069] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:35:13.821 [DEBUG] [Thread-115069] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:35:13.821 [DEBUG] [Thread-115069] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:35:13.854 [INFO] [Thread-115069] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:35:13.854 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:35:13.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:35:14.732 [DEBUG] [Thread-115069] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:35:14.733 [DEBUG] [Thread-115069] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:35:14.781 [DEBUG] [Thread-115069] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:35:14.781 [DEBUG] [Thread-115069] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:35:14.790 [DEBUG] [Thread-115069] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:35:14.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:35:14.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:35:14.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:35:14.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:35:14.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:35:14.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:35:14.828 [DEBUG] [Thread-115069] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:35:17.851 [DEBUG] [Thread-115071 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:35:32.893 [DEBUG] [Thread-115072 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:35:32.908 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:35:32.909 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:35:44.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:35:44.850 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:35:44.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:35:45.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 35, 39), 40.05, 5.93, 0.0, 19.99, 23.24, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:35:45.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:35:39
2025-11-03T11:35:45.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:35:45.844 [DEBUG] [Thread-115073] [transport.py] [_log()] starting thread (client mode): 0xed2de40
2025-11-03T11:35:45.844 [DEBUG] [Thread-115073] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:35:45.864 [DEBUG] [Thread-115073] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:35:45.864 [INFO] [Thread-115073] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:35:45.868 [DEBUG] [Thread-115073] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:35:45.868 [DEBUG] [Thread-115073] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:35:45.868 [DEBUG] [Thread-115073] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:35:45.868 [DEBUG] [Thread-115073] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:35:45.868 [DEBUG] [Thread-115073] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:35:45.868 [DEBUG] [Thread-115073] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:35:45.868 [DEBUG] [Thread-115073] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:35:45.868 [DEBUG] [Thread-115073] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:35:45.868 [DEBUG] [Thread-115073] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:35:45.868 [DEBUG] [Thread-115073] [transport.py] [_log()] client lang: <none>
2025-11-03T11:35:45.868 [DEBUG] [Thread-115073] [transport.py] [_log()] server lang: <none>
2025-11-03T11:35:45.868 [DEBUG] [Thread-115073] [transport.py] [_log()] kex follows: False
2025-11-03T11:35:45.868 [DEBUG] [Thread-115073] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:35:45.868 [DEBUG] [Thread-115073] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:35:45.868 [DEBUG] [Thread-115073] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:35:45.868 [DEBUG] [Thread-115073] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:35:45.868 [DEBUG] [Thread-115073] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:35:45.868 [DEBUG] [Thread-115073] [transport.py] [_log()] Compression: none
2025-11-03T11:35:45.868 [DEBUG] [Thread-115073] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:35:45.881 [DEBUG] [Thread-115073] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:35:45.881 [DEBUG] [Thread-115073] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:35:45.881 [DEBUG] [Thread-115073] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:35:45.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:35:45.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:35:45.882 [DEBUG] [Thread-115073] [transport.py] [_log()] userauth is OK
2025-11-03T11:35:45.882 [DEBUG] [Thread-115073] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:35:45.882 [DEBUG] [Thread-115073] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:35:45.882 [DEBUG] [Thread-115073] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:35:45.882 [DEBUG] [Thread-115073] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:35:45.897 [INFO] [Thread-115073] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:35:45.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:35:46.512 [DEBUG] [Thread-115073] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:35:46.512 [DEBUG] [Thread-115073] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:35:46.512 [DEBUG] [Thread-115073] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:35:46.552 [DEBUG] [Thread-115073] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:35:46.552 [DEBUG] [Thread-115073] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:35:46.555 [DEBUG] [Thread-115073] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:35:46.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:35:46.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:35:46.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:35:46.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:35:46.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:35:46.576 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:35:46.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:35:46.576 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:35:46.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:35:46.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.399409 -999.00  +23.00  11.26     10   -9.10 1 1 1 1 1   888    0 33.06 57.48 ----- 11.3 11.3 356.9 16.3 28.8 -28.3 27.6 -27.3 27.1 -26.9 27.8 -27.4
2025-11-03T11:35:46.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:35:46.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:35:46.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.399409
2025-11-03T11:35:46.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:35:46.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:35:46.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:35:46.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:35:46.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:35:46.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:35:39', tmtdew=40.05, humidity=5.93, cloud=0.0, wind=19.99, temperature=23.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:35:08.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:35:46.577 [DEBUG] [Thread-115073] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:35:46.647 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:35:46.658 [DEBUG] [Thread-115076] [transport.py] [_log()] starting thread (client mode): 0xedc7bb0
2025-11-03T11:35:46.658 [DEBUG] [Thread-115076] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:35:46.673 [DEBUG] [Thread-115076] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:35:46.674 [INFO] [Thread-115076] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:35:46.681 [DEBUG] [Thread-115076] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:35:46.682 [DEBUG] [Thread-115076] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:35:46.682 [DEBUG] [Thread-115076] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:35:46.682 [DEBUG] [Thread-115076] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:35:46.682 [DEBUG] [Thread-115076] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:35:46.682 [DEBUG] [Thread-115076] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:35:46.682 [DEBUG] [Thread-115076] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:35:46.683 [DEBUG] [Thread-115076] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:35:46.683 [DEBUG] [Thread-115076] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:35:46.683 [DEBUG] [Thread-115076] [transport.py] [_log()] client lang: <none>
2025-11-03T11:35:46.683 [DEBUG] [Thread-115076] [transport.py] [_log()] server lang: <none>
2025-11-03T11:35:46.683 [DEBUG] [Thread-115076] [transport.py] [_log()] kex follows: False
2025-11-03T11:35:46.683 [DEBUG] [Thread-115076] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:35:46.683 [DEBUG] [Thread-115076] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:35:46.683 [DEBUG] [Thread-115076] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:35:46.684 [DEBUG] [Thread-115076] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:35:46.684 [DEBUG] [Thread-115076] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:35:46.684 [DEBUG] [Thread-115076] [transport.py] [_log()] Compression: none
2025-11-03T11:35:46.684 [DEBUG] [Thread-115076] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:35:46.740 [DEBUG] [Thread-115076] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:35:46.741 [DEBUG] [Thread-115076] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:35:46.741 [DEBUG] [Thread-115076] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:35:46.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:35:46.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:35:46.796 [DEBUG] [Thread-115076] [transport.py] [_log()] userauth is OK
2025-11-03T11:35:46.796 [DEBUG] [Thread-115076] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:35:46.796 [DEBUG] [Thread-115076] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:35:46.797 [DEBUG] [Thread-115076] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:35:46.797 [DEBUG] [Thread-115076] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:35:46.815 [INFO] [Thread-115076] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:35:46.815 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:35:46.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:35:47.687 [DEBUG] [Thread-115076] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:35:47.688 [DEBUG] [Thread-115076] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:35:47.736 [DEBUG] [Thread-115076] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:35:47.736 [DEBUG] [Thread-115076] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:35:47.746 [DEBUG] [Thread-115076] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:35:47.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:35:47.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:35:47.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:35:47.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:35:47.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:35:47.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:35:47.782 [DEBUG] [Thread-115076] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:35:47.939 [DEBUG] [Thread-115078 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:35:57.288 [DEBUG] [Thread-115079 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:36:02.985 [DEBUG] [Thread-115080 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:36:17.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:36:17.804 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:36:17.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:36:18.018 [DEBUG] [Thread-115081 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:36:18.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 36, 11), 40.19, 5.9, 0.0, 19.51, 23.48, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:36:18.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:36:11
2025-11-03T11:36:18.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:36:18.801 [DEBUG] [Thread-115082] [transport.py] [_log()] starting thread (client mode): 0x1179bb50
2025-11-03T11:36:18.801 [DEBUG] [Thread-115082] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:36:18.821 [DEBUG] [Thread-115082] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:36:18.821 [INFO] [Thread-115082] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:36:18.824 [DEBUG] [Thread-115082] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:36:18.824 [DEBUG] [Thread-115082] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:36:18.824 [DEBUG] [Thread-115082] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:36:18.824 [DEBUG] [Thread-115082] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:36:18.824 [DEBUG] [Thread-115082] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:36:18.824 [DEBUG] [Thread-115082] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:36:18.824 [DEBUG] [Thread-115082] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:36:18.824 [DEBUG] [Thread-115082] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:36:18.824 [DEBUG] [Thread-115082] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:36:18.824 [DEBUG] [Thread-115082] [transport.py] [_log()] client lang: <none>
2025-11-03T11:36:18.824 [DEBUG] [Thread-115082] [transport.py] [_log()] server lang: <none>
2025-11-03T11:36:18.824 [DEBUG] [Thread-115082] [transport.py] [_log()] kex follows: False
2025-11-03T11:36:18.824 [DEBUG] [Thread-115082] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:36:18.824 [DEBUG] [Thread-115082] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:36:18.824 [DEBUG] [Thread-115082] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:36:18.824 [DEBUG] [Thread-115082] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:36:18.824 [DEBUG] [Thread-115082] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:36:18.824 [DEBUG] [Thread-115082] [transport.py] [_log()] Compression: none
2025-11-03T11:36:18.824 [DEBUG] [Thread-115082] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:36:18.840 [DEBUG] [Thread-115082] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:36:18.840 [DEBUG] [Thread-115082] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:36:18.840 [DEBUG] [Thread-115082] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:36:18.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:36:18.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:36:18.841 [DEBUG] [Thread-115082] [transport.py] [_log()] userauth is OK
2025-11-03T11:36:18.841 [DEBUG] [Thread-115082] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:36:18.841 [DEBUG] [Thread-115082] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:36:18.841 [DEBUG] [Thread-115082] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:36:18.841 [DEBUG] [Thread-115082] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:36:18.850 [INFO] [Thread-115082] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:36:18.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:36:19.462 [DEBUG] [Thread-115082] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:36:19.462 [DEBUG] [Thread-115082] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:36:19.463 [DEBUG] [Thread-115082] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:36:19.503 [DEBUG] [Thread-115082] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:36:19.503 [DEBUG] [Thread-115082] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:36:19.507 [DEBUG] [Thread-115082] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:36:19.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:36:19.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:36:19.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:36:19.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:36:19.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:36:19.532 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:36:19.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:36:19.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:36:19.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:36:19.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.399745 -999.00  +23.10   5.58     10   -9.00 1 1 1 1 1   888    0 34.40 59.68 ----- 9.7 5.6 2.5 14.3 28.9 -28.8 27.8 -27.3 27.2 -27.1 28.1 -27.4
2025-11-03T11:36:19.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:36:19.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:36:19.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.399745
2025-11-03T11:36:19.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:36:19.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:36:19.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:36:19.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:36:19.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:36:19.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:36:11', tmtdew=40.19, humidity=5.9, cloud=0.0, wind=19.51, temperature=23.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:35:37.968', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:36:19.536 [DEBUG] [Thread-115082] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:36:19.619 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:36:19.631 [DEBUG] [Thread-115085] [transport.py] [_log()] starting thread (client mode): 0xedc6680
2025-11-03T11:36:19.632 [DEBUG] [Thread-115085] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:36:19.650 [DEBUG] [Thread-115085] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:36:19.650 [INFO] [Thread-115085] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:36:19.657 [DEBUG] [Thread-115085] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:36:19.658 [DEBUG] [Thread-115085] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:36:19.658 [DEBUG] [Thread-115085] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:36:19.658 [DEBUG] [Thread-115085] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:36:19.658 [DEBUG] [Thread-115085] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:36:19.658 [DEBUG] [Thread-115085] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:36:19.658 [DEBUG] [Thread-115085] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:36:19.658 [DEBUG] [Thread-115085] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:36:19.658 [DEBUG] [Thread-115085] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:36:19.658 [DEBUG] [Thread-115085] [transport.py] [_log()] client lang: <none>
2025-11-03T11:36:19.659 [DEBUG] [Thread-115085] [transport.py] [_log()] server lang: <none>
2025-11-03T11:36:19.659 [DEBUG] [Thread-115085] [transport.py] [_log()] kex follows: False
2025-11-03T11:36:19.659 [DEBUG] [Thread-115085] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:36:19.659 [DEBUG] [Thread-115085] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:36:19.659 [DEBUG] [Thread-115085] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:36:19.659 [DEBUG] [Thread-115085] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:36:19.659 [DEBUG] [Thread-115085] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:36:19.659 [DEBUG] [Thread-115085] [transport.py] [_log()] Compression: none
2025-11-03T11:36:19.659 [DEBUG] [Thread-115085] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:36:19.719 [DEBUG] [Thread-115085] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:36:19.729 [DEBUG] [Thread-115085] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:36:19.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:36:19.731 [DEBUG] [Thread-115085] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:36:19.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:36:19.781 [DEBUG] [Thread-115085] [transport.py] [_log()] userauth is OK
2025-11-03T11:36:19.781 [DEBUG] [Thread-115085] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:36:19.781 [DEBUG] [Thread-115085] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:36:19.781 [DEBUG] [Thread-115085] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:36:19.781 [DEBUG] [Thread-115085] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:36:19.805 [INFO] [Thread-115085] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:36:19.805 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:36:19.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:36:20.691 [DEBUG] [Thread-115085] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:36:20.692 [DEBUG] [Thread-115085] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:36:20.739 [DEBUG] [Thread-115085] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:36:20.739 [DEBUG] [Thread-115085] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:36:20.748 [DEBUG] [Thread-115085] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:36:20.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:36:20.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:36:20.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:36:20.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:36:20.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:36:20.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:36:20.785 [DEBUG] [Thread-115085] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:36:33.048 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:36:33.049 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:36:33.050 [DEBUG] [Thread-115087 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:36:48.093 [DEBUG] [Thread-115088 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:36:50.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:36:50.808 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:36:50.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:36:51.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 36, 44), 40.31, 5.67, 0.0, 28.57, 23.72, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:36:51.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:36:44
2025-11-03T11:36:51.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:36:51.739 [DEBUG] [Thread-115089] [transport.py] [_log()] starting thread (client mode): 0x117990f0
2025-11-03T11:36:51.739 [DEBUG] [Thread-115089] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:36:51.759 [DEBUG] [Thread-115089] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:36:51.759 [INFO] [Thread-115089] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:36:51.762 [DEBUG] [Thread-115089] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:36:51.763 [DEBUG] [Thread-115089] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:36:51.763 [DEBUG] [Thread-115089] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:36:51.763 [DEBUG] [Thread-115089] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:36:51.763 [DEBUG] [Thread-115089] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:36:51.763 [DEBUG] [Thread-115089] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:36:51.763 [DEBUG] [Thread-115089] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:36:51.763 [DEBUG] [Thread-115089] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:36:51.763 [DEBUG] [Thread-115089] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:36:51.763 [DEBUG] [Thread-115089] [transport.py] [_log()] client lang: <none>
2025-11-03T11:36:51.763 [DEBUG] [Thread-115089] [transport.py] [_log()] server lang: <none>
2025-11-03T11:36:51.763 [DEBUG] [Thread-115089] [transport.py] [_log()] kex follows: False
2025-11-03T11:36:51.763 [DEBUG] [Thread-115089] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:36:51.764 [DEBUG] [Thread-115089] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:36:51.764 [DEBUG] [Thread-115089] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:36:51.764 [DEBUG] [Thread-115089] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:36:51.764 [DEBUG] [Thread-115089] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:36:51.764 [DEBUG] [Thread-115089] [transport.py] [_log()] Compression: none
2025-11-03T11:36:51.764 [DEBUG] [Thread-115089] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:36:51.782 [DEBUG] [Thread-115089] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:36:51.782 [DEBUG] [Thread-115089] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:36:51.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:36:51.784 [DEBUG] [Thread-115089] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:36:51.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:36:51.825 [DEBUG] [Thread-115089] [transport.py] [_log()] userauth is OK
2025-11-03T11:36:51.825 [DEBUG] [Thread-115089] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:36:51.826 [DEBUG] [Thread-115089] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:36:51.826 [DEBUG] [Thread-115089] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:36:51.826 [DEBUG] [Thread-115089] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:36:51.864 [INFO] [Thread-115089] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:36:51.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:36:52.510 [DEBUG] [Thread-115089] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:36:52.510 [DEBUG] [Thread-115089] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:36:52.511 [DEBUG] [Thread-115089] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:36:52.551 [DEBUG] [Thread-115089] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:36:52.551 [DEBUG] [Thread-115089] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:36:52.555 [DEBUG] [Thread-115089] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:36:52.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:36:52.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:36:52.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:36:52.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:36:52.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:36:52.582 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:36:52.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:36:52.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:36:52.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:36:52.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.400093 -999.00  +23.10  16.21     10   -9.00 1 1 1 1 1   888    0 33.66 58.97 ----- 9.7 16.2 11.2 17.9 29.1 -28.4 27.9 -28.4 27.3 -27.3 28.1 -27.3
2025-11-03T11:36:52.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:36:52.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:36:52.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.400093
2025-11-03T11:36:52.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:36:52.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:36:52.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:36:52.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:36:52.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:36:52.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:36:44', tmtdew=40.31, humidity=5.67, cloud=0.0, wind=28.57, temperature=23.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:36:08.035', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:36:52.585 [DEBUG] [Thread-115089] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:36:52.669 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:36:52.681 [DEBUG] [Thread-115092] [transport.py] [_log()] starting thread (client mode): 0xedb2b30
2025-11-03T11:36:52.681 [DEBUG] [Thread-115092] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:36:52.699 [DEBUG] [Thread-115092] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:36:52.699 [INFO] [Thread-115092] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:36:52.708 [DEBUG] [Thread-115092] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:36:52.708 [DEBUG] [Thread-115092] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:36:52.708 [DEBUG] [Thread-115092] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:36:52.709 [DEBUG] [Thread-115092] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:36:52.709 [DEBUG] [Thread-115092] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:36:52.709 [DEBUG] [Thread-115092] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:36:52.709 [DEBUG] [Thread-115092] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:36:52.709 [DEBUG] [Thread-115092] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:36:52.709 [DEBUG] [Thread-115092] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:36:52.709 [DEBUG] [Thread-115092] [transport.py] [_log()] client lang: <none>
2025-11-03T11:36:52.709 [DEBUG] [Thread-115092] [transport.py] [_log()] server lang: <none>
2025-11-03T11:36:52.709 [DEBUG] [Thread-115092] [transport.py] [_log()] kex follows: False
2025-11-03T11:36:52.709 [DEBUG] [Thread-115092] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:36:52.709 [DEBUG] [Thread-115092] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:36:52.709 [DEBUG] [Thread-115092] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:36:52.709 [DEBUG] [Thread-115092] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:36:52.709 [DEBUG] [Thread-115092] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:36:52.710 [DEBUG] [Thread-115092] [transport.py] [_log()] Compression: none
2025-11-03T11:36:52.710 [DEBUG] [Thread-115092] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:36:52.764 [DEBUG] [Thread-115092] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:36:52.765 [DEBUG] [Thread-115092] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:36:52.765 [DEBUG] [Thread-115092] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:36:52.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:36:52.767 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:36:52.820 [DEBUG] [Thread-115092] [transport.py] [_log()] userauth is OK
2025-11-03T11:36:52.821 [DEBUG] [Thread-115092] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:36:52.821 [DEBUG] [Thread-115092] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:36:52.821 [DEBUG] [Thread-115092] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:36:52.821 [DEBUG] [Thread-115092] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:36:52.840 [INFO] [Thread-115092] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:36:52.841 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:36:52.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:36:53.694 [DEBUG] [Thread-115092] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:36:53.694 [DEBUG] [Thread-115092] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:36:53.744 [DEBUG] [Thread-115092] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:36:53.744 [DEBUG] [Thread-115092] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:36:53.754 [DEBUG] [Thread-115092] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:36:53.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:36:53.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:36:53.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:36:53.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:36:53.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:36:53.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:36:53.796 [DEBUG] [Thread-115092] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:36:57.343 [DEBUG] [Thread-115094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:37:03.127 [DEBUG] [Thread-115095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:37:18.176 [DEBUG] [Thread-115096 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:37:23.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:37:23.788 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:37:23.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:37:24.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 37, 16), 40.43, 5.6, 0.0, 30.21, 23.63, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:37:24.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:37:16
2025-11-03T11:37:24.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:37:24.751 [DEBUG] [Thread-115097] [transport.py] [_log()] starting thread (client mode): 0xed2ead0
2025-11-03T11:37:24.751 [DEBUG] [Thread-115097] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:37:24.777 [DEBUG] [Thread-115097] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:37:24.777 [INFO] [Thread-115097] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:37:24.780 [DEBUG] [Thread-115097] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:37:24.780 [DEBUG] [Thread-115097] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:37:24.780 [DEBUG] [Thread-115097] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:37:24.780 [DEBUG] [Thread-115097] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:37:24.780 [DEBUG] [Thread-115097] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:37:24.781 [DEBUG] [Thread-115097] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:37:24.781 [DEBUG] [Thread-115097] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:37:24.781 [DEBUG] [Thread-115097] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:37:24.781 [DEBUG] [Thread-115097] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:37:24.781 [DEBUG] [Thread-115097] [transport.py] [_log()] client lang: <none>
2025-11-03T11:37:24.781 [DEBUG] [Thread-115097] [transport.py] [_log()] server lang: <none>
2025-11-03T11:37:24.781 [DEBUG] [Thread-115097] [transport.py] [_log()] kex follows: False
2025-11-03T11:37:24.781 [DEBUG] [Thread-115097] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:37:24.781 [DEBUG] [Thread-115097] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:37:24.781 [DEBUG] [Thread-115097] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:37:24.781 [DEBUG] [Thread-115097] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:37:24.781 [DEBUG] [Thread-115097] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:37:24.781 [DEBUG] [Thread-115097] [transport.py] [_log()] Compression: none
2025-11-03T11:37:24.781 [DEBUG] [Thread-115097] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:37:24.801 [DEBUG] [Thread-115097] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:37:24.801 [DEBUG] [Thread-115097] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:37:24.802 [DEBUG] [Thread-115097] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:37:24.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:37:24.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:37:24.804 [DEBUG] [Thread-115097] [transport.py] [_log()] userauth is OK
2025-11-03T11:37:24.804 [DEBUG] [Thread-115097] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:37:24.804 [DEBUG] [Thread-115097] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:37:24.804 [DEBUG] [Thread-115097] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:37:24.804 [DEBUG] [Thread-115097] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:37:24.828 [INFO] [Thread-115097] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:37:24.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:37:25.451 [DEBUG] [Thread-115097] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:37:25.451 [DEBUG] [Thread-115097] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:37:25.451 [DEBUG] [Thread-115097] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:37:25.492 [DEBUG] [Thread-115097] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:37:25.492 [DEBUG] [Thread-115097] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:37:25.495 [DEBUG] [Thread-115097] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:37:25.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:37:25.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:37:25.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:37:25.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:37:25.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:37:25.519 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:37:25.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:37:25.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:37:25.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:37:25.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.400440 -999.00  +23.50  21.22     11   -8.50 1 1 1 1 1   888    0 33.80 55.61 ----- 23.4 21.2 17.3 24.9 29.1 -28.4 27.9 -28.8 27.4 -26.7 28.1 -28.3
2025-11-03T11:37:25.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:37:25.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:37:25.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.400440
2025-11-03T11:37:25.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:37:25.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:37:25.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:37:25.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:37:25.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:37:25.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:37:16', tmtdew=40.43, humidity=5.6, cloud=0.0, wind=30.21, temperature=23.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:36:38.016', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:37:25.523 [DEBUG] [Thread-115097] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:37:25.605 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:37:25.617 [DEBUG] [Thread-115100] [transport.py] [_log()] starting thread (client mode): 0xed2d510
2025-11-03T11:37:25.617 [DEBUG] [Thread-115100] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:37:25.636 [DEBUG] [Thread-115100] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:37:25.636 [INFO] [Thread-115100] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:37:25.644 [DEBUG] [Thread-115100] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:37:25.644 [DEBUG] [Thread-115100] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:37:25.645 [DEBUG] [Thread-115100] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:37:25.645 [DEBUG] [Thread-115100] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:37:25.645 [DEBUG] [Thread-115100] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:37:25.645 [DEBUG] [Thread-115100] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:37:25.645 [DEBUG] [Thread-115100] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:37:25.646 [DEBUG] [Thread-115100] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:37:25.646 [DEBUG] [Thread-115100] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:37:25.646 [DEBUG] [Thread-115100] [transport.py] [_log()] client lang: <none>
2025-11-03T11:37:25.646 [DEBUG] [Thread-115100] [transport.py] [_log()] server lang: <none>
2025-11-03T11:37:25.646 [DEBUG] [Thread-115100] [transport.py] [_log()] kex follows: False
2025-11-03T11:37:25.646 [DEBUG] [Thread-115100] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:37:25.646 [DEBUG] [Thread-115100] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:37:25.646 [DEBUG] [Thread-115100] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:37:25.646 [DEBUG] [Thread-115100] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:37:25.646 [DEBUG] [Thread-115100] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:37:25.646 [DEBUG] [Thread-115100] [transport.py] [_log()] Compression: none
2025-11-03T11:37:25.646 [DEBUG] [Thread-115100] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:37:25.705 [DEBUG] [Thread-115100] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:37:25.705 [DEBUG] [Thread-115100] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:37:25.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:37:25.706 [DEBUG] [Thread-115100] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:37:25.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:37:25.765 [DEBUG] [Thread-115100] [transport.py] [_log()] userauth is OK
2025-11-03T11:37:25.765 [DEBUG] [Thread-115100] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:37:25.765 [DEBUG] [Thread-115100] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:37:25.765 [DEBUG] [Thread-115100] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:37:25.765 [DEBUG] [Thread-115100] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:37:25.784 [INFO] [Thread-115100] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:37:25.785 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:37:25.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:37:26.643 [DEBUG] [Thread-115100] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:37:26.643 [DEBUG] [Thread-115100] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:37:26.691 [DEBUG] [Thread-115100] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:37:26.691 [DEBUG] [Thread-115100] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:37:26.701 [DEBUG] [Thread-115100] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:37:26.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:37:26.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:37:26.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:37:26.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:37:26.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:37:26.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:37:26.738 [DEBUG] [Thread-115100] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:37:33.189 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:37:33.190 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:37:33.207 [DEBUG] [Thread-115102 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:37:48.252 [DEBUG] [Thread-115103 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:37:56.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:37:56.760 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:37:56.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:37:57.391 [DEBUG] [Thread-115104 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:37:57.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 37, 48), 40.93, 5.67, 0.0, 35.27, 23.77, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:37:57.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:37:48
2025-11-03T11:37:57.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:37:57.754 [DEBUG] [Thread-115105] [transport.py] [_log()] starting thread (client mode): 0x1179ba90
2025-11-03T11:37:57.754 [DEBUG] [Thread-115105] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:37:57.772 [DEBUG] [Thread-115105] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:37:57.772 [INFO] [Thread-115105] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:37:57.775 [DEBUG] [Thread-115105] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:37:57.775 [DEBUG] [Thread-115105] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:37:57.775 [DEBUG] [Thread-115105] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:37:57.775 [DEBUG] [Thread-115105] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:37:57.775 [DEBUG] [Thread-115105] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:37:57.775 [DEBUG] [Thread-115105] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:37:57.775 [DEBUG] [Thread-115105] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:37:57.775 [DEBUG] [Thread-115105] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:37:57.775 [DEBUG] [Thread-115105] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:37:57.775 [DEBUG] [Thread-115105] [transport.py] [_log()] client lang: <none>
2025-11-03T11:37:57.775 [DEBUG] [Thread-115105] [transport.py] [_log()] server lang: <none>
2025-11-03T11:37:57.775 [DEBUG] [Thread-115105] [transport.py] [_log()] kex follows: False
2025-11-03T11:37:57.775 [DEBUG] [Thread-115105] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:37:57.775 [DEBUG] [Thread-115105] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:37:57.775 [DEBUG] [Thread-115105] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:37:57.775 [DEBUG] [Thread-115105] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:37:57.775 [DEBUG] [Thread-115105] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:37:57.775 [DEBUG] [Thread-115105] [transport.py] [_log()] Compression: none
2025-11-03T11:37:57.775 [DEBUG] [Thread-115105] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:37:57.790 [DEBUG] [Thread-115105] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:37:57.790 [DEBUG] [Thread-115105] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:37:57.790 [DEBUG] [Thread-115105] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:37:57.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:37:57.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:37:57.791 [DEBUG] [Thread-115105] [transport.py] [_log()] userauth is OK
2025-11-03T11:37:57.791 [DEBUG] [Thread-115105] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:37:57.791 [DEBUG] [Thread-115105] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:37:57.791 [DEBUG] [Thread-115105] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:37:57.791 [DEBUG] [Thread-115105] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:37:57.826 [INFO] [Thread-115105] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:37:57.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:37:58.441 [DEBUG] [Thread-115105] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:37:58.441 [DEBUG] [Thread-115105] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:37:58.441 [DEBUG] [Thread-115105] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:37:58.482 [DEBUG] [Thread-115105] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:37:58.482 [DEBUG] [Thread-115105] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:37:58.484 [DEBUG] [Thread-115105] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:37:58.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:37:58.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:37:58.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:37:58.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:37:58.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:37:58.502 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:37:58.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:37:58.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:37:58.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:37:58.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.400787 -999.00  +23.70  25.83     10   -8.80 1 1 1 1 1   888    0 33.14 58.47 ----- 13.5 25.8 25.8 37.3 28.9 -30.6 27.8 -29.9 27.2 -27.8 28.1 -33.6
2025-11-03T11:37:58.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:37:58.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:37:58.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.400787
2025-11-03T11:37:58.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:37:58.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:37:58.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:37:58.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:37:58.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:37:58.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:37:48', tmtdew=40.93, humidity=5.67, cloud=0.0, wind=35.27, temperature=23.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:37:07.997', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:37:58.503 [DEBUG] [Thread-115105] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:37:58.578 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:37:58.589 [DEBUG] [Thread-115108] [transport.py] [_log()] starting thread (client mode): 0xed65e40
2025-11-03T11:37:58.590 [DEBUG] [Thread-115108] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:37:58.609 [DEBUG] [Thread-115108] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:37:58.609 [INFO] [Thread-115108] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:37:58.616 [DEBUG] [Thread-115108] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:37:58.616 [DEBUG] [Thread-115108] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:37:58.616 [DEBUG] [Thread-115108] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:37:58.616 [DEBUG] [Thread-115108] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:37:58.616 [DEBUG] [Thread-115108] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:37:58.616 [DEBUG] [Thread-115108] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:37:58.616 [DEBUG] [Thread-115108] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:37:58.616 [DEBUG] [Thread-115108] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:37:58.616 [DEBUG] [Thread-115108] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:37:58.616 [DEBUG] [Thread-115108] [transport.py] [_log()] client lang: <none>
2025-11-03T11:37:58.616 [DEBUG] [Thread-115108] [transport.py] [_log()] server lang: <none>
2025-11-03T11:37:58.616 [DEBUG] [Thread-115108] [transport.py] [_log()] kex follows: False
2025-11-03T11:37:58.616 [DEBUG] [Thread-115108] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:37:58.616 [DEBUG] [Thread-115108] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:37:58.616 [DEBUG] [Thread-115108] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:37:58.617 [DEBUG] [Thread-115108] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:37:58.617 [DEBUG] [Thread-115108] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:37:58.617 [DEBUG] [Thread-115108] [transport.py] [_log()] Compression: none
2025-11-03T11:37:58.617 [DEBUG] [Thread-115108] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:37:58.674 [DEBUG] [Thread-115108] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:37:58.674 [DEBUG] [Thread-115108] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:37:58.675 [DEBUG] [Thread-115108] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:37:58.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:37:58.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:37:58.735 [DEBUG] [Thread-115108] [transport.py] [_log()] userauth is OK
2025-11-03T11:37:58.735 [DEBUG] [Thread-115108] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:37:58.735 [DEBUG] [Thread-115108] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:37:58.735 [DEBUG] [Thread-115108] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:37:58.735 [DEBUG] [Thread-115108] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:37:58.756 [INFO] [Thread-115108] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:37:58.756 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:37:58.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:37:59.694 [DEBUG] [Thread-115108] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:37:59.694 [DEBUG] [Thread-115108] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:37:59.742 [DEBUG] [Thread-115108] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:37:59.742 [DEBUG] [Thread-115108] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:37:59.751 [DEBUG] [Thread-115108] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:37:59.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:37:59.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:37:59.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:37:59.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:37:59.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:37:59.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:37:59.788 [DEBUG] [Thread-115108] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:38:03.286 [DEBUG] [Thread-115110 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:38:18.343 [DEBUG] [Thread-115111 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:38:29.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:38:29.805 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:38:29.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:38:30.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 38, 20), 41.01, 5.62, 0.0, 32.84, 23.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:38:30.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:38:20
2025-11-03T11:38:30.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:38:30.794 [DEBUG] [Thread-115112] [transport.py] [_log()] starting thread (client mode): 0xedc4100
2025-11-03T11:38:30.794 [DEBUG] [Thread-115112] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:38:30.814 [DEBUG] [Thread-115112] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:38:30.815 [INFO] [Thread-115112] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:38:30.815 [DEBUG] [Thread-115112] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:38:30.816 [DEBUG] [Thread-115112] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:38:30.816 [DEBUG] [Thread-115112] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:38:30.816 [DEBUG] [Thread-115112] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:38:30.816 [DEBUG] [Thread-115112] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:38:30.816 [DEBUG] [Thread-115112] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:38:30.816 [DEBUG] [Thread-115112] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:38:30.816 [DEBUG] [Thread-115112] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:38:30.816 [DEBUG] [Thread-115112] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:38:30.816 [DEBUG] [Thread-115112] [transport.py] [_log()] client lang: <none>
2025-11-03T11:38:30.816 [DEBUG] [Thread-115112] [transport.py] [_log()] server lang: <none>
2025-11-03T11:38:30.816 [DEBUG] [Thread-115112] [transport.py] [_log()] kex follows: False
2025-11-03T11:38:30.816 [DEBUG] [Thread-115112] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:38:30.816 [DEBUG] [Thread-115112] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:38:30.816 [DEBUG] [Thread-115112] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:38:30.816 [DEBUG] [Thread-115112] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:38:30.816 [DEBUG] [Thread-115112] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:38:30.816 [DEBUG] [Thread-115112] [transport.py] [_log()] Compression: none
2025-11-03T11:38:30.816 [DEBUG] [Thread-115112] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:38:30.824 [DEBUG] [Thread-115112] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:38:30.833 [DEBUG] [Thread-115112] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:38:30.834 [DEBUG] [Thread-115112] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:38:30.834 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:38:30.834 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:38:30.836 [DEBUG] [Thread-115112] [transport.py] [_log()] userauth is OK
2025-11-03T11:38:30.836 [DEBUG] [Thread-115112] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:38:30.836 [DEBUG] [Thread-115112] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:38:30.836 [DEBUG] [Thread-115112] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:38:30.836 [DEBUG] [Thread-115112] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:38:30.861 [INFO] [Thread-115112] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:38:30.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:38:31.497 [DEBUG] [Thread-115112] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:38:31.497 [DEBUG] [Thread-115112] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:38:31.497 [DEBUG] [Thread-115112] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:38:31.538 [DEBUG] [Thread-115112] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:38:31.538 [DEBUG] [Thread-115112] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:38:31.544 [DEBUG] [Thread-115112] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:38:31.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:38:31.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:38:31.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:38:31.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:38:31.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:38:31.570 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:38:31.571 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:38:31.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:38:31.579 [DEBUG] [Thread-115112] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:38:31.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:38:31.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.401493 -999.00  +23.30  15.57     10   -9.20 1 1 1 1 1   888    0 33.45 65.81 ----- 18.1 15.6 354.8 29.1 28.8 -30.3 27.7 -29.8 27.3 -30.1 27.9 -34.2
2025-11-03T11:38:31.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:38:31.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:38:31.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.401493
2025-11-03T11:38:31.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:38:31.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:38:31.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:38:31.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:38:31.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:38:31.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:38:20', tmtdew=41.01, humidity=5.62, cloud=0.0, wind=32.84, temperature=23.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:38:08.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:38:31.664 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:38:31.680 [DEBUG] [Thread-115115] [transport.py] [_log()] starting thread (client mode): 0xed2d6f0
2025-11-03T11:38:31.680 [DEBUG] [Thread-115115] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:38:31.700 [DEBUG] [Thread-115115] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:38:31.700 [INFO] [Thread-115115] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:38:31.712 [DEBUG] [Thread-115115] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:38:31.712 [DEBUG] [Thread-115115] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:38:31.712 [DEBUG] [Thread-115115] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:38:31.712 [DEBUG] [Thread-115115] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:38:31.712 [DEBUG] [Thread-115115] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:38:31.712 [DEBUG] [Thread-115115] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:38:31.712 [DEBUG] [Thread-115115] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:38:31.712 [DEBUG] [Thread-115115] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:38:31.712 [DEBUG] [Thread-115115] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:38:31.712 [DEBUG] [Thread-115115] [transport.py] [_log()] client lang: <none>
2025-11-03T11:38:31.712 [DEBUG] [Thread-115115] [transport.py] [_log()] server lang: <none>
2025-11-03T11:38:31.712 [DEBUG] [Thread-115115] [transport.py] [_log()] kex follows: False
2025-11-03T11:38:31.712 [DEBUG] [Thread-115115] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:38:31.712 [DEBUG] [Thread-115115] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:38:31.712 [DEBUG] [Thread-115115] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:38:31.712 [DEBUG] [Thread-115115] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:38:31.712 [DEBUG] [Thread-115115] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:38:31.712 [DEBUG] [Thread-115115] [transport.py] [_log()] Compression: none
2025-11-03T11:38:31.713 [DEBUG] [Thread-115115] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:38:31.777 [DEBUG] [Thread-115115] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:38:31.777 [DEBUG] [Thread-115115] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:38:31.777 [DEBUG] [Thread-115115] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:38:31.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:38:31.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:38:31.841 [DEBUG] [Thread-115115] [transport.py] [_log()] userauth is OK
2025-11-03T11:38:31.841 [DEBUG] [Thread-115115] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:38:31.841 [DEBUG] [Thread-115115] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:38:31.841 [DEBUG] [Thread-115115] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:38:31.841 [DEBUG] [Thread-115115] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:38:31.857 [INFO] [Thread-115115] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:38:31.858 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:38:31.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:38:32.711 [DEBUG] [Thread-115115] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:38:32.711 [DEBUG] [Thread-115115] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:38:32.761 [DEBUG] [Thread-115115] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:38:32.761 [DEBUG] [Thread-115115] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:38:32.772 [DEBUG] [Thread-115115] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:38:32.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:38:32.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:38:32.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:38:32.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:38:32.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:38:32.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:38:32.808 [DEBUG] [Thread-115115] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:38:33.330 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:38:33.331 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:38:33.370 [DEBUG] [Thread-115117 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:38:48.411 [DEBUG] [Thread-115118 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:38:57.432 [DEBUG] [Thread-115119 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:39:02.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:39:02.830 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:39:02.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:39:03.448 [DEBUG] [Thread-115120 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:39:03.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 38, 52), 40.59, 5.65, 0.0, 23.1, 23.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:39:03.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:38:52
2025-11-03T11:39:03.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:39:03.763 [DEBUG] [Thread-115121] [transport.py] [_log()] starting thread (client mode): 0xedb0c10
2025-11-03T11:39:03.763 [DEBUG] [Thread-115121] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:39:03.780 [DEBUG] [Thread-115121] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:39:03.780 [INFO] [Thread-115121] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:39:03.783 [DEBUG] [Thread-115121] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:39:03.783 [DEBUG] [Thread-115121] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:39:03.783 [DEBUG] [Thread-115121] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:39:03.783 [DEBUG] [Thread-115121] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:39:03.783 [DEBUG] [Thread-115121] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:39:03.783 [DEBUG] [Thread-115121] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:39:03.784 [DEBUG] [Thread-115121] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:39:03.784 [DEBUG] [Thread-115121] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:39:03.784 [DEBUG] [Thread-115121] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:39:03.784 [DEBUG] [Thread-115121] [transport.py] [_log()] client lang: <none>
2025-11-03T11:39:03.784 [DEBUG] [Thread-115121] [transport.py] [_log()] server lang: <none>
2025-11-03T11:39:03.784 [DEBUG] [Thread-115121] [transport.py] [_log()] kex follows: False
2025-11-03T11:39:03.784 [DEBUG] [Thread-115121] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:39:03.784 [DEBUG] [Thread-115121] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:39:03.784 [DEBUG] [Thread-115121] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:39:03.784 [DEBUG] [Thread-115121] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:39:03.784 [DEBUG] [Thread-115121] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:39:03.784 [DEBUG] [Thread-115121] [transport.py] [_log()] Compression: none
2025-11-03T11:39:03.784 [DEBUG] [Thread-115121] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:39:03.803 [DEBUG] [Thread-115121] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:39:03.804 [DEBUG] [Thread-115121] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:39:03.804 [DEBUG] [Thread-115121] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:39:03.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:39:03.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:39:03.806 [DEBUG] [Thread-115121] [transport.py] [_log()] userauth is OK
2025-11-03T11:39:03.807 [DEBUG] [Thread-115121] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:39:03.807 [DEBUG] [Thread-115121] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:39:03.807 [DEBUG] [Thread-115121] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:39:03.807 [DEBUG] [Thread-115121] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:39:03.828 [INFO] [Thread-115121] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:39:03.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:39:04.498 [DEBUG] [Thread-115121] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:39:04.498 [DEBUG] [Thread-115121] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:39:04.499 [DEBUG] [Thread-115121] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:39:04.539 [DEBUG] [Thread-115121] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:39:04.539 [DEBUG] [Thread-115121] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:39:04.542 [DEBUG] [Thread-115121] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:39:04.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:39:04.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:39:04.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:39:04.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:39:04.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:39:04.563 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:39:04.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:39:04.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:39:04.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:39:04.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.401840 -999.00  +23.80  28.78     10   -9.20 1 1 1 1 1   888    0 34.50 70.29 ----- 28.2 28.8 23.2 39.5 28.9 -29.5 27.8 -28.3 27.4 -28.1 28.0 -27.7
2025-11-03T11:39:04.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:39:04.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:39:04.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.401840
2025-11-03T11:39:04.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:39:04.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:39:04.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:39:04.566 [DEBUG] [Thread-115121] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:39:04.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:39:04.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:39:04.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:38:52', tmtdew=40.59, humidity=5.65, cloud=0.0, wind=23.1, temperature=23.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:38:38.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:39:04.662 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:39:04.674 [DEBUG] [Thread-115124] [transport.py] [_log()] starting thread (client mode): 0xed2f8e0
2025-11-03T11:39:04.674 [DEBUG] [Thread-115124] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:39:04.691 [DEBUG] [Thread-115124] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:39:04.692 [INFO] [Thread-115124] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:39:04.700 [DEBUG] [Thread-115124] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:39:04.700 [DEBUG] [Thread-115124] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:39:04.700 [DEBUG] [Thread-115124] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:39:04.700 [DEBUG] [Thread-115124] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:39:04.700 [DEBUG] [Thread-115124] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:39:04.700 [DEBUG] [Thread-115124] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:39:04.700 [DEBUG] [Thread-115124] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:39:04.701 [DEBUG] [Thread-115124] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:39:04.701 [DEBUG] [Thread-115124] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:39:04.701 [DEBUG] [Thread-115124] [transport.py] [_log()] client lang: <none>
2025-11-03T11:39:04.701 [DEBUG] [Thread-115124] [transport.py] [_log()] server lang: <none>
2025-11-03T11:39:04.701 [DEBUG] [Thread-115124] [transport.py] [_log()] kex follows: False
2025-11-03T11:39:04.701 [DEBUG] [Thread-115124] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:39:04.701 [DEBUG] [Thread-115124] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:39:04.701 [DEBUG] [Thread-115124] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:39:04.701 [DEBUG] [Thread-115124] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:39:04.702 [DEBUG] [Thread-115124] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:39:04.702 [DEBUG] [Thread-115124] [transport.py] [_log()] Compression: none
2025-11-03T11:39:04.702 [DEBUG] [Thread-115124] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:39:04.763 [DEBUG] [Thread-115124] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:39:04.763 [DEBUG] [Thread-115124] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:39:04.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:39:04.765 [DEBUG] [Thread-115124] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:39:04.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:39:04.822 [DEBUG] [Thread-115124] [transport.py] [_log()] userauth is OK
2025-11-03T11:39:04.823 [DEBUG] [Thread-115124] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:39:04.823 [DEBUG] [Thread-115124] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:39:04.823 [DEBUG] [Thread-115124] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:39:04.823 [DEBUG] [Thread-115124] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:39:04.842 [INFO] [Thread-115124] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:39:04.843 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:39:04.843 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:39:05.712 [DEBUG] [Thread-115124] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:39:05.712 [DEBUG] [Thread-115124] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:39:05.760 [DEBUG] [Thread-115124] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:39:05.760 [DEBUG] [Thread-115124] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:39:05.769 [DEBUG] [Thread-115124] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:39:05.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:39:05.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:39:05.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:39:05.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:39:05.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:39:05.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:39:05.803 [DEBUG] [Thread-115124] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:39:18.477 [DEBUG] [Thread-115126 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:39:33.470 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:39:33.472 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:39:33.529 [DEBUG] [Thread-115127 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:39:35.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:39:35.821 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:39:35.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:39:36.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 39, 25), 40.3, 5.78, 0.0, 27.4, 23.07, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:39:36.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:39:25
2025-11-03T11:39:36.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:39:36.786 [DEBUG] [Thread-115128] [transport.py] [_log()] starting thread (client mode): 0xedc56f0
2025-11-03T11:39:36.786 [DEBUG] [Thread-115128] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:39:36.806 [DEBUG] [Thread-115128] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:39:36.806 [INFO] [Thread-115128] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:39:36.809 [DEBUG] [Thread-115128] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:39:36.810 [DEBUG] [Thread-115128] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:39:36.810 [DEBUG] [Thread-115128] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:39:36.810 [DEBUG] [Thread-115128] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:39:36.810 [DEBUG] [Thread-115128] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:39:36.810 [DEBUG] [Thread-115128] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:39:36.810 [DEBUG] [Thread-115128] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:39:36.810 [DEBUG] [Thread-115128] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:39:36.810 [DEBUG] [Thread-115128] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:39:36.810 [DEBUG] [Thread-115128] [transport.py] [_log()] client lang: <none>
2025-11-03T11:39:36.810 [DEBUG] [Thread-115128] [transport.py] [_log()] server lang: <none>
2025-11-03T11:39:36.810 [DEBUG] [Thread-115128] [transport.py] [_log()] kex follows: False
2025-11-03T11:39:36.810 [DEBUG] [Thread-115128] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:39:36.810 [DEBUG] [Thread-115128] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:39:36.810 [DEBUG] [Thread-115128] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:39:36.810 [DEBUG] [Thread-115128] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:39:36.810 [DEBUG] [Thread-115128] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:39:36.811 [DEBUG] [Thread-115128] [transport.py] [_log()] Compression: none
2025-11-03T11:39:36.811 [DEBUG] [Thread-115128] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:39:36.828 [DEBUG] [Thread-115128] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:39:36.829 [DEBUG] [Thread-115128] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:39:36.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:39:36.830 [DEBUG] [Thread-115128] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:39:36.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:39:36.832 [DEBUG] [Thread-115128] [transport.py] [_log()] userauth is OK
2025-11-03T11:39:36.832 [DEBUG] [Thread-115128] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:39:36.832 [DEBUG] [Thread-115128] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:39:36.832 [DEBUG] [Thread-115128] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:39:36.832 [DEBUG] [Thread-115128] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:39:36.853 [INFO] [Thread-115128] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:39:36.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:39:37.460 [DEBUG] [Thread-115128] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:39:37.461 [DEBUG] [Thread-115128] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:39:37.461 [DEBUG] [Thread-115128] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:39:37.501 [DEBUG] [Thread-115128] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:39:37.501 [DEBUG] [Thread-115128] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:39:37.504 [DEBUG] [Thread-115128] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:39:37.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:39:37.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:39:37.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:39:37.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:39:37.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:39:37.521 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:39:37.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:39:37.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:39:37.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:39:37.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.402187 -999.00  +23.30  15.00     10   -9.50 1 1 1 1 1   888    0 33.99 75.75 ----- 24.1 15.0 12.6 30.4 28.8 -30.1 27.7 -29.8 27.3 -29.3 28.0 -34.4
2025-11-03T11:39:37.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:39:37.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:39:37.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.402187
2025-11-03T11:39:37.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:39:37.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:39:37.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:39:37.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:39:37.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:39:37.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:39:25', tmtdew=40.3, humidity=5.78, cloud=0.0, wind=27.4, temperature=23.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:39:08.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:39:37.522 [DEBUG] [Thread-115128] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:39:37.594 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:39:37.608 [DEBUG] [Thread-115131] [transport.py] [_log()] starting thread (client mode): 0xed40d90
2025-11-03T11:39:37.608 [DEBUG] [Thread-115131] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:39:37.623 [DEBUG] [Thread-115131] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:39:37.623 [INFO] [Thread-115131] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:39:37.630 [DEBUG] [Thread-115131] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:39:37.630 [DEBUG] [Thread-115131] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:39:37.630 [DEBUG] [Thread-115131] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:39:37.630 [DEBUG] [Thread-115131] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:39:37.630 [DEBUG] [Thread-115131] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:39:37.630 [DEBUG] [Thread-115131] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:39:37.630 [DEBUG] [Thread-115131] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:39:37.630 [DEBUG] [Thread-115131] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:39:37.630 [DEBUG] [Thread-115131] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:39:37.630 [DEBUG] [Thread-115131] [transport.py] [_log()] client lang: <none>
2025-11-03T11:39:37.630 [DEBUG] [Thread-115131] [transport.py] [_log()] server lang: <none>
2025-11-03T11:39:37.630 [DEBUG] [Thread-115131] [transport.py] [_log()] kex follows: False
2025-11-03T11:39:37.630 [DEBUG] [Thread-115131] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:39:37.630 [DEBUG] [Thread-115131] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:39:37.631 [DEBUG] [Thread-115131] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:39:37.631 [DEBUG] [Thread-115131] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:39:37.631 [DEBUG] [Thread-115131] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:39:37.631 [DEBUG] [Thread-115131] [transport.py] [_log()] Compression: none
2025-11-03T11:39:37.631 [DEBUG] [Thread-115131] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:39:37.686 [DEBUG] [Thread-115131] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:39:37.687 [DEBUG] [Thread-115131] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:39:37.687 [DEBUG] [Thread-115131] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:39:37.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:39:37.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:39:37.744 [DEBUG] [Thread-115131] [transport.py] [_log()] userauth is OK
2025-11-03T11:39:37.744 [DEBUG] [Thread-115131] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:39:37.744 [DEBUG] [Thread-115131] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:39:37.744 [DEBUG] [Thread-115131] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:39:37.744 [DEBUG] [Thread-115131] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:39:37.757 [INFO] [Thread-115131] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:39:37.757 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:39:37.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:39:38.604 [DEBUG] [Thread-115131] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:39:38.604 [DEBUG] [Thread-115131] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:39:38.652 [DEBUG] [Thread-115131] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:39:38.652 [DEBUG] [Thread-115131] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:39:38.661 [DEBUG] [Thread-115131] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:39:38.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:39:38.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:39:38.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:39:38.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:39:38.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:39:38.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:39:38.700 [DEBUG] [Thread-115131] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:39:48.569 [DEBUG] [Thread-115133 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:39:57.508 [DEBUG] [Thread-115134 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:40:03.622 [DEBUG] [Thread-115135 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:40:08.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:40:08.722 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:40:08.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:40:09.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 39, 57), 40.44, 5.86, 0.0, 28.92, 23.32, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:40:09.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:39:57
2025-11-03T11:40:09.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:40:09.703 [DEBUG] [Thread-115136] [transport.py] [_log()] starting thread (client mode): 0xedb09d0
2025-11-03T11:40:09.703 [DEBUG] [Thread-115136] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:40:09.720 [DEBUG] [Thread-115136] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:40:09.720 [INFO] [Thread-115136] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:40:09.724 [DEBUG] [Thread-115136] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:40:09.724 [DEBUG] [Thread-115136] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:40:09.724 [DEBUG] [Thread-115136] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:40:09.724 [DEBUG] [Thread-115136] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:40:09.724 [DEBUG] [Thread-115136] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:40:09.724 [DEBUG] [Thread-115136] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:40:09.725 [DEBUG] [Thread-115136] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:40:09.725 [DEBUG] [Thread-115136] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:40:09.725 [DEBUG] [Thread-115136] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:40:09.725 [DEBUG] [Thread-115136] [transport.py] [_log()] client lang: <none>
2025-11-03T11:40:09.725 [DEBUG] [Thread-115136] [transport.py] [_log()] server lang: <none>
2025-11-03T11:40:09.725 [DEBUG] [Thread-115136] [transport.py] [_log()] kex follows: False
2025-11-03T11:40:09.725 [DEBUG] [Thread-115136] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:40:09.725 [DEBUG] [Thread-115136] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:40:09.725 [DEBUG] [Thread-115136] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:40:09.725 [DEBUG] [Thread-115136] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:40:09.725 [DEBUG] [Thread-115136] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:40:09.725 [DEBUG] [Thread-115136] [transport.py] [_log()] Compression: none
2025-11-03T11:40:09.725 [DEBUG] [Thread-115136] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:40:09.742 [DEBUG] [Thread-115136] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:40:09.743 [DEBUG] [Thread-115136] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:40:09.743 [DEBUG] [Thread-115136] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:40:09.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:40:09.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:40:09.745 [DEBUG] [Thread-115136] [transport.py] [_log()] userauth is OK
2025-11-03T11:40:09.746 [DEBUG] [Thread-115136] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:40:09.746 [DEBUG] [Thread-115136] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:40:09.746 [DEBUG] [Thread-115136] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:40:09.746 [DEBUG] [Thread-115136] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:40:09.779 [INFO] [Thread-115136] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:40:09.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:40:13.542 [DEBUG] [Thread-115136] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:40:13.542 [DEBUG] [Thread-115136] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:40:13.543 [DEBUG] [Thread-115136] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:40:13.574 [DEBUG] [Thread-115136] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:40:13.574 [DEBUG] [Thread-115136] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:40:13.577 [DEBUG] [Thread-115136] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:40:13.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:40:13.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:40:13.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:40:13.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:40:13.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:40:13.636 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:40:13.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:40:13.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:40:13.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:40:13.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.402535 -999.00  +23.00  26.03     10   -9.30 1 1 1 1 1   888    0 34.12 71.06 ----- 26.4 26.0 47.6 30.6 28.8 -29.1 27.7 -29.2 27.3 -27.7 27.9 -28.0
2025-11-03T11:40:13.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:40:13.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:40:13.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.402535
2025-11-03T11:40:13.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:40:13.639 [DEBUG] [Thread-115136] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:40:13.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:40:13.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:40:13.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:40:13.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:40:13.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:39:57', tmtdew=40.44, humidity=5.86, cloud=0.0, wind=28.92, temperature=23.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:39:39.024', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:40:13.723 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:40:13.735 [DEBUG] [Thread-115139] [transport.py] [_log()] starting thread (client mode): 0xed2d1e0
2025-11-03T11:40:13.735 [DEBUG] [Thread-115139] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:40:13.751 [DEBUG] [Thread-115139] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:40:13.751 [INFO] [Thread-115139] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:40:13.762 [DEBUG] [Thread-115139] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:40:13.763 [DEBUG] [Thread-115139] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:40:13.763 [DEBUG] [Thread-115139] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:40:13.763 [DEBUG] [Thread-115139] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:40:13.763 [DEBUG] [Thread-115139] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:40:13.763 [DEBUG] [Thread-115139] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:40:13.763 [DEBUG] [Thread-115139] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:40:13.763 [DEBUG] [Thread-115139] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:40:13.763 [DEBUG] [Thread-115139] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:40:13.764 [DEBUG] [Thread-115139] [transport.py] [_log()] client lang: <none>
2025-11-03T11:40:13.764 [DEBUG] [Thread-115139] [transport.py] [_log()] server lang: <none>
2025-11-03T11:40:13.764 [DEBUG] [Thread-115139] [transport.py] [_log()] kex follows: False
2025-11-03T11:40:13.764 [DEBUG] [Thread-115139] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:40:13.764 [DEBUG] [Thread-115139] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:40:13.764 [DEBUG] [Thread-115139] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:40:13.764 [DEBUG] [Thread-115139] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:40:13.765 [DEBUG] [Thread-115139] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:40:13.765 [DEBUG] [Thread-115139] [transport.py] [_log()] Compression: none
2025-11-03T11:40:13.765 [DEBUG] [Thread-115139] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:40:13.829 [DEBUG] [Thread-115139] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:40:13.830 [DEBUG] [Thread-115139] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:40:13.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:40:13.831 [DEBUG] [Thread-115139] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:40:13.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:40:13.884 [DEBUG] [Thread-115139] [transport.py] [_log()] userauth is OK
2025-11-03T11:40:13.885 [DEBUG] [Thread-115139] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:40:13.885 [DEBUG] [Thread-115139] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:40:13.885 [DEBUG] [Thread-115139] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:40:13.885 [DEBUG] [Thread-115139] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:40:13.904 [INFO] [Thread-115139] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:40:13.905 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:40:13.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:40:14.762 [DEBUG] [Thread-115139] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:40:14.762 [DEBUG] [Thread-115139] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:40:14.810 [DEBUG] [Thread-115139] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:40:14.810 [DEBUG] [Thread-115139] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:40:14.819 [DEBUG] [Thread-115139] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:40:14.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:40:14.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:40:14.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:40:14.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:40:14.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:40:14.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:40:14.858 [DEBUG] [Thread-115139] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:40:18.666 [DEBUG] [Thread-115141 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:40:33.613 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:40:33.614 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:40:33.703 [DEBUG] [Thread-115142 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:40:44.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:40:44.855 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:40:44.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:40:45.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 40, 29), 40.33, 5.93, 0.0, 24.17, 23.4, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:40:45.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:40:29
2025-11-03T11:40:45.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:40:45.833 [DEBUG] [Thread-115143] [transport.py] [_log()] starting thread (client mode): 0xed2eda0
2025-11-03T11:40:45.833 [DEBUG] [Thread-115143] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:40:45.852 [DEBUG] [Thread-115143] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:40:45.852 [INFO] [Thread-115143] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:40:45.855 [DEBUG] [Thread-115143] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:40:45.855 [DEBUG] [Thread-115143] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:40:45.855 [DEBUG] [Thread-115143] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:40:45.855 [DEBUG] [Thread-115143] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:40:45.855 [DEBUG] [Thread-115143] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:40:45.855 [DEBUG] [Thread-115143] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:40:45.855 [DEBUG] [Thread-115143] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:40:45.855 [DEBUG] [Thread-115143] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:40:45.855 [DEBUG] [Thread-115143] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:40:45.855 [DEBUG] [Thread-115143] [transport.py] [_log()] client lang: <none>
2025-11-03T11:40:45.855 [DEBUG] [Thread-115143] [transport.py] [_log()] server lang: <none>
2025-11-03T11:40:45.855 [DEBUG] [Thread-115143] [transport.py] [_log()] kex follows: False
2025-11-03T11:40:45.855 [DEBUG] [Thread-115143] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:40:45.855 [DEBUG] [Thread-115143] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:40:45.855 [DEBUG] [Thread-115143] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:40:45.855 [DEBUG] [Thread-115143] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:40:45.855 [DEBUG] [Thread-115143] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:40:45.855 [DEBUG] [Thread-115143] [transport.py] [_log()] Compression: none
2025-11-03T11:40:45.855 [DEBUG] [Thread-115143] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:40:45.872 [DEBUG] [Thread-115143] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:40:45.873 [DEBUG] [Thread-115143] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:40:45.873 [DEBUG] [Thread-115143] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:40:45.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:40:45.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:40:45.874 [DEBUG] [Thread-115143] [transport.py] [_log()] userauth is OK
2025-11-03T11:40:45.874 [DEBUG] [Thread-115143] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:40:45.874 [DEBUG] [Thread-115143] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:40:45.874 [DEBUG] [Thread-115143] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:40:45.874 [DEBUG] [Thread-115143] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:40:45.910 [INFO] [Thread-115143] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:40:45.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:40:46.573 [DEBUG] [Thread-115143] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:40:46.573 [DEBUG] [Thread-115143] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:40:46.573 [DEBUG] [Thread-115143] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:40:46.615 [DEBUG] [Thread-115143] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:40:46.615 [DEBUG] [Thread-115143] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:40:46.617 [DEBUG] [Thread-115143] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:40:46.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:40:46.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:40:46.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:40:46.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:40:46.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:40:46.636 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:40:46.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:40:46.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:40:46.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:40:46.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.402882 -999.00  +23.50  16.41     10   -9.00 1 1 1 1 1   888    0 33.48 64.48 ----- 21.6 16.4 6.2 26.3 28.8 -28.8 27.8 -29.3 27.3 -27.2 28.1 -28.0
2025-11-03T11:40:46.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:40:46.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:40:46.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.402882
2025-11-03T11:40:46.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:40:46.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:40:46.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:40:46.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:40:46.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:40:46.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:40:29', tmtdew=40.33, humidity=5.93, cloud=0.0, wind=24.17, temperature=23.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:40:09.005', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:40:46.638 [DEBUG] [Thread-115143] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:40:46.710 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:40:46.721 [DEBUG] [Thread-115146] [transport.py] [_log()] starting thread (client mode): 0xed5efb0
2025-11-03T11:40:46.721 [DEBUG] [Thread-115146] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:40:46.736 [DEBUG] [Thread-115146] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:40:46.736 [INFO] [Thread-115146] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:40:46.744 [DEBUG] [Thread-115146] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:40:46.744 [DEBUG] [Thread-115146] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:40:46.744 [DEBUG] [Thread-115146] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:40:46.744 [DEBUG] [Thread-115146] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:40:46.744 [DEBUG] [Thread-115146] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:40:46.744 [DEBUG] [Thread-115146] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:40:46.744 [DEBUG] [Thread-115146] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:40:46.744 [DEBUG] [Thread-115146] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:40:46.744 [DEBUG] [Thread-115146] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:40:46.744 [DEBUG] [Thread-115146] [transport.py] [_log()] client lang: <none>
2025-11-03T11:40:46.744 [DEBUG] [Thread-115146] [transport.py] [_log()] server lang: <none>
2025-11-03T11:40:46.744 [DEBUG] [Thread-115146] [transport.py] [_log()] kex follows: False
2025-11-03T11:40:46.744 [DEBUG] [Thread-115146] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:40:46.744 [DEBUG] [Thread-115146] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:40:46.744 [DEBUG] [Thread-115146] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:40:46.744 [DEBUG] [Thread-115146] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:40:46.744 [DEBUG] [Thread-115146] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:40:46.744 [DEBUG] [Thread-115146] [transport.py] [_log()] Compression: none
2025-11-03T11:40:46.744 [DEBUG] [Thread-115146] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:40:46.802 [DEBUG] [Thread-115146] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:40:46.802 [DEBUG] [Thread-115146] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:40:46.803 [DEBUG] [Thread-115146] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:40:46.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:40:46.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:40:46.860 [DEBUG] [Thread-115146] [transport.py] [_log()] userauth is OK
2025-11-03T11:40:46.860 [DEBUG] [Thread-115146] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:40:46.860 [DEBUG] [Thread-115146] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:40:46.860 [DEBUG] [Thread-115146] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:40:46.860 [DEBUG] [Thread-115146] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:40:46.876 [INFO] [Thread-115146] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:40:46.876 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:40:46.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:40:47.739 [DEBUG] [Thread-115146] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:40:47.739 [DEBUG] [Thread-115146] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:40:47.787 [DEBUG] [Thread-115146] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:40:47.787 [DEBUG] [Thread-115146] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:40:47.796 [DEBUG] [Thread-115146] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:40:47.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:40:47.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:40:47.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:40:47.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:40:47.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:40:47.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:40:47.834 [DEBUG] [Thread-115146] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:40:48.737 [DEBUG] [Thread-115148 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:40:57.582 [DEBUG] [Thread-115149 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:41:03.801 [DEBUG] [Thread-115150 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:41:17.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:41:17.826 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:41:17.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:41:18.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 41, 2), 40.69, 5.76, 0.0, 26.56, 23.45, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:41:18.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:41:02
2025-11-03T11:41:18.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:41:18.761 [DEBUG] [Thread-115151] [transport.py] [_log()] starting thread (client mode): 0xedc66e0
2025-11-03T11:41:18.761 [DEBUG] [Thread-115151] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:41:18.780 [DEBUG] [Thread-115151] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:41:18.780 [INFO] [Thread-115151] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:41:18.781 [DEBUG] [Thread-115151] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:41:18.781 [DEBUG] [Thread-115151] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:41:18.781 [DEBUG] [Thread-115151] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:41:18.781 [DEBUG] [Thread-115151] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:41:18.781 [DEBUG] [Thread-115151] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:41:18.781 [DEBUG] [Thread-115151] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:41:18.781 [DEBUG] [Thread-115151] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:41:18.781 [DEBUG] [Thread-115151] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:41:18.781 [DEBUG] [Thread-115151] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:41:18.781 [DEBUG] [Thread-115151] [transport.py] [_log()] client lang: <none>
2025-11-03T11:41:18.781 [DEBUG] [Thread-115151] [transport.py] [_log()] server lang: <none>
2025-11-03T11:41:18.781 [DEBUG] [Thread-115151] [transport.py] [_log()] kex follows: False
2025-11-03T11:41:18.781 [DEBUG] [Thread-115151] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:41:18.781 [DEBUG] [Thread-115151] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:41:18.781 [DEBUG] [Thread-115151] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:41:18.781 [DEBUG] [Thread-115151] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:41:18.781 [DEBUG] [Thread-115151] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:41:18.781 [DEBUG] [Thread-115151] [transport.py] [_log()] Compression: none
2025-11-03T11:41:18.781 [DEBUG] [Thread-115151] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:41:18.791 [DEBUG] [Thread-115151] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:41:18.792 [DEBUG] [Thread-115151] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:41:18.792 [DEBUG] [Thread-115151] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:41:18.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:41:18.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:41:18.793 [DEBUG] [Thread-115151] [transport.py] [_log()] userauth is OK
2025-11-03T11:41:18.793 [DEBUG] [Thread-115151] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:41:18.793 [DEBUG] [Thread-115151] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:41:18.793 [DEBUG] [Thread-115151] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:41:18.793 [DEBUG] [Thread-115151] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:41:18.802 [INFO] [Thread-115151] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:41:18.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:41:18.829 [DEBUG] [Thread-115153 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:41:19.539 [DEBUG] [Thread-115151] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:41:19.539 [DEBUG] [Thread-115151] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:41:19.540 [DEBUG] [Thread-115151] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:41:19.580 [DEBUG] [Thread-115151] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:41:19.580 [DEBUG] [Thread-115151] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:41:19.584 [DEBUG] [Thread-115151] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:41:19.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:41:19.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:41:19.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:41:19.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:41:19.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:41:19.607 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:41:19.607 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:41:19.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:41:19.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:41:19.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.403218 -999.00  +23.80  23.75     10   -8.70 1 1 1 1 1   888    0 33.96 64.45 ----- 17.2 23.8 12.8 28.2 28.9 -28.7 27.8 -29.0 27.4 -27.5 28.1 -28.0
2025-11-03T11:41:19.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:41:19.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:41:19.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.403218
2025-11-03T11:41:19.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:41:19.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:41:19.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:41:19.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:41:19.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:41:19.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:41:02', tmtdew=40.69, humidity=5.76, cloud=0.0, wind=26.56, temperature=23.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:40:38.035', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:41:19.610 [DEBUG] [Thread-115151] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:41:19.695 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:41:19.711 [DEBUG] [Thread-115155] [transport.py] [_log()] starting thread (client mode): 0xedc42b0
2025-11-03T11:41:19.711 [DEBUG] [Thread-115155] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:41:19.726 [DEBUG] [Thread-115155] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:41:19.726 [INFO] [Thread-115155] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:41:19.736 [DEBUG] [Thread-115155] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:41:19.737 [DEBUG] [Thread-115155] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:41:19.737 [DEBUG] [Thread-115155] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:41:19.737 [DEBUG] [Thread-115155] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:41:19.737 [DEBUG] [Thread-115155] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:41:19.737 [DEBUG] [Thread-115155] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:41:19.737 [DEBUG] [Thread-115155] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:41:19.738 [DEBUG] [Thread-115155] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:41:19.738 [DEBUG] [Thread-115155] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:41:19.738 [DEBUG] [Thread-115155] [transport.py] [_log()] client lang: <none>
2025-11-03T11:41:19.738 [DEBUG] [Thread-115155] [transport.py] [_log()] server lang: <none>
2025-11-03T11:41:19.738 [DEBUG] [Thread-115155] [transport.py] [_log()] kex follows: False
2025-11-03T11:41:19.738 [DEBUG] [Thread-115155] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:41:19.738 [DEBUG] [Thread-115155] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:41:19.738 [DEBUG] [Thread-115155] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:41:19.739 [DEBUG] [Thread-115155] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:41:19.739 [DEBUG] [Thread-115155] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:41:19.739 [DEBUG] [Thread-115155] [transport.py] [_log()] Compression: none
2025-11-03T11:41:19.739 [DEBUG] [Thread-115155] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:41:19.802 [DEBUG] [Thread-115155] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:41:19.802 [DEBUG] [Thread-115155] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:41:19.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:41:19.804 [DEBUG] [Thread-115155] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:41:19.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:41:19.861 [DEBUG] [Thread-115155] [transport.py] [_log()] userauth is OK
2025-11-03T11:41:19.861 [DEBUG] [Thread-115155] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:41:19.862 [DEBUG] [Thread-115155] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:41:19.862 [DEBUG] [Thread-115155] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:41:19.862 [DEBUG] [Thread-115155] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:41:19.881 [INFO] [Thread-115155] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:41:19.882 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:41:19.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:41:20.737 [DEBUG] [Thread-115155] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:41:20.738 [DEBUG] [Thread-115155] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:41:20.786 [DEBUG] [Thread-115155] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:41:20.786 [DEBUG] [Thread-115155] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:41:20.796 [DEBUG] [Thread-115155] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:41:20.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:41:20.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:41:20.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:41:20.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:41:20.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:41:20.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:41:20.832 [DEBUG] [Thread-115155] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:41:33.754 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:41:33.756 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:41:33.865 [DEBUG] [Thread-115157 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:41:48.919 [DEBUG] [Thread-115158 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:41:50.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:41:50.855 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:41:50.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:41:51.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 41, 34), 40.64, 5.35, 0.0, 30.26, 23.6, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:41:51.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:41:34
2025-11-03T11:41:51.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:41:51.792 [DEBUG] [Thread-115159] [transport.py] [_log()] starting thread (client mode): 0xedc66e0
2025-11-03T11:41:51.793 [DEBUG] [Thread-115159] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:41:51.814 [DEBUG] [Thread-115159] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:41:51.814 [INFO] [Thread-115159] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:41:51.817 [DEBUG] [Thread-115159] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:41:51.817 [DEBUG] [Thread-115159] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:41:51.817 [DEBUG] [Thread-115159] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:41:51.817 [DEBUG] [Thread-115159] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:41:51.817 [DEBUG] [Thread-115159] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:41:51.817 [DEBUG] [Thread-115159] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:41:51.817 [DEBUG] [Thread-115159] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:41:51.817 [DEBUG] [Thread-115159] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:41:51.817 [DEBUG] [Thread-115159] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:41:51.817 [DEBUG] [Thread-115159] [transport.py] [_log()] client lang: <none>
2025-11-03T11:41:51.817 [DEBUG] [Thread-115159] [transport.py] [_log()] server lang: <none>
2025-11-03T11:41:51.817 [DEBUG] [Thread-115159] [transport.py] [_log()] kex follows: False
2025-11-03T11:41:51.817 [DEBUG] [Thread-115159] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:41:51.817 [DEBUG] [Thread-115159] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:41:51.817 [DEBUG] [Thread-115159] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:41:51.826 [DEBUG] [Thread-115159] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:41:51.827 [DEBUG] [Thread-115159] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:41:51.827 [DEBUG] [Thread-115159] [transport.py] [_log()] Compression: none
2025-11-03T11:41:51.827 [DEBUG] [Thread-115159] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:41:51.844 [DEBUG] [Thread-115159] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:41:51.844 [DEBUG] [Thread-115159] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:41:51.844 [DEBUG] [Thread-115159] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:41:51.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:41:51.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:41:51.846 [DEBUG] [Thread-115159] [transport.py] [_log()] userauth is OK
2025-11-03T11:41:51.846 [DEBUG] [Thread-115159] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:41:51.846 [DEBUG] [Thread-115159] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:41:51.846 [DEBUG] [Thread-115159] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:41:51.846 [DEBUG] [Thread-115159] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:41:51.865 [INFO] [Thread-115159] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:41:51.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:41:52.516 [DEBUG] [Thread-115159] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:41:52.516 [DEBUG] [Thread-115159] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:41:52.516 [DEBUG] [Thread-115159] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:41:52.557 [DEBUG] [Thread-115159] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:41:52.557 [DEBUG] [Thread-115159] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:41:52.560 [DEBUG] [Thread-115159] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:41:52.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:41:52.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:41:52.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:41:52.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:41:52.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:41:52.578 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:41:52.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:41:52.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:41:52.587 [DEBUG] [Thread-115159] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:41:52.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:41:52.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.403565 -999.00  +23.50  27.92     10   -9.10 1 1 1 1 1   888    0 33.85 67.01 ----- 30.9 27.9 335.8 32.0 28.9 -29.0 27.9 -28.7 27.4 -27.7 28.1 -27.7
2025-11-03T11:41:52.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:41:52.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:41:52.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.403565
2025-11-03T11:41:52.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:41:52.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:41:52.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:41:52.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:41:52.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:41:52.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:41:34', tmtdew=40.64, humidity=5.35, cloud=0.0, wind=30.26, temperature=23.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:41:08.016', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:41:52.659 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:41:52.670 [DEBUG] [Thread-115162] [transport.py] [_log()] starting thread (client mode): 0xed439a0
2025-11-03T11:41:52.670 [DEBUG] [Thread-115162] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:41:52.684 [DEBUG] [Thread-115162] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:41:52.684 [INFO] [Thread-115162] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:41:52.692 [DEBUG] [Thread-115162] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:41:52.692 [DEBUG] [Thread-115162] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:41:52.692 [DEBUG] [Thread-115162] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:41:52.692 [DEBUG] [Thread-115162] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:41:52.692 [DEBUG] [Thread-115162] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:41:52.692 [DEBUG] [Thread-115162] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:41:52.692 [DEBUG] [Thread-115162] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:41:52.692 [DEBUG] [Thread-115162] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:41:52.692 [DEBUG] [Thread-115162] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:41:52.692 [DEBUG] [Thread-115162] [transport.py] [_log()] client lang: <none>
2025-11-03T11:41:52.692 [DEBUG] [Thread-115162] [transport.py] [_log()] server lang: <none>
2025-11-03T11:41:52.692 [DEBUG] [Thread-115162] [transport.py] [_log()] kex follows: False
2025-11-03T11:41:52.692 [DEBUG] [Thread-115162] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:41:52.692 [DEBUG] [Thread-115162] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:41:52.692 [DEBUG] [Thread-115162] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:41:52.692 [DEBUG] [Thread-115162] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:41:52.692 [DEBUG] [Thread-115162] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:41:52.692 [DEBUG] [Thread-115162] [transport.py] [_log()] Compression: none
2025-11-03T11:41:52.692 [DEBUG] [Thread-115162] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:41:52.752 [DEBUG] [Thread-115162] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:41:52.752 [DEBUG] [Thread-115162] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:41:52.752 [DEBUG] [Thread-115162] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:41:52.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:41:52.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:41:52.809 [DEBUG] [Thread-115162] [transport.py] [_log()] userauth is OK
2025-11-03T11:41:52.809 [DEBUG] [Thread-115162] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:41:52.809 [DEBUG] [Thread-115162] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:41:52.809 [DEBUG] [Thread-115162] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:41:52.809 [DEBUG] [Thread-115162] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:41:52.828 [INFO] [Thread-115162] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:41:52.838 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:41:52.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:41:53.676 [DEBUG] [Thread-115162] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:41:53.676 [DEBUG] [Thread-115162] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:41:53.724 [DEBUG] [Thread-115162] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:41:53.724 [DEBUG] [Thread-115162] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:41:53.734 [DEBUG] [Thread-115162] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:41:53.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:41:53.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:41:53.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:41:53.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:41:53.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:41:53.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:41:53.771 [DEBUG] [Thread-115162] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:41:57.630 [DEBUG] [Thread-115164 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:42:03.949 [DEBUG] [Thread-115165 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:42:19.005 [DEBUG] [Thread-115166 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:42:23.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:42:23.773 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:42:23.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:42:24.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 42, 6), 40.88, 5.23, 0.0, 27.35, 23.55, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:42:24.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:42:06
2025-11-03T11:42:24.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:42:24.784 [DEBUG] [Thread-115167] [transport.py] [_log()] starting thread (client mode): 0xed37fa0
2025-11-03T11:42:24.785 [DEBUG] [Thread-115167] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:42:24.802 [DEBUG] [Thread-115167] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:42:24.802 [INFO] [Thread-115167] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:42:24.804 [DEBUG] [Thread-115167] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:42:24.804 [DEBUG] [Thread-115167] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:42:24.804 [DEBUG] [Thread-115167] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:42:24.804 [DEBUG] [Thread-115167] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:42:24.804 [DEBUG] [Thread-115167] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:42:24.804 [DEBUG] [Thread-115167] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:42:24.804 [DEBUG] [Thread-115167] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:42:24.804 [DEBUG] [Thread-115167] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:42:24.804 [DEBUG] [Thread-115167] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:42:24.804 [DEBUG] [Thread-115167] [transport.py] [_log()] client lang: <none>
2025-11-03T11:42:24.804 [DEBUG] [Thread-115167] [transport.py] [_log()] server lang: <none>
2025-11-03T11:42:24.804 [DEBUG] [Thread-115167] [transport.py] [_log()] kex follows: False
2025-11-03T11:42:24.804 [DEBUG] [Thread-115167] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:42:24.804 [DEBUG] [Thread-115167] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:42:24.804 [DEBUG] [Thread-115167] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:42:24.804 [DEBUG] [Thread-115167] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:42:24.804 [DEBUG] [Thread-115167] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:42:24.804 [DEBUG] [Thread-115167] [transport.py] [_log()] Compression: none
2025-11-03T11:42:24.804 [DEBUG] [Thread-115167] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:42:24.812 [DEBUG] [Thread-115167] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:42:24.812 [DEBUG] [Thread-115167] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:42:24.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:42:24.812 [DEBUG] [Thread-115167] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:42:24.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:42:24.813 [DEBUG] [Thread-115167] [transport.py] [_log()] userauth is OK
2025-11-03T11:42:24.813 [DEBUG] [Thread-115167] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:42:24.813 [DEBUG] [Thread-115167] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:42:24.813 [DEBUG] [Thread-115167] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:42:24.813 [DEBUG] [Thread-115167] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:42:24.826 [INFO] [Thread-115167] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:42:24.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:42:25.383 [DEBUG] [Thread-115167] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:42:25.384 [DEBUG] [Thread-115167] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:42:25.384 [DEBUG] [Thread-115167] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:42:25.425 [DEBUG] [Thread-115167] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:42:25.426 [DEBUG] [Thread-115167] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:42:25.428 [DEBUG] [Thread-115167] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:42:25.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:42:25.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:42:25.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:42:25.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:42:25.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:42:25.450 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:42:25.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:42:25.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:42:25.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:42:25.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.404259 -999.00  +22.70  14.82     10   -9.50 1 1 1 1 1   888    0 33.91 67.88 ----- 12.8 14.8 332.0 25.9 28.6 -29.8 27.6 -29.4 27.3 -28.5 27.8 -28.7
2025-11-03T11:42:25.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:42:25.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:42:25.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.404259
2025-11-03T11:42:25.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:42:25.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:42:25.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:42:25.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:42:25.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:42:25.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:42:06', tmtdew=40.88, humidity=5.23, cloud=0.0, wind=27.35, temperature=23.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:42:07.978', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:42:25.452 [DEBUG] [Thread-115167] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:42:25.526 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:42:25.539 [DEBUG] [Thread-115170] [transport.py] [_log()] starting thread (client mode): 0xed369b0
2025-11-03T11:42:25.539 [DEBUG] [Thread-115170] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:42:25.553 [DEBUG] [Thread-115170] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:42:25.553 [INFO] [Thread-115170] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:42:25.561 [DEBUG] [Thread-115170] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:42:25.561 [DEBUG] [Thread-115170] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:42:25.561 [DEBUG] [Thread-115170] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:42:25.561 [DEBUG] [Thread-115170] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:42:25.561 [DEBUG] [Thread-115170] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:42:25.561 [DEBUG] [Thread-115170] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:42:25.561 [DEBUG] [Thread-115170] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:42:25.561 [DEBUG] [Thread-115170] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:42:25.561 [DEBUG] [Thread-115170] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:42:25.561 [DEBUG] [Thread-115170] [transport.py] [_log()] client lang: <none>
2025-11-03T11:42:25.561 [DEBUG] [Thread-115170] [transport.py] [_log()] server lang: <none>
2025-11-03T11:42:25.561 [DEBUG] [Thread-115170] [transport.py] [_log()] kex follows: False
2025-11-03T11:42:25.561 [DEBUG] [Thread-115170] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:42:25.561 [DEBUG] [Thread-115170] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:42:25.561 [DEBUG] [Thread-115170] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:42:25.561 [DEBUG] [Thread-115170] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:42:25.561 [DEBUG] [Thread-115170] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:42:25.561 [DEBUG] [Thread-115170] [transport.py] [_log()] Compression: none
2025-11-03T11:42:25.561 [DEBUG] [Thread-115170] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:42:25.618 [DEBUG] [Thread-115170] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:42:25.619 [DEBUG] [Thread-115170] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:42:25.619 [DEBUG] [Thread-115170] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:42:25.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:42:25.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:42:25.676 [DEBUG] [Thread-115170] [transport.py] [_log()] userauth is OK
2025-11-03T11:42:25.676 [DEBUG] [Thread-115170] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:42:25.676 [DEBUG] [Thread-115170] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:42:25.676 [DEBUG] [Thread-115170] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:42:25.676 [DEBUG] [Thread-115170] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:42:25.689 [INFO] [Thread-115170] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:42:25.689 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:42:25.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:42:26.548 [DEBUG] [Thread-115170] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:42:26.548 [DEBUG] [Thread-115170] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:42:26.596 [DEBUG] [Thread-115170] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:42:26.596 [DEBUG] [Thread-115170] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:42:26.605 [DEBUG] [Thread-115170] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:42:26.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:42:26.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:42:26.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:42:26.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:42:26.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:42:26.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:42:26.637 [DEBUG] [Thread-115170] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:42:33.898 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:42:33.899 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:42:34.038 [DEBUG] [Thread-115172 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:42:49.091 [DEBUG] [Thread-115173 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:42:56.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:42:56.660 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:42:56.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:42:57.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 42, 38), 40.37, 5.73, 0.0, 18.91, 22.98, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:42:57.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:42:38
2025-11-03T11:42:57.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:42:57.609 [DEBUG] [Thread-115174] [transport.py] [_log()] starting thread (client mode): 0xed42290
2025-11-03T11:42:57.609 [DEBUG] [Thread-115174] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:42:57.630 [DEBUG] [Thread-115174] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:42:57.630 [INFO] [Thread-115174] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:42:57.633 [DEBUG] [Thread-115174] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:42:57.633 [DEBUG] [Thread-115174] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:42:57.633 [DEBUG] [Thread-115174] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:42:57.633 [DEBUG] [Thread-115174] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:42:57.633 [DEBUG] [Thread-115174] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:42:57.633 [DEBUG] [Thread-115174] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:42:57.633 [DEBUG] [Thread-115174] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:42:57.633 [DEBUG] [Thread-115174] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:42:57.633 [DEBUG] [Thread-115174] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:42:57.633 [DEBUG] [Thread-115174] [transport.py] [_log()] client lang: <none>
2025-11-03T11:42:57.633 [DEBUG] [Thread-115174] [transport.py] [_log()] server lang: <none>
2025-11-03T11:42:57.634 [DEBUG] [Thread-115174] [transport.py] [_log()] kex follows: False
2025-11-03T11:42:57.634 [DEBUG] [Thread-115174] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:42:57.634 [DEBUG] [Thread-115174] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:42:57.634 [DEBUG] [Thread-115174] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:42:57.634 [DEBUG] [Thread-115174] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:42:57.634 [DEBUG] [Thread-115174] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:42:57.634 [DEBUG] [Thread-115174] [transport.py] [_log()] Compression: none
2025-11-03T11:42:57.634 [DEBUG] [Thread-115174] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:42:57.652 [DEBUG] [Thread-115174] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:42:57.652 [DEBUG] [Thread-115174] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:42:57.652 [DEBUG] [Thread-115174] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:42:57.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:42:57.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:42:57.653 [DEBUG] [Thread-115174] [transport.py] [_log()] userauth is OK
2025-11-03T11:42:57.653 [DEBUG] [Thread-115174] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:42:57.653 [DEBUG] [Thread-115174] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:42:57.653 [DEBUG] [Thread-115174] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:42:57.653 [DEBUG] [Thread-115174] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:42:57.663 [INFO] [Thread-115174] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:42:57.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:42:57.674 [DEBUG] [Thread-115176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:42:58.302 [DEBUG] [Thread-115174] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:42:58.302 [DEBUG] [Thread-115174] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:42:58.302 [DEBUG] [Thread-115174] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:42:58.342 [DEBUG] [Thread-115174] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:42:58.342 [DEBUG] [Thread-115174] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:42:58.345 [DEBUG] [Thread-115174] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:42:58.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:42:58.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:42:58.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:42:58.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:42:58.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:42:58.362 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:42:58.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:42:58.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:42:58.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:42:58.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.404618 -999.00  +22.70  16.86     11   -9.20 1 1 1 1 1   888    0 33.69 67.09 ----- 16.3 16.9 20.2 18.8 28.8 -28.2 27.6 -28.6 27.3 -26.7 27.9 -27.5
2025-11-03T11:42:58.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:42:58.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:42:58.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.404618
2025-11-03T11:42:58.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:42:58.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:42:58.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:42:58.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:42:58.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:42:58.371 [DEBUG] [Thread-115174] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:42:58.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:42:38', tmtdew=40.37, humidity=5.73, cloud=0.0, wind=18.91, temperature=22.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:42:38.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:42:58.444 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:42:58.456 [DEBUG] [Thread-115178] [transport.py] [_log()] starting thread (client mode): 0xed40b50
2025-11-03T11:42:58.456 [DEBUG] [Thread-115178] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:42:58.471 [DEBUG] [Thread-115178] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:42:58.471 [INFO] [Thread-115178] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:42:58.478 [DEBUG] [Thread-115178] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:42:58.478 [DEBUG] [Thread-115178] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:42:58.478 [DEBUG] [Thread-115178] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:42:58.479 [DEBUG] [Thread-115178] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:42:58.479 [DEBUG] [Thread-115178] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:42:58.479 [DEBUG] [Thread-115178] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:42:58.479 [DEBUG] [Thread-115178] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:42:58.479 [DEBUG] [Thread-115178] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:42:58.479 [DEBUG] [Thread-115178] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:42:58.479 [DEBUG] [Thread-115178] [transport.py] [_log()] client lang: <none>
2025-11-03T11:42:58.479 [DEBUG] [Thread-115178] [transport.py] [_log()] server lang: <none>
2025-11-03T11:42:58.479 [DEBUG] [Thread-115178] [transport.py] [_log()] kex follows: False
2025-11-03T11:42:58.479 [DEBUG] [Thread-115178] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:42:58.479 [DEBUG] [Thread-115178] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:42:58.479 [DEBUG] [Thread-115178] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:42:58.479 [DEBUG] [Thread-115178] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:42:58.479 [DEBUG] [Thread-115178] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:42:58.480 [DEBUG] [Thread-115178] [transport.py] [_log()] Compression: none
2025-11-03T11:42:58.480 [DEBUG] [Thread-115178] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:42:58.534 [DEBUG] [Thread-115178] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:42:58.534 [DEBUG] [Thread-115178] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:42:58.534 [DEBUG] [Thread-115178] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:42:58.534 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:42:58.534 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:42:58.591 [DEBUG] [Thread-115178] [transport.py] [_log()] userauth is OK
2025-11-03T11:42:58.591 [DEBUG] [Thread-115178] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:42:58.591 [DEBUG] [Thread-115178] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:42:58.591 [DEBUG] [Thread-115178] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:42:58.591 [DEBUG] [Thread-115178] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:42:58.605 [INFO] [Thread-115178] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:42:58.605 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:42:58.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:42:59.477 [DEBUG] [Thread-115178] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:42:59.477 [DEBUG] [Thread-115178] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:42:59.525 [DEBUG] [Thread-115178] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:42:59.525 [DEBUG] [Thread-115178] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:42:59.535 [DEBUG] [Thread-115178] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:42:59.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:42:59.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:42:59.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:42:59.562 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:42:59.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:42:59.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:42:59.572 [DEBUG] [Thread-115178] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:43:04.126 [DEBUG] [Thread-115180 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:43:19.171 [DEBUG] [Thread-115181 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:43:29.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:43:29.594 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:43:29.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:43:30.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 43, 11), 40.14, 5.83, 0.0, 18.47, 22.92, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:43:30.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:43:11
2025-11-03T11:43:30.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:43:30.540 [DEBUG] [Thread-115182] [transport.py] [_log()] starting thread (client mode): 0xed5c100
2025-11-03T11:43:30.540 [DEBUG] [Thread-115182] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:43:30.563 [DEBUG] [Thread-115182] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:43:30.563 [INFO] [Thread-115182] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:43:30.564 [DEBUG] [Thread-115182] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:43:30.564 [DEBUG] [Thread-115182] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:43:30.564 [DEBUG] [Thread-115182] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:43:30.564 [DEBUG] [Thread-115182] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:43:30.564 [DEBUG] [Thread-115182] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:43:30.564 [DEBUG] [Thread-115182] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:43:30.564 [DEBUG] [Thread-115182] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:43:30.564 [DEBUG] [Thread-115182] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:43:30.564 [DEBUG] [Thread-115182] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:43:30.565 [DEBUG] [Thread-115182] [transport.py] [_log()] client lang: <none>
2025-11-03T11:43:30.565 [DEBUG] [Thread-115182] [transport.py] [_log()] server lang: <none>
2025-11-03T11:43:30.565 [DEBUG] [Thread-115182] [transport.py] [_log()] kex follows: False
2025-11-03T11:43:30.565 [DEBUG] [Thread-115182] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:43:30.565 [DEBUG] [Thread-115182] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:43:30.565 [DEBUG] [Thread-115182] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:43:30.565 [DEBUG] [Thread-115182] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:43:30.565 [DEBUG] [Thread-115182] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:43:30.565 [DEBUG] [Thread-115182] [transport.py] [_log()] Compression: none
2025-11-03T11:43:30.565 [DEBUG] [Thread-115182] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:43:30.574 [DEBUG] [Thread-115182] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:43:30.574 [DEBUG] [Thread-115182] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:43:30.575 [DEBUG] [Thread-115182] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:43:30.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:43:30.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:43:30.577 [DEBUG] [Thread-115182] [transport.py] [_log()] userauth is OK
2025-11-03T11:43:30.577 [DEBUG] [Thread-115182] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:43:30.577 [DEBUG] [Thread-115182] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:43:30.577 [DEBUG] [Thread-115182] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:43:30.577 [DEBUG] [Thread-115182] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:43:30.596 [INFO] [Thread-115182] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:43:30.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:43:31.140 [DEBUG] [Thread-115182] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:43:31.141 [DEBUG] [Thread-115182] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:43:31.141 [DEBUG] [Thread-115182] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:43:31.182 [DEBUG] [Thread-115182] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:43:31.182 [DEBUG] [Thread-115182] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:43:31.186 [DEBUG] [Thread-115182] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:43:31.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:43:31.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:43:31.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:43:31.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:43:31.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:43:31.205 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:43:31.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:43:31.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:43:31.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:43:31.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.404965 -999.00  +23.20  12.49     10   -9.20 1 1 1 1 1   888    0 34.20 65.09 ----- 13.2 12.5 349.9 25.7 28.8 -28.7 27.7 -27.7 27.4 -27.4 28.0 -27.0
2025-11-03T11:43:31.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:43:31.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:43:31.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.404965
2025-11-03T11:43:31.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:43:31.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:43:31.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:43:31.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:43:31.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:43:31.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:43:11', tmtdew=40.14, humidity=5.83, cloud=0.0, wind=18.47, temperature=22.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:43:08.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:43:31.208 [DEBUG] [Thread-115182] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:43:31.291 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:43:31.304 [DEBUG] [Thread-115185] [transport.py] [_log()] starting thread (client mode): 0xed05ff0
2025-11-03T11:43:31.304 [DEBUG] [Thread-115185] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:43:31.319 [DEBUG] [Thread-115185] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:43:31.319 [INFO] [Thread-115185] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:43:31.327 [DEBUG] [Thread-115185] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:43:31.327 [DEBUG] [Thread-115185] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:43:31.328 [DEBUG] [Thread-115185] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:43:31.328 [DEBUG] [Thread-115185] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:43:31.328 [DEBUG] [Thread-115185] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:43:31.328 [DEBUG] [Thread-115185] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:43:31.328 [DEBUG] [Thread-115185] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:43:31.328 [DEBUG] [Thread-115185] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:43:31.328 [DEBUG] [Thread-115185] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:43:31.328 [DEBUG] [Thread-115185] [transport.py] [_log()] client lang: <none>
2025-11-03T11:43:31.329 [DEBUG] [Thread-115185] [transport.py] [_log()] server lang: <none>
2025-11-03T11:43:31.329 [DEBUG] [Thread-115185] [transport.py] [_log()] kex follows: False
2025-11-03T11:43:31.329 [DEBUG] [Thread-115185] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:43:31.329 [DEBUG] [Thread-115185] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:43:31.329 [DEBUG] [Thread-115185] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:43:31.329 [DEBUG] [Thread-115185] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:43:31.329 [DEBUG] [Thread-115185] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:43:31.330 [DEBUG] [Thread-115185] [transport.py] [_log()] Compression: none
2025-11-03T11:43:31.330 [DEBUG] [Thread-115185] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:43:31.391 [DEBUG] [Thread-115185] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:43:31.391 [DEBUG] [Thread-115185] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:43:31.392 [DEBUG] [Thread-115185] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:43:31.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:43:31.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:43:31.449 [DEBUG] [Thread-115185] [transport.py] [_log()] userauth is OK
2025-11-03T11:43:31.450 [DEBUG] [Thread-115185] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:43:31.450 [DEBUG] [Thread-115185] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:43:31.450 [DEBUG] [Thread-115185] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:43:31.450 [DEBUG] [Thread-115185] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:43:31.469 [INFO] [Thread-115185] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:43:31.470 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:43:31.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:43:32.367 [DEBUG] [Thread-115185] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:43:32.367 [DEBUG] [Thread-115185] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:43:32.416 [DEBUG] [Thread-115185] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:43:32.416 [DEBUG] [Thread-115185] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:43:32.425 [DEBUG] [Thread-115185] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:43:32.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:43:32.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:43:32.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:43:32.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:43:32.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:43:32.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:43:32.462 [DEBUG] [Thread-115185] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:43:34.039 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:43:34.040 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:43:34.204 [DEBUG] [Thread-115187 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:43:49.256 [DEBUG] [Thread-115188 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:43:57.734 [DEBUG] [Thread-115189 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:44:02.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:44:02.485 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:44:02.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:44:03.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 43, 43), 39.73, 5.9, 0.0, 16.2, 23.14, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:44:03.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:43:43
2025-11-03T11:44:03.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:44:03.461 [DEBUG] [Thread-115190] [transport.py] [_log()] starting thread (client mode): 0xedc7580
2025-11-03T11:44:03.461 [DEBUG] [Thread-115190] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:44:03.482 [DEBUG] [Thread-115190] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:44:03.482 [INFO] [Thread-115190] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:44:03.485 [DEBUG] [Thread-115190] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:44:03.485 [DEBUG] [Thread-115190] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:44:03.485 [DEBUG] [Thread-115190] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:44:03.485 [DEBUG] [Thread-115190] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:44:03.485 [DEBUG] [Thread-115190] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:44:03.486 [DEBUG] [Thread-115190] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:44:03.486 [DEBUG] [Thread-115190] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:44:03.486 [DEBUG] [Thread-115190] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:44:03.486 [DEBUG] [Thread-115190] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:44:03.486 [DEBUG] [Thread-115190] [transport.py] [_log()] client lang: <none>
2025-11-03T11:44:03.486 [DEBUG] [Thread-115190] [transport.py] [_log()] server lang: <none>
2025-11-03T11:44:03.486 [DEBUG] [Thread-115190] [transport.py] [_log()] kex follows: False
2025-11-03T11:44:03.486 [DEBUG] [Thread-115190] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:44:03.486 [DEBUG] [Thread-115190] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:44:03.486 [DEBUG] [Thread-115190] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:44:03.486 [DEBUG] [Thread-115190] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:44:03.486 [DEBUG] [Thread-115190] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:44:03.486 [DEBUG] [Thread-115190] [transport.py] [_log()] Compression: none
2025-11-03T11:44:03.495 [DEBUG] [Thread-115190] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:44:03.514 [DEBUG] [Thread-115190] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:44:03.515 [DEBUG] [Thread-115190] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:44:03.515 [DEBUG] [Thread-115190] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:44:03.516 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:44:03.516 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:44:03.518 [DEBUG] [Thread-115190] [transport.py] [_log()] userauth is OK
2025-11-03T11:44:03.518 [DEBUG] [Thread-115190] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:44:03.518 [DEBUG] [Thread-115190] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:44:03.518 [DEBUG] [Thread-115190] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:44:03.518 [DEBUG] [Thread-115190] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:44:03.543 [INFO] [Thread-115190] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:44:03.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:44:04.161 [DEBUG] [Thread-115190] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:44:04.162 [DEBUG] [Thread-115190] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:44:04.162 [DEBUG] [Thread-115190] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:44:04.203 [DEBUG] [Thread-115190] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:44:04.203 [DEBUG] [Thread-115190] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:44:04.207 [DEBUG] [Thread-115190] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:44:04.219 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:44:04.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:44:04.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:44:04.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:44:04.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:44:04.230 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:44:04.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:44:04.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:44:04.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:44:04.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.405312 -999.00  +23.30  11.29     10   -9.20 1 1 1 1 1   888    0 33.80 62.16 ----- 10.1 11.3 355.8 14.9 28.9 -28.1 27.8 -28.1 27.5 -27.1 28.1 -27.4
2025-11-03T11:44:04.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:44:04.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:44:04.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.405312
2025-11-03T11:44:04.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:44:04.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:44:04.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:44:04.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:44:04.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:44:04.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:43:43', tmtdew=39.73, humidity=5.9, cloud=0.0, wind=16.2, temperature=23.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:43:38.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:44:04.234 [DEBUG] [Thread-115190] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:44:04.290 [DEBUG] [Thread-115193 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:44:04.328 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:44:04.340 [DEBUG] [Thread-115194] [transport.py] [_log()] starting thread (client mode): 0xed67970
2025-11-03T11:44:04.340 [DEBUG] [Thread-115194] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:44:04.356 [DEBUG] [Thread-115194] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:44:04.356 [INFO] [Thread-115194] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:44:04.363 [DEBUG] [Thread-115194] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:44:04.363 [DEBUG] [Thread-115194] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:44:04.363 [DEBUG] [Thread-115194] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:44:04.364 [DEBUG] [Thread-115194] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:44:04.364 [DEBUG] [Thread-115194] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:44:04.364 [DEBUG] [Thread-115194] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:44:04.364 [DEBUG] [Thread-115194] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:44:04.364 [DEBUG] [Thread-115194] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:44:04.364 [DEBUG] [Thread-115194] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:44:04.364 [DEBUG] [Thread-115194] [transport.py] [_log()] client lang: <none>
2025-11-03T11:44:04.364 [DEBUG] [Thread-115194] [transport.py] [_log()] server lang: <none>
2025-11-03T11:44:04.365 [DEBUG] [Thread-115194] [transport.py] [_log()] kex follows: False
2025-11-03T11:44:04.365 [DEBUG] [Thread-115194] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:44:04.365 [DEBUG] [Thread-115194] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:44:04.365 [DEBUG] [Thread-115194] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:44:04.365 [DEBUG] [Thread-115194] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:44:04.365 [DEBUG] [Thread-115194] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:44:04.365 [DEBUG] [Thread-115194] [transport.py] [_log()] Compression: none
2025-11-03T11:44:04.365 [DEBUG] [Thread-115194] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:44:04.424 [DEBUG] [Thread-115194] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:44:04.425 [DEBUG] [Thread-115194] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:44:04.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:44:04.426 [DEBUG] [Thread-115194] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:44:04.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:44:04.483 [DEBUG] [Thread-115194] [transport.py] [_log()] userauth is OK
2025-11-03T11:44:04.484 [DEBUG] [Thread-115194] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:44:04.484 [DEBUG] [Thread-115194] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:44:04.484 [DEBUG] [Thread-115194] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:44:04.484 [DEBUG] [Thread-115194] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:44:04.504 [INFO] [Thread-115194] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:44:04.505 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:44:04.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:44:05.414 [DEBUG] [Thread-115194] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:44:05.414 [DEBUG] [Thread-115194] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:44:05.461 [DEBUG] [Thread-115194] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:44:05.461 [DEBUG] [Thread-115194] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:44:05.472 [DEBUG] [Thread-115194] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:44:05.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:44:05.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:44:05.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:44:05.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:44:05.495 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:44:05.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:44:05.504 [DEBUG] [Thread-115194] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:44:19.331 [DEBUG] [Thread-115196 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:44:34.186 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:44:34.187 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:44:34.364 [DEBUG] [Thread-115197 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:44:35.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:44:35.526 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:44:35.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:44:36.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 44, 16), 39.63, 5.95, 0.0, 16.27, 23.14, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:44:36.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:44:16
2025-11-03T11:44:36.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:44:36.465 [DEBUG] [Thread-115198] [transport.py] [_log()] starting thread (client mode): 0xed37370
2025-11-03T11:44:36.465 [DEBUG] [Thread-115198] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:44:36.486 [DEBUG] [Thread-115198] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:44:36.486 [INFO] [Thread-115198] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:44:36.489 [DEBUG] [Thread-115198] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:44:36.489 [DEBUG] [Thread-115198] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:44:36.489 [DEBUG] [Thread-115198] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:44:36.489 [DEBUG] [Thread-115198] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:44:36.489 [DEBUG] [Thread-115198] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:44:36.489 [DEBUG] [Thread-115198] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:44:36.489 [DEBUG] [Thread-115198] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:44:36.489 [DEBUG] [Thread-115198] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:44:36.489 [DEBUG] [Thread-115198] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:44:36.489 [DEBUG] [Thread-115198] [transport.py] [_log()] client lang: <none>
2025-11-03T11:44:36.489 [DEBUG] [Thread-115198] [transport.py] [_log()] server lang: <none>
2025-11-03T11:44:36.489 [DEBUG] [Thread-115198] [transport.py] [_log()] kex follows: False
2025-11-03T11:44:36.489 [DEBUG] [Thread-115198] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:44:36.489 [DEBUG] [Thread-115198] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:44:36.489 [DEBUG] [Thread-115198] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:44:36.489 [DEBUG] [Thread-115198] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:44:36.489 [DEBUG] [Thread-115198] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:44:36.489 [DEBUG] [Thread-115198] [transport.py] [_log()] Compression: none
2025-11-03T11:44:36.489 [DEBUG] [Thread-115198] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:44:36.510 [DEBUG] [Thread-115198] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:44:36.511 [DEBUG] [Thread-115198] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:44:36.512 [DEBUG] [Thread-115198] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:44:36.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:44:36.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:44:36.514 [DEBUG] [Thread-115198] [transport.py] [_log()] userauth is OK
2025-11-03T11:44:36.515 [DEBUG] [Thread-115198] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:44:36.515 [DEBUG] [Thread-115198] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:44:36.515 [DEBUG] [Thread-115198] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:44:36.515 [DEBUG] [Thread-115198] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:44:36.534 [INFO] [Thread-115198] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:44:36.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:44:37.193 [DEBUG] [Thread-115198] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:44:37.194 [DEBUG] [Thread-115198] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:44:37.194 [DEBUG] [Thread-115198] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:44:37.235 [DEBUG] [Thread-115198] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:44:37.235 [DEBUG] [Thread-115198] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:44:37.238 [DEBUG] [Thread-115198] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:44:37.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:44:37.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:44:37.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:44:37.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:44:37.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:44:37.269 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:44:37.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:44:37.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:44:37.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:44:37.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.405660 -999.00  +23.20  19.30     10   -9.10 1 1 1 1 1   888    0 34.01 62.27 ----- 15.0 19.3 15.4 22.8 28.9 -29.6 27.9 -28.5 27.4 -27.7 28.1 -29.1
2025-11-03T11:44:37.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:44:37.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:44:37.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.405660
2025-11-03T11:44:37.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:44:37.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:44:37.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:44:37.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:44:37.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:44:37.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:44:16', tmtdew=39.63, humidity=5.95, cloud=0.0, wind=16.27, temperature=23.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:44:09.024', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:44:37.271 [DEBUG] [Thread-115198] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:44:37.356 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:44:37.368 [DEBUG] [Thread-115201] [transport.py] [_log()] starting thread (client mode): 0xedc4250
2025-11-03T11:44:37.368 [DEBUG] [Thread-115201] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:44:37.382 [DEBUG] [Thread-115201] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:44:37.382 [INFO] [Thread-115201] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:44:37.390 [DEBUG] [Thread-115201] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:44:37.390 [DEBUG] [Thread-115201] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:44:37.390 [DEBUG] [Thread-115201] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:44:37.390 [DEBUG] [Thread-115201] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:44:37.390 [DEBUG] [Thread-115201] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:44:37.390 [DEBUG] [Thread-115201] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:44:37.390 [DEBUG] [Thread-115201] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:44:37.390 [DEBUG] [Thread-115201] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:44:37.391 [DEBUG] [Thread-115201] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:44:37.391 [DEBUG] [Thread-115201] [transport.py] [_log()] client lang: <none>
2025-11-03T11:44:37.391 [DEBUG] [Thread-115201] [transport.py] [_log()] server lang: <none>
2025-11-03T11:44:37.391 [DEBUG] [Thread-115201] [transport.py] [_log()] kex follows: False
2025-11-03T11:44:37.391 [DEBUG] [Thread-115201] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:44:37.391 [DEBUG] [Thread-115201] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:44:37.391 [DEBUG] [Thread-115201] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:44:37.391 [DEBUG] [Thread-115201] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:44:37.391 [DEBUG] [Thread-115201] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:44:37.391 [DEBUG] [Thread-115201] [transport.py] [_log()] Compression: none
2025-11-03T11:44:37.391 [DEBUG] [Thread-115201] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:44:37.450 [DEBUG] [Thread-115201] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:44:37.451 [DEBUG] [Thread-115201] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:44:37.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:44:37.452 [DEBUG] [Thread-115201] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:44:37.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:44:37.505 [DEBUG] [Thread-115201] [transport.py] [_log()] userauth is OK
2025-11-03T11:44:37.505 [DEBUG] [Thread-115201] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:44:37.505 [DEBUG] [Thread-115201] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:44:37.505 [DEBUG] [Thread-115201] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:44:37.506 [DEBUG] [Thread-115201] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:44:37.525 [INFO] [Thread-115201] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:44:37.525 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:44:37.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:44:38.405 [DEBUG] [Thread-115201] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:44:38.405 [DEBUG] [Thread-115201] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:44:38.453 [DEBUG] [Thread-115201] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:44:38.454 [DEBUG] [Thread-115201] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:44:38.463 [DEBUG] [Thread-115201] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:44:38.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:44:38.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:44:38.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:44:38.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:44:38.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:44:38.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:44:38.503 [DEBUG] [Thread-115201] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:44:49.401 [DEBUG] [Thread-115203 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:44:57.794 [DEBUG] [Thread-115204 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:45:04.443 [DEBUG] [Thread-115205 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:45:08.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:45:08.525 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:45:08.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:45:09.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 44, 48), 40.2, 5.9, 0.0, 21.46, 23.37, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:45:09.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:44:48
2025-11-03T11:45:09.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:45:09.451 [DEBUG] [Thread-115206] [transport.py] [_log()] starting thread (client mode): 0x81c8460
2025-11-03T11:45:09.451 [DEBUG] [Thread-115206] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:45:09.471 [DEBUG] [Thread-115206] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:45:09.471 [INFO] [Thread-115206] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:45:09.473 [DEBUG] [Thread-115206] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:45:09.473 [DEBUG] [Thread-115206] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:45:09.473 [DEBUG] [Thread-115206] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:45:09.473 [DEBUG] [Thread-115206] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:45:09.473 [DEBUG] [Thread-115206] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:45:09.473 [DEBUG] [Thread-115206] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:45:09.473 [DEBUG] [Thread-115206] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:45:09.473 [DEBUG] [Thread-115206] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:45:09.473 [DEBUG] [Thread-115206] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:45:09.473 [DEBUG] [Thread-115206] [transport.py] [_log()] client lang: <none>
2025-11-03T11:45:09.473 [DEBUG] [Thread-115206] [transport.py] [_log()] server lang: <none>
2025-11-03T11:45:09.473 [DEBUG] [Thread-115206] [transport.py] [_log()] kex follows: False
2025-11-03T11:45:09.473 [DEBUG] [Thread-115206] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:45:09.473 [DEBUG] [Thread-115206] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:45:09.473 [DEBUG] [Thread-115206] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:45:09.473 [DEBUG] [Thread-115206] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:45:09.473 [DEBUG] [Thread-115206] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:45:09.473 [DEBUG] [Thread-115206] [transport.py] [_log()] Compression: none
2025-11-03T11:45:09.473 [DEBUG] [Thread-115206] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:45:09.487 [DEBUG] [Thread-115206] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:45:09.488 [DEBUG] [Thread-115206] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:45:09.489 [DEBUG] [Thread-115206] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:45:09.489 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:45:09.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:45:09.491 [DEBUG] [Thread-115206] [transport.py] [_log()] userauth is OK
2025-11-03T11:45:09.491 [DEBUG] [Thread-115206] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:45:09.491 [DEBUG] [Thread-115206] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:45:09.491 [DEBUG] [Thread-115206] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:45:09.492 [DEBUG] [Thread-115206] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:45:09.510 [INFO] [Thread-115206] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:45:09.512 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:45:11.268 [DEBUG] [Thread-115206] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:45:11.268 [DEBUG] [Thread-115206] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:45:11.269 [DEBUG] [Thread-115206] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:45:11.309 [DEBUG] [Thread-115206] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:45:11.309 [DEBUG] [Thread-115206] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:45:11.312 [DEBUG] [Thread-115206] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:45:11.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:45:11.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:45:11.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:45:11.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:45:11.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:45:11.366 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:45:11.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:45:11.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:45:11.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:45:11.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.406007 -999.00  +23.20  15.80     10   -8.90 1 1 1 1 1   888    0 34.36 70.24 ----- 12.8 15.8 13.0 29.9 29.0 -28.8 27.9 -28.4 27.5 -27.1 28.2 -27.8
2025-11-03T11:45:11.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:45:11.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:45:11.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.406007
2025-11-03T11:45:11.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:45:11.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:45:11.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:45:11.369 [DEBUG] [Thread-115206] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:45:11.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:45:11.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:45:11.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:44:48', tmtdew=40.2, humidity=5.9, cloud=0.0, wind=21.46, temperature=23.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:44:39.005', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:45:11.453 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:45:11.466 [DEBUG] [Thread-115209] [transport.py] [_log()] starting thread (client mode): 0xed05d20
2025-11-03T11:45:11.466 [DEBUG] [Thread-115209] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:45:11.482 [DEBUG] [Thread-115209] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:45:11.482 [INFO] [Thread-115209] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:45:11.490 [DEBUG] [Thread-115209] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:45:11.490 [DEBUG] [Thread-115209] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:45:11.490 [DEBUG] [Thread-115209] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:45:11.491 [DEBUG] [Thread-115209] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:45:11.491 [DEBUG] [Thread-115209] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:45:11.491 [DEBUG] [Thread-115209] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:45:11.491 [DEBUG] [Thread-115209] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:45:11.491 [DEBUG] [Thread-115209] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:45:11.491 [DEBUG] [Thread-115209] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:45:11.491 [DEBUG] [Thread-115209] [transport.py] [_log()] client lang: <none>
2025-11-03T11:45:11.491 [DEBUG] [Thread-115209] [transport.py] [_log()] server lang: <none>
2025-11-03T11:45:11.491 [DEBUG] [Thread-115209] [transport.py] [_log()] kex follows: False
2025-11-03T11:45:11.492 [DEBUG] [Thread-115209] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:45:11.492 [DEBUG] [Thread-115209] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:45:11.492 [DEBUG] [Thread-115209] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:45:11.492 [DEBUG] [Thread-115209] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:45:11.492 [DEBUG] [Thread-115209] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:45:11.492 [DEBUG] [Thread-115209] [transport.py] [_log()] Compression: none
2025-11-03T11:45:11.492 [DEBUG] [Thread-115209] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:45:11.548 [DEBUG] [Thread-115209] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:45:11.549 [DEBUG] [Thread-115209] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:45:11.550 [DEBUG] [Thread-115209] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:45:11.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:45:11.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:45:11.603 [DEBUG] [Thread-115209] [transport.py] [_log()] userauth is OK
2025-11-03T11:45:11.604 [DEBUG] [Thread-115209] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:45:11.604 [DEBUG] [Thread-115209] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:45:11.604 [DEBUG] [Thread-115209] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:45:11.604 [DEBUG] [Thread-115209] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:45:11.623 [INFO] [Thread-115209] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:45:11.624 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:45:11.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:45:12.509 [DEBUG] [Thread-115209] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:45:12.509 [DEBUG] [Thread-115209] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:45:12.557 [DEBUG] [Thread-115209] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:45:12.557 [DEBUG] [Thread-115209] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:45:12.567 [DEBUG] [Thread-115209] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:45:12.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:45:12.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:45:12.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:45:12.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:45:12.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:45:12.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:45:12.604 [DEBUG] [Thread-115209] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:45:19.474 [DEBUG] [Thread-115211 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:45:34.327 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:45:34.328 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:45:34.524 [DEBUG] [Thread-115212 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:45:42.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:45:42.626 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:45:42.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:45:43.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 45, 20), 40.12, 5.95, 0.0, 22.87, 23.45, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:45:43.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:45:20
2025-11-03T11:45:43.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:45:43.620 [DEBUG] [Thread-115213] [transport.py] [_log()] starting thread (client mode): 0x81cae30
2025-11-03T11:45:43.620 [DEBUG] [Thread-115213] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:45:43.640 [DEBUG] [Thread-115213] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:45:43.641 [INFO] [Thread-115213] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:45:43.644 [DEBUG] [Thread-115213] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:45:43.644 [DEBUG] [Thread-115213] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:45:43.644 [DEBUG] [Thread-115213] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:45:43.644 [DEBUG] [Thread-115213] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:45:43.644 [DEBUG] [Thread-115213] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:45:43.644 [DEBUG] [Thread-115213] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:45:43.644 [DEBUG] [Thread-115213] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:45:43.644 [DEBUG] [Thread-115213] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:45:43.644 [DEBUG] [Thread-115213] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:45:43.644 [DEBUG] [Thread-115213] [transport.py] [_log()] client lang: <none>
2025-11-03T11:45:43.644 [DEBUG] [Thread-115213] [transport.py] [_log()] server lang: <none>
2025-11-03T11:45:43.644 [DEBUG] [Thread-115213] [transport.py] [_log()] kex follows: False
2025-11-03T11:45:43.644 [DEBUG] [Thread-115213] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:45:43.644 [DEBUG] [Thread-115213] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:45:43.644 [DEBUG] [Thread-115213] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:45:43.644 [DEBUG] [Thread-115213] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:45:43.644 [DEBUG] [Thread-115213] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:45:43.644 [DEBUG] [Thread-115213] [transport.py] [_log()] Compression: none
2025-11-03T11:45:43.644 [DEBUG] [Thread-115213] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:45:43.663 [DEBUG] [Thread-115213] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:45:43.663 [DEBUG] [Thread-115213] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:45:43.663 [DEBUG] [Thread-115213] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:45:43.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:45:43.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:45:43.664 [DEBUG] [Thread-115213] [transport.py] [_log()] userauth is OK
2025-11-03T11:45:43.664 [DEBUG] [Thread-115213] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:45:43.664 [DEBUG] [Thread-115213] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:45:43.664 [DEBUG] [Thread-115213] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:45:43.664 [DEBUG] [Thread-115213] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:45:43.679 [INFO] [Thread-115213] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:45:43.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:45:44.252 [DEBUG] [Thread-115213] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:45:44.261 [DEBUG] [Thread-115213] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:45:44.261 [DEBUG] [Thread-115213] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:45:44.292 [DEBUG] [Thread-115213] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:45:44.292 [DEBUG] [Thread-115213] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:45:44.295 [DEBUG] [Thread-115213] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:45:44.306 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:45:44.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:45:44.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:45:44.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:45:44.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:45:44.312 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:45:44.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:45:44.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:45:44.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:45:44.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.406354 -999.00  +23.00  16.26     10   -9.10 1 1 1 1 1   888    0 34.48 72.39 ----- 18.0 16.3 335.1 23.4 29.1 -28.6 28.0 -27.9 27.6 -26.8 -999.0 -999.0
2025-11-03T11:45:44.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:45:44.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:45:44.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.406354
2025-11-03T11:45:44.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:45:44.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:45:44.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:45:44.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:45:44.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:45:44.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:45:20', tmtdew=40.12, humidity=5.95, cloud=0.0, wind=22.87, temperature=23.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:45:08.986', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:45:44.313 [DEBUG] [Thread-115213] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:45:44.390 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:45:44.403 [DEBUG] [Thread-115216] [transport.py] [_log()] starting thread (client mode): 0xed66320
2025-11-03T11:45:44.403 [DEBUG] [Thread-115216] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:45:44.417 [DEBUG] [Thread-115216] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:45:44.417 [INFO] [Thread-115216] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:45:44.428 [DEBUG] [Thread-115216] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:45:44.428 [DEBUG] [Thread-115216] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:45:44.428 [DEBUG] [Thread-115216] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:45:44.428 [DEBUG] [Thread-115216] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:45:44.428 [DEBUG] [Thread-115216] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:45:44.428 [DEBUG] [Thread-115216] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:45:44.428 [DEBUG] [Thread-115216] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:45:44.428 [DEBUG] [Thread-115216] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:45:44.428 [DEBUG] [Thread-115216] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:45:44.428 [DEBUG] [Thread-115216] [transport.py] [_log()] client lang: <none>
2025-11-03T11:45:44.428 [DEBUG] [Thread-115216] [transport.py] [_log()] server lang: <none>
2025-11-03T11:45:44.429 [DEBUG] [Thread-115216] [transport.py] [_log()] kex follows: False
2025-11-03T11:45:44.429 [DEBUG] [Thread-115216] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:45:44.429 [DEBUG] [Thread-115216] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:45:44.429 [DEBUG] [Thread-115216] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:45:44.429 [DEBUG] [Thread-115216] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:45:44.429 [DEBUG] [Thread-115216] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:45:44.429 [DEBUG] [Thread-115216] [transport.py] [_log()] Compression: none
2025-11-03T11:45:44.429 [DEBUG] [Thread-115216] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:45:44.484 [DEBUG] [Thread-115216] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:45:44.484 [DEBUG] [Thread-115216] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:45:44.484 [DEBUG] [Thread-115216] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:45:44.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:45:44.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:45:44.541 [DEBUG] [Thread-115216] [transport.py] [_log()] userauth is OK
2025-11-03T11:45:44.541 [DEBUG] [Thread-115216] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:45:44.541 [DEBUG] [Thread-115216] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:45:44.541 [DEBUG] [Thread-115216] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:45:44.541 [DEBUG] [Thread-115216] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:45:44.555 [INFO] [Thread-115216] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:45:44.555 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:45:44.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:45:45.389 [DEBUG] [Thread-115216] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:45:45.389 [DEBUG] [Thread-115216] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:45:45.437 [DEBUG] [Thread-115216] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:45:45.438 [DEBUG] [Thread-115216] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:45:45.447 [DEBUG] [Thread-115216] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:45:45.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:45:45.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:45:45.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:45:45.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:45:45.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:45:45.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:45:45.483 [DEBUG] [Thread-115216] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:45:49.554 [DEBUG] [Thread-115218 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:45:57.833 [DEBUG] [Thread-115219 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:46:04.598 [DEBUG] [Thread-115220 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:46:15.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:46:15.507 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:46:15.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:46:16.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 45, 53), 40.43, 5.75, 0.0, 27.81, 23.68, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:46:16.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:45:53
2025-11-03T11:46:16.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:46:16.477 [DEBUG] [Thread-115221] [transport.py] [_log()] starting thread (client mode): 0xed37670
2025-11-03T11:46:16.477 [DEBUG] [Thread-115221] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:46:16.494 [DEBUG] [Thread-115221] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:46:16.494 [INFO] [Thread-115221] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:46:16.497 [DEBUG] [Thread-115221] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:46:16.497 [DEBUG] [Thread-115221] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:46:16.497 [DEBUG] [Thread-115221] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:46:16.497 [DEBUG] [Thread-115221] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:46:16.497 [DEBUG] [Thread-115221] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:46:16.497 [DEBUG] [Thread-115221] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:46:16.497 [DEBUG] [Thread-115221] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:46:16.497 [DEBUG] [Thread-115221] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:46:16.497 [DEBUG] [Thread-115221] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:46:16.497 [DEBUG] [Thread-115221] [transport.py] [_log()] client lang: <none>
2025-11-03T11:46:16.497 [DEBUG] [Thread-115221] [transport.py] [_log()] server lang: <none>
2025-11-03T11:46:16.497 [DEBUG] [Thread-115221] [transport.py] [_log()] kex follows: False
2025-11-03T11:46:16.497 [DEBUG] [Thread-115221] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:46:16.497 [DEBUG] [Thread-115221] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:46:16.497 [DEBUG] [Thread-115221] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:46:16.497 [DEBUG] [Thread-115221] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:46:16.497 [DEBUG] [Thread-115221] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:46:16.498 [DEBUG] [Thread-115221] [transport.py] [_log()] Compression: none
2025-11-03T11:46:16.498 [DEBUG] [Thread-115221] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:46:16.521 [DEBUG] [Thread-115221] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:46:16.521 [DEBUG] [Thread-115221] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:46:16.521 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:46:16.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:46:16.522 [DEBUG] [Thread-115221] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:46:16.522 [DEBUG] [Thread-115221] [transport.py] [_log()] userauth is OK
2025-11-03T11:46:16.522 [DEBUG] [Thread-115221] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:46:16.522 [DEBUG] [Thread-115221] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:46:16.522 [DEBUG] [Thread-115221] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:46:16.522 [DEBUG] [Thread-115221] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:46:16.532 [INFO] [Thread-115221] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:46:16.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:46:17.141 [DEBUG] [Thread-115221] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:46:17.141 [DEBUG] [Thread-115221] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:46:17.141 [DEBUG] [Thread-115221] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:46:17.182 [DEBUG] [Thread-115221] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:46:17.182 [DEBUG] [Thread-115221] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:46:17.185 [DEBUG] [Thread-115221] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:46:17.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:46:17.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:46:17.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:46:17.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:46:17.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:46:17.201 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:46:17.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:46:17.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:46:17.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:46:17.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.406701 -999.00  +23.50  22.14     10   -9.00 1 1 1 1 1   888    0 34.12 67.54 ----- 25.3 22.1 350.1 31.5 29.0 -31.1 27.9 -28.8 27.5 -28.6 28.2 -28.1
2025-11-03T11:46:17.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:46:17.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:46:17.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.406701
2025-11-03T11:46:17.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:46:17.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:46:17.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:46:17.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:46:17.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:46:17.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:45:53', tmtdew=40.43, humidity=5.75, cloud=0.0, wind=27.81, temperature=23.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:45:38.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:46:17.201 [DEBUG] [Thread-115221] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:46:17.275 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:46:17.289 [DEBUG] [Thread-115224] [transport.py] [_log()] starting thread (client mode): 0x81cb2e0
2025-11-03T11:46:17.289 [DEBUG] [Thread-115224] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:46:17.306 [DEBUG] [Thread-115224] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:46:17.306 [INFO] [Thread-115224] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:46:17.316 [DEBUG] [Thread-115224] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:46:17.316 [DEBUG] [Thread-115224] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:46:17.317 [DEBUG] [Thread-115224] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:46:17.317 [DEBUG] [Thread-115224] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:46:17.317 [DEBUG] [Thread-115224] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:46:17.317 [DEBUG] [Thread-115224] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:46:17.317 [DEBUG] [Thread-115224] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:46:17.317 [DEBUG] [Thread-115224] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:46:17.317 [DEBUG] [Thread-115224] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:46:17.317 [DEBUG] [Thread-115224] [transport.py] [_log()] client lang: <none>
2025-11-03T11:46:17.317 [DEBUG] [Thread-115224] [transport.py] [_log()] server lang: <none>
2025-11-03T11:46:17.317 [DEBUG] [Thread-115224] [transport.py] [_log()] kex follows: False
2025-11-03T11:46:17.317 [DEBUG] [Thread-115224] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:46:17.317 [DEBUG] [Thread-115224] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:46:17.317 [DEBUG] [Thread-115224] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:46:17.317 [DEBUG] [Thread-115224] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:46:17.317 [DEBUG] [Thread-115224] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:46:17.317 [DEBUG] [Thread-115224] [transport.py] [_log()] Compression: none
2025-11-03T11:46:17.317 [DEBUG] [Thread-115224] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:46:17.377 [DEBUG] [Thread-115224] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:46:17.378 [DEBUG] [Thread-115224] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:46:17.378 [DEBUG] [Thread-115224] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:46:17.379 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:46:17.379 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:46:17.438 [DEBUG] [Thread-115224] [transport.py] [_log()] userauth is OK
2025-11-03T11:46:17.438 [DEBUG] [Thread-115224] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:46:17.438 [DEBUG] [Thread-115224] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:46:17.438 [DEBUG] [Thread-115224] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:46:17.438 [DEBUG] [Thread-115224] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:46:17.452 [INFO] [Thread-115224] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:46:17.452 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:46:17.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:46:18.355 [DEBUG] [Thread-115224] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:46:18.355 [DEBUG] [Thread-115224] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:46:18.404 [DEBUG] [Thread-115224] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:46:18.404 [DEBUG] [Thread-115224] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:46:18.413 [DEBUG] [Thread-115224] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:46:18.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:46:18.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:46:18.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:46:18.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:46:18.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:46:18.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:46:18.444 [DEBUG] [Thread-115224] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:46:19.631 [DEBUG] [Thread-115226 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:46:34.469 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:46:34.470 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:46:34.670 [DEBUG] [Thread-115227 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:46:48.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:46:48.467 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:46:48.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:46:49.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 46, 25), 39.95, 5.93, 0.0, 20.75, 23.35, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:46:49.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:46:25
2025-11-03T11:46:49.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:46:49.431 [DEBUG] [Thread-115228] [transport.py] [_log()] starting thread (client mode): 0x81c8910
2025-11-03T11:46:49.432 [DEBUG] [Thread-115228] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:46:49.451 [DEBUG] [Thread-115228] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:46:49.451 [INFO] [Thread-115228] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:46:49.454 [DEBUG] [Thread-115228] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:46:49.454 [DEBUG] [Thread-115228] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:46:49.454 [DEBUG] [Thread-115228] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:46:49.454 [DEBUG] [Thread-115228] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:46:49.454 [DEBUG] [Thread-115228] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:46:49.455 [DEBUG] [Thread-115228] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:46:49.455 [DEBUG] [Thread-115228] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:46:49.455 [DEBUG] [Thread-115228] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:46:49.455 [DEBUG] [Thread-115228] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:46:49.455 [DEBUG] [Thread-115228] [transport.py] [_log()] client lang: <none>
2025-11-03T11:46:49.455 [DEBUG] [Thread-115228] [transport.py] [_log()] server lang: <none>
2025-11-03T11:46:49.455 [DEBUG] [Thread-115228] [transport.py] [_log()] kex follows: False
2025-11-03T11:46:49.455 [DEBUG] [Thread-115228] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:46:49.455 [DEBUG] [Thread-115228] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:46:49.455 [DEBUG] [Thread-115228] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:46:49.455 [DEBUG] [Thread-115228] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:46:49.455 [DEBUG] [Thread-115228] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:46:49.455 [DEBUG] [Thread-115228] [transport.py] [_log()] Compression: none
2025-11-03T11:46:49.455 [DEBUG] [Thread-115228] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:46:49.474 [DEBUG] [Thread-115228] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:46:49.474 [DEBUG] [Thread-115228] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:46:49.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:46:49.475 [DEBUG] [Thread-115228] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:46:49.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:46:49.477 [DEBUG] [Thread-115228] [transport.py] [_log()] userauth is OK
2025-11-03T11:46:49.478 [DEBUG] [Thread-115228] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:46:49.478 [DEBUG] [Thread-115228] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:46:49.478 [DEBUG] [Thread-115228] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:46:49.478 [DEBUG] [Thread-115228] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:46:49.502 [INFO] [Thread-115228] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:46:49.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:46:49.717 [DEBUG] [Thread-115230 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:46:50.138 [DEBUG] [Thread-115228] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:46:50.138 [DEBUG] [Thread-115228] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:46:50.139 [DEBUG] [Thread-115228] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:46:50.179 [DEBUG] [Thread-115228] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:46:50.179 [DEBUG] [Thread-115228] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:46:50.183 [DEBUG] [Thread-115228] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:46:50.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:46:50.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:46:50.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:46:50.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:46:50.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:46:50.209 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:46:50.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:46:50.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:46:50.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:46:50.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.407396 -999.00  +24.10  24.97     10   -8.30 1 1 1 1 1   888    0 33.67 58.97 ----- 21.6 25.0 18.6 30.6 28.9 -27.7 27.6 -28.7 27.5 -26.4 27.8 -33.6
2025-11-03T11:46:50.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:46:50.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:46:50.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.407396
2025-11-03T11:46:50.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:46:50.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:46:50.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:46:50.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:46:50.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:46:50.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:46:25', tmtdew=39.95, humidity=5.93, cloud=0.0, wind=20.75, temperature=23.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:46:39.014', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:46:50.212 [DEBUG] [Thread-115228] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:46:50.300 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:46:50.313 [DEBUG] [Thread-115232] [transport.py] [_log()] starting thread (client mode): 0xedb1f30
2025-11-03T11:46:50.313 [DEBUG] [Thread-115232] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:46:50.329 [DEBUG] [Thread-115232] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:46:50.329 [INFO] [Thread-115232] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:46:50.337 [DEBUG] [Thread-115232] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:46:50.337 [DEBUG] [Thread-115232] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:46:50.337 [DEBUG] [Thread-115232] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:46:50.337 [DEBUG] [Thread-115232] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:46:50.337 [DEBUG] [Thread-115232] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:46:50.337 [DEBUG] [Thread-115232] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:46:50.337 [DEBUG] [Thread-115232] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:46:50.337 [DEBUG] [Thread-115232] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:46:50.337 [DEBUG] [Thread-115232] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:46:50.337 [DEBUG] [Thread-115232] [transport.py] [_log()] client lang: <none>
2025-11-03T11:46:50.337 [DEBUG] [Thread-115232] [transport.py] [_log()] server lang: <none>
2025-11-03T11:46:50.338 [DEBUG] [Thread-115232] [transport.py] [_log()] kex follows: False
2025-11-03T11:46:50.338 [DEBUG] [Thread-115232] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:46:50.338 [DEBUG] [Thread-115232] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:46:50.338 [DEBUG] [Thread-115232] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:46:50.338 [DEBUG] [Thread-115232] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:46:50.338 [DEBUG] [Thread-115232] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:46:50.338 [DEBUG] [Thread-115232] [transport.py] [_log()] Compression: none
2025-11-03T11:46:50.338 [DEBUG] [Thread-115232] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:46:50.396 [DEBUG] [Thread-115232] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:46:50.397 [DEBUG] [Thread-115232] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:46:50.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:46:50.398 [DEBUG] [Thread-115232] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:46:50.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:46:50.454 [DEBUG] [Thread-115232] [transport.py] [_log()] userauth is OK
2025-11-03T11:46:50.455 [DEBUG] [Thread-115232] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:46:50.455 [DEBUG] [Thread-115232] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:46:50.455 [DEBUG] [Thread-115232] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:46:50.455 [DEBUG] [Thread-115232] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:46:50.490 [INFO] [Thread-115232] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:46:50.490 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:46:50.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:46:51.367 [DEBUG] [Thread-115232] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:46:51.368 [DEBUG] [Thread-115232] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:46:51.416 [DEBUG] [Thread-115232] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:46:51.417 [DEBUG] [Thread-115232] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:46:51.426 [DEBUG] [Thread-115232] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:46:51.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:46:51.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:46:51.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:46:51.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:46:51.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:46:51.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:46:51.462 [DEBUG] [Thread-115232] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:46:57.864 [DEBUG] [Thread-115234 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:47:04.757 [DEBUG] [Thread-115235 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:47:19.814 [DEBUG] [Thread-115236 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:47:21.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:47:21.480 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:47:21.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:47:22.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 46, 57), 40.09, 6.0, 0.0, 23.13, 23.19, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:47:22.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:46:57
2025-11-03T11:47:22.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:47:22.457 [DEBUG] [Thread-115237] [transport.py] [_log()] starting thread (client mode): 0xed35d50
2025-11-03T11:47:22.457 [DEBUG] [Thread-115237] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:47:22.478 [DEBUG] [Thread-115237] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:47:22.478 [INFO] [Thread-115237] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:47:22.481 [DEBUG] [Thread-115237] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:47:22.481 [DEBUG] [Thread-115237] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:47:22.481 [DEBUG] [Thread-115237] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:47:22.481 [DEBUG] [Thread-115237] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:47:22.481 [DEBUG] [Thread-115237] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:47:22.481 [DEBUG] [Thread-115237] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:47:22.481 [DEBUG] [Thread-115237] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:47:22.481 [DEBUG] [Thread-115237] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:47:22.481 [DEBUG] [Thread-115237] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:47:22.481 [DEBUG] [Thread-115237] [transport.py] [_log()] client lang: <none>
2025-11-03T11:47:22.481 [DEBUG] [Thread-115237] [transport.py] [_log()] server lang: <none>
2025-11-03T11:47:22.481 [DEBUG] [Thread-115237] [transport.py] [_log()] kex follows: False
2025-11-03T11:47:22.481 [DEBUG] [Thread-115237] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:47:22.481 [DEBUG] [Thread-115237] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:47:22.481 [DEBUG] [Thread-115237] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:47:22.481 [DEBUG] [Thread-115237] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:47:22.481 [DEBUG] [Thread-115237] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:47:22.481 [DEBUG] [Thread-115237] [transport.py] [_log()] Compression: none
2025-11-03T11:47:22.481 [DEBUG] [Thread-115237] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:47:22.494 [DEBUG] [Thread-115237] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:47:22.494 [DEBUG] [Thread-115237] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:47:22.494 [DEBUG] [Thread-115237] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:47:22.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:47:22.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:47:22.495 [DEBUG] [Thread-115237] [transport.py] [_log()] userauth is OK
2025-11-03T11:47:22.495 [DEBUG] [Thread-115237] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:47:22.495 [DEBUG] [Thread-115237] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:47:22.495 [DEBUG] [Thread-115237] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:47:22.495 [DEBUG] [Thread-115237] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:47:22.510 [INFO] [Thread-115237] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:47:22.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:47:23.118 [DEBUG] [Thread-115237] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:47:23.118 [DEBUG] [Thread-115237] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:47:23.118 [DEBUG] [Thread-115237] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:47:23.159 [DEBUG] [Thread-115237] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:47:23.159 [DEBUG] [Thread-115237] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:47:23.162 [DEBUG] [Thread-115237] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:47:23.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:47:23.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:47:23.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:47:23.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:47:23.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:47:23.186 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:47:23.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:47:23.187 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:47:23.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:47:23.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.407743 -999.00  +24.50  21.98     10   -8.20 1 1 1 1 1   888    0 34.16 59.65 ----- 22.7 22.0 24.9 31.4 29.0 -28.2 27.9 -29.0 27.6 -26.6 28.1 -27.8
2025-11-03T11:47:23.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:47:23.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:47:23.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.407743
2025-11-03T11:47:23.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:47:23.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:47:23.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:47:23.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:47:23.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:47:23.195 [DEBUG] [Thread-115237] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:47:23.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:46:57', tmtdew=40.09, humidity=6.0, cloud=0.0, wind=23.13, temperature=23.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:47:08.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:47:23.280 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:47:23.293 [DEBUG] [Thread-115240] [transport.py] [_log()] starting thread (client mode): 0xedb3f40
2025-11-03T11:47:23.294 [DEBUG] [Thread-115240] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:47:23.309 [DEBUG] [Thread-115240] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:47:23.309 [INFO] [Thread-115240] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:47:23.317 [DEBUG] [Thread-115240] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:47:23.317 [DEBUG] [Thread-115240] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:47:23.317 [DEBUG] [Thread-115240] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:47:23.317 [DEBUG] [Thread-115240] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:47:23.317 [DEBUG] [Thread-115240] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:47:23.317 [DEBUG] [Thread-115240] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:47:23.317 [DEBUG] [Thread-115240] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:47:23.317 [DEBUG] [Thread-115240] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:47:23.318 [DEBUG] [Thread-115240] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:47:23.318 [DEBUG] [Thread-115240] [transport.py] [_log()] client lang: <none>
2025-11-03T11:47:23.318 [DEBUG] [Thread-115240] [transport.py] [_log()] server lang: <none>
2025-11-03T11:47:23.318 [DEBUG] [Thread-115240] [transport.py] [_log()] kex follows: False
2025-11-03T11:47:23.318 [DEBUG] [Thread-115240] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:47:23.318 [DEBUG] [Thread-115240] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:47:23.318 [DEBUG] [Thread-115240] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:47:23.318 [DEBUG] [Thread-115240] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:47:23.318 [DEBUG] [Thread-115240] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:47:23.318 [DEBUG] [Thread-115240] [transport.py] [_log()] Compression: none
2025-11-03T11:47:23.318 [DEBUG] [Thread-115240] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:47:23.377 [DEBUG] [Thread-115240] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:47:23.387 [DEBUG] [Thread-115240] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:47:23.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:47:23.388 [DEBUG] [Thread-115240] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:47:23.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:47:23.433 [DEBUG] [Thread-115240] [transport.py] [_log()] userauth is OK
2025-11-03T11:47:23.433 [DEBUG] [Thread-115240] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:47:23.434 [DEBUG] [Thread-115240] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:47:23.434 [DEBUG] [Thread-115240] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:47:23.434 [DEBUG] [Thread-115240] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:47:23.452 [INFO] [Thread-115240] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:47:23.453 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:47:23.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:47:24.301 [DEBUG] [Thread-115240] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:47:24.301 [DEBUG] [Thread-115240] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:47:24.349 [DEBUG] [Thread-115240] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:47:24.349 [DEBUG] [Thread-115240] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:47:24.358 [DEBUG] [Thread-115240] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:47:24.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:47:24.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:47:24.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:47:24.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:47:24.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:47:24.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:47:24.390 [DEBUG] [Thread-115240] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:47:34.610 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:47:34.611 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:47:34.847 [DEBUG] [Thread-115242 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:47:49.896 [DEBUG] [Thread-115243 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:47:54.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:47:54.412 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:47:54.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:47:55.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 47, 30), 40.22, 5.98, 0.0, 24.56, 23.55, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:47:55.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:47:30
2025-11-03T11:47:55.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:47:55.358 [DEBUG] [Thread-115244] [transport.py] [_log()] starting thread (client mode): 0x81cb8e0
2025-11-03T11:47:55.359 [DEBUG] [Thread-115244] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:47:55.381 [DEBUG] [Thread-115244] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:47:55.381 [INFO] [Thread-115244] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:47:55.383 [DEBUG] [Thread-115244] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:47:55.383 [DEBUG] [Thread-115244] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:47:55.383 [DEBUG] [Thread-115244] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:47:55.383 [DEBUG] [Thread-115244] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:47:55.383 [DEBUG] [Thread-115244] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:47:55.383 [DEBUG] [Thread-115244] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:47:55.384 [DEBUG] [Thread-115244] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:47:55.384 [DEBUG] [Thread-115244] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:47:55.384 [DEBUG] [Thread-115244] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:47:55.384 [DEBUG] [Thread-115244] [transport.py] [_log()] client lang: <none>
2025-11-03T11:47:55.384 [DEBUG] [Thread-115244] [transport.py] [_log()] server lang: <none>
2025-11-03T11:47:55.384 [DEBUG] [Thread-115244] [transport.py] [_log()] kex follows: False
2025-11-03T11:47:55.384 [DEBUG] [Thread-115244] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:47:55.384 [DEBUG] [Thread-115244] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:47:55.384 [DEBUG] [Thread-115244] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:47:55.384 [DEBUG] [Thread-115244] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:47:55.384 [DEBUG] [Thread-115244] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:47:55.384 [DEBUG] [Thread-115244] [transport.py] [_log()] Compression: none
2025-11-03T11:47:55.385 [DEBUG] [Thread-115244] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:47:55.403 [DEBUG] [Thread-115244] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:47:55.404 [DEBUG] [Thread-115244] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:47:55.404 [DEBUG] [Thread-115244] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:47:55.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:47:55.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:47:55.407 [DEBUG] [Thread-115244] [transport.py] [_log()] userauth is OK
2025-11-03T11:47:55.407 [DEBUG] [Thread-115244] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:47:55.407 [DEBUG] [Thread-115244] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:47:55.407 [DEBUG] [Thread-115244] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:47:55.408 [DEBUG] [Thread-115244] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:47:55.431 [INFO] [Thread-115244] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:47:55.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:47:56.072 [DEBUG] [Thread-115244] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:47:56.072 [DEBUG] [Thread-115244] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:47:56.073 [DEBUG] [Thread-115244] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:47:56.113 [DEBUG] [Thread-115244] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:47:56.113 [DEBUG] [Thread-115244] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:47:56.116 [DEBUG] [Thread-115244] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:47:56.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:47:56.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:47:56.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:47:56.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:47:56.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:47:56.150 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:47:56.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:47:56.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:47:56.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:47:56.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.408090 -999.00  +24.30  22.54     10   -8.70 1 1 1 1 1   888    0 33.51 64.59 ----- 19.9 22.5 9.2 35.9 29.0 -30.0 28.1 -27.1 27.6 -28.8 28.4 -27.6
2025-11-03T11:47:56.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:47:56.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:47:56.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.408090
2025-11-03T11:47:56.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:47:56.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:47:56.153 [DEBUG] [Thread-115244] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:47:56.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:47:56.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:47:56.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:47:56.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:47:30', tmtdew=40.22, humidity=5.98, cloud=0.0, wind=24.56, temperature=23.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:47:38.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:47:56.236 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:47:56.247 [DEBUG] [Thread-115247] [transport.py] [_log()] starting thread (client mode): 0xed5cf70
2025-11-03T11:47:56.248 [DEBUG] [Thread-115247] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:47:56.263 [DEBUG] [Thread-115247] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:47:56.263 [INFO] [Thread-115247] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:47:56.270 [DEBUG] [Thread-115247] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:47:56.271 [DEBUG] [Thread-115247] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:47:56.271 [DEBUG] [Thread-115247] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:47:56.271 [DEBUG] [Thread-115247] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:47:56.271 [DEBUG] [Thread-115247] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:47:56.271 [DEBUG] [Thread-115247] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:47:56.271 [DEBUG] [Thread-115247] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:47:56.271 [DEBUG] [Thread-115247] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:47:56.271 [DEBUG] [Thread-115247] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:47:56.271 [DEBUG] [Thread-115247] [transport.py] [_log()] client lang: <none>
2025-11-03T11:47:56.271 [DEBUG] [Thread-115247] [transport.py] [_log()] server lang: <none>
2025-11-03T11:47:56.271 [DEBUG] [Thread-115247] [transport.py] [_log()] kex follows: False
2025-11-03T11:47:56.271 [DEBUG] [Thread-115247] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:47:56.271 [DEBUG] [Thread-115247] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:47:56.271 [DEBUG] [Thread-115247] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:47:56.271 [DEBUG] [Thread-115247] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:47:56.271 [DEBUG] [Thread-115247] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:47:56.271 [DEBUG] [Thread-115247] [transport.py] [_log()] Compression: none
2025-11-03T11:47:56.271 [DEBUG] [Thread-115247] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:47:56.327 [DEBUG] [Thread-115247] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:47:56.328 [DEBUG] [Thread-115247] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:47:56.329 [DEBUG] [Thread-115247] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:47:56.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:47:56.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:47:56.384 [DEBUG] [Thread-115247] [transport.py] [_log()] userauth is OK
2025-11-03T11:47:56.384 [DEBUG] [Thread-115247] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:47:56.385 [DEBUG] [Thread-115247] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:47:56.385 [DEBUG] [Thread-115247] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:47:56.385 [DEBUG] [Thread-115247] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:47:56.404 [INFO] [Thread-115247] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:47:56.404 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:47:56.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:47:57.237 [DEBUG] [Thread-115247] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:47:57.237 [DEBUG] [Thread-115247] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:47:57.285 [DEBUG] [Thread-115247] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:47:57.285 [DEBUG] [Thread-115247] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:47:57.294 [DEBUG] [Thread-115247] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:47:57.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:47:57.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:47:57.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:47:57.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:47:57.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:47:57.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:47:57.330 [DEBUG] [Thread-115247] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:47:57.905 [DEBUG] [Thread-115249 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:48:04.933 [DEBUG] [Thread-115250 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:48:19.968 [DEBUG] [Thread-115251 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:48:27.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:48:27.347 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:48:27.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:48:27.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 48, 2), 40.64, 5.78, 0.0, 23.52, 23.58, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:48:27.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:48:02
2025-11-03T11:48:28.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:48:28.267 [DEBUG] [Thread-115252] [transport.py] [_log()] starting thread (client mode): 0xed36d70
2025-11-03T11:48:28.267 [DEBUG] [Thread-115252] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:48:28.287 [DEBUG] [Thread-115252] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:48:28.287 [INFO] [Thread-115252] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:48:28.290 [DEBUG] [Thread-115252] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:48:28.291 [DEBUG] [Thread-115252] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:48:28.291 [DEBUG] [Thread-115252] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:48:28.291 [DEBUG] [Thread-115252] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:48:28.291 [DEBUG] [Thread-115252] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:48:28.291 [DEBUG] [Thread-115252] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:48:28.291 [DEBUG] [Thread-115252] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:48:28.291 [DEBUG] [Thread-115252] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:48:28.291 [DEBUG] [Thread-115252] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:48:28.291 [DEBUG] [Thread-115252] [transport.py] [_log()] client lang: <none>
2025-11-03T11:48:28.291 [DEBUG] [Thread-115252] [transport.py] [_log()] server lang: <none>
2025-11-03T11:48:28.291 [DEBUG] [Thread-115252] [transport.py] [_log()] kex follows: False
2025-11-03T11:48:28.291 [DEBUG] [Thread-115252] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:48:28.291 [DEBUG] [Thread-115252] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:48:28.291 [DEBUG] [Thread-115252] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:48:28.292 [DEBUG] [Thread-115252] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:48:28.300 [DEBUG] [Thread-115252] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:48:28.301 [DEBUG] [Thread-115252] [transport.py] [_log()] Compression: none
2025-11-03T11:48:28.301 [DEBUG] [Thread-115252] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:48:28.320 [DEBUG] [Thread-115252] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:48:28.321 [DEBUG] [Thread-115252] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:48:28.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:48:28.322 [DEBUG] [Thread-115252] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:48:28.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:48:28.324 [DEBUG] [Thread-115252] [transport.py] [_log()] userauth is OK
2025-11-03T11:48:28.324 [DEBUG] [Thread-115252] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:48:28.324 [DEBUG] [Thread-115252] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:48:28.324 [DEBUG] [Thread-115252] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:48:28.324 [DEBUG] [Thread-115252] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:48:28.361 [INFO] [Thread-115252] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:48:28.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:48:29.013 [DEBUG] [Thread-115252] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:48:29.013 [DEBUG] [Thread-115252] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:48:29.013 [DEBUG] [Thread-115252] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:48:29.054 [DEBUG] [Thread-115252] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:48:29.054 [DEBUG] [Thread-115252] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:48:29.056 [DEBUG] [Thread-115252] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:48:29.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:48:29.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:48:29.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:48:29.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:48:29.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:48:29.084 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:48:29.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:48:29.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:48:29.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:48:29.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.408437 -999.00  +24.00  16.86     10   -8.40 1 1 1 1 1   888    0 33.78 63.24 ----- 19.8 16.9 20.9 28.7 29.0 -28.6 28.0 -28.0 27.6 -27.0 28.2 -27.2
2025-11-03T11:48:29.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:48:29.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:48:29.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.408437
2025-11-03T11:48:29.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:48:29.086 [DEBUG] [Thread-115252] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:48:29.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:48:29.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:48:29.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:48:29.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:48:29.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:48:02', tmtdew=40.64, humidity=5.78, cloud=0.0, wind=23.52, temperature=23.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:48:08.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:48:29.168 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:48:29.180 [DEBUG] [Thread-115255] [transport.py] [_log()] starting thread (client mode): 0xedb2e90
2025-11-03T11:48:29.180 [DEBUG] [Thread-115255] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:48:29.195 [DEBUG] [Thread-115255] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:48:29.195 [INFO] [Thread-115255] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:48:29.203 [DEBUG] [Thread-115255] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:48:29.203 [DEBUG] [Thread-115255] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:48:29.204 [DEBUG] [Thread-115255] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:48:29.204 [DEBUG] [Thread-115255] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:48:29.204 [DEBUG] [Thread-115255] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:48:29.204 [DEBUG] [Thread-115255] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:48:29.204 [DEBUG] [Thread-115255] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:48:29.204 [DEBUG] [Thread-115255] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:48:29.204 [DEBUG] [Thread-115255] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:48:29.204 [DEBUG] [Thread-115255] [transport.py] [_log()] client lang: <none>
2025-11-03T11:48:29.204 [DEBUG] [Thread-115255] [transport.py] [_log()] server lang: <none>
2025-11-03T11:48:29.204 [DEBUG] [Thread-115255] [transport.py] [_log()] kex follows: False
2025-11-03T11:48:29.204 [DEBUG] [Thread-115255] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:48:29.204 [DEBUG] [Thread-115255] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:48:29.204 [DEBUG] [Thread-115255] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:48:29.204 [DEBUG] [Thread-115255] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:48:29.205 [DEBUG] [Thread-115255] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:48:29.205 [DEBUG] [Thread-115255] [transport.py] [_log()] Compression: none
2025-11-03T11:48:29.205 [DEBUG] [Thread-115255] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:48:29.264 [DEBUG] [Thread-115255] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:48:29.265 [DEBUG] [Thread-115255] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:48:29.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:48:29.266 [DEBUG] [Thread-115255] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:48:29.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:48:29.322 [DEBUG] [Thread-115255] [transport.py] [_log()] userauth is OK
2025-11-03T11:48:29.323 [DEBUG] [Thread-115255] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:48:29.323 [DEBUG] [Thread-115255] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:48:29.323 [DEBUG] [Thread-115255] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:48:29.323 [DEBUG] [Thread-115255] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:48:29.341 [INFO] [Thread-115255] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:48:29.342 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:48:29.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:48:30.215 [DEBUG] [Thread-115255] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:48:30.215 [DEBUG] [Thread-115255] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:48:30.263 [DEBUG] [Thread-115255] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:48:30.263 [DEBUG] [Thread-115255] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:48:30.273 [DEBUG] [Thread-115255] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:48:30.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:48:30.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:48:30.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:48:30.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:48:30.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:48:30.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:48:30.308 [DEBUG] [Thread-115255] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:48:34.751 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:48:34.753 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:48:35.012 [DEBUG] [Thread-115257 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:48:50.062 [DEBUG] [Thread-115258 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:48:57.958 [DEBUG] [Thread-115259 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:49:00.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:49:00.331 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:49:00.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:49:00.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 48, 34), 40.12, 5.86, 0.0, 18.49, 23.6, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:49:00.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:48:34
2025-11-03T11:49:01.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:49:01.271 [DEBUG] [Thread-115260] [transport.py] [_log()] starting thread (client mode): 0xed41c30
2025-11-03T11:49:01.271 [DEBUG] [Thread-115260] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:49:01.285 [DEBUG] [Thread-115260] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:49:01.285 [INFO] [Thread-115260] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:49:01.288 [DEBUG] [Thread-115260] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:49:01.288 [DEBUG] [Thread-115260] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:49:01.288 [DEBUG] [Thread-115260] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:49:01.288 [DEBUG] [Thread-115260] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:49:01.288 [DEBUG] [Thread-115260] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:49:01.288 [DEBUG] [Thread-115260] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:49:01.288 [DEBUG] [Thread-115260] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:49:01.288 [DEBUG] [Thread-115260] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:49:01.288 [DEBUG] [Thread-115260] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:49:01.288 [DEBUG] [Thread-115260] [transport.py] [_log()] client lang: <none>
2025-11-03T11:49:01.288 [DEBUG] [Thread-115260] [transport.py] [_log()] server lang: <none>
2025-11-03T11:49:01.288 [DEBUG] [Thread-115260] [transport.py] [_log()] kex follows: False
2025-11-03T11:49:01.288 [DEBUG] [Thread-115260] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:49:01.288 [DEBUG] [Thread-115260] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:49:01.288 [DEBUG] [Thread-115260] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:49:01.289 [DEBUG] [Thread-115260] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:49:01.289 [DEBUG] [Thread-115260] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:49:01.289 [DEBUG] [Thread-115260] [transport.py] [_log()] Compression: none
2025-11-03T11:49:01.289 [DEBUG] [Thread-115260] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:49:01.305 [DEBUG] [Thread-115260] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:49:01.305 [DEBUG] [Thread-115260] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:49:01.306 [DEBUG] [Thread-115260] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:49:01.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:49:01.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:49:01.307 [DEBUG] [Thread-115260] [transport.py] [_log()] userauth is OK
2025-11-03T11:49:01.308 [DEBUG] [Thread-115260] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:49:01.308 [DEBUG] [Thread-115260] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:49:01.308 [DEBUG] [Thread-115260] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:49:01.308 [DEBUG] [Thread-115260] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:49:01.326 [INFO] [Thread-115260] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:49:01.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:49:01.967 [DEBUG] [Thread-115260] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:49:01.967 [DEBUG] [Thread-115260] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:49:01.968 [DEBUG] [Thread-115260] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:49:02.008 [DEBUG] [Thread-115260] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:49:02.008 [DEBUG] [Thread-115260] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:49:02.011 [DEBUG] [Thread-115260] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:49:02.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:49:02.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:49:02.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:49:02.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:49:02.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:49:02.029 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:49:02.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:49:02.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:49:02.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:49:02.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.408785 -999.00  +24.00  17.42     10   -8.30 1 1 1 1 1   888    0 34.15 57.17 ----- 18.9 17.4 25.4 26.5 29.1 -28.4 27.9 -29.8 27.6 -27.5 28.4 -31.4
2025-11-03T11:49:02.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:49:02.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:49:02.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.408785
2025-11-03T11:49:02.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:49:02.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:49:02.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:49:02.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:49:02.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:49:02.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:48:34', tmtdew=40.12, humidity=5.86, cloud=0.0, wind=18.49, temperature=23.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:48:39.024', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:49:02.030 [DEBUG] [Thread-115260] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:49:02.102 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:49:02.114 [DEBUG] [Thread-115263] [transport.py] [_log()] starting thread (client mode): 0xed2eda0
2025-11-03T11:49:02.114 [DEBUG] [Thread-115263] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:49:02.132 [DEBUG] [Thread-115263] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:49:02.132 [INFO] [Thread-115263] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:49:02.140 [DEBUG] [Thread-115263] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:49:02.140 [DEBUG] [Thread-115263] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:49:02.140 [DEBUG] [Thread-115263] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:49:02.140 [DEBUG] [Thread-115263] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:49:02.140 [DEBUG] [Thread-115263] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:49:02.140 [DEBUG] [Thread-115263] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:49:02.140 [DEBUG] [Thread-115263] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:49:02.140 [DEBUG] [Thread-115263] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:49:02.141 [DEBUG] [Thread-115263] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:49:02.141 [DEBUG] [Thread-115263] [transport.py] [_log()] client lang: <none>
2025-11-03T11:49:02.141 [DEBUG] [Thread-115263] [transport.py] [_log()] server lang: <none>
2025-11-03T11:49:02.141 [DEBUG] [Thread-115263] [transport.py] [_log()] kex follows: False
2025-11-03T11:49:02.141 [DEBUG] [Thread-115263] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:49:02.141 [DEBUG] [Thread-115263] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:49:02.141 [DEBUG] [Thread-115263] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:49:02.141 [DEBUG] [Thread-115263] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:49:02.141 [DEBUG] [Thread-115263] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:49:02.141 [DEBUG] [Thread-115263] [transport.py] [_log()] Compression: none
2025-11-03T11:49:02.141 [DEBUG] [Thread-115263] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:49:02.197 [DEBUG] [Thread-115263] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:49:02.197 [DEBUG] [Thread-115263] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:49:02.197 [DEBUG] [Thread-115263] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:49:02.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:49:02.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:49:02.252 [DEBUG] [Thread-115263] [transport.py] [_log()] userauth is OK
2025-11-03T11:49:02.252 [DEBUG] [Thread-115263] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:49:02.252 [DEBUG] [Thread-115263] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:49:02.252 [DEBUG] [Thread-115263] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:49:02.252 [DEBUG] [Thread-115263] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:49:02.266 [INFO] [Thread-115263] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:49:02.267 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:49:02.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:49:03.100 [DEBUG] [Thread-115263] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:49:03.100 [DEBUG] [Thread-115263] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:49:03.149 [DEBUG] [Thread-115263] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:49:03.149 [DEBUG] [Thread-115263] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:49:03.159 [DEBUG] [Thread-115263] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:49:03.169 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:49:03.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:49:03.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:49:03.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:49:03.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:49:03.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:49:03.197 [DEBUG] [Thread-115263] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:49:05.097 [DEBUG] [Thread-115265 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:49:20.147 [DEBUG] [Thread-115266 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:49:33.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:49:33.219 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:49:33.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:49:33.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 49, 6), 39.71, 6.03, 0.0, 20.54, 23.34, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:49:33.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:49:06
2025-11-03T11:49:34.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:49:34.195 [DEBUG] [Thread-115267] [transport.py] [_log()] starting thread (client mode): 0x81c9420
2025-11-03T11:49:34.195 [DEBUG] [Thread-115267] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:49:34.215 [DEBUG] [Thread-115267] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:49:34.215 [INFO] [Thread-115267] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:49:34.218 [DEBUG] [Thread-115267] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:49:34.218 [DEBUG] [Thread-115267] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:49:34.218 [DEBUG] [Thread-115267] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:49:34.218 [DEBUG] [Thread-115267] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:49:34.218 [DEBUG] [Thread-115267] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:49:34.218 [DEBUG] [Thread-115267] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:49:34.219 [DEBUG] [Thread-115267] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:49:34.219 [DEBUG] [Thread-115267] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:49:34.219 [DEBUG] [Thread-115267] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:49:34.219 [DEBUG] [Thread-115267] [transport.py] [_log()] client lang: <none>
2025-11-03T11:49:34.219 [DEBUG] [Thread-115267] [transport.py] [_log()] server lang: <none>
2025-11-03T11:49:34.219 [DEBUG] [Thread-115267] [transport.py] [_log()] kex follows: False
2025-11-03T11:49:34.219 [DEBUG] [Thread-115267] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:49:34.219 [DEBUG] [Thread-115267] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:49:34.219 [DEBUG] [Thread-115267] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:49:34.219 [DEBUG] [Thread-115267] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:49:34.219 [DEBUG] [Thread-115267] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:49:34.219 [DEBUG] [Thread-115267] [transport.py] [_log()] Compression: none
2025-11-03T11:49:34.219 [DEBUG] [Thread-115267] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:49:34.235 [DEBUG] [Thread-115267] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:49:34.235 [DEBUG] [Thread-115267] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:49:34.235 [DEBUG] [Thread-115267] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:49:34.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:49:34.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:49:34.276 [DEBUG] [Thread-115267] [transport.py] [_log()] userauth is OK
2025-11-03T11:49:34.276 [DEBUG] [Thread-115267] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:49:34.276 [DEBUG] [Thread-115267] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:49:34.276 [DEBUG] [Thread-115267] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:49:34.276 [DEBUG] [Thread-115267] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:49:34.295 [INFO] [Thread-115267] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:49:34.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:49:34.892 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:49:34.893 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:49:34.938 [DEBUG] [Thread-115267] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:49:34.938 [DEBUG] [Thread-115267] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:49:34.938 [DEBUG] [Thread-115267] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:49:34.979 [DEBUG] [Thread-115267] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:49:34.979 [DEBUG] [Thread-115267] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:49:34.981 [DEBUG] [Thread-115267] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:49:34.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:49:34.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:49:34.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:49:34.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:49:35.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:49:35.001 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:49:35.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:49:35.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:49:35.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:49:35.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.409132 -999.00  +24.30  17.45     10   -8.50 1 1 1 1 1   888    0 34.14 53.39 ----- 24.5 17.4 1.1 29.6 29.1 -28.3 28.1 -28.8 27.7 -27.4 28.4 -27.2
2025-11-03T11:49:35.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:49:35.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:49:35.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.409132
2025-11-03T11:49:35.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:49:35.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:49:35.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:49:35.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:49:35.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:49:35.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:49:06', tmtdew=39.71, humidity=6.03, cloud=0.0, wind=20.54, temperature=23.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:49:09.005', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:49:35.003 [DEBUG] [Thread-115267] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:49:35.075 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:49:35.086 [DEBUG] [Thread-115270] [transport.py] [_log()] starting thread (client mode): 0x81c9cc0
2025-11-03T11:49:35.086 [DEBUG] [Thread-115270] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:49:35.101 [DEBUG] [Thread-115270] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:49:35.101 [INFO] [Thread-115270] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:49:35.109 [DEBUG] [Thread-115270] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:49:35.109 [DEBUG] [Thread-115270] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:49:35.109 [DEBUG] [Thread-115270] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:49:35.109 [DEBUG] [Thread-115270] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:49:35.109 [DEBUG] [Thread-115270] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:49:35.109 [DEBUG] [Thread-115270] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:49:35.109 [DEBUG] [Thread-115270] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:49:35.109 [DEBUG] [Thread-115270] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:49:35.109 [DEBUG] [Thread-115270] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:49:35.109 [DEBUG] [Thread-115270] [transport.py] [_log()] client lang: <none>
2025-11-03T11:49:35.109 [DEBUG] [Thread-115270] [transport.py] [_log()] server lang: <none>
2025-11-03T11:49:35.109 [DEBUG] [Thread-115270] [transport.py] [_log()] kex follows: False
2025-11-03T11:49:35.109 [DEBUG] [Thread-115270] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:49:35.109 [DEBUG] [Thread-115270] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:49:35.109 [DEBUG] [Thread-115270] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:49:35.109 [DEBUG] [Thread-115270] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:49:35.109 [DEBUG] [Thread-115270] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:49:35.109 [DEBUG] [Thread-115270] [transport.py] [_log()] Compression: none
2025-11-03T11:49:35.109 [DEBUG] [Thread-115270] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:49:35.166 [DEBUG] [Thread-115270] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:49:35.166 [DEBUG] [Thread-115270] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:49:35.166 [DEBUG] [Thread-115270] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:49:35.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:49:35.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:49:35.183 [DEBUG] [Thread-115272 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:49:35.223 [DEBUG] [Thread-115270] [transport.py] [_log()] userauth is OK
2025-11-03T11:49:35.223 [DEBUG] [Thread-115270] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:49:35.223 [DEBUG] [Thread-115270] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:49:35.224 [DEBUG] [Thread-115270] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:49:35.224 [DEBUG] [Thread-115270] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:49:35.241 [INFO] [Thread-115270] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:49:35.242 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:49:35.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:49:36.062 [DEBUG] [Thread-115270] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:49:36.062 [DEBUG] [Thread-115270] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:49:36.110 [DEBUG] [Thread-115270] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:49:36.110 [DEBUG] [Thread-115270] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:49:36.118 [DEBUG] [Thread-115270] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:49:36.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:49:36.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:49:36.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:49:36.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:49:36.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:49:36.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:49:36.150 [DEBUG] [Thread-115270] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:49:50.220 [DEBUG] [Thread-115273 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:49:58.028 [DEBUG] [Thread-115274 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:50:05.257 [DEBUG] [Thread-115275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:50:06.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:50:06.173 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:50:06.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:50:06.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 49, 39), 39.76, 6.05, 0.0, 19.57, 23.45, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:50:06.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:49:39
2025-11-03T11:50:06.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:50:07.133 [DEBUG] [Thread-115276] [transport.py] [_log()] starting thread (client mode): 0xed5fdc0
2025-11-03T11:50:07.133 [DEBUG] [Thread-115276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:50:07.153 [DEBUG] [Thread-115276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:50:07.153 [INFO] [Thread-115276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:50:07.156 [DEBUG] [Thread-115276] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:50:07.157 [DEBUG] [Thread-115276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:50:07.157 [DEBUG] [Thread-115276] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:50:07.157 [DEBUG] [Thread-115276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:50:07.157 [DEBUG] [Thread-115276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:50:07.157 [DEBUG] [Thread-115276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:50:07.157 [DEBUG] [Thread-115276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:50:07.157 [DEBUG] [Thread-115276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:50:07.157 [DEBUG] [Thread-115276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:50:07.157 [DEBUG] [Thread-115276] [transport.py] [_log()] client lang: <none>
2025-11-03T11:50:07.157 [DEBUG] [Thread-115276] [transport.py] [_log()] server lang: <none>
2025-11-03T11:50:07.157 [DEBUG] [Thread-115276] [transport.py] [_log()] kex follows: False
2025-11-03T11:50:07.157 [DEBUG] [Thread-115276] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:50:07.157 [DEBUG] [Thread-115276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:50:07.158 [DEBUG] [Thread-115276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:50:07.158 [DEBUG] [Thread-115276] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:50:07.158 [DEBUG] [Thread-115276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:50:07.158 [DEBUG] [Thread-115276] [transport.py] [_log()] Compression: none
2025-11-03T11:50:07.158 [DEBUG] [Thread-115276] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:50:07.176 [DEBUG] [Thread-115276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:50:07.177 [DEBUG] [Thread-115276] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:50:07.178 [DEBUG] [Thread-115276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:50:07.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:50:07.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:50:07.180 [DEBUG] [Thread-115276] [transport.py] [_log()] userauth is OK
2025-11-03T11:50:07.181 [DEBUG] [Thread-115276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:50:07.181 [DEBUG] [Thread-115276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:50:07.181 [DEBUG] [Thread-115276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:50:07.181 [DEBUG] [Thread-115276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:50:07.195 [INFO] [Thread-115276] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:50:07.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:50:11.441 [DEBUG] [Thread-115276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:50:11.442 [DEBUG] [Thread-115276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:50:11.442 [DEBUG] [Thread-115276] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:50:11.483 [DEBUG] [Thread-115276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:50:11.483 [DEBUG] [Thread-115276] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:50:11.485 [DEBUG] [Thread-115276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:50:11.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:50:11.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:50:11.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:50:11.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:50:11.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:50:11.618 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:50:11.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:50:11.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:50:11.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:50:11.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.409132 -999.00  +24.30  17.45     10   -8.50 1 1 1 1 1   888    0 34.14 53.39 ----- 24.5 17.4 1.1 29.6 29.1 -28.3 28.1 -28.8 27.7 -27.4 28.4 -27.2
2025-11-03T11:50:11.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:50:11.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:50:11.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.409132
2025-11-03T11:50:11.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:50:11.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:50:11.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:50:11.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:50:11.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:50:11.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:49:39', tmtdew=39.76, humidity=6.05, cloud=0.0, wind=19.57, temperature=23.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:49:09.005', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:50:11.619 [DEBUG] [Thread-115276] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:50:11.693 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:50:11.706 [DEBUG] [Thread-115279] [transport.py] [_log()] starting thread (client mode): 0xed40310
2025-11-03T11:50:11.706 [DEBUG] [Thread-115279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:50:11.722 [DEBUG] [Thread-115279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:50:11.722 [INFO] [Thread-115279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:50:11.729 [DEBUG] [Thread-115279] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:50:11.729 [DEBUG] [Thread-115279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:50:11.729 [DEBUG] [Thread-115279] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:50:11.729 [DEBUG] [Thread-115279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:50:11.729 [DEBUG] [Thread-115279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:50:11.729 [DEBUG] [Thread-115279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:50:11.729 [DEBUG] [Thread-115279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:50:11.729 [DEBUG] [Thread-115279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:50:11.729 [DEBUG] [Thread-115279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:50:11.729 [DEBUG] [Thread-115279] [transport.py] [_log()] client lang: <none>
2025-11-03T11:50:11.729 [DEBUG] [Thread-115279] [transport.py] [_log()] server lang: <none>
2025-11-03T11:50:11.729 [DEBUG] [Thread-115279] [transport.py] [_log()] kex follows: False
2025-11-03T11:50:11.729 [DEBUG] [Thread-115279] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:50:11.729 [DEBUG] [Thread-115279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:50:11.729 [DEBUG] [Thread-115279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:50:11.729 [DEBUG] [Thread-115279] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:50:11.729 [DEBUG] [Thread-115279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:50:11.730 [DEBUG] [Thread-115279] [transport.py] [_log()] Compression: none
2025-11-03T11:50:11.730 [DEBUG] [Thread-115279] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:50:11.785 [DEBUG] [Thread-115279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:50:11.785 [DEBUG] [Thread-115279] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:50:11.786 [DEBUG] [Thread-115279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:50:11.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:50:11.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:50:11.842 [DEBUG] [Thread-115279] [transport.py] [_log()] userauth is OK
2025-11-03T11:50:11.842 [DEBUG] [Thread-115279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:50:11.843 [DEBUG] [Thread-115279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:50:11.843 [DEBUG] [Thread-115279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:50:11.843 [DEBUG] [Thread-115279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:50:11.860 [INFO] [Thread-115279] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:50:11.860 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:50:11.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:50:12.697 [DEBUG] [Thread-115279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:50:12.698 [DEBUG] [Thread-115279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:50:12.745 [DEBUG] [Thread-115279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:50:12.745 [DEBUG] [Thread-115279] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:50:12.754 [DEBUG] [Thread-115279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:50:12.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:50:12.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:50:12.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:50:12.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:50:12.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:50:12.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:50:12.785 [DEBUG] [Thread-115279] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:50:20.291 [DEBUG] [Thread-115281 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:50:35.034 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:50:35.035 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:50:35.354 [DEBUG] [Thread-115282 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:50:42.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:50:42.808 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:50:42.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:50:43.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 50, 11), 39.83, 6.01, 0.0, 15.3, 23.49, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:50:43.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:50:11
2025-11-03T11:50:43.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:50:43.762 [DEBUG] [Thread-115283] [transport.py] [_log()] starting thread (client mode): 0xed2da20
2025-11-03T11:50:43.762 [DEBUG] [Thread-115283] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:50:43.782 [DEBUG] [Thread-115283] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:50:43.783 [INFO] [Thread-115283] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:50:43.786 [DEBUG] [Thread-115283] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:50:43.786 [DEBUG] [Thread-115283] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:50:43.786 [DEBUG] [Thread-115283] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:50:43.786 [DEBUG] [Thread-115283] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:50:43.786 [DEBUG] [Thread-115283] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:50:43.786 [DEBUG] [Thread-115283] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:50:43.786 [DEBUG] [Thread-115283] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:50:43.786 [DEBUG] [Thread-115283] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:50:43.786 [DEBUG] [Thread-115283] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:50:43.786 [DEBUG] [Thread-115283] [transport.py] [_log()] client lang: <none>
2025-11-03T11:50:43.786 [DEBUG] [Thread-115283] [transport.py] [_log()] server lang: <none>
2025-11-03T11:50:43.787 [DEBUG] [Thread-115283] [transport.py] [_log()] kex follows: False
2025-11-03T11:50:43.787 [DEBUG] [Thread-115283] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:50:43.787 [DEBUG] [Thread-115283] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:50:43.787 [DEBUG] [Thread-115283] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:50:43.787 [DEBUG] [Thread-115283] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:50:43.787 [DEBUG] [Thread-115283] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:50:43.787 [DEBUG] [Thread-115283] [transport.py] [_log()] Compression: none
2025-11-03T11:50:43.787 [DEBUG] [Thread-115283] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:50:43.805 [DEBUG] [Thread-115283] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:50:43.806 [DEBUG] [Thread-115283] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:50:43.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:50:43.807 [DEBUG] [Thread-115283] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:50:43.808 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:50:43.809 [DEBUG] [Thread-115283] [transport.py] [_log()] userauth is OK
2025-11-03T11:50:43.809 [DEBUG] [Thread-115283] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:50:43.810 [DEBUG] [Thread-115283] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:50:43.810 [DEBUG] [Thread-115283] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:50:43.810 [DEBUG] [Thread-115283] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:50:43.835 [INFO] [Thread-115283] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:50:43.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:50:44.467 [DEBUG] [Thread-115283] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:50:44.467 [DEBUG] [Thread-115283] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:50:44.467 [DEBUG] [Thread-115283] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:50:44.508 [DEBUG] [Thread-115283] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:50:44.508 [DEBUG] [Thread-115283] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:50:44.510 [DEBUG] [Thread-115283] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:50:44.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:50:44.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:50:44.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:50:44.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:50:44.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:50:44.530 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:50:44.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:50:44.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:50:44.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:50:44.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.409479 -999.00  +24.00  15.10     10   -8.50 1 1 1 1 1   888    0 34.19 52.55 ----- 15.1 15.1 36.2 27.4 29.2 -28.5 28.1 -29.3 27.8 -27.6 28.4 -27.8
2025-11-03T11:50:44.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:50:44.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:50:44.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.409479
2025-11-03T11:50:44.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:50:44.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:50:44.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:50:44.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:50:44.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:50:44.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:50:11', tmtdew=39.83, humidity=6.01, cloud=0.0, wind=15.3, temperature=23.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:49:38.986', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:50:44.531 [DEBUG] [Thread-115283] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:50:44.607 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:50:44.620 [DEBUG] [Thread-115286] [transport.py] [_log()] starting thread (client mode): 0xed06500
2025-11-03T11:50:44.620 [DEBUG] [Thread-115286] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:50:44.635 [DEBUG] [Thread-115286] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:50:44.635 [INFO] [Thread-115286] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:50:44.644 [DEBUG] [Thread-115286] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:50:44.644 [DEBUG] [Thread-115286] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:50:44.644 [DEBUG] [Thread-115286] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:50:44.644 [DEBUG] [Thread-115286] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:50:44.644 [DEBUG] [Thread-115286] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:50:44.644 [DEBUG] [Thread-115286] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:50:44.644 [DEBUG] [Thread-115286] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:50:44.644 [DEBUG] [Thread-115286] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:50:44.644 [DEBUG] [Thread-115286] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:50:44.644 [DEBUG] [Thread-115286] [transport.py] [_log()] client lang: <none>
2025-11-03T11:50:44.644 [DEBUG] [Thread-115286] [transport.py] [_log()] server lang: <none>
2025-11-03T11:50:44.644 [DEBUG] [Thread-115286] [transport.py] [_log()] kex follows: False
2025-11-03T11:50:44.644 [DEBUG] [Thread-115286] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:50:44.644 [DEBUG] [Thread-115286] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:50:44.645 [DEBUG] [Thread-115286] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:50:44.645 [DEBUG] [Thread-115286] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:50:44.645 [DEBUG] [Thread-115286] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:50:44.645 [DEBUG] [Thread-115286] [transport.py] [_log()] Compression: none
2025-11-03T11:50:44.645 [DEBUG] [Thread-115286] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:50:44.700 [DEBUG] [Thread-115286] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:50:44.700 [DEBUG] [Thread-115286] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:50:44.700 [DEBUG] [Thread-115286] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:50:44.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:50:44.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:50:44.757 [DEBUG] [Thread-115286] [transport.py] [_log()] userauth is OK
2025-11-03T11:50:44.757 [DEBUG] [Thread-115286] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:50:44.757 [DEBUG] [Thread-115286] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:50:44.757 [DEBUG] [Thread-115286] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:50:44.757 [DEBUG] [Thread-115286] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:50:44.771 [INFO] [Thread-115286] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:50:44.771 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:50:44.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:50:45.595 [DEBUG] [Thread-115286] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:50:45.595 [DEBUG] [Thread-115286] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:50:45.643 [DEBUG] [Thread-115286] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:50:45.643 [DEBUG] [Thread-115286] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:50:45.651 [DEBUG] [Thread-115286] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:50:45.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:50:45.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:50:45.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:50:45.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:50:45.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:50:45.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:50:45.683 [DEBUG] [Thread-115286] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:50:50.398 [DEBUG] [Thread-115288 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:50:58.082 [DEBUG] [Thread-115289 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:51:05.439 [DEBUG] [Thread-115290 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:51:12.708 [DEBUG] [Thread-114807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:51:15.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:51:15.706 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:51:15.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:51:16.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 50, 43), 39.54, 6.06, 0.0, 19.55, 23.25, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:51:16.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:50:43
2025-11-03T11:51:16.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:51:16.655 [DEBUG] [Thread-115291] [transport.py] [_log()] starting thread (client mode): 0xed2ef80
2025-11-03T11:51:16.655 [DEBUG] [Thread-115291] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:51:16.675 [DEBUG] [Thread-115291] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:51:16.675 [INFO] [Thread-115291] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:51:16.678 [DEBUG] [Thread-115291] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:51:16.678 [DEBUG] [Thread-115291] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:51:16.678 [DEBUG] [Thread-115291] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:51:16.678 [DEBUG] [Thread-115291] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:51:16.678 [DEBUG] [Thread-115291] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:51:16.678 [DEBUG] [Thread-115291] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:51:16.678 [DEBUG] [Thread-115291] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:51:16.678 [DEBUG] [Thread-115291] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:51:16.679 [DEBUG] [Thread-115291] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:51:16.679 [DEBUG] [Thread-115291] [transport.py] [_log()] client lang: <none>
2025-11-03T11:51:16.679 [DEBUG] [Thread-115291] [transport.py] [_log()] server lang: <none>
2025-11-03T11:51:16.679 [DEBUG] [Thread-115291] [transport.py] [_log()] kex follows: False
2025-11-03T11:51:16.679 [DEBUG] [Thread-115291] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:51:16.679 [DEBUG] [Thread-115291] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:51:16.679 [DEBUG] [Thread-115291] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:51:16.679 [DEBUG] [Thread-115291] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:51:16.679 [DEBUG] [Thread-115291] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:51:16.679 [DEBUG] [Thread-115291] [transport.py] [_log()] Compression: none
2025-11-03T11:51:16.679 [DEBUG] [Thread-115291] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:51:16.694 [DEBUG] [Thread-115291] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:51:16.694 [DEBUG] [Thread-115291] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:51:16.694 [DEBUG] [Thread-115291] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:51:16.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:51:16.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:51:16.736 [DEBUG] [Thread-115291] [transport.py] [_log()] userauth is OK
2025-11-03T11:51:16.736 [DEBUG] [Thread-115291] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:51:16.736 [DEBUG] [Thread-115291] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:51:16.736 [DEBUG] [Thread-115291] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:51:16.736 [DEBUG] [Thread-115291] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:51:16.751 [INFO] [Thread-115291] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:51:16.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:51:17.395 [DEBUG] [Thread-115291] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:51:17.395 [DEBUG] [Thread-115291] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:51:17.395 [DEBUG] [Thread-115291] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:51:17.435 [DEBUG] [Thread-115291] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:51:17.435 [DEBUG] [Thread-115291] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:51:17.438 [DEBUG] [Thread-115291] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:51:17.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:51:17.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:51:17.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:51:17.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:51:17.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:51:17.455 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:51:17.455 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:51:17.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:51:17.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:51:17.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.410174 -999.00  +23.80  15.54     10   -8.60 1 1 1 1 1   888    0 33.47 49.50 ----- 14.4 15.5 337.5 21.3 29.3 -28.9 28.2 -28.5 27.8 -27.8 28.5 -27.8
2025-11-03T11:51:17.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:51:17.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:51:17.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.410174
2025-11-03T11:51:17.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:51:17.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:51:17.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:51:17.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:51:17.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:51:17.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:50:43', tmtdew=39.54, humidity=6.06, cloud=0.0, wind=19.55, temperature=23.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:50:39.034', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:51:17.456 [DEBUG] [Thread-115291] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:51:17.532 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:51:17.545 [DEBUG] [Thread-115294] [transport.py] [_log()] starting thread (client mode): 0xed43040
2025-11-03T11:51:17.545 [DEBUG] [Thread-115294] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:51:17.561 [DEBUG] [Thread-115294] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:51:17.561 [INFO] [Thread-115294] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:51:17.569 [DEBUG] [Thread-115294] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:51:17.569 [DEBUG] [Thread-115294] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:51:17.569 [DEBUG] [Thread-115294] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:51:17.569 [DEBUG] [Thread-115294] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:51:17.569 [DEBUG] [Thread-115294] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:51:17.569 [DEBUG] [Thread-115294] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:51:17.569 [DEBUG] [Thread-115294] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:51:17.569 [DEBUG] [Thread-115294] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:51:17.569 [DEBUG] [Thread-115294] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:51:17.569 [DEBUG] [Thread-115294] [transport.py] [_log()] client lang: <none>
2025-11-03T11:51:17.569 [DEBUG] [Thread-115294] [transport.py] [_log()] server lang: <none>
2025-11-03T11:51:17.569 [DEBUG] [Thread-115294] [transport.py] [_log()] kex follows: False
2025-11-03T11:51:17.569 [DEBUG] [Thread-115294] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:51:17.569 [DEBUG] [Thread-115294] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:51:17.569 [DEBUG] [Thread-115294] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:51:17.570 [DEBUG] [Thread-115294] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:51:17.570 [DEBUG] [Thread-115294] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:51:17.570 [DEBUG] [Thread-115294] [transport.py] [_log()] Compression: none
2025-11-03T11:51:17.570 [DEBUG] [Thread-115294] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:51:17.627 [DEBUG] [Thread-115294] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:51:17.627 [DEBUG] [Thread-115294] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:51:17.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:51:17.628 [DEBUG] [Thread-115294] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:51:17.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:51:17.687 [DEBUG] [Thread-115294] [transport.py] [_log()] userauth is OK
2025-11-03T11:51:17.688 [DEBUG] [Thread-115294] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:51:17.688 [DEBUG] [Thread-115294] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:51:17.688 [DEBUG] [Thread-115294] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:51:17.688 [DEBUG] [Thread-115294] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:51:17.709 [INFO] [Thread-115294] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:51:17.709 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:51:17.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:51:18.538 [DEBUG] [Thread-115294] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:51:18.538 [DEBUG] [Thread-115294] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:51:18.586 [DEBUG] [Thread-115294] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:51:18.587 [DEBUG] [Thread-115294] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:51:18.595 [DEBUG] [Thread-115294] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:51:18.603 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:51:18.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:51:18.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:51:18.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:51:18.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:51:18.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:51:18.628 [DEBUG] [Thread-115294] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:51:20.476 [DEBUG] [Thread-115296 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:51:35.175 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:51:35.176 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:51:35.527 [DEBUG] [Thread-115297 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:51:48.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:51:48.650 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:51:48.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:51:49.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 51, 15), 39.55, 6.08, 0.0, 16.66, 23.43, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:51:49.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:51:15
2025-11-03T11:51:49.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:51:49.762 [DEBUG] [Thread-115298] [transport.py] [_log()] starting thread (client mode): 0xed5f850
2025-11-03T11:51:49.762 [DEBUG] [Thread-115298] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:51:49.776 [DEBUG] [Thread-115298] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:51:49.776 [INFO] [Thread-115298] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:51:49.780 [DEBUG] [Thread-115298] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:51:49.780 [DEBUG] [Thread-115298] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:51:49.780 [DEBUG] [Thread-115298] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:51:49.780 [DEBUG] [Thread-115298] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:51:49.780 [DEBUG] [Thread-115298] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:51:49.780 [DEBUG] [Thread-115298] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:51:49.780 [DEBUG] [Thread-115298] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:51:49.780 [DEBUG] [Thread-115298] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:51:49.780 [DEBUG] [Thread-115298] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:51:49.780 [DEBUG] [Thread-115298] [transport.py] [_log()] client lang: <none>
2025-11-03T11:51:49.780 [DEBUG] [Thread-115298] [transport.py] [_log()] server lang: <none>
2025-11-03T11:51:49.780 [DEBUG] [Thread-115298] [transport.py] [_log()] kex follows: False
2025-11-03T11:51:49.780 [DEBUG] [Thread-115298] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:51:49.780 [DEBUG] [Thread-115298] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:51:49.780 [DEBUG] [Thread-115298] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:51:49.780 [DEBUG] [Thread-115298] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:51:49.781 [DEBUG] [Thread-115298] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:51:49.781 [DEBUG] [Thread-115298] [transport.py] [_log()] Compression: none
2025-11-03T11:51:49.781 [DEBUG] [Thread-115298] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:51:49.796 [DEBUG] [Thread-115298] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:51:49.796 [DEBUG] [Thread-115298] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:51:49.796 [DEBUG] [Thread-115298] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:51:49.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:51:49.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:51:49.797 [DEBUG] [Thread-115298] [transport.py] [_log()] userauth is OK
2025-11-03T11:51:49.797 [DEBUG] [Thread-115298] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:51:49.797 [DEBUG] [Thread-115298] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:51:49.797 [DEBUG] [Thread-115298] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:51:49.797 [DEBUG] [Thread-115298] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:51:49.806 [INFO] [Thread-115298] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:51:49.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:51:50.467 [DEBUG] [Thread-115298] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:51:50.467 [DEBUG] [Thread-115298] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:51:50.467 [DEBUG] [Thread-115298] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:51:50.508 [DEBUG] [Thread-115298] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:51:50.508 [DEBUG] [Thread-115298] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:51:50.510 [DEBUG] [Thread-115298] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:51:50.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:51:50.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:51:50.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:51:50.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:51:50.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:51:50.528 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:51:50.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:51:50.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:51:50.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:51:50.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.410521 -999.00  +23.40  18.84     11   -8.70 1 1 1 1 1   888    0 33.56 48.00 ----- 20.1 18.8 6.1 25.5 29.2 -29.2 28.1 -28.7 27.8 -27.4 28.5 -29.4
2025-11-03T11:51:50.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:51:50.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:51:50.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.410521
2025-11-03T11:51:50.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:51:50.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:51:50.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:51:50.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:51:50.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:51:50.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:51:15', tmtdew=39.55, humidity=6.08, cloud=0.0, wind=16.66, temperature=23.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:51:09.014', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:51:50.530 [DEBUG] [Thread-115298] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:51:50.563 [DEBUG] [Thread-115301 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:51:50.604 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:51:50.615 [DEBUG] [Thread-115302] [transport.py] [_log()] starting thread (client mode): 0xed67160
2025-11-03T11:51:50.615 [DEBUG] [Thread-115302] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:51:50.629 [DEBUG] [Thread-115302] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:51:50.629 [INFO] [Thread-115302] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:51:50.637 [DEBUG] [Thread-115302] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:51:50.637 [DEBUG] [Thread-115302] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:51:50.637 [DEBUG] [Thread-115302] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:51:50.637 [DEBUG] [Thread-115302] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:51:50.637 [DEBUG] [Thread-115302] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:51:50.637 [DEBUG] [Thread-115302] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:51:50.637 [DEBUG] [Thread-115302] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:51:50.637 [DEBUG] [Thread-115302] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:51:50.637 [DEBUG] [Thread-115302] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:51:50.637 [DEBUG] [Thread-115302] [transport.py] [_log()] client lang: <none>
2025-11-03T11:51:50.637 [DEBUG] [Thread-115302] [transport.py] [_log()] server lang: <none>
2025-11-03T11:51:50.637 [DEBUG] [Thread-115302] [transport.py] [_log()] kex follows: False
2025-11-03T11:51:50.637 [DEBUG] [Thread-115302] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:51:50.637 [DEBUG] [Thread-115302] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:51:50.637 [DEBUG] [Thread-115302] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:51:50.637 [DEBUG] [Thread-115302] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:51:50.637 [DEBUG] [Thread-115302] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:51:50.637 [DEBUG] [Thread-115302] [transport.py] [_log()] Compression: none
2025-11-03T11:51:50.637 [DEBUG] [Thread-115302] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:51:50.694 [DEBUG] [Thread-115302] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:51:50.694 [DEBUG] [Thread-115302] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:51:50.694 [DEBUG] [Thread-115302] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:51:50.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:51:50.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:51:50.751 [DEBUG] [Thread-115302] [transport.py] [_log()] userauth is OK
2025-11-03T11:51:50.751 [DEBUG] [Thread-115302] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:51:50.751 [DEBUG] [Thread-115302] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:51:50.751 [DEBUG] [Thread-115302] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:51:50.751 [DEBUG] [Thread-115302] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:51:50.765 [INFO] [Thread-115302] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:51:50.765 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:51:50.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:51:51.637 [DEBUG] [Thread-115302] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:51:51.637 [DEBUG] [Thread-115302] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:51:51.686 [DEBUG] [Thread-115302] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:51:51.686 [DEBUG] [Thread-115302] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:51:51.694 [DEBUG] [Thread-115302] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:51:51.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:51:51.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:51:51.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:51:51.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:51:51.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:51:51.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:51:51.728 [DEBUG] [Thread-115302] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:51:58.129 [DEBUG] [Thread-115304 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:52:05.602 [DEBUG] [Thread-115305 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:52:20.636 [DEBUG] [Thread-115306 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:52:21.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:52:21.721 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:52:21.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:52:22.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 51, 48), 39.71, 5.96, 0.0, 14.1, 23.82, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:52:22.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:51:48
2025-11-03T11:52:22.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:52:22.669 [DEBUG] [Thread-115307] [transport.py] [_log()] starting thread (client mode): 0xed66bf0
2025-11-03T11:52:22.669 [DEBUG] [Thread-115307] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:52:22.691 [DEBUG] [Thread-115307] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:52:22.692 [INFO] [Thread-115307] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:52:22.701 [DEBUG] [Thread-115307] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:52:22.701 [DEBUG] [Thread-115307] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:52:22.702 [DEBUG] [Thread-115307] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:52:22.702 [DEBUG] [Thread-115307] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:52:22.702 [DEBUG] [Thread-115307] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:52:22.702 [DEBUG] [Thread-115307] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:52:22.702 [DEBUG] [Thread-115307] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:52:22.702 [DEBUG] [Thread-115307] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:52:22.702 [DEBUG] [Thread-115307] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:52:22.702 [DEBUG] [Thread-115307] [transport.py] [_log()] client lang: <none>
2025-11-03T11:52:22.702 [DEBUG] [Thread-115307] [transport.py] [_log()] server lang: <none>
2025-11-03T11:52:22.702 [DEBUG] [Thread-115307] [transport.py] [_log()] kex follows: False
2025-11-03T11:52:22.702 [DEBUG] [Thread-115307] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:52:22.702 [DEBUG] [Thread-115307] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:52:22.702 [DEBUG] [Thread-115307] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:52:22.702 [DEBUG] [Thread-115307] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:52:22.702 [DEBUG] [Thread-115307] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:52:22.702 [DEBUG] [Thread-115307] [transport.py] [_log()] Compression: none
2025-11-03T11:52:22.702 [DEBUG] [Thread-115307] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:52:22.721 [DEBUG] [Thread-115307] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:52:22.722 [DEBUG] [Thread-115307] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:52:22.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:52:22.723 [DEBUG] [Thread-115307] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:52:22.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:52:22.725 [DEBUG] [Thread-115307] [transport.py] [_log()] userauth is OK
2025-11-03T11:52:22.725 [DEBUG] [Thread-115307] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:52:22.726 [DEBUG] [Thread-115307] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:52:22.726 [DEBUG] [Thread-115307] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:52:22.726 [DEBUG] [Thread-115307] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:52:22.750 [INFO] [Thread-115307] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:52:22.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:52:23.419 [DEBUG] [Thread-115307] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:52:23.419 [DEBUG] [Thread-115307] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:52:23.420 [DEBUG] [Thread-115307] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:52:23.460 [DEBUG] [Thread-115307] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:52:23.460 [DEBUG] [Thread-115307] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:52:23.464 [DEBUG] [Thread-115307] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:52:23.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:52:23.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:52:23.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:52:23.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:52:23.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:52:23.487 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:52:23.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:52:23.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:52:23.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:52:23.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.410868 -999.00  +23.20  16.58     11   -8.70 1 1 1 1 1   888    0 33.27 38.17 ----- 17.8 16.6 22.8 21.1 29.2 -28.7 28.1 -28.2 27.8 -27.2 28.5 -27.4
2025-11-03T11:52:23.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:52:23.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:52:23.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.410868
2025-11-03T11:52:23.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:52:23.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:52:23.490 [DEBUG] [Thread-115307] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:52:23.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:52:23.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:52:23.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:52:23.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:51:48', tmtdew=39.71, humidity=5.96, cloud=0.0, wind=14.1, temperature=23.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:51:38.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:52:23.576 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:52:23.587 [DEBUG] [Thread-115310] [transport.py] [_log()] starting thread (client mode): 0xed5f490
2025-11-03T11:52:23.587 [DEBUG] [Thread-115310] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:52:23.603 [DEBUG] [Thread-115310] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:52:23.603 [INFO] [Thread-115310] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:52:23.611 [DEBUG] [Thread-115310] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:52:23.611 [DEBUG] [Thread-115310] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:52:23.611 [DEBUG] [Thread-115310] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:52:23.611 [DEBUG] [Thread-115310] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:52:23.611 [DEBUG] [Thread-115310] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:52:23.611 [DEBUG] [Thread-115310] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:52:23.611 [DEBUG] [Thread-115310] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:52:23.611 [DEBUG] [Thread-115310] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:52:23.611 [DEBUG] [Thread-115310] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:52:23.611 [DEBUG] [Thread-115310] [transport.py] [_log()] client lang: <none>
2025-11-03T11:52:23.611 [DEBUG] [Thread-115310] [transport.py] [_log()] server lang: <none>
2025-11-03T11:52:23.611 [DEBUG] [Thread-115310] [transport.py] [_log()] kex follows: False
2025-11-03T11:52:23.611 [DEBUG] [Thread-115310] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:52:23.611 [DEBUG] [Thread-115310] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:52:23.611 [DEBUG] [Thread-115310] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:52:23.611 [DEBUG] [Thread-115310] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:52:23.611 [DEBUG] [Thread-115310] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:52:23.611 [DEBUG] [Thread-115310] [transport.py] [_log()] Compression: none
2025-11-03T11:52:23.611 [DEBUG] [Thread-115310] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:52:23.669 [DEBUG] [Thread-115310] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:52:23.669 [DEBUG] [Thread-115310] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:52:23.669 [DEBUG] [Thread-115310] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:52:23.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:52:23.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:52:23.727 [DEBUG] [Thread-115310] [transport.py] [_log()] userauth is OK
2025-11-03T11:52:23.727 [DEBUG] [Thread-115310] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:52:23.727 [DEBUG] [Thread-115310] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:52:23.727 [DEBUG] [Thread-115310] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:52:23.727 [DEBUG] [Thread-115310] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:52:23.741 [INFO] [Thread-115310] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:52:23.742 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:52:23.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:52:24.608 [DEBUG] [Thread-115310] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:52:24.608 [DEBUG] [Thread-115310] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:52:24.656 [DEBUG] [Thread-115310] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:52:24.657 [DEBUG] [Thread-115310] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:52:24.665 [DEBUG] [Thread-115310] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:52:24.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:52:24.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:52:24.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:52:24.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:52:24.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:52:24.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:52:24.699 [DEBUG] [Thread-115310] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:52:35.316 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:52:35.317 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:52:35.680 [DEBUG] [Thread-115312 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:52:50.731 [DEBUG] [Thread-115313 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:52:54.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:52:54.722 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:52:54.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:52:55.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 52, 22), 40.11, 5.81, 0.0, 23.57, 24.11, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:52:55.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:52:22
2025-11-03T11:52:55.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:52:55.678 [DEBUG] [Thread-115314] [transport.py] [_log()] starting thread (client mode): 0xed04460
2025-11-03T11:52:55.678 [DEBUG] [Thread-115314] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:52:55.698 [DEBUG] [Thread-115314] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:52:55.698 [INFO] [Thread-115314] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:52:55.701 [DEBUG] [Thread-115314] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:52:55.701 [DEBUG] [Thread-115314] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:52:55.701 [DEBUG] [Thread-115314] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:52:55.701 [DEBUG] [Thread-115314] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:52:55.701 [DEBUG] [Thread-115314] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:52:55.701 [DEBUG] [Thread-115314] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:52:55.701 [DEBUG] [Thread-115314] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:52:55.701 [DEBUG] [Thread-115314] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:52:55.701 [DEBUG] [Thread-115314] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:52:55.701 [DEBUG] [Thread-115314] [transport.py] [_log()] client lang: <none>
2025-11-03T11:52:55.701 [DEBUG] [Thread-115314] [transport.py] [_log()] server lang: <none>
2025-11-03T11:52:55.701 [DEBUG] [Thread-115314] [transport.py] [_log()] kex follows: False
2025-11-03T11:52:55.701 [DEBUG] [Thread-115314] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:52:55.701 [DEBUG] [Thread-115314] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:52:55.701 [DEBUG] [Thread-115314] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:52:55.701 [DEBUG] [Thread-115314] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:52:55.701 [DEBUG] [Thread-115314] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:52:55.710 [DEBUG] [Thread-115314] [transport.py] [_log()] Compression: none
2025-11-03T11:52:55.711 [DEBUG] [Thread-115314] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:52:55.731 [DEBUG] [Thread-115314] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:52:55.732 [DEBUG] [Thread-115314] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:52:55.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:52:55.733 [DEBUG] [Thread-115314] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:52:55.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:52:55.735 [DEBUG] [Thread-115314] [transport.py] [_log()] userauth is OK
2025-11-03T11:52:55.735 [DEBUG] [Thread-115314] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:52:55.736 [DEBUG] [Thread-115314] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:52:55.736 [DEBUG] [Thread-115314] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:52:55.736 [DEBUG] [Thread-115314] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:52:55.760 [INFO] [Thread-115314] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:52:55.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:52:56.420 [DEBUG] [Thread-115314] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:52:56.420 [DEBUG] [Thread-115314] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:52:56.420 [DEBUG] [Thread-115314] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:52:56.461 [DEBUG] [Thread-115314] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:52:56.461 [DEBUG] [Thread-115314] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:52:56.463 [DEBUG] [Thread-115314] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:52:56.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:52:56.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:52:56.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:52:56.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:52:56.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:52:56.480 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:52:56.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:52:56.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:52:56.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:52:56.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.411215 -999.00  +23.30   9.89     11   -8.30 1 1 1 1 1   888    0 33.58 33.64 ----- 15.1 9.9 13.7 16.9 29.3 -27.9 28.1 -28.8 27.8 -26.5 28.5 -29.0
2025-11-03T11:52:56.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:52:56.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:52:56.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.411215
2025-11-03T11:52:56.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:52:56.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:52:56.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:52:56.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:52:56.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:52:56.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:52:22', tmtdew=40.11, humidity=5.81, cloud=0.0, wind=23.57, temperature=24.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:52:08.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:52:56.482 [DEBUG] [Thread-115314] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:52:56.556 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:52:56.567 [DEBUG] [Thread-115317] [transport.py] [_log()] starting thread (client mode): 0xed05150
2025-11-03T11:52:56.567 [DEBUG] [Thread-115317] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:52:56.582 [DEBUG] [Thread-115317] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:52:56.582 [INFO] [Thread-115317] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:52:56.590 [DEBUG] [Thread-115317] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:52:56.590 [DEBUG] [Thread-115317] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:52:56.590 [DEBUG] [Thread-115317] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:52:56.590 [DEBUG] [Thread-115317] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:52:56.590 [DEBUG] [Thread-115317] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:52:56.590 [DEBUG] [Thread-115317] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:52:56.590 [DEBUG] [Thread-115317] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:52:56.590 [DEBUG] [Thread-115317] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:52:56.590 [DEBUG] [Thread-115317] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:52:56.590 [DEBUG] [Thread-115317] [transport.py] [_log()] client lang: <none>
2025-11-03T11:52:56.590 [DEBUG] [Thread-115317] [transport.py] [_log()] server lang: <none>
2025-11-03T11:52:56.590 [DEBUG] [Thread-115317] [transport.py] [_log()] kex follows: False
2025-11-03T11:52:56.590 [DEBUG] [Thread-115317] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:52:56.590 [DEBUG] [Thread-115317] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:52:56.590 [DEBUG] [Thread-115317] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:52:56.590 [DEBUG] [Thread-115317] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:52:56.590 [DEBUG] [Thread-115317] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:52:56.590 [DEBUG] [Thread-115317] [transport.py] [_log()] Compression: none
2025-11-03T11:52:56.590 [DEBUG] [Thread-115317] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:52:56.648 [DEBUG] [Thread-115317] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:52:56.648 [DEBUG] [Thread-115317] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:52:56.648 [DEBUG] [Thread-115317] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:52:56.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:52:56.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:52:56.705 [DEBUG] [Thread-115317] [transport.py] [_log()] userauth is OK
2025-11-03T11:52:56.705 [DEBUG] [Thread-115317] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:52:56.705 [DEBUG] [Thread-115317] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:52:56.705 [DEBUG] [Thread-115317] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:52:56.706 [DEBUG] [Thread-115317] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:52:56.720 [INFO] [Thread-115317] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:52:56.720 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:52:56.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:52:57.587 [DEBUG] [Thread-115317] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:52:57.588 [DEBUG] [Thread-115317] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:52:57.635 [DEBUG] [Thread-115317] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:52:57.635 [DEBUG] [Thread-115317] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:52:57.643 [DEBUG] [Thread-115317] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:52:57.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:52:57.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:52:57.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:52:57.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:52:57.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:52:57.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:52:57.675 [DEBUG] [Thread-115317] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:52:58.321 [DEBUG] [Thread-115319 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:53:05.768 [DEBUG] [Thread-115320 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:53:20.825 [DEBUG] [Thread-115321 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:53:27.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:53:27.697 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:53:27.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:53:28.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 52, 55), 40.47, 5.72, 0.0, 18.39, 24.28, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:53:28.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:52:55
2025-11-03T11:53:28.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:53:28.738 [DEBUG] [Thread-115322] [transport.py] [_log()] starting thread (client mode): 0xed2eda0
2025-11-03T11:53:28.738 [DEBUG] [Thread-115322] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:53:28.759 [DEBUG] [Thread-115322] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:53:28.759 [INFO] [Thread-115322] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:53:28.762 [DEBUG] [Thread-115322] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:53:28.763 [DEBUG] [Thread-115322] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:53:28.763 [DEBUG] [Thread-115322] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:53:28.763 [DEBUG] [Thread-115322] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:53:28.763 [DEBUG] [Thread-115322] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:53:28.763 [DEBUG] [Thread-115322] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:53:28.763 [DEBUG] [Thread-115322] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:53:28.763 [DEBUG] [Thread-115322] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:53:28.763 [DEBUG] [Thread-115322] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:53:28.763 [DEBUG] [Thread-115322] [transport.py] [_log()] client lang: <none>
2025-11-03T11:53:28.763 [DEBUG] [Thread-115322] [transport.py] [_log()] server lang: <none>
2025-11-03T11:53:28.763 [DEBUG] [Thread-115322] [transport.py] [_log()] kex follows: False
2025-11-03T11:53:28.763 [DEBUG] [Thread-115322] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:53:28.763 [DEBUG] [Thread-115322] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:53:28.763 [DEBUG] [Thread-115322] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:53:28.763 [DEBUG] [Thread-115322] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:53:28.763 [DEBUG] [Thread-115322] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:53:28.763 [DEBUG] [Thread-115322] [transport.py] [_log()] Compression: none
2025-11-03T11:53:28.763 [DEBUG] [Thread-115322] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:53:28.779 [DEBUG] [Thread-115322] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:53:28.779 [DEBUG] [Thread-115322] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:53:28.779 [DEBUG] [Thread-115322] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:53:28.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:53:28.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:53:28.780 [DEBUG] [Thread-115322] [transport.py] [_log()] userauth is OK
2025-11-03T11:53:28.780 [DEBUG] [Thread-115322] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:53:28.780 [DEBUG] [Thread-115322] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:53:28.781 [DEBUG] [Thread-115322] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:53:28.781 [DEBUG] [Thread-115322] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:53:28.797 [INFO] [Thread-115322] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:53:28.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:53:29.448 [DEBUG] [Thread-115322] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:53:29.448 [DEBUG] [Thread-115322] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:53:29.448 [DEBUG] [Thread-115322] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:53:29.490 [DEBUG] [Thread-115322] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:53:29.490 [DEBUG] [Thread-115322] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:53:29.492 [DEBUG] [Thread-115322] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:53:29.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:53:29.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:53:29.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:53:29.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:53:29.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:53:29.510 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:53:29.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:53:29.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:53:29.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:53:29.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.411562 -999.00  +24.10  16.91     10   -8.70 1 1 1 1 1   888    0 32.71 28.53 ----- 15.6 16.9 351.3 24.4 29.3 -29.0 28.3 -27.0 27.8 -27.6 28.6 -26.6
2025-11-03T11:53:29.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:53:29.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:53:29.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.411562
2025-11-03T11:53:29.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:53:29.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:53:29.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:53:29.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:53:29.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:53:29.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:52:55', tmtdew=40.47, humidity=5.72, cloud=0.0, wind=18.39, temperature=24.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:52:38.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:53:29.512 [DEBUG] [Thread-115322] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:53:29.587 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:53:29.599 [DEBUG] [Thread-115325] [transport.py] [_log()] starting thread (client mode): 0xed43760
2025-11-03T11:53:29.599 [DEBUG] [Thread-115325] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:53:29.614 [DEBUG] [Thread-115325] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:53:29.614 [INFO] [Thread-115325] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:53:29.622 [DEBUG] [Thread-115325] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:53:29.622 [DEBUG] [Thread-115325] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:53:29.622 [DEBUG] [Thread-115325] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:53:29.622 [DEBUG] [Thread-115325] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:53:29.622 [DEBUG] [Thread-115325] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:53:29.622 [DEBUG] [Thread-115325] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:53:29.622 [DEBUG] [Thread-115325] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:53:29.622 [DEBUG] [Thread-115325] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:53:29.622 [DEBUG] [Thread-115325] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:53:29.622 [DEBUG] [Thread-115325] [transport.py] [_log()] client lang: <none>
2025-11-03T11:53:29.622 [DEBUG] [Thread-115325] [transport.py] [_log()] server lang: <none>
2025-11-03T11:53:29.622 [DEBUG] [Thread-115325] [transport.py] [_log()] kex follows: False
2025-11-03T11:53:29.622 [DEBUG] [Thread-115325] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:53:29.622 [DEBUG] [Thread-115325] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:53:29.622 [DEBUG] [Thread-115325] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:53:29.622 [DEBUG] [Thread-115325] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:53:29.622 [DEBUG] [Thread-115325] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:53:29.622 [DEBUG] [Thread-115325] [transport.py] [_log()] Compression: none
2025-11-03T11:53:29.622 [DEBUG] [Thread-115325] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:53:29.680 [DEBUG] [Thread-115325] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:53:29.680 [DEBUG] [Thread-115325] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:53:29.680 [DEBUG] [Thread-115325] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:53:29.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:53:29.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:53:29.737 [DEBUG] [Thread-115325] [transport.py] [_log()] userauth is OK
2025-11-03T11:53:29.737 [DEBUG] [Thread-115325] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:53:29.737 [DEBUG] [Thread-115325] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:53:29.737 [DEBUG] [Thread-115325] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:53:29.737 [DEBUG] [Thread-115325] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:53:29.751 [INFO] [Thread-115325] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:53:29.751 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:53:29.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:53:30.626 [DEBUG] [Thread-115325] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:53:30.626 [DEBUG] [Thread-115325] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:53:30.674 [DEBUG] [Thread-115325] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:53:30.674 [DEBUG] [Thread-115325] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:53:30.683 [DEBUG] [Thread-115325] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:53:30.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:53:30.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:53:30.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:53:30.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:53:30.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:53:30.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:53:30.728 [DEBUG] [Thread-115325] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:53:35.458 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:53:35.459 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:53:35.860 [DEBUG] [Thread-115327 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:53:50.921 [DEBUG] [Thread-115328 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:53:58.361 [DEBUG] [Thread-115329 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:54:00.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:54:00.750 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:54:00.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:54:01.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 53, 27), 40.6, 5.68, 0.0, 25.92, 24.48, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:54:01.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:53:27
2025-11-03T11:54:01.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:54:01.764 [DEBUG] [Thread-115330] [transport.py] [_log()] starting thread (client mode): 0xed062c0
2025-11-03T11:54:01.765 [DEBUG] [Thread-115330] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:54:01.785 [DEBUG] [Thread-115330] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:54:01.785 [INFO] [Thread-115330] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:54:01.788 [DEBUG] [Thread-115330] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:54:01.789 [DEBUG] [Thread-115330] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:54:01.789 [DEBUG] [Thread-115330] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:54:01.789 [DEBUG] [Thread-115330] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:54:01.789 [DEBUG] [Thread-115330] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:54:01.789 [DEBUG] [Thread-115330] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:54:01.789 [DEBUG] [Thread-115330] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:54:01.789 [DEBUG] [Thread-115330] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:54:01.789 [DEBUG] [Thread-115330] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:54:01.789 [DEBUG] [Thread-115330] [transport.py] [_log()] client lang: <none>
2025-11-03T11:54:01.789 [DEBUG] [Thread-115330] [transport.py] [_log()] server lang: <none>
2025-11-03T11:54:01.789 [DEBUG] [Thread-115330] [transport.py] [_log()] kex follows: False
2025-11-03T11:54:01.789 [DEBUG] [Thread-115330] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:54:01.789 [DEBUG] [Thread-115330] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:54:01.789 [DEBUG] [Thread-115330] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:54:01.789 [DEBUG] [Thread-115330] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:54:01.789 [DEBUG] [Thread-115330] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:54:01.789 [DEBUG] [Thread-115330] [transport.py] [_log()] Compression: none
2025-11-03T11:54:01.789 [DEBUG] [Thread-115330] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:54:01.804 [DEBUG] [Thread-115330] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:54:01.805 [DEBUG] [Thread-115330] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:54:01.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:54:01.805 [DEBUG] [Thread-115330] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:54:01.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:54:01.806 [DEBUG] [Thread-115330] [transport.py] [_log()] userauth is OK
2025-11-03T11:54:01.806 [DEBUG] [Thread-115330] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:54:01.806 [DEBUG] [Thread-115330] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:54:01.806 [DEBUG] [Thread-115330] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:54:01.806 [DEBUG] [Thread-115330] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:54:01.817 [INFO] [Thread-115330] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:54:01.817 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:54:02.473 [DEBUG] [Thread-115330] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:54:02.473 [DEBUG] [Thread-115330] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:54:02.473 [DEBUG] [Thread-115330] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:54:02.514 [DEBUG] [Thread-115330] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:54:02.514 [DEBUG] [Thread-115330] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:54:02.516 [DEBUG] [Thread-115330] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:54:02.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:54:02.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:54:02.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:54:02.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:54:02.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:54:02.533 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:54:02.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:54:02.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:54:02.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:54:02.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.411910 -999.00  +23.90  20.55     10   -8.80 1 1 1 1 1   888    0 33.61 29.20 ----- 17.6 20.6 332.2 27.1 29.1 -28.6 28.1 -30.1 27.8 -27.3 28.3 -33.7
2025-11-03T11:54:02.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:54:02.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:54:02.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.411910
2025-11-03T11:54:02.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:54:02.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:54:02.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:54:02.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:54:02.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:54:02.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:53:27', tmtdew=40.6, humidity=5.68, cloud=0.0, wind=25.92, temperature=24.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:53:09.024', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:54:02.534 [DEBUG] [Thread-115330] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:54:02.608 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:54:02.620 [DEBUG] [Thread-115333] [transport.py] [_log()] starting thread (client mode): 0xed67220
2025-11-03T11:54:02.620 [DEBUG] [Thread-115333] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:54:02.635 [DEBUG] [Thread-115333] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:54:02.635 [INFO] [Thread-115333] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:54:02.642 [DEBUG] [Thread-115333] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:54:02.642 [DEBUG] [Thread-115333] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:54:02.642 [DEBUG] [Thread-115333] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:54:02.642 [DEBUG] [Thread-115333] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:54:02.643 [DEBUG] [Thread-115333] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:54:02.643 [DEBUG] [Thread-115333] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:54:02.643 [DEBUG] [Thread-115333] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:54:02.643 [DEBUG] [Thread-115333] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:54:02.643 [DEBUG] [Thread-115333] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:54:02.643 [DEBUG] [Thread-115333] [transport.py] [_log()] client lang: <none>
2025-11-03T11:54:02.643 [DEBUG] [Thread-115333] [transport.py] [_log()] server lang: <none>
2025-11-03T11:54:02.643 [DEBUG] [Thread-115333] [transport.py] [_log()] kex follows: False
2025-11-03T11:54:02.643 [DEBUG] [Thread-115333] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:54:02.643 [DEBUG] [Thread-115333] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:54:02.643 [DEBUG] [Thread-115333] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:54:02.643 [DEBUG] [Thread-115333] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:54:02.643 [DEBUG] [Thread-115333] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:54:02.643 [DEBUG] [Thread-115333] [transport.py] [_log()] Compression: none
2025-11-03T11:54:02.643 [DEBUG] [Thread-115333] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:54:02.699 [DEBUG] [Thread-115333] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:54:02.699 [DEBUG] [Thread-115333] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:54:02.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:54:02.699 [DEBUG] [Thread-115333] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:54:02.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:54:02.756 [DEBUG] [Thread-115333] [transport.py] [_log()] userauth is OK
2025-11-03T11:54:02.756 [DEBUG] [Thread-115333] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:54:02.756 [DEBUG] [Thread-115333] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:54:02.756 [DEBUG] [Thread-115333] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:54:02.756 [DEBUG] [Thread-115333] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:54:02.770 [INFO] [Thread-115333] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:54:02.770 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:54:02.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:54:03.628 [DEBUG] [Thread-115333] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:54:03.628 [DEBUG] [Thread-115333] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:54:03.677 [DEBUG] [Thread-115333] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:54:03.677 [DEBUG] [Thread-115333] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:54:03.686 [DEBUG] [Thread-115333] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:54:03.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:54:03.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:54:03.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:54:03.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:54:03.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:54:03.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:54:03.719 [DEBUG] [Thread-115333] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:54:05.956 [DEBUG] [Thread-115335 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:54:21.005 [DEBUG] [Thread-115336 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:54:33.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:54:33.742 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:54:33.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:54:34.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 53, 59), 41.03, 5.7, 0.0, 26.66, 24.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:54:34.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:53:59
2025-11-03T11:54:34.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:54:34.740 [DEBUG] [Thread-115337] [transport.py] [_log()] starting thread (client mode): 0xedc64a0
2025-11-03T11:54:34.740 [DEBUG] [Thread-115337] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:54:34.759 [DEBUG] [Thread-115337] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:54:34.759 [INFO] [Thread-115337] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:54:34.762 [DEBUG] [Thread-115337] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:54:34.762 [DEBUG] [Thread-115337] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:54:34.762 [DEBUG] [Thread-115337] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:54:34.762 [DEBUG] [Thread-115337] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:54:34.762 [DEBUG] [Thread-115337] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:54:34.762 [DEBUG] [Thread-115337] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:54:34.762 [DEBUG] [Thread-115337] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:54:34.762 [DEBUG] [Thread-115337] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:54:34.762 [DEBUG] [Thread-115337] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:54:34.762 [DEBUG] [Thread-115337] [transport.py] [_log()] client lang: <none>
2025-11-03T11:54:34.762 [DEBUG] [Thread-115337] [transport.py] [_log()] server lang: <none>
2025-11-03T11:54:34.762 [DEBUG] [Thread-115337] [transport.py] [_log()] kex follows: False
2025-11-03T11:54:34.762 [DEBUG] [Thread-115337] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:54:34.762 [DEBUG] [Thread-115337] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:54:34.762 [DEBUG] [Thread-115337] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:54:34.762 [DEBUG] [Thread-115337] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:54:34.762 [DEBUG] [Thread-115337] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:54:34.762 [DEBUG] [Thread-115337] [transport.py] [_log()] Compression: none
2025-11-03T11:54:34.763 [DEBUG] [Thread-115337] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:54:34.779 [DEBUG] [Thread-115337] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:54:34.779 [DEBUG] [Thread-115337] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:54:34.779 [DEBUG] [Thread-115337] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:54:34.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:54:34.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:54:34.780 [DEBUG] [Thread-115337] [transport.py] [_log()] userauth is OK
2025-11-03T11:54:34.780 [DEBUG] [Thread-115337] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:54:34.780 [DEBUG] [Thread-115337] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:54:34.780 [DEBUG] [Thread-115337] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:54:34.780 [DEBUG] [Thread-115337] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:54:34.795 [INFO] [Thread-115337] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:54:34.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:54:35.437 [DEBUG] [Thread-115337] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:54:35.437 [DEBUG] [Thread-115337] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:54:35.438 [DEBUG] [Thread-115337] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:54:35.478 [DEBUG] [Thread-115337] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:54:35.479 [DEBUG] [Thread-115337] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:54:35.482 [DEBUG] [Thread-115337] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:54:35.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:54:35.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:54:35.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:54:35.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:54:35.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:54:35.506 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:54:35.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:54:35.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:54:35.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:54:35.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.412604 -999.00  +24.20  17.75     10   -8.70 1 1 1 1 1   888    0 33.10 29.45 ----- 20.9 17.8 338.7 31.3 29.2 -28.7 28.1 -28.5 27.8 -27.4 28.3 -27.9
2025-11-03T11:54:35.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:54:35.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:54:35.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.412604
2025-11-03T11:54:35.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:54:35.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:54:35.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:54:35.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:54:35.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:54:35.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:53:59', tmtdew=41.03, humidity=5.7, cloud=0.0, wind=26.66, temperature=24.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:54:08.986', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:54:35.509 [DEBUG] [Thread-115337] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:54:35.592 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:54:35.599 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:54:35.600 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:54:35.605 [DEBUG] [Thread-115340] [transport.py] [_log()] starting thread (client mode): 0x81cbb50
2025-11-03T11:54:35.605 [DEBUG] [Thread-115340] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:54:35.622 [DEBUG] [Thread-115340] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:54:35.622 [INFO] [Thread-115340] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:54:35.632 [DEBUG] [Thread-115340] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:54:35.633 [DEBUG] [Thread-115340] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:54:35.633 [DEBUG] [Thread-115340] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:54:35.633 [DEBUG] [Thread-115340] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:54:35.633 [DEBUG] [Thread-115340] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:54:35.633 [DEBUG] [Thread-115340] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:54:35.633 [DEBUG] [Thread-115340] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:54:35.633 [DEBUG] [Thread-115340] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:54:35.633 [DEBUG] [Thread-115340] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:54:35.634 [DEBUG] [Thread-115340] [transport.py] [_log()] client lang: <none>
2025-11-03T11:54:35.634 [DEBUG] [Thread-115340] [transport.py] [_log()] server lang: <none>
2025-11-03T11:54:35.634 [DEBUG] [Thread-115340] [transport.py] [_log()] kex follows: False
2025-11-03T11:54:35.634 [DEBUG] [Thread-115340] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:54:35.634 [DEBUG] [Thread-115340] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:54:35.634 [DEBUG] [Thread-115340] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:54:35.634 [DEBUG] [Thread-115340] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:54:35.634 [DEBUG] [Thread-115340] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:54:35.634 [DEBUG] [Thread-115340] [transport.py] [_log()] Compression: none
2025-11-03T11:54:35.634 [DEBUG] [Thread-115340] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:54:35.692 [DEBUG] [Thread-115340] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:54:35.692 [DEBUG] [Thread-115340] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:54:35.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:54:35.693 [DEBUG] [Thread-115340] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:54:35.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:54:35.748 [DEBUG] [Thread-115340] [transport.py] [_log()] userauth is OK
2025-11-03T11:54:35.748 [DEBUG] [Thread-115340] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:54:35.748 [DEBUG] [Thread-115340] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:54:35.748 [DEBUG] [Thread-115340] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:54:35.748 [DEBUG] [Thread-115340] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:54:35.767 [INFO] [Thread-115340] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:54:35.767 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:54:35.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:54:36.052 [DEBUG] [Thread-115342 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:54:36.648 [DEBUG] [Thread-115340] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:54:36.648 [DEBUG] [Thread-115340] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:54:36.697 [DEBUG] [Thread-115340] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:54:36.697 [DEBUG] [Thread-115340] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:54:36.707 [DEBUG] [Thread-115340] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:54:36.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:54:36.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:54:36.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:54:36.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:54:36.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:54:36.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:54:36.748 [DEBUG] [Thread-115340] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:54:51.101 [DEBUG] [Thread-115343 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:54:58.419 [DEBUG] [Thread-115344 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:55:06.135 [DEBUG] [Thread-115345 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:55:06.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:55:06.769 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:55:06.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:55:07.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 54, 32), 41.61, 5.45, 0.0, 25.5, 24.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:55:07.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:54:32
2025-11-03T11:55:07.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:55:07.792 [DEBUG] [Thread-115346] [transport.py] [_log()] starting thread (client mode): 0xed36c80
2025-11-03T11:55:07.792 [DEBUG] [Thread-115346] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:55:07.811 [DEBUG] [Thread-115346] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:55:07.812 [INFO] [Thread-115346] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:55:07.815 [DEBUG] [Thread-115346] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:55:07.815 [DEBUG] [Thread-115346] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:55:07.815 [DEBUG] [Thread-115346] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:55:07.815 [DEBUG] [Thread-115346] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:55:07.815 [DEBUG] [Thread-115346] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:55:07.815 [DEBUG] [Thread-115346] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:55:07.815 [DEBUG] [Thread-115346] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:55:07.815 [DEBUG] [Thread-115346] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:55:07.815 [DEBUG] [Thread-115346] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:55:07.815 [DEBUG] [Thread-115346] [transport.py] [_log()] client lang: <none>
2025-11-03T11:55:07.815 [DEBUG] [Thread-115346] [transport.py] [_log()] server lang: <none>
2025-11-03T11:55:07.815 [DEBUG] [Thread-115346] [transport.py] [_log()] kex follows: False
2025-11-03T11:55:07.815 [DEBUG] [Thread-115346] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:55:07.815 [DEBUG] [Thread-115346] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:55:07.815 [DEBUG] [Thread-115346] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:55:07.815 [DEBUG] [Thread-115346] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:55:07.815 [DEBUG] [Thread-115346] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:55:07.815 [DEBUG] [Thread-115346] [transport.py] [_log()] Compression: none
2025-11-03T11:55:07.815 [DEBUG] [Thread-115346] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:55:07.836 [DEBUG] [Thread-115346] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:55:07.837 [DEBUG] [Thread-115346] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:55:07.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:55:07.838 [DEBUG] [Thread-115346] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:55:07.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:55:07.840 [DEBUG] [Thread-115346] [transport.py] [_log()] userauth is OK
2025-11-03T11:55:07.840 [DEBUG] [Thread-115346] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:55:07.840 [DEBUG] [Thread-115346] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:55:07.840 [DEBUG] [Thread-115346] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:55:07.840 [DEBUG] [Thread-115346] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:55:07.861 [INFO] [Thread-115346] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:55:07.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:55:08.784 [DEBUG] [Thread-115346] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:55:08.785 [DEBUG] [Thread-115346] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:55:08.785 [DEBUG] [Thread-115346] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:55:08.825 [DEBUG] [Thread-115346] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:55:08.826 [DEBUG] [Thread-115346] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:55:08.828 [DEBUG] [Thread-115346] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:55:08.842 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:55:08.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:55:08.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:55:08.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:55:08.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:55:08.874 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:55:08.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:55:08.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:55:08.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:55:08.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.412951 -999.00  +23.70  19.98     10   -9.20 1 1 1 1 1   888    0 33.17 27.80 ----- 17.4 20.0 313.6 31.6 29.1 -29.2 28.1 -29.6 27.8 -27.8 28.4 -29.2
2025-11-03T11:55:08.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:55:08.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:55:08.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.412951
2025-11-03T11:55:08.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:55:08.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:55:08.877 [DEBUG] [Thread-115346] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:55:08.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:55:08.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:55:08.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:55:08.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:54:32', tmtdew=41.61, humidity=5.45, cloud=0.0, wind=25.5, temperature=24.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:54:38.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:55:08.960 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:55:08.974 [DEBUG] [Thread-115349] [transport.py] [_log()] starting thread (client mode): 0xed2db70
2025-11-03T11:55:08.974 [DEBUG] [Thread-115349] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:55:08.989 [DEBUG] [Thread-115349] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:55:08.990 [INFO] [Thread-115349] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:55:09.000 [DEBUG] [Thread-115349] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:55:09.001 [DEBUG] [Thread-115349] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:55:09.001 [DEBUG] [Thread-115349] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:55:09.001 [DEBUG] [Thread-115349] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:55:09.001 [DEBUG] [Thread-115349] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:55:09.002 [DEBUG] [Thread-115349] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:55:09.002 [DEBUG] [Thread-115349] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:55:09.002 [DEBUG] [Thread-115349] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:55:09.002 [DEBUG] [Thread-115349] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:55:09.002 [DEBUG] [Thread-115349] [transport.py] [_log()] client lang: <none>
2025-11-03T11:55:09.002 [DEBUG] [Thread-115349] [transport.py] [_log()] server lang: <none>
2025-11-03T11:55:09.002 [DEBUG] [Thread-115349] [transport.py] [_log()] kex follows: False
2025-11-03T11:55:09.002 [DEBUG] [Thread-115349] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:55:09.002 [DEBUG] [Thread-115349] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:55:09.002 [DEBUG] [Thread-115349] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:55:09.002 [DEBUG] [Thread-115349] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:55:09.002 [DEBUG] [Thread-115349] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:55:09.002 [DEBUG] [Thread-115349] [transport.py] [_log()] Compression: none
2025-11-03T11:55:09.003 [DEBUG] [Thread-115349] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:55:09.058 [DEBUG] [Thread-115349] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:55:09.059 [DEBUG] [Thread-115349] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:55:09.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:55:09.060 [DEBUG] [Thread-115349] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:55:09.061 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:55:09.119 [DEBUG] [Thread-115349] [transport.py] [_log()] userauth is OK
2025-11-03T11:55:09.119 [DEBUG] [Thread-115349] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:55:09.119 [DEBUG] [Thread-115349] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:55:09.119 [DEBUG] [Thread-115349] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:55:09.119 [DEBUG] [Thread-115349] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:55:09.140 [INFO] [Thread-115349] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:55:09.141 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:55:09.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:55:10.025 [DEBUG] [Thread-115349] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:55:10.025 [DEBUG] [Thread-115349] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:55:10.074 [DEBUG] [Thread-115349] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:55:10.074 [DEBUG] [Thread-115349] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:55:10.082 [DEBUG] [Thread-115349] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:55:10.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:55:10.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:55:10.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:55:10.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:55:10.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:55:10.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:55:10.114 [DEBUG] [Thread-115349] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:55:21.164 [DEBUG] [Thread-115351 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:55:35.740 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:55:35.741 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:55:36.205 [DEBUG] [Thread-115352 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:55:40.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:55:40.137 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:55:40.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:55:40.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 55, 37), 41.59, 4.97, 0.0, 23.79, 23.71, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:55:40.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:55:37
2025-11-03T11:55:40.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:55:41.074 [DEBUG] [Thread-115353] [transport.py] [_log()] starting thread (client mode): 0x81cbb50
2025-11-03T11:55:41.074 [DEBUG] [Thread-115353] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:55:41.093 [DEBUG] [Thread-115353] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:55:41.094 [INFO] [Thread-115353] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:55:41.096 [DEBUG] [Thread-115353] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:55:41.096 [DEBUG] [Thread-115353] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:55:41.096 [DEBUG] [Thread-115353] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:55:41.096 [DEBUG] [Thread-115353] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:55:41.096 [DEBUG] [Thread-115353] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:55:41.096 [DEBUG] [Thread-115353] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:55:41.096 [DEBUG] [Thread-115353] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:55:41.096 [DEBUG] [Thread-115353] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:55:41.096 [DEBUG] [Thread-115353] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:55:41.096 [DEBUG] [Thread-115353] [transport.py] [_log()] client lang: <none>
2025-11-03T11:55:41.096 [DEBUG] [Thread-115353] [transport.py] [_log()] server lang: <none>
2025-11-03T11:55:41.096 [DEBUG] [Thread-115353] [transport.py] [_log()] kex follows: False
2025-11-03T11:55:41.096 [DEBUG] [Thread-115353] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:55:41.096 [DEBUG] [Thread-115353] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:55:41.097 [DEBUG] [Thread-115353] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:55:41.097 [DEBUG] [Thread-115353] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:55:41.097 [DEBUG] [Thread-115353] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:55:41.097 [DEBUG] [Thread-115353] [transport.py] [_log()] Compression: none
2025-11-03T11:55:41.097 [DEBUG] [Thread-115353] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:55:41.112 [DEBUG] [Thread-115353] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:55:41.112 [DEBUG] [Thread-115353] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:55:41.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:55:41.113 [DEBUG] [Thread-115353] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:55:41.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:55:41.115 [DEBUG] [Thread-115353] [transport.py] [_log()] userauth is OK
2025-11-03T11:55:41.115 [DEBUG] [Thread-115353] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:55:41.115 [DEBUG] [Thread-115353] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:55:41.115 [DEBUG] [Thread-115353] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:55:41.115 [DEBUG] [Thread-115353] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:55:41.134 [INFO] [Thread-115353] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:55:41.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:55:41.764 [DEBUG] [Thread-115353] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:55:41.765 [DEBUG] [Thread-115353] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:55:41.765 [DEBUG] [Thread-115353] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:55:41.805 [DEBUG] [Thread-115353] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:55:41.805 [DEBUG] [Thread-115353] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:55:41.808 [DEBUG] [Thread-115353] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:55:41.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:55:41.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:55:41.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:55:41.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:55:41.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:55:41.832 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:55:41.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:55:41.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:55:41.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:55:41.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.413298 -999.00  +23.50  24.57     10   -9.50 1 1 1 1 1   888    0 32.95 28.17 ----- 15.8 24.6 328.0 30.9 29.0 -30.6 28.1 -29.1 27.7 -28.6 28.4 -27.8
2025-11-03T11:55:41.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:55:41.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:55:41.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.413298
2025-11-03T11:55:41.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:55:41.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:55:41.835 [DEBUG] [Thread-115353] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:55:41.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:55:41.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:55:41.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:55:41.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:55:37', tmtdew=41.59, humidity=4.97, cloud=0.0, wind=23.79, temperature=23.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:55:08.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:55:41.916 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:55:41.930 [DEBUG] [Thread-115356] [transport.py] [_log()] starting thread (client mode): 0xed072b0
2025-11-03T11:55:41.930 [DEBUG] [Thread-115356] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:55:41.943 [DEBUG] [Thread-115356] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:55:41.944 [INFO] [Thread-115356] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:55:41.951 [DEBUG] [Thread-115356] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:55:41.951 [DEBUG] [Thread-115356] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:55:41.951 [DEBUG] [Thread-115356] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:55:41.951 [DEBUG] [Thread-115356] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:55:41.951 [DEBUG] [Thread-115356] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:55:41.951 [DEBUG] [Thread-115356] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:55:41.951 [DEBUG] [Thread-115356] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:55:41.951 [DEBUG] [Thread-115356] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:55:41.951 [DEBUG] [Thread-115356] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:55:41.951 [DEBUG] [Thread-115356] [transport.py] [_log()] client lang: <none>
2025-11-03T11:55:41.951 [DEBUG] [Thread-115356] [transport.py] [_log()] server lang: <none>
2025-11-03T11:55:41.951 [DEBUG] [Thread-115356] [transport.py] [_log()] kex follows: False
2025-11-03T11:55:41.951 [DEBUG] [Thread-115356] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:55:41.951 [DEBUG] [Thread-115356] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:55:41.951 [DEBUG] [Thread-115356] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:55:41.951 [DEBUG] [Thread-115356] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:55:41.951 [DEBUG] [Thread-115356] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:55:41.951 [DEBUG] [Thread-115356] [transport.py] [_log()] Compression: none
2025-11-03T11:55:41.951 [DEBUG] [Thread-115356] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:55:42.010 [DEBUG] [Thread-115356] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:55:42.011 [DEBUG] [Thread-115356] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:55:42.011 [DEBUG] [Thread-115356] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:55:42.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:55:42.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:55:42.066 [DEBUG] [Thread-115356] [transport.py] [_log()] userauth is OK
2025-11-03T11:55:42.067 [DEBUG] [Thread-115356] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:55:42.067 [DEBUG] [Thread-115356] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:55:42.067 [DEBUG] [Thread-115356] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:55:42.067 [DEBUG] [Thread-115356] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:55:42.086 [INFO] [Thread-115356] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:55:42.086 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:55:42.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:55:42.909 [DEBUG] [Thread-115356] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:55:42.909 [DEBUG] [Thread-115356] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:55:42.956 [DEBUG] [Thread-115356] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:55:42.957 [DEBUG] [Thread-115356] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:55:42.965 [DEBUG] [Thread-115356] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:55:42.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:55:42.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:55:42.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:55:42.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:55:42.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:55:42.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:55:43.001 [DEBUG] [Thread-115356] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:55:51.242 [DEBUG] [Thread-115358 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:55:58.467 [DEBUG] [Thread-115359 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:56:06.306 [DEBUG] [Thread-115360 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:56:13.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:56:13.028 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:56:13.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:56:13.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 56, 9), 40.81, 5.28, 0.0, 26.84, 23.5, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:56:13.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:56:09
2025-11-03T11:56:13.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:56:13.987 [DEBUG] [Thread-115361] [transport.py] [_log()] starting thread (client mode): 0xed5fc10
2025-11-03T11:56:13.987 [DEBUG] [Thread-115361] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:56:14.011 [DEBUG] [Thread-115361] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:56:14.011 [INFO] [Thread-115361] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:56:14.014 [DEBUG] [Thread-115361] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:56:14.015 [DEBUG] [Thread-115361] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:56:14.015 [DEBUG] [Thread-115361] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:56:14.015 [DEBUG] [Thread-115361] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:56:14.015 [DEBUG] [Thread-115361] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:56:14.015 [DEBUG] [Thread-115361] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:56:14.015 [DEBUG] [Thread-115361] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:56:14.015 [DEBUG] [Thread-115361] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:56:14.015 [DEBUG] [Thread-115361] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:56:14.015 [DEBUG] [Thread-115361] [transport.py] [_log()] client lang: <none>
2025-11-03T11:56:14.015 [DEBUG] [Thread-115361] [transport.py] [_log()] server lang: <none>
2025-11-03T11:56:14.015 [DEBUG] [Thread-115361] [transport.py] [_log()] kex follows: False
2025-11-03T11:56:14.015 [DEBUG] [Thread-115361] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:56:14.015 [DEBUG] [Thread-115361] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:56:14.015 [DEBUG] [Thread-115361] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:56:14.015 [DEBUG] [Thread-115361] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:56:14.015 [DEBUG] [Thread-115361] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:56:14.015 [DEBUG] [Thread-115361] [transport.py] [_log()] Compression: none
2025-11-03T11:56:14.015 [DEBUG] [Thread-115361] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:56:14.034 [DEBUG] [Thread-115361] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:56:14.035 [DEBUG] [Thread-115361] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:56:14.035 [DEBUG] [Thread-115361] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:56:14.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:56:14.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:56:14.036 [DEBUG] [Thread-115361] [transport.py] [_log()] userauth is OK
2025-11-03T11:56:14.036 [DEBUG] [Thread-115361] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:56:14.036 [DEBUG] [Thread-115361] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:56:14.036 [DEBUG] [Thread-115361] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:56:14.036 [DEBUG] [Thread-115361] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:56:14.050 [INFO] [Thread-115361] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:56:14.050 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:56:14.741 [DEBUG] [Thread-115361] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:56:14.741 [DEBUG] [Thread-115361] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:56:14.742 [DEBUG] [Thread-115361] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:56:14.782 [DEBUG] [Thread-115361] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:56:14.782 [DEBUG] [Thread-115361] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:56:14.784 [DEBUG] [Thread-115361] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:56:14.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:56:14.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:56:14.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:56:14.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:56:14.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:56:14.800 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:56:14.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:56:14.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:56:14.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:56:14.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.413646 -999.00  +23.20  12.31     10   -9.30 1 1 1 1 1   888    0 33.72 27.01 ----- 17.8 12.3 338.3 22.8 29.1 -28.7 27.9 -30.0 27.7 -27.6 28.1 -33.7
2025-11-03T11:56:14.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:56:14.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:56:14.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.413646
2025-11-03T11:56:14.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:56:14.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:56:14.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:56:14.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:56:14.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:56:14.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:56:09', tmtdew=40.81, humidity=5.28, cloud=0.0, wind=26.84, temperature=23.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:55:39.014', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:56:14.803 [DEBUG] [Thread-115361] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:56:14.895 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:56:14.907 [DEBUG] [Thread-115364] [transport.py] [_log()] starting thread (client mode): 0xed5cf70
2025-11-03T11:56:14.907 [DEBUG] [Thread-115364] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:56:14.921 [DEBUG] [Thread-115364] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:56:14.921 [INFO] [Thread-115364] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:56:14.929 [DEBUG] [Thread-115364] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:56:14.929 [DEBUG] [Thread-115364] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:56:14.929 [DEBUG] [Thread-115364] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:56:14.929 [DEBUG] [Thread-115364] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:56:14.929 [DEBUG] [Thread-115364] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:56:14.929 [DEBUG] [Thread-115364] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:56:14.929 [DEBUG] [Thread-115364] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:56:14.929 [DEBUG] [Thread-115364] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:56:14.929 [DEBUG] [Thread-115364] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:56:14.929 [DEBUG] [Thread-115364] [transport.py] [_log()] client lang: <none>
2025-11-03T11:56:14.929 [DEBUG] [Thread-115364] [transport.py] [_log()] server lang: <none>
2025-11-03T11:56:14.929 [DEBUG] [Thread-115364] [transport.py] [_log()] kex follows: False
2025-11-03T11:56:14.929 [DEBUG] [Thread-115364] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:56:14.930 [DEBUG] [Thread-115364] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:56:14.930 [DEBUG] [Thread-115364] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:56:14.930 [DEBUG] [Thread-115364] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:56:14.930 [DEBUG] [Thread-115364] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:56:14.930 [DEBUG] [Thread-115364] [transport.py] [_log()] Compression: none
2025-11-03T11:56:14.930 [DEBUG] [Thread-115364] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:56:14.985 [DEBUG] [Thread-115364] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:56:14.986 [DEBUG] [Thread-115364] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:56:14.986 [DEBUG] [Thread-115364] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:56:14.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:56:14.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:56:15.041 [DEBUG] [Thread-115364] [transport.py] [_log()] userauth is OK
2025-11-03T11:56:15.041 [DEBUG] [Thread-115364] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:56:15.041 [DEBUG] [Thread-115364] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:56:15.041 [DEBUG] [Thread-115364] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:56:15.041 [DEBUG] [Thread-115364] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:56:15.060 [INFO] [Thread-115364] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:56:15.061 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:56:15.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:56:15.856 [DEBUG] [Thread-115364] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:56:15.857 [DEBUG] [Thread-115364] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:56:15.905 [DEBUG] [Thread-115364] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:56:15.905 [DEBUG] [Thread-115364] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:56:15.914 [DEBUG] [Thread-115364] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:56:15.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:56:15.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:56:15.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:56:15.940 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:56:15.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:56:15.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:56:15.948 [DEBUG] [Thread-115364] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:56:21.337 [DEBUG] [Thread-115366 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:56:35.884 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:56:35.885 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:56:36.396 [DEBUG] [Thread-115367 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:56:45.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:56:45.971 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:56:45.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:56:46.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 56, 41), 40.1, 5.85, 0.0, 22.8, 23.37, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:56:46.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:56:41
2025-11-03T11:56:46.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:56:46.907 [DEBUG] [Thread-115368] [transport.py] [_log()] starting thread (client mode): 0xed5d4b0
2025-11-03T11:56:46.907 [DEBUG] [Thread-115368] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:56:46.927 [DEBUG] [Thread-115368] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:56:46.928 [INFO] [Thread-115368] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:56:46.930 [DEBUG] [Thread-115368] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:56:46.931 [DEBUG] [Thread-115368] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:56:46.931 [DEBUG] [Thread-115368] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:56:46.931 [DEBUG] [Thread-115368] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:56:46.931 [DEBUG] [Thread-115368] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:56:46.931 [DEBUG] [Thread-115368] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:56:46.931 [DEBUG] [Thread-115368] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:56:46.931 [DEBUG] [Thread-115368] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:56:46.931 [DEBUG] [Thread-115368] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:56:46.931 [DEBUG] [Thread-115368] [transport.py] [_log()] client lang: <none>
2025-11-03T11:56:46.931 [DEBUG] [Thread-115368] [transport.py] [_log()] server lang: <none>
2025-11-03T11:56:46.931 [DEBUG] [Thread-115368] [transport.py] [_log()] kex follows: False
2025-11-03T11:56:46.931 [DEBUG] [Thread-115368] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:56:46.931 [DEBUG] [Thread-115368] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:56:46.931 [DEBUG] [Thread-115368] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:56:46.931 [DEBUG] [Thread-115368] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:56:46.931 [DEBUG] [Thread-115368] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:56:46.931 [DEBUG] [Thread-115368] [transport.py] [_log()] Compression: none
2025-11-03T11:56:46.931 [DEBUG] [Thread-115368] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:56:46.950 [DEBUG] [Thread-115368] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:56:46.951 [DEBUG] [Thread-115368] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:56:46.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:56:46.952 [DEBUG] [Thread-115368] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:56:46.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:56:46.955 [DEBUG] [Thread-115368] [transport.py] [_log()] userauth is OK
2025-11-03T11:56:46.955 [DEBUG] [Thread-115368] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:56:46.955 [DEBUG] [Thread-115368] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:56:46.955 [DEBUG] [Thread-115368] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:56:46.956 [DEBUG] [Thread-115368] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:56:46.979 [INFO] [Thread-115368] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:56:46.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:56:47.598 [DEBUG] [Thread-115368] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:56:47.599 [DEBUG] [Thread-115368] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:56:47.599 [DEBUG] [Thread-115368] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:56:47.639 [DEBUG] [Thread-115368] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:56:47.639 [DEBUG] [Thread-115368] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:56:47.642 [DEBUG] [Thread-115368] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:56:47.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:56:47.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:56:47.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:56:47.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:56:47.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:56:47.665 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:56:47.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:56:47.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:56:47.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:56:47.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.413993 -999.00  +23.00  14.88     10   -9.30 1 1 1 1 1   888    0 33.10 25.16 ----- 11.9 14.9 350.6 21.3 29.0 -29.3 28.0 -29.1 27.8 -27.5 28.2 -32.0
2025-11-03T11:56:47.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:56:47.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:56:47.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.413993
2025-11-03T11:56:47.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:56:47.667 [DEBUG] [Thread-115368] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:56:47.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:56:47.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:56:47.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:56:47.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:56:47.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:56:41', tmtdew=40.1, humidity=5.85, cloud=0.0, wind=22.8, temperature=23.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:56:08.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:56:47.749 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:56:47.761 [DEBUG] [Thread-115371] [transport.py] [_log()] starting thread (client mode): 0xedc5d80
2025-11-03T11:56:47.761 [DEBUG] [Thread-115371] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:56:47.775 [DEBUG] [Thread-115371] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:56:47.775 [INFO] [Thread-115371] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:56:47.783 [DEBUG] [Thread-115371] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:56:47.783 [DEBUG] [Thread-115371] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:56:47.783 [DEBUG] [Thread-115371] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:56:47.783 [DEBUG] [Thread-115371] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:56:47.783 [DEBUG] [Thread-115371] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:56:47.783 [DEBUG] [Thread-115371] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:56:47.783 [DEBUG] [Thread-115371] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:56:47.783 [DEBUG] [Thread-115371] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:56:47.784 [DEBUG] [Thread-115371] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:56:47.784 [DEBUG] [Thread-115371] [transport.py] [_log()] client lang: <none>
2025-11-03T11:56:47.784 [DEBUG] [Thread-115371] [transport.py] [_log()] server lang: <none>
2025-11-03T11:56:47.784 [DEBUG] [Thread-115371] [transport.py] [_log()] kex follows: False
2025-11-03T11:56:47.784 [DEBUG] [Thread-115371] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:56:47.784 [DEBUG] [Thread-115371] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:56:47.784 [DEBUG] [Thread-115371] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:56:47.784 [DEBUG] [Thread-115371] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:56:47.784 [DEBUG] [Thread-115371] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:56:47.784 [DEBUG] [Thread-115371] [transport.py] [_log()] Compression: none
2025-11-03T11:56:47.784 [DEBUG] [Thread-115371] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:56:47.841 [DEBUG] [Thread-115371] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:56:47.842 [DEBUG] [Thread-115371] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:56:47.842 [DEBUG] [Thread-115371] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:56:47.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:56:47.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:56:47.897 [DEBUG] [Thread-115371] [transport.py] [_log()] userauth is OK
2025-11-03T11:56:47.897 [DEBUG] [Thread-115371] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:56:47.898 [DEBUG] [Thread-115371] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:56:47.898 [DEBUG] [Thread-115371] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:56:47.898 [DEBUG] [Thread-115371] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:56:47.932 [INFO] [Thread-115371] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:56:47.932 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:56:47.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:56:48.784 [DEBUG] [Thread-115371] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:56:48.784 [DEBUG] [Thread-115371] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:56:48.832 [DEBUG] [Thread-115371] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:56:48.832 [DEBUG] [Thread-115371] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:56:48.841 [DEBUG] [Thread-115371] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:56:48.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:56:48.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:56:48.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:56:48.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:56:48.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:56:48.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:56:48.884 [DEBUG] [Thread-115371] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:56:51.429 [DEBUG] [Thread-115373 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:56:58.534 [DEBUG] [Thread-115374 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:57:06.494 [DEBUG] [Thread-115375 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:57:18.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:57:18.901 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:57:18.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:57:19.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 57, 13), 40.19, 5.8, 0.0, 20.45, 23.28, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:57:19.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:57:13
2025-11-03T11:57:19.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:57:19.924 [DEBUG] [Thread-115376] [transport.py] [_log()] starting thread (client mode): 0x117980a0
2025-11-03T11:57:19.925 [DEBUG] [Thread-115376] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:57:19.945 [DEBUG] [Thread-115376] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:57:19.945 [INFO] [Thread-115376] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:57:19.948 [DEBUG] [Thread-115376] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:57:19.948 [DEBUG] [Thread-115376] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:57:19.948 [DEBUG] [Thread-115376] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:57:19.948 [DEBUG] [Thread-115376] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:57:19.948 [DEBUG] [Thread-115376] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:57:19.948 [DEBUG] [Thread-115376] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:57:19.948 [DEBUG] [Thread-115376] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:57:19.948 [DEBUG] [Thread-115376] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:57:19.948 [DEBUG] [Thread-115376] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:57:19.948 [DEBUG] [Thread-115376] [transport.py] [_log()] client lang: <none>
2025-11-03T11:57:19.948 [DEBUG] [Thread-115376] [transport.py] [_log()] server lang: <none>
2025-11-03T11:57:19.949 [DEBUG] [Thread-115376] [transport.py] [_log()] kex follows: False
2025-11-03T11:57:19.949 [DEBUG] [Thread-115376] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:57:19.949 [DEBUG] [Thread-115376] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:57:19.949 [DEBUG] [Thread-115376] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:57:19.949 [DEBUG] [Thread-115376] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:57:19.949 [DEBUG] [Thread-115376] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:57:19.949 [DEBUG] [Thread-115376] [transport.py] [_log()] Compression: none
2025-11-03T11:57:19.949 [DEBUG] [Thread-115376] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:57:19.964 [DEBUG] [Thread-115376] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:57:19.964 [DEBUG] [Thread-115376] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:57:19.964 [DEBUG] [Thread-115376] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:57:19.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:57:19.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:57:19.965 [DEBUG] [Thread-115376] [transport.py] [_log()] userauth is OK
2025-11-03T11:57:19.965 [DEBUG] [Thread-115376] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:57:19.965 [DEBUG] [Thread-115376] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:57:19.965 [DEBUG] [Thread-115376] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:57:19.965 [DEBUG] [Thread-115376] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:57:19.974 [INFO] [Thread-115376] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:57:19.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:57:20.612 [DEBUG] [Thread-115376] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:57:20.612 [DEBUG] [Thread-115376] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:57:20.612 [DEBUG] [Thread-115376] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:57:20.653 [DEBUG] [Thread-115376] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:57:20.654 [DEBUG] [Thread-115376] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:57:20.656 [DEBUG] [Thread-115376] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:57:20.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:57:20.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:57:20.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:57:20.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:57:20.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:57:20.674 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:57:20.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:57:20.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:57:20.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:57:20.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.414340 -999.00  +23.20  13.17     10   -8.90 1 1 1 1 1   888    0 33.36 19.85 ----- 12.1 13.2 346.3 26.0 29.2 -28.5 28.1 -27.5 27.8 -27.0 28.4 -27.0
2025-11-03T11:57:20.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:57:20.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:57:20.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.414340
2025-11-03T11:57:20.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:57:20.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:57:20.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:57:20.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:57:20.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:57:20.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:57:13', tmtdew=40.19, humidity=5.8, cloud=0.0, wind=20.45, temperature=23.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:56:38.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:57:20.675 [DEBUG] [Thread-115376] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:57:20.750 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:57:20.762 [DEBUG] [Thread-115379] [transport.py] [_log()] starting thread (client mode): 0x81bb520
2025-11-03T11:57:20.762 [DEBUG] [Thread-115379] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:57:20.776 [DEBUG] [Thread-115379] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:57:20.776 [INFO] [Thread-115379] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:57:20.784 [DEBUG] [Thread-115379] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:57:20.784 [DEBUG] [Thread-115379] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:57:20.784 [DEBUG] [Thread-115379] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:57:20.784 [DEBUG] [Thread-115379] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:57:20.784 [DEBUG] [Thread-115379] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:57:20.784 [DEBUG] [Thread-115379] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:57:20.784 [DEBUG] [Thread-115379] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:57:20.784 [DEBUG] [Thread-115379] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:57:20.784 [DEBUG] [Thread-115379] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:57:20.784 [DEBUG] [Thread-115379] [transport.py] [_log()] client lang: <none>
2025-11-03T11:57:20.784 [DEBUG] [Thread-115379] [transport.py] [_log()] server lang: <none>
2025-11-03T11:57:20.784 [DEBUG] [Thread-115379] [transport.py] [_log()] kex follows: False
2025-11-03T11:57:20.784 [DEBUG] [Thread-115379] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:57:20.784 [DEBUG] [Thread-115379] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:57:20.784 [DEBUG] [Thread-115379] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:57:20.784 [DEBUG] [Thread-115379] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:57:20.784 [DEBUG] [Thread-115379] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:57:20.784 [DEBUG] [Thread-115379] [transport.py] [_log()] Compression: none
2025-11-03T11:57:20.784 [DEBUG] [Thread-115379] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:57:20.839 [DEBUG] [Thread-115379] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:57:20.839 [DEBUG] [Thread-115379] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:57:20.839 [DEBUG] [Thread-115379] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:57:20.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:57:20.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:57:20.896 [DEBUG] [Thread-115379] [transport.py] [_log()] userauth is OK
2025-11-03T11:57:20.896 [DEBUG] [Thread-115379] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:57:20.896 [DEBUG] [Thread-115379] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:57:20.896 [DEBUG] [Thread-115379] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:57:20.896 [DEBUG] [Thread-115379] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:57:20.913 [INFO] [Thread-115379] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:57:20.914 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:57:20.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:57:21.530 [DEBUG] [Thread-115381 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:57:21.737 [DEBUG] [Thread-115379] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:57:21.737 [DEBUG] [Thread-115379] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:57:21.784 [DEBUG] [Thread-115379] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:57:21.784 [DEBUG] [Thread-115379] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:57:21.792 [DEBUG] [Thread-115379] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:57:21.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:57:21.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:57:21.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:57:21.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:57:21.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:57:21.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:57:21.823 [DEBUG] [Thread-115379] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:57:36.026 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:57:36.027 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:57:36.576 [DEBUG] [Thread-115382 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:57:51.617 [DEBUG] [Thread-115383 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:57:51.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:57:51.821 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:57:51.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:57:52.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 57, 46), 39.81, 5.88, 0.0, 15.0, 23.43, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:57:52.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:57:46
2025-11-03T11:57:52.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:57:52.800 [DEBUG] [Thread-115384] [transport.py] [_log()] starting thread (client mode): 0x81b9ab0
2025-11-03T11:57:52.800 [DEBUG] [Thread-115384] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:57:52.820 [DEBUG] [Thread-115384] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:57:52.820 [INFO] [Thread-115384] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:57:52.823 [DEBUG] [Thread-115384] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:57:52.823 [DEBUG] [Thread-115384] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:57:52.823 [DEBUG] [Thread-115384] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:57:52.824 [DEBUG] [Thread-115384] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:57:52.824 [DEBUG] [Thread-115384] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:57:52.824 [DEBUG] [Thread-115384] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:57:52.824 [DEBUG] [Thread-115384] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:57:52.824 [DEBUG] [Thread-115384] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:57:52.824 [DEBUG] [Thread-115384] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:57:52.824 [DEBUG] [Thread-115384] [transport.py] [_log()] client lang: <none>
2025-11-03T11:57:52.824 [DEBUG] [Thread-115384] [transport.py] [_log()] server lang: <none>
2025-11-03T11:57:52.824 [DEBUG] [Thread-115384] [transport.py] [_log()] kex follows: False
2025-11-03T11:57:52.824 [DEBUG] [Thread-115384] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:57:52.824 [DEBUG] [Thread-115384] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:57:52.824 [DEBUG] [Thread-115384] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:57:52.824 [DEBUG] [Thread-115384] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:57:52.824 [DEBUG] [Thread-115384] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:57:52.824 [DEBUG] [Thread-115384] [transport.py] [_log()] Compression: none
2025-11-03T11:57:52.824 [DEBUG] [Thread-115384] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:57:52.841 [DEBUG] [Thread-115384] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:57:52.842 [DEBUG] [Thread-115384] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:57:52.842 [DEBUG] [Thread-115384] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:57:52.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:57:52.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:57:52.844 [DEBUG] [Thread-115384] [transport.py] [_log()] userauth is OK
2025-11-03T11:57:52.845 [DEBUG] [Thread-115384] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:57:52.845 [DEBUG] [Thread-115384] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:57:52.845 [DEBUG] [Thread-115384] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:57:52.845 [DEBUG] [Thread-115384] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:57:52.880 [INFO] [Thread-115384] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:57:52.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:57:53.535 [DEBUG] [Thread-115384] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:57:53.535 [DEBUG] [Thread-115384] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:57:53.536 [DEBUG] [Thread-115384] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:57:53.576 [DEBUG] [Thread-115384] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:57:53.576 [DEBUG] [Thread-115384] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:57:53.580 [DEBUG] [Thread-115384] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:57:53.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:57:53.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:57:53.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:57:53.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:57:53.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:57:53.600 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:57:53.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:57:53.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:57:53.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:57:53.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.414687 -999.00  +23.50  25.04     11   -8.60 1 1 1 1 1   888    0 32.64 16.80 ----- 16.8 25.0 8.4 27.9 29.1 -28.9 28.1 -28.4 27.8 -27.2 28.5 -28.0
2025-11-03T11:57:53.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:57:53.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:57:53.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.414687
2025-11-03T11:57:53.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:57:53.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:57:53.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:57:53.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:57:53.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:57:53.603 [DEBUG] [Thread-115384] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:57:53.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:57:46', tmtdew=39.81, humidity=5.88, cloud=0.0, wind=15.0, temperature=23.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:57:08.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:57:53.683 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:57:53.694 [DEBUG] [Thread-115387] [transport.py] [_log()] starting thread (client mode): 0x81bbfa0
2025-11-03T11:57:53.694 [DEBUG] [Thread-115387] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:57:53.710 [DEBUG] [Thread-115387] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:57:53.710 [INFO] [Thread-115387] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:57:53.718 [DEBUG] [Thread-115387] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:57:53.718 [DEBUG] [Thread-115387] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:57:53.718 [DEBUG] [Thread-115387] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:57:53.718 [DEBUG] [Thread-115387] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:57:53.718 [DEBUG] [Thread-115387] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:57:53.719 [DEBUG] [Thread-115387] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:57:53.719 [DEBUG] [Thread-115387] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:57:53.719 [DEBUG] [Thread-115387] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:57:53.719 [DEBUG] [Thread-115387] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:57:53.719 [DEBUG] [Thread-115387] [transport.py] [_log()] client lang: <none>
2025-11-03T11:57:53.719 [DEBUG] [Thread-115387] [transport.py] [_log()] server lang: <none>
2025-11-03T11:57:53.719 [DEBUG] [Thread-115387] [transport.py] [_log()] kex follows: False
2025-11-03T11:57:53.719 [DEBUG] [Thread-115387] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:57:53.720 [DEBUG] [Thread-115387] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:57:53.720 [DEBUG] [Thread-115387] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:57:53.720 [DEBUG] [Thread-115387] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:57:53.720 [DEBUG] [Thread-115387] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:57:53.720 [DEBUG] [Thread-115387] [transport.py] [_log()] Compression: none
2025-11-03T11:57:53.720 [DEBUG] [Thread-115387] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:57:53.780 [DEBUG] [Thread-115387] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:57:53.780 [DEBUG] [Thread-115387] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:57:53.781 [DEBUG] [Thread-115387] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:57:53.781 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:57:53.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:57:53.840 [DEBUG] [Thread-115387] [transport.py] [_log()] userauth is OK
2025-11-03T11:57:53.841 [DEBUG] [Thread-115387] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:57:53.841 [DEBUG] [Thread-115387] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:57:53.841 [DEBUG] [Thread-115387] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:57:53.841 [DEBUG] [Thread-115387] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:57:53.860 [INFO] [Thread-115387] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:57:53.861 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:57:54.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:57:54.747 [DEBUG] [Thread-115387] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:57:54.748 [DEBUG] [Thread-115387] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:57:54.755 [DEBUG] [Thread-115387] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:57:54.755 [DEBUG] [Thread-115387] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:57:54.765 [DEBUG] [Thread-115387] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:57:54.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:57:54.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:57:54.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:57:54.794 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:57:54.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:57:54.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:57:54.803 [DEBUG] [Thread-115387] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:57:58.572 [DEBUG] [Thread-115389 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:58:06.657 [DEBUG] [Thread-115390 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:58:21.706 [DEBUG] [Thread-115391 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:58:24.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:58:24.799 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:58:24.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:58:25.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 58, 18), 39.68, 5.93, 0.0, 17.22, 23.33, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:58:25.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:58:18
2025-11-03T11:58:25.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:58:25.756 [DEBUG] [Thread-115392] [transport.py] [_log()] starting thread (client mode): 0xedd6680
2025-11-03T11:58:25.757 [DEBUG] [Thread-115392] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:58:25.777 [DEBUG] [Thread-115392] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:58:25.777 [INFO] [Thread-115392] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:58:25.780 [DEBUG] [Thread-115392] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:58:25.781 [DEBUG] [Thread-115392] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:58:25.781 [DEBUG] [Thread-115392] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:58:25.781 [DEBUG] [Thread-115392] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:58:25.781 [DEBUG] [Thread-115392] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:58:25.781 [DEBUG] [Thread-115392] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:58:25.781 [DEBUG] [Thread-115392] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:58:25.781 [DEBUG] [Thread-115392] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:58:25.781 [DEBUG] [Thread-115392] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:58:25.781 [DEBUG] [Thread-115392] [transport.py] [_log()] client lang: <none>
2025-11-03T11:58:25.781 [DEBUG] [Thread-115392] [transport.py] [_log()] server lang: <none>
2025-11-03T11:58:25.781 [DEBUG] [Thread-115392] [transport.py] [_log()] kex follows: False
2025-11-03T11:58:25.781 [DEBUG] [Thread-115392] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:58:25.781 [DEBUG] [Thread-115392] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:58:25.781 [DEBUG] [Thread-115392] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:58:25.781 [DEBUG] [Thread-115392] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:58:25.781 [DEBUG] [Thread-115392] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:58:25.781 [DEBUG] [Thread-115392] [transport.py] [_log()] Compression: none
2025-11-03T11:58:25.782 [DEBUG] [Thread-115392] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:58:25.800 [DEBUG] [Thread-115392] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:58:25.801 [DEBUG] [Thread-115392] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:58:25.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:58:25.802 [DEBUG] [Thread-115392] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:58:25.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:58:25.804 [DEBUG] [Thread-115392] [transport.py] [_log()] userauth is OK
2025-11-03T11:58:25.804 [DEBUG] [Thread-115392] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:58:25.804 [DEBUG] [Thread-115392] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:58:25.804 [DEBUG] [Thread-115392] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:58:25.804 [DEBUG] [Thread-115392] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:58:25.828 [INFO] [Thread-115392] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:58:25.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:58:26.469 [DEBUG] [Thread-115392] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:58:26.469 [DEBUG] [Thread-115392] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:58:26.470 [DEBUG] [Thread-115392] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:58:26.510 [DEBUG] [Thread-115392] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:58:26.510 [DEBUG] [Thread-115392] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:58:26.514 [DEBUG] [Thread-115392] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:58:26.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:58:26.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:58:26.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:58:26.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:58:26.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:58:26.539 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:58:26.539 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:58:26.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:58:26.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:58:26.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.415035 -999.00  +24.00  18.81     11   -8.20 1 1 1 1 1   888    0 32.41 13.72 ----- 16.2 18.8 29.0 28.0 29.2 -28.7 28.2 -28.8 27.9 -27.2 28.6 -27.1
2025-11-03T11:58:26.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:58:26.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:58:26.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.415035
2025-11-03T11:58:26.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:58:26.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:58:26.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:58:26.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:58:26.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:58:26.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:58:18', tmtdew=39.68, humidity=5.93, cloud=0.0, wind=17.22, temperature=23.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:57:39.024', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:58:26.543 [DEBUG] [Thread-115392] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:58:26.626 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:58:26.639 [DEBUG] [Thread-115395] [transport.py] [_log()] starting thread (client mode): 0xedd42b0
2025-11-03T11:58:26.639 [DEBUG] [Thread-115395] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:58:26.654 [DEBUG] [Thread-115395] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:58:26.654 [INFO] [Thread-115395] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:58:26.662 [DEBUG] [Thread-115395] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:58:26.662 [DEBUG] [Thread-115395] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:58:26.662 [DEBUG] [Thread-115395] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:58:26.662 [DEBUG] [Thread-115395] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:58:26.662 [DEBUG] [Thread-115395] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:58:26.662 [DEBUG] [Thread-115395] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:58:26.663 [DEBUG] [Thread-115395] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:58:26.663 [DEBUG] [Thread-115395] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:58:26.663 [DEBUG] [Thread-115395] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:58:26.663 [DEBUG] [Thread-115395] [transport.py] [_log()] client lang: <none>
2025-11-03T11:58:26.663 [DEBUG] [Thread-115395] [transport.py] [_log()] server lang: <none>
2025-11-03T11:58:26.663 [DEBUG] [Thread-115395] [transport.py] [_log()] kex follows: False
2025-11-03T11:58:26.663 [DEBUG] [Thread-115395] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:58:26.663 [DEBUG] [Thread-115395] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:58:26.664 [DEBUG] [Thread-115395] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:58:26.664 [DEBUG] [Thread-115395] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:58:26.664 [DEBUG] [Thread-115395] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:58:26.664 [DEBUG] [Thread-115395] [transport.py] [_log()] Compression: none
2025-11-03T11:58:26.664 [DEBUG] [Thread-115395] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:58:26.720 [DEBUG] [Thread-115395] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:58:26.720 [DEBUG] [Thread-115395] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:58:26.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:58:26.722 [DEBUG] [Thread-115395] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:58:26.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:58:26.779 [DEBUG] [Thread-115395] [transport.py] [_log()] userauth is OK
2025-11-03T11:58:26.780 [DEBUG] [Thread-115395] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:58:26.780 [DEBUG] [Thread-115395] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:58:26.780 [DEBUG] [Thread-115395] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:58:26.780 [DEBUG] [Thread-115395] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:58:26.799 [INFO] [Thread-115395] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:58:26.800 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:58:26.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:58:27.673 [DEBUG] [Thread-115395] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:58:27.674 [DEBUG] [Thread-115395] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:58:27.721 [DEBUG] [Thread-115395] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:58:27.722 [DEBUG] [Thread-115395] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:58:27.730 [DEBUG] [Thread-115395] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:58:27.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:58:27.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:58:27.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:58:27.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:58:27.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:58:27.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:58:27.764 [DEBUG] [Thread-115395] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:58:36.168 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:58:36.169 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:58:36.739 [DEBUG] [Thread-115397 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:58:51.775 [DEBUG] [Thread-115398 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:58:57.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:58:57.758 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:58:57.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:58:58.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 58, 50), 40.38, 5.88, 0.0, 18.37, 24.28, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:58:58.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:58:50
2025-11-03T11:58:58.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:58:58.610 [DEBUG] [Thread-115399 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:58:58.702 [DEBUG] [Thread-115400] [transport.py] [_log()] starting thread (client mode): 0xedd7700
2025-11-03T11:58:58.702 [DEBUG] [Thread-115400] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:58:58.724 [DEBUG] [Thread-115400] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:58:58.724 [INFO] [Thread-115400] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:58:58.728 [DEBUG] [Thread-115400] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:58:58.728 [DEBUG] [Thread-115400] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:58:58.728 [DEBUG] [Thread-115400] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:58:58.728 [DEBUG] [Thread-115400] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:58:58.728 [DEBUG] [Thread-115400] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:58:58.728 [DEBUG] [Thread-115400] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:58:58.728 [DEBUG] [Thread-115400] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:58:58.728 [DEBUG] [Thread-115400] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:58:58.728 [DEBUG] [Thread-115400] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:58:58.728 [DEBUG] [Thread-115400] [transport.py] [_log()] client lang: <none>
2025-11-03T11:58:58.729 [DEBUG] [Thread-115400] [transport.py] [_log()] server lang: <none>
2025-11-03T11:58:58.729 [DEBUG] [Thread-115400] [transport.py] [_log()] kex follows: False
2025-11-03T11:58:58.729 [DEBUG] [Thread-115400] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:58:58.729 [DEBUG] [Thread-115400] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:58:58.729 [DEBUG] [Thread-115400] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:58:58.729 [DEBUG] [Thread-115400] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:58:58.729 [DEBUG] [Thread-115400] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:58:58.729 [DEBUG] [Thread-115400] [transport.py] [_log()] Compression: none
2025-11-03T11:58:58.729 [DEBUG] [Thread-115400] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:58:58.750 [DEBUG] [Thread-115400] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:58:58.751 [DEBUG] [Thread-115400] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:58:58.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:58:58.752 [DEBUG] [Thread-115400] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:58:58.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:58:58.754 [DEBUG] [Thread-115400] [transport.py] [_log()] userauth is OK
2025-11-03T11:58:58.755 [DEBUG] [Thread-115400] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:58:58.755 [DEBUG] [Thread-115400] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:58:58.755 [DEBUG] [Thread-115400] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:58:58.755 [DEBUG] [Thread-115400] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:58:58.790 [INFO] [Thread-115400] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:58:58.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:58:59.421 [DEBUG] [Thread-115400] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:58:59.422 [DEBUG] [Thread-115400] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:58:59.422 [DEBUG] [Thread-115400] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:58:59.463 [DEBUG] [Thread-115400] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:58:59.463 [DEBUG] [Thread-115400] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:58:59.466 [DEBUG] [Thread-115400] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:58:59.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:58:59.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:58:59.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:58:59.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:58:59.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:58:59.487 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:58:59.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:58:59.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:58:59.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:58:59.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.415729 -999.00  +24.10  13.67     10   -8.40 1 1 1 1 1   888    0 32.22 12.87 ----- 24.4 13.7 1.4 23.0 29.4 -28.6 28.2 -27.9 27.9 -27.5 28.7 -27.3
2025-11-03T11:58:59.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:58:59.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:58:59.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.415729
2025-11-03T11:58:59.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:58:59.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:58:59.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:58:59.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:58:59.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:58:59.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:58:50', tmtdew=40.38, humidity=5.88, cloud=0.0, wind=18.37, temperature=24.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:58:38.986', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:58:59.490 [DEBUG] [Thread-115400] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:58:59.573 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:58:59.585 [DEBUG] [Thread-115403] [transport.py] [_log()] starting thread (client mode): 0xedd63b0
2025-11-03T11:58:59.585 [DEBUG] [Thread-115403] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:58:59.599 [DEBUG] [Thread-115403] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:58:59.600 [INFO] [Thread-115403] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:58:59.607 [DEBUG] [Thread-115403] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:58:59.607 [DEBUG] [Thread-115403] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:58:59.607 [DEBUG] [Thread-115403] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:58:59.607 [DEBUG] [Thread-115403] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:58:59.608 [DEBUG] [Thread-115403] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:58:59.608 [DEBUG] [Thread-115403] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:58:59.608 [DEBUG] [Thread-115403] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:58:59.608 [DEBUG] [Thread-115403] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:58:59.608 [DEBUG] [Thread-115403] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:58:59.608 [DEBUG] [Thread-115403] [transport.py] [_log()] client lang: <none>
2025-11-03T11:58:59.608 [DEBUG] [Thread-115403] [transport.py] [_log()] server lang: <none>
2025-11-03T11:58:59.608 [DEBUG] [Thread-115403] [transport.py] [_log()] kex follows: False
2025-11-03T11:58:59.608 [DEBUG] [Thread-115403] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:58:59.608 [DEBUG] [Thread-115403] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:58:59.608 [DEBUG] [Thread-115403] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:58:59.608 [DEBUG] [Thread-115403] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:58:59.608 [DEBUG] [Thread-115403] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:58:59.608 [DEBUG] [Thread-115403] [transport.py] [_log()] Compression: none
2025-11-03T11:58:59.608 [DEBUG] [Thread-115403] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:58:59.667 [DEBUG] [Thread-115403] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:58:59.667 [DEBUG] [Thread-115403] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:58:59.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:58:59.668 [DEBUG] [Thread-115403] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:58:59.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:58:59.723 [DEBUG] [Thread-115403] [transport.py] [_log()] userauth is OK
2025-11-03T11:58:59.723 [DEBUG] [Thread-115403] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:58:59.723 [DEBUG] [Thread-115403] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:58:59.724 [DEBUG] [Thread-115403] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:58:59.724 [DEBUG] [Thread-115403] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:58:59.742 [INFO] [Thread-115403] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:58:59.742 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:58:59.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:59:00.585 [DEBUG] [Thread-115403] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:59:00.585 [DEBUG] [Thread-115403] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:59:00.633 [DEBUG] [Thread-115403] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:59:00.634 [DEBUG] [Thread-115403] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:59:00.644 [DEBUG] [Thread-115403] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:59:00.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:59:00.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:59:00.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:59:00.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:59:00.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:59:00.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:59:00.681 [DEBUG] [Thread-115403] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:59:06.806 [DEBUG] [Thread-115405 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:59:21.854 [DEBUG] [Thread-115406 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:59:30.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T11:59:30.690 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T11:59:30.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T11:59:31.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 59, 23), 40.67, 5.75, 0.0, 22.07, 24.32, 0, 0, 0, 2, 0, 0),)
2025-11-03T11:59:31.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:59:23
2025-11-03T11:59:31.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T11:59:31.632 [DEBUG] [Thread-115407] [transport.py] [_log()] starting thread (client mode): 0x47691d80
2025-11-03T11:59:31.632 [DEBUG] [Thread-115407] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:59:31.652 [DEBUG] [Thread-115407] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T11:59:31.652 [INFO] [Thread-115407] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T11:59:31.655 [DEBUG] [Thread-115407] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:59:31.655 [DEBUG] [Thread-115407] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T11:59:31.655 [DEBUG] [Thread-115407] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:59:31.655 [DEBUG] [Thread-115407] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:59:31.655 [DEBUG] [Thread-115407] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:59:31.655 [DEBUG] [Thread-115407] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:59:31.655 [DEBUG] [Thread-115407] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:59:31.655 [DEBUG] [Thread-115407] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:59:31.655 [DEBUG] [Thread-115407] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:59:31.655 [DEBUG] [Thread-115407] [transport.py] [_log()] client lang: <none>
2025-11-03T11:59:31.655 [DEBUG] [Thread-115407] [transport.py] [_log()] server lang: <none>
2025-11-03T11:59:31.655 [DEBUG] [Thread-115407] [transport.py] [_log()] kex follows: False
2025-11-03T11:59:31.655 [DEBUG] [Thread-115407] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:59:31.655 [DEBUG] [Thread-115407] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:59:31.655 [DEBUG] [Thread-115407] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:59:31.655 [DEBUG] [Thread-115407] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:59:31.655 [DEBUG] [Thread-115407] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:59:31.655 [DEBUG] [Thread-115407] [transport.py] [_log()] Compression: none
2025-11-03T11:59:31.655 [DEBUG] [Thread-115407] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:59:31.671 [DEBUG] [Thread-115407] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:59:31.672 [DEBUG] [Thread-115407] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:59:31.672 [DEBUG] [Thread-115407] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T11:59:31.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T11:59:31.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:59:31.674 [DEBUG] [Thread-115407] [transport.py] [_log()] userauth is OK
2025-11-03T11:59:31.675 [DEBUG] [Thread-115407] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:59:31.675 [DEBUG] [Thread-115407] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:59:31.675 [DEBUG] [Thread-115407] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T11:59:31.675 [DEBUG] [Thread-115407] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:59:31.712 [INFO] [Thread-115407] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:59:31.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:59:32.360 [DEBUG] [Thread-115407] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:59:32.361 [DEBUG] [Thread-115407] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:59:32.361 [DEBUG] [Thread-115407] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T11:59:32.401 [DEBUG] [Thread-115407] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:59:32.401 [DEBUG] [Thread-115407] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:59:32.405 [DEBUG] [Thread-115407] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:59:32.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:59:32.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T11:59:32.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T11:59:32.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T11:59:32.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:59:32.431 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T11:59:32.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:59:32.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:59:32.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T11:59:32.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.416076 -999.00  +24.20  20.88     10   -8.40 1 1 1 1 1   888    0 32.88 11.09 ----- 18.4 20.9 21.1 30.9 29.3 -28.8 28.3 -28.7 27.9 -27.0 28.8 -27.4
2025-11-03T11:59:32.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T11:59:32.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T11:59:32.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.416076
2025-11-03T11:59:32.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T11:59:32.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T11:59:32.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T11:59:32.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T11:59:32.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T11:59:32.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:59:23', tmtdew=40.67, humidity=5.75, cloud=0.0, wind=22.07, temperature=24.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:59:08.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T11:59:32.434 [DEBUG] [Thread-115407] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:59:32.517 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T11:59:32.530 [DEBUG] [Thread-115410] [transport.py] [_log()] starting thread (client mode): 0xedd4bb0
2025-11-03T11:59:32.530 [DEBUG] [Thread-115410] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T11:59:32.545 [DEBUG] [Thread-115410] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T11:59:32.545 [INFO] [Thread-115410] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T11:59:32.552 [DEBUG] [Thread-115410] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T11:59:32.553 [DEBUG] [Thread-115410] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T11:59:32.553 [DEBUG] [Thread-115410] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T11:59:32.553 [DEBUG] [Thread-115410] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:59:32.553 [DEBUG] [Thread-115410] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T11:59:32.553 [DEBUG] [Thread-115410] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:59:32.553 [DEBUG] [Thread-115410] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T11:59:32.553 [DEBUG] [Thread-115410] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T11:59:32.553 [DEBUG] [Thread-115410] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T11:59:32.553 [DEBUG] [Thread-115410] [transport.py] [_log()] client lang: <none>
2025-11-03T11:59:32.553 [DEBUG] [Thread-115410] [transport.py] [_log()] server lang: <none>
2025-11-03T11:59:32.553 [DEBUG] [Thread-115410] [transport.py] [_log()] kex follows: False
2025-11-03T11:59:32.553 [DEBUG] [Thread-115410] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T11:59:32.553 [DEBUG] [Thread-115410] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T11:59:32.553 [DEBUG] [Thread-115410] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T11:59:32.553 [DEBUG] [Thread-115410] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T11:59:32.553 [DEBUG] [Thread-115410] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T11:59:32.553 [DEBUG] [Thread-115410] [transport.py] [_log()] Compression: none
2025-11-03T11:59:32.553 [DEBUG] [Thread-115410] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T11:59:32.611 [DEBUG] [Thread-115410] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T11:59:32.611 [DEBUG] [Thread-115410] [transport.py] [_log()] Switch to new keys ...
2025-11-03T11:59:32.612 [DEBUG] [Thread-115410] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T11:59:32.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T11:59:32.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T11:59:32.667 [DEBUG] [Thread-115410] [transport.py] [_log()] userauth is OK
2025-11-03T11:59:32.667 [DEBUG] [Thread-115410] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T11:59:32.667 [DEBUG] [Thread-115410] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T11:59:32.667 [DEBUG] [Thread-115410] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T11:59:32.668 [DEBUG] [Thread-115410] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T11:59:32.690 [INFO] [Thread-115410] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T11:59:32.691 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T11:59:32.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T11:59:33.512 [DEBUG] [Thread-115410] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T11:59:33.512 [DEBUG] [Thread-115410] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T11:59:33.560 [DEBUG] [Thread-115410] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T11:59:33.560 [DEBUG] [Thread-115410] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T11:59:33.568 [DEBUG] [Thread-115410] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T11:59:33.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T11:59:33.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T11:59:33.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T11:59:33.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T11:59:33.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T11:59:33.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T11:59:33.599 [DEBUG] [Thread-115410] [transport.py] [_log()] EOF in transport thread
2025-11-03T11:59:36.311 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:59:36.312 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:59:36.897 [DEBUG] [Thread-115412 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:59:51.940 [DEBUG] [Thread-115413 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T11:59:58.656 [DEBUG] [Thread-115414 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:00:03.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:00:03.613 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:00:03.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:00:04.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 11, 59, 55), 41.02, 5.7, 0.0, 25.86, 24.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:00:04.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 11:59:55
2025-11-03T12:00:04.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:00:04.568 [DEBUG] [Thread-115415] [transport.py] [_log()] starting thread (client mode): 0xedd6680
2025-11-03T12:00:04.569 [DEBUG] [Thread-115415] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:00:04.588 [DEBUG] [Thread-115415] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:00:04.589 [INFO] [Thread-115415] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:00:04.592 [DEBUG] [Thread-115415] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:00:04.592 [DEBUG] [Thread-115415] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:00:04.592 [DEBUG] [Thread-115415] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:00:04.592 [DEBUG] [Thread-115415] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:00:04.592 [DEBUG] [Thread-115415] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:00:04.592 [DEBUG] [Thread-115415] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:00:04.592 [DEBUG] [Thread-115415] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:00:04.592 [DEBUG] [Thread-115415] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:00:04.592 [DEBUG] [Thread-115415] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:00:04.592 [DEBUG] [Thread-115415] [transport.py] [_log()] client lang: <none>
2025-11-03T12:00:04.592 [DEBUG] [Thread-115415] [transport.py] [_log()] server lang: <none>
2025-11-03T12:00:04.592 [DEBUG] [Thread-115415] [transport.py] [_log()] kex follows: False
2025-11-03T12:00:04.592 [DEBUG] [Thread-115415] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:00:04.592 [DEBUG] [Thread-115415] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:00:04.592 [DEBUG] [Thread-115415] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:00:04.592 [DEBUG] [Thread-115415] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:00:04.593 [DEBUG] [Thread-115415] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:00:04.593 [DEBUG] [Thread-115415] [transport.py] [_log()] Compression: none
2025-11-03T12:00:04.593 [DEBUG] [Thread-115415] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:00:04.609 [DEBUG] [Thread-115415] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:00:04.610 [DEBUG] [Thread-115415] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:00:04.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:00:04.610 [DEBUG] [Thread-115415] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:00:04.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:00:04.612 [DEBUG] [Thread-115415] [transport.py] [_log()] userauth is OK
2025-11-03T12:00:04.612 [DEBUG] [Thread-115415] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:00:04.612 [DEBUG] [Thread-115415] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:00:04.612 [DEBUG] [Thread-115415] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:00:04.612 [DEBUG] [Thread-115415] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:00:04.630 [INFO] [Thread-115415] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:00:04.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:00:06.971 [DEBUG] [Thread-115417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:00:13.981 [DEBUG] [Thread-115415] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:00:13.981 [DEBUG] [Thread-115415] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:00:13.981 [DEBUG] [Thread-115415] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:00:14.013 [DEBUG] [Thread-115415] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:00:14.013 [DEBUG] [Thread-115415] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:00:14.016 [DEBUG] [Thread-115415] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:00:14.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:00:14.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:00:14.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:00:14.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:00:14.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:00:14.047 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:00:14.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:00:14.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:00:14.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:00:14.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.416423 -999.00  +24.00  16.73     10   -8.70 1 1 1 1 1   888    0 33.22 13.27 ----- 26.7 16.7 17.2 28.2 29.4 -29.0 28.2 -29.1 27.9 -27.2 28.6 -29.7
2025-11-03T12:00:14.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:00:14.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:00:14.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.416423
2025-11-03T12:00:14.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:00:14.050 [DEBUG] [Thread-115415] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:00:14.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:00:14.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:00:14.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:00:14.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:00:14.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T11:59:55', tmtdew=41.02, humidity=5.7, cloud=0.0, wind=25.86, temperature=24.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T09:59:38.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:00:14.135 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:00:14.147 [DEBUG] [Thread-115419] [transport.py] [_log()] starting thread (client mode): 0xedd6ce0
2025-11-03T12:00:14.148 [DEBUG] [Thread-115419] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:00:14.163 [DEBUG] [Thread-115419] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:00:14.163 [INFO] [Thread-115419] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:00:14.171 [DEBUG] [Thread-115419] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:00:14.171 [DEBUG] [Thread-115419] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:00:14.171 [DEBUG] [Thread-115419] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:00:14.171 [DEBUG] [Thread-115419] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:00:14.171 [DEBUG] [Thread-115419] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:00:14.171 [DEBUG] [Thread-115419] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:00:14.171 [DEBUG] [Thread-115419] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:00:14.171 [DEBUG] [Thread-115419] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:00:14.171 [DEBUG] [Thread-115419] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:00:14.171 [DEBUG] [Thread-115419] [transport.py] [_log()] client lang: <none>
2025-11-03T12:00:14.171 [DEBUG] [Thread-115419] [transport.py] [_log()] server lang: <none>
2025-11-03T12:00:14.171 [DEBUG] [Thread-115419] [transport.py] [_log()] kex follows: False
2025-11-03T12:00:14.171 [DEBUG] [Thread-115419] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:00:14.171 [DEBUG] [Thread-115419] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:00:14.171 [DEBUG] [Thread-115419] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:00:14.171 [DEBUG] [Thread-115419] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:00:14.180 [DEBUG] [Thread-115419] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:00:14.180 [DEBUG] [Thread-115419] [transport.py] [_log()] Compression: none
2025-11-03T12:00:14.180 [DEBUG] [Thread-115419] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:00:14.230 [DEBUG] [Thread-115419] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:00:14.231 [DEBUG] [Thread-115419] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:00:14.231 [DEBUG] [Thread-115419] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:00:14.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:00:14.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:00:14.287 [DEBUG] [Thread-115419] [transport.py] [_log()] userauth is OK
2025-11-03T12:00:14.288 [DEBUG] [Thread-115419] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:00:14.288 [DEBUG] [Thread-115419] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:00:14.288 [DEBUG] [Thread-115419] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:00:14.288 [DEBUG] [Thread-115419] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:00:14.315 [INFO] [Thread-115419] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:00:14.316 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:00:14.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:00:15.161 [DEBUG] [Thread-115419] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:00:15.162 [DEBUG] [Thread-115419] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:00:15.209 [DEBUG] [Thread-115419] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:00:15.209 [DEBUG] [Thread-115419] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:00:15.219 [DEBUG] [Thread-115419] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:00:15.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:00:15.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:00:15.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:00:15.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:00:15.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:00:15.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:00:15.256 [DEBUG] [Thread-115419] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:00:22.017 [DEBUG] [Thread-115421 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:00:36.452 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:00:36.453 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:00:37.060 [DEBUG] [Thread-115422 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:00:45.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:00:45.278 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:00:45.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:00:45.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 0, 27), 41.32, 5.58, 0.0, 24.91, 24.51, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:00:45.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:00:27
2025-11-03T12:00:46.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:00:46.251 [DEBUG] [Thread-115423] [transport.py] [_log()] starting thread (client mode): 0xedd6410
2025-11-03T12:00:46.251 [DEBUG] [Thread-115423] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:00:46.271 [DEBUG] [Thread-115423] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:00:46.271 [INFO] [Thread-115423] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:00:46.274 [DEBUG] [Thread-115423] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:00:46.274 [DEBUG] [Thread-115423] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:00:46.274 [DEBUG] [Thread-115423] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:00:46.274 [DEBUG] [Thread-115423] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:00:46.274 [DEBUG] [Thread-115423] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:00:46.274 [DEBUG] [Thread-115423] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:00:46.274 [DEBUG] [Thread-115423] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:00:46.274 [DEBUG] [Thread-115423] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:00:46.274 [DEBUG] [Thread-115423] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:00:46.274 [DEBUG] [Thread-115423] [transport.py] [_log()] client lang: <none>
2025-11-03T12:00:46.274 [DEBUG] [Thread-115423] [transport.py] [_log()] server lang: <none>
2025-11-03T12:00:46.274 [DEBUG] [Thread-115423] [transport.py] [_log()] kex follows: False
2025-11-03T12:00:46.275 [DEBUG] [Thread-115423] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:00:46.275 [DEBUG] [Thread-115423] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:00:46.275 [DEBUG] [Thread-115423] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:00:46.275 [DEBUG] [Thread-115423] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:00:46.275 [DEBUG] [Thread-115423] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:00:46.275 [DEBUG] [Thread-115423] [transport.py] [_log()] Compression: none
2025-11-03T12:00:46.275 [DEBUG] [Thread-115423] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:00:46.289 [DEBUG] [Thread-115423] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:00:46.289 [DEBUG] [Thread-115423] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:00:46.289 [DEBUG] [Thread-115423] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:00:46.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:00:46.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:00:46.332 [DEBUG] [Thread-115423] [transport.py] [_log()] userauth is OK
2025-11-03T12:00:46.332 [DEBUG] [Thread-115423] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:00:46.332 [DEBUG] [Thread-115423] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:00:46.332 [DEBUG] [Thread-115423] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:00:46.332 [DEBUG] [Thread-115423] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:00:46.347 [INFO] [Thread-115423] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:00:46.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:00:46.973 [DEBUG] [Thread-115423] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:00:46.973 [DEBUG] [Thread-115423] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:00:46.973 [DEBUG] [Thread-115423] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:00:47.015 [DEBUG] [Thread-115423] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:00:47.015 [DEBUG] [Thread-115423] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:00:47.018 [DEBUG] [Thread-115423] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:00:47.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:00:47.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:00:47.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:00:47.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:00:47.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:00:47.039 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:00:47.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:00:47.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:00:47.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:00:47.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.416770 -999.00  +23.90  20.95     10   -9.20 1 1 1 1 1   888    0 32.82 16.63 ----- 22.5 20.9 16.6 40.9 29.1 -29.4 28.3 -29.7 27.8 -29.4 28.6 -28.2
2025-11-03T12:00:47.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:00:47.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:00:47.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.416770
2025-11-03T12:00:47.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:00:47.048 [DEBUG] [Thread-115423] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:00:47.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:00:47.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:00:47.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:00:47.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:00:47.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:00:27', tmtdew=41.32, humidity=5.58, cloud=0.0, wind=24.91, temperature=24.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:00:08.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:00:47.132 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:00:47.143 [DEBUG] [Thread-115426] [transport.py] [_log()] starting thread (client mode): 0xedd6020
2025-11-03T12:00:47.143 [DEBUG] [Thread-115426] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:00:47.158 [DEBUG] [Thread-115426] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:00:47.158 [INFO] [Thread-115426] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:00:47.166 [DEBUG] [Thread-115426] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:00:47.166 [DEBUG] [Thread-115426] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:00:47.167 [DEBUG] [Thread-115426] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:00:47.167 [DEBUG] [Thread-115426] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:00:47.167 [DEBUG] [Thread-115426] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:00:47.167 [DEBUG] [Thread-115426] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:00:47.167 [DEBUG] [Thread-115426] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:00:47.167 [DEBUG] [Thread-115426] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:00:47.167 [DEBUG] [Thread-115426] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:00:47.168 [DEBUG] [Thread-115426] [transport.py] [_log()] client lang: <none>
2025-11-03T12:00:47.168 [DEBUG] [Thread-115426] [transport.py] [_log()] server lang: <none>
2025-11-03T12:00:47.168 [DEBUG] [Thread-115426] [transport.py] [_log()] kex follows: False
2025-11-03T12:00:47.168 [DEBUG] [Thread-115426] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:00:47.168 [DEBUG] [Thread-115426] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:00:47.177 [DEBUG] [Thread-115426] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:00:47.177 [DEBUG] [Thread-115426] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:00:47.177 [DEBUG] [Thread-115426] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:00:47.177 [DEBUG] [Thread-115426] [transport.py] [_log()] Compression: none
2025-11-03T12:00:47.178 [DEBUG] [Thread-115426] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:00:47.225 [DEBUG] [Thread-115426] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:00:47.226 [DEBUG] [Thread-115426] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:00:47.227 [DEBUG] [Thread-115426] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:00:47.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:00:47.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:00:47.282 [DEBUG] [Thread-115426] [transport.py] [_log()] userauth is OK
2025-11-03T12:00:47.282 [DEBUG] [Thread-115426] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:00:47.282 [DEBUG] [Thread-115426] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:00:47.282 [DEBUG] [Thread-115426] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:00:47.282 [DEBUG] [Thread-115426] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:00:47.302 [INFO] [Thread-115426] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:00:47.302 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:00:47.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:00:48.154 [DEBUG] [Thread-115426] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:00:48.154 [DEBUG] [Thread-115426] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:00:48.203 [DEBUG] [Thread-115426] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:00:48.203 [DEBUG] [Thread-115426] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:00:48.212 [DEBUG] [Thread-115426] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:00:48.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:00:48.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:00:48.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:00:48.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:00:48.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:00:48.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:00:48.251 [DEBUG] [Thread-115426] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:00:52.092 [DEBUG] [Thread-115428 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:00:58.707 [DEBUG] [Thread-115429 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:01:07.154 [DEBUG] [Thread-115430 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:01:18.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:01:18.274 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:01:18.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:01:18.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 0, 59), 41.6, 5.03, 0.0, 24.91, 24.5, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:01:18.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:00:59
2025-11-03T12:01:19.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:01:19.215 [DEBUG] [Thread-115431] [transport.py] [_log()] starting thread (client mode): 0xedd6e90
2025-11-03T12:01:19.216 [DEBUG] [Thread-115431] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:01:19.236 [DEBUG] [Thread-115431] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:01:19.236 [INFO] [Thread-115431] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:01:19.239 [DEBUG] [Thread-115431] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:01:19.239 [DEBUG] [Thread-115431] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:01:19.239 [DEBUG] [Thread-115431] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:01:19.239 [DEBUG] [Thread-115431] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:01:19.239 [DEBUG] [Thread-115431] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:01:19.239 [DEBUG] [Thread-115431] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:01:19.239 [DEBUG] [Thread-115431] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:01:19.239 [DEBUG] [Thread-115431] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:01:19.239 [DEBUG] [Thread-115431] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:01:19.239 [DEBUG] [Thread-115431] [transport.py] [_log()] client lang: <none>
2025-11-03T12:01:19.239 [DEBUG] [Thread-115431] [transport.py] [_log()] server lang: <none>
2025-11-03T12:01:19.239 [DEBUG] [Thread-115431] [transport.py] [_log()] kex follows: False
2025-11-03T12:01:19.239 [DEBUG] [Thread-115431] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:01:19.240 [DEBUG] [Thread-115431] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:01:19.240 [DEBUG] [Thread-115431] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:01:19.248 [DEBUG] [Thread-115431] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:01:19.249 [DEBUG] [Thread-115431] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:01:19.249 [DEBUG] [Thread-115431] [transport.py] [_log()] Compression: none
2025-11-03T12:01:19.249 [DEBUG] [Thread-115431] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:01:19.265 [DEBUG] [Thread-115431] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:01:19.265 [DEBUG] [Thread-115431] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:01:19.265 [DEBUG] [Thread-115431] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:01:19.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:01:19.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:01:19.266 [DEBUG] [Thread-115431] [transport.py] [_log()] userauth is OK
2025-11-03T12:01:19.266 [DEBUG] [Thread-115431] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:01:19.266 [DEBUG] [Thread-115431] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:01:19.266 [DEBUG] [Thread-115431] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:01:19.266 [DEBUG] [Thread-115431] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:01:19.275 [INFO] [Thread-115431] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:01:19.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:01:20.044 [DEBUG] [Thread-115431] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:01:20.044 [DEBUG] [Thread-115431] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:01:20.045 [DEBUG] [Thread-115431] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:01:20.085 [DEBUG] [Thread-115431] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:01:20.085 [DEBUG] [Thread-115431] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:01:20.088 [DEBUG] [Thread-115431] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:01:20.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:01:20.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:01:20.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:01:20.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:01:20.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:01:20.122 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:01:20.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:01:20.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:01:20.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:01:20.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.417118 -999.00  +23.90  28.48     10   -9.10 1 1 1 1 1   888    0 33.32 21.89 ----- 23.6 28.5 9.4 43.2 29.1 -29.1 28.1 -27.8 27.9 -27.4 28.4 -27.3
2025-11-03T12:01:20.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:01:20.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:01:20.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.417118
2025-11-03T12:01:20.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:01:20.124 [DEBUG] [Thread-115431] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:01:20.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:01:20.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:01:20.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:01:20.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:01:20.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:00:59', tmtdew=41.6, humidity=5.03, cloud=0.0, wind=24.91, temperature=24.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:00:38.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:01:20.207 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:01:20.220 [DEBUG] [Thread-115434] [transport.py] [_log()] starting thread (client mode): 0xedd5ff0
2025-11-03T12:01:20.220 [DEBUG] [Thread-115434] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:01:20.234 [DEBUG] [Thread-115434] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:01:20.235 [INFO] [Thread-115434] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:01:20.242 [DEBUG] [Thread-115434] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:01:20.243 [DEBUG] [Thread-115434] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:01:20.243 [DEBUG] [Thread-115434] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:01:20.243 [DEBUG] [Thread-115434] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:01:20.243 [DEBUG] [Thread-115434] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:01:20.243 [DEBUG] [Thread-115434] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:01:20.244 [DEBUG] [Thread-115434] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:01:20.244 [DEBUG] [Thread-115434] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:01:20.244 [DEBUG] [Thread-115434] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:01:20.244 [DEBUG] [Thread-115434] [transport.py] [_log()] client lang: <none>
2025-11-03T12:01:20.244 [DEBUG] [Thread-115434] [transport.py] [_log()] server lang: <none>
2025-11-03T12:01:20.244 [DEBUG] [Thread-115434] [transport.py] [_log()] kex follows: False
2025-11-03T12:01:20.244 [DEBUG] [Thread-115434] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:01:20.244 [DEBUG] [Thread-115434] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:01:20.244 [DEBUG] [Thread-115434] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:01:20.244 [DEBUG] [Thread-115434] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:01:20.245 [DEBUG] [Thread-115434] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:01:20.245 [DEBUG] [Thread-115434] [transport.py] [_log()] Compression: none
2025-11-03T12:01:20.245 [DEBUG] [Thread-115434] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:01:20.300 [DEBUG] [Thread-115434] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:01:20.300 [DEBUG] [Thread-115434] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:01:20.301 [DEBUG] [Thread-115434] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:01:20.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:01:20.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:01:20.356 [DEBUG] [Thread-115434] [transport.py] [_log()] userauth is OK
2025-11-03T12:01:20.357 [DEBUG] [Thread-115434] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:01:20.357 [DEBUG] [Thread-115434] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:01:20.357 [DEBUG] [Thread-115434] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:01:20.357 [DEBUG] [Thread-115434] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:01:20.376 [INFO] [Thread-115434] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:01:20.377 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:01:20.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:01:21.219 [DEBUG] [Thread-115434] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:01:21.219 [DEBUG] [Thread-115434] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:01:21.267 [DEBUG] [Thread-115434] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:01:21.267 [DEBUG] [Thread-115434] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:01:21.277 [DEBUG] [Thread-115434] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:01:21.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:01:21.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:01:21.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:01:21.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:01:21.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:01:21.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:01:21.313 [DEBUG] [Thread-115434] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:01:22.188 [DEBUG] [Thread-115436 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:01:36.593 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:01:36.594 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:01:37.243 [DEBUG] [Thread-115437 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:01:51.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:01:51.336 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:01:51.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:01:52.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 1, 32), 41.51, 5.05, 0.0, 23.94, 24.33, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:01:52.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:01:32
2025-11-03T12:01:52.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:01:52.278 [DEBUG] [Thread-115438 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:01:52.408 [DEBUG] [Thread-115439] [transport.py] [_log()] starting thread (client mode): 0xedd53f0
2025-11-03T12:01:52.408 [DEBUG] [Thread-115439] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:01:52.428 [DEBUG] [Thread-115439] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:01:52.428 [INFO] [Thread-115439] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:01:52.429 [DEBUG] [Thread-115439] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:01:52.429 [DEBUG] [Thread-115439] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:01:52.429 [DEBUG] [Thread-115439] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:01:52.429 [DEBUG] [Thread-115439] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:01:52.429 [DEBUG] [Thread-115439] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:01:52.429 [DEBUG] [Thread-115439] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:01:52.429 [DEBUG] [Thread-115439] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:01:52.429 [DEBUG] [Thread-115439] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:01:52.429 [DEBUG] [Thread-115439] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:01:52.430 [DEBUG] [Thread-115439] [transport.py] [_log()] client lang: <none>
2025-11-03T12:01:52.430 [DEBUG] [Thread-115439] [transport.py] [_log()] server lang: <none>
2025-11-03T12:01:52.430 [DEBUG] [Thread-115439] [transport.py] [_log()] kex follows: False
2025-11-03T12:01:52.430 [DEBUG] [Thread-115439] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:01:52.430 [DEBUG] [Thread-115439] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:01:52.430 [DEBUG] [Thread-115439] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:01:52.430 [DEBUG] [Thread-115439] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:01:52.430 [DEBUG] [Thread-115439] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:01:52.430 [DEBUG] [Thread-115439] [transport.py] [_log()] Compression: none
2025-11-03T12:01:52.430 [DEBUG] [Thread-115439] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:01:52.445 [DEBUG] [Thread-115439] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:01:52.446 [DEBUG] [Thread-115439] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:01:52.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:01:52.446 [DEBUG] [Thread-115439] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:01:52.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:01:52.446 [DEBUG] [Thread-115439] [transport.py] [_log()] userauth is OK
2025-11-03T12:01:52.447 [DEBUG] [Thread-115439] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:01:52.447 [DEBUG] [Thread-115439] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:01:52.447 [DEBUG] [Thread-115439] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:01:52.447 [DEBUG] [Thread-115439] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:01:52.457 [INFO] [Thread-115439] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:01:52.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:01:53.057 [DEBUG] [Thread-115439] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:01:53.057 [DEBUG] [Thread-115439] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:01:53.057 [DEBUG] [Thread-115439] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:01:53.097 [DEBUG] [Thread-115439] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:01:53.097 [DEBUG] [Thread-115439] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:01:53.100 [DEBUG] [Thread-115439] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:01:53.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:01:53.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:01:53.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:01:53.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:01:53.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:01:53.117 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:01:53.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:01:53.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:01:53.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:01:53.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.417465 -999.00  +23.80  24.24     10   -9.50 1 1 1 1 1   888    0 32.80 24.29 ----- 24.8 24.2 341.5 29.5 28.9 -30.3 28.1 -28.7 27.8 -28.4 28.4 -31.3
2025-11-03T12:01:53.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:01:53.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:01:53.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.417465
2025-11-03T12:01:53.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:01:53.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:01:53.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:01:53.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:01:53.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:01:53.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:01:32', tmtdew=41.51, humidity=5.05, cloud=0.0, wind=23.94, temperature=24.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:01:08.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:01:53.118 [DEBUG] [Thread-115439] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:01:53.194 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:01:53.205 [DEBUG] [Thread-115442] [transport.py] [_log()] starting thread (client mode): 0xedd7ca0
2025-11-03T12:01:53.205 [DEBUG] [Thread-115442] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:01:53.220 [DEBUG] [Thread-115442] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:01:53.220 [INFO] [Thread-115442] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:01:53.227 [DEBUG] [Thread-115442] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:01:53.228 [DEBUG] [Thread-115442] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:01:53.228 [DEBUG] [Thread-115442] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:01:53.228 [DEBUG] [Thread-115442] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:01:53.228 [DEBUG] [Thread-115442] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:01:53.228 [DEBUG] [Thread-115442] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:01:53.228 [DEBUG] [Thread-115442] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:01:53.228 [DEBUG] [Thread-115442] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:01:53.228 [DEBUG] [Thread-115442] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:01:53.228 [DEBUG] [Thread-115442] [transport.py] [_log()] client lang: <none>
2025-11-03T12:01:53.228 [DEBUG] [Thread-115442] [transport.py] [_log()] server lang: <none>
2025-11-03T12:01:53.228 [DEBUG] [Thread-115442] [transport.py] [_log()] kex follows: False
2025-11-03T12:01:53.228 [DEBUG] [Thread-115442] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:01:53.228 [DEBUG] [Thread-115442] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:01:53.228 [DEBUG] [Thread-115442] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:01:53.228 [DEBUG] [Thread-115442] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:01:53.228 [DEBUG] [Thread-115442] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:01:53.228 [DEBUG] [Thread-115442] [transport.py] [_log()] Compression: none
2025-11-03T12:01:53.228 [DEBUG] [Thread-115442] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:01:53.286 [DEBUG] [Thread-115442] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:01:53.286 [DEBUG] [Thread-115442] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:01:53.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:01:53.287 [DEBUG] [Thread-115442] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:01:53.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:01:53.344 [DEBUG] [Thread-115442] [transport.py] [_log()] userauth is OK
2025-11-03T12:01:53.344 [DEBUG] [Thread-115442] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:01:53.344 [DEBUG] [Thread-115442] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:01:53.344 [DEBUG] [Thread-115442] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:01:53.344 [DEBUG] [Thread-115442] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:01:53.361 [INFO] [Thread-115442] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:01:53.361 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:01:53.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:01:54.249 [DEBUG] [Thread-115442] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:01:54.249 [DEBUG] [Thread-115442] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:01:54.296 [DEBUG] [Thread-115442] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:01:54.296 [DEBUG] [Thread-115442] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:01:54.305 [DEBUG] [Thread-115442] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:01:54.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:01:54.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:01:54.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:01:54.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:01:54.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:01:54.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:01:54.337 [DEBUG] [Thread-115442] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:01:58.755 [DEBUG] [Thread-115444 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:02:07.307 [DEBUG] [Thread-115445 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:02:22.350 [DEBUG] [Thread-115446 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:02:24.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:02:24.359 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:02:24.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:02:25.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 2, 4), 41.36, 5.1, 0.0, 23.41, 24.21, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:02:25.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:02:04
2025-11-03T12:02:25.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:02:25.409 [DEBUG] [Thread-115447] [transport.py] [_log()] starting thread (client mode): 0xedd6680
2025-11-03T12:02:25.409 [DEBUG] [Thread-115447] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:02:25.430 [DEBUG] [Thread-115447] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:02:25.431 [INFO] [Thread-115447] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:02:25.432 [DEBUG] [Thread-115447] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:02:25.432 [DEBUG] [Thread-115447] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:02:25.432 [DEBUG] [Thread-115447] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:02:25.432 [DEBUG] [Thread-115447] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:02:25.432 [DEBUG] [Thread-115447] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:02:25.432 [DEBUG] [Thread-115447] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:02:25.432 [DEBUG] [Thread-115447] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:02:25.432 [DEBUG] [Thread-115447] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:02:25.432 [DEBUG] [Thread-115447] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:02:25.432 [DEBUG] [Thread-115447] [transport.py] [_log()] client lang: <none>
2025-11-03T12:02:25.432 [DEBUG] [Thread-115447] [transport.py] [_log()] server lang: <none>
2025-11-03T12:02:25.432 [DEBUG] [Thread-115447] [transport.py] [_log()] kex follows: False
2025-11-03T12:02:25.432 [DEBUG] [Thread-115447] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:02:25.432 [DEBUG] [Thread-115447] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:02:25.432 [DEBUG] [Thread-115447] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:02:25.432 [DEBUG] [Thread-115447] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:02:25.432 [DEBUG] [Thread-115447] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:02:25.432 [DEBUG] [Thread-115447] [transport.py] [_log()] Compression: none
2025-11-03T12:02:25.433 [DEBUG] [Thread-115447] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:02:25.451 [DEBUG] [Thread-115447] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:02:25.452 [DEBUG] [Thread-115447] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:02:25.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:02:25.463 [DEBUG] [Thread-115447] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:02:25.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:02:25.465 [DEBUG] [Thread-115447] [transport.py] [_log()] userauth is OK
2025-11-03T12:02:25.465 [DEBUG] [Thread-115447] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:02:25.465 [DEBUG] [Thread-115447] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:02:25.465 [DEBUG] [Thread-115447] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:02:25.465 [DEBUG] [Thread-115447] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:02:25.489 [INFO] [Thread-115447] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:02:25.489 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:02:26.244 [DEBUG] [Thread-115447] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:02:26.245 [DEBUG] [Thread-115447] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:02:26.245 [DEBUG] [Thread-115447] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:02:26.286 [DEBUG] [Thread-115447] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:02:26.286 [DEBUG] [Thread-115447] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:02:26.290 [DEBUG] [Thread-115447] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:02:26.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:02:26.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:02:26.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:02:26.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:02:26.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:02:26.315 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:02:26.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:02:26.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:02:26.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:02:26.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.417812 -999.00  +23.10  26.99     10   -9.60 1 1 1 1 1   888    0 33.56 26.05 ----- 20.8 27.0 340.7 35.4 29.0 -30.1 28.0 -29.3 27.8 -29.1 28.4 -27.3
2025-11-03T12:02:26.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:02:26.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:02:26.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.417812
2025-11-03T12:02:26.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:02:26.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:02:26.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:02:26.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:02:26.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:02:26.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:02:04', tmtdew=41.36, humidity=5.1, cloud=0.0, wind=23.41, temperature=24.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:01:38.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:02:26.318 [DEBUG] [Thread-115447] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:02:26.402 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:02:26.414 [DEBUG] [Thread-115450] [transport.py] [_log()] starting thread (client mode): 0xedd45b0
2025-11-03T12:02:26.414 [DEBUG] [Thread-115450] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:02:26.429 [DEBUG] [Thread-115450] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:02:26.429 [INFO] [Thread-115450] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:02:26.437 [DEBUG] [Thread-115450] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:02:26.437 [DEBUG] [Thread-115450] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:02:26.437 [DEBUG] [Thread-115450] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:02:26.437 [DEBUG] [Thread-115450] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:02:26.437 [DEBUG] [Thread-115450] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:02:26.437 [DEBUG] [Thread-115450] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:02:26.437 [DEBUG] [Thread-115450] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:02:26.437 [DEBUG] [Thread-115450] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:02:26.437 [DEBUG] [Thread-115450] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:02:26.437 [DEBUG] [Thread-115450] [transport.py] [_log()] client lang: <none>
2025-11-03T12:02:26.438 [DEBUG] [Thread-115450] [transport.py] [_log()] server lang: <none>
2025-11-03T12:02:26.438 [DEBUG] [Thread-115450] [transport.py] [_log()] kex follows: False
2025-11-03T12:02:26.438 [DEBUG] [Thread-115450] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:02:26.438 [DEBUG] [Thread-115450] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:02:26.438 [DEBUG] [Thread-115450] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:02:26.438 [DEBUG] [Thread-115450] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:02:26.438 [DEBUG] [Thread-115450] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:02:26.438 [DEBUG] [Thread-115450] [transport.py] [_log()] Compression: none
2025-11-03T12:02:26.438 [DEBUG] [Thread-115450] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:02:26.501 [DEBUG] [Thread-115450] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:02:26.501 [DEBUG] [Thread-115450] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:02:26.502 [DEBUG] [Thread-115450] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:02:26.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:02:26.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:02:26.562 [DEBUG] [Thread-115450] [transport.py] [_log()] userauth is OK
2025-11-03T12:02:26.562 [DEBUG] [Thread-115450] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:02:26.562 [DEBUG] [Thread-115450] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:02:26.562 [DEBUG] [Thread-115450] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:02:26.562 [DEBUG] [Thread-115450] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:02:26.587 [INFO] [Thread-115450] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:02:26.587 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:02:26.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:02:27.454 [DEBUG] [Thread-115450] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:02:27.454 [DEBUG] [Thread-115450] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:02:27.503 [DEBUG] [Thread-115450] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:02:27.503 [DEBUG] [Thread-115450] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:02:27.513 [DEBUG] [Thread-115450] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:02:27.522 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:02:27.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:02:27.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:02:27.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:02:27.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:02:27.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:02:27.550 [DEBUG] [Thread-115450] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:02:36.742 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:02:36.743 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:02:37.378 [DEBUG] [Thread-115452 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:02:52.426 [DEBUG] [Thread-115453 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:02:57.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:02:57.573 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:02:57.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:02:58.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 2, 37), 41.03, 5.17, 0.0, 19.32, 23.73, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:02:58.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:02:37
2025-11-03T12:02:58.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:02:58.615 [DEBUG] [Thread-115454] [transport.py] [_log()] starting thread (client mode): 0xedd6ce0
2025-11-03T12:02:58.615 [DEBUG] [Thread-115454] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:02:58.627 [DEBUG] [Thread-115454] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:02:58.627 [INFO] [Thread-115454] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:02:58.630 [DEBUG] [Thread-115454] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:02:58.630 [DEBUG] [Thread-115454] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:02:58.630 [DEBUG] [Thread-115454] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:02:58.630 [DEBUG] [Thread-115454] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:02:58.630 [DEBUG] [Thread-115454] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:02:58.630 [DEBUG] [Thread-115454] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:02:58.631 [DEBUG] [Thread-115454] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:02:58.631 [DEBUG] [Thread-115454] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:02:58.631 [DEBUG] [Thread-115454] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:02:58.631 [DEBUG] [Thread-115454] [transport.py] [_log()] client lang: <none>
2025-11-03T12:02:58.631 [DEBUG] [Thread-115454] [transport.py] [_log()] server lang: <none>
2025-11-03T12:02:58.631 [DEBUG] [Thread-115454] [transport.py] [_log()] kex follows: False
2025-11-03T12:02:58.631 [DEBUG] [Thread-115454] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:02:58.631 [DEBUG] [Thread-115454] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:02:58.631 [DEBUG] [Thread-115454] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:02:58.631 [DEBUG] [Thread-115454] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:02:58.631 [DEBUG] [Thread-115454] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:02:58.631 [DEBUG] [Thread-115454] [transport.py] [_log()] Compression: none
2025-11-03T12:02:58.631 [DEBUG] [Thread-115454] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:02:58.648 [DEBUG] [Thread-115454] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:02:58.648 [DEBUG] [Thread-115454] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:02:58.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:02:58.649 [DEBUG] [Thread-115454] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:02:58.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:02:58.693 [DEBUG] [Thread-115454] [transport.py] [_log()] userauth is OK
2025-11-03T12:02:58.693 [DEBUG] [Thread-115454] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:02:58.693 [DEBUG] [Thread-115454] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:02:58.693 [DEBUG] [Thread-115454] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:02:58.693 [DEBUG] [Thread-115454] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:02:58.719 [INFO] [Thread-115454] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:02:58.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:02:58.812 [DEBUG] [Thread-115456 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:02:59.360 [DEBUG] [Thread-115454] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:02:59.369 [DEBUG] [Thread-115454] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:02:59.369 [DEBUG] [Thread-115454] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:02:59.402 [DEBUG] [Thread-115454] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:02:59.402 [DEBUG] [Thread-115454] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:02:59.404 [DEBUG] [Thread-115454] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:02:59.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:02:59.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:02:59.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:02:59.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:02:59.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:02:59.424 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:02:59.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:02:59.424 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:02:59.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:02:59.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.418496 -999.00  +23.50  24.28     10   -9.20 1 1 1 1 1   888    0 32.98 18.38 ----- 28.3 24.3 306.0 27.5 29.0 -29.6 28.1 -27.6 27.6 -30.5 28.5 -27.2
2025-11-03T12:02:59.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:02:59.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:02:59.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.418496
2025-11-03T12:02:59.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:02:59.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:02:59.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:02:59.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:02:59.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:02:59.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:02:37', tmtdew=41.03, humidity=5.17, cloud=0.0, wind=19.32, temperature=23.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:02:38.054', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:02:59.426 [DEBUG] [Thread-115454] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:02:59.499 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:02:59.510 [DEBUG] [Thread-115458] [transport.py] [_log()] starting thread (client mode): 0x81b9e10
2025-11-03T12:02:59.510 [DEBUG] [Thread-115458] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:02:59.526 [DEBUG] [Thread-115458] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:02:59.526 [INFO] [Thread-115458] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:02:59.534 [DEBUG] [Thread-115458] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:02:59.534 [DEBUG] [Thread-115458] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:02:59.534 [DEBUG] [Thread-115458] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:02:59.534 [DEBUG] [Thread-115458] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:02:59.534 [DEBUG] [Thread-115458] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:02:59.534 [DEBUG] [Thread-115458] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:02:59.534 [DEBUG] [Thread-115458] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:02:59.534 [DEBUG] [Thread-115458] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:02:59.534 [DEBUG] [Thread-115458] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:02:59.534 [DEBUG] [Thread-115458] [transport.py] [_log()] client lang: <none>
2025-11-03T12:02:59.534 [DEBUG] [Thread-115458] [transport.py] [_log()] server lang: <none>
2025-11-03T12:02:59.534 [DEBUG] [Thread-115458] [transport.py] [_log()] kex follows: False
2025-11-03T12:02:59.534 [DEBUG] [Thread-115458] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:02:59.534 [DEBUG] [Thread-115458] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:02:59.534 [DEBUG] [Thread-115458] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:02:59.534 [DEBUG] [Thread-115458] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:02:59.534 [DEBUG] [Thread-115458] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:02:59.534 [DEBUG] [Thread-115458] [transport.py] [_log()] Compression: none
2025-11-03T12:02:59.534 [DEBUG] [Thread-115458] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:02:59.593 [DEBUG] [Thread-115458] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:02:59.594 [DEBUG] [Thread-115458] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:02:59.594 [DEBUG] [Thread-115458] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:02:59.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:02:59.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:02:59.651 [DEBUG] [Thread-115458] [transport.py] [_log()] userauth is OK
2025-11-03T12:02:59.651 [DEBUG] [Thread-115458] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:02:59.651 [DEBUG] [Thread-115458] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:02:59.651 [DEBUG] [Thread-115458] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:02:59.651 [DEBUG] [Thread-115458] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:02:59.664 [INFO] [Thread-115458] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:02:59.665 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:02:59.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:03:00.516 [DEBUG] [Thread-115458] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:03:00.516 [DEBUG] [Thread-115458] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:03:00.564 [DEBUG] [Thread-115458] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:03:00.565 [DEBUG] [Thread-115458] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:03:00.574 [DEBUG] [Thread-115458] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:03:00.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:03:00.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:03:00.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:03:00.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:03:00.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:03:00.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:03:00.621 [DEBUG] [Thread-115458] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:03:07.463 [DEBUG] [Thread-115460 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:03:22.509 [DEBUG] [Thread-115461 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:03:30.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:03:30.644 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:03:30.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:03:31.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 3, 9), 41.29, 5.08, 0.0, 22.14, 23.98, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:03:31.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:03:09
2025-11-03T12:03:31.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:03:31.649 [DEBUG] [Thread-115462] [transport.py] [_log()] starting thread (client mode): 0x81bab00
2025-11-03T12:03:31.649 [DEBUG] [Thread-115462] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:03:31.669 [DEBUG] [Thread-115462] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:03:31.669 [INFO] [Thread-115462] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:03:31.670 [DEBUG] [Thread-115462] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:03:31.670 [DEBUG] [Thread-115462] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:03:31.671 [DEBUG] [Thread-115462] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:03:31.671 [DEBUG] [Thread-115462] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:03:31.671 [DEBUG] [Thread-115462] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:03:31.671 [DEBUG] [Thread-115462] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:03:31.671 [DEBUG] [Thread-115462] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:03:31.671 [DEBUG] [Thread-115462] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:03:31.671 [DEBUG] [Thread-115462] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:03:31.671 [DEBUG] [Thread-115462] [transport.py] [_log()] client lang: <none>
2025-11-03T12:03:31.671 [DEBUG] [Thread-115462] [transport.py] [_log()] server lang: <none>
2025-11-03T12:03:31.671 [DEBUG] [Thread-115462] [transport.py] [_log()] kex follows: False
2025-11-03T12:03:31.671 [DEBUG] [Thread-115462] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:03:31.671 [DEBUG] [Thread-115462] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:03:31.671 [DEBUG] [Thread-115462] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:03:31.671 [DEBUG] [Thread-115462] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:03:31.672 [DEBUG] [Thread-115462] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:03:31.672 [DEBUG] [Thread-115462] [transport.py] [_log()] Compression: none
2025-11-03T12:03:31.672 [DEBUG] [Thread-115462] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:03:31.684 [DEBUG] [Thread-115462] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:03:31.685 [DEBUG] [Thread-115462] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:03:31.686 [DEBUG] [Thread-115462] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:03:31.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:03:31.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:03:31.688 [DEBUG] [Thread-115462] [transport.py] [_log()] userauth is OK
2025-11-03T12:03:31.688 [DEBUG] [Thread-115462] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:03:31.688 [DEBUG] [Thread-115462] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:03:31.688 [DEBUG] [Thread-115462] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:03:31.688 [DEBUG] [Thread-115462] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:03:31.713 [INFO] [Thread-115462] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:03:31.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:03:32.376 [DEBUG] [Thread-115462] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:03:32.376 [DEBUG] [Thread-115462] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:03:32.376 [DEBUG] [Thread-115462] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:03:32.417 [DEBUG] [Thread-115462] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:03:32.417 [DEBUG] [Thread-115462] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:03:32.420 [DEBUG] [Thread-115462] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:03:32.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:03:32.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:03:32.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:03:32.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:03:32.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:03:32.438 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:03:32.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:03:32.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:03:32.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:03:32.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.418854 -999.00  +23.50  19.01     10   -9.20 1 1 1 1 1   888    0 33.02 17.53 ----- 18.9 19.0 330.0 28.8 29.1 -28.1 28.1 -27.8 27.8 -27.3 28.6 -27.1
2025-11-03T12:03:32.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:03:32.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:03:32.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.418854
2025-11-03T12:03:32.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:03:32.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:03:32.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:03:32.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:03:32.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:03:32.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:03:09', tmtdew=41.29, humidity=5.08, cloud=0.0, wind=22.14, temperature=23.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:03:08.986', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:03:32.439 [DEBUG] [Thread-115462] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:03:32.511 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:03:32.522 [DEBUG] [Thread-115465] [transport.py] [_log()] starting thread (client mode): 0x81b8e50
2025-11-03T12:03:32.523 [DEBUG] [Thread-115465] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:03:32.538 [DEBUG] [Thread-115465] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:03:32.538 [INFO] [Thread-115465] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:03:32.546 [DEBUG] [Thread-115465] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:03:32.546 [DEBUG] [Thread-115465] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:03:32.546 [DEBUG] [Thread-115465] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:03:32.546 [DEBUG] [Thread-115465] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:03:32.546 [DEBUG] [Thread-115465] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:03:32.546 [DEBUG] [Thread-115465] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:03:32.546 [DEBUG] [Thread-115465] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:03:32.546 [DEBUG] [Thread-115465] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:03:32.546 [DEBUG] [Thread-115465] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:03:32.546 [DEBUG] [Thread-115465] [transport.py] [_log()] client lang: <none>
2025-11-03T12:03:32.546 [DEBUG] [Thread-115465] [transport.py] [_log()] server lang: <none>
2025-11-03T12:03:32.546 [DEBUG] [Thread-115465] [transport.py] [_log()] kex follows: False
2025-11-03T12:03:32.546 [DEBUG] [Thread-115465] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:03:32.546 [DEBUG] [Thread-115465] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:03:32.546 [DEBUG] [Thread-115465] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:03:32.546 [DEBUG] [Thread-115465] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:03:32.546 [DEBUG] [Thread-115465] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:03:32.546 [DEBUG] [Thread-115465] [transport.py] [_log()] Compression: none
2025-11-03T12:03:32.546 [DEBUG] [Thread-115465] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:03:32.601 [DEBUG] [Thread-115465] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:03:32.601 [DEBUG] [Thread-115465] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:03:32.601 [DEBUG] [Thread-115465] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:03:32.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:03:32.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:03:32.658 [DEBUG] [Thread-115465] [transport.py] [_log()] userauth is OK
2025-11-03T12:03:32.658 [DEBUG] [Thread-115465] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:03:32.658 [DEBUG] [Thread-115465] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:03:32.658 [DEBUG] [Thread-115465] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:03:32.658 [DEBUG] [Thread-115465] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:03:32.672 [INFO] [Thread-115465] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:03:32.672 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:03:32.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:03:33.530 [DEBUG] [Thread-115465] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:03:33.530 [DEBUG] [Thread-115465] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:03:33.578 [DEBUG] [Thread-115465] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:03:33.578 [DEBUG] [Thread-115465] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:03:33.588 [DEBUG] [Thread-115465] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:03:33.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:03:33.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:03:33.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:03:33.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:03:33.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:03:33.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:03:33.626 [DEBUG] [Thread-115465] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:03:36.884 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:03:36.885 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:03:37.546 [DEBUG] [Thread-115467 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:03:52.600 [DEBUG] [Thread-115468 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:03:58.895 [DEBUG] [Thread-115469 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:04:03.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:04:03.648 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:04:03.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:04:04.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 3, 41), 41.25, 5.58, 0.0, 15.49, 24.01, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:04:04.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:03:41
2025-11-03T12:04:04.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:04:04.589 [DEBUG] [Thread-115470] [transport.py] [_log()] starting thread (client mode): 0x81bb370
2025-11-03T12:04:04.589 [DEBUG] [Thread-115470] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:04:04.601 [DEBUG] [Thread-115470] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:04:04.601 [INFO] [Thread-115470] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:04:04.605 [DEBUG] [Thread-115470] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:04:04.605 [DEBUG] [Thread-115470] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:04:04.605 [DEBUG] [Thread-115470] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:04:04.605 [DEBUG] [Thread-115470] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:04:04.605 [DEBUG] [Thread-115470] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:04:04.605 [DEBUG] [Thread-115470] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:04:04.605 [DEBUG] [Thread-115470] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:04:04.605 [DEBUG] [Thread-115470] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:04:04.605 [DEBUG] [Thread-115470] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:04:04.605 [DEBUG] [Thread-115470] [transport.py] [_log()] client lang: <none>
2025-11-03T12:04:04.605 [DEBUG] [Thread-115470] [transport.py] [_log()] server lang: <none>
2025-11-03T12:04:04.605 [DEBUG] [Thread-115470] [transport.py] [_log()] kex follows: False
2025-11-03T12:04:04.605 [DEBUG] [Thread-115470] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:04:04.605 [DEBUG] [Thread-115470] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:04:04.605 [DEBUG] [Thread-115470] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:04:04.605 [DEBUG] [Thread-115470] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:04:04.605 [DEBUG] [Thread-115470] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:04:04.605 [DEBUG] [Thread-115470] [transport.py] [_log()] Compression: none
2025-11-03T12:04:04.605 [DEBUG] [Thread-115470] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:04:04.622 [DEBUG] [Thread-115470] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:04:04.623 [DEBUG] [Thread-115470] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:04:04.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:04:04.624 [DEBUG] [Thread-115470] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:04:04.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:04:04.625 [DEBUG] [Thread-115470] [transport.py] [_log()] userauth is OK
2025-11-03T12:04:04.626 [DEBUG] [Thread-115470] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:04:04.626 [DEBUG] [Thread-115470] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:04:04.626 [DEBUG] [Thread-115470] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:04:04.626 [DEBUG] [Thread-115470] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:04:04.651 [INFO] [Thread-115470] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:04:04.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:04:05.290 [DEBUG] [Thread-115470] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:04:05.290 [DEBUG] [Thread-115470] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:04:05.290 [DEBUG] [Thread-115470] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:04:05.331 [DEBUG] [Thread-115470] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:04:05.331 [DEBUG] [Thread-115470] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:04:05.334 [DEBUG] [Thread-115470] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:04:05.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:04:05.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:04:05.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:04:05.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:04:05.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:04:05.358 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:04:05.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:04:05.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:04:05.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:04:05.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.419201 -999.00  +24.20  13.71     10   -8.90 1 1 1 1 1   888    0 32.98 16.10 ----- 13.1 13.7 341.6 19.1 29.3 -27.6 28.2 -26.9 27.9 -26.7 28.7 -26.9
2025-11-03T12:04:05.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:04:05.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:04:05.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.419201
2025-11-03T12:04:05.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:04:05.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:04:05.361 [DEBUG] [Thread-115470] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:04:05.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:04:05.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:04:05.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:04:05.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:03:41', tmtdew=41.25, humidity=5.58, cloud=0.0, wind=15.49, temperature=24.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:03:38.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:04:05.445 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:04:05.457 [DEBUG] [Thread-115473] [transport.py] [_log()] starting thread (client mode): 0x81bb550
2025-11-03T12:04:05.457 [DEBUG] [Thread-115473] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:04:05.472 [DEBUG] [Thread-115473] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:04:05.472 [INFO] [Thread-115473] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:04:05.480 [DEBUG] [Thread-115473] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:04:05.480 [DEBUG] [Thread-115473] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:04:05.480 [DEBUG] [Thread-115473] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:04:05.480 [DEBUG] [Thread-115473] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:04:05.480 [DEBUG] [Thread-115473] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:04:05.480 [DEBUG] [Thread-115473] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:04:05.480 [DEBUG] [Thread-115473] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:04:05.480 [DEBUG] [Thread-115473] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:04:05.480 [DEBUG] [Thread-115473] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:04:05.481 [DEBUG] [Thread-115473] [transport.py] [_log()] client lang: <none>
2025-11-03T12:04:05.481 [DEBUG] [Thread-115473] [transport.py] [_log()] server lang: <none>
2025-11-03T12:04:05.481 [DEBUG] [Thread-115473] [transport.py] [_log()] kex follows: False
2025-11-03T12:04:05.481 [DEBUG] [Thread-115473] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:04:05.481 [DEBUG] [Thread-115473] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:04:05.490 [DEBUG] [Thread-115473] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:04:05.490 [DEBUG] [Thread-115473] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:04:05.490 [DEBUG] [Thread-115473] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:04:05.490 [DEBUG] [Thread-115473] [transport.py] [_log()] Compression: none
2025-11-03T12:04:05.490 [DEBUG] [Thread-115473] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:04:05.542 [DEBUG] [Thread-115473] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:04:05.543 [DEBUG] [Thread-115473] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:04:05.544 [DEBUG] [Thread-115473] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:04:05.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:04:05.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:04:05.598 [DEBUG] [Thread-115473] [transport.py] [_log()] userauth is OK
2025-11-03T12:04:05.599 [DEBUG] [Thread-115473] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:04:05.599 [DEBUG] [Thread-115473] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:04:05.599 [DEBUG] [Thread-115473] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:04:05.599 [DEBUG] [Thread-115473] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:04:05.614 [INFO] [Thread-115473] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:04:05.615 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:04:05.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:04:06.454 [DEBUG] [Thread-115473] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:04:06.455 [DEBUG] [Thread-115473] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:04:06.502 [DEBUG] [Thread-115473] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:04:06.503 [DEBUG] [Thread-115473] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:04:06.511 [DEBUG] [Thread-115473] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:04:06.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:04:06.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:04:06.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:04:06.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:04:06.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:04:06.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:04:06.547 [DEBUG] [Thread-115473] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:04:07.643 [DEBUG] [Thread-115475 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:04:22.714 [DEBUG] [Thread-115476 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:04:36.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:04:36.570 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:04:36.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:04:37.026 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:04:37.026 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:04:37.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 4, 13), 41.31, 5.57, 0.0, 17.7, 24.08, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:04:37.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:04:13
2025-11-03T12:04:37.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:04:37.508 [DEBUG] [Thread-115477] [transport.py] [_log()] starting thread (client mode): 0xedd5c90
2025-11-03T12:04:37.508 [DEBUG] [Thread-115477] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:04:37.528 [DEBUG] [Thread-115477] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:04:37.528 [INFO] [Thread-115477] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:04:37.531 [DEBUG] [Thread-115477] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:04:37.531 [DEBUG] [Thread-115477] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:04:37.531 [DEBUG] [Thread-115477] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:04:37.531 [DEBUG] [Thread-115477] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:04:37.531 [DEBUG] [Thread-115477] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:04:37.531 [DEBUG] [Thread-115477] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:04:37.531 [DEBUG] [Thread-115477] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:04:37.531 [DEBUG] [Thread-115477] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:04:37.531 [DEBUG] [Thread-115477] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:04:37.531 [DEBUG] [Thread-115477] [transport.py] [_log()] client lang: <none>
2025-11-03T12:04:37.531 [DEBUG] [Thread-115477] [transport.py] [_log()] server lang: <none>
2025-11-03T12:04:37.531 [DEBUG] [Thread-115477] [transport.py] [_log()] kex follows: False
2025-11-03T12:04:37.531 [DEBUG] [Thread-115477] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:04:37.531 [DEBUG] [Thread-115477] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:04:37.531 [DEBUG] [Thread-115477] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:04:37.531 [DEBUG] [Thread-115477] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:04:37.531 [DEBUG] [Thread-115477] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:04:37.531 [DEBUG] [Thread-115477] [transport.py] [_log()] Compression: none
2025-11-03T12:04:37.531 [DEBUG] [Thread-115477] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:04:37.548 [DEBUG] [Thread-115477] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:04:37.548 [DEBUG] [Thread-115477] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:04:37.549 [DEBUG] [Thread-115477] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:04:37.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:04:37.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:04:37.551 [DEBUG] [Thread-115477] [transport.py] [_log()] userauth is OK
2025-11-03T12:04:37.551 [DEBUG] [Thread-115477] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:04:37.551 [DEBUG] [Thread-115477] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:04:37.551 [DEBUG] [Thread-115477] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:04:37.551 [DEBUG] [Thread-115477] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:04:37.584 [INFO] [Thread-115477] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:04:37.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:04:37.750 [DEBUG] [Thread-115479 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:04:38.161 [DEBUG] [Thread-115477] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:04:38.161 [DEBUG] [Thread-115477] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:04:38.161 [DEBUG] [Thread-115477] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:04:38.202 [DEBUG] [Thread-115477] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:04:38.202 [DEBUG] [Thread-115477] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:04:38.204 [DEBUG] [Thread-115477] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:04:38.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:04:38.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:04:38.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:04:38.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:04:38.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:04:38.222 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:04:38.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:04:38.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:04:38.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:04:38.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.419549 -999.00  +24.30   9.71     10   -9.00 1 1 1 1 1   888    0 33.02 16.72 ----- 16.2 9.7 1.5 24.8 29.4 -27.8 28.4 -27.4 28.1 -26.4 28.9 -27.6
2025-11-03T12:04:38.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:04:38.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:04:38.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.419549
2025-11-03T12:04:38.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:04:38.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:04:38.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:04:38.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:04:38.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:04:38.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:04:13', tmtdew=41.31, humidity=5.57, cloud=0.0, wind=17.7, temperature=24.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:04:09.034', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:04:38.223 [DEBUG] [Thread-115477] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:04:38.295 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:04:38.306 [DEBUG] [Thread-115481] [transport.py] [_log()] starting thread (client mode): 0xedd5c00
2025-11-03T12:04:38.306 [DEBUG] [Thread-115481] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:04:38.321 [DEBUG] [Thread-115481] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:04:38.321 [INFO] [Thread-115481] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:04:38.328 [DEBUG] [Thread-115481] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:04:38.328 [DEBUG] [Thread-115481] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:04:38.328 [DEBUG] [Thread-115481] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:04:38.328 [DEBUG] [Thread-115481] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:04:38.328 [DEBUG] [Thread-115481] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:04:38.328 [DEBUG] [Thread-115481] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:04:38.328 [DEBUG] [Thread-115481] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:04:38.328 [DEBUG] [Thread-115481] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:04:38.328 [DEBUG] [Thread-115481] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:04:38.328 [DEBUG] [Thread-115481] [transport.py] [_log()] client lang: <none>
2025-11-03T12:04:38.328 [DEBUG] [Thread-115481] [transport.py] [_log()] server lang: <none>
2025-11-03T12:04:38.328 [DEBUG] [Thread-115481] [transport.py] [_log()] kex follows: False
2025-11-03T12:04:38.328 [DEBUG] [Thread-115481] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:04:38.328 [DEBUG] [Thread-115481] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:04:38.328 [DEBUG] [Thread-115481] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:04:38.328 [DEBUG] [Thread-115481] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:04:38.328 [DEBUG] [Thread-115481] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:04:38.328 [DEBUG] [Thread-115481] [transport.py] [_log()] Compression: none
2025-11-03T12:04:38.328 [DEBUG] [Thread-115481] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:04:38.385 [DEBUG] [Thread-115481] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:04:38.385 [DEBUG] [Thread-115481] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:04:38.385 [DEBUG] [Thread-115481] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:04:38.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:04:38.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:04:38.442 [DEBUG] [Thread-115481] [transport.py] [_log()] userauth is OK
2025-11-03T12:04:38.442 [DEBUG] [Thread-115481] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:04:38.442 [DEBUG] [Thread-115481] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:04:38.442 [DEBUG] [Thread-115481] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:04:38.442 [DEBUG] [Thread-115481] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:04:38.455 [INFO] [Thread-115481] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:04:38.455 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:04:38.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:04:39.282 [DEBUG] [Thread-115481] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:04:39.283 [DEBUG] [Thread-115481] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:04:39.330 [DEBUG] [Thread-115481] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:04:39.331 [DEBUG] [Thread-115481] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:04:39.340 [DEBUG] [Thread-115481] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:04:39.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:04:39.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:04:39.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:04:39.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:04:39.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:04:39.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:04:39.376 [DEBUG] [Thread-115481] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:04:52.792 [DEBUG] [Thread-115483 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:04:58.963 [DEBUG] [Thread-115484 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:05:07.847 [DEBUG] [Thread-115485 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:05:09.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:05:09.398 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:05:09.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:05:10.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 4, 46), 41.69, 5.0, 0.0, 15.92, 24.43, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:05:10.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:04:46
2025-11-03T12:05:10.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:05:10.360 [DEBUG] [Thread-115486] [transport.py] [_log()] starting thread (client mode): 0xedd4490
2025-11-03T12:05:10.360 [DEBUG] [Thread-115486] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:05:10.380 [DEBUG] [Thread-115486] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:05:10.380 [INFO] [Thread-115486] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:05:10.383 [DEBUG] [Thread-115486] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:05:10.383 [DEBUG] [Thread-115486] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:05:10.383 [DEBUG] [Thread-115486] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:05:10.384 [DEBUG] [Thread-115486] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:05:10.384 [DEBUG] [Thread-115486] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:05:10.384 [DEBUG] [Thread-115486] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:05:10.384 [DEBUG] [Thread-115486] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:05:10.384 [DEBUG] [Thread-115486] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:05:10.384 [DEBUG] [Thread-115486] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:05:10.384 [DEBUG] [Thread-115486] [transport.py] [_log()] client lang: <none>
2025-11-03T12:05:10.384 [DEBUG] [Thread-115486] [transport.py] [_log()] server lang: <none>
2025-11-03T12:05:10.384 [DEBUG] [Thread-115486] [transport.py] [_log()] kex follows: False
2025-11-03T12:05:10.384 [DEBUG] [Thread-115486] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:05:10.384 [DEBUG] [Thread-115486] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:05:10.384 [DEBUG] [Thread-115486] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:05:10.384 [DEBUG] [Thread-115486] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:05:10.384 [DEBUG] [Thread-115486] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:05:10.384 [DEBUG] [Thread-115486] [transport.py] [_log()] Compression: none
2025-11-03T12:05:10.384 [DEBUG] [Thread-115486] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:05:10.399 [DEBUG] [Thread-115486] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:05:10.399 [DEBUG] [Thread-115486] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:05:10.399 [DEBUG] [Thread-115486] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:05:10.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:05:10.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:05:10.400 [DEBUG] [Thread-115486] [transport.py] [_log()] userauth is OK
2025-11-03T12:05:10.400 [DEBUG] [Thread-115486] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:05:10.400 [DEBUG] [Thread-115486] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:05:10.400 [DEBUG] [Thread-115486] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:05:10.400 [DEBUG] [Thread-115486] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:05:10.414 [INFO] [Thread-115486] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:05:10.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:05:13.967 [DEBUG] [Thread-115486] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:05:13.967 [DEBUG] [Thread-115486] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:05:13.968 [DEBUG] [Thread-115486] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:05:14.008 [DEBUG] [Thread-115486] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:05:14.008 [DEBUG] [Thread-115486] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:05:14.011 [DEBUG] [Thread-115486] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:05:14.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:05:14.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:05:14.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:05:14.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:05:14.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:05:14.035 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:05:14.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:05:14.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:05:14.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:05:14.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.419884 -999.00  +24.40  26.12     10   -9.00 1 1 1 1 1   888    0 33.16 18.13 ----- 25.6 26.1 321.2 28.6 29.5 -28.5 28.4 -27.7 28.1 -27.2 29.0 -26.8
2025-11-03T12:05:14.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:05:14.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:05:14.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.419884
2025-11-03T12:05:14.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:05:14.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:05:14.038 [DEBUG] [Thread-115486] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:05:14.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:05:14.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:05:14.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:05:14.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:04:46', tmtdew=41.69, humidity=5.0, cloud=0.0, wind=15.92, temperature=24.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:04:37.978', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:05:14.135 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:05:14.147 [DEBUG] [Thread-115489] [transport.py] [_log()] starting thread (client mode): 0xedd5c90
2025-11-03T12:05:14.147 [DEBUG] [Thread-115489] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:05:14.162 [DEBUG] [Thread-115489] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:05:14.162 [INFO] [Thread-115489] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:05:14.170 [DEBUG] [Thread-115489] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:05:14.170 [DEBUG] [Thread-115489] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:05:14.170 [DEBUG] [Thread-115489] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:05:14.170 [DEBUG] [Thread-115489] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:05:14.170 [DEBUG] [Thread-115489] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:05:14.171 [DEBUG] [Thread-115489] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:05:14.171 [DEBUG] [Thread-115489] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:05:14.171 [DEBUG] [Thread-115489] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:05:14.171 [DEBUG] [Thread-115489] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:05:14.171 [DEBUG] [Thread-115489] [transport.py] [_log()] client lang: <none>
2025-11-03T12:05:14.171 [DEBUG] [Thread-115489] [transport.py] [_log()] server lang: <none>
2025-11-03T12:05:14.171 [DEBUG] [Thread-115489] [transport.py] [_log()] kex follows: False
2025-11-03T12:05:14.171 [DEBUG] [Thread-115489] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:05:14.172 [DEBUG] [Thread-115489] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:05:14.172 [DEBUG] [Thread-115489] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:05:14.172 [DEBUG] [Thread-115489] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:05:14.172 [DEBUG] [Thread-115489] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:05:14.172 [DEBUG] [Thread-115489] [transport.py] [_log()] Compression: none
2025-11-03T12:05:14.172 [DEBUG] [Thread-115489] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:05:14.231 [DEBUG] [Thread-115489] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:05:14.231 [DEBUG] [Thread-115489] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:05:14.241 [DEBUG] [Thread-115489] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:05:14.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:05:14.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:05:14.290 [DEBUG] [Thread-115489] [transport.py] [_log()] userauth is OK
2025-11-03T12:05:14.291 [DEBUG] [Thread-115489] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:05:14.291 [DEBUG] [Thread-115489] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:05:14.291 [DEBUG] [Thread-115489] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:05:14.291 [DEBUG] [Thread-115489] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:05:14.309 [INFO] [Thread-115489] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:05:14.309 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:05:14.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:05:15.145 [DEBUG] [Thread-115489] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:05:15.145 [DEBUG] [Thread-115489] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:05:15.193 [DEBUG] [Thread-115489] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:05:15.193 [DEBUG] [Thread-115489] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:05:15.203 [DEBUG] [Thread-115489] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:05:15.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:05:15.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:05:15.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:05:15.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:05:15.232 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:05:15.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:05:15.241 [DEBUG] [Thread-115489] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:05:22.886 [DEBUG] [Thread-115491 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:05:37.167 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:05:37.168 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:05:37.949 [DEBUG] [Thread-115492 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:05:45.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:05:45.262 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:05:45.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:05:45.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 5, 18), 41.56, 5.03, 0.0, 17.03, 24.26, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:05:45.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:05:18
2025-11-03T12:05:46.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:05:46.220 [DEBUG] [Thread-115493] [transport.py] [_log()] starting thread (client mode): 0x117bc250
2025-11-03T12:05:46.220 [DEBUG] [Thread-115493] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:05:46.240 [DEBUG] [Thread-115493] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:05:46.240 [INFO] [Thread-115493] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:05:46.243 [DEBUG] [Thread-115493] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:05:46.243 [DEBUG] [Thread-115493] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:05:46.243 [DEBUG] [Thread-115493] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:05:46.243 [DEBUG] [Thread-115493] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:05:46.243 [DEBUG] [Thread-115493] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:05:46.243 [DEBUG] [Thread-115493] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:05:46.243 [DEBUG] [Thread-115493] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:05:46.243 [DEBUG] [Thread-115493] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:05:46.243 [DEBUG] [Thread-115493] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:05:46.243 [DEBUG] [Thread-115493] [transport.py] [_log()] client lang: <none>
2025-11-03T12:05:46.244 [DEBUG] [Thread-115493] [transport.py] [_log()] server lang: <none>
2025-11-03T12:05:46.244 [DEBUG] [Thread-115493] [transport.py] [_log()] kex follows: False
2025-11-03T12:05:46.244 [DEBUG] [Thread-115493] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:05:46.244 [DEBUG] [Thread-115493] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:05:46.244 [DEBUG] [Thread-115493] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:05:46.244 [DEBUG] [Thread-115493] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:05:46.244 [DEBUG] [Thread-115493] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:05:46.244 [DEBUG] [Thread-115493] [transport.py] [_log()] Compression: none
2025-11-03T12:05:46.244 [DEBUG] [Thread-115493] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:05:46.261 [DEBUG] [Thread-115493] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:05:46.261 [DEBUG] [Thread-115493] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:05:46.261 [DEBUG] [Thread-115493] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:05:46.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:05:46.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:05:46.262 [DEBUG] [Thread-115493] [transport.py] [_log()] userauth is OK
2025-11-03T12:05:46.262 [DEBUG] [Thread-115493] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:05:46.262 [DEBUG] [Thread-115493] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:05:46.262 [DEBUG] [Thread-115493] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:05:46.262 [DEBUG] [Thread-115493] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:05:46.271 [INFO] [Thread-115493] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:05:46.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:05:46.910 [DEBUG] [Thread-115493] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:05:46.911 [DEBUG] [Thread-115493] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:05:46.911 [DEBUG] [Thread-115493] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:05:46.952 [DEBUG] [Thread-115493] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:05:46.952 [DEBUG] [Thread-115493] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:05:46.954 [DEBUG] [Thread-115493] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:05:46.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:05:46.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:05:46.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:05:46.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:05:46.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:05:46.970 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:05:46.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:05:46.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:05:46.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:05:46.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.420243 -999.00  +23.80  15.20     10   -9.10 1 1 1 1 1   888    0 33.32 18.90 ----- 14.7 15.2 319.6 33.3 29.5 -28.4 28.4 -28.4 28.1 -27.8 29.0 -27.9
2025-11-03T12:05:46.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:05:46.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:05:46.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.420243
2025-11-03T12:05:46.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:05:46.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:05:46.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:05:46.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:05:46.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:05:46.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:05:18', tmtdew=41.56, humidity=5.03, cloud=0.0, wind=17.03, temperature=24.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:05:08.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:05:46.971 [DEBUG] [Thread-115493] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:05:47.046 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:05:47.059 [DEBUG] [Thread-115496] [transport.py] [_log()] starting thread (client mode): 0x117bcc40
2025-11-03T12:05:47.059 [DEBUG] [Thread-115496] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:05:47.073 [DEBUG] [Thread-115496] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:05:47.073 [INFO] [Thread-115496] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:05:47.081 [DEBUG] [Thread-115496] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:05:47.081 [DEBUG] [Thread-115496] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:05:47.081 [DEBUG] [Thread-115496] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:05:47.081 [DEBUG] [Thread-115496] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:05:47.081 [DEBUG] [Thread-115496] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:05:47.081 [DEBUG] [Thread-115496] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:05:47.081 [DEBUG] [Thread-115496] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:05:47.081 [DEBUG] [Thread-115496] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:05:47.081 [DEBUG] [Thread-115496] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:05:47.081 [DEBUG] [Thread-115496] [transport.py] [_log()] client lang: <none>
2025-11-03T12:05:47.081 [DEBUG] [Thread-115496] [transport.py] [_log()] server lang: <none>
2025-11-03T12:05:47.081 [DEBUG] [Thread-115496] [transport.py] [_log()] kex follows: False
2025-11-03T12:05:47.081 [DEBUG] [Thread-115496] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:05:47.081 [DEBUG] [Thread-115496] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:05:47.082 [DEBUG] [Thread-115496] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:05:47.082 [DEBUG] [Thread-115496] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:05:47.082 [DEBUG] [Thread-115496] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:05:47.082 [DEBUG] [Thread-115496] [transport.py] [_log()] Compression: none
2025-11-03T12:05:47.082 [DEBUG] [Thread-115496] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:05:47.141 [DEBUG] [Thread-115496] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:05:47.141 [DEBUG] [Thread-115496] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:05:47.141 [DEBUG] [Thread-115496] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:05:47.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:05:47.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:05:47.201 [DEBUG] [Thread-115496] [transport.py] [_log()] userauth is OK
2025-11-03T12:05:47.201 [DEBUG] [Thread-115496] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:05:47.201 [DEBUG] [Thread-115496] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:05:47.201 [DEBUG] [Thread-115496] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:05:47.202 [DEBUG] [Thread-115496] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:05:47.216 [INFO] [Thread-115496] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:05:47.216 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:05:47.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:05:48.053 [DEBUG] [Thread-115496] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:05:48.053 [DEBUG] [Thread-115496] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:05:48.102 [DEBUG] [Thread-115496] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:05:48.102 [DEBUG] [Thread-115496] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:05:48.110 [DEBUG] [Thread-115496] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:05:48.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:05:48.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:05:48.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:05:48.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:05:48.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:05:48.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:05:48.142 [DEBUG] [Thread-115496] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:05:52.979 [DEBUG] [Thread-115498 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:05:59.024 [DEBUG] [Thread-115499 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:06:08.021 [DEBUG] [Thread-115500 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:06:18.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:06:18.165 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:06:18.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:06:18.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 5, 50), 41.52, 5.07, 0.0, 25.19, 24.35, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:06:18.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:05:50
2025-11-03T12:06:18.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:06:19.138 [DEBUG] [Thread-115501] [transport.py] [_log()] starting thread (client mode): 0xedd66b0
2025-11-03T12:06:19.138 [DEBUG] [Thread-115501] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:06:19.159 [DEBUG] [Thread-115501] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:06:19.159 [INFO] [Thread-115501] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:06:19.168 [DEBUG] [Thread-115501] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:06:19.168 [DEBUG] [Thread-115501] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:06:19.168 [DEBUG] [Thread-115501] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:06:19.168 [DEBUG] [Thread-115501] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:06:19.168 [DEBUG] [Thread-115501] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:06:19.168 [DEBUG] [Thread-115501] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:06:19.168 [DEBUG] [Thread-115501] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:06:19.168 [DEBUG] [Thread-115501] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:06:19.168 [DEBUG] [Thread-115501] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:06:19.168 [DEBUG] [Thread-115501] [transport.py] [_log()] client lang: <none>
2025-11-03T12:06:19.168 [DEBUG] [Thread-115501] [transport.py] [_log()] server lang: <none>
2025-11-03T12:06:19.169 [DEBUG] [Thread-115501] [transport.py] [_log()] kex follows: False
2025-11-03T12:06:19.169 [DEBUG] [Thread-115501] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:06:19.169 [DEBUG] [Thread-115501] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:06:19.169 [DEBUG] [Thread-115501] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:06:19.169 [DEBUG] [Thread-115501] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:06:19.169 [DEBUG] [Thread-115501] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:06:19.169 [DEBUG] [Thread-115501] [transport.py] [_log()] Compression: none
2025-11-03T12:06:19.169 [DEBUG] [Thread-115501] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:06:19.186 [DEBUG] [Thread-115501] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:06:19.186 [DEBUG] [Thread-115501] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:06:19.187 [DEBUG] [Thread-115501] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:06:19.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:06:19.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:06:19.187 [DEBUG] [Thread-115501] [transport.py] [_log()] userauth is OK
2025-11-03T12:06:19.187 [DEBUG] [Thread-115501] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:06:19.187 [DEBUG] [Thread-115501] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:06:19.187 [DEBUG] [Thread-115501] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:06:19.187 [DEBUG] [Thread-115501] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:06:19.203 [INFO] [Thread-115501] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:06:19.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:06:19.847 [DEBUG] [Thread-115501] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:06:19.847 [DEBUG] [Thread-115501] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:06:19.847 [DEBUG] [Thread-115501] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:06:19.888 [DEBUG] [Thread-115501] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:06:19.888 [DEBUG] [Thread-115501] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:06:19.892 [DEBUG] [Thread-115501] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:06:19.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:06:19.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:06:19.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:06:19.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:06:19.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:06:19.917 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:06:19.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:06:19.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:06:19.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:06:19.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.420590 -999.00  +23.90  21.78     10   -9.10 1 1 1 1 1   888    0 33.38 18.29 ----- 25.5 21.8 351.1 25.1 29.6 -29.6 28.6 -28.3 28.2 -27.9 29.1 -27.3
2025-11-03T12:06:19.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:06:19.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:06:19.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.420590
2025-11-03T12:06:19.926 [DEBUG] [Thread-115501] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:06:19.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:06:19.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:06:19.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:06:19.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:06:19.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:06:19.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:05:50', tmtdew=41.52, humidity=5.07, cloud=0.0, wind=25.19, temperature=24.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:05:38.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:06:20.004 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:06:20.016 [DEBUG] [Thread-115504] [transport.py] [_log()] starting thread (client mode): 0xedd7d60
2025-11-03T12:06:20.016 [DEBUG] [Thread-115504] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:06:20.031 [DEBUG] [Thread-115504] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:06:20.031 [INFO] [Thread-115504] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:06:20.038 [DEBUG] [Thread-115504] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:06:20.038 [DEBUG] [Thread-115504] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:06:20.038 [DEBUG] [Thread-115504] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:06:20.039 [DEBUG] [Thread-115504] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:06:20.039 [DEBUG] [Thread-115504] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:06:20.039 [DEBUG] [Thread-115504] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:06:20.039 [DEBUG] [Thread-115504] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:06:20.039 [DEBUG] [Thread-115504] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:06:20.039 [DEBUG] [Thread-115504] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:06:20.039 [DEBUG] [Thread-115504] [transport.py] [_log()] client lang: <none>
2025-11-03T12:06:20.039 [DEBUG] [Thread-115504] [transport.py] [_log()] server lang: <none>
2025-11-03T12:06:20.039 [DEBUG] [Thread-115504] [transport.py] [_log()] kex follows: False
2025-11-03T12:06:20.039 [DEBUG] [Thread-115504] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:06:20.039 [DEBUG] [Thread-115504] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:06:20.039 [DEBUG] [Thread-115504] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:06:20.039 [DEBUG] [Thread-115504] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:06:20.039 [DEBUG] [Thread-115504] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:06:20.039 [DEBUG] [Thread-115504] [transport.py] [_log()] Compression: none
2025-11-03T12:06:20.039 [DEBUG] [Thread-115504] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:06:20.098 [DEBUG] [Thread-115504] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:06:20.099 [DEBUG] [Thread-115504] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:06:20.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:06:20.100 [DEBUG] [Thread-115504] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:06:20.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:06:20.157 [DEBUG] [Thread-115504] [transport.py] [_log()] userauth is OK
2025-11-03T12:06:20.158 [DEBUG] [Thread-115504] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:06:20.158 [DEBUG] [Thread-115504] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:06:20.158 [DEBUG] [Thread-115504] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:06:20.158 [DEBUG] [Thread-115504] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:06:20.183 [INFO] [Thread-115504] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:06:20.183 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:06:20.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:06:21.008 [DEBUG] [Thread-115504] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:06:21.008 [DEBUG] [Thread-115504] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:06:21.056 [DEBUG] [Thread-115504] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:06:21.056 [DEBUG] [Thread-115504] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:06:21.066 [DEBUG] [Thread-115504] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:06:21.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:06:21.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:06:21.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:06:21.094 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:06:21.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:06:21.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:06:21.103 [DEBUG] [Thread-115504] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:06:23.052 [DEBUG] [Thread-115506 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:06:37.310 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:06:37.321 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:06:38.108 [DEBUG] [Thread-115507 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:06:51.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:06:51.125 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:06:51.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:06:51.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 6, 23), 41.75, 5.0, 0.0, 27.73, 24.59, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:06:51.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:06:23
2025-11-03T12:06:51.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:06:52.062 [DEBUG] [Thread-115508] [transport.py] [_log()] starting thread (client mode): 0x117be080
2025-11-03T12:06:52.062 [DEBUG] [Thread-115508] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:06:52.083 [DEBUG] [Thread-115508] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:06:52.083 [INFO] [Thread-115508] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:06:52.086 [DEBUG] [Thread-115508] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:06:52.086 [DEBUG] [Thread-115508] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:06:52.086 [DEBUG] [Thread-115508] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:06:52.086 [DEBUG] [Thread-115508] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:06:52.086 [DEBUG] [Thread-115508] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:06:52.086 [DEBUG] [Thread-115508] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:06:52.086 [DEBUG] [Thread-115508] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:06:52.086 [DEBUG] [Thread-115508] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:06:52.086 [DEBUG] [Thread-115508] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:06:52.086 [DEBUG] [Thread-115508] [transport.py] [_log()] client lang: <none>
2025-11-03T12:06:52.086 [DEBUG] [Thread-115508] [transport.py] [_log()] server lang: <none>
2025-11-03T12:06:52.086 [DEBUG] [Thread-115508] [transport.py] [_log()] kex follows: False
2025-11-03T12:06:52.086 [DEBUG] [Thread-115508] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:06:52.086 [DEBUG] [Thread-115508] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:06:52.087 [DEBUG] [Thread-115508] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:06:52.087 [DEBUG] [Thread-115508] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:06:52.087 [DEBUG] [Thread-115508] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:06:52.087 [DEBUG] [Thread-115508] [transport.py] [_log()] Compression: none
2025-11-03T12:06:52.087 [DEBUG] [Thread-115508] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:06:52.103 [DEBUG] [Thread-115508] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:06:52.103 [DEBUG] [Thread-115508] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:06:52.104 [DEBUG] [Thread-115508] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:06:52.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:06:52.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:06:52.106 [DEBUG] [Thread-115508] [transport.py] [_log()] userauth is OK
2025-11-03T12:06:52.107 [DEBUG] [Thread-115508] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:06:52.107 [DEBUG] [Thread-115508] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:06:52.107 [DEBUG] [Thread-115508] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:06:52.107 [DEBUG] [Thread-115508] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:06:52.132 [INFO] [Thread-115508] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:06:52.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:06:52.751 [DEBUG] [Thread-115508] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:06:52.751 [DEBUG] [Thread-115508] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:06:52.752 [DEBUG] [Thread-115508] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:06:52.793 [DEBUG] [Thread-115508] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:06:52.793 [DEBUG] [Thread-115508] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:06:52.795 [DEBUG] [Thread-115508] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:06:52.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:06:52.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:06:52.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:06:52.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:06:52.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:06:52.815 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:06:52.815 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:06:52.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:06:52.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:06:52.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.420937 -999.00  +24.20  23.46     10   -8.80 1 1 1 1 1   888    0 33.09 18.89 ----- 28.5 23.5 10.1 31.8 29.5 -29.4 28.4 -28.1 28.2 -27.5 28.9 -28.4
2025-11-03T12:06:52.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:06:52.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:06:52.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.420937
2025-11-03T12:06:52.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:06:52.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:06:52.818 [DEBUG] [Thread-115508] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:06:52.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:06:52.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:06:52.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:06:52.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:06:23', tmtdew=41.75, humidity=5.0, cloud=0.0, wind=27.73, temperature=24.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:06:08.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:06:52.898 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:06:52.909 [DEBUG] [Thread-115511] [transport.py] [_log()] starting thread (client mode): 0xedd5300
2025-11-03T12:06:52.910 [DEBUG] [Thread-115511] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:06:52.924 [DEBUG] [Thread-115511] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:06:52.924 [INFO] [Thread-115511] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:06:52.933 [DEBUG] [Thread-115511] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:06:52.933 [DEBUG] [Thread-115511] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:06:52.934 [DEBUG] [Thread-115511] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:06:52.934 [DEBUG] [Thread-115511] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:06:52.934 [DEBUG] [Thread-115511] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:06:52.934 [DEBUG] [Thread-115511] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:06:52.934 [DEBUG] [Thread-115511] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:06:52.934 [DEBUG] [Thread-115511] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:06:52.934 [DEBUG] [Thread-115511] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:06:52.934 [DEBUG] [Thread-115511] [transport.py] [_log()] client lang: <none>
2025-11-03T12:06:52.934 [DEBUG] [Thread-115511] [transport.py] [_log()] server lang: <none>
2025-11-03T12:06:52.934 [DEBUG] [Thread-115511] [transport.py] [_log()] kex follows: False
2025-11-03T12:06:52.935 [DEBUG] [Thread-115511] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:06:52.935 [DEBUG] [Thread-115511] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:06:52.935 [DEBUG] [Thread-115511] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:06:52.935 [DEBUG] [Thread-115511] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:06:52.935 [DEBUG] [Thread-115511] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:06:52.935 [DEBUG] [Thread-115511] [transport.py] [_log()] Compression: none
2025-11-03T12:06:52.935 [DEBUG] [Thread-115511] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:06:52.993 [DEBUG] [Thread-115511] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:06:52.994 [DEBUG] [Thread-115511] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:06:52.994 [DEBUG] [Thread-115511] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:06:52.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:06:52.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:06:53.048 [DEBUG] [Thread-115511] [transport.py] [_log()] userauth is OK
2025-11-03T12:06:53.048 [DEBUG] [Thread-115511] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:06:53.048 [DEBUG] [Thread-115511] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:06:53.049 [DEBUG] [Thread-115511] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:06:53.049 [DEBUG] [Thread-115511] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:06:53.066 [INFO] [Thread-115511] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:06:53.066 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:06:53.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:06:53.143 [DEBUG] [Thread-115513 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:06:53.915 [DEBUG] [Thread-115511] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:06:53.915 [DEBUG] [Thread-115511] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:06:53.965 [DEBUG] [Thread-115511] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:06:53.965 [DEBUG] [Thread-115511] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:06:53.975 [DEBUG] [Thread-115511] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:06:53.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:06:53.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:06:53.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:06:54.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:06:54.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:06:54.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:06:54.014 [DEBUG] [Thread-115511] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:06:59.092 [DEBUG] [Thread-115514 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:07:08.187 [DEBUG] [Thread-115515 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:07:23.222 [DEBUG] [Thread-115516 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:07:24.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:07:24.035 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:07:24.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:07:24.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 6, 56), 41.66, 5.0, 0.0, 35.25, 24.54, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:07:24.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:06:56
2025-11-03T12:07:24.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:07:25.029 [DEBUG] [Thread-115517] [transport.py] [_log()] starting thread (client mode): 0x117bf790
2025-11-03T12:07:25.029 [DEBUG] [Thread-115517] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:07:25.039 [DEBUG] [Thread-115517] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:07:25.039 [INFO] [Thread-115517] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:07:25.042 [DEBUG] [Thread-115517] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:07:25.042 [DEBUG] [Thread-115517] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:07:25.042 [DEBUG] [Thread-115517] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:07:25.042 [DEBUG] [Thread-115517] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:07:25.042 [DEBUG] [Thread-115517] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:07:25.042 [DEBUG] [Thread-115517] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:07:25.042 [DEBUG] [Thread-115517] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:07:25.042 [DEBUG] [Thread-115517] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:07:25.042 [DEBUG] [Thread-115517] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:07:25.042 [DEBUG] [Thread-115517] [transport.py] [_log()] client lang: <none>
2025-11-03T12:07:25.042 [DEBUG] [Thread-115517] [transport.py] [_log()] server lang: <none>
2025-11-03T12:07:25.042 [DEBUG] [Thread-115517] [transport.py] [_log()] kex follows: False
2025-11-03T12:07:25.042 [DEBUG] [Thread-115517] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:07:25.042 [DEBUG] [Thread-115517] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:07:25.042 [DEBUG] [Thread-115517] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:07:25.042 [DEBUG] [Thread-115517] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:07:25.042 [DEBUG] [Thread-115517] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:07:25.042 [DEBUG] [Thread-115517] [transport.py] [_log()] Compression: none
2025-11-03T12:07:25.042 [DEBUG] [Thread-115517] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:07:25.060 [DEBUG] [Thread-115517] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:07:25.060 [DEBUG] [Thread-115517] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:07:25.061 [DEBUG] [Thread-115517] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:07:25.061 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:07:25.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:07:25.105 [DEBUG] [Thread-115517] [transport.py] [_log()] userauth is OK
2025-11-03T12:07:25.105 [DEBUG] [Thread-115517] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:07:25.105 [DEBUG] [Thread-115517] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:07:25.105 [DEBUG] [Thread-115517] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:07:25.105 [DEBUG] [Thread-115517] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:07:25.127 [INFO] [Thread-115517] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:07:25.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:07:25.756 [DEBUG] [Thread-115517] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:07:25.756 [DEBUG] [Thread-115517] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:07:25.756 [DEBUG] [Thread-115517] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:07:25.797 [DEBUG] [Thread-115517] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:07:25.797 [DEBUG] [Thread-115517] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:07:25.801 [DEBUG] [Thread-115517] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:07:25.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:07:25.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:07:25.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:07:25.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:07:25.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:07:25.825 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:07:25.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:07:25.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:07:25.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:07:25.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.421632 -999.00  +23.70  23.23     10   -9.20 1 1 1 1 1   888    0 33.09 19.11 ----- 22.0 23.2 338.6 33.1 29.0 -30.1 28.2 -28.7 27.9 -28.1 28.6 -29.2
2025-11-03T12:07:25.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:07:25.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:07:25.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.421632
2025-11-03T12:07:25.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:07:25.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:07:25.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:07:25.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:07:25.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:07:25.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:06:56', tmtdew=41.66, humidity=5.0, cloud=0.0, wind=35.25, temperature=24.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:07:09.005', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:07:25.828 [DEBUG] [Thread-115517] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:07:25.911 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:07:25.924 [DEBUG] [Thread-115520] [transport.py] [_log()] starting thread (client mode): 0x117bf670
2025-11-03T12:07:25.924 [DEBUG] [Thread-115520] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:07:25.939 [DEBUG] [Thread-115520] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:07:25.940 [INFO] [Thread-115520] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:07:25.948 [DEBUG] [Thread-115520] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:07:25.948 [DEBUG] [Thread-115520] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:07:25.948 [DEBUG] [Thread-115520] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:07:25.948 [DEBUG] [Thread-115520] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:07:25.948 [DEBUG] [Thread-115520] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:07:25.948 [DEBUG] [Thread-115520] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:07:25.948 [DEBUG] [Thread-115520] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:07:25.948 [DEBUG] [Thread-115520] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:07:25.948 [DEBUG] [Thread-115520] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:07:25.948 [DEBUG] [Thread-115520] [transport.py] [_log()] client lang: <none>
2025-11-03T12:07:25.948 [DEBUG] [Thread-115520] [transport.py] [_log()] server lang: <none>
2025-11-03T12:07:25.948 [DEBUG] [Thread-115520] [transport.py] [_log()] kex follows: False
2025-11-03T12:07:25.948 [DEBUG] [Thread-115520] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:07:25.949 [DEBUG] [Thread-115520] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:07:25.949 [DEBUG] [Thread-115520] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:07:25.949 [DEBUG] [Thread-115520] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:07:25.949 [DEBUG] [Thread-115520] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:07:25.949 [DEBUG] [Thread-115520] [transport.py] [_log()] Compression: none
2025-11-03T12:07:25.949 [DEBUG] [Thread-115520] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:07:26.010 [DEBUG] [Thread-115520] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:07:26.012 [DEBUG] [Thread-115520] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:07:26.013 [DEBUG] [Thread-115520] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:07:26.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:07:26.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:07:26.069 [DEBUG] [Thread-115520] [transport.py] [_log()] userauth is OK
2025-11-03T12:07:26.070 [DEBUG] [Thread-115520] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:07:26.070 [DEBUG] [Thread-115520] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:07:26.070 [DEBUG] [Thread-115520] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:07:26.071 [DEBUG] [Thread-115520] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:07:26.090 [INFO] [Thread-115520] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:07:26.091 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:07:26.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:07:26.944 [DEBUG] [Thread-115520] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:07:26.944 [DEBUG] [Thread-115520] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:07:26.993 [DEBUG] [Thread-115520] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:07:26.993 [DEBUG] [Thread-115520] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:07:27.003 [DEBUG] [Thread-115520] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:07:27.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:07:27.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:07:27.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:07:27.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:07:27.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:07:27.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:07:27.044 [DEBUG] [Thread-115520] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:07:37.463 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:07:37.473 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:07:38.258 [DEBUG] [Thread-115522 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:07:53.312 [DEBUG] [Thread-115523 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:07:57.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:07:57.054 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:07:57.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:07:57.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 7, 28), 41.67, 4.98, 0.0, 34.69, 24.46, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:07:57.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:07:28
2025-11-03T12:07:57.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:07:57.993 [DEBUG] [Thread-115524] [transport.py] [_log()] starting thread (client mode): 0x117bcfd0
2025-11-03T12:07:57.993 [DEBUG] [Thread-115524] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:07:58.004 [DEBUG] [Thread-115524] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:07:58.004 [INFO] [Thread-115524] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:07:58.008 [DEBUG] [Thread-115524] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:07:58.008 [DEBUG] [Thread-115524] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:07:58.008 [DEBUG] [Thread-115524] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:07:58.008 [DEBUG] [Thread-115524] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:07:58.008 [DEBUG] [Thread-115524] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:07:58.008 [DEBUG] [Thread-115524] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:07:58.008 [DEBUG] [Thread-115524] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:07:58.008 [DEBUG] [Thread-115524] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:07:58.008 [DEBUG] [Thread-115524] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:07:58.008 [DEBUG] [Thread-115524] [transport.py] [_log()] client lang: <none>
2025-11-03T12:07:58.008 [DEBUG] [Thread-115524] [transport.py] [_log()] server lang: <none>
2025-11-03T12:07:58.008 [DEBUG] [Thread-115524] [transport.py] [_log()] kex follows: False
2025-11-03T12:07:58.009 [DEBUG] [Thread-115524] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:07:58.009 [DEBUG] [Thread-115524] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:07:58.009 [DEBUG] [Thread-115524] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:07:58.009 [DEBUG] [Thread-115524] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:07:58.009 [DEBUG] [Thread-115524] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:07:58.009 [DEBUG] [Thread-115524] [transport.py] [_log()] Compression: none
2025-11-03T12:07:58.009 [DEBUG] [Thread-115524] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:07:58.027 [DEBUG] [Thread-115524] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:07:58.027 [DEBUG] [Thread-115524] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:07:58.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:07:58.028 [DEBUG] [Thread-115524] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:07:58.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:07:58.031 [DEBUG] [Thread-115524] [transport.py] [_log()] userauth is OK
2025-11-03T12:07:58.031 [DEBUG] [Thread-115524] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:07:58.031 [DEBUG] [Thread-115524] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:07:58.031 [DEBUG] [Thread-115524] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:07:58.031 [DEBUG] [Thread-115524] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:07:58.055 [INFO] [Thread-115524] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:07:58.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:07:58.692 [DEBUG] [Thread-115524] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:07:58.692 [DEBUG] [Thread-115524] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:07:58.692 [DEBUG] [Thread-115524] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:07:58.732 [DEBUG] [Thread-115524] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:07:58.733 [DEBUG] [Thread-115524] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:07:58.735 [DEBUG] [Thread-115524] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:07:58.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:07:58.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:07:58.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:07:58.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:07:58.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:07:58.753 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:07:58.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:07:58.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:07:58.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:07:58.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.421979 -999.00  +23.90  27.39     10   -8.90 1 1 1 1 1   888    0 33.28 21.14 ----- 31.4 27.4 19.3 32.2 29.1 -29.9 28.1 -28.7 27.9 -28.6 28.4 -27.4
2025-11-03T12:07:58.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:07:58.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:07:58.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.421979
2025-11-03T12:07:58.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:07:58.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:07:58.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:07:58.762 [DEBUG] [Thread-115524] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:07:58.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:07:58.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:07:58.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:07:28', tmtdew=41.67, humidity=4.98, cloud=0.0, wind=34.69, temperature=24.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:07:38.986', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:07:58.835 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:07:58.847 [DEBUG] [Thread-115527] [transport.py] [_log()] starting thread (client mode): 0x117bdc00
2025-11-03T12:07:58.847 [DEBUG] [Thread-115527] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:07:58.863 [DEBUG] [Thread-115527] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:07:58.863 [INFO] [Thread-115527] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:07:58.870 [DEBUG] [Thread-115527] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:07:58.871 [DEBUG] [Thread-115527] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:07:58.871 [DEBUG] [Thread-115527] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:07:58.871 [DEBUG] [Thread-115527] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:07:58.871 [DEBUG] [Thread-115527] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:07:58.871 [DEBUG] [Thread-115527] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:07:58.871 [DEBUG] [Thread-115527] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:07:58.871 [DEBUG] [Thread-115527] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:07:58.871 [DEBUG] [Thread-115527] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:07:58.871 [DEBUG] [Thread-115527] [transport.py] [_log()] client lang: <none>
2025-11-03T12:07:58.871 [DEBUG] [Thread-115527] [transport.py] [_log()] server lang: <none>
2025-11-03T12:07:58.871 [DEBUG] [Thread-115527] [transport.py] [_log()] kex follows: False
2025-11-03T12:07:58.871 [DEBUG] [Thread-115527] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:07:58.871 [DEBUG] [Thread-115527] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:07:58.871 [DEBUG] [Thread-115527] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:07:58.871 [DEBUG] [Thread-115527] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:07:58.872 [DEBUG] [Thread-115527] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:07:58.872 [DEBUG] [Thread-115527] [transport.py] [_log()] Compression: none
2025-11-03T12:07:58.872 [DEBUG] [Thread-115527] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:07:58.928 [DEBUG] [Thread-115527] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:07:58.928 [DEBUG] [Thread-115527] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:07:58.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:07:58.930 [DEBUG] [Thread-115527] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:07:58.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:07:58.984 [DEBUG] [Thread-115527] [transport.py] [_log()] userauth is OK
2025-11-03T12:07:58.985 [DEBUG] [Thread-115527] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:07:58.985 [DEBUG] [Thread-115527] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:07:58.985 [DEBUG] [Thread-115527] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:07:58.985 [DEBUG] [Thread-115527] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:07:59.005 [INFO] [Thread-115527] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:07:59.005 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:07:59.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:07:59.173 [DEBUG] [Thread-115529 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:07:59.830 [DEBUG] [Thread-115527] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:07:59.830 [DEBUG] [Thread-115527] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:07:59.877 [DEBUG] [Thread-115527] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:07:59.878 [DEBUG] [Thread-115527] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:07:59.886 [DEBUG] [Thread-115527] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:07:59.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:07:59.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:07:59.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:07:59.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:07:59.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:07:59.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:07:59.924 [DEBUG] [Thread-115527] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:08:08.352 [DEBUG] [Thread-115530 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:08:23.404 [DEBUG] [Thread-115531 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:08:29.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:08:29.925 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:08:29.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:08:30.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 8), 41.48, 5.07, 0.0, 29.54, 23.93, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:08:30.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:08:00
2025-11-03T12:08:30.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:08:30.856 [DEBUG] [Thread-115532] [transport.py] [_log()] starting thread (client mode): 0x81bbbb0
2025-11-03T12:08:30.856 [DEBUG] [Thread-115532] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:08:30.878 [DEBUG] [Thread-115532] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:08:30.878 [INFO] [Thread-115532] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:08:30.890 [DEBUG] [Thread-115532] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:08:30.891 [DEBUG] [Thread-115532] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:08:30.891 [DEBUG] [Thread-115532] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:08:30.891 [DEBUG] [Thread-115532] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:08:30.891 [DEBUG] [Thread-115532] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:08:30.891 [DEBUG] [Thread-115532] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:08:30.891 [DEBUG] [Thread-115532] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:08:30.891 [DEBUG] [Thread-115532] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:08:30.892 [DEBUG] [Thread-115532] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:08:30.892 [DEBUG] [Thread-115532] [transport.py] [_log()] client lang: <none>
2025-11-03T12:08:30.892 [DEBUG] [Thread-115532] [transport.py] [_log()] server lang: <none>
2025-11-03T12:08:30.892 [DEBUG] [Thread-115532] [transport.py] [_log()] kex follows: False
2025-11-03T12:08:30.892 [DEBUG] [Thread-115532] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:08:30.892 [DEBUG] [Thread-115532] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:08:30.892 [DEBUG] [Thread-115532] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:08:30.892 [DEBUG] [Thread-115532] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:08:30.893 [DEBUG] [Thread-115532] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:08:30.893 [DEBUG] [Thread-115532] [transport.py] [_log()] Compression: none
2025-11-03T12:08:30.893 [DEBUG] [Thread-115532] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:08:30.912 [DEBUG] [Thread-115532] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:08:30.913 [DEBUG] [Thread-115532] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:08:30.913 [DEBUG] [Thread-115532] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:08:30.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:08:30.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:08:30.916 [DEBUG] [Thread-115532] [transport.py] [_log()] userauth is OK
2025-11-03T12:08:30.916 [DEBUG] [Thread-115532] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:08:30.916 [DEBUG] [Thread-115532] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:08:30.916 [DEBUG] [Thread-115532] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:08:30.916 [DEBUG] [Thread-115532] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:08:30.948 [INFO] [Thread-115532] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:08:30.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:08:31.586 [DEBUG] [Thread-115532] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:08:31.587 [DEBUG] [Thread-115532] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:08:31.587 [DEBUG] [Thread-115532] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:08:31.628 [DEBUG] [Thread-115532] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:08:31.628 [DEBUG] [Thread-115532] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:08:31.632 [DEBUG] [Thread-115532] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:08:31.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:08:31.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:08:31.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:08:31.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:08:31.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:08:31.656 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:08:31.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:08:31.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:08:31.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:08:31.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.422326 -999.00  +24.00  22.31     10   -8.90 1 1 1 1 1   888    0 33.41 23.26 ----- 21.2 22.3 18.2 35.2 29.0 -28.9 28.0 -29.1 27.9 -27.6 28.4 -27.2
2025-11-03T12:08:31.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:08:31.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:08:31.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.422326
2025-11-03T12:08:31.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:08:31.659 [DEBUG] [Thread-115532] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:08:31.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:08:31.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:08:31.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:08:31.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:08:31.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:08:00', tmtdew=41.48, humidity=5.07, cloud=0.0, wind=29.54, temperature=23.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:08:08.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:08:31.747 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:08:31.759 [DEBUG] [Thread-115535] [transport.py] [_log()] starting thread (client mode): 0x117bfa30
2025-11-03T12:08:31.759 [DEBUG] [Thread-115535] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:08:31.774 [DEBUG] [Thread-115535] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:08:31.775 [INFO] [Thread-115535] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:08:31.782 [DEBUG] [Thread-115535] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:08:31.782 [DEBUG] [Thread-115535] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:08:31.782 [DEBUG] [Thread-115535] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:08:31.782 [DEBUG] [Thread-115535] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:08:31.782 [DEBUG] [Thread-115535] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:08:31.782 [DEBUG] [Thread-115535] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:08:31.782 [DEBUG] [Thread-115535] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:08:31.782 [DEBUG] [Thread-115535] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:08:31.782 [DEBUG] [Thread-115535] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:08:31.782 [DEBUG] [Thread-115535] [transport.py] [_log()] client lang: <none>
2025-11-03T12:08:31.782 [DEBUG] [Thread-115535] [transport.py] [_log()] server lang: <none>
2025-11-03T12:08:31.783 [DEBUG] [Thread-115535] [transport.py] [_log()] kex follows: False
2025-11-03T12:08:31.783 [DEBUG] [Thread-115535] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:08:31.783 [DEBUG] [Thread-115535] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:08:31.783 [DEBUG] [Thread-115535] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:08:31.783 [DEBUG] [Thread-115535] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:08:31.783 [DEBUG] [Thread-115535] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:08:31.783 [DEBUG] [Thread-115535] [transport.py] [_log()] Compression: none
2025-11-03T12:08:31.783 [DEBUG] [Thread-115535] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:08:31.840 [DEBUG] [Thread-115535] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:08:31.841 [DEBUG] [Thread-115535] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:08:31.842 [DEBUG] [Thread-115535] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:08:31.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:08:31.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:08:31.896 [DEBUG] [Thread-115535] [transport.py] [_log()] userauth is OK
2025-11-03T12:08:31.896 [DEBUG] [Thread-115535] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:08:31.896 [DEBUG] [Thread-115535] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:08:31.896 [DEBUG] [Thread-115535] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:08:31.897 [DEBUG] [Thread-115535] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:08:31.915 [INFO] [Thread-115535] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:08:31.916 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:08:31.916 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:08:32.784 [DEBUG] [Thread-115535] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:08:32.784 [DEBUG] [Thread-115535] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:08:32.832 [DEBUG] [Thread-115535] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:08:32.832 [DEBUG] [Thread-115535] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:08:32.842 [DEBUG] [Thread-115535] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:08:32.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:08:32.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:08:32.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:08:32.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:08:32.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:08:32.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:08:32.880 [DEBUG] [Thread-115535] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:08:37.614 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:08:37.615 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:08:38.434 [DEBUG] [Thread-115537 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:08:53.489 [DEBUG] [Thread-115538 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:08:59.240 [DEBUG] [Thread-115539 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:09:02.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:09:02.903 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:09:02.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:09:03.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 8, 33), 41.39, 5.12, 0.0, 34.81, 23.96, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:09:03.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:08:33
2025-11-03T12:09:03.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:09:03.871 [DEBUG] [Thread-115540] [transport.py] [_log()] starting thread (client mode): 0x117befe0
2025-11-03T12:09:03.871 [DEBUG] [Thread-115540] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:09:03.891 [DEBUG] [Thread-115540] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:09:03.891 [INFO] [Thread-115540] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:09:03.895 [DEBUG] [Thread-115540] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:09:03.895 [DEBUG] [Thread-115540] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:09:03.895 [DEBUG] [Thread-115540] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:09:03.895 [DEBUG] [Thread-115540] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:09:03.895 [DEBUG] [Thread-115540] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:09:03.895 [DEBUG] [Thread-115540] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:09:03.895 [DEBUG] [Thread-115540] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:09:03.895 [DEBUG] [Thread-115540] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:09:03.895 [DEBUG] [Thread-115540] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:09:03.895 [DEBUG] [Thread-115540] [transport.py] [_log()] client lang: <none>
2025-11-03T12:09:03.895 [DEBUG] [Thread-115540] [transport.py] [_log()] server lang: <none>
2025-11-03T12:09:03.895 [DEBUG] [Thread-115540] [transport.py] [_log()] kex follows: False
2025-11-03T12:09:03.895 [DEBUG] [Thread-115540] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:09:03.895 [DEBUG] [Thread-115540] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:09:03.895 [DEBUG] [Thread-115540] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:09:03.895 [DEBUG] [Thread-115540] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:09:03.895 [DEBUG] [Thread-115540] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:09:03.895 [DEBUG] [Thread-115540] [transport.py] [_log()] Compression: none
2025-11-03T12:09:03.895 [DEBUG] [Thread-115540] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:09:03.911 [DEBUG] [Thread-115540] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:09:03.912 [DEBUG] [Thread-115540] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:09:03.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:09:03.912 [DEBUG] [Thread-115540] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:09:03.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:09:03.913 [DEBUG] [Thread-115540] [transport.py] [_log()] userauth is OK
2025-11-03T12:09:03.913 [DEBUG] [Thread-115540] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:09:03.913 [DEBUG] [Thread-115540] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:09:03.913 [DEBUG] [Thread-115540] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:09:03.913 [DEBUG] [Thread-115540] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:09:03.922 [INFO] [Thread-115540] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:09:03.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:09:04.581 [DEBUG] [Thread-115540] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:09:04.581 [DEBUG] [Thread-115540] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:09:04.581 [DEBUG] [Thread-115540] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:09:04.622 [DEBUG] [Thread-115540] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:09:04.622 [DEBUG] [Thread-115540] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:09:04.624 [DEBUG] [Thread-115540] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:09:04.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:09:04.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:09:04.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:09:04.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:09:04.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:09:04.652 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:09:04.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:09:04.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:09:04.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:09:04.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.422662 -999.00  +24.20  22.41     10   -9.00 1 1 1 1 1   888    0 33.51 26.46 ----- 18.4 22.4 349.5 27.2 29.0 -29.2 28.1 -27.9 27.9 -27.7 28.5 -28.2
2025-11-03T12:09:04.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:09:04.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:09:04.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.422662
2025-11-03T12:09:04.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:09:04.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:09:04.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:09:04.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:09:04.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:09:04.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:08:33', tmtdew=41.39, humidity=5.12, cloud=0.0, wind=34.81, temperature=23.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:08:37.997', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:09:04.654 [DEBUG] [Thread-115540] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:09:04.729 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:09:08.521 [DEBUG] [Thread-115543 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:09:23.573 [DEBUG] [Thread-115544 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:09:37.756 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:09:37.758 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:09:38.610 [DEBUG] [Thread-115545 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:09:53.640 [DEBUG] [Thread-115546 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:09:59.332 [DEBUG] [Thread-115547 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:10:08.681 [DEBUG] [Thread-115548 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:10:23.718 [DEBUG] [Thread-115549 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:10:37.899 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:10:37.910 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:10:38.759 [DEBUG] [Thread-115550 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:10:53.797 [DEBUG] [Thread-115551 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:10:59.397 [DEBUG] [Thread-115552 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:11:08.833 [DEBUG] [Thread-115553 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:11:17.474 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T12:11:23.869 [DEBUG] [Thread-115554 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:11:38.049 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:11:38.050 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:11:38.904 [DEBUG] [Thread-115555 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:11:47.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:11:47.511 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:11:47.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:11:48.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 11, 14), 40.73, 5.7, 0.0, 18.4, 23.81, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:11:48.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:11:14
2025-11-03T12:11:48.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:11:48.550 [DEBUG] [Thread-115556] [transport.py] [_log()] starting thread (client mode): 0x117bd960
2025-11-03T12:11:48.551 [DEBUG] [Thread-115556] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:11:48.563 [DEBUG] [Thread-115556] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:11:48.563 [INFO] [Thread-115556] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:11:48.568 [DEBUG] [Thread-115556] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:11:48.568 [DEBUG] [Thread-115556] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:11:48.568 [DEBUG] [Thread-115556] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:11:48.568 [DEBUG] [Thread-115556] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:11:48.568 [DEBUG] [Thread-115556] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:11:48.568 [DEBUG] [Thread-115556] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:11:48.568 [DEBUG] [Thread-115556] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:11:48.568 [DEBUG] [Thread-115556] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:11:48.568 [DEBUG] [Thread-115556] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:11:48.568 [DEBUG] [Thread-115556] [transport.py] [_log()] client lang: <none>
2025-11-03T12:11:48.568 [DEBUG] [Thread-115556] [transport.py] [_log()] server lang: <none>
2025-11-03T12:11:48.568 [DEBUG] [Thread-115556] [transport.py] [_log()] kex follows: False
2025-11-03T12:11:48.568 [DEBUG] [Thread-115556] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:11:48.569 [DEBUG] [Thread-115556] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:11:48.569 [DEBUG] [Thread-115556] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:11:48.569 [DEBUG] [Thread-115556] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:11:48.569 [DEBUG] [Thread-115556] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:11:48.569 [DEBUG] [Thread-115556] [transport.py] [_log()] Compression: none
2025-11-03T12:11:48.569 [DEBUG] [Thread-115556] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:11:48.601 [DEBUG] [Thread-115556] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:11:48.605 [DEBUG] [Thread-115556] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:11:48.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:11:48.607 [DEBUG] [Thread-115556] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:11:48.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:11:48.609 [DEBUG] [Thread-115556] [transport.py] [_log()] userauth is OK
2025-11-03T12:11:48.609 [DEBUG] [Thread-115556] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:11:48.610 [DEBUG] [Thread-115556] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:11:48.610 [DEBUG] [Thread-115556] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:11:48.610 [DEBUG] [Thread-115556] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:11:48.628 [INFO] [Thread-115556] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:11:48.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:11:49.227 [DEBUG] [Thread-115556] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:11:49.227 [DEBUG] [Thread-115556] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:11:49.228 [DEBUG] [Thread-115556] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:11:49.269 [DEBUG] [Thread-115556] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:11:49.269 [DEBUG] [Thread-115556] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:11:49.271 [DEBUG] [Thread-115556] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:11:49.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:11:49.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:11:49.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:11:49.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:11:49.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:11:49.294 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:11:49.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:11:49.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:11:49.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:11:49.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.424757 -999.00  +23.50  11.15     10   -9.40 1 1 1 1 1   888    0 34.02 43.26 ----- 16.7 11.2 333.5 29.1 29.1 -28.8 28.0 -30.1 27.9 -27.2 28.5 -27.7
2025-11-03T12:11:49.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:11:49.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:11:49.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.424757
2025-11-03T12:11:49.301 [DEBUG] [Thread-115556] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:11:49.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:11:49.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:11:49.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:11:49.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:11:49.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:11:49.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:11:14', tmtdew=40.73, humidity=5.7, cloud=0.0, wind=18.4, temperature=23.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:11:39.005', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:11:49.381 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:11:49.393 [DEBUG] [Thread-115559] [transport.py] [_log()] starting thread (client mode): 0x117be3b0
2025-11-03T12:11:49.394 [DEBUG] [Thread-115559] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:11:49.408 [DEBUG] [Thread-115559] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:11:49.408 [INFO] [Thread-115559] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:11:49.416 [DEBUG] [Thread-115559] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:11:49.416 [DEBUG] [Thread-115559] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:11:49.416 [DEBUG] [Thread-115559] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:11:49.416 [DEBUG] [Thread-115559] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:11:49.416 [DEBUG] [Thread-115559] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:11:49.416 [DEBUG] [Thread-115559] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:11:49.416 [DEBUG] [Thread-115559] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:11:49.416 [DEBUG] [Thread-115559] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:11:49.416 [DEBUG] [Thread-115559] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:11:49.416 [DEBUG] [Thread-115559] [transport.py] [_log()] client lang: <none>
2025-11-03T12:11:49.416 [DEBUG] [Thread-115559] [transport.py] [_log()] server lang: <none>
2025-11-03T12:11:49.416 [DEBUG] [Thread-115559] [transport.py] [_log()] kex follows: False
2025-11-03T12:11:49.416 [DEBUG] [Thread-115559] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:11:49.416 [DEBUG] [Thread-115559] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:11:49.416 [DEBUG] [Thread-115559] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:11:49.416 [DEBUG] [Thread-115559] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:11:49.417 [DEBUG] [Thread-115559] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:11:49.417 [DEBUG] [Thread-115559] [transport.py] [_log()] Compression: none
2025-11-03T12:11:49.417 [DEBUG] [Thread-115559] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:11:49.473 [DEBUG] [Thread-115559] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:11:49.473 [DEBUG] [Thread-115559] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:11:49.473 [DEBUG] [Thread-115559] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:11:49.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:11:49.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:11:49.530 [DEBUG] [Thread-115559] [transport.py] [_log()] userauth is OK
2025-11-03T12:11:49.530 [DEBUG] [Thread-115559] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:11:49.530 [DEBUG] [Thread-115559] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:11:49.530 [DEBUG] [Thread-115559] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:11:49.530 [DEBUG] [Thread-115559] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:11:49.545 [INFO] [Thread-115559] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:11:49.545 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:11:49.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:11:50.382 [DEBUG] [Thread-115559] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:11:50.382 [DEBUG] [Thread-115559] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:11:50.423 [DEBUG] [Thread-115559] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:11:50.424 [DEBUG] [Thread-115559] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:11:50.434 [DEBUG] [Thread-115559] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:11:50.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:11:50.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:11:50.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:11:50.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:11:50.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:11:50.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:11:50.469 [DEBUG] [Thread-115559] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:11:53.935 [DEBUG] [Thread-115561 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:11:59.472 [DEBUG] [Thread-115562 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:12:09.034 [DEBUG] [Thread-115563 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:12:20.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:12:20.490 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:12:20.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:12:21.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 11, 46), 41.12, 5.62, 0.0, 24.7, 24.33, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:12:21.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:11:46
2025-11-03T12:12:21.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:12:21.488 [DEBUG] [Thread-115564] [transport.py] [_log()] starting thread (client mode): 0x117beec0
2025-11-03T12:12:21.488 [DEBUG] [Thread-115564] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:12:21.507 [DEBUG] [Thread-115564] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:12:21.507 [INFO] [Thread-115564] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:12:21.510 [DEBUG] [Thread-115564] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:12:21.510 [DEBUG] [Thread-115564] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:12:21.510 [DEBUG] [Thread-115564] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:12:21.510 [DEBUG] [Thread-115564] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:12:21.510 [DEBUG] [Thread-115564] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:12:21.510 [DEBUG] [Thread-115564] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:12:21.510 [DEBUG] [Thread-115564] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:12:21.510 [DEBUG] [Thread-115564] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:12:21.510 [DEBUG] [Thread-115564] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:12:21.510 [DEBUG] [Thread-115564] [transport.py] [_log()] client lang: <none>
2025-11-03T12:12:21.511 [DEBUG] [Thread-115564] [transport.py] [_log()] server lang: <none>
2025-11-03T12:12:21.511 [DEBUG] [Thread-115564] [transport.py] [_log()] kex follows: False
2025-11-03T12:12:21.511 [DEBUG] [Thread-115564] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:12:21.511 [DEBUG] [Thread-115564] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:12:21.511 [DEBUG] [Thread-115564] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:12:21.511 [DEBUG] [Thread-115564] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:12:21.511 [DEBUG] [Thread-115564] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:12:21.511 [DEBUG] [Thread-115564] [transport.py] [_log()] Compression: none
2025-11-03T12:12:21.511 [DEBUG] [Thread-115564] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:12:21.518 [DEBUG] [Thread-115564] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:12:21.518 [DEBUG] [Thread-115564] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:12:21.518 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:12:21.519 [DEBUG] [Thread-115564] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:12:21.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:12:21.519 [DEBUG] [Thread-115564] [transport.py] [_log()] userauth is OK
2025-11-03T12:12:21.519 [DEBUG] [Thread-115564] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:12:21.519 [DEBUG] [Thread-115564] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:12:21.519 [DEBUG] [Thread-115564] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:12:21.519 [DEBUG] [Thread-115564] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:12:21.529 [INFO] [Thread-115564] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:12:21.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:12:22.182 [DEBUG] [Thread-115564] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:12:22.183 [DEBUG] [Thread-115564] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:12:22.183 [DEBUG] [Thread-115564] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:12:22.224 [DEBUG] [Thread-115564] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:12:22.224 [DEBUG] [Thread-115564] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:12:22.227 [DEBUG] [Thread-115564] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:12:22.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:12:22.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:12:22.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:12:22.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:12:22.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:12:22.251 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:12:22.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:12:22.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:12:22.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:12:22.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.425104 -999.00  +23.30  19.89     10   -9.20 1 1 1 1 1   888    0 34.68 43.90 ----- 20.1 19.9 16.5 28.0 29.1 -30.3 28.2 -28.0 27.9 -28.4 28.7 -27.3
2025-11-03T12:12:22.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:12:22.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:12:22.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.425104
2025-11-03T12:12:22.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:12:22.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:12:22.253 [DEBUG] [Thread-115564] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:12:22.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:12:22.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:12:22.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:12:22.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:11:46', tmtdew=41.12, humidity=5.62, cloud=0.0, wind=24.7, temperature=24.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:12:08.986', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:12:22.349 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:12:22.362 [DEBUG] [Thread-115567] [transport.py] [_log()] starting thread (client mode): 0x117bcd60
2025-11-03T12:12:22.362 [DEBUG] [Thread-115567] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:12:22.376 [DEBUG] [Thread-115567] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:12:22.377 [INFO] [Thread-115567] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:12:22.385 [DEBUG] [Thread-115567] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:12:22.385 [DEBUG] [Thread-115567] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:12:22.385 [DEBUG] [Thread-115567] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:12:22.385 [DEBUG] [Thread-115567] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:12:22.385 [DEBUG] [Thread-115567] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:12:22.386 [DEBUG] [Thread-115567] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:12:22.386 [DEBUG] [Thread-115567] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:12:22.386 [DEBUG] [Thread-115567] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:12:22.386 [DEBUG] [Thread-115567] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:12:22.386 [DEBUG] [Thread-115567] [transport.py] [_log()] client lang: <none>
2025-11-03T12:12:22.386 [DEBUG] [Thread-115567] [transport.py] [_log()] server lang: <none>
2025-11-03T12:12:22.386 [DEBUG] [Thread-115567] [transport.py] [_log()] kex follows: False
2025-11-03T12:12:22.386 [DEBUG] [Thread-115567] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:12:22.387 [DEBUG] [Thread-115567] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:12:22.387 [DEBUG] [Thread-115567] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:12:22.387 [DEBUG] [Thread-115567] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:12:22.387 [DEBUG] [Thread-115567] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:12:22.387 [DEBUG] [Thread-115567] [transport.py] [_log()] Compression: none
2025-11-03T12:12:22.387 [DEBUG] [Thread-115567] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:12:22.446 [DEBUG] [Thread-115567] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:12:22.447 [DEBUG] [Thread-115567] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:12:22.447 [DEBUG] [Thread-115567] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:12:22.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:12:22.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:12:22.502 [DEBUG] [Thread-115567] [transport.py] [_log()] userauth is OK
2025-11-03T12:12:22.502 [DEBUG] [Thread-115567] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:12:22.503 [DEBUG] [Thread-115567] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:12:22.503 [DEBUG] [Thread-115567] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:12:22.503 [DEBUG] [Thread-115567] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:12:22.529 [INFO] [Thread-115567] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:12:22.529 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:12:22.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:12:23.380 [DEBUG] [Thread-115567] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:12:23.380 [DEBUG] [Thread-115567] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:12:23.428 [DEBUG] [Thread-115567] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:12:23.428 [DEBUG] [Thread-115567] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:12:23.437 [DEBUG] [Thread-115567] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:12:23.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:12:23.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:12:23.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:12:23.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:12:23.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:12:23.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:12:23.474 [DEBUG] [Thread-115567] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:12:24.065 [DEBUG] [Thread-115569 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:12:38.190 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:12:38.192 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:12:39.118 [DEBUG] [Thread-115570 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:12:53.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:12:53.496 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:12:53.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:12:54.153 [DEBUG] [Thread-115571 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:12:54.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 12, 19), 40.98, 5.67, 0.0, 26.96, 24.21, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:12:54.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:12:19
2025-11-03T12:12:54.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:12:54.499 [DEBUG] [Thread-115572] [transport.py] [_log()] starting thread (client mode): 0x117bd990
2025-11-03T12:12:54.499 [DEBUG] [Thread-115572] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:12:54.518 [DEBUG] [Thread-115572] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:12:54.518 [INFO] [Thread-115572] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:12:54.520 [DEBUG] [Thread-115572] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:12:54.520 [DEBUG] [Thread-115572] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:12:54.521 [DEBUG] [Thread-115572] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:12:54.521 [DEBUG] [Thread-115572] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:12:54.521 [DEBUG] [Thread-115572] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:12:54.521 [DEBUG] [Thread-115572] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:12:54.521 [DEBUG] [Thread-115572] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:12:54.521 [DEBUG] [Thread-115572] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:12:54.521 [DEBUG] [Thread-115572] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:12:54.521 [DEBUG] [Thread-115572] [transport.py] [_log()] client lang: <none>
2025-11-03T12:12:54.521 [DEBUG] [Thread-115572] [transport.py] [_log()] server lang: <none>
2025-11-03T12:12:54.521 [DEBUG] [Thread-115572] [transport.py] [_log()] kex follows: False
2025-11-03T12:12:54.521 [DEBUG] [Thread-115572] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:12:54.521 [DEBUG] [Thread-115572] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:12:54.521 [DEBUG] [Thread-115572] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:12:54.521 [DEBUG] [Thread-115572] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:12:54.521 [DEBUG] [Thread-115572] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:12:54.521 [DEBUG] [Thread-115572] [transport.py] [_log()] Compression: none
2025-11-03T12:12:54.521 [DEBUG] [Thread-115572] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:12:54.536 [DEBUG] [Thread-115572] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:12:54.537 [DEBUG] [Thread-115572] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:12:54.537 [DEBUG] [Thread-115572] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:12:54.537 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:12:54.538 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:12:54.538 [DEBUG] [Thread-115572] [transport.py] [_log()] userauth is OK
2025-11-03T12:12:54.538 [DEBUG] [Thread-115572] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:12:54.538 [DEBUG] [Thread-115572] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:12:54.538 [DEBUG] [Thread-115572] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:12:54.538 [DEBUG] [Thread-115572] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:12:54.550 [INFO] [Thread-115572] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:12:54.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:12:55.184 [DEBUG] [Thread-115572] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:12:55.184 [DEBUG] [Thread-115572] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:12:55.184 [DEBUG] [Thread-115572] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:12:55.225 [DEBUG] [Thread-115572] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:12:55.225 [DEBUG] [Thread-115572] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:12:55.228 [DEBUG] [Thread-115572] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:12:55.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:12:55.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:12:55.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:12:55.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:12:55.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:12:55.244 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:12:55.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:12:55.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:12:55.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:12:55.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.425451 -999.00  +23.60  23.65     10   -8.70 1 1 1 1 1   888    0 34.24 38.12 ----- 19.5 23.6 11.6 30.6 29.1 -28.7 28.1 -27.9 28.0 -27.0 28.5 -28.2
2025-11-03T12:12:55.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:12:55.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:12:55.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.425451
2025-11-03T12:12:55.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:12:55.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:12:55.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:12:55.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:12:55.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:12:55.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:12:19', tmtdew=40.98, humidity=5.67, cloud=0.0, wind=26.96, temperature=24.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:12:38.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:12:55.245 [DEBUG] [Thread-115572] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:12:55.317 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:12:55.328 [DEBUG] [Thread-115575] [transport.py] [_log()] starting thread (client mode): 0x117be4a0
2025-11-03T12:12:55.328 [DEBUG] [Thread-115575] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:12:55.343 [DEBUG] [Thread-115575] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:12:55.343 [INFO] [Thread-115575] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:12:55.351 [DEBUG] [Thread-115575] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:12:55.351 [DEBUG] [Thread-115575] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:12:55.351 [DEBUG] [Thread-115575] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:12:55.351 [DEBUG] [Thread-115575] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:12:55.351 [DEBUG] [Thread-115575] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:12:55.351 [DEBUG] [Thread-115575] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:12:55.351 [DEBUG] [Thread-115575] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:12:55.351 [DEBUG] [Thread-115575] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:12:55.351 [DEBUG] [Thread-115575] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:12:55.351 [DEBUG] [Thread-115575] [transport.py] [_log()] client lang: <none>
2025-11-03T12:12:55.351 [DEBUG] [Thread-115575] [transport.py] [_log()] server lang: <none>
2025-11-03T12:12:55.351 [DEBUG] [Thread-115575] [transport.py] [_log()] kex follows: False
2025-11-03T12:12:55.351 [DEBUG] [Thread-115575] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:12:55.351 [DEBUG] [Thread-115575] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:12:55.351 [DEBUG] [Thread-115575] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:12:55.351 [DEBUG] [Thread-115575] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:12:55.351 [DEBUG] [Thread-115575] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:12:55.351 [DEBUG] [Thread-115575] [transport.py] [_log()] Compression: none
2025-11-03T12:12:55.351 [DEBUG] [Thread-115575] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:12:55.408 [DEBUG] [Thread-115575] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:12:55.408 [DEBUG] [Thread-115575] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:12:55.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:12:55.409 [DEBUG] [Thread-115575] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:12:55.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:12:55.466 [DEBUG] [Thread-115575] [transport.py] [_log()] userauth is OK
2025-11-03T12:12:55.466 [DEBUG] [Thread-115575] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:12:55.466 [DEBUG] [Thread-115575] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:12:55.466 [DEBUG] [Thread-115575] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:12:55.466 [DEBUG] [Thread-115575] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:12:55.480 [INFO] [Thread-115575] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:12:55.480 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:12:55.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:12:56.343 [DEBUG] [Thread-115575] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:12:56.343 [DEBUG] [Thread-115575] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:12:56.391 [DEBUG] [Thread-115575] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:12:56.391 [DEBUG] [Thread-115575] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:12:56.399 [DEBUG] [Thread-115575] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:12:56.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:12:56.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:12:56.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:12:56.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:12:56.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:12:56.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:12:56.431 [DEBUG] [Thread-115575] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:12:59.557 [DEBUG] [Thread-115577 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:13:09.185 [DEBUG] [Thread-115578 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:13:24.235 [DEBUG] [Thread-115579 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:13:26.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:13:26.426 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:13:26.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:13:27.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 12, 51), 40.89, 5.73, 0.0, 25.57, 24.28, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:13:27.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:12:51
2025-11-03T12:13:27.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:13:27.380 [DEBUG] [Thread-115580] [transport.py] [_log()] starting thread (client mode): 0x117bdf00
2025-11-03T12:13:27.380 [DEBUG] [Thread-115580] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:13:27.393 [DEBUG] [Thread-115580] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:13:27.393 [INFO] [Thread-115580] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:13:27.396 [DEBUG] [Thread-115580] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:13:27.405 [DEBUG] [Thread-115580] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:13:27.405 [DEBUG] [Thread-115580] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:13:27.405 [DEBUG] [Thread-115580] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:13:27.406 [DEBUG] [Thread-115580] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:13:27.406 [DEBUG] [Thread-115580] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:13:27.406 [DEBUG] [Thread-115580] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:13:27.406 [DEBUG] [Thread-115580] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:13:27.406 [DEBUG] [Thread-115580] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:13:27.406 [DEBUG] [Thread-115580] [transport.py] [_log()] client lang: <none>
2025-11-03T12:13:27.406 [DEBUG] [Thread-115580] [transport.py] [_log()] server lang: <none>
2025-11-03T12:13:27.406 [DEBUG] [Thread-115580] [transport.py] [_log()] kex follows: False
2025-11-03T12:13:27.406 [DEBUG] [Thread-115580] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:13:27.406 [DEBUG] [Thread-115580] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:13:27.407 [DEBUG] [Thread-115580] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:13:27.407 [DEBUG] [Thread-115580] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:13:27.407 [DEBUG] [Thread-115580] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:13:27.407 [DEBUG] [Thread-115580] [transport.py] [_log()] Compression: none
2025-11-03T12:13:27.407 [DEBUG] [Thread-115580] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:13:27.425 [DEBUG] [Thread-115580] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:13:27.426 [DEBUG] [Thread-115580] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:13:27.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:13:27.427 [DEBUG] [Thread-115580] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:13:27.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:13:27.429 [DEBUG] [Thread-115580] [transport.py] [_log()] userauth is OK
2025-11-03T12:13:27.429 [DEBUG] [Thread-115580] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:13:27.429 [DEBUG] [Thread-115580] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:13:27.430 [DEBUG] [Thread-115580] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:13:27.430 [DEBUG] [Thread-115580] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:13:27.453 [INFO] [Thread-115580] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:13:27.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:13:28.087 [DEBUG] [Thread-115580] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:13:28.087 [DEBUG] [Thread-115580] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:13:28.088 [DEBUG] [Thread-115580] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:13:28.128 [DEBUG] [Thread-115580] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:13:28.128 [DEBUG] [Thread-115580] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:13:28.132 [DEBUG] [Thread-115580] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:13:28.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:13:28.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:13:28.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:13:28.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:13:28.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:13:28.155 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:13:28.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:13:28.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:13:28.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:13:28.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.425798 -999.00  +24.00  14.75     10   -8.40 1 1 1 1 1   888    0 33.57 33.52 ----- 18.9 14.8 21.8 31.6 29.2 -27.8 28.1 -28.6 28.0 -26.8 28.6 -27.9
2025-11-03T12:13:28.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:13:28.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:13:28.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.425798
2025-11-03T12:13:28.164 [DEBUG] [Thread-115580] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:13:28.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:13:28.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:13:28.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:13:28.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:13:28.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:13:28.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:12:51', tmtdew=40.89, humidity=5.73, cloud=0.0, wind=25.57, temperature=24.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:13:08.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:13:28.250 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:13:28.262 [DEBUG] [Thread-115583] [transport.py] [_log()] starting thread (client mode): 0x117bd9c0
2025-11-03T12:13:28.262 [DEBUG] [Thread-115583] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:13:28.277 [DEBUG] [Thread-115583] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:13:28.277 [INFO] [Thread-115583] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:13:28.285 [DEBUG] [Thread-115583] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:13:28.285 [DEBUG] [Thread-115583] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:13:28.285 [DEBUG] [Thread-115583] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:13:28.285 [DEBUG] [Thread-115583] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:13:28.285 [DEBUG] [Thread-115583] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:13:28.285 [DEBUG] [Thread-115583] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:13:28.285 [DEBUG] [Thread-115583] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:13:28.285 [DEBUG] [Thread-115583] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:13:28.285 [DEBUG] [Thread-115583] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:13:28.285 [DEBUG] [Thread-115583] [transport.py] [_log()] client lang: <none>
2025-11-03T12:13:28.285 [DEBUG] [Thread-115583] [transport.py] [_log()] server lang: <none>
2025-11-03T12:13:28.285 [DEBUG] [Thread-115583] [transport.py] [_log()] kex follows: False
2025-11-03T12:13:28.285 [DEBUG] [Thread-115583] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:13:28.286 [DEBUG] [Thread-115583] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:13:28.286 [DEBUG] [Thread-115583] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:13:28.286 [DEBUG] [Thread-115583] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:13:28.286 [DEBUG] [Thread-115583] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:13:28.286 [DEBUG] [Thread-115583] [transport.py] [_log()] Compression: none
2025-11-03T12:13:28.286 [DEBUG] [Thread-115583] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:13:28.347 [DEBUG] [Thread-115583] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:13:28.348 [DEBUG] [Thread-115583] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:13:28.349 [DEBUG] [Thread-115583] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:13:28.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:13:28.350 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:13:28.406 [DEBUG] [Thread-115583] [transport.py] [_log()] userauth is OK
2025-11-03T12:13:28.407 [DEBUG] [Thread-115583] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:13:28.407 [DEBUG] [Thread-115583] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:13:28.407 [DEBUG] [Thread-115583] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:13:28.407 [DEBUG] [Thread-115583] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:13:28.426 [INFO] [Thread-115583] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:13:28.426 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:13:28.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:13:29.284 [DEBUG] [Thread-115583] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:13:29.284 [DEBUG] [Thread-115583] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:13:29.332 [DEBUG] [Thread-115583] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:13:29.332 [DEBUG] [Thread-115583] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:13:29.341 [DEBUG] [Thread-115583] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:13:29.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:13:29.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:13:29.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:13:29.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:13:29.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:13:29.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:13:29.376 [DEBUG] [Thread-115583] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:13:38.333 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:13:38.334 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:13:39.270 [DEBUG] [Thread-115585 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:13:54.310 [DEBUG] [Thread-115586 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:13:59.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:13:59.398 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:13:59.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:13:59.608 [DEBUG] [Thread-115587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:14:00.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 13, 56), 40.87, 5.65, 0.0, 18.67, 24.43, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:14:00.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:13:56
2025-11-03T12:14:00.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:14:00.383 [DEBUG] [Thread-115588] [transport.py] [_log()] starting thread (client mode): 0x117bce20
2025-11-03T12:14:00.383 [DEBUG] [Thread-115588] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:14:00.400 [DEBUG] [Thread-115588] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:14:00.401 [INFO] [Thread-115588] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:14:00.411 [DEBUG] [Thread-115588] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:14:00.411 [DEBUG] [Thread-115588] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:14:00.411 [DEBUG] [Thread-115588] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:14:00.411 [DEBUG] [Thread-115588] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:14:00.412 [DEBUG] [Thread-115588] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:14:00.412 [DEBUG] [Thread-115588] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:14:00.412 [DEBUG] [Thread-115588] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:14:00.412 [DEBUG] [Thread-115588] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:14:00.412 [DEBUG] [Thread-115588] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:14:00.412 [DEBUG] [Thread-115588] [transport.py] [_log()] client lang: <none>
2025-11-03T12:14:00.412 [DEBUG] [Thread-115588] [transport.py] [_log()] server lang: <none>
2025-11-03T12:14:00.412 [DEBUG] [Thread-115588] [transport.py] [_log()] kex follows: False
2025-11-03T12:14:00.412 [DEBUG] [Thread-115588] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:14:00.412 [DEBUG] [Thread-115588] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:14:00.413 [DEBUG] [Thread-115588] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:14:00.413 [DEBUG] [Thread-115588] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:14:00.413 [DEBUG] [Thread-115588] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:14:00.413 [DEBUG] [Thread-115588] [transport.py] [_log()] Compression: none
2025-11-03T12:14:00.413 [DEBUG] [Thread-115588] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:14:00.433 [DEBUG] [Thread-115588] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:14:00.434 [DEBUG] [Thread-115588] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:14:00.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:14:00.435 [DEBUG] [Thread-115588] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:14:00.437 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:14:00.438 [DEBUG] [Thread-115588] [transport.py] [_log()] userauth is OK
2025-11-03T12:14:00.438 [DEBUG] [Thread-115588] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:14:00.438 [DEBUG] [Thread-115588] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:14:00.438 [DEBUG] [Thread-115588] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:14:00.438 [DEBUG] [Thread-115588] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:14:00.462 [INFO] [Thread-115588] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:14:00.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:14:01.076 [DEBUG] [Thread-115588] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:14:01.076 [DEBUG] [Thread-115588] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:14:01.077 [DEBUG] [Thread-115588] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:14:01.117 [DEBUG] [Thread-115588] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:14:01.117 [DEBUG] [Thread-115588] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:14:01.121 [DEBUG] [Thread-115588] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:14:01.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:14:01.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:14:01.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:14:01.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:14:01.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:14:01.146 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:14:01.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:14:01.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:14:01.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:14:01.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.426146 -999.00  +24.40  16.86     10   -8.40 1 1 1 1 1   888    0 33.92 32.51 ----- 19.6 16.9 11.9 30.4 29.2 -29.0 28.2 -28.0 28.1 -27.8 28.8 -28.2
2025-11-03T12:14:01.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:14:01.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:14:01.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.426146
2025-11-03T12:14:01.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:14:01.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:14:01.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:14:01.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:14:01.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:14:01.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:13:56', tmtdew=40.87, humidity=5.65, cloud=0.0, wind=18.67, temperature=24.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:13:39.014', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:14:01.148 [DEBUG] [Thread-115588] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:14:01.220 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:14:09.347 [DEBUG] [Thread-115591 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:14:24.407 [DEBUG] [Thread-115592 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:14:38.474 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:14:38.475 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:14:39.446 [DEBUG] [Thread-115593 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:14:54.478 [DEBUG] [Thread-115594 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:14:59.679 [DEBUG] [Thread-115595 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:15:09.512 [DEBUG] [Thread-115596 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:15:24.551 [DEBUG] [Thread-115597 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:15:38.616 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:15:38.618 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:15:39.592 [DEBUG] [Thread-115598 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:15:54.632 [DEBUG] [Thread-115599 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:15:59.775 [DEBUG] [Thread-115600 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:16:09.665 [DEBUG] [Thread-115601 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:16:16.479 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T12:16:24.706 [DEBUG] [Thread-115602 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:16:38.758 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:16:38.758 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:16:39.742 [DEBUG] [Thread-115603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:16:46.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:16:46.519 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:16:46.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:16:47.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 16, 37), 41.83, 5.23, 0.0, 24.9, 24.3, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:16:47.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:16:37
2025-11-03T12:16:47.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:16:47.564 [DEBUG] [Thread-115604] [transport.py] [_log()] starting thread (client mode): 0x117bce80
2025-11-03T12:16:47.564 [DEBUG] [Thread-115604] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:16:47.579 [DEBUG] [Thread-115604] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:16:47.579 [INFO] [Thread-115604] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:16:47.582 [DEBUG] [Thread-115604] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:16:47.582 [DEBUG] [Thread-115604] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:16:47.583 [DEBUG] [Thread-115604] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:16:47.583 [DEBUG] [Thread-115604] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:16:47.583 [DEBUG] [Thread-115604] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:16:47.583 [DEBUG] [Thread-115604] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:16:47.583 [DEBUG] [Thread-115604] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:16:47.583 [DEBUG] [Thread-115604] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:16:47.583 [DEBUG] [Thread-115604] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:16:47.583 [DEBUG] [Thread-115604] [transport.py] [_log()] client lang: <none>
2025-11-03T12:16:47.583 [DEBUG] [Thread-115604] [transport.py] [_log()] server lang: <none>
2025-11-03T12:16:47.583 [DEBUG] [Thread-115604] [transport.py] [_log()] kex follows: False
2025-11-03T12:16:47.583 [DEBUG] [Thread-115604] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:16:47.583 [DEBUG] [Thread-115604] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:16:47.583 [DEBUG] [Thread-115604] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:16:47.583 [DEBUG] [Thread-115604] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:16:47.583 [DEBUG] [Thread-115604] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:16:47.583 [DEBUG] [Thread-115604] [transport.py] [_log()] Compression: none
2025-11-03T12:16:47.583 [DEBUG] [Thread-115604] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:16:47.600 [DEBUG] [Thread-115604] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:16:47.600 [DEBUG] [Thread-115604] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:16:47.600 [DEBUG] [Thread-115604] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:16:47.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:16:47.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:16:47.644 [DEBUG] [Thread-115604] [transport.py] [_log()] userauth is OK
2025-11-03T12:16:47.644 [DEBUG] [Thread-115604] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:16:47.644 [DEBUG] [Thread-115604] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:16:47.644 [DEBUG] [Thread-115604] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:16:47.644 [DEBUG] [Thread-115604] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:16:47.665 [INFO] [Thread-115604] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:16:47.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:16:48.266 [DEBUG] [Thread-115604] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:16:48.266 [DEBUG] [Thread-115604] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:16:48.267 [DEBUG] [Thread-115604] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:16:48.307 [DEBUG] [Thread-115604] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:16:48.308 [DEBUG] [Thread-115604] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:16:48.310 [DEBUG] [Thread-115604] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:16:48.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:16:48.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:16:48.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:16:48.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:16:48.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:16:48.328 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:16:48.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:16:48.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:16:48.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:16:48.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.427882 -999.00  +23.90  29.74     10   -9.20 1 1 1 1 1   888    0 33.57 28.40 ----- 24.9 29.7 321.6 31.5 29.4 -28.4 28.4 -28.4 28.2 -27.1 28.9 -26.8
2025-11-03T12:16:48.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:16:48.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:16:48.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.427882
2025-11-03T12:16:48.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:16:48.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:16:48.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:16:48.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:16:48.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:16:48.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:16:37', tmtdew=41.83, humidity=5.23, cloud=0.0, wind=24.9, temperature=24.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:16:09.005', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:16:48.337 [DEBUG] [Thread-115604] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:16:48.412 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:16:48.425 [DEBUG] [Thread-115607] [transport.py] [_log()] starting thread (client mode): 0x117bf610
2025-11-03T12:16:48.425 [DEBUG] [Thread-115607] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:16:48.439 [DEBUG] [Thread-115607] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:16:48.439 [INFO] [Thread-115607] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:16:48.446 [DEBUG] [Thread-115607] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:16:48.446 [DEBUG] [Thread-115607] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:16:48.447 [DEBUG] [Thread-115607] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:16:48.447 [DEBUG] [Thread-115607] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:16:48.447 [DEBUG] [Thread-115607] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:16:48.447 [DEBUG] [Thread-115607] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:16:48.447 [DEBUG] [Thread-115607] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:16:48.447 [DEBUG] [Thread-115607] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:16:48.447 [DEBUG] [Thread-115607] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:16:48.447 [DEBUG] [Thread-115607] [transport.py] [_log()] client lang: <none>
2025-11-03T12:16:48.447 [DEBUG] [Thread-115607] [transport.py] [_log()] server lang: <none>
2025-11-03T12:16:48.447 [DEBUG] [Thread-115607] [transport.py] [_log()] kex follows: False
2025-11-03T12:16:48.447 [DEBUG] [Thread-115607] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:16:48.447 [DEBUG] [Thread-115607] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:16:48.447 [DEBUG] [Thread-115607] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:16:48.447 [DEBUG] [Thread-115607] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:16:48.447 [DEBUG] [Thread-115607] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:16:48.447 [DEBUG] [Thread-115607] [transport.py] [_log()] Compression: none
2025-11-03T12:16:48.447 [DEBUG] [Thread-115607] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:16:48.503 [DEBUG] [Thread-115607] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:16:48.503 [DEBUG] [Thread-115607] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:16:48.503 [DEBUG] [Thread-115607] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:16:48.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:16:48.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:16:48.560 [DEBUG] [Thread-115607] [transport.py] [_log()] userauth is OK
2025-11-03T12:16:48.560 [DEBUG] [Thread-115607] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:16:48.560 [DEBUG] [Thread-115607] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:16:48.560 [DEBUG] [Thread-115607] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:16:48.560 [DEBUG] [Thread-115607] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:16:48.574 [INFO] [Thread-115607] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:16:48.574 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:16:48.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:16:49.416 [DEBUG] [Thread-115607] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:16:49.416 [DEBUG] [Thread-115607] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:16:49.465 [DEBUG] [Thread-115607] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:16:49.465 [DEBUG] [Thread-115607] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:16:49.473 [DEBUG] [Thread-115607] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:16:49.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:16:49.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:16:49.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:16:49.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:16:49.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:16:49.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:16:49.507 [DEBUG] [Thread-115607] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:16:54.777 [DEBUG] [Thread-115609 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:16:59.846 [DEBUG] [Thread-115610 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:17:09.897 [DEBUG] [Thread-115611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:17:19.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:17:19.516 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:17:19.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:17:20.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 17, 10), 42.33, 5.03, 0.0, 31.94, 24.49, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:17:20.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:17:10
2025-11-03T12:17:20.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:17:20.563 [DEBUG] [Thread-115612] [transport.py] [_log()] starting thread (client mode): 0x81bb250
2025-11-03T12:17:20.564 [DEBUG] [Thread-115612] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:17:20.583 [DEBUG] [Thread-115612] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:17:20.583 [INFO] [Thread-115612] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:17:20.586 [DEBUG] [Thread-115612] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:17:20.586 [DEBUG] [Thread-115612] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:17:20.586 [DEBUG] [Thread-115612] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:17:20.586 [DEBUG] [Thread-115612] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:17:20.586 [DEBUG] [Thread-115612] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:17:20.587 [DEBUG] [Thread-115612] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:17:20.587 [DEBUG] [Thread-115612] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:17:20.587 [DEBUG] [Thread-115612] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:17:20.587 [DEBUG] [Thread-115612] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:17:20.587 [DEBUG] [Thread-115612] [transport.py] [_log()] client lang: <none>
2025-11-03T12:17:20.587 [DEBUG] [Thread-115612] [transport.py] [_log()] server lang: <none>
2025-11-03T12:17:20.587 [DEBUG] [Thread-115612] [transport.py] [_log()] kex follows: False
2025-11-03T12:17:20.587 [DEBUG] [Thread-115612] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:17:20.587 [DEBUG] [Thread-115612] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:17:20.587 [DEBUG] [Thread-115612] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:17:20.587 [DEBUG] [Thread-115612] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:17:20.587 [DEBUG] [Thread-115612] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:17:20.587 [DEBUG] [Thread-115612] [transport.py] [_log()] Compression: none
2025-11-03T12:17:20.587 [DEBUG] [Thread-115612] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:17:20.604 [DEBUG] [Thread-115612] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:17:20.604 [DEBUG] [Thread-115612] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:17:20.605 [DEBUG] [Thread-115612] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:17:20.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:17:20.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:17:20.649 [DEBUG] [Thread-115612] [transport.py] [_log()] userauth is OK
2025-11-03T12:17:20.649 [DEBUG] [Thread-115612] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:17:20.649 [DEBUG] [Thread-115612] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:17:20.650 [DEBUG] [Thread-115612] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:17:20.650 [DEBUG] [Thread-115612] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:17:20.670 [INFO] [Thread-115612] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:17:20.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:17:21.286 [DEBUG] [Thread-115612] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:17:21.286 [DEBUG] [Thread-115612] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:17:21.287 [DEBUG] [Thread-115612] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:17:21.327 [DEBUG] [Thread-115612] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:17:21.327 [DEBUG] [Thread-115612] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:17:21.330 [DEBUG] [Thread-115612] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:17:21.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:17:21.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:17:21.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:17:21.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:17:21.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:17:21.347 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:17:21.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:17:21.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:17:21.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:17:21.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.428229 -999.00  +24.50  20.40      9   -9.10 1 1 1 1 1   888    0 33.77 27.56 ----- 19.2 20.4 331.4 27.6 29.5 -28.3 28.5 -27.7 28.4 -27.5 29.2 -26.7
2025-11-03T12:17:21.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:17:21.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:17:21.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.428229
2025-11-03T12:17:21.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:17:21.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:17:21.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:17:21.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:17:21.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:17:21.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:17:10', tmtdew=42.33, humidity=5.03, cloud=0.0, wind=31.94, temperature=24.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:16:38.986', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:17:21.348 [DEBUG] [Thread-115612] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:17:21.420 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:17:21.429 [DEBUG] [Thread-115615] [transport.py] [_log()] starting thread (client mode): 0x81b9390
2025-11-03T12:17:21.429 [DEBUG] [Thread-115615] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:17:21.444 [DEBUG] [Thread-115615] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:17:21.444 [INFO] [Thread-115615] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:17:21.451 [DEBUG] [Thread-115615] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:17:21.451 [DEBUG] [Thread-115615] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:17:21.451 [DEBUG] [Thread-115615] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:17:21.451 [DEBUG] [Thread-115615] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:17:21.451 [DEBUG] [Thread-115615] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:17:21.451 [DEBUG] [Thread-115615] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:17:21.451 [DEBUG] [Thread-115615] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:17:21.451 [DEBUG] [Thread-115615] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:17:21.451 [DEBUG] [Thread-115615] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:17:21.451 [DEBUG] [Thread-115615] [transport.py] [_log()] client lang: <none>
2025-11-03T12:17:21.452 [DEBUG] [Thread-115615] [transport.py] [_log()] server lang: <none>
2025-11-03T12:17:21.452 [DEBUG] [Thread-115615] [transport.py] [_log()] kex follows: False
2025-11-03T12:17:21.452 [DEBUG] [Thread-115615] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:17:21.452 [DEBUG] [Thread-115615] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:17:21.452 [DEBUG] [Thread-115615] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:17:21.452 [DEBUG] [Thread-115615] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:17:21.452 [DEBUG] [Thread-115615] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:17:21.452 [DEBUG] [Thread-115615] [transport.py] [_log()] Compression: none
2025-11-03T12:17:21.452 [DEBUG] [Thread-115615] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:17:21.507 [DEBUG] [Thread-115615] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:17:21.507 [DEBUG] [Thread-115615] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:17:21.507 [DEBUG] [Thread-115615] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:17:21.507 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:17:21.507 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:17:21.564 [DEBUG] [Thread-115615] [transport.py] [_log()] userauth is OK
2025-11-03T12:17:21.564 [DEBUG] [Thread-115615] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:17:21.564 [DEBUG] [Thread-115615] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:17:21.564 [DEBUG] [Thread-115615] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:17:21.564 [DEBUG] [Thread-115615] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:17:21.579 [INFO] [Thread-115615] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:17:21.580 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:17:21.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:17:22.431 [DEBUG] [Thread-115615] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:17:22.432 [DEBUG] [Thread-115615] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:17:22.479 [DEBUG] [Thread-115615] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:17:22.479 [DEBUG] [Thread-115615] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:17:22.488 [DEBUG] [Thread-115615] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:17:22.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:17:22.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:17:22.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:17:22.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:17:22.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:17:22.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:17:22.525 [DEBUG] [Thread-115615] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:17:24.933 [DEBUG] [Thread-115617 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:17:38.898 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:17:38.900 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:17:39.993 [DEBUG] [Thread-115618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:17:52.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:17:52.549 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:17:52.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:17:53.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 17, 42), 42.29, 5.0, 0.0, 24.23, 24.53, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:17:53.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:17:42
2025-11-03T12:17:53.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:17:53.571 [DEBUG] [Thread-115619] [transport.py] [_log()] starting thread (client mode): 0x81bbcd0
2025-11-03T12:17:53.571 [DEBUG] [Thread-115619] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:17:53.582 [DEBUG] [Thread-115619] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:17:53.582 [INFO] [Thread-115619] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:17:53.585 [DEBUG] [Thread-115619] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:17:53.585 [DEBUG] [Thread-115619] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:17:53.585 [DEBUG] [Thread-115619] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:17:53.585 [DEBUG] [Thread-115619] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:17:53.585 [DEBUG] [Thread-115619] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:17:53.585 [DEBUG] [Thread-115619] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:17:53.585 [DEBUG] [Thread-115619] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:17:53.585 [DEBUG] [Thread-115619] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:17:53.585 [DEBUG] [Thread-115619] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:17:53.585 [DEBUG] [Thread-115619] [transport.py] [_log()] client lang: <none>
2025-11-03T12:17:53.585 [DEBUG] [Thread-115619] [transport.py] [_log()] server lang: <none>
2025-11-03T12:17:53.585 [DEBUG] [Thread-115619] [transport.py] [_log()] kex follows: False
2025-11-03T12:17:53.585 [DEBUG] [Thread-115619] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:17:53.585 [DEBUG] [Thread-115619] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:17:53.585 [DEBUG] [Thread-115619] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:17:53.585 [DEBUG] [Thread-115619] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:17:53.585 [DEBUG] [Thread-115619] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:17:53.585 [DEBUG] [Thread-115619] [transport.py] [_log()] Compression: none
2025-11-03T12:17:53.585 [DEBUG] [Thread-115619] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:17:53.603 [DEBUG] [Thread-115619] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:17:53.604 [DEBUG] [Thread-115619] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:17:53.605 [DEBUG] [Thread-115619] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:17:53.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:17:53.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:17:53.607 [DEBUG] [Thread-115619] [transport.py] [_log()] userauth is OK
2025-11-03T12:17:53.607 [DEBUG] [Thread-115619] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:17:53.608 [DEBUG] [Thread-115619] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:17:53.608 [DEBUG] [Thread-115619] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:17:53.608 [DEBUG] [Thread-115619] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:17:53.632 [INFO] [Thread-115619] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:17:53.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:17:54.256 [DEBUG] [Thread-115619] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:17:54.256 [DEBUG] [Thread-115619] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:17:54.257 [DEBUG] [Thread-115619] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:17:54.297 [DEBUG] [Thread-115619] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:17:54.297 [DEBUG] [Thread-115619] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:17:54.300 [DEBUG] [Thread-115619] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:17:54.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:17:54.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:17:54.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:17:54.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:17:54.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:17:54.323 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:17:54.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:17:54.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:17:54.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:17:54.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.428576 -999.00  +24.50  15.04      9   -9.30 1 1 1 1 1   888    0 34.00 36.02 ----- 19.6 15.0 322.7 19.9 29.6 -28.6 28.6 -27.7 28.4 -26.8 29.2 -27.0
2025-11-03T12:17:54.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:17:54.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:17:54.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.428576
2025-11-03T12:17:54.332 [DEBUG] [Thread-115619] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:17:54.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:17:54.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:17:54.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:17:54.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:17:54.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:17:54.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:17:42', tmtdew=42.29, humidity=5.0, cloud=0.0, wind=24.23, temperature=24.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:17:08.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:17:54.420 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:17:54.431 [DEBUG] [Thread-115622] [transport.py] [_log()] starting thread (client mode): 0x117bca00
2025-11-03T12:17:54.431 [DEBUG] [Thread-115622] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:17:54.449 [DEBUG] [Thread-115622] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:17:54.450 [INFO] [Thread-115622] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:17:54.458 [DEBUG] [Thread-115622] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:17:54.459 [DEBUG] [Thread-115622] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:17:54.459 [DEBUG] [Thread-115622] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:17:54.459 [DEBUG] [Thread-115622] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:17:54.459 [DEBUG] [Thread-115622] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:17:54.459 [DEBUG] [Thread-115622] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:17:54.459 [DEBUG] [Thread-115622] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:17:54.459 [DEBUG] [Thread-115622] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:17:54.459 [DEBUG] [Thread-115622] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:17:54.459 [DEBUG] [Thread-115622] [transport.py] [_log()] client lang: <none>
2025-11-03T12:17:54.459 [DEBUG] [Thread-115622] [transport.py] [_log()] server lang: <none>
2025-11-03T12:17:54.459 [DEBUG] [Thread-115622] [transport.py] [_log()] kex follows: False
2025-11-03T12:17:54.459 [DEBUG] [Thread-115622] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:17:54.459 [DEBUG] [Thread-115622] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:17:54.459 [DEBUG] [Thread-115622] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:17:54.459 [DEBUG] [Thread-115622] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:17:54.459 [DEBUG] [Thread-115622] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:17:54.459 [DEBUG] [Thread-115622] [transport.py] [_log()] Compression: none
2025-11-03T12:17:54.459 [DEBUG] [Thread-115622] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:17:54.524 [DEBUG] [Thread-115622] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:17:54.524 [DEBUG] [Thread-115622] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:17:54.524 [DEBUG] [Thread-115622] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:17:54.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:17:54.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:17:54.581 [DEBUG] [Thread-115622] [transport.py] [_log()] userauth is OK
2025-11-03T12:17:54.581 [DEBUG] [Thread-115622] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:17:54.581 [DEBUG] [Thread-115622] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:17:54.581 [DEBUG] [Thread-115622] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:17:54.581 [DEBUG] [Thread-115622] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:17:54.595 [INFO] [Thread-115622] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:17:54.595 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:17:54.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:17:55.029 [DEBUG] [Thread-115624 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:17:55.438 [DEBUG] [Thread-115622] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:17:55.438 [DEBUG] [Thread-115622] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:17:55.486 [DEBUG] [Thread-115622] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:17:55.486 [DEBUG] [Thread-115622] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:17:55.495 [DEBUG] [Thread-115622] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:17:55.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:17:55.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:17:55.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:17:55.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:17:55.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:17:55.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:17:55.533 [DEBUG] [Thread-115622] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:17:59.910 [DEBUG] [Thread-115625 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:18:10.065 [DEBUG] [Thread-115626 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:18:25.099 [DEBUG] [Thread-115627 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:18:25.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:18:25.532 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:18:25.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:18:26.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 18, 14), 42.25, 5.0, 0.0, 23.06, 24.41, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:18:26.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:18:14
2025-11-03T12:18:26.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:18:26.517 [DEBUG] [Thread-115628] [transport.py] [_log()] starting thread (client mode): 0x81b8700
2025-11-03T12:18:26.517 [DEBUG] [Thread-115628] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:18:26.537 [DEBUG] [Thread-115628] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:18:26.537 [INFO] [Thread-115628] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:18:26.540 [DEBUG] [Thread-115628] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:18:26.540 [DEBUG] [Thread-115628] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:18:26.540 [DEBUG] [Thread-115628] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:18:26.540 [DEBUG] [Thread-115628] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:18:26.541 [DEBUG] [Thread-115628] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:18:26.541 [DEBUG] [Thread-115628] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:18:26.541 [DEBUG] [Thread-115628] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:18:26.541 [DEBUG] [Thread-115628] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:18:26.541 [DEBUG] [Thread-115628] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:18:26.541 [DEBUG] [Thread-115628] [transport.py] [_log()] client lang: <none>
2025-11-03T12:18:26.541 [DEBUG] [Thread-115628] [transport.py] [_log()] server lang: <none>
2025-11-03T12:18:26.541 [DEBUG] [Thread-115628] [transport.py] [_log()] kex follows: False
2025-11-03T12:18:26.541 [DEBUG] [Thread-115628] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:18:26.541 [DEBUG] [Thread-115628] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:18:26.541 [DEBUG] [Thread-115628] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:18:26.541 [DEBUG] [Thread-115628] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:18:26.541 [DEBUG] [Thread-115628] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:18:26.541 [DEBUG] [Thread-115628] [transport.py] [_log()] Compression: none
2025-11-03T12:18:26.541 [DEBUG] [Thread-115628] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:18:26.558 [DEBUG] [Thread-115628] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:18:26.558 [DEBUG] [Thread-115628] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:18:26.558 [DEBUG] [Thread-115628] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:18:26.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:18:26.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:18:26.560 [DEBUG] [Thread-115628] [transport.py] [_log()] userauth is OK
2025-11-03T12:18:26.560 [DEBUG] [Thread-115628] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:18:26.560 [DEBUG] [Thread-115628] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:18:26.560 [DEBUG] [Thread-115628] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:18:26.560 [DEBUG] [Thread-115628] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:18:26.579 [INFO] [Thread-115628] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:18:26.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:18:27.196 [DEBUG] [Thread-115628] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:18:27.196 [DEBUG] [Thread-115628] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:18:27.196 [DEBUG] [Thread-115628] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:18:27.228 [DEBUG] [Thread-115628] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:18:27.228 [DEBUG] [Thread-115628] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:18:27.232 [DEBUG] [Thread-115628] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:18:27.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:18:27.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:18:27.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:18:27.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:18:27.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:18:27.259 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:18:27.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:18:27.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:18:27.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:18:27.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.428923 -999.00  +24.70  20.29      9   -9.00 1 1 1 1 1   888    0 33.65 38.06 ----- 22.4 20.3 313.8 22.8 29.7 -28.0 28.8 -27.0 28.6 -27.0 29.5 -27.3
2025-11-03T12:18:27.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:18:27.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:18:27.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.428923
2025-11-03T12:18:27.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:18:27.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:18:27.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:18:27.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:18:27.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:18:27.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:18:14', tmtdew=42.25, humidity=5.0, cloud=0.0, wind=23.06, temperature=24.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:17:38.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:18:27.263 [DEBUG] [Thread-115628] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:18:27.346 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:18:27.363 [DEBUG] [Thread-115631] [transport.py] [_log()] starting thread (client mode): 0x81b9e40
2025-11-03T12:18:27.363 [DEBUG] [Thread-115631] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:18:27.378 [DEBUG] [Thread-115631] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:18:27.378 [INFO] [Thread-115631] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:18:27.389 [DEBUG] [Thread-115631] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:18:27.390 [DEBUG] [Thread-115631] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:18:27.390 [DEBUG] [Thread-115631] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:18:27.390 [DEBUG] [Thread-115631] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:18:27.390 [DEBUG] [Thread-115631] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:18:27.391 [DEBUG] [Thread-115631] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:18:27.391 [DEBUG] [Thread-115631] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:18:27.391 [DEBUG] [Thread-115631] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:18:27.391 [DEBUG] [Thread-115631] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:18:27.391 [DEBUG] [Thread-115631] [transport.py] [_log()] client lang: <none>
2025-11-03T12:18:27.391 [DEBUG] [Thread-115631] [transport.py] [_log()] server lang: <none>
2025-11-03T12:18:27.391 [DEBUG] [Thread-115631] [transport.py] [_log()] kex follows: False
2025-11-03T12:18:27.391 [DEBUG] [Thread-115631] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:18:27.391 [DEBUG] [Thread-115631] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:18:27.391 [DEBUG] [Thread-115631] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:18:27.391 [DEBUG] [Thread-115631] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:18:27.391 [DEBUG] [Thread-115631] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:18:27.391 [DEBUG] [Thread-115631] [transport.py] [_log()] Compression: none
2025-11-03T12:18:27.391 [DEBUG] [Thread-115631] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:18:27.454 [DEBUG] [Thread-115631] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:18:27.456 [DEBUG] [Thread-115631] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:18:27.456 [DEBUG] [Thread-115631] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:18:27.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:18:27.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:18:27.515 [DEBUG] [Thread-115631] [transport.py] [_log()] userauth is OK
2025-11-03T12:18:27.515 [DEBUG] [Thread-115631] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:18:27.515 [DEBUG] [Thread-115631] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:18:27.515 [DEBUG] [Thread-115631] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:18:27.516 [DEBUG] [Thread-115631] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:18:27.534 [INFO] [Thread-115631] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:18:27.534 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:18:27.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:18:28.360 [DEBUG] [Thread-115631] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:18:28.360 [DEBUG] [Thread-115631] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:18:28.409 [DEBUG] [Thread-115631] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:18:28.409 [DEBUG] [Thread-115631] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:18:28.418 [DEBUG] [Thread-115631] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:18:28.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:18:28.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:18:28.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:18:28.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:18:28.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:18:28.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:18:28.455 [DEBUG] [Thread-115631] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:18:39.041 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:18:39.042 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:18:40.138 [DEBUG] [Thread-115633 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:18:55.190 [DEBUG] [Thread-115634 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:18:58.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:18:58.453 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:18:58.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:18:59.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 18, 47), 41.84, 5.15, 0.0, 18.33, 24.35, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:18:59.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:18:47
2025-11-03T12:18:59.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:18:59.418 [DEBUG] [Thread-115635] [transport.py] [_log()] starting thread (client mode): 0xedd4940
2025-11-03T12:18:59.418 [DEBUG] [Thread-115635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:18:59.437 [DEBUG] [Thread-115635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:18:59.437 [INFO] [Thread-115635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:18:59.441 [DEBUG] [Thread-115635] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:18:59.441 [DEBUG] [Thread-115635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:18:59.441 [DEBUG] [Thread-115635] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:18:59.441 [DEBUG] [Thread-115635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:18:59.441 [DEBUG] [Thread-115635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:18:59.441 [DEBUG] [Thread-115635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:18:59.441 [DEBUG] [Thread-115635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:18:59.441 [DEBUG] [Thread-115635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:18:59.441 [DEBUG] [Thread-115635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:18:59.441 [DEBUG] [Thread-115635] [transport.py] [_log()] client lang: <none>
2025-11-03T12:18:59.441 [DEBUG] [Thread-115635] [transport.py] [_log()] server lang: <none>
2025-11-03T12:18:59.441 [DEBUG] [Thread-115635] [transport.py] [_log()] kex follows: False
2025-11-03T12:18:59.441 [DEBUG] [Thread-115635] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:18:59.441 [DEBUG] [Thread-115635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:18:59.441 [DEBUG] [Thread-115635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:18:59.441 [DEBUG] [Thread-115635] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:18:59.441 [DEBUG] [Thread-115635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:18:59.441 [DEBUG] [Thread-115635] [transport.py] [_log()] Compression: none
2025-11-03T12:18:59.441 [DEBUG] [Thread-115635] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:18:59.457 [DEBUG] [Thread-115635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:18:59.458 [DEBUG] [Thread-115635] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:18:59.458 [DEBUG] [Thread-115635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:18:59.458 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:18:59.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:18:59.460 [DEBUG] [Thread-115635] [transport.py] [_log()] userauth is OK
2025-11-03T12:18:59.460 [DEBUG] [Thread-115635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:18:59.460 [DEBUG] [Thread-115635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:18:59.461 [DEBUG] [Thread-115635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:18:59.461 [DEBUG] [Thread-115635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:18:59.485 [INFO] [Thread-115635] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:18:59.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:18:59.988 [DEBUG] [Thread-115637 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:19:00.116 [DEBUG] [Thread-115635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:19:00.116 [DEBUG] [Thread-115635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:19:00.117 [DEBUG] [Thread-115635] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:19:00.157 [DEBUG] [Thread-115635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:19:00.157 [DEBUG] [Thread-115635] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:19:00.161 [DEBUG] [Thread-115635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:19:00.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:19:00.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:19:00.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:19:00.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:19:00.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:19:00.185 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:19:00.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:19:00.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:19:00.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:19:00.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.429271 -999.00  +24.40  12.64      9   -9.50 1 1 1 1 1   888    0 34.33 43.18 ----- 15.0 12.6 339.6 27.6 29.9 -29.1 28.8 -28.1 28.6 -27.0 29.5 -27.5
2025-11-03T12:19:00.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:19:00.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:19:00.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.429271
2025-11-03T12:19:00.194 [DEBUG] [Thread-115635] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:19:00.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:19:00.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:19:00.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:19:00.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:19:00.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:19:00.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:18:47', tmtdew=41.84, humidity=5.15, cloud=0.0, wind=18.33, temperature=24.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:18:09.014', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:19:00.281 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:19:00.290 [DEBUG] [Thread-115639] [transport.py] [_log()] starting thread (client mode): 0xedd4df0
2025-11-03T12:19:00.290 [DEBUG] [Thread-115639] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:19:00.305 [DEBUG] [Thread-115639] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:19:00.305 [INFO] [Thread-115639] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:19:00.314 [DEBUG] [Thread-115639] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:19:00.314 [DEBUG] [Thread-115639] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:19:00.314 [DEBUG] [Thread-115639] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:19:00.314 [DEBUG] [Thread-115639] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:19:00.314 [DEBUG] [Thread-115639] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:19:00.314 [DEBUG] [Thread-115639] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:19:00.314 [DEBUG] [Thread-115639] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:19:00.314 [DEBUG] [Thread-115639] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:19:00.314 [DEBUG] [Thread-115639] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:19:00.314 [DEBUG] [Thread-115639] [transport.py] [_log()] client lang: <none>
2025-11-03T12:19:00.314 [DEBUG] [Thread-115639] [transport.py] [_log()] server lang: <none>
2025-11-03T12:19:00.314 [DEBUG] [Thread-115639] [transport.py] [_log()] kex follows: False
2025-11-03T12:19:00.314 [DEBUG] [Thread-115639] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:19:00.314 [DEBUG] [Thread-115639] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:19:00.314 [DEBUG] [Thread-115639] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:19:00.314 [DEBUG] [Thread-115639] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:19:00.314 [DEBUG] [Thread-115639] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:19:00.314 [DEBUG] [Thread-115639] [transport.py] [_log()] Compression: none
2025-11-03T12:19:00.315 [DEBUG] [Thread-115639] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:19:00.371 [DEBUG] [Thread-115639] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:19:00.372 [DEBUG] [Thread-115639] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:19:00.372 [DEBUG] [Thread-115639] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:19:00.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:19:00.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:19:00.430 [DEBUG] [Thread-115639] [transport.py] [_log()] userauth is OK
2025-11-03T12:19:00.430 [DEBUG] [Thread-115639] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:19:00.431 [DEBUG] [Thread-115639] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:19:00.431 [DEBUG] [Thread-115639] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:19:00.431 [DEBUG] [Thread-115639] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:19:00.456 [INFO] [Thread-115639] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:19:00.456 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:19:00.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:19:01.313 [DEBUG] [Thread-115639] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:19:01.313 [DEBUG] [Thread-115639] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:19:01.362 [DEBUG] [Thread-115639] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:19:01.362 [DEBUG] [Thread-115639] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:19:01.372 [DEBUG] [Thread-115639] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:19:01.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:19:01.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:19:01.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:19:01.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:19:01.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:19:01.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:19:01.406 [DEBUG] [Thread-115639] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:19:10.229 [DEBUG] [Thread-115641 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:19:25.286 [DEBUG] [Thread-115642 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:19:31.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:19:31.429 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:19:31.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:19:32.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 19, 20), 42.0, 5.08, 0.0, 15.3, 24.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:19:32.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:19:20
2025-11-03T12:19:32.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:19:32.376 [DEBUG] [Thread-115643] [transport.py] [_log()] starting thread (client mode): 0xedd6260
2025-11-03T12:19:32.376 [DEBUG] [Thread-115643] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:19:32.396 [DEBUG] [Thread-115643] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:19:32.397 [INFO] [Thread-115643] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:19:32.399 [DEBUG] [Thread-115643] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:19:32.399 [DEBUG] [Thread-115643] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:19:32.399 [DEBUG] [Thread-115643] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:19:32.399 [DEBUG] [Thread-115643] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:19:32.399 [DEBUG] [Thread-115643] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:19:32.399 [DEBUG] [Thread-115643] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:19:32.399 [DEBUG] [Thread-115643] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:19:32.399 [DEBUG] [Thread-115643] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:19:32.399 [DEBUG] [Thread-115643] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:19:32.399 [DEBUG] [Thread-115643] [transport.py] [_log()] client lang: <none>
2025-11-03T12:19:32.399 [DEBUG] [Thread-115643] [transport.py] [_log()] server lang: <none>
2025-11-03T12:19:32.400 [DEBUG] [Thread-115643] [transport.py] [_log()] kex follows: False
2025-11-03T12:19:32.400 [DEBUG] [Thread-115643] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:19:32.400 [DEBUG] [Thread-115643] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:19:32.400 [DEBUG] [Thread-115643] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:19:32.400 [DEBUG] [Thread-115643] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:19:32.400 [DEBUG] [Thread-115643] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:19:32.400 [DEBUG] [Thread-115643] [transport.py] [_log()] Compression: none
2025-11-03T12:19:32.400 [DEBUG] [Thread-115643] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:19:32.418 [DEBUG] [Thread-115643] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:19:32.418 [DEBUG] [Thread-115643] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:19:32.419 [DEBUG] [Thread-115643] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:19:32.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:19:32.420 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:19:32.421 [DEBUG] [Thread-115643] [transport.py] [_log()] userauth is OK
2025-11-03T12:19:32.421 [DEBUG] [Thread-115643] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:19:32.421 [DEBUG] [Thread-115643] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:19:32.421 [DEBUG] [Thread-115643] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:19:32.421 [DEBUG] [Thread-115643] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:19:32.442 [INFO] [Thread-115643] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:19:32.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:19:33.067 [DEBUG] [Thread-115643] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:19:33.067 [DEBUG] [Thread-115643] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:19:33.067 [DEBUG] [Thread-115643] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:19:33.108 [DEBUG] [Thread-115643] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:19:33.108 [DEBUG] [Thread-115643] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:19:33.112 [DEBUG] [Thread-115643] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:19:33.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:19:33.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:19:33.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:19:33.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:19:33.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:19:33.136 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:19:33.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:19:33.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:19:33.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:19:33.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.429618 -999.00  +24.40  21.41      9   -9.40 1 1 1 1 1   888    0 34.17 41.99 ----- 17.3 21.4 329.3 28.1 29.9 -28.7 28.9 -28.3 28.6 -26.6 29.6 -29.7
2025-11-03T12:19:33.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:19:33.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:19:33.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.429618
2025-11-03T12:19:33.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:19:33.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:19:33.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:19:33.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:19:33.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:19:33.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:19:20', tmtdew=42.0, humidity=5.08, cloud=0.0, wind=15.3, temperature=24.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:18:38.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:19:33.139 [DEBUG] [Thread-115643] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:19:33.219 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:19:33.231 [DEBUG] [Thread-115646] [transport.py] [_log()] starting thread (client mode): 0x81b9b40
2025-11-03T12:19:33.231 [DEBUG] [Thread-115646] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:19:33.246 [DEBUG] [Thread-115646] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:19:33.247 [INFO] [Thread-115646] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:19:33.254 [DEBUG] [Thread-115646] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:19:33.254 [DEBUG] [Thread-115646] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:19:33.254 [DEBUG] [Thread-115646] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:19:33.254 [DEBUG] [Thread-115646] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:19:33.255 [DEBUG] [Thread-115646] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:19:33.255 [DEBUG] [Thread-115646] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:19:33.255 [DEBUG] [Thread-115646] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:19:33.255 [DEBUG] [Thread-115646] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:19:33.255 [DEBUG] [Thread-115646] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:19:33.255 [DEBUG] [Thread-115646] [transport.py] [_log()] client lang: <none>
2025-11-03T12:19:33.255 [DEBUG] [Thread-115646] [transport.py] [_log()] server lang: <none>
2025-11-03T12:19:33.255 [DEBUG] [Thread-115646] [transport.py] [_log()] kex follows: False
2025-11-03T12:19:33.255 [DEBUG] [Thread-115646] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:19:33.255 [DEBUG] [Thread-115646] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:19:33.256 [DEBUG] [Thread-115646] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:19:33.256 [DEBUG] [Thread-115646] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:19:33.256 [DEBUG] [Thread-115646] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:19:33.256 [DEBUG] [Thread-115646] [transport.py] [_log()] Compression: none
2025-11-03T12:19:33.256 [DEBUG] [Thread-115646] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:19:33.314 [DEBUG] [Thread-115646] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:19:33.315 [DEBUG] [Thread-115646] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:19:33.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:19:33.316 [DEBUG] [Thread-115646] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:19:33.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:19:33.371 [DEBUG] [Thread-115646] [transport.py] [_log()] userauth is OK
2025-11-03T12:19:33.371 [DEBUG] [Thread-115646] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:19:33.371 [DEBUG] [Thread-115646] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:19:33.371 [DEBUG] [Thread-115646] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:19:33.371 [DEBUG] [Thread-115646] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:19:33.390 [INFO] [Thread-115646] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:19:33.390 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:19:33.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:19:34.197 [DEBUG] [Thread-115646] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:19:34.197 [DEBUG] [Thread-115646] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:19:34.244 [DEBUG] [Thread-115646] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:19:34.245 [DEBUG] [Thread-115646] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:19:34.253 [DEBUG] [Thread-115646] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:19:34.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:19:34.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:19:34.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:19:34.279 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:19:34.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:19:34.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:19:34.288 [DEBUG] [Thread-115646] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:19:39.185 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:19:39.186 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:19:40.315 [DEBUG] [Thread-115648 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:19:55.367 [DEBUG] [Thread-115649 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:20:00.055 [DEBUG] [Thread-115650 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:20:04.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:20:04.300 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:20:04.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:20:05.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 19, 53), 41.88, 5.17, 0.0, 35.09, 24.59, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:20:05.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:19:53
2025-11-03T12:20:05.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:20:05.335 [DEBUG] [Thread-115651] [transport.py] [_log()] starting thread (client mode): 0x117bc550
2025-11-03T12:20:05.335 [DEBUG] [Thread-115651] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:20:05.349 [DEBUG] [Thread-115651] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:20:05.349 [INFO] [Thread-115651] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:20:05.352 [DEBUG] [Thread-115651] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:20:05.352 [DEBUG] [Thread-115651] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:20:05.352 [DEBUG] [Thread-115651] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:20:05.352 [DEBUG] [Thread-115651] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:20:05.352 [DEBUG] [Thread-115651] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:20:05.352 [DEBUG] [Thread-115651] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:20:05.352 [DEBUG] [Thread-115651] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:20:05.352 [DEBUG] [Thread-115651] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:20:05.352 [DEBUG] [Thread-115651] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:20:05.352 [DEBUG] [Thread-115651] [transport.py] [_log()] client lang: <none>
2025-11-03T12:20:05.352 [DEBUG] [Thread-115651] [transport.py] [_log()] server lang: <none>
2025-11-03T12:20:05.352 [DEBUG] [Thread-115651] [transport.py] [_log()] kex follows: False
2025-11-03T12:20:05.352 [DEBUG] [Thread-115651] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:20:05.352 [DEBUG] [Thread-115651] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:20:05.352 [DEBUG] [Thread-115651] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:20:05.352 [DEBUG] [Thread-115651] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:20:05.352 [DEBUG] [Thread-115651] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:20:05.352 [DEBUG] [Thread-115651] [transport.py] [_log()] Compression: none
2025-11-03T12:20:05.352 [DEBUG] [Thread-115651] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:20:05.368 [DEBUG] [Thread-115651] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:20:05.368 [DEBUG] [Thread-115651] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:20:05.368 [DEBUG] [Thread-115651] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:20:05.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:20:05.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:20:05.370 [DEBUG] [Thread-115651] [transport.py] [_log()] userauth is OK
2025-11-03T12:20:05.370 [DEBUG] [Thread-115651] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:20:05.370 [DEBUG] [Thread-115651] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:20:05.370 [DEBUG] [Thread-115651] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:20:05.370 [DEBUG] [Thread-115651] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:20:05.401 [INFO] [Thread-115651] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:20:05.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:20:07.102 [DEBUG] [Thread-115651] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:20:07.102 [DEBUG] [Thread-115651] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:20:07.103 [DEBUG] [Thread-115651] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:20:07.143 [DEBUG] [Thread-115651] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:20:07.143 [DEBUG] [Thread-115651] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:20:07.146 [DEBUG] [Thread-115651] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:20:07.157 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:20:07.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:20:07.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:20:07.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:20:07.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:20:07.163 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:20:07.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:20:07.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:20:07.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:20:07.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.430312 -999.00  +24.20  14.55     10   -9.00 1 1 1 1 1   888    0 34.03 45.54 ----- 13.3 14.6 15.4 30.4 29.9 -28.7 28.8 -29.0 28.6 -27.1 29.4 -28.7
2025-11-03T12:20:07.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:20:07.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:20:07.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.430312
2025-11-03T12:20:07.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:20:07.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:20:07.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:20:07.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:20:07.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:20:07.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:19:53', tmtdew=41.88, humidity=5.17, cloud=0.0, wind=35.09, temperature=24.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:19:38.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:20:07.164 [DEBUG] [Thread-115651] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:20:07.238 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:20:07.249 [DEBUG] [Thread-115654] [transport.py] [_log()] starting thread (client mode): 0x117bc1c0
2025-11-03T12:20:07.249 [DEBUG] [Thread-115654] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:20:07.263 [DEBUG] [Thread-115654] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:20:07.264 [INFO] [Thread-115654] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:20:07.271 [DEBUG] [Thread-115654] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:20:07.271 [DEBUG] [Thread-115654] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:20:07.271 [DEBUG] [Thread-115654] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:20:07.271 [DEBUG] [Thread-115654] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:20:07.271 [DEBUG] [Thread-115654] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:20:07.271 [DEBUG] [Thread-115654] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:20:07.271 [DEBUG] [Thread-115654] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:20:07.271 [DEBUG] [Thread-115654] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:20:07.271 [DEBUG] [Thread-115654] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:20:07.271 [DEBUG] [Thread-115654] [transport.py] [_log()] client lang: <none>
2025-11-03T12:20:07.271 [DEBUG] [Thread-115654] [transport.py] [_log()] server lang: <none>
2025-11-03T12:20:07.271 [DEBUG] [Thread-115654] [transport.py] [_log()] kex follows: False
2025-11-03T12:20:07.271 [DEBUG] [Thread-115654] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:20:07.271 [DEBUG] [Thread-115654] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:20:07.271 [DEBUG] [Thread-115654] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:20:07.271 [DEBUG] [Thread-115654] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:20:07.271 [DEBUG] [Thread-115654] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:20:07.272 [DEBUG] [Thread-115654] [transport.py] [_log()] Compression: none
2025-11-03T12:20:07.272 [DEBUG] [Thread-115654] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:20:07.330 [DEBUG] [Thread-115654] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:20:07.330 [DEBUG] [Thread-115654] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:20:07.339 [DEBUG] [Thread-115654] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:20:07.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:20:07.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:20:07.387 [DEBUG] [Thread-115654] [transport.py] [_log()] userauth is OK
2025-11-03T12:20:07.387 [DEBUG] [Thread-115654] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:20:07.387 [DEBUG] [Thread-115654] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:20:07.387 [DEBUG] [Thread-115654] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:20:07.387 [DEBUG] [Thread-115654] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:20:07.404 [INFO] [Thread-115654] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:20:07.405 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:20:07.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:20:08.229 [DEBUG] [Thread-115654] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:20:08.229 [DEBUG] [Thread-115654] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:20:08.276 [DEBUG] [Thread-115654] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:20:08.277 [DEBUG] [Thread-115654] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:20:08.285 [DEBUG] [Thread-115654] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:20:08.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:20:08.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:20:08.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:20:08.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:20:08.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:20:08.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:20:08.316 [DEBUG] [Thread-115654] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:20:10.393 [DEBUG] [Thread-115656 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:20:25.441 [DEBUG] [Thread-115657 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:20:38.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:20:38.328 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:20:38.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:20:39.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 20, 25), 42.32, 5.0, 0.0, 30.56, 24.79, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:20:39.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:20:25
2025-11-03T12:20:39.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:20:39.325 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:20:39.326 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:20:39.384 [DEBUG] [Thread-115658] [transport.py] [_log()] starting thread (client mode): 0xedd5b70
2025-11-03T12:20:39.384 [DEBUG] [Thread-115658] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:20:39.404 [DEBUG] [Thread-115658] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:20:39.404 [INFO] [Thread-115658] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:20:39.407 [DEBUG] [Thread-115658] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:20:39.407 [DEBUG] [Thread-115658] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:20:39.407 [DEBUG] [Thread-115658] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:20:39.407 [DEBUG] [Thread-115658] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:20:39.407 [DEBUG] [Thread-115658] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:20:39.407 [DEBUG] [Thread-115658] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:20:39.407 [DEBUG] [Thread-115658] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:20:39.407 [DEBUG] [Thread-115658] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:20:39.407 [DEBUG] [Thread-115658] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:20:39.407 [DEBUG] [Thread-115658] [transport.py] [_log()] client lang: <none>
2025-11-03T12:20:39.407 [DEBUG] [Thread-115658] [transport.py] [_log()] server lang: <none>
2025-11-03T12:20:39.407 [DEBUG] [Thread-115658] [transport.py] [_log()] kex follows: False
2025-11-03T12:20:39.407 [DEBUG] [Thread-115658] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:20:39.407 [DEBUG] [Thread-115658] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:20:39.407 [DEBUG] [Thread-115658] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:20:39.407 [DEBUG] [Thread-115658] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:20:39.407 [DEBUG] [Thread-115658] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:20:39.407 [DEBUG] [Thread-115658] [transport.py] [_log()] Compression: none
2025-11-03T12:20:39.408 [DEBUG] [Thread-115658] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:20:39.424 [DEBUG] [Thread-115658] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:20:39.424 [DEBUG] [Thread-115658] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:20:39.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:20:39.425 [DEBUG] [Thread-115658] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:20:39.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:20:39.427 [DEBUG] [Thread-115658] [transport.py] [_log()] userauth is OK
2025-11-03T12:20:39.427 [DEBUG] [Thread-115658] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:20:39.427 [DEBUG] [Thread-115658] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:20:39.427 [DEBUG] [Thread-115658] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:20:39.427 [DEBUG] [Thread-115658] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:20:39.452 [INFO] [Thread-115658] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:20:39.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:20:40.088 [DEBUG] [Thread-115658] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:20:40.089 [DEBUG] [Thread-115658] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:20:40.098 [DEBUG] [Thread-115658] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:20:40.130 [DEBUG] [Thread-115658] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:20:40.130 [DEBUG] [Thread-115658] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:20:40.134 [DEBUG] [Thread-115658] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:20:40.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:20:40.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:20:40.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:20:40.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:20:40.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:20:40.157 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:20:40.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:20:40.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:20:40.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:20:40.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.430659 -999.00  +24.40  25.02     10   -8.70 1 1 1 1 1   888    0 34.24 41.60 ----- 23.9 25.0 5.0 30.3 29.8 -29.0 28.8 -28.6 28.6 -27.5 29.1 -29.4
2025-11-03T12:20:40.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:20:40.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:20:40.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.430659
2025-11-03T12:20:40.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:20:40.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:20:40.160 [DEBUG] [Thread-115658] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:20:40.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:20:40.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:20:40.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:20:40.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:20:25', tmtdew=42.32, humidity=5.0, cloud=0.0, wind=30.56, temperature=24.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:20:08.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:20:40.243 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:20:40.257 [DEBUG] [Thread-115661] [transport.py] [_log()] starting thread (client mode): 0x117bc880
2025-11-03T12:20:40.257 [DEBUG] [Thread-115661] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:20:40.273 [DEBUG] [Thread-115661] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:20:40.273 [INFO] [Thread-115661] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:20:40.281 [DEBUG] [Thread-115661] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:20:40.281 [DEBUG] [Thread-115661] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:20:40.281 [DEBUG] [Thread-115661] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:20:40.281 [DEBUG] [Thread-115661] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:20:40.281 [DEBUG] [Thread-115661] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:20:40.281 [DEBUG] [Thread-115661] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:20:40.281 [DEBUG] [Thread-115661] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:20:40.281 [DEBUG] [Thread-115661] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:20:40.282 [DEBUG] [Thread-115661] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:20:40.282 [DEBUG] [Thread-115661] [transport.py] [_log()] client lang: <none>
2025-11-03T12:20:40.282 [DEBUG] [Thread-115661] [transport.py] [_log()] server lang: <none>
2025-11-03T12:20:40.282 [DEBUG] [Thread-115661] [transport.py] [_log()] kex follows: False
2025-11-03T12:20:40.282 [DEBUG] [Thread-115661] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:20:40.282 [DEBUG] [Thread-115661] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:20:40.282 [DEBUG] [Thread-115661] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:20:40.282 [DEBUG] [Thread-115661] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:20:40.282 [DEBUG] [Thread-115661] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:20:40.282 [DEBUG] [Thread-115661] [transport.py] [_log()] Compression: none
2025-11-03T12:20:40.282 [DEBUG] [Thread-115661] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:20:40.339 [DEBUG] [Thread-115661] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:20:40.339 [DEBUG] [Thread-115661] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:20:40.340 [DEBUG] [Thread-115661] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:20:40.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:20:40.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:20:40.396 [DEBUG] [Thread-115661] [transport.py] [_log()] userauth is OK
2025-11-03T12:20:40.396 [DEBUG] [Thread-115661] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:20:40.396 [DEBUG] [Thread-115661] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:20:40.397 [DEBUG] [Thread-115661] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:20:40.397 [DEBUG] [Thread-115661] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:20:40.431 [INFO] [Thread-115661] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:20:40.431 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:20:40.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:20:40.480 [DEBUG] [Thread-115663 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:20:41.285 [DEBUG] [Thread-115661] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:20:41.285 [DEBUG] [Thread-115661] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:20:41.334 [DEBUG] [Thread-115661] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:20:41.334 [DEBUG] [Thread-115661] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:20:41.343 [DEBUG] [Thread-115661] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:20:41.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:20:41.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:20:41.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:20:41.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:20:41.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:20:41.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:20:41.381 [DEBUG] [Thread-115661] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:20:55.532 [DEBUG] [Thread-115664 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:21:00.139 [DEBUG] [Thread-115665 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:21:10.571 [DEBUG] [Thread-115666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:21:11.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:21:11.389 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:21:11.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:21:12.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 20, 57), 41.82, 4.98, 0.0, 29.73, 24.81, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:21:12.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:20:57
2025-11-03T12:21:12.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:21:12.337 [DEBUG] [Thread-115667] [transport.py] [_log()] starting thread (client mode): 0xedd7130
2025-11-03T12:21:12.337 [DEBUG] [Thread-115667] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:21:12.353 [DEBUG] [Thread-115667] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:21:12.353 [INFO] [Thread-115667] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:21:12.355 [DEBUG] [Thread-115667] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:21:12.356 [DEBUG] [Thread-115667] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:21:12.356 [DEBUG] [Thread-115667] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:21:12.356 [DEBUG] [Thread-115667] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:21:12.356 [DEBUG] [Thread-115667] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:21:12.356 [DEBUG] [Thread-115667] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:21:12.356 [DEBUG] [Thread-115667] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:21:12.356 [DEBUG] [Thread-115667] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:21:12.356 [DEBUG] [Thread-115667] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:21:12.356 [DEBUG] [Thread-115667] [transport.py] [_log()] client lang: <none>
2025-11-03T12:21:12.356 [DEBUG] [Thread-115667] [transport.py] [_log()] server lang: <none>
2025-11-03T12:21:12.356 [DEBUG] [Thread-115667] [transport.py] [_log()] kex follows: False
2025-11-03T12:21:12.356 [DEBUG] [Thread-115667] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:21:12.356 [DEBUG] [Thread-115667] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:21:12.356 [DEBUG] [Thread-115667] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:21:12.356 [DEBUG] [Thread-115667] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:21:12.356 [DEBUG] [Thread-115667] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:21:12.357 [DEBUG] [Thread-115667] [transport.py] [_log()] Compression: none
2025-11-03T12:21:12.357 [DEBUG] [Thread-115667] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:21:12.366 [DEBUG] [Thread-115667] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:21:12.366 [DEBUG] [Thread-115667] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:21:12.367 [DEBUG] [Thread-115667] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:21:12.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:21:12.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:21:12.368 [DEBUG] [Thread-115667] [transport.py] [_log()] userauth is OK
2025-11-03T12:21:12.369 [DEBUG] [Thread-115667] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:21:12.369 [DEBUG] [Thread-115667] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:21:12.369 [DEBUG] [Thread-115667] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:21:12.369 [DEBUG] [Thread-115667] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:21:12.383 [INFO] [Thread-115667] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:21:12.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:21:13.016 [DEBUG] [Thread-115667] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:21:13.016 [DEBUG] [Thread-115667] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:21:13.017 [DEBUG] [Thread-115667] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:21:13.058 [DEBUG] [Thread-115667] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:21:13.058 [DEBUG] [Thread-115667] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:21:13.060 [DEBUG] [Thread-115667] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:21:13.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:21:13.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:21:13.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:21:13.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:21:13.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:21:13.088 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:21:13.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:21:13.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:21:13.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:21:13.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.431007 -999.00  +24.50  26.08      9   -9.30 1 1 1 1 1   888    0 34.12 43.96 ----- 26.6 26.1 342.1 41.8 29.8 -29.1 28.8 -29.4 28.7 -27.2 29.1 -30.3
2025-11-03T12:21:13.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:21:13.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:21:13.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.431007
2025-11-03T12:21:13.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:21:13.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:21:13.091 [DEBUG] [Thread-115667] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:21:13.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:21:13.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:21:13.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:21:13.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:20:57', tmtdew=41.82, humidity=4.98, cloud=0.0, wind=29.73, temperature=24.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:20:39.005', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:21:13.178 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:21:13.189 [DEBUG] [Thread-115670] [transport.py] [_log()] starting thread (client mode): 0xedd4f10
2025-11-03T12:21:13.190 [DEBUG] [Thread-115670] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:21:13.203 [DEBUG] [Thread-115670] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:21:13.204 [INFO] [Thread-115670] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:21:13.211 [DEBUG] [Thread-115670] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:21:13.211 [DEBUG] [Thread-115670] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:21:13.212 [DEBUG] [Thread-115670] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:21:13.212 [DEBUG] [Thread-115670] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:21:13.212 [DEBUG] [Thread-115670] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:21:13.212 [DEBUG] [Thread-115670] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:21:13.212 [DEBUG] [Thread-115670] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:21:13.212 [DEBUG] [Thread-115670] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:21:13.212 [DEBUG] [Thread-115670] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:21:13.212 [DEBUG] [Thread-115670] [transport.py] [_log()] client lang: <none>
2025-11-03T12:21:13.212 [DEBUG] [Thread-115670] [transport.py] [_log()] server lang: <none>
2025-11-03T12:21:13.213 [DEBUG] [Thread-115670] [transport.py] [_log()] kex follows: False
2025-11-03T12:21:13.213 [DEBUG] [Thread-115670] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:21:13.213 [DEBUG] [Thread-115670] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:21:13.213 [DEBUG] [Thread-115670] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:21:13.213 [DEBUG] [Thread-115670] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:21:13.213 [DEBUG] [Thread-115670] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:21:13.213 [DEBUG] [Thread-115670] [transport.py] [_log()] Compression: none
2025-11-03T12:21:13.213 [DEBUG] [Thread-115670] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:21:13.271 [DEBUG] [Thread-115670] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:21:13.272 [DEBUG] [Thread-115670] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:21:13.273 [DEBUG] [Thread-115670] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:21:13.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:21:13.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:21:13.328 [DEBUG] [Thread-115670] [transport.py] [_log()] userauth is OK
2025-11-03T12:21:13.329 [DEBUG] [Thread-115670] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:21:13.329 [DEBUG] [Thread-115670] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:21:13.329 [DEBUG] [Thread-115670] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:21:13.329 [DEBUG] [Thread-115670] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:21:13.348 [INFO] [Thread-115670] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:21:13.349 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:21:13.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:21:14.184 [DEBUG] [Thread-115670] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:21:14.185 [DEBUG] [Thread-115670] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:21:14.233 [DEBUG] [Thread-115670] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:21:14.233 [DEBUG] [Thread-115670] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:21:14.241 [DEBUG] [Thread-115670] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:21:14.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:21:14.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:21:14.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:21:14.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:21:14.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:21:14.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:21:14.279 [DEBUG] [Thread-115670] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:21:25.615 [DEBUG] [Thread-115672 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:21:39.466 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:21:39.468 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:21:40.654 [DEBUG] [Thread-115673 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:21:44.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:21:44.300 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:21:44.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:21:44.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 21, 30), 42.02, 4.95, 0.0, 33.54, 25.22, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:21:44.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:21:30
2025-11-03T12:21:45.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:21:45.221 [DEBUG] [Thread-115674] [transport.py] [_log()] starting thread (client mode): 0x81b8b50
2025-11-03T12:21:45.221 [DEBUG] [Thread-115674] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:21:45.241 [DEBUG] [Thread-115674] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:21:45.241 [INFO] [Thread-115674] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:21:45.244 [DEBUG] [Thread-115674] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:21:45.244 [DEBUG] [Thread-115674] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:21:45.244 [DEBUG] [Thread-115674] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:21:45.244 [DEBUG] [Thread-115674] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:21:45.244 [DEBUG] [Thread-115674] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:21:45.244 [DEBUG] [Thread-115674] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:21:45.244 [DEBUG] [Thread-115674] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:21:45.244 [DEBUG] [Thread-115674] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:21:45.244 [DEBUG] [Thread-115674] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:21:45.244 [DEBUG] [Thread-115674] [transport.py] [_log()] client lang: <none>
2025-11-03T12:21:45.244 [DEBUG] [Thread-115674] [transport.py] [_log()] server lang: <none>
2025-11-03T12:21:45.244 [DEBUG] [Thread-115674] [transport.py] [_log()] kex follows: False
2025-11-03T12:21:45.245 [DEBUG] [Thread-115674] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:21:45.245 [DEBUG] [Thread-115674] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:21:45.245 [DEBUG] [Thread-115674] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:21:45.245 [DEBUG] [Thread-115674] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:21:45.245 [DEBUG] [Thread-115674] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:21:45.245 [DEBUG] [Thread-115674] [transport.py] [_log()] Compression: none
2025-11-03T12:21:45.245 [DEBUG] [Thread-115674] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:21:45.262 [DEBUG] [Thread-115674] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:21:45.263 [DEBUG] [Thread-115674] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:21:45.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:21:45.264 [DEBUG] [Thread-115674] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:21:45.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:21:45.265 [DEBUG] [Thread-115674] [transport.py] [_log()] userauth is OK
2025-11-03T12:21:45.266 [DEBUG] [Thread-115674] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:21:45.266 [DEBUG] [Thread-115674] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:21:45.266 [DEBUG] [Thread-115674] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:21:45.266 [DEBUG] [Thread-115674] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:21:45.301 [INFO] [Thread-115674] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:21:45.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:21:45.944 [DEBUG] [Thread-115674] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:21:45.944 [DEBUG] [Thread-115674] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:21:45.944 [DEBUG] [Thread-115674] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:21:45.984 [DEBUG] [Thread-115674] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:21:45.984 [DEBUG] [Thread-115674] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:21:45.986 [DEBUG] [Thread-115674] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:21:45.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:21:45.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:21:46.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:21:46.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:21:46.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:21:46.004 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:21:46.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:21:46.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:21:46.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:21:46.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.431354 -999.00  +23.70  31.38     10   -9.60 1 1 2 1 1   888    0 34.09 43.97 ----- 31.6 31.4 13.6 49.3 29.5 -30.7 28.6 -29.8 -999.0 -999.0 29.0 -29.0
2025-11-03T12:21:46.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:21:46.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:21:46.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.431354
2025-11-03T12:21:46.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:21:46.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:21:46.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:21:46.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:21:46.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:21:46.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:21:30', tmtdew=42.02, humidity=4.95, cloud=0.0, wind=33.54, temperature=25.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:21:08.986', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:21:46.006 [DEBUG] [Thread-115674] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:21:46.078 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:21:46.090 [DEBUG] [Thread-115677] [transport.py] [_log()] starting thread (client mode): 0x81b9330
2025-11-03T12:21:46.090 [DEBUG] [Thread-115677] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:21:46.104 [DEBUG] [Thread-115677] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:21:46.104 [INFO] [Thread-115677] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:21:46.112 [DEBUG] [Thread-115677] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:21:46.112 [DEBUG] [Thread-115677] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:21:46.112 [DEBUG] [Thread-115677] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:21:46.112 [DEBUG] [Thread-115677] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:21:46.112 [DEBUG] [Thread-115677] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:21:46.112 [DEBUG] [Thread-115677] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:21:46.112 [DEBUG] [Thread-115677] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:21:46.112 [DEBUG] [Thread-115677] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:21:46.112 [DEBUG] [Thread-115677] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:21:46.112 [DEBUG] [Thread-115677] [transport.py] [_log()] client lang: <none>
2025-11-03T12:21:46.112 [DEBUG] [Thread-115677] [transport.py] [_log()] server lang: <none>
2025-11-03T12:21:46.112 [DEBUG] [Thread-115677] [transport.py] [_log()] kex follows: False
2025-11-03T12:21:46.112 [DEBUG] [Thread-115677] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:21:46.112 [DEBUG] [Thread-115677] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:21:46.112 [DEBUG] [Thread-115677] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:21:46.112 [DEBUG] [Thread-115677] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:21:46.112 [DEBUG] [Thread-115677] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:21:46.112 [DEBUG] [Thread-115677] [transport.py] [_log()] Compression: none
2025-11-03T12:21:46.112 [DEBUG] [Thread-115677] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:21:46.171 [DEBUG] [Thread-115677] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:21:46.171 [DEBUG] [Thread-115677] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:21:46.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:21:46.171 [DEBUG] [Thread-115677] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:21:46.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:21:46.228 [DEBUG] [Thread-115677] [transport.py] [_log()] userauth is OK
2025-11-03T12:21:46.228 [DEBUG] [Thread-115677] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:21:46.228 [DEBUG] [Thread-115677] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:21:46.228 [DEBUG] [Thread-115677] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:21:46.228 [DEBUG] [Thread-115677] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:21:46.243 [INFO] [Thread-115677] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:21:46.243 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:21:46.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:21:47.082 [DEBUG] [Thread-115677] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:21:47.082 [DEBUG] [Thread-115677] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:21:47.131 [DEBUG] [Thread-115677] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:21:47.131 [DEBUG] [Thread-115677] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:21:47.140 [DEBUG] [Thread-115677] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:21:47.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:21:47.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:21:47.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:21:47.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:21:47.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:21:47.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:21:47.175 [DEBUG] [Thread-115677] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:21:55.688 [DEBUG] [Thread-115679 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:22:00.172 [DEBUG] [Thread-115680 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:22:10.753 [DEBUG] [Thread-115681 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:22:17.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:22:17.170 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:22:17.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:22:17.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 22, 2), 42.28, 4.82, 0.0, 28.39, 24.98, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:22:17.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:22:02
2025-11-03T12:22:17.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:22:18.108 [DEBUG] [Thread-115682] [transport.py] [_log()] starting thread (client mode): 0x11780ca0
2025-11-03T12:22:18.108 [DEBUG] [Thread-115682] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:22:18.128 [DEBUG] [Thread-115682] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:22:18.128 [INFO] [Thread-115682] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:22:18.138 [DEBUG] [Thread-115682] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:22:18.139 [DEBUG] [Thread-115682] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:22:18.139 [DEBUG] [Thread-115682] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:22:18.139 [DEBUG] [Thread-115682] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:22:18.139 [DEBUG] [Thread-115682] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:22:18.139 [DEBUG] [Thread-115682] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:22:18.139 [DEBUG] [Thread-115682] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:22:18.139 [DEBUG] [Thread-115682] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:22:18.139 [DEBUG] [Thread-115682] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:22:18.139 [DEBUG] [Thread-115682] [transport.py] [_log()] client lang: <none>
2025-11-03T12:22:18.139 [DEBUG] [Thread-115682] [transport.py] [_log()] server lang: <none>
2025-11-03T12:22:18.139 [DEBUG] [Thread-115682] [transport.py] [_log()] kex follows: False
2025-11-03T12:22:18.139 [DEBUG] [Thread-115682] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:22:18.139 [DEBUG] [Thread-115682] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:22:18.139 [DEBUG] [Thread-115682] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:22:18.140 [DEBUG] [Thread-115682] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:22:18.140 [DEBUG] [Thread-115682] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:22:18.140 [DEBUG] [Thread-115682] [transport.py] [_log()] Compression: none
2025-11-03T12:22:18.140 [DEBUG] [Thread-115682] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:22:18.161 [DEBUG] [Thread-115682] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:22:18.162 [DEBUG] [Thread-115682] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:22:18.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:22:18.163 [DEBUG] [Thread-115682] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:22:18.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:22:18.165 [DEBUG] [Thread-115682] [transport.py] [_log()] userauth is OK
2025-11-03T12:22:18.165 [DEBUG] [Thread-115682] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:22:18.166 [DEBUG] [Thread-115682] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:22:18.166 [DEBUG] [Thread-115682] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:22:18.166 [DEBUG] [Thread-115682] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:22:18.201 [INFO] [Thread-115682] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:22:18.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:22:18.832 [DEBUG] [Thread-115682] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:22:18.832 [DEBUG] [Thread-115682] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:22:18.832 [DEBUG] [Thread-115682] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:22:18.874 [DEBUG] [Thread-115682] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:22:18.874 [DEBUG] [Thread-115682] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:22:18.876 [DEBUG] [Thread-115682] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:22:18.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:22:18.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:22:18.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:22:18.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:22:18.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:22:18.894 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:22:18.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:22:18.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:22:18.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:22:18.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.431701 -999.00  +23.50  32.22     10   -9.60 1 1 2 1 1   888    0 34.64 41.86 ----- 30.1 32.2 339.2 42.8 29.4 -30.9 28.3 -29.1 28.3 -29.4 28.6 -36.5
2025-11-03T12:22:18.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:22:18.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:22:18.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.431701
2025-11-03T12:22:18.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:22:18.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:22:18.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:22:18.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:22:18.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:22:18.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:22:02', tmtdew=42.28, humidity=4.82, cloud=0.0, wind=28.39, temperature=24.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:21:38.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:22:18.895 [DEBUG] [Thread-115682] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:22:18.967 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:22:18.980 [DEBUG] [Thread-115685] [transport.py] [_log()] starting thread (client mode): 0x117814e0
2025-11-03T12:22:18.980 [DEBUG] [Thread-115685] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:22:18.995 [DEBUG] [Thread-115685] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:22:18.995 [INFO] [Thread-115685] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:22:19.003 [DEBUG] [Thread-115685] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:22:19.003 [DEBUG] [Thread-115685] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:22:19.003 [DEBUG] [Thread-115685] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:22:19.003 [DEBUG] [Thread-115685] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:22:19.003 [DEBUG] [Thread-115685] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:22:19.003 [DEBUG] [Thread-115685] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:22:19.003 [DEBUG] [Thread-115685] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:22:19.003 [DEBUG] [Thread-115685] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:22:19.003 [DEBUG] [Thread-115685] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:22:19.003 [DEBUG] [Thread-115685] [transport.py] [_log()] client lang: <none>
2025-11-03T12:22:19.003 [DEBUG] [Thread-115685] [transport.py] [_log()] server lang: <none>
2025-11-03T12:22:19.003 [DEBUG] [Thread-115685] [transport.py] [_log()] kex follows: False
2025-11-03T12:22:19.003 [DEBUG] [Thread-115685] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:22:19.003 [DEBUG] [Thread-115685] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:22:19.003 [DEBUG] [Thread-115685] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:22:19.003 [DEBUG] [Thread-115685] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:22:19.003 [DEBUG] [Thread-115685] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:22:19.003 [DEBUG] [Thread-115685] [transport.py] [_log()] Compression: none
2025-11-03T12:22:19.003 [DEBUG] [Thread-115685] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:22:19.059 [DEBUG] [Thread-115685] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:22:19.059 [DEBUG] [Thread-115685] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:22:19.059 [DEBUG] [Thread-115685] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:22:19.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:22:19.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:22:19.116 [DEBUG] [Thread-115685] [transport.py] [_log()] userauth is OK
2025-11-03T12:22:19.116 [DEBUG] [Thread-115685] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:22:19.116 [DEBUG] [Thread-115685] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:22:19.116 [DEBUG] [Thread-115685] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:22:19.116 [DEBUG] [Thread-115685] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:22:19.131 [INFO] [Thread-115685] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:22:19.131 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:22:19.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:22:20.007 [DEBUG] [Thread-115685] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:22:20.007 [DEBUG] [Thread-115685] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:22:20.055 [DEBUG] [Thread-115685] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:22:20.055 [DEBUG] [Thread-115685] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:22:20.065 [DEBUG] [Thread-115685] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:22:20.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:22:20.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:22:20.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:22:20.094 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:22:20.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:22:20.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:22:20.103 [DEBUG] [Thread-115685] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:22:25.793 [DEBUG] [Thread-115687 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:22:39.609 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:22:39.611 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:22:40.858 [DEBUG] [Thread-115688 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:22:50.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:22:50.126 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:22:50.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:22:50.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 22, 34), 42.01, 4.92, 0.0, 24.17, 24.14, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:22:50.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:22:34
2025-11-03T12:22:50.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:22:51.049 [DEBUG] [Thread-115689] [transport.py] [_log()] starting thread (client mode): 0x11782ce0
2025-11-03T12:22:51.049 [DEBUG] [Thread-115689] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:22:51.070 [DEBUG] [Thread-115689] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:22:51.070 [INFO] [Thread-115689] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:22:51.073 [DEBUG] [Thread-115689] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:22:51.074 [DEBUG] [Thread-115689] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:22:51.074 [DEBUG] [Thread-115689] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:22:51.074 [DEBUG] [Thread-115689] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:22:51.074 [DEBUG] [Thread-115689] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:22:51.074 [DEBUG] [Thread-115689] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:22:51.074 [DEBUG] [Thread-115689] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:22:51.074 [DEBUG] [Thread-115689] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:22:51.074 [DEBUG] [Thread-115689] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:22:51.074 [DEBUG] [Thread-115689] [transport.py] [_log()] client lang: <none>
2025-11-03T12:22:51.074 [DEBUG] [Thread-115689] [transport.py] [_log()] server lang: <none>
2025-11-03T12:22:51.083 [DEBUG] [Thread-115689] [transport.py] [_log()] kex follows: False
2025-11-03T12:22:51.083 [DEBUG] [Thread-115689] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:22:51.084 [DEBUG] [Thread-115689] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:22:51.084 [DEBUG] [Thread-115689] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:22:51.084 [DEBUG] [Thread-115689] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:22:51.084 [DEBUG] [Thread-115689] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:22:51.084 [DEBUG] [Thread-115689] [transport.py] [_log()] Compression: none
2025-11-03T12:22:51.084 [DEBUG] [Thread-115689] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:22:51.103 [DEBUG] [Thread-115689] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:22:51.104 [DEBUG] [Thread-115689] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:22:51.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:22:51.105 [DEBUG] [Thread-115689] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:22:51.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:22:51.107 [DEBUG] [Thread-115689] [transport.py] [_log()] userauth is OK
2025-11-03T12:22:51.107 [DEBUG] [Thread-115689] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:22:51.108 [DEBUG] [Thread-115689] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:22:51.108 [DEBUG] [Thread-115689] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:22:51.108 [DEBUG] [Thread-115689] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:22:51.145 [INFO] [Thread-115689] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:22:51.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:22:51.779 [DEBUG] [Thread-115689] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:22:51.779 [DEBUG] [Thread-115689] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:22:51.779 [DEBUG] [Thread-115689] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:22:51.819 [DEBUG] [Thread-115689] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:22:51.820 [DEBUG] [Thread-115689] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:22:51.823 [DEBUG] [Thread-115689] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:22:51.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:22:51.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:22:51.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:22:51.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:22:51.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:22:51.844 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:22:51.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:22:51.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:22:51.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:22:51.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.432048 -999.00  +23.30  24.20     10   -9.60 1 1 1 1 1   888    0 33.82 34.55 ----- 24.1 24.2 338.0 37.1 29.1 -30.8 28.1 -29.3 28.2 -29.8 28.6 -27.4
2025-11-03T12:22:51.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:22:51.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:22:51.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.432048
2025-11-03T12:22:51.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:22:51.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:22:51.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:22:51.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:22:51.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:22:51.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:22:34', tmtdew=42.01, humidity=4.92, cloud=0.0, wind=24.17, temperature=24.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:22:08.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:22:51.847 [DEBUG] [Thread-115689] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:22:51.930 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:22:51.943 [DEBUG] [Thread-115692] [transport.py] [_log()] starting thread (client mode): 0x11781a80
2025-11-03T12:22:51.943 [DEBUG] [Thread-115692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:22:51.957 [DEBUG] [Thread-115692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:22:51.957 [INFO] [Thread-115692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:22:51.965 [DEBUG] [Thread-115692] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:22:51.965 [DEBUG] [Thread-115692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:22:51.965 [DEBUG] [Thread-115692] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:22:51.965 [DEBUG] [Thread-115692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:22:51.965 [DEBUG] [Thread-115692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:22:51.965 [DEBUG] [Thread-115692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:22:51.965 [DEBUG] [Thread-115692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:22:51.965 [DEBUG] [Thread-115692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:22:51.965 [DEBUG] [Thread-115692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:22:51.965 [DEBUG] [Thread-115692] [transport.py] [_log()] client lang: <none>
2025-11-03T12:22:51.966 [DEBUG] [Thread-115692] [transport.py] [_log()] server lang: <none>
2025-11-03T12:22:51.966 [DEBUG] [Thread-115692] [transport.py] [_log()] kex follows: False
2025-11-03T12:22:51.966 [DEBUG] [Thread-115692] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:22:51.966 [DEBUG] [Thread-115692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:22:51.966 [DEBUG] [Thread-115692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:22:51.966 [DEBUG] [Thread-115692] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:22:51.966 [DEBUG] [Thread-115692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:22:51.966 [DEBUG] [Thread-115692] [transport.py] [_log()] Compression: none
2025-11-03T12:22:51.966 [DEBUG] [Thread-115692] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:22:52.025 [DEBUG] [Thread-115692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:22:52.026 [DEBUG] [Thread-115692] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:22:52.027 [DEBUG] [Thread-115692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:22:52.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:22:52.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:22:52.085 [DEBUG] [Thread-115692] [transport.py] [_log()] userauth is OK
2025-11-03T12:22:52.085 [DEBUG] [Thread-115692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:22:52.085 [DEBUG] [Thread-115692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:22:52.086 [DEBUG] [Thread-115692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:22:52.086 [DEBUG] [Thread-115692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:22:52.104 [INFO] [Thread-115692] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:22:52.105 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:22:52.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:22:53.016 [DEBUG] [Thread-115692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:22:53.016 [DEBUG] [Thread-115692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:22:53.064 [DEBUG] [Thread-115692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:22:53.064 [DEBUG] [Thread-115692] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:22:53.073 [DEBUG] [Thread-115692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:22:53.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:22:53.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:22:53.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:22:53.101 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:22:53.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:22:53.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:22:53.110 [DEBUG] [Thread-115692] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:22:55.892 [DEBUG] [Thread-115694 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:23:00.218 [DEBUG] [Thread-115695 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:23:10.954 [DEBUG] [Thread-115696 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:23:23.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:23:23.125 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:23:23.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:23:23.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 23, 6), 41.78, 5.0, 0.0, 24.07, 24.03, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:23:23.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:23:06
2025-11-03T12:23:23.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:23:24.091 [DEBUG] [Thread-115697] [transport.py] [_log()] starting thread (client mode): 0x11780bb0
2025-11-03T12:23:24.092 [DEBUG] [Thread-115697] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:23:24.112 [DEBUG] [Thread-115697] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:23:24.112 [INFO] [Thread-115697] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:23:24.115 [DEBUG] [Thread-115697] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:23:24.115 [DEBUG] [Thread-115697] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:23:24.115 [DEBUG] [Thread-115697] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:23:24.115 [DEBUG] [Thread-115697] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:23:24.115 [DEBUG] [Thread-115697] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:23:24.115 [DEBUG] [Thread-115697] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:23:24.115 [DEBUG] [Thread-115697] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:23:24.115 [DEBUG] [Thread-115697] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:23:24.115 [DEBUG] [Thread-115697] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:23:24.115 [DEBUG] [Thread-115697] [transport.py] [_log()] client lang: <none>
2025-11-03T12:23:24.115 [DEBUG] [Thread-115697] [transport.py] [_log()] server lang: <none>
2025-11-03T12:23:24.115 [DEBUG] [Thread-115697] [transport.py] [_log()] kex follows: False
2025-11-03T12:23:24.116 [DEBUG] [Thread-115697] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:23:24.116 [DEBUG] [Thread-115697] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:23:24.116 [DEBUG] [Thread-115697] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:23:24.116 [DEBUG] [Thread-115697] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:23:24.116 [DEBUG] [Thread-115697] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:23:24.116 [DEBUG] [Thread-115697] [transport.py] [_log()] Compression: none
2025-11-03T12:23:24.116 [DEBUG] [Thread-115697] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:23:24.133 [DEBUG] [Thread-115697] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:23:24.133 [DEBUG] [Thread-115697] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:23:24.133 [DEBUG] [Thread-115697] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:23:24.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:23:24.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:23:24.134 [DEBUG] [Thread-115697] [transport.py] [_log()] userauth is OK
2025-11-03T12:23:24.134 [DEBUG] [Thread-115697] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:23:24.134 [DEBUG] [Thread-115697] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:23:24.134 [DEBUG] [Thread-115697] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:23:24.134 [DEBUG] [Thread-115697] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:23:24.150 [INFO] [Thread-115697] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:23:24.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:23:24.801 [DEBUG] [Thread-115697] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:23:24.801 [DEBUG] [Thread-115697] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:23:24.801 [DEBUG] [Thread-115697] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:23:24.842 [DEBUG] [Thread-115697] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:23:24.842 [DEBUG] [Thread-115697] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:23:24.844 [DEBUG] [Thread-115697] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:23:24.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:23:24.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:23:24.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:23:24.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:23:24.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:23:24.864 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:23:24.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:23:24.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:23:24.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:23:24.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.432396 -999.00  +23.30  17.06     10   -9.50 1 1 1 1 1   888    0 33.90 28.16 ----- 12.4 17.1 350.6 32.9 29.1 -29.0 28.2 -28.7 28.2 -28.0 28.8 -27.5
2025-11-03T12:23:24.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:23:24.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:23:24.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.432396
2025-11-03T12:23:24.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:23:24.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:23:24.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:23:24.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:23:24.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:23:24.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:23:06', tmtdew=41.78, humidity=5.0, cloud=0.0, wind=24.07, temperature=24.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:22:39.014', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:23:24.865 [DEBUG] [Thread-115697] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:23:24.947 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:23:24.960 [DEBUG] [Thread-115700] [transport.py] [_log()] starting thread (client mode): 0xedd7040
2025-11-03T12:23:24.960 [DEBUG] [Thread-115700] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:23:24.975 [DEBUG] [Thread-115700] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:23:24.975 [INFO] [Thread-115700] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:23:24.982 [DEBUG] [Thread-115700] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:23:24.982 [DEBUG] [Thread-115700] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:23:24.982 [DEBUG] [Thread-115700] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:23:24.982 [DEBUG] [Thread-115700] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:23:24.983 [DEBUG] [Thread-115700] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:23:24.983 [DEBUG] [Thread-115700] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:23:24.983 [DEBUG] [Thread-115700] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:23:24.983 [DEBUG] [Thread-115700] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:23:24.983 [DEBUG] [Thread-115700] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:23:24.983 [DEBUG] [Thread-115700] [transport.py] [_log()] client lang: <none>
2025-11-03T12:23:24.983 [DEBUG] [Thread-115700] [transport.py] [_log()] server lang: <none>
2025-11-03T12:23:24.983 [DEBUG] [Thread-115700] [transport.py] [_log()] kex follows: False
2025-11-03T12:23:24.983 [DEBUG] [Thread-115700] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:23:24.983 [DEBUG] [Thread-115700] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:23:24.983 [DEBUG] [Thread-115700] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:23:24.983 [DEBUG] [Thread-115700] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:23:24.983 [DEBUG] [Thread-115700] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:23:24.983 [DEBUG] [Thread-115700] [transport.py] [_log()] Compression: none
2025-11-03T12:23:24.983 [DEBUG] [Thread-115700] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:23:25.039 [DEBUG] [Thread-115700] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:23:25.039 [DEBUG] [Thread-115700] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:23:25.039 [DEBUG] [Thread-115700] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:23:25.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:23:25.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:23:25.098 [DEBUG] [Thread-115700] [transport.py] [_log()] userauth is OK
2025-11-03T12:23:25.098 [DEBUG] [Thread-115700] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:23:25.098 [DEBUG] [Thread-115700] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:23:25.098 [DEBUG] [Thread-115700] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:23:25.098 [DEBUG] [Thread-115700] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:23:25.112 [INFO] [Thread-115700] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:23:25.113 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:23:25.113 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:23:25.984 [DEBUG] [Thread-115702 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:23:26.008 [DEBUG] [Thread-115700] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:23:26.008 [DEBUG] [Thread-115700] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:23:26.055 [DEBUG] [Thread-115700] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:23:26.055 [DEBUG] [Thread-115700] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:23:26.066 [DEBUG] [Thread-115700] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:23:26.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:23:26.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:23:26.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:23:26.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:23:26.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:23:26.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:23:26.101 [DEBUG] [Thread-115700] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:23:39.751 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:23:39.751 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:23:41.037 [DEBUG] [Thread-115703 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:23:56.065 [DEBUG] [Thread-115704 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:23:56.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:23:56.099 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:23:56.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:23:56.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 23, 39), 41.54, 5.03, 0.0, 22.64, 23.96, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:23:56.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:23:39
2025-11-03T12:23:56.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:23:57.087 [DEBUG] [Thread-115705] [transport.py] [_log()] starting thread (client mode): 0x11781d80
2025-11-03T12:23:57.087 [DEBUG] [Thread-115705] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:23:57.107 [DEBUG] [Thread-115705] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:23:57.107 [INFO] [Thread-115705] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:23:57.110 [DEBUG] [Thread-115705] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:23:57.110 [DEBUG] [Thread-115705] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:23:57.110 [DEBUG] [Thread-115705] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:23:57.110 [DEBUG] [Thread-115705] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:23:57.110 [DEBUG] [Thread-115705] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:23:57.110 [DEBUG] [Thread-115705] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:23:57.110 [DEBUG] [Thread-115705] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:23:57.110 [DEBUG] [Thread-115705] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:23:57.110 [DEBUG] [Thread-115705] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:23:57.111 [DEBUG] [Thread-115705] [transport.py] [_log()] client lang: <none>
2025-11-03T12:23:57.111 [DEBUG] [Thread-115705] [transport.py] [_log()] server lang: <none>
2025-11-03T12:23:57.111 [DEBUG] [Thread-115705] [transport.py] [_log()] kex follows: False
2025-11-03T12:23:57.111 [DEBUG] [Thread-115705] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:23:57.111 [DEBUG] [Thread-115705] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:23:57.111 [DEBUG] [Thread-115705] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:23:57.111 [DEBUG] [Thread-115705] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:23:57.111 [DEBUG] [Thread-115705] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:23:57.111 [DEBUG] [Thread-115705] [transport.py] [_log()] Compression: none
2025-11-03T12:23:57.111 [DEBUG] [Thread-115705] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:23:57.128 [DEBUG] [Thread-115705] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:23:57.129 [DEBUG] [Thread-115705] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:23:57.130 [DEBUG] [Thread-115705] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:23:57.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:23:57.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:23:57.132 [DEBUG] [Thread-115705] [transport.py] [_log()] userauth is OK
2025-11-03T12:23:57.132 [DEBUG] [Thread-115705] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:23:57.133 [DEBUG] [Thread-115705] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:23:57.133 [DEBUG] [Thread-115705] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:23:57.133 [DEBUG] [Thread-115705] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:23:57.157 [INFO] [Thread-115705] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:23:57.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:23:57.772 [DEBUG] [Thread-115705] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:23:57.772 [DEBUG] [Thread-115705] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:23:57.772 [DEBUG] [Thread-115705] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:23:57.813 [DEBUG] [Thread-115705] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:23:57.813 [DEBUG] [Thread-115705] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:23:57.815 [DEBUG] [Thread-115705] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:23:57.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:23:57.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:23:57.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:23:57.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:23:57.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:23:57.833 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:23:57.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:23:57.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:23:57.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:23:57.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.433090 -999.00  +23.50  13.99     10   -9.40 1 1 1 1 1   888    0 33.83 26.92 ----- 14.4 14.0 347.6 21.8 29.1 -28.9 28.3 -29.0 28.2 -27.5 28.8 -27.4
2025-11-03T12:23:57.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:23:57.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:23:57.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.433090
2025-11-03T12:23:57.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:23:57.842 [DEBUG] [Thread-115705] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:23:57.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:23:57.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:23:57.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:23:57.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:23:57.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:23:39', tmtdew=41.54, humidity=5.03, cloud=0.0, wind=22.64, temperature=23.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:23:38.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:23:57.914 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:23:57.924 [DEBUG] [Thread-115708] [transport.py] [_log()] starting thread (client mode): 0x11782500
2025-11-03T12:23:57.924 [DEBUG] [Thread-115708] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:23:57.938 [DEBUG] [Thread-115708] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:23:57.938 [INFO] [Thread-115708] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:23:57.946 [DEBUG] [Thread-115708] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:23:57.946 [DEBUG] [Thread-115708] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:23:57.946 [DEBUG] [Thread-115708] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:23:57.946 [DEBUG] [Thread-115708] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:23:57.946 [DEBUG] [Thread-115708] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:23:57.946 [DEBUG] [Thread-115708] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:23:57.946 [DEBUG] [Thread-115708] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:23:57.946 [DEBUG] [Thread-115708] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:23:57.946 [DEBUG] [Thread-115708] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:23:57.946 [DEBUG] [Thread-115708] [transport.py] [_log()] client lang: <none>
2025-11-03T12:23:57.946 [DEBUG] [Thread-115708] [transport.py] [_log()] server lang: <none>
2025-11-03T12:23:57.946 [DEBUG] [Thread-115708] [transport.py] [_log()] kex follows: False
2025-11-03T12:23:57.946 [DEBUG] [Thread-115708] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:23:57.946 [DEBUG] [Thread-115708] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:23:57.947 [DEBUG] [Thread-115708] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:23:57.947 [DEBUG] [Thread-115708] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:23:57.947 [DEBUG] [Thread-115708] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:23:57.947 [DEBUG] [Thread-115708] [transport.py] [_log()] Compression: none
2025-11-03T12:23:57.947 [DEBUG] [Thread-115708] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:23:58.005 [DEBUG] [Thread-115708] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:23:58.005 [DEBUG] [Thread-115708] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:23:58.006 [DEBUG] [Thread-115708] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:23:58.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:23:58.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:23:58.061 [DEBUG] [Thread-115708] [transport.py] [_log()] userauth is OK
2025-11-03T12:23:58.061 [DEBUG] [Thread-115708] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:23:58.061 [DEBUG] [Thread-115708] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:23:58.061 [DEBUG] [Thread-115708] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:23:58.061 [DEBUG] [Thread-115708] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:23:58.075 [INFO] [Thread-115708] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:23:58.075 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:23:58.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:23:58.958 [DEBUG] [Thread-115708] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:23:58.958 [DEBUG] [Thread-115708] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:23:59.006 [DEBUG] [Thread-115708] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:23:59.006 [DEBUG] [Thread-115708] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:23:59.015 [DEBUG] [Thread-115708] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:23:59.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:23:59.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:23:59.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:23:59.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:23:59.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:23:59.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:23:59.047 [DEBUG] [Thread-115708] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:24:00.250 [DEBUG] [Thread-115710 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:24:11.106 [DEBUG] [Thread-115711 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:24:26.161 [DEBUG] [Thread-115712 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:24:29.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:24:29.051 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:24:29.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:24:29.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 24, 11), 41.27, 5.15, 0.0, 23.08, 23.96, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:24:29.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:24:11
2025-11-03T12:24:29.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:24:30.083 [DEBUG] [Thread-115713] [transport.py] [_log()] starting thread (client mode): 0x11782f50
2025-11-03T12:24:30.083 [DEBUG] [Thread-115713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:24:30.103 [DEBUG] [Thread-115713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:24:30.103 [INFO] [Thread-115713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:24:30.113 [DEBUG] [Thread-115713] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:24:30.113 [DEBUG] [Thread-115713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:24:30.113 [DEBUG] [Thread-115713] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:24:30.113 [DEBUG] [Thread-115713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:24:30.113 [DEBUG] [Thread-115713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:24:30.113 [DEBUG] [Thread-115713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:24:30.113 [DEBUG] [Thread-115713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:24:30.113 [DEBUG] [Thread-115713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:24:30.113 [DEBUG] [Thread-115713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:24:30.114 [DEBUG] [Thread-115713] [transport.py] [_log()] client lang: <none>
2025-11-03T12:24:30.114 [DEBUG] [Thread-115713] [transport.py] [_log()] server lang: <none>
2025-11-03T12:24:30.114 [DEBUG] [Thread-115713] [transport.py] [_log()] kex follows: False
2025-11-03T12:24:30.114 [DEBUG] [Thread-115713] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:24:30.114 [DEBUG] [Thread-115713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:24:30.114 [DEBUG] [Thread-115713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:24:30.114 [DEBUG] [Thread-115713] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:24:30.114 [DEBUG] [Thread-115713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:24:30.114 [DEBUG] [Thread-115713] [transport.py] [_log()] Compression: none
2025-11-03T12:24:30.114 [DEBUG] [Thread-115713] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:24:30.133 [DEBUG] [Thread-115713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:24:30.134 [DEBUG] [Thread-115713] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:24:30.134 [DEBUG] [Thread-115713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:24:30.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:24:30.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:24:30.137 [DEBUG] [Thread-115713] [transport.py] [_log()] userauth is OK
2025-11-03T12:24:30.138 [DEBUG] [Thread-115713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:24:30.138 [DEBUG] [Thread-115713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:24:30.138 [DEBUG] [Thread-115713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:24:30.138 [DEBUG] [Thread-115713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:24:30.163 [INFO] [Thread-115713] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:24:30.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:24:30.815 [DEBUG] [Thread-115713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:24:30.815 [DEBUG] [Thread-115713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:24:30.815 [DEBUG] [Thread-115713] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:24:30.856 [DEBUG] [Thread-115713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:24:30.856 [DEBUG] [Thread-115713] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:24:30.859 [DEBUG] [Thread-115713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:24:30.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:24:30.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:24:30.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:24:30.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:24:30.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:24:30.886 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:24:30.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:24:30.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:24:30.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:24:30.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.433437 -999.00  +23.90  18.83     10   -9.20 1 1 1 1 1   888    0 34.24 27.32 ----- 18.5 18.8 330.1 27.9 29.2 -28.7 28.4 -27.1 28.2 -27.5 29.1 -27.0
2025-11-03T12:24:30.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:24:30.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:24:30.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.433437
2025-11-03T12:24:30.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:24:30.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:24:30.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:24:30.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:24:30.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:24:30.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:24:11', tmtdew=41.27, humidity=5.15, cloud=0.0, wind=23.08, temperature=23.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:24:08.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:24:30.888 [DEBUG] [Thread-115713] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:24:30.959 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:24:30.972 [DEBUG] [Thread-115716] [transport.py] [_log()] starting thread (client mode): 0x11780b80
2025-11-03T12:24:30.972 [DEBUG] [Thread-115716] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:24:30.986 [DEBUG] [Thread-115716] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:24:30.986 [INFO] [Thread-115716] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:24:30.994 [DEBUG] [Thread-115716] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:24:30.994 [DEBUG] [Thread-115716] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:24:30.994 [DEBUG] [Thread-115716] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:24:30.994 [DEBUG] [Thread-115716] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:24:30.994 [DEBUG] [Thread-115716] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:24:30.994 [DEBUG] [Thread-115716] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:24:30.994 [DEBUG] [Thread-115716] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:24:30.994 [DEBUG] [Thread-115716] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:24:30.994 [DEBUG] [Thread-115716] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:24:30.994 [DEBUG] [Thread-115716] [transport.py] [_log()] client lang: <none>
2025-11-03T12:24:30.994 [DEBUG] [Thread-115716] [transport.py] [_log()] server lang: <none>
2025-11-03T12:24:30.994 [DEBUG] [Thread-115716] [transport.py] [_log()] kex follows: False
2025-11-03T12:24:30.994 [DEBUG] [Thread-115716] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:24:30.994 [DEBUG] [Thread-115716] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:24:30.994 [DEBUG] [Thread-115716] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:24:30.994 [DEBUG] [Thread-115716] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:24:30.995 [DEBUG] [Thread-115716] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:24:30.995 [DEBUG] [Thread-115716] [transport.py] [_log()] Compression: none
2025-11-03T12:24:30.995 [DEBUG] [Thread-115716] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:24:31.052 [DEBUG] [Thread-115716] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:24:31.052 [DEBUG] [Thread-115716] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:24:31.052 [DEBUG] [Thread-115716] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:24:31.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:24:31.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:24:31.109 [DEBUG] [Thread-115716] [transport.py] [_log()] userauth is OK
2025-11-03T12:24:31.109 [DEBUG] [Thread-115716] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:24:31.109 [DEBUG] [Thread-115716] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:24:31.109 [DEBUG] [Thread-115716] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:24:31.109 [DEBUG] [Thread-115716] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:24:31.124 [INFO] [Thread-115716] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:24:31.124 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:24:31.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:24:31.955 [DEBUG] [Thread-115716] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:24:31.955 [DEBUG] [Thread-115716] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:24:32.003 [DEBUG] [Thread-115716] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:24:32.003 [DEBUG] [Thread-115716] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:24:32.014 [DEBUG] [Thread-115716] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:24:32.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:24:32.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:24:32.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:24:32.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:24:32.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:24:32.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:24:32.052 [DEBUG] [Thread-115716] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:24:39.893 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:24:39.894 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:24:41.207 [DEBUG] [Thread-115718 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:24:56.248 [DEBUG] [Thread-115719 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:25:00.301 [DEBUG] [Thread-115720 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:25:02.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:25:02.073 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:25:02.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:25:02.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 24, 43), 41.65, 5.07, 0.0, 17.66, 24.24, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:25:02.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:24:43
2025-11-03T12:25:02.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:25:03.001 [DEBUG] [Thread-115721] [transport.py] [_log()] starting thread (client mode): 0x11782b90
2025-11-03T12:25:03.001 [DEBUG] [Thread-115721] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:25:03.021 [DEBUG] [Thread-115721] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:25:03.021 [INFO] [Thread-115721] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:25:03.023 [DEBUG] [Thread-115721] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:25:03.023 [DEBUG] [Thread-115721] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:25:03.023 [DEBUG] [Thread-115721] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:25:03.023 [DEBUG] [Thread-115721] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:25:03.023 [DEBUG] [Thread-115721] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:25:03.023 [DEBUG] [Thread-115721] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:25:03.023 [DEBUG] [Thread-115721] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:25:03.023 [DEBUG] [Thread-115721] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:25:03.023 [DEBUG] [Thread-115721] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:25:03.023 [DEBUG] [Thread-115721] [transport.py] [_log()] client lang: <none>
2025-11-03T12:25:03.023 [DEBUG] [Thread-115721] [transport.py] [_log()] server lang: <none>
2025-11-03T12:25:03.023 [DEBUG] [Thread-115721] [transport.py] [_log()] kex follows: False
2025-11-03T12:25:03.023 [DEBUG] [Thread-115721] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:25:03.023 [DEBUG] [Thread-115721] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:25:03.023 [DEBUG] [Thread-115721] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:25:03.023 [DEBUG] [Thread-115721] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:25:03.023 [DEBUG] [Thread-115721] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:25:03.023 [DEBUG] [Thread-115721] [transport.py] [_log()] Compression: none
2025-11-03T12:25:03.023 [DEBUG] [Thread-115721] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:25:03.032 [DEBUG] [Thread-115721] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:25:03.033 [DEBUG] [Thread-115721] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:25:03.033 [DEBUG] [Thread-115721] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:25:03.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:25:03.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:25:03.034 [DEBUG] [Thread-115721] [transport.py] [_log()] userauth is OK
2025-11-03T12:25:03.034 [DEBUG] [Thread-115721] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:25:03.034 [DEBUG] [Thread-115721] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:25:03.034 [DEBUG] [Thread-115721] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:25:03.034 [DEBUG] [Thread-115721] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:25:03.044 [INFO] [Thread-115721] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:25:03.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:25:10.749 [DEBUG] [Thread-115721] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:25:10.749 [DEBUG] [Thread-115721] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:25:10.759 [DEBUG] [Thread-115721] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:25:10.790 [DEBUG] [Thread-115721] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:25:10.790 [DEBUG] [Thread-115721] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:25:10.794 [DEBUG] [Thread-115721] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:25:10.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:25:10.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:25:10.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:25:10.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:25:10.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:25:10.937 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:25:10.937 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:25:10.937 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:25:10.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:25:10.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.433785 -999.00  +23.80  16.91     10   -9.20 1 1 1 1 1   888    0 33.32 28.80 ----- 13.0 16.9 17.0 26.3 29.4 -28.4 28.4 -29.3 28.4 -27.1 29.0 -27.9
2025-11-03T12:25:10.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:25:10.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:25:10.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.433785
2025-11-03T12:25:10.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:25:10.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:25:10.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:25:10.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:25:10.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:25:10.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:24:43', tmtdew=41.65, humidity=5.07, cloud=0.0, wind=17.66, temperature=24.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:24:39.024', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:25:10.940 [DEBUG] [Thread-115721] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:25:11.038 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:25:11.051 [DEBUG] [Thread-115724] [transport.py] [_log()] starting thread (client mode): 0x11781c00
2025-11-03T12:25:11.051 [DEBUG] [Thread-115724] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:25:11.065 [DEBUG] [Thread-115724] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:25:11.065 [INFO] [Thread-115724] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:25:11.073 [DEBUG] [Thread-115724] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:25:11.073 [DEBUG] [Thread-115724] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:25:11.073 [DEBUG] [Thread-115724] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:25:11.073 [DEBUG] [Thread-115724] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:25:11.073 [DEBUG] [Thread-115724] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:25:11.073 [DEBUG] [Thread-115724] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:25:11.073 [DEBUG] [Thread-115724] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:25:11.073 [DEBUG] [Thread-115724] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:25:11.073 [DEBUG] [Thread-115724] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:25:11.073 [DEBUG] [Thread-115724] [transport.py] [_log()] client lang: <none>
2025-11-03T12:25:11.073 [DEBUG] [Thread-115724] [transport.py] [_log()] server lang: <none>
2025-11-03T12:25:11.073 [DEBUG] [Thread-115724] [transport.py] [_log()] kex follows: False
2025-11-03T12:25:11.073 [DEBUG] [Thread-115724] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:25:11.073 [DEBUG] [Thread-115724] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:25:11.074 [DEBUG] [Thread-115724] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:25:11.074 [DEBUG] [Thread-115724] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:25:11.074 [DEBUG] [Thread-115724] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:25:11.074 [DEBUG] [Thread-115724] [transport.py] [_log()] Compression: none
2025-11-03T12:25:11.074 [DEBUG] [Thread-115724] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:25:11.134 [DEBUG] [Thread-115724] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:25:11.135 [DEBUG] [Thread-115724] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:25:11.136 [DEBUG] [Thread-115724] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:25:11.136 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:25:11.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:25:11.190 [DEBUG] [Thread-115724] [transport.py] [_log()] userauth is OK
2025-11-03T12:25:11.191 [DEBUG] [Thread-115724] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:25:11.191 [DEBUG] [Thread-115724] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:25:11.191 [DEBUG] [Thread-115724] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:25:11.191 [DEBUG] [Thread-115724] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:25:11.209 [INFO] [Thread-115724] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:25:11.209 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:25:11.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:25:11.293 [DEBUG] [Thread-115726 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:25:12.120 [DEBUG] [Thread-115724] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:25:12.120 [DEBUG] [Thread-115724] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:25:12.168 [DEBUG] [Thread-115724] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:25:12.168 [DEBUG] [Thread-115724] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:25:12.177 [DEBUG] [Thread-115724] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:25:12.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:25:12.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:25:12.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:25:12.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:25:12.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:25:12.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:25:12.215 [DEBUG] [Thread-115724] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:25:26.345 [DEBUG] [Thread-115727 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:25:40.035 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:25:40.036 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:25:41.383 [DEBUG] [Thread-115728 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:25:42.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:25:42.237 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:25:42.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:25:42.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 25, 15), 41.49, 5.13, 0.0, 19.23, 24.21, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:25:42.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:25:15
2025-11-03T12:25:43.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:25:43.207 [DEBUG] [Thread-115729] [transport.py] [_log()] starting thread (client mode): 0x11782260
2025-11-03T12:25:43.207 [DEBUG] [Thread-115729] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:25:43.229 [DEBUG] [Thread-115729] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:25:43.229 [INFO] [Thread-115729] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:25:43.233 [DEBUG] [Thread-115729] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:25:43.233 [DEBUG] [Thread-115729] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:25:43.233 [DEBUG] [Thread-115729] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:25:43.233 [DEBUG] [Thread-115729] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:25:43.233 [DEBUG] [Thread-115729] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:25:43.233 [DEBUG] [Thread-115729] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:25:43.233 [DEBUG] [Thread-115729] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:25:43.233 [DEBUG] [Thread-115729] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:25:43.234 [DEBUG] [Thread-115729] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:25:43.234 [DEBUG] [Thread-115729] [transport.py] [_log()] client lang: <none>
2025-11-03T12:25:43.234 [DEBUG] [Thread-115729] [transport.py] [_log()] server lang: <none>
2025-11-03T12:25:43.234 [DEBUG] [Thread-115729] [transport.py] [_log()] kex follows: False
2025-11-03T12:25:43.234 [DEBUG] [Thread-115729] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:25:43.234 [DEBUG] [Thread-115729] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:25:43.234 [DEBUG] [Thread-115729] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:25:43.243 [DEBUG] [Thread-115729] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:25:43.244 [DEBUG] [Thread-115729] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:25:43.244 [DEBUG] [Thread-115729] [transport.py] [_log()] Compression: none
2025-11-03T12:25:43.244 [DEBUG] [Thread-115729] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:25:43.263 [DEBUG] [Thread-115729] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:25:43.264 [DEBUG] [Thread-115729] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:25:43.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:25:43.265 [DEBUG] [Thread-115729] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:25:43.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:25:43.267 [DEBUG] [Thread-115729] [transport.py] [_log()] userauth is OK
2025-11-03T12:25:43.267 [DEBUG] [Thread-115729] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:25:43.268 [DEBUG] [Thread-115729] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:25:43.268 [DEBUG] [Thread-115729] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:25:43.268 [DEBUG] [Thread-115729] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:25:43.292 [INFO] [Thread-115729] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:25:43.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:25:43.935 [DEBUG] [Thread-115729] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:25:43.935 [DEBUG] [Thread-115729] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:25:43.936 [DEBUG] [Thread-115729] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:25:43.976 [DEBUG] [Thread-115729] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:25:43.976 [DEBUG] [Thread-115729] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:25:43.980 [DEBUG] [Thread-115729] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:25:43.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:25:43.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:25:43.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:25:43.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:25:44.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:25:44.007 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:25:44.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:25:44.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:25:44.016 [DEBUG] [Thread-115729] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:25:44.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:25:44.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.434131 -999.00  +23.70   7.60     10   -9.10 1 1 1 1 1   888    0 33.77 27.42 ----- 5.6 7.6 27.2 19.2 29.4 -29.1 28.4 -28.2 28.4 -27.5 29.1 -27.3
2025-11-03T12:25:44.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:25:44.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:25:44.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.434131
2025-11-03T12:25:44.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:25:44.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:25:44.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:25:44.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:25:44.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:25:44.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:25:15', tmtdew=41.49, humidity=5.13, cloud=0.0, wind=19.23, temperature=24.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:25:08.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:25:44.104 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:25:44.116 [DEBUG] [Thread-115732] [transport.py] [_log()] starting thread (client mode): 0x11780ac0
2025-11-03T12:25:44.116 [DEBUG] [Thread-115732] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:25:44.130 [DEBUG] [Thread-115732] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:25:44.130 [INFO] [Thread-115732] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:25:44.138 [DEBUG] [Thread-115732] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:25:44.138 [DEBUG] [Thread-115732] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:25:44.138 [DEBUG] [Thread-115732] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:25:44.138 [DEBUG] [Thread-115732] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:25:44.138 [DEBUG] [Thread-115732] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:25:44.138 [DEBUG] [Thread-115732] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:25:44.138 [DEBUG] [Thread-115732] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:25:44.138 [DEBUG] [Thread-115732] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:25:44.138 [DEBUG] [Thread-115732] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:25:44.138 [DEBUG] [Thread-115732] [transport.py] [_log()] client lang: <none>
2025-11-03T12:25:44.138 [DEBUG] [Thread-115732] [transport.py] [_log()] server lang: <none>
2025-11-03T12:25:44.138 [DEBUG] [Thread-115732] [transport.py] [_log()] kex follows: False
2025-11-03T12:25:44.138 [DEBUG] [Thread-115732] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:25:44.138 [DEBUG] [Thread-115732] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:25:44.139 [DEBUG] [Thread-115732] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:25:44.139 [DEBUG] [Thread-115732] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:25:44.139 [DEBUG] [Thread-115732] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:25:44.139 [DEBUG] [Thread-115732] [transport.py] [_log()] Compression: none
2025-11-03T12:25:44.139 [DEBUG] [Thread-115732] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:25:44.198 [DEBUG] [Thread-115732] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:25:44.208 [DEBUG] [Thread-115732] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:25:44.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:25:44.209 [DEBUG] [Thread-115732] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:25:44.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:25:44.254 [DEBUG] [Thread-115732] [transport.py] [_log()] userauth is OK
2025-11-03T12:25:44.254 [DEBUG] [Thread-115732] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:25:44.254 [DEBUG] [Thread-115732] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:25:44.255 [DEBUG] [Thread-115732] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:25:44.255 [DEBUG] [Thread-115732] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:25:44.273 [INFO] [Thread-115732] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:25:44.274 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:25:44.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:25:45.126 [DEBUG] [Thread-115732] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:25:45.127 [DEBUG] [Thread-115732] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:25:45.175 [DEBUG] [Thread-115732] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:25:45.175 [DEBUG] [Thread-115732] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:25:45.183 [DEBUG] [Thread-115732] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:25:45.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:25:45.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:25:45.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:25:45.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:25:45.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:25:45.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:25:45.218 [DEBUG] [Thread-115732] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:25:56.420 [DEBUG] [Thread-115734 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:26:00.331 [DEBUG] [Thread-115735 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:26:11.459 [DEBUG] [Thread-115736 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:26:15.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:26:15.241 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:26:15.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:26:15.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 25, 48), 41.57, 5.1, 0.0, 17.89, 24.21, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:26:15.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:25:48
2025-11-03T12:26:16.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:26:16.188 [DEBUG] [Thread-115737] [transport.py] [_log()] starting thread (client mode): 0x11782ad0
2025-11-03T12:26:16.188 [DEBUG] [Thread-115737] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:26:16.212 [DEBUG] [Thread-115737] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:26:16.212 [INFO] [Thread-115737] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:26:16.213 [DEBUG] [Thread-115737] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:26:16.213 [DEBUG] [Thread-115737] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:26:16.213 [DEBUG] [Thread-115737] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:26:16.213 [DEBUG] [Thread-115737] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:26:16.213 [DEBUG] [Thread-115737] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:26:16.213 [DEBUG] [Thread-115737] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:26:16.213 [DEBUG] [Thread-115737] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:26:16.213 [DEBUG] [Thread-115737] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:26:16.213 [DEBUG] [Thread-115737] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:26:16.213 [DEBUG] [Thread-115737] [transport.py] [_log()] client lang: <none>
2025-11-03T12:26:16.213 [DEBUG] [Thread-115737] [transport.py] [_log()] server lang: <none>
2025-11-03T12:26:16.213 [DEBUG] [Thread-115737] [transport.py] [_log()] kex follows: False
2025-11-03T12:26:16.213 [DEBUG] [Thread-115737] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:26:16.213 [DEBUG] [Thread-115737] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:26:16.213 [DEBUG] [Thread-115737] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:26:16.213 [DEBUG] [Thread-115737] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:26:16.214 [DEBUG] [Thread-115737] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:26:16.214 [DEBUG] [Thread-115737] [transport.py] [_log()] Compression: none
2025-11-03T12:26:16.214 [DEBUG] [Thread-115737] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:26:16.223 [DEBUG] [Thread-115737] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:26:16.223 [DEBUG] [Thread-115737] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:26:16.224 [DEBUG] [Thread-115737] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:26:16.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:26:16.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:26:16.226 [DEBUG] [Thread-115737] [transport.py] [_log()] userauth is OK
2025-11-03T12:26:16.226 [DEBUG] [Thread-115737] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:26:16.226 [DEBUG] [Thread-115737] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:26:16.227 [DEBUG] [Thread-115737] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:26:16.227 [DEBUG] [Thread-115737] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:26:16.244 [INFO] [Thread-115737] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:26:16.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:26:16.827 [DEBUG] [Thread-115737] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:26:16.827 [DEBUG] [Thread-115737] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:26:16.827 [DEBUG] [Thread-115737] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:26:16.868 [DEBUG] [Thread-115737] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:26:16.868 [DEBUG] [Thread-115737] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:26:16.870 [DEBUG] [Thread-115737] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:26:16.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:26:16.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:26:16.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:26:16.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:26:16.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:26:16.897 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:26:16.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:26:16.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:26:16.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:26:16.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.434479 -999.00  +23.90  14.85     10   -9.10 1 1 1 1 1   888    0 34.14 26.02 ----- 11.9 14.8 339.4 17.0 29.4 -28.3 28.6 -27.0 28.4 -26.9 29.2 -26.9
2025-11-03T12:26:16.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:26:16.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:26:16.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.434479
2025-11-03T12:26:16.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:26:16.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:26:16.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:26:16.899 [DEBUG] [Thread-115737] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:26:16.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:26:16.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:26:16.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:25:48', tmtdew=41.57, humidity=5.1, cloud=0.0, wind=17.89, temperature=24.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:25:38.986', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:26:16.984 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:26:16.996 [DEBUG] [Thread-115740] [transport.py] [_log()] starting thread (client mode): 0xedd7520
2025-11-03T12:26:16.996 [DEBUG] [Thread-115740] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:26:17.010 [DEBUG] [Thread-115740] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:26:17.010 [INFO] [Thread-115740] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:26:17.017 [DEBUG] [Thread-115740] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:26:17.018 [DEBUG] [Thread-115740] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:26:17.018 [DEBUG] [Thread-115740] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:26:17.018 [DEBUG] [Thread-115740] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:26:17.018 [DEBUG] [Thread-115740] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:26:17.018 [DEBUG] [Thread-115740] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:26:17.018 [DEBUG] [Thread-115740] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:26:17.018 [DEBUG] [Thread-115740] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:26:17.018 [DEBUG] [Thread-115740] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:26:17.018 [DEBUG] [Thread-115740] [transport.py] [_log()] client lang: <none>
2025-11-03T12:26:17.018 [DEBUG] [Thread-115740] [transport.py] [_log()] server lang: <none>
2025-11-03T12:26:17.018 [DEBUG] [Thread-115740] [transport.py] [_log()] kex follows: False
2025-11-03T12:26:17.018 [DEBUG] [Thread-115740] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:26:17.018 [DEBUG] [Thread-115740] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:26:17.018 [DEBUG] [Thread-115740] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:26:17.018 [DEBUG] [Thread-115740] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:26:17.018 [DEBUG] [Thread-115740] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:26:17.018 [DEBUG] [Thread-115740] [transport.py] [_log()] Compression: none
2025-11-03T12:26:17.018 [DEBUG] [Thread-115740] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:26:17.074 [DEBUG] [Thread-115740] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:26:17.075 [DEBUG] [Thread-115740] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:26:17.076 [DEBUG] [Thread-115740] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:26:17.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:26:17.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:26:17.130 [DEBUG] [Thread-115740] [transport.py] [_log()] userauth is OK
2025-11-03T12:26:17.130 [DEBUG] [Thread-115740] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:26:17.131 [DEBUG] [Thread-115740] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:26:17.131 [DEBUG] [Thread-115740] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:26:17.131 [DEBUG] [Thread-115740] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:26:17.151 [INFO] [Thread-115740] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:26:17.151 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:26:17.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:26:18.066 [DEBUG] [Thread-115740] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:26:18.066 [DEBUG] [Thread-115740] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:26:18.114 [DEBUG] [Thread-115740] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:26:18.114 [DEBUG] [Thread-115740] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:26:18.124 [DEBUG] [Thread-115740] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:26:18.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:26:18.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:26:18.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:26:18.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:26:18.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:26:18.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:26:18.171 [DEBUG] [Thread-115740] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:26:26.495 [DEBUG] [Thread-115742 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:26:40.177 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:26:40.178 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:26:41.542 [DEBUG] [Thread-115743 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:26:48.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:26:48.173 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:26:48.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:26:48.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 26, 20), 41.4, 5.18, 0.0, 21.81, 24.28, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:26:48.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:26:20
2025-11-03T12:26:49.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:26:49.174 [DEBUG] [Thread-115744] [transport.py] [_log()] starting thread (client mode): 0xedd55a0
2025-11-03T12:26:49.175 [DEBUG] [Thread-115744] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:26:49.193 [DEBUG] [Thread-115744] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:26:49.194 [INFO] [Thread-115744] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:26:49.197 [DEBUG] [Thread-115744] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:26:49.197 [DEBUG] [Thread-115744] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:26:49.197 [DEBUG] [Thread-115744] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:26:49.197 [DEBUG] [Thread-115744] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:26:49.197 [DEBUG] [Thread-115744] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:26:49.197 [DEBUG] [Thread-115744] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:26:49.197 [DEBUG] [Thread-115744] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:26:49.197 [DEBUG] [Thread-115744] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:26:49.197 [DEBUG] [Thread-115744] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:26:49.197 [DEBUG] [Thread-115744] [transport.py] [_log()] client lang: <none>
2025-11-03T12:26:49.197 [DEBUG] [Thread-115744] [transport.py] [_log()] server lang: <none>
2025-11-03T12:26:49.197 [DEBUG] [Thread-115744] [transport.py] [_log()] kex follows: False
2025-11-03T12:26:49.197 [DEBUG] [Thread-115744] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:26:49.197 [DEBUG] [Thread-115744] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:26:49.197 [DEBUG] [Thread-115744] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:26:49.197 [DEBUG] [Thread-115744] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:26:49.197 [DEBUG] [Thread-115744] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:26:49.197 [DEBUG] [Thread-115744] [transport.py] [_log()] Compression: none
2025-11-03T12:26:49.197 [DEBUG] [Thread-115744] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:26:49.214 [DEBUG] [Thread-115744] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:26:49.215 [DEBUG] [Thread-115744] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:26:49.215 [DEBUG] [Thread-115744] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:26:49.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:26:49.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:26:49.218 [DEBUG] [Thread-115744] [transport.py] [_log()] userauth is OK
2025-11-03T12:26:49.218 [DEBUG] [Thread-115744] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:26:49.218 [DEBUG] [Thread-115744] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:26:49.218 [DEBUG] [Thread-115744] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:26:49.218 [DEBUG] [Thread-115744] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:26:49.238 [INFO] [Thread-115744] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:26:49.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:26:49.849 [DEBUG] [Thread-115744] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:26:49.850 [DEBUG] [Thread-115744] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:26:49.850 [DEBUG] [Thread-115744] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:26:49.891 [DEBUG] [Thread-115744] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:26:49.891 [DEBUG] [Thread-115744] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:26:49.894 [DEBUG] [Thread-115744] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:26:49.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:26:49.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:26:49.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:26:49.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:26:49.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:26:49.916 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:26:49.916 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:26:49.916 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:26:49.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:26:49.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.434826 -999.00  +24.30  21.05     10   -8.80 1 1 1 1 1   888    0 33.47 24.44 ----- 12.2 21.1 331.8 29.9 29.6 -28.2 28.6 -27.6 28.5 -26.8 29.4 -27.1
2025-11-03T12:26:49.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:26:49.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:26:49.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.434826
2025-11-03T12:26:49.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:26:49.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:26:49.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:26:49.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:26:49.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:26:49.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:26:20', tmtdew=41.4, humidity=5.18, cloud=0.0, wind=21.81, temperature=24.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:26:08.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:26:49.919 [DEBUG] [Thread-115744] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:26:50.008 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:26:50.019 [DEBUG] [Thread-115747] [transport.py] [_log()] starting thread (client mode): 0x11782ce0
2025-11-03T12:26:50.019 [DEBUG] [Thread-115747] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:26:50.034 [DEBUG] [Thread-115747] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:26:50.034 [INFO] [Thread-115747] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:26:50.042 [DEBUG] [Thread-115747] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:26:50.042 [DEBUG] [Thread-115747] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:26:50.042 [DEBUG] [Thread-115747] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:26:50.042 [DEBUG] [Thread-115747] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:26:50.042 [DEBUG] [Thread-115747] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:26:50.042 [DEBUG] [Thread-115747] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:26:50.043 [DEBUG] [Thread-115747] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:26:50.043 [DEBUG] [Thread-115747] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:26:50.043 [DEBUG] [Thread-115747] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:26:50.043 [DEBUG] [Thread-115747] [transport.py] [_log()] client lang: <none>
2025-11-03T12:26:50.043 [DEBUG] [Thread-115747] [transport.py] [_log()] server lang: <none>
2025-11-03T12:26:50.043 [DEBUG] [Thread-115747] [transport.py] [_log()] kex follows: False
2025-11-03T12:26:50.043 [DEBUG] [Thread-115747] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:26:50.043 [DEBUG] [Thread-115747] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:26:50.043 [DEBUG] [Thread-115747] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:26:50.043 [DEBUG] [Thread-115747] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:26:50.043 [DEBUG] [Thread-115747] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:26:50.043 [DEBUG] [Thread-115747] [transport.py] [_log()] Compression: none
2025-11-03T12:26:50.043 [DEBUG] [Thread-115747] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:26:50.104 [DEBUG] [Thread-115747] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:26:50.105 [DEBUG] [Thread-115747] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:26:50.114 [DEBUG] [Thread-115747] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:26:50.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:26:50.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:26:50.163 [DEBUG] [Thread-115747] [transport.py] [_log()] userauth is OK
2025-11-03T12:26:50.163 [DEBUG] [Thread-115747] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:26:50.163 [DEBUG] [Thread-115747] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:26:50.163 [DEBUG] [Thread-115747] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:26:50.163 [DEBUG] [Thread-115747] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:26:50.182 [INFO] [Thread-115747] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:26:50.183 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:26:50.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:26:51.062 [DEBUG] [Thread-115747] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:26:51.062 [DEBUG] [Thread-115747] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:26:51.110 [DEBUG] [Thread-115747] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:26:51.110 [DEBUG] [Thread-115747] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:26:51.119 [DEBUG] [Thread-115747] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:26:51.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:26:51.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:26:51.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:26:51.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:26:51.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:26:51.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:26:51.156 [DEBUG] [Thread-115747] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:26:56.582 [DEBUG] [Thread-115749 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:27:00.405 [DEBUG] [Thread-115750 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:27:11.635 [DEBUG] [Thread-115751 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:27:21.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:27:21.188 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:27:21.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:27:21.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 26, 53), 41.84, 5.08, 0.0, 23.38, 24.48, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:27:21.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:26:53
2025-11-03T12:27:21.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:27:22.123 [DEBUG] [Thread-115752] [transport.py] [_log()] starting thread (client mode): 0x11782620
2025-11-03T12:27:22.123 [DEBUG] [Thread-115752] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:27:22.144 [DEBUG] [Thread-115752] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:27:22.144 [INFO] [Thread-115752] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:27:22.147 [DEBUG] [Thread-115752] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:27:22.147 [DEBUG] [Thread-115752] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:27:22.147 [DEBUG] [Thread-115752] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:27:22.147 [DEBUG] [Thread-115752] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:27:22.147 [DEBUG] [Thread-115752] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:27:22.147 [DEBUG] [Thread-115752] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:27:22.147 [DEBUG] [Thread-115752] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:27:22.147 [DEBUG] [Thread-115752] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:27:22.147 [DEBUG] [Thread-115752] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:27:22.147 [DEBUG] [Thread-115752] [transport.py] [_log()] client lang: <none>
2025-11-03T12:27:22.147 [DEBUG] [Thread-115752] [transport.py] [_log()] server lang: <none>
2025-11-03T12:27:22.147 [DEBUG] [Thread-115752] [transport.py] [_log()] kex follows: False
2025-11-03T12:27:22.147 [DEBUG] [Thread-115752] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:27:22.147 [DEBUG] [Thread-115752] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:27:22.147 [DEBUG] [Thread-115752] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:27:22.156 [DEBUG] [Thread-115752] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:27:22.156 [DEBUG] [Thread-115752] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:27:22.156 [DEBUG] [Thread-115752] [transport.py] [_log()] Compression: none
2025-11-03T12:27:22.156 [DEBUG] [Thread-115752] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:27:22.174 [DEBUG] [Thread-115752] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:27:22.174 [DEBUG] [Thread-115752] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:27:22.175 [DEBUG] [Thread-115752] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:27:22.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:27:22.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:27:22.217 [DEBUG] [Thread-115752] [transport.py] [_log()] userauth is OK
2025-11-03T12:27:22.217 [DEBUG] [Thread-115752] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:27:22.217 [DEBUG] [Thread-115752] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:27:22.217 [DEBUG] [Thread-115752] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:27:22.217 [DEBUG] [Thread-115752] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:27:22.237 [INFO] [Thread-115752] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:27:22.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:27:22.880 [DEBUG] [Thread-115752] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:27:22.880 [DEBUG] [Thread-115752] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:27:22.881 [DEBUG] [Thread-115752] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:27:22.921 [DEBUG] [Thread-115752] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:27:22.921 [DEBUG] [Thread-115752] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:27:22.925 [DEBUG] [Thread-115752] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:27:22.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:27:22.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:27:22.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:27:22.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:27:22.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:27:22.945 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:27:22.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:27:22.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:27:22.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:27:22.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.435173 -999.00  +24.60  16.68      9   -9.30 1 1 1 1 1   888    0 33.57 25.08 ----- 24.3 16.7 340.7 33.2 29.8 -28.3 28.8 -29.8 28.7 -26.7 29.4 -27.5
2025-11-03T12:27:22.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:27:22.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:27:22.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.435173
2025-11-03T12:27:22.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:27:22.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:27:22.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:27:22.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:27:22.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:27:22.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:26:53', tmtdew=41.84, humidity=5.08, cloud=0.0, wind=23.38, temperature=24.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:26:38.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:27:22.949 [DEBUG] [Thread-115752] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:27:23.031 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:27:23.045 [DEBUG] [Thread-115755] [transport.py] [_log()] starting thread (client mode): 0x11782e00
2025-11-03T12:27:23.045 [DEBUG] [Thread-115755] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:27:23.059 [DEBUG] [Thread-115755] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:27:23.060 [INFO] [Thread-115755] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:27:23.067 [DEBUG] [Thread-115755] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:27:23.067 [DEBUG] [Thread-115755] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:27:23.067 [DEBUG] [Thread-115755] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:27:23.068 [DEBUG] [Thread-115755] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:27:23.068 [DEBUG] [Thread-115755] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:27:23.068 [DEBUG] [Thread-115755] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:27:23.068 [DEBUG] [Thread-115755] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:27:23.068 [DEBUG] [Thread-115755] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:27:23.068 [DEBUG] [Thread-115755] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:27:23.068 [DEBUG] [Thread-115755] [transport.py] [_log()] client lang: <none>
2025-11-03T12:27:23.068 [DEBUG] [Thread-115755] [transport.py] [_log()] server lang: <none>
2025-11-03T12:27:23.069 [DEBUG] [Thread-115755] [transport.py] [_log()] kex follows: False
2025-11-03T12:27:23.069 [DEBUG] [Thread-115755] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:27:23.069 [DEBUG] [Thread-115755] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:27:23.069 [DEBUG] [Thread-115755] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:27:23.069 [DEBUG] [Thread-115755] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:27:23.069 [DEBUG] [Thread-115755] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:27:23.069 [DEBUG] [Thread-115755] [transport.py] [_log()] Compression: none
2025-11-03T12:27:23.070 [DEBUG] [Thread-115755] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:27:23.127 [DEBUG] [Thread-115755] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:27:23.127 [DEBUG] [Thread-115755] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:27:23.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:27:23.128 [DEBUG] [Thread-115755] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:27:23.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:27:23.182 [DEBUG] [Thread-115755] [transport.py] [_log()] userauth is OK
2025-11-03T12:27:23.183 [DEBUG] [Thread-115755] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:27:23.183 [DEBUG] [Thread-115755] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:27:23.183 [DEBUG] [Thread-115755] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:27:23.183 [DEBUG] [Thread-115755] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:27:23.201 [INFO] [Thread-115755] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:27:23.201 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:27:23.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:27:24.028 [DEBUG] [Thread-115755] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:27:24.028 [DEBUG] [Thread-115755] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:27:24.077 [DEBUG] [Thread-115755] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:27:24.077 [DEBUG] [Thread-115755] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:27:24.086 [DEBUG] [Thread-115755] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:27:24.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:27:24.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:27:24.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:27:24.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:27:24.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:27:24.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:27:24.125 [DEBUG] [Thread-115755] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:27:26.667 [DEBUG] [Thread-115757 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:27:40.320 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:27:40.321 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:27:41.711 [DEBUG] [Thread-115758 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:27:54.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:27:54.147 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:27:54.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:27:54.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 27, 25), 42.05, 5.0, 0.0, 15.67, 24.56, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:27:54.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:27:25
2025-11-03T12:27:54.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:27:55.133 [DEBUG] [Thread-115759] [transport.py] [_log()] starting thread (client mode): 0xedd7910
2025-11-03T12:27:55.133 [DEBUG] [Thread-115759] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:27:55.154 [DEBUG] [Thread-115759] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:27:55.154 [INFO] [Thread-115759] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:27:55.158 [DEBUG] [Thread-115759] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:27:55.158 [DEBUG] [Thread-115759] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:27:55.158 [DEBUG] [Thread-115759] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:27:55.158 [DEBUG] [Thread-115759] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:27:55.158 [DEBUG] [Thread-115759] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:27:55.158 [DEBUG] [Thread-115759] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:27:55.158 [DEBUG] [Thread-115759] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:27:55.158 [DEBUG] [Thread-115759] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:27:55.158 [DEBUG] [Thread-115759] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:27:55.158 [DEBUG] [Thread-115759] [transport.py] [_log()] client lang: <none>
2025-11-03T12:27:55.158 [DEBUG] [Thread-115759] [transport.py] [_log()] server lang: <none>
2025-11-03T12:27:55.158 [DEBUG] [Thread-115759] [transport.py] [_log()] kex follows: False
2025-11-03T12:27:55.158 [DEBUG] [Thread-115759] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:27:55.158 [DEBUG] [Thread-115759] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:27:55.158 [DEBUG] [Thread-115759] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:27:55.158 [DEBUG] [Thread-115759] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:27:55.158 [DEBUG] [Thread-115759] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:27:55.158 [DEBUG] [Thread-115759] [transport.py] [_log()] Compression: none
2025-11-03T12:27:55.158 [DEBUG] [Thread-115759] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:27:55.174 [DEBUG] [Thread-115759] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:27:55.174 [DEBUG] [Thread-115759] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:27:55.174 [DEBUG] [Thread-115759] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:27:55.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:27:55.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:27:55.175 [DEBUG] [Thread-115759] [transport.py] [_log()] userauth is OK
2025-11-03T12:27:55.175 [DEBUG] [Thread-115759] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:27:55.175 [DEBUG] [Thread-115759] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:27:55.175 [DEBUG] [Thread-115759] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:27:55.175 [DEBUG] [Thread-115759] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:27:55.184 [INFO] [Thread-115759] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:27:55.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:27:55.877 [DEBUG] [Thread-115759] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:27:55.877 [DEBUG] [Thread-115759] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:27:55.877 [DEBUG] [Thread-115759] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:27:55.918 [DEBUG] [Thread-115759] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:27:55.919 [DEBUG] [Thread-115759] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:27:55.921 [DEBUG] [Thread-115759] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:27:55.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:27:55.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:27:55.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:27:55.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:27:55.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:27:55.940 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:27:55.940 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:27:55.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:27:55.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:27:55.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.435868 -999.00  +24.40  18.54      9  -10.00 1 1 1 1 1   888    0 34.14 33.87 ----- 25.5 18.5 15.5 39.9 29.7 -29.8 28.7 -30.3 28.7 -29.0 28.9 -35.4
2025-11-03T12:27:55.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:27:55.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:27:55.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.435868
2025-11-03T12:27:55.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:27:55.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:27:55.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:27:55.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:27:55.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:27:55.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:27:25', tmtdew=42.05, humidity=5.0, cloud=0.0, wind=15.67, temperature=24.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:27:38.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:27:55.941 [DEBUG] [Thread-115759] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:27:56.022 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:27:56.742 [DEBUG] [Thread-115762 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:28:00.458 [DEBUG] [Thread-115763 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:28:11.778 [DEBUG] [Thread-115764 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:28:26.827 [DEBUG] [Thread-115765 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:28:40.462 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:28:40.463 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:28:41.857 [DEBUG] [Thread-115766 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:28:56.895 [DEBUG] [Thread-115767 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:29:00.538 [DEBUG] [Thread-115768 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:29:11.927 [DEBUG] [Thread-115769 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:29:26.959 [DEBUG] [Thread-115770 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:29:40.613 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:29:40.614 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:29:41.999 [DEBUG] [Thread-115771 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:29:57.030 [DEBUG] [Thread-115772 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:30:00.625 [DEBUG] [Thread-115773 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:30:07.969 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T12:30:12.064 [DEBUG] [Thread-115774 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:30:27.105 [DEBUG] [Thread-115775 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:30:38.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:30:38.016 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:30:38.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:30:38.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 30, 6), 43.82, 4.2, 0.0, 29.61, 25.01, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:30:38.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:30:06
2025-11-03T12:30:38.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:30:39.029 [DEBUG] [Thread-115776] [transport.py] [_log()] starting thread (client mode): 0xedd6fe0
2025-11-03T12:30:39.030 [DEBUG] [Thread-115776] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:30:39.044 [DEBUG] [Thread-115776] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:30:39.044 [INFO] [Thread-115776] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:30:39.049 [DEBUG] [Thread-115776] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:30:39.049 [DEBUG] [Thread-115776] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:30:39.049 [DEBUG] [Thread-115776] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:30:39.050 [DEBUG] [Thread-115776] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:30:39.050 [DEBUG] [Thread-115776] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:30:39.050 [DEBUG] [Thread-115776] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:30:39.050 [DEBUG] [Thread-115776] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:30:39.050 [DEBUG] [Thread-115776] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:30:39.050 [DEBUG] [Thread-115776] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:30:39.050 [DEBUG] [Thread-115776] [transport.py] [_log()] client lang: <none>
2025-11-03T12:30:39.050 [DEBUG] [Thread-115776] [transport.py] [_log()] server lang: <none>
2025-11-03T12:30:39.050 [DEBUG] [Thread-115776] [transport.py] [_log()] kex follows: False
2025-11-03T12:30:39.050 [DEBUG] [Thread-115776] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:30:39.051 [DEBUG] [Thread-115776] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:30:39.051 [DEBUG] [Thread-115776] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:30:39.051 [DEBUG] [Thread-115776] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:30:39.051 [DEBUG] [Thread-115776] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:30:39.051 [DEBUG] [Thread-115776] [transport.py] [_log()] Compression: none
2025-11-03T12:30:39.051 [DEBUG] [Thread-115776] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:30:39.089 [DEBUG] [Thread-115776] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:30:39.094 [DEBUG] [Thread-115776] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:30:39.096 [DEBUG] [Thread-115776] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:30:39.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:30:39.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:30:39.102 [DEBUG] [Thread-115776] [transport.py] [_log()] userauth is OK
2025-11-03T12:30:39.103 [DEBUG] [Thread-115776] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:30:39.103 [DEBUG] [Thread-115776] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:30:39.103 [DEBUG] [Thread-115776] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:30:39.104 [DEBUG] [Thread-115776] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:30:39.145 [INFO] [Thread-115776] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:30:39.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:30:39.783 [DEBUG] [Thread-115776] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:30:39.783 [DEBUG] [Thread-115776] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:30:39.784 [DEBUG] [Thread-115776] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:30:39.824 [DEBUG] [Thread-115776] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:30:39.825 [DEBUG] [Thread-115776] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:30:39.829 [DEBUG] [Thread-115776] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:30:39.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:30:39.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:30:39.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:30:39.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:30:39.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:30:39.854 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:30:39.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:30:39.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:30:39.856 [DEBUG] [Thread-115776] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:30:39.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:30:39.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.437604 -999.00  +24.70  25.50      9   -9.90 1 1 1 1 1   888    0 34.52 55.22 ----- 22.7 25.5 2.0 39.7 29.5 -28.8 28.6 -29.5 28.5 -27.2 28.9 -28.5
2025-11-03T12:30:39.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:30:39.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:30:39.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.437604
2025-11-03T12:30:39.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:30:39.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:30:39.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:30:39.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:30:39.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:30:39.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:30:06', tmtdew=43.82, humidity=4.2, cloud=0.0, wind=29.61, temperature=25.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:30:08.986', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:30:39.965 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:30:39.978 [DEBUG] [Thread-115779] [transport.py] [_log()] starting thread (client mode): 0xedd7c70
2025-11-03T12:30:39.978 [DEBUG] [Thread-115779] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:30:39.993 [DEBUG] [Thread-115779] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:30:39.993 [INFO] [Thread-115779] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:30:40.000 [DEBUG] [Thread-115779] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:30:40.001 [DEBUG] [Thread-115779] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:30:40.001 [DEBUG] [Thread-115779] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:30:40.001 [DEBUG] [Thread-115779] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:30:40.001 [DEBUG] [Thread-115779] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:30:40.001 [DEBUG] [Thread-115779] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:30:40.001 [DEBUG] [Thread-115779] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:30:40.001 [DEBUG] [Thread-115779] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:30:40.001 [DEBUG] [Thread-115779] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:30:40.001 [DEBUG] [Thread-115779] [transport.py] [_log()] client lang: <none>
2025-11-03T12:30:40.001 [DEBUG] [Thread-115779] [transport.py] [_log()] server lang: <none>
2025-11-03T12:30:40.001 [DEBUG] [Thread-115779] [transport.py] [_log()] kex follows: False
2025-11-03T12:30:40.001 [DEBUG] [Thread-115779] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:30:40.001 [DEBUG] [Thread-115779] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:30:40.001 [DEBUG] [Thread-115779] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:30:40.002 [DEBUG] [Thread-115779] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:30:40.002 [DEBUG] [Thread-115779] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:30:40.002 [DEBUG] [Thread-115779] [transport.py] [_log()] Compression: none
2025-11-03T12:30:40.002 [DEBUG] [Thread-115779] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:30:40.058 [DEBUG] [Thread-115779] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:30:40.058 [DEBUG] [Thread-115779] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:30:40.058 [DEBUG] [Thread-115779] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:30:40.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:30:40.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:30:40.116 [DEBUG] [Thread-115779] [transport.py] [_log()] userauth is OK
2025-11-03T12:30:40.116 [DEBUG] [Thread-115779] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:30:40.116 [DEBUG] [Thread-115779] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:30:40.117 [DEBUG] [Thread-115779] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:30:40.117 [DEBUG] [Thread-115779] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:30:40.137 [INFO] [Thread-115779] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:30:40.137 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:30:40.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:30:40.754 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:30:40.755 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:30:40.984 [DEBUG] [Thread-115779] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:30:40.984 [DEBUG] [Thread-115779] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:30:41.031 [DEBUG] [Thread-115779] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:30:41.031 [DEBUG] [Thread-115779] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:30:41.040 [DEBUG] [Thread-115779] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:30:41.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:30:41.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:30:41.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:30:41.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:30:41.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:30:41.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:30:41.074 [DEBUG] [Thread-115779] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:30:42.133 [DEBUG] [Thread-115781 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:30:57.215 [DEBUG] [Thread-115782 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:31:00.852 [DEBUG] [Thread-115783 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:31:11.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:31:11.096 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:31:11.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:31:11.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 30, 39), 43.66, 4.28, 0.0, 26.11, 24.88, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:31:11.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:30:39
2025-11-03T12:31:11.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:31:12.098 [DEBUG] [Thread-115784] [transport.py] [_log()] starting thread (client mode): 0xedd7e80
2025-11-03T12:31:12.098 [DEBUG] [Thread-115784] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:31:12.118 [DEBUG] [Thread-115784] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:31:12.118 [INFO] [Thread-115784] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:31:12.121 [DEBUG] [Thread-115784] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:31:12.121 [DEBUG] [Thread-115784] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:31:12.121 [DEBUG] [Thread-115784] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:31:12.121 [DEBUG] [Thread-115784] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:31:12.121 [DEBUG] [Thread-115784] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:31:12.121 [DEBUG] [Thread-115784] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:31:12.121 [DEBUG] [Thread-115784] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:31:12.121 [DEBUG] [Thread-115784] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:31:12.122 [DEBUG] [Thread-115784] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:31:12.122 [DEBUG] [Thread-115784] [transport.py] [_log()] client lang: <none>
2025-11-03T12:31:12.122 [DEBUG] [Thread-115784] [transport.py] [_log()] server lang: <none>
2025-11-03T12:31:12.122 [DEBUG] [Thread-115784] [transport.py] [_log()] kex follows: False
2025-11-03T12:31:12.122 [DEBUG] [Thread-115784] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:31:12.122 [DEBUG] [Thread-115784] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:31:12.122 [DEBUG] [Thread-115784] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:31:12.122 [DEBUG] [Thread-115784] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:31:12.122 [DEBUG] [Thread-115784] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:31:12.122 [DEBUG] [Thread-115784] [transport.py] [_log()] Compression: none
2025-11-03T12:31:12.122 [DEBUG] [Thread-115784] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:31:12.138 [DEBUG] [Thread-115784] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:31:12.138 [DEBUG] [Thread-115784] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:31:12.138 [DEBUG] [Thread-115784] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:31:12.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:31:12.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:31:12.139 [DEBUG] [Thread-115784] [transport.py] [_log()] userauth is OK
2025-11-03T12:31:12.140 [DEBUG] [Thread-115784] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:31:12.140 [DEBUG] [Thread-115784] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:31:12.140 [DEBUG] [Thread-115784] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:31:12.140 [DEBUG] [Thread-115784] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:31:12.152 [INFO] [Thread-115784] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:31:12.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:31:12.242 [DEBUG] [Thread-115786 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:31:12.752 [DEBUG] [Thread-115784] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:31:12.753 [DEBUG] [Thread-115784] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:31:12.753 [DEBUG] [Thread-115784] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:31:12.794 [DEBUG] [Thread-115784] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:31:12.794 [DEBUG] [Thread-115784] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:31:12.796 [DEBUG] [Thread-115784] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:31:12.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:31:12.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:31:12.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:31:12.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:31:12.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:31:12.814 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:31:12.815 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:31:12.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:31:12.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:31:12.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.437951 -999.00  +25.40  21.90      9   -9.30 1 1 1 1 1   888    0 35.35 64.92 ----- 25.2 21.9 341.2 36.0 29.5 -28.8 -999.0 -999.0 28.5 -27.3 29.2 -26.9
2025-11-03T12:31:12.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:31:12.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:31:12.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.437951
2025-11-03T12:31:12.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:31:12.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:31:12.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:31:12.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:31:12.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:31:12.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:30:39', tmtdew=43.66, humidity=4.28, cloud=0.0, wind=26.11, temperature=24.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:30:38.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:31:12.816 [DEBUG] [Thread-115784] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:31:12.890 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:31:12.902 [DEBUG] [Thread-115788] [transport.py] [_log()] starting thread (client mode): 0x117bd270
2025-11-03T12:31:12.902 [DEBUG] [Thread-115788] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:31:12.917 [DEBUG] [Thread-115788] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:31:12.917 [INFO] [Thread-115788] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:31:12.924 [DEBUG] [Thread-115788] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:31:12.924 [DEBUG] [Thread-115788] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:31:12.924 [DEBUG] [Thread-115788] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:31:12.924 [DEBUG] [Thread-115788] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:31:12.924 [DEBUG] [Thread-115788] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:31:12.924 [DEBUG] [Thread-115788] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:31:12.924 [DEBUG] [Thread-115788] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:31:12.924 [DEBUG] [Thread-115788] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:31:12.924 [DEBUG] [Thread-115788] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:31:12.925 [DEBUG] [Thread-115788] [transport.py] [_log()] client lang: <none>
2025-11-03T12:31:12.925 [DEBUG] [Thread-115788] [transport.py] [_log()] server lang: <none>
2025-11-03T12:31:12.925 [DEBUG] [Thread-115788] [transport.py] [_log()] kex follows: False
2025-11-03T12:31:12.925 [DEBUG] [Thread-115788] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:31:12.925 [DEBUG] [Thread-115788] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:31:12.925 [DEBUG] [Thread-115788] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:31:12.925 [DEBUG] [Thread-115788] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:31:12.925 [DEBUG] [Thread-115788] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:31:12.925 [DEBUG] [Thread-115788] [transport.py] [_log()] Compression: none
2025-11-03T12:31:12.925 [DEBUG] [Thread-115788] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:31:12.982 [DEBUG] [Thread-115788] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:31:12.982 [DEBUG] [Thread-115788] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:31:12.982 [DEBUG] [Thread-115788] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:31:12.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:31:12.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:31:13.039 [DEBUG] [Thread-115788] [transport.py] [_log()] userauth is OK
2025-11-03T12:31:13.039 [DEBUG] [Thread-115788] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:31:13.039 [DEBUG] [Thread-115788] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:31:13.039 [DEBUG] [Thread-115788] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:31:13.039 [DEBUG] [Thread-115788] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:31:13.053 [INFO] [Thread-115788] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:31:13.053 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:31:13.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:31:13.899 [DEBUG] [Thread-115788] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:31:13.899 [DEBUG] [Thread-115788] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:31:13.952 [DEBUG] [Thread-115788] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:31:13.952 [DEBUG] [Thread-115788] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:31:13.967 [DEBUG] [Thread-115788] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:31:13.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:31:13.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:31:13.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:31:14.006 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:31:14.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:31:14.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:31:14.022 [DEBUG] [Thread-115788] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:31:27.275 [DEBUG] [Thread-115790 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:31:40.894 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:31:40.895 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:31:42.329 [DEBUG] [Thread-115791 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:31:44.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:31:44.036 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:31:44.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:31:44.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 31, 12), 43.59, 4.3, 0.0, 22.16, 24.78, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:31:44.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:31:12
2025-11-03T12:31:44.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:31:45.013 [DEBUG] [Thread-115792] [transport.py] [_log()] starting thread (client mode): 0xedd46d0
2025-11-03T12:31:45.014 [DEBUG] [Thread-115792] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:31:45.034 [DEBUG] [Thread-115792] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:31:45.034 [INFO] [Thread-115792] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:31:45.037 [DEBUG] [Thread-115792] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:31:45.037 [DEBUG] [Thread-115792] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:31:45.037 [DEBUG] [Thread-115792] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:31:45.037 [DEBUG] [Thread-115792] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:31:45.037 [DEBUG] [Thread-115792] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:31:45.037 [DEBUG] [Thread-115792] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:31:45.037 [DEBUG] [Thread-115792] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:31:45.037 [DEBUG] [Thread-115792] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:31:45.037 [DEBUG] [Thread-115792] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:31:45.037 [DEBUG] [Thread-115792] [transport.py] [_log()] client lang: <none>
2025-11-03T12:31:45.037 [DEBUG] [Thread-115792] [transport.py] [_log()] server lang: <none>
2025-11-03T12:31:45.037 [DEBUG] [Thread-115792] [transport.py] [_log()] kex follows: False
2025-11-03T12:31:45.037 [DEBUG] [Thread-115792] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:31:45.037 [DEBUG] [Thread-115792] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:31:45.037 [DEBUG] [Thread-115792] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:31:45.037 [DEBUG] [Thread-115792] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:31:45.038 [DEBUG] [Thread-115792] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:31:45.038 [DEBUG] [Thread-115792] [transport.py] [_log()] Compression: none
2025-11-03T12:31:45.038 [DEBUG] [Thread-115792] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:31:45.054 [DEBUG] [Thread-115792] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:31:45.055 [DEBUG] [Thread-115792] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:31:45.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:31:45.055 [DEBUG] [Thread-115792] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:31:45.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:31:45.056 [DEBUG] [Thread-115792] [transport.py] [_log()] userauth is OK
2025-11-03T12:31:45.056 [DEBUG] [Thread-115792] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:31:45.056 [DEBUG] [Thread-115792] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:31:45.056 [DEBUG] [Thread-115792] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:31:45.056 [DEBUG] [Thread-115792] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:31:45.070 [INFO] [Thread-115792] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:31:45.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:31:45.701 [DEBUG] [Thread-115792] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:31:45.702 [DEBUG] [Thread-115792] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:31:45.702 [DEBUG] [Thread-115792] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:31:45.743 [DEBUG] [Thread-115792] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:31:45.743 [DEBUG] [Thread-115792] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:31:45.745 [DEBUG] [Thread-115792] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:31:45.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:31:45.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:31:45.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:31:45.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:31:45.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:31:45.763 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:31:45.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:31:45.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:31:45.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:31:45.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.438298 -999.00  +24.40  32.03      9  -10.10 1 1 2 1 1   888    0 35.14 66.66 ----- 26.7 32.0 318.4 39.5 29.5 -29.8 28.6 -29.8 28.6 -29.1 29.2 -28.2
2025-11-03T12:31:45.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:31:45.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:31:45.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.438298
2025-11-03T12:31:45.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:31:45.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:31:45.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:31:45.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:31:45.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:31:45.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:31:12', tmtdew=43.59, humidity=4.3, cloud=0.0, wind=22.16, temperature=24.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:31:08.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:31:45.764 [DEBUG] [Thread-115792] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:31:45.838 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:31:45.849 [DEBUG] [Thread-115795] [transport.py] [_log()] starting thread (client mode): 0xedd7c70
2025-11-03T12:31:45.849 [DEBUG] [Thread-115795] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:31:45.865 [DEBUG] [Thread-115795] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:31:45.865 [INFO] [Thread-115795] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:31:45.872 [DEBUG] [Thread-115795] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:31:45.872 [DEBUG] [Thread-115795] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:31:45.872 [DEBUG] [Thread-115795] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:31:45.872 [DEBUG] [Thread-115795] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:31:45.872 [DEBUG] [Thread-115795] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:31:45.872 [DEBUG] [Thread-115795] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:31:45.872 [DEBUG] [Thread-115795] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:31:45.872 [DEBUG] [Thread-115795] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:31:45.872 [DEBUG] [Thread-115795] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:31:45.872 [DEBUG] [Thread-115795] [transport.py] [_log()] client lang: <none>
2025-11-03T12:31:45.873 [DEBUG] [Thread-115795] [transport.py] [_log()] server lang: <none>
2025-11-03T12:31:45.873 [DEBUG] [Thread-115795] [transport.py] [_log()] kex follows: False
2025-11-03T12:31:45.873 [DEBUG] [Thread-115795] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:31:45.873 [DEBUG] [Thread-115795] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:31:45.873 [DEBUG] [Thread-115795] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:31:45.873 [DEBUG] [Thread-115795] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:31:45.873 [DEBUG] [Thread-115795] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:31:45.873 [DEBUG] [Thread-115795] [transport.py] [_log()] Compression: none
2025-11-03T12:31:45.873 [DEBUG] [Thread-115795] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:31:45.930 [DEBUG] [Thread-115795] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:31:45.930 [DEBUG] [Thread-115795] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:31:45.930 [DEBUG] [Thread-115795] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:31:45.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:31:45.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:31:45.987 [DEBUG] [Thread-115795] [transport.py] [_log()] userauth is OK
2025-11-03T12:31:45.987 [DEBUG] [Thread-115795] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:31:45.987 [DEBUG] [Thread-115795] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:31:45.987 [DEBUG] [Thread-115795] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:31:45.987 [DEBUG] [Thread-115795] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:31:46.000 [INFO] [Thread-115795] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:31:46.001 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:31:46.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:31:46.826 [DEBUG] [Thread-115795] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:31:46.826 [DEBUG] [Thread-115795] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:31:46.874 [DEBUG] [Thread-115795] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:31:46.874 [DEBUG] [Thread-115795] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:31:46.882 [DEBUG] [Thread-115795] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:31:46.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:31:46.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:31:46.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:31:46.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:31:46.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:31:46.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:31:46.914 [DEBUG] [Thread-115795] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:31:57.372 [DEBUG] [Thread-115797 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:32:00.977 [DEBUG] [Thread-115798 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:32:12.437 [DEBUG] [Thread-115799 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:32:16.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:32:16.931 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:32:16.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:32:17.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 31, 44), 43.44, 4.35, 0.0, 21.77, 24.46, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:32:17.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:31:44
2025-11-03T12:32:17.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:32:17.928 [DEBUG] [Thread-115800] [transport.py] [_log()] starting thread (client mode): 0x117802b0
2025-11-03T12:32:17.928 [DEBUG] [Thread-115800] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:32:17.948 [DEBUG] [Thread-115800] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:32:17.948 [INFO] [Thread-115800] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:32:17.951 [DEBUG] [Thread-115800] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:32:17.951 [DEBUG] [Thread-115800] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:32:17.951 [DEBUG] [Thread-115800] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:32:17.951 [DEBUG] [Thread-115800] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:32:17.951 [DEBUG] [Thread-115800] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:32:17.951 [DEBUG] [Thread-115800] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:32:17.951 [DEBUG] [Thread-115800] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:32:17.951 [DEBUG] [Thread-115800] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:32:17.951 [DEBUG] [Thread-115800] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:32:17.951 [DEBUG] [Thread-115800] [transport.py] [_log()] client lang: <none>
2025-11-03T12:32:17.951 [DEBUG] [Thread-115800] [transport.py] [_log()] server lang: <none>
2025-11-03T12:32:17.951 [DEBUG] [Thread-115800] [transport.py] [_log()] kex follows: False
2025-11-03T12:32:17.951 [DEBUG] [Thread-115800] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:32:17.951 [DEBUG] [Thread-115800] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:32:17.951 [DEBUG] [Thread-115800] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:32:17.952 [DEBUG] [Thread-115800] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:32:17.952 [DEBUG] [Thread-115800] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:32:17.952 [DEBUG] [Thread-115800] [transport.py] [_log()] Compression: none
2025-11-03T12:32:17.952 [DEBUG] [Thread-115800] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:32:17.968 [DEBUG] [Thread-115800] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:32:17.968 [DEBUG] [Thread-115800] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:32:17.968 [DEBUG] [Thread-115800] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:32:17.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:32:17.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:32:17.969 [DEBUG] [Thread-115800] [transport.py] [_log()] userauth is OK
2025-11-03T12:32:17.969 [DEBUG] [Thread-115800] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:32:17.969 [DEBUG] [Thread-115800] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:32:17.969 [DEBUG] [Thread-115800] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:32:17.969 [DEBUG] [Thread-115800] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:32:17.978 [INFO] [Thread-115800] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:32:17.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:32:18.592 [DEBUG] [Thread-115800] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:32:18.592 [DEBUG] [Thread-115800] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:32:18.592 [DEBUG] [Thread-115800] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:32:18.634 [DEBUG] [Thread-115800] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:32:18.634 [DEBUG] [Thread-115800] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:32:18.636 [DEBUG] [Thread-115800] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:32:18.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:32:18.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:32:18.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:32:18.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:32:18.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:32:18.654 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:32:18.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:32:18.654 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:32:18.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:32:18.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.438993 -999.00  +24.80  35.05      9   -9.70 1 1 2 1 1   888    0 35.25 71.36 ----- 35.6 35.0 322.8 37.8 29.6 -28.4 28.8 -27.3 28.6 -27.4 29.5 -28.5
2025-11-03T12:32:18.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:32:18.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:32:18.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.438993
2025-11-03T12:32:18.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:32:18.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:32:18.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:32:18.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:32:18.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:32:18.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:31:44', tmtdew=43.44, humidity=4.35, cloud=0.0, wind=21.77, temperature=24.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:32:08.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:32:18.656 [DEBUG] [Thread-115800] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:32:18.730 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:32:18.743 [DEBUG] [Thread-115803] [transport.py] [_log()] starting thread (client mode): 0x11780610
2025-11-03T12:32:18.743 [DEBUG] [Thread-115803] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:32:18.758 [DEBUG] [Thread-115803] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:32:18.758 [INFO] [Thread-115803] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:32:18.766 [DEBUG] [Thread-115803] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:32:18.766 [DEBUG] [Thread-115803] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:32:18.766 [DEBUG] [Thread-115803] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:32:18.766 [DEBUG] [Thread-115803] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:32:18.766 [DEBUG] [Thread-115803] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:32:18.766 [DEBUG] [Thread-115803] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:32:18.766 [DEBUG] [Thread-115803] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:32:18.766 [DEBUG] [Thread-115803] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:32:18.766 [DEBUG] [Thread-115803] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:32:18.766 [DEBUG] [Thread-115803] [transport.py] [_log()] client lang: <none>
2025-11-03T12:32:18.766 [DEBUG] [Thread-115803] [transport.py] [_log()] server lang: <none>
2025-11-03T12:32:18.766 [DEBUG] [Thread-115803] [transport.py] [_log()] kex follows: False
2025-11-03T12:32:18.766 [DEBUG] [Thread-115803] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:32:18.766 [DEBUG] [Thread-115803] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:32:18.766 [DEBUG] [Thread-115803] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:32:18.766 [DEBUG] [Thread-115803] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:32:18.766 [DEBUG] [Thread-115803] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:32:18.766 [DEBUG] [Thread-115803] [transport.py] [_log()] Compression: none
2025-11-03T12:32:18.766 [DEBUG] [Thread-115803] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:32:18.827 [DEBUG] [Thread-115803] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:32:18.827 [DEBUG] [Thread-115803] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:32:18.827 [DEBUG] [Thread-115803] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:32:18.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:32:18.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:32:18.885 [DEBUG] [Thread-115803] [transport.py] [_log()] userauth is OK
2025-11-03T12:32:18.885 [DEBUG] [Thread-115803] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:32:18.885 [DEBUG] [Thread-115803] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:32:18.885 [DEBUG] [Thread-115803] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:32:18.885 [DEBUG] [Thread-115803] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:32:18.903 [INFO] [Thread-115803] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:32:18.903 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:32:18.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:32:19.805 [DEBUG] [Thread-115803] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:32:19.805 [DEBUG] [Thread-115803] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:32:19.858 [DEBUG] [Thread-115803] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:32:19.858 [DEBUG] [Thread-115803] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:32:19.878 [DEBUG] [Thread-115803] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:32:19.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:32:19.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:32:19.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:32:19.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:32:19.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:32:19.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:32:19.928 [DEBUG] [Thread-115803] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:32:27.467 [DEBUG] [Thread-115805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:32:41.044 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:32:41.046 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:32:42.510 [DEBUG] [Thread-115806 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:32:49.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:32:49.948 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:32:49.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:32:50.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 32, 16), 43.39, 4.37, 0.0, 21.24, 24.41, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:32:50.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:32:16
2025-11-03T12:32:50.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:32:50.989 [DEBUG] [Thread-115807] [transport.py] [_log()] starting thread (client mode): 0x117825f0
2025-11-03T12:32:50.989 [DEBUG] [Thread-115807] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:32:51.009 [DEBUG] [Thread-115807] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:32:51.009 [INFO] [Thread-115807] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:32:51.012 [DEBUG] [Thread-115807] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:32:51.012 [DEBUG] [Thread-115807] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:32:51.012 [DEBUG] [Thread-115807] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:32:51.012 [DEBUG] [Thread-115807] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:32:51.012 [DEBUG] [Thread-115807] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:32:51.012 [DEBUG] [Thread-115807] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:32:51.012 [DEBUG] [Thread-115807] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:32:51.012 [DEBUG] [Thread-115807] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:32:51.012 [DEBUG] [Thread-115807] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:32:51.012 [DEBUG] [Thread-115807] [transport.py] [_log()] client lang: <none>
2025-11-03T12:32:51.012 [DEBUG] [Thread-115807] [transport.py] [_log()] server lang: <none>
2025-11-03T12:32:51.012 [DEBUG] [Thread-115807] [transport.py] [_log()] kex follows: False
2025-11-03T12:32:51.012 [DEBUG] [Thread-115807] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:32:51.012 [DEBUG] [Thread-115807] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:32:51.012 [DEBUG] [Thread-115807] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:32:51.012 [DEBUG] [Thread-115807] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:32:51.012 [DEBUG] [Thread-115807] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:32:51.012 [DEBUG] [Thread-115807] [transport.py] [_log()] Compression: none
2025-11-03T12:32:51.012 [DEBUG] [Thread-115807] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:32:51.028 [DEBUG] [Thread-115807] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:32:51.028 [DEBUG] [Thread-115807] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:32:51.028 [DEBUG] [Thread-115807] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:32:51.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:32:51.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:32:51.029 [DEBUG] [Thread-115807] [transport.py] [_log()] userauth is OK
2025-11-03T12:32:51.029 [DEBUG] [Thread-115807] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:32:51.029 [DEBUG] [Thread-115807] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:32:51.029 [DEBUG] [Thread-115807] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:32:51.029 [DEBUG] [Thread-115807] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:32:51.038 [INFO] [Thread-115807] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:32:51.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:32:51.637 [DEBUG] [Thread-115807] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:32:51.637 [DEBUG] [Thread-115807] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:32:51.637 [DEBUG] [Thread-115807] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:32:51.678 [DEBUG] [Thread-115807] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:32:51.678 [DEBUG] [Thread-115807] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:32:51.681 [DEBUG] [Thread-115807] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:32:51.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:32:51.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:32:51.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:32:51.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:32:51.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:32:51.698 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:32:51.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:32:51.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:32:51.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:32:51.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.439340 -999.00  +25.00  28.12      9   -9.50 1 1 1 1 1   888    0 35.54 76.29 ----- 29.1 28.1 324.6 35.0 29.7 -29.4 28.8 -27.8 28.7 -27.6 29.6 -27.4
2025-11-03T12:32:51.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:32:51.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:32:51.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.439340
2025-11-03T12:32:51.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:32:51.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:32:51.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:32:51.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:32:51.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:32:51.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:32:16', tmtdew=43.39, humidity=4.37, cloud=0.0, wind=21.24, temperature=24.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:32:38.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:32:51.699 [DEBUG] [Thread-115807] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:32:51.773 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:32:51.785 [DEBUG] [Thread-115810] [transport.py] [_log()] starting thread (client mode): 0x117be170
2025-11-03T12:32:51.785 [DEBUG] [Thread-115810] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:32:51.800 [DEBUG] [Thread-115810] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:32:51.800 [INFO] [Thread-115810] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:32:51.807 [DEBUG] [Thread-115810] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:32:51.808 [DEBUG] [Thread-115810] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:32:51.808 [DEBUG] [Thread-115810] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:32:51.808 [DEBUG] [Thread-115810] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:32:51.808 [DEBUG] [Thread-115810] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:32:51.808 [DEBUG] [Thread-115810] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:32:51.808 [DEBUG] [Thread-115810] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:32:51.808 [DEBUG] [Thread-115810] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:32:51.808 [DEBUG] [Thread-115810] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:32:51.809 [DEBUG] [Thread-115810] [transport.py] [_log()] client lang: <none>
2025-11-03T12:32:51.809 [DEBUG] [Thread-115810] [transport.py] [_log()] server lang: <none>
2025-11-03T12:32:51.809 [DEBUG] [Thread-115810] [transport.py] [_log()] kex follows: False
2025-11-03T12:32:51.809 [DEBUG] [Thread-115810] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:32:51.809 [DEBUG] [Thread-115810] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:32:51.809 [DEBUG] [Thread-115810] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:32:51.809 [DEBUG] [Thread-115810] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:32:51.809 [DEBUG] [Thread-115810] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:32:51.810 [DEBUG] [Thread-115810] [transport.py] [_log()] Compression: none
2025-11-03T12:32:51.810 [DEBUG] [Thread-115810] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:32:51.867 [DEBUG] [Thread-115810] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:32:51.867 [DEBUG] [Thread-115810] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:32:51.867 [DEBUG] [Thread-115810] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:32:51.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:32:51.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:32:51.923 [DEBUG] [Thread-115810] [transport.py] [_log()] userauth is OK
2025-11-03T12:32:51.923 [DEBUG] [Thread-115810] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:32:51.923 [DEBUG] [Thread-115810] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:32:51.923 [DEBUG] [Thread-115810] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:32:51.923 [DEBUG] [Thread-115810] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:32:51.937 [INFO] [Thread-115810] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:32:51.937 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:32:51.937 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:32:52.782 [DEBUG] [Thread-115810] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:32:52.783 [DEBUG] [Thread-115810] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:32:52.831 [DEBUG] [Thread-115810] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:32:52.831 [DEBUG] [Thread-115810] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:32:52.841 [DEBUG] [Thread-115810] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:32:52.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:32:52.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:32:52.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:32:52.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:32:52.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:32:52.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:32:52.877 [DEBUG] [Thread-115810] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:32:57.545 [DEBUG] [Thread-115812 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:33:01.069 [DEBUG] [Thread-115813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:33:12.578 [DEBUG] [Thread-115814 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:33:22.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:33:22.899 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:33:22.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:33:23.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 32, 48), 42.91, 4.43, 0.0, 32.17, 24.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:33:23.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:32:48
2025-11-03T12:33:23.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:33:23.949 [DEBUG] [Thread-115815] [transport.py] [_log()] starting thread (client mode): 0xedd4f70
2025-11-03T12:33:23.949 [DEBUG] [Thread-115815] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:33:23.970 [DEBUG] [Thread-115815] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:33:23.970 [INFO] [Thread-115815] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:33:23.973 [DEBUG] [Thread-115815] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:33:23.973 [DEBUG] [Thread-115815] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:33:23.973 [DEBUG] [Thread-115815] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:33:23.973 [DEBUG] [Thread-115815] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:33:23.973 [DEBUG] [Thread-115815] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:33:23.973 [DEBUG] [Thread-115815] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:33:23.973 [DEBUG] [Thread-115815] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:33:23.973 [DEBUG] [Thread-115815] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:33:23.973 [DEBUG] [Thread-115815] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:33:23.973 [DEBUG] [Thread-115815] [transport.py] [_log()] client lang: <none>
2025-11-03T12:33:23.973 [DEBUG] [Thread-115815] [transport.py] [_log()] server lang: <none>
2025-11-03T12:33:23.973 [DEBUG] [Thread-115815] [transport.py] [_log()] kex follows: False
2025-11-03T12:33:23.973 [DEBUG] [Thread-115815] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:33:23.973 [DEBUG] [Thread-115815] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:33:23.973 [DEBUG] [Thread-115815] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:33:23.973 [DEBUG] [Thread-115815] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:33:23.973 [DEBUG] [Thread-115815] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:33:23.973 [DEBUG] [Thread-115815] [transport.py] [_log()] Compression: none
2025-11-03T12:33:23.973 [DEBUG] [Thread-115815] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:33:23.989 [DEBUG] [Thread-115815] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:33:23.989 [DEBUG] [Thread-115815] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:33:23.989 [DEBUG] [Thread-115815] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:33:23.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:33:23.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:33:23.990 [DEBUG] [Thread-115815] [transport.py] [_log()] userauth is OK
2025-11-03T12:33:23.990 [DEBUG] [Thread-115815] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:33:23.990 [DEBUG] [Thread-115815] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:33:23.990 [DEBUG] [Thread-115815] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:33:23.990 [DEBUG] [Thread-115815] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:33:23.999 [INFO] [Thread-115815] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:33:23.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:33:24.621 [DEBUG] [Thread-115815] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:33:24.622 [DEBUG] [Thread-115815] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:33:24.622 [DEBUG] [Thread-115815] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:33:24.663 [DEBUG] [Thread-115815] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:33:24.663 [DEBUG] [Thread-115815] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:33:24.667 [DEBUG] [Thread-115815] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:33:24.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:33:24.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:33:24.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:33:24.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:33:24.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:33:24.689 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:33:24.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:33:24.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:33:24.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:33:24.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.439687 -999.00  +25.10  28.36      9   -9.90 1 1 1 1 1   888    0 36.08 87.57 ----- 24.6 28.4 329.6 40.5 29.8 -29.4 28.9 -29.0 28.8 -27.8 29.6 -28.3
2025-11-03T12:33:24.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:33:24.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:33:24.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.439687
2025-11-03T12:33:24.698 [DEBUG] [Thread-115815] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:33:24.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:33:24.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:33:24.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:33:24.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:33:24.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:33:24.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:32:48', tmtdew=42.91, humidity=4.43, cloud=0.0, wind=32.17, temperature=24.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:33:08.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:33:24.785 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:33:24.798 [DEBUG] [Thread-115818] [transport.py] [_log()] starting thread (client mode): 0x11780610
2025-11-03T12:33:24.799 [DEBUG] [Thread-115818] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:33:24.813 [DEBUG] [Thread-115818] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:33:24.814 [INFO] [Thread-115818] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:33:24.821 [DEBUG] [Thread-115818] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:33:24.822 [DEBUG] [Thread-115818] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:33:24.822 [DEBUG] [Thread-115818] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:33:24.822 [DEBUG] [Thread-115818] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:33:24.822 [DEBUG] [Thread-115818] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:33:24.822 [DEBUG] [Thread-115818] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:33:24.822 [DEBUG] [Thread-115818] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:33:24.822 [DEBUG] [Thread-115818] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:33:24.822 [DEBUG] [Thread-115818] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:33:24.822 [DEBUG] [Thread-115818] [transport.py] [_log()] client lang: <none>
2025-11-03T12:33:24.822 [DEBUG] [Thread-115818] [transport.py] [_log()] server lang: <none>
2025-11-03T12:33:24.822 [DEBUG] [Thread-115818] [transport.py] [_log()] kex follows: False
2025-11-03T12:33:24.822 [DEBUG] [Thread-115818] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:33:24.822 [DEBUG] [Thread-115818] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:33:24.822 [DEBUG] [Thread-115818] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:33:24.822 [DEBUG] [Thread-115818] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:33:24.822 [DEBUG] [Thread-115818] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:33:24.822 [DEBUG] [Thread-115818] [transport.py] [_log()] Compression: none
2025-11-03T12:33:24.823 [DEBUG] [Thread-115818] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:33:24.880 [DEBUG] [Thread-115818] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:33:24.880 [DEBUG] [Thread-115818] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:33:24.881 [DEBUG] [Thread-115818] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:33:24.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:33:24.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:33:24.935 [DEBUG] [Thread-115818] [transport.py] [_log()] userauth is OK
2025-11-03T12:33:24.935 [DEBUG] [Thread-115818] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:33:24.935 [DEBUG] [Thread-115818] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:33:24.935 [DEBUG] [Thread-115818] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:33:24.935 [DEBUG] [Thread-115818] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:33:24.958 [INFO] [Thread-115818] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:33:24.959 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:33:24.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:33:25.792 [DEBUG] [Thread-115818] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:33:25.792 [DEBUG] [Thread-115818] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:33:25.839 [DEBUG] [Thread-115818] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:33:25.840 [DEBUG] [Thread-115818] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:33:25.848 [DEBUG] [Thread-115818] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:33:25.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:33:25.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:33:25.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:33:25.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:33:25.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:33:25.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:33:25.880 [DEBUG] [Thread-115818] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:33:27.612 [DEBUG] [Thread-115820 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:33:41.186 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:33:41.187 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:33:42.669 [DEBUG] [Thread-115821 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:33:55.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:33:55.902 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:33:55.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:33:56.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 33, 21), 43.66, 4.15, 0.0, 35.38, 24.49, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:33:56.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:33:21
2025-11-03T12:33:56.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:33:56.898 [DEBUG] [Thread-115822] [transport.py] [_log()] starting thread (client mode): 0xedd6140
2025-11-03T12:33:56.899 [DEBUG] [Thread-115822] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:33:56.919 [DEBUG] [Thread-115822] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:33:56.919 [INFO] [Thread-115822] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:33:56.922 [DEBUG] [Thread-115822] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:33:56.922 [DEBUG] [Thread-115822] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:33:56.922 [DEBUG] [Thread-115822] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:33:56.922 [DEBUG] [Thread-115822] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:33:56.922 [DEBUG] [Thread-115822] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:33:56.922 [DEBUG] [Thread-115822] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:33:56.922 [DEBUG] [Thread-115822] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:33:56.922 [DEBUG] [Thread-115822] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:33:56.922 [DEBUG] [Thread-115822] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:33:56.922 [DEBUG] [Thread-115822] [transport.py] [_log()] client lang: <none>
2025-11-03T12:33:56.922 [DEBUG] [Thread-115822] [transport.py] [_log()] server lang: <none>
2025-11-03T12:33:56.922 [DEBUG] [Thread-115822] [transport.py] [_log()] kex follows: False
2025-11-03T12:33:56.922 [DEBUG] [Thread-115822] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:33:56.922 [DEBUG] [Thread-115822] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:33:56.922 [DEBUG] [Thread-115822] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:33:56.923 [DEBUG] [Thread-115822] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:33:56.923 [DEBUG] [Thread-115822] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:33:56.923 [DEBUG] [Thread-115822] [transport.py] [_log()] Compression: none
2025-11-03T12:33:56.923 [DEBUG] [Thread-115822] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:33:56.942 [DEBUG] [Thread-115822] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:33:56.943 [DEBUG] [Thread-115822] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:33:56.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:33:56.944 [DEBUG] [Thread-115822] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:33:56.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:33:56.946 [DEBUG] [Thread-115822] [transport.py] [_log()] userauth is OK
2025-11-03T12:33:56.946 [DEBUG] [Thread-115822] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:33:56.946 [DEBUG] [Thread-115822] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:33:56.946 [DEBUG] [Thread-115822] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:33:56.946 [DEBUG] [Thread-115822] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:33:56.970 [INFO] [Thread-115822] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:33:56.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:33:57.613 [DEBUG] [Thread-115822] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:33:57.613 [DEBUG] [Thread-115822] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:33:57.613 [DEBUG] [Thread-115822] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:33:57.654 [DEBUG] [Thread-115822] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:33:57.654 [DEBUG] [Thread-115822] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:33:57.657 [DEBUG] [Thread-115822] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:33:57.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:33:57.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:33:57.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:33:57.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:33:57.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:33:57.681 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:33:57.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:33:57.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:33:57.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:33:57.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.440034 -999.00  +24.90  29.56      9  -10.00 1 1 1 1 1   888    0 35.56 92.15 ----- 17.8 29.6 327.6 32.6 29.8 -28.5 28.9 -28.2 28.8 -27.6 29.7 -28.3
2025-11-03T12:33:57.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:33:57.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:33:57.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.440034
2025-11-03T12:33:57.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:33:57.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:33:57.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:33:57.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:33:57.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:33:57.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:33:21', tmtdew=43.66, humidity=4.15, cloud=0.0, wind=35.38, temperature=24.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:33:38.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:33:57.684 [DEBUG] [Thread-115822] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:33:57.702 [DEBUG] [Thread-115825 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:33:57.769 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:33:57.781 [DEBUG] [Thread-115826] [transport.py] [_log()] starting thread (client mode): 0xedd74f0
2025-11-03T12:33:57.781 [DEBUG] [Thread-115826] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:33:57.796 [DEBUG] [Thread-115826] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:33:57.796 [INFO] [Thread-115826] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:33:57.804 [DEBUG] [Thread-115826] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:33:57.804 [DEBUG] [Thread-115826] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:33:57.804 [DEBUG] [Thread-115826] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:33:57.804 [DEBUG] [Thread-115826] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:33:57.804 [DEBUG] [Thread-115826] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:33:57.804 [DEBUG] [Thread-115826] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:33:57.804 [DEBUG] [Thread-115826] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:33:57.804 [DEBUG] [Thread-115826] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:33:57.804 [DEBUG] [Thread-115826] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:33:57.804 [DEBUG] [Thread-115826] [transport.py] [_log()] client lang: <none>
2025-11-03T12:33:57.804 [DEBUG] [Thread-115826] [transport.py] [_log()] server lang: <none>
2025-11-03T12:33:57.804 [DEBUG] [Thread-115826] [transport.py] [_log()] kex follows: False
2025-11-03T12:33:57.804 [DEBUG] [Thread-115826] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:33:57.804 [DEBUG] [Thread-115826] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:33:57.804 [DEBUG] [Thread-115826] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:33:57.804 [DEBUG] [Thread-115826] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:33:57.805 [DEBUG] [Thread-115826] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:33:57.805 [DEBUG] [Thread-115826] [transport.py] [_log()] Compression: none
2025-11-03T12:33:57.805 [DEBUG] [Thread-115826] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:33:57.864 [DEBUG] [Thread-115826] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:33:57.864 [DEBUG] [Thread-115826] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:33:57.865 [DEBUG] [Thread-115826] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:33:57.865 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:33:57.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:33:57.920 [DEBUG] [Thread-115826] [transport.py] [_log()] userauth is OK
2025-11-03T12:33:57.921 [DEBUG] [Thread-115826] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:33:57.921 [DEBUG] [Thread-115826] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:33:57.921 [DEBUG] [Thread-115826] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:33:57.921 [DEBUG] [Thread-115826] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:33:57.940 [INFO] [Thread-115826] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:33:57.941 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:33:57.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:33:58.795 [DEBUG] [Thread-115826] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:33:58.796 [DEBUG] [Thread-115826] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:33:58.844 [DEBUG] [Thread-115826] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:33:58.844 [DEBUG] [Thread-115826] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:33:58.853 [DEBUG] [Thread-115826] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:33:58.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:33:58.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:33:58.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:33:58.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:33:58.880 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:33:58.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:33:58.890 [DEBUG] [Thread-115826] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:34:01.130 [DEBUG] [Thread-115828 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:34:12.746 [DEBUG] [Thread-115829 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:34:27.780 [DEBUG] [Thread-115830 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:34:28.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:34:28.911 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:34:28.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:34:29.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 34, 25), 43.06, 4.77, 0.0, 26.09, 24.21, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:34:29.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:34:25
2025-11-03T12:34:29.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:34:29.894 [DEBUG] [Thread-115831] [transport.py] [_log()] starting thread (client mode): 0x81b86d0
2025-11-03T12:34:29.894 [DEBUG] [Thread-115831] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:34:29.913 [DEBUG] [Thread-115831] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:34:29.913 [INFO] [Thread-115831] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:34:29.916 [DEBUG] [Thread-115831] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:34:29.916 [DEBUG] [Thread-115831] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:34:29.916 [DEBUG] [Thread-115831] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:34:29.916 [DEBUG] [Thread-115831] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:34:29.916 [DEBUG] [Thread-115831] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:34:29.916 [DEBUG] [Thread-115831] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:34:29.916 [DEBUG] [Thread-115831] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:34:29.916 [DEBUG] [Thread-115831] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:34:29.916 [DEBUG] [Thread-115831] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:34:29.916 [DEBUG] [Thread-115831] [transport.py] [_log()] client lang: <none>
2025-11-03T12:34:29.916 [DEBUG] [Thread-115831] [transport.py] [_log()] server lang: <none>
2025-11-03T12:34:29.916 [DEBUG] [Thread-115831] [transport.py] [_log()] kex follows: False
2025-11-03T12:34:29.916 [DEBUG] [Thread-115831] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:34:29.916 [DEBUG] [Thread-115831] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:34:29.916 [DEBUG] [Thread-115831] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:34:29.916 [DEBUG] [Thread-115831] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:34:29.916 [DEBUG] [Thread-115831] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:34:29.916 [DEBUG] [Thread-115831] [transport.py] [_log()] Compression: none
2025-11-03T12:34:29.916 [DEBUG] [Thread-115831] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:34:29.931 [DEBUG] [Thread-115831] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:34:29.931 [DEBUG] [Thread-115831] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:34:29.931 [DEBUG] [Thread-115831] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:34:29.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:34:29.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:34:29.932 [DEBUG] [Thread-115831] [transport.py] [_log()] userauth is OK
2025-11-03T12:34:29.932 [DEBUG] [Thread-115831] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:34:29.932 [DEBUG] [Thread-115831] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:34:29.932 [DEBUG] [Thread-115831] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:34:29.932 [DEBUG] [Thread-115831] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:34:29.947 [INFO] [Thread-115831] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:34:29.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:34:30.588 [DEBUG] [Thread-115831] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:34:30.588 [DEBUG] [Thread-115831] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:34:30.588 [DEBUG] [Thread-115831] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:34:30.628 [DEBUG] [Thread-115831] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:34:30.628 [DEBUG] [Thread-115831] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:34:30.631 [DEBUG] [Thread-115831] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:34:30.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:34:30.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:34:30.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:34:30.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:34:30.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:34:30.649 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:34:30.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:34:30.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:34:30.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:34:30.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.440381 -999.00  +24.70  25.24      9  -10.00 1 1 1 1 1   888    0 36.88 97.20 ----- 27.6 25.2 340.9 33.3 29.9 -29.5 29.0 -29.5 28.9 -28.3 29.8 -28.7
2025-11-03T12:34:30.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:34:30.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:34:30.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.440381
2025-11-03T12:34:30.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:34:30.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:34:30.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:34:30.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:34:30.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:34:30.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:34:25', tmtdew=43.06, humidity=4.77, cloud=0.0, wind=26.09, temperature=24.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:34:08.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:34:30.651 [DEBUG] [Thread-115831] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:34:30.727 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:34:30.739 [DEBUG] [Thread-115834] [transport.py] [_log()] starting thread (client mode): 0x11781480
2025-11-03T12:34:30.739 [DEBUG] [Thread-115834] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:34:30.753 [DEBUG] [Thread-115834] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:34:30.753 [INFO] [Thread-115834] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:34:30.760 [DEBUG] [Thread-115834] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:34:30.760 [DEBUG] [Thread-115834] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:34:30.760 [DEBUG] [Thread-115834] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:34:30.760 [DEBUG] [Thread-115834] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:34:30.760 [DEBUG] [Thread-115834] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:34:30.760 [DEBUG] [Thread-115834] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:34:30.760 [DEBUG] [Thread-115834] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:34:30.760 [DEBUG] [Thread-115834] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:34:30.760 [DEBUG] [Thread-115834] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:34:30.761 [DEBUG] [Thread-115834] [transport.py] [_log()] client lang: <none>
2025-11-03T12:34:30.761 [DEBUG] [Thread-115834] [transport.py] [_log()] server lang: <none>
2025-11-03T12:34:30.761 [DEBUG] [Thread-115834] [transport.py] [_log()] kex follows: False
2025-11-03T12:34:30.761 [DEBUG] [Thread-115834] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:34:30.761 [DEBUG] [Thread-115834] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:34:30.761 [DEBUG] [Thread-115834] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:34:30.761 [DEBUG] [Thread-115834] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:34:30.761 [DEBUG] [Thread-115834] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:34:30.761 [DEBUG] [Thread-115834] [transport.py] [_log()] Compression: none
2025-11-03T12:34:30.761 [DEBUG] [Thread-115834] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:34:30.817 [DEBUG] [Thread-115834] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:34:30.818 [DEBUG] [Thread-115834] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:34:30.818 [DEBUG] [Thread-115834] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:34:30.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:34:30.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:34:30.879 [DEBUG] [Thread-115834] [transport.py] [_log()] userauth is OK
2025-11-03T12:34:30.879 [DEBUG] [Thread-115834] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:34:30.879 [DEBUG] [Thread-115834] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:34:30.879 [DEBUG] [Thread-115834] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:34:30.879 [DEBUG] [Thread-115834] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:34:30.897 [INFO] [Thread-115834] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:34:30.897 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:34:30.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:34:31.765 [DEBUG] [Thread-115834] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:34:31.766 [DEBUG] [Thread-115834] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:34:31.814 [DEBUG] [Thread-115834] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:34:31.814 [DEBUG] [Thread-115834] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:34:31.823 [DEBUG] [Thread-115834] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:34:31.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:34:31.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:34:31.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:34:31.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:34:31.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:34:31.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:34:31.859 [DEBUG] [Thread-115834] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:34:41.329 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:34:41.330 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:34:42.809 [DEBUG] [Thread-115836 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:34:57.865 [DEBUG] [Thread-115837 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:35:01.208 [DEBUG] [Thread-115838 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:35:01.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:35:01.862 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:35:01.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:35:02.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 34, 58), 43.4, 4.77, 0.0, 21.31, 24.88, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:35:02.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:34:58
2025-11-03T12:35:02.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:35:02.911 [DEBUG] [Thread-115839] [transport.py] [_log()] starting thread (client mode): 0x117becb0
2025-11-03T12:35:02.912 [DEBUG] [Thread-115839] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:35:02.921 [DEBUG] [Thread-115839] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:35:02.921 [INFO] [Thread-115839] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:35:02.922 [DEBUG] [Thread-115839] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:35:02.923 [DEBUG] [Thread-115839] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:35:02.923 [DEBUG] [Thread-115839] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:35:02.923 [DEBUG] [Thread-115839] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:35:02.923 [DEBUG] [Thread-115839] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:35:02.923 [DEBUG] [Thread-115839] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:35:02.923 [DEBUG] [Thread-115839] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:35:02.923 [DEBUG] [Thread-115839] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:35:02.923 [DEBUG] [Thread-115839] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:35:02.923 [DEBUG] [Thread-115839] [transport.py] [_log()] client lang: <none>
2025-11-03T12:35:02.923 [DEBUG] [Thread-115839] [transport.py] [_log()] server lang: <none>
2025-11-03T12:35:02.923 [DEBUG] [Thread-115839] [transport.py] [_log()] kex follows: False
2025-11-03T12:35:02.923 [DEBUG] [Thread-115839] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:35:02.923 [DEBUG] [Thread-115839] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:35:02.923 [DEBUG] [Thread-115839] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:35:02.923 [DEBUG] [Thread-115839] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:35:02.923 [DEBUG] [Thread-115839] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:35:02.923 [DEBUG] [Thread-115839] [transport.py] [_log()] Compression: none
2025-11-03T12:35:02.923 [DEBUG] [Thread-115839] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:35:02.930 [DEBUG] [Thread-115839] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:35:02.930 [DEBUG] [Thread-115839] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:35:02.931 [DEBUG] [Thread-115839] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:35:02.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:35:02.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:35:02.932 [DEBUG] [Thread-115839] [transport.py] [_log()] userauth is OK
2025-11-03T12:35:02.932 [DEBUG] [Thread-115839] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:35:02.932 [DEBUG] [Thread-115839] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:35:02.932 [DEBUG] [Thread-115839] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:35:02.932 [DEBUG] [Thread-115839] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:35:02.943 [INFO] [Thread-115839] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:35:02.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:35:04.040 [DEBUG] [Thread-115839] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:35:04.040 [DEBUG] [Thread-115839] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:35:04.040 [DEBUG] [Thread-115839] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:35:04.082 [DEBUG] [Thread-115839] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:35:04.082 [DEBUG] [Thread-115839] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:35:04.084 [DEBUG] [Thread-115839] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:35:04.098 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:35:04.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:35:04.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:35:04.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:35:04.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:35:04.106 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:35:04.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:35:04.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:35:04.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:35:04.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.440729 -999.00  +24.70  26.86      9   -9.80 1 1 1 1 1   888    0 36.41 91.25 ----- 23.3 26.9 314.6 36.8 29.9 -29.4 28.9 -28.2 28.9 -28.6 29.8 -28.0
2025-11-03T12:35:04.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:35:04.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:35:04.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.440729
2025-11-03T12:35:04.115 [DEBUG] [Thread-115839] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:35:04.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:35:04.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:35:04.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:35:04.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:35:04.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:35:04.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:34:58', tmtdew=43.4, humidity=4.77, cloud=0.0, wind=21.31, temperature=24.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:34:38.986', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:35:04.188 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:35:04.200 [DEBUG] [Thread-115842] [transport.py] [_log()] starting thread (client mode): 0x117bce20
2025-11-03T12:35:04.200 [DEBUG] [Thread-115842] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:35:04.215 [DEBUG] [Thread-115842] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:35:04.215 [INFO] [Thread-115842] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:35:04.222 [DEBUG] [Thread-115842] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:35:04.222 [DEBUG] [Thread-115842] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:35:04.222 [DEBUG] [Thread-115842] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:35:04.222 [DEBUG] [Thread-115842] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:35:04.222 [DEBUG] [Thread-115842] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:35:04.222 [DEBUG] [Thread-115842] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:35:04.222 [DEBUG] [Thread-115842] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:35:04.222 [DEBUG] [Thread-115842] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:35:04.222 [DEBUG] [Thread-115842] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:35:04.222 [DEBUG] [Thread-115842] [transport.py] [_log()] client lang: <none>
2025-11-03T12:35:04.222 [DEBUG] [Thread-115842] [transport.py] [_log()] server lang: <none>
2025-11-03T12:35:04.222 [DEBUG] [Thread-115842] [transport.py] [_log()] kex follows: False
2025-11-03T12:35:04.222 [DEBUG] [Thread-115842] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:35:04.222 [DEBUG] [Thread-115842] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:35:04.222 [DEBUG] [Thread-115842] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:35:04.222 [DEBUG] [Thread-115842] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:35:04.222 [DEBUG] [Thread-115842] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:35:04.222 [DEBUG] [Thread-115842] [transport.py] [_log()] Compression: none
2025-11-03T12:35:04.222 [DEBUG] [Thread-115842] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:35:04.279 [DEBUG] [Thread-115842] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:35:04.279 [DEBUG] [Thread-115842] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:35:04.280 [DEBUG] [Thread-115842] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:35:04.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:35:04.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:35:04.339 [DEBUG] [Thread-115842] [transport.py] [_log()] userauth is OK
2025-11-03T12:35:04.339 [DEBUG] [Thread-115842] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:35:04.339 [DEBUG] [Thread-115842] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:35:04.339 [DEBUG] [Thread-115842] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:35:04.339 [DEBUG] [Thread-115842] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:35:04.356 [INFO] [Thread-115842] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:35:04.356 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:35:04.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:35:05.256 [DEBUG] [Thread-115842] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:35:05.256 [DEBUG] [Thread-115842] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:35:05.304 [DEBUG] [Thread-115842] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:35:05.304 [DEBUG] [Thread-115842] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:35:05.312 [DEBUG] [Thread-115842] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:35:05.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:35:05.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:35:05.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:35:05.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:35:05.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:35:05.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:35:05.345 [DEBUG] [Thread-115842] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:35:12.902 [DEBUG] [Thread-115844 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:35:27.953 [DEBUG] [Thread-115845 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:35:35.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:35:35.377 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:35:35.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:35:36.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 35, 30), 43.7, 4.67, 0.0, 27.07, 25.01, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:35:36.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:35:30
2025-11-03T12:35:36.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:35:36.427 [DEBUG] [Thread-115846] [transport.py] [_log()] starting thread (client mode): 0x81b9540
2025-11-03T12:35:36.427 [DEBUG] [Thread-115846] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:35:36.444 [DEBUG] [Thread-115846] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:35:36.444 [INFO] [Thread-115846] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:35:36.447 [DEBUG] [Thread-115846] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:35:36.447 [DEBUG] [Thread-115846] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:35:36.447 [DEBUG] [Thread-115846] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:35:36.447 [DEBUG] [Thread-115846] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:35:36.447 [DEBUG] [Thread-115846] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:35:36.447 [DEBUG] [Thread-115846] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:35:36.447 [DEBUG] [Thread-115846] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:35:36.447 [DEBUG] [Thread-115846] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:35:36.447 [DEBUG] [Thread-115846] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:35:36.447 [DEBUG] [Thread-115846] [transport.py] [_log()] client lang: <none>
2025-11-03T12:35:36.447 [DEBUG] [Thread-115846] [transport.py] [_log()] server lang: <none>
2025-11-03T12:35:36.447 [DEBUG] [Thread-115846] [transport.py] [_log()] kex follows: False
2025-11-03T12:35:36.447 [DEBUG] [Thread-115846] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:35:36.448 [DEBUG] [Thread-115846] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:35:36.448 [DEBUG] [Thread-115846] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:35:36.448 [DEBUG] [Thread-115846] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:35:36.448 [DEBUG] [Thread-115846] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:35:36.448 [DEBUG] [Thread-115846] [transport.py] [_log()] Compression: none
2025-11-03T12:35:36.448 [DEBUG] [Thread-115846] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:35:36.465 [DEBUG] [Thread-115846] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:35:36.465 [DEBUG] [Thread-115846] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:35:36.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:35:36.467 [DEBUG] [Thread-115846] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:35:36.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:35:36.469 [DEBUG] [Thread-115846] [transport.py] [_log()] userauth is OK
2025-11-03T12:35:36.470 [DEBUG] [Thread-115846] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:35:36.470 [DEBUG] [Thread-115846] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:35:36.470 [DEBUG] [Thread-115846] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:35:36.470 [DEBUG] [Thread-115846] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:35:36.486 [INFO] [Thread-115846] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:35:36.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:35:37.077 [DEBUG] [Thread-115846] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:35:37.078 [DEBUG] [Thread-115846] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:35:37.078 [DEBUG] [Thread-115846] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:35:37.119 [DEBUG] [Thread-115846] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:35:37.119 [DEBUG] [Thread-115846] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:35:37.121 [DEBUG] [Thread-115846] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:35:37.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:35:37.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:35:37.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:35:37.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:35:37.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:35:37.140 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:35:37.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:35:37.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:35:37.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:35:37.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.441076 -999.00  +24.40  15.95      9  -10.20 1 1 1 1 1   888    0 36.37 88.47 ----- 13.4 15.9 37.9 37.4 30.0 -29.4 29.0 -29.6 28.9 -27.7 29.7 -33.8
2025-11-03T12:35:37.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:35:37.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:35:37.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.441076
2025-11-03T12:35:37.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:35:37.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:35:37.142 [DEBUG] [Thread-115846] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:35:37.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:35:37.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:35:37.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:35:37.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:35:30', tmtdew=43.7, humidity=4.67, cloud=0.0, wind=27.07, temperature=25.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:35:08.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:35:37.226 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:35:37.238 [DEBUG] [Thread-115849] [transport.py] [_log()] starting thread (client mode): 0x81b9f30
2025-11-03T12:35:37.238 [DEBUG] [Thread-115849] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:35:37.252 [DEBUG] [Thread-115849] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:35:37.252 [INFO] [Thread-115849] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:35:37.260 [DEBUG] [Thread-115849] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:35:37.260 [DEBUG] [Thread-115849] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:35:37.261 [DEBUG] [Thread-115849] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:35:37.261 [DEBUG] [Thread-115849] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:35:37.261 [DEBUG] [Thread-115849] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:35:37.261 [DEBUG] [Thread-115849] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:35:37.261 [DEBUG] [Thread-115849] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:35:37.261 [DEBUG] [Thread-115849] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:35:37.261 [DEBUG] [Thread-115849] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:35:37.261 [DEBUG] [Thread-115849] [transport.py] [_log()] client lang: <none>
2025-11-03T12:35:37.261 [DEBUG] [Thread-115849] [transport.py] [_log()] server lang: <none>
2025-11-03T12:35:37.261 [DEBUG] [Thread-115849] [transport.py] [_log()] kex follows: False
2025-11-03T12:35:37.261 [DEBUG] [Thread-115849] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:35:37.261 [DEBUG] [Thread-115849] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:35:37.261 [DEBUG] [Thread-115849] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:35:37.261 [DEBUG] [Thread-115849] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:35:37.261 [DEBUG] [Thread-115849] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:35:37.261 [DEBUG] [Thread-115849] [transport.py] [_log()] Compression: none
2025-11-03T12:35:37.261 [DEBUG] [Thread-115849] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:35:37.319 [DEBUG] [Thread-115849] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:35:37.319 [DEBUG] [Thread-115849] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:35:37.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:35:37.320 [DEBUG] [Thread-115849] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:35:37.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:35:37.375 [DEBUG] [Thread-115849] [transport.py] [_log()] userauth is OK
2025-11-03T12:35:37.375 [DEBUG] [Thread-115849] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:35:37.375 [DEBUG] [Thread-115849] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:35:37.375 [DEBUG] [Thread-115849] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:35:37.375 [DEBUG] [Thread-115849] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:35:37.394 [INFO] [Thread-115849] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:35:37.395 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:35:37.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:35:38.226 [DEBUG] [Thread-115849] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:35:38.227 [DEBUG] [Thread-115849] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:35:38.274 [DEBUG] [Thread-115849] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:35:38.275 [DEBUG] [Thread-115849] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:35:38.283 [DEBUG] [Thread-115849] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:35:38.296 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:35:38.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:35:38.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:35:38.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:35:38.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:35:38.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:35:38.320 [DEBUG] [Thread-115849] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:35:41.482 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:35:41.484 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:35:42.987 [DEBUG] [Thread-115851 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:35:58.049 [DEBUG] [Thread-115852 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:36:01.286 [DEBUG] [Thread-115853 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:36:08.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:36:08.342 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:36:08.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:36:09.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 36, 2), 43.72, 4.67, 0.0, 28.35, 25.07, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:36:09.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:36:02
2025-11-03T12:36:09.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:36:09.300 [DEBUG] [Thread-115854] [transport.py] [_log()] starting thread (client mode): 0x81b9060
2025-11-03T12:36:09.300 [DEBUG] [Thread-115854] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:36:09.315 [DEBUG] [Thread-115854] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:36:09.315 [INFO] [Thread-115854] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:36:09.316 [DEBUG] [Thread-115854] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:36:09.316 [DEBUG] [Thread-115854] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:36:09.316 [DEBUG] [Thread-115854] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:36:09.316 [DEBUG] [Thread-115854] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:36:09.316 [DEBUG] [Thread-115854] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:36:09.316 [DEBUG] [Thread-115854] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:36:09.316 [DEBUG] [Thread-115854] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:36:09.316 [DEBUG] [Thread-115854] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:36:09.316 [DEBUG] [Thread-115854] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:36:09.316 [DEBUG] [Thread-115854] [transport.py] [_log()] client lang: <none>
2025-11-03T12:36:09.316 [DEBUG] [Thread-115854] [transport.py] [_log()] server lang: <none>
2025-11-03T12:36:09.316 [DEBUG] [Thread-115854] [transport.py] [_log()] kex follows: False
2025-11-03T12:36:09.316 [DEBUG] [Thread-115854] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:36:09.316 [DEBUG] [Thread-115854] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:36:09.316 [DEBUG] [Thread-115854] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:36:09.316 [DEBUG] [Thread-115854] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:36:09.316 [DEBUG] [Thread-115854] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:36:09.316 [DEBUG] [Thread-115854] [transport.py] [_log()] Compression: none
2025-11-03T12:36:09.316 [DEBUG] [Thread-115854] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:36:09.326 [DEBUG] [Thread-115854] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:36:09.327 [DEBUG] [Thread-115854] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:36:09.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:36:09.327 [DEBUG] [Thread-115854] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:36:09.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:36:09.328 [DEBUG] [Thread-115854] [transport.py] [_log()] userauth is OK
2025-11-03T12:36:09.328 [DEBUG] [Thread-115854] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:36:09.328 [DEBUG] [Thread-115854] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:36:09.328 [DEBUG] [Thread-115854] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:36:09.328 [DEBUG] [Thread-115854] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:36:09.341 [INFO] [Thread-115854] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:36:09.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:36:09.935 [DEBUG] [Thread-115854] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:36:09.935 [DEBUG] [Thread-115854] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:36:09.935 [DEBUG] [Thread-115854] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:36:09.975 [DEBUG] [Thread-115854] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:36:09.975 [DEBUG] [Thread-115854] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:36:09.977 [DEBUG] [Thread-115854] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:36:09.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:36:09.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:36:09.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:36:09.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:36:09.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:36:09.990 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:36:09.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:36:09.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:36:09.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:36:09.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.441770 -999.00  +25.00  18.32      9   -9.60 1 1 1 1 1   888    0 37.32 98.09 ----- 33.7 18.3 344.2 26.6 29.9 -30.1 29.0 -28.1 28.9 -28.1 29.9 -27.5
2025-11-03T12:36:09.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:36:09.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:36:09.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.441770
2025-11-03T12:36:09.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:36:09.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:36:09.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:36:09.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:36:09.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:36:09.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:36:02', tmtdew=43.72, humidity=4.67, cloud=0.0, wind=28.35, temperature=25.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:36:08.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:36:09.991 [DEBUG] [Thread-115854] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:36:10.063 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:36:10.076 [DEBUG] [Thread-115857] [transport.py] [_log()] starting thread (client mode): 0x117bc730
2025-11-03T12:36:10.076 [DEBUG] [Thread-115857] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:36:10.090 [DEBUG] [Thread-115857] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:36:10.090 [INFO] [Thread-115857] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:36:10.098 [DEBUG] [Thread-115857] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:36:10.098 [DEBUG] [Thread-115857] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:36:10.098 [DEBUG] [Thread-115857] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:36:10.098 [DEBUG] [Thread-115857] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:36:10.098 [DEBUG] [Thread-115857] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:36:10.098 [DEBUG] [Thread-115857] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:36:10.098 [DEBUG] [Thread-115857] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:36:10.098 [DEBUG] [Thread-115857] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:36:10.098 [DEBUG] [Thread-115857] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:36:10.098 [DEBUG] [Thread-115857] [transport.py] [_log()] client lang: <none>
2025-11-03T12:36:10.098 [DEBUG] [Thread-115857] [transport.py] [_log()] server lang: <none>
2025-11-03T12:36:10.098 [DEBUG] [Thread-115857] [transport.py] [_log()] kex follows: False
2025-11-03T12:36:10.098 [DEBUG] [Thread-115857] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:36:10.098 [DEBUG] [Thread-115857] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:36:10.098 [DEBUG] [Thread-115857] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:36:10.098 [DEBUG] [Thread-115857] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:36:10.098 [DEBUG] [Thread-115857] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:36:10.098 [DEBUG] [Thread-115857] [transport.py] [_log()] Compression: none
2025-11-03T12:36:10.098 [DEBUG] [Thread-115857] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:36:10.154 [DEBUG] [Thread-115857] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:36:10.154 [DEBUG] [Thread-115857] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:36:10.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:36:10.154 [DEBUG] [Thread-115857] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:36:10.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:36:10.214 [DEBUG] [Thread-115857] [transport.py] [_log()] userauth is OK
2025-11-03T12:36:10.215 [DEBUG] [Thread-115857] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:36:10.215 [DEBUG] [Thread-115857] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:36:10.215 [DEBUG] [Thread-115857] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:36:10.215 [DEBUG] [Thread-115857] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:36:10.228 [INFO] [Thread-115857] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:36:10.228 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:36:10.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:36:11.069 [DEBUG] [Thread-115857] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:36:11.069 [DEBUG] [Thread-115857] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:36:11.120 [DEBUG] [Thread-115857] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:36:11.120 [DEBUG] [Thread-115857] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:36:11.131 [DEBUG] [Thread-115857] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:36:11.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:36:11.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:36:11.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:36:11.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:36:11.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:36:11.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:36:11.169 [DEBUG] [Thread-115857] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:36:13.084 [DEBUG] [Thread-115859 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:36:28.133 [DEBUG] [Thread-115860 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:36:41.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:36:41.192 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:36:41.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:36:41.624 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:36:41.624 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:36:41.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 36, 35), 43.97, 4.17, 0.0, 41.32, 25.09, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:36:41.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:36:35
2025-11-03T12:36:42.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:36:42.155 [DEBUG] [Thread-115861] [transport.py] [_log()] starting thread (client mode): 0x11783160
2025-11-03T12:36:42.155 [DEBUG] [Thread-115861] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:36:42.177 [DEBUG] [Thread-115861] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:36:42.177 [INFO] [Thread-115861] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:36:42.180 [DEBUG] [Thread-115861] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:36:42.180 [DEBUG] [Thread-115861] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:36:42.180 [DEBUG] [Thread-115861] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:36:42.180 [DEBUG] [Thread-115861] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:36:42.180 [DEBUG] [Thread-115861] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:36:42.180 [DEBUG] [Thread-115861] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:36:42.180 [DEBUG] [Thread-115861] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:36:42.180 [DEBUG] [Thread-115861] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:36:42.180 [DEBUG] [Thread-115861] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:36:42.180 [DEBUG] [Thread-115861] [transport.py] [_log()] client lang: <none>
2025-11-03T12:36:42.180 [DEBUG] [Thread-115861] [transport.py] [_log()] server lang: <none>
2025-11-03T12:36:42.181 [DEBUG] [Thread-115861] [transport.py] [_log()] kex follows: False
2025-11-03T12:36:42.181 [DEBUG] [Thread-115861] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:36:42.181 [DEBUG] [Thread-115861] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:36:42.181 [DEBUG] [Thread-115861] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:36:42.181 [DEBUG] [Thread-115861] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:36:42.181 [DEBUG] [Thread-115861] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:36:42.181 [DEBUG] [Thread-115861] [transport.py] [_log()] Compression: none
2025-11-03T12:36:42.181 [DEBUG] [Thread-115861] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:36:42.199 [DEBUG] [Thread-115861] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:36:42.200 [DEBUG] [Thread-115861] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:36:42.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:36:42.201 [DEBUG] [Thread-115861] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:36:42.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:36:42.203 [DEBUG] [Thread-115861] [transport.py] [_log()] userauth is OK
2025-11-03T12:36:42.203 [DEBUG] [Thread-115861] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:36:42.203 [DEBUG] [Thread-115861] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:36:42.204 [DEBUG] [Thread-115861] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:36:42.204 [DEBUG] [Thread-115861] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:36:42.218 [INFO] [Thread-115861] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:36:42.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:36:42.928 [DEBUG] [Thread-115861] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:36:42.928 [DEBUG] [Thread-115861] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:36:42.928 [DEBUG] [Thread-115861] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:36:42.968 [DEBUG] [Thread-115861] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:36:42.969 [DEBUG] [Thread-115861] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:36:42.971 [DEBUG] [Thread-115861] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:36:42.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:36:42.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:36:42.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:36:42.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:36:42.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:36:42.993 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:36:42.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:36:42.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:36:42.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:36:42.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.441770 -999.00  +25.00  18.32      9   -9.60 1 1 1 1 1   888    0 37.32 98.09 ----- 33.7 18.3 344.2 26.6 29.9 -30.1 29.0 -28.1 28.9 -28.1 29.9 -27.5
2025-11-03T12:36:42.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:36:42.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:36:42.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.441770
2025-11-03T12:36:43.001 [DEBUG] [Thread-115861] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:36:43.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:36:43.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:36:43.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:36:43.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:36:43.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:36:43.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:36:35', tmtdew=43.97, humidity=4.17, cloud=0.0, wind=41.32, temperature=25.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:36:08.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:36:43.088 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:36:43.099 [DEBUG] [Thread-115864] [transport.py] [_log()] starting thread (client mode): 0x81bbeb0
2025-11-03T12:36:43.099 [DEBUG] [Thread-115864] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:36:43.114 [DEBUG] [Thread-115864] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:36:43.114 [INFO] [Thread-115864] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:36:43.121 [DEBUG] [Thread-115864] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:36:43.121 [DEBUG] [Thread-115864] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:36:43.121 [DEBUG] [Thread-115864] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:36:43.121 [DEBUG] [Thread-115864] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:36:43.121 [DEBUG] [Thread-115864] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:36:43.121 [DEBUG] [Thread-115864] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:36:43.121 [DEBUG] [Thread-115864] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:36:43.121 [DEBUG] [Thread-115864] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:36:43.121 [DEBUG] [Thread-115864] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:36:43.121 [DEBUG] [Thread-115864] [transport.py] [_log()] client lang: <none>
2025-11-03T12:36:43.122 [DEBUG] [Thread-115864] [transport.py] [_log()] server lang: <none>
2025-11-03T12:36:43.122 [DEBUG] [Thread-115864] [transport.py] [_log()] kex follows: False
2025-11-03T12:36:43.122 [DEBUG] [Thread-115864] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:36:43.122 [DEBUG] [Thread-115864] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:36:43.122 [DEBUG] [Thread-115864] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:36:43.122 [DEBUG] [Thread-115864] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:36:43.122 [DEBUG] [Thread-115864] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:36:43.131 [DEBUG] [Thread-115864] [transport.py] [_log()] Compression: none
2025-11-03T12:36:43.131 [DEBUG] [Thread-115864] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:36:43.162 [DEBUG] [Thread-115866 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:36:43.179 [DEBUG] [Thread-115864] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:36:43.179 [DEBUG] [Thread-115864] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:36:43.180 [DEBUG] [Thread-115864] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:36:43.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:36:43.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:36:43.235 [DEBUG] [Thread-115864] [transport.py] [_log()] userauth is OK
2025-11-03T12:36:43.235 [DEBUG] [Thread-115864] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:36:43.235 [DEBUG] [Thread-115864] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:36:43.235 [DEBUG] [Thread-115864] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:36:43.235 [DEBUG] [Thread-115864] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:36:43.254 [INFO] [Thread-115864] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:36:43.254 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:36:43.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:36:44.119 [DEBUG] [Thread-115864] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:36:44.119 [DEBUG] [Thread-115864] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:36:44.166 [DEBUG] [Thread-115864] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:36:44.166 [DEBUG] [Thread-115864] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:36:44.175 [DEBUG] [Thread-115864] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:36:44.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:36:44.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:36:44.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:36:44.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:36:44.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:36:44.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:36:44.208 [DEBUG] [Thread-115864] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:36:58.214 [DEBUG] [Thread-115867 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:37:01.364 [DEBUG] [Thread-115868 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:37:13.247 [DEBUG] [Thread-115869 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:37:14.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:37:14.231 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:37:14.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:37:14.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 37, 7), 44.19, 4.09, 0.0, 39.77, 25.06, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:37:14.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:37:07
2025-11-03T12:37:15.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:37:15.190 [DEBUG] [Thread-115870] [transport.py] [_log()] starting thread (client mode): 0x117be5c0
2025-11-03T12:37:15.190 [DEBUG] [Thread-115870] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:37:15.211 [DEBUG] [Thread-115870] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:37:15.211 [INFO] [Thread-115870] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:37:15.214 [DEBUG] [Thread-115870] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:37:15.214 [DEBUG] [Thread-115870] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:37:15.214 [DEBUG] [Thread-115870] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:37:15.214 [DEBUG] [Thread-115870] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:37:15.214 [DEBUG] [Thread-115870] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:37:15.214 [DEBUG] [Thread-115870] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:37:15.214 [DEBUG] [Thread-115870] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:37:15.214 [DEBUG] [Thread-115870] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:37:15.214 [DEBUG] [Thread-115870] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:37:15.214 [DEBUG] [Thread-115870] [transport.py] [_log()] client lang: <none>
2025-11-03T12:37:15.214 [DEBUG] [Thread-115870] [transport.py] [_log()] server lang: <none>
2025-11-03T12:37:15.214 [DEBUG] [Thread-115870] [transport.py] [_log()] kex follows: False
2025-11-03T12:37:15.214 [DEBUG] [Thread-115870] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:37:15.214 [DEBUG] [Thread-115870] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:37:15.214 [DEBUG] [Thread-115870] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:37:15.223 [DEBUG] [Thread-115870] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:37:15.223 [DEBUG] [Thread-115870] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:37:15.224 [DEBUG] [Thread-115870] [transport.py] [_log()] Compression: none
2025-11-03T12:37:15.224 [DEBUG] [Thread-115870] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:37:15.242 [DEBUG] [Thread-115870] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:37:15.242 [DEBUG] [Thread-115870] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:37:15.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:37:15.243 [DEBUG] [Thread-115870] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:37:15.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:37:15.246 [DEBUG] [Thread-115870] [transport.py] [_log()] userauth is OK
2025-11-03T12:37:15.246 [DEBUG] [Thread-115870] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:37:15.246 [DEBUG] [Thread-115870] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:37:15.246 [DEBUG] [Thread-115870] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:37:15.246 [DEBUG] [Thread-115870] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:37:15.271 [INFO] [Thread-115870] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:37:15.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:37:15.930 [DEBUG] [Thread-115870] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:37:15.930 [DEBUG] [Thread-115870] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:37:15.931 [DEBUG] [Thread-115870] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:37:15.971 [DEBUG] [Thread-115870] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:37:15.971 [DEBUG] [Thread-115870] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:37:15.974 [DEBUG] [Thread-115870] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:37:15.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:37:15.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:37:15.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:37:15.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:37:15.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:37:15.998 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:37:15.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:37:15.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:37:15.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:37:15.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.442118 -999.00  +24.90  36.60      9  -10.00 1 1 2 1 1   888    0 36.61 100.38 ----- 25.5 36.6 326.0 49.9 29.9 -30.8 29.0 -28.4 28.9 -29.2 29.8 -28.2
2025-11-03T12:37:15.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:37:15.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:37:15.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.442118
2025-11-03T12:37:16.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:37:16.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:37:16.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:37:16.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:37:16.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:37:16.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:37:07', tmtdew=44.19, humidity=4.09, cloud=0.0, wind=39.77, temperature=25.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:36:38.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:37:16.001 [DEBUG] [Thread-115870] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:37:16.084 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:37:16.096 [DEBUG] [Thread-115873] [transport.py] [_log()] starting thread (client mode): 0x11781a80
2025-11-03T12:37:16.096 [DEBUG] [Thread-115873] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:37:16.111 [DEBUG] [Thread-115873] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:37:16.111 [INFO] [Thread-115873] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:37:16.118 [DEBUG] [Thread-115873] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:37:16.118 [DEBUG] [Thread-115873] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:37:16.118 [DEBUG] [Thread-115873] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:37:16.118 [DEBUG] [Thread-115873] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:37:16.118 [DEBUG] [Thread-115873] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:37:16.118 [DEBUG] [Thread-115873] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:37:16.118 [DEBUG] [Thread-115873] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:37:16.118 [DEBUG] [Thread-115873] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:37:16.118 [DEBUG] [Thread-115873] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:37:16.118 [DEBUG] [Thread-115873] [transport.py] [_log()] client lang: <none>
2025-11-03T12:37:16.118 [DEBUG] [Thread-115873] [transport.py] [_log()] server lang: <none>
2025-11-03T12:37:16.118 [DEBUG] [Thread-115873] [transport.py] [_log()] kex follows: False
2025-11-03T12:37:16.118 [DEBUG] [Thread-115873] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:37:16.118 [DEBUG] [Thread-115873] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:37:16.118 [DEBUG] [Thread-115873] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:37:16.118 [DEBUG] [Thread-115873] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:37:16.119 [DEBUG] [Thread-115873] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:37:16.119 [DEBUG] [Thread-115873] [transport.py] [_log()] Compression: none
2025-11-03T12:37:16.119 [DEBUG] [Thread-115873] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:37:16.176 [DEBUG] [Thread-115873] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:37:16.176 [DEBUG] [Thread-115873] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:37:16.177 [DEBUG] [Thread-115873] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:37:16.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:37:16.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:37:16.232 [DEBUG] [Thread-115873] [transport.py] [_log()] userauth is OK
2025-11-03T12:37:16.232 [DEBUG] [Thread-115873] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:37:16.232 [DEBUG] [Thread-115873] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:37:16.232 [DEBUG] [Thread-115873] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:37:16.232 [DEBUG] [Thread-115873] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:37:16.251 [INFO] [Thread-115873] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:37:16.261 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:37:16.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:37:17.099 [DEBUG] [Thread-115873] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:37:17.099 [DEBUG] [Thread-115873] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:37:17.147 [DEBUG] [Thread-115873] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:37:17.147 [DEBUG] [Thread-115873] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:37:17.156 [DEBUG] [Thread-115873] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:37:17.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:37:17.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:37:17.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:37:17.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:37:17.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:37:17.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:37:17.198 [DEBUG] [Thread-115873] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:37:28.284 [DEBUG] [Thread-115875 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:37:41.765 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:37:41.766 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:37:43.336 [DEBUG] [Thread-115876 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:37:47.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:37:47.220 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:37:47.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:37:47.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 37, 39), 44.35, 4.14, 0.0, 29.61, 25.51, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:37:47.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:37:39
2025-11-03T12:37:47.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:37:48.144 [DEBUG] [Thread-115877] [transport.py] [_log()] starting thread (client mode): 0xed4feb0
2025-11-03T12:37:48.144 [DEBUG] [Thread-115877] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:37:48.165 [DEBUG] [Thread-115877] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:37:48.165 [INFO] [Thread-115877] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:37:48.168 [DEBUG] [Thread-115877] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:37:48.169 [DEBUG] [Thread-115877] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:37:48.169 [DEBUG] [Thread-115877] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:37:48.169 [DEBUG] [Thread-115877] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:37:48.169 [DEBUG] [Thread-115877] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:37:48.169 [DEBUG] [Thread-115877] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:37:48.169 [DEBUG] [Thread-115877] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:37:48.169 [DEBUG] [Thread-115877] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:37:48.169 [DEBUG] [Thread-115877] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:37:48.169 [DEBUG] [Thread-115877] [transport.py] [_log()] client lang: <none>
2025-11-03T12:37:48.169 [DEBUG] [Thread-115877] [transport.py] [_log()] server lang: <none>
2025-11-03T12:37:48.169 [DEBUG] [Thread-115877] [transport.py] [_log()] kex follows: False
2025-11-03T12:37:48.169 [DEBUG] [Thread-115877] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:37:48.169 [DEBUG] [Thread-115877] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:37:48.169 [DEBUG] [Thread-115877] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:37:48.169 [DEBUG] [Thread-115877] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:37:48.169 [DEBUG] [Thread-115877] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:37:48.169 [DEBUG] [Thread-115877] [transport.py] [_log()] Compression: none
2025-11-03T12:37:48.169 [DEBUG] [Thread-115877] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:37:48.186 [DEBUG] [Thread-115877] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:37:48.187 [DEBUG] [Thread-115877] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:37:48.196 [DEBUG] [Thread-115877] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:37:48.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:37:48.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:37:48.198 [DEBUG] [Thread-115877] [transport.py] [_log()] userauth is OK
2025-11-03T12:37:48.199 [DEBUG] [Thread-115877] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:37:48.199 [DEBUG] [Thread-115877] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:37:48.199 [DEBUG] [Thread-115877] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:37:48.199 [DEBUG] [Thread-115877] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:37:48.223 [INFO] [Thread-115877] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:37:48.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:37:48.967 [DEBUG] [Thread-115877] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:37:48.967 [DEBUG] [Thread-115877] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:37:48.968 [DEBUG] [Thread-115877] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:37:49.008 [DEBUG] [Thread-115877] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:37:49.008 [DEBUG] [Thread-115877] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:37:49.011 [DEBUG] [Thread-115877] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:37:49.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:37:49.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:37:49.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:37:49.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:37:49.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:37:49.029 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:37:49.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:37:49.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:37:49.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:37:49.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.442465 -999.00  +24.80  22.33      9   -9.90 1 1 1 1 1   888    0 36.99 101.34 ----- 26.8 22.3 343.3 48.4 29.9 -29.7 28.9 -29.8 29.0 -28.9 29.7 -27.7
2025-11-03T12:37:49.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:37:49.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:37:49.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.442465
2025-11-03T12:37:49.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:37:49.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:37:49.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:37:49.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:37:49.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:37:49.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:37:39', tmtdew=44.35, humidity=4.14, cloud=0.0, wind=29.61, temperature=25.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:37:08.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:37:49.032 [DEBUG] [Thread-115877] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:37:49.115 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:37:49.127 [DEBUG] [Thread-115880] [transport.py] [_log()] starting thread (client mode): 0xed4e770
2025-11-03T12:37:49.127 [DEBUG] [Thread-115880] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:37:49.142 [DEBUG] [Thread-115880] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:37:49.142 [INFO] [Thread-115880] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:37:49.150 [DEBUG] [Thread-115880] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:37:49.151 [DEBUG] [Thread-115880] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:37:49.151 [DEBUG] [Thread-115880] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:37:49.151 [DEBUG] [Thread-115880] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:37:49.151 [DEBUG] [Thread-115880] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:37:49.151 [DEBUG] [Thread-115880] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:37:49.151 [DEBUG] [Thread-115880] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:37:49.152 [DEBUG] [Thread-115880] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:37:49.152 [DEBUG] [Thread-115880] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:37:49.152 [DEBUG] [Thread-115880] [transport.py] [_log()] client lang: <none>
2025-11-03T12:37:49.152 [DEBUG] [Thread-115880] [transport.py] [_log()] server lang: <none>
2025-11-03T12:37:49.152 [DEBUG] [Thread-115880] [transport.py] [_log()] kex follows: False
2025-11-03T12:37:49.152 [DEBUG] [Thread-115880] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:37:49.152 [DEBUG] [Thread-115880] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:37:49.152 [DEBUG] [Thread-115880] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:37:49.152 [DEBUG] [Thread-115880] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:37:49.153 [DEBUG] [Thread-115880] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:37:49.153 [DEBUG] [Thread-115880] [transport.py] [_log()] Compression: none
2025-11-03T12:37:49.153 [DEBUG] [Thread-115880] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:37:49.209 [DEBUG] [Thread-115880] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:37:49.210 [DEBUG] [Thread-115880] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:37:49.211 [DEBUG] [Thread-115880] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:37:49.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:37:49.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:37:49.268 [DEBUG] [Thread-115880] [transport.py] [_log()] userauth is OK
2025-11-03T12:37:49.268 [DEBUG] [Thread-115880] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:37:49.268 [DEBUG] [Thread-115880] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:37:49.268 [DEBUG] [Thread-115880] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:37:49.268 [DEBUG] [Thread-115880] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:37:49.288 [INFO] [Thread-115880] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:37:49.288 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:37:49.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:37:50.171 [DEBUG] [Thread-115880] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:37:50.172 [DEBUG] [Thread-115880] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:37:50.220 [DEBUG] [Thread-115880] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:37:50.220 [DEBUG] [Thread-115880] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:37:50.230 [DEBUG] [Thread-115880] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:37:50.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:37:50.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:37:50.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:37:50.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:37:50.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:37:50.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:37:50.268 [DEBUG] [Thread-115880] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:37:58.367 [DEBUG] [Thread-115882 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:38:01.440 [DEBUG] [Thread-115883 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:38:13.408 [DEBUG] [Thread-115884 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:38:20.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:38:20.289 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:38:20.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:38:20.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 38, 12), 44.41, 4.12, 0.0, 30.05, 25.54, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:38:20.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:38:12
2025-11-03T12:38:21.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:38:21.235 [DEBUG] [Thread-115885] [transport.py] [_log()] starting thread (client mode): 0xed4e440
2025-11-03T12:38:21.235 [DEBUG] [Thread-115885] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:38:21.255 [DEBUG] [Thread-115885] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:38:21.255 [INFO] [Thread-115885] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:38:21.257 [DEBUG] [Thread-115885] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:38:21.257 [DEBUG] [Thread-115885] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:38:21.257 [DEBUG] [Thread-115885] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:38:21.257 [DEBUG] [Thread-115885] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:38:21.257 [DEBUG] [Thread-115885] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:38:21.257 [DEBUG] [Thread-115885] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:38:21.257 [DEBUG] [Thread-115885] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:38:21.257 [DEBUG] [Thread-115885] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:38:21.257 [DEBUG] [Thread-115885] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:38:21.257 [DEBUG] [Thread-115885] [transport.py] [_log()] client lang: <none>
2025-11-03T12:38:21.257 [DEBUG] [Thread-115885] [transport.py] [_log()] server lang: <none>
2025-11-03T12:38:21.257 [DEBUG] [Thread-115885] [transport.py] [_log()] kex follows: False
2025-11-03T12:38:21.257 [DEBUG] [Thread-115885] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:38:21.257 [DEBUG] [Thread-115885] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:38:21.257 [DEBUG] [Thread-115885] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:38:21.257 [DEBUG] [Thread-115885] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:38:21.257 [DEBUG] [Thread-115885] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:38:21.257 [DEBUG] [Thread-115885] [transport.py] [_log()] Compression: none
2025-11-03T12:38:21.257 [DEBUG] [Thread-115885] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:38:21.273 [DEBUG] [Thread-115885] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:38:21.273 [DEBUG] [Thread-115885] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:38:21.273 [DEBUG] [Thread-115885] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:38:21.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:38:21.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:38:21.274 [DEBUG] [Thread-115885] [transport.py] [_log()] userauth is OK
2025-11-03T12:38:21.274 [DEBUG] [Thread-115885] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:38:21.274 [DEBUG] [Thread-115885] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:38:21.274 [DEBUG] [Thread-115885] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:38:21.274 [DEBUG] [Thread-115885] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:38:21.283 [INFO] [Thread-115885] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:38:21.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:38:21.923 [DEBUG] [Thread-115885] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:38:21.923 [DEBUG] [Thread-115885] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:38:21.923 [DEBUG] [Thread-115885] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:38:21.964 [DEBUG] [Thread-115885] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:38:21.964 [DEBUG] [Thread-115885] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:38:21.967 [DEBUG] [Thread-115885] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:38:21.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:38:21.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:38:21.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:38:21.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:38:21.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:38:21.984 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:38:21.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:38:21.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:38:21.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:38:21.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.442812 -999.00  +24.90  34.33      9   -9.90 1 1 2 1 1   888    0 36.98 102.84 ----- 28.8 34.3 328.6 38.9 29.9 -29.9 28.9 -29.5 29.0 -28.0 29.7 -28.3
2025-11-03T12:38:21.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:38:21.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:38:21.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.442812
2025-11-03T12:38:21.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:38:21.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:38:21.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:38:21.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:38:21.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:38:21.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:38:12', tmtdew=44.41, humidity=4.12, cloud=0.0, wind=30.05, temperature=25.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:37:38.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:38:21.985 [DEBUG] [Thread-115885] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:38:22.060 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:38:22.073 [DEBUG] [Thread-115888] [transport.py] [_log()] starting thread (client mode): 0xed4e9b0
2025-11-03T12:38:22.073 [DEBUG] [Thread-115888] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:38:22.089 [DEBUG] [Thread-115888] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:38:22.089 [INFO] [Thread-115888] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:38:22.096 [DEBUG] [Thread-115888] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:38:22.096 [DEBUG] [Thread-115888] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:38:22.096 [DEBUG] [Thread-115888] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:38:22.096 [DEBUG] [Thread-115888] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:38:22.096 [DEBUG] [Thread-115888] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:38:22.096 [DEBUG] [Thread-115888] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:38:22.096 [DEBUG] [Thread-115888] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:38:22.096 [DEBUG] [Thread-115888] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:38:22.096 [DEBUG] [Thread-115888] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:38:22.097 [DEBUG] [Thread-115888] [transport.py] [_log()] client lang: <none>
2025-11-03T12:38:22.097 [DEBUG] [Thread-115888] [transport.py] [_log()] server lang: <none>
2025-11-03T12:38:22.097 [DEBUG] [Thread-115888] [transport.py] [_log()] kex follows: False
2025-11-03T12:38:22.097 [DEBUG] [Thread-115888] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:38:22.097 [DEBUG] [Thread-115888] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:38:22.097 [DEBUG] [Thread-115888] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:38:22.097 [DEBUG] [Thread-115888] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:38:22.097 [DEBUG] [Thread-115888] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:38:22.097 [DEBUG] [Thread-115888] [transport.py] [_log()] Compression: none
2025-11-03T12:38:22.097 [DEBUG] [Thread-115888] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:38:22.154 [DEBUG] [Thread-115888] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:38:22.154 [DEBUG] [Thread-115888] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:38:22.154 [DEBUG] [Thread-115888] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:38:22.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:38:22.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:38:22.211 [DEBUG] [Thread-115888] [transport.py] [_log()] userauth is OK
2025-11-03T12:38:22.211 [DEBUG] [Thread-115888] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:38:22.211 [DEBUG] [Thread-115888] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:38:22.211 [DEBUG] [Thread-115888] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:38:22.211 [DEBUG] [Thread-115888] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:38:22.230 [INFO] [Thread-115888] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:38:22.230 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:38:22.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:38:23.074 [DEBUG] [Thread-115888] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:38:23.074 [DEBUG] [Thread-115888] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:38:23.121 [DEBUG] [Thread-115888] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:38:23.121 [DEBUG] [Thread-115888] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:38:23.129 [DEBUG] [Thread-115888] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:38:23.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:38:23.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:38:23.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:38:23.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:38:23.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:38:23.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:38:23.160 [DEBUG] [Thread-115888] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:38:28.448 [DEBUG] [Thread-115890 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:38:41.908 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:38:41.910 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:38:43.505 [DEBUG] [Thread-115891 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:38:53.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:38:53.183 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:38:53.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:38:53.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 38, 44), 44.17, 4.15, 0.0, 21.42, 25.29, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:38:53.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:38:44
2025-11-03T12:38:53.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:38:54.126 [DEBUG] [Thread-115892] [transport.py] [_log()] starting thread (client mode): 0xed4f730
2025-11-03T12:38:54.126 [DEBUG] [Thread-115892] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:38:54.146 [DEBUG] [Thread-115892] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:38:54.147 [INFO] [Thread-115892] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:38:54.157 [DEBUG] [Thread-115892] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:38:54.157 [DEBUG] [Thread-115892] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:38:54.157 [DEBUG] [Thread-115892] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:38:54.157 [DEBUG] [Thread-115892] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:38:54.157 [DEBUG] [Thread-115892] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:38:54.157 [DEBUG] [Thread-115892] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:38:54.157 [DEBUG] [Thread-115892] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:38:54.157 [DEBUG] [Thread-115892] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:38:54.157 [DEBUG] [Thread-115892] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:38:54.157 [DEBUG] [Thread-115892] [transport.py] [_log()] client lang: <none>
2025-11-03T12:38:54.157 [DEBUG] [Thread-115892] [transport.py] [_log()] server lang: <none>
2025-11-03T12:38:54.157 [DEBUG] [Thread-115892] [transport.py] [_log()] kex follows: False
2025-11-03T12:38:54.157 [DEBUG] [Thread-115892] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:38:54.158 [DEBUG] [Thread-115892] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:38:54.158 [DEBUG] [Thread-115892] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:38:54.158 [DEBUG] [Thread-115892] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:38:54.158 [DEBUG] [Thread-115892] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:38:54.158 [DEBUG] [Thread-115892] [transport.py] [_log()] Compression: none
2025-11-03T12:38:54.158 [DEBUG] [Thread-115892] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:38:54.178 [DEBUG] [Thread-115892] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:38:54.178 [DEBUG] [Thread-115892] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:38:54.179 [DEBUG] [Thread-115892] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:38:54.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:38:54.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:38:54.181 [DEBUG] [Thread-115892] [transport.py] [_log()] userauth is OK
2025-11-03T12:38:54.181 [DEBUG] [Thread-115892] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:38:54.181 [DEBUG] [Thread-115892] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:38:54.181 [DEBUG] [Thread-115892] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:38:54.181 [DEBUG] [Thread-115892] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:38:54.205 [INFO] [Thread-115892] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:38:54.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:38:54.947 [DEBUG] [Thread-115892] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:38:54.948 [DEBUG] [Thread-115892] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:38:54.948 [DEBUG] [Thread-115892] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:38:54.988 [DEBUG] [Thread-115892] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:38:54.988 [DEBUG] [Thread-115892] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:38:54.991 [DEBUG] [Thread-115892] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:38:55.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:38:55.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:38:55.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:38:55.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:38:55.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:38:55.014 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:38:55.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:38:55.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:38:55.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:38:55.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.443160 -999.00  +24.80  30.87      8  -10.30 1 1 2 1 1   888    0 37.09 114.23 ----- 25.9 30.9 12.6 36.8 29.9 -29.2 29.0 -29.5 29.1 -28.4 29.7 -28.8
2025-11-03T12:38:55.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:38:55.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:38:55.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.443160
2025-11-03T12:38:55.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:38:55.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:38:55.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:38:55.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:38:55.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:38:55.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:38:44', tmtdew=44.17, humidity=4.15, cloud=0.0, wind=21.42, temperature=25.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:38:09.024', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:38:55.017 [DEBUG] [Thread-115892] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:38:55.100 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:38:55.112 [DEBUG] [Thread-115895] [transport.py] [_log()] starting thread (client mode): 0xed4dd20
2025-11-03T12:38:55.112 [DEBUG] [Thread-115895] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:38:55.127 [DEBUG] [Thread-115895] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:38:55.127 [INFO] [Thread-115895] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:38:55.135 [DEBUG] [Thread-115895] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:38:55.135 [DEBUG] [Thread-115895] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:38:55.135 [DEBUG] [Thread-115895] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:38:55.135 [DEBUG] [Thread-115895] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:38:55.135 [DEBUG] [Thread-115895] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:38:55.135 [DEBUG] [Thread-115895] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:38:55.135 [DEBUG] [Thread-115895] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:38:55.135 [DEBUG] [Thread-115895] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:38:55.135 [DEBUG] [Thread-115895] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:38:55.135 [DEBUG] [Thread-115895] [transport.py] [_log()] client lang: <none>
2025-11-03T12:38:55.135 [DEBUG] [Thread-115895] [transport.py] [_log()] server lang: <none>
2025-11-03T12:38:55.135 [DEBUG] [Thread-115895] [transport.py] [_log()] kex follows: False
2025-11-03T12:38:55.135 [DEBUG] [Thread-115895] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:38:55.135 [DEBUG] [Thread-115895] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:38:55.135 [DEBUG] [Thread-115895] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:38:55.136 [DEBUG] [Thread-115895] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:38:55.136 [DEBUG] [Thread-115895] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:38:55.136 [DEBUG] [Thread-115895] [transport.py] [_log()] Compression: none
2025-11-03T12:38:55.136 [DEBUG] [Thread-115895] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:38:55.191 [DEBUG] [Thread-115895] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:38:55.192 [DEBUG] [Thread-115895] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:38:55.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:38:55.193 [DEBUG] [Thread-115895] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:38:55.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:38:55.248 [DEBUG] [Thread-115895] [transport.py] [_log()] userauth is OK
2025-11-03T12:38:55.248 [DEBUG] [Thread-115895] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:38:55.248 [DEBUG] [Thread-115895] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:38:55.248 [DEBUG] [Thread-115895] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:38:55.248 [DEBUG] [Thread-115895] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:38:55.267 [INFO] [Thread-115895] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:38:55.267 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:38:55.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:38:56.095 [DEBUG] [Thread-115895] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:38:56.095 [DEBUG] [Thread-115895] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:38:56.143 [DEBUG] [Thread-115895] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:38:56.143 [DEBUG] [Thread-115895] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:38:56.152 [DEBUG] [Thread-115895] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:38:56.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:38:56.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:38:56.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:38:56.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:38:56.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:38:56.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:38:56.189 [DEBUG] [Thread-115895] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:38:58.539 [DEBUG] [Thread-115897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:39:01.473 [DEBUG] [Thread-115898 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:39:13.587 [DEBUG] [Thread-115899 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:39:26.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:39:26.212 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:39:26.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:39:26.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 39, 17), 43.88, 4.25, 0.0, 23.55, 25.19, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:39:26.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:39:17
2025-11-03T12:39:27.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:39:27.228 [DEBUG] [Thread-115900] [transport.py] [_log()] starting thread (client mode): 0xed4f940
2025-11-03T12:39:27.228 [DEBUG] [Thread-115900] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:39:27.248 [DEBUG] [Thread-115900] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:39:27.248 [INFO] [Thread-115900] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:39:27.252 [DEBUG] [Thread-115900] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:39:27.252 [DEBUG] [Thread-115900] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:39:27.252 [DEBUG] [Thread-115900] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:39:27.252 [DEBUG] [Thread-115900] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:39:27.252 [DEBUG] [Thread-115900] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:39:27.252 [DEBUG] [Thread-115900] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:39:27.252 [DEBUG] [Thread-115900] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:39:27.252 [DEBUG] [Thread-115900] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:39:27.252 [DEBUG] [Thread-115900] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:39:27.252 [DEBUG] [Thread-115900] [transport.py] [_log()] client lang: <none>
2025-11-03T12:39:27.253 [DEBUG] [Thread-115900] [transport.py] [_log()] server lang: <none>
2025-11-03T12:39:27.253 [DEBUG] [Thread-115900] [transport.py] [_log()] kex follows: False
2025-11-03T12:39:27.253 [DEBUG] [Thread-115900] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:39:27.253 [DEBUG] [Thread-115900] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:39:27.253 [DEBUG] [Thread-115900] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:39:27.253 [DEBUG] [Thread-115900] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:39:27.253 [DEBUG] [Thread-115900] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:39:27.253 [DEBUG] [Thread-115900] [transport.py] [_log()] Compression: none
2025-11-03T12:39:27.253 [DEBUG] [Thread-115900] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:39:27.271 [DEBUG] [Thread-115900] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:39:27.272 [DEBUG] [Thread-115900] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:39:27.282 [DEBUG] [Thread-115900] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:39:27.282 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:39:27.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:39:27.284 [DEBUG] [Thread-115900] [transport.py] [_log()] userauth is OK
2025-11-03T12:39:27.284 [DEBUG] [Thread-115900] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:39:27.285 [DEBUG] [Thread-115900] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:39:27.285 [DEBUG] [Thread-115900] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:39:27.285 [DEBUG] [Thread-115900] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:39:27.311 [INFO] [Thread-115900] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:39:27.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:39:27.952 [DEBUG] [Thread-115900] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:39:27.953 [DEBUG] [Thread-115900] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:39:27.953 [DEBUG] [Thread-115900] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:39:27.994 [DEBUG] [Thread-115900] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:39:27.994 [DEBUG] [Thread-115900] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:39:27.998 [DEBUG] [Thread-115900] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:39:28.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:39:28.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:39:28.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:39:28.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:39:28.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:39:28.032 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:39:28.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:39:28.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:39:28.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:39:28.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.443507 -999.00  +24.70  21.20      9  -10.10 1 1 1 1 1   888    0 37.15 109.41 ----- 21.4 21.2 346.1 30.0 29.6 -29.2 28.8 -28.8 28.9 -29.2 29.5 -29.4
2025-11-03T12:39:28.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:39:28.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:39:28.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.443507
2025-11-03T12:39:28.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:39:28.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:39:28.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:39:28.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:39:28.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:39:28.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:39:17', tmtdew=43.88, humidity=4.25, cloud=0.0, wind=23.55, temperature=25.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:38:39.005', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:39:28.036 [DEBUG] [Thread-115900] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:39:28.134 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:39:28.146 [DEBUG] [Thread-115903] [transport.py] [_log()] starting thread (client mode): 0xed4fac0
2025-11-03T12:39:28.147 [DEBUG] [Thread-115903] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:39:28.164 [DEBUG] [Thread-115903] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:39:28.164 [INFO] [Thread-115903] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:39:28.171 [DEBUG] [Thread-115903] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:39:28.172 [DEBUG] [Thread-115903] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:39:28.172 [DEBUG] [Thread-115903] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:39:28.172 [DEBUG] [Thread-115903] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:39:28.172 [DEBUG] [Thread-115903] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:39:28.172 [DEBUG] [Thread-115903] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:39:28.172 [DEBUG] [Thread-115903] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:39:28.173 [DEBUG] [Thread-115903] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:39:28.173 [DEBUG] [Thread-115903] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:39:28.173 [DEBUG] [Thread-115903] [transport.py] [_log()] client lang: <none>
2025-11-03T12:39:28.173 [DEBUG] [Thread-115903] [transport.py] [_log()] server lang: <none>
2025-11-03T12:39:28.173 [DEBUG] [Thread-115903] [transport.py] [_log()] kex follows: False
2025-11-03T12:39:28.173 [DEBUG] [Thread-115903] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:39:28.174 [DEBUG] [Thread-115903] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:39:28.174 [DEBUG] [Thread-115903] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:39:28.174 [DEBUG] [Thread-115903] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:39:28.174 [DEBUG] [Thread-115903] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:39:28.174 [DEBUG] [Thread-115903] [transport.py] [_log()] Compression: none
2025-11-03T12:39:28.174 [DEBUG] [Thread-115903] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:39:28.235 [DEBUG] [Thread-115903] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:39:28.245 [DEBUG] [Thread-115903] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:39:28.246 [DEBUG] [Thread-115903] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:39:28.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:39:28.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:39:28.297 [DEBUG] [Thread-115903] [transport.py] [_log()] userauth is OK
2025-11-03T12:39:28.297 [DEBUG] [Thread-115903] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:39:28.297 [DEBUG] [Thread-115903] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:39:28.297 [DEBUG] [Thread-115903] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:39:28.298 [DEBUG] [Thread-115903] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:39:28.316 [INFO] [Thread-115903] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:39:28.317 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:39:28.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:39:28.633 [DEBUG] [Thread-115905 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:39:29.163 [DEBUG] [Thread-115903] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:39:29.163 [DEBUG] [Thread-115903] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:39:29.212 [DEBUG] [Thread-115903] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:39:29.212 [DEBUG] [Thread-115903] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:39:29.222 [DEBUG] [Thread-115903] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:39:29.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:39:29.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:39:29.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:39:29.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:39:29.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:39:29.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:39:29.258 [DEBUG] [Thread-115903] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:39:42.051 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:39:42.052 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:39:43.684 [DEBUG] [Thread-115906 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:39:58.715 [DEBUG] [Thread-115907 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:39:59.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:39:59.281 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:39:59.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:39:59.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 39, 49), 44.1, 4.18, 0.0, 20.5, 24.99, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:39:59.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:39:49
2025-11-03T12:40:00.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:40:00.230 [DEBUG] [Thread-115908] [transport.py] [_log()] starting thread (client mode): 0xed4eef0
2025-11-03T12:40:00.230 [DEBUG] [Thread-115908] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:40:00.247 [DEBUG] [Thread-115908] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:40:00.247 [INFO] [Thread-115908] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:40:00.256 [DEBUG] [Thread-115908] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:40:00.256 [DEBUG] [Thread-115908] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:40:00.256 [DEBUG] [Thread-115908] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:40:00.256 [DEBUG] [Thread-115908] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:40:00.256 [DEBUG] [Thread-115908] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:40:00.256 [DEBUG] [Thread-115908] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:40:00.257 [DEBUG] [Thread-115908] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:40:00.257 [DEBUG] [Thread-115908] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:40:00.257 [DEBUG] [Thread-115908] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:40:00.257 [DEBUG] [Thread-115908] [transport.py] [_log()] client lang: <none>
2025-11-03T12:40:00.257 [DEBUG] [Thread-115908] [transport.py] [_log()] server lang: <none>
2025-11-03T12:40:00.257 [DEBUG] [Thread-115908] [transport.py] [_log()] kex follows: False
2025-11-03T12:40:00.257 [DEBUG] [Thread-115908] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:40:00.257 [DEBUG] [Thread-115908] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:40:00.257 [DEBUG] [Thread-115908] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:40:00.257 [DEBUG] [Thread-115908] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:40:00.257 [DEBUG] [Thread-115908] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:40:00.257 [DEBUG] [Thread-115908] [transport.py] [_log()] Compression: none
2025-11-03T12:40:00.257 [DEBUG] [Thread-115908] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:40:00.267 [DEBUG] [Thread-115908] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:40:00.268 [DEBUG] [Thread-115908] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:40:00.269 [DEBUG] [Thread-115908] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:40:00.269 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:40:00.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:40:00.271 [DEBUG] [Thread-115908] [transport.py] [_log()] userauth is OK
2025-11-03T12:40:00.271 [DEBUG] [Thread-115908] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:40:00.271 [DEBUG] [Thread-115908] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:40:00.271 [DEBUG] [Thread-115908] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:40:00.271 [DEBUG] [Thread-115908] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:40:00.296 [INFO] [Thread-115908] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:40:00.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:40:00.977 [DEBUG] [Thread-115908] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:40:00.977 [DEBUG] [Thread-115908] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:40:00.978 [DEBUG] [Thread-115908] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:40:01.018 [DEBUG] [Thread-115908] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:40:01.018 [DEBUG] [Thread-115908] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:40:01.022 [DEBUG] [Thread-115908] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:40:01.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:40:01.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:40:01.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:40:01.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:40:01.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:40:01.049 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:40:01.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:40:01.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:40:01.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:40:01.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.443854 -999.00  +24.50  12.51      9  -10.10 1 1 1 1 1   888    0 36.88 113.21 ----- 24.0 12.5 0.2 31.3 29.6 -30.1 28.8 -29.2 28.9 -29.3 29.5 -28.7
2025-11-03T12:40:01.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:40:01.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:40:01.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.443854
2025-11-03T12:40:01.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:40:01.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:40:01.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:40:01.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:40:01.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:40:01.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:39:49', tmtdew=44.1, humidity=4.18, cloud=0.0, wind=20.5, temperature=24.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:39:08.986', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:40:01.053 [DEBUG] [Thread-115908] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:40:01.135 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:40:01.147 [DEBUG] [Thread-115911] [transport.py] [_log()] starting thread (client mode): 0xed4f100
2025-11-03T12:40:01.147 [DEBUG] [Thread-115911] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:40:01.162 [DEBUG] [Thread-115911] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:40:01.162 [INFO] [Thread-115911] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:40:01.170 [DEBUG] [Thread-115911] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:40:01.170 [DEBUG] [Thread-115911] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:40:01.170 [DEBUG] [Thread-115911] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:40:01.170 [DEBUG] [Thread-115911] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:40:01.170 [DEBUG] [Thread-115911] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:40:01.170 [DEBUG] [Thread-115911] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:40:01.170 [DEBUG] [Thread-115911] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:40:01.170 [DEBUG] [Thread-115911] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:40:01.170 [DEBUG] [Thread-115911] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:40:01.170 [DEBUG] [Thread-115911] [transport.py] [_log()] client lang: <none>
2025-11-03T12:40:01.170 [DEBUG] [Thread-115911] [transport.py] [_log()] server lang: <none>
2025-11-03T12:40:01.170 [DEBUG] [Thread-115911] [transport.py] [_log()] kex follows: False
2025-11-03T12:40:01.170 [DEBUG] [Thread-115911] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:40:01.171 [DEBUG] [Thread-115911] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:40:01.171 [DEBUG] [Thread-115911] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:40:01.171 [DEBUG] [Thread-115911] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:40:01.171 [DEBUG] [Thread-115911] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:40:01.171 [DEBUG] [Thread-115911] [transport.py] [_log()] Compression: none
2025-11-03T12:40:01.171 [DEBUG] [Thread-115911] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:40:01.227 [DEBUG] [Thread-115911] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:40:01.228 [DEBUG] [Thread-115911] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:40:01.229 [DEBUG] [Thread-115911] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:40:01.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:40:01.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:40:01.283 [DEBUG] [Thread-115911] [transport.py] [_log()] userauth is OK
2025-11-03T12:40:01.283 [DEBUG] [Thread-115911] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:40:01.284 [DEBUG] [Thread-115911] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:40:01.284 [DEBUG] [Thread-115911] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:40:01.284 [DEBUG] [Thread-115911] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:40:01.303 [INFO] [Thread-115911] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:40:01.303 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:40:01.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:40:01.526 [DEBUG] [Thread-115913 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:40:02.213 [DEBUG] [Thread-115911] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:40:02.213 [DEBUG] [Thread-115911] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:40:02.260 [DEBUG] [Thread-115911] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:40:02.260 [DEBUG] [Thread-115911] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:40:02.269 [DEBUG] [Thread-115911] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:40:02.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:40:02.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:40:02.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:40:02.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:40:02.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:40:02.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:40:02.302 [DEBUG] [Thread-115911] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:40:13.750 [DEBUG] [Thread-115914 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:40:28.797 [DEBUG] [Thread-115915 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:40:32.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:40:32.325 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:40:32.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:40:32.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 40, 21), 43.72, 4.32, 0.0, 22.21, 24.86, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:40:32.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:40:21
2025-11-03T12:40:33.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:40:33.259 [DEBUG] [Thread-115916] [transport.py] [_log()] starting thread (client mode): 0x81bbb80
2025-11-03T12:40:33.259 [DEBUG] [Thread-115916] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:40:33.278 [DEBUG] [Thread-115916] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:40:33.279 [INFO] [Thread-115916] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:40:33.282 [DEBUG] [Thread-115916] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:40:33.282 [DEBUG] [Thread-115916] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:40:33.282 [DEBUG] [Thread-115916] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:40:33.282 [DEBUG] [Thread-115916] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:40:33.282 [DEBUG] [Thread-115916] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:40:33.282 [DEBUG] [Thread-115916] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:40:33.282 [DEBUG] [Thread-115916] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:40:33.282 [DEBUG] [Thread-115916] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:40:33.283 [DEBUG] [Thread-115916] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:40:33.283 [DEBUG] [Thread-115916] [transport.py] [_log()] client lang: <none>
2025-11-03T12:40:33.283 [DEBUG] [Thread-115916] [transport.py] [_log()] server lang: <none>
2025-11-03T12:40:33.283 [DEBUG] [Thread-115916] [transport.py] [_log()] kex follows: False
2025-11-03T12:40:33.283 [DEBUG] [Thread-115916] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:40:33.283 [DEBUG] [Thread-115916] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:40:33.283 [DEBUG] [Thread-115916] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:40:33.283 [DEBUG] [Thread-115916] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:40:33.283 [DEBUG] [Thread-115916] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:40:33.283 [DEBUG] [Thread-115916] [transport.py] [_log()] Compression: none
2025-11-03T12:40:33.283 [DEBUG] [Thread-115916] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:40:33.304 [DEBUG] [Thread-115916] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:40:33.305 [DEBUG] [Thread-115916] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:40:33.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:40:33.306 [DEBUG] [Thread-115916] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:40:33.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:40:33.349 [DEBUG] [Thread-115916] [transport.py] [_log()] userauth is OK
2025-11-03T12:40:33.349 [DEBUG] [Thread-115916] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:40:33.349 [DEBUG] [Thread-115916] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:40:33.349 [DEBUG] [Thread-115916] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:40:33.349 [DEBUG] [Thread-115916] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:40:33.373 [INFO] [Thread-115916] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:40:33.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:40:34.007 [DEBUG] [Thread-115916] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:40:34.008 [DEBUG] [Thread-115916] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:40:34.008 [DEBUG] [Thread-115916] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:40:34.049 [DEBUG] [Thread-115916] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:40:34.049 [DEBUG] [Thread-115916] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:40:34.053 [DEBUG] [Thread-115916] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:40:34.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:40:34.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:40:34.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:40:34.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:40:34.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:40:34.079 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:40:34.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:40:34.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:40:34.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:40:34.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.444201 -999.00  +23.90  15.85      9  -10.20 1 1 1 1 1   888    0 37.29 106.15 ----- 13.4 15.8 330.2 27.2 29.7 -29.4 28.9 -28.1 28.9 -28.1 29.4 -28.5
2025-11-03T12:40:34.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:40:34.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:40:34.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.444201
2025-11-03T12:40:34.088 [DEBUG] [Thread-115916] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:40:34.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:40:34.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:40:34.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:40:34.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:40:34.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:40:34.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:40:21', tmtdew=43.72, humidity=4.32, cloud=0.0, wind=22.21, temperature=24.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:39:38.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:40:34.173 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:40:34.186 [DEBUG] [Thread-115919] [transport.py] [_log()] starting thread (client mode): 0x81b8af0
2025-11-03T12:40:34.186 [DEBUG] [Thread-115919] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:40:34.201 [DEBUG] [Thread-115919] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:40:34.201 [INFO] [Thread-115919] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:40:34.209 [DEBUG] [Thread-115919] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:40:34.209 [DEBUG] [Thread-115919] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:40:34.209 [DEBUG] [Thread-115919] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:40:34.209 [DEBUG] [Thread-115919] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:40:34.209 [DEBUG] [Thread-115919] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:40:34.209 [DEBUG] [Thread-115919] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:40:34.210 [DEBUG] [Thread-115919] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:40:34.210 [DEBUG] [Thread-115919] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:40:34.210 [DEBUG] [Thread-115919] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:40:34.210 [DEBUG] [Thread-115919] [transport.py] [_log()] client lang: <none>
2025-11-03T12:40:34.210 [DEBUG] [Thread-115919] [transport.py] [_log()] server lang: <none>
2025-11-03T12:40:34.210 [DEBUG] [Thread-115919] [transport.py] [_log()] kex follows: False
2025-11-03T12:40:34.210 [DEBUG] [Thread-115919] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:40:34.210 [DEBUG] [Thread-115919] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:40:34.210 [DEBUG] [Thread-115919] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:40:34.210 [DEBUG] [Thread-115919] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:40:34.210 [DEBUG] [Thread-115919] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:40:34.210 [DEBUG] [Thread-115919] [transport.py] [_log()] Compression: none
2025-11-03T12:40:34.210 [DEBUG] [Thread-115919] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:40:34.268 [DEBUG] [Thread-115919] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:40:34.268 [DEBUG] [Thread-115919] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:40:34.279 [DEBUG] [Thread-115919] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:40:34.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:40:34.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:40:34.326 [DEBUG] [Thread-115919] [transport.py] [_log()] userauth is OK
2025-11-03T12:40:34.326 [DEBUG] [Thread-115919] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:40:34.327 [DEBUG] [Thread-115919] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:40:34.327 [DEBUG] [Thread-115919] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:40:34.327 [DEBUG] [Thread-115919] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:40:34.341 [INFO] [Thread-115919] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:40:34.341 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:40:34.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:40:35.196 [DEBUG] [Thread-115919] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:40:35.196 [DEBUG] [Thread-115919] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:40:35.244 [DEBUG] [Thread-115919] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:40:35.244 [DEBUG] [Thread-115919] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:40:35.253 [DEBUG] [Thread-115919] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:40:35.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:40:35.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:40:35.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:40:35.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:40:35.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:40:35.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:40:35.285 [DEBUG] [Thread-115919] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:40:42.191 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:40:42.192 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:40:43.831 [DEBUG] [Thread-115921 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:40:58.876 [DEBUG] [Thread-115922 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:41:01.556 [DEBUG] [Thread-115923 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:41:05.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:41:05.308 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:41:05.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:41:05.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 40, 54), 43.09, 4.83, 0.0, 24.67, 24.71, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:41:05.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:40:54
2025-11-03T12:41:06.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:41:06.267 [DEBUG] [Thread-115924] [transport.py] [_log()] starting thread (client mode): 0xed4fc10
2025-11-03T12:41:06.267 [DEBUG] [Thread-115924] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:41:06.279 [DEBUG] [Thread-115924] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:41:06.279 [INFO] [Thread-115924] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:41:06.289 [DEBUG] [Thread-115924] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:41:06.290 [DEBUG] [Thread-115924] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:41:06.290 [DEBUG] [Thread-115924] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:41:06.290 [DEBUG] [Thread-115924] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:41:06.290 [DEBUG] [Thread-115924] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:41:06.290 [DEBUG] [Thread-115924] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:41:06.290 [DEBUG] [Thread-115924] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:41:06.290 [DEBUG] [Thread-115924] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:41:06.290 [DEBUG] [Thread-115924] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:41:06.290 [DEBUG] [Thread-115924] [transport.py] [_log()] client lang: <none>
2025-11-03T12:41:06.290 [DEBUG] [Thread-115924] [transport.py] [_log()] server lang: <none>
2025-11-03T12:41:06.290 [DEBUG] [Thread-115924] [transport.py] [_log()] kex follows: False
2025-11-03T12:41:06.290 [DEBUG] [Thread-115924] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:41:06.290 [DEBUG] [Thread-115924] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:41:06.290 [DEBUG] [Thread-115924] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:41:06.290 [DEBUG] [Thread-115924] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:41:06.291 [DEBUG] [Thread-115924] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:41:06.291 [DEBUG] [Thread-115924] [transport.py] [_log()] Compression: none
2025-11-03T12:41:06.291 [DEBUG] [Thread-115924] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:41:06.302 [DEBUG] [Thread-115924] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:41:06.303 [DEBUG] [Thread-115924] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:41:06.303 [DEBUG] [Thread-115924] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:41:06.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:41:06.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:41:06.305 [DEBUG] [Thread-115924] [transport.py] [_log()] userauth is OK
2025-11-03T12:41:06.305 [DEBUG] [Thread-115924] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:41:06.305 [DEBUG] [Thread-115924] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:41:06.306 [DEBUG] [Thread-115924] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:41:06.306 [DEBUG] [Thread-115924] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:41:06.320 [INFO] [Thread-115924] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:41:06.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:41:06.896 [DEBUG] [Thread-115924] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:41:06.896 [DEBUG] [Thread-115924] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:41:06.896 [DEBUG] [Thread-115924] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:41:06.937 [DEBUG] [Thread-115924] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:41:06.937 [DEBUG] [Thread-115924] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:41:06.940 [DEBUG] [Thread-115924] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:41:06.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:41:06.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:41:06.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:41:06.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:41:06.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:41:06.966 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:41:06.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:41:06.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:41:06.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:41:06.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.444895 -999.00  +24.30  22.14      9   -9.80 1 1 1 1 1   888    0 36.99 106.68 ----- 20.9 22.1 339.0 28.7 29.8 -28.6 28.9 -28.6 29.0 -27.4 29.7 -28.0
2025-11-03T12:41:06.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:41:06.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:41:06.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.444895
2025-11-03T12:41:06.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:41:06.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:41:06.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:41:06.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:41:06.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:41:06.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:40:54', tmtdew=43.09, humidity=4.83, cloud=0.0, wind=24.67, temperature=24.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:40:38.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:41:06.969 [DEBUG] [Thread-115924] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:41:07.052 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:41:07.065 [DEBUG] [Thread-115927] [transport.py] [_log()] starting thread (client mode): 0xed4c1f0
2025-11-03T12:41:07.065 [DEBUG] [Thread-115927] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:41:07.080 [DEBUG] [Thread-115927] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:41:07.080 [INFO] [Thread-115927] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:41:07.087 [DEBUG] [Thread-115927] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:41:07.088 [DEBUG] [Thread-115927] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:41:07.088 [DEBUG] [Thread-115927] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:41:07.088 [DEBUG] [Thread-115927] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:41:07.088 [DEBUG] [Thread-115927] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:41:07.088 [DEBUG] [Thread-115927] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:41:07.088 [DEBUG] [Thread-115927] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:41:07.088 [DEBUG] [Thread-115927] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:41:07.088 [DEBUG] [Thread-115927] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:41:07.088 [DEBUG] [Thread-115927] [transport.py] [_log()] client lang: <none>
2025-11-03T12:41:07.088 [DEBUG] [Thread-115927] [transport.py] [_log()] server lang: <none>
2025-11-03T12:41:07.088 [DEBUG] [Thread-115927] [transport.py] [_log()] kex follows: False
2025-11-03T12:41:07.088 [DEBUG] [Thread-115927] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:41:07.089 [DEBUG] [Thread-115927] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:41:07.089 [DEBUG] [Thread-115927] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:41:07.089 [DEBUG] [Thread-115927] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:41:07.089 [DEBUG] [Thread-115927] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:41:07.089 [DEBUG] [Thread-115927] [transport.py] [_log()] Compression: none
2025-11-03T12:41:07.089 [DEBUG] [Thread-115927] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:41:07.148 [DEBUG] [Thread-115927] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:41:07.149 [DEBUG] [Thread-115927] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:41:07.149 [DEBUG] [Thread-115927] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:41:07.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:41:07.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:41:07.208 [DEBUG] [Thread-115927] [transport.py] [_log()] userauth is OK
2025-11-03T12:41:07.208 [DEBUG] [Thread-115927] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:41:07.208 [DEBUG] [Thread-115927] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:41:07.209 [DEBUG] [Thread-115927] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:41:07.209 [DEBUG] [Thread-115927] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:41:07.230 [INFO] [Thread-115927] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:41:07.230 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:41:07.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:41:08.098 [DEBUG] [Thread-115927] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:41:08.098 [DEBUG] [Thread-115927] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:41:08.149 [DEBUG] [Thread-115927] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:41:08.149 [DEBUG] [Thread-115927] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:41:08.158 [DEBUG] [Thread-115927] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:41:08.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:41:08.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:41:08.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:41:08.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:41:08.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:41:08.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:41:08.189 [DEBUG] [Thread-115927] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:41:13.908 [DEBUG] [Thread-115929 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:41:28.958 [DEBUG] [Thread-115930 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:41:38.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:41:38.209 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:41:38.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:41:38.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 41, 27), 43.37, 4.73, 0.0, 25.62, 24.79, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:41:38.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:41:27
2025-11-03T12:41:39.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:41:39.200 [DEBUG] [Thread-115931] [transport.py] [_log()] starting thread (client mode): 0x81bb1f0
2025-11-03T12:41:39.200 [DEBUG] [Thread-115931] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:41:39.222 [DEBUG] [Thread-115931] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:41:39.222 [INFO] [Thread-115931] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:41:39.225 [DEBUG] [Thread-115931] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:41:39.226 [DEBUG] [Thread-115931] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:41:39.226 [DEBUG] [Thread-115931] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:41:39.226 [DEBUG] [Thread-115931] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:41:39.226 [DEBUG] [Thread-115931] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:41:39.226 [DEBUG] [Thread-115931] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:41:39.226 [DEBUG] [Thread-115931] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:41:39.226 [DEBUG] [Thread-115931] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:41:39.226 [DEBUG] [Thread-115931] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:41:39.226 [DEBUG] [Thread-115931] [transport.py] [_log()] client lang: <none>
2025-11-03T12:41:39.226 [DEBUG] [Thread-115931] [transport.py] [_log()] server lang: <none>
2025-11-03T12:41:39.226 [DEBUG] [Thread-115931] [transport.py] [_log()] kex follows: False
2025-11-03T12:41:39.226 [DEBUG] [Thread-115931] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:41:39.226 [DEBUG] [Thread-115931] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:41:39.226 [DEBUG] [Thread-115931] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:41:39.226 [DEBUG] [Thread-115931] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:41:39.226 [DEBUG] [Thread-115931] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:41:39.226 [DEBUG] [Thread-115931] [transport.py] [_log()] Compression: none
2025-11-03T12:41:39.226 [DEBUG] [Thread-115931] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:41:39.242 [DEBUG] [Thread-115931] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:41:39.251 [DEBUG] [Thread-115931] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:41:39.251 [DEBUG] [Thread-115931] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:41:39.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:41:39.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:41:39.252 [DEBUG] [Thread-115931] [transport.py] [_log()] userauth is OK
2025-11-03T12:41:39.252 [DEBUG] [Thread-115931] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:41:39.252 [DEBUG] [Thread-115931] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:41:39.252 [DEBUG] [Thread-115931] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:41:39.252 [DEBUG] [Thread-115931] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:41:39.269 [INFO] [Thread-115931] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:41:39.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:41:39.893 [DEBUG] [Thread-115931] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:41:39.893 [DEBUG] [Thread-115931] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:41:39.893 [DEBUG] [Thread-115931] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:41:39.934 [DEBUG] [Thread-115931] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:41:39.934 [DEBUG] [Thread-115931] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:41:39.936 [DEBUG] [Thread-115931] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:41:39.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:41:39.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:41:39.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:41:39.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:41:39.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:41:39.952 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:41:39.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:41:39.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:41:39.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:41:39.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.445232 -999.00  +24.40  19.63      9   -9.60 1 1 1 1 1   888    0 37.53 103.73 ----- 16.8 19.6 317.5 31.8 29.8 -29.1 28.9 -29.1 29.0 -28.1 29.7 -28.8
2025-11-03T12:41:39.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:41:39.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:41:39.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.445232
2025-11-03T12:41:39.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:41:39.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:41:39.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:41:39.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:41:39.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:41:39.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:41:27', tmtdew=43.37, humidity=4.73, cloud=0.0, wind=25.62, temperature=24.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:41:08.045', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:41:39.953 [DEBUG] [Thread-115931] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:41:40.029 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:41:40.040 [DEBUG] [Thread-115934] [transport.py] [_log()] starting thread (client mode): 0x81b8cd0
2025-11-03T12:41:40.040 [DEBUG] [Thread-115934] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:41:40.055 [DEBUG] [Thread-115934] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:41:40.055 [INFO] [Thread-115934] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:41:40.062 [DEBUG] [Thread-115934] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:41:40.062 [DEBUG] [Thread-115934] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:41:40.062 [DEBUG] [Thread-115934] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:41:40.063 [DEBUG] [Thread-115934] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:41:40.063 [DEBUG] [Thread-115934] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:41:40.063 [DEBUG] [Thread-115934] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:41:40.063 [DEBUG] [Thread-115934] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:41:40.063 [DEBUG] [Thread-115934] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:41:40.063 [DEBUG] [Thread-115934] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:41:40.063 [DEBUG] [Thread-115934] [transport.py] [_log()] client lang: <none>
2025-11-03T12:41:40.063 [DEBUG] [Thread-115934] [transport.py] [_log()] server lang: <none>
2025-11-03T12:41:40.063 [DEBUG] [Thread-115934] [transport.py] [_log()] kex follows: False
2025-11-03T12:41:40.063 [DEBUG] [Thread-115934] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:41:40.063 [DEBUG] [Thread-115934] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:41:40.063 [DEBUG] [Thread-115934] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:41:40.063 [DEBUG] [Thread-115934] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:41:40.063 [DEBUG] [Thread-115934] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:41:40.063 [DEBUG] [Thread-115934] [transport.py] [_log()] Compression: none
2025-11-03T12:41:40.063 [DEBUG] [Thread-115934] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:41:40.121 [DEBUG] [Thread-115934] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:41:40.121 [DEBUG] [Thread-115934] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:41:40.121 [DEBUG] [Thread-115934] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:41:40.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:41:40.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:41:40.178 [DEBUG] [Thread-115934] [transport.py] [_log()] userauth is OK
2025-11-03T12:41:40.178 [DEBUG] [Thread-115934] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:41:40.178 [DEBUG] [Thread-115934] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:41:40.178 [DEBUG] [Thread-115934] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:41:40.178 [DEBUG] [Thread-115934] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:41:40.193 [INFO] [Thread-115934] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:41:40.193 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:41:40.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:41:41.098 [DEBUG] [Thread-115934] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:41:41.098 [DEBUG] [Thread-115934] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:41:41.147 [DEBUG] [Thread-115934] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:41:41.147 [DEBUG] [Thread-115934] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:41:41.155 [DEBUG] [Thread-115934] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:41:41.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:41:41.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:41:41.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:41:41.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:41:41.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:41:41.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:41:41.187 [DEBUG] [Thread-115934] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:41:42.342 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:41:42.343 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:41:43.987 [DEBUG] [Thread-115936 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:41:59.038 [DEBUG] [Thread-115937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:42:01.588 [DEBUG] [Thread-115938 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:42:11.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:42:11.181 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:42:11.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:42:11.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 41, 59), 43.09, 4.77, 0.0, 21.4, 24.86, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:42:11.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:41:59
2025-11-03T12:42:12.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:42:12.227 [DEBUG] [Thread-115939] [transport.py] [_log()] starting thread (client mode): 0xed4da80
2025-11-03T12:42:12.227 [DEBUG] [Thread-115939] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:42:12.248 [DEBUG] [Thread-115939] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:42:12.248 [INFO] [Thread-115939] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:42:12.251 [DEBUG] [Thread-115939] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:42:12.251 [DEBUG] [Thread-115939] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:42:12.251 [DEBUG] [Thread-115939] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:42:12.251 [DEBUG] [Thread-115939] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:42:12.251 [DEBUG] [Thread-115939] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:42:12.251 [DEBUG] [Thread-115939] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:42:12.251 [DEBUG] [Thread-115939] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:42:12.251 [DEBUG] [Thread-115939] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:42:12.251 [DEBUG] [Thread-115939] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:42:12.251 [DEBUG] [Thread-115939] [transport.py] [_log()] client lang: <none>
2025-11-03T12:42:12.251 [DEBUG] [Thread-115939] [transport.py] [_log()] server lang: <none>
2025-11-03T12:42:12.251 [DEBUG] [Thread-115939] [transport.py] [_log()] kex follows: False
2025-11-03T12:42:12.251 [DEBUG] [Thread-115939] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:42:12.251 [DEBUG] [Thread-115939] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:42:12.251 [DEBUG] [Thread-115939] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:42:12.251 [DEBUG] [Thread-115939] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:42:12.251 [DEBUG] [Thread-115939] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:42:12.251 [DEBUG] [Thread-115939] [transport.py] [_log()] Compression: none
2025-11-03T12:42:12.251 [DEBUG] [Thread-115939] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:42:12.272 [DEBUG] [Thread-115939] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:42:12.273 [DEBUG] [Thread-115939] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:42:12.283 [DEBUG] [Thread-115939] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:42:12.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:42:12.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:42:12.317 [DEBUG] [Thread-115939] [transport.py] [_log()] userauth is OK
2025-11-03T12:42:12.317 [DEBUG] [Thread-115939] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:42:12.317 [DEBUG] [Thread-115939] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:42:12.317 [DEBUG] [Thread-115939] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:42:12.317 [DEBUG] [Thread-115939] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:42:12.337 [INFO] [Thread-115939] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:42:12.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:42:12.951 [DEBUG] [Thread-115939] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:42:12.952 [DEBUG] [Thread-115939] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:42:12.952 [DEBUG] [Thread-115939] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:42:12.992 [DEBUG] [Thread-115939] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:42:12.992 [DEBUG] [Thread-115939] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:42:12.995 [DEBUG] [Thread-115939] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:42:13.006 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:42:13.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:42:13.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:42:13.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:42:13.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:42:13.016 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:42:13.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:42:13.017 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:42:13.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:42:13.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.445590 -999.00  +24.40  20.68      9  -10.00 1 1 1 1 1   888    0 37.39 110.95 ----- 24.8 20.7 355.6 33.8 29.7 -31.1 28.8 -30.1 28.9 -30.2 29.5 -28.6
2025-11-03T12:42:13.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:42:13.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:42:13.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.445590
2025-11-03T12:42:13.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:42:13.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:42:13.019 [DEBUG] [Thread-115939] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:42:13.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:42:13.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:42:13.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:42:13.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:41:59', tmtdew=43.09, humidity=4.77, cloud=0.0, wind=21.4, temperature=24.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:41:38.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:42:13.101 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:42:13.114 [DEBUG] [Thread-115942] [transport.py] [_log()] starting thread (client mode): 0x81babc0
2025-11-03T12:42:13.114 [DEBUG] [Thread-115942] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:42:13.129 [DEBUG] [Thread-115942] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:42:13.129 [INFO] [Thread-115942] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:42:13.137 [DEBUG] [Thread-115942] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:42:13.138 [DEBUG] [Thread-115942] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:42:13.138 [DEBUG] [Thread-115942] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:42:13.138 [DEBUG] [Thread-115942] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:42:13.138 [DEBUG] [Thread-115942] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:42:13.138 [DEBUG] [Thread-115942] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:42:13.138 [DEBUG] [Thread-115942] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:42:13.138 [DEBUG] [Thread-115942] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:42:13.138 [DEBUG] [Thread-115942] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:42:13.139 [DEBUG] [Thread-115942] [transport.py] [_log()] client lang: <none>
2025-11-03T12:42:13.139 [DEBUG] [Thread-115942] [transport.py] [_log()] server lang: <none>
2025-11-03T12:42:13.139 [DEBUG] [Thread-115942] [transport.py] [_log()] kex follows: False
2025-11-03T12:42:13.139 [DEBUG] [Thread-115942] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:42:13.139 [DEBUG] [Thread-115942] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:42:13.139 [DEBUG] [Thread-115942] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:42:13.139 [DEBUG] [Thread-115942] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:42:13.140 [DEBUG] [Thread-115942] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:42:13.148 [DEBUG] [Thread-115942] [transport.py] [_log()] Compression: none
2025-11-03T12:42:13.149 [DEBUG] [Thread-115942] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:42:13.195 [DEBUG] [Thread-115942] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:42:13.196 [DEBUG] [Thread-115942] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:42:13.197 [DEBUG] [Thread-115942] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:42:13.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:42:13.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:42:13.251 [DEBUG] [Thread-115942] [transport.py] [_log()] userauth is OK
2025-11-03T12:42:13.252 [DEBUG] [Thread-115942] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:42:13.252 [DEBUG] [Thread-115942] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:42:13.252 [DEBUG] [Thread-115942] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:42:13.252 [DEBUG] [Thread-115942] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:42:13.270 [INFO] [Thread-115942] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:42:13.271 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:42:13.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:42:14.071 [DEBUG] [Thread-115944 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:42:14.111 [DEBUG] [Thread-115942] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:42:14.111 [DEBUG] [Thread-115942] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:42:14.159 [DEBUG] [Thread-115942] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:42:14.159 [DEBUG] [Thread-115942] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:42:14.167 [DEBUG] [Thread-115942] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:42:14.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:42:14.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:42:14.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:42:14.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:42:14.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:42:14.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:42:14.200 [DEBUG] [Thread-115942] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:42:29.113 [DEBUG] [Thread-115945 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:42:42.484 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:42:42.485 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:42:44.152 [DEBUG] [Thread-115946 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:42:44.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:42:44.223 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:42:44.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:42:45.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 42, 32), 43.39, 4.65, 0.0, 24.45, 24.84, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:42:45.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:42:32
2025-11-03T12:42:45.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:42:45.324 [DEBUG] [Thread-115947] [transport.py] [_log()] starting thread (client mode): 0x81b9600
2025-11-03T12:42:45.324 [DEBUG] [Thread-115947] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:42:45.344 [DEBUG] [Thread-115947] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:42:45.344 [INFO] [Thread-115947] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:42:45.347 [DEBUG] [Thread-115947] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:42:45.347 [DEBUG] [Thread-115947] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:42:45.347 [DEBUG] [Thread-115947] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:42:45.347 [DEBUG] [Thread-115947] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:42:45.347 [DEBUG] [Thread-115947] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:42:45.347 [DEBUG] [Thread-115947] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:42:45.347 [DEBUG] [Thread-115947] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:42:45.347 [DEBUG] [Thread-115947] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:42:45.347 [DEBUG] [Thread-115947] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:42:45.347 [DEBUG] [Thread-115947] [transport.py] [_log()] client lang: <none>
2025-11-03T12:42:45.347 [DEBUG] [Thread-115947] [transport.py] [_log()] server lang: <none>
2025-11-03T12:42:45.347 [DEBUG] [Thread-115947] [transport.py] [_log()] kex follows: False
2025-11-03T12:42:45.347 [DEBUG] [Thread-115947] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:42:45.347 [DEBUG] [Thread-115947] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:42:45.347 [DEBUG] [Thread-115947] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:42:45.347 [DEBUG] [Thread-115947] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:42:45.347 [DEBUG] [Thread-115947] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:42:45.347 [DEBUG] [Thread-115947] [transport.py] [_log()] Compression: none
2025-11-03T12:42:45.347 [DEBUG] [Thread-115947] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:42:45.364 [DEBUG] [Thread-115947] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:42:45.364 [DEBUG] [Thread-115947] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:42:45.365 [DEBUG] [Thread-115947] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:42:45.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:42:45.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:42:45.365 [DEBUG] [Thread-115947] [transport.py] [_log()] userauth is OK
2025-11-03T12:42:45.365 [DEBUG] [Thread-115947] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:42:45.365 [DEBUG] [Thread-115947] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:42:45.365 [DEBUG] [Thread-115947] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:42:45.365 [DEBUG] [Thread-115947] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:42:45.375 [INFO] [Thread-115947] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:42:45.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:42:46.010 [DEBUG] [Thread-115947] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:42:46.010 [DEBUG] [Thread-115947] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:42:46.011 [DEBUG] [Thread-115947] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:42:46.051 [DEBUG] [Thread-115947] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:42:46.051 [DEBUG] [Thread-115947] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:42:46.054 [DEBUG] [Thread-115947] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:42:46.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:42:46.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:42:46.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:42:46.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:42:46.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:42:46.081 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:42:46.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:42:46.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:42:46.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:42:46.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.445937 -999.00  +24.30  18.42      9   -9.70 1 1 1 1 1   888    0 37.38 110.16 ----- 15.9 18.4 338.9 32.6 29.7 -29.3 28.9 -29.2 28.9 -27.9 29.6 -28.8
2025-11-03T12:42:46.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:42:46.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:42:46.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.445937
2025-11-03T12:42:46.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:42:46.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:42:46.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:42:46.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:42:46.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:42:46.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:42:32', tmtdew=43.39, humidity=4.65, cloud=0.0, wind=24.45, temperature=24.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:42:08.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:42:46.084 [DEBUG] [Thread-115947] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:42:46.167 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:42:46.179 [DEBUG] [Thread-115950] [transport.py] [_log()] starting thread (client mode): 0xed4ec80
2025-11-03T12:42:46.179 [DEBUG] [Thread-115950] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:42:46.194 [DEBUG] [Thread-115950] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:42:46.194 [INFO] [Thread-115950] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:42:46.202 [DEBUG] [Thread-115950] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:42:46.203 [DEBUG] [Thread-115950] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:42:46.203 [DEBUG] [Thread-115950] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:42:46.203 [DEBUG] [Thread-115950] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:42:46.203 [DEBUG] [Thread-115950] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:42:46.203 [DEBUG] [Thread-115950] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:42:46.203 [DEBUG] [Thread-115950] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:42:46.203 [DEBUG] [Thread-115950] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:42:46.203 [DEBUG] [Thread-115950] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:42:46.204 [DEBUG] [Thread-115950] [transport.py] [_log()] client lang: <none>
2025-11-03T12:42:46.204 [DEBUG] [Thread-115950] [transport.py] [_log()] server lang: <none>
2025-11-03T12:42:46.204 [DEBUG] [Thread-115950] [transport.py] [_log()] kex follows: False
2025-11-03T12:42:46.204 [DEBUG] [Thread-115950] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:42:46.204 [DEBUG] [Thread-115950] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:42:46.204 [DEBUG] [Thread-115950] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:42:46.204 [DEBUG] [Thread-115950] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:42:46.205 [DEBUG] [Thread-115950] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:42:46.205 [DEBUG] [Thread-115950] [transport.py] [_log()] Compression: none
2025-11-03T12:42:46.205 [DEBUG] [Thread-115950] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:42:46.272 [DEBUG] [Thread-115950] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:42:46.273 [DEBUG] [Thread-115950] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:42:46.273 [DEBUG] [Thread-115950] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:42:46.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:42:46.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:42:46.333 [DEBUG] [Thread-115950] [transport.py] [_log()] userauth is OK
2025-11-03T12:42:46.333 [DEBUG] [Thread-115950] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:42:46.334 [DEBUG] [Thread-115950] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:42:46.334 [DEBUG] [Thread-115950] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:42:46.334 [DEBUG] [Thread-115950] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:42:46.357 [INFO] [Thread-115950] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:42:46.357 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:42:46.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:42:47.202 [DEBUG] [Thread-115950] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:42:47.202 [DEBUG] [Thread-115950] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:42:47.249 [DEBUG] [Thread-115950] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:42:47.249 [DEBUG] [Thread-115950] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:42:47.258 [DEBUG] [Thread-115950] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:42:47.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:42:47.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:42:47.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:42:47.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:42:47.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:42:47.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:42:47.291 [DEBUG] [Thread-115950] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:42:59.185 [DEBUG] [Thread-115952 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:43:01.663 [DEBUG] [Thread-115953 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:43:14.228 [DEBUG] [Thread-115954 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:43:17.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:43:17.313 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:43:17.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:43:17.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 43, 4), 43.21, 4.72, 0.0, 24.77, 24.84, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:43:17.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:43:04
2025-11-03T12:43:18.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:43:18.237 [DEBUG] [Thread-115955] [transport.py] [_log()] starting thread (client mode): 0x117bf970
2025-11-03T12:43:18.238 [DEBUG] [Thread-115955] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:43:18.239 [DEBUG] [Thread-115955] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:43:18.239 [INFO] [Thread-115955] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:43:18.241 [DEBUG] [Thread-115955] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:43:18.241 [DEBUG] [Thread-115955] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:43:18.241 [DEBUG] [Thread-115955] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:43:18.241 [DEBUG] [Thread-115955] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:43:18.241 [DEBUG] [Thread-115955] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:43:18.241 [DEBUG] [Thread-115955] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:43:18.241 [DEBUG] [Thread-115955] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:43:18.241 [DEBUG] [Thread-115955] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:43:18.241 [DEBUG] [Thread-115955] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:43:18.241 [DEBUG] [Thread-115955] [transport.py] [_log()] client lang: <none>
2025-11-03T12:43:18.241 [DEBUG] [Thread-115955] [transport.py] [_log()] server lang: <none>
2025-11-03T12:43:18.241 [DEBUG] [Thread-115955] [transport.py] [_log()] kex follows: False
2025-11-03T12:43:18.241 [DEBUG] [Thread-115955] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:43:18.241 [DEBUG] [Thread-115955] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:43:18.241 [DEBUG] [Thread-115955] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:43:18.241 [DEBUG] [Thread-115955] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:43:18.241 [DEBUG] [Thread-115955] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:43:18.242 [DEBUG] [Thread-115955] [transport.py] [_log()] Compression: none
2025-11-03T12:43:18.242 [DEBUG] [Thread-115955] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:43:18.258 [DEBUG] [Thread-115955] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:43:18.258 [DEBUG] [Thread-115955] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:43:18.259 [DEBUG] [Thread-115955] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:43:18.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:43:18.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:43:18.260 [DEBUG] [Thread-115955] [transport.py] [_log()] userauth is OK
2025-11-03T12:43:18.260 [DEBUG] [Thread-115955] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:43:18.261 [DEBUG] [Thread-115955] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:43:18.261 [DEBUG] [Thread-115955] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:43:18.261 [DEBUG] [Thread-115955] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:43:18.285 [INFO] [Thread-115955] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:43:18.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:43:18.937 [DEBUG] [Thread-115955] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:43:18.937 [DEBUG] [Thread-115955] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:43:18.937 [DEBUG] [Thread-115955] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:43:18.978 [DEBUG] [Thread-115955] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:43:18.978 [DEBUG] [Thread-115955] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:43:18.980 [DEBUG] [Thread-115955] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:43:18.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:43:18.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:43:18.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:43:18.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:43:18.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:43:18.997 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:43:18.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:43:18.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:43:18.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:43:18.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.446284 -999.00  +24.50  26.63      9   -9.80 1 1 1 1 1   888    0 37.09 103.34 ----- 17.7 26.6 338.6 30.9 29.9 -29.3 28.9 -28.5 29.0 -28.0 29.7 -28.2
2025-11-03T12:43:18.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:43:18.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:43:18.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.446284
2025-11-03T12:43:18.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:43:18.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:43:18.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:43:18.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:43:18.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:43:18.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:43:04', tmtdew=43.21, humidity=4.72, cloud=0.0, wind=24.77, temperature=24.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:42:38.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:43:18.998 [DEBUG] [Thread-115955] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:43:19.070 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:43:19.082 [DEBUG] [Thread-115958] [transport.py] [_log()] starting thread (client mode): 0x117be200
2025-11-03T12:43:19.082 [DEBUG] [Thread-115958] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:43:19.096 [DEBUG] [Thread-115958] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:43:19.096 [INFO] [Thread-115958] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:43:19.104 [DEBUG] [Thread-115958] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:43:19.104 [DEBUG] [Thread-115958] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:43:19.104 [DEBUG] [Thread-115958] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:43:19.104 [DEBUG] [Thread-115958] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:43:19.104 [DEBUG] [Thread-115958] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:43:19.104 [DEBUG] [Thread-115958] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:43:19.104 [DEBUG] [Thread-115958] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:43:19.104 [DEBUG] [Thread-115958] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:43:19.104 [DEBUG] [Thread-115958] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:43:19.104 [DEBUG] [Thread-115958] [transport.py] [_log()] client lang: <none>
2025-11-03T12:43:19.104 [DEBUG] [Thread-115958] [transport.py] [_log()] server lang: <none>
2025-11-03T12:43:19.104 [DEBUG] [Thread-115958] [transport.py] [_log()] kex follows: False
2025-11-03T12:43:19.104 [DEBUG] [Thread-115958] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:43:19.104 [DEBUG] [Thread-115958] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:43:19.104 [DEBUG] [Thread-115958] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:43:19.104 [DEBUG] [Thread-115958] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:43:19.104 [DEBUG] [Thread-115958] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:43:19.104 [DEBUG] [Thread-115958] [transport.py] [_log()] Compression: none
2025-11-03T12:43:19.104 [DEBUG] [Thread-115958] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:43:19.161 [DEBUG] [Thread-115958] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:43:19.161 [DEBUG] [Thread-115958] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:43:19.161 [DEBUG] [Thread-115958] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:43:19.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:43:19.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:43:19.218 [DEBUG] [Thread-115958] [transport.py] [_log()] userauth is OK
2025-11-03T12:43:19.218 [DEBUG] [Thread-115958] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:43:19.218 [DEBUG] [Thread-115958] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:43:19.218 [DEBUG] [Thread-115958] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:43:19.218 [DEBUG] [Thread-115958] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:43:19.232 [INFO] [Thread-115958] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:43:19.232 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:43:19.232 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:43:20.071 [DEBUG] [Thread-115958] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:43:20.071 [DEBUG] [Thread-115958] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:43:20.119 [DEBUG] [Thread-115958] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:43:20.119 [DEBUG] [Thread-115958] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:43:20.129 [DEBUG] [Thread-115958] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:43:20.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:43:20.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:43:20.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:43:20.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:43:20.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:43:20.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:43:20.167 [DEBUG] [Thread-115958] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:43:29.262 [DEBUG] [Thread-115960 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:43:42.626 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:43:42.627 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:43:44.320 [DEBUG] [Thread-115961 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:43:50.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:43:50.190 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:43:50.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:43:50.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 43, 36), 44.0, 4.23, 0.0, 24.08, 25.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:43:50.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:43:36
2025-11-03T12:43:50.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:43:51.128 [DEBUG] [Thread-115962] [transport.py] [_log()] starting thread (client mode): 0xed4cfa0
2025-11-03T12:43:51.129 [DEBUG] [Thread-115962] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:43:51.149 [DEBUG] [Thread-115962] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:43:51.149 [INFO] [Thread-115962] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:43:51.153 [DEBUG] [Thread-115962] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:43:51.153 [DEBUG] [Thread-115962] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:43:51.153 [DEBUG] [Thread-115962] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:43:51.153 [DEBUG] [Thread-115962] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:43:51.153 [DEBUG] [Thread-115962] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:43:51.153 [DEBUG] [Thread-115962] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:43:51.153 [DEBUG] [Thread-115962] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:43:51.153 [DEBUG] [Thread-115962] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:43:51.153 [DEBUG] [Thread-115962] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:43:51.154 [DEBUG] [Thread-115962] [transport.py] [_log()] client lang: <none>
2025-11-03T12:43:51.154 [DEBUG] [Thread-115962] [transport.py] [_log()] server lang: <none>
2025-11-03T12:43:51.154 [DEBUG] [Thread-115962] [transport.py] [_log()] kex follows: False
2025-11-03T12:43:51.154 [DEBUG] [Thread-115962] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:43:51.154 [DEBUG] [Thread-115962] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:43:51.154 [DEBUG] [Thread-115962] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:43:51.154 [DEBUG] [Thread-115962] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:43:51.154 [DEBUG] [Thread-115962] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:43:51.163 [DEBUG] [Thread-115962] [transport.py] [_log()] Compression: none
2025-11-03T12:43:51.163 [DEBUG] [Thread-115962] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:43:51.183 [DEBUG] [Thread-115962] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:43:51.183 [DEBUG] [Thread-115962] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:43:51.184 [DEBUG] [Thread-115962] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:43:51.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:43:51.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:43:51.186 [DEBUG] [Thread-115962] [transport.py] [_log()] userauth is OK
2025-11-03T12:43:51.186 [DEBUG] [Thread-115962] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:43:51.186 [DEBUG] [Thread-115962] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:43:51.186 [DEBUG] [Thread-115962] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:43:51.186 [DEBUG] [Thread-115962] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:43:51.212 [INFO] [Thread-115962] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:43:51.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:43:51.793 [DEBUG] [Thread-115962] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:43:51.794 [DEBUG] [Thread-115962] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:43:51.794 [DEBUG] [Thread-115962] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:43:51.835 [DEBUG] [Thread-115962] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:43:51.835 [DEBUG] [Thread-115962] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:43:51.839 [DEBUG] [Thread-115962] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:43:51.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:43:51.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:43:51.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:43:51.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:43:51.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:43:51.877 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:43:51.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:43:51.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:43:51.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:43:51.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.446631 -999.00  +25.00  34.13      9  -10.00 1 1 2 1 1   888    0 36.66 93.37 ----- 23.4 34.1 320.6 39.6 29.9 -28.4 29.0 -28.4 29.0 -28.3 29.9 -28.1
2025-11-03T12:43:51.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:43:51.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:43:51.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.446631
2025-11-03T12:43:51.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:43:51.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:43:51.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:43:51.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:43:51.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:43:51.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:43:36', tmtdew=44.0, humidity=4.23, cloud=0.0, wind=24.08, temperature=25.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:43:08.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:43:51.881 [DEBUG] [Thread-115962] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:43:51.965 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:43:51.977 [DEBUG] [Thread-115965] [transport.py] [_log()] starting thread (client mode): 0x81b9600
2025-11-03T12:43:51.977 [DEBUG] [Thread-115965] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:43:51.990 [DEBUG] [Thread-115965] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:43:51.991 [INFO] [Thread-115965] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:43:51.998 [DEBUG] [Thread-115965] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:43:51.998 [DEBUG] [Thread-115965] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:43:51.998 [DEBUG] [Thread-115965] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:43:51.998 [DEBUG] [Thread-115965] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:43:51.998 [DEBUG] [Thread-115965] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:43:51.998 [DEBUG] [Thread-115965] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:43:51.998 [DEBUG] [Thread-115965] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:43:51.998 [DEBUG] [Thread-115965] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:43:51.998 [DEBUG] [Thread-115965] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:43:51.998 [DEBUG] [Thread-115965] [transport.py] [_log()] client lang: <none>
2025-11-03T12:43:51.999 [DEBUG] [Thread-115965] [transport.py] [_log()] server lang: <none>
2025-11-03T12:43:51.999 [DEBUG] [Thread-115965] [transport.py] [_log()] kex follows: False
2025-11-03T12:43:51.999 [DEBUG] [Thread-115965] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:43:51.999 [DEBUG] [Thread-115965] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:43:51.999 [DEBUG] [Thread-115965] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:43:51.999 [DEBUG] [Thread-115965] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:43:51.999 [DEBUG] [Thread-115965] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:43:51.999 [DEBUG] [Thread-115965] [transport.py] [_log()] Compression: none
2025-11-03T12:43:51.999 [DEBUG] [Thread-115965] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:43:52.059 [DEBUG] [Thread-115965] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:43:52.059 [DEBUG] [Thread-115965] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:43:52.060 [DEBUG] [Thread-115965] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:43:52.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:43:52.061 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:43:52.115 [DEBUG] [Thread-115965] [transport.py] [_log()] userauth is OK
2025-11-03T12:43:52.115 [DEBUG] [Thread-115965] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:43:52.116 [DEBUG] [Thread-115965] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:43:52.116 [DEBUG] [Thread-115965] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:43:52.116 [DEBUG] [Thread-115965] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:43:52.138 [INFO] [Thread-115965] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:43:52.138 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:43:52.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:43:53.024 [DEBUG] [Thread-115965] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:43:53.024 [DEBUG] [Thread-115965] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:43:53.072 [DEBUG] [Thread-115965] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:43:53.072 [DEBUG] [Thread-115965] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:43:53.081 [DEBUG] [Thread-115965] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:43:53.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:43:53.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:43:53.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:43:53.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:43:53.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:43:53.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:43:53.117 [DEBUG] [Thread-115965] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:43:59.363 [DEBUG] [Thread-115967 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:44:01.718 [DEBUG] [Thread-115968 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:44:14.424 [DEBUG] [Thread-115969 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:44:23.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:44:23.141 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:44:23.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:44:23.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 44, 8), 43.7, 4.37, 0.0, 24.91, 25.17, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:44:23.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:44:08
2025-11-03T12:44:23.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:44:24.076 [DEBUG] [Thread-115970] [transport.py] [_log()] starting thread (client mode): 0x117bf790
2025-11-03T12:44:24.076 [DEBUG] [Thread-115970] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:44:24.098 [DEBUG] [Thread-115970] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:44:24.098 [INFO] [Thread-115970] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:44:24.099 [DEBUG] [Thread-115970] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:44:24.099 [DEBUG] [Thread-115970] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:44:24.099 [DEBUG] [Thread-115970] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:44:24.099 [DEBUG] [Thread-115970] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:44:24.099 [DEBUG] [Thread-115970] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:44:24.099 [DEBUG] [Thread-115970] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:44:24.099 [DEBUG] [Thread-115970] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:44:24.099 [DEBUG] [Thread-115970] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:44:24.100 [DEBUG] [Thread-115970] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:44:24.100 [DEBUG] [Thread-115970] [transport.py] [_log()] client lang: <none>
2025-11-03T12:44:24.100 [DEBUG] [Thread-115970] [transport.py] [_log()] server lang: <none>
2025-11-03T12:44:24.100 [DEBUG] [Thread-115970] [transport.py] [_log()] kex follows: False
2025-11-03T12:44:24.100 [DEBUG] [Thread-115970] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:44:24.100 [DEBUG] [Thread-115970] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:44:24.100 [DEBUG] [Thread-115970] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:44:24.100 [DEBUG] [Thread-115970] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:44:24.100 [DEBUG] [Thread-115970] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:44:24.100 [DEBUG] [Thread-115970] [transport.py] [_log()] Compression: none
2025-11-03T12:44:24.100 [DEBUG] [Thread-115970] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:44:24.116 [DEBUG] [Thread-115970] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:44:24.117 [DEBUG] [Thread-115970] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:44:24.117 [DEBUG] [Thread-115970] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:44:24.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:44:24.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:44:24.120 [DEBUG] [Thread-115970] [transport.py] [_log()] userauth is OK
2025-11-03T12:44:24.120 [DEBUG] [Thread-115970] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:44:24.120 [DEBUG] [Thread-115970] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:44:24.120 [DEBUG] [Thread-115970] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:44:24.120 [DEBUG] [Thread-115970] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:44:24.139 [INFO] [Thread-115970] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:44:24.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:44:24.758 [DEBUG] [Thread-115970] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:44:24.758 [DEBUG] [Thread-115970] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:44:24.759 [DEBUG] [Thread-115970] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:44:24.799 [DEBUG] [Thread-115970] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:44:24.799 [DEBUG] [Thread-115970] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:44:24.803 [DEBUG] [Thread-115970] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:44:24.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:44:24.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:44:24.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:44:24.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:44:24.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:44:24.832 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:44:24.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:44:24.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:44:24.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:44:24.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.446979 -999.00  +24.90  26.78      9   -9.70 1 1 1 1 1   888    0 37.42 94.83 ----- 23.4 26.8 315.6 37.2 30.0 -29.0 29.1 -29.0 29.1 -28.6 30.0 -27.9
2025-11-03T12:44:24.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:44:24.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:44:24.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.446979
2025-11-03T12:44:24.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:44:24.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:44:24.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:44:24.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:44:24.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:44:24.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:44:08', tmtdew=43.7, humidity=4.37, cloud=0.0, wind=24.91, temperature=25.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:43:38.986', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:44:24.835 [DEBUG] [Thread-115970] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:44:24.918 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:44:24.931 [DEBUG] [Thread-115973] [transport.py] [_log()] starting thread (client mode): 0x117be9b0
2025-11-03T12:44:24.931 [DEBUG] [Thread-115973] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:44:24.947 [DEBUG] [Thread-115973] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:44:24.947 [INFO] [Thread-115973] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:44:24.955 [DEBUG] [Thread-115973] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:44:24.955 [DEBUG] [Thread-115973] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:44:24.955 [DEBUG] [Thread-115973] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:44:24.955 [DEBUG] [Thread-115973] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:44:24.955 [DEBUG] [Thread-115973] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:44:24.955 [DEBUG] [Thread-115973] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:44:24.955 [DEBUG] [Thread-115973] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:44:24.955 [DEBUG] [Thread-115973] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:44:24.955 [DEBUG] [Thread-115973] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:44:24.955 [DEBUG] [Thread-115973] [transport.py] [_log()] client lang: <none>
2025-11-03T12:44:24.955 [DEBUG] [Thread-115973] [transport.py] [_log()] server lang: <none>
2025-11-03T12:44:24.955 [DEBUG] [Thread-115973] [transport.py] [_log()] kex follows: False
2025-11-03T12:44:24.955 [DEBUG] [Thread-115973] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:44:24.956 [DEBUG] [Thread-115973] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:44:24.956 [DEBUG] [Thread-115973] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:44:24.956 [DEBUG] [Thread-115973] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:44:24.956 [DEBUG] [Thread-115973] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:44:24.956 [DEBUG] [Thread-115973] [transport.py] [_log()] Compression: none
2025-11-03T12:44:24.956 [DEBUG] [Thread-115973] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:44:25.015 [DEBUG] [Thread-115973] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:44:25.016 [DEBUG] [Thread-115973] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:44:25.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:44:25.017 [DEBUG] [Thread-115973] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:44:25.018 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:44:25.072 [DEBUG] [Thread-115973] [transport.py] [_log()] userauth is OK
2025-11-03T12:44:25.072 [DEBUG] [Thread-115973] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:44:25.072 [DEBUG] [Thread-115973] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:44:25.072 [DEBUG] [Thread-115973] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:44:25.073 [DEBUG] [Thread-115973] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:44:25.092 [INFO] [Thread-115973] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:44:25.092 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:44:25.093 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:44:25.952 [DEBUG] [Thread-115973] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:44:25.952 [DEBUG] [Thread-115973] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:44:26.000 [DEBUG] [Thread-115973] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:44:26.000 [DEBUG] [Thread-115973] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:44:26.009 [DEBUG] [Thread-115973] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:44:26.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:44:26.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:44:26.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:44:26.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:44:26.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:44:26.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:44:26.046 [DEBUG] [Thread-115973] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:44:29.464 [DEBUG] [Thread-115975 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:44:42.767 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:44:42.768 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:44:44.519 [DEBUG] [Thread-115976 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:44:56.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:44:56.069 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:44:56.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:44:56.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 44, 41), 43.55, 4.3, 0.0, 23.31, 25.02, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:44:56.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:44:41
2025-11-03T12:44:56.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:44:57.002 [DEBUG] [Thread-115977] [transport.py] [_log()] starting thread (client mode): 0x117bdba0
2025-11-03T12:44:57.002 [DEBUG] [Thread-115977] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:44:57.023 [DEBUG] [Thread-115977] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:44:57.023 [INFO] [Thread-115977] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:44:57.026 [DEBUG] [Thread-115977] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:44:57.026 [DEBUG] [Thread-115977] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:44:57.026 [DEBUG] [Thread-115977] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:44:57.026 [DEBUG] [Thread-115977] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:44:57.026 [DEBUG] [Thread-115977] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:44:57.026 [DEBUG] [Thread-115977] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:44:57.026 [DEBUG] [Thread-115977] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:44:57.026 [DEBUG] [Thread-115977] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:44:57.026 [DEBUG] [Thread-115977] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:44:57.026 [DEBUG] [Thread-115977] [transport.py] [_log()] client lang: <none>
2025-11-03T12:44:57.026 [DEBUG] [Thread-115977] [transport.py] [_log()] server lang: <none>
2025-11-03T12:44:57.026 [DEBUG] [Thread-115977] [transport.py] [_log()] kex follows: False
2025-11-03T12:44:57.026 [DEBUG] [Thread-115977] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:44:57.027 [DEBUG] [Thread-115977] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:44:57.027 [DEBUG] [Thread-115977] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:44:57.027 [DEBUG] [Thread-115977] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:44:57.027 [DEBUG] [Thread-115977] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:44:57.027 [DEBUG] [Thread-115977] [transport.py] [_log()] Compression: none
2025-11-03T12:44:57.027 [DEBUG] [Thread-115977] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:44:57.045 [DEBUG] [Thread-115977] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:44:57.045 [DEBUG] [Thread-115977] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:44:57.046 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:44:57.046 [DEBUG] [Thread-115977] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:44:57.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:44:57.048 [DEBUG] [Thread-115977] [transport.py] [_log()] userauth is OK
2025-11-03T12:44:57.049 [DEBUG] [Thread-115977] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:44:57.049 [DEBUG] [Thread-115977] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:44:57.049 [DEBUG] [Thread-115977] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:44:57.049 [DEBUG] [Thread-115977] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:44:57.064 [INFO] [Thread-115977] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:44:57.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:44:57.704 [DEBUG] [Thread-115977] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:44:57.704 [DEBUG] [Thread-115977] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:44:57.704 [DEBUG] [Thread-115977] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:44:57.745 [DEBUG] [Thread-115977] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:44:57.745 [DEBUG] [Thread-115977] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:44:57.747 [DEBUG] [Thread-115977] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:44:57.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:44:57.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:44:57.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:44:57.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:44:57.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:44:57.766 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:44:57.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:44:57.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:44:57.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:44:57.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.447673 -999.00  +24.60  15.33      9   -9.90 1 1 1 1 1   888    0 37.07 91.94 ----- 22.8 15.3 7.8 27.4 30.0 -30.4 29.1 -29.2 29.2 -28.6 29.8 -29.5
2025-11-03T12:44:57.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:44:57.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:44:57.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.447673
2025-11-03T12:44:57.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:44:57.775 [DEBUG] [Thread-115977] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:44:57.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:44:57.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:44:57.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:44:57.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:44:57.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:44:41', tmtdew=43.55, humidity=4.3, cloud=0.0, wind=23.31, temperature=25.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:44:38.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:44:57.847 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:44:57.858 [DEBUG] [Thread-115980] [transport.py] [_log()] starting thread (client mode): 0x117be3e0
2025-11-03T12:44:57.858 [DEBUG] [Thread-115980] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:44:57.874 [DEBUG] [Thread-115980] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:44:57.874 [INFO] [Thread-115980] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:44:57.881 [DEBUG] [Thread-115980] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:44:57.881 [DEBUG] [Thread-115980] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:44:57.881 [DEBUG] [Thread-115980] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:44:57.881 [DEBUG] [Thread-115980] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:44:57.881 [DEBUG] [Thread-115980] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:44:57.881 [DEBUG] [Thread-115980] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:44:57.881 [DEBUG] [Thread-115980] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:44:57.881 [DEBUG] [Thread-115980] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:44:57.881 [DEBUG] [Thread-115980] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:44:57.881 [DEBUG] [Thread-115980] [transport.py] [_log()] client lang: <none>
2025-11-03T12:44:57.881 [DEBUG] [Thread-115980] [transport.py] [_log()] server lang: <none>
2025-11-03T12:44:57.881 [DEBUG] [Thread-115980] [transport.py] [_log()] kex follows: False
2025-11-03T12:44:57.881 [DEBUG] [Thread-115980] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:44:57.881 [DEBUG] [Thread-115980] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:44:57.881 [DEBUG] [Thread-115980] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:44:57.881 [DEBUG] [Thread-115980] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:44:57.881 [DEBUG] [Thread-115980] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:44:57.881 [DEBUG] [Thread-115980] [transport.py] [_log()] Compression: none
2025-11-03T12:44:57.881 [DEBUG] [Thread-115980] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:44:57.937 [DEBUG] [Thread-115980] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:44:57.937 [DEBUG] [Thread-115980] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:44:57.937 [DEBUG] [Thread-115980] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:44:57.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:44:57.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:44:57.994 [DEBUG] [Thread-115980] [transport.py] [_log()] userauth is OK
2025-11-03T12:44:57.994 [DEBUG] [Thread-115980] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:44:57.994 [DEBUG] [Thread-115980] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:44:57.994 [DEBUG] [Thread-115980] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:44:57.994 [DEBUG] [Thread-115980] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:44:58.008 [INFO] [Thread-115980] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:44:58.008 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:44:58.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:44:58.880 [DEBUG] [Thread-115980] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:44:58.880 [DEBUG] [Thread-115980] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:44:58.928 [DEBUG] [Thread-115980] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:44:58.928 [DEBUG] [Thread-115980] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:44:58.938 [DEBUG] [Thread-115980] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:44:58.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:44:58.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:44:58.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:44:58.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:44:58.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:44:58.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:44:58.975 [DEBUG] [Thread-115980] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:44:59.552 [DEBUG] [Thread-115982 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:45:01.774 [DEBUG] [Thread-115983 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:45:14.601 [DEBUG] [Thread-115984 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:45:28.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:45:28.997 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:45:29.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:45:29.635 [DEBUG] [Thread-115985 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:45:29.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 45, 13), 43.47, 4.32, 0.0, 22.39, 24.91, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:45:29.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:45:13
2025-11-03T12:45:29.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:45:30.017 [DEBUG] [Thread-115986] [transport.py] [_log()] starting thread (client mode): 0x117bc730
2025-11-03T12:45:30.018 [DEBUG] [Thread-115986] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:45:30.039 [DEBUG] [Thread-115986] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:45:30.039 [INFO] [Thread-115986] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:45:30.042 [DEBUG] [Thread-115986] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:45:30.042 [DEBUG] [Thread-115986] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:45:30.042 [DEBUG] [Thread-115986] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:45:30.042 [DEBUG] [Thread-115986] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:45:30.042 [DEBUG] [Thread-115986] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:45:30.042 [DEBUG] [Thread-115986] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:45:30.042 [DEBUG] [Thread-115986] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:45:30.042 [DEBUG] [Thread-115986] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:45:30.042 [DEBUG] [Thread-115986] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:45:30.042 [DEBUG] [Thread-115986] [transport.py] [_log()] client lang: <none>
2025-11-03T12:45:30.042 [DEBUG] [Thread-115986] [transport.py] [_log()] server lang: <none>
2025-11-03T12:45:30.042 [DEBUG] [Thread-115986] [transport.py] [_log()] kex follows: False
2025-11-03T12:45:30.042 [DEBUG] [Thread-115986] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:45:30.042 [DEBUG] [Thread-115986] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:45:30.042 [DEBUG] [Thread-115986] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:45:30.042 [DEBUG] [Thread-115986] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:45:30.042 [DEBUG] [Thread-115986] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:45:30.042 [DEBUG] [Thread-115986] [transport.py] [_log()] Compression: none
2025-11-03T12:45:30.042 [DEBUG] [Thread-115986] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:45:30.058 [DEBUG] [Thread-115986] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:45:30.058 [DEBUG] [Thread-115986] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:45:30.058 [DEBUG] [Thread-115986] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:45:30.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:45:30.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:45:30.059 [DEBUG] [Thread-115986] [transport.py] [_log()] userauth is OK
2025-11-03T12:45:30.059 [DEBUG] [Thread-115986] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:45:30.059 [DEBUG] [Thread-115986] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:45:30.059 [DEBUG] [Thread-115986] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:45:30.059 [DEBUG] [Thread-115986] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:45:30.068 [INFO] [Thread-115986] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:45:30.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:45:30.669 [DEBUG] [Thread-115986] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:45:30.669 [DEBUG] [Thread-115986] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:45:30.669 [DEBUG] [Thread-115986] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:45:30.710 [DEBUG] [Thread-115986] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:45:30.710 [DEBUG] [Thread-115986] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:45:30.713 [DEBUG] [Thread-115986] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:45:30.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:45:30.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:45:30.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:45:30.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:45:30.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:45:30.732 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:45:30.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:45:30.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:45:30.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:45:30.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.448020 -999.00  +24.90  20.30      9   -9.50 1 1 1 1 1   888    0 36.71 80.91 ----- 21.0 20.3 22.8 30.5 30.0 -29.8 29.1 -28.9 29.2 -27.5 29.9 -28.7
2025-11-03T12:45:30.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:45:30.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:45:30.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.448020
2025-11-03T12:45:30.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:45:30.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:45:30.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:45:30.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:45:30.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:45:30.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:45:13', tmtdew=43.47, humidity=4.32, cloud=0.0, wind=22.39, temperature=24.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:45:08.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:45:30.740 [DEBUG] [Thread-115986] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:45:30.816 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:45:30.827 [DEBUG] [Thread-115989] [transport.py] [_log()] starting thread (client mode): 0xedd49a0
2025-11-03T12:45:30.827 [DEBUG] [Thread-115989] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:45:30.842 [DEBUG] [Thread-115989] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:45:30.842 [INFO] [Thread-115989] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:45:30.850 [DEBUG] [Thread-115989] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:45:30.850 [DEBUG] [Thread-115989] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:45:30.850 [DEBUG] [Thread-115989] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:45:30.850 [DEBUG] [Thread-115989] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:45:30.850 [DEBUG] [Thread-115989] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:45:30.850 [DEBUG] [Thread-115989] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:45:30.850 [DEBUG] [Thread-115989] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:45:30.850 [DEBUG] [Thread-115989] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:45:30.850 [DEBUG] [Thread-115989] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:45:30.850 [DEBUG] [Thread-115989] [transport.py] [_log()] client lang: <none>
2025-11-03T12:45:30.850 [DEBUG] [Thread-115989] [transport.py] [_log()] server lang: <none>
2025-11-03T12:45:30.850 [DEBUG] [Thread-115989] [transport.py] [_log()] kex follows: False
2025-11-03T12:45:30.850 [DEBUG] [Thread-115989] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:45:30.850 [DEBUG] [Thread-115989] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:45:30.850 [DEBUG] [Thread-115989] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:45:30.850 [DEBUG] [Thread-115989] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:45:30.850 [DEBUG] [Thread-115989] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:45:30.850 [DEBUG] [Thread-115989] [transport.py] [_log()] Compression: none
2025-11-03T12:45:30.850 [DEBUG] [Thread-115989] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:45:30.909 [DEBUG] [Thread-115989] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:45:30.910 [DEBUG] [Thread-115989] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:45:30.910 [DEBUG] [Thread-115989] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:45:30.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:45:30.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:45:30.967 [DEBUG] [Thread-115989] [transport.py] [_log()] userauth is OK
2025-11-03T12:45:30.967 [DEBUG] [Thread-115989] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:45:30.967 [DEBUG] [Thread-115989] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:45:30.967 [DEBUG] [Thread-115989] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:45:30.967 [DEBUG] [Thread-115989] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:45:30.980 [INFO] [Thread-115989] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:45:30.981 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:45:30.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:45:31.848 [DEBUG] [Thread-115989] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:45:31.848 [DEBUG] [Thread-115989] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:45:31.897 [DEBUG] [Thread-115989] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:45:31.897 [DEBUG] [Thread-115989] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:45:31.905 [DEBUG] [Thread-115989] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:45:31.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:45:31.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:45:31.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:45:31.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:45:31.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:45:31.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:45:31.937 [DEBUG] [Thread-115989] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:45:42.908 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:45:42.909 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:45:44.666 [DEBUG] [Thread-115991 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:45:59.725 [DEBUG] [Thread-115992 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:46:01.812 [DEBUG] [Thread-115993 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:46:01.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:46:01.959 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:46:01.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:46:02.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 45, 45), 43.79, 4.25, 0.0, 26.87, 25.36, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:46:02.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:45:45
2025-11-03T12:46:02.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:46:02.889 [DEBUG] [Thread-115994] [transport.py] [_log()] starting thread (client mode): 0xed4ea10
2025-11-03T12:46:02.889 [DEBUG] [Thread-115994] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:46:02.901 [DEBUG] [Thread-115994] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:46:02.901 [INFO] [Thread-115994] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:46:02.904 [DEBUG] [Thread-115994] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:46:02.904 [DEBUG] [Thread-115994] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:46:02.904 [DEBUG] [Thread-115994] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:46:02.904 [DEBUG] [Thread-115994] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:46:02.904 [DEBUG] [Thread-115994] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:46:02.904 [DEBUG] [Thread-115994] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:46:02.904 [DEBUG] [Thread-115994] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:46:02.904 [DEBUG] [Thread-115994] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:46:02.904 [DEBUG] [Thread-115994] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:46:02.904 [DEBUG] [Thread-115994] [transport.py] [_log()] client lang: <none>
2025-11-03T12:46:02.904 [DEBUG] [Thread-115994] [transport.py] [_log()] server lang: <none>
2025-11-03T12:46:02.904 [DEBUG] [Thread-115994] [transport.py] [_log()] kex follows: False
2025-11-03T12:46:02.904 [DEBUG] [Thread-115994] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:46:02.905 [DEBUG] [Thread-115994] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:46:02.905 [DEBUG] [Thread-115994] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:46:02.905 [DEBUG] [Thread-115994] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:46:02.905 [DEBUG] [Thread-115994] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:46:02.905 [DEBUG] [Thread-115994] [transport.py] [_log()] Compression: none
2025-11-03T12:46:02.905 [DEBUG] [Thread-115994] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:46:02.922 [DEBUG] [Thread-115994] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:46:02.923 [DEBUG] [Thread-115994] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:46:02.923 [DEBUG] [Thread-115994] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:46:02.923 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:46:02.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:46:02.925 [DEBUG] [Thread-115994] [transport.py] [_log()] userauth is OK
2025-11-03T12:46:02.925 [DEBUG] [Thread-115994] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:46:02.926 [DEBUG] [Thread-115994] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:46:02.926 [DEBUG] [Thread-115994] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:46:02.926 [DEBUG] [Thread-115994] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:46:02.944 [INFO] [Thread-115994] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:46:02.945 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:46:03.580 [DEBUG] [Thread-115994] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:46:03.580 [DEBUG] [Thread-115994] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:46:03.581 [DEBUG] [Thread-115994] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:46:03.621 [DEBUG] [Thread-115994] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:46:03.621 [DEBUG] [Thread-115994] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:46:03.625 [DEBUG] [Thread-115994] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:46:03.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:46:03.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:46:03.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:46:03.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:46:03.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:46:03.649 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:46:03.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:46:03.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:46:03.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:46:03.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.448368 -999.00  +24.70  19.38      9   -9.40 1 1 1 1 1   888    0 36.49 76.59 ----- 17.8 19.4 351.6 39.2 30.0 -30.1 29.1 -29.4 29.2 -28.4 29.9 -27.3
2025-11-03T12:46:03.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:46:03.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:46:03.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.448368
2025-11-03T12:46:03.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:46:03.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:46:03.651 [DEBUG] [Thread-115994] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:46:03.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:46:03.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:46:03.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:46:03.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:45:45', tmtdew=43.79, humidity=4.25, cloud=0.0, wind=26.87, temperature=25.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:45:38.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:46:03.732 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:46:03.745 [DEBUG] [Thread-115997] [transport.py] [_log()] starting thread (client mode): 0xed4d2a0
2025-11-03T12:46:03.745 [DEBUG] [Thread-115997] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:46:03.760 [DEBUG] [Thread-115997] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:46:03.760 [INFO] [Thread-115997] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:46:03.768 [DEBUG] [Thread-115997] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:46:03.768 [DEBUG] [Thread-115997] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:46:03.768 [DEBUG] [Thread-115997] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:46:03.768 [DEBUG] [Thread-115997] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:46:03.768 [DEBUG] [Thread-115997] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:46:03.768 [DEBUG] [Thread-115997] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:46:03.768 [DEBUG] [Thread-115997] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:46:03.768 [DEBUG] [Thread-115997] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:46:03.768 [DEBUG] [Thread-115997] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:46:03.769 [DEBUG] [Thread-115997] [transport.py] [_log()] client lang: <none>
2025-11-03T12:46:03.769 [DEBUG] [Thread-115997] [transport.py] [_log()] server lang: <none>
2025-11-03T12:46:03.769 [DEBUG] [Thread-115997] [transport.py] [_log()] kex follows: False
2025-11-03T12:46:03.769 [DEBUG] [Thread-115997] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:46:03.769 [DEBUG] [Thread-115997] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:46:03.769 [DEBUG] [Thread-115997] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:46:03.769 [DEBUG] [Thread-115997] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:46:03.769 [DEBUG] [Thread-115997] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:46:03.769 [DEBUG] [Thread-115997] [transport.py] [_log()] Compression: none
2025-11-03T12:46:03.769 [DEBUG] [Thread-115997] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:46:03.828 [DEBUG] [Thread-115997] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:46:03.828 [DEBUG] [Thread-115997] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:46:03.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:46:03.829 [DEBUG] [Thread-115997] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:46:03.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:46:03.887 [DEBUG] [Thread-115997] [transport.py] [_log()] userauth is OK
2025-11-03T12:46:03.887 [DEBUG] [Thread-115997] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:46:03.888 [DEBUG] [Thread-115997] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:46:03.888 [DEBUG] [Thread-115997] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:46:03.888 [DEBUG] [Thread-115997] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:46:03.907 [INFO] [Thread-115997] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:46:03.908 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:46:03.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:46:04.833 [DEBUG] [Thread-115997] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:46:04.833 [DEBUG] [Thread-115997] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:46:04.881 [DEBUG] [Thread-115997] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:46:04.881 [DEBUG] [Thread-115997] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:46:04.890 [DEBUG] [Thread-115997] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:46:04.904 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:46:04.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:46:04.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:46:04.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:46:04.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:46:04.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:46:04.938 [DEBUG] [Thread-115997] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:46:14.758 [DEBUG] [Thread-115999 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:46:29.810 [DEBUG] [Thread-116000 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:46:34.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:46:34.961 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:46:34.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:46:35.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 46, 18), 43.9, 4.2, 0.0, 27.35, 25.29, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:46:35.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:46:18
2025-11-03T12:46:35.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:46:35.923 [DEBUG] [Thread-116001] [transport.py] [_log()] starting thread (client mode): 0x117bcf40
2025-11-03T12:46:35.923 [DEBUG] [Thread-116001] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:46:35.944 [DEBUG] [Thread-116001] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:46:35.944 [INFO] [Thread-116001] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:46:35.948 [DEBUG] [Thread-116001] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:46:35.948 [DEBUG] [Thread-116001] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:46:35.948 [DEBUG] [Thread-116001] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:46:35.948 [DEBUG] [Thread-116001] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:46:35.948 [DEBUG] [Thread-116001] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:46:35.948 [DEBUG] [Thread-116001] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:46:35.948 [DEBUG] [Thread-116001] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:46:35.948 [DEBUG] [Thread-116001] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:46:35.948 [DEBUG] [Thread-116001] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:46:35.948 [DEBUG] [Thread-116001] [transport.py] [_log()] client lang: <none>
2025-11-03T12:46:35.948 [DEBUG] [Thread-116001] [transport.py] [_log()] server lang: <none>
2025-11-03T12:46:35.948 [DEBUG] [Thread-116001] [transport.py] [_log()] kex follows: False
2025-11-03T12:46:35.948 [DEBUG] [Thread-116001] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:46:35.948 [DEBUG] [Thread-116001] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:46:35.949 [DEBUG] [Thread-116001] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:46:35.949 [DEBUG] [Thread-116001] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:46:35.949 [DEBUG] [Thread-116001] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:46:35.949 [DEBUG] [Thread-116001] [transport.py] [_log()] Compression: none
2025-11-03T12:46:35.949 [DEBUG] [Thread-116001] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:46:35.966 [DEBUG] [Thread-116001] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:46:35.976 [DEBUG] [Thread-116001] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:46:35.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:46:35.978 [DEBUG] [Thread-116001] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:46:35.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:46:35.979 [DEBUG] [Thread-116001] [transport.py] [_log()] userauth is OK
2025-11-03T12:46:35.980 [DEBUG] [Thread-116001] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:46:35.980 [DEBUG] [Thread-116001] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:46:35.980 [DEBUG] [Thread-116001] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:46:35.980 [DEBUG] [Thread-116001] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:46:36.000 [INFO] [Thread-116001] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:46:36.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:46:36.666 [DEBUG] [Thread-116001] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:46:36.666 [DEBUG] [Thread-116001] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:46:36.667 [DEBUG] [Thread-116001] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:46:36.707 [DEBUG] [Thread-116001] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:46:36.707 [DEBUG] [Thread-116001] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:46:36.711 [DEBUG] [Thread-116001] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:46:36.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:46:36.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:46:36.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:46:36.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:46:36.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:46:36.737 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:46:36.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:46:36.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:46:36.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:46:36.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.448715 -999.00  +25.00  21.28      9   -9.20 1 1 1 1 1   888    0 36.33 69.57 ----- 28.0 21.3 8.7 35.5 30.1 -31.2 29.1 -29.7 29.3 -28.2 29.9 -28.0
2025-11-03T12:46:36.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:46:36.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:46:36.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.448715
2025-11-03T12:46:36.746 [DEBUG] [Thread-116001] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:46:36.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:46:36.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:46:36.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:46:36.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:46:36.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:46:36.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:46:18', tmtdew=43.9, humidity=4.2, cloud=0.0, wind=27.35, temperature=25.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:46:08.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:46:36.832 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:46:36.844 [DEBUG] [Thread-116004] [transport.py] [_log()] starting thread (client mode): 0x81ba350
2025-11-03T12:46:36.844 [DEBUG] [Thread-116004] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:46:36.859 [DEBUG] [Thread-116004] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:46:36.859 [INFO] [Thread-116004] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:46:36.866 [DEBUG] [Thread-116004] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:46:36.867 [DEBUG] [Thread-116004] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:46:36.867 [DEBUG] [Thread-116004] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:46:36.867 [DEBUG] [Thread-116004] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:46:36.867 [DEBUG] [Thread-116004] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:46:36.867 [DEBUG] [Thread-116004] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:46:36.867 [DEBUG] [Thread-116004] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:46:36.867 [DEBUG] [Thread-116004] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:46:36.867 [DEBUG] [Thread-116004] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:46:36.867 [DEBUG] [Thread-116004] [transport.py] [_log()] client lang: <none>
2025-11-03T12:46:36.867 [DEBUG] [Thread-116004] [transport.py] [_log()] server lang: <none>
2025-11-03T12:46:36.867 [DEBUG] [Thread-116004] [transport.py] [_log()] kex follows: False
2025-11-03T12:46:36.867 [DEBUG] [Thread-116004] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:46:36.867 [DEBUG] [Thread-116004] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:46:36.867 [DEBUG] [Thread-116004] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:46:36.867 [DEBUG] [Thread-116004] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:46:36.867 [DEBUG] [Thread-116004] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:46:36.867 [DEBUG] [Thread-116004] [transport.py] [_log()] Compression: none
2025-11-03T12:46:36.867 [DEBUG] [Thread-116004] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:46:36.931 [DEBUG] [Thread-116004] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:46:36.932 [DEBUG] [Thread-116004] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:46:36.932 [DEBUG] [Thread-116004] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:46:36.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:46:36.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:46:36.997 [DEBUG] [Thread-116004] [transport.py] [_log()] userauth is OK
2025-11-03T12:46:36.997 [DEBUG] [Thread-116004] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:46:36.998 [DEBUG] [Thread-116004] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:46:36.998 [DEBUG] [Thread-116004] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:46:36.998 [DEBUG] [Thread-116004] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:46:37.022 [INFO] [Thread-116004] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:46:37.023 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:46:37.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:46:37.856 [DEBUG] [Thread-116004] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:46:37.856 [DEBUG] [Thread-116004] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:46:37.904 [DEBUG] [Thread-116004] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:46:37.904 [DEBUG] [Thread-116004] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:46:37.913 [DEBUG] [Thread-116004] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:46:37.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:46:37.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:46:37.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:46:37.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:46:37.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:46:37.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:46:37.946 [DEBUG] [Thread-116004] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:46:43.051 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:46:43.052 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:46:44.846 [DEBUG] [Thread-116006 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:46:59.889 [DEBUG] [Thread-116007 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:47:01.880 [DEBUG] [Thread-116008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:47:07.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:47:07.956 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:47:07.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:47:08.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 46, 50), 43.85, 4.2, 0.0, 27.51, 25.47, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:47:08.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:46:50
2025-11-03T12:47:08.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:47:08.935 [DEBUG] [Thread-116009] [transport.py] [_log()] starting thread (client mode): 0xedd76a0
2025-11-03T12:47:08.935 [DEBUG] [Thread-116009] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:47:08.955 [DEBUG] [Thread-116009] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:47:08.955 [INFO] [Thread-116009] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:47:08.957 [DEBUG] [Thread-116009] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:47:08.957 [DEBUG] [Thread-116009] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:47:08.957 [DEBUG] [Thread-116009] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:47:08.957 [DEBUG] [Thread-116009] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:47:08.957 [DEBUG] [Thread-116009] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:47:08.957 [DEBUG] [Thread-116009] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:47:08.957 [DEBUG] [Thread-116009] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:47:08.957 [DEBUG] [Thread-116009] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:47:08.957 [DEBUG] [Thread-116009] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:47:08.957 [DEBUG] [Thread-116009] [transport.py] [_log()] client lang: <none>
2025-11-03T12:47:08.957 [DEBUG] [Thread-116009] [transport.py] [_log()] server lang: <none>
2025-11-03T12:47:08.957 [DEBUG] [Thread-116009] [transport.py] [_log()] kex follows: False
2025-11-03T12:47:08.957 [DEBUG] [Thread-116009] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:47:08.957 [DEBUG] [Thread-116009] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:47:08.957 [DEBUG] [Thread-116009] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:47:08.957 [DEBUG] [Thread-116009] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:47:08.957 [DEBUG] [Thread-116009] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:47:08.957 [DEBUG] [Thread-116009] [transport.py] [_log()] Compression: none
2025-11-03T12:47:08.957 [DEBUG] [Thread-116009] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:47:08.971 [DEBUG] [Thread-116009] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:47:08.980 [DEBUG] [Thread-116009] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:47:08.981 [DEBUG] [Thread-116009] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:47:08.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:47:08.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:47:08.983 [DEBUG] [Thread-116009] [transport.py] [_log()] userauth is OK
2025-11-03T12:47:08.983 [DEBUG] [Thread-116009] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:47:08.984 [DEBUG] [Thread-116009] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:47:08.984 [DEBUG] [Thread-116009] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:47:08.984 [DEBUG] [Thread-116009] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:47:08.999 [INFO] [Thread-116009] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:47:09.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:47:09.668 [DEBUG] [Thread-116009] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:47:09.669 [DEBUG] [Thread-116009] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:47:09.669 [DEBUG] [Thread-116009] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:47:09.710 [DEBUG] [Thread-116009] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:47:09.710 [DEBUG] [Thread-116009] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:47:09.714 [DEBUG] [Thread-116009] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:47:09.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:47:09.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:47:09.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:47:09.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:47:09.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:47:09.738 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:47:09.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:47:09.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:47:09.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:47:09.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.449062 -999.00  +25.30  28.28      9   -9.30 1 1 1 1 1   888    0 36.23 63.17 ----- 29.0 28.3 17.2 32.0 30.0 -29.1 29.1 -28.5 29.2 -27.8 29.9 -27.5
2025-11-03T12:47:09.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:47:09.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:47:09.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.449062
2025-11-03T12:47:09.746 [DEBUG] [Thread-116009] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:47:09.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:47:09.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:47:09.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:47:09.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:47:09.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:47:09.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:46:50', tmtdew=43.85, humidity=4.2, cloud=0.0, wind=27.51, temperature=25.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:46:38.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:47:09.832 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:47:09.845 [DEBUG] [Thread-116012] [transport.py] [_log()] starting thread (client mode): 0xedd4ac0
2025-11-03T12:47:09.845 [DEBUG] [Thread-116012] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:47:09.860 [DEBUG] [Thread-116012] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:47:09.860 [INFO] [Thread-116012] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:47:09.869 [DEBUG] [Thread-116012] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:47:09.869 [DEBUG] [Thread-116012] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:47:09.869 [DEBUG] [Thread-116012] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:47:09.870 [DEBUG] [Thread-116012] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:47:09.870 [DEBUG] [Thread-116012] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:47:09.870 [DEBUG] [Thread-116012] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:47:09.870 [DEBUG] [Thread-116012] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:47:09.870 [DEBUG] [Thread-116012] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:47:09.870 [DEBUG] [Thread-116012] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:47:09.870 [DEBUG] [Thread-116012] [transport.py] [_log()] client lang: <none>
2025-11-03T12:47:09.870 [DEBUG] [Thread-116012] [transport.py] [_log()] server lang: <none>
2025-11-03T12:47:09.871 [DEBUG] [Thread-116012] [transport.py] [_log()] kex follows: False
2025-11-03T12:47:09.871 [DEBUG] [Thread-116012] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:47:09.871 [DEBUG] [Thread-116012] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:47:09.871 [DEBUG] [Thread-116012] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:47:09.871 [DEBUG] [Thread-116012] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:47:09.871 [DEBUG] [Thread-116012] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:47:09.871 [DEBUG] [Thread-116012] [transport.py] [_log()] Compression: none
2025-11-03T12:47:09.871 [DEBUG] [Thread-116012] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:47:09.927 [DEBUG] [Thread-116012] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:47:09.927 [DEBUG] [Thread-116012] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:47:09.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:47:09.937 [DEBUG] [Thread-116012] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:47:09.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:47:09.986 [DEBUG] [Thread-116012] [transport.py] [_log()] userauth is OK
2025-11-03T12:47:09.987 [DEBUG] [Thread-116012] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:47:09.987 [DEBUG] [Thread-116012] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:47:09.987 [DEBUG] [Thread-116012] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:47:09.987 [DEBUG] [Thread-116012] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:47:10.007 [INFO] [Thread-116012] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:47:10.007 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:47:10.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:47:10.847 [DEBUG] [Thread-116012] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:47:10.847 [DEBUG] [Thread-116012] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:47:10.895 [DEBUG] [Thread-116012] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:47:10.895 [DEBUG] [Thread-116012] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:47:10.905 [DEBUG] [Thread-116012] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:47:10.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:47:10.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:47:10.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:47:10.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:47:10.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:47:10.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:47:10.942 [DEBUG] [Thread-116012] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:47:14.928 [DEBUG] [Thread-116014 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:47:29.984 [DEBUG] [Thread-116015 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:47:40.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:47:40.947 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:47:40.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:47:41.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 47, 24), 43.9, 4.18, 0.0, 27.98, 25.51, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:47:41.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:47:24
2025-11-03T12:47:41.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:47:41.881 [DEBUG] [Thread-116016] [transport.py] [_log()] starting thread (client mode): 0xedd4f70
2025-11-03T12:47:41.881 [DEBUG] [Thread-116016] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:47:41.893 [DEBUG] [Thread-116016] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:47:41.893 [INFO] [Thread-116016] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:47:41.894 [DEBUG] [Thread-116016] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:47:41.894 [DEBUG] [Thread-116016] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:47:41.894 [DEBUG] [Thread-116016] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:47:41.894 [DEBUG] [Thread-116016] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:47:41.894 [DEBUG] [Thread-116016] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:47:41.894 [DEBUG] [Thread-116016] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:47:41.895 [DEBUG] [Thread-116016] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:47:41.895 [DEBUG] [Thread-116016] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:47:41.895 [DEBUG] [Thread-116016] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:47:41.895 [DEBUG] [Thread-116016] [transport.py] [_log()] client lang: <none>
2025-11-03T12:47:41.895 [DEBUG] [Thread-116016] [transport.py] [_log()] server lang: <none>
2025-11-03T12:47:41.895 [DEBUG] [Thread-116016] [transport.py] [_log()] kex follows: False
2025-11-03T12:47:41.895 [DEBUG] [Thread-116016] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:47:41.895 [DEBUG] [Thread-116016] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:47:41.895 [DEBUG] [Thread-116016] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:47:41.895 [DEBUG] [Thread-116016] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:47:41.895 [DEBUG] [Thread-116016] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:47:41.895 [DEBUG] [Thread-116016] [transport.py] [_log()] Compression: none
2025-11-03T12:47:41.895 [DEBUG] [Thread-116016] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:47:41.908 [DEBUG] [Thread-116016] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:47:41.908 [DEBUG] [Thread-116016] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:47:41.909 [DEBUG] [Thread-116016] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:47:41.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:47:41.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:47:41.910 [DEBUG] [Thread-116016] [transport.py] [_log()] userauth is OK
2025-11-03T12:47:41.910 [DEBUG] [Thread-116016] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:47:41.911 [DEBUG] [Thread-116016] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:47:41.911 [DEBUG] [Thread-116016] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:47:41.911 [DEBUG] [Thread-116016] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:47:41.931 [INFO] [Thread-116016] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:47:41.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:47:42.544 [DEBUG] [Thread-116016] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:47:42.544 [DEBUG] [Thread-116016] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:47:42.545 [DEBUG] [Thread-116016] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:47:42.585 [DEBUG] [Thread-116016] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:47:42.585 [DEBUG] [Thread-116016] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:47:42.589 [DEBUG] [Thread-116016] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:47:42.602 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:47:42.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:47:42.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:47:42.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:47:42.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:47:42.613 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:47:42.613 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:47:42.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:47:42.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:47:42.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.449409 -999.00  +25.80  19.58      9   -9.20 1 1 1 1 1   888    0 36.70 64.56 ----- 27.4 19.6 341.4 40.6 30.1 -29.4 29.2 -28.2 29.3 -28.1 30.1 -28.0
2025-11-03T12:47:42.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:47:42.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:47:42.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.449409
2025-11-03T12:47:42.622 [DEBUG] [Thread-116016] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:47:42.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:47:42.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:47:42.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:47:42.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:47:42.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:47:42.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:47:24', tmtdew=43.9, humidity=4.18, cloud=0.0, wind=27.98, temperature=25.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:47:08.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:47:42.716 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:47:42.725 [DEBUG] [Thread-116019] [transport.py] [_log()] starting thread (client mode): 0xedd73a0
2025-11-03T12:47:42.725 [DEBUG] [Thread-116019] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:47:42.741 [DEBUG] [Thread-116019] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:47:42.741 [INFO] [Thread-116019] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:47:42.749 [DEBUG] [Thread-116019] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:47:42.749 [DEBUG] [Thread-116019] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:47:42.749 [DEBUG] [Thread-116019] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:47:42.749 [DEBUG] [Thread-116019] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:47:42.749 [DEBUG] [Thread-116019] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:47:42.749 [DEBUG] [Thread-116019] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:47:42.749 [DEBUG] [Thread-116019] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:47:42.749 [DEBUG] [Thread-116019] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:47:42.749 [DEBUG] [Thread-116019] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:47:42.749 [DEBUG] [Thread-116019] [transport.py] [_log()] client lang: <none>
2025-11-03T12:47:42.749 [DEBUG] [Thread-116019] [transport.py] [_log()] server lang: <none>
2025-11-03T12:47:42.749 [DEBUG] [Thread-116019] [transport.py] [_log()] kex follows: False
2025-11-03T12:47:42.749 [DEBUG] [Thread-116019] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:47:42.749 [DEBUG] [Thread-116019] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:47:42.750 [DEBUG] [Thread-116019] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:47:42.750 [DEBUG] [Thread-116019] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:47:42.750 [DEBUG] [Thread-116019] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:47:42.750 [DEBUG] [Thread-116019] [transport.py] [_log()] Compression: none
2025-11-03T12:47:42.750 [DEBUG] [Thread-116019] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:47:42.806 [DEBUG] [Thread-116019] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:47:42.807 [DEBUG] [Thread-116019] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:47:42.808 [DEBUG] [Thread-116019] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:47:42.808 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:47:42.809 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:47:42.862 [DEBUG] [Thread-116019] [transport.py] [_log()] userauth is OK
2025-11-03T12:47:42.863 [DEBUG] [Thread-116019] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:47:42.863 [DEBUG] [Thread-116019] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:47:42.863 [DEBUG] [Thread-116019] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:47:42.863 [DEBUG] [Thread-116019] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:47:42.882 [INFO] [Thread-116019] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:47:42.883 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:47:42.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:47:43.201 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:47:43.203 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:47:43.744 [DEBUG] [Thread-116019] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:47:43.744 [DEBUG] [Thread-116019] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:47:43.792 [DEBUG] [Thread-116019] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:47:43.792 [DEBUG] [Thread-116019] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:47:43.801 [DEBUG] [Thread-116019] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:47:43.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:47:43.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:47:43.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:47:43.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:47:43.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:47:43.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:47:43.845 [DEBUG] [Thread-116019] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:47:45.019 [DEBUG] [Thread-116021 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:48:00.070 [DEBUG] [Thread-116022 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:48:01.959 [DEBUG] [Thread-116023 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:48:13.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:48:13.867 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:48:13.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:48:14.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 47, 56), 44.04, 4.25, 0.0, 34.04, 25.51, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:48:14.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:47:56
2025-11-03T12:48:14.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:48:14.835 [DEBUG] [Thread-116024] [transport.py] [_log()] starting thread (client mode): 0x11780c70
2025-11-03T12:48:14.836 [DEBUG] [Thread-116024] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:48:14.856 [DEBUG] [Thread-116024] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:48:14.856 [INFO] [Thread-116024] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:48:14.860 [DEBUG] [Thread-116024] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:48:14.860 [DEBUG] [Thread-116024] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:48:14.860 [DEBUG] [Thread-116024] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:48:14.860 [DEBUG] [Thread-116024] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:48:14.860 [DEBUG] [Thread-116024] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:48:14.860 [DEBUG] [Thread-116024] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:48:14.860 [DEBUG] [Thread-116024] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:48:14.860 [DEBUG] [Thread-116024] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:48:14.860 [DEBUG] [Thread-116024] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:48:14.860 [DEBUG] [Thread-116024] [transport.py] [_log()] client lang: <none>
2025-11-03T12:48:14.860 [DEBUG] [Thread-116024] [transport.py] [_log()] server lang: <none>
2025-11-03T12:48:14.860 [DEBUG] [Thread-116024] [transport.py] [_log()] kex follows: False
2025-11-03T12:48:14.860 [DEBUG] [Thread-116024] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:48:14.860 [DEBUG] [Thread-116024] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:48:14.860 [DEBUG] [Thread-116024] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:48:14.860 [DEBUG] [Thread-116024] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:48:14.860 [DEBUG] [Thread-116024] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:48:14.860 [DEBUG] [Thread-116024] [transport.py] [_log()] Compression: none
2025-11-03T12:48:14.860 [DEBUG] [Thread-116024] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:48:14.876 [DEBUG] [Thread-116024] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:48:14.876 [DEBUG] [Thread-116024] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:48:14.877 [DEBUG] [Thread-116024] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:48:14.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:48:14.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:48:14.877 [DEBUG] [Thread-116024] [transport.py] [_log()] userauth is OK
2025-11-03T12:48:14.878 [DEBUG] [Thread-116024] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:48:14.878 [DEBUG] [Thread-116024] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:48:14.878 [DEBUG] [Thread-116024] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:48:14.878 [DEBUG] [Thread-116024] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:48:14.887 [INFO] [Thread-116024] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:48:14.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:48:15.101 [DEBUG] [Thread-116026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:48:15.508 [DEBUG] [Thread-116024] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:48:15.508 [DEBUG] [Thread-116024] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:48:15.509 [DEBUG] [Thread-116024] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:48:15.549 [DEBUG] [Thread-116024] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:48:15.549 [DEBUG] [Thread-116024] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:48:15.553 [DEBUG] [Thread-116024] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:48:15.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:48:15.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:48:15.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:48:15.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:48:15.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:48:15.577 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:48:15.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:48:15.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:48:15.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:48:15.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.449757 -999.00  +25.80  22.86      9   -9.30 1 1 1 1 1   888    0 36.45 64.72 ----- 20.5 22.9 328.8 32.2 30.2 -29.9 29.3 -29.6 29.4 -27.9 30.1 -27.6
2025-11-03T12:48:15.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:48:15.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:48:15.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.449757
2025-11-03T12:48:15.586 [DEBUG] [Thread-116024] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:48:15.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:48:15.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:48:15.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:48:15.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:48:15.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:48:15.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:47:56', tmtdew=44.04, humidity=4.25, cloud=0.0, wind=34.04, temperature=25.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:47:39.005', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:48:15.673 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:48:15.685 [DEBUG] [Thread-116028] [transport.py] [_log()] starting thread (client mode): 0xed4e350
2025-11-03T12:48:15.686 [DEBUG] [Thread-116028] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:48:15.700 [DEBUG] [Thread-116028] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:48:15.700 [INFO] [Thread-116028] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:48:15.710 [DEBUG] [Thread-116028] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:48:15.711 [DEBUG] [Thread-116028] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:48:15.711 [DEBUG] [Thread-116028] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:48:15.711 [DEBUG] [Thread-116028] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:48:15.711 [DEBUG] [Thread-116028] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:48:15.711 [DEBUG] [Thread-116028] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:48:15.712 [DEBUG] [Thread-116028] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:48:15.712 [DEBUG] [Thread-116028] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:48:15.712 [DEBUG] [Thread-116028] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:48:15.712 [DEBUG] [Thread-116028] [transport.py] [_log()] client lang: <none>
2025-11-03T12:48:15.712 [DEBUG] [Thread-116028] [transport.py] [_log()] server lang: <none>
2025-11-03T12:48:15.712 [DEBUG] [Thread-116028] [transport.py] [_log()] kex follows: False
2025-11-03T12:48:15.712 [DEBUG] [Thread-116028] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:48:15.713 [DEBUG] [Thread-116028] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:48:15.713 [DEBUG] [Thread-116028] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:48:15.713 [DEBUG] [Thread-116028] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:48:15.713 [DEBUG] [Thread-116028] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:48:15.713 [DEBUG] [Thread-116028] [transport.py] [_log()] Compression: none
2025-11-03T12:48:15.713 [DEBUG] [Thread-116028] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:48:15.767 [DEBUG] [Thread-116028] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:48:15.768 [DEBUG] [Thread-116028] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:48:15.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:48:15.769 [DEBUG] [Thread-116028] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:48:15.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:48:15.826 [DEBUG] [Thread-116028] [transport.py] [_log()] userauth is OK
2025-11-03T12:48:15.826 [DEBUG] [Thread-116028] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:48:15.827 [DEBUG] [Thread-116028] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:48:15.827 [DEBUG] [Thread-116028] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:48:15.827 [DEBUG] [Thread-116028] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:48:15.845 [INFO] [Thread-116028] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:48:15.854 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:48:15.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:48:16.739 [DEBUG] [Thread-116028] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:48:16.740 [DEBUG] [Thread-116028] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:48:16.788 [DEBUG] [Thread-116028] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:48:16.788 [DEBUG] [Thread-116028] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:48:16.798 [DEBUG] [Thread-116028] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:48:16.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:48:16.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:48:16.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:48:16.836 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:48:16.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:48:16.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:48:16.845 [DEBUG] [Thread-116028] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:48:30.131 [DEBUG] [Thread-116030 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:48:43.343 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:48:43.344 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:48:45.169 [DEBUG] [Thread-116031 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:48:46.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:48:46.868 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:48:46.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:48:47.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 48, 28), 44.26, 4.18, 0.0, 30.28, 25.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:48:47.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:48:28
2025-11-03T12:48:47.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:48:47.917 [DEBUG] [Thread-116032] [transport.py] [_log()] starting thread (client mode): 0x11781e10
2025-11-03T12:48:47.917 [DEBUG] [Thread-116032] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:48:47.937 [DEBUG] [Thread-116032] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:48:47.938 [INFO] [Thread-116032] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:48:47.941 [DEBUG] [Thread-116032] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:48:47.941 [DEBUG] [Thread-116032] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:48:47.941 [DEBUG] [Thread-116032] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:48:47.941 [DEBUG] [Thread-116032] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:48:47.941 [DEBUG] [Thread-116032] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:48:47.941 [DEBUG] [Thread-116032] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:48:47.941 [DEBUG] [Thread-116032] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:48:47.941 [DEBUG] [Thread-116032] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:48:47.941 [DEBUG] [Thread-116032] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:48:47.942 [DEBUG] [Thread-116032] [transport.py] [_log()] client lang: <none>
2025-11-03T12:48:47.942 [DEBUG] [Thread-116032] [transport.py] [_log()] server lang: <none>
2025-11-03T12:48:47.942 [DEBUG] [Thread-116032] [transport.py] [_log()] kex follows: False
2025-11-03T12:48:47.942 [DEBUG] [Thread-116032] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:48:47.942 [DEBUG] [Thread-116032] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:48:47.942 [DEBUG] [Thread-116032] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:48:47.942 [DEBUG] [Thread-116032] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:48:47.942 [DEBUG] [Thread-116032] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:48:47.942 [DEBUG] [Thread-116032] [transport.py] [_log()] Compression: none
2025-11-03T12:48:47.942 [DEBUG] [Thread-116032] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:48:47.963 [DEBUG] [Thread-116032] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:48:47.972 [DEBUG] [Thread-116032] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:48:47.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:48:47.974 [DEBUG] [Thread-116032] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:48:47.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:48:47.976 [DEBUG] [Thread-116032] [transport.py] [_log()] userauth is OK
2025-11-03T12:48:47.976 [DEBUG] [Thread-116032] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:48:47.976 [DEBUG] [Thread-116032] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:48:47.976 [DEBUG] [Thread-116032] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:48:47.976 [DEBUG] [Thread-116032] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:48:48.002 [INFO] [Thread-116032] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:48:48.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:48:48.660 [DEBUG] [Thread-116032] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:48:48.660 [DEBUG] [Thread-116032] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:48:48.660 [DEBUG] [Thread-116032] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:48:48.701 [DEBUG] [Thread-116032] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:48:48.702 [DEBUG] [Thread-116032] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:48:48.704 [DEBUG] [Thread-116032] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:48:48.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:48:48.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:48:48.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:48:48.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:48:48.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:48:48.723 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:48:48.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:48:48.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:48:48.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:48:48.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.450451 -999.00  +25.50  25.92      8   -9.80 1 1 1 1 1   888    0 36.22 71.03 ----- 29.7 25.9 340.4 34.8 30.0 -30.6 29.1 -29.4 29.3 -29.2 30.0 -27.3
2025-11-03T12:48:48.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:48:48.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:48:48.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.450451
2025-11-03T12:48:48.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:48:48.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:48:48.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:48:48.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:48:48.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:48:48.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:48:28', tmtdew=44.26, humidity=4.18, cloud=0.0, wind=30.28, temperature=25.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:48:38.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:48:48.724 [DEBUG] [Thread-116032] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:48:48.796 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:48:48.808 [DEBUG] [Thread-116035] [transport.py] [_log()] starting thread (client mode): 0x11783880
2025-11-03T12:48:48.808 [DEBUG] [Thread-116035] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:48:48.823 [DEBUG] [Thread-116035] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:48:48.823 [INFO] [Thread-116035] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:48:48.830 [DEBUG] [Thread-116035] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:48:48.830 [DEBUG] [Thread-116035] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:48:48.830 [DEBUG] [Thread-116035] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:48:48.830 [DEBUG] [Thread-116035] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:48:48.830 [DEBUG] [Thread-116035] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:48:48.831 [DEBUG] [Thread-116035] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:48:48.831 [DEBUG] [Thread-116035] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:48:48.831 [DEBUG] [Thread-116035] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:48:48.831 [DEBUG] [Thread-116035] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:48:48.831 [DEBUG] [Thread-116035] [transport.py] [_log()] client lang: <none>
2025-11-03T12:48:48.831 [DEBUG] [Thread-116035] [transport.py] [_log()] server lang: <none>
2025-11-03T12:48:48.831 [DEBUG] [Thread-116035] [transport.py] [_log()] kex follows: False
2025-11-03T12:48:48.831 [DEBUG] [Thread-116035] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:48:48.831 [DEBUG] [Thread-116035] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:48:48.831 [DEBUG] [Thread-116035] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:48:48.831 [DEBUG] [Thread-116035] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:48:48.831 [DEBUG] [Thread-116035] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:48:48.831 [DEBUG] [Thread-116035] [transport.py] [_log()] Compression: none
2025-11-03T12:48:48.831 [DEBUG] [Thread-116035] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:48:48.889 [DEBUG] [Thread-116035] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:48:48.889 [DEBUG] [Thread-116035] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:48:48.889 [DEBUG] [Thread-116035] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:48:48.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:48:48.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:48:48.945 [DEBUG] [Thread-116035] [transport.py] [_log()] userauth is OK
2025-11-03T12:48:48.946 [DEBUG] [Thread-116035] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:48:48.946 [DEBUG] [Thread-116035] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:48:48.946 [DEBUG] [Thread-116035] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:48:48.946 [DEBUG] [Thread-116035] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:48:48.960 [INFO] [Thread-116035] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:48:48.960 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:48:48.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:48:49.847 [DEBUG] [Thread-116035] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:48:49.847 [DEBUG] [Thread-116035] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:48:49.896 [DEBUG] [Thread-116035] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:48:49.896 [DEBUG] [Thread-116035] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:48:49.905 [DEBUG] [Thread-116035] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:48:49.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:48:49.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:48:49.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:48:49.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:48:49.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:48:49.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:48:49.938 [DEBUG] [Thread-116035] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:49:00.205 [DEBUG] [Thread-116037 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:49:02.011 [DEBUG] [Thread-116038 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:49:15.267 [DEBUG] [Thread-116039 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:49:19.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:49:19.961 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:49:19.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:49:20.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 49, 1), 44.21, 4.2, 0.0, 31.39, 25.62, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:49:20.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:49:01
2025-11-03T12:49:20.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:49:20.939 [DEBUG] [Thread-116040] [transport.py] [_log()] starting thread (client mode): 0xedd63b0
2025-11-03T12:49:20.939 [DEBUG] [Thread-116040] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:49:20.959 [DEBUG] [Thread-116040] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:49:20.959 [INFO] [Thread-116040] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:49:20.969 [DEBUG] [Thread-116040] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:49:20.970 [DEBUG] [Thread-116040] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:49:20.970 [DEBUG] [Thread-116040] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:49:20.970 [DEBUG] [Thread-116040] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:49:20.970 [DEBUG] [Thread-116040] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:49:20.970 [DEBUG] [Thread-116040] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:49:20.970 [DEBUG] [Thread-116040] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:49:20.970 [DEBUG] [Thread-116040] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:49:20.970 [DEBUG] [Thread-116040] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:49:20.970 [DEBUG] [Thread-116040] [transport.py] [_log()] client lang: <none>
2025-11-03T12:49:20.970 [DEBUG] [Thread-116040] [transport.py] [_log()] server lang: <none>
2025-11-03T12:49:20.970 [DEBUG] [Thread-116040] [transport.py] [_log()] kex follows: False
2025-11-03T12:49:20.970 [DEBUG] [Thread-116040] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:49:20.970 [DEBUG] [Thread-116040] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:49:20.970 [DEBUG] [Thread-116040] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:49:20.970 [DEBUG] [Thread-116040] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:49:20.970 [DEBUG] [Thread-116040] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:49:20.970 [DEBUG] [Thread-116040] [transport.py] [_log()] Compression: none
2025-11-03T12:49:20.970 [DEBUG] [Thread-116040] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:49:20.990 [DEBUG] [Thread-116040] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:49:20.991 [DEBUG] [Thread-116040] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:49:20.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:49:20.992 [DEBUG] [Thread-116040] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:49:20.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:49:20.994 [DEBUG] [Thread-116040] [transport.py] [_log()] userauth is OK
2025-11-03T12:49:20.994 [DEBUG] [Thread-116040] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:49:20.994 [DEBUG] [Thread-116040] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:49:20.994 [DEBUG] [Thread-116040] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:49:20.995 [DEBUG] [Thread-116040] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:49:21.018 [INFO] [Thread-116040] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:49:21.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:49:21.671 [DEBUG] [Thread-116040] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:49:21.671 [DEBUG] [Thread-116040] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:49:21.671 [DEBUG] [Thread-116040] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:49:21.711 [DEBUG] [Thread-116040] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:49:21.712 [DEBUG] [Thread-116040] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:49:21.714 [DEBUG] [Thread-116040] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:49:21.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:49:21.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:49:21.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:49:21.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:49:21.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:49:21.736 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:49:21.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:49:21.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:49:21.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:49:21.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.450798 -999.00  +25.40  19.68      8   -9.80 1 1 1 1 1   888    0 36.41 69.92 ----- 16.3 19.7 353.7 33.0 30.2 -28.8 29.3 -28.8 29.4 -27.9 30.1 -27.3
2025-11-03T12:49:21.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:49:21.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:49:21.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.450798
2025-11-03T12:49:21.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:49:21.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:49:21.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:49:21.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:49:21.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:49:21.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:49:01', tmtdew=44.21, humidity=4.2, cloud=0.0, wind=31.39, temperature=25.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:49:08.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:49:21.747 [DEBUG] [Thread-116040] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:49:21.830 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:49:21.840 [DEBUG] [Thread-116043] [transport.py] [_log()] starting thread (client mode): 0xedd6a40
2025-11-03T12:49:21.840 [DEBUG] [Thread-116043] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:49:21.855 [DEBUG] [Thread-116043] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:49:21.855 [INFO] [Thread-116043] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:49:21.863 [DEBUG] [Thread-116043] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:49:21.863 [DEBUG] [Thread-116043] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:49:21.863 [DEBUG] [Thread-116043] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:49:21.863 [DEBUG] [Thread-116043] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:49:21.863 [DEBUG] [Thread-116043] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:49:21.863 [DEBUG] [Thread-116043] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:49:21.863 [DEBUG] [Thread-116043] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:49:21.863 [DEBUG] [Thread-116043] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:49:21.863 [DEBUG] [Thread-116043] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:49:21.863 [DEBUG] [Thread-116043] [transport.py] [_log()] client lang: <none>
2025-11-03T12:49:21.863 [DEBUG] [Thread-116043] [transport.py] [_log()] server lang: <none>
2025-11-03T12:49:21.863 [DEBUG] [Thread-116043] [transport.py] [_log()] kex follows: False
2025-11-03T12:49:21.864 [DEBUG] [Thread-116043] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:49:21.864 [DEBUG] [Thread-116043] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:49:21.864 [DEBUG] [Thread-116043] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:49:21.864 [DEBUG] [Thread-116043] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:49:21.864 [DEBUG] [Thread-116043] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:49:21.864 [DEBUG] [Thread-116043] [transport.py] [_log()] Compression: none
2025-11-03T12:49:21.864 [DEBUG] [Thread-116043] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:49:21.924 [DEBUG] [Thread-116043] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:49:21.925 [DEBUG] [Thread-116043] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:49:21.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:49:21.926 [DEBUG] [Thread-116043] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:49:21.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:49:21.982 [DEBUG] [Thread-116043] [transport.py] [_log()] userauth is OK
2025-11-03T12:49:21.983 [DEBUG] [Thread-116043] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:49:21.983 [DEBUG] [Thread-116043] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:49:21.983 [DEBUG] [Thread-116043] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:49:21.983 [DEBUG] [Thread-116043] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:49:22.002 [INFO] [Thread-116043] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:49:22.002 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:49:22.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:49:22.846 [DEBUG] [Thread-116043] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:49:22.846 [DEBUG] [Thread-116043] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:49:22.895 [DEBUG] [Thread-116043] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:49:22.895 [DEBUG] [Thread-116043] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:49:22.904 [DEBUG] [Thread-116043] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:49:22.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:49:22.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:49:22.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:49:22.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:49:22.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:49:22.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:49:22.937 [DEBUG] [Thread-116043] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:49:30.295 [DEBUG] [Thread-116045 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:49:43.485 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:49:43.486 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:49:45.338 [DEBUG] [Thread-116046 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:49:52.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:49:52.941 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:49:52.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:49:53.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 49, 33), 44.3, 4.27, 0.0, 28.3, 25.52, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:49:53.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:49:33
2025-11-03T12:49:53.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:49:53.959 [DEBUG] [Thread-116047] [transport.py] [_log()] starting thread (client mode): 0x11783eb0
2025-11-03T12:49:53.959 [DEBUG] [Thread-116047] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:49:53.978 [DEBUG] [Thread-116047] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:49:53.978 [INFO] [Thread-116047] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:49:53.981 [DEBUG] [Thread-116047] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:49:53.981 [DEBUG] [Thread-116047] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:49:53.981 [DEBUG] [Thread-116047] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:49:53.981 [DEBUG] [Thread-116047] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:49:53.981 [DEBUG] [Thread-116047] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:49:53.981 [DEBUG] [Thread-116047] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:49:53.981 [DEBUG] [Thread-116047] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:49:53.981 [DEBUG] [Thread-116047] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:49:53.981 [DEBUG] [Thread-116047] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:49:53.981 [DEBUG] [Thread-116047] [transport.py] [_log()] client lang: <none>
2025-11-03T12:49:53.981 [DEBUG] [Thread-116047] [transport.py] [_log()] server lang: <none>
2025-11-03T12:49:53.981 [DEBUG] [Thread-116047] [transport.py] [_log()] kex follows: False
2025-11-03T12:49:53.981 [DEBUG] [Thread-116047] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:49:53.982 [DEBUG] [Thread-116047] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:49:53.982 [DEBUG] [Thread-116047] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:49:53.982 [DEBUG] [Thread-116047] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:49:53.982 [DEBUG] [Thread-116047] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:49:53.982 [DEBUG] [Thread-116047] [transport.py] [_log()] Compression: none
2025-11-03T12:49:53.982 [DEBUG] [Thread-116047] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:49:53.999 [DEBUG] [Thread-116047] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:49:54.000 [DEBUG] [Thread-116047] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:49:54.000 [DEBUG] [Thread-116047] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:49:54.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:49:54.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:49:54.002 [DEBUG] [Thread-116047] [transport.py] [_log()] userauth is OK
2025-11-03T12:49:54.003 [DEBUG] [Thread-116047] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:49:54.003 [DEBUG] [Thread-116047] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:49:54.003 [DEBUG] [Thread-116047] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:49:54.003 [DEBUG] [Thread-116047] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:49:54.026 [INFO] [Thread-116047] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:49:54.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:49:54.664 [DEBUG] [Thread-116047] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:49:54.664 [DEBUG] [Thread-116047] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:49:54.664 [DEBUG] [Thread-116047] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:49:54.706 [DEBUG] [Thread-116047] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:49:54.706 [DEBUG] [Thread-116047] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:49:54.708 [DEBUG] [Thread-116047] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:49:54.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:49:54.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:49:54.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:49:54.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:49:54.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:49:54.725 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:49:54.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:49:54.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:49:54.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:49:54.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.451145 -999.00  +25.60  27.01      9   -9.10 1 1 1 1 1   888    0 36.20 69.11 ----- 27.1 27.0 336.4 38.2 30.2 -30.2 29.3 -28.9 29.5 -27.8 30.1 -29.7
2025-11-03T12:49:54.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:49:54.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:49:54.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.451145
2025-11-03T12:49:54.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:49:54.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:49:54.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:49:54.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:49:54.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:49:54.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:49:33', tmtdew=44.3, humidity=4.27, cloud=0.0, wind=28.3, temperature=25.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:49:38.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:49:54.726 [DEBUG] [Thread-116047] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:49:54.798 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:49:54.809 [DEBUG] [Thread-116050] [transport.py] [_log()] starting thread (client mode): 0x11781510
2025-11-03T12:49:54.809 [DEBUG] [Thread-116050] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:49:54.823 [DEBUG] [Thread-116050] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:49:54.823 [INFO] [Thread-116050] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:49:54.831 [DEBUG] [Thread-116050] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:49:54.831 [DEBUG] [Thread-116050] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:49:54.831 [DEBUG] [Thread-116050] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:49:54.831 [DEBUG] [Thread-116050] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:49:54.831 [DEBUG] [Thread-116050] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:49:54.831 [DEBUG] [Thread-116050] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:49:54.831 [DEBUG] [Thread-116050] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:49:54.831 [DEBUG] [Thread-116050] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:49:54.831 [DEBUG] [Thread-116050] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:49:54.831 [DEBUG] [Thread-116050] [transport.py] [_log()] client lang: <none>
2025-11-03T12:49:54.831 [DEBUG] [Thread-116050] [transport.py] [_log()] server lang: <none>
2025-11-03T12:49:54.831 [DEBUG] [Thread-116050] [transport.py] [_log()] kex follows: False
2025-11-03T12:49:54.831 [DEBUG] [Thread-116050] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:49:54.831 [DEBUG] [Thread-116050] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:49:54.831 [DEBUG] [Thread-116050] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:49:54.831 [DEBUG] [Thread-116050] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:49:54.831 [DEBUG] [Thread-116050] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:49:54.831 [DEBUG] [Thread-116050] [transport.py] [_log()] Compression: none
2025-11-03T12:49:54.831 [DEBUG] [Thread-116050] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:49:54.892 [DEBUG] [Thread-116050] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:49:54.892 [DEBUG] [Thread-116050] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:49:54.892 [DEBUG] [Thread-116050] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:49:54.892 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:49:54.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:49:54.957 [DEBUG] [Thread-116050] [transport.py] [_log()] userauth is OK
2025-11-03T12:49:54.957 [DEBUG] [Thread-116050] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:49:54.957 [DEBUG] [Thread-116050] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:49:54.957 [DEBUG] [Thread-116050] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:49:54.957 [DEBUG] [Thread-116050] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:49:54.971 [INFO] [Thread-116050] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:49:54.971 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:49:54.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:49:55.808 [DEBUG] [Thread-116050] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:49:55.814 [DEBUG] [Thread-116050] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:49:55.856 [DEBUG] [Thread-116050] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:49:55.856 [DEBUG] [Thread-116050] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:49:55.865 [DEBUG] [Thread-116050] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:49:55.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:49:55.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:49:55.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:49:55.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:49:55.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:49:55.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:49:55.902 [DEBUG] [Thread-116050] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:50:00.375 [DEBUG] [Thread-116052 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:50:02.101 [DEBUG] [Thread-116053 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:50:15.425 [DEBUG] [Thread-116054 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:50:25.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:50:25.925 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:50:25.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:50:26.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 50, 5), 44.93, 4.04, 0.0, 30.89, 25.52, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:50:26.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:50:05
2025-11-03T12:50:26.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:50:26.929 [DEBUG] [Thread-116055] [transport.py] [_log()] starting thread (client mode): 0x11782b90
2025-11-03T12:50:26.929 [DEBUG] [Thread-116055] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:50:26.940 [DEBUG] [Thread-116055] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:50:26.940 [INFO] [Thread-116055] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:50:26.950 [DEBUG] [Thread-116055] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:50:26.950 [DEBUG] [Thread-116055] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:50:26.950 [DEBUG] [Thread-116055] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:50:26.950 [DEBUG] [Thread-116055] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:50:26.950 [DEBUG] [Thread-116055] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:50:26.950 [DEBUG] [Thread-116055] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:50:26.950 [DEBUG] [Thread-116055] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:50:26.950 [DEBUG] [Thread-116055] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:50:26.950 [DEBUG] [Thread-116055] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:50:26.950 [DEBUG] [Thread-116055] [transport.py] [_log()] client lang: <none>
2025-11-03T12:50:26.950 [DEBUG] [Thread-116055] [transport.py] [_log()] server lang: <none>
2025-11-03T12:50:26.950 [DEBUG] [Thread-116055] [transport.py] [_log()] kex follows: False
2025-11-03T12:50:26.950 [DEBUG] [Thread-116055] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:50:26.950 [DEBUG] [Thread-116055] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:50:26.950 [DEBUG] [Thread-116055] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:50:26.950 [DEBUG] [Thread-116055] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:50:26.950 [DEBUG] [Thread-116055] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:50:26.950 [DEBUG] [Thread-116055] [transport.py] [_log()] Compression: none
2025-11-03T12:50:26.950 [DEBUG] [Thread-116055] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:50:26.958 [DEBUG] [Thread-116055] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:50:26.958 [DEBUG] [Thread-116055] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:50:26.958 [DEBUG] [Thread-116055] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:50:26.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:50:26.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:50:26.960 [DEBUG] [Thread-116055] [transport.py] [_log()] userauth is OK
2025-11-03T12:50:26.960 [DEBUG] [Thread-116055] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:50:26.960 [DEBUG] [Thread-116055] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:50:26.960 [DEBUG] [Thread-116055] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:50:26.960 [DEBUG] [Thread-116055] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:50:26.980 [INFO] [Thread-116055] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:50:26.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:50:27.572 [DEBUG] [Thread-116055] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:50:27.572 [DEBUG] [Thread-116055] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:50:27.572 [DEBUG] [Thread-116055] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:50:27.613 [DEBUG] [Thread-116055] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:50:27.613 [DEBUG] [Thread-116055] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:50:27.617 [DEBUG] [Thread-116055] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:50:27.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:50:27.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:50:27.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:50:27.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:50:27.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:50:27.639 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:50:27.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:50:27.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:50:27.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:50:27.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.451492 -999.00  +25.60  24.31      9   -9.10 1 1 1 1 1   888    0 36.52 73.78 ----- 28.0 24.3 329.2 41.6 30.1 -30.5 29.2 -30.2 29.4 -30.1 29.9 -28.7
2025-11-03T12:50:27.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:50:27.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:50:27.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.451492
2025-11-03T12:50:27.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:50:27.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:50:27.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:50:27.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:50:27.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:50:27.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:50:05', tmtdew=44.93, humidity=4.04, cloud=0.0, wind=30.89, temperature=25.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:50:08.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:50:27.640 [DEBUG] [Thread-116055] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:50:27.714 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:50:27.726 [DEBUG] [Thread-116058] [transport.py] [_log()] starting thread (client mode): 0x11783ca0
2025-11-03T12:50:27.726 [DEBUG] [Thread-116058] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:50:27.744 [DEBUG] [Thread-116058] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:50:27.745 [INFO] [Thread-116058] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:50:27.752 [DEBUG] [Thread-116058] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:50:27.752 [DEBUG] [Thread-116058] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:50:27.752 [DEBUG] [Thread-116058] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:50:27.753 [DEBUG] [Thread-116058] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:50:27.753 [DEBUG] [Thread-116058] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:50:27.753 [DEBUG] [Thread-116058] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:50:27.753 [DEBUG] [Thread-116058] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:50:27.753 [DEBUG] [Thread-116058] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:50:27.753 [DEBUG] [Thread-116058] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:50:27.753 [DEBUG] [Thread-116058] [transport.py] [_log()] client lang: <none>
2025-11-03T12:50:27.753 [DEBUG] [Thread-116058] [transport.py] [_log()] server lang: <none>
2025-11-03T12:50:27.753 [DEBUG] [Thread-116058] [transport.py] [_log()] kex follows: False
2025-11-03T12:50:27.753 [DEBUG] [Thread-116058] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:50:27.754 [DEBUG] [Thread-116058] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:50:27.754 [DEBUG] [Thread-116058] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:50:27.754 [DEBUG] [Thread-116058] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:50:27.754 [DEBUG] [Thread-116058] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:50:27.754 [DEBUG] [Thread-116058] [transport.py] [_log()] Compression: none
2025-11-03T12:50:27.754 [DEBUG] [Thread-116058] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:50:27.809 [DEBUG] [Thread-116058] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:50:27.810 [DEBUG] [Thread-116058] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:50:27.810 [DEBUG] [Thread-116058] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:50:27.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:50:27.811 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:50:27.870 [DEBUG] [Thread-116058] [transport.py] [_log()] userauth is OK
2025-11-03T12:50:27.871 [DEBUG] [Thread-116058] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:50:27.871 [DEBUG] [Thread-116058] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:50:27.871 [DEBUG] [Thread-116058] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:50:27.871 [DEBUG] [Thread-116058] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:50:27.891 [INFO] [Thread-116058] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:50:27.892 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:50:27.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:50:28.799 [DEBUG] [Thread-116058] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:50:28.799 [DEBUG] [Thread-116058] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:50:28.847 [DEBUG] [Thread-116058] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:50:28.847 [DEBUG] [Thread-116058] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:50:28.857 [DEBUG] [Thread-116058] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:50:28.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:50:28.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:50:28.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:50:28.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:50:28.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:50:28.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:50:28.894 [DEBUG] [Thread-116058] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:50:30.473 [DEBUG] [Thread-116060 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:50:43.627 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:50:43.628 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:50:45.523 [DEBUG] [Thread-116061 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:50:58.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:50:58.892 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:50:58.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:50:59.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 50, 38), 44.2, 4.18, 0.0, 27.63, 25.61, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:50:59.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:50:38
2025-11-03T12:50:59.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:50:59.851 [DEBUG] [Thread-116062] [transport.py] [_log()] starting thread (client mode): 0xedd5e40
2025-11-03T12:50:59.851 [DEBUG] [Thread-116062] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:50:59.869 [DEBUG] [Thread-116062] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:50:59.869 [INFO] [Thread-116062] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:50:59.871 [DEBUG] [Thread-116062] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:50:59.872 [DEBUG] [Thread-116062] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:50:59.872 [DEBUG] [Thread-116062] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:50:59.872 [DEBUG] [Thread-116062] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:50:59.872 [DEBUG] [Thread-116062] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:50:59.872 [DEBUG] [Thread-116062] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:50:59.872 [DEBUG] [Thread-116062] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:50:59.872 [DEBUG] [Thread-116062] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:50:59.872 [DEBUG] [Thread-116062] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:50:59.872 [DEBUG] [Thread-116062] [transport.py] [_log()] client lang: <none>
2025-11-03T12:50:59.872 [DEBUG] [Thread-116062] [transport.py] [_log()] server lang: <none>
2025-11-03T12:50:59.872 [DEBUG] [Thread-116062] [transport.py] [_log()] kex follows: False
2025-11-03T12:50:59.872 [DEBUG] [Thread-116062] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:50:59.872 [DEBUG] [Thread-116062] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:50:59.872 [DEBUG] [Thread-116062] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:50:59.872 [DEBUG] [Thread-116062] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:50:59.872 [DEBUG] [Thread-116062] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:50:59.872 [DEBUG] [Thread-116062] [transport.py] [_log()] Compression: none
2025-11-03T12:50:59.872 [DEBUG] [Thread-116062] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:50:59.882 [DEBUG] [Thread-116062] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:50:59.882 [DEBUG] [Thread-116062] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:50:59.882 [DEBUG] [Thread-116062] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:50:59.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:50:59.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:50:59.883 [DEBUG] [Thread-116062] [transport.py] [_log()] userauth is OK
2025-11-03T12:50:59.883 [DEBUG] [Thread-116062] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:50:59.884 [DEBUG] [Thread-116062] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:50:59.884 [DEBUG] [Thread-116062] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:50:59.884 [DEBUG] [Thread-116062] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:50:59.896 [INFO] [Thread-116062] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:50:59.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:51:00.473 [DEBUG] [Thread-116062] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:51:00.473 [DEBUG] [Thread-116062] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:51:00.473 [DEBUG] [Thread-116062] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:51:00.514 [DEBUG] [Thread-116062] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:51:00.514 [DEBUG] [Thread-116062] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:51:00.517 [DEBUG] [Thread-116062] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:51:00.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:51:00.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:51:00.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:51:00.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:51:00.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:51:00.532 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:51:00.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:51:00.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:51:00.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:51:00.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.451840 -999.00  +25.90  16.06      9   -9.10 1 1 1 1 1   888    0 36.27 73.06 ----- 22.6 16.1 6.5 30.9 30.1 -29.0 29.4 -27.9 29.4 -28.2 30.1 -29.3
2025-11-03T12:51:00.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:51:00.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:51:00.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.451840
2025-11-03T12:51:00.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:51:00.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:51:00.541 [DEBUG] [Thread-116062] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:51:00.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:51:00.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:51:00.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:51:00.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:50:38', tmtdew=44.2, humidity=4.18, cloud=0.0, wind=27.63, temperature=25.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:50:38.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:51:00.552 [DEBUG] [Thread-116065 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:51:00.614 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:51:00.623 [DEBUG] [Thread-116066] [transport.py] [_log()] starting thread (client mode): 0xedd7190
2025-11-03T12:51:00.623 [DEBUG] [Thread-116066] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:51:00.638 [DEBUG] [Thread-116066] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:51:00.638 [INFO] [Thread-116066] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:51:00.646 [DEBUG] [Thread-116066] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:51:00.646 [DEBUG] [Thread-116066] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:51:00.646 [DEBUG] [Thread-116066] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:51:00.646 [DEBUG] [Thread-116066] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:51:00.646 [DEBUG] [Thread-116066] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:51:00.646 [DEBUG] [Thread-116066] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:51:00.646 [DEBUG] [Thread-116066] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:51:00.646 [DEBUG] [Thread-116066] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:51:00.646 [DEBUG] [Thread-116066] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:51:00.646 [DEBUG] [Thread-116066] [transport.py] [_log()] client lang: <none>
2025-11-03T12:51:00.646 [DEBUG] [Thread-116066] [transport.py] [_log()] server lang: <none>
2025-11-03T12:51:00.646 [DEBUG] [Thread-116066] [transport.py] [_log()] kex follows: False
2025-11-03T12:51:00.646 [DEBUG] [Thread-116066] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:51:00.647 [DEBUG] [Thread-116066] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:51:00.647 [DEBUG] [Thread-116066] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:51:00.647 [DEBUG] [Thread-116066] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:51:00.647 [DEBUG] [Thread-116066] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:51:00.647 [DEBUG] [Thread-116066] [transport.py] [_log()] Compression: none
2025-11-03T12:51:00.647 [DEBUG] [Thread-116066] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:51:00.708 [DEBUG] [Thread-116066] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:51:00.708 [DEBUG] [Thread-116066] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:51:00.708 [DEBUG] [Thread-116066] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:51:00.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:51:00.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:51:00.765 [DEBUG] [Thread-116066] [transport.py] [_log()] userauth is OK
2025-11-03T12:51:00.765 [DEBUG] [Thread-116066] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:51:00.765 [DEBUG] [Thread-116066] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:51:00.765 [DEBUG] [Thread-116066] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:51:00.765 [DEBUG] [Thread-116066] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:51:00.780 [INFO] [Thread-116066] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:51:00.780 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:51:00.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:51:01.600 [DEBUG] [Thread-116066] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:51:01.601 [DEBUG] [Thread-116066] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:51:01.649 [DEBUG] [Thread-116066] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:51:01.649 [DEBUG] [Thread-116066] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:51:01.658 [DEBUG] [Thread-116066] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:51:01.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:51:01.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:51:01.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:51:01.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:51:01.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:51:01.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:51:01.693 [DEBUG] [Thread-116066] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:51:02.179 [DEBUG] [Thread-116068 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:51:15.590 [DEBUG] [Thread-116069 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:51:30.619 [DEBUG] [Thread-116070 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:51:31.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:51:31.713 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:51:31.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:51:32.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 51, 10), 44.13, 4.22, 0.0, 27.68, 25.67, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:51:32.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:51:10
2025-11-03T12:51:32.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:51:32.647 [DEBUG] [Thread-116071] [transport.py] [_log()] starting thread (client mode): 0x117bf670
2025-11-03T12:51:32.647 [DEBUG] [Thread-116071] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:51:32.666 [DEBUG] [Thread-116071] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:51:32.666 [INFO] [Thread-116071] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:51:32.667 [DEBUG] [Thread-116071] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:51:32.668 [DEBUG] [Thread-116071] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:51:32.668 [DEBUG] [Thread-116071] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:51:32.668 [DEBUG] [Thread-116071] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:51:32.668 [DEBUG] [Thread-116071] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:51:32.668 [DEBUG] [Thread-116071] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:51:32.668 [DEBUG] [Thread-116071] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:51:32.668 [DEBUG] [Thread-116071] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:51:32.668 [DEBUG] [Thread-116071] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:51:32.668 [DEBUG] [Thread-116071] [transport.py] [_log()] client lang: <none>
2025-11-03T12:51:32.668 [DEBUG] [Thread-116071] [transport.py] [_log()] server lang: <none>
2025-11-03T12:51:32.668 [DEBUG] [Thread-116071] [transport.py] [_log()] kex follows: False
2025-11-03T12:51:32.668 [DEBUG] [Thread-116071] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:51:32.668 [DEBUG] [Thread-116071] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:51:32.668 [DEBUG] [Thread-116071] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:51:32.668 [DEBUG] [Thread-116071] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:51:32.668 [DEBUG] [Thread-116071] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:51:32.668 [DEBUG] [Thread-116071] [transport.py] [_log()] Compression: none
2025-11-03T12:51:32.668 [DEBUG] [Thread-116071] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:51:32.678 [DEBUG] [Thread-116071] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:51:32.678 [DEBUG] [Thread-116071] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:51:32.679 [DEBUG] [Thread-116071] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:51:32.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:51:32.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:51:32.680 [DEBUG] [Thread-116071] [transport.py] [_log()] userauth is OK
2025-11-03T12:51:32.680 [DEBUG] [Thread-116071] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:51:32.680 [DEBUG] [Thread-116071] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:51:32.680 [DEBUG] [Thread-116071] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:51:32.680 [DEBUG] [Thread-116071] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:51:32.695 [INFO] [Thread-116071] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:51:32.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:51:33.318 [DEBUG] [Thread-116071] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:51:33.318 [DEBUG] [Thread-116071] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:51:33.319 [DEBUG] [Thread-116071] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:51:33.358 [DEBUG] [Thread-116071] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:51:33.359 [DEBUG] [Thread-116071] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:51:33.361 [DEBUG] [Thread-116071] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:51:33.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:51:33.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:51:33.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:51:33.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:51:33.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:51:33.375 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:51:33.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:51:33.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:51:33.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:51:33.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.452187 -999.00  +25.60  20.30      9   -9.40 1 1 1 1 1   888    0 35.75 70.61 ----- 20.8 20.3 4.4 32.3 30.1 -29.6 29.4 -28.7 29.4 -28.9 30.1 -28.3
2025-11-03T12:51:33.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:51:33.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:51:33.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.452187
2025-11-03T12:51:33.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:51:33.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:51:33.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:51:33.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:51:33.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:51:33.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:51:10', tmtdew=44.13, humidity=4.22, cloud=0.0, wind=27.68, temperature=25.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:51:08.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:51:33.378 [DEBUG] [Thread-116071] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:51:33.465 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:51:33.474 [DEBUG] [Thread-116074] [transport.py] [_log()] starting thread (client mode): 0x117bfac0
2025-11-03T12:51:33.475 [DEBUG] [Thread-116074] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:51:33.489 [DEBUG] [Thread-116074] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:51:33.489 [INFO] [Thread-116074] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:51:33.497 [DEBUG] [Thread-116074] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:51:33.497 [DEBUG] [Thread-116074] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:51:33.497 [DEBUG] [Thread-116074] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:51:33.497 [DEBUG] [Thread-116074] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:51:33.497 [DEBUG] [Thread-116074] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:51:33.497 [DEBUG] [Thread-116074] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:51:33.497 [DEBUG] [Thread-116074] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:51:33.497 [DEBUG] [Thread-116074] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:51:33.497 [DEBUG] [Thread-116074] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:51:33.497 [DEBUG] [Thread-116074] [transport.py] [_log()] client lang: <none>
2025-11-03T12:51:33.497 [DEBUG] [Thread-116074] [transport.py] [_log()] server lang: <none>
2025-11-03T12:51:33.497 [DEBUG] [Thread-116074] [transport.py] [_log()] kex follows: False
2025-11-03T12:51:33.497 [DEBUG] [Thread-116074] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:51:33.497 [DEBUG] [Thread-116074] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:51:33.497 [DEBUG] [Thread-116074] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:51:33.497 [DEBUG] [Thread-116074] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:51:33.498 [DEBUG] [Thread-116074] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:51:33.498 [DEBUG] [Thread-116074] [transport.py] [_log()] Compression: none
2025-11-03T12:51:33.498 [DEBUG] [Thread-116074] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:51:33.553 [DEBUG] [Thread-116074] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:51:33.553 [DEBUG] [Thread-116074] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:51:33.554 [DEBUG] [Thread-116074] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:51:33.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:51:33.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:51:33.609 [DEBUG] [Thread-116074] [transport.py] [_log()] userauth is OK
2025-11-03T12:51:33.609 [DEBUG] [Thread-116074] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:51:33.610 [DEBUG] [Thread-116074] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:51:33.610 [DEBUG] [Thread-116074] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:51:33.610 [DEBUG] [Thread-116074] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:51:33.632 [INFO] [Thread-116074] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:51:33.632 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:51:33.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:51:34.474 [DEBUG] [Thread-116074] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:51:34.474 [DEBUG] [Thread-116074] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:51:34.521 [DEBUG] [Thread-116074] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:51:34.521 [DEBUG] [Thread-116074] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:51:34.529 [DEBUG] [Thread-116074] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:51:34.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:51:34.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:51:34.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:51:34.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:51:34.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:51:34.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:51:34.560 [DEBUG] [Thread-116074] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:51:43.767 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:51:43.767 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:51:45.652 [DEBUG] [Thread-116076 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:52:00.700 [DEBUG] [Thread-116077 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:52:02.257 [DEBUG] [Thread-116078 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:52:04.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:52:04.583 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:52:04.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:52:05.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 51, 42), 44.4, 4.09, 0.0, 32.41, 25.44, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:52:05.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:51:42
2025-11-03T12:52:05.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:52:05.559 [DEBUG] [Thread-116079] [transport.py] [_log()] starting thread (client mode): 0xedd4610
2025-11-03T12:52:05.559 [DEBUG] [Thread-116079] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:52:05.580 [DEBUG] [Thread-116079] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:52:05.580 [INFO] [Thread-116079] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:52:05.583 [DEBUG] [Thread-116079] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:52:05.584 [DEBUG] [Thread-116079] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:52:05.584 [DEBUG] [Thread-116079] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:52:05.584 [DEBUG] [Thread-116079] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:52:05.584 [DEBUG] [Thread-116079] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:52:05.584 [DEBUG] [Thread-116079] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:52:05.584 [DEBUG] [Thread-116079] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:52:05.584 [DEBUG] [Thread-116079] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:52:05.584 [DEBUG] [Thread-116079] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:52:05.584 [DEBUG] [Thread-116079] [transport.py] [_log()] client lang: <none>
2025-11-03T12:52:05.584 [DEBUG] [Thread-116079] [transport.py] [_log()] server lang: <none>
2025-11-03T12:52:05.584 [DEBUG] [Thread-116079] [transport.py] [_log()] kex follows: False
2025-11-03T12:52:05.584 [DEBUG] [Thread-116079] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:52:05.584 [DEBUG] [Thread-116079] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:52:05.584 [DEBUG] [Thread-116079] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:52:05.584 [DEBUG] [Thread-116079] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:52:05.584 [DEBUG] [Thread-116079] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:52:05.584 [DEBUG] [Thread-116079] [transport.py] [_log()] Compression: none
2025-11-03T12:52:05.584 [DEBUG] [Thread-116079] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:52:05.599 [DEBUG] [Thread-116079] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:52:05.599 [DEBUG] [Thread-116079] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:52:05.599 [DEBUG] [Thread-116079] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:52:05.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:52:05.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:52:05.600 [DEBUG] [Thread-116079] [transport.py] [_log()] userauth is OK
2025-11-03T12:52:05.600 [DEBUG] [Thread-116079] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:52:05.600 [DEBUG] [Thread-116079] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:52:05.600 [DEBUG] [Thread-116079] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:52:05.600 [DEBUG] [Thread-116079] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:52:05.626 [INFO] [Thread-116079] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:52:05.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:52:06.243 [DEBUG] [Thread-116079] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:52:06.243 [DEBUG] [Thread-116079] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:52:06.244 [DEBUG] [Thread-116079] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:52:06.284 [DEBUG] [Thread-116079] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:52:06.284 [DEBUG] [Thread-116079] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:52:06.289 [DEBUG] [Thread-116079] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:52:06.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:52:06.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:52:06.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:52:06.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:52:06.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:52:06.313 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:52:06.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:52:06.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:52:06.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:52:06.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.452187 -999.00  +25.60  20.30      9   -9.40 1 1 1 1 1   888    0 35.75 70.61 ----- 20.8 20.3 4.4 32.3 30.1 -29.6 29.4 -28.7 29.4 -28.9 30.1 -28.3
2025-11-03T12:52:06.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:52:06.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:52:06.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.452187
2025-11-03T12:52:06.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:52:06.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:52:06.314 [DEBUG] [Thread-116079] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:52:06.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:52:06.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:52:06.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:52:06.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:51:42', tmtdew=44.4, humidity=4.09, cloud=0.0, wind=32.41, temperature=25.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:51:08.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:52:06.388 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:52:06.400 [DEBUG] [Thread-116082] [transport.py] [_log()] starting thread (client mode): 0x117809d0
2025-11-03T12:52:06.400 [DEBUG] [Thread-116082] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:52:06.415 [DEBUG] [Thread-116082] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:52:06.415 [INFO] [Thread-116082] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:52:06.422 [DEBUG] [Thread-116082] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:52:06.422 [DEBUG] [Thread-116082] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:52:06.422 [DEBUG] [Thread-116082] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:52:06.422 [DEBUG] [Thread-116082] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:52:06.423 [DEBUG] [Thread-116082] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:52:06.423 [DEBUG] [Thread-116082] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:52:06.423 [DEBUG] [Thread-116082] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:52:06.423 [DEBUG] [Thread-116082] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:52:06.423 [DEBUG] [Thread-116082] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:52:06.423 [DEBUG] [Thread-116082] [transport.py] [_log()] client lang: <none>
2025-11-03T12:52:06.423 [DEBUG] [Thread-116082] [transport.py] [_log()] server lang: <none>
2025-11-03T12:52:06.423 [DEBUG] [Thread-116082] [transport.py] [_log()] kex follows: False
2025-11-03T12:52:06.423 [DEBUG] [Thread-116082] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:52:06.423 [DEBUG] [Thread-116082] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:52:06.423 [DEBUG] [Thread-116082] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:52:06.423 [DEBUG] [Thread-116082] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:52:06.423 [DEBUG] [Thread-116082] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:52:06.423 [DEBUG] [Thread-116082] [transport.py] [_log()] Compression: none
2025-11-03T12:52:06.423 [DEBUG] [Thread-116082] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:52:06.480 [DEBUG] [Thread-116082] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:52:06.480 [DEBUG] [Thread-116082] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:52:06.480 [DEBUG] [Thread-116082] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:52:06.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:52:06.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:52:06.542 [DEBUG] [Thread-116082] [transport.py] [_log()] userauth is OK
2025-11-03T12:52:06.542 [DEBUG] [Thread-116082] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:52:06.542 [DEBUG] [Thread-116082] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:52:06.542 [DEBUG] [Thread-116082] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:52:06.542 [DEBUG] [Thread-116082] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:52:06.556 [INFO] [Thread-116082] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:52:06.556 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:52:06.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:52:07.483 [DEBUG] [Thread-116082] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:52:07.483 [DEBUG] [Thread-116082] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:52:07.531 [DEBUG] [Thread-116082] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:52:07.531 [DEBUG] [Thread-116082] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:52:07.539 [DEBUG] [Thread-116082] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:52:07.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:52:07.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:52:07.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:52:07.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:52:07.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:52:07.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:52:07.571 [DEBUG] [Thread-116082] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:52:15.725 [DEBUG] [Thread-116084 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:52:30.768 [DEBUG] [Thread-116085 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:52:37.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:52:37.594 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:52:37.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:52:38.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 52, 14), 44.5, 4.04, 0.0, 28.88, 25.3, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:52:38.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:52:14
2025-11-03T12:52:38.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:52:38.555 [DEBUG] [Thread-116086] [transport.py] [_log()] starting thread (client mode): 0xedd6da0
2025-11-03T12:52:38.555 [DEBUG] [Thread-116086] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:52:38.566 [DEBUG] [Thread-116086] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:52:38.566 [INFO] [Thread-116086] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:52:38.570 [DEBUG] [Thread-116086] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:52:38.570 [DEBUG] [Thread-116086] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:52:38.570 [DEBUG] [Thread-116086] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:52:38.570 [DEBUG] [Thread-116086] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:52:38.570 [DEBUG] [Thread-116086] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:52:38.570 [DEBUG] [Thread-116086] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:52:38.570 [DEBUG] [Thread-116086] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:52:38.570 [DEBUG] [Thread-116086] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:52:38.570 [DEBUG] [Thread-116086] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:52:38.570 [DEBUG] [Thread-116086] [transport.py] [_log()] client lang: <none>
2025-11-03T12:52:38.570 [DEBUG] [Thread-116086] [transport.py] [_log()] server lang: <none>
2025-11-03T12:52:38.570 [DEBUG] [Thread-116086] [transport.py] [_log()] kex follows: False
2025-11-03T12:52:38.570 [DEBUG] [Thread-116086] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:52:38.570 [DEBUG] [Thread-116086] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:52:38.570 [DEBUG] [Thread-116086] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:52:38.571 [DEBUG] [Thread-116086] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:52:38.571 [DEBUG] [Thread-116086] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:52:38.571 [DEBUG] [Thread-116086] [transport.py] [_log()] Compression: none
2025-11-03T12:52:38.571 [DEBUG] [Thread-116086] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:52:38.583 [DEBUG] [Thread-116086] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:52:38.583 [DEBUG] [Thread-116086] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:52:38.584 [DEBUG] [Thread-116086] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:52:38.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:52:38.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:52:38.585 [DEBUG] [Thread-116086] [transport.py] [_log()] userauth is OK
2025-11-03T12:52:38.585 [DEBUG] [Thread-116086] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:52:38.585 [DEBUG] [Thread-116086] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:52:38.585 [DEBUG] [Thread-116086] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:52:38.586 [DEBUG] [Thread-116086] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:52:38.599 [INFO] [Thread-116086] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:52:38.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:52:39.236 [DEBUG] [Thread-116086] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:52:39.236 [DEBUG] [Thread-116086] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:52:39.237 [DEBUG] [Thread-116086] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:52:39.277 [DEBUG] [Thread-116086] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:52:39.277 [DEBUG] [Thread-116086] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:52:39.281 [DEBUG] [Thread-116086] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:52:39.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:52:39.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:52:39.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:52:39.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:52:39.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:52:39.303 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:52:39.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:52:39.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:52:39.312 [DEBUG] [Thread-116086] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:52:39.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:52:39.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.452534 -999.00  +25.60  25.04      9   -9.40 1 1 1 1 1   888    0 36.14 67.91 ----- 28.5 25.0 30.8 34.8 30.2 -29.4 29.4 -28.9 29.4 -28.3 30.1 -31.4
2025-11-03T12:52:39.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:52:39.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:52:39.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.452534
2025-11-03T12:52:39.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:52:39.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:52:39.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:52:39.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:52:39.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:52:39.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:52:14', tmtdew=44.5, humidity=4.04, cloud=0.0, wind=28.88, temperature=25.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:51:38.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:52:39.389 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:52:39.401 [DEBUG] [Thread-116089] [transport.py] [_log()] starting thread (client mode): 0x117bcca0
2025-11-03T12:52:39.401 [DEBUG] [Thread-116089] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:52:39.417 [DEBUG] [Thread-116089] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:52:39.417 [INFO] [Thread-116089] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:52:39.427 [DEBUG] [Thread-116089] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:52:39.427 [DEBUG] [Thread-116089] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:52:39.427 [DEBUG] [Thread-116089] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:52:39.427 [DEBUG] [Thread-116089] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:52:39.428 [DEBUG] [Thread-116089] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:52:39.428 [DEBUG] [Thread-116089] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:52:39.428 [DEBUG] [Thread-116089] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:52:39.428 [DEBUG] [Thread-116089] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:52:39.428 [DEBUG] [Thread-116089] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:52:39.428 [DEBUG] [Thread-116089] [transport.py] [_log()] client lang: <none>
2025-11-03T12:52:39.428 [DEBUG] [Thread-116089] [transport.py] [_log()] server lang: <none>
2025-11-03T12:52:39.428 [DEBUG] [Thread-116089] [transport.py] [_log()] kex follows: False
2025-11-03T12:52:39.428 [DEBUG] [Thread-116089] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:52:39.428 [DEBUG] [Thread-116089] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:52:39.428 [DEBUG] [Thread-116089] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:52:39.428 [DEBUG] [Thread-116089] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:52:39.428 [DEBUG] [Thread-116089] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:52:39.428 [DEBUG] [Thread-116089] [transport.py] [_log()] Compression: none
2025-11-03T12:52:39.428 [DEBUG] [Thread-116089] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:52:39.488 [DEBUG] [Thread-116089] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:52:39.489 [DEBUG] [Thread-116089] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:52:39.490 [DEBUG] [Thread-116089] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:52:39.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:52:39.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:52:39.549 [DEBUG] [Thread-116089] [transport.py] [_log()] userauth is OK
2025-11-03T12:52:39.549 [DEBUG] [Thread-116089] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:52:39.550 [DEBUG] [Thread-116089] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:52:39.550 [DEBUG] [Thread-116089] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:52:39.550 [DEBUG] [Thread-116089] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:52:39.570 [INFO] [Thread-116089] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:52:39.571 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:52:39.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:52:40.405 [DEBUG] [Thread-116089] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:52:40.406 [DEBUG] [Thread-116089] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:52:40.454 [DEBUG] [Thread-116089] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:52:40.454 [DEBUG] [Thread-116089] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:52:40.465 [DEBUG] [Thread-116089] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:52:40.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:52:40.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:52:40.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:52:40.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:52:40.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:52:40.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:52:40.506 [DEBUG] [Thread-116089] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:52:43.908 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:52:43.909 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:52:45.801 [DEBUG] [Thread-116091 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:53:00.840 [DEBUG] [Thread-116092 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:53:02.318 [DEBUG] [Thread-116093 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:53:10.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:53:10.512 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:53:10.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:53:11.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 52, 47), 43.73, 4.2, 0.0, 30.84, 24.86, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:53:11.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:52:47
2025-11-03T12:53:11.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:53:11.472 [DEBUG] [Thread-116094] [transport.py] [_log()] starting thread (client mode): 0x117bf940
2025-11-03T12:53:11.472 [DEBUG] [Thread-116094] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:53:11.494 [DEBUG] [Thread-116094] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:53:11.494 [INFO] [Thread-116094] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:53:11.497 [DEBUG] [Thread-116094] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:53:11.498 [DEBUG] [Thread-116094] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:53:11.498 [DEBUG] [Thread-116094] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:53:11.498 [DEBUG] [Thread-116094] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:53:11.498 [DEBUG] [Thread-116094] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:53:11.498 [DEBUG] [Thread-116094] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:53:11.498 [DEBUG] [Thread-116094] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:53:11.498 [DEBUG] [Thread-116094] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:53:11.498 [DEBUG] [Thread-116094] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:53:11.498 [DEBUG] [Thread-116094] [transport.py] [_log()] client lang: <none>
2025-11-03T12:53:11.498 [DEBUG] [Thread-116094] [transport.py] [_log()] server lang: <none>
2025-11-03T12:53:11.498 [DEBUG] [Thread-116094] [transport.py] [_log()] kex follows: False
2025-11-03T12:53:11.498 [DEBUG] [Thread-116094] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:53:11.499 [DEBUG] [Thread-116094] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:53:11.499 [DEBUG] [Thread-116094] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:53:11.499 [DEBUG] [Thread-116094] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:53:11.499 [DEBUG] [Thread-116094] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:53:11.499 [DEBUG] [Thread-116094] [transport.py] [_log()] Compression: none
2025-11-03T12:53:11.499 [DEBUG] [Thread-116094] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:53:11.528 [DEBUG] [Thread-116094] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:53:11.528 [DEBUG] [Thread-116094] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:53:11.529 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:53:11.530 [DEBUG] [Thread-116094] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:53:11.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:53:11.532 [DEBUG] [Thread-116094] [transport.py] [_log()] userauth is OK
2025-11-03T12:53:11.532 [DEBUG] [Thread-116094] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:53:11.533 [DEBUG] [Thread-116094] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:53:11.533 [DEBUG] [Thread-116094] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:53:11.533 [DEBUG] [Thread-116094] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:53:11.559 [INFO] [Thread-116094] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:53:11.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:53:12.188 [DEBUG] [Thread-116094] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:53:12.189 [DEBUG] [Thread-116094] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:53:12.189 [DEBUG] [Thread-116094] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:53:12.230 [DEBUG] [Thread-116094] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:53:12.230 [DEBUG] [Thread-116094] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:53:12.234 [DEBUG] [Thread-116094] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:53:12.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:53:12.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:53:12.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:53:12.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:53:12.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:53:12.267 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:53:12.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:53:12.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:53:12.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:53:12.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.453229 -999.00  +25.10  24.91      9   -9.70 1 1 1 1 1   888    0 36.02 57.33 ----- 26.5 24.9 17.4 31.5 30.2 -29.3 29.4 -29.1 29.4 -28.5 30.0 -28.4
2025-11-03T12:53:12.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:53:12.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:53:12.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.453229
2025-11-03T12:53:12.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:53:12.270 [DEBUG] [Thread-116094] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:53:12.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:53:12.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:53:12.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:53:12.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:53:12.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:52:47', tmtdew=43.73, humidity=4.2, cloud=0.0, wind=30.84, temperature=24.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:52:38.986', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:53:12.357 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:53:12.371 [DEBUG] [Thread-116097] [transport.py] [_log()] starting thread (client mode): 0xedd7d30
2025-11-03T12:53:12.371 [DEBUG] [Thread-116097] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:53:12.389 [DEBUG] [Thread-116097] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:53:12.390 [INFO] [Thread-116097] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:53:12.400 [DEBUG] [Thread-116097] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:53:12.400 [DEBUG] [Thread-116097] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:53:12.400 [DEBUG] [Thread-116097] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:53:12.400 [DEBUG] [Thread-116097] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:53:12.400 [DEBUG] [Thread-116097] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:53:12.400 [DEBUG] [Thread-116097] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:53:12.400 [DEBUG] [Thread-116097] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:53:12.400 [DEBUG] [Thread-116097] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:53:12.401 [DEBUG] [Thread-116097] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:53:12.401 [DEBUG] [Thread-116097] [transport.py] [_log()] client lang: <none>
2025-11-03T12:53:12.401 [DEBUG] [Thread-116097] [transport.py] [_log()] server lang: <none>
2025-11-03T12:53:12.401 [DEBUG] [Thread-116097] [transport.py] [_log()] kex follows: False
2025-11-03T12:53:12.401 [DEBUG] [Thread-116097] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:53:12.401 [DEBUG] [Thread-116097] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:53:12.401 [DEBUG] [Thread-116097] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:53:12.401 [DEBUG] [Thread-116097] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:53:12.401 [DEBUG] [Thread-116097] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:53:12.401 [DEBUG] [Thread-116097] [transport.py] [_log()] Compression: none
2025-11-03T12:53:12.401 [DEBUG] [Thread-116097] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:53:12.455 [DEBUG] [Thread-116097] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:53:12.456 [DEBUG] [Thread-116097] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:53:12.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:53:12.457 [DEBUG] [Thread-116097] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:53:12.458 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:53:12.513 [DEBUG] [Thread-116097] [transport.py] [_log()] userauth is OK
2025-11-03T12:53:12.514 [DEBUG] [Thread-116097] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:53:12.514 [DEBUG] [Thread-116097] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:53:12.514 [DEBUG] [Thread-116097] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:53:12.514 [DEBUG] [Thread-116097] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:53:12.533 [INFO] [Thread-116097] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:53:12.533 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:53:12.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:53:13.394 [DEBUG] [Thread-116097] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:53:13.394 [DEBUG] [Thread-116097] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:53:13.444 [DEBUG] [Thread-116097] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:53:13.445 [DEBUG] [Thread-116097] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:53:13.456 [DEBUG] [Thread-116097] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:53:13.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:53:13.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:53:13.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:53:13.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:53:13.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:53:13.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:53:13.497 [DEBUG] [Thread-116097] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:53:15.877 [DEBUG] [Thread-116099 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:53:30.924 [DEBUG] [Thread-116100 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:53:43.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:53:43.516 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:53:43.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:53:44.050 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:53:44.050 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:53:44.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 53, 19), 43.61, 4.25, 0.0, 25.6, 24.87, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:53:44.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:53:19
2025-11-03T12:53:44.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:53:44.460 [DEBUG] [Thread-116101] [transport.py] [_log()] starting thread (client mode): 0x81bb010
2025-11-03T12:53:44.460 [DEBUG] [Thread-116101] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:53:44.479 [DEBUG] [Thread-116101] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:53:44.479 [INFO] [Thread-116101] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:53:44.481 [DEBUG] [Thread-116101] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:53:44.481 [DEBUG] [Thread-116101] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:53:44.481 [DEBUG] [Thread-116101] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:53:44.481 [DEBUG] [Thread-116101] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:53:44.481 [DEBUG] [Thread-116101] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:53:44.481 [DEBUG] [Thread-116101] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:53:44.481 [DEBUG] [Thread-116101] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:53:44.481 [DEBUG] [Thread-116101] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:53:44.481 [DEBUG] [Thread-116101] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:53:44.481 [DEBUG] [Thread-116101] [transport.py] [_log()] client lang: <none>
2025-11-03T12:53:44.481 [DEBUG] [Thread-116101] [transport.py] [_log()] server lang: <none>
2025-11-03T12:53:44.481 [DEBUG] [Thread-116101] [transport.py] [_log()] kex follows: False
2025-11-03T12:53:44.481 [DEBUG] [Thread-116101] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:53:44.481 [DEBUG] [Thread-116101] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:53:44.481 [DEBUG] [Thread-116101] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:53:44.481 [DEBUG] [Thread-116101] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:53:44.481 [DEBUG] [Thread-116101] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:53:44.481 [DEBUG] [Thread-116101] [transport.py] [_log()] Compression: none
2025-11-03T12:53:44.481 [DEBUG] [Thread-116101] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:53:44.489 [DEBUG] [Thread-116101] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:53:44.490 [DEBUG] [Thread-116101] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:53:44.490 [DEBUG] [Thread-116101] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:53:44.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:53:44.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:53:44.492 [DEBUG] [Thread-116101] [transport.py] [_log()] userauth is OK
2025-11-03T12:53:44.492 [DEBUG] [Thread-116101] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:53:44.492 [DEBUG] [Thread-116101] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:53:44.492 [DEBUG] [Thread-116101] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:53:44.492 [DEBUG] [Thread-116101] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:53:44.515 [INFO] [Thread-116101] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:53:44.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:53:45.152 [DEBUG] [Thread-116101] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:53:45.152 [DEBUG] [Thread-116101] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:53:45.152 [DEBUG] [Thread-116101] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:53:45.193 [DEBUG] [Thread-116101] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:53:45.193 [DEBUG] [Thread-116101] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:53:45.196 [DEBUG] [Thread-116101] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:53:45.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:53:45.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:53:45.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:53:45.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:53:45.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:53:45.218 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:53:45.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:53:45.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:53:45.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:53:45.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.453576 -999.00  +25.30  16.49      9   -9.50 1 1 1 1 1   888    0 35.66 50.76 ----- 10.8 16.5 9.1 29.6 30.1 -28.9 29.4 -28.7 29.4 -28.5 30.1 -27.5
2025-11-03T12:53:45.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:53:45.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:53:45.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.453576
2025-11-03T12:53:45.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:53:45.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:53:45.220 [DEBUG] [Thread-116101] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:53:45.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:53:45.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:53:45.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:53:45.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:53:19', tmtdew=43.61, humidity=4.25, cloud=0.0, wind=25.6, temperature=24.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:53:08.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:53:45.304 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:53:45.319 [DEBUG] [Thread-116104] [transport.py] [_log()] starting thread (client mode): 0xedd4f70
2025-11-03T12:53:45.319 [DEBUG] [Thread-116104] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:53:45.338 [DEBUG] [Thread-116104] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:53:45.338 [INFO] [Thread-116104] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:53:45.345 [DEBUG] [Thread-116104] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:53:45.345 [DEBUG] [Thread-116104] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:53:45.346 [DEBUG] [Thread-116104] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:53:45.346 [DEBUG] [Thread-116104] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:53:45.346 [DEBUG] [Thread-116104] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:53:45.346 [DEBUG] [Thread-116104] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:53:45.346 [DEBUG] [Thread-116104] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:53:45.346 [DEBUG] [Thread-116104] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:53:45.346 [DEBUG] [Thread-116104] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:53:45.346 [DEBUG] [Thread-116104] [transport.py] [_log()] client lang: <none>
2025-11-03T12:53:45.346 [DEBUG] [Thread-116104] [transport.py] [_log()] server lang: <none>
2025-11-03T12:53:45.346 [DEBUG] [Thread-116104] [transport.py] [_log()] kex follows: False
2025-11-03T12:53:45.346 [DEBUG] [Thread-116104] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:53:45.346 [DEBUG] [Thread-116104] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:53:45.346 [DEBUG] [Thread-116104] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:53:45.346 [DEBUG] [Thread-116104] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:53:45.346 [DEBUG] [Thread-116104] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:53:45.347 [DEBUG] [Thread-116104] [transport.py] [_log()] Compression: none
2025-11-03T12:53:45.347 [DEBUG] [Thread-116104] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:53:45.403 [DEBUG] [Thread-116104] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:53:45.403 [DEBUG] [Thread-116104] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:53:45.404 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:53:45.404 [DEBUG] [Thread-116104] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:53:45.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:53:45.459 [DEBUG] [Thread-116104] [transport.py] [_log()] userauth is OK
2025-11-03T12:53:45.459 [DEBUG] [Thread-116104] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:53:45.459 [DEBUG] [Thread-116104] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:53:45.460 [DEBUG] [Thread-116104] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:53:45.460 [DEBUG] [Thread-116104] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:53:45.478 [INFO] [Thread-116104] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:53:45.478 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:53:45.478 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:53:45.957 [DEBUG] [Thread-116106 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:53:46.324 [DEBUG] [Thread-116104] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:53:46.324 [DEBUG] [Thread-116104] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:53:46.373 [DEBUG] [Thread-116104] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:53:46.373 [DEBUG] [Thread-116104] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:53:46.382 [DEBUG] [Thread-116104] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:53:46.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:53:46.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:53:46.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:53:46.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:53:46.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:53:46.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:53:46.419 [DEBUG] [Thread-116104] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:54:00.995 [DEBUG] [Thread-116107 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:54:02.367 [DEBUG] [Thread-116108 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:54:16.027 [DEBUG] [Thread-116109 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:54:16.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:54:16.413 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:54:16.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:54:17.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 53, 52), 43.45, 4.25, 0.0, 24.26, 24.74, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:54:17.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:53:52
2025-11-03T12:54:17.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:54:17.340 [DEBUG] [Thread-116110] [transport.py] [_log()] starting thread (client mode): 0x117bdc00
2025-11-03T12:54:17.340 [DEBUG] [Thread-116110] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:54:17.360 [DEBUG] [Thread-116110] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:54:17.360 [INFO] [Thread-116110] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:54:17.363 [DEBUG] [Thread-116110] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:54:17.363 [DEBUG] [Thread-116110] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:54:17.363 [DEBUG] [Thread-116110] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:54:17.363 [DEBUG] [Thread-116110] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:54:17.363 [DEBUG] [Thread-116110] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:54:17.363 [DEBUG] [Thread-116110] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:54:17.363 [DEBUG] [Thread-116110] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:54:17.363 [DEBUG] [Thread-116110] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:54:17.363 [DEBUG] [Thread-116110] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:54:17.363 [DEBUG] [Thread-116110] [transport.py] [_log()] client lang: <none>
2025-11-03T12:54:17.363 [DEBUG] [Thread-116110] [transport.py] [_log()] server lang: <none>
2025-11-03T12:54:17.363 [DEBUG] [Thread-116110] [transport.py] [_log()] kex follows: False
2025-11-03T12:54:17.363 [DEBUG] [Thread-116110] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:54:17.363 [DEBUG] [Thread-116110] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:54:17.363 [DEBUG] [Thread-116110] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:54:17.363 [DEBUG] [Thread-116110] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:54:17.363 [DEBUG] [Thread-116110] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:54:17.363 [DEBUG] [Thread-116110] [transport.py] [_log()] Compression: none
2025-11-03T12:54:17.363 [DEBUG] [Thread-116110] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:54:17.380 [DEBUG] [Thread-116110] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:54:17.381 [DEBUG] [Thread-116110] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:54:17.381 [DEBUG] [Thread-116110] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:54:17.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:54:17.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:54:17.383 [DEBUG] [Thread-116110] [transport.py] [_log()] userauth is OK
2025-11-03T12:54:17.384 [DEBUG] [Thread-116110] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:54:17.384 [DEBUG] [Thread-116110] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:54:17.384 [DEBUG] [Thread-116110] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:54:17.384 [DEBUG] [Thread-116110] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:54:17.406 [INFO] [Thread-116110] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:54:17.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:54:18.042 [DEBUG] [Thread-116110] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:54:18.042 [DEBUG] [Thread-116110] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:54:18.043 [DEBUG] [Thread-116110] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:54:18.082 [DEBUG] [Thread-116110] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:54:18.082 [DEBUG] [Thread-116110] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:54:18.086 [DEBUG] [Thread-116110] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:54:18.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:54:18.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:54:18.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:54:18.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:54:18.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:54:18.109 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:54:18.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:54:18.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:54:18.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:54:18.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.453923 -999.00  +25.00  16.13      9  -10.00 1 1 1 1 1   888    0 36.05 51.99 ----- 21.5 16.1 352.9 25.9 30.2 -30.5 29.3 -29.8 29.5 -28.9 29.6 -31.0
2025-11-03T12:54:18.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:54:18.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:54:18.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.453923
2025-11-03T12:54:18.118 [DEBUG] [Thread-116110] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:54:18.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:54:18.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:54:18.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:54:18.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:54:18.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:54:18.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:53:52', tmtdew=43.45, humidity=4.25, cloud=0.0, wind=24.26, temperature=24.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:53:38.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:54:18.203 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:54:18.216 [DEBUG] [Thread-116113] [transport.py] [_log()] starting thread (client mode): 0x117be950
2025-11-03T12:54:18.216 [DEBUG] [Thread-116113] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:54:18.231 [DEBUG] [Thread-116113] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:54:18.231 [INFO] [Thread-116113] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:54:18.239 [DEBUG] [Thread-116113] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:54:18.240 [DEBUG] [Thread-116113] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:54:18.240 [DEBUG] [Thread-116113] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:54:18.240 [DEBUG] [Thread-116113] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:54:18.240 [DEBUG] [Thread-116113] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:54:18.240 [DEBUG] [Thread-116113] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:54:18.240 [DEBUG] [Thread-116113] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:54:18.240 [DEBUG] [Thread-116113] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:54:18.241 [DEBUG] [Thread-116113] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:54:18.241 [DEBUG] [Thread-116113] [transport.py] [_log()] client lang: <none>
2025-11-03T12:54:18.241 [DEBUG] [Thread-116113] [transport.py] [_log()] server lang: <none>
2025-11-03T12:54:18.241 [DEBUG] [Thread-116113] [transport.py] [_log()] kex follows: False
2025-11-03T12:54:18.241 [DEBUG] [Thread-116113] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:54:18.241 [DEBUG] [Thread-116113] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:54:18.241 [DEBUG] [Thread-116113] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:54:18.241 [DEBUG] [Thread-116113] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:54:18.241 [DEBUG] [Thread-116113] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:54:18.241 [DEBUG] [Thread-116113] [transport.py] [_log()] Compression: none
2025-11-03T12:54:18.241 [DEBUG] [Thread-116113] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:54:18.300 [DEBUG] [Thread-116113] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:54:18.301 [DEBUG] [Thread-116113] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:54:18.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:54:18.302 [DEBUG] [Thread-116113] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:54:18.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:54:18.355 [DEBUG] [Thread-116113] [transport.py] [_log()] userauth is OK
2025-11-03T12:54:18.356 [DEBUG] [Thread-116113] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:54:18.356 [DEBUG] [Thread-116113] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:54:18.356 [DEBUG] [Thread-116113] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:54:18.356 [DEBUG] [Thread-116113] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:54:18.375 [INFO] [Thread-116113] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:54:18.375 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:54:18.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:54:19.212 [DEBUG] [Thread-116113] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:54:19.212 [DEBUG] [Thread-116113] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:54:19.259 [DEBUG] [Thread-116113] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:54:19.259 [DEBUG] [Thread-116113] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:54:19.268 [DEBUG] [Thread-116113] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:54:19.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:54:19.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:54:19.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:54:19.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:54:19.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:54:19.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:54:19.300 [DEBUG] [Thread-116113] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:54:31.062 [DEBUG] [Thread-116115 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:54:44.190 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:54:44.191 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:54:46.120 [DEBUG] [Thread-116116 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:54:49.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:54:49.323 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:54:49.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:54:50.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 54, 24), 43.2, 4.38, 0.0, 31.78, 25.05, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:54:50.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:54:24
2025-11-03T12:54:50.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:54:50.389 [DEBUG] [Thread-116117] [transport.py] [_log()] starting thread (client mode): 0xedd6a70
2025-11-03T12:54:50.389 [DEBUG] [Thread-116117] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:54:50.399 [DEBUG] [Thread-116117] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:54:50.399 [INFO] [Thread-116117] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:54:50.402 [DEBUG] [Thread-116117] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:54:50.402 [DEBUG] [Thread-116117] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:54:50.402 [DEBUG] [Thread-116117] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:54:50.402 [DEBUG] [Thread-116117] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:54:50.402 [DEBUG] [Thread-116117] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:54:50.402 [DEBUG] [Thread-116117] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:54:50.402 [DEBUG] [Thread-116117] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:54:50.402 [DEBUG] [Thread-116117] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:54:50.403 [DEBUG] [Thread-116117] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:54:50.403 [DEBUG] [Thread-116117] [transport.py] [_log()] client lang: <none>
2025-11-03T12:54:50.403 [DEBUG] [Thread-116117] [transport.py] [_log()] server lang: <none>
2025-11-03T12:54:50.403 [DEBUG] [Thread-116117] [transport.py] [_log()] kex follows: False
2025-11-03T12:54:50.403 [DEBUG] [Thread-116117] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:54:50.403 [DEBUG] [Thread-116117] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:54:50.403 [DEBUG] [Thread-116117] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:54:50.403 [DEBUG] [Thread-116117] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:54:50.403 [DEBUG] [Thread-116117] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:54:50.403 [DEBUG] [Thread-116117] [transport.py] [_log()] Compression: none
2025-11-03T12:54:50.403 [DEBUG] [Thread-116117] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:54:50.422 [DEBUG] [Thread-116117] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:54:50.423 [DEBUG] [Thread-116117] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:54:50.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:54:50.424 [DEBUG] [Thread-116117] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:54:50.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:54:50.465 [DEBUG] [Thread-116117] [transport.py] [_log()] userauth is OK
2025-11-03T12:54:50.465 [DEBUG] [Thread-116117] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:54:50.465 [DEBUG] [Thread-116117] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:54:50.466 [DEBUG] [Thread-116117] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:54:50.466 [DEBUG] [Thread-116117] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:54:50.485 [INFO] [Thread-116117] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:54:50.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:54:51.138 [DEBUG] [Thread-116117] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:54:51.138 [DEBUG] [Thread-116117] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:54:51.139 [DEBUG] [Thread-116117] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:54:51.180 [DEBUG] [Thread-116117] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:54:51.180 [DEBUG] [Thread-116117] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:54:51.184 [DEBUG] [Thread-116117] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:54:51.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:54:51.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:54:51.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:54:51.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:54:51.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:54:51.209 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:54:51.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:54:51.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:54:51.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:54:51.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.454271 -999.00  +24.90  18.46      9   -9.80 1 1 1 1 1   888    0 36.01 48.23 ----- 19.2 18.5 10.9 24.8 30.1 -29.2 29.3 -28.5 29.4 -28.5 30.0 -27.7
2025-11-03T12:54:51.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:54:51.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:54:51.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.454271
2025-11-03T12:54:51.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:54:51.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:54:51.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:54:51.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:54:51.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:54:51.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:54:24', tmtdew=43.2, humidity=4.38, cloud=0.0, wind=31.78, temperature=25.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:54:09.014', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:54:51.212 [DEBUG] [Thread-116117] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:54:51.295 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:54:51.306 [DEBUG] [Thread-116120] [transport.py] [_log()] starting thread (client mode): 0x11781120
2025-11-03T12:54:51.306 [DEBUG] [Thread-116120] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:54:51.321 [DEBUG] [Thread-116120] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:54:51.321 [INFO] [Thread-116120] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:54:51.329 [DEBUG] [Thread-116120] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:54:51.329 [DEBUG] [Thread-116120] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:54:51.329 [DEBUG] [Thread-116120] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:54:51.329 [DEBUG] [Thread-116120] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:54:51.329 [DEBUG] [Thread-116120] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:54:51.329 [DEBUG] [Thread-116120] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:54:51.329 [DEBUG] [Thread-116120] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:54:51.329 [DEBUG] [Thread-116120] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:54:51.329 [DEBUG] [Thread-116120] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:54:51.329 [DEBUG] [Thread-116120] [transport.py] [_log()] client lang: <none>
2025-11-03T12:54:51.329 [DEBUG] [Thread-116120] [transport.py] [_log()] server lang: <none>
2025-11-03T12:54:51.329 [DEBUG] [Thread-116120] [transport.py] [_log()] kex follows: False
2025-11-03T12:54:51.329 [DEBUG] [Thread-116120] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:54:51.329 [DEBUG] [Thread-116120] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:54:51.329 [DEBUG] [Thread-116120] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:54:51.329 [DEBUG] [Thread-116120] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:54:51.329 [DEBUG] [Thread-116120] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:54:51.329 [DEBUG] [Thread-116120] [transport.py] [_log()] Compression: none
2025-11-03T12:54:51.329 [DEBUG] [Thread-116120] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:54:51.388 [DEBUG] [Thread-116120] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:54:51.389 [DEBUG] [Thread-116120] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:54:51.390 [DEBUG] [Thread-116120] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:54:51.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:54:51.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:54:51.448 [DEBUG] [Thread-116120] [transport.py] [_log()] userauth is OK
2025-11-03T12:54:51.448 [DEBUG] [Thread-116120] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:54:51.448 [DEBUG] [Thread-116120] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:54:51.449 [DEBUG] [Thread-116120] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:54:51.449 [DEBUG] [Thread-116120] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:54:51.468 [INFO] [Thread-116120] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:54:51.469 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:54:51.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:54:52.317 [DEBUG] [Thread-116120] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:54:52.317 [DEBUG] [Thread-116120] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:54:52.366 [DEBUG] [Thread-116120] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:54:52.366 [DEBUG] [Thread-116120] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:54:52.376 [DEBUG] [Thread-116120] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:54:52.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:54:52.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:54:52.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:54:52.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:54:52.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:54:52.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:54:52.422 [DEBUG] [Thread-116120] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:55:01.154 [DEBUG] [Thread-116122 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:55:02.441 [DEBUG] [Thread-116123 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:55:16.206 [DEBUG] [Thread-116124 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:55:22.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:55:22.442 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:55:22.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:55:23.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 54, 56), 43.58, 4.25, 0.0, 28.34, 25.27, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:55:23.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:54:56
2025-11-03T12:55:23.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:55:23.505 [DEBUG] [Thread-116125] [transport.py] [_log()] starting thread (client mode): 0x81bbf70
2025-11-03T12:55:23.506 [DEBUG] [Thread-116125] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:55:23.517 [DEBUG] [Thread-116125] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:55:23.517 [INFO] [Thread-116125] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:55:23.520 [DEBUG] [Thread-116125] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:55:23.520 [DEBUG] [Thread-116125] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:55:23.520 [DEBUG] [Thread-116125] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:55:23.520 [DEBUG] [Thread-116125] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:55:23.520 [DEBUG] [Thread-116125] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:55:23.520 [DEBUG] [Thread-116125] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:55:23.520 [DEBUG] [Thread-116125] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:55:23.520 [DEBUG] [Thread-116125] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:55:23.520 [DEBUG] [Thread-116125] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:55:23.520 [DEBUG] [Thread-116125] [transport.py] [_log()] client lang: <none>
2025-11-03T12:55:23.520 [DEBUG] [Thread-116125] [transport.py] [_log()] server lang: <none>
2025-11-03T12:55:23.520 [DEBUG] [Thread-116125] [transport.py] [_log()] kex follows: False
2025-11-03T12:55:23.520 [DEBUG] [Thread-116125] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:55:23.520 [DEBUG] [Thread-116125] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:55:23.520 [DEBUG] [Thread-116125] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:55:23.521 [DEBUG] [Thread-116125] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:55:23.521 [DEBUG] [Thread-116125] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:55:23.521 [DEBUG] [Thread-116125] [transport.py] [_log()] Compression: none
2025-11-03T12:55:23.521 [DEBUG] [Thread-116125] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:55:23.534 [DEBUG] [Thread-116125] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:55:23.535 [DEBUG] [Thread-116125] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:55:23.535 [DEBUG] [Thread-116125] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:55:23.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:55:23.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:55:23.536 [DEBUG] [Thread-116125] [transport.py] [_log()] userauth is OK
2025-11-03T12:55:23.536 [DEBUG] [Thread-116125] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:55:23.536 [DEBUG] [Thread-116125] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:55:23.536 [DEBUG] [Thread-116125] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:55:23.536 [DEBUG] [Thread-116125] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:55:23.551 [INFO] [Thread-116125] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:55:23.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:55:24.180 [DEBUG] [Thread-116125] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:55:24.180 [DEBUG] [Thread-116125] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:55:24.180 [DEBUG] [Thread-116125] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:55:24.222 [DEBUG] [Thread-116125] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:55:24.222 [DEBUG] [Thread-116125] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:55:24.224 [DEBUG] [Thread-116125] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:55:24.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:55:24.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:55:24.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:55:24.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:55:24.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:55:24.241 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:55:24.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:55:24.241 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:55:24.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:55:24.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.454618 -999.00  +25.30  28.09      9   -9.60 1 1 1 1 1   888    0 35.75 43.19 ----- 25.1 28.1 348.9 33.9 30.2 -28.8 29.4 -28.1 29.4 -28.7 29.9 -30.4
2025-11-03T12:55:24.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:55:24.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:55:24.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.454618
2025-11-03T12:55:24.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:55:24.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:55:24.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:55:24.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:55:24.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:55:24.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:54:56', tmtdew=43.58, humidity=4.25, cloud=0.0, wind=28.34, temperature=25.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:54:38.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:55:24.243 [DEBUG] [Thread-116125] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:55:24.317 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:55:24.330 [DEBUG] [Thread-116128] [transport.py] [_log()] starting thread (client mode): 0x81b88b0
2025-11-03T12:55:24.330 [DEBUG] [Thread-116128] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:55:24.345 [DEBUG] [Thread-116128] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:55:24.345 [INFO] [Thread-116128] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:55:24.353 [DEBUG] [Thread-116128] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:55:24.353 [DEBUG] [Thread-116128] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:55:24.353 [DEBUG] [Thread-116128] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:55:24.353 [DEBUG] [Thread-116128] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:55:24.353 [DEBUG] [Thread-116128] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:55:24.353 [DEBUG] [Thread-116128] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:55:24.353 [DEBUG] [Thread-116128] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:55:24.353 [DEBUG] [Thread-116128] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:55:24.353 [DEBUG] [Thread-116128] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:55:24.353 [DEBUG] [Thread-116128] [transport.py] [_log()] client lang: <none>
2025-11-03T12:55:24.353 [DEBUG] [Thread-116128] [transport.py] [_log()] server lang: <none>
2025-11-03T12:55:24.353 [DEBUG] [Thread-116128] [transport.py] [_log()] kex follows: False
2025-11-03T12:55:24.353 [DEBUG] [Thread-116128] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:55:24.353 [DEBUG] [Thread-116128] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:55:24.353 [DEBUG] [Thread-116128] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:55:24.353 [DEBUG] [Thread-116128] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:55:24.353 [DEBUG] [Thread-116128] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:55:24.353 [DEBUG] [Thread-116128] [transport.py] [_log()] Compression: none
2025-11-03T12:55:24.353 [DEBUG] [Thread-116128] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:55:24.410 [DEBUG] [Thread-116128] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:55:24.410 [DEBUG] [Thread-116128] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:55:24.411 [DEBUG] [Thread-116128] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:55:24.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:55:24.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:55:24.468 [DEBUG] [Thread-116128] [transport.py] [_log()] userauth is OK
2025-11-03T12:55:24.468 [DEBUG] [Thread-116128] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:55:24.468 [DEBUG] [Thread-116128] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:55:24.468 [DEBUG] [Thread-116128] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:55:24.468 [DEBUG] [Thread-116128] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:55:24.482 [INFO] [Thread-116128] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:55:24.482 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:55:24.482 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:55:25.344 [DEBUG] [Thread-116128] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:55:25.344 [DEBUG] [Thread-116128] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:55:25.396 [DEBUG] [Thread-116128] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:55:25.396 [DEBUG] [Thread-116128] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:55:25.407 [DEBUG] [Thread-116128] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:55:25.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:55:25.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:55:25.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:55:25.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:55:25.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:55:25.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:55:25.440 [DEBUG] [Thread-116128] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:55:31.237 [DEBUG] [Thread-116130 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:55:44.332 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:55:44.333 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:55:46.288 [DEBUG] [Thread-116131 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:55:55.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:55:55.442 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:55:55.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:55:56.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 55, 29), 43.61, 4.25, 0.0, 21.62, 25.4, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:55:56.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:55:29
2025-11-03T12:55:56.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:55:56.476 [DEBUG] [Thread-116132] [transport.py] [_log()] starting thread (client mode): 0x117bf040
2025-11-03T12:55:56.476 [DEBUG] [Thread-116132] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:55:56.481 [DEBUG] [Thread-116132] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:55:56.481 [INFO] [Thread-116132] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:55:56.482 [DEBUG] [Thread-116132] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:55:56.482 [DEBUG] [Thread-116132] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:55:56.482 [DEBUG] [Thread-116132] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:55:56.482 [DEBUG] [Thread-116132] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:55:56.482 [DEBUG] [Thread-116132] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:55:56.482 [DEBUG] [Thread-116132] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:55:56.482 [DEBUG] [Thread-116132] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:55:56.483 [DEBUG] [Thread-116132] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:55:56.483 [DEBUG] [Thread-116132] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:55:56.483 [DEBUG] [Thread-116132] [transport.py] [_log()] client lang: <none>
2025-11-03T12:55:56.483 [DEBUG] [Thread-116132] [transport.py] [_log()] server lang: <none>
2025-11-03T12:55:56.483 [DEBUG] [Thread-116132] [transport.py] [_log()] kex follows: False
2025-11-03T12:55:56.483 [DEBUG] [Thread-116132] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:55:56.483 [DEBUG] [Thread-116132] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:55:56.483 [DEBUG] [Thread-116132] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:55:56.483 [DEBUG] [Thread-116132] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:55:56.483 [DEBUG] [Thread-116132] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:55:56.483 [DEBUG] [Thread-116132] [transport.py] [_log()] Compression: none
2025-11-03T12:55:56.483 [DEBUG] [Thread-116132] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:55:56.491 [DEBUG] [Thread-116132] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:55:56.491 [DEBUG] [Thread-116132] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:55:56.491 [DEBUG] [Thread-116132] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:55:56.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:55:56.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:55:56.492 [DEBUG] [Thread-116132] [transport.py] [_log()] userauth is OK
2025-11-03T12:55:56.492 [DEBUG] [Thread-116132] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:55:56.492 [DEBUG] [Thread-116132] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:55:56.492 [DEBUG] [Thread-116132] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:55:56.493 [DEBUG] [Thread-116132] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:55:56.507 [INFO] [Thread-116132] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:55:56.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:55:57.334 [DEBUG] [Thread-116132] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:55:57.335 [DEBUG] [Thread-116132] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:55:57.335 [DEBUG] [Thread-116132] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:55:57.375 [DEBUG] [Thread-116132] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:55:57.375 [DEBUG] [Thread-116132] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:55:57.378 [DEBUG] [Thread-116132] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:55:57.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:55:57.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:55:57.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:55:57.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:55:57.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:55:57.404 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:55:57.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:55:57.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:55:57.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:55:57.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.454618 -999.00  +25.30  28.09      9   -9.60 1 1 1 1 1   888    0 35.75 43.19 ----- 25.1 28.1 348.9 33.9 30.2 -28.8 29.4 -28.1 29.4 -28.7 29.9 -30.4
2025-11-03T12:55:57.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:55:57.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:55:57.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.454618
2025-11-03T12:55:57.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:55:57.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:55:57.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:55:57.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:55:57.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:55:57.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:55:29', tmtdew=43.61, humidity=4.25, cloud=0.0, wind=21.62, temperature=25.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:54:38.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:55:57.405 [DEBUG] [Thread-116132] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:55:57.476 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:55:57.487 [DEBUG] [Thread-116135] [transport.py] [_log()] starting thread (client mode): 0x81baa10
2025-11-03T12:55:57.487 [DEBUG] [Thread-116135] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:55:57.502 [DEBUG] [Thread-116135] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:55:57.502 [INFO] [Thread-116135] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:55:57.510 [DEBUG] [Thread-116135] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:55:57.510 [DEBUG] [Thread-116135] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:55:57.510 [DEBUG] [Thread-116135] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:55:57.510 [DEBUG] [Thread-116135] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:55:57.510 [DEBUG] [Thread-116135] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:55:57.510 [DEBUG] [Thread-116135] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:55:57.510 [DEBUG] [Thread-116135] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:55:57.510 [DEBUG] [Thread-116135] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:55:57.510 [DEBUG] [Thread-116135] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:55:57.510 [DEBUG] [Thread-116135] [transport.py] [_log()] client lang: <none>
2025-11-03T12:55:57.510 [DEBUG] [Thread-116135] [transport.py] [_log()] server lang: <none>
2025-11-03T12:55:57.510 [DEBUG] [Thread-116135] [transport.py] [_log()] kex follows: False
2025-11-03T12:55:57.510 [DEBUG] [Thread-116135] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:55:57.510 [DEBUG] [Thread-116135] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:55:57.510 [DEBUG] [Thread-116135] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:55:57.510 [DEBUG] [Thread-116135] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:55:57.510 [DEBUG] [Thread-116135] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:55:57.510 [DEBUG] [Thread-116135] [transport.py] [_log()] Compression: none
2025-11-03T12:55:57.510 [DEBUG] [Thread-116135] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:55:57.566 [DEBUG] [Thread-116135] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:55:57.566 [DEBUG] [Thread-116135] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:55:57.566 [DEBUG] [Thread-116135] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:55:57.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:55:57.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:55:57.623 [DEBUG] [Thread-116135] [transport.py] [_log()] userauth is OK
2025-11-03T12:55:57.624 [DEBUG] [Thread-116135] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:55:57.624 [DEBUG] [Thread-116135] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:55:57.624 [DEBUG] [Thread-116135] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:55:57.624 [DEBUG] [Thread-116135] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:55:57.638 [INFO] [Thread-116135] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:55:57.638 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:55:57.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:55:58.492 [DEBUG] [Thread-116135] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:55:58.492 [DEBUG] [Thread-116135] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:55:58.540 [DEBUG] [Thread-116135] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:55:58.540 [DEBUG] [Thread-116135] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:55:58.548 [DEBUG] [Thread-116135] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:55:58.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:55:58.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:55:58.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:55:58.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:55:58.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:55:58.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:55:58.581 [DEBUG] [Thread-116135] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:56:01.315 [DEBUG] [Thread-116137 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:56:02.516 [DEBUG] [Thread-116138 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:56:16.354 [DEBUG] [Thread-116139 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:56:28.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:56:28.604 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:56:28.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:56:29.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 56, 1), 43.81, 4.2, 0.0, 23.54, 25.6, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:56:29.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:56:01
2025-11-03T12:56:29.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:56:29.670 [DEBUG] [Thread-116140] [transport.py] [_log()] starting thread (client mode): 0xed4ffd0
2025-11-03T12:56:29.670 [DEBUG] [Thread-116140] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:56:29.691 [DEBUG] [Thread-116140] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:56:29.691 [INFO] [Thread-116140] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:56:29.700 [DEBUG] [Thread-116140] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:56:29.700 [DEBUG] [Thread-116140] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:56:29.701 [DEBUG] [Thread-116140] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:56:29.701 [DEBUG] [Thread-116140] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:56:29.701 [DEBUG] [Thread-116140] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:56:29.701 [DEBUG] [Thread-116140] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:56:29.701 [DEBUG] [Thread-116140] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:56:29.701 [DEBUG] [Thread-116140] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:56:29.701 [DEBUG] [Thread-116140] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:56:29.701 [DEBUG] [Thread-116140] [transport.py] [_log()] client lang: <none>
2025-11-03T12:56:29.701 [DEBUG] [Thread-116140] [transport.py] [_log()] server lang: <none>
2025-11-03T12:56:29.701 [DEBUG] [Thread-116140] [transport.py] [_log()] kex follows: False
2025-11-03T12:56:29.701 [DEBUG] [Thread-116140] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:56:29.701 [DEBUG] [Thread-116140] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:56:29.702 [DEBUG] [Thread-116140] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:56:29.702 [DEBUG] [Thread-116140] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:56:29.702 [DEBUG] [Thread-116140] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:56:29.702 [DEBUG] [Thread-116140] [transport.py] [_log()] Compression: none
2025-11-03T12:56:29.702 [DEBUG] [Thread-116140] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:56:29.720 [DEBUG] [Thread-116140] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:56:29.720 [DEBUG] [Thread-116140] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:56:29.721 [DEBUG] [Thread-116140] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:56:29.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:56:29.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:56:29.723 [DEBUG] [Thread-116140] [transport.py] [_log()] userauth is OK
2025-11-03T12:56:29.723 [DEBUG] [Thread-116140] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:56:29.723 [DEBUG] [Thread-116140] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:56:29.723 [DEBUG] [Thread-116140] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:56:29.723 [DEBUG] [Thread-116140] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:56:29.747 [INFO] [Thread-116140] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:56:29.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:56:30.397 [DEBUG] [Thread-116140] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:56:30.397 [DEBUG] [Thread-116140] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:56:30.397 [DEBUG] [Thread-116140] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:56:30.438 [DEBUG] [Thread-116140] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:56:30.439 [DEBUG] [Thread-116140] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:56:30.441 [DEBUG] [Thread-116140] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:56:30.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:56:30.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:56:30.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:56:30.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:56:30.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:56:30.458 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:56:30.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:56:30.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:56:30.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:56:30.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.454618 -999.00  +25.30  28.09      9   -9.60 1 1 1 1 1   888    0 35.75 43.19 ----- 25.1 28.1 348.9 33.9 30.2 -28.8 29.4 -28.1 29.4 -28.7 29.9 -30.4
2025-11-03T12:56:30.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:56:30.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:56:30.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.454618
2025-11-03T12:56:30.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:56:30.467 [DEBUG] [Thread-116140] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:56:30.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:56:30.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:56:30.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:56:30.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:56:30.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:56:01', tmtdew=43.81, humidity=4.2, cloud=0.0, wind=23.54, temperature=25.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:54:38.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:56:30.539 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:56:30.552 [DEBUG] [Thread-116143] [transport.py] [_log()] starting thread (client mode): 0x81b9ab0
2025-11-03T12:56:30.553 [DEBUG] [Thread-116143] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:56:30.569 [DEBUG] [Thread-116143] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:56:30.569 [INFO] [Thread-116143] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:56:30.577 [DEBUG] [Thread-116143] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:56:30.577 [DEBUG] [Thread-116143] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:56:30.577 [DEBUG] [Thread-116143] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:56:30.577 [DEBUG] [Thread-116143] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:56:30.577 [DEBUG] [Thread-116143] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:56:30.577 [DEBUG] [Thread-116143] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:56:30.577 [DEBUG] [Thread-116143] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:56:30.577 [DEBUG] [Thread-116143] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:56:30.577 [DEBUG] [Thread-116143] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:56:30.577 [DEBUG] [Thread-116143] [transport.py] [_log()] client lang: <none>
2025-11-03T12:56:30.577 [DEBUG] [Thread-116143] [transport.py] [_log()] server lang: <none>
2025-11-03T12:56:30.577 [DEBUG] [Thread-116143] [transport.py] [_log()] kex follows: False
2025-11-03T12:56:30.577 [DEBUG] [Thread-116143] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:56:30.577 [DEBUG] [Thread-116143] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:56:30.577 [DEBUG] [Thread-116143] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:56:30.577 [DEBUG] [Thread-116143] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:56:30.577 [DEBUG] [Thread-116143] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:56:30.577 [DEBUG] [Thread-116143] [transport.py] [_log()] Compression: none
2025-11-03T12:56:30.577 [DEBUG] [Thread-116143] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:56:30.635 [DEBUG] [Thread-116143] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:56:30.635 [DEBUG] [Thread-116143] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:56:30.635 [DEBUG] [Thread-116143] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:56:30.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:56:30.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:56:30.697 [DEBUG] [Thread-116143] [transport.py] [_log()] userauth is OK
2025-11-03T12:56:30.697 [DEBUG] [Thread-116143] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:56:30.697 [DEBUG] [Thread-116143] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:56:30.697 [DEBUG] [Thread-116143] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:56:30.697 [DEBUG] [Thread-116143] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:56:30.716 [INFO] [Thread-116143] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:56:30.726 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:56:30.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:56:31.394 [DEBUG] [Thread-116145 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:56:31.624 [DEBUG] [Thread-116143] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:56:31.624 [DEBUG] [Thread-116143] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:56:31.673 [DEBUG] [Thread-116143] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:56:31.673 [DEBUG] [Thread-116143] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:56:31.683 [DEBUG] [Thread-116143] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:56:31.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:56:31.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:56:31.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:56:31.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:56:31.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:56:31.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:56:31.722 [DEBUG] [Thread-116143] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:56:44.473 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:56:44.474 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:56:46.439 [DEBUG] [Thread-116146 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:57:01.472 [DEBUG] [Thread-116147 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:57:01.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:57:01.742 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:57:01.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:57:02.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 56, 33), 45.25, 4.02, 0.0, 27.54, 26.35, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:57:02.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:56:33
2025-11-03T12:57:02.562 [DEBUG] [Thread-116148 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:57:02.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:57:02.762 [DEBUG] [Thread-116149] [transport.py] [_log()] starting thread (client mode): 0xedd73a0
2025-11-03T12:57:02.762 [DEBUG] [Thread-116149] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:57:02.782 [DEBUG] [Thread-116149] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:57:02.782 [INFO] [Thread-116149] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:57:02.785 [DEBUG] [Thread-116149] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:57:02.785 [DEBUG] [Thread-116149] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:57:02.785 [DEBUG] [Thread-116149] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:57:02.785 [DEBUG] [Thread-116149] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:57:02.785 [DEBUG] [Thread-116149] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:57:02.785 [DEBUG] [Thread-116149] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:57:02.785 [DEBUG] [Thread-116149] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:57:02.785 [DEBUG] [Thread-116149] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:57:02.785 [DEBUG] [Thread-116149] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:57:02.786 [DEBUG] [Thread-116149] [transport.py] [_log()] client lang: <none>
2025-11-03T12:57:02.786 [DEBUG] [Thread-116149] [transport.py] [_log()] server lang: <none>
2025-11-03T12:57:02.786 [DEBUG] [Thread-116149] [transport.py] [_log()] kex follows: False
2025-11-03T12:57:02.786 [DEBUG] [Thread-116149] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:57:02.786 [DEBUG] [Thread-116149] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:57:02.786 [DEBUG] [Thread-116149] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:57:02.786 [DEBUG] [Thread-116149] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:57:02.786 [DEBUG] [Thread-116149] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:57:02.786 [DEBUG] [Thread-116149] [transport.py] [_log()] Compression: none
2025-11-03T12:57:02.786 [DEBUG] [Thread-116149] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:57:02.801 [DEBUG] [Thread-116149] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:57:02.802 [DEBUG] [Thread-116149] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:57:02.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:57:02.803 [DEBUG] [Thread-116149] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:57:02.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:57:02.806 [DEBUG] [Thread-116149] [transport.py] [_log()] userauth is OK
2025-11-03T12:57:02.806 [DEBUG] [Thread-116149] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:57:02.806 [DEBUG] [Thread-116149] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:57:02.806 [DEBUG] [Thread-116149] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:57:02.806 [DEBUG] [Thread-116149] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:57:02.831 [INFO] [Thread-116149] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:57:02.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:57:03.605 [DEBUG] [Thread-116149] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:57:03.605 [DEBUG] [Thread-116149] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:57:03.605 [DEBUG] [Thread-116149] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:57:03.646 [DEBUG] [Thread-116149] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:57:03.646 [DEBUG] [Thread-116149] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:57:03.648 [DEBUG] [Thread-116149] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:57:03.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:57:03.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:57:03.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:57:03.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:57:03.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:57:03.667 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:57:03.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:57:03.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:57:03.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:57:03.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.454618 -999.00  +25.30  28.09      9   -9.60 1 1 1 1 1   888    0 35.75 43.19 ----- 25.1 28.1 348.9 33.9 30.2 -28.8 29.4 -28.1 29.4 -28.7 29.9 -30.4
2025-11-03T12:57:03.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:57:03.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:57:03.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.454618
2025-11-03T12:57:03.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:57:03.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:57:03.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:57:03.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:57:03.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:57:03.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:56:33', tmtdew=45.25, humidity=4.02, cloud=0.0, wind=27.54, temperature=26.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:54:38.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:57:03.668 [DEBUG] [Thread-116149] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:57:03.739 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:57:03.751 [DEBUG] [Thread-116152] [transport.py] [_log()] starting thread (client mode): 0x81ba7d0
2025-11-03T12:57:03.751 [DEBUG] [Thread-116152] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:57:03.771 [DEBUG] [Thread-116152] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:57:03.771 [INFO] [Thread-116152] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:57:03.779 [DEBUG] [Thread-116152] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:57:03.779 [DEBUG] [Thread-116152] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:57:03.779 [DEBUG] [Thread-116152] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:57:03.779 [DEBUG] [Thread-116152] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:57:03.779 [DEBUG] [Thread-116152] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:57:03.779 [DEBUG] [Thread-116152] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:57:03.779 [DEBUG] [Thread-116152] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:57:03.779 [DEBUG] [Thread-116152] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:57:03.779 [DEBUG] [Thread-116152] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:57:03.779 [DEBUG] [Thread-116152] [transport.py] [_log()] client lang: <none>
2025-11-03T12:57:03.779 [DEBUG] [Thread-116152] [transport.py] [_log()] server lang: <none>
2025-11-03T12:57:03.779 [DEBUG] [Thread-116152] [transport.py] [_log()] kex follows: False
2025-11-03T12:57:03.779 [DEBUG] [Thread-116152] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:57:03.779 [DEBUG] [Thread-116152] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:57:03.779 [DEBUG] [Thread-116152] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:57:03.779 [DEBUG] [Thread-116152] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:57:03.779 [DEBUG] [Thread-116152] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:57:03.779 [DEBUG] [Thread-116152] [transport.py] [_log()] Compression: none
2025-11-03T12:57:03.779 [DEBUG] [Thread-116152] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:57:03.836 [DEBUG] [Thread-116152] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:57:03.836 [DEBUG] [Thread-116152] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:57:03.837 [DEBUG] [Thread-116152] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:57:03.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:57:03.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:57:03.893 [DEBUG] [Thread-116152] [transport.py] [_log()] userauth is OK
2025-11-03T12:57:03.893 [DEBUG] [Thread-116152] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:57:03.894 [DEBUG] [Thread-116152] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:57:03.894 [DEBUG] [Thread-116152] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:57:03.894 [DEBUG] [Thread-116152] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:57:03.913 [INFO] [Thread-116152] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:57:03.914 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:57:03.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:57:04.768 [DEBUG] [Thread-116152] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:57:04.769 [DEBUG] [Thread-116152] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:57:04.820 [DEBUG] [Thread-116152] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:57:04.820 [DEBUG] [Thread-116152] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:57:04.833 [DEBUG] [Thread-116152] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:57:04.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:57:04.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:57:04.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:57:04.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:57:04.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:57:04.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:57:04.881 [DEBUG] [Thread-116152] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:57:16.500 [DEBUG] [Thread-116154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:57:31.543 [DEBUG] [Thread-116155 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:57:34.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:57:34.903 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:57:34.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:57:35.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 57, 6), 45.68, 3.89, 0.0, 32.09, 26.47, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:57:35.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:57:06
2025-11-03T12:57:35.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:57:35.852 [DEBUG] [Thread-116156] [transport.py] [_log()] starting thread (client mode): 0xed4e680
2025-11-03T12:57:35.852 [DEBUG] [Thread-116156] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:57:35.863 [DEBUG] [Thread-116156] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:57:35.863 [INFO] [Thread-116156] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:57:35.867 [DEBUG] [Thread-116156] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:57:35.867 [DEBUG] [Thread-116156] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:57:35.867 [DEBUG] [Thread-116156] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:57:35.867 [DEBUG] [Thread-116156] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:57:35.867 [DEBUG] [Thread-116156] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:57:35.867 [DEBUG] [Thread-116156] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:57:35.867 [DEBUG] [Thread-116156] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:57:35.867 [DEBUG] [Thread-116156] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:57:35.867 [DEBUG] [Thread-116156] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:57:35.867 [DEBUG] [Thread-116156] [transport.py] [_log()] client lang: <none>
2025-11-03T12:57:35.867 [DEBUG] [Thread-116156] [transport.py] [_log()] server lang: <none>
2025-11-03T12:57:35.867 [DEBUG] [Thread-116156] [transport.py] [_log()] kex follows: False
2025-11-03T12:57:35.867 [DEBUG] [Thread-116156] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:57:35.867 [DEBUG] [Thread-116156] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:57:35.867 [DEBUG] [Thread-116156] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:57:35.867 [DEBUG] [Thread-116156] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:57:35.867 [DEBUG] [Thread-116156] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:57:35.867 [DEBUG] [Thread-116156] [transport.py] [_log()] Compression: none
2025-11-03T12:57:35.867 [DEBUG] [Thread-116156] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:57:35.884 [DEBUG] [Thread-116156] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:57:35.885 [DEBUG] [Thread-116156] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:57:35.885 [DEBUG] [Thread-116156] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:57:35.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:57:35.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:57:35.929 [DEBUG] [Thread-116156] [transport.py] [_log()] userauth is OK
2025-11-03T12:57:35.929 [DEBUG] [Thread-116156] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:57:35.930 [DEBUG] [Thread-116156] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:57:35.930 [DEBUG] [Thread-116156] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:57:35.930 [DEBUG] [Thread-116156] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:57:35.968 [INFO] [Thread-116156] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:57:35.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:57:36.605 [DEBUG] [Thread-116156] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:57:36.605 [DEBUG] [Thread-116156] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:57:36.605 [DEBUG] [Thread-116156] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:57:36.645 [DEBUG] [Thread-116156] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:57:36.645 [DEBUG] [Thread-116156] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:57:36.648 [DEBUG] [Thread-116156] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:57:36.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:57:36.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:57:36.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:57:36.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:57:36.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:57:36.667 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:57:36.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:57:36.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:57:36.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:57:36.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.454618 -999.00  +25.30  28.09      9   -9.60 1 1 1 1 1   888    0 35.75 43.19 ----- 25.1 28.1 348.9 33.9 30.2 -28.8 29.4 -28.1 29.4 -28.7 29.9 -30.4
2025-11-03T12:57:36.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:57:36.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:57:36.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.454618
2025-11-03T12:57:36.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:57:36.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:57:36.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:57:36.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:57:36.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:57:36.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:57:06', tmtdew=45.68, humidity=3.89, cloud=0.0, wind=32.09, temperature=26.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:54:38.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:57:36.668 [DEBUG] [Thread-116156] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:57:36.740 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:57:36.752 [DEBUG] [Thread-116159] [transport.py] [_log()] starting thread (client mode): 0xed4e6e0
2025-11-03T12:57:36.753 [DEBUG] [Thread-116159] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:57:36.767 [DEBUG] [Thread-116159] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:57:36.768 [INFO] [Thread-116159] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:57:36.775 [DEBUG] [Thread-116159] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:57:36.775 [DEBUG] [Thread-116159] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:57:36.775 [DEBUG] [Thread-116159] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:57:36.775 [DEBUG] [Thread-116159] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:57:36.775 [DEBUG] [Thread-116159] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:57:36.775 [DEBUG] [Thread-116159] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:57:36.775 [DEBUG] [Thread-116159] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:57:36.775 [DEBUG] [Thread-116159] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:57:36.775 [DEBUG] [Thread-116159] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:57:36.775 [DEBUG] [Thread-116159] [transport.py] [_log()] client lang: <none>
2025-11-03T12:57:36.775 [DEBUG] [Thread-116159] [transport.py] [_log()] server lang: <none>
2025-11-03T12:57:36.775 [DEBUG] [Thread-116159] [transport.py] [_log()] kex follows: False
2025-11-03T12:57:36.775 [DEBUG] [Thread-116159] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:57:36.775 [DEBUG] [Thread-116159] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:57:36.775 [DEBUG] [Thread-116159] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:57:36.775 [DEBUG] [Thread-116159] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:57:36.775 [DEBUG] [Thread-116159] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:57:36.775 [DEBUG] [Thread-116159] [transport.py] [_log()] Compression: none
2025-11-03T12:57:36.775 [DEBUG] [Thread-116159] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:57:36.831 [DEBUG] [Thread-116159] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:57:36.831 [DEBUG] [Thread-116159] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:57:36.831 [DEBUG] [Thread-116159] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:57:36.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:57:36.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:57:36.888 [DEBUG] [Thread-116159] [transport.py] [_log()] userauth is OK
2025-11-03T12:57:36.888 [DEBUG] [Thread-116159] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:57:36.888 [DEBUG] [Thread-116159] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:57:36.888 [DEBUG] [Thread-116159] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:57:36.888 [DEBUG] [Thread-116159] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:57:36.903 [INFO] [Thread-116159] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:57:36.903 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:57:36.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:57:37.725 [DEBUG] [Thread-116159] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:57:37.725 [DEBUG] [Thread-116159] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:57:37.772 [DEBUG] [Thread-116159] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:57:37.773 [DEBUG] [Thread-116159] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:57:37.785 [DEBUG] [Thread-116159] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:57:37.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:57:37.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:57:37.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:57:37.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:57:37.817 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:57:37.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:57:37.829 [DEBUG] [Thread-116159] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:57:44.613 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:57:44.615 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:57:46.574 [DEBUG] [Thread-116161 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:58:01.612 [DEBUG] [Thread-116162 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:58:02.613 [DEBUG] [Thread-116163 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:58:07.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:58:07.848 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:58:07.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:58:08.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 57, 38), 45.62, 3.94, 0.0, 40.42, 26.3, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:58:08.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:57:38
2025-11-03T12:58:08.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:58:08.803 [DEBUG] [Thread-116164] [transport.py] [_log()] starting thread (client mode): 0xed4c970
2025-11-03T12:58:08.803 [DEBUG] [Thread-116164] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:58:08.823 [DEBUG] [Thread-116164] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:58:08.824 [INFO] [Thread-116164] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:58:08.827 [DEBUG] [Thread-116164] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:58:08.827 [DEBUG] [Thread-116164] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:58:08.827 [DEBUG] [Thread-116164] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:58:08.827 [DEBUG] [Thread-116164] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:58:08.827 [DEBUG] [Thread-116164] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:58:08.827 [DEBUG] [Thread-116164] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:58:08.827 [DEBUG] [Thread-116164] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:58:08.827 [DEBUG] [Thread-116164] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:58:08.827 [DEBUG] [Thread-116164] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:58:08.827 [DEBUG] [Thread-116164] [transport.py] [_log()] client lang: <none>
2025-11-03T12:58:08.827 [DEBUG] [Thread-116164] [transport.py] [_log()] server lang: <none>
2025-11-03T12:58:08.827 [DEBUG] [Thread-116164] [transport.py] [_log()] kex follows: False
2025-11-03T12:58:08.827 [DEBUG] [Thread-116164] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:58:08.827 [DEBUG] [Thread-116164] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:58:08.827 [DEBUG] [Thread-116164] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:58:08.827 [DEBUG] [Thread-116164] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:58:08.827 [DEBUG] [Thread-116164] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:58:08.827 [DEBUG] [Thread-116164] [transport.py] [_log()] Compression: none
2025-11-03T12:58:08.827 [DEBUG] [Thread-116164] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:58:08.844 [DEBUG] [Thread-116164] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:58:08.844 [DEBUG] [Thread-116164] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:58:08.844 [DEBUG] [Thread-116164] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:58:08.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:58:08.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:58:08.846 [DEBUG] [Thread-116164] [transport.py] [_log()] userauth is OK
2025-11-03T12:58:08.846 [DEBUG] [Thread-116164] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:58:08.846 [DEBUG] [Thread-116164] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:58:08.846 [DEBUG] [Thread-116164] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:58:08.846 [DEBUG] [Thread-116164] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:58:08.864 [INFO] [Thread-116164] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:58:08.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:58:09.620 [DEBUG] [Thread-116164] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:58:09.621 [DEBUG] [Thread-116164] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:58:09.621 [DEBUG] [Thread-116164] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:58:09.662 [DEBUG] [Thread-116164] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:58:09.662 [DEBUG] [Thread-116164] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:58:09.665 [DEBUG] [Thread-116164] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:58:09.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:58:09.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:58:09.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:58:09.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:58:09.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:58:09.688 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:58:09.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:58:09.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:58:09.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:58:09.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.454618 -999.00  +25.30  28.09      9   -9.60 1 1 1 1 1   888    0 35.75 43.19 ----- 25.1 28.1 348.9 33.9 30.2 -28.8 29.4 -28.1 29.4 -28.7 29.9 -30.4
2025-11-03T12:58:09.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:58:09.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:58:09.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.454618
2025-11-03T12:58:09.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:58:09.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:58:09.691 [DEBUG] [Thread-116164] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:58:09.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:58:09.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:58:09.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:58:09.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:57:38', tmtdew=45.62, humidity=3.94, cloud=0.0, wind=40.42, temperature=26.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:54:38.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:58:09.774 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:58:09.788 [DEBUG] [Thread-116167] [transport.py] [_log()] starting thread (client mode): 0x81b9c00
2025-11-03T12:58:09.788 [DEBUG] [Thread-116167] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:58:09.803 [DEBUG] [Thread-116167] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:58:09.804 [INFO] [Thread-116167] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:58:09.812 [DEBUG] [Thread-116167] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:58:09.812 [DEBUG] [Thread-116167] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:58:09.812 [DEBUG] [Thread-116167] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:58:09.812 [DEBUG] [Thread-116167] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:58:09.812 [DEBUG] [Thread-116167] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:58:09.812 [DEBUG] [Thread-116167] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:58:09.812 [DEBUG] [Thread-116167] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:58:09.812 [DEBUG] [Thread-116167] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:58:09.812 [DEBUG] [Thread-116167] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:58:09.812 [DEBUG] [Thread-116167] [transport.py] [_log()] client lang: <none>
2025-11-03T12:58:09.812 [DEBUG] [Thread-116167] [transport.py] [_log()] server lang: <none>
2025-11-03T12:58:09.812 [DEBUG] [Thread-116167] [transport.py] [_log()] kex follows: False
2025-11-03T12:58:09.812 [DEBUG] [Thread-116167] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:58:09.812 [DEBUG] [Thread-116167] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:58:09.813 [DEBUG] [Thread-116167] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:58:09.813 [DEBUG] [Thread-116167] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:58:09.813 [DEBUG] [Thread-116167] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:58:09.813 [DEBUG] [Thread-116167] [transport.py] [_log()] Compression: none
2025-11-03T12:58:09.813 [DEBUG] [Thread-116167] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:58:09.868 [DEBUG] [Thread-116167] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:58:09.869 [DEBUG] [Thread-116167] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:58:09.870 [DEBUG] [Thread-116167] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:58:09.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:58:09.871 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:58:09.925 [DEBUG] [Thread-116167] [transport.py] [_log()] userauth is OK
2025-11-03T12:58:09.925 [DEBUG] [Thread-116167] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:58:09.925 [DEBUG] [Thread-116167] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:58:09.925 [DEBUG] [Thread-116167] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:58:09.926 [DEBUG] [Thread-116167] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:58:09.945 [INFO] [Thread-116167] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:58:09.945 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:58:09.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:58:10.773 [DEBUG] [Thread-116167] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:58:10.773 [DEBUG] [Thread-116167] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:58:10.820 [DEBUG] [Thread-116167] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:58:10.820 [DEBUG] [Thread-116167] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:58:10.829 [DEBUG] [Thread-116167] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:58:10.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:58:10.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:58:10.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:58:10.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:58:10.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:58:10.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:58:10.862 [DEBUG] [Thread-116167] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:58:16.647 [DEBUG] [Thread-116169 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:58:31.701 [DEBUG] [Thread-116170 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:58:40.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:58:40.884 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:58:40.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:58:41.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 58, 10), 45.42, 3.95, 0.0, 34.48, 25.82, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:58:41.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:58:10
2025-11-03T12:58:41.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:58:41.827 [DEBUG] [Thread-116171] [transport.py] [_log()] starting thread (client mode): 0x117bdbd0
2025-11-03T12:58:41.827 [DEBUG] [Thread-116171] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:58:41.849 [DEBUG] [Thread-116171] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:58:41.849 [INFO] [Thread-116171] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:58:41.852 [DEBUG] [Thread-116171] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:58:41.852 [DEBUG] [Thread-116171] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:58:41.852 [DEBUG] [Thread-116171] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:58:41.852 [DEBUG] [Thread-116171] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:58:41.852 [DEBUG] [Thread-116171] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:58:41.852 [DEBUG] [Thread-116171] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:58:41.852 [DEBUG] [Thread-116171] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:58:41.852 [DEBUG] [Thread-116171] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:58:41.852 [DEBUG] [Thread-116171] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:58:41.852 [DEBUG] [Thread-116171] [transport.py] [_log()] client lang: <none>
2025-11-03T12:58:41.852 [DEBUG] [Thread-116171] [transport.py] [_log()] server lang: <none>
2025-11-03T12:58:41.852 [DEBUG] [Thread-116171] [transport.py] [_log()] kex follows: False
2025-11-03T12:58:41.852 [DEBUG] [Thread-116171] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:58:41.852 [DEBUG] [Thread-116171] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:58:41.852 [DEBUG] [Thread-116171] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:58:41.852 [DEBUG] [Thread-116171] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:58:41.852 [DEBUG] [Thread-116171] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:58:41.853 [DEBUG] [Thread-116171] [transport.py] [_log()] Compression: none
2025-11-03T12:58:41.853 [DEBUG] [Thread-116171] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:58:41.871 [DEBUG] [Thread-116171] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:58:41.872 [DEBUG] [Thread-116171] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:58:41.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:58:41.873 [DEBUG] [Thread-116171] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:58:41.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:58:41.875 [DEBUG] [Thread-116171] [transport.py] [_log()] userauth is OK
2025-11-03T12:58:41.875 [DEBUG] [Thread-116171] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:58:41.875 [DEBUG] [Thread-116171] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:58:41.875 [DEBUG] [Thread-116171] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:58:41.875 [DEBUG] [Thread-116171] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:58:41.890 [INFO] [Thread-116171] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:58:41.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:58:42.530 [DEBUG] [Thread-116171] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:58:42.530 [DEBUG] [Thread-116171] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:58:42.531 [DEBUG] [Thread-116171] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:58:42.571 [DEBUG] [Thread-116171] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:58:42.571 [DEBUG] [Thread-116171] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:58:42.574 [DEBUG] [Thread-116171] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:58:42.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:58:42.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:58:42.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:58:42.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:58:42.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:58:42.599 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:58:42.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:58:42.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:58:42.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:58:42.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.454618 -999.00  +25.30  28.09      9   -9.60 1 1 1 1 1   888    0 35.75 43.19 ----- 25.1 28.1 348.9 33.9 30.2 -28.8 29.4 -28.1 29.4 -28.7 29.9 -30.4
2025-11-03T12:58:42.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:58:42.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:58:42.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.454618
2025-11-03T12:58:42.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:58:42.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:58:42.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:58:42.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:58:42.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:58:42.602 [DEBUG] [Thread-116171] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:58:42.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:58:10', tmtdew=45.42, humidity=3.95, cloud=0.0, wind=34.48, temperature=25.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:54:38.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:58:42.687 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:58:42.699 [DEBUG] [Thread-116174] [transport.py] [_log()] starting thread (client mode): 0xed4c7c0
2025-11-03T12:58:42.699 [DEBUG] [Thread-116174] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:58:42.713 [DEBUG] [Thread-116174] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:58:42.713 [INFO] [Thread-116174] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:58:42.721 [DEBUG] [Thread-116174] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:58:42.721 [DEBUG] [Thread-116174] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:58:42.721 [DEBUG] [Thread-116174] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:58:42.721 [DEBUG] [Thread-116174] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:58:42.721 [DEBUG] [Thread-116174] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:58:42.722 [DEBUG] [Thread-116174] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:58:42.722 [DEBUG] [Thread-116174] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:58:42.722 [DEBUG] [Thread-116174] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:58:42.722 [DEBUG] [Thread-116174] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:58:42.722 [DEBUG] [Thread-116174] [transport.py] [_log()] client lang: <none>
2025-11-03T12:58:42.722 [DEBUG] [Thread-116174] [transport.py] [_log()] server lang: <none>
2025-11-03T12:58:42.722 [DEBUG] [Thread-116174] [transport.py] [_log()] kex follows: False
2025-11-03T12:58:42.723 [DEBUG] [Thread-116174] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:58:42.723 [DEBUG] [Thread-116174] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:58:42.723 [DEBUG] [Thread-116174] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:58:42.723 [DEBUG] [Thread-116174] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:58:42.723 [DEBUG] [Thread-116174] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:58:42.723 [DEBUG] [Thread-116174] [transport.py] [_log()] Compression: none
2025-11-03T12:58:42.724 [DEBUG] [Thread-116174] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:58:42.782 [DEBUG] [Thread-116174] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:58:42.782 [DEBUG] [Thread-116174] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:58:42.783 [DEBUG] [Thread-116174] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:58:42.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:58:42.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:58:42.843 [DEBUG] [Thread-116174] [transport.py] [_log()] userauth is OK
2025-11-03T12:58:42.843 [DEBUG] [Thread-116174] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:58:42.844 [DEBUG] [Thread-116174] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:58:42.844 [DEBUG] [Thread-116174] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:58:42.844 [DEBUG] [Thread-116174] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:58:42.878 [INFO] [Thread-116174] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:58:42.878 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:58:42.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:58:43.718 [DEBUG] [Thread-116174] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:58:43.718 [DEBUG] [Thread-116174] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:58:43.766 [DEBUG] [Thread-116174] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:58:43.766 [DEBUG] [Thread-116174] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:58:43.775 [DEBUG] [Thread-116174] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:58:43.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:58:43.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:58:43.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:58:43.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:58:43.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:58:43.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:58:43.811 [DEBUG] [Thread-116174] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:58:44.756 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:58:44.756 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:58:46.740 [DEBUG] [Thread-116176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:59:01.794 [DEBUG] [Thread-116177 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:59:02.673 [DEBUG] [Thread-116178 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:59:13.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:59:13.803 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:59:13.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:59:14.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 58, 42), 45.31, 3.99, 0.0, 32.43, 25.84, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:59:14.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:58:42
2025-11-03T12:59:14.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:59:14.749 [DEBUG] [Thread-116179] [transport.py] [_log()] starting thread (client mode): 0x81ba7d0
2025-11-03T12:59:14.750 [DEBUG] [Thread-116179] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:59:14.768 [DEBUG] [Thread-116179] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:59:14.769 [INFO] [Thread-116179] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:59:14.772 [DEBUG] [Thread-116179] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:59:14.772 [DEBUG] [Thread-116179] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:59:14.772 [DEBUG] [Thread-116179] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:59:14.772 [DEBUG] [Thread-116179] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:59:14.772 [DEBUG] [Thread-116179] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:59:14.772 [DEBUG] [Thread-116179] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:59:14.772 [DEBUG] [Thread-116179] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:59:14.772 [DEBUG] [Thread-116179] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:59:14.772 [DEBUG] [Thread-116179] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:59:14.772 [DEBUG] [Thread-116179] [transport.py] [_log()] client lang: <none>
2025-11-03T12:59:14.772 [DEBUG] [Thread-116179] [transport.py] [_log()] server lang: <none>
2025-11-03T12:59:14.772 [DEBUG] [Thread-116179] [transport.py] [_log()] kex follows: False
2025-11-03T12:59:14.772 [DEBUG] [Thread-116179] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:59:14.772 [DEBUG] [Thread-116179] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:59:14.772 [DEBUG] [Thread-116179] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:59:14.772 [DEBUG] [Thread-116179] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:59:14.772 [DEBUG] [Thread-116179] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:59:14.772 [DEBUG] [Thread-116179] [transport.py] [_log()] Compression: none
2025-11-03T12:59:14.772 [DEBUG] [Thread-116179] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:59:14.787 [DEBUG] [Thread-116179] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:59:14.787 [DEBUG] [Thread-116179] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:59:14.787 [DEBUG] [Thread-116179] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:59:14.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:59:14.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:59:14.788 [DEBUG] [Thread-116179] [transport.py] [_log()] userauth is OK
2025-11-03T12:59:14.788 [DEBUG] [Thread-116179] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:59:14.788 [DEBUG] [Thread-116179] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:59:14.788 [DEBUG] [Thread-116179] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:59:14.788 [DEBUG] [Thread-116179] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:59:14.797 [INFO] [Thread-116179] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:59:14.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:59:15.607 [DEBUG] [Thread-116179] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:59:15.607 [DEBUG] [Thread-116179] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:59:15.607 [DEBUG] [Thread-116179] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:59:15.648 [DEBUG] [Thread-116179] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:59:15.648 [DEBUG] [Thread-116179] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:59:15.651 [DEBUG] [Thread-116179] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:59:15.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:59:15.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:59:15.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:59:15.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:59:15.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:59:15.670 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:59:15.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:59:15.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:59:15.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:59:15.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.454618 -999.00  +25.30  28.09      9   -9.60 1 1 1 1 1   888    0 35.75 43.19 ----- 25.1 28.1 348.9 33.9 30.2 -28.8 29.4 -28.1 29.4 -28.7 29.9 -30.4
2025-11-03T12:59:15.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:59:15.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:59:15.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.454618
2025-11-03T12:59:15.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:59:15.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:59:15.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:59:15.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:59:15.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:59:15.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:58:42', tmtdew=45.31, humidity=3.99, cloud=0.0, wind=32.43, temperature=25.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:54:38.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:59:15.672 [DEBUG] [Thread-116179] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:59:15.746 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:59:15.757 [DEBUG] [Thread-116182] [transport.py] [_log()] starting thread (client mode): 0xed4ef20
2025-11-03T12:59:15.757 [DEBUG] [Thread-116182] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:59:15.772 [DEBUG] [Thread-116182] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:59:15.772 [INFO] [Thread-116182] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:59:15.779 [DEBUG] [Thread-116182] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:59:15.780 [DEBUG] [Thread-116182] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:59:15.780 [DEBUG] [Thread-116182] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:59:15.780 [DEBUG] [Thread-116182] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:59:15.780 [DEBUG] [Thread-116182] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:59:15.780 [DEBUG] [Thread-116182] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:59:15.780 [DEBUG] [Thread-116182] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:59:15.780 [DEBUG] [Thread-116182] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:59:15.780 [DEBUG] [Thread-116182] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:59:15.780 [DEBUG] [Thread-116182] [transport.py] [_log()] client lang: <none>
2025-11-03T12:59:15.780 [DEBUG] [Thread-116182] [transport.py] [_log()] server lang: <none>
2025-11-03T12:59:15.780 [DEBUG] [Thread-116182] [transport.py] [_log()] kex follows: False
2025-11-03T12:59:15.780 [DEBUG] [Thread-116182] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:59:15.780 [DEBUG] [Thread-116182] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:59:15.780 [DEBUG] [Thread-116182] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:59:15.780 [DEBUG] [Thread-116182] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:59:15.780 [DEBUG] [Thread-116182] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:59:15.780 [DEBUG] [Thread-116182] [transport.py] [_log()] Compression: none
2025-11-03T12:59:15.780 [DEBUG] [Thread-116182] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:59:15.836 [DEBUG] [Thread-116182] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:59:15.836 [DEBUG] [Thread-116182] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:59:15.836 [DEBUG] [Thread-116182] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:59:15.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:59:15.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:59:15.893 [DEBUG] [Thread-116182] [transport.py] [_log()] userauth is OK
2025-11-03T12:59:15.893 [DEBUG] [Thread-116182] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:59:15.893 [DEBUG] [Thread-116182] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:59:15.893 [DEBUG] [Thread-116182] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:59:15.893 [DEBUG] [Thread-116182] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:59:15.907 [INFO] [Thread-116182] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:59:15.907 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:59:15.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:59:16.753 [DEBUG] [Thread-116182] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:59:16.753 [DEBUG] [Thread-116182] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:59:16.803 [DEBUG] [Thread-116182] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:59:16.803 [DEBUG] [Thread-116182] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:59:16.814 [DEBUG] [Thread-116182] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:59:16.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:59:16.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:59:16.826 [DEBUG] [Thread-116184 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:59:16.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:59:16.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:59:16.839 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:59:16.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:59:16.849 [DEBUG] [Thread-116182] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:59:31.864 [DEBUG] [Thread-116185 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:59:44.896 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:59:44.897 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:59:46.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T12:59:46.869 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T12:59:46.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T12:59:46.899 [DEBUG] [Thread-116186 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T12:59:47.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 59, 15), 45.07, 4.07, 0.0, 39.15, 25.84, 0, 0, 0, 2, 0, 0),)
2025-11-03T12:59:47.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:59:15
2025-11-03T12:59:47.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T12:59:47.918 [DEBUG] [Thread-116187] [transport.py] [_log()] starting thread (client mode): 0xed238b0
2025-11-03T12:59:47.918 [DEBUG] [Thread-116187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:59:47.938 [DEBUG] [Thread-116187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T12:59:47.938 [INFO] [Thread-116187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T12:59:47.941 [DEBUG] [Thread-116187] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:59:47.941 [DEBUG] [Thread-116187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T12:59:47.941 [DEBUG] [Thread-116187] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:59:47.941 [DEBUG] [Thread-116187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:59:47.941 [DEBUG] [Thread-116187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:59:47.941 [DEBUG] [Thread-116187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:59:47.941 [DEBUG] [Thread-116187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:59:47.941 [DEBUG] [Thread-116187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:59:47.941 [DEBUG] [Thread-116187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:59:47.941 [DEBUG] [Thread-116187] [transport.py] [_log()] client lang: <none>
2025-11-03T12:59:47.941 [DEBUG] [Thread-116187] [transport.py] [_log()] server lang: <none>
2025-11-03T12:59:47.941 [DEBUG] [Thread-116187] [transport.py] [_log()] kex follows: False
2025-11-03T12:59:47.941 [DEBUG] [Thread-116187] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:59:47.942 [DEBUG] [Thread-116187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:59:47.942 [DEBUG] [Thread-116187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:59:47.942 [DEBUG] [Thread-116187] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:59:47.942 [DEBUG] [Thread-116187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:59:47.942 [DEBUG] [Thread-116187] [transport.py] [_log()] Compression: none
2025-11-03T12:59:47.942 [DEBUG] [Thread-116187] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:59:47.957 [DEBUG] [Thread-116187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:59:47.958 [DEBUG] [Thread-116187] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:59:47.958 [DEBUG] [Thread-116187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T12:59:47.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T12:59:47.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:59:47.960 [DEBUG] [Thread-116187] [transport.py] [_log()] userauth is OK
2025-11-03T12:59:47.960 [DEBUG] [Thread-116187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:59:47.960 [DEBUG] [Thread-116187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:59:47.960 [DEBUG] [Thread-116187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T12:59:47.960 [DEBUG] [Thread-116187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:59:47.979 [INFO] [Thread-116187] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:59:47.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:59:48.620 [DEBUG] [Thread-116187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:59:48.620 [DEBUG] [Thread-116187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:59:48.620 [DEBUG] [Thread-116187] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T12:59:48.662 [DEBUG] [Thread-116187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:59:48.662 [DEBUG] [Thread-116187] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:59:48.664 [DEBUG] [Thread-116187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:59:48.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:59:48.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T12:59:48.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T12:59:48.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T12:59:48.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:59:48.685 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T12:59:48.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:59:48.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:59:48.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T12:59:48.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.454618 -999.00  +25.30  28.09      9   -9.60 1 1 1 1 1   888    0 35.75 43.19 ----- 25.1 28.1 348.9 33.9 30.2 -28.8 29.4 -28.1 29.4 -28.7 29.9 -30.4
2025-11-03T12:59:48.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T12:59:48.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T12:59:48.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.454618
2025-11-03T12:59:48.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T12:59:48.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T12:59:48.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T12:59:48.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T12:59:48.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T12:59:48.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:59:15', tmtdew=45.07, humidity=4.07, cloud=0.0, wind=39.15, temperature=25.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:54:38.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T12:59:48.686 [DEBUG] [Thread-116187] [transport.py] [_log()] EOF in transport thread
2025-11-03T12:59:48.759 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T12:59:48.771 [DEBUG] [Thread-116190] [transport.py] [_log()] starting thread (client mode): 0xed22bf0
2025-11-03T12:59:48.771 [DEBUG] [Thread-116190] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T12:59:48.786 [DEBUG] [Thread-116190] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T12:59:48.786 [INFO] [Thread-116190] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T12:59:48.794 [DEBUG] [Thread-116190] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T12:59:48.794 [DEBUG] [Thread-116190] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T12:59:48.794 [DEBUG] [Thread-116190] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T12:59:48.794 [DEBUG] [Thread-116190] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:59:48.794 [DEBUG] [Thread-116190] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T12:59:48.794 [DEBUG] [Thread-116190] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:59:48.794 [DEBUG] [Thread-116190] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T12:59:48.794 [DEBUG] [Thread-116190] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T12:59:48.794 [DEBUG] [Thread-116190] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T12:59:48.794 [DEBUG] [Thread-116190] [transport.py] [_log()] client lang: <none>
2025-11-03T12:59:48.794 [DEBUG] [Thread-116190] [transport.py] [_log()] server lang: <none>
2025-11-03T12:59:48.794 [DEBUG] [Thread-116190] [transport.py] [_log()] kex follows: False
2025-11-03T12:59:48.795 [DEBUG] [Thread-116190] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T12:59:48.795 [DEBUG] [Thread-116190] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T12:59:48.795 [DEBUG] [Thread-116190] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T12:59:48.795 [DEBUG] [Thread-116190] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T12:59:48.795 [DEBUG] [Thread-116190] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T12:59:48.795 [DEBUG] [Thread-116190] [transport.py] [_log()] Compression: none
2025-11-03T12:59:48.795 [DEBUG] [Thread-116190] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T12:59:48.855 [DEBUG] [Thread-116190] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T12:59:48.855 [DEBUG] [Thread-116190] [transport.py] [_log()] Switch to new keys ...
2025-11-03T12:59:48.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T12:59:48.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T12:59:48.856 [DEBUG] [Thread-116190] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T12:59:48.914 [DEBUG] [Thread-116190] [transport.py] [_log()] userauth is OK
2025-11-03T12:59:48.914 [DEBUG] [Thread-116190] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T12:59:48.914 [DEBUG] [Thread-116190] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T12:59:48.914 [DEBUG] [Thread-116190] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T12:59:48.914 [DEBUG] [Thread-116190] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T12:59:48.928 [INFO] [Thread-116190] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T12:59:48.928 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T12:59:48.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T12:59:49.813 [DEBUG] [Thread-116190] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T12:59:49.813 [DEBUG] [Thread-116190] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T12:59:49.860 [DEBUG] [Thread-116190] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T12:59:49.860 [DEBUG] [Thread-116190] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T12:59:49.868 [DEBUG] [Thread-116190] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T12:59:49.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T12:59:49.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T12:59:49.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T12:59:49.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T12:59:49.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T12:59:49.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T12:59:49.900 [DEBUG] [Thread-116190] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:00:01.924 [DEBUG] [Thread-116192 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:00:02.865 [DEBUG] [Thread-116193 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:00:16.959 [DEBUG] [Thread-116194 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:00:19.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:00:19.896 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:00:19.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:00:20.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 12, 59, 47), 44.94, 4.04, 0.0, 36.79, 25.44, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:00:20.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 12:59:47
2025-11-03T13:00:20.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:00:20.910 [DEBUG] [Thread-116195] [transport.py] [_log()] starting thread (client mode): 0xed231c0
2025-11-03T13:00:20.910 [DEBUG] [Thread-116195] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:00:20.931 [DEBUG] [Thread-116195] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:00:20.931 [INFO] [Thread-116195] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:00:20.934 [DEBUG] [Thread-116195] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:00:20.934 [DEBUG] [Thread-116195] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:00:20.934 [DEBUG] [Thread-116195] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:00:20.934 [DEBUG] [Thread-116195] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:00:20.934 [DEBUG] [Thread-116195] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:00:20.934 [DEBUG] [Thread-116195] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:00:20.934 [DEBUG] [Thread-116195] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:00:20.934 [DEBUG] [Thread-116195] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:00:20.934 [DEBUG] [Thread-116195] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:00:20.934 [DEBUG] [Thread-116195] [transport.py] [_log()] client lang: <none>
2025-11-03T13:00:20.934 [DEBUG] [Thread-116195] [transport.py] [_log()] server lang: <none>
2025-11-03T13:00:20.934 [DEBUG] [Thread-116195] [transport.py] [_log()] kex follows: False
2025-11-03T13:00:20.934 [DEBUG] [Thread-116195] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:00:20.934 [DEBUG] [Thread-116195] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:00:20.934 [DEBUG] [Thread-116195] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:00:20.934 [DEBUG] [Thread-116195] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:00:20.934 [DEBUG] [Thread-116195] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:00:20.935 [DEBUG] [Thread-116195] [transport.py] [_log()] Compression: none
2025-11-03T13:00:20.935 [DEBUG] [Thread-116195] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:00:20.946 [DEBUG] [Thread-116195] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:00:20.946 [DEBUG] [Thread-116195] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:00:20.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:00:20.946 [DEBUG] [Thread-116195] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:00:20.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:00:20.947 [DEBUG] [Thread-116195] [transport.py] [_log()] userauth is OK
2025-11-03T13:00:20.947 [DEBUG] [Thread-116195] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:00:20.947 [DEBUG] [Thread-116195] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:00:20.947 [DEBUG] [Thread-116195] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:00:20.947 [DEBUG] [Thread-116195] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:00:20.957 [INFO] [Thread-116195] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:00:20.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:00:21.565 [DEBUG] [Thread-116195] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:00:21.565 [DEBUG] [Thread-116195] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:00:21.565 [DEBUG] [Thread-116195] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:00:21.605 [DEBUG] [Thread-116195] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:00:21.605 [DEBUG] [Thread-116195] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:00:21.607 [DEBUG] [Thread-116195] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:00:21.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:00:21.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:00:21.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:00:21.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:00:21.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:00:21.626 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:00:21.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:00:21.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:00:21.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:00:21.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.454618 -999.00  +25.30  28.09      9   -9.60 1 1 1 1 1   888    0 35.75 43.19 ----- 25.1 28.1 348.9 33.9 30.2 -28.8 29.4 -28.1 29.4 -28.7 29.9 -30.4
2025-11-03T13:00:21.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:00:21.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:00:21.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.454618
2025-11-03T13:00:21.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:00:21.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:00:21.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:00:21.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:00:21.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:00:21.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T12:59:47', tmtdew=44.94, humidity=4.04, cloud=0.0, wind=36.79, temperature=25.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T10:54:38.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:00:21.627 [DEBUG] [Thread-116195] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:00:21.702 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:00:21.714 [DEBUG] [Thread-116198] [transport.py] [_log()] starting thread (client mode): 0xed23670
2025-11-03T13:00:21.714 [DEBUG] [Thread-116198] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:00:21.730 [DEBUG] [Thread-116198] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:00:21.730 [INFO] [Thread-116198] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:00:21.737 [DEBUG] [Thread-116198] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:00:21.737 [DEBUG] [Thread-116198] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:00:21.737 [DEBUG] [Thread-116198] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:00:21.737 [DEBUG] [Thread-116198] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:00:21.737 [DEBUG] [Thread-116198] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:00:21.737 [DEBUG] [Thread-116198] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:00:21.737 [DEBUG] [Thread-116198] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:00:21.737 [DEBUG] [Thread-116198] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:00:21.737 [DEBUG] [Thread-116198] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:00:21.737 [DEBUG] [Thread-116198] [transport.py] [_log()] client lang: <none>
2025-11-03T13:00:21.737 [DEBUG] [Thread-116198] [transport.py] [_log()] server lang: <none>
2025-11-03T13:00:21.737 [DEBUG] [Thread-116198] [transport.py] [_log()] kex follows: False
2025-11-03T13:00:21.737 [DEBUG] [Thread-116198] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:00:21.737 [DEBUG] [Thread-116198] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:00:21.737 [DEBUG] [Thread-116198] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:00:21.737 [DEBUG] [Thread-116198] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:00:21.737 [DEBUG] [Thread-116198] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:00:21.737 [DEBUG] [Thread-116198] [transport.py] [_log()] Compression: none
2025-11-03T13:00:21.737 [DEBUG] [Thread-116198] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:00:21.796 [DEBUG] [Thread-116198] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:00:21.796 [DEBUG] [Thread-116198] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:00:21.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:00:21.796 [DEBUG] [Thread-116198] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:00:21.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:00:21.853 [DEBUG] [Thread-116198] [transport.py] [_log()] userauth is OK
2025-11-03T13:00:21.853 [DEBUG] [Thread-116198] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:00:21.853 [DEBUG] [Thread-116198] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:00:21.853 [DEBUG] [Thread-116198] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:00:21.853 [DEBUG] [Thread-116198] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:00:21.871 [INFO] [Thread-116198] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:00:21.871 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:00:21.871 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:00:22.770 [DEBUG] [Thread-116198] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:00:22.771 [DEBUG] [Thread-116198] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:00:22.822 [DEBUG] [Thread-116198] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:00:22.822 [DEBUG] [Thread-116198] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:00:22.835 [DEBUG] [Thread-116198] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:00:22.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:00:22.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:00:22.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:00:22.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:00:22.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:00:22.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:00:22.880 [DEBUG] [Thread-116198] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:00:31.990 [DEBUG] [Thread-116200 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:00:45.037 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:00:45.038 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:00:47.029 [DEBUG] [Thread-116201 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:00:52.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:00:52.900 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:00:52.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:00:53.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 0, 19), 44.81, 4.07, 0.0, 32.85, 25.34, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:00:53.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:00:19
2025-11-03T13:00:53.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:00:53.876 [DEBUG] [Thread-116202] [transport.py] [_log()] starting thread (client mode): 0xed227d0
2025-11-03T13:00:53.876 [DEBUG] [Thread-116202] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:00:53.897 [DEBUG] [Thread-116202] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:00:53.897 [INFO] [Thread-116202] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:00:53.900 [DEBUG] [Thread-116202] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:00:53.900 [DEBUG] [Thread-116202] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:00:53.900 [DEBUG] [Thread-116202] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:00:53.900 [DEBUG] [Thread-116202] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:00:53.900 [DEBUG] [Thread-116202] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:00:53.900 [DEBUG] [Thread-116202] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:00:53.900 [DEBUG] [Thread-116202] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:00:53.900 [DEBUG] [Thread-116202] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:00:53.900 [DEBUG] [Thread-116202] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:00:53.900 [DEBUG] [Thread-116202] [transport.py] [_log()] client lang: <none>
2025-11-03T13:00:53.900 [DEBUG] [Thread-116202] [transport.py] [_log()] server lang: <none>
2025-11-03T13:00:53.900 [DEBUG] [Thread-116202] [transport.py] [_log()] kex follows: False
2025-11-03T13:00:53.900 [DEBUG] [Thread-116202] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:00:53.900 [DEBUG] [Thread-116202] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:00:53.900 [DEBUG] [Thread-116202] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:00:53.900 [DEBUG] [Thread-116202] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:00:53.900 [DEBUG] [Thread-116202] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:00:53.900 [DEBUG] [Thread-116202] [transport.py] [_log()] Compression: none
2025-11-03T13:00:53.900 [DEBUG] [Thread-116202] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:00:53.916 [DEBUG] [Thread-116202] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:00:53.916 [DEBUG] [Thread-116202] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:00:53.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:00:53.916 [DEBUG] [Thread-116202] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:00:53.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:00:53.917 [DEBUG] [Thread-116202] [transport.py] [_log()] userauth is OK
2025-11-03T13:00:53.917 [DEBUG] [Thread-116202] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:00:53.917 [DEBUG] [Thread-116202] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:00:53.917 [DEBUG] [Thread-116202] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:00:53.917 [DEBUG] [Thread-116202] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:00:53.934 [INFO] [Thread-116202] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:00:53.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:00:54.562 [DEBUG] [Thread-116202] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:00:54.562 [DEBUG] [Thread-116202] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:00:54.562 [DEBUG] [Thread-116202] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:00:54.603 [DEBUG] [Thread-116202] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:00:54.603 [DEBUG] [Thread-116202] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:00:54.605 [DEBUG] [Thread-116202] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:00:54.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:00:54.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:00:54.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:00:54.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:00:54.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:00:54.624 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:00:54.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:00:54.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:00:54.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:00:54.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.458437 -999.00  +25.60  25.11      8   -9.70 1 1 1 1 1   888    0 35.33 47.73 NA 27.3 25.1 328.3 37.6 30.5 -29.6 29.6 -28.5 29.8 -27.8 30.6 -28.6
2025-11-03T13:00:54.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:00:54.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:00:54.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.458437
2025-11-03T13:00:54.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:00:54.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:00:54.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:00:54.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:00:54.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:00:54.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:00:19', tmtdew=44.81, humidity=4.07, cloud=0.0, wind=32.85, temperature=25.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:00:08.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:00:54.625 [DEBUG] [Thread-116202] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:00:54.699 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:00:54.711 [DEBUG] [Thread-116205] [transport.py] [_log()] starting thread (client mode): 0xed21660
2025-11-03T13:00:54.711 [DEBUG] [Thread-116205] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:00:54.725 [DEBUG] [Thread-116205] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:00:54.725 [INFO] [Thread-116205] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:00:54.733 [DEBUG] [Thread-116205] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:00:54.733 [DEBUG] [Thread-116205] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:00:54.733 [DEBUG] [Thread-116205] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:00:54.733 [DEBUG] [Thread-116205] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:00:54.733 [DEBUG] [Thread-116205] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:00:54.733 [DEBUG] [Thread-116205] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:00:54.733 [DEBUG] [Thread-116205] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:00:54.733 [DEBUG] [Thread-116205] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:00:54.733 [DEBUG] [Thread-116205] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:00:54.733 [DEBUG] [Thread-116205] [transport.py] [_log()] client lang: <none>
2025-11-03T13:00:54.733 [DEBUG] [Thread-116205] [transport.py] [_log()] server lang: <none>
2025-11-03T13:00:54.733 [DEBUG] [Thread-116205] [transport.py] [_log()] kex follows: False
2025-11-03T13:00:54.733 [DEBUG] [Thread-116205] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:00:54.733 [DEBUG] [Thread-116205] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:00:54.733 [DEBUG] [Thread-116205] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:00:54.733 [DEBUG] [Thread-116205] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:00:54.733 [DEBUG] [Thread-116205] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:00:54.733 [DEBUG] [Thread-116205] [transport.py] [_log()] Compression: none
2025-11-03T13:00:54.733 [DEBUG] [Thread-116205] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:00:54.789 [DEBUG] [Thread-116205] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:00:54.789 [DEBUG] [Thread-116205] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:00:54.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:00:54.790 [DEBUG] [Thread-116205] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:00:54.791 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:00:54.845 [DEBUG] [Thread-116205] [transport.py] [_log()] userauth is OK
2025-11-03T13:00:54.846 [DEBUG] [Thread-116205] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:00:54.846 [DEBUG] [Thread-116205] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:00:54.846 [DEBUG] [Thread-116205] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:00:54.846 [DEBUG] [Thread-116205] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:00:54.865 [INFO] [Thread-116205] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:00:54.865 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:00:54.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:00:55.725 [DEBUG] [Thread-116205] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:00:55.725 [DEBUG] [Thread-116205] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:00:55.773 [DEBUG] [Thread-116205] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:00:55.773 [DEBUG] [Thread-116205] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:00:55.782 [DEBUG] [Thread-116205] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:00:55.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:00:55.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:00:55.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:00:55.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:00:55.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:00:55.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:00:55.819 [DEBUG] [Thread-116205] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:01:02.061 [DEBUG] [Thread-116207 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:01:02.932 [DEBUG] [Thread-116208 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:01:17.100 [DEBUG] [Thread-116209 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:01:25.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:01:25.841 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:01:25.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:01:26.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 0, 51), 44.53, 4.04, 0.0, 27.56, 25.32, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:01:26.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:00:51
2025-11-03T13:01:26.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:01:26.841 [DEBUG] [Thread-116210] [transport.py] [_log()] starting thread (client mode): 0xed23c10
2025-11-03T13:01:26.841 [DEBUG] [Thread-116210] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:01:26.862 [DEBUG] [Thread-116210] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:01:26.862 [INFO] [Thread-116210] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:01:26.865 [DEBUG] [Thread-116210] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:01:26.865 [DEBUG] [Thread-116210] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:01:26.865 [DEBUG] [Thread-116210] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:01:26.865 [DEBUG] [Thread-116210] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:01:26.865 [DEBUG] [Thread-116210] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:01:26.866 [DEBUG] [Thread-116210] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:01:26.866 [DEBUG] [Thread-116210] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:01:26.866 [DEBUG] [Thread-116210] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:01:26.866 [DEBUG] [Thread-116210] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:01:26.866 [DEBUG] [Thread-116210] [transport.py] [_log()] client lang: <none>
2025-11-03T13:01:26.866 [DEBUG] [Thread-116210] [transport.py] [_log()] server lang: <none>
2025-11-03T13:01:26.866 [DEBUG] [Thread-116210] [transport.py] [_log()] kex follows: False
2025-11-03T13:01:26.866 [DEBUG] [Thread-116210] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:01:26.866 [DEBUG] [Thread-116210] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:01:26.866 [DEBUG] [Thread-116210] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:01:26.866 [DEBUG] [Thread-116210] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:01:26.866 [DEBUG] [Thread-116210] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:01:26.866 [DEBUG] [Thread-116210] [transport.py] [_log()] Compression: none
2025-11-03T13:01:26.866 [DEBUG] [Thread-116210] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:01:26.881 [DEBUG] [Thread-116210] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:01:26.881 [DEBUG] [Thread-116210] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:01:26.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:01:26.881 [DEBUG] [Thread-116210] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:01:26.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:01:26.881 [DEBUG] [Thread-116210] [transport.py] [_log()] userauth is OK
2025-11-03T13:01:26.881 [DEBUG] [Thread-116210] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:01:26.881 [DEBUG] [Thread-116210] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:01:26.881 [DEBUG] [Thread-116210] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:01:26.882 [DEBUG] [Thread-116210] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:01:26.891 [INFO] [Thread-116210] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:01:26.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:01:27.534 [DEBUG] [Thread-116210] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:01:27.534 [DEBUG] [Thread-116210] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:01:27.534 [DEBUG] [Thread-116210] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:01:27.575 [DEBUG] [Thread-116210] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:01:27.575 [DEBUG] [Thread-116210] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:01:27.578 [DEBUG] [Thread-116210] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:01:27.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:01:27.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:01:27.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:01:27.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:01:27.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:01:27.596 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:01:27.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:01:27.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:01:27.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:01:27.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.458784 -999.00  +25.30  21.52      8  -10.00 1 1 1 1 1   888    0 37.30 49.41 NA 24.4 21.5 357.4 39.8 30.4 -29.9 29.6 -29.3 29.8 -30.8 30.6 -29.3
2025-11-03T13:01:27.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:01:27.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:01:27.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.458784
2025-11-03T13:01:27.605 [DEBUG] [Thread-116210] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:01:27.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:01:27.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:01:27.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:01:27.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:01:27.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:01:27.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:00:51', tmtdew=44.53, humidity=4.04, cloud=0.0, wind=27.56, temperature=25.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:00:38.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:01:27.678 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:01:27.690 [DEBUG] [Thread-116213] [transport.py] [_log()] starting thread (client mode): 0xed214b0
2025-11-03T13:01:27.690 [DEBUG] [Thread-116213] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:01:27.705 [DEBUG] [Thread-116213] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:01:27.705 [INFO] [Thread-116213] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:01:27.712 [DEBUG] [Thread-116213] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:01:27.712 [DEBUG] [Thread-116213] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:01:27.712 [DEBUG] [Thread-116213] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:01:27.712 [DEBUG] [Thread-116213] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:01:27.712 [DEBUG] [Thread-116213] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:01:27.712 [DEBUG] [Thread-116213] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:01:27.712 [DEBUG] [Thread-116213] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:01:27.712 [DEBUG] [Thread-116213] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:01:27.712 [DEBUG] [Thread-116213] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:01:27.712 [DEBUG] [Thread-116213] [transport.py] [_log()] client lang: <none>
2025-11-03T13:01:27.712 [DEBUG] [Thread-116213] [transport.py] [_log()] server lang: <none>
2025-11-03T13:01:27.712 [DEBUG] [Thread-116213] [transport.py] [_log()] kex follows: False
2025-11-03T13:01:27.712 [DEBUG] [Thread-116213] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:01:27.712 [DEBUG] [Thread-116213] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:01:27.712 [DEBUG] [Thread-116213] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:01:27.712 [DEBUG] [Thread-116213] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:01:27.712 [DEBUG] [Thread-116213] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:01:27.712 [DEBUG] [Thread-116213] [transport.py] [_log()] Compression: none
2025-11-03T13:01:27.712 [DEBUG] [Thread-116213] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:01:27.772 [DEBUG] [Thread-116213] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:01:27.772 [DEBUG] [Thread-116213] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:01:27.772 [DEBUG] [Thread-116213] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:01:27.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:01:27.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:01:27.829 [DEBUG] [Thread-116213] [transport.py] [_log()] userauth is OK
2025-11-03T13:01:27.829 [DEBUG] [Thread-116213] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:01:27.829 [DEBUG] [Thread-116213] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:01:27.829 [DEBUG] [Thread-116213] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:01:27.829 [DEBUG] [Thread-116213] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:01:27.843 [INFO] [Thread-116213] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:01:27.844 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:01:27.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:01:28.701 [DEBUG] [Thread-116213] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:01:28.701 [DEBUG] [Thread-116213] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:01:28.749 [DEBUG] [Thread-116213] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:01:28.749 [DEBUG] [Thread-116213] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:01:28.758 [DEBUG] [Thread-116213] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:01:28.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:01:28.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:01:28.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:01:28.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:01:28.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:01:28.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:01:28.790 [DEBUG] [Thread-116213] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:01:32.136 [DEBUG] [Thread-116215 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:01:45.178 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:01:45.179 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:01:47.203 [DEBUG] [Thread-116216 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:01:58.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:01:58.812 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:01:58.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:01:59.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 1, 24), 44.76, 3.95, 0.0, 29.69, 25.29, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:01:59.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:01:24
2025-11-03T13:01:59.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:01:59.793 [DEBUG] [Thread-116217] [transport.py] [_log()] starting thread (client mode): 0xed23a30
2025-11-03T13:01:59.793 [DEBUG] [Thread-116217] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:01:59.814 [DEBUG] [Thread-116217] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:01:59.814 [INFO] [Thread-116217] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:01:59.817 [DEBUG] [Thread-116217] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:01:59.817 [DEBUG] [Thread-116217] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:01:59.817 [DEBUG] [Thread-116217] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:01:59.817 [DEBUG] [Thread-116217] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:01:59.817 [DEBUG] [Thread-116217] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:01:59.817 [DEBUG] [Thread-116217] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:01:59.817 [DEBUG] [Thread-116217] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:01:59.817 [DEBUG] [Thread-116217] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:01:59.817 [DEBUG] [Thread-116217] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:01:59.817 [DEBUG] [Thread-116217] [transport.py] [_log()] client lang: <none>
2025-11-03T13:01:59.817 [DEBUG] [Thread-116217] [transport.py] [_log()] server lang: <none>
2025-11-03T13:01:59.817 [DEBUG] [Thread-116217] [transport.py] [_log()] kex follows: False
2025-11-03T13:01:59.817 [DEBUG] [Thread-116217] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:01:59.818 [DEBUG] [Thread-116217] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:01:59.818 [DEBUG] [Thread-116217] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:01:59.818 [DEBUG] [Thread-116217] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:01:59.818 [DEBUG] [Thread-116217] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:01:59.818 [DEBUG] [Thread-116217] [transport.py] [_log()] Compression: none
2025-11-03T13:01:59.818 [DEBUG] [Thread-116217] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:01:59.833 [DEBUG] [Thread-116217] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:01:59.833 [DEBUG] [Thread-116217] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:01:59.833 [DEBUG] [Thread-116217] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:01:59.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:01:59.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:01:59.834 [DEBUG] [Thread-116217] [transport.py] [_log()] userauth is OK
2025-11-03T13:01:59.834 [DEBUG] [Thread-116217] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:01:59.834 [DEBUG] [Thread-116217] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:01:59.834 [DEBUG] [Thread-116217] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:01:59.834 [DEBUG] [Thread-116217] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:01:59.843 [INFO] [Thread-116217] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:01:59.843 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:02:00.464 [DEBUG] [Thread-116217] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:02:00.464 [DEBUG] [Thread-116217] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:02:00.464 [DEBUG] [Thread-116217] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:02:00.506 [DEBUG] [Thread-116217] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:02:00.506 [DEBUG] [Thread-116217] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:02:00.508 [DEBUG] [Thread-116217] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:02:00.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:02:00.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:02:00.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:02:00.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:02:00.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:02:00.538 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:02:00.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:02:00.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:02:00.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:02:00.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.459131 -999.00  +25.10  29.07      8  -10.10 1 1 1 1 1   888    0 35.83 50.77 ----- 32.2 29.1 325.4 43.6 30.4 -33.1 29.5 -30.9 29.8 -28.5 30.4 -29.1
2025-11-03T13:02:00.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:02:00.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:02:00.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.459131
2025-11-03T13:02:00.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:02:00.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:02:00.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:02:00.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:02:00.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:02:00.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:01:24', tmtdew=44.76, humidity=3.95, cloud=0.0, wind=29.69, temperature=25.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:01:08.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:02:00.540 [DEBUG] [Thread-116217] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:02:00.620 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:02:00.632 [DEBUG] [Thread-116220] [transport.py] [_log()] starting thread (client mode): 0x81bbe80
2025-11-03T13:02:00.632 [DEBUG] [Thread-116220] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:02:00.646 [DEBUG] [Thread-116220] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:02:00.647 [INFO] [Thread-116220] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:02:00.654 [DEBUG] [Thread-116220] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:02:00.654 [DEBUG] [Thread-116220] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:02:00.655 [DEBUG] [Thread-116220] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:02:00.655 [DEBUG] [Thread-116220] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:02:00.655 [DEBUG] [Thread-116220] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:02:00.655 [DEBUG] [Thread-116220] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:02:00.655 [DEBUG] [Thread-116220] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:02:00.655 [DEBUG] [Thread-116220] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:02:00.655 [DEBUG] [Thread-116220] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:02:00.655 [DEBUG] [Thread-116220] [transport.py] [_log()] client lang: <none>
2025-11-03T13:02:00.655 [DEBUG] [Thread-116220] [transport.py] [_log()] server lang: <none>
2025-11-03T13:02:00.656 [DEBUG] [Thread-116220] [transport.py] [_log()] kex follows: False
2025-11-03T13:02:00.656 [DEBUG] [Thread-116220] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:02:00.656 [DEBUG] [Thread-116220] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:02:00.656 [DEBUG] [Thread-116220] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:02:00.656 [DEBUG] [Thread-116220] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:02:00.656 [DEBUG] [Thread-116220] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:02:00.656 [DEBUG] [Thread-116220] [transport.py] [_log()] Compression: none
2025-11-03T13:02:00.657 [DEBUG] [Thread-116220] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:02:00.715 [DEBUG] [Thread-116220] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:02:00.715 [DEBUG] [Thread-116220] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:02:00.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:02:00.716 [DEBUG] [Thread-116220] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:02:00.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:02:00.773 [DEBUG] [Thread-116220] [transport.py] [_log()] userauth is OK
2025-11-03T13:02:00.774 [DEBUG] [Thread-116220] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:02:00.774 [DEBUG] [Thread-116220] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:02:00.774 [DEBUG] [Thread-116220] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:02:00.774 [DEBUG] [Thread-116220] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:02:00.794 [INFO] [Thread-116220] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:02:00.795 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:02:00.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:02:01.630 [DEBUG] [Thread-116220] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:02:01.630 [DEBUG] [Thread-116220] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:02:01.678 [DEBUG] [Thread-116220] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:02:01.678 [DEBUG] [Thread-116220] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:02:01.687 [DEBUG] [Thread-116220] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:02:01.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:02:01.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:02:01.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:02:01.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:02:01.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:02:01.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:02:01.719 [DEBUG] [Thread-116220] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:02:02.241 [DEBUG] [Thread-116222 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:02:03.012 [DEBUG] [Thread-116223 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:02:17.279 [DEBUG] [Thread-116224 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:02:31.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:02:31.735 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:02:31.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:02:32.309 [DEBUG] [Thread-116225 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:02:32.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 1, 56), 44.83, 3.95, 0.0, 30.44, 25.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:02:32.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:01:56
2025-11-03T13:02:32.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:02:32.717 [DEBUG] [Thread-116226] [transport.py] [_log()] starting thread (client mode): 0x81b8190
2025-11-03T13:02:32.717 [DEBUG] [Thread-116226] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:02:32.736 [DEBUG] [Thread-116226] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:02:32.736 [INFO] [Thread-116226] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:02:32.739 [DEBUG] [Thread-116226] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:02:32.739 [DEBUG] [Thread-116226] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:02:32.739 [DEBUG] [Thread-116226] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:02:32.739 [DEBUG] [Thread-116226] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:02:32.739 [DEBUG] [Thread-116226] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:02:32.739 [DEBUG] [Thread-116226] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:02:32.739 [DEBUG] [Thread-116226] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:02:32.739 [DEBUG] [Thread-116226] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:02:32.739 [DEBUG] [Thread-116226] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:02:32.740 [DEBUG] [Thread-116226] [transport.py] [_log()] client lang: <none>
2025-11-03T13:02:32.740 [DEBUG] [Thread-116226] [transport.py] [_log()] server lang: <none>
2025-11-03T13:02:32.740 [DEBUG] [Thread-116226] [transport.py] [_log()] kex follows: False
2025-11-03T13:02:32.740 [DEBUG] [Thread-116226] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:02:32.740 [DEBUG] [Thread-116226] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:02:32.740 [DEBUG] [Thread-116226] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:02:32.740 [DEBUG] [Thread-116226] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:02:32.740 [DEBUG] [Thread-116226] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:02:32.740 [DEBUG] [Thread-116226] [transport.py] [_log()] Compression: none
2025-11-03T13:02:32.740 [DEBUG] [Thread-116226] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:02:32.756 [DEBUG] [Thread-116226] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:02:32.756 [DEBUG] [Thread-116226] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:02:32.757 [DEBUG] [Thread-116226] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:02:32.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:02:32.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:02:32.758 [DEBUG] [Thread-116226] [transport.py] [_log()] userauth is OK
2025-11-03T13:02:32.758 [DEBUG] [Thread-116226] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:02:32.758 [DEBUG] [Thread-116226] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:02:32.758 [DEBUG] [Thread-116226] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:02:32.758 [DEBUG] [Thread-116226] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:02:32.771 [INFO] [Thread-116226] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:02:32.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:02:33.388 [DEBUG] [Thread-116226] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:02:33.389 [DEBUG] [Thread-116226] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:02:33.389 [DEBUG] [Thread-116226] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:02:33.430 [DEBUG] [Thread-116226] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:02:33.430 [DEBUG] [Thread-116226] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:02:33.432 [DEBUG] [Thread-116226] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:02:33.443 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:02:33.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:02:33.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:02:33.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:02:33.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:02:33.450 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:02:33.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:02:33.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:02:33.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:02:33.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.459479 -999.00  +24.70  25.91      8  -10.40 1 1 1 1 1   888    0 36.41 46.92 ----- 26.0 25.9 335.2 40.0 30.3 -30.1 29.4 -29.3 29.6 -31.7 30.3 -28.5
2025-11-03T13:02:33.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:02:33.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:02:33.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.459479
2025-11-03T13:02:33.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:02:33.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:02:33.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:02:33.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:02:33.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:02:33.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:01:56', tmtdew=44.83, humidity=3.95, cloud=0.0, wind=30.44, temperature=25.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:01:38.986', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:02:33.452 [DEBUG] [Thread-116226] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:02:33.528 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:02:33.541 [DEBUG] [Thread-116229] [transport.py] [_log()] starting thread (client mode): 0x81bbee0
2025-11-03T13:02:33.541 [DEBUG] [Thread-116229] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:02:33.555 [DEBUG] [Thread-116229] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:02:33.555 [INFO] [Thread-116229] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:02:33.563 [DEBUG] [Thread-116229] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:02:33.563 [DEBUG] [Thread-116229] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:02:33.563 [DEBUG] [Thread-116229] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:02:33.563 [DEBUG] [Thread-116229] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:02:33.563 [DEBUG] [Thread-116229] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:02:33.563 [DEBUG] [Thread-116229] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:02:33.564 [DEBUG] [Thread-116229] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:02:33.564 [DEBUG] [Thread-116229] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:02:33.564 [DEBUG] [Thread-116229] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:02:33.564 [DEBUG] [Thread-116229] [transport.py] [_log()] client lang: <none>
2025-11-03T13:02:33.564 [DEBUG] [Thread-116229] [transport.py] [_log()] server lang: <none>
2025-11-03T13:02:33.564 [DEBUG] [Thread-116229] [transport.py] [_log()] kex follows: False
2025-11-03T13:02:33.564 [DEBUG] [Thread-116229] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:02:33.564 [DEBUG] [Thread-116229] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:02:33.564 [DEBUG] [Thread-116229] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:02:33.564 [DEBUG] [Thread-116229] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:02:33.564 [DEBUG] [Thread-116229] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:02:33.564 [DEBUG] [Thread-116229] [transport.py] [_log()] Compression: none
2025-11-03T13:02:33.564 [DEBUG] [Thread-116229] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:02:33.620 [DEBUG] [Thread-116229] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:02:33.620 [DEBUG] [Thread-116229] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:02:33.620 [DEBUG] [Thread-116229] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:02:33.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:02:33.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:02:33.677 [DEBUG] [Thread-116229] [transport.py] [_log()] userauth is OK
2025-11-03T13:02:33.677 [DEBUG] [Thread-116229] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:02:33.677 [DEBUG] [Thread-116229] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:02:33.677 [DEBUG] [Thread-116229] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:02:33.677 [DEBUG] [Thread-116229] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:02:33.691 [INFO] [Thread-116229] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:02:33.691 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:02:33.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:02:34.540 [DEBUG] [Thread-116229] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:02:34.540 [DEBUG] [Thread-116229] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:02:34.588 [DEBUG] [Thread-116229] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:02:34.588 [DEBUG] [Thread-116229] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:02:34.597 [DEBUG] [Thread-116229] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:02:34.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:02:34.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:02:34.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:02:34.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:02:34.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:02:34.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:02:34.632 [DEBUG] [Thread-116229] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:02:45.319 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:02:45.320 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:02:47.354 [DEBUG] [Thread-116231 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:03:02.404 [DEBUG] [Thread-116232 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:03:03.061 [DEBUG] [Thread-116233 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:03:04.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:03:04.655 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:03:04.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:03:05.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 3, 1), 44.67, 3.99, 0.0, 26.15, 25.19, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:03:05.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:03:01
2025-11-03T13:03:05.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:03:05.644 [DEBUG] [Thread-116234] [transport.py] [_log()] starting thread (client mode): 0xed219f0
2025-11-03T13:03:05.644 [DEBUG] [Thread-116234] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:03:05.665 [DEBUG] [Thread-116234] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:03:05.665 [INFO] [Thread-116234] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:03:05.677 [DEBUG] [Thread-116234] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:03:05.677 [DEBUG] [Thread-116234] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:03:05.677 [DEBUG] [Thread-116234] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:03:05.677 [DEBUG] [Thread-116234] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:03:05.677 [DEBUG] [Thread-116234] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:03:05.677 [DEBUG] [Thread-116234] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:03:05.677 [DEBUG] [Thread-116234] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:03:05.677 [DEBUG] [Thread-116234] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:03:05.677 [DEBUG] [Thread-116234] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:03:05.677 [DEBUG] [Thread-116234] [transport.py] [_log()] client lang: <none>
2025-11-03T13:03:05.677 [DEBUG] [Thread-116234] [transport.py] [_log()] server lang: <none>
2025-11-03T13:03:05.678 [DEBUG] [Thread-116234] [transport.py] [_log()] kex follows: False
2025-11-03T13:03:05.678 [DEBUG] [Thread-116234] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:03:05.678 [DEBUG] [Thread-116234] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:03:05.678 [DEBUG] [Thread-116234] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:03:05.678 [DEBUG] [Thread-116234] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:03:05.678 [DEBUG] [Thread-116234] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:03:05.678 [DEBUG] [Thread-116234] [transport.py] [_log()] Compression: none
2025-11-03T13:03:05.678 [DEBUG] [Thread-116234] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:03:05.688 [DEBUG] [Thread-116234] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:03:05.688 [DEBUG] [Thread-116234] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:03:05.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:03:05.688 [DEBUG] [Thread-116234] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:03:05.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:03:05.688 [DEBUG] [Thread-116234] [transport.py] [_log()] userauth is OK
2025-11-03T13:03:05.689 [DEBUG] [Thread-116234] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:03:05.689 [DEBUG] [Thread-116234] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:03:05.689 [DEBUG] [Thread-116234] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:03:05.689 [DEBUG] [Thread-116234] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:03:05.704 [INFO] [Thread-116234] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:03:05.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:03:06.356 [DEBUG] [Thread-116234] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:03:06.357 [DEBUG] [Thread-116234] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:03:06.357 [DEBUG] [Thread-116234] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:03:06.398 [DEBUG] [Thread-116234] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:03:06.398 [DEBUG] [Thread-116234] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:03:06.402 [DEBUG] [Thread-116234] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:03:06.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:03:06.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:03:06.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:03:06.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:03:06.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:03:06.427 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:03:06.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:03:06.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:03:06.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:03:06.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.460173 -999.00  +24.90  23.96      8  -10.20 1 1 1 1 1   888    0 36.60 40.69 ----- 24.3 24.0 28.2 34.8 30.1 -29.6 29.3 -29.2 29.5 -28.6 30.2 -27.9
2025-11-03T13:03:06.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:03:06.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:03:06.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.460173
2025-11-03T13:03:06.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:03:06.429 [DEBUG] [Thread-116234] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:03:06.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:03:06.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:03:06.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:03:06.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:03:06.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:03:01', tmtdew=44.67, humidity=3.99, cloud=0.0, wind=26.15, temperature=25.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:02:38.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:03:06.511 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:03:06.524 [DEBUG] [Thread-116237] [transport.py] [_log()] starting thread (client mode): 0xed21810
2025-11-03T13:03:06.524 [DEBUG] [Thread-116237] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:03:06.538 [DEBUG] [Thread-116237] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:03:06.538 [INFO] [Thread-116237] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:03:06.546 [DEBUG] [Thread-116237] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:03:06.546 [DEBUG] [Thread-116237] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:03:06.546 [DEBUG] [Thread-116237] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:03:06.546 [DEBUG] [Thread-116237] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:03:06.546 [DEBUG] [Thread-116237] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:03:06.546 [DEBUG] [Thread-116237] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:03:06.546 [DEBUG] [Thread-116237] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:03:06.546 [DEBUG] [Thread-116237] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:03:06.546 [DEBUG] [Thread-116237] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:03:06.546 [DEBUG] [Thread-116237] [transport.py] [_log()] client lang: <none>
2025-11-03T13:03:06.547 [DEBUG] [Thread-116237] [transport.py] [_log()] server lang: <none>
2025-11-03T13:03:06.547 [DEBUG] [Thread-116237] [transport.py] [_log()] kex follows: False
2025-11-03T13:03:06.547 [DEBUG] [Thread-116237] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:03:06.547 [DEBUG] [Thread-116237] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:03:06.547 [DEBUG] [Thread-116237] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:03:06.547 [DEBUG] [Thread-116237] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:03:06.556 [DEBUG] [Thread-116237] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:03:06.556 [DEBUG] [Thread-116237] [transport.py] [_log()] Compression: none
2025-11-03T13:03:06.556 [DEBUG] [Thread-116237] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:03:06.605 [DEBUG] [Thread-116237] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:03:06.606 [DEBUG] [Thread-116237] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:03:06.606 [DEBUG] [Thread-116237] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:03:06.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:03:06.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:03:06.662 [DEBUG] [Thread-116237] [transport.py] [_log()] userauth is OK
2025-11-03T13:03:06.662 [DEBUG] [Thread-116237] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:03:06.662 [DEBUG] [Thread-116237] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:03:06.662 [DEBUG] [Thread-116237] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:03:06.662 [DEBUG] [Thread-116237] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:03:06.681 [INFO] [Thread-116237] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:03:06.681 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:03:06.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:03:07.512 [DEBUG] [Thread-116237] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:03:07.512 [DEBUG] [Thread-116237] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:03:07.560 [DEBUG] [Thread-116237] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:03:07.560 [DEBUG] [Thread-116237] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:03:07.568 [DEBUG] [Thread-116237] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:03:07.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:03:07.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:03:07.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:03:07.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:03:07.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:03:07.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:03:07.600 [DEBUG] [Thread-116237] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:03:17.431 [DEBUG] [Thread-116239 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:03:32.474 [DEBUG] [Thread-116240 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:03:37.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:03:37.622 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:03:37.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:03:38.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 3, 33), 44.73, 4.0, 0.0, 25.3, 24.77, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:03:38.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:03:33
2025-11-03T13:03:38.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:03:38.582 [DEBUG] [Thread-116241] [transport.py] [_log()] starting thread (client mode): 0xed22e90
2025-11-03T13:03:38.583 [DEBUG] [Thread-116241] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:03:38.603 [DEBUG] [Thread-116241] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:03:38.603 [INFO] [Thread-116241] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:03:38.606 [DEBUG] [Thread-116241] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:03:38.606 [DEBUG] [Thread-116241] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:03:38.606 [DEBUG] [Thread-116241] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:03:38.606 [DEBUG] [Thread-116241] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:03:38.606 [DEBUG] [Thread-116241] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:03:38.606 [DEBUG] [Thread-116241] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:03:38.606 [DEBUG] [Thread-116241] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:03:38.606 [DEBUG] [Thread-116241] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:03:38.606 [DEBUG] [Thread-116241] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:03:38.606 [DEBUG] [Thread-116241] [transport.py] [_log()] client lang: <none>
2025-11-03T13:03:38.606 [DEBUG] [Thread-116241] [transport.py] [_log()] server lang: <none>
2025-11-03T13:03:38.606 [DEBUG] [Thread-116241] [transport.py] [_log()] kex follows: False
2025-11-03T13:03:38.607 [DEBUG] [Thread-116241] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:03:38.607 [DEBUG] [Thread-116241] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:03:38.607 [DEBUG] [Thread-116241] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:03:38.607 [DEBUG] [Thread-116241] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:03:38.607 [DEBUG] [Thread-116241] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:03:38.607 [DEBUG] [Thread-116241] [transport.py] [_log()] Compression: none
2025-11-03T13:03:38.607 [DEBUG] [Thread-116241] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:03:38.626 [DEBUG] [Thread-116241] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:03:38.627 [DEBUG] [Thread-116241] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:03:38.628 [DEBUG] [Thread-116241] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:03:38.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:03:38.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:03:38.629 [DEBUG] [Thread-116241] [transport.py] [_log()] userauth is OK
2025-11-03T13:03:38.630 [DEBUG] [Thread-116241] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:03:38.630 [DEBUG] [Thread-116241] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:03:38.630 [DEBUG] [Thread-116241] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:03:38.630 [DEBUG] [Thread-116241] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:03:38.666 [INFO] [Thread-116241] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:03:38.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:03:39.319 [DEBUG] [Thread-116241] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:03:39.320 [DEBUG] [Thread-116241] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:03:39.320 [DEBUG] [Thread-116241] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:03:39.361 [DEBUG] [Thread-116241] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:03:39.361 [DEBUG] [Thread-116241] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:03:39.364 [DEBUG] [Thread-116241] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:03:39.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:03:39.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:03:39.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:03:39.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:03:39.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:03:39.389 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:03:39.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:03:39.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:03:39.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:03:39.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.460520 -999.00  +25.60  17.42      8   -9.90 1 1 1 1 1   888    0 35.85 41.19 ----- 21.4 17.4 4.3 25.8 30.3 -29.4 29.5 -28.1 29.7 -28.5 30.5 -28.4
2025-11-03T13:03:39.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:03:39.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:03:39.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.460520
2025-11-03T13:03:39.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:03:39.398 [DEBUG] [Thread-116241] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:03:39.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:03:39.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:03:39.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:03:39.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:03:39.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:03:33', tmtdew=44.73, humidity=4.0, cloud=0.0, wind=25.3, temperature=24.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:03:08.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:03:39.486 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:03:39.498 [DEBUG] [Thread-116244] [transport.py] [_log()] starting thread (client mode): 0x81bb010
2025-11-03T13:03:39.498 [DEBUG] [Thread-116244] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:03:39.522 [DEBUG] [Thread-116244] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:03:39.523 [INFO] [Thread-116244] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:03:39.530 [DEBUG] [Thread-116244] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:03:39.530 [DEBUG] [Thread-116244] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:03:39.530 [DEBUG] [Thread-116244] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:03:39.530 [DEBUG] [Thread-116244] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:03:39.530 [DEBUG] [Thread-116244] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:03:39.531 [DEBUG] [Thread-116244] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:03:39.531 [DEBUG] [Thread-116244] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:03:39.531 [DEBUG] [Thread-116244] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:03:39.531 [DEBUG] [Thread-116244] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:03:39.531 [DEBUG] [Thread-116244] [transport.py] [_log()] client lang: <none>
2025-11-03T13:03:39.531 [DEBUG] [Thread-116244] [transport.py] [_log()] server lang: <none>
2025-11-03T13:03:39.531 [DEBUG] [Thread-116244] [transport.py] [_log()] kex follows: False
2025-11-03T13:03:39.531 [DEBUG] [Thread-116244] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:03:39.531 [DEBUG] [Thread-116244] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:03:39.531 [DEBUG] [Thread-116244] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:03:39.531 [DEBUG] [Thread-116244] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:03:39.531 [DEBUG] [Thread-116244] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:03:39.531 [DEBUG] [Thread-116244] [transport.py] [_log()] Compression: none
2025-11-03T13:03:39.531 [DEBUG] [Thread-116244] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:03:39.589 [DEBUG] [Thread-116244] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:03:39.590 [DEBUG] [Thread-116244] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:03:39.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:03:39.600 [DEBUG] [Thread-116244] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:03:39.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:03:39.645 [DEBUG] [Thread-116244] [transport.py] [_log()] userauth is OK
2025-11-03T13:03:39.646 [DEBUG] [Thread-116244] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:03:39.646 [DEBUG] [Thread-116244] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:03:39.646 [DEBUG] [Thread-116244] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:03:39.646 [DEBUG] [Thread-116244] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:03:39.665 [INFO] [Thread-116244] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:03:39.666 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:03:39.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:03:40.510 [DEBUG] [Thread-116244] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:03:40.510 [DEBUG] [Thread-116244] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:03:40.558 [DEBUG] [Thread-116244] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:03:40.558 [DEBUG] [Thread-116244] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:03:40.567 [DEBUG] [Thread-116244] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:03:40.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:03:40.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:03:40.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:03:40.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:03:40.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:03:40.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:03:40.603 [DEBUG] [Thread-116244] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:03:45.460 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:03:45.461 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:03:47.506 [DEBUG] [Thread-116246 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:04:02.545 [DEBUG] [Thread-116247 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:04:03.145 [DEBUG] [Thread-116248 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:04:10.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:04:10.625 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:04:10.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:04:11.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 4, 6), 44.89, 3.95, 0.0, 21.28, 24.82, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:04:11.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:04:06
2025-11-03T13:04:11.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:04:11.610 [DEBUG] [Thread-116249] [transport.py] [_log()] starting thread (client mode): 0xed22ce0
2025-11-03T13:04:11.611 [DEBUG] [Thread-116249] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:04:11.634 [DEBUG] [Thread-116249] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:04:11.634 [INFO] [Thread-116249] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:04:11.637 [DEBUG] [Thread-116249] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:04:11.637 [DEBUG] [Thread-116249] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:04:11.637 [DEBUG] [Thread-116249] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:04:11.637 [DEBUG] [Thread-116249] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:04:11.637 [DEBUG] [Thread-116249] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:04:11.637 [DEBUG] [Thread-116249] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:04:11.637 [DEBUG] [Thread-116249] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:04:11.638 [DEBUG] [Thread-116249] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:04:11.638 [DEBUG] [Thread-116249] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:04:11.638 [DEBUG] [Thread-116249] [transport.py] [_log()] client lang: <none>
2025-11-03T13:04:11.638 [DEBUG] [Thread-116249] [transport.py] [_log()] server lang: <none>
2025-11-03T13:04:11.638 [DEBUG] [Thread-116249] [transport.py] [_log()] kex follows: False
2025-11-03T13:04:11.638 [DEBUG] [Thread-116249] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:04:11.638 [DEBUG] [Thread-116249] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:04:11.638 [DEBUG] [Thread-116249] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:04:11.638 [DEBUG] [Thread-116249] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:04:11.638 [DEBUG] [Thread-116249] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:04:11.638 [DEBUG] [Thread-116249] [transport.py] [_log()] Compression: none
2025-11-03T13:04:11.638 [DEBUG] [Thread-116249] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:04:11.657 [DEBUG] [Thread-116249] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:04:11.658 [DEBUG] [Thread-116249] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:04:11.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:04:11.659 [DEBUG] [Thread-116249] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:04:11.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:04:11.661 [DEBUG] [Thread-116249] [transport.py] [_log()] userauth is OK
2025-11-03T13:04:11.661 [DEBUG] [Thread-116249] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:04:11.661 [DEBUG] [Thread-116249] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:04:11.661 [DEBUG] [Thread-116249] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:04:11.662 [DEBUG] [Thread-116249] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:04:11.686 [INFO] [Thread-116249] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:04:11.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:04:12.329 [DEBUG] [Thread-116249] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:04:12.329 [DEBUG] [Thread-116249] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:04:12.329 [DEBUG] [Thread-116249] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:04:12.370 [DEBUG] [Thread-116249] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:04:12.370 [DEBUG] [Thread-116249] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:04:12.373 [DEBUG] [Thread-116249] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:04:12.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:04:12.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:04:12.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:04:12.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:04:12.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:04:12.394 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:04:12.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:04:12.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:04:12.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:04:12.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.460867 -999.00  +25.60  14.61      8  -10.20 1 1 1 1 1   888    0 36.16 44.66 ----- 14.8 14.6 7.1 25.9 30.3 -31.1 29.5 -29.4 29.8 -27.7 30.4 -28.1
2025-11-03T13:04:12.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:04:12.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:04:12.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.460867
2025-11-03T13:04:12.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:04:12.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:04:12.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:04:12.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:04:12.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:04:12.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:04:06', tmtdew=44.89, humidity=3.95, cloud=0.0, wind=21.28, temperature=24.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:03:38.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:04:12.398 [DEBUG] [Thread-116249] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:04:12.488 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:04:12.501 [DEBUG] [Thread-116252] [transport.py] [_log()] starting thread (client mode): 0xed22230
2025-11-03T13:04:12.501 [DEBUG] [Thread-116252] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:04:12.515 [DEBUG] [Thread-116252] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:04:12.515 [INFO] [Thread-116252] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:04:12.523 [DEBUG] [Thread-116252] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:04:12.523 [DEBUG] [Thread-116252] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:04:12.523 [DEBUG] [Thread-116252] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:04:12.524 [DEBUG] [Thread-116252] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:04:12.524 [DEBUG] [Thread-116252] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:04:12.524 [DEBUG] [Thread-116252] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:04:12.524 [DEBUG] [Thread-116252] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:04:12.524 [DEBUG] [Thread-116252] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:04:12.524 [DEBUG] [Thread-116252] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:04:12.524 [DEBUG] [Thread-116252] [transport.py] [_log()] client lang: <none>
2025-11-03T13:04:12.524 [DEBUG] [Thread-116252] [transport.py] [_log()] server lang: <none>
2025-11-03T13:04:12.524 [DEBUG] [Thread-116252] [transport.py] [_log()] kex follows: False
2025-11-03T13:04:12.524 [DEBUG] [Thread-116252] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:04:12.524 [DEBUG] [Thread-116252] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:04:12.524 [DEBUG] [Thread-116252] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:04:12.524 [DEBUG] [Thread-116252] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:04:12.524 [DEBUG] [Thread-116252] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:04:12.524 [DEBUG] [Thread-116252] [transport.py] [_log()] Compression: none
2025-11-03T13:04:12.524 [DEBUG] [Thread-116252] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:04:12.581 [DEBUG] [Thread-116252] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:04:12.582 [DEBUG] [Thread-116252] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:04:12.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:04:12.582 [DEBUG] [Thread-116252] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:04:12.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:04:12.638 [DEBUG] [Thread-116252] [transport.py] [_log()] userauth is OK
2025-11-03T13:04:12.638 [DEBUG] [Thread-116252] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:04:12.638 [DEBUG] [Thread-116252] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:04:12.638 [DEBUG] [Thread-116252] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:04:12.638 [DEBUG] [Thread-116252] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:04:12.674 [INFO] [Thread-116252] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:04:12.675 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:04:12.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:04:13.498 [DEBUG] [Thread-116252] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:04:13.499 [DEBUG] [Thread-116252] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:04:13.547 [DEBUG] [Thread-116252] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:04:13.547 [DEBUG] [Thread-116252] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:04:13.556 [DEBUG] [Thread-116252] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:04:13.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:04:13.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:04:13.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:04:13.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:04:13.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:04:13.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:04:13.593 [DEBUG] [Thread-116252] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:04:17.578 [DEBUG] [Thread-116254 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:04:32.624 [DEBUG] [Thread-116255 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:04:43.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:04:43.616 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:04:43.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:04:44.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 4, 38), 44.78, 3.95, 0.0, 29.68, 25.17, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:04:44.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:04:38
2025-11-03T13:04:44.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:04:44.605 [DEBUG] [Thread-116256] [transport.py] [_log()] starting thread (client mode): 0xed20520
2025-11-03T13:04:44.605 [DEBUG] [Thread-116256] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:04:44.628 [DEBUG] [Thread-116256] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:04:44.628 [INFO] [Thread-116256] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:04:44.630 [DEBUG] [Thread-116256] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:04:44.631 [DEBUG] [Thread-116256] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:04:44.631 [DEBUG] [Thread-116256] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:04:44.631 [DEBUG] [Thread-116256] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:04:44.631 [DEBUG] [Thread-116256] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:04:44.631 [DEBUG] [Thread-116256] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:04:44.631 [DEBUG] [Thread-116256] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:04:44.631 [DEBUG] [Thread-116256] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:04:44.631 [DEBUG] [Thread-116256] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:04:44.631 [DEBUG] [Thread-116256] [transport.py] [_log()] client lang: <none>
2025-11-03T13:04:44.631 [DEBUG] [Thread-116256] [transport.py] [_log()] server lang: <none>
2025-11-03T13:04:44.631 [DEBUG] [Thread-116256] [transport.py] [_log()] kex follows: False
2025-11-03T13:04:44.631 [DEBUG] [Thread-116256] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:04:44.631 [DEBUG] [Thread-116256] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:04:44.631 [DEBUG] [Thread-116256] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:04:44.631 [DEBUG] [Thread-116256] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:04:44.631 [DEBUG] [Thread-116256] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:04:44.631 [DEBUG] [Thread-116256] [transport.py] [_log()] Compression: none
2025-11-03T13:04:44.631 [DEBUG] [Thread-116256] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:04:44.648 [DEBUG] [Thread-116256] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:04:44.648 [DEBUG] [Thread-116256] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:04:44.649 [DEBUG] [Thread-116256] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:04:44.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:04:44.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:04:44.651 [DEBUG] [Thread-116256] [transport.py] [_log()] userauth is OK
2025-11-03T13:04:44.651 [DEBUG] [Thread-116256] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:04:44.651 [DEBUG] [Thread-116256] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:04:44.652 [DEBUG] [Thread-116256] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:04:44.652 [DEBUG] [Thread-116256] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:04:44.676 [INFO] [Thread-116256] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:04:44.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:04:45.336 [DEBUG] [Thread-116256] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:04:45.336 [DEBUG] [Thread-116256] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:04:45.337 [DEBUG] [Thread-116256] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:04:45.377 [DEBUG] [Thread-116256] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:04:45.378 [DEBUG] [Thread-116256] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:04:45.380 [DEBUG] [Thread-116256] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:04:45.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:04:45.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:04:45.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:04:45.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:04:45.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:04:45.401 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:04:45.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:04:45.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:04:45.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:04:45.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.461215 -999.00  +25.80  20.60      8  -10.10 1 1 1 1 1   888    0 37.01 49.76 ----- 21.2 20.6 24.8 27.5 30.4 -29.4 29.7 -28.6 29.8 -27.6 30.5 -28.6
2025-11-03T13:04:45.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:04:45.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:04:45.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.461215
2025-11-03T13:04:45.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:04:45.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:04:45.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:04:45.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:04:45.404 [DEBUG] [Thread-116256] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:04:45.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:04:45.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:04:38', tmtdew=44.78, humidity=3.95, cloud=0.0, wind=29.68, temperature=25.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:04:08.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:04:45.490 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:04:45.501 [DEBUG] [Thread-116259] [transport.py] [_log()] starting thread (client mode): 0xed4c100
2025-11-03T13:04:45.501 [DEBUG] [Thread-116259] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:04:45.515 [DEBUG] [Thread-116259] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:04:45.516 [INFO] [Thread-116259] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:04:45.523 [DEBUG] [Thread-116259] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:04:45.523 [DEBUG] [Thread-116259] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:04:45.524 [DEBUG] [Thread-116259] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:04:45.524 [DEBUG] [Thread-116259] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:04:45.524 [DEBUG] [Thread-116259] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:04:45.524 [DEBUG] [Thread-116259] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:04:45.524 [DEBUG] [Thread-116259] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:04:45.524 [DEBUG] [Thread-116259] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:04:45.524 [DEBUG] [Thread-116259] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:04:45.524 [DEBUG] [Thread-116259] [transport.py] [_log()] client lang: <none>
2025-11-03T13:04:45.524 [DEBUG] [Thread-116259] [transport.py] [_log()] server lang: <none>
2025-11-03T13:04:45.524 [DEBUG] [Thread-116259] [transport.py] [_log()] kex follows: False
2025-11-03T13:04:45.524 [DEBUG] [Thread-116259] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:04:45.524 [DEBUG] [Thread-116259] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:04:45.524 [DEBUG] [Thread-116259] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:04:45.524 [DEBUG] [Thread-116259] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:04:45.524 [DEBUG] [Thread-116259] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:04:45.524 [DEBUG] [Thread-116259] [transport.py] [_log()] Compression: none
2025-11-03T13:04:45.524 [DEBUG] [Thread-116259] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:04:45.581 [DEBUG] [Thread-116259] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:04:45.581 [DEBUG] [Thread-116259] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:04:45.581 [DEBUG] [Thread-116259] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:04:45.581 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:04:45.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:04:45.602 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:04:45.603 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:04:45.638 [DEBUG] [Thread-116259] [transport.py] [_log()] userauth is OK
2025-11-03T13:04:45.638 [DEBUG] [Thread-116259] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:04:45.638 [DEBUG] [Thread-116259] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:04:45.638 [DEBUG] [Thread-116259] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:04:45.638 [DEBUG] [Thread-116259] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:04:45.657 [INFO] [Thread-116259] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:04:45.657 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:04:45.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:04:46.511 [DEBUG] [Thread-116259] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:04:46.511 [DEBUG] [Thread-116259] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:04:46.558 [DEBUG] [Thread-116259] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:04:46.558 [DEBUG] [Thread-116259] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:04:46.566 [DEBUG] [Thread-116259] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:04:46.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:04:46.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:04:46.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:04:46.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:04:46.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:04:46.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:04:46.599 [DEBUG] [Thread-116259] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:04:47.659 [DEBUG] [Thread-116261 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:05:02.733 [DEBUG] [Thread-116262 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:05:03.223 [DEBUG] [Thread-116263 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:05:16.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:05:16.621 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:05:16.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:05:17.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 5, 10), 44.77, 3.99, 0.0, 37.12, 25.45, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:05:17.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:05:10
2025-11-03T13:05:17.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:05:17.582 [DEBUG] [Thread-116264] [transport.py] [_log()] starting thread (client mode): 0x117bdbd0
2025-11-03T13:05:17.582 [DEBUG] [Thread-116264] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:05:17.602 [DEBUG] [Thread-116264] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:05:17.602 [INFO] [Thread-116264] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:05:17.612 [DEBUG] [Thread-116264] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:05:17.612 [DEBUG] [Thread-116264] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:05:17.612 [DEBUG] [Thread-116264] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:05:17.612 [DEBUG] [Thread-116264] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:05:17.612 [DEBUG] [Thread-116264] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:05:17.612 [DEBUG] [Thread-116264] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:05:17.612 [DEBUG] [Thread-116264] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:05:17.612 [DEBUG] [Thread-116264] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:05:17.612 [DEBUG] [Thread-116264] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:05:17.612 [DEBUG] [Thread-116264] [transport.py] [_log()] client lang: <none>
2025-11-03T13:05:17.612 [DEBUG] [Thread-116264] [transport.py] [_log()] server lang: <none>
2025-11-03T13:05:17.612 [DEBUG] [Thread-116264] [transport.py] [_log()] kex follows: False
2025-11-03T13:05:17.613 [DEBUG] [Thread-116264] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:05:17.613 [DEBUG] [Thread-116264] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:05:17.613 [DEBUG] [Thread-116264] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:05:17.613 [DEBUG] [Thread-116264] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:05:17.613 [DEBUG] [Thread-116264] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:05:17.613 [DEBUG] [Thread-116264] [transport.py] [_log()] Compression: none
2025-11-03T13:05:17.613 [DEBUG] [Thread-116264] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:05:17.631 [DEBUG] [Thread-116264] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:05:17.632 [DEBUG] [Thread-116264] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:05:17.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:05:17.633 [DEBUG] [Thread-116264] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:05:17.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:05:17.635 [DEBUG] [Thread-116264] [transport.py] [_log()] userauth is OK
2025-11-03T13:05:17.635 [DEBUG] [Thread-116264] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:05:17.635 [DEBUG] [Thread-116264] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:05:17.635 [DEBUG] [Thread-116264] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:05:17.635 [DEBUG] [Thread-116264] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:05:17.659 [INFO] [Thread-116264] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:05:17.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:05:17.771 [DEBUG] [Thread-116266 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:05:18.503 [DEBUG] [Thread-116264] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:05:18.504 [DEBUG] [Thread-116264] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:05:18.504 [DEBUG] [Thread-116264] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:05:18.545 [DEBUG] [Thread-116264] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:05:18.545 [DEBUG] [Thread-116264] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:05:18.547 [DEBUG] [Thread-116264] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:05:18.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:05:18.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:05:18.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:05:18.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:05:18.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:05:18.564 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:05:18.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:05:18.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:05:18.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:05:18.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.461562 -999.00  +25.40  12.73      8  -10.40 1 1 1 1 1   888    0 35.92 55.66 ----- 13.9 12.7 353.3 23.3 30.3 -30.8 29.5 -30.7 29.8 -29.1 30.3 -27.9
2025-11-03T13:05:18.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:05:18.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:05:18.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.461562
2025-11-03T13:05:18.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:05:18.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:05:18.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:05:18.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:05:18.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:05:18.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:05:10', tmtdew=44.77, humidity=3.99, cloud=0.0, wind=37.12, temperature=25.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:04:38.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:05:18.565 [DEBUG] [Thread-116264] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:05:18.637 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:05:18.650 [DEBUG] [Thread-116268] [transport.py] [_log()] starting thread (client mode): 0x117bd9c0
2025-11-03T13:05:18.650 [DEBUG] [Thread-116268] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:05:18.665 [DEBUG] [Thread-116268] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:05:18.665 [INFO] [Thread-116268] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:05:18.673 [DEBUG] [Thread-116268] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:05:18.673 [DEBUG] [Thread-116268] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:05:18.673 [DEBUG] [Thread-116268] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:05:18.673 [DEBUG] [Thread-116268] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:05:18.673 [DEBUG] [Thread-116268] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:05:18.673 [DEBUG] [Thread-116268] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:05:18.673 [DEBUG] [Thread-116268] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:05:18.673 [DEBUG] [Thread-116268] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:05:18.673 [DEBUG] [Thread-116268] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:05:18.673 [DEBUG] [Thread-116268] [transport.py] [_log()] client lang: <none>
2025-11-03T13:05:18.673 [DEBUG] [Thread-116268] [transport.py] [_log()] server lang: <none>
2025-11-03T13:05:18.673 [DEBUG] [Thread-116268] [transport.py] [_log()] kex follows: False
2025-11-03T13:05:18.673 [DEBUG] [Thread-116268] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:05:18.673 [DEBUG] [Thread-116268] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:05:18.673 [DEBUG] [Thread-116268] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:05:18.673 [DEBUG] [Thread-116268] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:05:18.673 [DEBUG] [Thread-116268] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:05:18.673 [DEBUG] [Thread-116268] [transport.py] [_log()] Compression: none
2025-11-03T13:05:18.673 [DEBUG] [Thread-116268] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:05:18.728 [DEBUG] [Thread-116268] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:05:18.728 [DEBUG] [Thread-116268] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:05:18.728 [DEBUG] [Thread-116268] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:05:18.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:05:18.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:05:18.785 [DEBUG] [Thread-116268] [transport.py] [_log()] userauth is OK
2025-11-03T13:05:18.785 [DEBUG] [Thread-116268] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:05:18.786 [DEBUG] [Thread-116268] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:05:18.786 [DEBUG] [Thread-116268] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:05:18.786 [DEBUG] [Thread-116268] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:05:18.799 [INFO] [Thread-116268] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:05:18.799 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:05:18.799 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:05:19.629 [DEBUG] [Thread-116268] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:05:19.629 [DEBUG] [Thread-116268] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:05:19.680 [DEBUG] [Thread-116268] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:05:19.680 [DEBUG] [Thread-116268] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:05:19.692 [DEBUG] [Thread-116268] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:05:19.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:05:19.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:05:19.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:05:19.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:05:19.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:05:19.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:05:19.724 [DEBUG] [Thread-116268] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:05:32.809 [DEBUG] [Thread-116270 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:05:45.743 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:05:45.743 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:05:47.861 [DEBUG] [Thread-116271 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:05:49.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:05:49.746 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:05:49.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:05:50.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 5, 43), 45.1, 3.94, 0.0, 32.85, 26.0, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:05:50.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:05:43
2025-11-03T13:05:50.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:05:50.691 [DEBUG] [Thread-116272] [transport.py] [_log()] starting thread (client mode): 0xed4d150
2025-11-03T13:05:50.691 [DEBUG] [Thread-116272] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:05:50.711 [DEBUG] [Thread-116272] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:05:50.711 [INFO] [Thread-116272] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:05:50.714 [DEBUG] [Thread-116272] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:05:50.714 [DEBUG] [Thread-116272] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:05:50.714 [DEBUG] [Thread-116272] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:05:50.714 [DEBUG] [Thread-116272] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:05:50.714 [DEBUG] [Thread-116272] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:05:50.714 [DEBUG] [Thread-116272] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:05:50.714 [DEBUG] [Thread-116272] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:05:50.714 [DEBUG] [Thread-116272] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:05:50.714 [DEBUG] [Thread-116272] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:05:50.714 [DEBUG] [Thread-116272] [transport.py] [_log()] client lang: <none>
2025-11-03T13:05:50.714 [DEBUG] [Thread-116272] [transport.py] [_log()] server lang: <none>
2025-11-03T13:05:50.714 [DEBUG] [Thread-116272] [transport.py] [_log()] kex follows: False
2025-11-03T13:05:50.714 [DEBUG] [Thread-116272] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:05:50.714 [DEBUG] [Thread-116272] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:05:50.714 [DEBUG] [Thread-116272] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:05:50.714 [DEBUG] [Thread-116272] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:05:50.714 [DEBUG] [Thread-116272] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:05:50.714 [DEBUG] [Thread-116272] [transport.py] [_log()] Compression: none
2025-11-03T13:05:50.714 [DEBUG] [Thread-116272] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:05:50.723 [DEBUG] [Thread-116272] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:05:50.723 [DEBUG] [Thread-116272] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:05:50.724 [DEBUG] [Thread-116272] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:05:50.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:05:50.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:05:50.725 [DEBUG] [Thread-116272] [transport.py] [_log()] userauth is OK
2025-11-03T13:05:50.725 [DEBUG] [Thread-116272] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:05:50.725 [DEBUG] [Thread-116272] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:05:50.726 [DEBUG] [Thread-116272] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:05:50.726 [DEBUG] [Thread-116272] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:05:50.745 [INFO] [Thread-116272] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:05:50.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:05:51.388 [DEBUG] [Thread-116272] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:05:51.388 [DEBUG] [Thread-116272] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:05:51.388 [DEBUG] [Thread-116272] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:05:51.429 [DEBUG] [Thread-116272] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:05:51.429 [DEBUG] [Thread-116272] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:05:51.432 [DEBUG] [Thread-116272] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:05:51.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:05:51.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:05:51.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:05:51.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:05:51.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:05:51.457 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:05:51.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:05:51.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:05:51.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:05:51.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.461909 -999.00  +26.10  28.80      8   -9.60 1 1 1 1 1   888    0 36.15 53.38 ----- 30.7 28.8 15.2 32.2 30.5 -28.8 29.6 -28.1 29.8 -27.5 30.5 -28.9
2025-11-03T13:05:51.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:05:51.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:05:51.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.461909
2025-11-03T13:05:51.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:05:51.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:05:51.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:05:51.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:05:51.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:05:51.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:05:43', tmtdew=45.1, humidity=3.94, cloud=0.0, wind=32.85, temperature=26.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:05:08.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:05:51.461 [DEBUG] [Thread-116272] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:05:51.544 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:05:51.556 [DEBUG] [Thread-116275] [transport.py] [_log()] starting thread (client mode): 0xed4d8a0
2025-11-03T13:05:51.556 [DEBUG] [Thread-116275] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:05:51.571 [DEBUG] [Thread-116275] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:05:51.571 [INFO] [Thread-116275] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:05:51.579 [DEBUG] [Thread-116275] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:05:51.579 [DEBUG] [Thread-116275] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:05:51.579 [DEBUG] [Thread-116275] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:05:51.579 [DEBUG] [Thread-116275] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:05:51.579 [DEBUG] [Thread-116275] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:05:51.579 [DEBUG] [Thread-116275] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:05:51.579 [DEBUG] [Thread-116275] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:05:51.579 [DEBUG] [Thread-116275] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:05:51.579 [DEBUG] [Thread-116275] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:05:51.579 [DEBUG] [Thread-116275] [transport.py] [_log()] client lang: <none>
2025-11-03T13:05:51.580 [DEBUG] [Thread-116275] [transport.py] [_log()] server lang: <none>
2025-11-03T13:05:51.580 [DEBUG] [Thread-116275] [transport.py] [_log()] kex follows: False
2025-11-03T13:05:51.580 [DEBUG] [Thread-116275] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:05:51.580 [DEBUG] [Thread-116275] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:05:51.580 [DEBUG] [Thread-116275] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:05:51.580 [DEBUG] [Thread-116275] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:05:51.580 [DEBUG] [Thread-116275] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:05:51.580 [DEBUG] [Thread-116275] [transport.py] [_log()] Compression: none
2025-11-03T13:05:51.580 [DEBUG] [Thread-116275] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:05:51.642 [DEBUG] [Thread-116275] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:05:51.643 [DEBUG] [Thread-116275] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:05:51.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:05:51.644 [DEBUG] [Thread-116275] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:05:51.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:05:51.697 [DEBUG] [Thread-116275] [transport.py] [_log()] userauth is OK
2025-11-03T13:05:51.698 [DEBUG] [Thread-116275] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:05:51.698 [DEBUG] [Thread-116275] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:05:51.698 [DEBUG] [Thread-116275] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:05:51.698 [DEBUG] [Thread-116275] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:05:51.721 [INFO] [Thread-116275] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:05:51.722 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:05:51.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:05:52.582 [DEBUG] [Thread-116275] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:05:52.582 [DEBUG] [Thread-116275] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:05:52.630 [DEBUG] [Thread-116275] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:05:52.630 [DEBUG] [Thread-116275] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:05:52.640 [DEBUG] [Thread-116275] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:05:52.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:05:52.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:05:52.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:05:52.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:05:52.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:05:52.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:05:52.676 [DEBUG] [Thread-116275] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:06:02.893 [DEBUG] [Thread-116277 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:06:03.316 [DEBUG] [Thread-116278 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:06:17.933 [DEBUG] [Thread-116279 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:06:22.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:06:22.698 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:06:22.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:06:23.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 6, 15), 44.89, 3.99, 0.0, 31.46, 25.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:06:23.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:06:15
2025-11-03T13:06:23.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:06:23.744 [DEBUG] [Thread-116280] [transport.py] [_log()] starting thread (client mode): 0xed4eb60
2025-11-03T13:06:23.744 [DEBUG] [Thread-116280] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:06:23.763 [DEBUG] [Thread-116280] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:06:23.763 [INFO] [Thread-116280] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:06:23.766 [DEBUG] [Thread-116280] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:06:23.766 [DEBUG] [Thread-116280] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:06:23.766 [DEBUG] [Thread-116280] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:06:23.766 [DEBUG] [Thread-116280] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:06:23.766 [DEBUG] [Thread-116280] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:06:23.766 [DEBUG] [Thread-116280] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:06:23.766 [DEBUG] [Thread-116280] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:06:23.766 [DEBUG] [Thread-116280] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:06:23.766 [DEBUG] [Thread-116280] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:06:23.767 [DEBUG] [Thread-116280] [transport.py] [_log()] client lang: <none>
2025-11-03T13:06:23.767 [DEBUG] [Thread-116280] [transport.py] [_log()] server lang: <none>
2025-11-03T13:06:23.767 [DEBUG] [Thread-116280] [transport.py] [_log()] kex follows: False
2025-11-03T13:06:23.767 [DEBUG] [Thread-116280] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:06:23.767 [DEBUG] [Thread-116280] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:06:23.767 [DEBUG] [Thread-116280] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:06:23.767 [DEBUG] [Thread-116280] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:06:23.767 [DEBUG] [Thread-116280] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:06:23.767 [DEBUG] [Thread-116280] [transport.py] [_log()] Compression: none
2025-11-03T13:06:23.767 [DEBUG] [Thread-116280] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:06:23.782 [DEBUG] [Thread-116280] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:06:23.782 [DEBUG] [Thread-116280] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:06:23.782 [DEBUG] [Thread-116280] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:06:23.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:06:23.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:06:23.783 [DEBUG] [Thread-116280] [transport.py] [_log()] userauth is OK
2025-11-03T13:06:23.783 [DEBUG] [Thread-116280] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:06:23.783 [DEBUG] [Thread-116280] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:06:23.783 [DEBUG] [Thread-116280] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:06:23.783 [DEBUG] [Thread-116280] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:06:23.798 [INFO] [Thread-116280] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:06:23.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:06:24.416 [DEBUG] [Thread-116280] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:06:24.416 [DEBUG] [Thread-116280] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:06:24.416 [DEBUG] [Thread-116280] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:06:24.457 [DEBUG] [Thread-116280] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:06:24.457 [DEBUG] [Thread-116280] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:06:24.460 [DEBUG] [Thread-116280] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:06:24.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:06:24.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:06:24.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:06:24.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:06:24.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:06:24.477 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:06:24.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:06:24.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:06:24.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:06:24.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.462256 -999.00  +25.80  26.79      8  -10.00 1 1 1 1 1   888    0 36.91 57.63 ----- 29.3 26.8 345.6 45.8 30.3 -31.1 29.4 -30.7 29.8 -30.7 30.2 -28.9
2025-11-03T13:06:24.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:06:24.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:06:24.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.462256
2025-11-03T13:06:24.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:06:24.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:06:24.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:06:24.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:06:24.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:06:24.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:06:15', tmtdew=44.89, humidity=3.99, cloud=0.0, wind=31.46, temperature=25.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:05:38.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:06:24.479 [DEBUG] [Thread-116280] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:06:24.554 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:06:24.567 [DEBUG] [Thread-116283] [transport.py] [_log()] starting thread (client mode): 0x81b98a0
2025-11-03T13:06:24.567 [DEBUG] [Thread-116283] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:06:24.582 [DEBUG] [Thread-116283] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:06:24.582 [INFO] [Thread-116283] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:06:24.589 [DEBUG] [Thread-116283] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:06:24.589 [DEBUG] [Thread-116283] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:06:24.589 [DEBUG] [Thread-116283] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:06:24.590 [DEBUG] [Thread-116283] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:06:24.590 [DEBUG] [Thread-116283] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:06:24.590 [DEBUG] [Thread-116283] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:06:24.590 [DEBUG] [Thread-116283] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:06:24.590 [DEBUG] [Thread-116283] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:06:24.590 [DEBUG] [Thread-116283] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:06:24.590 [DEBUG] [Thread-116283] [transport.py] [_log()] client lang: <none>
2025-11-03T13:06:24.590 [DEBUG] [Thread-116283] [transport.py] [_log()] server lang: <none>
2025-11-03T13:06:24.590 [DEBUG] [Thread-116283] [transport.py] [_log()] kex follows: False
2025-11-03T13:06:24.590 [DEBUG] [Thread-116283] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:06:24.590 [DEBUG] [Thread-116283] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:06:24.590 [DEBUG] [Thread-116283] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:06:24.590 [DEBUG] [Thread-116283] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:06:24.590 [DEBUG] [Thread-116283] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:06:24.590 [DEBUG] [Thread-116283] [transport.py] [_log()] Compression: none
2025-11-03T13:06:24.590 [DEBUG] [Thread-116283] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:06:24.654 [DEBUG] [Thread-116283] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:06:24.654 [DEBUG] [Thread-116283] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:06:24.655 [DEBUG] [Thread-116283] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:06:24.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:06:24.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:06:24.709 [DEBUG] [Thread-116283] [transport.py] [_log()] userauth is OK
2025-11-03T13:06:24.709 [DEBUG] [Thread-116283] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:06:24.709 [DEBUG] [Thread-116283] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:06:24.709 [DEBUG] [Thread-116283] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:06:24.709 [DEBUG] [Thread-116283] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:06:24.723 [INFO] [Thread-116283] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:06:24.724 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:06:24.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:06:25.585 [DEBUG] [Thread-116283] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:06:25.585 [DEBUG] [Thread-116283] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:06:25.633 [DEBUG] [Thread-116283] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:06:25.634 [DEBUG] [Thread-116283] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:06:25.642 [DEBUG] [Thread-116283] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:06:25.650 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:06:25.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:06:25.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:06:25.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:06:25.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:06:25.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:06:25.673 [DEBUG] [Thread-116283] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:06:32.960 [DEBUG] [Thread-116285 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:06:45.884 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:06:45.885 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:06:48.012 [DEBUG] [Thread-116286 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:06:55.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:06:55.685 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:06:55.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:06:56.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 6, 47), 45.35, 3.95, 0.0, 33.95, 25.45, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:06:56.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:06:47
2025-11-03T13:06:56.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:06:56.733 [DEBUG] [Thread-116287] [transport.py] [_log()] starting thread (client mode): 0x117bc9a0
2025-11-03T13:06:56.733 [DEBUG] [Thread-116287] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:06:56.745 [DEBUG] [Thread-116287] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:06:56.745 [INFO] [Thread-116287] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:06:56.749 [DEBUG] [Thread-116287] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:06:56.749 [DEBUG] [Thread-116287] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:06:56.749 [DEBUG] [Thread-116287] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:06:56.749 [DEBUG] [Thread-116287] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:06:56.749 [DEBUG] [Thread-116287] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:06:56.749 [DEBUG] [Thread-116287] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:06:56.749 [DEBUG] [Thread-116287] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:06:56.749 [DEBUG] [Thread-116287] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:06:56.749 [DEBUG] [Thread-116287] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:06:56.749 [DEBUG] [Thread-116287] [transport.py] [_log()] client lang: <none>
2025-11-03T13:06:56.749 [DEBUG] [Thread-116287] [transport.py] [_log()] server lang: <none>
2025-11-03T13:06:56.749 [DEBUG] [Thread-116287] [transport.py] [_log()] kex follows: False
2025-11-03T13:06:56.749 [DEBUG] [Thread-116287] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:06:56.749 [DEBUG] [Thread-116287] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:06:56.749 [DEBUG] [Thread-116287] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:06:56.749 [DEBUG] [Thread-116287] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:06:56.749 [DEBUG] [Thread-116287] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:06:56.749 [DEBUG] [Thread-116287] [transport.py] [_log()] Compression: none
2025-11-03T13:06:56.749 [DEBUG] [Thread-116287] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:06:56.766 [DEBUG] [Thread-116287] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:06:56.766 [DEBUG] [Thread-116287] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:06:56.767 [DEBUG] [Thread-116287] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:06:56.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:06:56.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:06:56.769 [DEBUG] [Thread-116287] [transport.py] [_log()] userauth is OK
2025-11-03T13:06:56.769 [DEBUG] [Thread-116287] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:06:56.770 [DEBUG] [Thread-116287] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:06:56.770 [DEBUG] [Thread-116287] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:06:56.770 [DEBUG] [Thread-116287] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:06:56.802 [INFO] [Thread-116287] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:06:56.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:06:57.453 [DEBUG] [Thread-116287] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:06:57.453 [DEBUG] [Thread-116287] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:06:57.453 [DEBUG] [Thread-116287] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:06:57.494 [DEBUG] [Thread-116287] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:06:57.494 [DEBUG] [Thread-116287] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:06:57.497 [DEBUG] [Thread-116287] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:06:57.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:06:57.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:06:57.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:06:57.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:06:57.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:06:57.515 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:06:57.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:06:57.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:06:57.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:06:57.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.462604 -999.00  +25.40  22.91      8  -10.40 1 1 1 1 1   888    0 36.98 60.44 ----- 26.6 22.9 7.9 36.1 30.2 -33.5 29.5 -32.8 29.8 -28.3 30.1 -29.1
2025-11-03T13:06:57.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:06:57.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:06:57.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.462604
2025-11-03T13:06:57.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:06:57.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:06:57.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:06:57.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:06:57.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:06:57.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:06:47', tmtdew=45.35, humidity=3.95, cloud=0.0, wind=33.95, temperature=25.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:06:08.986', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:06:57.516 [DEBUG] [Thread-116287] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:06:57.588 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:06:57.598 [DEBUG] [Thread-116290] [transport.py] [_log()] starting thread (client mode): 0xed21780
2025-11-03T13:06:57.598 [DEBUG] [Thread-116290] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:06:57.618 [DEBUG] [Thread-116290] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:06:57.618 [INFO] [Thread-116290] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:06:57.625 [DEBUG] [Thread-116290] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:06:57.625 [DEBUG] [Thread-116290] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:06:57.625 [DEBUG] [Thread-116290] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:06:57.625 [DEBUG] [Thread-116290] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:06:57.625 [DEBUG] [Thread-116290] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:06:57.625 [DEBUG] [Thread-116290] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:06:57.625 [DEBUG] [Thread-116290] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:06:57.625 [DEBUG] [Thread-116290] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:06:57.625 [DEBUG] [Thread-116290] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:06:57.625 [DEBUG] [Thread-116290] [transport.py] [_log()] client lang: <none>
2025-11-03T13:06:57.625 [DEBUG] [Thread-116290] [transport.py] [_log()] server lang: <none>
2025-11-03T13:06:57.625 [DEBUG] [Thread-116290] [transport.py] [_log()] kex follows: False
2025-11-03T13:06:57.625 [DEBUG] [Thread-116290] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:06:57.625 [DEBUG] [Thread-116290] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:06:57.625 [DEBUG] [Thread-116290] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:06:57.625 [DEBUG] [Thread-116290] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:06:57.625 [DEBUG] [Thread-116290] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:06:57.625 [DEBUG] [Thread-116290] [transport.py] [_log()] Compression: none
2025-11-03T13:06:57.625 [DEBUG] [Thread-116290] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:06:57.684 [DEBUG] [Thread-116290] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:06:57.684 [DEBUG] [Thread-116290] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:06:57.693 [DEBUG] [Thread-116290] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:06:57.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:06:57.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:06:57.742 [DEBUG] [Thread-116290] [transport.py] [_log()] userauth is OK
2025-11-03T13:06:57.742 [DEBUG] [Thread-116290] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:06:57.742 [DEBUG] [Thread-116290] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:06:57.742 [DEBUG] [Thread-116290] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:06:57.742 [DEBUG] [Thread-116290] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:06:57.756 [INFO] [Thread-116290] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:06:57.756 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:06:57.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:06:58.587 [DEBUG] [Thread-116290] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:06:58.587 [DEBUG] [Thread-116290] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:06:58.635 [DEBUG] [Thread-116290] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:06:58.635 [DEBUG] [Thread-116290] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:06:58.644 [DEBUG] [Thread-116290] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:06:58.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:06:58.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:06:58.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:06:58.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:06:58.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:06:58.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:06:58.679 [DEBUG] [Thread-116290] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:07:03.046 [DEBUG] [Thread-116292 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:07:03.508 [DEBUG] [Thread-116293 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:07:18.095 [DEBUG] [Thread-116294 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:07:28.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:07:28.686 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:07:28.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:07:29.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 7, 19), 45.42, 3.95, 0.0, 30.79, 25.67, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:07:29.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:07:19
2025-11-03T13:07:29.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:07:29.668 [DEBUG] [Thread-116295] [transport.py] [_log()] starting thread (client mode): 0x117bf640
2025-11-03T13:07:29.668 [DEBUG] [Thread-116295] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:07:29.690 [DEBUG] [Thread-116295] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:07:29.690 [INFO] [Thread-116295] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:07:29.694 [DEBUG] [Thread-116295] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:07:29.694 [DEBUG] [Thread-116295] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:07:29.694 [DEBUG] [Thread-116295] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:07:29.694 [DEBUG] [Thread-116295] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:07:29.694 [DEBUG] [Thread-116295] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:07:29.694 [DEBUG] [Thread-116295] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:07:29.694 [DEBUG] [Thread-116295] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:07:29.694 [DEBUG] [Thread-116295] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:07:29.694 [DEBUG] [Thread-116295] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:07:29.694 [DEBUG] [Thread-116295] [transport.py] [_log()] client lang: <none>
2025-11-03T13:07:29.694 [DEBUG] [Thread-116295] [transport.py] [_log()] server lang: <none>
2025-11-03T13:07:29.694 [DEBUG] [Thread-116295] [transport.py] [_log()] kex follows: False
2025-11-03T13:07:29.694 [DEBUG] [Thread-116295] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:07:29.694 [DEBUG] [Thread-116295] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:07:29.694 [DEBUG] [Thread-116295] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:07:29.695 [DEBUG] [Thread-116295] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:07:29.695 [DEBUG] [Thread-116295] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:07:29.695 [DEBUG] [Thread-116295] [transport.py] [_log()] Compression: none
2025-11-03T13:07:29.695 [DEBUG] [Thread-116295] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:07:29.709 [DEBUG] [Thread-116295] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:07:29.718 [DEBUG] [Thread-116295] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:07:29.719 [DEBUG] [Thread-116295] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:07:29.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:07:29.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:07:29.721 [DEBUG] [Thread-116295] [transport.py] [_log()] userauth is OK
2025-11-03T13:07:29.721 [DEBUG] [Thread-116295] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:07:29.721 [DEBUG] [Thread-116295] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:07:29.721 [DEBUG] [Thread-116295] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:07:29.721 [DEBUG] [Thread-116295] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:07:29.746 [INFO] [Thread-116295] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:07:29.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:07:30.359 [DEBUG] [Thread-116295] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:07:30.359 [DEBUG] [Thread-116295] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:07:30.359 [DEBUG] [Thread-116295] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:07:30.400 [DEBUG] [Thread-116295] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:07:30.400 [DEBUG] [Thread-116295] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:07:30.404 [DEBUG] [Thread-116295] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:07:30.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:07:30.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:07:30.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:07:30.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:07:30.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:07:30.437 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:07:30.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:07:30.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:07:30.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:07:30.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.462951 -999.00  +24.80  19.45      8  -10.40 1 1 1 1 1   888    0 36.50 65.89 ----- 25.6 19.4 324.4 41.3 30.1 -30.6 29.4 -30.9 29.7 -28.4 30.2 -28.1
2025-11-03T13:07:30.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:07:30.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:07:30.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.462951
2025-11-03T13:07:30.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:07:30.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:07:30.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:07:30.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:07:30.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:07:30.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:07:19', tmtdew=45.42, humidity=3.95, cloud=0.0, wind=30.79, temperature=25.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:06:38.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:07:30.440 [DEBUG] [Thread-116295] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:07:30.524 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:07:30.534 [DEBUG] [Thread-116298] [transport.py] [_log()] starting thread (client mode): 0x81b8670
2025-11-03T13:07:30.534 [DEBUG] [Thread-116298] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:07:30.549 [DEBUG] [Thread-116298] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:07:30.549 [INFO] [Thread-116298] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:07:30.559 [DEBUG] [Thread-116298] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:07:30.559 [DEBUG] [Thread-116298] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:07:30.560 [DEBUG] [Thread-116298] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:07:30.560 [DEBUG] [Thread-116298] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:07:30.560 [DEBUG] [Thread-116298] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:07:30.560 [DEBUG] [Thread-116298] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:07:30.560 [DEBUG] [Thread-116298] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:07:30.560 [DEBUG] [Thread-116298] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:07:30.560 [DEBUG] [Thread-116298] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:07:30.560 [DEBUG] [Thread-116298] [transport.py] [_log()] client lang: <none>
2025-11-03T13:07:30.560 [DEBUG] [Thread-116298] [transport.py] [_log()] server lang: <none>
2025-11-03T13:07:30.560 [DEBUG] [Thread-116298] [transport.py] [_log()] kex follows: False
2025-11-03T13:07:30.560 [DEBUG] [Thread-116298] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:07:30.560 [DEBUG] [Thread-116298] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:07:30.560 [DEBUG] [Thread-116298] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:07:30.560 [DEBUG] [Thread-116298] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:07:30.560 [DEBUG] [Thread-116298] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:07:30.560 [DEBUG] [Thread-116298] [transport.py] [_log()] Compression: none
2025-11-03T13:07:30.560 [DEBUG] [Thread-116298] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:07:30.614 [DEBUG] [Thread-116298] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:07:30.615 [DEBUG] [Thread-116298] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:07:30.616 [DEBUG] [Thread-116298] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:07:30.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:07:30.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:07:30.674 [DEBUG] [Thread-116298] [transport.py] [_log()] userauth is OK
2025-11-03T13:07:30.674 [DEBUG] [Thread-116298] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:07:30.674 [DEBUG] [Thread-116298] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:07:30.674 [DEBUG] [Thread-116298] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:07:30.674 [DEBUG] [Thread-116298] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:07:30.699 [INFO] [Thread-116298] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:07:30.699 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:07:30.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:07:31.542 [DEBUG] [Thread-116298] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:07:31.543 [DEBUG] [Thread-116298] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:07:31.591 [DEBUG] [Thread-116298] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:07:31.591 [DEBUG] [Thread-116298] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:07:31.601 [DEBUG] [Thread-116298] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:07:31.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:07:31.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:07:31.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:07:31.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:07:31.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:07:31.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:07:31.648 [DEBUG] [Thread-116298] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:07:33.135 [DEBUG] [Thread-116300 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:07:46.025 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:07:46.026 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:07:48.190 [DEBUG] [Thread-116301 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:08:01.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:08:01.671 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:08:01.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:08:02.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 7, 52), 45.61, 3.85, 0.0, 30.77, 25.93, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:08:02.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:07:52
2025-11-03T13:08:02.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:08:02.619 [DEBUG] [Thread-116302] [transport.py] [_log()] starting thread (client mode): 0x81b8730
2025-11-03T13:08:02.619 [DEBUG] [Thread-116302] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:08:02.642 [DEBUG] [Thread-116302] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:08:02.642 [INFO] [Thread-116302] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:08:02.645 [DEBUG] [Thread-116302] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:08:02.645 [DEBUG] [Thread-116302] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:08:02.645 [DEBUG] [Thread-116302] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:08:02.645 [DEBUG] [Thread-116302] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:08:02.645 [DEBUG] [Thread-116302] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:08:02.645 [DEBUG] [Thread-116302] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:08:02.645 [DEBUG] [Thread-116302] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:08:02.645 [DEBUG] [Thread-116302] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:08:02.645 [DEBUG] [Thread-116302] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:08:02.645 [DEBUG] [Thread-116302] [transport.py] [_log()] client lang: <none>
2025-11-03T13:08:02.645 [DEBUG] [Thread-116302] [transport.py] [_log()] server lang: <none>
2025-11-03T13:08:02.645 [DEBUG] [Thread-116302] [transport.py] [_log()] kex follows: False
2025-11-03T13:08:02.645 [DEBUG] [Thread-116302] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:08:02.645 [DEBUG] [Thread-116302] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:08:02.645 [DEBUG] [Thread-116302] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:08:02.646 [DEBUG] [Thread-116302] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:08:02.646 [DEBUG] [Thread-116302] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:08:02.646 [DEBUG] [Thread-116302] [transport.py] [_log()] Compression: none
2025-11-03T13:08:02.646 [DEBUG] [Thread-116302] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:08:02.661 [DEBUG] [Thread-116302] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:08:02.661 [DEBUG] [Thread-116302] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:08:02.661 [DEBUG] [Thread-116302] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:08:02.662 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:08:02.662 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:08:02.662 [DEBUG] [Thread-116302] [transport.py] [_log()] userauth is OK
2025-11-03T13:08:02.662 [DEBUG] [Thread-116302] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:08:02.662 [DEBUG] [Thread-116302] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:08:02.662 [DEBUG] [Thread-116302] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:08:02.662 [DEBUG] [Thread-116302] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:08:02.672 [INFO] [Thread-116302] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:08:02.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:08:03.233 [DEBUG] [Thread-116304 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:08:03.361 [DEBUG] [Thread-116302] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:08:03.361 [DEBUG] [Thread-116302] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:08:03.362 [DEBUG] [Thread-116302] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:08:03.402 [DEBUG] [Thread-116302] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:08:03.402 [DEBUG] [Thread-116302] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:08:03.406 [DEBUG] [Thread-116302] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:08:03.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:08:03.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:08:03.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:08:03.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:08:03.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:08:03.430 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:08:03.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:08:03.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:08:03.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:08:03.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.463645 -999.00  +24.60  18.31      8  -10.80 1 1 1 1 1   888    0 36.98 62.91 ----- 29.9 18.3 12.0 39.0 30.1 -30.8 29.3 -30.2 29.6 -29.2 30.2 -28.4
2025-11-03T13:08:03.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:08:03.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:08:03.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.463645
2025-11-03T13:08:03.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:08:03.439 [DEBUG] [Thread-116302] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:08:03.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:08:03.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:08:03.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:08:03.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:08:03.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:07:52', tmtdew=45.61, humidity=3.85, cloud=0.0, wind=30.77, temperature=25.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:07:38.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:08:03.516 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:08:03.528 [DEBUG] [Thread-116306] [transport.py] [_log()] starting thread (client mode): 0x81b8250
2025-11-03T13:08:03.528 [DEBUG] [Thread-116306] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:08:03.544 [DEBUG] [Thread-116306] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:08:03.544 [INFO] [Thread-116306] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:08:03.552 [DEBUG] [Thread-116306] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:08:03.552 [DEBUG] [Thread-116306] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:08:03.552 [DEBUG] [Thread-116306] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:08:03.552 [DEBUG] [Thread-116306] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:08:03.552 [DEBUG] [Thread-116306] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:08:03.552 [DEBUG] [Thread-116306] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:08:03.552 [DEBUG] [Thread-116306] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:08:03.552 [DEBUG] [Thread-116306] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:08:03.552 [DEBUG] [Thread-116306] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:08:03.552 [DEBUG] [Thread-116306] [transport.py] [_log()] client lang: <none>
2025-11-03T13:08:03.552 [DEBUG] [Thread-116306] [transport.py] [_log()] server lang: <none>
2025-11-03T13:08:03.552 [DEBUG] [Thread-116306] [transport.py] [_log()] kex follows: False
2025-11-03T13:08:03.552 [DEBUG] [Thread-116306] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:08:03.552 [DEBUG] [Thread-116306] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:08:03.552 [DEBUG] [Thread-116306] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:08:03.552 [DEBUG] [Thread-116306] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:08:03.552 [DEBUG] [Thread-116306] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:08:03.552 [DEBUG] [Thread-116306] [transport.py] [_log()] Compression: none
2025-11-03T13:08:03.553 [DEBUG] [Thread-116306] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:08:03.568 [DEBUG] [Thread-116308 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:08:03.610 [DEBUG] [Thread-116306] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:08:03.611 [DEBUG] [Thread-116306] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:08:03.612 [DEBUG] [Thread-116306] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:08:03.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:08:03.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:08:03.678 [DEBUG] [Thread-116306] [transport.py] [_log()] userauth is OK
2025-11-03T13:08:03.679 [DEBUG] [Thread-116306] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:08:03.679 [DEBUG] [Thread-116306] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:08:03.679 [DEBUG] [Thread-116306] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:08:03.679 [DEBUG] [Thread-116306] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:08:03.698 [INFO] [Thread-116306] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:08:03.698 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:08:03.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:08:04.600 [DEBUG] [Thread-116306] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:08:04.600 [DEBUG] [Thread-116306] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:08:04.649 [DEBUG] [Thread-116306] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:08:04.649 [DEBUG] [Thread-116306] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:08:04.659 [DEBUG] [Thread-116306] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:08:04.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:08:04.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:08:04.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:08:04.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:08:04.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:08:04.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:08:04.696 [DEBUG] [Thread-116306] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:08:18.267 [DEBUG] [Thread-116309 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:08:33.322 [DEBUG] [Thread-116310 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:08:34.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:08:34.718 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:08:34.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:08:35.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 8, 24), 45.72, 3.82, 0.0, 26.89, 25.95, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:08:35.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:08:24
2025-11-03T13:08:35.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:08:35.642 [DEBUG] [Thread-116311] [transport.py] [_log()] starting thread (client mode): 0x117bc550
2025-11-03T13:08:35.642 [DEBUG] [Thread-116311] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:08:35.660 [DEBUG] [Thread-116311] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:08:35.660 [INFO] [Thread-116311] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:08:35.663 [DEBUG] [Thread-116311] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:08:35.663 [DEBUG] [Thread-116311] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:08:35.663 [DEBUG] [Thread-116311] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:08:35.663 [DEBUG] [Thread-116311] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:08:35.663 [DEBUG] [Thread-116311] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:08:35.663 [DEBUG] [Thread-116311] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:08:35.663 [DEBUG] [Thread-116311] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:08:35.664 [DEBUG] [Thread-116311] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:08:35.664 [DEBUG] [Thread-116311] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:08:35.664 [DEBUG] [Thread-116311] [transport.py] [_log()] client lang: <none>
2025-11-03T13:08:35.664 [DEBUG] [Thread-116311] [transport.py] [_log()] server lang: <none>
2025-11-03T13:08:35.664 [DEBUG] [Thread-116311] [transport.py] [_log()] kex follows: False
2025-11-03T13:08:35.664 [DEBUG] [Thread-116311] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:08:35.664 [DEBUG] [Thread-116311] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:08:35.664 [DEBUG] [Thread-116311] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:08:35.664 [DEBUG] [Thread-116311] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:08:35.664 [DEBUG] [Thread-116311] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:08:35.664 [DEBUG] [Thread-116311] [transport.py] [_log()] Compression: none
2025-11-03T13:08:35.664 [DEBUG] [Thread-116311] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:08:35.680 [DEBUG] [Thread-116311] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:08:35.681 [DEBUG] [Thread-116311] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:08:35.681 [DEBUG] [Thread-116311] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:08:35.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:08:35.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:08:35.683 [DEBUG] [Thread-116311] [transport.py] [_log()] userauth is OK
2025-11-03T13:08:35.684 [DEBUG] [Thread-116311] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:08:35.684 [DEBUG] [Thread-116311] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:08:35.684 [DEBUG] [Thread-116311] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:08:35.684 [DEBUG] [Thread-116311] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:08:35.707 [INFO] [Thread-116311] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:08:35.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:08:36.288 [DEBUG] [Thread-116311] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:08:36.288 [DEBUG] [Thread-116311] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:08:36.289 [DEBUG] [Thread-116311] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:08:36.329 [DEBUG] [Thread-116311] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:08:36.329 [DEBUG] [Thread-116311] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:08:36.332 [DEBUG] [Thread-116311] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:08:36.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:08:36.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:08:36.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:08:36.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:08:36.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:08:36.350 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:08:36.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:08:36.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:08:36.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:08:36.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.463993 -999.00  +25.10  18.44      8  -10.20 1 1 1 1 1   888    0 37.04 68.02 ----- 20.9 18.4 23.8 30.3 30.1 -29.5 29.3 -29.4 29.6 -28.2 30.2 -29.2
2025-11-03T13:08:36.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:08:36.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:08:36.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.463993
2025-11-03T13:08:36.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:08:36.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:08:36.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:08:36.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:08:36.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:08:36.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:08:24', tmtdew=45.72, humidity=3.82, cloud=0.0, wind=26.89, temperature=25.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:08:08.995', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:08:36.352 [DEBUG] [Thread-116311] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:08:36.423 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:08:36.436 [DEBUG] [Thread-116314] [transport.py] [_log()] starting thread (client mode): 0xed4c250
2025-11-03T13:08:36.436 [DEBUG] [Thread-116314] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:08:36.450 [DEBUG] [Thread-116314] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:08:36.450 [INFO] [Thread-116314] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:08:36.458 [DEBUG] [Thread-116314] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:08:36.458 [DEBUG] [Thread-116314] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:08:36.458 [DEBUG] [Thread-116314] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:08:36.458 [DEBUG] [Thread-116314] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:08:36.458 [DEBUG] [Thread-116314] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:08:36.458 [DEBUG] [Thread-116314] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:08:36.458 [DEBUG] [Thread-116314] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:08:36.458 [DEBUG] [Thread-116314] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:08:36.458 [DEBUG] [Thread-116314] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:08:36.458 [DEBUG] [Thread-116314] [transport.py] [_log()] client lang: <none>
2025-11-03T13:08:36.458 [DEBUG] [Thread-116314] [transport.py] [_log()] server lang: <none>
2025-11-03T13:08:36.458 [DEBUG] [Thread-116314] [transport.py] [_log()] kex follows: False
2025-11-03T13:08:36.458 [DEBUG] [Thread-116314] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:08:36.458 [DEBUG] [Thread-116314] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:08:36.458 [DEBUG] [Thread-116314] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:08:36.458 [DEBUG] [Thread-116314] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:08:36.458 [DEBUG] [Thread-116314] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:08:36.458 [DEBUG] [Thread-116314] [transport.py] [_log()] Compression: none
2025-11-03T13:08:36.458 [DEBUG] [Thread-116314] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:08:36.520 [DEBUG] [Thread-116314] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:08:36.520 [DEBUG] [Thread-116314] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:08:36.520 [DEBUG] [Thread-116314] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:08:36.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:08:36.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:08:36.577 [DEBUG] [Thread-116314] [transport.py] [_log()] userauth is OK
2025-11-03T13:08:36.577 [DEBUG] [Thread-116314] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:08:36.577 [DEBUG] [Thread-116314] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:08:36.577 [DEBUG] [Thread-116314] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:08:36.577 [DEBUG] [Thread-116314] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:08:36.591 [INFO] [Thread-116314] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:08:36.591 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:08:36.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:08:37.567 [DEBUG] [Thread-116314] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:08:37.567 [DEBUG] [Thread-116314] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:08:37.616 [DEBUG] [Thread-116314] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:08:37.616 [DEBUG] [Thread-116314] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:08:37.624 [DEBUG] [Thread-116314] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:08:37.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:08:37.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:08:37.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:08:37.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:08:37.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:08:37.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:08:37.660 [DEBUG] [Thread-116314] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:08:46.169 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:08:46.169 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:08:48.359 [DEBUG] [Thread-116316 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:09:03.421 [DEBUG] [Thread-116317 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:09:03.608 [DEBUG] [Thread-116318 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:09:07.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:09:07.679 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:09:07.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:09:08.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 8, 56), 46.12, 3.79, 0.0, 21.9, 25.78, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:09:08.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:08:56
2025-11-03T13:09:08.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:09:08.619 [DEBUG] [Thread-116319] [transport.py] [_log()] starting thread (client mode): 0x117bf190
2025-11-03T13:09:08.619 [DEBUG] [Thread-116319] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:09:08.640 [DEBUG] [Thread-116319] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:09:08.640 [INFO] [Thread-116319] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:09:08.643 [DEBUG] [Thread-116319] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:09:08.643 [DEBUG] [Thread-116319] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:09:08.643 [DEBUG] [Thread-116319] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:09:08.643 [DEBUG] [Thread-116319] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:09:08.643 [DEBUG] [Thread-116319] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:09:08.643 [DEBUG] [Thread-116319] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:09:08.643 [DEBUG] [Thread-116319] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:09:08.643 [DEBUG] [Thread-116319] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:09:08.643 [DEBUG] [Thread-116319] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:09:08.643 [DEBUG] [Thread-116319] [transport.py] [_log()] client lang: <none>
2025-11-03T13:09:08.643 [DEBUG] [Thread-116319] [transport.py] [_log()] server lang: <none>
2025-11-03T13:09:08.643 [DEBUG] [Thread-116319] [transport.py] [_log()] kex follows: False
2025-11-03T13:09:08.643 [DEBUG] [Thread-116319] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:09:08.643 [DEBUG] [Thread-116319] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:09:08.644 [DEBUG] [Thread-116319] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:09:08.644 [DEBUG] [Thread-116319] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:09:08.644 [DEBUG] [Thread-116319] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:09:08.644 [DEBUG] [Thread-116319] [transport.py] [_log()] Compression: none
2025-11-03T13:09:08.644 [DEBUG] [Thread-116319] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:09:08.662 [DEBUG] [Thread-116319] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:09:08.663 [DEBUG] [Thread-116319] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:09:08.664 [DEBUG] [Thread-116319] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:09:08.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:09:08.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:09:08.666 [DEBUG] [Thread-116319] [transport.py] [_log()] userauth is OK
2025-11-03T13:09:08.666 [DEBUG] [Thread-116319] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:09:08.666 [DEBUG] [Thread-116319] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:09:08.666 [DEBUG] [Thread-116319] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:09:08.666 [DEBUG] [Thread-116319] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:09:08.691 [INFO] [Thread-116319] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:09:08.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:09:09.338 [DEBUG] [Thread-116319] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:09:09.338 [DEBUG] [Thread-116319] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:09:09.338 [DEBUG] [Thread-116319] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:09:09.379 [DEBUG] [Thread-116319] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:09:09.379 [DEBUG] [Thread-116319] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:09:09.382 [DEBUG] [Thread-116319] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:09:09.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:09:09.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:09:09.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:09:09.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:09:09.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:09:09.417 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:09:09.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:09:09.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:09:09.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:09:09.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.464340 -999.00  +25.40  23.36      8  -10.60 1 1 1 1 1   888    0 37.30 69.26 ----- 23.3 23.4 343.0 29.7 30.1 -31.2 29.3 -30.1 29.6 -28.7 30.1 -29.5
2025-11-03T13:09:09.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:09:09.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:09:09.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.464340
2025-11-03T13:09:09.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:09:09.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:09:09.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:09:09.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:09:09.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:09:09.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:08:56', tmtdew=46.12, humidity=3.79, cloud=0.0, wind=21.9, temperature=25.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:08:38.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:09:09.421 [DEBUG] [Thread-116319] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:09:09.504 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:09:09.516 [DEBUG] [Thread-116322] [transport.py] [_log()] starting thread (client mode): 0x81b95d0
2025-11-03T13:09:09.516 [DEBUG] [Thread-116322] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:09:09.531 [DEBUG] [Thread-116322] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:09:09.531 [INFO] [Thread-116322] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:09:09.539 [DEBUG] [Thread-116322] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:09:09.539 [DEBUG] [Thread-116322] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:09:09.539 [DEBUG] [Thread-116322] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:09:09.539 [DEBUG] [Thread-116322] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:09:09.539 [DEBUG] [Thread-116322] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:09:09.540 [DEBUG] [Thread-116322] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:09:09.540 [DEBUG] [Thread-116322] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:09:09.540 [DEBUG] [Thread-116322] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:09:09.540 [DEBUG] [Thread-116322] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:09:09.540 [DEBUG] [Thread-116322] [transport.py] [_log()] client lang: <none>
2025-11-03T13:09:09.540 [DEBUG] [Thread-116322] [transport.py] [_log()] server lang: <none>
2025-11-03T13:09:09.540 [DEBUG] [Thread-116322] [transport.py] [_log()] kex follows: False
2025-11-03T13:09:09.540 [DEBUG] [Thread-116322] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:09:09.541 [DEBUG] [Thread-116322] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:09:09.541 [DEBUG] [Thread-116322] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:09:09.541 [DEBUG] [Thread-116322] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:09:09.541 [DEBUG] [Thread-116322] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:09:09.541 [DEBUG] [Thread-116322] [transport.py] [_log()] Compression: none
2025-11-03T13:09:09.541 [DEBUG] [Thread-116322] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:09:09.596 [DEBUG] [Thread-116322] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:09:09.597 [DEBUG] [Thread-116322] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:09:09.597 [DEBUG] [Thread-116322] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:09:09.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:09:09.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:09:09.653 [DEBUG] [Thread-116322] [transport.py] [_log()] userauth is OK
2025-11-03T13:09:09.653 [DEBUG] [Thread-116322] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:09:09.653 [DEBUG] [Thread-116322] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:09:09.653 [DEBUG] [Thread-116322] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:09:09.653 [DEBUG] [Thread-116322] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:09:09.667 [INFO] [Thread-116322] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:09:09.667 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:09:09.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:09:10.500 [DEBUG] [Thread-116322] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:09:10.501 [DEBUG] [Thread-116322] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:09:10.551 [DEBUG] [Thread-116322] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:09:10.551 [DEBUG] [Thread-116322] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:09:10.561 [DEBUG] [Thread-116322] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:09:10.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:09:10.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:09:10.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:09:10.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:09:10.590 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:09:10.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:09:10.599 [DEBUG] [Thread-116322] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:09:18.451 [DEBUG] [Thread-116324 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:09:33.497 [DEBUG] [Thread-116325 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:09:40.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:09:40.621 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:09:40.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:09:41.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 9, 29), 45.74, 3.9, 0.0, 21.77, 25.73, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:09:41.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:09:29
2025-11-03T13:09:41.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:09:41.637 [DEBUG] [Thread-116326] [transport.py] [_log()] starting thread (client mode): 0x117830a0
2025-11-03T13:09:41.637 [DEBUG] [Thread-116326] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:09:41.658 [DEBUG] [Thread-116326] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:09:41.658 [INFO] [Thread-116326] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:09:41.660 [DEBUG] [Thread-116326] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:09:41.660 [DEBUG] [Thread-116326] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:09:41.660 [DEBUG] [Thread-116326] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:09:41.660 [DEBUG] [Thread-116326] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:09:41.660 [DEBUG] [Thread-116326] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:09:41.660 [DEBUG] [Thread-116326] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:09:41.660 [DEBUG] [Thread-116326] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:09:41.660 [DEBUG] [Thread-116326] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:09:41.660 [DEBUG] [Thread-116326] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:09:41.660 [DEBUG] [Thread-116326] [transport.py] [_log()] client lang: <none>
2025-11-03T13:09:41.660 [DEBUG] [Thread-116326] [transport.py] [_log()] server lang: <none>
2025-11-03T13:09:41.660 [DEBUG] [Thread-116326] [transport.py] [_log()] kex follows: False
2025-11-03T13:09:41.660 [DEBUG] [Thread-116326] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:09:41.660 [DEBUG] [Thread-116326] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:09:41.660 [DEBUG] [Thread-116326] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:09:41.660 [DEBUG] [Thread-116326] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:09:41.660 [DEBUG] [Thread-116326] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:09:41.660 [DEBUG] [Thread-116326] [transport.py] [_log()] Compression: none
2025-11-03T13:09:41.660 [DEBUG] [Thread-116326] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:09:41.677 [DEBUG] [Thread-116326] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:09:41.677 [DEBUG] [Thread-116326] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:09:41.678 [DEBUG] [Thread-116326] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:09:41.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:09:41.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:09:41.678 [DEBUG] [Thread-116326] [transport.py] [_log()] userauth is OK
2025-11-03T13:09:41.679 [DEBUG] [Thread-116326] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:09:41.679 [DEBUG] [Thread-116326] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:09:41.679 [DEBUG] [Thread-116326] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:09:41.679 [DEBUG] [Thread-116326] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:09:41.691 [INFO] [Thread-116326] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:09:41.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:09:42.343 [DEBUG] [Thread-116326] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:09:42.343 [DEBUG] [Thread-116326] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:09:42.344 [DEBUG] [Thread-116326] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:09:42.384 [DEBUG] [Thread-116326] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:09:42.384 [DEBUG] [Thread-116326] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:09:42.387 [DEBUG] [Thread-116326] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:09:42.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:09:42.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:09:42.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:09:42.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:09:42.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:09:42.404 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:09:42.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:09:42.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:09:42.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:09:42.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.464687 -999.00  +25.50  20.69      8  -10.50 1 1 1 1 1   888    0 38.12 77.33 ----- 18.8 20.7 21.1 30.1 30.2 -30.0 29.3 -28.5 29.6 -28.2 30.2 -28.1
2025-11-03T13:09:42.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:09:42.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:09:42.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.464687
2025-11-03T13:09:42.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:09:42.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:09:42.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:09:42.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:09:42.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:09:42.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:09:29', tmtdew=45.74, humidity=3.9, cloud=0.0, wind=21.77, temperature=25.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:09:08.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:09:42.405 [DEBUG] [Thread-116326] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:09:42.480 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:09:42.492 [DEBUG] [Thread-116329] [transport.py] [_log()] starting thread (client mode): 0x81bae30
2025-11-03T13:09:42.492 [DEBUG] [Thread-116329] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:09:42.509 [DEBUG] [Thread-116329] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:09:42.509 [INFO] [Thread-116329] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:09:42.517 [DEBUG] [Thread-116329] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:09:42.517 [DEBUG] [Thread-116329] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:09:42.517 [DEBUG] [Thread-116329] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:09:42.517 [DEBUG] [Thread-116329] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:09:42.517 [DEBUG] [Thread-116329] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:09:42.517 [DEBUG] [Thread-116329] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:09:42.517 [DEBUG] [Thread-116329] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:09:42.517 [DEBUG] [Thread-116329] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:09:42.517 [DEBUG] [Thread-116329] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:09:42.517 [DEBUG] [Thread-116329] [transport.py] [_log()] client lang: <none>
2025-11-03T13:09:42.517 [DEBUG] [Thread-116329] [transport.py] [_log()] server lang: <none>
2025-11-03T13:09:42.517 [DEBUG] [Thread-116329] [transport.py] [_log()] kex follows: False
2025-11-03T13:09:42.517 [DEBUG] [Thread-116329] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:09:42.517 [DEBUG] [Thread-116329] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:09:42.517 [DEBUG] [Thread-116329] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:09:42.517 [DEBUG] [Thread-116329] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:09:42.517 [DEBUG] [Thread-116329] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:09:42.517 [DEBUG] [Thread-116329] [transport.py] [_log()] Compression: none
2025-11-03T13:09:42.517 [DEBUG] [Thread-116329] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:09:42.573 [DEBUG] [Thread-116329] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:09:42.573 [DEBUG] [Thread-116329] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:09:42.573 [DEBUG] [Thread-116329] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:09:42.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:09:42.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:09:42.630 [DEBUG] [Thread-116329] [transport.py] [_log()] userauth is OK
2025-11-03T13:09:42.630 [DEBUG] [Thread-116329] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:09:42.630 [DEBUG] [Thread-116329] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:09:42.630 [DEBUG] [Thread-116329] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:09:42.630 [DEBUG] [Thread-116329] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:09:42.648 [INFO] [Thread-116329] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:09:42.649 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:09:42.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:09:43.492 [DEBUG] [Thread-116329] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:09:43.492 [DEBUG] [Thread-116329] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:09:43.539 [DEBUG] [Thread-116329] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:09:43.540 [DEBUG] [Thread-116329] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:09:43.548 [DEBUG] [Thread-116329] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:09:43.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:09:43.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:09:43.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:09:43.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:09:43.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:09:43.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:09:43.581 [DEBUG] [Thread-116329] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:09:46.310 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:09:46.311 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:09:48.529 [DEBUG] [Thread-116331 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:10:03.591 [DEBUG] [Thread-116332 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:10:03.656 [DEBUG] [Thread-116333 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:10:13.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:10:13.603 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:10:13.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:10:14.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 10, 1), 45.94, 3.87, 0.0, 31.78, 26.02, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:10:14.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:10:01
2025-11-03T13:10:14.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:10:14.651 [DEBUG] [Thread-116334] [transport.py] [_log()] starting thread (client mode): 0xedd62c0
2025-11-03T13:10:14.651 [DEBUG] [Thread-116334] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:10:14.670 [DEBUG] [Thread-116334] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:10:14.671 [INFO] [Thread-116334] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:10:14.672 [DEBUG] [Thread-116334] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:10:14.672 [DEBUG] [Thread-116334] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:10:14.672 [DEBUG] [Thread-116334] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:10:14.672 [DEBUG] [Thread-116334] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:10:14.672 [DEBUG] [Thread-116334] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:10:14.672 [DEBUG] [Thread-116334] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:10:14.672 [DEBUG] [Thread-116334] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:10:14.672 [DEBUG] [Thread-116334] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:10:14.672 [DEBUG] [Thread-116334] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:10:14.672 [DEBUG] [Thread-116334] [transport.py] [_log()] client lang: <none>
2025-11-03T13:10:14.672 [DEBUG] [Thread-116334] [transport.py] [_log()] server lang: <none>
2025-11-03T13:10:14.672 [DEBUG] [Thread-116334] [transport.py] [_log()] kex follows: False
2025-11-03T13:10:14.672 [DEBUG] [Thread-116334] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:10:14.672 [DEBUG] [Thread-116334] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:10:14.672 [DEBUG] [Thread-116334] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:10:14.672 [DEBUG] [Thread-116334] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:10:14.672 [DEBUG] [Thread-116334] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:10:14.672 [DEBUG] [Thread-116334] [transport.py] [_log()] Compression: none
2025-11-03T13:10:14.672 [DEBUG] [Thread-116334] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:10:14.680 [DEBUG] [Thread-116334] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:10:14.680 [DEBUG] [Thread-116334] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:10:14.681 [DEBUG] [Thread-116334] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:10:14.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:10:14.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:10:14.682 [DEBUG] [Thread-116334] [transport.py] [_log()] userauth is OK
2025-11-03T13:10:14.682 [DEBUG] [Thread-116334] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:10:14.682 [DEBUG] [Thread-116334] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:10:14.682 [DEBUG] [Thread-116334] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:10:14.682 [DEBUG] [Thread-116334] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:10:14.703 [INFO] [Thread-116334] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:10:14.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:10:16.369 [DEBUG] [Thread-116334] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:10:16.369 [DEBUG] [Thread-116334] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:10:16.369 [DEBUG] [Thread-116334] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:10:16.410 [DEBUG] [Thread-116334] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:10:16.410 [DEBUG] [Thread-116334] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:10:16.413 [DEBUG] [Thread-116334] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:10:16.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:10:16.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:10:16.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:10:16.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:10:16.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:10:16.444 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:10:16.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:10:16.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:10:16.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:10:16.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.465034 -999.00  +25.30  22.64      8  -10.50 1 1 1 1 1   888    0 38.13 77.47 ----- 21.6 22.6 35.8 24.8 30.2 -30.3 29.4 -29.7 29.6 -28.3 30.4 -28.5
2025-11-03T13:10:16.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:10:16.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:10:16.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.465034
2025-11-03T13:10:16.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:10:16.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:10:16.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:10:16.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:10:16.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:10:16.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:10:01', tmtdew=45.94, humidity=3.87, cloud=0.0, wind=31.78, temperature=26.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:09:38.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:10:16.447 [DEBUG] [Thread-116334] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:10:16.531 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:10:16.544 [DEBUG] [Thread-116337] [transport.py] [_log()] starting thread (client mode): 0xedd43d0
2025-11-03T13:10:16.544 [DEBUG] [Thread-116337] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:10:16.562 [DEBUG] [Thread-116337] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:10:16.562 [INFO] [Thread-116337] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:10:16.570 [DEBUG] [Thread-116337] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:10:16.570 [DEBUG] [Thread-116337] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:10:16.571 [DEBUG] [Thread-116337] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:10:16.571 [DEBUG] [Thread-116337] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:10:16.571 [DEBUG] [Thread-116337] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:10:16.571 [DEBUG] [Thread-116337] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:10:16.571 [DEBUG] [Thread-116337] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:10:16.571 [DEBUG] [Thread-116337] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:10:16.571 [DEBUG] [Thread-116337] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:10:16.571 [DEBUG] [Thread-116337] [transport.py] [_log()] client lang: <none>
2025-11-03T13:10:16.572 [DEBUG] [Thread-116337] [transport.py] [_log()] server lang: <none>
2025-11-03T13:10:16.572 [DEBUG] [Thread-116337] [transport.py] [_log()] kex follows: False
2025-11-03T13:10:16.572 [DEBUG] [Thread-116337] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:10:16.572 [DEBUG] [Thread-116337] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:10:16.572 [DEBUG] [Thread-116337] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:10:16.572 [DEBUG] [Thread-116337] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:10:16.572 [DEBUG] [Thread-116337] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:10:16.573 [DEBUG] [Thread-116337] [transport.py] [_log()] Compression: none
2025-11-03T13:10:16.573 [DEBUG] [Thread-116337] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:10:16.634 [DEBUG] [Thread-116337] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:10:16.634 [DEBUG] [Thread-116337] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:10:16.635 [DEBUG] [Thread-116337] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:10:16.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:10:16.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:10:16.697 [DEBUG] [Thread-116337] [transport.py] [_log()] userauth is OK
2025-11-03T13:10:16.697 [DEBUG] [Thread-116337] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:10:16.697 [DEBUG] [Thread-116337] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:10:16.698 [DEBUG] [Thread-116337] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:10:16.698 [DEBUG] [Thread-116337] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:10:16.725 [INFO] [Thread-116337] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:10:16.726 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:10:16.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:10:17.614 [DEBUG] [Thread-116337] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:10:17.614 [DEBUG] [Thread-116337] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:10:17.663 [DEBUG] [Thread-116337] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:10:17.663 [DEBUG] [Thread-116337] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:10:17.672 [DEBUG] [Thread-116337] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:10:17.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:10:17.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:10:17.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:10:17.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:10:17.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:10:17.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:10:17.723 [DEBUG] [Thread-116337] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:10:18.622 [DEBUG] [Thread-116339 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:10:33.663 [DEBUG] [Thread-116340 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:10:46.453 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:10:46.457 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:10:47.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:10:47.745 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:10:47.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:10:48.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 10, 33), 46.22, 3.82, 0.0, 29.45, 26.1, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:10:48.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:10:33
2025-11-03T13:10:48.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:10:48.683 [DEBUG] [Thread-116341] [transport.py] [_log()] starting thread (client mode): 0xedd7a00
2025-11-03T13:10:48.683 [DEBUG] [Thread-116341] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:10:48.693 [DEBUG] [Thread-116342 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:10:48.705 [DEBUG] [Thread-116341] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:10:48.705 [INFO] [Thread-116341] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:10:48.708 [DEBUG] [Thread-116341] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:10:48.708 [DEBUG] [Thread-116341] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:10:48.709 [DEBUG] [Thread-116341] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:10:48.709 [DEBUG] [Thread-116341] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:10:48.709 [DEBUG] [Thread-116341] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:10:48.709 [DEBUG] [Thread-116341] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:10:48.709 [DEBUG] [Thread-116341] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:10:48.709 [DEBUG] [Thread-116341] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:10:48.709 [DEBUG] [Thread-116341] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:10:48.709 [DEBUG] [Thread-116341] [transport.py] [_log()] client lang: <none>
2025-11-03T13:10:48.709 [DEBUG] [Thread-116341] [transport.py] [_log()] server lang: <none>
2025-11-03T13:10:48.709 [DEBUG] [Thread-116341] [transport.py] [_log()] kex follows: False
2025-11-03T13:10:48.709 [DEBUG] [Thread-116341] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:10:48.709 [DEBUG] [Thread-116341] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:10:48.709 [DEBUG] [Thread-116341] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:10:48.709 [DEBUG] [Thread-116341] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:10:48.709 [DEBUG] [Thread-116341] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:10:48.710 [DEBUG] [Thread-116341] [transport.py] [_log()] Compression: none
2025-11-03T13:10:48.710 [DEBUG] [Thread-116341] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:10:48.727 [DEBUG] [Thread-116341] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:10:48.727 [DEBUG] [Thread-116341] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:10:48.728 [DEBUG] [Thread-116341] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:10:48.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:10:48.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:10:48.730 [DEBUG] [Thread-116341] [transport.py] [_log()] userauth is OK
2025-11-03T13:10:48.730 [DEBUG] [Thread-116341] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:10:48.730 [DEBUG] [Thread-116341] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:10:48.730 [DEBUG] [Thread-116341] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:10:48.730 [DEBUG] [Thread-116341] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:10:48.756 [INFO] [Thread-116341] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:10:48.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:10:49.377 [DEBUG] [Thread-116341] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:10:49.377 [DEBUG] [Thread-116341] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:10:49.378 [DEBUG] [Thread-116341] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:10:49.418 [DEBUG] [Thread-116341] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:10:49.418 [DEBUG] [Thread-116341] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:10:49.421 [DEBUG] [Thread-116341] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:10:49.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:10:49.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:10:49.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:10:49.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:10:49.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:10:49.447 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:10:49.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:10:49.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:10:49.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:10:49.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.465381 -999.00  +25.10  22.46      8  -10.80 1 1 1 1 1   888    0 38.11 72.68 ----- 20.4 22.5 43.8 35.7 30.2 -31.1 29.4 -29.9 29.6 -29.0 30.4 -28.1
2025-11-03T13:10:49.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:10:49.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:10:49.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.465381
2025-11-03T13:10:49.456 [DEBUG] [Thread-116341] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:10:49.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:10:49.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:10:49.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:10:49.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:10:49.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:10:49.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:10:33', tmtdew=46.22, humidity=3.82, cloud=0.0, wind=29.45, temperature=26.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:10:08.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:10:49.541 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:10:49.554 [DEBUG] [Thread-116345] [transport.py] [_log()] starting thread (client mode): 0xedd7d60
2025-11-03T13:10:49.554 [DEBUG] [Thread-116345] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:10:49.569 [DEBUG] [Thread-116345] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:10:49.569 [INFO] [Thread-116345] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:10:49.577 [DEBUG] [Thread-116345] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:10:49.577 [DEBUG] [Thread-116345] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:10:49.578 [DEBUG] [Thread-116345] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:10:49.578 [DEBUG] [Thread-116345] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:10:49.578 [DEBUG] [Thread-116345] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:10:49.578 [DEBUG] [Thread-116345] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:10:49.578 [DEBUG] [Thread-116345] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:10:49.578 [DEBUG] [Thread-116345] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:10:49.578 [DEBUG] [Thread-116345] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:10:49.578 [DEBUG] [Thread-116345] [transport.py] [_log()] client lang: <none>
2025-11-03T13:10:49.578 [DEBUG] [Thread-116345] [transport.py] [_log()] server lang: <none>
2025-11-03T13:10:49.579 [DEBUG] [Thread-116345] [transport.py] [_log()] kex follows: False
2025-11-03T13:10:49.579 [DEBUG] [Thread-116345] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:10:49.579 [DEBUG] [Thread-116345] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:10:49.579 [DEBUG] [Thread-116345] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:10:49.579 [DEBUG] [Thread-116345] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:10:49.579 [DEBUG] [Thread-116345] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:10:49.579 [DEBUG] [Thread-116345] [transport.py] [_log()] Compression: none
2025-11-03T13:10:49.579 [DEBUG] [Thread-116345] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:10:49.639 [DEBUG] [Thread-116345] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:10:49.640 [DEBUG] [Thread-116345] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:10:49.640 [DEBUG] [Thread-116345] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:10:49.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:10:49.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:10:49.699 [DEBUG] [Thread-116345] [transport.py] [_log()] userauth is OK
2025-11-03T13:10:49.699 [DEBUG] [Thread-116345] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:10:49.699 [DEBUG] [Thread-116345] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:10:49.699 [DEBUG] [Thread-116345] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:10:49.699 [DEBUG] [Thread-116345] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:10:49.719 [INFO] [Thread-116345] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:10:49.719 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:10:49.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:10:50.570 [DEBUG] [Thread-116345] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:10:50.570 [DEBUG] [Thread-116345] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:10:50.618 [DEBUG] [Thread-116345] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:10:50.618 [DEBUG] [Thread-116345] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:10:50.627 [DEBUG] [Thread-116345] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:10:50.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:10:50.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:10:50.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:10:50.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:10:50.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:10:50.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:10:50.658 [DEBUG] [Thread-116345] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:11:03.712 [DEBUG] [Thread-116347 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:11:03.725 [DEBUG] [Thread-116348 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:11:18.767 [DEBUG] [Thread-116349 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:11:20.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:11:20.669 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:11:20.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:11:21.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 11, 6), 46.57, 3.72, 0.0, 29.38, 26.18, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:11:21.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:11:06
2025-11-03T13:11:21.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:11:21.644 [DEBUG] [Thread-116350] [transport.py] [_log()] starting thread (client mode): 0x117be3e0
2025-11-03T13:11:21.644 [DEBUG] [Thread-116350] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:11:21.665 [DEBUG] [Thread-116350] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:11:21.665 [INFO] [Thread-116350] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:11:21.667 [DEBUG] [Thread-116350] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:11:21.667 [DEBUG] [Thread-116350] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:11:21.667 [DEBUG] [Thread-116350] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:11:21.667 [DEBUG] [Thread-116350] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:11:21.667 [DEBUG] [Thread-116350] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:11:21.667 [DEBUG] [Thread-116350] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:11:21.667 [DEBUG] [Thread-116350] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:11:21.667 [DEBUG] [Thread-116350] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:11:21.667 [DEBUG] [Thread-116350] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:11:21.667 [DEBUG] [Thread-116350] [transport.py] [_log()] client lang: <none>
2025-11-03T13:11:21.667 [DEBUG] [Thread-116350] [transport.py] [_log()] server lang: <none>
2025-11-03T13:11:21.668 [DEBUG] [Thread-116350] [transport.py] [_log()] kex follows: False
2025-11-03T13:11:21.668 [DEBUG] [Thread-116350] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:11:21.668 [DEBUG] [Thread-116350] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:11:21.668 [DEBUG] [Thread-116350] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:11:21.668 [DEBUG] [Thread-116350] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:11:21.668 [DEBUG] [Thread-116350] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:11:21.668 [DEBUG] [Thread-116350] [transport.py] [_log()] Compression: none
2025-11-03T13:11:21.668 [DEBUG] [Thread-116350] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:11:21.680 [DEBUG] [Thread-116350] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:11:21.681 [DEBUG] [Thread-116350] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:11:21.681 [DEBUG] [Thread-116350] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:11:21.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:11:21.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:11:21.683 [DEBUG] [Thread-116350] [transport.py] [_log()] userauth is OK
2025-11-03T13:11:21.683 [DEBUG] [Thread-116350] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:11:21.683 [DEBUG] [Thread-116350] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:11:21.683 [DEBUG] [Thread-116350] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:11:21.683 [DEBUG] [Thread-116350] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:11:21.699 [INFO] [Thread-116350] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:11:21.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:11:22.319 [DEBUG] [Thread-116350] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:11:22.319 [DEBUG] [Thread-116350] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:11:22.320 [DEBUG] [Thread-116350] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:11:22.360 [DEBUG] [Thread-116350] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:11:22.360 [DEBUG] [Thread-116350] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:11:22.363 [DEBUG] [Thread-116350] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:11:22.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:11:22.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:11:22.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:11:22.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:11:22.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:11:22.397 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:11:22.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:11:22.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:11:22.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:11:22.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.465729 -999.00  +25.40  13.39      8  -10.10 1 1 1 1 1   888    0 36.40 68.00 ----- 18.3 13.4 313.4 32.0 30.2 -29.8 29.4 -29.9 29.5 -28.8 30.4 -27.9
2025-11-03T13:11:22.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:11:22.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:11:22.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.465729
2025-11-03T13:11:22.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:11:22.406 [DEBUG] [Thread-116350] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:11:22.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:11:22.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:11:22.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:11:22.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:11:22.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:11:06', tmtdew=46.57, humidity=3.72, cloud=0.0, wind=29.38, temperature=26.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:10:38.986', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:11:22.491 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:11:22.504 [DEBUG] [Thread-116353] [transport.py] [_log()] starting thread (client mode): 0x11783eb0
2025-11-03T13:11:22.504 [DEBUG] [Thread-116353] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:11:22.519 [DEBUG] [Thread-116353] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:11:22.519 [INFO] [Thread-116353] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:11:22.528 [DEBUG] [Thread-116353] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:11:22.528 [DEBUG] [Thread-116353] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:11:22.528 [DEBUG] [Thread-116353] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:11:22.528 [DEBUG] [Thread-116353] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:11:22.528 [DEBUG] [Thread-116353] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:11:22.529 [DEBUG] [Thread-116353] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:11:22.529 [DEBUG] [Thread-116353] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:11:22.529 [DEBUG] [Thread-116353] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:11:22.529 [DEBUG] [Thread-116353] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:11:22.529 [DEBUG] [Thread-116353] [transport.py] [_log()] client lang: <none>
2025-11-03T13:11:22.529 [DEBUG] [Thread-116353] [transport.py] [_log()] server lang: <none>
2025-11-03T13:11:22.529 [DEBUG] [Thread-116353] [transport.py] [_log()] kex follows: False
2025-11-03T13:11:22.529 [DEBUG] [Thread-116353] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:11:22.529 [DEBUG] [Thread-116353] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:11:22.529 [DEBUG] [Thread-116353] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:11:22.529 [DEBUG] [Thread-116353] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:11:22.529 [DEBUG] [Thread-116353] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:11:22.529 [DEBUG] [Thread-116353] [transport.py] [_log()] Compression: none
2025-11-03T13:11:22.539 [DEBUG] [Thread-116353] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:11:22.586 [DEBUG] [Thread-116353] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:11:22.587 [DEBUG] [Thread-116353] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:11:22.588 [DEBUG] [Thread-116353] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:11:22.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:11:22.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:11:22.642 [DEBUG] [Thread-116353] [transport.py] [_log()] userauth is OK
2025-11-03T13:11:22.643 [DEBUG] [Thread-116353] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:11:22.643 [DEBUG] [Thread-116353] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:11:22.643 [DEBUG] [Thread-116353] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:11:22.643 [DEBUG] [Thread-116353] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:11:22.663 [INFO] [Thread-116353] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:11:22.663 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:11:22.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:11:23.531 [DEBUG] [Thread-116353] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:11:23.531 [DEBUG] [Thread-116353] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:11:23.579 [DEBUG] [Thread-116353] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:11:23.579 [DEBUG] [Thread-116353] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:11:23.588 [DEBUG] [Thread-116353] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:11:23.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:11:23.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:11:23.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:11:23.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:11:23.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:11:23.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:11:23.626 [DEBUG] [Thread-116353] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:11:33.800 [DEBUG] [Thread-116355 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:11:46.598 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:11:46.599 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:11:48.856 [DEBUG] [Thread-116356 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:11:53.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:11:53.635 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:11:53.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:11:54.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 11, 38), 46.65, 3.75, 0.0, 33.17, 26.56, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:11:54.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:11:38
2025-11-03T13:11:54.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:11:54.587 [DEBUG] [Thread-116357] [transport.py] [_log()] starting thread (client mode): 0x117bccd0
2025-11-03T13:11:54.587 [DEBUG] [Thread-116357] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:11:54.608 [DEBUG] [Thread-116357] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:11:54.608 [INFO] [Thread-116357] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:11:54.611 [DEBUG] [Thread-116357] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:11:54.611 [DEBUG] [Thread-116357] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:11:54.611 [DEBUG] [Thread-116357] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:11:54.611 [DEBUG] [Thread-116357] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:11:54.611 [DEBUG] [Thread-116357] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:11:54.611 [DEBUG] [Thread-116357] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:11:54.611 [DEBUG] [Thread-116357] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:11:54.612 [DEBUG] [Thread-116357] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:11:54.612 [DEBUG] [Thread-116357] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:11:54.612 [DEBUG] [Thread-116357] [transport.py] [_log()] client lang: <none>
2025-11-03T13:11:54.612 [DEBUG] [Thread-116357] [transport.py] [_log()] server lang: <none>
2025-11-03T13:11:54.612 [DEBUG] [Thread-116357] [transport.py] [_log()] kex follows: False
2025-11-03T13:11:54.612 [DEBUG] [Thread-116357] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:11:54.612 [DEBUG] [Thread-116357] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:11:54.612 [DEBUG] [Thread-116357] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:11:54.612 [DEBUG] [Thread-116357] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:11:54.612 [DEBUG] [Thread-116357] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:11:54.621 [DEBUG] [Thread-116357] [transport.py] [_log()] Compression: none
2025-11-03T13:11:54.621 [DEBUG] [Thread-116357] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:11:54.640 [DEBUG] [Thread-116357] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:11:54.640 [DEBUG] [Thread-116357] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:11:54.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:11:54.641 [DEBUG] [Thread-116357] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:11:54.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:11:54.642 [DEBUG] [Thread-116357] [transport.py] [_log()] userauth is OK
2025-11-03T13:11:54.643 [DEBUG] [Thread-116357] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:11:54.643 [DEBUG] [Thread-116357] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:11:54.643 [DEBUG] [Thread-116357] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:11:54.643 [DEBUG] [Thread-116357] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:11:54.682 [INFO] [Thread-116357] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:11:54.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:11:55.318 [DEBUG] [Thread-116357] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:11:55.318 [DEBUG] [Thread-116357] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:11:55.318 [DEBUG] [Thread-116357] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:11:55.359 [DEBUG] [Thread-116357] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:11:55.359 [DEBUG] [Thread-116357] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:11:55.361 [DEBUG] [Thread-116357] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:11:55.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:11:55.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:11:55.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:11:55.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:11:55.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:11:55.379 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:11:55.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:11:55.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:11:55.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:11:55.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.466076 -999.00  +26.20  41.62      8  -10.10 1 1 2 1 1   888    0 37.61 67.81 ----- 32.4 41.6 11.6 45.4 30.4 -28.9 29.6 -28.3 29.8 -28.0 30.3 -33.1
2025-11-03T13:11:55.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:11:55.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:11:55.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.466076
2025-11-03T13:11:55.388 [DEBUG] [Thread-116357] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:11:55.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:11:55.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:11:55.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:11:55.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:11:55.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:11:55.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:11:38', tmtdew=46.65, humidity=3.75, cloud=0.0, wind=33.17, temperature=26.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:11:08.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:11:55.461 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:11:55.472 [DEBUG] [Thread-116360] [transport.py] [_log()] starting thread (client mode): 0x11781120
2025-11-03T13:11:55.472 [DEBUG] [Thread-116360] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:11:55.490 [DEBUG] [Thread-116360] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:11:55.491 [INFO] [Thread-116360] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:11:55.498 [DEBUG] [Thread-116360] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:11:55.498 [DEBUG] [Thread-116360] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:11:55.498 [DEBUG] [Thread-116360] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:11:55.498 [DEBUG] [Thread-116360] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:11:55.498 [DEBUG] [Thread-116360] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:11:55.498 [DEBUG] [Thread-116360] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:11:55.498 [DEBUG] [Thread-116360] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:11:55.498 [DEBUG] [Thread-116360] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:11:55.498 [DEBUG] [Thread-116360] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:11:55.498 [DEBUG] [Thread-116360] [transport.py] [_log()] client lang: <none>
2025-11-03T13:11:55.498 [DEBUG] [Thread-116360] [transport.py] [_log()] server lang: <none>
2025-11-03T13:11:55.498 [DEBUG] [Thread-116360] [transport.py] [_log()] kex follows: False
2025-11-03T13:11:55.498 [DEBUG] [Thread-116360] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:11:55.498 [DEBUG] [Thread-116360] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:11:55.499 [DEBUG] [Thread-116360] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:11:55.499 [DEBUG] [Thread-116360] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:11:55.499 [DEBUG] [Thread-116360] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:11:55.499 [DEBUG] [Thread-116360] [transport.py] [_log()] Compression: none
2025-11-03T13:11:55.499 [DEBUG] [Thread-116360] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:11:55.556 [DEBUG] [Thread-116360] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:11:55.556 [DEBUG] [Thread-116360] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:11:55.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:11:55.556 [DEBUG] [Thread-116360] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:11:55.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:11:55.613 [DEBUG] [Thread-116360] [transport.py] [_log()] userauth is OK
2025-11-03T13:11:55.613 [DEBUG] [Thread-116360] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:11:55.613 [DEBUG] [Thread-116360] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:11:55.613 [DEBUG] [Thread-116360] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:11:55.613 [DEBUG] [Thread-116360] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:11:55.627 [INFO] [Thread-116360] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:11:55.627 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:11:55.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:11:56.503 [DEBUG] [Thread-116360] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:11:56.504 [DEBUG] [Thread-116360] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:11:56.553 [DEBUG] [Thread-116360] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:11:56.553 [DEBUG] [Thread-116360] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:11:56.562 [DEBUG] [Thread-116360] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:11:56.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:11:56.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:11:56.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:11:56.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:11:56.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:11:56.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:11:56.599 [DEBUG] [Thread-116360] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:12:03.768 [DEBUG] [Thread-116362 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:12:03.897 [DEBUG] [Thread-116363 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:12:18.962 [DEBUG] [Thread-116364 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:12:26.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:12:26.622 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:12:26.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:12:27.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 12, 10), 46.59, 3.77, 0.0, 33.88, 26.55, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:12:27.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:12:10
2025-11-03T13:12:27.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:12:27.550 [DEBUG] [Thread-116365] [transport.py] [_log()] starting thread (client mode): 0xedd5f60
2025-11-03T13:12:27.550 [DEBUG] [Thread-116365] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:12:27.562 [DEBUG] [Thread-116365] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:12:27.562 [INFO] [Thread-116365] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:12:27.565 [DEBUG] [Thread-116365] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:12:27.565 [DEBUG] [Thread-116365] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:12:27.565 [DEBUG] [Thread-116365] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:12:27.565 [DEBUG] [Thread-116365] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:12:27.565 [DEBUG] [Thread-116365] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:12:27.565 [DEBUG] [Thread-116365] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:12:27.565 [DEBUG] [Thread-116365] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:12:27.565 [DEBUG] [Thread-116365] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:12:27.565 [DEBUG] [Thread-116365] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:12:27.565 [DEBUG] [Thread-116365] [transport.py] [_log()] client lang: <none>
2025-11-03T13:12:27.565 [DEBUG] [Thread-116365] [transport.py] [_log()] server lang: <none>
2025-11-03T13:12:27.565 [DEBUG] [Thread-116365] [transport.py] [_log()] kex follows: False
2025-11-03T13:12:27.565 [DEBUG] [Thread-116365] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:12:27.565 [DEBUG] [Thread-116365] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:12:27.565 [DEBUG] [Thread-116365] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:12:27.565 [DEBUG] [Thread-116365] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:12:27.565 [DEBUG] [Thread-116365] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:12:27.565 [DEBUG] [Thread-116365] [transport.py] [_log()] Compression: none
2025-11-03T13:12:27.565 [DEBUG] [Thread-116365] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:12:27.583 [DEBUG] [Thread-116365] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:12:27.583 [DEBUG] [Thread-116365] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:12:27.584 [DEBUG] [Thread-116365] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:12:27.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:12:27.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:12:27.585 [DEBUG] [Thread-116365] [transport.py] [_log()] userauth is OK
2025-11-03T13:12:27.585 [DEBUG] [Thread-116365] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:12:27.585 [DEBUG] [Thread-116365] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:12:27.585 [DEBUG] [Thread-116365] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:12:27.585 [DEBUG] [Thread-116365] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:12:27.603 [INFO] [Thread-116365] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:12:27.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:12:28.195 [DEBUG] [Thread-116365] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:12:28.195 [DEBUG] [Thread-116365] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:12:28.195 [DEBUG] [Thread-116365] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:12:28.236 [DEBUG] [Thread-116365] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:12:28.236 [DEBUG] [Thread-116365] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:12:28.240 [DEBUG] [Thread-116365] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:12:28.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:12:28.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:12:28.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:12:28.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:12:28.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:12:28.274 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:12:28.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:12:28.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:12:28.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:12:28.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.466423 -999.00  +26.20  35.91      8  -10.30 1 1 2 1 1   888    0 37.58 65.28 ----- 23.0 35.9 353.6 48.3 30.4 -29.8 29.6 -28.5 29.8 -28.0 30.0 -32.6
2025-11-03T13:12:28.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:12:28.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:12:28.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.466423
2025-11-03T13:12:28.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:12:28.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:12:28.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:12:28.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:12:28.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:12:28.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:12:10', tmtdew=46.59, humidity=3.77, cloud=0.0, wind=33.88, temperature=26.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:11:38.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:12:28.277 [DEBUG] [Thread-116365] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:12:28.360 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:12:28.372 [DEBUG] [Thread-116368] [transport.py] [_log()] starting thread (client mode): 0x117be3e0
2025-11-03T13:12:28.372 [DEBUG] [Thread-116368] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:12:28.388 [DEBUG] [Thread-116368] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:12:28.388 [INFO] [Thread-116368] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:12:28.395 [DEBUG] [Thread-116368] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:12:28.396 [DEBUG] [Thread-116368] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:12:28.396 [DEBUG] [Thread-116368] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:12:28.396 [DEBUG] [Thread-116368] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:12:28.396 [DEBUG] [Thread-116368] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:12:28.396 [DEBUG] [Thread-116368] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:12:28.396 [DEBUG] [Thread-116368] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:12:28.396 [DEBUG] [Thread-116368] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:12:28.396 [DEBUG] [Thread-116368] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:12:28.396 [DEBUG] [Thread-116368] [transport.py] [_log()] client lang: <none>
2025-11-03T13:12:28.396 [DEBUG] [Thread-116368] [transport.py] [_log()] server lang: <none>
2025-11-03T13:12:28.396 [DEBUG] [Thread-116368] [transport.py] [_log()] kex follows: False
2025-11-03T13:12:28.396 [DEBUG] [Thread-116368] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:12:28.396 [DEBUG] [Thread-116368] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:12:28.396 [DEBUG] [Thread-116368] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:12:28.396 [DEBUG] [Thread-116368] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:12:28.396 [DEBUG] [Thread-116368] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:12:28.396 [DEBUG] [Thread-116368] [transport.py] [_log()] Compression: none
2025-11-03T13:12:28.396 [DEBUG] [Thread-116368] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:12:28.454 [DEBUG] [Thread-116368] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:12:28.455 [DEBUG] [Thread-116368] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:12:28.465 [DEBUG] [Thread-116368] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:12:28.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:12:28.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:12:28.510 [DEBUG] [Thread-116368] [transport.py] [_log()] userauth is OK
2025-11-03T13:12:28.510 [DEBUG] [Thread-116368] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:12:28.510 [DEBUG] [Thread-116368] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:12:28.510 [DEBUG] [Thread-116368] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:12:28.510 [DEBUG] [Thread-116368] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:12:28.531 [INFO] [Thread-116368] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:12:28.531 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:12:28.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:12:29.477 [DEBUG] [Thread-116368] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:12:29.477 [DEBUG] [Thread-116368] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:12:29.525 [DEBUG] [Thread-116368] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:12:29.525 [DEBUG] [Thread-116368] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:12:29.534 [DEBUG] [Thread-116368] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:12:29.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:12:29.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:12:29.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:12:29.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:12:29.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:12:29.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:12:29.570 [DEBUG] [Thread-116368] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:12:33.997 [DEBUG] [Thread-116370 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:12:46.738 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:12:46.738 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:12:49.061 [DEBUG] [Thread-116371 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:12:59.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:12:59.593 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:12:59.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:13:00.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 12, 42), 46.38, 3.84, 0.0, 33.21, 26.15, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:13:00.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:12:42
2025-11-03T13:13:00.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:13:00.529 [DEBUG] [Thread-116372] [transport.py] [_log()] starting thread (client mode): 0x11781e10
2025-11-03T13:13:00.529 [DEBUG] [Thread-116372] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:13:00.549 [DEBUG] [Thread-116372] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:13:00.549 [INFO] [Thread-116372] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:13:00.552 [DEBUG] [Thread-116372] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:13:00.553 [DEBUG] [Thread-116372] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:13:00.553 [DEBUG] [Thread-116372] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:13:00.553 [DEBUG] [Thread-116372] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:13:00.553 [DEBUG] [Thread-116372] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:13:00.553 [DEBUG] [Thread-116372] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:13:00.553 [DEBUG] [Thread-116372] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:13:00.553 [DEBUG] [Thread-116372] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:13:00.553 [DEBUG] [Thread-116372] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:13:00.553 [DEBUG] [Thread-116372] [transport.py] [_log()] client lang: <none>
2025-11-03T13:13:00.553 [DEBUG] [Thread-116372] [transport.py] [_log()] server lang: <none>
2025-11-03T13:13:00.553 [DEBUG] [Thread-116372] [transport.py] [_log()] kex follows: False
2025-11-03T13:13:00.553 [DEBUG] [Thread-116372] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:13:00.553 [DEBUG] [Thread-116372] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:13:00.554 [DEBUG] [Thread-116372] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:13:00.554 [DEBUG] [Thread-116372] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:13:00.554 [DEBUG] [Thread-116372] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:13:00.554 [DEBUG] [Thread-116372] [transport.py] [_log()] Compression: none
2025-11-03T13:13:00.554 [DEBUG] [Thread-116372] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:13:00.573 [DEBUG] [Thread-116372] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:13:00.573 [DEBUG] [Thread-116372] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:13:00.575 [DEBUG] [Thread-116372] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:13:00.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:13:00.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:13:00.577 [DEBUG] [Thread-116372] [transport.py] [_log()] userauth is OK
2025-11-03T13:13:00.577 [DEBUG] [Thread-116372] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:13:00.577 [DEBUG] [Thread-116372] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:13:00.577 [DEBUG] [Thread-116372] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:13:00.578 [DEBUG] [Thread-116372] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:13:00.601 [INFO] [Thread-116372] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:13:00.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:13:01.219 [DEBUG] [Thread-116372] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:13:01.220 [DEBUG] [Thread-116372] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:13:01.220 [DEBUG] [Thread-116372] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:13:01.261 [DEBUG] [Thread-116372] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:13:01.261 [DEBUG] [Thread-116372] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:13:01.264 [DEBUG] [Thread-116372] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:13:01.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:13:01.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:13:01.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:13:01.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:13:01.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:13:01.291 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:13:01.291 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:13:01.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:13:01.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:13:01.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.466770 -999.00  +25.70  30.87      8  -10.50 1 1 2 1 1   888    0 37.67 63.89 ----- 29.1 30.9 7.3 43.4 30.1 -31.0 29.4 -30.6 29.6 -30.5 29.9 -29.7
2025-11-03T13:13:01.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:13:01.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:13:01.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.466770
2025-11-03T13:13:01.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:13:01.294 [DEBUG] [Thread-116372] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:13:01.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:13:01.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:13:01.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:13:01.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:13:01.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:12:42', tmtdew=46.38, humidity=3.84, cloud=0.0, wind=33.21, temperature=26.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:12:08.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:13:01.407 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:13:01.416 [DEBUG] [Thread-116375] [transport.py] [_log()] starting thread (client mode): 0x11782b00
2025-11-03T13:13:01.416 [DEBUG] [Thread-116375] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:13:01.431 [DEBUG] [Thread-116375] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:13:01.431 [INFO] [Thread-116375] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:13:01.438 [DEBUG] [Thread-116375] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:13:01.439 [DEBUG] [Thread-116375] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:13:01.439 [DEBUG] [Thread-116375] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:13:01.439 [DEBUG] [Thread-116375] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:13:01.439 [DEBUG] [Thread-116375] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:13:01.439 [DEBUG] [Thread-116375] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:13:01.439 [DEBUG] [Thread-116375] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:13:01.439 [DEBUG] [Thread-116375] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:13:01.439 [DEBUG] [Thread-116375] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:13:01.439 [DEBUG] [Thread-116375] [transport.py] [_log()] client lang: <none>
2025-11-03T13:13:01.439 [DEBUG] [Thread-116375] [transport.py] [_log()] server lang: <none>
2025-11-03T13:13:01.439 [DEBUG] [Thread-116375] [transport.py] [_log()] kex follows: False
2025-11-03T13:13:01.440 [DEBUG] [Thread-116375] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:13:01.440 [DEBUG] [Thread-116375] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:13:01.440 [DEBUG] [Thread-116375] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:13:01.440 [DEBUG] [Thread-116375] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:13:01.440 [DEBUG] [Thread-116375] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:13:01.440 [DEBUG] [Thread-116375] [transport.py] [_log()] Compression: none
2025-11-03T13:13:01.440 [DEBUG] [Thread-116375] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:13:01.498 [DEBUG] [Thread-116375] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:13:01.499 [DEBUG] [Thread-116375] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:13:01.500 [DEBUG] [Thread-116375] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:13:01.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:13:01.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:13:01.558 [DEBUG] [Thread-116375] [transport.py] [_log()] userauth is OK
2025-11-03T13:13:01.558 [DEBUG] [Thread-116375] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:13:01.558 [DEBUG] [Thread-116375] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:13:01.559 [DEBUG] [Thread-116375] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:13:01.559 [DEBUG] [Thread-116375] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:13:01.577 [INFO] [Thread-116375] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:13:01.578 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:13:01.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:13:02.427 [DEBUG] [Thread-116375] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:13:02.427 [DEBUG] [Thread-116375] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:13:02.475 [DEBUG] [Thread-116375] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:13:02.475 [DEBUG] [Thread-116375] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:13:02.484 [DEBUG] [Thread-116375] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:13:02.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:13:02.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:13:02.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:13:02.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:13:02.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:13:02.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:13:02.529 [DEBUG] [Thread-116375] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:13:03.854 [DEBUG] [Thread-116377 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:13:04.095 [DEBUG] [Thread-116378 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:13:19.154 [DEBUG] [Thread-116379 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:13:32.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:13:32.551 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:13:32.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:13:33.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 13, 15), 46.36, 3.85, 0.0, 31.21, 26.23, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:13:33.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:13:15
2025-11-03T13:13:33.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:13:33.553 [DEBUG] [Thread-116380] [transport.py] [_log()] starting thread (client mode): 0xed4eef0
2025-11-03T13:13:33.554 [DEBUG] [Thread-116380] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:13:33.573 [DEBUG] [Thread-116380] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:13:33.573 [INFO] [Thread-116380] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:13:33.576 [DEBUG] [Thread-116380] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:13:33.576 [DEBUG] [Thread-116380] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:13:33.576 [DEBUG] [Thread-116380] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:13:33.576 [DEBUG] [Thread-116380] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:13:33.576 [DEBUG] [Thread-116380] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:13:33.576 [DEBUG] [Thread-116380] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:13:33.576 [DEBUG] [Thread-116380] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:13:33.576 [DEBUG] [Thread-116380] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:13:33.576 [DEBUG] [Thread-116380] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:13:33.576 [DEBUG] [Thread-116380] [transport.py] [_log()] client lang: <none>
2025-11-03T13:13:33.577 [DEBUG] [Thread-116380] [transport.py] [_log()] server lang: <none>
2025-11-03T13:13:33.577 [DEBUG] [Thread-116380] [transport.py] [_log()] kex follows: False
2025-11-03T13:13:33.577 [DEBUG] [Thread-116380] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:13:33.577 [DEBUG] [Thread-116380] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:13:33.577 [DEBUG] [Thread-116380] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:13:33.577 [DEBUG] [Thread-116380] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:13:33.577 [DEBUG] [Thread-116380] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:13:33.577 [DEBUG] [Thread-116380] [transport.py] [_log()] Compression: none
2025-11-03T13:13:33.577 [DEBUG] [Thread-116380] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:13:33.590 [DEBUG] [Thread-116380] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:13:33.590 [DEBUG] [Thread-116380] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:13:33.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:13:33.590 [DEBUG] [Thread-116380] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:13:33.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:13:33.591 [DEBUG] [Thread-116380] [transport.py] [_log()] userauth is OK
2025-11-03T13:13:33.591 [DEBUG] [Thread-116380] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:13:33.591 [DEBUG] [Thread-116380] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:13:33.591 [DEBUG] [Thread-116380] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:13:33.591 [DEBUG] [Thread-116380] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:13:33.600 [INFO] [Thread-116380] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:13:33.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:13:34.186 [DEBUG] [Thread-116382 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:13:34.197 [DEBUG] [Thread-116380] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:13:34.197 [DEBUG] [Thread-116380] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:13:34.197 [DEBUG] [Thread-116380] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:13:34.239 [DEBUG] [Thread-116380] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:13:34.239 [DEBUG] [Thread-116380] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:13:34.242 [DEBUG] [Thread-116380] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:13:34.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:13:34.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:13:34.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:13:34.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:13:34.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:13:34.262 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:13:34.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:13:34.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:13:34.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:13:34.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.467465 -999.00  +25.20  35.34      8  -10.50 1 1 2 1 1   888    0 37.53 59.21 ----- 29.9 35.3 333.0 41.6 30.0 -30.3 29.2 -29.3 29.6 -28.7 30.1 -28.8
2025-11-03T13:13:34.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:13:34.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:13:34.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.467465
2025-11-03T13:13:34.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:13:34.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:13:34.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:13:34.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:13:34.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:13:34.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:13:15', tmtdew=46.36, humidity=3.85, cloud=0.0, wind=31.21, temperature=26.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:13:08.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:13:34.263 [DEBUG] [Thread-116380] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:13:34.339 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:13:34.351 [DEBUG] [Thread-116384] [transport.py] [_log()] starting thread (client mode): 0x11780ee0
2025-11-03T13:13:34.351 [DEBUG] [Thread-116384] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:13:34.367 [DEBUG] [Thread-116384] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:13:34.367 [INFO] [Thread-116384] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:13:34.374 [DEBUG] [Thread-116384] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:13:34.374 [DEBUG] [Thread-116384] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:13:34.374 [DEBUG] [Thread-116384] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:13:34.374 [DEBUG] [Thread-116384] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:13:34.374 [DEBUG] [Thread-116384] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:13:34.374 [DEBUG] [Thread-116384] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:13:34.374 [DEBUG] [Thread-116384] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:13:34.374 [DEBUG] [Thread-116384] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:13:34.374 [DEBUG] [Thread-116384] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:13:34.374 [DEBUG] [Thread-116384] [transport.py] [_log()] client lang: <none>
2025-11-03T13:13:34.374 [DEBUG] [Thread-116384] [transport.py] [_log()] server lang: <none>
2025-11-03T13:13:34.374 [DEBUG] [Thread-116384] [transport.py] [_log()] kex follows: False
2025-11-03T13:13:34.374 [DEBUG] [Thread-116384] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:13:34.374 [DEBUG] [Thread-116384] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:13:34.374 [DEBUG] [Thread-116384] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:13:34.374 [DEBUG] [Thread-116384] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:13:34.374 [DEBUG] [Thread-116384] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:13:34.374 [DEBUG] [Thread-116384] [transport.py] [_log()] Compression: none
2025-11-03T13:13:34.374 [DEBUG] [Thread-116384] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:13:34.432 [DEBUG] [Thread-116384] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:13:34.432 [DEBUG] [Thread-116384] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:13:34.441 [DEBUG] [Thread-116384] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:13:34.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:13:34.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:13:34.489 [DEBUG] [Thread-116384] [transport.py] [_log()] userauth is OK
2025-11-03T13:13:34.489 [DEBUG] [Thread-116384] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:13:34.489 [DEBUG] [Thread-116384] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:13:34.489 [DEBUG] [Thread-116384] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:13:34.489 [DEBUG] [Thread-116384] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:13:34.503 [INFO] [Thread-116384] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:13:34.503 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:13:34.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:13:35.371 [DEBUG] [Thread-116384] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:13:35.372 [DEBUG] [Thread-116384] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:13:35.590 [DEBUG] [Thread-116384] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:13:35.590 [DEBUG] [Thread-116384] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:13:35.598 [DEBUG] [Thread-116384] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:13:35.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:13:35.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:13:35.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:13:35.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:13:35.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:13:35.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:13:35.630 [DEBUG] [Thread-116384] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:13:46.878 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:13:46.879 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:13:49.215 [DEBUG] [Thread-116386 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:14:03.913 [DEBUG] [Thread-116387 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:14:04.268 [DEBUG] [Thread-116388 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:14:05.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:14:05.653 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:14:05.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:14:06.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 13, 47), 46.76, 3.74, 0.0, 31.26, 26.32, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:14:06.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:13:47
2025-11-03T13:14:06.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:14:06.652 [DEBUG] [Thread-116389] [transport.py] [_log()] starting thread (client mode): 0xed4d120
2025-11-03T13:14:06.652 [DEBUG] [Thread-116389] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:14:06.671 [DEBUG] [Thread-116389] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:14:06.672 [INFO] [Thread-116389] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:14:06.675 [DEBUG] [Thread-116389] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:14:06.675 [DEBUG] [Thread-116389] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:14:06.675 [DEBUG] [Thread-116389] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:14:06.675 [DEBUG] [Thread-116389] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:14:06.675 [DEBUG] [Thread-116389] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:14:06.675 [DEBUG] [Thread-116389] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:14:06.675 [DEBUG] [Thread-116389] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:14:06.675 [DEBUG] [Thread-116389] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:14:06.675 [DEBUG] [Thread-116389] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:14:06.675 [DEBUG] [Thread-116389] [transport.py] [_log()] client lang: <none>
2025-11-03T13:14:06.675 [DEBUG] [Thread-116389] [transport.py] [_log()] server lang: <none>
2025-11-03T13:14:06.675 [DEBUG] [Thread-116389] [transport.py] [_log()] kex follows: False
2025-11-03T13:14:06.675 [DEBUG] [Thread-116389] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:14:06.676 [DEBUG] [Thread-116389] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:14:06.676 [DEBUG] [Thread-116389] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:14:06.676 [DEBUG] [Thread-116389] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:14:06.676 [DEBUG] [Thread-116389] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:14:06.676 [DEBUG] [Thread-116389] [transport.py] [_log()] Compression: none
2025-11-03T13:14:06.676 [DEBUG] [Thread-116389] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:14:06.694 [DEBUG] [Thread-116389] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:14:06.695 [DEBUG] [Thread-116389] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:14:06.695 [DEBUG] [Thread-116389] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:14:06.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:14:06.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:14:06.697 [DEBUG] [Thread-116389] [transport.py] [_log()] userauth is OK
2025-11-03T13:14:06.697 [DEBUG] [Thread-116389] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:14:06.698 [DEBUG] [Thread-116389] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:14:06.698 [DEBUG] [Thread-116389] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:14:06.698 [DEBUG] [Thread-116389] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:14:06.722 [INFO] [Thread-116389] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:14:06.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:14:07.380 [DEBUG] [Thread-116389] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:14:07.381 [DEBUG] [Thread-116389] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:14:07.381 [DEBUG] [Thread-116389] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:14:07.421 [DEBUG] [Thread-116389] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:14:07.422 [DEBUG] [Thread-116389] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:14:07.425 [DEBUG] [Thread-116389] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:14:07.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:14:07.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:14:07.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:14:07.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:14:07.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:14:07.443 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:14:07.443 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:14:07.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:14:07.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:14:07.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.467812 -999.00  +25.50  22.80      8  -10.50 1 1 1 1 1   888    0 37.42 58.58 ----- 21.2 22.8 338.2 34.9 30.1 -29.0 29.3 -28.6 29.6 -28.2 30.2 -28.8
2025-11-03T13:14:07.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:14:07.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:14:07.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.467812
2025-11-03T13:14:07.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:14:07.452 [DEBUG] [Thread-116389] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:14:07.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:14:07.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:14:07.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:14:07.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:14:07.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:13:47', tmtdew=46.76, humidity=3.74, cloud=0.0, wind=31.26, temperature=26.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:13:38.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:14:07.524 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:14:07.536 [DEBUG] [Thread-116392] [transport.py] [_log()] starting thread (client mode): 0xedd7940
2025-11-03T13:14:07.536 [DEBUG] [Thread-116392] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:14:07.550 [DEBUG] [Thread-116392] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:14:07.550 [INFO] [Thread-116392] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:14:07.559 [DEBUG] [Thread-116392] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:14:07.559 [DEBUG] [Thread-116392] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:14:07.559 [DEBUG] [Thread-116392] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:14:07.559 [DEBUG] [Thread-116392] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:14:07.559 [DEBUG] [Thread-116392] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:14:07.559 [DEBUG] [Thread-116392] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:14:07.559 [DEBUG] [Thread-116392] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:14:07.560 [DEBUG] [Thread-116392] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:14:07.560 [DEBUG] [Thread-116392] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:14:07.560 [DEBUG] [Thread-116392] [transport.py] [_log()] client lang: <none>
2025-11-03T13:14:07.560 [DEBUG] [Thread-116392] [transport.py] [_log()] server lang: <none>
2025-11-03T13:14:07.560 [DEBUG] [Thread-116392] [transport.py] [_log()] kex follows: False
2025-11-03T13:14:07.560 [DEBUG] [Thread-116392] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:14:07.560 [DEBUG] [Thread-116392] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:14:07.560 [DEBUG] [Thread-116392] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:14:07.560 [DEBUG] [Thread-116392] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:14:07.560 [DEBUG] [Thread-116392] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:14:07.560 [DEBUG] [Thread-116392] [transport.py] [_log()] Compression: none
2025-11-03T13:14:07.560 [DEBUG] [Thread-116392] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:14:07.622 [DEBUG] [Thread-116392] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:14:07.622 [DEBUG] [Thread-116392] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:14:07.623 [DEBUG] [Thread-116392] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:14:07.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:14:07.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:14:07.678 [DEBUG] [Thread-116392] [transport.py] [_log()] userauth is OK
2025-11-03T13:14:07.679 [DEBUG] [Thread-116392] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:14:07.679 [DEBUG] [Thread-116392] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:14:07.679 [DEBUG] [Thread-116392] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:14:07.679 [DEBUG] [Thread-116392] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:14:07.698 [INFO] [Thread-116392] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:14:07.699 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:14:07.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:14:08.541 [DEBUG] [Thread-116392] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:14:08.542 [DEBUG] [Thread-116392] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:14:08.589 [DEBUG] [Thread-116392] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:14:08.589 [DEBUG] [Thread-116392] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:14:08.599 [DEBUG] [Thread-116392] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:14:08.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:14:08.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:14:08.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:14:08.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:14:08.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:14:08.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:14:08.636 [DEBUG] [Thread-116392] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:14:19.298 [DEBUG] [Thread-116394 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:14:34.345 [DEBUG] [Thread-116395 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:14:38.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:14:38.659 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:14:38.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:14:39.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 14, 19), 46.45, 3.82, 0.0, 23.61, 26.18, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:14:39.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:14:19
2025-11-03T13:14:39.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:14:39.676 [DEBUG] [Thread-116396] [transport.py] [_log()] starting thread (client mode): 0xedd5d80
2025-11-03T13:14:39.676 [DEBUG] [Thread-116396] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:14:39.690 [DEBUG] [Thread-116396] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:14:39.690 [INFO] [Thread-116396] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:14:39.692 [DEBUG] [Thread-116396] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:14:39.692 [DEBUG] [Thread-116396] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:14:39.692 [DEBUG] [Thread-116396] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:14:39.692 [DEBUG] [Thread-116396] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:14:39.692 [DEBUG] [Thread-116396] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:14:39.692 [DEBUG] [Thread-116396] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:14:39.692 [DEBUG] [Thread-116396] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:14:39.692 [DEBUG] [Thread-116396] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:14:39.692 [DEBUG] [Thread-116396] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:14:39.692 [DEBUG] [Thread-116396] [transport.py] [_log()] client lang: <none>
2025-11-03T13:14:39.692 [DEBUG] [Thread-116396] [transport.py] [_log()] server lang: <none>
2025-11-03T13:14:39.692 [DEBUG] [Thread-116396] [transport.py] [_log()] kex follows: False
2025-11-03T13:14:39.692 [DEBUG] [Thread-116396] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:14:39.692 [DEBUG] [Thread-116396] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:14:39.692 [DEBUG] [Thread-116396] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:14:39.692 [DEBUG] [Thread-116396] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:14:39.692 [DEBUG] [Thread-116396] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:14:39.692 [DEBUG] [Thread-116396] [transport.py] [_log()] Compression: none
2025-11-03T13:14:39.692 [DEBUG] [Thread-116396] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:14:39.699 [DEBUG] [Thread-116396] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:14:39.699 [DEBUG] [Thread-116396] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:14:39.699 [DEBUG] [Thread-116396] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:14:39.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:14:39.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:14:39.700 [DEBUG] [Thread-116396] [transport.py] [_log()] userauth is OK
2025-11-03T13:14:39.700 [DEBUG] [Thread-116396] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:14:39.700 [DEBUG] [Thread-116396] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:14:39.700 [DEBUG] [Thread-116396] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:14:39.700 [DEBUG] [Thread-116396] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:14:39.709 [INFO] [Thread-116396] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:14:39.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:14:40.344 [DEBUG] [Thread-116396] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:14:40.344 [DEBUG] [Thread-116396] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:14:40.345 [DEBUG] [Thread-116396] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:14:40.386 [DEBUG] [Thread-116396] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:14:40.386 [DEBUG] [Thread-116396] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:14:40.389 [DEBUG] [Thread-116396] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:14:40.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:14:40.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:14:40.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:14:40.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:14:40.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:14:40.421 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:14:40.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:14:40.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:14:40.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:14:40.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.468159 -999.00  +25.30  23.23      8  -10.80 1 1 1 1 1   888    0 37.03 60.61 ----- 35.9 23.2 0.7 47.5 30.1 -30.7 29.4 -29.6 29.6 -28.5 30.4 -29.2
2025-11-03T13:14:40.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:14:40.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:14:40.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.468159
2025-11-03T13:14:40.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:14:40.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:14:40.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:14:40.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:14:40.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:14:40.424 [DEBUG] [Thread-116396] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:14:40.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:14:19', tmtdew=46.45, humidity=3.82, cloud=0.0, wind=23.61, temperature=26.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:14:08.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:14:40.507 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:14:40.519 [DEBUG] [Thread-116399] [transport.py] [_log()] starting thread (client mode): 0xed4e9b0
2025-11-03T13:14:40.520 [DEBUG] [Thread-116399] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:14:40.534 [DEBUG] [Thread-116399] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:14:40.535 [INFO] [Thread-116399] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:14:40.542 [DEBUG] [Thread-116399] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:14:40.542 [DEBUG] [Thread-116399] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:14:40.542 [DEBUG] [Thread-116399] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:14:40.542 [DEBUG] [Thread-116399] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:14:40.543 [DEBUG] [Thread-116399] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:14:40.543 [DEBUG] [Thread-116399] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:14:40.543 [DEBUG] [Thread-116399] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:14:40.543 [DEBUG] [Thread-116399] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:14:40.543 [DEBUG] [Thread-116399] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:14:40.543 [DEBUG] [Thread-116399] [transport.py] [_log()] client lang: <none>
2025-11-03T13:14:40.543 [DEBUG] [Thread-116399] [transport.py] [_log()] server lang: <none>
2025-11-03T13:14:40.543 [DEBUG] [Thread-116399] [transport.py] [_log()] kex follows: False
2025-11-03T13:14:40.543 [DEBUG] [Thread-116399] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:14:40.543 [DEBUG] [Thread-116399] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:14:40.543 [DEBUG] [Thread-116399] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:14:40.543 [DEBUG] [Thread-116399] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:14:40.543 [DEBUG] [Thread-116399] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:14:40.543 [DEBUG] [Thread-116399] [transport.py] [_log()] Compression: none
2025-11-03T13:14:40.543 [DEBUG] [Thread-116399] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:14:40.602 [DEBUG] [Thread-116399] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:14:40.603 [DEBUG] [Thread-116399] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:14:40.603 [DEBUG] [Thread-116399] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:14:40.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:14:40.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:14:40.659 [DEBUG] [Thread-116399] [transport.py] [_log()] userauth is OK
2025-11-03T13:14:40.659 [DEBUG] [Thread-116399] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:14:40.659 [DEBUG] [Thread-116399] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:14:40.659 [DEBUG] [Thread-116399] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:14:40.660 [DEBUG] [Thread-116399] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:14:40.678 [INFO] [Thread-116399] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:14:40.679 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:14:40.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:14:41.537 [DEBUG] [Thread-116399] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:14:41.537 [DEBUG] [Thread-116399] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:14:41.576 [DEBUG] [Thread-116399] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:14:41.576 [DEBUG] [Thread-116399] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:14:41.585 [DEBUG] [Thread-116399] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:14:41.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:14:41.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:14:41.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:14:41.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:14:41.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:14:41.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:14:41.624 [DEBUG] [Thread-116399] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:14:47.024 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:14:47.025 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:14:49.381 [DEBUG] [Thread-116401 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:15:04.030 [DEBUG] [Thread-116402 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:15:04.435 [DEBUG] [Thread-116403 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:15:11.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:15:11.619 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:15:11.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:15:12.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 14, 51), 46.5, 3.85, 0.0, 37.49, 26.18, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:15:12.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:14:51
2025-11-03T13:15:12.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:15:12.593 [DEBUG] [Thread-116404] [transport.py] [_log()] starting thread (client mode): 0xed4cbb0
2025-11-03T13:15:12.593 [DEBUG] [Thread-116404] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:15:12.614 [DEBUG] [Thread-116404] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:15:12.614 [INFO] [Thread-116404] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:15:12.617 [DEBUG] [Thread-116404] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:15:12.617 [DEBUG] [Thread-116404] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:15:12.617 [DEBUG] [Thread-116404] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:15:12.617 [DEBUG] [Thread-116404] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:15:12.617 [DEBUG] [Thread-116404] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:15:12.617 [DEBUG] [Thread-116404] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:15:12.617 [DEBUG] [Thread-116404] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:15:12.617 [DEBUG] [Thread-116404] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:15:12.617 [DEBUG] [Thread-116404] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:15:12.618 [DEBUG] [Thread-116404] [transport.py] [_log()] client lang: <none>
2025-11-03T13:15:12.618 [DEBUG] [Thread-116404] [transport.py] [_log()] server lang: <none>
2025-11-03T13:15:12.618 [DEBUG] [Thread-116404] [transport.py] [_log()] kex follows: False
2025-11-03T13:15:12.618 [DEBUG] [Thread-116404] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:15:12.618 [DEBUG] [Thread-116404] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:15:12.618 [DEBUG] [Thread-116404] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:15:12.618 [DEBUG] [Thread-116404] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:15:12.618 [DEBUG] [Thread-116404] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:15:12.618 [DEBUG] [Thread-116404] [transport.py] [_log()] Compression: none
2025-11-03T13:15:12.618 [DEBUG] [Thread-116404] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:15:12.634 [DEBUG] [Thread-116404] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:15:12.634 [DEBUG] [Thread-116404] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:15:12.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:15:12.635 [DEBUG] [Thread-116404] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:15:12.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:15:12.637 [DEBUG] [Thread-116404] [transport.py] [_log()] userauth is OK
2025-11-03T13:15:12.637 [DEBUG] [Thread-116404] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:15:12.637 [DEBUG] [Thread-116404] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:15:12.637 [DEBUG] [Thread-116404] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:15:12.637 [DEBUG] [Thread-116404] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:15:12.656 [INFO] [Thread-116404] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:15:12.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:15:15.142 [DEBUG] [Thread-116404] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:15:15.142 [DEBUG] [Thread-116404] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:15:15.143 [DEBUG] [Thread-116404] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:15:15.183 [DEBUG] [Thread-116404] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:15:15.183 [DEBUG] [Thread-116404] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:15:15.187 [DEBUG] [Thread-116404] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:15:15.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:15:15.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:15:15.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:15:15.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:15:15.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:15:15.223 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:15:15.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:15:15.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:15:15.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:15:15.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.468506 -999.00  +25.60  21.43      8  -10.40 1 1 1 1 1   888    0 37.67 60.32 ----- 24.4 21.4 359.5 34.3 30.2 -29.4 29.4 -29.7 29.7 -29.6 30.4 -28.6
2025-11-03T13:15:15.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:15:15.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:15:15.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.468506
2025-11-03T13:15:15.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:15:15.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:15:15.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:15:15.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:15:15.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:15:15.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:14:51', tmtdew=46.5, humidity=3.85, cloud=0.0, wind=37.49, temperature=26.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:14:38.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:15:15.226 [DEBUG] [Thread-116404] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:15:15.310 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:15:15.323 [DEBUG] [Thread-116407] [transport.py] [_log()] starting thread (client mode): 0x117803a0
2025-11-03T13:15:15.323 [DEBUG] [Thread-116407] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:15:15.338 [DEBUG] [Thread-116407] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:15:15.338 [INFO] [Thread-116407] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:15:15.347 [DEBUG] [Thread-116407] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:15:15.347 [DEBUG] [Thread-116407] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:15:15.347 [DEBUG] [Thread-116407] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:15:15.347 [DEBUG] [Thread-116407] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:15:15.347 [DEBUG] [Thread-116407] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:15:15.347 [DEBUG] [Thread-116407] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:15:15.347 [DEBUG] [Thread-116407] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:15:15.347 [DEBUG] [Thread-116407] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:15:15.347 [DEBUG] [Thread-116407] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:15:15.347 [DEBUG] [Thread-116407] [transport.py] [_log()] client lang: <none>
2025-11-03T13:15:15.348 [DEBUG] [Thread-116407] [transport.py] [_log()] server lang: <none>
2025-11-03T13:15:15.348 [DEBUG] [Thread-116407] [transport.py] [_log()] kex follows: False
2025-11-03T13:15:15.348 [DEBUG] [Thread-116407] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:15:15.348 [DEBUG] [Thread-116407] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:15:15.348 [DEBUG] [Thread-116407] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:15:15.348 [DEBUG] [Thread-116407] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:15:15.348 [DEBUG] [Thread-116407] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:15:15.348 [DEBUG] [Thread-116407] [transport.py] [_log()] Compression: none
2025-11-03T13:15:15.348 [DEBUG] [Thread-116407] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:15:15.406 [DEBUG] [Thread-116407] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:15:15.407 [DEBUG] [Thread-116407] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:15:15.407 [DEBUG] [Thread-116407] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:15:15.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:15:15.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:15:15.462 [DEBUG] [Thread-116407] [transport.py] [_log()] userauth is OK
2025-11-03T13:15:15.462 [DEBUG] [Thread-116407] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:15:15.463 [DEBUG] [Thread-116407] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:15:15.463 [DEBUG] [Thread-116407] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:15:15.463 [DEBUG] [Thread-116407] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:15:15.482 [INFO] [Thread-116407] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:15:15.483 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:15:15.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:15:16.322 [DEBUG] [Thread-116407] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:15:16.322 [DEBUG] [Thread-116407] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:15:16.370 [DEBUG] [Thread-116407] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:15:16.370 [DEBUG] [Thread-116407] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:15:16.379 [DEBUG] [Thread-116407] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:15:16.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:15:16.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:15:16.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:15:16.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:15:16.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:15:16.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:15:16.427 [DEBUG] [Thread-116407] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:15:19.474 [DEBUG] [Thread-116409 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:15:34.525 [DEBUG] [Thread-116410 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:15:46.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:15:46.448 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:15:46.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:15:47.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 15, 24), 46.81, 3.75, 0.0, 40.1, 26.18, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:15:47.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:15:24
2025-11-03T13:15:47.165 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:15:47.165 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:15:47.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:15:47.395 [DEBUG] [Thread-116411] [transport.py] [_log()] starting thread (client mode): 0x81bb4f0
2025-11-03T13:15:47.395 [DEBUG] [Thread-116411] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:15:47.415 [DEBUG] [Thread-116411] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:15:47.415 [INFO] [Thread-116411] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:15:47.418 [DEBUG] [Thread-116411] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:15:47.419 [DEBUG] [Thread-116411] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:15:47.419 [DEBUG] [Thread-116411] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:15:47.419 [DEBUG] [Thread-116411] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:15:47.419 [DEBUG] [Thread-116411] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:15:47.419 [DEBUG] [Thread-116411] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:15:47.419 [DEBUG] [Thread-116411] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:15:47.419 [DEBUG] [Thread-116411] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:15:47.419 [DEBUG] [Thread-116411] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:15:47.419 [DEBUG] [Thread-116411] [transport.py] [_log()] client lang: <none>
2025-11-03T13:15:47.419 [DEBUG] [Thread-116411] [transport.py] [_log()] server lang: <none>
2025-11-03T13:15:47.419 [DEBUG] [Thread-116411] [transport.py] [_log()] kex follows: False
2025-11-03T13:15:47.419 [DEBUG] [Thread-116411] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:15:47.419 [DEBUG] [Thread-116411] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:15:47.419 [DEBUG] [Thread-116411] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:15:47.420 [DEBUG] [Thread-116411] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:15:47.420 [DEBUG] [Thread-116411] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:15:47.420 [DEBUG] [Thread-116411] [transport.py] [_log()] Compression: none
2025-11-03T13:15:47.420 [DEBUG] [Thread-116411] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:15:47.437 [DEBUG] [Thread-116411] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:15:47.438 [DEBUG] [Thread-116411] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:15:47.438 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:15:47.448 [DEBUG] [Thread-116411] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:15:47.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:15:47.480 [DEBUG] [Thread-116411] [transport.py] [_log()] userauth is OK
2025-11-03T13:15:47.480 [DEBUG] [Thread-116411] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:15:47.480 [DEBUG] [Thread-116411] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:15:47.480 [DEBUG] [Thread-116411] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:15:47.480 [DEBUG] [Thread-116411] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:15:47.513 [INFO] [Thread-116411] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:15:47.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:15:48.147 [DEBUG] [Thread-116411] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:15:48.147 [DEBUG] [Thread-116411] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:15:48.148 [DEBUG] [Thread-116411] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:15:48.188 [DEBUG] [Thread-116411] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:15:48.188 [DEBUG] [Thread-116411] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:15:48.193 [DEBUG] [Thread-116411] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:15:48.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:15:48.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:15:48.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:15:48.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:15:48.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:15:48.221 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:15:48.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:15:48.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:15:48.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:15:48.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.468853 -999.00  +25.80  19.40      8  -10.30 1 1 1 1 1   888    0 36.82 57.08 ----- 17.9 19.4 348.5 34.0 30.3 -29.4 29.5 -28.9 29.8 -28.4 30.5 -28.5
2025-11-03T13:15:48.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:15:48.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:15:48.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.468853
2025-11-03T13:15:48.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:15:48.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:15:48.225 [DEBUG] [Thread-116411] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:15:48.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:15:48.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:15:48.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:15:48.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:15:24', tmtdew=46.81, humidity=3.75, cloud=0.0, wind=40.1, temperature=26.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:15:08.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:15:48.309 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:15:48.322 [DEBUG] [Thread-116414] [transport.py] [_log()] starting thread (client mode): 0xed4e9e0
2025-11-03T13:15:48.322 [DEBUG] [Thread-116414] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:15:48.336 [DEBUG] [Thread-116414] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:15:48.337 [INFO] [Thread-116414] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:15:48.344 [DEBUG] [Thread-116414] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:15:48.344 [DEBUG] [Thread-116414] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:15:48.344 [DEBUG] [Thread-116414] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:15:48.344 [DEBUG] [Thread-116414] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:15:48.345 [DEBUG] [Thread-116414] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:15:48.345 [DEBUG] [Thread-116414] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:15:48.345 [DEBUG] [Thread-116414] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:15:48.345 [DEBUG] [Thread-116414] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:15:48.345 [DEBUG] [Thread-116414] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:15:48.345 [DEBUG] [Thread-116414] [transport.py] [_log()] client lang: <none>
2025-11-03T13:15:48.345 [DEBUG] [Thread-116414] [transport.py] [_log()] server lang: <none>
2025-11-03T13:15:48.345 [DEBUG] [Thread-116414] [transport.py] [_log()] kex follows: False
2025-11-03T13:15:48.345 [DEBUG] [Thread-116414] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:15:48.345 [DEBUG] [Thread-116414] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:15:48.345 [DEBUG] [Thread-116414] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:15:48.345 [DEBUG] [Thread-116414] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:15:48.345 [DEBUG] [Thread-116414] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:15:48.345 [DEBUG] [Thread-116414] [transport.py] [_log()] Compression: none
2025-11-03T13:15:48.345 [DEBUG] [Thread-116414] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:15:48.411 [DEBUG] [Thread-116414] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:15:48.412 [DEBUG] [Thread-116414] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:15:48.412 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:15:48.413 [DEBUG] [Thread-116414] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:15:48.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:15:48.474 [DEBUG] [Thread-116414] [transport.py] [_log()] userauth is OK
2025-11-03T13:15:48.474 [DEBUG] [Thread-116414] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:15:48.475 [DEBUG] [Thread-116414] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:15:48.475 [DEBUG] [Thread-116414] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:15:48.475 [DEBUG] [Thread-116414] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:15:48.493 [INFO] [Thread-116414] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:15:48.494 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:15:48.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:15:49.404 [DEBUG] [Thread-116414] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:15:49.414 [DEBUG] [Thread-116414] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:15:49.453 [DEBUG] [Thread-116414] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:15:49.453 [DEBUG] [Thread-116414] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:15:49.463 [DEBUG] [Thread-116414] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:15:49.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:15:49.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:15:49.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:15:49.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:15:49.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:15:49.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:15:49.499 [DEBUG] [Thread-116414] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:15:49.559 [DEBUG] [Thread-116416 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:16:04.080 [DEBUG] [Thread-116417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:16:04.624 [DEBUG] [Thread-116418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:16:19.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:16:19.522 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:16:19.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:16:19.659 [DEBUG] [Thread-116419 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:16:20.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 15, 56), 46.25, 3.82, 0.0, 37.25, 25.98, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:16:20.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:15:56
2025-11-03T13:16:20.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:16:20.538 [DEBUG] [Thread-116420] [transport.py] [_log()] starting thread (client mode): 0x117bdff0
2025-11-03T13:16:20.539 [DEBUG] [Thread-116420] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:16:20.550 [DEBUG] [Thread-116420] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:16:20.551 [INFO] [Thread-116420] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:16:20.554 [DEBUG] [Thread-116420] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:16:20.554 [DEBUG] [Thread-116420] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:16:20.554 [DEBUG] [Thread-116420] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:16:20.554 [DEBUG] [Thread-116420] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:16:20.554 [DEBUG] [Thread-116420] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:16:20.554 [DEBUG] [Thread-116420] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:16:20.554 [DEBUG] [Thread-116420] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:16:20.554 [DEBUG] [Thread-116420] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:16:20.554 [DEBUG] [Thread-116420] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:16:20.554 [DEBUG] [Thread-116420] [transport.py] [_log()] client lang: <none>
2025-11-03T13:16:20.554 [DEBUG] [Thread-116420] [transport.py] [_log()] server lang: <none>
2025-11-03T13:16:20.554 [DEBUG] [Thread-116420] [transport.py] [_log()] kex follows: False
2025-11-03T13:16:20.554 [DEBUG] [Thread-116420] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:16:20.554 [DEBUG] [Thread-116420] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:16:20.554 [DEBUG] [Thread-116420] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:16:20.554 [DEBUG] [Thread-116420] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:16:20.554 [DEBUG] [Thread-116420] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:16:20.554 [DEBUG] [Thread-116420] [transport.py] [_log()] Compression: none
2025-11-03T13:16:20.554 [DEBUG] [Thread-116420] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:16:20.569 [DEBUG] [Thread-116420] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:16:20.578 [DEBUG] [Thread-116420] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:16:20.579 [DEBUG] [Thread-116420] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:16:20.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:16:20.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:16:20.581 [DEBUG] [Thread-116420] [transport.py] [_log()] userauth is OK
2025-11-03T13:16:20.581 [DEBUG] [Thread-116420] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:16:20.581 [DEBUG] [Thread-116420] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:16:20.581 [DEBUG] [Thread-116420] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:16:20.581 [DEBUG] [Thread-116420] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:16:20.604 [INFO] [Thread-116420] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:16:20.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:16:21.188 [DEBUG] [Thread-116420] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:16:21.188 [DEBUG] [Thread-116420] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:16:21.188 [DEBUG] [Thread-116420] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:16:21.229 [DEBUG] [Thread-116420] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:16:21.229 [DEBUG] [Thread-116420] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:16:21.233 [DEBUG] [Thread-116420] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:16:21.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:16:21.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:16:21.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:16:21.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:16:21.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:16:21.258 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:16:21.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:16:21.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:16:21.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:16:21.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.469201 -999.00  +26.00  24.28      8  -10.20 1 1 1 1 1   888    0 37.21 57.50 ----- 30.5 24.3 7.1 34.7 30.4 -31.8 29.6 -29.3 29.9 -28.5 30.6 -31.1
2025-11-03T13:16:21.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:16:21.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:16:21.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.469201
2025-11-03T13:16:21.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:16:21.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:16:21.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:16:21.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:16:21.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:16:21.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:15:56', tmtdew=46.25, humidity=3.82, cloud=0.0, wind=37.25, temperature=25.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:15:38.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:16:21.262 [DEBUG] [Thread-116420] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:16:21.344 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:16:21.356 [DEBUG] [Thread-116423] [transport.py] [_log()] starting thread (client mode): 0xed21780
2025-11-03T13:16:21.357 [DEBUG] [Thread-116423] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:16:21.371 [DEBUG] [Thread-116423] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:16:21.371 [INFO] [Thread-116423] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:16:21.381 [DEBUG] [Thread-116423] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:16:21.382 [DEBUG] [Thread-116423] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:16:21.382 [DEBUG] [Thread-116423] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:16:21.382 [DEBUG] [Thread-116423] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:16:21.382 [DEBUG] [Thread-116423] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:16:21.382 [DEBUG] [Thread-116423] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:16:21.382 [DEBUG] [Thread-116423] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:16:21.383 [DEBUG] [Thread-116423] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:16:21.383 [DEBUG] [Thread-116423] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:16:21.383 [DEBUG] [Thread-116423] [transport.py] [_log()] client lang: <none>
2025-11-03T13:16:21.383 [DEBUG] [Thread-116423] [transport.py] [_log()] server lang: <none>
2025-11-03T13:16:21.383 [DEBUG] [Thread-116423] [transport.py] [_log()] kex follows: False
2025-11-03T13:16:21.383 [DEBUG] [Thread-116423] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:16:21.383 [DEBUG] [Thread-116423] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:16:21.383 [DEBUG] [Thread-116423] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:16:21.384 [DEBUG] [Thread-116423] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:16:21.384 [DEBUG] [Thread-116423] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:16:21.384 [DEBUG] [Thread-116423] [transport.py] [_log()] Compression: none
2025-11-03T13:16:21.384 [DEBUG] [Thread-116423] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:16:21.446 [DEBUG] [Thread-116423] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:16:21.446 [DEBUG] [Thread-116423] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:16:21.447 [DEBUG] [Thread-116423] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:16:21.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:16:21.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:16:21.501 [DEBUG] [Thread-116423] [transport.py] [_log()] userauth is OK
2025-11-03T13:16:21.502 [DEBUG] [Thread-116423] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:16:21.502 [DEBUG] [Thread-116423] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:16:21.502 [DEBUG] [Thread-116423] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:16:21.502 [DEBUG] [Thread-116423] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:16:21.521 [INFO] [Thread-116423] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:16:21.522 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:16:21.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:16:22.404 [DEBUG] [Thread-116423] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:16:22.405 [DEBUG] [Thread-116423] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:16:22.452 [DEBUG] [Thread-116423] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:16:22.452 [DEBUG] [Thread-116423] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:16:22.461 [DEBUG] [Thread-116423] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:16:22.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:16:22.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:16:22.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:16:22.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:16:22.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:16:22.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:16:22.493 [DEBUG] [Thread-116423] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:16:34.691 [DEBUG] [Thread-116425 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:16:47.307 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:16:47.308 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:16:49.754 [DEBUG] [Thread-116426 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:16:52.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:16:52.515 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:16:52.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:16:53.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 16, 29), 45.74, 3.99, 0.0, 33.31, 25.95, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:16:53.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:16:29
2025-11-03T13:16:53.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:16:53.486 [DEBUG] [Thread-116427] [transport.py] [_log()] starting thread (client mode): 0xed4f790
2025-11-03T13:16:53.486 [DEBUG] [Thread-116427] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:16:53.505 [DEBUG] [Thread-116427] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:16:53.505 [INFO] [Thread-116427] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:16:53.507 [DEBUG] [Thread-116427] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:16:53.507 [DEBUG] [Thread-116427] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:16:53.507 [DEBUG] [Thread-116427] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:16:53.507 [DEBUG] [Thread-116427] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:16:53.507 [DEBUG] [Thread-116427] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:16:53.507 [DEBUG] [Thread-116427] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:16:53.507 [DEBUG] [Thread-116427] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:16:53.507 [DEBUG] [Thread-116427] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:16:53.507 [DEBUG] [Thread-116427] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:16:53.507 [DEBUG] [Thread-116427] [transport.py] [_log()] client lang: <none>
2025-11-03T13:16:53.507 [DEBUG] [Thread-116427] [transport.py] [_log()] server lang: <none>
2025-11-03T13:16:53.507 [DEBUG] [Thread-116427] [transport.py] [_log()] kex follows: False
2025-11-03T13:16:53.507 [DEBUG] [Thread-116427] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:16:53.507 [DEBUG] [Thread-116427] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:16:53.507 [DEBUG] [Thread-116427] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:16:53.507 [DEBUG] [Thread-116427] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:16:53.507 [DEBUG] [Thread-116427] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:16:53.507 [DEBUG] [Thread-116427] [transport.py] [_log()] Compression: none
2025-11-03T13:16:53.507 [DEBUG] [Thread-116427] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:16:53.515 [DEBUG] [Thread-116427] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:16:53.515 [DEBUG] [Thread-116427] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:16:53.515 [DEBUG] [Thread-116427] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:16:53.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:16:53.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:16:53.516 [DEBUG] [Thread-116427] [transport.py] [_log()] userauth is OK
2025-11-03T13:16:53.516 [DEBUG] [Thread-116427] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:16:53.516 [DEBUG] [Thread-116427] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:16:53.516 [DEBUG] [Thread-116427] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:16:53.516 [DEBUG] [Thread-116427] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:16:53.532 [INFO] [Thread-116427] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:16:53.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:16:54.141 [DEBUG] [Thread-116427] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:16:54.141 [DEBUG] [Thread-116427] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:16:54.141 [DEBUG] [Thread-116427] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:16:54.181 [DEBUG] [Thread-116427] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:16:54.181 [DEBUG] [Thread-116427] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:16:54.184 [DEBUG] [Thread-116427] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:16:54.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:16:54.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:16:54.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:16:54.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:16:54.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:16:54.202 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:16:54.202 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:16:54.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:16:54.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:16:54.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.469548 -999.00  +26.20  27.35      8  -10.20 1 1 1 1 1   888    0 37.11 59.26 ----- 38.3 27.4 12.6 44.5 30.3 -30.9 29.6 -32.9 29.9 -30.4 30.6 -29.1
2025-11-03T13:16:54.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:16:54.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:16:54.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.469548
2025-11-03T13:16:54.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:16:54.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:16:54.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:16:54.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:16:54.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:16:54.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:16:29', tmtdew=45.74, humidity=3.99, cloud=0.0, wind=33.31, temperature=25.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:16:08.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:16:54.211 [DEBUG] [Thread-116427] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:16:54.283 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:16:54.294 [DEBUG] [Thread-116430] [transport.py] [_log()] starting thread (client mode): 0xed4e620
2025-11-03T13:16:54.294 [DEBUG] [Thread-116430] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:16:54.309 [DEBUG] [Thread-116430] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:16:54.309 [INFO] [Thread-116430] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:16:54.317 [DEBUG] [Thread-116430] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:16:54.317 [DEBUG] [Thread-116430] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:16:54.317 [DEBUG] [Thread-116430] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:16:54.317 [DEBUG] [Thread-116430] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:16:54.317 [DEBUG] [Thread-116430] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:16:54.317 [DEBUG] [Thread-116430] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:16:54.317 [DEBUG] [Thread-116430] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:16:54.317 [DEBUG] [Thread-116430] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:16:54.317 [DEBUG] [Thread-116430] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:16:54.317 [DEBUG] [Thread-116430] [transport.py] [_log()] client lang: <none>
2025-11-03T13:16:54.317 [DEBUG] [Thread-116430] [transport.py] [_log()] server lang: <none>
2025-11-03T13:16:54.317 [DEBUG] [Thread-116430] [transport.py] [_log()] kex follows: False
2025-11-03T13:16:54.317 [DEBUG] [Thread-116430] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:16:54.317 [DEBUG] [Thread-116430] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:16:54.317 [DEBUG] [Thread-116430] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:16:54.317 [DEBUG] [Thread-116430] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:16:54.317 [DEBUG] [Thread-116430] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:16:54.317 [DEBUG] [Thread-116430] [transport.py] [_log()] Compression: none
2025-11-03T13:16:54.317 [DEBUG] [Thread-116430] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:16:54.376 [DEBUG] [Thread-116430] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:16:54.376 [DEBUG] [Thread-116430] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:16:54.376 [DEBUG] [Thread-116430] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:16:54.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:16:54.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:16:54.434 [DEBUG] [Thread-116430] [transport.py] [_log()] userauth is OK
2025-11-03T13:16:54.434 [DEBUG] [Thread-116430] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:16:54.434 [DEBUG] [Thread-116430] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:16:54.434 [DEBUG] [Thread-116430] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:16:54.435 [DEBUG] [Thread-116430] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:16:54.459 [INFO] [Thread-116430] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:16:54.460 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:16:54.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:16:55.289 [DEBUG] [Thread-116430] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:16:55.289 [DEBUG] [Thread-116430] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:16:55.337 [DEBUG] [Thread-116430] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:16:55.337 [DEBUG] [Thread-116430] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:16:55.346 [DEBUG] [Thread-116430] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:16:55.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:16:55.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:16:55.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:16:55.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:16:55.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:16:55.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:16:55.379 [DEBUG] [Thread-116430] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:17:04.147 [DEBUG] [Thread-116432 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:17:04.782 [DEBUG] [Thread-116433 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:17:19.824 [DEBUG] [Thread-116434 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:17:25.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:17:25.391 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:17:25.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:17:26.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 17, 1), 45.98, 3.89, 0.0, 35.02, 25.77, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:17:26.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:17:01
2025-11-03T13:17:26.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:17:26.453 [DEBUG] [Thread-116435] [transport.py] [_log()] starting thread (client mode): 0xed4d030
2025-11-03T13:17:26.453 [DEBUG] [Thread-116435] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:17:26.465 [DEBUG] [Thread-116435] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:17:26.465 [INFO] [Thread-116435] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:17:26.468 [DEBUG] [Thread-116435] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:17:26.468 [DEBUG] [Thread-116435] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:17:26.468 [DEBUG] [Thread-116435] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:17:26.468 [DEBUG] [Thread-116435] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:17:26.469 [DEBUG] [Thread-116435] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:17:26.469 [DEBUG] [Thread-116435] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:17:26.469 [DEBUG] [Thread-116435] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:17:26.469 [DEBUG] [Thread-116435] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:17:26.469 [DEBUG] [Thread-116435] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:17:26.469 [DEBUG] [Thread-116435] [transport.py] [_log()] client lang: <none>
2025-11-03T13:17:26.469 [DEBUG] [Thread-116435] [transport.py] [_log()] server lang: <none>
2025-11-03T13:17:26.469 [DEBUG] [Thread-116435] [transport.py] [_log()] kex follows: False
2025-11-03T13:17:26.469 [DEBUG] [Thread-116435] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:17:26.469 [DEBUG] [Thread-116435] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:17:26.469 [DEBUG] [Thread-116435] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:17:26.469 [DEBUG] [Thread-116435] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:17:26.469 [DEBUG] [Thread-116435] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:17:26.469 [DEBUG] [Thread-116435] [transport.py] [_log()] Compression: none
2025-11-03T13:17:26.469 [DEBUG] [Thread-116435] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:17:26.478 [DEBUG] [Thread-116435] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:17:26.479 [DEBUG] [Thread-116435] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:17:26.480 [DEBUG] [Thread-116435] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:17:26.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:17:26.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:17:26.482 [DEBUG] [Thread-116435] [transport.py] [_log()] userauth is OK
2025-11-03T13:17:26.482 [DEBUG] [Thread-116435] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:17:26.482 [DEBUG] [Thread-116435] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:17:26.482 [DEBUG] [Thread-116435] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:17:26.482 [DEBUG] [Thread-116435] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:17:26.501 [INFO] [Thread-116435] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:17:26.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:17:27.086 [DEBUG] [Thread-116435] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:17:27.086 [DEBUG] [Thread-116435] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:17:27.086 [DEBUG] [Thread-116435] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:17:27.127 [DEBUG] [Thread-116435] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:17:27.127 [DEBUG] [Thread-116435] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:17:27.129 [DEBUG] [Thread-116435] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:17:27.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:17:27.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:17:27.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:17:27.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:17:27.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:17:27.146 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:17:27.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:17:27.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:17:27.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:17:27.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.469895 -999.00  +26.10  30.53      8  -10.00 1 1 2 1 1   888    0 38.01 55.77 ----- 16.7 30.5 15.8 38.8 30.3 -31.5 29.6 -29.5 29.9 -28.5 30.6 -28.6
2025-11-03T13:17:27.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:17:27.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:17:27.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.469895
2025-11-03T13:17:27.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:17:27.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:17:27.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:17:27.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:17:27.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:17:27.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:17:01', tmtdew=45.98, humidity=3.89, cloud=0.0, wind=35.02, temperature=25.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:16:38.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:17:27.148 [DEBUG] [Thread-116435] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:17:27.222 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:17:27.234 [DEBUG] [Thread-116438] [transport.py] [_log()] starting thread (client mode): 0x81bb010
2025-11-03T13:17:27.234 [DEBUG] [Thread-116438] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:17:27.249 [DEBUG] [Thread-116438] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:17:27.250 [INFO] [Thread-116438] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:17:27.257 [DEBUG] [Thread-116438] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:17:27.257 [DEBUG] [Thread-116438] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:17:27.257 [DEBUG] [Thread-116438] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:17:27.257 [DEBUG] [Thread-116438] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:17:27.257 [DEBUG] [Thread-116438] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:17:27.257 [DEBUG] [Thread-116438] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:17:27.257 [DEBUG] [Thread-116438] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:17:27.257 [DEBUG] [Thread-116438] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:17:27.257 [DEBUG] [Thread-116438] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:17:27.257 [DEBUG] [Thread-116438] [transport.py] [_log()] client lang: <none>
2025-11-03T13:17:27.257 [DEBUG] [Thread-116438] [transport.py] [_log()] server lang: <none>
2025-11-03T13:17:27.257 [DEBUG] [Thread-116438] [transport.py] [_log()] kex follows: False
2025-11-03T13:17:27.257 [DEBUG] [Thread-116438] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:17:27.257 [DEBUG] [Thread-116438] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:17:27.257 [DEBUG] [Thread-116438] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:17:27.257 [DEBUG] [Thread-116438] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:17:27.257 [DEBUG] [Thread-116438] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:17:27.258 [DEBUG] [Thread-116438] [transport.py] [_log()] Compression: none
2025-11-03T13:17:27.258 [DEBUG] [Thread-116438] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:17:27.312 [DEBUG] [Thread-116438] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:17:27.312 [DEBUG] [Thread-116438] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:17:27.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:17:27.313 [DEBUG] [Thread-116438] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:17:27.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:17:27.369 [DEBUG] [Thread-116438] [transport.py] [_log()] userauth is OK
2025-11-03T13:17:27.369 [DEBUG] [Thread-116438] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:17:27.369 [DEBUG] [Thread-116438] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:17:27.369 [DEBUG] [Thread-116438] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:17:27.369 [DEBUG] [Thread-116438] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:17:27.383 [INFO] [Thread-116438] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:17:27.383 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:17:27.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:17:28.237 [DEBUG] [Thread-116438] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:17:28.237 [DEBUG] [Thread-116438] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:17:28.284 [DEBUG] [Thread-116438] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:17:28.285 [DEBUG] [Thread-116438] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:17:28.293 [DEBUG] [Thread-116438] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:17:28.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:17:28.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:17:28.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:17:28.318 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:17:28.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:17:28.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:17:28.326 [DEBUG] [Thread-116438] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:17:34.856 [DEBUG] [Thread-116440 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:17:47.449 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:17:47.450 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:17:49.896 [DEBUG] [Thread-116441 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:17:58.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:17:58.349 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:17:58.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:17:58.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 17, 33), 46.2, 3.89, 0.0, 27.63, 25.89, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:17:58.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:17:33
2025-11-03T13:17:59.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:17:59.295 [DEBUG] [Thread-116442] [transport.py] [_log()] starting thread (client mode): 0xed20610
2025-11-03T13:17:59.296 [DEBUG] [Thread-116442] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:17:59.316 [DEBUG] [Thread-116442] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:17:59.316 [INFO] [Thread-116442] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:17:59.320 [DEBUG] [Thread-116442] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:17:59.320 [DEBUG] [Thread-116442] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:17:59.320 [DEBUG] [Thread-116442] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:17:59.320 [DEBUG] [Thread-116442] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:17:59.320 [DEBUG] [Thread-116442] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:17:59.320 [DEBUG] [Thread-116442] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:17:59.320 [DEBUG] [Thread-116442] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:17:59.320 [DEBUG] [Thread-116442] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:17:59.320 [DEBUG] [Thread-116442] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:17:59.320 [DEBUG] [Thread-116442] [transport.py] [_log()] client lang: <none>
2025-11-03T13:17:59.321 [DEBUG] [Thread-116442] [transport.py] [_log()] server lang: <none>
2025-11-03T13:17:59.321 [DEBUG] [Thread-116442] [transport.py] [_log()] kex follows: False
2025-11-03T13:17:59.321 [DEBUG] [Thread-116442] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:17:59.321 [DEBUG] [Thread-116442] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:17:59.321 [DEBUG] [Thread-116442] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:17:59.321 [DEBUG] [Thread-116442] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:17:59.321 [DEBUG] [Thread-116442] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:17:59.321 [DEBUG] [Thread-116442] [transport.py] [_log()] Compression: none
2025-11-03T13:17:59.321 [DEBUG] [Thread-116442] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:17:59.341 [DEBUG] [Thread-116442] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:17:59.342 [DEBUG] [Thread-116442] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:17:59.343 [DEBUG] [Thread-116442] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:17:59.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:17:59.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:17:59.345 [DEBUG] [Thread-116442] [transport.py] [_log()] userauth is OK
2025-11-03T13:17:59.345 [DEBUG] [Thread-116442] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:17:59.345 [DEBUG] [Thread-116442] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:17:59.345 [DEBUG] [Thread-116442] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:17:59.345 [DEBUG] [Thread-116442] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:17:59.362 [INFO] [Thread-116442] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:17:59.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:18:00.013 [DEBUG] [Thread-116442] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:18:00.013 [DEBUG] [Thread-116442] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:18:00.014 [DEBUG] [Thread-116442] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:18:00.054 [DEBUG] [Thread-116442] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:18:00.054 [DEBUG] [Thread-116442] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:18:00.057 [DEBUG] [Thread-116442] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:18:00.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:18:00.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:18:00.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:18:00.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:18:00.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:18:00.077 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:18:00.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:18:00.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:18:00.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:18:00.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.470242 -999.00  +26.20  19.58      8  -10.10 1 1 1 1 1   888    0 37.92 60.83 ----- 23.4 19.6 327.3 30.7 30.4 -29.6 29.7 -29.7 29.9 -28.3 30.6 -28.3
2025-11-03T13:18:00.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:18:00.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:18:00.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.470242
2025-11-03T13:18:00.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:18:00.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:18:00.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:18:00.080 [DEBUG] [Thread-116442] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:18:00.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:18:00.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:18:00.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:17:33', tmtdew=46.2, humidity=3.89, cloud=0.0, wind=27.63, temperature=25.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:17:08.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:18:00.164 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:18:00.177 [DEBUG] [Thread-116445] [transport.py] [_log()] starting thread (client mode): 0xedd4280
2025-11-03T13:18:00.178 [DEBUG] [Thread-116445] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:18:00.192 [DEBUG] [Thread-116445] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:18:00.193 [INFO] [Thread-116445] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:18:00.203 [DEBUG] [Thread-116445] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:18:00.203 [DEBUG] [Thread-116445] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:18:00.203 [DEBUG] [Thread-116445] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:18:00.203 [DEBUG] [Thread-116445] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:18:00.204 [DEBUG] [Thread-116445] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:18:00.204 [DEBUG] [Thread-116445] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:18:00.204 [DEBUG] [Thread-116445] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:18:00.204 [DEBUG] [Thread-116445] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:18:00.204 [DEBUG] [Thread-116445] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:18:00.204 [DEBUG] [Thread-116445] [transport.py] [_log()] client lang: <none>
2025-11-03T13:18:00.204 [DEBUG] [Thread-116445] [transport.py] [_log()] server lang: <none>
2025-11-03T13:18:00.204 [DEBUG] [Thread-116445] [transport.py] [_log()] kex follows: False
2025-11-03T13:18:00.204 [DEBUG] [Thread-116445] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:18:00.204 [DEBUG] [Thread-116445] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:18:00.204 [DEBUG] [Thread-116445] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:18:00.204 [DEBUG] [Thread-116445] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:18:00.204 [DEBUG] [Thread-116445] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:18:00.204 [DEBUG] [Thread-116445] [transport.py] [_log()] Compression: none
2025-11-03T13:18:00.205 [DEBUG] [Thread-116445] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:18:00.270 [DEBUG] [Thread-116445] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:18:00.271 [DEBUG] [Thread-116445] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:18:00.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:18:00.272 [DEBUG] [Thread-116445] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:18:00.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:18:00.329 [DEBUG] [Thread-116445] [transport.py] [_log()] userauth is OK
2025-11-03T13:18:00.329 [DEBUG] [Thread-116445] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:18:00.330 [DEBUG] [Thread-116445] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:18:00.330 [DEBUG] [Thread-116445] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:18:00.330 [DEBUG] [Thread-116445] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:18:00.348 [INFO] [Thread-116445] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:18:00.348 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:18:00.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:18:01.184 [DEBUG] [Thread-116445] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:18:01.184 [DEBUG] [Thread-116445] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:18:01.231 [DEBUG] [Thread-116445] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:18:01.231 [DEBUG] [Thread-116445] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:18:01.240 [DEBUG] [Thread-116445] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:18:01.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:18:01.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:18:01.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:18:01.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:18:01.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:18:01.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:18:01.273 [DEBUG] [Thread-116445] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:18:04.223 [DEBUG] [Thread-116447 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:18:04.935 [DEBUG] [Thread-116448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:18:19.984 [DEBUG] [Thread-116449 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:18:31.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:18:31.296 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:18:31.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:18:31.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 18, 5), 46.0, 3.97, 0.0, 24.53, 26.03, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:18:31.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:18:05
2025-11-03T13:18:32.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:18:32.252 [DEBUG] [Thread-116450] [transport.py] [_log()] starting thread (client mode): 0xed4de10
2025-11-03T13:18:32.252 [DEBUG] [Thread-116450] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:18:32.272 [DEBUG] [Thread-116450] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:18:32.272 [INFO] [Thread-116450] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:18:32.275 [DEBUG] [Thread-116450] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:18:32.275 [DEBUG] [Thread-116450] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:18:32.275 [DEBUG] [Thread-116450] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:18:32.275 [DEBUG] [Thread-116450] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:18:32.275 [DEBUG] [Thread-116450] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:18:32.275 [DEBUG] [Thread-116450] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:18:32.275 [DEBUG] [Thread-116450] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:18:32.275 [DEBUG] [Thread-116450] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:18:32.275 [DEBUG] [Thread-116450] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:18:32.275 [DEBUG] [Thread-116450] [transport.py] [_log()] client lang: <none>
2025-11-03T13:18:32.275 [DEBUG] [Thread-116450] [transport.py] [_log()] server lang: <none>
2025-11-03T13:18:32.275 [DEBUG] [Thread-116450] [transport.py] [_log()] kex follows: False
2025-11-03T13:18:32.275 [DEBUG] [Thread-116450] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:18:32.275 [DEBUG] [Thread-116450] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:18:32.275 [DEBUG] [Thread-116450] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:18:32.275 [DEBUG] [Thread-116450] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:18:32.275 [DEBUG] [Thread-116450] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:18:32.276 [DEBUG] [Thread-116450] [transport.py] [_log()] Compression: none
2025-11-03T13:18:32.276 [DEBUG] [Thread-116450] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:18:32.292 [DEBUG] [Thread-116450] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:18:32.293 [DEBUG] [Thread-116450] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:18:32.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:18:32.294 [DEBUG] [Thread-116450] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:18:32.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:18:32.305 [DEBUG] [Thread-116450] [transport.py] [_log()] userauth is OK
2025-11-03T13:18:32.305 [DEBUG] [Thread-116450] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:18:32.305 [DEBUG] [Thread-116450] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:18:32.305 [DEBUG] [Thread-116450] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:18:32.305 [DEBUG] [Thread-116450] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:18:32.331 [INFO] [Thread-116450] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:18:32.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:18:32.943 [DEBUG] [Thread-116450] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:18:32.943 [DEBUG] [Thread-116450] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:18:32.943 [DEBUG] [Thread-116450] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:18:32.984 [DEBUG] [Thread-116450] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:18:32.984 [DEBUG] [Thread-116450] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:18:32.986 [DEBUG] [Thread-116450] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:18:32.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:18:32.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:18:33.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:18:33.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:18:33.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:18:33.005 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:18:33.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:18:33.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:18:33.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:18:33.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.470590 -999.00  +26.20  20.73      8  -10.10 1 1 1 1 1   888    0 36.45 57.61 ----- 20.4 20.7 338.8 28.7 30.4 -29.7 29.7 -29.3 30.0 -29.4 30.7 -28.0
2025-11-03T13:18:33.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:18:33.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:18:33.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.470590
2025-11-03T13:18:33.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:18:33.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:18:33.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:18:33.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:18:33.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:18:33.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:18:05', tmtdew=46.0, humidity=3.97, cloud=0.0, wind=24.53, temperature=26.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:17:38.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:18:33.006 [DEBUG] [Thread-116450] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:18:33.077 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:18:33.090 [DEBUG] [Thread-116453] [transport.py] [_log()] starting thread (client mode): 0xed21780
2025-11-03T13:18:33.091 [DEBUG] [Thread-116453] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:18:33.106 [DEBUG] [Thread-116453] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:18:33.106 [INFO] [Thread-116453] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:18:33.113 [DEBUG] [Thread-116453] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:18:33.114 [DEBUG] [Thread-116453] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:18:33.114 [DEBUG] [Thread-116453] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:18:33.114 [DEBUG] [Thread-116453] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:18:33.114 [DEBUG] [Thread-116453] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:18:33.114 [DEBUG] [Thread-116453] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:18:33.114 [DEBUG] [Thread-116453] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:18:33.114 [DEBUG] [Thread-116453] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:18:33.114 [DEBUG] [Thread-116453] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:18:33.114 [DEBUG] [Thread-116453] [transport.py] [_log()] client lang: <none>
2025-11-03T13:18:33.114 [DEBUG] [Thread-116453] [transport.py] [_log()] server lang: <none>
2025-11-03T13:18:33.114 [DEBUG] [Thread-116453] [transport.py] [_log()] kex follows: False
2025-11-03T13:18:33.114 [DEBUG] [Thread-116453] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:18:33.114 [DEBUG] [Thread-116453] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:18:33.114 [DEBUG] [Thread-116453] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:18:33.114 [DEBUG] [Thread-116453] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:18:33.115 [DEBUG] [Thread-116453] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:18:33.115 [DEBUG] [Thread-116453] [transport.py] [_log()] Compression: none
2025-11-03T13:18:33.115 [DEBUG] [Thread-116453] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:18:33.174 [DEBUG] [Thread-116453] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:18:33.175 [DEBUG] [Thread-116453] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:18:33.175 [DEBUG] [Thread-116453] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:18:33.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:18:33.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:18:33.234 [DEBUG] [Thread-116453] [transport.py] [_log()] userauth is OK
2025-11-03T13:18:33.235 [DEBUG] [Thread-116453] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:18:33.235 [DEBUG] [Thread-116453] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:18:33.235 [DEBUG] [Thread-116453] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:18:33.235 [DEBUG] [Thread-116453] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:18:33.254 [INFO] [Thread-116453] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:18:33.254 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:18:33.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:18:34.120 [DEBUG] [Thread-116453] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:18:34.120 [DEBUG] [Thread-116453] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:18:34.168 [DEBUG] [Thread-116453] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:18:34.168 [DEBUG] [Thread-116453] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:18:34.177 [DEBUG] [Thread-116453] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:18:34.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:18:34.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:18:34.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:18:34.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:18:34.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:18:34.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:18:34.218 [DEBUG] [Thread-116453] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:18:35.022 [DEBUG] [Thread-116455 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:18:47.591 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:18:47.591 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:18:50.072 [DEBUG] [Thread-116456 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:19:04.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:19:04.213 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:19:04.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:19:04.276 [DEBUG] [Thread-116457 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:19:04.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 18, 38), 46.0, 3.92, 0.0, 27.21, 26.1, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:19:04.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:18:38
2025-11-03T13:19:05.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:19:05.102 [DEBUG] [Thread-116458 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:19:05.156 [DEBUG] [Thread-116459] [transport.py] [_log()] starting thread (client mode): 0xed4ed70
2025-11-03T13:19:05.156 [DEBUG] [Thread-116459] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:19:05.177 [DEBUG] [Thread-116459] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:19:05.177 [INFO] [Thread-116459] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:19:05.181 [DEBUG] [Thread-116459] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:19:05.181 [DEBUG] [Thread-116459] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:19:05.181 [DEBUG] [Thread-116459] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:19:05.181 [DEBUG] [Thread-116459] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:19:05.181 [DEBUG] [Thread-116459] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:19:05.181 [DEBUG] [Thread-116459] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:19:05.181 [DEBUG] [Thread-116459] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:19:05.181 [DEBUG] [Thread-116459] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:19:05.181 [DEBUG] [Thread-116459] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:19:05.181 [DEBUG] [Thread-116459] [transport.py] [_log()] client lang: <none>
2025-11-03T13:19:05.181 [DEBUG] [Thread-116459] [transport.py] [_log()] server lang: <none>
2025-11-03T13:19:05.182 [DEBUG] [Thread-116459] [transport.py] [_log()] kex follows: False
2025-11-03T13:19:05.182 [DEBUG] [Thread-116459] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:19:05.182 [DEBUG] [Thread-116459] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:19:05.182 [DEBUG] [Thread-116459] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:19:05.182 [DEBUG] [Thread-116459] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:19:05.182 [DEBUG] [Thread-116459] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:19:05.182 [DEBUG] [Thread-116459] [transport.py] [_log()] Compression: none
2025-11-03T13:19:05.182 [DEBUG] [Thread-116459] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:19:05.199 [DEBUG] [Thread-116459] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:19:05.200 [DEBUG] [Thread-116459] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:19:05.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:19:05.201 [DEBUG] [Thread-116459] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:19:05.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:19:05.203 [DEBUG] [Thread-116459] [transport.py] [_log()] userauth is OK
2025-11-03T13:19:05.203 [DEBUG] [Thread-116459] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:19:05.204 [DEBUG] [Thread-116459] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:19:05.204 [DEBUG] [Thread-116459] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:19:05.204 [DEBUG] [Thread-116459] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:19:05.241 [INFO] [Thread-116459] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:19:05.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:19:05.894 [DEBUG] [Thread-116459] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:19:05.894 [DEBUG] [Thread-116459] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:19:05.895 [DEBUG] [Thread-116459] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:19:05.935 [DEBUG] [Thread-116459] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:19:05.935 [DEBUG] [Thread-116459] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:19:05.940 [DEBUG] [Thread-116459] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:19:05.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:19:05.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:19:05.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:19:05.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:19:05.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:19:05.966 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:19:05.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:19:05.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:19:05.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:19:05.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.471284 -999.00  +25.20  29.66      9   -9.80 1 1 1 1 1   888    0 37.66 62.16 ----- 27.7 29.7 314.0 39.0 30.5 -30.7 29.6 -28.7 30.0 -28.5 30.5 -31.2
2025-11-03T13:19:05.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:19:05.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:19:05.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.471284
2025-11-03T13:19:05.975 [DEBUG] [Thread-116459] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:19:05.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:19:05.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:19:05.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:19:05.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:19:05.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:19:05.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:18:38', tmtdew=46.0, humidity=3.92, cloud=0.0, wind=27.21, temperature=26.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:18:38.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:19:06.060 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:19:06.073 [DEBUG] [Thread-116462] [transport.py] [_log()] starting thread (client mode): 0xed21ff0
2025-11-03T13:19:06.073 [DEBUG] [Thread-116462] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:19:06.087 [DEBUG] [Thread-116462] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:19:06.087 [INFO] [Thread-116462] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:19:06.097 [DEBUG] [Thread-116462] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:19:06.097 [DEBUG] [Thread-116462] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:19:06.097 [DEBUG] [Thread-116462] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:19:06.097 [DEBUG] [Thread-116462] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:19:06.097 [DEBUG] [Thread-116462] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:19:06.097 [DEBUG] [Thread-116462] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:19:06.097 [DEBUG] [Thread-116462] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:19:06.097 [DEBUG] [Thread-116462] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:19:06.098 [DEBUG] [Thread-116462] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:19:06.098 [DEBUG] [Thread-116462] [transport.py] [_log()] client lang: <none>
2025-11-03T13:19:06.098 [DEBUG] [Thread-116462] [transport.py] [_log()] server lang: <none>
2025-11-03T13:19:06.098 [DEBUG] [Thread-116462] [transport.py] [_log()] kex follows: False
2025-11-03T13:19:06.098 [DEBUG] [Thread-116462] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:19:06.098 [DEBUG] [Thread-116462] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:19:06.098 [DEBUG] [Thread-116462] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:19:06.098 [DEBUG] [Thread-116462] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:19:06.098 [DEBUG] [Thread-116462] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:19:06.098 [DEBUG] [Thread-116462] [transport.py] [_log()] Compression: none
2025-11-03T13:19:06.098 [DEBUG] [Thread-116462] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:19:06.154 [DEBUG] [Thread-116462] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:19:06.154 [DEBUG] [Thread-116462] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:19:06.155 [DEBUG] [Thread-116462] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:19:06.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:19:06.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:19:06.209 [DEBUG] [Thread-116462] [transport.py] [_log()] userauth is OK
2025-11-03T13:19:06.210 [DEBUG] [Thread-116462] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:19:06.210 [DEBUG] [Thread-116462] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:19:06.210 [DEBUG] [Thread-116462] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:19:06.210 [DEBUG] [Thread-116462] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:19:06.234 [INFO] [Thread-116462] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:19:06.235 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:19:06.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:19:07.090 [DEBUG] [Thread-116462] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:19:07.090 [DEBUG] [Thread-116462] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:19:07.138 [DEBUG] [Thread-116462] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:19:07.138 [DEBUG] [Thread-116462] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:19:07.157 [DEBUG] [Thread-116462] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:19:07.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:19:07.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:19:07.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:19:07.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:19:07.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:19:07.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:19:07.195 [DEBUG] [Thread-116462] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:19:20.131 [DEBUG] [Thread-116464 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:19:35.182 [DEBUG] [Thread-116465 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:19:37.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:19:37.217 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:19:37.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:19:37.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 19, 10), 45.65, 4.05, 0.0, 30.08, 26.23, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:19:37.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:19:10
2025-11-03T13:19:38.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:19:38.174 [DEBUG] [Thread-116466] [transport.py] [_log()] starting thread (client mode): 0xed20160
2025-11-03T13:19:38.174 [DEBUG] [Thread-116466] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:19:38.194 [DEBUG] [Thread-116466] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:19:38.194 [INFO] [Thread-116466] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:19:38.195 [DEBUG] [Thread-116466] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:19:38.195 [DEBUG] [Thread-116466] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:19:38.195 [DEBUG] [Thread-116466] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:19:38.195 [DEBUG] [Thread-116466] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:19:38.195 [DEBUG] [Thread-116466] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:19:38.195 [DEBUG] [Thread-116466] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:19:38.195 [DEBUG] [Thread-116466] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:19:38.195 [DEBUG] [Thread-116466] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:19:38.195 [DEBUG] [Thread-116466] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:19:38.195 [DEBUG] [Thread-116466] [transport.py] [_log()] client lang: <none>
2025-11-03T13:19:38.195 [DEBUG] [Thread-116466] [transport.py] [_log()] server lang: <none>
2025-11-03T13:19:38.196 [DEBUG] [Thread-116466] [transport.py] [_log()] kex follows: False
2025-11-03T13:19:38.196 [DEBUG] [Thread-116466] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:19:38.196 [DEBUG] [Thread-116466] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:19:38.196 [DEBUG] [Thread-116466] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:19:38.196 [DEBUG] [Thread-116466] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:19:38.196 [DEBUG] [Thread-116466] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:19:38.196 [DEBUG] [Thread-116466] [transport.py] [_log()] Compression: none
2025-11-03T13:19:38.196 [DEBUG] [Thread-116466] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:19:38.213 [DEBUG] [Thread-116466] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:19:38.214 [DEBUG] [Thread-116466] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:19:38.215 [DEBUG] [Thread-116466] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:19:38.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:19:38.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:19:38.217 [DEBUG] [Thread-116466] [transport.py] [_log()] userauth is OK
2025-11-03T13:19:38.217 [DEBUG] [Thread-116466] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:19:38.217 [DEBUG] [Thread-116466] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:19:38.217 [DEBUG] [Thread-116466] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:19:38.217 [DEBUG] [Thread-116466] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:19:38.232 [INFO] [Thread-116466] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:19:38.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:19:38.801 [DEBUG] [Thread-116466] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:19:38.810 [DEBUG] [Thread-116466] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:19:38.810 [DEBUG] [Thread-116466] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:19:38.843 [DEBUG] [Thread-116466] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:19:38.843 [DEBUG] [Thread-116466] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:19:38.845 [DEBUG] [Thread-116466] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:19:38.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:19:38.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:19:38.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:19:38.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:19:38.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:19:38.865 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:19:38.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:19:38.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:19:38.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:19:38.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.471631 -999.00  +25.90  25.35      8   -9.70 1 1 1 1 1   888    0 37.98 61.67 ----- 28.7 25.4 327.4 32.7 30.5 -30.0 29.7 -28.6 29.9 -29.0 30.7 -28.7
2025-11-03T13:19:38.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:19:38.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:19:38.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.471631
2025-11-03T13:19:38.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:19:38.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:19:38.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:19:38.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:19:38.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:19:38.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:19:10', tmtdew=45.65, humidity=4.05, cloud=0.0, wind=30.08, temperature=26.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:19:08.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:19:38.867 [DEBUG] [Thread-116466] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:19:38.938 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:19:38.950 [DEBUG] [Thread-116469] [transport.py] [_log()] starting thread (client mode): 0xed22170
2025-11-03T13:19:38.950 [DEBUG] [Thread-116469] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:19:38.966 [DEBUG] [Thread-116469] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:19:38.966 [INFO] [Thread-116469] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:19:38.974 [DEBUG] [Thread-116469] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:19:38.974 [DEBUG] [Thread-116469] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:19:38.974 [DEBUG] [Thread-116469] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:19:38.974 [DEBUG] [Thread-116469] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:19:38.974 [DEBUG] [Thread-116469] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:19:38.974 [DEBUG] [Thread-116469] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:19:38.974 [DEBUG] [Thread-116469] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:19:38.974 [DEBUG] [Thread-116469] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:19:38.974 [DEBUG] [Thread-116469] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:19:38.974 [DEBUG] [Thread-116469] [transport.py] [_log()] client lang: <none>
2025-11-03T13:19:38.974 [DEBUG] [Thread-116469] [transport.py] [_log()] server lang: <none>
2025-11-03T13:19:38.974 [DEBUG] [Thread-116469] [transport.py] [_log()] kex follows: False
2025-11-03T13:19:38.974 [DEBUG] [Thread-116469] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:19:38.974 [DEBUG] [Thread-116469] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:19:38.974 [DEBUG] [Thread-116469] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:19:38.974 [DEBUG] [Thread-116469] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:19:38.974 [DEBUG] [Thread-116469] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:19:38.974 [DEBUG] [Thread-116469] [transport.py] [_log()] Compression: none
2025-11-03T13:19:38.974 [DEBUG] [Thread-116469] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:19:39.032 [DEBUG] [Thread-116469] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:19:39.032 [DEBUG] [Thread-116469] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:19:39.032 [DEBUG] [Thread-116469] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:19:39.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:19:39.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:19:39.089 [DEBUG] [Thread-116469] [transport.py] [_log()] userauth is OK
2025-11-03T13:19:39.089 [DEBUG] [Thread-116469] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:19:39.089 [DEBUG] [Thread-116469] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:19:39.089 [DEBUG] [Thread-116469] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:19:39.089 [DEBUG] [Thread-116469] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:19:39.103 [INFO] [Thread-116469] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:19:39.103 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:19:39.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:19:39.949 [DEBUG] [Thread-116469] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:19:39.950 [DEBUG] [Thread-116469] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:19:39.998 [DEBUG] [Thread-116469] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:19:39.998 [DEBUG] [Thread-116469] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:19:40.008 [DEBUG] [Thread-116469] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:19:40.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:19:40.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:19:40.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:19:40.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:19:40.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:19:40.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:19:40.055 [DEBUG] [Thread-116469] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:19:47.740 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:19:47.740 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:19:50.228 [DEBUG] [Thread-116471 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:20:05.281 [DEBUG] [Thread-116472 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:20:05.391 [DEBUG] [Thread-116473 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:20:10.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:20:10.077 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:20:10.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:20:10.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 19, 42), 45.01, 4.04, 0.0, 22.06, 25.58, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:20:10.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:19:42
2025-11-03T13:20:11.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:20:11.282 [DEBUG] [Thread-116474] [transport.py] [_log()] starting thread (client mode): 0xed21810
2025-11-03T13:20:11.282 [DEBUG] [Thread-116474] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:20:11.303 [DEBUG] [Thread-116474] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:20:11.304 [INFO] [Thread-116474] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:20:11.307 [DEBUG] [Thread-116474] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:20:11.307 [DEBUG] [Thread-116474] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:20:11.307 [DEBUG] [Thread-116474] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:20:11.307 [DEBUG] [Thread-116474] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:20:11.307 [DEBUG] [Thread-116474] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:20:11.307 [DEBUG] [Thread-116474] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:20:11.307 [DEBUG] [Thread-116474] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:20:11.307 [DEBUG] [Thread-116474] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:20:11.307 [DEBUG] [Thread-116474] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:20:11.307 [DEBUG] [Thread-116474] [transport.py] [_log()] client lang: <none>
2025-11-03T13:20:11.307 [DEBUG] [Thread-116474] [transport.py] [_log()] server lang: <none>
2025-11-03T13:20:11.307 [DEBUG] [Thread-116474] [transport.py] [_log()] kex follows: False
2025-11-03T13:20:11.307 [DEBUG] [Thread-116474] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:20:11.307 [DEBUG] [Thread-116474] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:20:11.307 [DEBUG] [Thread-116474] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:20:11.307 [DEBUG] [Thread-116474] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:20:11.308 [DEBUG] [Thread-116474] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:20:11.308 [DEBUG] [Thread-116474] [transport.py] [_log()] Compression: none
2025-11-03T13:20:11.308 [DEBUG] [Thread-116474] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:20:11.319 [DEBUG] [Thread-116474] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:20:11.319 [DEBUG] [Thread-116474] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:20:11.320 [DEBUG] [Thread-116474] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:20:11.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:20:11.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:20:11.320 [DEBUG] [Thread-116474] [transport.py] [_log()] userauth is OK
2025-11-03T13:20:11.320 [DEBUG] [Thread-116474] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:20:11.320 [DEBUG] [Thread-116474] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:20:11.320 [DEBUG] [Thread-116474] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:20:11.320 [DEBUG] [Thread-116474] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:20:11.329 [INFO] [Thread-116474] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:20:11.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:20:14.314 [DEBUG] [Thread-116474] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:20:14.315 [DEBUG] [Thread-116474] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:20:14.315 [DEBUG] [Thread-116474] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:20:14.355 [DEBUG] [Thread-116474] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:20:14.355 [DEBUG] [Thread-116474] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:20:14.358 [DEBUG] [Thread-116474] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:20:14.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:20:14.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:20:14.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:20:14.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:20:14.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:20:14.459 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:20:14.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:20:14.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:20:14.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:20:14.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.471978 -999.00  +25.60  27.04      8   -9.70 1 1 1 1 1   888    0 37.17 59.82 ----- 26.3 27.0 330.0 30.6 30.5 -29.2 29.8 -29.3 30.0 -28.4 30.8 -28.7
2025-11-03T13:20:14.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:20:14.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:20:14.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.471978
2025-11-03T13:20:14.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:20:14.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:20:14.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:20:14.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:20:14.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:20:14.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:19:42', tmtdew=45.01, humidity=4.04, cloud=0.0, wind=22.06, temperature=25.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:19:38.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:20:14.461 [DEBUG] [Thread-116474] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:20:14.534 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:20:14.547 [DEBUG] [Thread-116477] [transport.py] [_log()] starting thread (client mode): 0xed23f70
2025-11-03T13:20:14.548 [DEBUG] [Thread-116477] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:20:14.562 [DEBUG] [Thread-116477] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:20:14.562 [INFO] [Thread-116477] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:20:14.569 [DEBUG] [Thread-116477] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:20:14.570 [DEBUG] [Thread-116477] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:20:14.570 [DEBUG] [Thread-116477] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:20:14.570 [DEBUG] [Thread-116477] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:20:14.570 [DEBUG] [Thread-116477] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:20:14.570 [DEBUG] [Thread-116477] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:20:14.570 [DEBUG] [Thread-116477] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:20:14.570 [DEBUG] [Thread-116477] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:20:14.570 [DEBUG] [Thread-116477] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:20:14.570 [DEBUG] [Thread-116477] [transport.py] [_log()] client lang: <none>
2025-11-03T13:20:14.570 [DEBUG] [Thread-116477] [transport.py] [_log()] server lang: <none>
2025-11-03T13:20:14.570 [DEBUG] [Thread-116477] [transport.py] [_log()] kex follows: False
2025-11-03T13:20:14.570 [DEBUG] [Thread-116477] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:20:14.570 [DEBUG] [Thread-116477] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:20:14.570 [DEBUG] [Thread-116477] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:20:14.570 [DEBUG] [Thread-116477] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:20:14.570 [DEBUG] [Thread-116477] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:20:14.570 [DEBUG] [Thread-116477] [transport.py] [_log()] Compression: none
2025-11-03T13:20:14.570 [DEBUG] [Thread-116477] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:20:14.628 [DEBUG] [Thread-116477] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:20:14.628 [DEBUG] [Thread-116477] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:20:14.629 [DEBUG] [Thread-116477] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:20:14.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:20:14.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:20:14.689 [DEBUG] [Thread-116477] [transport.py] [_log()] userauth is OK
2025-11-03T13:20:14.689 [DEBUG] [Thread-116477] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:20:14.689 [DEBUG] [Thread-116477] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:20:14.689 [DEBUG] [Thread-116477] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:20:14.689 [DEBUG] [Thread-116477] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:20:14.703 [INFO] [Thread-116477] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:20:14.703 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:20:14.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:20:15.555 [DEBUG] [Thread-116477] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:20:15.555 [DEBUG] [Thread-116477] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:20:15.603 [DEBUG] [Thread-116477] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:20:15.603 [DEBUG] [Thread-116477] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:20:15.612 [DEBUG] [Thread-116477] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:20:15.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:20:15.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:20:15.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:20:15.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:20:15.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:20:15.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:20:15.643 [DEBUG] [Thread-116477] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:20:20.309 [DEBUG] [Thread-116479 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:20:35.361 [DEBUG] [Thread-116480 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:20:45.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:20:45.645 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:20:45.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:20:46.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 20, 15), 45.0, 4.05, 0.0, 25.3, 25.68, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:20:46.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:20:15
2025-11-03T13:20:46.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:20:46.686 [DEBUG] [Thread-116481] [transport.py] [_log()] starting thread (client mode): 0x81b9810
2025-11-03T13:20:46.686 [DEBUG] [Thread-116481] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:20:46.709 [DEBUG] [Thread-116481] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:20:46.709 [INFO] [Thread-116481] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:20:46.712 [DEBUG] [Thread-116481] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:20:46.712 [DEBUG] [Thread-116481] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:20:46.713 [DEBUG] [Thread-116481] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:20:46.713 [DEBUG] [Thread-116481] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:20:46.713 [DEBUG] [Thread-116481] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:20:46.713 [DEBUG] [Thread-116481] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:20:46.713 [DEBUG] [Thread-116481] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:20:46.713 [DEBUG] [Thread-116481] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:20:46.713 [DEBUG] [Thread-116481] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:20:46.713 [DEBUG] [Thread-116481] [transport.py] [_log()] client lang: <none>
2025-11-03T13:20:46.713 [DEBUG] [Thread-116481] [transport.py] [_log()] server lang: <none>
2025-11-03T13:20:46.713 [DEBUG] [Thread-116481] [transport.py] [_log()] kex follows: False
2025-11-03T13:20:46.713 [DEBUG] [Thread-116481] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:20:46.713 [DEBUG] [Thread-116481] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:20:46.713 [DEBUG] [Thread-116481] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:20:46.713 [DEBUG] [Thread-116481] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:20:46.713 [DEBUG] [Thread-116481] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:20:46.713 [DEBUG] [Thread-116481] [transport.py] [_log()] Compression: none
2025-11-03T13:20:46.713 [DEBUG] [Thread-116481] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:20:46.740 [DEBUG] [Thread-116481] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:20:46.741 [DEBUG] [Thread-116481] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:20:46.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:20:46.742 [DEBUG] [Thread-116481] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:20:46.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:20:46.744 [DEBUG] [Thread-116481] [transport.py] [_log()] userauth is OK
2025-11-03T13:20:46.744 [DEBUG] [Thread-116481] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:20:46.745 [DEBUG] [Thread-116481] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:20:46.745 [DEBUG] [Thread-116481] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:20:46.745 [DEBUG] [Thread-116481] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:20:46.769 [INFO] [Thread-116481] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:20:46.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:20:47.396 [DEBUG] [Thread-116481] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:20:47.396 [DEBUG] [Thread-116481] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:20:47.396 [DEBUG] [Thread-116481] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:20:47.437 [DEBUG] [Thread-116481] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:20:47.437 [DEBUG] [Thread-116481] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:20:47.440 [DEBUG] [Thread-116481] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:20:47.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:20:47.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:20:47.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:20:47.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:20:47.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:20:47.460 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:20:47.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:20:47.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:20:47.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:20:47.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.472325 -999.00  +25.50  25.44      8   -9.90 1 1 1 1 1   888    0 37.24 55.70 ----- 18.7 25.4 4.6 37.9 30.5 -29.7 29.8 -30.2 30.1 -29.1 30.9 -28.0
2025-11-03T13:20:47.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:20:47.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:20:47.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.472325
2025-11-03T13:20:47.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:20:47.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:20:47.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:20:47.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:20:47.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:20:47.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:20:15', tmtdew=45.0, humidity=4.05, cloud=0.0, wind=25.3, temperature=25.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:20:08.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:20:47.461 [DEBUG] [Thread-116481] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:20:47.538 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:20:47.550 [DEBUG] [Thread-116484] [transport.py] [_log()] starting thread (client mode): 0xed2d810
2025-11-03T13:20:47.550 [DEBUG] [Thread-116484] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:20:47.565 [DEBUG] [Thread-116484] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:20:47.565 [INFO] [Thread-116484] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:20:47.572 [DEBUG] [Thread-116484] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:20:47.572 [DEBUG] [Thread-116484] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:20:47.572 [DEBUG] [Thread-116484] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:20:47.572 [DEBUG] [Thread-116484] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:20:47.572 [DEBUG] [Thread-116484] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:20:47.573 [DEBUG] [Thread-116484] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:20:47.573 [DEBUG] [Thread-116484] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:20:47.573 [DEBUG] [Thread-116484] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:20:47.573 [DEBUG] [Thread-116484] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:20:47.573 [DEBUG] [Thread-116484] [transport.py] [_log()] client lang: <none>
2025-11-03T13:20:47.573 [DEBUG] [Thread-116484] [transport.py] [_log()] server lang: <none>
2025-11-03T13:20:47.573 [DEBUG] [Thread-116484] [transport.py] [_log()] kex follows: False
2025-11-03T13:20:47.573 [DEBUG] [Thread-116484] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:20:47.573 [DEBUG] [Thread-116484] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:20:47.573 [DEBUG] [Thread-116484] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:20:47.573 [DEBUG] [Thread-116484] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:20:47.573 [DEBUG] [Thread-116484] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:20:47.573 [DEBUG] [Thread-116484] [transport.py] [_log()] Compression: none
2025-11-03T13:20:47.573 [DEBUG] [Thread-116484] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:20:47.628 [DEBUG] [Thread-116484] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:20:47.629 [DEBUG] [Thread-116484] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:20:47.629 [DEBUG] [Thread-116484] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:20:47.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:20:47.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:20:47.685 [DEBUG] [Thread-116484] [transport.py] [_log()] userauth is OK
2025-11-03T13:20:47.686 [DEBUG] [Thread-116484] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:20:47.686 [DEBUG] [Thread-116484] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:20:47.686 [DEBUG] [Thread-116484] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:20:47.686 [DEBUG] [Thread-116484] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:20:47.700 [INFO] [Thread-116484] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:20:47.700 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:20:47.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:20:47.881 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:20:47.882 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:20:48.587 [DEBUG] [Thread-116484] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:20:48.587 [DEBUG] [Thread-116484] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:20:48.635 [DEBUG] [Thread-116484] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:20:48.636 [DEBUG] [Thread-116484] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:20:48.645 [DEBUG] [Thread-116484] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:20:48.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:20:48.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:20:48.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:20:48.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:20:48.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:20:48.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:20:48.679 [DEBUG] [Thread-116484] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:20:50.391 [DEBUG] [Thread-116486 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:21:05.429 [DEBUG] [Thread-116487 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:21:05.632 [DEBUG] [Thread-116488 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:21:18.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:21:18.680 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:21:18.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:21:19.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 20, 47), 45.18, 3.92, 0.0, 25.09, 26.23, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:21:19.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:20:47
2025-11-03T13:21:19.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:21:19.717 [DEBUG] [Thread-116489] [transport.py] [_log()] starting thread (client mode): 0xed2c580
2025-11-03T13:21:19.717 [DEBUG] [Thread-116489] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:21:19.730 [DEBUG] [Thread-116489] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:21:19.730 [INFO] [Thread-116489] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:21:19.731 [DEBUG] [Thread-116489] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:21:19.731 [DEBUG] [Thread-116489] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:21:19.731 [DEBUG] [Thread-116489] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:21:19.731 [DEBUG] [Thread-116489] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:21:19.731 [DEBUG] [Thread-116489] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:21:19.731 [DEBUG] [Thread-116489] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:21:19.731 [DEBUG] [Thread-116489] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:21:19.731 [DEBUG] [Thread-116489] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:21:19.731 [DEBUG] [Thread-116489] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:21:19.731 [DEBUG] [Thread-116489] [transport.py] [_log()] client lang: <none>
2025-11-03T13:21:19.731 [DEBUG] [Thread-116489] [transport.py] [_log()] server lang: <none>
2025-11-03T13:21:19.731 [DEBUG] [Thread-116489] [transport.py] [_log()] kex follows: False
2025-11-03T13:21:19.731 [DEBUG] [Thread-116489] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:21:19.731 [DEBUG] [Thread-116489] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:21:19.731 [DEBUG] [Thread-116489] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:21:19.731 [DEBUG] [Thread-116489] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:21:19.732 [DEBUG] [Thread-116489] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:21:19.732 [DEBUG] [Thread-116489] [transport.py] [_log()] Compression: none
2025-11-03T13:21:19.732 [DEBUG] [Thread-116489] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:21:19.740 [DEBUG] [Thread-116489] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:21:19.740 [DEBUG] [Thread-116489] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:21:19.740 [DEBUG] [Thread-116489] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:21:19.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:21:19.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:21:19.741 [DEBUG] [Thread-116489] [transport.py] [_log()] userauth is OK
2025-11-03T13:21:19.741 [DEBUG] [Thread-116489] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:21:19.741 [DEBUG] [Thread-116489] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:21:19.741 [DEBUG] [Thread-116489] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:21:19.741 [DEBUG] [Thread-116489] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:21:19.753 [INFO] [Thread-116489] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:21:19.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:21:20.322 [DEBUG] [Thread-116489] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:21:20.323 [DEBUG] [Thread-116489] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:21:20.323 [DEBUG] [Thread-116489] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:21:20.363 [DEBUG] [Thread-116489] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:21:20.363 [DEBUG] [Thread-116489] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:21:20.365 [DEBUG] [Thread-116489] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:21:20.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:21:20.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:21:20.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:21:20.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:21:20.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:21:20.381 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:21:20.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:21:20.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:21:20.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:21:20.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.472673 -999.00  +25.10  22.36      8  -10.10 1 1 1 1 1   888    0 37.87 53.55 ----- 21.2 22.4 14.8 43.7 30.5 -30.8 29.7 -30.5 30.0 -29.1 30.8 -28.9
2025-11-03T13:21:20.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:21:20.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:21:20.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.472673
2025-11-03T13:21:20.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:21:20.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:21:20.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:21:20.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:21:20.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:21:20.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:20:47', tmtdew=45.18, humidity=3.92, cloud=0.0, wind=25.09, temperature=26.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:20:38.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:21:20.383 [DEBUG] [Thread-116489] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:21:20.457 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:21:20.465 [DEBUG] [Thread-116492 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:21:20.468 [DEBUG] [Thread-116493] [transport.py] [_log()] starting thread (client mode): 0xed4dbd0
2025-11-03T13:21:20.469 [DEBUG] [Thread-116493] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:21:20.483 [DEBUG] [Thread-116493] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:21:20.483 [INFO] [Thread-116493] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:21:20.490 [DEBUG] [Thread-116493] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:21:20.490 [DEBUG] [Thread-116493] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:21:20.490 [DEBUG] [Thread-116493] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:21:20.490 [DEBUG] [Thread-116493] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:21:20.490 [DEBUG] [Thread-116493] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:21:20.490 [DEBUG] [Thread-116493] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:21:20.491 [DEBUG] [Thread-116493] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:21:20.491 [DEBUG] [Thread-116493] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:21:20.491 [DEBUG] [Thread-116493] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:21:20.491 [DEBUG] [Thread-116493] [transport.py] [_log()] client lang: <none>
2025-11-03T13:21:20.491 [DEBUG] [Thread-116493] [transport.py] [_log()] server lang: <none>
2025-11-03T13:21:20.491 [DEBUG] [Thread-116493] [transport.py] [_log()] kex follows: False
2025-11-03T13:21:20.491 [DEBUG] [Thread-116493] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:21:20.491 [DEBUG] [Thread-116493] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:21:20.491 [DEBUG] [Thread-116493] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:21:20.491 [DEBUG] [Thread-116493] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:21:20.491 [DEBUG] [Thread-116493] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:21:20.491 [DEBUG] [Thread-116493] [transport.py] [_log()] Compression: none
2025-11-03T13:21:20.491 [DEBUG] [Thread-116493] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:21:20.548 [DEBUG] [Thread-116493] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:21:20.548 [DEBUG] [Thread-116493] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:21:20.548 [DEBUG] [Thread-116493] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:21:20.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:21:20.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:21:20.605 [DEBUG] [Thread-116493] [transport.py] [_log()] userauth is OK
2025-11-03T13:21:20.605 [DEBUG] [Thread-116493] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:21:20.605 [DEBUG] [Thread-116493] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:21:20.605 [DEBUG] [Thread-116493] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:21:20.605 [DEBUG] [Thread-116493] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:21:20.622 [INFO] [Thread-116493] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:21:20.622 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:21:20.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:21:21.467 [DEBUG] [Thread-116493] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:21:21.467 [DEBUG] [Thread-116493] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:21:21.515 [DEBUG] [Thread-116493] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:21:21.515 [DEBUG] [Thread-116493] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:21:21.523 [DEBUG] [Thread-116493] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:21:21.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:21:21.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:21:21.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:21:21.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:21:21.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:21:21.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:21:21.555 [DEBUG] [Thread-116493] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:21:35.499 [DEBUG] [Thread-116495 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:21:48.022 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:21:48.023 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:21:50.535 [DEBUG] [Thread-116496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:21:51.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:21:51.578 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:21:51.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:21:52.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 21, 19), 45.14, 3.92, 0.0, 27.21, 26.1, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:21:52.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:21:19
2025-11-03T13:21:52.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:21:52.654 [DEBUG] [Thread-116497] [transport.py] [_log()] starting thread (client mode): 0xed2f340
2025-11-03T13:21:52.654 [DEBUG] [Thread-116497] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:21:52.674 [DEBUG] [Thread-116497] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:21:52.674 [INFO] [Thread-116497] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:21:52.677 [DEBUG] [Thread-116497] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:21:52.677 [DEBUG] [Thread-116497] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:21:52.677 [DEBUG] [Thread-116497] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:21:52.677 [DEBUG] [Thread-116497] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:21:52.677 [DEBUG] [Thread-116497] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:21:52.677 [DEBUG] [Thread-116497] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:21:52.677 [DEBUG] [Thread-116497] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:21:52.677 [DEBUG] [Thread-116497] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:21:52.677 [DEBUG] [Thread-116497] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:21:52.677 [DEBUG] [Thread-116497] [transport.py] [_log()] client lang: <none>
2025-11-03T13:21:52.677 [DEBUG] [Thread-116497] [transport.py] [_log()] server lang: <none>
2025-11-03T13:21:52.677 [DEBUG] [Thread-116497] [transport.py] [_log()] kex follows: False
2025-11-03T13:21:52.677 [DEBUG] [Thread-116497] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:21:52.677 [DEBUG] [Thread-116497] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:21:52.677 [DEBUG] [Thread-116497] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:21:52.677 [DEBUG] [Thread-116497] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:21:52.677 [DEBUG] [Thread-116497] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:21:52.677 [DEBUG] [Thread-116497] [transport.py] [_log()] Compression: none
2025-11-03T13:21:52.677 [DEBUG] [Thread-116497] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:21:52.692 [DEBUG] [Thread-116497] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:21:52.692 [DEBUG] [Thread-116497] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:21:52.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:21:52.692 [DEBUG] [Thread-116497] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:21:52.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:21:52.692 [DEBUG] [Thread-116497] [transport.py] [_log()] userauth is OK
2025-11-03T13:21:52.692 [DEBUG] [Thread-116497] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:21:52.692 [DEBUG] [Thread-116497] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:21:52.693 [DEBUG] [Thread-116497] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:21:52.693 [DEBUG] [Thread-116497] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:21:52.707 [INFO] [Thread-116497] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:21:52.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:21:53.367 [DEBUG] [Thread-116497] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:21:53.367 [DEBUG] [Thread-116497] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:21:53.367 [DEBUG] [Thread-116497] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:21:53.408 [DEBUG] [Thread-116497] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:21:53.409 [DEBUG] [Thread-116497] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:21:53.411 [DEBUG] [Thread-116497] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:21:53.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:21:53.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:21:53.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:21:53.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:21:53.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:21:53.428 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:21:53.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:21:53.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:21:53.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:21:53.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.473020 -999.00  +24.90  16.83      9   -9.90 1 1 1 1 1   888    0 36.98 47.73 ----- 25.8 16.8 20.1 26.6 30.4 -29.7 29.6 -30.1 30.0 -28.7 30.6 -31.4
2025-11-03T13:21:53.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:21:53.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:21:53.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.473020
2025-11-03T13:21:53.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:21:53.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:21:53.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:21:53.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:21:53.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:21:53.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:21:19', tmtdew=45.14, humidity=3.92, cloud=0.0, wind=27.21, temperature=26.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:21:08.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:21:53.429 [DEBUG] [Thread-116497] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:21:53.503 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:21:53.515 [DEBUG] [Thread-116500] [transport.py] [_log()] starting thread (client mode): 0xed2ca60
2025-11-03T13:21:53.515 [DEBUG] [Thread-116500] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:21:53.530 [DEBUG] [Thread-116500] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:21:53.530 [INFO] [Thread-116500] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:21:53.537 [DEBUG] [Thread-116500] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:21:53.537 [DEBUG] [Thread-116500] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:21:53.537 [DEBUG] [Thread-116500] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:21:53.537 [DEBUG] [Thread-116500] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:21:53.537 [DEBUG] [Thread-116500] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:21:53.537 [DEBUG] [Thread-116500] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:21:53.537 [DEBUG] [Thread-116500] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:21:53.538 [DEBUG] [Thread-116500] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:21:53.538 [DEBUG] [Thread-116500] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:21:53.538 [DEBUG] [Thread-116500] [transport.py] [_log()] client lang: <none>
2025-11-03T13:21:53.538 [DEBUG] [Thread-116500] [transport.py] [_log()] server lang: <none>
2025-11-03T13:21:53.538 [DEBUG] [Thread-116500] [transport.py] [_log()] kex follows: False
2025-11-03T13:21:53.538 [DEBUG] [Thread-116500] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:21:53.538 [DEBUG] [Thread-116500] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:21:53.538 [DEBUG] [Thread-116500] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:21:53.538 [DEBUG] [Thread-116500] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:21:53.538 [DEBUG] [Thread-116500] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:21:53.538 [DEBUG] [Thread-116500] [transport.py] [_log()] Compression: none
2025-11-03T13:21:53.538 [DEBUG] [Thread-116500] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:21:53.595 [DEBUG] [Thread-116500] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:21:53.596 [DEBUG] [Thread-116500] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:21:53.596 [DEBUG] [Thread-116500] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:21:53.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:21:53.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:21:53.657 [DEBUG] [Thread-116500] [transport.py] [_log()] userauth is OK
2025-11-03T13:21:53.657 [DEBUG] [Thread-116500] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:21:53.657 [DEBUG] [Thread-116500] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:21:53.657 [DEBUG] [Thread-116500] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:21:53.657 [DEBUG] [Thread-116500] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:21:53.671 [INFO] [Thread-116500] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:21:53.671 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:21:53.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:21:54.525 [DEBUG] [Thread-116500] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:21:54.525 [DEBUG] [Thread-116500] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:21:54.572 [DEBUG] [Thread-116500] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:21:54.573 [DEBUG] [Thread-116500] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:21:54.581 [DEBUG] [Thread-116500] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:21:54.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:21:54.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:21:54.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:21:54.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:21:54.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:21:54.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:21:54.614 [DEBUG] [Thread-116500] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:22:05.575 [DEBUG] [Thread-116502 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:22:05.719 [DEBUG] [Thread-116503 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:22:20.634 [DEBUG] [Thread-116504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:22:24.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:22:24.637 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:22:24.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:22:25.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 21, 51), 44.73, 4.0, 0.0, 20.79, 26.0, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:22:25.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:21:51
2025-11-03T13:22:25.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:22:25.634 [DEBUG] [Thread-116505] [transport.py] [_log()] starting thread (client mode): 0xed2f610
2025-11-03T13:22:25.634 [DEBUG] [Thread-116505] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:22:25.647 [DEBUG] [Thread-116505] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:22:25.647 [INFO] [Thread-116505] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:22:25.649 [DEBUG] [Thread-116505] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:22:25.649 [DEBUG] [Thread-116505] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:22:25.649 [DEBUG] [Thread-116505] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:22:25.649 [DEBUG] [Thread-116505] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:22:25.649 [DEBUG] [Thread-116505] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:22:25.649 [DEBUG] [Thread-116505] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:22:25.649 [DEBUG] [Thread-116505] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:22:25.649 [DEBUG] [Thread-116505] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:22:25.649 [DEBUG] [Thread-116505] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:22:25.649 [DEBUG] [Thread-116505] [transport.py] [_log()] client lang: <none>
2025-11-03T13:22:25.649 [DEBUG] [Thread-116505] [transport.py] [_log()] server lang: <none>
2025-11-03T13:22:25.650 [DEBUG] [Thread-116505] [transport.py] [_log()] kex follows: False
2025-11-03T13:22:25.650 [DEBUG] [Thread-116505] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:22:25.650 [DEBUG] [Thread-116505] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:22:25.650 [DEBUG] [Thread-116505] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:22:25.650 [DEBUG] [Thread-116505] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:22:25.650 [DEBUG] [Thread-116505] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:22:25.650 [DEBUG] [Thread-116505] [transport.py] [_log()] Compression: none
2025-11-03T13:22:25.650 [DEBUG] [Thread-116505] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:22:25.664 [DEBUG] [Thread-116505] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:22:25.665 [DEBUG] [Thread-116505] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:22:25.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:22:25.665 [DEBUG] [Thread-116505] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:22:25.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:22:25.666 [DEBUG] [Thread-116505] [transport.py] [_log()] userauth is OK
2025-11-03T13:22:25.666 [DEBUG] [Thread-116505] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:22:25.666 [DEBUG] [Thread-116505] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:22:25.666 [DEBUG] [Thread-116505] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:22:25.666 [DEBUG] [Thread-116505] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:22:25.675 [INFO] [Thread-116505] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:22:25.676 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:22:26.254 [DEBUG] [Thread-116505] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:22:26.254 [DEBUG] [Thread-116505] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:22:26.254 [DEBUG] [Thread-116505] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:22:26.296 [DEBUG] [Thread-116505] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:22:26.296 [DEBUG] [Thread-116505] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:22:26.298 [DEBUG] [Thread-116505] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:22:26.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:22:26.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:22:26.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:22:26.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:22:26.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:22:26.314 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:22:26.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:22:26.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:22:26.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:22:26.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.473367 -999.00  +25.40  24.75      9   -9.70 1 1 1 1 1   888    0 36.85 43.45 ----- 23.4 24.8 328.4 40.4 30.5 -30.0 29.8 -29.3 30.1 -28.3 30.8 -28.2
2025-11-03T13:22:26.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:22:26.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:22:26.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.473367
2025-11-03T13:22:26.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:22:26.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:22:26.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:22:26.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:22:26.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:22:26.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:21:51', tmtdew=44.73, humidity=4.0, cloud=0.0, wind=20.79, temperature=26.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:21:38.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:22:26.316 [DEBUG] [Thread-116505] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:22:26.389 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:22:26.401 [DEBUG] [Thread-116508] [transport.py] [_log()] starting thread (client mode): 0xed2dcf0
2025-11-03T13:22:26.401 [DEBUG] [Thread-116508] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:22:26.417 [DEBUG] [Thread-116508] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:22:26.417 [INFO] [Thread-116508] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:22:26.425 [DEBUG] [Thread-116508] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:22:26.425 [DEBUG] [Thread-116508] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:22:26.425 [DEBUG] [Thread-116508] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:22:26.425 [DEBUG] [Thread-116508] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:22:26.425 [DEBUG] [Thread-116508] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:22:26.425 [DEBUG] [Thread-116508] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:22:26.425 [DEBUG] [Thread-116508] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:22:26.425 [DEBUG] [Thread-116508] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:22:26.425 [DEBUG] [Thread-116508] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:22:26.425 [DEBUG] [Thread-116508] [transport.py] [_log()] client lang: <none>
2025-11-03T13:22:26.425 [DEBUG] [Thread-116508] [transport.py] [_log()] server lang: <none>
2025-11-03T13:22:26.426 [DEBUG] [Thread-116508] [transport.py] [_log()] kex follows: False
2025-11-03T13:22:26.426 [DEBUG] [Thread-116508] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:22:26.426 [DEBUG] [Thread-116508] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:22:26.426 [DEBUG] [Thread-116508] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:22:26.426 [DEBUG] [Thread-116508] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:22:26.426 [DEBUG] [Thread-116508] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:22:26.426 [DEBUG] [Thread-116508] [transport.py] [_log()] Compression: none
2025-11-03T13:22:26.426 [DEBUG] [Thread-116508] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:22:26.484 [DEBUG] [Thread-116508] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:22:26.484 [DEBUG] [Thread-116508] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:22:26.484 [DEBUG] [Thread-116508] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:22:26.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:22:26.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:22:26.542 [DEBUG] [Thread-116508] [transport.py] [_log()] userauth is OK
2025-11-03T13:22:26.542 [DEBUG] [Thread-116508] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:22:26.542 [DEBUG] [Thread-116508] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:22:26.542 [DEBUG] [Thread-116508] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:22:26.542 [DEBUG] [Thread-116508] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:22:26.558 [INFO] [Thread-116508] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:22:26.558 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:22:26.558 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:22:27.399 [DEBUG] [Thread-116508] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:22:27.399 [DEBUG] [Thread-116508] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:22:27.447 [DEBUG] [Thread-116508] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:22:27.447 [DEBUG] [Thread-116508] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:22:27.457 [DEBUG] [Thread-116508] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:22:27.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:22:27.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:22:27.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:22:27.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:22:27.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:22:27.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:22:27.496 [DEBUG] [Thread-116508] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:22:35.671 [DEBUG] [Thread-116510 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:22:48.164 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:22:48.165 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:22:50.721 [DEBUG] [Thread-116511 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:22:57.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:22:57.516 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:22:57.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:22:58.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 22, 24), 45.21, 3.85, 0.0, 28.23, 26.1, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:22:58.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:22:24
2025-11-03T13:22:58.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:22:58.493 [DEBUG] [Thread-116512] [transport.py] [_log()] starting thread (client mode): 0xed2d780
2025-11-03T13:22:58.494 [DEBUG] [Thread-116512] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:22:58.514 [DEBUG] [Thread-116512] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:22:58.514 [INFO] [Thread-116512] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:22:58.517 [DEBUG] [Thread-116512] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:22:58.517 [DEBUG] [Thread-116512] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:22:58.517 [DEBUG] [Thread-116512] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:22:58.517 [DEBUG] [Thread-116512] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:22:58.517 [DEBUG] [Thread-116512] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:22:58.517 [DEBUG] [Thread-116512] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:22:58.517 [DEBUG] [Thread-116512] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:22:58.517 [DEBUG] [Thread-116512] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:22:58.517 [DEBUG] [Thread-116512] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:22:58.517 [DEBUG] [Thread-116512] [transport.py] [_log()] client lang: <none>
2025-11-03T13:22:58.517 [DEBUG] [Thread-116512] [transport.py] [_log()] server lang: <none>
2025-11-03T13:22:58.517 [DEBUG] [Thread-116512] [transport.py] [_log()] kex follows: False
2025-11-03T13:22:58.517 [DEBUG] [Thread-116512] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:22:58.517 [DEBUG] [Thread-116512] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:22:58.517 [DEBUG] [Thread-116512] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:22:58.517 [DEBUG] [Thread-116512] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:22:58.517 [DEBUG] [Thread-116512] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:22:58.517 [DEBUG] [Thread-116512] [transport.py] [_log()] Compression: none
2025-11-03T13:22:58.517 [DEBUG] [Thread-116512] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:22:58.532 [DEBUG] [Thread-116512] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:22:58.532 [DEBUG] [Thread-116512] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:22:58.532 [DEBUG] [Thread-116512] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:22:58.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:22:58.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:22:58.532 [DEBUG] [Thread-116512] [transport.py] [_log()] userauth is OK
2025-11-03T13:22:58.532 [DEBUG] [Thread-116512] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:22:58.532 [DEBUG] [Thread-116512] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:22:58.532 [DEBUG] [Thread-116512] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:22:58.532 [DEBUG] [Thread-116512] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:22:58.543 [INFO] [Thread-116512] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:22:58.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:22:59.139 [DEBUG] [Thread-116512] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:22:59.139 [DEBUG] [Thread-116512] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:22:59.139 [DEBUG] [Thread-116512] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:22:59.180 [DEBUG] [Thread-116512] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:22:59.180 [DEBUG] [Thread-116512] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:22:59.182 [DEBUG] [Thread-116512] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:22:59.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:22:59.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:22:59.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:22:59.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:22:59.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:22:59.200 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:22:59.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:22:59.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:22:59.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:22:59.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.473715 -999.00  +25.70  26.36      8   -9.70 1 1 1 1 1   888    0 36.31 39.86 ----- 24.7 26.4 338.4 32.1 30.6 -30.1 29.9 -28.9 30.2 -28.4 31.0 -29.0
2025-11-03T13:22:59.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:22:59.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:22:59.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.473715
2025-11-03T13:22:59.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:22:59.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:22:59.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:22:59.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:22:59.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:22:59.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:22:24', tmtdew=45.21, humidity=3.85, cloud=0.0, wind=28.23, temperature=26.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:22:08.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:22:59.201 [DEBUG] [Thread-116512] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:22:59.276 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:22:59.286 [DEBUG] [Thread-116515] [transport.py] [_log()] starting thread (client mode): 0xed2eb00
2025-11-03T13:22:59.286 [DEBUG] [Thread-116515] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:22:59.301 [DEBUG] [Thread-116515] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:22:59.301 [INFO] [Thread-116515] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:22:59.309 [DEBUG] [Thread-116515] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:22:59.309 [DEBUG] [Thread-116515] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:22:59.309 [DEBUG] [Thread-116515] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:22:59.309 [DEBUG] [Thread-116515] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:22:59.309 [DEBUG] [Thread-116515] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:22:59.309 [DEBUG] [Thread-116515] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:22:59.309 [DEBUG] [Thread-116515] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:22:59.309 [DEBUG] [Thread-116515] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:22:59.309 [DEBUG] [Thread-116515] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:22:59.309 [DEBUG] [Thread-116515] [transport.py] [_log()] client lang: <none>
2025-11-03T13:22:59.309 [DEBUG] [Thread-116515] [transport.py] [_log()] server lang: <none>
2025-11-03T13:22:59.309 [DEBUG] [Thread-116515] [transport.py] [_log()] kex follows: False
2025-11-03T13:22:59.309 [DEBUG] [Thread-116515] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:22:59.309 [DEBUG] [Thread-116515] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:22:59.309 [DEBUG] [Thread-116515] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:22:59.309 [DEBUG] [Thread-116515] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:22:59.309 [DEBUG] [Thread-116515] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:22:59.309 [DEBUG] [Thread-116515] [transport.py] [_log()] Compression: none
2025-11-03T13:22:59.309 [DEBUG] [Thread-116515] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:22:59.363 [DEBUG] [Thread-116515] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:22:59.363 [DEBUG] [Thread-116515] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:22:59.363 [DEBUG] [Thread-116515] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:22:59.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:22:59.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:22:59.421 [DEBUG] [Thread-116515] [transport.py] [_log()] userauth is OK
2025-11-03T13:22:59.421 [DEBUG] [Thread-116515] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:22:59.421 [DEBUG] [Thread-116515] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:22:59.421 [DEBUG] [Thread-116515] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:22:59.421 [DEBUG] [Thread-116515] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:22:59.434 [INFO] [Thread-116515] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:22:59.435 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:22:59.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:23:00.257 [DEBUG] [Thread-116515] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:23:00.258 [DEBUG] [Thread-116515] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:23:00.306 [DEBUG] [Thread-116515] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:23:00.306 [DEBUG] [Thread-116515] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:23:00.315 [DEBUG] [Thread-116515] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:23:00.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:23:00.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:23:00.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:23:00.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:23:00.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:23:00.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:23:00.349 [DEBUG] [Thread-116515] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:23:05.757 [DEBUG] [Thread-116517 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:23:05.777 [DEBUG] [Thread-116518 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:23:20.802 [DEBUG] [Thread-116519 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:23:30.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:23:30.372 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:23:30.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:23:31.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 22, 56), 45.49, 3.85, 0.0, 36.86, 26.01, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:23:31.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:22:56
2025-11-03T13:23:31.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:23:31.344 [DEBUG] [Thread-116520] [transport.py] [_log()] starting thread (client mode): 0xed2c220
2025-11-03T13:23:31.344 [DEBUG] [Thread-116520] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:23:31.358 [DEBUG] [Thread-116520] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:23:31.358 [INFO] [Thread-116520] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:23:31.359 [DEBUG] [Thread-116520] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:23:31.359 [DEBUG] [Thread-116520] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:23:31.359 [DEBUG] [Thread-116520] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:23:31.359 [DEBUG] [Thread-116520] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:23:31.359 [DEBUG] [Thread-116520] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:23:31.359 [DEBUG] [Thread-116520] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:23:31.359 [DEBUG] [Thread-116520] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:23:31.359 [DEBUG] [Thread-116520] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:23:31.359 [DEBUG] [Thread-116520] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:23:31.359 [DEBUG] [Thread-116520] [transport.py] [_log()] client lang: <none>
2025-11-03T13:23:31.359 [DEBUG] [Thread-116520] [transport.py] [_log()] server lang: <none>
2025-11-03T13:23:31.359 [DEBUG] [Thread-116520] [transport.py] [_log()] kex follows: False
2025-11-03T13:23:31.360 [DEBUG] [Thread-116520] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:23:31.360 [DEBUG] [Thread-116520] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:23:31.360 [DEBUG] [Thread-116520] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:23:31.360 [DEBUG] [Thread-116520] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:23:31.360 [DEBUG] [Thread-116520] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:23:31.360 [DEBUG] [Thread-116520] [transport.py] [_log()] Compression: none
2025-11-03T13:23:31.360 [DEBUG] [Thread-116520] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:23:31.370 [DEBUG] [Thread-116520] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:23:31.370 [DEBUG] [Thread-116520] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:23:31.371 [DEBUG] [Thread-116520] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:23:31.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:23:31.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:23:31.372 [DEBUG] [Thread-116520] [transport.py] [_log()] userauth is OK
2025-11-03T13:23:31.372 [DEBUG] [Thread-116520] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:23:31.372 [DEBUG] [Thread-116520] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:23:31.372 [DEBUG] [Thread-116520] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:23:31.372 [DEBUG] [Thread-116520] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:23:31.389 [INFO] [Thread-116520] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:23:31.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:23:32.041 [DEBUG] [Thread-116520] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:23:32.041 [DEBUG] [Thread-116520] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:23:32.041 [DEBUG] [Thread-116520] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:23:32.081 [DEBUG] [Thread-116520] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:23:32.082 [DEBUG] [Thread-116520] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:23:32.085 [DEBUG] [Thread-116520] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:23:32.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:23:32.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:23:32.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:23:32.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:23:32.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:23:32.103 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:23:32.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:23:32.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:23:32.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:23:32.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.474062 -999.00  +26.20  14.14      8   -9.20 1 1 1 1 1   888    0 37.45 39.47 ----- 20.9 14.1 330.9 22.2 30.9 -28.8 30.0 -28.1 30.4 -27.4 31.1 -27.8
2025-11-03T13:23:32.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:23:32.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:23:32.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.474062
2025-11-03T13:23:32.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:23:32.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:23:32.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:23:32.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:23:32.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:23:32.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:22:56', tmtdew=45.49, humidity=3.85, cloud=0.0, wind=36.86, temperature=26.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:22:38.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:23:32.106 [DEBUG] [Thread-116520] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:23:32.191 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:23:32.202 [DEBUG] [Thread-116523] [transport.py] [_log()] starting thread (client mode): 0xed2f2e0
2025-11-03T13:23:32.202 [DEBUG] [Thread-116523] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:23:32.219 [DEBUG] [Thread-116523] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:23:32.219 [INFO] [Thread-116523] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:23:32.227 [DEBUG] [Thread-116523] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:23:32.227 [DEBUG] [Thread-116523] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:23:32.227 [DEBUG] [Thread-116523] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:23:32.227 [DEBUG] [Thread-116523] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:23:32.227 [DEBUG] [Thread-116523] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:23:32.227 [DEBUG] [Thread-116523] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:23:32.227 [DEBUG] [Thread-116523] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:23:32.227 [DEBUG] [Thread-116523] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:23:32.227 [DEBUG] [Thread-116523] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:23:32.227 [DEBUG] [Thread-116523] [transport.py] [_log()] client lang: <none>
2025-11-03T13:23:32.227 [DEBUG] [Thread-116523] [transport.py] [_log()] server lang: <none>
2025-11-03T13:23:32.227 [DEBUG] [Thread-116523] [transport.py] [_log()] kex follows: False
2025-11-03T13:23:32.228 [DEBUG] [Thread-116523] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:23:32.228 [DEBUG] [Thread-116523] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:23:32.228 [DEBUG] [Thread-116523] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:23:32.228 [DEBUG] [Thread-116523] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:23:32.228 [DEBUG] [Thread-116523] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:23:32.228 [DEBUG] [Thread-116523] [transport.py] [_log()] Compression: none
2025-11-03T13:23:32.228 [DEBUG] [Thread-116523] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:23:32.285 [DEBUG] [Thread-116523] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:23:32.285 [DEBUG] [Thread-116523] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:23:32.286 [DEBUG] [Thread-116523] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:23:32.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:23:32.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:23:32.344 [DEBUG] [Thread-116523] [transport.py] [_log()] userauth is OK
2025-11-03T13:23:32.344 [DEBUG] [Thread-116523] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:23:32.344 [DEBUG] [Thread-116523] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:23:32.344 [DEBUG] [Thread-116523] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:23:32.344 [DEBUG] [Thread-116523] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:23:32.363 [INFO] [Thread-116523] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:23:32.364 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:23:32.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:23:33.256 [DEBUG] [Thread-116523] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:23:33.256 [DEBUG] [Thread-116523] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:23:33.303 [DEBUG] [Thread-116523] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:23:33.303 [DEBUG] [Thread-116523] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:23:33.312 [DEBUG] [Thread-116523] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:23:33.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:23:33.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:23:33.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:23:33.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:23:33.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:23:33.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:23:33.345 [DEBUG] [Thread-116523] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:23:35.834 [DEBUG] [Thread-116525 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:23:48.306 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:23:48.308 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:23:50.893 [DEBUG] [Thread-116526 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:24:03.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:24:03.367 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:24:03.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:24:04.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 23, 29), 45.36, 3.87, 0.0, 33.84, 25.78, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:24:04.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:23:29
2025-11-03T13:24:04.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:24:04.395 [DEBUG] [Thread-116527] [transport.py] [_log()] starting thread (client mode): 0xed2ea10
2025-11-03T13:24:04.395 [DEBUG] [Thread-116527] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:24:04.414 [DEBUG] [Thread-116527] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:24:04.414 [INFO] [Thread-116527] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:24:04.418 [DEBUG] [Thread-116527] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:24:04.419 [DEBUG] [Thread-116527] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:24:04.419 [DEBUG] [Thread-116527] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:24:04.419 [DEBUG] [Thread-116527] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:24:04.419 [DEBUG] [Thread-116527] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:24:04.419 [DEBUG] [Thread-116527] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:24:04.419 [DEBUG] [Thread-116527] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:24:04.419 [DEBUG] [Thread-116527] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:24:04.419 [DEBUG] [Thread-116527] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:24:04.419 [DEBUG] [Thread-116527] [transport.py] [_log()] client lang: <none>
2025-11-03T13:24:04.419 [DEBUG] [Thread-116527] [transport.py] [_log()] server lang: <none>
2025-11-03T13:24:04.419 [DEBUG] [Thread-116527] [transport.py] [_log()] kex follows: False
2025-11-03T13:24:04.419 [DEBUG] [Thread-116527] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:24:04.419 [DEBUG] [Thread-116527] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:24:04.419 [DEBUG] [Thread-116527] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:24:04.419 [DEBUG] [Thread-116527] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:24:04.419 [DEBUG] [Thread-116527] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:24:04.419 [DEBUG] [Thread-116527] [transport.py] [_log()] Compression: none
2025-11-03T13:24:04.419 [DEBUG] [Thread-116527] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:24:04.434 [DEBUG] [Thread-116527] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:24:04.434 [DEBUG] [Thread-116527] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:24:04.434 [DEBUG] [Thread-116527] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:24:04.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:24:04.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:24:04.435 [DEBUG] [Thread-116527] [transport.py] [_log()] userauth is OK
2025-11-03T13:24:04.435 [DEBUG] [Thread-116527] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:24:04.435 [DEBUG] [Thread-116527] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:24:04.435 [DEBUG] [Thread-116527] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:24:04.435 [DEBUG] [Thread-116527] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:24:04.444 [INFO] [Thread-116527] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:24:04.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:24:05.057 [DEBUG] [Thread-116527] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:24:05.057 [DEBUG] [Thread-116527] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:24:05.058 [DEBUG] [Thread-116527] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:24:05.099 [DEBUG] [Thread-116527] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:24:05.099 [DEBUG] [Thread-116527] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:24:05.101 [DEBUG] [Thread-116527] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:24:05.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:24:05.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:24:05.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:24:05.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:24:05.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:24:05.117 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:24:05.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:24:05.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:24:05.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:24:05.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.474756 -999.00  +26.10  35.56      8   -9.60 1 1 2 1 1   888    0 36.13 34.55 ----- 28.5 35.6 328.4 39.0 30.9 -29.9 30.0 -29.1 30.5 -29.0 31.2 -30.4
2025-11-03T13:24:05.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:24:05.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:24:05.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.474756
2025-11-03T13:24:05.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:24:05.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:24:05.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:24:05.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:24:05.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:24:05.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:23:29', tmtdew=45.36, humidity=3.87, cloud=0.0, wind=33.84, temperature=25.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:23:38.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:24:05.118 [DEBUG] [Thread-116527] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:24:05.193 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:24:05.204 [DEBUG] [Thread-116530] [transport.py] [_log()] starting thread (client mode): 0xed2ebf0
2025-11-03T13:24:05.204 [DEBUG] [Thread-116530] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:24:05.219 [DEBUG] [Thread-116530] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:24:05.219 [INFO] [Thread-116530] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:24:05.227 [DEBUG] [Thread-116530] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:24:05.227 [DEBUG] [Thread-116530] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:24:05.227 [DEBUG] [Thread-116530] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:24:05.227 [DEBUG] [Thread-116530] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:24:05.227 [DEBUG] [Thread-116530] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:24:05.227 [DEBUG] [Thread-116530] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:24:05.227 [DEBUG] [Thread-116530] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:24:05.227 [DEBUG] [Thread-116530] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:24:05.227 [DEBUG] [Thread-116530] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:24:05.227 [DEBUG] [Thread-116530] [transport.py] [_log()] client lang: <none>
2025-11-03T13:24:05.227 [DEBUG] [Thread-116530] [transport.py] [_log()] server lang: <none>
2025-11-03T13:24:05.227 [DEBUG] [Thread-116530] [transport.py] [_log()] kex follows: False
2025-11-03T13:24:05.227 [DEBUG] [Thread-116530] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:24:05.227 [DEBUG] [Thread-116530] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:24:05.227 [DEBUG] [Thread-116530] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:24:05.227 [DEBUG] [Thread-116530] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:24:05.227 [DEBUG] [Thread-116530] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:24:05.228 [DEBUG] [Thread-116530] [transport.py] [_log()] Compression: none
2025-11-03T13:24:05.228 [DEBUG] [Thread-116530] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:24:05.284 [DEBUG] [Thread-116530] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:24:05.284 [DEBUG] [Thread-116530] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:24:05.284 [DEBUG] [Thread-116530] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:24:05.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:24:05.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:24:05.341 [DEBUG] [Thread-116530] [transport.py] [_log()] userauth is OK
2025-11-03T13:24:05.341 [DEBUG] [Thread-116530] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:24:05.341 [DEBUG] [Thread-116530] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:24:05.341 [DEBUG] [Thread-116530] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:24:05.341 [DEBUG] [Thread-116530] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:24:05.356 [INFO] [Thread-116530] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:24:05.357 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:24:05.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:24:05.825 [DEBUG] [Thread-116532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:24:05.923 [DEBUG] [Thread-116533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:24:06.217 [DEBUG] [Thread-116530] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:24:06.217 [DEBUG] [Thread-116530] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:24:06.264 [DEBUG] [Thread-116530] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:24:06.264 [DEBUG] [Thread-116530] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:24:06.273 [DEBUG] [Thread-116530] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:24:06.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:24:06.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:24:06.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:24:06.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:24:06.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:24:06.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:24:06.305 [DEBUG] [Thread-116530] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:24:20.961 [DEBUG] [Thread-116534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:24:35.995 [DEBUG] [Thread-116535 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:24:36.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:24:36.328 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:24:36.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:24:37.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 24, 1), 44.85, 4.04, 0.0, 34.21, 25.73, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:24:37.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:24:01
2025-11-03T13:24:37.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:24:37.310 [DEBUG] [Thread-116536] [transport.py] [_log()] starting thread (client mode): 0xed2f5b0
2025-11-03T13:24:37.310 [DEBUG] [Thread-116536] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:24:37.328 [DEBUG] [Thread-116536] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:24:37.328 [INFO] [Thread-116536] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:24:37.329 [DEBUG] [Thread-116536] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:24:37.329 [DEBUG] [Thread-116536] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:24:37.329 [DEBUG] [Thread-116536] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:24:37.329 [DEBUG] [Thread-116536] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:24:37.329 [DEBUG] [Thread-116536] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:24:37.329 [DEBUG] [Thread-116536] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:24:37.329 [DEBUG] [Thread-116536] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:24:37.329 [DEBUG] [Thread-116536] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:24:37.329 [DEBUG] [Thread-116536] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:24:37.329 [DEBUG] [Thread-116536] [transport.py] [_log()] client lang: <none>
2025-11-03T13:24:37.329 [DEBUG] [Thread-116536] [transport.py] [_log()] server lang: <none>
2025-11-03T13:24:37.329 [DEBUG] [Thread-116536] [transport.py] [_log()] kex follows: False
2025-11-03T13:24:37.329 [DEBUG] [Thread-116536] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:24:37.329 [DEBUG] [Thread-116536] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:24:37.329 [DEBUG] [Thread-116536] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:24:37.329 [DEBUG] [Thread-116536] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:24:37.329 [DEBUG] [Thread-116536] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:24:37.329 [DEBUG] [Thread-116536] [transport.py] [_log()] Compression: none
2025-11-03T13:24:37.329 [DEBUG] [Thread-116536] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:24:37.339 [DEBUG] [Thread-116536] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:24:37.339 [DEBUG] [Thread-116536] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:24:37.339 [DEBUG] [Thread-116536] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:24:37.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:24:37.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:24:37.340 [DEBUG] [Thread-116536] [transport.py] [_log()] userauth is OK
2025-11-03T13:24:37.340 [DEBUG] [Thread-116536] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:24:37.340 [DEBUG] [Thread-116536] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:24:37.340 [DEBUG] [Thread-116536] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:24:37.340 [DEBUG] [Thread-116536] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:24:37.355 [INFO] [Thread-116536] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:24:37.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:24:38.006 [DEBUG] [Thread-116536] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:24:38.006 [DEBUG] [Thread-116536] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:24:38.006 [DEBUG] [Thread-116536] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:24:38.047 [DEBUG] [Thread-116536] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:24:38.047 [DEBUG] [Thread-116536] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:24:38.050 [DEBUG] [Thread-116536] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:24:38.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:24:38.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:24:38.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:24:38.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:24:38.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:24:38.075 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:24:38.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:24:38.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:24:38.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:24:38.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.475103 -999.00  +26.00  39.98      8   -9.70 1 1 2 1 1   888    0 36.04 30.15 ----- 32.4 40.0 313.4 45.1 30.8 -31.1 30.1 -29.9 30.4 -29.2 31.2 -28.3
2025-11-03T13:24:38.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:24:38.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:24:38.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.475103
2025-11-03T13:24:38.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:24:38.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:24:38.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:24:38.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:24:38.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:24:38.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:24:01', tmtdew=44.85, humidity=4.04, cloud=0.0, wind=34.21, temperature=25.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:24:08.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:24:38.077 [DEBUG] [Thread-116536] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:24:38.161 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:24:38.172 [DEBUG] [Thread-116539] [transport.py] [_log()] starting thread (client mode): 0xedd5c90
2025-11-03T13:24:38.173 [DEBUG] [Thread-116539] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:24:38.191 [DEBUG] [Thread-116539] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:24:38.191 [INFO] [Thread-116539] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:24:38.199 [DEBUG] [Thread-116539] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:24:38.200 [DEBUG] [Thread-116539] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:24:38.200 [DEBUG] [Thread-116539] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:24:38.200 [DEBUG] [Thread-116539] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:24:38.201 [DEBUG] [Thread-116539] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:24:38.201 [DEBUG] [Thread-116539] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:24:38.201 [DEBUG] [Thread-116539] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:24:38.201 [DEBUG] [Thread-116539] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:24:38.201 [DEBUG] [Thread-116539] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:24:38.201 [DEBUG] [Thread-116539] [transport.py] [_log()] client lang: <none>
2025-11-03T13:24:38.201 [DEBUG] [Thread-116539] [transport.py] [_log()] server lang: <none>
2025-11-03T13:24:38.201 [DEBUG] [Thread-116539] [transport.py] [_log()] kex follows: False
2025-11-03T13:24:38.201 [DEBUG] [Thread-116539] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:24:38.201 [DEBUG] [Thread-116539] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:24:38.201 [DEBUG] [Thread-116539] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:24:38.201 [DEBUG] [Thread-116539] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:24:38.201 [DEBUG] [Thread-116539] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:24:38.201 [DEBUG] [Thread-116539] [transport.py] [_log()] Compression: none
2025-11-03T13:24:38.201 [DEBUG] [Thread-116539] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:24:38.258 [DEBUG] [Thread-116539] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:24:38.267 [DEBUG] [Thread-116539] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:24:38.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:24:38.268 [DEBUG] [Thread-116539] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:24:38.269 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:24:38.313 [DEBUG] [Thread-116539] [transport.py] [_log()] userauth is OK
2025-11-03T13:24:38.313 [DEBUG] [Thread-116539] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:24:38.314 [DEBUG] [Thread-116539] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:24:38.314 [DEBUG] [Thread-116539] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:24:38.314 [DEBUG] [Thread-116539] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:24:38.332 [INFO] [Thread-116539] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:24:38.333 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:24:38.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:24:39.208 [DEBUG] [Thread-116539] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:24:39.209 [DEBUG] [Thread-116539] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:24:39.258 [DEBUG] [Thread-116539] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:24:39.258 [DEBUG] [Thread-116539] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:24:39.267 [DEBUG] [Thread-116539] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:24:39.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:24:39.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:24:39.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:24:39.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:24:39.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:24:39.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:24:39.304 [DEBUG] [Thread-116539] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:24:48.448 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:24:48.449 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:24:51.020 [DEBUG] [Thread-116541 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:25:05.883 [DEBUG] [Thread-116542 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:25:06.072 [DEBUG] [Thread-116543 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:25:09.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:25:09.326 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:25:09.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:25:09.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 25, 5), 45.58, 3.92, 0.0, 40.78, 25.85, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:25:09.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:25:05
2025-11-03T13:25:10.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:25:10.263 [DEBUG] [Thread-116544] [transport.py] [_log()] starting thread (client mode): 0xed21960
2025-11-03T13:25:10.263 [DEBUG] [Thread-116544] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:25:10.285 [DEBUG] [Thread-116544] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:25:10.285 [INFO] [Thread-116544] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:25:10.288 [DEBUG] [Thread-116544] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:25:10.289 [DEBUG] [Thread-116544] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:25:10.289 [DEBUG] [Thread-116544] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:25:10.289 [DEBUG] [Thread-116544] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:25:10.289 [DEBUG] [Thread-116544] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:25:10.289 [DEBUG] [Thread-116544] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:25:10.289 [DEBUG] [Thread-116544] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:25:10.289 [DEBUG] [Thread-116544] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:25:10.289 [DEBUG] [Thread-116544] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:25:10.289 [DEBUG] [Thread-116544] [transport.py] [_log()] client lang: <none>
2025-11-03T13:25:10.289 [DEBUG] [Thread-116544] [transport.py] [_log()] server lang: <none>
2025-11-03T13:25:10.289 [DEBUG] [Thread-116544] [transport.py] [_log()] kex follows: False
2025-11-03T13:25:10.289 [DEBUG] [Thread-116544] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:25:10.290 [DEBUG] [Thread-116544] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:25:10.290 [DEBUG] [Thread-116544] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:25:10.290 [DEBUG] [Thread-116544] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:25:10.290 [DEBUG] [Thread-116544] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:25:10.290 [DEBUG] [Thread-116544] [transport.py] [_log()] Compression: none
2025-11-03T13:25:10.290 [DEBUG] [Thread-116544] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:25:10.307 [DEBUG] [Thread-116544] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:25:10.308 [DEBUG] [Thread-116544] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:25:10.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:25:10.309 [DEBUG] [Thread-116544] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:25:10.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:25:10.311 [DEBUG] [Thread-116544] [transport.py] [_log()] userauth is OK
2025-11-03T13:25:10.312 [DEBUG] [Thread-116544] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:25:10.312 [DEBUG] [Thread-116544] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:25:10.312 [DEBUG] [Thread-116544] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:25:10.312 [DEBUG] [Thread-116544] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:25:10.335 [INFO] [Thread-116544] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:25:10.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:25:12.496 [DEBUG] [Thread-116544] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:25:12.496 [DEBUG] [Thread-116544] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:25:12.497 [DEBUG] [Thread-116544] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:25:12.537 [DEBUG] [Thread-116544] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:25:12.537 [DEBUG] [Thread-116544] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:25:12.540 [DEBUG] [Thread-116544] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:25:12.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:25:12.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:25:12.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:25:12.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:25:12.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:25:12.580 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:25:12.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:25:12.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:25:12.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:25:12.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.475451 -999.00  +26.00  34.44      8   -9.40 1 1 2 1 1   888    0 36.50 22.60 ----- 25.9 34.4 309.4 46.4 30.9 -30.0 30.0 -29.9 30.4 -31.4 31.2 -29.0
2025-11-03T13:25:12.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:25:12.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:25:12.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.475451
2025-11-03T13:25:12.589 [DEBUG] [Thread-116544] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:25:12.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:25:12.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:25:12.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:25:12.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:25:12.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:25:12.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:25:05', tmtdew=45.58, humidity=3.92, cloud=0.0, wind=40.78, temperature=25.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:24:38.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:25:12.677 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:25:12.690 [DEBUG] [Thread-116547] [transport.py] [_log()] starting thread (client mode): 0xed225c0
2025-11-03T13:25:12.690 [DEBUG] [Thread-116547] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:25:12.705 [DEBUG] [Thread-116547] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:25:12.705 [INFO] [Thread-116547] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:25:12.715 [DEBUG] [Thread-116547] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:25:12.715 [DEBUG] [Thread-116547] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:25:12.715 [DEBUG] [Thread-116547] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:25:12.715 [DEBUG] [Thread-116547] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:25:12.715 [DEBUG] [Thread-116547] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:25:12.715 [DEBUG] [Thread-116547] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:25:12.715 [DEBUG] [Thread-116547] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:25:12.715 [DEBUG] [Thread-116547] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:25:12.715 [DEBUG] [Thread-116547] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:25:12.715 [DEBUG] [Thread-116547] [transport.py] [_log()] client lang: <none>
2025-11-03T13:25:12.715 [DEBUG] [Thread-116547] [transport.py] [_log()] server lang: <none>
2025-11-03T13:25:12.716 [DEBUG] [Thread-116547] [transport.py] [_log()] kex follows: False
2025-11-03T13:25:12.716 [DEBUG] [Thread-116547] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:25:12.716 [DEBUG] [Thread-116547] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:25:12.716 [DEBUG] [Thread-116547] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:25:12.716 [DEBUG] [Thread-116547] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:25:12.716 [DEBUG] [Thread-116547] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:25:12.716 [DEBUG] [Thread-116547] [transport.py] [_log()] Compression: none
2025-11-03T13:25:12.716 [DEBUG] [Thread-116547] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:25:12.781 [DEBUG] [Thread-116547] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:25:12.781 [DEBUG] [Thread-116547] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:25:12.782 [DEBUG] [Thread-116547] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:25:12.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:25:12.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:25:12.840 [DEBUG] [Thread-116547] [transport.py] [_log()] userauth is OK
2025-11-03T13:25:12.840 [DEBUG] [Thread-116547] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:25:12.840 [DEBUG] [Thread-116547] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:25:12.840 [DEBUG] [Thread-116547] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:25:12.840 [DEBUG] [Thread-116547] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:25:12.861 [INFO] [Thread-116547] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:25:12.861 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:25:12.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:25:13.710 [DEBUG] [Thread-116547] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:25:13.710 [DEBUG] [Thread-116547] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:25:13.758 [DEBUG] [Thread-116547] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:25:13.758 [DEBUG] [Thread-116547] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:25:13.768 [DEBUG] [Thread-116547] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:25:13.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:25:13.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:25:13.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:25:13.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:25:13.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:25:13.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:25:13.807 [DEBUG] [Thread-116547] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:25:21.109 [DEBUG] [Thread-116549 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:25:36.156 [DEBUG] [Thread-116550 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:25:43.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:25:43.830 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:25:43.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:25:44.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 25, 38), 45.22, 4.0, 0.0, 37.76, 25.86, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:25:44.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:25:38
2025-11-03T13:25:44.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:25:44.835 [DEBUG] [Thread-116551] [transport.py] [_log()] starting thread (client mode): 0xed2e2c0
2025-11-03T13:25:44.835 [DEBUG] [Thread-116551] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:25:44.856 [DEBUG] [Thread-116551] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:25:44.856 [INFO] [Thread-116551] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:25:44.858 [DEBUG] [Thread-116551] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:25:44.858 [DEBUG] [Thread-116551] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:25:44.858 [DEBUG] [Thread-116551] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:25:44.858 [DEBUG] [Thread-116551] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:25:44.858 [DEBUG] [Thread-116551] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:25:44.858 [DEBUG] [Thread-116551] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:25:44.858 [DEBUG] [Thread-116551] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:25:44.858 [DEBUG] [Thread-116551] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:25:44.858 [DEBUG] [Thread-116551] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:25:44.858 [DEBUG] [Thread-116551] [transport.py] [_log()] client lang: <none>
2025-11-03T13:25:44.858 [DEBUG] [Thread-116551] [transport.py] [_log()] server lang: <none>
2025-11-03T13:25:44.858 [DEBUG] [Thread-116551] [transport.py] [_log()] kex follows: False
2025-11-03T13:25:44.858 [DEBUG] [Thread-116551] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:25:44.858 [DEBUG] [Thread-116551] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:25:44.858 [DEBUG] [Thread-116551] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:25:44.858 [DEBUG] [Thread-116551] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:25:44.858 [DEBUG] [Thread-116551] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:25:44.858 [DEBUG] [Thread-116551] [transport.py] [_log()] Compression: none
2025-11-03T13:25:44.858 [DEBUG] [Thread-116551] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:25:44.866 [DEBUG] [Thread-116551] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:25:44.866 [DEBUG] [Thread-116551] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:25:44.866 [DEBUG] [Thread-116551] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:25:44.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:25:44.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:25:44.867 [DEBUG] [Thread-116551] [transport.py] [_log()] userauth is OK
2025-11-03T13:25:44.867 [DEBUG] [Thread-116551] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:25:44.867 [DEBUG] [Thread-116551] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:25:44.867 [DEBUG] [Thread-116551] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:25:44.867 [DEBUG] [Thread-116551] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:25:44.885 [INFO] [Thread-116551] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:25:44.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:25:45.504 [DEBUG] [Thread-116551] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:25:45.504 [DEBUG] [Thread-116551] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:25:45.505 [DEBUG] [Thread-116551] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:25:45.545 [DEBUG] [Thread-116551] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:25:45.546 [DEBUG] [Thread-116551] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:25:45.548 [DEBUG] [Thread-116551] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:25:45.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:25:45.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:25:45.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:25:45.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:25:45.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:25:45.568 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:25:45.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:25:45.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:25:45.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:25:45.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.475798 -999.00  +26.20  28.02      8   -9.30 1 1 1 1 1   888    0 36.56 18.55 ----- 33.6 28.0 315.8 48.7 30.8 -30.9 30.1 -29.9 30.4 -30.9 31.3 -28.4
2025-11-03T13:25:45.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:25:45.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:25:45.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.475798
2025-11-03T13:25:45.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:25:45.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:25:45.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:25:45.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:25:45.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:25:45.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:25:38', tmtdew=45.22, humidity=4.0, cloud=0.0, wind=37.76, temperature=25.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:25:08.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:25:45.571 [DEBUG] [Thread-116551] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:25:45.675 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:25:45.687 [DEBUG] [Thread-116554] [transport.py] [_log()] starting thread (client mode): 0xed209d0
2025-11-03T13:25:45.687 [DEBUG] [Thread-116554] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:25:45.701 [DEBUG] [Thread-116554] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:25:45.702 [INFO] [Thread-116554] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:25:45.709 [DEBUG] [Thread-116554] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:25:45.710 [DEBUG] [Thread-116554] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:25:45.710 [DEBUG] [Thread-116554] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:25:45.710 [DEBUG] [Thread-116554] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:25:45.710 [DEBUG] [Thread-116554] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:25:45.710 [DEBUG] [Thread-116554] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:25:45.710 [DEBUG] [Thread-116554] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:25:45.710 [DEBUG] [Thread-116554] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:25:45.711 [DEBUG] [Thread-116554] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:25:45.711 [DEBUG] [Thread-116554] [transport.py] [_log()] client lang: <none>
2025-11-03T13:25:45.711 [DEBUG] [Thread-116554] [transport.py] [_log()] server lang: <none>
2025-11-03T13:25:45.711 [DEBUG] [Thread-116554] [transport.py] [_log()] kex follows: False
2025-11-03T13:25:45.711 [DEBUG] [Thread-116554] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:25:45.711 [DEBUG] [Thread-116554] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:25:45.711 [DEBUG] [Thread-116554] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:25:45.711 [DEBUG] [Thread-116554] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:25:45.712 [DEBUG] [Thread-116554] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:25:45.712 [DEBUG] [Thread-116554] [transport.py] [_log()] Compression: none
2025-11-03T13:25:45.712 [DEBUG] [Thread-116554] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:25:45.770 [DEBUG] [Thread-116554] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:25:45.771 [DEBUG] [Thread-116554] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:25:45.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:25:45.771 [DEBUG] [Thread-116554] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:25:45.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:25:45.829 [DEBUG] [Thread-116554] [transport.py] [_log()] userauth is OK
2025-11-03T13:25:45.829 [DEBUG] [Thread-116554] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:25:45.829 [DEBUG] [Thread-116554] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:25:45.829 [DEBUG] [Thread-116554] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:25:45.829 [DEBUG] [Thread-116554] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:25:45.843 [INFO] [Thread-116554] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:25:45.843 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:25:45.843 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:25:46.724 [DEBUG] [Thread-116554] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:25:46.724 [DEBUG] [Thread-116554] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:25:46.773 [DEBUG] [Thread-116554] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:25:46.773 [DEBUG] [Thread-116554] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:25:46.782 [DEBUG] [Thread-116554] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:25:46.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:25:46.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:25:46.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:25:46.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:25:46.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:25:46.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:25:46.828 [DEBUG] [Thread-116554] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:25:48.589 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:25:48.590 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:25:51.193 [DEBUG] [Thread-116556 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:26:05.934 [DEBUG] [Thread-116557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:26:06.240 [DEBUG] [Thread-116558 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:26:16.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:26:16.847 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:26:16.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:26:17.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 26, 10), 45.62, 3.87, 0.0, 43.46, 25.86, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:26:17.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:26:10
2025-11-03T13:26:17.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:26:17.835 [DEBUG] [Thread-116559] [transport.py] [_log()] starting thread (client mode): 0xed210f0
2025-11-03T13:26:17.835 [DEBUG] [Thread-116559] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:26:17.854 [DEBUG] [Thread-116559] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:26:17.855 [INFO] [Thread-116559] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:26:17.858 [DEBUG] [Thread-116559] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:26:17.858 [DEBUG] [Thread-116559] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:26:17.858 [DEBUG] [Thread-116559] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:26:17.859 [DEBUG] [Thread-116559] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:26:17.859 [DEBUG] [Thread-116559] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:26:17.859 [DEBUG] [Thread-116559] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:26:17.859 [DEBUG] [Thread-116559] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:26:17.859 [DEBUG] [Thread-116559] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:26:17.859 [DEBUG] [Thread-116559] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:26:17.859 [DEBUG] [Thread-116559] [transport.py] [_log()] client lang: <none>
2025-11-03T13:26:17.859 [DEBUG] [Thread-116559] [transport.py] [_log()] server lang: <none>
2025-11-03T13:26:17.859 [DEBUG] [Thread-116559] [transport.py] [_log()] kex follows: False
2025-11-03T13:26:17.859 [DEBUG] [Thread-116559] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:26:17.859 [DEBUG] [Thread-116559] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:26:17.859 [DEBUG] [Thread-116559] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:26:17.859 [DEBUG] [Thread-116559] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:26:17.859 [DEBUG] [Thread-116559] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:26:17.859 [DEBUG] [Thread-116559] [transport.py] [_log()] Compression: none
2025-11-03T13:26:17.859 [DEBUG] [Thread-116559] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:26:17.877 [DEBUG] [Thread-116559] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:26:17.878 [DEBUG] [Thread-116559] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:26:17.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:26:17.879 [DEBUG] [Thread-116559] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:26:17.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:26:17.881 [DEBUG] [Thread-116559] [transport.py] [_log()] userauth is OK
2025-11-03T13:26:17.881 [DEBUG] [Thread-116559] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:26:17.881 [DEBUG] [Thread-116559] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:26:17.881 [DEBUG] [Thread-116559] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:26:17.881 [DEBUG] [Thread-116559] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:26:17.895 [INFO] [Thread-116559] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:26:17.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:26:18.476 [DEBUG] [Thread-116559] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:26:18.477 [DEBUG] [Thread-116559] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:26:18.477 [DEBUG] [Thread-116559] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:26:18.517 [DEBUG] [Thread-116559] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:26:18.518 [DEBUG] [Thread-116559] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:26:18.519 [DEBUG] [Thread-116559] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:26:18.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:26:18.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:26:18.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:26:18.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:26:18.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:26:18.544 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:26:18.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:26:18.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:26:18.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:26:18.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.476145 -999.00  +26.70  27.07      8   -9.20 1 1 1 1 1   888    0 36.04 13.93 ----- 34.0 27.1 333.8 44.5 30.9 -30.0 30.2 -29.0 30.4 -29.7 31.3 -28.6
2025-11-03T13:26:18.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:26:18.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:26:18.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.476145
2025-11-03T13:26:18.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:26:18.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:26:18.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:26:18.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:26:18.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:26:18.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:26:10', tmtdew=45.62, humidity=3.87, cloud=0.0, wind=43.46, temperature=25.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:25:38.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:26:18.545 [DEBUG] [Thread-116559] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:26:18.617 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:26:18.628 [DEBUG] [Thread-116562] [transport.py] [_log()] starting thread (client mode): 0x81b9900
2025-11-03T13:26:18.628 [DEBUG] [Thread-116562] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:26:18.645 [DEBUG] [Thread-116562] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:26:18.646 [INFO] [Thread-116562] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:26:18.655 [DEBUG] [Thread-116562] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:26:18.655 [DEBUG] [Thread-116562] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:26:18.655 [DEBUG] [Thread-116562] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:26:18.655 [DEBUG] [Thread-116562] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:26:18.655 [DEBUG] [Thread-116562] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:26:18.655 [DEBUG] [Thread-116562] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:26:18.655 [DEBUG] [Thread-116562] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:26:18.655 [DEBUG] [Thread-116562] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:26:18.655 [DEBUG] [Thread-116562] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:26:18.655 [DEBUG] [Thread-116562] [transport.py] [_log()] client lang: <none>
2025-11-03T13:26:18.655 [DEBUG] [Thread-116562] [transport.py] [_log()] server lang: <none>
2025-11-03T13:26:18.655 [DEBUG] [Thread-116562] [transport.py] [_log()] kex follows: False
2025-11-03T13:26:18.655 [DEBUG] [Thread-116562] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:26:18.655 [DEBUG] [Thread-116562] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:26:18.655 [DEBUG] [Thread-116562] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:26:18.655 [DEBUG] [Thread-116562] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:26:18.655 [DEBUG] [Thread-116562] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:26:18.655 [DEBUG] [Thread-116562] [transport.py] [_log()] Compression: none
2025-11-03T13:26:18.655 [DEBUG] [Thread-116562] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:26:18.708 [DEBUG] [Thread-116562] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:26:18.709 [DEBUG] [Thread-116562] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:26:18.709 [DEBUG] [Thread-116562] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:26:18.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:26:18.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:26:18.765 [DEBUG] [Thread-116562] [transport.py] [_log()] userauth is OK
2025-11-03T13:26:18.765 [DEBUG] [Thread-116562] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:26:18.765 [DEBUG] [Thread-116562] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:26:18.765 [DEBUG] [Thread-116562] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:26:18.765 [DEBUG] [Thread-116562] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:26:18.779 [INFO] [Thread-116562] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:26:18.779 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:26:18.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:26:19.614 [DEBUG] [Thread-116562] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:26:19.614 [DEBUG] [Thread-116562] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:26:19.663 [DEBUG] [Thread-116562] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:26:19.664 [DEBUG] [Thread-116562] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:26:19.673 [DEBUG] [Thread-116562] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:26:19.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:26:19.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:26:19.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:26:19.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:26:19.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:26:19.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:26:19.719 [DEBUG] [Thread-116562] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:26:21.273 [DEBUG] [Thread-116564 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:26:36.325 [DEBUG] [Thread-116565 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:26:48.740 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:26:48.741 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:26:49.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:26:49.718 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:26:49.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:26:50.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 26, 42), 45.47, 3.84, 0.0, 42.77, 25.63, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:26:50.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:26:42
2025-11-03T13:26:50.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:26:50.681 [DEBUG] [Thread-116566] [transport.py] [_log()] starting thread (client mode): 0xed2fa30
2025-11-03T13:26:50.681 [DEBUG] [Thread-116566] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:26:50.699 [DEBUG] [Thread-116566] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:26:50.699 [INFO] [Thread-116566] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:26:50.708 [DEBUG] [Thread-116566] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:26:50.709 [DEBUG] [Thread-116566] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:26:50.709 [DEBUG] [Thread-116566] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:26:50.709 [DEBUG] [Thread-116566] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:26:50.709 [DEBUG] [Thread-116566] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:26:50.709 [DEBUG] [Thread-116566] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:26:50.709 [DEBUG] [Thread-116566] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:26:50.709 [DEBUG] [Thread-116566] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:26:50.709 [DEBUG] [Thread-116566] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:26:50.709 [DEBUG] [Thread-116566] [transport.py] [_log()] client lang: <none>
2025-11-03T13:26:50.709 [DEBUG] [Thread-116566] [transport.py] [_log()] server lang: <none>
2025-11-03T13:26:50.709 [DEBUG] [Thread-116566] [transport.py] [_log()] kex follows: False
2025-11-03T13:26:50.709 [DEBUG] [Thread-116566] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:26:50.709 [DEBUG] [Thread-116566] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:26:50.709 [DEBUG] [Thread-116566] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:26:50.709 [DEBUG] [Thread-116566] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:26:50.709 [DEBUG] [Thread-116566] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:26:50.709 [DEBUG] [Thread-116566] [transport.py] [_log()] Compression: none
2025-11-03T13:26:50.709 [DEBUG] [Thread-116566] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:26:50.726 [DEBUG] [Thread-116566] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:26:50.727 [DEBUG] [Thread-116566] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:26:50.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:26:50.728 [DEBUG] [Thread-116566] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:26:50.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:26:50.729 [DEBUG] [Thread-116566] [transport.py] [_log()] userauth is OK
2025-11-03T13:26:50.730 [DEBUG] [Thread-116566] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:26:50.730 [DEBUG] [Thread-116566] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:26:50.730 [DEBUG] [Thread-116566] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:26:50.730 [DEBUG] [Thread-116566] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:26:50.765 [INFO] [Thread-116566] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:26:50.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:26:51.354 [DEBUG] [Thread-116568 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:26:51.405 [DEBUG] [Thread-116566] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:26:51.406 [DEBUG] [Thread-116566] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:26:51.406 [DEBUG] [Thread-116566] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:26:51.447 [DEBUG] [Thread-116566] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:26:51.447 [DEBUG] [Thread-116566] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:26:51.449 [DEBUG] [Thread-116566] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:26:51.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:26:51.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:26:51.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:26:51.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:26:51.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:26:51.467 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:26:51.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:26:51.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:26:51.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:26:51.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.476492 -999.00  +26.20  38.12      8   -9.50 1 1 2 1 1   888    0 35.83 12.03 ----- 33.2 38.1 319.8 47.1 30.9 -32.3 30.2 -31.1 30.4 -31.2 31.4 -29.2
2025-11-03T13:26:51.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:26:51.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:26:51.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.476492
2025-11-03T13:26:51.476 [DEBUG] [Thread-116566] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:26:51.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:26:51.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:26:51.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:26:51.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:26:51.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:26:51.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:26:42', tmtdew=45.47, humidity=3.84, cloud=0.0, wind=42.77, temperature=25.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:26:08.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:26:51.549 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:26:51.560 [DEBUG] [Thread-116570] [transport.py] [_log()] starting thread (client mode): 0xedd4f70
2025-11-03T13:26:51.560 [DEBUG] [Thread-116570] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:26:51.576 [DEBUG] [Thread-116570] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:26:51.576 [INFO] [Thread-116570] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:26:51.583 [DEBUG] [Thread-116570] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:26:51.583 [DEBUG] [Thread-116570] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:26:51.583 [DEBUG] [Thread-116570] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:26:51.583 [DEBUG] [Thread-116570] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:26:51.583 [DEBUG] [Thread-116570] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:26:51.583 [DEBUG] [Thread-116570] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:26:51.583 [DEBUG] [Thread-116570] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:26:51.583 [DEBUG] [Thread-116570] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:26:51.583 [DEBUG] [Thread-116570] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:26:51.583 [DEBUG] [Thread-116570] [transport.py] [_log()] client lang: <none>
2025-11-03T13:26:51.583 [DEBUG] [Thread-116570] [transport.py] [_log()] server lang: <none>
2025-11-03T13:26:51.584 [DEBUG] [Thread-116570] [transport.py] [_log()] kex follows: False
2025-11-03T13:26:51.584 [DEBUG] [Thread-116570] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:26:51.584 [DEBUG] [Thread-116570] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:26:51.584 [DEBUG] [Thread-116570] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:26:51.584 [DEBUG] [Thread-116570] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:26:51.584 [DEBUG] [Thread-116570] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:26:51.584 [DEBUG] [Thread-116570] [transport.py] [_log()] Compression: none
2025-11-03T13:26:51.584 [DEBUG] [Thread-116570] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:26:51.640 [DEBUG] [Thread-116570] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:26:51.640 [DEBUG] [Thread-116570] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:26:51.640 [DEBUG] [Thread-116570] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:26:51.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:26:51.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:26:51.697 [DEBUG] [Thread-116570] [transport.py] [_log()] userauth is OK
2025-11-03T13:26:51.697 [DEBUG] [Thread-116570] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:26:51.697 [DEBUG] [Thread-116570] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:26:51.697 [DEBUG] [Thread-116570] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:26:51.697 [DEBUG] [Thread-116570] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:26:51.711 [INFO] [Thread-116570] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:26:51.711 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:26:51.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:26:52.563 [DEBUG] [Thread-116570] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:26:52.573 [DEBUG] [Thread-116570] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:26:52.612 [DEBUG] [Thread-116570] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:26:52.612 [DEBUG] [Thread-116570] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:26:52.622 [DEBUG] [Thread-116570] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:26:52.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:26:52.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:26:52.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:26:52.650 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:26:52.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:26:52.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:26:52.659 [DEBUG] [Thread-116570] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:27:06.013 [DEBUG] [Thread-116572 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:27:06.389 [DEBUG] [Thread-116573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:27:21.439 [DEBUG] [Thread-116574 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:27:22.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:27:22.681 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:27:22.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:27:23.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 27, 14), 45.09, 3.95, 0.0, 40.26, 25.57, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:27:23.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:27:14
2025-11-03T13:27:23.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:27:23.639 [DEBUG] [Thread-116575] [transport.py] [_log()] starting thread (client mode): 0xed23e80
2025-11-03T13:27:23.639 [DEBUG] [Thread-116575] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:27:23.660 [DEBUG] [Thread-116575] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:27:23.660 [INFO] [Thread-116575] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:27:23.664 [DEBUG] [Thread-116575] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:27:23.664 [DEBUG] [Thread-116575] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:27:23.664 [DEBUG] [Thread-116575] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:27:23.664 [DEBUG] [Thread-116575] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:27:23.664 [DEBUG] [Thread-116575] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:27:23.664 [DEBUG] [Thread-116575] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:27:23.664 [DEBUG] [Thread-116575] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:27:23.664 [DEBUG] [Thread-116575] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:27:23.664 [DEBUG] [Thread-116575] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:27:23.664 [DEBUG] [Thread-116575] [transport.py] [_log()] client lang: <none>
2025-11-03T13:27:23.664 [DEBUG] [Thread-116575] [transport.py] [_log()] server lang: <none>
2025-11-03T13:27:23.664 [DEBUG] [Thread-116575] [transport.py] [_log()] kex follows: False
2025-11-03T13:27:23.664 [DEBUG] [Thread-116575] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:27:23.664 [DEBUG] [Thread-116575] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:27:23.664 [DEBUG] [Thread-116575] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:27:23.664 [DEBUG] [Thread-116575] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:27:23.664 [DEBUG] [Thread-116575] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:27:23.664 [DEBUG] [Thread-116575] [transport.py] [_log()] Compression: none
2025-11-03T13:27:23.664 [DEBUG] [Thread-116575] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:27:23.682 [DEBUG] [Thread-116575] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:27:23.682 [DEBUG] [Thread-116575] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:27:23.682 [DEBUG] [Thread-116575] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:27:23.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:27:23.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:27:23.684 [DEBUG] [Thread-116575] [transport.py] [_log()] userauth is OK
2025-11-03T13:27:23.684 [DEBUG] [Thread-116575] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:27:23.684 [DEBUG] [Thread-116575] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:27:23.684 [DEBUG] [Thread-116575] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:27:23.684 [DEBUG] [Thread-116575] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:27:23.700 [INFO] [Thread-116575] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:27:23.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:27:24.440 [DEBUG] [Thread-116575] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:27:24.440 [DEBUG] [Thread-116575] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:27:24.440 [DEBUG] [Thread-116575] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:27:24.481 [DEBUG] [Thread-116575] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:27:24.481 [DEBUG] [Thread-116575] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:27:24.483 [DEBUG] [Thread-116575] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:27:24.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:27:24.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:27:24.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:27:24.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:27:24.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:27:24.499 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:27:24.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:27:24.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:27:24.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:27:24.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.476840 -999.00  +25.90  35.00      8   -9.50 1 1 2 1 1   888    0 36.29 10.24 ----- 35.9 35.0 322.4 49.2 30.8 -30.3 30.0 -29.9 30.1 -30.7 31.2 -29.9
2025-11-03T13:27:24.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:27:24.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:27:24.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.476840
2025-11-03T13:27:24.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:27:24.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:27:24.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:27:24.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:27:24.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:27:24.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:27:14', tmtdew=45.09, humidity=3.95, cloud=0.0, wind=40.26, temperature=25.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:26:38.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:27:24.500 [DEBUG] [Thread-116575] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:27:24.574 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:27:24.587 [DEBUG] [Thread-116578] [transport.py] [_log()] starting thread (client mode): 0xed4e0e0
2025-11-03T13:27:24.587 [DEBUG] [Thread-116578] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:27:24.604 [DEBUG] [Thread-116578] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:27:24.604 [INFO] [Thread-116578] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:27:24.611 [DEBUG] [Thread-116578] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:27:24.611 [DEBUG] [Thread-116578] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:27:24.611 [DEBUG] [Thread-116578] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:27:24.611 [DEBUG] [Thread-116578] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:27:24.611 [DEBUG] [Thread-116578] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:27:24.611 [DEBUG] [Thread-116578] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:27:24.611 [DEBUG] [Thread-116578] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:27:24.611 [DEBUG] [Thread-116578] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:27:24.611 [DEBUG] [Thread-116578] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:27:24.611 [DEBUG] [Thread-116578] [transport.py] [_log()] client lang: <none>
2025-11-03T13:27:24.611 [DEBUG] [Thread-116578] [transport.py] [_log()] server lang: <none>
2025-11-03T13:27:24.611 [DEBUG] [Thread-116578] [transport.py] [_log()] kex follows: False
2025-11-03T13:27:24.611 [DEBUG] [Thread-116578] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:27:24.611 [DEBUG] [Thread-116578] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:27:24.611 [DEBUG] [Thread-116578] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:27:24.611 [DEBUG] [Thread-116578] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:27:24.612 [DEBUG] [Thread-116578] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:27:24.612 [DEBUG] [Thread-116578] [transport.py] [_log()] Compression: none
2025-11-03T13:27:24.612 [DEBUG] [Thread-116578] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:27:24.668 [DEBUG] [Thread-116578] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:27:24.668 [DEBUG] [Thread-116578] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:27:24.668 [DEBUG] [Thread-116578] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:27:24.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:27:24.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:27:24.725 [DEBUG] [Thread-116578] [transport.py] [_log()] userauth is OK
2025-11-03T13:27:24.725 [DEBUG] [Thread-116578] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:27:24.725 [DEBUG] [Thread-116578] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:27:24.725 [DEBUG] [Thread-116578] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:27:24.725 [DEBUG] [Thread-116578] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:27:24.740 [INFO] [Thread-116578] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:27:24.740 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:27:24.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:27:25.669 [DEBUG] [Thread-116578] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:27:25.669 [DEBUG] [Thread-116578] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:27:25.716 [DEBUG] [Thread-116578] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:27:25.717 [DEBUG] [Thread-116578] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:27:25.725 [DEBUG] [Thread-116578] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:27:25.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:27:25.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:27:25.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:27:25.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:27:25.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:27:25.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:27:25.757 [DEBUG] [Thread-116578] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:27:36.472 [DEBUG] [Thread-116580 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:27:48.881 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:27:48.882 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:27:51.541 [DEBUG] [Thread-116581 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:27:55.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:27:55.780 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:27:55.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:27:56.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 27, 47), 44.65, 3.97, 0.0, 26.04, 25.7, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:27:56.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:27:47
2025-11-03T13:27:56.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:27:56.848 [DEBUG] [Thread-116582] [transport.py] [_log()] starting thread (client mode): 0xed2f370
2025-11-03T13:27:56.848 [DEBUG] [Thread-116582] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:27:56.867 [DEBUG] [Thread-116582] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:27:56.868 [INFO] [Thread-116582] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:27:56.873 [DEBUG] [Thread-116582] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:27:56.873 [DEBUG] [Thread-116582] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:27:56.873 [DEBUG] [Thread-116582] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:27:56.873 [DEBUG] [Thread-116582] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:27:56.873 [DEBUG] [Thread-116582] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:27:56.873 [DEBUG] [Thread-116582] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:27:56.873 [DEBUG] [Thread-116582] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:27:56.873 [DEBUG] [Thread-116582] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:27:56.873 [DEBUG] [Thread-116582] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:27:56.873 [DEBUG] [Thread-116582] [transport.py] [_log()] client lang: <none>
2025-11-03T13:27:56.873 [DEBUG] [Thread-116582] [transport.py] [_log()] server lang: <none>
2025-11-03T13:27:56.873 [DEBUG] [Thread-116582] [transport.py] [_log()] kex follows: False
2025-11-03T13:27:56.873 [DEBUG] [Thread-116582] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:27:56.873 [DEBUG] [Thread-116582] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:27:56.873 [DEBUG] [Thread-116582] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:27:56.873 [DEBUG] [Thread-116582] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:27:56.873 [DEBUG] [Thread-116582] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:27:56.873 [DEBUG] [Thread-116582] [transport.py] [_log()] Compression: none
2025-11-03T13:27:56.873 [DEBUG] [Thread-116582] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:27:56.893 [DEBUG] [Thread-116582] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:27:56.894 [DEBUG] [Thread-116582] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:27:56.895 [DEBUG] [Thread-116582] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:27:56.895 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:27:56.896 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:27:56.897 [DEBUG] [Thread-116582] [transport.py] [_log()] userauth is OK
2025-11-03T13:27:56.897 [DEBUG] [Thread-116582] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:27:56.897 [DEBUG] [Thread-116582] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:27:56.897 [DEBUG] [Thread-116582] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:27:56.897 [DEBUG] [Thread-116582] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:27:56.934 [INFO] [Thread-116582] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:27:56.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:27:57.580 [DEBUG] [Thread-116582] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:27:57.589 [DEBUG] [Thread-116582] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:27:57.589 [DEBUG] [Thread-116582] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:27:57.621 [DEBUG] [Thread-116582] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:27:57.621 [DEBUG] [Thread-116582] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:27:57.625 [DEBUG] [Thread-116582] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:27:57.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:27:57.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:27:57.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:27:57.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:27:57.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:27:57.651 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:27:57.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:27:57.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:27:57.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:27:57.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.477187 -999.00  +26.00  30.43      8   -9.40 1 1 2 1 1   888    0 35.61 8.49 ----- 27.6 30.4 330.8 38.2 30.8 -29.5 30.0 -28.8 30.2 -28.4 31.1 -30.0
2025-11-03T13:27:57.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:27:57.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:27:57.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.477187
2025-11-03T13:27:57.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:27:57.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:27:57.653 [DEBUG] [Thread-116582] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:27:57.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:27:57.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:27:57.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:27:57.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:27:47', tmtdew=44.65, humidity=3.97, cloud=0.0, wind=26.04, temperature=25.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:27:08.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:27:57.737 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:27:57.748 [DEBUG] [Thread-116585] [transport.py] [_log()] starting thread (client mode): 0xed2ce50
2025-11-03T13:27:57.749 [DEBUG] [Thread-116585] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:27:57.767 [DEBUG] [Thread-116585] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:27:57.767 [INFO] [Thread-116585] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:27:57.778 [DEBUG] [Thread-116585] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:27:57.779 [DEBUG] [Thread-116585] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:27:57.779 [DEBUG] [Thread-116585] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:27:57.779 [DEBUG] [Thread-116585] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:27:57.779 [DEBUG] [Thread-116585] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:27:57.779 [DEBUG] [Thread-116585] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:27:57.779 [DEBUG] [Thread-116585] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:27:57.779 [DEBUG] [Thread-116585] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:27:57.780 [DEBUG] [Thread-116585] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:27:57.780 [DEBUG] [Thread-116585] [transport.py] [_log()] client lang: <none>
2025-11-03T13:27:57.780 [DEBUG] [Thread-116585] [transport.py] [_log()] server lang: <none>
2025-11-03T13:27:57.780 [DEBUG] [Thread-116585] [transport.py] [_log()] kex follows: False
2025-11-03T13:27:57.780 [DEBUG] [Thread-116585] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:27:57.780 [DEBUG] [Thread-116585] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:27:57.781 [DEBUG] [Thread-116585] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:27:57.781 [DEBUG] [Thread-116585] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:27:57.781 [DEBUG] [Thread-116585] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:27:57.781 [DEBUG] [Thread-116585] [transport.py] [_log()] Compression: none
2025-11-03T13:27:57.782 [DEBUG] [Thread-116585] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:27:57.844 [DEBUG] [Thread-116585] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:27:57.844 [DEBUG] [Thread-116585] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:27:57.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:27:57.846 [DEBUG] [Thread-116585] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:27:57.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:27:57.902 [DEBUG] [Thread-116585] [transport.py] [_log()] userauth is OK
2025-11-03T13:27:57.902 [DEBUG] [Thread-116585] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:27:57.902 [DEBUG] [Thread-116585] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:27:57.902 [DEBUG] [Thread-116585] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:27:57.902 [DEBUG] [Thread-116585] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:27:57.915 [INFO] [Thread-116585] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:27:57.915 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:27:57.916 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:27:58.748 [DEBUG] [Thread-116585] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:27:58.748 [DEBUG] [Thread-116585] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:27:58.798 [DEBUG] [Thread-116585] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:27:58.798 [DEBUG] [Thread-116585] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:27:58.806 [DEBUG] [Thread-116585] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:27:58.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:27:58.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:27:58.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:27:58.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:27:58.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:27:58.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:27:58.838 [DEBUG] [Thread-116585] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:28:06.090 [DEBUG] [Thread-116587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:28:06.573 [DEBUG] [Thread-116588 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:28:21.619 [DEBUG] [Thread-116589 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:28:28.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:28:28.830 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:28:28.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:28:29.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 28, 19), 45.02, 3.89, 0.0, 31.25, 26.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:28:29.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:28:19
2025-11-03T13:28:29.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:28:29.857 [DEBUG] [Thread-116590] [transport.py] [_log()] starting thread (client mode): 0xed20730
2025-11-03T13:28:29.858 [DEBUG] [Thread-116590] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:28:29.873 [DEBUG] [Thread-116590] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:28:29.873 [INFO] [Thread-116590] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:28:29.876 [DEBUG] [Thread-116590] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:28:29.876 [DEBUG] [Thread-116590] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:28:29.877 [DEBUG] [Thread-116590] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:28:29.877 [DEBUG] [Thread-116590] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:28:29.877 [DEBUG] [Thread-116590] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:28:29.877 [DEBUG] [Thread-116590] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:28:29.877 [DEBUG] [Thread-116590] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:28:29.877 [DEBUG] [Thread-116590] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:28:29.877 [DEBUG] [Thread-116590] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:28:29.877 [DEBUG] [Thread-116590] [transport.py] [_log()] client lang: <none>
2025-11-03T13:28:29.877 [DEBUG] [Thread-116590] [transport.py] [_log()] server lang: <none>
2025-11-03T13:28:29.877 [DEBUG] [Thread-116590] [transport.py] [_log()] kex follows: False
2025-11-03T13:28:29.877 [DEBUG] [Thread-116590] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:28:29.877 [DEBUG] [Thread-116590] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:28:29.877 [DEBUG] [Thread-116590] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:28:29.877 [DEBUG] [Thread-116590] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:28:29.877 [DEBUG] [Thread-116590] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:28:29.877 [DEBUG] [Thread-116590] [transport.py] [_log()] Compression: none
2025-11-03T13:28:29.877 [DEBUG] [Thread-116590] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:28:29.889 [DEBUG] [Thread-116590] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:28:29.889 [DEBUG] [Thread-116590] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:28:29.890 [DEBUG] [Thread-116590] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:28:29.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:28:29.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:28:29.891 [DEBUG] [Thread-116590] [transport.py] [_log()] userauth is OK
2025-11-03T13:28:29.891 [DEBUG] [Thread-116590] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:28:29.891 [DEBUG] [Thread-116590] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:28:29.891 [DEBUG] [Thread-116590] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:28:29.891 [DEBUG] [Thread-116590] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:28:29.911 [INFO] [Thread-116590] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:28:29.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:28:30.544 [DEBUG] [Thread-116590] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:28:30.544 [DEBUG] [Thread-116590] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:28:30.544 [DEBUG] [Thread-116590] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:28:30.585 [DEBUG] [Thread-116590] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:28:30.585 [DEBUG] [Thread-116590] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:28:30.588 [DEBUG] [Thread-116590] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:28:30.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:28:30.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:28:30.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:28:30.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:28:30.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:28:30.606 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:28:30.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:28:30.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:28:30.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:28:30.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.477534 -999.00  +26.10  21.06      8   -9.40 1 1 1 1 1   888    0 36.38 9.95 ----- 21.5 21.1 328.0 44.6 30.9 -29.6 30.1 -29.4 30.4 -28.6 31.2 -28.8
2025-11-03T13:28:30.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:28:30.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:28:30.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.477534
2025-11-03T13:28:30.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:28:30.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:28:30.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:28:30.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:28:30.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:28:30.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:28:19', tmtdew=45.02, humidity=3.89, cloud=0.0, wind=31.25, temperature=26.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:27:38.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:28:30.608 [DEBUG] [Thread-116590] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:28:30.679 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:28:30.693 [DEBUG] [Thread-116593] [transport.py] [_log()] starting thread (client mode): 0xedd6d40
2025-11-03T13:28:30.693 [DEBUG] [Thread-116593] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:28:30.708 [DEBUG] [Thread-116593] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:28:30.708 [INFO] [Thread-116593] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:28:30.715 [DEBUG] [Thread-116593] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:28:30.715 [DEBUG] [Thread-116593] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:28:30.716 [DEBUG] [Thread-116593] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:28:30.716 [DEBUG] [Thread-116593] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:28:30.716 [DEBUG] [Thread-116593] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:28:30.716 [DEBUG] [Thread-116593] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:28:30.716 [DEBUG] [Thread-116593] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:28:30.716 [DEBUG] [Thread-116593] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:28:30.716 [DEBUG] [Thread-116593] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:28:30.716 [DEBUG] [Thread-116593] [transport.py] [_log()] client lang: <none>
2025-11-03T13:28:30.716 [DEBUG] [Thread-116593] [transport.py] [_log()] server lang: <none>
2025-11-03T13:28:30.716 [DEBUG] [Thread-116593] [transport.py] [_log()] kex follows: False
2025-11-03T13:28:30.716 [DEBUG] [Thread-116593] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:28:30.716 [DEBUG] [Thread-116593] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:28:30.716 [DEBUG] [Thread-116593] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:28:30.716 [DEBUG] [Thread-116593] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:28:30.716 [DEBUG] [Thread-116593] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:28:30.716 [DEBUG] [Thread-116593] [transport.py] [_log()] Compression: none
2025-11-03T13:28:30.716 [DEBUG] [Thread-116593] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:28:30.773 [DEBUG] [Thread-116593] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:28:30.773 [DEBUG] [Thread-116593] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:28:30.773 [DEBUG] [Thread-116593] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:28:30.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:28:30.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:28:30.829 [DEBUG] [Thread-116593] [transport.py] [_log()] userauth is OK
2025-11-03T13:28:30.829 [DEBUG] [Thread-116593] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:28:30.829 [DEBUG] [Thread-116593] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:28:30.829 [DEBUG] [Thread-116593] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:28:30.829 [DEBUG] [Thread-116593] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:28:30.845 [INFO] [Thread-116593] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:28:30.845 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:28:30.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:28:31.708 [DEBUG] [Thread-116593] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:28:31.708 [DEBUG] [Thread-116593] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:28:31.756 [DEBUG] [Thread-116593] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:28:31.756 [DEBUG] [Thread-116593] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:28:31.765 [DEBUG] [Thread-116593] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:28:31.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:28:31.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:28:31.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:28:31.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:28:31.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:28:31.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:28:31.802 [DEBUG] [Thread-116593] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:28:36.653 [DEBUG] [Thread-116595 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:28:49.023 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:28:49.025 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:28:51.711 [DEBUG] [Thread-116596 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:29:01.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:29:01.825 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:29:01.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:29:02.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 28, 51), 46.84, 3.69, 0.0, 34.72, 26.73, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:29:02.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:28:51
2025-11-03T13:29:02.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:29:02.848 [DEBUG] [Thread-116597] [transport.py] [_log()] starting thread (client mode): 0x81bb370
2025-11-03T13:29:02.857 [DEBUG] [Thread-116597] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:29:02.868 [DEBUG] [Thread-116597] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:29:02.868 [INFO] [Thread-116597] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:29:02.875 [DEBUG] [Thread-116597] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:29:02.875 [DEBUG] [Thread-116597] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:29:02.875 [DEBUG] [Thread-116597] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:29:02.875 [DEBUG] [Thread-116597] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:29:02.875 [DEBUG] [Thread-116597] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:29:02.876 [DEBUG] [Thread-116597] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:29:02.876 [DEBUG] [Thread-116597] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:29:02.876 [DEBUG] [Thread-116597] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:29:02.876 [DEBUG] [Thread-116597] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:29:02.876 [DEBUG] [Thread-116597] [transport.py] [_log()] client lang: <none>
2025-11-03T13:29:02.876 [DEBUG] [Thread-116597] [transport.py] [_log()] server lang: <none>
2025-11-03T13:29:02.876 [DEBUG] [Thread-116597] [transport.py] [_log()] kex follows: False
2025-11-03T13:29:02.876 [DEBUG] [Thread-116597] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:29:02.876 [DEBUG] [Thread-116597] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:29:02.877 [DEBUG] [Thread-116597] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:29:02.877 [DEBUG] [Thread-116597] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:29:02.877 [DEBUG] [Thread-116597] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:29:02.877 [DEBUG] [Thread-116597] [transport.py] [_log()] Compression: none
2025-11-03T13:29:02.877 [DEBUG] [Thread-116597] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:29:02.887 [DEBUG] [Thread-116597] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:29:02.888 [DEBUG] [Thread-116597] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:29:02.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:29:02.890 [DEBUG] [Thread-116597] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:29:02.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:29:02.892 [DEBUG] [Thread-116597] [transport.py] [_log()] userauth is OK
2025-11-03T13:29:02.892 [DEBUG] [Thread-116597] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:29:02.892 [DEBUG] [Thread-116597] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:29:02.893 [DEBUG] [Thread-116597] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:29:02.893 [DEBUG] [Thread-116597] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:29:02.915 [INFO] [Thread-116597] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:29:02.916 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:29:03.535 [DEBUG] [Thread-116597] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:29:03.536 [DEBUG] [Thread-116597] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:29:03.536 [DEBUG] [Thread-116597] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:29:03.577 [DEBUG] [Thread-116597] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:29:03.577 [DEBUG] [Thread-116597] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:29:03.581 [DEBUG] [Thread-116597] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:29:03.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:29:03.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:29:03.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:29:03.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:29:03.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:29:03.616 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:29:03.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:29:03.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:29:03.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:29:03.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.477881 -999.00  +25.90  35.22      8  -10.20 1 1 2 1 1   888    0 35.87 12.31 ----- 33.2 35.2 304.6 47.2 30.8 -32.0 30.1 -31.4 30.4 -32.9 31.3 -29.2
2025-11-03T13:29:03.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:29:03.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:29:03.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.477881
2025-11-03T13:29:03.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:29:03.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:29:03.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:29:03.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:29:03.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:29:03.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:28:51', tmtdew=46.84, humidity=3.69, cloud=0.0, wind=34.72, temperature=26.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:28:08.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:29:03.620 [DEBUG] [Thread-116597] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:29:03.703 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:29:03.716 [DEBUG] [Thread-116600] [transport.py] [_log()] starting thread (client mode): 0x117bd2d0
2025-11-03T13:29:03.717 [DEBUG] [Thread-116600] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:29:03.732 [DEBUG] [Thread-116600] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:29:03.732 [INFO] [Thread-116600] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:29:03.740 [DEBUG] [Thread-116600] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:29:03.740 [DEBUG] [Thread-116600] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:29:03.740 [DEBUG] [Thread-116600] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:29:03.741 [DEBUG] [Thread-116600] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:29:03.741 [DEBUG] [Thread-116600] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:29:03.741 [DEBUG] [Thread-116600] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:29:03.741 [DEBUG] [Thread-116600] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:29:03.741 [DEBUG] [Thread-116600] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:29:03.741 [DEBUG] [Thread-116600] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:29:03.741 [DEBUG] [Thread-116600] [transport.py] [_log()] client lang: <none>
2025-11-03T13:29:03.741 [DEBUG] [Thread-116600] [transport.py] [_log()] server lang: <none>
2025-11-03T13:29:03.742 [DEBUG] [Thread-116600] [transport.py] [_log()] kex follows: False
2025-11-03T13:29:03.742 [DEBUG] [Thread-116600] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:29:03.742 [DEBUG] [Thread-116600] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:29:03.742 [DEBUG] [Thread-116600] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:29:03.742 [DEBUG] [Thread-116600] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:29:03.742 [DEBUG] [Thread-116600] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:29:03.742 [DEBUG] [Thread-116600] [transport.py] [_log()] Compression: none
2025-11-03T13:29:03.743 [DEBUG] [Thread-116600] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:29:03.800 [DEBUG] [Thread-116600] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:29:03.800 [DEBUG] [Thread-116600] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:29:03.801 [DEBUG] [Thread-116600] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:29:03.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:29:03.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:29:03.862 [DEBUG] [Thread-116600] [transport.py] [_log()] userauth is OK
2025-11-03T13:29:03.862 [DEBUG] [Thread-116600] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:29:03.863 [DEBUG] [Thread-116600] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:29:03.863 [DEBUG] [Thread-116600] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:29:03.863 [DEBUG] [Thread-116600] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:29:03.883 [INFO] [Thread-116600] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:29:03.883 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:29:03.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:29:04.763 [DEBUG] [Thread-116600] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:29:04.763 [DEBUG] [Thread-116600] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:29:04.811 [DEBUG] [Thread-116600] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:29:04.811 [DEBUG] [Thread-116600] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:29:04.820 [DEBUG] [Thread-116600] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:29:04.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:29:04.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:29:04.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:29:04.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:29:04.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:29:04.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:29:04.852 [DEBUG] [Thread-116600] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:29:06.166 [DEBUG] [Thread-116602 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:29:06.742 [DEBUG] [Thread-116603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:29:21.795 [DEBUG] [Thread-116604 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:29:34.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:29:34.856 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:29:34.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:29:35.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 29, 24), 46.01, 3.89, 0.0, 33.45, 26.15, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:29:35.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:29:24
2025-11-03T13:29:35.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:29:35.888 [DEBUG] [Thread-116605] [transport.py] [_log()] starting thread (client mode): 0xedd7b80
2025-11-03T13:29:35.888 [DEBUG] [Thread-116605] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:29:35.909 [DEBUG] [Thread-116605] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:29:35.910 [INFO] [Thread-116605] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:29:35.911 [DEBUG] [Thread-116605] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:29:35.911 [DEBUG] [Thread-116605] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:29:35.911 [DEBUG] [Thread-116605] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:29:35.911 [DEBUG] [Thread-116605] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:29:35.911 [DEBUG] [Thread-116605] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:29:35.911 [DEBUG] [Thread-116605] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:29:35.911 [DEBUG] [Thread-116605] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:29:35.911 [DEBUG] [Thread-116605] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:29:35.912 [DEBUG] [Thread-116605] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:29:35.912 [DEBUG] [Thread-116605] [transport.py] [_log()] client lang: <none>
2025-11-03T13:29:35.912 [DEBUG] [Thread-116605] [transport.py] [_log()] server lang: <none>
2025-11-03T13:29:35.912 [DEBUG] [Thread-116605] [transport.py] [_log()] kex follows: False
2025-11-03T13:29:35.912 [DEBUG] [Thread-116605] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:29:35.912 [DEBUG] [Thread-116605] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:29:35.912 [DEBUG] [Thread-116605] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:29:35.912 [DEBUG] [Thread-116605] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:29:35.912 [DEBUG] [Thread-116605] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:29:35.912 [DEBUG] [Thread-116605] [transport.py] [_log()] Compression: none
2025-11-03T13:29:35.912 [DEBUG] [Thread-116605] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:29:35.922 [DEBUG] [Thread-116605] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:29:35.923 [DEBUG] [Thread-116605] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:29:35.924 [DEBUG] [Thread-116605] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:29:35.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:29:35.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:29:35.926 [DEBUG] [Thread-116605] [transport.py] [_log()] userauth is OK
2025-11-03T13:29:35.926 [DEBUG] [Thread-116605] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:29:35.927 [DEBUG] [Thread-116605] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:29:35.927 [DEBUG] [Thread-116605] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:29:35.927 [DEBUG] [Thread-116605] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:29:35.954 [INFO] [Thread-116605] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:29:35.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:29:36.631 [DEBUG] [Thread-116605] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:29:36.640 [DEBUG] [Thread-116605] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:29:36.641 [DEBUG] [Thread-116605] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:29:36.672 [DEBUG] [Thread-116605] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:29:36.672 [DEBUG] [Thread-116605] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:29:36.676 [DEBUG] [Thread-116605] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:29:36.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:29:36.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:29:36.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:29:36.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:29:36.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:29:36.702 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:29:36.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:29:36.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:29:36.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:29:36.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.478576 -999.00  +26.20  26.96      8   -9.80 1 1 1 1 1   888    0 35.45 11.04 ----- 23.4 27.0 2.0 34.4 30.9 -30.2 30.2 -29.6 30.5 -29.0 31.2 -28.8
2025-11-03T13:29:36.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:29:36.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:29:36.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.478576
2025-11-03T13:29:36.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:29:36.706 [DEBUG] [Thread-116605] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:29:36.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:29:36.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:29:36.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:29:36.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:29:36.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:29:24', tmtdew=46.01, humidity=3.89, cloud=0.0, wind=33.45, temperature=26.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:29:08.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:29:36.792 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:29:36.803 [DEBUG] [Thread-116608] [transport.py] [_log()] starting thread (client mode): 0x81b8730
2025-11-03T13:29:36.803 [DEBUG] [Thread-116608] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:29:36.818 [DEBUG] [Thread-116608] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:29:36.818 [INFO] [Thread-116608] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:29:36.828 [DEBUG] [Thread-116608] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:29:36.828 [DEBUG] [Thread-116608] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:29:36.829 [DEBUG] [Thread-116608] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:29:36.829 [DEBUG] [Thread-116608] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:29:36.829 [DEBUG] [Thread-116608] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:29:36.829 [DEBUG] [Thread-116608] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:29:36.829 [DEBUG] [Thread-116608] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:29:36.829 [DEBUG] [Thread-116608] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:29:36.829 [DEBUG] [Thread-116608] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:29:36.829 [DEBUG] [Thread-116608] [transport.py] [_log()] client lang: <none>
2025-11-03T13:29:36.829 [DEBUG] [Thread-116608] [transport.py] [_log()] server lang: <none>
2025-11-03T13:29:36.829 [DEBUG] [Thread-116608] [transport.py] [_log()] kex follows: False
2025-11-03T13:29:36.829 [DEBUG] [Thread-116608] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:29:36.829 [DEBUG] [Thread-116608] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:29:36.829 [DEBUG] [Thread-116608] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:29:36.829 [DEBUG] [Thread-116608] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:29:36.829 [DEBUG] [Thread-116608] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:29:36.829 [DEBUG] [Thread-116608] [transport.py] [_log()] Compression: none
2025-11-03T13:29:36.829 [DEBUG] [Thread-116608] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:29:36.832 [DEBUG] [Thread-116610 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:29:36.885 [DEBUG] [Thread-116608] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:29:36.886 [DEBUG] [Thread-116608] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:29:36.886 [DEBUG] [Thread-116608] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:29:36.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:29:36.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:29:36.942 [DEBUG] [Thread-116608] [transport.py] [_log()] userauth is OK
2025-11-03T13:29:36.943 [DEBUG] [Thread-116608] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:29:36.943 [DEBUG] [Thread-116608] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:29:36.943 [DEBUG] [Thread-116608] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:29:36.943 [DEBUG] [Thread-116608] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:29:36.962 [INFO] [Thread-116608] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:29:36.963 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:29:36.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:29:37.834 [DEBUG] [Thread-116608] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:29:37.834 [DEBUG] [Thread-116608] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:29:37.883 [DEBUG] [Thread-116608] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:29:37.883 [DEBUG] [Thread-116608] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:29:37.892 [DEBUG] [Thread-116608] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:29:37.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:29:37.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:29:37.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:29:37.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:29:37.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:29:37.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:29:37.936 [DEBUG] [Thread-116608] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:29:49.166 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:29:49.167 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:29:51.886 [DEBUG] [Thread-116611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:30:06.292 [DEBUG] [Thread-116612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:30:06.920 [DEBUG] [Thread-116613 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:30:07.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:30:07.959 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:30:07.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:30:08.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 29, 56), 45.81, 3.87, 0.0, 32.3, 26.3, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:30:08.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:29:56
2025-11-03T13:30:08.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:30:08.989 [DEBUG] [Thread-116614] [transport.py] [_log()] starting thread (client mode): 0xed2d360
2025-11-03T13:30:08.990 [DEBUG] [Thread-116614] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:30:09.009 [DEBUG] [Thread-116614] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:30:09.009 [INFO] [Thread-116614] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:30:09.013 [DEBUG] [Thread-116614] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:30:09.013 [DEBUG] [Thread-116614] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:30:09.013 [DEBUG] [Thread-116614] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:30:09.013 [DEBUG] [Thread-116614] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:30:09.013 [DEBUG] [Thread-116614] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:30:09.013 [DEBUG] [Thread-116614] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:30:09.013 [DEBUG] [Thread-116614] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:30:09.013 [DEBUG] [Thread-116614] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:30:09.013 [DEBUG] [Thread-116614] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:30:09.013 [DEBUG] [Thread-116614] [transport.py] [_log()] client lang: <none>
2025-11-03T13:30:09.013 [DEBUG] [Thread-116614] [transport.py] [_log()] server lang: <none>
2025-11-03T13:30:09.013 [DEBUG] [Thread-116614] [transport.py] [_log()] kex follows: False
2025-11-03T13:30:09.013 [DEBUG] [Thread-116614] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:30:09.013 [DEBUG] [Thread-116614] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:30:09.013 [DEBUG] [Thread-116614] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:30:09.013 [DEBUG] [Thread-116614] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:30:09.013 [DEBUG] [Thread-116614] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:30:09.013 [DEBUG] [Thread-116614] [transport.py] [_log()] Compression: none
2025-11-03T13:30:09.013 [DEBUG] [Thread-116614] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:30:09.028 [DEBUG] [Thread-116614] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:30:09.028 [DEBUG] [Thread-116614] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:30:09.028 [DEBUG] [Thread-116614] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:30:09.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:30:09.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:30:09.029 [DEBUG] [Thread-116614] [transport.py] [_log()] userauth is OK
2025-11-03T13:30:09.029 [DEBUG] [Thread-116614] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:30:09.029 [DEBUG] [Thread-116614] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:30:09.029 [DEBUG] [Thread-116614] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:30:09.029 [DEBUG] [Thread-116614] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:30:09.038 [INFO] [Thread-116614] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:30:09.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:30:17.924 [DEBUG] [Thread-116614] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:30:17.925 [DEBUG] [Thread-116614] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:30:17.925 [DEBUG] [Thread-116614] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:30:17.966 [DEBUG] [Thread-116614] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:30:17.966 [DEBUG] [Thread-116614] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:30:17.968 [DEBUG] [Thread-116614] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:30:17.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:30:17.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:30:17.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:30:17.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:30:17.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:30:17.998 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:30:17.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:30:17.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:30:17.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:30:17.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.478923 -999.00  +26.00  28.81      8   -9.90 1 1 1 1 1   888    0 35.37 9.84 ----- 34.7 28.8 341.0 47.3 30.8 -31.2 30.1 -31.1 30.4 -29.8 31.3 -28.9
2025-11-03T13:30:17.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:30:17.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:30:17.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.478923
2025-11-03T13:30:18.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:30:18.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:30:18.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:30:18.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:30:18.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:30:18.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:29:56', tmtdew=45.81, humidity=3.87, cloud=0.0, wind=32.3, temperature=26.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:29:38.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:30:18.001 [DEBUG] [Thread-116614] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:30:18.087 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:30:18.099 [DEBUG] [Thread-116617] [transport.py] [_log()] starting thread (client mode): 0x11782f80
2025-11-03T13:30:18.099 [DEBUG] [Thread-116617] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:30:18.115 [DEBUG] [Thread-116617] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:30:18.116 [INFO] [Thread-116617] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:30:18.123 [DEBUG] [Thread-116617] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:30:18.123 [DEBUG] [Thread-116617] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:30:18.123 [DEBUG] [Thread-116617] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:30:18.124 [DEBUG] [Thread-116617] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:30:18.124 [DEBUG] [Thread-116617] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:30:18.124 [DEBUG] [Thread-116617] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:30:18.124 [DEBUG] [Thread-116617] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:30:18.124 [DEBUG] [Thread-116617] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:30:18.124 [DEBUG] [Thread-116617] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:30:18.124 [DEBUG] [Thread-116617] [transport.py] [_log()] client lang: <none>
2025-11-03T13:30:18.124 [DEBUG] [Thread-116617] [transport.py] [_log()] server lang: <none>
2025-11-03T13:30:18.124 [DEBUG] [Thread-116617] [transport.py] [_log()] kex follows: False
2025-11-03T13:30:18.124 [DEBUG] [Thread-116617] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:30:18.124 [DEBUG] [Thread-116617] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:30:18.124 [DEBUG] [Thread-116617] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:30:18.124 [DEBUG] [Thread-116617] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:30:18.124 [DEBUG] [Thread-116617] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:30:18.124 [DEBUG] [Thread-116617] [transport.py] [_log()] Compression: none
2025-11-03T13:30:18.124 [DEBUG] [Thread-116617] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:30:18.183 [DEBUG] [Thread-116617] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:30:18.184 [DEBUG] [Thread-116617] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:30:18.184 [DEBUG] [Thread-116617] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:30:18.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:30:18.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:30:18.242 [DEBUG] [Thread-116617] [transport.py] [_log()] userauth is OK
2025-11-03T13:30:18.243 [DEBUG] [Thread-116617] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:30:18.243 [DEBUG] [Thread-116617] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:30:18.243 [DEBUG] [Thread-116617] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:30:18.243 [DEBUG] [Thread-116617] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:30:18.263 [INFO] [Thread-116617] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:30:18.263 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:30:18.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:30:19.123 [DEBUG] [Thread-116617] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:30:19.123 [DEBUG] [Thread-116617] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:30:19.171 [DEBUG] [Thread-116617] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:30:19.171 [DEBUG] [Thread-116617] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:30:19.180 [DEBUG] [Thread-116617] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:30:19.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:30:19.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:30:19.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:30:19.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:30:19.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:30:19.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:30:19.212 [DEBUG] [Thread-116617] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:30:21.957 [DEBUG] [Thread-116619 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:30:37.010 [DEBUG] [Thread-116620 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:30:49.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:30:49.235 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:30:49.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:30:49.309 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:30:49.309 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:30:49.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 30, 28), 45.51, 3.95, 0.0, 27.7, 26.13, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:30:49.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:30:28
2025-11-03T13:30:50.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:30:50.204 [DEBUG] [Thread-116621] [transport.py] [_log()] starting thread (client mode): 0xed4fe50
2025-11-03T13:30:50.205 [DEBUG] [Thread-116621] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:30:50.224 [DEBUG] [Thread-116621] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:30:50.224 [INFO] [Thread-116621] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:30:50.227 [DEBUG] [Thread-116621] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:30:50.227 [DEBUG] [Thread-116621] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:30:50.227 [DEBUG] [Thread-116621] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:30:50.227 [DEBUG] [Thread-116621] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:30:50.227 [DEBUG] [Thread-116621] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:30:50.227 [DEBUG] [Thread-116621] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:30:50.227 [DEBUG] [Thread-116621] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:30:50.227 [DEBUG] [Thread-116621] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:30:50.227 [DEBUG] [Thread-116621] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:30:50.228 [DEBUG] [Thread-116621] [transport.py] [_log()] client lang: <none>
2025-11-03T13:30:50.228 [DEBUG] [Thread-116621] [transport.py] [_log()] server lang: <none>
2025-11-03T13:30:50.228 [DEBUG] [Thread-116621] [transport.py] [_log()] kex follows: False
2025-11-03T13:30:50.228 [DEBUG] [Thread-116621] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:30:50.228 [DEBUG] [Thread-116621] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:30:50.228 [DEBUG] [Thread-116621] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:30:50.228 [DEBUG] [Thread-116621] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:30:50.228 [DEBUG] [Thread-116621] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:30:50.228 [DEBUG] [Thread-116621] [transport.py] [_log()] Compression: none
2025-11-03T13:30:50.228 [DEBUG] [Thread-116621] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:30:50.244 [DEBUG] [Thread-116621] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:30:50.245 [DEBUG] [Thread-116621] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:30:50.245 [DEBUG] [Thread-116621] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:30:50.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:30:50.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:30:50.248 [DEBUG] [Thread-116621] [transport.py] [_log()] userauth is OK
2025-11-03T13:30:50.248 [DEBUG] [Thread-116621] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:30:50.248 [DEBUG] [Thread-116621] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:30:50.248 [DEBUG] [Thread-116621] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:30:50.248 [DEBUG] [Thread-116621] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:30:50.272 [INFO] [Thread-116621] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:30:50.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:30:50.868 [DEBUG] [Thread-116621] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:30:50.869 [DEBUG] [Thread-116621] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:30:50.869 [DEBUG] [Thread-116621] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:30:50.909 [DEBUG] [Thread-116621] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:30:50.909 [DEBUG] [Thread-116621] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:30:50.911 [DEBUG] [Thread-116621] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:30:50.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:30:50.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:30:50.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:30:50.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:30:50.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:30:50.929 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:30:50.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:30:50.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:30:50.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:30:50.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.479270 -999.00  +25.60  35.74      8  -10.10 1 1 2 1 1   888    0 35.36 8.36 ----- 39.8 35.7 330.6 54.6 30.8 -31.7 30.0 -30.3 30.4 -29.6 31.2 -30.0
2025-11-03T13:30:50.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:30:50.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:30:50.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.479270
2025-11-03T13:30:50.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:30:50.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:30:50.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:30:50.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:30:50.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:30:50.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:30:28', tmtdew=45.51, humidity=3.95, cloud=0.0, wind=27.7, temperature=26.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:30:08.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:30:50.930 [DEBUG] [Thread-116621] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:30:51.002 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:30:51.014 [DEBUG] [Thread-116624] [transport.py] [_log()] starting thread (client mode): 0xedd4c40
2025-11-03T13:30:51.014 [DEBUG] [Thread-116624] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:30:51.032 [DEBUG] [Thread-116624] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:30:51.032 [INFO] [Thread-116624] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:30:51.048 [DEBUG] [Thread-116624] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:30:51.049 [DEBUG] [Thread-116624] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:30:51.049 [DEBUG] [Thread-116624] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:30:51.049 [DEBUG] [Thread-116624] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:30:51.049 [DEBUG] [Thread-116624] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:30:51.049 [DEBUG] [Thread-116624] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:30:51.049 [DEBUG] [Thread-116624] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:30:51.049 [DEBUG] [Thread-116624] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:30:51.049 [DEBUG] [Thread-116624] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:30:51.049 [DEBUG] [Thread-116624] [transport.py] [_log()] client lang: <none>
2025-11-03T13:30:51.049 [DEBUG] [Thread-116624] [transport.py] [_log()] server lang: <none>
2025-11-03T13:30:51.049 [DEBUG] [Thread-116624] [transport.py] [_log()] kex follows: False
2025-11-03T13:30:51.049 [DEBUG] [Thread-116624] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:30:51.049 [DEBUG] [Thread-116624] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:30:51.049 [DEBUG] [Thread-116624] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:30:51.049 [DEBUG] [Thread-116624] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:30:51.049 [DEBUG] [Thread-116624] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:30:51.049 [DEBUG] [Thread-116624] [transport.py] [_log()] Compression: none
2025-11-03T13:30:51.049 [DEBUG] [Thread-116624] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:30:51.097 [DEBUG] [Thread-116624] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:30:51.097 [DEBUG] [Thread-116624] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:30:51.097 [DEBUG] [Thread-116624] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:30:51.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:30:51.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:30:51.154 [DEBUG] [Thread-116624] [transport.py] [_log()] userauth is OK
2025-11-03T13:30:51.154 [DEBUG] [Thread-116624] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:30:51.154 [DEBUG] [Thread-116624] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:30:51.154 [DEBUG] [Thread-116624] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:30:51.154 [DEBUG] [Thread-116624] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:30:51.175 [INFO] [Thread-116624] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:30:51.175 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:30:51.175 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:30:52.051 [DEBUG] [Thread-116626 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:30:52.070 [DEBUG] [Thread-116624] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:30:52.071 [DEBUG] [Thread-116624] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:30:52.118 [DEBUG] [Thread-116624] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:30:52.119 [DEBUG] [Thread-116624] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:30:52.130 [DEBUG] [Thread-116624] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:30:52.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:30:52.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:30:52.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:30:52.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:30:52.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:30:52.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:30:52.172 [DEBUG] [Thread-116624] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:31:06.351 [DEBUG] [Thread-116627 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:31:07.105 [DEBUG] [Thread-116628 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:31:22.139 [DEBUG] [Thread-116629 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:31:22.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:31:22.170 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:31:22.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:31:22.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 31, 1), 45.53, 3.95, 0.0, 26.99, 26.21, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:31:22.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:31:01
2025-11-03T13:31:22.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:31:23.101 [DEBUG] [Thread-116630] [transport.py] [_log()] starting thread (client mode): 0x81b9c90
2025-11-03T13:31:23.101 [DEBUG] [Thread-116630] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:31:23.121 [DEBUG] [Thread-116630] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:31:23.121 [INFO] [Thread-116630] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:31:23.124 [DEBUG] [Thread-116630] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:31:23.124 [DEBUG] [Thread-116630] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:31:23.124 [DEBUG] [Thread-116630] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:31:23.124 [DEBUG] [Thread-116630] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:31:23.125 [DEBUG] [Thread-116630] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:31:23.125 [DEBUG] [Thread-116630] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:31:23.125 [DEBUG] [Thread-116630] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:31:23.125 [DEBUG] [Thread-116630] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:31:23.125 [DEBUG] [Thread-116630] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:31:23.125 [DEBUG] [Thread-116630] [transport.py] [_log()] client lang: <none>
2025-11-03T13:31:23.125 [DEBUG] [Thread-116630] [transport.py] [_log()] server lang: <none>
2025-11-03T13:31:23.125 [DEBUG] [Thread-116630] [transport.py] [_log()] kex follows: False
2025-11-03T13:31:23.125 [DEBUG] [Thread-116630] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:31:23.125 [DEBUG] [Thread-116630] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:31:23.125 [DEBUG] [Thread-116630] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:31:23.125 [DEBUG] [Thread-116630] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:31:23.125 [DEBUG] [Thread-116630] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:31:23.126 [DEBUG] [Thread-116630] [transport.py] [_log()] Compression: none
2025-11-03T13:31:23.126 [DEBUG] [Thread-116630] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:31:23.144 [DEBUG] [Thread-116630] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:31:23.145 [DEBUG] [Thread-116630] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:31:23.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:31:23.146 [DEBUG] [Thread-116630] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:31:23.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:31:23.148 [DEBUG] [Thread-116630] [transport.py] [_log()] userauth is OK
2025-11-03T13:31:23.148 [DEBUG] [Thread-116630] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:31:23.148 [DEBUG] [Thread-116630] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:31:23.148 [DEBUG] [Thread-116630] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:31:23.148 [DEBUG] [Thread-116630] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:31:23.162 [INFO] [Thread-116630] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:31:23.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:31:23.967 [DEBUG] [Thread-116630] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:31:23.967 [DEBUG] [Thread-116630] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:31:23.967 [DEBUG] [Thread-116630] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:31:24.008 [DEBUG] [Thread-116630] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:31:24.008 [DEBUG] [Thread-116630] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:31:24.011 [DEBUG] [Thread-116630] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:31:24.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:31:24.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:31:24.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:31:24.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:31:24.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:31:24.029 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:31:24.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:31:24.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:31:24.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:31:24.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.479617 -999.00  +25.20  35.45      8   -9.90 1 1 2 1 1   888    0 36.05 5.86 ----- 35.2 35.5 347.6 54.0 30.7 -31.4 30.0 -30.6 30.4 -30.3 31.2 -30.0
2025-11-03T13:31:24.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:31:24.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:31:24.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.479617
2025-11-03T13:31:24.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:31:24.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:31:24.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:31:24.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:31:24.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:31:24.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:31:01', tmtdew=45.53, humidity=3.95, cloud=0.0, wind=26.99, temperature=26.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:30:38.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:31:24.038 [DEBUG] [Thread-116630] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:31:24.111 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:31:24.123 [DEBUG] [Thread-116633] [transport.py] [_log()] starting thread (client mode): 0x117816c0
2025-11-03T13:31:24.123 [DEBUG] [Thread-116633] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:31:24.138 [DEBUG] [Thread-116633] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:31:24.138 [INFO] [Thread-116633] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:31:24.145 [DEBUG] [Thread-116633] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:31:24.145 [DEBUG] [Thread-116633] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:31:24.145 [DEBUG] [Thread-116633] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:31:24.145 [DEBUG] [Thread-116633] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:31:24.145 [DEBUG] [Thread-116633] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:31:24.145 [DEBUG] [Thread-116633] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:31:24.145 [DEBUG] [Thread-116633] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:31:24.145 [DEBUG] [Thread-116633] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:31:24.145 [DEBUG] [Thread-116633] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:31:24.145 [DEBUG] [Thread-116633] [transport.py] [_log()] client lang: <none>
2025-11-03T13:31:24.145 [DEBUG] [Thread-116633] [transport.py] [_log()] server lang: <none>
2025-11-03T13:31:24.145 [DEBUG] [Thread-116633] [transport.py] [_log()] kex follows: False
2025-11-03T13:31:24.145 [DEBUG] [Thread-116633] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:31:24.146 [DEBUG] [Thread-116633] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:31:24.146 [DEBUG] [Thread-116633] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:31:24.146 [DEBUG] [Thread-116633] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:31:24.146 [DEBUG] [Thread-116633] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:31:24.146 [DEBUG] [Thread-116633] [transport.py] [_log()] Compression: none
2025-11-03T13:31:24.146 [DEBUG] [Thread-116633] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:31:24.202 [DEBUG] [Thread-116633] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:31:24.202 [DEBUG] [Thread-116633] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:31:24.203 [DEBUG] [Thread-116633] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:31:24.203 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:31:24.203 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:31:24.259 [DEBUG] [Thread-116633] [transport.py] [_log()] userauth is OK
2025-11-03T13:31:24.260 [DEBUG] [Thread-116633] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:31:24.260 [DEBUG] [Thread-116633] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:31:24.260 [DEBUG] [Thread-116633] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:31:24.260 [DEBUG] [Thread-116633] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:31:24.279 [INFO] [Thread-116633] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:31:24.280 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:31:24.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:31:25.156 [DEBUG] [Thread-116633] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:31:25.156 [DEBUG] [Thread-116633] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:31:25.204 [DEBUG] [Thread-116633] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:31:25.204 [DEBUG] [Thread-116633] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:31:25.214 [DEBUG] [Thread-116633] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:31:25.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:31:25.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:31:25.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:31:25.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:31:25.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:31:25.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:31:25.251 [DEBUG] [Thread-116633] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:31:37.182 [DEBUG] [Thread-116635 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:31:49.463 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:31:49.464 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:31:52.230 [DEBUG] [Thread-116636 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:31:55.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:31:55.272 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:31:55.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:31:55.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 31, 33), 45.56, 3.89, 0.0, 30.97, 26.3, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:31:55.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:31:33
2025-11-03T13:31:56.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:31:56.248 [DEBUG] [Thread-116637] [transport.py] [_log()] starting thread (client mode): 0xed2dba0
2025-11-03T13:31:56.248 [DEBUG] [Thread-116637] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:31:56.269 [DEBUG] [Thread-116637] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:31:56.269 [INFO] [Thread-116637] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:31:56.278 [DEBUG] [Thread-116637] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:31:56.278 [DEBUG] [Thread-116637] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:31:56.278 [DEBUG] [Thread-116637] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:31:56.278 [DEBUG] [Thread-116637] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:31:56.278 [DEBUG] [Thread-116637] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:31:56.278 [DEBUG] [Thread-116637] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:31:56.278 [DEBUG] [Thread-116637] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:31:56.278 [DEBUG] [Thread-116637] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:31:56.278 [DEBUG] [Thread-116637] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:31:56.278 [DEBUG] [Thread-116637] [transport.py] [_log()] client lang: <none>
2025-11-03T13:31:56.278 [DEBUG] [Thread-116637] [transport.py] [_log()] server lang: <none>
2025-11-03T13:31:56.278 [DEBUG] [Thread-116637] [transport.py] [_log()] kex follows: False
2025-11-03T13:31:56.278 [DEBUG] [Thread-116637] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:31:56.278 [DEBUG] [Thread-116637] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:31:56.278 [DEBUG] [Thread-116637] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:31:56.278 [DEBUG] [Thread-116637] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:31:56.278 [DEBUG] [Thread-116637] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:31:56.278 [DEBUG] [Thread-116637] [transport.py] [_log()] Compression: none
2025-11-03T13:31:56.278 [DEBUG] [Thread-116637] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:31:56.295 [DEBUG] [Thread-116637] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:31:56.295 [DEBUG] [Thread-116637] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:31:56.295 [DEBUG] [Thread-116637] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:31:56.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:31:56.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:31:56.296 [DEBUG] [Thread-116637] [transport.py] [_log()] userauth is OK
2025-11-03T13:31:56.296 [DEBUG] [Thread-116637] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:31:56.296 [DEBUG] [Thread-116637] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:31:56.296 [DEBUG] [Thread-116637] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:31:56.296 [DEBUG] [Thread-116637] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:31:56.306 [INFO] [Thread-116637] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:31:56.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:31:56.963 [DEBUG] [Thread-116637] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:31:56.963 [DEBUG] [Thread-116637] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:31:56.963 [DEBUG] [Thread-116637] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:31:57.003 [DEBUG] [Thread-116637] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:31:57.003 [DEBUG] [Thread-116637] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:31:57.006 [DEBUG] [Thread-116637] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:31:57.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:31:57.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:31:57.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:31:57.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:31:57.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:31:57.025 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:31:57.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:31:57.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:31:57.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:31:57.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.479965 -999.00  +25.20  45.01      8  -10.00 1 1 2 1 1   888    0 35.82 0.41 ----- 41.9 45.0 330.6 57.7 30.5 -31.9 29.7 -30.1 30.2 -30.1 30.8 -34.6
2025-11-03T13:31:57.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:31:57.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:31:57.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.479965
2025-11-03T13:31:57.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:31:57.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:31:57.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:31:57.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:31:57.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:31:57.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:31:33', tmtdew=45.56, humidity=3.89, cloud=0.0, wind=30.97, temperature=26.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:31:08.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:31:57.026 [DEBUG] [Thread-116637] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:31:57.101 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:31:57.110 [DEBUG] [Thread-116640] [transport.py] [_log()] starting thread (client mode): 0x11782a10
2025-11-03T13:31:57.110 [DEBUG] [Thread-116640] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:31:57.125 [DEBUG] [Thread-116640] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:31:57.125 [INFO] [Thread-116640] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:31:57.132 [DEBUG] [Thread-116640] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:31:57.132 [DEBUG] [Thread-116640] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:31:57.132 [DEBUG] [Thread-116640] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:31:57.132 [DEBUG] [Thread-116640] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:31:57.133 [DEBUG] [Thread-116640] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:31:57.133 [DEBUG] [Thread-116640] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:31:57.133 [DEBUG] [Thread-116640] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:31:57.133 [DEBUG] [Thread-116640] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:31:57.133 [DEBUG] [Thread-116640] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:31:57.133 [DEBUG] [Thread-116640] [transport.py] [_log()] client lang: <none>
2025-11-03T13:31:57.133 [DEBUG] [Thread-116640] [transport.py] [_log()] server lang: <none>
2025-11-03T13:31:57.133 [DEBUG] [Thread-116640] [transport.py] [_log()] kex follows: False
2025-11-03T13:31:57.133 [DEBUG] [Thread-116640] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:31:57.133 [DEBUG] [Thread-116640] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:31:57.133 [DEBUG] [Thread-116640] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:31:57.133 [DEBUG] [Thread-116640] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:31:57.133 [DEBUG] [Thread-116640] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:31:57.133 [DEBUG] [Thread-116640] [transport.py] [_log()] Compression: none
2025-11-03T13:31:57.133 [DEBUG] [Thread-116640] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:31:57.189 [DEBUG] [Thread-116640] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:31:57.189 [DEBUG] [Thread-116640] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:31:57.189 [DEBUG] [Thread-116640] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:31:57.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:31:57.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:31:57.246 [DEBUG] [Thread-116640] [transport.py] [_log()] userauth is OK
2025-11-03T13:31:57.246 [DEBUG] [Thread-116640] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:31:57.246 [DEBUG] [Thread-116640] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:31:57.246 [DEBUG] [Thread-116640] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:31:57.246 [DEBUG] [Thread-116640] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:31:57.264 [INFO] [Thread-116640] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:31:57.264 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:31:57.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:31:58.081 [DEBUG] [Thread-116640] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:31:58.081 [DEBUG] [Thread-116640] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:31:58.129 [DEBUG] [Thread-116640] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:31:58.129 [DEBUG] [Thread-116640] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:31:58.138 [DEBUG] [Thread-116640] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:31:58.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:31:58.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:31:58.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:31:58.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:31:58.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:31:58.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:31:58.170 [DEBUG] [Thread-116640] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:32:06.427 [DEBUG] [Thread-116642 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:32:07.259 [DEBUG] [Thread-116643 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:32:22.311 [DEBUG] [Thread-116644 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:32:28.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:32:28.193 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:32:28.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:32:28.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 32, 5), 45.95, 3.75, 0.0, 33.61, 26.18, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:32:28.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:32:05
2025-11-03T13:32:29.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:32:29.222 [DEBUG] [Thread-116645] [transport.py] [_log()] starting thread (client mode): 0xed4d480
2025-11-03T13:32:29.222 [DEBUG] [Thread-116645] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:32:29.242 [DEBUG] [Thread-116645] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:32:29.242 [INFO] [Thread-116645] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:32:29.246 [DEBUG] [Thread-116645] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:32:29.246 [DEBUG] [Thread-116645] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:32:29.246 [DEBUG] [Thread-116645] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:32:29.246 [DEBUG] [Thread-116645] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:32:29.246 [DEBUG] [Thread-116645] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:32:29.246 [DEBUG] [Thread-116645] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:32:29.246 [DEBUG] [Thread-116645] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:32:29.246 [DEBUG] [Thread-116645] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:32:29.246 [DEBUG] [Thread-116645] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:32:29.246 [DEBUG] [Thread-116645] [transport.py] [_log()] client lang: <none>
2025-11-03T13:32:29.246 [DEBUG] [Thread-116645] [transport.py] [_log()] server lang: <none>
2025-11-03T13:32:29.246 [DEBUG] [Thread-116645] [transport.py] [_log()] kex follows: False
2025-11-03T13:32:29.246 [DEBUG] [Thread-116645] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:32:29.246 [DEBUG] [Thread-116645] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:32:29.246 [DEBUG] [Thread-116645] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:32:29.246 [DEBUG] [Thread-116645] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:32:29.246 [DEBUG] [Thread-116645] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:32:29.246 [DEBUG] [Thread-116645] [transport.py] [_log()] Compression: none
2025-11-03T13:32:29.246 [DEBUG] [Thread-116645] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:32:29.263 [DEBUG] [Thread-116645] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:32:29.264 [DEBUG] [Thread-116645] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:32:29.264 [DEBUG] [Thread-116645] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:32:29.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:32:29.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:32:29.266 [DEBUG] [Thread-116645] [transport.py] [_log()] userauth is OK
2025-11-03T13:32:29.266 [DEBUG] [Thread-116645] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:32:29.266 [DEBUG] [Thread-116645] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:32:29.267 [DEBUG] [Thread-116645] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:32:29.267 [DEBUG] [Thread-116645] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:32:29.291 [INFO] [Thread-116645] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:32:29.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:32:29.997 [DEBUG] [Thread-116645] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:32:30.006 [DEBUG] [Thread-116645] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:32:30.006 [DEBUG] [Thread-116645] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:32:30.039 [DEBUG] [Thread-116645] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:32:30.039 [DEBUG] [Thread-116645] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:32:30.040 [DEBUG] [Thread-116645] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:32:30.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:32:30.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:32:30.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:32:30.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:32:30.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:32:30.059 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:32:30.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:32:30.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:32:30.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:32:30.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.480312 -999.00  +25.20  36.26      8  -10.30 1 1 2 1 1   888    0 35.32 -2.68 ----- 40.6 36.3 330.2 48.2 30.4 -31.2 29.7 -31.3 30.2 -29.8 30.9 -30.0
2025-11-03T13:32:30.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:32:30.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:32:30.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.480312
2025-11-03T13:32:30.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:32:30.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:32:30.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:32:30.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:32:30.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:32:30.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:32:05', tmtdew=45.95, humidity=3.75, cloud=0.0, wind=33.61, temperature=26.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:31:38.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:32:30.060 [DEBUG] [Thread-116645] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:32:30.133 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:32:30.145 [DEBUG] [Thread-116648] [transport.py] [_log()] starting thread (client mode): 0x117bd1e0
2025-11-03T13:32:30.145 [DEBUG] [Thread-116648] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:32:30.160 [DEBUG] [Thread-116648] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:32:30.161 [INFO] [Thread-116648] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:32:30.168 [DEBUG] [Thread-116648] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:32:30.169 [DEBUG] [Thread-116648] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:32:30.169 [DEBUG] [Thread-116648] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:32:30.169 [DEBUG] [Thread-116648] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:32:30.169 [DEBUG] [Thread-116648] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:32:30.169 [DEBUG] [Thread-116648] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:32:30.169 [DEBUG] [Thread-116648] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:32:30.169 [DEBUG] [Thread-116648] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:32:30.169 [DEBUG] [Thread-116648] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:32:30.169 [DEBUG] [Thread-116648] [transport.py] [_log()] client lang: <none>
2025-11-03T13:32:30.169 [DEBUG] [Thread-116648] [transport.py] [_log()] server lang: <none>
2025-11-03T13:32:30.169 [DEBUG] [Thread-116648] [transport.py] [_log()] kex follows: False
2025-11-03T13:32:30.169 [DEBUG] [Thread-116648] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:32:30.169 [DEBUG] [Thread-116648] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:32:30.169 [DEBUG] [Thread-116648] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:32:30.169 [DEBUG] [Thread-116648] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:32:30.169 [DEBUG] [Thread-116648] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:32:30.169 [DEBUG] [Thread-116648] [transport.py] [_log()] Compression: none
2025-11-03T13:32:30.169 [DEBUG] [Thread-116648] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:32:30.225 [DEBUG] [Thread-116648] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:32:30.225 [DEBUG] [Thread-116648] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:32:30.225 [DEBUG] [Thread-116648] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:32:30.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:32:30.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:32:30.282 [DEBUG] [Thread-116648] [transport.py] [_log()] userauth is OK
2025-11-03T13:32:30.282 [DEBUG] [Thread-116648] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:32:30.282 [DEBUG] [Thread-116648] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:32:30.282 [DEBUG] [Thread-116648] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:32:30.282 [DEBUG] [Thread-116648] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:32:30.296 [INFO] [Thread-116648] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:32:30.296 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:32:30.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:32:31.153 [DEBUG] [Thread-116648] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:32:31.154 [DEBUG] [Thread-116648] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:32:31.201 [DEBUG] [Thread-116648] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:32:31.201 [DEBUG] [Thread-116648] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:32:31.211 [DEBUG] [Thread-116648] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:32:31.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:32:31.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:32:31.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:32:31.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:32:31.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:32:31.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:32:31.253 [DEBUG] [Thread-116648] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:32:37.341 [DEBUG] [Thread-116650 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:32:49.606 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:32:49.607 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:32:52.383 [DEBUG] [Thread-116651 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:33:01.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:33:01.273 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:33:01.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:33:01.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 32, 38), 46.04, 3.8, 0.0, 34.57, 25.68, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:33:01.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:32:38
2025-11-03T13:33:02.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:33:02.276 [DEBUG] [Thread-116652] [transport.py] [_log()] starting thread (client mode): 0x11782a10
2025-11-03T13:33:02.276 [DEBUG] [Thread-116652] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:33:02.297 [DEBUG] [Thread-116652] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:33:02.297 [INFO] [Thread-116652] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:33:02.300 [DEBUG] [Thread-116652] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:33:02.300 [DEBUG] [Thread-116652] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:33:02.300 [DEBUG] [Thread-116652] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:33:02.300 [DEBUG] [Thread-116652] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:33:02.300 [DEBUG] [Thread-116652] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:33:02.300 [DEBUG] [Thread-116652] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:33:02.300 [DEBUG] [Thread-116652] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:33:02.301 [DEBUG] [Thread-116652] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:33:02.301 [DEBUG] [Thread-116652] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:33:02.301 [DEBUG] [Thread-116652] [transport.py] [_log()] client lang: <none>
2025-11-03T13:33:02.301 [DEBUG] [Thread-116652] [transport.py] [_log()] server lang: <none>
2025-11-03T13:33:02.301 [DEBUG] [Thread-116652] [transport.py] [_log()] kex follows: False
2025-11-03T13:33:02.301 [DEBUG] [Thread-116652] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:33:02.301 [DEBUG] [Thread-116652] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:33:02.301 [DEBUG] [Thread-116652] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:33:02.301 [DEBUG] [Thread-116652] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:33:02.301 [DEBUG] [Thread-116652] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:33:02.301 [DEBUG] [Thread-116652] [transport.py] [_log()] Compression: none
2025-11-03T13:33:02.301 [DEBUG] [Thread-116652] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:33:02.321 [DEBUG] [Thread-116652] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:33:02.323 [DEBUG] [Thread-116652] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:33:02.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:33:02.324 [DEBUG] [Thread-116652] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:33:02.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:33:02.326 [DEBUG] [Thread-116652] [transport.py] [_log()] userauth is OK
2025-11-03T13:33:02.326 [DEBUG] [Thread-116652] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:33:02.327 [DEBUG] [Thread-116652] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:33:02.327 [DEBUG] [Thread-116652] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:33:02.327 [DEBUG] [Thread-116652] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:33:02.351 [INFO] [Thread-116652] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:33:02.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:33:03.005 [DEBUG] [Thread-116652] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:33:03.005 [DEBUG] [Thread-116652] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:33:03.006 [DEBUG] [Thread-116652] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:33:03.046 [DEBUG] [Thread-116652] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:33:03.046 [DEBUG] [Thread-116652] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:33:03.050 [DEBUG] [Thread-116652] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:33:03.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:33:03.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:33:03.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:33:03.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:33:03.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:33:03.076 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:33:03.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:33:03.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:33:03.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:33:03.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.480659 -999.00  +25.60  29.97      8  -10.10 1 1 1 1 1   888    0 34.66 -7.08 ----- 36.4 30.0 315.1 44.2 30.6 -30.8 29.8 -29.6 30.2 -29.5 30.9 -30.0
2025-11-03T13:33:03.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:33:03.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:33:03.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.480659
2025-11-03T13:33:03.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:33:03.078 [DEBUG] [Thread-116652] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:33:03.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:33:03.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:33:03.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:33:03.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:33:03.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:32:38', tmtdew=46.04, humidity=3.8, cloud=0.0, wind=34.57, temperature=25.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:32:08.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:33:03.163 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:33:03.174 [DEBUG] [Thread-116655] [transport.py] [_log()] starting thread (client mode): 0xedd5660
2025-11-03T13:33:03.175 [DEBUG] [Thread-116655] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:33:03.189 [DEBUG] [Thread-116655] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:33:03.190 [INFO] [Thread-116655] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:33:03.197 [DEBUG] [Thread-116655] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:33:03.197 [DEBUG] [Thread-116655] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:33:03.197 [DEBUG] [Thread-116655] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:33:03.197 [DEBUG] [Thread-116655] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:33:03.198 [DEBUG] [Thread-116655] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:33:03.198 [DEBUG] [Thread-116655] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:33:03.198 [DEBUG] [Thread-116655] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:33:03.198 [DEBUG] [Thread-116655] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:33:03.198 [DEBUG] [Thread-116655] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:33:03.198 [DEBUG] [Thread-116655] [transport.py] [_log()] client lang: <none>
2025-11-03T13:33:03.198 [DEBUG] [Thread-116655] [transport.py] [_log()] server lang: <none>
2025-11-03T13:33:03.198 [DEBUG] [Thread-116655] [transport.py] [_log()] kex follows: False
2025-11-03T13:33:03.198 [DEBUG] [Thread-116655] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:33:03.198 [DEBUG] [Thread-116655] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:33:03.198 [DEBUG] [Thread-116655] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:33:03.198 [DEBUG] [Thread-116655] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:33:03.198 [DEBUG] [Thread-116655] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:33:03.198 [DEBUG] [Thread-116655] [transport.py] [_log()] Compression: none
2025-11-03T13:33:03.198 [DEBUG] [Thread-116655] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:33:03.255 [DEBUG] [Thread-116655] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:33:03.255 [DEBUG] [Thread-116655] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:33:03.256 [DEBUG] [Thread-116655] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:33:03.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:33:03.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:33:03.315 [DEBUG] [Thread-116655] [transport.py] [_log()] userauth is OK
2025-11-03T13:33:03.315 [DEBUG] [Thread-116655] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:33:03.315 [DEBUG] [Thread-116655] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:33:03.315 [DEBUG] [Thread-116655] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:33:03.315 [DEBUG] [Thread-116655] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:33:03.339 [INFO] [Thread-116655] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:33:03.339 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:33:03.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:33:04.201 [DEBUG] [Thread-116655] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:33:04.202 [DEBUG] [Thread-116655] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:33:04.251 [DEBUG] [Thread-116655] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:33:04.252 [DEBUG] [Thread-116655] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:33:04.261 [DEBUG] [Thread-116655] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:33:04.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:33:04.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:33:04.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:33:04.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:33:04.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:33:04.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:33:04.299 [DEBUG] [Thread-116655] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:33:06.503 [DEBUG] [Thread-116657 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:33:07.421 [DEBUG] [Thread-116658 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:33:22.479 [DEBUG] [Thread-116659 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:33:34.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:33:34.312 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:33:34.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:33:34.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 33, 10), 45.51, 3.95, 0.0, 33.91, 25.45, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:33:34.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:33:10
2025-11-03T13:33:35.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:33:35.262 [DEBUG] [Thread-116660] [transport.py] [_log()] starting thread (client mode): 0x117bcfa0
2025-11-03T13:33:35.262 [DEBUG] [Thread-116660] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:33:35.284 [DEBUG] [Thread-116660] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:33:35.284 [INFO] [Thread-116660] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:33:35.287 [DEBUG] [Thread-116660] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:33:35.287 [DEBUG] [Thread-116660] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:33:35.287 [DEBUG] [Thread-116660] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:33:35.287 [DEBUG] [Thread-116660] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:33:35.287 [DEBUG] [Thread-116660] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:33:35.287 [DEBUG] [Thread-116660] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:33:35.287 [DEBUG] [Thread-116660] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:33:35.287 [DEBUG] [Thread-116660] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:33:35.287 [DEBUG] [Thread-116660] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:33:35.287 [DEBUG] [Thread-116660] [transport.py] [_log()] client lang: <none>
2025-11-03T13:33:35.287 [DEBUG] [Thread-116660] [transport.py] [_log()] server lang: <none>
2025-11-03T13:33:35.287 [DEBUG] [Thread-116660] [transport.py] [_log()] kex follows: False
2025-11-03T13:33:35.287 [DEBUG] [Thread-116660] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:33:35.287 [DEBUG] [Thread-116660] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:33:35.287 [DEBUG] [Thread-116660] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:33:35.288 [DEBUG] [Thread-116660] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:33:35.288 [DEBUG] [Thread-116660] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:33:35.288 [DEBUG] [Thread-116660] [transport.py] [_log()] Compression: none
2025-11-03T13:33:35.288 [DEBUG] [Thread-116660] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:33:35.305 [DEBUG] [Thread-116660] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:33:35.306 [DEBUG] [Thread-116660] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:33:35.306 [DEBUG] [Thread-116660] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:33:35.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:33:35.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:33:35.308 [DEBUG] [Thread-116660] [transport.py] [_log()] userauth is OK
2025-11-03T13:33:35.308 [DEBUG] [Thread-116660] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:33:35.308 [DEBUG] [Thread-116660] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:33:35.309 [DEBUG] [Thread-116660] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:33:35.309 [DEBUG] [Thread-116660] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:33:35.324 [INFO] [Thread-116660] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:33:35.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:33:36.072 [DEBUG] [Thread-116660] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:33:36.072 [DEBUG] [Thread-116660] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:33:36.073 [DEBUG] [Thread-116660] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:33:36.113 [DEBUG] [Thread-116660] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:33:36.113 [DEBUG] [Thread-116660] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:33:36.116 [DEBUG] [Thread-116660] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:33:36.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:33:36.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:33:36.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:33:36.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:33:36.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:33:36.138 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:33:36.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:33:36.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:33:36.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:33:36.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.481006 -999.00  +26.10  29.07      8   -9.70 1 1 1 1 1   888    0 35.15 -10.67 ----- 26.6 29.1 324.6 36.0 30.6 -30.2 29.9 -29.1 30.3 -28.8 30.9 -29.4
2025-11-03T13:33:36.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:33:36.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:33:36.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.481006
2025-11-03T13:33:36.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:33:36.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:33:36.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:33:36.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:33:36.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:33:36.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:33:10', tmtdew=45.51, humidity=3.95, cloud=0.0, wind=33.91, temperature=25.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:32:38.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:33:36.142 [DEBUG] [Thread-116660] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:33:36.226 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:33:36.238 [DEBUG] [Thread-116663] [transport.py] [_log()] starting thread (client mode): 0x117bccd0
2025-11-03T13:33:36.238 [DEBUG] [Thread-116663] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:33:36.253 [DEBUG] [Thread-116663] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:33:36.253 [INFO] [Thread-116663] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:33:36.262 [DEBUG] [Thread-116663] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:33:36.263 [DEBUG] [Thread-116663] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:33:36.263 [DEBUG] [Thread-116663] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:33:36.263 [DEBUG] [Thread-116663] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:33:36.263 [DEBUG] [Thread-116663] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:33:36.263 [DEBUG] [Thread-116663] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:33:36.263 [DEBUG] [Thread-116663] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:33:36.263 [DEBUG] [Thread-116663] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:33:36.263 [DEBUG] [Thread-116663] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:33:36.263 [DEBUG] [Thread-116663] [transport.py] [_log()] client lang: <none>
2025-11-03T13:33:36.263 [DEBUG] [Thread-116663] [transport.py] [_log()] server lang: <none>
2025-11-03T13:33:36.263 [DEBUG] [Thread-116663] [transport.py] [_log()] kex follows: False
2025-11-03T13:33:36.263 [DEBUG] [Thread-116663] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:33:36.263 [DEBUG] [Thread-116663] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:33:36.263 [DEBUG] [Thread-116663] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:33:36.264 [DEBUG] [Thread-116663] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:33:36.264 [DEBUG] [Thread-116663] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:33:36.264 [DEBUG] [Thread-116663] [transport.py] [_log()] Compression: none
2025-11-03T13:33:36.264 [DEBUG] [Thread-116663] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:33:36.328 [DEBUG] [Thread-116663] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:33:36.329 [DEBUG] [Thread-116663] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:33:36.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:33:36.331 [DEBUG] [Thread-116663] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:33:36.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:33:36.394 [DEBUG] [Thread-116663] [transport.py] [_log()] userauth is OK
2025-11-03T13:33:36.395 [DEBUG] [Thread-116663] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:33:36.395 [DEBUG] [Thread-116663] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:33:36.395 [DEBUG] [Thread-116663] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:33:36.395 [DEBUG] [Thread-116663] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:33:36.419 [INFO] [Thread-116663] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:33:36.419 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:33:36.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:33:37.237 [DEBUG] [Thread-116663] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:33:37.238 [DEBUG] [Thread-116663] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:33:37.286 [DEBUG] [Thread-116663] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:33:37.286 [DEBUG] [Thread-116663] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:33:37.295 [DEBUG] [Thread-116663] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:33:37.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:33:37.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:33:37.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:33:37.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:33:37.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:33:37.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:33:37.329 [DEBUG] [Thread-116663] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:33:37.517 [DEBUG] [Thread-116665 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:33:49.748 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:33:49.750 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:33:52.575 [DEBUG] [Thread-116666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:34:06.570 [DEBUG] [Thread-116667 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:34:07.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:34:07.351 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:34:07.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:34:07.604 [DEBUG] [Thread-116668 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:34:07.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 33, 42), 45.75, 3.89, 0.0, 26.5, 25.83, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:34:07.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:33:42
2025-11-03T13:34:08.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:34:08.265 [DEBUG] [Thread-116669] [transport.py] [_log()] starting thread (client mode): 0x117bf8b0
2025-11-03T13:34:08.265 [DEBUG] [Thread-116669] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:34:08.282 [DEBUG] [Thread-116669] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:34:08.282 [INFO] [Thread-116669] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:34:08.285 [DEBUG] [Thread-116669] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:34:08.285 [DEBUG] [Thread-116669] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:34:08.285 [DEBUG] [Thread-116669] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:34:08.285 [DEBUG] [Thread-116669] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:34:08.285 [DEBUG] [Thread-116669] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:34:08.285 [DEBUG] [Thread-116669] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:34:08.285 [DEBUG] [Thread-116669] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:34:08.285 [DEBUG] [Thread-116669] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:34:08.285 [DEBUG] [Thread-116669] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:34:08.285 [DEBUG] [Thread-116669] [transport.py] [_log()] client lang: <none>
2025-11-03T13:34:08.285 [DEBUG] [Thread-116669] [transport.py] [_log()] server lang: <none>
2025-11-03T13:34:08.285 [DEBUG] [Thread-116669] [transport.py] [_log()] kex follows: False
2025-11-03T13:34:08.285 [DEBUG] [Thread-116669] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:34:08.285 [DEBUG] [Thread-116669] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:34:08.285 [DEBUG] [Thread-116669] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:34:08.285 [DEBUG] [Thread-116669] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:34:08.285 [DEBUG] [Thread-116669] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:34:08.285 [DEBUG] [Thread-116669] [transport.py] [_log()] Compression: none
2025-11-03T13:34:08.285 [DEBUG] [Thread-116669] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:34:08.303 [DEBUG] [Thread-116669] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:34:08.303 [DEBUG] [Thread-116669] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:34:08.304 [DEBUG] [Thread-116669] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:34:08.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:34:08.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:34:08.305 [DEBUG] [Thread-116669] [transport.py] [_log()] userauth is OK
2025-11-03T13:34:08.305 [DEBUG] [Thread-116669] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:34:08.306 [DEBUG] [Thread-116669] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:34:08.306 [DEBUG] [Thread-116669] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:34:08.306 [DEBUG] [Thread-116669] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:34:08.323 [INFO] [Thread-116669] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:34:08.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:34:08.960 [DEBUG] [Thread-116669] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:34:08.960 [DEBUG] [Thread-116669] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:34:08.960 [DEBUG] [Thread-116669] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:34:09.000 [DEBUG] [Thread-116669] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:34:09.000 [DEBUG] [Thread-116669] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:34:09.002 [DEBUG] [Thread-116669] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:34:09.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:34:09.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:34:09.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:34:09.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:34:09.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:34:09.020 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:34:09.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:34:09.020 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:34:09.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:34:09.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.481353 -999.00  +26.40  27.02      8   -9.80 1 1 1 1 1   888    0 35.54 -11.40 ----- 29.2 27.0 335.8 34.7 30.8 -30.9 30.1 -29.9 30.4 -29.7 31.1 -29.1
2025-11-03T13:34:09.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:34:09.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:34:09.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.481353
2025-11-03T13:34:09.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:34:09.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:34:09.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:34:09.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:34:09.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:34:09.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:33:42', tmtdew=45.75, humidity=3.89, cloud=0.0, wind=26.5, temperature=25.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:33:08.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:34:09.021 [DEBUG] [Thread-116669] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:34:09.092 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:34:09.104 [DEBUG] [Thread-116672] [transport.py] [_log()] starting thread (client mode): 0xedd73a0
2025-11-03T13:34:09.104 [DEBUG] [Thread-116672] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:34:09.118 [DEBUG] [Thread-116672] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:34:09.118 [INFO] [Thread-116672] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:34:09.127 [DEBUG] [Thread-116672] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:34:09.127 [DEBUG] [Thread-116672] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:34:09.127 [DEBUG] [Thread-116672] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:34:09.127 [DEBUG] [Thread-116672] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:34:09.127 [DEBUG] [Thread-116672] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:34:09.127 [DEBUG] [Thread-116672] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:34:09.127 [DEBUG] [Thread-116672] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:34:09.127 [DEBUG] [Thread-116672] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:34:09.127 [DEBUG] [Thread-116672] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:34:09.127 [DEBUG] [Thread-116672] [transport.py] [_log()] client lang: <none>
2025-11-03T13:34:09.127 [DEBUG] [Thread-116672] [transport.py] [_log()] server lang: <none>
2025-11-03T13:34:09.127 [DEBUG] [Thread-116672] [transport.py] [_log()] kex follows: False
2025-11-03T13:34:09.127 [DEBUG] [Thread-116672] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:34:09.127 [DEBUG] [Thread-116672] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:34:09.127 [DEBUG] [Thread-116672] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:34:09.127 [DEBUG] [Thread-116672] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:34:09.127 [DEBUG] [Thread-116672] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:34:09.128 [DEBUG] [Thread-116672] [transport.py] [_log()] Compression: none
2025-11-03T13:34:09.128 [DEBUG] [Thread-116672] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:34:09.185 [DEBUG] [Thread-116672] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:34:09.185 [DEBUG] [Thread-116672] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:34:09.185 [DEBUG] [Thread-116672] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:34:09.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:34:09.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:34:09.242 [DEBUG] [Thread-116672] [transport.py] [_log()] userauth is OK
2025-11-03T13:34:09.242 [DEBUG] [Thread-116672] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:34:09.242 [DEBUG] [Thread-116672] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:34:09.242 [DEBUG] [Thread-116672] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:34:09.242 [DEBUG] [Thread-116672] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:34:09.255 [INFO] [Thread-116672] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:34:09.256 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:34:09.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:34:10.089 [DEBUG] [Thread-116672] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:34:10.089 [DEBUG] [Thread-116672] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:34:10.136 [DEBUG] [Thread-116672] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:34:10.137 [DEBUG] [Thread-116672] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:34:10.146 [DEBUG] [Thread-116672] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:34:10.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:34:10.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:34:10.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:34:10.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:34:10.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:34:10.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:34:10.180 [DEBUG] [Thread-116672] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:34:22.638 [DEBUG] [Thread-116674 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:34:37.685 [DEBUG] [Thread-116675 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:34:40.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:34:40.181 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:34:40.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:34:40.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 34, 15), 45.87, 3.85, 0.0, 28.05, 25.9, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:34:40.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:34:15
2025-11-03T13:34:40.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:34:41.125 [DEBUG] [Thread-116676] [transport.py] [_log()] starting thread (client mode): 0x11781810
2025-11-03T13:34:41.125 [DEBUG] [Thread-116676] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:34:41.145 [DEBUG] [Thread-116676] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:34:41.145 [INFO] [Thread-116676] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:34:41.146 [DEBUG] [Thread-116676] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:34:41.146 [DEBUG] [Thread-116676] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:34:41.147 [DEBUG] [Thread-116676] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:34:41.147 [DEBUG] [Thread-116676] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:34:41.147 [DEBUG] [Thread-116676] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:34:41.147 [DEBUG] [Thread-116676] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:34:41.147 [DEBUG] [Thread-116676] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:34:41.147 [DEBUG] [Thread-116676] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:34:41.147 [DEBUG] [Thread-116676] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:34:41.147 [DEBUG] [Thread-116676] [transport.py] [_log()] client lang: <none>
2025-11-03T13:34:41.147 [DEBUG] [Thread-116676] [transport.py] [_log()] server lang: <none>
2025-11-03T13:34:41.147 [DEBUG] [Thread-116676] [transport.py] [_log()] kex follows: False
2025-11-03T13:34:41.147 [DEBUG] [Thread-116676] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:34:41.147 [DEBUG] [Thread-116676] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:34:41.147 [DEBUG] [Thread-116676] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:34:41.147 [DEBUG] [Thread-116676] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:34:41.147 [DEBUG] [Thread-116676] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:34:41.147 [DEBUG] [Thread-116676] [transport.py] [_log()] Compression: none
2025-11-03T13:34:41.147 [DEBUG] [Thread-116676] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:34:41.156 [DEBUG] [Thread-116676] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:34:41.157 [DEBUG] [Thread-116676] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:34:41.157 [DEBUG] [Thread-116676] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:34:41.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:34:41.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:34:41.158 [DEBUG] [Thread-116676] [transport.py] [_log()] userauth is OK
2025-11-03T13:34:41.159 [DEBUG] [Thread-116676] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:34:41.159 [DEBUG] [Thread-116676] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:34:41.159 [DEBUG] [Thread-116676] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:34:41.159 [DEBUG] [Thread-116676] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:34:41.177 [INFO] [Thread-116676] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:34:41.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:34:41.979 [DEBUG] [Thread-116676] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:34:41.979 [DEBUG] [Thread-116676] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:34:41.980 [DEBUG] [Thread-116676] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:34:42.020 [DEBUG] [Thread-116676] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:34:42.020 [DEBUG] [Thread-116676] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:34:42.026 [DEBUG] [Thread-116676] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:34:42.037 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:34:42.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:34:42.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:34:42.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:34:42.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:34:42.052 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:34:42.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:34:42.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:34:42.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:34:42.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.482048 -999.00  +26.40  26.06      7  -10.60 1 1 1 1 1   888    0 36.17 -5.67 ----- 17.1 26.1 345.4 32.2 30.9 -32.2 30.2 -30.1 30.7 -30.0 31.4 -29.4
2025-11-03T13:34:42.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:34:42.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:34:42.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.482048
2025-11-03T13:34:42.061 [DEBUG] [Thread-116676] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:34:42.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:34:42.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:34:42.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:34:42.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:34:42.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:34:42.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:34:15', tmtdew=45.87, humidity=3.85, cloud=0.0, wind=28.05, temperature=25.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:34:08.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:34:42.147 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:34:42.159 [DEBUG] [Thread-116679] [transport.py] [_log()] starting thread (client mode): 0xedd53c0
2025-11-03T13:34:42.160 [DEBUG] [Thread-116679] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:34:42.175 [DEBUG] [Thread-116679] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:34:42.175 [INFO] [Thread-116679] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:34:42.183 [DEBUG] [Thread-116679] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:34:42.183 [DEBUG] [Thread-116679] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:34:42.183 [DEBUG] [Thread-116679] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:34:42.183 [DEBUG] [Thread-116679] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:34:42.184 [DEBUG] [Thread-116679] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:34:42.184 [DEBUG] [Thread-116679] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:34:42.184 [DEBUG] [Thread-116679] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:34:42.184 [DEBUG] [Thread-116679] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:34:42.184 [DEBUG] [Thread-116679] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:34:42.184 [DEBUG] [Thread-116679] [transport.py] [_log()] client lang: <none>
2025-11-03T13:34:42.184 [DEBUG] [Thread-116679] [transport.py] [_log()] server lang: <none>
2025-11-03T13:34:42.184 [DEBUG] [Thread-116679] [transport.py] [_log()] kex follows: False
2025-11-03T13:34:42.184 [DEBUG] [Thread-116679] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:34:42.184 [DEBUG] [Thread-116679] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:34:42.184 [DEBUG] [Thread-116679] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:34:42.184 [DEBUG] [Thread-116679] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:34:42.184 [DEBUG] [Thread-116679] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:34:42.184 [DEBUG] [Thread-116679] [transport.py] [_log()] Compression: none
2025-11-03T13:34:42.184 [DEBUG] [Thread-116679] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:34:42.243 [DEBUG] [Thread-116679] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:34:42.243 [DEBUG] [Thread-116679] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:34:42.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:34:42.253 [DEBUG] [Thread-116679] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:34:42.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:34:42.299 [DEBUG] [Thread-116679] [transport.py] [_log()] userauth is OK
2025-11-03T13:34:42.300 [DEBUG] [Thread-116679] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:34:42.300 [DEBUG] [Thread-116679] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:34:42.300 [DEBUG] [Thread-116679] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:34:42.300 [DEBUG] [Thread-116679] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:34:42.319 [INFO] [Thread-116679] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:34:42.319 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:34:42.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:34:43.201 [DEBUG] [Thread-116679] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:34:43.202 [DEBUG] [Thread-116679] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:34:43.251 [DEBUG] [Thread-116679] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:34:43.252 [DEBUG] [Thread-116679] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:34:43.261 [DEBUG] [Thread-116679] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:34:43.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:34:43.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:34:43.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:34:43.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:34:43.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:34:43.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:34:43.298 [DEBUG] [Thread-116679] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:34:49.891 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:34:49.892 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:34:52.715 [DEBUG] [Thread-116681 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:35:06.637 [DEBUG] [Thread-116682 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:35:07.766 [DEBUG] [Thread-116683 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:35:13.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:35:13.320 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:35:13.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:35:13.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 34, 47), 46.39, 3.69, 0.0, 26.08, 26.05, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:35:13.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:34:47
2025-11-03T13:35:14.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:35:14.270 [DEBUG] [Thread-116684] [transport.py] [_log()] starting thread (client mode): 0xed4d330
2025-11-03T13:35:14.270 [DEBUG] [Thread-116684] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:35:14.290 [DEBUG] [Thread-116684] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:35:14.290 [INFO] [Thread-116684] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:35:14.293 [DEBUG] [Thread-116684] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:35:14.293 [DEBUG] [Thread-116684] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:35:14.294 [DEBUG] [Thread-116684] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:35:14.294 [DEBUG] [Thread-116684] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:35:14.294 [DEBUG] [Thread-116684] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:35:14.294 [DEBUG] [Thread-116684] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:35:14.294 [DEBUG] [Thread-116684] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:35:14.294 [DEBUG] [Thread-116684] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:35:14.294 [DEBUG] [Thread-116684] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:35:14.294 [DEBUG] [Thread-116684] [transport.py] [_log()] client lang: <none>
2025-11-03T13:35:14.294 [DEBUG] [Thread-116684] [transport.py] [_log()] server lang: <none>
2025-11-03T13:35:14.294 [DEBUG] [Thread-116684] [transport.py] [_log()] kex follows: False
2025-11-03T13:35:14.294 [DEBUG] [Thread-116684] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:35:14.294 [DEBUG] [Thread-116684] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:35:14.294 [DEBUG] [Thread-116684] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:35:14.295 [DEBUG] [Thread-116684] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:35:14.295 [DEBUG] [Thread-116684] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:35:14.295 [DEBUG] [Thread-116684] [transport.py] [_log()] Compression: none
2025-11-03T13:35:14.295 [DEBUG] [Thread-116684] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:35:14.314 [DEBUG] [Thread-116684] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:35:14.323 [DEBUG] [Thread-116684] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:35:14.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:35:14.325 [DEBUG] [Thread-116684] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:35:14.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:35:14.328 [DEBUG] [Thread-116684] [transport.py] [_log()] userauth is OK
2025-11-03T13:35:14.328 [DEBUG] [Thread-116684] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:35:14.328 [DEBUG] [Thread-116684] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:35:14.328 [DEBUG] [Thread-116684] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:35:14.328 [DEBUG] [Thread-116684] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:35:14.353 [INFO] [Thread-116684] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:35:14.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:35:15.265 [DEBUG] [Thread-116684] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:35:15.265 [DEBUG] [Thread-116684] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:35:15.265 [DEBUG] [Thread-116684] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:35:15.306 [DEBUG] [Thread-116684] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:35:15.306 [DEBUG] [Thread-116684] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:35:15.309 [DEBUG] [Thread-116684] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:35:15.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:35:15.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:35:15.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:35:15.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:35:15.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:35:15.444 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:35:15.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:35:15.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:35:15.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:35:15.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.482395 -999.00  +26.20  21.54      8  -10.30 1 1 1 1 1   888    0 34.81 -0.48 ----- 18.6 21.5 329.2 38.7 31.0 -30.5 30.2 -30.5 30.6 -30.9 31.4 -30.2
2025-11-03T13:35:15.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:35:15.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:35:15.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.482395
2025-11-03T13:35:15.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:35:15.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:35:15.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:35:15.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:35:15.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:35:15.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:34:47', tmtdew=46.39, humidity=3.69, cloud=0.0, wind=26.08, temperature=26.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:34:38.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:35:15.446 [DEBUG] [Thread-116684] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:35:15.517 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:35:15.530 [DEBUG] [Thread-116687] [transport.py] [_log()] starting thread (client mode): 0xed4ebc0
2025-11-03T13:35:15.531 [DEBUG] [Thread-116687] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:35:15.545 [DEBUG] [Thread-116687] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:35:15.545 [INFO] [Thread-116687] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:35:15.553 [DEBUG] [Thread-116687] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:35:15.553 [DEBUG] [Thread-116687] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:35:15.553 [DEBUG] [Thread-116687] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:35:15.553 [DEBUG] [Thread-116687] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:35:15.553 [DEBUG] [Thread-116687] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:35:15.553 [DEBUG] [Thread-116687] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:35:15.553 [DEBUG] [Thread-116687] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:35:15.553 [DEBUG] [Thread-116687] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:35:15.553 [DEBUG] [Thread-116687] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:35:15.553 [DEBUG] [Thread-116687] [transport.py] [_log()] client lang: <none>
2025-11-03T13:35:15.553 [DEBUG] [Thread-116687] [transport.py] [_log()] server lang: <none>
2025-11-03T13:35:15.553 [DEBUG] [Thread-116687] [transport.py] [_log()] kex follows: False
2025-11-03T13:35:15.553 [DEBUG] [Thread-116687] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:35:15.553 [DEBUG] [Thread-116687] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:35:15.553 [DEBUG] [Thread-116687] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:35:15.553 [DEBUG] [Thread-116687] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:35:15.553 [DEBUG] [Thread-116687] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:35:15.553 [DEBUG] [Thread-116687] [transport.py] [_log()] Compression: none
2025-11-03T13:35:15.553 [DEBUG] [Thread-116687] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:35:15.609 [DEBUG] [Thread-116687] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:35:15.609 [DEBUG] [Thread-116687] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:35:15.618 [DEBUG] [Thread-116687] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:35:15.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:35:15.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:35:15.667 [DEBUG] [Thread-116687] [transport.py] [_log()] userauth is OK
2025-11-03T13:35:15.667 [DEBUG] [Thread-116687] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:35:15.667 [DEBUG] [Thread-116687] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:35:15.667 [DEBUG] [Thread-116687] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:35:15.667 [DEBUG] [Thread-116687] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:35:15.681 [INFO] [Thread-116687] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:35:15.681 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:35:15.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:35:16.507 [DEBUG] [Thread-116687] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:35:16.508 [DEBUG] [Thread-116687] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:35:16.557 [DEBUG] [Thread-116687] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:35:16.558 [DEBUG] [Thread-116687] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:35:16.567 [DEBUG] [Thread-116687] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:35:16.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:35:16.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:35:16.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:35:16.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:35:16.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:35:16.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:35:16.606 [DEBUG] [Thread-116687] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:35:22.794 [DEBUG] [Thread-116689 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:35:37.850 [DEBUG] [Thread-116690 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:35:46.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:35:46.620 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:35:46.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:35:47.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 35, 19), 46.4, 3.69, 0.0, 29.34, 26.06, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:35:47.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:35:19
2025-11-03T13:35:47.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:35:47.682 [DEBUG] [Thread-116691] [transport.py] [_log()] starting thread (client mode): 0x81ba200
2025-11-03T13:35:47.682 [DEBUG] [Thread-116691] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:35:47.702 [DEBUG] [Thread-116691] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:35:47.702 [INFO] [Thread-116691] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:35:47.705 [DEBUG] [Thread-116691] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:35:47.705 [DEBUG] [Thread-116691] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:35:47.705 [DEBUG] [Thread-116691] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:35:47.705 [DEBUG] [Thread-116691] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:35:47.705 [DEBUG] [Thread-116691] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:35:47.705 [DEBUG] [Thread-116691] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:35:47.705 [DEBUG] [Thread-116691] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:35:47.705 [DEBUG] [Thread-116691] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:35:47.705 [DEBUG] [Thread-116691] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:35:47.705 [DEBUG] [Thread-116691] [transport.py] [_log()] client lang: <none>
2025-11-03T13:35:47.706 [DEBUG] [Thread-116691] [transport.py] [_log()] server lang: <none>
2025-11-03T13:35:47.706 [DEBUG] [Thread-116691] [transport.py] [_log()] kex follows: False
2025-11-03T13:35:47.706 [DEBUG] [Thread-116691] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:35:47.706 [DEBUG] [Thread-116691] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:35:47.706 [DEBUG] [Thread-116691] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:35:47.706 [DEBUG] [Thread-116691] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:35:47.706 [DEBUG] [Thread-116691] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:35:47.706 [DEBUG] [Thread-116691] [transport.py] [_log()] Compression: none
2025-11-03T13:35:47.706 [DEBUG] [Thread-116691] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:35:47.722 [DEBUG] [Thread-116691] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:35:47.723 [DEBUG] [Thread-116691] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:35:47.723 [DEBUG] [Thread-116691] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:35:47.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:35:47.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:35:47.724 [DEBUG] [Thread-116691] [transport.py] [_log()] userauth is OK
2025-11-03T13:35:47.724 [DEBUG] [Thread-116691] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:35:47.724 [DEBUG] [Thread-116691] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:35:47.724 [DEBUG] [Thread-116691] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:35:47.724 [DEBUG] [Thread-116691] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:35:47.735 [INFO] [Thread-116691] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:35:47.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:35:48.384 [DEBUG] [Thread-116691] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:35:48.384 [DEBUG] [Thread-116691] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:35:48.384 [DEBUG] [Thread-116691] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:35:48.426 [DEBUG] [Thread-116691] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:35:48.426 [DEBUG] [Thread-116691] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:35:48.428 [DEBUG] [Thread-116691] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:35:48.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:35:48.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:35:48.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:35:48.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:35:48.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:35:48.446 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:35:48.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:35:48.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:35:48.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:35:48.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.482742 -999.00  +25.50  20.43      8  -11.10 1 1 1 1 1   888    0 36.36 3.31 ----- 25.4 20.4 7.1 40.1 30.5 -33.7 30.0 -32.2 30.4 -32.2 31.2 -39.3
2025-11-03T13:35:48.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:35:48.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:35:48.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.482742
2025-11-03T13:35:48.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:35:48.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:35:48.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:35:48.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:35:48.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:35:48.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:35:19', tmtdew=46.4, humidity=3.69, cloud=0.0, wind=29.34, temperature=26.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:35:08.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:35:48.448 [DEBUG] [Thread-116691] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:35:48.522 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:35:48.534 [DEBUG] [Thread-116694] [transport.py] [_log()] starting thread (client mode): 0x11781660
2025-11-03T13:35:48.534 [DEBUG] [Thread-116694] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:35:48.549 [DEBUG] [Thread-116694] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:35:48.549 [INFO] [Thread-116694] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:35:48.557 [DEBUG] [Thread-116694] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:35:48.557 [DEBUG] [Thread-116694] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:35:48.557 [DEBUG] [Thread-116694] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:35:48.557 [DEBUG] [Thread-116694] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:35:48.557 [DEBUG] [Thread-116694] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:35:48.557 [DEBUG] [Thread-116694] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:35:48.557 [DEBUG] [Thread-116694] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:35:48.557 [DEBUG] [Thread-116694] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:35:48.557 [DEBUG] [Thread-116694] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:35:48.557 [DEBUG] [Thread-116694] [transport.py] [_log()] client lang: <none>
2025-11-03T13:35:48.557 [DEBUG] [Thread-116694] [transport.py] [_log()] server lang: <none>
2025-11-03T13:35:48.557 [DEBUG] [Thread-116694] [transport.py] [_log()] kex follows: False
2025-11-03T13:35:48.557 [DEBUG] [Thread-116694] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:35:48.557 [DEBUG] [Thread-116694] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:35:48.557 [DEBUG] [Thread-116694] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:35:48.557 [DEBUG] [Thread-116694] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:35:48.557 [DEBUG] [Thread-116694] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:35:48.557 [DEBUG] [Thread-116694] [transport.py] [_log()] Compression: none
2025-11-03T13:35:48.557 [DEBUG] [Thread-116694] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:35:48.613 [DEBUG] [Thread-116694] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:35:48.614 [DEBUG] [Thread-116694] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:35:48.614 [DEBUG] [Thread-116694] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:35:48.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:35:48.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:35:48.670 [DEBUG] [Thread-116694] [transport.py] [_log()] userauth is OK
2025-11-03T13:35:48.671 [DEBUG] [Thread-116694] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:35:48.671 [DEBUG] [Thread-116694] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:35:48.671 [DEBUG] [Thread-116694] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:35:48.671 [DEBUG] [Thread-116694] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:35:48.684 [INFO] [Thread-116694] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:35:48.685 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:35:48.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:35:49.592 [DEBUG] [Thread-116694] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:35:49.592 [DEBUG] [Thread-116694] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:35:49.640 [DEBUG] [Thread-116694] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:35:49.640 [DEBUG] [Thread-116694] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:35:49.649 [DEBUG] [Thread-116694] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:35:49.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:35:49.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:35:49.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:35:49.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:35:49.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:35:49.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:35:49.680 [DEBUG] [Thread-116694] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:35:50.033 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:35:50.034 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:35:52.878 [DEBUG] [Thread-116696 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:36:06.709 [DEBUG] [Thread-116697 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:36:07.919 [DEBUG] [Thread-116698 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:36:19.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:36:19.702 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:36:19.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:36:20.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 35, 52), 46.99, 3.22, 0.0, 29.08, 25.63, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:36:20.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:35:52
2025-11-03T13:36:20.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:36:20.747 [DEBUG] [Thread-116699] [transport.py] [_log()] starting thread (client mode): 0xed4eef0
2025-11-03T13:36:20.747 [DEBUG] [Thread-116699] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:36:20.770 [DEBUG] [Thread-116699] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:36:20.770 [INFO] [Thread-116699] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:36:20.781 [DEBUG] [Thread-116699] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:36:20.781 [DEBUG] [Thread-116699] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:36:20.781 [DEBUG] [Thread-116699] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:36:20.781 [DEBUG] [Thread-116699] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:36:20.781 [DEBUG] [Thread-116699] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:36:20.781 [DEBUG] [Thread-116699] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:36:20.781 [DEBUG] [Thread-116699] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:36:20.781 [DEBUG] [Thread-116699] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:36:20.781 [DEBUG] [Thread-116699] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:36:20.781 [DEBUG] [Thread-116699] [transport.py] [_log()] client lang: <none>
2025-11-03T13:36:20.781 [DEBUG] [Thread-116699] [transport.py] [_log()] server lang: <none>
2025-11-03T13:36:20.781 [DEBUG] [Thread-116699] [transport.py] [_log()] kex follows: False
2025-11-03T13:36:20.781 [DEBUG] [Thread-116699] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:36:20.782 [DEBUG] [Thread-116699] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:36:20.782 [DEBUG] [Thread-116699] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:36:20.782 [DEBUG] [Thread-116699] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:36:20.782 [DEBUG] [Thread-116699] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:36:20.782 [DEBUG] [Thread-116699] [transport.py] [_log()] Compression: none
2025-11-03T13:36:20.782 [DEBUG] [Thread-116699] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:36:20.793 [DEBUG] [Thread-116699] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:36:20.793 [DEBUG] [Thread-116699] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:36:20.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:36:20.794 [DEBUG] [Thread-116699] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:36:20.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:36:20.797 [DEBUG] [Thread-116699] [transport.py] [_log()] userauth is OK
2025-11-03T13:36:20.797 [DEBUG] [Thread-116699] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:36:20.797 [DEBUG] [Thread-116699] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:36:20.797 [DEBUG] [Thread-116699] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:36:20.797 [DEBUG] [Thread-116699] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:36:20.821 [INFO] [Thread-116699] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:36:20.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:36:21.394 [DEBUG] [Thread-116699] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:36:21.394 [DEBUG] [Thread-116699] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:36:21.395 [DEBUG] [Thread-116699] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:36:21.435 [DEBUG] [Thread-116699] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:36:21.436 [DEBUG] [Thread-116699] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:36:21.439 [DEBUG] [Thread-116699] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:36:21.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:36:21.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:36:21.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:36:21.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:36:21.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:36:21.467 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:36:21.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:36:21.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:36:21.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:36:21.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.483090 -999.00  +25.20  27.96      8  -11.00 1 1 1 1 1   888    0 35.90 6.69 ----- 20.2 28.0 3.6 43.1 30.6 -32.0 29.9 -31.5 30.4 -30.3 30.9 -33.1
2025-11-03T13:36:21.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:36:21.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:36:21.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.483090
2025-11-03T13:36:21.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:36:21.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:36:21.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:36:21.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:36:21.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:36:21.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:35:52', tmtdew=46.99, humidity=3.22, cloud=0.0, wind=29.08, temperature=25.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:35:38.976', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:36:21.472 [DEBUG] [Thread-116699] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:36:21.552 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:36:21.565 [DEBUG] [Thread-116702] [transport.py] [_log()] starting thread (client mode): 0xedd7700
2025-11-03T13:36:21.565 [DEBUG] [Thread-116702] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:36:21.580 [DEBUG] [Thread-116702] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:36:21.580 [INFO] [Thread-116702] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:36:21.588 [DEBUG] [Thread-116702] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:36:21.588 [DEBUG] [Thread-116702] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:36:21.588 [DEBUG] [Thread-116702] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:36:21.588 [DEBUG] [Thread-116702] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:36:21.589 [DEBUG] [Thread-116702] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:36:21.589 [DEBUG] [Thread-116702] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:36:21.589 [DEBUG] [Thread-116702] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:36:21.589 [DEBUG] [Thread-116702] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:36:21.589 [DEBUG] [Thread-116702] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:36:21.589 [DEBUG] [Thread-116702] [transport.py] [_log()] client lang: <none>
2025-11-03T13:36:21.589 [DEBUG] [Thread-116702] [transport.py] [_log()] server lang: <none>
2025-11-03T13:36:21.589 [DEBUG] [Thread-116702] [transport.py] [_log()] kex follows: False
2025-11-03T13:36:21.589 [DEBUG] [Thread-116702] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:36:21.590 [DEBUG] [Thread-116702] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:36:21.590 [DEBUG] [Thread-116702] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:36:21.590 [DEBUG] [Thread-116702] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:36:21.590 [DEBUG] [Thread-116702] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:36:21.591 [DEBUG] [Thread-116702] [transport.py] [_log()] Compression: none
2025-11-03T13:36:21.591 [DEBUG] [Thread-116702] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:36:21.648 [DEBUG] [Thread-116702] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:36:21.649 [DEBUG] [Thread-116702] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:36:21.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:36:21.650 [DEBUG] [Thread-116702] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:36:21.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:36:21.707 [DEBUG] [Thread-116702] [transport.py] [_log()] userauth is OK
2025-11-03T13:36:21.707 [DEBUG] [Thread-116702] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:36:21.707 [DEBUG] [Thread-116702] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:36:21.707 [DEBUG] [Thread-116702] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:36:21.707 [DEBUG] [Thread-116702] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:36:21.720 [INFO] [Thread-116702] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:36:21.721 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:36:21.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:36:22.554 [DEBUG] [Thread-116702] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:36:22.554 [DEBUG] [Thread-116702] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:36:22.602 [DEBUG] [Thread-116702] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:36:22.602 [DEBUG] [Thread-116702] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:36:22.612 [DEBUG] [Thread-116702] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:36:22.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:36:22.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:36:22.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:36:22.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:36:22.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:36:22.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:36:22.658 [DEBUG] [Thread-116702] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:36:22.961 [DEBUG] [Thread-116704 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:36:38.011 [DEBUG] [Thread-116705 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:36:50.173 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:36:50.174 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:36:52.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:36:52.667 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:36:52.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:36:53.046 [DEBUG] [Thread-116706 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:36:53.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 36, 24), 46.72, 3.29, 0.0, 27.88, 25.45, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:36:53.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:36:24
2025-11-03T13:36:53.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:36:53.614 [DEBUG] [Thread-116707] [transport.py] [_log()] starting thread (client mode): 0x117bc070
2025-11-03T13:36:53.614 [DEBUG] [Thread-116707] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:36:53.635 [DEBUG] [Thread-116707] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:36:53.635 [INFO] [Thread-116707] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:36:53.639 [DEBUG] [Thread-116707] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:36:53.639 [DEBUG] [Thread-116707] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:36:53.639 [DEBUG] [Thread-116707] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:36:53.639 [DEBUG] [Thread-116707] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:36:53.639 [DEBUG] [Thread-116707] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:36:53.639 [DEBUG] [Thread-116707] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:36:53.639 [DEBUG] [Thread-116707] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:36:53.639 [DEBUG] [Thread-116707] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:36:53.639 [DEBUG] [Thread-116707] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:36:53.640 [DEBUG] [Thread-116707] [transport.py] [_log()] client lang: <none>
2025-11-03T13:36:53.640 [DEBUG] [Thread-116707] [transport.py] [_log()] server lang: <none>
2025-11-03T13:36:53.640 [DEBUG] [Thread-116707] [transport.py] [_log()] kex follows: False
2025-11-03T13:36:53.640 [DEBUG] [Thread-116707] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:36:53.640 [DEBUG] [Thread-116707] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:36:53.640 [DEBUG] [Thread-116707] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:36:53.640 [DEBUG] [Thread-116707] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:36:53.640 [DEBUG] [Thread-116707] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:36:53.640 [DEBUG] [Thread-116707] [transport.py] [_log()] Compression: none
2025-11-03T13:36:53.640 [DEBUG] [Thread-116707] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:36:53.659 [DEBUG] [Thread-116707] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:36:53.659 [DEBUG] [Thread-116707] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:36:53.660 [DEBUG] [Thread-116707] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:36:53.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:36:53.661 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:36:53.662 [DEBUG] [Thread-116707] [transport.py] [_log()] userauth is OK
2025-11-03T13:36:53.662 [DEBUG] [Thread-116707] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:36:53.663 [DEBUG] [Thread-116707] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:36:53.663 [DEBUG] [Thread-116707] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:36:53.663 [DEBUG] [Thread-116707] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:36:53.687 [INFO] [Thread-116707] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:36:53.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:36:54.324 [DEBUG] [Thread-116707] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:36:54.324 [DEBUG] [Thread-116707] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:36:54.325 [DEBUG] [Thread-116707] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:36:54.365 [DEBUG] [Thread-116707] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:36:54.365 [DEBUG] [Thread-116707] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:36:54.368 [DEBUG] [Thread-116707] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:36:54.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:36:54.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:36:54.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:36:54.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:36:54.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:36:54.393 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:36:54.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:36:54.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:36:54.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:36:54.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.483437 -999.00  +25.30  28.89      8  -10.80 1 1 1 1 1   888    0 35.60 8.17 ----- 23.9 28.9 304.1 40.3 30.6 -31.5 29.9 -30.7 30.4 -29.5 31.1 -29.7
2025-11-03T13:36:54.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:36:54.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:36:54.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.483437
2025-11-03T13:36:54.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:36:54.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:36:54.395 [DEBUG] [Thread-116707] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:36:54.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:36:54.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:36:54.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:36:54.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:36:24', tmtdew=46.72, humidity=3.29, cloud=0.0, wind=27.88, temperature=25.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:36:08.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:36:54.486 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:36:54.499 [DEBUG] [Thread-116710] [transport.py] [_log()] starting thread (client mode): 0xed4d8a0
2025-11-03T13:36:54.499 [DEBUG] [Thread-116710] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:36:54.514 [DEBUG] [Thread-116710] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:36:54.515 [INFO] [Thread-116710] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:36:54.522 [DEBUG] [Thread-116710] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:36:54.523 [DEBUG] [Thread-116710] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:36:54.523 [DEBUG] [Thread-116710] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:36:54.523 [DEBUG] [Thread-116710] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:36:54.523 [DEBUG] [Thread-116710] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:36:54.523 [DEBUG] [Thread-116710] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:36:54.523 [DEBUG] [Thread-116710] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:36:54.523 [DEBUG] [Thread-116710] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:36:54.523 [DEBUG] [Thread-116710] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:36:54.523 [DEBUG] [Thread-116710] [transport.py] [_log()] client lang: <none>
2025-11-03T13:36:54.523 [DEBUG] [Thread-116710] [transport.py] [_log()] server lang: <none>
2025-11-03T13:36:54.523 [DEBUG] [Thread-116710] [transport.py] [_log()] kex follows: False
2025-11-03T13:36:54.523 [DEBUG] [Thread-116710] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:36:54.523 [DEBUG] [Thread-116710] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:36:54.523 [DEBUG] [Thread-116710] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:36:54.523 [DEBUG] [Thread-116710] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:36:54.523 [DEBUG] [Thread-116710] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:36:54.524 [DEBUG] [Thread-116710] [transport.py] [_log()] Compression: none
2025-11-03T13:36:54.524 [DEBUG] [Thread-116710] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:36:54.580 [DEBUG] [Thread-116710] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:36:54.589 [DEBUG] [Thread-116710] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:36:54.590 [DEBUG] [Thread-116710] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:36:54.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:36:54.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:36:54.636 [DEBUG] [Thread-116710] [transport.py] [_log()] userauth is OK
2025-11-03T13:36:54.636 [DEBUG] [Thread-116710] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:36:54.636 [DEBUG] [Thread-116710] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:36:54.636 [DEBUG] [Thread-116710] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:36:54.636 [DEBUG] [Thread-116710] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:36:54.657 [INFO] [Thread-116710] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:36:54.657 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:36:54.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:36:55.502 [DEBUG] [Thread-116710] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:36:55.502 [DEBUG] [Thread-116710] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:36:55.551 [DEBUG] [Thread-116710] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:36:55.551 [DEBUG] [Thread-116710] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:36:55.560 [DEBUG] [Thread-116710] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:36:55.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:36:55.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:36:55.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:36:55.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:36:55.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:36:55.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:36:55.597 [DEBUG] [Thread-116710] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:37:06.762 [DEBUG] [Thread-116712 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:37:08.073 [DEBUG] [Thread-116713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:37:23.116 [DEBUG] [Thread-116714 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:37:25.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:37:25.606 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:37:25.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:37:26.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 36, 56), 46.77, 3.24, 0.0, 26.17, 25.05, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:37:26.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:36:56
2025-11-03T13:37:26.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:37:26.653 [DEBUG] [Thread-116715] [transport.py] [_log()] starting thread (client mode): 0xed4e680
2025-11-03T13:37:26.653 [DEBUG] [Thread-116715] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:37:26.672 [DEBUG] [Thread-116715] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:37:26.672 [INFO] [Thread-116715] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:37:26.674 [DEBUG] [Thread-116715] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:37:26.674 [DEBUG] [Thread-116715] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:37:26.674 [DEBUG] [Thread-116715] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:37:26.674 [DEBUG] [Thread-116715] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:37:26.674 [DEBUG] [Thread-116715] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:37:26.674 [DEBUG] [Thread-116715] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:37:26.674 [DEBUG] [Thread-116715] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:37:26.674 [DEBUG] [Thread-116715] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:37:26.674 [DEBUG] [Thread-116715] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:37:26.674 [DEBUG] [Thread-116715] [transport.py] [_log()] client lang: <none>
2025-11-03T13:37:26.674 [DEBUG] [Thread-116715] [transport.py] [_log()] server lang: <none>
2025-11-03T13:37:26.674 [DEBUG] [Thread-116715] [transport.py] [_log()] kex follows: False
2025-11-03T13:37:26.674 [DEBUG] [Thread-116715] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:37:26.674 [DEBUG] [Thread-116715] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:37:26.674 [DEBUG] [Thread-116715] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:37:26.674 [DEBUG] [Thread-116715] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:37:26.674 [DEBUG] [Thread-116715] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:37:26.674 [DEBUG] [Thread-116715] [transport.py] [_log()] Compression: none
2025-11-03T13:37:26.674 [DEBUG] [Thread-116715] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:37:26.694 [DEBUG] [Thread-116715] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:37:26.695 [DEBUG] [Thread-116715] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:37:26.695 [DEBUG] [Thread-116715] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:37:26.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:37:26.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:37:26.697 [DEBUG] [Thread-116715] [transport.py] [_log()] userauth is OK
2025-11-03T13:37:26.697 [DEBUG] [Thread-116715] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:37:26.697 [DEBUG] [Thread-116715] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:37:26.698 [DEBUG] [Thread-116715] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:37:26.698 [DEBUG] [Thread-116715] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:37:26.722 [INFO] [Thread-116715] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:37:26.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:37:27.907 [DEBUG] [Thread-116715] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:37:27.907 [DEBUG] [Thread-116715] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:37:27.908 [DEBUG] [Thread-116715] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:37:27.948 [DEBUG] [Thread-116715] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:37:27.948 [DEBUG] [Thread-116715] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:37:27.952 [DEBUG] [Thread-116715] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:37:27.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:37:27.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:37:27.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:37:27.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:37:27.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:37:27.974 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:37:27.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:37:27.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:37:27.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:37:27.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.483784 -999.00  +25.60  30.49      7  -11.20 1 1 2 1 1   888    0 36.54 11.55 ----- 21.5 30.5 322.2 33.8 30.8 -31.2 30.1 -29.9 30.5 -29.4 31.2 -29.2
2025-11-03T13:37:27.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:37:27.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:37:27.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.483784
2025-11-03T13:37:27.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:37:27.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:37:27.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:37:27.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:37:27.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:37:27.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:36:56', tmtdew=46.77, humidity=3.24, cloud=0.0, wind=26.17, temperature=25.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:36:38.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:37:27.978 [DEBUG] [Thread-116715] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:37:28.066 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:37:28.079 [DEBUG] [Thread-116718] [transport.py] [_log()] starting thread (client mode): 0xed4dde0
2025-11-03T13:37:28.079 [DEBUG] [Thread-116718] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:37:28.094 [DEBUG] [Thread-116718] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:37:28.094 [INFO] [Thread-116718] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:37:28.102 [DEBUG] [Thread-116718] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:37:28.103 [DEBUG] [Thread-116718] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:37:28.103 [DEBUG] [Thread-116718] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:37:28.103 [DEBUG] [Thread-116718] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:37:28.103 [DEBUG] [Thread-116718] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:37:28.103 [DEBUG] [Thread-116718] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:37:28.104 [DEBUG] [Thread-116718] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:37:28.104 [DEBUG] [Thread-116718] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:37:28.104 [DEBUG] [Thread-116718] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:37:28.104 [DEBUG] [Thread-116718] [transport.py] [_log()] client lang: <none>
2025-11-03T13:37:28.104 [DEBUG] [Thread-116718] [transport.py] [_log()] server lang: <none>
2025-11-03T13:37:28.104 [DEBUG] [Thread-116718] [transport.py] [_log()] kex follows: False
2025-11-03T13:37:28.104 [DEBUG] [Thread-116718] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:37:28.104 [DEBUG] [Thread-116718] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:37:28.104 [DEBUG] [Thread-116718] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:37:28.104 [DEBUG] [Thread-116718] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:37:28.104 [DEBUG] [Thread-116718] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:37:28.104 [DEBUG] [Thread-116718] [transport.py] [_log()] Compression: none
2025-11-03T13:37:28.104 [DEBUG] [Thread-116718] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:37:28.163 [DEBUG] [Thread-116718] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:37:28.167 [DEBUG] [Thread-116718] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:37:28.168 [DEBUG] [Thread-116718] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:37:28.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:37:28.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:37:28.220 [DEBUG] [Thread-116718] [transport.py] [_log()] userauth is OK
2025-11-03T13:37:28.220 [DEBUG] [Thread-116718] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:37:28.220 [DEBUG] [Thread-116718] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:37:28.221 [DEBUG] [Thread-116718] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:37:28.221 [DEBUG] [Thread-116718] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:37:28.239 [INFO] [Thread-116718] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:37:28.239 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:37:28.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:37:29.068 [DEBUG] [Thread-116718] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:37:29.069 [DEBUG] [Thread-116718] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:37:29.116 [DEBUG] [Thread-116718] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:37:29.116 [DEBUG] [Thread-116718] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:37:29.125 [DEBUG] [Thread-116718] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:37:29.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:37:29.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:37:29.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:37:29.157 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:37:29.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:37:29.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:37:29.169 [DEBUG] [Thread-116718] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:37:38.154 [DEBUG] [Thread-116720 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:37:50.322 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:37:50.324 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:37:53.215 [DEBUG] [Thread-116721 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:37:59.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:37:59.164 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:37:59.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:37:59.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 37, 29), 46.54, 3.3, 0.0, 26.1, 25.02, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:37:59.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:37:29
2025-11-03T13:37:59.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:38:00.082 [DEBUG] [Thread-116722] [transport.py] [_log()] starting thread (client mode): 0xed21d20
2025-11-03T13:38:00.082 [DEBUG] [Thread-116722] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:38:00.104 [DEBUG] [Thread-116722] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:38:00.104 [INFO] [Thread-116722] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:38:00.107 [DEBUG] [Thread-116722] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:38:00.107 [DEBUG] [Thread-116722] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:38:00.107 [DEBUG] [Thread-116722] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:38:00.107 [DEBUG] [Thread-116722] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:38:00.107 [DEBUG] [Thread-116722] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:38:00.107 [DEBUG] [Thread-116722] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:38:00.107 [DEBUG] [Thread-116722] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:38:00.107 [DEBUG] [Thread-116722] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:38:00.107 [DEBUG] [Thread-116722] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:38:00.107 [DEBUG] [Thread-116722] [transport.py] [_log()] client lang: <none>
2025-11-03T13:38:00.107 [DEBUG] [Thread-116722] [transport.py] [_log()] server lang: <none>
2025-11-03T13:38:00.107 [DEBUG] [Thread-116722] [transport.py] [_log()] kex follows: False
2025-11-03T13:38:00.107 [DEBUG] [Thread-116722] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:38:00.107 [DEBUG] [Thread-116722] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:38:00.107 [DEBUG] [Thread-116722] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:38:00.107 [DEBUG] [Thread-116722] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:38:00.107 [DEBUG] [Thread-116722] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:38:00.108 [DEBUG] [Thread-116722] [transport.py] [_log()] Compression: none
2025-11-03T13:38:00.108 [DEBUG] [Thread-116722] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:38:00.125 [DEBUG] [Thread-116722] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:38:00.125 [DEBUG] [Thread-116722] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:38:00.126 [DEBUG] [Thread-116722] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:38:00.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:38:00.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:38:00.128 [DEBUG] [Thread-116722] [transport.py] [_log()] userauth is OK
2025-11-03T13:38:00.128 [DEBUG] [Thread-116722] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:38:00.128 [DEBUG] [Thread-116722] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:38:00.128 [DEBUG] [Thread-116722] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:38:00.128 [DEBUG] [Thread-116722] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:38:00.162 [INFO] [Thread-116722] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:38:00.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:38:00.789 [DEBUG] [Thread-116722] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:38:00.789 [DEBUG] [Thread-116722] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:38:00.789 [DEBUG] [Thread-116722] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:38:00.830 [DEBUG] [Thread-116722] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:38:00.830 [DEBUG] [Thread-116722] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:38:00.834 [DEBUG] [Thread-116722] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:38:00.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:38:00.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:38:00.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:38:00.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:38:00.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:38:00.856 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:38:00.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:38:00.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:38:00.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:38:00.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.484131 -999.00  +25.30  26.42      8  -10.90 1 1 1 1 1   888    0 37.02 10.06 ----- 24.5 26.4 319.6 35.7 30.7 -31.2 30.0 -30.8 30.3 -31.5 31.3 -29.6
2025-11-03T13:38:00.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:38:00.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:38:00.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.484131
2025-11-03T13:38:00.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:38:00.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:38:00.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:38:00.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:38:00.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:38:00.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:37:29', tmtdew=46.54, humidity=3.3, cloud=0.0, wind=26.1, temperature=25.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:37:08.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:38:00.859 [DEBUG] [Thread-116722] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:38:00.942 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:38:00.953 [DEBUG] [Thread-116725] [transport.py] [_log()] starting thread (client mode): 0x11783b20
2025-11-03T13:38:00.953 [DEBUG] [Thread-116725] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:38:00.969 [DEBUG] [Thread-116725] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:38:00.969 [INFO] [Thread-116725] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:38:00.976 [DEBUG] [Thread-116725] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:38:00.976 [DEBUG] [Thread-116725] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:38:00.976 [DEBUG] [Thread-116725] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:38:00.976 [DEBUG] [Thread-116725] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:38:00.976 [DEBUG] [Thread-116725] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:38:00.976 [DEBUG] [Thread-116725] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:38:00.976 [DEBUG] [Thread-116725] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:38:00.976 [DEBUG] [Thread-116725] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:38:00.976 [DEBUG] [Thread-116725] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:38:00.976 [DEBUG] [Thread-116725] [transport.py] [_log()] client lang: <none>
2025-11-03T13:38:00.977 [DEBUG] [Thread-116725] [transport.py] [_log()] server lang: <none>
2025-11-03T13:38:00.977 [DEBUG] [Thread-116725] [transport.py] [_log()] kex follows: False
2025-11-03T13:38:00.977 [DEBUG] [Thread-116725] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:38:00.977 [DEBUG] [Thread-116725] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:38:00.977 [DEBUG] [Thread-116725] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:38:00.977 [DEBUG] [Thread-116725] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:38:00.977 [DEBUG] [Thread-116725] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:38:00.977 [DEBUG] [Thread-116725] [transport.py] [_log()] Compression: none
2025-11-03T13:38:00.977 [DEBUG] [Thread-116725] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:38:01.034 [DEBUG] [Thread-116725] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:38:01.035 [DEBUG] [Thread-116725] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:38:01.035 [DEBUG] [Thread-116725] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:38:01.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:38:01.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:38:01.091 [DEBUG] [Thread-116725] [transport.py] [_log()] userauth is OK
2025-11-03T13:38:01.091 [DEBUG] [Thread-116725] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:38:01.091 [DEBUG] [Thread-116725] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:38:01.092 [DEBUG] [Thread-116725] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:38:01.092 [DEBUG] [Thread-116725] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:38:01.115 [INFO] [Thread-116725] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:38:01.115 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:38:01.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:38:01.971 [DEBUG] [Thread-116725] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:38:01.971 [DEBUG] [Thread-116725] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:38:02.018 [DEBUG] [Thread-116725] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:38:02.018 [DEBUG] [Thread-116725] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:38:02.026 [DEBUG] [Thread-116725] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:38:02.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:38:02.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:38:02.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:38:02.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:38:02.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:38:02.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:38:02.059 [DEBUG] [Thread-116725] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:38:06.891 [DEBUG] [Thread-116727 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:38:08.263 [DEBUG] [Thread-116728 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:38:23.307 [DEBUG] [Thread-116729 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:38:32.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:38:32.083 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:38:32.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:38:32.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 38, 1), 46.63, 3.29, 0.0, 28.71, 25.13, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:38:32.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:38:01
2025-11-03T13:38:32.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:38:33.022 [DEBUG] [Thread-116730] [transport.py] [_log()] starting thread (client mode): 0x11780f40
2025-11-03T13:38:33.022 [DEBUG] [Thread-116730] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:38:33.044 [DEBUG] [Thread-116730] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:38:33.045 [INFO] [Thread-116730] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:38:33.046 [DEBUG] [Thread-116730] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:38:33.046 [DEBUG] [Thread-116730] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:38:33.046 [DEBUG] [Thread-116730] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:38:33.046 [DEBUG] [Thread-116730] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:38:33.046 [DEBUG] [Thread-116730] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:38:33.047 [DEBUG] [Thread-116730] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:38:33.047 [DEBUG] [Thread-116730] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:38:33.047 [DEBUG] [Thread-116730] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:38:33.047 [DEBUG] [Thread-116730] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:38:33.047 [DEBUG] [Thread-116730] [transport.py] [_log()] client lang: <none>
2025-11-03T13:38:33.047 [DEBUG] [Thread-116730] [transport.py] [_log()] server lang: <none>
2025-11-03T13:38:33.047 [DEBUG] [Thread-116730] [transport.py] [_log()] kex follows: False
2025-11-03T13:38:33.047 [DEBUG] [Thread-116730] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:38:33.047 [DEBUG] [Thread-116730] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:38:33.047 [DEBUG] [Thread-116730] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:38:33.047 [DEBUG] [Thread-116730] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:38:33.047 [DEBUG] [Thread-116730] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:38:33.047 [DEBUG] [Thread-116730] [transport.py] [_log()] Compression: none
2025-11-03T13:38:33.047 [DEBUG] [Thread-116730] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:38:33.072 [DEBUG] [Thread-116730] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:38:33.072 [DEBUG] [Thread-116730] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:38:33.073 [DEBUG] [Thread-116730] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:38:33.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:38:33.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:38:33.075 [DEBUG] [Thread-116730] [transport.py] [_log()] userauth is OK
2025-11-03T13:38:33.076 [DEBUG] [Thread-116730] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:38:33.076 [DEBUG] [Thread-116730] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:38:33.076 [DEBUG] [Thread-116730] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:38:33.076 [DEBUG] [Thread-116730] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:38:33.094 [INFO] [Thread-116730] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:38:33.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:38:33.783 [DEBUG] [Thread-116730] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:38:33.783 [DEBUG] [Thread-116730] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:38:33.784 [DEBUG] [Thread-116730] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:38:33.825 [DEBUG] [Thread-116730] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:38:33.825 [DEBUG] [Thread-116730] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:38:33.827 [DEBUG] [Thread-116730] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:38:33.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:38:33.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:38:33.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:38:33.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:38:33.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:38:33.855 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:38:33.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:38:33.855 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:38:33.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:38:33.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.484478 -999.00  +26.10  22.94      8  -10.30 1 1 1 1 1   888    0 36.69 10.91 ----- 27.0 22.9 316.8 33.0 30.9 -30.6 30.2 -29.0 30.6 -29.5 31.3 -29.0
2025-11-03T13:38:33.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:38:33.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:38:33.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.484478
2025-11-03T13:38:33.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:38:33.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:38:33.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:38:33.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:38:33.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:38:33.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:38:01', tmtdew=46.63, humidity=3.29, cloud=0.0, wind=28.71, temperature=25.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:37:38.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:38:33.858 [DEBUG] [Thread-116730] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:38:33.930 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:38:33.943 [DEBUG] [Thread-116733] [transport.py] [_log()] starting thread (client mode): 0xed230a0
2025-11-03T13:38:33.943 [DEBUG] [Thread-116733] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:38:33.959 [DEBUG] [Thread-116733] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:38:33.960 [INFO] [Thread-116733] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:38:33.968 [DEBUG] [Thread-116733] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:38:33.968 [DEBUG] [Thread-116733] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:38:33.968 [DEBUG] [Thread-116733] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:38:33.969 [DEBUG] [Thread-116733] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:38:33.969 [DEBUG] [Thread-116733] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:38:33.969 [DEBUG] [Thread-116733] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:38:33.969 [DEBUG] [Thread-116733] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:38:33.969 [DEBUG] [Thread-116733] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:38:33.969 [DEBUG] [Thread-116733] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:38:33.969 [DEBUG] [Thread-116733] [transport.py] [_log()] client lang: <none>
2025-11-03T13:38:33.969 [DEBUG] [Thread-116733] [transport.py] [_log()] server lang: <none>
2025-11-03T13:38:33.969 [DEBUG] [Thread-116733] [transport.py] [_log()] kex follows: False
2025-11-03T13:38:33.969 [DEBUG] [Thread-116733] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:38:33.969 [DEBUG] [Thread-116733] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:38:33.969 [DEBUG] [Thread-116733] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:38:33.969 [DEBUG] [Thread-116733] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:38:33.969 [DEBUG] [Thread-116733] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:38:33.969 [DEBUG] [Thread-116733] [transport.py] [_log()] Compression: none
2025-11-03T13:38:33.969 [DEBUG] [Thread-116733] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:38:34.028 [DEBUG] [Thread-116733] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:38:34.028 [DEBUG] [Thread-116733] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:38:34.028 [DEBUG] [Thread-116733] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:38:34.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:38:34.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:38:34.089 [DEBUG] [Thread-116733] [transport.py] [_log()] userauth is OK
2025-11-03T13:38:34.089 [DEBUG] [Thread-116733] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:38:34.089 [DEBUG] [Thread-116733] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:38:34.089 [DEBUG] [Thread-116733] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:38:34.089 [DEBUG] [Thread-116733] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:38:34.102 [INFO] [Thread-116733] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:38:34.102 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:38:34.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:38:34.951 [DEBUG] [Thread-116733] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:38:34.951 [DEBUG] [Thread-116733] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:38:34.999 [DEBUG] [Thread-116733] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:38:34.999 [DEBUG] [Thread-116733] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:38:35.008 [DEBUG] [Thread-116733] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:38:35.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:38:35.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:38:35.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:38:35.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:38:35.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:38:35.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:38:35.040 [DEBUG] [Thread-116733] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:38:38.334 [DEBUG] [Thread-116735 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:38:50.476 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:38:50.478 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:38:53.394 [DEBUG] [Thread-116736 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:39:05.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:39:05.062 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:39:05.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:39:05.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 38, 33), 46.2, 3.77, 0.0, 29.78, 25.02, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:39:05.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:38:33
2025-11-03T13:39:05.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:39:06.076 [DEBUG] [Thread-116737] [transport.py] [_log()] starting thread (client mode): 0xed4f130
2025-11-03T13:39:06.076 [DEBUG] [Thread-116737] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:39:06.096 [DEBUG] [Thread-116737] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:39:06.096 [INFO] [Thread-116737] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:39:06.100 [DEBUG] [Thread-116737] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:39:06.100 [DEBUG] [Thread-116737] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:39:06.100 [DEBUG] [Thread-116737] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:39:06.100 [DEBUG] [Thread-116737] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:39:06.100 [DEBUG] [Thread-116737] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:39:06.100 [DEBUG] [Thread-116737] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:39:06.100 [DEBUG] [Thread-116737] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:39:06.100 [DEBUG] [Thread-116737] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:39:06.100 [DEBUG] [Thread-116737] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:39:06.100 [DEBUG] [Thread-116737] [transport.py] [_log()] client lang: <none>
2025-11-03T13:39:06.100 [DEBUG] [Thread-116737] [transport.py] [_log()] server lang: <none>
2025-11-03T13:39:06.100 [DEBUG] [Thread-116737] [transport.py] [_log()] kex follows: False
2025-11-03T13:39:06.100 [DEBUG] [Thread-116737] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:39:06.100 [DEBUG] [Thread-116737] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:39:06.100 [DEBUG] [Thread-116737] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:39:06.100 [DEBUG] [Thread-116737] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:39:06.100 [DEBUG] [Thread-116737] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:39:06.100 [DEBUG] [Thread-116737] [transport.py] [_log()] Compression: none
2025-11-03T13:39:06.100 [DEBUG] [Thread-116737] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:39:06.114 [DEBUG] [Thread-116737] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:39:06.115 [DEBUG] [Thread-116737] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:39:06.115 [DEBUG] [Thread-116737] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:39:06.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:39:06.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:39:06.116 [DEBUG] [Thread-116737] [transport.py] [_log()] userauth is OK
2025-11-03T13:39:06.116 [DEBUG] [Thread-116737] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:39:06.116 [DEBUG] [Thread-116737] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:39:06.116 [DEBUG] [Thread-116737] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:39:06.116 [DEBUG] [Thread-116737] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:39:06.145 [INFO] [Thread-116737] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:39:06.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:39:06.798 [DEBUG] [Thread-116737] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:39:06.798 [DEBUG] [Thread-116737] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:39:06.798 [DEBUG] [Thread-116737] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:39:06.840 [DEBUG] [Thread-116737] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:39:06.840 [DEBUG] [Thread-116737] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:39:06.842 [DEBUG] [Thread-116737] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:39:06.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:39:06.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:39:06.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:39:06.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:39:06.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:39:06.860 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:39:06.860 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:39:06.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:39:06.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:39:06.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.484826 -999.00  +25.90  21.34      7  -10.90 1 1 1 1 1   888    0 36.09 12.15 ----- 26.6 21.3 346.8 30.1 30.9 -31.6 30.2 -30.8 30.6 -29.5 31.4 -30.3
2025-11-03T13:39:06.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:39:06.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:39:06.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.484826
2025-11-03T13:39:06.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:39:06.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:39:06.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:39:06.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:39:06.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:39:06.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:38:33', tmtdew=46.2, humidity=3.77, cloud=0.0, wind=29.78, temperature=25.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:38:08.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:39:06.861 [DEBUG] [Thread-116737] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:39:06.936 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:39:06.948 [DEBUG] [Thread-116740] [transport.py] [_log()] starting thread (client mode): 0x11782650
2025-11-03T13:39:06.948 [DEBUG] [Thread-116740] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:39:06.966 [DEBUG] [Thread-116740] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:39:06.966 [INFO] [Thread-116740] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:39:06.975 [DEBUG] [Thread-116740] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:39:06.975 [DEBUG] [Thread-116740] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:39:06.975 [DEBUG] [Thread-116740] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:39:06.975 [DEBUG] [Thread-116740] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:39:06.975 [DEBUG] [Thread-116740] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:39:06.975 [DEBUG] [Thread-116740] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:39:06.975 [DEBUG] [Thread-116740] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:39:06.975 [DEBUG] [Thread-116740] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:39:06.975 [DEBUG] [Thread-116740] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:39:06.975 [DEBUG] [Thread-116740] [transport.py] [_log()] client lang: <none>
2025-11-03T13:39:06.975 [DEBUG] [Thread-116740] [transport.py] [_log()] server lang: <none>
2025-11-03T13:39:06.976 [DEBUG] [Thread-116740] [transport.py] [_log()] kex follows: False
2025-11-03T13:39:06.976 [DEBUG] [Thread-116740] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:39:06.976 [DEBUG] [Thread-116740] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:39:06.976 [DEBUG] [Thread-116740] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:39:06.976 [DEBUG] [Thread-116740] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:39:06.976 [DEBUG] [Thread-116740] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:39:06.976 [DEBUG] [Thread-116740] [transport.py] [_log()] Compression: none
2025-11-03T13:39:06.976 [DEBUG] [Thread-116740] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:39:07.034 [DEBUG] [Thread-116740] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:39:07.034 [DEBUG] [Thread-116740] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:39:07.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:39:07.035 [DEBUG] [Thread-116740] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:39:07.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:39:07.091 [DEBUG] [Thread-116740] [transport.py] [_log()] userauth is OK
2025-11-03T13:39:07.091 [DEBUG] [Thread-116740] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:39:07.091 [DEBUG] [Thread-116740] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:39:07.091 [DEBUG] [Thread-116740] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:39:07.091 [DEBUG] [Thread-116740] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:39:07.107 [INFO] [Thread-116740] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:39:07.107 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:39:07.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:39:07.146 [DEBUG] [Thread-116742 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:39:07.986 [DEBUG] [Thread-116740] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:39:07.986 [DEBUG] [Thread-116740] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:39:08.034 [DEBUG] [Thread-116740] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:39:08.034 [DEBUG] [Thread-116740] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:39:08.043 [DEBUG] [Thread-116740] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:39:08.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:39:08.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:39:08.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:39:08.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:39:08.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:39:08.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:39:08.076 [DEBUG] [Thread-116740] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:39:08.430 [DEBUG] [Thread-116743 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:39:23.480 [DEBUG] [Thread-116744 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:39:38.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:39:38.099 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:39:38.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:39:38.514 [DEBUG] [Thread-116745 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:39:38.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 39, 6), 46.21, 3.79, 0.0, 36.63, 25.23, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:39:38.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:39:06
2025-11-03T13:39:38.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:39:39.119 [DEBUG] [Thread-116746] [transport.py] [_log()] starting thread (client mode): 0xedd7490
2025-11-03T13:39:39.119 [DEBUG] [Thread-116746] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:39:39.137 [DEBUG] [Thread-116746] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:39:39.138 [INFO] [Thread-116746] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:39:39.141 [DEBUG] [Thread-116746] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:39:39.141 [DEBUG] [Thread-116746] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:39:39.141 [DEBUG] [Thread-116746] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:39:39.141 [DEBUG] [Thread-116746] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:39:39.141 [DEBUG] [Thread-116746] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:39:39.141 [DEBUG] [Thread-116746] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:39:39.141 [DEBUG] [Thread-116746] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:39:39.141 [DEBUG] [Thread-116746] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:39:39.141 [DEBUG] [Thread-116746] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:39:39.141 [DEBUG] [Thread-116746] [transport.py] [_log()] client lang: <none>
2025-11-03T13:39:39.141 [DEBUG] [Thread-116746] [transport.py] [_log()] server lang: <none>
2025-11-03T13:39:39.141 [DEBUG] [Thread-116746] [transport.py] [_log()] kex follows: False
2025-11-03T13:39:39.141 [DEBUG] [Thread-116746] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:39:39.141 [DEBUG] [Thread-116746] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:39:39.141 [DEBUG] [Thread-116746] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:39:39.141 [DEBUG] [Thread-116746] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:39:39.141 [DEBUG] [Thread-116746] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:39:39.141 [DEBUG] [Thread-116746] [transport.py] [_log()] Compression: none
2025-11-03T13:39:39.141 [DEBUG] [Thread-116746] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:39:39.160 [DEBUG] [Thread-116746] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:39:39.161 [DEBUG] [Thread-116746] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:39:39.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:39:39.162 [DEBUG] [Thread-116746] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:39:39.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:39:39.164 [DEBUG] [Thread-116746] [transport.py] [_log()] userauth is OK
2025-11-03T13:39:39.164 [DEBUG] [Thread-116746] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:39:39.164 [DEBUG] [Thread-116746] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:39:39.164 [DEBUG] [Thread-116746] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:39:39.165 [DEBUG] [Thread-116746] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:39:39.191 [INFO] [Thread-116746] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:39:39.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:39:39.924 [DEBUG] [Thread-116746] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:39:39.924 [DEBUG] [Thread-116746] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:39:39.924 [DEBUG] [Thread-116746] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:39:39.965 [DEBUG] [Thread-116746] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:39:39.965 [DEBUG] [Thread-116746] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:39:39.967 [DEBUG] [Thread-116746] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:39:39.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:39:39.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:39:39.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:39:39.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:39:39.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:39:39.985 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:39:39.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:39:39.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:39:39.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:39:39.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.485173 -999.00  +26.10  25.51      8  -10.40 1 1 1 1 1   888    0 36.12 14.87 ----- 31.6 25.5 326.4 35.0 31.0 -30.6 30.2 -29.5 30.7 -31.3 31.5 -29.6
2025-11-03T13:39:39.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:39:39.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:39:39.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.485173
2025-11-03T13:39:39.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:39:39.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:39:39.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:39:39.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:39:39.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:39:39.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:39:06', tmtdew=46.21, humidity=3.79, cloud=0.0, wind=36.63, temperature=25.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:38:38.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:39:39.987 [DEBUG] [Thread-116746] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:39:40.061 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:39:40.072 [DEBUG] [Thread-116749] [transport.py] [_log()] starting thread (client mode): 0x11782cb0
2025-11-03T13:39:40.072 [DEBUG] [Thread-116749] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:39:40.087 [DEBUG] [Thread-116749] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:39:40.087 [INFO] [Thread-116749] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:39:40.095 [DEBUG] [Thread-116749] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:39:40.095 [DEBUG] [Thread-116749] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:39:40.095 [DEBUG] [Thread-116749] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:39:40.095 [DEBUG] [Thread-116749] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:39:40.095 [DEBUG] [Thread-116749] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:39:40.095 [DEBUG] [Thread-116749] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:39:40.095 [DEBUG] [Thread-116749] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:39:40.095 [DEBUG] [Thread-116749] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:39:40.095 [DEBUG] [Thread-116749] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:39:40.095 [DEBUG] [Thread-116749] [transport.py] [_log()] client lang: <none>
2025-11-03T13:39:40.095 [DEBUG] [Thread-116749] [transport.py] [_log()] server lang: <none>
2025-11-03T13:39:40.095 [DEBUG] [Thread-116749] [transport.py] [_log()] kex follows: False
2025-11-03T13:39:40.095 [DEBUG] [Thread-116749] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:39:40.095 [DEBUG] [Thread-116749] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:39:40.095 [DEBUG] [Thread-116749] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:39:40.095 [DEBUG] [Thread-116749] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:39:40.095 [DEBUG] [Thread-116749] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:39:40.095 [DEBUG] [Thread-116749] [transport.py] [_log()] Compression: none
2025-11-03T13:39:40.095 [DEBUG] [Thread-116749] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:39:40.154 [DEBUG] [Thread-116749] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:39:40.155 [DEBUG] [Thread-116749] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:39:40.155 [DEBUG] [Thread-116749] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:39:40.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:39:40.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:39:40.211 [DEBUG] [Thread-116749] [transport.py] [_log()] userauth is OK
2025-11-03T13:39:40.211 [DEBUG] [Thread-116749] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:39:40.211 [DEBUG] [Thread-116749] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:39:40.211 [DEBUG] [Thread-116749] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:39:40.211 [DEBUG] [Thread-116749] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:39:40.227 [INFO] [Thread-116749] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:39:40.227 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:39:40.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:39:41.087 [DEBUG] [Thread-116749] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:39:41.087 [DEBUG] [Thread-116749] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:39:41.134 [DEBUG] [Thread-116749] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:39:41.134 [DEBUG] [Thread-116749] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:39:41.142 [DEBUG] [Thread-116749] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:39:41.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:39:41.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:39:41.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:39:41.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:39:41.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:39:41.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:39:41.174 [DEBUG] [Thread-116749] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:39:50.620 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:39:50.621 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:39:53.546 [DEBUG] [Thread-116751 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:40:07.235 [DEBUG] [Thread-116752 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:40:08.601 [DEBUG] [Thread-116753 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:40:11.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:40:11.189 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:40:11.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:40:11.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 39, 38), 46.54, 3.79, 0.0, 29.48, 25.82, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:40:11.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:39:38
2025-11-03T13:40:11.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:40:12.138 [DEBUG] [Thread-116754] [transport.py] [_log()] starting thread (client mode): 0xed215d0
2025-11-03T13:40:12.138 [DEBUG] [Thread-116754] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:40:12.159 [DEBUG] [Thread-116754] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:40:12.159 [INFO] [Thread-116754] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:40:12.162 [DEBUG] [Thread-116754] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:40:12.162 [DEBUG] [Thread-116754] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:40:12.162 [DEBUG] [Thread-116754] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:40:12.162 [DEBUG] [Thread-116754] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:40:12.162 [DEBUG] [Thread-116754] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:40:12.162 [DEBUG] [Thread-116754] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:40:12.162 [DEBUG] [Thread-116754] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:40:12.162 [DEBUG] [Thread-116754] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:40:12.162 [DEBUG] [Thread-116754] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:40:12.162 [DEBUG] [Thread-116754] [transport.py] [_log()] client lang: <none>
2025-11-03T13:40:12.162 [DEBUG] [Thread-116754] [transport.py] [_log()] server lang: <none>
2025-11-03T13:40:12.162 [DEBUG] [Thread-116754] [transport.py] [_log()] kex follows: False
2025-11-03T13:40:12.162 [DEBUG] [Thread-116754] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:40:12.162 [DEBUG] [Thread-116754] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:40:12.162 [DEBUG] [Thread-116754] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:40:12.162 [DEBUG] [Thread-116754] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:40:12.162 [DEBUG] [Thread-116754] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:40:12.162 [DEBUG] [Thread-116754] [transport.py] [_log()] Compression: none
2025-11-03T13:40:12.162 [DEBUG] [Thread-116754] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:40:12.178 [DEBUG] [Thread-116754] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:40:12.178 [DEBUG] [Thread-116754] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:40:12.178 [DEBUG] [Thread-116754] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:40:12.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:40:12.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:40:12.179 [DEBUG] [Thread-116754] [transport.py] [_log()] userauth is OK
2025-11-03T13:40:12.179 [DEBUG] [Thread-116754] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:40:12.180 [DEBUG] [Thread-116754] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:40:12.180 [DEBUG] [Thread-116754] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:40:12.180 [DEBUG] [Thread-116754] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:40:12.191 [INFO] [Thread-116754] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:40:12.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:40:12.748 [DEBUG] [Thread-116754] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:40:12.749 [DEBUG] [Thread-116754] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:40:12.749 [DEBUG] [Thread-116754] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:40:12.790 [DEBUG] [Thread-116754] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:40:12.790 [DEBUG] [Thread-116754] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:40:12.792 [DEBUG] [Thread-116754] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:40:12.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:40:12.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:40:12.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:40:12.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:40:12.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:40:12.812 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:40:12.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:40:12.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:40:12.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:40:12.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.485867 -999.00  +25.80  33.23      8  -10.70 1 1 2 1 1   888    0 35.96 19.58 ----- 30.3 33.2 11.0 40.5 30.8 -31.9 30.1 -31.5 30.6 -31.0 31.5 -31.7
2025-11-03T13:40:12.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:40:12.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:40:12.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.485867
2025-11-03T13:40:12.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:40:12.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:40:12.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:40:12.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:40:12.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:40:12.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:39:38', tmtdew=46.54, humidity=3.79, cloud=0.0, wind=29.48, temperature=25.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:39:38.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:40:12.813 [DEBUG] [Thread-116754] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:40:12.888 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:40:12.900 [DEBUG] [Thread-116757] [transport.py] [_log()] starting thread (client mode): 0x11783be0
2025-11-03T13:40:12.900 [DEBUG] [Thread-116757] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:40:12.915 [DEBUG] [Thread-116757] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:40:12.916 [INFO] [Thread-116757] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:40:12.923 [DEBUG] [Thread-116757] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:40:12.923 [DEBUG] [Thread-116757] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:40:12.923 [DEBUG] [Thread-116757] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:40:12.923 [DEBUG] [Thread-116757] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:40:12.923 [DEBUG] [Thread-116757] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:40:12.923 [DEBUG] [Thread-116757] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:40:12.923 [DEBUG] [Thread-116757] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:40:12.923 [DEBUG] [Thread-116757] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:40:12.923 [DEBUG] [Thread-116757] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:40:12.923 [DEBUG] [Thread-116757] [transport.py] [_log()] client lang: <none>
2025-11-03T13:40:12.923 [DEBUG] [Thread-116757] [transport.py] [_log()] server lang: <none>
2025-11-03T13:40:12.923 [DEBUG] [Thread-116757] [transport.py] [_log()] kex follows: False
2025-11-03T13:40:12.923 [DEBUG] [Thread-116757] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:40:12.923 [DEBUG] [Thread-116757] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:40:12.923 [DEBUG] [Thread-116757] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:40:12.923 [DEBUG] [Thread-116757] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:40:12.923 [DEBUG] [Thread-116757] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:40:12.923 [DEBUG] [Thread-116757] [transport.py] [_log()] Compression: none
2025-11-03T13:40:12.923 [DEBUG] [Thread-116757] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:40:12.982 [DEBUG] [Thread-116757] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:40:12.982 [DEBUG] [Thread-116757] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:40:12.982 [DEBUG] [Thread-116757] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:40:12.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:40:12.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:40:13.039 [DEBUG] [Thread-116757] [transport.py] [_log()] userauth is OK
2025-11-03T13:40:13.039 [DEBUG] [Thread-116757] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:40:13.039 [DEBUG] [Thread-116757] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:40:13.039 [DEBUG] [Thread-116757] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:40:13.039 [DEBUG] [Thread-116757] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:40:13.053 [INFO] [Thread-116757] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:40:13.053 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:40:13.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:40:13.917 [DEBUG] [Thread-116757] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:40:13.917 [DEBUG] [Thread-116757] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:40:13.966 [DEBUG] [Thread-116757] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:40:13.966 [DEBUG] [Thread-116757] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:40:13.974 [DEBUG] [Thread-116757] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:40:13.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:40:13.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:40:13.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:40:13.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:40:13.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:40:13.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:40:14.007 [DEBUG] [Thread-116757] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:40:23.639 [DEBUG] [Thread-116759 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:40:38.684 [DEBUG] [Thread-116760 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:40:44.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:40:44.012 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:40:44.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:40:44.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 40, 11), 46.83, 3.7, 0.0, 30.45, 25.86, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:40:44.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:40:11
2025-11-03T13:40:44.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:40:45.043 [DEBUG] [Thread-116761] [transport.py] [_log()] starting thread (client mode): 0xed21f90
2025-11-03T13:40:45.043 [DEBUG] [Thread-116761] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:40:45.064 [DEBUG] [Thread-116761] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:40:45.064 [INFO] [Thread-116761] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:40:45.067 [DEBUG] [Thread-116761] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:40:45.067 [DEBUG] [Thread-116761] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:40:45.067 [DEBUG] [Thread-116761] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:40:45.067 [DEBUG] [Thread-116761] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:40:45.067 [DEBUG] [Thread-116761] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:40:45.067 [DEBUG] [Thread-116761] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:40:45.067 [DEBUG] [Thread-116761] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:40:45.067 [DEBUG] [Thread-116761] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:40:45.067 [DEBUG] [Thread-116761] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:40:45.067 [DEBUG] [Thread-116761] [transport.py] [_log()] client lang: <none>
2025-11-03T13:40:45.067 [DEBUG] [Thread-116761] [transport.py] [_log()] server lang: <none>
2025-11-03T13:40:45.067 [DEBUG] [Thread-116761] [transport.py] [_log()] kex follows: False
2025-11-03T13:40:45.067 [DEBUG] [Thread-116761] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:40:45.067 [DEBUG] [Thread-116761] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:40:45.067 [DEBUG] [Thread-116761] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:40:45.067 [DEBUG] [Thread-116761] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:40:45.067 [DEBUG] [Thread-116761] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:40:45.067 [DEBUG] [Thread-116761] [transport.py] [_log()] Compression: none
2025-11-03T13:40:45.067 [DEBUG] [Thread-116761] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:40:45.082 [DEBUG] [Thread-116761] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:40:45.082 [DEBUG] [Thread-116761] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:40:45.082 [DEBUG] [Thread-116761] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:40:45.082 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:40:45.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:40:45.083 [DEBUG] [Thread-116761] [transport.py] [_log()] userauth is OK
2025-11-03T13:40:45.083 [DEBUG] [Thread-116761] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:40:45.083 [DEBUG] [Thread-116761] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:40:45.083 [DEBUG] [Thread-116761] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:40:45.083 [DEBUG] [Thread-116761] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:40:45.110 [INFO] [Thread-116761] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:40:45.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:40:45.733 [DEBUG] [Thread-116761] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:40:45.733 [DEBUG] [Thread-116761] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:40:45.733 [DEBUG] [Thread-116761] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:40:45.776 [DEBUG] [Thread-116761] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:40:45.776 [DEBUG] [Thread-116761] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:40:45.778 [DEBUG] [Thread-116761] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:40:45.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:40:45.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:40:45.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:40:45.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:40:45.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:40:45.796 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:40:45.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:40:45.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:40:45.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:40:45.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.486214 -999.00  +26.20  26.24      8  -10.60 1 1 1 1 1   888    0 37.25 22.36 ----- 36.8 26.2 343.8 41.3 30.8 -31.8 30.1 -31.4 30.6 -29.7 31.3 -35.8
2025-11-03T13:40:45.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:40:45.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:40:45.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.486214
2025-11-03T13:40:45.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:40:45.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:40:45.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:40:45.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:40:45.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:40:45.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:40:11', tmtdew=46.83, humidity=3.7, cloud=0.0, wind=30.45, temperature=25.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:40:08.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:40:45.796 [DEBUG] [Thread-116761] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:40:45.871 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:40:45.883 [DEBUG] [Thread-116764] [transport.py] [_log()] starting thread (client mode): 0xed20b80
2025-11-03T13:40:45.883 [DEBUG] [Thread-116764] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:40:45.899 [DEBUG] [Thread-116764] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:40:45.899 [INFO] [Thread-116764] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:40:45.906 [DEBUG] [Thread-116764] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:40:45.906 [DEBUG] [Thread-116764] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:40:45.906 [DEBUG] [Thread-116764] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:40:45.906 [DEBUG] [Thread-116764] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:40:45.906 [DEBUG] [Thread-116764] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:40:45.906 [DEBUG] [Thread-116764] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:40:45.906 [DEBUG] [Thread-116764] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:40:45.906 [DEBUG] [Thread-116764] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:40:45.906 [DEBUG] [Thread-116764] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:40:45.906 [DEBUG] [Thread-116764] [transport.py] [_log()] client lang: <none>
2025-11-03T13:40:45.907 [DEBUG] [Thread-116764] [transport.py] [_log()] server lang: <none>
2025-11-03T13:40:45.907 [DEBUG] [Thread-116764] [transport.py] [_log()] kex follows: False
2025-11-03T13:40:45.907 [DEBUG] [Thread-116764] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:40:45.907 [DEBUG] [Thread-116764] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:40:45.907 [DEBUG] [Thread-116764] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:40:45.907 [DEBUG] [Thread-116764] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:40:45.907 [DEBUG] [Thread-116764] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:40:45.907 [DEBUG] [Thread-116764] [transport.py] [_log()] Compression: none
2025-11-03T13:40:45.907 [DEBUG] [Thread-116764] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:40:45.962 [DEBUG] [Thread-116764] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:40:45.962 [DEBUG] [Thread-116764] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:40:45.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:40:45.962 [DEBUG] [Thread-116764] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:40:45.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:40:46.019 [DEBUG] [Thread-116764] [transport.py] [_log()] userauth is OK
2025-11-03T13:40:46.019 [DEBUG] [Thread-116764] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:40:46.019 [DEBUG] [Thread-116764] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:40:46.019 [DEBUG] [Thread-116764] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:40:46.019 [DEBUG] [Thread-116764] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:40:46.037 [INFO] [Thread-116764] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:40:46.037 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:40:46.037 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:40:46.911 [DEBUG] [Thread-116764] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:40:46.912 [DEBUG] [Thread-116764] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:40:46.960 [DEBUG] [Thread-116764] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:40:46.960 [DEBUG] [Thread-116764] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:40:46.969 [DEBUG] [Thread-116764] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:40:46.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:40:46.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:40:46.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:40:46.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:40:46.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:40:46.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:40:47.007 [DEBUG] [Thread-116764] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:40:50.762 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:40:50.763 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:40:53.730 [DEBUG] [Thread-116766 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:41:07.300 [DEBUG] [Thread-116767 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:41:08.776 [DEBUG] [Thread-116768 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:41:17.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:41:17.029 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:41:17.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:41:17.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 40, 43), 46.51, 3.84, 0.0, 30.61, 26.25, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:41:17.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:40:43
2025-11-03T13:41:17.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:41:18.074 [DEBUG] [Thread-116769] [transport.py] [_log()] starting thread (client mode): 0xed2e590
2025-11-03T13:41:18.074 [DEBUG] [Thread-116769] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:41:18.089 [DEBUG] [Thread-116769] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:41:18.089 [INFO] [Thread-116769] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:41:18.092 [DEBUG] [Thread-116769] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:41:18.092 [DEBUG] [Thread-116769] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:41:18.092 [DEBUG] [Thread-116769] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:41:18.092 [DEBUG] [Thread-116769] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:41:18.092 [DEBUG] [Thread-116769] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:41:18.092 [DEBUG] [Thread-116769] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:41:18.092 [DEBUG] [Thread-116769] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:41:18.092 [DEBUG] [Thread-116769] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:41:18.092 [DEBUG] [Thread-116769] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:41:18.092 [DEBUG] [Thread-116769] [transport.py] [_log()] client lang: <none>
2025-11-03T13:41:18.092 [DEBUG] [Thread-116769] [transport.py] [_log()] server lang: <none>
2025-11-03T13:41:18.092 [DEBUG] [Thread-116769] [transport.py] [_log()] kex follows: False
2025-11-03T13:41:18.092 [DEBUG] [Thread-116769] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:41:18.092 [DEBUG] [Thread-116769] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:41:18.093 [DEBUG] [Thread-116769] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:41:18.093 [DEBUG] [Thread-116769] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:41:18.093 [DEBUG] [Thread-116769] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:41:18.093 [DEBUG] [Thread-116769] [transport.py] [_log()] Compression: none
2025-11-03T13:41:18.093 [DEBUG] [Thread-116769] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:41:18.109 [DEBUG] [Thread-116769] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:41:18.109 [DEBUG] [Thread-116769] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:41:18.109 [DEBUG] [Thread-116769] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:41:18.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:41:18.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:41:18.110 [DEBUG] [Thread-116769] [transport.py] [_log()] userauth is OK
2025-11-03T13:41:18.110 [DEBUG] [Thread-116769] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:41:18.110 [DEBUG] [Thread-116769] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:41:18.110 [DEBUG] [Thread-116769] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:41:18.110 [DEBUG] [Thread-116769] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:41:18.119 [INFO] [Thread-116769] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:41:18.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:41:18.752 [DEBUG] [Thread-116769] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:41:18.752 [DEBUG] [Thread-116769] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:41:18.753 [DEBUG] [Thread-116769] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:41:18.794 [DEBUG] [Thread-116769] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:41:18.794 [DEBUG] [Thread-116769] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:41:18.796 [DEBUG] [Thread-116769] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:41:18.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:41:18.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:41:18.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:41:18.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:41:18.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:41:18.813 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:41:18.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:41:18.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:41:18.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:41:18.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.486562 -999.00  +25.80  37.55      8  -10.30 1 1 2 1 1   888    0 36.52 24.29 ----- 28.4 37.5 322.4 51.1 30.7 -31.8 30.0 -30.1 30.6 -30.0 31.2 -30.1
2025-11-03T13:41:18.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:41:18.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:41:18.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.486562
2025-11-03T13:41:18.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:41:18.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:41:18.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:41:18.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:41:18.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:41:18.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:40:43', tmtdew=46.51, humidity=3.84, cloud=0.0, wind=30.61, temperature=26.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:40:38.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:41:18.814 [DEBUG] [Thread-116769] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:41:18.888 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:41:18.900 [DEBUG] [Thread-116772] [transport.py] [_log()] starting thread (client mode): 0xed2f880
2025-11-03T13:41:18.900 [DEBUG] [Thread-116772] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:41:18.916 [DEBUG] [Thread-116772] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:41:18.916 [INFO] [Thread-116772] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:41:18.923 [DEBUG] [Thread-116772] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:41:18.924 [DEBUG] [Thread-116772] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:41:18.924 [DEBUG] [Thread-116772] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:41:18.924 [DEBUG] [Thread-116772] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:41:18.924 [DEBUG] [Thread-116772] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:41:18.924 [DEBUG] [Thread-116772] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:41:18.924 [DEBUG] [Thread-116772] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:41:18.924 [DEBUG] [Thread-116772] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:41:18.924 [DEBUG] [Thread-116772] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:41:18.924 [DEBUG] [Thread-116772] [transport.py] [_log()] client lang: <none>
2025-11-03T13:41:18.924 [DEBUG] [Thread-116772] [transport.py] [_log()] server lang: <none>
2025-11-03T13:41:18.924 [DEBUG] [Thread-116772] [transport.py] [_log()] kex follows: False
2025-11-03T13:41:18.924 [DEBUG] [Thread-116772] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:41:18.924 [DEBUG] [Thread-116772] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:41:18.924 [DEBUG] [Thread-116772] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:41:18.924 [DEBUG] [Thread-116772] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:41:18.924 [DEBUG] [Thread-116772] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:41:18.924 [DEBUG] [Thread-116772] [transport.py] [_log()] Compression: none
2025-11-03T13:41:18.925 [DEBUG] [Thread-116772] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:41:18.983 [DEBUG] [Thread-116772] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:41:18.984 [DEBUG] [Thread-116772] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:41:18.984 [DEBUG] [Thread-116772] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:41:18.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:41:18.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:41:19.039 [DEBUG] [Thread-116772] [transport.py] [_log()] userauth is OK
2025-11-03T13:41:19.040 [DEBUG] [Thread-116772] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:41:19.040 [DEBUG] [Thread-116772] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:41:19.040 [DEBUG] [Thread-116772] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:41:19.040 [DEBUG] [Thread-116772] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:41:19.061 [INFO] [Thread-116772] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:41:19.061 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:41:19.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:41:19.922 [DEBUG] [Thread-116772] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:41:19.922 [DEBUG] [Thread-116772] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:41:19.970 [DEBUG] [Thread-116772] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:41:19.970 [DEBUG] [Thread-116772] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:41:19.982 [DEBUG] [Thread-116772] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:41:19.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:41:19.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:41:19.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:41:20.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:41:20.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:41:20.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:41:20.015 [DEBUG] [Thread-116772] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:41:23.809 [DEBUG] [Thread-116774 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:41:38.858 [DEBUG] [Thread-116775 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:41:50.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:41:50.037 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:41:50.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:41:50.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 41, 16), 46.27, 3.92, 0.0, 23.47, 26.33, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:41:50.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:41:16
2025-11-03T13:41:50.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:41:50.904 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:41:50.904 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:41:51.010 [DEBUG] [Thread-116776] [transport.py] [_log()] starting thread (client mode): 0xed2c490
2025-11-03T13:41:51.011 [DEBUG] [Thread-116776] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:41:51.031 [DEBUG] [Thread-116776] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:41:51.031 [INFO] [Thread-116776] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:41:51.033 [DEBUG] [Thread-116776] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:41:51.033 [DEBUG] [Thread-116776] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:41:51.033 [DEBUG] [Thread-116776] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:41:51.033 [DEBUG] [Thread-116776] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:41:51.033 [DEBUG] [Thread-116776] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:41:51.033 [DEBUG] [Thread-116776] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:41:51.033 [DEBUG] [Thread-116776] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:41:51.033 [DEBUG] [Thread-116776] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:41:51.033 [DEBUG] [Thread-116776] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:41:51.033 [DEBUG] [Thread-116776] [transport.py] [_log()] client lang: <none>
2025-11-03T13:41:51.033 [DEBUG] [Thread-116776] [transport.py] [_log()] server lang: <none>
2025-11-03T13:41:51.033 [DEBUG] [Thread-116776] [transport.py] [_log()] kex follows: False
2025-11-03T13:41:51.033 [DEBUG] [Thread-116776] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:41:51.033 [DEBUG] [Thread-116776] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:41:51.033 [DEBUG] [Thread-116776] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:41:51.033 [DEBUG] [Thread-116776] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:41:51.033 [DEBUG] [Thread-116776] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:41:51.033 [DEBUG] [Thread-116776] [transport.py] [_log()] Compression: none
2025-11-03T13:41:51.033 [DEBUG] [Thread-116776] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:41:51.040 [DEBUG] [Thread-116776] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:41:51.040 [DEBUG] [Thread-116776] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:41:51.040 [DEBUG] [Thread-116776] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:41:51.041 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:41:51.041 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:41:51.041 [DEBUG] [Thread-116776] [transport.py] [_log()] userauth is OK
2025-11-03T13:41:51.041 [DEBUG] [Thread-116776] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:41:51.041 [DEBUG] [Thread-116776] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:41:51.041 [DEBUG] [Thread-116776] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:41:51.041 [DEBUG] [Thread-116776] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:41:51.051 [INFO] [Thread-116776] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:41:51.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:41:51.700 [DEBUG] [Thread-116776] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:41:51.700 [DEBUG] [Thread-116776] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:41:51.701 [DEBUG] [Thread-116776] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:41:51.741 [DEBUG] [Thread-116776] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:41:51.741 [DEBUG] [Thread-116776] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:41:51.745 [DEBUG] [Thread-116776] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:41:51.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:41:51.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:41:51.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:41:51.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:41:51.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:41:51.769 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:41:51.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:41:51.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:41:51.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:41:51.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.486909 -999.00  +25.70  25.37      8  -10.30 1 1 1 1 1   888    0 36.67 24.10 ----- 22.7 25.4 346.8 37.5 30.6 -31.4 29.8 -31.5 30.5 -30.0 31.1 -30.0
2025-11-03T13:41:51.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:41:51.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:41:51.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.486909
2025-11-03T13:41:51.778 [DEBUG] [Thread-116776] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:41:51.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:41:51.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:41:51.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:41:51.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:41:51.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:41:51.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:41:16', tmtdew=46.27, humidity=3.92, cloud=0.0, wind=23.47, temperature=26.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:41:08.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:41:51.865 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:41:51.876 [DEBUG] [Thread-116779] [transport.py] [_log()] starting thread (client mode): 0xedd7e20
2025-11-03T13:41:51.877 [DEBUG] [Thread-116779] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:41:51.893 [DEBUG] [Thread-116779] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:41:51.893 [INFO] [Thread-116779] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:41:51.901 [DEBUG] [Thread-116779] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:41:51.902 [DEBUG] [Thread-116779] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:41:51.902 [DEBUG] [Thread-116779] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:41:51.902 [DEBUG] [Thread-116779] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:41:51.902 [DEBUG] [Thread-116779] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:41:51.902 [DEBUG] [Thread-116779] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:41:51.902 [DEBUG] [Thread-116779] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:41:51.903 [DEBUG] [Thread-116779] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:41:51.903 [DEBUG] [Thread-116779] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:41:51.903 [DEBUG] [Thread-116779] [transport.py] [_log()] client lang: <none>
2025-11-03T13:41:51.903 [DEBUG] [Thread-116779] [transport.py] [_log()] server lang: <none>
2025-11-03T13:41:51.903 [DEBUG] [Thread-116779] [transport.py] [_log()] kex follows: False
2025-11-03T13:41:51.903 [DEBUG] [Thread-116779] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:41:51.903 [DEBUG] [Thread-116779] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:41:51.903 [DEBUG] [Thread-116779] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:41:51.903 [DEBUG] [Thread-116779] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:41:51.903 [DEBUG] [Thread-116779] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:41:51.903 [DEBUG] [Thread-116779] [transport.py] [_log()] Compression: none
2025-11-03T13:41:51.904 [DEBUG] [Thread-116779] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:41:51.960 [DEBUG] [Thread-116779] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:41:51.961 [DEBUG] [Thread-116779] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:41:51.961 [DEBUG] [Thread-116779] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:41:51.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:41:51.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:41:52.020 [DEBUG] [Thread-116779] [transport.py] [_log()] userauth is OK
2025-11-03T13:41:52.020 [DEBUG] [Thread-116779] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:41:52.020 [DEBUG] [Thread-116779] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:41:52.020 [DEBUG] [Thread-116779] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:41:52.021 [DEBUG] [Thread-116779] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:41:52.041 [INFO] [Thread-116779] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:41:52.042 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:41:52.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:41:52.902 [DEBUG] [Thread-116779] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:41:52.903 [DEBUG] [Thread-116779] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:41:52.950 [DEBUG] [Thread-116779] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:41:52.950 [DEBUG] [Thread-116779] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:41:52.964 [DEBUG] [Thread-116779] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:41:52.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:41:52.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:41:52.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:41:53.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:41:53.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:41:53.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:41:53.013 [DEBUG] [Thread-116779] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:41:53.883 [DEBUG] [Thread-116781 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:42:07.373 [DEBUG] [Thread-116782 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:42:08.935 [DEBUG] [Thread-116783 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:42:23.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:42:23.005 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:42:23.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:42:23.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 41, 48), 46.55, 3.79, 0.0, 33.74, 26.16, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:42:23.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:41:48
2025-11-03T13:42:23.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:42:23.953 [DEBUG] [Thread-116784] [transport.py] [_log()] starting thread (client mode): 0xed23160
2025-11-03T13:42:23.953 [DEBUG] [Thread-116784] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:42:23.977 [DEBUG] [Thread-116785 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:42:23.978 [DEBUG] [Thread-116784] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:42:23.978 [INFO] [Thread-116784] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:42:23.979 [DEBUG] [Thread-116784] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:42:23.979 [DEBUG] [Thread-116784] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:42:23.979 [DEBUG] [Thread-116784] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:42:23.979 [DEBUG] [Thread-116784] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:42:23.979 [DEBUG] [Thread-116784] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:42:23.980 [DEBUG] [Thread-116784] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:42:23.980 [DEBUG] [Thread-116784] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:42:23.980 [DEBUG] [Thread-116784] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:42:23.980 [DEBUG] [Thread-116784] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:42:23.980 [DEBUG] [Thread-116784] [transport.py] [_log()] client lang: <none>
2025-11-03T13:42:23.980 [DEBUG] [Thread-116784] [transport.py] [_log()] server lang: <none>
2025-11-03T13:42:23.980 [DEBUG] [Thread-116784] [transport.py] [_log()] kex follows: False
2025-11-03T13:42:23.980 [DEBUG] [Thread-116784] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:42:23.980 [DEBUG] [Thread-116784] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:42:23.980 [DEBUG] [Thread-116784] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:42:23.980 [DEBUG] [Thread-116784] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:42:23.980 [DEBUG] [Thread-116784] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:42:23.981 [DEBUG] [Thread-116784] [transport.py] [_log()] Compression: none
2025-11-03T13:42:23.981 [DEBUG] [Thread-116784] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:42:23.990 [DEBUG] [Thread-116784] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:42:23.991 [DEBUG] [Thread-116784] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:42:23.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:42:23.992 [DEBUG] [Thread-116784] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:42:23.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:42:23.994 [DEBUG] [Thread-116784] [transport.py] [_log()] userauth is OK
2025-11-03T13:42:23.994 [DEBUG] [Thread-116784] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:42:23.994 [DEBUG] [Thread-116784] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:42:23.994 [DEBUG] [Thread-116784] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:42:23.994 [DEBUG] [Thread-116784] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:42:24.008 [INFO] [Thread-116784] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:42:24.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:42:24.619 [DEBUG] [Thread-116784] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:42:24.619 [DEBUG] [Thread-116784] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:42:24.619 [DEBUG] [Thread-116784] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:42:24.660 [DEBUG] [Thread-116784] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:42:24.660 [DEBUG] [Thread-116784] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:42:24.663 [DEBUG] [Thread-116784] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:42:24.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:42:24.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:42:24.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:42:24.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:42:24.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:42:24.680 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:42:24.680 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:42:24.680 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:42:24.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:42:24.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.487256 -999.00  +25.20  37.25      8  -10.80 1 1 2 1 1   888    0 36.56 27.20 ----- 26.7 37.2 337.6 46.9 30.4 -31.7 29.7 -32.2 30.3 -31.1 31.0 -31.8
2025-11-03T13:42:24.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:42:24.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:42:24.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.487256
2025-11-03T13:42:24.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:42:24.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:42:24.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:42:24.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:42:24.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:42:24.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:41:48', tmtdew=46.55, humidity=3.79, cloud=0.0, wind=33.74, temperature=26.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:41:38.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:42:24.681 [DEBUG] [Thread-116784] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:42:24.753 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:42:24.766 [DEBUG] [Thread-116788] [transport.py] [_log()] starting thread (client mode): 0x117bf400
2025-11-03T13:42:24.766 [DEBUG] [Thread-116788] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:42:24.784 [DEBUG] [Thread-116788] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:42:24.784 [INFO] [Thread-116788] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:42:24.792 [DEBUG] [Thread-116788] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:42:24.792 [DEBUG] [Thread-116788] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:42:24.792 [DEBUG] [Thread-116788] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:42:24.792 [DEBUG] [Thread-116788] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:42:24.792 [DEBUG] [Thread-116788] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:42:24.792 [DEBUG] [Thread-116788] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:42:24.792 [DEBUG] [Thread-116788] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:42:24.792 [DEBUG] [Thread-116788] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:42:24.792 [DEBUG] [Thread-116788] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:42:24.792 [DEBUG] [Thread-116788] [transport.py] [_log()] client lang: <none>
2025-11-03T13:42:24.792 [DEBUG] [Thread-116788] [transport.py] [_log()] server lang: <none>
2025-11-03T13:42:24.792 [DEBUG] [Thread-116788] [transport.py] [_log()] kex follows: False
2025-11-03T13:42:24.792 [DEBUG] [Thread-116788] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:42:24.792 [DEBUG] [Thread-116788] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:42:24.792 [DEBUG] [Thread-116788] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:42:24.792 [DEBUG] [Thread-116788] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:42:24.801 [DEBUG] [Thread-116788] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:42:24.801 [DEBUG] [Thread-116788] [transport.py] [_log()] Compression: none
2025-11-03T13:42:24.801 [DEBUG] [Thread-116788] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:42:24.850 [DEBUG] [Thread-116788] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:42:24.850 [DEBUG] [Thread-116788] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:42:24.850 [DEBUG] [Thread-116788] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:42:24.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:42:24.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:42:24.907 [DEBUG] [Thread-116788] [transport.py] [_log()] userauth is OK
2025-11-03T13:42:24.907 [DEBUG] [Thread-116788] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:42:24.907 [DEBUG] [Thread-116788] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:42:24.907 [DEBUG] [Thread-116788] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:42:24.907 [DEBUG] [Thread-116788] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:42:24.921 [INFO] [Thread-116788] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:42:24.921 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:42:24.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:42:25.773 [DEBUG] [Thread-116788] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:42:25.773 [DEBUG] [Thread-116788] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:42:25.821 [DEBUG] [Thread-116788] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:42:25.821 [DEBUG] [Thread-116788] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:42:25.831 [DEBUG] [Thread-116788] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:42:25.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:42:25.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:42:25.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:42:25.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:42:25.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:42:25.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:42:25.867 [DEBUG] [Thread-116788] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:42:39.021 [DEBUG] [Thread-116790 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:42:51.045 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:42:51.055 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:42:54.067 [DEBUG] [Thread-116791 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:42:55.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:42:55.890 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:42:55.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:42:56.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 42, 52), 47.1, 3.59, 0.0, 30.75, 26.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:42:56.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:42:52
2025-11-03T13:42:56.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:42:56.920 [DEBUG] [Thread-116792] [transport.py] [_log()] starting thread (client mode): 0xed2d390
2025-11-03T13:42:56.920 [DEBUG] [Thread-116792] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:42:56.939 [DEBUG] [Thread-116792] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:42:56.939 [INFO] [Thread-116792] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:42:56.942 [DEBUG] [Thread-116792] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:42:56.942 [DEBUG] [Thread-116792] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:42:56.942 [DEBUG] [Thread-116792] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:42:56.943 [DEBUG] [Thread-116792] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:42:56.943 [DEBUG] [Thread-116792] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:42:56.943 [DEBUG] [Thread-116792] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:42:56.943 [DEBUG] [Thread-116792] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:42:56.943 [DEBUG] [Thread-116792] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:42:56.943 [DEBUG] [Thread-116792] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:42:56.943 [DEBUG] [Thread-116792] [transport.py] [_log()] client lang: <none>
2025-11-03T13:42:56.943 [DEBUG] [Thread-116792] [transport.py] [_log()] server lang: <none>
2025-11-03T13:42:56.943 [DEBUG] [Thread-116792] [transport.py] [_log()] kex follows: False
2025-11-03T13:42:56.943 [DEBUG] [Thread-116792] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:42:56.943 [DEBUG] [Thread-116792] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:42:56.943 [DEBUG] [Thread-116792] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:42:56.943 [DEBUG] [Thread-116792] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:42:56.943 [DEBUG] [Thread-116792] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:42:56.943 [DEBUG] [Thread-116792] [transport.py] [_log()] Compression: none
2025-11-03T13:42:56.943 [DEBUG] [Thread-116792] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:42:56.959 [DEBUG] [Thread-116792] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:42:56.959 [DEBUG] [Thread-116792] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:42:56.960 [DEBUG] [Thread-116792] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:42:56.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:42:56.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:42:56.961 [DEBUG] [Thread-116792] [transport.py] [_log()] userauth is OK
2025-11-03T13:42:56.961 [DEBUG] [Thread-116792] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:42:56.961 [DEBUG] [Thread-116792] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:42:56.961 [DEBUG] [Thread-116792] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:42:56.961 [DEBUG] [Thread-116792] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:42:56.976 [INFO] [Thread-116792] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:42:56.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:42:57.601 [DEBUG] [Thread-116792] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:42:57.601 [DEBUG] [Thread-116792] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:42:57.601 [DEBUG] [Thread-116792] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:42:57.643 [DEBUG] [Thread-116792] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:42:57.643 [DEBUG] [Thread-116792] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:42:57.645 [DEBUG] [Thread-116792] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:42:57.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:42:57.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:42:57.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:42:57.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:42:57.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:42:57.663 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:42:57.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:42:57.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:42:57.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:42:57.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.487603 -999.00  +25.40  27.48      8  -10.30 1 1 1 1 1   888    0 36.83 26.59 ----- 33.8 27.5 306.6 37.2 30.5 -31.7 29.8 -30.3 30.4 -29.2 30.9 -29.7
2025-11-03T13:42:57.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:42:57.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:42:57.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.487603
2025-11-03T13:42:57.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:42:57.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:42:57.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:42:57.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:42:57.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:42:57.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:42:52', tmtdew=47.1, humidity=3.59, cloud=0.0, wind=30.75, temperature=26.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:42:08.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:42:57.664 [DEBUG] [Thread-116792] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:42:57.739 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:42:57.748 [DEBUG] [Thread-116795] [transport.py] [_log()] starting thread (client mode): 0xed2f280
2025-11-03T13:42:57.748 [DEBUG] [Thread-116795] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:42:57.763 [DEBUG] [Thread-116795] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:42:57.763 [INFO] [Thread-116795] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:42:57.770 [DEBUG] [Thread-116795] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:42:57.771 [DEBUG] [Thread-116795] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:42:57.771 [DEBUG] [Thread-116795] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:42:57.771 [DEBUG] [Thread-116795] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:42:57.771 [DEBUG] [Thread-116795] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:42:57.771 [DEBUG] [Thread-116795] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:42:57.771 [DEBUG] [Thread-116795] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:42:57.771 [DEBUG] [Thread-116795] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:42:57.771 [DEBUG] [Thread-116795] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:42:57.771 [DEBUG] [Thread-116795] [transport.py] [_log()] client lang: <none>
2025-11-03T13:42:57.771 [DEBUG] [Thread-116795] [transport.py] [_log()] server lang: <none>
2025-11-03T13:42:57.771 [DEBUG] [Thread-116795] [transport.py] [_log()] kex follows: False
2025-11-03T13:42:57.771 [DEBUG] [Thread-116795] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:42:57.771 [DEBUG] [Thread-116795] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:42:57.771 [DEBUG] [Thread-116795] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:42:57.771 [DEBUG] [Thread-116795] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:42:57.771 [DEBUG] [Thread-116795] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:42:57.771 [DEBUG] [Thread-116795] [transport.py] [_log()] Compression: none
2025-11-03T13:42:57.771 [DEBUG] [Thread-116795] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:42:57.826 [DEBUG] [Thread-116795] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:42:57.826 [DEBUG] [Thread-116795] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:42:57.826 [DEBUG] [Thread-116795] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:42:57.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:42:57.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:42:57.883 [DEBUG] [Thread-116795] [transport.py] [_log()] userauth is OK
2025-11-03T13:42:57.883 [DEBUG] [Thread-116795] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:42:57.883 [DEBUG] [Thread-116795] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:42:57.883 [DEBUG] [Thread-116795] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:42:57.883 [DEBUG] [Thread-116795] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:42:57.897 [INFO] [Thread-116795] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:42:57.897 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:42:57.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:42:58.748 [DEBUG] [Thread-116795] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:42:58.748 [DEBUG] [Thread-116795] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:42:58.795 [DEBUG] [Thread-116795] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:42:58.795 [DEBUG] [Thread-116795] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:42:58.804 [DEBUG] [Thread-116795] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:42:58.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:42:58.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:42:58.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:42:58.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:42:58.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:42:58.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:42:58.836 [DEBUG] [Thread-116795] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:43:07.404 [DEBUG] [Thread-116797 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:43:09.096 [DEBUG] [Thread-116798 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:43:24.151 [DEBUG] [Thread-116799 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:43:28.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:43:28.837 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:43:28.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:43:29.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 43, 25), 46.82, 3.64, 0.0, 30.05, 26.06, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:43:29.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:43:25
2025-11-03T13:43:29.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:43:29.829 [DEBUG] [Thread-116800] [transport.py] [_log()] starting thread (client mode): 0xed2e1d0
2025-11-03T13:43:29.830 [DEBUG] [Thread-116800] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:43:29.851 [DEBUG] [Thread-116800] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:43:29.851 [INFO] [Thread-116800] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:43:29.854 [DEBUG] [Thread-116800] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:43:29.854 [DEBUG] [Thread-116800] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:43:29.854 [DEBUG] [Thread-116800] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:43:29.854 [DEBUG] [Thread-116800] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:43:29.854 [DEBUG] [Thread-116800] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:43:29.854 [DEBUG] [Thread-116800] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:43:29.854 [DEBUG] [Thread-116800] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:43:29.854 [DEBUG] [Thread-116800] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:43:29.854 [DEBUG] [Thread-116800] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:43:29.854 [DEBUG] [Thread-116800] [transport.py] [_log()] client lang: <none>
2025-11-03T13:43:29.854 [DEBUG] [Thread-116800] [transport.py] [_log()] server lang: <none>
2025-11-03T13:43:29.854 [DEBUG] [Thread-116800] [transport.py] [_log()] kex follows: False
2025-11-03T13:43:29.854 [DEBUG] [Thread-116800] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:43:29.854 [DEBUG] [Thread-116800] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:43:29.854 [DEBUG] [Thread-116800] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:43:29.854 [DEBUG] [Thread-116800] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:43:29.854 [DEBUG] [Thread-116800] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:43:29.854 [DEBUG] [Thread-116800] [transport.py] [_log()] Compression: none
2025-11-03T13:43:29.854 [DEBUG] [Thread-116800] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:43:29.865 [DEBUG] [Thread-116800] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:43:29.874 [DEBUG] [Thread-116800] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:43:29.874 [DEBUG] [Thread-116800] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:43:29.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:43:29.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:43:29.875 [DEBUG] [Thread-116800] [transport.py] [_log()] userauth is OK
2025-11-03T13:43:29.875 [DEBUG] [Thread-116800] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:43:29.875 [DEBUG] [Thread-116800] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:43:29.875 [DEBUG] [Thread-116800] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:43:29.875 [DEBUG] [Thread-116800] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:43:29.884 [INFO] [Thread-116800] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:43:29.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:43:30.499 [DEBUG] [Thread-116800] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:43:30.508 [DEBUG] [Thread-116800] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:43:30.509 [DEBUG] [Thread-116800] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:43:30.540 [DEBUG] [Thread-116800] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:43:30.540 [DEBUG] [Thread-116800] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:43:30.543 [DEBUG] [Thread-116800] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:43:30.555 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:43:30.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:43:30.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:43:30.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:43:30.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:43:30.566 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:43:30.566 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:43:30.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:43:30.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:43:30.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.487951 -999.00  +25.00  28.63      8  -10.30 1 1 1 1 1   888    0 36.65 25.03 ----- 26.6 28.6 316.6 37.3 30.4 -30.9 29.8 -30.7 30.2 -33.2 31.0 -30.1
2025-11-03T13:43:30.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:43:30.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:43:30.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.487951
2025-11-03T13:43:30.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:43:30.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:43:30.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:43:30.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:43:30.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:43:30.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:43:25', tmtdew=46.82, humidity=3.64, cloud=0.0, wind=30.05, temperature=26.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:42:38.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:43:30.570 [DEBUG] [Thread-116800] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:43:30.656 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:43:30.667 [DEBUG] [Thread-116803] [transport.py] [_log()] starting thread (client mode): 0xed2e650
2025-11-03T13:43:30.667 [DEBUG] [Thread-116803] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:43:30.682 [DEBUG] [Thread-116803] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:43:30.683 [INFO] [Thread-116803] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:43:30.692 [DEBUG] [Thread-116803] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:43:30.693 [DEBUG] [Thread-116803] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:43:30.693 [DEBUG] [Thread-116803] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:43:30.693 [DEBUG] [Thread-116803] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:43:30.693 [DEBUG] [Thread-116803] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:43:30.693 [DEBUG] [Thread-116803] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:43:30.693 [DEBUG] [Thread-116803] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:43:30.693 [DEBUG] [Thread-116803] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:43:30.693 [DEBUG] [Thread-116803] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:43:30.693 [DEBUG] [Thread-116803] [transport.py] [_log()] client lang: <none>
2025-11-03T13:43:30.694 [DEBUG] [Thread-116803] [transport.py] [_log()] server lang: <none>
2025-11-03T13:43:30.694 [DEBUG] [Thread-116803] [transport.py] [_log()] kex follows: False
2025-11-03T13:43:30.694 [DEBUG] [Thread-116803] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:43:30.694 [DEBUG] [Thread-116803] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:43:30.694 [DEBUG] [Thread-116803] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:43:30.694 [DEBUG] [Thread-116803] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:43:30.694 [DEBUG] [Thread-116803] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:43:30.694 [DEBUG] [Thread-116803] [transport.py] [_log()] Compression: none
2025-11-03T13:43:30.694 [DEBUG] [Thread-116803] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:43:30.759 [DEBUG] [Thread-116803] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:43:30.759 [DEBUG] [Thread-116803] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:43:30.760 [DEBUG] [Thread-116803] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:43:30.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:43:30.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:43:30.816 [DEBUG] [Thread-116803] [transport.py] [_log()] userauth is OK
2025-11-03T13:43:30.816 [DEBUG] [Thread-116803] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:43:30.816 [DEBUG] [Thread-116803] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:43:30.816 [DEBUG] [Thread-116803] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:43:30.816 [DEBUG] [Thread-116803] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:43:30.840 [INFO] [Thread-116803] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:43:30.841 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:43:30.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:43:31.687 [DEBUG] [Thread-116803] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:43:31.696 [DEBUG] [Thread-116803] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:43:31.734 [DEBUG] [Thread-116803] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:43:31.734 [DEBUG] [Thread-116803] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:43:31.744 [DEBUG] [Thread-116803] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:43:31.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:43:31.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:43:31.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:43:31.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:43:31.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:43:31.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:43:31.786 [DEBUG] [Thread-116803] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:43:39.182 [DEBUG] [Thread-116805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:43:51.198 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:43:51.199 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:43:54.219 [DEBUG] [Thread-116806 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:44:01.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:44:01.805 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:44:01.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:44:02.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 43, 57), 46.98, 3.62, 0.0, 22.66, 25.73, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:44:02.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:43:57
2025-11-03T13:44:02.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:44:02.789 [DEBUG] [Thread-116807] [transport.py] [_log()] starting thread (client mode): 0xeda2da0
2025-11-03T13:44:02.790 [DEBUG] [Thread-116807] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:44:02.809 [DEBUG] [Thread-116807] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:44:02.809 [INFO] [Thread-116807] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:44:02.812 [DEBUG] [Thread-116807] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:44:02.812 [DEBUG] [Thread-116807] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:44:02.812 [DEBUG] [Thread-116807] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:44:02.813 [DEBUG] [Thread-116807] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:44:02.813 [DEBUG] [Thread-116807] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:44:02.813 [DEBUG] [Thread-116807] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:44:02.813 [DEBUG] [Thread-116807] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:44:02.813 [DEBUG] [Thread-116807] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:44:02.813 [DEBUG] [Thread-116807] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:44:02.813 [DEBUG] [Thread-116807] [transport.py] [_log()] client lang: <none>
2025-11-03T13:44:02.813 [DEBUG] [Thread-116807] [transport.py] [_log()] server lang: <none>
2025-11-03T13:44:02.813 [DEBUG] [Thread-116807] [transport.py] [_log()] kex follows: False
2025-11-03T13:44:02.813 [DEBUG] [Thread-116807] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:44:02.813 [DEBUG] [Thread-116807] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:44:02.813 [DEBUG] [Thread-116807] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:44:02.813 [DEBUG] [Thread-116807] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:44:02.813 [DEBUG] [Thread-116807] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:44:02.813 [DEBUG] [Thread-116807] [transport.py] [_log()] Compression: none
2025-11-03T13:44:02.813 [DEBUG] [Thread-116807] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:44:02.830 [DEBUG] [Thread-116807] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:44:02.831 [DEBUG] [Thread-116807] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:44:02.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:44:02.832 [DEBUG] [Thread-116807] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:44:02.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:44:02.835 [DEBUG] [Thread-116807] [transport.py] [_log()] userauth is OK
2025-11-03T13:44:02.835 [DEBUG] [Thread-116807] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:44:02.835 [DEBUG] [Thread-116807] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:44:02.835 [DEBUG] [Thread-116807] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:44:02.835 [DEBUG] [Thread-116807] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:44:02.872 [INFO] [Thread-116807] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:44:02.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:44:03.512 [DEBUG] [Thread-116807] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:44:03.512 [DEBUG] [Thread-116807] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:44:03.512 [DEBUG] [Thread-116807] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:44:03.553 [DEBUG] [Thread-116807] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:44:03.553 [DEBUG] [Thread-116807] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:44:03.555 [DEBUG] [Thread-116807] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:44:03.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:44:03.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:44:03.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:44:03.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:44:03.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:44:03.575 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:44:03.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:44:03.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:44:03.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:44:03.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.488298 -999.00  +25.10  21.55      8  -11.10 1 1 1 1 1   888    0 36.91 24.87 ----- 23.4 21.6 11.9 35.8 30.4 -32.6 29.8 -31.8 30.4 -29.4 31.1 -29.0
2025-11-03T13:44:03.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:44:03.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:44:03.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.488298
2025-11-03T13:44:03.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:44:03.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:44:03.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:44:03.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:44:03.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:44:03.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:43:57', tmtdew=46.98, humidity=3.62, cloud=0.0, wind=22.66, temperature=25.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:43:08.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:44:03.576 [DEBUG] [Thread-116807] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:44:03.647 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:44:03.663 [DEBUG] [Thread-116810] [transport.py] [_log()] starting thread (client mode): 0xeda1120
2025-11-03T13:44:03.663 [DEBUG] [Thread-116810] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:44:03.681 [DEBUG] [Thread-116810] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:44:03.681 [INFO] [Thread-116810] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:44:03.689 [DEBUG] [Thread-116810] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:44:03.689 [DEBUG] [Thread-116810] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:44:03.689 [DEBUG] [Thread-116810] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:44:03.689 [DEBUG] [Thread-116810] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:44:03.689 [DEBUG] [Thread-116810] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:44:03.689 [DEBUG] [Thread-116810] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:44:03.689 [DEBUG] [Thread-116810] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:44:03.689 [DEBUG] [Thread-116810] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:44:03.689 [DEBUG] [Thread-116810] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:44:03.689 [DEBUG] [Thread-116810] [transport.py] [_log()] client lang: <none>
2025-11-03T13:44:03.689 [DEBUG] [Thread-116810] [transport.py] [_log()] server lang: <none>
2025-11-03T13:44:03.689 [DEBUG] [Thread-116810] [transport.py] [_log()] kex follows: False
2025-11-03T13:44:03.689 [DEBUG] [Thread-116810] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:44:03.689 [DEBUG] [Thread-116810] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:44:03.689 [DEBUG] [Thread-116810] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:44:03.689 [DEBUG] [Thread-116810] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:44:03.689 [DEBUG] [Thread-116810] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:44:03.689 [DEBUG] [Thread-116810] [transport.py] [_log()] Compression: none
2025-11-03T13:44:03.689 [DEBUG] [Thread-116810] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:44:03.745 [DEBUG] [Thread-116810] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:44:03.745 [DEBUG] [Thread-116810] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:44:03.745 [DEBUG] [Thread-116810] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:44:03.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:44:03.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:44:03.803 [DEBUG] [Thread-116810] [transport.py] [_log()] userauth is OK
2025-11-03T13:44:03.803 [DEBUG] [Thread-116810] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:44:03.803 [DEBUG] [Thread-116810] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:44:03.803 [DEBUG] [Thread-116810] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:44:03.803 [DEBUG] [Thread-116810] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:44:03.825 [INFO] [Thread-116810] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:44:03.825 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:44:03.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:44:04.659 [DEBUG] [Thread-116810] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:44:04.659 [DEBUG] [Thread-116810] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:44:04.707 [DEBUG] [Thread-116810] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:44:04.707 [DEBUG] [Thread-116810] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:44:04.716 [DEBUG] [Thread-116810] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:44:04.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:44:04.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:44:04.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:44:04.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:44:04.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:44:04.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:44:04.752 [DEBUG] [Thread-116810] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:44:07.465 [DEBUG] [Thread-116812 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:44:09.253 [DEBUG] [Thread-116813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:44:24.310 [DEBUG] [Thread-116814 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:44:34.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:44:34.752 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:44:34.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:44:35.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 44, 29), 46.8, 3.66, 0.0, 25.87, 25.53, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:44:35.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:44:29
2025-11-03T13:44:35.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:44:35.737 [DEBUG] [Thread-116815] [transport.py] [_log()] starting thread (client mode): 0xeda31c0
2025-11-03T13:44:35.737 [DEBUG] [Thread-116815] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:44:35.747 [DEBUG] [Thread-116815] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:44:35.747 [INFO] [Thread-116815] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:44:35.749 [DEBUG] [Thread-116815] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:44:35.749 [DEBUG] [Thread-116815] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:44:35.749 [DEBUG] [Thread-116815] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:44:35.749 [DEBUG] [Thread-116815] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:44:35.749 [DEBUG] [Thread-116815] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:44:35.749 [DEBUG] [Thread-116815] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:44:35.749 [DEBUG] [Thread-116815] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:44:35.749 [DEBUG] [Thread-116815] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:44:35.749 [DEBUG] [Thread-116815] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:44:35.749 [DEBUG] [Thread-116815] [transport.py] [_log()] client lang: <none>
2025-11-03T13:44:35.749 [DEBUG] [Thread-116815] [transport.py] [_log()] server lang: <none>
2025-11-03T13:44:35.749 [DEBUG] [Thread-116815] [transport.py] [_log()] kex follows: False
2025-11-03T13:44:35.749 [DEBUG] [Thread-116815] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:44:35.749 [DEBUG] [Thread-116815] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:44:35.749 [DEBUG] [Thread-116815] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:44:35.749 [DEBUG] [Thread-116815] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:44:35.749 [DEBUG] [Thread-116815] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:44:35.749 [DEBUG] [Thread-116815] [transport.py] [_log()] Compression: none
2025-11-03T13:44:35.750 [DEBUG] [Thread-116815] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:44:35.760 [DEBUG] [Thread-116815] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:44:35.760 [DEBUG] [Thread-116815] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:44:35.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:44:35.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:44:35.761 [DEBUG] [Thread-116815] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:44:35.761 [DEBUG] [Thread-116815] [transport.py] [_log()] userauth is OK
2025-11-03T13:44:35.761 [DEBUG] [Thread-116815] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:44:35.761 [DEBUG] [Thread-116815] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:44:35.761 [DEBUG] [Thread-116815] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:44:35.761 [DEBUG] [Thread-116815] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:44:35.780 [INFO] [Thread-116815] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:44:35.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:44:36.349 [DEBUG] [Thread-116815] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:44:36.349 [DEBUG] [Thread-116815] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:44:36.350 [DEBUG] [Thread-116815] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:44:36.390 [DEBUG] [Thread-116815] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:44:36.390 [DEBUG] [Thread-116815] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:44:36.394 [DEBUG] [Thread-116815] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:44:36.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:44:36.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:44:36.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:44:36.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:44:36.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:44:36.430 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:44:36.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:44:36.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:44:36.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:44:36.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.488645 -999.00  +25.30  25.92      8  -10.40 1 1 1 1 1   888    0 36.54 26.63 ----- 22.2 25.9 326.4 32.8 30.5 -30.1 29.6 -29.5 30.3 -28.5 30.6 -36.2
2025-11-03T13:44:36.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:44:36.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:44:36.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.488645
2025-11-03T13:44:36.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:44:36.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:44:36.433 [DEBUG] [Thread-116815] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:44:36.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:44:36.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:44:36.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:44:36.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:44:29', tmtdew=46.8, humidity=3.66, cloud=0.0, wind=25.87, temperature=25.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:43:38.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:44:36.517 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:44:36.527 [DEBUG] [Thread-116818] [transport.py] [_log()] starting thread (client mode): 0xeda1150
2025-11-03T13:44:36.527 [DEBUG] [Thread-116818] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:44:36.542 [DEBUG] [Thread-116818] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:44:36.543 [INFO] [Thread-116818] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:44:36.550 [DEBUG] [Thread-116818] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:44:36.551 [DEBUG] [Thread-116818] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:44:36.551 [DEBUG] [Thread-116818] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:44:36.551 [DEBUG] [Thread-116818] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:44:36.551 [DEBUG] [Thread-116818] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:44:36.551 [DEBUG] [Thread-116818] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:44:36.551 [DEBUG] [Thread-116818] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:44:36.551 [DEBUG] [Thread-116818] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:44:36.551 [DEBUG] [Thread-116818] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:44:36.551 [DEBUG] [Thread-116818] [transport.py] [_log()] client lang: <none>
2025-11-03T13:44:36.551 [DEBUG] [Thread-116818] [transport.py] [_log()] server lang: <none>
2025-11-03T13:44:36.551 [DEBUG] [Thread-116818] [transport.py] [_log()] kex follows: False
2025-11-03T13:44:36.551 [DEBUG] [Thread-116818] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:44:36.551 [DEBUG] [Thread-116818] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:44:36.551 [DEBUG] [Thread-116818] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:44:36.551 [DEBUG] [Thread-116818] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:44:36.551 [DEBUG] [Thread-116818] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:44:36.551 [DEBUG] [Thread-116818] [transport.py] [_log()] Compression: none
2025-11-03T13:44:36.561 [DEBUG] [Thread-116818] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:44:36.608 [DEBUG] [Thread-116818] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:44:36.608 [DEBUG] [Thread-116818] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:44:36.609 [DEBUG] [Thread-116818] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:44:36.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:44:36.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:44:36.664 [DEBUG] [Thread-116818] [transport.py] [_log()] userauth is OK
2025-11-03T13:44:36.664 [DEBUG] [Thread-116818] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:44:36.664 [DEBUG] [Thread-116818] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:44:36.664 [DEBUG] [Thread-116818] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:44:36.664 [DEBUG] [Thread-116818] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:44:36.683 [INFO] [Thread-116818] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:44:36.683 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:44:36.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:44:37.554 [DEBUG] [Thread-116818] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:44:37.554 [DEBUG] [Thread-116818] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:44:37.602 [DEBUG] [Thread-116818] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:44:37.602 [DEBUG] [Thread-116818] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:44:37.612 [DEBUG] [Thread-116818] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:44:37.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:44:37.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:44:37.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:44:37.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:44:37.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:44:37.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:44:37.649 [DEBUG] [Thread-116818] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:44:39.348 [DEBUG] [Thread-116820 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:44:51.341 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:44:51.342 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:44:54.395 [DEBUG] [Thread-116821 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:45:07.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:45:07.672 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:45:07.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:45:07.719 [DEBUG] [Thread-116822 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:45:08.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 45, 1), 46.5, 3.72, 0.0, 22.57, 25.3, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:45:08.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:45:01
2025-11-03T13:45:08.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:45:08.684 [DEBUG] [Thread-116823] [transport.py] [_log()] starting thread (client mode): 0xeda2560
2025-11-03T13:45:08.684 [DEBUG] [Thread-116823] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:45:08.704 [DEBUG] [Thread-116823] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:45:08.704 [INFO] [Thread-116823] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:45:08.708 [DEBUG] [Thread-116823] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:45:08.708 [DEBUG] [Thread-116823] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:45:08.708 [DEBUG] [Thread-116823] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:45:08.708 [DEBUG] [Thread-116823] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:45:08.708 [DEBUG] [Thread-116823] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:45:08.708 [DEBUG] [Thread-116823] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:45:08.708 [DEBUG] [Thread-116823] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:45:08.708 [DEBUG] [Thread-116823] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:45:08.708 [DEBUG] [Thread-116823] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:45:08.708 [DEBUG] [Thread-116823] [transport.py] [_log()] client lang: <none>
2025-11-03T13:45:08.708 [DEBUG] [Thread-116823] [transport.py] [_log()] server lang: <none>
2025-11-03T13:45:08.708 [DEBUG] [Thread-116823] [transport.py] [_log()] kex follows: False
2025-11-03T13:45:08.708 [DEBUG] [Thread-116823] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:45:08.709 [DEBUG] [Thread-116823] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:45:08.709 [DEBUG] [Thread-116823] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:45:08.709 [DEBUG] [Thread-116823] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:45:08.709 [DEBUG] [Thread-116823] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:45:08.709 [DEBUG] [Thread-116823] [transport.py] [_log()] Compression: none
2025-11-03T13:45:08.709 [DEBUG] [Thread-116823] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:45:08.718 [DEBUG] [Thread-116823] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:45:08.718 [DEBUG] [Thread-116823] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:45:08.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:45:08.719 [DEBUG] [Thread-116823] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:45:08.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:45:08.721 [DEBUG] [Thread-116823] [transport.py] [_log()] userauth is OK
2025-11-03T13:45:08.721 [DEBUG] [Thread-116823] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:45:08.722 [DEBUG] [Thread-116823] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:45:08.722 [DEBUG] [Thread-116823] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:45:08.722 [DEBUG] [Thread-116823] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:45:08.741 [INFO] [Thread-116823] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:45:08.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:45:09.431 [DEBUG] [Thread-116825 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:45:12.822 [DEBUG] [Thread-116823] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:45:12.822 [DEBUG] [Thread-116823] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:45:12.822 [DEBUG] [Thread-116823] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:45:12.863 [DEBUG] [Thread-116823] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:45:12.863 [DEBUG] [Thread-116823] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:45:12.867 [DEBUG] [Thread-116823] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:45:12.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:45:12.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:45:12.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:45:12.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:45:12.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:45:12.913 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:45:12.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:45:12.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:45:12.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:45:12.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.489339 -999.00  +25.20  14.95      8  -11.30 1 1 1 1 1   888    0 36.38 37.21 ----- 22.4 14.9 29.7 33.6 30.5 -30.8 29.8 -30.2 30.4 -31.1 31.1 -29.4
2025-11-03T13:45:12.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:45:12.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:45:12.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.489339
2025-11-03T13:45:12.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:45:12.915 [DEBUG] [Thread-116823] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:45:12.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:45:12.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:45:12.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:45:12.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:45:12.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:45:01', tmtdew=46.5, humidity=3.72, cloud=0.0, wind=22.57, temperature=25.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:44:38.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:45:13.004 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:45:13.016 [DEBUG] [Thread-116827] [transport.py] [_log()] starting thread (client mode): 0xeda3190
2025-11-03T13:45:13.016 [DEBUG] [Thread-116827] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:45:13.031 [DEBUG] [Thread-116827] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:45:13.031 [INFO] [Thread-116827] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:45:13.041 [DEBUG] [Thread-116827] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:45:13.042 [DEBUG] [Thread-116827] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:45:13.042 [DEBUG] [Thread-116827] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:45:13.042 [DEBUG] [Thread-116827] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:45:13.042 [DEBUG] [Thread-116827] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:45:13.042 [DEBUG] [Thread-116827] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:45:13.042 [DEBUG] [Thread-116827] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:45:13.042 [DEBUG] [Thread-116827] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:45:13.042 [DEBUG] [Thread-116827] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:45:13.042 [DEBUG] [Thread-116827] [transport.py] [_log()] client lang: <none>
2025-11-03T13:45:13.042 [DEBUG] [Thread-116827] [transport.py] [_log()] server lang: <none>
2025-11-03T13:45:13.042 [DEBUG] [Thread-116827] [transport.py] [_log()] kex follows: False
2025-11-03T13:45:13.042 [DEBUG] [Thread-116827] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:45:13.042 [DEBUG] [Thread-116827] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:45:13.042 [DEBUG] [Thread-116827] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:45:13.042 [DEBUG] [Thread-116827] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:45:13.042 [DEBUG] [Thread-116827] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:45:13.042 [DEBUG] [Thread-116827] [transport.py] [_log()] Compression: none
2025-11-03T13:45:13.042 [DEBUG] [Thread-116827] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:45:13.106 [DEBUG] [Thread-116827] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:45:13.106 [DEBUG] [Thread-116827] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:45:13.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:45:13.106 [DEBUG] [Thread-116827] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:45:13.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:45:13.163 [DEBUG] [Thread-116827] [transport.py] [_log()] userauth is OK
2025-11-03T13:45:13.163 [DEBUG] [Thread-116827] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:45:13.172 [DEBUG] [Thread-116827] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:45:13.172 [DEBUG] [Thread-116827] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:45:13.172 [DEBUG] [Thread-116827] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:45:13.186 [INFO] [Thread-116827] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:45:13.186 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:45:13.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:45:14.040 [DEBUG] [Thread-116827] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:45:14.040 [DEBUG] [Thread-116827] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:45:14.088 [DEBUG] [Thread-116827] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:45:14.088 [DEBUG] [Thread-116827] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:45:14.097 [DEBUG] [Thread-116827] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:45:14.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:45:14.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:45:14.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:45:14.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:45:14.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:45:14.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:45:14.134 [DEBUG] [Thread-116827] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:45:24.470 [DEBUG] [Thread-116829 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:45:39.520 [DEBUG] [Thread-116830 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:45:44.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:45:44.139 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:45:44.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:45:44.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 45, 34), 46.31, 3.77, 0.0, 22.32, 25.25, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:45:44.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:45:34
2025-11-03T13:45:44.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:45:45.105 [DEBUG] [Thread-116831] [transport.py] [_log()] starting thread (client mode): 0xeda3af0
2025-11-03T13:45:45.105 [DEBUG] [Thread-116831] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:45:45.126 [DEBUG] [Thread-116831] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:45:45.126 [INFO] [Thread-116831] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:45:45.129 [DEBUG] [Thread-116831] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:45:45.129 [DEBUG] [Thread-116831] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:45:45.129 [DEBUG] [Thread-116831] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:45:45.129 [DEBUG] [Thread-116831] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:45:45.129 [DEBUG] [Thread-116831] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:45:45.129 [DEBUG] [Thread-116831] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:45:45.129 [DEBUG] [Thread-116831] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:45:45.129 [DEBUG] [Thread-116831] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:45:45.129 [DEBUG] [Thread-116831] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:45:45.129 [DEBUG] [Thread-116831] [transport.py] [_log()] client lang: <none>
2025-11-03T13:45:45.129 [DEBUG] [Thread-116831] [transport.py] [_log()] server lang: <none>
2025-11-03T13:45:45.129 [DEBUG] [Thread-116831] [transport.py] [_log()] kex follows: False
2025-11-03T13:45:45.129 [DEBUG] [Thread-116831] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:45:45.129 [DEBUG] [Thread-116831] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:45:45.129 [DEBUG] [Thread-116831] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:45:45.129 [DEBUG] [Thread-116831] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:45:45.129 [DEBUG] [Thread-116831] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:45:45.129 [DEBUG] [Thread-116831] [transport.py] [_log()] Compression: none
2025-11-03T13:45:45.129 [DEBUG] [Thread-116831] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:45:45.148 [DEBUG] [Thread-116831] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:45:45.149 [DEBUG] [Thread-116831] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:45:45.149 [DEBUG] [Thread-116831] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:45:45.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:45:45.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:45:45.151 [DEBUG] [Thread-116831] [transport.py] [_log()] userauth is OK
2025-11-03T13:45:45.151 [DEBUG] [Thread-116831] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:45:45.151 [DEBUG] [Thread-116831] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:45:45.151 [DEBUG] [Thread-116831] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:45:45.152 [DEBUG] [Thread-116831] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:45:45.175 [INFO] [Thread-116831] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:45:45.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:45:45.808 [DEBUG] [Thread-116831] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:45:45.809 [DEBUG] [Thread-116831] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:45:45.809 [DEBUG] [Thread-116831] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:45:45.849 [DEBUG] [Thread-116831] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:45:45.849 [DEBUG] [Thread-116831] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:45:45.852 [DEBUG] [Thread-116831] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:45:45.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:45:45.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:45:45.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:45:45.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:45:45.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:45:45.869 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:45:45.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:45:45.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:45:45.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:45:45.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.489686 -999.00  +24.80  14.80      8  -10.90 1 1 1 1 1   888    0 36.83 36.23 ----- 15.7 14.8 359.5 25.9 30.3 -31.0 29.6 -31.6 30.3 -31.2 30.8 -30.5
2025-11-03T13:45:45.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:45:45.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:45:45.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.489686
2025-11-03T13:45:45.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:45:45.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:45:45.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:45:45.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:45:45.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:45:45.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:45:34', tmtdew=46.31, humidity=3.77, cloud=0.0, wind=22.32, temperature=25.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:45:08.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:45:45.870 [DEBUG] [Thread-116831] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:45:45.942 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:45:45.954 [DEBUG] [Thread-116834] [transport.py] [_log()] starting thread (client mode): 0xeda2710
2025-11-03T13:45:45.954 [DEBUG] [Thread-116834] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:45:45.969 [DEBUG] [Thread-116834] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:45:45.969 [INFO] [Thread-116834] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:45:45.976 [DEBUG] [Thread-116834] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:45:45.976 [DEBUG] [Thread-116834] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:45:45.976 [DEBUG] [Thread-116834] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:45:45.976 [DEBUG] [Thread-116834] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:45:45.976 [DEBUG] [Thread-116834] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:45:45.976 [DEBUG] [Thread-116834] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:45:45.976 [DEBUG] [Thread-116834] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:45:45.976 [DEBUG] [Thread-116834] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:45:45.976 [DEBUG] [Thread-116834] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:45:45.976 [DEBUG] [Thread-116834] [transport.py] [_log()] client lang: <none>
2025-11-03T13:45:45.976 [DEBUG] [Thread-116834] [transport.py] [_log()] server lang: <none>
2025-11-03T13:45:45.976 [DEBUG] [Thread-116834] [transport.py] [_log()] kex follows: False
2025-11-03T13:45:45.976 [DEBUG] [Thread-116834] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:45:45.976 [DEBUG] [Thread-116834] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:45:45.976 [DEBUG] [Thread-116834] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:45:45.977 [DEBUG] [Thread-116834] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:45:45.977 [DEBUG] [Thread-116834] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:45:45.977 [DEBUG] [Thread-116834] [transport.py] [_log()] Compression: none
2025-11-03T13:45:45.977 [DEBUG] [Thread-116834] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:45:46.034 [DEBUG] [Thread-116834] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:45:46.034 [DEBUG] [Thread-116834] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:45:46.034 [DEBUG] [Thread-116834] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:45:46.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:45:46.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:45:46.091 [DEBUG] [Thread-116834] [transport.py] [_log()] userauth is OK
2025-11-03T13:45:46.091 [DEBUG] [Thread-116834] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:45:46.091 [DEBUG] [Thread-116834] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:45:46.091 [DEBUG] [Thread-116834] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:45:46.091 [DEBUG] [Thread-116834] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:45:46.104 [INFO] [Thread-116834] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:45:46.104 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:45:46.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:45:46.964 [DEBUG] [Thread-116834] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:45:46.964 [DEBUG] [Thread-116834] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:45:47.015 [DEBUG] [Thread-116834] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:45:47.015 [DEBUG] [Thread-116834] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:45:47.024 [DEBUG] [Thread-116834] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:45:47.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:45:47.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:45:47.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:45:47.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:45:47.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:45:47.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:45:47.060 [DEBUG] [Thread-116834] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:45:51.484 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:45:51.485 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:45:54.563 [DEBUG] [Thread-116836 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:46:07.752 [DEBUG] [Thread-116837 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:46:09.617 [DEBUG] [Thread-116838 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:46:17.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:46:17.053 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:46:17.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:46:17.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 46, 6), 46.43, 3.79, 0.0, 26.31, 25.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:46:17.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:46:06
2025-11-03T13:46:17.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:46:18.001 [DEBUG] [Thread-116839] [transport.py] [_log()] starting thread (client mode): 0xeda2cb0
2025-11-03T13:46:18.002 [DEBUG] [Thread-116839] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:46:18.029 [DEBUG] [Thread-116839] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:46:18.029 [INFO] [Thread-116839] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:46:18.031 [DEBUG] [Thread-116839] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:46:18.031 [DEBUG] [Thread-116839] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:46:18.031 [DEBUG] [Thread-116839] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:46:18.031 [DEBUG] [Thread-116839] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:46:18.032 [DEBUG] [Thread-116839] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:46:18.032 [DEBUG] [Thread-116839] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:46:18.032 [DEBUG] [Thread-116839] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:46:18.032 [DEBUG] [Thread-116839] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:46:18.032 [DEBUG] [Thread-116839] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:46:18.032 [DEBUG] [Thread-116839] [transport.py] [_log()] client lang: <none>
2025-11-03T13:46:18.032 [DEBUG] [Thread-116839] [transport.py] [_log()] server lang: <none>
2025-11-03T13:46:18.032 [DEBUG] [Thread-116839] [transport.py] [_log()] kex follows: False
2025-11-03T13:46:18.032 [DEBUG] [Thread-116839] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:46:18.032 [DEBUG] [Thread-116839] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:46:18.032 [DEBUG] [Thread-116839] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:46:18.033 [DEBUG] [Thread-116839] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:46:18.033 [DEBUG] [Thread-116839] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:46:18.033 [DEBUG] [Thread-116839] [transport.py] [_log()] Compression: none
2025-11-03T13:46:18.033 [DEBUG] [Thread-116839] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:46:18.046 [DEBUG] [Thread-116839] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:46:18.047 [DEBUG] [Thread-116839] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:46:18.047 [DEBUG] [Thread-116839] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:46:18.048 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:46:18.048 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:46:18.050 [DEBUG] [Thread-116839] [transport.py] [_log()] userauth is OK
2025-11-03T13:46:18.050 [DEBUG] [Thread-116839] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:46:18.050 [DEBUG] [Thread-116839] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:46:18.050 [DEBUG] [Thread-116839] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:46:18.050 [DEBUG] [Thread-116839] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:46:18.073 [INFO] [Thread-116839] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:46:18.074 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:46:18.704 [DEBUG] [Thread-116839] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:46:18.704 [DEBUG] [Thread-116839] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:46:18.704 [DEBUG] [Thread-116839] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:46:18.745 [DEBUG] [Thread-116839] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:46:18.745 [DEBUG] [Thread-116839] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:46:18.748 [DEBUG] [Thread-116839] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:46:18.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:46:18.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:46:18.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:46:18.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:46:18.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:46:18.775 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:46:18.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:46:18.775 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:46:18.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:46:18.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.490034 -999.00  +24.90  20.81      8  -11.00 1 1 1 1 1   888    0 37.01 39.72 ----- 18.2 20.8 352.3 28.7 30.2 -31.9 29.6 -31.1 30.2 -30.1 30.6 -34.4
2025-11-03T13:46:18.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:46:18.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:46:18.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.490034
2025-11-03T13:46:18.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:46:18.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:46:18.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:46:18.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:46:18.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:46:18.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:46:06', tmtdew=46.43, humidity=3.79, cloud=0.0, wind=26.31, temperature=25.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:45:38.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:46:18.776 [DEBUG] [Thread-116839] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:46:18.848 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:46:18.859 [DEBUG] [Thread-116842] [transport.py] [_log()] starting thread (client mode): 0xeda3d00
2025-11-03T13:46:18.859 [DEBUG] [Thread-116842] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:46:18.874 [DEBUG] [Thread-116842] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:46:18.874 [INFO] [Thread-116842] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:46:18.882 [DEBUG] [Thread-116842] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:46:18.882 [DEBUG] [Thread-116842] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:46:18.882 [DEBUG] [Thread-116842] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:46:18.882 [DEBUG] [Thread-116842] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:46:18.882 [DEBUG] [Thread-116842] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:46:18.882 [DEBUG] [Thread-116842] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:46:18.882 [DEBUG] [Thread-116842] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:46:18.882 [DEBUG] [Thread-116842] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:46:18.882 [DEBUG] [Thread-116842] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:46:18.882 [DEBUG] [Thread-116842] [transport.py] [_log()] client lang: <none>
2025-11-03T13:46:18.882 [DEBUG] [Thread-116842] [transport.py] [_log()] server lang: <none>
2025-11-03T13:46:18.882 [DEBUG] [Thread-116842] [transport.py] [_log()] kex follows: False
2025-11-03T13:46:18.882 [DEBUG] [Thread-116842] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:46:18.882 [DEBUG] [Thread-116842] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:46:18.882 [DEBUG] [Thread-116842] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:46:18.882 [DEBUG] [Thread-116842] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:46:18.882 [DEBUG] [Thread-116842] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:46:18.882 [DEBUG] [Thread-116842] [transport.py] [_log()] Compression: none
2025-11-03T13:46:18.882 [DEBUG] [Thread-116842] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:46:18.938 [DEBUG] [Thread-116842] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:46:18.938 [DEBUG] [Thread-116842] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:46:18.938 [DEBUG] [Thread-116842] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:46:18.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:46:18.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:46:18.995 [DEBUG] [Thread-116842] [transport.py] [_log()] userauth is OK
2025-11-03T13:46:18.995 [DEBUG] [Thread-116842] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:46:18.995 [DEBUG] [Thread-116842] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:46:18.995 [DEBUG] [Thread-116842] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:46:18.995 [DEBUG] [Thread-116842] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:46:19.013 [INFO] [Thread-116842] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:46:19.013 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:46:19.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:46:19.843 [DEBUG] [Thread-116842] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:46:19.843 [DEBUG] [Thread-116842] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:46:19.891 [DEBUG] [Thread-116842] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:46:19.891 [DEBUG] [Thread-116842] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:46:19.900 [DEBUG] [Thread-116842] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:46:19.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:46:19.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:46:19.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:46:19.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:46:19.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:46:19.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:46:19.938 [DEBUG] [Thread-116842] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:46:24.654 [DEBUG] [Thread-116844 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:46:39.716 [DEBUG] [Thread-116845 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:46:49.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:46:49.949 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:46:49.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:46:50.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 46, 38), 46.16, 3.79, 0.0, 15.19, 25.68, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:46:50.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:46:38
2025-11-03T13:46:50.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:46:50.961 [DEBUG] [Thread-116846] [transport.py] [_log()] starting thread (client mode): 0x11781ae0
2025-11-03T13:46:50.961 [DEBUG] [Thread-116846] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:46:50.981 [DEBUG] [Thread-116846] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:46:50.981 [INFO] [Thread-116846] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:46:50.984 [DEBUG] [Thread-116846] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:46:50.985 [DEBUG] [Thread-116846] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:46:50.985 [DEBUG] [Thread-116846] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:46:50.985 [DEBUG] [Thread-116846] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:46:50.985 [DEBUG] [Thread-116846] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:46:50.985 [DEBUG] [Thread-116846] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:46:50.985 [DEBUG] [Thread-116846] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:46:50.985 [DEBUG] [Thread-116846] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:46:50.985 [DEBUG] [Thread-116846] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:46:50.985 [DEBUG] [Thread-116846] [transport.py] [_log()] client lang: <none>
2025-11-03T13:46:50.985 [DEBUG] [Thread-116846] [transport.py] [_log()] server lang: <none>
2025-11-03T13:46:50.985 [DEBUG] [Thread-116846] [transport.py] [_log()] kex follows: False
2025-11-03T13:46:50.985 [DEBUG] [Thread-116846] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:46:50.985 [DEBUG] [Thread-116846] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:46:50.985 [DEBUG] [Thread-116846] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:46:50.985 [DEBUG] [Thread-116846] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:46:50.985 [DEBUG] [Thread-116846] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:46:50.985 [DEBUG] [Thread-116846] [transport.py] [_log()] Compression: none
2025-11-03T13:46:50.985 [DEBUG] [Thread-116846] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:46:51.002 [DEBUG] [Thread-116846] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:46:51.003 [DEBUG] [Thread-116846] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:46:51.003 [DEBUG] [Thread-116846] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:46:51.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:46:51.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:46:51.003 [DEBUG] [Thread-116846] [transport.py] [_log()] userauth is OK
2025-11-03T13:46:51.004 [DEBUG] [Thread-116846] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:46:51.004 [DEBUG] [Thread-116846] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:46:51.004 [DEBUG] [Thread-116846] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:46:51.004 [DEBUG] [Thread-116846] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:46:51.014 [INFO] [Thread-116846] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:46:51.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:46:51.625 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:46:51.626 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:46:51.678 [DEBUG] [Thread-116846] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:46:51.678 [DEBUG] [Thread-116846] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:46:51.678 [DEBUG] [Thread-116846] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:46:51.718 [DEBUG] [Thread-116846] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:46:51.718 [DEBUG] [Thread-116846] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:46:51.721 [DEBUG] [Thread-116846] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:46:51.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:46:51.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:46:51.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:46:51.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:46:51.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:46:51.740 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:46:51.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:46:51.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:46:51.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:46:51.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.490381 -999.00  +24.80  15.53      8  -10.80 1 1 1 1 1   888    0 36.67 37.86 ----- 18.1 15.5 5.3 28.9 30.4 -30.3 29.6 -29.3 30.3 -28.7 30.6 -29.3
2025-11-03T13:46:51.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:46:51.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:46:51.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.490381
2025-11-03T13:46:51.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:46:51.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:46:51.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:46:51.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:46:51.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:46:51.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:46:38', tmtdew=46.16, humidity=3.79, cloud=0.0, wind=15.19, temperature=25.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:46:08.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:46:51.741 [DEBUG] [Thread-116846] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:46:51.816 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:46:51.827 [DEBUG] [Thread-116849] [transport.py] [_log()] starting thread (client mode): 0x117820e0
2025-11-03T13:46:51.827 [DEBUG] [Thread-116849] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:46:51.844 [DEBUG] [Thread-116849] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:46:51.844 [INFO] [Thread-116849] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:46:51.852 [DEBUG] [Thread-116849] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:46:51.852 [DEBUG] [Thread-116849] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:46:51.852 [DEBUG] [Thread-116849] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:46:51.852 [DEBUG] [Thread-116849] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:46:51.852 [DEBUG] [Thread-116849] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:46:51.852 [DEBUG] [Thread-116849] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:46:51.852 [DEBUG] [Thread-116849] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:46:51.852 [DEBUG] [Thread-116849] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:46:51.852 [DEBUG] [Thread-116849] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:46:51.852 [DEBUG] [Thread-116849] [transport.py] [_log()] client lang: <none>
2025-11-03T13:46:51.852 [DEBUG] [Thread-116849] [transport.py] [_log()] server lang: <none>
2025-11-03T13:46:51.852 [DEBUG] [Thread-116849] [transport.py] [_log()] kex follows: False
2025-11-03T13:46:51.852 [DEBUG] [Thread-116849] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:46:51.852 [DEBUG] [Thread-116849] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:46:51.852 [DEBUG] [Thread-116849] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:46:51.852 [DEBUG] [Thread-116849] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:46:51.852 [DEBUG] [Thread-116849] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:46:51.852 [DEBUG] [Thread-116849] [transport.py] [_log()] Compression: none
2025-11-03T13:46:51.852 [DEBUG] [Thread-116849] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:46:51.910 [DEBUG] [Thread-116849] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:46:51.910 [DEBUG] [Thread-116849] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:46:51.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:46:51.910 [DEBUG] [Thread-116849] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:46:51.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:46:51.968 [DEBUG] [Thread-116849] [transport.py] [_log()] userauth is OK
2025-11-03T13:46:51.969 [DEBUG] [Thread-116849] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:46:51.969 [DEBUG] [Thread-116849] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:46:51.969 [DEBUG] [Thread-116849] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:46:51.969 [DEBUG] [Thread-116849] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:46:51.982 [INFO] [Thread-116849] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:46:51.982 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:46:51.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:46:52.806 [DEBUG] [Thread-116849] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:46:52.807 [DEBUG] [Thread-116849] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:46:52.854 [DEBUG] [Thread-116849] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:46:52.854 [DEBUG] [Thread-116849] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:46:52.862 [DEBUG] [Thread-116849] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:46:52.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:46:52.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:46:52.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:46:52.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:46:52.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:46:52.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:46:52.893 [DEBUG] [Thread-116849] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:46:54.741 [DEBUG] [Thread-116851 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:47:07.782 [DEBUG] [Thread-116852 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:47:09.781 [DEBUG] [Thread-116853 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:47:22.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:47:22.917 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:47:22.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:47:23.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 47, 11), 45.9, 3.87, 0.0, 18.12, 25.71, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:47:23.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:47:11
2025-11-03T13:47:23.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:47:23.954 [DEBUG] [Thread-116854] [transport.py] [_log()] starting thread (client mode): 0xed2ca00
2025-11-03T13:47:23.955 [DEBUG] [Thread-116854] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:47:23.974 [DEBUG] [Thread-116854] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:47:23.974 [INFO] [Thread-116854] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:47:23.985 [DEBUG] [Thread-116854] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:47:23.985 [DEBUG] [Thread-116854] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:47:23.985 [DEBUG] [Thread-116854] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:47:23.985 [DEBUG] [Thread-116854] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:47:23.985 [DEBUG] [Thread-116854] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:47:23.986 [DEBUG] [Thread-116854] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:47:23.986 [DEBUG] [Thread-116854] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:47:23.986 [DEBUG] [Thread-116854] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:47:23.986 [DEBUG] [Thread-116854] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:47:23.986 [DEBUG] [Thread-116854] [transport.py] [_log()] client lang: <none>
2025-11-03T13:47:23.986 [DEBUG] [Thread-116854] [transport.py] [_log()] server lang: <none>
2025-11-03T13:47:23.986 [DEBUG] [Thread-116854] [transport.py] [_log()] kex follows: False
2025-11-03T13:47:23.986 [DEBUG] [Thread-116854] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:47:23.986 [DEBUG] [Thread-116854] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:47:23.987 [DEBUG] [Thread-116854] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:47:23.987 [DEBUG] [Thread-116854] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:47:23.987 [DEBUG] [Thread-116854] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:47:23.987 [DEBUG] [Thread-116854] [transport.py] [_log()] Compression: none
2025-11-03T13:47:23.987 [DEBUG] [Thread-116854] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:47:24.008 [DEBUG] [Thread-116854] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:47:24.008 [DEBUG] [Thread-116854] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:47:24.009 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:47:24.010 [DEBUG] [Thread-116854] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:47:24.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:47:24.012 [DEBUG] [Thread-116854] [transport.py] [_log()] userauth is OK
2025-11-03T13:47:24.012 [DEBUG] [Thread-116854] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:47:24.012 [DEBUG] [Thread-116854] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:47:24.012 [DEBUG] [Thread-116854] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:47:24.013 [DEBUG] [Thread-116854] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:47:24.049 [INFO] [Thread-116854] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:47:24.050 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:47:24.673 [DEBUG] [Thread-116854] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:47:24.673 [DEBUG] [Thread-116854] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:47:24.673 [DEBUG] [Thread-116854] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:47:24.714 [DEBUG] [Thread-116854] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:47:24.714 [DEBUG] [Thread-116854] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:47:24.715 [DEBUG] [Thread-116854] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:47:24.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:47:24.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:47:24.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:47:24.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:47:24.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:47:24.743 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:47:24.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:47:24.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:47:24.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:47:24.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.490728 -999.00  +25.50  13.08      8  -10.40 1 1 1 1 1   888    0 37.05 42.28 ----- 13.7 13.1 358.6 23.0 30.4 -30.1 29.8 -29.3 30.4 -29.5 30.9 -28.6
2025-11-03T13:47:24.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:47:24.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:47:24.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.490728
2025-11-03T13:47:24.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:47:24.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:47:24.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:47:24.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:47:24.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:47:24.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:47:11', tmtdew=45.9, humidity=3.87, cloud=0.0, wind=18.12, temperature=25.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:46:38.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:47:24.744 [DEBUG] [Thread-116854] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:47:24.816 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:47:24.817 [DEBUG] [Thread-116857 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:47:24.828 [DEBUG] [Thread-116858] [transport.py] [_log()] starting thread (client mode): 0xed2d060
2025-11-03T13:47:24.828 [DEBUG] [Thread-116858] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:47:24.843 [DEBUG] [Thread-116858] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:47:24.843 [INFO] [Thread-116858] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:47:24.850 [DEBUG] [Thread-116858] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:47:24.850 [DEBUG] [Thread-116858] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:47:24.850 [DEBUG] [Thread-116858] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:47:24.850 [DEBUG] [Thread-116858] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:47:24.850 [DEBUG] [Thread-116858] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:47:24.850 [DEBUG] [Thread-116858] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:47:24.850 [DEBUG] [Thread-116858] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:47:24.850 [DEBUG] [Thread-116858] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:47:24.850 [DEBUG] [Thread-116858] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:47:24.850 [DEBUG] [Thread-116858] [transport.py] [_log()] client lang: <none>
2025-11-03T13:47:24.850 [DEBUG] [Thread-116858] [transport.py] [_log()] server lang: <none>
2025-11-03T13:47:24.850 [DEBUG] [Thread-116858] [transport.py] [_log()] kex follows: False
2025-11-03T13:47:24.851 [DEBUG] [Thread-116858] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:47:24.851 [DEBUG] [Thread-116858] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:47:24.851 [DEBUG] [Thread-116858] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:47:24.851 [DEBUG] [Thread-116858] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:47:24.851 [DEBUG] [Thread-116858] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:47:24.851 [DEBUG] [Thread-116858] [transport.py] [_log()] Compression: none
2025-11-03T13:47:24.851 [DEBUG] [Thread-116858] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:47:24.906 [DEBUG] [Thread-116858] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:47:24.906 [DEBUG] [Thread-116858] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:47:24.906 [DEBUG] [Thread-116858] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:47:24.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:47:24.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:47:24.963 [DEBUG] [Thread-116858] [transport.py] [_log()] userauth is OK
2025-11-03T13:47:24.963 [DEBUG] [Thread-116858] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:47:24.963 [DEBUG] [Thread-116858] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:47:24.963 [DEBUG] [Thread-116858] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:47:24.963 [DEBUG] [Thread-116858] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:47:24.977 [INFO] [Thread-116858] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:47:24.977 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:47:24.977 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:47:25.885 [DEBUG] [Thread-116858] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:47:25.885 [DEBUG] [Thread-116858] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:47:25.933 [DEBUG] [Thread-116858] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:47:25.934 [DEBUG] [Thread-116858] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:47:25.943 [DEBUG] [Thread-116858] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:47:25.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:47:25.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:47:25.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:47:25.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:47:25.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:47:25.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:47:25.980 [DEBUG] [Thread-116858] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:47:39.856 [DEBUG] [Thread-116860 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:47:51.766 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:47:51.767 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:47:54.900 [DEBUG] [Thread-116861 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:47:55.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:47:55.989 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:47:56.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:47:56.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 47, 43), 45.68, 3.9, 0.0, 24.08, 25.76, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:47:56.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:47:43
2025-11-03T13:47:56.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:47:56.949 [DEBUG] [Thread-116862] [transport.py] [_log()] starting thread (client mode): 0xed2c730
2025-11-03T13:47:56.949 [DEBUG] [Thread-116862] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:47:56.970 [DEBUG] [Thread-116862] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:47:56.970 [INFO] [Thread-116862] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:47:56.973 [DEBUG] [Thread-116862] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:47:56.973 [DEBUG] [Thread-116862] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:47:56.973 [DEBUG] [Thread-116862] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:47:56.973 [DEBUG] [Thread-116862] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:47:56.973 [DEBUG] [Thread-116862] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:47:56.973 [DEBUG] [Thread-116862] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:47:56.973 [DEBUG] [Thread-116862] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:47:56.973 [DEBUG] [Thread-116862] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:47:56.973 [DEBUG] [Thread-116862] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:47:56.973 [DEBUG] [Thread-116862] [transport.py] [_log()] client lang: <none>
2025-11-03T13:47:56.973 [DEBUG] [Thread-116862] [transport.py] [_log()] server lang: <none>
2025-11-03T13:47:56.973 [DEBUG] [Thread-116862] [transport.py] [_log()] kex follows: False
2025-11-03T13:47:56.973 [DEBUG] [Thread-116862] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:47:56.973 [DEBUG] [Thread-116862] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:47:56.973 [DEBUG] [Thread-116862] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:47:56.973 [DEBUG] [Thread-116862] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:47:56.973 [DEBUG] [Thread-116862] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:47:56.973 [DEBUG] [Thread-116862] [transport.py] [_log()] Compression: none
2025-11-03T13:47:56.973 [DEBUG] [Thread-116862] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:47:56.990 [DEBUG] [Thread-116862] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:47:56.990 [DEBUG] [Thread-116862] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:47:56.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:47:56.991 [DEBUG] [Thread-116862] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:47:56.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:47:56.992 [DEBUG] [Thread-116862] [transport.py] [_log()] userauth is OK
2025-11-03T13:47:56.993 [DEBUG] [Thread-116862] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:47:56.993 [DEBUG] [Thread-116862] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:47:56.993 [DEBUG] [Thread-116862] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:47:56.993 [DEBUG] [Thread-116862] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:47:57.014 [INFO] [Thread-116862] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:47:57.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:47:57.677 [DEBUG] [Thread-116862] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:47:57.677 [DEBUG] [Thread-116862] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:47:57.677 [DEBUG] [Thread-116862] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:47:57.718 [DEBUG] [Thread-116862] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:47:57.718 [DEBUG] [Thread-116862] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:47:57.721 [DEBUG] [Thread-116862] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:47:57.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:47:57.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:47:57.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:47:57.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:47:57.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:47:57.747 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:47:57.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:47:57.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:47:57.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:47:57.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.491075 -999.00  +25.30  15.99      8  -10.50 1 1 1 1 1   888    0 37.03 46.34 ----- 18.2 16.0 353.2 28.3 30.5 -30.5 29.8 -30.2 30.4 -30.3 31.0 -28.8
2025-11-03T13:47:57.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:47:57.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:47:57.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.491075
2025-11-03T13:47:57.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:47:57.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:47:57.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:47:57.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:47:57.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:47:57.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:47:43', tmtdew=45.68, humidity=3.9, cloud=0.0, wind=24.08, temperature=25.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:47:08.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:47:57.748 [DEBUG] [Thread-116862] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:47:57.819 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:47:57.831 [DEBUG] [Thread-116865] [transport.py] [_log()] starting thread (client mode): 0xed2c2b0
2025-11-03T13:47:57.831 [DEBUG] [Thread-116865] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:47:57.845 [DEBUG] [Thread-116865] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:47:57.845 [INFO] [Thread-116865] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:47:57.853 [DEBUG] [Thread-116865] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:47:57.853 [DEBUG] [Thread-116865] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:47:57.853 [DEBUG] [Thread-116865] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:47:57.853 [DEBUG] [Thread-116865] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:47:57.853 [DEBUG] [Thread-116865] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:47:57.853 [DEBUG] [Thread-116865] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:47:57.853 [DEBUG] [Thread-116865] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:47:57.853 [DEBUG] [Thread-116865] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:47:57.853 [DEBUG] [Thread-116865] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:47:57.853 [DEBUG] [Thread-116865] [transport.py] [_log()] client lang: <none>
2025-11-03T13:47:57.853 [DEBUG] [Thread-116865] [transport.py] [_log()] server lang: <none>
2025-11-03T13:47:57.853 [DEBUG] [Thread-116865] [transport.py] [_log()] kex follows: False
2025-11-03T13:47:57.853 [DEBUG] [Thread-116865] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:47:57.853 [DEBUG] [Thread-116865] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:47:57.853 [DEBUG] [Thread-116865] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:47:57.853 [DEBUG] [Thread-116865] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:47:57.853 [DEBUG] [Thread-116865] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:47:57.853 [DEBUG] [Thread-116865] [transport.py] [_log()] Compression: none
2025-11-03T13:47:57.854 [DEBUG] [Thread-116865] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:47:57.910 [DEBUG] [Thread-116865] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:47:57.910 [DEBUG] [Thread-116865] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:47:57.910 [DEBUG] [Thread-116865] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:47:57.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:47:57.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:47:57.967 [DEBUG] [Thread-116865] [transport.py] [_log()] userauth is OK
2025-11-03T13:47:57.967 [DEBUG] [Thread-116865] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:47:57.967 [DEBUG] [Thread-116865] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:47:57.967 [DEBUG] [Thread-116865] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:47:57.967 [DEBUG] [Thread-116865] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:47:57.981 [INFO] [Thread-116865] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:47:57.981 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:47:57.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:47:58.829 [DEBUG] [Thread-116865] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:47:58.829 [DEBUG] [Thread-116865] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:47:58.877 [DEBUG] [Thread-116865] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:47:58.877 [DEBUG] [Thread-116865] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:47:58.887 [DEBUG] [Thread-116865] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:47:58.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:47:58.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:47:58.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:47:58.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:47:58.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:47:58.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:47:58.924 [DEBUG] [Thread-116865] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:48:07.821 [DEBUG] [Thread-116867 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:48:09.934 [DEBUG] [Thread-116868 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:48:24.976 [DEBUG] [Thread-116869 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:48:28.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:48:28.947 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:48:28.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:48:29.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 48, 15), 45.71, 3.89, 0.0, 26.78, 25.7, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:48:29.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:48:15
2025-11-03T13:48:29.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:48:29.895 [DEBUG] [Thread-116870] [transport.py] [_log()] starting thread (client mode): 0xed2ded0
2025-11-03T13:48:29.895 [DEBUG] [Thread-116870] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:48:29.915 [DEBUG] [Thread-116870] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:48:29.915 [INFO] [Thread-116870] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:48:29.918 [DEBUG] [Thread-116870] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:48:29.918 [DEBUG] [Thread-116870] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:48:29.918 [DEBUG] [Thread-116870] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:48:29.918 [DEBUG] [Thread-116870] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:48:29.918 [DEBUG] [Thread-116870] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:48:29.918 [DEBUG] [Thread-116870] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:48:29.918 [DEBUG] [Thread-116870] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:48:29.918 [DEBUG] [Thread-116870] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:48:29.918 [DEBUG] [Thread-116870] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:48:29.918 [DEBUG] [Thread-116870] [transport.py] [_log()] client lang: <none>
2025-11-03T13:48:29.918 [DEBUG] [Thread-116870] [transport.py] [_log()] server lang: <none>
2025-11-03T13:48:29.918 [DEBUG] [Thread-116870] [transport.py] [_log()] kex follows: False
2025-11-03T13:48:29.918 [DEBUG] [Thread-116870] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:48:29.918 [DEBUG] [Thread-116870] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:48:29.918 [DEBUG] [Thread-116870] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:48:29.918 [DEBUG] [Thread-116870] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:48:29.918 [DEBUG] [Thread-116870] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:48:29.918 [DEBUG] [Thread-116870] [transport.py] [_log()] Compression: none
2025-11-03T13:48:29.918 [DEBUG] [Thread-116870] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:48:29.944 [DEBUG] [Thread-116870] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:48:29.945 [DEBUG] [Thread-116870] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:48:29.946 [DEBUG] [Thread-116870] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:48:29.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:48:29.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:48:29.989 [DEBUG] [Thread-116870] [transport.py] [_log()] userauth is OK
2025-11-03T13:48:29.989 [DEBUG] [Thread-116870] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:48:29.989 [DEBUG] [Thread-116870] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:48:29.989 [DEBUG] [Thread-116870] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:48:29.989 [DEBUG] [Thread-116870] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:48:30.021 [INFO] [Thread-116870] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:48:30.022 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:48:30.615 [DEBUG] [Thread-116870] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:48:30.615 [DEBUG] [Thread-116870] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:48:30.616 [DEBUG] [Thread-116870] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:48:30.656 [DEBUG] [Thread-116870] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:48:30.656 [DEBUG] [Thread-116870] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:48:30.659 [DEBUG] [Thread-116870] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:48:30.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:48:30.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:48:30.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:48:30.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:48:30.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:48:30.678 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:48:30.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:48:30.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:48:30.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:48:30.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.491423 -999.00  +25.40  10.22      8  -10.30 1 1 1 1 1   888    0 37.66 49.28 ----- 10.4 10.2 10.0 20.3 30.5 -29.9 29.7 -30.1 30.4 -29.0 30.9 -29.6
2025-11-03T13:48:30.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:48:30.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:48:30.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.491423
2025-11-03T13:48:30.687 [DEBUG] [Thread-116870] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:48:30.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:48:30.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:48:30.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:48:30.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:48:30.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:48:30.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:48:15', tmtdew=45.71, humidity=3.89, cloud=0.0, wind=26.78, temperature=25.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:47:38.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:48:30.759 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:48:30.771 [DEBUG] [Thread-116873] [transport.py] [_log()] starting thread (client mode): 0xeda03d0
2025-11-03T13:48:30.771 [DEBUG] [Thread-116873] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:48:30.788 [DEBUG] [Thread-116873] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:48:30.788 [INFO] [Thread-116873] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:48:30.796 [DEBUG] [Thread-116873] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:48:30.796 [DEBUG] [Thread-116873] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:48:30.796 [DEBUG] [Thread-116873] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:48:30.796 [DEBUG] [Thread-116873] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:48:30.796 [DEBUG] [Thread-116873] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:48:30.796 [DEBUG] [Thread-116873] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:48:30.796 [DEBUG] [Thread-116873] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:48:30.796 [DEBUG] [Thread-116873] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:48:30.796 [DEBUG] [Thread-116873] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:48:30.796 [DEBUG] [Thread-116873] [transport.py] [_log()] client lang: <none>
2025-11-03T13:48:30.796 [DEBUG] [Thread-116873] [transport.py] [_log()] server lang: <none>
2025-11-03T13:48:30.796 [DEBUG] [Thread-116873] [transport.py] [_log()] kex follows: False
2025-11-03T13:48:30.796 [DEBUG] [Thread-116873] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:48:30.796 [DEBUG] [Thread-116873] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:48:30.796 [DEBUG] [Thread-116873] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:48:30.796 [DEBUG] [Thread-116873] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:48:30.796 [DEBUG] [Thread-116873] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:48:30.796 [DEBUG] [Thread-116873] [transport.py] [_log()] Compression: none
2025-11-03T13:48:30.796 [DEBUG] [Thread-116873] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:48:30.854 [DEBUG] [Thread-116873] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:48:30.858 [DEBUG] [Thread-116873] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:48:30.858 [DEBUG] [Thread-116873] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:48:30.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:48:30.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:48:30.911 [DEBUG] [Thread-116873] [transport.py] [_log()] userauth is OK
2025-11-03T13:48:30.911 [DEBUG] [Thread-116873] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:48:30.911 [DEBUG] [Thread-116873] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:48:30.911 [DEBUG] [Thread-116873] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:48:30.911 [DEBUG] [Thread-116873] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:48:30.925 [INFO] [Thread-116873] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:48:30.925 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:48:30.925 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:48:31.759 [DEBUG] [Thread-116873] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:48:31.759 [DEBUG] [Thread-116873] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:48:31.806 [DEBUG] [Thread-116873] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:48:31.806 [DEBUG] [Thread-116873] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:48:31.815 [DEBUG] [Thread-116873] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:48:31.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:48:31.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:48:31.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:48:31.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:48:31.839 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:48:31.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:48:31.847 [DEBUG] [Thread-116873] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:48:40.012 [DEBUG] [Thread-116875 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:48:51.906 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:48:51.906 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:48:55.073 [DEBUG] [Thread-116876 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:49:01.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:49:01.859 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:49:01.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:49:02.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 48, 48), 45.47, 3.97, 0.0, 31.05, 26.59, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:49:02.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:48:48
2025-11-03T13:49:02.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:49:02.795 [DEBUG] [Thread-116877] [transport.py] [_log()] starting thread (client mode): 0xeda1750
2025-11-03T13:49:02.795 [DEBUG] [Thread-116877] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:49:02.815 [DEBUG] [Thread-116877] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:49:02.816 [INFO] [Thread-116877] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:49:02.819 [DEBUG] [Thread-116877] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:49:02.819 [DEBUG] [Thread-116877] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:49:02.819 [DEBUG] [Thread-116877] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:49:02.819 [DEBUG] [Thread-116877] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:49:02.819 [DEBUG] [Thread-116877] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:49:02.819 [DEBUG] [Thread-116877] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:49:02.819 [DEBUG] [Thread-116877] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:49:02.819 [DEBUG] [Thread-116877] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:49:02.819 [DEBUG] [Thread-116877] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:49:02.819 [DEBUG] [Thread-116877] [transport.py] [_log()] client lang: <none>
2025-11-03T13:49:02.819 [DEBUG] [Thread-116877] [transport.py] [_log()] server lang: <none>
2025-11-03T13:49:02.819 [DEBUG] [Thread-116877] [transport.py] [_log()] kex follows: False
2025-11-03T13:49:02.819 [DEBUG] [Thread-116877] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:49:02.819 [DEBUG] [Thread-116877] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:49:02.819 [DEBUG] [Thread-116877] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:49:02.819 [DEBUG] [Thread-116877] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:49:02.819 [DEBUG] [Thread-116877] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:49:02.819 [DEBUG] [Thread-116877] [transport.py] [_log()] Compression: none
2025-11-03T13:49:02.819 [DEBUG] [Thread-116877] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:49:02.837 [DEBUG] [Thread-116877] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:49:02.846 [DEBUG] [Thread-116877] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:49:02.847 [DEBUG] [Thread-116877] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:49:02.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:49:02.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:49:02.880 [DEBUG] [Thread-116877] [transport.py] [_log()] userauth is OK
2025-11-03T13:49:02.880 [DEBUG] [Thread-116877] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:49:02.880 [DEBUG] [Thread-116877] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:49:02.881 [DEBUG] [Thread-116877] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:49:02.881 [DEBUG] [Thread-116877] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:49:02.901 [INFO] [Thread-116877] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:49:02.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:49:03.545 [DEBUG] [Thread-116877] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:49:03.545 [DEBUG] [Thread-116877] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:49:03.545 [DEBUG] [Thread-116877] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:49:03.586 [DEBUG] [Thread-116877] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:49:03.586 [DEBUG] [Thread-116877] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:49:03.588 [DEBUG] [Thread-116877] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:49:03.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:49:03.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:49:03.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:49:03.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:49:03.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:49:03.605 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:49:03.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:49:03.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:49:03.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:49:03.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.491770 -999.00  +26.00  17.30      8  -10.00 1 1 1 1 1   888    0 37.84 51.45 ----- 20.1 17.3 350.8 25.4 30.6 -30.4 29.9 -28.9 30.5 -29.1 31.2 -28.6
2025-11-03T13:49:03.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:49:03.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:49:03.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.491770
2025-11-03T13:49:03.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:49:03.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:49:03.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:49:03.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:49:03.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:49:03.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:48:48', tmtdew=45.47, humidity=3.97, cloud=0.0, wind=31.05, temperature=26.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:48:08.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:49:03.605 [DEBUG] [Thread-116877] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:49:03.678 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:49:03.690 [DEBUG] [Thread-116880] [transport.py] [_log()] starting thread (client mode): 0xed2c5b0
2025-11-03T13:49:03.690 [DEBUG] [Thread-116880] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:49:03.705 [DEBUG] [Thread-116880] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:49:03.705 [INFO] [Thread-116880] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:49:03.712 [DEBUG] [Thread-116880] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:49:03.712 [DEBUG] [Thread-116880] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:49:03.712 [DEBUG] [Thread-116880] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:49:03.712 [DEBUG] [Thread-116880] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:49:03.712 [DEBUG] [Thread-116880] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:49:03.712 [DEBUG] [Thread-116880] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:49:03.712 [DEBUG] [Thread-116880] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:49:03.712 [DEBUG] [Thread-116880] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:49:03.712 [DEBUG] [Thread-116880] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:49:03.712 [DEBUG] [Thread-116880] [transport.py] [_log()] client lang: <none>
2025-11-03T13:49:03.712 [DEBUG] [Thread-116880] [transport.py] [_log()] server lang: <none>
2025-11-03T13:49:03.712 [DEBUG] [Thread-116880] [transport.py] [_log()] kex follows: False
2025-11-03T13:49:03.712 [DEBUG] [Thread-116880] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:49:03.712 [DEBUG] [Thread-116880] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:49:03.712 [DEBUG] [Thread-116880] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:49:03.713 [DEBUG] [Thread-116880] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:49:03.713 [DEBUG] [Thread-116880] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:49:03.713 [DEBUG] [Thread-116880] [transport.py] [_log()] Compression: none
2025-11-03T13:49:03.713 [DEBUG] [Thread-116880] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:49:03.769 [DEBUG] [Thread-116880] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:49:03.770 [DEBUG] [Thread-116880] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:49:03.770 [DEBUG] [Thread-116880] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:49:03.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:49:03.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:49:03.827 [DEBUG] [Thread-116880] [transport.py] [_log()] userauth is OK
2025-11-03T13:49:03.827 [DEBUG] [Thread-116880] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:49:03.827 [DEBUG] [Thread-116880] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:49:03.827 [DEBUG] [Thread-116880] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:49:03.827 [DEBUG] [Thread-116880] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:49:03.841 [INFO] [Thread-116880] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:49:03.841 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:49:03.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:49:04.668 [DEBUG] [Thread-116880] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:49:04.668 [DEBUG] [Thread-116880] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:49:04.716 [DEBUG] [Thread-116880] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:49:04.717 [DEBUG] [Thread-116880] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:49:04.726 [DEBUG] [Thread-116880] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:49:04.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:49:04.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:49:04.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:49:04.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:49:04.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:49:04.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:49:04.760 [DEBUG] [Thread-116880] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:49:07.899 [DEBUG] [Thread-116882 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:49:10.107 [DEBUG] [Thread-116883 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:49:25.159 [DEBUG] [Thread-116884 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:49:34.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:49:34.783 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:49:34.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:49:35.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 49, 20), 45.83, 3.87, 0.0, 36.72, 26.78, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:49:35.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:49:20
2025-11-03T13:49:35.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:49:35.714 [DEBUG] [Thread-116885] [transport.py] [_log()] starting thread (client mode): 0xed4c1f0
2025-11-03T13:49:35.714 [DEBUG] [Thread-116885] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:49:35.735 [DEBUG] [Thread-116885] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:49:35.735 [INFO] [Thread-116885] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:49:35.738 [DEBUG] [Thread-116885] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:49:35.739 [DEBUG] [Thread-116885] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:49:35.739 [DEBUG] [Thread-116885] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:49:35.739 [DEBUG] [Thread-116885] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:49:35.739 [DEBUG] [Thread-116885] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:49:35.739 [DEBUG] [Thread-116885] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:49:35.739 [DEBUG] [Thread-116885] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:49:35.739 [DEBUG] [Thread-116885] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:49:35.739 [DEBUG] [Thread-116885] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:49:35.739 [DEBUG] [Thread-116885] [transport.py] [_log()] client lang: <none>
2025-11-03T13:49:35.739 [DEBUG] [Thread-116885] [transport.py] [_log()] server lang: <none>
2025-11-03T13:49:35.740 [DEBUG] [Thread-116885] [transport.py] [_log()] kex follows: False
2025-11-03T13:49:35.740 [DEBUG] [Thread-116885] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:49:35.740 [DEBUG] [Thread-116885] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:49:35.740 [DEBUG] [Thread-116885] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:49:35.740 [DEBUG] [Thread-116885] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:49:35.740 [DEBUG] [Thread-116885] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:49:35.740 [DEBUG] [Thread-116885] [transport.py] [_log()] Compression: none
2025-11-03T13:49:35.740 [DEBUG] [Thread-116885] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:49:35.760 [DEBUG] [Thread-116885] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:49:35.761 [DEBUG] [Thread-116885] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:49:35.762 [DEBUG] [Thread-116885] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:49:35.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:49:35.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:49:35.764 [DEBUG] [Thread-116885] [transport.py] [_log()] userauth is OK
2025-11-03T13:49:35.764 [DEBUG] [Thread-116885] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:49:35.764 [DEBUG] [Thread-116885] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:49:35.765 [DEBUG] [Thread-116885] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:49:35.765 [DEBUG] [Thread-116885] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:49:35.792 [INFO] [Thread-116885] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:49:35.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:49:36.460 [DEBUG] [Thread-116885] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:49:36.460 [DEBUG] [Thread-116885] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:49:36.460 [DEBUG] [Thread-116885] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:49:36.501 [DEBUG] [Thread-116885] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:49:36.501 [DEBUG] [Thread-116885] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:49:36.504 [DEBUG] [Thread-116885] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:49:36.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:49:36.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:49:36.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:49:36.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:49:36.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:49:36.523 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:49:36.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:49:36.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:49:36.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:49:36.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.492117 -999.00  +26.20  24.78      8   -9.60 1 1 1 1 1   888    0 38.16 49.41 ----- 34.4 24.8 328.6 47.6 30.7 -30.1 29.9 -29.0 30.6 -27.8 31.2 -30.8
2025-11-03T13:49:36.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:49:36.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:49:36.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.492117
2025-11-03T13:49:36.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:49:36.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:49:36.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:49:36.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:49:36.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:49:36.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:49:20', tmtdew=45.83, humidity=3.87, cloud=0.0, wind=36.72, temperature=26.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:48:38.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:49:36.524 [DEBUG] [Thread-116885] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:49:36.595 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:49:36.607 [DEBUG] [Thread-116888] [transport.py] [_log()] starting thread (client mode): 0xed4dde0
2025-11-03T13:49:36.607 [DEBUG] [Thread-116888] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:49:36.621 [DEBUG] [Thread-116888] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:49:36.621 [INFO] [Thread-116888] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:49:36.628 [DEBUG] [Thread-116888] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:49:36.629 [DEBUG] [Thread-116888] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:49:36.629 [DEBUG] [Thread-116888] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:49:36.629 [DEBUG] [Thread-116888] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:49:36.629 [DEBUG] [Thread-116888] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:49:36.629 [DEBUG] [Thread-116888] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:49:36.629 [DEBUG] [Thread-116888] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:49:36.629 [DEBUG] [Thread-116888] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:49:36.629 [DEBUG] [Thread-116888] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:49:36.629 [DEBUG] [Thread-116888] [transport.py] [_log()] client lang: <none>
2025-11-03T13:49:36.629 [DEBUG] [Thread-116888] [transport.py] [_log()] server lang: <none>
2025-11-03T13:49:36.629 [DEBUG] [Thread-116888] [transport.py] [_log()] kex follows: False
2025-11-03T13:49:36.630 [DEBUG] [Thread-116888] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:49:36.630 [DEBUG] [Thread-116888] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:49:36.630 [DEBUG] [Thread-116888] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:49:36.630 [DEBUG] [Thread-116888] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:49:36.630 [DEBUG] [Thread-116888] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:49:36.630 [DEBUG] [Thread-116888] [transport.py] [_log()] Compression: none
2025-11-03T13:49:36.630 [DEBUG] [Thread-116888] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:49:36.688 [DEBUG] [Thread-116888] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:49:36.689 [DEBUG] [Thread-116888] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:49:36.689 [DEBUG] [Thread-116888] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:49:36.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:49:36.691 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:49:36.744 [DEBUG] [Thread-116888] [transport.py] [_log()] userauth is OK
2025-11-03T13:49:36.744 [DEBUG] [Thread-116888] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:49:36.745 [DEBUG] [Thread-116888] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:49:36.745 [DEBUG] [Thread-116888] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:49:36.745 [DEBUG] [Thread-116888] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:49:36.764 [INFO] [Thread-116888] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:49:36.764 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:49:36.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:49:37.584 [DEBUG] [Thread-116888] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:49:37.584 [DEBUG] [Thread-116888] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:49:37.632 [DEBUG] [Thread-116888] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:49:37.632 [DEBUG] [Thread-116888] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:49:37.642 [DEBUG] [Thread-116888] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:49:37.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:49:37.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:49:37.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:49:37.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:49:37.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:49:37.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:49:37.680 [DEBUG] [Thread-116888] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:49:40.193 [DEBUG] [Thread-116890 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:49:52.046 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:49:52.047 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:49:55.255 [DEBUG] [Thread-116891 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:50:07.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:50:07.702 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:50:07.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:50:07.939 [DEBUG] [Thread-116892 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:50:08.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 49, 52), 46.2, 3.8, 0.0, 34.35, 26.2, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:50:08.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:49:52
2025-11-03T13:50:08.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:50:08.791 [DEBUG] [Thread-116893] [transport.py] [_log()] starting thread (client mode): 0xed2dd20
2025-11-03T13:50:08.791 [DEBUG] [Thread-116893] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:50:08.807 [DEBUG] [Thread-116893] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:50:08.807 [INFO] [Thread-116893] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:50:08.810 [DEBUG] [Thread-116893] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:50:08.810 [DEBUG] [Thread-116893] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:50:08.810 [DEBUG] [Thread-116893] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:50:08.810 [DEBUG] [Thread-116893] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:50:08.810 [DEBUG] [Thread-116893] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:50:08.810 [DEBUG] [Thread-116893] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:50:08.810 [DEBUG] [Thread-116893] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:50:08.810 [DEBUG] [Thread-116893] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:50:08.810 [DEBUG] [Thread-116893] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:50:08.810 [DEBUG] [Thread-116893] [transport.py] [_log()] client lang: <none>
2025-11-03T13:50:08.810 [DEBUG] [Thread-116893] [transport.py] [_log()] server lang: <none>
2025-11-03T13:50:08.810 [DEBUG] [Thread-116893] [transport.py] [_log()] kex follows: False
2025-11-03T13:50:08.810 [DEBUG] [Thread-116893] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:50:08.810 [DEBUG] [Thread-116893] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:50:08.810 [DEBUG] [Thread-116893] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:50:08.810 [DEBUG] [Thread-116893] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:50:08.810 [DEBUG] [Thread-116893] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:50:08.810 [DEBUG] [Thread-116893] [transport.py] [_log()] Compression: none
2025-11-03T13:50:08.810 [DEBUG] [Thread-116893] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:50:08.822 [DEBUG] [Thread-116893] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:50:08.822 [DEBUG] [Thread-116893] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:50:08.822 [DEBUG] [Thread-116893] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:50:08.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:50:08.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:50:08.823 [DEBUG] [Thread-116893] [transport.py] [_log()] userauth is OK
2025-11-03T13:50:08.823 [DEBUG] [Thread-116893] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:50:08.823 [DEBUG] [Thread-116893] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:50:08.823 [DEBUG] [Thread-116893] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:50:08.823 [DEBUG] [Thread-116893] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:50:08.837 [INFO] [Thread-116893] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:50:08.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:50:09.680 [DEBUG] [Thread-116893] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:50:09.680 [DEBUG] [Thread-116893] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:50:09.680 [DEBUG] [Thread-116893] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:50:09.720 [DEBUG] [Thread-116893] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:50:09.720 [DEBUG] [Thread-116893] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:50:09.722 [DEBUG] [Thread-116893] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:50:09.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:50:09.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:50:09.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:50:09.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:50:09.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:50:09.737 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:50:09.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:50:09.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:50:09.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:50:09.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.492464 -999.00  +25.60  27.29      8  -10.10 1 1 1 1 1   888    0 37.67 41.25 ----- 23.1 27.3 332.1 42.2 30.5 -31.2 29.9 -32.9 30.5 -29.6 31.3 -30.1
2025-11-03T13:50:09.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:50:09.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:50:09.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.492464
2025-11-03T13:50:09.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:50:09.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:50:09.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:50:09.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:50:09.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:50:09.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:49:52', tmtdew=46.2, humidity=3.8, cloud=0.0, wind=34.35, temperature=26.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:49:08.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:50:09.738 [DEBUG] [Thread-116893] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:50:09.812 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:50:09.823 [DEBUG] [Thread-116896] [transport.py] [_log()] starting thread (client mode): 0xeda0370
2025-11-03T13:50:09.823 [DEBUG] [Thread-116896] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:50:09.840 [DEBUG] [Thread-116896] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:50:09.840 [INFO] [Thread-116896] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:50:09.848 [DEBUG] [Thread-116896] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:50:09.848 [DEBUG] [Thread-116896] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:50:09.848 [DEBUG] [Thread-116896] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:50:09.848 [DEBUG] [Thread-116896] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:50:09.848 [DEBUG] [Thread-116896] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:50:09.848 [DEBUG] [Thread-116896] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:50:09.848 [DEBUG] [Thread-116896] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:50:09.848 [DEBUG] [Thread-116896] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:50:09.848 [DEBUG] [Thread-116896] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:50:09.848 [DEBUG] [Thread-116896] [transport.py] [_log()] client lang: <none>
2025-11-03T13:50:09.848 [DEBUG] [Thread-116896] [transport.py] [_log()] server lang: <none>
2025-11-03T13:50:09.848 [DEBUG] [Thread-116896] [transport.py] [_log()] kex follows: False
2025-11-03T13:50:09.848 [DEBUG] [Thread-116896] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:50:09.848 [DEBUG] [Thread-116896] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:50:09.848 [DEBUG] [Thread-116896] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:50:09.848 [DEBUG] [Thread-116896] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:50:09.848 [DEBUG] [Thread-116896] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:50:09.848 [DEBUG] [Thread-116896] [transport.py] [_log()] Compression: none
2025-11-03T13:50:09.848 [DEBUG] [Thread-116896] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:50:09.906 [DEBUG] [Thread-116896] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:50:09.906 [DEBUG] [Thread-116896] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:50:09.906 [DEBUG] [Thread-116896] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:50:09.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:50:09.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:50:09.963 [DEBUG] [Thread-116896] [transport.py] [_log()] userauth is OK
2025-11-03T13:50:09.964 [DEBUG] [Thread-116896] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:50:09.964 [DEBUG] [Thread-116896] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:50:09.964 [DEBUG] [Thread-116896] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:50:09.964 [DEBUG] [Thread-116896] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:50:09.982 [INFO] [Thread-116896] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:50:09.982 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:50:09.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:50:10.283 [DEBUG] [Thread-116898 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:50:10.818 [DEBUG] [Thread-116896] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:50:10.818 [DEBUG] [Thread-116896] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:50:10.867 [DEBUG] [Thread-116896] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:50:10.867 [DEBUG] [Thread-116896] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:50:10.876 [DEBUG] [Thread-116896] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:50:10.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:50:10.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:50:10.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:50:10.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:50:10.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:50:10.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:50:10.914 [DEBUG] [Thread-116896] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:50:25.328 [DEBUG] [Thread-116899 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:50:40.366 [DEBUG] [Thread-116900 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:50:40.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:50:40.921 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:50:40.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:50:41.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 50, 24), 45.73, 3.94, 0.0, 34.62, 26.01, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:50:41.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:50:24
2025-11-03T13:50:41.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:50:41.902 [DEBUG] [Thread-116901] [transport.py] [_log()] starting thread (client mode): 0xed4e380
2025-11-03T13:50:41.902 [DEBUG] [Thread-116901] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:50:41.922 [DEBUG] [Thread-116901] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:50:41.923 [INFO] [Thread-116901] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:50:41.926 [DEBUG] [Thread-116901] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:50:41.926 [DEBUG] [Thread-116901] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:50:41.926 [DEBUG] [Thread-116901] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:50:41.926 [DEBUG] [Thread-116901] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:50:41.926 [DEBUG] [Thread-116901] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:50:41.926 [DEBUG] [Thread-116901] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:50:41.926 [DEBUG] [Thread-116901] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:50:41.926 [DEBUG] [Thread-116901] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:50:41.926 [DEBUG] [Thread-116901] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:50:41.926 [DEBUG] [Thread-116901] [transport.py] [_log()] client lang: <none>
2025-11-03T13:50:41.926 [DEBUG] [Thread-116901] [transport.py] [_log()] server lang: <none>
2025-11-03T13:50:41.926 [DEBUG] [Thread-116901] [transport.py] [_log()] kex follows: False
2025-11-03T13:50:41.926 [DEBUG] [Thread-116901] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:50:41.927 [DEBUG] [Thread-116901] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:50:41.927 [DEBUG] [Thread-116901] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:50:41.927 [DEBUG] [Thread-116901] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:50:41.927 [DEBUG] [Thread-116901] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:50:41.927 [DEBUG] [Thread-116901] [transport.py] [_log()] Compression: none
2025-11-03T13:50:41.927 [DEBUG] [Thread-116901] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:50:41.943 [DEBUG] [Thread-116901] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:50:41.944 [DEBUG] [Thread-116901] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:50:41.945 [DEBUG] [Thread-116901] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:50:41.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:50:41.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:50:41.947 [DEBUG] [Thread-116901] [transport.py] [_log()] userauth is OK
2025-11-03T13:50:41.947 [DEBUG] [Thread-116901] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:50:41.947 [DEBUG] [Thread-116901] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:50:41.947 [DEBUG] [Thread-116901] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:50:41.947 [DEBUG] [Thread-116901] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:50:41.973 [INFO] [Thread-116901] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:50:41.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:50:42.612 [DEBUG] [Thread-116901] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:50:42.612 [DEBUG] [Thread-116901] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:50:42.613 [DEBUG] [Thread-116901] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:50:42.653 [DEBUG] [Thread-116901] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:50:42.653 [DEBUG] [Thread-116901] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:50:42.656 [DEBUG] [Thread-116901] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:50:42.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:50:42.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:50:42.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:50:42.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:50:42.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:50:42.682 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:50:42.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:50:42.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:50:42.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:50:42.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.493159 -999.00  +26.00  33.39      8   -9.70 1 1 2 1 1   888    0 37.54 32.72 ----- 30.6 33.4 21.2 37.4 30.5 -30.5 29.9 -29.6 30.5 -29.0 31.0 -30.0
2025-11-03T13:50:42.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:50:42.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:50:42.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.493159
2025-11-03T13:50:42.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:50:42.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:50:42.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:50:42.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:50:42.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:50:42.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:50:24', tmtdew=45.73, humidity=3.94, cloud=0.0, wind=34.62, temperature=26.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:50:08.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:50:42.685 [DEBUG] [Thread-116901] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:50:42.763 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:50:42.774 [DEBUG] [Thread-116904] [transport.py] [_log()] starting thread (client mode): 0xed4e620
2025-11-03T13:50:42.774 [DEBUG] [Thread-116904] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:50:42.789 [DEBUG] [Thread-116904] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:50:42.789 [INFO] [Thread-116904] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:50:42.796 [DEBUG] [Thread-116904] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:50:42.797 [DEBUG] [Thread-116904] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:50:42.797 [DEBUG] [Thread-116904] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:50:42.797 [DEBUG] [Thread-116904] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:50:42.797 [DEBUG] [Thread-116904] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:50:42.797 [DEBUG] [Thread-116904] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:50:42.797 [DEBUG] [Thread-116904] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:50:42.797 [DEBUG] [Thread-116904] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:50:42.797 [DEBUG] [Thread-116904] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:50:42.797 [DEBUG] [Thread-116904] [transport.py] [_log()] client lang: <none>
2025-11-03T13:50:42.797 [DEBUG] [Thread-116904] [transport.py] [_log()] server lang: <none>
2025-11-03T13:50:42.797 [DEBUG] [Thread-116904] [transport.py] [_log()] kex follows: False
2025-11-03T13:50:42.797 [DEBUG] [Thread-116904] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:50:42.797 [DEBUG] [Thread-116904] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:50:42.797 [DEBUG] [Thread-116904] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:50:42.797 [DEBUG] [Thread-116904] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:50:42.797 [DEBUG] [Thread-116904] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:50:42.797 [DEBUG] [Thread-116904] [transport.py] [_log()] Compression: none
2025-11-03T13:50:42.797 [DEBUG] [Thread-116904] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:50:42.855 [DEBUG] [Thread-116904] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:50:42.856 [DEBUG] [Thread-116904] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:50:42.857 [DEBUG] [Thread-116904] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:50:42.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:50:42.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:50:42.912 [DEBUG] [Thread-116904] [transport.py] [_log()] userauth is OK
2025-11-03T13:50:42.912 [DEBUG] [Thread-116904] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:50:42.913 [DEBUG] [Thread-116904] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:50:42.913 [DEBUG] [Thread-116904] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:50:42.913 [DEBUG] [Thread-116904] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:50:42.931 [INFO] [Thread-116904] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:50:42.932 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:50:42.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:50:43.824 [DEBUG] [Thread-116904] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:50:43.825 [DEBUG] [Thread-116904] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:50:43.872 [DEBUG] [Thread-116904] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:50:43.873 [DEBUG] [Thread-116904] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:50:43.881 [DEBUG] [Thread-116904] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:50:43.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:50:43.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:50:43.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:50:43.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:50:43.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:50:43.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:50:43.914 [DEBUG] [Thread-116904] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:50:52.187 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:50:52.188 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:50:55.397 [DEBUG] [Thread-116906 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:51:07.975 [DEBUG] [Thread-116907 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:51:10.444 [DEBUG] [Thread-116908 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:51:13.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:51:13.909 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:51:13.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:51:14.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 50, 59), 45.38, 3.95, 0.0, 31.87, 25.95, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:51:14.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:50:59
2025-11-03T13:51:14.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:51:14.904 [DEBUG] [Thread-116909] [transport.py] [_log()] starting thread (client mode): 0xed2d450
2025-11-03T13:51:14.904 [DEBUG] [Thread-116909] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:51:14.915 [DEBUG] [Thread-116909] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:51:14.915 [INFO] [Thread-116909] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:51:14.918 [DEBUG] [Thread-116909] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:51:14.918 [DEBUG] [Thread-116909] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:51:14.918 [DEBUG] [Thread-116909] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:51:14.918 [DEBUG] [Thread-116909] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:51:14.918 [DEBUG] [Thread-116909] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:51:14.918 [DEBUG] [Thread-116909] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:51:14.918 [DEBUG] [Thread-116909] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:51:14.919 [DEBUG] [Thread-116909] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:51:14.919 [DEBUG] [Thread-116909] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:51:14.919 [DEBUG] [Thread-116909] [transport.py] [_log()] client lang: <none>
2025-11-03T13:51:14.919 [DEBUG] [Thread-116909] [transport.py] [_log()] server lang: <none>
2025-11-03T13:51:14.919 [DEBUG] [Thread-116909] [transport.py] [_log()] kex follows: False
2025-11-03T13:51:14.919 [DEBUG] [Thread-116909] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:51:14.919 [DEBUG] [Thread-116909] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:51:14.919 [DEBUG] [Thread-116909] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:51:14.919 [DEBUG] [Thread-116909] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:51:14.919 [DEBUG] [Thread-116909] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:51:14.919 [DEBUG] [Thread-116909] [transport.py] [_log()] Compression: none
2025-11-03T13:51:14.919 [DEBUG] [Thread-116909] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:51:14.938 [DEBUG] [Thread-116909] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:51:14.938 [DEBUG] [Thread-116909] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:51:14.938 [DEBUG] [Thread-116909] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:51:14.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:51:14.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:51:14.939 [DEBUG] [Thread-116909] [transport.py] [_log()] userauth is OK
2025-11-03T13:51:14.939 [DEBUG] [Thread-116909] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:51:14.939 [DEBUG] [Thread-116909] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:51:14.939 [DEBUG] [Thread-116909] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:51:14.939 [DEBUG] [Thread-116909] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:51:14.948 [INFO] [Thread-116909] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:51:14.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:51:15.572 [DEBUG] [Thread-116909] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:51:15.572 [DEBUG] [Thread-116909] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:51:15.572 [DEBUG] [Thread-116909] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:51:15.613 [DEBUG] [Thread-116909] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:51:15.614 [DEBUG] [Thread-116909] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:51:15.617 [DEBUG] [Thread-116909] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:51:15.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:51:15.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:51:15.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:51:15.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:51:15.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:51:15.644 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:51:15.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:51:15.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:51:15.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:51:15.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.493506 -999.00  +25.70  22.73      8   -9.90 1 1 1 1 1   888    0 37.32 30.75 ----- 27.8 22.7 16.8 40.0 30.4 -30.5 29.7 -29.7 30.3 -30.6 30.8 -38.4
2025-11-03T13:51:15.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:51:15.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:51:15.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.493506
2025-11-03T13:51:15.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:51:15.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:51:15.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:51:15.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:51:15.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:51:15.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:50:59', tmtdew=45.38, humidity=3.95, cloud=0.0, wind=31.87, temperature=25.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:50:38.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:51:15.648 [DEBUG] [Thread-116909] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:51:15.731 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:51:15.743 [DEBUG] [Thread-116912] [transport.py] [_log()] starting thread (client mode): 0xeda1ba0
2025-11-03T13:51:15.744 [DEBUG] [Thread-116912] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:51:15.759 [DEBUG] [Thread-116912] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:51:15.759 [INFO] [Thread-116912] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:51:15.766 [DEBUG] [Thread-116912] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:51:15.767 [DEBUG] [Thread-116912] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:51:15.767 [DEBUG] [Thread-116912] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:51:15.767 [DEBUG] [Thread-116912] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:51:15.767 [DEBUG] [Thread-116912] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:51:15.767 [DEBUG] [Thread-116912] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:51:15.767 [DEBUG] [Thread-116912] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:51:15.767 [DEBUG] [Thread-116912] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:51:15.767 [DEBUG] [Thread-116912] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:51:15.767 [DEBUG] [Thread-116912] [transport.py] [_log()] client lang: <none>
2025-11-03T13:51:15.767 [DEBUG] [Thread-116912] [transport.py] [_log()] server lang: <none>
2025-11-03T13:51:15.767 [DEBUG] [Thread-116912] [transport.py] [_log()] kex follows: False
2025-11-03T13:51:15.767 [DEBUG] [Thread-116912] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:51:15.767 [DEBUG] [Thread-116912] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:51:15.767 [DEBUG] [Thread-116912] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:51:15.767 [DEBUG] [Thread-116912] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:51:15.767 [DEBUG] [Thread-116912] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:51:15.767 [DEBUG] [Thread-116912] [transport.py] [_log()] Compression: none
2025-11-03T13:51:15.767 [DEBUG] [Thread-116912] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:51:15.824 [DEBUG] [Thread-116912] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:51:15.824 [DEBUG] [Thread-116912] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:51:15.825 [DEBUG] [Thread-116912] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:51:15.825 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:51:15.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:51:15.880 [DEBUG] [Thread-116912] [transport.py] [_log()] userauth is OK
2025-11-03T13:51:15.880 [DEBUG] [Thread-116912] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:51:15.881 [DEBUG] [Thread-116912] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:51:15.881 [DEBUG] [Thread-116912] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:51:15.881 [DEBUG] [Thread-116912] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:51:15.899 [INFO] [Thread-116912] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:51:15.900 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:51:15.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:51:16.738 [DEBUG] [Thread-116912] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:51:16.738 [DEBUG] [Thread-116912] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:51:16.786 [DEBUG] [Thread-116912] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:51:16.786 [DEBUG] [Thread-116912] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:51:16.795 [DEBUG] [Thread-116912] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:51:16.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:51:16.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:51:16.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:51:16.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:51:16.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:51:16.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:51:16.833 [DEBUG] [Thread-116912] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:51:25.476 [DEBUG] [Thread-116914 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:51:40.522 [DEBUG] [Thread-116915 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:51:46.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:51:46.835 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:51:46.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:51:47.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 51, 31), 45.44, 3.95, 0.0, 32.36, 26.13, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:51:47.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:51:31
2025-11-03T13:51:47.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:51:47.802 [DEBUG] [Thread-116916] [transport.py] [_log()] starting thread (client mode): 0xed239a0
2025-11-03T13:51:47.802 [DEBUG] [Thread-116916] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:51:47.825 [DEBUG] [Thread-116916] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:51:47.825 [INFO] [Thread-116916] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:51:47.829 [DEBUG] [Thread-116916] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:51:47.829 [DEBUG] [Thread-116916] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:51:47.829 [DEBUG] [Thread-116916] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:51:47.829 [DEBUG] [Thread-116916] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:51:47.829 [DEBUG] [Thread-116916] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:51:47.829 [DEBUG] [Thread-116916] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:51:47.829 [DEBUG] [Thread-116916] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:51:47.829 [DEBUG] [Thread-116916] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:51:47.829 [DEBUG] [Thread-116916] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:51:47.829 [DEBUG] [Thread-116916] [transport.py] [_log()] client lang: <none>
2025-11-03T13:51:47.829 [DEBUG] [Thread-116916] [transport.py] [_log()] server lang: <none>
2025-11-03T13:51:47.829 [DEBUG] [Thread-116916] [transport.py] [_log()] kex follows: False
2025-11-03T13:51:47.830 [DEBUG] [Thread-116916] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:51:47.830 [DEBUG] [Thread-116916] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:51:47.830 [DEBUG] [Thread-116916] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:51:47.830 [DEBUG] [Thread-116916] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:51:47.830 [DEBUG] [Thread-116916] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:51:47.830 [DEBUG] [Thread-116916] [transport.py] [_log()] Compression: none
2025-11-03T13:51:47.830 [DEBUG] [Thread-116916] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:51:47.847 [DEBUG] [Thread-116916] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:51:47.857 [DEBUG] [Thread-116916] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:51:47.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:51:47.858 [DEBUG] [Thread-116916] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:51:47.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:51:47.861 [DEBUG] [Thread-116916] [transport.py] [_log()] userauth is OK
2025-11-03T13:51:47.861 [DEBUG] [Thread-116916] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:51:47.861 [DEBUG] [Thread-116916] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:51:47.861 [DEBUG] [Thread-116916] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:51:47.861 [DEBUG] [Thread-116916] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:51:47.886 [INFO] [Thread-116916] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:51:47.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:51:48.537 [DEBUG] [Thread-116916] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:51:48.547 [DEBUG] [Thread-116916] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:51:48.548 [DEBUG] [Thread-116916] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:51:48.579 [DEBUG] [Thread-116916] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:51:48.579 [DEBUG] [Thread-116916] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:51:48.583 [DEBUG] [Thread-116916] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:51:48.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:51:48.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:51:48.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:51:48.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:51:48.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:51:48.608 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:51:48.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:51:48.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:51:48.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:51:48.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.493853 -999.00  +25.60  26.32      8  -10.10 1 1 1 1 1   888    0 36.45 24.43 ----- 22.2 26.3 5.3 34.1 30.3 -30.5 29.7 -31.3 30.3 -29.2 30.6 -29.6
2025-11-03T13:51:48.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:51:48.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:51:48.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.493853
2025-11-03T13:51:48.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:51:48.611 [DEBUG] [Thread-116916] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:51:48.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:51:48.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:51:48.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:51:48.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:51:48.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:51:31', tmtdew=45.44, humidity=3.95, cloud=0.0, wind=32.36, temperature=26.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:51:08.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:51:48.698 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:51:48.709 [DEBUG] [Thread-116919] [transport.py] [_log()] starting thread (client mode): 0xed2c7f0
2025-11-03T13:51:48.709 [DEBUG] [Thread-116919] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:51:48.724 [DEBUG] [Thread-116919] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:51:48.724 [INFO] [Thread-116919] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:51:48.732 [DEBUG] [Thread-116919] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:51:48.732 [DEBUG] [Thread-116919] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:51:48.732 [DEBUG] [Thread-116919] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:51:48.732 [DEBUG] [Thread-116919] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:51:48.733 [DEBUG] [Thread-116919] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:51:48.733 [DEBUG] [Thread-116919] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:51:48.733 [DEBUG] [Thread-116919] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:51:48.733 [DEBUG] [Thread-116919] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:51:48.733 [DEBUG] [Thread-116919] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:51:48.733 [DEBUG] [Thread-116919] [transport.py] [_log()] client lang: <none>
2025-11-03T13:51:48.733 [DEBUG] [Thread-116919] [transport.py] [_log()] server lang: <none>
2025-11-03T13:51:48.733 [DEBUG] [Thread-116919] [transport.py] [_log()] kex follows: False
2025-11-03T13:51:48.733 [DEBUG] [Thread-116919] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:51:48.733 [DEBUG] [Thread-116919] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:51:48.734 [DEBUG] [Thread-116919] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:51:48.734 [DEBUG] [Thread-116919] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:51:48.734 [DEBUG] [Thread-116919] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:51:48.734 [DEBUG] [Thread-116919] [transport.py] [_log()] Compression: none
2025-11-03T13:51:48.734 [DEBUG] [Thread-116919] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:51:48.791 [DEBUG] [Thread-116919] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:51:48.791 [DEBUG] [Thread-116919] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:51:48.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:51:48.792 [DEBUG] [Thread-116919] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:51:48.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:51:48.847 [DEBUG] [Thread-116919] [transport.py] [_log()] userauth is OK
2025-11-03T13:51:48.847 [DEBUG] [Thread-116919] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:51:48.847 [DEBUG] [Thread-116919] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:51:48.847 [DEBUG] [Thread-116919] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:51:48.848 [DEBUG] [Thread-116919] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:51:48.866 [INFO] [Thread-116919] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:51:48.866 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:51:48.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:51:49.734 [DEBUG] [Thread-116919] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:51:49.734 [DEBUG] [Thread-116919] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:51:49.782 [DEBUG] [Thread-116919] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:51:49.782 [DEBUG] [Thread-116919] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:51:49.791 [DEBUG] [Thread-116919] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:51:49.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:51:49.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:51:49.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:51:49.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:51:49.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:51:49.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:51:49.829 [DEBUG] [Thread-116919] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:51:52.329 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:51:52.330 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:51:55.555 [DEBUG] [Thread-116921 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:52:08.015 [DEBUG] [Thread-116922 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:52:10.615 [DEBUG] [Thread-116923 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:52:19.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:52:19.844 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:52:19.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:52:20.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 52, 3), 45.25, 4.0, 0.0, 27.4, 25.98, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:52:20.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:52:03
2025-11-03T13:52:20.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:52:20.793 [DEBUG] [Thread-116924] [transport.py] [_log()] starting thread (client mode): 0x81b8dc0
2025-11-03T13:52:20.793 [DEBUG] [Thread-116924] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:52:20.807 [DEBUG] [Thread-116924] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:52:20.807 [INFO] [Thread-116924] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:52:20.808 [DEBUG] [Thread-116924] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:52:20.808 [DEBUG] [Thread-116924] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:52:20.808 [DEBUG] [Thread-116924] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:52:20.808 [DEBUG] [Thread-116924] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:52:20.808 [DEBUG] [Thread-116924] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:52:20.808 [DEBUG] [Thread-116924] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:52:20.808 [DEBUG] [Thread-116924] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:52:20.808 [DEBUG] [Thread-116924] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:52:20.808 [DEBUG] [Thread-116924] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:52:20.808 [DEBUG] [Thread-116924] [transport.py] [_log()] client lang: <none>
2025-11-03T13:52:20.808 [DEBUG] [Thread-116924] [transport.py] [_log()] server lang: <none>
2025-11-03T13:52:20.808 [DEBUG] [Thread-116924] [transport.py] [_log()] kex follows: False
2025-11-03T13:52:20.808 [DEBUG] [Thread-116924] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:52:20.808 [DEBUG] [Thread-116924] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:52:20.808 [DEBUG] [Thread-116924] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:52:20.808 [DEBUG] [Thread-116924] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:52:20.808 [DEBUG] [Thread-116924] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:52:20.809 [DEBUG] [Thread-116924] [transport.py] [_log()] Compression: none
2025-11-03T13:52:20.809 [DEBUG] [Thread-116924] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:52:20.818 [DEBUG] [Thread-116924] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:52:20.818 [DEBUG] [Thread-116924] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:52:20.818 [DEBUG] [Thread-116924] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:52:20.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:52:20.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:52:20.820 [DEBUG] [Thread-116924] [transport.py] [_log()] userauth is OK
2025-11-03T13:52:20.820 [DEBUG] [Thread-116924] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:52:20.820 [DEBUG] [Thread-116924] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:52:20.820 [DEBUG] [Thread-116924] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:52:20.820 [DEBUG] [Thread-116924] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:52:20.834 [INFO] [Thread-116924] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:52:20.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:52:21.494 [DEBUG] [Thread-116924] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:52:21.494 [DEBUG] [Thread-116924] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:52:21.495 [DEBUG] [Thread-116924] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:52:21.535 [DEBUG] [Thread-116924] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:52:21.535 [DEBUG] [Thread-116924] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:52:21.538 [DEBUG] [Thread-116924] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:52:21.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:52:21.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:52:21.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:52:21.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:52:21.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:52:21.560 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:52:21.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:52:21.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:52:21.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:52:21.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.494201 -999.00  +25.40  17.46      8  -10.00 1 1 1 1 1   888    0 36.25 18.18 ----- 18.8 17.5 340.7 32.0 30.3 -30.2 29.7 -29.7 30.2 -28.8 30.6 -31.3
2025-11-03T13:52:21.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:52:21.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:52:21.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.494201
2025-11-03T13:52:21.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:52:21.563 [DEBUG] [Thread-116924] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:52:21.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:52:21.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:52:21.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:52:21.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:52:21.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:52:03', tmtdew=45.25, humidity=4.0, cloud=0.0, wind=27.4, temperature=25.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:51:38.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:52:21.647 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:52:21.657 [DEBUG] [Thread-116927] [transport.py] [_log()] starting thread (client mode): 0x81b8fa0
2025-11-03T13:52:21.657 [DEBUG] [Thread-116927] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:52:21.672 [DEBUG] [Thread-116927] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:52:21.672 [INFO] [Thread-116927] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:52:21.680 [DEBUG] [Thread-116927] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:52:21.680 [DEBUG] [Thread-116927] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:52:21.680 [DEBUG] [Thread-116927] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:52:21.680 [DEBUG] [Thread-116927] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:52:21.680 [DEBUG] [Thread-116927] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:52:21.681 [DEBUG] [Thread-116927] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:52:21.681 [DEBUG] [Thread-116927] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:52:21.681 [DEBUG] [Thread-116927] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:52:21.681 [DEBUG] [Thread-116927] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:52:21.681 [DEBUG] [Thread-116927] [transport.py] [_log()] client lang: <none>
2025-11-03T13:52:21.681 [DEBUG] [Thread-116927] [transport.py] [_log()] server lang: <none>
2025-11-03T13:52:21.681 [DEBUG] [Thread-116927] [transport.py] [_log()] kex follows: False
2025-11-03T13:52:21.681 [DEBUG] [Thread-116927] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:52:21.681 [DEBUG] [Thread-116927] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:52:21.681 [DEBUG] [Thread-116927] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:52:21.681 [DEBUG] [Thread-116927] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:52:21.681 [DEBUG] [Thread-116927] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:52:21.681 [DEBUG] [Thread-116927] [transport.py] [_log()] Compression: none
2025-11-03T13:52:21.681 [DEBUG] [Thread-116927] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:52:21.741 [DEBUG] [Thread-116927] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:52:21.742 [DEBUG] [Thread-116927] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:52:21.742 [DEBUG] [Thread-116927] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:52:21.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:52:21.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:52:21.800 [DEBUG] [Thread-116927] [transport.py] [_log()] userauth is OK
2025-11-03T13:52:21.800 [DEBUG] [Thread-116927] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:52:21.800 [DEBUG] [Thread-116927] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:52:21.800 [DEBUG] [Thread-116927] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:52:21.801 [DEBUG] [Thread-116927] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:52:21.819 [INFO] [Thread-116927] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:52:21.819 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:52:21.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:52:22.664 [DEBUG] [Thread-116927] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:52:22.664 [DEBUG] [Thread-116927] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:52:22.713 [DEBUG] [Thread-116927] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:52:22.713 [DEBUG] [Thread-116927] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:52:22.721 [DEBUG] [Thread-116927] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:52:22.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:52:22.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:52:22.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:52:22.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:52:22.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:52:22.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:52:22.754 [DEBUG] [Thread-116927] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:52:25.654 [DEBUG] [Thread-116929 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:52:40.707 [DEBUG] [Thread-116930 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:52:52.471 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:52:52.472 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:52:52.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:52:52.776 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:52:52.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:52:53.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 52, 35), 45.55, 4.02, 0.0, 25.53, 26.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:52:53.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:52:35
2025-11-03T13:52:53.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:52:53.719 [DEBUG] [Thread-116931] [transport.py] [_log()] starting thread (client mode): 0xed2d2a0
2025-11-03T13:52:53.719 [DEBUG] [Thread-116931] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:52:53.739 [DEBUG] [Thread-116931] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:52:53.739 [INFO] [Thread-116931] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:52:53.742 [DEBUG] [Thread-116931] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:52:53.742 [DEBUG] [Thread-116931] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:52:53.742 [DEBUG] [Thread-116931] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:52:53.743 [DEBUG] [Thread-116931] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:52:53.743 [DEBUG] [Thread-116931] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:52:53.743 [DEBUG] [Thread-116931] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:52:53.743 [DEBUG] [Thread-116931] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:52:53.743 [DEBUG] [Thread-116931] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:52:53.743 [DEBUG] [Thread-116931] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:52:53.743 [DEBUG] [Thread-116931] [transport.py] [_log()] client lang: <none>
2025-11-03T13:52:53.743 [DEBUG] [Thread-116931] [transport.py] [_log()] server lang: <none>
2025-11-03T13:52:53.743 [DEBUG] [Thread-116931] [transport.py] [_log()] kex follows: False
2025-11-03T13:52:53.743 [DEBUG] [Thread-116931] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:52:53.743 [DEBUG] [Thread-116931] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:52:53.743 [DEBUG] [Thread-116931] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:52:53.743 [DEBUG] [Thread-116931] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:52:53.743 [DEBUG] [Thread-116931] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:52:53.743 [DEBUG] [Thread-116931] [transport.py] [_log()] Compression: none
2025-11-03T13:52:53.743 [DEBUG] [Thread-116931] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:52:53.770 [DEBUG] [Thread-116931] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:52:53.771 [DEBUG] [Thread-116931] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:52:53.772 [DEBUG] [Thread-116931] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:52:53.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:52:53.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:52:53.774 [DEBUG] [Thread-116931] [transport.py] [_log()] userauth is OK
2025-11-03T13:52:53.775 [DEBUG] [Thread-116931] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:52:53.775 [DEBUG] [Thread-116931] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:52:53.775 [DEBUG] [Thread-116931] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:52:53.775 [DEBUG] [Thread-116931] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:52:53.800 [INFO] [Thread-116931] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:52:53.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:52:54.455 [DEBUG] [Thread-116931] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:52:54.455 [DEBUG] [Thread-116931] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:52:54.456 [DEBUG] [Thread-116931] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:52:54.496 [DEBUG] [Thread-116931] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:52:54.496 [DEBUG] [Thread-116931] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:52:54.499 [DEBUG] [Thread-116931] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:52:54.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:52:54.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:52:54.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:52:54.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:52:54.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:52:54.523 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:52:54.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:52:54.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:52:54.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:52:54.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.494548 -999.00  +25.30  17.99      8  -10.20 1 1 1 1 1   888    0 36.79 10.51 ----- 20.5 18.0 338.8 45.2 30.3 -30.1 29.7 -31.0 30.3 -29.8 30.9 -30.3
2025-11-03T13:52:54.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:52:54.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:52:54.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.494548
2025-11-03T13:52:54.532 [DEBUG] [Thread-116931] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:52:54.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:52:54.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:52:54.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:52:54.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:52:54.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:52:54.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:52:35', tmtdew=45.55, humidity=4.02, cloud=0.0, wind=25.53, temperature=26.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:52:08.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:52:54.618 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:52:54.630 [DEBUG] [Thread-116934] [transport.py] [_log()] starting thread (client mode): 0xed22530
2025-11-03T13:52:54.630 [DEBUG] [Thread-116934] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:52:54.645 [DEBUG] [Thread-116934] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:52:54.646 [INFO] [Thread-116934] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:52:54.654 [DEBUG] [Thread-116934] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:52:54.654 [DEBUG] [Thread-116934] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:52:54.654 [DEBUG] [Thread-116934] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:52:54.654 [DEBUG] [Thread-116934] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:52:54.654 [DEBUG] [Thread-116934] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:52:54.654 [DEBUG] [Thread-116934] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:52:54.654 [DEBUG] [Thread-116934] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:52:54.654 [DEBUG] [Thread-116934] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:52:54.654 [DEBUG] [Thread-116934] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:52:54.654 [DEBUG] [Thread-116934] [transport.py] [_log()] client lang: <none>
2025-11-03T13:52:54.654 [DEBUG] [Thread-116934] [transport.py] [_log()] server lang: <none>
2025-11-03T13:52:54.654 [DEBUG] [Thread-116934] [transport.py] [_log()] kex follows: False
2025-11-03T13:52:54.654 [DEBUG] [Thread-116934] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:52:54.654 [DEBUG] [Thread-116934] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:52:54.654 [DEBUG] [Thread-116934] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:52:54.655 [DEBUG] [Thread-116934] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:52:54.655 [DEBUG] [Thread-116934] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:52:54.655 [DEBUG] [Thread-116934] [transport.py] [_log()] Compression: none
2025-11-03T13:52:54.655 [DEBUG] [Thread-116934] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:52:54.712 [DEBUG] [Thread-116934] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:52:54.712 [DEBUG] [Thread-116934] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:52:54.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:52:54.713 [DEBUG] [Thread-116934] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:52:54.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:52:54.768 [DEBUG] [Thread-116934] [transport.py] [_log()] userauth is OK
2025-11-03T13:52:54.768 [DEBUG] [Thread-116934] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:52:54.768 [DEBUG] [Thread-116934] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:52:54.769 [DEBUG] [Thread-116934] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:52:54.769 [DEBUG] [Thread-116934] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:52:54.789 [INFO] [Thread-116934] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:52:54.789 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:52:54.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:52:55.633 [DEBUG] [Thread-116934] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:52:55.633 [DEBUG] [Thread-116934] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:52:55.680 [DEBUG] [Thread-116934] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:52:55.680 [DEBUG] [Thread-116934] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:52:55.688 [DEBUG] [Thread-116934] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:52:55.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:52:55.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:52:55.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:52:55.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:52:55.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:52:55.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:52:55.726 [DEBUG] [Thread-116934] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:52:55.742 [DEBUG] [Thread-116936 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:53:08.076 [DEBUG] [Thread-116937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:53:10.792 [DEBUG] [Thread-116938 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:53:25.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:53:25.744 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:53:25.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:53:25.821 [DEBUG] [Thread-116939 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:53:26.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 53, 8), 45.48, 4.05, 0.0, 24.01, 26.48, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:53:26.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:53:08
2025-11-03T13:53:26.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:53:26.711 [DEBUG] [Thread-116940] [transport.py] [_log()] starting thread (client mode): 0x81baa70
2025-11-03T13:53:26.711 [DEBUG] [Thread-116940] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:53:26.730 [DEBUG] [Thread-116940] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:53:26.730 [INFO] [Thread-116940] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:53:26.732 [DEBUG] [Thread-116940] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:53:26.732 [DEBUG] [Thread-116940] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:53:26.732 [DEBUG] [Thread-116940] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:53:26.732 [DEBUG] [Thread-116940] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:53:26.732 [DEBUG] [Thread-116940] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:53:26.732 [DEBUG] [Thread-116940] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:53:26.732 [DEBUG] [Thread-116940] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:53:26.732 [DEBUG] [Thread-116940] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:53:26.732 [DEBUG] [Thread-116940] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:53:26.732 [DEBUG] [Thread-116940] [transport.py] [_log()] client lang: <none>
2025-11-03T13:53:26.732 [DEBUG] [Thread-116940] [transport.py] [_log()] server lang: <none>
2025-11-03T13:53:26.733 [DEBUG] [Thread-116940] [transport.py] [_log()] kex follows: False
2025-11-03T13:53:26.733 [DEBUG] [Thread-116940] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:53:26.733 [DEBUG] [Thread-116940] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:53:26.733 [DEBUG] [Thread-116940] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:53:26.733 [DEBUG] [Thread-116940] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:53:26.733 [DEBUG] [Thread-116940] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:53:26.733 [DEBUG] [Thread-116940] [transport.py] [_log()] Compression: none
2025-11-03T13:53:26.733 [DEBUG] [Thread-116940] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:53:26.754 [DEBUG] [Thread-116940] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:53:26.755 [DEBUG] [Thread-116940] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:53:26.755 [DEBUG] [Thread-116940] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:53:26.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:53:26.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:53:26.758 [DEBUG] [Thread-116940] [transport.py] [_log()] userauth is OK
2025-11-03T13:53:26.758 [DEBUG] [Thread-116940] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:53:26.758 [DEBUG] [Thread-116940] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:53:26.759 [DEBUG] [Thread-116940] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:53:26.759 [DEBUG] [Thread-116940] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:53:26.782 [INFO] [Thread-116940] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:53:26.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:53:27.517 [DEBUG] [Thread-116940] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:53:27.518 [DEBUG] [Thread-116940] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:53:27.518 [DEBUG] [Thread-116940] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:53:27.559 [DEBUG] [Thread-116940] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:53:27.559 [DEBUG] [Thread-116940] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:53:27.562 [DEBUG] [Thread-116940] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:53:27.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:53:27.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:53:27.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:53:27.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:53:27.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:53:27.584 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:53:27.585 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:53:27.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:53:27.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:53:27.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.494895 -999.00  +26.30  22.70      8   -9.30 1 1 1 1 1   888    0 36.30 4.59 ----- 16.6 22.7 326.6 37.2 30.6 -29.4 29.9 -28.0 30.4 -27.8 30.9 -27.8
2025-11-03T13:53:27.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:53:27.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:53:27.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.494895
2025-11-03T13:53:27.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:53:27.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:53:27.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:53:27.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:53:27.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:53:27.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:53:08', tmtdew=45.48, humidity=4.05, cloud=0.0, wind=24.01, temperature=26.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:52:38.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:53:27.588 [DEBUG] [Thread-116940] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:53:27.672 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:53:27.684 [DEBUG] [Thread-116943] [transport.py] [_log()] starting thread (client mode): 0xedd5d80
2025-11-03T13:53:27.685 [DEBUG] [Thread-116943] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:53:27.699 [DEBUG] [Thread-116943] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:53:27.699 [INFO] [Thread-116943] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:53:27.707 [DEBUG] [Thread-116943] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:53:27.707 [DEBUG] [Thread-116943] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:53:27.707 [DEBUG] [Thread-116943] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:53:27.707 [DEBUG] [Thread-116943] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:53:27.707 [DEBUG] [Thread-116943] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:53:27.707 [DEBUG] [Thread-116943] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:53:27.707 [DEBUG] [Thread-116943] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:53:27.707 [DEBUG] [Thread-116943] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:53:27.707 [DEBUG] [Thread-116943] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:53:27.707 [DEBUG] [Thread-116943] [transport.py] [_log()] client lang: <none>
2025-11-03T13:53:27.707 [DEBUG] [Thread-116943] [transport.py] [_log()] server lang: <none>
2025-11-03T13:53:27.707 [DEBUG] [Thread-116943] [transport.py] [_log()] kex follows: False
2025-11-03T13:53:27.707 [DEBUG] [Thread-116943] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:53:27.707 [DEBUG] [Thread-116943] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:53:27.707 [DEBUG] [Thread-116943] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:53:27.707 [DEBUG] [Thread-116943] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:53:27.707 [DEBUG] [Thread-116943] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:53:27.707 [DEBUG] [Thread-116943] [transport.py] [_log()] Compression: none
2025-11-03T13:53:27.707 [DEBUG] [Thread-116943] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:53:27.762 [DEBUG] [Thread-116943] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:53:27.762 [DEBUG] [Thread-116943] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:53:27.762 [DEBUG] [Thread-116943] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:53:27.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:53:27.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:53:27.819 [DEBUG] [Thread-116943] [transport.py] [_log()] userauth is OK
2025-11-03T13:53:27.819 [DEBUG] [Thread-116943] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:53:27.819 [DEBUG] [Thread-116943] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:53:27.819 [DEBUG] [Thread-116943] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:53:27.819 [DEBUG] [Thread-116943] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:53:27.833 [INFO] [Thread-116943] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:53:27.834 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:53:27.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:53:28.701 [DEBUG] [Thread-116943] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:53:28.701 [DEBUG] [Thread-116943] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:53:28.749 [DEBUG] [Thread-116943] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:53:28.750 [DEBUG] [Thread-116943] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:53:28.759 [DEBUG] [Thread-116943] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:53:28.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:53:28.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:53:28.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:53:28.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:53:28.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:53:28.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:53:28.797 [DEBUG] [Thread-116943] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:53:40.854 [DEBUG] [Thread-116945 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:53:52.614 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:53:52.615 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:53:55.906 [DEBUG] [Thread-116946 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:53:58.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:53:58.805 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:53:58.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:53:59.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 53, 40), 45.86, 4.0, 0.0, 22.94, 26.05, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:53:59.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:53:40
2025-11-03T13:53:59.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:53:59.973 [DEBUG] [Thread-116947] [transport.py] [_log()] starting thread (client mode): 0xed2f370
2025-11-03T13:53:59.973 [DEBUG] [Thread-116947] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:53:59.994 [DEBUG] [Thread-116947] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:53:59.994 [INFO] [Thread-116947] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:53:59.997 [DEBUG] [Thread-116947] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:53:59.998 [DEBUG] [Thread-116947] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:53:59.998 [DEBUG] [Thread-116947] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:53:59.998 [DEBUG] [Thread-116947] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:53:59.998 [DEBUG] [Thread-116947] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:53:59.998 [DEBUG] [Thread-116947] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:53:59.998 [DEBUG] [Thread-116947] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:53:59.998 [DEBUG] [Thread-116947] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:53:59.998 [DEBUG] [Thread-116947] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:53:59.998 [DEBUG] [Thread-116947] [transport.py] [_log()] client lang: <none>
2025-11-03T13:53:59.998 [DEBUG] [Thread-116947] [transport.py] [_log()] server lang: <none>
2025-11-03T13:53:59.998 [DEBUG] [Thread-116947] [transport.py] [_log()] kex follows: False
2025-11-03T13:53:59.998 [DEBUG] [Thread-116947] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:53:59.998 [DEBUG] [Thread-116947] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:53:59.998 [DEBUG] [Thread-116947] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:53:59.998 [DEBUG] [Thread-116947] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:53:59.998 [DEBUG] [Thread-116947] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:53:59.998 [DEBUG] [Thread-116947] [transport.py] [_log()] Compression: none
2025-11-03T13:53:59.998 [DEBUG] [Thread-116947] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:54:00.013 [DEBUG] [Thread-116947] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:54:00.013 [DEBUG] [Thread-116947] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:54:00.013 [DEBUG] [Thread-116947] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:54:00.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:54:00.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:54:00.014 [DEBUG] [Thread-116947] [transport.py] [_log()] userauth is OK
2025-11-03T13:54:00.014 [DEBUG] [Thread-116947] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:54:00.014 [DEBUG] [Thread-116947] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:54:00.014 [DEBUG] [Thread-116947] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:54:00.014 [DEBUG] [Thread-116947] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:54:00.023 [INFO] [Thread-116947] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:54:00.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:54:00.631 [DEBUG] [Thread-116947] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:54:00.631 [DEBUG] [Thread-116947] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:54:00.631 [DEBUG] [Thread-116947] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:54:00.673 [DEBUG] [Thread-116947] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:54:00.673 [DEBUG] [Thread-116947] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:54:00.675 [DEBUG] [Thread-116947] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:54:00.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:54:00.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:54:00.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:54:00.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:54:00.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:54:00.695 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:54:00.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:54:00.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:54:00.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:54:00.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.495242 -999.00  +26.70  31.12      8   -9.90 1 1 2 1 1   888    0 36.13 5.06 ----- 28.7 31.1 313.2 34.6 30.6 -30.2 30.0 -30.4 30.4 -29.5 31.3 -28.4
2025-11-03T13:54:00.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:54:00.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:54:00.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.495242
2025-11-03T13:54:00.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:54:00.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:54:00.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:54:00.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:54:00.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:54:00.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:53:40', tmtdew=45.86, humidity=4.0, cloud=0.0, wind=22.94, temperature=26.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:53:08.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:54:00.696 [DEBUG] [Thread-116947] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:54:00.770 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:54:00.781 [DEBUG] [Thread-116950] [transport.py] [_log()] starting thread (client mode): 0xedd7ca0
2025-11-03T13:54:00.781 [DEBUG] [Thread-116950] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:54:00.797 [DEBUG] [Thread-116950] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:54:00.797 [INFO] [Thread-116950] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:54:00.805 [DEBUG] [Thread-116950] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:54:00.805 [DEBUG] [Thread-116950] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:54:00.805 [DEBUG] [Thread-116950] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:54:00.805 [DEBUG] [Thread-116950] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:54:00.805 [DEBUG] [Thread-116950] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:54:00.805 [DEBUG] [Thread-116950] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:54:00.805 [DEBUG] [Thread-116950] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:54:00.805 [DEBUG] [Thread-116950] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:54:00.805 [DEBUG] [Thread-116950] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:54:00.805 [DEBUG] [Thread-116950] [transport.py] [_log()] client lang: <none>
2025-11-03T13:54:00.805 [DEBUG] [Thread-116950] [transport.py] [_log()] server lang: <none>
2025-11-03T13:54:00.805 [DEBUG] [Thread-116950] [transport.py] [_log()] kex follows: False
2025-11-03T13:54:00.805 [DEBUG] [Thread-116950] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:54:00.805 [DEBUG] [Thread-116950] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:54:00.805 [DEBUG] [Thread-116950] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:54:00.805 [DEBUG] [Thread-116950] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:54:00.805 [DEBUG] [Thread-116950] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:54:00.805 [DEBUG] [Thread-116950] [transport.py] [_log()] Compression: none
2025-11-03T13:54:00.805 [DEBUG] [Thread-116950] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:54:00.862 [DEBUG] [Thread-116950] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:54:00.862 [DEBUG] [Thread-116950] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:54:00.862 [DEBUG] [Thread-116950] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:54:00.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:54:00.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:54:00.920 [DEBUG] [Thread-116950] [transport.py] [_log()] userauth is OK
2025-11-03T13:54:00.920 [DEBUG] [Thread-116950] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:54:00.920 [DEBUG] [Thread-116950] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:54:00.920 [DEBUG] [Thread-116950] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:54:00.920 [DEBUG] [Thread-116950] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:54:00.938 [INFO] [Thread-116950] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:54:00.939 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:54:00.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:54:01.858 [DEBUG] [Thread-116950] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:54:01.858 [DEBUG] [Thread-116950] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:54:01.906 [DEBUG] [Thread-116950] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:54:01.906 [DEBUG] [Thread-116950] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:54:01.915 [DEBUG] [Thread-116950] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:54:01.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:54:01.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:54:01.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:54:01.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:54:01.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:54:01.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:54:01.947 [DEBUG] [Thread-116950] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:54:08.194 [DEBUG] [Thread-116952 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:54:10.939 [DEBUG] [Thread-116953 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:54:25.981 [DEBUG] [Thread-116954 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:54:31.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:54:31.970 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:54:31.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:54:32.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 54, 12), 46.18, 3.94, 0.0, 31.74, 26.44, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:54:32.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:54:12
2025-11-03T13:54:32.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:54:32.965 [DEBUG] [Thread-116955] [transport.py] [_log()] starting thread (client mode): 0x81bb370
2025-11-03T13:54:32.965 [DEBUG] [Thread-116955] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:54:32.986 [DEBUG] [Thread-116955] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:54:32.986 [INFO] [Thread-116955] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:54:32.989 [DEBUG] [Thread-116955] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:54:32.989 [DEBUG] [Thread-116955] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:54:32.989 [DEBUG] [Thread-116955] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:54:32.989 [DEBUG] [Thread-116955] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:54:32.989 [DEBUG] [Thread-116955] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:54:32.989 [DEBUG] [Thread-116955] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:54:32.989 [DEBUG] [Thread-116955] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:54:32.989 [DEBUG] [Thread-116955] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:54:32.989 [DEBUG] [Thread-116955] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:54:32.989 [DEBUG] [Thread-116955] [transport.py] [_log()] client lang: <none>
2025-11-03T13:54:32.989 [DEBUG] [Thread-116955] [transport.py] [_log()] server lang: <none>
2025-11-03T13:54:32.989 [DEBUG] [Thread-116955] [transport.py] [_log()] kex follows: False
2025-11-03T13:54:32.989 [DEBUG] [Thread-116955] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:54:32.989 [DEBUG] [Thread-116955] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:54:32.998 [DEBUG] [Thread-116955] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:54:32.998 [DEBUG] [Thread-116955] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:54:32.998 [DEBUG] [Thread-116955] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:54:32.998 [DEBUG] [Thread-116955] [transport.py] [_log()] Compression: none
2025-11-03T13:54:32.998 [DEBUG] [Thread-116955] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:54:33.012 [DEBUG] [Thread-116955] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:54:33.013 [DEBUG] [Thread-116955] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:54:33.013 [DEBUG] [Thread-116955] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:54:33.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:54:33.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:54:33.014 [DEBUG] [Thread-116955] [transport.py] [_log()] userauth is OK
2025-11-03T13:54:33.014 [DEBUG] [Thread-116955] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:54:33.014 [DEBUG] [Thread-116955] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:54:33.014 [DEBUG] [Thread-116955] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:54:33.014 [DEBUG] [Thread-116955] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:54:33.031 [INFO] [Thread-116955] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:54:33.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:54:33.651 [DEBUG] [Thread-116955] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:54:33.661 [DEBUG] [Thread-116955] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:54:33.661 [DEBUG] [Thread-116955] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:54:33.693 [DEBUG] [Thread-116955] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:54:33.693 [DEBUG] [Thread-116955] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:54:33.696 [DEBUG] [Thread-116955] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:54:33.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:54:33.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:54:33.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:54:33.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:54:33.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:54:33.719 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:54:33.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:54:33.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:54:33.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:54:33.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.495589 -999.00  +26.60  24.42      8   -9.70 1 1 1 1 1   888    0 36.04 6.67 ----- 19.4 24.4 297.8 32.5 30.8 -30.2 30.0 -29.2 30.5 -30.6 31.3 -28.7
2025-11-03T13:54:33.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:54:33.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:54:33.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.495589
2025-11-03T13:54:33.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:54:33.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:54:33.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:54:33.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:54:33.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:54:33.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:54:12', tmtdew=46.18, humidity=3.94, cloud=0.0, wind=31.74, temperature=26.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:53:38.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:54:33.723 [DEBUG] [Thread-116955] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:54:33.807 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:54:33.819 [DEBUG] [Thread-116958] [transport.py] [_log()] starting thread (client mode): 0xed2d090
2025-11-03T13:54:33.819 [DEBUG] [Thread-116958] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:54:33.835 [DEBUG] [Thread-116958] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:54:33.835 [INFO] [Thread-116958] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:54:33.845 [DEBUG] [Thread-116958] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:54:33.845 [DEBUG] [Thread-116958] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:54:33.845 [DEBUG] [Thread-116958] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:54:33.845 [DEBUG] [Thread-116958] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:54:33.845 [DEBUG] [Thread-116958] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:54:33.845 [DEBUG] [Thread-116958] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:54:33.845 [DEBUG] [Thread-116958] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:54:33.845 [DEBUG] [Thread-116958] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:54:33.845 [DEBUG] [Thread-116958] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:54:33.846 [DEBUG] [Thread-116958] [transport.py] [_log()] client lang: <none>
2025-11-03T13:54:33.846 [DEBUG] [Thread-116958] [transport.py] [_log()] server lang: <none>
2025-11-03T13:54:33.846 [DEBUG] [Thread-116958] [transport.py] [_log()] kex follows: False
2025-11-03T13:54:33.846 [DEBUG] [Thread-116958] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:54:33.846 [DEBUG] [Thread-116958] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:54:33.846 [DEBUG] [Thread-116958] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:54:33.846 [DEBUG] [Thread-116958] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:54:33.846 [DEBUG] [Thread-116958] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:54:33.846 [DEBUG] [Thread-116958] [transport.py] [_log()] Compression: none
2025-11-03T13:54:33.846 [DEBUG] [Thread-116958] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:54:33.910 [DEBUG] [Thread-116958] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:54:33.910 [DEBUG] [Thread-116958] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:54:33.911 [DEBUG] [Thread-116958] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:54:33.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:54:33.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:54:33.967 [DEBUG] [Thread-116958] [transport.py] [_log()] userauth is OK
2025-11-03T13:54:33.967 [DEBUG] [Thread-116958] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:54:33.967 [DEBUG] [Thread-116958] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:54:33.967 [DEBUG] [Thread-116958] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:54:33.967 [DEBUG] [Thread-116958] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:54:33.982 [INFO] [Thread-116958] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:54:33.982 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:54:33.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:54:34.831 [DEBUG] [Thread-116958] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:54:34.840 [DEBUG] [Thread-116958] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:54:34.879 [DEBUG] [Thread-116958] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:54:34.879 [DEBUG] [Thread-116958] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:54:34.888 [DEBUG] [Thread-116958] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:54:34.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:54:34.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:54:34.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:54:34.916 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:54:34.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:54:34.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:54:34.925 [DEBUG] [Thread-116958] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:54:41.014 [DEBUG] [Thread-116960 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:54:52.755 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:54:52.756 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:54:56.052 [DEBUG] [Thread-116961 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:55:04.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:55:04.935 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:55:04.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:55:05.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 54, 45), 46.77, 3.72, 0.0, 41.16, 26.74, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:55:05.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:54:45
2025-11-03T13:55:05.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:55:05.899 [DEBUG] [Thread-116962] [transport.py] [_log()] starting thread (client mode): 0x117bffa0
2025-11-03T13:55:05.899 [DEBUG] [Thread-116962] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:55:05.921 [DEBUG] [Thread-116962] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:55:05.921 [INFO] [Thread-116962] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:55:05.925 [DEBUG] [Thread-116962] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:55:05.925 [DEBUG] [Thread-116962] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:55:05.925 [DEBUG] [Thread-116962] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:55:05.925 [DEBUG] [Thread-116962] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:55:05.925 [DEBUG] [Thread-116962] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:55:05.925 [DEBUG] [Thread-116962] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:55:05.925 [DEBUG] [Thread-116962] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:55:05.925 [DEBUG] [Thread-116962] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:55:05.925 [DEBUG] [Thread-116962] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:55:05.925 [DEBUG] [Thread-116962] [transport.py] [_log()] client lang: <none>
2025-11-03T13:55:05.925 [DEBUG] [Thread-116962] [transport.py] [_log()] server lang: <none>
2025-11-03T13:55:05.925 [DEBUG] [Thread-116962] [transport.py] [_log()] kex follows: False
2025-11-03T13:55:05.925 [DEBUG] [Thread-116962] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:55:05.925 [DEBUG] [Thread-116962] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:55:05.925 [DEBUG] [Thread-116962] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:55:05.925 [DEBUG] [Thread-116962] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:55:05.925 [DEBUG] [Thread-116962] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:55:05.925 [DEBUG] [Thread-116962] [transport.py] [_log()] Compression: none
2025-11-03T13:55:05.925 [DEBUG] [Thread-116962] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:55:05.942 [DEBUG] [Thread-116962] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:55:05.952 [DEBUG] [Thread-116962] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:55:05.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:55:05.953 [DEBUG] [Thread-116962] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:55:05.954 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:55:05.955 [DEBUG] [Thread-116962] [transport.py] [_log()] userauth is OK
2025-11-03T13:55:05.955 [DEBUG] [Thread-116962] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:55:05.955 [DEBUG] [Thread-116962] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:55:05.955 [DEBUG] [Thread-116962] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:55:05.956 [DEBUG] [Thread-116962] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:55:05.987 [INFO] [Thread-116962] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:55:05.987 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:55:07.439 [DEBUG] [Thread-116962] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:55:07.439 [DEBUG] [Thread-116962] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:55:07.439 [DEBUG] [Thread-116962] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:55:07.480 [DEBUG] [Thread-116962] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:55:07.480 [DEBUG] [Thread-116962] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:55:07.484 [DEBUG] [Thread-116962] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:55:07.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:55:07.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:55:07.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:55:07.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:55:07.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:55:07.554 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:55:07.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:55:07.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:55:07.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:55:07.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.495937 -999.00  +27.20  27.71      8   -9.20 1 1 1 1 1   888    0 36.39 7.20 ----- 28.8 27.7 308.6 41.8 30.9 -29.5 30.2 -29.5 30.6 -30.0 31.5 -28.3
2025-11-03T13:55:07.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:55:07.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:55:07.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.495937
2025-11-03T13:55:07.562 [DEBUG] [Thread-116962] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:55:07.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:55:07.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:55:07.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:55:07.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:55:07.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:55:07.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:54:45', tmtdew=46.77, humidity=3.72, cloud=0.0, wind=41.16, temperature=26.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:54:08.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:55:07.648 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:55:07.663 [DEBUG] [Thread-116965] [transport.py] [_log()] starting thread (client mode): 0x81bb9a0
2025-11-03T13:55:07.663 [DEBUG] [Thread-116965] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:55:07.680 [DEBUG] [Thread-116965] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:55:07.680 [INFO] [Thread-116965] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:55:07.689 [DEBUG] [Thread-116965] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:55:07.690 [DEBUG] [Thread-116965] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:55:07.690 [DEBUG] [Thread-116965] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:55:07.690 [DEBUG] [Thread-116965] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:55:07.690 [DEBUG] [Thread-116965] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:55:07.690 [DEBUG] [Thread-116965] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:55:07.690 [DEBUG] [Thread-116965] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:55:07.690 [DEBUG] [Thread-116965] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:55:07.690 [DEBUG] [Thread-116965] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:55:07.690 [DEBUG] [Thread-116965] [transport.py] [_log()] client lang: <none>
2025-11-03T13:55:07.690 [DEBUG] [Thread-116965] [transport.py] [_log()] server lang: <none>
2025-11-03T13:55:07.690 [DEBUG] [Thread-116965] [transport.py] [_log()] kex follows: False
2025-11-03T13:55:07.690 [DEBUG] [Thread-116965] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:55:07.690 [DEBUG] [Thread-116965] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:55:07.690 [DEBUG] [Thread-116965] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:55:07.690 [DEBUG] [Thread-116965] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:55:07.690 [DEBUG] [Thread-116965] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:55:07.691 [DEBUG] [Thread-116965] [transport.py] [_log()] Compression: none
2025-11-03T13:55:07.691 [DEBUG] [Thread-116965] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:55:07.755 [DEBUG] [Thread-116965] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:55:07.756 [DEBUG] [Thread-116965] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:55:07.757 [DEBUG] [Thread-116965] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:55:07.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:55:07.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:55:07.820 [DEBUG] [Thread-116965] [transport.py] [_log()] userauth is OK
2025-11-03T13:55:07.820 [DEBUG] [Thread-116965] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:55:07.820 [DEBUG] [Thread-116965] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:55:07.820 [DEBUG] [Thread-116965] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:55:07.820 [DEBUG] [Thread-116965] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:55:07.843 [INFO] [Thread-116965] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:55:07.843 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:55:07.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:55:08.243 [DEBUG] [Thread-116967 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:55:08.667 [DEBUG] [Thread-116965] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:55:08.667 [DEBUG] [Thread-116965] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:55:08.715 [DEBUG] [Thread-116965] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:55:08.715 [DEBUG] [Thread-116965] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:55:08.725 [DEBUG] [Thread-116965] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:55:08.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:55:08.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:55:08.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:55:08.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:55:08.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:55:08.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:55:08.762 [DEBUG] [Thread-116965] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:55:11.092 [DEBUG] [Thread-116968 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:55:26.139 [DEBUG] [Thread-116969 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:55:38.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:55:38.784 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:55:38.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:55:39.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 55, 17), 46.41, 3.8, 0.0, 41.39, 26.48, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:55:39.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:55:17
2025-11-03T13:55:39.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:55:39.701 [DEBUG] [Thread-116970] [transport.py] [_log()] starting thread (client mode): 0xedd51e0
2025-11-03T13:55:39.701 [DEBUG] [Thread-116970] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:55:39.720 [DEBUG] [Thread-116970] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:55:39.720 [INFO] [Thread-116970] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:55:39.723 [DEBUG] [Thread-116970] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:55:39.723 [DEBUG] [Thread-116970] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:55:39.723 [DEBUG] [Thread-116970] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:55:39.723 [DEBUG] [Thread-116970] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:55:39.723 [DEBUG] [Thread-116970] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:55:39.723 [DEBUG] [Thread-116970] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:55:39.723 [DEBUG] [Thread-116970] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:55:39.723 [DEBUG] [Thread-116970] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:55:39.723 [DEBUG] [Thread-116970] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:55:39.723 [DEBUG] [Thread-116970] [transport.py] [_log()] client lang: <none>
2025-11-03T13:55:39.723 [DEBUG] [Thread-116970] [transport.py] [_log()] server lang: <none>
2025-11-03T13:55:39.723 [DEBUG] [Thread-116970] [transport.py] [_log()] kex follows: False
2025-11-03T13:55:39.723 [DEBUG] [Thread-116970] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:55:39.723 [DEBUG] [Thread-116970] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:55:39.723 [DEBUG] [Thread-116970] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:55:39.723 [DEBUG] [Thread-116970] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:55:39.723 [DEBUG] [Thread-116970] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:55:39.723 [DEBUG] [Thread-116970] [transport.py] [_log()] Compression: none
2025-11-03T13:55:39.723 [DEBUG] [Thread-116970] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:55:39.739 [DEBUG] [Thread-116970] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:55:39.740 [DEBUG] [Thread-116970] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:55:39.740 [DEBUG] [Thread-116970] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:55:39.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:55:39.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:55:39.742 [DEBUG] [Thread-116970] [transport.py] [_log()] userauth is OK
2025-11-03T13:55:39.742 [DEBUG] [Thread-116970] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:55:39.742 [DEBUG] [Thread-116970] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:55:39.742 [DEBUG] [Thread-116970] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:55:39.742 [DEBUG] [Thread-116970] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:55:39.766 [INFO] [Thread-116970] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:55:39.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:55:40.378 [DEBUG] [Thread-116970] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:55:40.379 [DEBUG] [Thread-116970] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:55:40.379 [DEBUG] [Thread-116970] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:55:40.420 [DEBUG] [Thread-116970] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:55:40.420 [DEBUG] [Thread-116970] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:55:40.423 [DEBUG] [Thread-116970] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:55:40.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:55:40.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:55:40.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:55:40.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:55:40.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:55:40.446 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:55:40.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:55:40.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:55:40.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:55:40.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.496631 -999.00  +26.50  34.88      8  -10.20 1 1 2 1 1   888    0 37.07 13.00 ----- 36.1 34.9 325.2 45.4 30.9 -29.9 30.3 -30.3 30.9 -28.9 31.6 -29.7
2025-11-03T13:55:40.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:55:40.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:55:40.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.496631
2025-11-03T13:55:40.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:55:40.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:55:40.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:55:40.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:55:40.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:55:40.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:55:17', tmtdew=46.41, humidity=3.8, cloud=0.0, wind=41.39, temperature=26.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:55:08.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:55:40.448 [DEBUG] [Thread-116970] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:55:40.518 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:55:40.530 [DEBUG] [Thread-116973] [transport.py] [_log()] starting thread (client mode): 0xed21a20
2025-11-03T13:55:40.530 [DEBUG] [Thread-116973] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:55:40.546 [DEBUG] [Thread-116973] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:55:40.546 [INFO] [Thread-116973] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:55:40.554 [DEBUG] [Thread-116973] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:55:40.554 [DEBUG] [Thread-116973] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:55:40.554 [DEBUG] [Thread-116973] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:55:40.554 [DEBUG] [Thread-116973] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:55:40.554 [DEBUG] [Thread-116973] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:55:40.554 [DEBUG] [Thread-116973] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:55:40.554 [DEBUG] [Thread-116973] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:55:40.554 [DEBUG] [Thread-116973] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:55:40.555 [DEBUG] [Thread-116973] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:55:40.555 [DEBUG] [Thread-116973] [transport.py] [_log()] client lang: <none>
2025-11-03T13:55:40.555 [DEBUG] [Thread-116973] [transport.py] [_log()] server lang: <none>
2025-11-03T13:55:40.555 [DEBUG] [Thread-116973] [transport.py] [_log()] kex follows: False
2025-11-03T13:55:40.555 [DEBUG] [Thread-116973] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:55:40.555 [DEBUG] [Thread-116973] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:55:40.555 [DEBUG] [Thread-116973] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:55:40.555 [DEBUG] [Thread-116973] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:55:40.555 [DEBUG] [Thread-116973] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:55:40.556 [DEBUG] [Thread-116973] [transport.py] [_log()] Compression: none
2025-11-03T13:55:40.556 [DEBUG] [Thread-116973] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:55:40.613 [DEBUG] [Thread-116973] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:55:40.613 [DEBUG] [Thread-116973] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:55:40.614 [DEBUG] [Thread-116973] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:55:40.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:55:40.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:55:40.672 [DEBUG] [Thread-116973] [transport.py] [_log()] userauth is OK
2025-11-03T13:55:40.672 [DEBUG] [Thread-116973] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:55:40.672 [DEBUG] [Thread-116973] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:55:40.672 [DEBUG] [Thread-116973] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:55:40.673 [DEBUG] [Thread-116973] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:55:40.691 [INFO] [Thread-116973] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:55:40.692 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:55:40.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:55:41.173 [DEBUG] [Thread-116975 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:55:41.554 [DEBUG] [Thread-116973] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:55:41.554 [DEBUG] [Thread-116973] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:55:41.602 [DEBUG] [Thread-116973] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:55:41.602 [DEBUG] [Thread-116973] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:55:41.611 [DEBUG] [Thread-116973] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:55:41.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:55:41.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:55:41.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:55:41.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:55:41.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:55:41.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:55:41.643 [DEBUG] [Thread-116973] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:55:52.900 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:55:52.903 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:55:56.220 [DEBUG] [Thread-116976 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:56:08.301 [DEBUG] [Thread-116977 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:56:11.251 [DEBUG] [Thread-116978 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:56:11.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:56:11.649 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:56:11.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:56:12.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 55, 49), 46.31, 3.8, 0.0, 33.79, 26.2, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:56:12.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:55:49
2025-11-03T13:56:12.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:56:12.572 [DEBUG] [Thread-116979] [transport.py] [_log()] starting thread (client mode): 0x117be470
2025-11-03T13:56:12.572 [DEBUG] [Thread-116979] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:56:12.591 [DEBUG] [Thread-116979] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:56:12.591 [INFO] [Thread-116979] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:56:12.594 [DEBUG] [Thread-116979] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:56:12.594 [DEBUG] [Thread-116979] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:56:12.594 [DEBUG] [Thread-116979] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:56:12.594 [DEBUG] [Thread-116979] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:56:12.594 [DEBUG] [Thread-116979] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:56:12.594 [DEBUG] [Thread-116979] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:56:12.594 [DEBUG] [Thread-116979] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:56:12.594 [DEBUG] [Thread-116979] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:56:12.594 [DEBUG] [Thread-116979] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:56:12.594 [DEBUG] [Thread-116979] [transport.py] [_log()] client lang: <none>
2025-11-03T13:56:12.594 [DEBUG] [Thread-116979] [transport.py] [_log()] server lang: <none>
2025-11-03T13:56:12.594 [DEBUG] [Thread-116979] [transport.py] [_log()] kex follows: False
2025-11-03T13:56:12.594 [DEBUG] [Thread-116979] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:56:12.594 [DEBUG] [Thread-116979] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:56:12.595 [DEBUG] [Thread-116979] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:56:12.595 [DEBUG] [Thread-116979] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:56:12.595 [DEBUG] [Thread-116979] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:56:12.595 [DEBUG] [Thread-116979] [transport.py] [_log()] Compression: none
2025-11-03T13:56:12.595 [DEBUG] [Thread-116979] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:56:12.612 [DEBUG] [Thread-116979] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:56:12.613 [DEBUG] [Thread-116979] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:56:12.613 [DEBUG] [Thread-116979] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:56:12.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:56:12.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:56:12.615 [DEBUG] [Thread-116979] [transport.py] [_log()] userauth is OK
2025-11-03T13:56:12.615 [DEBUG] [Thread-116979] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:56:12.615 [DEBUG] [Thread-116979] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:56:12.616 [DEBUG] [Thread-116979] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:56:12.616 [DEBUG] [Thread-116979] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:56:12.640 [INFO] [Thread-116979] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:56:12.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:56:13.276 [DEBUG] [Thread-116979] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:56:13.276 [DEBUG] [Thread-116979] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:56:13.277 [DEBUG] [Thread-116979] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:56:13.317 [DEBUG] [Thread-116979] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:56:13.317 [DEBUG] [Thread-116979] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:56:13.321 [DEBUG] [Thread-116979] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:56:13.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:56:13.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:56:13.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:56:13.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:56:13.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:56:13.347 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:56:13.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:56:13.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:56:13.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:56:13.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.496978 -999.00  +26.20  30.79      8  -10.10 1 1 2 1 1   888    0 37.20 12.19 ----- 31.0 30.8 329.0 37.6 30.9 -30.9 30.3 -29.9 30.9 -30.2 31.7 -30.1
2025-11-03T13:56:13.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:56:13.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:56:13.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.496978
2025-11-03T13:56:13.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:56:13.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:56:13.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:56:13.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:56:13.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:56:13.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:55:49', tmtdew=46.31, humidity=3.8, cloud=0.0, wind=33.79, temperature=26.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:55:38.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:56:13.350 [DEBUG] [Thread-116979] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:56:13.436 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:56:13.448 [DEBUG] [Thread-116982] [transport.py] [_log()] starting thread (client mode): 0xedd6a70
2025-11-03T13:56:13.449 [DEBUG] [Thread-116982] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:56:13.467 [DEBUG] [Thread-116982] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:56:13.467 [INFO] [Thread-116982] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:56:13.475 [DEBUG] [Thread-116982] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:56:13.475 [DEBUG] [Thread-116982] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:56:13.476 [DEBUG] [Thread-116982] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:56:13.476 [DEBUG] [Thread-116982] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:56:13.476 [DEBUG] [Thread-116982] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:56:13.476 [DEBUG] [Thread-116982] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:56:13.476 [DEBUG] [Thread-116982] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:56:13.476 [DEBUG] [Thread-116982] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:56:13.476 [DEBUG] [Thread-116982] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:56:13.476 [DEBUG] [Thread-116982] [transport.py] [_log()] client lang: <none>
2025-11-03T13:56:13.476 [DEBUG] [Thread-116982] [transport.py] [_log()] server lang: <none>
2025-11-03T13:56:13.476 [DEBUG] [Thread-116982] [transport.py] [_log()] kex follows: False
2025-11-03T13:56:13.476 [DEBUG] [Thread-116982] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:56:13.476 [DEBUG] [Thread-116982] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:56:13.476 [DEBUG] [Thread-116982] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:56:13.476 [DEBUG] [Thread-116982] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:56:13.476 [DEBUG] [Thread-116982] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:56:13.477 [DEBUG] [Thread-116982] [transport.py] [_log()] Compression: none
2025-11-03T13:56:13.477 [DEBUG] [Thread-116982] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:56:13.536 [DEBUG] [Thread-116982] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:56:13.537 [DEBUG] [Thread-116982] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:56:13.538 [DEBUG] [Thread-116982] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:56:13.538 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:56:13.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:56:13.596 [DEBUG] [Thread-116982] [transport.py] [_log()] userauth is OK
2025-11-03T13:56:13.596 [DEBUG] [Thread-116982] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:56:13.596 [DEBUG] [Thread-116982] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:56:13.596 [DEBUG] [Thread-116982] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:56:13.596 [DEBUG] [Thread-116982] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:56:13.622 [INFO] [Thread-116982] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:56:13.622 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:56:13.623 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:56:14.505 [DEBUG] [Thread-116982] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:56:14.505 [DEBUG] [Thread-116982] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:56:14.553 [DEBUG] [Thread-116982] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:56:14.553 [DEBUG] [Thread-116982] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:56:14.562 [DEBUG] [Thread-116982] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:56:14.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:56:14.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:56:14.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:56:14.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:56:14.590 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:56:14.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:56:14.599 [DEBUG] [Thread-116982] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:56:26.286 [DEBUG] [Thread-116984 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:56:41.332 [DEBUG] [Thread-116985 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:56:44.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:56:44.606 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:56:44.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:56:45.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 56, 22), 46.09, 3.87, 0.0, 36.38, 26.18, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:56:45.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:56:22
2025-11-03T13:56:45.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:56:45.582 [DEBUG] [Thread-116986] [transport.py] [_log()] starting thread (client mode): 0xed22d40
2025-11-03T13:56:45.582 [DEBUG] [Thread-116986] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:56:45.603 [DEBUG] [Thread-116986] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:56:45.603 [INFO] [Thread-116986] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:56:45.606 [DEBUG] [Thread-116986] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:56:45.606 [DEBUG] [Thread-116986] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:56:45.606 [DEBUG] [Thread-116986] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:56:45.607 [DEBUG] [Thread-116986] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:56:45.607 [DEBUG] [Thread-116986] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:56:45.607 [DEBUG] [Thread-116986] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:56:45.607 [DEBUG] [Thread-116986] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:56:45.607 [DEBUG] [Thread-116986] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:56:45.607 [DEBUG] [Thread-116986] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:56:45.607 [DEBUG] [Thread-116986] [transport.py] [_log()] client lang: <none>
2025-11-03T13:56:45.607 [DEBUG] [Thread-116986] [transport.py] [_log()] server lang: <none>
2025-11-03T13:56:45.607 [DEBUG] [Thread-116986] [transport.py] [_log()] kex follows: False
2025-11-03T13:56:45.607 [DEBUG] [Thread-116986] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:56:45.607 [DEBUG] [Thread-116986] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:56:45.607 [DEBUG] [Thread-116986] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:56:45.607 [DEBUG] [Thread-116986] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:56:45.607 [DEBUG] [Thread-116986] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:56:45.607 [DEBUG] [Thread-116986] [transport.py] [_log()] Compression: none
2025-11-03T13:56:45.607 [DEBUG] [Thread-116986] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:56:45.624 [DEBUG] [Thread-116986] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:56:45.625 [DEBUG] [Thread-116986] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:56:45.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:56:45.626 [DEBUG] [Thread-116986] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:56:45.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:56:45.627 [DEBUG] [Thread-116986] [transport.py] [_log()] userauth is OK
2025-11-03T13:56:45.627 [DEBUG] [Thread-116986] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:56:45.627 [DEBUG] [Thread-116986] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:56:45.628 [DEBUG] [Thread-116986] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:56:45.628 [DEBUG] [Thread-116986] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:56:45.641 [INFO] [Thread-116986] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:56:45.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:56:46.300 [DEBUG] [Thread-116986] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:56:46.300 [DEBUG] [Thread-116986] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:56:46.300 [DEBUG] [Thread-116986] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:56:46.341 [DEBUG] [Thread-116986] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:56:46.341 [DEBUG] [Thread-116986] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:56:46.344 [DEBUG] [Thread-116986] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:56:46.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:56:46.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:56:46.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:56:46.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:56:46.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:56:46.370 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:56:46.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:56:46.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:56:46.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:56:46.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.497325 -999.00  +26.50  31.54      8   -9.70 1 1 2 1 1   888    0 35.77 12.38 ----- 27.2 31.5 306.2 38.2 31.0 -30.3 30.4 -29.7 30.9 -30.0 31.8 -29.3
2025-11-03T13:56:46.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:56:46.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:56:46.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.497325
2025-11-03T13:56:46.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:56:46.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:56:46.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:56:46.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:56:46.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:56:46.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:56:22', tmtdew=46.09, humidity=3.87, cloud=0.0, wind=36.38, temperature=26.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:56:08.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:56:46.371 [DEBUG] [Thread-116986] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:56:46.443 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:56:46.456 [DEBUG] [Thread-116989] [transport.py] [_log()] starting thread (client mode): 0xed4dde0
2025-11-03T13:56:46.456 [DEBUG] [Thread-116989] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:56:46.470 [DEBUG] [Thread-116989] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:56:46.470 [INFO] [Thread-116989] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:56:46.478 [DEBUG] [Thread-116989] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:56:46.478 [DEBUG] [Thread-116989] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:56:46.478 [DEBUG] [Thread-116989] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:56:46.478 [DEBUG] [Thread-116989] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:56:46.478 [DEBUG] [Thread-116989] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:56:46.478 [DEBUG] [Thread-116989] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:56:46.478 [DEBUG] [Thread-116989] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:56:46.478 [DEBUG] [Thread-116989] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:56:46.478 [DEBUG] [Thread-116989] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:56:46.478 [DEBUG] [Thread-116989] [transport.py] [_log()] client lang: <none>
2025-11-03T13:56:46.478 [DEBUG] [Thread-116989] [transport.py] [_log()] server lang: <none>
2025-11-03T13:56:46.478 [DEBUG] [Thread-116989] [transport.py] [_log()] kex follows: False
2025-11-03T13:56:46.478 [DEBUG] [Thread-116989] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:56:46.478 [DEBUG] [Thread-116989] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:56:46.478 [DEBUG] [Thread-116989] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:56:46.478 [DEBUG] [Thread-116989] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:56:46.478 [DEBUG] [Thread-116989] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:56:46.478 [DEBUG] [Thread-116989] [transport.py] [_log()] Compression: none
2025-11-03T13:56:46.478 [DEBUG] [Thread-116989] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:56:46.535 [DEBUG] [Thread-116989] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:56:46.535 [DEBUG] [Thread-116989] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:56:46.535 [DEBUG] [Thread-116989] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:56:46.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:56:46.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:56:46.592 [DEBUG] [Thread-116989] [transport.py] [_log()] userauth is OK
2025-11-03T13:56:46.592 [DEBUG] [Thread-116989] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:56:46.592 [DEBUG] [Thread-116989] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:56:46.592 [DEBUG] [Thread-116989] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:56:46.592 [DEBUG] [Thread-116989] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:56:46.610 [INFO] [Thread-116989] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:56:46.611 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:56:46.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:56:47.455 [DEBUG] [Thread-116989] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:56:47.455 [DEBUG] [Thread-116989] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:56:47.503 [DEBUG] [Thread-116989] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:56:47.503 [DEBUG] [Thread-116989] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:56:47.512 [DEBUG] [Thread-116989] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:56:47.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:56:47.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:56:47.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:56:47.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:56:47.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:56:47.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:56:47.549 [DEBUG] [Thread-116989] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:56:53.048 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:56:53.050 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:56:56.363 [DEBUG] [Thread-116991 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:57:08.351 [DEBUG] [Thread-116992 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:57:11.409 [DEBUG] [Thread-116993 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:57:17.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:57:17.571 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:57:17.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:57:18.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 56, 54), 46.24, 3.89, 0.0, 33.44, 25.98, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:57:18.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:56:54
2025-11-03T13:57:18.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:57:18.562 [DEBUG] [Thread-116994] [transport.py] [_log()] starting thread (client mode): 0x117bcc70
2025-11-03T13:57:18.562 [DEBUG] [Thread-116994] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:57:18.585 [DEBUG] [Thread-116994] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:57:18.585 [INFO] [Thread-116994] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:57:18.588 [DEBUG] [Thread-116994] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:57:18.588 [DEBUG] [Thread-116994] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:57:18.588 [DEBUG] [Thread-116994] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:57:18.588 [DEBUG] [Thread-116994] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:57:18.588 [DEBUG] [Thread-116994] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:57:18.588 [DEBUG] [Thread-116994] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:57:18.588 [DEBUG] [Thread-116994] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:57:18.588 [DEBUG] [Thread-116994] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:57:18.588 [DEBUG] [Thread-116994] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:57:18.588 [DEBUG] [Thread-116994] [transport.py] [_log()] client lang: <none>
2025-11-03T13:57:18.588 [DEBUG] [Thread-116994] [transport.py] [_log()] server lang: <none>
2025-11-03T13:57:18.588 [DEBUG] [Thread-116994] [transport.py] [_log()] kex follows: False
2025-11-03T13:57:18.588 [DEBUG] [Thread-116994] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:57:18.588 [DEBUG] [Thread-116994] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:57:18.588 [DEBUG] [Thread-116994] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:57:18.588 [DEBUG] [Thread-116994] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:57:18.588 [DEBUG] [Thread-116994] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:57:18.588 [DEBUG] [Thread-116994] [transport.py] [_log()] Compression: none
2025-11-03T13:57:18.588 [DEBUG] [Thread-116994] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:57:18.604 [DEBUG] [Thread-116994] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:57:18.604 [DEBUG] [Thread-116994] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:57:18.604 [DEBUG] [Thread-116994] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:57:18.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:57:18.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:57:18.605 [DEBUG] [Thread-116994] [transport.py] [_log()] userauth is OK
2025-11-03T13:57:18.605 [DEBUG] [Thread-116994] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:57:18.605 [DEBUG] [Thread-116994] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:57:18.605 [DEBUG] [Thread-116994] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:57:18.605 [DEBUG] [Thread-116994] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:57:18.620 [INFO] [Thread-116994] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:57:18.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:57:19.254 [DEBUG] [Thread-116994] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:57:19.254 [DEBUG] [Thread-116994] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:57:19.255 [DEBUG] [Thread-116994] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:57:19.296 [DEBUG] [Thread-116994] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:57:19.297 [DEBUG] [Thread-116994] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:57:19.299 [DEBUG] [Thread-116994] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:57:19.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:57:19.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:57:19.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:57:19.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:57:19.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:57:19.320 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:57:19.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:57:19.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:57:19.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:57:19.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.497673 -999.00  +26.30  42.44      8  -10.20 1 1 2 1 1   888    0 36.45 10.55 ----- 42.6 42.4 316.4 45.9 31.1 -30.2 30.4 -30.2 30.9 -30.0 31.8 -30.3
2025-11-03T13:57:19.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:57:19.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:57:19.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.497673
2025-11-03T13:57:19.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:57:19.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:57:19.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:57:19.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:57:19.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:57:19.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:56:54', tmtdew=46.24, humidity=3.89, cloud=0.0, wind=33.44, temperature=25.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:56:38.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:57:19.322 [DEBUG] [Thread-116994] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:57:19.397 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:57:19.408 [DEBUG] [Thread-116997] [transport.py] [_log()] starting thread (client mode): 0xed239a0
2025-11-03T13:57:19.408 [DEBUG] [Thread-116997] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:57:19.423 [DEBUG] [Thread-116997] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:57:19.423 [INFO] [Thread-116997] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:57:19.431 [DEBUG] [Thread-116997] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:57:19.431 [DEBUG] [Thread-116997] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:57:19.431 [DEBUG] [Thread-116997] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:57:19.431 [DEBUG] [Thread-116997] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:57:19.431 [DEBUG] [Thread-116997] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:57:19.431 [DEBUG] [Thread-116997] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:57:19.431 [DEBUG] [Thread-116997] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:57:19.431 [DEBUG] [Thread-116997] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:57:19.431 [DEBUG] [Thread-116997] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:57:19.431 [DEBUG] [Thread-116997] [transport.py] [_log()] client lang: <none>
2025-11-03T13:57:19.431 [DEBUG] [Thread-116997] [transport.py] [_log()] server lang: <none>
2025-11-03T13:57:19.431 [DEBUG] [Thread-116997] [transport.py] [_log()] kex follows: False
2025-11-03T13:57:19.431 [DEBUG] [Thread-116997] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:57:19.431 [DEBUG] [Thread-116997] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:57:19.431 [DEBUG] [Thread-116997] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:57:19.431 [DEBUG] [Thread-116997] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:57:19.431 [DEBUG] [Thread-116997] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:57:19.431 [DEBUG] [Thread-116997] [transport.py] [_log()] Compression: none
2025-11-03T13:57:19.431 [DEBUG] [Thread-116997] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:57:19.490 [DEBUG] [Thread-116997] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:57:19.490 [DEBUG] [Thread-116997] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:57:19.490 [DEBUG] [Thread-116997] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:57:19.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:57:19.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:57:19.548 [DEBUG] [Thread-116997] [transport.py] [_log()] userauth is OK
2025-11-03T13:57:19.548 [DEBUG] [Thread-116997] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:57:19.548 [DEBUG] [Thread-116997] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:57:19.549 [DEBUG] [Thread-116997] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:57:19.549 [DEBUG] [Thread-116997] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:57:19.579 [INFO] [Thread-116997] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:57:19.580 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:57:19.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:57:20.460 [DEBUG] [Thread-116997] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:57:20.460 [DEBUG] [Thread-116997] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:57:20.508 [DEBUG] [Thread-116997] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:57:20.508 [DEBUG] [Thread-116997] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:57:20.516 [DEBUG] [Thread-116997] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:57:20.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:57:20.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:57:20.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:57:20.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:57:20.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:57:20.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:57:20.557 [DEBUG] [Thread-116997] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:57:26.453 [DEBUG] [Thread-116999 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:57:41.507 [DEBUG] [Thread-117000 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:57:50.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:57:50.580 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:57:50.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:57:51.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 57, 26), 46.22, 3.9, 0.0, 31.55, 26.08, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:57:51.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:57:26
2025-11-03T13:57:51.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:57:51.589 [DEBUG] [Thread-117001] [transport.py] [_log()] starting thread (client mode): 0x117bd000
2025-11-03T13:57:51.589 [DEBUG] [Thread-117001] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:57:51.609 [DEBUG] [Thread-117001] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:57:51.609 [INFO] [Thread-117001] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:57:51.612 [DEBUG] [Thread-117001] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:57:51.613 [DEBUG] [Thread-117001] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:57:51.613 [DEBUG] [Thread-117001] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:57:51.613 [DEBUG] [Thread-117001] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:57:51.613 [DEBUG] [Thread-117001] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:57:51.613 [DEBUG] [Thread-117001] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:57:51.613 [DEBUG] [Thread-117001] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:57:51.613 [DEBUG] [Thread-117001] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:57:51.613 [DEBUG] [Thread-117001] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:57:51.613 [DEBUG] [Thread-117001] [transport.py] [_log()] client lang: <none>
2025-11-03T13:57:51.613 [DEBUG] [Thread-117001] [transport.py] [_log()] server lang: <none>
2025-11-03T13:57:51.613 [DEBUG] [Thread-117001] [transport.py] [_log()] kex follows: False
2025-11-03T13:57:51.613 [DEBUG] [Thread-117001] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:57:51.613 [DEBUG] [Thread-117001] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:57:51.613 [DEBUG] [Thread-117001] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:57:51.613 [DEBUG] [Thread-117001] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:57:51.613 [DEBUG] [Thread-117001] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:57:51.613 [DEBUG] [Thread-117001] [transport.py] [_log()] Compression: none
2025-11-03T13:57:51.613 [DEBUG] [Thread-117001] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:57:51.630 [DEBUG] [Thread-117001] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:57:51.630 [DEBUG] [Thread-117001] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:57:51.631 [DEBUG] [Thread-117001] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:57:51.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:57:51.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:57:51.633 [DEBUG] [Thread-117001] [transport.py] [_log()] userauth is OK
2025-11-03T13:57:51.633 [DEBUG] [Thread-117001] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:57:51.633 [DEBUG] [Thread-117001] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:57:51.633 [DEBUG] [Thread-117001] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:57:51.633 [DEBUG] [Thread-117001] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:57:51.652 [INFO] [Thread-117001] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:57:51.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:57:52.251 [DEBUG] [Thread-117001] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:57:52.251 [DEBUG] [Thread-117001] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:57:52.252 [DEBUG] [Thread-117001] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:57:52.293 [DEBUG] [Thread-117001] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:57:52.293 [DEBUG] [Thread-117001] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:57:52.295 [DEBUG] [Thread-117001] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:57:52.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:57:52.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:57:52.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:57:52.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:57:52.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:57:52.307 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:57:52.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:57:52.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:57:52.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:57:52.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.498020 -999.00  +25.70  30.24      8   -9.90 1 1 2 1 1   888    0 36.41 6.23 ----- 27.8 30.2 310.0 45.6 31.1 -31.6 30.3 -30.5 30.9 -28.9 31.7 -29.8
2025-11-03T13:57:52.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:57:52.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:57:52.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.498020
2025-11-03T13:57:52.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:57:52.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:57:52.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:57:52.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:57:52.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:57:52.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:57:26', tmtdew=46.22, humidity=3.9, cloud=0.0, wind=31.55, temperature=26.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:57:08.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:57:52.308 [DEBUG] [Thread-117001] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:57:52.382 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:57:52.394 [DEBUG] [Thread-117004] [transport.py] [_log()] starting thread (client mode): 0xed22d70
2025-11-03T13:57:52.394 [DEBUG] [Thread-117004] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:57:52.410 [DEBUG] [Thread-117004] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:57:52.410 [INFO] [Thread-117004] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:57:52.417 [DEBUG] [Thread-117004] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:57:52.417 [DEBUG] [Thread-117004] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:57:52.417 [DEBUG] [Thread-117004] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:57:52.417 [DEBUG] [Thread-117004] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:57:52.417 [DEBUG] [Thread-117004] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:57:52.417 [DEBUG] [Thread-117004] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:57:52.417 [DEBUG] [Thread-117004] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:57:52.417 [DEBUG] [Thread-117004] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:57:52.417 [DEBUG] [Thread-117004] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:57:52.417 [DEBUG] [Thread-117004] [transport.py] [_log()] client lang: <none>
2025-11-03T13:57:52.417 [DEBUG] [Thread-117004] [transport.py] [_log()] server lang: <none>
2025-11-03T13:57:52.417 [DEBUG] [Thread-117004] [transport.py] [_log()] kex follows: False
2025-11-03T13:57:52.417 [DEBUG] [Thread-117004] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:57:52.417 [DEBUG] [Thread-117004] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:57:52.417 [DEBUG] [Thread-117004] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:57:52.417 [DEBUG] [Thread-117004] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:57:52.417 [DEBUG] [Thread-117004] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:57:52.417 [DEBUG] [Thread-117004] [transport.py] [_log()] Compression: none
2025-11-03T13:57:52.417 [DEBUG] [Thread-117004] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:57:52.473 [DEBUG] [Thread-117004] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:57:52.474 [DEBUG] [Thread-117004] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:57:52.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:57:52.474 [DEBUG] [Thread-117004] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:57:52.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:57:52.531 [DEBUG] [Thread-117004] [transport.py] [_log()] userauth is OK
2025-11-03T13:57:52.531 [DEBUG] [Thread-117004] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:57:52.531 [DEBUG] [Thread-117004] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:57:52.531 [DEBUG] [Thread-117004] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:57:52.531 [DEBUG] [Thread-117004] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:57:52.545 [INFO] [Thread-117004] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:57:52.545 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:57:52.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:57:53.189 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:57:53.190 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:57:53.402 [DEBUG] [Thread-117004] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:57:53.402 [DEBUG] [Thread-117004] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:57:53.451 [DEBUG] [Thread-117004] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:57:53.451 [DEBUG] [Thread-117004] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:57:53.459 [DEBUG] [Thread-117004] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:57:53.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:57:53.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:57:53.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:57:53.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:57:53.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:57:53.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:57:53.492 [DEBUG] [Thread-117004] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:57:56.537 [DEBUG] [Thread-117006 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:58:08.404 [DEBUG] [Thread-117007 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:58:11.579 [DEBUG] [Thread-117008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:58:23.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:58:23.515 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:58:23.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:58:24.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 57, 58), 46.32, 3.85, 0.0, 33.4, 26.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:58:24.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:57:58
2025-11-03T13:58:24.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:58:24.510 [DEBUG] [Thread-117009] [transport.py] [_log()] starting thread (client mode): 0xed4e980
2025-11-03T13:58:24.510 [DEBUG] [Thread-117009] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:58:24.530 [DEBUG] [Thread-117009] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:58:24.530 [INFO] [Thread-117009] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:58:24.533 [DEBUG] [Thread-117009] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:58:24.533 [DEBUG] [Thread-117009] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:58:24.533 [DEBUG] [Thread-117009] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:58:24.533 [DEBUG] [Thread-117009] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:58:24.533 [DEBUG] [Thread-117009] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:58:24.533 [DEBUG] [Thread-117009] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:58:24.533 [DEBUG] [Thread-117009] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:58:24.533 [DEBUG] [Thread-117009] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:58:24.533 [DEBUG] [Thread-117009] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:58:24.533 [DEBUG] [Thread-117009] [transport.py] [_log()] client lang: <none>
2025-11-03T13:58:24.533 [DEBUG] [Thread-117009] [transport.py] [_log()] server lang: <none>
2025-11-03T13:58:24.533 [DEBUG] [Thread-117009] [transport.py] [_log()] kex follows: False
2025-11-03T13:58:24.533 [DEBUG] [Thread-117009] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:58:24.533 [DEBUG] [Thread-117009] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:58:24.534 [DEBUG] [Thread-117009] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:58:24.534 [DEBUG] [Thread-117009] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:58:24.534 [DEBUG] [Thread-117009] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:58:24.534 [DEBUG] [Thread-117009] [transport.py] [_log()] Compression: none
2025-11-03T13:58:24.534 [DEBUG] [Thread-117009] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:58:24.550 [DEBUG] [Thread-117009] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:58:24.550 [DEBUG] [Thread-117009] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:58:24.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:58:24.551 [DEBUG] [Thread-117009] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:58:24.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:58:24.554 [DEBUG] [Thread-117009] [transport.py] [_log()] userauth is OK
2025-11-03T13:58:24.554 [DEBUG] [Thread-117009] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:58:24.554 [DEBUG] [Thread-117009] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:58:24.554 [DEBUG] [Thread-117009] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:58:24.554 [DEBUG] [Thread-117009] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:58:24.578 [INFO] [Thread-117009] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:58:24.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:58:25.222 [DEBUG] [Thread-117009] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:58:25.223 [DEBUG] [Thread-117009] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:58:25.223 [DEBUG] [Thread-117009] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:58:25.263 [DEBUG] [Thread-117009] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:58:25.263 [DEBUG] [Thread-117009] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:58:25.266 [DEBUG] [Thread-117009] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:58:25.278 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:58:25.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:58:25.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:58:25.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:58:25.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:58:25.283 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:58:25.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:58:25.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:58:25.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:58:25.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.498367 -999.00  +25.90  36.94      8  -10.20 1 1 2 1 1   888    0 35.84 3.55 ----- 32.0 36.9 308.4 42.2 31.1 -30.6 30.4 -29.7 31.0 -30.9 31.8 -29.4
2025-11-03T13:58:25.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:58:25.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:58:25.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.498367
2025-11-03T13:58:25.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:58:25.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:58:25.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:58:25.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:58:25.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:58:25.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:57:58', tmtdew=46.32, humidity=3.85, cloud=0.0, wind=33.4, temperature=26.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:57:38.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:58:25.284 [DEBUG] [Thread-117009] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:58:25.357 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:58:25.366 [DEBUG] [Thread-117012] [transport.py] [_log()] starting thread (client mode): 0xedd70a0
2025-11-03T13:58:25.366 [DEBUG] [Thread-117012] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:58:25.381 [DEBUG] [Thread-117012] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:58:25.381 [INFO] [Thread-117012] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:58:25.389 [DEBUG] [Thread-117012] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:58:25.389 [DEBUG] [Thread-117012] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:58:25.389 [DEBUG] [Thread-117012] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:58:25.389 [DEBUG] [Thread-117012] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:58:25.389 [DEBUG] [Thread-117012] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:58:25.389 [DEBUG] [Thread-117012] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:58:25.389 [DEBUG] [Thread-117012] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:58:25.389 [DEBUG] [Thread-117012] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:58:25.389 [DEBUG] [Thread-117012] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:58:25.389 [DEBUG] [Thread-117012] [transport.py] [_log()] client lang: <none>
2025-11-03T13:58:25.389 [DEBUG] [Thread-117012] [transport.py] [_log()] server lang: <none>
2025-11-03T13:58:25.389 [DEBUG] [Thread-117012] [transport.py] [_log()] kex follows: False
2025-11-03T13:58:25.389 [DEBUG] [Thread-117012] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:58:25.389 [DEBUG] [Thread-117012] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:58:25.389 [DEBUG] [Thread-117012] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:58:25.389 [DEBUG] [Thread-117012] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:58:25.389 [DEBUG] [Thread-117012] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:58:25.389 [DEBUG] [Thread-117012] [transport.py] [_log()] Compression: none
2025-11-03T13:58:25.389 [DEBUG] [Thread-117012] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:58:25.447 [DEBUG] [Thread-117012] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:58:25.447 [DEBUG] [Thread-117012] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:58:25.447 [DEBUG] [Thread-117012] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:58:25.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:58:25.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:58:25.504 [DEBUG] [Thread-117012] [transport.py] [_log()] userauth is OK
2025-11-03T13:58:25.504 [DEBUG] [Thread-117012] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:58:25.504 [DEBUG] [Thread-117012] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:58:25.504 [DEBUG] [Thread-117012] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:58:25.504 [DEBUG] [Thread-117012] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:58:25.518 [INFO] [Thread-117012] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:58:25.518 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:58:25.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:58:26.365 [DEBUG] [Thread-117012] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:58:26.365 [DEBUG] [Thread-117012] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:58:26.413 [DEBUG] [Thread-117012] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:58:26.413 [DEBUG] [Thread-117012] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:58:26.423 [DEBUG] [Thread-117012] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:58:26.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:58:26.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:58:26.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:58:26.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:58:26.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:58:26.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:58:26.460 [DEBUG] [Thread-117012] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:58:26.615 [DEBUG] [Thread-117014 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:58:41.672 [DEBUG] [Thread-117015 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:58:53.332 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:58:53.333 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:58:56.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:58:56.482 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:58:56.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:58:56.716 [DEBUG] [Thread-117016 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:58:57.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 58, 31), 46.35, 3.82, 0.0, 32.99, 26.15, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:58:57.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:58:31
2025-11-03T13:58:57.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:58:57.436 [DEBUG] [Thread-117017] [transport.py] [_log()] starting thread (client mode): 0x81baa70
2025-11-03T13:58:57.436 [DEBUG] [Thread-117017] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:58:57.453 [DEBUG] [Thread-117017] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:58:57.453 [INFO] [Thread-117017] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:58:57.456 [DEBUG] [Thread-117017] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:58:57.456 [DEBUG] [Thread-117017] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:58:57.456 [DEBUG] [Thread-117017] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:58:57.456 [DEBUG] [Thread-117017] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:58:57.457 [DEBUG] [Thread-117017] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:58:57.457 [DEBUG] [Thread-117017] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:58:57.457 [DEBUG] [Thread-117017] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:58:57.457 [DEBUG] [Thread-117017] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:58:57.457 [DEBUG] [Thread-117017] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:58:57.457 [DEBUG] [Thread-117017] [transport.py] [_log()] client lang: <none>
2025-11-03T13:58:57.457 [DEBUG] [Thread-117017] [transport.py] [_log()] server lang: <none>
2025-11-03T13:58:57.457 [DEBUG] [Thread-117017] [transport.py] [_log()] kex follows: False
2025-11-03T13:58:57.457 [DEBUG] [Thread-117017] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:58:57.457 [DEBUG] [Thread-117017] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:58:57.457 [DEBUG] [Thread-117017] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:58:57.457 [DEBUG] [Thread-117017] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:58:57.457 [DEBUG] [Thread-117017] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:58:57.457 [DEBUG] [Thread-117017] [transport.py] [_log()] Compression: none
2025-11-03T13:58:57.457 [DEBUG] [Thread-117017] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:58:57.471 [DEBUG] [Thread-117017] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:58:57.471 [DEBUG] [Thread-117017] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:58:57.471 [DEBUG] [Thread-117017] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:58:57.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:58:57.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:58:57.472 [DEBUG] [Thread-117017] [transport.py] [_log()] userauth is OK
2025-11-03T13:58:57.472 [DEBUG] [Thread-117017] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:58:57.472 [DEBUG] [Thread-117017] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:58:57.472 [DEBUG] [Thread-117017] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:58:57.473 [DEBUG] [Thread-117017] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:58:57.488 [INFO] [Thread-117017] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:58:57.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:58:58.123 [DEBUG] [Thread-117017] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:58:58.123 [DEBUG] [Thread-117017] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:58:58.123 [DEBUG] [Thread-117017] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:58:58.164 [DEBUG] [Thread-117017] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:58:58.164 [DEBUG] [Thread-117017] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:58:58.168 [DEBUG] [Thread-117017] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:58:58.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:58:58.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:58:58.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:58:58.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:58:58.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:58:58.195 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:58:58.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:58:58.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:58:58.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:58:58.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.498714 -999.00  +26.20  32.60      8   -9.90 1 1 2 1 1   888    0 35.53 1.30 ----- 34.6 32.6 305.0 39.5 31.1 -31.3 30.5 -30.2 31.0 -31.6 31.9 -29.1
2025-11-03T13:58:58.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:58:58.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:58:58.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.498714
2025-11-03T13:58:58.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:58:58.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:58:58.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:58:58.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:58:58.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:58:58.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:58:31', tmtdew=46.35, humidity=3.82, cloud=0.0, wind=32.99, temperature=26.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:58:08.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:58:58.198 [DEBUG] [Thread-117017] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:58:58.281 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:58:58.292 [DEBUG] [Thread-117020] [transport.py] [_log()] starting thread (client mode): 0xed23f70
2025-11-03T13:58:58.293 [DEBUG] [Thread-117020] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:58:58.307 [DEBUG] [Thread-117020] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:58:58.307 [INFO] [Thread-117020] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:58:58.315 [DEBUG] [Thread-117020] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:58:58.315 [DEBUG] [Thread-117020] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:58:58.315 [DEBUG] [Thread-117020] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:58:58.315 [DEBUG] [Thread-117020] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:58:58.315 [DEBUG] [Thread-117020] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:58:58.315 [DEBUG] [Thread-117020] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:58:58.315 [DEBUG] [Thread-117020] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:58:58.316 [DEBUG] [Thread-117020] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:58:58.316 [DEBUG] [Thread-117020] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:58:58.316 [DEBUG] [Thread-117020] [transport.py] [_log()] client lang: <none>
2025-11-03T13:58:58.316 [DEBUG] [Thread-117020] [transport.py] [_log()] server lang: <none>
2025-11-03T13:58:58.316 [DEBUG] [Thread-117020] [transport.py] [_log()] kex follows: False
2025-11-03T13:58:58.316 [DEBUG] [Thread-117020] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:58:58.316 [DEBUG] [Thread-117020] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:58:58.316 [DEBUG] [Thread-117020] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:58:58.316 [DEBUG] [Thread-117020] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:58:58.316 [DEBUG] [Thread-117020] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:58:58.316 [DEBUG] [Thread-117020] [transport.py] [_log()] Compression: none
2025-11-03T13:58:58.316 [DEBUG] [Thread-117020] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:58:58.376 [DEBUG] [Thread-117020] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:58:58.377 [DEBUG] [Thread-117020] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:58:58.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:58:58.378 [DEBUG] [Thread-117020] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:58:58.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:58:58.432 [DEBUG] [Thread-117020] [transport.py] [_log()] userauth is OK
2025-11-03T13:58:58.432 [DEBUG] [Thread-117020] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:58:58.432 [DEBUG] [Thread-117020] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:58:58.432 [DEBUG] [Thread-117020] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:58:58.432 [DEBUG] [Thread-117020] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:58:58.451 [INFO] [Thread-117020] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:58:58.451 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:58:58.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:58:59.280 [DEBUG] [Thread-117020] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:58:59.280 [DEBUG] [Thread-117020] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:58:59.327 [DEBUG] [Thread-117020] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:58:59.327 [DEBUG] [Thread-117020] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:58:59.336 [DEBUG] [Thread-117020] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:58:59.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:58:59.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:58:59.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:58:59.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:58:59.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:58:59.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:58:59.368 [DEBUG] [Thread-117020] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:59:08.467 [DEBUG] [Thread-117022 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:59:11.741 [DEBUG] [Thread-117023 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:59:26.782 [DEBUG] [Thread-117024 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:59:29.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T13:59:29.366 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T13:59:29.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T13:59:30.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 59, 3), 46.08, 3.9, 0.0, 29.73, 26.1, 0, 0, 0, 2, 0, 0),)
2025-11-03T13:59:30.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:59:03
2025-11-03T13:59:30.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T13:59:30.363 [DEBUG] [Thread-117025] [transport.py] [_log()] starting thread (client mode): 0xed204c0
2025-11-03T13:59:30.363 [DEBUG] [Thread-117025] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:59:30.382 [DEBUG] [Thread-117025] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T13:59:30.382 [INFO] [Thread-117025] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T13:59:30.386 [DEBUG] [Thread-117025] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:59:30.386 [DEBUG] [Thread-117025] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T13:59:30.386 [DEBUG] [Thread-117025] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:59:30.386 [DEBUG] [Thread-117025] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:59:30.386 [DEBUG] [Thread-117025] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:59:30.386 [DEBUG] [Thread-117025] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:59:30.386 [DEBUG] [Thread-117025] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:59:30.386 [DEBUG] [Thread-117025] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:59:30.386 [DEBUG] [Thread-117025] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:59:30.386 [DEBUG] [Thread-117025] [transport.py] [_log()] client lang: <none>
2025-11-03T13:59:30.387 [DEBUG] [Thread-117025] [transport.py] [_log()] server lang: <none>
2025-11-03T13:59:30.387 [DEBUG] [Thread-117025] [transport.py] [_log()] kex follows: False
2025-11-03T13:59:30.387 [DEBUG] [Thread-117025] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:59:30.387 [DEBUG] [Thread-117025] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:59:30.387 [DEBUG] [Thread-117025] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:59:30.387 [DEBUG] [Thread-117025] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:59:30.387 [DEBUG] [Thread-117025] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:59:30.387 [DEBUG] [Thread-117025] [transport.py] [_log()] Compression: none
2025-11-03T13:59:30.387 [DEBUG] [Thread-117025] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:59:30.405 [DEBUG] [Thread-117025] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:59:30.405 [DEBUG] [Thread-117025] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:59:30.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T13:59:30.406 [DEBUG] [Thread-117025] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T13:59:30.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:59:30.408 [DEBUG] [Thread-117025] [transport.py] [_log()] userauth is OK
2025-11-03T13:59:30.408 [DEBUG] [Thread-117025] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:59:30.408 [DEBUG] [Thread-117025] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:59:30.408 [DEBUG] [Thread-117025] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T13:59:30.408 [DEBUG] [Thread-117025] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:59:30.424 [INFO] [Thread-117025] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:59:30.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:59:31.059 [DEBUG] [Thread-117025] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:59:31.059 [DEBUG] [Thread-117025] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:59:31.059 [DEBUG] [Thread-117025] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T13:59:31.100 [DEBUG] [Thread-117025] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:59:31.100 [DEBUG] [Thread-117025] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:59:31.103 [DEBUG] [Thread-117025] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:59:31.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:59:31.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T13:59:31.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T13:59:31.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T13:59:31.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:59:31.119 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T13:59:31.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:59:31.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:59:31.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T13:59:31.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.499062 -999.00  +26.20  28.53      8   -9.80 1 1 1 1 1   888    0 36.29 0.14 ----- 29.0 28.5 315.6 40.7 31.1 -31.4 30.4 -30.2 30.9 -29.1 31.8 -30.0
2025-11-03T13:59:31.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T13:59:31.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T13:59:31.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.499062
2025-11-03T13:59:31.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T13:59:31.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T13:59:31.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T13:59:31.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T13:59:31.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T13:59:31.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:59:03', tmtdew=46.08, humidity=3.9, cloud=0.0, wind=29.73, temperature=26.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:58:38.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T13:59:31.121 [DEBUG] [Thread-117025] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:59:31.192 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T13:59:31.204 [DEBUG] [Thread-117028] [transport.py] [_log()] starting thread (client mode): 0x81b9450
2025-11-03T13:59:31.204 [DEBUG] [Thread-117028] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T13:59:31.222 [DEBUG] [Thread-117028] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T13:59:31.222 [INFO] [Thread-117028] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T13:59:31.229 [DEBUG] [Thread-117028] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T13:59:31.229 [DEBUG] [Thread-117028] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T13:59:31.229 [DEBUG] [Thread-117028] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T13:59:31.229 [DEBUG] [Thread-117028] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:59:31.229 [DEBUG] [Thread-117028] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T13:59:31.229 [DEBUG] [Thread-117028] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:59:31.229 [DEBUG] [Thread-117028] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T13:59:31.229 [DEBUG] [Thread-117028] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T13:59:31.229 [DEBUG] [Thread-117028] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T13:59:31.230 [DEBUG] [Thread-117028] [transport.py] [_log()] client lang: <none>
2025-11-03T13:59:31.230 [DEBUG] [Thread-117028] [transport.py] [_log()] server lang: <none>
2025-11-03T13:59:31.230 [DEBUG] [Thread-117028] [transport.py] [_log()] kex follows: False
2025-11-03T13:59:31.230 [DEBUG] [Thread-117028] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T13:59:31.230 [DEBUG] [Thread-117028] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T13:59:31.230 [DEBUG] [Thread-117028] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T13:59:31.230 [DEBUG] [Thread-117028] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T13:59:31.230 [DEBUG] [Thread-117028] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T13:59:31.230 [DEBUG] [Thread-117028] [transport.py] [_log()] Compression: none
2025-11-03T13:59:31.230 [DEBUG] [Thread-117028] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T13:59:31.289 [DEBUG] [Thread-117028] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T13:59:31.290 [DEBUG] [Thread-117028] [transport.py] [_log()] Switch to new keys ...
2025-11-03T13:59:31.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T13:59:31.291 [DEBUG] [Thread-117028] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T13:59:31.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T13:59:31.349 [DEBUG] [Thread-117028] [transport.py] [_log()] userauth is OK
2025-11-03T13:59:31.349 [DEBUG] [Thread-117028] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T13:59:31.349 [DEBUG] [Thread-117028] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T13:59:31.349 [DEBUG] [Thread-117028] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T13:59:31.350 [DEBUG] [Thread-117028] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T13:59:31.369 [INFO] [Thread-117028] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T13:59:31.369 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T13:59:31.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T13:59:32.227 [DEBUG] [Thread-117028] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T13:59:32.227 [DEBUG] [Thread-117028] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T13:59:32.275 [DEBUG] [Thread-117028] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T13:59:32.275 [DEBUG] [Thread-117028] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T13:59:32.284 [DEBUG] [Thread-117028] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T13:59:32.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T13:59:32.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T13:59:32.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T13:59:32.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T13:59:32.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T13:59:32.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T13:59:32.316 [DEBUG] [Thread-117028] [transport.py] [_log()] EOF in transport thread
2025-11-03T13:59:41.817 [DEBUG] [Thread-117030 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:59:53.474 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:59:53.475 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T13:59:56.853 [DEBUG] [Thread-117031 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:00:02.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:00:02.339 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:00:02.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:00:03.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 13, 59, 35), 45.73, 4.0, 0.0, 30.56, 26.3, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:00:03.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 13:59:35
2025-11-03T14:00:03.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:00:03.381 [DEBUG] [Thread-117032] [transport.py] [_log()] starting thread (client mode): 0xed21450
2025-11-03T14:00:03.381 [DEBUG] [Thread-117032] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:00:03.402 [DEBUG] [Thread-117032] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:00:03.402 [INFO] [Thread-117032] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:00:03.405 [DEBUG] [Thread-117032] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:00:03.405 [DEBUG] [Thread-117032] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:00:03.405 [DEBUG] [Thread-117032] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:00:03.405 [DEBUG] [Thread-117032] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:00:03.405 [DEBUG] [Thread-117032] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:00:03.414 [DEBUG] [Thread-117032] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:00:03.414 [DEBUG] [Thread-117032] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:00:03.414 [DEBUG] [Thread-117032] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:00:03.414 [DEBUG] [Thread-117032] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:00:03.414 [DEBUG] [Thread-117032] [transport.py] [_log()] client lang: <none>
2025-11-03T14:00:03.414 [DEBUG] [Thread-117032] [transport.py] [_log()] server lang: <none>
2025-11-03T14:00:03.414 [DEBUG] [Thread-117032] [transport.py] [_log()] kex follows: False
2025-11-03T14:00:03.414 [DEBUG] [Thread-117032] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:00:03.414 [DEBUG] [Thread-117032] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:00:03.414 [DEBUG] [Thread-117032] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:00:03.414 [DEBUG] [Thread-117032] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:00:03.414 [DEBUG] [Thread-117032] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:00:03.414 [DEBUG] [Thread-117032] [transport.py] [_log()] Compression: none
2025-11-03T14:00:03.414 [DEBUG] [Thread-117032] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:00:03.430 [DEBUG] [Thread-117032] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:00:03.430 [DEBUG] [Thread-117032] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:00:03.431 [DEBUG] [Thread-117032] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:00:03.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:00:03.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:00:03.432 [DEBUG] [Thread-117032] [transport.py] [_log()] userauth is OK
2025-11-03T14:00:03.432 [DEBUG] [Thread-117032] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:00:03.432 [DEBUG] [Thread-117032] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:00:03.432 [DEBUG] [Thread-117032] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:00:03.432 [DEBUG] [Thread-117032] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:00:03.442 [INFO] [Thread-117032] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:00:03.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:00:06.634 [DEBUG] [Thread-117032] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:00:06.634 [DEBUG] [Thread-117032] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:00:06.634 [DEBUG] [Thread-117032] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:00:06.675 [DEBUG] [Thread-117032] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:00:06.675 [DEBUG] [Thread-117032] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:00:06.678 [DEBUG] [Thread-117032] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:00:06.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:00:06.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:00:06.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:00:06.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:00:06.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:00:06.704 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:00:06.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:00:06.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:00:06.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:00:06.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.499409 -999.00  +26.90  30.84      8   -9.60 1 1 2 1 1   888    0 35.72 -0.20 ----- 26.1 30.8 306.8 32.5 31.1 -30.6 30.6 -29.3 31.1 -32.7 31.9 -29.3
2025-11-03T14:00:06.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:00:06.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:00:06.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.499409
2025-11-03T14:00:06.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:00:06.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:00:06.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:00:06.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:00:06.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:00:06.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T13:59:35', tmtdew=45.73, humidity=4.0, cloud=0.0, wind=30.56, temperature=26.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:59:08.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:00:06.707 [DEBUG] [Thread-117032] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:00:06.788 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:00:06.802 [DEBUG] [Thread-117035] [transport.py] [_log()] starting thread (client mode): 0xed23070
2025-11-03T14:00:06.802 [DEBUG] [Thread-117035] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:00:06.816 [DEBUG] [Thread-117035] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:00:06.816 [INFO] [Thread-117035] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:00:06.824 [DEBUG] [Thread-117035] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:00:06.824 [DEBUG] [Thread-117035] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:00:06.824 [DEBUG] [Thread-117035] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:00:06.825 [DEBUG] [Thread-117035] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:00:06.825 [DEBUG] [Thread-117035] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:00:06.825 [DEBUG] [Thread-117035] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:00:06.825 [DEBUG] [Thread-117035] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:00:06.825 [DEBUG] [Thread-117035] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:00:06.825 [DEBUG] [Thread-117035] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:00:06.825 [DEBUG] [Thread-117035] [transport.py] [_log()] client lang: <none>
2025-11-03T14:00:06.825 [DEBUG] [Thread-117035] [transport.py] [_log()] server lang: <none>
2025-11-03T14:00:06.825 [DEBUG] [Thread-117035] [transport.py] [_log()] kex follows: False
2025-11-03T14:00:06.826 [DEBUG] [Thread-117035] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:00:06.826 [DEBUG] [Thread-117035] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:00:06.826 [DEBUG] [Thread-117035] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:00:06.826 [DEBUG] [Thread-117035] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:00:06.826 [DEBUG] [Thread-117035] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:00:06.826 [DEBUG] [Thread-117035] [transport.py] [_log()] Compression: none
2025-11-03T14:00:06.826 [DEBUG] [Thread-117035] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:00:06.882 [DEBUG] [Thread-117035] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:00:06.883 [DEBUG] [Thread-117035] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:00:06.884 [DEBUG] [Thread-117035] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:00:06.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:00:06.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:00:06.939 [DEBUG] [Thread-117035] [transport.py] [_log()] userauth is OK
2025-11-03T14:00:06.940 [DEBUG] [Thread-117035] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:00:06.940 [DEBUG] [Thread-117035] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:00:06.940 [DEBUG] [Thread-117035] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:00:06.940 [DEBUG] [Thread-117035] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:00:06.959 [INFO] [Thread-117035] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:00:06.959 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:00:06.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:00:07.827 [DEBUG] [Thread-117035] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:00:07.827 [DEBUG] [Thread-117035] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:00:07.875 [DEBUG] [Thread-117035] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:00:07.875 [DEBUG] [Thread-117035] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:00:07.884 [DEBUG] [Thread-117035] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:00:07.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:00:07.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:00:07.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:00:07.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:00:07.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:00:07.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:00:07.917 [DEBUG] [Thread-117035] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:00:08.649 [DEBUG] [Thread-117037 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:00:11.905 [DEBUG] [Thread-117038 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:00:26.968 [DEBUG] [Thread-117039 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:00:37.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:00:37.940 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:00:37.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:00:38.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 0, 8), 46.42, 3.79, 0.0, 33.17, 26.36, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:00:38.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:00:08
2025-11-03T14:00:38.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:00:38.885 [DEBUG] [Thread-117040] [transport.py] [_log()] starting thread (client mode): 0x117bcf70
2025-11-03T14:00:38.885 [DEBUG] [Thread-117040] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:00:38.905 [DEBUG] [Thread-117040] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:00:38.905 [INFO] [Thread-117040] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:00:38.908 [DEBUG] [Thread-117040] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:00:38.908 [DEBUG] [Thread-117040] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:00:38.908 [DEBUG] [Thread-117040] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:00:38.908 [DEBUG] [Thread-117040] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:00:38.908 [DEBUG] [Thread-117040] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:00:38.908 [DEBUG] [Thread-117040] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:00:38.908 [DEBUG] [Thread-117040] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:00:38.908 [DEBUG] [Thread-117040] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:00:38.908 [DEBUG] [Thread-117040] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:00:38.908 [DEBUG] [Thread-117040] [transport.py] [_log()] client lang: <none>
2025-11-03T14:00:38.908 [DEBUG] [Thread-117040] [transport.py] [_log()] server lang: <none>
2025-11-03T14:00:38.909 [DEBUG] [Thread-117040] [transport.py] [_log()] kex follows: False
2025-11-03T14:00:38.909 [DEBUG] [Thread-117040] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:00:38.909 [DEBUG] [Thread-117040] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:00:38.909 [DEBUG] [Thread-117040] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:00:38.909 [DEBUG] [Thread-117040] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:00:38.909 [DEBUG] [Thread-117040] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:00:38.909 [DEBUG] [Thread-117040] [transport.py] [_log()] Compression: none
2025-11-03T14:00:38.909 [DEBUG] [Thread-117040] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:00:38.926 [DEBUG] [Thread-117040] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:00:38.927 [DEBUG] [Thread-117040] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:00:38.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:00:38.928 [DEBUG] [Thread-117040] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:00:38.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:00:38.930 [DEBUG] [Thread-117040] [transport.py] [_log()] userauth is OK
2025-11-03T14:00:38.930 [DEBUG] [Thread-117040] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:00:38.930 [DEBUG] [Thread-117040] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:00:38.930 [DEBUG] [Thread-117040] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:00:38.931 [DEBUG] [Thread-117040] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:00:38.968 [INFO] [Thread-117040] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:00:38.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:00:39.615 [DEBUG] [Thread-117040] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:00:39.615 [DEBUG] [Thread-117040] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:00:39.615 [DEBUG] [Thread-117040] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:00:39.656 [DEBUG] [Thread-117040] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:00:39.656 [DEBUG] [Thread-117040] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:00:39.660 [DEBUG] [Thread-117040] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:00:39.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:00:39.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:00:39.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:00:39.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:00:39.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:00:39.686 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:00:39.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:00:39.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:00:39.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:00:39.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.499756 -999.00  +27.20  30.84      8   -9.50 1 1 2 1 1   888    0 36.53 1.89 ----- 32.5 30.8 313.0 35.0 31.2 -30.7 30.7 -29.3 31.2 -29.0 32.0 -29.7
2025-11-03T14:00:39.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:00:39.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:00:39.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.499756
2025-11-03T14:00:39.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:00:39.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:00:39.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:00:39.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:00:39.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:00:39.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:00:08', tmtdew=46.42, humidity=3.79, cloud=0.0, wind=33.17, temperature=26.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T11:59:38.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:00:39.690 [DEBUG] [Thread-117040] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:00:39.777 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:00:39.789 [DEBUG] [Thread-117043] [transport.py] [_log()] starting thread (client mode): 0x81b8d90
2025-11-03T14:00:39.790 [DEBUG] [Thread-117043] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:00:39.804 [DEBUG] [Thread-117043] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:00:39.804 [INFO] [Thread-117043] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:00:39.811 [DEBUG] [Thread-117043] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:00:39.812 [DEBUG] [Thread-117043] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:00:39.812 [DEBUG] [Thread-117043] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:00:39.812 [DEBUG] [Thread-117043] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:00:39.812 [DEBUG] [Thread-117043] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:00:39.812 [DEBUG] [Thread-117043] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:00:39.812 [DEBUG] [Thread-117043] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:00:39.812 [DEBUG] [Thread-117043] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:00:39.812 [DEBUG] [Thread-117043] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:00:39.812 [DEBUG] [Thread-117043] [transport.py] [_log()] client lang: <none>
2025-11-03T14:00:39.812 [DEBUG] [Thread-117043] [transport.py] [_log()] server lang: <none>
2025-11-03T14:00:39.812 [DEBUG] [Thread-117043] [transport.py] [_log()] kex follows: False
2025-11-03T14:00:39.812 [DEBUG] [Thread-117043] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:00:39.812 [DEBUG] [Thread-117043] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:00:39.812 [DEBUG] [Thread-117043] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:00:39.812 [DEBUG] [Thread-117043] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:00:39.812 [DEBUG] [Thread-117043] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:00:39.812 [DEBUG] [Thread-117043] [transport.py] [_log()] Compression: none
2025-11-03T14:00:39.812 [DEBUG] [Thread-117043] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:00:39.872 [DEBUG] [Thread-117043] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:00:39.873 [DEBUG] [Thread-117043] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:00:39.874 [DEBUG] [Thread-117043] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:00:39.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:00:39.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:00:39.928 [DEBUG] [Thread-117043] [transport.py] [_log()] userauth is OK
2025-11-03T14:00:39.929 [DEBUG] [Thread-117043] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:00:39.929 [DEBUG] [Thread-117043] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:00:39.929 [DEBUG] [Thread-117043] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:00:39.929 [DEBUG] [Thread-117043] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:00:39.948 [INFO] [Thread-117043] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:00:39.949 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:00:39.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:00:40.853 [DEBUG] [Thread-117043] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:00:40.853 [DEBUG] [Thread-117043] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:00:40.901 [DEBUG] [Thread-117043] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:00:40.901 [DEBUG] [Thread-117043] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:00:40.911 [DEBUG] [Thread-117043] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:00:40.920 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:00:40.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:00:40.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:00:40.940 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:00:40.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:00:40.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:00:40.949 [DEBUG] [Thread-117043] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:00:41.993 [DEBUG] [Thread-117045 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:00:53.615 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:00:53.616 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:00:57.037 [DEBUG] [Thread-117046 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:01:08.724 [DEBUG] [Thread-117047 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:01:10.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:01:10.971 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:01:10.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:01:11.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 0, 40), 46.28, 3.84, 0.0, 33.84, 26.11, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:01:11.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:00:40
2025-11-03T14:01:11.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:01:11.949 [DEBUG] [Thread-117048] [transport.py] [_log()] starting thread (client mode): 0xed2dd20
2025-11-03T14:01:11.949 [DEBUG] [Thread-117048] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:01:11.968 [DEBUG] [Thread-117048] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:01:11.968 [INFO] [Thread-117048] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:01:11.971 [DEBUG] [Thread-117048] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:01:11.971 [DEBUG] [Thread-117048] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:01:11.971 [DEBUG] [Thread-117048] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:01:11.971 [DEBUG] [Thread-117048] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:01:11.971 [DEBUG] [Thread-117048] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:01:11.971 [DEBUG] [Thread-117048] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:01:11.971 [DEBUG] [Thread-117048] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:01:11.971 [DEBUG] [Thread-117048] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:01:11.971 [DEBUG] [Thread-117048] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:01:11.971 [DEBUG] [Thread-117048] [transport.py] [_log()] client lang: <none>
2025-11-03T14:01:11.971 [DEBUG] [Thread-117048] [transport.py] [_log()] server lang: <none>
2025-11-03T14:01:11.971 [DEBUG] [Thread-117048] [transport.py] [_log()] kex follows: False
2025-11-03T14:01:11.971 [DEBUG] [Thread-117048] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:01:11.971 [DEBUG] [Thread-117048] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:01:11.971 [DEBUG] [Thread-117048] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:01:11.971 [DEBUG] [Thread-117048] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:01:11.971 [DEBUG] [Thread-117048] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:01:11.971 [DEBUG] [Thread-117048] [transport.py] [_log()] Compression: none
2025-11-03T14:01:11.971 [DEBUG] [Thread-117048] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:01:11.986 [DEBUG] [Thread-117048] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:01:11.986 [DEBUG] [Thread-117048] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:01:11.986 [DEBUG] [Thread-117048] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:01:11.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:01:11.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:01:11.987 [DEBUG] [Thread-117048] [transport.py] [_log()] userauth is OK
2025-11-03T14:01:11.987 [DEBUG] [Thread-117048] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:01:11.987 [DEBUG] [Thread-117048] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:01:11.987 [DEBUG] [Thread-117048] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:01:11.987 [DEBUG] [Thread-117048] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:01:11.996 [INFO] [Thread-117048] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:01:11.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:01:12.068 [DEBUG] [Thread-117050 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:01:12.652 [DEBUG] [Thread-117048] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:01:12.652 [DEBUG] [Thread-117048] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:01:12.652 [DEBUG] [Thread-117048] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:01:12.693 [DEBUG] [Thread-117048] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:01:12.693 [DEBUG] [Thread-117048] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:01:12.695 [DEBUG] [Thread-117048] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:01:12.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:01:12.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:01:12.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:01:12.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:01:12.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:01:12.710 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:01:12.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:01:12.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:01:12.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:01:12.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.500451 -999.00  +27.10  25.95      8   -9.70 1 1 1 1 1   888    0 35.75 5.00 ----- 30.4 25.9 311.4 48.8 31.4 -30.3 30.7 -31.0 31.3 -29.7 32.2 -30.7
2025-11-03T14:01:12.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:01:12.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:01:12.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.500451
2025-11-03T14:01:12.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:01:12.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:01:12.712 [DEBUG] [Thread-117048] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:01:12.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:01:12.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:01:12.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:01:12.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:00:40', tmtdew=46.28, humidity=3.84, cloud=0.0, wind=33.84, temperature=26.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:00:38.966', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:01:12.791 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:01:12.804 [DEBUG] [Thread-117052] [transport.py] [_log()] starting thread (client mode): 0x117bc820
2025-11-03T14:01:12.804 [DEBUG] [Thread-117052] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:01:12.818 [DEBUG] [Thread-117052] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:01:12.818 [INFO] [Thread-117052] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:01:12.826 [DEBUG] [Thread-117052] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:01:12.826 [DEBUG] [Thread-117052] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:01:12.826 [DEBUG] [Thread-117052] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:01:12.826 [DEBUG] [Thread-117052] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:01:12.826 [DEBUG] [Thread-117052] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:01:12.826 [DEBUG] [Thread-117052] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:01:12.826 [DEBUG] [Thread-117052] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:01:12.826 [DEBUG] [Thread-117052] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:01:12.826 [DEBUG] [Thread-117052] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:01:12.826 [DEBUG] [Thread-117052] [transport.py] [_log()] client lang: <none>
2025-11-03T14:01:12.826 [DEBUG] [Thread-117052] [transport.py] [_log()] server lang: <none>
2025-11-03T14:01:12.826 [DEBUG] [Thread-117052] [transport.py] [_log()] kex follows: False
2025-11-03T14:01:12.826 [DEBUG] [Thread-117052] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:01:12.826 [DEBUG] [Thread-117052] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:01:12.826 [DEBUG] [Thread-117052] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:01:12.826 [DEBUG] [Thread-117052] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:01:12.826 [DEBUG] [Thread-117052] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:01:12.826 [DEBUG] [Thread-117052] [transport.py] [_log()] Compression: none
2025-11-03T14:01:12.826 [DEBUG] [Thread-117052] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:01:12.885 [DEBUG] [Thread-117052] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:01:12.885 [DEBUG] [Thread-117052] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:01:12.885 [DEBUG] [Thread-117052] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:01:12.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:01:12.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:01:12.941 [DEBUG] [Thread-117052] [transport.py] [_log()] userauth is OK
2025-11-03T14:01:12.941 [DEBUG] [Thread-117052] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:01:12.941 [DEBUG] [Thread-117052] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:01:12.942 [DEBUG] [Thread-117052] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:01:12.942 [DEBUG] [Thread-117052] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:01:12.957 [INFO] [Thread-117052] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:01:12.957 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:01:12.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:01:13.797 [DEBUG] [Thread-117052] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:01:13.798 [DEBUG] [Thread-117052] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:01:13.845 [DEBUG] [Thread-117052] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:01:13.845 [DEBUG] [Thread-117052] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:01:13.856 [DEBUG] [Thread-117052] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:01:13.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:01:13.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:01:13.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:01:13.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:01:13.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:01:13.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:01:13.892 [DEBUG] [Thread-117052] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:01:27.099 [DEBUG] [Thread-117054 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:01:42.162 [DEBUG] [Thread-117055 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:01:43.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:01:43.915 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:01:43.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:01:44.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 1, 13), 46.44, 3.8, 0.0, 48.68, 26.29, 0, 0, 0, 2, 1, 0),)
2025-11-03T14:01:44.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:01:13
2025-11-03T14:01:44.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:01:44.885 [DEBUG] [Thread-117056] [transport.py] [_log()] starting thread (client mode): 0xed2c730
2025-11-03T14:01:44.885 [DEBUG] [Thread-117056] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:01:44.904 [DEBUG] [Thread-117056] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:01:44.904 [INFO] [Thread-117056] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:01:44.907 [DEBUG] [Thread-117056] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:01:44.907 [DEBUG] [Thread-117056] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:01:44.907 [DEBUG] [Thread-117056] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:01:44.907 [DEBUG] [Thread-117056] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:01:44.907 [DEBUG] [Thread-117056] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:01:44.907 [DEBUG] [Thread-117056] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:01:44.907 [DEBUG] [Thread-117056] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:01:44.907 [DEBUG] [Thread-117056] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:01:44.907 [DEBUG] [Thread-117056] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:01:44.907 [DEBUG] [Thread-117056] [transport.py] [_log()] client lang: <none>
2025-11-03T14:01:44.907 [DEBUG] [Thread-117056] [transport.py] [_log()] server lang: <none>
2025-11-03T14:01:44.907 [DEBUG] [Thread-117056] [transport.py] [_log()] kex follows: False
2025-11-03T14:01:44.907 [DEBUG] [Thread-117056] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:01:44.907 [DEBUG] [Thread-117056] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:01:44.907 [DEBUG] [Thread-117056] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:01:44.907 [DEBUG] [Thread-117056] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:01:44.907 [DEBUG] [Thread-117056] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:01:44.907 [DEBUG] [Thread-117056] [transport.py] [_log()] Compression: none
2025-11-03T14:01:44.908 [DEBUG] [Thread-117056] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:01:44.927 [DEBUG] [Thread-117056] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:01:44.928 [DEBUG] [Thread-117056] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:01:44.928 [DEBUG] [Thread-117056] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:01:44.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:01:44.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:01:44.930 [DEBUG] [Thread-117056] [transport.py] [_log()] userauth is OK
2025-11-03T14:01:44.931 [DEBUG] [Thread-117056] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:01:44.931 [DEBUG] [Thread-117056] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:01:44.931 [DEBUG] [Thread-117056] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:01:44.931 [DEBUG] [Thread-117056] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:01:44.954 [INFO] [Thread-117056] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:01:44.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:01:45.600 [DEBUG] [Thread-117056] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:01:45.600 [DEBUG] [Thread-117056] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:01:45.600 [DEBUG] [Thread-117056] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:01:45.641 [DEBUG] [Thread-117056] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:01:45.641 [DEBUG] [Thread-117056] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:01:45.644 [DEBUG] [Thread-117056] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:01:45.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:01:45.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:01:45.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:01:45.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:01:45.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:01:45.663 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:01:45.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:01:45.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:01:45.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:01:45.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.500798 -999.00  +27.60  33.65      7  -10.10 1 1 2 1 1   888    0 36.81 5.65 ----- 46.6 33.6 331.4 45.7 31.5 -30.3 30.8 -30.0 31.4 -31.5 32.2 -30.3
2025-11-03T14:01:45.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:01:45.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:01:45.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.500798
2025-11-03T14:01:45.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:01:45.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:01:45.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:01:45.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:01:45.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:01:45.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:01:13', tmtdew=46.44, humidity=3.8, cloud=0.0, wind=48.68, temperature=26.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=1, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:01:08.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:01:45.664 [DEBUG] [Thread-117056] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:01:45.737 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:01:45.749 [DEBUG] [Thread-117059] [transport.py] [_log()] starting thread (client mode): 0x117835e0
2025-11-03T14:01:45.749 [DEBUG] [Thread-117059] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:01:45.763 [DEBUG] [Thread-117059] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:01:45.763 [INFO] [Thread-117059] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:01:45.771 [DEBUG] [Thread-117059] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:01:45.771 [DEBUG] [Thread-117059] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:01:45.771 [DEBUG] [Thread-117059] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:01:45.771 [DEBUG] [Thread-117059] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:01:45.771 [DEBUG] [Thread-117059] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:01:45.771 [DEBUG] [Thread-117059] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:01:45.771 [DEBUG] [Thread-117059] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:01:45.771 [DEBUG] [Thread-117059] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:01:45.771 [DEBUG] [Thread-117059] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:01:45.771 [DEBUG] [Thread-117059] [transport.py] [_log()] client lang: <none>
2025-11-03T14:01:45.771 [DEBUG] [Thread-117059] [transport.py] [_log()] server lang: <none>
2025-11-03T14:01:45.771 [DEBUG] [Thread-117059] [transport.py] [_log()] kex follows: False
2025-11-03T14:01:45.771 [DEBUG] [Thread-117059] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:01:45.771 [DEBUG] [Thread-117059] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:01:45.771 [DEBUG] [Thread-117059] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:01:45.771 [DEBUG] [Thread-117059] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:01:45.771 [DEBUG] [Thread-117059] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:01:45.771 [DEBUG] [Thread-117059] [transport.py] [_log()] Compression: none
2025-11-03T14:01:45.771 [DEBUG] [Thread-117059] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:01:45.826 [DEBUG] [Thread-117059] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:01:45.826 [DEBUG] [Thread-117059] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:01:45.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:01:45.826 [DEBUG] [Thread-117059] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:01:45.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:01:45.883 [DEBUG] [Thread-117059] [transport.py] [_log()] userauth is OK
2025-11-03T14:01:45.883 [DEBUG] [Thread-117059] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:01:45.883 [DEBUG] [Thread-117059] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:01:45.883 [DEBUG] [Thread-117059] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:01:45.883 [DEBUG] [Thread-117059] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:01:45.898 [INFO] [Thread-117059] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:01:45.898 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:01:45.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:01:46.761 [DEBUG] [Thread-117059] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:01:46.761 [DEBUG] [Thread-117059] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:01:46.815 [DEBUG] [Thread-117059] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:01:46.815 [DEBUG] [Thread-117059] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:01:46.823 [DEBUG] [Thread-117059] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:01:46.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:01:46.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:01:46.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:01:46.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:01:46.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:01:46.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:01:46.857 [DEBUG] [Thread-117059] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:01:53.758 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:01:53.759 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:01:57.193 [DEBUG] [Thread-117061 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:02:08.770 [DEBUG] [Thread-117062 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:02:12.250 [DEBUG] [Thread-117063 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:02:16.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:02:16.863 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:02:16.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:02:17.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 1, 45), 47.21, 3.25, 0.0, 44.62, 26.15, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:02:17.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:01:45
2025-11-03T14:02:17.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:02:17.809 [DEBUG] [Thread-117064] [transport.py] [_log()] starting thread (client mode): 0xed2fe80
2025-11-03T14:02:17.809 [DEBUG] [Thread-117064] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:02:17.830 [DEBUG] [Thread-117064] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:02:17.830 [INFO] [Thread-117064] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:02:17.839 [DEBUG] [Thread-117064] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:02:17.839 [DEBUG] [Thread-117064] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:02:17.839 [DEBUG] [Thread-117064] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:02:17.839 [DEBUG] [Thread-117064] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:02:17.839 [DEBUG] [Thread-117064] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:02:17.839 [DEBUG] [Thread-117064] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:02:17.839 [DEBUG] [Thread-117064] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:02:17.840 [DEBUG] [Thread-117064] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:02:17.840 [DEBUG] [Thread-117064] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:02:17.840 [DEBUG] [Thread-117064] [transport.py] [_log()] client lang: <none>
2025-11-03T14:02:17.840 [DEBUG] [Thread-117064] [transport.py] [_log()] server lang: <none>
2025-11-03T14:02:17.840 [DEBUG] [Thread-117064] [transport.py] [_log()] kex follows: False
2025-11-03T14:02:17.840 [DEBUG] [Thread-117064] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:02:17.840 [DEBUG] [Thread-117064] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:02:17.840 [DEBUG] [Thread-117064] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:02:17.840 [DEBUG] [Thread-117064] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:02:17.840 [DEBUG] [Thread-117064] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:02:17.840 [DEBUG] [Thread-117064] [transport.py] [_log()] Compression: none
2025-11-03T14:02:17.840 [DEBUG] [Thread-117064] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:02:17.861 [DEBUG] [Thread-117064] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:02:17.861 [DEBUG] [Thread-117064] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:02:17.862 [DEBUG] [Thread-117064] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:02:17.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:02:17.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:02:17.864 [DEBUG] [Thread-117064] [transport.py] [_log()] userauth is OK
2025-11-03T14:02:17.864 [DEBUG] [Thread-117064] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:02:17.864 [DEBUG] [Thread-117064] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:02:17.864 [DEBUG] [Thread-117064] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:02:17.864 [DEBUG] [Thread-117064] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:02:17.888 [INFO] [Thread-117064] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:02:17.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:02:18.510 [DEBUG] [Thread-117064] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:02:18.510 [DEBUG] [Thread-117064] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:02:18.510 [DEBUG] [Thread-117064] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:02:18.551 [DEBUG] [Thread-117064] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:02:18.552 [DEBUG] [Thread-117064] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:02:18.554 [DEBUG] [Thread-117064] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:02:18.566 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:02:18.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:02:18.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:02:18.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:02:18.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:02:18.572 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:02:18.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:02:18.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:02:18.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:02:18.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.501145 -999.00  +26.90  35.65      7  -10.40 1 1 2 1 1   888    0 36.56 8.25 ----- 36.9 35.6 328.0 57.7 31.4 -33.2 30.7 -30.6 31.4 -30.4 32.1 -30.5
2025-11-03T14:02:18.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:02:18.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:02:18.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.501145
2025-11-03T14:02:18.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:02:18.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:02:18.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:02:18.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:02:18.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:02:18.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:01:45', tmtdew=47.21, humidity=3.25, cloud=0.0, wind=44.62, temperature=26.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:01:38.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:02:18.573 [DEBUG] [Thread-117064] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:02:18.647 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:02:18.659 [DEBUG] [Thread-117067] [transport.py] [_log()] starting thread (client mode): 0xed2fd60
2025-11-03T14:02:18.659 [DEBUG] [Thread-117067] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:02:18.674 [DEBUG] [Thread-117067] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:02:18.674 [INFO] [Thread-117067] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:02:18.682 [DEBUG] [Thread-117067] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:02:18.682 [DEBUG] [Thread-117067] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:02:18.682 [DEBUG] [Thread-117067] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:02:18.682 [DEBUG] [Thread-117067] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:02:18.682 [DEBUG] [Thread-117067] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:02:18.682 [DEBUG] [Thread-117067] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:02:18.682 [DEBUG] [Thread-117067] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:02:18.682 [DEBUG] [Thread-117067] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:02:18.682 [DEBUG] [Thread-117067] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:02:18.682 [DEBUG] [Thread-117067] [transport.py] [_log()] client lang: <none>
2025-11-03T14:02:18.682 [DEBUG] [Thread-117067] [transport.py] [_log()] server lang: <none>
2025-11-03T14:02:18.682 [DEBUG] [Thread-117067] [transport.py] [_log()] kex follows: False
2025-11-03T14:02:18.682 [DEBUG] [Thread-117067] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:02:18.682 [DEBUG] [Thread-117067] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:02:18.682 [DEBUG] [Thread-117067] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:02:18.682 [DEBUG] [Thread-117067] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:02:18.682 [DEBUG] [Thread-117067] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:02:18.682 [DEBUG] [Thread-117067] [transport.py] [_log()] Compression: none
2025-11-03T14:02:18.682 [DEBUG] [Thread-117067] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:02:18.739 [DEBUG] [Thread-117067] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:02:18.740 [DEBUG] [Thread-117067] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:02:18.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:02:18.740 [DEBUG] [Thread-117067] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:02:18.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:02:18.797 [DEBUG] [Thread-117067] [transport.py] [_log()] userauth is OK
2025-11-03T14:02:18.797 [DEBUG] [Thread-117067] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:02:18.797 [DEBUG] [Thread-117067] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:02:18.797 [DEBUG] [Thread-117067] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:02:18.797 [DEBUG] [Thread-117067] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:02:18.811 [INFO] [Thread-117067] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:02:18.811 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:02:18.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:02:19.659 [DEBUG] [Thread-117067] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:02:19.659 [DEBUG] [Thread-117067] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:02:19.706 [DEBUG] [Thread-117067] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:02:19.706 [DEBUG] [Thread-117067] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:02:19.714 [DEBUG] [Thread-117067] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:02:19.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:02:19.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:02:19.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:02:19.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:02:19.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:02:19.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:02:19.746 [DEBUG] [Thread-117067] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:02:27.283 [DEBUG] [Thread-117069 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:02:42.331 [DEBUG] [Thread-117070 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:02:49.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:02:49.765 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:02:49.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:02:50.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 2, 17), 46.93, 3.34, 0.0, 43.14, 26.13, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:02:50.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:02:17
2025-11-03T14:02:50.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:02:50.739 [DEBUG] [Thread-117071] [transport.py] [_log()] starting thread (client mode): 0xed20dc0
2025-11-03T14:02:50.739 [DEBUG] [Thread-117071] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:02:50.759 [DEBUG] [Thread-117071] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:02:50.759 [INFO] [Thread-117071] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:02:50.763 [DEBUG] [Thread-117071] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:02:50.763 [DEBUG] [Thread-117071] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:02:50.763 [DEBUG] [Thread-117071] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:02:50.763 [DEBUG] [Thread-117071] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:02:50.763 [DEBUG] [Thread-117071] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:02:50.763 [DEBUG] [Thread-117071] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:02:50.763 [DEBUG] [Thread-117071] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:02:50.763 [DEBUG] [Thread-117071] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:02:50.763 [DEBUG] [Thread-117071] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:02:50.763 [DEBUG] [Thread-117071] [transport.py] [_log()] client lang: <none>
2025-11-03T14:02:50.763 [DEBUG] [Thread-117071] [transport.py] [_log()] server lang: <none>
2025-11-03T14:02:50.763 [DEBUG] [Thread-117071] [transport.py] [_log()] kex follows: False
2025-11-03T14:02:50.763 [DEBUG] [Thread-117071] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:02:50.763 [DEBUG] [Thread-117071] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:02:50.763 [DEBUG] [Thread-117071] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:02:50.763 [DEBUG] [Thread-117071] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:02:50.763 [DEBUG] [Thread-117071] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:02:50.763 [DEBUG] [Thread-117071] [transport.py] [_log()] Compression: none
2025-11-03T14:02:50.763 [DEBUG] [Thread-117071] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:02:50.778 [DEBUG] [Thread-117071] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:02:50.779 [DEBUG] [Thread-117071] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:02:50.779 [DEBUG] [Thread-117071] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:02:50.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:02:50.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:02:50.780 [DEBUG] [Thread-117071] [transport.py] [_log()] userauth is OK
2025-11-03T14:02:50.780 [DEBUG] [Thread-117071] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:02:50.780 [DEBUG] [Thread-117071] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:02:50.780 [DEBUG] [Thread-117071] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:02:50.780 [DEBUG] [Thread-117071] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:02:50.791 [INFO] [Thread-117071] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:02:50.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:02:51.425 [DEBUG] [Thread-117071] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:02:51.425 [DEBUG] [Thread-117071] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:02:51.425 [DEBUG] [Thread-117071] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:02:51.465 [DEBUG] [Thread-117071] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:02:51.466 [DEBUG] [Thread-117071] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:02:51.468 [DEBUG] [Thread-117071] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:02:51.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:02:51.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:02:51.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:02:51.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:02:51.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:02:51.487 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:02:51.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:02:51.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:02:51.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:02:51.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.501492 -999.00  +26.80  43.93      7  -10.60 1 1 2 1 1   888    0 36.48 10.29 ----- 41.8 43.9 328.6 54.9 31.4 -31.3 30.8 -31.5 31.4 -30.3 32.1 -30.6
2025-11-03T14:02:51.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:02:51.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:02:51.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.501492
2025-11-03T14:02:51.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:02:51.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:02:51.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:02:51.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:02:51.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:02:51.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:02:17', tmtdew=46.93, humidity=3.34, cloud=0.0, wind=43.14, temperature=26.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:02:08.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:02:51.489 [DEBUG] [Thread-117071] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:02:51.563 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:02:51.574 [DEBUG] [Thread-117074] [transport.py] [_log()] starting thread (client mode): 0xed21450
2025-11-03T14:02:51.575 [DEBUG] [Thread-117074] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:02:51.589 [DEBUG] [Thread-117074] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:02:51.589 [INFO] [Thread-117074] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:02:51.597 [DEBUG] [Thread-117074] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:02:51.597 [DEBUG] [Thread-117074] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:02:51.597 [DEBUG] [Thread-117074] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:02:51.597 [DEBUG] [Thread-117074] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:02:51.597 [DEBUG] [Thread-117074] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:02:51.597 [DEBUG] [Thread-117074] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:02:51.597 [DEBUG] [Thread-117074] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:02:51.597 [DEBUG] [Thread-117074] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:02:51.597 [DEBUG] [Thread-117074] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:02:51.597 [DEBUG] [Thread-117074] [transport.py] [_log()] client lang: <none>
2025-11-03T14:02:51.597 [DEBUG] [Thread-117074] [transport.py] [_log()] server lang: <none>
2025-11-03T14:02:51.597 [DEBUG] [Thread-117074] [transport.py] [_log()] kex follows: False
2025-11-03T14:02:51.597 [DEBUG] [Thread-117074] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:02:51.597 [DEBUG] [Thread-117074] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:02:51.597 [DEBUG] [Thread-117074] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:02:51.597 [DEBUG] [Thread-117074] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:02:51.597 [DEBUG] [Thread-117074] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:02:51.597 [DEBUG] [Thread-117074] [transport.py] [_log()] Compression: none
2025-11-03T14:02:51.597 [DEBUG] [Thread-117074] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:02:51.652 [DEBUG] [Thread-117074] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:02:51.653 [DEBUG] [Thread-117074] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:02:51.653 [DEBUG] [Thread-117074] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:02:51.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:02:51.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:02:51.710 [DEBUG] [Thread-117074] [transport.py] [_log()] userauth is OK
2025-11-03T14:02:51.710 [DEBUG] [Thread-117074] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:02:51.710 [DEBUG] [Thread-117074] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:02:51.710 [DEBUG] [Thread-117074] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:02:51.710 [DEBUG] [Thread-117074] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:02:51.724 [INFO] [Thread-117074] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:02:51.724 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:02:51.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:02:52.552 [DEBUG] [Thread-117074] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:02:52.552 [DEBUG] [Thread-117074] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:02:52.601 [DEBUG] [Thread-117074] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:02:52.601 [DEBUG] [Thread-117074] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:02:52.609 [DEBUG] [Thread-117074] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:02:52.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:02:52.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:02:52.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:02:52.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:02:52.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:02:52.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:02:52.643 [DEBUG] [Thread-117074] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:02:53.909 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:02:53.909 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:02:57.365 [DEBUG] [Thread-117076 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:03:08.803 [DEBUG] [Thread-117077 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:03:12.415 [DEBUG] [Thread-117078 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:03:22.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:03:22.653 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:03:22.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:03:23.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 2, 49), 46.88, 3.24, 0.0, 40.16, 25.41, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:03:23.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:02:49
2025-11-03T14:03:23.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:03:23.681 [DEBUG] [Thread-117079] [transport.py] [_log()] starting thread (client mode): 0xeda14b0
2025-11-03T14:03:23.682 [DEBUG] [Thread-117079] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:03:23.702 [DEBUG] [Thread-117079] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:03:23.702 [INFO] [Thread-117079] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:03:23.705 [DEBUG] [Thread-117079] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:03:23.705 [DEBUG] [Thread-117079] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:03:23.705 [DEBUG] [Thread-117079] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:03:23.705 [DEBUG] [Thread-117079] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:03:23.705 [DEBUG] [Thread-117079] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:03:23.705 [DEBUG] [Thread-117079] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:03:23.705 [DEBUG] [Thread-117079] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:03:23.705 [DEBUG] [Thread-117079] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:03:23.705 [DEBUG] [Thread-117079] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:03:23.705 [DEBUG] [Thread-117079] [transport.py] [_log()] client lang: <none>
2025-11-03T14:03:23.705 [DEBUG] [Thread-117079] [transport.py] [_log()] server lang: <none>
2025-11-03T14:03:23.705 [DEBUG] [Thread-117079] [transport.py] [_log()] kex follows: False
2025-11-03T14:03:23.705 [DEBUG] [Thread-117079] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:03:23.705 [DEBUG] [Thread-117079] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:03:23.705 [DEBUG] [Thread-117079] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:03:23.705 [DEBUG] [Thread-117079] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:03:23.705 [DEBUG] [Thread-117079] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:03:23.705 [DEBUG] [Thread-117079] [transport.py] [_log()] Compression: none
2025-11-03T14:03:23.705 [DEBUG] [Thread-117079] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:03:23.720 [DEBUG] [Thread-117079] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:03:23.720 [DEBUG] [Thread-117079] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:03:23.720 [DEBUG] [Thread-117079] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:03:23.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:03:23.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:03:23.721 [DEBUG] [Thread-117079] [transport.py] [_log()] userauth is OK
2025-11-03T14:03:23.721 [DEBUG] [Thread-117079] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:03:23.721 [DEBUG] [Thread-117079] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:03:23.721 [DEBUG] [Thread-117079] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:03:23.721 [DEBUG] [Thread-117079] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:03:23.730 [INFO] [Thread-117079] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:03:23.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:03:24.377 [DEBUG] [Thread-117079] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:03:24.377 [DEBUG] [Thread-117079] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:03:24.377 [DEBUG] [Thread-117079] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:03:24.419 [DEBUG] [Thread-117079] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:03:24.419 [DEBUG] [Thread-117079] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:03:24.421 [DEBUG] [Thread-117079] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:03:24.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:03:24.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:03:24.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:03:24.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:03:24.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:03:24.442 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:03:24.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:03:24.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:03:24.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:03:24.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.501839 -999.00  +26.60  33.62      7  -10.60 1 1 2 1 1   888    0 36.87 12.09 ----- 33.6 33.6 315.8 50.6 31.4 -31.6 30.7 -30.9 31.4 -30.4 32.1 -30.7
2025-11-03T14:03:24.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:03:24.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:03:24.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.501839
2025-11-03T14:03:24.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:03:24.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:03:24.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:03:24.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:03:24.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:03:24.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:02:49', tmtdew=46.88, humidity=3.24, cloud=0.0, wind=40.16, temperature=25.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:02:38.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:03:24.443 [DEBUG] [Thread-117079] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:03:24.517 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:03:24.530 [DEBUG] [Thread-117082] [transport.py] [_log()] starting thread (client mode): 0xeda0ac0
2025-11-03T14:03:24.530 [DEBUG] [Thread-117082] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:03:24.545 [DEBUG] [Thread-117082] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:03:24.545 [INFO] [Thread-117082] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:03:24.553 [DEBUG] [Thread-117082] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:03:24.553 [DEBUG] [Thread-117082] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:03:24.553 [DEBUG] [Thread-117082] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:03:24.553 [DEBUG] [Thread-117082] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:03:24.553 [DEBUG] [Thread-117082] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:03:24.553 [DEBUG] [Thread-117082] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:03:24.553 [DEBUG] [Thread-117082] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:03:24.553 [DEBUG] [Thread-117082] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:03:24.553 [DEBUG] [Thread-117082] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:03:24.553 [DEBUG] [Thread-117082] [transport.py] [_log()] client lang: <none>
2025-11-03T14:03:24.553 [DEBUG] [Thread-117082] [transport.py] [_log()] server lang: <none>
2025-11-03T14:03:24.553 [DEBUG] [Thread-117082] [transport.py] [_log()] kex follows: False
2025-11-03T14:03:24.553 [DEBUG] [Thread-117082] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:03:24.553 [DEBUG] [Thread-117082] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:03:24.553 [DEBUG] [Thread-117082] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:03:24.553 [DEBUG] [Thread-117082] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:03:24.553 [DEBUG] [Thread-117082] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:03:24.553 [DEBUG] [Thread-117082] [transport.py] [_log()] Compression: none
2025-11-03T14:03:24.553 [DEBUG] [Thread-117082] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:03:24.611 [DEBUG] [Thread-117082] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:03:24.611 [DEBUG] [Thread-117082] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:03:24.611 [DEBUG] [Thread-117082] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:03:24.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:03:24.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:03:24.667 [DEBUG] [Thread-117082] [transport.py] [_log()] userauth is OK
2025-11-03T14:03:24.667 [DEBUG] [Thread-117082] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:03:24.667 [DEBUG] [Thread-117082] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:03:24.667 [DEBUG] [Thread-117082] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:03:24.667 [DEBUG] [Thread-117082] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:03:24.681 [INFO] [Thread-117082] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:03:24.681 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:03:24.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:03:25.540 [DEBUG] [Thread-117082] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:03:25.540 [DEBUG] [Thread-117082] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:03:25.588 [DEBUG] [Thread-117082] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:03:25.589 [DEBUG] [Thread-117082] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:03:25.598 [DEBUG] [Thread-117082] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:03:25.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:03:25.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:03:25.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:03:25.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:03:25.636 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:03:25.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:03:25.645 [DEBUG] [Thread-117082] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:03:27.461 [DEBUG] [Thread-117084 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:03:42.516 [DEBUG] [Thread-117085 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:03:54.055 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:03:54.056 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:03:55.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:03:55.667 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:03:55.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:03:56.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 3, 22), 46.8, 3.24, 0.0, 39.89, 25.15, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:03:56.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:03:22
2025-11-03T14:03:56.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:03:56.666 [DEBUG] [Thread-117086] [transport.py] [_log()] starting thread (client mode): 0xed23130
2025-11-03T14:03:56.666 [DEBUG] [Thread-117086] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:03:56.686 [DEBUG] [Thread-117086] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:03:56.687 [INFO] [Thread-117086] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:03:56.690 [DEBUG] [Thread-117086] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:03:56.690 [DEBUG] [Thread-117086] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:03:56.690 [DEBUG] [Thread-117086] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:03:56.690 [DEBUG] [Thread-117086] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:03:56.690 [DEBUG] [Thread-117086] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:03:56.690 [DEBUG] [Thread-117086] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:03:56.690 [DEBUG] [Thread-117086] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:03:56.690 [DEBUG] [Thread-117086] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:03:56.690 [DEBUG] [Thread-117086] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:03:56.690 [DEBUG] [Thread-117086] [transport.py] [_log()] client lang: <none>
2025-11-03T14:03:56.690 [DEBUG] [Thread-117086] [transport.py] [_log()] server lang: <none>
2025-11-03T14:03:56.690 [DEBUG] [Thread-117086] [transport.py] [_log()] kex follows: False
2025-11-03T14:03:56.690 [DEBUG] [Thread-117086] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:03:56.690 [DEBUG] [Thread-117086] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:03:56.690 [DEBUG] [Thread-117086] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:03:56.690 [DEBUG] [Thread-117086] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:03:56.690 [DEBUG] [Thread-117086] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:03:56.690 [DEBUG] [Thread-117086] [transport.py] [_log()] Compression: none
2025-11-03T14:03:56.691 [DEBUG] [Thread-117086] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:03:56.704 [DEBUG] [Thread-117086] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:03:56.705 [DEBUG] [Thread-117086] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:03:56.705 [DEBUG] [Thread-117086] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:03:56.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:03:56.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:03:56.706 [DEBUG] [Thread-117086] [transport.py] [_log()] userauth is OK
2025-11-03T14:03:56.706 [DEBUG] [Thread-117086] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:03:56.706 [DEBUG] [Thread-117086] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:03:56.706 [DEBUG] [Thread-117086] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:03:56.706 [DEBUG] [Thread-117086] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:03:56.723 [INFO] [Thread-117086] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:03:56.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:03:57.371 [DEBUG] [Thread-117086] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:03:57.371 [DEBUG] [Thread-117086] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:03:57.372 [DEBUG] [Thread-117086] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:03:57.412 [DEBUG] [Thread-117086] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:03:57.412 [DEBUG] [Thread-117086] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:03:57.415 [DEBUG] [Thread-117086] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:03:57.426 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:03:57.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:03:57.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:03:57.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:03:57.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:03:57.437 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:03:57.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:03:57.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:03:57.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:03:57.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.502187 -999.00  +26.40  33.39      7  -10.60 1 1 2 1 1   888    0 36.37 12.96 ----- 39.0 33.4 326.6 38.2 31.4 -31.7 30.7 -31.0 31.3 -34.0 32.1 -30.4
2025-11-03T14:03:57.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:03:57.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:03:57.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.502187
2025-11-03T14:03:57.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:03:57.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:03:57.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:03:57.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:03:57.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:03:57.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:03:22', tmtdew=46.8, humidity=3.24, cloud=0.0, wind=39.89, temperature=25.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:03:08.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:03:57.441 [DEBUG] [Thread-117086] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:03:57.536 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:03:57.543 [DEBUG] [Thread-117089 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:03:57.547 [DEBUG] [Thread-117090] [transport.py] [_log()] starting thread (client mode): 0x11783670
2025-11-03T14:03:57.547 [DEBUG] [Thread-117090] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:03:57.564 [DEBUG] [Thread-117090] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:03:57.564 [INFO] [Thread-117090] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:03:57.572 [DEBUG] [Thread-117090] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:03:57.573 [DEBUG] [Thread-117090] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:03:57.573 [DEBUG] [Thread-117090] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:03:57.573 [DEBUG] [Thread-117090] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:03:57.573 [DEBUG] [Thread-117090] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:03:57.573 [DEBUG] [Thread-117090] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:03:57.573 [DEBUG] [Thread-117090] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:03:57.573 [DEBUG] [Thread-117090] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:03:57.573 [DEBUG] [Thread-117090] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:03:57.573 [DEBUG] [Thread-117090] [transport.py] [_log()] client lang: <none>
2025-11-03T14:03:57.574 [DEBUG] [Thread-117090] [transport.py] [_log()] server lang: <none>
2025-11-03T14:03:57.574 [DEBUG] [Thread-117090] [transport.py] [_log()] kex follows: False
2025-11-03T14:03:57.574 [DEBUG] [Thread-117090] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:03:57.574 [DEBUG] [Thread-117090] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:03:57.574 [DEBUG] [Thread-117090] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:03:57.574 [DEBUG] [Thread-117090] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:03:57.574 [DEBUG] [Thread-117090] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:03:57.575 [DEBUG] [Thread-117090] [transport.py] [_log()] Compression: none
2025-11-03T14:03:57.575 [DEBUG] [Thread-117090] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:03:57.635 [DEBUG] [Thread-117090] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:03:57.636 [DEBUG] [Thread-117090] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:03:57.636 [DEBUG] [Thread-117090] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:03:57.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:03:57.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:03:57.695 [DEBUG] [Thread-117090] [transport.py] [_log()] userauth is OK
2025-11-03T14:03:57.695 [DEBUG] [Thread-117090] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:03:57.695 [DEBUG] [Thread-117090] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:03:57.695 [DEBUG] [Thread-117090] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:03:57.695 [DEBUG] [Thread-117090] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:03:57.718 [INFO] [Thread-117090] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:03:57.719 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:03:57.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:03:58.579 [DEBUG] [Thread-117090] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:03:58.579 [DEBUG] [Thread-117090] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:03:58.627 [DEBUG] [Thread-117090] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:03:58.627 [DEBUG] [Thread-117090] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:03:58.635 [DEBUG] [Thread-117090] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:03:58.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:03:58.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:03:58.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:03:58.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:03:58.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:03:58.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:03:58.670 [DEBUG] [Thread-117090] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:04:08.868 [DEBUG] [Thread-117092 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:04:12.587 [DEBUG] [Thread-117093 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:04:27.618 [DEBUG] [Thread-117094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:04:28.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:04:28.692 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:04:28.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:04:29.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 3, 54), 45.91, 3.9, 0.0, 32.25, 25.26, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:04:29.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:03:54
2025-11-03T14:04:29.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:04:29.681 [DEBUG] [Thread-117095] [transport.py] [_log()] starting thread (client mode): 0xed20520
2025-11-03T14:04:29.681 [DEBUG] [Thread-117095] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:04:29.701 [DEBUG] [Thread-117095] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:04:29.701 [INFO] [Thread-117095] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:04:29.704 [DEBUG] [Thread-117095] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:04:29.704 [DEBUG] [Thread-117095] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:04:29.705 [DEBUG] [Thread-117095] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:04:29.705 [DEBUG] [Thread-117095] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:04:29.705 [DEBUG] [Thread-117095] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:04:29.705 [DEBUG] [Thread-117095] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:04:29.705 [DEBUG] [Thread-117095] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:04:29.705 [DEBUG] [Thread-117095] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:04:29.705 [DEBUG] [Thread-117095] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:04:29.705 [DEBUG] [Thread-117095] [transport.py] [_log()] client lang: <none>
2025-11-03T14:04:29.705 [DEBUG] [Thread-117095] [transport.py] [_log()] server lang: <none>
2025-11-03T14:04:29.705 [DEBUG] [Thread-117095] [transport.py] [_log()] kex follows: False
2025-11-03T14:04:29.705 [DEBUG] [Thread-117095] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:04:29.705 [DEBUG] [Thread-117095] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:04:29.705 [DEBUG] [Thread-117095] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:04:29.705 [DEBUG] [Thread-117095] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:04:29.705 [DEBUG] [Thread-117095] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:04:29.705 [DEBUG] [Thread-117095] [transport.py] [_log()] Compression: none
2025-11-03T14:04:29.705 [DEBUG] [Thread-117095] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:04:29.724 [DEBUG] [Thread-117095] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:04:29.724 [DEBUG] [Thread-117095] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:04:29.725 [DEBUG] [Thread-117095] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:04:29.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:04:29.726 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:04:29.728 [DEBUG] [Thread-117095] [transport.py] [_log()] userauth is OK
2025-11-03T14:04:29.728 [DEBUG] [Thread-117095] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:04:29.728 [DEBUG] [Thread-117095] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:04:29.728 [DEBUG] [Thread-117095] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:04:29.728 [DEBUG] [Thread-117095] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:04:29.751 [INFO] [Thread-117095] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:04:29.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:04:30.397 [DEBUG] [Thread-117095] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:04:30.398 [DEBUG] [Thread-117095] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:04:30.398 [DEBUG] [Thread-117095] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:04:30.439 [DEBUG] [Thread-117095] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:04:30.439 [DEBUG] [Thread-117095] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:04:30.443 [DEBUG] [Thread-117095] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:04:30.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:04:30.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:04:30.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:04:30.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:04:30.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:04:30.470 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:04:30.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:04:30.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:04:30.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:04:30.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.502534 -999.00  +26.20  25.61      8  -10.60 1 1 1 1 1   888    0 36.87 15.56 ----- 28.1 25.6 316.4 39.3 31.4 -32.2 30.6 -31.3 31.3 -30.2 32.1 -30.3
2025-11-03T14:04:30.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:04:30.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:04:30.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.502534
2025-11-03T14:04:30.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:04:30.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:04:30.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:04:30.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:04:30.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:04:30.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:03:54', tmtdew=45.91, humidity=3.9, cloud=0.0, wind=32.25, temperature=25.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:03:38.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:04:30.473 [DEBUG] [Thread-117095] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:04:30.556 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:04:30.569 [DEBUG] [Thread-117098] [transport.py] [_log()] starting thread (client mode): 0x117824a0
2025-11-03T14:04:30.569 [DEBUG] [Thread-117098] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:04:30.588 [DEBUG] [Thread-117098] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:04:30.589 [INFO] [Thread-117098] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:04:30.598 [DEBUG] [Thread-117098] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:04:30.599 [DEBUG] [Thread-117098] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:04:30.599 [DEBUG] [Thread-117098] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:04:30.599 [DEBUG] [Thread-117098] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:04:30.599 [DEBUG] [Thread-117098] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:04:30.599 [DEBUG] [Thread-117098] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:04:30.599 [DEBUG] [Thread-117098] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:04:30.599 [DEBUG] [Thread-117098] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:04:30.599 [DEBUG] [Thread-117098] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:04:30.599 [DEBUG] [Thread-117098] [transport.py] [_log()] client lang: <none>
2025-11-03T14:04:30.599 [DEBUG] [Thread-117098] [transport.py] [_log()] server lang: <none>
2025-11-03T14:04:30.599 [DEBUG] [Thread-117098] [transport.py] [_log()] kex follows: False
2025-11-03T14:04:30.599 [DEBUG] [Thread-117098] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:04:30.599 [DEBUG] [Thread-117098] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:04:30.599 [DEBUG] [Thread-117098] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:04:30.599 [DEBUG] [Thread-117098] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:04:30.600 [DEBUG] [Thread-117098] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:04:30.600 [DEBUG] [Thread-117098] [transport.py] [_log()] Compression: none
2025-11-03T14:04:30.600 [DEBUG] [Thread-117098] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:04:30.658 [DEBUG] [Thread-117098] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:04:30.658 [DEBUG] [Thread-117098] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:04:30.659 [DEBUG] [Thread-117098] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:04:30.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:04:30.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:04:30.715 [DEBUG] [Thread-117098] [transport.py] [_log()] userauth is OK
2025-11-03T14:04:30.716 [DEBUG] [Thread-117098] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:04:30.716 [DEBUG] [Thread-117098] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:04:30.716 [DEBUG] [Thread-117098] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:04:30.716 [DEBUG] [Thread-117098] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:04:30.739 [INFO] [Thread-117098] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:04:30.739 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:04:30.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:04:31.581 [DEBUG] [Thread-117098] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:04:31.582 [DEBUG] [Thread-117098] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:04:31.629 [DEBUG] [Thread-117098] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:04:31.629 [DEBUG] [Thread-117098] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:04:31.638 [DEBUG] [Thread-117098] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:04:31.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:04:31.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:04:31.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:04:31.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:04:31.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:04:31.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:04:31.670 [DEBUG] [Thread-117098] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:04:42.649 [DEBUG] [Thread-117100 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:04:54.196 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:04:54.197 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:04:57.692 [DEBUG] [Thread-117101 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:05:01.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:05:01.692 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:05:01.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:05:02.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 4, 26), 45.83, 3.94, 0.0, 32.66, 25.33, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:05:02.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:04:26
2025-11-03T14:05:02.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:05:02.731 [DEBUG] [Thread-117102] [transport.py] [_log()] starting thread (client mode): 0xeda2890
2025-11-03T14:05:02.732 [DEBUG] [Thread-117102] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:05:02.753 [DEBUG] [Thread-117102] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:05:02.753 [INFO] [Thread-117102] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:05:02.756 [DEBUG] [Thread-117102] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:05:02.756 [DEBUG] [Thread-117102] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:05:02.756 [DEBUG] [Thread-117102] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:05:02.756 [DEBUG] [Thread-117102] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:05:02.756 [DEBUG] [Thread-117102] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:05:02.756 [DEBUG] [Thread-117102] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:05:02.756 [DEBUG] [Thread-117102] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:05:02.756 [DEBUG] [Thread-117102] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:05:02.756 [DEBUG] [Thread-117102] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:05:02.756 [DEBUG] [Thread-117102] [transport.py] [_log()] client lang: <none>
2025-11-03T14:05:02.756 [DEBUG] [Thread-117102] [transport.py] [_log()] server lang: <none>
2025-11-03T14:05:02.756 [DEBUG] [Thread-117102] [transport.py] [_log()] kex follows: False
2025-11-03T14:05:02.756 [DEBUG] [Thread-117102] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:05:02.756 [DEBUG] [Thread-117102] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:05:02.756 [DEBUG] [Thread-117102] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:05:02.756 [DEBUG] [Thread-117102] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:05:02.756 [DEBUG] [Thread-117102] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:05:02.756 [DEBUG] [Thread-117102] [transport.py] [_log()] Compression: none
2025-11-03T14:05:02.756 [DEBUG] [Thread-117102] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:05:02.769 [DEBUG] [Thread-117102] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:05:02.769 [DEBUG] [Thread-117102] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:05:02.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:05:02.770 [DEBUG] [Thread-117102] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:05:02.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:05:02.770 [DEBUG] [Thread-117102] [transport.py] [_log()] userauth is OK
2025-11-03T14:05:02.770 [DEBUG] [Thread-117102] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:05:02.770 [DEBUG] [Thread-117102] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:05:02.770 [DEBUG] [Thread-117102] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:05:02.770 [DEBUG] [Thread-117102] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:05:02.780 [INFO] [Thread-117102] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:05:02.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:05:05.414 [DEBUG] [Thread-117102] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:05:05.414 [DEBUG] [Thread-117102] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:05:05.414 [DEBUG] [Thread-117102] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:05:05.454 [DEBUG] [Thread-117102] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:05:05.454 [DEBUG] [Thread-117102] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:05:05.457 [DEBUG] [Thread-117102] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:05:05.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:05:05.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:05:05.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:05:05.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:05:05.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:05:05.484 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:05:05.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:05:05.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:05:05.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:05:05.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.502881 -999.00  +26.50  30.57      8  -10.00 1 1 2 1 1   888    0 36.34 16.92 ----- 32.2 30.6 330.9 37.1 31.4 -32.1 30.7 -30.1 31.4 -30.2 32.1 -30.1
2025-11-03T14:05:05.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:05:05.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:05:05.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.502881
2025-11-03T14:05:05.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:05:05.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:05:05.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:05:05.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:05:05.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:05:05.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:04:26', tmtdew=45.83, humidity=3.94, cloud=0.0, wind=32.66, temperature=25.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:04:08.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:05:05.485 [DEBUG] [Thread-117102] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:05:05.559 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:05:05.573 [DEBUG] [Thread-117105] [transport.py] [_log()] starting thread (client mode): 0xeda3190
2025-11-03T14:05:05.573 [DEBUG] [Thread-117105] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:05:05.587 [DEBUG] [Thread-117105] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:05:05.587 [INFO] [Thread-117105] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:05:05.595 [DEBUG] [Thread-117105] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:05:05.595 [DEBUG] [Thread-117105] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:05:05.595 [DEBUG] [Thread-117105] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:05:05.595 [DEBUG] [Thread-117105] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:05:05.595 [DEBUG] [Thread-117105] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:05:05.595 [DEBUG] [Thread-117105] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:05:05.595 [DEBUG] [Thread-117105] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:05:05.595 [DEBUG] [Thread-117105] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:05:05.595 [DEBUG] [Thread-117105] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:05:05.595 [DEBUG] [Thread-117105] [transport.py] [_log()] client lang: <none>
2025-11-03T14:05:05.595 [DEBUG] [Thread-117105] [transport.py] [_log()] server lang: <none>
2025-11-03T14:05:05.595 [DEBUG] [Thread-117105] [transport.py] [_log()] kex follows: False
2025-11-03T14:05:05.595 [DEBUG] [Thread-117105] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:05:05.595 [DEBUG] [Thread-117105] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:05:05.596 [DEBUG] [Thread-117105] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:05:05.596 [DEBUG] [Thread-117105] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:05:05.596 [DEBUG] [Thread-117105] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:05:05.596 [DEBUG] [Thread-117105] [transport.py] [_log()] Compression: none
2025-11-03T14:05:05.596 [DEBUG] [Thread-117105] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:05:05.650 [DEBUG] [Thread-117105] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:05:05.650 [DEBUG] [Thread-117105] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:05:05.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:05:05.651 [DEBUG] [Thread-117105] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:05:05.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:05:05.707 [DEBUG] [Thread-117105] [transport.py] [_log()] userauth is OK
2025-11-03T14:05:05.707 [DEBUG] [Thread-117105] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:05:05.707 [DEBUG] [Thread-117105] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:05:05.707 [DEBUG] [Thread-117105] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:05:05.707 [DEBUG] [Thread-117105] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:05:05.724 [INFO] [Thread-117105] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:05:05.725 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:05:05.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:05:06.689 [DEBUG] [Thread-117105] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:05:06.689 [DEBUG] [Thread-117105] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:05:06.737 [DEBUG] [Thread-117105] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:05:06.737 [DEBUG] [Thread-117105] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:05:06.745 [DEBUG] [Thread-117105] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:05:06.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:05:06.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:05:06.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:05:06.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:05:06.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:05:06.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:05:06.777 [DEBUG] [Thread-117105] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:05:08.954 [DEBUG] [Thread-117107 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:05:12.724 [DEBUG] [Thread-117108 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:05:27.776 [DEBUG] [Thread-117109 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:05:36.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:05:36.800 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:05:36.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:05:37.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 5, 31), 45.48, 3.99, 0.0, 30.07, 25.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:05:37.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:05:31
2025-11-03T14:05:37.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:05:37.817 [DEBUG] [Thread-117110] [transport.py] [_log()] starting thread (client mode): 0x117836a0
2025-11-03T14:05:37.817 [DEBUG] [Thread-117110] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:05:37.837 [DEBUG] [Thread-117110] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:05:37.837 [INFO] [Thread-117110] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:05:37.840 [DEBUG] [Thread-117110] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:05:37.841 [DEBUG] [Thread-117110] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:05:37.841 [DEBUG] [Thread-117110] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:05:37.841 [DEBUG] [Thread-117110] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:05:37.841 [DEBUG] [Thread-117110] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:05:37.841 [DEBUG] [Thread-117110] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:05:37.841 [DEBUG] [Thread-117110] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:05:37.841 [DEBUG] [Thread-117110] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:05:37.841 [DEBUG] [Thread-117110] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:05:37.841 [DEBUG] [Thread-117110] [transport.py] [_log()] client lang: <none>
2025-11-03T14:05:37.841 [DEBUG] [Thread-117110] [transport.py] [_log()] server lang: <none>
2025-11-03T14:05:37.841 [DEBUG] [Thread-117110] [transport.py] [_log()] kex follows: False
2025-11-03T14:05:37.841 [DEBUG] [Thread-117110] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:05:37.841 [DEBUG] [Thread-117110] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:05:37.842 [DEBUG] [Thread-117110] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:05:37.842 [DEBUG] [Thread-117110] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:05:37.842 [DEBUG] [Thread-117110] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:05:37.842 [DEBUG] [Thread-117110] [transport.py] [_log()] Compression: none
2025-11-03T14:05:37.842 [DEBUG] [Thread-117110] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:05:37.861 [DEBUG] [Thread-117110] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:05:37.862 [DEBUG] [Thread-117110] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:05:37.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:05:37.863 [DEBUG] [Thread-117110] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:05:37.864 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:05:37.865 [DEBUG] [Thread-117110] [transport.py] [_log()] userauth is OK
2025-11-03T14:05:37.865 [DEBUG] [Thread-117110] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:05:37.865 [DEBUG] [Thread-117110] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:05:37.865 [DEBUG] [Thread-117110] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:05:37.865 [DEBUG] [Thread-117110] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:05:37.889 [INFO] [Thread-117110] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:05:37.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:05:38.536 [DEBUG] [Thread-117110] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:05:38.537 [DEBUG] [Thread-117110] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:05:38.537 [DEBUG] [Thread-117110] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:05:38.577 [DEBUG] [Thread-117110] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:05:38.577 [DEBUG] [Thread-117110] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:05:38.580 [DEBUG] [Thread-117110] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:05:38.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:05:38.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:05:38.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:05:38.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:05:38.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:05:38.599 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:05:38.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:05:38.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:05:38.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:05:38.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.503228 -999.00  +26.20  29.15      8  -10.10 1 1 1 1 1   888    0 37.39 20.38 ----- 23.4 29.1 22.7 38.3 31.4 -31.5 30.7 -30.7 31.3 -32.0 32.1 -30.5
2025-11-03T14:05:38.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:05:38.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:05:38.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.503228
2025-11-03T14:05:38.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:05:38.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:05:38.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:05:38.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:05:38.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:05:38.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:05:31', tmtdew=45.48, humidity=3.99, cloud=0.0, wind=30.07, temperature=25.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:04:38.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:05:38.600 [DEBUG] [Thread-117110] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:05:38.672 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:05:38.684 [DEBUG] [Thread-117113] [transport.py] [_log()] starting thread (client mode): 0xeda0430
2025-11-03T14:05:38.684 [DEBUG] [Thread-117113] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:05:38.699 [DEBUG] [Thread-117113] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:05:38.699 [INFO] [Thread-117113] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:05:38.707 [DEBUG] [Thread-117113] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:05:38.707 [DEBUG] [Thread-117113] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:05:38.707 [DEBUG] [Thread-117113] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:05:38.707 [DEBUG] [Thread-117113] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:05:38.707 [DEBUG] [Thread-117113] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:05:38.707 [DEBUG] [Thread-117113] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:05:38.707 [DEBUG] [Thread-117113] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:05:38.707 [DEBUG] [Thread-117113] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:05:38.707 [DEBUG] [Thread-117113] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:05:38.707 [DEBUG] [Thread-117113] [transport.py] [_log()] client lang: <none>
2025-11-03T14:05:38.707 [DEBUG] [Thread-117113] [transport.py] [_log()] server lang: <none>
2025-11-03T14:05:38.707 [DEBUG] [Thread-117113] [transport.py] [_log()] kex follows: False
2025-11-03T14:05:38.707 [DEBUG] [Thread-117113] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:05:38.707 [DEBUG] [Thread-117113] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:05:38.707 [DEBUG] [Thread-117113] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:05:38.707 [DEBUG] [Thread-117113] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:05:38.707 [DEBUG] [Thread-117113] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:05:38.707 [DEBUG] [Thread-117113] [transport.py] [_log()] Compression: none
2025-11-03T14:05:38.707 [DEBUG] [Thread-117113] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:05:38.764 [DEBUG] [Thread-117113] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:05:38.764 [DEBUG] [Thread-117113] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:05:38.773 [DEBUG] [Thread-117113] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:05:38.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:05:38.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:05:38.820 [DEBUG] [Thread-117113] [transport.py] [_log()] userauth is OK
2025-11-03T14:05:38.820 [DEBUG] [Thread-117113] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:05:38.820 [DEBUG] [Thread-117113] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:05:38.820 [DEBUG] [Thread-117113] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:05:38.821 [DEBUG] [Thread-117113] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:05:38.835 [INFO] [Thread-117113] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:05:38.835 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:05:38.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:05:39.691 [DEBUG] [Thread-117113] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:05:39.692 [DEBUG] [Thread-117113] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:05:39.740 [DEBUG] [Thread-117113] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:05:39.740 [DEBUG] [Thread-117113] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:05:39.749 [DEBUG] [Thread-117113] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:05:39.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:05:39.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:05:39.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:05:39.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:05:39.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:05:39.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:05:39.793 [DEBUG] [Thread-117113] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:05:42.806 [DEBUG] [Thread-117115 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:05:54.338 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:05:54.339 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:05:57.846 [DEBUG] [Thread-117116 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:06:09.017 [DEBUG] [Thread-117117 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:06:09.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:06:09.802 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:06:09.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:06:10.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 6, 3), 45.53, 3.99, 0.0, 27.37, 25.53, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:06:10.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:06:03
2025-11-03T14:06:10.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:06:10.788 [DEBUG] [Thread-117118] [transport.py] [_log()] starting thread (client mode): 0x11799c90
2025-11-03T14:06:10.788 [DEBUG] [Thread-117118] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:06:10.811 [DEBUG] [Thread-117118] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:06:10.811 [INFO] [Thread-117118] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:06:10.815 [DEBUG] [Thread-117118] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:06:10.815 [DEBUG] [Thread-117118] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:06:10.815 [DEBUG] [Thread-117118] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:06:10.815 [DEBUG] [Thread-117118] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:06:10.815 [DEBUG] [Thread-117118] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:06:10.815 [DEBUG] [Thread-117118] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:06:10.815 [DEBUG] [Thread-117118] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:06:10.816 [DEBUG] [Thread-117118] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:06:10.816 [DEBUG] [Thread-117118] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:06:10.816 [DEBUG] [Thread-117118] [transport.py] [_log()] client lang: <none>
2025-11-03T14:06:10.816 [DEBUG] [Thread-117118] [transport.py] [_log()] server lang: <none>
2025-11-03T14:06:10.816 [DEBUG] [Thread-117118] [transport.py] [_log()] kex follows: False
2025-11-03T14:06:10.816 [DEBUG] [Thread-117118] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:06:10.816 [DEBUG] [Thread-117118] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:06:10.816 [DEBUG] [Thread-117118] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:06:10.816 [DEBUG] [Thread-117118] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:06:10.816 [DEBUG] [Thread-117118] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:06:10.816 [DEBUG] [Thread-117118] [transport.py] [_log()] Compression: none
2025-11-03T14:06:10.817 [DEBUG] [Thread-117118] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:06:10.831 [DEBUG] [Thread-117118] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:06:10.831 [DEBUG] [Thread-117118] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:06:10.832 [DEBUG] [Thread-117118] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:06:10.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:06:10.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:06:10.834 [DEBUG] [Thread-117118] [transport.py] [_log()] userauth is OK
2025-11-03T14:06:10.834 [DEBUG] [Thread-117118] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:06:10.834 [DEBUG] [Thread-117118] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:06:10.834 [DEBUG] [Thread-117118] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:06:10.834 [DEBUG] [Thread-117118] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:06:10.858 [INFO] [Thread-117118] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:06:10.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:06:11.481 [DEBUG] [Thread-117118] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:06:11.481 [DEBUG] [Thread-117118] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:06:11.481 [DEBUG] [Thread-117118] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:06:11.522 [DEBUG] [Thread-117118] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:06:11.522 [DEBUG] [Thread-117118] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:06:11.524 [DEBUG] [Thread-117118] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:06:11.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:06:11.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:06:11.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:06:11.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:06:11.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:06:11.539 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:06:11.539 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:06:11.539 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:06:11.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:06:11.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.503923 -999.00  +25.60  23.17      8  -10.10 1 1 1 1 1   888    0 36.78 19.82 ----- 20.9 23.2 345.9 29.3 31.3 -31.6 30.5 -31.6 31.2 -31.5 32.0 -30.2
2025-11-03T14:06:11.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:06:11.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:06:11.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.503923
2025-11-03T14:06:11.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:06:11.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:06:11.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:06:11.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:06:11.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:06:11.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:06:03', tmtdew=45.53, humidity=3.99, cloud=0.0, wind=27.37, temperature=25.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:05:38.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:06:11.540 [DEBUG] [Thread-117118] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:06:11.613 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:06:11.628 [DEBUG] [Thread-117121] [transport.py] [_log()] starting thread (client mode): 0x1179b280
2025-11-03T14:06:11.628 [DEBUG] [Thread-117121] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:06:11.644 [DEBUG] [Thread-117121] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:06:11.644 [INFO] [Thread-117121] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:06:11.651 [DEBUG] [Thread-117121] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:06:11.651 [DEBUG] [Thread-117121] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:06:11.651 [DEBUG] [Thread-117121] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:06:11.651 [DEBUG] [Thread-117121] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:06:11.651 [DEBUG] [Thread-117121] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:06:11.651 [DEBUG] [Thread-117121] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:06:11.652 [DEBUG] [Thread-117121] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:06:11.652 [DEBUG] [Thread-117121] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:06:11.652 [DEBUG] [Thread-117121] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:06:11.652 [DEBUG] [Thread-117121] [transport.py] [_log()] client lang: <none>
2025-11-03T14:06:11.652 [DEBUG] [Thread-117121] [transport.py] [_log()] server lang: <none>
2025-11-03T14:06:11.652 [DEBUG] [Thread-117121] [transport.py] [_log()] kex follows: False
2025-11-03T14:06:11.652 [DEBUG] [Thread-117121] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:06:11.652 [DEBUG] [Thread-117121] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:06:11.652 [DEBUG] [Thread-117121] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:06:11.652 [DEBUG] [Thread-117121] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:06:11.652 [DEBUG] [Thread-117121] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:06:11.652 [DEBUG] [Thread-117121] [transport.py] [_log()] Compression: none
2025-11-03T14:06:11.652 [DEBUG] [Thread-117121] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:06:11.709 [DEBUG] [Thread-117121] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:06:11.709 [DEBUG] [Thread-117121] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:06:11.709 [DEBUG] [Thread-117121] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:06:11.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:06:11.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:06:11.767 [DEBUG] [Thread-117121] [transport.py] [_log()] userauth is OK
2025-11-03T14:06:11.767 [DEBUG] [Thread-117121] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:06:11.767 [DEBUG] [Thread-117121] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:06:11.767 [DEBUG] [Thread-117121] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:06:11.767 [DEBUG] [Thread-117121] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:06:11.786 [INFO] [Thread-117121] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:06:11.786 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:06:11.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:06:12.659 [DEBUG] [Thread-117121] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:06:12.660 [DEBUG] [Thread-117121] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:06:12.707 [DEBUG] [Thread-117121] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:06:12.707 [DEBUG] [Thread-117121] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:06:12.716 [DEBUG] [Thread-117121] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:06:12.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:06:12.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:06:12.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:06:12.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:06:12.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:06:12.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:06:12.753 [DEBUG] [Thread-117121] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:06:12.882 [DEBUG] [Thread-117123 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:06:27.944 [DEBUG] [Thread-117124 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:06:42.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:06:42.776 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:06:42.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:06:42.974 [DEBUG] [Thread-117125 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:06:43.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 6, 36), 45.58, 3.97, 0.0, 27.91, 25.83, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:06:43.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:06:36
2025-11-03T14:06:43.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:06:43.738 [DEBUG] [Thread-117126] [transport.py] [_log()] starting thread (client mode): 0x117980d0
2025-11-03T14:06:43.739 [DEBUG] [Thread-117126] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:06:43.760 [DEBUG] [Thread-117126] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:06:43.760 [INFO] [Thread-117126] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:06:43.763 [DEBUG] [Thread-117126] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:06:43.764 [DEBUG] [Thread-117126] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:06:43.764 [DEBUG] [Thread-117126] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:06:43.764 [DEBUG] [Thread-117126] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:06:43.764 [DEBUG] [Thread-117126] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:06:43.764 [DEBUG] [Thread-117126] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:06:43.764 [DEBUG] [Thread-117126] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:06:43.764 [DEBUG] [Thread-117126] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:06:43.764 [DEBUG] [Thread-117126] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:06:43.764 [DEBUG] [Thread-117126] [transport.py] [_log()] client lang: <none>
2025-11-03T14:06:43.764 [DEBUG] [Thread-117126] [transport.py] [_log()] server lang: <none>
2025-11-03T14:06:43.764 [DEBUG] [Thread-117126] [transport.py] [_log()] kex follows: False
2025-11-03T14:06:43.765 [DEBUG] [Thread-117126] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:06:43.765 [DEBUG] [Thread-117126] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:06:43.765 [DEBUG] [Thread-117126] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:06:43.765 [DEBUG] [Thread-117126] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:06:43.765 [DEBUG] [Thread-117126] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:06:43.765 [DEBUG] [Thread-117126] [transport.py] [_log()] Compression: none
2025-11-03T14:06:43.765 [DEBUG] [Thread-117126] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:06:43.783 [DEBUG] [Thread-117126] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:06:43.793 [DEBUG] [Thread-117126] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:06:43.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:06:43.794 [DEBUG] [Thread-117126] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:06:43.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:06:43.797 [DEBUG] [Thread-117126] [transport.py] [_log()] userauth is OK
2025-11-03T14:06:43.797 [DEBUG] [Thread-117126] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:06:43.797 [DEBUG] [Thread-117126] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:06:43.797 [DEBUG] [Thread-117126] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:06:43.797 [DEBUG] [Thread-117126] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:06:43.833 [INFO] [Thread-117126] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:06:43.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:06:44.467 [DEBUG] [Thread-117126] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:06:44.467 [DEBUG] [Thread-117126] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:06:44.468 [DEBUG] [Thread-117126] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:06:44.508 [DEBUG] [Thread-117126] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:06:44.508 [DEBUG] [Thread-117126] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:06:44.512 [DEBUG] [Thread-117126] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:06:44.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:06:44.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:06:44.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:06:44.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:06:44.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:06:44.536 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:06:44.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:06:44.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:06:44.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:06:44.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.504270 -999.00  +25.30  24.60      8  -10.20 1 1 1 1 1   888    0 36.17 16.56 ----- 16.6 24.6 339.2 32.8 31.1 -32.4 30.4 -30.9 31.2 -29.4 31.8 -30.1
2025-11-03T14:06:44.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:06:44.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:06:44.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.504270
2025-11-03T14:06:44.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:06:44.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:06:44.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:06:44.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:06:44.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:06:44.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:06:36', tmtdew=45.58, humidity=3.97, cloud=0.0, wind=27.91, temperature=25.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:06:08.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:06:44.540 [DEBUG] [Thread-117126] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:06:44.623 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:06:44.635 [DEBUG] [Thread-117129] [transport.py] [_log()] starting thread (client mode): 0x1179b460
2025-11-03T14:06:44.635 [DEBUG] [Thread-117129] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:06:44.650 [DEBUG] [Thread-117129] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:06:44.650 [INFO] [Thread-117129] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:06:44.657 [DEBUG] [Thread-117129] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:06:44.658 [DEBUG] [Thread-117129] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:06:44.658 [DEBUG] [Thread-117129] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:06:44.658 [DEBUG] [Thread-117129] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:06:44.658 [DEBUG] [Thread-117129] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:06:44.658 [DEBUG] [Thread-117129] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:06:44.658 [DEBUG] [Thread-117129] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:06:44.658 [DEBUG] [Thread-117129] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:06:44.658 [DEBUG] [Thread-117129] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:06:44.658 [DEBUG] [Thread-117129] [transport.py] [_log()] client lang: <none>
2025-11-03T14:06:44.658 [DEBUG] [Thread-117129] [transport.py] [_log()] server lang: <none>
2025-11-03T14:06:44.658 [DEBUG] [Thread-117129] [transport.py] [_log()] kex follows: False
2025-11-03T14:06:44.658 [DEBUG] [Thread-117129] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:06:44.658 [DEBUG] [Thread-117129] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:06:44.658 [DEBUG] [Thread-117129] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:06:44.658 [DEBUG] [Thread-117129] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:06:44.658 [DEBUG] [Thread-117129] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:06:44.658 [DEBUG] [Thread-117129] [transport.py] [_log()] Compression: none
2025-11-03T14:06:44.658 [DEBUG] [Thread-117129] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:06:44.714 [DEBUG] [Thread-117129] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:06:44.714 [DEBUG] [Thread-117129] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:06:44.714 [DEBUG] [Thread-117129] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:06:44.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:06:44.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:06:44.771 [DEBUG] [Thread-117129] [transport.py] [_log()] userauth is OK
2025-11-03T14:06:44.771 [DEBUG] [Thread-117129] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:06:44.771 [DEBUG] [Thread-117129] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:06:44.771 [DEBUG] [Thread-117129] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:06:44.771 [DEBUG] [Thread-117129] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:06:44.785 [INFO] [Thread-117129] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:06:44.785 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:06:44.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:06:45.662 [DEBUG] [Thread-117129] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:06:45.662 [DEBUG] [Thread-117129] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:06:45.711 [DEBUG] [Thread-117129] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:06:45.711 [DEBUG] [Thread-117129] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:06:45.720 [DEBUG] [Thread-117129] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:06:45.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:06:45.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:06:45.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:06:45.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:06:45.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:06:45.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:06:45.752 [DEBUG] [Thread-117129] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:06:54.480 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:06:54.481 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:06:58.009 [DEBUG] [Thread-117131 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:07:09.049 [DEBUG] [Thread-117132 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:07:13.069 [DEBUG] [Thread-117133 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:07:15.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:07:15.775 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:07:15.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:07:16.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 7, 8), 45.58, 3.97, 0.0, 33.06, 25.85, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:07:16.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:07:08
2025-11-03T14:07:16.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:07:16.721 [DEBUG] [Thread-117134] [transport.py] [_log()] starting thread (client mode): 0x1179a500
2025-11-03T14:07:16.721 [DEBUG] [Thread-117134] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:07:16.740 [DEBUG] [Thread-117134] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:07:16.741 [INFO] [Thread-117134] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:07:16.744 [DEBUG] [Thread-117134] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:07:16.744 [DEBUG] [Thread-117134] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:07:16.744 [DEBUG] [Thread-117134] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:07:16.744 [DEBUG] [Thread-117134] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:07:16.744 [DEBUG] [Thread-117134] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:07:16.744 [DEBUG] [Thread-117134] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:07:16.744 [DEBUG] [Thread-117134] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:07:16.744 [DEBUG] [Thread-117134] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:07:16.744 [DEBUG] [Thread-117134] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:07:16.744 [DEBUG] [Thread-117134] [transport.py] [_log()] client lang: <none>
2025-11-03T14:07:16.744 [DEBUG] [Thread-117134] [transport.py] [_log()] server lang: <none>
2025-11-03T14:07:16.744 [DEBUG] [Thread-117134] [transport.py] [_log()] kex follows: False
2025-11-03T14:07:16.745 [DEBUG] [Thread-117134] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:07:16.745 [DEBUG] [Thread-117134] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:07:16.745 [DEBUG] [Thread-117134] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:07:16.745 [DEBUG] [Thread-117134] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:07:16.745 [DEBUG] [Thread-117134] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:07:16.745 [DEBUG] [Thread-117134] [transport.py] [_log()] Compression: none
2025-11-03T14:07:16.745 [DEBUG] [Thread-117134] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:07:16.763 [DEBUG] [Thread-117134] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:07:16.763 [DEBUG] [Thread-117134] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:07:16.764 [DEBUG] [Thread-117134] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:07:16.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:07:16.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:07:16.766 [DEBUG] [Thread-117134] [transport.py] [_log()] userauth is OK
2025-11-03T14:07:16.766 [DEBUG] [Thread-117134] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:07:16.766 [DEBUG] [Thread-117134] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:07:16.766 [DEBUG] [Thread-117134] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:07:16.766 [DEBUG] [Thread-117134] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:07:16.791 [INFO] [Thread-117134] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:07:16.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:07:17.430 [DEBUG] [Thread-117134] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:07:17.431 [DEBUG] [Thread-117134] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:07:17.431 [DEBUG] [Thread-117134] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:07:17.472 [DEBUG] [Thread-117134] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:07:17.472 [DEBUG] [Thread-117134] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:07:17.475 [DEBUG] [Thread-117134] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:07:17.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:07:17.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:07:17.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:07:17.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:07:17.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:07:17.498 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:07:17.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:07:17.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:07:17.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:07:17.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.504617 -999.00  +25.40  23.77      8   -9.90 1 1 1 1 1   888    0 36.48 13.46 ----- 21.5 23.8 324.4 30.8 31.2 -31.7 30.4 -30.2 31.1 -31.2 31.9 -30.3
2025-11-03T14:07:17.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:07:17.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:07:17.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.504617
2025-11-03T14:07:17.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:07:17.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:07:17.501 [DEBUG] [Thread-117134] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:07:17.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:07:17.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:07:17.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:07:17.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:07:08', tmtdew=45.58, humidity=3.97, cloud=0.0, wind=33.06, temperature=25.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:06:38.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:07:17.584 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:07:17.597 [DEBUG] [Thread-117137] [transport.py] [_log()] starting thread (client mode): 0x1179b520
2025-11-03T14:07:17.597 [DEBUG] [Thread-117137] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:07:17.611 [DEBUG] [Thread-117137] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:07:17.611 [INFO] [Thread-117137] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:07:17.619 [DEBUG] [Thread-117137] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:07:17.619 [DEBUG] [Thread-117137] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:07:17.619 [DEBUG] [Thread-117137] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:07:17.619 [DEBUG] [Thread-117137] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:07:17.619 [DEBUG] [Thread-117137] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:07:17.619 [DEBUG] [Thread-117137] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:07:17.619 [DEBUG] [Thread-117137] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:07:17.619 [DEBUG] [Thread-117137] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:07:17.619 [DEBUG] [Thread-117137] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:07:17.619 [DEBUG] [Thread-117137] [transport.py] [_log()] client lang: <none>
2025-11-03T14:07:17.619 [DEBUG] [Thread-117137] [transport.py] [_log()] server lang: <none>
2025-11-03T14:07:17.619 [DEBUG] [Thread-117137] [transport.py] [_log()] kex follows: False
2025-11-03T14:07:17.619 [DEBUG] [Thread-117137] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:07:17.619 [DEBUG] [Thread-117137] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:07:17.619 [DEBUG] [Thread-117137] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:07:17.619 [DEBUG] [Thread-117137] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:07:17.619 [DEBUG] [Thread-117137] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:07:17.619 [DEBUG] [Thread-117137] [transport.py] [_log()] Compression: none
2025-11-03T14:07:17.619 [DEBUG] [Thread-117137] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:07:17.680 [DEBUG] [Thread-117137] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:07:17.681 [DEBUG] [Thread-117137] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:07:17.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:07:17.682 [DEBUG] [Thread-117137] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:07:17.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:07:17.740 [DEBUG] [Thread-117137] [transport.py] [_log()] userauth is OK
2025-11-03T14:07:17.740 [DEBUG] [Thread-117137] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:07:17.740 [DEBUG] [Thread-117137] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:07:17.740 [DEBUG] [Thread-117137] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:07:17.740 [DEBUG] [Thread-117137] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:07:17.760 [INFO] [Thread-117137] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:07:17.760 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:07:17.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:07:18.620 [DEBUG] [Thread-117137] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:07:18.620 [DEBUG] [Thread-117137] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:07:18.668 [DEBUG] [Thread-117137] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:07:18.668 [DEBUG] [Thread-117137] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:07:18.676 [DEBUG] [Thread-117137] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:07:18.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:07:18.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:07:18.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:07:18.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:07:18.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:07:18.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:07:18.708 [DEBUG] [Thread-117137] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:07:28.108 [DEBUG] [Thread-117139 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:07:43.157 [DEBUG] [Thread-117140 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:07:48.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:07:48.718 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:07:48.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:07:49.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 7, 40), 45.61, 3.97, 0.0, 35.64, 25.81, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:07:49.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:07:40
2025-11-03T14:07:49.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:07:49.681 [DEBUG] [Thread-117141] [transport.py] [_log()] starting thread (client mode): 0x117987f0
2025-11-03T14:07:49.681 [DEBUG] [Thread-117141] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:07:49.694 [DEBUG] [Thread-117141] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:07:49.694 [INFO] [Thread-117141] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:07:49.697 [DEBUG] [Thread-117141] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:07:49.697 [DEBUG] [Thread-117141] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:07:49.697 [DEBUG] [Thread-117141] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:07:49.697 [DEBUG] [Thread-117141] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:07:49.697 [DEBUG] [Thread-117141] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:07:49.697 [DEBUG] [Thread-117141] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:07:49.697 [DEBUG] [Thread-117141] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:07:49.697 [DEBUG] [Thread-117141] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:07:49.697 [DEBUG] [Thread-117141] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:07:49.697 [DEBUG] [Thread-117141] [transport.py] [_log()] client lang: <none>
2025-11-03T14:07:49.697 [DEBUG] [Thread-117141] [transport.py] [_log()] server lang: <none>
2025-11-03T14:07:49.697 [DEBUG] [Thread-117141] [transport.py] [_log()] kex follows: False
2025-11-03T14:07:49.697 [DEBUG] [Thread-117141] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:07:49.698 [DEBUG] [Thread-117141] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:07:49.698 [DEBUG] [Thread-117141] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:07:49.698 [DEBUG] [Thread-117141] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:07:49.698 [DEBUG] [Thread-117141] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:07:49.698 [DEBUG] [Thread-117141] [transport.py] [_log()] Compression: none
2025-11-03T14:07:49.698 [DEBUG] [Thread-117141] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:07:49.715 [DEBUG] [Thread-117141] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:07:49.715 [DEBUG] [Thread-117141] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:07:49.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:07:49.718 [DEBUG] [Thread-117141] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:07:49.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:07:49.720 [DEBUG] [Thread-117141] [transport.py] [_log()] userauth is OK
2025-11-03T14:07:49.720 [DEBUG] [Thread-117141] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:07:49.720 [DEBUG] [Thread-117141] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:07:49.720 [DEBUG] [Thread-117141] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:07:49.720 [DEBUG] [Thread-117141] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:07:49.745 [INFO] [Thread-117141] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:07:49.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:07:50.377 [DEBUG] [Thread-117141] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:07:50.377 [DEBUG] [Thread-117141] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:07:50.377 [DEBUG] [Thread-117141] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:07:50.418 [DEBUG] [Thread-117141] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:07:50.418 [DEBUG] [Thread-117141] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:07:50.422 [DEBUG] [Thread-117141] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:07:50.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:07:50.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:07:50.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:07:50.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:07:50.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:07:50.446 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:07:50.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:07:50.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:07:50.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:07:50.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.504964 -999.00  +25.90  44.30      8  -10.00 1 1 2 1 1   888    0 36.35 12.51 ----- 41.9 44.3 319.8 63.2 31.1 -31.1 30.5 -30.9 31.2 -30.7 31.9 -29.3
2025-11-03T14:07:50.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:07:50.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:07:50.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.504964
2025-11-03T14:07:50.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:07:50.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:07:50.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:07:50.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:07:50.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:07:50.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:07:40', tmtdew=45.61, humidity=3.97, cloud=0.0, wind=35.64, temperature=25.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:07:08.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:07:50.450 [DEBUG] [Thread-117141] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:07:50.534 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:07:50.547 [DEBUG] [Thread-117144] [transport.py] [_log()] starting thread (client mode): 0x1179a560
2025-11-03T14:07:50.548 [DEBUG] [Thread-117144] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:07:50.564 [DEBUG] [Thread-117144] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:07:50.564 [INFO] [Thread-117144] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:07:50.574 [DEBUG] [Thread-117144] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:07:50.575 [DEBUG] [Thread-117144] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:07:50.575 [DEBUG] [Thread-117144] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:07:50.575 [DEBUG] [Thread-117144] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:07:50.575 [DEBUG] [Thread-117144] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:07:50.575 [DEBUG] [Thread-117144] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:07:50.576 [DEBUG] [Thread-117144] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:07:50.576 [DEBUG] [Thread-117144] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:07:50.576 [DEBUG] [Thread-117144] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:07:50.576 [DEBUG] [Thread-117144] [transport.py] [_log()] client lang: <none>
2025-11-03T14:07:50.576 [DEBUG] [Thread-117144] [transport.py] [_log()] server lang: <none>
2025-11-03T14:07:50.576 [DEBUG] [Thread-117144] [transport.py] [_log()] kex follows: False
2025-11-03T14:07:50.576 [DEBUG] [Thread-117144] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:07:50.576 [DEBUG] [Thread-117144] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:07:50.577 [DEBUG] [Thread-117144] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:07:50.577 [DEBUG] [Thread-117144] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:07:50.577 [DEBUG] [Thread-117144] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:07:50.577 [DEBUG] [Thread-117144] [transport.py] [_log()] Compression: none
2025-11-03T14:07:50.577 [DEBUG] [Thread-117144] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:07:50.642 [DEBUG] [Thread-117144] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:07:50.642 [DEBUG] [Thread-117144] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:07:50.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:07:50.643 [DEBUG] [Thread-117144] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:07:50.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:07:50.702 [DEBUG] [Thread-117144] [transport.py] [_log()] userauth is OK
2025-11-03T14:07:50.702 [DEBUG] [Thread-117144] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:07:50.702 [DEBUG] [Thread-117144] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:07:50.702 [DEBUG] [Thread-117144] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:07:50.702 [DEBUG] [Thread-117144] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:07:50.721 [INFO] [Thread-117144] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:07:50.722 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:07:50.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:07:51.575 [DEBUG] [Thread-117144] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:07:51.575 [DEBUG] [Thread-117144] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:07:51.623 [DEBUG] [Thread-117144] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:07:51.623 [DEBUG] [Thread-117144] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:07:51.633 [DEBUG] [Thread-117144] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:07:51.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:07:51.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:07:51.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:07:51.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:07:51.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:07:51.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:07:51.672 [DEBUG] [Thread-117144] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:07:54.620 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:07:54.621 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:07:58.194 [DEBUG] [Thread-117146 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:08:09.100 [DEBUG] [Thread-117147 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:08:13.245 [DEBUG] [Thread-117148 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:08:21.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:08:21.702 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:08:21.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:08:22.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 8, 13), 45.84, 3.95, 0.0, 39.72, 26.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:08:22.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:08:13
2025-11-03T14:08:22.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:08:22.654 [DEBUG] [Thread-117149] [transport.py] [_log()] starting thread (client mode): 0x11799ae0
2025-11-03T14:08:22.654 [DEBUG] [Thread-117149] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:08:22.676 [DEBUG] [Thread-117149] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:08:22.676 [INFO] [Thread-117149] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:08:22.679 [DEBUG] [Thread-117149] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:08:22.679 [DEBUG] [Thread-117149] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:08:22.679 [DEBUG] [Thread-117149] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:08:22.679 [DEBUG] [Thread-117149] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:08:22.679 [DEBUG] [Thread-117149] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:08:22.679 [DEBUG] [Thread-117149] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:08:22.679 [DEBUG] [Thread-117149] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:08:22.679 [DEBUG] [Thread-117149] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:08:22.679 [DEBUG] [Thread-117149] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:08:22.679 [DEBUG] [Thread-117149] [transport.py] [_log()] client lang: <none>
2025-11-03T14:08:22.679 [DEBUG] [Thread-117149] [transport.py] [_log()] server lang: <none>
2025-11-03T14:08:22.679 [DEBUG] [Thread-117149] [transport.py] [_log()] kex follows: False
2025-11-03T14:08:22.679 [DEBUG] [Thread-117149] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:08:22.679 [DEBUG] [Thread-117149] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:08:22.679 [DEBUG] [Thread-117149] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:08:22.679 [DEBUG] [Thread-117149] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:08:22.679 [DEBUG] [Thread-117149] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:08:22.679 [DEBUG] [Thread-117149] [transport.py] [_log()] Compression: none
2025-11-03T14:08:22.679 [DEBUG] [Thread-117149] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:08:22.695 [DEBUG] [Thread-117149] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:08:22.695 [DEBUG] [Thread-117149] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:08:22.695 [DEBUG] [Thread-117149] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:08:22.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:08:22.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:08:22.696 [DEBUG] [Thread-117149] [transport.py] [_log()] userauth is OK
2025-11-03T14:08:22.696 [DEBUG] [Thread-117149] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:08:22.696 [DEBUG] [Thread-117149] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:08:22.696 [DEBUG] [Thread-117149] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:08:22.696 [DEBUG] [Thread-117149] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:08:22.712 [INFO] [Thread-117149] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:08:22.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:08:23.395 [DEBUG] [Thread-117149] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:08:23.395 [DEBUG] [Thread-117149] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:08:23.395 [DEBUG] [Thread-117149] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:08:23.437 [DEBUG] [Thread-117149] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:08:23.437 [DEBUG] [Thread-117149] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:08:23.439 [DEBUG] [Thread-117149] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:08:23.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:08:23.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:08:23.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:08:23.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:08:23.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:08:23.457 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:08:23.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:08:23.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:08:23.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:08:23.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.505312 -999.00  +25.40  36.58      8  -10.10 1 1 2 1 1   888    0 36.96 10.96 ----- 35.2 36.6 312.4 52.7 31.1 -31.2 30.4 -31.9 31.0 -29.9 31.8 -30.6
2025-11-03T14:08:23.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:08:23.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:08:23.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.505312
2025-11-03T14:08:23.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:08:23.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:08:23.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:08:23.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:08:23.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:08:23.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:08:13', tmtdew=45.84, humidity=3.95, cloud=0.0, wind=39.72, temperature=26.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:07:38.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:08:23.458 [DEBUG] [Thread-117149] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:08:23.531 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:08:23.545 [DEBUG] [Thread-117152] [transport.py] [_log()] starting thread (client mode): 0x11799c00
2025-11-03T14:08:23.545 [DEBUG] [Thread-117152] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:08:23.559 [DEBUG] [Thread-117152] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:08:23.559 [INFO] [Thread-117152] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:08:23.567 [DEBUG] [Thread-117152] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:08:23.567 [DEBUG] [Thread-117152] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:08:23.567 [DEBUG] [Thread-117152] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:08:23.567 [DEBUG] [Thread-117152] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:08:23.567 [DEBUG] [Thread-117152] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:08:23.567 [DEBUG] [Thread-117152] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:08:23.567 [DEBUG] [Thread-117152] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:08:23.567 [DEBUG] [Thread-117152] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:08:23.567 [DEBUG] [Thread-117152] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:08:23.567 [DEBUG] [Thread-117152] [transport.py] [_log()] client lang: <none>
2025-11-03T14:08:23.567 [DEBUG] [Thread-117152] [transport.py] [_log()] server lang: <none>
2025-11-03T14:08:23.567 [DEBUG] [Thread-117152] [transport.py] [_log()] kex follows: False
2025-11-03T14:08:23.567 [DEBUG] [Thread-117152] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:08:23.567 [DEBUG] [Thread-117152] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:08:23.567 [DEBUG] [Thread-117152] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:08:23.568 [DEBUG] [Thread-117152] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:08:23.568 [DEBUG] [Thread-117152] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:08:23.568 [DEBUG] [Thread-117152] [transport.py] [_log()] Compression: none
2025-11-03T14:08:23.568 [DEBUG] [Thread-117152] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:08:23.626 [DEBUG] [Thread-117152] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:08:23.627 [DEBUG] [Thread-117152] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:08:23.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:08:23.628 [DEBUG] [Thread-117152] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:08:23.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:08:23.681 [DEBUG] [Thread-117152] [transport.py] [_log()] userauth is OK
2025-11-03T14:08:23.682 [DEBUG] [Thread-117152] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:08:23.682 [DEBUG] [Thread-117152] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:08:23.682 [DEBUG] [Thread-117152] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:08:23.682 [DEBUG] [Thread-117152] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:08:23.705 [INFO] [Thread-117152] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:08:23.706 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:08:23.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:08:24.554 [DEBUG] [Thread-117152] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:08:24.554 [DEBUG] [Thread-117152] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:08:24.601 [DEBUG] [Thread-117152] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:08:24.601 [DEBUG] [Thread-117152] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:08:24.610 [DEBUG] [Thread-117152] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:08:24.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:08:24.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:08:24.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:08:24.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:08:24.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:08:24.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:08:24.651 [DEBUG] [Thread-117152] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:08:28.278 [DEBUG] [Thread-117154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:08:43.332 [DEBUG] [Thread-117155 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:08:54.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:08:54.660 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:08:54.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:08:54.772 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:08:54.772 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:08:55.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 8, 45), 46.06, 3.87, 0.0, 39.56, 26.72, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:08:55.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:08:45
2025-11-03T14:08:55.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:08:55.745 [DEBUG] [Thread-117156] [transport.py] [_log()] starting thread (client mode): 0x11783580
2025-11-03T14:08:55.745 [DEBUG] [Thread-117156] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:08:55.765 [DEBUG] [Thread-117156] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:08:55.765 [INFO] [Thread-117156] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:08:55.768 [DEBUG] [Thread-117156] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:08:55.768 [DEBUG] [Thread-117156] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:08:55.768 [DEBUG] [Thread-117156] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:08:55.768 [DEBUG] [Thread-117156] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:08:55.769 [DEBUG] [Thread-117156] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:08:55.769 [DEBUG] [Thread-117156] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:08:55.769 [DEBUG] [Thread-117156] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:08:55.769 [DEBUG] [Thread-117156] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:08:55.769 [DEBUG] [Thread-117156] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:08:55.769 [DEBUG] [Thread-117156] [transport.py] [_log()] client lang: <none>
2025-11-03T14:08:55.769 [DEBUG] [Thread-117156] [transport.py] [_log()] server lang: <none>
2025-11-03T14:08:55.769 [DEBUG] [Thread-117156] [transport.py] [_log()] kex follows: False
2025-11-03T14:08:55.769 [DEBUG] [Thread-117156] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:08:55.769 [DEBUG] [Thread-117156] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:08:55.769 [DEBUG] [Thread-117156] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:08:55.769 [DEBUG] [Thread-117156] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:08:55.769 [DEBUG] [Thread-117156] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:08:55.770 [DEBUG] [Thread-117156] [transport.py] [_log()] Compression: none
2025-11-03T14:08:55.770 [DEBUG] [Thread-117156] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:08:55.788 [DEBUG] [Thread-117156] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:08:55.789 [DEBUG] [Thread-117156] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:08:55.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:08:55.790 [DEBUG] [Thread-117156] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:08:55.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:08:55.793 [DEBUG] [Thread-117156] [transport.py] [_log()] userauth is OK
2025-11-03T14:08:55.793 [DEBUG] [Thread-117156] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:08:55.794 [DEBUG] [Thread-117156] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:08:55.794 [DEBUG] [Thread-117156] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:08:55.794 [DEBUG] [Thread-117156] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:08:55.818 [INFO] [Thread-117156] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:08:55.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:08:56.451 [DEBUG] [Thread-117156] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:08:56.451 [DEBUG] [Thread-117156] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:08:56.451 [DEBUG] [Thread-117156] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:08:56.491 [DEBUG] [Thread-117156] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:08:56.491 [DEBUG] [Thread-117156] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:08:56.494 [DEBUG] [Thread-117156] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:08:56.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:08:56.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:08:56.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:08:56.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:08:56.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:08:56.520 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:08:56.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:08:56.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:08:56.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:08:56.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.505659 -999.00  +25.90  35.47      8   -9.70 1 1 2 1 1   888    0 36.71 11.61 ----- 34.8 35.5 311.8 42.5 31.1 -30.6 30.4 -31.0 30.9 -31.5 31.8 -30.0
2025-11-03T14:08:56.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:08:56.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:08:56.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.505659
2025-11-03T14:08:56.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:08:56.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:08:56.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:08:56.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:08:56.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:08:56.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:08:45', tmtdew=46.06, humidity=3.87, cloud=0.0, wind=39.56, temperature=26.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:08:08.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:08:56.521 [DEBUG] [Thread-117156] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:08:56.595 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:08:56.606 [DEBUG] [Thread-117159] [transport.py] [_log()] starting thread (client mode): 0xeda2260
2025-11-03T14:08:56.606 [DEBUG] [Thread-117159] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:08:56.621 [DEBUG] [Thread-117159] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:08:56.621 [INFO] [Thread-117159] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:08:56.629 [DEBUG] [Thread-117159] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:08:56.629 [DEBUG] [Thread-117159] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:08:56.629 [DEBUG] [Thread-117159] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:08:56.629 [DEBUG] [Thread-117159] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:08:56.629 [DEBUG] [Thread-117159] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:08:56.629 [DEBUG] [Thread-117159] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:08:56.629 [DEBUG] [Thread-117159] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:08:56.629 [DEBUG] [Thread-117159] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:08:56.629 [DEBUG] [Thread-117159] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:08:56.629 [DEBUG] [Thread-117159] [transport.py] [_log()] client lang: <none>
2025-11-03T14:08:56.629 [DEBUG] [Thread-117159] [transport.py] [_log()] server lang: <none>
2025-11-03T14:08:56.629 [DEBUG] [Thread-117159] [transport.py] [_log()] kex follows: False
2025-11-03T14:08:56.629 [DEBUG] [Thread-117159] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:08:56.629 [DEBUG] [Thread-117159] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:08:56.629 [DEBUG] [Thread-117159] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:08:56.629 [DEBUG] [Thread-117159] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:08:56.629 [DEBUG] [Thread-117159] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:08:56.629 [DEBUG] [Thread-117159] [transport.py] [_log()] Compression: none
2025-11-03T14:08:56.629 [DEBUG] [Thread-117159] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:08:56.686 [DEBUG] [Thread-117159] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:08:56.686 [DEBUG] [Thread-117159] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:08:56.686 [DEBUG] [Thread-117159] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:08:56.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:08:56.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:08:56.742 [DEBUG] [Thread-117159] [transport.py] [_log()] userauth is OK
2025-11-03T14:08:56.742 [DEBUG] [Thread-117159] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:08:56.742 [DEBUG] [Thread-117159] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:08:56.742 [DEBUG] [Thread-117159] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:08:56.742 [DEBUG] [Thread-117159] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:08:56.756 [INFO] [Thread-117159] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:08:56.756 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:08:56.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:08:57.578 [DEBUG] [Thread-117159] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:08:57.578 [DEBUG] [Thread-117159] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:08:57.625 [DEBUG] [Thread-117159] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:08:57.625 [DEBUG] [Thread-117159] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:08:57.633 [DEBUG] [Thread-117159] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:08:57.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:08:57.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:08:57.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:08:57.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:08:57.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:08:57.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:08:57.665 [DEBUG] [Thread-117159] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:08:58.366 [DEBUG] [Thread-117161 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:09:09.324 [DEBUG] [Thread-117162 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:09:13.404 [DEBUG] [Thread-117163 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:09:27.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:09:27.688 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:09:27.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:09:28.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 9, 17), 46.06, 3.87, 0.0, 40.39, 26.71, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:09:28.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:09:17
2025-11-03T14:09:28.436 [DEBUG] [Thread-117164 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:09:28.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:09:28.664 [DEBUG] [Thread-117165] [transport.py] [_log()] starting thread (client mode): 0xeda3e80
2025-11-03T14:09:28.665 [DEBUG] [Thread-117165] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:09:28.684 [DEBUG] [Thread-117165] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:09:28.684 [INFO] [Thread-117165] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:09:28.694 [DEBUG] [Thread-117165] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:09:28.695 [DEBUG] [Thread-117165] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:09:28.695 [DEBUG] [Thread-117165] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:09:28.695 [DEBUG] [Thread-117165] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:09:28.695 [DEBUG] [Thread-117165] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:09:28.695 [DEBUG] [Thread-117165] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:09:28.695 [DEBUG] [Thread-117165] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:09:28.696 [DEBUG] [Thread-117165] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:09:28.696 [DEBUG] [Thread-117165] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:09:28.696 [DEBUG] [Thread-117165] [transport.py] [_log()] client lang: <none>
2025-11-03T14:09:28.696 [DEBUG] [Thread-117165] [transport.py] [_log()] server lang: <none>
2025-11-03T14:09:28.696 [DEBUG] [Thread-117165] [transport.py] [_log()] kex follows: False
2025-11-03T14:09:28.696 [DEBUG] [Thread-117165] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:09:28.696 [DEBUG] [Thread-117165] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:09:28.696 [DEBUG] [Thread-117165] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:09:28.697 [DEBUG] [Thread-117165] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:09:28.697 [DEBUG] [Thread-117165] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:09:28.697 [DEBUG] [Thread-117165] [transport.py] [_log()] Compression: none
2025-11-03T14:09:28.697 [DEBUG] [Thread-117165] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:09:28.709 [DEBUG] [Thread-117165] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:09:28.710 [DEBUG] [Thread-117165] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:09:28.710 [DEBUG] [Thread-117165] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:09:28.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:09:28.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:09:28.712 [DEBUG] [Thread-117165] [transport.py] [_log()] userauth is OK
2025-11-03T14:09:28.712 [DEBUG] [Thread-117165] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:09:28.712 [DEBUG] [Thread-117165] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:09:28.712 [DEBUG] [Thread-117165] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:09:28.712 [DEBUG] [Thread-117165] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:09:28.733 [INFO] [Thread-117165] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:09:28.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:09:29.382 [DEBUG] [Thread-117165] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:09:29.382 [DEBUG] [Thread-117165] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:09:29.383 [DEBUG] [Thread-117165] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:09:29.423 [DEBUG] [Thread-117165] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:09:29.423 [DEBUG] [Thread-117165] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:09:29.427 [DEBUG] [Thread-117165] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:09:29.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:09:29.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:09:29.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:09:29.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:09:29.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:09:29.453 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:09:29.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:09:29.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:09:29.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:09:29.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.506006 -999.00  +26.30  26.78      8   -9.50 1 1 1 1 1   888    0 36.42 11.46 ----- 31.4 26.8 310.8 41.4 31.1 -31.7 30.4 -30.3 31.0 -33.7 31.8 -29.8
2025-11-03T14:09:29.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:09:29.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:09:29.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.506006
2025-11-03T14:09:29.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:09:29.455 [DEBUG] [Thread-117165] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:09:29.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:09:29.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:09:29.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:09:29.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:09:29.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:09:17', tmtdew=46.06, humidity=3.87, cloud=0.0, wind=40.39, temperature=26.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:08:38.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:09:29.550 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:09:29.563 [DEBUG] [Thread-117168] [transport.py] [_log()] starting thread (client mode): 0xeda1c30
2025-11-03T14:09:29.563 [DEBUG] [Thread-117168] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:09:29.577 [DEBUG] [Thread-117168] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:09:29.578 [INFO] [Thread-117168] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:09:29.586 [DEBUG] [Thread-117168] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:09:29.586 [DEBUG] [Thread-117168] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:09:29.586 [DEBUG] [Thread-117168] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:09:29.586 [DEBUG] [Thread-117168] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:09:29.586 [DEBUG] [Thread-117168] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:09:29.586 [DEBUG] [Thread-117168] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:09:29.586 [DEBUG] [Thread-117168] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:09:29.586 [DEBUG] [Thread-117168] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:09:29.586 [DEBUG] [Thread-117168] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:09:29.586 [DEBUG] [Thread-117168] [transport.py] [_log()] client lang: <none>
2025-11-03T14:09:29.586 [DEBUG] [Thread-117168] [transport.py] [_log()] server lang: <none>
2025-11-03T14:09:29.586 [DEBUG] [Thread-117168] [transport.py] [_log()] kex follows: False
2025-11-03T14:09:29.586 [DEBUG] [Thread-117168] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:09:29.586 [DEBUG] [Thread-117168] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:09:29.587 [DEBUG] [Thread-117168] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:09:29.587 [DEBUG] [Thread-117168] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:09:29.587 [DEBUG] [Thread-117168] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:09:29.587 [DEBUG] [Thread-117168] [transport.py] [_log()] Compression: none
2025-11-03T14:09:29.587 [DEBUG] [Thread-117168] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:09:29.642 [DEBUG] [Thread-117168] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:09:29.642 [DEBUG] [Thread-117168] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:09:29.642 [DEBUG] [Thread-117168] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:09:29.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:09:29.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:09:29.699 [DEBUG] [Thread-117168] [transport.py] [_log()] userauth is OK
2025-11-03T14:09:29.699 [DEBUG] [Thread-117168] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:09:29.699 [DEBUG] [Thread-117168] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:09:29.699 [DEBUG] [Thread-117168] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:09:29.699 [DEBUG] [Thread-117168] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:09:29.713 [INFO] [Thread-117168] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:09:29.713 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:09:29.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:09:30.540 [DEBUG] [Thread-117168] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:09:30.540 [DEBUG] [Thread-117168] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:09:30.588 [DEBUG] [Thread-117168] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:09:30.588 [DEBUG] [Thread-117168] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:09:30.597 [DEBUG] [Thread-117168] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:09:30.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:09:30.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:09:30.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:09:30.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:09:30.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:09:30.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:09:30.633 [DEBUG] [Thread-117168] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:09:43.462 [DEBUG] [Thread-117170 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:09:54.912 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:09:54.913 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:09:58.511 [DEBUG] [Thread-117171 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:10:00.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:10:00.636 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:10:00.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:10:01.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 9, 50), 46.37, 3.8, 0.0, 34.95, 26.24, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:10:01.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:09:50
2025-11-03T14:10:01.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:10:01.611 [DEBUG] [Thread-117172] [transport.py] [_log()] starting thread (client mode): 0xeda1930
2025-11-03T14:10:01.611 [DEBUG] [Thread-117172] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:10:01.633 [DEBUG] [Thread-117172] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:10:01.633 [INFO] [Thread-117172] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:10:01.636 [DEBUG] [Thread-117172] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:10:01.636 [DEBUG] [Thread-117172] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:10:01.637 [DEBUG] [Thread-117172] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:10:01.637 [DEBUG] [Thread-117172] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:10:01.637 [DEBUG] [Thread-117172] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:10:01.637 [DEBUG] [Thread-117172] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:10:01.637 [DEBUG] [Thread-117172] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:10:01.637 [DEBUG] [Thread-117172] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:10:01.637 [DEBUG] [Thread-117172] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:10:01.637 [DEBUG] [Thread-117172] [transport.py] [_log()] client lang: <none>
2025-11-03T14:10:01.637 [DEBUG] [Thread-117172] [transport.py] [_log()] server lang: <none>
2025-11-03T14:10:01.637 [DEBUG] [Thread-117172] [transport.py] [_log()] kex follows: False
2025-11-03T14:10:01.637 [DEBUG] [Thread-117172] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:10:01.637 [DEBUG] [Thread-117172] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:10:01.637 [DEBUG] [Thread-117172] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:10:01.637 [DEBUG] [Thread-117172] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:10:01.637 [DEBUG] [Thread-117172] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:10:01.637 [DEBUG] [Thread-117172] [transport.py] [_log()] Compression: none
2025-11-03T14:10:01.637 [DEBUG] [Thread-117172] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:10:01.655 [DEBUG] [Thread-117172] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:10:01.655 [DEBUG] [Thread-117172] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:10:01.656 [DEBUG] [Thread-117172] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:10:01.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:10:01.657 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:10:01.658 [DEBUG] [Thread-117172] [transport.py] [_log()] userauth is OK
2025-11-03T14:10:01.658 [DEBUG] [Thread-117172] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:10:01.658 [DEBUG] [Thread-117172] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:10:01.658 [DEBUG] [Thread-117172] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:10:01.658 [DEBUG] [Thread-117172] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:10:01.683 [INFO] [Thread-117172] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:10:01.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:10:02.332 [DEBUG] [Thread-117172] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:10:02.332 [DEBUG] [Thread-117172] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:10:02.332 [DEBUG] [Thread-117172] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:10:02.374 [DEBUG] [Thread-117172] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:10:02.374 [DEBUG] [Thread-117172] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:10:02.376 [DEBUG] [Thread-117172] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:10:02.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:10:02.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:10:02.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:10:02.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:10:02.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:10:02.395 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:10:02.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:10:02.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:10:02.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:10:02.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.506353 -999.00  +26.80  29.01      8   -9.10 1 1 1 1 1   888    0 35.53 13.69 ----- 30.8 29.0 313.4 39.4 31.0 -31.8 30.5 -29.6 31.1 -30.3 31.8 -29.4
2025-11-03T14:10:02.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:10:02.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:10:02.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.506353
2025-11-03T14:10:02.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:10:02.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:10:02.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:10:02.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:10:02.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:10:02.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:09:50', tmtdew=46.37, humidity=3.8, cloud=0.0, wind=34.95, temperature=26.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:09:08.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:10:02.397 [DEBUG] [Thread-117172] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:10:02.468 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:10:02.478 [DEBUG] [Thread-117175] [transport.py] [_log()] starting thread (client mode): 0xeda3a00
2025-11-03T14:10:02.478 [DEBUG] [Thread-117175] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:10:02.493 [DEBUG] [Thread-117175] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:10:02.493 [INFO] [Thread-117175] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:10:02.501 [DEBUG] [Thread-117175] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:10:02.501 [DEBUG] [Thread-117175] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:10:02.501 [DEBUG] [Thread-117175] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:10:02.501 [DEBUG] [Thread-117175] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:10:02.501 [DEBUG] [Thread-117175] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:10:02.501 [DEBUG] [Thread-117175] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:10:02.501 [DEBUG] [Thread-117175] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:10:02.501 [DEBUG] [Thread-117175] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:10:02.501 [DEBUG] [Thread-117175] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:10:02.501 [DEBUG] [Thread-117175] [transport.py] [_log()] client lang: <none>
2025-11-03T14:10:02.501 [DEBUG] [Thread-117175] [transport.py] [_log()] server lang: <none>
2025-11-03T14:10:02.501 [DEBUG] [Thread-117175] [transport.py] [_log()] kex follows: False
2025-11-03T14:10:02.501 [DEBUG] [Thread-117175] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:10:02.501 [DEBUG] [Thread-117175] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:10:02.501 [DEBUG] [Thread-117175] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:10:02.501 [DEBUG] [Thread-117175] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:10:02.501 [DEBUG] [Thread-117175] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:10:02.501 [DEBUG] [Thread-117175] [transport.py] [_log()] Compression: none
2025-11-03T14:10:02.501 [DEBUG] [Thread-117175] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:10:02.563 [DEBUG] [Thread-117175] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:10:02.563 [DEBUG] [Thread-117175] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:10:02.563 [DEBUG] [Thread-117175] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:10:02.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:10:02.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:10:02.620 [DEBUG] [Thread-117175] [transport.py] [_log()] userauth is OK
2025-11-03T14:10:02.620 [DEBUG] [Thread-117175] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:10:02.620 [DEBUG] [Thread-117175] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:10:02.620 [DEBUG] [Thread-117175] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:10:02.620 [DEBUG] [Thread-117175] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:10:02.634 [INFO] [Thread-117175] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:10:02.634 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:10:02.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:10:03.520 [DEBUG] [Thread-117175] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:10:03.520 [DEBUG] [Thread-117175] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:10:03.569 [DEBUG] [Thread-117175] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:10:03.570 [DEBUG] [Thread-117175] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:10:03.579 [DEBUG] [Thread-117175] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:10:03.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:10:03.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:10:03.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:10:03.607 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:10:03.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:10:03.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:10:03.616 [DEBUG] [Thread-117175] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:10:09.400 [DEBUG] [Thread-117177 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:10:13.552 [DEBUG] [Thread-117178 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:10:28.601 [DEBUG] [Thread-117179 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:10:33.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:10:33.639 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:10:33.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:10:34.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 10, 22), 45.9, 3.94, 0.0, 34.67, 26.06, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:10:34.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:10:22
2025-11-03T14:10:34.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:10:34.591 [DEBUG] [Thread-117180] [transport.py] [_log()] starting thread (client mode): 0x117991b0
2025-11-03T14:10:34.591 [DEBUG] [Thread-117180] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:10:34.607 [DEBUG] [Thread-117180] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:10:34.607 [INFO] [Thread-117180] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:10:34.616 [DEBUG] [Thread-117180] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:10:34.616 [DEBUG] [Thread-117180] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:10:34.616 [DEBUG] [Thread-117180] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:10:34.616 [DEBUG] [Thread-117180] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:10:34.616 [DEBUG] [Thread-117180] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:10:34.616 [DEBUG] [Thread-117180] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:10:34.616 [DEBUG] [Thread-117180] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:10:34.617 [DEBUG] [Thread-117180] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:10:34.617 [DEBUG] [Thread-117180] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:10:34.617 [DEBUG] [Thread-117180] [transport.py] [_log()] client lang: <none>
2025-11-03T14:10:34.617 [DEBUG] [Thread-117180] [transport.py] [_log()] server lang: <none>
2025-11-03T14:10:34.617 [DEBUG] [Thread-117180] [transport.py] [_log()] kex follows: False
2025-11-03T14:10:34.617 [DEBUG] [Thread-117180] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:10:34.617 [DEBUG] [Thread-117180] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:10:34.617 [DEBUG] [Thread-117180] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:10:34.617 [DEBUG] [Thread-117180] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:10:34.617 [DEBUG] [Thread-117180] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:10:34.617 [DEBUG] [Thread-117180] [transport.py] [_log()] Compression: none
2025-11-03T14:10:34.617 [DEBUG] [Thread-117180] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:10:34.629 [DEBUG] [Thread-117180] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:10:34.629 [DEBUG] [Thread-117180] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:10:34.629 [DEBUG] [Thread-117180] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:10:34.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:10:34.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:10:34.630 [DEBUG] [Thread-117180] [transport.py] [_log()] userauth is OK
2025-11-03T14:10:34.630 [DEBUG] [Thread-117180] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:10:34.630 [DEBUG] [Thread-117180] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:10:34.630 [DEBUG] [Thread-117180] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:10:34.630 [DEBUG] [Thread-117180] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:10:34.643 [INFO] [Thread-117180] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:10:34.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:10:35.293 [DEBUG] [Thread-117180] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:10:35.294 [DEBUG] [Thread-117180] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:10:35.294 [DEBUG] [Thread-117180] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:10:35.334 [DEBUG] [Thread-117180] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:10:35.334 [DEBUG] [Thread-117180] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:10:35.338 [DEBUG] [Thread-117180] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:10:35.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:10:35.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:10:35.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:10:35.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:10:35.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:10:35.362 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:10:35.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:10:35.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:10:35.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:10:35.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.507047 -999.00  +25.80  27.00      8  -10.10 1 1 1 1 1   888    0 36.41 19.72 ----- 24.2 27.0 313.8 30.0 31.0 -31.6 30.4 -31.0 30.9 -30.8 31.8 -30.8
2025-11-03T14:10:35.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:10:35.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:10:35.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.507047
2025-11-03T14:10:35.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:10:35.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:10:35.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:10:35.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:10:35.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:10:35.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:10:22', tmtdew=45.9, humidity=3.94, cloud=0.0, wind=34.67, temperature=26.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:10:08.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:10:35.365 [DEBUG] [Thread-117180] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:10:35.449 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:10:35.461 [DEBUG] [Thread-117183] [transport.py] [_log()] starting thread (client mode): 0xeda2c80
2025-11-03T14:10:35.461 [DEBUG] [Thread-117183] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:10:35.476 [DEBUG] [Thread-117183] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:10:35.476 [INFO] [Thread-117183] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:10:35.487 [DEBUG] [Thread-117183] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:10:35.487 [DEBUG] [Thread-117183] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:10:35.487 [DEBUG] [Thread-117183] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:10:35.487 [DEBUG] [Thread-117183] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:10:35.487 [DEBUG] [Thread-117183] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:10:35.487 [DEBUG] [Thread-117183] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:10:35.487 [DEBUG] [Thread-117183] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:10:35.487 [DEBUG] [Thread-117183] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:10:35.487 [DEBUG] [Thread-117183] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:10:35.487 [DEBUG] [Thread-117183] [transport.py] [_log()] client lang: <none>
2025-11-03T14:10:35.487 [DEBUG] [Thread-117183] [transport.py] [_log()] server lang: <none>
2025-11-03T14:10:35.487 [DEBUG] [Thread-117183] [transport.py] [_log()] kex follows: False
2025-11-03T14:10:35.488 [DEBUG] [Thread-117183] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:10:35.488 [DEBUG] [Thread-117183] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:10:35.488 [DEBUG] [Thread-117183] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:10:35.488 [DEBUG] [Thread-117183] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:10:35.488 [DEBUG] [Thread-117183] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:10:35.488 [DEBUG] [Thread-117183] [transport.py] [_log()] Compression: none
2025-11-03T14:10:35.488 [DEBUG] [Thread-117183] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:10:35.548 [DEBUG] [Thread-117183] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:10:35.549 [DEBUG] [Thread-117183] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:10:35.549 [DEBUG] [Thread-117183] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:10:35.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:10:35.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:10:35.608 [DEBUG] [Thread-117183] [transport.py] [_log()] userauth is OK
2025-11-03T14:10:35.608 [DEBUG] [Thread-117183] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:10:35.608 [DEBUG] [Thread-117183] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:10:35.608 [DEBUG] [Thread-117183] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:10:35.608 [DEBUG] [Thread-117183] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:10:35.628 [INFO] [Thread-117183] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:10:35.629 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:10:35.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:10:36.468 [DEBUG] [Thread-117183] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:10:36.468 [DEBUG] [Thread-117183] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:10:36.517 [DEBUG] [Thread-117183] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:10:36.517 [DEBUG] [Thread-117183] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:10:36.525 [DEBUG] [Thread-117183] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:10:36.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:10:36.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:10:36.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:10:36.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:10:36.552 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:10:36.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:10:36.561 [DEBUG] [Thread-117183] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:10:43.638 [DEBUG] [Thread-117185 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:10:55.053 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:10:55.054 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:10:58.698 [DEBUG] [Thread-117186 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:11:06.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:11:06.588 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:11:06.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:11:07.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 10, 54), 45.42, 3.94, 0.0, 23.8, 25.98, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:11:07.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:10:54
2025-11-03T14:11:07.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:11:07.520 [DEBUG] [Thread-117187] [transport.py] [_log()] starting thread (client mode): 0x11798d30
2025-11-03T14:11:07.520 [DEBUG] [Thread-117187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:11:07.541 [DEBUG] [Thread-117187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:11:07.542 [INFO] [Thread-117187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:11:07.545 [DEBUG] [Thread-117187] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:11:07.545 [DEBUG] [Thread-117187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:11:07.545 [DEBUG] [Thread-117187] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:11:07.545 [DEBUG] [Thread-117187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:11:07.545 [DEBUG] [Thread-117187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:11:07.545 [DEBUG] [Thread-117187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:11:07.545 [DEBUG] [Thread-117187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:11:07.545 [DEBUG] [Thread-117187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:11:07.545 [DEBUG] [Thread-117187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:11:07.545 [DEBUG] [Thread-117187] [transport.py] [_log()] client lang: <none>
2025-11-03T14:11:07.545 [DEBUG] [Thread-117187] [transport.py] [_log()] server lang: <none>
2025-11-03T14:11:07.545 [DEBUG] [Thread-117187] [transport.py] [_log()] kex follows: False
2025-11-03T14:11:07.545 [DEBUG] [Thread-117187] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:11:07.545 [DEBUG] [Thread-117187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:11:07.546 [DEBUG] [Thread-117187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:11:07.546 [DEBUG] [Thread-117187] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:11:07.546 [DEBUG] [Thread-117187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:11:07.546 [DEBUG] [Thread-117187] [transport.py] [_log()] Compression: none
2025-11-03T14:11:07.546 [DEBUG] [Thread-117187] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:11:07.563 [DEBUG] [Thread-117187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:11:07.573 [DEBUG] [Thread-117187] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:11:07.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:11:07.574 [DEBUG] [Thread-117187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:11:07.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:11:07.576 [DEBUG] [Thread-117187] [transport.py] [_log()] userauth is OK
2025-11-03T14:11:07.576 [DEBUG] [Thread-117187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:11:07.577 [DEBUG] [Thread-117187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:11:07.577 [DEBUG] [Thread-117187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:11:07.577 [DEBUG] [Thread-117187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:11:07.608 [INFO] [Thread-117187] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:11:07.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:11:08.258 [DEBUG] [Thread-117187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:11:08.259 [DEBUG] [Thread-117187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:11:08.259 [DEBUG] [Thread-117187] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:11:08.300 [DEBUG] [Thread-117187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:11:08.300 [DEBUG] [Thread-117187] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:11:08.304 [DEBUG] [Thread-117187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:11:08.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:11:08.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:11:08.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:11:08.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:11:08.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:11:08.328 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:11:08.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:11:08.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:11:08.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:11:08.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.507395 -999.00  +26.10  24.97      8   -9.80 1 1 1 1 1   888    0 37.08 19.88 ----- 25.3 25.0 327.8 31.0 31.0 -30.7 30.4 -29.9 31.1 -29.0 31.9 -29.6
2025-11-03T14:11:08.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:11:08.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:11:08.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.507395
2025-11-03T14:11:08.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:11:08.337 [DEBUG] [Thread-117187] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:11:08.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:11:08.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:11:08.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:11:08.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:11:08.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:10:54', tmtdew=45.42, humidity=3.94, cloud=0.0, wind=23.8, temperature=25.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:10:38.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:11:08.423 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:11:08.438 [DEBUG] [Thread-117190] [transport.py] [_log()] starting thread (client mode): 0xed2cd60
2025-11-03T14:11:08.439 [DEBUG] [Thread-117190] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:11:08.456 [DEBUG] [Thread-117190] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:11:08.456 [INFO] [Thread-117190] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:11:08.463 [DEBUG] [Thread-117190] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:11:08.464 [DEBUG] [Thread-117190] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:11:08.464 [DEBUG] [Thread-117190] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:11:08.464 [DEBUG] [Thread-117190] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:11:08.464 [DEBUG] [Thread-117190] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:11:08.464 [DEBUG] [Thread-117190] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:11:08.464 [DEBUG] [Thread-117190] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:11:08.464 [DEBUG] [Thread-117190] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:11:08.464 [DEBUG] [Thread-117190] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:11:08.464 [DEBUG] [Thread-117190] [transport.py] [_log()] client lang: <none>
2025-11-03T14:11:08.464 [DEBUG] [Thread-117190] [transport.py] [_log()] server lang: <none>
2025-11-03T14:11:08.464 [DEBUG] [Thread-117190] [transport.py] [_log()] kex follows: False
2025-11-03T14:11:08.464 [DEBUG] [Thread-117190] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:11:08.465 [DEBUG] [Thread-117190] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:11:08.465 [DEBUG] [Thread-117190] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:11:08.465 [DEBUG] [Thread-117190] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:11:08.465 [DEBUG] [Thread-117190] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:11:08.465 [DEBUG] [Thread-117190] [transport.py] [_log()] Compression: none
2025-11-03T14:11:08.465 [DEBUG] [Thread-117190] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:11:08.522 [DEBUG] [Thread-117190] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:11:08.523 [DEBUG] [Thread-117190] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:11:08.523 [DEBUG] [Thread-117190] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:11:08.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:11:08.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:11:08.582 [DEBUG] [Thread-117190] [transport.py] [_log()] userauth is OK
2025-11-03T14:11:08.582 [DEBUG] [Thread-117190] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:11:08.582 [DEBUG] [Thread-117190] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:11:08.582 [DEBUG] [Thread-117190] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:11:08.582 [DEBUG] [Thread-117190] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:11:08.603 [INFO] [Thread-117190] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:11:08.604 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:11:08.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:11:09.466 [DEBUG] [Thread-117192 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:11:09.470 [DEBUG] [Thread-117190] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:11:09.470 [DEBUG] [Thread-117190] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:11:09.518 [DEBUG] [Thread-117190] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:11:09.518 [DEBUG] [Thread-117190] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:11:09.527 [DEBUG] [Thread-117190] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:11:09.536 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:11:09.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:11:09.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:11:09.555 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:11:09.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:11:09.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:11:09.564 [DEBUG] [Thread-117190] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:11:13.734 [DEBUG] [Thread-117193 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:11:28.791 [DEBUG] [Thread-117194 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:11:39.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:11:39.587 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:11:39.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:11:40.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 11, 26), 45.69, 3.87, 0.0, 29.38, 26.19, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:11:40.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:11:26
2025-11-03T14:11:40.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:11:40.512 [DEBUG] [Thread-117195] [transport.py] [_log()] starting thread (client mode): 0xeda1ff0
2025-11-03T14:11:40.512 [DEBUG] [Thread-117195] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:11:40.532 [DEBUG] [Thread-117195] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:11:40.532 [INFO] [Thread-117195] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:11:40.534 [DEBUG] [Thread-117195] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:11:40.534 [DEBUG] [Thread-117195] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:11:40.534 [DEBUG] [Thread-117195] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:11:40.534 [DEBUG] [Thread-117195] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:11:40.534 [DEBUG] [Thread-117195] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:11:40.534 [DEBUG] [Thread-117195] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:11:40.534 [DEBUG] [Thread-117195] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:11:40.534 [DEBUG] [Thread-117195] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:11:40.534 [DEBUG] [Thread-117195] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:11:40.534 [DEBUG] [Thread-117195] [transport.py] [_log()] client lang: <none>
2025-11-03T14:11:40.534 [DEBUG] [Thread-117195] [transport.py] [_log()] server lang: <none>
2025-11-03T14:11:40.534 [DEBUG] [Thread-117195] [transport.py] [_log()] kex follows: False
2025-11-03T14:11:40.534 [DEBUG] [Thread-117195] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:11:40.534 [DEBUG] [Thread-117195] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:11:40.534 [DEBUG] [Thread-117195] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:11:40.534 [DEBUG] [Thread-117195] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:11:40.534 [DEBUG] [Thread-117195] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:11:40.534 [DEBUG] [Thread-117195] [transport.py] [_log()] Compression: none
2025-11-03T14:11:40.534 [DEBUG] [Thread-117195] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:11:40.542 [DEBUG] [Thread-117195] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:11:40.542 [DEBUG] [Thread-117195] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:11:40.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:11:40.543 [DEBUG] [Thread-117195] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:11:40.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:11:40.545 [DEBUG] [Thread-117195] [transport.py] [_log()] userauth is OK
2025-11-03T14:11:40.545 [DEBUG] [Thread-117195] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:11:40.545 [DEBUG] [Thread-117195] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:11:40.545 [DEBUG] [Thread-117195] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:11:40.545 [DEBUG] [Thread-117195] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:11:40.574 [INFO] [Thread-117195] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:11:40.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:11:41.155 [DEBUG] [Thread-117195] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:11:41.156 [DEBUG] [Thread-117195] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:11:41.156 [DEBUG] [Thread-117195] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:11:41.196 [DEBUG] [Thread-117195] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:11:41.196 [DEBUG] [Thread-117195] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:11:41.199 [DEBUG] [Thread-117195] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:11:41.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:11:41.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:11:41.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:11:41.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:11:41.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:11:41.228 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:11:41.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:11:41.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:11:41.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:11:41.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.507742 -999.00  +26.50  29.04      8   -9.70 1 1 1 1 1   888    0 37.00 21.71 ----- 27.9 29.0 332.4 35.3 31.2 -30.2 30.6 -30.0 31.2 -29.3 32.0 -29.5
2025-11-03T14:11:41.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:11:41.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:11:41.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.507742
2025-11-03T14:11:41.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:11:41.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:11:41.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:11:41.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:11:41.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:11:41.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:11:26', tmtdew=45.69, humidity=3.87, cloud=0.0, wind=29.38, temperature=26.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:11:08.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:11:41.232 [DEBUG] [Thread-117195] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:11:41.314 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:11:41.326 [DEBUG] [Thread-117198] [transport.py] [_log()] starting thread (client mode): 0xedd4af0
2025-11-03T14:11:41.326 [DEBUG] [Thread-117198] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:11:41.341 [DEBUG] [Thread-117198] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:11:41.341 [INFO] [Thread-117198] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:11:41.348 [DEBUG] [Thread-117198] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:11:41.349 [DEBUG] [Thread-117198] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:11:41.349 [DEBUG] [Thread-117198] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:11:41.349 [DEBUG] [Thread-117198] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:11:41.349 [DEBUG] [Thread-117198] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:11:41.349 [DEBUG] [Thread-117198] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:11:41.349 [DEBUG] [Thread-117198] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:11:41.349 [DEBUG] [Thread-117198] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:11:41.349 [DEBUG] [Thread-117198] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:11:41.349 [DEBUG] [Thread-117198] [transport.py] [_log()] client lang: <none>
2025-11-03T14:11:41.349 [DEBUG] [Thread-117198] [transport.py] [_log()] server lang: <none>
2025-11-03T14:11:41.349 [DEBUG] [Thread-117198] [transport.py] [_log()] kex follows: False
2025-11-03T14:11:41.349 [DEBUG] [Thread-117198] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:11:41.349 [DEBUG] [Thread-117198] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:11:41.349 [DEBUG] [Thread-117198] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:11:41.349 [DEBUG] [Thread-117198] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:11:41.349 [DEBUG] [Thread-117198] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:11:41.350 [DEBUG] [Thread-117198] [transport.py] [_log()] Compression: none
2025-11-03T14:11:41.350 [DEBUG] [Thread-117198] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:11:41.407 [DEBUG] [Thread-117198] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:11:41.407 [DEBUG] [Thread-117198] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:11:41.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:11:41.408 [DEBUG] [Thread-117198] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:11:41.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:11:41.463 [DEBUG] [Thread-117198] [transport.py] [_log()] userauth is OK
2025-11-03T14:11:41.463 [DEBUG] [Thread-117198] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:11:41.464 [DEBUG] [Thread-117198] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:11:41.464 [DEBUG] [Thread-117198] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:11:41.464 [DEBUG] [Thread-117198] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:11:41.482 [INFO] [Thread-117198] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:11:41.483 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:11:41.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:11:42.370 [DEBUG] [Thread-117198] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:11:42.371 [DEBUG] [Thread-117198] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:11:42.419 [DEBUG] [Thread-117198] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:11:42.419 [DEBUG] [Thread-117198] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:11:42.429 [DEBUG] [Thread-117198] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:11:42.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:11:42.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:11:42.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:11:42.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:11:42.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:11:42.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:11:42.466 [DEBUG] [Thread-117198] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:11:43.819 [DEBUG] [Thread-117200 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:11:55.194 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:11:55.196 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:11:58.874 [DEBUG] [Thread-117201 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:12:09.542 [DEBUG] [Thread-117202 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:12:12.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:12:12.488 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:12:12.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:12:13.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 11, 59), 46.21, 3.84, 0.0, 35.99, 26.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:12:13.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:11:59
2025-11-03T14:12:13.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:12:13.589 [DEBUG] [Thread-117203] [transport.py] [_log()] starting thread (client mode): 0xed2f340
2025-11-03T14:12:13.590 [DEBUG] [Thread-117203] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:12:13.610 [DEBUG] [Thread-117203] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:12:13.610 [INFO] [Thread-117203] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:12:13.613 [DEBUG] [Thread-117203] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:12:13.613 [DEBUG] [Thread-117203] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:12:13.613 [DEBUG] [Thread-117203] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:12:13.613 [DEBUG] [Thread-117203] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:12:13.613 [DEBUG] [Thread-117203] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:12:13.613 [DEBUG] [Thread-117203] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:12:13.613 [DEBUG] [Thread-117203] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:12:13.613 [DEBUG] [Thread-117203] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:12:13.613 [DEBUG] [Thread-117203] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:12:13.613 [DEBUG] [Thread-117203] [transport.py] [_log()] client lang: <none>
2025-11-03T14:12:13.613 [DEBUG] [Thread-117203] [transport.py] [_log()] server lang: <none>
2025-11-03T14:12:13.614 [DEBUG] [Thread-117203] [transport.py] [_log()] kex follows: False
2025-11-03T14:12:13.614 [DEBUG] [Thread-117203] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:12:13.614 [DEBUG] [Thread-117203] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:12:13.614 [DEBUG] [Thread-117203] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:12:13.614 [DEBUG] [Thread-117203] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:12:13.614 [DEBUG] [Thread-117203] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:12:13.614 [DEBUG] [Thread-117203] [transport.py] [_log()] Compression: none
2025-11-03T14:12:13.614 [DEBUG] [Thread-117203] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:12:13.628 [DEBUG] [Thread-117203] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:12:13.628 [DEBUG] [Thread-117203] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:12:13.629 [DEBUG] [Thread-117203] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:12:13.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:12:13.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:12:13.629 [DEBUG] [Thread-117203] [transport.py] [_log()] userauth is OK
2025-11-03T14:12:13.629 [DEBUG] [Thread-117203] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:12:13.630 [DEBUG] [Thread-117203] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:12:13.630 [DEBUG] [Thread-117203] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:12:13.630 [DEBUG] [Thread-117203] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:12:13.642 [INFO] [Thread-117203] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:12:13.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:12:13.910 [DEBUG] [Thread-117205 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:12:14.262 [DEBUG] [Thread-117203] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:12:14.262 [DEBUG] [Thread-117203] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:12:14.262 [DEBUG] [Thread-117203] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:12:14.303 [DEBUG] [Thread-117203] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:12:14.304 [DEBUG] [Thread-117203] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:12:14.306 [DEBUG] [Thread-117203] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:12:14.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:12:14.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:12:14.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:12:14.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:12:14.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:12:14.324 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:12:14.324 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:12:14.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:12:14.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:12:14.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.508089 -999.00  +26.20  17.99      8   -9.90 1 1 1 1 1   888    0 36.51 22.01 ----- 15.1 18.0 9.7 34.1 31.2 -31.2 30.5 -30.7 31.2 -30.1 32.0 -30.2
2025-11-03T14:12:14.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:12:14.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:12:14.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.508089
2025-11-03T14:12:14.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:12:14.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:12:14.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:12:14.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:12:14.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:12:14.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:11:59', tmtdew=46.21, humidity=3.84, cloud=0.0, wind=35.99, temperature=26.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:11:38.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:12:14.325 [DEBUG] [Thread-117203] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:12:14.398 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:12:14.411 [DEBUG] [Thread-117207] [transport.py] [_log()] starting thread (client mode): 0x1179a020
2025-11-03T14:12:14.411 [DEBUG] [Thread-117207] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:12:14.426 [DEBUG] [Thread-117207] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:12:14.426 [INFO] [Thread-117207] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:12:14.434 [DEBUG] [Thread-117207] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:12:14.434 [DEBUG] [Thread-117207] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:12:14.434 [DEBUG] [Thread-117207] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:12:14.434 [DEBUG] [Thread-117207] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:12:14.434 [DEBUG] [Thread-117207] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:12:14.434 [DEBUG] [Thread-117207] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:12:14.434 [DEBUG] [Thread-117207] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:12:14.434 [DEBUG] [Thread-117207] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:12:14.434 [DEBUG] [Thread-117207] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:12:14.434 [DEBUG] [Thread-117207] [transport.py] [_log()] client lang: <none>
2025-11-03T14:12:14.434 [DEBUG] [Thread-117207] [transport.py] [_log()] server lang: <none>
2025-11-03T14:12:14.434 [DEBUG] [Thread-117207] [transport.py] [_log()] kex follows: False
2025-11-03T14:12:14.434 [DEBUG] [Thread-117207] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:12:14.434 [DEBUG] [Thread-117207] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:12:14.434 [DEBUG] [Thread-117207] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:12:14.434 [DEBUG] [Thread-117207] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:12:14.435 [DEBUG] [Thread-117207] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:12:14.435 [DEBUG] [Thread-117207] [transport.py] [_log()] Compression: none
2025-11-03T14:12:14.435 [DEBUG] [Thread-117207] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:12:14.490 [DEBUG] [Thread-117207] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:12:14.490 [DEBUG] [Thread-117207] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:12:14.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:12:14.490 [DEBUG] [Thread-117207] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:12:14.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:12:14.550 [DEBUG] [Thread-117207] [transport.py] [_log()] userauth is OK
2025-11-03T14:12:14.550 [DEBUG] [Thread-117207] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:12:14.550 [DEBUG] [Thread-117207] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:12:14.550 [DEBUG] [Thread-117207] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:12:14.550 [DEBUG] [Thread-117207] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:12:14.567 [INFO] [Thread-117207] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:12:14.567 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:12:14.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:12:15.408 [DEBUG] [Thread-117207] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:12:15.408 [DEBUG] [Thread-117207] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:12:15.456 [DEBUG] [Thread-117207] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:12:15.456 [DEBUG] [Thread-117207] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:12:15.465 [DEBUG] [Thread-117207] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:12:15.473 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:12:15.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:12:15.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:12:15.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:12:15.489 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:12:15.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:12:15.497 [DEBUG] [Thread-117207] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:12:28.940 [DEBUG] [Thread-117209 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:12:44.000 [DEBUG] [Thread-117210 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:12:45.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:12:45.519 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:12:45.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:12:46.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 12, 31), 45.95, 3.9, 0.0, 35.66, 26.23, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:12:46.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:12:31
2025-11-03T14:12:46.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:12:46.551 [DEBUG] [Thread-117211] [transport.py] [_log()] starting thread (client mode): 0x81b8fa0
2025-11-03T14:12:46.551 [DEBUG] [Thread-117211] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:12:46.573 [DEBUG] [Thread-117211] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:12:46.574 [INFO] [Thread-117211] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:12:46.576 [DEBUG] [Thread-117211] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:12:46.576 [DEBUG] [Thread-117211] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:12:46.576 [DEBUG] [Thread-117211] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:12:46.576 [DEBUG] [Thread-117211] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:12:46.576 [DEBUG] [Thread-117211] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:12:46.576 [DEBUG] [Thread-117211] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:12:46.576 [DEBUG] [Thread-117211] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:12:46.576 [DEBUG] [Thread-117211] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:12:46.576 [DEBUG] [Thread-117211] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:12:46.576 [DEBUG] [Thread-117211] [transport.py] [_log()] client lang: <none>
2025-11-03T14:12:46.576 [DEBUG] [Thread-117211] [transport.py] [_log()] server lang: <none>
2025-11-03T14:12:46.576 [DEBUG] [Thread-117211] [transport.py] [_log()] kex follows: False
2025-11-03T14:12:46.576 [DEBUG] [Thread-117211] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:12:46.576 [DEBUG] [Thread-117211] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:12:46.576 [DEBUG] [Thread-117211] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:12:46.576 [DEBUG] [Thread-117211] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:12:46.577 [DEBUG] [Thread-117211] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:12:46.577 [DEBUG] [Thread-117211] [transport.py] [_log()] Compression: none
2025-11-03T14:12:46.577 [DEBUG] [Thread-117211] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:12:46.591 [DEBUG] [Thread-117211] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:12:46.591 [DEBUG] [Thread-117211] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:12:46.591 [DEBUG] [Thread-117211] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:12:46.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:12:46.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:12:46.592 [DEBUG] [Thread-117211] [transport.py] [_log()] userauth is OK
2025-11-03T14:12:46.592 [DEBUG] [Thread-117211] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:12:46.592 [DEBUG] [Thread-117211] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:12:46.592 [DEBUG] [Thread-117211] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:12:46.592 [DEBUG] [Thread-117211] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:12:46.607 [INFO] [Thread-117211] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:12:46.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:12:47.309 [DEBUG] [Thread-117211] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:12:47.309 [DEBUG] [Thread-117211] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:12:47.309 [DEBUG] [Thread-117211] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:12:47.350 [DEBUG] [Thread-117211] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:12:47.350 [DEBUG] [Thread-117211] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:12:47.352 [DEBUG] [Thread-117211] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:12:47.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:12:47.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:12:47.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:12:47.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:12:47.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:12:47.369 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:12:47.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:12:47.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:12:47.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:12:47.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.508437 -999.00  +26.30  34.16      8   -9.90 1 1 2 1 1   888    0 36.72 19.13 ----- 28.0 34.2 321.2 38.6 31.3 -30.7 30.6 -31.7 31.3 -31.3 32.0 -30.5
2025-11-03T14:12:47.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:12:47.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:12:47.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.508437
2025-11-03T14:12:47.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:12:47.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:12:47.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:12:47.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:12:47.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:12:47.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:12:31', tmtdew=45.95, humidity=3.9, cloud=0.0, wind=35.66, temperature=26.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:12:08.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:12:47.370 [DEBUG] [Thread-117211] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:12:47.442 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:12:47.454 [DEBUG] [Thread-117214] [transport.py] [_log()] starting thread (client mode): 0x1179b220
2025-11-03T14:12:47.454 [DEBUG] [Thread-117214] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:12:47.472 [DEBUG] [Thread-117214] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:12:47.472 [INFO] [Thread-117214] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:12:47.479 [DEBUG] [Thread-117214] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:12:47.479 [DEBUG] [Thread-117214] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:12:47.479 [DEBUG] [Thread-117214] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:12:47.479 [DEBUG] [Thread-117214] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:12:47.479 [DEBUG] [Thread-117214] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:12:47.479 [DEBUG] [Thread-117214] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:12:47.479 [DEBUG] [Thread-117214] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:12:47.479 [DEBUG] [Thread-117214] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:12:47.479 [DEBUG] [Thread-117214] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:12:47.480 [DEBUG] [Thread-117214] [transport.py] [_log()] client lang: <none>
2025-11-03T14:12:47.480 [DEBUG] [Thread-117214] [transport.py] [_log()] server lang: <none>
2025-11-03T14:12:47.480 [DEBUG] [Thread-117214] [transport.py] [_log()] kex follows: False
2025-11-03T14:12:47.480 [DEBUG] [Thread-117214] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:12:47.480 [DEBUG] [Thread-117214] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:12:47.480 [DEBUG] [Thread-117214] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:12:47.480 [DEBUG] [Thread-117214] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:12:47.480 [DEBUG] [Thread-117214] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:12:47.480 [DEBUG] [Thread-117214] [transport.py] [_log()] Compression: none
2025-11-03T14:12:47.480 [DEBUG] [Thread-117214] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:12:47.538 [DEBUG] [Thread-117214] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:12:47.539 [DEBUG] [Thread-117214] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:12:47.539 [DEBUG] [Thread-117214] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:12:47.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:12:47.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:12:47.595 [DEBUG] [Thread-117214] [transport.py] [_log()] userauth is OK
2025-11-03T14:12:47.595 [DEBUG] [Thread-117214] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:12:47.595 [DEBUG] [Thread-117214] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:12:47.595 [DEBUG] [Thread-117214] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:12:47.595 [DEBUG] [Thread-117214] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:12:47.610 [INFO] [Thread-117214] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:12:47.619 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:12:47.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:12:48.503 [DEBUG] [Thread-117214] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:12:48.503 [DEBUG] [Thread-117214] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:12:48.552 [DEBUG] [Thread-117214] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:12:48.552 [DEBUG] [Thread-117214] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:12:48.561 [DEBUG] [Thread-117214] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:12:48.571 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:12:48.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:12:48.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:12:48.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:12:48.590 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:12:48.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:12:48.598 [DEBUG] [Thread-117214] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:12:55.336 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:12:55.336 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:12:59.029 [DEBUG] [Thread-117216 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:13:09.796 [DEBUG] [Thread-117217 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:13:14.090 [DEBUG] [Thread-117218 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:13:18.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:13:18.617 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:13:18.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:13:19.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 13, 3), 46.02, 3.89, 0.0, 32.29, 26.29, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:13:19.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:13:03
2025-11-03T14:13:19.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:13:19.640 [DEBUG] [Thread-117219] [transport.py] [_log()] starting thread (client mode): 0xeda2c80
2025-11-03T14:13:19.650 [DEBUG] [Thread-117219] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:13:19.661 [DEBUG] [Thread-117219] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:13:19.661 [INFO] [Thread-117219] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:13:19.664 [DEBUG] [Thread-117219] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:13:19.664 [DEBUG] [Thread-117219] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:13:19.664 [DEBUG] [Thread-117219] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:13:19.664 [DEBUG] [Thread-117219] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:13:19.664 [DEBUG] [Thread-117219] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:13:19.664 [DEBUG] [Thread-117219] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:13:19.664 [DEBUG] [Thread-117219] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:13:19.664 [DEBUG] [Thread-117219] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:13:19.664 [DEBUG] [Thread-117219] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:13:19.664 [DEBUG] [Thread-117219] [transport.py] [_log()] client lang: <none>
2025-11-03T14:13:19.665 [DEBUG] [Thread-117219] [transport.py] [_log()] server lang: <none>
2025-11-03T14:13:19.665 [DEBUG] [Thread-117219] [transport.py] [_log()] kex follows: False
2025-11-03T14:13:19.665 [DEBUG] [Thread-117219] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:13:19.665 [DEBUG] [Thread-117219] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:13:19.665 [DEBUG] [Thread-117219] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:13:19.665 [DEBUG] [Thread-117219] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:13:19.665 [DEBUG] [Thread-117219] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:13:19.665 [DEBUG] [Thread-117219] [transport.py] [_log()] Compression: none
2025-11-03T14:13:19.665 [DEBUG] [Thread-117219] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:13:19.681 [DEBUG] [Thread-117219] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:13:19.681 [DEBUG] [Thread-117219] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:13:19.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:13:19.682 [DEBUG] [Thread-117219] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:13:19.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:13:19.684 [DEBUG] [Thread-117219] [transport.py] [_log()] userauth is OK
2025-11-03T14:13:19.685 [DEBUG] [Thread-117219] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:13:19.685 [DEBUG] [Thread-117219] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:13:19.685 [DEBUG] [Thread-117219] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:13:19.685 [DEBUG] [Thread-117219] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:13:19.702 [INFO] [Thread-117219] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:13:19.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:13:20.348 [DEBUG] [Thread-117219] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:13:20.349 [DEBUG] [Thread-117219] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:13:20.349 [DEBUG] [Thread-117219] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:13:20.389 [DEBUG] [Thread-117219] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:13:20.390 [DEBUG] [Thread-117219] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:13:20.393 [DEBUG] [Thread-117219] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:13:20.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:13:20.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:13:20.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:13:20.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:13:20.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:13:20.415 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:13:20.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:13:20.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:13:20.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:13:20.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.508784 -999.00  +26.20  24.84      8   -9.80 1 1 1 1 1   888    0 37.35 15.75 ----- 21.1 24.8 350.2 32.1 31.3 -31.5 30.6 -30.3 31.4 -30.4 32.1 -29.8
2025-11-03T14:13:20.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:13:20.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:13:20.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.508784
2025-11-03T14:13:20.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:13:20.417 [DEBUG] [Thread-117219] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:13:20.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:13:20.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:13:20.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:13:20.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:13:20.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:13:03', tmtdew=46.02, humidity=3.89, cloud=0.0, wind=32.29, temperature=26.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:12:38.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:13:20.504 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:13:20.515 [DEBUG] [Thread-117222] [transport.py] [_log()] starting thread (client mode): 0x117bcc70
2025-11-03T14:13:20.515 [DEBUG] [Thread-117222] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:13:20.530 [DEBUG] [Thread-117222] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:13:20.530 [INFO] [Thread-117222] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:13:20.538 [DEBUG] [Thread-117222] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:13:20.538 [DEBUG] [Thread-117222] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:13:20.538 [DEBUG] [Thread-117222] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:13:20.538 [DEBUG] [Thread-117222] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:13:20.538 [DEBUG] [Thread-117222] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:13:20.538 [DEBUG] [Thread-117222] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:13:20.538 [DEBUG] [Thread-117222] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:13:20.538 [DEBUG] [Thread-117222] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:13:20.538 [DEBUG] [Thread-117222] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:13:20.539 [DEBUG] [Thread-117222] [transport.py] [_log()] client lang: <none>
2025-11-03T14:13:20.539 [DEBUG] [Thread-117222] [transport.py] [_log()] server lang: <none>
2025-11-03T14:13:20.539 [DEBUG] [Thread-117222] [transport.py] [_log()] kex follows: False
2025-11-03T14:13:20.539 [DEBUG] [Thread-117222] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:13:20.539 [DEBUG] [Thread-117222] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:13:20.539 [DEBUG] [Thread-117222] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:13:20.539 [DEBUG] [Thread-117222] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:13:20.539 [DEBUG] [Thread-117222] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:13:20.539 [DEBUG] [Thread-117222] [transport.py] [_log()] Compression: none
2025-11-03T14:13:20.539 [DEBUG] [Thread-117222] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:13:20.595 [DEBUG] [Thread-117222] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:13:20.596 [DEBUG] [Thread-117222] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:13:20.596 [DEBUG] [Thread-117222] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:13:20.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:13:20.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:13:20.652 [DEBUG] [Thread-117222] [transport.py] [_log()] userauth is OK
2025-11-03T14:13:20.653 [DEBUG] [Thread-117222] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:13:20.653 [DEBUG] [Thread-117222] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:13:20.653 [DEBUG] [Thread-117222] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:13:20.653 [DEBUG] [Thread-117222] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:13:20.672 [INFO] [Thread-117222] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:13:20.672 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:13:20.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:13:21.506 [DEBUG] [Thread-117222] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:13:21.506 [DEBUG] [Thread-117222] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:13:21.554 [DEBUG] [Thread-117222] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:13:21.554 [DEBUG] [Thread-117222] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:13:21.563 [DEBUG] [Thread-117222] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:13:21.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:13:21.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:13:21.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:13:21.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:13:21.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:13:21.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:13:21.603 [DEBUG] [Thread-117222] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:13:29.127 [DEBUG] [Thread-117224 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:13:44.175 [DEBUG] [Thread-117225 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:13:51.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:13:51.606 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:13:51.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:13:52.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 13, 36), 45.75, 3.85, 0.0, 26.59, 26.56, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:13:52.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:13:36
2025-11-03T14:13:52.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:13:52.629 [DEBUG] [Thread-117226] [transport.py] [_log()] starting thread (client mode): 0xeda0910
2025-11-03T14:13:52.630 [DEBUG] [Thread-117226] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:13:52.650 [DEBUG] [Thread-117226] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:13:52.650 [INFO] [Thread-117226] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:13:52.653 [DEBUG] [Thread-117226] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:13:52.654 [DEBUG] [Thread-117226] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:13:52.654 [DEBUG] [Thread-117226] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:13:52.654 [DEBUG] [Thread-117226] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:13:52.654 [DEBUG] [Thread-117226] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:13:52.654 [DEBUG] [Thread-117226] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:13:52.654 [DEBUG] [Thread-117226] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:13:52.654 [DEBUG] [Thread-117226] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:13:52.654 [DEBUG] [Thread-117226] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:13:52.654 [DEBUG] [Thread-117226] [transport.py] [_log()] client lang: <none>
2025-11-03T14:13:52.654 [DEBUG] [Thread-117226] [transport.py] [_log()] server lang: <none>
2025-11-03T14:13:52.654 [DEBUG] [Thread-117226] [transport.py] [_log()] kex follows: False
2025-11-03T14:13:52.654 [DEBUG] [Thread-117226] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:13:52.654 [DEBUG] [Thread-117226] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:13:52.654 [DEBUG] [Thread-117226] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:13:52.654 [DEBUG] [Thread-117226] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:13:52.655 [DEBUG] [Thread-117226] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:13:52.655 [DEBUG] [Thread-117226] [transport.py] [_log()] Compression: none
2025-11-03T14:13:52.655 [DEBUG] [Thread-117226] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:13:52.672 [DEBUG] [Thread-117226] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:13:52.672 [DEBUG] [Thread-117226] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:13:52.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:13:52.673 [DEBUG] [Thread-117226] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:13:52.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:13:52.684 [DEBUG] [Thread-117226] [transport.py] [_log()] userauth is OK
2025-11-03T14:13:52.684 [DEBUG] [Thread-117226] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:13:52.685 [DEBUG] [Thread-117226] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:13:52.685 [DEBUG] [Thread-117226] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:13:52.685 [DEBUG] [Thread-117226] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:13:52.710 [INFO] [Thread-117226] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:13:52.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:13:53.463 [DEBUG] [Thread-117226] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:13:53.463 [DEBUG] [Thread-117226] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:13:53.463 [DEBUG] [Thread-117226] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:13:53.503 [DEBUG] [Thread-117226] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:13:53.503 [DEBUG] [Thread-117226] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:13:53.505 [DEBUG] [Thread-117226] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:13:53.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:13:53.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:13:53.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:13:53.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:13:53.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:13:53.522 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:13:53.522 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:13:53.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:13:53.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:13:53.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.509131 -999.00  +26.20  33.16      8   -9.60 1 1 2 1 1   888    0 35.69 11.53 ----- 28.8 33.2 337.2 39.2 31.2 -31.8 30.6 -30.2 31.4 -30.6 31.8 -29.3
2025-11-03T14:13:53.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:13:53.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:13:53.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.509131
2025-11-03T14:13:53.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:13:53.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:13:53.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:13:53.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:13:53.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:13:53.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:13:36', tmtdew=45.75, humidity=3.85, cloud=0.0, wind=26.59, temperature=26.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:13:08.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:13:53.524 [DEBUG] [Thread-117226] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:13:53.596 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:13:53.607 [DEBUG] [Thread-117229] [transport.py] [_log()] starting thread (client mode): 0xeda1840
2025-11-03T14:13:53.607 [DEBUG] [Thread-117229] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:13:53.622 [DEBUG] [Thread-117229] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:13:53.623 [INFO] [Thread-117229] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:13:53.631 [DEBUG] [Thread-117229] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:13:53.631 [DEBUG] [Thread-117229] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:13:53.631 [DEBUG] [Thread-117229] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:13:53.631 [DEBUG] [Thread-117229] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:13:53.631 [DEBUG] [Thread-117229] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:13:53.631 [DEBUG] [Thread-117229] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:13:53.631 [DEBUG] [Thread-117229] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:13:53.631 [DEBUG] [Thread-117229] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:13:53.631 [DEBUG] [Thread-117229] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:13:53.631 [DEBUG] [Thread-117229] [transport.py] [_log()] client lang: <none>
2025-11-03T14:13:53.631 [DEBUG] [Thread-117229] [transport.py] [_log()] server lang: <none>
2025-11-03T14:13:53.631 [DEBUG] [Thread-117229] [transport.py] [_log()] kex follows: False
2025-11-03T14:13:53.631 [DEBUG] [Thread-117229] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:13:53.631 [DEBUG] [Thread-117229] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:13:53.631 [DEBUG] [Thread-117229] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:13:53.631 [DEBUG] [Thread-117229] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:13:53.631 [DEBUG] [Thread-117229] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:13:53.631 [DEBUG] [Thread-117229] [transport.py] [_log()] Compression: none
2025-11-03T14:13:53.631 [DEBUG] [Thread-117229] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:13:53.688 [DEBUG] [Thread-117229] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:13:53.689 [DEBUG] [Thread-117229] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:13:53.689 [DEBUG] [Thread-117229] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:13:53.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:13:53.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:13:53.745 [DEBUG] [Thread-117229] [transport.py] [_log()] userauth is OK
2025-11-03T14:13:53.745 [DEBUG] [Thread-117229] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:13:53.745 [DEBUG] [Thread-117229] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:13:53.746 [DEBUG] [Thread-117229] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:13:53.746 [DEBUG] [Thread-117229] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:13:53.765 [INFO] [Thread-117229] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:13:53.766 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:13:53.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:13:54.592 [DEBUG] [Thread-117229] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:13:54.601 [DEBUG] [Thread-117229] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:13:54.643 [DEBUG] [Thread-117229] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:13:54.643 [DEBUG] [Thread-117229] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:13:54.652 [DEBUG] [Thread-117229] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:13:54.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:13:54.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:13:54.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:13:54.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:13:54.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:13:54.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:13:54.686 [DEBUG] [Thread-117229] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:13:55.476 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:13:55.477 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:13:59.216 [DEBUG] [Thread-117231 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:14:09.846 [DEBUG] [Thread-117232 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:14:14.262 [DEBUG] [Thread-117233 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:14:24.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:14:24.709 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:14:24.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:14:25.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 14, 8), 45.79, 3.85, 0.0, 31.53, 26.69, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:14:25.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:14:08
2025-11-03T14:14:25.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:14:25.674 [DEBUG] [Thread-117234] [transport.py] [_log()] starting thread (client mode): 0xed21990
2025-11-03T14:14:25.674 [DEBUG] [Thread-117234] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:14:25.695 [DEBUG] [Thread-117234] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:14:25.695 [INFO] [Thread-117234] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:14:25.696 [DEBUG] [Thread-117234] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:14:25.696 [DEBUG] [Thread-117234] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:14:25.696 [DEBUG] [Thread-117234] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:14:25.696 [DEBUG] [Thread-117234] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:14:25.696 [DEBUG] [Thread-117234] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:14:25.696 [DEBUG] [Thread-117234] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:14:25.696 [DEBUG] [Thread-117234] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:14:25.696 [DEBUG] [Thread-117234] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:14:25.696 [DEBUG] [Thread-117234] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:14:25.697 [DEBUG] [Thread-117234] [transport.py] [_log()] client lang: <none>
2025-11-03T14:14:25.697 [DEBUG] [Thread-117234] [transport.py] [_log()] server lang: <none>
2025-11-03T14:14:25.697 [DEBUG] [Thread-117234] [transport.py] [_log()] kex follows: False
2025-11-03T14:14:25.697 [DEBUG] [Thread-117234] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:14:25.697 [DEBUG] [Thread-117234] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:14:25.697 [DEBUG] [Thread-117234] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:14:25.697 [DEBUG] [Thread-117234] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:14:25.697 [DEBUG] [Thread-117234] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:14:25.697 [DEBUG] [Thread-117234] [transport.py] [_log()] Compression: none
2025-11-03T14:14:25.697 [DEBUG] [Thread-117234] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:14:25.714 [DEBUG] [Thread-117234] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:14:25.715 [DEBUG] [Thread-117234] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:14:25.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:14:25.716 [DEBUG] [Thread-117234] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:14:25.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:14:25.718 [DEBUG] [Thread-117234] [transport.py] [_log()] userauth is OK
2025-11-03T14:14:25.718 [DEBUG] [Thread-117234] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:14:25.718 [DEBUG] [Thread-117234] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:14:25.718 [DEBUG] [Thread-117234] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:14:25.718 [DEBUG] [Thread-117234] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:14:25.738 [INFO] [Thread-117234] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:14:25.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:14:26.368 [DEBUG] [Thread-117234] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:14:26.369 [DEBUG] [Thread-117234] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:14:26.369 [DEBUG] [Thread-117234] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:14:26.410 [DEBUG] [Thread-117234] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:14:26.410 [DEBUG] [Thread-117234] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:14:26.414 [DEBUG] [Thread-117234] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:14:26.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:14:26.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:14:26.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:14:26.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:14:26.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:14:26.439 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:14:26.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:14:26.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:14:26.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:14:26.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.509478 -999.00  +25.90  24.38      8  -10.10 1 1 1 1 1   888    0 35.83 11.16 ----- 14.1 24.4 335.0 41.9 31.2 -31.6 30.5 -30.9 31.4 -29.3 32.1 -30.1
2025-11-03T14:14:26.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:14:26.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:14:26.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.509478
2025-11-03T14:14:26.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:14:26.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:14:26.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:14:26.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:14:26.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:14:26.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:14:08', tmtdew=45.79, humidity=3.85, cloud=0.0, wind=31.53, temperature=26.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:13:38.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:14:26.442 [DEBUG] [Thread-117234] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:14:26.525 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:14:26.538 [DEBUG] [Thread-117237] [transport.py] [_log()] starting thread (client mode): 0xed22920
2025-11-03T14:14:26.538 [DEBUG] [Thread-117237] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:14:26.553 [DEBUG] [Thread-117237] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:14:26.553 [INFO] [Thread-117237] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:14:26.560 [DEBUG] [Thread-117237] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:14:26.560 [DEBUG] [Thread-117237] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:14:26.561 [DEBUG] [Thread-117237] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:14:26.561 [DEBUG] [Thread-117237] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:14:26.561 [DEBUG] [Thread-117237] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:14:26.561 [DEBUG] [Thread-117237] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:14:26.561 [DEBUG] [Thread-117237] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:14:26.561 [DEBUG] [Thread-117237] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:14:26.561 [DEBUG] [Thread-117237] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:14:26.561 [DEBUG] [Thread-117237] [transport.py] [_log()] client lang: <none>
2025-11-03T14:14:26.561 [DEBUG] [Thread-117237] [transport.py] [_log()] server lang: <none>
2025-11-03T14:14:26.561 [DEBUG] [Thread-117237] [transport.py] [_log()] kex follows: False
2025-11-03T14:14:26.561 [DEBUG] [Thread-117237] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:14:26.561 [DEBUG] [Thread-117237] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:14:26.561 [DEBUG] [Thread-117237] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:14:26.561 [DEBUG] [Thread-117237] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:14:26.561 [DEBUG] [Thread-117237] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:14:26.561 [DEBUG] [Thread-117237] [transport.py] [_log()] Compression: none
2025-11-03T14:14:26.561 [DEBUG] [Thread-117237] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:14:26.618 [DEBUG] [Thread-117237] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:14:26.619 [DEBUG] [Thread-117237] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:14:26.619 [DEBUG] [Thread-117237] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:14:26.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:14:26.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:14:26.678 [DEBUG] [Thread-117237] [transport.py] [_log()] userauth is OK
2025-11-03T14:14:26.678 [DEBUG] [Thread-117237] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:14:26.679 [DEBUG] [Thread-117237] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:14:26.679 [DEBUG] [Thread-117237] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:14:26.679 [DEBUG] [Thread-117237] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:14:26.698 [INFO] [Thread-117237] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:14:26.698 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:14:26.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:14:27.565 [DEBUG] [Thread-117237] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:14:27.565 [DEBUG] [Thread-117237] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:14:27.613 [DEBUG] [Thread-117237] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:14:27.613 [DEBUG] [Thread-117237] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:14:27.623 [DEBUG] [Thread-117237] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:14:27.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:14:27.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:14:27.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:14:27.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:14:27.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:14:27.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:14:27.661 [DEBUG] [Thread-117237] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:14:29.294 [DEBUG] [Thread-117239 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:14:44.347 [DEBUG] [Thread-117240 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:14:55.628 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:14:55.629 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:14:57.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:14:57.680 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:14:57.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:14:58.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 14, 40), 47.15, 3.67, 0.0, 38.96, 26.97, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:14:58.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:14:40
2025-11-03T14:14:58.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:14:58.634 [DEBUG] [Thread-117241] [transport.py] [_log()] starting thread (client mode): 0xedd7ca0
2025-11-03T14:14:58.634 [DEBUG] [Thread-117241] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:14:58.654 [DEBUG] [Thread-117241] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:14:58.655 [INFO] [Thread-117241] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:14:58.658 [DEBUG] [Thread-117241] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:14:58.658 [DEBUG] [Thread-117241] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:14:58.658 [DEBUG] [Thread-117241] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:14:58.658 [DEBUG] [Thread-117241] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:14:58.658 [DEBUG] [Thread-117241] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:14:58.658 [DEBUG] [Thread-117241] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:14:58.658 [DEBUG] [Thread-117241] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:14:58.658 [DEBUG] [Thread-117241] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:14:58.659 [DEBUG] [Thread-117241] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:14:58.659 [DEBUG] [Thread-117241] [transport.py] [_log()] client lang: <none>
2025-11-03T14:14:58.659 [DEBUG] [Thread-117241] [transport.py] [_log()] server lang: <none>
2025-11-03T14:14:58.659 [DEBUG] [Thread-117241] [transport.py] [_log()] kex follows: False
2025-11-03T14:14:58.659 [DEBUG] [Thread-117241] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:14:58.659 [DEBUG] [Thread-117241] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:14:58.659 [DEBUG] [Thread-117241] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:14:58.659 [DEBUG] [Thread-117241] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:14:58.659 [DEBUG] [Thread-117241] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:14:58.659 [DEBUG] [Thread-117241] [transport.py] [_log()] Compression: none
2025-11-03T14:14:58.659 [DEBUG] [Thread-117241] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:14:58.675 [DEBUG] [Thread-117241] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:14:58.675 [DEBUG] [Thread-117241] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:14:58.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:14:58.675 [DEBUG] [Thread-117241] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:14:58.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:14:58.676 [DEBUG] [Thread-117241] [transport.py] [_log()] userauth is OK
2025-11-03T14:14:58.676 [DEBUG] [Thread-117241] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:14:58.676 [DEBUG] [Thread-117241] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:14:58.676 [DEBUG] [Thread-117241] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:14:58.676 [DEBUG] [Thread-117241] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:14:58.692 [INFO] [Thread-117241] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:14:58.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:14:59.389 [DEBUG] [Thread-117243 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:14:59.488 [DEBUG] [Thread-117241] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:14:59.489 [DEBUG] [Thread-117241] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:14:59.489 [DEBUG] [Thread-117241] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:14:59.530 [DEBUG] [Thread-117241] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:14:59.530 [DEBUG] [Thread-117241] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:14:59.532 [DEBUG] [Thread-117241] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:14:59.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:14:59.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:14:59.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:14:59.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:14:59.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:14:59.548 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:14:59.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:14:59.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:14:59.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:14:59.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.509825 -999.00  +26.20  25.70      8   -9.90 1 1 1 1 1   888    0 36.49 11.30 ----- 27.9 25.7 358.4 40.1 31.2 -31.6 30.5 -30.4 31.2 -31.8 31.9 -29.8
2025-11-03T14:14:59.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:14:59.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:14:59.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.509825
2025-11-03T14:14:59.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:14:59.553 [DEBUG] [Thread-117241] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:14:59.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:14:59.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:14:59.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:14:59.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:14:59.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:14:40', tmtdew=47.15, humidity=3.67, cloud=0.0, wind=38.96, temperature=26.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:14:08.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:14:59.637 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:14:59.649 [DEBUG] [Thread-117245] [transport.py] [_log()] starting thread (client mode): 0xed4d000
2025-11-03T14:14:59.649 [DEBUG] [Thread-117245] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:14:59.664 [DEBUG] [Thread-117245] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:14:59.664 [INFO] [Thread-117245] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:14:59.672 [DEBUG] [Thread-117245] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:14:59.672 [DEBUG] [Thread-117245] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:14:59.672 [DEBUG] [Thread-117245] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:14:59.672 [DEBUG] [Thread-117245] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:14:59.672 [DEBUG] [Thread-117245] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:14:59.673 [DEBUG] [Thread-117245] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:14:59.673 [DEBUG] [Thread-117245] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:14:59.673 [DEBUG] [Thread-117245] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:14:59.673 [DEBUG] [Thread-117245] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:14:59.673 [DEBUG] [Thread-117245] [transport.py] [_log()] client lang: <none>
2025-11-03T14:14:59.673 [DEBUG] [Thread-117245] [transport.py] [_log()] server lang: <none>
2025-11-03T14:14:59.673 [DEBUG] [Thread-117245] [transport.py] [_log()] kex follows: False
2025-11-03T14:14:59.673 [DEBUG] [Thread-117245] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:14:59.673 [DEBUG] [Thread-117245] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:14:59.673 [DEBUG] [Thread-117245] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:14:59.673 [DEBUG] [Thread-117245] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:14:59.673 [DEBUG] [Thread-117245] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:14:59.674 [DEBUG] [Thread-117245] [transport.py] [_log()] Compression: none
2025-11-03T14:14:59.674 [DEBUG] [Thread-117245] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:14:59.730 [DEBUG] [Thread-117245] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:14:59.730 [DEBUG] [Thread-117245] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:14:59.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:14:59.731 [DEBUG] [Thread-117245] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:14:59.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:14:59.787 [DEBUG] [Thread-117245] [transport.py] [_log()] userauth is OK
2025-11-03T14:14:59.787 [DEBUG] [Thread-117245] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:14:59.787 [DEBUG] [Thread-117245] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:14:59.787 [DEBUG] [Thread-117245] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:14:59.787 [DEBUG] [Thread-117245] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:14:59.806 [INFO] [Thread-117245] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:14:59.806 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:14:59.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:15:00.654 [DEBUG] [Thread-117245] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:15:00.654 [DEBUG] [Thread-117245] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:15:00.701 [DEBUG] [Thread-117245] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:15:00.701 [DEBUG] [Thread-117245] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:15:00.710 [DEBUG] [Thread-117245] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:15:00.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:15:00.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:15:00.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:15:00.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:15:00.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:15:00.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:15:00.743 [DEBUG] [Thread-117245] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:15:09.971 [DEBUG] [Thread-117247 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:15:14.423 [DEBUG] [Thread-117248 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:15:29.463 [DEBUG] [Thread-117249 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:15:30.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:15:30.765 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:15:30.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:15:31.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 15, 13), 47.25, 3.62, 0.0, 34.62, 26.74, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:15:31.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:15:13
2025-11-03T14:15:31.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:15:31.828 [DEBUG] [Thread-117250] [transport.py] [_log()] starting thread (client mode): 0xed4e800
2025-11-03T14:15:31.828 [DEBUG] [Thread-117250] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:15:31.849 [DEBUG] [Thread-117250] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:15:31.849 [INFO] [Thread-117250] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:15:31.850 [DEBUG] [Thread-117250] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:15:31.851 [DEBUG] [Thread-117250] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:15:31.851 [DEBUG] [Thread-117250] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:15:31.851 [DEBUG] [Thread-117250] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:15:31.851 [DEBUG] [Thread-117250] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:15:31.851 [DEBUG] [Thread-117250] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:15:31.851 [DEBUG] [Thread-117250] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:15:31.851 [DEBUG] [Thread-117250] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:15:31.851 [DEBUG] [Thread-117250] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:15:31.851 [DEBUG] [Thread-117250] [transport.py] [_log()] client lang: <none>
2025-11-03T14:15:31.851 [DEBUG] [Thread-117250] [transport.py] [_log()] server lang: <none>
2025-11-03T14:15:31.851 [DEBUG] [Thread-117250] [transport.py] [_log()] kex follows: False
2025-11-03T14:15:31.851 [DEBUG] [Thread-117250] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:15:31.851 [DEBUG] [Thread-117250] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:15:31.851 [DEBUG] [Thread-117250] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:15:31.851 [DEBUG] [Thread-117250] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:15:31.851 [DEBUG] [Thread-117250] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:15:31.851 [DEBUG] [Thread-117250] [transport.py] [_log()] Compression: none
2025-11-03T14:15:31.851 [DEBUG] [Thread-117250] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:15:31.858 [DEBUG] [Thread-117250] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:15:31.867 [DEBUG] [Thread-117250] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:15:31.867 [DEBUG] [Thread-117250] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:15:31.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:15:31.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:15:31.868 [DEBUG] [Thread-117250] [transport.py] [_log()] userauth is OK
2025-11-03T14:15:31.868 [DEBUG] [Thread-117250] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:15:31.868 [DEBUG] [Thread-117250] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:15:31.868 [DEBUG] [Thread-117250] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:15:31.868 [DEBUG] [Thread-117250] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:15:31.883 [INFO] [Thread-117250] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:15:31.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:15:32.521 [DEBUG] [Thread-117250] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:15:32.521 [DEBUG] [Thread-117250] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:15:32.521 [DEBUG] [Thread-117250] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:15:32.562 [DEBUG] [Thread-117250] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:15:32.562 [DEBUG] [Thread-117250] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:15:32.564 [DEBUG] [Thread-117250] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:15:32.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:15:32.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:15:32.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:15:32.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:15:32.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:15:32.582 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:15:32.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:15:32.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:15:32.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:15:32.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.510173 -999.00  +26.00  22.41      8  -10.40 1 1 1 1 1   888    0 36.25 13.28 ----- 32.1 22.4 356.4 56.8 31.0 -32.6 30.3 -32.6 31.1 -32.4 31.7 -30.9
2025-11-03T14:15:32.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:15:32.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:15:32.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.510173
2025-11-03T14:15:32.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:15:32.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:15:32.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:15:32.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:15:32.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:15:32.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:15:13', tmtdew=47.25, humidity=3.62, cloud=0.0, wind=34.62, temperature=26.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:14:38.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:15:32.583 [DEBUG] [Thread-117250] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:15:32.657 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:15:32.673 [DEBUG] [Thread-117253] [transport.py] [_log()] starting thread (client mode): 0x11781de0
2025-11-03T14:15:32.673 [DEBUG] [Thread-117253] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:15:32.691 [DEBUG] [Thread-117253] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:15:32.691 [INFO] [Thread-117253] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:15:32.700 [DEBUG] [Thread-117253] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:15:32.700 [DEBUG] [Thread-117253] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:15:32.700 [DEBUG] [Thread-117253] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:15:32.700 [DEBUG] [Thread-117253] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:15:32.700 [DEBUG] [Thread-117253] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:15:32.700 [DEBUG] [Thread-117253] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:15:32.700 [DEBUG] [Thread-117253] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:15:32.700 [DEBUG] [Thread-117253] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:15:32.700 [DEBUG] [Thread-117253] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:15:32.701 [DEBUG] [Thread-117253] [transport.py] [_log()] client lang: <none>
2025-11-03T14:15:32.701 [DEBUG] [Thread-117253] [transport.py] [_log()] server lang: <none>
2025-11-03T14:15:32.701 [DEBUG] [Thread-117253] [transport.py] [_log()] kex follows: False
2025-11-03T14:15:32.701 [DEBUG] [Thread-117253] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:15:32.701 [DEBUG] [Thread-117253] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:15:32.701 [DEBUG] [Thread-117253] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:15:32.701 [DEBUG] [Thread-117253] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:15:32.701 [DEBUG] [Thread-117253] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:15:32.701 [DEBUG] [Thread-117253] [transport.py] [_log()] Compression: none
2025-11-03T14:15:32.701 [DEBUG] [Thread-117253] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:15:32.758 [DEBUG] [Thread-117253] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:15:32.758 [DEBUG] [Thread-117253] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:15:32.758 [DEBUG] [Thread-117253] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:15:32.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:15:32.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:15:32.816 [DEBUG] [Thread-117253] [transport.py] [_log()] userauth is OK
2025-11-03T14:15:32.816 [DEBUG] [Thread-117253] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:15:32.816 [DEBUG] [Thread-117253] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:15:32.816 [DEBUG] [Thread-117253] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:15:32.816 [DEBUG] [Thread-117253] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:15:32.831 [INFO] [Thread-117253] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:15:32.831 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:15:32.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:15:33.695 [DEBUG] [Thread-117253] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:15:33.696 [DEBUG] [Thread-117253] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:15:33.743 [DEBUG] [Thread-117253] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:15:33.743 [DEBUG] [Thread-117253] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:15:33.751 [DEBUG] [Thread-117253] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:15:33.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:15:33.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:15:33.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:15:33.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:15:33.775 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:15:33.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:15:33.783 [DEBUG] [Thread-117253] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:15:44.496 [DEBUG] [Thread-117255 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:15:55.770 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:15:55.771 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:15:59.549 [DEBUG] [Thread-117256 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:16:03.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:16:03.806 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:16:03.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:16:04.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 15, 45), 47.57, 3.11, 0.0, 34.42, 26.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:16:04.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:15:45
2025-11-03T14:16:04.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:16:04.835 [DEBUG] [Thread-117257] [transport.py] [_log()] starting thread (client mode): 0x11798bb0
2025-11-03T14:16:04.835 [DEBUG] [Thread-117257] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:16:04.856 [DEBUG] [Thread-117257] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:16:04.856 [INFO] [Thread-117257] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:16:04.857 [DEBUG] [Thread-117257] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:16:04.858 [DEBUG] [Thread-117257] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:16:04.858 [DEBUG] [Thread-117257] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:16:04.858 [DEBUG] [Thread-117257] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:16:04.858 [DEBUG] [Thread-117257] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:16:04.858 [DEBUG] [Thread-117257] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:16:04.858 [DEBUG] [Thread-117257] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:16:04.858 [DEBUG] [Thread-117257] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:16:04.858 [DEBUG] [Thread-117257] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:16:04.858 [DEBUG] [Thread-117257] [transport.py] [_log()] client lang: <none>
2025-11-03T14:16:04.858 [DEBUG] [Thread-117257] [transport.py] [_log()] server lang: <none>
2025-11-03T14:16:04.858 [DEBUG] [Thread-117257] [transport.py] [_log()] kex follows: False
2025-11-03T14:16:04.858 [DEBUG] [Thread-117257] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:16:04.859 [DEBUG] [Thread-117257] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:16:04.859 [DEBUG] [Thread-117257] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:16:04.859 [DEBUG] [Thread-117257] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:16:04.859 [DEBUG] [Thread-117257] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:16:04.859 [DEBUG] [Thread-117257] [transport.py] [_log()] Compression: none
2025-11-03T14:16:04.859 [DEBUG] [Thread-117257] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:16:04.874 [DEBUG] [Thread-117257] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:16:04.875 [DEBUG] [Thread-117257] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:16:04.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:16:04.876 [DEBUG] [Thread-117257] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:16:04.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:16:04.878 [DEBUG] [Thread-117257] [transport.py] [_log()] userauth is OK
2025-11-03T14:16:04.879 [DEBUG] [Thread-117257] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:16:04.879 [DEBUG] [Thread-117257] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:16:04.879 [DEBUG] [Thread-117257] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:16:04.879 [DEBUG] [Thread-117257] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:16:04.901 [INFO] [Thread-117257] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:16:04.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:16:05.660 [DEBUG] [Thread-117257] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:16:05.660 [DEBUG] [Thread-117257] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:16:05.661 [DEBUG] [Thread-117257] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:16:05.702 [DEBUG] [Thread-117257] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:16:05.702 [DEBUG] [Thread-117257] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:16:05.705 [DEBUG] [Thread-117257] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:16:05.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:16:05.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:16:05.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:16:05.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:16:05.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:16:05.734 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:16:05.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:16:05.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:16:05.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:16:05.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.510867 -999.00  +25.60  29.27      8  -11.00 1 1 1 1 1   888    0 36.84 15.52 ----- 33.8 29.3 345.2 49.5 30.7 -31.9 30.0 -32.0 30.9 -30.6 31.5 -30.7
2025-11-03T14:16:05.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:16:05.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:16:05.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.510867
2025-11-03T14:16:05.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:16:05.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:16:05.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:16:05.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:16:05.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:16:05.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:15:45', tmtdew=47.57, humidity=3.11, cloud=0.0, wind=34.42, temperature=26.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:15:38.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:16:05.736 [DEBUG] [Thread-117257] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:16:05.811 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:16:05.823 [DEBUG] [Thread-117260] [transport.py] [_log()] starting thread (client mode): 0xed4c970
2025-11-03T14:16:05.823 [DEBUG] [Thread-117260] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:16:05.838 [DEBUG] [Thread-117260] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:16:05.838 [INFO] [Thread-117260] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:16:05.846 [DEBUG] [Thread-117260] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:16:05.846 [DEBUG] [Thread-117260] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:16:05.846 [DEBUG] [Thread-117260] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:16:05.846 [DEBUG] [Thread-117260] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:16:05.846 [DEBUG] [Thread-117260] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:16:05.846 [DEBUG] [Thread-117260] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:16:05.846 [DEBUG] [Thread-117260] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:16:05.846 [DEBUG] [Thread-117260] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:16:05.846 [DEBUG] [Thread-117260] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:16:05.847 [DEBUG] [Thread-117260] [transport.py] [_log()] client lang: <none>
2025-11-03T14:16:05.847 [DEBUG] [Thread-117260] [transport.py] [_log()] server lang: <none>
2025-11-03T14:16:05.847 [DEBUG] [Thread-117260] [transport.py] [_log()] kex follows: False
2025-11-03T14:16:05.847 [DEBUG] [Thread-117260] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:16:05.847 [DEBUG] [Thread-117260] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:16:05.847 [DEBUG] [Thread-117260] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:16:05.847 [DEBUG] [Thread-117260] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:16:05.847 [DEBUG] [Thread-117260] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:16:05.847 [DEBUG] [Thread-117260] [transport.py] [_log()] Compression: none
2025-11-03T14:16:05.847 [DEBUG] [Thread-117260] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:16:05.917 [DEBUG] [Thread-117260] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:16:05.918 [DEBUG] [Thread-117260] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:16:05.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:16:05.918 [DEBUG] [Thread-117260] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:16:05.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:16:05.975 [DEBUG] [Thread-117260] [transport.py] [_log()] userauth is OK
2025-11-03T14:16:05.975 [DEBUG] [Thread-117260] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:16:05.976 [DEBUG] [Thread-117260] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:16:05.976 [DEBUG] [Thread-117260] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:16:05.976 [DEBUG] [Thread-117260] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:16:05.995 [INFO] [Thread-117260] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:16:05.995 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:16:05.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:16:06.892 [DEBUG] [Thread-117260] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:16:06.892 [DEBUG] [Thread-117260] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:16:06.939 [DEBUG] [Thread-117260] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:16:06.939 [DEBUG] [Thread-117260] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:16:06.948 [DEBUG] [Thread-117260] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:16:06.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:16:06.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:16:06.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:16:06.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:16:06.972 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:16:06.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:16:06.979 [DEBUG] [Thread-117260] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:16:10.022 [DEBUG] [Thread-117262 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:16:14.577 [DEBUG] [Thread-117263 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:16:29.645 [DEBUG] [Thread-117264 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:16:36.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:16:36.979 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:16:36.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:16:37.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 16, 17), 47.36, 3.15, 0.0, 30.63, 26.26, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:16:37.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:16:17
2025-11-03T14:16:37.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:16:37.979 [DEBUG] [Thread-117265] [transport.py] [_log()] starting thread (client mode): 0xedd7e20
2025-11-03T14:16:37.979 [DEBUG] [Thread-117265] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:16:37.999 [DEBUG] [Thread-117265] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:16:37.999 [INFO] [Thread-117265] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:16:38.003 [DEBUG] [Thread-117265] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:16:38.003 [DEBUG] [Thread-117265] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:16:38.003 [DEBUG] [Thread-117265] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:16:38.003 [DEBUG] [Thread-117265] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:16:38.003 [DEBUG] [Thread-117265] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:16:38.003 [DEBUG] [Thread-117265] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:16:38.003 [DEBUG] [Thread-117265] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:16:38.003 [DEBUG] [Thread-117265] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:16:38.003 [DEBUG] [Thread-117265] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:16:38.003 [DEBUG] [Thread-117265] [transport.py] [_log()] client lang: <none>
2025-11-03T14:16:38.003 [DEBUG] [Thread-117265] [transport.py] [_log()] server lang: <none>
2025-11-03T14:16:38.003 [DEBUG] [Thread-117265] [transport.py] [_log()] kex follows: False
2025-11-03T14:16:38.003 [DEBUG] [Thread-117265] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:16:38.003 [DEBUG] [Thread-117265] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:16:38.003 [DEBUG] [Thread-117265] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:16:38.003 [DEBUG] [Thread-117265] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:16:38.003 [DEBUG] [Thread-117265] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:16:38.003 [DEBUG] [Thread-117265] [transport.py] [_log()] Compression: none
2025-11-03T14:16:38.003 [DEBUG] [Thread-117265] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:16:38.012 [DEBUG] [Thread-117265] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:16:38.012 [DEBUG] [Thread-117265] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:16:38.013 [DEBUG] [Thread-117265] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:16:38.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:16:38.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:16:38.057 [DEBUG] [Thread-117265] [transport.py] [_log()] userauth is OK
2025-11-03T14:16:38.057 [DEBUG] [Thread-117265] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:16:38.057 [DEBUG] [Thread-117265] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:16:38.057 [DEBUG] [Thread-117265] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:16:38.057 [DEBUG] [Thread-117265] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:16:38.079 [INFO] [Thread-117265] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:16:38.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:16:38.705 [DEBUG] [Thread-117265] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:16:38.705 [DEBUG] [Thread-117265] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:16:38.705 [DEBUG] [Thread-117265] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:16:38.746 [DEBUG] [Thread-117265] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:16:38.746 [DEBUG] [Thread-117265] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:16:38.749 [DEBUG] [Thread-117265] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:16:38.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:16:38.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:16:38.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:16:38.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:16:38.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:16:38.771 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:16:38.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:16:38.772 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:16:38.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:16:38.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.511214 -999.00  +26.10  37.30      8  -10.70 1 1 2 1 1   888    0 36.56 16.34 ----- 41.0 37.3 325.8 41.4 30.7 -32.4 30.1 -30.5 30.9 -30.8 31.4 -30.4
2025-11-03T14:16:38.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:16:38.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:16:38.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.511214
2025-11-03T14:16:38.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:16:38.773 [DEBUG] [Thread-117265] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:16:38.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:16:38.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:16:38.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:16:38.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:16:38.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:16:17', tmtdew=47.36, humidity=3.15, cloud=0.0, wind=30.63, temperature=26.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:16:08.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:16:38.863 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:16:38.875 [DEBUG] [Thread-117268] [transport.py] [_log()] starting thread (client mode): 0x11799630
2025-11-03T14:16:38.875 [DEBUG] [Thread-117268] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:16:38.890 [DEBUG] [Thread-117268] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:16:38.890 [INFO] [Thread-117268] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:16:38.898 [DEBUG] [Thread-117268] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:16:38.898 [DEBUG] [Thread-117268] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:16:38.898 [DEBUG] [Thread-117268] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:16:38.898 [DEBUG] [Thread-117268] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:16:38.899 [DEBUG] [Thread-117268] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:16:38.899 [DEBUG] [Thread-117268] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:16:38.899 [DEBUG] [Thread-117268] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:16:38.899 [DEBUG] [Thread-117268] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:16:38.899 [DEBUG] [Thread-117268] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:16:38.899 [DEBUG] [Thread-117268] [transport.py] [_log()] client lang: <none>
2025-11-03T14:16:38.899 [DEBUG] [Thread-117268] [transport.py] [_log()] server lang: <none>
2025-11-03T14:16:38.899 [DEBUG] [Thread-117268] [transport.py] [_log()] kex follows: False
2025-11-03T14:16:38.899 [DEBUG] [Thread-117268] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:16:38.899 [DEBUG] [Thread-117268] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:16:38.899 [DEBUG] [Thread-117268] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:16:38.899 [DEBUG] [Thread-117268] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:16:38.899 [DEBUG] [Thread-117268] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:16:38.899 [DEBUG] [Thread-117268] [transport.py] [_log()] Compression: none
2025-11-03T14:16:38.899 [DEBUG] [Thread-117268] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:16:38.955 [DEBUG] [Thread-117268] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:16:38.955 [DEBUG] [Thread-117268] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:16:38.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:16:38.956 [DEBUG] [Thread-117268] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:16:38.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:16:39.011 [DEBUG] [Thread-117268] [transport.py] [_log()] userauth is OK
2025-11-03T14:16:39.011 [DEBUG] [Thread-117268] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:16:39.011 [DEBUG] [Thread-117268] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:16:39.011 [DEBUG] [Thread-117268] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:16:39.012 [DEBUG] [Thread-117268] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:16:39.031 [INFO] [Thread-117268] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:16:39.032 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:16:39.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:16:39.844 [DEBUG] [Thread-117268] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:16:39.844 [DEBUG] [Thread-117268] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:16:39.891 [DEBUG] [Thread-117268] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:16:39.892 [DEBUG] [Thread-117268] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:16:39.901 [DEBUG] [Thread-117268] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:16:39.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:16:39.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:16:39.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:16:39.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:16:39.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:16:39.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:16:39.939 [DEBUG] [Thread-117268] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:16:44.677 [DEBUG] [Thread-117270 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:16:55.911 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:16:55.912 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:16:59.725 [DEBUG] [Thread-117271 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:17:09.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:17:09.962 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:17:09.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:17:10.069 [DEBUG] [Thread-117272 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:17:10.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 16, 50), 47.53, 3.2, 0.0, 37.26, 26.13, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:17:10.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:16:50
2025-11-03T14:17:10.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:17:10.957 [DEBUG] [Thread-117273] [transport.py] [_log()] starting thread (client mode): 0x81bb9a0
2025-11-03T14:17:10.957 [DEBUG] [Thread-117273] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:17:10.980 [DEBUG] [Thread-117273] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:17:10.980 [INFO] [Thread-117273] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:17:10.983 [DEBUG] [Thread-117273] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:17:10.983 [DEBUG] [Thread-117273] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:17:10.983 [DEBUG] [Thread-117273] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:17:10.984 [DEBUG] [Thread-117273] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:17:10.984 [DEBUG] [Thread-117273] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:17:10.984 [DEBUG] [Thread-117273] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:17:10.984 [DEBUG] [Thread-117273] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:17:10.984 [DEBUG] [Thread-117273] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:17:10.984 [DEBUG] [Thread-117273] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:17:10.984 [DEBUG] [Thread-117273] [transport.py] [_log()] client lang: <none>
2025-11-03T14:17:10.984 [DEBUG] [Thread-117273] [transport.py] [_log()] server lang: <none>
2025-11-03T14:17:10.984 [DEBUG] [Thread-117273] [transport.py] [_log()] kex follows: False
2025-11-03T14:17:10.984 [DEBUG] [Thread-117273] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:17:10.984 [DEBUG] [Thread-117273] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:17:10.984 [DEBUG] [Thread-117273] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:17:10.984 [DEBUG] [Thread-117273] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:17:10.984 [DEBUG] [Thread-117273] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:17:10.984 [DEBUG] [Thread-117273] [transport.py] [_log()] Compression: none
2025-11-03T14:17:10.984 [DEBUG] [Thread-117273] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:17:11.002 [DEBUG] [Thread-117273] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:17:11.003 [DEBUG] [Thread-117273] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:17:11.003 [DEBUG] [Thread-117273] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:17:11.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:17:11.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:17:11.006 [DEBUG] [Thread-117273] [transport.py] [_log()] userauth is OK
2025-11-03T14:17:11.006 [DEBUG] [Thread-117273] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:17:11.006 [DEBUG] [Thread-117273] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:17:11.006 [DEBUG] [Thread-117273] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:17:11.006 [DEBUG] [Thread-117273] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:17:11.028 [INFO] [Thread-117273] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:17:11.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:17:11.814 [DEBUG] [Thread-117273] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:17:11.814 [DEBUG] [Thread-117273] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:17:11.814 [DEBUG] [Thread-117273] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:17:11.854 [DEBUG] [Thread-117273] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:17:11.854 [DEBUG] [Thread-117273] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:17:11.857 [DEBUG] [Thread-117273] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:17:11.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:17:11.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:17:11.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:17:11.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:17:11.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:17:11.874 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:17:11.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:17:11.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:17:11.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:17:11.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.511562 -999.00  +26.40  29.46      7  -10.70 1 1 1 1 1   888    0 36.68 16.76 ----- 20.2 29.5 331.0 43.3 30.7 -31.8 30.1 -29.8 30.9 -29.8 31.5 -29.7
2025-11-03T14:17:11.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:17:11.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:17:11.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.511562
2025-11-03T14:17:11.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:17:11.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:17:11.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:17:11.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:17:11.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:17:11.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:16:50', tmtdew=47.53, humidity=3.2, cloud=0.0, wind=37.26, temperature=26.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:16:38.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:17:11.883 [DEBUG] [Thread-117273] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:17:11.956 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:17:11.967 [DEBUG] [Thread-117276] [transport.py] [_log()] starting thread (client mode): 0xed20370
2025-11-03T14:17:11.967 [DEBUG] [Thread-117276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:17:11.982 [DEBUG] [Thread-117276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:17:11.982 [INFO] [Thread-117276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:17:11.990 [DEBUG] [Thread-117276] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:17:11.990 [DEBUG] [Thread-117276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:17:11.990 [DEBUG] [Thread-117276] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:17:11.990 [DEBUG] [Thread-117276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:17:11.990 [DEBUG] [Thread-117276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:17:11.990 [DEBUG] [Thread-117276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:17:11.990 [DEBUG] [Thread-117276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:17:11.990 [DEBUG] [Thread-117276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:17:11.990 [DEBUG] [Thread-117276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:17:11.990 [DEBUG] [Thread-117276] [transport.py] [_log()] client lang: <none>
2025-11-03T14:17:11.990 [DEBUG] [Thread-117276] [transport.py] [_log()] server lang: <none>
2025-11-03T14:17:11.990 [DEBUG] [Thread-117276] [transport.py] [_log()] kex follows: False
2025-11-03T14:17:11.990 [DEBUG] [Thread-117276] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:17:11.990 [DEBUG] [Thread-117276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:17:11.990 [DEBUG] [Thread-117276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:17:11.990 [DEBUG] [Thread-117276] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:17:11.990 [DEBUG] [Thread-117276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:17:11.990 [DEBUG] [Thread-117276] [transport.py] [_log()] Compression: none
2025-11-03T14:17:11.991 [DEBUG] [Thread-117276] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:17:12.046 [DEBUG] [Thread-117276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:17:12.047 [DEBUG] [Thread-117276] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:17:12.047 [DEBUG] [Thread-117276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:17:12.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:17:12.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:17:12.104 [DEBUG] [Thread-117276] [transport.py] [_log()] userauth is OK
2025-11-03T14:17:12.104 [DEBUG] [Thread-117276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:17:12.104 [DEBUG] [Thread-117276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:17:12.104 [DEBUG] [Thread-117276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:17:12.104 [DEBUG] [Thread-117276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:17:12.119 [INFO] [Thread-117276] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:17:12.119 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:17:12.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:17:12.979 [DEBUG] [Thread-117276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:17:12.979 [DEBUG] [Thread-117276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:17:13.027 [DEBUG] [Thread-117276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:17:13.027 [DEBUG] [Thread-117276] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:17:13.037 [DEBUG] [Thread-117276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:17:13.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:17:13.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:17:13.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:17:13.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:17:13.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:17:13.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:17:13.075 [DEBUG] [Thread-117276] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:17:14.771 [DEBUG] [Thread-117278 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:17:29.817 [DEBUG] [Thread-117279 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:17:43.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:17:43.098 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:17:43.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:17:43.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 17, 22), 47.11, 3.32, 0.0, 31.78, 25.99, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:17:43.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:17:22
2025-11-03T14:17:43.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:17:44.044 [DEBUG] [Thread-117280] [transport.py] [_log()] starting thread (client mode): 0x117bd5a0
2025-11-03T14:17:44.044 [DEBUG] [Thread-117280] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:17:44.064 [DEBUG] [Thread-117280] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:17:44.064 [INFO] [Thread-117280] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:17:44.065 [DEBUG] [Thread-117280] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:17:44.065 [DEBUG] [Thread-117280] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:17:44.065 [DEBUG] [Thread-117280] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:17:44.065 [DEBUG] [Thread-117280] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:17:44.065 [DEBUG] [Thread-117280] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:17:44.065 [DEBUG] [Thread-117280] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:17:44.065 [DEBUG] [Thread-117280] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:17:44.065 [DEBUG] [Thread-117280] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:17:44.065 [DEBUG] [Thread-117280] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:17:44.065 [DEBUG] [Thread-117280] [transport.py] [_log()] client lang: <none>
2025-11-03T14:17:44.065 [DEBUG] [Thread-117280] [transport.py] [_log()] server lang: <none>
2025-11-03T14:17:44.065 [DEBUG] [Thread-117280] [transport.py] [_log()] kex follows: False
2025-11-03T14:17:44.065 [DEBUG] [Thread-117280] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:17:44.065 [DEBUG] [Thread-117280] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:17:44.065 [DEBUG] [Thread-117280] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:17:44.065 [DEBUG] [Thread-117280] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:17:44.065 [DEBUG] [Thread-117280] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:17:44.065 [DEBUG] [Thread-117280] [transport.py] [_log()] Compression: none
2025-11-03T14:17:44.065 [DEBUG] [Thread-117280] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:17:44.078 [DEBUG] [Thread-117280] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:17:44.078 [DEBUG] [Thread-117280] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:17:44.079 [DEBUG] [Thread-117280] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:17:44.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:17:44.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:17:44.081 [DEBUG] [Thread-117280] [transport.py] [_log()] userauth is OK
2025-11-03T14:17:44.081 [DEBUG] [Thread-117280] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:17:44.081 [DEBUG] [Thread-117280] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:17:44.081 [DEBUG] [Thread-117280] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:17:44.081 [DEBUG] [Thread-117280] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:17:44.106 [INFO] [Thread-117280] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:17:44.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:17:44.758 [DEBUG] [Thread-117280] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:17:44.758 [DEBUG] [Thread-117280] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:17:44.759 [DEBUG] [Thread-117280] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:17:44.799 [DEBUG] [Thread-117280] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:17:44.799 [DEBUG] [Thread-117280] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:17:44.801 [DEBUG] [Thread-117280] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:17:44.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:17:44.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:17:44.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:17:44.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:17:44.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:17:44.821 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:17:44.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:17:44.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:17:44.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:17:44.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.511909 -999.00  +26.40  31.62      8  -10.40 1 1 2 1 1   888    0 36.44 17.54 ----- 30.3 31.6 338.9 42.1 30.7 -31.3 30.1 -31.3 31.0 -32.0 31.6 -29.9
2025-11-03T14:17:44.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:17:44.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:17:44.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.511909
2025-11-03T14:17:44.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:17:44.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:17:44.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:17:44.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:17:44.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:17:44.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:17:22', tmtdew=47.11, humidity=3.32, cloud=0.0, wind=31.78, temperature=25.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:17:08.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:17:44.822 [DEBUG] [Thread-117280] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:17:44.850 [DEBUG] [Thread-117283 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:17:44.894 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:17:44.905 [DEBUG] [Thread-117284] [transport.py] [_log()] starting thread (client mode): 0x117be3e0
2025-11-03T14:17:44.905 [DEBUG] [Thread-117284] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:17:44.919 [DEBUG] [Thread-117284] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:17:44.919 [INFO] [Thread-117284] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:17:44.927 [DEBUG] [Thread-117284] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:17:44.927 [DEBUG] [Thread-117284] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:17:44.927 [DEBUG] [Thread-117284] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:17:44.927 [DEBUG] [Thread-117284] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:17:44.927 [DEBUG] [Thread-117284] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:17:44.927 [DEBUG] [Thread-117284] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:17:44.927 [DEBUG] [Thread-117284] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:17:44.927 [DEBUG] [Thread-117284] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:17:44.927 [DEBUG] [Thread-117284] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:17:44.927 [DEBUG] [Thread-117284] [transport.py] [_log()] client lang: <none>
2025-11-03T14:17:44.927 [DEBUG] [Thread-117284] [transport.py] [_log()] server lang: <none>
2025-11-03T14:17:44.927 [DEBUG] [Thread-117284] [transport.py] [_log()] kex follows: False
2025-11-03T14:17:44.927 [DEBUG] [Thread-117284] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:17:44.928 [DEBUG] [Thread-117284] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:17:44.928 [DEBUG] [Thread-117284] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:17:44.928 [DEBUG] [Thread-117284] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:17:44.928 [DEBUG] [Thread-117284] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:17:44.928 [DEBUG] [Thread-117284] [transport.py] [_log()] Compression: none
2025-11-03T14:17:44.928 [DEBUG] [Thread-117284] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:17:44.984 [DEBUG] [Thread-117284] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:17:44.985 [DEBUG] [Thread-117284] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:17:44.985 [DEBUG] [Thread-117284] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:17:44.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:17:44.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:17:45.041 [DEBUG] [Thread-117284] [transport.py] [_log()] userauth is OK
2025-11-03T14:17:45.041 [DEBUG] [Thread-117284] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:17:45.041 [DEBUG] [Thread-117284] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:17:45.041 [DEBUG] [Thread-117284] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:17:45.041 [DEBUG] [Thread-117284] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:17:45.064 [INFO] [Thread-117284] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:17:45.064 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:17:45.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:17:45.902 [DEBUG] [Thread-117284] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:17:45.902 [DEBUG] [Thread-117284] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:17:45.950 [DEBUG] [Thread-117284] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:17:45.951 [DEBUG] [Thread-117284] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:17:45.959 [DEBUG] [Thread-117284] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:17:45.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:17:45.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:17:45.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:17:45.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:17:45.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:17:45.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:17:45.992 [DEBUG] [Thread-117284] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:17:56.052 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:17:56.053 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:17:59.895 [DEBUG] [Thread-117286 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:18:10.135 [DEBUG] [Thread-117287 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:18:14.929 [DEBUG] [Thread-117288 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:18:16.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:18:16.015 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:18:16.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:18:16.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 17, 54), 46.02, 3.95, 0.0, 31.35, 25.94, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:18:16.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:17:54
2025-11-03T14:18:16.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:18:16.958 [DEBUG] [Thread-117289] [transport.py] [_log()] starting thread (client mode): 0x117bd210
2025-11-03T14:18:16.958 [DEBUG] [Thread-117289] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:18:16.978 [DEBUG] [Thread-117289] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:18:16.979 [INFO] [Thread-117289] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:18:16.982 [DEBUG] [Thread-117289] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:18:16.982 [DEBUG] [Thread-117289] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:18:16.982 [DEBUG] [Thread-117289] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:18:16.982 [DEBUG] [Thread-117289] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:18:16.982 [DEBUG] [Thread-117289] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:18:16.982 [DEBUG] [Thread-117289] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:18:16.982 [DEBUG] [Thread-117289] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:18:16.982 [DEBUG] [Thread-117289] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:18:16.982 [DEBUG] [Thread-117289] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:18:16.982 [DEBUG] [Thread-117289] [transport.py] [_log()] client lang: <none>
2025-11-03T14:18:16.983 [DEBUG] [Thread-117289] [transport.py] [_log()] server lang: <none>
2025-11-03T14:18:16.983 [DEBUG] [Thread-117289] [transport.py] [_log()] kex follows: False
2025-11-03T14:18:16.983 [DEBUG] [Thread-117289] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:18:16.983 [DEBUG] [Thread-117289] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:18:16.983 [DEBUG] [Thread-117289] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:18:16.983 [DEBUG] [Thread-117289] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:18:16.983 [DEBUG] [Thread-117289] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:18:16.983 [DEBUG] [Thread-117289] [transport.py] [_log()] Compression: none
2025-11-03T14:18:16.983 [DEBUG] [Thread-117289] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:18:17.001 [DEBUG] [Thread-117289] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:18:17.001 [DEBUG] [Thread-117289] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:18:17.002 [DEBUG] [Thread-117289] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:18:17.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:18:17.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:18:17.004 [DEBUG] [Thread-117289] [transport.py] [_log()] userauth is OK
2025-11-03T14:18:17.004 [DEBUG] [Thread-117289] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:18:17.005 [DEBUG] [Thread-117289] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:18:17.005 [DEBUG] [Thread-117289] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:18:17.005 [DEBUG] [Thread-117289] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:18:17.023 [INFO] [Thread-117289] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:18:17.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:18:17.837 [DEBUG] [Thread-117289] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:18:17.837 [DEBUG] [Thread-117289] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:18:17.838 [DEBUG] [Thread-117289] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:18:17.878 [DEBUG] [Thread-117289] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:18:17.878 [DEBUG] [Thread-117289] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:18:17.880 [DEBUG] [Thread-117289] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:18:17.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:18:17.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:18:17.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:18:17.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:18:17.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:18:17.899 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:18:17.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:18:17.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:18:17.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:18:17.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.512256 -999.00  +26.10  26.05      8  -10.20 1 1 1 1 1   888    0 36.77 16.86 ----- 22.9 26.1 336.6 38.0 30.7 -32.4 30.0 -32.5 30.9 -30.0 31.3 -30.9
2025-11-03T14:18:17.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:18:17.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:18:17.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.512256
2025-11-03T14:18:17.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:18:17.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:18:17.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:18:17.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:18:17.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:18:17.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:17:54', tmtdew=46.02, humidity=3.95, cloud=0.0, wind=31.35, temperature=25.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:17:38.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:18:17.901 [DEBUG] [Thread-117289] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:18:17.973 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:18:17.988 [DEBUG] [Thread-117292] [transport.py] [_log()] starting thread (client mode): 0xed22770
2025-11-03T14:18:17.988 [DEBUG] [Thread-117292] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:18:18.006 [DEBUG] [Thread-117292] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:18:18.006 [INFO] [Thread-117292] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:18:18.013 [DEBUG] [Thread-117292] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:18:18.014 [DEBUG] [Thread-117292] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:18:18.014 [DEBUG] [Thread-117292] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:18:18.014 [DEBUG] [Thread-117292] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:18:18.014 [DEBUG] [Thread-117292] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:18:18.014 [DEBUG] [Thread-117292] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:18:18.014 [DEBUG] [Thread-117292] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:18:18.014 [DEBUG] [Thread-117292] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:18:18.014 [DEBUG] [Thread-117292] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:18:18.014 [DEBUG] [Thread-117292] [transport.py] [_log()] client lang: <none>
2025-11-03T14:18:18.014 [DEBUG] [Thread-117292] [transport.py] [_log()] server lang: <none>
2025-11-03T14:18:18.014 [DEBUG] [Thread-117292] [transport.py] [_log()] kex follows: False
2025-11-03T14:18:18.014 [DEBUG] [Thread-117292] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:18:18.014 [DEBUG] [Thread-117292] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:18:18.014 [DEBUG] [Thread-117292] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:18:18.014 [DEBUG] [Thread-117292] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:18:18.014 [DEBUG] [Thread-117292] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:18:18.014 [DEBUG] [Thread-117292] [transport.py] [_log()] Compression: none
2025-11-03T14:18:18.014 [DEBUG] [Thread-117292] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:18:18.072 [DEBUG] [Thread-117292] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:18:18.072 [DEBUG] [Thread-117292] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:18:18.073 [DEBUG] [Thread-117292] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:18:18.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:18:18.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:18:18.129 [DEBUG] [Thread-117292] [transport.py] [_log()] userauth is OK
2025-11-03T14:18:18.129 [DEBUG] [Thread-117292] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:18:18.129 [DEBUG] [Thread-117292] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:18:18.129 [DEBUG] [Thread-117292] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:18:18.129 [DEBUG] [Thread-117292] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:18:18.143 [INFO] [Thread-117292] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:18:18.143 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:18:18.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:18:18.989 [DEBUG] [Thread-117292] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:18:18.989 [DEBUG] [Thread-117292] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:18:19.037 [DEBUG] [Thread-117292] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:18:19.037 [DEBUG] [Thread-117292] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:18:19.046 [DEBUG] [Thread-117292] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:18:19.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:18:19.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:18:19.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:18:19.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:18:19.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:18:19.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:18:19.078 [DEBUG] [Thread-117292] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:18:29.963 [DEBUG] [Thread-117294 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:18:45.031 [DEBUG] [Thread-117295 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:18:49.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:18:49.101 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:18:49.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:18:49.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 18, 26), 45.74, 4.05, 0.0, 30.65, 25.99, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:18:49.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:18:26
2025-11-03T14:18:49.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:18:50.047 [DEBUG] [Thread-117296] [transport.py] [_log()] starting thread (client mode): 0xed23070
2025-11-03T14:18:50.047 [DEBUG] [Thread-117296] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:18:50.068 [DEBUG] [Thread-117296] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:18:50.068 [INFO] [Thread-117296] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:18:50.071 [DEBUG] [Thread-117296] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:18:50.071 [DEBUG] [Thread-117296] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:18:50.071 [DEBUG] [Thread-117296] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:18:50.071 [DEBUG] [Thread-117296] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:18:50.071 [DEBUG] [Thread-117296] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:18:50.071 [DEBUG] [Thread-117296] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:18:50.071 [DEBUG] [Thread-117296] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:18:50.071 [DEBUG] [Thread-117296] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:18:50.071 [DEBUG] [Thread-117296] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:18:50.071 [DEBUG] [Thread-117296] [transport.py] [_log()] client lang: <none>
2025-11-03T14:18:50.071 [DEBUG] [Thread-117296] [transport.py] [_log()] server lang: <none>
2025-11-03T14:18:50.071 [DEBUG] [Thread-117296] [transport.py] [_log()] kex follows: False
2025-11-03T14:18:50.071 [DEBUG] [Thread-117296] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:18:50.071 [DEBUG] [Thread-117296] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:18:50.071 [DEBUG] [Thread-117296] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:18:50.071 [DEBUG] [Thread-117296] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:18:50.071 [DEBUG] [Thread-117296] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:18:50.072 [DEBUG] [Thread-117296] [transport.py] [_log()] Compression: none
2025-11-03T14:18:50.072 [DEBUG] [Thread-117296] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:18:50.088 [DEBUG] [Thread-117296] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:18:50.088 [DEBUG] [Thread-117296] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:18:50.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:18:50.088 [DEBUG] [Thread-117296] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:18:50.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:18:50.089 [DEBUG] [Thread-117296] [transport.py] [_log()] userauth is OK
2025-11-03T14:18:50.089 [DEBUG] [Thread-117296] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:18:50.089 [DEBUG] [Thread-117296] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:18:50.089 [DEBUG] [Thread-117296] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:18:50.089 [DEBUG] [Thread-117296] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:18:50.099 [INFO] [Thread-117296] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:18:50.099 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:18:50.725 [DEBUG] [Thread-117296] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:18:50.725 [DEBUG] [Thread-117296] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:18:50.726 [DEBUG] [Thread-117296] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:18:50.768 [DEBUG] [Thread-117296] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:18:50.768 [DEBUG] [Thread-117296] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:18:50.771 [DEBUG] [Thread-117296] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:18:50.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:18:50.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:18:50.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:18:50.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:18:50.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:18:50.794 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:18:50.794 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:18:50.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:18:50.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:18:50.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.512603 -999.00  +25.60  19.62      8  -10.10 1 1 1 1 1   888    0 37.02 13.55 ----- 17.9 19.6 357.6 35.0 30.6 -31.6 30.1 -31.5 30.9 -29.1 31.4 -29.5
2025-11-03T14:18:50.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:18:50.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:18:50.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.512603
2025-11-03T14:18:50.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:18:50.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:18:50.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:18:50.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:18:50.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:18:50.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:18:26', tmtdew=45.74, humidity=4.05, cloud=0.0, wind=30.65, temperature=25.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:18:08.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:18:50.796 [DEBUG] [Thread-117296] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:18:50.874 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:18:50.885 [DEBUG] [Thread-117299] [transport.py] [_log()] starting thread (client mode): 0xed22560
2025-11-03T14:18:50.885 [DEBUG] [Thread-117299] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:18:50.899 [DEBUG] [Thread-117299] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:18:50.899 [INFO] [Thread-117299] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:18:50.909 [DEBUG] [Thread-117299] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:18:50.909 [DEBUG] [Thread-117299] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:18:50.909 [DEBUG] [Thread-117299] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:18:50.909 [DEBUG] [Thread-117299] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:18:50.909 [DEBUG] [Thread-117299] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:18:50.909 [DEBUG] [Thread-117299] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:18:50.909 [DEBUG] [Thread-117299] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:18:50.909 [DEBUG] [Thread-117299] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:18:50.909 [DEBUG] [Thread-117299] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:18:50.910 [DEBUG] [Thread-117299] [transport.py] [_log()] client lang: <none>
2025-11-03T14:18:50.910 [DEBUG] [Thread-117299] [transport.py] [_log()] server lang: <none>
2025-11-03T14:18:50.910 [DEBUG] [Thread-117299] [transport.py] [_log()] kex follows: False
2025-11-03T14:18:50.910 [DEBUG] [Thread-117299] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:18:50.910 [DEBUG] [Thread-117299] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:18:50.910 [DEBUG] [Thread-117299] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:18:50.910 [DEBUG] [Thread-117299] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:18:50.910 [DEBUG] [Thread-117299] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:18:50.910 [DEBUG] [Thread-117299] [transport.py] [_log()] Compression: none
2025-11-03T14:18:50.910 [DEBUG] [Thread-117299] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:18:50.965 [DEBUG] [Thread-117299] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:18:50.965 [DEBUG] [Thread-117299] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:18:50.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:18:50.966 [DEBUG] [Thread-117299] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:18:50.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:18:51.021 [DEBUG] [Thread-117299] [transport.py] [_log()] userauth is OK
2025-11-03T14:18:51.021 [DEBUG] [Thread-117299] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:18:51.021 [DEBUG] [Thread-117299] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:18:51.021 [DEBUG] [Thread-117299] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:18:51.021 [DEBUG] [Thread-117299] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:18:51.040 [INFO] [Thread-117299] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:18:51.040 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:18:51.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:18:51.904 [DEBUG] [Thread-117299] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:18:51.904 [DEBUG] [Thread-117299] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:18:51.951 [DEBUG] [Thread-117299] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:18:51.952 [DEBUG] [Thread-117299] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:18:51.961 [DEBUG] [Thread-117299] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:18:51.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:18:51.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:18:51.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:18:51.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:18:51.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:18:51.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:18:51.997 [DEBUG] [Thread-117299] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:18:56.202 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:18:56.203 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:19:00.059 [DEBUG] [Thread-117301 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:19:10.188 [DEBUG] [Thread-117302 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:19:15.100 [DEBUG] [Thread-117303 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:19:22.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:19:22.019 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:19:22.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:19:22.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 18, 59), 45.61, 4.02, 0.0, 28.12, 26.03, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:19:22.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:18:59
2025-11-03T14:19:22.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:19:23.063 [DEBUG] [Thread-117304] [transport.py] [_log()] starting thread (client mode): 0xed4e6b0
2025-11-03T14:19:23.063 [DEBUG] [Thread-117304] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:19:23.084 [DEBUG] [Thread-117304] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:19:23.084 [INFO] [Thread-117304] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:19:23.093 [DEBUG] [Thread-117304] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:19:23.093 [DEBUG] [Thread-117304] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:19:23.094 [DEBUG] [Thread-117304] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:19:23.094 [DEBUG] [Thread-117304] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:19:23.094 [DEBUG] [Thread-117304] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:19:23.094 [DEBUG] [Thread-117304] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:19:23.094 [DEBUG] [Thread-117304] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:19:23.094 [DEBUG] [Thread-117304] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:19:23.094 [DEBUG] [Thread-117304] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:19:23.094 [DEBUG] [Thread-117304] [transport.py] [_log()] client lang: <none>
2025-11-03T14:19:23.094 [DEBUG] [Thread-117304] [transport.py] [_log()] server lang: <none>
2025-11-03T14:19:23.094 [DEBUG] [Thread-117304] [transport.py] [_log()] kex follows: False
2025-11-03T14:19:23.094 [DEBUG] [Thread-117304] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:19:23.094 [DEBUG] [Thread-117304] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:19:23.094 [DEBUG] [Thread-117304] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:19:23.094 [DEBUG] [Thread-117304] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:19:23.094 [DEBUG] [Thread-117304] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:19:23.094 [DEBUG] [Thread-117304] [transport.py] [_log()] Compression: none
2025-11-03T14:19:23.094 [DEBUG] [Thread-117304] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:19:23.110 [DEBUG] [Thread-117304] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:19:23.110 [DEBUG] [Thread-117304] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:19:23.110 [DEBUG] [Thread-117304] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:19:23.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:19:23.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:19:23.111 [DEBUG] [Thread-117304] [transport.py] [_log()] userauth is OK
2025-11-03T14:19:23.111 [DEBUG] [Thread-117304] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:19:23.111 [DEBUG] [Thread-117304] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:19:23.111 [DEBUG] [Thread-117304] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:19:23.111 [DEBUG] [Thread-117304] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:19:23.122 [INFO] [Thread-117304] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:19:23.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:19:23.877 [DEBUG] [Thread-117304] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:19:23.877 [DEBUG] [Thread-117304] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:19:23.878 [DEBUG] [Thread-117304] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:19:23.918 [DEBUG] [Thread-117304] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:19:23.918 [DEBUG] [Thread-117304] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:19:23.921 [DEBUG] [Thread-117304] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:19:23.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:19:23.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:19:23.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:19:23.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:19:23.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:19:23.933 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:19:23.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:19:23.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:19:23.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:19:23.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.512950 -999.00  +25.80  16.70      8  -10.10 1 1 1 1 1   888    0 36.54 10.19 ----- 23.3 16.7 9.3 25.9 30.7 -30.5 30.1 -30.5 31.0 -28.7 31.4 -34.3
2025-11-03T14:19:23.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:19:23.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:19:23.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.512950
2025-11-03T14:19:23.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:19:23.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:19:23.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:19:23.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:19:23.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:19:23.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:18:59', tmtdew=45.61, humidity=4.02, cloud=0.0, wind=28.12, temperature=26.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:18:38.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:19:23.934 [DEBUG] [Thread-117304] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:19:24.007 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:19:24.024 [DEBUG] [Thread-117307] [transport.py] [_log()] starting thread (client mode): 0xed4dc60
2025-11-03T14:19:24.024 [DEBUG] [Thread-117307] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:19:24.045 [DEBUG] [Thread-117307] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:19:24.045 [INFO] [Thread-117307] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:19:24.055 [DEBUG] [Thread-117307] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:19:24.055 [DEBUG] [Thread-117307] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:19:24.055 [DEBUG] [Thread-117307] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:19:24.055 [DEBUG] [Thread-117307] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:19:24.055 [DEBUG] [Thread-117307] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:19:24.056 [DEBUG] [Thread-117307] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:19:24.056 [DEBUG] [Thread-117307] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:19:24.056 [DEBUG] [Thread-117307] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:19:24.056 [DEBUG] [Thread-117307] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:19:24.056 [DEBUG] [Thread-117307] [transport.py] [_log()] client lang: <none>
2025-11-03T14:19:24.056 [DEBUG] [Thread-117307] [transport.py] [_log()] server lang: <none>
2025-11-03T14:19:24.056 [DEBUG] [Thread-117307] [transport.py] [_log()] kex follows: False
2025-11-03T14:19:24.056 [DEBUG] [Thread-117307] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:19:24.056 [DEBUG] [Thread-117307] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:19:24.056 [DEBUG] [Thread-117307] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:19:24.056 [DEBUG] [Thread-117307] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:19:24.056 [DEBUG] [Thread-117307] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:19:24.056 [DEBUG] [Thread-117307] [transport.py] [_log()] Compression: none
2025-11-03T14:19:24.056 [DEBUG] [Thread-117307] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:19:24.108 [DEBUG] [Thread-117307] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:19:24.108 [DEBUG] [Thread-117307] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:19:24.109 [DEBUG] [Thread-117307] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:19:24.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:19:24.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:19:24.170 [DEBUG] [Thread-117307] [transport.py] [_log()] userauth is OK
2025-11-03T14:19:24.170 [DEBUG] [Thread-117307] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:19:24.170 [DEBUG] [Thread-117307] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:19:24.170 [DEBUG] [Thread-117307] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:19:24.170 [DEBUG] [Thread-117307] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:19:24.183 [INFO] [Thread-117307] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:19:24.184 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:19:24.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:19:25.027 [DEBUG] [Thread-117307] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:19:25.027 [DEBUG] [Thread-117307] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:19:25.075 [DEBUG] [Thread-117307] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:19:25.075 [DEBUG] [Thread-117307] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:19:25.085 [DEBUG] [Thread-117307] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:19:25.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:19:25.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:19:25.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:19:25.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:19:25.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:19:25.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:19:25.117 [DEBUG] [Thread-117307] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:19:30.132 [DEBUG] [Thread-117309 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:19:45.185 [DEBUG] [Thread-117310 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:19:55.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:19:55.140 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:19:55.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:19:55.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 19, 31), 45.56, 4.04, 0.0, 27.01, 25.99, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:19:55.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:19:31
2025-11-03T14:19:56.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:19:56.184 [DEBUG] [Thread-117311] [transport.py] [_log()] starting thread (client mode): 0x81b8760
2025-11-03T14:19:56.184 [DEBUG] [Thread-117311] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:19:56.189 [DEBUG] [Thread-117311] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:19:56.189 [INFO] [Thread-117311] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:19:56.192 [DEBUG] [Thread-117311] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:19:56.192 [DEBUG] [Thread-117311] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:19:56.192 [DEBUG] [Thread-117311] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:19:56.192 [DEBUG] [Thread-117311] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:19:56.192 [DEBUG] [Thread-117311] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:19:56.192 [DEBUG] [Thread-117311] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:19:56.192 [DEBUG] [Thread-117311] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:19:56.192 [DEBUG] [Thread-117311] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:19:56.192 [DEBUG] [Thread-117311] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:19:56.192 [DEBUG] [Thread-117311] [transport.py] [_log()] client lang: <none>
2025-11-03T14:19:56.192 [DEBUG] [Thread-117311] [transport.py] [_log()] server lang: <none>
2025-11-03T14:19:56.192 [DEBUG] [Thread-117311] [transport.py] [_log()] kex follows: False
2025-11-03T14:19:56.192 [DEBUG] [Thread-117311] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:19:56.192 [DEBUG] [Thread-117311] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:19:56.192 [DEBUG] [Thread-117311] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:19:56.192 [DEBUG] [Thread-117311] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:19:56.192 [DEBUG] [Thread-117311] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:19:56.192 [DEBUG] [Thread-117311] [transport.py] [_log()] Compression: none
2025-11-03T14:19:56.192 [DEBUG] [Thread-117311] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:19:56.200 [DEBUG] [Thread-117311] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:19:56.201 [DEBUG] [Thread-117311] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:19:56.201 [DEBUG] [Thread-117311] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:19:56.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:19:56.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:19:56.202 [DEBUG] [Thread-117311] [transport.py] [_log()] userauth is OK
2025-11-03T14:19:56.202 [DEBUG] [Thread-117311] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:19:56.202 [DEBUG] [Thread-117311] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:19:56.202 [DEBUG] [Thread-117311] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:19:56.202 [DEBUG] [Thread-117311] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:19:56.223 [INFO] [Thread-117311] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:19:56.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:19:56.345 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:19:56.346 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:19:56.871 [DEBUG] [Thread-117311] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:19:56.871 [DEBUG] [Thread-117311] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:19:56.872 [DEBUG] [Thread-117311] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:19:56.912 [DEBUG] [Thread-117311] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:19:56.912 [DEBUG] [Thread-117311] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:19:56.916 [DEBUG] [Thread-117311] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:19:56.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:19:56.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:19:56.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:19:56.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:19:56.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:19:56.939 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:19:56.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:19:56.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:19:56.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:19:56.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.513298 -999.00  +26.20  28.50      8   -9.50 1 1 1 1 1   888    0 36.61 7.11 ----- 28.1 28.5 1.1 35.2 30.7 -30.6 30.2 -30.3 31.0 -30.2 31.6 -29.4
2025-11-03T14:19:56.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:19:56.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:19:56.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.513298
2025-11-03T14:19:56.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:19:56.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:19:56.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:19:56.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:19:56.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:19:56.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:19:31', tmtdew=45.56, humidity=4.04, cloud=0.0, wind=27.01, temperature=25.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:19:08.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:19:56.942 [DEBUG] [Thread-117311] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:19:57.026 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:19:57.036 [DEBUG] [Thread-117314] [transport.py] [_log()] starting thread (client mode): 0x81b9c30
2025-11-03T14:19:57.036 [DEBUG] [Thread-117314] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:19:57.051 [DEBUG] [Thread-117314] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:19:57.051 [INFO] [Thread-117314] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:19:57.059 [DEBUG] [Thread-117314] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:19:57.059 [DEBUG] [Thread-117314] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:19:57.059 [DEBUG] [Thread-117314] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:19:57.059 [DEBUG] [Thread-117314] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:19:57.059 [DEBUG] [Thread-117314] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:19:57.060 [DEBUG] [Thread-117314] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:19:57.060 [DEBUG] [Thread-117314] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:19:57.060 [DEBUG] [Thread-117314] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:19:57.060 [DEBUG] [Thread-117314] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:19:57.060 [DEBUG] [Thread-117314] [transport.py] [_log()] client lang: <none>
2025-11-03T14:19:57.060 [DEBUG] [Thread-117314] [transport.py] [_log()] server lang: <none>
2025-11-03T14:19:57.060 [DEBUG] [Thread-117314] [transport.py] [_log()] kex follows: False
2025-11-03T14:19:57.060 [DEBUG] [Thread-117314] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:19:57.060 [DEBUG] [Thread-117314] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:19:57.061 [DEBUG] [Thread-117314] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:19:57.061 [DEBUG] [Thread-117314] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:19:57.061 [DEBUG] [Thread-117314] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:19:57.061 [DEBUG] [Thread-117314] [transport.py] [_log()] Compression: none
2025-11-03T14:19:57.061 [DEBUG] [Thread-117314] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:19:57.119 [DEBUG] [Thread-117314] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:19:57.119 [DEBUG] [Thread-117314] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:19:57.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:19:57.120 [DEBUG] [Thread-117314] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:19:57.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:19:57.178 [DEBUG] [Thread-117314] [transport.py] [_log()] userauth is OK
2025-11-03T14:19:57.178 [DEBUG] [Thread-117314] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:19:57.179 [DEBUG] [Thread-117314] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:19:57.179 [DEBUG] [Thread-117314] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:19:57.179 [DEBUG] [Thread-117314] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:19:57.198 [INFO] [Thread-117314] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:19:57.198 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:19:57.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:19:58.025 [DEBUG] [Thread-117314] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:19:58.025 [DEBUG] [Thread-117314] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:19:58.073 [DEBUG] [Thread-117314] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:19:58.073 [DEBUG] [Thread-117314] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:19:58.082 [DEBUG] [Thread-117314] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:19:58.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:19:58.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:19:58.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:19:58.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:19:58.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:19:58.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:19:58.114 [DEBUG] [Thread-117314] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:20:00.219 [DEBUG] [Thread-117316 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:20:10.237 [DEBUG] [Thread-117317 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:20:15.259 [DEBUG] [Thread-117318 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:20:28.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:20:28.136 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:20:28.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:20:28.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 20, 3), 45.32, 4.1, 0.0, 20.93, 25.85, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:20:28.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:20:03
2025-11-03T14:20:28.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:20:29.126 [DEBUG] [Thread-117319] [transport.py] [_log()] starting thread (client mode): 0xedd6260
2025-11-03T14:20:29.126 [DEBUG] [Thread-117319] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:20:29.149 [DEBUG] [Thread-117319] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:20:29.149 [INFO] [Thread-117319] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:20:29.151 [DEBUG] [Thread-117319] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:20:29.151 [DEBUG] [Thread-117319] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:20:29.151 [DEBUG] [Thread-117319] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:20:29.151 [DEBUG] [Thread-117319] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:20:29.151 [DEBUG] [Thread-117319] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:20:29.151 [DEBUG] [Thread-117319] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:20:29.152 [DEBUG] [Thread-117319] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:20:29.152 [DEBUG] [Thread-117319] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:20:29.152 [DEBUG] [Thread-117319] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:20:29.152 [DEBUG] [Thread-117319] [transport.py] [_log()] client lang: <none>
2025-11-03T14:20:29.152 [DEBUG] [Thread-117319] [transport.py] [_log()] server lang: <none>
2025-11-03T14:20:29.152 [DEBUG] [Thread-117319] [transport.py] [_log()] kex follows: False
2025-11-03T14:20:29.152 [DEBUG] [Thread-117319] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:20:29.152 [DEBUG] [Thread-117319] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:20:29.152 [DEBUG] [Thread-117319] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:20:29.152 [DEBUG] [Thread-117319] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:20:29.152 [DEBUG] [Thread-117319] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:20:29.153 [DEBUG] [Thread-117319] [transport.py] [_log()] Compression: none
2025-11-03T14:20:29.153 [DEBUG] [Thread-117319] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:20:29.162 [DEBUG] [Thread-117319] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:20:29.163 [DEBUG] [Thread-117319] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:20:29.163 [DEBUG] [Thread-117319] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:20:29.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:20:29.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:20:29.165 [DEBUG] [Thread-117319] [transport.py] [_log()] userauth is OK
2025-11-03T14:20:29.165 [DEBUG] [Thread-117319] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:20:29.165 [DEBUG] [Thread-117319] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:20:29.166 [DEBUG] [Thread-117319] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:20:29.166 [DEBUG] [Thread-117319] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:20:29.184 [INFO] [Thread-117319] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:20:29.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:20:30.028 [DEBUG] [Thread-117319] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:20:30.028 [DEBUG] [Thread-117319] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:20:30.028 [DEBUG] [Thread-117319] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:20:30.069 [DEBUG] [Thread-117319] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:20:30.069 [DEBUG] [Thread-117319] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:20:30.072 [DEBUG] [Thread-117319] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:20:30.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:20:30.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:20:30.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:20:30.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:20:30.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:20:30.097 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:20:30.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:20:30.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:20:30.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:20:30.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.513992 -999.00  +26.40  23.38      8   -9.50 1 1 1 1 1   888    0 36.10 -2.23 ----- 21.9 23.4 9.8 38.9 30.6 -31.7 30.0 -31.8 30.9 -33.7 31.3 -36.8
2025-11-03T14:20:30.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:20:30.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:20:30.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.513992
2025-11-03T14:20:30.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:20:30.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:20:30.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:20:30.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:20:30.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:20:30.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:20:03', tmtdew=45.32, humidity=4.1, cloud=0.0, wind=20.93, temperature=25.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:20:08.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:20:30.100 [DEBUG] [Thread-117319] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:20:30.183 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:20:30.201 [DEBUG] [Thread-117322] [transport.py] [_log()] starting thread (client mode): 0xed234f0
2025-11-03T14:20:30.201 [DEBUG] [Thread-117322] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:20:30.215 [DEBUG] [Thread-117322] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:20:30.216 [INFO] [Thread-117322] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:20:30.226 [DEBUG] [Thread-117322] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:20:30.226 [DEBUG] [Thread-117322] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:20:30.226 [DEBUG] [Thread-117322] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:20:30.226 [DEBUG] [Thread-117322] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:20:30.227 [DEBUG] [Thread-117322] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:20:30.227 [DEBUG] [Thread-117322] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:20:30.227 [DEBUG] [Thread-117322] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:20:30.227 [DEBUG] [Thread-117322] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:20:30.227 [DEBUG] [Thread-117322] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:20:30.227 [DEBUG] [Thread-117322] [transport.py] [_log()] client lang: <none>
2025-11-03T14:20:30.227 [DEBUG] [Thread-117322] [transport.py] [_log()] server lang: <none>
2025-11-03T14:20:30.227 [DEBUG] [Thread-117322] [transport.py] [_log()] kex follows: False
2025-11-03T14:20:30.227 [DEBUG] [Thread-117322] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:20:30.227 [DEBUG] [Thread-117322] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:20:30.227 [DEBUG] [Thread-117322] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:20:30.227 [DEBUG] [Thread-117322] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:20:30.227 [DEBUG] [Thread-117322] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:20:30.227 [DEBUG] [Thread-117322] [transport.py] [_log()] Compression: none
2025-11-03T14:20:30.227 [DEBUG] [Thread-117322] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:20:30.282 [DEBUG] [Thread-117322] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:20:30.283 [DEBUG] [Thread-117322] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:20:30.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:20:30.284 [DEBUG] [Thread-117322] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:20:30.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:20:30.305 [DEBUG] [Thread-117324 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:20:30.338 [DEBUG] [Thread-117322] [transport.py] [_log()] userauth is OK
2025-11-03T14:20:30.338 [DEBUG] [Thread-117322] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:20:30.338 [DEBUG] [Thread-117322] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:20:30.338 [DEBUG] [Thread-117322] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:20:30.339 [DEBUG] [Thread-117322] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:20:30.362 [INFO] [Thread-117322] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:20:30.362 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:20:30.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:20:31.205 [DEBUG] [Thread-117322] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:20:31.205 [DEBUG] [Thread-117322] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:20:31.253 [DEBUG] [Thread-117322] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:20:31.253 [DEBUG] [Thread-117322] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:20:31.263 [DEBUG] [Thread-117322] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:20:31.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:20:31.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:20:31.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:20:31.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:20:31.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:20:31.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:20:31.299 [DEBUG] [Thread-117322] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:20:45.349 [DEBUG] [Thread-117325 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:20:56.503 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:20:56.504 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:21:00.378 [DEBUG] [Thread-117326 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:21:01.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:21:01.294 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:21:01.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:21:01.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 20, 36), 45.48, 4.1, 0.0, 25.99, 26.13, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:21:01.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:20:36
2025-11-03T14:21:02.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:21:02.240 [DEBUG] [Thread-117327] [transport.py] [_log()] starting thread (client mode): 0xed217b0
2025-11-03T14:21:02.240 [DEBUG] [Thread-117327] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:21:02.259 [DEBUG] [Thread-117327] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:21:02.259 [INFO] [Thread-117327] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:21:02.262 [DEBUG] [Thread-117327] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:21:02.262 [DEBUG] [Thread-117327] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:21:02.262 [DEBUG] [Thread-117327] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:21:02.262 [DEBUG] [Thread-117327] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:21:02.262 [DEBUG] [Thread-117327] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:21:02.262 [DEBUG] [Thread-117327] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:21:02.262 [DEBUG] [Thread-117327] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:21:02.262 [DEBUG] [Thread-117327] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:21:02.262 [DEBUG] [Thread-117327] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:21:02.262 [DEBUG] [Thread-117327] [transport.py] [_log()] client lang: <none>
2025-11-03T14:21:02.262 [DEBUG] [Thread-117327] [transport.py] [_log()] server lang: <none>
2025-11-03T14:21:02.262 [DEBUG] [Thread-117327] [transport.py] [_log()] kex follows: False
2025-11-03T14:21:02.262 [DEBUG] [Thread-117327] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:21:02.262 [DEBUG] [Thread-117327] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:21:02.262 [DEBUG] [Thread-117327] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:21:02.262 [DEBUG] [Thread-117327] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:21:02.263 [DEBUG] [Thread-117327] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:21:02.263 [DEBUG] [Thread-117327] [transport.py] [_log()] Compression: none
2025-11-03T14:21:02.263 [DEBUG] [Thread-117327] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:21:02.276 [DEBUG] [Thread-117327] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:21:02.276 [DEBUG] [Thread-117327] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:21:02.278 [DEBUG] [Thread-117327] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:21:02.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:21:02.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:21:02.280 [DEBUG] [Thread-117327] [transport.py] [_log()] userauth is OK
2025-11-03T14:21:02.280 [DEBUG] [Thread-117327] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:21:02.280 [DEBUG] [Thread-117327] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:21:02.280 [DEBUG] [Thread-117327] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:21:02.280 [DEBUG] [Thread-117327] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:21:02.304 [INFO] [Thread-117327] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:21:02.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:21:02.935 [DEBUG] [Thread-117327] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:21:02.935 [DEBUG] [Thread-117327] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:21:02.935 [DEBUG] [Thread-117327] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:21:02.976 [DEBUG] [Thread-117327] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:21:02.976 [DEBUG] [Thread-117327] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:21:02.979 [DEBUG] [Thread-117327] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:21:02.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:21:02.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:21:02.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:21:02.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:21:02.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:21:02.996 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:21:02.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:21:02.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:21:02.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:21:02.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.514339 -999.00  +25.50  21.52      8   -9.90 1 1 1 1 1   888    0 36.54 -6.00 ----- 23.9 21.5 352.0 31.1 30.5 -31.6 29.8 -30.7 30.7 -31.0 30.7 -32.6
2025-11-03T14:21:02.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:21:02.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:21:02.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.514339
2025-11-03T14:21:02.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:21:02.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:21:02.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:21:02.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:21:02.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:21:02.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:20:36', tmtdew=45.48, humidity=4.1, cloud=0.0, wind=25.99, temperature=26.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:20:38.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:21:02.998 [DEBUG] [Thread-117327] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:21:03.069 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:21:03.083 [DEBUG] [Thread-117330] [transport.py] [_log()] starting thread (client mode): 0xed4f640
2025-11-03T14:21:03.084 [DEBUG] [Thread-117330] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:21:03.101 [DEBUG] [Thread-117330] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:21:03.101 [INFO] [Thread-117330] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:21:03.112 [DEBUG] [Thread-117330] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:21:03.112 [DEBUG] [Thread-117330] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:21:03.112 [DEBUG] [Thread-117330] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:21:03.112 [DEBUG] [Thread-117330] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:21:03.113 [DEBUG] [Thread-117330] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:21:03.113 [DEBUG] [Thread-117330] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:21:03.113 [DEBUG] [Thread-117330] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:21:03.113 [DEBUG] [Thread-117330] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:21:03.113 [DEBUG] [Thread-117330] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:21:03.113 [DEBUG] [Thread-117330] [transport.py] [_log()] client lang: <none>
2025-11-03T14:21:03.113 [DEBUG] [Thread-117330] [transport.py] [_log()] server lang: <none>
2025-11-03T14:21:03.113 [DEBUG] [Thread-117330] [transport.py] [_log()] kex follows: False
2025-11-03T14:21:03.113 [DEBUG] [Thread-117330] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:21:03.113 [DEBUG] [Thread-117330] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:21:03.113 [DEBUG] [Thread-117330] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:21:03.113 [DEBUG] [Thread-117330] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:21:03.113 [DEBUG] [Thread-117330] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:21:03.113 [DEBUG] [Thread-117330] [transport.py] [_log()] Compression: none
2025-11-03T14:21:03.113 [DEBUG] [Thread-117330] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:21:03.170 [DEBUG] [Thread-117330] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:21:03.171 [DEBUG] [Thread-117330] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:21:03.171 [DEBUG] [Thread-117330] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:21:03.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:21:03.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:21:03.230 [DEBUG] [Thread-117330] [transport.py] [_log()] userauth is OK
2025-11-03T14:21:03.230 [DEBUG] [Thread-117330] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:21:03.230 [DEBUG] [Thread-117330] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:21:03.230 [DEBUG] [Thread-117330] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:21:03.230 [DEBUG] [Thread-117330] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:21:03.244 [INFO] [Thread-117330] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:21:03.245 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:21:03.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:21:04.112 [DEBUG] [Thread-117330] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:21:04.112 [DEBUG] [Thread-117330] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:21:04.162 [DEBUG] [Thread-117330] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:21:04.162 [DEBUG] [Thread-117330] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:21:04.175 [DEBUG] [Thread-117330] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:21:04.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:21:04.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:21:04.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:21:04.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:21:04.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:21:04.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:21:04.224 [DEBUG] [Thread-117330] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:21:10.321 [DEBUG] [Thread-117332 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:21:15.410 [DEBUG] [Thread-117333 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:21:30.493 [DEBUG] [Thread-117334 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:21:34.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:21:34.220 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:21:34.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:21:34.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 21, 8), 45.46, 4.12, 0.0, 23.26, 26.19, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:21:34.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:21:08
2025-11-03T14:21:35.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:21:35.239 [DEBUG] [Thread-117335] [transport.py] [_log()] starting thread (client mode): 0xeda2bf0
2025-11-03T14:21:35.240 [DEBUG] [Thread-117335] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:21:35.260 [DEBUG] [Thread-117335] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:21:35.260 [INFO] [Thread-117335] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:21:35.270 [DEBUG] [Thread-117335] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:21:35.270 [DEBUG] [Thread-117335] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:21:35.270 [DEBUG] [Thread-117335] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:21:35.270 [DEBUG] [Thread-117335] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:21:35.270 [DEBUG] [Thread-117335] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:21:35.270 [DEBUG] [Thread-117335] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:21:35.270 [DEBUG] [Thread-117335] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:21:35.270 [DEBUG] [Thread-117335] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:21:35.270 [DEBUG] [Thread-117335] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:21:35.270 [DEBUG] [Thread-117335] [transport.py] [_log()] client lang: <none>
2025-11-03T14:21:35.270 [DEBUG] [Thread-117335] [transport.py] [_log()] server lang: <none>
2025-11-03T14:21:35.270 [DEBUG] [Thread-117335] [transport.py] [_log()] kex follows: False
2025-11-03T14:21:35.270 [DEBUG] [Thread-117335] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:21:35.271 [DEBUG] [Thread-117335] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:21:35.271 [DEBUG] [Thread-117335] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:21:35.271 [DEBUG] [Thread-117335] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:21:35.271 [DEBUG] [Thread-117335] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:21:35.271 [DEBUG] [Thread-117335] [transport.py] [_log()] Compression: none
2025-11-03T14:21:35.271 [DEBUG] [Thread-117335] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:21:35.290 [DEBUG] [Thread-117335] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:21:35.290 [DEBUG] [Thread-117335] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:21:35.291 [DEBUG] [Thread-117335] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:21:35.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:21:35.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:21:35.294 [DEBUG] [Thread-117335] [transport.py] [_log()] userauth is OK
2025-11-03T14:21:35.294 [DEBUG] [Thread-117335] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:21:35.294 [DEBUG] [Thread-117335] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:21:35.294 [DEBUG] [Thread-117335] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:21:35.294 [DEBUG] [Thread-117335] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:21:35.319 [INFO] [Thread-117335] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:21:35.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:21:36.128 [DEBUG] [Thread-117335] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:21:36.128 [DEBUG] [Thread-117335] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:21:36.128 [DEBUG] [Thread-117335] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:21:36.169 [DEBUG] [Thread-117335] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:21:36.169 [DEBUG] [Thread-117335] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:21:36.173 [DEBUG] [Thread-117335] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:21:36.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:21:36.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:21:36.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:21:36.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:21:36.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:21:36.196 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:21:36.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:21:36.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:21:36.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:21:36.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.514687 -999.00  +25.70  12.72      8   -9.50 1 1 1 1 1   888    0 36.39 -12.04 ----- 12.9 12.7 353.4 24.5 30.5 -31.1 30.0 -30.0 30.9 -29.6 31.1 -29.4
2025-11-03T14:21:36.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:21:36.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:21:36.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.514687
2025-11-03T14:21:36.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:21:36.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:21:36.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:21:36.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:21:36.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:21:36.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:21:08', tmtdew=45.46, humidity=4.12, cloud=0.0, wind=23.26, temperature=26.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:21:08.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:21:36.200 [DEBUG] [Thread-117335] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:21:36.282 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:21:36.294 [DEBUG] [Thread-117338] [transport.py] [_log()] starting thread (client mode): 0x11783e80
2025-11-03T14:21:36.294 [DEBUG] [Thread-117338] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:21:36.309 [DEBUG] [Thread-117338] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:21:36.309 [INFO] [Thread-117338] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:21:36.317 [DEBUG] [Thread-117338] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:21:36.318 [DEBUG] [Thread-117338] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:21:36.318 [DEBUG] [Thread-117338] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:21:36.318 [DEBUG] [Thread-117338] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:21:36.318 [DEBUG] [Thread-117338] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:21:36.318 [DEBUG] [Thread-117338] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:21:36.318 [DEBUG] [Thread-117338] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:21:36.319 [DEBUG] [Thread-117338] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:21:36.319 [DEBUG] [Thread-117338] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:21:36.319 [DEBUG] [Thread-117338] [transport.py] [_log()] client lang: <none>
2025-11-03T14:21:36.319 [DEBUG] [Thread-117338] [transport.py] [_log()] server lang: <none>
2025-11-03T14:21:36.319 [DEBUG] [Thread-117338] [transport.py] [_log()] kex follows: False
2025-11-03T14:21:36.319 [DEBUG] [Thread-117338] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:21:36.319 [DEBUG] [Thread-117338] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:21:36.319 [DEBUG] [Thread-117338] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:21:36.319 [DEBUG] [Thread-117338] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:21:36.319 [DEBUG] [Thread-117338] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:21:36.319 [DEBUG] [Thread-117338] [transport.py] [_log()] Compression: none
2025-11-03T14:21:36.319 [DEBUG] [Thread-117338] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:21:36.375 [DEBUG] [Thread-117338] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:21:36.376 [DEBUG] [Thread-117338] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:21:36.376 [DEBUG] [Thread-117338] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:21:36.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:21:36.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:21:36.431 [DEBUG] [Thread-117338] [transport.py] [_log()] userauth is OK
2025-11-03T14:21:36.431 [DEBUG] [Thread-117338] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:21:36.431 [DEBUG] [Thread-117338] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:21:36.431 [DEBUG] [Thread-117338] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:21:36.431 [DEBUG] [Thread-117338] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:21:36.455 [INFO] [Thread-117338] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:21:36.456 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:21:36.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:21:37.296 [DEBUG] [Thread-117338] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:21:37.296 [DEBUG] [Thread-117338] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:21:37.344 [DEBUG] [Thread-117338] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:21:37.344 [DEBUG] [Thread-117338] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:21:37.353 [DEBUG] [Thread-117338] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:21:37.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:21:37.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:21:37.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:21:37.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:21:37.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:21:37.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:21:37.389 [DEBUG] [Thread-117338] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:21:45.533 [DEBUG] [Thread-117340 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:21:56.645 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:21:56.646 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:22:00.579 [DEBUG] [Thread-117341 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:22:07.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:22:07.412 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:22:07.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:22:08.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 21, 40), 45.08, 4.1, 0.0, 25.18, 26.03, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:22:08.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:21:40
2025-11-03T14:22:08.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:22:08.346 [DEBUG] [Thread-117342] [transport.py] [_log()] starting thread (client mode): 0xed4fb50
2025-11-03T14:22:08.346 [DEBUG] [Thread-117342] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:22:08.366 [DEBUG] [Thread-117342] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:22:08.366 [INFO] [Thread-117342] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:22:08.369 [DEBUG] [Thread-117342] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:22:08.369 [DEBUG] [Thread-117342] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:22:08.369 [DEBUG] [Thread-117342] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:22:08.369 [DEBUG] [Thread-117342] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:22:08.369 [DEBUG] [Thread-117342] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:22:08.369 [DEBUG] [Thread-117342] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:22:08.369 [DEBUG] [Thread-117342] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:22:08.369 [DEBUG] [Thread-117342] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:22:08.369 [DEBUG] [Thread-117342] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:22:08.369 [DEBUG] [Thread-117342] [transport.py] [_log()] client lang: <none>
2025-11-03T14:22:08.369 [DEBUG] [Thread-117342] [transport.py] [_log()] server lang: <none>
2025-11-03T14:22:08.369 [DEBUG] [Thread-117342] [transport.py] [_log()] kex follows: False
2025-11-03T14:22:08.369 [DEBUG] [Thread-117342] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:22:08.369 [DEBUG] [Thread-117342] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:22:08.378 [DEBUG] [Thread-117342] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:22:08.379 [DEBUG] [Thread-117342] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:22:08.379 [DEBUG] [Thread-117342] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:22:08.379 [DEBUG] [Thread-117342] [transport.py] [_log()] Compression: none
2025-11-03T14:22:08.379 [DEBUG] [Thread-117342] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:22:08.398 [DEBUG] [Thread-117342] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:22:08.398 [DEBUG] [Thread-117342] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:22:08.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:22:08.399 [DEBUG] [Thread-117342] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:22:08.400 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:22:08.401 [DEBUG] [Thread-117342] [transport.py] [_log()] userauth is OK
2025-11-03T14:22:08.401 [DEBUG] [Thread-117342] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:22:08.401 [DEBUG] [Thread-117342] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:22:08.402 [DEBUG] [Thread-117342] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:22:08.402 [DEBUG] [Thread-117342] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:22:08.426 [INFO] [Thread-117342] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:22:08.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:22:09.037 [DEBUG] [Thread-117342] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:22:09.046 [DEBUG] [Thread-117342] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:22:09.046 [DEBUG] [Thread-117342] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:22:09.077 [DEBUG] [Thread-117342] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:22:09.077 [DEBUG] [Thread-117342] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:22:09.079 [DEBUG] [Thread-117342] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:22:09.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:22:09.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:22:09.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:22:09.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:22:09.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:22:09.097 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:22:09.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:22:09.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:22:09.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:22:09.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.515034 -999.00  +25.70  22.76      8   -9.80 1 1 1 1 1   888    0 35.83 -19.31 ----- 21.3 22.8 50.8 29.8 30.5 -31.8 30.0 -32.3 30.8 -29.9 31.3 -29.6
2025-11-03T14:22:09.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:22:09.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:22:09.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.515034
2025-11-03T14:22:09.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:22:09.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:22:09.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:22:09.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:22:09.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:22:09.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:21:40', tmtdew=45.08, humidity=4.1, cloud=0.0, wind=25.18, temperature=26.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:21:38.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:22:09.098 [DEBUG] [Thread-117342] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:22:09.169 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:22:09.181 [DEBUG] [Thread-117345] [transport.py] [_log()] starting thread (client mode): 0xed4dc60
2025-11-03T14:22:09.181 [DEBUG] [Thread-117345] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:22:09.197 [DEBUG] [Thread-117345] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:22:09.197 [INFO] [Thread-117345] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:22:09.204 [DEBUG] [Thread-117345] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:22:09.205 [DEBUG] [Thread-117345] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:22:09.205 [DEBUG] [Thread-117345] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:22:09.205 [DEBUG] [Thread-117345] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:22:09.205 [DEBUG] [Thread-117345] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:22:09.205 [DEBUG] [Thread-117345] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:22:09.205 [DEBUG] [Thread-117345] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:22:09.205 [DEBUG] [Thread-117345] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:22:09.205 [DEBUG] [Thread-117345] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:22:09.205 [DEBUG] [Thread-117345] [transport.py] [_log()] client lang: <none>
2025-11-03T14:22:09.205 [DEBUG] [Thread-117345] [transport.py] [_log()] server lang: <none>
2025-11-03T14:22:09.205 [DEBUG] [Thread-117345] [transport.py] [_log()] kex follows: False
2025-11-03T14:22:09.205 [DEBUG] [Thread-117345] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:22:09.205 [DEBUG] [Thread-117345] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:22:09.205 [DEBUG] [Thread-117345] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:22:09.205 [DEBUG] [Thread-117345] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:22:09.205 [DEBUG] [Thread-117345] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:22:09.205 [DEBUG] [Thread-117345] [transport.py] [_log()] Compression: none
2025-11-03T14:22:09.205 [DEBUG] [Thread-117345] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:22:09.270 [DEBUG] [Thread-117345] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:22:09.270 [DEBUG] [Thread-117345] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:22:09.270 [DEBUG] [Thread-117345] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:22:09.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:22:09.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:22:09.327 [DEBUG] [Thread-117345] [transport.py] [_log()] userauth is OK
2025-11-03T14:22:09.327 [DEBUG] [Thread-117345] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:22:09.327 [DEBUG] [Thread-117345] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:22:09.327 [DEBUG] [Thread-117345] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:22:09.327 [DEBUG] [Thread-117345] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:22:09.341 [INFO] [Thread-117345] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:22:09.350 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:22:09.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:22:10.211 [DEBUG] [Thread-117345] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:22:10.212 [DEBUG] [Thread-117345] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:22:10.260 [DEBUG] [Thread-117345] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:22:10.260 [DEBUG] [Thread-117345] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:22:10.272 [DEBUG] [Thread-117345] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:22:10.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:22:10.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:22:10.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:22:10.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:22:10.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:22:10.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:22:10.312 [DEBUG] [Thread-117345] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:22:10.385 [DEBUG] [Thread-117347 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:22:15.607 [DEBUG] [Thread-117348 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:22:30.652 [DEBUG] [Thread-117349 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:22:40.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:22:40.334 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:22:40.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:22:41.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 22, 13), 45.14, 4.09, 0.0, 26.15, 26.08, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:22:41.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:22:13
2025-11-03T14:22:41.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:22:41.389 [DEBUG] [Thread-117350] [transport.py] [_log()] starting thread (client mode): 0xeda1e40
2025-11-03T14:22:41.390 [DEBUG] [Thread-117350] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:22:41.410 [DEBUG] [Thread-117350] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:22:41.410 [INFO] [Thread-117350] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:22:41.413 [DEBUG] [Thread-117350] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:22:41.413 [DEBUG] [Thread-117350] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:22:41.413 [DEBUG] [Thread-117350] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:22:41.413 [DEBUG] [Thread-117350] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:22:41.413 [DEBUG] [Thread-117350] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:22:41.413 [DEBUG] [Thread-117350] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:22:41.413 [DEBUG] [Thread-117350] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:22:41.413 [DEBUG] [Thread-117350] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:22:41.413 [DEBUG] [Thread-117350] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:22:41.413 [DEBUG] [Thread-117350] [transport.py] [_log()] client lang: <none>
2025-11-03T14:22:41.413 [DEBUG] [Thread-117350] [transport.py] [_log()] server lang: <none>
2025-11-03T14:22:41.413 [DEBUG] [Thread-117350] [transport.py] [_log()] kex follows: False
2025-11-03T14:22:41.413 [DEBUG] [Thread-117350] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:22:41.413 [DEBUG] [Thread-117350] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:22:41.413 [DEBUG] [Thread-117350] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:22:41.413 [DEBUG] [Thread-117350] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:22:41.413 [DEBUG] [Thread-117350] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:22:41.413 [DEBUG] [Thread-117350] [transport.py] [_log()] Compression: none
2025-11-03T14:22:41.413 [DEBUG] [Thread-117350] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:22:41.429 [DEBUG] [Thread-117350] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:22:41.429 [DEBUG] [Thread-117350] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:22:41.429 [DEBUG] [Thread-117350] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:22:41.429 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:22:41.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:22:41.430 [DEBUG] [Thread-117350] [transport.py] [_log()] userauth is OK
2025-11-03T14:22:41.430 [DEBUG] [Thread-117350] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:22:41.430 [DEBUG] [Thread-117350] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:22:41.430 [DEBUG] [Thread-117350] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:22:41.430 [DEBUG] [Thread-117350] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:22:41.440 [INFO] [Thread-117350] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:22:41.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:22:42.251 [DEBUG] [Thread-117350] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:22:42.251 [DEBUG] [Thread-117350] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:22:42.251 [DEBUG] [Thread-117350] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:22:42.292 [DEBUG] [Thread-117350] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:22:42.292 [DEBUG] [Thread-117350] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:22:42.295 [DEBUG] [Thread-117350] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:22:42.306 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:22:42.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:22:42.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:22:42.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:22:42.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:22:42.312 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:22:42.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:22:42.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:22:42.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:22:42.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.515381 -999.00  +25.40  20.01      8   -9.80 1 1 1 1 1   888    0 36.25 -25.87 ----- 19.4 20.0 345.0 24.7 30.6 -31.3 29.9 -31.2 30.8 -29.9 31.3 -31.1
2025-11-03T14:22:42.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:22:42.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:22:42.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.515381
2025-11-03T14:22:42.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:22:42.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:22:42.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:22:42.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:22:42.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:22:42.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:22:13', tmtdew=45.14, humidity=4.09, cloud=0.0, wind=26.15, temperature=26.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:22:08.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:22:42.313 [DEBUG] [Thread-117350] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:22:42.386 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:22:42.399 [DEBUG] [Thread-117353] [transport.py] [_log()] starting thread (client mode): 0xeda01f0
2025-11-03T14:22:42.399 [DEBUG] [Thread-117353] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:22:42.415 [DEBUG] [Thread-117353] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:22:42.415 [INFO] [Thread-117353] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:22:42.422 [DEBUG] [Thread-117353] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:22:42.423 [DEBUG] [Thread-117353] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:22:42.423 [DEBUG] [Thread-117353] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:22:42.423 [DEBUG] [Thread-117353] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:22:42.423 [DEBUG] [Thread-117353] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:22:42.423 [DEBUG] [Thread-117353] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:22:42.423 [DEBUG] [Thread-117353] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:22:42.423 [DEBUG] [Thread-117353] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:22:42.423 [DEBUG] [Thread-117353] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:22:42.423 [DEBUG] [Thread-117353] [transport.py] [_log()] client lang: <none>
2025-11-03T14:22:42.423 [DEBUG] [Thread-117353] [transport.py] [_log()] server lang: <none>
2025-11-03T14:22:42.423 [DEBUG] [Thread-117353] [transport.py] [_log()] kex follows: False
2025-11-03T14:22:42.423 [DEBUG] [Thread-117353] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:22:42.423 [DEBUG] [Thread-117353] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:22:42.423 [DEBUG] [Thread-117353] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:22:42.423 [DEBUG] [Thread-117353] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:22:42.423 [DEBUG] [Thread-117353] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:22:42.423 [DEBUG] [Thread-117353] [transport.py] [_log()] Compression: none
2025-11-03T14:22:42.423 [DEBUG] [Thread-117353] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:22:42.479 [DEBUG] [Thread-117353] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:22:42.479 [DEBUG] [Thread-117353] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:22:42.480 [DEBUG] [Thread-117353] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:22:42.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:22:42.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:22:42.535 [DEBUG] [Thread-117353] [transport.py] [_log()] userauth is OK
2025-11-03T14:22:42.535 [DEBUG] [Thread-117353] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:22:42.535 [DEBUG] [Thread-117353] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:22:42.535 [DEBUG] [Thread-117353] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:22:42.535 [DEBUG] [Thread-117353] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:22:42.549 [INFO] [Thread-117353] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:22:42.549 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:22:42.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:22:43.410 [DEBUG] [Thread-117353] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:22:43.410 [DEBUG] [Thread-117353] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:22:43.458 [DEBUG] [Thread-117353] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:22:43.458 [DEBUG] [Thread-117353] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:22:43.467 [DEBUG] [Thread-117353] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:22:43.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:22:43.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:22:43.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:22:43.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:22:43.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:22:43.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:22:43.505 [DEBUG] [Thread-117353] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:22:45.681 [DEBUG] [Thread-117355 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:22:56.795 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:22:56.796 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:23:00.723 [DEBUG] [Thread-117356 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:23:10.426 [DEBUG] [Thread-117357 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:23:13.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:23:13.526 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:23:13.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:23:14.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 22, 45), 44.97, 4.05, 0.0, 26.38, 25.98, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:23:14.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:22:45
2025-11-03T14:23:14.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:23:14.476 [DEBUG] [Thread-117358] [transport.py] [_log()] starting thread (client mode): 0x11782650
2025-11-03T14:23:14.476 [DEBUG] [Thread-117358] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:23:14.497 [DEBUG] [Thread-117358] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:23:14.497 [INFO] [Thread-117358] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:23:14.500 [DEBUG] [Thread-117358] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:23:14.501 [DEBUG] [Thread-117358] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:23:14.501 [DEBUG] [Thread-117358] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:23:14.501 [DEBUG] [Thread-117358] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:23:14.501 [DEBUG] [Thread-117358] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:23:14.501 [DEBUG] [Thread-117358] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:23:14.501 [DEBUG] [Thread-117358] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:23:14.501 [DEBUG] [Thread-117358] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:23:14.501 [DEBUG] [Thread-117358] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:23:14.501 [DEBUG] [Thread-117358] [transport.py] [_log()] client lang: <none>
2025-11-03T14:23:14.501 [DEBUG] [Thread-117358] [transport.py] [_log()] server lang: <none>
2025-11-03T14:23:14.501 [DEBUG] [Thread-117358] [transport.py] [_log()] kex follows: False
2025-11-03T14:23:14.501 [DEBUG] [Thread-117358] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:23:14.501 [DEBUG] [Thread-117358] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:23:14.502 [DEBUG] [Thread-117358] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:23:14.502 [DEBUG] [Thread-117358] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:23:14.502 [DEBUG] [Thread-117358] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:23:14.502 [DEBUG] [Thread-117358] [transport.py] [_log()] Compression: none
2025-11-03T14:23:14.502 [DEBUG] [Thread-117358] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:23:14.520 [DEBUG] [Thread-117358] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:23:14.530 [DEBUG] [Thread-117358] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:23:14.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:23:14.532 [DEBUG] [Thread-117358] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:23:14.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:23:14.534 [DEBUG] [Thread-117358] [transport.py] [_log()] userauth is OK
2025-11-03T14:23:14.534 [DEBUG] [Thread-117358] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:23:14.535 [DEBUG] [Thread-117358] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:23:14.535 [DEBUG] [Thread-117358] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:23:14.535 [DEBUG] [Thread-117358] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:23:14.574 [INFO] [Thread-117358] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:23:14.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:23:15.177 [DEBUG] [Thread-117358] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:23:15.178 [DEBUG] [Thread-117358] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:23:15.179 [DEBUG] [Thread-117358] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:23:15.219 [DEBUG] [Thread-117358] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:23:15.219 [DEBUG] [Thread-117358] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:23:15.223 [DEBUG] [Thread-117358] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:23:15.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:23:15.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:23:15.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:23:15.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:23:15.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:23:15.250 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:23:15.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:23:15.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:23:15.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:23:15.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.515728 -999.00  +26.20  24.71      8   -9.50 1 1 1 1 1   888    0 35.03 -35.45 ----- 33.6 24.7 321.9 32.0 30.5 -30.4 30.1 -29.9 31.0 -29.3 31.5 -30.3
2025-11-03T14:23:15.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:23:15.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:23:15.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.515728
2025-11-03T14:23:15.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:23:15.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:23:15.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:23:15.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:23:15.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:23:15.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:22:45', tmtdew=44.97, humidity=4.05, cloud=0.0, wind=26.38, temperature=25.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:22:38.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:23:15.254 [DEBUG] [Thread-117358] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:23:15.337 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:23:15.350 [DEBUG] [Thread-117361] [transport.py] [_log()] starting thread (client mode): 0x11781840
2025-11-03T14:23:15.350 [DEBUG] [Thread-117361] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:23:15.365 [DEBUG] [Thread-117361] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:23:15.365 [INFO] [Thread-117361] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:23:15.373 [DEBUG] [Thread-117361] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:23:15.373 [DEBUG] [Thread-117361] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:23:15.373 [DEBUG] [Thread-117361] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:23:15.374 [DEBUG] [Thread-117361] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:23:15.374 [DEBUG] [Thread-117361] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:23:15.374 [DEBUG] [Thread-117361] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:23:15.374 [DEBUG] [Thread-117361] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:23:15.374 [DEBUG] [Thread-117361] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:23:15.374 [DEBUG] [Thread-117361] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:23:15.374 [DEBUG] [Thread-117361] [transport.py] [_log()] client lang: <none>
2025-11-03T14:23:15.375 [DEBUG] [Thread-117361] [transport.py] [_log()] server lang: <none>
2025-11-03T14:23:15.375 [DEBUG] [Thread-117361] [transport.py] [_log()] kex follows: False
2025-11-03T14:23:15.375 [DEBUG] [Thread-117361] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:23:15.375 [DEBUG] [Thread-117361] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:23:15.375 [DEBUG] [Thread-117361] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:23:15.375 [DEBUG] [Thread-117361] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:23:15.376 [DEBUG] [Thread-117361] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:23:15.376 [DEBUG] [Thread-117361] [transport.py] [_log()] Compression: none
2025-11-03T14:23:15.376 [DEBUG] [Thread-117361] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:23:15.432 [DEBUG] [Thread-117361] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:23:15.433 [DEBUG] [Thread-117361] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:23:15.434 [DEBUG] [Thread-117361] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:23:15.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:23:15.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:23:15.494 [DEBUG] [Thread-117361] [transport.py] [_log()] userauth is OK
2025-11-03T14:23:15.494 [DEBUG] [Thread-117361] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:23:15.495 [DEBUG] [Thread-117361] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:23:15.495 [DEBUG] [Thread-117361] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:23:15.495 [DEBUG] [Thread-117361] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:23:15.516 [INFO] [Thread-117361] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:23:15.525 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:23:15.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:23:15.756 [DEBUG] [Thread-117363 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:23:16.382 [DEBUG] [Thread-117361] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:23:16.382 [DEBUG] [Thread-117361] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:23:16.430 [DEBUG] [Thread-117361] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:23:16.430 [DEBUG] [Thread-117361] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:23:16.439 [DEBUG] [Thread-117361] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:23:16.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:23:16.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:23:16.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:23:16.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:23:16.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:23:16.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:23:16.484 [DEBUG] [Thread-117361] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:23:30.816 [DEBUG] [Thread-117364 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:23:45.852 [DEBUG] [Thread-117365 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:23:46.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:23:46.507 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:23:46.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:23:47.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 23, 17), 44.93, 4.07, 0.0, 28.05, 26.01, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:23:47.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:23:17
2025-11-03T14:23:47.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:23:47.508 [DEBUG] [Thread-117366] [transport.py] [_log()] starting thread (client mode): 0x117805e0
2025-11-03T14:23:47.508 [DEBUG] [Thread-117366] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:23:47.527 [DEBUG] [Thread-117366] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:23:47.528 [INFO] [Thread-117366] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:23:47.537 [DEBUG] [Thread-117366] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:23:47.537 [DEBUG] [Thread-117366] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:23:47.538 [DEBUG] [Thread-117366] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:23:47.538 [DEBUG] [Thread-117366] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:23:47.538 [DEBUG] [Thread-117366] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:23:47.538 [DEBUG] [Thread-117366] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:23:47.538 [DEBUG] [Thread-117366] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:23:47.538 [DEBUG] [Thread-117366] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:23:47.538 [DEBUG] [Thread-117366] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:23:47.538 [DEBUG] [Thread-117366] [transport.py] [_log()] client lang: <none>
2025-11-03T14:23:47.538 [DEBUG] [Thread-117366] [transport.py] [_log()] server lang: <none>
2025-11-03T14:23:47.538 [DEBUG] [Thread-117366] [transport.py] [_log()] kex follows: False
2025-11-03T14:23:47.538 [DEBUG] [Thread-117366] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:23:47.539 [DEBUG] [Thread-117366] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:23:47.539 [DEBUG] [Thread-117366] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:23:47.539 [DEBUG] [Thread-117366] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:23:47.539 [DEBUG] [Thread-117366] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:23:47.539 [DEBUG] [Thread-117366] [transport.py] [_log()] Compression: none
2025-11-03T14:23:47.539 [DEBUG] [Thread-117366] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:23:47.548 [DEBUG] [Thread-117366] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:23:47.548 [DEBUG] [Thread-117366] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:23:47.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:23:47.549 [DEBUG] [Thread-117366] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:23:47.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:23:47.551 [DEBUG] [Thread-117366] [transport.py] [_log()] userauth is OK
2025-11-03T14:23:47.552 [DEBUG] [Thread-117366] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:23:47.552 [DEBUG] [Thread-117366] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:23:47.552 [DEBUG] [Thread-117366] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:23:47.552 [DEBUG] [Thread-117366] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:23:47.571 [INFO] [Thread-117366] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:23:47.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:23:48.350 [DEBUG] [Thread-117366] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:23:48.350 [DEBUG] [Thread-117366] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:23:48.350 [DEBUG] [Thread-117366] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:23:48.390 [DEBUG] [Thread-117366] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:23:48.390 [DEBUG] [Thread-117366] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:23:48.393 [DEBUG] [Thread-117366] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:23:48.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:23:48.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:23:48.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:23:48.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:23:48.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:23:48.403 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:23:48.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:23:48.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:23:48.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:23:48.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.516075 -999.00  +27.00  28.72      8   -9.80 1 1 1 1 1   888    0 34.85 -34.95 ----- 33.8 28.7 328.7 36.3 30.6 -31.4 30.2 -29.9 30.9 -30.1 31.5 -30.8
2025-11-03T14:23:48.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:23:48.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:23:48.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.516075
2025-11-03T14:23:48.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:23:48.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:23:48.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:23:48.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:23:48.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:23:48.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:23:17', tmtdew=44.93, humidity=4.07, cloud=0.0, wind=28.05, temperature=26.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:23:08.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:23:48.412 [DEBUG] [Thread-117366] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:23:48.485 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:23:48.496 [DEBUG] [Thread-117369] [transport.py] [_log()] starting thread (client mode): 0x11798cd0
2025-11-03T14:23:48.496 [DEBUG] [Thread-117369] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:23:48.510 [DEBUG] [Thread-117369] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:23:48.511 [INFO] [Thread-117369] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:23:48.518 [DEBUG] [Thread-117369] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:23:48.518 [DEBUG] [Thread-117369] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:23:48.518 [DEBUG] [Thread-117369] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:23:48.518 [DEBUG] [Thread-117369] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:23:48.518 [DEBUG] [Thread-117369] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:23:48.518 [DEBUG] [Thread-117369] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:23:48.518 [DEBUG] [Thread-117369] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:23:48.518 [DEBUG] [Thread-117369] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:23:48.518 [DEBUG] [Thread-117369] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:23:48.519 [DEBUG] [Thread-117369] [transport.py] [_log()] client lang: <none>
2025-11-03T14:23:48.519 [DEBUG] [Thread-117369] [transport.py] [_log()] server lang: <none>
2025-11-03T14:23:48.519 [DEBUG] [Thread-117369] [transport.py] [_log()] kex follows: False
2025-11-03T14:23:48.519 [DEBUG] [Thread-117369] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:23:48.519 [DEBUG] [Thread-117369] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:23:48.519 [DEBUG] [Thread-117369] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:23:48.519 [DEBUG] [Thread-117369] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:23:48.519 [DEBUG] [Thread-117369] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:23:48.519 [DEBUG] [Thread-117369] [transport.py] [_log()] Compression: none
2025-11-03T14:23:48.519 [DEBUG] [Thread-117369] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:23:48.574 [DEBUG] [Thread-117369] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:23:48.574 [DEBUG] [Thread-117369] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:23:48.574 [DEBUG] [Thread-117369] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:23:48.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:23:48.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:23:48.632 [DEBUG] [Thread-117369] [transport.py] [_log()] userauth is OK
2025-11-03T14:23:48.632 [DEBUG] [Thread-117369] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:23:48.632 [DEBUG] [Thread-117369] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:23:48.632 [DEBUG] [Thread-117369] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:23:48.632 [DEBUG] [Thread-117369] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:23:48.645 [INFO] [Thread-117369] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:23:48.645 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:23:48.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:23:49.544 [DEBUG] [Thread-117369] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:23:49.554 [DEBUG] [Thread-117369] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:23:49.593 [DEBUG] [Thread-117369] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:23:49.593 [DEBUG] [Thread-117369] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:23:49.602 [DEBUG] [Thread-117369] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:23:49.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:23:49.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:23:49.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:23:49.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:23:49.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:23:49.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:23:49.643 [DEBUG] [Thread-117369] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:23:56.936 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:23:56.937 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:24:00.887 [DEBUG] [Thread-117371 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:24:10.632 [DEBUG] [Thread-117372 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:24:15.939 [DEBUG] [Thread-117373 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:24:19.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:24:19.667 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:24:19.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:24:20.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 23, 49), 47.44, 3.27, 0.0, 45.05, 26.47, 0, 0, 0, 2, 1, 0),)
2025-11-03T14:24:20.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:23:49
2025-11-03T14:24:20.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:24:20.622 [DEBUG] [Thread-117374] [transport.py] [_log()] starting thread (client mode): 0x11798520
2025-11-03T14:24:20.622 [DEBUG] [Thread-117374] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:24:20.643 [DEBUG] [Thread-117374] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:24:20.643 [INFO] [Thread-117374] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:24:20.647 [DEBUG] [Thread-117374] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:24:20.647 [DEBUG] [Thread-117374] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:24:20.647 [DEBUG] [Thread-117374] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:24:20.647 [DEBUG] [Thread-117374] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:24:20.647 [DEBUG] [Thread-117374] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:24:20.647 [DEBUG] [Thread-117374] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:24:20.647 [DEBUG] [Thread-117374] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:24:20.647 [DEBUG] [Thread-117374] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:24:20.647 [DEBUG] [Thread-117374] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:24:20.647 [DEBUG] [Thread-117374] [transport.py] [_log()] client lang: <none>
2025-11-03T14:24:20.647 [DEBUG] [Thread-117374] [transport.py] [_log()] server lang: <none>
2025-11-03T14:24:20.648 [DEBUG] [Thread-117374] [transport.py] [_log()] kex follows: False
2025-11-03T14:24:20.648 [DEBUG] [Thread-117374] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:24:20.648 [DEBUG] [Thread-117374] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:24:20.648 [DEBUG] [Thread-117374] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:24:20.648 [DEBUG] [Thread-117374] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:24:20.648 [DEBUG] [Thread-117374] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:24:20.648 [DEBUG] [Thread-117374] [transport.py] [_log()] Compression: none
2025-11-03T14:24:20.648 [DEBUG] [Thread-117374] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:24:20.668 [DEBUG] [Thread-117374] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:24:20.669 [DEBUG] [Thread-117374] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:24:20.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:24:20.671 [DEBUG] [Thread-117374] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:24:20.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:24:20.673 [DEBUG] [Thread-117374] [transport.py] [_log()] userauth is OK
2025-11-03T14:24:20.673 [DEBUG] [Thread-117374] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:24:20.673 [DEBUG] [Thread-117374] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:24:20.673 [DEBUG] [Thread-117374] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:24:20.673 [DEBUG] [Thread-117374] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:24:20.705 [INFO] [Thread-117374] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:24:20.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:24:21.350 [DEBUG] [Thread-117374] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:24:21.350 [DEBUG] [Thread-117374] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:24:21.351 [DEBUG] [Thread-117374] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:24:21.391 [DEBUG] [Thread-117374] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:24:21.391 [DEBUG] [Thread-117374] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:24:21.395 [DEBUG] [Thread-117374] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:24:21.406 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:24:21.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:24:21.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:24:21.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:24:21.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:24:21.418 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:24:21.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:24:21.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:24:21.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:24:21.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.516423 -999.00  +26.50  42.88      7  -11.00 1 1 2 1 1   888    0 35.35 -26.73 ----- 41.6 42.9 325.4 50.6 30.8 -31.2 30.2 -31.5 30.9 -34.4 31.6 -30.5
2025-11-03T14:24:21.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:24:21.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:24:21.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.516423
2025-11-03T14:24:21.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:24:21.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:24:21.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:24:21.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:24:21.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:24:21.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:23:49', tmtdew=47.44, humidity=3.27, cloud=0.0, wind=45.05, temperature=26.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=1, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:23:38.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:24:21.427 [DEBUG] [Thread-117374] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:24:21.511 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:24:21.523 [DEBUG] [Thread-117377] [transport.py] [_log()] starting thread (client mode): 0xeda11b0
2025-11-03T14:24:21.524 [DEBUG] [Thread-117377] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:24:21.538 [DEBUG] [Thread-117377] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:24:21.539 [INFO] [Thread-117377] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:24:21.546 [DEBUG] [Thread-117377] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:24:21.547 [DEBUG] [Thread-117377] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:24:21.547 [DEBUG] [Thread-117377] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:24:21.547 [DEBUG] [Thread-117377] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:24:21.547 [DEBUG] [Thread-117377] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:24:21.547 [DEBUG] [Thread-117377] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:24:21.548 [DEBUG] [Thread-117377] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:24:21.548 [DEBUG] [Thread-117377] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:24:21.548 [DEBUG] [Thread-117377] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:24:21.548 [DEBUG] [Thread-117377] [transport.py] [_log()] client lang: <none>
2025-11-03T14:24:21.548 [DEBUG] [Thread-117377] [transport.py] [_log()] server lang: <none>
2025-11-03T14:24:21.548 [DEBUG] [Thread-117377] [transport.py] [_log()] kex follows: False
2025-11-03T14:24:21.548 [DEBUG] [Thread-117377] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:24:21.548 [DEBUG] [Thread-117377] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:24:21.548 [DEBUG] [Thread-117377] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:24:21.548 [DEBUG] [Thread-117377] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:24:21.548 [DEBUG] [Thread-117377] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:24:21.548 [DEBUG] [Thread-117377] [transport.py] [_log()] Compression: none
2025-11-03T14:24:21.548 [DEBUG] [Thread-117377] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:24:21.605 [DEBUG] [Thread-117377] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:24:21.605 [DEBUG] [Thread-117377] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:24:21.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:24:21.607 [DEBUG] [Thread-117377] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:24:21.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:24:21.661 [DEBUG] [Thread-117377] [transport.py] [_log()] userauth is OK
2025-11-03T14:24:21.661 [DEBUG] [Thread-117377] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:24:21.661 [DEBUG] [Thread-117377] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:24:21.661 [DEBUG] [Thread-117377] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:24:21.661 [DEBUG] [Thread-117377] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:24:21.686 [INFO] [Thread-117377] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:24:21.686 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:24:21.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:24:22.523 [DEBUG] [Thread-117377] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:24:22.523 [DEBUG] [Thread-117377] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:24:22.571 [DEBUG] [Thread-117377] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:24:22.571 [DEBUG] [Thread-117377] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:24:22.581 [DEBUG] [Thread-117377] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:24:22.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:24:22.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:24:22.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:24:22.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:24:22.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:24:22.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:24:22.617 [DEBUG] [Thread-117377] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:24:30.974 [DEBUG] [Thread-117379 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:24:46.026 [DEBUG] [Thread-117380 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:24:52.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:24:52.640 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:24:52.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:24:53.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 24, 22), 48.06, 3.11, 0.0, 40.72, 26.66, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:24:53.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:24:22
2025-11-03T14:24:53.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:24:53.580 [DEBUG] [Thread-117381] [transport.py] [_log()] starting thread (client mode): 0xed4eec0
2025-11-03T14:24:53.580 [DEBUG] [Thread-117381] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:24:53.601 [DEBUG] [Thread-117381] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:24:53.601 [INFO] [Thread-117381] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:24:53.605 [DEBUG] [Thread-117381] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:24:53.605 [DEBUG] [Thread-117381] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:24:53.605 [DEBUG] [Thread-117381] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:24:53.605 [DEBUG] [Thread-117381] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:24:53.605 [DEBUG] [Thread-117381] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:24:53.605 [DEBUG] [Thread-117381] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:24:53.605 [DEBUG] [Thread-117381] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:24:53.605 [DEBUG] [Thread-117381] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:24:53.605 [DEBUG] [Thread-117381] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:24:53.605 [DEBUG] [Thread-117381] [transport.py] [_log()] client lang: <none>
2025-11-03T14:24:53.605 [DEBUG] [Thread-117381] [transport.py] [_log()] server lang: <none>
2025-11-03T14:24:53.605 [DEBUG] [Thread-117381] [transport.py] [_log()] kex follows: False
2025-11-03T14:24:53.605 [DEBUG] [Thread-117381] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:24:53.605 [DEBUG] [Thread-117381] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:24:53.605 [DEBUG] [Thread-117381] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:24:53.605 [DEBUG] [Thread-117381] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:24:53.605 [DEBUG] [Thread-117381] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:24:53.605 [DEBUG] [Thread-117381] [transport.py] [_log()] Compression: none
2025-11-03T14:24:53.605 [DEBUG] [Thread-117381] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:24:53.619 [DEBUG] [Thread-117381] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:24:53.620 [DEBUG] [Thread-117381] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:24:53.629 [DEBUG] [Thread-117381] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:24:53.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:24:53.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:24:53.630 [DEBUG] [Thread-117381] [transport.py] [_log()] userauth is OK
2025-11-03T14:24:53.630 [DEBUG] [Thread-117381] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:24:53.630 [DEBUG] [Thread-117381] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:24:53.630 [DEBUG] [Thread-117381] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:24:53.630 [DEBUG] [Thread-117381] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:24:53.639 [INFO] [Thread-117381] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:24:53.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:24:54.455 [DEBUG] [Thread-117381] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:24:54.464 [DEBUG] [Thread-117381] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:24:54.465 [DEBUG] [Thread-117381] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:24:54.496 [DEBUG] [Thread-117381] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:24:54.497 [DEBUG] [Thread-117381] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:24:54.500 [DEBUG] [Thread-117381] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:24:54.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:24:54.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:24:54.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:24:54.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:24:54.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:24:54.525 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:24:54.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:24:54.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:24:54.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:24:54.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.516770 -999.00  +26.20  32.33      7  -11.10 1 1 2 1 1   888    0 34.84 -21.36 ----- 35.0 32.3 326.0 41.1 30.6 -31.2 30.1 -32.1 30.9 -31.5 31.7 -30.7
2025-11-03T14:24:54.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:24:54.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:24:54.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.516770
2025-11-03T14:24:54.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:24:54.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:24:54.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:24:54.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:24:54.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:24:54.528 [DEBUG] [Thread-117381] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:24:54.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:24:22', tmtdew=48.06, humidity=3.11, cloud=0.0, wind=40.72, temperature=26.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:24:08.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:24:54.613 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:24:54.625 [DEBUG] [Thread-117384] [transport.py] [_log()] starting thread (client mode): 0x1179a080
2025-11-03T14:24:54.625 [DEBUG] [Thread-117384] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:24:54.641 [DEBUG] [Thread-117384] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:24:54.641 [INFO] [Thread-117384] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:24:54.650 [DEBUG] [Thread-117384] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:24:54.650 [DEBUG] [Thread-117384] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:24:54.650 [DEBUG] [Thread-117384] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:24:54.650 [DEBUG] [Thread-117384] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:24:54.650 [DEBUG] [Thread-117384] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:24:54.650 [DEBUG] [Thread-117384] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:24:54.650 [DEBUG] [Thread-117384] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:24:54.650 [DEBUG] [Thread-117384] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:24:54.650 [DEBUG] [Thread-117384] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:24:54.650 [DEBUG] [Thread-117384] [transport.py] [_log()] client lang: <none>
2025-11-03T14:24:54.650 [DEBUG] [Thread-117384] [transport.py] [_log()] server lang: <none>
2025-11-03T14:24:54.650 [DEBUG] [Thread-117384] [transport.py] [_log()] kex follows: False
2025-11-03T14:24:54.650 [DEBUG] [Thread-117384] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:24:54.650 [DEBUG] [Thread-117384] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:24:54.650 [DEBUG] [Thread-117384] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:24:54.650 [DEBUG] [Thread-117384] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:24:54.650 [DEBUG] [Thread-117384] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:24:54.650 [DEBUG] [Thread-117384] [transport.py] [_log()] Compression: none
2025-11-03T14:24:54.650 [DEBUG] [Thread-117384] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:24:54.715 [DEBUG] [Thread-117384] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:24:54.715 [DEBUG] [Thread-117384] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:24:54.715 [DEBUG] [Thread-117384] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:24:54.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:24:54.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:24:54.772 [DEBUG] [Thread-117384] [transport.py] [_log()] userauth is OK
2025-11-03T14:24:54.772 [DEBUG] [Thread-117384] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:24:54.772 [DEBUG] [Thread-117384] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:24:54.772 [DEBUG] [Thread-117384] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:24:54.772 [DEBUG] [Thread-117384] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:24:54.786 [INFO] [Thread-117384] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:24:54.787 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:24:54.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:24:55.622 [DEBUG] [Thread-117384] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:24:55.622 [DEBUG] [Thread-117384] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:24:55.669 [DEBUG] [Thread-117384] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:24:55.669 [DEBUG] [Thread-117384] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:24:55.677 [DEBUG] [Thread-117384] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:24:55.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:24:55.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:24:55.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:24:55.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:24:55.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:24:55.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:24:55.710 [DEBUG] [Thread-117384] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:24:57.078 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:24:57.078 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:25:01.054 [DEBUG] [Thread-117386 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:25:10.691 [DEBUG] [Thread-117387 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:25:16.093 [DEBUG] [Thread-117388 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:25:25.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:25:25.732 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:25:25.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:25:26.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 24, 54), 48.1, 3.12, 0.0, 35.15, 27.06, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:25:26.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:24:54
2025-11-03T14:25:26.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:25:26.774 [DEBUG] [Thread-117389] [transport.py] [_log()] starting thread (client mode): 0x11781810
2025-11-03T14:25:26.774 [DEBUG] [Thread-117389] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:25:26.785 [DEBUG] [Thread-117389] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:25:26.785 [INFO] [Thread-117389] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:25:26.788 [DEBUG] [Thread-117389] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:25:26.789 [DEBUG] [Thread-117389] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:25:26.789 [DEBUG] [Thread-117389] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:25:26.789 [DEBUG] [Thread-117389] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:25:26.789 [DEBUG] [Thread-117389] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:25:26.789 [DEBUG] [Thread-117389] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:25:26.789 [DEBUG] [Thread-117389] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:25:26.789 [DEBUG] [Thread-117389] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:25:26.789 [DEBUG] [Thread-117389] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:25:26.789 [DEBUG] [Thread-117389] [transport.py] [_log()] client lang: <none>
2025-11-03T14:25:26.789 [DEBUG] [Thread-117389] [transport.py] [_log()] server lang: <none>
2025-11-03T14:25:26.789 [DEBUG] [Thread-117389] [transport.py] [_log()] kex follows: False
2025-11-03T14:25:26.789 [DEBUG] [Thread-117389] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:25:26.789 [DEBUG] [Thread-117389] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:25:26.789 [DEBUG] [Thread-117389] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:25:26.790 [DEBUG] [Thread-117389] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:25:26.790 [DEBUG] [Thread-117389] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:25:26.790 [DEBUG] [Thread-117389] [transport.py] [_log()] Compression: none
2025-11-03T14:25:26.790 [DEBUG] [Thread-117389] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:25:26.805 [DEBUG] [Thread-117389] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:25:26.806 [DEBUG] [Thread-117389] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:25:26.806 [DEBUG] [Thread-117389] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:25:26.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:25:26.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:25:26.806 [DEBUG] [Thread-117389] [transport.py] [_log()] userauth is OK
2025-11-03T14:25:26.807 [DEBUG] [Thread-117389] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:25:26.807 [DEBUG] [Thread-117389] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:25:26.807 [DEBUG] [Thread-117389] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:25:26.807 [DEBUG] [Thread-117389] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:25:26.816 [INFO] [Thread-117389] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:25:26.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:25:27.430 [DEBUG] [Thread-117389] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:25:27.430 [DEBUG] [Thread-117389] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:25:27.430 [DEBUG] [Thread-117389] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:25:27.471 [DEBUG] [Thread-117389] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:25:27.471 [DEBUG] [Thread-117389] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:25:27.473 [DEBUG] [Thread-117389] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:25:27.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:25:27.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:25:27.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:25:27.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:25:27.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:25:27.490 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:25:27.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:25:27.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:25:27.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:25:27.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.517464 -999.00  +26.20  25.99      8  -10.20 1 1 1 1 1   888    0 36.50 -11.90 ----- 38.8 26.0 310.6 34.4 30.7 -31.9 30.2 -30.7 30.9 -34.6 31.7 -30.2
2025-11-03T14:25:27.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:25:27.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:25:27.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.517464
2025-11-03T14:25:27.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:25:27.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:25:27.491 [DEBUG] [Thread-117389] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:25:27.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:25:27.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:25:27.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:25:27.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:24:54', tmtdew=48.1, humidity=3.12, cloud=0.0, wind=35.15, temperature=27.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:25:08.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:25:27.572 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:25:27.584 [DEBUG] [Thread-117392] [transport.py] [_log()] starting thread (client mode): 0x11781120
2025-11-03T14:25:27.584 [DEBUG] [Thread-117392] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:25:27.599 [DEBUG] [Thread-117392] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:25:27.599 [INFO] [Thread-117392] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:25:27.606 [DEBUG] [Thread-117392] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:25:27.606 [DEBUG] [Thread-117392] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:25:27.606 [DEBUG] [Thread-117392] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:25:27.606 [DEBUG] [Thread-117392] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:25:27.606 [DEBUG] [Thread-117392] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:25:27.606 [DEBUG] [Thread-117392] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:25:27.606 [DEBUG] [Thread-117392] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:25:27.606 [DEBUG] [Thread-117392] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:25:27.606 [DEBUG] [Thread-117392] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:25:27.606 [DEBUG] [Thread-117392] [transport.py] [_log()] client lang: <none>
2025-11-03T14:25:27.606 [DEBUG] [Thread-117392] [transport.py] [_log()] server lang: <none>
2025-11-03T14:25:27.606 [DEBUG] [Thread-117392] [transport.py] [_log()] kex follows: False
2025-11-03T14:25:27.606 [DEBUG] [Thread-117392] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:25:27.606 [DEBUG] [Thread-117392] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:25:27.606 [DEBUG] [Thread-117392] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:25:27.606 [DEBUG] [Thread-117392] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:25:27.606 [DEBUG] [Thread-117392] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:25:27.606 [DEBUG] [Thread-117392] [transport.py] [_log()] Compression: none
2025-11-03T14:25:27.606 [DEBUG] [Thread-117392] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:25:27.664 [DEBUG] [Thread-117392] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:25:27.664 [DEBUG] [Thread-117392] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:25:27.665 [DEBUG] [Thread-117392] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:25:27.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:25:27.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:25:27.721 [DEBUG] [Thread-117392] [transport.py] [_log()] userauth is OK
2025-11-03T14:25:27.721 [DEBUG] [Thread-117392] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:25:27.721 [DEBUG] [Thread-117392] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:25:27.721 [DEBUG] [Thread-117392] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:25:27.721 [DEBUG] [Thread-117392] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:25:27.735 [INFO] [Thread-117392] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:25:27.735 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:25:27.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:25:28.599 [DEBUG] [Thread-117392] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:25:28.599 [DEBUG] [Thread-117392] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:25:28.647 [DEBUG] [Thread-117392] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:25:28.647 [DEBUG] [Thread-117392] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:25:28.656 [DEBUG] [Thread-117392] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:25:28.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:25:28.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:25:28.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:25:28.680 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:25:28.680 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:25:28.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:25:28.687 [DEBUG] [Thread-117392] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:25:31.122 [DEBUG] [Thread-117394 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:25:46.176 [DEBUG] [Thread-117395 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:25:57.218 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:25:57.219 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:25:58.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:25:58.710 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:25:58.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:25:59.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 25, 26), 48.26, 3.09, 0.0, 33.77, 27.15, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:25:59.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:25:26
2025-11-03T14:25:59.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:25:59.624 [DEBUG] [Thread-117396] [transport.py] [_log()] starting thread (client mode): 0xeda0730
2025-11-03T14:25:59.624 [DEBUG] [Thread-117396] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:25:59.645 [DEBUG] [Thread-117396] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:25:59.645 [INFO] [Thread-117396] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:25:59.647 [DEBUG] [Thread-117396] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:25:59.647 [DEBUG] [Thread-117396] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:25:59.647 [DEBUG] [Thread-117396] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:25:59.647 [DEBUG] [Thread-117396] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:25:59.647 [DEBUG] [Thread-117396] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:25:59.648 [DEBUG] [Thread-117396] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:25:59.648 [DEBUG] [Thread-117396] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:25:59.648 [DEBUG] [Thread-117396] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:25:59.648 [DEBUG] [Thread-117396] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:25:59.648 [DEBUG] [Thread-117396] [transport.py] [_log()] client lang: <none>
2025-11-03T14:25:59.648 [DEBUG] [Thread-117396] [transport.py] [_log()] server lang: <none>
2025-11-03T14:25:59.648 [DEBUG] [Thread-117396] [transport.py] [_log()] kex follows: False
2025-11-03T14:25:59.648 [DEBUG] [Thread-117396] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:25:59.648 [DEBUG] [Thread-117396] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:25:59.648 [DEBUG] [Thread-117396] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:25:59.648 [DEBUG] [Thread-117396] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:25:59.648 [DEBUG] [Thread-117396] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:25:59.648 [DEBUG] [Thread-117396] [transport.py] [_log()] Compression: none
2025-11-03T14:25:59.648 [DEBUG] [Thread-117396] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:25:59.666 [DEBUG] [Thread-117396] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:25:59.666 [DEBUG] [Thread-117396] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:25:59.666 [DEBUG] [Thread-117396] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:25:59.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:25:59.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:25:59.666 [DEBUG] [Thread-117396] [transport.py] [_log()] userauth is OK
2025-11-03T14:25:59.666 [DEBUG] [Thread-117396] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:25:59.666 [DEBUG] [Thread-117396] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:25:59.666 [DEBUG] [Thread-117396] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:25:59.666 [DEBUG] [Thread-117396] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:25:59.681 [INFO] [Thread-117396] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:25:59.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:26:00.342 [DEBUG] [Thread-117396] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:26:00.342 [DEBUG] [Thread-117396] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:26:00.343 [DEBUG] [Thread-117396] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:26:00.384 [DEBUG] [Thread-117396] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:26:00.384 [DEBUG] [Thread-117396] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:26:00.386 [DEBUG] [Thread-117396] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:26:00.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:26:00.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:26:00.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:26:00.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:26:00.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:26:00.406 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:26:00.406 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:26:00.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:26:00.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:26:00.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.517812 -999.00  +26.10  42.62      7  -11.00 1 1 2 1 1   888    0 36.08 -9.69 ----- 37.7 42.6 313.4 44.8 30.8 -31.4 30.2 -31.2 30.9 -29.9 31.7 -30.5
2025-11-03T14:26:00.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:26:00.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:26:00.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.517812
2025-11-03T14:26:00.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:26:00.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:26:00.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:26:00.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:26:00.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:26:00.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:25:26', tmtdew=48.26, humidity=3.09, cloud=0.0, wind=33.77, temperature=27.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:25:38.957', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:26:00.408 [DEBUG] [Thread-117396] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:26:00.482 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:26:00.491 [DEBUG] [Thread-117399] [transport.py] [_log()] starting thread (client mode): 0xed4c370
2025-11-03T14:26:00.492 [DEBUG] [Thread-117399] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:26:00.507 [DEBUG] [Thread-117399] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:26:00.507 [INFO] [Thread-117399] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:26:00.514 [DEBUG] [Thread-117399] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:26:00.514 [DEBUG] [Thread-117399] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:26:00.514 [DEBUG] [Thread-117399] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:26:00.514 [DEBUG] [Thread-117399] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:26:00.514 [DEBUG] [Thread-117399] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:26:00.514 [DEBUG] [Thread-117399] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:26:00.514 [DEBUG] [Thread-117399] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:26:00.515 [DEBUG] [Thread-117399] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:26:00.515 [DEBUG] [Thread-117399] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:26:00.515 [DEBUG] [Thread-117399] [transport.py] [_log()] client lang: <none>
2025-11-03T14:26:00.515 [DEBUG] [Thread-117399] [transport.py] [_log()] server lang: <none>
2025-11-03T14:26:00.515 [DEBUG] [Thread-117399] [transport.py] [_log()] kex follows: False
2025-11-03T14:26:00.515 [DEBUG] [Thread-117399] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:26:00.515 [DEBUG] [Thread-117399] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:26:00.515 [DEBUG] [Thread-117399] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:26:00.515 [DEBUG] [Thread-117399] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:26:00.515 [DEBUG] [Thread-117399] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:26:00.515 [DEBUG] [Thread-117399] [transport.py] [_log()] Compression: none
2025-11-03T14:26:00.515 [DEBUG] [Thread-117399] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:26:00.572 [DEBUG] [Thread-117399] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:26:00.573 [DEBUG] [Thread-117399] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:26:00.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:26:00.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:26:00.573 [DEBUG] [Thread-117399] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:26:00.629 [DEBUG] [Thread-117399] [transport.py] [_log()] userauth is OK
2025-11-03T14:26:00.629 [DEBUG] [Thread-117399] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:26:00.629 [DEBUG] [Thread-117399] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:26:00.629 [DEBUG] [Thread-117399] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:26:00.629 [DEBUG] [Thread-117399] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:26:00.643 [INFO] [Thread-117399] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:26:00.644 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:26:00.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:26:01.204 [DEBUG] [Thread-117401 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:26:01.493 [DEBUG] [Thread-117399] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:26:01.493 [DEBUG] [Thread-117399] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:26:01.541 [DEBUG] [Thread-117399] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:26:01.541 [DEBUG] [Thread-117399] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:26:01.550 [DEBUG] [Thread-117399] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:26:01.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:26:01.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:26:01.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:26:01.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:26:01.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:26:01.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:26:01.581 [DEBUG] [Thread-117399] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:26:10.820 [DEBUG] [Thread-117402 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:26:16.248 [DEBUG] [Thread-117403 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:26:31.288 [DEBUG] [Thread-117404 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:26:31.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:26:31.576 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:26:31.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:26:32.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 25, 59), 48.12, 3.09, 0.0, 33.29, 26.86, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:26:32.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:25:59
2025-11-03T14:26:32.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:26:32.696 [DEBUG] [Thread-117405] [transport.py] [_log()] starting thread (client mode): 0xed4d7b0
2025-11-03T14:26:32.697 [DEBUG] [Thread-117405] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:26:32.715 [DEBUG] [Thread-117405] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:26:32.716 [INFO] [Thread-117405] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:26:32.718 [DEBUG] [Thread-117405] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:26:32.719 [DEBUG] [Thread-117405] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:26:32.719 [DEBUG] [Thread-117405] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:26:32.719 [DEBUG] [Thread-117405] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:26:32.719 [DEBUG] [Thread-117405] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:26:32.719 [DEBUG] [Thread-117405] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:26:32.719 [DEBUG] [Thread-117405] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:26:32.719 [DEBUG] [Thread-117405] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:26:32.719 [DEBUG] [Thread-117405] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:26:32.719 [DEBUG] [Thread-117405] [transport.py] [_log()] client lang: <none>
2025-11-03T14:26:32.719 [DEBUG] [Thread-117405] [transport.py] [_log()] server lang: <none>
2025-11-03T14:26:32.719 [DEBUG] [Thread-117405] [transport.py] [_log()] kex follows: False
2025-11-03T14:26:32.719 [DEBUG] [Thread-117405] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:26:32.719 [DEBUG] [Thread-117405] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:26:32.719 [DEBUG] [Thread-117405] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:26:32.719 [DEBUG] [Thread-117405] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:26:32.719 [DEBUG] [Thread-117405] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:26:32.719 [DEBUG] [Thread-117405] [transport.py] [_log()] Compression: none
2025-11-03T14:26:32.719 [DEBUG] [Thread-117405] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:26:32.735 [DEBUG] [Thread-117405] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:26:32.735 [DEBUG] [Thread-117405] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:26:32.736 [DEBUG] [Thread-117405] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:26:32.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:26:32.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:26:32.737 [DEBUG] [Thread-117405] [transport.py] [_log()] userauth is OK
2025-11-03T14:26:32.737 [DEBUG] [Thread-117405] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:26:32.737 [DEBUG] [Thread-117405] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:26:32.737 [DEBUG] [Thread-117405] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:26:32.737 [DEBUG] [Thread-117405] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:26:32.755 [INFO] [Thread-117405] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:26:32.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:26:33.406 [DEBUG] [Thread-117405] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:26:33.406 [DEBUG] [Thread-117405] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:26:33.406 [DEBUG] [Thread-117405] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:26:33.447 [DEBUG] [Thread-117405] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:26:33.447 [DEBUG] [Thread-117405] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:26:33.449 [DEBUG] [Thread-117405] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:26:33.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:26:33.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:26:33.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:26:33.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:26:33.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:26:33.468 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:26:33.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:26:33.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:26:33.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:26:33.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.518159 -999.00  +26.20  31.46      7  -11.00 1 1 2 1 1   888    0 35.33 -6.21 ----- 29.6 31.5 310.6 36.5 30.8 -32.0 30.2 -31.2 30.9 -30.0 31.7 -30.3
2025-11-03T14:26:33.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:26:33.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:26:33.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.518159
2025-11-03T14:26:33.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:26:33.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:26:33.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:26:33.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:26:33.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:26:33.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:25:59', tmtdew=48.12, humidity=3.09, cloud=0.0, wind=33.29, temperature=26.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:26:08.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:26:33.469 [DEBUG] [Thread-117405] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:26:33.543 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:26:33.559 [DEBUG] [Thread-117408] [transport.py] [_log()] starting thread (client mode): 0xeda0dc0
2025-11-03T14:26:33.559 [DEBUG] [Thread-117408] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:26:33.578 [DEBUG] [Thread-117408] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:26:33.578 [INFO] [Thread-117408] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:26:33.589 [DEBUG] [Thread-117408] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:26:33.589 [DEBUG] [Thread-117408] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:26:33.589 [DEBUG] [Thread-117408] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:26:33.589 [DEBUG] [Thread-117408] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:26:33.589 [DEBUG] [Thread-117408] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:26:33.589 [DEBUG] [Thread-117408] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:26:33.589 [DEBUG] [Thread-117408] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:26:33.589 [DEBUG] [Thread-117408] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:26:33.589 [DEBUG] [Thread-117408] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:26:33.589 [DEBUG] [Thread-117408] [transport.py] [_log()] client lang: <none>
2025-11-03T14:26:33.589 [DEBUG] [Thread-117408] [transport.py] [_log()] server lang: <none>
2025-11-03T14:26:33.589 [DEBUG] [Thread-117408] [transport.py] [_log()] kex follows: False
2025-11-03T14:26:33.589 [DEBUG] [Thread-117408] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:26:33.589 [DEBUG] [Thread-117408] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:26:33.589 [DEBUG] [Thread-117408] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:26:33.589 [DEBUG] [Thread-117408] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:26:33.589 [DEBUG] [Thread-117408] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:26:33.590 [DEBUG] [Thread-117408] [transport.py] [_log()] Compression: none
2025-11-03T14:26:33.590 [DEBUG] [Thread-117408] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:26:33.650 [DEBUG] [Thread-117408] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:26:33.650 [DEBUG] [Thread-117408] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:26:33.650 [DEBUG] [Thread-117408] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:26:33.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:26:33.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:26:33.708 [DEBUG] [Thread-117408] [transport.py] [_log()] userauth is OK
2025-11-03T14:26:33.708 [DEBUG] [Thread-117408] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:26:33.708 [DEBUG] [Thread-117408] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:26:33.708 [DEBUG] [Thread-117408] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:26:33.708 [DEBUG] [Thread-117408] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:26:33.723 [INFO] [Thread-117408] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:26:33.723 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:26:33.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:26:34.573 [DEBUG] [Thread-117408] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:26:34.573 [DEBUG] [Thread-117408] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:26:34.622 [DEBUG] [Thread-117408] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:26:34.622 [DEBUG] [Thread-117408] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:26:34.630 [DEBUG] [Thread-117408] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:26:34.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:26:34.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:26:34.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:26:34.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:26:34.654 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:26:34.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:26:34.662 [DEBUG] [Thread-117408] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:26:46.327 [DEBUG] [Thread-117410 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:26:57.360 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:26:57.361 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:27:01.370 [DEBUG] [Thread-117411 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:27:04.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:27:04.684 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:27:04.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:27:05.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 26, 31), 48.21, 3.07, 0.0, 36.7, 26.94, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:27:05.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:26:31
2025-11-03T14:27:05.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:27:05.726 [DEBUG] [Thread-117412] [transport.py] [_log()] starting thread (client mode): 0xeda0790
2025-11-03T14:27:05.726 [DEBUG] [Thread-117412] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:27:05.747 [DEBUG] [Thread-117412] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:27:05.747 [INFO] [Thread-117412] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:27:05.750 [DEBUG] [Thread-117412] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:27:05.750 [DEBUG] [Thread-117412] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:27:05.750 [DEBUG] [Thread-117412] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:27:05.750 [DEBUG] [Thread-117412] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:27:05.750 [DEBUG] [Thread-117412] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:27:05.750 [DEBUG] [Thread-117412] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:27:05.750 [DEBUG] [Thread-117412] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:27:05.750 [DEBUG] [Thread-117412] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:27:05.750 [DEBUG] [Thread-117412] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:27:05.750 [DEBUG] [Thread-117412] [transport.py] [_log()] client lang: <none>
2025-11-03T14:27:05.750 [DEBUG] [Thread-117412] [transport.py] [_log()] server lang: <none>
2025-11-03T14:27:05.750 [DEBUG] [Thread-117412] [transport.py] [_log()] kex follows: False
2025-11-03T14:27:05.750 [DEBUG] [Thread-117412] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:27:05.750 [DEBUG] [Thread-117412] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:27:05.750 [DEBUG] [Thread-117412] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:27:05.750 [DEBUG] [Thread-117412] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:27:05.751 [DEBUG] [Thread-117412] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:27:05.751 [DEBUG] [Thread-117412] [transport.py] [_log()] Compression: none
2025-11-03T14:27:05.751 [DEBUG] [Thread-117412] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:27:05.768 [DEBUG] [Thread-117412] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:27:05.768 [DEBUG] [Thread-117412] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:27:05.768 [DEBUG] [Thread-117412] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:27:05.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:27:05.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:27:05.769 [DEBUG] [Thread-117412] [transport.py] [_log()] userauth is OK
2025-11-03T14:27:05.769 [DEBUG] [Thread-117412] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:27:05.769 [DEBUG] [Thread-117412] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:27:05.769 [DEBUG] [Thread-117412] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:27:05.769 [DEBUG] [Thread-117412] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:27:05.796 [INFO] [Thread-117412] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:27:05.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:27:06.385 [DEBUG] [Thread-117412] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:27:06.385 [DEBUG] [Thread-117412] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:27:06.386 [DEBUG] [Thread-117412] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:27:06.426 [DEBUG] [Thread-117412] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:27:06.426 [DEBUG] [Thread-117412] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:27:06.429 [DEBUG] [Thread-117412] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:27:06.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:27:06.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:27:06.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:27:06.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:27:06.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:27:06.444 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:27:06.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:27:06.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:27:06.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:27:06.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.518506 -999.00  +26.20  32.16      7  -10.70 1 1 2 1 1   888    0 36.11 -2.27 ----- 32.0 32.2 311.2 38.6 30.9 -32.0 30.4 -30.5 31.0 -30.5 31.9 -29.7
2025-11-03T14:27:06.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:27:06.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:27:06.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.518506
2025-11-03T14:27:06.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:27:06.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:27:06.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:27:06.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:27:06.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:27:06.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:26:31', tmtdew=48.21, humidity=3.07, cloud=0.0, wind=36.7, temperature=26.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:26:38.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:27:06.445 [DEBUG] [Thread-117412] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:27:06.520 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:27:06.532 [DEBUG] [Thread-117415] [transport.py] [_log()] starting thread (client mode): 0xed4d390
2025-11-03T14:27:06.532 [DEBUG] [Thread-117415] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:27:06.547 [DEBUG] [Thread-117415] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:27:06.547 [INFO] [Thread-117415] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:27:06.555 [DEBUG] [Thread-117415] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:27:06.555 [DEBUG] [Thread-117415] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:27:06.555 [DEBUG] [Thread-117415] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:27:06.555 [DEBUG] [Thread-117415] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:27:06.555 [DEBUG] [Thread-117415] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:27:06.555 [DEBUG] [Thread-117415] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:27:06.555 [DEBUG] [Thread-117415] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:27:06.555 [DEBUG] [Thread-117415] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:27:06.555 [DEBUG] [Thread-117415] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:27:06.555 [DEBUG] [Thread-117415] [transport.py] [_log()] client lang: <none>
2025-11-03T14:27:06.555 [DEBUG] [Thread-117415] [transport.py] [_log()] server lang: <none>
2025-11-03T14:27:06.555 [DEBUG] [Thread-117415] [transport.py] [_log()] kex follows: False
2025-11-03T14:27:06.555 [DEBUG] [Thread-117415] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:27:06.555 [DEBUG] [Thread-117415] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:27:06.555 [DEBUG] [Thread-117415] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:27:06.555 [DEBUG] [Thread-117415] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:27:06.555 [DEBUG] [Thread-117415] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:27:06.555 [DEBUG] [Thread-117415] [transport.py] [_log()] Compression: none
2025-11-03T14:27:06.555 [DEBUG] [Thread-117415] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:27:06.613 [DEBUG] [Thread-117415] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:27:06.613 [DEBUG] [Thread-117415] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:27:06.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:27:06.614 [DEBUG] [Thread-117415] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:27:06.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:27:06.671 [DEBUG] [Thread-117415] [transport.py] [_log()] userauth is OK
2025-11-03T14:27:06.671 [DEBUG] [Thread-117415] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:27:06.671 [DEBUG] [Thread-117415] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:27:06.671 [DEBUG] [Thread-117415] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:27:06.671 [DEBUG] [Thread-117415] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:27:06.689 [INFO] [Thread-117415] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:27:06.689 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:27:06.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:27:07.565 [DEBUG] [Thread-117415] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:27:07.566 [DEBUG] [Thread-117415] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:27:07.614 [DEBUG] [Thread-117415] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:27:07.614 [DEBUG] [Thread-117415] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:27:07.623 [DEBUG] [Thread-117415] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:27:07.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:27:07.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:27:07.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:27:07.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:27:07.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:27:07.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:27:07.669 [DEBUG] [Thread-117415] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:27:10.863 [DEBUG] [Thread-117417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:27:16.401 [DEBUG] [Thread-117418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:27:31.452 [DEBUG] [Thread-117419 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:27:37.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:27:37.691 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:27:37.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:27:38.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 27, 3), 47.4, 3.27, 0.0, 33.24, 26.57, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:27:38.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:27:03
2025-11-03T14:27:38.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:27:38.736 [DEBUG] [Thread-117420] [transport.py] [_log()] starting thread (client mode): 0x11783b20
2025-11-03T14:27:38.737 [DEBUG] [Thread-117420] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:27:38.756 [DEBUG] [Thread-117420] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:27:38.756 [INFO] [Thread-117420] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:27:38.759 [DEBUG] [Thread-117420] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:27:38.759 [DEBUG] [Thread-117420] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:27:38.759 [DEBUG] [Thread-117420] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:27:38.759 [DEBUG] [Thread-117420] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:27:38.759 [DEBUG] [Thread-117420] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:27:38.759 [DEBUG] [Thread-117420] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:27:38.760 [DEBUG] [Thread-117420] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:27:38.760 [DEBUG] [Thread-117420] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:27:38.760 [DEBUG] [Thread-117420] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:27:38.760 [DEBUG] [Thread-117420] [transport.py] [_log()] client lang: <none>
2025-11-03T14:27:38.760 [DEBUG] [Thread-117420] [transport.py] [_log()] server lang: <none>
2025-11-03T14:27:38.760 [DEBUG] [Thread-117420] [transport.py] [_log()] kex follows: False
2025-11-03T14:27:38.760 [DEBUG] [Thread-117420] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:27:38.760 [DEBUG] [Thread-117420] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:27:38.760 [DEBUG] [Thread-117420] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:27:38.760 [DEBUG] [Thread-117420] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:27:38.760 [DEBUG] [Thread-117420] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:27:38.760 [DEBUG] [Thread-117420] [transport.py] [_log()] Compression: none
2025-11-03T14:27:38.760 [DEBUG] [Thread-117420] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:27:38.774 [DEBUG] [Thread-117420] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:27:38.775 [DEBUG] [Thread-117420] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:27:38.775 [DEBUG] [Thread-117420] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:27:38.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:27:38.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:27:38.776 [DEBUG] [Thread-117420] [transport.py] [_log()] userauth is OK
2025-11-03T14:27:38.776 [DEBUG] [Thread-117420] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:27:38.776 [DEBUG] [Thread-117420] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:27:38.776 [DEBUG] [Thread-117420] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:27:38.776 [DEBUG] [Thread-117420] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:27:38.791 [INFO] [Thread-117420] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:27:38.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:27:39.422 [DEBUG] [Thread-117420] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:27:39.432 [DEBUG] [Thread-117420] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:27:39.432 [DEBUG] [Thread-117420] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:27:39.463 [DEBUG] [Thread-117420] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:27:39.463 [DEBUG] [Thread-117420] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:27:39.467 [DEBUG] [Thread-117420] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:27:39.478 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:27:39.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:27:39.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:27:39.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:27:39.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:27:39.492 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:27:39.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:27:39.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:27:39.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:27:39.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.518853 -999.00  +26.90  32.97      8  -10.10 1 1 2 1 1   888    0 36.44 -0.58 ----- 32.0 33.0 301.7 39.0 31.0 -30.7 30.5 -30.9 31.1 -30.8 32.0 -30.9
2025-11-03T14:27:39.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:27:39.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:27:39.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.518853
2025-11-03T14:27:39.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:27:39.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:27:39.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:27:39.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:27:39.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:27:39.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:27:03', tmtdew=47.4, humidity=3.27, cloud=0.0, wind=33.24, temperature=26.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:27:08.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:27:39.495 [DEBUG] [Thread-117420] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:27:39.578 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:27:39.590 [DEBUG] [Thread-117423] [transport.py] [_log()] starting thread (client mode): 0xed4cc10
2025-11-03T14:27:39.590 [DEBUG] [Thread-117423] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:27:39.606 [DEBUG] [Thread-117423] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:27:39.607 [INFO] [Thread-117423] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:27:39.615 [DEBUG] [Thread-117423] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:27:39.615 [DEBUG] [Thread-117423] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:27:39.615 [DEBUG] [Thread-117423] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:27:39.615 [DEBUG] [Thread-117423] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:27:39.615 [DEBUG] [Thread-117423] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:27:39.615 [DEBUG] [Thread-117423] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:27:39.615 [DEBUG] [Thread-117423] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:27:39.615 [DEBUG] [Thread-117423] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:27:39.615 [DEBUG] [Thread-117423] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:27:39.615 [DEBUG] [Thread-117423] [transport.py] [_log()] client lang: <none>
2025-11-03T14:27:39.615 [DEBUG] [Thread-117423] [transport.py] [_log()] server lang: <none>
2025-11-03T14:27:39.615 [DEBUG] [Thread-117423] [transport.py] [_log()] kex follows: False
2025-11-03T14:27:39.616 [DEBUG] [Thread-117423] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:27:39.616 [DEBUG] [Thread-117423] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:27:39.616 [DEBUG] [Thread-117423] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:27:39.616 [DEBUG] [Thread-117423] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:27:39.616 [DEBUG] [Thread-117423] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:27:39.616 [DEBUG] [Thread-117423] [transport.py] [_log()] Compression: none
2025-11-03T14:27:39.616 [DEBUG] [Thread-117423] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:27:39.675 [DEBUG] [Thread-117423] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:27:39.675 [DEBUG] [Thread-117423] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:27:39.676 [DEBUG] [Thread-117423] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:27:39.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:27:39.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:27:39.736 [DEBUG] [Thread-117423] [transport.py] [_log()] userauth is OK
2025-11-03T14:27:39.736 [DEBUG] [Thread-117423] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:27:39.736 [DEBUG] [Thread-117423] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:27:39.737 [DEBUG] [Thread-117423] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:27:39.737 [DEBUG] [Thread-117423] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:27:39.755 [INFO] [Thread-117423] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:27:39.764 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:27:39.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:27:40.613 [DEBUG] [Thread-117423] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:27:40.613 [DEBUG] [Thread-117423] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:27:40.661 [DEBUG] [Thread-117423] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:27:40.661 [DEBUG] [Thread-117423] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:27:40.670 [DEBUG] [Thread-117423] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:27:40.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:27:40.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:27:40.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:27:40.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:27:40.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:27:40.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:27:40.715 [DEBUG] [Thread-117423] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:27:46.487 [DEBUG] [Thread-117425 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:27:57.502 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:27:57.503 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:28:01.524 [DEBUG] [Thread-117426 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:28:10.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:28:10.736 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:28:10.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:28:10.896 [DEBUG] [Thread-117427 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:28:11.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 27, 36), 47.45, 3.27, 0.0, 39.93, 27.01, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:28:11.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:27:36
2025-11-03T14:28:11.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:28:11.753 [DEBUG] [Thread-117428] [transport.py] [_log()] starting thread (client mode): 0xed4f130
2025-11-03T14:28:11.753 [DEBUG] [Thread-117428] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:28:11.769 [DEBUG] [Thread-117428] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:28:11.769 [INFO] [Thread-117428] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:28:11.771 [DEBUG] [Thread-117428] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:28:11.771 [DEBUG] [Thread-117428] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:28:11.771 [DEBUG] [Thread-117428] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:28:11.771 [DEBUG] [Thread-117428] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:28:11.771 [DEBUG] [Thread-117428] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:28:11.771 [DEBUG] [Thread-117428] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:28:11.771 [DEBUG] [Thread-117428] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:28:11.771 [DEBUG] [Thread-117428] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:28:11.771 [DEBUG] [Thread-117428] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:28:11.771 [DEBUG] [Thread-117428] [transport.py] [_log()] client lang: <none>
2025-11-03T14:28:11.771 [DEBUG] [Thread-117428] [transport.py] [_log()] server lang: <none>
2025-11-03T14:28:11.771 [DEBUG] [Thread-117428] [transport.py] [_log()] kex follows: False
2025-11-03T14:28:11.771 [DEBUG] [Thread-117428] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:28:11.771 [DEBUG] [Thread-117428] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:28:11.771 [DEBUG] [Thread-117428] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:28:11.771 [DEBUG] [Thread-117428] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:28:11.771 [DEBUG] [Thread-117428] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:28:11.771 [DEBUG] [Thread-117428] [transport.py] [_log()] Compression: none
2025-11-03T14:28:11.771 [DEBUG] [Thread-117428] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:28:11.786 [DEBUG] [Thread-117428] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:28:11.787 [DEBUG] [Thread-117428] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:28:11.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:28:11.788 [DEBUG] [Thread-117428] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:28:11.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:28:11.790 [DEBUG] [Thread-117428] [transport.py] [_log()] userauth is OK
2025-11-03T14:28:11.790 [DEBUG] [Thread-117428] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:28:11.790 [DEBUG] [Thread-117428] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:28:11.790 [DEBUG] [Thread-117428] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:28:11.790 [DEBUG] [Thread-117428] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:28:11.814 [INFO] [Thread-117428] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:28:11.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:28:12.436 [DEBUG] [Thread-117428] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:28:12.436 [DEBUG] [Thread-117428] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:28:12.436 [DEBUG] [Thread-117428] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:28:12.476 [DEBUG] [Thread-117428] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:28:12.476 [DEBUG] [Thread-117428] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:28:12.479 [DEBUG] [Thread-117428] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:28:12.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:28:12.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:28:12.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:28:12.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:28:12.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:28:12.497 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:28:12.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:28:12.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:28:12.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:28:12.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.519200 -999.00  +27.00  36.60      8   -9.80 1 1 2 1 1   888    0 36.35 -0.03 ----- 33.0 36.6 309.2 51.0 31.1 -31.6 30.4 -30.9 31.1 -29.8 32.0 -30.1
2025-11-03T14:28:12.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:28:12.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:28:12.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.519200
2025-11-03T14:28:12.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:28:12.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:28:12.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:28:12.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:28:12.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:28:12.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:27:36', tmtdew=47.45, humidity=3.27, cloud=0.0, wind=39.93, temperature=27.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:27:38.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:28:12.499 [DEBUG] [Thread-117428] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:28:12.570 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:28:12.582 [DEBUG] [Thread-117431] [transport.py] [_log()] starting thread (client mode): 0xed4c370
2025-11-03T14:28:12.582 [DEBUG] [Thread-117431] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:28:12.598 [DEBUG] [Thread-117431] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:28:12.598 [INFO] [Thread-117431] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:28:12.605 [DEBUG] [Thread-117431] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:28:12.605 [DEBUG] [Thread-117431] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:28:12.605 [DEBUG] [Thread-117431] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:28:12.605 [DEBUG] [Thread-117431] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:28:12.605 [DEBUG] [Thread-117431] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:28:12.605 [DEBUG] [Thread-117431] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:28:12.605 [DEBUG] [Thread-117431] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:28:12.605 [DEBUG] [Thread-117431] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:28:12.606 [DEBUG] [Thread-117431] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:28:12.606 [DEBUG] [Thread-117431] [transport.py] [_log()] client lang: <none>
2025-11-03T14:28:12.606 [DEBUG] [Thread-117431] [transport.py] [_log()] server lang: <none>
2025-11-03T14:28:12.606 [DEBUG] [Thread-117431] [transport.py] [_log()] kex follows: False
2025-11-03T14:28:12.606 [DEBUG] [Thread-117431] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:28:12.606 [DEBUG] [Thread-117431] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:28:12.606 [DEBUG] [Thread-117431] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:28:12.606 [DEBUG] [Thread-117431] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:28:12.606 [DEBUG] [Thread-117431] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:28:12.606 [DEBUG] [Thread-117431] [transport.py] [_log()] Compression: none
2025-11-03T14:28:12.606 [DEBUG] [Thread-117431] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:28:12.663 [DEBUG] [Thread-117431] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:28:12.663 [DEBUG] [Thread-117431] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:28:12.663 [DEBUG] [Thread-117431] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:28:12.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:28:12.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:28:12.719 [DEBUG] [Thread-117431] [transport.py] [_log()] userauth is OK
2025-11-03T14:28:12.719 [DEBUG] [Thread-117431] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:28:12.719 [DEBUG] [Thread-117431] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:28:12.719 [DEBUG] [Thread-117431] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:28:12.719 [DEBUG] [Thread-117431] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:28:12.733 [INFO] [Thread-117431] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:28:12.733 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:28:12.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:28:13.567 [DEBUG] [Thread-117431] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:28:13.568 [DEBUG] [Thread-117431] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:28:13.616 [DEBUG] [Thread-117431] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:28:13.616 [DEBUG] [Thread-117431] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:28:13.626 [DEBUG] [Thread-117431] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:28:13.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:28:13.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:28:13.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:28:13.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:28:13.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:28:13.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:28:13.664 [DEBUG] [Thread-117431] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:28:16.567 [DEBUG] [Thread-117433 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:28:31.621 [DEBUG] [Thread-117434 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:28:43.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:28:43.663 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:28:43.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:28:44.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 28, 40), 47.31, 3.15, 0.0, 28.9, 26.41, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:28:44.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:28:40
2025-11-03T14:28:44.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:28:44.626 [DEBUG] [Thread-117435] [transport.py] [_log()] starting thread (client mode): 0x117ea830
2025-11-03T14:28:44.626 [DEBUG] [Thread-117435] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:28:44.646 [DEBUG] [Thread-117435] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:28:44.646 [INFO] [Thread-117435] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:28:44.647 [DEBUG] [Thread-117435] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:28:44.647 [DEBUG] [Thread-117435] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:28:44.647 [DEBUG] [Thread-117435] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:28:44.647 [DEBUG] [Thread-117435] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:28:44.647 [DEBUG] [Thread-117435] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:28:44.647 [DEBUG] [Thread-117435] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:28:44.648 [DEBUG] [Thread-117435] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:28:44.648 [DEBUG] [Thread-117435] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:28:44.648 [DEBUG] [Thread-117435] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:28:44.648 [DEBUG] [Thread-117435] [transport.py] [_log()] client lang: <none>
2025-11-03T14:28:44.648 [DEBUG] [Thread-117435] [transport.py] [_log()] server lang: <none>
2025-11-03T14:28:44.648 [DEBUG] [Thread-117435] [transport.py] [_log()] kex follows: False
2025-11-03T14:28:44.648 [DEBUG] [Thread-117435] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:28:44.648 [DEBUG] [Thread-117435] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:28:44.648 [DEBUG] [Thread-117435] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:28:44.648 [DEBUG] [Thread-117435] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:28:44.648 [DEBUG] [Thread-117435] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:28:44.648 [DEBUG] [Thread-117435] [transport.py] [_log()] Compression: none
2025-11-03T14:28:44.648 [DEBUG] [Thread-117435] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:28:44.657 [DEBUG] [Thread-117435] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:28:44.657 [DEBUG] [Thread-117435] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:28:44.658 [DEBUG] [Thread-117435] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:28:44.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:28:44.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:28:44.660 [DEBUG] [Thread-117435] [transport.py] [_log()] userauth is OK
2025-11-03T14:28:44.660 [DEBUG] [Thread-117435] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:28:44.660 [DEBUG] [Thread-117435] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:28:44.660 [DEBUG] [Thread-117435] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:28:44.660 [DEBUG] [Thread-117435] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:28:44.684 [INFO] [Thread-117435] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:28:44.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:28:45.291 [DEBUG] [Thread-117435] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:28:45.291 [DEBUG] [Thread-117435] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:28:45.291 [DEBUG] [Thread-117435] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:28:45.332 [DEBUG] [Thread-117435] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:28:45.332 [DEBUG] [Thread-117435] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:28:45.335 [DEBUG] [Thread-117435] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:28:45.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:28:45.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:28:45.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:28:45.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:28:45.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:28:45.356 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:28:45.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:28:45.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:28:45.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:28:45.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.519548 -999.00  +26.90  45.24      8  -10.10 1 1 2 1 1   888    0 36.32 0.56 ----- 38.7 45.2 311.6 47.7 31.1 -31.8 30.5 -32.0 31.3 -29.7 32.0 -30.7
2025-11-03T14:28:45.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:28:45.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:28:45.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.519548
2025-11-03T14:28:45.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:28:45.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:28:45.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:28:45.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:28:45.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:28:45.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:28:40', tmtdew=47.31, humidity=3.15, cloud=0.0, wind=28.9, temperature=26.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:28:08.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:28:45.359 [DEBUG] [Thread-117435] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:28:45.442 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:28:45.453 [DEBUG] [Thread-117438] [transport.py] [_log()] starting thread (client mode): 0x117e9f90
2025-11-03T14:28:45.453 [DEBUG] [Thread-117438] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:28:45.467 [DEBUG] [Thread-117438] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:28:45.467 [INFO] [Thread-117438] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:28:45.475 [DEBUG] [Thread-117438] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:28:45.475 [DEBUG] [Thread-117438] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:28:45.475 [DEBUG] [Thread-117438] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:28:45.475 [DEBUG] [Thread-117438] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:28:45.475 [DEBUG] [Thread-117438] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:28:45.475 [DEBUG] [Thread-117438] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:28:45.475 [DEBUG] [Thread-117438] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:28:45.475 [DEBUG] [Thread-117438] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:28:45.475 [DEBUG] [Thread-117438] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:28:45.475 [DEBUG] [Thread-117438] [transport.py] [_log()] client lang: <none>
2025-11-03T14:28:45.475 [DEBUG] [Thread-117438] [transport.py] [_log()] server lang: <none>
2025-11-03T14:28:45.476 [DEBUG] [Thread-117438] [transport.py] [_log()] kex follows: False
2025-11-03T14:28:45.476 [DEBUG] [Thread-117438] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:28:45.476 [DEBUG] [Thread-117438] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:28:45.476 [DEBUG] [Thread-117438] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:28:45.476 [DEBUG] [Thread-117438] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:28:45.476 [DEBUG] [Thread-117438] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:28:45.476 [DEBUG] [Thread-117438] [transport.py] [_log()] Compression: none
2025-11-03T14:28:45.476 [DEBUG] [Thread-117438] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:28:45.534 [DEBUG] [Thread-117438] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:28:45.535 [DEBUG] [Thread-117438] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:28:45.535 [DEBUG] [Thread-117438] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:28:45.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:28:45.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:28:45.591 [DEBUG] [Thread-117438] [transport.py] [_log()] userauth is OK
2025-11-03T14:28:45.591 [DEBUG] [Thread-117438] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:28:45.591 [DEBUG] [Thread-117438] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:28:45.591 [DEBUG] [Thread-117438] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:28:45.591 [DEBUG] [Thread-117438] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:28:45.611 [INFO] [Thread-117438] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:28:45.612 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:28:45.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:28:46.471 [DEBUG] [Thread-117438] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:28:46.471 [DEBUG] [Thread-117438] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:28:46.519 [DEBUG] [Thread-117438] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:28:46.519 [DEBUG] [Thread-117438] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:28:46.527 [DEBUG] [Thread-117438] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:28:46.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:28:46.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:28:46.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:28:46.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:28:46.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:28:46.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:28:46.559 [DEBUG] [Thread-117438] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:28:46.651 [DEBUG] [Thread-117440 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:28:57.643 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:28:57.644 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:29:01.705 [DEBUG] [Thread-117441 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:29:10.926 [DEBUG] [Thread-117442 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:29:16.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:29:16.582 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:29:16.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:29:16.733 [DEBUG] [Thread-117443 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:29:17.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 29, 13), 46.91, 3.29, 0.0, 30.65, 26.56, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:29:17.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:29:13
2025-11-03T14:29:17.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:29:17.526 [DEBUG] [Thread-117444] [transport.py] [_log()] starting thread (client mode): 0xed4c430
2025-11-03T14:29:17.527 [DEBUG] [Thread-117444] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:29:17.547 [DEBUG] [Thread-117444] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:29:17.547 [INFO] [Thread-117444] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:29:17.550 [DEBUG] [Thread-117444] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:29:17.551 [DEBUG] [Thread-117444] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:29:17.551 [DEBUG] [Thread-117444] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:29:17.551 [DEBUG] [Thread-117444] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:29:17.551 [DEBUG] [Thread-117444] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:29:17.551 [DEBUG] [Thread-117444] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:29:17.551 [DEBUG] [Thread-117444] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:29:17.551 [DEBUG] [Thread-117444] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:29:17.551 [DEBUG] [Thread-117444] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:29:17.551 [DEBUG] [Thread-117444] [transport.py] [_log()] client lang: <none>
2025-11-03T14:29:17.551 [DEBUG] [Thread-117444] [transport.py] [_log()] server lang: <none>
2025-11-03T14:29:17.551 [DEBUG] [Thread-117444] [transport.py] [_log()] kex follows: False
2025-11-03T14:29:17.551 [DEBUG] [Thread-117444] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:29:17.551 [DEBUG] [Thread-117444] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:29:17.551 [DEBUG] [Thread-117444] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:29:17.551 [DEBUG] [Thread-117444] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:29:17.551 [DEBUG] [Thread-117444] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:29:17.551 [DEBUG] [Thread-117444] [transport.py] [_log()] Compression: none
2025-11-03T14:29:17.551 [DEBUG] [Thread-117444] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:29:17.571 [DEBUG] [Thread-117444] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:29:17.571 [DEBUG] [Thread-117444] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:29:17.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:29:17.572 [DEBUG] [Thread-117444] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:29:17.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:29:17.574 [DEBUG] [Thread-117444] [transport.py] [_log()] userauth is OK
2025-11-03T14:29:17.574 [DEBUG] [Thread-117444] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:29:17.574 [DEBUG] [Thread-117444] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:29:17.574 [DEBUG] [Thread-117444] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:29:17.574 [DEBUG] [Thread-117444] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:29:17.598 [INFO] [Thread-117444] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:29:17.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:29:18.238 [DEBUG] [Thread-117444] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:29:18.238 [DEBUG] [Thread-117444] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:29:18.239 [DEBUG] [Thread-117444] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:29:18.279 [DEBUG] [Thread-117444] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:29:18.279 [DEBUG] [Thread-117444] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:29:18.283 [DEBUG] [Thread-117444] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:29:18.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:29:18.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:29:18.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:29:18.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:29:18.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:29:18.308 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:29:18.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:29:18.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:29:18.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:29:18.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.519895 -999.00  +26.20  36.91      8  -10.10 1 1 2 1 1   888    0 36.35 0.45 ----- 33.8 36.9 309.6 49.5 31.0 -32.1 30.4 -31.2 31.2 -32.3 31.8 -30.4
2025-11-03T14:29:18.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:29:18.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:29:18.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.519895
2025-11-03T14:29:18.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:29:18.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:29:18.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:29:18.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:29:18.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:29:18.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:29:13', tmtdew=46.91, humidity=3.29, cloud=0.0, wind=30.65, temperature=26.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:28:38.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:29:18.312 [DEBUG] [Thread-117444] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:29:18.400 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:29:18.412 [DEBUG] [Thread-117447] [transport.py] [_log()] starting thread (client mode): 0xed4c280
2025-11-03T14:29:18.412 [DEBUG] [Thread-117447] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:29:18.428 [DEBUG] [Thread-117447] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:29:18.428 [INFO] [Thread-117447] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:29:18.436 [DEBUG] [Thread-117447] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:29:18.436 [DEBUG] [Thread-117447] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:29:18.436 [DEBUG] [Thread-117447] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:29:18.436 [DEBUG] [Thread-117447] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:29:18.437 [DEBUG] [Thread-117447] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:29:18.437 [DEBUG] [Thread-117447] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:29:18.437 [DEBUG] [Thread-117447] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:29:18.437 [DEBUG] [Thread-117447] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:29:18.437 [DEBUG] [Thread-117447] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:29:18.437 [DEBUG] [Thread-117447] [transport.py] [_log()] client lang: <none>
2025-11-03T14:29:18.437 [DEBUG] [Thread-117447] [transport.py] [_log()] server lang: <none>
2025-11-03T14:29:18.438 [DEBUG] [Thread-117447] [transport.py] [_log()] kex follows: False
2025-11-03T14:29:18.438 [DEBUG] [Thread-117447] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:29:18.438 [DEBUG] [Thread-117447] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:29:18.438 [DEBUG] [Thread-117447] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:29:18.438 [DEBUG] [Thread-117447] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:29:18.438 [DEBUG] [Thread-117447] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:29:18.438 [DEBUG] [Thread-117447] [transport.py] [_log()] Compression: none
2025-11-03T14:29:18.438 [DEBUG] [Thread-117447] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:29:18.496 [DEBUG] [Thread-117447] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:29:18.497 [DEBUG] [Thread-117447] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:29:18.507 [DEBUG] [Thread-117447] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:29:18.507 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:29:18.507 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:29:18.555 [DEBUG] [Thread-117447] [transport.py] [_log()] userauth is OK
2025-11-03T14:29:18.555 [DEBUG] [Thread-117447] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:29:18.555 [DEBUG] [Thread-117447] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:29:18.555 [DEBUG] [Thread-117447] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:29:18.555 [DEBUG] [Thread-117447] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:29:18.569 [INFO] [Thread-117447] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:29:18.569 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:29:18.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:29:19.430 [DEBUG] [Thread-117447] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:29:19.430 [DEBUG] [Thread-117447] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:29:19.479 [DEBUG] [Thread-117447] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:29:19.479 [DEBUG] [Thread-117447] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:29:19.487 [DEBUG] [Thread-117447] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:29:19.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:29:19.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:29:19.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:29:19.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:29:19.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:29:19.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:29:19.523 [DEBUG] [Thread-117447] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:29:31.772 [DEBUG] [Thread-117449 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:29:46.809 [DEBUG] [Thread-117450 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:29:49.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:29:49.526 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:29:49.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:29:50.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 29, 45), 47.02, 3.72, 0.0, 34.26, 26.54, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:29:50.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:29:45
2025-11-03T14:29:50.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:29:50.483 [DEBUG] [Thread-117451] [transport.py] [_log()] starting thread (client mode): 0x117ea4d0
2025-11-03T14:29:50.483 [DEBUG] [Thread-117451] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:29:50.503 [DEBUG] [Thread-117451] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:29:50.504 [INFO] [Thread-117451] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:29:50.505 [DEBUG] [Thread-117451] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:29:50.505 [DEBUG] [Thread-117451] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:29:50.505 [DEBUG] [Thread-117451] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:29:50.505 [DEBUG] [Thread-117451] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:29:50.505 [DEBUG] [Thread-117451] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:29:50.505 [DEBUG] [Thread-117451] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:29:50.505 [DEBUG] [Thread-117451] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:29:50.505 [DEBUG] [Thread-117451] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:29:50.505 [DEBUG] [Thread-117451] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:29:50.505 [DEBUG] [Thread-117451] [transport.py] [_log()] client lang: <none>
2025-11-03T14:29:50.505 [DEBUG] [Thread-117451] [transport.py] [_log()] server lang: <none>
2025-11-03T14:29:50.505 [DEBUG] [Thread-117451] [transport.py] [_log()] kex follows: False
2025-11-03T14:29:50.505 [DEBUG] [Thread-117451] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:29:50.506 [DEBUG] [Thread-117451] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:29:50.506 [DEBUG] [Thread-117451] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:29:50.506 [DEBUG] [Thread-117451] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:29:50.506 [DEBUG] [Thread-117451] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:29:50.506 [DEBUG] [Thread-117451] [transport.py] [_log()] Compression: none
2025-11-03T14:29:50.506 [DEBUG] [Thread-117451] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:29:50.514 [DEBUG] [Thread-117451] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:29:50.515 [DEBUG] [Thread-117451] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:29:50.515 [DEBUG] [Thread-117451] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:29:50.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:29:50.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:29:50.516 [DEBUG] [Thread-117451] [transport.py] [_log()] userauth is OK
2025-11-03T14:29:50.516 [DEBUG] [Thread-117451] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:29:50.516 [DEBUG] [Thread-117451] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:29:50.516 [DEBUG] [Thread-117451] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:29:50.516 [DEBUG] [Thread-117451] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:29:50.526 [INFO] [Thread-117451] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:29:50.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:29:51.157 [DEBUG] [Thread-117451] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:29:51.158 [DEBUG] [Thread-117451] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:29:51.158 [DEBUG] [Thread-117451] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:29:51.199 [DEBUG] [Thread-117451] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:29:51.199 [DEBUG] [Thread-117451] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:29:51.201 [DEBUG] [Thread-117451] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:29:51.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:29:51.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:29:51.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:29:51.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:29:51.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:29:51.219 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:29:51.219 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:29:51.219 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:29:51.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:29:51.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.520242 -999.00  +26.00  31.00      8  -10.30 1 1 2 1 1   888    0 36.15 -0.03 ----- 28.3 31.0 307.0 48.6 31.1 -31.4 30.4 -30.8 31.1 -29.7 31.9 -30.1
2025-11-03T14:29:51.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:29:51.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:29:51.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.520242
2025-11-03T14:29:51.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:29:51.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:29:51.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:29:51.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:29:51.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:29:51.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:29:45', tmtdew=47.02, humidity=3.72, cloud=0.0, wind=34.26, temperature=26.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:29:08.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:29:51.220 [DEBUG] [Thread-117451] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:29:51.297 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:29:51.308 [DEBUG] [Thread-117454] [transport.py] [_log()] starting thread (client mode): 0x11783670
2025-11-03T14:29:51.308 [DEBUG] [Thread-117454] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:29:51.323 [DEBUG] [Thread-117454] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:29:51.323 [INFO] [Thread-117454] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:29:51.331 [DEBUG] [Thread-117454] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:29:51.331 [DEBUG] [Thread-117454] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:29:51.331 [DEBUG] [Thread-117454] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:29:51.331 [DEBUG] [Thread-117454] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:29:51.331 [DEBUG] [Thread-117454] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:29:51.331 [DEBUG] [Thread-117454] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:29:51.331 [DEBUG] [Thread-117454] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:29:51.331 [DEBUG] [Thread-117454] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:29:51.331 [DEBUG] [Thread-117454] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:29:51.331 [DEBUG] [Thread-117454] [transport.py] [_log()] client lang: <none>
2025-11-03T14:29:51.331 [DEBUG] [Thread-117454] [transport.py] [_log()] server lang: <none>
2025-11-03T14:29:51.331 [DEBUG] [Thread-117454] [transport.py] [_log()] kex follows: False
2025-11-03T14:29:51.331 [DEBUG] [Thread-117454] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:29:51.331 [DEBUG] [Thread-117454] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:29:51.331 [DEBUG] [Thread-117454] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:29:51.331 [DEBUG] [Thread-117454] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:29:51.331 [DEBUG] [Thread-117454] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:29:51.331 [DEBUG] [Thread-117454] [transport.py] [_log()] Compression: none
2025-11-03T14:29:51.331 [DEBUG] [Thread-117454] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:29:51.389 [DEBUG] [Thread-117454] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:29:51.389 [DEBUG] [Thread-117454] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:29:51.389 [DEBUG] [Thread-117454] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:29:51.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:29:51.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:29:51.450 [DEBUG] [Thread-117454] [transport.py] [_log()] userauth is OK
2025-11-03T14:29:51.450 [DEBUG] [Thread-117454] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:29:51.450 [DEBUG] [Thread-117454] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:29:51.450 [DEBUG] [Thread-117454] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:29:51.450 [DEBUG] [Thread-117454] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:29:51.468 [INFO] [Thread-117454] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:29:51.468 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:29:51.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:29:52.394 [DEBUG] [Thread-117454] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:29:52.394 [DEBUG] [Thread-117454] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:29:52.442 [DEBUG] [Thread-117454] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:29:52.442 [DEBUG] [Thread-117454] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:29:52.451 [DEBUG] [Thread-117454] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:29:52.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:29:52.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:29:52.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:29:52.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:29:52.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:29:52.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:29:52.482 [DEBUG] [Thread-117454] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:29:57.785 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:29:57.786 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:30:01.839 [DEBUG] [Thread-117456 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:30:11.178 [DEBUG] [Thread-117457 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:30:16.880 [DEBUG] [Thread-117458 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:30:22.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:30:22.506 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:30:22.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:30:23.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 30, 17), 46.82, 3.77, 0.0, 33.7, 26.44, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:30:23.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:30:17
2025-11-03T14:30:23.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:30:23.590 [DEBUG] [Thread-117459] [transport.py] [_log()] starting thread (client mode): 0xed4c6a0
2025-11-03T14:30:23.590 [DEBUG] [Thread-117459] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:30:23.610 [DEBUG] [Thread-117459] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:30:23.610 [INFO] [Thread-117459] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:30:23.612 [DEBUG] [Thread-117459] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:30:23.612 [DEBUG] [Thread-117459] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:30:23.612 [DEBUG] [Thread-117459] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:30:23.613 [DEBUG] [Thread-117459] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:30:23.613 [DEBUG] [Thread-117459] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:30:23.613 [DEBUG] [Thread-117459] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:30:23.613 [DEBUG] [Thread-117459] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:30:23.613 [DEBUG] [Thread-117459] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:30:23.613 [DEBUG] [Thread-117459] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:30:23.613 [DEBUG] [Thread-117459] [transport.py] [_log()] client lang: <none>
2025-11-03T14:30:23.613 [DEBUG] [Thread-117459] [transport.py] [_log()] server lang: <none>
2025-11-03T14:30:23.613 [DEBUG] [Thread-117459] [transport.py] [_log()] kex follows: False
2025-11-03T14:30:23.613 [DEBUG] [Thread-117459] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:30:23.613 [DEBUG] [Thread-117459] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:30:23.613 [DEBUG] [Thread-117459] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:30:23.613 [DEBUG] [Thread-117459] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:30:23.613 [DEBUG] [Thread-117459] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:30:23.613 [DEBUG] [Thread-117459] [transport.py] [_log()] Compression: none
2025-11-03T14:30:23.613 [DEBUG] [Thread-117459] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:30:23.630 [DEBUG] [Thread-117459] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:30:23.631 [DEBUG] [Thread-117459] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:30:23.632 [DEBUG] [Thread-117459] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:30:23.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:30:23.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:30:23.634 [DEBUG] [Thread-117459] [transport.py] [_log()] userauth is OK
2025-11-03T14:30:23.634 [DEBUG] [Thread-117459] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:30:23.634 [DEBUG] [Thread-117459] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:30:23.634 [DEBUG] [Thread-117459] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:30:23.634 [DEBUG] [Thread-117459] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:30:23.659 [INFO] [Thread-117459] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:30:23.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:30:24.297 [DEBUG] [Thread-117459] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:30:24.306 [DEBUG] [Thread-117459] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:30:24.306 [DEBUG] [Thread-117459] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:30:24.337 [DEBUG] [Thread-117459] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:30:24.337 [DEBUG] [Thread-117459] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:30:24.340 [DEBUG] [Thread-117459] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:30:24.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:30:24.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:30:24.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:30:24.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:30:24.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:30:24.357 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:30:24.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:30:24.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:30:24.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:30:24.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.520936 -999.00  +26.80  27.45      8   -9.60 1 1 1 1 1   888    0 35.88 3.65 ----- 33.2 27.4 311.0 45.4 31.1 -32.1 30.5 -30.0 31.1 -30.7 31.9 -29.8
2025-11-03T14:30:24.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:30:24.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:30:24.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.520936
2025-11-03T14:30:24.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:30:24.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:30:24.358 [DEBUG] [Thread-117459] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:30:24.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:30:24.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:30:24.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:30:24.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:30:17', tmtdew=46.82, humidity=3.77, cloud=0.0, wind=33.7, temperature=26.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:30:08.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:30:24.431 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:30:24.443 [DEBUG] [Thread-117462] [transport.py] [_log()] starting thread (client mode): 0x117ead40
2025-11-03T14:30:24.443 [DEBUG] [Thread-117462] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:30:24.458 [DEBUG] [Thread-117462] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:30:24.458 [INFO] [Thread-117462] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:30:24.465 [DEBUG] [Thread-117462] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:30:24.465 [DEBUG] [Thread-117462] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:30:24.465 [DEBUG] [Thread-117462] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:30:24.465 [DEBUG] [Thread-117462] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:30:24.465 [DEBUG] [Thread-117462] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:30:24.465 [DEBUG] [Thread-117462] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:30:24.465 [DEBUG] [Thread-117462] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:30:24.465 [DEBUG] [Thread-117462] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:30:24.465 [DEBUG] [Thread-117462] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:30:24.465 [DEBUG] [Thread-117462] [transport.py] [_log()] client lang: <none>
2025-11-03T14:30:24.465 [DEBUG] [Thread-117462] [transport.py] [_log()] server lang: <none>
2025-11-03T14:30:24.465 [DEBUG] [Thread-117462] [transport.py] [_log()] kex follows: False
2025-11-03T14:30:24.465 [DEBUG] [Thread-117462] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:30:24.465 [DEBUG] [Thread-117462] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:30:24.465 [DEBUG] [Thread-117462] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:30:24.465 [DEBUG] [Thread-117462] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:30:24.465 [DEBUG] [Thread-117462] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:30:24.465 [DEBUG] [Thread-117462] [transport.py] [_log()] Compression: none
2025-11-03T14:30:24.465 [DEBUG] [Thread-117462] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:30:24.523 [DEBUG] [Thread-117462] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:30:24.523 [DEBUG] [Thread-117462] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:30:24.523 [DEBUG] [Thread-117462] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:30:24.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:30:24.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:30:24.580 [DEBUG] [Thread-117462] [transport.py] [_log()] userauth is OK
2025-11-03T14:30:24.580 [DEBUG] [Thread-117462] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:30:24.580 [DEBUG] [Thread-117462] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:30:24.580 [DEBUG] [Thread-117462] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:30:24.580 [DEBUG] [Thread-117462] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:30:24.594 [INFO] [Thread-117462] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:30:24.594 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:30:24.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:30:25.456 [DEBUG] [Thread-117462] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:30:25.457 [DEBUG] [Thread-117462] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:30:25.505 [DEBUG] [Thread-117462] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:30:25.505 [DEBUG] [Thread-117462] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:30:25.515 [DEBUG] [Thread-117462] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:30:25.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:30:25.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:30:25.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:30:25.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:30:25.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:30:25.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:30:25.550 [DEBUG] [Thread-117462] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:30:31.909 [DEBUG] [Thread-117464 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:30:46.947 [DEBUG] [Thread-117465 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:30:55.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:30:55.573 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:30:55.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:30:56.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 30, 50), 46.49, 3.82, 0.0, 35.75, 26.32, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:30:56.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:30:50
2025-11-03T14:30:56.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:30:56.612 [DEBUG] [Thread-117466] [transport.py] [_log()] starting thread (client mode): 0x117eb2e0
2025-11-03T14:30:56.612 [DEBUG] [Thread-117466] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:30:56.623 [DEBUG] [Thread-117466] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:30:56.623 [INFO] [Thread-117466] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:30:56.626 [DEBUG] [Thread-117466] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:30:56.626 [DEBUG] [Thread-117466] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:30:56.626 [DEBUG] [Thread-117466] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:30:56.626 [DEBUG] [Thread-117466] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:30:56.627 [DEBUG] [Thread-117466] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:30:56.627 [DEBUG] [Thread-117466] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:30:56.627 [DEBUG] [Thread-117466] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:30:56.627 [DEBUG] [Thread-117466] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:30:56.627 [DEBUG] [Thread-117466] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:30:56.627 [DEBUG] [Thread-117466] [transport.py] [_log()] client lang: <none>
2025-11-03T14:30:56.627 [DEBUG] [Thread-117466] [transport.py] [_log()] server lang: <none>
2025-11-03T14:30:56.627 [DEBUG] [Thread-117466] [transport.py] [_log()] kex follows: False
2025-11-03T14:30:56.627 [DEBUG] [Thread-117466] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:30:56.627 [DEBUG] [Thread-117466] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:30:56.627 [DEBUG] [Thread-117466] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:30:56.627 [DEBUG] [Thread-117466] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:30:56.627 [DEBUG] [Thread-117466] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:30:56.627 [DEBUG] [Thread-117466] [transport.py] [_log()] Compression: none
2025-11-03T14:30:56.627 [DEBUG] [Thread-117466] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:30:56.644 [DEBUG] [Thread-117466] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:30:56.644 [DEBUG] [Thread-117466] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:30:56.645 [DEBUG] [Thread-117466] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:30:56.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:30:56.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:30:56.689 [DEBUG] [Thread-117466] [transport.py] [_log()] userauth is OK
2025-11-03T14:30:56.689 [DEBUG] [Thread-117466] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:30:56.689 [DEBUG] [Thread-117466] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:30:56.690 [DEBUG] [Thread-117466] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:30:56.690 [DEBUG] [Thread-117466] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:30:56.715 [INFO] [Thread-117466] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:30:56.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:30:57.364 [DEBUG] [Thread-117466] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:30:57.365 [DEBUG] [Thread-117466] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:30:57.365 [DEBUG] [Thread-117466] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:30:57.405 [DEBUG] [Thread-117466] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:30:57.405 [DEBUG] [Thread-117466] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:30:57.408 [DEBUG] [Thread-117466] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:30:57.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:30:57.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:30:57.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:30:57.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:30:57.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:30:57.431 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:30:57.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:30:57.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:30:57.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:30:57.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.521284 -999.00  +27.50  32.74      8   -9.50 1 1 2 1 1   888    0 35.86 9.46 ----- 37.1 32.7 318.6 42.0 31.1 -31.1 30.6 -30.2 31.3 -29.3 32.2 -29.4
2025-11-03T14:30:57.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:30:57.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:30:57.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.521284
2025-11-03T14:30:57.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:30:57.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:30:57.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:30:57.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:30:57.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:30:57.434 [DEBUG] [Thread-117466] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:30:57.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:30:50', tmtdew=46.49, humidity=3.82, cloud=0.0, wind=35.75, temperature=26.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:30:38.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:30:57.517 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:30:57.530 [DEBUG] [Thread-117469] [transport.py] [_log()] starting thread (client mode): 0x117e95a0
2025-11-03T14:30:57.530 [DEBUG] [Thread-117469] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:30:57.545 [DEBUG] [Thread-117469] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:30:57.546 [INFO] [Thread-117469] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:30:57.553 [DEBUG] [Thread-117469] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:30:57.554 [DEBUG] [Thread-117469] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:30:57.554 [DEBUG] [Thread-117469] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:30:57.554 [DEBUG] [Thread-117469] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:30:57.554 [DEBUG] [Thread-117469] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:30:57.554 [DEBUG] [Thread-117469] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:30:57.554 [DEBUG] [Thread-117469] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:30:57.555 [DEBUG] [Thread-117469] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:30:57.555 [DEBUG] [Thread-117469] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:30:57.555 [DEBUG] [Thread-117469] [transport.py] [_log()] client lang: <none>
2025-11-03T14:30:57.555 [DEBUG] [Thread-117469] [transport.py] [_log()] server lang: <none>
2025-11-03T14:30:57.555 [DEBUG] [Thread-117469] [transport.py] [_log()] kex follows: False
2025-11-03T14:30:57.555 [DEBUG] [Thread-117469] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:30:57.555 [DEBUG] [Thread-117469] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:30:57.555 [DEBUG] [Thread-117469] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:30:57.555 [DEBUG] [Thread-117469] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:30:57.555 [DEBUG] [Thread-117469] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:30:57.555 [DEBUG] [Thread-117469] [transport.py] [_log()] Compression: none
2025-11-03T14:30:57.555 [DEBUG] [Thread-117469] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:30:57.612 [DEBUG] [Thread-117469] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:30:57.613 [DEBUG] [Thread-117469] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:30:57.613 [DEBUG] [Thread-117469] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:30:57.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:30:57.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:30:57.668 [DEBUG] [Thread-117469] [transport.py] [_log()] userauth is OK
2025-11-03T14:30:57.668 [DEBUG] [Thread-117469] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:30:57.669 [DEBUG] [Thread-117469] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:30:57.669 [DEBUG] [Thread-117469] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:30:57.669 [DEBUG] [Thread-117469] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:30:57.689 [INFO] [Thread-117469] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:30:57.689 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:30:57.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:30:57.928 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:30:57.929 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:30:58.576 [DEBUG] [Thread-117469] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:30:58.576 [DEBUG] [Thread-117469] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:30:58.623 [DEBUG] [Thread-117469] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:30:58.624 [DEBUG] [Thread-117469] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:30:58.632 [DEBUG] [Thread-117469] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:30:58.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:30:58.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:30:58.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:30:58.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:30:58.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:30:58.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:30:58.664 [DEBUG] [Thread-117469] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:31:01.977 [DEBUG] [Thread-117471 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:31:11.211 [DEBUG] [Thread-117472 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:31:17.026 [DEBUG] [Thread-117473 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:31:28.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:31:28.695 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:31:28.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:31:29.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 31, 22), 46.78, 3.75, 0.0, 33.63, 26.55, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:31:29.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:31:22
2025-11-03T14:31:29.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:31:29.654 [DEBUG] [Thread-117474] [transport.py] [_log()] starting thread (client mode): 0x117eb670
2025-11-03T14:31:29.654 [DEBUG] [Thread-117474] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:31:29.674 [DEBUG] [Thread-117474] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:31:29.674 [INFO] [Thread-117474] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:31:29.683 [DEBUG] [Thread-117474] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:31:29.683 [DEBUG] [Thread-117474] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:31:29.683 [DEBUG] [Thread-117474] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:31:29.683 [DEBUG] [Thread-117474] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:31:29.683 [DEBUG] [Thread-117474] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:31:29.683 [DEBUG] [Thread-117474] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:31:29.683 [DEBUG] [Thread-117474] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:31:29.683 [DEBUG] [Thread-117474] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:31:29.683 [DEBUG] [Thread-117474] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:31:29.683 [DEBUG] [Thread-117474] [transport.py] [_log()] client lang: <none>
2025-11-03T14:31:29.683 [DEBUG] [Thread-117474] [transport.py] [_log()] server lang: <none>
2025-11-03T14:31:29.683 [DEBUG] [Thread-117474] [transport.py] [_log()] kex follows: False
2025-11-03T14:31:29.683 [DEBUG] [Thread-117474] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:31:29.683 [DEBUG] [Thread-117474] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:31:29.684 [DEBUG] [Thread-117474] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:31:29.684 [DEBUG] [Thread-117474] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:31:29.684 [DEBUG] [Thread-117474] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:31:29.684 [DEBUG] [Thread-117474] [transport.py] [_log()] Compression: none
2025-11-03T14:31:29.684 [DEBUG] [Thread-117474] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:31:29.699 [DEBUG] [Thread-117474] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:31:29.699 [DEBUG] [Thread-117474] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:31:29.699 [DEBUG] [Thread-117474] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:31:29.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:31:29.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:31:29.700 [DEBUG] [Thread-117474] [transport.py] [_log()] userauth is OK
2025-11-03T14:31:29.700 [DEBUG] [Thread-117474] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:31:29.700 [DEBUG] [Thread-117474] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:31:29.700 [DEBUG] [Thread-117474] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:31:29.700 [DEBUG] [Thread-117474] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:31:29.716 [INFO] [Thread-117474] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:31:29.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:31:30.327 [DEBUG] [Thread-117474] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:31:30.328 [DEBUG] [Thread-117474] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:31:30.328 [DEBUG] [Thread-117474] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:31:30.369 [DEBUG] [Thread-117474] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:31:30.369 [DEBUG] [Thread-117474] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:31:30.372 [DEBUG] [Thread-117474] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:31:30.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:31:30.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:31:30.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:31:30.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:31:30.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:31:30.405 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:31:30.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:31:30.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:31:30.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:31:30.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.521631 -999.00  +26.80  38.77      8  -10.10 1 1 2 1 1   888    0 36.51 16.86 ----- 39.0 38.8 313.0 44.1 31.2 -33.7 30.5 -31.5 31.4 -29.7 32.0 -30.8
2025-11-03T14:31:30.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:31:30.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:31:30.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.521631
2025-11-03T14:31:30.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:31:30.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:31:30.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:31:30.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:31:30.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:31:30.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:31:22', tmtdew=46.78, humidity=3.75, cloud=0.0, wind=33.63, temperature=26.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:31:08.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:31:30.408 [DEBUG] [Thread-117474] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:31:30.491 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:31:30.505 [DEBUG] [Thread-117477] [transport.py] [_log()] starting thread (client mode): 0x11781e10
2025-11-03T14:31:30.505 [DEBUG] [Thread-117477] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:31:30.519 [DEBUG] [Thread-117477] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:31:30.519 [INFO] [Thread-117477] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:31:30.526 [DEBUG] [Thread-117477] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:31:30.527 [DEBUG] [Thread-117477] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:31:30.527 [DEBUG] [Thread-117477] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:31:30.527 [DEBUG] [Thread-117477] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:31:30.527 [DEBUG] [Thread-117477] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:31:30.527 [DEBUG] [Thread-117477] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:31:30.527 [DEBUG] [Thread-117477] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:31:30.528 [DEBUG] [Thread-117477] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:31:30.528 [DEBUG] [Thread-117477] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:31:30.528 [DEBUG] [Thread-117477] [transport.py] [_log()] client lang: <none>
2025-11-03T14:31:30.528 [DEBUG] [Thread-117477] [transport.py] [_log()] server lang: <none>
2025-11-03T14:31:30.528 [DEBUG] [Thread-117477] [transport.py] [_log()] kex follows: False
2025-11-03T14:31:30.528 [DEBUG] [Thread-117477] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:31:30.528 [DEBUG] [Thread-117477] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:31:30.529 [DEBUG] [Thread-117477] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:31:30.529 [DEBUG] [Thread-117477] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:31:30.529 [DEBUG] [Thread-117477] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:31:30.529 [DEBUG] [Thread-117477] [transport.py] [_log()] Compression: none
2025-11-03T14:31:30.529 [DEBUG] [Thread-117477] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:31:30.586 [DEBUG] [Thread-117477] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:31:30.586 [DEBUG] [Thread-117477] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:31:30.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:31:30.588 [DEBUG] [Thread-117477] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:31:30.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:31:30.645 [DEBUG] [Thread-117477] [transport.py] [_log()] userauth is OK
2025-11-03T14:31:30.645 [DEBUG] [Thread-117477] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:31:30.645 [DEBUG] [Thread-117477] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:31:30.645 [DEBUG] [Thread-117477] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:31:30.645 [DEBUG] [Thread-117477] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:31:30.665 [INFO] [Thread-117477] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:31:30.666 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:31:30.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:31:31.535 [DEBUG] [Thread-117477] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:31:31.535 [DEBUG] [Thread-117477] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:31:31.583 [DEBUG] [Thread-117477] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:31:31.583 [DEBUG] [Thread-117477] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:31:31.592 [DEBUG] [Thread-117477] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:31:31.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:31:31.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:31:31.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:31:31.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:31:31.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:31:31.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:31:31.628 [DEBUG] [Thread-117477] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:31:32.056 [DEBUG] [Thread-117479 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:31:47.090 [DEBUG] [Thread-117480 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:31:58.068 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:31:58.068 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:32:01.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:32:01.651 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:32:01.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:32:02.118 [DEBUG] [Thread-117481 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:32:02.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 31, 54), 46.85, 3.32, 0.0, 36.19, 26.66, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:32:02.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:31:54
2025-11-03T14:32:02.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:32:02.635 [DEBUG] [Thread-117482] [transport.py] [_log()] starting thread (client mode): 0xed4d000
2025-11-03T14:32:02.636 [DEBUG] [Thread-117482] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:32:02.655 [DEBUG] [Thread-117482] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:32:02.655 [INFO] [Thread-117482] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:32:02.658 [DEBUG] [Thread-117482] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:32:02.659 [DEBUG] [Thread-117482] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:32:02.659 [DEBUG] [Thread-117482] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:32:02.659 [DEBUG] [Thread-117482] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:32:02.659 [DEBUG] [Thread-117482] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:32:02.659 [DEBUG] [Thread-117482] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:32:02.659 [DEBUG] [Thread-117482] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:32:02.659 [DEBUG] [Thread-117482] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:32:02.659 [DEBUG] [Thread-117482] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:32:02.659 [DEBUG] [Thread-117482] [transport.py] [_log()] client lang: <none>
2025-11-03T14:32:02.659 [DEBUG] [Thread-117482] [transport.py] [_log()] server lang: <none>
2025-11-03T14:32:02.659 [DEBUG] [Thread-117482] [transport.py] [_log()] kex follows: False
2025-11-03T14:32:02.659 [DEBUG] [Thread-117482] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:32:02.659 [DEBUG] [Thread-117482] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:32:02.659 [DEBUG] [Thread-117482] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:32:02.659 [DEBUG] [Thread-117482] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:32:02.659 [DEBUG] [Thread-117482] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:32:02.659 [DEBUG] [Thread-117482] [transport.py] [_log()] Compression: none
2025-11-03T14:32:02.659 [DEBUG] [Thread-117482] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:32:02.673 [DEBUG] [Thread-117482] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:32:02.674 [DEBUG] [Thread-117482] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:32:02.674 [DEBUG] [Thread-117482] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:32:02.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:32:02.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:32:02.717 [DEBUG] [Thread-117482] [transport.py] [_log()] userauth is OK
2025-11-03T14:32:02.717 [DEBUG] [Thread-117482] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:32:02.717 [DEBUG] [Thread-117482] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:32:02.717 [DEBUG] [Thread-117482] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:32:02.717 [DEBUG] [Thread-117482] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:32:02.732 [INFO] [Thread-117482] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:32:02.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:32:03.362 [DEBUG] [Thread-117482] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:32:03.363 [DEBUG] [Thread-117482] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:32:03.363 [DEBUG] [Thread-117482] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:32:03.404 [DEBUG] [Thread-117482] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:32:03.404 [DEBUG] [Thread-117482] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:32:03.409 [DEBUG] [Thread-117482] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:32:03.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:32:03.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:32:03.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:32:03.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:32:03.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:32:03.435 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:32:03.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:32:03.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:32:03.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:32:03.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.521978 -999.00  +25.80  34.49      8  -10.40 1 1 2 1 1   888    0 36.53 24.52 ----- 35.8 34.5 309.4 45.3 31.0 -32.7 30.4 -31.8 31.1 -30.2 31.9 -31.3
2025-11-03T14:32:03.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:32:03.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:32:03.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.521978
2025-11-03T14:32:03.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:32:03.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:32:03.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:32:03.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:32:03.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:32:03.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:31:54', tmtdew=46.85, humidity=3.32, cloud=0.0, wind=36.19, temperature=26.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:31:38.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:32:03.438 [DEBUG] [Thread-117482] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:32:03.522 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:32:03.535 [DEBUG] [Thread-117485] [transport.py] [_log()] starting thread (client mode): 0x11783130
2025-11-03T14:32:03.535 [DEBUG] [Thread-117485] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:32:03.550 [DEBUG] [Thread-117485] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:32:03.550 [INFO] [Thread-117485] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:32:03.559 [DEBUG] [Thread-117485] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:32:03.560 [DEBUG] [Thread-117485] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:32:03.560 [DEBUG] [Thread-117485] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:32:03.560 [DEBUG] [Thread-117485] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:32:03.560 [DEBUG] [Thread-117485] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:32:03.560 [DEBUG] [Thread-117485] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:32:03.560 [DEBUG] [Thread-117485] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:32:03.561 [DEBUG] [Thread-117485] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:32:03.561 [DEBUG] [Thread-117485] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:32:03.561 [DEBUG] [Thread-117485] [transport.py] [_log()] client lang: <none>
2025-11-03T14:32:03.561 [DEBUG] [Thread-117485] [transport.py] [_log()] server lang: <none>
2025-11-03T14:32:03.561 [DEBUG] [Thread-117485] [transport.py] [_log()] kex follows: False
2025-11-03T14:32:03.561 [DEBUG] [Thread-117485] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:32:03.561 [DEBUG] [Thread-117485] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:32:03.561 [DEBUG] [Thread-117485] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:32:03.562 [DEBUG] [Thread-117485] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:32:03.562 [DEBUG] [Thread-117485] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:32:03.562 [DEBUG] [Thread-117485] [transport.py] [_log()] Compression: none
2025-11-03T14:32:03.563 [DEBUG] [Thread-117485] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:32:03.617 [DEBUG] [Thread-117485] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:32:03.618 [DEBUG] [Thread-117485] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:32:03.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:32:03.619 [DEBUG] [Thread-117485] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:32:03.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:32:03.678 [DEBUG] [Thread-117485] [transport.py] [_log()] userauth is OK
2025-11-03T14:32:03.678 [DEBUG] [Thread-117485] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:32:03.678 [DEBUG] [Thread-117485] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:32:03.678 [DEBUG] [Thread-117485] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:32:03.678 [DEBUG] [Thread-117485] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:32:03.697 [INFO] [Thread-117485] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:32:03.707 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:32:03.708 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:32:04.517 [DEBUG] [Thread-117485] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:32:04.518 [DEBUG] [Thread-117485] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:32:04.567 [DEBUG] [Thread-117485] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:32:04.567 [DEBUG] [Thread-117485] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:32:04.576 [DEBUG] [Thread-117485] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:32:04.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:32:04.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:32:04.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:32:04.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:32:04.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:32:04.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:32:04.617 [DEBUG] [Thread-117485] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:32:11.271 [DEBUG] [Thread-117487 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:32:17.153 [DEBUG] [Thread-117488 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:32:32.206 [DEBUG] [Thread-117489 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:32:34.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:32:34.636 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:32:34.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:32:35.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 32, 27), 46.95, 3.29, 0.0, 31.71, 26.62, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:32:35.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:32:27
2025-11-03T14:32:35.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:32:35.685 [DEBUG] [Thread-117490] [transport.py] [_log()] starting thread (client mode): 0x117ea7d0
2025-11-03T14:32:35.685 [DEBUG] [Thread-117490] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:32:35.696 [DEBUG] [Thread-117490] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:32:35.696 [INFO] [Thread-117490] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:32:35.699 [DEBUG] [Thread-117490] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:32:35.699 [DEBUG] [Thread-117490] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:32:35.699 [DEBUG] [Thread-117490] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:32:35.700 [DEBUG] [Thread-117490] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:32:35.700 [DEBUG] [Thread-117490] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:32:35.700 [DEBUG] [Thread-117490] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:32:35.700 [DEBUG] [Thread-117490] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:32:35.700 [DEBUG] [Thread-117490] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:32:35.700 [DEBUG] [Thread-117490] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:32:35.700 [DEBUG] [Thread-117490] [transport.py] [_log()] client lang: <none>
2025-11-03T14:32:35.700 [DEBUG] [Thread-117490] [transport.py] [_log()] server lang: <none>
2025-11-03T14:32:35.700 [DEBUG] [Thread-117490] [transport.py] [_log()] kex follows: False
2025-11-03T14:32:35.700 [DEBUG] [Thread-117490] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:32:35.700 [DEBUG] [Thread-117490] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:32:35.700 [DEBUG] [Thread-117490] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:32:35.700 [DEBUG] [Thread-117490] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:32:35.701 [DEBUG] [Thread-117490] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:32:35.701 [DEBUG] [Thread-117490] [transport.py] [_log()] Compression: none
2025-11-03T14:32:35.701 [DEBUG] [Thread-117490] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:32:35.719 [DEBUG] [Thread-117490] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:32:35.719 [DEBUG] [Thread-117490] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:32:35.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:32:35.720 [DEBUG] [Thread-117490] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:32:35.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:32:35.723 [DEBUG] [Thread-117490] [transport.py] [_log()] userauth is OK
2025-11-03T14:32:35.723 [DEBUG] [Thread-117490] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:32:35.723 [DEBUG] [Thread-117490] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:32:35.723 [DEBUG] [Thread-117490] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:32:35.723 [DEBUG] [Thread-117490] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:32:35.749 [INFO] [Thread-117490] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:32:35.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:32:36.408 [DEBUG] [Thread-117490] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:32:36.409 [DEBUG] [Thread-117490] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:32:36.409 [DEBUG] [Thread-117490] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:32:36.449 [DEBUG] [Thread-117490] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:32:36.449 [DEBUG] [Thread-117490] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:32:36.453 [DEBUG] [Thread-117490] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:32:36.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:32:36.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:32:36.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:32:36.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:32:36.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:32:36.477 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:32:36.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:32:36.478 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:32:36.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:32:36.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.522325 -999.00  +25.90  36.19      8  -10.00 1 1 2 1 1   888    0 37.01 26.51 ----- 32.1 36.2 307.4 41.8 31.0 -31.7 30.4 -31.7 31.1 -29.8 31.9 -30.9
2025-11-03T14:32:36.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:32:36.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:32:36.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.522325
2025-11-03T14:32:36.486 [DEBUG] [Thread-117490] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:32:36.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:32:36.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:32:36.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:32:36.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:32:36.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:32:36.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:32:27', tmtdew=46.95, humidity=3.29, cloud=0.0, wind=31.71, temperature=26.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:32:08.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:32:36.572 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:32:36.584 [DEBUG] [Thread-117493] [transport.py] [_log()] starting thread (client mode): 0x11783e80
2025-11-03T14:32:36.584 [DEBUG] [Thread-117493] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:32:36.598 [DEBUG] [Thread-117493] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:32:36.598 [INFO] [Thread-117493] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:32:36.606 [DEBUG] [Thread-117493] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:32:36.606 [DEBUG] [Thread-117493] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:32:36.606 [DEBUG] [Thread-117493] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:32:36.606 [DEBUG] [Thread-117493] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:32:36.606 [DEBUG] [Thread-117493] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:32:36.606 [DEBUG] [Thread-117493] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:32:36.606 [DEBUG] [Thread-117493] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:32:36.606 [DEBUG] [Thread-117493] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:32:36.606 [DEBUG] [Thread-117493] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:32:36.607 [DEBUG] [Thread-117493] [transport.py] [_log()] client lang: <none>
2025-11-03T14:32:36.607 [DEBUG] [Thread-117493] [transport.py] [_log()] server lang: <none>
2025-11-03T14:32:36.607 [DEBUG] [Thread-117493] [transport.py] [_log()] kex follows: False
2025-11-03T14:32:36.607 [DEBUG] [Thread-117493] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:32:36.607 [DEBUG] [Thread-117493] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:32:36.607 [DEBUG] [Thread-117493] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:32:36.607 [DEBUG] [Thread-117493] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:32:36.607 [DEBUG] [Thread-117493] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:32:36.607 [DEBUG] [Thread-117493] [transport.py] [_log()] Compression: none
2025-11-03T14:32:36.607 [DEBUG] [Thread-117493] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:32:36.665 [DEBUG] [Thread-117493] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:32:36.666 [DEBUG] [Thread-117493] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:32:36.666 [DEBUG] [Thread-117493] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:32:36.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:32:36.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:32:36.721 [DEBUG] [Thread-117493] [transport.py] [_log()] userauth is OK
2025-11-03T14:32:36.721 [DEBUG] [Thread-117493] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:32:36.722 [DEBUG] [Thread-117493] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:32:36.722 [DEBUG] [Thread-117493] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:32:36.722 [DEBUG] [Thread-117493] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:32:36.741 [INFO] [Thread-117493] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:32:36.742 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:32:36.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:32:37.595 [DEBUG] [Thread-117493] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:32:37.595 [DEBUG] [Thread-117493] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:32:37.643 [DEBUG] [Thread-117493] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:32:37.643 [DEBUG] [Thread-117493] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:32:37.653 [DEBUG] [Thread-117493] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:32:37.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:32:37.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:32:37.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:32:37.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:32:37.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:32:37.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:32:37.690 [DEBUG] [Thread-117493] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:32:47.242 [DEBUG] [Thread-117495 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:32:58.209 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:32:58.210 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:33:02.300 [DEBUG] [Thread-117496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:33:07.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:33:07.712 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:33:07.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:33:08.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 32, 59), 46.64, 3.84, 0.0, 32.22, 26.74, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:33:08.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:32:59
2025-11-03T14:33:08.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:33:08.809 [DEBUG] [Thread-117497] [transport.py] [_log()] starting thread (client mode): 0x1179b790
2025-11-03T14:33:08.809 [DEBUG] [Thread-117497] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:33:08.828 [DEBUG] [Thread-117497] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:33:08.828 [INFO] [Thread-117497] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:33:08.831 [DEBUG] [Thread-117497] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:33:08.831 [DEBUG] [Thread-117497] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:33:08.831 [DEBUG] [Thread-117497] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:33:08.831 [DEBUG] [Thread-117497] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:33:08.831 [DEBUG] [Thread-117497] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:33:08.831 [DEBUG] [Thread-117497] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:33:08.831 [DEBUG] [Thread-117497] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:33:08.831 [DEBUG] [Thread-117497] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:33:08.831 [DEBUG] [Thread-117497] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:33:08.831 [DEBUG] [Thread-117497] [transport.py] [_log()] client lang: <none>
2025-11-03T14:33:08.831 [DEBUG] [Thread-117497] [transport.py] [_log()] server lang: <none>
2025-11-03T14:33:08.831 [DEBUG] [Thread-117497] [transport.py] [_log()] kex follows: False
2025-11-03T14:33:08.831 [DEBUG] [Thread-117497] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:33:08.831 [DEBUG] [Thread-117497] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:33:08.831 [DEBUG] [Thread-117497] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:33:08.831 [DEBUG] [Thread-117497] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:33:08.831 [DEBUG] [Thread-117497] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:33:08.831 [DEBUG] [Thread-117497] [transport.py] [_log()] Compression: none
2025-11-03T14:33:08.831 [DEBUG] [Thread-117497] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:33:08.848 [DEBUG] [Thread-117497] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:33:08.848 [DEBUG] [Thread-117497] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:33:08.848 [DEBUG] [Thread-117497] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:33:08.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:33:08.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:33:08.849 [DEBUG] [Thread-117497] [transport.py] [_log()] userauth is OK
2025-11-03T14:33:08.849 [DEBUG] [Thread-117497] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:33:08.849 [DEBUG] [Thread-117497] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:33:08.849 [DEBUG] [Thread-117497] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:33:08.849 [DEBUG] [Thread-117497] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:33:08.858 [INFO] [Thread-117497] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:33:08.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:33:09.468 [DEBUG] [Thread-117497] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:33:09.468 [DEBUG] [Thread-117497] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:33:09.468 [DEBUG] [Thread-117497] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:33:09.508 [DEBUG] [Thread-117497] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:33:09.508 [DEBUG] [Thread-117497] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:33:09.511 [DEBUG] [Thread-117497] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:33:09.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:33:09.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:33:09.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:33:09.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:33:09.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:33:09.529 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:33:09.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:33:09.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:33:09.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:33:09.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.522673 -999.00  +25.30  24.17      8  -10.20 1 1 1 1 1   888    0 37.28 29.23 ----- 23.4 24.2 312.6 34.9 30.9 -31.9 30.3 -30.5 30.9 -31.6 31.8 -29.9
2025-11-03T14:33:09.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:33:09.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:33:09.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.522673
2025-11-03T14:33:09.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:33:09.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:33:09.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:33:09.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:33:09.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:33:09.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:32:59', tmtdew=46.64, humidity=3.84, cloud=0.0, wind=32.22, temperature=26.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:32:38.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:33:09.530 [DEBUG] [Thread-117497] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:33:09.604 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:33:09.617 [DEBUG] [Thread-117500] [transport.py] [_log()] starting thread (client mode): 0x1179abc0
2025-11-03T14:33:09.617 [DEBUG] [Thread-117500] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:33:09.632 [DEBUG] [Thread-117500] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:33:09.632 [INFO] [Thread-117500] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:33:09.639 [DEBUG] [Thread-117500] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:33:09.639 [DEBUG] [Thread-117500] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:33:09.639 [DEBUG] [Thread-117500] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:33:09.639 [DEBUG] [Thread-117500] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:33:09.639 [DEBUG] [Thread-117500] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:33:09.639 [DEBUG] [Thread-117500] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:33:09.639 [DEBUG] [Thread-117500] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:33:09.639 [DEBUG] [Thread-117500] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:33:09.639 [DEBUG] [Thread-117500] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:33:09.639 [DEBUG] [Thread-117500] [transport.py] [_log()] client lang: <none>
2025-11-03T14:33:09.639 [DEBUG] [Thread-117500] [transport.py] [_log()] server lang: <none>
2025-11-03T14:33:09.639 [DEBUG] [Thread-117500] [transport.py] [_log()] kex follows: False
2025-11-03T14:33:09.639 [DEBUG] [Thread-117500] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:33:09.639 [DEBUG] [Thread-117500] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:33:09.639 [DEBUG] [Thread-117500] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:33:09.640 [DEBUG] [Thread-117500] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:33:09.640 [DEBUG] [Thread-117500] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:33:09.640 [DEBUG] [Thread-117500] [transport.py] [_log()] Compression: none
2025-11-03T14:33:09.640 [DEBUG] [Thread-117500] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:33:09.696 [DEBUG] [Thread-117500] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:33:09.697 [DEBUG] [Thread-117500] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:33:09.697 [DEBUG] [Thread-117500] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:33:09.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:33:09.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:33:09.753 [DEBUG] [Thread-117500] [transport.py] [_log()] userauth is OK
2025-11-03T14:33:09.753 [DEBUG] [Thread-117500] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:33:09.753 [DEBUG] [Thread-117500] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:33:09.753 [DEBUG] [Thread-117500] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:33:09.753 [DEBUG] [Thread-117500] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:33:09.767 [INFO] [Thread-117500] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:33:09.767 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:33:09.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:33:10.620 [DEBUG] [Thread-117500] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:33:10.620 [DEBUG] [Thread-117500] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:33:10.667 [DEBUG] [Thread-117500] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:33:10.667 [DEBUG] [Thread-117500] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:33:10.676 [DEBUG] [Thread-117500] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:33:10.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:33:10.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:33:10.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:33:10.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:33:10.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:33:10.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:33:10.707 [DEBUG] [Thread-117500] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:33:11.318 [DEBUG] [Thread-117502 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:33:17.327 [DEBUG] [Thread-117503 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:33:32.368 [DEBUG] [Thread-117504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:33:40.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:33:40.730 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:33:40.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:33:41.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 33, 31), 46.68, 3.8, 0.0, 27.74, 26.52, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:33:41.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:33:31
2025-11-03T14:33:41.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:33:41.808 [DEBUG] [Thread-117505] [transport.py] [_log()] starting thread (client mode): 0x1179a5f0
2025-11-03T14:33:41.809 [DEBUG] [Thread-117505] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:33:41.829 [DEBUG] [Thread-117505] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:33:41.829 [INFO] [Thread-117505] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:33:41.839 [DEBUG] [Thread-117505] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:33:41.839 [DEBUG] [Thread-117505] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:33:41.839 [DEBUG] [Thread-117505] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:33:41.839 [DEBUG] [Thread-117505] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:33:41.839 [DEBUG] [Thread-117505] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:33:41.839 [DEBUG] [Thread-117505] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:33:41.839 [DEBUG] [Thread-117505] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:33:41.840 [DEBUG] [Thread-117505] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:33:41.840 [DEBUG] [Thread-117505] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:33:41.840 [DEBUG] [Thread-117505] [transport.py] [_log()] client lang: <none>
2025-11-03T14:33:41.840 [DEBUG] [Thread-117505] [transport.py] [_log()] server lang: <none>
2025-11-03T14:33:41.840 [DEBUG] [Thread-117505] [transport.py] [_log()] kex follows: False
2025-11-03T14:33:41.840 [DEBUG] [Thread-117505] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:33:41.840 [DEBUG] [Thread-117505] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:33:41.840 [DEBUG] [Thread-117505] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:33:41.840 [DEBUG] [Thread-117505] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:33:41.841 [DEBUG] [Thread-117505] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:33:41.841 [DEBUG] [Thread-117505] [transport.py] [_log()] Compression: none
2025-11-03T14:33:41.841 [DEBUG] [Thread-117505] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:33:41.862 [DEBUG] [Thread-117505] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:33:41.863 [DEBUG] [Thread-117505] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:33:41.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:33:41.864 [DEBUG] [Thread-117505] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:33:41.865 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:33:41.866 [DEBUG] [Thread-117505] [transport.py] [_log()] userauth is OK
2025-11-03T14:33:41.866 [DEBUG] [Thread-117505] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:33:41.866 [DEBUG] [Thread-117505] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:33:41.867 [DEBUG] [Thread-117505] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:33:41.867 [DEBUG] [Thread-117505] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:33:41.892 [INFO] [Thread-117505] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:33:41.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:33:42.533 [DEBUG] [Thread-117505] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:33:42.533 [DEBUG] [Thread-117505] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:33:42.534 [DEBUG] [Thread-117505] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:33:42.573 [DEBUG] [Thread-117505] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:33:42.574 [DEBUG] [Thread-117505] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:33:42.576 [DEBUG] [Thread-117505] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:33:42.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:33:42.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:33:42.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:33:42.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:33:42.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:33:42.599 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:33:42.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:33:42.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:33:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:33:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.523020 -999.00  +25.60  26.26      8   -9.80 1 1 1 1 1   888    0 37.26 28.03 ----- 29.2 26.3 305.0 30.9 30.9 -31.2 30.4 -30.0 31.1 -29.7 31.9 -30.0
2025-11-03T14:33:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:33:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:33:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.523020
2025-11-03T14:33:42.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:33:42.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:33:42.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:33:42.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:33:42.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:33:42.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:33:31', tmtdew=46.68, humidity=3.8, cloud=0.0, wind=27.74, temperature=26.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:33:08.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:33:42.600 [DEBUG] [Thread-117505] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:33:42.686 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:33:42.698 [DEBUG] [Thread-117508] [transport.py] [_log()] starting thread (client mode): 0xedd5660
2025-11-03T14:33:42.698 [DEBUG] [Thread-117508] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:33:42.712 [DEBUG] [Thread-117508] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:33:42.713 [INFO] [Thread-117508] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:33:42.721 [DEBUG] [Thread-117508] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:33:42.722 [DEBUG] [Thread-117508] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:33:42.722 [DEBUG] [Thread-117508] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:33:42.722 [DEBUG] [Thread-117508] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:33:42.722 [DEBUG] [Thread-117508] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:33:42.722 [DEBUG] [Thread-117508] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:33:42.722 [DEBUG] [Thread-117508] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:33:42.722 [DEBUG] [Thread-117508] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:33:42.722 [DEBUG] [Thread-117508] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:33:42.722 [DEBUG] [Thread-117508] [transport.py] [_log()] client lang: <none>
2025-11-03T14:33:42.722 [DEBUG] [Thread-117508] [transport.py] [_log()] server lang: <none>
2025-11-03T14:33:42.722 [DEBUG] [Thread-117508] [transport.py] [_log()] kex follows: False
2025-11-03T14:33:42.722 [DEBUG] [Thread-117508] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:33:42.722 [DEBUG] [Thread-117508] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:33:42.722 [DEBUG] [Thread-117508] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:33:42.722 [DEBUG] [Thread-117508] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:33:42.722 [DEBUG] [Thread-117508] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:33:42.722 [DEBUG] [Thread-117508] [transport.py] [_log()] Compression: none
2025-11-03T14:33:42.723 [DEBUG] [Thread-117508] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:33:42.780 [DEBUG] [Thread-117508] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:33:42.781 [DEBUG] [Thread-117508] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:33:42.781 [DEBUG] [Thread-117508] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:33:42.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:33:42.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:33:42.837 [DEBUG] [Thread-117508] [transport.py] [_log()] userauth is OK
2025-11-03T14:33:42.838 [DEBUG] [Thread-117508] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:33:42.838 [DEBUG] [Thread-117508] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:33:42.838 [DEBUG] [Thread-117508] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:33:42.838 [DEBUG] [Thread-117508] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:33:42.857 [INFO] [Thread-117508] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:33:42.857 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:33:42.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:33:43.723 [DEBUG] [Thread-117508] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:33:43.723 [DEBUG] [Thread-117508] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:33:43.771 [DEBUG] [Thread-117508] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:33:43.771 [DEBUG] [Thread-117508] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:33:43.779 [DEBUG] [Thread-117508] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:33:43.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:33:43.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:33:43.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:33:43.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:33:43.803 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:33:43.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:33:43.811 [DEBUG] [Thread-117508] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:33:47.396 [DEBUG] [Thread-117510 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:33:58.349 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:33:58.350 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:34:02.434 [DEBUG] [Thread-117511 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:34:11.502 [DEBUG] [Thread-117512 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:34:13.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:34:13.834 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:34:13.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:34:14.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 34, 3), 46.23, 3.92, 0.0, 29.73, 26.26, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:34:14.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:34:03
2025-11-03T14:34:14.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:34:14.893 [DEBUG] [Thread-117513] [transport.py] [_log()] starting thread (client mode): 0x117e8f40
2025-11-03T14:34:14.893 [DEBUG] [Thread-117513] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:34:14.903 [DEBUG] [Thread-117513] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:34:14.904 [INFO] [Thread-117513] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:34:14.907 [DEBUG] [Thread-117513] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:34:14.907 [DEBUG] [Thread-117513] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:34:14.907 [DEBUG] [Thread-117513] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:34:14.907 [DEBUG] [Thread-117513] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:34:14.907 [DEBUG] [Thread-117513] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:34:14.907 [DEBUG] [Thread-117513] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:34:14.907 [DEBUG] [Thread-117513] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:34:14.907 [DEBUG] [Thread-117513] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:34:14.907 [DEBUG] [Thread-117513] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:34:14.907 [DEBUG] [Thread-117513] [transport.py] [_log()] client lang: <none>
2025-11-03T14:34:14.907 [DEBUG] [Thread-117513] [transport.py] [_log()] server lang: <none>
2025-11-03T14:34:14.908 [DEBUG] [Thread-117513] [transport.py] [_log()] kex follows: False
2025-11-03T14:34:14.908 [DEBUG] [Thread-117513] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:34:14.908 [DEBUG] [Thread-117513] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:34:14.908 [DEBUG] [Thread-117513] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:34:14.908 [DEBUG] [Thread-117513] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:34:14.908 [DEBUG] [Thread-117513] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:34:14.908 [DEBUG] [Thread-117513] [transport.py] [_log()] Compression: none
2025-11-03T14:34:14.908 [DEBUG] [Thread-117513] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:34:14.927 [DEBUG] [Thread-117513] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:34:14.928 [DEBUG] [Thread-117513] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:34:14.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:34:14.930 [DEBUG] [Thread-117513] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:34:14.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:34:14.969 [DEBUG] [Thread-117513] [transport.py] [_log()] userauth is OK
2025-11-03T14:34:14.969 [DEBUG] [Thread-117513] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:34:14.970 [DEBUG] [Thread-117513] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:34:14.970 [DEBUG] [Thread-117513] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:34:14.970 [DEBUG] [Thread-117513] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:34:14.989 [INFO] [Thread-117513] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:34:14.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:34:15.654 [DEBUG] [Thread-117513] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:34:15.655 [DEBUG] [Thread-117513] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:34:15.655 [DEBUG] [Thread-117513] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:34:15.696 [DEBUG] [Thread-117513] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:34:15.696 [DEBUG] [Thread-117513] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:34:15.700 [DEBUG] [Thread-117513] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:34:15.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:34:15.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:34:15.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:34:15.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:34:15.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:34:15.723 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:34:15.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:34:15.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:34:15.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:34:15.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.523367 -999.00  +26.20  22.06      8   -9.90 1 1 1 1 1   888    0 36.94 28.93 ----- 21.9 22.1 324.0 28.9 31.0 -31.5 30.4 -30.9 31.1 -30.0 32.0 -30.2
2025-11-03T14:34:15.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:34:15.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:34:15.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.523367
2025-11-03T14:34:15.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:34:15.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:34:15.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:34:15.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:34:15.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:34:15.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:34:03', tmtdew=46.23, humidity=3.92, cloud=0.0, wind=29.73, temperature=26.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:33:38.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:34:15.727 [DEBUG] [Thread-117513] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:34:15.810 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:34:15.824 [DEBUG] [Thread-117516] [transport.py] [_log()] starting thread (client mode): 0x117ea680
2025-11-03T14:34:15.824 [DEBUG] [Thread-117516] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:34:15.838 [DEBUG] [Thread-117516] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:34:15.838 [INFO] [Thread-117516] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:34:15.846 [DEBUG] [Thread-117516] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:34:15.846 [DEBUG] [Thread-117516] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:34:15.846 [DEBUG] [Thread-117516] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:34:15.846 [DEBUG] [Thread-117516] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:34:15.846 [DEBUG] [Thread-117516] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:34:15.846 [DEBUG] [Thread-117516] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:34:15.846 [DEBUG] [Thread-117516] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:34:15.846 [DEBUG] [Thread-117516] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:34:15.846 [DEBUG] [Thread-117516] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:34:15.846 [DEBUG] [Thread-117516] [transport.py] [_log()] client lang: <none>
2025-11-03T14:34:15.847 [DEBUG] [Thread-117516] [transport.py] [_log()] server lang: <none>
2025-11-03T14:34:15.847 [DEBUG] [Thread-117516] [transport.py] [_log()] kex follows: False
2025-11-03T14:34:15.847 [DEBUG] [Thread-117516] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:34:15.847 [DEBUG] [Thread-117516] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:34:15.847 [DEBUG] [Thread-117516] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:34:15.847 [DEBUG] [Thread-117516] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:34:15.847 [DEBUG] [Thread-117516] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:34:15.847 [DEBUG] [Thread-117516] [transport.py] [_log()] Compression: none
2025-11-03T14:34:15.847 [DEBUG] [Thread-117516] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:34:15.906 [DEBUG] [Thread-117516] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:34:15.907 [DEBUG] [Thread-117516] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:34:15.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:34:15.908 [DEBUG] [Thread-117516] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:34:15.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:34:15.965 [DEBUG] [Thread-117516] [transport.py] [_log()] userauth is OK
2025-11-03T14:34:15.965 [DEBUG] [Thread-117516] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:34:15.965 [DEBUG] [Thread-117516] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:34:15.965 [DEBUG] [Thread-117516] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:34:15.966 [DEBUG] [Thread-117516] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:34:15.985 [INFO] [Thread-117516] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:34:15.986 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:34:15.987 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:34:16.811 [DEBUG] [Thread-117516] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:34:16.812 [DEBUG] [Thread-117516] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:34:16.860 [DEBUG] [Thread-117516] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:34:16.860 [DEBUG] [Thread-117516] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:34:16.873 [DEBUG] [Thread-117516] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:34:16.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:34:16.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:34:16.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:34:16.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:34:16.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:34:16.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:34:16.927 [DEBUG] [Thread-117516] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:34:17.464 [DEBUG] [Thread-117518 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:34:32.509 [DEBUG] [Thread-117519 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:34:46.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:34:46.920 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:34:46.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:34:47.545 [DEBUG] [Thread-117520 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:34:47.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 34, 36), 46.12, 3.92, 0.0, 24.4, 26.61, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:34:47.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:34:36
2025-11-03T14:34:47.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:34:47.915 [DEBUG] [Thread-117521] [transport.py] [_log()] starting thread (client mode): 0x11782a10
2025-11-03T14:34:47.915 [DEBUG] [Thread-117521] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:34:47.935 [DEBUG] [Thread-117521] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:34:47.935 [INFO] [Thread-117521] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:34:47.938 [DEBUG] [Thread-117521] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:34:47.938 [DEBUG] [Thread-117521] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:34:47.938 [DEBUG] [Thread-117521] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:34:47.938 [DEBUG] [Thread-117521] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:34:47.938 [DEBUG] [Thread-117521] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:34:47.938 [DEBUG] [Thread-117521] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:34:47.938 [DEBUG] [Thread-117521] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:34:47.938 [DEBUG] [Thread-117521] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:34:47.938 [DEBUG] [Thread-117521] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:34:47.938 [DEBUG] [Thread-117521] [transport.py] [_log()] client lang: <none>
2025-11-03T14:34:47.938 [DEBUG] [Thread-117521] [transport.py] [_log()] server lang: <none>
2025-11-03T14:34:47.938 [DEBUG] [Thread-117521] [transport.py] [_log()] kex follows: False
2025-11-03T14:34:47.938 [DEBUG] [Thread-117521] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:34:47.938 [DEBUG] [Thread-117521] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:34:47.938 [DEBUG] [Thread-117521] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:34:47.938 [DEBUG] [Thread-117521] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:34:47.938 [DEBUG] [Thread-117521] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:34:47.938 [DEBUG] [Thread-117521] [transport.py] [_log()] Compression: none
2025-11-03T14:34:47.938 [DEBUG] [Thread-117521] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:34:47.967 [DEBUG] [Thread-117521] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:34:47.967 [DEBUG] [Thread-117521] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:34:47.967 [DEBUG] [Thread-117521] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:34:47.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:34:47.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:34:47.968 [DEBUG] [Thread-117521] [transport.py] [_log()] userauth is OK
2025-11-03T14:34:47.968 [DEBUG] [Thread-117521] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:34:47.968 [DEBUG] [Thread-117521] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:34:47.968 [DEBUG] [Thread-117521] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:34:47.968 [DEBUG] [Thread-117521] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:34:47.983 [INFO] [Thread-117521] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:34:47.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:34:48.625 [DEBUG] [Thread-117521] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:34:48.625 [DEBUG] [Thread-117521] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:34:48.625 [DEBUG] [Thread-117521] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:34:48.666 [DEBUG] [Thread-117521] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:34:48.666 [DEBUG] [Thread-117521] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:34:48.669 [DEBUG] [Thread-117521] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:34:48.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:34:48.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:34:48.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:34:48.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:34:48.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:34:48.696 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:34:48.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:34:48.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:34:48.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:34:48.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.524061 -999.00  +25.90  21.58      8  -10.20 1 1 1 1 1   888    0 37.11 31.75 ----- 17.0 21.6 330.2 33.3 30.9 -32.1 30.4 -30.6 31.2 -30.2 32.0 -30.3
2025-11-03T14:34:48.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:34:48.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:34:48.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.524061
2025-11-03T14:34:48.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:34:48.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:34:48.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:34:48.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:34:48.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:34:48.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:34:36', tmtdew=46.12, humidity=3.92, cloud=0.0, wind=24.4, temperature=26.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:34:38.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:34:48.699 [DEBUG] [Thread-117521] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:34:48.782 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:34:48.794 [DEBUG] [Thread-117524] [transport.py] [_log()] starting thread (client mode): 0xeda10f0
2025-11-03T14:34:48.794 [DEBUG] [Thread-117524] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:34:48.809 [DEBUG] [Thread-117524] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:34:48.809 [INFO] [Thread-117524] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:34:48.816 [DEBUG] [Thread-117524] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:34:48.816 [DEBUG] [Thread-117524] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:34:48.816 [DEBUG] [Thread-117524] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:34:48.816 [DEBUG] [Thread-117524] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:34:48.816 [DEBUG] [Thread-117524] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:34:48.816 [DEBUG] [Thread-117524] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:34:48.816 [DEBUG] [Thread-117524] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:34:48.816 [DEBUG] [Thread-117524] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:34:48.816 [DEBUG] [Thread-117524] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:34:48.817 [DEBUG] [Thread-117524] [transport.py] [_log()] client lang: <none>
2025-11-03T14:34:48.817 [DEBUG] [Thread-117524] [transport.py] [_log()] server lang: <none>
2025-11-03T14:34:48.817 [DEBUG] [Thread-117524] [transport.py] [_log()] kex follows: False
2025-11-03T14:34:48.817 [DEBUG] [Thread-117524] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:34:48.817 [DEBUG] [Thread-117524] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:34:48.817 [DEBUG] [Thread-117524] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:34:48.817 [DEBUG] [Thread-117524] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:34:48.817 [DEBUG] [Thread-117524] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:34:48.817 [DEBUG] [Thread-117524] [transport.py] [_log()] Compression: none
2025-11-03T14:34:48.817 [DEBUG] [Thread-117524] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:34:48.875 [DEBUG] [Thread-117524] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:34:48.876 [DEBUG] [Thread-117524] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:34:48.877 [DEBUG] [Thread-117524] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:34:48.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:34:48.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:34:48.931 [DEBUG] [Thread-117524] [transport.py] [_log()] userauth is OK
2025-11-03T14:34:48.932 [DEBUG] [Thread-117524] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:34:48.932 [DEBUG] [Thread-117524] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:34:48.932 [DEBUG] [Thread-117524] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:34:48.932 [DEBUG] [Thread-117524] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:34:48.951 [INFO] [Thread-117524] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:34:48.951 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:34:48.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:34:49.810 [DEBUG] [Thread-117524] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:34:49.810 [DEBUG] [Thread-117524] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:34:49.857 [DEBUG] [Thread-117524] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:34:49.857 [DEBUG] [Thread-117524] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:34:49.866 [DEBUG] [Thread-117524] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:34:49.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:34:49.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:34:49.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:34:49.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:34:49.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:34:49.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:34:49.898 [DEBUG] [Thread-117524] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:34:58.490 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:34:58.492 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:35:02.577 [DEBUG] [Thread-117526 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:35:11.574 [DEBUG] [Thread-117527 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:35:17.614 [DEBUG] [Thread-117528 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:35:19.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:35:19.911 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:35:19.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:35:20.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 35, 8), 46.54, 3.8, 0.0, 34.77, 26.81, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:35:20.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:35:08
2025-11-03T14:35:20.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:35:20.847 [DEBUG] [Thread-117529] [transport.py] [_log()] starting thread (client mode): 0xedd4190
2025-11-03T14:35:20.847 [DEBUG] [Thread-117529] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:35:20.867 [DEBUG] [Thread-117529] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:35:20.868 [INFO] [Thread-117529] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:35:20.869 [DEBUG] [Thread-117529] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:35:20.869 [DEBUG] [Thread-117529] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:35:20.869 [DEBUG] [Thread-117529] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:35:20.869 [DEBUG] [Thread-117529] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:35:20.869 [DEBUG] [Thread-117529] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:35:20.869 [DEBUG] [Thread-117529] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:35:20.869 [DEBUG] [Thread-117529] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:35:20.869 [DEBUG] [Thread-117529] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:35:20.869 [DEBUG] [Thread-117529] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:35:20.869 [DEBUG] [Thread-117529] [transport.py] [_log()] client lang: <none>
2025-11-03T14:35:20.869 [DEBUG] [Thread-117529] [transport.py] [_log()] server lang: <none>
2025-11-03T14:35:20.869 [DEBUG] [Thread-117529] [transport.py] [_log()] kex follows: False
2025-11-03T14:35:20.869 [DEBUG] [Thread-117529] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:35:20.869 [DEBUG] [Thread-117529] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:35:20.870 [DEBUG] [Thread-117529] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:35:20.870 [DEBUG] [Thread-117529] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:35:20.870 [DEBUG] [Thread-117529] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:35:20.870 [DEBUG] [Thread-117529] [transport.py] [_log()] Compression: none
2025-11-03T14:35:20.870 [DEBUG] [Thread-117529] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:35:20.883 [DEBUG] [Thread-117529] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:35:20.884 [DEBUG] [Thread-117529] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:35:20.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:35:20.885 [DEBUG] [Thread-117529] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:35:20.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:35:20.887 [DEBUG] [Thread-117529] [transport.py] [_log()] userauth is OK
2025-11-03T14:35:20.887 [DEBUG] [Thread-117529] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:35:20.887 [DEBUG] [Thread-117529] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:35:20.887 [DEBUG] [Thread-117529] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:35:20.887 [DEBUG] [Thread-117529] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:35:20.913 [INFO] [Thread-117529] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:35:20.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:35:21.506 [DEBUG] [Thread-117529] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:35:21.507 [DEBUG] [Thread-117529] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:35:21.507 [DEBUG] [Thread-117529] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:35:21.548 [DEBUG] [Thread-117529] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:35:21.548 [DEBUG] [Thread-117529] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:35:21.551 [DEBUG] [Thread-117529] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:35:21.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:35:21.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:35:21.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:35:21.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:35:21.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:35:21.577 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:35:21.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:35:21.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:35:21.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:35:21.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.524408 -999.00  +26.40  44.16      7  -10.60 1 1 2 1 1   888    0 37.71 33.57 ----- 40.6 44.2 327.8 54.7 31.0 -31.5 30.4 -31.1 31.3 -30.0 32.0 -31.1
2025-11-03T14:35:21.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:35:21.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:35:21.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.524408
2025-11-03T14:35:21.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:35:21.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:35:21.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:35:21.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:35:21.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:35:21.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:35:08', tmtdew=46.54, humidity=3.8, cloud=0.0, wind=34.77, temperature=26.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:35:08.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:35:21.580 [DEBUG] [Thread-117529] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:35:21.663 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:35:32.648 [DEBUG] [Thread-117532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:35:47.694 [DEBUG] [Thread-117533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:35:58.640 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:35:58.641 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:36:02.729 [DEBUG] [Thread-117534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:36:11.644 [DEBUG] [Thread-117535 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:36:17.760 [DEBUG] [Thread-117536 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:36:32.788 [DEBUG] [Thread-117537 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:36:47.821 [DEBUG] [Thread-117538 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:36:58.792 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:36:58.794 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:37:02.856 [DEBUG] [Thread-117539 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:37:11.842 [DEBUG] [Thread-117540 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:37:17.887 [DEBUG] [Thread-117541 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:37:32.923 [DEBUG] [Thread-117542 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:37:35.212 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T14:37:47.956 [DEBUG] [Thread-117543 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:37:58.933 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:37:58.934 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:38:02.995 [DEBUG] [Thread-117544 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:38:05.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:38:05.261 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:38:05.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:38:05.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 37, 49), 48.17, 3.11, 0.0, 36.15, 26.37, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:38:05.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:37:49
2025-11-03T14:38:06.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:38:06.319 [DEBUG] [Thread-117545] [transport.py] [_log()] starting thread (client mode): 0xed2e230
2025-11-03T14:38:06.320 [DEBUG] [Thread-117545] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:38:06.332 [DEBUG] [Thread-117545] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:38:06.332 [INFO] [Thread-117545] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:38:06.337 [DEBUG] [Thread-117545] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:38:06.337 [DEBUG] [Thread-117545] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:38:06.337 [DEBUG] [Thread-117545] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:38:06.337 [DEBUG] [Thread-117545] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:38:06.337 [DEBUG] [Thread-117545] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:38:06.337 [DEBUG] [Thread-117545] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:38:06.337 [DEBUG] [Thread-117545] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:38:06.337 [DEBUG] [Thread-117545] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:38:06.337 [DEBUG] [Thread-117545] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:38:06.337 [DEBUG] [Thread-117545] [transport.py] [_log()] client lang: <none>
2025-11-03T14:38:06.337 [DEBUG] [Thread-117545] [transport.py] [_log()] server lang: <none>
2025-11-03T14:38:06.337 [DEBUG] [Thread-117545] [transport.py] [_log()] kex follows: False
2025-11-03T14:38:06.337 [DEBUG] [Thread-117545] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:38:06.338 [DEBUG] [Thread-117545] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:38:06.338 [DEBUG] [Thread-117545] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:38:06.338 [DEBUG] [Thread-117545] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:38:06.338 [DEBUG] [Thread-117545] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:38:06.338 [DEBUG] [Thread-117545] [transport.py] [_log()] Compression: none
2025-11-03T14:38:06.338 [DEBUG] [Thread-117545] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:38:06.374 [DEBUG] [Thread-117545] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:38:06.379 [DEBUG] [Thread-117545] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:38:06.381 [DEBUG] [Thread-117545] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:38:06.383 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:38:06.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:38:06.387 [DEBUG] [Thread-117545] [transport.py] [_log()] userauth is OK
2025-11-03T14:38:06.387 [DEBUG] [Thread-117545] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:38:06.387 [DEBUG] [Thread-117545] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:38:06.387 [DEBUG] [Thread-117545] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:38:06.387 [DEBUG] [Thread-117545] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:38:06.426 [INFO] [Thread-117545] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:38:06.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:38:07.046 [DEBUG] [Thread-117545] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:38:07.055 [DEBUG] [Thread-117545] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:38:07.057 [DEBUG] [Thread-117545] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:38:07.087 [DEBUG] [Thread-117545] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:38:07.088 [DEBUG] [Thread-117545] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:38:07.091 [DEBUG] [Thread-117545] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:38:07.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:38:07.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:38:07.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:38:07.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:38:07.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:38:07.115 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:38:07.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:38:07.116 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:38:07.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:38:07.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.526145 -999.00  +26.20  34.79      7  -10.80 1 1 2 1 1   888    0 37.41 30.18 ----- 42.7 34.8 332.2 41.4 30.6 -31.4 30.0 -31.1 30.9 -31.0 31.6 -30.7
2025-11-03T14:38:07.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:38:07.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:38:07.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.526145
2025-11-03T14:38:07.123 [DEBUG] [Thread-117545] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:38:07.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:38:07.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:38:07.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:38:07.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:38:07.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:38:07.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:37:49', tmtdew=48.17, humidity=3.11, cloud=0.0, wind=36.15, temperature=26.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:37:38.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:38:07.216 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:38:07.229 [DEBUG] [Thread-117548] [transport.py] [_log()] starting thread (client mode): 0xedd7490
2025-11-03T14:38:07.229 [DEBUG] [Thread-117548] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:38:07.249 [DEBUG] [Thread-117548] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:38:07.249 [INFO] [Thread-117548] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:38:07.256 [DEBUG] [Thread-117548] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:38:07.256 [DEBUG] [Thread-117548] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:38:07.257 [DEBUG] [Thread-117548] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:38:07.257 [DEBUG] [Thread-117548] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:38:07.257 [DEBUG] [Thread-117548] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:38:07.257 [DEBUG] [Thread-117548] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:38:07.257 [DEBUG] [Thread-117548] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:38:07.257 [DEBUG] [Thread-117548] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:38:07.257 [DEBUG] [Thread-117548] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:38:07.257 [DEBUG] [Thread-117548] [transport.py] [_log()] client lang: <none>
2025-11-03T14:38:07.257 [DEBUG] [Thread-117548] [transport.py] [_log()] server lang: <none>
2025-11-03T14:38:07.257 [DEBUG] [Thread-117548] [transport.py] [_log()] kex follows: False
2025-11-03T14:38:07.257 [DEBUG] [Thread-117548] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:38:07.257 [DEBUG] [Thread-117548] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:38:07.258 [DEBUG] [Thread-117548] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:38:07.258 [DEBUG] [Thread-117548] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:38:07.258 [DEBUG] [Thread-117548] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:38:07.258 [DEBUG] [Thread-117548] [transport.py] [_log()] Compression: none
2025-11-03T14:38:07.258 [DEBUG] [Thread-117548] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:38:07.317 [DEBUG] [Thread-117548] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:38:07.318 [DEBUG] [Thread-117548] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:38:07.318 [DEBUG] [Thread-117548] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:38:07.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:38:07.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:38:07.377 [DEBUG] [Thread-117548] [transport.py] [_log()] userauth is OK
2025-11-03T14:38:07.378 [DEBUG] [Thread-117548] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:38:07.378 [DEBUG] [Thread-117548] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:38:07.378 [DEBUG] [Thread-117548] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:38:07.378 [DEBUG] [Thread-117548] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:38:07.397 [INFO] [Thread-117548] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:38:07.407 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:38:07.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:38:08.235 [DEBUG] [Thread-117548] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:38:08.236 [DEBUG] [Thread-117548] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:38:08.275 [DEBUG] [Thread-117548] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:38:08.275 [DEBUG] [Thread-117548] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:38:08.284 [DEBUG] [Thread-117548] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:38:08.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:38:08.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:38:08.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:38:08.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:38:08.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:38:08.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:38:08.317 [DEBUG] [Thread-117548] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:38:11.913 [DEBUG] [Thread-117550 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:38:18.028 [DEBUG] [Thread-117551 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:38:33.122 [DEBUG] [Thread-117552 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:38:38.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:38:38.340 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:38:38.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:38:38.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 38, 22), 48.2, 3.09, 0.0, 32.54, 26.29, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:38:38.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:38:22
2025-11-03T14:38:39.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:38:39.274 [DEBUG] [Thread-117553] [transport.py] [_log()] starting thread (client mode): 0xed2f4c0
2025-11-03T14:38:39.274 [DEBUG] [Thread-117553] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:38:39.294 [DEBUG] [Thread-117553] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:38:39.294 [INFO] [Thread-117553] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:38:39.298 [DEBUG] [Thread-117553] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:38:39.298 [DEBUG] [Thread-117553] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:38:39.298 [DEBUG] [Thread-117553] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:38:39.298 [DEBUG] [Thread-117553] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:38:39.298 [DEBUG] [Thread-117553] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:38:39.298 [DEBUG] [Thread-117553] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:38:39.298 [DEBUG] [Thread-117553] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:38:39.298 [DEBUG] [Thread-117553] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:38:39.298 [DEBUG] [Thread-117553] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:38:39.299 [DEBUG] [Thread-117553] [transport.py] [_log()] client lang: <none>
2025-11-03T14:38:39.299 [DEBUG] [Thread-117553] [transport.py] [_log()] server lang: <none>
2025-11-03T14:38:39.299 [DEBUG] [Thread-117553] [transport.py] [_log()] kex follows: False
2025-11-03T14:38:39.299 [DEBUG] [Thread-117553] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:38:39.299 [DEBUG] [Thread-117553] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:38:39.299 [DEBUG] [Thread-117553] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:38:39.299 [DEBUG] [Thread-117553] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:38:39.299 [DEBUG] [Thread-117553] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:38:39.299 [DEBUG] [Thread-117553] [transport.py] [_log()] Compression: none
2025-11-03T14:38:39.299 [DEBUG] [Thread-117553] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:38:39.316 [DEBUG] [Thread-117553] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:38:39.316 [DEBUG] [Thread-117553] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:38:39.316 [DEBUG] [Thread-117553] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:38:39.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:38:39.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:38:39.317 [DEBUG] [Thread-117553] [transport.py] [_log()] userauth is OK
2025-11-03T14:38:39.317 [DEBUG] [Thread-117553] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:38:39.317 [DEBUG] [Thread-117553] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:38:39.317 [DEBUG] [Thread-117553] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:38:39.317 [DEBUG] [Thread-117553] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:38:39.337 [INFO] [Thread-117553] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:38:39.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:38:39.949 [DEBUG] [Thread-117553] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:38:39.949 [DEBUG] [Thread-117553] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:38:39.950 [DEBUG] [Thread-117553] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:38:39.990 [DEBUG] [Thread-117553] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:38:39.990 [DEBUG] [Thread-117553] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:38:39.994 [DEBUG] [Thread-117553] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:38:40.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:38:40.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:38:40.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:38:40.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:38:40.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:38:40.016 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:38:40.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:38:40.017 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:38:40.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:38:40.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.526492 -999.00  +26.30  27.24      7  -10.80 1 1 1 1 1   888    0 37.88 34.70 ----- 31.2 27.2 329.2 54.4 30.6 -32.6 30.1 -31.1 31.0 -30.1 31.7 -30.5
2025-11-03T14:38:40.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:38:40.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:38:40.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.526492
2025-11-03T14:38:40.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:38:40.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:38:40.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:38:40.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:38:40.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:38:40.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:38:22', tmtdew=48.2, humidity=3.09, cloud=0.0, wind=32.54, temperature=26.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:38:08.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:38:40.020 [DEBUG] [Thread-117553] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:38:40.102 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:38:40.114 [DEBUG] [Thread-117556] [transport.py] [_log()] starting thread (client mode): 0x1179b070
2025-11-03T14:38:40.115 [DEBUG] [Thread-117556] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:38:40.132 [DEBUG] [Thread-117556] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:38:40.132 [INFO] [Thread-117556] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:38:40.139 [DEBUG] [Thread-117556] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:38:40.140 [DEBUG] [Thread-117556] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:38:40.140 [DEBUG] [Thread-117556] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:38:40.140 [DEBUG] [Thread-117556] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:38:40.140 [DEBUG] [Thread-117556] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:38:40.140 [DEBUG] [Thread-117556] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:38:40.140 [DEBUG] [Thread-117556] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:38:40.140 [DEBUG] [Thread-117556] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:38:40.140 [DEBUG] [Thread-117556] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:38:40.140 [DEBUG] [Thread-117556] [transport.py] [_log()] client lang: <none>
2025-11-03T14:38:40.140 [DEBUG] [Thread-117556] [transport.py] [_log()] server lang: <none>
2025-11-03T14:38:40.140 [DEBUG] [Thread-117556] [transport.py] [_log()] kex follows: False
2025-11-03T14:38:40.140 [DEBUG] [Thread-117556] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:38:40.140 [DEBUG] [Thread-117556] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:38:40.140 [DEBUG] [Thread-117556] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:38:40.140 [DEBUG] [Thread-117556] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:38:40.140 [DEBUG] [Thread-117556] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:38:40.141 [DEBUG] [Thread-117556] [transport.py] [_log()] Compression: none
2025-11-03T14:38:40.141 [DEBUG] [Thread-117556] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:38:40.200 [DEBUG] [Thread-117556] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:38:40.201 [DEBUG] [Thread-117556] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:38:40.201 [DEBUG] [Thread-117556] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:38:40.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:38:40.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:38:40.256 [DEBUG] [Thread-117556] [transport.py] [_log()] userauth is OK
2025-11-03T14:38:40.256 [DEBUG] [Thread-117556] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:38:40.256 [DEBUG] [Thread-117556] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:38:40.256 [DEBUG] [Thread-117556] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:38:40.256 [DEBUG] [Thread-117556] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:38:40.275 [INFO] [Thread-117556] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:38:40.275 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:38:40.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:38:41.172 [DEBUG] [Thread-117556] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:38:41.172 [DEBUG] [Thread-117556] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:38:41.220 [DEBUG] [Thread-117556] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:38:41.220 [DEBUG] [Thread-117556] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:38:41.230 [DEBUG] [Thread-117556] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:38:41.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:38:41.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:38:41.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:38:41.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:38:41.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:38:41.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:38:41.267 [DEBUG] [Thread-117556] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:38:48.165 [DEBUG] [Thread-117558 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:38:59.075 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:38:59.077 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:39:03.223 [DEBUG] [Thread-117559 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:39:11.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:39:11.272 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:39:11.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:39:11.965 [DEBUG] [Thread-117560 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:39:12.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 38, 54), 47.77, 3.19, 0.0, 29.93, 26.27, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:39:12.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:38:54
2025-11-03T14:39:12.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:39:12.340 [DEBUG] [Thread-117561] [transport.py] [_log()] starting thread (client mode): 0xeda2ce0
2025-11-03T14:39:12.340 [DEBUG] [Thread-117561] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:39:12.361 [DEBUG] [Thread-117561] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:39:12.362 [INFO] [Thread-117561] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:39:12.365 [DEBUG] [Thread-117561] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:39:12.365 [DEBUG] [Thread-117561] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:39:12.365 [DEBUG] [Thread-117561] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:39:12.365 [DEBUG] [Thread-117561] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:39:12.365 [DEBUG] [Thread-117561] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:39:12.366 [DEBUG] [Thread-117561] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:39:12.366 [DEBUG] [Thread-117561] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:39:12.366 [DEBUG] [Thread-117561] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:39:12.366 [DEBUG] [Thread-117561] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:39:12.366 [DEBUG] [Thread-117561] [transport.py] [_log()] client lang: <none>
2025-11-03T14:39:12.366 [DEBUG] [Thread-117561] [transport.py] [_log()] server lang: <none>
2025-11-03T14:39:12.366 [DEBUG] [Thread-117561] [transport.py] [_log()] kex follows: False
2025-11-03T14:39:12.366 [DEBUG] [Thread-117561] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:39:12.366 [DEBUG] [Thread-117561] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:39:12.366 [DEBUG] [Thread-117561] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:39:12.366 [DEBUG] [Thread-117561] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:39:12.366 [DEBUG] [Thread-117561] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:39:12.367 [DEBUG] [Thread-117561] [transport.py] [_log()] Compression: none
2025-11-03T14:39:12.367 [DEBUG] [Thread-117561] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:39:12.395 [DEBUG] [Thread-117561] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:39:12.396 [DEBUG] [Thread-117561] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:39:12.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:39:12.397 [DEBUG] [Thread-117561] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:39:12.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:39:12.399 [DEBUG] [Thread-117561] [transport.py] [_log()] userauth is OK
2025-11-03T14:39:12.399 [DEBUG] [Thread-117561] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:39:12.399 [DEBUG] [Thread-117561] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:39:12.399 [DEBUG] [Thread-117561] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:39:12.399 [DEBUG] [Thread-117561] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:39:12.424 [INFO] [Thread-117561] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:39:12.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:39:13.078 [DEBUG] [Thread-117561] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:39:13.087 [DEBUG] [Thread-117561] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:39:13.088 [DEBUG] [Thread-117561] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:39:13.119 [DEBUG] [Thread-117561] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:39:13.119 [DEBUG] [Thread-117561] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:39:13.122 [DEBUG] [Thread-117561] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:39:13.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:39:13.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:39:13.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:39:13.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:39:13.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:39:13.148 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:39:13.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:39:13.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:39:13.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:39:13.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.526839 -999.00  +26.40  42.16      7  -11.10 1 1 2 1 1   888    0 37.70 35.20 ----- 39.7 42.2 312.4 48.0 30.7 -31.9 30.2 -31.3 31.1 -30.7 31.7 -31.6
2025-11-03T14:39:13.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:39:13.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:39:13.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.526839
2025-11-03T14:39:13.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:39:13.150 [DEBUG] [Thread-117561] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:39:13.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:39:13.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:39:13.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:39:13.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:39:13.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:38:54', tmtdew=47.77, humidity=3.19, cloud=0.0, wind=29.93, temperature=26.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:38:38.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:39:13.235 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:39:13.247 [DEBUG] [Thread-117564] [transport.py] [_log()] starting thread (client mode): 0x117bc820
2025-11-03T14:39:13.248 [DEBUG] [Thread-117564] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:39:13.268 [DEBUG] [Thread-117564] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:39:13.268 [INFO] [Thread-117564] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:39:13.276 [DEBUG] [Thread-117564] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:39:13.276 [DEBUG] [Thread-117564] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:39:13.276 [DEBUG] [Thread-117564] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:39:13.276 [DEBUG] [Thread-117564] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:39:13.276 [DEBUG] [Thread-117564] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:39:13.276 [DEBUG] [Thread-117564] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:39:13.276 [DEBUG] [Thread-117564] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:39:13.276 [DEBUG] [Thread-117564] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:39:13.276 [DEBUG] [Thread-117564] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:39:13.276 [DEBUG] [Thread-117564] [transport.py] [_log()] client lang: <none>
2025-11-03T14:39:13.276 [DEBUG] [Thread-117564] [transport.py] [_log()] server lang: <none>
2025-11-03T14:39:13.276 [DEBUG] [Thread-117564] [transport.py] [_log()] kex follows: False
2025-11-03T14:39:13.276 [DEBUG] [Thread-117564] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:39:13.276 [DEBUG] [Thread-117564] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:39:13.276 [DEBUG] [Thread-117564] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:39:13.276 [DEBUG] [Thread-117564] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:39:13.276 [DEBUG] [Thread-117564] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:39:13.285 [DEBUG] [Thread-117564] [transport.py] [_log()] Compression: none
2025-11-03T14:39:13.286 [DEBUG] [Thread-117564] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:39:13.337 [DEBUG] [Thread-117564] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:39:13.337 [DEBUG] [Thread-117564] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:39:13.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:39:13.338 [DEBUG] [Thread-117564] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:39:13.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:39:13.393 [DEBUG] [Thread-117564] [transport.py] [_log()] userauth is OK
2025-11-03T14:39:13.393 [DEBUG] [Thread-117564] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:39:13.393 [DEBUG] [Thread-117564] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:39:13.394 [DEBUG] [Thread-117564] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:39:13.394 [DEBUG] [Thread-117564] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:39:13.412 [INFO] [Thread-117564] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:39:13.413 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:39:13.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:39:14.284 [DEBUG] [Thread-117564] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:39:14.284 [DEBUG] [Thread-117564] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:39:14.332 [DEBUG] [Thread-117564] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:39:14.332 [DEBUG] [Thread-117564] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:39:14.341 [DEBUG] [Thread-117564] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:39:14.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:39:14.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:39:14.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:39:14.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:39:14.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:39:14.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:39:14.381 [DEBUG] [Thread-117564] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:39:18.253 [DEBUG] [Thread-117566 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:39:33.315 [DEBUG] [Thread-117567 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:39:44.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:39:44.403 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:39:44.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:39:45.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 39, 26), 48.17, 3.09, 0.0, 38.68, 26.44, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:39:45.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:39:26
2025-11-03T14:39:45.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:39:45.390 [DEBUG] [Thread-117568] [transport.py] [_log()] starting thread (client mode): 0xed2ec20
2025-11-03T14:39:45.390 [DEBUG] [Thread-117568] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:39:45.410 [DEBUG] [Thread-117568] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:39:45.410 [INFO] [Thread-117568] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:39:45.413 [DEBUG] [Thread-117568] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:39:45.413 [DEBUG] [Thread-117568] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:39:45.413 [DEBUG] [Thread-117568] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:39:45.413 [DEBUG] [Thread-117568] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:39:45.413 [DEBUG] [Thread-117568] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:39:45.413 [DEBUG] [Thread-117568] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:39:45.413 [DEBUG] [Thread-117568] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:39:45.413 [DEBUG] [Thread-117568] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:39:45.413 [DEBUG] [Thread-117568] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:39:45.413 [DEBUG] [Thread-117568] [transport.py] [_log()] client lang: <none>
2025-11-03T14:39:45.413 [DEBUG] [Thread-117568] [transport.py] [_log()] server lang: <none>
2025-11-03T14:39:45.413 [DEBUG] [Thread-117568] [transport.py] [_log()] kex follows: False
2025-11-03T14:39:45.413 [DEBUG] [Thread-117568] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:39:45.414 [DEBUG] [Thread-117568] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:39:45.414 [DEBUG] [Thread-117568] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:39:45.414 [DEBUG] [Thread-117568] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:39:45.414 [DEBUG] [Thread-117568] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:39:45.414 [DEBUG] [Thread-117568] [transport.py] [_log()] Compression: none
2025-11-03T14:39:45.414 [DEBUG] [Thread-117568] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:39:45.425 [DEBUG] [Thread-117568] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:39:45.425 [DEBUG] [Thread-117568] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:39:45.425 [DEBUG] [Thread-117568] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:39:45.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:39:45.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:39:45.426 [DEBUG] [Thread-117568] [transport.py] [_log()] userauth is OK
2025-11-03T14:39:45.426 [DEBUG] [Thread-117568] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:39:45.426 [DEBUG] [Thread-117568] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:39:45.426 [DEBUG] [Thread-117568] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:39:45.426 [DEBUG] [Thread-117568] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:39:45.453 [INFO] [Thread-117568] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:39:45.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:39:46.067 [DEBUG] [Thread-117568] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:39:46.067 [DEBUG] [Thread-117568] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:39:46.067 [DEBUG] [Thread-117568] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:39:46.108 [DEBUG] [Thread-117568] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:39:46.108 [DEBUG] [Thread-117568] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:39:46.110 [DEBUG] [Thread-117568] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:39:46.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:39:46.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:39:46.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:39:46.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:39:46.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:39:46.127 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:39:46.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:39:46.127 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:39:46.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:39:46.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.527186 -999.00  +25.90  35.21      7  -11.40 1 1 2 1 1   888    0 37.84 35.96 ----- 32.9 35.2 311.4 47.1 30.7 -32.7 30.1 -32.0 31.0 -32.3 31.7 -31.0
2025-11-03T14:39:46.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:39:46.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:39:46.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.527186
2025-11-03T14:39:46.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:39:46.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:39:46.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:39:46.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:39:46.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:39:46.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:39:26', tmtdew=48.17, humidity=3.09, cloud=0.0, wind=38.68, temperature=26.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:39:08.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:39:46.129 [DEBUG] [Thread-117568] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:39:46.200 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:39:46.213 [DEBUG] [Thread-117571] [transport.py] [_log()] starting thread (client mode): 0xed2d0f0
2025-11-03T14:39:46.213 [DEBUG] [Thread-117571] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:39:46.228 [DEBUG] [Thread-117571] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:39:46.228 [INFO] [Thread-117571] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:39:46.236 [DEBUG] [Thread-117571] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:39:46.236 [DEBUG] [Thread-117571] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:39:46.236 [DEBUG] [Thread-117571] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:39:46.236 [DEBUG] [Thread-117571] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:39:46.236 [DEBUG] [Thread-117571] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:39:46.236 [DEBUG] [Thread-117571] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:39:46.236 [DEBUG] [Thread-117571] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:39:46.236 [DEBUG] [Thread-117571] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:39:46.236 [DEBUG] [Thread-117571] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:39:46.236 [DEBUG] [Thread-117571] [transport.py] [_log()] client lang: <none>
2025-11-03T14:39:46.236 [DEBUG] [Thread-117571] [transport.py] [_log()] server lang: <none>
2025-11-03T14:39:46.236 [DEBUG] [Thread-117571] [transport.py] [_log()] kex follows: False
2025-11-03T14:39:46.236 [DEBUG] [Thread-117571] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:39:46.236 [DEBUG] [Thread-117571] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:39:46.236 [DEBUG] [Thread-117571] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:39:46.236 [DEBUG] [Thread-117571] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:39:46.236 [DEBUG] [Thread-117571] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:39:46.236 [DEBUG] [Thread-117571] [transport.py] [_log()] Compression: none
2025-11-03T14:39:46.236 [DEBUG] [Thread-117571] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:39:46.294 [DEBUG] [Thread-117571] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:39:46.294 [DEBUG] [Thread-117571] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:39:46.294 [DEBUG] [Thread-117571] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:39:46.294 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:39:46.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:39:46.351 [DEBUG] [Thread-117571] [transport.py] [_log()] userauth is OK
2025-11-03T14:39:46.351 [DEBUG] [Thread-117571] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:39:46.352 [DEBUG] [Thread-117571] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:39:46.352 [DEBUG] [Thread-117571] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:39:46.352 [DEBUG] [Thread-117571] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:39:46.365 [INFO] [Thread-117571] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:39:46.365 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:39:46.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:39:47.229 [DEBUG] [Thread-117571] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:39:47.229 [DEBUG] [Thread-117571] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:39:47.277 [DEBUG] [Thread-117571] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:39:47.277 [DEBUG] [Thread-117571] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:39:47.286 [DEBUG] [Thread-117571] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:39:47.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:39:47.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:39:47.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:39:47.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:39:47.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:39:47.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:39:47.319 [DEBUG] [Thread-117571] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:39:48.348 [DEBUG] [Thread-117573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:39:59.217 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:39:59.219 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:40:03.402 [DEBUG] [Thread-117574 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:40:12.027 [DEBUG] [Thread-117575 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:40:17.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:40:17.342 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:40:17.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:40:18.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 39, 58), 49.05, 3.01, 0.0, 30.29, 26.5, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:40:18.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:39:58
2025-11-03T14:40:18.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:40:18.385 [DEBUG] [Thread-117576] [transport.py] [_log()] starting thread (client mode): 0xedd4f10
2025-11-03T14:40:18.385 [DEBUG] [Thread-117576] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:40:18.406 [DEBUG] [Thread-117576] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:40:18.406 [INFO] [Thread-117576] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:40:18.409 [DEBUG] [Thread-117576] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:40:18.409 [DEBUG] [Thread-117576] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:40:18.409 [DEBUG] [Thread-117576] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:40:18.409 [DEBUG] [Thread-117576] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:40:18.409 [DEBUG] [Thread-117576] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:40:18.409 [DEBUG] [Thread-117576] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:40:18.409 [DEBUG] [Thread-117576] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:40:18.409 [DEBUG] [Thread-117576] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:40:18.409 [DEBUG] [Thread-117576] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:40:18.409 [DEBUG] [Thread-117576] [transport.py] [_log()] client lang: <none>
2025-11-03T14:40:18.409 [DEBUG] [Thread-117576] [transport.py] [_log()] server lang: <none>
2025-11-03T14:40:18.409 [DEBUG] [Thread-117576] [transport.py] [_log()] kex follows: False
2025-11-03T14:40:18.409 [DEBUG] [Thread-117576] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:40:18.410 [DEBUG] [Thread-117576] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:40:18.410 [DEBUG] [Thread-117576] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:40:18.410 [DEBUG] [Thread-117576] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:40:18.410 [DEBUG] [Thread-117576] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:40:18.410 [DEBUG] [Thread-117576] [transport.py] [_log()] Compression: none
2025-11-03T14:40:18.410 [DEBUG] [Thread-117576] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:40:18.426 [DEBUG] [Thread-117576] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:40:18.426 [DEBUG] [Thread-117576] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:40:18.426 [DEBUG] [Thread-117576] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:40:18.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:40:18.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:40:18.427 [DEBUG] [Thread-117576] [transport.py] [_log()] userauth is OK
2025-11-03T14:40:18.427 [DEBUG] [Thread-117576] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:40:18.427 [DEBUG] [Thread-117576] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:40:18.427 [DEBUG] [Thread-117576] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:40:18.427 [DEBUG] [Thread-117576] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:40:18.444 [DEBUG] [Thread-117578 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:40:18.444 [INFO] [Thread-117576] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:40:18.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:40:19.937 [DEBUG] [Thread-117576] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:40:19.937 [DEBUG] [Thread-117576] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:40:19.938 [DEBUG] [Thread-117576] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:40:19.977 [DEBUG] [Thread-117576] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:40:19.977 [DEBUG] [Thread-117576] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:40:19.981 [DEBUG] [Thread-117576] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:40:19.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:40:19.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:40:19.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:40:19.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:40:20.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:40:20.001 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:40:20.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:40:20.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:40:20.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:40:20.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.527186 -999.00  +25.90  35.21      7  -11.40 1 1 2 1 1   888    0 37.84 35.96 ----- 32.9 35.2 311.4 47.1 30.7 -32.7 30.1 -32.0 31.0 -32.3 31.7 -31.0
2025-11-03T14:40:20.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:40:20.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:40:20.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.527186
2025-11-03T14:40:20.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:40:20.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:40:20.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:40:20.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:40:20.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:40:20.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:39:58', tmtdew=49.05, humidity=3.01, cloud=0.0, wind=30.29, temperature=26.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:39:08.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:40:20.002 [DEBUG] [Thread-117576] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:40:20.076 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:40:20.088 [DEBUG] [Thread-117580] [transport.py] [_log()] starting thread (client mode): 0x117998d0
2025-11-03T14:40:20.088 [DEBUG] [Thread-117580] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:40:20.104 [DEBUG] [Thread-117580] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:40:20.104 [INFO] [Thread-117580] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:40:20.115 [DEBUG] [Thread-117580] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:40:20.115 [DEBUG] [Thread-117580] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:40:20.115 [DEBUG] [Thread-117580] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:40:20.115 [DEBUG] [Thread-117580] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:40:20.115 [DEBUG] [Thread-117580] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:40:20.115 [DEBUG] [Thread-117580] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:40:20.115 [DEBUG] [Thread-117580] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:40:20.115 [DEBUG] [Thread-117580] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:40:20.115 [DEBUG] [Thread-117580] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:40:20.115 [DEBUG] [Thread-117580] [transport.py] [_log()] client lang: <none>
2025-11-03T14:40:20.115 [DEBUG] [Thread-117580] [transport.py] [_log()] server lang: <none>
2025-11-03T14:40:20.115 [DEBUG] [Thread-117580] [transport.py] [_log()] kex follows: False
2025-11-03T14:40:20.115 [DEBUG] [Thread-117580] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:40:20.115 [DEBUG] [Thread-117580] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:40:20.115 [DEBUG] [Thread-117580] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:40:20.115 [DEBUG] [Thread-117580] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:40:20.115 [DEBUG] [Thread-117580] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:40:20.115 [DEBUG] [Thread-117580] [transport.py] [_log()] Compression: none
2025-11-03T14:40:20.115 [DEBUG] [Thread-117580] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:40:20.170 [DEBUG] [Thread-117580] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:40:20.170 [DEBUG] [Thread-117580] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:40:20.170 [DEBUG] [Thread-117580] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:40:20.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:40:20.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:40:20.227 [DEBUG] [Thread-117580] [transport.py] [_log()] userauth is OK
2025-11-03T14:40:20.227 [DEBUG] [Thread-117580] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:40:20.227 [DEBUG] [Thread-117580] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:40:20.227 [DEBUG] [Thread-117580] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:40:20.227 [DEBUG] [Thread-117580] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:40:20.241 [INFO] [Thread-117580] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:40:20.242 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:40:20.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:40:21.093 [DEBUG] [Thread-117580] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:40:21.093 [DEBUG] [Thread-117580] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:40:21.141 [DEBUG] [Thread-117580] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:40:21.142 [DEBUG] [Thread-117580] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:40:21.150 [DEBUG] [Thread-117580] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:40:21.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:40:21.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:40:21.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:40:21.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:40:21.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:40:21.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:40:21.182 [DEBUG] [Thread-117580] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:40:33.473 [DEBUG] [Thread-117582 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:40:48.525 [DEBUG] [Thread-117583 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:40:51.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:40:51.205 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:40:51.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:40:51.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 40, 31), 48.87, 3.06, 0.0, 32.06, 26.54, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:40:51.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:40:31
2025-11-03T14:40:52.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:40:52.244 [DEBUG] [Thread-117584] [transport.py] [_log()] starting thread (client mode): 0xedd6dd0
2025-11-03T14:40:52.244 [DEBUG] [Thread-117584] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:40:52.265 [DEBUG] [Thread-117584] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:40:52.265 [INFO] [Thread-117584] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:40:52.268 [DEBUG] [Thread-117584] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:40:52.268 [DEBUG] [Thread-117584] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:40:52.268 [DEBUG] [Thread-117584] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:40:52.268 [DEBUG] [Thread-117584] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:40:52.268 [DEBUG] [Thread-117584] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:40:52.268 [DEBUG] [Thread-117584] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:40:52.268 [DEBUG] [Thread-117584] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:40:52.268 [DEBUG] [Thread-117584] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:40:52.268 [DEBUG] [Thread-117584] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:40:52.268 [DEBUG] [Thread-117584] [transport.py] [_log()] client lang: <none>
2025-11-03T14:40:52.268 [DEBUG] [Thread-117584] [transport.py] [_log()] server lang: <none>
2025-11-03T14:40:52.268 [DEBUG] [Thread-117584] [transport.py] [_log()] kex follows: False
2025-11-03T14:40:52.268 [DEBUG] [Thread-117584] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:40:52.268 [DEBUG] [Thread-117584] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:40:52.268 [DEBUG] [Thread-117584] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:40:52.269 [DEBUG] [Thread-117584] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:40:52.269 [DEBUG] [Thread-117584] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:40:52.269 [DEBUG] [Thread-117584] [transport.py] [_log()] Compression: none
2025-11-03T14:40:52.269 [DEBUG] [Thread-117584] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:40:52.288 [DEBUG] [Thread-117584] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:40:52.289 [DEBUG] [Thread-117584] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:40:52.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:40:52.290 [DEBUG] [Thread-117584] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:40:52.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:40:52.292 [DEBUG] [Thread-117584] [transport.py] [_log()] userauth is OK
2025-11-03T14:40:52.292 [DEBUG] [Thread-117584] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:40:52.292 [DEBUG] [Thread-117584] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:40:52.293 [DEBUG] [Thread-117584] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:40:52.293 [DEBUG] [Thread-117584] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:40:52.310 [INFO] [Thread-117584] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:40:52.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:40:52.906 [DEBUG] [Thread-117584] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:40:52.906 [DEBUG] [Thread-117584] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:40:52.906 [DEBUG] [Thread-117584] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:40:52.947 [DEBUG] [Thread-117584] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:40:52.947 [DEBUG] [Thread-117584] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:40:52.950 [DEBUG] [Thread-117584] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:40:52.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:40:52.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:40:52.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:40:52.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:40:52.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:40:52.984 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:40:52.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:40:52.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:40:52.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:40:52.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.527881 -999.00  +25.70  32.63      7  -11.10 1 1 2 1 1   888    0 38.03 47.63 ----- 29.1 32.6 312.2 41.0 30.6 -32.0 30.1 -30.9 31.0 -30.4 31.7 -29.8
2025-11-03T14:40:52.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:40:52.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:40:52.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.527881
2025-11-03T14:40:52.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:40:52.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:40:52.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:40:52.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:40:52.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:40:52.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:40:31', tmtdew=48.87, humidity=3.06, cloud=0.0, wind=32.06, temperature=26.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:40:08.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:40:52.987 [DEBUG] [Thread-117584] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:40:53.075 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:40:53.088 [DEBUG] [Thread-117587] [transport.py] [_log()] starting thread (client mode): 0xedd49d0
2025-11-03T14:40:53.088 [DEBUG] [Thread-117587] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:40:53.103 [DEBUG] [Thread-117587] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:40:53.103 [INFO] [Thread-117587] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:40:53.110 [DEBUG] [Thread-117587] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:40:53.111 [DEBUG] [Thread-117587] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:40:53.111 [DEBUG] [Thread-117587] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:40:53.111 [DEBUG] [Thread-117587] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:40:53.111 [DEBUG] [Thread-117587] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:40:53.111 [DEBUG] [Thread-117587] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:40:53.111 [DEBUG] [Thread-117587] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:40:53.111 [DEBUG] [Thread-117587] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:40:53.111 [DEBUG] [Thread-117587] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:40:53.111 [DEBUG] [Thread-117587] [transport.py] [_log()] client lang: <none>
2025-11-03T14:40:53.111 [DEBUG] [Thread-117587] [transport.py] [_log()] server lang: <none>
2025-11-03T14:40:53.111 [DEBUG] [Thread-117587] [transport.py] [_log()] kex follows: False
2025-11-03T14:40:53.111 [DEBUG] [Thread-117587] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:40:53.111 [DEBUG] [Thread-117587] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:40:53.111 [DEBUG] [Thread-117587] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:40:53.111 [DEBUG] [Thread-117587] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:40:53.111 [DEBUG] [Thread-117587] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:40:53.111 [DEBUG] [Thread-117587] [transport.py] [_log()] Compression: none
2025-11-03T14:40:53.111 [DEBUG] [Thread-117587] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:40:53.168 [DEBUG] [Thread-117587] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:40:53.168 [DEBUG] [Thread-117587] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:40:53.169 [DEBUG] [Thread-117587] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:40:53.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:40:53.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:40:53.224 [DEBUG] [Thread-117587] [transport.py] [_log()] userauth is OK
2025-11-03T14:40:53.224 [DEBUG] [Thread-117587] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:40:53.224 [DEBUG] [Thread-117587] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:40:53.224 [DEBUG] [Thread-117587] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:40:53.225 [DEBUG] [Thread-117587] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:40:53.244 [INFO] [Thread-117587] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:40:53.244 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:40:53.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:40:54.112 [DEBUG] [Thread-117587] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:40:54.112 [DEBUG] [Thread-117587] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:40:54.160 [DEBUG] [Thread-117587] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:40:54.160 [DEBUG] [Thread-117587] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:40:54.169 [DEBUG] [Thread-117587] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:40:54.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:40:54.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:40:54.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:40:54.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:40:54.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:40:54.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:40:54.207 [DEBUG] [Thread-117587] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:40:59.367 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:40:59.368 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:41:03.564 [DEBUG] [Thread-117589 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:41:12.213 [DEBUG] [Thread-117590 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:41:18.604 [DEBUG] [Thread-117591 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:41:24.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:41:24.226 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:41:24.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:41:24.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 41, 3), 49.13, 3.01, 0.0, 30.24, 26.75, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:41:24.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:41:03
2025-11-03T14:41:25.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:41:25.211 [DEBUG] [Thread-117592] [transport.py] [_log()] starting thread (client mode): 0x117e8340
2025-11-03T14:41:25.211 [DEBUG] [Thread-117592] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:41:25.230 [DEBUG] [Thread-117592] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:41:25.230 [INFO] [Thread-117592] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:41:25.231 [DEBUG] [Thread-117592] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:41:25.231 [DEBUG] [Thread-117592] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:41:25.231 [DEBUG] [Thread-117592] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:41:25.231 [DEBUG] [Thread-117592] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:41:25.231 [DEBUG] [Thread-117592] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:41:25.231 [DEBUG] [Thread-117592] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:41:25.231 [DEBUG] [Thread-117592] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:41:25.231 [DEBUG] [Thread-117592] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:41:25.231 [DEBUG] [Thread-117592] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:41:25.231 [DEBUG] [Thread-117592] [transport.py] [_log()] client lang: <none>
2025-11-03T14:41:25.231 [DEBUG] [Thread-117592] [transport.py] [_log()] server lang: <none>
2025-11-03T14:41:25.231 [DEBUG] [Thread-117592] [transport.py] [_log()] kex follows: False
2025-11-03T14:41:25.231 [DEBUG] [Thread-117592] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:41:25.231 [DEBUG] [Thread-117592] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:41:25.231 [DEBUG] [Thread-117592] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:41:25.231 [DEBUG] [Thread-117592] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:41:25.231 [DEBUG] [Thread-117592] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:41:25.231 [DEBUG] [Thread-117592] [transport.py] [_log()] Compression: none
2025-11-03T14:41:25.231 [DEBUG] [Thread-117592] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:41:25.248 [DEBUG] [Thread-117592] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:41:25.249 [DEBUG] [Thread-117592] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:41:25.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:41:25.249 [DEBUG] [Thread-117592] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:41:25.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:41:25.252 [DEBUG] [Thread-117592] [transport.py] [_log()] userauth is OK
2025-11-03T14:41:25.252 [DEBUG] [Thread-117592] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:41:25.252 [DEBUG] [Thread-117592] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:41:25.252 [DEBUG] [Thread-117592] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:41:25.252 [DEBUG] [Thread-117592] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:41:25.285 [INFO] [Thread-117592] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:41:25.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:41:25.939 [DEBUG] [Thread-117592] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:41:25.948 [DEBUG] [Thread-117592] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:41:25.949 [DEBUG] [Thread-117592] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:41:25.980 [DEBUG] [Thread-117592] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:41:25.980 [DEBUG] [Thread-117592] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:41:25.983 [DEBUG] [Thread-117592] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:41:25.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:41:25.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:41:25.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:41:25.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:41:26.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:41:26.007 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:41:26.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:41:26.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:41:26.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:41:26.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.528228 -999.00  +26.70  30.25      8  -10.20 1 1 2 1 1   888    0 38.41 47.26 ----- 38.7 30.2 314.0 43.9 30.6 -31.5 30.2 -30.1 30.9 -32.0 31.8 -29.6
2025-11-03T14:41:26.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:41:26.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:41:26.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.528228
2025-11-03T14:41:26.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:41:26.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:41:26.010 [DEBUG] [Thread-117592] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:41:26.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:41:26.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:41:26.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:41:26.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:41:03', tmtdew=49.13, humidity=3.01, cloud=0.0, wind=30.24, temperature=26.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:40:38.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:41:26.095 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:41:26.105 [DEBUG] [Thread-117595] [transport.py] [_log()] starting thread (client mode): 0xed4e9e0
2025-11-03T14:41:26.105 [DEBUG] [Thread-117595] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:41:26.121 [DEBUG] [Thread-117595] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:41:26.121 [INFO] [Thread-117595] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:41:26.129 [DEBUG] [Thread-117595] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:41:26.129 [DEBUG] [Thread-117595] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:41:26.129 [DEBUG] [Thread-117595] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:41:26.129 [DEBUG] [Thread-117595] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:41:26.129 [DEBUG] [Thread-117595] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:41:26.129 [DEBUG] [Thread-117595] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:41:26.129 [DEBUG] [Thread-117595] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:41:26.129 [DEBUG] [Thread-117595] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:41:26.129 [DEBUG] [Thread-117595] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:41:26.129 [DEBUG] [Thread-117595] [transport.py] [_log()] client lang: <none>
2025-11-03T14:41:26.129 [DEBUG] [Thread-117595] [transport.py] [_log()] server lang: <none>
2025-11-03T14:41:26.129 [DEBUG] [Thread-117595] [transport.py] [_log()] kex follows: False
2025-11-03T14:41:26.129 [DEBUG] [Thread-117595] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:41:26.129 [DEBUG] [Thread-117595] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:41:26.129 [DEBUG] [Thread-117595] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:41:26.129 [DEBUG] [Thread-117595] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:41:26.129 [DEBUG] [Thread-117595] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:41:26.129 [DEBUG] [Thread-117595] [transport.py] [_log()] Compression: none
2025-11-03T14:41:26.129 [DEBUG] [Thread-117595] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:41:26.187 [DEBUG] [Thread-117595] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:41:26.187 [DEBUG] [Thread-117595] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:41:26.188 [DEBUG] [Thread-117595] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:41:26.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:41:26.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:41:26.243 [DEBUG] [Thread-117595] [transport.py] [_log()] userauth is OK
2025-11-03T14:41:26.244 [DEBUG] [Thread-117595] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:41:26.244 [DEBUG] [Thread-117595] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:41:26.244 [DEBUG] [Thread-117595] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:41:26.244 [DEBUG] [Thread-117595] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:41:26.263 [INFO] [Thread-117595] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:41:26.263 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:41:26.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:41:27.131 [DEBUG] [Thread-117595] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:41:27.131 [DEBUG] [Thread-117595] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:41:27.179 [DEBUG] [Thread-117595] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:41:27.179 [DEBUG] [Thread-117595] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:41:27.188 [DEBUG] [Thread-117595] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:41:27.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:41:27.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:41:27.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:41:27.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:41:27.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:41:27.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:41:27.225 [DEBUG] [Thread-117595] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:41:33.653 [DEBUG] [Thread-117597 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:41:48.702 [DEBUG] [Thread-117598 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:41:57.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:41:57.248 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:41:57.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:41:57.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 41, 35), 48.65, 2.99, 0.0, 37.6, 27.19, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:41:57.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:41:35
2025-11-03T14:41:58.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:41:58.184 [DEBUG] [Thread-117599] [transport.py] [_log()] starting thread (client mode): 0x117bc850
2025-11-03T14:41:58.184 [DEBUG] [Thread-117599] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:41:58.205 [DEBUG] [Thread-117599] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:41:58.205 [INFO] [Thread-117599] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:41:58.208 [DEBUG] [Thread-117599] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:41:58.208 [DEBUG] [Thread-117599] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:41:58.208 [DEBUG] [Thread-117599] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:41:58.208 [DEBUG] [Thread-117599] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:41:58.208 [DEBUG] [Thread-117599] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:41:58.208 [DEBUG] [Thread-117599] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:41:58.208 [DEBUG] [Thread-117599] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:41:58.208 [DEBUG] [Thread-117599] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:41:58.208 [DEBUG] [Thread-117599] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:41:58.209 [DEBUG] [Thread-117599] [transport.py] [_log()] client lang: <none>
2025-11-03T14:41:58.209 [DEBUG] [Thread-117599] [transport.py] [_log()] server lang: <none>
2025-11-03T14:41:58.209 [DEBUG] [Thread-117599] [transport.py] [_log()] kex follows: False
2025-11-03T14:41:58.209 [DEBUG] [Thread-117599] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:41:58.209 [DEBUG] [Thread-117599] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:41:58.209 [DEBUG] [Thread-117599] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:41:58.209 [DEBUG] [Thread-117599] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:41:58.209 [DEBUG] [Thread-117599] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:41:58.209 [DEBUG] [Thread-117599] [transport.py] [_log()] Compression: none
2025-11-03T14:41:58.209 [DEBUG] [Thread-117599] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:41:58.229 [DEBUG] [Thread-117599] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:41:58.229 [DEBUG] [Thread-117599] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:41:58.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:41:58.230 [DEBUG] [Thread-117599] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:41:58.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:41:58.233 [DEBUG] [Thread-117599] [transport.py] [_log()] userauth is OK
2025-11-03T14:41:58.233 [DEBUG] [Thread-117599] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:41:58.233 [DEBUG] [Thread-117599] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:41:58.233 [DEBUG] [Thread-117599] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:41:58.233 [DEBUG] [Thread-117599] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:41:58.256 [INFO] [Thread-117599] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:41:58.257 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:41:58.902 [DEBUG] [Thread-117599] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:41:58.903 [DEBUG] [Thread-117599] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:41:58.903 [DEBUG] [Thread-117599] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:41:58.944 [DEBUG] [Thread-117599] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:41:58.944 [DEBUG] [Thread-117599] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:41:58.948 [DEBUG] [Thread-117599] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:41:58.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:41:58.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:41:58.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:41:58.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:41:58.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:41:58.971 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:41:58.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:41:58.972 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:41:58.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:41:58.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.528575 -999.00  +27.00  31.72      7  -10.30 1 1 2 1 1   888    0 37.47 46.63 ----- 36.1 31.7 313.2 40.2 30.8 -31.7 30.3 -30.6 30.9 -30.7 31.9 -30.1
2025-11-03T14:41:58.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:41:58.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:41:58.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.528575
2025-11-03T14:41:58.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:41:58.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:41:58.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:41:58.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:41:58.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:41:58.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:41:35', tmtdew=48.65, humidity=2.99, cloud=0.0, wind=37.6, temperature=27.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:41:08.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:41:58.975 [DEBUG] [Thread-117599] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:41:59.059 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:41:59.071 [DEBUG] [Thread-117602] [transport.py] [_log()] starting thread (client mode): 0xed215d0
2025-11-03T14:41:59.071 [DEBUG] [Thread-117602] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:41:59.087 [DEBUG] [Thread-117602] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:41:59.087 [INFO] [Thread-117602] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:41:59.094 [DEBUG] [Thread-117602] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:41:59.095 [DEBUG] [Thread-117602] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:41:59.095 [DEBUG] [Thread-117602] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:41:59.095 [DEBUG] [Thread-117602] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:41:59.095 [DEBUG] [Thread-117602] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:41:59.095 [DEBUG] [Thread-117602] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:41:59.095 [DEBUG] [Thread-117602] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:41:59.095 [DEBUG] [Thread-117602] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:41:59.095 [DEBUG] [Thread-117602] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:41:59.095 [DEBUG] [Thread-117602] [transport.py] [_log()] client lang: <none>
2025-11-03T14:41:59.095 [DEBUG] [Thread-117602] [transport.py] [_log()] server lang: <none>
2025-11-03T14:41:59.095 [DEBUG] [Thread-117602] [transport.py] [_log()] kex follows: False
2025-11-03T14:41:59.095 [DEBUG] [Thread-117602] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:41:59.095 [DEBUG] [Thread-117602] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:41:59.095 [DEBUG] [Thread-117602] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:41:59.095 [DEBUG] [Thread-117602] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:41:59.095 [DEBUG] [Thread-117602] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:41:59.096 [DEBUG] [Thread-117602] [transport.py] [_log()] Compression: none
2025-11-03T14:41:59.096 [DEBUG] [Thread-117602] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:41:59.155 [DEBUG] [Thread-117602] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:41:59.156 [DEBUG] [Thread-117602] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:41:59.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:41:59.157 [DEBUG] [Thread-117602] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:41:59.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:41:59.212 [DEBUG] [Thread-117602] [transport.py] [_log()] userauth is OK
2025-11-03T14:41:59.212 [DEBUG] [Thread-117602] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:41:59.213 [DEBUG] [Thread-117602] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:41:59.213 [DEBUG] [Thread-117602] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:41:59.213 [DEBUG] [Thread-117602] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:41:59.232 [INFO] [Thread-117602] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:41:59.232 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:41:59.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:41:59.517 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:41:59.519 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:42:00.097 [DEBUG] [Thread-117602] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:42:00.097 [DEBUG] [Thread-117602] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:42:00.144 [DEBUG] [Thread-117602] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:42:00.145 [DEBUG] [Thread-117602] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:42:00.153 [DEBUG] [Thread-117602] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:42:00.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:42:00.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:42:00.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:42:00.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:42:00.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:42:00.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:42:00.189 [DEBUG] [Thread-117602] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:42:03.743 [DEBUG] [Thread-117604 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:42:12.266 [DEBUG] [Thread-117605 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:42:18.791 [DEBUG] [Thread-117606 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:42:30.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:42:30.212 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:42:30.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:42:30.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 42, 8), 48.56, 3.01, 0.0, 34.81, 27.09, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:42:30.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:42:08
2025-11-03T14:42:31.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:42:31.204 [DEBUG] [Thread-117607] [transport.py] [_log()] starting thread (client mode): 0xed2d0c0
2025-11-03T14:42:31.205 [DEBUG] [Thread-117607] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:42:31.216 [DEBUG] [Thread-117607] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:42:31.216 [INFO] [Thread-117607] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:42:31.217 [DEBUG] [Thread-117607] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:42:31.217 [DEBUG] [Thread-117607] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:42:31.217 [DEBUG] [Thread-117607] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:42:31.217 [DEBUG] [Thread-117607] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:42:31.217 [DEBUG] [Thread-117607] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:42:31.217 [DEBUG] [Thread-117607] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:42:31.217 [DEBUG] [Thread-117607] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:42:31.217 [DEBUG] [Thread-117607] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:42:31.217 [DEBUG] [Thread-117607] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:42:31.217 [DEBUG] [Thread-117607] [transport.py] [_log()] client lang: <none>
2025-11-03T14:42:31.217 [DEBUG] [Thread-117607] [transport.py] [_log()] server lang: <none>
2025-11-03T14:42:31.218 [DEBUG] [Thread-117607] [transport.py] [_log()] kex follows: False
2025-11-03T14:42:31.218 [DEBUG] [Thread-117607] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:42:31.218 [DEBUG] [Thread-117607] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:42:31.218 [DEBUG] [Thread-117607] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:42:31.218 [DEBUG] [Thread-117607] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:42:31.218 [DEBUG] [Thread-117607] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:42:31.218 [DEBUG] [Thread-117607] [transport.py] [_log()] Compression: none
2025-11-03T14:42:31.218 [DEBUG] [Thread-117607] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:42:31.225 [DEBUG] [Thread-117607] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:42:31.225 [DEBUG] [Thread-117607] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:42:31.226 [DEBUG] [Thread-117607] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:42:31.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:42:31.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:42:31.227 [DEBUG] [Thread-117607] [transport.py] [_log()] userauth is OK
2025-11-03T14:42:31.227 [DEBUG] [Thread-117607] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:42:31.227 [DEBUG] [Thread-117607] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:42:31.227 [DEBUG] [Thread-117607] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:42:31.227 [DEBUG] [Thread-117607] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:42:31.244 [INFO] [Thread-117607] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:42:31.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:42:31.901 [DEBUG] [Thread-117607] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:42:31.901 [DEBUG] [Thread-117607] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:42:31.901 [DEBUG] [Thread-117607] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:42:31.942 [DEBUG] [Thread-117607] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:42:31.942 [DEBUG] [Thread-117607] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:42:31.944 [DEBUG] [Thread-117607] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:42:31.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:42:31.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:42:31.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:42:31.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:42:31.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:42:31.961 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:42:31.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:42:31.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:42:31.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:42:31.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.528923 -999.00  +27.00  33.71      7  -10.60 1 1 2 1 1   888    0 37.26 52.66 ----- 32.0 33.7 304.2 39.9 30.8 -32.3 30.2 -31.0 31.0 -31.0 31.9 -30.9
2025-11-03T14:42:31.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:42:31.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:42:31.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.528923
2025-11-03T14:42:31.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:42:31.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:42:31.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:42:31.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:42:31.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:42:31.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:42:08', tmtdew=48.56, humidity=3.01, cloud=0.0, wind=34.81, temperature=27.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:41:38.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:42:31.963 [DEBUG] [Thread-117607] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:42:32.034 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:42:32.043 [DEBUG] [Thread-117610] [transport.py] [_log()] starting thread (client mode): 0xed2c7f0
2025-11-03T14:42:32.044 [DEBUG] [Thread-117610] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:42:32.060 [DEBUG] [Thread-117610] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:42:32.060 [INFO] [Thread-117610] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:42:32.067 [DEBUG] [Thread-117610] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:42:32.067 [DEBUG] [Thread-117610] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:42:32.067 [DEBUG] [Thread-117610] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:42:32.067 [DEBUG] [Thread-117610] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:42:32.067 [DEBUG] [Thread-117610] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:42:32.067 [DEBUG] [Thread-117610] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:42:32.067 [DEBUG] [Thread-117610] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:42:32.067 [DEBUG] [Thread-117610] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:42:32.067 [DEBUG] [Thread-117610] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:42:32.067 [DEBUG] [Thread-117610] [transport.py] [_log()] client lang: <none>
2025-11-03T14:42:32.067 [DEBUG] [Thread-117610] [transport.py] [_log()] server lang: <none>
2025-11-03T14:42:32.067 [DEBUG] [Thread-117610] [transport.py] [_log()] kex follows: False
2025-11-03T14:42:32.067 [DEBUG] [Thread-117610] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:42:32.068 [DEBUG] [Thread-117610] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:42:32.068 [DEBUG] [Thread-117610] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:42:32.068 [DEBUG] [Thread-117610] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:42:32.068 [DEBUG] [Thread-117610] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:42:32.068 [DEBUG] [Thread-117610] [transport.py] [_log()] Compression: none
2025-11-03T14:42:32.068 [DEBUG] [Thread-117610] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:42:32.130 [DEBUG] [Thread-117610] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:42:32.130 [DEBUG] [Thread-117610] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:42:32.130 [DEBUG] [Thread-117610] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:42:32.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:42:32.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:42:32.187 [DEBUG] [Thread-117610] [transport.py] [_log()] userauth is OK
2025-11-03T14:42:32.187 [DEBUG] [Thread-117610] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:42:32.187 [DEBUG] [Thread-117610] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:42:32.187 [DEBUG] [Thread-117610] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:42:32.187 [DEBUG] [Thread-117610] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:42:32.201 [INFO] [Thread-117610] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:42:32.201 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:42:32.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:42:33.123 [DEBUG] [Thread-117610] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:42:33.123 [DEBUG] [Thread-117610] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:42:33.171 [DEBUG] [Thread-117610] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:42:33.171 [DEBUG] [Thread-117610] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:42:33.181 [DEBUG] [Thread-117610] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:42:33.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:42:33.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:42:33.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:42:33.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:42:33.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:42:33.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:42:33.216 [DEBUG] [Thread-117610] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:42:33.819 [DEBUG] [Thread-117612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:42:48.863 [DEBUG] [Thread-117613 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:42:59.661 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:42:59.661 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:43:03.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:43:03.238 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:43:03.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:43:03.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 42, 40), 49.0, 3.04, 0.0, 36.29, 27.0, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:43:03.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:42:40
2025-11-03T14:43:03.903 [DEBUG] [Thread-117614 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:43:04.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:43:04.165 [DEBUG] [Thread-117615] [transport.py] [_log()] starting thread (client mode): 0xedd7700
2025-11-03T14:43:04.165 [DEBUG] [Thread-117615] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:43:04.185 [DEBUG] [Thread-117615] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:43:04.185 [INFO] [Thread-117615] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:43:04.186 [DEBUG] [Thread-117615] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:43:04.186 [DEBUG] [Thread-117615] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:43:04.186 [DEBUG] [Thread-117615] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:43:04.186 [DEBUG] [Thread-117615] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:43:04.186 [DEBUG] [Thread-117615] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:43:04.186 [DEBUG] [Thread-117615] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:43:04.186 [DEBUG] [Thread-117615] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:43:04.186 [DEBUG] [Thread-117615] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:43:04.186 [DEBUG] [Thread-117615] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:43:04.186 [DEBUG] [Thread-117615] [transport.py] [_log()] client lang: <none>
2025-11-03T14:43:04.186 [DEBUG] [Thread-117615] [transport.py] [_log()] server lang: <none>
2025-11-03T14:43:04.186 [DEBUG] [Thread-117615] [transport.py] [_log()] kex follows: False
2025-11-03T14:43:04.186 [DEBUG] [Thread-117615] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:43:04.186 [DEBUG] [Thread-117615] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:43:04.186 [DEBUG] [Thread-117615] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:43:04.187 [DEBUG] [Thread-117615] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:43:04.187 [DEBUG] [Thread-117615] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:43:04.187 [DEBUG] [Thread-117615] [transport.py] [_log()] Compression: none
2025-11-03T14:43:04.187 [DEBUG] [Thread-117615] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:43:04.201 [DEBUG] [Thread-117615] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:43:04.202 [DEBUG] [Thread-117615] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:43:04.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:43:04.203 [DEBUG] [Thread-117615] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:43:04.204 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:43:04.205 [DEBUG] [Thread-117615] [transport.py] [_log()] userauth is OK
2025-11-03T14:43:04.205 [DEBUG] [Thread-117615] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:43:04.205 [DEBUG] [Thread-117615] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:43:04.205 [DEBUG] [Thread-117615] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:43:04.206 [DEBUG] [Thread-117615] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:43:04.229 [INFO] [Thread-117615] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:43:04.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:43:04.895 [DEBUG] [Thread-117615] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:43:04.895 [DEBUG] [Thread-117615] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:43:04.895 [DEBUG] [Thread-117615] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:43:04.936 [DEBUG] [Thread-117615] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:43:04.936 [DEBUG] [Thread-117615] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:43:04.940 [DEBUG] [Thread-117615] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:43:04.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:43:04.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:43:04.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:43:04.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:43:04.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:43:04.958 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:43:04.958 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:43:04.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:43:04.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:43:04.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.529270 -999.00  +27.30  30.84      7  -10.50 1 1 2 1 1   888    0 37.67 56.79 ----- 38.1 30.8 297.6 40.2 30.9 -31.1 30.4 -31.1 31.1 -32.5 32.0 -31.0
2025-11-03T14:43:04.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:43:04.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:43:04.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.529270
2025-11-03T14:43:04.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:43:04.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:43:04.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:43:04.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:43:04.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:43:04.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:42:40', tmtdew=49.0, humidity=3.04, cloud=0.0, wind=36.29, temperature=27.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:42:08.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:43:04.960 [DEBUG] [Thread-117615] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:43:05.032 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:43:05.044 [DEBUG] [Thread-117618] [transport.py] [_log()] starting thread (client mode): 0xed201f0
2025-11-03T14:43:05.044 [DEBUG] [Thread-117618] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:43:05.058 [DEBUG] [Thread-117618] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:43:05.058 [INFO] [Thread-117618] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:43:05.065 [DEBUG] [Thread-117618] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:43:05.065 [DEBUG] [Thread-117618] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:43:05.065 [DEBUG] [Thread-117618] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:43:05.065 [DEBUG] [Thread-117618] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:43:05.065 [DEBUG] [Thread-117618] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:43:05.065 [DEBUG] [Thread-117618] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:43:05.065 [DEBUG] [Thread-117618] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:43:05.065 [DEBUG] [Thread-117618] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:43:05.065 [DEBUG] [Thread-117618] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:43:05.066 [DEBUG] [Thread-117618] [transport.py] [_log()] client lang: <none>
2025-11-03T14:43:05.066 [DEBUG] [Thread-117618] [transport.py] [_log()] server lang: <none>
2025-11-03T14:43:05.066 [DEBUG] [Thread-117618] [transport.py] [_log()] kex follows: False
2025-11-03T14:43:05.066 [DEBUG] [Thread-117618] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:43:05.066 [DEBUG] [Thread-117618] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:43:05.066 [DEBUG] [Thread-117618] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:43:05.066 [DEBUG] [Thread-117618] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:43:05.066 [DEBUG] [Thread-117618] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:43:05.066 [DEBUG] [Thread-117618] [transport.py] [_log()] Compression: none
2025-11-03T14:43:05.066 [DEBUG] [Thread-117618] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:43:05.125 [DEBUG] [Thread-117618] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:43:05.125 [DEBUG] [Thread-117618] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:43:05.125 [DEBUG] [Thread-117618] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:43:05.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:43:05.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:43:05.182 [DEBUG] [Thread-117618] [transport.py] [_log()] userauth is OK
2025-11-03T14:43:05.182 [DEBUG] [Thread-117618] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:43:05.182 [DEBUG] [Thread-117618] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:43:05.182 [DEBUG] [Thread-117618] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:43:05.182 [DEBUG] [Thread-117618] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:43:05.196 [INFO] [Thread-117618] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:43:05.196 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:43:05.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:43:06.044 [DEBUG] [Thread-117618] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:43:06.045 [DEBUG] [Thread-117618] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:43:06.093 [DEBUG] [Thread-117618] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:43:06.093 [DEBUG] [Thread-117618] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:43:06.102 [DEBUG] [Thread-117618] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:43:06.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:43:06.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:43:06.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:43:06.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:43:06.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:43:06.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:43:06.140 [DEBUG] [Thread-117618] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:43:12.357 [DEBUG] [Thread-117620 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:43:18.940 [DEBUG] [Thread-117621 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:43:33.984 [DEBUG] [Thread-117622 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:43:36.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:43:36.161 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:43:36.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:43:36.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 43, 12), 49.31, 2.97, 0.0, 37.16, 27.15, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:43:36.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:43:12
2025-11-03T14:43:37.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:43:37.289 [DEBUG] [Thread-117623] [transport.py] [_log()] starting thread (client mode): 0xedd6da0
2025-11-03T14:43:37.290 [DEBUG] [Thread-117623] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:43:37.303 [DEBUG] [Thread-117623] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:43:37.303 [INFO] [Thread-117623] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:43:37.313 [DEBUG] [Thread-117623] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:43:37.313 [DEBUG] [Thread-117623] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:43:37.313 [DEBUG] [Thread-117623] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:43:37.313 [DEBUG] [Thread-117623] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:43:37.313 [DEBUG] [Thread-117623] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:43:37.313 [DEBUG] [Thread-117623] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:43:37.313 [DEBUG] [Thread-117623] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:43:37.313 [DEBUG] [Thread-117623] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:43:37.313 [DEBUG] [Thread-117623] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:43:37.313 [DEBUG] [Thread-117623] [transport.py] [_log()] client lang: <none>
2025-11-03T14:43:37.313 [DEBUG] [Thread-117623] [transport.py] [_log()] server lang: <none>
2025-11-03T14:43:37.313 [DEBUG] [Thread-117623] [transport.py] [_log()] kex follows: False
2025-11-03T14:43:37.313 [DEBUG] [Thread-117623] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:43:37.313 [DEBUG] [Thread-117623] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:43:37.313 [DEBUG] [Thread-117623] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:43:37.313 [DEBUG] [Thread-117623] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:43:37.313 [DEBUG] [Thread-117623] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:43:37.313 [DEBUG] [Thread-117623] [transport.py] [_log()] Compression: none
2025-11-03T14:43:37.313 [DEBUG] [Thread-117623] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:43:37.322 [DEBUG] [Thread-117623] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:43:37.323 [DEBUG] [Thread-117623] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:43:37.323 [DEBUG] [Thread-117623] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:43:37.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:43:37.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:43:37.324 [DEBUG] [Thread-117623] [transport.py] [_log()] userauth is OK
2025-11-03T14:43:37.324 [DEBUG] [Thread-117623] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:43:37.324 [DEBUG] [Thread-117623] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:43:37.324 [DEBUG] [Thread-117623] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:43:37.324 [DEBUG] [Thread-117623] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:43:37.335 [INFO] [Thread-117623] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:43:37.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:43:37.970 [DEBUG] [Thread-117623] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:43:37.970 [DEBUG] [Thread-117623] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:43:37.970 [DEBUG] [Thread-117623] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:43:38.011 [DEBUG] [Thread-117623] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:43:38.011 [DEBUG] [Thread-117623] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:43:38.013 [DEBUG] [Thread-117623] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:43:38.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:43:38.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:43:38.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:43:38.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:43:38.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:43:38.025 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:43:38.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:43:38.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:43:38.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:43:38.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.529617 -999.00  +27.00  37.44      7  -11.20 1 1 2 1 1   888    0 38.15 58.46 ----- 32.2 37.4 295.6 45.0 30.9 -32.0 30.3 -31.8 31.0 -31.2 31.8 -31.5
2025-11-03T14:43:38.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:43:38.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:43:38.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.529617
2025-11-03T14:43:38.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:43:38.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:43:38.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:43:38.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:43:38.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:43:38.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:43:12', tmtdew=49.31, humidity=2.97, cloud=0.0, wind=37.16, temperature=27.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:42:38.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:43:38.027 [DEBUG] [Thread-117623] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:43:38.101 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:43:38.113 [DEBUG] [Thread-117626] [transport.py] [_log()] starting thread (client mode): 0x117bf8b0
2025-11-03T14:43:38.113 [DEBUG] [Thread-117626] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:43:38.127 [DEBUG] [Thread-117626] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:43:38.127 [INFO] [Thread-117626] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:43:38.134 [DEBUG] [Thread-117626] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:43:38.134 [DEBUG] [Thread-117626] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:43:38.135 [DEBUG] [Thread-117626] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:43:38.135 [DEBUG] [Thread-117626] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:43:38.135 [DEBUG] [Thread-117626] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:43:38.135 [DEBUG] [Thread-117626] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:43:38.135 [DEBUG] [Thread-117626] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:43:38.135 [DEBUG] [Thread-117626] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:43:38.135 [DEBUG] [Thread-117626] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:43:38.135 [DEBUG] [Thread-117626] [transport.py] [_log()] client lang: <none>
2025-11-03T14:43:38.135 [DEBUG] [Thread-117626] [transport.py] [_log()] server lang: <none>
2025-11-03T14:43:38.135 [DEBUG] [Thread-117626] [transport.py] [_log()] kex follows: False
2025-11-03T14:43:38.135 [DEBUG] [Thread-117626] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:43:38.135 [DEBUG] [Thread-117626] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:43:38.135 [DEBUG] [Thread-117626] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:43:38.135 [DEBUG] [Thread-117626] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:43:38.135 [DEBUG] [Thread-117626] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:43:38.135 [DEBUG] [Thread-117626] [transport.py] [_log()] Compression: none
2025-11-03T14:43:38.135 [DEBUG] [Thread-117626] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:43:38.192 [DEBUG] [Thread-117626] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:43:38.193 [DEBUG] [Thread-117626] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:43:38.193 [DEBUG] [Thread-117626] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:43:38.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:43:38.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:43:38.250 [DEBUG] [Thread-117626] [transport.py] [_log()] userauth is OK
2025-11-03T14:43:38.250 [DEBUG] [Thread-117626] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:43:38.250 [DEBUG] [Thread-117626] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:43:38.250 [DEBUG] [Thread-117626] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:43:38.250 [DEBUG] [Thread-117626] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:43:38.264 [INFO] [Thread-117626] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:43:38.264 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:43:38.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:43:39.128 [DEBUG] [Thread-117626] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:43:39.128 [DEBUG] [Thread-117626] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:43:39.176 [DEBUG] [Thread-117626] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:43:39.176 [DEBUG] [Thread-117626] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:43:39.184 [DEBUG] [Thread-117626] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:43:39.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:43:39.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:43:39.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:43:39.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:43:39.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:43:39.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:43:39.216 [DEBUG] [Thread-117626] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:43:49.022 [DEBUG] [Thread-117628 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:43:59.802 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:43:59.804 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:44:04.078 [DEBUG] [Thread-117629 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:44:09.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:44:09.239 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:44:09.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:44:09.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 43, 45), 49.03, 2.96, 0.0, 28.6, 27.09, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:44:09.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:43:45
2025-11-03T14:44:10.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:44:10.199 [DEBUG] [Thread-117630] [transport.py] [_log()] starting thread (client mode): 0xed21330
2025-11-03T14:44:10.199 [DEBUG] [Thread-117630] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:44:10.219 [DEBUG] [Thread-117630] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:44:10.219 [INFO] [Thread-117630] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:44:10.223 [DEBUG] [Thread-117630] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:44:10.223 [DEBUG] [Thread-117630] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:44:10.223 [DEBUG] [Thread-117630] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:44:10.223 [DEBUG] [Thread-117630] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:44:10.223 [DEBUG] [Thread-117630] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:44:10.223 [DEBUG] [Thread-117630] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:44:10.223 [DEBUG] [Thread-117630] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:44:10.223 [DEBUG] [Thread-117630] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:44:10.223 [DEBUG] [Thread-117630] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:44:10.223 [DEBUG] [Thread-117630] [transport.py] [_log()] client lang: <none>
2025-11-03T14:44:10.223 [DEBUG] [Thread-117630] [transport.py] [_log()] server lang: <none>
2025-11-03T14:44:10.223 [DEBUG] [Thread-117630] [transport.py] [_log()] kex follows: False
2025-11-03T14:44:10.223 [DEBUG] [Thread-117630] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:44:10.223 [DEBUG] [Thread-117630] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:44:10.223 [DEBUG] [Thread-117630] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:44:10.223 [DEBUG] [Thread-117630] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:44:10.224 [DEBUG] [Thread-117630] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:44:10.224 [DEBUG] [Thread-117630] [transport.py] [_log()] Compression: none
2025-11-03T14:44:10.224 [DEBUG] [Thread-117630] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:44:10.237 [DEBUG] [Thread-117630] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:44:10.237 [DEBUG] [Thread-117630] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:44:10.237 [DEBUG] [Thread-117630] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:44:10.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:44:10.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:44:10.281 [DEBUG] [Thread-117630] [transport.py] [_log()] userauth is OK
2025-11-03T14:44:10.281 [DEBUG] [Thread-117630] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:44:10.281 [DEBUG] [Thread-117630] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:44:10.281 [DEBUG] [Thread-117630] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:44:10.282 [DEBUG] [Thread-117630] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:44:10.302 [INFO] [Thread-117630] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:44:10.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:44:10.970 [DEBUG] [Thread-117630] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:44:10.970 [DEBUG] [Thread-117630] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:44:10.971 [DEBUG] [Thread-117630] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:44:11.011 [DEBUG] [Thread-117630] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:44:11.011 [DEBUG] [Thread-117630] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:44:11.015 [DEBUG] [Thread-117630] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:44:11.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:44:11.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:44:11.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:44:11.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:44:11.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:44:11.039 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:44:11.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:44:11.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:44:11.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:44:11.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.530311 -999.00  +26.20  30.25      7  -11.10 1 1 2 1 1   888    0 39.36 66.72 ----- 29.6 30.2 304.6 41.9 30.8 -31.7 30.3 -31.0 31.1 -32.5 31.9 -30.4
2025-11-03T14:44:11.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:44:11.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:44:11.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.530311
2025-11-03T14:44:11.048 [DEBUG] [Thread-117630] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:44:11.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:44:11.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:44:11.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:44:11.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:44:11.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:44:11.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:43:45', tmtdew=49.03, humidity=2.96, cloud=0.0, wind=28.6, temperature=27.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:43:38.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:44:11.138 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:44:11.151 [DEBUG] [Thread-117633] [transport.py] [_log()] starting thread (client mode): 0xed4d2d0
2025-11-03T14:44:11.151 [DEBUG] [Thread-117633] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:44:11.166 [DEBUG] [Thread-117633] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:44:11.166 [INFO] [Thread-117633] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:44:11.174 [DEBUG] [Thread-117633] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:44:11.174 [DEBUG] [Thread-117633] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:44:11.174 [DEBUG] [Thread-117633] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:44:11.174 [DEBUG] [Thread-117633] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:44:11.174 [DEBUG] [Thread-117633] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:44:11.174 [DEBUG] [Thread-117633] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:44:11.174 [DEBUG] [Thread-117633] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:44:11.174 [DEBUG] [Thread-117633] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:44:11.174 [DEBUG] [Thread-117633] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:44:11.174 [DEBUG] [Thread-117633] [transport.py] [_log()] client lang: <none>
2025-11-03T14:44:11.174 [DEBUG] [Thread-117633] [transport.py] [_log()] server lang: <none>
2025-11-03T14:44:11.174 [DEBUG] [Thread-117633] [transport.py] [_log()] kex follows: False
2025-11-03T14:44:11.174 [DEBUG] [Thread-117633] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:44:11.174 [DEBUG] [Thread-117633] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:44:11.174 [DEBUG] [Thread-117633] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:44:11.174 [DEBUG] [Thread-117633] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:44:11.175 [DEBUG] [Thread-117633] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:44:11.175 [DEBUG] [Thread-117633] [transport.py] [_log()] Compression: none
2025-11-03T14:44:11.175 [DEBUG] [Thread-117633] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:44:11.231 [DEBUG] [Thread-117633] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:44:11.232 [DEBUG] [Thread-117633] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:44:11.232 [DEBUG] [Thread-117633] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:44:11.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:44:11.233 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:44:11.286 [DEBUG] [Thread-117633] [transport.py] [_log()] userauth is OK
2025-11-03T14:44:11.287 [DEBUG] [Thread-117633] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:44:11.296 [DEBUG] [Thread-117633] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:44:11.296 [DEBUG] [Thread-117633] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:44:11.296 [DEBUG] [Thread-117633] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:44:11.322 [INFO] [Thread-117633] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:44:11.322 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:44:11.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:44:12.264 [DEBUG] [Thread-117633] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:44:12.264 [DEBUG] [Thread-117633] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:44:12.312 [DEBUG] [Thread-117633] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:44:12.312 [DEBUG] [Thread-117633] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:44:12.321 [DEBUG] [Thread-117633] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:44:12.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:44:12.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:44:12.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:44:12.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:44:12.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:44:12.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:44:12.358 [DEBUG] [Thread-117633] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:44:12.406 [DEBUG] [Thread-117635 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:44:19.110 [DEBUG] [Thread-117636 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:44:34.145 [DEBUG] [Thread-117637 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:44:42.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:44:42.359 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:44:42.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:44:43.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 44, 17), 48.74, 3.01, 0.0, 25.07, 26.79, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:44:43.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:44:17
2025-11-03T14:44:43.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:44:43.321 [DEBUG] [Thread-117638] [transport.py] [_log()] starting thread (client mode): 0xeda0f10
2025-11-03T14:44:43.321 [DEBUG] [Thread-117638] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:44:43.342 [DEBUG] [Thread-117638] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:44:43.342 [INFO] [Thread-117638] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:44:43.352 [DEBUG] [Thread-117638] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:44:43.352 [DEBUG] [Thread-117638] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:44:43.352 [DEBUG] [Thread-117638] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:44:43.352 [DEBUG] [Thread-117638] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:44:43.352 [DEBUG] [Thread-117638] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:44:43.352 [DEBUG] [Thread-117638] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:44:43.353 [DEBUG] [Thread-117638] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:44:43.353 [DEBUG] [Thread-117638] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:44:43.353 [DEBUG] [Thread-117638] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:44:43.353 [DEBUG] [Thread-117638] [transport.py] [_log()] client lang: <none>
2025-11-03T14:44:43.353 [DEBUG] [Thread-117638] [transport.py] [_log()] server lang: <none>
2025-11-03T14:44:43.353 [DEBUG] [Thread-117638] [transport.py] [_log()] kex follows: False
2025-11-03T14:44:43.353 [DEBUG] [Thread-117638] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:44:43.353 [DEBUG] [Thread-117638] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:44:43.353 [DEBUG] [Thread-117638] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:44:43.353 [DEBUG] [Thread-117638] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:44:43.353 [DEBUG] [Thread-117638] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:44:43.353 [DEBUG] [Thread-117638] [transport.py] [_log()] Compression: none
2025-11-03T14:44:43.353 [DEBUG] [Thread-117638] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:44:43.362 [DEBUG] [Thread-117638] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:44:43.363 [DEBUG] [Thread-117638] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:44:43.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:44:43.364 [DEBUG] [Thread-117638] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:44:43.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:44:43.366 [DEBUG] [Thread-117638] [transport.py] [_log()] userauth is OK
2025-11-03T14:44:43.366 [DEBUG] [Thread-117638] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:44:43.366 [DEBUG] [Thread-117638] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:44:43.366 [DEBUG] [Thread-117638] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:44:43.367 [DEBUG] [Thread-117638] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:44:43.393 [INFO] [Thread-117638] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:44:43.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:44:44.109 [DEBUG] [Thread-117638] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:44:44.109 [DEBUG] [Thread-117638] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:44:44.109 [DEBUG] [Thread-117638] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:44:44.149 [DEBUG] [Thread-117638] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:44:44.149 [DEBUG] [Thread-117638] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:44:44.152 [DEBUG] [Thread-117638] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:44:44.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:44:44.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:44:44.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:44:44.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:44:44.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:44:44.172 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:44:44.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:44:44.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:44:44.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:44:44.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.530659 -999.00  +26.20  28.60      7  -11.00 1 1 1 1 1   888    0 39.65 70.92 ----- 27.1 28.6 296.4 35.1 30.8 -31.6 30.3 -30.7 31.0 -30.5 31.9 -30.6
2025-11-03T14:44:44.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:44:44.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:44:44.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.530659
2025-11-03T14:44:44.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:44:44.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:44:44.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:44:44.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:44:44.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:44:44.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:44:17', tmtdew=48.74, humidity=3.01, cloud=0.0, wind=25.07, temperature=26.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:44:08.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:44:44.174 [DEBUG] [Thread-117638] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:44:44.245 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:44:44.257 [DEBUG] [Thread-117641] [transport.py] [_log()] starting thread (client mode): 0x117be470
2025-11-03T14:44:44.257 [DEBUG] [Thread-117641] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:44:44.272 [DEBUG] [Thread-117641] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:44:44.272 [INFO] [Thread-117641] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:44:44.280 [DEBUG] [Thread-117641] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:44:44.280 [DEBUG] [Thread-117641] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:44:44.280 [DEBUG] [Thread-117641] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:44:44.280 [DEBUG] [Thread-117641] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:44:44.280 [DEBUG] [Thread-117641] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:44:44.280 [DEBUG] [Thread-117641] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:44:44.280 [DEBUG] [Thread-117641] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:44:44.280 [DEBUG] [Thread-117641] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:44:44.280 [DEBUG] [Thread-117641] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:44:44.280 [DEBUG] [Thread-117641] [transport.py] [_log()] client lang: <none>
2025-11-03T14:44:44.280 [DEBUG] [Thread-117641] [transport.py] [_log()] server lang: <none>
2025-11-03T14:44:44.280 [DEBUG] [Thread-117641] [transport.py] [_log()] kex follows: False
2025-11-03T14:44:44.280 [DEBUG] [Thread-117641] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:44:44.280 [DEBUG] [Thread-117641] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:44:44.280 [DEBUG] [Thread-117641] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:44:44.280 [DEBUG] [Thread-117641] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:44:44.280 [DEBUG] [Thread-117641] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:44:44.280 [DEBUG] [Thread-117641] [transport.py] [_log()] Compression: none
2025-11-03T14:44:44.280 [DEBUG] [Thread-117641] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:44:44.338 [DEBUG] [Thread-117641] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:44:44.339 [DEBUG] [Thread-117641] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:44:44.339 [DEBUG] [Thread-117641] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:44:44.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:44:44.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:44:44.394 [DEBUG] [Thread-117641] [transport.py] [_log()] userauth is OK
2025-11-03T14:44:44.394 [DEBUG] [Thread-117641] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:44:44.395 [DEBUG] [Thread-117641] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:44:44.395 [DEBUG] [Thread-117641] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:44:44.395 [DEBUG] [Thread-117641] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:44:44.422 [INFO] [Thread-117641] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:44:44.422 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:44:44.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:44:45.260 [DEBUG] [Thread-117641] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:44:45.260 [DEBUG] [Thread-117641] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:44:45.307 [DEBUG] [Thread-117641] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:44:45.308 [DEBUG] [Thread-117641] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:44:45.316 [DEBUG] [Thread-117641] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:44:45.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:44:45.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:44:45.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:44:45.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:44:45.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:44:45.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:44:45.355 [DEBUG] [Thread-117641] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:44:49.182 [DEBUG] [Thread-117643 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:44:59.946 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:44:59.946 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:45:04.233 [DEBUG] [Thread-117644 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:45:12.514 [DEBUG] [Thread-117645 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:45:15.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:45:15.350 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:45:15.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:45:16.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 44, 49), 48.82, 3.06, 0.0, 21.91, 26.79, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:45:16.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:44:49
2025-11-03T14:45:16.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:45:16.310 [DEBUG] [Thread-117646] [transport.py] [_log()] starting thread (client mode): 0x117bc430
2025-11-03T14:45:16.310 [DEBUG] [Thread-117646] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:45:16.329 [DEBUG] [Thread-117646] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:45:16.329 [INFO] [Thread-117646] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:45:16.332 [DEBUG] [Thread-117646] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:45:16.332 [DEBUG] [Thread-117646] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:45:16.332 [DEBUG] [Thread-117646] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:45:16.332 [DEBUG] [Thread-117646] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:45:16.332 [DEBUG] [Thread-117646] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:45:16.332 [DEBUG] [Thread-117646] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:45:16.332 [DEBUG] [Thread-117646] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:45:16.332 [DEBUG] [Thread-117646] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:45:16.332 [DEBUG] [Thread-117646] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:45:16.333 [DEBUG] [Thread-117646] [transport.py] [_log()] client lang: <none>
2025-11-03T14:45:16.333 [DEBUG] [Thread-117646] [transport.py] [_log()] server lang: <none>
2025-11-03T14:45:16.333 [DEBUG] [Thread-117646] [transport.py] [_log()] kex follows: False
2025-11-03T14:45:16.333 [DEBUG] [Thread-117646] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:45:16.333 [DEBUG] [Thread-117646] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:45:16.333 [DEBUG] [Thread-117646] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:45:16.333 [DEBUG] [Thread-117646] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:45:16.333 [DEBUG] [Thread-117646] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:45:16.333 [DEBUG] [Thread-117646] [transport.py] [_log()] Compression: none
2025-11-03T14:45:16.333 [DEBUG] [Thread-117646] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:45:16.350 [DEBUG] [Thread-117646] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:45:16.350 [DEBUG] [Thread-117646] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:45:16.351 [DEBUG] [Thread-117646] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:45:16.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:45:16.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:45:16.353 [DEBUG] [Thread-117646] [transport.py] [_log()] userauth is OK
2025-11-03T14:45:16.353 [DEBUG] [Thread-117646] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:45:16.353 [DEBUG] [Thread-117646] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:45:16.354 [DEBUG] [Thread-117646] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:45:16.354 [DEBUG] [Thread-117646] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:45:16.378 [INFO] [Thread-117646] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:45:16.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:45:17.022 [DEBUG] [Thread-117646] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:45:17.022 [DEBUG] [Thread-117646] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:45:17.022 [DEBUG] [Thread-117646] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:45:17.063 [DEBUG] [Thread-117646] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:45:17.063 [DEBUG] [Thread-117646] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:45:17.066 [DEBUG] [Thread-117646] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:45:17.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:45:17.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:45:17.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:45:17.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:45:17.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:45:17.089 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:45:17.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:45:17.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:45:17.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:45:17.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.531006 -999.00  +25.80  22.01      7  -11.50 1 1 1 1 1   888    0 38.38 78.24 ----- 21.0 22.0 309.2 29.0 30.8 -31.9 30.3 -31.2 31.1 -29.8 31.9 -30.7
2025-11-03T14:45:17.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:45:17.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:45:17.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.531006
2025-11-03T14:45:17.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:45:17.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:45:17.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:45:17.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:45:17.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:45:17.092 [DEBUG] [Thread-117646] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:45:17.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:44:49', tmtdew=48.82, humidity=3.06, cloud=0.0, wind=21.91, temperature=26.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:44:38.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:45:17.169 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:45:17.183 [DEBUG] [Thread-117649] [transport.py] [_log()] starting thread (client mode): 0xed2ca60
2025-11-03T14:45:17.183 [DEBUG] [Thread-117649] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:45:17.198 [DEBUG] [Thread-117649] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:45:17.198 [INFO] [Thread-117649] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:45:17.206 [DEBUG] [Thread-117649] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:45:17.206 [DEBUG] [Thread-117649] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:45:17.207 [DEBUG] [Thread-117649] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:45:17.207 [DEBUG] [Thread-117649] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:45:17.207 [DEBUG] [Thread-117649] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:45:17.207 [DEBUG] [Thread-117649] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:45:17.207 [DEBUG] [Thread-117649] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:45:17.207 [DEBUG] [Thread-117649] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:45:17.207 [DEBUG] [Thread-117649] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:45:17.207 [DEBUG] [Thread-117649] [transport.py] [_log()] client lang: <none>
2025-11-03T14:45:17.208 [DEBUG] [Thread-117649] [transport.py] [_log()] server lang: <none>
2025-11-03T14:45:17.208 [DEBUG] [Thread-117649] [transport.py] [_log()] kex follows: False
2025-11-03T14:45:17.208 [DEBUG] [Thread-117649] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:45:17.208 [DEBUG] [Thread-117649] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:45:17.208 [DEBUG] [Thread-117649] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:45:17.208 [DEBUG] [Thread-117649] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:45:17.208 [DEBUG] [Thread-117649] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:45:17.209 [DEBUG] [Thread-117649] [transport.py] [_log()] Compression: none
2025-11-03T14:45:17.209 [DEBUG] [Thread-117649] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:45:17.267 [DEBUG] [Thread-117649] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:45:17.267 [DEBUG] [Thread-117649] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:45:17.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:45:17.268 [DEBUG] [Thread-117649] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:45:17.269 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:45:17.326 [DEBUG] [Thread-117649] [transport.py] [_log()] userauth is OK
2025-11-03T14:45:17.326 [DEBUG] [Thread-117649] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:45:17.327 [DEBUG] [Thread-117649] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:45:17.327 [DEBUG] [Thread-117649] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:45:17.327 [DEBUG] [Thread-117649] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:45:17.348 [INFO] [Thread-117649] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:45:17.348 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:45:17.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:45:18.213 [DEBUG] [Thread-117649] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:45:18.213 [DEBUG] [Thread-117649] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:45:18.261 [DEBUG] [Thread-117649] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:45:18.261 [DEBUG] [Thread-117649] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:45:18.271 [DEBUG] [Thread-117649] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:45:18.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:45:18.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:45:18.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:45:18.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:45:18.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:45:18.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:45:18.308 [DEBUG] [Thread-117649] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:45:19.273 [DEBUG] [Thread-117651 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:45:34.312 [DEBUG] [Thread-117652 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:45:48.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:45:48.317 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:45:48.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:45:48.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 45, 22), 48.97, 3.02, 0.0, 25.57, 26.85, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:45:48.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:45:22
2025-11-03T14:45:49.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:45:49.269 [DEBUG] [Thread-117653] [transport.py] [_log()] starting thread (client mode): 0xeda26b0
2025-11-03T14:45:49.270 [DEBUG] [Thread-117653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:45:49.290 [DEBUG] [Thread-117653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:45:49.290 [INFO] [Thread-117653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:45:49.293 [DEBUG] [Thread-117653] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:45:49.293 [DEBUG] [Thread-117653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:45:49.293 [DEBUG] [Thread-117653] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:45:49.293 [DEBUG] [Thread-117653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:45:49.293 [DEBUG] [Thread-117653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:45:49.293 [DEBUG] [Thread-117653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:45:49.293 [DEBUG] [Thread-117653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:45:49.293 [DEBUG] [Thread-117653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:45:49.293 [DEBUG] [Thread-117653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:45:49.293 [DEBUG] [Thread-117653] [transport.py] [_log()] client lang: <none>
2025-11-03T14:45:49.294 [DEBUG] [Thread-117653] [transport.py] [_log()] server lang: <none>
2025-11-03T14:45:49.294 [DEBUG] [Thread-117653] [transport.py] [_log()] kex follows: False
2025-11-03T14:45:49.294 [DEBUG] [Thread-117653] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:45:49.294 [DEBUG] [Thread-117653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:45:49.294 [DEBUG] [Thread-117653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:45:49.294 [DEBUG] [Thread-117653] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:45:49.294 [DEBUG] [Thread-117653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:45:49.294 [DEBUG] [Thread-117653] [transport.py] [_log()] Compression: none
2025-11-03T14:45:49.294 [DEBUG] [Thread-117653] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:45:49.312 [DEBUG] [Thread-117653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:45:49.312 [DEBUG] [Thread-117653] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:45:49.313 [DEBUG] [Thread-117653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:45:49.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:45:49.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:45:49.316 [DEBUG] [Thread-117653] [transport.py] [_log()] userauth is OK
2025-11-03T14:45:49.316 [DEBUG] [Thread-117653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:45:49.316 [DEBUG] [Thread-117653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:45:49.316 [DEBUG] [Thread-117653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:45:49.317 [DEBUG] [Thread-117653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:45:49.342 [DEBUG] [Thread-117655 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:45:49.348 [INFO] [Thread-117653] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:45:49.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:45:49.980 [DEBUG] [Thread-117653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:45:49.981 [DEBUG] [Thread-117653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:45:49.981 [DEBUG] [Thread-117653] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:45:50.022 [DEBUG] [Thread-117653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:45:50.022 [DEBUG] [Thread-117653] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:45:50.025 [DEBUG] [Thread-117653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:45:50.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:45:50.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:45:50.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:45:50.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:45:50.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:45:50.051 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:45:50.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:45:50.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:45:50.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:45:50.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.531353 -999.00  +25.90  21.15      7  -11.00 1 1 1 1 1   888    0 38.86 82.18 ----- 24.6 21.1 321.8 22.5 30.8 -31.9 30.4 -30.4 31.0 -30.7 32.0 -30.3
2025-11-03T14:45:50.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:45:50.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:45:50.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.531353
2025-11-03T14:45:50.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:45:50.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:45:50.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:45:50.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:45:50.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:45:50.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:45:22', tmtdew=48.97, humidity=3.02, cloud=0.0, wind=25.57, temperature=26.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:45:08.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:45:50.054 [DEBUG] [Thread-117653] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:45:50.137 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:45:50.149 [DEBUG] [Thread-117657] [transport.py] [_log()] starting thread (client mode): 0x117bf400
2025-11-03T14:45:50.150 [DEBUG] [Thread-117657] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:45:50.164 [DEBUG] [Thread-117657] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:45:50.165 [INFO] [Thread-117657] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:45:50.173 [DEBUG] [Thread-117657] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:45:50.173 [DEBUG] [Thread-117657] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:45:50.173 [DEBUG] [Thread-117657] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:45:50.173 [DEBUG] [Thread-117657] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:45:50.173 [DEBUG] [Thread-117657] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:45:50.173 [DEBUG] [Thread-117657] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:45:50.173 [DEBUG] [Thread-117657] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:45:50.173 [DEBUG] [Thread-117657] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:45:50.173 [DEBUG] [Thread-117657] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:45:50.173 [DEBUG] [Thread-117657] [transport.py] [_log()] client lang: <none>
2025-11-03T14:45:50.182 [DEBUG] [Thread-117657] [transport.py] [_log()] server lang: <none>
2025-11-03T14:45:50.182 [DEBUG] [Thread-117657] [transport.py] [_log()] kex follows: False
2025-11-03T14:45:50.182 [DEBUG] [Thread-117657] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:45:50.182 [DEBUG] [Thread-117657] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:45:50.182 [DEBUG] [Thread-117657] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:45:50.182 [DEBUG] [Thread-117657] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:45:50.182 [DEBUG] [Thread-117657] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:45:50.183 [DEBUG] [Thread-117657] [transport.py] [_log()] Compression: none
2025-11-03T14:45:50.183 [DEBUG] [Thread-117657] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:45:50.235 [DEBUG] [Thread-117657] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:45:50.236 [DEBUG] [Thread-117657] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:45:50.237 [DEBUG] [Thread-117657] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:45:50.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:45:50.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:45:50.294 [DEBUG] [Thread-117657] [transport.py] [_log()] userauth is OK
2025-11-03T14:45:50.294 [DEBUG] [Thread-117657] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:45:50.294 [DEBUG] [Thread-117657] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:45:50.294 [DEBUG] [Thread-117657] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:45:50.294 [DEBUG] [Thread-117657] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:45:50.312 [INFO] [Thread-117657] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:45:50.313 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:45:50.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:45:51.147 [DEBUG] [Thread-117657] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:45:51.147 [DEBUG] [Thread-117657] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:45:51.195 [DEBUG] [Thread-117657] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:45:51.195 [DEBUG] [Thread-117657] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:45:51.204 [DEBUG] [Thread-117657] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:45:51.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:45:51.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:45:51.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:45:51.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:45:51.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:45:51.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:45:51.251 [DEBUG] [Thread-117657] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:46:00.087 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:46:00.088 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:46:04.390 [DEBUG] [Thread-117659 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:46:12.654 [DEBUG] [Thread-117660 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:46:19.438 [DEBUG] [Thread-117661 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:46:21.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:46:21.248 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:46:21.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:46:21.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 45, 54), 48.42, 3.02, 0.0, 25.46, 27.02, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:46:21.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:45:54
2025-11-03T14:46:22.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:46:22.211 [DEBUG] [Thread-117662] [transport.py] [_log()] starting thread (client mode): 0xeda24d0
2025-11-03T14:46:22.211 [DEBUG] [Thread-117662] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:46:22.230 [DEBUG] [Thread-117662] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:46:22.230 [INFO] [Thread-117662] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:46:22.233 [DEBUG] [Thread-117662] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:46:22.234 [DEBUG] [Thread-117662] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:46:22.234 [DEBUG] [Thread-117662] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:46:22.234 [DEBUG] [Thread-117662] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:46:22.234 [DEBUG] [Thread-117662] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:46:22.234 [DEBUG] [Thread-117662] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:46:22.234 [DEBUG] [Thread-117662] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:46:22.234 [DEBUG] [Thread-117662] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:46:22.234 [DEBUG] [Thread-117662] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:46:22.234 [DEBUG] [Thread-117662] [transport.py] [_log()] client lang: <none>
2025-11-03T14:46:22.234 [DEBUG] [Thread-117662] [transport.py] [_log()] server lang: <none>
2025-11-03T14:46:22.234 [DEBUG] [Thread-117662] [transport.py] [_log()] kex follows: False
2025-11-03T14:46:22.234 [DEBUG] [Thread-117662] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:46:22.234 [DEBUG] [Thread-117662] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:46:22.234 [DEBUG] [Thread-117662] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:46:22.234 [DEBUG] [Thread-117662] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:46:22.235 [DEBUG] [Thread-117662] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:46:22.235 [DEBUG] [Thread-117662] [transport.py] [_log()] Compression: none
2025-11-03T14:46:22.235 [DEBUG] [Thread-117662] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:46:22.252 [DEBUG] [Thread-117662] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:46:22.252 [DEBUG] [Thread-117662] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:46:22.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:46:22.253 [DEBUG] [Thread-117662] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:46:22.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:46:22.256 [DEBUG] [Thread-117662] [transport.py] [_log()] userauth is OK
2025-11-03T14:46:22.256 [DEBUG] [Thread-117662] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:46:22.256 [DEBUG] [Thread-117662] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:46:22.256 [DEBUG] [Thread-117662] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:46:22.256 [DEBUG] [Thread-117662] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:46:22.280 [INFO] [Thread-117662] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:46:22.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:46:22.932 [DEBUG] [Thread-117662] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:46:22.933 [DEBUG] [Thread-117662] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:46:22.933 [DEBUG] [Thread-117662] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:46:22.974 [DEBUG] [Thread-117662] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:46:22.974 [DEBUG] [Thread-117662] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:46:22.978 [DEBUG] [Thread-117662] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:46:22.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:46:22.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:46:22.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:46:22.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:46:23.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:46:23.002 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:46:23.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:46:23.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:46:23.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:46:23.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.531700 -999.00  +26.10  23.51      8  -10.70 1 1 1 1 1   888    0 38.95 70.77 ----- 19.2 23.5 317.8 29.3 30.9 -31.6 30.4 -30.5 31.2 -30.4 32.0 -30.4
2025-11-03T14:46:23.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:46:23.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:46:23.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.531700
2025-11-03T14:46:23.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:46:23.004 [DEBUG] [Thread-117662] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:46:23.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:46:23.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:46:23.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:46:23.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:46:23.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:45:54', tmtdew=48.42, humidity=3.02, cloud=0.0, wind=25.46, temperature=27.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:45:38.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:46:23.088 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:46:23.101 [DEBUG] [Thread-117665] [transport.py] [_log()] starting thread (client mode): 0xeda0790
2025-11-03T14:46:23.101 [DEBUG] [Thread-117665] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:46:23.115 [DEBUG] [Thread-117665] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:46:23.115 [INFO] [Thread-117665] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:46:23.123 [DEBUG] [Thread-117665] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:46:23.123 [DEBUG] [Thread-117665] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:46:23.123 [DEBUG] [Thread-117665] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:46:23.123 [DEBUG] [Thread-117665] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:46:23.123 [DEBUG] [Thread-117665] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:46:23.123 [DEBUG] [Thread-117665] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:46:23.123 [DEBUG] [Thread-117665] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:46:23.123 [DEBUG] [Thread-117665] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:46:23.124 [DEBUG] [Thread-117665] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:46:23.124 [DEBUG] [Thread-117665] [transport.py] [_log()] client lang: <none>
2025-11-03T14:46:23.124 [DEBUG] [Thread-117665] [transport.py] [_log()] server lang: <none>
2025-11-03T14:46:23.124 [DEBUG] [Thread-117665] [transport.py] [_log()] kex follows: False
2025-11-03T14:46:23.124 [DEBUG] [Thread-117665] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:46:23.124 [DEBUG] [Thread-117665] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:46:23.124 [DEBUG] [Thread-117665] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:46:23.124 [DEBUG] [Thread-117665] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:46:23.124 [DEBUG] [Thread-117665] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:46:23.124 [DEBUG] [Thread-117665] [transport.py] [_log()] Compression: none
2025-11-03T14:46:23.124 [DEBUG] [Thread-117665] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:46:23.182 [DEBUG] [Thread-117665] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:46:23.183 [DEBUG] [Thread-117665] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:46:23.193 [DEBUG] [Thread-117665] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:46:23.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:46:23.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:46:23.238 [DEBUG] [Thread-117665] [transport.py] [_log()] userauth is OK
2025-11-03T14:46:23.238 [DEBUG] [Thread-117665] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:46:23.238 [DEBUG] [Thread-117665] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:46:23.239 [DEBUG] [Thread-117665] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:46:23.239 [DEBUG] [Thread-117665] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:46:23.257 [INFO] [Thread-117665] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:46:23.258 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:46:23.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:46:24.135 [DEBUG] [Thread-117665] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:46:24.136 [DEBUG] [Thread-117665] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:46:24.184 [DEBUG] [Thread-117665] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:46:24.185 [DEBUG] [Thread-117665] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:46:24.196 [DEBUG] [Thread-117665] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:46:24.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:46:24.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:46:24.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:46:24.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:46:24.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:46:24.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:46:24.243 [DEBUG] [Thread-117665] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:46:34.469 [DEBUG] [Thread-117667 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:46:49.510 [DEBUG] [Thread-117668 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:46:54.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:46:54.265 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:46:54.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:46:54.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 46, 27), 48.29, 3.06, 0.0, 24.19, 27.0, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:46:54.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:46:27
2025-11-03T14:46:55.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:46:55.282 [DEBUG] [Thread-117669] [transport.py] [_log()] starting thread (client mode): 0xeda2da0
2025-11-03T14:46:55.282 [DEBUG] [Thread-117669] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:46:55.302 [DEBUG] [Thread-117669] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:46:55.302 [INFO] [Thread-117669] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:46:55.305 [DEBUG] [Thread-117669] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:46:55.306 [DEBUG] [Thread-117669] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:46:55.306 [DEBUG] [Thread-117669] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:46:55.306 [DEBUG] [Thread-117669] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:46:55.306 [DEBUG] [Thread-117669] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:46:55.306 [DEBUG] [Thread-117669] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:46:55.306 [DEBUG] [Thread-117669] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:46:55.306 [DEBUG] [Thread-117669] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:46:55.306 [DEBUG] [Thread-117669] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:46:55.306 [DEBUG] [Thread-117669] [transport.py] [_log()] client lang: <none>
2025-11-03T14:46:55.306 [DEBUG] [Thread-117669] [transport.py] [_log()] server lang: <none>
2025-11-03T14:46:55.306 [DEBUG] [Thread-117669] [transport.py] [_log()] kex follows: False
2025-11-03T14:46:55.306 [DEBUG] [Thread-117669] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:46:55.306 [DEBUG] [Thread-117669] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:46:55.306 [DEBUG] [Thread-117669] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:46:55.306 [DEBUG] [Thread-117669] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:46:55.306 [DEBUG] [Thread-117669] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:46:55.306 [DEBUG] [Thread-117669] [transport.py] [_log()] Compression: none
2025-11-03T14:46:55.306 [DEBUG] [Thread-117669] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:46:55.325 [DEBUG] [Thread-117669] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:46:55.325 [DEBUG] [Thread-117669] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:46:55.325 [DEBUG] [Thread-117669] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:46:55.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:46:55.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:46:55.326 [DEBUG] [Thread-117669] [transport.py] [_log()] userauth is OK
2025-11-03T14:46:55.326 [DEBUG] [Thread-117669] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:46:55.326 [DEBUG] [Thread-117669] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:46:55.326 [DEBUG] [Thread-117669] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:46:55.326 [DEBUG] [Thread-117669] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:46:55.336 [INFO] [Thread-117669] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:46:55.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:46:55.987 [DEBUG] [Thread-117669] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:46:55.987 [DEBUG] [Thread-117669] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:46:55.987 [DEBUG] [Thread-117669] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:46:56.028 [DEBUG] [Thread-117669] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:46:56.028 [DEBUG] [Thread-117669] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:46:56.030 [DEBUG] [Thread-117669] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:46:56.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:46:56.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:46:56.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:46:56.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:46:56.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:46:56.048 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:46:56.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:46:56.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:46:56.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:46:56.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.532047 -999.00  +26.50  38.90      7  -10.80 1 1 2 1 1   888    0 39.26 72.02 ----- 37.4 38.9 309.6 45.5 30.9 -31.5 30.4 -31.4 31.2 -30.7 32.0 -30.2
2025-11-03T14:46:56.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:46:56.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:46:56.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.532047
2025-11-03T14:46:56.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:46:56.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:46:56.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:46:56.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:46:56.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:46:56.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:46:27', tmtdew=48.29, humidity=3.06, cloud=0.0, wind=24.19, temperature=27.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:46:08.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:46:56.050 [DEBUG] [Thread-117669] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:46:56.124 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:46:56.136 [DEBUG] [Thread-117672] [transport.py] [_log()] starting thread (client mode): 0x11781c60
2025-11-03T14:46:56.136 [DEBUG] [Thread-117672] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:46:56.151 [DEBUG] [Thread-117672] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:46:56.151 [INFO] [Thread-117672] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:46:56.158 [DEBUG] [Thread-117672] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:46:56.158 [DEBUG] [Thread-117672] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:46:56.158 [DEBUG] [Thread-117672] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:46:56.158 [DEBUG] [Thread-117672] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:46:56.158 [DEBUG] [Thread-117672] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:46:56.158 [DEBUG] [Thread-117672] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:46:56.158 [DEBUG] [Thread-117672] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:46:56.158 [DEBUG] [Thread-117672] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:46:56.158 [DEBUG] [Thread-117672] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:46:56.158 [DEBUG] [Thread-117672] [transport.py] [_log()] client lang: <none>
2025-11-03T14:46:56.158 [DEBUG] [Thread-117672] [transport.py] [_log()] server lang: <none>
2025-11-03T14:46:56.158 [DEBUG] [Thread-117672] [transport.py] [_log()] kex follows: False
2025-11-03T14:46:56.158 [DEBUG] [Thread-117672] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:46:56.158 [DEBUG] [Thread-117672] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:46:56.159 [DEBUG] [Thread-117672] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:46:56.159 [DEBUG] [Thread-117672] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:46:56.159 [DEBUG] [Thread-117672] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:46:56.159 [DEBUG] [Thread-117672] [transport.py] [_log()] Compression: none
2025-11-03T14:46:56.159 [DEBUG] [Thread-117672] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:46:56.216 [DEBUG] [Thread-117672] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:46:56.216 [DEBUG] [Thread-117672] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:46:56.216 [DEBUG] [Thread-117672] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:46:56.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:46:56.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:46:56.273 [DEBUG] [Thread-117672] [transport.py] [_log()] userauth is OK
2025-11-03T14:46:56.273 [DEBUG] [Thread-117672] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:46:56.273 [DEBUG] [Thread-117672] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:46:56.273 [DEBUG] [Thread-117672] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:46:56.273 [DEBUG] [Thread-117672] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:46:56.287 [INFO] [Thread-117672] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:46:56.287 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:46:56.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:46:57.130 [DEBUG] [Thread-117672] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:46:57.131 [DEBUG] [Thread-117672] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:46:57.179 [DEBUG] [Thread-117672] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:46:57.179 [DEBUG] [Thread-117672] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:46:57.187 [DEBUG] [Thread-117672] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:46:57.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:46:57.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:46:57.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:46:57.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:46:57.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:46:57.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:46:57.219 [DEBUG] [Thread-117672] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:47:00.229 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:47:00.229 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:47:04.541 [DEBUG] [Thread-117674 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:47:12.742 [DEBUG] [Thread-117675 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:47:19.590 [DEBUG] [Thread-117676 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:47:27.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:47:27.216 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:47:27.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:47:27.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 46, 59), 48.99, 2.97, 0.0, 39.2, 27.05, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:47:27.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:46:59
2025-11-03T14:47:28.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:47:28.236 [DEBUG] [Thread-117677] [transport.py] [_log()] starting thread (client mode): 0xeda0ac0
2025-11-03T14:47:28.236 [DEBUG] [Thread-117677] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:47:28.256 [DEBUG] [Thread-117677] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:47:28.256 [INFO] [Thread-117677] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:47:28.265 [DEBUG] [Thread-117677] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:47:28.266 [DEBUG] [Thread-117677] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:47:28.266 [DEBUG] [Thread-117677] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:47:28.266 [DEBUG] [Thread-117677] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:47:28.266 [DEBUG] [Thread-117677] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:47:28.266 [DEBUG] [Thread-117677] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:47:28.266 [DEBUG] [Thread-117677] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:47:28.266 [DEBUG] [Thread-117677] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:47:28.266 [DEBUG] [Thread-117677] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:47:28.266 [DEBUG] [Thread-117677] [transport.py] [_log()] client lang: <none>
2025-11-03T14:47:28.266 [DEBUG] [Thread-117677] [transport.py] [_log()] server lang: <none>
2025-11-03T14:47:28.266 [DEBUG] [Thread-117677] [transport.py] [_log()] kex follows: False
2025-11-03T14:47:28.266 [DEBUG] [Thread-117677] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:47:28.266 [DEBUG] [Thread-117677] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:47:28.266 [DEBUG] [Thread-117677] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:47:28.266 [DEBUG] [Thread-117677] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:47:28.266 [DEBUG] [Thread-117677] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:47:28.266 [DEBUG] [Thread-117677] [transport.py] [_log()] Compression: none
2025-11-03T14:47:28.266 [DEBUG] [Thread-117677] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:47:28.286 [DEBUG] [Thread-117677] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:47:28.286 [DEBUG] [Thread-117677] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:47:28.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:47:28.287 [DEBUG] [Thread-117677] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:47:28.288 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:47:28.290 [DEBUG] [Thread-117677] [transport.py] [_log()] userauth is OK
2025-11-03T14:47:28.290 [DEBUG] [Thread-117677] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:47:28.290 [DEBUG] [Thread-117677] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:47:28.290 [DEBUG] [Thread-117677] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:47:28.290 [DEBUG] [Thread-117677] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:47:28.316 [INFO] [Thread-117677] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:47:28.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:47:28.933 [DEBUG] [Thread-117677] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:47:28.933 [DEBUG] [Thread-117677] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:47:28.933 [DEBUG] [Thread-117677] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:47:28.973 [DEBUG] [Thread-117677] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:47:28.973 [DEBUG] [Thread-117677] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:47:28.975 [DEBUG] [Thread-117677] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:47:28.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:47:28.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:47:28.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:47:28.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:47:28.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:47:28.996 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:47:28.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:47:28.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:47:28.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:47:28.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.532395 -999.00  +26.40  33.60      7  -10.90 1 1 2 1 1   888    0 39.36 79.98 ----- 37.7 33.6 319.0 41.1 31.0 -32.4 30.5 -31.3 31.3 -30.7 32.0 -30.7
2025-11-03T14:47:28.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:47:28.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:47:28.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.532395
2025-11-03T14:47:28.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:47:28.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:47:28.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:47:28.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:47:28.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:47:28.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:46:59', tmtdew=48.99, humidity=2.97, cloud=0.0, wind=39.2, temperature=27.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:46:38.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:47:28.999 [DEBUG] [Thread-117677] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:47:29.093 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:47:29.104 [DEBUG] [Thread-117680] [transport.py] [_log()] starting thread (client mode): 0x1179a920
2025-11-03T14:47:29.105 [DEBUG] [Thread-117680] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:47:29.123 [DEBUG] [Thread-117680] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:47:29.123 [INFO] [Thread-117680] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:47:29.130 [DEBUG] [Thread-117680] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:47:29.130 [DEBUG] [Thread-117680] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:47:29.130 [DEBUG] [Thread-117680] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:47:29.130 [DEBUG] [Thread-117680] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:47:29.130 [DEBUG] [Thread-117680] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:47:29.130 [DEBUG] [Thread-117680] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:47:29.130 [DEBUG] [Thread-117680] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:47:29.130 [DEBUG] [Thread-117680] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:47:29.130 [DEBUG] [Thread-117680] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:47:29.130 [DEBUG] [Thread-117680] [transport.py] [_log()] client lang: <none>
2025-11-03T14:47:29.131 [DEBUG] [Thread-117680] [transport.py] [_log()] server lang: <none>
2025-11-03T14:47:29.131 [DEBUG] [Thread-117680] [transport.py] [_log()] kex follows: False
2025-11-03T14:47:29.131 [DEBUG] [Thread-117680] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:47:29.131 [DEBUG] [Thread-117680] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:47:29.131 [DEBUG] [Thread-117680] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:47:29.131 [DEBUG] [Thread-117680] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:47:29.131 [DEBUG] [Thread-117680] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:47:29.131 [DEBUG] [Thread-117680] [transport.py] [_log()] Compression: none
2025-11-03T14:47:29.131 [DEBUG] [Thread-117680] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:47:29.188 [DEBUG] [Thread-117680] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:47:29.188 [DEBUG] [Thread-117680] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:47:29.188 [DEBUG] [Thread-117680] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:47:29.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:47:29.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:47:29.250 [DEBUG] [Thread-117680] [transport.py] [_log()] userauth is OK
2025-11-03T14:47:29.250 [DEBUG] [Thread-117680] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:47:29.250 [DEBUG] [Thread-117680] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:47:29.250 [DEBUG] [Thread-117680] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:47:29.250 [DEBUG] [Thread-117680] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:47:29.268 [INFO] [Thread-117680] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:47:29.269 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:47:29.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:47:30.117 [DEBUG] [Thread-117680] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:47:30.117 [DEBUG] [Thread-117680] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:47:30.164 [DEBUG] [Thread-117680] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:47:30.165 [DEBUG] [Thread-117680] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:47:30.173 [DEBUG] [Thread-117680] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:47:30.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:47:30.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:47:30.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:47:30.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:47:30.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:47:30.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:47:30.208 [DEBUG] [Thread-117680] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:47:34.618 [DEBUG] [Thread-117682 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:47:49.660 [DEBUG] [Thread-117683 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:48:00.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:48:00.210 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:48:00.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:48:00.369 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:48:00.370 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:48:00.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 47, 31), 48.93, 2.99, 0.0, 34.12, 27.07, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:48:00.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:47:31
2025-11-03T14:48:01.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:48:01.223 [DEBUG] [Thread-117684] [transport.py] [_log()] starting thread (client mode): 0x1179a8f0
2025-11-03T14:48:01.223 [DEBUG] [Thread-117684] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:48:01.233 [DEBUG] [Thread-117684] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:48:01.233 [INFO] [Thread-117684] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:48:01.236 [DEBUG] [Thread-117684] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:48:01.236 [DEBUG] [Thread-117684] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:48:01.236 [DEBUG] [Thread-117684] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:48:01.236 [DEBUG] [Thread-117684] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:48:01.237 [DEBUG] [Thread-117684] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:48:01.237 [DEBUG] [Thread-117684] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:48:01.237 [DEBUG] [Thread-117684] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:48:01.237 [DEBUG] [Thread-117684] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:48:01.237 [DEBUG] [Thread-117684] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:48:01.237 [DEBUG] [Thread-117684] [transport.py] [_log()] client lang: <none>
2025-11-03T14:48:01.237 [DEBUG] [Thread-117684] [transport.py] [_log()] server lang: <none>
2025-11-03T14:48:01.237 [DEBUG] [Thread-117684] [transport.py] [_log()] kex follows: False
2025-11-03T14:48:01.237 [DEBUG] [Thread-117684] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:48:01.237 [DEBUG] [Thread-117684] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:48:01.237 [DEBUG] [Thread-117684] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:48:01.237 [DEBUG] [Thread-117684] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:48:01.237 [DEBUG] [Thread-117684] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:48:01.237 [DEBUG] [Thread-117684] [transport.py] [_log()] Compression: none
2025-11-03T14:48:01.237 [DEBUG] [Thread-117684] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:48:01.251 [DEBUG] [Thread-117684] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:48:01.252 [DEBUG] [Thread-117684] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:48:01.252 [DEBUG] [Thread-117684] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:48:01.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:48:01.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:48:01.252 [DEBUG] [Thread-117684] [transport.py] [_log()] userauth is OK
2025-11-03T14:48:01.252 [DEBUG] [Thread-117684] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:48:01.252 [DEBUG] [Thread-117684] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:48:01.252 [DEBUG] [Thread-117684] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:48:01.252 [DEBUG] [Thread-117684] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:48:01.261 [INFO] [Thread-117684] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:48:01.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:48:01.866 [DEBUG] [Thread-117684] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:48:01.866 [DEBUG] [Thread-117684] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:48:01.867 [DEBUG] [Thread-117684] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:48:01.907 [DEBUG] [Thread-117684] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:48:01.907 [DEBUG] [Thread-117684] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:48:01.911 [DEBUG] [Thread-117684] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:48:01.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:48:01.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:48:01.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:48:01.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:48:01.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:48:01.935 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:48:01.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:48:01.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:48:01.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:48:01.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.532742 -999.00  +27.20  23.62      7  -10.70 1 1 1 1 1   888    0 39.63 98.66 ----- 26.6 23.6 355.0 43.4 31.1 -31.0 30.5 -30.9 31.2 -29.2 32.1 -30.5
2025-11-03T14:48:01.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:48:01.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:48:01.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.532742
2025-11-03T14:48:01.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:48:01.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:48:01.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:48:01.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:48:01.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:48:01.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:47:31', tmtdew=48.93, humidity=2.99, cloud=0.0, wind=34.12, temperature=27.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:47:08.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:48:01.938 [DEBUG] [Thread-117684] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:48:02.022 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:48:02.033 [DEBUG] [Thread-117687] [transport.py] [_log()] starting thread (client mode): 0xed2e800
2025-11-03T14:48:02.034 [DEBUG] [Thread-117687] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:48:02.052 [DEBUG] [Thread-117687] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:48:02.052 [INFO] [Thread-117687] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:48:02.060 [DEBUG] [Thread-117687] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:48:02.060 [DEBUG] [Thread-117687] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:48:02.060 [DEBUG] [Thread-117687] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:48:02.060 [DEBUG] [Thread-117687] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:48:02.060 [DEBUG] [Thread-117687] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:48:02.060 [DEBUG] [Thread-117687] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:48:02.060 [DEBUG] [Thread-117687] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:48:02.061 [DEBUG] [Thread-117687] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:48:02.061 [DEBUG] [Thread-117687] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:48:02.061 [DEBUG] [Thread-117687] [transport.py] [_log()] client lang: <none>
2025-11-03T14:48:02.061 [DEBUG] [Thread-117687] [transport.py] [_log()] server lang: <none>
2025-11-03T14:48:02.061 [DEBUG] [Thread-117687] [transport.py] [_log()] kex follows: False
2025-11-03T14:48:02.061 [DEBUG] [Thread-117687] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:48:02.061 [DEBUG] [Thread-117687] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:48:02.061 [DEBUG] [Thread-117687] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:48:02.061 [DEBUG] [Thread-117687] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:48:02.061 [DEBUG] [Thread-117687] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:48:02.061 [DEBUG] [Thread-117687] [transport.py] [_log()] Compression: none
2025-11-03T14:48:02.061 [DEBUG] [Thread-117687] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:48:02.119 [DEBUG] [Thread-117687] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:48:02.119 [DEBUG] [Thread-117687] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:48:02.119 [DEBUG] [Thread-117687] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:48:02.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:48:02.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:48:02.181 [DEBUG] [Thread-117687] [transport.py] [_log()] userauth is OK
2025-11-03T14:48:02.182 [DEBUG] [Thread-117687] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:48:02.182 [DEBUG] [Thread-117687] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:48:02.182 [DEBUG] [Thread-117687] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:48:02.182 [DEBUG] [Thread-117687] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:48:02.196 [INFO] [Thread-117687] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:48:02.196 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:48:02.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:48:03.092 [DEBUG] [Thread-117687] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:48:03.093 [DEBUG] [Thread-117687] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:48:03.141 [DEBUG] [Thread-117687] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:48:03.142 [DEBUG] [Thread-117687] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:48:03.151 [DEBUG] [Thread-117687] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:48:03.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:48:03.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:48:03.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:48:03.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:48:03.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:48:03.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:48:03.188 [DEBUG] [Thread-117687] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:48:04.696 [DEBUG] [Thread-117689 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:48:12.865 [DEBUG] [Thread-117690 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:48:19.730 [DEBUG] [Thread-117691 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:48:33.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:48:33.210 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:48:33.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:48:33.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 48, 4), 48.5, 3.11, 0.0, 34.9, 27.07, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:48:33.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:48:04
2025-11-03T14:48:34.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:48:34.162 [DEBUG] [Thread-117692] [transport.py] [_log()] starting thread (client mode): 0xeda24d0
2025-11-03T14:48:34.162 [DEBUG] [Thread-117692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:48:34.183 [DEBUG] [Thread-117692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:48:34.183 [INFO] [Thread-117692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:48:34.186 [DEBUG] [Thread-117692] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:48:34.186 [DEBUG] [Thread-117692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:48:34.186 [DEBUG] [Thread-117692] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:48:34.186 [DEBUG] [Thread-117692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:48:34.186 [DEBUG] [Thread-117692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:48:34.186 [DEBUG] [Thread-117692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:48:34.186 [DEBUG] [Thread-117692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:48:34.186 [DEBUG] [Thread-117692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:48:34.186 [DEBUG] [Thread-117692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:48:34.186 [DEBUG] [Thread-117692] [transport.py] [_log()] client lang: <none>
2025-11-03T14:48:34.186 [DEBUG] [Thread-117692] [transport.py] [_log()] server lang: <none>
2025-11-03T14:48:34.187 [DEBUG] [Thread-117692] [transport.py] [_log()] kex follows: False
2025-11-03T14:48:34.187 [DEBUG] [Thread-117692] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:48:34.187 [DEBUG] [Thread-117692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:48:34.187 [DEBUG] [Thread-117692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:48:34.187 [DEBUG] [Thread-117692] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:48:34.187 [DEBUG] [Thread-117692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:48:34.187 [DEBUG] [Thread-117692] [transport.py] [_log()] Compression: none
2025-11-03T14:48:34.187 [DEBUG] [Thread-117692] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:48:34.202 [DEBUG] [Thread-117692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:48:34.202 [DEBUG] [Thread-117692] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:48:34.202 [DEBUG] [Thread-117692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:48:34.203 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:48:34.203 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:48:34.203 [DEBUG] [Thread-117692] [transport.py] [_log()] userauth is OK
2025-11-03T14:48:34.203 [DEBUG] [Thread-117692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:48:34.203 [DEBUG] [Thread-117692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:48:34.203 [DEBUG] [Thread-117692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:48:34.203 [DEBUG] [Thread-117692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:48:34.212 [INFO] [Thread-117692] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:48:34.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:48:34.768 [DEBUG] [Thread-117694 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:48:34.879 [DEBUG] [Thread-117692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:48:34.879 [DEBUG] [Thread-117692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:48:34.880 [DEBUG] [Thread-117692] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:48:34.920 [DEBUG] [Thread-117692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:48:34.920 [DEBUG] [Thread-117692] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:48:34.923 [DEBUG] [Thread-117692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:48:34.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:48:34.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:48:34.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:48:34.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:48:34.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:48:34.946 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:48:34.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:48:34.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:48:34.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:48:34.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.533089 -999.00  +26.80  28.61      7  -10.80 1 1 1 1 1   888    0 40.20 100.22 ----- 24.3 28.6 357.1 37.5 31.1 -33.5 30.4 -32.8 31.4 -30.1 31.8 -34.5
2025-11-03T14:48:34.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:48:34.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:48:34.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.533089
2025-11-03T14:48:34.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:48:34.955 [DEBUG] [Thread-117692] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:48:34.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:48:34.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:48:34.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:48:34.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:48:34.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:48:04', tmtdew=48.5, humidity=3.11, cloud=0.0, wind=34.9, temperature=27.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:47:38.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:48:35.040 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:48:35.054 [DEBUG] [Thread-117696] [transport.py] [_log()] starting thread (client mode): 0x11781750
2025-11-03T14:48:35.054 [DEBUG] [Thread-117696] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:48:35.068 [DEBUG] [Thread-117696] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:48:35.068 [INFO] [Thread-117696] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:48:35.076 [DEBUG] [Thread-117696] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:48:35.077 [DEBUG] [Thread-117696] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:48:35.077 [DEBUG] [Thread-117696] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:48:35.077 [DEBUG] [Thread-117696] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:48:35.077 [DEBUG] [Thread-117696] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:48:35.077 [DEBUG] [Thread-117696] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:48:35.077 [DEBUG] [Thread-117696] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:48:35.077 [DEBUG] [Thread-117696] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:48:35.077 [DEBUG] [Thread-117696] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:48:35.077 [DEBUG] [Thread-117696] [transport.py] [_log()] client lang: <none>
2025-11-03T14:48:35.078 [DEBUG] [Thread-117696] [transport.py] [_log()] server lang: <none>
2025-11-03T14:48:35.078 [DEBUG] [Thread-117696] [transport.py] [_log()] kex follows: False
2025-11-03T14:48:35.078 [DEBUG] [Thread-117696] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:48:35.078 [DEBUG] [Thread-117696] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:48:35.078 [DEBUG] [Thread-117696] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:48:35.078 [DEBUG] [Thread-117696] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:48:35.078 [DEBUG] [Thread-117696] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:48:35.078 [DEBUG] [Thread-117696] [transport.py] [_log()] Compression: none
2025-11-03T14:48:35.079 [DEBUG] [Thread-117696] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:48:35.141 [DEBUG] [Thread-117696] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:48:35.142 [DEBUG] [Thread-117696] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:48:35.142 [DEBUG] [Thread-117696] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:48:35.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:48:35.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:48:35.198 [DEBUG] [Thread-117696] [transport.py] [_log()] userauth is OK
2025-11-03T14:48:35.198 [DEBUG] [Thread-117696] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:48:35.199 [DEBUG] [Thread-117696] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:48:35.199 [DEBUG] [Thread-117696] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:48:35.199 [DEBUG] [Thread-117696] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:48:35.217 [INFO] [Thread-117696] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:48:35.217 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:48:35.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:48:36.066 [DEBUG] [Thread-117696] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:48:36.066 [DEBUG] [Thread-117696] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:48:36.115 [DEBUG] [Thread-117696] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:48:36.115 [DEBUG] [Thread-117696] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:48:36.126 [DEBUG] [Thread-117696] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:48:36.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:48:36.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:48:36.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:48:36.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:48:36.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:48:36.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:48:36.160 [DEBUG] [Thread-117696] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:48:49.796 [DEBUG] [Thread-117698 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:49:00.519 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:49:00.521 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:49:04.852 [DEBUG] [Thread-117699 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:49:06.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:49:06.179 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:49:06.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:49:06.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 48, 36), 48.05, 3.11, 0.0, 25.3, 26.87, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:49:06.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:48:36
2025-11-03T14:49:07.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:49:07.155 [DEBUG] [Thread-117700] [transport.py] [_log()] starting thread (client mode): 0x11780d60
2025-11-03T14:49:07.155 [DEBUG] [Thread-117700] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:49:07.175 [DEBUG] [Thread-117700] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:49:07.175 [INFO] [Thread-117700] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:49:07.178 [DEBUG] [Thread-117700] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:49:07.178 [DEBUG] [Thread-117700] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:49:07.178 [DEBUG] [Thread-117700] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:49:07.178 [DEBUG] [Thread-117700] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:49:07.178 [DEBUG] [Thread-117700] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:49:07.178 [DEBUG] [Thread-117700] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:49:07.178 [DEBUG] [Thread-117700] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:49:07.178 [DEBUG] [Thread-117700] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:49:07.178 [DEBUG] [Thread-117700] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:49:07.178 [DEBUG] [Thread-117700] [transport.py] [_log()] client lang: <none>
2025-11-03T14:49:07.178 [DEBUG] [Thread-117700] [transport.py] [_log()] server lang: <none>
2025-11-03T14:49:07.179 [DEBUG] [Thread-117700] [transport.py] [_log()] kex follows: False
2025-11-03T14:49:07.179 [DEBUG] [Thread-117700] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:49:07.179 [DEBUG] [Thread-117700] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:49:07.179 [DEBUG] [Thread-117700] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:49:07.179 [DEBUG] [Thread-117700] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:49:07.179 [DEBUG] [Thread-117700] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:49:07.179 [DEBUG] [Thread-117700] [transport.py] [_log()] Compression: none
2025-11-03T14:49:07.179 [DEBUG] [Thread-117700] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:49:07.200 [DEBUG] [Thread-117700] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:49:07.200 [DEBUG] [Thread-117700] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:49:07.201 [DEBUG] [Thread-117700] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:49:07.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:49:07.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:49:07.203 [DEBUG] [Thread-117700] [transport.py] [_log()] userauth is OK
2025-11-03T14:49:07.203 [DEBUG] [Thread-117700] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:49:07.203 [DEBUG] [Thread-117700] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:49:07.203 [DEBUG] [Thread-117700] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:49:07.203 [DEBUG] [Thread-117700] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:49:07.227 [INFO] [Thread-117700] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:49:07.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:49:07.896 [DEBUG] [Thread-117700] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:49:07.896 [DEBUG] [Thread-117700] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:49:07.896 [DEBUG] [Thread-117700] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:49:07.937 [DEBUG] [Thread-117700] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:49:07.937 [DEBUG] [Thread-117700] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:49:07.940 [DEBUG] [Thread-117700] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:49:07.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:49:07.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:49:07.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:49:07.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:49:07.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:49:07.969 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:49:07.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:49:07.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:49:07.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:49:07.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.533436 -999.00  +26.40  23.93      7  -10.60 1 1 1 1 1   888    0 39.86 100.61 ----- 24.5 23.9 1.9 32.1 30.9 -32.6 30.4 -32.5 31.3 -30.9 31.5 -36.0
2025-11-03T14:49:07.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:49:07.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:49:07.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.533436
2025-11-03T14:49:07.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:49:07.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:49:07.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:49:07.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:49:07.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:49:07.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:48:36', tmtdew=48.05, humidity=3.11, cloud=0.0, wind=25.3, temperature=26.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:48:08.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:49:07.970 [DEBUG] [Thread-117700] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:49:08.041 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:49:08.052 [DEBUG] [Thread-117703] [transport.py] [_log()] starting thread (client mode): 0xed2e4a0
2025-11-03T14:49:08.052 [DEBUG] [Thread-117703] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:49:08.068 [DEBUG] [Thread-117703] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:49:08.068 [INFO] [Thread-117703] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:49:08.075 [DEBUG] [Thread-117703] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:49:08.075 [DEBUG] [Thread-117703] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:49:08.075 [DEBUG] [Thread-117703] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:49:08.075 [DEBUG] [Thread-117703] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:49:08.075 [DEBUG] [Thread-117703] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:49:08.076 [DEBUG] [Thread-117703] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:49:08.076 [DEBUG] [Thread-117703] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:49:08.076 [DEBUG] [Thread-117703] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:49:08.076 [DEBUG] [Thread-117703] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:49:08.076 [DEBUG] [Thread-117703] [transport.py] [_log()] client lang: <none>
2025-11-03T14:49:08.076 [DEBUG] [Thread-117703] [transport.py] [_log()] server lang: <none>
2025-11-03T14:49:08.076 [DEBUG] [Thread-117703] [transport.py] [_log()] kex follows: False
2025-11-03T14:49:08.076 [DEBUG] [Thread-117703] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:49:08.076 [DEBUG] [Thread-117703] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:49:08.076 [DEBUG] [Thread-117703] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:49:08.076 [DEBUG] [Thread-117703] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:49:08.076 [DEBUG] [Thread-117703] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:49:08.076 [DEBUG] [Thread-117703] [transport.py] [_log()] Compression: none
2025-11-03T14:49:08.076 [DEBUG] [Thread-117703] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:49:08.132 [DEBUG] [Thread-117703] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:49:08.132 [DEBUG] [Thread-117703] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:49:08.132 [DEBUG] [Thread-117703] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:49:08.132 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:49:08.132 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:49:08.189 [DEBUG] [Thread-117703] [transport.py] [_log()] userauth is OK
2025-11-03T14:49:08.189 [DEBUG] [Thread-117703] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:49:08.189 [DEBUG] [Thread-117703] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:49:08.189 [DEBUG] [Thread-117703] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:49:08.189 [DEBUG] [Thread-117703] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:49:08.203 [INFO] [Thread-117703] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:49:08.204 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:49:08.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:49:09.070 [DEBUG] [Thread-117703] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:49:09.079 [DEBUG] [Thread-117703] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:49:09.118 [DEBUG] [Thread-117703] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:49:09.118 [DEBUG] [Thread-117703] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:49:09.127 [DEBUG] [Thread-117703] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:49:09.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:49:09.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:49:09.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:49:09.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:49:09.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:49:09.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:49:09.165 [DEBUG] [Thread-117703] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:49:13.169 [DEBUG] [Thread-117705 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:49:19.890 [DEBUG] [Thread-117706 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:49:34.949 [DEBUG] [Thread-117707 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:49:39.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:49:39.165 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:49:39.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:49:39.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 49, 8), 47.79, 3.17, 29.3, 31.95, 26.77, 0, 0, 0, 0, 0, 0),)
2025-11-03T14:49:39.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:49:08
2025-11-03T14:49:39.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:49:40.124 [DEBUG] [Thread-117708] [transport.py] [_log()] starting thread (client mode): 0xeda07c0
2025-11-03T14:49:40.124 [DEBUG] [Thread-117708] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:49:40.136 [DEBUG] [Thread-117708] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:49:40.136 [INFO] [Thread-117708] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:49:40.140 [DEBUG] [Thread-117708] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:49:40.140 [DEBUG] [Thread-117708] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:49:40.140 [DEBUG] [Thread-117708] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:49:40.140 [DEBUG] [Thread-117708] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:49:40.140 [DEBUG] [Thread-117708] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:49:40.140 [DEBUG] [Thread-117708] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:49:40.140 [DEBUG] [Thread-117708] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:49:40.140 [DEBUG] [Thread-117708] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:49:40.140 [DEBUG] [Thread-117708] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:49:40.140 [DEBUG] [Thread-117708] [transport.py] [_log()] client lang: <none>
2025-11-03T14:49:40.140 [DEBUG] [Thread-117708] [transport.py] [_log()] server lang: <none>
2025-11-03T14:49:40.140 [DEBUG] [Thread-117708] [transport.py] [_log()] kex follows: False
2025-11-03T14:49:40.140 [DEBUG] [Thread-117708] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:49:40.141 [DEBUG] [Thread-117708] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:49:40.141 [DEBUG] [Thread-117708] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:49:40.141 [DEBUG] [Thread-117708] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:49:40.141 [DEBUG] [Thread-117708] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:49:40.141 [DEBUG] [Thread-117708] [transport.py] [_log()] Compression: none
2025-11-03T14:49:40.141 [DEBUG] [Thread-117708] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:49:40.159 [DEBUG] [Thread-117708] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:49:40.159 [DEBUG] [Thread-117708] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:49:40.160 [DEBUG] [Thread-117708] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:49:40.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:49:40.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:49:40.162 [DEBUG] [Thread-117708] [transport.py] [_log()] userauth is OK
2025-11-03T14:49:40.162 [DEBUG] [Thread-117708] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:49:40.163 [DEBUG] [Thread-117708] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:49:40.163 [DEBUG] [Thread-117708] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:49:40.163 [DEBUG] [Thread-117708] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:49:40.187 [INFO] [Thread-117708] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:49:40.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:49:40.831 [DEBUG] [Thread-117708] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:49:40.831 [DEBUG] [Thread-117708] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:49:40.831 [DEBUG] [Thread-117708] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:49:40.871 [DEBUG] [Thread-117708] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:49:40.871 [DEBUG] [Thread-117708] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:49:40.874 [DEBUG] [Thread-117708] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:49:40.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:49:40.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:49:40.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:49:40.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:49:40.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:49:40.893 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:49:40.893 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:49:40.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:49:40.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:49:40.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.534131 -999.00  +26.00  42.93      8  -10.40 1 1 2 1 1   888    0 39.50 72.65 ----- 34.2 42.9 336.0 56.0 30.5 -32.3 30.1 -30.9 31.1 -30.7 31.5 -29.8
2025-11-03T14:49:40.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:49:40.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:49:40.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.534131
2025-11-03T14:49:40.902 [DEBUG] [Thread-117708] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:49:40.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:49:40.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:49:40.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:49:40.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:49:40.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:49:40.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:49:08', tmtdew=47.79, humidity=3.17, cloud=29.3, wind=31.95, temperature=26.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:49:08.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:49:40.974 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:49:40.986 [DEBUG] [Thread-117711] [transport.py] [_log()] starting thread (client mode): 0xeda3f40
2025-11-03T14:49:40.986 [DEBUG] [Thread-117711] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:49:41.003 [DEBUG] [Thread-117711] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:49:41.003 [INFO] [Thread-117711] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:49:41.010 [DEBUG] [Thread-117711] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:49:41.010 [DEBUG] [Thread-117711] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:49:41.010 [DEBUG] [Thread-117711] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:49:41.010 [DEBUG] [Thread-117711] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:49:41.010 [DEBUG] [Thread-117711] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:49:41.010 [DEBUG] [Thread-117711] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:49:41.010 [DEBUG] [Thread-117711] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:49:41.010 [DEBUG] [Thread-117711] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:49:41.010 [DEBUG] [Thread-117711] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:49:41.010 [DEBUG] [Thread-117711] [transport.py] [_log()] client lang: <none>
2025-11-03T14:49:41.010 [DEBUG] [Thread-117711] [transport.py] [_log()] server lang: <none>
2025-11-03T14:49:41.010 [DEBUG] [Thread-117711] [transport.py] [_log()] kex follows: False
2025-11-03T14:49:41.010 [DEBUG] [Thread-117711] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:49:41.010 [DEBUG] [Thread-117711] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:49:41.010 [DEBUG] [Thread-117711] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:49:41.010 [DEBUG] [Thread-117711] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:49:41.010 [DEBUG] [Thread-117711] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:49:41.010 [DEBUG] [Thread-117711] [transport.py] [_log()] Compression: none
2025-11-03T14:49:41.010 [DEBUG] [Thread-117711] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:49:41.068 [DEBUG] [Thread-117711] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:49:41.068 [DEBUG] [Thread-117711] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:49:41.068 [DEBUG] [Thread-117711] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:49:41.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:49:41.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:49:41.125 [DEBUG] [Thread-117711] [transport.py] [_log()] userauth is OK
2025-11-03T14:49:41.125 [DEBUG] [Thread-117711] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:49:41.125 [DEBUG] [Thread-117711] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:49:41.125 [DEBUG] [Thread-117711] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:49:41.125 [DEBUG] [Thread-117711] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:49:41.139 [INFO] [Thread-117711] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:49:41.139 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:49:41.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:49:42.007 [DEBUG] [Thread-117711] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:49:42.007 [DEBUG] [Thread-117711] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:49:42.055 [DEBUG] [Thread-117711] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:49:42.055 [DEBUG] [Thread-117711] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:49:42.063 [DEBUG] [Thread-117711] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:49:42.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:49:42.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:49:42.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:49:42.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:49:42.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:49:42.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:49:42.096 [DEBUG] [Thread-117711] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:49:49.986 [DEBUG] [Thread-117713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:50:00.660 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:50:00.662 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:50:05.043 [DEBUG] [Thread-117714 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:50:12.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:50:12.118 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:50:12.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:50:12.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 49, 41), 47.58, 3.17, 29.3, 36.38, 27.25, 0, 0, 0, 0, 0, 0),)
2025-11-03T14:50:12.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:49:41
2025-11-03T14:50:12.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:50:13.050 [DEBUG] [Thread-117715] [transport.py] [_log()] starting thread (client mode): 0x117e9960
2025-11-03T14:50:13.050 [DEBUG] [Thread-117715] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:50:13.071 [DEBUG] [Thread-117715] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:50:13.071 [INFO] [Thread-117715] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:50:13.074 [DEBUG] [Thread-117715] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:50:13.074 [DEBUG] [Thread-117715] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:50:13.075 [DEBUG] [Thread-117715] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:50:13.075 [DEBUG] [Thread-117715] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:50:13.075 [DEBUG] [Thread-117715] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:50:13.075 [DEBUG] [Thread-117715] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:50:13.075 [DEBUG] [Thread-117715] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:50:13.075 [DEBUG] [Thread-117715] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:50:13.075 [DEBUG] [Thread-117715] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:50:13.075 [DEBUG] [Thread-117715] [transport.py] [_log()] client lang: <none>
2025-11-03T14:50:13.075 [DEBUG] [Thread-117715] [transport.py] [_log()] server lang: <none>
2025-11-03T14:50:13.075 [DEBUG] [Thread-117715] [transport.py] [_log()] kex follows: False
2025-11-03T14:50:13.075 [DEBUG] [Thread-117715] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:50:13.075 [DEBUG] [Thread-117715] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:50:13.075 [DEBUG] [Thread-117715] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:50:13.075 [DEBUG] [Thread-117715] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:50:13.075 [DEBUG] [Thread-117715] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:50:13.075 [DEBUG] [Thread-117715] [transport.py] [_log()] Compression: none
2025-11-03T14:50:13.075 [DEBUG] [Thread-117715] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:50:13.092 [DEBUG] [Thread-117715] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:50:13.093 [DEBUG] [Thread-117715] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:50:13.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:50:13.094 [DEBUG] [Thread-117715] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:50:13.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:50:13.096 [DEBUG] [Thread-117715] [transport.py] [_log()] userauth is OK
2025-11-03T14:50:13.096 [DEBUG] [Thread-117715] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:50:13.096 [DEBUG] [Thread-117715] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:50:13.096 [DEBUG] [Thread-117715] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:50:13.096 [DEBUG] [Thread-117715] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:50:13.120 [INFO] [Thread-117715] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:50:13.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:50:13.225 [DEBUG] [Thread-117717 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:50:20.073 [DEBUG] [Thread-117718 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:50:21.397 [DEBUG] [Thread-117715] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:50:21.406 [DEBUG] [Thread-117715] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:50:21.407 [DEBUG] [Thread-117715] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:50:21.438 [DEBUG] [Thread-117715] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:50:21.439 [DEBUG] [Thread-117715] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:50:21.442 [DEBUG] [Thread-117715] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:50:21.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:50:21.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:50:21.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:50:21.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:50:21.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:50:21.466 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:50:21.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:50:21.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:50:21.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:50:21.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.534478 -999.00  +26.60  41.74      8  -10.30 1 1 2 1 1   888    0 39.00 65.35 ----- 31.8 41.7 331.2 53.4 30.7 -30.7 30.3 -29.6 31.2 -29.7 31.7 -29.3
2025-11-03T14:50:21.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:50:21.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:50:21.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.534478
2025-11-03T14:50:21.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:50:21.469 [DEBUG] [Thread-117715] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:50:21.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:50:21.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:50:21.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:50:21.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:50:21.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:49:41', tmtdew=47.58, humidity=3.17, cloud=29.3, wind=36.38, temperature=27.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:49:38.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:50:21.554 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:50:21.567 [DEBUG] [Thread-117720] [transport.py] [_log()] starting thread (client mode): 0x117ea620
2025-11-03T14:50:21.567 [DEBUG] [Thread-117720] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:50:21.582 [DEBUG] [Thread-117720] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:50:21.582 [INFO] [Thread-117720] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:50:21.593 [DEBUG] [Thread-117720] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:50:21.594 [DEBUG] [Thread-117720] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:50:21.594 [DEBUG] [Thread-117720] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:50:21.594 [DEBUG] [Thread-117720] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:50:21.594 [DEBUG] [Thread-117720] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:50:21.594 [DEBUG] [Thread-117720] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:50:21.594 [DEBUG] [Thread-117720] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:50:21.594 [DEBUG] [Thread-117720] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:50:21.594 [DEBUG] [Thread-117720] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:50:21.594 [DEBUG] [Thread-117720] [transport.py] [_log()] client lang: <none>
2025-11-03T14:50:21.594 [DEBUG] [Thread-117720] [transport.py] [_log()] server lang: <none>
2025-11-03T14:50:21.594 [DEBUG] [Thread-117720] [transport.py] [_log()] kex follows: False
2025-11-03T14:50:21.594 [DEBUG] [Thread-117720] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:50:21.595 [DEBUG] [Thread-117720] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:50:21.595 [DEBUG] [Thread-117720] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:50:21.595 [DEBUG] [Thread-117720] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:50:21.595 [DEBUG] [Thread-117720] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:50:21.595 [DEBUG] [Thread-117720] [transport.py] [_log()] Compression: none
2025-11-03T14:50:21.595 [DEBUG] [Thread-117720] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:50:21.658 [DEBUG] [Thread-117720] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:50:21.659 [DEBUG] [Thread-117720] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:50:21.659 [DEBUG] [Thread-117720] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:50:21.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:50:21.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:50:21.718 [DEBUG] [Thread-117720] [transport.py] [_log()] userauth is OK
2025-11-03T14:50:21.718 [DEBUG] [Thread-117720] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:50:21.718 [DEBUG] [Thread-117720] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:50:21.718 [DEBUG] [Thread-117720] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:50:21.718 [DEBUG] [Thread-117720] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:50:21.737 [INFO] [Thread-117720] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:50:21.747 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:50:21.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:50:22.589 [DEBUG] [Thread-117720] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:50:22.589 [DEBUG] [Thread-117720] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:50:22.637 [DEBUG] [Thread-117720] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:50:22.637 [DEBUG] [Thread-117720] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:50:22.646 [DEBUG] [Thread-117720] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:50:22.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:50:22.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:50:22.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:50:22.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:50:22.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:50:22.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:50:22.684 [DEBUG] [Thread-117720] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:50:35.122 [DEBUG] [Thread-117722 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:50:50.173 [DEBUG] [Thread-117723 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:50:52.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:50:52.705 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:50:52.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:50:53.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 50, 45), 47.57, 3.19, 29.3, 38.82, 27.32, 0, 0, 0, 0, 0, 0),)
2025-11-03T14:50:53.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:50:45
2025-11-03T14:50:53.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:50:53.728 [DEBUG] [Thread-117724] [transport.py] [_log()] starting thread (client mode): 0x117981c0
2025-11-03T14:50:53.728 [DEBUG] [Thread-117724] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:50:53.748 [DEBUG] [Thread-117724] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:50:53.748 [INFO] [Thread-117724] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:50:53.751 [DEBUG] [Thread-117724] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:50:53.751 [DEBUG] [Thread-117724] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:50:53.751 [DEBUG] [Thread-117724] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:50:53.751 [DEBUG] [Thread-117724] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:50:53.751 [DEBUG] [Thread-117724] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:50:53.751 [DEBUG] [Thread-117724] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:50:53.751 [DEBUG] [Thread-117724] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:50:53.751 [DEBUG] [Thread-117724] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:50:53.751 [DEBUG] [Thread-117724] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:50:53.751 [DEBUG] [Thread-117724] [transport.py] [_log()] client lang: <none>
2025-11-03T14:50:53.751 [DEBUG] [Thread-117724] [transport.py] [_log()] server lang: <none>
2025-11-03T14:50:53.751 [DEBUG] [Thread-117724] [transport.py] [_log()] kex follows: False
2025-11-03T14:50:53.751 [DEBUG] [Thread-117724] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:50:53.751 [DEBUG] [Thread-117724] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:50:53.751 [DEBUG] [Thread-117724] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:50:53.751 [DEBUG] [Thread-117724] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:50:53.751 [DEBUG] [Thread-117724] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:50:53.751 [DEBUG] [Thread-117724] [transport.py] [_log()] Compression: none
2025-11-03T14:50:53.752 [DEBUG] [Thread-117724] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:50:53.770 [DEBUG] [Thread-117724] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:50:53.771 [DEBUG] [Thread-117724] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:50:53.772 [DEBUG] [Thread-117724] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:50:53.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:50:53.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:50:53.773 [DEBUG] [Thread-117724] [transport.py] [_log()] userauth is OK
2025-11-03T14:50:53.774 [DEBUG] [Thread-117724] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:50:53.774 [DEBUG] [Thread-117724] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:50:53.774 [DEBUG] [Thread-117724] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:50:53.774 [DEBUG] [Thread-117724] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:50:53.810 [INFO] [Thread-117724] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:50:53.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:50:54.416 [DEBUG] [Thread-117724] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:50:54.416 [DEBUG] [Thread-117724] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:50:54.416 [DEBUG] [Thread-117724] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:50:54.458 [DEBUG] [Thread-117724] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:50:54.458 [DEBUG] [Thread-117724] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:50:54.460 [DEBUG] [Thread-117724] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:50:54.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:50:54.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:50:54.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:50:54.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:50:54.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:50:54.481 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:50:54.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:50:54.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:50:54.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:50:54.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.534825 -999.00  +27.60  34.21      7   -9.70 1 1 2 1 1   888    0 38.77 56.82 ----- 31.6 34.2 333.6 48.0 30.9 -30.1 30.5 -29.4 31.3 -29.9 32.0 -29.4
2025-11-03T14:50:54.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:50:54.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:50:54.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.534825
2025-11-03T14:50:54.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:50:54.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:50:54.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:50:54.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:50:54.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:50:54.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:50:45', tmtdew=47.57, humidity=3.19, cloud=29.3, wind=38.82, temperature=27.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:50:08.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:50:54.482 [DEBUG] [Thread-117724] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:50:54.553 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:50:54.564 [DEBUG] [Thread-117727] [transport.py] [_log()] starting thread (client mode): 0x1179bb50
2025-11-03T14:50:54.564 [DEBUG] [Thread-117727] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:50:54.579 [DEBUG] [Thread-117727] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:50:54.580 [INFO] [Thread-117727] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:50:54.587 [DEBUG] [Thread-117727] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:50:54.587 [DEBUG] [Thread-117727] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:50:54.587 [DEBUG] [Thread-117727] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:50:54.587 [DEBUG] [Thread-117727] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:50:54.587 [DEBUG] [Thread-117727] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:50:54.587 [DEBUG] [Thread-117727] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:50:54.587 [DEBUG] [Thread-117727] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:50:54.587 [DEBUG] [Thread-117727] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:50:54.587 [DEBUG] [Thread-117727] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:50:54.587 [DEBUG] [Thread-117727] [transport.py] [_log()] client lang: <none>
2025-11-03T14:50:54.587 [DEBUG] [Thread-117727] [transport.py] [_log()] server lang: <none>
2025-11-03T14:50:54.587 [DEBUG] [Thread-117727] [transport.py] [_log()] kex follows: False
2025-11-03T14:50:54.587 [DEBUG] [Thread-117727] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:50:54.587 [DEBUG] [Thread-117727] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:50:54.587 [DEBUG] [Thread-117727] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:50:54.588 [DEBUG] [Thread-117727] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:50:54.588 [DEBUG] [Thread-117727] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:50:54.588 [DEBUG] [Thread-117727] [transport.py] [_log()] Compression: none
2025-11-03T14:50:54.588 [DEBUG] [Thread-117727] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:50:54.644 [DEBUG] [Thread-117727] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:50:54.644 [DEBUG] [Thread-117727] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:50:54.644 [DEBUG] [Thread-117727] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:50:54.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:50:54.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:50:54.701 [DEBUG] [Thread-117727] [transport.py] [_log()] userauth is OK
2025-11-03T14:50:54.701 [DEBUG] [Thread-117727] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:50:54.701 [DEBUG] [Thread-117727] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:50:54.701 [DEBUG] [Thread-117727] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:50:54.701 [DEBUG] [Thread-117727] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:50:54.715 [INFO] [Thread-117727] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:50:54.715 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:50:54.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:50:55.573 [DEBUG] [Thread-117727] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:50:55.574 [DEBUG] [Thread-117727] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:50:55.622 [DEBUG] [Thread-117727] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:50:55.622 [DEBUG] [Thread-117727] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:50:55.631 [DEBUG] [Thread-117727] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:50:55.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:50:55.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:50:55.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:50:55.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:50:55.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:50:55.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:50:55.668 [DEBUG] [Thread-117727] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:51:00.803 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:51:00.804 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:51:05.205 [DEBUG] [Thread-117729 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:51:13.263 [DEBUG] [Thread-117730 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:51:20.256 [DEBUG] [Thread-117731 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:51:25.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:51:25.690 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:51:25.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:51:26.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 51, 17), 47.79, 3.14, 29.3, 44.67, 27.45, 0, 0, 0, 0, 0, 0),)
2025-11-03T14:51:26.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:51:17
2025-11-03T14:51:26.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:51:26.788 [DEBUG] [Thread-117732] [transport.py] [_log()] starting thread (client mode): 0x117ead10
2025-11-03T14:51:26.788 [DEBUG] [Thread-117732] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:51:26.808 [DEBUG] [Thread-117732] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:51:26.809 [INFO] [Thread-117732] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:51:26.812 [DEBUG] [Thread-117732] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:51:26.812 [DEBUG] [Thread-117732] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:51:26.812 [DEBUG] [Thread-117732] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:51:26.812 [DEBUG] [Thread-117732] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:51:26.812 [DEBUG] [Thread-117732] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:51:26.812 [DEBUG] [Thread-117732] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:51:26.812 [DEBUG] [Thread-117732] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:51:26.812 [DEBUG] [Thread-117732] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:51:26.812 [DEBUG] [Thread-117732] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:51:26.812 [DEBUG] [Thread-117732] [transport.py] [_log()] client lang: <none>
2025-11-03T14:51:26.812 [DEBUG] [Thread-117732] [transport.py] [_log()] server lang: <none>
2025-11-03T14:51:26.812 [DEBUG] [Thread-117732] [transport.py] [_log()] kex follows: False
2025-11-03T14:51:26.812 [DEBUG] [Thread-117732] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:51:26.812 [DEBUG] [Thread-117732] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:51:26.812 [DEBUG] [Thread-117732] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:51:26.812 [DEBUG] [Thread-117732] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:51:26.812 [DEBUG] [Thread-117732] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:51:26.812 [DEBUG] [Thread-117732] [transport.py] [_log()] Compression: none
2025-11-03T14:51:26.812 [DEBUG] [Thread-117732] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:51:26.828 [DEBUG] [Thread-117732] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:51:26.828 [DEBUG] [Thread-117732] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:51:26.828 [DEBUG] [Thread-117732] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:51:26.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:51:26.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:51:26.829 [DEBUG] [Thread-117732] [transport.py] [_log()] userauth is OK
2025-11-03T14:51:26.829 [DEBUG] [Thread-117732] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:51:26.829 [DEBUG] [Thread-117732] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:51:26.829 [DEBUG] [Thread-117732] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:51:26.829 [DEBUG] [Thread-117732] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:51:26.843 [INFO] [Thread-117732] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:51:26.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:51:27.585 [DEBUG] [Thread-117732] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:51:27.586 [DEBUG] [Thread-117732] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:51:27.586 [DEBUG] [Thread-117732] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:51:27.626 [DEBUG] [Thread-117732] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:51:27.627 [DEBUG] [Thread-117732] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:51:27.628 [DEBUG] [Thread-117732] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:51:27.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:51:27.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:51:27.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:51:27.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:51:27.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:51:27.645 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:51:27.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:51:27.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:51:27.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:51:27.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.535173 -999.00  +27.80  42.55      7   -9.70 1 1 2 1 1   888    0 38.73 56.69 ----- 42.4 42.5 321.6 47.8 31.0 -30.8 30.6 -30.4 31.4 -29.5 32.1 -30.6
2025-11-03T14:51:27.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:51:27.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:51:27.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.535173
2025-11-03T14:51:27.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:51:27.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:51:27.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:51:27.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:51:27.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:51:27.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:51:17', tmtdew=47.79, humidity=3.14, cloud=29.3, wind=44.67, temperature=27.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:50:38.947', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:51:27.647 [DEBUG] [Thread-117732] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:51:27.721 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:51:27.733 [DEBUG] [Thread-117735] [transport.py] [_log()] starting thread (client mode): 0x11781e10
2025-11-03T14:51:27.733 [DEBUG] [Thread-117735] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:51:27.748 [DEBUG] [Thread-117735] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:51:27.748 [INFO] [Thread-117735] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:51:27.755 [DEBUG] [Thread-117735] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:51:27.755 [DEBUG] [Thread-117735] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:51:27.755 [DEBUG] [Thread-117735] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:51:27.755 [DEBUG] [Thread-117735] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:51:27.755 [DEBUG] [Thread-117735] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:51:27.755 [DEBUG] [Thread-117735] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:51:27.755 [DEBUG] [Thread-117735] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:51:27.756 [DEBUG] [Thread-117735] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:51:27.756 [DEBUG] [Thread-117735] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:51:27.756 [DEBUG] [Thread-117735] [transport.py] [_log()] client lang: <none>
2025-11-03T14:51:27.756 [DEBUG] [Thread-117735] [transport.py] [_log()] server lang: <none>
2025-11-03T14:51:27.756 [DEBUG] [Thread-117735] [transport.py] [_log()] kex follows: False
2025-11-03T14:51:27.756 [DEBUG] [Thread-117735] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:51:27.756 [DEBUG] [Thread-117735] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:51:27.756 [DEBUG] [Thread-117735] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:51:27.756 [DEBUG] [Thread-117735] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:51:27.756 [DEBUG] [Thread-117735] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:51:27.756 [DEBUG] [Thread-117735] [transport.py] [_log()] Compression: none
2025-11-03T14:51:27.756 [DEBUG] [Thread-117735] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:51:27.816 [DEBUG] [Thread-117735] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:51:27.816 [DEBUG] [Thread-117735] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:51:27.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:51:27.817 [DEBUG] [Thread-117735] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:51:27.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:51:27.873 [DEBUG] [Thread-117735] [transport.py] [_log()] userauth is OK
2025-11-03T14:51:27.873 [DEBUG] [Thread-117735] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:51:27.873 [DEBUG] [Thread-117735] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:51:27.873 [DEBUG] [Thread-117735] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:51:27.873 [DEBUG] [Thread-117735] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:51:27.888 [INFO] [Thread-117735] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:51:27.888 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:51:27.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:51:28.808 [DEBUG] [Thread-117735] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:51:28.808 [DEBUG] [Thread-117735] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:51:28.855 [DEBUG] [Thread-117735] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:51:28.855 [DEBUG] [Thread-117735] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:51:28.863 [DEBUG] [Thread-117735] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:51:28.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:51:28.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:51:28.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:51:28.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:51:28.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:51:28.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:51:28.895 [DEBUG] [Thread-117735] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:51:35.289 [DEBUG] [Thread-117737 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:51:50.347 [DEBUG] [Thread-117738 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:51:58.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:51:58.918 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:51:58.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:51:59.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 51, 50), 47.24, 3.64, 29.3, 40.93, 26.9, 0, 0, 0, 0, 0, 0),)
2025-11-03T14:51:59.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:51:50
2025-11-03T14:51:59.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:51:59.886 [DEBUG] [Thread-117739] [transport.py] [_log()] starting thread (client mode): 0x117821a0
2025-11-03T14:51:59.886 [DEBUG] [Thread-117739] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:51:59.906 [DEBUG] [Thread-117739] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:51:59.906 [INFO] [Thread-117739] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:51:59.909 [DEBUG] [Thread-117739] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:51:59.910 [DEBUG] [Thread-117739] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:51:59.910 [DEBUG] [Thread-117739] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:51:59.910 [DEBUG] [Thread-117739] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:51:59.910 [DEBUG] [Thread-117739] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:51:59.910 [DEBUG] [Thread-117739] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:51:59.910 [DEBUG] [Thread-117739] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:51:59.910 [DEBUG] [Thread-117739] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:51:59.910 [DEBUG] [Thread-117739] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:51:59.910 [DEBUG] [Thread-117739] [transport.py] [_log()] client lang: <none>
2025-11-03T14:51:59.910 [DEBUG] [Thread-117739] [transport.py] [_log()] server lang: <none>
2025-11-03T14:51:59.910 [DEBUG] [Thread-117739] [transport.py] [_log()] kex follows: False
2025-11-03T14:51:59.910 [DEBUG] [Thread-117739] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:51:59.910 [DEBUG] [Thread-117739] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:51:59.910 [DEBUG] [Thread-117739] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:51:59.910 [DEBUG] [Thread-117739] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:51:59.910 [DEBUG] [Thread-117739] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:51:59.910 [DEBUG] [Thread-117739] [transport.py] [_log()] Compression: none
2025-11-03T14:51:59.910 [DEBUG] [Thread-117739] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:51:59.930 [DEBUG] [Thread-117739] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:51:59.940 [DEBUG] [Thread-117739] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:51:59.941 [DEBUG] [Thread-117739] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:51:59.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:51:59.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:51:59.943 [DEBUG] [Thread-117739] [transport.py] [_log()] userauth is OK
2025-11-03T14:51:59.943 [DEBUG] [Thread-117739] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:51:59.944 [DEBUG] [Thread-117739] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:51:59.944 [DEBUG] [Thread-117739] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:51:59.944 [DEBUG] [Thread-117739] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:51:59.979 [INFO] [Thread-117739] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:51:59.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:52:00.646 [DEBUG] [Thread-117739] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:52:00.646 [DEBUG] [Thread-117739] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:52:00.646 [DEBUG] [Thread-117739] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:52:00.688 [DEBUG] [Thread-117739] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:52:00.688 [DEBUG] [Thread-117739] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:52:00.690 [DEBUG] [Thread-117739] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:52:00.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:52:00.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:52:00.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:52:00.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:52:00.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:52:00.710 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:52:00.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:52:00.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:52:00.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:52:00.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.535520 -999.00  +27.20  27.94      8   -9.80 1 1 1 1 1   888    0 38.43 49.83 ----- 37.1 27.9 319.0 57.1 31.0 -31.9 30.6 -31.0 31.4 -31.8 32.0 -30.6
2025-11-03T14:52:00.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:52:00.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:52:00.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.535520
2025-11-03T14:52:00.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:52:00.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:52:00.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:52:00.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:52:00.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:52:00.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:51:50', tmtdew=47.24, humidity=3.64, cloud=29.3, wind=40.93, temperature=26.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:51:08.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:52:00.711 [DEBUG] [Thread-117739] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:52:00.783 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:52:00.792 [DEBUG] [Thread-117742] [transport.py] [_log()] starting thread (client mode): 0x117e85e0
2025-11-03T14:52:00.792 [DEBUG] [Thread-117742] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:52:00.807 [DEBUG] [Thread-117742] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:52:00.808 [INFO] [Thread-117742] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:52:00.815 [DEBUG] [Thread-117742] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:52:00.815 [DEBUG] [Thread-117742] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:52:00.815 [DEBUG] [Thread-117742] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:52:00.815 [DEBUG] [Thread-117742] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:52:00.815 [DEBUG] [Thread-117742] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:52:00.815 [DEBUG] [Thread-117742] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:52:00.815 [DEBUG] [Thread-117742] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:52:00.815 [DEBUG] [Thread-117742] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:52:00.815 [DEBUG] [Thread-117742] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:52:00.815 [DEBUG] [Thread-117742] [transport.py] [_log()] client lang: <none>
2025-11-03T14:52:00.815 [DEBUG] [Thread-117742] [transport.py] [_log()] server lang: <none>
2025-11-03T14:52:00.815 [DEBUG] [Thread-117742] [transport.py] [_log()] kex follows: False
2025-11-03T14:52:00.815 [DEBUG] [Thread-117742] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:52:00.815 [DEBUG] [Thread-117742] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:52:00.816 [DEBUG] [Thread-117742] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:52:00.816 [DEBUG] [Thread-117742] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:52:00.816 [DEBUG] [Thread-117742] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:52:00.816 [DEBUG] [Thread-117742] [transport.py] [_log()] Compression: none
2025-11-03T14:52:00.816 [DEBUG] [Thread-117742] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:52:00.872 [DEBUG] [Thread-117742] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:52:00.872 [DEBUG] [Thread-117742] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:52:00.872 [DEBUG] [Thread-117742] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:52:00.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:52:00.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:52:00.930 [DEBUG] [Thread-117742] [transport.py] [_log()] userauth is OK
2025-11-03T14:52:00.930 [DEBUG] [Thread-117742] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:52:00.931 [DEBUG] [Thread-117742] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:52:00.931 [DEBUG] [Thread-117742] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:52:00.931 [DEBUG] [Thread-117742] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:52:00.944 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:52:00.945 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:52:00.954 [INFO] [Thread-117742] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:52:00.955 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:52:00.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:52:01.834 [DEBUG] [Thread-117742] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:52:01.835 [DEBUG] [Thread-117742] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:52:01.882 [DEBUG] [Thread-117742] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:52:01.882 [DEBUG] [Thread-117742] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:52:01.890 [DEBUG] [Thread-117742] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:52:01.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:52:01.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:52:01.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:52:01.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:52:01.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:52:01.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:52:01.922 [DEBUG] [Thread-117742] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:52:05.387 [DEBUG] [Thread-117744 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:52:13.477 [DEBUG] [Thread-117745 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:52:20.429 [DEBUG] [Thread-117746 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:52:31.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:52:31.921 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:52:31.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:52:32.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 52, 22), 46.91, 3.7, 29.3, 39.68, 26.59, 0, 0, 0, 0, 0, 0),)
2025-11-03T14:52:32.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:52:22
2025-11-03T14:52:32.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:52:32.921 [DEBUG] [Thread-117747] [transport.py] [_log()] starting thread (client mode): 0x117820e0
2025-11-03T14:52:32.921 [DEBUG] [Thread-117747] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:52:32.942 [DEBUG] [Thread-117747] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:52:32.942 [INFO] [Thread-117747] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:52:32.945 [DEBUG] [Thread-117747] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:52:32.945 [DEBUG] [Thread-117747] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:52:32.945 [DEBUG] [Thread-117747] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:52:32.945 [DEBUG] [Thread-117747] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:52:32.945 [DEBUG] [Thread-117747] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:52:32.945 [DEBUG] [Thread-117747] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:52:32.945 [DEBUG] [Thread-117747] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:52:32.945 [DEBUG] [Thread-117747] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:52:32.945 [DEBUG] [Thread-117747] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:52:32.945 [DEBUG] [Thread-117747] [transport.py] [_log()] client lang: <none>
2025-11-03T14:52:32.945 [DEBUG] [Thread-117747] [transport.py] [_log()] server lang: <none>
2025-11-03T14:52:32.945 [DEBUG] [Thread-117747] [transport.py] [_log()] kex follows: False
2025-11-03T14:52:32.946 [DEBUG] [Thread-117747] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:52:32.946 [DEBUG] [Thread-117747] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:52:32.946 [DEBUG] [Thread-117747] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:52:32.946 [DEBUG] [Thread-117747] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:52:32.946 [DEBUG] [Thread-117747] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:52:32.946 [DEBUG] [Thread-117747] [transport.py] [_log()] Compression: none
2025-11-03T14:52:32.946 [DEBUG] [Thread-117747] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:52:32.963 [DEBUG] [Thread-117747] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:52:32.964 [DEBUG] [Thread-117747] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:52:32.965 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:52:32.965 [DEBUG] [Thread-117747] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:52:32.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:52:32.967 [DEBUG] [Thread-117747] [transport.py] [_log()] userauth is OK
2025-11-03T14:52:32.968 [DEBUG] [Thread-117747] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:52:32.968 [DEBUG] [Thread-117747] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:52:32.968 [DEBUG] [Thread-117747] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:52:32.968 [DEBUG] [Thread-117747] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:52:32.992 [INFO] [Thread-117747] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:52:33.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:52:33.746 [DEBUG] [Thread-117747] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:52:33.755 [DEBUG] [Thread-117747] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:52:33.755 [DEBUG] [Thread-117747] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:52:33.787 [DEBUG] [Thread-117747] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:52:33.787 [DEBUG] [Thread-117747] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:52:33.790 [DEBUG] [Thread-117747] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:52:33.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:52:33.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:52:33.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:52:33.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:52:33.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:52:33.812 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:52:33.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:52:33.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:52:33.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:52:33.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.535867 -999.00  +26.30  48.22      8  -10.20 1 1 2 1 1   888    0 38.08 40.61 ----- 35.6 48.2 321.2 58.0 30.9 -32.2 30.4 -31.6 31.4 -31.1 32.0 -30.3
2025-11-03T14:52:33.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:52:33.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:52:33.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.535867
2025-11-03T14:52:33.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:52:33.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:52:33.815 [DEBUG] [Thread-117747] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:52:33.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:52:33.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:52:33.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:52:33.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:52:22', tmtdew=46.91, humidity=3.7, cloud=29.3, wind=39.68, temperature=26.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:51:38.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:52:33.895 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:52:33.908 [DEBUG] [Thread-117750] [transport.py] [_log()] starting thread (client mode): 0x1174eb90
2025-11-03T14:52:33.908 [DEBUG] [Thread-117750] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:52:33.922 [DEBUG] [Thread-117750] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:52:33.922 [INFO] [Thread-117750] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:52:33.930 [DEBUG] [Thread-117750] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:52:33.930 [DEBUG] [Thread-117750] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:52:33.930 [DEBUG] [Thread-117750] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:52:33.930 [DEBUG] [Thread-117750] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:52:33.930 [DEBUG] [Thread-117750] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:52:33.930 [DEBUG] [Thread-117750] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:52:33.930 [DEBUG] [Thread-117750] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:52:33.930 [DEBUG] [Thread-117750] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:52:33.930 [DEBUG] [Thread-117750] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:52:33.930 [DEBUG] [Thread-117750] [transport.py] [_log()] client lang: <none>
2025-11-03T14:52:33.930 [DEBUG] [Thread-117750] [transport.py] [_log()] server lang: <none>
2025-11-03T14:52:33.930 [DEBUG] [Thread-117750] [transport.py] [_log()] kex follows: False
2025-11-03T14:52:33.930 [DEBUG] [Thread-117750] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:52:33.930 [DEBUG] [Thread-117750] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:52:33.931 [DEBUG] [Thread-117750] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:52:33.931 [DEBUG] [Thread-117750] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:52:33.931 [DEBUG] [Thread-117750] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:52:33.931 [DEBUG] [Thread-117750] [transport.py] [_log()] Compression: none
2025-11-03T14:52:33.931 [DEBUG] [Thread-117750] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:52:33.990 [DEBUG] [Thread-117750] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:52:33.991 [DEBUG] [Thread-117750] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:52:33.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:52:33.992 [DEBUG] [Thread-117750] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:52:33.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:52:34.046 [DEBUG] [Thread-117750] [transport.py] [_log()] userauth is OK
2025-11-03T14:52:34.046 [DEBUG] [Thread-117750] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:52:34.046 [DEBUG] [Thread-117750] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:52:34.046 [DEBUG] [Thread-117750] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:52:34.047 [DEBUG] [Thread-117750] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:52:34.068 [INFO] [Thread-117750] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:52:34.068 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:52:34.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:52:34.943 [DEBUG] [Thread-117750] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:52:34.943 [DEBUG] [Thread-117750] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:52:34.991 [DEBUG] [Thread-117750] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:52:34.992 [DEBUG] [Thread-117750] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:52:35.001 [DEBUG] [Thread-117750] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:52:35.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:52:35.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:52:35.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:52:35.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:52:35.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:52:35.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:52:35.040 [DEBUG] [Thread-117750] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:52:35.479 [DEBUG] [Thread-117752 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:52:50.529 [DEBUG] [Thread-117753 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:53:01.098 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:53:01.099 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:53:05.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:53:05.060 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:53:05.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:53:05.560 [DEBUG] [Thread-117754 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:53:05.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 52, 54), 46.75, 3.75, 29.3, 30.77, 26.6, 0, 0, 0, 0, 0, 0),)
2025-11-03T14:53:05.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:52:54
2025-11-03T14:53:05.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:53:06.019 [DEBUG] [Thread-117755] [transport.py] [_log()] starting thread (client mode): 0x81b9690
2025-11-03T14:53:06.019 [DEBUG] [Thread-117755] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:53:06.033 [DEBUG] [Thread-117755] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:53:06.033 [INFO] [Thread-117755] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:53:06.043 [DEBUG] [Thread-117755] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:53:06.043 [DEBUG] [Thread-117755] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:53:06.043 [DEBUG] [Thread-117755] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:53:06.043 [DEBUG] [Thread-117755] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:53:06.043 [DEBUG] [Thread-117755] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:53:06.043 [DEBUG] [Thread-117755] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:53:06.043 [DEBUG] [Thread-117755] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:53:06.043 [DEBUG] [Thread-117755] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:53:06.043 [DEBUG] [Thread-117755] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:53:06.043 [DEBUG] [Thread-117755] [transport.py] [_log()] client lang: <none>
2025-11-03T14:53:06.043 [DEBUG] [Thread-117755] [transport.py] [_log()] server lang: <none>
2025-11-03T14:53:06.043 [DEBUG] [Thread-117755] [transport.py] [_log()] kex follows: False
2025-11-03T14:53:06.043 [DEBUG] [Thread-117755] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:53:06.044 [DEBUG] [Thread-117755] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:53:06.044 [DEBUG] [Thread-117755] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:53:06.044 [DEBUG] [Thread-117755] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:53:06.044 [DEBUG] [Thread-117755] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:53:06.044 [DEBUG] [Thread-117755] [transport.py] [_log()] Compression: none
2025-11-03T14:53:06.044 [DEBUG] [Thread-117755] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:53:06.061 [DEBUG] [Thread-117755] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:53:06.062 [DEBUG] [Thread-117755] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:53:06.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:53:06.063 [DEBUG] [Thread-117755] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:53:06.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:53:06.065 [DEBUG] [Thread-117755] [transport.py] [_log()] userauth is OK
2025-11-03T14:53:06.065 [DEBUG] [Thread-117755] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:53:06.065 [DEBUG] [Thread-117755] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:53:06.065 [DEBUG] [Thread-117755] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:53:06.065 [DEBUG] [Thread-117755] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:53:06.089 [INFO] [Thread-117755] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:53:06.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:53:06.692 [DEBUG] [Thread-117755] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:53:06.693 [DEBUG] [Thread-117755] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:53:06.693 [DEBUG] [Thread-117755] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:53:06.734 [DEBUG] [Thread-117755] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:53:06.734 [DEBUG] [Thread-117755] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:53:06.737 [DEBUG] [Thread-117755] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:53:06.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:53:06.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:53:06.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:53:06.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:53:06.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:53:06.760 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:53:06.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:53:06.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:53:06.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:53:06.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.536214 -999.00  +26.60  25.16      8  -10.00 1 1 1 1 1   888    0 38.36 32.10 ----- 24.4 25.2 340.0 51.3 30.9 -32.0 30.4 -30.4 31.3 -31.1 31.9 -34.6
2025-11-03T14:53:06.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:53:06.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:53:06.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.536214
2025-11-03T14:53:06.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:53:06.768 [DEBUG] [Thread-117755] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:53:06.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:53:06.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:53:06.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:53:06.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:53:06.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:52:54', tmtdew=46.75, humidity=3.75, cloud=29.3, wind=30.77, temperature=26.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:52:08.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:53:06.854 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:53:06.865 [DEBUG] [Thread-117758] [transport.py] [_log()] starting thread (client mode): 0x1174c0d0
2025-11-03T14:53:06.865 [DEBUG] [Thread-117758] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:53:06.880 [DEBUG] [Thread-117758] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:53:06.880 [INFO] [Thread-117758] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:53:06.888 [DEBUG] [Thread-117758] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:53:06.888 [DEBUG] [Thread-117758] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:53:06.888 [DEBUG] [Thread-117758] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:53:06.888 [DEBUG] [Thread-117758] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:53:06.888 [DEBUG] [Thread-117758] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:53:06.888 [DEBUG] [Thread-117758] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:53:06.889 [DEBUG] [Thread-117758] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:53:06.889 [DEBUG] [Thread-117758] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:53:06.889 [DEBUG] [Thread-117758] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:53:06.889 [DEBUG] [Thread-117758] [transport.py] [_log()] client lang: <none>
2025-11-03T14:53:06.889 [DEBUG] [Thread-117758] [transport.py] [_log()] server lang: <none>
2025-11-03T14:53:06.889 [DEBUG] [Thread-117758] [transport.py] [_log()] kex follows: False
2025-11-03T14:53:06.889 [DEBUG] [Thread-117758] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:53:06.889 [DEBUG] [Thread-117758] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:53:06.889 [DEBUG] [Thread-117758] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:53:06.889 [DEBUG] [Thread-117758] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:53:06.889 [DEBUG] [Thread-117758] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:53:06.890 [DEBUG] [Thread-117758] [transport.py] [_log()] Compression: none
2025-11-03T14:53:06.890 [DEBUG] [Thread-117758] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:53:06.944 [DEBUG] [Thread-117758] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:53:06.945 [DEBUG] [Thread-117758] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:53:06.945 [DEBUG] [Thread-117758] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:53:06.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:53:06.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:53:07.004 [DEBUG] [Thread-117758] [transport.py] [_log()] userauth is OK
2025-11-03T14:53:07.005 [DEBUG] [Thread-117758] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:53:07.005 [DEBUG] [Thread-117758] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:53:07.005 [DEBUG] [Thread-117758] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:53:07.005 [DEBUG] [Thread-117758] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:53:07.024 [INFO] [Thread-117758] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:53:07.024 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:53:07.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:53:07.894 [DEBUG] [Thread-117758] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:53:07.894 [DEBUG] [Thread-117758] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:53:07.942 [DEBUG] [Thread-117758] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:53:07.942 [DEBUG] [Thread-117758] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:53:07.950 [DEBUG] [Thread-117758] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:53:07.958 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:53:07.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:53:07.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:53:07.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:53:07.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:53:07.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:53:07.982 [DEBUG] [Thread-117758] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:53:13.644 [DEBUG] [Thread-117760 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:53:20.593 [DEBUG] [Thread-117761 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:53:35.643 [DEBUG] [Thread-117762 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:53:37.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:53:37.976 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:53:37.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:53:38.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 53, 27), 46.84, 3.74, 29.3, 31.35, 26.7, 0, 0, 0, 0, 0, 0),)
2025-11-03T14:53:38.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:53:27
2025-11-03T14:53:38.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:53:38.925 [DEBUG] [Thread-117763] [transport.py] [_log()] starting thread (client mode): 0x81bbcd0
2025-11-03T14:53:38.925 [DEBUG] [Thread-117763] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:53:38.940 [DEBUG] [Thread-117763] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:53:38.940 [INFO] [Thread-117763] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:53:38.943 [DEBUG] [Thread-117763] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:53:38.943 [DEBUG] [Thread-117763] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:53:38.943 [DEBUG] [Thread-117763] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:53:38.943 [DEBUG] [Thread-117763] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:53:38.943 [DEBUG] [Thread-117763] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:53:38.944 [DEBUG] [Thread-117763] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:53:38.944 [DEBUG] [Thread-117763] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:53:38.944 [DEBUG] [Thread-117763] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:53:38.944 [DEBUG] [Thread-117763] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:53:38.944 [DEBUG] [Thread-117763] [transport.py] [_log()] client lang: <none>
2025-11-03T14:53:38.944 [DEBUG] [Thread-117763] [transport.py] [_log()] server lang: <none>
2025-11-03T14:53:38.944 [DEBUG] [Thread-117763] [transport.py] [_log()] kex follows: False
2025-11-03T14:53:38.944 [DEBUG] [Thread-117763] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:53:38.944 [DEBUG] [Thread-117763] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:53:38.944 [DEBUG] [Thread-117763] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:53:38.944 [DEBUG] [Thread-117763] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:53:38.944 [DEBUG] [Thread-117763] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:53:38.944 [DEBUG] [Thread-117763] [transport.py] [_log()] Compression: none
2025-11-03T14:53:38.944 [DEBUG] [Thread-117763] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:53:38.963 [DEBUG] [Thread-117763] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:53:38.964 [DEBUG] [Thread-117763] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:53:38.965 [DEBUG] [Thread-117763] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:53:38.965 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:53:38.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:53:38.968 [DEBUG] [Thread-117763] [transport.py] [_log()] userauth is OK
2025-11-03T14:53:38.968 [DEBUG] [Thread-117763] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:53:38.968 [DEBUG] [Thread-117763] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:53:38.968 [DEBUG] [Thread-117763] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:53:38.968 [DEBUG] [Thread-117763] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:53:39.006 [INFO] [Thread-117763] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:53:39.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:53:39.825 [DEBUG] [Thread-117763] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:53:39.826 [DEBUG] [Thread-117763] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:53:39.826 [DEBUG] [Thread-117763] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:53:39.867 [DEBUG] [Thread-117763] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:53:39.867 [DEBUG] [Thread-117763] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:53:39.870 [DEBUG] [Thread-117763] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:53:39.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:53:39.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:53:39.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:53:39.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:53:39.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:53:39.895 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:53:39.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:53:39.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:53:39.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:53:39.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.536561 -999.00  +26.20  49.26      8  -10.40 1 1 2 1 1   888    0 37.79 24.38 ----- 41.3 49.3 333.6 56.4 30.8 -32.7 30.2 -31.6 31.3 -30.2 31.9 -31.0
2025-11-03T14:53:39.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:53:39.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:53:39.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.536561
2025-11-03T14:53:39.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:53:39.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:53:39.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:53:39.898 [DEBUG] [Thread-117763] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:53:39.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:53:39.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:53:39.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:53:27', tmtdew=46.84, humidity=3.74, cloud=29.3, wind=31.35, temperature=26.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:52:38.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:53:39.983 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:53:39.995 [DEBUG] [Thread-117766] [transport.py] [_log()] starting thread (client mode): 0x1174d120
2025-11-03T14:53:39.995 [DEBUG] [Thread-117766] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:53:40.010 [DEBUG] [Thread-117766] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:53:40.010 [INFO] [Thread-117766] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:53:40.017 [DEBUG] [Thread-117766] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:53:40.017 [DEBUG] [Thread-117766] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:53:40.018 [DEBUG] [Thread-117766] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:53:40.018 [DEBUG] [Thread-117766] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:53:40.018 [DEBUG] [Thread-117766] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:53:40.018 [DEBUG] [Thread-117766] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:53:40.018 [DEBUG] [Thread-117766] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:53:40.018 [DEBUG] [Thread-117766] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:53:40.018 [DEBUG] [Thread-117766] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:53:40.018 [DEBUG] [Thread-117766] [transport.py] [_log()] client lang: <none>
2025-11-03T14:53:40.019 [DEBUG] [Thread-117766] [transport.py] [_log()] server lang: <none>
2025-11-03T14:53:40.019 [DEBUG] [Thread-117766] [transport.py] [_log()] kex follows: False
2025-11-03T14:53:40.019 [DEBUG] [Thread-117766] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:53:40.019 [DEBUG] [Thread-117766] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:53:40.019 [DEBUG] [Thread-117766] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:53:40.019 [DEBUG] [Thread-117766] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:53:40.020 [DEBUG] [Thread-117766] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:53:40.020 [DEBUG] [Thread-117766] [transport.py] [_log()] Compression: none
2025-11-03T14:53:40.020 [DEBUG] [Thread-117766] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:53:40.078 [DEBUG] [Thread-117766] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:53:40.079 [DEBUG] [Thread-117766] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:53:40.089 [DEBUG] [Thread-117766] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:53:40.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:53:40.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:53:40.138 [DEBUG] [Thread-117766] [transport.py] [_log()] userauth is OK
2025-11-03T14:53:40.138 [DEBUG] [Thread-117766] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:53:40.138 [DEBUG] [Thread-117766] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:53:40.138 [DEBUG] [Thread-117766] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:53:40.138 [DEBUG] [Thread-117766] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:53:40.158 [INFO] [Thread-117766] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:53:40.158 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:53:40.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:53:41.037 [DEBUG] [Thread-117766] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:53:41.038 [DEBUG] [Thread-117766] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:53:41.088 [DEBUG] [Thread-117766] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:53:41.088 [DEBUG] [Thread-117766] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:53:41.102 [DEBUG] [Thread-117766] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:53:41.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:53:41.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:53:41.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:53:41.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:53:41.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:53:41.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:53:41.155 [DEBUG] [Thread-117766] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:53:50.680 [DEBUG] [Thread-117768 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:54:01.239 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:54:01.240 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:54:05.731 [DEBUG] [Thread-117769 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:54:11.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:54:11.174 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:54:11.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:54:11.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 53, 59), 47.27, 3.2, 0.0, 40.9, 26.82, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:54:11.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:53:59
2025-11-03T14:54:11.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:54:12.110 [DEBUG] [Thread-117770] [transport.py] [_log()] starting thread (client mode): 0x1174f220
2025-11-03T14:54:12.110 [DEBUG] [Thread-117770] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:54:12.133 [DEBUG] [Thread-117770] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:54:12.133 [INFO] [Thread-117770] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:54:12.136 [DEBUG] [Thread-117770] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:54:12.136 [DEBUG] [Thread-117770] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:54:12.136 [DEBUG] [Thread-117770] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:54:12.137 [DEBUG] [Thread-117770] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:54:12.137 [DEBUG] [Thread-117770] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:54:12.137 [DEBUG] [Thread-117770] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:54:12.137 [DEBUG] [Thread-117770] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:54:12.137 [DEBUG] [Thread-117770] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:54:12.137 [DEBUG] [Thread-117770] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:54:12.137 [DEBUG] [Thread-117770] [transport.py] [_log()] client lang: <none>
2025-11-03T14:54:12.137 [DEBUG] [Thread-117770] [transport.py] [_log()] server lang: <none>
2025-11-03T14:54:12.137 [DEBUG] [Thread-117770] [transport.py] [_log()] kex follows: False
2025-11-03T14:54:12.137 [DEBUG] [Thread-117770] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:54:12.137 [DEBUG] [Thread-117770] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:54:12.137 [DEBUG] [Thread-117770] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:54:12.137 [DEBUG] [Thread-117770] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:54:12.137 [DEBUG] [Thread-117770] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:54:12.137 [DEBUG] [Thread-117770] [transport.py] [_log()] Compression: none
2025-11-03T14:54:12.137 [DEBUG] [Thread-117770] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:54:12.147 [DEBUG] [Thread-117770] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:54:12.148 [DEBUG] [Thread-117770] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:54:12.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:54:12.149 [DEBUG] [Thread-117770] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:54:12.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:54:12.151 [DEBUG] [Thread-117770] [transport.py] [_log()] userauth is OK
2025-11-03T14:54:12.151 [DEBUG] [Thread-117770] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:54:12.151 [DEBUG] [Thread-117770] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:54:12.151 [DEBUG] [Thread-117770] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:54:12.152 [DEBUG] [Thread-117770] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:54:12.185 [INFO] [Thread-117770] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:54:12.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:54:12.850 [DEBUG] [Thread-117770] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:54:12.850 [DEBUG] [Thread-117770] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:54:12.851 [DEBUG] [Thread-117770] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:54:12.891 [DEBUG] [Thread-117770] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:54:12.891 [DEBUG] [Thread-117770] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:54:12.894 [DEBUG] [Thread-117770] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:54:12.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:54:12.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:54:12.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:54:12.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:54:12.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:54:12.918 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:54:12.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:54:12.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:54:12.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:54:12.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.537256 -999.00  +26.70  38.56      8  -10.20 1 1 2 1 1   888    0 37.52 20.06 ----- 34.7 38.6 335.1 50.7 30.8 -31.4 30.4 -30.3 31.2 -29.7 31.9 -30.5
2025-11-03T14:54:12.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:54:12.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:54:12.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.537256
2025-11-03T14:54:12.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:54:12.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:54:12.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:54:12.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:54:12.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:54:12.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:53:59', tmtdew=47.27, humidity=3.2, cloud=0.0, wind=40.9, temperature=26.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:53:38.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:54:12.921 [DEBUG] [Thread-117770] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:54:13.004 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:54:13.017 [DEBUG] [Thread-117773] [transport.py] [_log()] starting thread (client mode): 0x1174e890
2025-11-03T14:54:13.017 [DEBUG] [Thread-117773] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:54:13.032 [DEBUG] [Thread-117773] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:54:13.032 [INFO] [Thread-117773] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:54:13.040 [DEBUG] [Thread-117773] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:54:13.040 [DEBUG] [Thread-117773] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:54:13.040 [DEBUG] [Thread-117773] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:54:13.040 [DEBUG] [Thread-117773] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:54:13.040 [DEBUG] [Thread-117773] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:54:13.041 [DEBUG] [Thread-117773] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:54:13.041 [DEBUG] [Thread-117773] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:54:13.041 [DEBUG] [Thread-117773] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:54:13.041 [DEBUG] [Thread-117773] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:54:13.041 [DEBUG] [Thread-117773] [transport.py] [_log()] client lang: <none>
2025-11-03T14:54:13.041 [DEBUG] [Thread-117773] [transport.py] [_log()] server lang: <none>
2025-11-03T14:54:13.041 [DEBUG] [Thread-117773] [transport.py] [_log()] kex follows: False
2025-11-03T14:54:13.041 [DEBUG] [Thread-117773] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:54:13.042 [DEBUG] [Thread-117773] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:54:13.042 [DEBUG] [Thread-117773] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:54:13.042 [DEBUG] [Thread-117773] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:54:13.042 [DEBUG] [Thread-117773] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:54:13.042 [DEBUG] [Thread-117773] [transport.py] [_log()] Compression: none
2025-11-03T14:54:13.042 [DEBUG] [Thread-117773] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:54:13.099 [DEBUG] [Thread-117773] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:54:13.099 [DEBUG] [Thread-117773] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:54:13.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:54:13.101 [DEBUG] [Thread-117773] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:54:13.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:54:13.160 [DEBUG] [Thread-117773] [transport.py] [_log()] userauth is OK
2025-11-03T14:54:13.160 [DEBUG] [Thread-117773] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:54:13.160 [DEBUG] [Thread-117773] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:54:13.161 [DEBUG] [Thread-117773] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:54:13.161 [DEBUG] [Thread-117773] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:54:13.180 [INFO] [Thread-117773] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:54:13.180 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:54:13.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:54:13.698 [DEBUG] [Thread-117775 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:54:14.072 [DEBUG] [Thread-117773] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:54:14.073 [DEBUG] [Thread-117773] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:54:14.122 [DEBUG] [Thread-117773] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:54:14.122 [DEBUG] [Thread-117773] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:54:14.131 [DEBUG] [Thread-117773] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:54:14.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:54:14.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:54:14.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:54:14.159 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:54:14.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:54:14.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:54:14.168 [DEBUG] [Thread-117773] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:54:20.763 [DEBUG] [Thread-117776 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:54:35.821 [DEBUG] [Thread-117777 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:54:44.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:54:44.191 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:54:44.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:54:44.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 54, 31), 47.02, 3.27, 0.0, 41.07, 26.7, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:54:44.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:54:31
2025-11-03T14:54:45.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:54:45.170 [DEBUG] [Thread-117778] [transport.py] [_log()] starting thread (client mode): 0x1174e680
2025-11-03T14:54:45.170 [DEBUG] [Thread-117778] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:54:45.190 [DEBUG] [Thread-117778] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:54:45.190 [INFO] [Thread-117778] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:54:45.193 [DEBUG] [Thread-117778] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:54:45.193 [DEBUG] [Thread-117778] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:54:45.193 [DEBUG] [Thread-117778] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:54:45.193 [DEBUG] [Thread-117778] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:54:45.193 [DEBUG] [Thread-117778] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:54:45.193 [DEBUG] [Thread-117778] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:54:45.193 [DEBUG] [Thread-117778] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:54:45.193 [DEBUG] [Thread-117778] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:54:45.193 [DEBUG] [Thread-117778] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:54:45.193 [DEBUG] [Thread-117778] [transport.py] [_log()] client lang: <none>
2025-11-03T14:54:45.193 [DEBUG] [Thread-117778] [transport.py] [_log()] server lang: <none>
2025-11-03T14:54:45.193 [DEBUG] [Thread-117778] [transport.py] [_log()] kex follows: False
2025-11-03T14:54:45.193 [DEBUG] [Thread-117778] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:54:45.193 [DEBUG] [Thread-117778] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:54:45.193 [DEBUG] [Thread-117778] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:54:45.193 [DEBUG] [Thread-117778] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:54:45.193 [DEBUG] [Thread-117778] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:54:45.193 [DEBUG] [Thread-117778] [transport.py] [_log()] Compression: none
2025-11-03T14:54:45.193 [DEBUG] [Thread-117778] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:54:45.209 [DEBUG] [Thread-117778] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:54:45.209 [DEBUG] [Thread-117778] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:54:45.209 [DEBUG] [Thread-117778] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:54:45.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:54:45.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:54:45.210 [DEBUG] [Thread-117778] [transport.py] [_log()] userauth is OK
2025-11-03T14:54:45.210 [DEBUG] [Thread-117778] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:54:45.210 [DEBUG] [Thread-117778] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:54:45.210 [DEBUG] [Thread-117778] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:54:45.210 [DEBUG] [Thread-117778] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:54:45.219 [INFO] [Thread-117778] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:54:45.219 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:54:45.958 [DEBUG] [Thread-117778] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:54:45.958 [DEBUG] [Thread-117778] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:54:45.959 [DEBUG] [Thread-117778] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:54:45.999 [DEBUG] [Thread-117778] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:54:46.000 [DEBUG] [Thread-117778] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:54:46.002 [DEBUG] [Thread-117778] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:54:46.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:54:46.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:54:46.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:54:46.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:54:46.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:54:46.028 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:54:46.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:54:46.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:54:46.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:54:46.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.537603 -999.00  +26.40  22.48      8  -10.50 1 1 1 1 1   888    0 38.25 21.59 ----- 31.0 22.5 352.6 37.5 30.7 -32.2 30.1 -32.0 31.2 -31.6 31.5 -30.6
2025-11-03T14:54:46.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:54:46.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:54:46.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.537603
2025-11-03T14:54:46.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:54:46.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:54:46.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:54:46.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:54:46.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:54:46.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:54:31', tmtdew=47.02, humidity=3.27, cloud=0.0, wind=41.07, temperature=26.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:54:08.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:54:46.028 [DEBUG] [Thread-117778] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:54:46.104 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:54:46.115 [DEBUG] [Thread-117781] [transport.py] [_log()] starting thread (client mode): 0x1174f9a0
2025-11-03T14:54:46.115 [DEBUG] [Thread-117781] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:54:46.130 [DEBUG] [Thread-117781] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:54:46.130 [INFO] [Thread-117781] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:54:46.137 [DEBUG] [Thread-117781] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:54:46.137 [DEBUG] [Thread-117781] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:54:46.137 [DEBUG] [Thread-117781] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:54:46.137 [DEBUG] [Thread-117781] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:54:46.137 [DEBUG] [Thread-117781] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:54:46.137 [DEBUG] [Thread-117781] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:54:46.137 [DEBUG] [Thread-117781] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:54:46.138 [DEBUG] [Thread-117781] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:54:46.138 [DEBUG] [Thread-117781] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:54:46.138 [DEBUG] [Thread-117781] [transport.py] [_log()] client lang: <none>
2025-11-03T14:54:46.138 [DEBUG] [Thread-117781] [transport.py] [_log()] server lang: <none>
2025-11-03T14:54:46.138 [DEBUG] [Thread-117781] [transport.py] [_log()] kex follows: False
2025-11-03T14:54:46.138 [DEBUG] [Thread-117781] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:54:46.138 [DEBUG] [Thread-117781] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:54:46.138 [DEBUG] [Thread-117781] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:54:46.138 [DEBUG] [Thread-117781] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:54:46.138 [DEBUG] [Thread-117781] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:54:46.138 [DEBUG] [Thread-117781] [transport.py] [_log()] Compression: none
2025-11-03T14:54:46.138 [DEBUG] [Thread-117781] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:54:46.192 [DEBUG] [Thread-117781] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:54:46.193 [DEBUG] [Thread-117781] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:54:46.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:54:46.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:54:46.193 [DEBUG] [Thread-117781] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:54:46.249 [DEBUG] [Thread-117781] [transport.py] [_log()] userauth is OK
2025-11-03T14:54:46.250 [DEBUG] [Thread-117781] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:54:46.250 [DEBUG] [Thread-117781] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:54:46.250 [DEBUG] [Thread-117781] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:54:46.250 [DEBUG] [Thread-117781] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:54:46.267 [INFO] [Thread-117781] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:54:46.267 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:54:46.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:54:47.161 [DEBUG] [Thread-117781] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:54:47.161 [DEBUG] [Thread-117781] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:54:47.208 [DEBUG] [Thread-117781] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:54:47.209 [DEBUG] [Thread-117781] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:54:47.218 [DEBUG] [Thread-117781] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:54:47.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:54:47.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:54:47.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:54:47.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:54:47.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:54:47.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:54:47.253 [DEBUG] [Thread-117781] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:54:50.856 [DEBUG] [Thread-117783 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:55:01.379 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:55:01.380 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:55:05.913 [DEBUG] [Thread-117784 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:55:13.790 [DEBUG] [Thread-117785 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:55:17.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:55:17.277 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:55:17.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:55:18.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 55, 4), 47.18, 3.24, 0.0, 39.79, 26.87, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:55:18.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:55:04
2025-11-03T14:55:18.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:55:18.317 [DEBUG] [Thread-117786] [transport.py] [_log()] starting thread (client mode): 0x81bb9a0
2025-11-03T14:55:18.317 [DEBUG] [Thread-117786] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:55:18.338 [DEBUG] [Thread-117786] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:55:18.338 [INFO] [Thread-117786] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:55:18.341 [DEBUG] [Thread-117786] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:55:18.342 [DEBUG] [Thread-117786] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:55:18.342 [DEBUG] [Thread-117786] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:55:18.342 [DEBUG] [Thread-117786] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:55:18.342 [DEBUG] [Thread-117786] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:55:18.342 [DEBUG] [Thread-117786] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:55:18.342 [DEBUG] [Thread-117786] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:55:18.342 [DEBUG] [Thread-117786] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:55:18.342 [DEBUG] [Thread-117786] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:55:18.342 [DEBUG] [Thread-117786] [transport.py] [_log()] client lang: <none>
2025-11-03T14:55:18.342 [DEBUG] [Thread-117786] [transport.py] [_log()] server lang: <none>
2025-11-03T14:55:18.342 [DEBUG] [Thread-117786] [transport.py] [_log()] kex follows: False
2025-11-03T14:55:18.342 [DEBUG] [Thread-117786] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:55:18.342 [DEBUG] [Thread-117786] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:55:18.343 [DEBUG] [Thread-117786] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:55:18.343 [DEBUG] [Thread-117786] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:55:18.343 [DEBUG] [Thread-117786] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:55:18.343 [DEBUG] [Thread-117786] [transport.py] [_log()] Compression: none
2025-11-03T14:55:18.343 [DEBUG] [Thread-117786] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:55:18.361 [DEBUG] [Thread-117786] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:55:18.361 [DEBUG] [Thread-117786] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:55:18.362 [DEBUG] [Thread-117786] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:55:18.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:55:18.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:55:18.364 [DEBUG] [Thread-117786] [transport.py] [_log()] userauth is OK
2025-11-03T14:55:18.365 [DEBUG] [Thread-117786] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:55:18.365 [DEBUG] [Thread-117786] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:55:18.365 [DEBUG] [Thread-117786] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:55:18.365 [DEBUG] [Thread-117786] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:55:18.401 [INFO] [Thread-117786] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:55:18.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:55:19.069 [DEBUG] [Thread-117786] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:55:19.069 [DEBUG] [Thread-117786] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:55:19.069 [DEBUG] [Thread-117786] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:55:19.109 [DEBUG] [Thread-117786] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:55:19.109 [DEBUG] [Thread-117786] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:55:19.112 [DEBUG] [Thread-117786] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:55:19.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:55:19.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:55:19.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:55:19.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:55:19.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:55:19.174 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:55:19.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:55:19.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:55:19.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:55:19.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.537950 -999.00  +26.50  25.25      8  -10.10 1 1 1 1 1   888    0 37.74 21.66 ----- 31.9 25.2 12.9 36.8 30.6 -31.5 30.2 -30.0 31.1 -31.4 31.7 -29.4
2025-11-03T14:55:19.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:55:19.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:55:19.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.537950
2025-11-03T14:55:19.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:55:19.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:55:19.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:55:19.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:55:19.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:55:19.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:55:04', tmtdew=47.18, humidity=3.24, cloud=0.0, wind=39.79, temperature=26.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:54:38.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:55:19.175 [DEBUG] [Thread-117786] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:55:19.246 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:55:19.258 [DEBUG] [Thread-117789] [transport.py] [_log()] starting thread (client mode): 0x117eb250
2025-11-03T14:55:19.258 [DEBUG] [Thread-117789] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:55:19.273 [DEBUG] [Thread-117789] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:55:19.273 [INFO] [Thread-117789] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:55:19.280 [DEBUG] [Thread-117789] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:55:19.280 [DEBUG] [Thread-117789] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:55:19.281 [DEBUG] [Thread-117789] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:55:19.281 [DEBUG] [Thread-117789] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:55:19.281 [DEBUG] [Thread-117789] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:55:19.281 [DEBUG] [Thread-117789] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:55:19.281 [DEBUG] [Thread-117789] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:55:19.281 [DEBUG] [Thread-117789] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:55:19.281 [DEBUG] [Thread-117789] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:55:19.281 [DEBUG] [Thread-117789] [transport.py] [_log()] client lang: <none>
2025-11-03T14:55:19.281 [DEBUG] [Thread-117789] [transport.py] [_log()] server lang: <none>
2025-11-03T14:55:19.281 [DEBUG] [Thread-117789] [transport.py] [_log()] kex follows: False
2025-11-03T14:55:19.281 [DEBUG] [Thread-117789] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:55:19.281 [DEBUG] [Thread-117789] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:55:19.281 [DEBUG] [Thread-117789] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:55:19.281 [DEBUG] [Thread-117789] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:55:19.281 [DEBUG] [Thread-117789] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:55:19.281 [DEBUG] [Thread-117789] [transport.py] [_log()] Compression: none
2025-11-03T14:55:19.281 [DEBUG] [Thread-117789] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:55:19.336 [DEBUG] [Thread-117789] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:55:19.336 [DEBUG] [Thread-117789] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:55:19.336 [DEBUG] [Thread-117789] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:55:19.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:55:19.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:55:19.398 [DEBUG] [Thread-117789] [transport.py] [_log()] userauth is OK
2025-11-03T14:55:19.398 [DEBUG] [Thread-117789] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:55:19.398 [DEBUG] [Thread-117789] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:55:19.398 [DEBUG] [Thread-117789] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:55:19.398 [DEBUG] [Thread-117789] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:55:19.412 [INFO] [Thread-117789] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:55:19.412 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:55:19.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:55:20.254 [DEBUG] [Thread-117789] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:55:20.254 [DEBUG] [Thread-117789] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:55:20.301 [DEBUG] [Thread-117789] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:55:20.301 [DEBUG] [Thread-117789] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:55:20.309 [DEBUG] [Thread-117789] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:55:20.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:55:20.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:55:20.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:55:20.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:55:20.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:55:20.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:55:20.341 [DEBUG] [Thread-117789] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:55:20.943 [DEBUG] [Thread-117791 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:55:35.983 [DEBUG] [Thread-117792 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:55:50.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:55:50.357 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:55:50.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:55:51.019 [DEBUG] [Thread-117793 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:55:51.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 55, 36), 47.38, 3.2, 0.0, 46.7, 26.84, 0, 0, 0, 2, 1, 0),)
2025-11-03T14:55:51.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:55:36
2025-11-03T14:55:51.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:55:51.354 [DEBUG] [Thread-117794] [transport.py] [_log()] starting thread (client mode): 0x117e8a60
2025-11-03T14:55:51.354 [DEBUG] [Thread-117794] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:55:51.375 [DEBUG] [Thread-117794] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:55:51.375 [INFO] [Thread-117794] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:55:51.378 [DEBUG] [Thread-117794] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:55:51.378 [DEBUG] [Thread-117794] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:55:51.379 [DEBUG] [Thread-117794] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:55:51.379 [DEBUG] [Thread-117794] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:55:51.379 [DEBUG] [Thread-117794] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:55:51.379 [DEBUG] [Thread-117794] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:55:51.379 [DEBUG] [Thread-117794] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:55:51.379 [DEBUG] [Thread-117794] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:55:51.379 [DEBUG] [Thread-117794] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:55:51.379 [DEBUG] [Thread-117794] [transport.py] [_log()] client lang: <none>
2025-11-03T14:55:51.379 [DEBUG] [Thread-117794] [transport.py] [_log()] server lang: <none>
2025-11-03T14:55:51.379 [DEBUG] [Thread-117794] [transport.py] [_log()] kex follows: False
2025-11-03T14:55:51.379 [DEBUG] [Thread-117794] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:55:51.379 [DEBUG] [Thread-117794] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:55:51.380 [DEBUG] [Thread-117794] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:55:51.380 [DEBUG] [Thread-117794] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:55:51.380 [DEBUG] [Thread-117794] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:55:51.380 [DEBUG] [Thread-117794] [transport.py] [_log()] Compression: none
2025-11-03T14:55:51.380 [DEBUG] [Thread-117794] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:55:51.400 [DEBUG] [Thread-117794] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:55:51.401 [DEBUG] [Thread-117794] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:55:51.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:55:51.401 [DEBUG] [Thread-117794] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:55:51.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:55:51.403 [DEBUG] [Thread-117794] [transport.py] [_log()] userauth is OK
2025-11-03T14:55:51.403 [DEBUG] [Thread-117794] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:55:51.403 [DEBUG] [Thread-117794] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:55:51.403 [DEBUG] [Thread-117794] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:55:51.403 [DEBUG] [Thread-117794] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:55:51.436 [INFO] [Thread-117794] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:55:51.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:55:52.072 [DEBUG] [Thread-117794] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:55:52.072 [DEBUG] [Thread-117794] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:55:52.073 [DEBUG] [Thread-117794] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:55:52.113 [DEBUG] [Thread-117794] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:55:52.113 [DEBUG] [Thread-117794] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:55:52.117 [DEBUG] [Thread-117794] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:55:52.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:55:52.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:55:52.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:55:52.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:55:52.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:55:52.141 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:55:52.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:55:52.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:55:52.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:55:52.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.538297 -999.00  +27.10  44.44      8   -9.90 1 1 2 1 1   888    0 37.15 21.22 ----- 48.1 44.4 309.4 54.6 30.7 -31.9 30.3 -31.1 31.2 -31.2 31.7 -31.1
2025-11-03T14:55:52.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:55:52.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:55:52.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.538297
2025-11-03T14:55:52.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:55:52.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:55:52.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:55:52.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:55:52.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:55:52.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:55:36', tmtdew=47.38, humidity=3.2, cloud=0.0, wind=46.7, temperature=26.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=1, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:55:08.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:55:52.145 [DEBUG] [Thread-117794] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:55:52.228 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:55:52.240 [DEBUG] [Thread-117797] [transport.py] [_log()] starting thread (client mode): 0x117e8040
2025-11-03T14:55:52.240 [DEBUG] [Thread-117797] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:55:52.255 [DEBUG] [Thread-117797] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:55:52.255 [INFO] [Thread-117797] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:55:52.263 [DEBUG] [Thread-117797] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:55:52.264 [DEBUG] [Thread-117797] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:55:52.264 [DEBUG] [Thread-117797] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:55:52.264 [DEBUG] [Thread-117797] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:55:52.264 [DEBUG] [Thread-117797] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:55:52.264 [DEBUG] [Thread-117797] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:55:52.264 [DEBUG] [Thread-117797] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:55:52.264 [DEBUG] [Thread-117797] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:55:52.264 [DEBUG] [Thread-117797] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:55:52.264 [DEBUG] [Thread-117797] [transport.py] [_log()] client lang: <none>
2025-11-03T14:55:52.264 [DEBUG] [Thread-117797] [transport.py] [_log()] server lang: <none>
2025-11-03T14:55:52.264 [DEBUG] [Thread-117797] [transport.py] [_log()] kex follows: False
2025-11-03T14:55:52.264 [DEBUG] [Thread-117797] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:55:52.264 [DEBUG] [Thread-117797] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:55:52.264 [DEBUG] [Thread-117797] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:55:52.264 [DEBUG] [Thread-117797] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:55:52.264 [DEBUG] [Thread-117797] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:55:52.264 [DEBUG] [Thread-117797] [transport.py] [_log()] Compression: none
2025-11-03T14:55:52.264 [DEBUG] [Thread-117797] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:55:52.322 [DEBUG] [Thread-117797] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:55:52.323 [DEBUG] [Thread-117797] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:55:52.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:55:52.324 [DEBUG] [Thread-117797] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:55:52.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:55:52.378 [DEBUG] [Thread-117797] [transport.py] [_log()] userauth is OK
2025-11-03T14:55:52.378 [DEBUG] [Thread-117797] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:55:52.379 [DEBUG] [Thread-117797] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:55:52.379 [DEBUG] [Thread-117797] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:55:52.379 [DEBUG] [Thread-117797] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:55:52.398 [INFO] [Thread-117797] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:55:52.398 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:55:52.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:55:53.261 [DEBUG] [Thread-117797] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:55:53.261 [DEBUG] [Thread-117797] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:55:53.309 [DEBUG] [Thread-117797] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:55:53.310 [DEBUG] [Thread-117797] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:55:53.319 [DEBUG] [Thread-117797] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:55:53.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:55:53.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:55:53.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:55:53.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:55:53.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:55:53.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:55:53.356 [DEBUG] [Thread-117797] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:56:01.520 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:56:01.520 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:56:06.049 [DEBUG] [Thread-117799 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:56:13.855 [DEBUG] [Thread-117800 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:56:21.096 [DEBUG] [Thread-117801 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:56:23.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:56:23.378 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:56:23.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:56:24.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 56, 8), 47.38, 3.19, 0.0, 45.45, 26.65, 0, 0, 0, 2, 1, 0),)
2025-11-03T14:56:24.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:56:08
2025-11-03T14:56:24.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:56:24.326 [DEBUG] [Thread-117802] [transport.py] [_log()] starting thread (client mode): 0x117e8a00
2025-11-03T14:56:24.327 [DEBUG] [Thread-117802] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:56:24.346 [DEBUG] [Thread-117802] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:56:24.347 [INFO] [Thread-117802] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:56:24.348 [DEBUG] [Thread-117802] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:56:24.348 [DEBUG] [Thread-117802] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:56:24.348 [DEBUG] [Thread-117802] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:56:24.348 [DEBUG] [Thread-117802] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:56:24.348 [DEBUG] [Thread-117802] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:56:24.348 [DEBUG] [Thread-117802] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:56:24.348 [DEBUG] [Thread-117802] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:56:24.348 [DEBUG] [Thread-117802] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:56:24.348 [DEBUG] [Thread-117802] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:56:24.348 [DEBUG] [Thread-117802] [transport.py] [_log()] client lang: <none>
2025-11-03T14:56:24.348 [DEBUG] [Thread-117802] [transport.py] [_log()] server lang: <none>
2025-11-03T14:56:24.348 [DEBUG] [Thread-117802] [transport.py] [_log()] kex follows: False
2025-11-03T14:56:24.348 [DEBUG] [Thread-117802] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:56:24.348 [DEBUG] [Thread-117802] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:56:24.348 [DEBUG] [Thread-117802] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:56:24.348 [DEBUG] [Thread-117802] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:56:24.348 [DEBUG] [Thread-117802] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:56:24.348 [DEBUG] [Thread-117802] [transport.py] [_log()] Compression: none
2025-11-03T14:56:24.348 [DEBUG] [Thread-117802] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:56:24.356 [DEBUG] [Thread-117802] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:56:24.357 [DEBUG] [Thread-117802] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:56:24.357 [DEBUG] [Thread-117802] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:56:24.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:56:24.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:56:24.359 [DEBUG] [Thread-117802] [transport.py] [_log()] userauth is OK
2025-11-03T14:56:24.359 [DEBUG] [Thread-117802] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:56:24.359 [DEBUG] [Thread-117802] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:56:24.359 [DEBUG] [Thread-117802] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:56:24.359 [DEBUG] [Thread-117802] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:56:24.377 [INFO] [Thread-117802] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:56:24.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:56:25.096 [DEBUG] [Thread-117802] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:56:25.097 [DEBUG] [Thread-117802] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:56:25.097 [DEBUG] [Thread-117802] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:56:25.138 [DEBUG] [Thread-117802] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:56:25.138 [DEBUG] [Thread-117802] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:56:25.142 [DEBUG] [Thread-117802] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:56:25.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:56:25.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:56:25.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:56:25.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:56:25.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:56:25.167 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:56:25.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:56:25.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:56:25.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:56:25.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.538645 -999.00  +27.10  40.41      8   -9.90 1 1 2 1 1   888    0 37.71 22.26 ----- 38.5 40.4 315.2 49.8 30.7 -31.0 30.2 -30.9 31.0 -30.2 31.8 -30.1
2025-11-03T14:56:25.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:56:25.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:56:25.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.538645
2025-11-03T14:56:25.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:56:25.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:56:25.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:56:25.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:56:25.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:56:25.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:56:08', tmtdew=47.38, humidity=3.19, cloud=0.0, wind=45.45, temperature=26.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=1, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:55:38.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:56:25.170 [DEBUG] [Thread-117802] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:56:25.254 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:56:25.266 [DEBUG] [Thread-117805] [transport.py] [_log()] starting thread (client mode): 0xed4d990
2025-11-03T14:56:25.266 [DEBUG] [Thread-117805] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:56:25.281 [DEBUG] [Thread-117805] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:56:25.281 [INFO] [Thread-117805] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:56:25.289 [DEBUG] [Thread-117805] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:56:25.289 [DEBUG] [Thread-117805] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:56:25.289 [DEBUG] [Thread-117805] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:56:25.289 [DEBUG] [Thread-117805] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:56:25.289 [DEBUG] [Thread-117805] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:56:25.290 [DEBUG] [Thread-117805] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:56:25.290 [DEBUG] [Thread-117805] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:56:25.290 [DEBUG] [Thread-117805] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:56:25.290 [DEBUG] [Thread-117805] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:56:25.290 [DEBUG] [Thread-117805] [transport.py] [_log()] client lang: <none>
2025-11-03T14:56:25.290 [DEBUG] [Thread-117805] [transport.py] [_log()] server lang: <none>
2025-11-03T14:56:25.290 [DEBUG] [Thread-117805] [transport.py] [_log()] kex follows: False
2025-11-03T14:56:25.290 [DEBUG] [Thread-117805] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:56:25.290 [DEBUG] [Thread-117805] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:56:25.291 [DEBUG] [Thread-117805] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:56:25.291 [DEBUG] [Thread-117805] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:56:25.291 [DEBUG] [Thread-117805] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:56:25.291 [DEBUG] [Thread-117805] [transport.py] [_log()] Compression: none
2025-11-03T14:56:25.291 [DEBUG] [Thread-117805] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:56:25.346 [DEBUG] [Thread-117805] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:56:25.346 [DEBUG] [Thread-117805] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:56:25.347 [DEBUG] [Thread-117805] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:56:25.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:56:25.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:56:25.402 [DEBUG] [Thread-117805] [transport.py] [_log()] userauth is OK
2025-11-03T14:56:25.402 [DEBUG] [Thread-117805] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:56:25.402 [DEBUG] [Thread-117805] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:56:25.403 [DEBUG] [Thread-117805] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:56:25.403 [DEBUG] [Thread-117805] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:56:25.422 [INFO] [Thread-117805] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:56:25.422 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:56:25.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:56:26.271 [DEBUG] [Thread-117805] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:56:26.271 [DEBUG] [Thread-117805] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:56:26.320 [DEBUG] [Thread-117805] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:56:26.320 [DEBUG] [Thread-117805] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:56:26.329 [DEBUG] [Thread-117805] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:56:26.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:56:26.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:56:26.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:56:26.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:56:26.361 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:56:26.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:56:26.372 [DEBUG] [Thread-117805] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:56:36.141 [DEBUG] [Thread-117807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:56:51.192 [DEBUG] [Thread-117808 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:56:56.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:56:56.392 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:56:56.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:56:57.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 56, 40), 47.28, 3.15, 0.0, 39.08, 26.27, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:56:57.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:56:40
2025-11-03T14:56:57.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:56:57.368 [DEBUG] [Thread-117809] [transport.py] [_log()] starting thread (client mode): 0x1174cf10
2025-11-03T14:56:57.368 [DEBUG] [Thread-117809] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:56:57.389 [DEBUG] [Thread-117809] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:56:57.389 [INFO] [Thread-117809] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:56:57.392 [DEBUG] [Thread-117809] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:56:57.392 [DEBUG] [Thread-117809] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:56:57.392 [DEBUG] [Thread-117809] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:56:57.392 [DEBUG] [Thread-117809] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:56:57.392 [DEBUG] [Thread-117809] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:56:57.392 [DEBUG] [Thread-117809] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:56:57.392 [DEBUG] [Thread-117809] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:56:57.392 [DEBUG] [Thread-117809] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:56:57.392 [DEBUG] [Thread-117809] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:56:57.392 [DEBUG] [Thread-117809] [transport.py] [_log()] client lang: <none>
2025-11-03T14:56:57.393 [DEBUG] [Thread-117809] [transport.py] [_log()] server lang: <none>
2025-11-03T14:56:57.393 [DEBUG] [Thread-117809] [transport.py] [_log()] kex follows: False
2025-11-03T14:56:57.393 [DEBUG] [Thread-117809] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:56:57.393 [DEBUG] [Thread-117809] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:56:57.393 [DEBUG] [Thread-117809] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:56:57.393 [DEBUG] [Thread-117809] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:56:57.393 [DEBUG] [Thread-117809] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:56:57.393 [DEBUG] [Thread-117809] [transport.py] [_log()] Compression: none
2025-11-03T14:56:57.393 [DEBUG] [Thread-117809] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:56:57.413 [DEBUG] [Thread-117809] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:56:57.414 [DEBUG] [Thread-117809] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:56:57.414 [DEBUG] [Thread-117809] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:56:57.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:56:57.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:56:57.416 [DEBUG] [Thread-117809] [transport.py] [_log()] userauth is OK
2025-11-03T14:56:57.417 [DEBUG] [Thread-117809] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:56:57.417 [DEBUG] [Thread-117809] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:56:57.417 [DEBUG] [Thread-117809] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:56:57.417 [DEBUG] [Thread-117809] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:56:57.441 [INFO] [Thread-117809] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:56:57.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:56:58.082 [DEBUG] [Thread-117809] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:56:58.083 [DEBUG] [Thread-117809] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:56:58.083 [DEBUG] [Thread-117809] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:56:58.124 [DEBUG] [Thread-117809] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:56:58.124 [DEBUG] [Thread-117809] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:56:58.128 [DEBUG] [Thread-117809] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:56:58.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:56:58.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:56:58.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:56:58.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:56:58.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:56:58.152 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:56:58.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:56:58.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:56:58.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:56:58.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.538992 -999.00  +26.40  24.54      8  -10.50 1 1 1 1 1   888    0 37.83 25.56 ----- 33.5 24.5 20.4 49.1 30.7 -32.1 30.2 -30.8 31.2 -29.8 31.8 -29.9
2025-11-03T14:56:58.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:56:58.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:56:58.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.538992
2025-11-03T14:56:58.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:56:58.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:56:58.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:56:58.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:56:58.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:56:58.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:56:40', tmtdew=47.28, humidity=3.15, cloud=0.0, wind=39.08, temperature=26.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:56:08.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:56:58.156 [DEBUG] [Thread-117809] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:56:58.238 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:56:58.249 [DEBUG] [Thread-117812] [transport.py] [_log()] starting thread (client mode): 0x117eb820
2025-11-03T14:56:58.249 [DEBUG] [Thread-117812] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:56:58.264 [DEBUG] [Thread-117812] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:56:58.264 [INFO] [Thread-117812] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:56:58.271 [DEBUG] [Thread-117812] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:56:58.271 [DEBUG] [Thread-117812] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:56:58.271 [DEBUG] [Thread-117812] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:56:58.271 [DEBUG] [Thread-117812] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:56:58.271 [DEBUG] [Thread-117812] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:56:58.271 [DEBUG] [Thread-117812] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:56:58.271 [DEBUG] [Thread-117812] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:56:58.272 [DEBUG] [Thread-117812] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:56:58.272 [DEBUG] [Thread-117812] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:56:58.272 [DEBUG] [Thread-117812] [transport.py] [_log()] client lang: <none>
2025-11-03T14:56:58.272 [DEBUG] [Thread-117812] [transport.py] [_log()] server lang: <none>
2025-11-03T14:56:58.272 [DEBUG] [Thread-117812] [transport.py] [_log()] kex follows: False
2025-11-03T14:56:58.272 [DEBUG] [Thread-117812] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:56:58.272 [DEBUG] [Thread-117812] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:56:58.272 [DEBUG] [Thread-117812] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:56:58.272 [DEBUG] [Thread-117812] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:56:58.272 [DEBUG] [Thread-117812] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:56:58.272 [DEBUG] [Thread-117812] [transport.py] [_log()] Compression: none
2025-11-03T14:56:58.272 [DEBUG] [Thread-117812] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:56:58.330 [DEBUG] [Thread-117812] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:56:58.331 [DEBUG] [Thread-117812] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:56:58.331 [DEBUG] [Thread-117812] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:56:58.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:56:58.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:56:58.386 [DEBUG] [Thread-117812] [transport.py] [_log()] userauth is OK
2025-11-03T14:56:58.387 [DEBUG] [Thread-117812] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:56:58.387 [DEBUG] [Thread-117812] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:56:58.387 [DEBUG] [Thread-117812] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:56:58.387 [DEBUG] [Thread-117812] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:56:58.406 [INFO] [Thread-117812] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:56:58.406 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:56:58.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:56:59.247 [DEBUG] [Thread-117812] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:56:59.247 [DEBUG] [Thread-117812] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:56:59.295 [DEBUG] [Thread-117812] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:56:59.295 [DEBUG] [Thread-117812] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:56:59.305 [DEBUG] [Thread-117812] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:56:59.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:56:59.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:56:59.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:56:59.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:56:59.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:56:59.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:56:59.342 [DEBUG] [Thread-117812] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:57:01.661 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:57:01.661 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:57:06.229 [DEBUG] [Thread-117814 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:57:13.913 [DEBUG] [Thread-117815 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:57:21.275 [DEBUG] [Thread-117816 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:57:29.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:57:29.356 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:57:29.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:57:30.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 57, 13), 47.18, 3.19, 0.0, 38.76, 26.32, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:57:30.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:57:13
2025-11-03T14:57:30.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:57:30.310 [DEBUG] [Thread-117817] [transport.py] [_log()] starting thread (client mode): 0x1174d840
2025-11-03T14:57:30.310 [DEBUG] [Thread-117817] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:57:30.329 [DEBUG] [Thread-117817] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:57:30.329 [INFO] [Thread-117817] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:57:30.330 [DEBUG] [Thread-117817] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:57:30.330 [DEBUG] [Thread-117817] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:57:30.330 [DEBUG] [Thread-117817] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:57:30.330 [DEBUG] [Thread-117817] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:57:30.330 [DEBUG] [Thread-117817] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:57:30.330 [DEBUG] [Thread-117817] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:57:30.330 [DEBUG] [Thread-117817] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:57:30.330 [DEBUG] [Thread-117817] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:57:30.330 [DEBUG] [Thread-117817] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:57:30.330 [DEBUG] [Thread-117817] [transport.py] [_log()] client lang: <none>
2025-11-03T14:57:30.330 [DEBUG] [Thread-117817] [transport.py] [_log()] server lang: <none>
2025-11-03T14:57:30.330 [DEBUG] [Thread-117817] [transport.py] [_log()] kex follows: False
2025-11-03T14:57:30.330 [DEBUG] [Thread-117817] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:57:30.330 [DEBUG] [Thread-117817] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:57:30.330 [DEBUG] [Thread-117817] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:57:30.330 [DEBUG] [Thread-117817] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:57:30.330 [DEBUG] [Thread-117817] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:57:30.330 [DEBUG] [Thread-117817] [transport.py] [_log()] Compression: none
2025-11-03T14:57:30.330 [DEBUG] [Thread-117817] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:57:30.338 [DEBUG] [Thread-117817] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:57:30.338 [DEBUG] [Thread-117817] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:57:30.339 [DEBUG] [Thread-117817] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:57:30.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:57:30.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:57:30.340 [DEBUG] [Thread-117817] [transport.py] [_log()] userauth is OK
2025-11-03T14:57:30.340 [DEBUG] [Thread-117817] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:57:30.340 [DEBUG] [Thread-117817] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:57:30.340 [DEBUG] [Thread-117817] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:57:30.340 [DEBUG] [Thread-117817] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:57:30.372 [INFO] [Thread-117817] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:57:30.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:57:31.046 [DEBUG] [Thread-117817] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:57:31.047 [DEBUG] [Thread-117817] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:57:31.047 [DEBUG] [Thread-117817] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:57:31.088 [DEBUG] [Thread-117817] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:57:31.088 [DEBUG] [Thread-117817] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:57:31.092 [DEBUG] [Thread-117817] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:57:31.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:57:31.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:57:31.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:57:31.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:57:31.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:57:31.128 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:57:31.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:57:31.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:57:31.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:57:31.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.539339 -999.00  +26.60  34.18      7  -10.40 1 1 2 1 1   888    0 37.64 26.46 ----- 34.1 34.2 317.2 49.0 30.7 -31.5 30.3 -30.0 31.2 -29.6 31.8 -29.9
2025-11-03T14:57:31.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:57:31.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:57:31.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.539339
2025-11-03T14:57:31.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:57:31.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:57:31.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:57:31.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:57:31.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:57:31.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:57:13', tmtdew=47.18, humidity=3.19, cloud=0.0, wind=38.76, temperature=26.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:56:38.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:57:31.132 [DEBUG] [Thread-117817] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:57:31.215 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:57:31.228 [DEBUG] [Thread-117820] [transport.py] [_log()] starting thread (client mode): 0x1174ffd0
2025-11-03T14:57:31.228 [DEBUG] [Thread-117820] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:57:31.243 [DEBUG] [Thread-117820] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:57:31.243 [INFO] [Thread-117820] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:57:31.250 [DEBUG] [Thread-117820] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:57:31.251 [DEBUG] [Thread-117820] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:57:31.251 [DEBUG] [Thread-117820] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:57:31.251 [DEBUG] [Thread-117820] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:57:31.251 [DEBUG] [Thread-117820] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:57:31.251 [DEBUG] [Thread-117820] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:57:31.251 [DEBUG] [Thread-117820] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:57:31.251 [DEBUG] [Thread-117820] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:57:31.251 [DEBUG] [Thread-117820] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:57:31.251 [DEBUG] [Thread-117820] [transport.py] [_log()] client lang: <none>
2025-11-03T14:57:31.251 [DEBUG] [Thread-117820] [transport.py] [_log()] server lang: <none>
2025-11-03T14:57:31.251 [DEBUG] [Thread-117820] [transport.py] [_log()] kex follows: False
2025-11-03T14:57:31.251 [DEBUG] [Thread-117820] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:57:31.251 [DEBUG] [Thread-117820] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:57:31.251 [DEBUG] [Thread-117820] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:57:31.251 [DEBUG] [Thread-117820] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:57:31.252 [DEBUG] [Thread-117820] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:57:31.252 [DEBUG] [Thread-117820] [transport.py] [_log()] Compression: none
2025-11-03T14:57:31.252 [DEBUG] [Thread-117820] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:57:31.310 [DEBUG] [Thread-117820] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:57:31.311 [DEBUG] [Thread-117820] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:57:31.312 [DEBUG] [Thread-117820] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:57:31.312 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:57:31.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:57:31.367 [DEBUG] [Thread-117820] [transport.py] [_log()] userauth is OK
2025-11-03T14:57:31.367 [DEBUG] [Thread-117820] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:57:31.367 [DEBUG] [Thread-117820] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:57:31.367 [DEBUG] [Thread-117820] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:57:31.368 [DEBUG] [Thread-117820] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:57:31.395 [INFO] [Thread-117820] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:57:31.395 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:57:31.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:57:32.253 [DEBUG] [Thread-117820] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:57:32.254 [DEBUG] [Thread-117820] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:57:32.306 [DEBUG] [Thread-117820] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:57:32.306 [DEBUG] [Thread-117820] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:57:32.316 [DEBUG] [Thread-117820] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:57:32.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:57:32.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:57:32.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:57:32.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:57:32.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:57:32.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:57:32.364 [DEBUG] [Thread-117820] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:57:36.308 [DEBUG] [Thread-117822 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:57:51.364 [DEBUG] [Thread-117823 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:58:01.802 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:58:01.802 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:58:02.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:58:02.384 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:58:02.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:58:03.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 57, 45), 47.07, 3.24, 0.0, 33.26, 26.32, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:58:03.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:57:45
2025-11-03T14:58:03.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:58:03.321 [DEBUG] [Thread-117824] [transport.py] [_log()] starting thread (client mode): 0x117eb220
2025-11-03T14:58:03.321 [DEBUG] [Thread-117824] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:58:03.332 [DEBUG] [Thread-117824] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:58:03.332 [INFO] [Thread-117824] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:58:03.335 [DEBUG] [Thread-117824] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:58:03.335 [DEBUG] [Thread-117824] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:58:03.335 [DEBUG] [Thread-117824] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:58:03.335 [DEBUG] [Thread-117824] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:58:03.335 [DEBUG] [Thread-117824] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:58:03.335 [DEBUG] [Thread-117824] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:58:03.335 [DEBUG] [Thread-117824] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:58:03.335 [DEBUG] [Thread-117824] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:58:03.335 [DEBUG] [Thread-117824] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:58:03.335 [DEBUG] [Thread-117824] [transport.py] [_log()] client lang: <none>
2025-11-03T14:58:03.335 [DEBUG] [Thread-117824] [transport.py] [_log()] server lang: <none>
2025-11-03T14:58:03.335 [DEBUG] [Thread-117824] [transport.py] [_log()] kex follows: False
2025-11-03T14:58:03.336 [DEBUG] [Thread-117824] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:58:03.336 [DEBUG] [Thread-117824] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:58:03.336 [DEBUG] [Thread-117824] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:58:03.336 [DEBUG] [Thread-117824] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:58:03.336 [DEBUG] [Thread-117824] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:58:03.336 [DEBUG] [Thread-117824] [transport.py] [_log()] Compression: none
2025-11-03T14:58:03.336 [DEBUG] [Thread-117824] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:58:03.355 [DEBUG] [Thread-117824] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:58:03.356 [DEBUG] [Thread-117824] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:58:03.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:58:03.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:58:03.358 [DEBUG] [Thread-117824] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:58:03.397 [DEBUG] [Thread-117824] [transport.py] [_log()] userauth is OK
2025-11-03T14:58:03.397 [DEBUG] [Thread-117824] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:58:03.397 [DEBUG] [Thread-117824] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:58:03.398 [DEBUG] [Thread-117824] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:58:03.398 [DEBUG] [Thread-117824] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:58:03.418 [INFO] [Thread-117824] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:58:03.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:58:03.985 [DEBUG] [Thread-117824] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:58:03.986 [DEBUG] [Thread-117824] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:58:03.986 [DEBUG] [Thread-117824] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:58:04.026 [DEBUG] [Thread-117824] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:58:04.026 [DEBUG] [Thread-117824] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:58:04.030 [DEBUG] [Thread-117824] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:58:04.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:58:04.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:58:04.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:58:04.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:58:04.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:58:04.054 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:58:04.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:58:04.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:58:04.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:58:04.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.539686 -999.00  +26.60  27.33      7  -10.60 1 1 1 1 1   888    0 37.44 29.69 ----- 33.7 27.3 329.4 44.8 30.7 -31.6 30.3 -30.3 31.1 -31.6 31.9 -30.9
2025-11-03T14:58:04.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:58:04.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:58:04.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.539686
2025-11-03T14:58:04.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:58:04.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:58:04.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:58:04.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:58:04.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:58:04.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:57:45', tmtdew=47.07, humidity=3.24, cloud=0.0, wind=33.26, temperature=26.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:57:08.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:58:04.058 [DEBUG] [Thread-117824] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:58:04.141 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:58:04.154 [DEBUG] [Thread-117827] [transport.py] [_log()] starting thread (client mode): 0x1179b130
2025-11-03T14:58:04.154 [DEBUG] [Thread-117827] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:58:04.169 [DEBUG] [Thread-117827] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:58:04.170 [INFO] [Thread-117827] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:58:04.177 [DEBUG] [Thread-117827] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:58:04.178 [DEBUG] [Thread-117827] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:58:04.178 [DEBUG] [Thread-117827] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:58:04.178 [DEBUG] [Thread-117827] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:58:04.178 [DEBUG] [Thread-117827] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:58:04.178 [DEBUG] [Thread-117827] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:58:04.178 [DEBUG] [Thread-117827] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:58:04.178 [DEBUG] [Thread-117827] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:58:04.179 [DEBUG] [Thread-117827] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:58:04.179 [DEBUG] [Thread-117827] [transport.py] [_log()] client lang: <none>
2025-11-03T14:58:04.179 [DEBUG] [Thread-117827] [transport.py] [_log()] server lang: <none>
2025-11-03T14:58:04.179 [DEBUG] [Thread-117827] [transport.py] [_log()] kex follows: False
2025-11-03T14:58:04.179 [DEBUG] [Thread-117827] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:58:04.179 [DEBUG] [Thread-117827] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:58:04.179 [DEBUG] [Thread-117827] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:58:04.179 [DEBUG] [Thread-117827] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:58:04.180 [DEBUG] [Thread-117827] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:58:04.180 [DEBUG] [Thread-117827] [transport.py] [_log()] Compression: none
2025-11-03T14:58:04.180 [DEBUG] [Thread-117827] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:58:04.235 [DEBUG] [Thread-117827] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:58:04.236 [DEBUG] [Thread-117827] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:58:04.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:58:04.238 [DEBUG] [Thread-117827] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:58:04.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:58:04.295 [DEBUG] [Thread-117827] [transport.py] [_log()] userauth is OK
2025-11-03T14:58:04.295 [DEBUG] [Thread-117827] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:58:04.295 [DEBUG] [Thread-117827] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:58:04.296 [DEBUG] [Thread-117827] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:58:04.296 [DEBUG] [Thread-117827] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:58:04.315 [INFO] [Thread-117827] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:58:04.316 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:58:04.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:58:05.166 [DEBUG] [Thread-117827] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:58:05.166 [DEBUG] [Thread-117827] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:58:05.214 [DEBUG] [Thread-117827] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:58:05.214 [DEBUG] [Thread-117827] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:58:05.223 [DEBUG] [Thread-117827] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:58:05.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:58:05.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:58:05.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:58:05.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:58:05.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:58:05.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:58:05.270 [DEBUG] [Thread-117827] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:58:06.395 [DEBUG] [Thread-117829 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:58:14.096 [DEBUG] [Thread-117830 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:58:21.437 [DEBUG] [Thread-117831 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:58:35.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:58:35.277 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:58:35.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:58:36.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 58, 17), 46.97, 3.27, 0.0, 30.79, 26.35, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:58:36.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:58:17
2025-11-03T14:58:36.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:58:36.398 [DEBUG] [Thread-117832] [transport.py] [_log()] starting thread (client mode): 0xed4e500
2025-11-03T14:58:36.399 [DEBUG] [Thread-117832] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:58:36.419 [DEBUG] [Thread-117832] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:58:36.419 [INFO] [Thread-117832] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:58:36.422 [DEBUG] [Thread-117832] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:58:36.422 [DEBUG] [Thread-117832] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:58:36.422 [DEBUG] [Thread-117832] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:58:36.422 [DEBUG] [Thread-117832] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:58:36.422 [DEBUG] [Thread-117832] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:58:36.422 [DEBUG] [Thread-117832] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:58:36.422 [DEBUG] [Thread-117832] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:58:36.422 [DEBUG] [Thread-117832] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:58:36.423 [DEBUG] [Thread-117832] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:58:36.423 [DEBUG] [Thread-117832] [transport.py] [_log()] client lang: <none>
2025-11-03T14:58:36.423 [DEBUG] [Thread-117832] [transport.py] [_log()] server lang: <none>
2025-11-03T14:58:36.423 [DEBUG] [Thread-117832] [transport.py] [_log()] kex follows: False
2025-11-03T14:58:36.423 [DEBUG] [Thread-117832] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:58:36.423 [DEBUG] [Thread-117832] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:58:36.423 [DEBUG] [Thread-117832] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:58:36.423 [DEBUG] [Thread-117832] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:58:36.423 [DEBUG] [Thread-117832] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:58:36.423 [DEBUG] [Thread-117832] [transport.py] [_log()] Compression: none
2025-11-03T14:58:36.423 [DEBUG] [Thread-117832] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:58:36.438 [DEBUG] [Thread-117832] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:58:36.438 [DEBUG] [Thread-117832] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:58:36.438 [DEBUG] [Thread-117832] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:58:36.438 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:58:36.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:58:36.439 [DEBUG] [Thread-117832] [transport.py] [_log()] userauth is OK
2025-11-03T14:58:36.439 [DEBUG] [Thread-117832] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:58:36.439 [DEBUG] [Thread-117832] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:58:36.439 [DEBUG] [Thread-117832] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:58:36.439 [DEBUG] [Thread-117832] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:58:36.457 [INFO] [Thread-117832] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:58:36.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:58:36.474 [DEBUG] [Thread-117834 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:58:37.187 [DEBUG] [Thread-117832] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:58:37.187 [DEBUG] [Thread-117832] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:58:37.187 [DEBUG] [Thread-117832] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:58:37.228 [DEBUG] [Thread-117832] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:58:37.228 [DEBUG] [Thread-117832] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:58:37.231 [DEBUG] [Thread-117832] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:58:37.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:58:37.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:58:37.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:58:37.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:58:37.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:58:37.247 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:58:37.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:58:37.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:58:37.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:58:37.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.540034 -999.00  +26.90  16.37      7  -10.20 1 1 1 1 1   888    0 37.69 33.12 ----- 20.3 16.4 328.0 43.5 30.8 -31.8 30.3 -30.1 31.3 -29.9 31.9 -30.9
2025-11-03T14:58:37.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:58:37.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:58:37.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.540034
2025-11-03T14:58:37.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:58:37.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:58:37.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:58:37.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:58:37.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:58:37.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:58:17', tmtdew=46.97, humidity=3.27, cloud=0.0, wind=30.79, temperature=26.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:57:38.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:58:37.248 [DEBUG] [Thread-117832] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:58:37.323 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:58:37.336 [DEBUG] [Thread-117836] [transport.py] [_log()] starting thread (client mode): 0x1174f220
2025-11-03T14:58:37.336 [DEBUG] [Thread-117836] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:58:37.352 [DEBUG] [Thread-117836] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:58:37.352 [INFO] [Thread-117836] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:58:37.361 [DEBUG] [Thread-117836] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:58:37.361 [DEBUG] [Thread-117836] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:58:37.361 [DEBUG] [Thread-117836] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:58:37.361 [DEBUG] [Thread-117836] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:58:37.361 [DEBUG] [Thread-117836] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:58:37.361 [DEBUG] [Thread-117836] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:58:37.361 [DEBUG] [Thread-117836] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:58:37.361 [DEBUG] [Thread-117836] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:58:37.361 [DEBUG] [Thread-117836] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:58:37.361 [DEBUG] [Thread-117836] [transport.py] [_log()] client lang: <none>
2025-11-03T14:58:37.362 [DEBUG] [Thread-117836] [transport.py] [_log()] server lang: <none>
2025-11-03T14:58:37.362 [DEBUG] [Thread-117836] [transport.py] [_log()] kex follows: False
2025-11-03T14:58:37.362 [DEBUG] [Thread-117836] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:58:37.362 [DEBUG] [Thread-117836] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:58:37.362 [DEBUG] [Thread-117836] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:58:37.362 [DEBUG] [Thread-117836] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:58:37.362 [DEBUG] [Thread-117836] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:58:37.362 [DEBUG] [Thread-117836] [transport.py] [_log()] Compression: none
2025-11-03T14:58:37.362 [DEBUG] [Thread-117836] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:58:37.417 [DEBUG] [Thread-117836] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:58:37.417 [DEBUG] [Thread-117836] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:58:37.417 [DEBUG] [Thread-117836] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:58:37.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:58:37.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:58:37.474 [DEBUG] [Thread-117836] [transport.py] [_log()] userauth is OK
2025-11-03T14:58:37.474 [DEBUG] [Thread-117836] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:58:37.474 [DEBUG] [Thread-117836] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:58:37.474 [DEBUG] [Thread-117836] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:58:37.474 [DEBUG] [Thread-117836] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:58:37.489 [INFO] [Thread-117836] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:58:37.489 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:58:37.489 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:58:38.417 [DEBUG] [Thread-117836] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:58:38.417 [DEBUG] [Thread-117836] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:58:38.465 [DEBUG] [Thread-117836] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:58:38.465 [DEBUG] [Thread-117836] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:58:38.474 [DEBUG] [Thread-117836] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:58:38.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:58:38.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:58:38.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:58:38.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:58:38.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:58:38.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:58:38.506 [DEBUG] [Thread-117836] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:58:51.504 [DEBUG] [Thread-117838 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:59:01.942 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:59:01.942 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:59:06.547 [DEBUG] [Thread-117839 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:59:08.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:59:08.528 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:59:08.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:59:09.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 58, 50), 47.54, 3.15, 0.0, 30.7, 26.87, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:59:09.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:58:50
2025-11-03T14:59:09.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:59:09.540 [DEBUG] [Thread-117840] [transport.py] [_log()] starting thread (client mode): 0x117bc520
2025-11-03T14:59:09.542 [DEBUG] [Thread-117840] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:59:09.561 [DEBUG] [Thread-117840] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:59:09.561 [INFO] [Thread-117840] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:59:09.564 [DEBUG] [Thread-117840] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:59:09.564 [DEBUG] [Thread-117840] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:59:09.564 [DEBUG] [Thread-117840] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:59:09.564 [DEBUG] [Thread-117840] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:59:09.564 [DEBUG] [Thread-117840] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:59:09.564 [DEBUG] [Thread-117840] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:59:09.564 [DEBUG] [Thread-117840] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:59:09.564 [DEBUG] [Thread-117840] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:59:09.564 [DEBUG] [Thread-117840] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:59:09.564 [DEBUG] [Thread-117840] [transport.py] [_log()] client lang: <none>
2025-11-03T14:59:09.564 [DEBUG] [Thread-117840] [transport.py] [_log()] server lang: <none>
2025-11-03T14:59:09.564 [DEBUG] [Thread-117840] [transport.py] [_log()] kex follows: False
2025-11-03T14:59:09.564 [DEBUG] [Thread-117840] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:59:09.564 [DEBUG] [Thread-117840] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:59:09.565 [DEBUG] [Thread-117840] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:59:09.565 [DEBUG] [Thread-117840] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:59:09.565 [DEBUG] [Thread-117840] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:59:09.565 [DEBUG] [Thread-117840] [transport.py] [_log()] Compression: none
2025-11-03T14:59:09.565 [DEBUG] [Thread-117840] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:59:09.582 [DEBUG] [Thread-117840] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:59:09.583 [DEBUG] [Thread-117840] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:59:09.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:59:09.584 [DEBUG] [Thread-117840] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:59:09.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:59:09.586 [DEBUG] [Thread-117840] [transport.py] [_log()] userauth is OK
2025-11-03T14:59:09.587 [DEBUG] [Thread-117840] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:59:09.587 [DEBUG] [Thread-117840] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:59:09.587 [DEBUG] [Thread-117840] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:59:09.587 [DEBUG] [Thread-117840] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:59:09.612 [INFO] [Thread-117840] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:59:09.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:59:10.266 [DEBUG] [Thread-117840] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:59:10.267 [DEBUG] [Thread-117840] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:59:10.267 [DEBUG] [Thread-117840] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:59:10.308 [DEBUG] [Thread-117840] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:59:10.308 [DEBUG] [Thread-117840] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:59:10.311 [DEBUG] [Thread-117840] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:59:10.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:59:10.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:59:10.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:59:10.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:59:10.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:59:10.333 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:59:10.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:59:10.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:59:10.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:59:10.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.540728 -999.00  +26.70  37.37      7  -10.60 1 1 2 1 1   888    0 38.24 32.51 ----- 35.5 37.4 329.8 45.3 30.8 -32.0 30.3 -31.6 31.3 -30.1 31.9 -30.8
2025-11-03T14:59:10.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:59:10.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:59:10.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.540728
2025-11-03T14:59:10.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:59:10.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:59:10.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:59:10.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:59:10.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:59:10.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:58:50', tmtdew=47.54, humidity=3.15, cloud=0.0, wind=30.7, temperature=26.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:58:38.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:59:10.335 [DEBUG] [Thread-117840] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:59:10.420 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:59:10.432 [DEBUG] [Thread-117843] [transport.py] [_log()] starting thread (client mode): 0x117be200
2025-11-03T14:59:10.432 [DEBUG] [Thread-117843] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:59:10.452 [DEBUG] [Thread-117843] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:59:10.453 [INFO] [Thread-117843] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:59:10.460 [DEBUG] [Thread-117843] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:59:10.460 [DEBUG] [Thread-117843] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:59:10.460 [DEBUG] [Thread-117843] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:59:10.461 [DEBUG] [Thread-117843] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:59:10.461 [DEBUG] [Thread-117843] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:59:10.461 [DEBUG] [Thread-117843] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:59:10.461 [DEBUG] [Thread-117843] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:59:10.461 [DEBUG] [Thread-117843] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:59:10.461 [DEBUG] [Thread-117843] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:59:10.461 [DEBUG] [Thread-117843] [transport.py] [_log()] client lang: <none>
2025-11-03T14:59:10.461 [DEBUG] [Thread-117843] [transport.py] [_log()] server lang: <none>
2025-11-03T14:59:10.461 [DEBUG] [Thread-117843] [transport.py] [_log()] kex follows: False
2025-11-03T14:59:10.461 [DEBUG] [Thread-117843] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:59:10.461 [DEBUG] [Thread-117843] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:59:10.461 [DEBUG] [Thread-117843] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:59:10.461 [DEBUG] [Thread-117843] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:59:10.461 [DEBUG] [Thread-117843] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:59:10.461 [DEBUG] [Thread-117843] [transport.py] [_log()] Compression: none
2025-11-03T14:59:10.462 [DEBUG] [Thread-117843] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:59:10.519 [DEBUG] [Thread-117843] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:59:10.520 [DEBUG] [Thread-117843] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:59:10.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:59:10.521 [DEBUG] [Thread-117843] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:59:10.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:59:10.579 [DEBUG] [Thread-117843] [transport.py] [_log()] userauth is OK
2025-11-03T14:59:10.579 [DEBUG] [Thread-117843] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:59:10.579 [DEBUG] [Thread-117843] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:59:10.579 [DEBUG] [Thread-117843] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:59:10.579 [DEBUG] [Thread-117843] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:59:10.599 [INFO] [Thread-117843] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:59:10.599 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:59:10.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:59:11.440 [DEBUG] [Thread-117843] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:59:11.440 [DEBUG] [Thread-117843] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:59:11.488 [DEBUG] [Thread-117843] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:59:11.489 [DEBUG] [Thread-117843] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:59:11.498 [DEBUG] [Thread-117843] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:59:11.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:59:11.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:59:11.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:59:11.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:59:11.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:59:11.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:59:11.535 [DEBUG] [Thread-117843] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:59:14.225 [DEBUG] [Thread-117845 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:59:21.581 [DEBUG] [Thread-117846 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:59:36.649 [DEBUG] [Thread-117847 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T14:59:41.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T14:59:41.548 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T14:59:41.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T14:59:42.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 59, 22), 47.72, 3.12, 0.0, 29.38, 27.07, 0, 0, 0, 2, 0, 0),)
2025-11-03T14:59:42.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:59:22
2025-11-03T14:59:42.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T14:59:42.602 [DEBUG] [Thread-117848] [transport.py] [_log()] starting thread (client mode): 0x117bcb80
2025-11-03T14:59:42.602 [DEBUG] [Thread-117848] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:59:42.622 [DEBUG] [Thread-117848] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T14:59:42.623 [INFO] [Thread-117848] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T14:59:42.624 [DEBUG] [Thread-117848] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:59:42.624 [DEBUG] [Thread-117848] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T14:59:42.624 [DEBUG] [Thread-117848] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:59:42.624 [DEBUG] [Thread-117848] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:59:42.624 [DEBUG] [Thread-117848] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:59:42.624 [DEBUG] [Thread-117848] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:59:42.624 [DEBUG] [Thread-117848] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:59:42.624 [DEBUG] [Thread-117848] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:59:42.624 [DEBUG] [Thread-117848] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:59:42.624 [DEBUG] [Thread-117848] [transport.py] [_log()] client lang: <none>
2025-11-03T14:59:42.624 [DEBUG] [Thread-117848] [transport.py] [_log()] server lang: <none>
2025-11-03T14:59:42.624 [DEBUG] [Thread-117848] [transport.py] [_log()] kex follows: False
2025-11-03T14:59:42.625 [DEBUG] [Thread-117848] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:59:42.625 [DEBUG] [Thread-117848] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:59:42.625 [DEBUG] [Thread-117848] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:59:42.625 [DEBUG] [Thread-117848] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:59:42.625 [DEBUG] [Thread-117848] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:59:42.625 [DEBUG] [Thread-117848] [transport.py] [_log()] Compression: none
2025-11-03T14:59:42.625 [DEBUG] [Thread-117848] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:59:42.641 [DEBUG] [Thread-117848] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:59:42.641 [DEBUG] [Thread-117848] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:59:42.642 [DEBUG] [Thread-117848] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T14:59:42.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T14:59:42.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:59:42.644 [DEBUG] [Thread-117848] [transport.py] [_log()] userauth is OK
2025-11-03T14:59:42.644 [DEBUG] [Thread-117848] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:59:42.645 [DEBUG] [Thread-117848] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:59:42.645 [DEBUG] [Thread-117848] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T14:59:42.645 [DEBUG] [Thread-117848] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:59:42.681 [INFO] [Thread-117848] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:59:42.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:59:43.382 [DEBUG] [Thread-117848] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:59:43.383 [DEBUG] [Thread-117848] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:59:43.383 [DEBUG] [Thread-117848] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T14:59:43.424 [DEBUG] [Thread-117848] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:59:43.424 [DEBUG] [Thread-117848] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:59:43.428 [DEBUG] [Thread-117848] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:59:43.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:59:43.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T14:59:43.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T14:59:43.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T14:59:43.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:59:43.463 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T14:59:43.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:59:43.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:59:43.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T14:59:43.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.541075 -999.00  +26.40  37.12      8  -10.50 1 1 2 1 1   888    0 37.15 29.53 ----- 41.7 37.1 323.0 52.9 30.8 -32.0 30.2 -31.1 31.3 -30.3 31.8 -30.8
2025-11-03T14:59:43.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T14:59:43.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T14:59:43.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.541075
2025-11-03T14:59:43.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T14:59:43.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T14:59:43.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T14:59:43.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T14:59:43.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T14:59:43.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:59:22', tmtdew=47.72, humidity=3.12, cloud=0.0, wind=29.38, temperature=27.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:59:08.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T14:59:43.467 [DEBUG] [Thread-117848] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:59:43.551 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T14:59:43.564 [DEBUG] [Thread-117851] [transport.py] [_log()] starting thread (client mode): 0x117e8a90
2025-11-03T14:59:43.564 [DEBUG] [Thread-117851] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T14:59:43.578 [DEBUG] [Thread-117851] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T14:59:43.578 [INFO] [Thread-117851] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T14:59:43.586 [DEBUG] [Thread-117851] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T14:59:43.586 [DEBUG] [Thread-117851] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T14:59:43.586 [DEBUG] [Thread-117851] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T14:59:43.586 [DEBUG] [Thread-117851] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:59:43.587 [DEBUG] [Thread-117851] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T14:59:43.587 [DEBUG] [Thread-117851] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:59:43.587 [DEBUG] [Thread-117851] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T14:59:43.587 [DEBUG] [Thread-117851] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T14:59:43.587 [DEBUG] [Thread-117851] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T14:59:43.587 [DEBUG] [Thread-117851] [transport.py] [_log()] client lang: <none>
2025-11-03T14:59:43.587 [DEBUG] [Thread-117851] [transport.py] [_log()] server lang: <none>
2025-11-03T14:59:43.587 [DEBUG] [Thread-117851] [transport.py] [_log()] kex follows: False
2025-11-03T14:59:43.587 [DEBUG] [Thread-117851] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T14:59:43.587 [DEBUG] [Thread-117851] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T14:59:43.588 [DEBUG] [Thread-117851] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T14:59:43.588 [DEBUG] [Thread-117851] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T14:59:43.588 [DEBUG] [Thread-117851] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T14:59:43.588 [DEBUG] [Thread-117851] [transport.py] [_log()] Compression: none
2025-11-03T14:59:43.588 [DEBUG] [Thread-117851] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T14:59:43.647 [DEBUG] [Thread-117851] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T14:59:43.647 [DEBUG] [Thread-117851] [transport.py] [_log()] Switch to new keys ...
2025-11-03T14:59:43.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T14:59:43.649 [DEBUG] [Thread-117851] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T14:59:43.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T14:59:43.702 [DEBUG] [Thread-117851] [transport.py] [_log()] userauth is OK
2025-11-03T14:59:43.703 [DEBUG] [Thread-117851] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T14:59:43.703 [DEBUG] [Thread-117851] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T14:59:43.704 [DEBUG] [Thread-117851] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T14:59:43.704 [DEBUG] [Thread-117851] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T14:59:43.722 [INFO] [Thread-117851] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T14:59:43.723 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T14:59:43.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T14:59:44.597 [DEBUG] [Thread-117851] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T14:59:44.597 [DEBUG] [Thread-117851] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T14:59:44.645 [DEBUG] [Thread-117851] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T14:59:44.645 [DEBUG] [Thread-117851] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T14:59:44.656 [DEBUG] [Thread-117851] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T14:59:44.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T14:59:44.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T14:59:44.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T14:59:44.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T14:59:44.686 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T14:59:44.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T14:59:44.694 [DEBUG] [Thread-117851] [transport.py] [_log()] EOF in transport thread
2025-11-03T14:59:51.687 [DEBUG] [Thread-117853 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:00:02.082 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:00:02.083 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:00:06.739 [DEBUG] [Thread-117854 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:00:14.414 [DEBUG] [Thread-117855 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:00:14.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:00:14.688 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:00:14.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:00:15.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 14, 59, 54), 48.25, 3.07, 0.0, 36.81, 27.42, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:00:15.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 14:59:54
2025-11-03T15:00:15.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:00:15.759 [DEBUG] [Thread-117856] [transport.py] [_log()] starting thread (client mode): 0xed4f880
2025-11-03T15:00:15.759 [DEBUG] [Thread-117856] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:00:15.778 [DEBUG] [Thread-117856] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:00:15.778 [INFO] [Thread-117856] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:00:15.781 [DEBUG] [Thread-117856] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:00:15.782 [DEBUG] [Thread-117856] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:00:15.782 [DEBUG] [Thread-117856] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:00:15.782 [DEBUG] [Thread-117856] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:00:15.782 [DEBUG] [Thread-117856] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:00:15.782 [DEBUG] [Thread-117856] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:00:15.782 [DEBUG] [Thread-117856] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:00:15.782 [DEBUG] [Thread-117856] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:00:15.782 [DEBUG] [Thread-117856] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:00:15.782 [DEBUG] [Thread-117856] [transport.py] [_log()] client lang: <none>
2025-11-03T15:00:15.782 [DEBUG] [Thread-117856] [transport.py] [_log()] server lang: <none>
2025-11-03T15:00:15.782 [DEBUG] [Thread-117856] [transport.py] [_log()] kex follows: False
2025-11-03T15:00:15.782 [DEBUG] [Thread-117856] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:00:15.782 [DEBUG] [Thread-117856] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:00:15.782 [DEBUG] [Thread-117856] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:00:15.782 [DEBUG] [Thread-117856] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:00:15.782 [DEBUG] [Thread-117856] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:00:15.782 [DEBUG] [Thread-117856] [transport.py] [_log()] Compression: none
2025-11-03T15:00:15.782 [DEBUG] [Thread-117856] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:00:15.802 [DEBUG] [Thread-117856] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:00:15.803 [DEBUG] [Thread-117856] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:00:15.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:00:15.804 [DEBUG] [Thread-117856] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:00:15.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:00:15.806 [DEBUG] [Thread-117856] [transport.py] [_log()] userauth is OK
2025-11-03T15:00:15.806 [DEBUG] [Thread-117856] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:00:15.806 [DEBUG] [Thread-117856] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:00:15.806 [DEBUG] [Thread-117856] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:00:15.806 [DEBUG] [Thread-117856] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:00:15.827 [INFO] [Thread-117856] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:00:15.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:00:16.457 [DEBUG] [Thread-117856] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:00:16.458 [DEBUG] [Thread-117856] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:00:16.458 [DEBUG] [Thread-117856] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:00:16.499 [DEBUG] [Thread-117856] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:00:16.499 [DEBUG] [Thread-117856] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:00:16.502 [DEBUG] [Thread-117856] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:00:16.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:00:16.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:00:16.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:00:16.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:00:16.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:00:16.528 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:00:16.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:00:16.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:00:16.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:00:16.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.541422 -999.00  +26.20  36.78      8  -10.50 1 1 2 1 1   888    0 37.14 24.28 ----- 39.3 36.8 331.8 53.1 30.7 -31.9 30.2 -30.8 31.2 -30.3 31.8 -30.8
2025-11-03T15:00:16.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:00:16.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:00:16.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.541422
2025-11-03T15:00:16.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:00:16.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:00:16.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:00:16.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:00:16.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:00:16.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T14:59:54', tmtdew=48.25, humidity=3.07, cloud=0.0, wind=36.81, temperature=27.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T12:59:38.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:00:16.530 [DEBUG] [Thread-117856] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:00:16.608 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:00:16.621 [DEBUG] [Thread-117859] [transport.py] [_log()] starting thread (client mode): 0xedd60e0
2025-11-03T15:00:16.621 [DEBUG] [Thread-117859] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:00:16.635 [DEBUG] [Thread-117859] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:00:16.635 [INFO] [Thread-117859] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:00:16.643 [DEBUG] [Thread-117859] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:00:16.643 [DEBUG] [Thread-117859] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:00:16.644 [DEBUG] [Thread-117859] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:00:16.644 [DEBUG] [Thread-117859] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:00:16.644 [DEBUG] [Thread-117859] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:00:16.644 [DEBUG] [Thread-117859] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:00:16.644 [DEBUG] [Thread-117859] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:00:16.644 [DEBUG] [Thread-117859] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:00:16.644 [DEBUG] [Thread-117859] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:00:16.644 [DEBUG] [Thread-117859] [transport.py] [_log()] client lang: <none>
2025-11-03T15:00:16.644 [DEBUG] [Thread-117859] [transport.py] [_log()] server lang: <none>
2025-11-03T15:00:16.644 [DEBUG] [Thread-117859] [transport.py] [_log()] kex follows: False
2025-11-03T15:00:16.644 [DEBUG] [Thread-117859] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:00:16.644 [DEBUG] [Thread-117859] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:00:16.645 [DEBUG] [Thread-117859] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:00:16.645 [DEBUG] [Thread-117859] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:00:16.645 [DEBUG] [Thread-117859] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:00:16.645 [DEBUG] [Thread-117859] [transport.py] [_log()] Compression: none
2025-11-03T15:00:16.645 [DEBUG] [Thread-117859] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:00:16.703 [DEBUG] [Thread-117859] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:00:16.704 [DEBUG] [Thread-117859] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:00:16.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:00:16.705 [DEBUG] [Thread-117859] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:00:16.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:00:16.766 [DEBUG] [Thread-117859] [transport.py] [_log()] userauth is OK
2025-11-03T15:00:16.766 [DEBUG] [Thread-117859] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:00:16.767 [DEBUG] [Thread-117859] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:00:16.767 [DEBUG] [Thread-117859] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:00:16.767 [DEBUG] [Thread-117859] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:00:16.781 [INFO] [Thread-117859] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:00:16.781 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:00:16.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:00:17.618 [DEBUG] [Thread-117859] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:00:17.619 [DEBUG] [Thread-117859] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:00:17.666 [DEBUG] [Thread-117859] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:00:17.667 [DEBUG] [Thread-117859] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:00:17.676 [DEBUG] [Thread-117859] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:00:17.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:00:17.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:00:17.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:00:17.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:00:17.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:00:17.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:00:17.714 [DEBUG] [Thread-117859] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:00:21.787 [DEBUG] [Thread-117861 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:00:36.837 [DEBUG] [Thread-117862 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:00:47.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:00:47.737 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:00:47.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:00:48.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 0, 27), 47.96, 3.11, 0.0, 33.74, 26.89, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:00:48.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:00:27
2025-11-03T15:00:48.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:00:48.683 [DEBUG] [Thread-117863] [transport.py] [_log()] starting thread (client mode): 0x117bc0d0
2025-11-03T15:00:48.683 [DEBUG] [Thread-117863] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:00:48.703 [DEBUG] [Thread-117863] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:00:48.703 [INFO] [Thread-117863] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:00:48.706 [DEBUG] [Thread-117863] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:00:48.706 [DEBUG] [Thread-117863] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:00:48.706 [DEBUG] [Thread-117863] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:00:48.706 [DEBUG] [Thread-117863] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:00:48.706 [DEBUG] [Thread-117863] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:00:48.706 [DEBUG] [Thread-117863] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:00:48.706 [DEBUG] [Thread-117863] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:00:48.706 [DEBUG] [Thread-117863] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:00:48.706 [DEBUG] [Thread-117863] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:00:48.707 [DEBUG] [Thread-117863] [transport.py] [_log()] client lang: <none>
2025-11-03T15:00:48.707 [DEBUG] [Thread-117863] [transport.py] [_log()] server lang: <none>
2025-11-03T15:00:48.707 [DEBUG] [Thread-117863] [transport.py] [_log()] kex follows: False
2025-11-03T15:00:48.707 [DEBUG] [Thread-117863] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:00:48.707 [DEBUG] [Thread-117863] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:00:48.707 [DEBUG] [Thread-117863] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:00:48.707 [DEBUG] [Thread-117863] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:00:48.707 [DEBUG] [Thread-117863] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:00:48.707 [DEBUG] [Thread-117863] [transport.py] [_log()] Compression: none
2025-11-03T15:00:48.707 [DEBUG] [Thread-117863] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:00:48.726 [DEBUG] [Thread-117863] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:00:48.726 [DEBUG] [Thread-117863] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:00:48.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:00:48.728 [DEBUG] [Thread-117863] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:00:48.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:00:48.729 [DEBUG] [Thread-117863] [transport.py] [_log()] userauth is OK
2025-11-03T15:00:48.730 [DEBUG] [Thread-117863] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:00:48.730 [DEBUG] [Thread-117863] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:00:48.730 [DEBUG] [Thread-117863] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:00:48.730 [DEBUG] [Thread-117863] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:00:48.745 [INFO] [Thread-117863] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:00:48.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:00:49.391 [DEBUG] [Thread-117863] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:00:49.392 [DEBUG] [Thread-117863] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:00:49.392 [DEBUG] [Thread-117863] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:00:49.433 [DEBUG] [Thread-117863] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:00:49.433 [DEBUG] [Thread-117863] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:00:49.437 [DEBUG] [Thread-117863] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:00:49.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:00:49.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:00:49.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:00:49.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:00:49.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:00:49.460 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:00:49.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:00:49.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:00:49.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:00:49.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.541769 -999.00  +26.20  32.12      8  -10.10 1 1 2 1 1   888    0 38.25 22.50 ----- 32.1 32.1 319.6 44.1 30.7 -31.5 30.2 -30.6 31.1 -31.2 31.9 -30.8
2025-11-03T15:00:49.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:00:49.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:00:49.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.541769
2025-11-03T15:00:49.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:00:49.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:00:49.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:00:49.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:00:49.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:00:49.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:00:27', tmtdew=47.96, humidity=3.11, cloud=0.0, wind=33.74, temperature=26.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:00:08.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:00:49.463 [DEBUG] [Thread-117863] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:00:49.546 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:00:49.557 [DEBUG] [Thread-117866] [transport.py] [_log()] starting thread (client mode): 0xed4f880
2025-11-03T15:00:49.558 [DEBUG] [Thread-117866] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:00:49.574 [DEBUG] [Thread-117866] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:00:49.574 [INFO] [Thread-117866] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:00:49.582 [DEBUG] [Thread-117866] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:00:49.582 [DEBUG] [Thread-117866] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:00:49.582 [DEBUG] [Thread-117866] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:00:49.582 [DEBUG] [Thread-117866] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:00:49.582 [DEBUG] [Thread-117866] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:00:49.582 [DEBUG] [Thread-117866] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:00:49.582 [DEBUG] [Thread-117866] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:00:49.582 [DEBUG] [Thread-117866] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:00:49.582 [DEBUG] [Thread-117866] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:00:49.582 [DEBUG] [Thread-117866] [transport.py] [_log()] client lang: <none>
2025-11-03T15:00:49.582 [DEBUG] [Thread-117866] [transport.py] [_log()] server lang: <none>
2025-11-03T15:00:49.582 [DEBUG] [Thread-117866] [transport.py] [_log()] kex follows: False
2025-11-03T15:00:49.582 [DEBUG] [Thread-117866] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:00:49.583 [DEBUG] [Thread-117866] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:00:49.583 [DEBUG] [Thread-117866] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:00:49.583 [DEBUG] [Thread-117866] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:00:49.583 [DEBUG] [Thread-117866] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:00:49.583 [DEBUG] [Thread-117866] [transport.py] [_log()] Compression: none
2025-11-03T15:00:49.583 [DEBUG] [Thread-117866] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:00:49.639 [DEBUG] [Thread-117866] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:00:49.649 [DEBUG] [Thread-117866] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:00:49.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:00:49.650 [DEBUG] [Thread-117866] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:00:49.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:00:49.695 [DEBUG] [Thread-117866] [transport.py] [_log()] userauth is OK
2025-11-03T15:00:49.695 [DEBUG] [Thread-117866] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:00:49.695 [DEBUG] [Thread-117866] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:00:49.695 [DEBUG] [Thread-117866] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:00:49.696 [DEBUG] [Thread-117866] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:00:49.716 [INFO] [Thread-117866] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:00:49.717 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:00:49.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:00:50.556 [DEBUG] [Thread-117866] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:00:50.557 [DEBUG] [Thread-117866] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:00:50.605 [DEBUG] [Thread-117866] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:00:50.606 [DEBUG] [Thread-117866] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:00:50.615 [DEBUG] [Thread-117866] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:00:50.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:00:50.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:00:50.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:00:50.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:00:50.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:00:50.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:00:50.661 [DEBUG] [Thread-117866] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:00:51.867 [DEBUG] [Thread-117868 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:01:02.223 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:01:02.224 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:01:06.918 [DEBUG] [Thread-117869 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:01:14.576 [DEBUG] [Thread-117870 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:01:20.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:01:20.684 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:01:20.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:01:21.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 0, 59), 47.63, 3.19, 0.0, 34.57, 26.47, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:01:21.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:00:59
2025-11-03T15:01:21.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:01:21.745 [DEBUG] [Thread-117871] [transport.py] [_log()] starting thread (client mode): 0x117bcf40
2025-11-03T15:01:21.745 [DEBUG] [Thread-117871] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:01:21.756 [DEBUG] [Thread-117871] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:01:21.756 [INFO] [Thread-117871] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:01:21.759 [DEBUG] [Thread-117871] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:01:21.759 [DEBUG] [Thread-117871] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:01:21.759 [DEBUG] [Thread-117871] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:01:21.759 [DEBUG] [Thread-117871] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:01:21.759 [DEBUG] [Thread-117871] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:01:21.759 [DEBUG] [Thread-117871] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:01:21.759 [DEBUG] [Thread-117871] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:01:21.759 [DEBUG] [Thread-117871] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:01:21.759 [DEBUG] [Thread-117871] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:01:21.759 [DEBUG] [Thread-117871] [transport.py] [_log()] client lang: <none>
2025-11-03T15:01:21.759 [DEBUG] [Thread-117871] [transport.py] [_log()] server lang: <none>
2025-11-03T15:01:21.759 [DEBUG] [Thread-117871] [transport.py] [_log()] kex follows: False
2025-11-03T15:01:21.759 [DEBUG] [Thread-117871] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:01:21.759 [DEBUG] [Thread-117871] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:01:21.759 [DEBUG] [Thread-117871] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:01:21.759 [DEBUG] [Thread-117871] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:01:21.759 [DEBUG] [Thread-117871] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:01:21.759 [DEBUG] [Thread-117871] [transport.py] [_log()] Compression: none
2025-11-03T15:01:21.759 [DEBUG] [Thread-117871] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:01:21.778 [DEBUG] [Thread-117871] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:01:21.778 [DEBUG] [Thread-117871] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:01:21.779 [DEBUG] [Thread-117871] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:01:21.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:01:21.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:01:21.821 [DEBUG] [Thread-117871] [transport.py] [_log()] userauth is OK
2025-11-03T15:01:21.821 [DEBUG] [Thread-117871] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:01:21.822 [DEBUG] [Thread-117871] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:01:21.822 [DEBUG] [Thread-117871] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:01:21.822 [DEBUG] [Thread-117871] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:01:21.855 [INFO] [Thread-117871] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:01:21.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:01:21.959 [DEBUG] [Thread-117873 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:01:22.501 [DEBUG] [Thread-117871] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:01:22.501 [DEBUG] [Thread-117871] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:01:22.502 [DEBUG] [Thread-117871] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:01:22.542 [DEBUG] [Thread-117871] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:01:22.542 [DEBUG] [Thread-117871] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:01:22.545 [DEBUG] [Thread-117871] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:01:22.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:01:22.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:01:22.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:01:22.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:01:22.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:01:22.566 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:01:22.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:01:22.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:01:22.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:01:22.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.542117 -999.00  +26.70  39.95      7  -10.30 1 1 2 1 1   888    0 37.35 21.22 ----- 34.9 40.0 319.2 44.7 30.7 -32.2 30.3 -31.1 31.1 -30.2 31.9 -30.1
2025-11-03T15:01:22.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:01:22.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:01:22.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.542117
2025-11-03T15:01:22.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:01:22.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:01:22.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:01:22.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:01:22.569 [DEBUG] [Thread-117871] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:01:22.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:01:22.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:00:59', tmtdew=47.63, humidity=3.19, cloud=0.0, wind=34.57, temperature=26.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:00:38.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:01:22.644 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:01:22.656 [DEBUG] [Thread-117875] [transport.py] [_log()] starting thread (client mode): 0xedd6710
2025-11-03T15:01:22.656 [DEBUG] [Thread-117875] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:01:22.671 [DEBUG] [Thread-117875] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:01:22.671 [INFO] [Thread-117875] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:01:22.679 [DEBUG] [Thread-117875] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:01:22.679 [DEBUG] [Thread-117875] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:01:22.679 [DEBUG] [Thread-117875] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:01:22.679 [DEBUG] [Thread-117875] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:01:22.679 [DEBUG] [Thread-117875] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:01:22.679 [DEBUG] [Thread-117875] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:01:22.679 [DEBUG] [Thread-117875] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:01:22.679 [DEBUG] [Thread-117875] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:01:22.679 [DEBUG] [Thread-117875] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:01:22.679 [DEBUG] [Thread-117875] [transport.py] [_log()] client lang: <none>
2025-11-03T15:01:22.679 [DEBUG] [Thread-117875] [transport.py] [_log()] server lang: <none>
2025-11-03T15:01:22.679 [DEBUG] [Thread-117875] [transport.py] [_log()] kex follows: False
2025-11-03T15:01:22.679 [DEBUG] [Thread-117875] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:01:22.679 [DEBUG] [Thread-117875] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:01:22.679 [DEBUG] [Thread-117875] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:01:22.679 [DEBUG] [Thread-117875] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:01:22.679 [DEBUG] [Thread-117875] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:01:22.679 [DEBUG] [Thread-117875] [transport.py] [_log()] Compression: none
2025-11-03T15:01:22.679 [DEBUG] [Thread-117875] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:01:22.739 [DEBUG] [Thread-117875] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:01:22.739 [DEBUG] [Thread-117875] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:01:22.739 [DEBUG] [Thread-117875] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:01:22.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:01:22.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:01:22.798 [DEBUG] [Thread-117875] [transport.py] [_log()] userauth is OK
2025-11-03T15:01:22.798 [DEBUG] [Thread-117875] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:01:22.798 [DEBUG] [Thread-117875] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:01:22.798 [DEBUG] [Thread-117875] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:01:22.799 [DEBUG] [Thread-117875] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:01:22.813 [INFO] [Thread-117875] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:01:22.813 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:01:22.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:01:23.641 [DEBUG] [Thread-117875] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:01:23.641 [DEBUG] [Thread-117875] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:01:23.688 [DEBUG] [Thread-117875] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:01:23.689 [DEBUG] [Thread-117875] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:01:23.698 [DEBUG] [Thread-117875] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:01:23.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:01:23.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:01:23.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:01:23.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:01:23.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:01:23.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:01:23.731 [DEBUG] [Thread-117875] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:01:36.996 [DEBUG] [Thread-117877 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:01:52.059 [DEBUG] [Thread-117878 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:01:53.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:01:53.754 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:01:53.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:01:54.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 1, 31), 47.27, 3.29, 0.0, 28.13, 26.37, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:01:54.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:01:31
2025-11-03T15:01:54.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:01:54.729 [DEBUG] [Thread-117879] [transport.py] [_log()] starting thread (client mode): 0x117ea9e0
2025-11-03T15:01:54.729 [DEBUG] [Thread-117879] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:01:54.749 [DEBUG] [Thread-117879] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:01:54.750 [INFO] [Thread-117879] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:01:54.753 [DEBUG] [Thread-117879] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:01:54.753 [DEBUG] [Thread-117879] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:01:54.753 [DEBUG] [Thread-117879] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:01:54.753 [DEBUG] [Thread-117879] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:01:54.753 [DEBUG] [Thread-117879] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:01:54.753 [DEBUG] [Thread-117879] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:01:54.753 [DEBUG] [Thread-117879] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:01:54.753 [DEBUG] [Thread-117879] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:01:54.753 [DEBUG] [Thread-117879] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:01:54.753 [DEBUG] [Thread-117879] [transport.py] [_log()] client lang: <none>
2025-11-03T15:01:54.753 [DEBUG] [Thread-117879] [transport.py] [_log()] server lang: <none>
2025-11-03T15:01:54.753 [DEBUG] [Thread-117879] [transport.py] [_log()] kex follows: False
2025-11-03T15:01:54.753 [DEBUG] [Thread-117879] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:01:54.753 [DEBUG] [Thread-117879] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:01:54.753 [DEBUG] [Thread-117879] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:01:54.753 [DEBUG] [Thread-117879] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:01:54.753 [DEBUG] [Thread-117879] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:01:54.753 [DEBUG] [Thread-117879] [transport.py] [_log()] Compression: none
2025-11-03T15:01:54.753 [DEBUG] [Thread-117879] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:01:54.772 [DEBUG] [Thread-117879] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:01:54.772 [DEBUG] [Thread-117879] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:01:54.772 [DEBUG] [Thread-117879] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:01:54.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:01:54.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:01:54.773 [DEBUG] [Thread-117879] [transport.py] [_log()] userauth is OK
2025-11-03T15:01:54.773 [DEBUG] [Thread-117879] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:01:54.773 [DEBUG] [Thread-117879] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:01:54.773 [DEBUG] [Thread-117879] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:01:54.773 [DEBUG] [Thread-117879] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:01:54.789 [INFO] [Thread-117879] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:01:54.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:01:55.445 [DEBUG] [Thread-117879] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:01:55.445 [DEBUG] [Thread-117879] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:01:55.445 [DEBUG] [Thread-117879] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:01:55.486 [DEBUG] [Thread-117879] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:01:55.486 [DEBUG] [Thread-117879] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:01:55.489 [DEBUG] [Thread-117879] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:01:55.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:01:55.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:01:55.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:01:55.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:01:55.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:01:55.502 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:01:55.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:01:55.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:01:55.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:01:55.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.542464 -999.00  +26.50  33.99      8  -10.40 1 1 2 1 1   888    0 37.24 18.75 ----- 30.1 34.0 315.6 42.7 30.7 -32.3 30.2 -31.9 31.2 -30.2 31.9 -30.3
2025-11-03T15:01:55.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:01:55.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:01:55.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.542464
2025-11-03T15:01:55.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:01:55.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:01:55.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:01:55.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:01:55.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:01:55.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:01:31', tmtdew=47.27, humidity=3.29, cloud=0.0, wind=28.13, temperature=26.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:01:08.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:01:55.504 [DEBUG] [Thread-117879] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:01:55.576 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:01:55.587 [DEBUG] [Thread-117882] [transport.py] [_log()] starting thread (client mode): 0x117e9030
2025-11-03T15:01:55.588 [DEBUG] [Thread-117882] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:01:55.602 [DEBUG] [Thread-117882] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:01:55.602 [INFO] [Thread-117882] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:01:55.610 [DEBUG] [Thread-117882] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:01:55.610 [DEBUG] [Thread-117882] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:01:55.610 [DEBUG] [Thread-117882] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:01:55.610 [DEBUG] [Thread-117882] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:01:55.610 [DEBUG] [Thread-117882] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:01:55.610 [DEBUG] [Thread-117882] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:01:55.610 [DEBUG] [Thread-117882] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:01:55.610 [DEBUG] [Thread-117882] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:01:55.610 [DEBUG] [Thread-117882] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:01:55.610 [DEBUG] [Thread-117882] [transport.py] [_log()] client lang: <none>
2025-11-03T15:01:55.610 [DEBUG] [Thread-117882] [transport.py] [_log()] server lang: <none>
2025-11-03T15:01:55.610 [DEBUG] [Thread-117882] [transport.py] [_log()] kex follows: False
2025-11-03T15:01:55.610 [DEBUG] [Thread-117882] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:01:55.610 [DEBUG] [Thread-117882] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:01:55.610 [DEBUG] [Thread-117882] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:01:55.610 [DEBUG] [Thread-117882] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:01:55.610 [DEBUG] [Thread-117882] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:01:55.610 [DEBUG] [Thread-117882] [transport.py] [_log()] Compression: none
2025-11-03T15:01:55.610 [DEBUG] [Thread-117882] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:01:55.665 [DEBUG] [Thread-117882] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:01:55.665 [DEBUG] [Thread-117882] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:01:55.665 [DEBUG] [Thread-117882] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:01:55.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:01:55.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:01:55.722 [DEBUG] [Thread-117882] [transport.py] [_log()] userauth is OK
2025-11-03T15:01:55.722 [DEBUG] [Thread-117882] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:01:55.722 [DEBUG] [Thread-117882] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:01:55.722 [DEBUG] [Thread-117882] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:01:55.722 [DEBUG] [Thread-117882] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:01:55.736 [INFO] [Thread-117882] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:01:55.736 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:01:55.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:01:56.600 [DEBUG] [Thread-117882] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:01:56.600 [DEBUG] [Thread-117882] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:01:56.648 [DEBUG] [Thread-117882] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:01:56.648 [DEBUG] [Thread-117882] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:01:56.656 [DEBUG] [Thread-117882] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:01:56.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:01:56.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:01:56.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:01:56.680 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:01:56.680 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:01:56.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:01:56.688 [DEBUG] [Thread-117882] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:02:02.365 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:02:02.366 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:02:07.087 [DEBUG] [Thread-117884 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:02:14.648 [DEBUG] [Thread-117885 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:02:22.143 [DEBUG] [Thread-117886 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:02:26.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:02:26.711 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:02:26.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:02:27.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 2, 4), 47.72, 3.19, 0.0, 27.83, 26.75, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:02:27.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:02:04
2025-11-03T15:02:27.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:02:27.761 [DEBUG] [Thread-117887] [transport.py] [_log()] starting thread (client mode): 0x117997b0
2025-11-03T15:02:27.761 [DEBUG] [Thread-117887] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:02:27.781 [DEBUG] [Thread-117887] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:02:27.781 [INFO] [Thread-117887] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:02:27.784 [DEBUG] [Thread-117887] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:02:27.784 [DEBUG] [Thread-117887] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:02:27.784 [DEBUG] [Thread-117887] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:02:27.784 [DEBUG] [Thread-117887] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:02:27.785 [DEBUG] [Thread-117887] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:02:27.785 [DEBUG] [Thread-117887] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:02:27.785 [DEBUG] [Thread-117887] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:02:27.785 [DEBUG] [Thread-117887] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:02:27.785 [DEBUG] [Thread-117887] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:02:27.785 [DEBUG] [Thread-117887] [transport.py] [_log()] client lang: <none>
2025-11-03T15:02:27.785 [DEBUG] [Thread-117887] [transport.py] [_log()] server lang: <none>
2025-11-03T15:02:27.785 [DEBUG] [Thread-117887] [transport.py] [_log()] kex follows: False
2025-11-03T15:02:27.785 [DEBUG] [Thread-117887] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:02:27.785 [DEBUG] [Thread-117887] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:02:27.785 [DEBUG] [Thread-117887] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:02:27.785 [DEBUG] [Thread-117887] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:02:27.785 [DEBUG] [Thread-117887] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:02:27.785 [DEBUG] [Thread-117887] [transport.py] [_log()] Compression: none
2025-11-03T15:02:27.785 [DEBUG] [Thread-117887] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:02:27.800 [DEBUG] [Thread-117887] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:02:27.801 [DEBUG] [Thread-117887] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:02:27.801 [DEBUG] [Thread-117887] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:02:27.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:02:27.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:02:27.802 [DEBUG] [Thread-117887] [transport.py] [_log()] userauth is OK
2025-11-03T15:02:27.802 [DEBUG] [Thread-117887] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:02:27.802 [DEBUG] [Thread-117887] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:02:27.802 [DEBUG] [Thread-117887] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:02:27.802 [DEBUG] [Thread-117887] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:02:27.821 [INFO] [Thread-117887] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:02:27.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:02:28.463 [DEBUG] [Thread-117887] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:02:28.463 [DEBUG] [Thread-117887] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:02:28.464 [DEBUG] [Thread-117887] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:02:28.504 [DEBUG] [Thread-117887] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:02:28.505 [DEBUG] [Thread-117887] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:02:28.508 [DEBUG] [Thread-117887] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:02:28.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:02:28.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:02:28.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:02:28.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:02:28.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:02:28.532 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:02:28.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:02:28.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:02:28.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:02:28.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.542811 -999.00  +26.30  25.53      7  -10.70 1 1 1 1 1   888    0 37.72 17.65 ----- 25.1 25.5 311.4 34.0 30.7 -32.0 30.2 -31.4 31.2 -30.2 31.8 -31.4
2025-11-03T15:02:28.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:02:28.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:02:28.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.542811
2025-11-03T15:02:28.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:02:28.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:02:28.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:02:28.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:02:28.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:02:28.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:02:04', tmtdew=47.72, humidity=3.19, cloud=0.0, wind=27.83, temperature=26.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:01:38.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:02:28.536 [DEBUG] [Thread-117887] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:02:28.619 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:02:28.632 [DEBUG] [Thread-117890] [transport.py] [_log()] starting thread (client mode): 0x1179aef0
2025-11-03T15:02:28.632 [DEBUG] [Thread-117890] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:02:28.647 [DEBUG] [Thread-117890] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:02:28.647 [INFO] [Thread-117890] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:02:28.654 [DEBUG] [Thread-117890] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:02:28.655 [DEBUG] [Thread-117890] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:02:28.655 [DEBUG] [Thread-117890] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:02:28.655 [DEBUG] [Thread-117890] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:02:28.655 [DEBUG] [Thread-117890] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:02:28.655 [DEBUG] [Thread-117890] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:02:28.655 [DEBUG] [Thread-117890] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:02:28.655 [DEBUG] [Thread-117890] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:02:28.655 [DEBUG] [Thread-117890] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:02:28.655 [DEBUG] [Thread-117890] [transport.py] [_log()] client lang: <none>
2025-11-03T15:02:28.655 [DEBUG] [Thread-117890] [transport.py] [_log()] server lang: <none>
2025-11-03T15:02:28.655 [DEBUG] [Thread-117890] [transport.py] [_log()] kex follows: False
2025-11-03T15:02:28.655 [DEBUG] [Thread-117890] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:02:28.655 [DEBUG] [Thread-117890] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:02:28.655 [DEBUG] [Thread-117890] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:02:28.655 [DEBUG] [Thread-117890] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:02:28.655 [DEBUG] [Thread-117890] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:02:28.655 [DEBUG] [Thread-117890] [transport.py] [_log()] Compression: none
2025-11-03T15:02:28.655 [DEBUG] [Thread-117890] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:02:28.714 [DEBUG] [Thread-117890] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:02:28.714 [DEBUG] [Thread-117890] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:02:28.714 [DEBUG] [Thread-117890] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:02:28.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:02:28.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:02:28.770 [DEBUG] [Thread-117890] [transport.py] [_log()] userauth is OK
2025-11-03T15:02:28.770 [DEBUG] [Thread-117890] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:02:28.770 [DEBUG] [Thread-117890] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:02:28.770 [DEBUG] [Thread-117890] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:02:28.770 [DEBUG] [Thread-117890] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:02:28.784 [INFO] [Thread-117890] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:02:28.793 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:02:28.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:02:29.648 [DEBUG] [Thread-117890] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:02:29.658 [DEBUG] [Thread-117890] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:02:29.697 [DEBUG] [Thread-117890] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:02:29.697 [DEBUG] [Thread-117890] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:02:29.706 [DEBUG] [Thread-117890] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:02:29.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:02:29.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:02:29.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:02:29.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:02:29.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:02:29.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:02:29.742 [DEBUG] [Thread-117890] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:02:37.175 [DEBUG] [Thread-117892 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:02:52.234 [DEBUG] [Thread-117893 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:02:59.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:02:59.749 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:02:59.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:03:00.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 2, 36), 47.16, 3.69, 0.0, 12.78, 26.35, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:03:00.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:02:36
2025-11-03T15:03:00.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:03:00.693 [DEBUG] [Thread-117894] [transport.py] [_log()] starting thread (client mode): 0xed228f0
2025-11-03T15:03:00.694 [DEBUG] [Thread-117894] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:03:00.713 [DEBUG] [Thread-117894] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:03:00.713 [INFO] [Thread-117894] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:03:00.716 [DEBUG] [Thread-117894] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:03:00.717 [DEBUG] [Thread-117894] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:03:00.717 [DEBUG] [Thread-117894] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:03:00.717 [DEBUG] [Thread-117894] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:03:00.717 [DEBUG] [Thread-117894] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:03:00.717 [DEBUG] [Thread-117894] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:03:00.717 [DEBUG] [Thread-117894] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:03:00.717 [DEBUG] [Thread-117894] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:03:00.717 [DEBUG] [Thread-117894] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:03:00.717 [DEBUG] [Thread-117894] [transport.py] [_log()] client lang: <none>
2025-11-03T15:03:00.717 [DEBUG] [Thread-117894] [transport.py] [_log()] server lang: <none>
2025-11-03T15:03:00.717 [DEBUG] [Thread-117894] [transport.py] [_log()] kex follows: False
2025-11-03T15:03:00.717 [DEBUG] [Thread-117894] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:03:00.717 [DEBUG] [Thread-117894] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:03:00.717 [DEBUG] [Thread-117894] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:03:00.717 [DEBUG] [Thread-117894] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:03:00.717 [DEBUG] [Thread-117894] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:03:00.717 [DEBUG] [Thread-117894] [transport.py] [_log()] Compression: none
2025-11-03T15:03:00.717 [DEBUG] [Thread-117894] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:03:00.735 [DEBUG] [Thread-117894] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:03:00.735 [DEBUG] [Thread-117894] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:03:00.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:03:00.736 [DEBUG] [Thread-117894] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:03:00.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:03:00.738 [DEBUG] [Thread-117894] [transport.py] [_log()] userauth is OK
2025-11-03T15:03:00.739 [DEBUG] [Thread-117894] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:03:00.739 [DEBUG] [Thread-117894] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:03:00.739 [DEBUG] [Thread-117894] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:03:00.739 [DEBUG] [Thread-117894] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:03:00.775 [INFO] [Thread-117894] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:03:00.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:03:01.425 [DEBUG] [Thread-117894] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:03:01.425 [DEBUG] [Thread-117894] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:03:01.425 [DEBUG] [Thread-117894] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:03:01.465 [DEBUG] [Thread-117894] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:03:01.465 [DEBUG] [Thread-117894] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:03:01.467 [DEBUG] [Thread-117894] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:03:01.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:03:01.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:03:01.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:03:01.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:03:01.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:03:01.487 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:03:01.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:03:01.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:03:01.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:03:01.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.543158 -999.00  +26.20  20.67      8  -10.60 1 1 1 1 1   888    0 36.81 12.32 ----- 22.6 20.7 304.6 25.1 30.8 -31.9 30.4 -31.3 31.2 -30.9 31.9 -30.1
2025-11-03T15:03:01.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:03:01.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:03:01.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.543158
2025-11-03T15:03:01.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:03:01.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:03:01.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:03:01.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:03:01.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:03:01.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:02:36', tmtdew=47.16, humidity=3.69, cloud=0.0, wind=12.78, temperature=26.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:02:08.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:03:01.489 [DEBUG] [Thread-117894] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:03:01.568 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:03:01.580 [DEBUG] [Thread-117897] [transport.py] [_log()] starting thread (client mode): 0x1179bd60
2025-11-03T15:03:01.580 [DEBUG] [Thread-117897] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:03:01.595 [DEBUG] [Thread-117897] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:03:01.595 [INFO] [Thread-117897] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:03:01.603 [DEBUG] [Thread-117897] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:03:01.603 [DEBUG] [Thread-117897] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:03:01.603 [DEBUG] [Thread-117897] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:03:01.603 [DEBUG] [Thread-117897] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:03:01.603 [DEBUG] [Thread-117897] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:03:01.603 [DEBUG] [Thread-117897] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:03:01.603 [DEBUG] [Thread-117897] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:03:01.603 [DEBUG] [Thread-117897] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:03:01.603 [DEBUG] [Thread-117897] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:03:01.603 [DEBUG] [Thread-117897] [transport.py] [_log()] client lang: <none>
2025-11-03T15:03:01.603 [DEBUG] [Thread-117897] [transport.py] [_log()] server lang: <none>
2025-11-03T15:03:01.603 [DEBUG] [Thread-117897] [transport.py] [_log()] kex follows: False
2025-11-03T15:03:01.603 [DEBUG] [Thread-117897] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:03:01.603 [DEBUG] [Thread-117897] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:03:01.603 [DEBUG] [Thread-117897] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:03:01.603 [DEBUG] [Thread-117897] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:03:01.603 [DEBUG] [Thread-117897] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:03:01.604 [DEBUG] [Thread-117897] [transport.py] [_log()] Compression: none
2025-11-03T15:03:01.604 [DEBUG] [Thread-117897] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:03:01.663 [DEBUG] [Thread-117897] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:03:01.664 [DEBUG] [Thread-117897] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:03:01.664 [DEBUG] [Thread-117897] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:03:01.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:03:01.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:03:01.719 [DEBUG] [Thread-117897] [transport.py] [_log()] userauth is OK
2025-11-03T15:03:01.719 [DEBUG] [Thread-117897] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:03:01.720 [DEBUG] [Thread-117897] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:03:01.720 [DEBUG] [Thread-117897] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:03:01.720 [DEBUG] [Thread-117897] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:03:01.739 [INFO] [Thread-117897] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:03:01.740 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:03:01.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:03:02.506 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:03:02.507 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:03:02.572 [DEBUG] [Thread-117897] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:03:02.572 [DEBUG] [Thread-117897] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:03:02.620 [DEBUG] [Thread-117897] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:03:02.620 [DEBUG] [Thread-117897] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:03:02.629 [DEBUG] [Thread-117897] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:03:02.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:03:02.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:03:02.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:03:02.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:03:02.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:03:02.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:03:02.670 [DEBUG] [Thread-117897] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:03:07.273 [DEBUG] [Thread-117899 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:03:14.688 [DEBUG] [Thread-117900 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:03:22.322 [DEBUG] [Thread-117901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:03:32.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:03:32.692 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:03:32.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:03:33.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 3, 8), 46.87, 3.75, 0.0, 12.86, 26.15, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:03:33.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:03:08
2025-11-03T15:03:33.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:03:33.648 [DEBUG] [Thread-117902] [transport.py] [_log()] starting thread (client mode): 0xeda2a70
2025-11-03T15:03:33.648 [DEBUG] [Thread-117902] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:03:33.668 [DEBUG] [Thread-117902] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:03:33.668 [INFO] [Thread-117902] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:03:33.671 [DEBUG] [Thread-117902] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:03:33.672 [DEBUG] [Thread-117902] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:03:33.672 [DEBUG] [Thread-117902] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:03:33.672 [DEBUG] [Thread-117902] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:03:33.672 [DEBUG] [Thread-117902] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:03:33.672 [DEBUG] [Thread-117902] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:03:33.672 [DEBUG] [Thread-117902] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:03:33.672 [DEBUG] [Thread-117902] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:03:33.672 [DEBUG] [Thread-117902] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:03:33.672 [DEBUG] [Thread-117902] [transport.py] [_log()] client lang: <none>
2025-11-03T15:03:33.672 [DEBUG] [Thread-117902] [transport.py] [_log()] server lang: <none>
2025-11-03T15:03:33.672 [DEBUG] [Thread-117902] [transport.py] [_log()] kex follows: False
2025-11-03T15:03:33.672 [DEBUG] [Thread-117902] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:03:33.672 [DEBUG] [Thread-117902] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:03:33.672 [DEBUG] [Thread-117902] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:03:33.672 [DEBUG] [Thread-117902] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:03:33.672 [DEBUG] [Thread-117902] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:03:33.672 [DEBUG] [Thread-117902] [transport.py] [_log()] Compression: none
2025-11-03T15:03:33.672 [DEBUG] [Thread-117902] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:03:33.688 [DEBUG] [Thread-117902] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:03:33.689 [DEBUG] [Thread-117902] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:03:33.689 [DEBUG] [Thread-117902] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:03:33.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:03:33.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:03:33.691 [DEBUG] [Thread-117902] [transport.py] [_log()] userauth is OK
2025-11-03T15:03:33.691 [DEBUG] [Thread-117902] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:03:33.691 [DEBUG] [Thread-117902] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:03:33.692 [DEBUG] [Thread-117902] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:03:33.692 [DEBUG] [Thread-117902] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:03:33.715 [INFO] [Thread-117902] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:03:33.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:03:34.340 [DEBUG] [Thread-117902] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:03:34.349 [DEBUG] [Thread-117902] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:03:34.349 [DEBUG] [Thread-117902] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:03:34.381 [DEBUG] [Thread-117902] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:03:34.381 [DEBUG] [Thread-117902] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:03:34.384 [DEBUG] [Thread-117902] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:03:34.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:03:34.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:03:34.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:03:34.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:03:34.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:03:34.402 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:03:34.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:03:34.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:03:34.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:03:34.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.543506 -999.00  +25.60  16.39      8  -10.90 1 1 1 1 1   888    0 37.39 4.37 ----- 11.5 16.4 323.0 22.9 30.8 -31.8 30.3 -31.6 31.2 -30.3 31.9 -31.2
2025-11-03T15:03:34.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:03:34.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:03:34.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.543506
2025-11-03T15:03:34.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:03:34.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:03:34.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:03:34.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:03:34.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:03:34.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:03:08', tmtdew=46.87, humidity=3.75, cloud=0.0, wind=12.86, temperature=26.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:02:38.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:03:34.403 [DEBUG] [Thread-117902] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:03:34.476 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:03:34.488 [DEBUG] [Thread-117905] [transport.py] [_log()] starting thread (client mode): 0xedd7e20
2025-11-03T15:03:34.488 [DEBUG] [Thread-117905] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:03:34.502 [DEBUG] [Thread-117905] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:03:34.502 [INFO] [Thread-117905] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:03:34.510 [DEBUG] [Thread-117905] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:03:34.510 [DEBUG] [Thread-117905] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:03:34.510 [DEBUG] [Thread-117905] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:03:34.510 [DEBUG] [Thread-117905] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:03:34.510 [DEBUG] [Thread-117905] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:03:34.510 [DEBUG] [Thread-117905] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:03:34.510 [DEBUG] [Thread-117905] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:03:34.510 [DEBUG] [Thread-117905] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:03:34.510 [DEBUG] [Thread-117905] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:03:34.510 [DEBUG] [Thread-117905] [transport.py] [_log()] client lang: <none>
2025-11-03T15:03:34.510 [DEBUG] [Thread-117905] [transport.py] [_log()] server lang: <none>
2025-11-03T15:03:34.510 [DEBUG] [Thread-117905] [transport.py] [_log()] kex follows: False
2025-11-03T15:03:34.510 [DEBUG] [Thread-117905] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:03:34.510 [DEBUG] [Thread-117905] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:03:34.510 [DEBUG] [Thread-117905] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:03:34.510 [DEBUG] [Thread-117905] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:03:34.510 [DEBUG] [Thread-117905] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:03:34.510 [DEBUG] [Thread-117905] [transport.py] [_log()] Compression: none
2025-11-03T15:03:34.510 [DEBUG] [Thread-117905] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:03:34.565 [DEBUG] [Thread-117905] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:03:34.565 [DEBUG] [Thread-117905] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:03:34.565 [DEBUG] [Thread-117905] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:03:34.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:03:34.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:03:34.623 [DEBUG] [Thread-117905] [transport.py] [_log()] userauth is OK
2025-11-03T15:03:34.623 [DEBUG] [Thread-117905] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:03:34.623 [DEBUG] [Thread-117905] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:03:34.623 [DEBUG] [Thread-117905] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:03:34.623 [DEBUG] [Thread-117905] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:03:34.637 [INFO] [Thread-117905] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:03:34.637 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:03:34.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:03:35.527 [DEBUG] [Thread-117905] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:03:35.528 [DEBUG] [Thread-117905] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:03:35.576 [DEBUG] [Thread-117905] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:03:35.577 [DEBUG] [Thread-117905] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:03:35.586 [DEBUG] [Thread-117905] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:03:35.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:03:35.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:03:35.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:03:35.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:03:35.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:03:35.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:03:35.620 [DEBUG] [Thread-117905] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:03:37.363 [DEBUG] [Thread-117907 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:03:52.403 [DEBUG] [Thread-117908 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:04:02.647 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:04:02.647 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:04:05.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:04:05.630 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:04:05.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:04:06.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 3, 41), 46.98, 3.25, 0.0, 14.24, 26.24, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:04:06.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:03:41
2025-11-03T15:04:06.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:04:06.569 [DEBUG] [Thread-117909] [transport.py] [_log()] starting thread (client mode): 0x117bf5e0
2025-11-03T15:04:06.569 [DEBUG] [Thread-117909] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:04:06.590 [DEBUG] [Thread-117909] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:04:06.590 [INFO] [Thread-117909] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:04:06.593 [DEBUG] [Thread-117909] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:04:06.593 [DEBUG] [Thread-117909] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:04:06.593 [DEBUG] [Thread-117909] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:04:06.593 [DEBUG] [Thread-117909] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:04:06.593 [DEBUG] [Thread-117909] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:04:06.593 [DEBUG] [Thread-117909] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:04:06.593 [DEBUG] [Thread-117909] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:04:06.593 [DEBUG] [Thread-117909] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:04:06.593 [DEBUG] [Thread-117909] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:04:06.593 [DEBUG] [Thread-117909] [transport.py] [_log()] client lang: <none>
2025-11-03T15:04:06.593 [DEBUG] [Thread-117909] [transport.py] [_log()] server lang: <none>
2025-11-03T15:04:06.593 [DEBUG] [Thread-117909] [transport.py] [_log()] kex follows: False
2025-11-03T15:04:06.593 [DEBUG] [Thread-117909] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:04:06.593 [DEBUG] [Thread-117909] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:04:06.593 [DEBUG] [Thread-117909] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:04:06.593 [DEBUG] [Thread-117909] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:04:06.593 [DEBUG] [Thread-117909] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:04:06.593 [DEBUG] [Thread-117909] [transport.py] [_log()] Compression: none
2025-11-03T15:04:06.593 [DEBUG] [Thread-117909] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:04:06.610 [DEBUG] [Thread-117909] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:04:06.611 [DEBUG] [Thread-117909] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:04:06.611 [DEBUG] [Thread-117909] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:04:06.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:04:06.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:04:06.613 [DEBUG] [Thread-117909] [transport.py] [_log()] userauth is OK
2025-11-03T15:04:06.614 [DEBUG] [Thread-117909] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:04:06.614 [DEBUG] [Thread-117909] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:04:06.614 [DEBUG] [Thread-117909] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:04:06.614 [DEBUG] [Thread-117909] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:04:06.638 [INFO] [Thread-117909] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:04:06.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:04:07.287 [DEBUG] [Thread-117909] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:04:07.287 [DEBUG] [Thread-117909] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:04:07.287 [DEBUG] [Thread-117909] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:04:07.328 [DEBUG] [Thread-117909] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:04:07.328 [DEBUG] [Thread-117909] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:04:07.330 [DEBUG] [Thread-117909] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:04:07.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:04:07.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:04:07.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:04:07.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:04:07.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:04:07.350 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:04:07.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:04:07.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:04:07.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:04:07.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.543853 -999.00  +25.50   6.23      8  -10.70 1 1 1 1 1   888    0 36.83 -7.88 ----- 11.5 6.2 300.8 13.0 30.9 -31.9 30.4 -30.4 31.4 -29.8 31.9 -30.3
2025-11-03T15:04:07.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:04:07.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:04:07.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.543853
2025-11-03T15:04:07.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:04:07.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:04:07.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:04:07.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:04:07.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:04:07.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:03:41', tmtdew=46.98, humidity=3.25, cloud=0.0, wind=14.24, temperature=26.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:03:08.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:04:07.351 [DEBUG] [Thread-117909] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:04:07.423 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:04:07.433 [DEBUG] [Thread-117912 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:04:07.434 [DEBUG] [Thread-117913] [transport.py] [_log()] starting thread (client mode): 0xed4ebf0
2025-11-03T15:04:07.434 [DEBUG] [Thread-117913] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:04:07.449 [DEBUG] [Thread-117913] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:04:07.449 [INFO] [Thread-117913] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:04:07.456 [DEBUG] [Thread-117913] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:04:07.456 [DEBUG] [Thread-117913] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:04:07.456 [DEBUG] [Thread-117913] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:04:07.456 [DEBUG] [Thread-117913] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:04:07.457 [DEBUG] [Thread-117913] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:04:07.457 [DEBUG] [Thread-117913] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:04:07.457 [DEBUG] [Thread-117913] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:04:07.457 [DEBUG] [Thread-117913] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:04:07.457 [DEBUG] [Thread-117913] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:04:07.457 [DEBUG] [Thread-117913] [transport.py] [_log()] client lang: <none>
2025-11-03T15:04:07.457 [DEBUG] [Thread-117913] [transport.py] [_log()] server lang: <none>
2025-11-03T15:04:07.457 [DEBUG] [Thread-117913] [transport.py] [_log()] kex follows: False
2025-11-03T15:04:07.457 [DEBUG] [Thread-117913] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:04:07.457 [DEBUG] [Thread-117913] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:04:07.457 [DEBUG] [Thread-117913] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:04:07.457 [DEBUG] [Thread-117913] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:04:07.457 [DEBUG] [Thread-117913] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:04:07.457 [DEBUG] [Thread-117913] [transport.py] [_log()] Compression: none
2025-11-03T15:04:07.457 [DEBUG] [Thread-117913] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:04:07.514 [DEBUG] [Thread-117913] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:04:07.514 [DEBUG] [Thread-117913] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:04:07.514 [DEBUG] [Thread-117913] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:04:07.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:04:07.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:04:07.575 [DEBUG] [Thread-117913] [transport.py] [_log()] userauth is OK
2025-11-03T15:04:07.575 [DEBUG] [Thread-117913] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:04:07.575 [DEBUG] [Thread-117913] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:04:07.575 [DEBUG] [Thread-117913] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:04:07.575 [DEBUG] [Thread-117913] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:04:07.590 [INFO] [Thread-117913] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:04:07.590 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:04:07.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:04:08.426 [DEBUG] [Thread-117913] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:04:08.426 [DEBUG] [Thread-117913] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:04:08.474 [DEBUG] [Thread-117913] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:04:08.475 [DEBUG] [Thread-117913] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:04:08.484 [DEBUG] [Thread-117913] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:04:08.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:04:08.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:04:08.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:04:08.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:04:08.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:04:08.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:04:08.522 [DEBUG] [Thread-117913] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:04:14.720 [DEBUG] [Thread-117915 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:04:22.474 [DEBUG] [Thread-117916 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:04:37.511 [DEBUG] [Thread-117917 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:04:38.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:04:38.544 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:04:38.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:04:39.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 4, 13), 47.02, 3.25, 0.0, 13.39, 26.37, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:04:39.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:04:13
2025-11-03T15:04:39.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:04:39.478 [DEBUG] [Thread-117918] [transport.py] [_log()] starting thread (client mode): 0xeda27d0
2025-11-03T15:04:39.478 [DEBUG] [Thread-117918] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:04:39.500 [DEBUG] [Thread-117918] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:04:39.500 [INFO] [Thread-117918] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:04:39.503 [DEBUG] [Thread-117918] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:04:39.503 [DEBUG] [Thread-117918] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:04:39.503 [DEBUG] [Thread-117918] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:04:39.503 [DEBUG] [Thread-117918] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:04:39.503 [DEBUG] [Thread-117918] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:04:39.503 [DEBUG] [Thread-117918] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:04:39.503 [DEBUG] [Thread-117918] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:04:39.503 [DEBUG] [Thread-117918] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:04:39.503 [DEBUG] [Thread-117918] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:04:39.503 [DEBUG] [Thread-117918] [transport.py] [_log()] client lang: <none>
2025-11-03T15:04:39.503 [DEBUG] [Thread-117918] [transport.py] [_log()] server lang: <none>
2025-11-03T15:04:39.503 [DEBUG] [Thread-117918] [transport.py] [_log()] kex follows: False
2025-11-03T15:04:39.503 [DEBUG] [Thread-117918] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:04:39.503 [DEBUG] [Thread-117918] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:04:39.504 [DEBUG] [Thread-117918] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:04:39.504 [DEBUG] [Thread-117918] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:04:39.504 [DEBUG] [Thread-117918] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:04:39.504 [DEBUG] [Thread-117918] [transport.py] [_log()] Compression: none
2025-11-03T15:04:39.504 [DEBUG] [Thread-117918] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:04:39.522 [DEBUG] [Thread-117918] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:04:39.523 [DEBUG] [Thread-117918] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:04:39.523 [DEBUG] [Thread-117918] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:04:39.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:04:39.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:04:39.525 [DEBUG] [Thread-117918] [transport.py] [_log()] userauth is OK
2025-11-03T15:04:39.525 [DEBUG] [Thread-117918] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:04:39.525 [DEBUG] [Thread-117918] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:04:39.525 [DEBUG] [Thread-117918] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:04:39.526 [DEBUG] [Thread-117918] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:04:39.558 [INFO] [Thread-117918] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:04:39.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:04:40.199 [DEBUG] [Thread-117918] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:04:40.199 [DEBUG] [Thread-117918] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:04:40.199 [DEBUG] [Thread-117918] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:04:40.240 [DEBUG] [Thread-117918] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:04:40.240 [DEBUG] [Thread-117918] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:04:40.243 [DEBUG] [Thread-117918] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:04:40.257 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:04:40.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:04:40.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:04:40.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:04:40.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:04:40.268 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:04:40.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:04:40.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:04:40.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:04:40.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.544547 -999.00  +25.70  23.13      8  -10.50 1 1 1 1 1   888    0 36.56 -29.64 ----- 28.6 23.1 307.6 25.8 31.0 -31.9 30.5 -30.8 31.5 -30.2 32.2 -30.6
2025-11-03T15:04:40.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:04:40.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:04:40.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.544547
2025-11-03T15:04:40.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:04:40.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:04:40.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:04:40.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:04:40.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:04:40.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:04:13', tmtdew=47.02, humidity=3.25, cloud=0.0, wind=13.39, temperature=26.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:04:08.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:04:40.271 [DEBUG] [Thread-117918] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:04:40.354 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:04:40.365 [DEBUG] [Thread-117921] [transport.py] [_log()] starting thread (client mode): 0xed2c1c0
2025-11-03T15:04:40.365 [DEBUG] [Thread-117921] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:04:40.380 [DEBUG] [Thread-117921] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:04:40.380 [INFO] [Thread-117921] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:04:40.388 [DEBUG] [Thread-117921] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:04:40.388 [DEBUG] [Thread-117921] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:04:40.388 [DEBUG] [Thread-117921] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:04:40.388 [DEBUG] [Thread-117921] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:04:40.388 [DEBUG] [Thread-117921] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:04:40.388 [DEBUG] [Thread-117921] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:04:40.388 [DEBUG] [Thread-117921] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:04:40.388 [DEBUG] [Thread-117921] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:04:40.388 [DEBUG] [Thread-117921] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:04:40.388 [DEBUG] [Thread-117921] [transport.py] [_log()] client lang: <none>
2025-11-03T15:04:40.388 [DEBUG] [Thread-117921] [transport.py] [_log()] server lang: <none>
2025-11-03T15:04:40.388 [DEBUG] [Thread-117921] [transport.py] [_log()] kex follows: False
2025-11-03T15:04:40.389 [DEBUG] [Thread-117921] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:04:40.389 [DEBUG] [Thread-117921] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:04:40.389 [DEBUG] [Thread-117921] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:04:40.389 [DEBUG] [Thread-117921] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:04:40.389 [DEBUG] [Thread-117921] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:04:40.389 [DEBUG] [Thread-117921] [transport.py] [_log()] Compression: none
2025-11-03T15:04:40.389 [DEBUG] [Thread-117921] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:04:40.454 [DEBUG] [Thread-117921] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:04:40.454 [DEBUG] [Thread-117921] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:04:40.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:04:40.455 [DEBUG] [Thread-117921] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:04:40.456 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:04:40.518 [DEBUG] [Thread-117921] [transport.py] [_log()] userauth is OK
2025-11-03T15:04:40.518 [DEBUG] [Thread-117921] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:04:40.518 [DEBUG] [Thread-117921] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:04:40.518 [DEBUG] [Thread-117921] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:04:40.518 [DEBUG] [Thread-117921] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:04:40.540 [INFO] [Thread-117921] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:04:40.541 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:04:40.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:04:41.373 [DEBUG] [Thread-117921] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:04:41.373 [DEBUG] [Thread-117921] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:04:41.420 [DEBUG] [Thread-117921] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:04:41.421 [DEBUG] [Thread-117921] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:04:41.429 [DEBUG] [Thread-117921] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:04:41.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:04:41.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:04:41.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:04:41.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:04:41.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:04:41.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:04:41.461 [DEBUG] [Thread-117921] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:04:52.548 [DEBUG] [Thread-117923 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:05:02.789 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:05:02.790 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:05:07.610 [DEBUG] [Thread-117924 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:05:11.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:05:11.460 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:05:11.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:05:12.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 4, 45), 47.0, 3.7, 0.0, 16.48, 26.3, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:05:12.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:04:45
2025-11-03T15:05:12.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:05:12.427 [DEBUG] [Thread-117925] [transport.py] [_log()] starting thread (client mode): 0xed2f460
2025-11-03T15:05:12.428 [DEBUG] [Thread-117925] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:05:12.449 [DEBUG] [Thread-117925] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:05:12.449 [INFO] [Thread-117925] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:05:12.452 [DEBUG] [Thread-117925] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:05:12.452 [DEBUG] [Thread-117925] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:05:12.452 [DEBUG] [Thread-117925] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:05:12.452 [DEBUG] [Thread-117925] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:05:12.452 [DEBUG] [Thread-117925] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:05:12.452 [DEBUG] [Thread-117925] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:05:12.452 [DEBUG] [Thread-117925] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:05:12.452 [DEBUG] [Thread-117925] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:05:12.452 [DEBUG] [Thread-117925] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:05:12.452 [DEBUG] [Thread-117925] [transport.py] [_log()] client lang: <none>
2025-11-03T15:05:12.452 [DEBUG] [Thread-117925] [transport.py] [_log()] server lang: <none>
2025-11-03T15:05:12.452 [DEBUG] [Thread-117925] [transport.py] [_log()] kex follows: False
2025-11-03T15:05:12.452 [DEBUG] [Thread-117925] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:05:12.452 [DEBUG] [Thread-117925] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:05:12.452 [DEBUG] [Thread-117925] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:05:12.452 [DEBUG] [Thread-117925] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:05:12.452 [DEBUG] [Thread-117925] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:05:12.453 [DEBUG] [Thread-117925] [transport.py] [_log()] Compression: none
2025-11-03T15:05:12.453 [DEBUG] [Thread-117925] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:05:12.471 [DEBUG] [Thread-117925] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:05:12.472 [DEBUG] [Thread-117925] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:05:12.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:05:12.473 [DEBUG] [Thread-117925] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:05:12.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:05:12.475 [DEBUG] [Thread-117925] [transport.py] [_log()] userauth is OK
2025-11-03T15:05:12.475 [DEBUG] [Thread-117925] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:05:12.475 [DEBUG] [Thread-117925] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:05:12.476 [DEBUG] [Thread-117925] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:05:12.476 [DEBUG] [Thread-117925] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:05:12.493 [INFO] [Thread-117925] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:05:12.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:05:14.784 [DEBUG] [Thread-117927 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:05:14.864 [DEBUG] [Thread-117925] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:05:14.865 [DEBUG] [Thread-117925] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:05:14.865 [DEBUG] [Thread-117925] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:05:14.906 [DEBUG] [Thread-117925] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:05:14.906 [DEBUG] [Thread-117925] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:05:14.910 [DEBUG] [Thread-117925] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:05:14.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:05:14.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:05:14.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:05:14.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:05:14.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:05:14.933 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:05:14.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:05:14.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:05:14.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:05:14.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.544895 -999.00  +26.20  20.76      8  -10.10 1 1 1 1 1   888    0 36.27 -41.45 ----- 21.8 20.8 311.6 26.3 31.0 -32.4 30.5 -31.1 31.4 -32.4 32.2 -30.9
2025-11-03T15:05:14.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:05:14.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:05:14.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.544895
2025-11-03T15:05:14.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:05:14.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:05:14.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:05:14.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:05:14.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:05:14.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:04:45', tmtdew=47.0, humidity=3.7, cloud=0.0, wind=16.48, temperature=26.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:04:38.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:05:14.937 [DEBUG] [Thread-117925] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:05:15.029 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:05:15.042 [DEBUG] [Thread-117929] [transport.py] [_log()] starting thread (client mode): 0x117bd660
2025-11-03T15:05:15.042 [DEBUG] [Thread-117929] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:05:15.057 [DEBUG] [Thread-117929] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:05:15.057 [INFO] [Thread-117929] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:05:15.065 [DEBUG] [Thread-117929] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:05:15.065 [DEBUG] [Thread-117929] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:05:15.066 [DEBUG] [Thread-117929] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:05:15.066 [DEBUG] [Thread-117929] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:05:15.066 [DEBUG] [Thread-117929] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:05:15.066 [DEBUG] [Thread-117929] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:05:15.066 [DEBUG] [Thread-117929] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:05:15.066 [DEBUG] [Thread-117929] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:05:15.066 [DEBUG] [Thread-117929] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:05:15.066 [DEBUG] [Thread-117929] [transport.py] [_log()] client lang: <none>
2025-11-03T15:05:15.067 [DEBUG] [Thread-117929] [transport.py] [_log()] server lang: <none>
2025-11-03T15:05:15.067 [DEBUG] [Thread-117929] [transport.py] [_log()] kex follows: False
2025-11-03T15:05:15.067 [DEBUG] [Thread-117929] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:05:15.067 [DEBUG] [Thread-117929] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:05:15.067 [DEBUG] [Thread-117929] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:05:15.067 [DEBUG] [Thread-117929] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:05:15.068 [DEBUG] [Thread-117929] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:05:15.068 [DEBUG] [Thread-117929] [transport.py] [_log()] Compression: none
2025-11-03T15:05:15.068 [DEBUG] [Thread-117929] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:05:15.124 [DEBUG] [Thread-117929] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:05:15.125 [DEBUG] [Thread-117929] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:05:15.126 [DEBUG] [Thread-117929] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:05:15.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:05:15.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:05:15.187 [DEBUG] [Thread-117929] [transport.py] [_log()] userauth is OK
2025-11-03T15:05:15.188 [DEBUG] [Thread-117929] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:05:15.188 [DEBUG] [Thread-117929] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:05:15.188 [DEBUG] [Thread-117929] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:05:15.188 [DEBUG] [Thread-117929] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:05:15.206 [INFO] [Thread-117929] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:05:15.207 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:05:15.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:05:16.042 [DEBUG] [Thread-117929] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:05:16.043 [DEBUG] [Thread-117929] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:05:16.090 [DEBUG] [Thread-117929] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:05:16.091 [DEBUG] [Thread-117929] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:05:16.099 [DEBUG] [Thread-117929] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:05:16.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:05:16.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:05:16.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:05:16.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:05:16.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:05:16.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:05:16.138 [DEBUG] [Thread-117929] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:05:22.642 [DEBUG] [Thread-117931 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:05:37.699 [DEBUG] [Thread-117932 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:05:46.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:05:46.159 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:05:46.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:05:46.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 5, 18), 46.76, 3.77, 0.0, 18.99, 26.25, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:05:46.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:05:18
2025-11-03T15:05:46.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:05:47.134 [DEBUG] [Thread-117933] [transport.py] [_log()] starting thread (client mode): 0x117bc730
2025-11-03T15:05:47.134 [DEBUG] [Thread-117933] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:05:47.154 [DEBUG] [Thread-117933] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:05:47.154 [INFO] [Thread-117933] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:05:47.157 [DEBUG] [Thread-117933] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:05:47.158 [DEBUG] [Thread-117933] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:05:47.158 [DEBUG] [Thread-117933] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:05:47.158 [DEBUG] [Thread-117933] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:05:47.158 [DEBUG] [Thread-117933] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:05:47.158 [DEBUG] [Thread-117933] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:05:47.158 [DEBUG] [Thread-117933] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:05:47.158 [DEBUG] [Thread-117933] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:05:47.158 [DEBUG] [Thread-117933] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:05:47.158 [DEBUG] [Thread-117933] [transport.py] [_log()] client lang: <none>
2025-11-03T15:05:47.158 [DEBUG] [Thread-117933] [transport.py] [_log()] server lang: <none>
2025-11-03T15:05:47.158 [DEBUG] [Thread-117933] [transport.py] [_log()] kex follows: False
2025-11-03T15:05:47.158 [DEBUG] [Thread-117933] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:05:47.158 [DEBUG] [Thread-117933] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:05:47.158 [DEBUG] [Thread-117933] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:05:47.158 [DEBUG] [Thread-117933] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:05:47.158 [DEBUG] [Thread-117933] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:05:47.158 [DEBUG] [Thread-117933] [transport.py] [_log()] Compression: none
2025-11-03T15:05:47.158 [DEBUG] [Thread-117933] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:05:47.173 [DEBUG] [Thread-117933] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:05:47.174 [DEBUG] [Thread-117933] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:05:47.174 [DEBUG] [Thread-117933] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:05:47.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:05:47.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:05:47.177 [DEBUG] [Thread-117933] [transport.py] [_log()] userauth is OK
2025-11-03T15:05:47.177 [DEBUG] [Thread-117933] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:05:47.177 [DEBUG] [Thread-117933] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:05:47.177 [DEBUG] [Thread-117933] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:05:47.177 [DEBUG] [Thread-117933] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:05:47.192 [INFO] [Thread-117933] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:05:47.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:05:47.810 [DEBUG] [Thread-117933] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:05:47.811 [DEBUG] [Thread-117933] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:05:47.811 [DEBUG] [Thread-117933] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:05:47.852 [DEBUG] [Thread-117933] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:05:47.852 [DEBUG] [Thread-117933] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:05:47.854 [DEBUG] [Thread-117933] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:05:47.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:05:47.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:05:47.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:05:47.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:05:47.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:05:47.872 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:05:47.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:05:47.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:05:47.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:05:47.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.545242 -999.00  +26.40  18.62      8  -10.20 1 1 1 1 1   888    0 36.08 -53.17 ----- 20.3 18.6 310.4 22.4 31.1 -31.3 30.7 -30.4 31.6 -31.8 32.3 -30.2
2025-11-03T15:05:47.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:05:47.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:05:47.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.545242
2025-11-03T15:05:47.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:05:47.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:05:47.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:05:47.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:05:47.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:05:47.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:05:18', tmtdew=46.76, humidity=3.77, cloud=0.0, wind=18.99, temperature=26.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:05:08.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:05:47.873 [DEBUG] [Thread-117933] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:05:47.948 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:05:47.959 [DEBUG] [Thread-117936] [transport.py] [_log()] starting thread (client mode): 0xedd7700
2025-11-03T15:05:47.959 [DEBUG] [Thread-117936] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:05:47.974 [DEBUG] [Thread-117936] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:05:47.974 [INFO] [Thread-117936] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:05:47.982 [DEBUG] [Thread-117936] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:05:47.982 [DEBUG] [Thread-117936] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:05:47.982 [DEBUG] [Thread-117936] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:05:47.982 [DEBUG] [Thread-117936] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:05:47.982 [DEBUG] [Thread-117936] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:05:47.982 [DEBUG] [Thread-117936] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:05:47.982 [DEBUG] [Thread-117936] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:05:47.982 [DEBUG] [Thread-117936] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:05:47.982 [DEBUG] [Thread-117936] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:05:47.982 [DEBUG] [Thread-117936] [transport.py] [_log()] client lang: <none>
2025-11-03T15:05:47.982 [DEBUG] [Thread-117936] [transport.py] [_log()] server lang: <none>
2025-11-03T15:05:47.982 [DEBUG] [Thread-117936] [transport.py] [_log()] kex follows: False
2025-11-03T15:05:47.982 [DEBUG] [Thread-117936] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:05:47.982 [DEBUG] [Thread-117936] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:05:47.983 [DEBUG] [Thread-117936] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:05:47.983 [DEBUG] [Thread-117936] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:05:47.983 [DEBUG] [Thread-117936] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:05:47.983 [DEBUG] [Thread-117936] [transport.py] [_log()] Compression: none
2025-11-03T15:05:47.983 [DEBUG] [Thread-117936] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:05:48.038 [DEBUG] [Thread-117936] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:05:48.038 [DEBUG] [Thread-117936] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:05:48.038 [DEBUG] [Thread-117936] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:05:48.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:05:48.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:05:48.095 [DEBUG] [Thread-117936] [transport.py] [_log()] userauth is OK
2025-11-03T15:05:48.095 [DEBUG] [Thread-117936] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:05:48.095 [DEBUG] [Thread-117936] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:05:48.095 [DEBUG] [Thread-117936] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:05:48.095 [DEBUG] [Thread-117936] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:05:48.111 [INFO] [Thread-117936] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:05:48.112 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:05:48.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:05:48.966 [DEBUG] [Thread-117936] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:05:48.967 [DEBUG] [Thread-117936] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:05:49.014 [DEBUG] [Thread-117936] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:05:49.014 [DEBUG] [Thread-117936] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:05:49.023 [DEBUG] [Thread-117936] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:05:49.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:05:49.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:05:49.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:05:49.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:05:49.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:05:49.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:05:49.055 [DEBUG] [Thread-117936] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:05:52.731 [DEBUG] [Thread-117938 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:06:02.930 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:06:02.930 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:06:07.774 [DEBUG] [Thread-117939 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:06:14.834 [DEBUG] [Thread-117940 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:06:19.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:06:19.076 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:06:19.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:06:19.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 5, 50), 47.11, 3.65, 0.0, 17.2, 26.48, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:06:19.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:05:50
2025-11-03T15:06:19.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:06:20.037 [DEBUG] [Thread-117941] [transport.py] [_log()] starting thread (client mode): 0x117bd3c0
2025-11-03T15:06:20.037 [DEBUG] [Thread-117941] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:06:20.059 [DEBUG] [Thread-117941] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:06:20.059 [INFO] [Thread-117941] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:06:20.062 [DEBUG] [Thread-117941] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:06:20.062 [DEBUG] [Thread-117941] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:06:20.062 [DEBUG] [Thread-117941] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:06:20.062 [DEBUG] [Thread-117941] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:06:20.062 [DEBUG] [Thread-117941] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:06:20.062 [DEBUG] [Thread-117941] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:06:20.062 [DEBUG] [Thread-117941] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:06:20.062 [DEBUG] [Thread-117941] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:06:20.062 [DEBUG] [Thread-117941] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:06:20.062 [DEBUG] [Thread-117941] [transport.py] [_log()] client lang: <none>
2025-11-03T15:06:20.062 [DEBUG] [Thread-117941] [transport.py] [_log()] server lang: <none>
2025-11-03T15:06:20.062 [DEBUG] [Thread-117941] [transport.py] [_log()] kex follows: False
2025-11-03T15:06:20.062 [DEBUG] [Thread-117941] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:06:20.062 [DEBUG] [Thread-117941] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:06:20.062 [DEBUG] [Thread-117941] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:06:20.062 [DEBUG] [Thread-117941] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:06:20.062 [DEBUG] [Thread-117941] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:06:20.062 [DEBUG] [Thread-117941] [transport.py] [_log()] Compression: none
2025-11-03T15:06:20.063 [DEBUG] [Thread-117941] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:06:20.078 [DEBUG] [Thread-117941] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:06:20.079 [DEBUG] [Thread-117941] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:06:20.079 [DEBUG] [Thread-117941] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:06:20.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:06:20.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:06:20.081 [DEBUG] [Thread-117941] [transport.py] [_log()] userauth is OK
2025-11-03T15:06:20.081 [DEBUG] [Thread-117941] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:06:20.081 [DEBUG] [Thread-117941] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:06:20.081 [DEBUG] [Thread-117941] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:06:20.081 [DEBUG] [Thread-117941] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:06:20.096 [INFO] [Thread-117941] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:06:20.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:06:20.886 [DEBUG] [Thread-117941] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:06:20.886 [DEBUG] [Thread-117941] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:06:20.886 [DEBUG] [Thread-117941] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:06:20.927 [DEBUG] [Thread-117941] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:06:20.927 [DEBUG] [Thread-117941] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:06:20.931 [DEBUG] [Thread-117941] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:06:20.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:06:20.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:06:20.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:06:20.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:06:20.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:06:20.957 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:06:20.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:06:20.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:06:20.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:06:20.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.545589 -999.00  +26.70  17.36      8   -9.90 1 1 1 1 1   888    0 35.26 -54.10 ----- 22.7 17.4 327.0 27.7 31.2 -31.6 30.8 -30.3 31.6 -29.5 32.4 -30.7
2025-11-03T15:06:20.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:06:20.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:06:20.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.545589
2025-11-03T15:06:20.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:06:20.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:06:20.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:06:20.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:06:20.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:06:20.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:05:50', tmtdew=47.11, humidity=3.65, cloud=0.0, wind=17.2, temperature=26.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:05:38.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:06:20.961 [DEBUG] [Thread-117941] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:06:21.044 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:06:21.056 [DEBUG] [Thread-117944] [transport.py] [_log()] starting thread (client mode): 0xed20430
2025-11-03T15:06:21.056 [DEBUG] [Thread-117944] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:06:21.071 [DEBUG] [Thread-117944] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:06:21.071 [INFO] [Thread-117944] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:06:21.079 [DEBUG] [Thread-117944] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:06:21.079 [DEBUG] [Thread-117944] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:06:21.079 [DEBUG] [Thread-117944] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:06:21.079 [DEBUG] [Thread-117944] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:06:21.079 [DEBUG] [Thread-117944] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:06:21.079 [DEBUG] [Thread-117944] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:06:21.079 [DEBUG] [Thread-117944] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:06:21.079 [DEBUG] [Thread-117944] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:06:21.080 [DEBUG] [Thread-117944] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:06:21.080 [DEBUG] [Thread-117944] [transport.py] [_log()] client lang: <none>
2025-11-03T15:06:21.080 [DEBUG] [Thread-117944] [transport.py] [_log()] server lang: <none>
2025-11-03T15:06:21.080 [DEBUG] [Thread-117944] [transport.py] [_log()] kex follows: False
2025-11-03T15:06:21.080 [DEBUG] [Thread-117944] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:06:21.080 [DEBUG] [Thread-117944] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:06:21.080 [DEBUG] [Thread-117944] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:06:21.080 [DEBUG] [Thread-117944] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:06:21.080 [DEBUG] [Thread-117944] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:06:21.080 [DEBUG] [Thread-117944] [transport.py] [_log()] Compression: none
2025-11-03T15:06:21.080 [DEBUG] [Thread-117944] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:06:21.140 [DEBUG] [Thread-117944] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:06:21.141 [DEBUG] [Thread-117944] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:06:21.141 [DEBUG] [Thread-117944] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:06:21.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:06:21.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:06:21.195 [DEBUG] [Thread-117944] [transport.py] [_log()] userauth is OK
2025-11-03T15:06:21.195 [DEBUG] [Thread-117944] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:06:21.195 [DEBUG] [Thread-117944] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:06:21.196 [DEBUG] [Thread-117944] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:06:21.196 [DEBUG] [Thread-117944] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:06:21.214 [INFO] [Thread-117944] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:06:21.214 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:06:21.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:06:22.080 [DEBUG] [Thread-117944] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:06:22.080 [DEBUG] [Thread-117944] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:06:22.128 [DEBUG] [Thread-117944] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:06:22.129 [DEBUG] [Thread-117944] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:06:22.141 [DEBUG] [Thread-117944] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:06:22.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:06:22.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:06:22.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:06:22.170 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:06:22.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:06:22.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:06:22.179 [DEBUG] [Thread-117944] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:06:22.811 [DEBUG] [Thread-117946 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:06:37.859 [DEBUG] [Thread-117947 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:06:52.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:06:52.193 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:06:52.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:06:52.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 6, 22), 46.82, 3.74, 0.0, 20.34, 26.45, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:06:52.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:06:22
2025-11-03T15:06:52.895 [DEBUG] [Thread-117948 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:06:52.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:06:53.134 [DEBUG] [Thread-117949] [transport.py] [_log()] starting thread (client mode): 0x117bf400
2025-11-03T15:06:53.134 [DEBUG] [Thread-117949] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:06:53.154 [DEBUG] [Thread-117949] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:06:53.154 [INFO] [Thread-117949] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:06:53.157 [DEBUG] [Thread-117949] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:06:53.157 [DEBUG] [Thread-117949] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:06:53.157 [DEBUG] [Thread-117949] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:06:53.157 [DEBUG] [Thread-117949] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:06:53.157 [DEBUG] [Thread-117949] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:06:53.157 [DEBUG] [Thread-117949] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:06:53.157 [DEBUG] [Thread-117949] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:06:53.157 [DEBUG] [Thread-117949] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:06:53.157 [DEBUG] [Thread-117949] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:06:53.157 [DEBUG] [Thread-117949] [transport.py] [_log()] client lang: <none>
2025-11-03T15:06:53.157 [DEBUG] [Thread-117949] [transport.py] [_log()] server lang: <none>
2025-11-03T15:06:53.157 [DEBUG] [Thread-117949] [transport.py] [_log()] kex follows: False
2025-11-03T15:06:53.157 [DEBUG] [Thread-117949] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:06:53.157 [DEBUG] [Thread-117949] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:06:53.157 [DEBUG] [Thread-117949] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:06:53.157 [DEBUG] [Thread-117949] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:06:53.158 [DEBUG] [Thread-117949] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:06:53.158 [DEBUG] [Thread-117949] [transport.py] [_log()] Compression: none
2025-11-03T15:06:53.158 [DEBUG] [Thread-117949] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:06:53.175 [DEBUG] [Thread-117949] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:06:53.175 [DEBUG] [Thread-117949] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:06:53.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:06:53.176 [DEBUG] [Thread-117949] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:06:53.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:06:53.187 [DEBUG] [Thread-117949] [transport.py] [_log()] userauth is OK
2025-11-03T15:06:53.187 [DEBUG] [Thread-117949] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:06:53.188 [DEBUG] [Thread-117949] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:06:53.188 [DEBUG] [Thread-117949] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:06:53.188 [DEBUG] [Thread-117949] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:06:53.224 [INFO] [Thread-117949] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:06:53.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:06:53.864 [DEBUG] [Thread-117949] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:06:53.864 [DEBUG] [Thread-117949] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:06:53.865 [DEBUG] [Thread-117949] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:06:53.896 [DEBUG] [Thread-117949] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:06:53.896 [DEBUG] [Thread-117949] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:06:53.899 [DEBUG] [Thread-117949] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:06:53.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:06:53.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:06:53.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:06:53.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:06:53.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:06:53.917 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:06:53.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:06:53.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:06:53.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:06:53.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.545936 -999.00  +27.00  23.91      8   -9.80 1 1 1 1 1   888    0 35.15 -50.92 ----- 22.3 23.9 286.7 32.2 31.3 -31.1 30.8 -31.0 31.7 -30.4 32.5 -30.5
2025-11-03T15:06:53.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:06:53.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:06:53.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.545936
2025-11-03T15:06:53.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:06:53.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:06:53.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:06:53.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:06:53.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:06:53.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:06:22', tmtdew=46.82, humidity=3.74, cloud=0.0, wind=20.34, temperature=26.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:06:08.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:06:53.919 [DEBUG] [Thread-117949] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:06:53.990 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:06:54.002 [DEBUG] [Thread-117952] [transport.py] [_log()] starting thread (client mode): 0xedd45b0
2025-11-03T15:06:54.002 [DEBUG] [Thread-117952] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:06:54.017 [DEBUG] [Thread-117952] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:06:54.017 [INFO] [Thread-117952] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:06:54.025 [DEBUG] [Thread-117952] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:06:54.025 [DEBUG] [Thread-117952] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:06:54.025 [DEBUG] [Thread-117952] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:06:54.025 [DEBUG] [Thread-117952] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:06:54.025 [DEBUG] [Thread-117952] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:06:54.025 [DEBUG] [Thread-117952] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:06:54.025 [DEBUG] [Thread-117952] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:06:54.025 [DEBUG] [Thread-117952] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:06:54.025 [DEBUG] [Thread-117952] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:06:54.025 [DEBUG] [Thread-117952] [transport.py] [_log()] client lang: <none>
2025-11-03T15:06:54.025 [DEBUG] [Thread-117952] [transport.py] [_log()] server lang: <none>
2025-11-03T15:06:54.025 [DEBUG] [Thread-117952] [transport.py] [_log()] kex follows: False
2025-11-03T15:06:54.025 [DEBUG] [Thread-117952] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:06:54.025 [DEBUG] [Thread-117952] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:06:54.025 [DEBUG] [Thread-117952] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:06:54.025 [DEBUG] [Thread-117952] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:06:54.025 [DEBUG] [Thread-117952] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:06:54.025 [DEBUG] [Thread-117952] [transport.py] [_log()] Compression: none
2025-11-03T15:06:54.025 [DEBUG] [Thread-117952] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:06:54.082 [DEBUG] [Thread-117952] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:06:54.082 [DEBUG] [Thread-117952] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:06:54.082 [DEBUG] [Thread-117952] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:06:54.082 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:06:54.082 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:06:54.139 [DEBUG] [Thread-117952] [transport.py] [_log()] userauth is OK
2025-11-03T15:06:54.139 [DEBUG] [Thread-117952] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:06:54.139 [DEBUG] [Thread-117952] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:06:54.139 [DEBUG] [Thread-117952] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:06:54.139 [DEBUG] [Thread-117952] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:06:54.153 [INFO] [Thread-117952] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:06:54.153 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:06:54.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:06:54.982 [DEBUG] [Thread-117952] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:06:54.982 [DEBUG] [Thread-117952] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:06:55.030 [DEBUG] [Thread-117952] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:06:55.030 [DEBUG] [Thread-117952] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:06:55.040 [DEBUG] [Thread-117952] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:06:55.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:06:55.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:06:55.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:06:55.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:06:55.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:06:55.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:06:55.090 [DEBUG] [Thread-117952] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:07:03.072 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:07:03.073 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:07:07.922 [DEBUG] [Thread-117954 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:07:14.873 [DEBUG] [Thread-117955 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:07:22.984 [DEBUG] [Thread-117956 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:07:25.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:07:25.091 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:07:25.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:07:25.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 6, 55), 46.99, 3.72, 0.0, 28.9, 26.85, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:07:25.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:06:55
2025-11-03T15:07:25.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:07:26.038 [DEBUG] [Thread-117957] [transport.py] [_log()] starting thread (client mode): 0xed2f910
2025-11-03T15:07:26.039 [DEBUG] [Thread-117957] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:07:26.058 [DEBUG] [Thread-117957] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:07:26.059 [INFO] [Thread-117957] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:07:26.061 [DEBUG] [Thread-117957] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:07:26.062 [DEBUG] [Thread-117957] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:07:26.062 [DEBUG] [Thread-117957] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:07:26.062 [DEBUG] [Thread-117957] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:07:26.062 [DEBUG] [Thread-117957] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:07:26.062 [DEBUG] [Thread-117957] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:07:26.062 [DEBUG] [Thread-117957] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:07:26.062 [DEBUG] [Thread-117957] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:07:26.062 [DEBUG] [Thread-117957] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:07:26.062 [DEBUG] [Thread-117957] [transport.py] [_log()] client lang: <none>
2025-11-03T15:07:26.062 [DEBUG] [Thread-117957] [transport.py] [_log()] server lang: <none>
2025-11-03T15:07:26.062 [DEBUG] [Thread-117957] [transport.py] [_log()] kex follows: False
2025-11-03T15:07:26.062 [DEBUG] [Thread-117957] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:07:26.062 [DEBUG] [Thread-117957] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:07:26.062 [DEBUG] [Thread-117957] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:07:26.062 [DEBUG] [Thread-117957] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:07:26.062 [DEBUG] [Thread-117957] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:07:26.062 [DEBUG] [Thread-117957] [transport.py] [_log()] Compression: none
2025-11-03T15:07:26.062 [DEBUG] [Thread-117957] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:07:26.081 [DEBUG] [Thread-117957] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:07:26.081 [DEBUG] [Thread-117957] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:07:26.082 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:07:26.082 [DEBUG] [Thread-117957] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:07:26.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:07:26.084 [DEBUG] [Thread-117957] [transport.py] [_log()] userauth is OK
2025-11-03T15:07:26.085 [DEBUG] [Thread-117957] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:07:26.085 [DEBUG] [Thread-117957] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:07:26.085 [DEBUG] [Thread-117957] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:07:26.085 [DEBUG] [Thread-117957] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:07:26.111 [INFO] [Thread-117957] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:07:26.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:07:26.888 [DEBUG] [Thread-117957] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:07:26.889 [DEBUG] [Thread-117957] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:07:26.889 [DEBUG] [Thread-117957] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:07:26.930 [DEBUG] [Thread-117957] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:07:26.930 [DEBUG] [Thread-117957] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:07:26.934 [DEBUG] [Thread-117957] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:07:26.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:07:26.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:07:26.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:07:26.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:07:26.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:07:26.967 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:07:26.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:07:26.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:07:26.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:07:26.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.546284 -999.00  +26.90  29.22      8   -9.60 1 1 1 1 1   888    0 34.76 -63.84 ----- 37.0 29.2 311.4 46.2 31.3 -32.2 30.8 -31.4 31.8 -30.8 32.5 -30.3
2025-11-03T15:07:26.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:07:26.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:07:26.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.546284
2025-11-03T15:07:26.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:07:26.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:07:26.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:07:26.969 [DEBUG] [Thread-117957] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:07:26.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:07:26.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:07:26.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:06:55', tmtdew=46.99, humidity=3.72, cloud=0.0, wind=28.9, temperature=26.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:06:38.938', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:07:27.052 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:07:27.065 [DEBUG] [Thread-117960] [transport.py] [_log()] starting thread (client mode): 0xeda3550
2025-11-03T15:07:27.065 [DEBUG] [Thread-117960] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:07:27.080 [DEBUG] [Thread-117960] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:07:27.080 [INFO] [Thread-117960] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:07:27.088 [DEBUG] [Thread-117960] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:07:27.088 [DEBUG] [Thread-117960] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:07:27.088 [DEBUG] [Thread-117960] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:07:27.089 [DEBUG] [Thread-117960] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:07:27.089 [DEBUG] [Thread-117960] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:07:27.089 [DEBUG] [Thread-117960] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:07:27.089 [DEBUG] [Thread-117960] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:07:27.089 [DEBUG] [Thread-117960] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:07:27.089 [DEBUG] [Thread-117960] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:07:27.089 [DEBUG] [Thread-117960] [transport.py] [_log()] client lang: <none>
2025-11-03T15:07:27.089 [DEBUG] [Thread-117960] [transport.py] [_log()] server lang: <none>
2025-11-03T15:07:27.090 [DEBUG] [Thread-117960] [transport.py] [_log()] kex follows: False
2025-11-03T15:07:27.090 [DEBUG] [Thread-117960] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:07:27.090 [DEBUG] [Thread-117960] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:07:27.090 [DEBUG] [Thread-117960] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:07:27.090 [DEBUG] [Thread-117960] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:07:27.090 [DEBUG] [Thread-117960] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:07:27.090 [DEBUG] [Thread-117960] [transport.py] [_log()] Compression: none
2025-11-03T15:07:27.090 [DEBUG] [Thread-117960] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:07:27.152 [DEBUG] [Thread-117960] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:07:27.152 [DEBUG] [Thread-117960] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:07:27.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:07:27.153 [DEBUG] [Thread-117960] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:07:27.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:07:27.212 [DEBUG] [Thread-117960] [transport.py] [_log()] userauth is OK
2025-11-03T15:07:27.212 [DEBUG] [Thread-117960] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:07:27.212 [DEBUG] [Thread-117960] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:07:27.212 [DEBUG] [Thread-117960] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:07:27.213 [DEBUG] [Thread-117960] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:07:27.231 [INFO] [Thread-117960] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:07:27.231 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:07:27.232 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:07:28.077 [DEBUG] [Thread-117960] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:07:28.077 [DEBUG] [Thread-117960] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:07:28.125 [DEBUG] [Thread-117960] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:07:28.125 [DEBUG] [Thread-117960] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:07:28.134 [DEBUG] [Thread-117960] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:07:28.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:07:28.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:07:28.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:07:28.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:07:28.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:07:28.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:07:28.166 [DEBUG] [Thread-117960] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:07:38.024 [DEBUG] [Thread-117962 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:07:53.079 [DEBUG] [Thread-117963 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:07:58.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:07:58.166 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:07:58.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:07:58.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 7, 27), 46.94, 3.75, 0.0, 31.94, 27.03, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:07:58.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:07:27
2025-11-03T15:07:58.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:07:59.097 [DEBUG] [Thread-117964] [transport.py] [_log()] starting thread (client mode): 0x117bc0d0
2025-11-03T15:07:59.097 [DEBUG] [Thread-117964] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:07:59.118 [DEBUG] [Thread-117964] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:07:59.118 [INFO] [Thread-117964] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:07:59.121 [DEBUG] [Thread-117964] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:07:59.121 [DEBUG] [Thread-117964] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:07:59.121 [DEBUG] [Thread-117964] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:07:59.121 [DEBUG] [Thread-117964] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:07:59.121 [DEBUG] [Thread-117964] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:07:59.121 [DEBUG] [Thread-117964] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:07:59.121 [DEBUG] [Thread-117964] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:07:59.121 [DEBUG] [Thread-117964] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:07:59.121 [DEBUG] [Thread-117964] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:07:59.121 [DEBUG] [Thread-117964] [transport.py] [_log()] client lang: <none>
2025-11-03T15:07:59.121 [DEBUG] [Thread-117964] [transport.py] [_log()] server lang: <none>
2025-11-03T15:07:59.121 [DEBUG] [Thread-117964] [transport.py] [_log()] kex follows: False
2025-11-03T15:07:59.121 [DEBUG] [Thread-117964] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:07:59.121 [DEBUG] [Thread-117964] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:07:59.121 [DEBUG] [Thread-117964] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:07:59.121 [DEBUG] [Thread-117964] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:07:59.121 [DEBUG] [Thread-117964] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:07:59.121 [DEBUG] [Thread-117964] [transport.py] [_log()] Compression: none
2025-11-03T15:07:59.121 [DEBUG] [Thread-117964] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:07:59.139 [DEBUG] [Thread-117964] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:07:59.139 [DEBUG] [Thread-117964] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:07:59.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:07:59.149 [DEBUG] [Thread-117964] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:07:59.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:07:59.152 [DEBUG] [Thread-117964] [transport.py] [_log()] userauth is OK
2025-11-03T15:07:59.152 [DEBUG] [Thread-117964] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:07:59.152 [DEBUG] [Thread-117964] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:07:59.152 [DEBUG] [Thread-117964] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:07:59.152 [DEBUG] [Thread-117964] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:07:59.188 [INFO] [Thread-117964] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:07:59.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:07:59.815 [DEBUG] [Thread-117964] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:07:59.816 [DEBUG] [Thread-117964] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:07:59.816 [DEBUG] [Thread-117964] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:07:59.857 [DEBUG] [Thread-117964] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:07:59.857 [DEBUG] [Thread-117964] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:07:59.861 [DEBUG] [Thread-117964] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:07:59.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:07:59.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:07:59.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:07:59.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:07:59.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:07:59.887 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:07:59.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:07:59.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:07:59.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:07:59.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.546631 -999.00  +26.80  31.28      8   -9.70 1 1 2 1 1   888    0 34.94 -63.84 ----- 24.2 31.3 317.6 41.9 31.2 -32.5 30.8 -31.5 31.6 -31.5 32.5 -31.0
2025-11-03T15:07:59.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:07:59.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:07:59.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.546631
2025-11-03T15:07:59.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:07:59.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:07:59.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:07:59.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:07:59.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:07:59.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:07:27', tmtdew=46.94, humidity=3.75, cloud=0.0, wind=31.94, temperature=27.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:07:08.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:07:59.890 [DEBUG] [Thread-117964] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:07:59.989 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:08:00.002 [DEBUG] [Thread-117967] [transport.py] [_log()] starting thread (client mode): 0xed21f00
2025-11-03T15:08:00.002 [DEBUG] [Thread-117967] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:08:00.017 [DEBUG] [Thread-117967] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:08:00.017 [INFO] [Thread-117967] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:08:00.024 [DEBUG] [Thread-117967] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:08:00.024 [DEBUG] [Thread-117967] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:08:00.024 [DEBUG] [Thread-117967] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:08:00.024 [DEBUG] [Thread-117967] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:08:00.025 [DEBUG] [Thread-117967] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:08:00.025 [DEBUG] [Thread-117967] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:08:00.025 [DEBUG] [Thread-117967] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:08:00.025 [DEBUG] [Thread-117967] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:08:00.025 [DEBUG] [Thread-117967] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:08:00.025 [DEBUG] [Thread-117967] [transport.py] [_log()] client lang: <none>
2025-11-03T15:08:00.025 [DEBUG] [Thread-117967] [transport.py] [_log()] server lang: <none>
2025-11-03T15:08:00.025 [DEBUG] [Thread-117967] [transport.py] [_log()] kex follows: False
2025-11-03T15:08:00.025 [DEBUG] [Thread-117967] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:08:00.025 [DEBUG] [Thread-117967] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:08:00.025 [DEBUG] [Thread-117967] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:08:00.025 [DEBUG] [Thread-117967] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:08:00.025 [DEBUG] [Thread-117967] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:08:00.025 [DEBUG] [Thread-117967] [transport.py] [_log()] Compression: none
2025-11-03T15:08:00.025 [DEBUG] [Thread-117967] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:08:00.083 [DEBUG] [Thread-117967] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:08:00.083 [DEBUG] [Thread-117967] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:08:00.084 [DEBUG] [Thread-117967] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:08:00.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:08:00.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:08:00.139 [DEBUG] [Thread-117967] [transport.py] [_log()] userauth is OK
2025-11-03T15:08:00.139 [DEBUG] [Thread-117967] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:08:00.139 [DEBUG] [Thread-117967] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:08:00.139 [DEBUG] [Thread-117967] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:08:00.139 [DEBUG] [Thread-117967] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:08:00.160 [INFO] [Thread-117967] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:08:00.160 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:08:00.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:08:00.984 [DEBUG] [Thread-117967] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:08:00.984 [DEBUG] [Thread-117967] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:08:01.032 [DEBUG] [Thread-117967] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:08:01.032 [DEBUG] [Thread-117967] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:08:01.041 [DEBUG] [Thread-117967] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:08:01.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:08:01.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:08:01.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:08:01.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:08:01.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:08:01.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:08:01.073 [DEBUG] [Thread-117967] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:08:03.212 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:08:03.213 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:08:08.120 [DEBUG] [Thread-117969 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:08:15.084 [DEBUG] [Thread-117970 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:08:23.160 [DEBUG] [Thread-117971 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:08:31.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:08:31.096 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:08:31.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:08:31.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 7, 59), 47.09, 3.72, 0.0, 33.19, 26.93, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:08:31.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:07:59
2025-11-03T15:08:31.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:08:32.054 [DEBUG] [Thread-117972] [transport.py] [_log()] starting thread (client mode): 0xed4f1f0
2025-11-03T15:08:32.054 [DEBUG] [Thread-117972] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:08:32.074 [DEBUG] [Thread-117972] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:08:32.074 [INFO] [Thread-117972] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:08:32.077 [DEBUG] [Thread-117972] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:08:32.077 [DEBUG] [Thread-117972] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:08:32.077 [DEBUG] [Thread-117972] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:08:32.077 [DEBUG] [Thread-117972] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:08:32.077 [DEBUG] [Thread-117972] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:08:32.077 [DEBUG] [Thread-117972] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:08:32.077 [DEBUG] [Thread-117972] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:08:32.077 [DEBUG] [Thread-117972] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:08:32.077 [DEBUG] [Thread-117972] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:08:32.077 [DEBUG] [Thread-117972] [transport.py] [_log()] client lang: <none>
2025-11-03T15:08:32.077 [DEBUG] [Thread-117972] [transport.py] [_log()] server lang: <none>
2025-11-03T15:08:32.077 [DEBUG] [Thread-117972] [transport.py] [_log()] kex follows: False
2025-11-03T15:08:32.077 [DEBUG] [Thread-117972] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:08:32.077 [DEBUG] [Thread-117972] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:08:32.077 [DEBUG] [Thread-117972] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:08:32.077 [DEBUG] [Thread-117972] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:08:32.077 [DEBUG] [Thread-117972] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:08:32.077 [DEBUG] [Thread-117972] [transport.py] [_log()] Compression: none
2025-11-03T15:08:32.077 [DEBUG] [Thread-117972] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:08:32.094 [DEBUG] [Thread-117972] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:08:32.094 [DEBUG] [Thread-117972] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:08:32.095 [DEBUG] [Thread-117972] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:08:32.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:08:32.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:08:32.096 [DEBUG] [Thread-117972] [transport.py] [_log()] userauth is OK
2025-11-03T15:08:32.097 [DEBUG] [Thread-117972] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:08:32.097 [DEBUG] [Thread-117972] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:08:32.097 [DEBUG] [Thread-117972] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:08:32.097 [DEBUG] [Thread-117972] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:08:32.111 [INFO] [Thread-117972] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:08:32.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:08:32.915 [DEBUG] [Thread-117972] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:08:32.915 [DEBUG] [Thread-117972] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:08:32.915 [DEBUG] [Thread-117972] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:08:32.955 [DEBUG] [Thread-117972] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:08:32.955 [DEBUG] [Thread-117972] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:08:32.958 [DEBUG] [Thread-117972] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:08:32.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:08:32.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:08:32.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:08:32.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:08:32.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:08:32.976 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:08:32.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:08:32.977 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:08:32.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:08:32.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.546978 -999.00  +26.90  31.80      8   -9.90 1 1 2 1 1   888    0 35.01 -60.04 ----- 32.6 31.8 316.0 37.5 31.2 -32.5 30.7 -31.9 31.6 -31.2 32.4 -31.0
2025-11-03T15:08:32.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:08:32.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:08:32.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.546978
2025-11-03T15:08:32.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:08:32.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:08:32.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:08:32.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:08:32.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:08:32.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:07:59', tmtdew=47.09, humidity=3.72, cloud=0.0, wind=33.19, temperature=26.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:07:38.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:08:32.978 [DEBUG] [Thread-117972] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:08:33.052 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:08:33.063 [DEBUG] [Thread-117975] [transport.py] [_log()] starting thread (client mode): 0x117be3e0
2025-11-03T15:08:33.064 [DEBUG] [Thread-117975] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:08:33.079 [DEBUG] [Thread-117975] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:08:33.079 [INFO] [Thread-117975] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:08:33.086 [DEBUG] [Thread-117975] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:08:33.086 [DEBUG] [Thread-117975] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:08:33.086 [DEBUG] [Thread-117975] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:08:33.086 [DEBUG] [Thread-117975] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:08:33.086 [DEBUG] [Thread-117975] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:08:33.086 [DEBUG] [Thread-117975] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:08:33.086 [DEBUG] [Thread-117975] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:08:33.086 [DEBUG] [Thread-117975] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:08:33.086 [DEBUG] [Thread-117975] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:08:33.086 [DEBUG] [Thread-117975] [transport.py] [_log()] client lang: <none>
2025-11-03T15:08:33.087 [DEBUG] [Thread-117975] [transport.py] [_log()] server lang: <none>
2025-11-03T15:08:33.087 [DEBUG] [Thread-117975] [transport.py] [_log()] kex follows: False
2025-11-03T15:08:33.087 [DEBUG] [Thread-117975] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:08:33.087 [DEBUG] [Thread-117975] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:08:33.087 [DEBUG] [Thread-117975] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:08:33.087 [DEBUG] [Thread-117975] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:08:33.087 [DEBUG] [Thread-117975] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:08:33.087 [DEBUG] [Thread-117975] [transport.py] [_log()] Compression: none
2025-11-03T15:08:33.087 [DEBUG] [Thread-117975] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:08:33.142 [DEBUG] [Thread-117975] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:08:33.142 [DEBUG] [Thread-117975] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:08:33.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:08:33.142 [DEBUG] [Thread-117975] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:08:33.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:08:33.199 [DEBUG] [Thread-117975] [transport.py] [_log()] userauth is OK
2025-11-03T15:08:33.199 [DEBUG] [Thread-117975] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:08:33.199 [DEBUG] [Thread-117975] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:08:33.199 [DEBUG] [Thread-117975] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:08:33.199 [DEBUG] [Thread-117975] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:08:33.213 [INFO] [Thread-117975] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:08:33.213 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:08:33.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:08:34.022 [DEBUG] [Thread-117975] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:08:34.022 [DEBUG] [Thread-117975] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:08:34.069 [DEBUG] [Thread-117975] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:08:34.069 [DEBUG] [Thread-117975] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:08:34.078 [DEBUG] [Thread-117975] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:08:34.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:08:34.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:08:34.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:08:34.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:08:34.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:08:34.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:08:34.110 [DEBUG] [Thread-117975] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:08:38.192 [DEBUG] [Thread-117977 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:08:53.255 [DEBUG] [Thread-117978 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:09:03.354 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:09:03.355 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:09:04.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:09:04.133 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:09:04.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:09:04.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 8, 31), 46.69, 3.82, 0.0, 33.65, 26.74, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:09:04.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:08:31
2025-11-03T15:09:04.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:09:05.109 [DEBUG] [Thread-117979] [transport.py] [_log()] starting thread (client mode): 0x117bc0d0
2025-11-03T15:09:05.109 [DEBUG] [Thread-117979] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:09:05.128 [DEBUG] [Thread-117979] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:09:05.128 [INFO] [Thread-117979] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:09:05.131 [DEBUG] [Thread-117979] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:09:05.131 [DEBUG] [Thread-117979] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:09:05.131 [DEBUG] [Thread-117979] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:09:05.131 [DEBUG] [Thread-117979] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:09:05.131 [DEBUG] [Thread-117979] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:09:05.131 [DEBUG] [Thread-117979] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:09:05.131 [DEBUG] [Thread-117979] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:09:05.131 [DEBUG] [Thread-117979] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:09:05.131 [DEBUG] [Thread-117979] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:09:05.131 [DEBUG] [Thread-117979] [transport.py] [_log()] client lang: <none>
2025-11-03T15:09:05.131 [DEBUG] [Thread-117979] [transport.py] [_log()] server lang: <none>
2025-11-03T15:09:05.131 [DEBUG] [Thread-117979] [transport.py] [_log()] kex follows: False
2025-11-03T15:09:05.131 [DEBUG] [Thread-117979] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:09:05.131 [DEBUG] [Thread-117979] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:09:05.131 [DEBUG] [Thread-117979] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:09:05.131 [DEBUG] [Thread-117979] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:09:05.131 [DEBUG] [Thread-117979] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:09:05.131 [DEBUG] [Thread-117979] [transport.py] [_log()] Compression: none
2025-11-03T15:09:05.132 [DEBUG] [Thread-117979] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:09:05.149 [DEBUG] [Thread-117979] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:09:05.150 [DEBUG] [Thread-117979] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:09:05.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:09:05.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:09:05.150 [DEBUG] [Thread-117979] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:09:05.150 [DEBUG] [Thread-117979] [transport.py] [_log()] userauth is OK
2025-11-03T15:09:05.151 [DEBUG] [Thread-117979] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:09:05.151 [DEBUG] [Thread-117979] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:09:05.151 [DEBUG] [Thread-117979] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:09:05.151 [DEBUG] [Thread-117979] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:09:05.162 [INFO] [Thread-117979] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:09:05.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:09:05.767 [DEBUG] [Thread-117979] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:09:05.767 [DEBUG] [Thread-117979] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:09:05.768 [DEBUG] [Thread-117979] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:09:05.808 [DEBUG] [Thread-117979] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:09:05.808 [DEBUG] [Thread-117979] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:09:05.811 [DEBUG] [Thread-117979] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:09:05.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:09:05.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:09:05.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:09:05.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:09:05.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:09:05.829 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:09:05.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:09:05.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:09:05.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:09:05.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.547325 -999.00  +26.90  23.80      8   -9.60 1 1 1 1 1   888    0 33.69 -61.46 ----- 25.9 23.8 301.0 37.0 31.1 -31.3 30.7 -30.2 31.6 -30.4 32.3 -30.7
2025-11-03T15:09:05.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:09:05.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:09:05.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.547325
2025-11-03T15:09:05.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:09:05.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:09:05.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:09:05.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:09:05.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:09:05.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:08:31', tmtdew=46.69, humidity=3.82, cloud=0.0, wind=33.65, temperature=26.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:08:08.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:09:05.830 [DEBUG] [Thread-117979] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:09:05.905 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:09:05.916 [DEBUG] [Thread-117982] [transport.py] [_log()] starting thread (client mode): 0x117835e0
2025-11-03T15:09:05.917 [DEBUG] [Thread-117982] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:09:05.931 [DEBUG] [Thread-117982] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:09:05.931 [INFO] [Thread-117982] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:09:05.939 [DEBUG] [Thread-117982] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:09:05.939 [DEBUG] [Thread-117982] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:09:05.939 [DEBUG] [Thread-117982] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:09:05.939 [DEBUG] [Thread-117982] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:09:05.939 [DEBUG] [Thread-117982] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:09:05.939 [DEBUG] [Thread-117982] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:09:05.939 [DEBUG] [Thread-117982] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:09:05.939 [DEBUG] [Thread-117982] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:09:05.939 [DEBUG] [Thread-117982] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:09:05.939 [DEBUG] [Thread-117982] [transport.py] [_log()] client lang: <none>
2025-11-03T15:09:05.939 [DEBUG] [Thread-117982] [transport.py] [_log()] server lang: <none>
2025-11-03T15:09:05.939 [DEBUG] [Thread-117982] [transport.py] [_log()] kex follows: False
2025-11-03T15:09:05.939 [DEBUG] [Thread-117982] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:09:05.939 [DEBUG] [Thread-117982] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:09:05.939 [DEBUG] [Thread-117982] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:09:05.939 [DEBUG] [Thread-117982] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:09:05.939 [DEBUG] [Thread-117982] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:09:05.939 [DEBUG] [Thread-117982] [transport.py] [_log()] Compression: none
2025-11-03T15:09:05.940 [DEBUG] [Thread-117982] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:09:05.998 [DEBUG] [Thread-117982] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:09:05.998 [DEBUG] [Thread-117982] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:09:05.998 [DEBUG] [Thread-117982] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:09:05.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:09:05.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:09:06.054 [DEBUG] [Thread-117982] [transport.py] [_log()] userauth is OK
2025-11-03T15:09:06.054 [DEBUG] [Thread-117982] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:09:06.055 [DEBUG] [Thread-117982] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:09:06.055 [DEBUG] [Thread-117982] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:09:06.055 [DEBUG] [Thread-117982] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:09:06.069 [INFO] [Thread-117982] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:09:06.069 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:09:06.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:09:06.915 [DEBUG] [Thread-117982] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:09:06.915 [DEBUG] [Thread-117982] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:09:06.962 [DEBUG] [Thread-117982] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:09:06.962 [DEBUG] [Thread-117982] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:09:06.971 [DEBUG] [Thread-117982] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:09:06.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:09:06.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:09:06.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:09:06.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:09:06.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:09:06.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:09:07.004 [DEBUG] [Thread-117982] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:09:08.285 [DEBUG] [Thread-117984 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:09:15.151 [DEBUG] [Thread-117985 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:09:23.331 [DEBUG] [Thread-117986 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:09:37.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:09:37.026 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:09:37.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:09:37.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 9, 4), 47.28, 3.64, 0.0, 34.35, 26.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:09:37.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:09:04
2025-11-03T15:09:37.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:09:38.021 [DEBUG] [Thread-117987] [transport.py] [_log()] starting thread (client mode): 0x11780f10
2025-11-03T15:09:38.021 [DEBUG] [Thread-117987] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:09:38.041 [DEBUG] [Thread-117987] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:09:38.041 [INFO] [Thread-117987] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:09:38.044 [DEBUG] [Thread-117987] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:09:38.044 [DEBUG] [Thread-117987] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:09:38.044 [DEBUG] [Thread-117987] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:09:38.044 [DEBUG] [Thread-117987] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:09:38.044 [DEBUG] [Thread-117987] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:09:38.044 [DEBUG] [Thread-117987] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:09:38.044 [DEBUG] [Thread-117987] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:09:38.044 [DEBUG] [Thread-117987] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:09:38.044 [DEBUG] [Thread-117987] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:09:38.044 [DEBUG] [Thread-117987] [transport.py] [_log()] client lang: <none>
2025-11-03T15:09:38.044 [DEBUG] [Thread-117987] [transport.py] [_log()] server lang: <none>
2025-11-03T15:09:38.044 [DEBUG] [Thread-117987] [transport.py] [_log()] kex follows: False
2025-11-03T15:09:38.044 [DEBUG] [Thread-117987] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:09:38.044 [DEBUG] [Thread-117987] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:09:38.044 [DEBUG] [Thread-117987] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:09:38.044 [DEBUG] [Thread-117987] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:09:38.044 [DEBUG] [Thread-117987] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:09:38.044 [DEBUG] [Thread-117987] [transport.py] [_log()] Compression: none
2025-11-03T15:09:38.044 [DEBUG] [Thread-117987] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:09:38.060 [DEBUG] [Thread-117987] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:09:38.060 [DEBUG] [Thread-117987] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:09:38.060 [DEBUG] [Thread-117987] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:09:38.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:09:38.061 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:09:38.061 [DEBUG] [Thread-117987] [transport.py] [_log()] userauth is OK
2025-11-03T15:09:38.061 [DEBUG] [Thread-117987] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:09:38.061 [DEBUG] [Thread-117987] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:09:38.061 [DEBUG] [Thread-117987] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:09:38.061 [DEBUG] [Thread-117987] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:09:38.070 [INFO] [Thread-117987] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:09:38.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:09:38.366 [DEBUG] [Thread-117989 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:09:38.851 [DEBUG] [Thread-117987] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:09:38.851 [DEBUG] [Thread-117987] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:09:38.851 [DEBUG] [Thread-117987] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:09:38.892 [DEBUG] [Thread-117987] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:09:38.892 [DEBUG] [Thread-117987] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:09:38.895 [DEBUG] [Thread-117987] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:09:38.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:09:38.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:09:38.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:09:38.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:09:38.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:09:38.915 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:09:38.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:09:38.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:09:38.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:09:38.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.548020 -999.00  +27.20  25.99      8   -9.60 1 1 1 1 1   888    0 34.92 -63.08 ----- 26.8 26.0 316.6 33.1 31.2 -31.7 30.7 -31.2 31.6 -31.2 32.4 -30.1
2025-11-03T15:09:38.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:09:38.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:09:38.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.548020
2025-11-03T15:09:38.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:09:38.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:09:38.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:09:38.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:09:38.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:09:38.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:09:04', tmtdew=47.28, humidity=3.64, cloud=0.0, wind=34.35, temperature=26.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:09:08.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:09:38.916 [DEBUG] [Thread-117987] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:09:38.989 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:09:39.004 [DEBUG] [Thread-117991] [transport.py] [_log()] starting thread (client mode): 0xeda3550
2025-11-03T15:09:39.004 [DEBUG] [Thread-117991] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:09:39.019 [DEBUG] [Thread-117991] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:09:39.019 [INFO] [Thread-117991] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:09:39.027 [DEBUG] [Thread-117991] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:09:39.027 [DEBUG] [Thread-117991] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:09:39.027 [DEBUG] [Thread-117991] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:09:39.027 [DEBUG] [Thread-117991] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:09:39.027 [DEBUG] [Thread-117991] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:09:39.027 [DEBUG] [Thread-117991] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:09:39.027 [DEBUG] [Thread-117991] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:09:39.027 [DEBUG] [Thread-117991] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:09:39.027 [DEBUG] [Thread-117991] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:09:39.027 [DEBUG] [Thread-117991] [transport.py] [_log()] client lang: <none>
2025-11-03T15:09:39.027 [DEBUG] [Thread-117991] [transport.py] [_log()] server lang: <none>
2025-11-03T15:09:39.027 [DEBUG] [Thread-117991] [transport.py] [_log()] kex follows: False
2025-11-03T15:09:39.027 [DEBUG] [Thread-117991] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:09:39.027 [DEBUG] [Thread-117991] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:09:39.027 [DEBUG] [Thread-117991] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:09:39.027 [DEBUG] [Thread-117991] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:09:39.027 [DEBUG] [Thread-117991] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:09:39.027 [DEBUG] [Thread-117991] [transport.py] [_log()] Compression: none
2025-11-03T15:09:39.027 [DEBUG] [Thread-117991] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:09:39.085 [DEBUG] [Thread-117991] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:09:39.085 [DEBUG] [Thread-117991] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:09:39.085 [DEBUG] [Thread-117991] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:09:39.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:09:39.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:09:39.142 [DEBUG] [Thread-117991] [transport.py] [_log()] userauth is OK
2025-11-03T15:09:39.142 [DEBUG] [Thread-117991] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:09:39.142 [DEBUG] [Thread-117991] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:09:39.142 [DEBUG] [Thread-117991] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:09:39.142 [DEBUG] [Thread-117991] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:09:39.160 [INFO] [Thread-117991] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:09:39.160 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:09:39.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:09:39.995 [DEBUG] [Thread-117991] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:09:39.995 [DEBUG] [Thread-117991] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:09:40.044 [DEBUG] [Thread-117991] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:09:40.044 [DEBUG] [Thread-117991] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:09:40.053 [DEBUG] [Thread-117991] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:09:40.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:09:40.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:09:40.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:09:40.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:09:40.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:09:40.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:09:40.086 [DEBUG] [Thread-117991] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:09:53.396 [DEBUG] [Thread-117993 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:10:03.496 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:10:03.497 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:10:08.442 [DEBUG] [Thread-117994 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:10:10.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:10:10.109 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:10:10.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:10:10.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 9, 36), 46.61, 3.74, 0.0, 28.99, 26.6, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:10:10.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:09:36
2025-11-03T15:10:11.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:10:11.221 [DEBUG] [Thread-117995] [transport.py] [_log()] starting thread (client mode): 0xedd49d0
2025-11-03T15:10:11.221 [DEBUG] [Thread-117995] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:10:11.241 [DEBUG] [Thread-117995] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:10:11.241 [INFO] [Thread-117995] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:10:11.244 [DEBUG] [Thread-117995] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:10:11.244 [DEBUG] [Thread-117995] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:10:11.244 [DEBUG] [Thread-117995] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:10:11.244 [DEBUG] [Thread-117995] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:10:11.244 [DEBUG] [Thread-117995] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:10:11.244 [DEBUG] [Thread-117995] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:10:11.244 [DEBUG] [Thread-117995] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:10:11.244 [DEBUG] [Thread-117995] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:10:11.244 [DEBUG] [Thread-117995] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:10:11.244 [DEBUG] [Thread-117995] [transport.py] [_log()] client lang: <none>
2025-11-03T15:10:11.244 [DEBUG] [Thread-117995] [transport.py] [_log()] server lang: <none>
2025-11-03T15:10:11.244 [DEBUG] [Thread-117995] [transport.py] [_log()] kex follows: False
2025-11-03T15:10:11.244 [DEBUG] [Thread-117995] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:10:11.244 [DEBUG] [Thread-117995] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:10:11.244 [DEBUG] [Thread-117995] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:10:11.244 [DEBUG] [Thread-117995] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:10:11.244 [DEBUG] [Thread-117995] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:10:11.244 [DEBUG] [Thread-117995] [transport.py] [_log()] Compression: none
2025-11-03T15:10:11.244 [DEBUG] [Thread-117995] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:10:11.260 [DEBUG] [Thread-117995] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:10:11.260 [DEBUG] [Thread-117995] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:10:11.261 [DEBUG] [Thread-117995] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:10:11.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:10:11.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:10:11.261 [DEBUG] [Thread-117995] [transport.py] [_log()] userauth is OK
2025-11-03T15:10:11.261 [DEBUG] [Thread-117995] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:10:11.261 [DEBUG] [Thread-117995] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:10:11.261 [DEBUG] [Thread-117995] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:10:11.261 [DEBUG] [Thread-117995] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:10:11.270 [INFO] [Thread-117995] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:10:11.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:10:14.665 [DEBUG] [Thread-117995] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:10:14.666 [DEBUG] [Thread-117995] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:10:14.666 [DEBUG] [Thread-117995] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:10:14.707 [DEBUG] [Thread-117995] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:10:14.707 [DEBUG] [Thread-117995] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:10:14.710 [DEBUG] [Thread-117995] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:10:14.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:10:14.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:10:14.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:10:14.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:10:14.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:10:14.810 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:10:14.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:10:14.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:10:14.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:10:14.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.548367 -999.00  +27.10  17.58      8   -9.90 1 1 1 1 1   888    0 34.57 -55.73 ----- 19.8 17.6 350.6 32.2 31.3 -31.8 30.8 -31.3 31.8 -29.7 32.5 -31.0
2025-11-03T15:10:14.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:10:14.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:10:14.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.548367
2025-11-03T15:10:14.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:10:14.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:10:14.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:10:14.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:10:14.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:10:14.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:09:36', tmtdew=46.61, humidity=3.74, cloud=0.0, wind=28.99, temperature=26.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:09:38.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:10:14.814 [DEBUG] [Thread-117995] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:10:14.909 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:10:14.921 [DEBUG] [Thread-117998] [transport.py] [_log()] starting thread (client mode): 0xeda0ca0
2025-11-03T15:10:14.921 [DEBUG] [Thread-117998] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:10:14.936 [DEBUG] [Thread-117998] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:10:14.936 [INFO] [Thread-117998] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:10:14.944 [DEBUG] [Thread-117998] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:10:14.944 [DEBUG] [Thread-117998] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:10:14.944 [DEBUG] [Thread-117998] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:10:14.944 [DEBUG] [Thread-117998] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:10:14.944 [DEBUG] [Thread-117998] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:10:14.944 [DEBUG] [Thread-117998] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:10:14.944 [DEBUG] [Thread-117998] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:10:14.944 [DEBUG] [Thread-117998] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:10:14.944 [DEBUG] [Thread-117998] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:10:14.944 [DEBUG] [Thread-117998] [transport.py] [_log()] client lang: <none>
2025-11-03T15:10:14.944 [DEBUG] [Thread-117998] [transport.py] [_log()] server lang: <none>
2025-11-03T15:10:14.944 [DEBUG] [Thread-117998] [transport.py] [_log()] kex follows: False
2025-11-03T15:10:14.944 [DEBUG] [Thread-117998] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:10:14.944 [DEBUG] [Thread-117998] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:10:14.944 [DEBUG] [Thread-117998] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:10:14.944 [DEBUG] [Thread-117998] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:10:14.944 [DEBUG] [Thread-117998] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:10:14.944 [DEBUG] [Thread-117998] [transport.py] [_log()] Compression: none
2025-11-03T15:10:14.944 [DEBUG] [Thread-117998] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:10:15.001 [DEBUG] [Thread-117998] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:10:15.001 [DEBUG] [Thread-117998] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:10:15.001 [DEBUG] [Thread-117998] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:10:15.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:10:15.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:10:15.058 [DEBUG] [Thread-117998] [transport.py] [_log()] userauth is OK
2025-11-03T15:10:15.058 [DEBUG] [Thread-117998] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:10:15.058 [DEBUG] [Thread-117998] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:10:15.058 [DEBUG] [Thread-117998] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:10:15.058 [DEBUG] [Thread-117998] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:10:15.071 [INFO] [Thread-117998] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:10:15.072 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:10:15.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:10:15.295 [DEBUG] [Thread-118000 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:10:15.903 [DEBUG] [Thread-117998] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:10:15.903 [DEBUG] [Thread-117998] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:10:15.951 [DEBUG] [Thread-117998] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:10:15.951 [DEBUG] [Thread-117998] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:10:15.960 [DEBUG] [Thread-117998] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:10:15.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:10:15.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:10:15.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:10:15.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:10:15.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:10:15.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:10:16.002 [DEBUG] [Thread-117998] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:10:23.471 [DEBUG] [Thread-118001 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:10:38.514 [DEBUG] [Thread-118002 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:10:46.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:10:46.014 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:10:46.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:10:46.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 10, 41), 46.99, 3.32, 0.0, 20.61, 26.9, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:10:46.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:10:41
2025-11-03T15:10:46.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:10:47.036 [DEBUG] [Thread-118003] [transport.py] [_log()] starting thread (client mode): 0x1179bee0
2025-11-03T15:10:47.036 [DEBUG] [Thread-118003] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:10:47.056 [DEBUG] [Thread-118003] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:10:47.056 [INFO] [Thread-118003] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:10:47.059 [DEBUG] [Thread-118003] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:10:47.059 [DEBUG] [Thread-118003] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:10:47.059 [DEBUG] [Thread-118003] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:10:47.059 [DEBUG] [Thread-118003] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:10:47.059 [DEBUG] [Thread-118003] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:10:47.059 [DEBUG] [Thread-118003] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:10:47.059 [DEBUG] [Thread-118003] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:10:47.059 [DEBUG] [Thread-118003] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:10:47.059 [DEBUG] [Thread-118003] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:10:47.059 [DEBUG] [Thread-118003] [transport.py] [_log()] client lang: <none>
2025-11-03T15:10:47.059 [DEBUG] [Thread-118003] [transport.py] [_log()] server lang: <none>
2025-11-03T15:10:47.059 [DEBUG] [Thread-118003] [transport.py] [_log()] kex follows: False
2025-11-03T15:10:47.059 [DEBUG] [Thread-118003] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:10:47.059 [DEBUG] [Thread-118003] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:10:47.060 [DEBUG] [Thread-118003] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:10:47.060 [DEBUG] [Thread-118003] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:10:47.060 [DEBUG] [Thread-118003] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:10:47.060 [DEBUG] [Thread-118003] [transport.py] [_log()] Compression: none
2025-11-03T15:10:47.060 [DEBUG] [Thread-118003] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:10:47.078 [DEBUG] [Thread-118003] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:10:47.078 [DEBUG] [Thread-118003] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:10:47.079 [DEBUG] [Thread-118003] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:10:47.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:10:47.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:10:47.081 [DEBUG] [Thread-118003] [transport.py] [_log()] userauth is OK
2025-11-03T15:10:47.081 [DEBUG] [Thread-118003] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:10:47.082 [DEBUG] [Thread-118003] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:10:47.082 [DEBUG] [Thread-118003] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:10:47.082 [DEBUG] [Thread-118003] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:10:47.107 [INFO] [Thread-118003] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:10:47.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:10:47.734 [DEBUG] [Thread-118003] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:10:47.734 [DEBUG] [Thread-118003] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:10:47.735 [DEBUG] [Thread-118003] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:10:47.775 [DEBUG] [Thread-118003] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:10:47.775 [DEBUG] [Thread-118003] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:10:47.778 [DEBUG] [Thread-118003] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:10:47.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:10:47.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:10:47.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:10:47.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:10:47.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:10:47.801 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:10:47.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:10:47.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:10:47.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:10:47.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.548714 -999.00  +27.00  19.97      7  -10.30 1 1 1 1 1   888    0 35.41 -52.93 ----- 22.1 20.0 0.8 33.9 31.1 -33.2 30.6 -32.3 31.8 -30.1 32.4 -31.4
2025-11-03T15:10:47.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:10:47.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:10:47.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.548714
2025-11-03T15:10:47.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:10:47.810 [DEBUG] [Thread-118003] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:10:47.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:10:47.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:10:47.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:10:47.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:10:47.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:10:41', tmtdew=46.99, humidity=3.32, cloud=0.0, wind=20.61, temperature=26.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:10:08.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:10:47.896 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:10:47.908 [DEBUG] [Thread-118006] [transport.py] [_log()] starting thread (client mode): 0x117bea70
2025-11-03T15:10:47.908 [DEBUG] [Thread-118006] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:10:47.923 [DEBUG] [Thread-118006] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:10:47.923 [INFO] [Thread-118006] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:10:47.931 [DEBUG] [Thread-118006] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:10:47.932 [DEBUG] [Thread-118006] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:10:47.932 [DEBUG] [Thread-118006] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:10:47.932 [DEBUG] [Thread-118006] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:10:47.932 [DEBUG] [Thread-118006] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:10:47.932 [DEBUG] [Thread-118006] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:10:47.932 [DEBUG] [Thread-118006] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:10:47.932 [DEBUG] [Thread-118006] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:10:47.932 [DEBUG] [Thread-118006] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:10:47.932 [DEBUG] [Thread-118006] [transport.py] [_log()] client lang: <none>
2025-11-03T15:10:47.933 [DEBUG] [Thread-118006] [transport.py] [_log()] server lang: <none>
2025-11-03T15:10:47.933 [DEBUG] [Thread-118006] [transport.py] [_log()] kex follows: False
2025-11-03T15:10:47.933 [DEBUG] [Thread-118006] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:10:47.933 [DEBUG] [Thread-118006] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:10:47.933 [DEBUG] [Thread-118006] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:10:47.933 [DEBUG] [Thread-118006] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:10:47.933 [DEBUG] [Thread-118006] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:10:47.933 [DEBUG] [Thread-118006] [transport.py] [_log()] Compression: none
2025-11-03T15:10:47.933 [DEBUG] [Thread-118006] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:10:48.000 [DEBUG] [Thread-118006] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:10:48.001 [DEBUG] [Thread-118006] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:10:48.002 [DEBUG] [Thread-118006] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:10:48.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:10:48.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:10:48.060 [DEBUG] [Thread-118006] [transport.py] [_log()] userauth is OK
2025-11-03T15:10:48.060 [DEBUG] [Thread-118006] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:10:48.061 [DEBUG] [Thread-118006] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:10:48.061 [DEBUG] [Thread-118006] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:10:48.061 [DEBUG] [Thread-118006] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:10:48.079 [INFO] [Thread-118006] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:10:48.080 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:10:48.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:10:48.928 [DEBUG] [Thread-118006] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:10:48.929 [DEBUG] [Thread-118006] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:10:48.977 [DEBUG] [Thread-118006] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:10:48.977 [DEBUG] [Thread-118006] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:10:48.986 [DEBUG] [Thread-118006] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:10:48.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:10:48.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:10:49.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:10:49.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:10:49.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:10:49.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:10:49.027 [DEBUG] [Thread-118006] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:10:53.549 [DEBUG] [Thread-118008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:11:03.647 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:11:03.648 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:11:08.608 [DEBUG] [Thread-118009 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:11:15.357 [DEBUG] [Thread-118010 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:11:19.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:11:19.049 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:11:19.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:11:19.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 11, 14), 46.93, 3.35, 0.0, 21.74, 27.07, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:11:19.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:11:14
2025-11-03T15:11:19.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:11:20.092 [DEBUG] [Thread-118011] [transport.py] [_log()] starting thread (client mode): 0x117837f0
2025-11-03T15:11:20.092 [DEBUG] [Thread-118011] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:11:20.104 [DEBUG] [Thread-118011] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:11:20.104 [INFO] [Thread-118011] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:11:20.114 [DEBUG] [Thread-118011] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:11:20.114 [DEBUG] [Thread-118011] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:11:20.114 [DEBUG] [Thread-118011] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:11:20.114 [DEBUG] [Thread-118011] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:11:20.114 [DEBUG] [Thread-118011] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:11:20.114 [DEBUG] [Thread-118011] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:11:20.114 [DEBUG] [Thread-118011] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:11:20.114 [DEBUG] [Thread-118011] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:11:20.114 [DEBUG] [Thread-118011] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:11:20.115 [DEBUG] [Thread-118011] [transport.py] [_log()] client lang: <none>
2025-11-03T15:11:20.115 [DEBUG] [Thread-118011] [transport.py] [_log()] server lang: <none>
2025-11-03T15:11:20.115 [DEBUG] [Thread-118011] [transport.py] [_log()] kex follows: False
2025-11-03T15:11:20.115 [DEBUG] [Thread-118011] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:11:20.115 [DEBUG] [Thread-118011] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:11:20.115 [DEBUG] [Thread-118011] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:11:20.115 [DEBUG] [Thread-118011] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:11:20.115 [DEBUG] [Thread-118011] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:11:20.115 [DEBUG] [Thread-118011] [transport.py] [_log()] Compression: none
2025-11-03T15:11:20.115 [DEBUG] [Thread-118011] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:11:20.126 [DEBUG] [Thread-118011] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:11:20.127 [DEBUG] [Thread-118011] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:11:20.127 [DEBUG] [Thread-118011] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:11:20.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:11:20.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:11:20.130 [DEBUG] [Thread-118011] [transport.py] [_log()] userauth is OK
2025-11-03T15:11:20.130 [DEBUG] [Thread-118011] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:11:20.130 [DEBUG] [Thread-118011] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:11:20.130 [DEBUG] [Thread-118011] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:11:20.130 [DEBUG] [Thread-118011] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:11:20.154 [INFO] [Thread-118011] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:11:20.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:11:20.763 [DEBUG] [Thread-118011] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:11:20.763 [DEBUG] [Thread-118011] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:11:20.763 [DEBUG] [Thread-118011] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:11:20.805 [DEBUG] [Thread-118011] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:11:20.805 [DEBUG] [Thread-118011] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:11:20.807 [DEBUG] [Thread-118011] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:11:20.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:11:20.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:11:20.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:11:20.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:11:20.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:11:20.835 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:11:20.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:11:20.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:11:20.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:11:20.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.549061 -999.00  +26.70  28.21      8   -9.90 1 1 1 1 1   888    0 35.38 -44.29 ----- 28.7 28.2 9.4 39.0 31.0 -32.7 30.5 -31.4 31.6 -31.0 32.0 -37.2
2025-11-03T15:11:20.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:11:20.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:11:20.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.549061
2025-11-03T15:11:20.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:11:20.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:11:20.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:11:20.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:11:20.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:11:20.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:11:14', tmtdew=46.93, humidity=3.35, cloud=0.0, wind=21.74, temperature=27.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:10:38.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:11:20.836 [DEBUG] [Thread-118011] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:11:20.907 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:11:20.919 [DEBUG] [Thread-118014] [transport.py] [_log()] starting thread (client mode): 0x11798850
2025-11-03T15:11:20.919 [DEBUG] [Thread-118014] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:11:20.934 [DEBUG] [Thread-118014] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:11:20.934 [INFO] [Thread-118014] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:11:20.942 [DEBUG] [Thread-118014] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:11:20.942 [DEBUG] [Thread-118014] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:11:20.942 [DEBUG] [Thread-118014] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:11:20.942 [DEBUG] [Thread-118014] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:11:20.942 [DEBUG] [Thread-118014] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:11:20.942 [DEBUG] [Thread-118014] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:11:20.942 [DEBUG] [Thread-118014] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:11:20.942 [DEBUG] [Thread-118014] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:11:20.942 [DEBUG] [Thread-118014] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:11:20.942 [DEBUG] [Thread-118014] [transport.py] [_log()] client lang: <none>
2025-11-03T15:11:20.942 [DEBUG] [Thread-118014] [transport.py] [_log()] server lang: <none>
2025-11-03T15:11:20.942 [DEBUG] [Thread-118014] [transport.py] [_log()] kex follows: False
2025-11-03T15:11:20.942 [DEBUG] [Thread-118014] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:11:20.942 [DEBUG] [Thread-118014] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:11:20.942 [DEBUG] [Thread-118014] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:11:20.942 [DEBUG] [Thread-118014] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:11:20.942 [DEBUG] [Thread-118014] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:11:20.942 [DEBUG] [Thread-118014] [transport.py] [_log()] Compression: none
2025-11-03T15:11:20.942 [DEBUG] [Thread-118014] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:11:21.003 [DEBUG] [Thread-118014] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:11:21.004 [DEBUG] [Thread-118014] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:11:21.004 [DEBUG] [Thread-118014] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:11:21.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:11:21.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:11:21.061 [DEBUG] [Thread-118014] [transport.py] [_log()] userauth is OK
2025-11-03T15:11:21.061 [DEBUG] [Thread-118014] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:11:21.061 [DEBUG] [Thread-118014] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:11:21.061 [DEBUG] [Thread-118014] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:11:21.061 [DEBUG] [Thread-118014] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:11:21.075 [INFO] [Thread-118014] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:11:21.075 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:11:21.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:11:21.974 [DEBUG] [Thread-118014] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:11:21.974 [DEBUG] [Thread-118014] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:11:22.022 [DEBUG] [Thread-118014] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:11:22.022 [DEBUG] [Thread-118014] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:11:22.031 [DEBUG] [Thread-118014] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:11:22.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:11:22.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:11:22.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:11:22.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:11:22.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:11:22.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:11:22.066 [DEBUG] [Thread-118014] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:11:23.645 [DEBUG] [Thread-118016 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:11:38.698 [DEBUG] [Thread-118017 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:11:52.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:11:52.089 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:11:52.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:11:52.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 11, 46), 47.0, 3.32, 0.0, 32.4, 26.79, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:11:52.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:11:46
2025-11-03T15:11:52.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:11:53.113 [DEBUG] [Thread-118018] [transport.py] [_log()] starting thread (client mode): 0x1174f880
2025-11-03T15:11:53.114 [DEBUG] [Thread-118018] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:11:53.134 [DEBUG] [Thread-118018] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:11:53.134 [INFO] [Thread-118018] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:11:53.137 [DEBUG] [Thread-118018] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:11:53.137 [DEBUG] [Thread-118018] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:11:53.137 [DEBUG] [Thread-118018] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:11:53.137 [DEBUG] [Thread-118018] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:11:53.137 [DEBUG] [Thread-118018] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:11:53.137 [DEBUG] [Thread-118018] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:11:53.137 [DEBUG] [Thread-118018] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:11:53.137 [DEBUG] [Thread-118018] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:11:53.138 [DEBUG] [Thread-118018] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:11:53.138 [DEBUG] [Thread-118018] [transport.py] [_log()] client lang: <none>
2025-11-03T15:11:53.138 [DEBUG] [Thread-118018] [transport.py] [_log()] server lang: <none>
2025-11-03T15:11:53.138 [DEBUG] [Thread-118018] [transport.py] [_log()] kex follows: False
2025-11-03T15:11:53.138 [DEBUG] [Thread-118018] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:11:53.138 [DEBUG] [Thread-118018] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:11:53.138 [DEBUG] [Thread-118018] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:11:53.138 [DEBUG] [Thread-118018] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:11:53.138 [DEBUG] [Thread-118018] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:11:53.138 [DEBUG] [Thread-118018] [transport.py] [_log()] Compression: none
2025-11-03T15:11:53.138 [DEBUG] [Thread-118018] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:11:53.156 [DEBUG] [Thread-118018] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:11:53.156 [DEBUG] [Thread-118018] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:11:53.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:11:53.157 [DEBUG] [Thread-118018] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:11:53.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:11:53.160 [DEBUG] [Thread-118018] [transport.py] [_log()] userauth is OK
2025-11-03T15:11:53.160 [DEBUG] [Thread-118018] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:11:53.160 [DEBUG] [Thread-118018] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:11:53.160 [DEBUG] [Thread-118018] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:11:53.160 [DEBUG] [Thread-118018] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:11:53.185 [INFO] [Thread-118018] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:11:53.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:11:53.729 [DEBUG] [Thread-118020 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:11:53.809 [DEBUG] [Thread-118018] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:11:53.810 [DEBUG] [Thread-118018] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:11:53.810 [DEBUG] [Thread-118018] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:11:53.851 [DEBUG] [Thread-118018] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:11:53.851 [DEBUG] [Thread-118018] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:11:53.855 [DEBUG] [Thread-118018] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:11:53.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:11:53.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:11:53.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:11:53.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:11:53.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:11:53.879 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:11:53.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:11:53.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:11:53.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:11:53.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.549408 -999.00  +26.70  17.78      8   -9.80 1 1 1 1 1   888    0 36.61 -43.67 ----- 25.5 17.8 16.5 39.6 31.0 -31.6 30.6 -31.3 31.6 -30.6 32.0 -33.2
2025-11-03T15:11:53.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:11:53.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:11:53.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.549408
2025-11-03T15:11:53.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:11:53.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:11:53.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:11:53.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:11:53.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:11:53.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:11:46', tmtdew=47.0, humidity=3.32, cloud=0.0, wind=32.4, temperature=26.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:11:08.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:11:53.882 [DEBUG] [Thread-118018] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:11:53.965 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:11:53.977 [DEBUG] [Thread-118022] [transport.py] [_log()] starting thread (client mode): 0x117bffa0
2025-11-03T15:11:53.977 [DEBUG] [Thread-118022] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:11:53.994 [DEBUG] [Thread-118022] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:11:53.994 [INFO] [Thread-118022] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:11:54.002 [DEBUG] [Thread-118022] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:11:54.002 [DEBUG] [Thread-118022] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:11:54.002 [DEBUG] [Thread-118022] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:11:54.002 [DEBUG] [Thread-118022] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:11:54.002 [DEBUG] [Thread-118022] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:11:54.002 [DEBUG] [Thread-118022] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:11:54.002 [DEBUG] [Thread-118022] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:11:54.002 [DEBUG] [Thread-118022] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:11:54.003 [DEBUG] [Thread-118022] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:11:54.003 [DEBUG] [Thread-118022] [transport.py] [_log()] client lang: <none>
2025-11-03T15:11:54.003 [DEBUG] [Thread-118022] [transport.py] [_log()] server lang: <none>
2025-11-03T15:11:54.003 [DEBUG] [Thread-118022] [transport.py] [_log()] kex follows: False
2025-11-03T15:11:54.003 [DEBUG] [Thread-118022] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:11:54.003 [DEBUG] [Thread-118022] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:11:54.003 [DEBUG] [Thread-118022] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:11:54.003 [DEBUG] [Thread-118022] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:11:54.012 [DEBUG] [Thread-118022] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:11:54.012 [DEBUG] [Thread-118022] [transport.py] [_log()] Compression: none
2025-11-03T15:11:54.012 [DEBUG] [Thread-118022] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:11:54.060 [DEBUG] [Thread-118022] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:11:54.060 [DEBUG] [Thread-118022] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:11:54.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:11:54.060 [DEBUG] [Thread-118022] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:11:54.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:11:54.117 [DEBUG] [Thread-118022] [transport.py] [_log()] userauth is OK
2025-11-03T15:11:54.117 [DEBUG] [Thread-118022] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:11:54.117 [DEBUG] [Thread-118022] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:11:54.117 [DEBUG] [Thread-118022] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:11:54.117 [DEBUG] [Thread-118022] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:11:54.131 [INFO] [Thread-118022] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:11:54.132 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:11:54.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:11:54.970 [DEBUG] [Thread-118022] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:11:54.970 [DEBUG] [Thread-118022] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:11:55.017 [DEBUG] [Thread-118022] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:11:55.017 [DEBUG] [Thread-118022] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:11:55.026 [DEBUG] [Thread-118022] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:11:55.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:11:55.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:11:55.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:11:55.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:11:55.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:11:55.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:11:55.059 [DEBUG] [Thread-118022] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:12:03.788 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:12:03.789 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:12:08.765 [DEBUG] [Thread-118024 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:12:15.518 [DEBUG] [Thread-118025 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:12:23.817 [DEBUG] [Thread-118026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:12:25.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:12:25.082 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:12:25.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:12:25.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 12, 18), 46.71, 3.4, 0.0, 32.57, 26.69, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:12:25.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:12:18
2025-11-03T15:12:25.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:12:26.068 [DEBUG] [Thread-118027] [transport.py] [_log()] starting thread (client mode): 0x1174ee00
2025-11-03T15:12:26.068 [DEBUG] [Thread-118027] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:12:26.083 [DEBUG] [Thread-118027] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:12:26.083 [INFO] [Thread-118027] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:12:26.086 [DEBUG] [Thread-118027] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:12:26.087 [DEBUG] [Thread-118027] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:12:26.087 [DEBUG] [Thread-118027] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:12:26.087 [DEBUG] [Thread-118027] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:12:26.087 [DEBUG] [Thread-118027] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:12:26.087 [DEBUG] [Thread-118027] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:12:26.087 [DEBUG] [Thread-118027] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:12:26.087 [DEBUG] [Thread-118027] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:12:26.087 [DEBUG] [Thread-118027] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:12:26.087 [DEBUG] [Thread-118027] [transport.py] [_log()] client lang: <none>
2025-11-03T15:12:26.087 [DEBUG] [Thread-118027] [transport.py] [_log()] server lang: <none>
2025-11-03T15:12:26.087 [DEBUG] [Thread-118027] [transport.py] [_log()] kex follows: False
2025-11-03T15:12:26.087 [DEBUG] [Thread-118027] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:12:26.087 [DEBUG] [Thread-118027] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:12:26.087 [DEBUG] [Thread-118027] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:12:26.087 [DEBUG] [Thread-118027] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:12:26.087 [DEBUG] [Thread-118027] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:12:26.087 [DEBUG] [Thread-118027] [transport.py] [_log()] Compression: none
2025-11-03T15:12:26.087 [DEBUG] [Thread-118027] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:12:26.095 [DEBUG] [Thread-118027] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:12:26.096 [DEBUG] [Thread-118027] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:12:26.096 [DEBUG] [Thread-118027] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:12:26.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:12:26.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:12:26.097 [DEBUG] [Thread-118027] [transport.py] [_log()] userauth is OK
2025-11-03T15:12:26.098 [DEBUG] [Thread-118027] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:12:26.098 [DEBUG] [Thread-118027] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:12:26.098 [DEBUG] [Thread-118027] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:12:26.098 [DEBUG] [Thread-118027] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:12:26.114 [INFO] [Thread-118027] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:12:26.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:12:26.838 [DEBUG] [Thread-118027] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:12:26.838 [DEBUG] [Thread-118027] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:12:26.838 [DEBUG] [Thread-118027] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:12:26.880 [DEBUG] [Thread-118027] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:12:26.880 [DEBUG] [Thread-118027] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:12:26.882 [DEBUG] [Thread-118027] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:12:26.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:12:26.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:12:26.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:12:26.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:12:26.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:12:26.902 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:12:26.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:12:26.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:12:26.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:12:26.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.549756 -999.00  +26.50  18.58      8   -9.90 1 1 1 1 1   888    0 35.86 -41.18 ----- 18.3 18.6 12.6 28.9 31.0 -32.4 30.5 -31.7 31.7 -31.4 32.1 -30.3
2025-11-03T15:12:26.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:12:26.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:12:26.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.549756
2025-11-03T15:12:26.910 [DEBUG] [Thread-118027] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:12:26.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:12:26.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:12:26.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:12:26.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:12:26.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:12:26.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:12:18', tmtdew=46.71, humidity=3.4, cloud=0.0, wind=32.57, temperature=26.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:11:38.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:12:26.983 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:12:26.995 [DEBUG] [Thread-118030] [transport.py] [_log()] starting thread (client mode): 0x1174ef50
2025-11-03T15:12:26.995 [DEBUG] [Thread-118030] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:12:27.010 [DEBUG] [Thread-118030] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:12:27.010 [INFO] [Thread-118030] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:12:27.017 [DEBUG] [Thread-118030] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:12:27.018 [DEBUG] [Thread-118030] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:12:27.018 [DEBUG] [Thread-118030] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:12:27.018 [DEBUG] [Thread-118030] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:12:27.018 [DEBUG] [Thread-118030] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:12:27.018 [DEBUG] [Thread-118030] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:12:27.018 [DEBUG] [Thread-118030] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:12:27.018 [DEBUG] [Thread-118030] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:12:27.018 [DEBUG] [Thread-118030] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:12:27.018 [DEBUG] [Thread-118030] [transport.py] [_log()] client lang: <none>
2025-11-03T15:12:27.018 [DEBUG] [Thread-118030] [transport.py] [_log()] server lang: <none>
2025-11-03T15:12:27.018 [DEBUG] [Thread-118030] [transport.py] [_log()] kex follows: False
2025-11-03T15:12:27.018 [DEBUG] [Thread-118030] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:12:27.018 [DEBUG] [Thread-118030] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:12:27.018 [DEBUG] [Thread-118030] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:12:27.018 [DEBUG] [Thread-118030] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:12:27.018 [DEBUG] [Thread-118030] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:12:27.018 [DEBUG] [Thread-118030] [transport.py] [_log()] Compression: none
2025-11-03T15:12:27.018 [DEBUG] [Thread-118030] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:12:27.076 [DEBUG] [Thread-118030] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:12:27.076 [DEBUG] [Thread-118030] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:12:27.076 [DEBUG] [Thread-118030] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:12:27.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:12:27.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:12:27.133 [DEBUG] [Thread-118030] [transport.py] [_log()] userauth is OK
2025-11-03T15:12:27.133 [DEBUG] [Thread-118030] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:12:27.133 [DEBUG] [Thread-118030] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:12:27.133 [DEBUG] [Thread-118030] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:12:27.133 [DEBUG] [Thread-118030] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:12:27.148 [INFO] [Thread-118030] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:12:27.148 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:12:27.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:12:28.048 [DEBUG] [Thread-118030] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:12:28.057 [DEBUG] [Thread-118030] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:12:28.096 [DEBUG] [Thread-118030] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:12:28.096 [DEBUG] [Thread-118030] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:12:28.106 [DEBUG] [Thread-118030] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:12:28.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:12:28.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:12:28.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:12:28.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:12:28.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:12:28.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:12:28.140 [DEBUG] [Thread-118030] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:12:38.851 [DEBUG] [Thread-118032 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:12:53.908 [DEBUG] [Thread-118033 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:12:58.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:12:58.161 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:12:58.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:12:58.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 12, 51), 46.2, 3.84, 0.0, 24.7, 26.45, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:12:58.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:12:51
2025-11-03T15:12:58.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:12:59.127 [DEBUG] [Thread-118034] [transport.py] [_log()] starting thread (client mode): 0x1174dde0
2025-11-03T15:12:59.127 [DEBUG] [Thread-118034] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:12:59.147 [DEBUG] [Thread-118034] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:12:59.147 [INFO] [Thread-118034] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:12:59.148 [DEBUG] [Thread-118034] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:12:59.148 [DEBUG] [Thread-118034] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:12:59.148 [DEBUG] [Thread-118034] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:12:59.148 [DEBUG] [Thread-118034] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:12:59.148 [DEBUG] [Thread-118034] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:12:59.148 [DEBUG] [Thread-118034] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:12:59.148 [DEBUG] [Thread-118034] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:12:59.148 [DEBUG] [Thread-118034] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:12:59.148 [DEBUG] [Thread-118034] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:12:59.148 [DEBUG] [Thread-118034] [transport.py] [_log()] client lang: <none>
2025-11-03T15:12:59.148 [DEBUG] [Thread-118034] [transport.py] [_log()] server lang: <none>
2025-11-03T15:12:59.148 [DEBUG] [Thread-118034] [transport.py] [_log()] kex follows: False
2025-11-03T15:12:59.148 [DEBUG] [Thread-118034] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:12:59.149 [DEBUG] [Thread-118034] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:12:59.149 [DEBUG] [Thread-118034] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:12:59.149 [DEBUG] [Thread-118034] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:12:59.149 [DEBUG] [Thread-118034] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:12:59.149 [DEBUG] [Thread-118034] [transport.py] [_log()] Compression: none
2025-11-03T15:12:59.149 [DEBUG] [Thread-118034] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:12:59.156 [DEBUG] [Thread-118034] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:12:59.156 [DEBUG] [Thread-118034] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:12:59.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:12:59.156 [DEBUG] [Thread-118034] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:12:59.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:12:59.157 [DEBUG] [Thread-118034] [transport.py] [_log()] userauth is OK
2025-11-03T15:12:59.157 [DEBUG] [Thread-118034] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:12:59.157 [DEBUG] [Thread-118034] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:12:59.157 [DEBUG] [Thread-118034] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:12:59.157 [DEBUG] [Thread-118034] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:12:59.167 [INFO] [Thread-118034] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:12:59.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:12:59.814 [DEBUG] [Thread-118034] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:12:59.814 [DEBUG] [Thread-118034] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:12:59.814 [DEBUG] [Thread-118034] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:12:59.856 [DEBUG] [Thread-118034] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:12:59.856 [DEBUG] [Thread-118034] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:12:59.858 [DEBUG] [Thread-118034] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:12:59.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:12:59.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:12:59.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:12:59.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:12:59.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:12:59.874 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:12:59.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:12:59.874 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:12:59.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:12:59.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.550103 -999.00  +26.20  16.27      8   -9.90 1 1 1 1 1   888    0 35.81 -41.88 ----- 22.7 16.3 340.2 24.9 30.9 -32.1 30.5 -31.6 31.6 -30.8 31.9 -31.8
2025-11-03T15:12:59.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:12:59.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:12:59.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.550103
2025-11-03T15:12:59.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:12:59.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:12:59.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:12:59.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:12:59.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:12:59.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:12:51', tmtdew=46.2, humidity=3.84, cloud=0.0, wind=24.7, temperature=26.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:12:08.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:12:59.875 [DEBUG] [Thread-118034] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:12:59.949 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:12:59.960 [DEBUG] [Thread-118037] [transport.py] [_log()] starting thread (client mode): 0x11799300
2025-11-03T15:12:59.960 [DEBUG] [Thread-118037] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:12:59.976 [DEBUG] [Thread-118037] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:12:59.976 [INFO] [Thread-118037] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:12:59.984 [DEBUG] [Thread-118037] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:12:59.984 [DEBUG] [Thread-118037] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:12:59.984 [DEBUG] [Thread-118037] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:12:59.984 [DEBUG] [Thread-118037] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:12:59.984 [DEBUG] [Thread-118037] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:12:59.984 [DEBUG] [Thread-118037] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:12:59.984 [DEBUG] [Thread-118037] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:12:59.984 [DEBUG] [Thread-118037] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:12:59.984 [DEBUG] [Thread-118037] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:12:59.984 [DEBUG] [Thread-118037] [transport.py] [_log()] client lang: <none>
2025-11-03T15:12:59.984 [DEBUG] [Thread-118037] [transport.py] [_log()] server lang: <none>
2025-11-03T15:12:59.984 [DEBUG] [Thread-118037] [transport.py] [_log()] kex follows: False
2025-11-03T15:12:59.984 [DEBUG] [Thread-118037] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:12:59.984 [DEBUG] [Thread-118037] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:12:59.984 [DEBUG] [Thread-118037] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:12:59.984 [DEBUG] [Thread-118037] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:12:59.984 [DEBUG] [Thread-118037] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:12:59.984 [DEBUG] [Thread-118037] [transport.py] [_log()] Compression: none
2025-11-03T15:12:59.984 [DEBUG] [Thread-118037] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:13:00.039 [DEBUG] [Thread-118037] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:13:00.039 [DEBUG] [Thread-118037] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:13:00.039 [DEBUG] [Thread-118037] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:13:00.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:13:00.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:13:00.096 [DEBUG] [Thread-118037] [transport.py] [_log()] userauth is OK
2025-11-03T15:13:00.097 [DEBUG] [Thread-118037] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:13:00.097 [DEBUG] [Thread-118037] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:13:00.097 [DEBUG] [Thread-118037] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:13:00.097 [DEBUG] [Thread-118037] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:13:00.110 [INFO] [Thread-118037] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:13:00.111 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:13:00.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:13:00.974 [DEBUG] [Thread-118037] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:13:00.974 [DEBUG] [Thread-118037] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:13:01.022 [DEBUG] [Thread-118037] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:13:01.023 [DEBUG] [Thread-118037] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:13:01.031 [DEBUG] [Thread-118037] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:13:01.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:13:01.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:13:01.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:13:01.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:13:01.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:13:01.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:13:01.063 [DEBUG] [Thread-118037] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:13:03.930 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:13:03.930 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:13:08.936 [DEBUG] [Thread-118039 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:13:15.721 [DEBUG] [Thread-118040 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:13:23.990 [DEBUG] [Thread-118041 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:13:31.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:13:31.078 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:13:31.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:13:31.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 13, 23), 45.98, 3.9, 0.0, 25.35, 26.4, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:13:31.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:13:23
2025-11-03T15:13:31.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:13:32.067 [DEBUG] [Thread-118042] [transport.py] [_log()] starting thread (client mode): 0x1174cc70
2025-11-03T15:13:32.067 [DEBUG] [Thread-118042] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:13:32.086 [DEBUG] [Thread-118042] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:13:32.086 [INFO] [Thread-118042] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:13:32.088 [DEBUG] [Thread-118042] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:13:32.088 [DEBUG] [Thread-118042] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:13:32.088 [DEBUG] [Thread-118042] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:13:32.088 [DEBUG] [Thread-118042] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:13:32.088 [DEBUG] [Thread-118042] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:13:32.088 [DEBUG] [Thread-118042] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:13:32.088 [DEBUG] [Thread-118042] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:13:32.088 [DEBUG] [Thread-118042] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:13:32.088 [DEBUG] [Thread-118042] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:13:32.088 [DEBUG] [Thread-118042] [transport.py] [_log()] client lang: <none>
2025-11-03T15:13:32.088 [DEBUG] [Thread-118042] [transport.py] [_log()] server lang: <none>
2025-11-03T15:13:32.088 [DEBUG] [Thread-118042] [transport.py] [_log()] kex follows: False
2025-11-03T15:13:32.088 [DEBUG] [Thread-118042] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:13:32.088 [DEBUG] [Thread-118042] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:13:32.088 [DEBUG] [Thread-118042] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:13:32.088 [DEBUG] [Thread-118042] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:13:32.088 [DEBUG] [Thread-118042] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:13:32.088 [DEBUG] [Thread-118042] [transport.py] [_log()] Compression: none
2025-11-03T15:13:32.088 [DEBUG] [Thread-118042] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:13:32.101 [DEBUG] [Thread-118042] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:13:32.102 [DEBUG] [Thread-118042] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:13:32.102 [DEBUG] [Thread-118042] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:13:32.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:13:32.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:13:32.104 [DEBUG] [Thread-118042] [transport.py] [_log()] userauth is OK
2025-11-03T15:13:32.104 [DEBUG] [Thread-118042] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:13:32.104 [DEBUG] [Thread-118042] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:13:32.104 [DEBUG] [Thread-118042] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:13:32.104 [DEBUG] [Thread-118042] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:13:32.123 [INFO] [Thread-118042] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:13:32.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:13:32.807 [DEBUG] [Thread-118042] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:13:32.807 [DEBUG] [Thread-118042] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:13:32.808 [DEBUG] [Thread-118042] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:13:32.848 [DEBUG] [Thread-118042] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:13:32.848 [DEBUG] [Thread-118042] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:13:32.851 [DEBUG] [Thread-118042] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:13:32.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:13:32.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:13:32.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:13:32.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:13:32.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:13:32.876 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:13:32.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:13:32.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:13:32.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:13:32.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.550450 -999.00  +26.50  17.32      8   -9.70 1 1 1 1 1   888    0 35.29 -36.04 ----- 21.0 17.3 329.4 23.9 31.0 -31.5 30.6 -31.4 31.6 -30.4 32.0 -32.4
2025-11-03T15:13:32.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:13:32.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:13:32.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.550450
2025-11-03T15:13:32.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:13:32.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:13:32.879 [DEBUG] [Thread-118042] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:13:32.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:13:32.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:13:32.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:13:32.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:13:23', tmtdew=45.98, humidity=3.9, cloud=0.0, wind=25.35, temperature=26.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:12:38.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:13:32.962 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:13:32.975 [DEBUG] [Thread-118045] [transport.py] [_log()] starting thread (client mode): 0xed2eec0
2025-11-03T15:13:32.975 [DEBUG] [Thread-118045] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:13:32.989 [DEBUG] [Thread-118045] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:13:32.990 [INFO] [Thread-118045] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:13:32.998 [DEBUG] [Thread-118045] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:13:32.998 [DEBUG] [Thread-118045] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:13:32.998 [DEBUG] [Thread-118045] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:13:32.998 [DEBUG] [Thread-118045] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:13:32.998 [DEBUG] [Thread-118045] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:13:32.998 [DEBUG] [Thread-118045] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:13:32.998 [DEBUG] [Thread-118045] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:13:32.998 [DEBUG] [Thread-118045] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:13:32.998 [DEBUG] [Thread-118045] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:13:32.999 [DEBUG] [Thread-118045] [transport.py] [_log()] client lang: <none>
2025-11-03T15:13:32.999 [DEBUG] [Thread-118045] [transport.py] [_log()] server lang: <none>
2025-11-03T15:13:32.999 [DEBUG] [Thread-118045] [transport.py] [_log()] kex follows: False
2025-11-03T15:13:32.999 [DEBUG] [Thread-118045] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:13:32.999 [DEBUG] [Thread-118045] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:13:32.999 [DEBUG] [Thread-118045] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:13:32.999 [DEBUG] [Thread-118045] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:13:32.999 [DEBUG] [Thread-118045] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:13:32.999 [DEBUG] [Thread-118045] [transport.py] [_log()] Compression: none
2025-11-03T15:13:32.999 [DEBUG] [Thread-118045] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:13:33.057 [DEBUG] [Thread-118045] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:13:33.058 [DEBUG] [Thread-118045] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:13:33.058 [DEBUG] [Thread-118045] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:13:33.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:13:33.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:13:33.113 [DEBUG] [Thread-118045] [transport.py] [_log()] userauth is OK
2025-11-03T15:13:33.113 [DEBUG] [Thread-118045] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:13:33.113 [DEBUG] [Thread-118045] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:13:33.113 [DEBUG] [Thread-118045] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:13:33.114 [DEBUG] [Thread-118045] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:13:33.132 [INFO] [Thread-118045] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:13:33.141 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:13:33.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:13:33.983 [DEBUG] [Thread-118045] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:13:33.983 [DEBUG] [Thread-118045] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:13:34.031 [DEBUG] [Thread-118045] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:13:34.031 [DEBUG] [Thread-118045] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:13:34.041 [DEBUG] [Thread-118045] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:13:34.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:13:34.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:13:34.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:13:34.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:13:34.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:13:34.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:13:34.087 [DEBUG] [Thread-118045] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:13:39.021 [DEBUG] [Thread-118047 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:13:54.061 [DEBUG] [Thread-118048 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:14:04.072 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:14:04.073 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:14:04.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:14:04.088 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:14:04.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:14:04.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 13, 55), 45.93, 3.9, 0.0, 20.77, 26.55, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:14:04.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:13:55
2025-11-03T15:14:04.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:14:05.084 [DEBUG] [Thread-118049] [transport.py] [_log()] starting thread (client mode): 0xed2f370
2025-11-03T15:14:05.084 [DEBUG] [Thread-118049] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:14:05.106 [DEBUG] [Thread-118049] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:14:05.106 [INFO] [Thread-118049] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:14:05.109 [DEBUG] [Thread-118049] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:14:05.110 [DEBUG] [Thread-118049] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:14:05.110 [DEBUG] [Thread-118049] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:14:05.110 [DEBUG] [Thread-118049] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:14:05.110 [DEBUG] [Thread-118049] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:14:05.110 [DEBUG] [Thread-118049] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:14:05.110 [DEBUG] [Thread-118049] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:14:05.110 [DEBUG] [Thread-118049] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:14:05.110 [DEBUG] [Thread-118049] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:14:05.110 [DEBUG] [Thread-118049] [transport.py] [_log()] client lang: <none>
2025-11-03T15:14:05.110 [DEBUG] [Thread-118049] [transport.py] [_log()] server lang: <none>
2025-11-03T15:14:05.110 [DEBUG] [Thread-118049] [transport.py] [_log()] kex follows: False
2025-11-03T15:14:05.111 [DEBUG] [Thread-118049] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:14:05.111 [DEBUG] [Thread-118049] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:14:05.111 [DEBUG] [Thread-118049] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:14:05.111 [DEBUG] [Thread-118049] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:14:05.111 [DEBUG] [Thread-118049] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:14:05.111 [DEBUG] [Thread-118049] [transport.py] [_log()] Compression: none
2025-11-03T15:14:05.111 [DEBUG] [Thread-118049] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:14:05.131 [DEBUG] [Thread-118049] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:14:05.132 [DEBUG] [Thread-118049] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:14:05.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:14:05.133 [DEBUG] [Thread-118049] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:14:05.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:14:05.136 [DEBUG] [Thread-118049] [transport.py] [_log()] userauth is OK
2025-11-03T15:14:05.136 [DEBUG] [Thread-118049] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:14:05.136 [DEBUG] [Thread-118049] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:14:05.136 [DEBUG] [Thread-118049] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:14:05.136 [DEBUG] [Thread-118049] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:14:05.161 [INFO] [Thread-118049] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:14:05.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:14:05.828 [DEBUG] [Thread-118049] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:14:05.828 [DEBUG] [Thread-118049] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:14:05.829 [DEBUG] [Thread-118049] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:14:05.868 [DEBUG] [Thread-118049] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:14:05.869 [DEBUG] [Thread-118049] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:14:05.872 [DEBUG] [Thread-118049] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:14:05.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:14:05.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:14:05.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:14:05.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:14:05.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:14:05.894 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:14:05.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:14:05.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:14:05.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:14:05.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.550739 -999.00  +26.80  27.77      8   -9.70 1 1 1 1 1   888    0 34.99 -34.44 ----- 27.8 27.8 342.6 31.4 31.0 -31.7 30.6 -30.9 31.7 -30.0 32.1 -32.2
2025-11-03T15:14:05.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:14:05.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:14:05.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.550739
2025-11-03T15:14:05.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:14:05.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:14:05.897 [DEBUG] [Thread-118049] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:14:05.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:14:05.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:14:05.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:14:05.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:13:55', tmtdew=45.93, humidity=3.9, cloud=0.0, wind=20.77, temperature=26.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:13:03.850', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:14:05.980 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:14:05.996 [DEBUG] [Thread-118052] [transport.py] [_log()] starting thread (client mode): 0x1179ac80
2025-11-03T15:14:05.996 [DEBUG] [Thread-118052] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:14:06.010 [DEBUG] [Thread-118052] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:14:06.011 [INFO] [Thread-118052] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:14:06.021 [DEBUG] [Thread-118052] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:14:06.021 [DEBUG] [Thread-118052] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:14:06.021 [DEBUG] [Thread-118052] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:14:06.021 [DEBUG] [Thread-118052] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:14:06.021 [DEBUG] [Thread-118052] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:14:06.021 [DEBUG] [Thread-118052] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:14:06.021 [DEBUG] [Thread-118052] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:14:06.021 [DEBUG] [Thread-118052] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:14:06.021 [DEBUG] [Thread-118052] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:14:06.021 [DEBUG] [Thread-118052] [transport.py] [_log()] client lang: <none>
2025-11-03T15:14:06.021 [DEBUG] [Thread-118052] [transport.py] [_log()] server lang: <none>
2025-11-03T15:14:06.022 [DEBUG] [Thread-118052] [transport.py] [_log()] kex follows: False
2025-11-03T15:14:06.022 [DEBUG] [Thread-118052] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:14:06.022 [DEBUG] [Thread-118052] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:14:06.022 [DEBUG] [Thread-118052] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:14:06.022 [DEBUG] [Thread-118052] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:14:06.022 [DEBUG] [Thread-118052] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:14:06.022 [DEBUG] [Thread-118052] [transport.py] [_log()] Compression: none
2025-11-03T15:14:06.022 [DEBUG] [Thread-118052] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:14:06.077 [DEBUG] [Thread-118052] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:14:06.077 [DEBUG] [Thread-118052] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:14:06.078 [DEBUG] [Thread-118052] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:14:06.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:14:06.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:14:06.136 [DEBUG] [Thread-118052] [transport.py] [_log()] userauth is OK
2025-11-03T15:14:06.137 [DEBUG] [Thread-118052] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:14:06.137 [DEBUG] [Thread-118052] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:14:06.137 [DEBUG] [Thread-118052] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:14:06.137 [DEBUG] [Thread-118052] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:14:06.156 [INFO] [Thread-118052] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:14:06.156 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:14:06.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:14:06.979 [DEBUG] [Thread-118052] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:14:06.989 [DEBUG] [Thread-118052] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:14:07.028 [DEBUG] [Thread-118052] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:14:07.028 [DEBUG] [Thread-118052] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:14:07.037 [DEBUG] [Thread-118052] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:14:07.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:14:07.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:14:07.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:14:07.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:14:07.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:14:07.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:14:07.074 [DEBUG] [Thread-118052] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:14:09.093 [DEBUG] [Thread-118054 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:14:15.794 [DEBUG] [Thread-118055 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:14:24.146 [DEBUG] [Thread-118056 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:14:37.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:14:37.097 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:14:37.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:14:37.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 14, 28), 46.08, 3.89, 0.0, 26.71, 26.85, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:14:37.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:14:28
2025-11-03T15:14:37.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:14:38.067 [DEBUG] [Thread-118057] [transport.py] [_log()] starting thread (client mode): 0xed4c280
2025-11-03T15:14:38.068 [DEBUG] [Thread-118057] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:14:38.089 [DEBUG] [Thread-118057] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:14:38.089 [INFO] [Thread-118057] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:14:38.092 [DEBUG] [Thread-118057] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:14:38.092 [DEBUG] [Thread-118057] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:14:38.092 [DEBUG] [Thread-118057] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:14:38.093 [DEBUG] [Thread-118057] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:14:38.093 [DEBUG] [Thread-118057] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:14:38.093 [DEBUG] [Thread-118057] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:14:38.093 [DEBUG] [Thread-118057] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:14:38.093 [DEBUG] [Thread-118057] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:14:38.093 [DEBUG] [Thread-118057] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:14:38.093 [DEBUG] [Thread-118057] [transport.py] [_log()] client lang: <none>
2025-11-03T15:14:38.093 [DEBUG] [Thread-118057] [transport.py] [_log()] server lang: <none>
2025-11-03T15:14:38.093 [DEBUG] [Thread-118057] [transport.py] [_log()] kex follows: False
2025-11-03T15:14:38.094 [DEBUG] [Thread-118057] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:14:38.094 [DEBUG] [Thread-118057] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:14:38.094 [DEBUG] [Thread-118057] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:14:38.094 [DEBUG] [Thread-118057] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:14:38.094 [DEBUG] [Thread-118057] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:14:38.094 [DEBUG] [Thread-118057] [transport.py] [_log()] Compression: none
2025-11-03T15:14:38.094 [DEBUG] [Thread-118057] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:14:38.109 [DEBUG] [Thread-118057] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:14:38.109 [DEBUG] [Thread-118057] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:14:38.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:14:38.110 [DEBUG] [Thread-118057] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:14:38.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:14:38.113 [DEBUG] [Thread-118057] [transport.py] [_log()] userauth is OK
2025-11-03T15:14:38.113 [DEBUG] [Thread-118057] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:14:38.113 [DEBUG] [Thread-118057] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:14:38.113 [DEBUG] [Thread-118057] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:14:38.113 [DEBUG] [Thread-118057] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:14:38.130 [INFO] [Thread-118057] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:14:38.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:14:38.886 [DEBUG] [Thread-118057] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:14:38.887 [DEBUG] [Thread-118057] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:14:38.887 [DEBUG] [Thread-118057] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:14:38.927 [DEBUG] [Thread-118057] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:14:38.928 [DEBUG] [Thread-118057] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:14:38.929 [DEBUG] [Thread-118057] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:14:38.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:14:38.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:14:38.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:14:38.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:14:38.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:14:38.939 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:14:38.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:14:38.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:14:38.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:14:38.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.551145 -999.00  +26.40  25.19      8   -9.90 1 1 1 1 1   888    0 36.20 -29.33 ----- 30.0 25.2 327.8 39.5 30.9 -32.2 30.5 -31.1 31.7 -31.1 32.1 -31.1
2025-11-03T15:14:38.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:14:38.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:14:38.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.551145
2025-11-03T15:14:38.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:14:38.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:14:38.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:14:38.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:14:38.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:14:38.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:14:28', tmtdew=46.08, humidity=3.89, cloud=0.0, wind=26.71, temperature=26.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:13:38.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:14:38.940 [DEBUG] [Thread-118057] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:14:39.013 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:14:39.042 [DEBUG] [Thread-118060] [transport.py] [_log()] starting thread (client mode): 0xedd6dd0
2025-11-03T15:14:39.042 [DEBUG] [Thread-118060] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:14:39.058 [DEBUG] [Thread-118060] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:14:39.058 [INFO] [Thread-118060] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:14:39.065 [DEBUG] [Thread-118060] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:14:39.065 [DEBUG] [Thread-118060] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:14:39.065 [DEBUG] [Thread-118060] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:14:39.065 [DEBUG] [Thread-118060] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:14:39.066 [DEBUG] [Thread-118060] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:14:39.066 [DEBUG] [Thread-118060] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:14:39.066 [DEBUG] [Thread-118060] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:14:39.066 [DEBUG] [Thread-118060] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:14:39.066 [DEBUG] [Thread-118060] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:14:39.066 [DEBUG] [Thread-118060] [transport.py] [_log()] client lang: <none>
2025-11-03T15:14:39.066 [DEBUG] [Thread-118060] [transport.py] [_log()] server lang: <none>
2025-11-03T15:14:39.066 [DEBUG] [Thread-118060] [transport.py] [_log()] kex follows: False
2025-11-03T15:14:39.066 [DEBUG] [Thread-118060] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:14:39.066 [DEBUG] [Thread-118060] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:14:39.066 [DEBUG] [Thread-118060] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:14:39.066 [DEBUG] [Thread-118060] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:14:39.066 [DEBUG] [Thread-118060] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:14:39.066 [DEBUG] [Thread-118060] [transport.py] [_log()] Compression: none
2025-11-03T15:14:39.066 [DEBUG] [Thread-118060] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:14:39.124 [DEBUG] [Thread-118060] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:14:39.124 [DEBUG] [Thread-118060] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:14:39.125 [DEBUG] [Thread-118060] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:14:39.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:14:39.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:14:39.181 [DEBUG] [Thread-118060] [transport.py] [_log()] userauth is OK
2025-11-03T15:14:39.181 [DEBUG] [Thread-118060] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:14:39.181 [DEBUG] [Thread-118060] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:14:39.181 [DEBUG] [Thread-118060] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:14:39.181 [DEBUG] [Thread-118060] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:14:39.183 [DEBUG] [Thread-118062 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:14:39.200 [INFO] [Thread-118060] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:14:39.200 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:14:39.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:14:40.020 [DEBUG] [Thread-118060] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:14:40.020 [DEBUG] [Thread-118060] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:14:40.067 [DEBUG] [Thread-118060] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:14:40.068 [DEBUG] [Thread-118060] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:14:40.076 [DEBUG] [Thread-118060] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:14:40.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:14:40.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:14:40.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:14:40.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:14:40.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:14:40.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:14:40.108 [DEBUG] [Thread-118060] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:14:54.247 [DEBUG] [Thread-118063 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:15:04.213 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:15:04.214 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:15:09.287 [DEBUG] [Thread-118064 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:15:10.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:15:10.126 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:15:10.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:15:10.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 14, 28), 46.08, 3.89, 0.0, 26.71, 26.85, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:15:10.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:14:28
2025-11-03T15:15:10.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:15:11.056 [DEBUG] [Thread-118065] [transport.py] [_log()] starting thread (client mode): 0x117e8fa0
2025-11-03T15:15:11.056 [DEBUG] [Thread-118065] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:15:11.071 [DEBUG] [Thread-118065] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:15:11.071 [INFO] [Thread-118065] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:15:11.074 [DEBUG] [Thread-118065] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:15:11.075 [DEBUG] [Thread-118065] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:15:11.075 [DEBUG] [Thread-118065] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:15:11.075 [DEBUG] [Thread-118065] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:15:11.075 [DEBUG] [Thread-118065] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:15:11.075 [DEBUG] [Thread-118065] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:15:11.075 [DEBUG] [Thread-118065] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:15:11.075 [DEBUG] [Thread-118065] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:15:11.076 [DEBUG] [Thread-118065] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:15:11.076 [DEBUG] [Thread-118065] [transport.py] [_log()] client lang: <none>
2025-11-03T15:15:11.076 [DEBUG] [Thread-118065] [transport.py] [_log()] server lang: <none>
2025-11-03T15:15:11.076 [DEBUG] [Thread-118065] [transport.py] [_log()] kex follows: False
2025-11-03T15:15:11.076 [DEBUG] [Thread-118065] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:15:11.076 [DEBUG] [Thread-118065] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:15:11.076 [DEBUG] [Thread-118065] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:15:11.076 [DEBUG] [Thread-118065] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:15:11.077 [DEBUG] [Thread-118065] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:15:11.077 [DEBUG] [Thread-118065] [transport.py] [_log()] Compression: none
2025-11-03T15:15:11.077 [DEBUG] [Thread-118065] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:15:11.094 [DEBUG] [Thread-118065] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:15:11.095 [DEBUG] [Thread-118065] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:15:11.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:15:11.096 [DEBUG] [Thread-118065] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:15:11.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:15:11.098 [DEBUG] [Thread-118065] [transport.py] [_log()] userauth is OK
2025-11-03T15:15:11.099 [DEBUG] [Thread-118065] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:15:11.099 [DEBUG] [Thread-118065] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:15:11.099 [DEBUG] [Thread-118065] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:15:11.099 [DEBUG] [Thread-118065] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:15:11.123 [INFO] [Thread-118065] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:15:11.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:15:13.721 [DEBUG] [Thread-118065] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:15:13.722 [DEBUG] [Thread-118065] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:15:13.722 [DEBUG] [Thread-118065] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:15:13.763 [DEBUG] [Thread-118065] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:15:13.763 [DEBUG] [Thread-118065] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:15:13.770 [DEBUG] [Thread-118065] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:15:13.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:15:13.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:15:13.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:15:13.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:15:13.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:15:13.803 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:15:13.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:15:13.803 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:15:13.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:15:13.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.551839 -999.00  +26.20  38.07      8   -9.90 1 1 2 1 1   888    0 36.10 -26.80 ----- 26.9 38.1 319.4 42.2 30.9 -32.7 30.4 -31.8 31.6 -30.5 32.2 -30.4
2025-11-03T15:15:13.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:15:13.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:15:13.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.551839
2025-11-03T15:15:13.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:15:13.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:15:13.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:15:13.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:15:13.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:15:13.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:14:28', tmtdew=46.08, humidity=3.89, cloud=0.0, wind=26.71, temperature=26.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:14:38.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:15:13.806 [DEBUG] [Thread-118065] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:15:13.900 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:15:13.919 [DEBUG] [Thread-118068] [transport.py] [_log()] starting thread (client mode): 0x117e82e0
2025-11-03T15:15:13.919 [DEBUG] [Thread-118068] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:15:13.934 [DEBUG] [Thread-118068] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:15:13.935 [INFO] [Thread-118068] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:15:13.943 [DEBUG] [Thread-118068] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:15:13.943 [DEBUG] [Thread-118068] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:15:13.943 [DEBUG] [Thread-118068] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:15:13.943 [DEBUG] [Thread-118068] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:15:13.943 [DEBUG] [Thread-118068] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:15:13.943 [DEBUG] [Thread-118068] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:15:13.943 [DEBUG] [Thread-118068] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:15:13.943 [DEBUG] [Thread-118068] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:15:13.943 [DEBUG] [Thread-118068] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:15:13.943 [DEBUG] [Thread-118068] [transport.py] [_log()] client lang: <none>
2025-11-03T15:15:13.943 [DEBUG] [Thread-118068] [transport.py] [_log()] server lang: <none>
2025-11-03T15:15:13.943 [DEBUG] [Thread-118068] [transport.py] [_log()] kex follows: False
2025-11-03T15:15:13.944 [DEBUG] [Thread-118068] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:15:13.944 [DEBUG] [Thread-118068] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:15:13.944 [DEBUG] [Thread-118068] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:15:13.944 [DEBUG] [Thread-118068] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:15:13.944 [DEBUG] [Thread-118068] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:15:13.944 [DEBUG] [Thread-118068] [transport.py] [_log()] Compression: none
2025-11-03T15:15:13.944 [DEBUG] [Thread-118068] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:15:14.005 [DEBUG] [Thread-118068] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:15:14.006 [DEBUG] [Thread-118068] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:15:14.007 [DEBUG] [Thread-118068] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:15:14.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:15:14.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:15:14.065 [DEBUG] [Thread-118068] [transport.py] [_log()] userauth is OK
2025-11-03T15:15:14.065 [DEBUG] [Thread-118068] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:15:14.065 [DEBUG] [Thread-118068] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:15:14.066 [DEBUG] [Thread-118068] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:15:14.066 [DEBUG] [Thread-118068] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:15:14.088 [INFO] [Thread-118068] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:15:14.089 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:15:14.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:15:14.942 [DEBUG] [Thread-118068] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:15:14.942 [DEBUG] [Thread-118068] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:15:14.990 [DEBUG] [Thread-118068] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:15:14.990 [DEBUG] [Thread-118068] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:15:14.999 [DEBUG] [Thread-118068] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:15:15.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:15:15.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:15:15.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:15:15.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:15:15.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:15:15.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:15:15.031 [DEBUG] [Thread-118068] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:15:15.907 [DEBUG] [Thread-118070 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:15:24.332 [DEBUG] [Thread-118071 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:15:39.396 [DEBUG] [Thread-118072 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:15:45.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:15:45.053 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:15:45.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:15:45.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 15, 32), 45.97, 4.0, 0.0, 32.59, 26.42, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:15:45.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:15:32
2025-11-03T15:15:45.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:15:46.022 [DEBUG] [Thread-118073] [transport.py] [_log()] starting thread (client mode): 0x117eab00
2025-11-03T15:15:46.022 [DEBUG] [Thread-118073] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:15:46.032 [DEBUG] [Thread-118073] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:15:46.032 [INFO] [Thread-118073] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:15:46.035 [DEBUG] [Thread-118073] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:15:46.035 [DEBUG] [Thread-118073] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:15:46.035 [DEBUG] [Thread-118073] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:15:46.036 [DEBUG] [Thread-118073] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:15:46.036 [DEBUG] [Thread-118073] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:15:46.036 [DEBUG] [Thread-118073] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:15:46.036 [DEBUG] [Thread-118073] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:15:46.036 [DEBUG] [Thread-118073] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:15:46.036 [DEBUG] [Thread-118073] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:15:46.036 [DEBUG] [Thread-118073] [transport.py] [_log()] client lang: <none>
2025-11-03T15:15:46.036 [DEBUG] [Thread-118073] [transport.py] [_log()] server lang: <none>
2025-11-03T15:15:46.036 [DEBUG] [Thread-118073] [transport.py] [_log()] kex follows: False
2025-11-03T15:15:46.036 [DEBUG] [Thread-118073] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:15:46.036 [DEBUG] [Thread-118073] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:15:46.036 [DEBUG] [Thread-118073] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:15:46.036 [DEBUG] [Thread-118073] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:15:46.036 [DEBUG] [Thread-118073] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:15:46.036 [DEBUG] [Thread-118073] [transport.py] [_log()] Compression: none
2025-11-03T15:15:46.036 [DEBUG] [Thread-118073] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:15:46.055 [DEBUG] [Thread-118073] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:15:46.055 [DEBUG] [Thread-118073] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:15:46.055 [DEBUG] [Thread-118073] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:15:46.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:15:46.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:15:46.056 [DEBUG] [Thread-118073] [transport.py] [_log()] userauth is OK
2025-11-03T15:15:46.056 [DEBUG] [Thread-118073] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:15:46.056 [DEBUG] [Thread-118073] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:15:46.056 [DEBUG] [Thread-118073] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:15:46.056 [DEBUG] [Thread-118073] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:15:46.072 [INFO] [Thread-118073] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:15:46.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:15:46.713 [DEBUG] [Thread-118073] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:15:46.713 [DEBUG] [Thread-118073] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:15:46.713 [DEBUG] [Thread-118073] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:15:46.754 [DEBUG] [Thread-118073] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:15:46.754 [DEBUG] [Thread-118073] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:15:46.758 [DEBUG] [Thread-118073] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:15:46.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:15:46.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:15:46.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:15:46.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:15:46.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:15:46.781 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:15:46.781 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:15:46.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:15:46.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:15:46.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.552186 -999.00  +26.10  21.90      8  -10.00 1 1 1 1 1   888    0 35.77 -27.93 ----- 18.2 21.9 327.8 32.7 30.9 -31.8 30.4 -30.9 31.6 -30.5 32.2 -30.8
2025-11-03T15:15:46.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:15:46.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:15:46.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.552186
2025-11-03T15:15:46.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:15:46.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:15:46.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:15:46.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:15:46.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:15:46.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:15:32', tmtdew=45.97, humidity=4.0, cloud=0.0, wind=32.59, temperature=26.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:15:08.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:15:46.784 [DEBUG] [Thread-118073] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:15:46.875 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:15:46.896 [DEBUG] [Thread-118076] [transport.py] [_log()] starting thread (client mode): 0x117ea200
2025-11-03T15:15:46.897 [DEBUG] [Thread-118076] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:15:46.912 [DEBUG] [Thread-118076] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:15:46.912 [INFO] [Thread-118076] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:15:46.919 [DEBUG] [Thread-118076] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:15:46.920 [DEBUG] [Thread-118076] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:15:46.920 [DEBUG] [Thread-118076] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:15:46.920 [DEBUG] [Thread-118076] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:15:46.920 [DEBUG] [Thread-118076] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:15:46.920 [DEBUG] [Thread-118076] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:15:46.920 [DEBUG] [Thread-118076] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:15:46.920 [DEBUG] [Thread-118076] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:15:46.920 [DEBUG] [Thread-118076] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:15:46.920 [DEBUG] [Thread-118076] [transport.py] [_log()] client lang: <none>
2025-11-03T15:15:46.920 [DEBUG] [Thread-118076] [transport.py] [_log()] server lang: <none>
2025-11-03T15:15:46.920 [DEBUG] [Thread-118076] [transport.py] [_log()] kex follows: False
2025-11-03T15:15:46.920 [DEBUG] [Thread-118076] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:15:46.920 [DEBUG] [Thread-118076] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:15:46.921 [DEBUG] [Thread-118076] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:15:46.921 [DEBUG] [Thread-118076] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:15:46.921 [DEBUG] [Thread-118076] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:15:46.921 [DEBUG] [Thread-118076] [transport.py] [_log()] Compression: none
2025-11-03T15:15:46.921 [DEBUG] [Thread-118076] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:15:46.981 [DEBUG] [Thread-118076] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:15:46.982 [DEBUG] [Thread-118076] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:15:46.982 [DEBUG] [Thread-118076] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:15:46.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:15:46.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:15:47.041 [DEBUG] [Thread-118076] [transport.py] [_log()] userauth is OK
2025-11-03T15:15:47.041 [DEBUG] [Thread-118076] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:15:47.041 [DEBUG] [Thread-118076] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:15:47.041 [DEBUG] [Thread-118076] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:15:47.042 [DEBUG] [Thread-118076] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:15:47.057 [INFO] [Thread-118076] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:15:47.057 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:15:47.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:15:47.925 [DEBUG] [Thread-118076] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:15:47.925 [DEBUG] [Thread-118076] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:15:47.974 [DEBUG] [Thread-118076] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:15:47.974 [DEBUG] [Thread-118076] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:15:47.982 [DEBUG] [Thread-118076] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:15:47.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:15:47.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:15:47.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:15:48.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:15:48.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:15:48.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:15:48.017 [DEBUG] [Thread-118076] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:15:54.431 [DEBUG] [Thread-118078 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:16:04.355 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:16:04.356 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:16:09.495 [DEBUG] [Thread-118079 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:16:15.977 [DEBUG] [Thread-118080 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:16:18.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:16:18.026 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:16:18.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:16:18.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 16, 5), 45.93, 4.0, 0.0, 30.53, 26.27, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:16:18.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:16:05
2025-11-03T15:16:18.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:16:19.011 [DEBUG] [Thread-118081] [transport.py] [_log()] starting thread (client mode): 0x117eb9d0
2025-11-03T15:16:19.011 [DEBUG] [Thread-118081] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:16:19.024 [DEBUG] [Thread-118081] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:16:19.024 [INFO] [Thread-118081] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:16:19.026 [DEBUG] [Thread-118081] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:16:19.026 [DEBUG] [Thread-118081] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:16:19.026 [DEBUG] [Thread-118081] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:16:19.026 [DEBUG] [Thread-118081] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:16:19.026 [DEBUG] [Thread-118081] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:16:19.026 [DEBUG] [Thread-118081] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:16:19.026 [DEBUG] [Thread-118081] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:16:19.026 [DEBUG] [Thread-118081] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:16:19.026 [DEBUG] [Thread-118081] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:16:19.026 [DEBUG] [Thread-118081] [transport.py] [_log()] client lang: <none>
2025-11-03T15:16:19.026 [DEBUG] [Thread-118081] [transport.py] [_log()] server lang: <none>
2025-11-03T15:16:19.026 [DEBUG] [Thread-118081] [transport.py] [_log()] kex follows: False
2025-11-03T15:16:19.026 [DEBUG] [Thread-118081] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:16:19.026 [DEBUG] [Thread-118081] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:16:19.026 [DEBUG] [Thread-118081] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:16:19.026 [DEBUG] [Thread-118081] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:16:19.026 [DEBUG] [Thread-118081] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:16:19.026 [DEBUG] [Thread-118081] [transport.py] [_log()] Compression: none
2025-11-03T15:16:19.026 [DEBUG] [Thread-118081] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:16:19.034 [DEBUG] [Thread-118081] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:16:19.034 [DEBUG] [Thread-118081] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:16:19.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:16:19.035 [DEBUG] [Thread-118081] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:16:19.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:16:19.035 [DEBUG] [Thread-118081] [transport.py] [_log()] userauth is OK
2025-11-03T15:16:19.035 [DEBUG] [Thread-118081] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:16:19.035 [DEBUG] [Thread-118081] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:16:19.036 [DEBUG] [Thread-118081] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:16:19.036 [DEBUG] [Thread-118081] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:16:19.046 [INFO] [Thread-118081] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:16:19.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:16:19.701 [DEBUG] [Thread-118081] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:16:19.701 [DEBUG] [Thread-118081] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:16:19.701 [DEBUG] [Thread-118081] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:16:19.742 [DEBUG] [Thread-118081] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:16:19.742 [DEBUG] [Thread-118081] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:16:19.745 [DEBUG] [Thread-118081] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:16:19.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:16:19.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:16:19.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:16:19.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:16:19.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:16:19.765 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:16:19.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:16:19.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:16:19.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:16:19.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.552533 -999.00  +26.60  13.44      8   -9.50 1 1 1 1 1   888    0 35.90 -29.60 ----- 17.1 13.4 343.6 30.4 31.0 -31.5 30.5 -30.5 31.7 -29.6 32.2 -30.2
2025-11-03T15:16:19.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:16:19.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:16:19.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.552533
2025-11-03T15:16:19.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:16:19.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:16:19.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:16:19.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:16:19.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:16:19.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:16:05', tmtdew=45.93, humidity=4.0, cloud=0.0, wind=30.53, temperature=26.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:15:38.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:16:19.767 [DEBUG] [Thread-118081] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:16:19.841 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:16:19.859 [DEBUG] [Thread-118084] [transport.py] [_log()] starting thread (client mode): 0x117eb7f0
2025-11-03T15:16:19.859 [DEBUG] [Thread-118084] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:16:19.874 [DEBUG] [Thread-118084] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:16:19.874 [INFO] [Thread-118084] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:16:19.882 [DEBUG] [Thread-118084] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:16:19.882 [DEBUG] [Thread-118084] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:16:19.882 [DEBUG] [Thread-118084] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:16:19.882 [DEBUG] [Thread-118084] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:16:19.882 [DEBUG] [Thread-118084] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:16:19.882 [DEBUG] [Thread-118084] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:16:19.882 [DEBUG] [Thread-118084] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:16:19.882 [DEBUG] [Thread-118084] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:16:19.882 [DEBUG] [Thread-118084] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:16:19.882 [DEBUG] [Thread-118084] [transport.py] [_log()] client lang: <none>
2025-11-03T15:16:19.882 [DEBUG] [Thread-118084] [transport.py] [_log()] server lang: <none>
2025-11-03T15:16:19.882 [DEBUG] [Thread-118084] [transport.py] [_log()] kex follows: False
2025-11-03T15:16:19.882 [DEBUG] [Thread-118084] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:16:19.882 [DEBUG] [Thread-118084] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:16:19.882 [DEBUG] [Thread-118084] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:16:19.882 [DEBUG] [Thread-118084] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:16:19.883 [DEBUG] [Thread-118084] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:16:19.883 [DEBUG] [Thread-118084] [transport.py] [_log()] Compression: none
2025-11-03T15:16:19.883 [DEBUG] [Thread-118084] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:16:19.939 [DEBUG] [Thread-118084] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:16:19.939 [DEBUG] [Thread-118084] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:16:19.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:16:19.939 [DEBUG] [Thread-118084] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:16:19.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:16:19.996 [DEBUG] [Thread-118084] [transport.py] [_log()] userauth is OK
2025-11-03T15:16:19.996 [DEBUG] [Thread-118084] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:16:19.996 [DEBUG] [Thread-118084] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:16:19.996 [DEBUG] [Thread-118084] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:16:19.996 [DEBUG] [Thread-118084] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:16:20.013 [INFO] [Thread-118084] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:16:20.013 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:16:20.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:16:20.850 [DEBUG] [Thread-118084] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:16:20.850 [DEBUG] [Thread-118084] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:16:20.899 [DEBUG] [Thread-118084] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:16:20.899 [DEBUG] [Thread-118084] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:16:20.907 [DEBUG] [Thread-118084] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:16:20.916 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:16:20.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:16:20.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:16:20.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:16:20.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:16:20.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:16:20.940 [DEBUG] [Thread-118084] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:16:24.531 [DEBUG] [Thread-118086 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:16:39.590 [DEBUG] [Thread-118087 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:16:50.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:16:50.940 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:16:50.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:16:51.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 16, 37), 46.04, 4.0, 0.0, 28.88, 26.62, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:16:51.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:16:37
2025-11-03T15:16:51.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:16:52.012 [DEBUG] [Thread-118088] [transport.py] [_log()] starting thread (client mode): 0xedd7310
2025-11-03T15:16:52.012 [DEBUG] [Thread-118088] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:16:52.032 [DEBUG] [Thread-118088] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:16:52.033 [INFO] [Thread-118088] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:16:52.036 [DEBUG] [Thread-118088] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:16:52.036 [DEBUG] [Thread-118088] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:16:52.036 [DEBUG] [Thread-118088] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:16:52.037 [DEBUG] [Thread-118088] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:16:52.037 [DEBUG] [Thread-118088] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:16:52.037 [DEBUG] [Thread-118088] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:16:52.037 [DEBUG] [Thread-118088] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:16:52.037 [DEBUG] [Thread-118088] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:16:52.037 [DEBUG] [Thread-118088] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:16:52.037 [DEBUG] [Thread-118088] [transport.py] [_log()] client lang: <none>
2025-11-03T15:16:52.037 [DEBUG] [Thread-118088] [transport.py] [_log()] server lang: <none>
2025-11-03T15:16:52.038 [DEBUG] [Thread-118088] [transport.py] [_log()] kex follows: False
2025-11-03T15:16:52.038 [DEBUG] [Thread-118088] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:16:52.038 [DEBUG] [Thread-118088] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:16:52.038 [DEBUG] [Thread-118088] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:16:52.038 [DEBUG] [Thread-118088] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:16:52.038 [DEBUG] [Thread-118088] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:16:52.038 [DEBUG] [Thread-118088] [transport.py] [_log()] Compression: none
2025-11-03T15:16:52.039 [DEBUG] [Thread-118088] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:16:52.058 [DEBUG] [Thread-118088] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:16:52.059 [DEBUG] [Thread-118088] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:16:52.060 [DEBUG] [Thread-118088] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:16:52.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:16:52.061 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:16:52.062 [DEBUG] [Thread-118088] [transport.py] [_log()] userauth is OK
2025-11-03T15:16:52.063 [DEBUG] [Thread-118088] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:16:52.063 [DEBUG] [Thread-118088] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:16:52.063 [DEBUG] [Thread-118088] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:16:52.063 [DEBUG] [Thread-118088] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:16:52.088 [INFO] [Thread-118088] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:16:52.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:16:52.732 [DEBUG] [Thread-118088] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:16:52.733 [DEBUG] [Thread-118088] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:16:52.733 [DEBUG] [Thread-118088] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:16:52.773 [DEBUG] [Thread-118088] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:16:52.773 [DEBUG] [Thread-118088] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:16:52.777 [DEBUG] [Thread-118088] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:16:52.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:16:52.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:16:52.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:16:52.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:16:52.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:16:52.800 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:16:52.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:16:52.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:16:52.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:16:52.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.552881 -999.00  +26.90  18.39      8   -9.40 1 1 1 1 1   888    0 35.76 -29.95 ----- 30.4 18.4 354.1 26.7 31.1 -31.4 30.5 -30.8 31.8 -29.6 32.3 -29.9
2025-11-03T15:16:52.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:16:52.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:16:52.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.552881
2025-11-03T15:16:52.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:16:52.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:16:52.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:16:52.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:16:52.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:16:52.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:16:37', tmtdew=46.04, humidity=4.0, cloud=0.0, wind=28.88, temperature=26.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:16:08.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:16:52.804 [DEBUG] [Thread-118088] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:16:52.898 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:16:52.917 [DEBUG] [Thread-118091] [transport.py] [_log()] starting thread (client mode): 0xedd79d0
2025-11-03T15:16:52.917 [DEBUG] [Thread-118091] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:16:52.932 [DEBUG] [Thread-118091] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:16:52.932 [INFO] [Thread-118091] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:16:52.940 [DEBUG] [Thread-118091] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:16:52.940 [DEBUG] [Thread-118091] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:16:52.940 [DEBUG] [Thread-118091] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:16:52.940 [DEBUG] [Thread-118091] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:16:52.941 [DEBUG] [Thread-118091] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:16:52.941 [DEBUG] [Thread-118091] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:16:52.941 [DEBUG] [Thread-118091] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:16:52.941 [DEBUG] [Thread-118091] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:16:52.941 [DEBUG] [Thread-118091] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:16:52.941 [DEBUG] [Thread-118091] [transport.py] [_log()] client lang: <none>
2025-11-03T15:16:52.941 [DEBUG] [Thread-118091] [transport.py] [_log()] server lang: <none>
2025-11-03T15:16:52.941 [DEBUG] [Thread-118091] [transport.py] [_log()] kex follows: False
2025-11-03T15:16:52.941 [DEBUG] [Thread-118091] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:16:52.941 [DEBUG] [Thread-118091] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:16:52.941 [DEBUG] [Thread-118091] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:16:52.941 [DEBUG] [Thread-118091] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:16:52.941 [DEBUG] [Thread-118091] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:16:52.941 [DEBUG] [Thread-118091] [transport.py] [_log()] Compression: none
2025-11-03T15:16:52.941 [DEBUG] [Thread-118091] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:16:53.000 [DEBUG] [Thread-118091] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:16:53.001 [DEBUG] [Thread-118091] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:16:53.001 [DEBUG] [Thread-118091] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:16:53.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:16:53.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:16:53.056 [DEBUG] [Thread-118091] [transport.py] [_log()] userauth is OK
2025-11-03T15:16:53.057 [DEBUG] [Thread-118091] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:16:53.057 [DEBUG] [Thread-118091] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:16:53.057 [DEBUG] [Thread-118091] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:16:53.057 [DEBUG] [Thread-118091] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:16:53.076 [INFO] [Thread-118091] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:16:53.077 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:16:53.077 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:16:53.961 [DEBUG] [Thread-118091] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:16:53.962 [DEBUG] [Thread-118091] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:16:54.009 [DEBUG] [Thread-118091] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:16:54.009 [DEBUG] [Thread-118091] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:16:54.018 [DEBUG] [Thread-118091] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:16:54.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:16:54.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:16:54.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:16:54.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:16:54.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:16:54.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:16:54.064 [DEBUG] [Thread-118091] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:16:54.630 [DEBUG] [Thread-118093 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:17:04.496 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:17:04.497 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:17:09.706 [DEBUG] [Thread-118094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:17:16.184 [DEBUG] [Thread-118095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:17:24.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:17:24.082 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:17:24.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:17:24.748 [DEBUG] [Thread-118096 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:17:24.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 17, 9), 46.22, 3.95, 0.0, 23.47, 26.72, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:17:24.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:17:09
2025-11-03T15:17:25.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:17:25.164 [DEBUG] [Thread-118097] [transport.py] [_log()] starting thread (client mode): 0xedd4f70
2025-11-03T15:17:25.164 [DEBUG] [Thread-118097] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:17:25.186 [DEBUG] [Thread-118097] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:17:25.186 [INFO] [Thread-118097] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:17:25.190 [DEBUG] [Thread-118097] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:17:25.190 [DEBUG] [Thread-118097] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:17:25.190 [DEBUG] [Thread-118097] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:17:25.190 [DEBUG] [Thread-118097] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:17:25.190 [DEBUG] [Thread-118097] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:17:25.190 [DEBUG] [Thread-118097] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:17:25.191 [DEBUG] [Thread-118097] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:17:25.191 [DEBUG] [Thread-118097] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:17:25.191 [DEBUG] [Thread-118097] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:17:25.191 [DEBUG] [Thread-118097] [transport.py] [_log()] client lang: <none>
2025-11-03T15:17:25.191 [DEBUG] [Thread-118097] [transport.py] [_log()] server lang: <none>
2025-11-03T15:17:25.191 [DEBUG] [Thread-118097] [transport.py] [_log()] kex follows: False
2025-11-03T15:17:25.191 [DEBUG] [Thread-118097] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:17:25.191 [DEBUG] [Thread-118097] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:17:25.191 [DEBUG] [Thread-118097] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:17:25.192 [DEBUG] [Thread-118097] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:17:25.192 [DEBUG] [Thread-118097] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:17:25.192 [DEBUG] [Thread-118097] [transport.py] [_log()] Compression: none
2025-11-03T15:17:25.192 [DEBUG] [Thread-118097] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:17:25.204 [DEBUG] [Thread-118097] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:17:25.205 [DEBUG] [Thread-118097] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:17:25.205 [DEBUG] [Thread-118097] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:17:25.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:17:25.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:17:25.208 [DEBUG] [Thread-118097] [transport.py] [_log()] userauth is OK
2025-11-03T15:17:25.208 [DEBUG] [Thread-118097] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:17:25.208 [DEBUG] [Thread-118097] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:17:25.208 [DEBUG] [Thread-118097] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:17:25.208 [DEBUG] [Thread-118097] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:17:25.225 [INFO] [Thread-118097] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:17:25.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:17:25.803 [DEBUG] [Thread-118097] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:17:25.803 [DEBUG] [Thread-118097] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:17:25.803 [DEBUG] [Thread-118097] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:17:25.845 [DEBUG] [Thread-118097] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:17:25.845 [DEBUG] [Thread-118097] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:17:25.847 [DEBUG] [Thread-118097] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:17:25.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:17:25.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:17:25.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:17:25.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:17:25.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:17:25.867 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:17:25.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:17:25.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:17:25.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:17:25.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.553228 -999.00  +26.50  19.21      8   -9.70 1 1 1 1 1   888    0 35.69 -29.55 ----- 14.1 19.2 346.1 32.5 31.0 -32.7 30.5 -31.6 31.8 -30.8 32.2 -31.1
2025-11-03T15:17:25.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:17:25.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:17:25.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.553228
2025-11-03T15:17:25.876 [DEBUG] [Thread-118097] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:17:25.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:17:25.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:17:25.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:17:25.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:17:25.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:17:25.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:17:09', tmtdew=46.22, humidity=3.95, cloud=0.0, wind=23.47, temperature=26.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:16:38.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:17:25.948 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:17:25.977 [DEBUG] [Thread-118100] [transport.py] [_log()] starting thread (client mode): 0x1174db40
2025-11-03T15:17:25.977 [DEBUG] [Thread-118100] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:17:25.992 [DEBUG] [Thread-118100] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:17:25.992 [INFO] [Thread-118100] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:17:26.000 [DEBUG] [Thread-118100] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:17:26.000 [DEBUG] [Thread-118100] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:17:26.000 [DEBUG] [Thread-118100] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:17:26.000 [DEBUG] [Thread-118100] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:17:26.000 [DEBUG] [Thread-118100] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:17:26.000 [DEBUG] [Thread-118100] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:17:26.000 [DEBUG] [Thread-118100] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:17:26.000 [DEBUG] [Thread-118100] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:17:26.000 [DEBUG] [Thread-118100] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:17:26.000 [DEBUG] [Thread-118100] [transport.py] [_log()] client lang: <none>
2025-11-03T15:17:26.000 [DEBUG] [Thread-118100] [transport.py] [_log()] server lang: <none>
2025-11-03T15:17:26.000 [DEBUG] [Thread-118100] [transport.py] [_log()] kex follows: False
2025-11-03T15:17:26.000 [DEBUG] [Thread-118100] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:17:26.000 [DEBUG] [Thread-118100] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:17:26.000 [DEBUG] [Thread-118100] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:17:26.000 [DEBUG] [Thread-118100] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:17:26.000 [DEBUG] [Thread-118100] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:17:26.000 [DEBUG] [Thread-118100] [transport.py] [_log()] Compression: none
2025-11-03T15:17:26.000 [DEBUG] [Thread-118100] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:17:26.059 [DEBUG] [Thread-118100] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:17:26.059 [DEBUG] [Thread-118100] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:17:26.059 [DEBUG] [Thread-118100] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:17:26.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:17:26.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:17:26.116 [DEBUG] [Thread-118100] [transport.py] [_log()] userauth is OK
2025-11-03T15:17:26.116 [DEBUG] [Thread-118100] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:17:26.117 [DEBUG] [Thread-118100] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:17:26.117 [DEBUG] [Thread-118100] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:17:26.117 [DEBUG] [Thread-118100] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:17:26.137 [INFO] [Thread-118100] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:17:26.138 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:17:26.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:17:26.983 [DEBUG] [Thread-118100] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:17:26.983 [DEBUG] [Thread-118100] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:17:27.030 [DEBUG] [Thread-118100] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:17:27.030 [DEBUG] [Thread-118100] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:17:27.038 [DEBUG] [Thread-118100] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:17:27.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:17:27.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:17:27.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:17:27.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:17:27.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:17:27.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:17:27.070 [DEBUG] [Thread-118100] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:17:39.784 [DEBUG] [Thread-118102 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:17:54.841 [DEBUG] [Thread-118103 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:17:57.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:17:57.093 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:17:57.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:17:57.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 17, 42), 45.59, 4.02, 0.0, 21.24, 26.59, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:17:57.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:17:42
2025-11-03T15:17:57.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:17:58.090 [DEBUG] [Thread-118104] [transport.py] [_log()] starting thread (client mode): 0xedd4dc0
2025-11-03T15:17:58.090 [DEBUG] [Thread-118104] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:17:58.111 [DEBUG] [Thread-118104] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:17:58.111 [INFO] [Thread-118104] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:17:58.114 [DEBUG] [Thread-118104] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:17:58.114 [DEBUG] [Thread-118104] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:17:58.115 [DEBUG] [Thread-118104] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:17:58.115 [DEBUG] [Thread-118104] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:17:58.115 [DEBUG] [Thread-118104] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:17:58.115 [DEBUG] [Thread-118104] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:17:58.115 [DEBUG] [Thread-118104] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:17:58.115 [DEBUG] [Thread-118104] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:17:58.115 [DEBUG] [Thread-118104] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:17:58.115 [DEBUG] [Thread-118104] [transport.py] [_log()] client lang: <none>
2025-11-03T15:17:58.115 [DEBUG] [Thread-118104] [transport.py] [_log()] server lang: <none>
2025-11-03T15:17:58.115 [DEBUG] [Thread-118104] [transport.py] [_log()] kex follows: False
2025-11-03T15:17:58.115 [DEBUG] [Thread-118104] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:17:58.115 [DEBUG] [Thread-118104] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:17:58.115 [DEBUG] [Thread-118104] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:17:58.115 [DEBUG] [Thread-118104] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:17:58.115 [DEBUG] [Thread-118104] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:17:58.115 [DEBUG] [Thread-118104] [transport.py] [_log()] Compression: none
2025-11-03T15:17:58.116 [DEBUG] [Thread-118104] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:17:58.136 [DEBUG] [Thread-118104] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:17:58.137 [DEBUG] [Thread-118104] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:17:58.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:17:58.139 [DEBUG] [Thread-118104] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:17:58.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:17:58.140 [DEBUG] [Thread-118104] [transport.py] [_log()] userauth is OK
2025-11-03T15:17:58.141 [DEBUG] [Thread-118104] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:17:58.141 [DEBUG] [Thread-118104] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:17:58.141 [DEBUG] [Thread-118104] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:17:58.141 [DEBUG] [Thread-118104] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:17:58.165 [INFO] [Thread-118104] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:17:58.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:17:58.816 [DEBUG] [Thread-118104] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:17:58.825 [DEBUG] [Thread-118104] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:17:58.825 [DEBUG] [Thread-118104] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:17:58.857 [DEBUG] [Thread-118104] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:17:58.857 [DEBUG] [Thread-118104] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:17:58.860 [DEBUG] [Thread-118104] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:17:58.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:17:58.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:17:58.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:17:58.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:17:58.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:17:58.885 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:17:58.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:17:58.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:17:58.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:17:58.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.553575 -999.00  +26.20  20.49      8   -9.70 1 1 1 1 1   888    0 35.89 -30.88 ----- 28.8 20.5 344.2 25.2 30.9 -31.7 30.5 -31.2 31.7 -30.3 32.0 -31.0
2025-11-03T15:17:58.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:17:58.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:17:58.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.553575
2025-11-03T15:17:58.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:17:58.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:17:58.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:17:58.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:17:58.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:17:58.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:17:42', tmtdew=45.59, humidity=4.02, cloud=0.0, wind=21.24, temperature=26.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:17:08.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:17:58.888 [DEBUG] [Thread-118104] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:17:58.972 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:17:58.995 [DEBUG] [Thread-118107] [transport.py] [_log()] starting thread (client mode): 0xedd7910
2025-11-03T15:17:58.995 [DEBUG] [Thread-118107] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:17:59.013 [DEBUG] [Thread-118107] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:17:59.013 [INFO] [Thread-118107] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:17:59.021 [DEBUG] [Thread-118107] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:17:59.022 [DEBUG] [Thread-118107] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:17:59.022 [DEBUG] [Thread-118107] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:17:59.022 [DEBUG] [Thread-118107] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:17:59.022 [DEBUG] [Thread-118107] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:17:59.022 [DEBUG] [Thread-118107] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:17:59.022 [DEBUG] [Thread-118107] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:17:59.022 [DEBUG] [Thread-118107] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:17:59.022 [DEBUG] [Thread-118107] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:17:59.022 [DEBUG] [Thread-118107] [transport.py] [_log()] client lang: <none>
2025-11-03T15:17:59.022 [DEBUG] [Thread-118107] [transport.py] [_log()] server lang: <none>
2025-11-03T15:17:59.022 [DEBUG] [Thread-118107] [transport.py] [_log()] kex follows: False
2025-11-03T15:17:59.022 [DEBUG] [Thread-118107] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:17:59.022 [DEBUG] [Thread-118107] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:17:59.023 [DEBUG] [Thread-118107] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:17:59.023 [DEBUG] [Thread-118107] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:17:59.023 [DEBUG] [Thread-118107] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:17:59.023 [DEBUG] [Thread-118107] [transport.py] [_log()] Compression: none
2025-11-03T15:17:59.023 [DEBUG] [Thread-118107] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:17:59.080 [DEBUG] [Thread-118107] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:17:59.081 [DEBUG] [Thread-118107] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:17:59.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:17:59.082 [DEBUG] [Thread-118107] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:17:59.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:17:59.136 [DEBUG] [Thread-118107] [transport.py] [_log()] userauth is OK
2025-11-03T15:17:59.137 [DEBUG] [Thread-118107] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:17:59.137 [DEBUG] [Thread-118107] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:17:59.137 [DEBUG] [Thread-118107] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:17:59.137 [DEBUG] [Thread-118107] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:17:59.165 [INFO] [Thread-118107] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:17:59.165 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:17:59.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:17:59.997 [DEBUG] [Thread-118107] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:17:59.997 [DEBUG] [Thread-118107] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:18:00.044 [DEBUG] [Thread-118107] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:18:00.045 [DEBUG] [Thread-118107] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:18:00.053 [DEBUG] [Thread-118107] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:18:00.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:18:00.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:18:00.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:18:00.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:18:00.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:18:00.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:18:00.088 [DEBUG] [Thread-118107] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:18:04.639 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:18:04.640 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:18:09.885 [DEBUG] [Thread-118109 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:18:16.235 [DEBUG] [Thread-118110 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:18:24.947 [DEBUG] [Thread-118111 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:18:30.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:18:30.117 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:18:30.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:18:30.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 18, 14), 45.78, 3.95, 0.0, 22.94, 26.55, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:18:30.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:18:14
2025-11-03T15:18:30.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:18:31.135 [DEBUG] [Thread-118112] [transport.py] [_log()] starting thread (client mode): 0x117803a0
2025-11-03T15:18:31.135 [DEBUG] [Thread-118112] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:18:31.151 [DEBUG] [Thread-118112] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:18:31.151 [INFO] [Thread-118112] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:18:31.152 [DEBUG] [Thread-118112] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:18:31.152 [DEBUG] [Thread-118112] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:18:31.152 [DEBUG] [Thread-118112] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:18:31.152 [DEBUG] [Thread-118112] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:18:31.152 [DEBUG] [Thread-118112] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:18:31.152 [DEBUG] [Thread-118112] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:18:31.152 [DEBUG] [Thread-118112] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:18:31.152 [DEBUG] [Thread-118112] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:18:31.152 [DEBUG] [Thread-118112] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:18:31.152 [DEBUG] [Thread-118112] [transport.py] [_log()] client lang: <none>
2025-11-03T15:18:31.152 [DEBUG] [Thread-118112] [transport.py] [_log()] server lang: <none>
2025-11-03T15:18:31.152 [DEBUG] [Thread-118112] [transport.py] [_log()] kex follows: False
2025-11-03T15:18:31.152 [DEBUG] [Thread-118112] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:18:31.152 [DEBUG] [Thread-118112] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:18:31.152 [DEBUG] [Thread-118112] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:18:31.152 [DEBUG] [Thread-118112] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:18:31.152 [DEBUG] [Thread-118112] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:18:31.152 [DEBUG] [Thread-118112] [transport.py] [_log()] Compression: none
2025-11-03T15:18:31.152 [DEBUG] [Thread-118112] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:18:31.160 [DEBUG] [Thread-118112] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:18:31.161 [DEBUG] [Thread-118112] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:18:31.161 [DEBUG] [Thread-118112] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:18:31.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:18:31.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:18:31.163 [DEBUG] [Thread-118112] [transport.py] [_log()] userauth is OK
2025-11-03T15:18:31.164 [DEBUG] [Thread-118112] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:18:31.164 [DEBUG] [Thread-118112] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:18:31.164 [DEBUG] [Thread-118112] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:18:31.164 [DEBUG] [Thread-118112] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:18:31.181 [INFO] [Thread-118112] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:18:31.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:18:31.783 [DEBUG] [Thread-118112] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:18:31.783 [DEBUG] [Thread-118112] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:18:31.784 [DEBUG] [Thread-118112] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:18:31.824 [DEBUG] [Thread-118112] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:18:31.824 [DEBUG] [Thread-118112] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:18:31.825 [DEBUG] [Thread-118112] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:18:31.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:18:31.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:18:31.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:18:31.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:18:31.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:18:31.842 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:18:31.842 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:18:31.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:18:31.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:18:31.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.553922 -999.00  +26.20  20.63      8   -9.60 1 1 1 1 1   888    0 35.11 -27.94 ----- 16.3 20.6 329.9 33.0 30.9 -32.9 30.4 -31.6 31.7 -30.5 32.3 -30.2
2025-11-03T15:18:31.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:18:31.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:18:31.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.553922
2025-11-03T15:18:31.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:18:31.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:18:31.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:18:31.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:18:31.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:18:31.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:18:14', tmtdew=45.78, humidity=3.95, cloud=0.0, wind=22.94, temperature=26.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:17:38.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:18:31.844 [DEBUG] [Thread-118112] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:18:31.929 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:18:31.948 [DEBUG] [Thread-118115] [transport.py] [_log()] starting thread (client mode): 0x117bd960
2025-11-03T15:18:31.948 [DEBUG] [Thread-118115] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:18:31.963 [DEBUG] [Thread-118115] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:18:31.963 [INFO] [Thread-118115] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:18:31.971 [DEBUG] [Thread-118115] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:18:31.971 [DEBUG] [Thread-118115] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:18:31.971 [DEBUG] [Thread-118115] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:18:31.971 [DEBUG] [Thread-118115] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:18:31.971 [DEBUG] [Thread-118115] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:18:31.971 [DEBUG] [Thread-118115] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:18:31.971 [DEBUG] [Thread-118115] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:18:31.972 [DEBUG] [Thread-118115] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:18:31.972 [DEBUG] [Thread-118115] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:18:31.972 [DEBUG] [Thread-118115] [transport.py] [_log()] client lang: <none>
2025-11-03T15:18:31.972 [DEBUG] [Thread-118115] [transport.py] [_log()] server lang: <none>
2025-11-03T15:18:31.972 [DEBUG] [Thread-118115] [transport.py] [_log()] kex follows: False
2025-11-03T15:18:31.972 [DEBUG] [Thread-118115] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:18:31.972 [DEBUG] [Thread-118115] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:18:31.972 [DEBUG] [Thread-118115] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:18:31.972 [DEBUG] [Thread-118115] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:18:31.972 [DEBUG] [Thread-118115] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:18:31.972 [DEBUG] [Thread-118115] [transport.py] [_log()] Compression: none
2025-11-03T15:18:31.972 [DEBUG] [Thread-118115] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:18:32.027 [DEBUG] [Thread-118115] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:18:32.028 [DEBUG] [Thread-118115] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:18:32.029 [DEBUG] [Thread-118115] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:18:32.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:18:32.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:18:32.084 [DEBUG] [Thread-118115] [transport.py] [_log()] userauth is OK
2025-11-03T15:18:32.084 [DEBUG] [Thread-118115] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:18:32.084 [DEBUG] [Thread-118115] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:18:32.084 [DEBUG] [Thread-118115] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:18:32.084 [DEBUG] [Thread-118115] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:18:32.103 [INFO] [Thread-118115] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:18:32.104 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:18:32.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:18:32.998 [DEBUG] [Thread-118115] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:18:32.998 [DEBUG] [Thread-118115] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:18:33.046 [DEBUG] [Thread-118115] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:18:33.046 [DEBUG] [Thread-118115] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:18:33.055 [DEBUG] [Thread-118115] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:18:33.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:18:33.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:18:33.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:18:33.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:18:33.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:18:33.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:18:33.089 [DEBUG] [Thread-118115] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:18:39.989 [DEBUG] [Thread-118117 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:18:55.049 [DEBUG] [Thread-118118 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:19:03.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:19:03.111 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:19:03.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:19:03.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 18, 47), 45.99, 3.95, 0.0, 26.47, 26.72, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:19:03.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:18:47
2025-11-03T15:19:03.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:19:04.056 [DEBUG] [Thread-118119] [transport.py] [_log()] starting thread (client mode): 0x117e8a60
2025-11-03T15:19:04.056 [DEBUG] [Thread-118119] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:19:04.077 [DEBUG] [Thread-118119] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:19:04.077 [INFO] [Thread-118119] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:19:04.080 [DEBUG] [Thread-118119] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:19:04.081 [DEBUG] [Thread-118119] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:19:04.081 [DEBUG] [Thread-118119] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:19:04.081 [DEBUG] [Thread-118119] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:19:04.081 [DEBUG] [Thread-118119] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:19:04.081 [DEBUG] [Thread-118119] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:19:04.081 [DEBUG] [Thread-118119] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:19:04.081 [DEBUG] [Thread-118119] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:19:04.081 [DEBUG] [Thread-118119] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:19:04.082 [DEBUG] [Thread-118119] [transport.py] [_log()] client lang: <none>
2025-11-03T15:19:04.082 [DEBUG] [Thread-118119] [transport.py] [_log()] server lang: <none>
2025-11-03T15:19:04.082 [DEBUG] [Thread-118119] [transport.py] [_log()] kex follows: False
2025-11-03T15:19:04.082 [DEBUG] [Thread-118119] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:19:04.082 [DEBUG] [Thread-118119] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:19:04.082 [DEBUG] [Thread-118119] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:19:04.091 [DEBUG] [Thread-118119] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:19:04.091 [DEBUG] [Thread-118119] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:19:04.091 [DEBUG] [Thread-118119] [transport.py] [_log()] Compression: none
2025-11-03T15:19:04.092 [DEBUG] [Thread-118119] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:19:04.111 [DEBUG] [Thread-118119] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:19:04.112 [DEBUG] [Thread-118119] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:19:04.112 [DEBUG] [Thread-118119] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:19:04.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:19:04.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:19:04.115 [DEBUG] [Thread-118119] [transport.py] [_log()] userauth is OK
2025-11-03T15:19:04.115 [DEBUG] [Thread-118119] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:19:04.115 [DEBUG] [Thread-118119] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:19:04.115 [DEBUG] [Thread-118119] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:19:04.115 [DEBUG] [Thread-118119] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:19:04.139 [INFO] [Thread-118119] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:19:04.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:19:04.771 [DEBUG] [Thread-118119] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:19:04.771 [DEBUG] [Thread-118119] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:19:04.771 [DEBUG] [Thread-118119] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:19:04.782 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:19:04.792 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:19:04.812 [DEBUG] [Thread-118119] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:19:04.812 [DEBUG] [Thread-118119] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:19:04.815 [DEBUG] [Thread-118119] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:19:04.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:19:04.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:19:04.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:19:04.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:19:04.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:19:04.833 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:19:04.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:19:04.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:19:04.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:19:04.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.554269 -999.00  +26.30  20.50      8   -9.50 1 1 1 1 1   888    0 35.20 -30.20 ----- 21.7 20.5 323.2 34.9 31.0 -31.3 30.6 -30.4 31.8 -30.8 32.1 -30.3
2025-11-03T15:19:04.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:19:04.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:19:04.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.554269
2025-11-03T15:19:04.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:19:04.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:19:04.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:19:04.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:19:04.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:19:04.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:18:47', tmtdew=45.99, humidity=3.95, cloud=0.0, wind=26.47, temperature=26.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:18:08.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:19:04.835 [DEBUG] [Thread-118119] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:19:04.906 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:19:04.928 [DEBUG] [Thread-118122] [transport.py] [_log()] starting thread (client mode): 0x117e8c70
2025-11-03T15:19:04.928 [DEBUG] [Thread-118122] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:19:04.942 [DEBUG] [Thread-118122] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:19:04.942 [INFO] [Thread-118122] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:19:04.950 [DEBUG] [Thread-118122] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:19:04.950 [DEBUG] [Thread-118122] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:19:04.950 [DEBUG] [Thread-118122] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:19:04.950 [DEBUG] [Thread-118122] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:19:04.950 [DEBUG] [Thread-118122] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:19:04.950 [DEBUG] [Thread-118122] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:19:04.950 [DEBUG] [Thread-118122] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:19:04.950 [DEBUG] [Thread-118122] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:19:04.950 [DEBUG] [Thread-118122] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:19:04.950 [DEBUG] [Thread-118122] [transport.py] [_log()] client lang: <none>
2025-11-03T15:19:04.950 [DEBUG] [Thread-118122] [transport.py] [_log()] server lang: <none>
2025-11-03T15:19:04.950 [DEBUG] [Thread-118122] [transport.py] [_log()] kex follows: False
2025-11-03T15:19:04.950 [DEBUG] [Thread-118122] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:19:04.950 [DEBUG] [Thread-118122] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:19:04.950 [DEBUG] [Thread-118122] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:19:04.950 [DEBUG] [Thread-118122] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:19:04.950 [DEBUG] [Thread-118122] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:19:04.950 [DEBUG] [Thread-118122] [transport.py] [_log()] Compression: none
2025-11-03T15:19:04.950 [DEBUG] [Thread-118122] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:19:05.007 [DEBUG] [Thread-118122] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:19:05.007 [DEBUG] [Thread-118122] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:19:05.007 [DEBUG] [Thread-118122] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:19:05.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:19:05.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:19:05.063 [DEBUG] [Thread-118122] [transport.py] [_log()] userauth is OK
2025-11-03T15:19:05.063 [DEBUG] [Thread-118122] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:19:05.063 [DEBUG] [Thread-118122] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:19:05.063 [DEBUG] [Thread-118122] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:19:05.063 [DEBUG] [Thread-118122] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:19:05.077 [INFO] [Thread-118122] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:19:05.077 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:19:05.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:19:05.930 [DEBUG] [Thread-118122] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:19:05.930 [DEBUG] [Thread-118122] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:19:05.984 [DEBUG] [Thread-118122] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:19:05.984 [DEBUG] [Thread-118122] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:19:05.993 [DEBUG] [Thread-118122] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:19:06.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:19:06.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:19:06.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:19:06.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:19:06.020 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:19:06.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:19:06.029 [DEBUG] [Thread-118122] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:19:10.086 [DEBUG] [Thread-118124 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:19:16.334 [DEBUG] [Thread-118125 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:19:25.155 [DEBUG] [Thread-118126 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:19:36.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:19:36.029 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:19:36.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:19:36.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 19, 19), 45.89, 3.99, 0.0, 28.04, 26.72, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:19:36.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:19:19
2025-11-03T15:19:36.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:19:37.040 [DEBUG] [Thread-118127] [transport.py] [_log()] starting thread (client mode): 0xedd5a50
2025-11-03T15:19:37.041 [DEBUG] [Thread-118127] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:19:37.058 [DEBUG] [Thread-118127] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:19:37.058 [INFO] [Thread-118127] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:19:37.061 [DEBUG] [Thread-118127] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:19:37.061 [DEBUG] [Thread-118127] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:19:37.061 [DEBUG] [Thread-118127] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:19:37.061 [DEBUG] [Thread-118127] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:19:37.061 [DEBUG] [Thread-118127] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:19:37.061 [DEBUG] [Thread-118127] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:19:37.061 [DEBUG] [Thread-118127] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:19:37.061 [DEBUG] [Thread-118127] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:19:37.061 [DEBUG] [Thread-118127] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:19:37.061 [DEBUG] [Thread-118127] [transport.py] [_log()] client lang: <none>
2025-11-03T15:19:37.061 [DEBUG] [Thread-118127] [transport.py] [_log()] server lang: <none>
2025-11-03T15:19:37.062 [DEBUG] [Thread-118127] [transport.py] [_log()] kex follows: False
2025-11-03T15:19:37.062 [DEBUG] [Thread-118127] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:19:37.062 [DEBUG] [Thread-118127] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:19:37.062 [DEBUG] [Thread-118127] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:19:37.062 [DEBUG] [Thread-118127] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:19:37.062 [DEBUG] [Thread-118127] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:19:37.062 [DEBUG] [Thread-118127] [transport.py] [_log()] Compression: none
2025-11-03T15:19:37.062 [DEBUG] [Thread-118127] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:19:37.076 [DEBUG] [Thread-118127] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:19:37.076 [DEBUG] [Thread-118127] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:19:37.076 [DEBUG] [Thread-118127] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:19:37.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:19:37.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:19:37.077 [DEBUG] [Thread-118127] [transport.py] [_log()] userauth is OK
2025-11-03T15:19:37.077 [DEBUG] [Thread-118127] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:19:37.077 [DEBUG] [Thread-118127] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:19:37.077 [DEBUG] [Thread-118127] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:19:37.077 [DEBUG] [Thread-118127] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:19:37.086 [INFO] [Thread-118127] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:19:37.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:19:37.668 [DEBUG] [Thread-118127] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:19:37.668 [DEBUG] [Thread-118127] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:19:37.668 [DEBUG] [Thread-118127] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:19:37.708 [DEBUG] [Thread-118127] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:19:37.708 [DEBUG] [Thread-118127] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:19:37.711 [DEBUG] [Thread-118127] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:19:37.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:19:37.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:19:37.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:19:37.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:19:37.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:19:37.730 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:19:37.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:19:37.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:19:37.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:19:37.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.554617 -999.00  +26.90  13.46      8   -9.40 1 1 1 1 1   888    0 35.49 -31.14 ----- 20.7 13.5 357.6 26.1 31.1 -31.3 30.7 -31.0 31.8 -29.4 32.3 -29.7
2025-11-03T15:19:37.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:19:37.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:19:37.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.554617
2025-11-03T15:19:37.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:19:37.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:19:37.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:19:37.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:19:37.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:19:37.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:19:19', tmtdew=45.89, humidity=3.99, cloud=0.0, wind=28.04, temperature=26.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:18:38.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:19:37.731 [DEBUG] [Thread-118127] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:19:37.805 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:19:37.825 [DEBUG] [Thread-118130] [transport.py] [_log()] starting thread (client mode): 0x1174fc40
2025-11-03T15:19:37.825 [DEBUG] [Thread-118130] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:19:37.840 [DEBUG] [Thread-118130] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:19:37.841 [INFO] [Thread-118130] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:19:37.848 [DEBUG] [Thread-118130] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:19:37.848 [DEBUG] [Thread-118130] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:19:37.848 [DEBUG] [Thread-118130] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:19:37.848 [DEBUG] [Thread-118130] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:19:37.848 [DEBUG] [Thread-118130] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:19:37.848 [DEBUG] [Thread-118130] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:19:37.848 [DEBUG] [Thread-118130] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:19:37.848 [DEBUG] [Thread-118130] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:19:37.848 [DEBUG] [Thread-118130] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:19:37.848 [DEBUG] [Thread-118130] [transport.py] [_log()] client lang: <none>
2025-11-03T15:19:37.848 [DEBUG] [Thread-118130] [transport.py] [_log()] server lang: <none>
2025-11-03T15:19:37.848 [DEBUG] [Thread-118130] [transport.py] [_log()] kex follows: False
2025-11-03T15:19:37.848 [DEBUG] [Thread-118130] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:19:37.848 [DEBUG] [Thread-118130] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:19:37.848 [DEBUG] [Thread-118130] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:19:37.848 [DEBUG] [Thread-118130] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:19:37.848 [DEBUG] [Thread-118130] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:19:37.848 [DEBUG] [Thread-118130] [transport.py] [_log()] Compression: none
2025-11-03T15:19:37.849 [DEBUG] [Thread-118130] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:19:37.906 [DEBUG] [Thread-118130] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:19:37.906 [DEBUG] [Thread-118130] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:19:37.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:19:37.906 [DEBUG] [Thread-118130] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:19:37.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:19:37.963 [DEBUG] [Thread-118130] [transport.py] [_log()] userauth is OK
2025-11-03T15:19:37.963 [DEBUG] [Thread-118130] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:19:37.963 [DEBUG] [Thread-118130] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:19:37.963 [DEBUG] [Thread-118130] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:19:37.963 [DEBUG] [Thread-118130] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:19:37.978 [INFO] [Thread-118130] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:19:37.978 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:19:37.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:19:38.829 [DEBUG] [Thread-118130] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:19:38.829 [DEBUG] [Thread-118130] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:19:38.878 [DEBUG] [Thread-118130] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:19:38.878 [DEBUG] [Thread-118130] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:19:38.886 [DEBUG] [Thread-118130] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:19:38.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:19:38.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:19:38.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:19:38.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:19:38.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:19:38.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:19:38.918 [DEBUG] [Thread-118130] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:19:40.195 [DEBUG] [Thread-118132 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:19:55.257 [DEBUG] [Thread-118133 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:20:04.933 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:20:04.935 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:20:08.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:20:08.941 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:20:08.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:20:09.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 19, 52), 46.09, 3.94, 0.0, 20.98, 27.05, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:20:09.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:19:52
2025-11-03T15:20:09.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:20:09.988 [DEBUG] [Thread-118134] [transport.py] [_log()] starting thread (client mode): 0x117bffa0
2025-11-03T15:20:09.989 [DEBUG] [Thread-118134] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:20:10.008 [DEBUG] [Thread-118134] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:20:10.008 [INFO] [Thread-118134] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:20:10.009 [DEBUG] [Thread-118134] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:20:10.009 [DEBUG] [Thread-118134] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:20:10.009 [DEBUG] [Thread-118134] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:20:10.009 [DEBUG] [Thread-118134] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:20:10.010 [DEBUG] [Thread-118134] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:20:10.010 [DEBUG] [Thread-118134] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:20:10.010 [DEBUG] [Thread-118134] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:20:10.010 [DEBUG] [Thread-118134] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:20:10.010 [DEBUG] [Thread-118134] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:20:10.010 [DEBUG] [Thread-118134] [transport.py] [_log()] client lang: <none>
2025-11-03T15:20:10.010 [DEBUG] [Thread-118134] [transport.py] [_log()] server lang: <none>
2025-11-03T15:20:10.010 [DEBUG] [Thread-118134] [transport.py] [_log()] kex follows: False
2025-11-03T15:20:10.010 [DEBUG] [Thread-118134] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:20:10.011 [DEBUG] [Thread-118134] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:20:10.011 [DEBUG] [Thread-118134] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:20:10.011 [DEBUG] [Thread-118134] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:20:10.011 [DEBUG] [Thread-118134] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:20:10.011 [DEBUG] [Thread-118134] [transport.py] [_log()] Compression: none
2025-11-03T15:20:10.011 [DEBUG] [Thread-118134] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:20:10.019 [DEBUG] [Thread-118134] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:20:10.020 [DEBUG] [Thread-118134] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:20:10.020 [DEBUG] [Thread-118134] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:20:10.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:20:10.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:20:10.020 [DEBUG] [Thread-118134] [transport.py] [_log()] userauth is OK
2025-11-03T15:20:10.020 [DEBUG] [Thread-118134] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:20:10.020 [DEBUG] [Thread-118134] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:20:10.020 [DEBUG] [Thread-118134] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:20:10.020 [DEBUG] [Thread-118134] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:20:10.030 [INFO] [Thread-118134] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:20:10.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:20:10.305 [DEBUG] [Thread-118136 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:20:15.915 [DEBUG] [Thread-118134] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:20:15.915 [DEBUG] [Thread-118134] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:20:15.915 [DEBUG] [Thread-118134] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:20:15.956 [DEBUG] [Thread-118134] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:20:15.956 [DEBUG] [Thread-118134] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:20:15.958 [DEBUG] [Thread-118134] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:20:15.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:20:15.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:20:15.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:20:15.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:20:15.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:20:15.978 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:20:15.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:20:15.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:20:15.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:20:15.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.555311 -999.00  +26.90  25.20      8   -9.40 1 1 1 1 1   888    0 34.65 -33.55 ----- 25.0 25.2 333.4 37.7 31.1 -31.5 30.7 -30.5 31.9 -29.8 32.5 -30.0
2025-11-03T15:20:15.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:20:15.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:20:15.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.555311
2025-11-03T15:20:15.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:20:15.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:20:15.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:20:15.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:20:15.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:20:15.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:19:52', tmtdew=46.09, humidity=3.94, cloud=0.0, wind=20.98, temperature=27.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:19:38.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:20:15.978 [DEBUG] [Thread-118134] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:20:16.053 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:20:16.077 [DEBUG] [Thread-118138] [transport.py] [_log()] starting thread (client mode): 0xedd5e40
2025-11-03T15:20:16.077 [DEBUG] [Thread-118138] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:20:16.092 [DEBUG] [Thread-118138] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:20:16.092 [INFO] [Thread-118138] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:20:16.102 [DEBUG] [Thread-118138] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:20:16.102 [DEBUG] [Thread-118138] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:20:16.102 [DEBUG] [Thread-118138] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:20:16.103 [DEBUG] [Thread-118138] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:20:16.103 [DEBUG] [Thread-118138] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:20:16.103 [DEBUG] [Thread-118138] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:20:16.103 [DEBUG] [Thread-118138] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:20:16.103 [DEBUG] [Thread-118138] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:20:16.103 [DEBUG] [Thread-118138] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:20:16.103 [DEBUG] [Thread-118138] [transport.py] [_log()] client lang: <none>
2025-11-03T15:20:16.103 [DEBUG] [Thread-118138] [transport.py] [_log()] server lang: <none>
2025-11-03T15:20:16.103 [DEBUG] [Thread-118138] [transport.py] [_log()] kex follows: False
2025-11-03T15:20:16.103 [DEBUG] [Thread-118138] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:20:16.103 [DEBUG] [Thread-118138] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:20:16.103 [DEBUG] [Thread-118138] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:20:16.103 [DEBUG] [Thread-118138] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:20:16.103 [DEBUG] [Thread-118138] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:20:16.103 [DEBUG] [Thread-118138] [transport.py] [_log()] Compression: none
2025-11-03T15:20:16.103 [DEBUG] [Thread-118138] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:20:16.163 [DEBUG] [Thread-118138] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:20:16.164 [DEBUG] [Thread-118138] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:20:16.164 [DEBUG] [Thread-118138] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:20:16.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:20:16.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:20:16.226 [DEBUG] [Thread-118138] [transport.py] [_log()] userauth is OK
2025-11-03T15:20:16.226 [DEBUG] [Thread-118138] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:20:16.226 [DEBUG] [Thread-118138] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:20:16.226 [DEBUG] [Thread-118138] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:20:16.226 [DEBUG] [Thread-118138] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:20:16.246 [INFO] [Thread-118138] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:20:16.246 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:20:16.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:20:16.370 [DEBUG] [Thread-118140 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:20:17.121 [DEBUG] [Thread-118138] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:20:17.121 [DEBUG] [Thread-118138] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:20:17.169 [DEBUG] [Thread-118138] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:20:17.169 [DEBUG] [Thread-118138] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:20:17.178 [DEBUG] [Thread-118138] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:20:17.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:20:17.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:20:17.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:20:17.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:20:17.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:20:17.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:20:17.210 [DEBUG] [Thread-118138] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:20:25.345 [DEBUG] [Thread-118141 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:20:40.404 [DEBUG] [Thread-118142 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:20:47.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:20:47.233 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:20:47.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:20:48.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 20, 24), 46.09, 3.95, 0.0, 16.13, 27.2, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:20:48.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:20:24
2025-11-03T15:20:48.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:20:48.325 [DEBUG] [Thread-118143] [transport.py] [_log()] starting thread (client mode): 0x117ebc10
2025-11-03T15:20:48.325 [DEBUG] [Thread-118143] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:20:48.336 [DEBUG] [Thread-118143] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:20:48.336 [INFO] [Thread-118143] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:20:48.339 [DEBUG] [Thread-118143] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:20:48.340 [DEBUG] [Thread-118143] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:20:48.340 [DEBUG] [Thread-118143] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:20:48.340 [DEBUG] [Thread-118143] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:20:48.340 [DEBUG] [Thread-118143] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:20:48.340 [DEBUG] [Thread-118143] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:20:48.340 [DEBUG] [Thread-118143] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:20:48.340 [DEBUG] [Thread-118143] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:20:48.340 [DEBUG] [Thread-118143] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:20:48.340 [DEBUG] [Thread-118143] [transport.py] [_log()] client lang: <none>
2025-11-03T15:20:48.340 [DEBUG] [Thread-118143] [transport.py] [_log()] server lang: <none>
2025-11-03T15:20:48.340 [DEBUG] [Thread-118143] [transport.py] [_log()] kex follows: False
2025-11-03T15:20:48.340 [DEBUG] [Thread-118143] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:20:48.340 [DEBUG] [Thread-118143] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:20:48.340 [DEBUG] [Thread-118143] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:20:48.340 [DEBUG] [Thread-118143] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:20:48.341 [DEBUG] [Thread-118143] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:20:48.341 [DEBUG] [Thread-118143] [transport.py] [_log()] Compression: none
2025-11-03T15:20:48.341 [DEBUG] [Thread-118143] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:20:48.361 [DEBUG] [Thread-118143] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:20:48.361 [DEBUG] [Thread-118143] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:20:48.362 [DEBUG] [Thread-118143] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:20:48.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:20:48.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:20:48.364 [DEBUG] [Thread-118143] [transport.py] [_log()] userauth is OK
2025-11-03T15:20:48.364 [DEBUG] [Thread-118143] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:20:48.364 [DEBUG] [Thread-118143] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:20:48.364 [DEBUG] [Thread-118143] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:20:48.364 [DEBUG] [Thread-118143] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:20:48.388 [INFO] [Thread-118143] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:20:48.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:20:49.009 [DEBUG] [Thread-118143] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:20:49.009 [DEBUG] [Thread-118143] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:20:49.009 [DEBUG] [Thread-118143] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:20:49.050 [DEBUG] [Thread-118143] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:20:49.050 [DEBUG] [Thread-118143] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:20:49.052 [DEBUG] [Thread-118143] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:20:49.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:20:49.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:20:49.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:20:49.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:20:49.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:20:49.073 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:20:49.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:20:49.074 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:20:49.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:20:49.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.555658 -999.00  +26.50  30.87      8   -9.80 1 1 2 1 1   888    0 35.73 -31.95 ----- 34.6 30.9 325.2 47.5 31.1 -31.6 30.6 -30.9 31.9 -31.2 32.5 -31.0
2025-11-03T15:20:49.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:20:49.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:20:49.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.555658
2025-11-03T15:20:49.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:20:49.076 [DEBUG] [Thread-118143] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:20:49.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:20:49.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:20:49.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:20:49.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:20:49.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:20:24', tmtdew=46.09, humidity=3.95, cloud=0.0, wind=16.13, temperature=27.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:20:08.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:20:49.161 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:20:49.183 [DEBUG] [Thread-118146] [transport.py] [_log()] starting thread (client mode): 0x11781480
2025-11-03T15:20:49.183 [DEBUG] [Thread-118146] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:20:49.199 [DEBUG] [Thread-118146] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:20:49.199 [INFO] [Thread-118146] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:20:49.206 [DEBUG] [Thread-118146] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:20:49.206 [DEBUG] [Thread-118146] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:20:49.206 [DEBUG] [Thread-118146] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:20:49.206 [DEBUG] [Thread-118146] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:20:49.207 [DEBUG] [Thread-118146] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:20:49.207 [DEBUG] [Thread-118146] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:20:49.207 [DEBUG] [Thread-118146] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:20:49.207 [DEBUG] [Thread-118146] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:20:49.207 [DEBUG] [Thread-118146] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:20:49.207 [DEBUG] [Thread-118146] [transport.py] [_log()] client lang: <none>
2025-11-03T15:20:49.207 [DEBUG] [Thread-118146] [transport.py] [_log()] server lang: <none>
2025-11-03T15:20:49.207 [DEBUG] [Thread-118146] [transport.py] [_log()] kex follows: False
2025-11-03T15:20:49.207 [DEBUG] [Thread-118146] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:20:49.207 [DEBUG] [Thread-118146] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:20:49.207 [DEBUG] [Thread-118146] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:20:49.207 [DEBUG] [Thread-118146] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:20:49.207 [DEBUG] [Thread-118146] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:20:49.207 [DEBUG] [Thread-118146] [transport.py] [_log()] Compression: none
2025-11-03T15:20:49.208 [DEBUG] [Thread-118146] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:20:49.266 [DEBUG] [Thread-118146] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:20:49.266 [DEBUG] [Thread-118146] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:20:49.267 [DEBUG] [Thread-118146] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:20:49.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:20:49.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:20:49.323 [DEBUG] [Thread-118146] [transport.py] [_log()] userauth is OK
2025-11-03T15:20:49.323 [DEBUG] [Thread-118146] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:20:49.324 [DEBUG] [Thread-118146] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:20:49.324 [DEBUG] [Thread-118146] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:20:49.324 [DEBUG] [Thread-118146] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:20:49.346 [INFO] [Thread-118146] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:20:49.346 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:20:49.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:20:50.216 [DEBUG] [Thread-118146] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:20:50.217 [DEBUG] [Thread-118146] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:20:50.265 [DEBUG] [Thread-118146] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:20:50.266 [DEBUG] [Thread-118146] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:20:50.275 [DEBUG] [Thread-118146] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:20:50.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:20:50.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:20:50.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:20:50.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:20:50.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:20:50.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:20:50.311 [DEBUG] [Thread-118146] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:20:55.443 [DEBUG] [Thread-118148 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:21:05.076 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:21:05.077 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:21:10.498 [DEBUG] [Thread-118149 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:21:16.424 [DEBUG] [Thread-118150 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:21:20.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:21:20.310 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:21:20.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:21:20.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 20, 56), 46.7, 3.85, 0.0, 33.98, 27.18, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:21:20.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:20:56
2025-11-03T15:21:21.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:21:21.257 [DEBUG] [Thread-118151] [transport.py] [_log()] starting thread (client mode): 0x1179ab30
2025-11-03T15:21:21.257 [DEBUG] [Thread-118151] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:21:21.277 [DEBUG] [Thread-118151] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:21:21.277 [INFO] [Thread-118151] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:21:21.280 [DEBUG] [Thread-118151] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:21:21.281 [DEBUG] [Thread-118151] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:21:21.281 [DEBUG] [Thread-118151] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:21:21.281 [DEBUG] [Thread-118151] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:21:21.281 [DEBUG] [Thread-118151] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:21:21.281 [DEBUG] [Thread-118151] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:21:21.281 [DEBUG] [Thread-118151] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:21:21.281 [DEBUG] [Thread-118151] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:21:21.282 [DEBUG] [Thread-118151] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:21:21.282 [DEBUG] [Thread-118151] [transport.py] [_log()] client lang: <none>
2025-11-03T15:21:21.282 [DEBUG] [Thread-118151] [transport.py] [_log()] server lang: <none>
2025-11-03T15:21:21.282 [DEBUG] [Thread-118151] [transport.py] [_log()] kex follows: False
2025-11-03T15:21:21.282 [DEBUG] [Thread-118151] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:21:21.282 [DEBUG] [Thread-118151] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:21:21.282 [DEBUG] [Thread-118151] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:21:21.282 [DEBUG] [Thread-118151] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:21:21.282 [DEBUG] [Thread-118151] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:21:21.283 [DEBUG] [Thread-118151] [transport.py] [_log()] Compression: none
2025-11-03T15:21:21.283 [DEBUG] [Thread-118151] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:21:21.301 [DEBUG] [Thread-118151] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:21:21.301 [DEBUG] [Thread-118151] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:21:21.302 [DEBUG] [Thread-118151] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:21:21.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:21:21.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:21:21.304 [DEBUG] [Thread-118151] [transport.py] [_log()] userauth is OK
2025-11-03T15:21:21.304 [DEBUG] [Thread-118151] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:21:21.304 [DEBUG] [Thread-118151] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:21:21.304 [DEBUG] [Thread-118151] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:21:21.305 [DEBUG] [Thread-118151] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:21:21.341 [INFO] [Thread-118151] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:21:21.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:21:21.952 [DEBUG] [Thread-118151] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:21:21.953 [DEBUG] [Thread-118151] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:21:21.953 [DEBUG] [Thread-118151] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:21:21.994 [DEBUG] [Thread-118151] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:21:21.994 [DEBUG] [Thread-118151] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:21:21.996 [DEBUG] [Thread-118151] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:21:22.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:21:22.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:21:22.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:21:22.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:21:22.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:21:22.016 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:21:22.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:21:22.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:21:22.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:21:22.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.556006 -999.00  +26.20  30.35      8   -9.70 1 1 2 1 1   888    0 35.76 -36.11 ----- 34.3 30.4 329.0 43.4 31.0 -32.0 30.6 -30.9 31.6 -30.4 32.3 -31.1
2025-11-03T15:21:22.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:21:22.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:21:22.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.556006
2025-11-03T15:21:22.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:21:22.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:21:22.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:21:22.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:21:22.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:21:22.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:20:56', tmtdew=46.7, humidity=3.85, cloud=0.0, wind=33.98, temperature=27.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:20:38.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:21:22.019 [DEBUG] [Thread-118151] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:21:22.104 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:21:22.125 [DEBUG] [Thread-118154] [transport.py] [_log()] starting thread (client mode): 0xed4ea10
2025-11-03T15:21:22.125 [DEBUG] [Thread-118154] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:21:22.141 [DEBUG] [Thread-118154] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:21:22.141 [INFO] [Thread-118154] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:21:22.149 [DEBUG] [Thread-118154] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:21:22.149 [DEBUG] [Thread-118154] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:21:22.149 [DEBUG] [Thread-118154] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:21:22.149 [DEBUG] [Thread-118154] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:21:22.149 [DEBUG] [Thread-118154] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:21:22.149 [DEBUG] [Thread-118154] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:21:22.149 [DEBUG] [Thread-118154] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:21:22.150 [DEBUG] [Thread-118154] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:21:22.150 [DEBUG] [Thread-118154] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:21:22.150 [DEBUG] [Thread-118154] [transport.py] [_log()] client lang: <none>
2025-11-03T15:21:22.150 [DEBUG] [Thread-118154] [transport.py] [_log()] server lang: <none>
2025-11-03T15:21:22.150 [DEBUG] [Thread-118154] [transport.py] [_log()] kex follows: False
2025-11-03T15:21:22.150 [DEBUG] [Thread-118154] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:21:22.150 [DEBUG] [Thread-118154] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:21:22.150 [DEBUG] [Thread-118154] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:21:22.150 [DEBUG] [Thread-118154] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:21:22.151 [DEBUG] [Thread-118154] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:21:22.151 [DEBUG] [Thread-118154] [transport.py] [_log()] Compression: none
2025-11-03T15:21:22.151 [DEBUG] [Thread-118154] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:21:22.207 [DEBUG] [Thread-118154] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:21:22.208 [DEBUG] [Thread-118154] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:21:22.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:21:22.209 [DEBUG] [Thread-118154] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:21:22.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:21:22.265 [DEBUG] [Thread-118154] [transport.py] [_log()] userauth is OK
2025-11-03T15:21:22.265 [DEBUG] [Thread-118154] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:21:22.265 [DEBUG] [Thread-118154] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:21:22.265 [DEBUG] [Thread-118154] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:21:22.265 [DEBUG] [Thread-118154] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:21:22.284 [INFO] [Thread-118154] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:21:22.284 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:21:22.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:21:23.115 [DEBUG] [Thread-118154] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:21:23.115 [DEBUG] [Thread-118154] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:21:23.164 [DEBUG] [Thread-118154] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:21:23.164 [DEBUG] [Thread-118154] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:21:23.172 [DEBUG] [Thread-118154] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:21:23.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:21:23.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:21:23.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:21:23.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:21:23.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:21:23.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:21:23.208 [DEBUG] [Thread-118154] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:21:25.553 [DEBUG] [Thread-118156 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:21:40.615 [DEBUG] [Thread-118157 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:21:53.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:21:53.206 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:21:53.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:21:53.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 21, 29), 46.4, 3.92, 0.0, 32.91, 26.87, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:21:53.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:21:29
2025-11-03T15:21:54.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:21:54.201 [DEBUG] [Thread-118158] [transport.py] [_log()] starting thread (client mode): 0x1174c8e0
2025-11-03T15:21:54.201 [DEBUG] [Thread-118158] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:21:54.221 [DEBUG] [Thread-118158] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:21:54.222 [INFO] [Thread-118158] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:21:54.225 [DEBUG] [Thread-118158] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:21:54.225 [DEBUG] [Thread-118158] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:21:54.225 [DEBUG] [Thread-118158] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:21:54.225 [DEBUG] [Thread-118158] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:21:54.225 [DEBUG] [Thread-118158] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:21:54.225 [DEBUG] [Thread-118158] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:21:54.225 [DEBUG] [Thread-118158] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:21:54.225 [DEBUG] [Thread-118158] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:21:54.225 [DEBUG] [Thread-118158] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:21:54.225 [DEBUG] [Thread-118158] [transport.py] [_log()] client lang: <none>
2025-11-03T15:21:54.225 [DEBUG] [Thread-118158] [transport.py] [_log()] server lang: <none>
2025-11-03T15:21:54.225 [DEBUG] [Thread-118158] [transport.py] [_log()] kex follows: False
2025-11-03T15:21:54.225 [DEBUG] [Thread-118158] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:21:54.226 [DEBUG] [Thread-118158] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:21:54.226 [DEBUG] [Thread-118158] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:21:54.226 [DEBUG] [Thread-118158] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:21:54.226 [DEBUG] [Thread-118158] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:21:54.226 [DEBUG] [Thread-118158] [transport.py] [_log()] Compression: none
2025-11-03T15:21:54.226 [DEBUG] [Thread-118158] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:21:54.244 [DEBUG] [Thread-118158] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:21:54.244 [DEBUG] [Thread-118158] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:21:54.245 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:21:54.245 [DEBUG] [Thread-118158] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:21:54.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:21:54.248 [DEBUG] [Thread-118158] [transport.py] [_log()] userauth is OK
2025-11-03T15:21:54.248 [DEBUG] [Thread-118158] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:21:54.249 [DEBUG] [Thread-118158] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:21:54.249 [DEBUG] [Thread-118158] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:21:54.249 [DEBUG] [Thread-118158] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:21:54.273 [INFO] [Thread-118158] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:21:54.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:21:54.879 [DEBUG] [Thread-118158] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:21:54.879 [DEBUG] [Thread-118158] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:21:54.879 [DEBUG] [Thread-118158] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:21:54.920 [DEBUG] [Thread-118158] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:21:54.920 [DEBUG] [Thread-118158] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:21:54.924 [DEBUG] [Thread-118158] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:21:54.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:21:54.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:21:54.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:21:54.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:21:54.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:21:54.955 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:21:54.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:21:54.956 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:21:54.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:21:54.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.556353 -999.00  +26.20  42.96      8   -9.90 1 1 2 1 1   888    0 35.55 -33.26 ----- 40.5 43.0 331.6 57.7 31.0 -33.0 30.5 -32.2 31.8 -30.8 32.4 -30.5
2025-11-03T15:21:54.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:21:54.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:21:54.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.556353
2025-11-03T15:21:54.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:21:54.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:21:54.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:21:54.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:21:54.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:21:54.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:21:29', tmtdew=46.4, humidity=3.92, cloud=0.0, wind=32.91, temperature=26.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:21:08.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:21:54.959 [DEBUG] [Thread-118158] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:21:55.043 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:21:55.062 [DEBUG] [Thread-118161] [transport.py] [_log()] starting thread (client mode): 0x1174f6d0
2025-11-03T15:21:55.062 [DEBUG] [Thread-118161] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:21:55.077 [DEBUG] [Thread-118161] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:21:55.077 [INFO] [Thread-118161] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:21:55.085 [DEBUG] [Thread-118161] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:21:55.085 [DEBUG] [Thread-118161] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:21:55.085 [DEBUG] [Thread-118161] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:21:55.085 [DEBUG] [Thread-118161] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:21:55.085 [DEBUG] [Thread-118161] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:21:55.085 [DEBUG] [Thread-118161] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:21:55.085 [DEBUG] [Thread-118161] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:21:55.085 [DEBUG] [Thread-118161] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:21:55.085 [DEBUG] [Thread-118161] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:21:55.085 [DEBUG] [Thread-118161] [transport.py] [_log()] client lang: <none>
2025-11-03T15:21:55.085 [DEBUG] [Thread-118161] [transport.py] [_log()] server lang: <none>
2025-11-03T15:21:55.085 [DEBUG] [Thread-118161] [transport.py] [_log()] kex follows: False
2025-11-03T15:21:55.085 [DEBUG] [Thread-118161] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:21:55.086 [DEBUG] [Thread-118161] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:21:55.086 [DEBUG] [Thread-118161] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:21:55.086 [DEBUG] [Thread-118161] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:21:55.086 [DEBUG] [Thread-118161] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:21:55.086 [DEBUG] [Thread-118161] [transport.py] [_log()] Compression: none
2025-11-03T15:21:55.086 [DEBUG] [Thread-118161] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:21:55.144 [DEBUG] [Thread-118161] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:21:55.144 [DEBUG] [Thread-118161] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:21:55.145 [DEBUG] [Thread-118161] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:21:55.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:21:55.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:21:55.199 [DEBUG] [Thread-118161] [transport.py] [_log()] userauth is OK
2025-11-03T15:21:55.200 [DEBUG] [Thread-118161] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:21:55.200 [DEBUG] [Thread-118161] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:21:55.200 [DEBUG] [Thread-118161] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:21:55.200 [DEBUG] [Thread-118161] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:21:55.227 [INFO] [Thread-118161] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:21:55.228 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:21:55.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:21:55.662 [DEBUG] [Thread-118163 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:21:56.074 [DEBUG] [Thread-118161] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:21:56.074 [DEBUG] [Thread-118161] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:21:56.122 [DEBUG] [Thread-118161] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:21:56.122 [DEBUG] [Thread-118161] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:21:56.132 [DEBUG] [Thread-118161] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:21:56.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:21:56.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:21:56.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:21:56.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:21:56.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:21:56.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:21:56.169 [DEBUG] [Thread-118161] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:22:05.219 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:22:05.220 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:22:10.740 [DEBUG] [Thread-118164 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:22:16.481 [DEBUG] [Thread-118165 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:22:25.781 [DEBUG] [Thread-118166 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:22:26.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:22:26.166 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:22:26.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:22:26.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 22, 1), 46.33, 3.92, 0.0, 26.91, 26.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:22:26.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:22:01
2025-11-03T15:22:27.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:22:27.218 [DEBUG] [Thread-118167] [transport.py] [_log()] starting thread (client mode): 0x117993f0
2025-11-03T15:22:27.218 [DEBUG] [Thread-118167] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:22:27.238 [DEBUG] [Thread-118167] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:22:27.239 [INFO] [Thread-118167] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:22:27.242 [DEBUG] [Thread-118167] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:22:27.242 [DEBUG] [Thread-118167] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:22:27.242 [DEBUG] [Thread-118167] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:22:27.242 [DEBUG] [Thread-118167] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:22:27.242 [DEBUG] [Thread-118167] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:22:27.242 [DEBUG] [Thread-118167] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:22:27.242 [DEBUG] [Thread-118167] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:22:27.242 [DEBUG] [Thread-118167] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:22:27.242 [DEBUG] [Thread-118167] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:22:27.242 [DEBUG] [Thread-118167] [transport.py] [_log()] client lang: <none>
2025-11-03T15:22:27.242 [DEBUG] [Thread-118167] [transport.py] [_log()] server lang: <none>
2025-11-03T15:22:27.242 [DEBUG] [Thread-118167] [transport.py] [_log()] kex follows: False
2025-11-03T15:22:27.242 [DEBUG] [Thread-118167] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:22:27.242 [DEBUG] [Thread-118167] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:22:27.242 [DEBUG] [Thread-118167] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:22:27.243 [DEBUG] [Thread-118167] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:22:27.243 [DEBUG] [Thread-118167] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:22:27.243 [DEBUG] [Thread-118167] [transport.py] [_log()] Compression: none
2025-11-03T15:22:27.243 [DEBUG] [Thread-118167] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:22:27.262 [DEBUG] [Thread-118167] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:22:27.263 [DEBUG] [Thread-118167] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:22:27.263 [DEBUG] [Thread-118167] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:22:27.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:22:27.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:22:27.265 [DEBUG] [Thread-118167] [transport.py] [_log()] userauth is OK
2025-11-03T15:22:27.266 [DEBUG] [Thread-118167] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:22:27.266 [DEBUG] [Thread-118167] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:22:27.266 [DEBUG] [Thread-118167] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:22:27.266 [DEBUG] [Thread-118167] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:22:27.280 [INFO] [Thread-118167] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:22:27.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:22:27.932 [DEBUG] [Thread-118167] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:22:27.933 [DEBUG] [Thread-118167] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:22:27.933 [DEBUG] [Thread-118167] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:22:27.974 [DEBUG] [Thread-118167] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:22:27.974 [DEBUG] [Thread-118167] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:22:27.977 [DEBUG] [Thread-118167] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:22:27.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:22:27.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:22:27.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:22:27.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:22:27.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:22:27.993 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:22:27.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:22:27.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:22:27.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:22:27.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.556700 -999.00  +25.50  28.01      8   -9.90 1 1 1 1 1   888    0 36.15 -36.79 ----- 25.7 28.0 333.2 42.8 30.9 -31.8 30.4 -31.1 31.7 -30.7 32.2 -31.1
2025-11-03T15:22:27.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:22:27.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:22:27.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.556700
2025-11-03T15:22:27.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:22:27.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:22:27.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:22:27.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:22:27.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:22:27.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:22:01', tmtdew=46.33, humidity=3.92, cloud=0.0, wind=26.91, temperature=26.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:21:38.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:22:27.996 [DEBUG] [Thread-118167] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:22:28.080 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:22:40.821 [DEBUG] [Thread-118170 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:22:55.874 [DEBUG] [Thread-118171 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:23:05.362 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:23:05.372 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:23:10.909 [DEBUG] [Thread-118172 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:23:16.541 [DEBUG] [Thread-118173 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:23:25.952 [DEBUG] [Thread-118174 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:23:40.994 [DEBUG] [Thread-118175 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:23:56.033 [DEBUG] [Thread-118176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:24:05.513 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:24:05.514 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:24:11.073 [DEBUG] [Thread-118177 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:24:16.602 [DEBUG] [Thread-118178 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:24:26.122 [DEBUG] [Thread-118179 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:24:41.170 [DEBUG] [Thread-118180 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:24:41.451 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T15:24:56.218 [DEBUG] [Thread-118181 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:25:05.654 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:25:05.654 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:25:11.260 [DEBUG] [Thread-118182 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:25:11.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:25:11.497 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:25:11.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:25:12.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 24, 42), 45.54, 4.02, 0.0, 26.33, 26.34, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:25:12.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:24:42
2025-11-03T15:25:12.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:25:12.525 [DEBUG] [Thread-118183] [transport.py] [_log()] starting thread (client mode): 0x117be3e0
2025-11-03T15:25:12.526 [DEBUG] [Thread-118183] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:25:12.532 [DEBUG] [Thread-118183] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:25:12.532 [INFO] [Thread-118183] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:25:12.536 [DEBUG] [Thread-118183] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:25:12.536 [DEBUG] [Thread-118183] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:25:12.536 [DEBUG] [Thread-118183] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:25:12.536 [DEBUG] [Thread-118183] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:25:12.536 [DEBUG] [Thread-118183] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:25:12.536 [DEBUG] [Thread-118183] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:25:12.536 [DEBUG] [Thread-118183] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:25:12.536 [DEBUG] [Thread-118183] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:25:12.536 [DEBUG] [Thread-118183] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:25:12.536 [DEBUG] [Thread-118183] [transport.py] [_log()] client lang: <none>
2025-11-03T15:25:12.536 [DEBUG] [Thread-118183] [transport.py] [_log()] server lang: <none>
2025-11-03T15:25:12.536 [DEBUG] [Thread-118183] [transport.py] [_log()] kex follows: False
2025-11-03T15:25:12.536 [DEBUG] [Thread-118183] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:25:12.537 [DEBUG] [Thread-118183] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:25:12.537 [DEBUG] [Thread-118183] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:25:12.537 [DEBUG] [Thread-118183] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:25:12.537 [DEBUG] [Thread-118183] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:25:12.537 [DEBUG] [Thread-118183] [transport.py] [_log()] Compression: none
2025-11-03T15:25:12.537 [DEBUG] [Thread-118183] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:25:12.567 [DEBUG] [Thread-118183] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:25:12.570 [DEBUG] [Thread-118183] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:25:12.571 [DEBUG] [Thread-118183] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:25:12.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:25:12.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:25:12.574 [DEBUG] [Thread-118183] [transport.py] [_log()] userauth is OK
2025-11-03T15:25:12.574 [DEBUG] [Thread-118183] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:25:12.575 [DEBUG] [Thread-118183] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:25:12.575 [DEBUG] [Thread-118183] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:25:12.575 [DEBUG] [Thread-118183] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:25:12.604 [INFO] [Thread-118183] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:25:12.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:25:16.687 [DEBUG] [Thread-118185 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:25:18.276 [DEBUG] [Thread-118183] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:25:18.276 [DEBUG] [Thread-118183] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:25:18.287 [DEBUG] [Thread-118183] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:25:18.317 [DEBUG] [Thread-118183] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:25:18.318 [DEBUG] [Thread-118183] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:25:18.321 [DEBUG] [Thread-118183] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:25:18.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:25:18.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:25:18.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:25:18.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:25:18.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:25:18.404 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:25:18.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:25:18.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:25:18.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:25:18.406 [WARNING] [poll_weather_worker] [driver.py] [poll_weather_state()] Unable to get atlas cloud data: list index out of range
2025-11-03T15:25:18.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:24:42', tmtdew=45.54, humidity=4.02, cloud=0.0, wind=26.33, temperature=26.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp=None, atlas_cloud=None, atlas_rain=None, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:25:18.408 [DEBUG] [Thread-118183] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:25:18.505 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:25:18.537 [DEBUG] [Thread-118187] [transport.py] [_log()] starting thread (client mode): 0xeda2e90
2025-11-03T15:25:18.538 [DEBUG] [Thread-118187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:25:18.544 [DEBUG] [Thread-118187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:25:18.544 [INFO] [Thread-118187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:25:18.552 [DEBUG] [Thread-118187] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:25:18.553 [DEBUG] [Thread-118187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:25:18.553 [DEBUG] [Thread-118187] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:25:18.553 [DEBUG] [Thread-118187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:25:18.554 [DEBUG] [Thread-118187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:25:18.554 [DEBUG] [Thread-118187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:25:18.554 [DEBUG] [Thread-118187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:25:18.554 [DEBUG] [Thread-118187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:25:18.554 [DEBUG] [Thread-118187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:25:18.554 [DEBUG] [Thread-118187] [transport.py] [_log()] client lang: <none>
2025-11-03T15:25:18.554 [DEBUG] [Thread-118187] [transport.py] [_log()] server lang: <none>
2025-11-03T15:25:18.554 [DEBUG] [Thread-118187] [transport.py] [_log()] kex follows: False
2025-11-03T15:25:18.554 [DEBUG] [Thread-118187] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:25:18.555 [DEBUG] [Thread-118187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:25:18.555 [DEBUG] [Thread-118187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:25:18.555 [DEBUG] [Thread-118187] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:25:18.555 [DEBUG] [Thread-118187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:25:18.555 [DEBUG] [Thread-118187] [transport.py] [_log()] Compression: none
2025-11-03T15:25:18.555 [DEBUG] [Thread-118187] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:25:18.611 [DEBUG] [Thread-118187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:25:18.611 [DEBUG] [Thread-118187] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:25:18.611 [DEBUG] [Thread-118187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:25:18.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:25:18.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:25:18.667 [DEBUG] [Thread-118187] [transport.py] [_log()] userauth is OK
2025-11-03T15:25:18.667 [DEBUG] [Thread-118187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:25:18.667 [DEBUG] [Thread-118187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:25:18.667 [DEBUG] [Thread-118187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:25:18.667 [DEBUG] [Thread-118187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:25:18.681 [INFO] [Thread-118187] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:25:18.681 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:25:18.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:25:19.570 [DEBUG] [Thread-118187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:25:19.570 [DEBUG] [Thread-118187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:25:19.609 [DEBUG] [Thread-118187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:25:19.609 [DEBUG] [Thread-118187] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:25:19.618 [DEBUG] [Thread-118187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:25:19.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:25:19.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:25:19.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:25:19.650 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:25:19.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:25:19.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:25:19.659 [DEBUG] [Thread-118187] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:25:26.301 [DEBUG] [Thread-118189 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:25:41.445 [DEBUG] [Thread-118190 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:25:49.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:25:49.681 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:25:49.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:25:50.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 25, 15), 45.64, 3.99, 0.0, 26.77, 26.34, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:25:50.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:25:15
2025-11-03T15:25:50.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:25:50.707 [DEBUG] [Thread-118191] [transport.py] [_log()] starting thread (client mode): 0x81bb9a0
2025-11-03T15:25:50.707 [DEBUG] [Thread-118191] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:25:50.725 [DEBUG] [Thread-118191] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:25:50.725 [INFO] [Thread-118191] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:25:50.728 [DEBUG] [Thread-118191] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:25:50.728 [DEBUG] [Thread-118191] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:25:50.728 [DEBUG] [Thread-118191] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:25:50.728 [DEBUG] [Thread-118191] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:25:50.728 [DEBUG] [Thread-118191] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:25:50.729 [DEBUG] [Thread-118191] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:25:50.729 [DEBUG] [Thread-118191] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:25:50.729 [DEBUG] [Thread-118191] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:25:50.729 [DEBUG] [Thread-118191] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:25:50.729 [DEBUG] [Thread-118191] [transport.py] [_log()] client lang: <none>
2025-11-03T15:25:50.729 [DEBUG] [Thread-118191] [transport.py] [_log()] server lang: <none>
2025-11-03T15:25:50.729 [DEBUG] [Thread-118191] [transport.py] [_log()] kex follows: False
2025-11-03T15:25:50.729 [DEBUG] [Thread-118191] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:25:50.729 [DEBUG] [Thread-118191] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:25:50.729 [DEBUG] [Thread-118191] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:25:50.729 [DEBUG] [Thread-118191] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:25:50.729 [DEBUG] [Thread-118191] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:25:50.729 [DEBUG] [Thread-118191] [transport.py] [_log()] Compression: none
2025-11-03T15:25:50.729 [DEBUG] [Thread-118191] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:25:50.749 [DEBUG] [Thread-118191] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:25:50.749 [DEBUG] [Thread-118191] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:25:50.750 [DEBUG] [Thread-118191] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:25:50.750 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:25:50.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:25:50.752 [DEBUG] [Thread-118191] [transport.py] [_log()] userauth is OK
2025-11-03T15:25:50.752 [DEBUG] [Thread-118191] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:25:50.752 [DEBUG] [Thread-118191] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:25:50.752 [DEBUG] [Thread-118191] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:25:50.752 [DEBUG] [Thread-118191] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:25:50.777 [INFO] [Thread-118191] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:25:50.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:25:51.383 [DEBUG] [Thread-118191] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:25:51.383 [DEBUG] [Thread-118191] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:25:51.384 [DEBUG] [Thread-118191] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:25:51.424 [DEBUG] [Thread-118191] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:25:51.424 [DEBUG] [Thread-118191] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:25:51.426 [DEBUG] [Thread-118191] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:25:51.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:25:51.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:25:51.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:25:51.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:25:51.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:25:51.441 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:25:51.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:25:51.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:25:51.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:25:51.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.559130 -999.00  +25.50  16.62      8   -9.90 1 1 1 1 1   888    0 34.64 -61.44 ----- 15.8 16.6 2.0 22.6 30.6 -32.1 30.2 -31.7 31.4 -31.1 31.8 -31.3
2025-11-03T15:25:51.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:25:51.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:25:51.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.559130
2025-11-03T15:25:51.449 [DEBUG] [Thread-118191] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:25:51.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:25:51.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:25:51.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:25:51.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:25:51.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:25:51.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:25:15', tmtdew=45.64, humidity=3.99, cloud=0.0, wind=26.77, temperature=26.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:25:08.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:25:51.539 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:25:51.559 [DEBUG] [Thread-118194] [transport.py] [_log()] starting thread (client mode): 0xedd6260
2025-11-03T15:25:51.559 [DEBUG] [Thread-118194] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:25:51.574 [DEBUG] [Thread-118194] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:25:51.575 [INFO] [Thread-118194] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:25:51.582 [DEBUG] [Thread-118194] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:25:51.582 [DEBUG] [Thread-118194] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:25:51.582 [DEBUG] [Thread-118194] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:25:51.583 [DEBUG] [Thread-118194] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:25:51.583 [DEBUG] [Thread-118194] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:25:51.583 [DEBUG] [Thread-118194] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:25:51.583 [DEBUG] [Thread-118194] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:25:51.583 [DEBUG] [Thread-118194] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:25:51.583 [DEBUG] [Thread-118194] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:25:51.583 [DEBUG] [Thread-118194] [transport.py] [_log()] client lang: <none>
2025-11-03T15:25:51.583 [DEBUG] [Thread-118194] [transport.py] [_log()] server lang: <none>
2025-11-03T15:25:51.583 [DEBUG] [Thread-118194] [transport.py] [_log()] kex follows: False
2025-11-03T15:25:51.583 [DEBUG] [Thread-118194] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:25:51.583 [DEBUG] [Thread-118194] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:25:51.583 [DEBUG] [Thread-118194] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:25:51.583 [DEBUG] [Thread-118194] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:25:51.583 [DEBUG] [Thread-118194] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:25:51.583 [DEBUG] [Thread-118194] [transport.py] [_log()] Compression: none
2025-11-03T15:25:51.584 [DEBUG] [Thread-118194] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:25:51.642 [DEBUG] [Thread-118194] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:25:51.643 [DEBUG] [Thread-118194] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:25:51.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:25:51.644 [DEBUG] [Thread-118194] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:25:51.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:25:51.700 [DEBUG] [Thread-118194] [transport.py] [_log()] userauth is OK
2025-11-03T15:25:51.700 [DEBUG] [Thread-118194] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:25:51.701 [DEBUG] [Thread-118194] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:25:51.701 [DEBUG] [Thread-118194] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:25:51.701 [DEBUG] [Thread-118194] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:25:51.719 [INFO] [Thread-118194] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:25:51.729 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:25:51.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:25:52.625 [DEBUG] [Thread-118194] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:25:52.625 [DEBUG] [Thread-118194] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:25:52.672 [DEBUG] [Thread-118194] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:25:52.672 [DEBUG] [Thread-118194] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:25:52.681 [DEBUG] [Thread-118194] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:25:52.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:25:52.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:25:52.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:25:52.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:25:52.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:25:52.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:25:52.722 [DEBUG] [Thread-118194] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:25:56.485 [DEBUG] [Thread-118196 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:26:05.795 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:26:05.796 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:26:11.548 [DEBUG] [Thread-118197 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:26:16.739 [DEBUG] [Thread-118198 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:26:22.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:26:22.745 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:26:22.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:26:23.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 26, 19), 45.46, 4.0, 0.0, 19.64, 26.34, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:26:23.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:26:19
2025-11-03T15:26:23.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:26:23.780 [DEBUG] [Thread-118199] [transport.py] [_log()] starting thread (client mode): 0xeda08e0
2025-11-03T15:26:23.780 [DEBUG] [Thread-118199] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:26:23.793 [DEBUG] [Thread-118199] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:26:23.793 [INFO] [Thread-118199] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:26:23.794 [DEBUG] [Thread-118199] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:26:23.794 [DEBUG] [Thread-118199] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:26:23.794 [DEBUG] [Thread-118199] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:26:23.794 [DEBUG] [Thread-118199] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:26:23.794 [DEBUG] [Thread-118199] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:26:23.794 [DEBUG] [Thread-118199] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:26:23.794 [DEBUG] [Thread-118199] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:26:23.794 [DEBUG] [Thread-118199] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:26:23.794 [DEBUG] [Thread-118199] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:26:23.794 [DEBUG] [Thread-118199] [transport.py] [_log()] client lang: <none>
2025-11-03T15:26:23.794 [DEBUG] [Thread-118199] [transport.py] [_log()] server lang: <none>
2025-11-03T15:26:23.794 [DEBUG] [Thread-118199] [transport.py] [_log()] kex follows: False
2025-11-03T15:26:23.794 [DEBUG] [Thread-118199] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:26:23.794 [DEBUG] [Thread-118199] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:26:23.794 [DEBUG] [Thread-118199] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:26:23.794 [DEBUG] [Thread-118199] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:26:23.794 [DEBUG] [Thread-118199] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:26:23.794 [DEBUG] [Thread-118199] [transport.py] [_log()] Compression: none
2025-11-03T15:26:23.794 [DEBUG] [Thread-118199] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:26:23.802 [DEBUG] [Thread-118199] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:26:23.803 [DEBUG] [Thread-118199] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:26:23.803 [DEBUG] [Thread-118199] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:26:23.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:26:23.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:26:23.804 [DEBUG] [Thread-118199] [transport.py] [_log()] userauth is OK
2025-11-03T15:26:23.804 [DEBUG] [Thread-118199] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:26:23.804 [DEBUG] [Thread-118199] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:26:23.804 [DEBUG] [Thread-118199] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:26:23.804 [DEBUG] [Thread-118199] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:26:23.821 [INFO] [Thread-118199] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:26:23.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:26:24.396 [DEBUG] [Thread-118199] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:26:24.396 [DEBUG] [Thread-118199] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:26:24.397 [DEBUG] [Thread-118199] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:26:24.437 [DEBUG] [Thread-118199] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:26:24.437 [DEBUG] [Thread-118199] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:26:24.440 [DEBUG] [Thread-118199] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:26:24.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:26:24.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:26:24.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:26:24.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:26:24.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:26:24.466 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:26:24.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:26:24.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:26:24.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:26:24.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.559477 -999.00  +25.80  18.52      8   -9.50 1 1 1 1 1   888    0 34.27 -58.31 ----- 18.1 18.5 20.4 28.0 30.6 -31.8 30.2 -32.0 31.4 -30.1 31.6 -31.7
2025-11-03T15:26:24.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:26:24.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:26:24.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.559477
2025-11-03T15:26:24.475 [DEBUG] [Thread-118199] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:26:24.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:26:24.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:26:24.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:26:24.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:26:24.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:26:24.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:26:19', tmtdew=45.46, humidity=4.0, cloud=0.0, wind=19.64, temperature=26.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:25:38.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:26:24.561 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:26:24.584 [DEBUG] [Thread-118202] [transport.py] [_log()] starting thread (client mode): 0x117ea2c0
2025-11-03T15:26:24.584 [DEBUG] [Thread-118202] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:26:24.599 [DEBUG] [Thread-118202] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:26:24.599 [INFO] [Thread-118202] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:26:24.608 [DEBUG] [Thread-118202] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:26:24.608 [DEBUG] [Thread-118202] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:26:24.608 [DEBUG] [Thread-118202] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:26:24.608 [DEBUG] [Thread-118202] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:26:24.608 [DEBUG] [Thread-118202] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:26:24.609 [DEBUG] [Thread-118202] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:26:24.609 [DEBUG] [Thread-118202] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:26:24.609 [DEBUG] [Thread-118202] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:26:24.609 [DEBUG] [Thread-118202] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:26:24.609 [DEBUG] [Thread-118202] [transport.py] [_log()] client lang: <none>
2025-11-03T15:26:24.609 [DEBUG] [Thread-118202] [transport.py] [_log()] server lang: <none>
2025-11-03T15:26:24.609 [DEBUG] [Thread-118202] [transport.py] [_log()] kex follows: False
2025-11-03T15:26:24.609 [DEBUG] [Thread-118202] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:26:24.609 [DEBUG] [Thread-118202] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:26:24.609 [DEBUG] [Thread-118202] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:26:24.609 [DEBUG] [Thread-118202] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:26:24.609 [DEBUG] [Thread-118202] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:26:24.609 [DEBUG] [Thread-118202] [transport.py] [_log()] Compression: none
2025-11-03T15:26:24.609 [DEBUG] [Thread-118202] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:26:24.662 [DEBUG] [Thread-118202] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:26:24.662 [DEBUG] [Thread-118202] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:26:24.662 [DEBUG] [Thread-118202] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:26:24.662 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:26:24.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:26:24.719 [DEBUG] [Thread-118202] [transport.py] [_log()] userauth is OK
2025-11-03T15:26:24.719 [DEBUG] [Thread-118202] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:26:24.719 [DEBUG] [Thread-118202] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:26:24.719 [DEBUG] [Thread-118202] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:26:24.719 [DEBUG] [Thread-118202] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:26:24.733 [INFO] [Thread-118202] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:26:24.733 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:26:24.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:26:25.625 [DEBUG] [Thread-118202] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:26:25.625 [DEBUG] [Thread-118202] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:26:25.673 [DEBUG] [Thread-118202] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:26:25.673 [DEBUG] [Thread-118202] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:26:25.682 [DEBUG] [Thread-118202] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:26:25.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:26:25.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:26:25.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:26:25.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:26:25.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:26:25.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:26:25.719 [DEBUG] [Thread-118202] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:26:26.585 [DEBUG] [Thread-118204 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:26:41.651 [DEBUG] [Thread-118205 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:26:55.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:26:55.725 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:26:55.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:26:56.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 26, 52), 45.31, 4.0, 0.0, 22.95, 26.5, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:26:56.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:26:52
2025-11-03T15:26:56.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:26:56.689 [DEBUG] [Thread-118206 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:26:56.734 [DEBUG] [Thread-118207] [transport.py] [_log()] starting thread (client mode): 0xed4fb50
2025-11-03T15:26:56.734 [DEBUG] [Thread-118207] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:26:56.759 [DEBUG] [Thread-118207] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:26:56.759 [INFO] [Thread-118207] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:26:56.762 [DEBUG] [Thread-118207] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:26:56.763 [DEBUG] [Thread-118207] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:26:56.763 [DEBUG] [Thread-118207] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:26:56.763 [DEBUG] [Thread-118207] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:26:56.763 [DEBUG] [Thread-118207] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:26:56.763 [DEBUG] [Thread-118207] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:26:56.763 [DEBUG] [Thread-118207] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:26:56.764 [DEBUG] [Thread-118207] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:26:56.764 [DEBUG] [Thread-118207] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:26:56.764 [DEBUG] [Thread-118207] [transport.py] [_log()] client lang: <none>
2025-11-03T15:26:56.764 [DEBUG] [Thread-118207] [transport.py] [_log()] server lang: <none>
2025-11-03T15:26:56.764 [DEBUG] [Thread-118207] [transport.py] [_log()] kex follows: False
2025-11-03T15:26:56.764 [DEBUG] [Thread-118207] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:26:56.764 [DEBUG] [Thread-118207] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:26:56.764 [DEBUG] [Thread-118207] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:26:56.765 [DEBUG] [Thread-118207] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:26:56.765 [DEBUG] [Thread-118207] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:26:56.765 [DEBUG] [Thread-118207] [transport.py] [_log()] Compression: none
2025-11-03T15:26:56.765 [DEBUG] [Thread-118207] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:26:56.786 [DEBUG] [Thread-118207] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:26:56.786 [DEBUG] [Thread-118207] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:26:56.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:26:56.787 [DEBUG] [Thread-118207] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:26:56.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:26:56.791 [DEBUG] [Thread-118207] [transport.py] [_log()] userauth is OK
2025-11-03T15:26:56.791 [DEBUG] [Thread-118207] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:26:56.791 [DEBUG] [Thread-118207] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:26:56.791 [DEBUG] [Thread-118207] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:26:56.792 [DEBUG] [Thread-118207] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:26:56.828 [INFO] [Thread-118207] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:26:56.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:26:57.461 [DEBUG] [Thread-118207] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:26:57.461 [DEBUG] [Thread-118207] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:26:57.461 [DEBUG] [Thread-118207] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:26:57.503 [DEBUG] [Thread-118207] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:26:57.503 [DEBUG] [Thread-118207] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:26:57.505 [DEBUG] [Thread-118207] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:26:57.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:26:57.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:26:57.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:26:57.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:26:57.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:26:57.523 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:26:57.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:26:57.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:26:57.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:26:57.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.559825 -999.00  +25.90  13.26      8   -9.80 1 1 1 1 1   888    0 34.23 -62.38 ----- 14.5 13.3 355.3 21.5 30.6 -31.5 30.2 -31.5 31.4 -31.0 31.6 -34.8
2025-11-03T15:26:57.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:26:57.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:26:57.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.559825
2025-11-03T15:26:57.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:26:57.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:26:57.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:26:57.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:26:57.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:26:57.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:26:52', tmtdew=45.31, humidity=4.0, cloud=0.0, wind=22.95, temperature=26.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:26:08.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:26:57.531 [DEBUG] [Thread-118207] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:26:57.604 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:26:57.623 [DEBUG] [Thread-118210] [transport.py] [_log()] starting thread (client mode): 0x1174fa30
2025-11-03T15:26:57.624 [DEBUG] [Thread-118210] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:26:57.638 [DEBUG] [Thread-118210] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:26:57.638 [INFO] [Thread-118210] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:26:57.646 [DEBUG] [Thread-118210] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:26:57.646 [DEBUG] [Thread-118210] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:26:57.646 [DEBUG] [Thread-118210] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:26:57.646 [DEBUG] [Thread-118210] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:26:57.646 [DEBUG] [Thread-118210] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:26:57.646 [DEBUG] [Thread-118210] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:26:57.646 [DEBUG] [Thread-118210] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:26:57.646 [DEBUG] [Thread-118210] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:26:57.646 [DEBUG] [Thread-118210] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:26:57.646 [DEBUG] [Thread-118210] [transport.py] [_log()] client lang: <none>
2025-11-03T15:26:57.646 [DEBUG] [Thread-118210] [transport.py] [_log()] server lang: <none>
2025-11-03T15:26:57.646 [DEBUG] [Thread-118210] [transport.py] [_log()] kex follows: False
2025-11-03T15:26:57.646 [DEBUG] [Thread-118210] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:26:57.646 [DEBUG] [Thread-118210] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:26:57.646 [DEBUG] [Thread-118210] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:26:57.646 [DEBUG] [Thread-118210] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:26:57.646 [DEBUG] [Thread-118210] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:26:57.647 [DEBUG] [Thread-118210] [transport.py] [_log()] Compression: none
2025-11-03T15:26:57.647 [DEBUG] [Thread-118210] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:26:57.702 [DEBUG] [Thread-118210] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:26:57.703 [DEBUG] [Thread-118210] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:26:57.703 [DEBUG] [Thread-118210] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:26:57.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:26:57.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:26:57.759 [DEBUG] [Thread-118210] [transport.py] [_log()] userauth is OK
2025-11-03T15:26:57.759 [DEBUG] [Thread-118210] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:26:57.759 [DEBUG] [Thread-118210] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:26:57.759 [DEBUG] [Thread-118210] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:26:57.759 [DEBUG] [Thread-118210] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:26:57.774 [INFO] [Thread-118210] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:26:57.783 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:26:57.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:26:58.616 [DEBUG] [Thread-118210] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:26:58.617 [DEBUG] [Thread-118210] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:26:58.664 [DEBUG] [Thread-118210] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:26:58.664 [DEBUG] [Thread-118210] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:26:58.673 [DEBUG] [Thread-118210] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:26:58.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:26:58.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:26:58.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:26:58.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:26:58.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:26:58.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:26:58.710 [DEBUG] [Thread-118210] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:27:05.936 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:27:05.938 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:27:11.729 [DEBUG] [Thread-118212 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:27:16.784 [DEBUG] [Thread-118213 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:27:26.794 [DEBUG] [Thread-118214 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:27:28.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:27:28.713 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:27:28.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:27:29.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 27, 24), 45.58, 3.92, 0.0, 22.97, 26.55, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:27:29.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:27:24
2025-11-03T15:27:29.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:27:29.826 [DEBUG] [Thread-118215] [transport.py] [_log()] starting thread (client mode): 0xed4ca90
2025-11-03T15:27:29.826 [DEBUG] [Thread-118215] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:27:29.846 [DEBUG] [Thread-118215] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:27:29.846 [INFO] [Thread-118215] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:27:29.847 [DEBUG] [Thread-118215] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:27:29.847 [DEBUG] [Thread-118215] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:27:29.847 [DEBUG] [Thread-118215] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:27:29.847 [DEBUG] [Thread-118215] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:27:29.847 [DEBUG] [Thread-118215] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:27:29.847 [DEBUG] [Thread-118215] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:27:29.847 [DEBUG] [Thread-118215] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:27:29.847 [DEBUG] [Thread-118215] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:27:29.847 [DEBUG] [Thread-118215] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:27:29.847 [DEBUG] [Thread-118215] [transport.py] [_log()] client lang: <none>
2025-11-03T15:27:29.847 [DEBUG] [Thread-118215] [transport.py] [_log()] server lang: <none>
2025-11-03T15:27:29.847 [DEBUG] [Thread-118215] [transport.py] [_log()] kex follows: False
2025-11-03T15:27:29.847 [DEBUG] [Thread-118215] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:27:29.847 [DEBUG] [Thread-118215] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:27:29.847 [DEBUG] [Thread-118215] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:27:29.847 [DEBUG] [Thread-118215] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:27:29.847 [DEBUG] [Thread-118215] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:27:29.847 [DEBUG] [Thread-118215] [transport.py] [_log()] Compression: none
2025-11-03T15:27:29.847 [DEBUG] [Thread-118215] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:27:29.854 [DEBUG] [Thread-118215] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:27:29.854 [DEBUG] [Thread-118215] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:27:29.854 [DEBUG] [Thread-118215] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:27:29.854 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:27:29.854 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:27:29.855 [DEBUG] [Thread-118215] [transport.py] [_log()] userauth is OK
2025-11-03T15:27:29.855 [DEBUG] [Thread-118215] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:27:29.855 [DEBUG] [Thread-118215] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:27:29.855 [DEBUG] [Thread-118215] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:27:29.855 [DEBUG] [Thread-118215] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:27:29.864 [INFO] [Thread-118215] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:27:29.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:27:30.454 [DEBUG] [Thread-118215] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:27:30.454 [DEBUG] [Thread-118215] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:27:30.454 [DEBUG] [Thread-118215] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:27:30.495 [DEBUG] [Thread-118215] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:27:30.495 [DEBUG] [Thread-118215] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:27:30.497 [DEBUG] [Thread-118215] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:27:30.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:27:30.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:27:30.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:27:30.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:27:30.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:27:30.516 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:27:30.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:27:30.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:27:30.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:27:30.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.560172 -999.00  +26.10  30.30      8   -9.60 1 1 2 1 1   888    0 34.51 -64.06 ----- 28.1 30.3 328.8 33.2 30.6 -31.7 30.2 -30.9 31.5 -30.4 31.8 -30.2
2025-11-03T15:27:30.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:27:30.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:27:30.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.560172
2025-11-03T15:27:30.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:27:30.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:27:30.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:27:30.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:27:30.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:27:30.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:27:24', tmtdew=45.58, humidity=3.92, cloud=0.0, wind=22.97, temperature=26.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:26:38.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:27:30.517 [DEBUG] [Thread-118215] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:27:30.590 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:27:30.613 [DEBUG] [Thread-118218] [transport.py] [_log()] starting thread (client mode): 0xed2ca30
2025-11-03T15:27:30.613 [DEBUG] [Thread-118218] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:27:30.629 [DEBUG] [Thread-118218] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:27:30.629 [INFO] [Thread-118218] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:27:30.637 [DEBUG] [Thread-118218] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:27:30.637 [DEBUG] [Thread-118218] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:27:30.637 [DEBUG] [Thread-118218] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:27:30.637 [DEBUG] [Thread-118218] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:27:30.637 [DEBUG] [Thread-118218] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:27:30.637 [DEBUG] [Thread-118218] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:27:30.637 [DEBUG] [Thread-118218] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:27:30.637 [DEBUG] [Thread-118218] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:27:30.637 [DEBUG] [Thread-118218] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:27:30.637 [DEBUG] [Thread-118218] [transport.py] [_log()] client lang: <none>
2025-11-03T15:27:30.637 [DEBUG] [Thread-118218] [transport.py] [_log()] server lang: <none>
2025-11-03T15:27:30.637 [DEBUG] [Thread-118218] [transport.py] [_log()] kex follows: False
2025-11-03T15:27:30.637 [DEBUG] [Thread-118218] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:27:30.637 [DEBUG] [Thread-118218] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:27:30.637 [DEBUG] [Thread-118218] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:27:30.637 [DEBUG] [Thread-118218] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:27:30.637 [DEBUG] [Thread-118218] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:27:30.637 [DEBUG] [Thread-118218] [transport.py] [_log()] Compression: none
2025-11-03T15:27:30.637 [DEBUG] [Thread-118218] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:27:30.694 [DEBUG] [Thread-118218] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:27:30.694 [DEBUG] [Thread-118218] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:27:30.694 [DEBUG] [Thread-118218] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:27:30.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:27:30.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:27:30.752 [DEBUG] [Thread-118218] [transport.py] [_log()] userauth is OK
2025-11-03T15:27:30.752 [DEBUG] [Thread-118218] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:27:30.752 [DEBUG] [Thread-118218] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:27:30.752 [DEBUG] [Thread-118218] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:27:30.752 [DEBUG] [Thread-118218] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:27:30.766 [INFO] [Thread-118218] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:27:30.766 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:27:30.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:27:31.636 [DEBUG] [Thread-118218] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:27:31.636 [DEBUG] [Thread-118218] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:27:31.687 [DEBUG] [Thread-118218] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:27:31.687 [DEBUG] [Thread-118218] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:27:31.700 [DEBUG] [Thread-118218] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:27:31.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:27:31.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:27:31.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:27:31.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:27:31.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:27:31.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:27:31.740 [DEBUG] [Thread-118218] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:27:41.836 [DEBUG] [Thread-118220 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:27:56.903 [DEBUG] [Thread-118221 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:28:01.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:28:01.763 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:28:01.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:28:02.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 27, 56), 45.87, 3.94, 0.0, 22.36, 27.0, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:28:02.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:27:56
2025-11-03T15:28:02.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:28:02.860 [DEBUG] [Thread-118222] [transport.py] [_log()] starting thread (client mode): 0xeda0a60
2025-11-03T15:28:02.861 [DEBUG] [Thread-118222] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:28:02.881 [DEBUG] [Thread-118222] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:28:02.881 [INFO] [Thread-118222] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:28:02.882 [DEBUG] [Thread-118222] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:28:02.882 [DEBUG] [Thread-118222] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:28:02.882 [DEBUG] [Thread-118222] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:28:02.882 [DEBUG] [Thread-118222] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:28:02.882 [DEBUG] [Thread-118222] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:28:02.882 [DEBUG] [Thread-118222] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:28:02.882 [DEBUG] [Thread-118222] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:28:02.882 [DEBUG] [Thread-118222] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:28:02.882 [DEBUG] [Thread-118222] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:28:02.882 [DEBUG] [Thread-118222] [transport.py] [_log()] client lang: <none>
2025-11-03T15:28:02.882 [DEBUG] [Thread-118222] [transport.py] [_log()] server lang: <none>
2025-11-03T15:28:02.882 [DEBUG] [Thread-118222] [transport.py] [_log()] kex follows: False
2025-11-03T15:28:02.883 [DEBUG] [Thread-118222] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:28:02.883 [DEBUG] [Thread-118222] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:28:02.883 [DEBUG] [Thread-118222] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:28:02.883 [DEBUG] [Thread-118222] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:28:02.883 [DEBUG] [Thread-118222] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:28:02.883 [DEBUG] [Thread-118222] [transport.py] [_log()] Compression: none
2025-11-03T15:28:02.883 [DEBUG] [Thread-118222] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:28:02.891 [DEBUG] [Thread-118222] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:28:02.891 [DEBUG] [Thread-118222] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:28:02.892 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:28:02.892 [DEBUG] [Thread-118222] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:28:02.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:28:02.895 [DEBUG] [Thread-118222] [transport.py] [_log()] userauth is OK
2025-11-03T15:28:02.895 [DEBUG] [Thread-118222] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:28:02.895 [DEBUG] [Thread-118222] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:28:02.895 [DEBUG] [Thread-118222] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:28:02.895 [DEBUG] [Thread-118222] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:28:02.931 [INFO] [Thread-118222] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:28:02.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:28:03.564 [DEBUG] [Thread-118222] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:28:03.573 [DEBUG] [Thread-118222] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:28:03.574 [DEBUG] [Thread-118222] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:28:03.605 [DEBUG] [Thread-118222] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:28:03.605 [DEBUG] [Thread-118222] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:28:03.608 [DEBUG] [Thread-118222] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:28:03.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:28:03.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:28:03.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:28:03.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:28:03.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:28:03.631 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:28:03.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:28:03.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:28:03.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:28:03.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.560519 -999.00  +26.00  25.51      8   -9.70 1 1 1 1 1   888    0 34.47 -71.24 ----- 17.9 25.5 320.0 28.1 30.7 -31.3 30.3 -30.8 31.5 -30.0 31.9 -30.1
2025-11-03T15:28:03.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:28:03.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:28:03.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.560519
2025-11-03T15:28:03.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:28:03.633 [DEBUG] [Thread-118222] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:28:03.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:28:03.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:28:03.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:28:03.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:28:03.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:27:56', tmtdew=45.87, humidity=3.94, cloud=0.0, wind=22.36, temperature=27.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:27:08.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:28:03.731 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:28:03.760 [DEBUG] [Thread-118225] [transport.py] [_log()] starting thread (client mode): 0xeda1cc0
2025-11-03T15:28:03.760 [DEBUG] [Thread-118225] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:28:03.766 [DEBUG] [Thread-118225] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:28:03.766 [INFO] [Thread-118225] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:28:03.774 [DEBUG] [Thread-118225] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:28:03.774 [DEBUG] [Thread-118225] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:28:03.774 [DEBUG] [Thread-118225] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:28:03.774 [DEBUG] [Thread-118225] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:28:03.774 [DEBUG] [Thread-118225] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:28:03.774 [DEBUG] [Thread-118225] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:28:03.774 [DEBUG] [Thread-118225] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:28:03.774 [DEBUG] [Thread-118225] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:28:03.774 [DEBUG] [Thread-118225] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:28:03.774 [DEBUG] [Thread-118225] [transport.py] [_log()] client lang: <none>
2025-11-03T15:28:03.774 [DEBUG] [Thread-118225] [transport.py] [_log()] server lang: <none>
2025-11-03T15:28:03.774 [DEBUG] [Thread-118225] [transport.py] [_log()] kex follows: False
2025-11-03T15:28:03.774 [DEBUG] [Thread-118225] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:28:03.774 [DEBUG] [Thread-118225] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:28:03.774 [DEBUG] [Thread-118225] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:28:03.774 [DEBUG] [Thread-118225] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:28:03.774 [DEBUG] [Thread-118225] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:28:03.774 [DEBUG] [Thread-118225] [transport.py] [_log()] Compression: none
2025-11-03T15:28:03.775 [DEBUG] [Thread-118225] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:28:03.830 [DEBUG] [Thread-118225] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:28:03.830 [DEBUG] [Thread-118225] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:28:03.831 [DEBUG] [Thread-118225] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:28:03.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:28:03.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:28:03.888 [DEBUG] [Thread-118225] [transport.py] [_log()] userauth is OK
2025-11-03T15:28:03.888 [DEBUG] [Thread-118225] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:28:03.888 [DEBUG] [Thread-118225] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:28:03.888 [DEBUG] [Thread-118225] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:28:03.888 [DEBUG] [Thread-118225] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:28:03.911 [INFO] [Thread-118225] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:28:03.911 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:28:03.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:28:04.836 [DEBUG] [Thread-118225] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:28:04.845 [DEBUG] [Thread-118225] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:28:04.886 [DEBUG] [Thread-118225] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:28:04.887 [DEBUG] [Thread-118225] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:28:04.898 [DEBUG] [Thread-118225] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:28:04.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:28:04.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:28:04.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:28:04.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:28:04.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:28:04.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:28:04.937 [DEBUG] [Thread-118225] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:28:06.077 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:28:06.077 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:28:11.938 [DEBUG] [Thread-118227 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:28:16.838 [DEBUG] [Thread-118228 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:28:27.011 [DEBUG] [Thread-118229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:28:34.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:28:34.959 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:28:34.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:28:35.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 28, 29), 45.9, 3.9, 0.0, 12.83, 26.77, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:28:35.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:28:29
2025-11-03T15:28:35.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:28:36.047 [DEBUG] [Thread-118230] [transport.py] [_log()] starting thread (client mode): 0x81bbcd0
2025-11-03T15:28:36.048 [DEBUG] [Thread-118230] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:28:36.058 [DEBUG] [Thread-118230] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:28:36.058 [INFO] [Thread-118230] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:28:36.062 [DEBUG] [Thread-118230] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:28:36.062 [DEBUG] [Thread-118230] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:28:36.062 [DEBUG] [Thread-118230] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:28:36.062 [DEBUG] [Thread-118230] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:28:36.062 [DEBUG] [Thread-118230] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:28:36.062 [DEBUG] [Thread-118230] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:28:36.062 [DEBUG] [Thread-118230] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:28:36.062 [DEBUG] [Thread-118230] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:28:36.062 [DEBUG] [Thread-118230] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:28:36.062 [DEBUG] [Thread-118230] [transport.py] [_log()] client lang: <none>
2025-11-03T15:28:36.062 [DEBUG] [Thread-118230] [transport.py] [_log()] server lang: <none>
2025-11-03T15:28:36.062 [DEBUG] [Thread-118230] [transport.py] [_log()] kex follows: False
2025-11-03T15:28:36.062 [DEBUG] [Thread-118230] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:28:36.062 [DEBUG] [Thread-118230] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:28:36.062 [DEBUG] [Thread-118230] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:28:36.062 [DEBUG] [Thread-118230] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:28:36.062 [DEBUG] [Thread-118230] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:28:36.062 [DEBUG] [Thread-118230] [transport.py] [_log()] Compression: none
2025-11-03T15:28:36.062 [DEBUG] [Thread-118230] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:28:36.077 [DEBUG] [Thread-118230] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:28:36.077 [DEBUG] [Thread-118230] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:28:36.077 [DEBUG] [Thread-118230] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:28:36.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:28:36.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:28:36.078 [DEBUG] [Thread-118230] [transport.py] [_log()] userauth is OK
2025-11-03T15:28:36.078 [DEBUG] [Thread-118230] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:28:36.078 [DEBUG] [Thread-118230] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:28:36.078 [DEBUG] [Thread-118230] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:28:36.078 [DEBUG] [Thread-118230] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:28:36.087 [INFO] [Thread-118230] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:28:36.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:28:36.708 [DEBUG] [Thread-118230] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:28:36.708 [DEBUG] [Thread-118230] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:28:36.708 [DEBUG] [Thread-118230] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:28:36.748 [DEBUG] [Thread-118230] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:28:36.748 [DEBUG] [Thread-118230] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:28:36.751 [DEBUG] [Thread-118230] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:28:36.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:28:36.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:28:36.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:28:36.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:28:36.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:28:36.768 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:28:36.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:28:36.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:28:36.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:28:36.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.560867 -999.00  +26.20  13.94      8   -9.50 1 1 1 1 1   888    0 33.66 -66.82 ----- 24.3 13.9 356.5 28.2 30.6 -32.8 30.2 -32.5 31.5 -30.9 31.9 -32.8
2025-11-03T15:28:36.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:28:36.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:28:36.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.560867
2025-11-03T15:28:36.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:28:36.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:28:36.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:28:36.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:28:36.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:28:36.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:28:29', tmtdew=45.9, humidity=3.9, cloud=0.0, wind=12.83, temperature=26.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:27:38.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:28:36.770 [DEBUG] [Thread-118230] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:28:36.841 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:28:36.861 [DEBUG] [Thread-118233] [transport.py] [_log()] starting thread (client mode): 0xedd7e20
2025-11-03T15:28:36.862 [DEBUG] [Thread-118233] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:28:36.879 [DEBUG] [Thread-118233] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:28:36.879 [INFO] [Thread-118233] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:28:36.889 [DEBUG] [Thread-118233] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:28:36.889 [DEBUG] [Thread-118233] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:28:36.889 [DEBUG] [Thread-118233] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:28:36.890 [DEBUG] [Thread-118233] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:28:36.890 [DEBUG] [Thread-118233] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:28:36.890 [DEBUG] [Thread-118233] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:28:36.890 [DEBUG] [Thread-118233] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:28:36.890 [DEBUG] [Thread-118233] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:28:36.890 [DEBUG] [Thread-118233] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:28:36.890 [DEBUG] [Thread-118233] [transport.py] [_log()] client lang: <none>
2025-11-03T15:28:36.890 [DEBUG] [Thread-118233] [transport.py] [_log()] server lang: <none>
2025-11-03T15:28:36.890 [DEBUG] [Thread-118233] [transport.py] [_log()] kex follows: False
2025-11-03T15:28:36.890 [DEBUG] [Thread-118233] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:28:36.890 [DEBUG] [Thread-118233] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:28:36.890 [DEBUG] [Thread-118233] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:28:36.890 [DEBUG] [Thread-118233] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:28:36.890 [DEBUG] [Thread-118233] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:28:36.891 [DEBUG] [Thread-118233] [transport.py] [_log()] Compression: none
2025-11-03T15:28:36.891 [DEBUG] [Thread-118233] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:28:36.948 [DEBUG] [Thread-118233] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:28:36.949 [DEBUG] [Thread-118233] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:28:36.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:28:36.950 [DEBUG] [Thread-118233] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:28:36.951 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:28:37.010 [DEBUG] [Thread-118233] [transport.py] [_log()] userauth is OK
2025-11-03T15:28:37.010 [DEBUG] [Thread-118233] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:28:37.011 [DEBUG] [Thread-118233] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:28:37.011 [DEBUG] [Thread-118233] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:28:37.011 [DEBUG] [Thread-118233] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:28:37.033 [INFO] [Thread-118233] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:28:37.033 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:28:37.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:28:37.900 [DEBUG] [Thread-118233] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:28:37.901 [DEBUG] [Thread-118233] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:28:37.950 [DEBUG] [Thread-118233] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:28:37.951 [DEBUG] [Thread-118233] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:28:37.961 [DEBUG] [Thread-118233] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:28:37.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:28:37.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:28:37.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:28:38.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:28:38.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:28:38.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:28:38.010 [DEBUG] [Thread-118233] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:28:42.062 [DEBUG] [Thread-118235 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:28:57.129 [DEBUG] [Thread-118236 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:29:06.218 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:29:06.218 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:29:08.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:29:08.032 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:29:08.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:29:08.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 29, 1), 45.53, 4.02, 0.0, 18.02, 26.7, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:29:08.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:29:01
2025-11-03T15:29:08.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:29:09.081 [DEBUG] [Thread-118237] [transport.py] [_log()] starting thread (client mode): 0xed20880
2025-11-03T15:29:09.082 [DEBUG] [Thread-118237] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:29:09.102 [DEBUG] [Thread-118237] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:29:09.102 [INFO] [Thread-118237] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:29:09.105 [DEBUG] [Thread-118237] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:29:09.105 [DEBUG] [Thread-118237] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:29:09.106 [DEBUG] [Thread-118237] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:29:09.106 [DEBUG] [Thread-118237] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:29:09.106 [DEBUG] [Thread-118237] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:29:09.106 [DEBUG] [Thread-118237] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:29:09.106 [DEBUG] [Thread-118237] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:29:09.106 [DEBUG] [Thread-118237] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:29:09.106 [DEBUG] [Thread-118237] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:29:09.107 [DEBUG] [Thread-118237] [transport.py] [_log()] client lang: <none>
2025-11-03T15:29:09.107 [DEBUG] [Thread-118237] [transport.py] [_log()] server lang: <none>
2025-11-03T15:29:09.107 [DEBUG] [Thread-118237] [transport.py] [_log()] kex follows: False
2025-11-03T15:29:09.107 [DEBUG] [Thread-118237] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:29:09.107 [DEBUG] [Thread-118237] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:29:09.107 [DEBUG] [Thread-118237] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:29:09.107 [DEBUG] [Thread-118237] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:29:09.108 [DEBUG] [Thread-118237] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:29:09.108 [DEBUG] [Thread-118237] [transport.py] [_log()] Compression: none
2025-11-03T15:29:09.108 [DEBUG] [Thread-118237] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:29:09.128 [DEBUG] [Thread-118237] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:29:09.129 [DEBUG] [Thread-118237] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:29:09.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:29:09.130 [DEBUG] [Thread-118237] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:29:09.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:29:09.132 [DEBUG] [Thread-118237] [transport.py] [_log()] userauth is OK
2025-11-03T15:29:09.133 [DEBUG] [Thread-118237] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:29:09.133 [DEBUG] [Thread-118237] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:29:09.133 [DEBUG] [Thread-118237] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:29:09.133 [DEBUG] [Thread-118237] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:29:09.167 [INFO] [Thread-118237] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:29:09.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:29:09.790 [DEBUG] [Thread-118237] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:29:09.790 [DEBUG] [Thread-118237] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:29:09.791 [DEBUG] [Thread-118237] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:29:09.831 [DEBUG] [Thread-118237] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:29:09.831 [DEBUG] [Thread-118237] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:29:09.835 [DEBUG] [Thread-118237] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:29:09.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:29:09.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:29:09.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:29:09.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:29:09.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:29:09.858 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:29:09.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:29:09.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:29:09.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:29:09.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.561214 -999.00  +26.00  21.64      8   -9.80 1 1 1 1 1   888    0 34.21 -66.42 ----- 22.3 21.6 34.4 29.3 30.5 -32.2 30.1 -31.9 31.4 -31.3 31.7 -30.7
2025-11-03T15:29:09.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:29:09.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:29:09.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.561214
2025-11-03T15:29:09.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:29:09.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:29:09.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:29:09.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:29:09.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:29:09.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:29:01', tmtdew=45.53, humidity=4.02, cloud=0.0, wind=18.02, temperature=26.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:28:08.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:29:09.861 [DEBUG] [Thread-118237] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:29:09.945 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:29:09.966 [DEBUG] [Thread-118240] [transport.py] [_log()] starting thread (client mode): 0x117bf5e0
2025-11-03T15:29:09.966 [DEBUG] [Thread-118240] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:29:09.982 [DEBUG] [Thread-118240] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:29:09.983 [INFO] [Thread-118240] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:29:09.992 [DEBUG] [Thread-118240] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:29:09.992 [DEBUG] [Thread-118240] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:29:09.992 [DEBUG] [Thread-118240] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:29:09.992 [DEBUG] [Thread-118240] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:29:09.992 [DEBUG] [Thread-118240] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:29:09.992 [DEBUG] [Thread-118240] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:29:09.993 [DEBUG] [Thread-118240] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:29:09.993 [DEBUG] [Thread-118240] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:29:09.993 [DEBUG] [Thread-118240] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:29:09.993 [DEBUG] [Thread-118240] [transport.py] [_log()] client lang: <none>
2025-11-03T15:29:09.993 [DEBUG] [Thread-118240] [transport.py] [_log()] server lang: <none>
2025-11-03T15:29:09.993 [DEBUG] [Thread-118240] [transport.py] [_log()] kex follows: False
2025-11-03T15:29:09.993 [DEBUG] [Thread-118240] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:29:09.993 [DEBUG] [Thread-118240] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:29:09.993 [DEBUG] [Thread-118240] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:29:09.993 [DEBUG] [Thread-118240] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:29:09.993 [DEBUG] [Thread-118240] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:29:09.993 [DEBUG] [Thread-118240] [transport.py] [_log()] Compression: none
2025-11-03T15:29:09.993 [DEBUG] [Thread-118240] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:29:10.047 [DEBUG] [Thread-118240] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:29:10.048 [DEBUG] [Thread-118240] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:29:10.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:29:10.049 [DEBUG] [Thread-118240] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:29:10.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:29:10.108 [DEBUG] [Thread-118240] [transport.py] [_log()] userauth is OK
2025-11-03T15:29:10.108 [DEBUG] [Thread-118240] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:29:10.109 [DEBUG] [Thread-118240] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:29:10.109 [DEBUG] [Thread-118240] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:29:10.109 [DEBUG] [Thread-118240] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:29:10.131 [INFO] [Thread-118240] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:29:10.131 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:29:10.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:29:11.034 [DEBUG] [Thread-118240] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:29:11.034 [DEBUG] [Thread-118240] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:29:11.082 [DEBUG] [Thread-118240] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:29:11.082 [DEBUG] [Thread-118240] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:29:11.092 [DEBUG] [Thread-118240] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:29:11.101 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:29:11.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:29:11.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:29:11.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:29:11.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:29:11.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:29:11.128 [DEBUG] [Thread-118240] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:29:12.169 [DEBUG] [Thread-118242 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:29:16.878 [DEBUG] [Thread-118243 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:29:27.229 [DEBUG] [Thread-118244 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:29:41.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:29:41.138 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:29:41.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:29:41.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 29, 33), 45.66, 4.02, 0.0, 16.45, 26.48, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:29:41.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:29:33
2025-11-03T15:29:41.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:29:42.158 [DEBUG] [Thread-118245] [transport.py] [_log()] starting thread (client mode): 0xed21840
2025-11-03T15:29:42.158 [DEBUG] [Thread-118245] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:29:42.169 [DEBUG] [Thread-118245] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:29:42.169 [INFO] [Thread-118245] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:29:42.172 [DEBUG] [Thread-118245] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:29:42.172 [DEBUG] [Thread-118245] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:29:42.172 [DEBUG] [Thread-118245] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:29:42.172 [DEBUG] [Thread-118245] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:29:42.172 [DEBUG] [Thread-118245] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:29:42.172 [DEBUG] [Thread-118245] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:29:42.172 [DEBUG] [Thread-118245] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:29:42.172 [DEBUG] [Thread-118245] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:29:42.172 [DEBUG] [Thread-118245] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:29:42.173 [DEBUG] [Thread-118245] [transport.py] [_log()] client lang: <none>
2025-11-03T15:29:42.173 [DEBUG] [Thread-118245] [transport.py] [_log()] server lang: <none>
2025-11-03T15:29:42.173 [DEBUG] [Thread-118245] [transport.py] [_log()] kex follows: False
2025-11-03T15:29:42.173 [DEBUG] [Thread-118245] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:29:42.173 [DEBUG] [Thread-118245] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:29:42.173 [DEBUG] [Thread-118245] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:29:42.173 [DEBUG] [Thread-118245] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:29:42.173 [DEBUG] [Thread-118245] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:29:42.173 [DEBUG] [Thread-118245] [transport.py] [_log()] Compression: none
2025-11-03T15:29:42.173 [DEBUG] [Thread-118245] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:29:42.182 [DEBUG] [Thread-118245] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:29:42.183 [DEBUG] [Thread-118245] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:29:42.183 [DEBUG] [Thread-118245] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:29:42.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:29:42.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:29:42.185 [DEBUG] [Thread-118245] [transport.py] [_log()] userauth is OK
2025-11-03T15:29:42.185 [DEBUG] [Thread-118245] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:29:42.185 [DEBUG] [Thread-118245] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:29:42.185 [DEBUG] [Thread-118245] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:29:42.185 [DEBUG] [Thread-118245] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:29:42.201 [INFO] [Thread-118245] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:29:42.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:29:42.268 [DEBUG] [Thread-118247 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:29:42.816 [DEBUG] [Thread-118245] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:29:42.816 [DEBUG] [Thread-118245] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:29:42.817 [DEBUG] [Thread-118245] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:29:42.857 [DEBUG] [Thread-118245] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:29:42.857 [DEBUG] [Thread-118245] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:29:42.861 [DEBUG] [Thread-118245] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:29:42.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:29:42.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:29:42.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:29:42.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:29:42.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:29:42.895 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:29:42.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:29:42.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:29:42.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:29:42.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.561908 -999.00  +25.80   9.31      8   -9.80 1 1 1 1 1   888    0 34.65 -60.27 ----- 11.4 9.3 348.9 24.9 30.6 -31.3 30.2 -30.6 31.3 -30.6 31.8 -30.7
2025-11-03T15:29:42.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:29:42.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:29:42.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.561908
2025-11-03T15:29:42.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:29:42.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:29:42.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:29:42.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:29:42.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:29:42.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:29:33', tmtdew=45.66, humidity=4.02, cloud=0.0, wind=16.45, temperature=26.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:29:08.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:29:42.899 [DEBUG] [Thread-118245] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:29:42.982 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:29:43.002 [DEBUG] [Thread-118249] [transport.py] [_log()] starting thread (client mode): 0xed23ee0
2025-11-03T15:29:43.002 [DEBUG] [Thread-118249] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:29:43.017 [DEBUG] [Thread-118249] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:29:43.018 [INFO] [Thread-118249] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:29:43.028 [DEBUG] [Thread-118249] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:29:43.028 [DEBUG] [Thread-118249] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:29:43.028 [DEBUG] [Thread-118249] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:29:43.028 [DEBUG] [Thread-118249] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:29:43.029 [DEBUG] [Thread-118249] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:29:43.029 [DEBUG] [Thread-118249] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:29:43.029 [DEBUG] [Thread-118249] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:29:43.029 [DEBUG] [Thread-118249] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:29:43.029 [DEBUG] [Thread-118249] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:29:43.029 [DEBUG] [Thread-118249] [transport.py] [_log()] client lang: <none>
2025-11-03T15:29:43.029 [DEBUG] [Thread-118249] [transport.py] [_log()] server lang: <none>
2025-11-03T15:29:43.029 [DEBUG] [Thread-118249] [transport.py] [_log()] kex follows: False
2025-11-03T15:29:43.029 [DEBUG] [Thread-118249] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:29:43.029 [DEBUG] [Thread-118249] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:29:43.029 [DEBUG] [Thread-118249] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:29:43.029 [DEBUG] [Thread-118249] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:29:43.029 [DEBUG] [Thread-118249] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:29:43.029 [DEBUG] [Thread-118249] [transport.py] [_log()] Compression: none
2025-11-03T15:29:43.029 [DEBUG] [Thread-118249] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:29:43.089 [DEBUG] [Thread-118249] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:29:43.090 [DEBUG] [Thread-118249] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:29:43.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:29:43.091 [DEBUG] [Thread-118249] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:29:43.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:29:43.148 [DEBUG] [Thread-118249] [transport.py] [_log()] userauth is OK
2025-11-03T15:29:43.148 [DEBUG] [Thread-118249] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:29:43.148 [DEBUG] [Thread-118249] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:29:43.148 [DEBUG] [Thread-118249] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:29:43.148 [DEBUG] [Thread-118249] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:29:43.168 [INFO] [Thread-118249] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:29:43.168 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:29:43.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:29:44.047 [DEBUG] [Thread-118249] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:29:44.048 [DEBUG] [Thread-118249] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:29:44.096 [DEBUG] [Thread-118249] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:29:44.096 [DEBUG] [Thread-118249] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:29:44.105 [DEBUG] [Thread-118249] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:29:44.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:29:44.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:29:44.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:29:44.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:29:44.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:29:44.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:29:44.147 [DEBUG] [Thread-118249] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:29:57.321 [DEBUG] [Thread-118251 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:30:06.361 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:30:06.362 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:30:12.389 [DEBUG] [Thread-118252 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:30:14.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:30:14.169 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:30:14.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:30:14.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 30, 6), 45.77, 3.99, 0.0, 19.59, 26.53, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:30:14.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:30:06
2025-11-03T15:30:14.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:30:15.124 [DEBUG] [Thread-118253] [transport.py] [_log()] starting thread (client mode): 0xeda0460
2025-11-03T15:30:15.124 [DEBUG] [Thread-118253] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:30:15.143 [DEBUG] [Thread-118253] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:30:15.144 [INFO] [Thread-118253] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:30:15.146 [DEBUG] [Thread-118253] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:30:15.147 [DEBUG] [Thread-118253] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:30:15.147 [DEBUG] [Thread-118253] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:30:15.147 [DEBUG] [Thread-118253] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:30:15.147 [DEBUG] [Thread-118253] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:30:15.147 [DEBUG] [Thread-118253] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:30:15.147 [DEBUG] [Thread-118253] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:30:15.147 [DEBUG] [Thread-118253] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:30:15.147 [DEBUG] [Thread-118253] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:30:15.147 [DEBUG] [Thread-118253] [transport.py] [_log()] client lang: <none>
2025-11-03T15:30:15.147 [DEBUG] [Thread-118253] [transport.py] [_log()] server lang: <none>
2025-11-03T15:30:15.147 [DEBUG] [Thread-118253] [transport.py] [_log()] kex follows: False
2025-11-03T15:30:15.147 [DEBUG] [Thread-118253] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:30:15.147 [DEBUG] [Thread-118253] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:30:15.147 [DEBUG] [Thread-118253] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:30:15.147 [DEBUG] [Thread-118253] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:30:15.148 [DEBUG] [Thread-118253] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:30:15.148 [DEBUG] [Thread-118253] [transport.py] [_log()] Compression: none
2025-11-03T15:30:15.148 [DEBUG] [Thread-118253] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:30:15.166 [DEBUG] [Thread-118253] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:30:15.166 [DEBUG] [Thread-118253] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:30:15.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:30:15.168 [DEBUG] [Thread-118253] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:30:15.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:30:15.170 [DEBUG] [Thread-118253] [transport.py] [_log()] userauth is OK
2025-11-03T15:30:15.170 [DEBUG] [Thread-118253] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:30:15.170 [DEBUG] [Thread-118253] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:30:15.170 [DEBUG] [Thread-118253] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:30:15.170 [DEBUG] [Thread-118253] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:30:15.193 [INFO] [Thread-118253] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:30:15.194 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:30:16.968 [DEBUG] [Thread-118255 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:30:19.245 [DEBUG] [Thread-118253] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:30:19.245 [DEBUG] [Thread-118253] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:30:19.245 [DEBUG] [Thread-118253] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:30:19.287 [DEBUG] [Thread-118253] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:30:19.287 [DEBUG] [Thread-118253] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:30:19.289 [DEBUG] [Thread-118253] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:30:19.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:30:19.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:30:19.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:30:19.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:30:19.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:30:19.313 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:30:19.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:30:19.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:30:19.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:30:19.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.562256 -999.00  +26.20  13.60      9   -9.10 1 1 1 1 1   888    0 34.87 -61.52 ----- 16.6 13.6 316.8 23.3 30.7 -31.3 30.4 -30.3 31.4 -30.1 31.9 -30.2
2025-11-03T15:30:19.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:30:19.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:30:19.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.562256
2025-11-03T15:30:19.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:30:19.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:30:19.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:30:19.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:30:19.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:30:19.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:30:06', tmtdew=45.77, humidity=3.99, cloud=0.0, wind=19.59, temperature=26.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:29:38.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:30:19.314 [DEBUG] [Thread-118253] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:30:19.386 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:30:19.409 [DEBUG] [Thread-118257] [transport.py] [_log()] starting thread (client mode): 0xeda3a60
2025-11-03T15:30:19.409 [DEBUG] [Thread-118257] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:30:19.429 [DEBUG] [Thread-118257] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:30:19.429 [INFO] [Thread-118257] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:30:19.436 [DEBUG] [Thread-118257] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:30:19.436 [DEBUG] [Thread-118257] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:30:19.436 [DEBUG] [Thread-118257] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:30:19.436 [DEBUG] [Thread-118257] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:30:19.436 [DEBUG] [Thread-118257] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:30:19.436 [DEBUG] [Thread-118257] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:30:19.436 [DEBUG] [Thread-118257] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:30:19.436 [DEBUG] [Thread-118257] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:30:19.436 [DEBUG] [Thread-118257] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:30:19.436 [DEBUG] [Thread-118257] [transport.py] [_log()] client lang: <none>
2025-11-03T15:30:19.436 [DEBUG] [Thread-118257] [transport.py] [_log()] server lang: <none>
2025-11-03T15:30:19.437 [DEBUG] [Thread-118257] [transport.py] [_log()] kex follows: False
2025-11-03T15:30:19.437 [DEBUG] [Thread-118257] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:30:19.437 [DEBUG] [Thread-118257] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:30:19.437 [DEBUG] [Thread-118257] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:30:19.437 [DEBUG] [Thread-118257] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:30:19.437 [DEBUG] [Thread-118257] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:30:19.437 [DEBUG] [Thread-118257] [transport.py] [_log()] Compression: none
2025-11-03T15:30:19.437 [DEBUG] [Thread-118257] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:30:19.496 [DEBUG] [Thread-118257] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:30:19.497 [DEBUG] [Thread-118257] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:30:19.497 [DEBUG] [Thread-118257] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:30:19.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:30:19.498 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:30:19.552 [DEBUG] [Thread-118257] [transport.py] [_log()] userauth is OK
2025-11-03T15:30:19.552 [DEBUG] [Thread-118257] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:30:19.552 [DEBUG] [Thread-118257] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:30:19.553 [DEBUG] [Thread-118257] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:30:19.553 [DEBUG] [Thread-118257] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:30:19.572 [INFO] [Thread-118257] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:30:19.572 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:30:19.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:30:20.436 [DEBUG] [Thread-118257] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:30:20.436 [DEBUG] [Thread-118257] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:30:20.484 [DEBUG] [Thread-118257] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:30:20.484 [DEBUG] [Thread-118257] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:30:20.493 [DEBUG] [Thread-118257] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:30:20.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:30:20.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:30:20.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:30:20.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:30:20.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:30:20.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:30:20.525 [DEBUG] [Thread-118257] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:30:27.434 [DEBUG] [Thread-118259 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:30:42.500 [DEBUG] [Thread-118260 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:30:50.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:30:50.548 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:30:50.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:30:51.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 30, 38), 46.16, 3.99, 0.0, 29.55, 26.92, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:30:51.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:30:38
2025-11-03T15:30:51.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:30:51.500 [DEBUG] [Thread-118261] [transport.py] [_log()] starting thread (client mode): 0xed2c5e0
2025-11-03T15:30:51.500 [DEBUG] [Thread-118261] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:30:51.520 [DEBUG] [Thread-118261] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:30:51.520 [INFO] [Thread-118261] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:30:51.523 [DEBUG] [Thread-118261] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:30:51.523 [DEBUG] [Thread-118261] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:30:51.523 [DEBUG] [Thread-118261] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:30:51.523 [DEBUG] [Thread-118261] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:30:51.524 [DEBUG] [Thread-118261] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:30:51.524 [DEBUG] [Thread-118261] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:30:51.524 [DEBUG] [Thread-118261] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:30:51.524 [DEBUG] [Thread-118261] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:30:51.524 [DEBUG] [Thread-118261] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:30:51.524 [DEBUG] [Thread-118261] [transport.py] [_log()] client lang: <none>
2025-11-03T15:30:51.524 [DEBUG] [Thread-118261] [transport.py] [_log()] server lang: <none>
2025-11-03T15:30:51.524 [DEBUG] [Thread-118261] [transport.py] [_log()] kex follows: False
2025-11-03T15:30:51.524 [DEBUG] [Thread-118261] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:30:51.525 [DEBUG] [Thread-118261] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:30:51.525 [DEBUG] [Thread-118261] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:30:51.525 [DEBUG] [Thread-118261] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:30:51.525 [DEBUG] [Thread-118261] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:30:51.525 [DEBUG] [Thread-118261] [transport.py] [_log()] Compression: none
2025-11-03T15:30:51.525 [DEBUG] [Thread-118261] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:30:51.547 [DEBUG] [Thread-118261] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:30:51.548 [DEBUG] [Thread-118261] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:30:51.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:30:51.549 [DEBUG] [Thread-118261] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:30:51.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:30:51.551 [DEBUG] [Thread-118261] [transport.py] [_log()] userauth is OK
2025-11-03T15:30:51.551 [DEBUG] [Thread-118261] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:30:51.551 [DEBUG] [Thread-118261] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:30:51.551 [DEBUG] [Thread-118261] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:30:51.551 [DEBUG] [Thread-118261] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:30:51.578 [INFO] [Thread-118261] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:30:51.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:30:52.171 [DEBUG] [Thread-118261] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:30:52.171 [DEBUG] [Thread-118261] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:30:52.172 [DEBUG] [Thread-118261] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:30:52.212 [DEBUG] [Thread-118261] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:30:52.212 [DEBUG] [Thread-118261] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:30:52.214 [DEBUG] [Thread-118261] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:30:52.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:30:52.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:30:52.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:30:52.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:30:52.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:30:52.233 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:30:52.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:30:52.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:30:52.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:30:52.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.562603 -999.00  +26.80  15.12      8   -9.40 1 1 1 1 1   888    0 35.04 -67.50 ----- 20.1 15.1 319.8 21.9 30.9 -31.1 30.5 -30.3 31.6 -29.6 32.1 -29.8
2025-11-03T15:30:52.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:30:52.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:30:52.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.562603
2025-11-03T15:30:52.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:30:52.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:30:52.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:30:52.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:30:52.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:30:52.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:30:38', tmtdew=46.16, humidity=3.99, cloud=0.0, wind=29.55, temperature=26.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:30:08.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:30:52.235 [DEBUG] [Thread-118261] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:30:52.306 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:30:52.327 [DEBUG] [Thread-118264] [transport.py] [_log()] starting thread (client mode): 0xedd41f0
2025-11-03T15:30:52.327 [DEBUG] [Thread-118264] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:30:52.342 [DEBUG] [Thread-118264] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:30:52.342 [INFO] [Thread-118264] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:30:52.349 [DEBUG] [Thread-118264] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:30:52.349 [DEBUG] [Thread-118264] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:30:52.349 [DEBUG] [Thread-118264] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:30:52.349 [DEBUG] [Thread-118264] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:30:52.349 [DEBUG] [Thread-118264] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:30:52.349 [DEBUG] [Thread-118264] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:30:52.349 [DEBUG] [Thread-118264] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:30:52.349 [DEBUG] [Thread-118264] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:30:52.349 [DEBUG] [Thread-118264] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:30:52.349 [DEBUG] [Thread-118264] [transport.py] [_log()] client lang: <none>
2025-11-03T15:30:52.349 [DEBUG] [Thread-118264] [transport.py] [_log()] server lang: <none>
2025-11-03T15:30:52.349 [DEBUG] [Thread-118264] [transport.py] [_log()] kex follows: False
2025-11-03T15:30:52.349 [DEBUG] [Thread-118264] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:30:52.350 [DEBUG] [Thread-118264] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:30:52.350 [DEBUG] [Thread-118264] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:30:52.350 [DEBUG] [Thread-118264] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:30:52.350 [DEBUG] [Thread-118264] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:30:52.350 [DEBUG] [Thread-118264] [transport.py] [_log()] Compression: none
2025-11-03T15:30:52.350 [DEBUG] [Thread-118264] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:30:52.407 [DEBUG] [Thread-118264] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:30:52.407 [DEBUG] [Thread-118264] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:30:52.408 [DEBUG] [Thread-118264] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:30:52.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:30:52.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:30:52.464 [DEBUG] [Thread-118264] [transport.py] [_log()] userauth is OK
2025-11-03T15:30:52.464 [DEBUG] [Thread-118264] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:30:52.464 [DEBUG] [Thread-118264] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:30:52.465 [DEBUG] [Thread-118264] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:30:52.465 [DEBUG] [Thread-118264] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:30:52.484 [INFO] [Thread-118264] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:30:52.484 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:30:52.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:30:53.405 [DEBUG] [Thread-118264] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:30:53.405 [DEBUG] [Thread-118264] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:30:53.457 [DEBUG] [Thread-118264] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:30:53.457 [DEBUG] [Thread-118264] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:30:53.466 [DEBUG] [Thread-118264] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:30:53.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:30:53.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:30:53.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:30:53.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:30:53.495 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:30:53.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:30:53.506 [DEBUG] [Thread-118264] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:30:57.549 [DEBUG] [Thread-118266 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:31:06.502 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:31:06.503 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:31:12.604 [DEBUG] [Thread-118267 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:31:17.028 [DEBUG] [Thread-118268 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:31:23.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:31:23.526 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:31:23.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:31:24.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 31, 11), 47.01, 3.74, 0.0, 30.56, 27.12, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:31:24.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:31:11
2025-11-03T15:31:24.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:31:24.559 [DEBUG] [Thread-118269] [transport.py] [_log()] starting thread (client mode): 0xed22830
2025-11-03T15:31:24.559 [DEBUG] [Thread-118269] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:31:24.574 [DEBUG] [Thread-118269] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:31:24.574 [INFO] [Thread-118269] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:31:24.576 [DEBUG] [Thread-118269] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:31:24.576 [DEBUG] [Thread-118269] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:31:24.576 [DEBUG] [Thread-118269] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:31:24.576 [DEBUG] [Thread-118269] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:31:24.576 [DEBUG] [Thread-118269] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:31:24.576 [DEBUG] [Thread-118269] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:31:24.576 [DEBUG] [Thread-118269] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:31:24.576 [DEBUG] [Thread-118269] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:31:24.576 [DEBUG] [Thread-118269] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:31:24.576 [DEBUG] [Thread-118269] [transport.py] [_log()] client lang: <none>
2025-11-03T15:31:24.576 [DEBUG] [Thread-118269] [transport.py] [_log()] server lang: <none>
2025-11-03T15:31:24.576 [DEBUG] [Thread-118269] [transport.py] [_log()] kex follows: False
2025-11-03T15:31:24.576 [DEBUG] [Thread-118269] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:31:24.576 [DEBUG] [Thread-118269] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:31:24.576 [DEBUG] [Thread-118269] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:31:24.576 [DEBUG] [Thread-118269] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:31:24.576 [DEBUG] [Thread-118269] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:31:24.576 [DEBUG] [Thread-118269] [transport.py] [_log()] Compression: none
2025-11-03T15:31:24.576 [DEBUG] [Thread-118269] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:31:24.584 [DEBUG] [Thread-118269] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:31:24.584 [DEBUG] [Thread-118269] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:31:24.584 [DEBUG] [Thread-118269] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:31:24.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:31:24.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:31:24.585 [DEBUG] [Thread-118269] [transport.py] [_log()] userauth is OK
2025-11-03T15:31:24.585 [DEBUG] [Thread-118269] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:31:24.585 [DEBUG] [Thread-118269] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:31:24.585 [DEBUG] [Thread-118269] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:31:24.585 [DEBUG] [Thread-118269] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:31:24.596 [INFO] [Thread-118269] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:31:24.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:31:25.191 [DEBUG] [Thread-118269] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:31:25.191 [DEBUG] [Thread-118269] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:31:25.191 [DEBUG] [Thread-118269] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:31:25.232 [DEBUG] [Thread-118269] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:31:25.232 [DEBUG] [Thread-118269] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:31:25.235 [DEBUG] [Thread-118269] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:31:25.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:31:25.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:31:25.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:31:25.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:31:25.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:31:25.252 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:31:25.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:31:25.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:31:25.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:31:25.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.562950 -999.00  +27.50  23.29      8   -9.40 1 1 1 1 1   888    0 34.28 -61.11 ----- 17.2 23.3 310.0 31.5 31.0 -31.7 30.7 -30.4 31.8 -29.1 32.3 -29.9
2025-11-03T15:31:25.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:31:25.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:31:25.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.562950
2025-11-03T15:31:25.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:31:25.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:31:25.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:31:25.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:31:25.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:31:25.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:31:11', tmtdew=47.01, humidity=3.74, cloud=0.0, wind=30.56, temperature=27.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:30:38.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:31:25.253 [DEBUG] [Thread-118269] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:31:25.329 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:31:25.352 [DEBUG] [Thread-118272] [transport.py] [_log()] starting thread (client mode): 0x117bf4c0
2025-11-03T15:31:25.352 [DEBUG] [Thread-118272] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:31:25.371 [DEBUG] [Thread-118272] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:31:25.371 [INFO] [Thread-118272] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:31:25.381 [DEBUG] [Thread-118272] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:31:25.381 [DEBUG] [Thread-118272] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:31:25.381 [DEBUG] [Thread-118272] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:31:25.381 [DEBUG] [Thread-118272] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:31:25.381 [DEBUG] [Thread-118272] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:31:25.381 [DEBUG] [Thread-118272] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:31:25.381 [DEBUG] [Thread-118272] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:31:25.381 [DEBUG] [Thread-118272] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:31:25.381 [DEBUG] [Thread-118272] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:31:25.381 [DEBUG] [Thread-118272] [transport.py] [_log()] client lang: <none>
2025-11-03T15:31:25.381 [DEBUG] [Thread-118272] [transport.py] [_log()] server lang: <none>
2025-11-03T15:31:25.381 [DEBUG] [Thread-118272] [transport.py] [_log()] kex follows: False
2025-11-03T15:31:25.381 [DEBUG] [Thread-118272] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:31:25.382 [DEBUG] [Thread-118272] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:31:25.382 [DEBUG] [Thread-118272] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:31:25.382 [DEBUG] [Thread-118272] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:31:25.382 [DEBUG] [Thread-118272] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:31:25.382 [DEBUG] [Thread-118272] [transport.py] [_log()] Compression: none
2025-11-03T15:31:25.382 [DEBUG] [Thread-118272] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:31:25.442 [DEBUG] [Thread-118272] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:31:25.442 [DEBUG] [Thread-118272] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:31:25.442 [DEBUG] [Thread-118272] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:31:25.442 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:31:25.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:31:25.503 [DEBUG] [Thread-118272] [transport.py] [_log()] userauth is OK
2025-11-03T15:31:25.503 [DEBUG] [Thread-118272] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:31:25.503 [DEBUG] [Thread-118272] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:31:25.503 [DEBUG] [Thread-118272] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:31:25.503 [DEBUG] [Thread-118272] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:31:25.522 [INFO] [Thread-118272] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:31:25.522 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:31:25.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:31:26.351 [DEBUG] [Thread-118272] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:31:26.351 [DEBUG] [Thread-118272] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:31:26.399 [DEBUG] [Thread-118272] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:31:26.400 [DEBUG] [Thread-118272] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:31:26.408 [DEBUG] [Thread-118272] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:31:26.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:31:26.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:31:26.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:31:26.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:31:26.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:31:26.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:31:26.442 [DEBUG] [Thread-118272] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:31:27.638 [DEBUG] [Thread-118274 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:31:42.690 [DEBUG] [Thread-118275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:31:56.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:31:56.437 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:31:56.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:31:57.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 31, 43), 47.64, 3.29, 0.0, 36.95, 27.12, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:31:57.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:31:43
2025-11-03T15:31:57.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:31:57.498 [DEBUG] [Thread-118276] [transport.py] [_log()] starting thread (client mode): 0x117be860
2025-11-03T15:31:57.499 [DEBUG] [Thread-118276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:31:57.518 [DEBUG] [Thread-118276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:31:57.519 [INFO] [Thread-118276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:31:57.522 [DEBUG] [Thread-118276] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:31:57.522 [DEBUG] [Thread-118276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:31:57.522 [DEBUG] [Thread-118276] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:31:57.522 [DEBUG] [Thread-118276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:31:57.523 [DEBUG] [Thread-118276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:31:57.523 [DEBUG] [Thread-118276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:31:57.523 [DEBUG] [Thread-118276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:31:57.523 [DEBUG] [Thread-118276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:31:57.523 [DEBUG] [Thread-118276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:31:57.523 [DEBUG] [Thread-118276] [transport.py] [_log()] client lang: <none>
2025-11-03T15:31:57.523 [DEBUG] [Thread-118276] [transport.py] [_log()] server lang: <none>
2025-11-03T15:31:57.523 [DEBUG] [Thread-118276] [transport.py] [_log()] kex follows: False
2025-11-03T15:31:57.523 [DEBUG] [Thread-118276] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:31:57.523 [DEBUG] [Thread-118276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:31:57.523 [DEBUG] [Thread-118276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:31:57.523 [DEBUG] [Thread-118276] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:31:57.523 [DEBUG] [Thread-118276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:31:57.523 [DEBUG] [Thread-118276] [transport.py] [_log()] Compression: none
2025-11-03T15:31:57.523 [DEBUG] [Thread-118276] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:31:57.542 [DEBUG] [Thread-118276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:31:57.543 [DEBUG] [Thread-118276] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:31:57.544 [DEBUG] [Thread-118276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:31:57.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:31:57.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:31:57.546 [DEBUG] [Thread-118276] [transport.py] [_log()] userauth is OK
2025-11-03T15:31:57.547 [DEBUG] [Thread-118276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:31:57.547 [DEBUG] [Thread-118276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:31:57.547 [DEBUG] [Thread-118276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:31:57.547 [DEBUG] [Thread-118276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:31:57.582 [INFO] [Thread-118276] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:31:57.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:31:57.731 [DEBUG] [Thread-118278 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:31:58.205 [DEBUG] [Thread-118276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:31:58.205 [DEBUG] [Thread-118276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:31:58.205 [DEBUG] [Thread-118276] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:31:58.245 [DEBUG] [Thread-118276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:31:58.246 [DEBUG] [Thread-118276] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:31:58.247 [DEBUG] [Thread-118276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:31:58.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:31:58.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:31:58.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:31:58.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:31:58.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:31:58.265 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:31:58.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:31:58.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:31:58.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:31:58.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.563297 -999.00  +27.70  26.15      7   -9.80 1 1 1 1 1   888    0 34.44 -52.49 ----- 25.5 26.1 299.4 42.3 31.1 -31.5 30.8 -30.7 31.7 -32.8 32.4 -31.4
2025-11-03T15:31:58.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:31:58.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:31:58.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.563297
2025-11-03T15:31:58.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:31:58.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:31:58.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:31:58.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:31:58.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:31:58.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:31:43', tmtdew=47.64, humidity=3.29, cloud=0.0, wind=36.95, temperature=27.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:31:08.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:31:58.267 [DEBUG] [Thread-118276] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:31:58.360 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:31:58.379 [DEBUG] [Thread-118280] [transport.py] [_log()] starting thread (client mode): 0x1179b5b0
2025-11-03T15:31:58.379 [DEBUG] [Thread-118280] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:31:58.394 [DEBUG] [Thread-118280] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:31:58.394 [INFO] [Thread-118280] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:31:58.401 [DEBUG] [Thread-118280] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:31:58.401 [DEBUG] [Thread-118280] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:31:58.401 [DEBUG] [Thread-118280] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:31:58.401 [DEBUG] [Thread-118280] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:31:58.401 [DEBUG] [Thread-118280] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:31:58.401 [DEBUG] [Thread-118280] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:31:58.401 [DEBUG] [Thread-118280] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:31:58.401 [DEBUG] [Thread-118280] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:31:58.401 [DEBUG] [Thread-118280] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:31:58.401 [DEBUG] [Thread-118280] [transport.py] [_log()] client lang: <none>
2025-11-03T15:31:58.401 [DEBUG] [Thread-118280] [transport.py] [_log()] server lang: <none>
2025-11-03T15:31:58.401 [DEBUG] [Thread-118280] [transport.py] [_log()] kex follows: False
2025-11-03T15:31:58.401 [DEBUG] [Thread-118280] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:31:58.401 [DEBUG] [Thread-118280] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:31:58.402 [DEBUG] [Thread-118280] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:31:58.402 [DEBUG] [Thread-118280] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:31:58.402 [DEBUG] [Thread-118280] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:31:58.402 [DEBUG] [Thread-118280] [transport.py] [_log()] Compression: none
2025-11-03T15:31:58.402 [DEBUG] [Thread-118280] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:31:58.458 [DEBUG] [Thread-118280] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:31:58.459 [DEBUG] [Thread-118280] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:31:58.459 [DEBUG] [Thread-118280] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:31:58.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:31:58.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:31:58.515 [DEBUG] [Thread-118280] [transport.py] [_log()] userauth is OK
2025-11-03T15:31:58.515 [DEBUG] [Thread-118280] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:31:58.515 [DEBUG] [Thread-118280] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:31:58.515 [DEBUG] [Thread-118280] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:31:58.515 [DEBUG] [Thread-118280] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:31:58.529 [INFO] [Thread-118280] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:31:58.530 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:31:58.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:31:59.355 [DEBUG] [Thread-118280] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:31:59.355 [DEBUG] [Thread-118280] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:31:59.403 [DEBUG] [Thread-118280] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:31:59.403 [DEBUG] [Thread-118280] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:31:59.412 [DEBUG] [Thread-118280] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:31:59.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:31:59.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:31:59.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:31:59.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:31:59.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:31:59.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:31:59.443 [DEBUG] [Thread-118280] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:32:06.653 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:32:06.653 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:32:12.769 [DEBUG] [Thread-118282 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:32:17.065 [DEBUG] [Thread-118283 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:32:27.848 [DEBUG] [Thread-118284 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:32:29.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:32:29.466 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:32:29.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:32:30.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 32, 15), 47.93, 3.22, 0.0, 39.98, 27.31, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:32:30.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:32:15
2025-11-03T15:32:30.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:32:30.547 [DEBUG] [Thread-118285] [transport.py] [_log()] starting thread (client mode): 0x1179a020
2025-11-03T15:32:30.547 [DEBUG] [Thread-118285] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:32:30.559 [DEBUG] [Thread-118285] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:32:30.559 [INFO] [Thread-118285] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:32:30.560 [DEBUG] [Thread-118285] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:32:30.561 [DEBUG] [Thread-118285] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:32:30.561 [DEBUG] [Thread-118285] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:32:30.561 [DEBUG] [Thread-118285] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:32:30.561 [DEBUG] [Thread-118285] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:32:30.561 [DEBUG] [Thread-118285] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:32:30.561 [DEBUG] [Thread-118285] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:32:30.561 [DEBUG] [Thread-118285] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:32:30.561 [DEBUG] [Thread-118285] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:32:30.561 [DEBUG] [Thread-118285] [transport.py] [_log()] client lang: <none>
2025-11-03T15:32:30.561 [DEBUG] [Thread-118285] [transport.py] [_log()] server lang: <none>
2025-11-03T15:32:30.561 [DEBUG] [Thread-118285] [transport.py] [_log()] kex follows: False
2025-11-03T15:32:30.561 [DEBUG] [Thread-118285] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:32:30.561 [DEBUG] [Thread-118285] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:32:30.562 [DEBUG] [Thread-118285] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:32:30.562 [DEBUG] [Thread-118285] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:32:30.562 [DEBUG] [Thread-118285] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:32:30.562 [DEBUG] [Thread-118285] [transport.py] [_log()] Compression: none
2025-11-03T15:32:30.562 [DEBUG] [Thread-118285] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:32:30.576 [DEBUG] [Thread-118285] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:32:30.576 [DEBUG] [Thread-118285] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:32:30.577 [DEBUG] [Thread-118285] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:32:30.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:32:30.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:32:30.588 [DEBUG] [Thread-118285] [transport.py] [_log()] userauth is OK
2025-11-03T15:32:30.588 [DEBUG] [Thread-118285] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:32:30.588 [DEBUG] [Thread-118285] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:32:30.588 [DEBUG] [Thread-118285] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:32:30.589 [DEBUG] [Thread-118285] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:32:30.614 [INFO] [Thread-118285] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:32:30.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:32:31.199 [DEBUG] [Thread-118285] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:32:31.200 [DEBUG] [Thread-118285] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:32:31.200 [DEBUG] [Thread-118285] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:32:31.241 [DEBUG] [Thread-118285] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:32:31.241 [DEBUG] [Thread-118285] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:32:31.245 [DEBUG] [Thread-118285] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:32:31.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:32:31.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:32:31.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:32:31.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:32:31.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:32:31.270 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:32:31.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:32:31.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:32:31.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:32:31.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.563644 -999.00  +28.10  30.41      7   -9.80 1 1 2 1 1   888    0 35.55 -40.28 ----- 27.7 30.4 286.0 36.9 31.2 -31.1 30.8 -30.4 31.9 -31.1 32.5 -30.4
2025-11-03T15:32:31.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:32:31.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:32:31.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.563644
2025-11-03T15:32:31.279 [DEBUG] [Thread-118285] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:32:31.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:32:31.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:32:31.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:32:31.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:32:31.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:32:31.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:32:15', tmtdew=47.93, humidity=3.22, cloud=0.0, wind=39.98, temperature=27.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:31:38.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:32:31.364 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:32:31.384 [DEBUG] [Thread-118288] [transport.py] [_log()] starting thread (client mode): 0xed23c40
2025-11-03T15:32:31.384 [DEBUG] [Thread-118288] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:32:31.400 [DEBUG] [Thread-118288] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:32:31.400 [INFO] [Thread-118288] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:32:31.408 [DEBUG] [Thread-118288] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:32:31.408 [DEBUG] [Thread-118288] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:32:31.408 [DEBUG] [Thread-118288] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:32:31.408 [DEBUG] [Thread-118288] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:32:31.408 [DEBUG] [Thread-118288] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:32:31.408 [DEBUG] [Thread-118288] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:32:31.408 [DEBUG] [Thread-118288] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:32:31.408 [DEBUG] [Thread-118288] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:32:31.409 [DEBUG] [Thread-118288] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:32:31.409 [DEBUG] [Thread-118288] [transport.py] [_log()] client lang: <none>
2025-11-03T15:32:31.409 [DEBUG] [Thread-118288] [transport.py] [_log()] server lang: <none>
2025-11-03T15:32:31.409 [DEBUG] [Thread-118288] [transport.py] [_log()] kex follows: False
2025-11-03T15:32:31.409 [DEBUG] [Thread-118288] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:32:31.409 [DEBUG] [Thread-118288] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:32:31.409 [DEBUG] [Thread-118288] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:32:31.409 [DEBUG] [Thread-118288] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:32:31.409 [DEBUG] [Thread-118288] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:32:31.409 [DEBUG] [Thread-118288] [transport.py] [_log()] Compression: none
2025-11-03T15:32:31.409 [DEBUG] [Thread-118288] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:32:31.468 [DEBUG] [Thread-118288] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:32:31.469 [DEBUG] [Thread-118288] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:32:31.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:32:31.470 [DEBUG] [Thread-118288] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:32:31.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:32:31.525 [DEBUG] [Thread-118288] [transport.py] [_log()] userauth is OK
2025-11-03T15:32:31.525 [DEBUG] [Thread-118288] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:32:31.525 [DEBUG] [Thread-118288] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:32:31.526 [DEBUG] [Thread-118288] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:32:31.526 [DEBUG] [Thread-118288] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:32:31.545 [INFO] [Thread-118288] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:32:31.545 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:32:31.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:32:32.409 [DEBUG] [Thread-118288] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:32:32.410 [DEBUG] [Thread-118288] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:32:32.458 [DEBUG] [Thread-118288] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:32:32.458 [DEBUG] [Thread-118288] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:32:32.467 [DEBUG] [Thread-118288] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:32:32.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:32:32.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:32:32.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:32:32.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:32:32.495 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:32:32.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:32:32.503 [DEBUG] [Thread-118288] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:32:42.888 [DEBUG] [Thread-118290 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:32:57.947 [DEBUG] [Thread-118291 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:33:02.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:33:02.525 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:33:02.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:33:03.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 32, 48), 48.05, 3.22, 0.0, 34.39, 27.58, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:33:03.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:32:48
2025-11-03T15:33:03.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:33:03.527 [DEBUG] [Thread-118292] [transport.py] [_log()] starting thread (client mode): 0x11781840
2025-11-03T15:33:03.528 [DEBUG] [Thread-118292] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:33:03.539 [DEBUG] [Thread-118292] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:33:03.539 [INFO] [Thread-118292] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:33:03.542 [DEBUG] [Thread-118292] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:33:03.542 [DEBUG] [Thread-118292] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:33:03.543 [DEBUG] [Thread-118292] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:33:03.543 [DEBUG] [Thread-118292] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:33:03.543 [DEBUG] [Thread-118292] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:33:03.543 [DEBUG] [Thread-118292] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:33:03.543 [DEBUG] [Thread-118292] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:33:03.543 [DEBUG] [Thread-118292] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:33:03.543 [DEBUG] [Thread-118292] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:33:03.543 [DEBUG] [Thread-118292] [transport.py] [_log()] client lang: <none>
2025-11-03T15:33:03.544 [DEBUG] [Thread-118292] [transport.py] [_log()] server lang: <none>
2025-11-03T15:33:03.544 [DEBUG] [Thread-118292] [transport.py] [_log()] kex follows: False
2025-11-03T15:33:03.544 [DEBUG] [Thread-118292] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:33:03.544 [DEBUG] [Thread-118292] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:33:03.544 [DEBUG] [Thread-118292] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:33:03.544 [DEBUG] [Thread-118292] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:33:03.544 [DEBUG] [Thread-118292] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:33:03.545 [DEBUG] [Thread-118292] [transport.py] [_log()] Compression: none
2025-11-03T15:33:03.545 [DEBUG] [Thread-118292] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:33:03.565 [DEBUG] [Thread-118292] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:33:03.566 [DEBUG] [Thread-118292] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:33:03.567 [DEBUG] [Thread-118292] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:33:03.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:33:03.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:33:03.609 [DEBUG] [Thread-118292] [transport.py] [_log()] userauth is OK
2025-11-03T15:33:03.609 [DEBUG] [Thread-118292] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:33:03.610 [DEBUG] [Thread-118292] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:33:03.610 [DEBUG] [Thread-118292] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:33:03.610 [DEBUG] [Thread-118292] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:33:03.642 [INFO] [Thread-118292] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:33:03.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:33:04.276 [DEBUG] [Thread-118292] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:33:04.276 [DEBUG] [Thread-118292] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:33:04.276 [DEBUG] [Thread-118292] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:33:04.316 [DEBUG] [Thread-118292] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:33:04.316 [DEBUG] [Thread-118292] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:33:04.319 [DEBUG] [Thread-118292] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:33:04.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:33:04.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:33:04.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:33:04.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:33:04.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:33:04.349 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:33:04.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:33:04.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:33:04.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:33:04.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.563992 -999.00  +28.00  35.19      7   -9.90 1 1 2 1 1   888    0 35.15 -25.42 ----- 35.1 35.2 323.6 48.9 31.1 -33.6 30.9 -32.3 32.0 -30.7 32.6 -31.4
2025-11-03T15:33:04.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:33:04.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:33:04.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.563992
2025-11-03T15:33:04.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:33:04.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:33:04.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:33:04.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:33:04.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:33:04.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:32:48', tmtdew=48.05, humidity=3.22, cloud=0.0, wind=34.39, temperature=27.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:32:08.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:33:04.351 [DEBUG] [Thread-118292] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:33:04.422 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:33:04.443 [DEBUG] [Thread-118295] [transport.py] [_log()] starting thread (client mode): 0xed22ef0
2025-11-03T15:33:04.443 [DEBUG] [Thread-118295] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:33:04.457 [DEBUG] [Thread-118295] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:33:04.457 [INFO] [Thread-118295] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:33:04.465 [DEBUG] [Thread-118295] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:33:04.465 [DEBUG] [Thread-118295] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:33:04.465 [DEBUG] [Thread-118295] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:33:04.465 [DEBUG] [Thread-118295] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:33:04.465 [DEBUG] [Thread-118295] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:33:04.465 [DEBUG] [Thread-118295] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:33:04.465 [DEBUG] [Thread-118295] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:33:04.465 [DEBUG] [Thread-118295] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:33:04.465 [DEBUG] [Thread-118295] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:33:04.465 [DEBUG] [Thread-118295] [transport.py] [_log()] client lang: <none>
2025-11-03T15:33:04.465 [DEBUG] [Thread-118295] [transport.py] [_log()] server lang: <none>
2025-11-03T15:33:04.465 [DEBUG] [Thread-118295] [transport.py] [_log()] kex follows: False
2025-11-03T15:33:04.465 [DEBUG] [Thread-118295] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:33:04.465 [DEBUG] [Thread-118295] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:33:04.465 [DEBUG] [Thread-118295] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:33:04.465 [DEBUG] [Thread-118295] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:33:04.465 [DEBUG] [Thread-118295] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:33:04.465 [DEBUG] [Thread-118295] [transport.py] [_log()] Compression: none
2025-11-03T15:33:04.465 [DEBUG] [Thread-118295] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:33:04.523 [DEBUG] [Thread-118295] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:33:04.523 [DEBUG] [Thread-118295] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:33:04.523 [DEBUG] [Thread-118295] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:33:04.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:33:04.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:33:04.579 [DEBUG] [Thread-118295] [transport.py] [_log()] userauth is OK
2025-11-03T15:33:04.580 [DEBUG] [Thread-118295] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:33:04.580 [DEBUG] [Thread-118295] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:33:04.580 [DEBUG] [Thread-118295] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:33:04.580 [DEBUG] [Thread-118295] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:33:04.594 [INFO] [Thread-118295] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:33:04.594 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:33:04.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:33:05.438 [DEBUG] [Thread-118295] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:33:05.438 [DEBUG] [Thread-118295] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:33:05.486 [DEBUG] [Thread-118295] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:33:05.486 [DEBUG] [Thread-118295] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:33:05.496 [DEBUG] [Thread-118295] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:33:05.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:33:05.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:33:05.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:33:05.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:33:05.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:33:05.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:33:05.532 [DEBUG] [Thread-118295] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:33:06.793 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:33:06.794 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:33:13.002 [DEBUG] [Thread-118297 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:33:17.189 [DEBUG] [Thread-118298 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:33:28.065 [DEBUG] [Thread-118299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:33:35.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:33:35.555 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:33:35.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:33:36.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 33, 20), 47.84, 3.27, 0.0, 37.16, 27.43, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:33:36.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:33:20
2025-11-03T15:33:36.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:33:36.588 [DEBUG] [Thread-118300] [transport.py] [_log()] starting thread (client mode): 0x117be980
2025-11-03T15:33:36.588 [DEBUG] [Thread-118300] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:33:36.608 [DEBUG] [Thread-118300] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:33:36.609 [INFO] [Thread-118300] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:33:36.611 [DEBUG] [Thread-118300] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:33:36.611 [DEBUG] [Thread-118300] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:33:36.611 [DEBUG] [Thread-118300] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:33:36.611 [DEBUG] [Thread-118300] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:33:36.612 [DEBUG] [Thread-118300] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:33:36.612 [DEBUG] [Thread-118300] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:33:36.612 [DEBUG] [Thread-118300] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:33:36.612 [DEBUG] [Thread-118300] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:33:36.612 [DEBUG] [Thread-118300] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:33:36.612 [DEBUG] [Thread-118300] [transport.py] [_log()] client lang: <none>
2025-11-03T15:33:36.612 [DEBUG] [Thread-118300] [transport.py] [_log()] server lang: <none>
2025-11-03T15:33:36.612 [DEBUG] [Thread-118300] [transport.py] [_log()] kex follows: False
2025-11-03T15:33:36.612 [DEBUG] [Thread-118300] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:33:36.612 [DEBUG] [Thread-118300] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:33:36.612 [DEBUG] [Thread-118300] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:33:36.612 [DEBUG] [Thread-118300] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:33:36.612 [DEBUG] [Thread-118300] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:33:36.612 [DEBUG] [Thread-118300] [transport.py] [_log()] Compression: none
2025-11-03T15:33:36.612 [DEBUG] [Thread-118300] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:33:36.631 [DEBUG] [Thread-118300] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:33:36.631 [DEBUG] [Thread-118300] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:33:36.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:33:36.632 [DEBUG] [Thread-118300] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:33:36.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:33:36.635 [DEBUG] [Thread-118300] [transport.py] [_log()] userauth is OK
2025-11-03T15:33:36.635 [DEBUG] [Thread-118300] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:33:36.635 [DEBUG] [Thread-118300] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:33:36.635 [DEBUG] [Thread-118300] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:33:36.636 [DEBUG] [Thread-118300] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:33:36.672 [INFO] [Thread-118300] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:33:36.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:33:37.367 [DEBUG] [Thread-118300] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:33:37.368 [DEBUG] [Thread-118300] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:33:37.368 [DEBUG] [Thread-118300] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:33:37.408 [DEBUG] [Thread-118300] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:33:37.408 [DEBUG] [Thread-118300] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:33:37.412 [DEBUG] [Thread-118300] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:33:37.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:33:37.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:33:37.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:33:37.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:33:37.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:33:37.436 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:33:37.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:33:37.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:33:37.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:33:37.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.564339 -999.00  +27.80  24.85      7   -9.80 1 1 1 1 1   888    0 36.16 -17.06 ----- 28.9 24.9 307.6 39.7 31.1 -32.8 30.9 -31.1 31.8 -32.0 32.5 -30.8
2025-11-03T15:33:37.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:33:37.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:33:37.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.564339
2025-11-03T15:33:37.445 [DEBUG] [Thread-118300] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:33:37.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:33:37.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:33:37.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:33:37.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:33:37.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:33:37.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:33:20', tmtdew=47.84, humidity=3.27, cloud=0.0, wind=37.16, temperature=27.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:32:38.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:33:37.530 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:33:37.555 [DEBUG] [Thread-118303] [transport.py] [_log()] starting thread (client mode): 0x117bd000
2025-11-03T15:33:37.556 [DEBUG] [Thread-118303] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:33:37.568 [DEBUG] [Thread-118303] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:33:37.569 [INFO] [Thread-118303] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:33:37.576 [DEBUG] [Thread-118303] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:33:37.577 [DEBUG] [Thread-118303] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:33:37.577 [DEBUG] [Thread-118303] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:33:37.577 [DEBUG] [Thread-118303] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:33:37.577 [DEBUG] [Thread-118303] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:33:37.577 [DEBUG] [Thread-118303] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:33:37.577 [DEBUG] [Thread-118303] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:33:37.577 [DEBUG] [Thread-118303] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:33:37.578 [DEBUG] [Thread-118303] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:33:37.578 [DEBUG] [Thread-118303] [transport.py] [_log()] client lang: <none>
2025-11-03T15:33:37.578 [DEBUG] [Thread-118303] [transport.py] [_log()] server lang: <none>
2025-11-03T15:33:37.578 [DEBUG] [Thread-118303] [transport.py] [_log()] kex follows: False
2025-11-03T15:33:37.578 [DEBUG] [Thread-118303] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:33:37.578 [DEBUG] [Thread-118303] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:33:37.578 [DEBUG] [Thread-118303] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:33:37.579 [DEBUG] [Thread-118303] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:33:37.579 [DEBUG] [Thread-118303] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:33:37.579 [DEBUG] [Thread-118303] [transport.py] [_log()] Compression: none
2025-11-03T15:33:37.579 [DEBUG] [Thread-118303] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:33:37.636 [DEBUG] [Thread-118303] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:33:37.637 [DEBUG] [Thread-118303] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:33:37.638 [DEBUG] [Thread-118303] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:33:37.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:33:37.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:33:37.693 [DEBUG] [Thread-118303] [transport.py] [_log()] userauth is OK
2025-11-03T15:33:37.693 [DEBUG] [Thread-118303] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:33:37.693 [DEBUG] [Thread-118303] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:33:37.693 [DEBUG] [Thread-118303] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:33:37.693 [DEBUG] [Thread-118303] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:33:37.712 [INFO] [Thread-118303] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:33:37.713 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:33:37.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:33:38.550 [DEBUG] [Thread-118303] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:33:38.551 [DEBUG] [Thread-118303] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:33:38.598 [DEBUG] [Thread-118303] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:33:38.598 [DEBUG] [Thread-118303] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:33:38.607 [DEBUG] [Thread-118303] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:33:38.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:33:38.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:33:38.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:33:38.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:33:38.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:33:38.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:33:38.640 [DEBUG] [Thread-118303] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:33:43.111 [DEBUG] [Thread-118305 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:33:58.189 [DEBUG] [Thread-118306 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:34:06.933 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:34:06.935 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:34:08.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:34:08.660 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:34:08.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:34:09.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 33, 52), 47.67, 3.25, 0.0, 40.67, 27.42, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:34:09.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:33:52
2025-11-03T15:34:09.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:34:09.697 [DEBUG] [Thread-118307] [transport.py] [_log()] starting thread (client mode): 0xed2f9a0
2025-11-03T15:34:09.697 [DEBUG] [Thread-118307] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:34:09.719 [DEBUG] [Thread-118307] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:34:09.720 [INFO] [Thread-118307] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:34:09.722 [DEBUG] [Thread-118307] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:34:09.723 [DEBUG] [Thread-118307] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:34:09.723 [DEBUG] [Thread-118307] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:34:09.723 [DEBUG] [Thread-118307] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:34:09.723 [DEBUG] [Thread-118307] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:34:09.723 [DEBUG] [Thread-118307] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:34:09.723 [DEBUG] [Thread-118307] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:34:09.723 [DEBUG] [Thread-118307] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:34:09.724 [DEBUG] [Thread-118307] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:34:09.724 [DEBUG] [Thread-118307] [transport.py] [_log()] client lang: <none>
2025-11-03T15:34:09.724 [DEBUG] [Thread-118307] [transport.py] [_log()] server lang: <none>
2025-11-03T15:34:09.724 [DEBUG] [Thread-118307] [transport.py] [_log()] kex follows: False
2025-11-03T15:34:09.724 [DEBUG] [Thread-118307] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:34:09.724 [DEBUG] [Thread-118307] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:34:09.724 [DEBUG] [Thread-118307] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:34:09.725 [DEBUG] [Thread-118307] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:34:09.725 [DEBUG] [Thread-118307] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:34:09.725 [DEBUG] [Thread-118307] [transport.py] [_log()] Compression: none
2025-11-03T15:34:09.725 [DEBUG] [Thread-118307] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:34:09.755 [DEBUG] [Thread-118307] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:34:09.755 [DEBUG] [Thread-118307] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:34:09.756 [DEBUG] [Thread-118307] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:34:09.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:34:09.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:34:09.758 [DEBUG] [Thread-118307] [transport.py] [_log()] userauth is OK
2025-11-03T15:34:09.758 [DEBUG] [Thread-118307] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:34:09.758 [DEBUG] [Thread-118307] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:34:09.759 [DEBUG] [Thread-118307] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:34:09.759 [DEBUG] [Thread-118307] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:34:09.783 [INFO] [Thread-118307] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:34:09.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:34:10.442 [DEBUG] [Thread-118307] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:34:10.442 [DEBUG] [Thread-118307] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:34:10.442 [DEBUG] [Thread-118307] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:34:10.483 [DEBUG] [Thread-118307] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:34:10.483 [DEBUG] [Thread-118307] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:34:10.486 [DEBUG] [Thread-118307] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:34:10.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:34:10.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:34:10.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:34:10.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:34:10.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:34:10.510 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:34:10.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:34:10.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:34:10.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:34:10.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.564686 -999.00  +27.80  33.25      7   -9.60 1 1 2 1 1   888    0 36.47 -10.89 ----- 28.0 33.2 310.6 40.9 31.2 -31.9 30.9 -31.5 31.9 -31.7 32.6 -31.4
2025-11-03T15:34:10.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:34:10.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:34:10.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.564686
2025-11-03T15:34:10.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:34:10.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:34:10.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:34:10.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:34:10.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:34:10.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:33:52', tmtdew=47.67, humidity=3.25, cloud=0.0, wind=40.67, temperature=27.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:33:08.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:34:10.514 [DEBUG] [Thread-118307] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:34:10.602 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:34:10.621 [DEBUG] [Thread-118310] [transport.py] [_log()] starting thread (client mode): 0x1179a6b0
2025-11-03T15:34:10.622 [DEBUG] [Thread-118310] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:34:10.636 [DEBUG] [Thread-118310] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:34:10.636 [INFO] [Thread-118310] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:34:10.644 [DEBUG] [Thread-118310] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:34:10.644 [DEBUG] [Thread-118310] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:34:10.644 [DEBUG] [Thread-118310] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:34:10.644 [DEBUG] [Thread-118310] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:34:10.644 [DEBUG] [Thread-118310] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:34:10.644 [DEBUG] [Thread-118310] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:34:10.644 [DEBUG] [Thread-118310] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:34:10.644 [DEBUG] [Thread-118310] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:34:10.644 [DEBUG] [Thread-118310] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:34:10.644 [DEBUG] [Thread-118310] [transport.py] [_log()] client lang: <none>
2025-11-03T15:34:10.644 [DEBUG] [Thread-118310] [transport.py] [_log()] server lang: <none>
2025-11-03T15:34:10.644 [DEBUG] [Thread-118310] [transport.py] [_log()] kex follows: False
2025-11-03T15:34:10.644 [DEBUG] [Thread-118310] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:34:10.644 [DEBUG] [Thread-118310] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:34:10.644 [DEBUG] [Thread-118310] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:34:10.644 [DEBUG] [Thread-118310] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:34:10.645 [DEBUG] [Thread-118310] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:34:10.645 [DEBUG] [Thread-118310] [transport.py] [_log()] Compression: none
2025-11-03T15:34:10.645 [DEBUG] [Thread-118310] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:34:10.707 [DEBUG] [Thread-118310] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:34:10.707 [DEBUG] [Thread-118310] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:34:10.707 [DEBUG] [Thread-118310] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:34:10.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:34:10.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:34:10.763 [DEBUG] [Thread-118310] [transport.py] [_log()] userauth is OK
2025-11-03T15:34:10.764 [DEBUG] [Thread-118310] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:34:10.764 [DEBUG] [Thread-118310] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:34:10.764 [DEBUG] [Thread-118310] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:34:10.764 [DEBUG] [Thread-118310] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:34:10.777 [INFO] [Thread-118310] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:34:10.777 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:34:10.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:34:11.631 [DEBUG] [Thread-118310] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:34:11.631 [DEBUG] [Thread-118310] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:34:11.679 [DEBUG] [Thread-118310] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:34:11.679 [DEBUG] [Thread-118310] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:34:11.688 [DEBUG] [Thread-118310] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:34:11.697 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:34:11.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:34:11.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:34:11.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:34:11.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:34:11.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:34:11.725 [DEBUG] [Thread-118310] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:34:13.226 [DEBUG] [Thread-118312 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:34:17.249 [DEBUG] [Thread-118313 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:34:28.291 [DEBUG] [Thread-118314 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:34:41.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:34:41.747 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:34:41.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:34:42.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 34, 25), 47.77, 3.22, 0.0, 34.11, 27.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:34:42.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:34:25
2025-11-03T15:34:42.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:34:42.683 [DEBUG] [Thread-118315] [transport.py] [_log()] starting thread (client mode): 0xed2feb0
2025-11-03T15:34:42.683 [DEBUG] [Thread-118315] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:34:42.702 [DEBUG] [Thread-118315] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:34:42.702 [INFO] [Thread-118315] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:34:42.705 [DEBUG] [Thread-118315] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:34:42.705 [DEBUG] [Thread-118315] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:34:42.705 [DEBUG] [Thread-118315] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:34:42.705 [DEBUG] [Thread-118315] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:34:42.705 [DEBUG] [Thread-118315] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:34:42.705 [DEBUG] [Thread-118315] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:34:42.705 [DEBUG] [Thread-118315] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:34:42.705 [DEBUG] [Thread-118315] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:34:42.705 [DEBUG] [Thread-118315] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:34:42.705 [DEBUG] [Thread-118315] [transport.py] [_log()] client lang: <none>
2025-11-03T15:34:42.705 [DEBUG] [Thread-118315] [transport.py] [_log()] server lang: <none>
2025-11-03T15:34:42.706 [DEBUG] [Thread-118315] [transport.py] [_log()] kex follows: False
2025-11-03T15:34:42.706 [DEBUG] [Thread-118315] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:34:42.706 [DEBUG] [Thread-118315] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:34:42.706 [DEBUG] [Thread-118315] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:34:42.706 [DEBUG] [Thread-118315] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:34:42.706 [DEBUG] [Thread-118315] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:34:42.706 [DEBUG] [Thread-118315] [transport.py] [_log()] Compression: none
2025-11-03T15:34:42.706 [DEBUG] [Thread-118315] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:34:42.718 [DEBUG] [Thread-118315] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:34:42.718 [DEBUG] [Thread-118315] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:34:42.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:34:42.718 [DEBUG] [Thread-118315] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:34:42.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:34:42.719 [DEBUG] [Thread-118315] [transport.py] [_log()] userauth is OK
2025-11-03T15:34:42.719 [DEBUG] [Thread-118315] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:34:42.719 [DEBUG] [Thread-118315] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:34:42.719 [DEBUG] [Thread-118315] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:34:42.719 [DEBUG] [Thread-118315] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:34:42.735 [INFO] [Thread-118315] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:34:42.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:34:43.334 [DEBUG] [Thread-118317 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:34:43.442 [DEBUG] [Thread-118315] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:34:43.442 [DEBUG] [Thread-118315] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:34:43.442 [DEBUG] [Thread-118315] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:34:43.482 [DEBUG] [Thread-118315] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:34:43.482 [DEBUG] [Thread-118315] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:34:43.485 [DEBUG] [Thread-118315] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:34:43.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:34:43.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:34:43.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:34:43.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:34:43.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:34:43.502 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:34:43.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:34:43.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:34:43.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:34:43.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.565381 -999.00  +26.80  22.23      8  -10.20 1 1 1 1 1   888    0 36.53 -1.53 ----- 21.4 22.2 337.8 43.9 31.1 -32.6 30.7 -31.7 31.7 -33.4 32.4 -31.3
2025-11-03T15:34:43.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:34:43.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:34:43.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.565381
2025-11-03T15:34:43.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:34:43.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:34:43.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:34:43.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:34:43.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:34:43.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:34:25', tmtdew=47.77, humidity=3.22, cloud=0.0, wind=34.11, temperature=27.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:34:08.918', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:34:43.503 [DEBUG] [Thread-118315] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:34:43.576 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:34:43.595 [DEBUG] [Thread-118319] [transport.py] [_log()] starting thread (client mode): 0x117bcf70
2025-11-03T15:34:43.595 [DEBUG] [Thread-118319] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:34:43.610 [DEBUG] [Thread-118319] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:34:43.610 [INFO] [Thread-118319] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:34:43.617 [DEBUG] [Thread-118319] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:34:43.618 [DEBUG] [Thread-118319] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:34:43.618 [DEBUG] [Thread-118319] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:34:43.618 [DEBUG] [Thread-118319] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:34:43.618 [DEBUG] [Thread-118319] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:34:43.618 [DEBUG] [Thread-118319] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:34:43.618 [DEBUG] [Thread-118319] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:34:43.618 [DEBUG] [Thread-118319] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:34:43.618 [DEBUG] [Thread-118319] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:34:43.618 [DEBUG] [Thread-118319] [transport.py] [_log()] client lang: <none>
2025-11-03T15:34:43.618 [DEBUG] [Thread-118319] [transport.py] [_log()] server lang: <none>
2025-11-03T15:34:43.618 [DEBUG] [Thread-118319] [transport.py] [_log()] kex follows: False
2025-11-03T15:34:43.618 [DEBUG] [Thread-118319] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:34:43.618 [DEBUG] [Thread-118319] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:34:43.618 [DEBUG] [Thread-118319] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:34:43.618 [DEBUG] [Thread-118319] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:34:43.618 [DEBUG] [Thread-118319] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:34:43.618 [DEBUG] [Thread-118319] [transport.py] [_log()] Compression: none
2025-11-03T15:34:43.618 [DEBUG] [Thread-118319] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:34:43.675 [DEBUG] [Thread-118319] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:34:43.675 [DEBUG] [Thread-118319] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:34:43.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:34:43.675 [DEBUG] [Thread-118319] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:34:43.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:34:43.732 [DEBUG] [Thread-118319] [transport.py] [_log()] userauth is OK
2025-11-03T15:34:43.732 [DEBUG] [Thread-118319] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:34:43.732 [DEBUG] [Thread-118319] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:34:43.732 [DEBUG] [Thread-118319] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:34:43.732 [DEBUG] [Thread-118319] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:34:43.750 [INFO] [Thread-118319] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:34:43.750 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:34:43.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:34:44.593 [DEBUG] [Thread-118319] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:34:44.594 [DEBUG] [Thread-118319] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:34:44.642 [DEBUG] [Thread-118319] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:34:44.642 [DEBUG] [Thread-118319] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:34:44.651 [DEBUG] [Thread-118319] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:34:44.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:34:44.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:34:44.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:34:44.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:34:44.680 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:34:44.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:34:44.689 [DEBUG] [Thread-118319] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:34:58.372 [DEBUG] [Thread-118321 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:35:07.077 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:35:07.078 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:35:13.429 [DEBUG] [Thread-118322 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:35:14.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:35:14.711 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:35:14.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:35:15.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 34, 57), 47.43, 3.29, 0.0, 24.79, 26.85, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:35:15.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:34:57
2025-11-03T15:35:15.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:35:15.759 [DEBUG] [Thread-118323] [transport.py] [_log()] starting thread (client mode): 0xed2c5e0
2025-11-03T15:35:15.759 [DEBUG] [Thread-118323] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:35:15.780 [DEBUG] [Thread-118323] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:35:15.781 [INFO] [Thread-118323] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:35:15.792 [DEBUG] [Thread-118323] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:35:15.792 [DEBUG] [Thread-118323] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:35:15.792 [DEBUG] [Thread-118323] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:35:15.792 [DEBUG] [Thread-118323] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:35:15.792 [DEBUG] [Thread-118323] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:35:15.792 [DEBUG] [Thread-118323] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:35:15.792 [DEBUG] [Thread-118323] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:35:15.792 [DEBUG] [Thread-118323] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:35:15.792 [DEBUG] [Thread-118323] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:35:15.793 [DEBUG] [Thread-118323] [transport.py] [_log()] client lang: <none>
2025-11-03T15:35:15.793 [DEBUG] [Thread-118323] [transport.py] [_log()] server lang: <none>
2025-11-03T15:35:15.793 [DEBUG] [Thread-118323] [transport.py] [_log()] kex follows: False
2025-11-03T15:35:15.793 [DEBUG] [Thread-118323] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:35:15.793 [DEBUG] [Thread-118323] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:35:15.793 [DEBUG] [Thread-118323] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:35:15.793 [DEBUG] [Thread-118323] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:35:15.793 [DEBUG] [Thread-118323] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:35:15.793 [DEBUG] [Thread-118323] [transport.py] [_log()] Compression: none
2025-11-03T15:35:15.793 [DEBUG] [Thread-118323] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:35:15.812 [DEBUG] [Thread-118323] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:35:15.812 [DEBUG] [Thread-118323] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:35:15.813 [DEBUG] [Thread-118323] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:35:15.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:35:15.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:35:15.815 [DEBUG] [Thread-118323] [transport.py] [_log()] userauth is OK
2025-11-03T15:35:15.815 [DEBUG] [Thread-118323] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:35:15.815 [DEBUG] [Thread-118323] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:35:15.816 [DEBUG] [Thread-118323] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:35:15.816 [DEBUG] [Thread-118323] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:35:15.852 [INFO] [Thread-118323] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:35:15.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:35:16.521 [DEBUG] [Thread-118323] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:35:16.521 [DEBUG] [Thread-118323] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:35:16.521 [DEBUG] [Thread-118323] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:35:16.562 [DEBUG] [Thread-118323] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:35:16.563 [DEBUG] [Thread-118323] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:35:16.565 [DEBUG] [Thread-118323] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:35:16.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:35:16.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:35:16.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:35:16.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:35:16.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:35:16.584 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:35:16.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:35:16.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:35:16.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:35:16.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.565728 -999.00  +27.20  20.66      8   -9.90 1 1 1 1 1   888    0 36.53 0.76 ----- 13.6 20.7 339.4 31.2 31.1 -32.5 30.8 -31.7 31.8 -30.7 32.4 -31.1
2025-11-03T15:35:16.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:35:16.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:35:16.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.565728
2025-11-03T15:35:16.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:35:16.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:35:16.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:35:16.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:35:16.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:35:16.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:34:57', tmtdew=47.43, humidity=3.29, cloud=0.0, wind=24.79, temperature=26.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:34:38.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:35:16.585 [DEBUG] [Thread-118323] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:35:16.657 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:35:16.683 [DEBUG] [Thread-118326] [transport.py] [_log()] starting thread (client mode): 0x1179b130
2025-11-03T15:35:16.683 [DEBUG] [Thread-118326] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:35:16.697 [DEBUG] [Thread-118326] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:35:16.698 [INFO] [Thread-118326] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:35:16.705 [DEBUG] [Thread-118326] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:35:16.705 [DEBUG] [Thread-118326] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:35:16.705 [DEBUG] [Thread-118326] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:35:16.705 [DEBUG] [Thread-118326] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:35:16.705 [DEBUG] [Thread-118326] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:35:16.705 [DEBUG] [Thread-118326] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:35:16.705 [DEBUG] [Thread-118326] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:35:16.705 [DEBUG] [Thread-118326] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:35:16.705 [DEBUG] [Thread-118326] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:35:16.705 [DEBUG] [Thread-118326] [transport.py] [_log()] client lang: <none>
2025-11-03T15:35:16.705 [DEBUG] [Thread-118326] [transport.py] [_log()] server lang: <none>
2025-11-03T15:35:16.705 [DEBUG] [Thread-118326] [transport.py] [_log()] kex follows: False
2025-11-03T15:35:16.705 [DEBUG] [Thread-118326] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:35:16.705 [DEBUG] [Thread-118326] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:35:16.705 [DEBUG] [Thread-118326] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:35:16.705 [DEBUG] [Thread-118326] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:35:16.705 [DEBUG] [Thread-118326] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:35:16.705 [DEBUG] [Thread-118326] [transport.py] [_log()] Compression: none
2025-11-03T15:35:16.705 [DEBUG] [Thread-118326] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:35:16.762 [DEBUG] [Thread-118326] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:35:16.763 [DEBUG] [Thread-118326] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:35:16.763 [DEBUG] [Thread-118326] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:35:16.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:35:16.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:35:16.821 [DEBUG] [Thread-118326] [transport.py] [_log()] userauth is OK
2025-11-03T15:35:16.821 [DEBUG] [Thread-118326] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:35:16.821 [DEBUG] [Thread-118326] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:35:16.821 [DEBUG] [Thread-118326] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:35:16.821 [DEBUG] [Thread-118326] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:35:16.835 [INFO] [Thread-118326] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:35:16.835 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:35:16.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:35:17.312 [DEBUG] [Thread-118328 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:35:17.700 [DEBUG] [Thread-118326] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:35:17.700 [DEBUG] [Thread-118326] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:35:17.748 [DEBUG] [Thread-118326] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:35:17.748 [DEBUG] [Thread-118326] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:35:17.757 [DEBUG] [Thread-118326] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:35:17.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:35:17.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:35:17.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:35:17.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:35:17.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:35:17.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:35:17.793 [DEBUG] [Thread-118326] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:35:28.476 [DEBUG] [Thread-118329 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:35:43.542 [DEBUG] [Thread-118330 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:35:47.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:35:47.810 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:35:47.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:35:48.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 35, 30), 47.31, 3.3, 0.0, 29.22, 26.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:35:48.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:35:30
2025-11-03T15:35:48.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:35:48.792 [DEBUG] [Thread-118331] [transport.py] [_log()] starting thread (client mode): 0x117e8100
2025-11-03T15:35:48.792 [DEBUG] [Thread-118331] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:35:48.803 [DEBUG] [Thread-118331] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:35:48.804 [INFO] [Thread-118331] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:35:48.807 [DEBUG] [Thread-118331] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:35:48.807 [DEBUG] [Thread-118331] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:35:48.807 [DEBUG] [Thread-118331] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:35:48.807 [DEBUG] [Thread-118331] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:35:48.807 [DEBUG] [Thread-118331] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:35:48.807 [DEBUG] [Thread-118331] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:35:48.807 [DEBUG] [Thread-118331] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:35:48.807 [DEBUG] [Thread-118331] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:35:48.807 [DEBUG] [Thread-118331] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:35:48.807 [DEBUG] [Thread-118331] [transport.py] [_log()] client lang: <none>
2025-11-03T15:35:48.807 [DEBUG] [Thread-118331] [transport.py] [_log()] server lang: <none>
2025-11-03T15:35:48.807 [DEBUG] [Thread-118331] [transport.py] [_log()] kex follows: False
2025-11-03T15:35:48.807 [DEBUG] [Thread-118331] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:35:48.807 [DEBUG] [Thread-118331] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:35:48.808 [DEBUG] [Thread-118331] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:35:48.808 [DEBUG] [Thread-118331] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:35:48.808 [DEBUG] [Thread-118331] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:35:48.808 [DEBUG] [Thread-118331] [transport.py] [_log()] Compression: none
2025-11-03T15:35:48.808 [DEBUG] [Thread-118331] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:35:48.825 [DEBUG] [Thread-118331] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:35:48.826 [DEBUG] [Thread-118331] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:35:48.827 [DEBUG] [Thread-118331] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:35:48.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:35:48.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:35:48.869 [DEBUG] [Thread-118331] [transport.py] [_log()] userauth is OK
2025-11-03T15:35:48.869 [DEBUG] [Thread-118331] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:35:48.870 [DEBUG] [Thread-118331] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:35:48.870 [DEBUG] [Thread-118331] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:35:48.870 [DEBUG] [Thread-118331] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:35:48.900 [INFO] [Thread-118331] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:35:48.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:35:49.692 [DEBUG] [Thread-118331] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:35:49.692 [DEBUG] [Thread-118331] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:35:49.692 [DEBUG] [Thread-118331] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:35:49.733 [DEBUG] [Thread-118331] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:35:49.733 [DEBUG] [Thread-118331] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:35:49.736 [DEBUG] [Thread-118331] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:35:49.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:35:49.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:35:49.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:35:49.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:35:49.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:35:49.760 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:35:49.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:35:49.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:35:49.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:35:49.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.566075 -999.00  +27.20  30.38      7  -10.10 1 1 2 1 1   888    0 37.48 6.07 ----- 27.8 30.4 332.4 34.5 31.1 -33.1 30.7 -32.4 31.9 -30.9 32.5 -30.9
2025-11-03T15:35:49.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:35:49.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:35:49.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.566075
2025-11-03T15:35:49.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:35:49.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:35:49.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:35:49.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:35:49.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:35:49.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:35:30', tmtdew=47.31, humidity=3.3, cloud=0.0, wind=29.22, temperature=26.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:35:08.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:35:49.763 [DEBUG] [Thread-118331] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:35:49.847 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:35:49.867 [DEBUG] [Thread-118334] [transport.py] [_log()] starting thread (client mode): 0x1179b610
2025-11-03T15:35:49.867 [DEBUG] [Thread-118334] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:35:49.883 [DEBUG] [Thread-118334] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:35:49.884 [INFO] [Thread-118334] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:35:49.891 [DEBUG] [Thread-118334] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:35:49.891 [DEBUG] [Thread-118334] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:35:49.891 [DEBUG] [Thread-118334] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:35:49.891 [DEBUG] [Thread-118334] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:35:49.891 [DEBUG] [Thread-118334] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:35:49.891 [DEBUG] [Thread-118334] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:35:49.891 [DEBUG] [Thread-118334] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:35:49.891 [DEBUG] [Thread-118334] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:35:49.892 [DEBUG] [Thread-118334] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:35:49.892 [DEBUG] [Thread-118334] [transport.py] [_log()] client lang: <none>
2025-11-03T15:35:49.892 [DEBUG] [Thread-118334] [transport.py] [_log()] server lang: <none>
2025-11-03T15:35:49.892 [DEBUG] [Thread-118334] [transport.py] [_log()] kex follows: False
2025-11-03T15:35:49.892 [DEBUG] [Thread-118334] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:35:49.892 [DEBUG] [Thread-118334] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:35:49.892 [DEBUG] [Thread-118334] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:35:49.892 [DEBUG] [Thread-118334] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:35:49.892 [DEBUG] [Thread-118334] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:35:49.892 [DEBUG] [Thread-118334] [transport.py] [_log()] Compression: none
2025-11-03T15:35:49.892 [DEBUG] [Thread-118334] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:35:49.957 [DEBUG] [Thread-118334] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:35:49.957 [DEBUG] [Thread-118334] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:35:49.958 [DEBUG] [Thread-118334] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:35:49.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:35:49.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:35:50.016 [DEBUG] [Thread-118334] [transport.py] [_log()] userauth is OK
2025-11-03T15:35:50.016 [DEBUG] [Thread-118334] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:35:50.017 [DEBUG] [Thread-118334] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:35:50.017 [DEBUG] [Thread-118334] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:35:50.017 [DEBUG] [Thread-118334] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:35:50.036 [INFO] [Thread-118334] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:35:50.036 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:35:50.037 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:35:50.922 [DEBUG] [Thread-118334] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:35:50.922 [DEBUG] [Thread-118334] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:35:50.970 [DEBUG] [Thread-118334] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:35:50.970 [DEBUG] [Thread-118334] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:35:50.980 [DEBUG] [Thread-118334] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:35:50.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:35:50.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:35:50.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:35:51.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:35:51.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:35:51.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:35:51.016 [DEBUG] [Thread-118334] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:35:58.582 [DEBUG] [Thread-118336 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:36:07.220 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:36:07.221 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:36:13.636 [DEBUG] [Thread-118337 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:36:17.368 [DEBUG] [Thread-118338 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:36:21.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:36:21.039 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:36:21.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:36:21.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 36, 2), 47.52, 3.25, 0.0, 28.62, 26.78, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:36:21.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:36:02
2025-11-03T15:36:21.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:36:22.057 [DEBUG] [Thread-118339] [transport.py] [_log()] starting thread (client mode): 0x117e8490
2025-11-03T15:36:22.057 [DEBUG] [Thread-118339] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:36:22.078 [DEBUG] [Thread-118339] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:36:22.078 [INFO] [Thread-118339] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:36:22.081 [DEBUG] [Thread-118339] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:36:22.081 [DEBUG] [Thread-118339] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:36:22.081 [DEBUG] [Thread-118339] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:36:22.081 [DEBUG] [Thread-118339] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:36:22.081 [DEBUG] [Thread-118339] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:36:22.081 [DEBUG] [Thread-118339] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:36:22.081 [DEBUG] [Thread-118339] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:36:22.081 [DEBUG] [Thread-118339] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:36:22.081 [DEBUG] [Thread-118339] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:36:22.081 [DEBUG] [Thread-118339] [transport.py] [_log()] client lang: <none>
2025-11-03T15:36:22.081 [DEBUG] [Thread-118339] [transport.py] [_log()] server lang: <none>
2025-11-03T15:36:22.081 [DEBUG] [Thread-118339] [transport.py] [_log()] kex follows: False
2025-11-03T15:36:22.082 [DEBUG] [Thread-118339] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:36:22.082 [DEBUG] [Thread-118339] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:36:22.082 [DEBUG] [Thread-118339] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:36:22.082 [DEBUG] [Thread-118339] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:36:22.082 [DEBUG] [Thread-118339] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:36:22.082 [DEBUG] [Thread-118339] [transport.py] [_log()] Compression: none
2025-11-03T15:36:22.091 [DEBUG] [Thread-118339] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:36:22.110 [DEBUG] [Thread-118339] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:36:22.111 [DEBUG] [Thread-118339] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:36:22.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:36:22.112 [DEBUG] [Thread-118339] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:36:22.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:36:22.114 [DEBUG] [Thread-118339] [transport.py] [_log()] userauth is OK
2025-11-03T15:36:22.115 [DEBUG] [Thread-118339] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:36:22.115 [DEBUG] [Thread-118339] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:36:22.115 [DEBUG] [Thread-118339] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:36:22.115 [DEBUG] [Thread-118339] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:36:22.140 [INFO] [Thread-118339] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:36:22.141 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:36:22.778 [DEBUG] [Thread-118339] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:36:22.778 [DEBUG] [Thread-118339] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:36:22.779 [DEBUG] [Thread-118339] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:36:22.819 [DEBUG] [Thread-118339] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:36:22.819 [DEBUG] [Thread-118339] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:36:22.822 [DEBUG] [Thread-118339] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:36:22.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:36:22.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:36:22.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:36:22.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:36:22.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:36:22.847 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:36:22.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:36:22.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:36:22.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:36:22.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.566422 -999.00  +27.20  23.36      8   -9.80 1 1 1 1 1   888    0 36.57 11.76 ----- 25.1 23.4 323.6 40.2 31.2 -32.0 30.8 -31.4 31.9 -30.6 32.5 -31.1
2025-11-03T15:36:22.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:36:22.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:36:22.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.566422
2025-11-03T15:36:22.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:36:22.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:36:22.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:36:22.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:36:22.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:36:22.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:36:02', tmtdew=47.52, humidity=3.25, cloud=0.0, wind=28.62, temperature=26.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:35:38.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:36:22.850 [DEBUG] [Thread-118339] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:36:22.933 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:36:22.954 [DEBUG] [Thread-118342] [transport.py] [_log()] starting thread (client mode): 0x117e9150
2025-11-03T15:36:22.955 [DEBUG] [Thread-118342] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:36:22.970 [DEBUG] [Thread-118342] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:36:22.970 [INFO] [Thread-118342] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:36:22.978 [DEBUG] [Thread-118342] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:36:22.978 [DEBUG] [Thread-118342] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:36:22.978 [DEBUG] [Thread-118342] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:36:22.978 [DEBUG] [Thread-118342] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:36:22.978 [DEBUG] [Thread-118342] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:36:22.978 [DEBUG] [Thread-118342] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:36:22.978 [DEBUG] [Thread-118342] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:36:22.978 [DEBUG] [Thread-118342] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:36:22.978 [DEBUG] [Thread-118342] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:36:22.978 [DEBUG] [Thread-118342] [transport.py] [_log()] client lang: <none>
2025-11-03T15:36:22.978 [DEBUG] [Thread-118342] [transport.py] [_log()] server lang: <none>
2025-11-03T15:36:22.978 [DEBUG] [Thread-118342] [transport.py] [_log()] kex follows: False
2025-11-03T15:36:22.979 [DEBUG] [Thread-118342] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:36:22.979 [DEBUG] [Thread-118342] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:36:22.979 [DEBUG] [Thread-118342] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:36:22.979 [DEBUG] [Thread-118342] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:36:22.979 [DEBUG] [Thread-118342] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:36:22.979 [DEBUG] [Thread-118342] [transport.py] [_log()] Compression: none
2025-11-03T15:36:22.979 [DEBUG] [Thread-118342] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:36:23.036 [DEBUG] [Thread-118342] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:36:23.037 [DEBUG] [Thread-118342] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:36:23.038 [DEBUG] [Thread-118342] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:36:23.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:36:23.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:36:23.092 [DEBUG] [Thread-118342] [transport.py] [_log()] userauth is OK
2025-11-03T15:36:23.093 [DEBUG] [Thread-118342] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:36:23.093 [DEBUG] [Thread-118342] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:36:23.093 [DEBUG] [Thread-118342] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:36:23.094 [DEBUG] [Thread-118342] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:36:23.112 [INFO] [Thread-118342] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:36:23.113 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:36:23.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:36:23.986 [DEBUG] [Thread-118342] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:36:23.986 [DEBUG] [Thread-118342] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:36:24.035 [DEBUG] [Thread-118342] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:36:24.035 [DEBUG] [Thread-118342] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:36:24.043 [DEBUG] [Thread-118342] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:36:24.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:36:24.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:36:24.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:36:24.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:36:24.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:36:24.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:36:24.075 [DEBUG] [Thread-118342] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:36:28.678 [DEBUG] [Thread-118344 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:36:43.742 [DEBUG] [Thread-118345 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:36:54.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:36:54.098 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:36:54.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:36:54.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 36, 34), 47.1, 3.29, 0.0, 31.27, 26.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:36:54.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:36:34
2025-11-03T15:36:54.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:36:55.118 [DEBUG] [Thread-118346] [transport.py] [_log()] starting thread (client mode): 0x117bf520
2025-11-03T15:36:55.119 [DEBUG] [Thread-118346] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:36:55.138 [DEBUG] [Thread-118346] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:36:55.138 [INFO] [Thread-118346] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:36:55.142 [DEBUG] [Thread-118346] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:36:55.143 [DEBUG] [Thread-118346] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:36:55.143 [DEBUG] [Thread-118346] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:36:55.143 [DEBUG] [Thread-118346] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:36:55.143 [DEBUG] [Thread-118346] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:36:55.143 [DEBUG] [Thread-118346] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:36:55.143 [DEBUG] [Thread-118346] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:36:55.143 [DEBUG] [Thread-118346] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:36:55.143 [DEBUG] [Thread-118346] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:36:55.143 [DEBUG] [Thread-118346] [transport.py] [_log()] client lang: <none>
2025-11-03T15:36:55.144 [DEBUG] [Thread-118346] [transport.py] [_log()] server lang: <none>
2025-11-03T15:36:55.144 [DEBUG] [Thread-118346] [transport.py] [_log()] kex follows: False
2025-11-03T15:36:55.144 [DEBUG] [Thread-118346] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:36:55.144 [DEBUG] [Thread-118346] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:36:55.144 [DEBUG] [Thread-118346] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:36:55.144 [DEBUG] [Thread-118346] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:36:55.144 [DEBUG] [Thread-118346] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:36:55.145 [DEBUG] [Thread-118346] [transport.py] [_log()] Compression: none
2025-11-03T15:36:55.145 [DEBUG] [Thread-118346] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:36:55.162 [DEBUG] [Thread-118346] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:36:55.163 [DEBUG] [Thread-118346] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:36:55.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:36:55.164 [DEBUG] [Thread-118346] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:36:55.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:36:55.166 [DEBUG] [Thread-118346] [transport.py] [_log()] userauth is OK
2025-11-03T15:36:55.167 [DEBUG] [Thread-118346] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:36:55.167 [DEBUG] [Thread-118346] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:36:55.167 [DEBUG] [Thread-118346] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:36:55.167 [DEBUG] [Thread-118346] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:36:55.192 [INFO] [Thread-118346] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:36:55.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:36:55.941 [DEBUG] [Thread-118346] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:36:55.941 [DEBUG] [Thread-118346] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:36:55.941 [DEBUG] [Thread-118346] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:36:55.982 [DEBUG] [Thread-118346] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:36:55.982 [DEBUG] [Thread-118346] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:36:55.985 [DEBUG] [Thread-118346] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:36:55.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:36:55.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:36:55.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:36:55.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:36:56.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:36:56.002 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:36:56.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:36:56.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:36:56.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:36:56.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.566770 -999.00  +27.20  25.38      7  -10.20 1 1 1 1 1   888    0 36.89 18.73 ----- 31.3 25.4 335.0 32.3 31.2 -32.0 30.8 -32.3 32.0 -31.0 32.5 -31.9
2025-11-03T15:36:56.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:36:56.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:36:56.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.566770
2025-11-03T15:36:56.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:36:56.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:36:56.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:36:56.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:36:56.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:36:56.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:36:34', tmtdew=47.1, humidity=3.29, cloud=0.0, wind=31.27, temperature=26.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:36:08.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:36:56.004 [DEBUG] [Thread-118346] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:36:56.076 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:36:56.097 [DEBUG] [Thread-118349] [transport.py] [_log()] starting thread (client mode): 0xed2f4c0
2025-11-03T15:36:56.097 [DEBUG] [Thread-118349] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:36:56.112 [DEBUG] [Thread-118349] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:36:56.112 [INFO] [Thread-118349] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:36:56.119 [DEBUG] [Thread-118349] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:36:56.120 [DEBUG] [Thread-118349] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:36:56.120 [DEBUG] [Thread-118349] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:36:56.120 [DEBUG] [Thread-118349] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:36:56.120 [DEBUG] [Thread-118349] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:36:56.120 [DEBUG] [Thread-118349] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:36:56.120 [DEBUG] [Thread-118349] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:36:56.120 [DEBUG] [Thread-118349] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:36:56.120 [DEBUG] [Thread-118349] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:36:56.120 [DEBUG] [Thread-118349] [transport.py] [_log()] client lang: <none>
2025-11-03T15:36:56.120 [DEBUG] [Thread-118349] [transport.py] [_log()] server lang: <none>
2025-11-03T15:36:56.120 [DEBUG] [Thread-118349] [transport.py] [_log()] kex follows: False
2025-11-03T15:36:56.120 [DEBUG] [Thread-118349] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:36:56.120 [DEBUG] [Thread-118349] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:36:56.120 [DEBUG] [Thread-118349] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:36:56.120 [DEBUG] [Thread-118349] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:36:56.120 [DEBUG] [Thread-118349] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:36:56.120 [DEBUG] [Thread-118349] [transport.py] [_log()] Compression: none
2025-11-03T15:36:56.120 [DEBUG] [Thread-118349] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:36:56.174 [DEBUG] [Thread-118349] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:36:56.174 [DEBUG] [Thread-118349] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:36:56.174 [DEBUG] [Thread-118349] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:36:56.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:36:56.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:36:56.232 [DEBUG] [Thread-118349] [transport.py] [_log()] userauth is OK
2025-11-03T15:36:56.232 [DEBUG] [Thread-118349] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:36:56.232 [DEBUG] [Thread-118349] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:36:56.232 [DEBUG] [Thread-118349] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:36:56.232 [DEBUG] [Thread-118349] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:36:56.246 [INFO] [Thread-118349] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:36:56.246 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:36:56.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:36:57.112 [DEBUG] [Thread-118349] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:36:57.112 [DEBUG] [Thread-118349] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:36:57.160 [DEBUG] [Thread-118349] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:36:57.160 [DEBUG] [Thread-118349] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:36:57.170 [DEBUG] [Thread-118349] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:36:57.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:36:57.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:36:57.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:36:57.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:36:57.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:36:57.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:36:57.208 [DEBUG] [Thread-118349] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:36:58.788 [DEBUG] [Thread-118351 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:37:07.361 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:37:07.363 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:37:13.855 [DEBUG] [Thread-118352 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:37:17.417 [DEBUG] [Thread-118353 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:37:27.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:37:27.229 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:37:27.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:37:27.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 37, 7), 47.28, 3.24, 0.0, 32.01, 26.7, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:37:27.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:37:07
2025-11-03T15:37:28.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:37:28.274 [DEBUG] [Thread-118354] [transport.py] [_log()] starting thread (client mode): 0x117bc8e0
2025-11-03T15:37:28.275 [DEBUG] [Thread-118354] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:37:28.287 [DEBUG] [Thread-118354] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:37:28.287 [INFO] [Thread-118354] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:37:28.290 [DEBUG] [Thread-118354] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:37:28.290 [DEBUG] [Thread-118354] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:37:28.290 [DEBUG] [Thread-118354] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:37:28.290 [DEBUG] [Thread-118354] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:37:28.290 [DEBUG] [Thread-118354] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:37:28.290 [DEBUG] [Thread-118354] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:37:28.290 [DEBUG] [Thread-118354] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:37:28.290 [DEBUG] [Thread-118354] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:37:28.290 [DEBUG] [Thread-118354] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:37:28.290 [DEBUG] [Thread-118354] [transport.py] [_log()] client lang: <none>
2025-11-03T15:37:28.290 [DEBUG] [Thread-118354] [transport.py] [_log()] server lang: <none>
2025-11-03T15:37:28.290 [DEBUG] [Thread-118354] [transport.py] [_log()] kex follows: False
2025-11-03T15:37:28.290 [DEBUG] [Thread-118354] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:37:28.290 [DEBUG] [Thread-118354] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:37:28.290 [DEBUG] [Thread-118354] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:37:28.291 [DEBUG] [Thread-118354] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:37:28.291 [DEBUG] [Thread-118354] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:37:28.291 [DEBUG] [Thread-118354] [transport.py] [_log()] Compression: none
2025-11-03T15:37:28.291 [DEBUG] [Thread-118354] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:37:28.307 [DEBUG] [Thread-118354] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:37:28.308 [DEBUG] [Thread-118354] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:37:28.308 [DEBUG] [Thread-118354] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:37:28.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:37:28.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:37:28.353 [DEBUG] [Thread-118354] [transport.py] [_log()] userauth is OK
2025-11-03T15:37:28.353 [DEBUG] [Thread-118354] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:37:28.354 [DEBUG] [Thread-118354] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:37:28.354 [DEBUG] [Thread-118354] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:37:28.354 [DEBUG] [Thread-118354] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:37:28.374 [INFO] [Thread-118354] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:37:28.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:37:28.893 [DEBUG] [Thread-118356 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:37:29.414 [DEBUG] [Thread-118354] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:37:29.414 [DEBUG] [Thread-118354] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:37:29.414 [DEBUG] [Thread-118354] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:37:29.455 [DEBUG] [Thread-118354] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:37:29.455 [DEBUG] [Thread-118354] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:37:29.457 [DEBUG] [Thread-118354] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:37:29.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:37:29.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:37:29.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:37:29.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:37:29.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:37:29.478 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:37:29.478 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:37:29.478 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:37:29.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:37:29.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.567117 -999.00  +27.00  28.53      7  -10.40 1 1 1 1 1   888    0 37.14 26.93 ----- 35.5 28.5 344.5 41.5 31.2 -33.3 30.7 -32.1 31.9 -31.5 32.5 -31.5
2025-11-03T15:37:29.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:37:29.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:37:29.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.567117
2025-11-03T15:37:29.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:37:29.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:37:29.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:37:29.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:37:29.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:37:29.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:37:07', tmtdew=47.28, humidity=3.24, cloud=0.0, wind=32.01, temperature=26.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:36:38.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:37:29.479 [DEBUG] [Thread-118354] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:37:29.551 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:37:29.569 [DEBUG] [Thread-118358] [transport.py] [_log()] starting thread (client mode): 0x1174e950
2025-11-03T15:37:29.569 [DEBUG] [Thread-118358] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:37:29.583 [DEBUG] [Thread-118358] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:37:29.583 [INFO] [Thread-118358] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:37:29.592 [DEBUG] [Thread-118358] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:37:29.592 [DEBUG] [Thread-118358] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:37:29.592 [DEBUG] [Thread-118358] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:37:29.592 [DEBUG] [Thread-118358] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:37:29.592 [DEBUG] [Thread-118358] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:37:29.592 [DEBUG] [Thread-118358] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:37:29.592 [DEBUG] [Thread-118358] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:37:29.592 [DEBUG] [Thread-118358] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:37:29.592 [DEBUG] [Thread-118358] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:37:29.592 [DEBUG] [Thread-118358] [transport.py] [_log()] client lang: <none>
2025-11-03T15:37:29.592 [DEBUG] [Thread-118358] [transport.py] [_log()] server lang: <none>
2025-11-03T15:37:29.592 [DEBUG] [Thread-118358] [transport.py] [_log()] kex follows: False
2025-11-03T15:37:29.592 [DEBUG] [Thread-118358] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:37:29.592 [DEBUG] [Thread-118358] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:37:29.592 [DEBUG] [Thread-118358] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:37:29.592 [DEBUG] [Thread-118358] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:37:29.592 [DEBUG] [Thread-118358] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:37:29.592 [DEBUG] [Thread-118358] [transport.py] [_log()] Compression: none
2025-11-03T15:37:29.592 [DEBUG] [Thread-118358] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:37:29.651 [DEBUG] [Thread-118358] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:37:29.651 [DEBUG] [Thread-118358] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:37:29.651 [DEBUG] [Thread-118358] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:37:29.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:37:29.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:37:29.708 [DEBUG] [Thread-118358] [transport.py] [_log()] userauth is OK
2025-11-03T15:37:29.708 [DEBUG] [Thread-118358] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:37:29.708 [DEBUG] [Thread-118358] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:37:29.708 [DEBUG] [Thread-118358] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:37:29.708 [DEBUG] [Thread-118358] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:37:29.722 [INFO] [Thread-118358] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:37:29.722 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:37:29.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:37:30.667 [DEBUG] [Thread-118358] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:37:30.668 [DEBUG] [Thread-118358] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:37:30.715 [DEBUG] [Thread-118358] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:37:30.715 [DEBUG] [Thread-118358] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:37:30.724 [DEBUG] [Thread-118358] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:37:30.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:37:30.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:37:30.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:37:30.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:37:30.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:37:30.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:37:30.757 [DEBUG] [Thread-118358] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:37:43.951 [DEBUG] [Thread-118360 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:37:59.019 [DEBUG] [Thread-118361 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:38:00.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:38:00.779 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:38:00.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:38:01.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 37, 40), 48.01, 3.22, 0.0, 36.52, 27.23, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:38:01.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:37:40
2025-11-03T15:38:01.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:38:01.726 [DEBUG] [Thread-118362] [transport.py] [_log()] starting thread (client mode): 0xed2ca30
2025-11-03T15:38:01.726 [DEBUG] [Thread-118362] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:38:01.745 [DEBUG] [Thread-118362] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:38:01.745 [INFO] [Thread-118362] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:38:01.748 [DEBUG] [Thread-118362] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:38:01.748 [DEBUG] [Thread-118362] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:38:01.748 [DEBUG] [Thread-118362] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:38:01.749 [DEBUG] [Thread-118362] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:38:01.749 [DEBUG] [Thread-118362] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:38:01.749 [DEBUG] [Thread-118362] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:38:01.749 [DEBUG] [Thread-118362] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:38:01.749 [DEBUG] [Thread-118362] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:38:01.749 [DEBUG] [Thread-118362] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:38:01.749 [DEBUG] [Thread-118362] [transport.py] [_log()] client lang: <none>
2025-11-03T15:38:01.749 [DEBUG] [Thread-118362] [transport.py] [_log()] server lang: <none>
2025-11-03T15:38:01.749 [DEBUG] [Thread-118362] [transport.py] [_log()] kex follows: False
2025-11-03T15:38:01.749 [DEBUG] [Thread-118362] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:38:01.749 [DEBUG] [Thread-118362] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:38:01.749 [DEBUG] [Thread-118362] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:38:01.749 [DEBUG] [Thread-118362] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:38:01.749 [DEBUG] [Thread-118362] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:38:01.749 [DEBUG] [Thread-118362] [transport.py] [_log()] Compression: none
2025-11-03T15:38:01.749 [DEBUG] [Thread-118362] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:38:01.767 [DEBUG] [Thread-118362] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:38:01.767 [DEBUG] [Thread-118362] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:38:01.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:38:01.768 [DEBUG] [Thread-118362] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:38:01.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:38:01.780 [DEBUG] [Thread-118362] [transport.py] [_log()] userauth is OK
2025-11-03T15:38:01.780 [DEBUG] [Thread-118362] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:38:01.780 [DEBUG] [Thread-118362] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:38:01.781 [DEBUG] [Thread-118362] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:38:01.781 [DEBUG] [Thread-118362] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:38:01.805 [INFO] [Thread-118362] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:38:01.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:38:02.552 [DEBUG] [Thread-118362] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:38:02.552 [DEBUG] [Thread-118362] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:38:02.552 [DEBUG] [Thread-118362] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:38:02.592 [DEBUG] [Thread-118362] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:38:02.592 [DEBUG] [Thread-118362] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:38:02.595 [DEBUG] [Thread-118362] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:38:02.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:38:02.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:38:02.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:38:02.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:38:02.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:38:02.624 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:38:02.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:38:02.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:38:02.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:38:02.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.567464 -999.00  +27.00  39.95      7  -10.30 1 1 2 1 1   888    0 37.15 32.65 ----- 35.3 40.0 314.2 56.1 31.1 -33.4 30.7 -31.7 31.8 -34.1 32.4 -32.0
2025-11-03T15:38:02.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:38:02.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:38:02.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.567464
2025-11-03T15:38:02.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:38:02.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:38:02.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:38:02.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:38:02.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:38:02.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:37:40', tmtdew=48.01, humidity=3.22, cloud=0.0, wind=36.52, temperature=27.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:37:08.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:38:02.626 [DEBUG] [Thread-118362] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:38:02.697 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:38:02.715 [DEBUG] [Thread-118365] [transport.py] [_log()] starting thread (client mode): 0xed2d930
2025-11-03T15:38:02.715 [DEBUG] [Thread-118365] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:38:02.730 [DEBUG] [Thread-118365] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:38:02.730 [INFO] [Thread-118365] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:38:02.738 [DEBUG] [Thread-118365] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:38:02.738 [DEBUG] [Thread-118365] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:38:02.738 [DEBUG] [Thread-118365] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:38:02.739 [DEBUG] [Thread-118365] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:38:02.739 [DEBUG] [Thread-118365] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:38:02.739 [DEBUG] [Thread-118365] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:38:02.739 [DEBUG] [Thread-118365] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:38:02.739 [DEBUG] [Thread-118365] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:38:02.739 [DEBUG] [Thread-118365] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:38:02.739 [DEBUG] [Thread-118365] [transport.py] [_log()] client lang: <none>
2025-11-03T15:38:02.739 [DEBUG] [Thread-118365] [transport.py] [_log()] server lang: <none>
2025-11-03T15:38:02.739 [DEBUG] [Thread-118365] [transport.py] [_log()] kex follows: False
2025-11-03T15:38:02.739 [DEBUG] [Thread-118365] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:38:02.739 [DEBUG] [Thread-118365] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:38:02.739 [DEBUG] [Thread-118365] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:38:02.739 [DEBUG] [Thread-118365] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:38:02.739 [DEBUG] [Thread-118365] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:38:02.739 [DEBUG] [Thread-118365] [transport.py] [_log()] Compression: none
2025-11-03T15:38:02.739 [DEBUG] [Thread-118365] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:38:02.794 [DEBUG] [Thread-118365] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:38:02.795 [DEBUG] [Thread-118365] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:38:02.795 [DEBUG] [Thread-118365] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:38:02.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:38:02.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:38:02.852 [DEBUG] [Thread-118365] [transport.py] [_log()] userauth is OK
2025-11-03T15:38:02.852 [DEBUG] [Thread-118365] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:38:02.852 [DEBUG] [Thread-118365] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:38:02.852 [DEBUG] [Thread-118365] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:38:02.852 [DEBUG] [Thread-118365] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:38:02.866 [INFO] [Thread-118365] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:38:02.875 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:38:02.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:38:03.745 [DEBUG] [Thread-118365] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:38:03.750 [DEBUG] [Thread-118365] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:38:03.793 [DEBUG] [Thread-118365] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:38:03.793 [DEBUG] [Thread-118365] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:38:03.803 [DEBUG] [Thread-118365] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:38:03.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:38:03.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:38:03.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:38:03.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:38:03.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:38:03.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:38:03.841 [DEBUG] [Thread-118365] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:38:07.504 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:38:07.505 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:38:14.054 [DEBUG] [Thread-118367 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:38:17.553 [DEBUG] [Thread-118368 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:38:29.109 [DEBUG] [Thread-118369 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:38:33.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:38:33.863 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:38:33.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:38:34.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 38, 12), 48.73, 3.04, 0.0, 37.65, 27.48, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:38:34.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:38:12
2025-11-03T15:38:34.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:38:34.971 [DEBUG] [Thread-118370] [transport.py] [_log()] starting thread (client mode): 0x1179a1d0
2025-11-03T15:38:34.971 [DEBUG] [Thread-118370] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:38:34.980 [DEBUG] [Thread-118370] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:38:34.980 [INFO] [Thread-118370] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:38:34.983 [DEBUG] [Thread-118370] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:38:34.983 [DEBUG] [Thread-118370] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:38:34.983 [DEBUG] [Thread-118370] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:38:34.983 [DEBUG] [Thread-118370] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:38:34.983 [DEBUG] [Thread-118370] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:38:34.983 [DEBUG] [Thread-118370] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:38:34.983 [DEBUG] [Thread-118370] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:38:34.983 [DEBUG] [Thread-118370] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:38:34.983 [DEBUG] [Thread-118370] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:38:34.983 [DEBUG] [Thread-118370] [transport.py] [_log()] client lang: <none>
2025-11-03T15:38:34.983 [DEBUG] [Thread-118370] [transport.py] [_log()] server lang: <none>
2025-11-03T15:38:34.983 [DEBUG] [Thread-118370] [transport.py] [_log()] kex follows: False
2025-11-03T15:38:34.983 [DEBUG] [Thread-118370] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:38:34.984 [DEBUG] [Thread-118370] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:38:34.984 [DEBUG] [Thread-118370] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:38:34.984 [DEBUG] [Thread-118370] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:38:34.984 [DEBUG] [Thread-118370] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:38:34.984 [DEBUG] [Thread-118370] [transport.py] [_log()] Compression: none
2025-11-03T15:38:34.984 [DEBUG] [Thread-118370] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:38:34.998 [DEBUG] [Thread-118370] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:38:34.998 [DEBUG] [Thread-118370] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:38:34.998 [DEBUG] [Thread-118370] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:38:34.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:38:34.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:38:34.999 [DEBUG] [Thread-118370] [transport.py] [_log()] userauth is OK
2025-11-03T15:38:34.999 [DEBUG] [Thread-118370] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:38:34.999 [DEBUG] [Thread-118370] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:38:34.999 [DEBUG] [Thread-118370] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:38:34.999 [DEBUG] [Thread-118370] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:38:35.008 [INFO] [Thread-118370] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:38:35.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:38:35.653 [DEBUG] [Thread-118370] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:38:35.653 [DEBUG] [Thread-118370] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:38:35.653 [DEBUG] [Thread-118370] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:38:35.693 [DEBUG] [Thread-118370] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:38:35.693 [DEBUG] [Thread-118370] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:38:35.695 [DEBUG] [Thread-118370] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:38:35.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:38:35.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:38:35.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:38:35.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:38:35.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:38:35.711 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:38:35.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:38:35.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:38:35.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:38:35.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.567811 -999.00  +27.10  35.61      7  -10.40 1 1 2 1 1   888    0 37.73 36.17 ----- 34.2 35.6 295.0 44.0 31.1 -32.4 30.6 -32.0 31.7 -32.9 32.4 -32.0
2025-11-03T15:38:35.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:38:35.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:38:35.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.567811
2025-11-03T15:38:35.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:38:35.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:38:35.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:38:35.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:38:35.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:38:35.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:38:12', tmtdew=48.73, humidity=3.04, cloud=0.0, wind=37.65, temperature=27.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:37:38.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:38:35.712 [DEBUG] [Thread-118370] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:38:35.787 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:38:35.807 [DEBUG] [Thread-118373] [transport.py] [_log()] starting thread (client mode): 0xed8a0e0
2025-11-03T15:38:35.808 [DEBUG] [Thread-118373] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:38:35.822 [DEBUG] [Thread-118373] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:38:35.822 [INFO] [Thread-118373] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:38:35.831 [DEBUG] [Thread-118373] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:38:35.831 [DEBUG] [Thread-118373] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:38:35.831 [DEBUG] [Thread-118373] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:38:35.831 [DEBUG] [Thread-118373] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:38:35.831 [DEBUG] [Thread-118373] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:38:35.831 [DEBUG] [Thread-118373] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:38:35.831 [DEBUG] [Thread-118373] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:38:35.832 [DEBUG] [Thread-118373] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:38:35.832 [DEBUG] [Thread-118373] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:38:35.832 [DEBUG] [Thread-118373] [transport.py] [_log()] client lang: <none>
2025-11-03T15:38:35.832 [DEBUG] [Thread-118373] [transport.py] [_log()] server lang: <none>
2025-11-03T15:38:35.832 [DEBUG] [Thread-118373] [transport.py] [_log()] kex follows: False
2025-11-03T15:38:35.832 [DEBUG] [Thread-118373] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:38:35.832 [DEBUG] [Thread-118373] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:38:35.832 [DEBUG] [Thread-118373] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:38:35.832 [DEBUG] [Thread-118373] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:38:35.832 [DEBUG] [Thread-118373] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:38:35.832 [DEBUG] [Thread-118373] [transport.py] [_log()] Compression: none
2025-11-03T15:38:35.832 [DEBUG] [Thread-118373] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:38:35.887 [DEBUG] [Thread-118373] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:38:35.887 [DEBUG] [Thread-118373] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:38:35.887 [DEBUG] [Thread-118373] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:38:35.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:38:35.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:38:35.944 [DEBUG] [Thread-118373] [transport.py] [_log()] userauth is OK
2025-11-03T15:38:35.944 [DEBUG] [Thread-118373] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:38:35.944 [DEBUG] [Thread-118373] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:38:35.944 [DEBUG] [Thread-118373] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:38:35.944 [DEBUG] [Thread-118373] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:38:35.957 [INFO] [Thread-118373] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:38:35.958 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:38:35.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:38:36.811 [DEBUG] [Thread-118373] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:38:36.811 [DEBUG] [Thread-118373] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:38:36.862 [DEBUG] [Thread-118373] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:38:36.862 [DEBUG] [Thread-118373] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:38:36.870 [DEBUG] [Thread-118373] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:38:36.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:38:36.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:38:36.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:38:36.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:38:36.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:38:36.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:38:36.909 [DEBUG] [Thread-118373] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:38:44.151 [DEBUG] [Thread-118375 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:38:59.213 [DEBUG] [Thread-118376 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:39:06.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:39:06.903 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:39:06.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:39:07.645 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:39:07.645 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:39:07.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 38, 45), 48.65, 3.1, 0.0, 40.85, 27.12, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:39:07.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:38:45
2025-11-03T15:39:07.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:39:07.949 [DEBUG] [Thread-118377] [transport.py] [_log()] starting thread (client mode): 0xed8a950
2025-11-03T15:39:07.949 [DEBUG] [Thread-118377] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:39:07.969 [DEBUG] [Thread-118377] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:39:07.969 [INFO] [Thread-118377] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:39:07.971 [DEBUG] [Thread-118377] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:39:07.971 [DEBUG] [Thread-118377] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:39:07.971 [DEBUG] [Thread-118377] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:39:07.971 [DEBUG] [Thread-118377] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:39:07.971 [DEBUG] [Thread-118377] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:39:07.971 [DEBUG] [Thread-118377] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:39:07.971 [DEBUG] [Thread-118377] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:39:07.971 [DEBUG] [Thread-118377] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:39:07.971 [DEBUG] [Thread-118377] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:39:07.971 [DEBUG] [Thread-118377] [transport.py] [_log()] client lang: <none>
2025-11-03T15:39:07.971 [DEBUG] [Thread-118377] [transport.py] [_log()] server lang: <none>
2025-11-03T15:39:07.971 [DEBUG] [Thread-118377] [transport.py] [_log()] kex follows: False
2025-11-03T15:39:07.971 [DEBUG] [Thread-118377] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:39:07.971 [DEBUG] [Thread-118377] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:39:07.980 [DEBUG] [Thread-118377] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:39:07.980 [DEBUG] [Thread-118377] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:39:07.980 [DEBUG] [Thread-118377] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:39:07.980 [DEBUG] [Thread-118377] [transport.py] [_log()] Compression: none
2025-11-03T15:39:07.980 [DEBUG] [Thread-118377] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:39:07.992 [DEBUG] [Thread-118377] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:39:07.992 [DEBUG] [Thread-118377] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:39:07.992 [DEBUG] [Thread-118377] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:39:07.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:39:07.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:39:07.993 [DEBUG] [Thread-118377] [transport.py] [_log()] userauth is OK
2025-11-03T15:39:07.993 [DEBUG] [Thread-118377] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:39:07.993 [DEBUG] [Thread-118377] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:39:07.993 [DEBUG] [Thread-118377] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:39:07.993 [DEBUG] [Thread-118377] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:39:08.008 [INFO] [Thread-118377] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:39:08.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:39:08.839 [DEBUG] [Thread-118377] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:39:08.840 [DEBUG] [Thread-118377] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:39:08.841 [DEBUG] [Thread-118377] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:39:08.881 [DEBUG] [Thread-118377] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:39:08.881 [DEBUG] [Thread-118377] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:39:08.885 [DEBUG] [Thread-118377] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:39:08.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:39:08.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:39:08.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:39:08.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:39:08.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:39:08.918 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:39:08.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:39:08.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:39:08.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:39:08.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.568158 -999.00  +27.10  35.50      7  -10.60 1 1 2 1 1   888    0 38.43 42.34 ----- 29.4 35.5 307.4 50.2 30.9 -33.2 30.6 -31.8 31.6 -32.3 32.3 -31.8
2025-11-03T15:39:08.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:39:08.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:39:08.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.568158
2025-11-03T15:39:08.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:39:08.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:39:08.921 [DEBUG] [Thread-118377] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:39:08.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:39:08.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:39:08.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:39:08.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:38:45', tmtdew=48.65, humidity=3.1, cloud=0.0, wind=40.85, temperature=27.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:38:08.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:39:09.006 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:39:09.027 [DEBUG] [Thread-118380] [transport.py] [_log()] starting thread (client mode): 0xed890c0
2025-11-03T15:39:09.027 [DEBUG] [Thread-118380] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:39:09.042 [DEBUG] [Thread-118380] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:39:09.042 [INFO] [Thread-118380] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:39:09.051 [DEBUG] [Thread-118380] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:39:09.051 [DEBUG] [Thread-118380] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:39:09.051 [DEBUG] [Thread-118380] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:39:09.051 [DEBUG] [Thread-118380] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:39:09.051 [DEBUG] [Thread-118380] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:39:09.051 [DEBUG] [Thread-118380] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:39:09.051 [DEBUG] [Thread-118380] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:39:09.051 [DEBUG] [Thread-118380] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:39:09.052 [DEBUG] [Thread-118380] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:39:09.052 [DEBUG] [Thread-118380] [transport.py] [_log()] client lang: <none>
2025-11-03T15:39:09.052 [DEBUG] [Thread-118380] [transport.py] [_log()] server lang: <none>
2025-11-03T15:39:09.052 [DEBUG] [Thread-118380] [transport.py] [_log()] kex follows: False
2025-11-03T15:39:09.052 [DEBUG] [Thread-118380] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:39:09.052 [DEBUG] [Thread-118380] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:39:09.052 [DEBUG] [Thread-118380] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:39:09.052 [DEBUG] [Thread-118380] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:39:09.052 [DEBUG] [Thread-118380] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:39:09.052 [DEBUG] [Thread-118380] [transport.py] [_log()] Compression: none
2025-11-03T15:39:09.052 [DEBUG] [Thread-118380] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:39:09.109 [DEBUG] [Thread-118380] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:39:09.109 [DEBUG] [Thread-118380] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:39:09.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:39:09.110 [DEBUG] [Thread-118380] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:39:09.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:39:09.165 [DEBUG] [Thread-118380] [transport.py] [_log()] userauth is OK
2025-11-03T15:39:09.165 [DEBUG] [Thread-118380] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:39:09.165 [DEBUG] [Thread-118380] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:39:09.165 [DEBUG] [Thread-118380] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:39:09.165 [DEBUG] [Thread-118380] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:39:09.189 [INFO] [Thread-118380] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:39:09.198 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:39:09.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:39:10.022 [DEBUG] [Thread-118380] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:39:10.023 [DEBUG] [Thread-118380] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:39:10.072 [DEBUG] [Thread-118380] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:39:10.072 [DEBUG] [Thread-118380] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:39:10.081 [DEBUG] [Thread-118380] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:39:10.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:39:10.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:39:10.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:39:10.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:39:10.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:39:10.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:39:10.117 [DEBUG] [Thread-118380] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:39:14.258 [DEBUG] [Thread-118382 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:39:17.606 [DEBUG] [Thread-118383 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:39:29.310 [DEBUG] [Thread-118384 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:39:40.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:39:40.139 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:39:40.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:39:40.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 39, 17), 48.67, 3.12, 0.0, 38.29, 27.35, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:39:40.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:39:17
2025-11-03T15:39:41.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:39:41.173 [DEBUG] [Thread-118385] [transport.py] [_log()] starting thread (client mode): 0xed8b580
2025-11-03T15:39:41.173 [DEBUG] [Thread-118385] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:39:41.192 [DEBUG] [Thread-118385] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:39:41.193 [INFO] [Thread-118385] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:39:41.196 [DEBUG] [Thread-118385] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:39:41.196 [DEBUG] [Thread-118385] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:39:41.196 [DEBUG] [Thread-118385] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:39:41.196 [DEBUG] [Thread-118385] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:39:41.196 [DEBUG] [Thread-118385] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:39:41.196 [DEBUG] [Thread-118385] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:39:41.196 [DEBUG] [Thread-118385] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:39:41.197 [DEBUG] [Thread-118385] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:39:41.197 [DEBUG] [Thread-118385] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:39:41.197 [DEBUG] [Thread-118385] [transport.py] [_log()] client lang: <none>
2025-11-03T15:39:41.197 [DEBUG] [Thread-118385] [transport.py] [_log()] server lang: <none>
2025-11-03T15:39:41.197 [DEBUG] [Thread-118385] [transport.py] [_log()] kex follows: False
2025-11-03T15:39:41.197 [DEBUG] [Thread-118385] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:39:41.197 [DEBUG] [Thread-118385] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:39:41.197 [DEBUG] [Thread-118385] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:39:41.197 [DEBUG] [Thread-118385] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:39:41.197 [DEBUG] [Thread-118385] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:39:41.197 [DEBUG] [Thread-118385] [transport.py] [_log()] Compression: none
2025-11-03T15:39:41.197 [DEBUG] [Thread-118385] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:39:41.226 [DEBUG] [Thread-118385] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:39:41.226 [DEBUG] [Thread-118385] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:39:41.227 [DEBUG] [Thread-118385] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:39:41.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:39:41.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:39:41.229 [DEBUG] [Thread-118385] [transport.py] [_log()] userauth is OK
2025-11-03T15:39:41.229 [DEBUG] [Thread-118385] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:39:41.229 [DEBUG] [Thread-118385] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:39:41.229 [DEBUG] [Thread-118385] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:39:41.229 [DEBUG] [Thread-118385] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:39:41.254 [INFO] [Thread-118385] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:39:41.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:39:41.905 [DEBUG] [Thread-118385] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:39:41.906 [DEBUG] [Thread-118385] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:39:41.906 [DEBUG] [Thread-118385] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:39:41.947 [DEBUG] [Thread-118385] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:39:41.947 [DEBUG] [Thread-118385] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:39:41.951 [DEBUG] [Thread-118385] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:39:41.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:39:41.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:39:41.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:39:41.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:39:41.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:39:41.976 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:39:41.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:39:41.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:39:41.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:39:41.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.568853 -999.00  +27.00  34.16      7  -10.80 1 1 2 1 1   888    0 38.54 60.23 ----- 29.9 34.2 300.8 42.2 30.9 -32.8 30.6 -32.6 31.6 -34.0 32.2 -31.9
2025-11-03T15:39:41.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:39:41.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:39:41.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.568853
2025-11-03T15:39:41.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:39:41.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:39:41.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:39:41.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:39:41.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:39:41.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:39:17', tmtdew=48.67, humidity=3.12, cloud=0.0, wind=38.29, temperature=27.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:39:08.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:39:41.979 [DEBUG] [Thread-118385] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:39:42.062 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:39:42.081 [DEBUG] [Thread-118388] [transport.py] [_log()] starting thread (client mode): 0xed8a4d0
2025-11-03T15:39:42.082 [DEBUG] [Thread-118388] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:39:42.097 [DEBUG] [Thread-118388] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:39:42.097 [INFO] [Thread-118388] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:39:42.105 [DEBUG] [Thread-118388] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:39:42.105 [DEBUG] [Thread-118388] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:39:42.105 [DEBUG] [Thread-118388] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:39:42.105 [DEBUG] [Thread-118388] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:39:42.106 [DEBUG] [Thread-118388] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:39:42.106 [DEBUG] [Thread-118388] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:39:42.106 [DEBUG] [Thread-118388] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:39:42.106 [DEBUG] [Thread-118388] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:39:42.106 [DEBUG] [Thread-118388] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:39:42.106 [DEBUG] [Thread-118388] [transport.py] [_log()] client lang: <none>
2025-11-03T15:39:42.106 [DEBUG] [Thread-118388] [transport.py] [_log()] server lang: <none>
2025-11-03T15:39:42.106 [DEBUG] [Thread-118388] [transport.py] [_log()] kex follows: False
2025-11-03T15:39:42.106 [DEBUG] [Thread-118388] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:39:42.106 [DEBUG] [Thread-118388] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:39:42.106 [DEBUG] [Thread-118388] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:39:42.106 [DEBUG] [Thread-118388] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:39:42.106 [DEBUG] [Thread-118388] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:39:42.106 [DEBUG] [Thread-118388] [transport.py] [_log()] Compression: none
2025-11-03T15:39:42.106 [DEBUG] [Thread-118388] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:39:42.164 [DEBUG] [Thread-118388] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:39:42.165 [DEBUG] [Thread-118388] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:39:42.166 [DEBUG] [Thread-118388] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:39:42.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:39:42.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:39:42.222 [DEBUG] [Thread-118388] [transport.py] [_log()] userauth is OK
2025-11-03T15:39:42.222 [DEBUG] [Thread-118388] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:39:42.222 [DEBUG] [Thread-118388] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:39:42.222 [DEBUG] [Thread-118388] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:39:42.222 [DEBUG] [Thread-118388] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:39:42.241 [INFO] [Thread-118388] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:39:42.242 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:39:42.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:39:43.130 [DEBUG] [Thread-118388] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:39:43.130 [DEBUG] [Thread-118388] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:39:43.179 [DEBUG] [Thread-118388] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:39:43.179 [DEBUG] [Thread-118388] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:39:43.189 [DEBUG] [Thread-118388] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:39:43.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:39:43.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:39:43.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:39:43.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:39:43.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:39:43.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:39:43.222 [DEBUG] [Thread-118388] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:39:44.355 [DEBUG] [Thread-118390 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:39:59.427 [DEBUG] [Thread-118391 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:40:07.785 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:40:07.786 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:40:13.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:40:13.230 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:40:13.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:40:13.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 39, 49), 48.52, 3.04, 0.0, 36.22, 27.0, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:40:13.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:39:49
2025-11-03T15:40:14.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:40:14.191 [DEBUG] [Thread-118392] [transport.py] [_log()] starting thread (client mode): 0xed4f8e0
2025-11-03T15:40:14.192 [DEBUG] [Thread-118392] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:40:14.212 [DEBUG] [Thread-118392] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:40:14.212 [INFO] [Thread-118392] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:40:14.215 [DEBUG] [Thread-118392] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:40:14.216 [DEBUG] [Thread-118392] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:40:14.216 [DEBUG] [Thread-118392] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:40:14.216 [DEBUG] [Thread-118392] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:40:14.216 [DEBUG] [Thread-118392] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:40:14.216 [DEBUG] [Thread-118392] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:40:14.216 [DEBUG] [Thread-118392] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:40:14.216 [DEBUG] [Thread-118392] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:40:14.216 [DEBUG] [Thread-118392] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:40:14.217 [DEBUG] [Thread-118392] [transport.py] [_log()] client lang: <none>
2025-11-03T15:40:14.217 [DEBUG] [Thread-118392] [transport.py] [_log()] server lang: <none>
2025-11-03T15:40:14.217 [DEBUG] [Thread-118392] [transport.py] [_log()] kex follows: False
2025-11-03T15:40:14.217 [DEBUG] [Thread-118392] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:40:14.217 [DEBUG] [Thread-118392] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:40:14.217 [DEBUG] [Thread-118392] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:40:14.217 [DEBUG] [Thread-118392] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:40:14.217 [DEBUG] [Thread-118392] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:40:14.217 [DEBUG] [Thread-118392] [transport.py] [_log()] Compression: none
2025-11-03T15:40:14.217 [DEBUG] [Thread-118392] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:40:14.241 [DEBUG] [Thread-118392] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:40:14.241 [DEBUG] [Thread-118392] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:40:14.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:40:14.242 [DEBUG] [Thread-118392] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:40:14.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:40:14.285 [DEBUG] [Thread-118392] [transport.py] [_log()] userauth is OK
2025-11-03T15:40:14.285 [DEBUG] [Thread-118392] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:40:14.285 [DEBUG] [Thread-118392] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:40:14.285 [DEBUG] [Thread-118392] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:40:14.285 [DEBUG] [Thread-118392] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:40:14.305 [INFO] [Thread-118392] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:40:14.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:40:14.472 [DEBUG] [Thread-118394 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:40:17.679 [DEBUG] [Thread-118395 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:40:17.892 [DEBUG] [Thread-118392] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:40:17.893 [DEBUG] [Thread-118392] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:40:17.893 [DEBUG] [Thread-118392] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:40:17.934 [DEBUG] [Thread-118392] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:40:17.934 [DEBUG] [Thread-118392] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:40:17.937 [DEBUG] [Thread-118392] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:40:17.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:40:17.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:40:17.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:40:17.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:40:17.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:40:17.963 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:40:17.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:40:17.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:40:17.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:40:17.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.569547 -999.00  +26.70  31.69      7  -10.60 1 1 2 1 1   888    0 38.91 78.37 ----- 31.0 31.7 295.0 43.7 30.9 -33.4 30.6 -31.9 31.4 -34.1 32.1 -32.3
2025-11-03T15:40:17.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:40:17.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:40:17.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.569547
2025-11-03T15:40:17.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:40:17.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:40:17.966 [DEBUG] [Thread-118392] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:40:17.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:40:17.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:40:17.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:40:17.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:39:49', tmtdew=48.52, humidity=3.04, cloud=0.0, wind=36.22, temperature=27.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:40:08.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:40:18.053 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:40:18.084 [DEBUG] [Thread-118397] [transport.py] [_log()] starting thread (client mode): 0x117bd180
2025-11-03T15:40:18.084 [DEBUG] [Thread-118397] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:40:18.112 [DEBUG] [Thread-118397] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:40:18.113 [INFO] [Thread-118397] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:40:18.120 [DEBUG] [Thread-118397] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:40:18.120 [DEBUG] [Thread-118397] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:40:18.120 [DEBUG] [Thread-118397] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:40:18.121 [DEBUG] [Thread-118397] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:40:18.121 [DEBUG] [Thread-118397] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:40:18.121 [DEBUG] [Thread-118397] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:40:18.121 [DEBUG] [Thread-118397] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:40:18.121 [DEBUG] [Thread-118397] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:40:18.121 [DEBUG] [Thread-118397] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:40:18.121 [DEBUG] [Thread-118397] [transport.py] [_log()] client lang: <none>
2025-11-03T15:40:18.121 [DEBUG] [Thread-118397] [transport.py] [_log()] server lang: <none>
2025-11-03T15:40:18.121 [DEBUG] [Thread-118397] [transport.py] [_log()] kex follows: False
2025-11-03T15:40:18.121 [DEBUG] [Thread-118397] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:40:18.122 [DEBUG] [Thread-118397] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:40:18.122 [DEBUG] [Thread-118397] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:40:18.122 [DEBUG] [Thread-118397] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:40:18.122 [DEBUG] [Thread-118397] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:40:18.122 [DEBUG] [Thread-118397] [transport.py] [_log()] Compression: none
2025-11-03T15:40:18.122 [DEBUG] [Thread-118397] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:40:18.181 [DEBUG] [Thread-118397] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:40:18.181 [DEBUG] [Thread-118397] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:40:18.182 [DEBUG] [Thread-118397] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:40:18.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:40:18.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:40:18.237 [DEBUG] [Thread-118397] [transport.py] [_log()] userauth is OK
2025-11-03T15:40:18.237 [DEBUG] [Thread-118397] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:40:18.237 [DEBUG] [Thread-118397] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:40:18.237 [DEBUG] [Thread-118397] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:40:18.237 [DEBUG] [Thread-118397] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:40:18.256 [INFO] [Thread-118397] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:40:18.256 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:40:18.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:40:19.096 [DEBUG] [Thread-118397] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:40:19.096 [DEBUG] [Thread-118397] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:40:19.143 [DEBUG] [Thread-118397] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:40:19.143 [DEBUG] [Thread-118397] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:40:19.151 [DEBUG] [Thread-118397] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:40:19.159 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:40:19.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:40:19.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:40:19.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:40:19.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:40:19.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:40:19.188 [DEBUG] [Thread-118397] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:40:29.511 [DEBUG] [Thread-118399 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:40:44.577 [DEBUG] [Thread-118400 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:40:49.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:40:49.211 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:40:49.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:40:49.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 40, 22), 48.38, 3.07, 0.0, 41.43, 26.96, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:40:49.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:40:22
2025-11-03T15:40:50.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:40:50.242 [DEBUG] [Thread-118401] [transport.py] [_log()] starting thread (client mode): 0xed89f00
2025-11-03T15:40:50.243 [DEBUG] [Thread-118401] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:40:50.263 [DEBUG] [Thread-118401] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:40:50.263 [INFO] [Thread-118401] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:40:50.266 [DEBUG] [Thread-118401] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:40:50.266 [DEBUG] [Thread-118401] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:40:50.266 [DEBUG] [Thread-118401] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:40:50.266 [DEBUG] [Thread-118401] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:40:50.266 [DEBUG] [Thread-118401] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:40:50.266 [DEBUG] [Thread-118401] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:40:50.267 [DEBUG] [Thread-118401] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:40:50.267 [DEBUG] [Thread-118401] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:40:50.267 [DEBUG] [Thread-118401] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:40:50.267 [DEBUG] [Thread-118401] [transport.py] [_log()] client lang: <none>
2025-11-03T15:40:50.267 [DEBUG] [Thread-118401] [transport.py] [_log()] server lang: <none>
2025-11-03T15:40:50.267 [DEBUG] [Thread-118401] [transport.py] [_log()] kex follows: False
2025-11-03T15:40:50.267 [DEBUG] [Thread-118401] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:40:50.267 [DEBUG] [Thread-118401] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:40:50.267 [DEBUG] [Thread-118401] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:40:50.267 [DEBUG] [Thread-118401] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:40:50.267 [DEBUG] [Thread-118401] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:40:50.267 [DEBUG] [Thread-118401] [transport.py] [_log()] Compression: none
2025-11-03T15:40:50.267 [DEBUG] [Thread-118401] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:40:50.285 [DEBUG] [Thread-118401] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:40:50.286 [DEBUG] [Thread-118401] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:40:50.286 [DEBUG] [Thread-118401] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:40:50.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:40:50.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:40:50.288 [DEBUG] [Thread-118401] [transport.py] [_log()] userauth is OK
2025-11-03T15:40:50.288 [DEBUG] [Thread-118401] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:40:50.289 [DEBUG] [Thread-118401] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:40:50.289 [DEBUG] [Thread-118401] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:40:50.289 [DEBUG] [Thread-118401] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:40:50.324 [INFO] [Thread-118401] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:40:50.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:40:50.897 [DEBUG] [Thread-118401] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:40:50.897 [DEBUG] [Thread-118401] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:40:50.897 [DEBUG] [Thread-118401] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:40:50.939 [DEBUG] [Thread-118401] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:40:50.939 [DEBUG] [Thread-118401] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:40:50.941 [DEBUG] [Thread-118401] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:40:50.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:40:50.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:40:50.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:40:50.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:40:50.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:40:50.962 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:40:50.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:40:50.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:40:50.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:40:50.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.569894 -999.00  +26.50  38.55      7  -10.50 1 1 2 1 1   888    0 39.00 83.69 ----- 29.0 38.5 312.0 47.7 30.9 -33.0 30.5 -31.1 31.4 -34.4 32.1 -31.4
2025-11-03T15:40:50.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:40:50.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:40:50.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.569894
2025-11-03T15:40:50.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:40:50.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:40:50.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:40:50.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:40:50.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:40:50.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:40:22', tmtdew=48.38, humidity=3.07, cloud=0.0, wind=41.43, temperature=26.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:40:38.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:40:50.966 [DEBUG] [Thread-118401] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:40:51.035 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:40:51.056 [DEBUG] [Thread-118404] [transport.py] [_log()] starting thread (client mode): 0xed8ab30
2025-11-03T15:40:51.056 [DEBUG] [Thread-118404] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:40:51.073 [DEBUG] [Thread-118404] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:40:51.073 [INFO] [Thread-118404] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:40:51.080 [DEBUG] [Thread-118404] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:40:51.080 [DEBUG] [Thread-118404] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:40:51.080 [DEBUG] [Thread-118404] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:40:51.081 [DEBUG] [Thread-118404] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:40:51.081 [DEBUG] [Thread-118404] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:40:51.081 [DEBUG] [Thread-118404] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:40:51.081 [DEBUG] [Thread-118404] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:40:51.081 [DEBUG] [Thread-118404] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:40:51.081 [DEBUG] [Thread-118404] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:40:51.081 [DEBUG] [Thread-118404] [transport.py] [_log()] client lang: <none>
2025-11-03T15:40:51.081 [DEBUG] [Thread-118404] [transport.py] [_log()] server lang: <none>
2025-11-03T15:40:51.081 [DEBUG] [Thread-118404] [transport.py] [_log()] kex follows: False
2025-11-03T15:40:51.081 [DEBUG] [Thread-118404] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:40:51.081 [DEBUG] [Thread-118404] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:40:51.081 [DEBUG] [Thread-118404] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:40:51.081 [DEBUG] [Thread-118404] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:40:51.081 [DEBUG] [Thread-118404] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:40:51.081 [DEBUG] [Thread-118404] [transport.py] [_log()] Compression: none
2025-11-03T15:40:51.081 [DEBUG] [Thread-118404] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:40:51.139 [DEBUG] [Thread-118404] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:40:51.139 [DEBUG] [Thread-118404] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:40:51.139 [DEBUG] [Thread-118404] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:40:51.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:40:51.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:40:51.201 [DEBUG] [Thread-118404] [transport.py] [_log()] userauth is OK
2025-11-03T15:40:51.201 [DEBUG] [Thread-118404] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:40:51.201 [DEBUG] [Thread-118404] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:40:51.201 [DEBUG] [Thread-118404] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:40:51.201 [DEBUG] [Thread-118404] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:40:51.215 [INFO] [Thread-118404] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:40:51.215 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:40:51.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:40:52.177 [DEBUG] [Thread-118404] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:40:52.178 [DEBUG] [Thread-118404] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:40:52.226 [DEBUG] [Thread-118404] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:40:52.226 [DEBUG] [Thread-118404] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:40:52.235 [DEBUG] [Thread-118404] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:40:52.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:40:52.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:40:52.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:40:52.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:40:52.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:40:52.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:40:52.270 [DEBUG] [Thread-118404] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:40:59.625 [DEBUG] [Thread-118406 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:41:07.927 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:41:07.929 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:41:14.678 [DEBUG] [Thread-118407 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:41:17.735 [DEBUG] [Thread-118408 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:41:22.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:41:22.294 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:41:22.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:41:23.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 40, 54), 47.95, 3.12, 0.0, 39.38, 26.88, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:41:23.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:40:54
2025-11-03T15:41:23.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:41:23.326 [DEBUG] [Thread-118409] [transport.py] [_log()] starting thread (client mode): 0x1174e7d0
2025-11-03T15:41:23.326 [DEBUG] [Thread-118409] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:41:23.345 [DEBUG] [Thread-118409] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:41:23.345 [INFO] [Thread-118409] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:41:23.347 [DEBUG] [Thread-118409] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:41:23.347 [DEBUG] [Thread-118409] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:41:23.347 [DEBUG] [Thread-118409] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:41:23.347 [DEBUG] [Thread-118409] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:41:23.348 [DEBUG] [Thread-118409] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:41:23.348 [DEBUG] [Thread-118409] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:41:23.348 [DEBUG] [Thread-118409] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:41:23.348 [DEBUG] [Thread-118409] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:41:23.348 [DEBUG] [Thread-118409] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:41:23.348 [DEBUG] [Thread-118409] [transport.py] [_log()] client lang: <none>
2025-11-03T15:41:23.348 [DEBUG] [Thread-118409] [transport.py] [_log()] server lang: <none>
2025-11-03T15:41:23.348 [DEBUG] [Thread-118409] [transport.py] [_log()] kex follows: False
2025-11-03T15:41:23.349 [DEBUG] [Thread-118409] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:41:23.349 [DEBUG] [Thread-118409] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:41:23.349 [DEBUG] [Thread-118409] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:41:23.349 [DEBUG] [Thread-118409] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:41:23.349 [DEBUG] [Thread-118409] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:41:23.349 [DEBUG] [Thread-118409] [transport.py] [_log()] Compression: none
2025-11-03T15:41:23.349 [DEBUG] [Thread-118409] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:41:23.359 [DEBUG] [Thread-118409] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:41:23.359 [DEBUG] [Thread-118409] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:41:23.360 [DEBUG] [Thread-118409] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:41:23.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:41:23.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:41:23.361 [DEBUG] [Thread-118409] [transport.py] [_log()] userauth is OK
2025-11-03T15:41:23.362 [DEBUG] [Thread-118409] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:41:23.362 [DEBUG] [Thread-118409] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:41:23.362 [DEBUG] [Thread-118409] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:41:23.362 [DEBUG] [Thread-118409] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:41:23.377 [INFO] [Thread-118409] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:41:23.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:41:23.937 [DEBUG] [Thread-118409] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:41:23.937 [DEBUG] [Thread-118409] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:41:23.938 [DEBUG] [Thread-118409] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:41:23.978 [DEBUG] [Thread-118409] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:41:23.978 [DEBUG] [Thread-118409] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:41:23.980 [DEBUG] [Thread-118409] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:41:23.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:41:23.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:41:23.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:41:23.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:41:23.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:41:23.997 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:41:23.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:41:23.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:41:23.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:41:23.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.569894 -999.00  +26.50  38.55      7  -10.50 1 1 2 1 1   888    0 39.00 83.69 ----- 29.0 38.5 312.0 47.7 30.9 -33.0 30.5 -31.1 31.4 -34.4 32.1 -31.4
2025-11-03T15:41:23.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:41:23.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:41:23.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.569894
2025-11-03T15:41:23.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:41:24.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:41:24.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:41:24.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:41:24.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:41:24.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:40:54', tmtdew=47.95, humidity=3.12, cloud=0.0, wind=39.38, temperature=26.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:40:38.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:41:24.001 [DEBUG] [Thread-118409] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:41:24.089 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:41:29.716 [DEBUG] [Thread-118412 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:41:44.782 [DEBUG] [Thread-118413 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:41:59.821 [DEBUG] [Thread-118414 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:42:08.075 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:42:08.077 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:42:14.859 [DEBUG] [Thread-118415 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:42:17.803 [DEBUG] [Thread-118416 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:42:29.895 [DEBUG] [Thread-118417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:42:44.931 [DEBUG] [Thread-118418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:42:59.974 [DEBUG] [Thread-118419 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:43:08.219 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:43:08.228 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:43:15.019 [DEBUG] [Thread-118420 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:43:17.879 [DEBUG] [Thread-118421 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:43:30.063 [DEBUG] [Thread-118422 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:43:36.043 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T15:43:45.106 [DEBUG] [Thread-118423 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:44:00.146 [DEBUG] [Thread-118424 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:44:06.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:44:06.093 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:44:06.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:44:06.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 43, 36), 48.65, 3.15, 0.0, 43.58, 26.88, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:44:06.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:43:36
2025-11-03T15:44:06.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:44:07.123 [DEBUG] [Thread-118425] [transport.py] [_log()] starting thread (client mode): 0xed4e1d0
2025-11-03T15:44:07.124 [DEBUG] [Thread-118425] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:44:07.137 [DEBUG] [Thread-118425] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:44:07.138 [INFO] [Thread-118425] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:44:07.146 [DEBUG] [Thread-118425] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:44:07.147 [DEBUG] [Thread-118425] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:44:07.147 [DEBUG] [Thread-118425] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:44:07.147 [DEBUG] [Thread-118425] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:44:07.147 [DEBUG] [Thread-118425] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:44:07.147 [DEBUG] [Thread-118425] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:44:07.148 [DEBUG] [Thread-118425] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:44:07.148 [DEBUG] [Thread-118425] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:44:07.148 [DEBUG] [Thread-118425] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:44:07.148 [DEBUG] [Thread-118425] [transport.py] [_log()] client lang: <none>
2025-11-03T15:44:07.148 [DEBUG] [Thread-118425] [transport.py] [_log()] server lang: <none>
2025-11-03T15:44:07.149 [DEBUG] [Thread-118425] [transport.py] [_log()] kex follows: False
2025-11-03T15:44:07.149 [DEBUG] [Thread-118425] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:44:07.151 [DEBUG] [Thread-118425] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:44:07.151 [DEBUG] [Thread-118425] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:44:07.152 [DEBUG] [Thread-118425] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:44:07.152 [DEBUG] [Thread-118425] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:44:07.152 [DEBUG] [Thread-118425] [transport.py] [_log()] Compression: none
2025-11-03T15:44:07.152 [DEBUG] [Thread-118425] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:44:07.197 [DEBUG] [Thread-118425] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:44:07.202 [DEBUG] [Thread-118425] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:44:07.204 [DEBUG] [Thread-118425] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:44:07.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:44:07.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:44:07.209 [DEBUG] [Thread-118425] [transport.py] [_log()] userauth is OK
2025-11-03T15:44:07.209 [DEBUG] [Thread-118425] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:44:07.210 [DEBUG] [Thread-118425] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:44:07.210 [DEBUG] [Thread-118425] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:44:07.210 [DEBUG] [Thread-118425] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:44:07.236 [INFO] [Thread-118425] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:44:07.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:44:07.831 [DEBUG] [Thread-118425] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:44:07.831 [DEBUG] [Thread-118425] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:44:07.832 [DEBUG] [Thread-118425] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:44:07.873 [DEBUG] [Thread-118425] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:44:07.873 [DEBUG] [Thread-118425] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:44:07.875 [DEBUG] [Thread-118425] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:44:07.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:44:07.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:44:07.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:44:07.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:44:07.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:44:07.897 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:44:07.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:44:07.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:44:07.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:44:07.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.571630 -999.00  +26.90  49.44      7  -10.90 1 1 2 1 1   888    0 39.27 110.19 ----- 42.2 49.4 309.6 56.0 30.9 -32.8 30.4 -33.9 31.6 -31.9 32.1 -31.6
2025-11-03T15:44:07.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:44:07.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:44:07.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.571630
2025-11-03T15:44:07.904 [DEBUG] [Thread-118425] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:44:07.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:44:07.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:44:07.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:44:07.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:44:07.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:44:07.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:43:36', tmtdew=48.65, humidity=3.15, cloud=0.0, wind=43.58, temperature=26.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:43:08.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:44:07.990 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:44:08.010 [DEBUG] [Thread-118428] [transport.py] [_log()] starting thread (client mode): 0x1174c8b0
2025-11-03T15:44:08.011 [DEBUG] [Thread-118428] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:44:08.025 [DEBUG] [Thread-118428] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:44:08.025 [INFO] [Thread-118428] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:44:08.033 [DEBUG] [Thread-118428] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:44:08.033 [DEBUG] [Thread-118428] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:44:08.033 [DEBUG] [Thread-118428] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:44:08.033 [DEBUG] [Thread-118428] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:44:08.033 [DEBUG] [Thread-118428] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:44:08.033 [DEBUG] [Thread-118428] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:44:08.033 [DEBUG] [Thread-118428] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:44:08.033 [DEBUG] [Thread-118428] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:44:08.033 [DEBUG] [Thread-118428] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:44:08.033 [DEBUG] [Thread-118428] [transport.py] [_log()] client lang: <none>
2025-11-03T15:44:08.033 [DEBUG] [Thread-118428] [transport.py] [_log()] server lang: <none>
2025-11-03T15:44:08.033 [DEBUG] [Thread-118428] [transport.py] [_log()] kex follows: False
2025-11-03T15:44:08.033 [DEBUG] [Thread-118428] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:44:08.033 [DEBUG] [Thread-118428] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:44:08.033 [DEBUG] [Thread-118428] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:44:08.033 [DEBUG] [Thread-118428] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:44:08.033 [DEBUG] [Thread-118428] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:44:08.033 [DEBUG] [Thread-118428] [transport.py] [_log()] Compression: none
2025-11-03T15:44:08.034 [DEBUG] [Thread-118428] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:44:08.094 [DEBUG] [Thread-118428] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:44:08.094 [DEBUG] [Thread-118428] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:44:08.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:44:08.094 [DEBUG] [Thread-118428] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:44:08.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:44:08.151 [DEBUG] [Thread-118428] [transport.py] [_log()] userauth is OK
2025-11-03T15:44:08.151 [DEBUG] [Thread-118428] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:44:08.151 [DEBUG] [Thread-118428] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:44:08.151 [DEBUG] [Thread-118428] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:44:08.151 [DEBUG] [Thread-118428] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:44:08.166 [INFO] [Thread-118428] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:44:08.166 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:44:08.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:44:08.372 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:44:08.373 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:44:09.020 [DEBUG] [Thread-118428] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:44:09.020 [DEBUG] [Thread-118428] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:44:09.068 [DEBUG] [Thread-118428] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:44:09.068 [DEBUG] [Thread-118428] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:44:09.077 [DEBUG] [Thread-118428] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:44:09.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:44:09.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:44:09.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:44:09.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:44:09.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:44:09.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:44:09.114 [DEBUG] [Thread-118428] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:44:15.189 [DEBUG] [Thread-118430 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:44:17.940 [DEBUG] [Thread-118431 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:44:30.311 [DEBUG] [Thread-118432 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:44:39.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:44:39.134 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:44:39.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:44:39.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 44, 8), 49.13, 3.04, 0.0, 36.77, 27.07, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:44:39.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:44:08
2025-11-03T15:44:39.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:44:40.097 [DEBUG] [Thread-118433] [transport.py] [_log()] starting thread (client mode): 0x1174c160
2025-11-03T15:44:40.098 [DEBUG] [Thread-118433] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:44:40.118 [DEBUG] [Thread-118433] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:44:40.118 [INFO] [Thread-118433] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:44:40.122 [DEBUG] [Thread-118433] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:44:40.122 [DEBUG] [Thread-118433] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:44:40.122 [DEBUG] [Thread-118433] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:44:40.122 [DEBUG] [Thread-118433] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:44:40.122 [DEBUG] [Thread-118433] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:44:40.122 [DEBUG] [Thread-118433] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:44:40.122 [DEBUG] [Thread-118433] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:44:40.122 [DEBUG] [Thread-118433] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:44:40.122 [DEBUG] [Thread-118433] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:44:40.122 [DEBUG] [Thread-118433] [transport.py] [_log()] client lang: <none>
2025-11-03T15:44:40.122 [DEBUG] [Thread-118433] [transport.py] [_log()] server lang: <none>
2025-11-03T15:44:40.122 [DEBUG] [Thread-118433] [transport.py] [_log()] kex follows: False
2025-11-03T15:44:40.122 [DEBUG] [Thread-118433] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:44:40.122 [DEBUG] [Thread-118433] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:44:40.122 [DEBUG] [Thread-118433] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:44:40.122 [DEBUG] [Thread-118433] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:44:40.122 [DEBUG] [Thread-118433] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:44:40.122 [DEBUG] [Thread-118433] [transport.py] [_log()] Compression: none
2025-11-03T15:44:40.122 [DEBUG] [Thread-118433] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:44:40.137 [DEBUG] [Thread-118433] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:44:40.138 [DEBUG] [Thread-118433] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:44:40.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:44:40.138 [DEBUG] [Thread-118433] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:44:40.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:44:40.138 [DEBUG] [Thread-118433] [transport.py] [_log()] userauth is OK
2025-11-03T15:44:40.138 [DEBUG] [Thread-118433] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:44:40.138 [DEBUG] [Thread-118433] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:44:40.138 [DEBUG] [Thread-118433] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:44:40.138 [DEBUG] [Thread-118433] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:44:40.148 [INFO] [Thread-118433] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:44:40.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:44:40.997 [DEBUG] [Thread-118433] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:44:40.997 [DEBUG] [Thread-118433] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:44:40.998 [DEBUG] [Thread-118433] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:44:41.039 [DEBUG] [Thread-118433] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:44:41.039 [DEBUG] [Thread-118433] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:44:41.042 [DEBUG] [Thread-118433] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:44:41.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:44:41.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:44:41.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:44:41.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:44:41.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:44:41.072 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:44:41.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:44:41.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:44:41.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:44:41.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.572325 -999.00  +26.70  29.58      7  -10.90 1 1 1 1 1   888    0 40.14 101.45 ----- 25.4 29.6 318.0 40.4 30.6 -34.1 30.4 -32.0 31.4 -31.3 31.9 -31.6
2025-11-03T15:44:41.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:44:41.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:44:41.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.572325
2025-11-03T15:44:41.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:44:41.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:44:41.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:44:41.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:44:41.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:44:41.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:44:08', tmtdew=49.13, humidity=3.04, cloud=0.0, wind=36.77, temperature=27.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:44:08.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:44:41.074 [DEBUG] [Thread-118433] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:44:41.168 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:44:41.190 [DEBUG] [Thread-118436] [transport.py] [_log()] starting thread (client mode): 0xed89210
2025-11-03T15:44:41.190 [DEBUG] [Thread-118436] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:44:41.205 [DEBUG] [Thread-118436] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:44:41.205 [INFO] [Thread-118436] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:44:41.212 [DEBUG] [Thread-118436] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:44:41.212 [DEBUG] [Thread-118436] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:44:41.213 [DEBUG] [Thread-118436] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:44:41.213 [DEBUG] [Thread-118436] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:44:41.213 [DEBUG] [Thread-118436] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:44:41.213 [DEBUG] [Thread-118436] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:44:41.213 [DEBUG] [Thread-118436] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:44:41.213 [DEBUG] [Thread-118436] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:44:41.213 [DEBUG] [Thread-118436] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:44:41.214 [DEBUG] [Thread-118436] [transport.py] [_log()] client lang: <none>
2025-11-03T15:44:41.214 [DEBUG] [Thread-118436] [transport.py] [_log()] server lang: <none>
2025-11-03T15:44:41.214 [DEBUG] [Thread-118436] [transport.py] [_log()] kex follows: False
2025-11-03T15:44:41.214 [DEBUG] [Thread-118436] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:44:41.214 [DEBUG] [Thread-118436] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:44:41.223 [DEBUG] [Thread-118436] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:44:41.223 [DEBUG] [Thread-118436] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:44:41.223 [DEBUG] [Thread-118436] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:44:41.223 [DEBUG] [Thread-118436] [transport.py] [_log()] Compression: none
2025-11-03T15:44:41.223 [DEBUG] [Thread-118436] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:44:41.268 [DEBUG] [Thread-118436] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:44:41.269 [DEBUG] [Thread-118436] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:44:41.269 [DEBUG] [Thread-118436] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:44:41.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:44:41.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:44:41.325 [DEBUG] [Thread-118436] [transport.py] [_log()] userauth is OK
2025-11-03T15:44:41.325 [DEBUG] [Thread-118436] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:44:41.325 [DEBUG] [Thread-118436] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:44:41.325 [DEBUG] [Thread-118436] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:44:41.326 [DEBUG] [Thread-118436] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:44:41.345 [INFO] [Thread-118436] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:44:41.346 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:44:41.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:44:42.195 [DEBUG] [Thread-118436] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:44:42.195 [DEBUG] [Thread-118436] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:44:42.243 [DEBUG] [Thread-118436] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:44:42.243 [DEBUG] [Thread-118436] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:44:42.251 [DEBUG] [Thread-118436] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:44:42.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:44:42.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:44:42.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:44:42.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:44:42.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:44:42.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:44:42.283 [DEBUG] [Thread-118436] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:44:45.347 [DEBUG] [Thread-118438 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:45:00.412 [DEBUG] [Thread-118439 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:45:08.513 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:45:08.514 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:45:12.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:45:12.305 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:45:12.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:45:12.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 44, 41), 48.85, 2.96, 0.0, 30.97, 26.63, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:45:12.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:44:41
2025-11-03T15:45:13.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:45:13.299 [DEBUG] [Thread-118440] [transport.py] [_log()] starting thread (client mode): 0x1174e080
2025-11-03T15:45:13.299 [DEBUG] [Thread-118440] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:45:13.319 [DEBUG] [Thread-118440] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:45:13.319 [INFO] [Thread-118440] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:45:13.322 [DEBUG] [Thread-118440] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:45:13.322 [DEBUG] [Thread-118440] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:45:13.322 [DEBUG] [Thread-118440] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:45:13.322 [DEBUG] [Thread-118440] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:45:13.323 [DEBUG] [Thread-118440] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:45:13.323 [DEBUG] [Thread-118440] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:45:13.323 [DEBUG] [Thread-118440] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:45:13.323 [DEBUG] [Thread-118440] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:45:13.323 [DEBUG] [Thread-118440] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:45:13.323 [DEBUG] [Thread-118440] [transport.py] [_log()] client lang: <none>
2025-11-03T15:45:13.323 [DEBUG] [Thread-118440] [transport.py] [_log()] server lang: <none>
2025-11-03T15:45:13.323 [DEBUG] [Thread-118440] [transport.py] [_log()] kex follows: False
2025-11-03T15:45:13.323 [DEBUG] [Thread-118440] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:45:13.323 [DEBUG] [Thread-118440] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:45:13.323 [DEBUG] [Thread-118440] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:45:13.323 [DEBUG] [Thread-118440] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:45:13.323 [DEBUG] [Thread-118440] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:45:13.323 [DEBUG] [Thread-118440] [transport.py] [_log()] Compression: none
2025-11-03T15:45:13.323 [DEBUG] [Thread-118440] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:45:13.341 [DEBUG] [Thread-118440] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:45:13.341 [DEBUG] [Thread-118440] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:45:13.341 [DEBUG] [Thread-118440] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:45:13.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:45:13.342 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:45:13.343 [DEBUG] [Thread-118440] [transport.py] [_log()] userauth is OK
2025-11-03T15:45:13.343 [DEBUG] [Thread-118440] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:45:13.343 [DEBUG] [Thread-118440] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:45:13.343 [DEBUG] [Thread-118440] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:45:13.343 [DEBUG] [Thread-118440] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:45:13.363 [INFO] [Thread-118440] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:45:13.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:45:14.217 [DEBUG] [Thread-118440] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:45:14.217 [DEBUG] [Thread-118440] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:45:14.217 [DEBUG] [Thread-118440] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:45:14.258 [DEBUG] [Thread-118440] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:45:14.258 [DEBUG] [Thread-118440] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:45:14.262 [DEBUG] [Thread-118440] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:45:14.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:45:14.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:45:14.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:45:14.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:45:14.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:45:14.298 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:45:14.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:45:14.298 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:45:14.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:45:14.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.572672 -999.00  +26.70  27.01      7  -11.20 1 1 1 1 1   888    0 40.41 113.95 ----- 29.7 27.0 315.4 37.3 30.7 -33.2 30.4 -32.0 31.4 -30.9 32.0 -31.9
2025-11-03T15:45:14.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:45:14.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:45:14.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.572672
2025-11-03T15:45:14.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:45:14.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:45:14.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:45:14.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:45:14.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:45:14.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:44:41', tmtdew=48.85, humidity=2.96, cloud=0.0, wind=30.97, temperature=26.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:44:38.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:45:14.302 [DEBUG] [Thread-118440] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:45:14.394 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:45:14.417 [DEBUG] [Thread-118443] [transport.py] [_log()] starting thread (client mode): 0x1174df60
2025-11-03T15:45:14.417 [DEBUG] [Thread-118443] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:45:14.430 [DEBUG] [Thread-118443] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:45:14.430 [INFO] [Thread-118443] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:45:14.438 [DEBUG] [Thread-118443] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:45:14.438 [DEBUG] [Thread-118443] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:45:14.438 [DEBUG] [Thread-118443] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:45:14.438 [DEBUG] [Thread-118443] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:45:14.438 [DEBUG] [Thread-118443] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:45:14.438 [DEBUG] [Thread-118443] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:45:14.438 [DEBUG] [Thread-118443] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:45:14.438 [DEBUG] [Thread-118443] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:45:14.438 [DEBUG] [Thread-118443] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:45:14.438 [DEBUG] [Thread-118443] [transport.py] [_log()] client lang: <none>
2025-11-03T15:45:14.438 [DEBUG] [Thread-118443] [transport.py] [_log()] server lang: <none>
2025-11-03T15:45:14.438 [DEBUG] [Thread-118443] [transport.py] [_log()] kex follows: False
2025-11-03T15:45:14.438 [DEBUG] [Thread-118443] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:45:14.438 [DEBUG] [Thread-118443] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:45:14.438 [DEBUG] [Thread-118443] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:45:14.438 [DEBUG] [Thread-118443] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:45:14.438 [DEBUG] [Thread-118443] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:45:14.438 [DEBUG] [Thread-118443] [transport.py] [_log()] Compression: none
2025-11-03T15:45:14.438 [DEBUG] [Thread-118443] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:45:14.494 [DEBUG] [Thread-118443] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:45:14.494 [DEBUG] [Thread-118443] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:45:14.494 [DEBUG] [Thread-118443] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:45:14.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:45:14.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:45:14.551 [DEBUG] [Thread-118443] [transport.py] [_log()] userauth is OK
2025-11-03T15:45:14.551 [DEBUG] [Thread-118443] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:45:14.551 [DEBUG] [Thread-118443] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:45:14.551 [DEBUG] [Thread-118443] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:45:14.551 [DEBUG] [Thread-118443] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:45:14.565 [INFO] [Thread-118443] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:45:14.565 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:45:14.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:45:15.394 [DEBUG] [Thread-118443] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:45:15.395 [DEBUG] [Thread-118443] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:45:15.448 [DEBUG] [Thread-118443] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:45:15.448 [DEBUG] [Thread-118443] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:45:15.451 [DEBUG] [Thread-118445 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:45:15.456 [DEBUG] [Thread-118443] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:45:15.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:45:15.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:45:15.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:45:15.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:45:15.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:45:15.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:45:15.489 [DEBUG] [Thread-118443] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:45:18.274 [DEBUG] [Thread-118446 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:45:30.507 [DEBUG] [Thread-118447 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:45:45.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:45:45.488 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:45:45.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:45:45.551 [DEBUG] [Thread-118448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:45:46.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 45, 13), 48.41, 3.06, 0.0, 28.92, 26.45, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:45:46.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:45:13
2025-11-03T15:45:46.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:45:46.554 [DEBUG] [Thread-118449] [transport.py] [_log()] starting thread (client mode): 0x1174c580
2025-11-03T15:45:46.554 [DEBUG] [Thread-118449] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:45:46.575 [DEBUG] [Thread-118449] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:45:46.575 [INFO] [Thread-118449] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:45:46.578 [DEBUG] [Thread-118449] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:45:46.578 [DEBUG] [Thread-118449] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:45:46.578 [DEBUG] [Thread-118449] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:45:46.578 [DEBUG] [Thread-118449] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:45:46.578 [DEBUG] [Thread-118449] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:45:46.578 [DEBUG] [Thread-118449] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:45:46.579 [DEBUG] [Thread-118449] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:45:46.579 [DEBUG] [Thread-118449] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:45:46.579 [DEBUG] [Thread-118449] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:45:46.579 [DEBUG] [Thread-118449] [transport.py] [_log()] client lang: <none>
2025-11-03T15:45:46.579 [DEBUG] [Thread-118449] [transport.py] [_log()] server lang: <none>
2025-11-03T15:45:46.579 [DEBUG] [Thread-118449] [transport.py] [_log()] kex follows: False
2025-11-03T15:45:46.579 [DEBUG] [Thread-118449] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:45:46.579 [DEBUG] [Thread-118449] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:45:46.580 [DEBUG] [Thread-118449] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:45:46.580 [DEBUG] [Thread-118449] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:45:46.580 [DEBUG] [Thread-118449] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:45:46.580 [DEBUG] [Thread-118449] [transport.py] [_log()] Compression: none
2025-11-03T15:45:46.580 [DEBUG] [Thread-118449] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:45:46.598 [DEBUG] [Thread-118449] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:45:46.599 [DEBUG] [Thread-118449] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:45:46.600 [DEBUG] [Thread-118449] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:45:46.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:45:46.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:45:46.602 [DEBUG] [Thread-118449] [transport.py] [_log()] userauth is OK
2025-11-03T15:45:46.602 [DEBUG] [Thread-118449] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:45:46.602 [DEBUG] [Thread-118449] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:45:46.602 [DEBUG] [Thread-118449] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:45:46.602 [DEBUG] [Thread-118449] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:45:46.626 [INFO] [Thread-118449] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:45:46.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:45:47.291 [DEBUG] [Thread-118449] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:45:47.291 [DEBUG] [Thread-118449] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:45:47.291 [DEBUG] [Thread-118449] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:45:47.332 [DEBUG] [Thread-118449] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:45:47.332 [DEBUG] [Thread-118449] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:45:47.334 [DEBUG] [Thread-118449] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:45:47.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:45:47.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:45:47.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:45:47.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:45:47.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:45:47.352 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:45:47.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:45:47.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:45:47.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:45:47.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.573019 -999.00  +26.60  27.73      7  -10.80 1 1 1 1 1   888    0 39.74 104.57 ----- 22.2 27.7 324.0 31.1 30.7 -33.2 30.4 -32.5 31.5 -30.7 32.0 -31.7
2025-11-03T15:45:47.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:45:47.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:45:47.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.573019
2025-11-03T15:45:47.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:45:47.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:45:47.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:45:47.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:45:47.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:45:47.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:45:13', tmtdew=48.41, humidity=3.06, cloud=0.0, wind=28.92, temperature=26.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:45:08.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:45:47.353 [DEBUG] [Thread-118449] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:45:47.442 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:45:47.462 [DEBUG] [Thread-118452] [transport.py] [_log()] starting thread (client mode): 0x11783b20
2025-11-03T15:45:47.462 [DEBUG] [Thread-118452] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:45:47.476 [DEBUG] [Thread-118452] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:45:47.476 [INFO] [Thread-118452] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:45:47.484 [DEBUG] [Thread-118452] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:45:47.484 [DEBUG] [Thread-118452] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:45:47.484 [DEBUG] [Thread-118452] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:45:47.484 [DEBUG] [Thread-118452] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:45:47.484 [DEBUG] [Thread-118452] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:45:47.484 [DEBUG] [Thread-118452] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:45:47.484 [DEBUG] [Thread-118452] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:45:47.484 [DEBUG] [Thread-118452] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:45:47.484 [DEBUG] [Thread-118452] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:45:47.484 [DEBUG] [Thread-118452] [transport.py] [_log()] client lang: <none>
2025-11-03T15:45:47.484 [DEBUG] [Thread-118452] [transport.py] [_log()] server lang: <none>
2025-11-03T15:45:47.484 [DEBUG] [Thread-118452] [transport.py] [_log()] kex follows: False
2025-11-03T15:45:47.484 [DEBUG] [Thread-118452] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:45:47.484 [DEBUG] [Thread-118452] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:45:47.484 [DEBUG] [Thread-118452] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:45:47.485 [DEBUG] [Thread-118452] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:45:47.485 [DEBUG] [Thread-118452] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:45:47.485 [DEBUG] [Thread-118452] [transport.py] [_log()] Compression: none
2025-11-03T15:45:47.485 [DEBUG] [Thread-118452] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:45:47.540 [DEBUG] [Thread-118452] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:45:47.541 [DEBUG] [Thread-118452] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:45:47.541 [DEBUG] [Thread-118452] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:45:47.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:45:47.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:45:47.598 [DEBUG] [Thread-118452] [transport.py] [_log()] userauth is OK
2025-11-03T15:45:47.598 [DEBUG] [Thread-118452] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:45:47.598 [DEBUG] [Thread-118452] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:45:47.598 [DEBUG] [Thread-118452] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:45:47.598 [DEBUG] [Thread-118452] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:45:47.616 [INFO] [Thread-118452] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:45:47.617 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:45:47.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:45:48.523 [DEBUG] [Thread-118452] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:45:48.523 [DEBUG] [Thread-118452] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:45:48.570 [DEBUG] [Thread-118452] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:45:48.570 [DEBUG] [Thread-118452] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:45:48.579 [DEBUG] [Thread-118452] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:45:48.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:45:48.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:45:48.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:45:48.603 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:45:48.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:45:48.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:45:48.611 [DEBUG] [Thread-118452] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:46:00.590 [DEBUG] [Thread-118454 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:46:08.655 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:46:08.656 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:46:15.675 [DEBUG] [Thread-118455 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:46:18.335 [DEBUG] [Thread-118456 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:46:18.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:46:18.634 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:46:18.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:46:19.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 45, 46), 48.24, 3.04, 0.0, 33.14, 26.62, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:46:19.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:45:46
2025-11-03T15:46:19.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:46:19.717 [DEBUG] [Thread-118457] [transport.py] [_log()] starting thread (client mode): 0x11781ae0
2025-11-03T15:46:19.717 [DEBUG] [Thread-118457] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:46:19.737 [DEBUG] [Thread-118457] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:46:19.737 [INFO] [Thread-118457] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:46:19.740 [DEBUG] [Thread-118457] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:46:19.740 [DEBUG] [Thread-118457] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:46:19.740 [DEBUG] [Thread-118457] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:46:19.740 [DEBUG] [Thread-118457] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:46:19.740 [DEBUG] [Thread-118457] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:46:19.740 [DEBUG] [Thread-118457] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:46:19.740 [DEBUG] [Thread-118457] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:46:19.741 [DEBUG] [Thread-118457] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:46:19.741 [DEBUG] [Thread-118457] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:46:19.741 [DEBUG] [Thread-118457] [transport.py] [_log()] client lang: <none>
2025-11-03T15:46:19.741 [DEBUG] [Thread-118457] [transport.py] [_log()] server lang: <none>
2025-11-03T15:46:19.741 [DEBUG] [Thread-118457] [transport.py] [_log()] kex follows: False
2025-11-03T15:46:19.741 [DEBUG] [Thread-118457] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:46:19.741 [DEBUG] [Thread-118457] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:46:19.741 [DEBUG] [Thread-118457] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:46:19.741 [DEBUG] [Thread-118457] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:46:19.741 [DEBUG] [Thread-118457] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:46:19.741 [DEBUG] [Thread-118457] [transport.py] [_log()] Compression: none
2025-11-03T15:46:19.741 [DEBUG] [Thread-118457] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:46:19.757 [DEBUG] [Thread-118457] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:46:19.758 [DEBUG] [Thread-118457] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:46:19.758 [DEBUG] [Thread-118457] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:46:19.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:46:19.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:46:19.758 [DEBUG] [Thread-118457] [transport.py] [_log()] userauth is OK
2025-11-03T15:46:19.759 [DEBUG] [Thread-118457] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:46:19.759 [DEBUG] [Thread-118457] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:46:19.759 [DEBUG] [Thread-118457] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:46:19.759 [DEBUG] [Thread-118457] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:46:19.768 [INFO] [Thread-118457] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:46:19.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:46:20.399 [DEBUG] [Thread-118457] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:46:20.399 [DEBUG] [Thread-118457] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:46:20.399 [DEBUG] [Thread-118457] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:46:20.440 [DEBUG] [Thread-118457] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:46:20.440 [DEBUG] [Thread-118457] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:46:20.442 [DEBUG] [Thread-118457] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:46:20.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:46:20.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:46:20.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:46:20.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:46:20.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:46:20.459 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:46:20.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:46:20.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:46:20.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:46:20.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.573367 -999.00  +26.80  23.96      7  -10.50 1 1 1 1 1   888    0 39.47 102.32 ----- 23.8 24.0 312.0 33.5 30.8 -33.0 30.4 -32.3 31.6 -30.6 32.1 -31.5
2025-11-03T15:46:20.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:46:20.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:46:20.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.573367
2025-11-03T15:46:20.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:46:20.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:46:20.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:46:20.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:46:20.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:46:20.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:45:46', tmtdew=48.24, humidity=3.04, cloud=0.0, wind=33.14, temperature=26.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:45:38.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:46:20.460 [DEBUG] [Thread-118457] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:46:20.535 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:46:20.555 [DEBUG] [Thread-118460] [transport.py] [_log()] starting thread (client mode): 0x1174e800
2025-11-03T15:46:20.555 [DEBUG] [Thread-118460] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:46:20.570 [DEBUG] [Thread-118460] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:46:20.570 [INFO] [Thread-118460] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:46:20.578 [DEBUG] [Thread-118460] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:46:20.578 [DEBUG] [Thread-118460] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:46:20.578 [DEBUG] [Thread-118460] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:46:20.578 [DEBUG] [Thread-118460] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:46:20.578 [DEBUG] [Thread-118460] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:46:20.578 [DEBUG] [Thread-118460] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:46:20.578 [DEBUG] [Thread-118460] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:46:20.578 [DEBUG] [Thread-118460] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:46:20.578 [DEBUG] [Thread-118460] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:46:20.578 [DEBUG] [Thread-118460] [transport.py] [_log()] client lang: <none>
2025-11-03T15:46:20.578 [DEBUG] [Thread-118460] [transport.py] [_log()] server lang: <none>
2025-11-03T15:46:20.578 [DEBUG] [Thread-118460] [transport.py] [_log()] kex follows: False
2025-11-03T15:46:20.578 [DEBUG] [Thread-118460] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:46:20.578 [DEBUG] [Thread-118460] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:46:20.578 [DEBUG] [Thread-118460] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:46:20.578 [DEBUG] [Thread-118460] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:46:20.578 [DEBUG] [Thread-118460] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:46:20.578 [DEBUG] [Thread-118460] [transport.py] [_log()] Compression: none
2025-11-03T15:46:20.578 [DEBUG] [Thread-118460] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:46:20.634 [DEBUG] [Thread-118460] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:46:20.635 [DEBUG] [Thread-118460] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:46:20.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:46:20.635 [DEBUG] [Thread-118460] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:46:20.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:46:20.693 [DEBUG] [Thread-118460] [transport.py] [_log()] userauth is OK
2025-11-03T15:46:20.693 [DEBUG] [Thread-118460] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:46:20.693 [DEBUG] [Thread-118460] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:46:20.693 [DEBUG] [Thread-118460] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:46:20.693 [DEBUG] [Thread-118460] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:46:20.706 [INFO] [Thread-118460] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:46:20.706 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:46:20.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:46:21.556 [DEBUG] [Thread-118460] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:46:21.557 [DEBUG] [Thread-118460] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:46:21.604 [DEBUG] [Thread-118460] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:46:21.604 [DEBUG] [Thread-118460] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:46:21.614 [DEBUG] [Thread-118460] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:46:21.623 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:46:21.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:46:21.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:46:21.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:46:21.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:46:21.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:46:21.651 [DEBUG] [Thread-118460] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:46:30.711 [DEBUG] [Thread-118462 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:46:45.767 [DEBUG] [Thread-118463 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:46:51.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:46:51.673 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:46:51.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:46:52.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 46, 18), 48.0, 3.1, 0.0, 37.35, 26.6, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:46:52.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:46:18
2025-11-03T15:46:52.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:46:52.681 [DEBUG] [Thread-118464] [transport.py] [_log()] starting thread (client mode): 0x1174f550
2025-11-03T15:46:52.681 [DEBUG] [Thread-118464] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:46:52.700 [DEBUG] [Thread-118464] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:46:52.700 [INFO] [Thread-118464] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:46:52.703 [DEBUG] [Thread-118464] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:46:52.703 [DEBUG] [Thread-118464] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:46:52.703 [DEBUG] [Thread-118464] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:46:52.703 [DEBUG] [Thread-118464] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:46:52.703 [DEBUG] [Thread-118464] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:46:52.704 [DEBUG] [Thread-118464] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:46:52.704 [DEBUG] [Thread-118464] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:46:52.704 [DEBUG] [Thread-118464] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:46:52.704 [DEBUG] [Thread-118464] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:46:52.704 [DEBUG] [Thread-118464] [transport.py] [_log()] client lang: <none>
2025-11-03T15:46:52.704 [DEBUG] [Thread-118464] [transport.py] [_log()] server lang: <none>
2025-11-03T15:46:52.704 [DEBUG] [Thread-118464] [transport.py] [_log()] kex follows: False
2025-11-03T15:46:52.704 [DEBUG] [Thread-118464] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:46:52.704 [DEBUG] [Thread-118464] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:46:52.704 [DEBUG] [Thread-118464] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:46:52.704 [DEBUG] [Thread-118464] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:46:52.704 [DEBUG] [Thread-118464] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:46:52.704 [DEBUG] [Thread-118464] [transport.py] [_log()] Compression: none
2025-11-03T15:46:52.704 [DEBUG] [Thread-118464] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:46:52.725 [DEBUG] [Thread-118464] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:46:52.725 [DEBUG] [Thread-118464] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:46:52.725 [DEBUG] [Thread-118464] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:46:52.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:46:52.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:46:52.726 [DEBUG] [Thread-118464] [transport.py] [_log()] userauth is OK
2025-11-03T15:46:52.726 [DEBUG] [Thread-118464] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:46:52.726 [DEBUG] [Thread-118464] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:46:52.726 [DEBUG] [Thread-118464] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:46:52.726 [DEBUG] [Thread-118464] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:46:52.741 [INFO] [Thread-118464] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:46:52.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:46:53.390 [DEBUG] [Thread-118464] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:46:53.390 [DEBUG] [Thread-118464] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:46:53.390 [DEBUG] [Thread-118464] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:46:53.430 [DEBUG] [Thread-118464] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:46:53.430 [DEBUG] [Thread-118464] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:46:53.433 [DEBUG] [Thread-118464] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:46:53.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:46:53.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:46:53.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:46:53.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:46:53.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:46:53.450 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:46:53.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:46:53.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:46:53.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:46:53.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.573714 -999.00  +26.80  29.56      7  -10.40 1 1 1 1 1   888    0 40.13 99.52 ----- 27.9 29.6 315.0 35.4 30.8 -32.5 30.5 -31.9 31.6 -30.5 32.2 -31.2
2025-11-03T15:46:53.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:46:53.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:46:53.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.573714
2025-11-03T15:46:53.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:46:53.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:46:53.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:46:53.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:46:53.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:46:53.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:46:18', tmtdew=48.0, humidity=3.1, cloud=0.0, wind=37.35, temperature=26.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:46:08.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:46:53.451 [DEBUG] [Thread-118464] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:46:53.526 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:46:53.543 [DEBUG] [Thread-118467] [transport.py] [_log()] starting thread (client mode): 0x1174fc70
2025-11-03T15:46:53.543 [DEBUG] [Thread-118467] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:46:53.558 [DEBUG] [Thread-118467] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:46:53.558 [INFO] [Thread-118467] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:46:53.566 [DEBUG] [Thread-118467] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:46:53.566 [DEBUG] [Thread-118467] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:46:53.566 [DEBUG] [Thread-118467] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:46:53.566 [DEBUG] [Thread-118467] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:46:53.566 [DEBUG] [Thread-118467] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:46:53.566 [DEBUG] [Thread-118467] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:46:53.566 [DEBUG] [Thread-118467] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:46:53.566 [DEBUG] [Thread-118467] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:46:53.566 [DEBUG] [Thread-118467] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:46:53.566 [DEBUG] [Thread-118467] [transport.py] [_log()] client lang: <none>
2025-11-03T15:46:53.566 [DEBUG] [Thread-118467] [transport.py] [_log()] server lang: <none>
2025-11-03T15:46:53.566 [DEBUG] [Thread-118467] [transport.py] [_log()] kex follows: False
2025-11-03T15:46:53.566 [DEBUG] [Thread-118467] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:46:53.566 [DEBUG] [Thread-118467] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:46:53.566 [DEBUG] [Thread-118467] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:46:53.566 [DEBUG] [Thread-118467] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:46:53.566 [DEBUG] [Thread-118467] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:46:53.566 [DEBUG] [Thread-118467] [transport.py] [_log()] Compression: none
2025-11-03T15:46:53.566 [DEBUG] [Thread-118467] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:46:53.621 [DEBUG] [Thread-118467] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:46:53.621 [DEBUG] [Thread-118467] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:46:53.621 [DEBUG] [Thread-118467] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:46:53.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:46:53.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:46:53.678 [DEBUG] [Thread-118467] [transport.py] [_log()] userauth is OK
2025-11-03T15:46:53.679 [DEBUG] [Thread-118467] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:46:53.679 [DEBUG] [Thread-118467] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:46:53.679 [DEBUG] [Thread-118467] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:46:53.679 [DEBUG] [Thread-118467] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:46:53.692 [INFO] [Thread-118467] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:46:53.692 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:46:53.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:46:54.571 [DEBUG] [Thread-118467] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:46:54.571 [DEBUG] [Thread-118467] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:46:54.620 [DEBUG] [Thread-118467] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:46:54.620 [DEBUG] [Thread-118467] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:46:54.629 [DEBUG] [Thread-118467] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:46:54.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:46:54.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:46:54.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:46:54.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:46:54.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:46:54.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:46:54.663 [DEBUG] [Thread-118467] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:47:00.822 [DEBUG] [Thread-118469 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:47:08.797 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:47:08.798 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:47:15.879 [DEBUG] [Thread-118470 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:47:18.395 [DEBUG] [Thread-118471 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:47:24.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:47:24.686 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:47:24.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:47:25.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 46, 50), 47.47, 3.15, 0.0, 36.58, 26.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:47:25.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:46:50
2025-11-03T15:47:25.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:47:25.692 [DEBUG] [Thread-118472] [transport.py] [_log()] starting thread (client mode): 0xed884f0
2025-11-03T15:47:25.692 [DEBUG] [Thread-118472] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:47:25.712 [DEBUG] [Thread-118472] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:47:25.712 [INFO] [Thread-118472] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:47:25.715 [DEBUG] [Thread-118472] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:47:25.715 [DEBUG] [Thread-118472] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:47:25.715 [DEBUG] [Thread-118472] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:47:25.715 [DEBUG] [Thread-118472] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:47:25.715 [DEBUG] [Thread-118472] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:47:25.715 [DEBUG] [Thread-118472] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:47:25.715 [DEBUG] [Thread-118472] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:47:25.715 [DEBUG] [Thread-118472] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:47:25.715 [DEBUG] [Thread-118472] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:47:25.716 [DEBUG] [Thread-118472] [transport.py] [_log()] client lang: <none>
2025-11-03T15:47:25.716 [DEBUG] [Thread-118472] [transport.py] [_log()] server lang: <none>
2025-11-03T15:47:25.716 [DEBUG] [Thread-118472] [transport.py] [_log()] kex follows: False
2025-11-03T15:47:25.716 [DEBUG] [Thread-118472] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:47:25.716 [DEBUG] [Thread-118472] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:47:25.716 [DEBUG] [Thread-118472] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:47:25.716 [DEBUG] [Thread-118472] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:47:25.716 [DEBUG] [Thread-118472] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:47:25.716 [DEBUG] [Thread-118472] [transport.py] [_log()] Compression: none
2025-11-03T15:47:25.716 [DEBUG] [Thread-118472] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:47:25.733 [DEBUG] [Thread-118472] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:47:25.734 [DEBUG] [Thread-118472] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:47:25.734 [DEBUG] [Thread-118472] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:47:25.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:47:25.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:47:25.735 [DEBUG] [Thread-118472] [transport.py] [_log()] userauth is OK
2025-11-03T15:47:25.735 [DEBUG] [Thread-118472] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:47:25.735 [DEBUG] [Thread-118472] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:47:25.735 [DEBUG] [Thread-118472] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:47:25.735 [DEBUG] [Thread-118472] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:47:25.750 [INFO] [Thread-118472] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:47:25.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:47:26.369 [DEBUG] [Thread-118472] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:47:26.369 [DEBUG] [Thread-118472] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:47:26.370 [DEBUG] [Thread-118472] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:47:26.410 [DEBUG] [Thread-118472] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:47:26.411 [DEBUG] [Thread-118472] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:47:26.414 [DEBUG] [Thread-118472] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:47:26.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:47:26.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:47:26.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:47:26.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:47:26.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:47:26.439 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:47:26.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:47:26.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:47:26.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:47:26.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.574061 -999.00  +27.00  36.34      7  -10.20 1 1 2 1 1   888    0 39.59 103.96 ----- 30.3 36.3 316.2 43.3 30.9 -32.2 30.5 -31.8 31.5 -32.6 32.2 -31.5
2025-11-03T15:47:26.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:47:26.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:47:26.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.574061
2025-11-03T15:47:26.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:47:26.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:47:26.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:47:26.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:47:26.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:47:26.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:46:50', tmtdew=47.47, humidity=3.15, cloud=0.0, wind=36.58, temperature=26.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:46:38.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:47:26.443 [DEBUG] [Thread-118472] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:47:26.526 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:47:26.547 [DEBUG] [Thread-118475] [transport.py] [_log()] starting thread (client mode): 0xed2cd00
2025-11-03T15:47:26.547 [DEBUG] [Thread-118475] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:47:26.562 [DEBUG] [Thread-118475] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:47:26.562 [INFO] [Thread-118475] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:47:26.570 [DEBUG] [Thread-118475] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:47:26.570 [DEBUG] [Thread-118475] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:47:26.570 [DEBUG] [Thread-118475] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:47:26.570 [DEBUG] [Thread-118475] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:47:26.570 [DEBUG] [Thread-118475] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:47:26.570 [DEBUG] [Thread-118475] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:47:26.571 [DEBUG] [Thread-118475] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:47:26.571 [DEBUG] [Thread-118475] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:47:26.571 [DEBUG] [Thread-118475] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:47:26.571 [DEBUG] [Thread-118475] [transport.py] [_log()] client lang: <none>
2025-11-03T15:47:26.571 [DEBUG] [Thread-118475] [transport.py] [_log()] server lang: <none>
2025-11-03T15:47:26.571 [DEBUG] [Thread-118475] [transport.py] [_log()] kex follows: False
2025-11-03T15:47:26.571 [DEBUG] [Thread-118475] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:47:26.571 [DEBUG] [Thread-118475] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:47:26.571 [DEBUG] [Thread-118475] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:47:26.571 [DEBUG] [Thread-118475] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:47:26.571 [DEBUG] [Thread-118475] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:47:26.571 [DEBUG] [Thread-118475] [transport.py] [_log()] Compression: none
2025-11-03T15:47:26.571 [DEBUG] [Thread-118475] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:47:26.630 [DEBUG] [Thread-118475] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:47:26.630 [DEBUG] [Thread-118475] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:47:26.631 [DEBUG] [Thread-118475] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:47:26.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:47:26.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:47:26.685 [DEBUG] [Thread-118475] [transport.py] [_log()] userauth is OK
2025-11-03T15:47:26.686 [DEBUG] [Thread-118475] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:47:26.686 [DEBUG] [Thread-118475] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:47:26.686 [DEBUG] [Thread-118475] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:47:26.686 [DEBUG] [Thread-118475] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:47:26.705 [INFO] [Thread-118475] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:47:26.706 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:47:26.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:47:27.543 [DEBUG] [Thread-118475] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:47:27.543 [DEBUG] [Thread-118475] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:47:27.591 [DEBUG] [Thread-118475] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:47:27.591 [DEBUG] [Thread-118475] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:47:27.600 [DEBUG] [Thread-118475] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:47:27.607 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:47:27.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:47:27.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:47:27.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:47:27.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:47:27.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:47:27.631 [DEBUG] [Thread-118475] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:47:30.922 [DEBUG] [Thread-118477 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:47:45.996 [DEBUG] [Thread-118478 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:47:57.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:47:57.654 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:47:57.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:47:58.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 47, 23), 47.4, 3.2, 0.0, 36.43, 26.95, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:47:58.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:47:23
2025-11-03T15:47:58.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:47:58.659 [DEBUG] [Thread-118479] [transport.py] [_log()] starting thread (client mode): 0xed8b640
2025-11-03T15:47:58.659 [DEBUG] [Thread-118479] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:47:58.678 [DEBUG] [Thread-118479] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:47:58.678 [INFO] [Thread-118479] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:47:58.682 [DEBUG] [Thread-118479] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:47:58.682 [DEBUG] [Thread-118479] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:47:58.682 [DEBUG] [Thread-118479] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:47:58.682 [DEBUG] [Thread-118479] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:47:58.682 [DEBUG] [Thread-118479] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:47:58.682 [DEBUG] [Thread-118479] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:47:58.683 [DEBUG] [Thread-118479] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:47:58.683 [DEBUG] [Thread-118479] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:47:58.683 [DEBUG] [Thread-118479] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:47:58.683 [DEBUG] [Thread-118479] [transport.py] [_log()] client lang: <none>
2025-11-03T15:47:58.683 [DEBUG] [Thread-118479] [transport.py] [_log()] server lang: <none>
2025-11-03T15:47:58.683 [DEBUG] [Thread-118479] [transport.py] [_log()] kex follows: False
2025-11-03T15:47:58.683 [DEBUG] [Thread-118479] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:47:58.683 [DEBUG] [Thread-118479] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:47:58.683 [DEBUG] [Thread-118479] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:47:58.684 [DEBUG] [Thread-118479] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:47:58.684 [DEBUG] [Thread-118479] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:47:58.684 [DEBUG] [Thread-118479] [transport.py] [_log()] Compression: none
2025-11-03T15:47:58.684 [DEBUG] [Thread-118479] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:47:58.701 [DEBUG] [Thread-118479] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:47:58.702 [DEBUG] [Thread-118479] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:47:58.702 [DEBUG] [Thread-118479] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:47:58.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:47:58.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:47:58.704 [DEBUG] [Thread-118479] [transport.py] [_log()] userauth is OK
2025-11-03T15:47:58.705 [DEBUG] [Thread-118479] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:47:58.705 [DEBUG] [Thread-118479] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:47:58.705 [DEBUG] [Thread-118479] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:47:58.705 [DEBUG] [Thread-118479] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:47:58.729 [INFO] [Thread-118479] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:47:58.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:47:59.393 [DEBUG] [Thread-118479] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:47:59.393 [DEBUG] [Thread-118479] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:47:59.393 [DEBUG] [Thread-118479] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:47:59.425 [DEBUG] [Thread-118479] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:47:59.425 [DEBUG] [Thread-118479] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:47:59.427 [DEBUG] [Thread-118479] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:47:59.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:47:59.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:47:59.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:47:59.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:47:59.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:47:59.444 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:47:59.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:47:59.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:47:59.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:47:59.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.574408 -999.00  +27.00  30.11      7  -10.10 1 1 2 1 1   888    0 39.45 101.69 ----- 35.1 30.1 314.6 52.6 30.8 -33.6 30.4 -32.0 31.4 -32.9 32.0 -31.8
2025-11-03T15:47:59.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:47:59.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:47:59.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.574408
2025-11-03T15:47:59.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:47:59.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:47:59.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:47:59.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:47:59.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:47:59.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:47:23', tmtdew=47.4, humidity=3.2, cloud=0.0, wind=36.43, temperature=26.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:47:08.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:47:59.445 [DEBUG] [Thread-118479] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:47:59.518 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:47:59.535 [DEBUG] [Thread-118482] [transport.py] [_log()] starting thread (client mode): 0x1174cac0
2025-11-03T15:47:59.535 [DEBUG] [Thread-118482] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:47:59.550 [DEBUG] [Thread-118482] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:47:59.550 [INFO] [Thread-118482] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:47:59.557 [DEBUG] [Thread-118482] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:47:59.557 [DEBUG] [Thread-118482] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:47:59.557 [DEBUG] [Thread-118482] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:47:59.557 [DEBUG] [Thread-118482] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:47:59.557 [DEBUG] [Thread-118482] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:47:59.558 [DEBUG] [Thread-118482] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:47:59.558 [DEBUG] [Thread-118482] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:47:59.558 [DEBUG] [Thread-118482] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:47:59.558 [DEBUG] [Thread-118482] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:47:59.558 [DEBUG] [Thread-118482] [transport.py] [_log()] client lang: <none>
2025-11-03T15:47:59.558 [DEBUG] [Thread-118482] [transport.py] [_log()] server lang: <none>
2025-11-03T15:47:59.558 [DEBUG] [Thread-118482] [transport.py] [_log()] kex follows: False
2025-11-03T15:47:59.558 [DEBUG] [Thread-118482] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:47:59.558 [DEBUG] [Thread-118482] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:47:59.558 [DEBUG] [Thread-118482] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:47:59.558 [DEBUG] [Thread-118482] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:47:59.558 [DEBUG] [Thread-118482] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:47:59.558 [DEBUG] [Thread-118482] [transport.py] [_log()] Compression: none
2025-11-03T15:47:59.558 [DEBUG] [Thread-118482] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:47:59.614 [DEBUG] [Thread-118482] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:47:59.614 [DEBUG] [Thread-118482] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:47:59.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:47:59.615 [DEBUG] [Thread-118482] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:47:59.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:47:59.671 [DEBUG] [Thread-118482] [transport.py] [_log()] userauth is OK
2025-11-03T15:47:59.671 [DEBUG] [Thread-118482] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:47:59.671 [DEBUG] [Thread-118482] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:47:59.671 [DEBUG] [Thread-118482] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:47:59.671 [DEBUG] [Thread-118482] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:47:59.685 [INFO] [Thread-118482] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:47:59.685 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:47:59.686 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:48:00.522 [DEBUG] [Thread-118482] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:48:00.522 [DEBUG] [Thread-118482] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:48:00.561 [DEBUG] [Thread-118482] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:48:00.561 [DEBUG] [Thread-118482] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:48:00.571 [DEBUG] [Thread-118482] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:48:00.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:48:00.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:48:00.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:48:00.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:48:00.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:48:00.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:48:00.607 [DEBUG] [Thread-118482] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:48:01.036 [DEBUG] [Thread-118484 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:48:08.938 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:48:08.940 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:48:16.114 [DEBUG] [Thread-118485 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:48:18.455 [DEBUG] [Thread-118486 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:48:30.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:48:30.630 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:48:30.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:48:31.161 [DEBUG] [Thread-118487 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:48:31.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 47, 55), 48.02, 3.17, 0.0, 34.02, 27.06, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:48:31.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:47:55
2025-11-03T15:48:31.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:48:31.596 [DEBUG] [Thread-118488] [transport.py] [_log()] starting thread (client mode): 0x117bf910
2025-11-03T15:48:31.596 [DEBUG] [Thread-118488] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:48:31.615 [DEBUG] [Thread-118488] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:48:31.616 [INFO] [Thread-118488] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:48:31.618 [DEBUG] [Thread-118488] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:48:31.619 [DEBUG] [Thread-118488] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:48:31.619 [DEBUG] [Thread-118488] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:48:31.619 [DEBUG] [Thread-118488] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:48:31.619 [DEBUG] [Thread-118488] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:48:31.619 [DEBUG] [Thread-118488] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:48:31.619 [DEBUG] [Thread-118488] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:48:31.619 [DEBUG] [Thread-118488] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:48:31.619 [DEBUG] [Thread-118488] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:48:31.619 [DEBUG] [Thread-118488] [transport.py] [_log()] client lang: <none>
2025-11-03T15:48:31.619 [DEBUG] [Thread-118488] [transport.py] [_log()] server lang: <none>
2025-11-03T15:48:31.619 [DEBUG] [Thread-118488] [transport.py] [_log()] kex follows: False
2025-11-03T15:48:31.619 [DEBUG] [Thread-118488] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:48:31.619 [DEBUG] [Thread-118488] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:48:31.619 [DEBUG] [Thread-118488] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:48:31.619 [DEBUG] [Thread-118488] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:48:31.619 [DEBUG] [Thread-118488] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:48:31.619 [DEBUG] [Thread-118488] [transport.py] [_log()] Compression: none
2025-11-03T15:48:31.620 [DEBUG] [Thread-118488] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:48:31.639 [DEBUG] [Thread-118488] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:48:31.640 [DEBUG] [Thread-118488] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:48:31.640 [DEBUG] [Thread-118488] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:48:31.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:48:31.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:48:31.681 [DEBUG] [Thread-118488] [transport.py] [_log()] userauth is OK
2025-11-03T15:48:31.681 [DEBUG] [Thread-118488] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:48:31.681 [DEBUG] [Thread-118488] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:48:31.681 [DEBUG] [Thread-118488] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:48:31.681 [DEBUG] [Thread-118488] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:48:31.708 [INFO] [Thread-118488] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:48:31.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:48:32.363 [DEBUG] [Thread-118488] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:48:32.363 [DEBUG] [Thread-118488] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:48:32.363 [DEBUG] [Thread-118488] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:48:32.404 [DEBUG] [Thread-118488] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:48:32.404 [DEBUG] [Thread-118488] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:48:32.408 [DEBUG] [Thread-118488] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:48:32.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:48:32.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:48:32.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:48:32.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:48:32.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:48:32.435 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:48:32.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:48:32.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:48:32.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:48:32.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.574755 -999.00  +26.70  29.94      7  -10.40 1 1 1 1 1   888    0 40.51 100.38 ----- 26.2 29.9 319.0 39.4 30.7 -32.9 30.4 -31.9 31.5 -31.6 32.1 -31.7
2025-11-03T15:48:32.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:48:32.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:48:32.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.574755
2025-11-03T15:48:32.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:48:32.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:48:32.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:48:32.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:48:32.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:48:32.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:47:55', tmtdew=48.02, humidity=3.17, cloud=0.0, wind=34.02, temperature=27.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:47:38.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:48:32.438 [DEBUG] [Thread-118488] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:48:32.521 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:48:32.542 [DEBUG] [Thread-118491] [transport.py] [_log()] starting thread (client mode): 0x1174e110
2025-11-03T15:48:32.542 [DEBUG] [Thread-118491] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:48:32.557 [DEBUG] [Thread-118491] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:48:32.558 [INFO] [Thread-118491] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:48:32.565 [DEBUG] [Thread-118491] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:48:32.566 [DEBUG] [Thread-118491] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:48:32.566 [DEBUG] [Thread-118491] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:48:32.566 [DEBUG] [Thread-118491] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:48:32.566 [DEBUG] [Thread-118491] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:48:32.566 [DEBUG] [Thread-118491] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:48:32.566 [DEBUG] [Thread-118491] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:48:32.566 [DEBUG] [Thread-118491] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:48:32.566 [DEBUG] [Thread-118491] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:48:32.567 [DEBUG] [Thread-118491] [transport.py] [_log()] client lang: <none>
2025-11-03T15:48:32.567 [DEBUG] [Thread-118491] [transport.py] [_log()] server lang: <none>
2025-11-03T15:48:32.567 [DEBUG] [Thread-118491] [transport.py] [_log()] kex follows: False
2025-11-03T15:48:32.567 [DEBUG] [Thread-118491] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:48:32.567 [DEBUG] [Thread-118491] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:48:32.567 [DEBUG] [Thread-118491] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:48:32.567 [DEBUG] [Thread-118491] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:48:32.568 [DEBUG] [Thread-118491] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:48:32.568 [DEBUG] [Thread-118491] [transport.py] [_log()] Compression: none
2025-11-03T15:48:32.568 [DEBUG] [Thread-118491] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:48:32.624 [DEBUG] [Thread-118491] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:48:32.625 [DEBUG] [Thread-118491] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:48:32.635 [DEBUG] [Thread-118491] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:48:32.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:48:32.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:48:32.683 [DEBUG] [Thread-118491] [transport.py] [_log()] userauth is OK
2025-11-03T15:48:32.684 [DEBUG] [Thread-118491] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:48:32.684 [DEBUG] [Thread-118491] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:48:32.684 [DEBUG] [Thread-118491] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:48:32.684 [DEBUG] [Thread-118491] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:48:32.702 [INFO] [Thread-118491] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:48:32.702 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:48:32.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:48:33.530 [DEBUG] [Thread-118491] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:48:33.530 [DEBUG] [Thread-118491] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:48:33.579 [DEBUG] [Thread-118491] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:48:33.579 [DEBUG] [Thread-118491] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:48:33.587 [DEBUG] [Thread-118491] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:48:33.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:48:33.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:48:33.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:48:33.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:48:33.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:48:33.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:48:33.619 [DEBUG] [Thread-118491] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:48:46.199 [DEBUG] [Thread-118493 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:49:01.251 [DEBUG] [Thread-118494 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:49:03.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:49:03.618 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:49:03.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:49:04.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 48, 28), 47.93, 3.19, 0.0, 36.59, 26.97, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:49:04.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:48:28
2025-11-03T15:49:04.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:49:04.663 [DEBUG] [Thread-118495] [transport.py] [_log()] starting thread (client mode): 0xedd41f0
2025-11-03T15:49:04.663 [DEBUG] [Thread-118495] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:49:04.684 [DEBUG] [Thread-118495] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:49:04.684 [INFO] [Thread-118495] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:49:04.687 [DEBUG] [Thread-118495] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:49:04.688 [DEBUG] [Thread-118495] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:49:04.688 [DEBUG] [Thread-118495] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:49:04.688 [DEBUG] [Thread-118495] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:49:04.688 [DEBUG] [Thread-118495] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:49:04.688 [DEBUG] [Thread-118495] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:49:04.688 [DEBUG] [Thread-118495] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:49:04.688 [DEBUG] [Thread-118495] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:49:04.688 [DEBUG] [Thread-118495] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:49:04.688 [DEBUG] [Thread-118495] [transport.py] [_log()] client lang: <none>
2025-11-03T15:49:04.688 [DEBUG] [Thread-118495] [transport.py] [_log()] server lang: <none>
2025-11-03T15:49:04.688 [DEBUG] [Thread-118495] [transport.py] [_log()] kex follows: False
2025-11-03T15:49:04.688 [DEBUG] [Thread-118495] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:49:04.688 [DEBUG] [Thread-118495] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:49:04.688 [DEBUG] [Thread-118495] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:49:04.688 [DEBUG] [Thread-118495] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:49:04.688 [DEBUG] [Thread-118495] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:49:04.688 [DEBUG] [Thread-118495] [transport.py] [_log()] Compression: none
2025-11-03T15:49:04.688 [DEBUG] [Thread-118495] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:49:04.704 [DEBUG] [Thread-118495] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:49:04.704 [DEBUG] [Thread-118495] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:49:04.704 [DEBUG] [Thread-118495] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:49:04.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:49:04.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:49:04.705 [DEBUG] [Thread-118495] [transport.py] [_log()] userauth is OK
2025-11-03T15:49:04.705 [DEBUG] [Thread-118495] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:49:04.705 [DEBUG] [Thread-118495] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:49:04.705 [DEBUG] [Thread-118495] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:49:04.705 [DEBUG] [Thread-118495] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:49:04.718 [INFO] [Thread-118495] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:49:04.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:49:05.365 [DEBUG] [Thread-118495] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:49:05.365 [DEBUG] [Thread-118495] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:49:05.365 [DEBUG] [Thread-118495] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:49:05.407 [DEBUG] [Thread-118495] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:49:05.407 [DEBUG] [Thread-118495] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:49:05.409 [DEBUG] [Thread-118495] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:49:05.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:49:05.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:49:05.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:49:05.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:49:05.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:49:05.427 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:49:05.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:49:05.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:49:05.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:49:05.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.575103 -999.00  +26.60  32.39      7  -10.40 1 1 2 1 1   888    0 40.41 98.48 ----- 30.0 32.4 311.4 42.6 30.7 -33.4 30.3 -32.9 31.3 -32.8 32.0 -32.3
2025-11-03T15:49:05.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:49:05.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:49:05.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.575103
2025-11-03T15:49:05.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:49:05.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:49:05.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:49:05.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:49:05.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:49:05.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:48:28', tmtdew=47.93, humidity=3.19, cloud=0.0, wind=36.59, temperature=26.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:48:08.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:49:05.429 [DEBUG] [Thread-118495] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:49:05.505 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:49:05.523 [DEBUG] [Thread-118498] [transport.py] [_log()] starting thread (client mode): 0xed8a0e0
2025-11-03T15:49:05.523 [DEBUG] [Thread-118498] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:49:05.541 [DEBUG] [Thread-118498] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:49:05.541 [INFO] [Thread-118498] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:49:05.548 [DEBUG] [Thread-118498] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:49:05.548 [DEBUG] [Thread-118498] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:49:05.548 [DEBUG] [Thread-118498] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:49:05.548 [DEBUG] [Thread-118498] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:49:05.548 [DEBUG] [Thread-118498] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:49:05.548 [DEBUG] [Thread-118498] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:49:05.548 [DEBUG] [Thread-118498] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:49:05.548 [DEBUG] [Thread-118498] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:49:05.548 [DEBUG] [Thread-118498] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:49:05.549 [DEBUG] [Thread-118498] [transport.py] [_log()] client lang: <none>
2025-11-03T15:49:05.549 [DEBUG] [Thread-118498] [transport.py] [_log()] server lang: <none>
2025-11-03T15:49:05.549 [DEBUG] [Thread-118498] [transport.py] [_log()] kex follows: False
2025-11-03T15:49:05.549 [DEBUG] [Thread-118498] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:49:05.549 [DEBUG] [Thread-118498] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:49:05.549 [DEBUG] [Thread-118498] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:49:05.549 [DEBUG] [Thread-118498] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:49:05.549 [DEBUG] [Thread-118498] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:49:05.549 [DEBUG] [Thread-118498] [transport.py] [_log()] Compression: none
2025-11-03T15:49:05.549 [DEBUG] [Thread-118498] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:49:05.604 [DEBUG] [Thread-118498] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:49:05.605 [DEBUG] [Thread-118498] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:49:05.605 [DEBUG] [Thread-118498] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:49:05.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:49:05.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:49:05.665 [DEBUG] [Thread-118498] [transport.py] [_log()] userauth is OK
2025-11-03T15:49:05.665 [DEBUG] [Thread-118498] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:49:05.665 [DEBUG] [Thread-118498] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:49:05.665 [DEBUG] [Thread-118498] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:49:05.665 [DEBUG] [Thread-118498] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:49:05.683 [INFO] [Thread-118498] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:49:05.683 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:49:05.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:49:06.530 [DEBUG] [Thread-118498] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:49:06.531 [DEBUG] [Thread-118498] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:49:06.578 [DEBUG] [Thread-118498] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:49:06.578 [DEBUG] [Thread-118498] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:49:06.587 [DEBUG] [Thread-118498] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:49:06.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:49:06.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:49:06.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:49:06.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:49:06.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:49:06.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:49:06.620 [DEBUG] [Thread-118498] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:49:09.082 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:49:09.083 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:49:16.299 [DEBUG] [Thread-118500 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:49:18.507 [DEBUG] [Thread-118501 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:49:31.366 [DEBUG] [Thread-118502 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:49:36.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:49:36.643 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:49:36.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:49:37.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 49, 32), 46.7, 3.34, 0.0, 25.64, 26.29, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:49:37.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:49:32
2025-11-03T15:49:37.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:49:37.722 [DEBUG] [Thread-118503] [transport.py] [_log()] starting thread (client mode): 0xedd6710
2025-11-03T15:49:37.722 [DEBUG] [Thread-118503] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:49:37.733 [DEBUG] [Thread-118503] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:49:37.733 [INFO] [Thread-118503] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:49:37.736 [DEBUG] [Thread-118503] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:49:37.737 [DEBUG] [Thread-118503] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:49:37.737 [DEBUG] [Thread-118503] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:49:37.737 [DEBUG] [Thread-118503] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:49:37.737 [DEBUG] [Thread-118503] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:49:37.737 [DEBUG] [Thread-118503] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:49:37.738 [DEBUG] [Thread-118503] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:49:37.738 [DEBUG] [Thread-118503] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:49:37.738 [DEBUG] [Thread-118503] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:49:37.738 [DEBUG] [Thread-118503] [transport.py] [_log()] client lang: <none>
2025-11-03T15:49:37.738 [DEBUG] [Thread-118503] [transport.py] [_log()] server lang: <none>
2025-11-03T15:49:37.738 [DEBUG] [Thread-118503] [transport.py] [_log()] kex follows: False
2025-11-03T15:49:37.738 [DEBUG] [Thread-118503] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:49:37.739 [DEBUG] [Thread-118503] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:49:37.739 [DEBUG] [Thread-118503] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:49:37.739 [DEBUG] [Thread-118503] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:49:37.739 [DEBUG] [Thread-118503] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:49:37.739 [DEBUG] [Thread-118503] [transport.py] [_log()] Compression: none
2025-11-03T15:49:37.739 [DEBUG] [Thread-118503] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:49:37.761 [DEBUG] [Thread-118503] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:49:37.761 [DEBUG] [Thread-118503] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:49:37.762 [DEBUG] [Thread-118503] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:49:37.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:49:37.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:49:37.764 [DEBUG] [Thread-118503] [transport.py] [_log()] userauth is OK
2025-11-03T15:49:37.764 [DEBUG] [Thread-118503] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:49:37.764 [DEBUG] [Thread-118503] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:49:37.765 [DEBUG] [Thread-118503] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:49:37.765 [DEBUG] [Thread-118503] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:49:37.789 [INFO] [Thread-118503] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:49:37.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:49:38.402 [DEBUG] [Thread-118503] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:49:38.403 [DEBUG] [Thread-118503] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:49:38.404 [DEBUG] [Thread-118503] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:49:38.444 [DEBUG] [Thread-118503] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:49:38.444 [DEBUG] [Thread-118503] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:49:38.448 [DEBUG] [Thread-118503] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:49:38.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:49:38.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:49:38.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:49:38.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:49:38.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:49:38.474 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:49:38.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:49:38.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:49:38.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:49:38.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.575450 -999.00  +26.20  32.32      8  -10.20 1 1 2 1 1   888    0 39.85 92.37 ----- 35.0 32.3 312.2 40.2 30.5 -34.0 30.1 -32.7 31.1 -32.2 31.8 -32.9
2025-11-03T15:49:38.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:49:38.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:49:38.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.575450
2025-11-03T15:49:38.482 [DEBUG] [Thread-118503] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:49:38.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:49:38.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:49:38.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:49:38.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:49:38.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:49:38.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:49:32', tmtdew=46.7, humidity=3.34, cloud=0.0, wind=25.64, temperature=26.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:48:38.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:49:38.569 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:49:38.591 [DEBUG] [Thread-118506] [transport.py] [_log()] starting thread (client mode): 0xed2e2c0
2025-11-03T15:49:38.591 [DEBUG] [Thread-118506] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:49:38.605 [DEBUG] [Thread-118506] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:49:38.605 [INFO] [Thread-118506] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:49:38.613 [DEBUG] [Thread-118506] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:49:38.613 [DEBUG] [Thread-118506] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:49:38.613 [DEBUG] [Thread-118506] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:49:38.613 [DEBUG] [Thread-118506] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:49:38.613 [DEBUG] [Thread-118506] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:49:38.613 [DEBUG] [Thread-118506] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:49:38.613 [DEBUG] [Thread-118506] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:49:38.613 [DEBUG] [Thread-118506] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:49:38.614 [DEBUG] [Thread-118506] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:49:38.614 [DEBUG] [Thread-118506] [transport.py] [_log()] client lang: <none>
2025-11-03T15:49:38.614 [DEBUG] [Thread-118506] [transport.py] [_log()] server lang: <none>
2025-11-03T15:49:38.614 [DEBUG] [Thread-118506] [transport.py] [_log()] kex follows: False
2025-11-03T15:49:38.614 [DEBUG] [Thread-118506] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:49:38.614 [DEBUG] [Thread-118506] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:49:38.614 [DEBUG] [Thread-118506] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:49:38.614 [DEBUG] [Thread-118506] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:49:38.614 [DEBUG] [Thread-118506] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:49:38.614 [DEBUG] [Thread-118506] [transport.py] [_log()] Compression: none
2025-11-03T15:49:38.614 [DEBUG] [Thread-118506] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:49:38.677 [DEBUG] [Thread-118506] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:49:38.677 [DEBUG] [Thread-118506] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:49:38.678 [DEBUG] [Thread-118506] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:49:38.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:49:38.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:49:38.732 [DEBUG] [Thread-118506] [transport.py] [_log()] userauth is OK
2025-11-03T15:49:38.732 [DEBUG] [Thread-118506] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:49:38.732 [DEBUG] [Thread-118506] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:49:38.733 [DEBUG] [Thread-118506] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:49:38.733 [DEBUG] [Thread-118506] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:49:38.755 [INFO] [Thread-118506] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:49:38.755 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:49:38.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:49:39.609 [DEBUG] [Thread-118506] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:49:39.610 [DEBUG] [Thread-118506] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:49:39.656 [DEBUG] [Thread-118506] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:49:39.657 [DEBUG] [Thread-118506] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:49:39.665 [DEBUG] [Thread-118506] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:49:39.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:49:39.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:49:39.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:49:39.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:49:39.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:49:39.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:49:39.698 [DEBUG] [Thread-118506] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:49:46.403 [DEBUG] [Thread-118508 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:50:01.460 [DEBUG] [Thread-118509 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:50:09.223 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:50:09.224 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:50:09.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:50:09.721 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:50:09.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:50:10.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 50, 5), 47.18, 3.22, 0.0, 33.42, 26.6, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:50:10.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:50:05
2025-11-03T15:50:10.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:50:10.817 [DEBUG] [Thread-118510] [transport.py] [_log()] starting thread (client mode): 0xed2fd60
2025-11-03T15:50:10.818 [DEBUG] [Thread-118510] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:50:10.834 [DEBUG] [Thread-118510] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:50:10.834 [INFO] [Thread-118510] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:50:10.837 [DEBUG] [Thread-118510] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:50:10.838 [DEBUG] [Thread-118510] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:50:10.838 [DEBUG] [Thread-118510] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:50:10.838 [DEBUG] [Thread-118510] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:50:10.838 [DEBUG] [Thread-118510] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:50:10.838 [DEBUG] [Thread-118510] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:50:10.838 [DEBUG] [Thread-118510] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:50:10.838 [DEBUG] [Thread-118510] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:50:10.838 [DEBUG] [Thread-118510] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:50:10.838 [DEBUG] [Thread-118510] [transport.py] [_log()] client lang: <none>
2025-11-03T15:50:10.838 [DEBUG] [Thread-118510] [transport.py] [_log()] server lang: <none>
2025-11-03T15:50:10.839 [DEBUG] [Thread-118510] [transport.py] [_log()] kex follows: False
2025-11-03T15:50:10.839 [DEBUG] [Thread-118510] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:50:10.839 [DEBUG] [Thread-118510] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:50:10.839 [DEBUG] [Thread-118510] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:50:10.839 [DEBUG] [Thread-118510] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:50:10.839 [DEBUG] [Thread-118510] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:50:10.839 [DEBUG] [Thread-118510] [transport.py] [_log()] Compression: none
2025-11-03T15:50:10.840 [DEBUG] [Thread-118510] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:50:10.860 [DEBUG] [Thread-118510] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:50:10.861 [DEBUG] [Thread-118510] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:50:10.861 [DEBUG] [Thread-118510] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:50:10.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:50:10.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:50:10.863 [DEBUG] [Thread-118510] [transport.py] [_log()] userauth is OK
2025-11-03T15:50:10.863 [DEBUG] [Thread-118510] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:50:10.864 [DEBUG] [Thread-118510] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:50:10.864 [DEBUG] [Thread-118510] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:50:10.864 [DEBUG] [Thread-118510] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:50:10.887 [INFO] [Thread-118510] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:50:10.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:50:16.507 [DEBUG] [Thread-118512 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:50:18.612 [DEBUG] [Thread-118513 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:50:19.672 [DEBUG] [Thread-118510] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:50:19.673 [DEBUG] [Thread-118510] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:50:19.673 [DEBUG] [Thread-118510] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:50:19.714 [DEBUG] [Thread-118510] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:50:19.715 [DEBUG] [Thread-118510] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:50:19.718 [DEBUG] [Thread-118510] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:50:19.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:50:19.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:50:19.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:50:19.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:50:19.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:50:19.741 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:50:19.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:50:19.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:50:19.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:50:19.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.576144 -999.00  +26.20  22.19      8  -10.20 1 1 1 1 1   888    0 39.62 93.38 ----- 28.2 22.2 297.6 42.0 30.4 -33.7 30.2 -32.0 31.0 -33.2 31.7 -32.1
2025-11-03T15:50:19.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:50:19.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:50:19.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.576144
2025-11-03T15:50:19.749 [DEBUG] [Thread-118510] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:50:19.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:50:19.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:50:19.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:50:19.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:50:19.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:50:19.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:50:05', tmtdew=47.18, humidity=3.22, cloud=0.0, wind=33.42, temperature=26.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:49:38.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:50:19.837 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:50:19.858 [DEBUG] [Thread-118515] [transport.py] [_log()] starting thread (client mode): 0xedd63e0
2025-11-03T15:50:19.858 [DEBUG] [Thread-118515] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:50:19.872 [DEBUG] [Thread-118515] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:50:19.872 [INFO] [Thread-118515] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:50:19.880 [DEBUG] [Thread-118515] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:50:19.880 [DEBUG] [Thread-118515] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:50:19.881 [DEBUG] [Thread-118515] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:50:19.881 [DEBUG] [Thread-118515] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:50:19.881 [DEBUG] [Thread-118515] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:50:19.881 [DEBUG] [Thread-118515] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:50:19.881 [DEBUG] [Thread-118515] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:50:19.881 [DEBUG] [Thread-118515] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:50:19.881 [DEBUG] [Thread-118515] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:50:19.881 [DEBUG] [Thread-118515] [transport.py] [_log()] client lang: <none>
2025-11-03T15:50:19.881 [DEBUG] [Thread-118515] [transport.py] [_log()] server lang: <none>
2025-11-03T15:50:19.881 [DEBUG] [Thread-118515] [transport.py] [_log()] kex follows: False
2025-11-03T15:50:19.881 [DEBUG] [Thread-118515] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:50:19.881 [DEBUG] [Thread-118515] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:50:19.881 [DEBUG] [Thread-118515] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:50:19.882 [DEBUG] [Thread-118515] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:50:19.882 [DEBUG] [Thread-118515] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:50:19.882 [DEBUG] [Thread-118515] [transport.py] [_log()] Compression: none
2025-11-03T15:50:19.882 [DEBUG] [Thread-118515] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:50:19.943 [DEBUG] [Thread-118515] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:50:19.953 [DEBUG] [Thread-118515] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:50:19.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:50:19.954 [DEBUG] [Thread-118515] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:50:19.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:50:19.999 [DEBUG] [Thread-118515] [transport.py] [_log()] userauth is OK
2025-11-03T15:50:19.999 [DEBUG] [Thread-118515] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:50:19.999 [DEBUG] [Thread-118515] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:50:20.000 [DEBUG] [Thread-118515] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:50:20.000 [DEBUG] [Thread-118515] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:50:20.018 [INFO] [Thread-118515] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:50:20.019 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:50:20.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:50:20.856 [DEBUG] [Thread-118515] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:50:20.856 [DEBUG] [Thread-118515] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:50:20.903 [DEBUG] [Thread-118515] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:50:20.904 [DEBUG] [Thread-118515] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:50:20.913 [DEBUG] [Thread-118515] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:50:20.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:50:20.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:50:20.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:50:20.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:50:20.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:50:20.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:50:20.947 [DEBUG] [Thread-118515] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:50:31.547 [DEBUG] [Thread-118517 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:50:46.627 [DEBUG] [Thread-118518 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:50:50.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:50:50.971 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:50:50.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:50:51.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 50, 37), 47.14, 3.65, 0.0, 41.55, 26.6, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:50:51.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:50:37
2025-11-03T15:50:51.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:50:51.930 [DEBUG] [Thread-118519] [transport.py] [_log()] starting thread (client mode): 0xedd6ad0
2025-11-03T15:50:51.930 [DEBUG] [Thread-118519] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:50:51.949 [DEBUG] [Thread-118519] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:50:51.950 [INFO] [Thread-118519] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:50:51.953 [DEBUG] [Thread-118519] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:50:51.953 [DEBUG] [Thread-118519] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:50:51.953 [DEBUG] [Thread-118519] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:50:51.953 [DEBUG] [Thread-118519] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:50:51.953 [DEBUG] [Thread-118519] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:50:51.953 [DEBUG] [Thread-118519] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:50:51.953 [DEBUG] [Thread-118519] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:50:51.953 [DEBUG] [Thread-118519] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:50:51.953 [DEBUG] [Thread-118519] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:50:51.953 [DEBUG] [Thread-118519] [transport.py] [_log()] client lang: <none>
2025-11-03T15:50:51.953 [DEBUG] [Thread-118519] [transport.py] [_log()] server lang: <none>
2025-11-03T15:50:51.953 [DEBUG] [Thread-118519] [transport.py] [_log()] kex follows: False
2025-11-03T15:50:51.953 [DEBUG] [Thread-118519] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:50:51.953 [DEBUG] [Thread-118519] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:50:51.954 [DEBUG] [Thread-118519] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:50:51.954 [DEBUG] [Thread-118519] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:50:51.954 [DEBUG] [Thread-118519] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:50:51.954 [DEBUG] [Thread-118519] [transport.py] [_log()] Compression: none
2025-11-03T15:50:51.954 [DEBUG] [Thread-118519] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:50:51.972 [DEBUG] [Thread-118519] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:50:51.973 [DEBUG] [Thread-118519] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:50:51.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:50:51.974 [DEBUG] [Thread-118519] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:50:51.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:50:51.976 [DEBUG] [Thread-118519] [transport.py] [_log()] userauth is OK
2025-11-03T15:50:51.977 [DEBUG] [Thread-118519] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:50:51.977 [DEBUG] [Thread-118519] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:50:51.977 [DEBUG] [Thread-118519] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:50:51.977 [DEBUG] [Thread-118519] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:50:52.013 [INFO] [Thread-118519] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:50:52.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:50:52.636 [DEBUG] [Thread-118519] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:50:52.636 [DEBUG] [Thread-118519] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:50:52.636 [DEBUG] [Thread-118519] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:50:52.678 [DEBUG] [Thread-118519] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:50:52.678 [DEBUG] [Thread-118519] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:50:52.680 [DEBUG] [Thread-118519] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:50:52.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:50:52.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:50:52.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:50:52.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:50:52.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:50:52.699 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:50:52.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:50:52.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:50:52.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:50:52.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.576491 -999.00  +25.90  32.07      8  -10.50 1 1 2 1 1   888    0 39.96 86.95 ----- 35.9 32.1 295.8 41.9 30.4 -34.9 30.0 -32.7 30.8 -33.3 31.6 -32.7
2025-11-03T15:50:52.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:50:52.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:50:52.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.576491
2025-11-03T15:50:52.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:50:52.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:50:52.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:50:52.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:50:52.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:50:52.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:50:37', tmtdew=47.14, humidity=3.65, cloud=0.0, wind=41.55, temperature=26.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:50:08.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:50:52.700 [DEBUG] [Thread-118519] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:50:52.771 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:50:52.792 [DEBUG] [Thread-118522] [transport.py] [_log()] starting thread (client mode): 0x117e9a80
2025-11-03T15:50:52.793 [DEBUG] [Thread-118522] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:50:52.807 [DEBUG] [Thread-118522] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:50:52.808 [INFO] [Thread-118522] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:50:52.815 [DEBUG] [Thread-118522] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:50:52.815 [DEBUG] [Thread-118522] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:50:52.815 [DEBUG] [Thread-118522] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:50:52.815 [DEBUG] [Thread-118522] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:50:52.815 [DEBUG] [Thread-118522] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:50:52.815 [DEBUG] [Thread-118522] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:50:52.815 [DEBUG] [Thread-118522] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:50:52.815 [DEBUG] [Thread-118522] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:50:52.815 [DEBUG] [Thread-118522] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:50:52.815 [DEBUG] [Thread-118522] [transport.py] [_log()] client lang: <none>
2025-11-03T15:50:52.815 [DEBUG] [Thread-118522] [transport.py] [_log()] server lang: <none>
2025-11-03T15:50:52.815 [DEBUG] [Thread-118522] [transport.py] [_log()] kex follows: False
2025-11-03T15:50:52.815 [DEBUG] [Thread-118522] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:50:52.815 [DEBUG] [Thread-118522] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:50:52.815 [DEBUG] [Thread-118522] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:50:52.816 [DEBUG] [Thread-118522] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:50:52.816 [DEBUG] [Thread-118522] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:50:52.816 [DEBUG] [Thread-118522] [transport.py] [_log()] Compression: none
2025-11-03T15:50:52.816 [DEBUG] [Thread-118522] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:50:52.872 [DEBUG] [Thread-118522] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:50:52.872 [DEBUG] [Thread-118522] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:50:52.872 [DEBUG] [Thread-118522] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:50:52.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:50:52.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:50:52.929 [DEBUG] [Thread-118522] [transport.py] [_log()] userauth is OK
2025-11-03T15:50:52.929 [DEBUG] [Thread-118522] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:50:52.929 [DEBUG] [Thread-118522] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:50:52.929 [DEBUG] [Thread-118522] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:50:52.929 [DEBUG] [Thread-118522] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:50:52.944 [INFO] [Thread-118522] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:50:52.944 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:50:52.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:50:53.800 [DEBUG] [Thread-118522] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:50:53.800 [DEBUG] [Thread-118522] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:50:53.848 [DEBUG] [Thread-118522] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:50:53.849 [DEBUG] [Thread-118522] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:50:53.858 [DEBUG] [Thread-118522] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:50:53.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:50:53.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:50:53.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:50:53.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:50:53.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:50:53.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:50:53.895 [DEBUG] [Thread-118522] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:51:01.668 [DEBUG] [Thread-118524 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:51:09.365 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:51:09.366 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:51:16.729 [DEBUG] [Thread-118525 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:51:18.816 [DEBUG] [Thread-118526 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:51:23.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:51:23.917 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:51:23.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:51:24.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 51, 9), 47.12, 3.65, 0.0, 40.53, 26.53, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:51:24.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:51:09
2025-11-03T15:51:24.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:51:24.927 [DEBUG] [Thread-118527] [transport.py] [_log()] starting thread (client mode): 0xeda0a60
2025-11-03T15:51:24.927 [DEBUG] [Thread-118527] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:51:24.937 [DEBUG] [Thread-118527] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:51:24.937 [INFO] [Thread-118527] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:51:24.940 [DEBUG] [Thread-118527] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:51:24.941 [DEBUG] [Thread-118527] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:51:24.941 [DEBUG] [Thread-118527] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:51:24.941 [DEBUG] [Thread-118527] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:51:24.941 [DEBUG] [Thread-118527] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:51:24.941 [DEBUG] [Thread-118527] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:51:24.941 [DEBUG] [Thread-118527] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:51:24.941 [DEBUG] [Thread-118527] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:51:24.941 [DEBUG] [Thread-118527] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:51:24.941 [DEBUG] [Thread-118527] [transport.py] [_log()] client lang: <none>
2025-11-03T15:51:24.941 [DEBUG] [Thread-118527] [transport.py] [_log()] server lang: <none>
2025-11-03T15:51:24.941 [DEBUG] [Thread-118527] [transport.py] [_log()] kex follows: False
2025-11-03T15:51:24.941 [DEBUG] [Thread-118527] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:51:24.941 [DEBUG] [Thread-118527] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:51:24.941 [DEBUG] [Thread-118527] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:51:24.941 [DEBUG] [Thread-118527] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:51:24.941 [DEBUG] [Thread-118527] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:51:24.941 [DEBUG] [Thread-118527] [transport.py] [_log()] Compression: none
2025-11-03T15:51:24.941 [DEBUG] [Thread-118527] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:51:24.960 [DEBUG] [Thread-118527] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:51:24.961 [DEBUG] [Thread-118527] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:51:24.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:51:24.962 [DEBUG] [Thread-118527] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:51:24.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:51:24.964 [DEBUG] [Thread-118527] [transport.py] [_log()] userauth is OK
2025-11-03T15:51:24.964 [DEBUG] [Thread-118527] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:51:24.964 [DEBUG] [Thread-118527] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:51:24.964 [DEBUG] [Thread-118527] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:51:24.965 [DEBUG] [Thread-118527] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:51:24.988 [INFO] [Thread-118527] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:51:24.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:51:25.755 [DEBUG] [Thread-118527] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:51:25.755 [DEBUG] [Thread-118527] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:51:25.755 [DEBUG] [Thread-118527] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:51:25.795 [DEBUG] [Thread-118527] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:51:25.795 [DEBUG] [Thread-118527] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:51:25.797 [DEBUG] [Thread-118527] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:51:25.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:51:25.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:51:25.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:51:25.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:51:25.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:51:25.818 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:51:25.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:51:25.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:51:25.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:51:25.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.576839 -999.00  +25.90  46.67      8  -10.30 1 1 2 1 1   888    0 39.73 81.16 ----- 36.4 46.7 288.8 49.0 30.2 -34.2 29.9 -32.5 30.8 -33.5 31.5 -31.8
2025-11-03T15:51:25.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:51:25.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:51:25.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.576839
2025-11-03T15:51:25.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:51:25.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:51:25.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:51:25.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:51:25.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:51:25.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:51:09', tmtdew=47.12, humidity=3.65, cloud=0.0, wind=40.53, temperature=26.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:50:38.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:51:25.819 [DEBUG] [Thread-118527] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:51:25.890 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:51:25.913 [DEBUG] [Thread-118530] [transport.py] [_log()] starting thread (client mode): 0xeda1cf0
2025-11-03T15:51:25.913 [DEBUG] [Thread-118530] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:51:25.927 [DEBUG] [Thread-118530] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:51:25.927 [INFO] [Thread-118530] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:51:25.935 [DEBUG] [Thread-118530] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:51:25.935 [DEBUG] [Thread-118530] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:51:25.935 [DEBUG] [Thread-118530] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:51:25.935 [DEBUG] [Thread-118530] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:51:25.935 [DEBUG] [Thread-118530] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:51:25.935 [DEBUG] [Thread-118530] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:51:25.935 [DEBUG] [Thread-118530] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:51:25.935 [DEBUG] [Thread-118530] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:51:25.935 [DEBUG] [Thread-118530] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:51:25.935 [DEBUG] [Thread-118530] [transport.py] [_log()] client lang: <none>
2025-11-03T15:51:25.935 [DEBUG] [Thread-118530] [transport.py] [_log()] server lang: <none>
2025-11-03T15:51:25.935 [DEBUG] [Thread-118530] [transport.py] [_log()] kex follows: False
2025-11-03T15:51:25.935 [DEBUG] [Thread-118530] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:51:25.935 [DEBUG] [Thread-118530] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:51:25.935 [DEBUG] [Thread-118530] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:51:25.935 [DEBUG] [Thread-118530] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:51:25.935 [DEBUG] [Thread-118530] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:51:25.936 [DEBUG] [Thread-118530] [transport.py] [_log()] Compression: none
2025-11-03T15:51:25.936 [DEBUG] [Thread-118530] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:51:25.991 [DEBUG] [Thread-118530] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:51:25.991 [DEBUG] [Thread-118530] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:51:25.992 [DEBUG] [Thread-118530] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:51:25.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:51:25.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:51:26.048 [DEBUG] [Thread-118530] [transport.py] [_log()] userauth is OK
2025-11-03T15:51:26.048 [DEBUG] [Thread-118530] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:51:26.048 [DEBUG] [Thread-118530] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:51:26.048 [DEBUG] [Thread-118530] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:51:26.048 [DEBUG] [Thread-118530] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:51:26.066 [INFO] [Thread-118530] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:51:26.066 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:51:26.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:51:27.015 [DEBUG] [Thread-118530] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:51:27.015 [DEBUG] [Thread-118530] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:51:27.063 [DEBUG] [Thread-118530] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:51:27.063 [DEBUG] [Thread-118530] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:51:27.072 [DEBUG] [Thread-118530] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:51:27.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:51:27.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:51:27.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:51:27.099 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:51:27.099 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:51:27.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:51:27.108 [DEBUG] [Thread-118530] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:51:31.772 [DEBUG] [Thread-118532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:51:46.845 [DEBUG] [Thread-118533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:51:57.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:51:57.106 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:51:57.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:51:57.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 51, 41), 47.11, 3.72, 0.0, 36.08, 26.9, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:51:57.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:51:41
2025-11-03T15:51:57.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:51:58.070 [DEBUG] [Thread-118534] [transport.py] [_log()] starting thread (client mode): 0x117ebf40
2025-11-03T15:51:58.070 [DEBUG] [Thread-118534] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:51:58.082 [DEBUG] [Thread-118534] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:51:58.082 [INFO] [Thread-118534] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:51:58.085 [DEBUG] [Thread-118534] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:51:58.085 [DEBUG] [Thread-118534] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:51:58.085 [DEBUG] [Thread-118534] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:51:58.085 [DEBUG] [Thread-118534] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:51:58.085 [DEBUG] [Thread-118534] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:51:58.086 [DEBUG] [Thread-118534] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:51:58.086 [DEBUG] [Thread-118534] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:51:58.086 [DEBUG] [Thread-118534] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:51:58.086 [DEBUG] [Thread-118534] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:51:58.086 [DEBUG] [Thread-118534] [transport.py] [_log()] client lang: <none>
2025-11-03T15:51:58.086 [DEBUG] [Thread-118534] [transport.py] [_log()] server lang: <none>
2025-11-03T15:51:58.086 [DEBUG] [Thread-118534] [transport.py] [_log()] kex follows: False
2025-11-03T15:51:58.086 [DEBUG] [Thread-118534] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:51:58.086 [DEBUG] [Thread-118534] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:51:58.086 [DEBUG] [Thread-118534] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:51:58.086 [DEBUG] [Thread-118534] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:51:58.086 [DEBUG] [Thread-118534] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:51:58.086 [DEBUG] [Thread-118534] [transport.py] [_log()] Compression: none
2025-11-03T15:51:58.086 [DEBUG] [Thread-118534] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:51:58.104 [DEBUG] [Thread-118534] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:51:58.104 [DEBUG] [Thread-118534] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:51:58.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:51:58.105 [DEBUG] [Thread-118534] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:51:58.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:51:58.108 [DEBUG] [Thread-118534] [transport.py] [_log()] userauth is OK
2025-11-03T15:51:58.108 [DEBUG] [Thread-118534] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:51:58.108 [DEBUG] [Thread-118534] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:51:58.108 [DEBUG] [Thread-118534] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:51:58.108 [DEBUG] [Thread-118534] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:51:58.144 [INFO] [Thread-118534] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:51:58.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:51:58.785 [DEBUG] [Thread-118534] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:51:58.785 [DEBUG] [Thread-118534] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:51:58.786 [DEBUG] [Thread-118534] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:51:58.826 [DEBUG] [Thread-118534] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:51:58.826 [DEBUG] [Thread-118534] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:51:58.829 [DEBUG] [Thread-118534] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:51:58.842 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:51:58.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:51:58.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:51:58.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:51:58.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:51:58.853 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:51:58.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:51:58.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:51:58.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:51:58.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.577186 -999.00  +26.10  28.43      8  -10.00 1 1 1 1 1   888    0 39.37 76.63 ----- 30.0 28.4 292.2 41.3 30.1 -33.2 29.9 -32.2 30.7 -32.4 31.4 -31.7
2025-11-03T15:51:58.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:51:58.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:51:58.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.577186
2025-11-03T15:51:58.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:51:58.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:51:58.857 [DEBUG] [Thread-118534] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:51:58.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:51:58.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:51:58.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:51:58.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:51:41', tmtdew=47.11, humidity=3.72, cloud=0.0, wind=36.08, temperature=26.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:51:08.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:51:58.950 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:51:58.968 [DEBUG] [Thread-118537] [transport.py] [_log()] starting thread (client mode): 0xeda0be0
2025-11-03T15:51:58.968 [DEBUG] [Thread-118537] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:51:58.983 [DEBUG] [Thread-118537] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:51:58.983 [INFO] [Thread-118537] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:51:58.992 [DEBUG] [Thread-118537] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:51:58.992 [DEBUG] [Thread-118537] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:51:58.993 [DEBUG] [Thread-118537] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:51:58.993 [DEBUG] [Thread-118537] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:51:58.993 [DEBUG] [Thread-118537] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:51:58.993 [DEBUG] [Thread-118537] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:51:58.993 [DEBUG] [Thread-118537] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:51:58.993 [DEBUG] [Thread-118537] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:51:58.993 [DEBUG] [Thread-118537] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:51:58.993 [DEBUG] [Thread-118537] [transport.py] [_log()] client lang: <none>
2025-11-03T15:51:58.994 [DEBUG] [Thread-118537] [transport.py] [_log()] server lang: <none>
2025-11-03T15:51:58.994 [DEBUG] [Thread-118537] [transport.py] [_log()] kex follows: False
2025-11-03T15:51:58.994 [DEBUG] [Thread-118537] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:51:58.994 [DEBUG] [Thread-118537] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:51:58.994 [DEBUG] [Thread-118537] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:51:58.994 [DEBUG] [Thread-118537] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:51:58.994 [DEBUG] [Thread-118537] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:51:58.995 [DEBUG] [Thread-118537] [transport.py] [_log()] Compression: none
2025-11-03T15:51:58.995 [DEBUG] [Thread-118537] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:51:59.052 [DEBUG] [Thread-118537] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:51:59.052 [DEBUG] [Thread-118537] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:51:59.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:51:59.054 [DEBUG] [Thread-118537] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:51:59.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:51:59.108 [DEBUG] [Thread-118537] [transport.py] [_log()] userauth is OK
2025-11-03T15:51:59.108 [DEBUG] [Thread-118537] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:51:59.108 [DEBUG] [Thread-118537] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:51:59.109 [DEBUG] [Thread-118537] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:51:59.109 [DEBUG] [Thread-118537] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:51:59.142 [INFO] [Thread-118537] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:51:59.143 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:51:59.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:51:59.979 [DEBUG] [Thread-118537] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:51:59.979 [DEBUG] [Thread-118537] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:52:00.027 [DEBUG] [Thread-118537] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:52:00.027 [DEBUG] [Thread-118537] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:52:00.035 [DEBUG] [Thread-118537] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:52:00.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:52:00.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:52:00.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:52:00.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:52:00.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:52:00.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:52:00.066 [DEBUG] [Thread-118537] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:52:01.898 [DEBUG] [Thread-118539 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:52:09.506 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:52:09.508 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:52:16.965 [DEBUG] [Thread-118540 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:52:19.005 [DEBUG] [Thread-118541 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:52:30.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:52:30.072 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:52:30.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:52:30.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 52, 14), 47.12, 3.72, 0.0, 35.61, 26.93, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:52:30.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:52:14
2025-11-03T15:52:30.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:52:31.015 [DEBUG] [Thread-118542] [transport.py] [_log()] starting thread (client mode): 0x117e9b10
2025-11-03T15:52:31.015 [DEBUG] [Thread-118542] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:52:31.035 [DEBUG] [Thread-118542] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:52:31.036 [INFO] [Thread-118542] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:52:31.039 [DEBUG] [Thread-118542] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:52:31.039 [DEBUG] [Thread-118542] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:52:31.039 [DEBUG] [Thread-118542] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:52:31.039 [DEBUG] [Thread-118542] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:52:31.039 [DEBUG] [Thread-118542] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:52:31.039 [DEBUG] [Thread-118542] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:52:31.039 [DEBUG] [Thread-118542] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:52:31.039 [DEBUG] [Thread-118542] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:52:31.039 [DEBUG] [Thread-118542] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:52:31.039 [DEBUG] [Thread-118542] [transport.py] [_log()] client lang: <none>
2025-11-03T15:52:31.039 [DEBUG] [Thread-118542] [transport.py] [_log()] server lang: <none>
2025-11-03T15:52:31.039 [DEBUG] [Thread-118542] [transport.py] [_log()] kex follows: False
2025-11-03T15:52:31.039 [DEBUG] [Thread-118542] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:52:31.039 [DEBUG] [Thread-118542] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:52:31.040 [DEBUG] [Thread-118542] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:52:31.040 [DEBUG] [Thread-118542] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:52:31.040 [DEBUG] [Thread-118542] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:52:31.040 [DEBUG] [Thread-118542] [transport.py] [_log()] Compression: none
2025-11-03T15:52:31.040 [DEBUG] [Thread-118542] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:52:31.053 [DEBUG] [Thread-118542] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:52:31.054 [DEBUG] [Thread-118542] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:52:31.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:52:31.055 [DEBUG] [Thread-118542] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:52:31.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:52:31.057 [DEBUG] [Thread-118542] [transport.py] [_log()] userauth is OK
2025-11-03T15:52:31.057 [DEBUG] [Thread-118542] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:52:31.057 [DEBUG] [Thread-118542] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:52:31.058 [DEBUG] [Thread-118542] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:52:31.058 [DEBUG] [Thread-118542] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:52:31.090 [INFO] [Thread-118542] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:52:31.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:52:31.869 [DEBUG] [Thread-118542] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:52:31.869 [DEBUG] [Thread-118542] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:52:31.870 [DEBUG] [Thread-118542] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:52:31.910 [DEBUG] [Thread-118542] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:52:31.910 [DEBUG] [Thread-118542] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:52:31.913 [DEBUG] [Thread-118542] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:52:31.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:52:31.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:52:31.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:52:31.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:52:31.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:52:31.936 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:52:31.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:52:31.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:52:31.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:52:31.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.577533 -999.00  +26.20  27.96      8   -9.90 1 1 1 1 1   888    0 38.71 71.14 ----- 30.4 28.0 296.0 40.2 30.1 -33.5 29.9 -31.9 30.8 -33.1 31.4 -31.6
2025-11-03T15:52:31.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:52:31.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:52:31.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.577533
2025-11-03T15:52:31.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:52:31.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:52:31.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:52:31.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:52:31.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:52:31.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:52:14', tmtdew=47.12, humidity=3.72, cloud=0.0, wind=35.61, temperature=26.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:51:38.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:52:31.939 [DEBUG] [Thread-118542] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:52:31.999 [DEBUG] [Thread-118545 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:52:32.022 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:52:32.042 [DEBUG] [Thread-118546] [transport.py] [_log()] starting thread (client mode): 0x1174ff40
2025-11-03T15:52:32.042 [DEBUG] [Thread-118546] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:52:32.058 [DEBUG] [Thread-118546] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:52:32.058 [INFO] [Thread-118546] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:52:32.066 [DEBUG] [Thread-118546] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:52:32.066 [DEBUG] [Thread-118546] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:52:32.066 [DEBUG] [Thread-118546] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:52:32.067 [DEBUG] [Thread-118546] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:52:32.067 [DEBUG] [Thread-118546] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:52:32.067 [DEBUG] [Thread-118546] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:52:32.067 [DEBUG] [Thread-118546] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:52:32.067 [DEBUG] [Thread-118546] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:52:32.067 [DEBUG] [Thread-118546] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:52:32.067 [DEBUG] [Thread-118546] [transport.py] [_log()] client lang: <none>
2025-11-03T15:52:32.067 [DEBUG] [Thread-118546] [transport.py] [_log()] server lang: <none>
2025-11-03T15:52:32.067 [DEBUG] [Thread-118546] [transport.py] [_log()] kex follows: False
2025-11-03T15:52:32.067 [DEBUG] [Thread-118546] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:52:32.067 [DEBUG] [Thread-118546] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:52:32.067 [DEBUG] [Thread-118546] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:52:32.067 [DEBUG] [Thread-118546] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:52:32.067 [DEBUG] [Thread-118546] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:52:32.067 [DEBUG] [Thread-118546] [transport.py] [_log()] Compression: none
2025-11-03T15:52:32.068 [DEBUG] [Thread-118546] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:52:32.128 [DEBUG] [Thread-118546] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:52:32.128 [DEBUG] [Thread-118546] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:52:32.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:52:32.129 [DEBUG] [Thread-118546] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:52:32.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:52:32.187 [DEBUG] [Thread-118546] [transport.py] [_log()] userauth is OK
2025-11-03T15:52:32.187 [DEBUG] [Thread-118546] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:52:32.188 [DEBUG] [Thread-118546] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:52:32.188 [DEBUG] [Thread-118546] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:52:32.188 [DEBUG] [Thread-118546] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:52:32.221 [INFO] [Thread-118546] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:52:32.222 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:52:32.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:52:33.078 [DEBUG] [Thread-118546] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:52:33.088 [DEBUG] [Thread-118546] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:52:33.127 [DEBUG] [Thread-118546] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:52:33.127 [DEBUG] [Thread-118546] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:52:33.137 [DEBUG] [Thread-118546] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:52:33.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:52:33.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:52:33.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:52:33.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:52:33.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:52:33.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:52:33.175 [DEBUG] [Thread-118546] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:52:47.059 [DEBUG] [Thread-118548 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:53:02.096 [DEBUG] [Thread-118549 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:53:03.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:53:03.197 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:53:03.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:53:03.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 52, 46), 46.88, 3.74, 0.0, 31.05, 27.02, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:53:03.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:52:46
2025-11-03T15:53:03.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:53:04.116 [DEBUG] [Thread-118550] [transport.py] [_log()] starting thread (client mode): 0xeda1d80
2025-11-03T15:53:04.116 [DEBUG] [Thread-118550] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:53:04.137 [DEBUG] [Thread-118550] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:53:04.137 [INFO] [Thread-118550] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:53:04.140 [DEBUG] [Thread-118550] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:53:04.140 [DEBUG] [Thread-118550] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:53:04.140 [DEBUG] [Thread-118550] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:53:04.140 [DEBUG] [Thread-118550] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:53:04.140 [DEBUG] [Thread-118550] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:53:04.140 [DEBUG] [Thread-118550] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:53:04.140 [DEBUG] [Thread-118550] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:53:04.140 [DEBUG] [Thread-118550] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:53:04.140 [DEBUG] [Thread-118550] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:53:04.140 [DEBUG] [Thread-118550] [transport.py] [_log()] client lang: <none>
2025-11-03T15:53:04.140 [DEBUG] [Thread-118550] [transport.py] [_log()] server lang: <none>
2025-11-03T15:53:04.141 [DEBUG] [Thread-118550] [transport.py] [_log()] kex follows: False
2025-11-03T15:53:04.141 [DEBUG] [Thread-118550] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:53:04.141 [DEBUG] [Thread-118550] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:53:04.141 [DEBUG] [Thread-118550] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:53:04.141 [DEBUG] [Thread-118550] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:53:04.141 [DEBUG] [Thread-118550] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:53:04.141 [DEBUG] [Thread-118550] [transport.py] [_log()] Compression: none
2025-11-03T15:53:04.141 [DEBUG] [Thread-118550] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:53:04.159 [DEBUG] [Thread-118550] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:53:04.160 [DEBUG] [Thread-118550] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:53:04.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:53:04.161 [DEBUG] [Thread-118550] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:53:04.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:53:04.163 [DEBUG] [Thread-118550] [transport.py] [_log()] userauth is OK
2025-11-03T15:53:04.164 [DEBUG] [Thread-118550] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:53:04.164 [DEBUG] [Thread-118550] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:53:04.164 [DEBUG] [Thread-118550] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:53:04.164 [DEBUG] [Thread-118550] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:53:04.201 [INFO] [Thread-118550] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:53:04.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:53:04.844 [DEBUG] [Thread-118550] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:53:04.854 [DEBUG] [Thread-118550] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:53:04.854 [DEBUG] [Thread-118550] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:53:04.886 [DEBUG] [Thread-118550] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:53:04.886 [DEBUG] [Thread-118550] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:53:04.890 [DEBUG] [Thread-118550] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:53:04.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:53:04.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:53:04.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:53:04.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:53:04.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:53:04.914 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:53:04.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:53:04.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:53:04.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:53:04.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.577880 -999.00  +26.40  30.46      8   -9.90 1 1 2 1 1   888    0 38.12 64.14 ----- 20.8 30.5 314.2 39.2 30.2 -32.4 30.0 -31.5 30.9 -32.5 31.5 -30.8
2025-11-03T15:53:04.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:53:04.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:53:04.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.577880
2025-11-03T15:53:04.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:53:04.916 [DEBUG] [Thread-118550] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:53:04.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:53:04.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:53:04.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:53:04.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:53:04.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:52:46', tmtdew=46.88, humidity=3.74, cloud=0.0, wind=31.05, temperature=27.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:52:08.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:53:05.001 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:53:05.020 [DEBUG] [Thread-118553] [transport.py] [_log()] starting thread (client mode): 0x81ba230
2025-11-03T15:53:05.020 [DEBUG] [Thread-118553] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:53:05.035 [DEBUG] [Thread-118553] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:53:05.036 [INFO] [Thread-118553] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:53:05.046 [DEBUG] [Thread-118553] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:53:05.047 [DEBUG] [Thread-118553] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:53:05.047 [DEBUG] [Thread-118553] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:53:05.047 [DEBUG] [Thread-118553] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:53:05.047 [DEBUG] [Thread-118553] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:53:05.047 [DEBUG] [Thread-118553] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:53:05.047 [DEBUG] [Thread-118553] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:53:05.047 [DEBUG] [Thread-118553] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:53:05.048 [DEBUG] [Thread-118553] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:53:05.048 [DEBUG] [Thread-118553] [transport.py] [_log()] client lang: <none>
2025-11-03T15:53:05.048 [DEBUG] [Thread-118553] [transport.py] [_log()] server lang: <none>
2025-11-03T15:53:05.048 [DEBUG] [Thread-118553] [transport.py] [_log()] kex follows: False
2025-11-03T15:53:05.048 [DEBUG] [Thread-118553] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:53:05.048 [DEBUG] [Thread-118553] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:53:05.048 [DEBUG] [Thread-118553] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:53:05.049 [DEBUG] [Thread-118553] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:53:05.049 [DEBUG] [Thread-118553] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:53:05.049 [DEBUG] [Thread-118553] [transport.py] [_log()] Compression: none
2025-11-03T15:53:05.049 [DEBUG] [Thread-118553] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:53:05.111 [DEBUG] [Thread-118553] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:53:05.111 [DEBUG] [Thread-118553] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:53:05.112 [DEBUG] [Thread-118553] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:53:05.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:53:05.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:53:05.170 [DEBUG] [Thread-118553] [transport.py] [_log()] userauth is OK
2025-11-03T15:53:05.171 [DEBUG] [Thread-118553] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:53:05.171 [DEBUG] [Thread-118553] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:53:05.171 [DEBUG] [Thread-118553] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:53:05.171 [DEBUG] [Thread-118553] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:53:05.190 [INFO] [Thread-118553] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:53:05.190 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:53:05.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:53:06.038 [DEBUG] [Thread-118553] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:53:06.038 [DEBUG] [Thread-118553] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:53:06.086 [DEBUG] [Thread-118553] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:53:06.086 [DEBUG] [Thread-118553] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:53:06.095 [DEBUG] [Thread-118553] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:53:06.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:53:06.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:53:06.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:53:06.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:53:06.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:53:06.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:53:06.133 [DEBUG] [Thread-118553] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:53:09.648 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:53:09.650 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:53:17.148 [DEBUG] [Thread-118555 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:53:19.038 [DEBUG] [Thread-118556 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:53:32.215 [DEBUG] [Thread-118557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:53:36.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:53:36.139 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:53:36.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:53:36.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 53, 18), 46.89, 3.74, 0.0, 30.03, 27.06, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:53:36.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:53:18
2025-11-03T15:53:37.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:53:37.243 [DEBUG] [Thread-118558] [transport.py] [_log()] starting thread (client mode): 0xeda3400
2025-11-03T15:53:37.243 [DEBUG] [Thread-118558] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:53:37.264 [DEBUG] [Thread-118558] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:53:37.264 [INFO] [Thread-118558] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:53:37.268 [DEBUG] [Thread-118558] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:53:37.268 [DEBUG] [Thread-118558] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:53:37.268 [DEBUG] [Thread-118558] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:53:37.268 [DEBUG] [Thread-118558] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:53:37.268 [DEBUG] [Thread-118558] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:53:37.268 [DEBUG] [Thread-118558] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:53:37.268 [DEBUG] [Thread-118558] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:53:37.268 [DEBUG] [Thread-118558] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:53:37.268 [DEBUG] [Thread-118558] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:53:37.268 [DEBUG] [Thread-118558] [transport.py] [_log()] client lang: <none>
2025-11-03T15:53:37.268 [DEBUG] [Thread-118558] [transport.py] [_log()] server lang: <none>
2025-11-03T15:53:37.268 [DEBUG] [Thread-118558] [transport.py] [_log()] kex follows: False
2025-11-03T15:53:37.268 [DEBUG] [Thread-118558] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:53:37.268 [DEBUG] [Thread-118558] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:53:37.268 [DEBUG] [Thread-118558] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:53:37.268 [DEBUG] [Thread-118558] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:53:37.268 [DEBUG] [Thread-118558] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:53:37.268 [DEBUG] [Thread-118558] [transport.py] [_log()] Compression: none
2025-11-03T15:53:37.268 [DEBUG] [Thread-118558] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:53:37.284 [DEBUG] [Thread-118558] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:53:37.284 [DEBUG] [Thread-118558] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:53:37.284 [DEBUG] [Thread-118558] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:53:37.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:53:37.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:53:37.285 [DEBUG] [Thread-118558] [transport.py] [_log()] userauth is OK
2025-11-03T15:53:37.285 [DEBUG] [Thread-118558] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:53:37.285 [DEBUG] [Thread-118558] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:53:37.285 [DEBUG] [Thread-118558] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:53:37.285 [DEBUG] [Thread-118558] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:53:37.294 [INFO] [Thread-118558] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:53:37.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:53:38.053 [DEBUG] [Thread-118558] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:53:38.053 [DEBUG] [Thread-118558] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:53:38.053 [DEBUG] [Thread-118558] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:53:38.094 [DEBUG] [Thread-118558] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:53:38.094 [DEBUG] [Thread-118558] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:53:38.097 [DEBUG] [Thread-118558] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:53:38.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:53:38.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:53:38.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:53:38.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:53:38.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:53:38.111 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:53:38.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:53:38.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:53:38.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:53:38.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.578228 -999.00  +26.90  27.76      8   -9.90 1 1 1 1 1   888    0 38.34 60.50 ----- 29.7 27.8 302.6 39.8 30.2 -32.6 30.0 -32.7 30.9 -36.1 31.6 -31.1
2025-11-03T15:53:38.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:53:38.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:53:38.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.578228
2025-11-03T15:53:38.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:53:38.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:53:38.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:53:38.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:53:38.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:53:38.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:53:18', tmtdew=46.89, humidity=3.74, cloud=0.0, wind=30.03, temperature=27.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:52:38.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:53:38.112 [DEBUG] [Thread-118558] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:53:38.186 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:53:38.204 [DEBUG] [Thread-118561] [transport.py] [_log()] starting thread (client mode): 0xeda25c0
2025-11-03T15:53:38.205 [DEBUG] [Thread-118561] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:53:38.220 [DEBUG] [Thread-118561] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:53:38.220 [INFO] [Thread-118561] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:53:38.227 [DEBUG] [Thread-118561] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:53:38.227 [DEBUG] [Thread-118561] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:53:38.227 [DEBUG] [Thread-118561] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:53:38.227 [DEBUG] [Thread-118561] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:53:38.227 [DEBUG] [Thread-118561] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:53:38.227 [DEBUG] [Thread-118561] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:53:38.227 [DEBUG] [Thread-118561] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:53:38.227 [DEBUG] [Thread-118561] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:53:38.228 [DEBUG] [Thread-118561] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:53:38.228 [DEBUG] [Thread-118561] [transport.py] [_log()] client lang: <none>
2025-11-03T15:53:38.228 [DEBUG] [Thread-118561] [transport.py] [_log()] server lang: <none>
2025-11-03T15:53:38.228 [DEBUG] [Thread-118561] [transport.py] [_log()] kex follows: False
2025-11-03T15:53:38.228 [DEBUG] [Thread-118561] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:53:38.228 [DEBUG] [Thread-118561] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:53:38.228 [DEBUG] [Thread-118561] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:53:38.228 [DEBUG] [Thread-118561] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:53:38.228 [DEBUG] [Thread-118561] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:53:38.228 [DEBUG] [Thread-118561] [transport.py] [_log()] Compression: none
2025-11-03T15:53:38.228 [DEBUG] [Thread-118561] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:53:38.283 [DEBUG] [Thread-118561] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:53:38.283 [DEBUG] [Thread-118561] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:53:38.283 [DEBUG] [Thread-118561] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:53:38.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:53:38.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:53:38.340 [DEBUG] [Thread-118561] [transport.py] [_log()] userauth is OK
2025-11-03T15:53:38.340 [DEBUG] [Thread-118561] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:53:38.341 [DEBUG] [Thread-118561] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:53:38.341 [DEBUG] [Thread-118561] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:53:38.341 [DEBUG] [Thread-118561] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:53:38.354 [INFO] [Thread-118561] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:53:38.355 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:53:38.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:53:39.180 [DEBUG] [Thread-118561] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:53:39.180 [DEBUG] [Thread-118561] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:53:39.228 [DEBUG] [Thread-118561] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:53:39.228 [DEBUG] [Thread-118561] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:53:39.236 [DEBUG] [Thread-118561] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:53:39.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:53:39.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:53:39.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:53:39.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:53:39.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:53:39.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:53:39.268 [DEBUG] [Thread-118561] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:53:47.254 [DEBUG] [Thread-118563 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:54:02.321 [DEBUG] [Thread-118564 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:54:09.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:54:09.288 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:54:09.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:54:09.789 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:54:09.790 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:54:10.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 53, 51), 47.68, 3.2, 0.0, 32.61, 27.15, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:54:10.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:53:51
2025-11-03T15:54:10.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:54:10.377 [DEBUG] [Thread-118565] [transport.py] [_log()] starting thread (client mode): 0xeda2740
2025-11-03T15:54:10.378 [DEBUG] [Thread-118565] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:54:10.396 [DEBUG] [Thread-118565] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:54:10.396 [INFO] [Thread-118565] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:54:10.399 [DEBUG] [Thread-118565] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:54:10.399 [DEBUG] [Thread-118565] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:54:10.400 [DEBUG] [Thread-118565] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:54:10.400 [DEBUG] [Thread-118565] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:54:10.400 [DEBUG] [Thread-118565] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:54:10.400 [DEBUG] [Thread-118565] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:54:10.400 [DEBUG] [Thread-118565] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:54:10.400 [DEBUG] [Thread-118565] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:54:10.400 [DEBUG] [Thread-118565] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:54:10.400 [DEBUG] [Thread-118565] [transport.py] [_log()] client lang: <none>
2025-11-03T15:54:10.401 [DEBUG] [Thread-118565] [transport.py] [_log()] server lang: <none>
2025-11-03T15:54:10.401 [DEBUG] [Thread-118565] [transport.py] [_log()] kex follows: False
2025-11-03T15:54:10.401 [DEBUG] [Thread-118565] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:54:10.401 [DEBUG] [Thread-118565] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:54:10.401 [DEBUG] [Thread-118565] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:54:10.401 [DEBUG] [Thread-118565] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:54:10.401 [DEBUG] [Thread-118565] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:54:10.401 [DEBUG] [Thread-118565] [transport.py] [_log()] Compression: none
2025-11-03T15:54:10.402 [DEBUG] [Thread-118565] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:54:10.420 [DEBUG] [Thread-118565] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:54:10.421 [DEBUG] [Thread-118565] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:54:10.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:54:10.422 [DEBUG] [Thread-118565] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:54:10.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:54:10.424 [DEBUG] [Thread-118565] [transport.py] [_log()] userauth is OK
2025-11-03T15:54:10.424 [DEBUG] [Thread-118565] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:54:10.425 [DEBUG] [Thread-118565] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:54:10.425 [DEBUG] [Thread-118565] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:54:10.425 [DEBUG] [Thread-118565] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:54:10.454 [INFO] [Thread-118565] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:54:10.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:54:11.123 [DEBUG] [Thread-118565] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:54:11.123 [DEBUG] [Thread-118565] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:54:11.124 [DEBUG] [Thread-118565] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:54:11.164 [DEBUG] [Thread-118565] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:54:11.164 [DEBUG] [Thread-118565] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:54:11.168 [DEBUG] [Thread-118565] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:54:11.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:54:11.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:54:11.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:54:11.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:54:11.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:54:11.193 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:54:11.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:54:11.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:54:11.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:54:11.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.578922 -999.00  +26.50  32.66      7  -10.50 1 1 2 1 1   888    0 38.65 51.83 ----- 32.5 32.7 289.0 42.7 30.2 -33.0 29.9 -32.9 30.8 -34.9 31.5 -31.8
2025-11-03T15:54:11.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:54:11.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:54:11.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.578922
2025-11-03T15:54:11.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:54:11.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:54:11.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:54:11.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:54:11.196 [DEBUG] [Thread-118565] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:54:11.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:54:11.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:53:51', tmtdew=47.68, humidity=3.2, cloud=0.0, wind=32.61, temperature=27.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:53:38.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:54:11.279 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:54:11.298 [DEBUG] [Thread-118568] [transport.py] [_log()] starting thread (client mode): 0xeda3a00
2025-11-03T15:54:11.298 [DEBUG] [Thread-118568] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:54:11.313 [DEBUG] [Thread-118568] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:54:11.314 [INFO] [Thread-118568] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:54:11.321 [DEBUG] [Thread-118568] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:54:11.321 [DEBUG] [Thread-118568] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:54:11.321 [DEBUG] [Thread-118568] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:54:11.321 [DEBUG] [Thread-118568] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:54:11.321 [DEBUG] [Thread-118568] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:54:11.321 [DEBUG] [Thread-118568] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:54:11.321 [DEBUG] [Thread-118568] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:54:11.321 [DEBUG] [Thread-118568] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:54:11.321 [DEBUG] [Thread-118568] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:54:11.321 [DEBUG] [Thread-118568] [transport.py] [_log()] client lang: <none>
2025-11-03T15:54:11.321 [DEBUG] [Thread-118568] [transport.py] [_log()] server lang: <none>
2025-11-03T15:54:11.322 [DEBUG] [Thread-118568] [transport.py] [_log()] kex follows: False
2025-11-03T15:54:11.322 [DEBUG] [Thread-118568] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:54:11.322 [DEBUG] [Thread-118568] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:54:11.322 [DEBUG] [Thread-118568] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:54:11.322 [DEBUG] [Thread-118568] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:54:11.322 [DEBUG] [Thread-118568] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:54:11.322 [DEBUG] [Thread-118568] [transport.py] [_log()] Compression: none
2025-11-03T15:54:11.322 [DEBUG] [Thread-118568] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:54:11.381 [DEBUG] [Thread-118568] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:54:11.382 [DEBUG] [Thread-118568] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:54:11.382 [DEBUG] [Thread-118568] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:54:11.383 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:54:11.383 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:54:11.441 [DEBUG] [Thread-118568] [transport.py] [_log()] userauth is OK
2025-11-03T15:54:11.441 [DEBUG] [Thread-118568] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:54:11.441 [DEBUG] [Thread-118568] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:54:11.441 [DEBUG] [Thread-118568] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:54:11.441 [DEBUG] [Thread-118568] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:54:11.465 [INFO] [Thread-118568] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:54:11.465 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:54:11.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:54:12.330 [DEBUG] [Thread-118568] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:54:12.330 [DEBUG] [Thread-118568] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:54:12.377 [DEBUG] [Thread-118568] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:54:12.378 [DEBUG] [Thread-118568] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:54:12.387 [DEBUG] [Thread-118568] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:54:12.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:54:12.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:54:12.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:54:12.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:54:12.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:54:12.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:54:12.423 [DEBUG] [Thread-118568] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:54:17.358 [DEBUG] [Thread-118570 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:54:19.263 [DEBUG] [Thread-118571 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:54:32.414 [DEBUG] [Thread-118572 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:54:42.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:54:42.445 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:54:42.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:54:43.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 54, 24), 47.95, 3.12, 0.0, 30.49, 27.08, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:54:43.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:54:24
2025-11-03T15:54:43.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:54:43.472 [DEBUG] [Thread-118573] [transport.py] [_log()] starting thread (client mode): 0x11781480
2025-11-03T15:54:43.473 [DEBUG] [Thread-118573] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:54:43.494 [DEBUG] [Thread-118573] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:54:43.494 [INFO] [Thread-118573] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:54:43.496 [DEBUG] [Thread-118573] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:54:43.496 [DEBUG] [Thread-118573] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:54:43.496 [DEBUG] [Thread-118573] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:54:43.496 [DEBUG] [Thread-118573] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:54:43.496 [DEBUG] [Thread-118573] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:54:43.496 [DEBUG] [Thread-118573] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:54:43.496 [DEBUG] [Thread-118573] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:54:43.497 [DEBUG] [Thread-118573] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:54:43.497 [DEBUG] [Thread-118573] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:54:43.497 [DEBUG] [Thread-118573] [transport.py] [_log()] client lang: <none>
2025-11-03T15:54:43.497 [DEBUG] [Thread-118573] [transport.py] [_log()] server lang: <none>
2025-11-03T15:54:43.497 [DEBUG] [Thread-118573] [transport.py] [_log()] kex follows: False
2025-11-03T15:54:43.497 [DEBUG] [Thread-118573] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:54:43.497 [DEBUG] [Thread-118573] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:54:43.497 [DEBUG] [Thread-118573] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:54:43.497 [DEBUG] [Thread-118573] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:54:43.497 [DEBUG] [Thread-118573] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:54:43.497 [DEBUG] [Thread-118573] [transport.py] [_log()] Compression: none
2025-11-03T15:54:43.497 [DEBUG] [Thread-118573] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:54:43.506 [DEBUG] [Thread-118573] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:54:43.507 [DEBUG] [Thread-118573] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:54:43.507 [DEBUG] [Thread-118573] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:54:43.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:54:43.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:54:43.509 [DEBUG] [Thread-118573] [transport.py] [_log()] userauth is OK
2025-11-03T15:54:43.509 [DEBUG] [Thread-118573] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:54:43.510 [DEBUG] [Thread-118573] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:54:43.510 [DEBUG] [Thread-118573] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:54:43.510 [DEBUG] [Thread-118573] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:54:43.527 [INFO] [Thread-118573] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:54:43.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:54:44.179 [DEBUG] [Thread-118573] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:54:44.179 [DEBUG] [Thread-118573] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:54:44.180 [DEBUG] [Thread-118573] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:54:44.220 [DEBUG] [Thread-118573] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:54:44.220 [DEBUG] [Thread-118573] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:54:44.223 [DEBUG] [Thread-118573] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:54:44.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:54:44.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:54:44.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:54:44.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:54:44.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:54:44.251 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:54:44.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:54:44.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:54:44.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:54:44.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.579269 -999.00  +26.20  29.93      7  -10.90 1 1 1 1 1   888    0 38.40 44.88 ----- 22.7 29.9 277.8 39.4 30.1 -33.2 29.8 -32.7 30.4 -37.4 31.4 -33.2
2025-11-03T15:54:44.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:54:44.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:54:44.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.579269
2025-11-03T15:54:44.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:54:44.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:54:44.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:54:44.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:54:44.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:54:44.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:54:24', tmtdew=47.95, humidity=3.12, cloud=0.0, wind=30.49, temperature=27.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:54:08.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:54:44.252 [DEBUG] [Thread-118573] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:54:44.323 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:54:44.342 [DEBUG] [Thread-118576] [transport.py] [_log()] starting thread (client mode): 0x117805e0
2025-11-03T15:54:44.343 [DEBUG] [Thread-118576] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:54:44.357 [DEBUG] [Thread-118576] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:54:44.357 [INFO] [Thread-118576] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:54:44.364 [DEBUG] [Thread-118576] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:54:44.364 [DEBUG] [Thread-118576] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:54:44.365 [DEBUG] [Thread-118576] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:54:44.365 [DEBUG] [Thread-118576] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:54:44.365 [DEBUG] [Thread-118576] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:54:44.365 [DEBUG] [Thread-118576] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:54:44.365 [DEBUG] [Thread-118576] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:54:44.365 [DEBUG] [Thread-118576] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:54:44.365 [DEBUG] [Thread-118576] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:54:44.365 [DEBUG] [Thread-118576] [transport.py] [_log()] client lang: <none>
2025-11-03T15:54:44.365 [DEBUG] [Thread-118576] [transport.py] [_log()] server lang: <none>
2025-11-03T15:54:44.365 [DEBUG] [Thread-118576] [transport.py] [_log()] kex follows: False
2025-11-03T15:54:44.365 [DEBUG] [Thread-118576] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:54:44.365 [DEBUG] [Thread-118576] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:54:44.365 [DEBUG] [Thread-118576] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:54:44.365 [DEBUG] [Thread-118576] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:54:44.366 [DEBUG] [Thread-118576] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:54:44.366 [DEBUG] [Thread-118576] [transport.py] [_log()] Compression: none
2025-11-03T15:54:44.366 [DEBUG] [Thread-118576] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:54:44.424 [DEBUG] [Thread-118576] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:54:44.425 [DEBUG] [Thread-118576] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:54:44.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:54:44.426 [DEBUG] [Thread-118576] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:54:44.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:54:44.484 [DEBUG] [Thread-118576] [transport.py] [_log()] userauth is OK
2025-11-03T15:54:44.484 [DEBUG] [Thread-118576] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:54:44.484 [DEBUG] [Thread-118576] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:54:44.484 [DEBUG] [Thread-118576] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:54:44.485 [DEBUG] [Thread-118576] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:54:44.504 [INFO] [Thread-118576] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:54:44.505 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:54:44.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:54:45.327 [DEBUG] [Thread-118576] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:54:45.327 [DEBUG] [Thread-118576] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:54:45.380 [DEBUG] [Thread-118576] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:54:45.380 [DEBUG] [Thread-118576] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:54:45.393 [DEBUG] [Thread-118576] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:54:45.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:54:45.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:54:45.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:54:45.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:54:45.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:54:45.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:54:45.431 [DEBUG] [Thread-118576] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:54:47.460 [DEBUG] [Thread-118578 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:55:02.510 [DEBUG] [Thread-118579 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:55:09.934 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:55:09.936 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:55:15.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:55:15.454 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:55:15.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:55:16.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 54, 56), 47.77, 3.06, 0.0, 30.4, 26.13, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:55:16.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:54:56
2025-11-03T15:55:16.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:55:16.427 [DEBUG] [Thread-118580] [transport.py] [_log()] starting thread (client mode): 0x11799900
2025-11-03T15:55:16.427 [DEBUG] [Thread-118580] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:55:16.451 [DEBUG] [Thread-118580] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:55:16.451 [INFO] [Thread-118580] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:55:16.454 [DEBUG] [Thread-118580] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:55:16.454 [DEBUG] [Thread-118580] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:55:16.454 [DEBUG] [Thread-118580] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:55:16.454 [DEBUG] [Thread-118580] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:55:16.455 [DEBUG] [Thread-118580] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:55:16.455 [DEBUG] [Thread-118580] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:55:16.455 [DEBUG] [Thread-118580] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:55:16.455 [DEBUG] [Thread-118580] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:55:16.455 [DEBUG] [Thread-118580] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:55:16.455 [DEBUG] [Thread-118580] [transport.py] [_log()] client lang: <none>
2025-11-03T15:55:16.455 [DEBUG] [Thread-118580] [transport.py] [_log()] server lang: <none>
2025-11-03T15:55:16.455 [DEBUG] [Thread-118580] [transport.py] [_log()] kex follows: False
2025-11-03T15:55:16.455 [DEBUG] [Thread-118580] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:55:16.455 [DEBUG] [Thread-118580] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:55:16.455 [DEBUG] [Thread-118580] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:55:16.455 [DEBUG] [Thread-118580] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:55:16.455 [DEBUG] [Thread-118580] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:55:16.455 [DEBUG] [Thread-118580] [transport.py] [_log()] Compression: none
2025-11-03T15:55:16.455 [DEBUG] [Thread-118580] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:55:16.474 [DEBUG] [Thread-118580] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:55:16.475 [DEBUG] [Thread-118580] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:55:16.476 [DEBUG] [Thread-118580] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:55:16.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:55:16.477 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:55:16.517 [DEBUG] [Thread-118580] [transport.py] [_log()] userauth is OK
2025-11-03T15:55:16.517 [DEBUG] [Thread-118580] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:55:16.517 [DEBUG] [Thread-118580] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:55:16.518 [DEBUG] [Thread-118580] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:55:16.518 [DEBUG] [Thread-118580] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:55:16.549 [INFO] [Thread-118580] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:55:16.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:55:17.555 [DEBUG] [Thread-118582 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:55:18.697 [DEBUG] [Thread-118580] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:55:18.698 [DEBUG] [Thread-118580] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:55:18.698 [DEBUG] [Thread-118580] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:55:18.738 [DEBUG] [Thread-118580] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:55:18.738 [DEBUG] [Thread-118580] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:55:18.741 [DEBUG] [Thread-118580] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:55:18.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:55:18.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:55:18.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:55:18.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:55:18.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:55:18.826 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:55:18.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:55:18.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:55:18.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:55:18.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.579617 -999.00  +26.10  21.65      7  -10.80 1 1 1 1 1   888    0 37.70 39.98 ----- 17.2 21.6 278.9 30.5 29.9 -34.4 29.8 -32.1 30.2 -34.6 31.2 -32.3
2025-11-03T15:55:18.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:55:18.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:55:18.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.579617
2025-11-03T15:55:18.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:55:18.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:55:18.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:55:18.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:55:18.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:55:18.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:54:56', tmtdew=47.77, humidity=3.06, cloud=0.0, wind=30.4, temperature=26.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:54:38.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:55:18.827 [DEBUG] [Thread-118580] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:55:18.898 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:55:18.919 [DEBUG] [Thread-118584] [transport.py] [_log()] starting thread (client mode): 0x11799d20
2025-11-03T15:55:18.919 [DEBUG] [Thread-118584] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:55:18.935 [DEBUG] [Thread-118584] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:55:18.935 [INFO] [Thread-118584] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:55:18.943 [DEBUG] [Thread-118584] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:55:18.943 [DEBUG] [Thread-118584] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:55:18.944 [DEBUG] [Thread-118584] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:55:18.944 [DEBUG] [Thread-118584] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:55:18.944 [DEBUG] [Thread-118584] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:55:18.944 [DEBUG] [Thread-118584] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:55:18.944 [DEBUG] [Thread-118584] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:55:18.944 [DEBUG] [Thread-118584] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:55:18.944 [DEBUG] [Thread-118584] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:55:18.944 [DEBUG] [Thread-118584] [transport.py] [_log()] client lang: <none>
2025-11-03T15:55:18.944 [DEBUG] [Thread-118584] [transport.py] [_log()] server lang: <none>
2025-11-03T15:55:18.944 [DEBUG] [Thread-118584] [transport.py] [_log()] kex follows: False
2025-11-03T15:55:18.944 [DEBUG] [Thread-118584] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:55:18.944 [DEBUG] [Thread-118584] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:55:18.944 [DEBUG] [Thread-118584] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:55:18.944 [DEBUG] [Thread-118584] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:55:18.944 [DEBUG] [Thread-118584] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:55:18.944 [DEBUG] [Thread-118584] [transport.py] [_log()] Compression: none
2025-11-03T15:55:18.944 [DEBUG] [Thread-118584] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:55:19.001 [DEBUG] [Thread-118584] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:55:19.001 [DEBUG] [Thread-118584] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:55:19.001 [DEBUG] [Thread-118584] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:55:19.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:55:19.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:55:19.058 [DEBUG] [Thread-118584] [transport.py] [_log()] userauth is OK
2025-11-03T15:55:19.058 [DEBUG] [Thread-118584] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:55:19.058 [DEBUG] [Thread-118584] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:55:19.058 [DEBUG] [Thread-118584] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:55:19.058 [DEBUG] [Thread-118584] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:55:19.073 [INFO] [Thread-118584] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:55:19.073 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:55:19.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:55:19.310 [DEBUG] [Thread-118586 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:55:19.926 [DEBUG] [Thread-118584] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:55:19.927 [DEBUG] [Thread-118584] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:55:19.975 [DEBUG] [Thread-118584] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:55:19.975 [DEBUG] [Thread-118584] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:55:19.985 [DEBUG] [Thread-118584] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:55:19.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:55:19.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:55:20.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:55:20.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:55:20.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:55:20.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:55:20.023 [DEBUG] [Thread-118584] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:55:32.597 [DEBUG] [Thread-118587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:55:47.668 [DEBUG] [Thread-118588 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:55:50.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:55:50.044 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:55:50.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:55:50.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 55, 28), 47.91, 3.02, 0.0, 31.27, 26.16, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:55:50.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:55:28
2025-11-03T15:55:50.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:55:51.004 [DEBUG] [Thread-118589] [transport.py] [_log()] starting thread (client mode): 0xeda0ac0
2025-11-03T15:55:51.004 [DEBUG] [Thread-118589] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:55:51.023 [DEBUG] [Thread-118589] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:55:51.023 [INFO] [Thread-118589] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:55:51.026 [DEBUG] [Thread-118589] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:55:51.026 [DEBUG] [Thread-118589] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:55:51.026 [DEBUG] [Thread-118589] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:55:51.026 [DEBUG] [Thread-118589] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:55:51.026 [DEBUG] [Thread-118589] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:55:51.026 [DEBUG] [Thread-118589] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:55:51.026 [DEBUG] [Thread-118589] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:55:51.026 [DEBUG] [Thread-118589] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:55:51.027 [DEBUG] [Thread-118589] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:55:51.027 [DEBUG] [Thread-118589] [transport.py] [_log()] client lang: <none>
2025-11-03T15:55:51.027 [DEBUG] [Thread-118589] [transport.py] [_log()] server lang: <none>
2025-11-03T15:55:51.027 [DEBUG] [Thread-118589] [transport.py] [_log()] kex follows: False
2025-11-03T15:55:51.027 [DEBUG] [Thread-118589] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:55:51.027 [DEBUG] [Thread-118589] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:55:51.027 [DEBUG] [Thread-118589] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:55:51.027 [DEBUG] [Thread-118589] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:55:51.027 [DEBUG] [Thread-118589] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:55:51.027 [DEBUG] [Thread-118589] [transport.py] [_log()] Compression: none
2025-11-03T15:55:51.027 [DEBUG] [Thread-118589] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:55:51.045 [DEBUG] [Thread-118589] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:55:51.046 [DEBUG] [Thread-118589] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:55:51.046 [DEBUG] [Thread-118589] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:55:51.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:55:51.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:55:51.048 [DEBUG] [Thread-118589] [transport.py] [_log()] userauth is OK
2025-11-03T15:55:51.049 [DEBUG] [Thread-118589] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:55:51.049 [DEBUG] [Thread-118589] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:55:51.049 [DEBUG] [Thread-118589] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:55:51.049 [DEBUG] [Thread-118589] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:55:51.061 [INFO] [Thread-118589] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:55:51.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:55:51.666 [DEBUG] [Thread-118589] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:55:51.666 [DEBUG] [Thread-118589] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:55:51.666 [DEBUG] [Thread-118589] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:55:51.707 [DEBUG] [Thread-118589] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:55:51.707 [DEBUG] [Thread-118589] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:55:51.710 [DEBUG] [Thread-118589] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:55:51.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:55:51.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:55:51.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:55:51.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:55:51.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:55:51.743 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:55:51.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:55:51.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:55:51.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:55:51.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.579963 -999.00  +26.20  23.10      7  -11.00 1 1 1 1 1   888    0 38.68 39.14 ----- 19.3 23.1 294.6 33.2 29.9 -33.5 29.9 -31.5 30.5 -33.7 31.3 -31.5
2025-11-03T15:55:51.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:55:51.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:55:51.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.579963
2025-11-03T15:55:51.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:55:51.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:55:51.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:55:51.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:55:51.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:55:51.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:55:28', tmtdew=47.91, humidity=3.02, cloud=0.0, wind=31.27, temperature=26.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:55:08.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:55:51.747 [DEBUG] [Thread-118589] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:55:51.836 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:55:51.856 [DEBUG] [Thread-118592] [transport.py] [_log()] starting thread (client mode): 0xed22bf0
2025-11-03T15:55:51.856 [DEBUG] [Thread-118592] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:55:51.871 [DEBUG] [Thread-118592] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:55:51.871 [INFO] [Thread-118592] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:55:51.879 [DEBUG] [Thread-118592] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:55:51.879 [DEBUG] [Thread-118592] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:55:51.880 [DEBUG] [Thread-118592] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:55:51.880 [DEBUG] [Thread-118592] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:55:51.880 [DEBUG] [Thread-118592] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:55:51.880 [DEBUG] [Thread-118592] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:55:51.880 [DEBUG] [Thread-118592] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:55:51.880 [DEBUG] [Thread-118592] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:55:51.880 [DEBUG] [Thread-118592] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:55:51.880 [DEBUG] [Thread-118592] [transport.py] [_log()] client lang: <none>
2025-11-03T15:55:51.880 [DEBUG] [Thread-118592] [transport.py] [_log()] server lang: <none>
2025-11-03T15:55:51.880 [DEBUG] [Thread-118592] [transport.py] [_log()] kex follows: False
2025-11-03T15:55:51.880 [DEBUG] [Thread-118592] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:55:51.880 [DEBUG] [Thread-118592] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:55:51.880 [DEBUG] [Thread-118592] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:55:51.880 [DEBUG] [Thread-118592] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:55:51.881 [DEBUG] [Thread-118592] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:55:51.881 [DEBUG] [Thread-118592] [transport.py] [_log()] Compression: none
2025-11-03T15:55:51.881 [DEBUG] [Thread-118592] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:55:51.940 [DEBUG] [Thread-118592] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:55:51.940 [DEBUG] [Thread-118592] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:55:51.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:55:51.941 [DEBUG] [Thread-118592] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:55:51.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:55:52.002 [DEBUG] [Thread-118592] [transport.py] [_log()] userauth is OK
2025-11-03T15:55:52.002 [DEBUG] [Thread-118592] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:55:52.003 [DEBUG] [Thread-118592] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:55:52.003 [DEBUG] [Thread-118592] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:55:52.003 [DEBUG] [Thread-118592] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:55:52.022 [INFO] [Thread-118592] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:55:52.022 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:55:52.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:55:52.899 [DEBUG] [Thread-118592] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:55:52.900 [DEBUG] [Thread-118592] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:55:52.948 [DEBUG] [Thread-118592] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:55:52.948 [DEBUG] [Thread-118592] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:55:52.957 [DEBUG] [Thread-118592] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:55:52.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:55:52.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:55:52.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:55:52.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:55:52.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:55:52.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:55:52.988 [DEBUG] [Thread-118592] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:56:02.709 [DEBUG] [Thread-118594 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:56:10.075 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:56:10.076 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:56:17.765 [DEBUG] [Thread-118595 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:56:19.357 [DEBUG] [Thread-118596 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:56:23.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:56:23.009 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:56:23.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:56:23.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 56, 1), 47.6, 3.12, 0.0, 29.78, 26.33, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:56:23.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:56:01
2025-11-03T15:56:23.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:56:24.043 [DEBUG] [Thread-118597] [transport.py] [_log()] starting thread (client mode): 0xeda0e20
2025-11-03T15:56:24.043 [DEBUG] [Thread-118597] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:56:24.063 [DEBUG] [Thread-118597] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:56:24.063 [INFO] [Thread-118597] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:56:24.066 [DEBUG] [Thread-118597] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:56:24.066 [DEBUG] [Thread-118597] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:56:24.066 [DEBUG] [Thread-118597] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:56:24.066 [DEBUG] [Thread-118597] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:56:24.066 [DEBUG] [Thread-118597] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:56:24.066 [DEBUG] [Thread-118597] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:56:24.066 [DEBUG] [Thread-118597] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:56:24.066 [DEBUG] [Thread-118597] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:56:24.066 [DEBUG] [Thread-118597] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:56:24.066 [DEBUG] [Thread-118597] [transport.py] [_log()] client lang: <none>
2025-11-03T15:56:24.066 [DEBUG] [Thread-118597] [transport.py] [_log()] server lang: <none>
2025-11-03T15:56:24.066 [DEBUG] [Thread-118597] [transport.py] [_log()] kex follows: False
2025-11-03T15:56:24.067 [DEBUG] [Thread-118597] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:56:24.067 [DEBUG] [Thread-118597] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:56:24.067 [DEBUG] [Thread-118597] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:56:24.067 [DEBUG] [Thread-118597] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:56:24.067 [DEBUG] [Thread-118597] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:56:24.067 [DEBUG] [Thread-118597] [transport.py] [_log()] Compression: none
2025-11-03T15:56:24.067 [DEBUG] [Thread-118597] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:56:24.082 [DEBUG] [Thread-118597] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:56:24.083 [DEBUG] [Thread-118597] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:56:24.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:56:24.084 [DEBUG] [Thread-118597] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:56:24.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:56:24.086 [DEBUG] [Thread-118597] [transport.py] [_log()] userauth is OK
2025-11-03T15:56:24.086 [DEBUG] [Thread-118597] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:56:24.086 [DEBUG] [Thread-118597] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:56:24.086 [DEBUG] [Thread-118597] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:56:24.086 [DEBUG] [Thread-118597] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:56:24.120 [INFO] [Thread-118597] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:56:24.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:56:24.828 [DEBUG] [Thread-118597] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:56:24.829 [DEBUG] [Thread-118597] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:56:24.829 [DEBUG] [Thread-118597] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:56:24.869 [DEBUG] [Thread-118597] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:56:24.869 [DEBUG] [Thread-118597] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:56:24.871 [DEBUG] [Thread-118597] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:56:24.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:56:24.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:56:24.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:56:24.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:56:24.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:56:24.889 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:56:24.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:56:24.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:56:24.898 [DEBUG] [Thread-118597] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:56:24.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:56:24.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.580311 -999.00  +26.40  26.51      7  -11.10 1 1 1 1 1   888    0 37.47 27.97 ----- 29.0 26.5 299.7 34.0 30.1 -33.0 29.9 -32.3 30.7 -31.3 31.4 -32.0
2025-11-03T15:56:24.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:56:24.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:56:24.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.580311
2025-11-03T15:56:24.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:56:24.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:56:24.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:56:24.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:56:24.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:56:24.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:56:01', tmtdew=47.6, humidity=3.12, cloud=0.0, wind=29.78, temperature=26.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:55:38.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:56:24.972 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:56:24.993 [DEBUG] [Thread-118600] [transport.py] [_log()] starting thread (client mode): 0x117836a0
2025-11-03T15:56:24.993 [DEBUG] [Thread-118600] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:56:25.008 [DEBUG] [Thread-118600] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:56:25.008 [INFO] [Thread-118600] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:56:25.017 [DEBUG] [Thread-118600] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:56:25.017 [DEBUG] [Thread-118600] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:56:25.017 [DEBUG] [Thread-118600] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:56:25.017 [DEBUG] [Thread-118600] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:56:25.017 [DEBUG] [Thread-118600] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:56:25.017 [DEBUG] [Thread-118600] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:56:25.017 [DEBUG] [Thread-118600] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:56:25.017 [DEBUG] [Thread-118600] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:56:25.017 [DEBUG] [Thread-118600] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:56:25.017 [DEBUG] [Thread-118600] [transport.py] [_log()] client lang: <none>
2025-11-03T15:56:25.018 [DEBUG] [Thread-118600] [transport.py] [_log()] server lang: <none>
2025-11-03T15:56:25.018 [DEBUG] [Thread-118600] [transport.py] [_log()] kex follows: False
2025-11-03T15:56:25.018 [DEBUG] [Thread-118600] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:56:25.018 [DEBUG] [Thread-118600] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:56:25.018 [DEBUG] [Thread-118600] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:56:25.018 [DEBUG] [Thread-118600] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:56:25.018 [DEBUG] [Thread-118600] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:56:25.018 [DEBUG] [Thread-118600] [transport.py] [_log()] Compression: none
2025-11-03T15:56:25.018 [DEBUG] [Thread-118600] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:56:25.071 [DEBUG] [Thread-118600] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:56:25.071 [DEBUG] [Thread-118600] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:56:25.071 [DEBUG] [Thread-118600] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:56:25.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:56:25.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:56:25.128 [DEBUG] [Thread-118600] [transport.py] [_log()] userauth is OK
2025-11-03T15:56:25.128 [DEBUG] [Thread-118600] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:56:25.128 [DEBUG] [Thread-118600] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:56:25.128 [DEBUG] [Thread-118600] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:56:25.128 [DEBUG] [Thread-118600] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:56:25.142 [INFO] [Thread-118600] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:56:25.142 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:56:25.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:56:26.011 [DEBUG] [Thread-118600] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:56:26.011 [DEBUG] [Thread-118600] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:56:26.059 [DEBUG] [Thread-118600] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:56:26.059 [DEBUG] [Thread-118600] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:56:26.068 [DEBUG] [Thread-118600] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:56:26.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:56:26.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:56:26.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:56:26.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:56:26.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:56:26.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:56:26.106 [DEBUG] [Thread-118600] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:56:32.807 [DEBUG] [Thread-118602 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:56:47.875 [DEBUG] [Thread-118603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:56:56.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:56:56.128 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:56:56.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:56:56.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 56, 33), 48.16, 3.1, 0.0, 40.95, 27.3, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:56:56.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:56:33
2025-11-03T15:56:56.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:56:57.118 [DEBUG] [Thread-118604] [transport.py] [_log()] starting thread (client mode): 0x117983a0
2025-11-03T15:56:57.118 [DEBUG] [Thread-118604] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:56:57.139 [DEBUG] [Thread-118604] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:56:57.139 [INFO] [Thread-118604] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:56:57.142 [DEBUG] [Thread-118604] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:56:57.142 [DEBUG] [Thread-118604] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:56:57.142 [DEBUG] [Thread-118604] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:56:57.142 [DEBUG] [Thread-118604] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:56:57.142 [DEBUG] [Thread-118604] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:56:57.142 [DEBUG] [Thread-118604] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:56:57.142 [DEBUG] [Thread-118604] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:56:57.142 [DEBUG] [Thread-118604] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:56:57.142 [DEBUG] [Thread-118604] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:56:57.142 [DEBUG] [Thread-118604] [transport.py] [_log()] client lang: <none>
2025-11-03T15:56:57.142 [DEBUG] [Thread-118604] [transport.py] [_log()] server lang: <none>
2025-11-03T15:56:57.142 [DEBUG] [Thread-118604] [transport.py] [_log()] kex follows: False
2025-11-03T15:56:57.143 [DEBUG] [Thread-118604] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:56:57.143 [DEBUG] [Thread-118604] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:56:57.143 [DEBUG] [Thread-118604] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:56:57.143 [DEBUG] [Thread-118604] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:56:57.143 [DEBUG] [Thread-118604] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:56:57.143 [DEBUG] [Thread-118604] [transport.py] [_log()] Compression: none
2025-11-03T15:56:57.143 [DEBUG] [Thread-118604] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:56:57.159 [DEBUG] [Thread-118604] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:56:57.159 [DEBUG] [Thread-118604] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:56:57.159 [DEBUG] [Thread-118604] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:56:57.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:56:57.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:56:57.160 [DEBUG] [Thread-118604] [transport.py] [_log()] userauth is OK
2025-11-03T15:56:57.160 [DEBUG] [Thread-118604] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:56:57.160 [DEBUG] [Thread-118604] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:56:57.160 [DEBUG] [Thread-118604] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:56:57.160 [DEBUG] [Thread-118604] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:56:57.178 [INFO] [Thread-118604] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:56:57.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:56:57.758 [DEBUG] [Thread-118604] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:56:57.759 [DEBUG] [Thread-118604] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:56:57.759 [DEBUG] [Thread-118604] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:56:57.800 [DEBUG] [Thread-118604] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:56:57.800 [DEBUG] [Thread-118604] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:56:57.802 [DEBUG] [Thread-118604] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:56:57.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:56:57.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:56:57.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:56:57.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:56:57.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:56:57.819 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:56:57.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:56:57.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:56:57.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:56:57.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.580658 -999.00  +26.50  26.27      7  -10.80 1 1 1 1 1   888    0 37.09 25.74 ----- 18.2 26.3 285.4 33.3 30.1 -32.9 29.9 -31.1 30.7 -31.6 31.4 -31.7
2025-11-03T15:56:57.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:56:57.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:56:57.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.580658
2025-11-03T15:56:57.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:56:57.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:56:57.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:56:57.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:56:57.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:56:57.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:56:33', tmtdew=48.16, humidity=3.1, cloud=0.0, wind=40.95, temperature=27.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:56:08.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:56:57.821 [DEBUG] [Thread-118604] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:56:57.892 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:56:57.912 [DEBUG] [Thread-118607] [transport.py] [_log()] starting thread (client mode): 0xed2c0d0
2025-11-03T15:56:57.912 [DEBUG] [Thread-118607] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:56:57.928 [DEBUG] [Thread-118607] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:56:57.928 [INFO] [Thread-118607] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:56:57.935 [DEBUG] [Thread-118607] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:56:57.935 [DEBUG] [Thread-118607] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:56:57.935 [DEBUG] [Thread-118607] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:56:57.935 [DEBUG] [Thread-118607] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:56:57.935 [DEBUG] [Thread-118607] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:56:57.935 [DEBUG] [Thread-118607] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:56:57.935 [DEBUG] [Thread-118607] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:56:57.935 [DEBUG] [Thread-118607] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:56:57.935 [DEBUG] [Thread-118607] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:56:57.935 [DEBUG] [Thread-118607] [transport.py] [_log()] client lang: <none>
2025-11-03T15:56:57.935 [DEBUG] [Thread-118607] [transport.py] [_log()] server lang: <none>
2025-11-03T15:56:57.935 [DEBUG] [Thread-118607] [transport.py] [_log()] kex follows: False
2025-11-03T15:56:57.935 [DEBUG] [Thread-118607] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:56:57.935 [DEBUG] [Thread-118607] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:56:57.935 [DEBUG] [Thread-118607] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:56:57.935 [DEBUG] [Thread-118607] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:56:57.935 [DEBUG] [Thread-118607] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:56:57.935 [DEBUG] [Thread-118607] [transport.py] [_log()] Compression: none
2025-11-03T15:56:57.935 [DEBUG] [Thread-118607] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:56:57.990 [DEBUG] [Thread-118607] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:56:57.991 [DEBUG] [Thread-118607] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:56:57.991 [DEBUG] [Thread-118607] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:56:57.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:56:57.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:56:58.048 [DEBUG] [Thread-118607] [transport.py] [_log()] userauth is OK
2025-11-03T15:56:58.048 [DEBUG] [Thread-118607] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:56:58.048 [DEBUG] [Thread-118607] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:56:58.048 [DEBUG] [Thread-118607] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:56:58.048 [DEBUG] [Thread-118607] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:56:58.062 [INFO] [Thread-118607] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:56:58.062 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:56:58.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:56:58.892 [DEBUG] [Thread-118607] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:56:58.892 [DEBUG] [Thread-118607] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:56:58.939 [DEBUG] [Thread-118607] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:56:58.940 [DEBUG] [Thread-118607] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:56:58.948 [DEBUG] [Thread-118607] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:56:58.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:56:58.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:56:58.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:56:58.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:56:58.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:56:58.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:56:58.986 [DEBUG] [Thread-118607] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:57:02.913 [DEBUG] [Thread-118609 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:57:10.216 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:57:10.217 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:57:17.970 [DEBUG] [Thread-118610 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:57:19.421 [DEBUG] [Thread-118611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:57:29.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:57:29.007 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:57:29.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:57:29.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 57, 6), 48.41, 3.02, 0.0, 41.04, 27.13, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:57:29.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:57:06
2025-11-03T15:57:29.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:57:30.040 [DEBUG] [Thread-118612] [transport.py] [_log()] starting thread (client mode): 0x1179a7d0
2025-11-03T15:57:30.040 [DEBUG] [Thread-118612] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:57:30.051 [DEBUG] [Thread-118612] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:57:30.051 [INFO] [Thread-118612] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:57:30.054 [DEBUG] [Thread-118612] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:57:30.054 [DEBUG] [Thread-118612] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:57:30.054 [DEBUG] [Thread-118612] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:57:30.054 [DEBUG] [Thread-118612] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:57:30.054 [DEBUG] [Thread-118612] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:57:30.054 [DEBUG] [Thread-118612] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:57:30.055 [DEBUG] [Thread-118612] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:57:30.055 [DEBUG] [Thread-118612] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:57:30.055 [DEBUG] [Thread-118612] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:57:30.055 [DEBUG] [Thread-118612] [transport.py] [_log()] client lang: <none>
2025-11-03T15:57:30.055 [DEBUG] [Thread-118612] [transport.py] [_log()] server lang: <none>
2025-11-03T15:57:30.055 [DEBUG] [Thread-118612] [transport.py] [_log()] kex follows: False
2025-11-03T15:57:30.055 [DEBUG] [Thread-118612] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:57:30.055 [DEBUG] [Thread-118612] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:57:30.055 [DEBUG] [Thread-118612] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:57:30.055 [DEBUG] [Thread-118612] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:57:30.055 [DEBUG] [Thread-118612] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:57:30.055 [DEBUG] [Thread-118612] [transport.py] [_log()] Compression: none
2025-11-03T15:57:30.055 [DEBUG] [Thread-118612] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:57:30.074 [DEBUG] [Thread-118612] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:57:30.074 [DEBUG] [Thread-118612] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:57:30.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:57:30.076 [DEBUG] [Thread-118612] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:57:30.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:57:30.117 [DEBUG] [Thread-118612] [transport.py] [_log()] userauth is OK
2025-11-03T15:57:30.117 [DEBUG] [Thread-118612] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:57:30.117 [DEBUG] [Thread-118612] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:57:30.117 [DEBUG] [Thread-118612] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:57:30.117 [DEBUG] [Thread-118612] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:57:30.149 [INFO] [Thread-118612] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:57:30.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:57:30.883 [DEBUG] [Thread-118612] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:57:30.883 [DEBUG] [Thread-118612] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:57:30.883 [DEBUG] [Thread-118612] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:57:30.925 [DEBUG] [Thread-118612] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:57:30.925 [DEBUG] [Thread-118612] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:57:30.927 [DEBUG] [Thread-118612] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:57:30.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:57:30.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:57:30.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:57:30.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:57:30.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:57:30.946 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:57:30.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:57:30.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:57:30.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:57:30.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.581005 -999.00  +27.20  28.25      7  -10.30 1 1 1 1 1   888    0 38.21 18.69 ----- 40.3 28.2 307.2 43.0 30.2 -31.9 30.1 -32.0 30.9 -31.5 31.5 -31.4
2025-11-03T15:57:30.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:57:30.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:57:30.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.581005
2025-11-03T15:57:30.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:57:30.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:57:30.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:57:30.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:57:30.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:57:30.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:57:06', tmtdew=48.41, humidity=3.02, cloud=0.0, wind=41.04, temperature=27.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:56:38.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:57:30.948 [DEBUG] [Thread-118612] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:57:31.026 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:57:31.045 [DEBUG] [Thread-118615] [transport.py] [_log()] starting thread (client mode): 0xeda14b0
2025-11-03T15:57:31.045 [DEBUG] [Thread-118615] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:57:31.060 [DEBUG] [Thread-118615] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:57:31.060 [INFO] [Thread-118615] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:57:31.068 [DEBUG] [Thread-118615] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:57:31.068 [DEBUG] [Thread-118615] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:57:31.068 [DEBUG] [Thread-118615] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:57:31.068 [DEBUG] [Thread-118615] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:57:31.068 [DEBUG] [Thread-118615] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:57:31.068 [DEBUG] [Thread-118615] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:57:31.068 [DEBUG] [Thread-118615] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:57:31.068 [DEBUG] [Thread-118615] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:57:31.068 [DEBUG] [Thread-118615] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:57:31.068 [DEBUG] [Thread-118615] [transport.py] [_log()] client lang: <none>
2025-11-03T15:57:31.068 [DEBUG] [Thread-118615] [transport.py] [_log()] server lang: <none>
2025-11-03T15:57:31.068 [DEBUG] [Thread-118615] [transport.py] [_log()] kex follows: False
2025-11-03T15:57:31.068 [DEBUG] [Thread-118615] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:57:31.068 [DEBUG] [Thread-118615] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:57:31.068 [DEBUG] [Thread-118615] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:57:31.068 [DEBUG] [Thread-118615] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:57:31.068 [DEBUG] [Thread-118615] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:57:31.068 [DEBUG] [Thread-118615] [transport.py] [_log()] Compression: none
2025-11-03T15:57:31.068 [DEBUG] [Thread-118615] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:57:31.126 [DEBUG] [Thread-118615] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:57:31.126 [DEBUG] [Thread-118615] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:57:31.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:57:31.127 [DEBUG] [Thread-118615] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:57:31.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:57:31.183 [DEBUG] [Thread-118615] [transport.py] [_log()] userauth is OK
2025-11-03T15:57:31.183 [DEBUG] [Thread-118615] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:57:31.183 [DEBUG] [Thread-118615] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:57:31.183 [DEBUG] [Thread-118615] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:57:31.183 [DEBUG] [Thread-118615] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:57:31.197 [INFO] [Thread-118615] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:57:31.198 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:57:31.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:57:32.069 [DEBUG] [Thread-118615] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:57:32.069 [DEBUG] [Thread-118615] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:57:32.116 [DEBUG] [Thread-118615] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:57:32.116 [DEBUG] [Thread-118615] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:57:32.128 [DEBUG] [Thread-118615] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:57:32.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:57:32.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:57:32.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:57:32.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:57:32.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:57:32.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:57:32.167 [DEBUG] [Thread-118615] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:57:33.013 [DEBUG] [Thread-118617 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:57:48.066 [DEBUG] [Thread-118618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:58:02.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:58:02.189 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:58:02.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:58:02.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 57, 38), 48.18, 3.06, 0.0, 44.3, 26.72, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:58:02.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:57:38
2025-11-03T15:58:03.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:58:03.108 [DEBUG] [Thread-118619 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:58:03.214 [DEBUG] [Thread-118620] [transport.py] [_log()] starting thread (client mode): 0x11781a80
2025-11-03T15:58:03.214 [DEBUG] [Thread-118620] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:58:03.234 [DEBUG] [Thread-118620] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:58:03.235 [INFO] [Thread-118620] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:58:03.244 [DEBUG] [Thread-118620] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:58:03.244 [DEBUG] [Thread-118620] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:58:03.245 [DEBUG] [Thread-118620] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:58:03.245 [DEBUG] [Thread-118620] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:58:03.245 [DEBUG] [Thread-118620] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:58:03.245 [DEBUG] [Thread-118620] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:58:03.245 [DEBUG] [Thread-118620] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:58:03.245 [DEBUG] [Thread-118620] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:58:03.245 [DEBUG] [Thread-118620] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:58:03.245 [DEBUG] [Thread-118620] [transport.py] [_log()] client lang: <none>
2025-11-03T15:58:03.245 [DEBUG] [Thread-118620] [transport.py] [_log()] server lang: <none>
2025-11-03T15:58:03.245 [DEBUG] [Thread-118620] [transport.py] [_log()] kex follows: False
2025-11-03T15:58:03.245 [DEBUG] [Thread-118620] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:58:03.245 [DEBUG] [Thread-118620] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:58:03.245 [DEBUG] [Thread-118620] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:58:03.246 [DEBUG] [Thread-118620] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:58:03.246 [DEBUG] [Thread-118620] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:58:03.246 [DEBUG] [Thread-118620] [transport.py] [_log()] Compression: none
2025-11-03T15:58:03.246 [DEBUG] [Thread-118620] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:58:03.266 [DEBUG] [Thread-118620] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:58:03.267 [DEBUG] [Thread-118620] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:58:03.268 [DEBUG] [Thread-118620] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:58:03.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:58:03.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:58:03.269 [DEBUG] [Thread-118620] [transport.py] [_log()] userauth is OK
2025-11-03T15:58:03.270 [DEBUG] [Thread-118620] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:58:03.270 [DEBUG] [Thread-118620] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:58:03.270 [DEBUG] [Thread-118620] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:58:03.270 [DEBUG] [Thread-118620] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:58:03.294 [INFO] [Thread-118620] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:58:03.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:58:03.954 [DEBUG] [Thread-118620] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:58:03.954 [DEBUG] [Thread-118620] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:58:03.954 [DEBUG] [Thread-118620] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:58:03.995 [DEBUG] [Thread-118620] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:58:03.995 [DEBUG] [Thread-118620] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:58:03.998 [DEBUG] [Thread-118620] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:58:04.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:58:04.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:58:04.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:58:04.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:58:04.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:58:04.015 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:58:04.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:58:04.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:58:04.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:58:04.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.581353 -999.00  +26.70  29.86      7  -10.30 1 1 1 1 1   888    0 37.24 12.22 ----- 34.5 29.9 313.6 43.9 30.2 -34.1 29.9 -32.1 30.8 -31.5 31.4 -31.9
2025-11-03T15:58:04.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:58:04.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:58:04.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.581353
2025-11-03T15:58:04.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:58:04.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:58:04.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:58:04.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:58:04.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:58:04.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:57:38', tmtdew=48.18, humidity=3.06, cloud=0.0, wind=44.3, temperature=26.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:57:08.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:58:04.016 [DEBUG] [Thread-118620] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:58:04.087 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:58:04.107 [DEBUG] [Thread-118623] [transport.py] [_log()] starting thread (client mode): 0xed234f0
2025-11-03T15:58:04.107 [DEBUG] [Thread-118623] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:58:04.123 [DEBUG] [Thread-118623] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:58:04.123 [INFO] [Thread-118623] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:58:04.130 [DEBUG] [Thread-118623] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:58:04.130 [DEBUG] [Thread-118623] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:58:04.130 [DEBUG] [Thread-118623] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:58:04.130 [DEBUG] [Thread-118623] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:58:04.130 [DEBUG] [Thread-118623] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:58:04.131 [DEBUG] [Thread-118623] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:58:04.131 [DEBUG] [Thread-118623] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:58:04.131 [DEBUG] [Thread-118623] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:58:04.131 [DEBUG] [Thread-118623] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:58:04.131 [DEBUG] [Thread-118623] [transport.py] [_log()] client lang: <none>
2025-11-03T15:58:04.131 [DEBUG] [Thread-118623] [transport.py] [_log()] server lang: <none>
2025-11-03T15:58:04.131 [DEBUG] [Thread-118623] [transport.py] [_log()] kex follows: False
2025-11-03T15:58:04.131 [DEBUG] [Thread-118623] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:58:04.131 [DEBUG] [Thread-118623] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:58:04.131 [DEBUG] [Thread-118623] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:58:04.131 [DEBUG] [Thread-118623] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:58:04.131 [DEBUG] [Thread-118623] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:58:04.131 [DEBUG] [Thread-118623] [transport.py] [_log()] Compression: none
2025-11-03T15:58:04.131 [DEBUG] [Thread-118623] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:58:04.200 [DEBUG] [Thread-118623] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:58:04.200 [DEBUG] [Thread-118623] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:58:04.200 [DEBUG] [Thread-118623] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:58:04.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:58:04.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:58:04.259 [DEBUG] [Thread-118623] [transport.py] [_log()] userauth is OK
2025-11-03T15:58:04.259 [DEBUG] [Thread-118623] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:58:04.259 [DEBUG] [Thread-118623] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:58:04.259 [DEBUG] [Thread-118623] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:58:04.259 [DEBUG] [Thread-118623] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:58:04.273 [INFO] [Thread-118623] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:58:04.273 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:58:04.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:58:05.153 [DEBUG] [Thread-118623] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:58:05.153 [DEBUG] [Thread-118623] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:58:05.201 [DEBUG] [Thread-118623] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:58:05.201 [DEBUG] [Thread-118623] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:58:05.211 [DEBUG] [Thread-118623] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:58:05.220 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:58:05.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:58:05.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:58:05.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:58:05.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:58:05.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:58:05.248 [DEBUG] [Thread-118623] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:58:10.358 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:58:10.358 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:58:18.145 [DEBUG] [Thread-118625 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:58:19.656 [DEBUG] [Thread-118626 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:58:33.215 [DEBUG] [Thread-118627 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:58:35.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:58:35.249 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:58:35.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:58:35.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 58, 10), 47.27, 3.29, 0.0, 44.27, 26.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:58:35.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:58:10
2025-11-03T15:58:36.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:58:36.233 [DEBUG] [Thread-118628] [transport.py] [_log()] starting thread (client mode): 0xed8a0e0
2025-11-03T15:58:36.233 [DEBUG] [Thread-118628] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:58:36.253 [DEBUG] [Thread-118628] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:58:36.254 [INFO] [Thread-118628] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:58:36.256 [DEBUG] [Thread-118628] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:58:36.256 [DEBUG] [Thread-118628] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:58:36.257 [DEBUG] [Thread-118628] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:58:36.257 [DEBUG] [Thread-118628] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:58:36.257 [DEBUG] [Thread-118628] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:58:36.257 [DEBUG] [Thread-118628] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:58:36.257 [DEBUG] [Thread-118628] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:58:36.257 [DEBUG] [Thread-118628] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:58:36.257 [DEBUG] [Thread-118628] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:58:36.257 [DEBUG] [Thread-118628] [transport.py] [_log()] client lang: <none>
2025-11-03T15:58:36.257 [DEBUG] [Thread-118628] [transport.py] [_log()] server lang: <none>
2025-11-03T15:58:36.257 [DEBUG] [Thread-118628] [transport.py] [_log()] kex follows: False
2025-11-03T15:58:36.257 [DEBUG] [Thread-118628] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:58:36.257 [DEBUG] [Thread-118628] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:58:36.257 [DEBUG] [Thread-118628] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:58:36.257 [DEBUG] [Thread-118628] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:58:36.257 [DEBUG] [Thread-118628] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:58:36.258 [DEBUG] [Thread-118628] [transport.py] [_log()] Compression: none
2025-11-03T15:58:36.258 [DEBUG] [Thread-118628] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:58:36.277 [DEBUG] [Thread-118628] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:58:36.277 [DEBUG] [Thread-118628] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:58:36.278 [DEBUG] [Thread-118628] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:58:36.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:58:36.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:58:36.280 [DEBUG] [Thread-118628] [transport.py] [_log()] userauth is OK
2025-11-03T15:58:36.280 [DEBUG] [Thread-118628] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:58:36.280 [DEBUG] [Thread-118628] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:58:36.280 [DEBUG] [Thread-118628] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:58:36.280 [DEBUG] [Thread-118628] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:58:36.304 [INFO] [Thread-118628] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:58:36.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:58:37.054 [DEBUG] [Thread-118628] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:58:37.054 [DEBUG] [Thread-118628] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:58:37.054 [DEBUG] [Thread-118628] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:58:37.095 [DEBUG] [Thread-118628] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:58:37.095 [DEBUG] [Thread-118628] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:58:37.097 [DEBUG] [Thread-118628] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:58:37.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:58:37.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:58:37.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:58:37.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:58:37.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:58:37.124 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:58:37.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:58:37.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:58:37.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:58:37.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.581700 -999.00  +27.00  31.76      7  -10.10 1 1 2 1 1   888    0 37.12 6.72 ----- 32.6 31.8 310.2 39.1 30.2 -33.0 30.0 -31.7 30.9 -34.4 31.5 -31.6
2025-11-03T15:58:37.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:58:37.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:58:37.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.581700
2025-11-03T15:58:37.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:58:37.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:58:37.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:58:37.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:58:37.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:58:37.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:58:10', tmtdew=47.27, humidity=3.29, cloud=0.0, wind=44.27, temperature=26.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:57:38.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:58:37.126 [DEBUG] [Thread-118628] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:58:37.198 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:58:37.217 [DEBUG] [Thread-118631] [transport.py] [_log()] starting thread (client mode): 0xed88220
2025-11-03T15:58:37.217 [DEBUG] [Thread-118631] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:58:37.237 [DEBUG] [Thread-118631] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:58:37.237 [INFO] [Thread-118631] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:58:37.245 [DEBUG] [Thread-118631] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:58:37.245 [DEBUG] [Thread-118631] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:58:37.245 [DEBUG] [Thread-118631] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:58:37.245 [DEBUG] [Thread-118631] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:58:37.245 [DEBUG] [Thread-118631] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:58:37.245 [DEBUG] [Thread-118631] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:58:37.245 [DEBUG] [Thread-118631] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:58:37.245 [DEBUG] [Thread-118631] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:58:37.245 [DEBUG] [Thread-118631] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:58:37.245 [DEBUG] [Thread-118631] [transport.py] [_log()] client lang: <none>
2025-11-03T15:58:37.245 [DEBUG] [Thread-118631] [transport.py] [_log()] server lang: <none>
2025-11-03T15:58:37.245 [DEBUG] [Thread-118631] [transport.py] [_log()] kex follows: False
2025-11-03T15:58:37.245 [DEBUG] [Thread-118631] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:58:37.245 [DEBUG] [Thread-118631] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:58:37.245 [DEBUG] [Thread-118631] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:58:37.245 [DEBUG] [Thread-118631] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:58:37.245 [DEBUG] [Thread-118631] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:58:37.245 [DEBUG] [Thread-118631] [transport.py] [_log()] Compression: none
2025-11-03T15:58:37.245 [DEBUG] [Thread-118631] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:58:37.300 [DEBUG] [Thread-118631] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:58:37.301 [DEBUG] [Thread-118631] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:58:37.301 [DEBUG] [Thread-118631] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:58:37.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:58:37.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:58:37.358 [DEBUG] [Thread-118631] [transport.py] [_log()] userauth is OK
2025-11-03T15:58:37.358 [DEBUG] [Thread-118631] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:58:37.358 [DEBUG] [Thread-118631] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:58:37.358 [DEBUG] [Thread-118631] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:58:37.358 [DEBUG] [Thread-118631] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:58:37.372 [INFO] [Thread-118631] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:58:37.372 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:58:37.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:58:38.214 [DEBUG] [Thread-118631] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:58:38.214 [DEBUG] [Thread-118631] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:58:38.263 [DEBUG] [Thread-118631] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:58:38.263 [DEBUG] [Thread-118631] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:58:38.273 [DEBUG] [Thread-118631] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:58:38.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:58:38.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:58:38.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:58:38.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:58:38.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:58:38.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:58:38.311 [DEBUG] [Thread-118631] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:58:48.263 [DEBUG] [Thread-118633 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:59:03.335 [DEBUG] [Thread-118634 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:59:08.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:59:08.333 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:59:08.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:59:08.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 58, 43), 47.26, 3.25, 0.0, 41.45, 26.42, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:59:08.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:58:43
2025-11-03T15:59:09.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:59:09.293 [DEBUG] [Thread-118635] [transport.py] [_log()] starting thread (client mode): 0xed8a590
2025-11-03T15:59:09.293 [DEBUG] [Thread-118635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:59:09.312 [DEBUG] [Thread-118635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:59:09.312 [INFO] [Thread-118635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:59:09.315 [DEBUG] [Thread-118635] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:59:09.315 [DEBUG] [Thread-118635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:59:09.316 [DEBUG] [Thread-118635] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:59:09.316 [DEBUG] [Thread-118635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:59:09.316 [DEBUG] [Thread-118635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:59:09.316 [DEBUG] [Thread-118635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:59:09.316 [DEBUG] [Thread-118635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:59:09.316 [DEBUG] [Thread-118635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:59:09.316 [DEBUG] [Thread-118635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:59:09.316 [DEBUG] [Thread-118635] [transport.py] [_log()] client lang: <none>
2025-11-03T15:59:09.317 [DEBUG] [Thread-118635] [transport.py] [_log()] server lang: <none>
2025-11-03T15:59:09.317 [DEBUG] [Thread-118635] [transport.py] [_log()] kex follows: False
2025-11-03T15:59:09.317 [DEBUG] [Thread-118635] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:59:09.317 [DEBUG] [Thread-118635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:59:09.317 [DEBUG] [Thread-118635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:59:09.317 [DEBUG] [Thread-118635] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:59:09.317 [DEBUG] [Thread-118635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:59:09.318 [DEBUG] [Thread-118635] [transport.py] [_log()] Compression: none
2025-11-03T15:59:09.318 [DEBUG] [Thread-118635] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:59:09.337 [DEBUG] [Thread-118635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:59:09.337 [DEBUG] [Thread-118635] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:59:09.338 [DEBUG] [Thread-118635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:59:09.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:59:09.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:59:09.349 [DEBUG] [Thread-118635] [transport.py] [_log()] userauth is OK
2025-11-03T15:59:09.349 [DEBUG] [Thread-118635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:59:09.350 [DEBUG] [Thread-118635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:59:09.350 [DEBUG] [Thread-118635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:59:09.350 [DEBUG] [Thread-118635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:59:09.374 [INFO] [Thread-118635] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:59:09.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:59:09.999 [DEBUG] [Thread-118635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:59:09.999 [DEBUG] [Thread-118635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:59:10.000 [DEBUG] [Thread-118635] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:59:10.040 [DEBUG] [Thread-118635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:59:10.040 [DEBUG] [Thread-118635] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:59:10.044 [DEBUG] [Thread-118635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:59:10.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:59:10.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:59:10.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:59:10.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:59:10.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:59:10.063 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:59:10.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:59:10.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:59:10.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:59:10.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.582047 -999.00  +27.30  35.73      7   -9.90 1 1 2 1 1   888    0 37.23 0.81 ----- 39.2 35.7 317.4 43.0 30.2 -32.7 30.1 -32.3 30.9 -32.1 31.6 -31.1
2025-11-03T15:59:10.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:59:10.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:59:10.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.582047
2025-11-03T15:59:10.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:59:10.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:59:10.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:59:10.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:59:10.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:59:10.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:58:43', tmtdew=47.26, humidity=3.25, cloud=0.0, wind=41.45, temperature=26.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:58:08.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:59:10.064 [DEBUG] [Thread-118635] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:59:10.136 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:59:10.156 [DEBUG] [Thread-118638] [transport.py] [_log()] starting thread (client mode): 0xed2e410
2025-11-03T15:59:10.156 [DEBUG] [Thread-118638] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:59:10.171 [DEBUG] [Thread-118638] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:59:10.171 [INFO] [Thread-118638] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:59:10.179 [DEBUG] [Thread-118638] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:59:10.179 [DEBUG] [Thread-118638] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:59:10.179 [DEBUG] [Thread-118638] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:59:10.179 [DEBUG] [Thread-118638] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:59:10.179 [DEBUG] [Thread-118638] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:59:10.179 [DEBUG] [Thread-118638] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:59:10.179 [DEBUG] [Thread-118638] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:59:10.179 [DEBUG] [Thread-118638] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:59:10.179 [DEBUG] [Thread-118638] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:59:10.179 [DEBUG] [Thread-118638] [transport.py] [_log()] client lang: <none>
2025-11-03T15:59:10.179 [DEBUG] [Thread-118638] [transport.py] [_log()] server lang: <none>
2025-11-03T15:59:10.179 [DEBUG] [Thread-118638] [transport.py] [_log()] kex follows: False
2025-11-03T15:59:10.179 [DEBUG] [Thread-118638] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:59:10.179 [DEBUG] [Thread-118638] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:59:10.179 [DEBUG] [Thread-118638] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:59:10.179 [DEBUG] [Thread-118638] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:59:10.179 [DEBUG] [Thread-118638] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:59:10.179 [DEBUG] [Thread-118638] [transport.py] [_log()] Compression: none
2025-11-03T15:59:10.179 [DEBUG] [Thread-118638] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:59:10.236 [DEBUG] [Thread-118638] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:59:10.236 [DEBUG] [Thread-118638] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:59:10.237 [DEBUG] [Thread-118638] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:59:10.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:59:10.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:59:10.293 [DEBUG] [Thread-118638] [transport.py] [_log()] userauth is OK
2025-11-03T15:59:10.293 [DEBUG] [Thread-118638] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:59:10.293 [DEBUG] [Thread-118638] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:59:10.293 [DEBUG] [Thread-118638] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:59:10.293 [DEBUG] [Thread-118638] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:59:10.307 [INFO] [Thread-118638] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:59:10.308 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:59:10.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:59:10.501 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:59:10.502 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:59:11.182 [DEBUG] [Thread-118638] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:59:11.183 [DEBUG] [Thread-118638] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:59:11.231 [DEBUG] [Thread-118638] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:59:11.232 [DEBUG] [Thread-118638] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:59:11.241 [DEBUG] [Thread-118638] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:59:11.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:59:11.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:59:11.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:59:11.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:59:11.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:59:11.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:59:11.279 [DEBUG] [Thread-118638] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:59:18.376 [DEBUG] [Thread-118640 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:59:19.710 [DEBUG] [Thread-118641 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:59:33.435 [DEBUG] [Thread-118642 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T15:59:41.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T15:59:41.301 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T15:59:41.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T15:59:41.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 59, 15), 47.25, 3.25, 0.0, 42.03, 26.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T15:59:41.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:59:15
2025-11-03T15:59:42.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T15:59:42.247 [DEBUG] [Thread-118643] [transport.py] [_log()] starting thread (client mode): 0xed2d5a0
2025-11-03T15:59:42.247 [DEBUG] [Thread-118643] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:59:42.268 [DEBUG] [Thread-118643] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T15:59:42.268 [INFO] [Thread-118643] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T15:59:42.271 [DEBUG] [Thread-118643] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:59:42.271 [DEBUG] [Thread-118643] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T15:59:42.271 [DEBUG] [Thread-118643] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:59:42.271 [DEBUG] [Thread-118643] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:59:42.271 [DEBUG] [Thread-118643] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:59:42.271 [DEBUG] [Thread-118643] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:59:42.271 [DEBUG] [Thread-118643] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:59:42.271 [DEBUG] [Thread-118643] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:59:42.271 [DEBUG] [Thread-118643] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:59:42.271 [DEBUG] [Thread-118643] [transport.py] [_log()] client lang: <none>
2025-11-03T15:59:42.271 [DEBUG] [Thread-118643] [transport.py] [_log()] server lang: <none>
2025-11-03T15:59:42.271 [DEBUG] [Thread-118643] [transport.py] [_log()] kex follows: False
2025-11-03T15:59:42.271 [DEBUG] [Thread-118643] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:59:42.271 [DEBUG] [Thread-118643] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:59:42.271 [DEBUG] [Thread-118643] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:59:42.271 [DEBUG] [Thread-118643] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:59:42.271 [DEBUG] [Thread-118643] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:59:42.271 [DEBUG] [Thread-118643] [transport.py] [_log()] Compression: none
2025-11-03T15:59:42.271 [DEBUG] [Thread-118643] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:59:42.288 [DEBUG] [Thread-118643] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:59:42.288 [DEBUG] [Thread-118643] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:59:42.288 [DEBUG] [Thread-118643] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T15:59:42.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T15:59:42.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:59:42.332 [DEBUG] [Thread-118643] [transport.py] [_log()] userauth is OK
2025-11-03T15:59:42.332 [DEBUG] [Thread-118643] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:59:42.332 [DEBUG] [Thread-118643] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:59:42.332 [DEBUG] [Thread-118643] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T15:59:42.333 [DEBUG] [Thread-118643] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:59:42.359 [INFO] [Thread-118643] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:59:42.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:59:43.104 [DEBUG] [Thread-118643] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:59:43.104 [DEBUG] [Thread-118643] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:59:43.104 [DEBUG] [Thread-118643] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T15:59:43.145 [DEBUG] [Thread-118643] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:59:43.145 [DEBUG] [Thread-118643] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:59:43.147 [DEBUG] [Thread-118643] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:59:43.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:59:43.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T15:59:43.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T15:59:43.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T15:59:43.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:59:43.168 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T15:59:43.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:59:43.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:59:43.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T15:59:43.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.582742 -999.00  +27.10  39.43      7  -10.60 1 1 2 1 1   888    0 36.71 -9.15 ----- 45.3 39.4 298.4 47.7 30.2 -32.6 30.0 -33.3 30.9 -33.6 31.7 -31.9
2025-11-03T15:59:43.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T15:59:43.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T15:59:43.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.582742
2025-11-03T15:59:43.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T15:59:43.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T15:59:43.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T15:59:43.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T15:59:43.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T15:59:43.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:59:15', tmtdew=47.25, humidity=3.25, cloud=0.0, wind=42.03, temperature=26.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:59:08.909', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T15:59:43.169 [DEBUG] [Thread-118643] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:59:43.240 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T15:59:43.261 [DEBUG] [Thread-118646] [transport.py] [_log()] starting thread (client mode): 0x1174d870
2025-11-03T15:59:43.261 [DEBUG] [Thread-118646] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T15:59:43.276 [DEBUG] [Thread-118646] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T15:59:43.276 [INFO] [Thread-118646] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T15:59:43.284 [DEBUG] [Thread-118646] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T15:59:43.284 [DEBUG] [Thread-118646] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T15:59:43.284 [DEBUG] [Thread-118646] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T15:59:43.284 [DEBUG] [Thread-118646] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:59:43.284 [DEBUG] [Thread-118646] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T15:59:43.284 [DEBUG] [Thread-118646] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:59:43.285 [DEBUG] [Thread-118646] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T15:59:43.285 [DEBUG] [Thread-118646] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T15:59:43.285 [DEBUG] [Thread-118646] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T15:59:43.285 [DEBUG] [Thread-118646] [transport.py] [_log()] client lang: <none>
2025-11-03T15:59:43.285 [DEBUG] [Thread-118646] [transport.py] [_log()] server lang: <none>
2025-11-03T15:59:43.285 [DEBUG] [Thread-118646] [transport.py] [_log()] kex follows: False
2025-11-03T15:59:43.285 [DEBUG] [Thread-118646] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T15:59:43.285 [DEBUG] [Thread-118646] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T15:59:43.285 [DEBUG] [Thread-118646] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T15:59:43.285 [DEBUG] [Thread-118646] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T15:59:43.285 [DEBUG] [Thread-118646] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T15:59:43.285 [DEBUG] [Thread-118646] [transport.py] [_log()] Compression: none
2025-11-03T15:59:43.285 [DEBUG] [Thread-118646] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T15:59:43.345 [DEBUG] [Thread-118646] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T15:59:43.346 [DEBUG] [Thread-118646] [transport.py] [_log()] Switch to new keys ...
2025-11-03T15:59:43.347 [DEBUG] [Thread-118646] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T15:59:43.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T15:59:43.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T15:59:43.402 [DEBUG] [Thread-118646] [transport.py] [_log()] userauth is OK
2025-11-03T15:59:43.403 [DEBUG] [Thread-118646] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T15:59:43.403 [DEBUG] [Thread-118646] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T15:59:43.403 [DEBUG] [Thread-118646] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T15:59:43.403 [DEBUG] [Thread-118646] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T15:59:43.422 [INFO] [Thread-118646] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T15:59:43.422 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T15:59:43.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T15:59:44.290 [DEBUG] [Thread-118646] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T15:59:44.290 [DEBUG] [Thread-118646] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T15:59:44.338 [DEBUG] [Thread-118646] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T15:59:44.338 [DEBUG] [Thread-118646] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T15:59:44.347 [DEBUG] [Thread-118646] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T15:59:44.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T15:59:44.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T15:59:44.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T15:59:44.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T15:59:44.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T15:59:44.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T15:59:44.386 [DEBUG] [Thread-118646] [transport.py] [_log()] EOF in transport thread
2025-11-03T15:59:48.477 [DEBUG] [Thread-118648 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:00:03.536 [DEBUG] [Thread-118649 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:00:10.649 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:00:10.650 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:00:14.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:00:14.408 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:00:14.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:00:15.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 15, 59, 47), 47.74, 3.17, 0.0, 37.46, 26.77, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:00:15.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 15:59:47
2025-11-03T16:00:15.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:00:15.355 [DEBUG] [Thread-118650] [transport.py] [_log()] starting thread (client mode): 0x11799ab0
2025-11-03T16:00:15.356 [DEBUG] [Thread-118650] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:00:15.376 [DEBUG] [Thread-118650] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:00:15.376 [INFO] [Thread-118650] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:00:15.379 [DEBUG] [Thread-118650] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:00:15.379 [DEBUG] [Thread-118650] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:00:15.379 [DEBUG] [Thread-118650] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:00:15.379 [DEBUG] [Thread-118650] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:00:15.379 [DEBUG] [Thread-118650] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:00:15.379 [DEBUG] [Thread-118650] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:00:15.380 [DEBUG] [Thread-118650] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:00:15.380 [DEBUG] [Thread-118650] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:00:15.380 [DEBUG] [Thread-118650] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:00:15.380 [DEBUG] [Thread-118650] [transport.py] [_log()] client lang: <none>
2025-11-03T16:00:15.380 [DEBUG] [Thread-118650] [transport.py] [_log()] server lang: <none>
2025-11-03T16:00:15.380 [DEBUG] [Thread-118650] [transport.py] [_log()] kex follows: False
2025-11-03T16:00:15.380 [DEBUG] [Thread-118650] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:00:15.380 [DEBUG] [Thread-118650] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:00:15.381 [DEBUG] [Thread-118650] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:00:15.381 [DEBUG] [Thread-118650] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:00:15.381 [DEBUG] [Thread-118650] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:00:15.381 [DEBUG] [Thread-118650] [transport.py] [_log()] Compression: none
2025-11-03T16:00:15.381 [DEBUG] [Thread-118650] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:00:15.392 [DEBUG] [Thread-118650] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:00:15.393 [DEBUG] [Thread-118650] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:00:15.394 [DEBUG] [Thread-118650] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:00:15.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:00:15.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:00:15.437 [DEBUG] [Thread-118650] [transport.py] [_log()] userauth is OK
2025-11-03T16:00:15.437 [DEBUG] [Thread-118650] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:00:15.437 [DEBUG] [Thread-118650] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:00:15.437 [DEBUG] [Thread-118650] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:00:15.437 [DEBUG] [Thread-118650] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:00:15.458 [INFO] [Thread-118650] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:00:15.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:00:18.588 [DEBUG] [Thread-118652 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:00:19.961 [DEBUG] [Thread-118653 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:00:20.660 [DEBUG] [Thread-118650] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:00:20.661 [DEBUG] [Thread-118650] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:00:20.661 [DEBUG] [Thread-118650] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:00:20.693 [DEBUG] [Thread-118650] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:00:20.693 [DEBUG] [Thread-118650] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:00:20.697 [DEBUG] [Thread-118650] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:00:20.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:00:20.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:00:20.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:00:20.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:00:20.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:00:20.871 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:00:20.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:00:20.871 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:00:20.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:00:20.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.583089 -999.00  +26.20  40.85      7  -10.90 1 1 2 1 1   888    0 36.29 -16.32 ----- 39.4 40.9 293.8 53.1 30.1 -34.3 29.7 -33.2 30.4 -35.3 31.4 -33.3
2025-11-03T16:00:20.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:00:20.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:00:20.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.583089
2025-11-03T16:00:20.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:00:20.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:00:20.874 [DEBUG] [Thread-118650] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:00:20.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:00:20.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:00:20.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:00:20.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T15:59:47', tmtdew=47.74, humidity=3.17, cloud=0.0, wind=37.46, temperature=26.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T13:59:38.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:00:20.966 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:00:20.984 [DEBUG] [Thread-118655] [transport.py] [_log()] starting thread (client mode): 0x1179bac0
2025-11-03T16:00:20.984 [DEBUG] [Thread-118655] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:00:20.998 [DEBUG] [Thread-118655] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:00:20.998 [INFO] [Thread-118655] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:00:21.005 [DEBUG] [Thread-118655] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:00:21.005 [DEBUG] [Thread-118655] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:00:21.005 [DEBUG] [Thread-118655] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:00:21.006 [DEBUG] [Thread-118655] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:00:21.006 [DEBUG] [Thread-118655] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:00:21.006 [DEBUG] [Thread-118655] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:00:21.006 [DEBUG] [Thread-118655] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:00:21.006 [DEBUG] [Thread-118655] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:00:21.006 [DEBUG] [Thread-118655] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:00:21.006 [DEBUG] [Thread-118655] [transport.py] [_log()] client lang: <none>
2025-11-03T16:00:21.006 [DEBUG] [Thread-118655] [transport.py] [_log()] server lang: <none>
2025-11-03T16:00:21.006 [DEBUG] [Thread-118655] [transport.py] [_log()] kex follows: False
2025-11-03T16:00:21.006 [DEBUG] [Thread-118655] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:00:21.006 [DEBUG] [Thread-118655] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:00:21.006 [DEBUG] [Thread-118655] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:00:21.006 [DEBUG] [Thread-118655] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:00:21.006 [DEBUG] [Thread-118655] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:00:21.006 [DEBUG] [Thread-118655] [transport.py] [_log()] Compression: none
2025-11-03T16:00:21.006 [DEBUG] [Thread-118655] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:00:21.063 [DEBUG] [Thread-118655] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:00:21.063 [DEBUG] [Thread-118655] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:00:21.063 [DEBUG] [Thread-118655] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:00:21.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:00:21.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:00:21.120 [DEBUG] [Thread-118655] [transport.py] [_log()] userauth is OK
2025-11-03T16:00:21.120 [DEBUG] [Thread-118655] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:00:21.120 [DEBUG] [Thread-118655] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:00:21.120 [DEBUG] [Thread-118655] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:00:21.120 [DEBUG] [Thread-118655] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:00:21.139 [INFO] [Thread-118655] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:00:21.139 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:00:21.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:00:22.010 [DEBUG] [Thread-118655] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:00:22.011 [DEBUG] [Thread-118655] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:00:22.059 [DEBUG] [Thread-118655] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:00:22.059 [DEBUG] [Thread-118655] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:00:22.068 [DEBUG] [Thread-118655] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:00:22.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:00:22.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:00:22.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:00:22.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:00:22.093 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:00:22.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:00:22.101 [DEBUG] [Thread-118655] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:00:33.640 [DEBUG] [Thread-118657 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:00:48.724 [DEBUG] [Thread-118658 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:00:52.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:00:52.124 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:00:52.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:00:52.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 0, 20), 47.85, 3.15, 0.0, 40.46, 26.93, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:00:52.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:00:20
2025-11-03T16:00:52.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:00:53.135 [DEBUG] [Thread-118659] [transport.py] [_log()] starting thread (client mode): 0xed2d360
2025-11-03T16:00:53.135 [DEBUG] [Thread-118659] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:00:53.158 [DEBUG] [Thread-118659] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:00:53.158 [INFO] [Thread-118659] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:00:53.162 [DEBUG] [Thread-118659] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:00:53.162 [DEBUG] [Thread-118659] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:00:53.162 [DEBUG] [Thread-118659] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:00:53.162 [DEBUG] [Thread-118659] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:00:53.162 [DEBUG] [Thread-118659] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:00:53.162 [DEBUG] [Thread-118659] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:00:53.162 [DEBUG] [Thread-118659] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:00:53.162 [DEBUG] [Thread-118659] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:00:53.162 [DEBUG] [Thread-118659] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:00:53.162 [DEBUG] [Thread-118659] [transport.py] [_log()] client lang: <none>
2025-11-03T16:00:53.162 [DEBUG] [Thread-118659] [transport.py] [_log()] server lang: <none>
2025-11-03T16:00:53.162 [DEBUG] [Thread-118659] [transport.py] [_log()] kex follows: False
2025-11-03T16:00:53.162 [DEBUG] [Thread-118659] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:00:53.162 [DEBUG] [Thread-118659] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:00:53.162 [DEBUG] [Thread-118659] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:00:53.162 [DEBUG] [Thread-118659] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:00:53.162 [DEBUG] [Thread-118659] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:00:53.162 [DEBUG] [Thread-118659] [transport.py] [_log()] Compression: none
2025-11-03T16:00:53.162 [DEBUG] [Thread-118659] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:00:53.180 [DEBUG] [Thread-118659] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:00:53.180 [DEBUG] [Thread-118659] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:00:53.181 [DEBUG] [Thread-118659] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:00:53.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:00:53.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:00:53.183 [DEBUG] [Thread-118659] [transport.py] [_log()] userauth is OK
2025-11-03T16:00:53.183 [DEBUG] [Thread-118659] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:00:53.183 [DEBUG] [Thread-118659] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:00:53.184 [DEBUG] [Thread-118659] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:00:53.184 [DEBUG] [Thread-118659] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:00:53.220 [INFO] [Thread-118659] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:00:53.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:00:53.880 [DEBUG] [Thread-118659] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:00:53.880 [DEBUG] [Thread-118659] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:00:53.880 [DEBUG] [Thread-118659] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:00:53.921 [DEBUG] [Thread-118659] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:00:53.921 [DEBUG] [Thread-118659] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:00:53.924 [DEBUG] [Thread-118659] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:00:53.937 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:00:53.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:00:53.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:00:53.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:00:53.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:00:53.943 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:00:53.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:00:53.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:00:53.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:00:53.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.583436 -999.00  +26.40  37.38      7  -10.80 1 1 2 1 1   888    0 35.43 -24.43 ----- 37.9 37.4 300.2 44.7 30.0 -33.5 29.8 -32.7 30.7 -31.5 31.3 -31.6
2025-11-03T16:00:53.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:00:53.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:00:53.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.583436
2025-11-03T16:00:53.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:00:53.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:00:53.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:00:53.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:00:53.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:00:53.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:00:20', tmtdew=47.85, humidity=3.15, cloud=0.0, wind=40.46, temperature=26.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:00:08.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:00:53.945 [DEBUG] [Thread-118659] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:00:54.019 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:00:54.040 [DEBUG] [Thread-118662] [transport.py] [_log()] starting thread (client mode): 0xed2f370
2025-11-03T16:00:54.040 [DEBUG] [Thread-118662] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:00:54.063 [DEBUG] [Thread-118662] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:00:54.063 [INFO] [Thread-118662] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:00:54.071 [DEBUG] [Thread-118662] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:00:54.071 [DEBUG] [Thread-118662] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:00:54.071 [DEBUG] [Thread-118662] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:00:54.071 [DEBUG] [Thread-118662] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:00:54.071 [DEBUG] [Thread-118662] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:00:54.071 [DEBUG] [Thread-118662] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:00:54.071 [DEBUG] [Thread-118662] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:00:54.071 [DEBUG] [Thread-118662] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:00:54.071 [DEBUG] [Thread-118662] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:00:54.071 [DEBUG] [Thread-118662] [transport.py] [_log()] client lang: <none>
2025-11-03T16:00:54.071 [DEBUG] [Thread-118662] [transport.py] [_log()] server lang: <none>
2025-11-03T16:00:54.071 [DEBUG] [Thread-118662] [transport.py] [_log()] kex follows: False
2025-11-03T16:00:54.071 [DEBUG] [Thread-118662] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:00:54.071 [DEBUG] [Thread-118662] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:00:54.071 [DEBUG] [Thread-118662] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:00:54.071 [DEBUG] [Thread-118662] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:00:54.071 [DEBUG] [Thread-118662] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:00:54.071 [DEBUG] [Thread-118662] [transport.py] [_log()] Compression: none
2025-11-03T16:00:54.071 [DEBUG] [Thread-118662] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:00:54.126 [DEBUG] [Thread-118662] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:00:54.127 [DEBUG] [Thread-118662] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:00:54.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:00:54.127 [DEBUG] [Thread-118662] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:00:54.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:00:54.183 [DEBUG] [Thread-118662] [transport.py] [_log()] userauth is OK
2025-11-03T16:00:54.183 [DEBUG] [Thread-118662] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:00:54.184 [DEBUG] [Thread-118662] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:00:54.184 [DEBUG] [Thread-118662] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:00:54.184 [DEBUG] [Thread-118662] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:00:54.199 [INFO] [Thread-118662] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:00:54.200 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:00:54.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:00:55.077 [DEBUG] [Thread-118662] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:00:55.077 [DEBUG] [Thread-118662] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:00:55.125 [DEBUG] [Thread-118662] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:00:55.125 [DEBUG] [Thread-118662] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:00:55.133 [DEBUG] [Thread-118662] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:00:55.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:00:55.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:00:55.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:00:55.157 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:00:55.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:00:55.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:00:55.165 [DEBUG] [Thread-118662] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:01:03.771 [DEBUG] [Thread-118664 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:01:10.790 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:01:10.792 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:01:18.836 [DEBUG] [Thread-118665 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:01:20.087 [DEBUG] [Thread-118666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:01:25.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:01:25.165 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:01:25.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:01:25.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 0, 52), 47.85, 3.14, 0.0, 45.91, 26.63, 0, 0, 0, 2, 1, 0),)
2025-11-03T16:01:25.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:00:52
2025-11-03T16:01:26.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:01:26.173 [DEBUG] [Thread-118667] [transport.py] [_log()] starting thread (client mode): 0xed89d50
2025-11-03T16:01:26.174 [DEBUG] [Thread-118667] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:01:26.187 [DEBUG] [Thread-118667] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:01:26.187 [INFO] [Thread-118667] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:01:26.189 [DEBUG] [Thread-118667] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:01:26.189 [DEBUG] [Thread-118667] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:01:26.189 [DEBUG] [Thread-118667] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:01:26.189 [DEBUG] [Thread-118667] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:01:26.189 [DEBUG] [Thread-118667] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:01:26.189 [DEBUG] [Thread-118667] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:01:26.189 [DEBUG] [Thread-118667] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:01:26.189 [DEBUG] [Thread-118667] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:01:26.189 [DEBUG] [Thread-118667] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:01:26.189 [DEBUG] [Thread-118667] [transport.py] [_log()] client lang: <none>
2025-11-03T16:01:26.189 [DEBUG] [Thread-118667] [transport.py] [_log()] server lang: <none>
2025-11-03T16:01:26.189 [DEBUG] [Thread-118667] [transport.py] [_log()] kex follows: False
2025-11-03T16:01:26.189 [DEBUG] [Thread-118667] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:01:26.190 [DEBUG] [Thread-118667] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:01:26.190 [DEBUG] [Thread-118667] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:01:26.190 [DEBUG] [Thread-118667] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:01:26.190 [DEBUG] [Thread-118667] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:01:26.190 [DEBUG] [Thread-118667] [transport.py] [_log()] Compression: none
2025-11-03T16:01:26.190 [DEBUG] [Thread-118667] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:01:26.197 [DEBUG] [Thread-118667] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:01:26.197 [DEBUG] [Thread-118667] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:01:26.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:01:26.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:01:26.198 [DEBUG] [Thread-118667] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:01:26.198 [DEBUG] [Thread-118667] [transport.py] [_log()] userauth is OK
2025-11-03T16:01:26.198 [DEBUG] [Thread-118667] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:01:26.198 [DEBUG] [Thread-118667] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:01:26.198 [DEBUG] [Thread-118667] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:01:26.199 [DEBUG] [Thread-118667] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:01:26.212 [INFO] [Thread-118667] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:01:26.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:01:26.879 [DEBUG] [Thread-118667] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:01:26.880 [DEBUG] [Thread-118667] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:01:26.880 [DEBUG] [Thread-118667] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:01:26.920 [DEBUG] [Thread-118667] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:01:26.920 [DEBUG] [Thread-118667] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:01:26.923 [DEBUG] [Thread-118667] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:01:26.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:01:26.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:01:26.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:01:26.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:01:26.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:01:26.941 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:01:26.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:01:26.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:01:26.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:01:26.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.583783 -999.00  +26.40  39.70      7  -10.60 1 1 2 1 1   888    0 35.50 -26.46 ----- 33.2 39.7 296.2 49.8 30.0 -33.2 29.8 -32.9 30.6 -34.7 31.3 -31.7
2025-11-03T16:01:26.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:01:26.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:01:26.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.583783
2025-11-03T16:01:26.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:01:26.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:01:26.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:01:26.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:01:26.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:01:26.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:00:52', tmtdew=47.85, humidity=3.14, cloud=0.0, wind=45.91, temperature=26.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=1, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:00:38.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:01:26.943 [DEBUG] [Thread-118667] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:01:27.017 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:01:27.043 [DEBUG] [Thread-118670] [transport.py] [_log()] starting thread (client mode): 0xed88610
2025-11-03T16:01:27.043 [DEBUG] [Thread-118670] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:01:27.057 [DEBUG] [Thread-118670] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:01:27.058 [INFO] [Thread-118670] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:01:27.065 [DEBUG] [Thread-118670] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:01:27.065 [DEBUG] [Thread-118670] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:01:27.065 [DEBUG] [Thread-118670] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:01:27.065 [DEBUG] [Thread-118670] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:01:27.065 [DEBUG] [Thread-118670] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:01:27.065 [DEBUG] [Thread-118670] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:01:27.065 [DEBUG] [Thread-118670] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:01:27.065 [DEBUG] [Thread-118670] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:01:27.065 [DEBUG] [Thread-118670] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:01:27.065 [DEBUG] [Thread-118670] [transport.py] [_log()] client lang: <none>
2025-11-03T16:01:27.065 [DEBUG] [Thread-118670] [transport.py] [_log()] server lang: <none>
2025-11-03T16:01:27.065 [DEBUG] [Thread-118670] [transport.py] [_log()] kex follows: False
2025-11-03T16:01:27.065 [DEBUG] [Thread-118670] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:01:27.065 [DEBUG] [Thread-118670] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:01:27.066 [DEBUG] [Thread-118670] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:01:27.066 [DEBUG] [Thread-118670] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:01:27.066 [DEBUG] [Thread-118670] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:01:27.066 [DEBUG] [Thread-118670] [transport.py] [_log()] Compression: none
2025-11-03T16:01:27.066 [DEBUG] [Thread-118670] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:01:27.127 [DEBUG] [Thread-118670] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:01:27.127 [DEBUG] [Thread-118670] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:01:27.127 [DEBUG] [Thread-118670] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:01:27.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:01:27.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:01:27.184 [DEBUG] [Thread-118670] [transport.py] [_log()] userauth is OK
2025-11-03T16:01:27.184 [DEBUG] [Thread-118670] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:01:27.184 [DEBUG] [Thread-118670] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:01:27.184 [DEBUG] [Thread-118670] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:01:27.184 [DEBUG] [Thread-118670] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:01:27.200 [INFO] [Thread-118670] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:01:27.200 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:01:27.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:01:28.054 [DEBUG] [Thread-118670] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:01:28.054 [DEBUG] [Thread-118670] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:01:28.102 [DEBUG] [Thread-118670] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:01:28.102 [DEBUG] [Thread-118670] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:01:28.111 [DEBUG] [Thread-118670] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:01:28.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:01:28.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:01:28.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:01:28.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:01:28.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:01:28.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:01:28.142 [DEBUG] [Thread-118670] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:01:33.873 [DEBUG] [Thread-118672 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:01:48.954 [DEBUG] [Thread-118673 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:01:58.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:01:58.165 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:01:58.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:01:58.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 1, 25), 48.37, 3.01, 0.0, 50.85, 26.71, 0, 0, 0, 2, 1, 0),)
2025-11-03T16:01:58.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:01:25
2025-11-03T16:01:59.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:01:59.282 [DEBUG] [Thread-118674] [transport.py] [_log()] starting thread (client mode): 0xed21870
2025-11-03T16:01:59.283 [DEBUG] [Thread-118674] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:01:59.303 [DEBUG] [Thread-118674] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:01:59.304 [INFO] [Thread-118674] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:01:59.307 [DEBUG] [Thread-118674] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:01:59.307 [DEBUG] [Thread-118674] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:01:59.307 [DEBUG] [Thread-118674] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:01:59.307 [DEBUG] [Thread-118674] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:01:59.307 [DEBUG] [Thread-118674] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:01:59.307 [DEBUG] [Thread-118674] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:01:59.307 [DEBUG] [Thread-118674] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:01:59.307 [DEBUG] [Thread-118674] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:01:59.307 [DEBUG] [Thread-118674] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:01:59.307 [DEBUG] [Thread-118674] [transport.py] [_log()] client lang: <none>
2025-11-03T16:01:59.307 [DEBUG] [Thread-118674] [transport.py] [_log()] server lang: <none>
2025-11-03T16:01:59.307 [DEBUG] [Thread-118674] [transport.py] [_log()] kex follows: False
2025-11-03T16:01:59.307 [DEBUG] [Thread-118674] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:01:59.307 [DEBUG] [Thread-118674] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:01:59.307 [DEBUG] [Thread-118674] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:01:59.307 [DEBUG] [Thread-118674] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:01:59.307 [DEBUG] [Thread-118674] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:01:59.308 [DEBUG] [Thread-118674] [transport.py] [_log()] Compression: none
2025-11-03T16:01:59.308 [DEBUG] [Thread-118674] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:01:59.322 [DEBUG] [Thread-118674] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:01:59.322 [DEBUG] [Thread-118674] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:01:59.322 [DEBUG] [Thread-118674] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:01:59.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:01:59.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:01:59.323 [DEBUG] [Thread-118674] [transport.py] [_log()] userauth is OK
2025-11-03T16:01:59.323 [DEBUG] [Thread-118674] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:01:59.323 [DEBUG] [Thread-118674] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:01:59.323 [DEBUG] [Thread-118674] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:01:59.323 [DEBUG] [Thread-118674] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:01:59.342 [INFO] [Thread-118674] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:01:59.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:01:59.958 [DEBUG] [Thread-118674] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:01:59.958 [DEBUG] [Thread-118674] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:01:59.958 [DEBUG] [Thread-118674] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:01:59.998 [DEBUG] [Thread-118674] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:01:59.998 [DEBUG] [Thread-118674] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:02:00.001 [DEBUG] [Thread-118674] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:02:00.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:02:00.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:02:00.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:02:00.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:02:00.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:02:00.019 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:02:00.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:02:00.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:02:00.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:02:00.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.584130 -999.00  +26.50  38.51      7  -10.70 1 1 2 1 1   888    0 37.32 -28.18 ----- 42.6 38.5 310.5 48.6 29.9 -33.5 29.7 -32.8 30.5 -33.4 31.2 -32.0
2025-11-03T16:02:00.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:02:00.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:02:00.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.584130
2025-11-03T16:02:00.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:02:00.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:02:00.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:02:00.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:02:00.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:02:00.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:01:25', tmtdew=48.37, humidity=3.01, cloud=0.0, wind=50.85, temperature=26.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=1, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:01:08.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:02:00.021 [DEBUG] [Thread-118674] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:02:00.102 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:02:00.121 [DEBUG] [Thread-118677] [transport.py] [_log()] starting thread (client mode): 0x1174eb90
2025-11-03T16:02:00.121 [DEBUG] [Thread-118677] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:02:00.135 [DEBUG] [Thread-118677] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:02:00.135 [INFO] [Thread-118677] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:02:00.143 [DEBUG] [Thread-118677] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:02:00.143 [DEBUG] [Thread-118677] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:02:00.143 [DEBUG] [Thread-118677] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:02:00.143 [DEBUG] [Thread-118677] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:02:00.143 [DEBUG] [Thread-118677] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:02:00.143 [DEBUG] [Thread-118677] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:02:00.143 [DEBUG] [Thread-118677] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:02:00.143 [DEBUG] [Thread-118677] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:02:00.143 [DEBUG] [Thread-118677] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:02:00.143 [DEBUG] [Thread-118677] [transport.py] [_log()] client lang: <none>
2025-11-03T16:02:00.143 [DEBUG] [Thread-118677] [transport.py] [_log()] server lang: <none>
2025-11-03T16:02:00.143 [DEBUG] [Thread-118677] [transport.py] [_log()] kex follows: False
2025-11-03T16:02:00.143 [DEBUG] [Thread-118677] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:02:00.143 [DEBUG] [Thread-118677] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:02:00.143 [DEBUG] [Thread-118677] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:02:00.143 [DEBUG] [Thread-118677] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:02:00.143 [DEBUG] [Thread-118677] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:02:00.143 [DEBUG] [Thread-118677] [transport.py] [_log()] Compression: none
2025-11-03T16:02:00.143 [DEBUG] [Thread-118677] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:02:00.201 [DEBUG] [Thread-118677] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:02:00.201 [DEBUG] [Thread-118677] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:02:00.201 [DEBUG] [Thread-118677] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:02:00.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:02:00.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:02:00.258 [DEBUG] [Thread-118677] [transport.py] [_log()] userauth is OK
2025-11-03T16:02:00.259 [DEBUG] [Thread-118677] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:02:00.259 [DEBUG] [Thread-118677] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:02:00.259 [DEBUG] [Thread-118677] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:02:00.259 [DEBUG] [Thread-118677] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:02:00.272 [INFO] [Thread-118677] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:02:00.272 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:02:00.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:02:01.099 [DEBUG] [Thread-118677] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:02:01.099 [DEBUG] [Thread-118677] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:02:01.147 [DEBUG] [Thread-118677] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:02:01.148 [DEBUG] [Thread-118677] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:02:01.156 [DEBUG] [Thread-118677] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:02:01.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:02:01.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:02:01.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:02:01.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:02:01.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:02:01.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:02:01.187 [DEBUG] [Thread-118677] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:02:03.996 [DEBUG] [Thread-118679 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:02:10.931 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:02:10.931 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:02:19.046 [DEBUG] [Thread-118680 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:02:20.198 [DEBUG] [Thread-118681 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:02:31.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:02:31.210 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:02:31.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:02:31.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 1, 57), 47.93, 3.09, 0.0, 41.89, 26.76, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:02:31.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:01:57
2025-11-03T16:02:32.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:02:32.313 [DEBUG] [Thread-118682] [transport.py] [_log()] starting thread (client mode): 0x117ea3e0
2025-11-03T16:02:32.313 [DEBUG] [Thread-118682] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:02:32.332 [DEBUG] [Thread-118682] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:02:32.332 [INFO] [Thread-118682] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:02:32.335 [DEBUG] [Thread-118682] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:02:32.335 [DEBUG] [Thread-118682] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:02:32.335 [DEBUG] [Thread-118682] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:02:32.335 [DEBUG] [Thread-118682] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:02:32.335 [DEBUG] [Thread-118682] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:02:32.335 [DEBUG] [Thread-118682] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:02:32.335 [DEBUG] [Thread-118682] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:02:32.335 [DEBUG] [Thread-118682] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:02:32.335 [DEBUG] [Thread-118682] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:02:32.335 [DEBUG] [Thread-118682] [transport.py] [_log()] client lang: <none>
2025-11-03T16:02:32.335 [DEBUG] [Thread-118682] [transport.py] [_log()] server lang: <none>
2025-11-03T16:02:32.335 [DEBUG] [Thread-118682] [transport.py] [_log()] kex follows: False
2025-11-03T16:02:32.335 [DEBUG] [Thread-118682] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:02:32.335 [DEBUG] [Thread-118682] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:02:32.335 [DEBUG] [Thread-118682] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:02:32.335 [DEBUG] [Thread-118682] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:02:32.335 [DEBUG] [Thread-118682] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:02:32.335 [DEBUG] [Thread-118682] [transport.py] [_log()] Compression: none
2025-11-03T16:02:32.335 [DEBUG] [Thread-118682] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:02:32.348 [DEBUG] [Thread-118682] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:02:32.348 [DEBUG] [Thread-118682] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:02:32.348 [DEBUG] [Thread-118682] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:02:32.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:02:32.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:02:32.349 [DEBUG] [Thread-118682] [transport.py] [_log()] userauth is OK
2025-11-03T16:02:32.349 [DEBUG] [Thread-118682] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:02:32.349 [DEBUG] [Thread-118682] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:02:32.349 [DEBUG] [Thread-118682] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:02:32.349 [DEBUG] [Thread-118682] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:02:32.358 [INFO] [Thread-118682] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:02:32.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:02:32.939 [DEBUG] [Thread-118682] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:02:32.939 [DEBUG] [Thread-118682] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:02:32.940 [DEBUG] [Thread-118682] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:02:32.980 [DEBUG] [Thread-118682] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:02:32.980 [DEBUG] [Thread-118682] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:02:32.985 [DEBUG] [Thread-118682] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:02:32.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:02:32.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:02:32.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:02:33.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:02:33.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:02:33.008 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:02:33.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:02:33.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:02:33.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:02:33.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.584478 -999.00  +26.40  40.58      7  -10.60 1 1 2 1 1   888    0 36.08 -26.41 ----- 38.0 40.6 327.4 54.5 29.9 -33.3 29.7 -32.2 30.5 -31.6 31.1 -32.2
2025-11-03T16:02:33.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:02:33.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:02:33.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.584478
2025-11-03T16:02:33.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:02:33.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:02:33.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:02:33.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:02:33.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:02:33.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:01:57', tmtdew=47.93, humidity=3.09, cloud=0.0, wind=41.89, temperature=26.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:01:38.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:02:33.010 [DEBUG] [Thread-118682] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:02:33.094 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:02:33.115 [DEBUG] [Thread-118685] [transport.py] [_log()] starting thread (client mode): 0x117bf8b0
2025-11-03T16:02:33.115 [DEBUG] [Thread-118685] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:02:33.130 [DEBUG] [Thread-118685] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:02:33.130 [INFO] [Thread-118685] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:02:33.139 [DEBUG] [Thread-118685] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:02:33.139 [DEBUG] [Thread-118685] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:02:33.139 [DEBUG] [Thread-118685] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:02:33.139 [DEBUG] [Thread-118685] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:02:33.139 [DEBUG] [Thread-118685] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:02:33.139 [DEBUG] [Thread-118685] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:02:33.140 [DEBUG] [Thread-118685] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:02:33.140 [DEBUG] [Thread-118685] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:02:33.140 [DEBUG] [Thread-118685] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:02:33.140 [DEBUG] [Thread-118685] [transport.py] [_log()] client lang: <none>
2025-11-03T16:02:33.140 [DEBUG] [Thread-118685] [transport.py] [_log()] server lang: <none>
2025-11-03T16:02:33.140 [DEBUG] [Thread-118685] [transport.py] [_log()] kex follows: False
2025-11-03T16:02:33.140 [DEBUG] [Thread-118685] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:02:33.140 [DEBUG] [Thread-118685] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:02:33.140 [DEBUG] [Thread-118685] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:02:33.140 [DEBUG] [Thread-118685] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:02:33.140 [DEBUG] [Thread-118685] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:02:33.140 [DEBUG] [Thread-118685] [transport.py] [_log()] Compression: none
2025-11-03T16:02:33.140 [DEBUG] [Thread-118685] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:02:33.197 [DEBUG] [Thread-118685] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:02:33.197 [DEBUG] [Thread-118685] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:02:33.197 [DEBUG] [Thread-118685] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:02:33.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:02:33.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:02:33.254 [DEBUG] [Thread-118685] [transport.py] [_log()] userauth is OK
2025-11-03T16:02:33.254 [DEBUG] [Thread-118685] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:02:33.254 [DEBUG] [Thread-118685] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:02:33.254 [DEBUG] [Thread-118685] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:02:33.254 [DEBUG] [Thread-118685] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:02:33.268 [INFO] [Thread-118685] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:02:33.268 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:02:33.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:02:34.083 [DEBUG] [Thread-118687 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:02:34.136 [DEBUG] [Thread-118685] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:02:34.137 [DEBUG] [Thread-118685] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:02:34.186 [DEBUG] [Thread-118685] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:02:34.186 [DEBUG] [Thread-118685] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:02:34.196 [DEBUG] [Thread-118685] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:02:34.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:02:34.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:02:34.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:02:34.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:02:34.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:02:34.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:02:34.236 [DEBUG] [Thread-118685] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:02:49.137 [DEBUG] [Thread-118688 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:03:04.175 [DEBUG] [Thread-118689 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:03:04.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:03:04.258 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:03:04.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:03:05.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 2, 30), 47.86, 3.1, 0.0, 42.42, 26.73, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:03:05.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:02:30
2025-11-03T16:03:05.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:03:05.374 [DEBUG] [Thread-118690] [transport.py] [_log()] starting thread (client mode): 0x117bf910
2025-11-03T16:03:05.374 [DEBUG] [Thread-118690] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:03:05.394 [DEBUG] [Thread-118690] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:03:05.394 [INFO] [Thread-118690] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:03:05.397 [DEBUG] [Thread-118690] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:03:05.397 [DEBUG] [Thread-118690] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:03:05.397 [DEBUG] [Thread-118690] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:03:05.397 [DEBUG] [Thread-118690] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:03:05.397 [DEBUG] [Thread-118690] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:03:05.398 [DEBUG] [Thread-118690] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:03:05.398 [DEBUG] [Thread-118690] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:03:05.398 [DEBUG] [Thread-118690] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:03:05.398 [DEBUG] [Thread-118690] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:03:05.398 [DEBUG] [Thread-118690] [transport.py] [_log()] client lang: <none>
2025-11-03T16:03:05.398 [DEBUG] [Thread-118690] [transport.py] [_log()] server lang: <none>
2025-11-03T16:03:05.398 [DEBUG] [Thread-118690] [transport.py] [_log()] kex follows: False
2025-11-03T16:03:05.398 [DEBUG] [Thread-118690] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:03:05.398 [DEBUG] [Thread-118690] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:03:05.402 [DEBUG] [Thread-118690] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:03:05.402 [DEBUG] [Thread-118690] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:03:05.402 [DEBUG] [Thread-118690] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:03:05.402 [DEBUG] [Thread-118690] [transport.py] [_log()] Compression: none
2025-11-03T16:03:05.402 [DEBUG] [Thread-118690] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:03:05.420 [DEBUG] [Thread-118690] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:03:05.421 [DEBUG] [Thread-118690] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:03:05.422 [DEBUG] [Thread-118690] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:03:05.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:03:05.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:03:05.424 [DEBUG] [Thread-118690] [transport.py] [_log()] userauth is OK
2025-11-03T16:03:05.424 [DEBUG] [Thread-118690] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:03:05.424 [DEBUG] [Thread-118690] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:03:05.425 [DEBUG] [Thread-118690] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:03:05.425 [DEBUG] [Thread-118690] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:03:05.461 [INFO] [Thread-118690] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:03:05.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:03:06.037 [DEBUG] [Thread-118690] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:03:06.037 [DEBUG] [Thread-118690] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:03:06.038 [DEBUG] [Thread-118690] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:03:06.078 [DEBUG] [Thread-118690] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:03:06.078 [DEBUG] [Thread-118690] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:03:06.081 [DEBUG] [Thread-118690] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:03:06.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:03:06.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:03:06.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:03:06.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:03:06.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:03:06.104 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:03:06.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:03:06.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:03:06.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:03:06.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.584825 -999.00  +26.40  35.50      7  -10.60 1 1 2 1 1   888    0 36.29 -24.90 ----- 36.6 35.5 315.8 54.8 29.9 -32.5 29.6 -32.8 30.4 -33.6 31.1 -32.6
2025-11-03T16:03:06.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:03:06.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:03:06.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.584825
2025-11-03T16:03:06.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:03:06.113 [DEBUG] [Thread-118690] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:03:06.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:03:06.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:03:06.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:03:06.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:03:06.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:02:30', tmtdew=47.86, humidity=3.1, cloud=0.0, wind=42.42, temperature=26.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:02:08.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:03:06.202 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:03:06.227 [DEBUG] [Thread-118693] [transport.py] [_log()] starting thread (client mode): 0x1174fe20
2025-11-03T16:03:06.227 [DEBUG] [Thread-118693] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:03:06.243 [DEBUG] [Thread-118693] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:03:06.243 [INFO] [Thread-118693] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:03:06.254 [DEBUG] [Thread-118693] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:03:06.254 [DEBUG] [Thread-118693] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:03:06.254 [DEBUG] [Thread-118693] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:03:06.254 [DEBUG] [Thread-118693] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:03:06.254 [DEBUG] [Thread-118693] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:03:06.254 [DEBUG] [Thread-118693] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:03:06.255 [DEBUG] [Thread-118693] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:03:06.255 [DEBUG] [Thread-118693] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:03:06.255 [DEBUG] [Thread-118693] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:03:06.255 [DEBUG] [Thread-118693] [transport.py] [_log()] client lang: <none>
2025-11-03T16:03:06.255 [DEBUG] [Thread-118693] [transport.py] [_log()] server lang: <none>
2025-11-03T16:03:06.255 [DEBUG] [Thread-118693] [transport.py] [_log()] kex follows: False
2025-11-03T16:03:06.255 [DEBUG] [Thread-118693] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:03:06.255 [DEBUG] [Thread-118693] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:03:06.255 [DEBUG] [Thread-118693] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:03:06.255 [DEBUG] [Thread-118693] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:03:06.255 [DEBUG] [Thread-118693] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:03:06.255 [DEBUG] [Thread-118693] [transport.py] [_log()] Compression: none
2025-11-03T16:03:06.255 [DEBUG] [Thread-118693] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:03:06.317 [DEBUG] [Thread-118693] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:03:06.317 [DEBUG] [Thread-118693] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:03:06.317 [DEBUG] [Thread-118693] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:03:06.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:03:06.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:03:06.375 [DEBUG] [Thread-118693] [transport.py] [_log()] userauth is OK
2025-11-03T16:03:06.375 [DEBUG] [Thread-118693] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:03:06.375 [DEBUG] [Thread-118693] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:03:06.376 [DEBUG] [Thread-118693] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:03:06.376 [DEBUG] [Thread-118693] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:03:06.397 [INFO] [Thread-118693] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:03:06.398 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:03:06.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:03:07.238 [DEBUG] [Thread-118693] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:03:07.238 [DEBUG] [Thread-118693] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:03:07.287 [DEBUG] [Thread-118693] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:03:07.288 [DEBUG] [Thread-118693] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:03:07.297 [DEBUG] [Thread-118693] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:03:07.306 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:03:07.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:03:07.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:03:07.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:03:07.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:03:07.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:03:07.331 [DEBUG] [Thread-118693] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:03:11.075 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:03:11.076 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:03:19.215 [DEBUG] [Thread-118695 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:03:20.285 [DEBUG] [Thread-118696 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:03:34.270 [DEBUG] [Thread-118697 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:03:37.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:03:37.352 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:03:37.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:03:38.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 3, 2), 47.89, 3.09, 0.0, 42.96, 26.66, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:03:38.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:03:02
2025-11-03T16:03:38.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:03:38.381 [DEBUG] [Thread-118698] [transport.py] [_log()] starting thread (client mode): 0xed22bf0
2025-11-03T16:03:38.381 [DEBUG] [Thread-118698] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:03:38.407 [DEBUG] [Thread-118698] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:03:38.408 [INFO] [Thread-118698] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:03:38.409 [DEBUG] [Thread-118698] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:03:38.409 [DEBUG] [Thread-118698] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:03:38.409 [DEBUG] [Thread-118698] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:03:38.409 [DEBUG] [Thread-118698] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:03:38.409 [DEBUG] [Thread-118698] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:03:38.409 [DEBUG] [Thread-118698] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:03:38.410 [DEBUG] [Thread-118698] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:03:38.410 [DEBUG] [Thread-118698] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:03:38.410 [DEBUG] [Thread-118698] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:03:38.410 [DEBUG] [Thread-118698] [transport.py] [_log()] client lang: <none>
2025-11-03T16:03:38.410 [DEBUG] [Thread-118698] [transport.py] [_log()] server lang: <none>
2025-11-03T16:03:38.410 [DEBUG] [Thread-118698] [transport.py] [_log()] kex follows: False
2025-11-03T16:03:38.410 [DEBUG] [Thread-118698] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:03:38.410 [DEBUG] [Thread-118698] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:03:38.410 [DEBUG] [Thread-118698] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:03:38.410 [DEBUG] [Thread-118698] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:03:38.410 [DEBUG] [Thread-118698] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:03:38.410 [DEBUG] [Thread-118698] [transport.py] [_log()] Compression: none
2025-11-03T16:03:38.410 [DEBUG] [Thread-118698] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:03:38.420 [DEBUG] [Thread-118698] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:03:38.429 [DEBUG] [Thread-118698] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:03:38.430 [DEBUG] [Thread-118698] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:03:38.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:03:38.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:03:38.432 [DEBUG] [Thread-118698] [transport.py] [_log()] userauth is OK
2025-11-03T16:03:38.432 [DEBUG] [Thread-118698] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:03:38.432 [DEBUG] [Thread-118698] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:03:38.432 [DEBUG] [Thread-118698] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:03:38.432 [DEBUG] [Thread-118698] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:03:38.456 [INFO] [Thread-118698] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:03:38.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:03:39.052 [DEBUG] [Thread-118698] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:03:39.053 [DEBUG] [Thread-118698] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:03:39.053 [DEBUG] [Thread-118698] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:03:39.094 [DEBUG] [Thread-118698] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:03:39.094 [DEBUG] [Thread-118698] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:03:39.096 [DEBUG] [Thread-118698] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:03:39.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:03:39.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:03:39.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:03:39.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:03:39.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:03:39.114 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:03:39.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:03:39.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:03:39.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:03:39.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.585172 -999.00  +26.60  35.81      7  -10.40 1 1 2 1 1   888    0 36.30 -22.22 ----- 35.7 35.8 307.2 43.1 29.8 -33.1 29.6 -32.1 30.5 -32.5 31.1 -32.0
2025-11-03T16:03:39.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:03:39.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:03:39.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.585172
2025-11-03T16:03:39.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:03:39.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:03:39.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:03:39.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:03:39.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:03:39.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:03:02', tmtdew=47.89, humidity=3.09, cloud=0.0, wind=42.96, temperature=26.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:02:38.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:03:39.115 [DEBUG] [Thread-118698] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:03:39.189 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:03:39.207 [DEBUG] [Thread-118701] [transport.py] [_log()] starting thread (client mode): 0xed88dc0
2025-11-03T16:03:39.207 [DEBUG] [Thread-118701] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:03:39.222 [DEBUG] [Thread-118701] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:03:39.222 [INFO] [Thread-118701] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:03:39.229 [DEBUG] [Thread-118701] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:03:39.229 [DEBUG] [Thread-118701] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:03:39.229 [DEBUG] [Thread-118701] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:03:39.229 [DEBUG] [Thread-118701] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:03:39.229 [DEBUG] [Thread-118701] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:03:39.229 [DEBUG] [Thread-118701] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:03:39.229 [DEBUG] [Thread-118701] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:03:39.229 [DEBUG] [Thread-118701] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:03:39.229 [DEBUG] [Thread-118701] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:03:39.229 [DEBUG] [Thread-118701] [transport.py] [_log()] client lang: <none>
2025-11-03T16:03:39.229 [DEBUG] [Thread-118701] [transport.py] [_log()] server lang: <none>
2025-11-03T16:03:39.229 [DEBUG] [Thread-118701] [transport.py] [_log()] kex follows: False
2025-11-03T16:03:39.229 [DEBUG] [Thread-118701] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:03:39.229 [DEBUG] [Thread-118701] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:03:39.229 [DEBUG] [Thread-118701] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:03:39.229 [DEBUG] [Thread-118701] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:03:39.229 [DEBUG] [Thread-118701] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:03:39.229 [DEBUG] [Thread-118701] [transport.py] [_log()] Compression: none
2025-11-03T16:03:39.229 [DEBUG] [Thread-118701] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:03:39.288 [DEBUG] [Thread-118701] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:03:39.289 [DEBUG] [Thread-118701] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:03:39.289 [DEBUG] [Thread-118701] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:03:39.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:03:39.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:03:39.347 [DEBUG] [Thread-118701] [transport.py] [_log()] userauth is OK
2025-11-03T16:03:39.347 [DEBUG] [Thread-118701] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:03:39.347 [DEBUG] [Thread-118701] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:03:39.347 [DEBUG] [Thread-118701] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:03:39.347 [DEBUG] [Thread-118701] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:03:39.361 [INFO] [Thread-118701] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:03:39.361 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:03:39.361 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:03:40.211 [DEBUG] [Thread-118701] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:03:40.221 [DEBUG] [Thread-118701] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:03:40.260 [DEBUG] [Thread-118701] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:03:40.260 [DEBUG] [Thread-118701] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:03:40.270 [DEBUG] [Thread-118701] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:03:40.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:03:40.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:03:40.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:03:40.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:03:40.298 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:03:40.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:03:40.306 [DEBUG] [Thread-118701] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:03:49.315 [DEBUG] [Thread-118703 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:04:04.375 [DEBUG] [Thread-118704 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:04:10.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:04:10.329 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:04:10.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:04:11.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 4, 7), 47.44, 3.15, 0.0, 33.08, 26.45, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:04:11.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:04:07
2025-11-03T16:04:11.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:04:11.217 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:04:11.217 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:04:11.362 [DEBUG] [Thread-118705] [transport.py] [_log()] starting thread (client mode): 0x117bfa30
2025-11-03T16:04:11.362 [DEBUG] [Thread-118705] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:04:11.383 [DEBUG] [Thread-118705] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:04:11.383 [INFO] [Thread-118705] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:04:11.387 [DEBUG] [Thread-118705] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:04:11.387 [DEBUG] [Thread-118705] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:04:11.387 [DEBUG] [Thread-118705] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:04:11.387 [DEBUG] [Thread-118705] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:04:11.387 [DEBUG] [Thread-118705] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:04:11.387 [DEBUG] [Thread-118705] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:04:11.387 [DEBUG] [Thread-118705] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:04:11.387 [DEBUG] [Thread-118705] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:04:11.387 [DEBUG] [Thread-118705] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:04:11.387 [DEBUG] [Thread-118705] [transport.py] [_log()] client lang: <none>
2025-11-03T16:04:11.387 [DEBUG] [Thread-118705] [transport.py] [_log()] server lang: <none>
2025-11-03T16:04:11.387 [DEBUG] [Thread-118705] [transport.py] [_log()] kex follows: False
2025-11-03T16:04:11.388 [DEBUG] [Thread-118705] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:04:11.388 [DEBUG] [Thread-118705] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:04:11.388 [DEBUG] [Thread-118705] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:04:11.388 [DEBUG] [Thread-118705] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:04:11.388 [DEBUG] [Thread-118705] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:04:11.388 [DEBUG] [Thread-118705] [transport.py] [_log()] Compression: none
2025-11-03T16:04:11.388 [DEBUG] [Thread-118705] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:04:11.405 [DEBUG] [Thread-118705] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:04:11.405 [DEBUG] [Thread-118705] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:04:11.406 [DEBUG] [Thread-118705] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:04:11.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:04:11.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:04:11.408 [DEBUG] [Thread-118705] [transport.py] [_log()] userauth is OK
2025-11-03T16:04:11.409 [DEBUG] [Thread-118705] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:04:11.409 [DEBUG] [Thread-118705] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:04:11.409 [DEBUG] [Thread-118705] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:04:11.409 [DEBUG] [Thread-118705] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:04:11.432 [INFO] [Thread-118705] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:04:11.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:04:12.095 [DEBUG] [Thread-118705] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:04:12.096 [DEBUG] [Thread-118705] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:04:12.096 [DEBUG] [Thread-118705] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:04:12.136 [DEBUG] [Thread-118705] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:04:12.136 [DEBUG] [Thread-118705] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:04:12.139 [DEBUG] [Thread-118705] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:04:12.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:04:12.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:04:12.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:04:12.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:04:12.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:04:12.161 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:04:12.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:04:12.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:04:12.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:04:12.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.585866 -999.00  +26.20  35.50      7  -10.70 1 1 2 1 1   888    0 36.23 -19.26 ----- 35.0 35.5 301.3 47.5 29.8 -34.1 29.6 -31.9 30.3 -33.7 31.0 -32.4
2025-11-03T16:04:12.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:04:12.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:04:12.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.585866
2025-11-03T16:04:12.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:04:12.164 [DEBUG] [Thread-118705] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:04:12.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:04:12.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:04:12.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:04:12.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:04:12.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:04:07', tmtdew=47.44, humidity=3.15, cloud=0.0, wind=33.08, temperature=26.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:03:38.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:04:12.251 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:04:12.270 [DEBUG] [Thread-118708] [transport.py] [_log()] starting thread (client mode): 0xedd51b0
2025-11-03T16:04:12.270 [DEBUG] [Thread-118708] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:04:12.284 [DEBUG] [Thread-118708] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:04:12.284 [INFO] [Thread-118708] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:04:12.292 [DEBUG] [Thread-118708] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:04:12.292 [DEBUG] [Thread-118708] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:04:12.292 [DEBUG] [Thread-118708] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:04:12.293 [DEBUG] [Thread-118708] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:04:12.293 [DEBUG] [Thread-118708] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:04:12.293 [DEBUG] [Thread-118708] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:04:12.293 [DEBUG] [Thread-118708] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:04:12.293 [DEBUG] [Thread-118708] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:04:12.293 [DEBUG] [Thread-118708] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:04:12.293 [DEBUG] [Thread-118708] [transport.py] [_log()] client lang: <none>
2025-11-03T16:04:12.293 [DEBUG] [Thread-118708] [transport.py] [_log()] server lang: <none>
2025-11-03T16:04:12.293 [DEBUG] [Thread-118708] [transport.py] [_log()] kex follows: False
2025-11-03T16:04:12.293 [DEBUG] [Thread-118708] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:04:12.294 [DEBUG] [Thread-118708] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:04:12.294 [DEBUG] [Thread-118708] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:04:12.294 [DEBUG] [Thread-118708] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:04:12.294 [DEBUG] [Thread-118708] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:04:12.294 [DEBUG] [Thread-118708] [transport.py] [_log()] Compression: none
2025-11-03T16:04:12.294 [DEBUG] [Thread-118708] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:04:12.349 [DEBUG] [Thread-118708] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:04:12.350 [DEBUG] [Thread-118708] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:04:12.351 [DEBUG] [Thread-118708] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:04:12.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:04:12.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:04:12.404 [DEBUG] [Thread-118708] [transport.py] [_log()] userauth is OK
2025-11-03T16:04:12.405 [DEBUG] [Thread-118708] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:04:12.405 [DEBUG] [Thread-118708] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:04:12.405 [DEBUG] [Thread-118708] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:04:12.405 [DEBUG] [Thread-118708] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:04:12.427 [INFO] [Thread-118708] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:04:12.427 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:04:12.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:04:13.243 [DEBUG] [Thread-118708] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:04:13.244 [DEBUG] [Thread-118708] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:04:13.292 [DEBUG] [Thread-118708] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:04:13.292 [DEBUG] [Thread-118708] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:04:13.301 [DEBUG] [Thread-118708] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:04:13.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:04:13.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:04:13.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:04:13.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:04:13.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:04:13.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:04:13.336 [DEBUG] [Thread-118708] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:04:19.413 [DEBUG] [Thread-118710 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:04:20.397 [DEBUG] [Thread-118711 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:04:34.471 [DEBUG] [Thread-118712 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:04:43.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:04:43.358 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:04:43.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:04:44.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 4, 39), 47.55, 3.15, 0.0, 36.52, 26.58, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:04:44.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:04:39
2025-11-03T16:04:44.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:04:44.445 [DEBUG] [Thread-118713] [transport.py] [_log()] starting thread (client mode): 0x141dbaf0
2025-11-03T16:04:44.445 [DEBUG] [Thread-118713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:04:44.466 [DEBUG] [Thread-118713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:04:44.466 [INFO] [Thread-118713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:04:44.469 [DEBUG] [Thread-118713] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:04:44.469 [DEBUG] [Thread-118713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:04:44.469 [DEBUG] [Thread-118713] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:04:44.469 [DEBUG] [Thread-118713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:04:44.469 [DEBUG] [Thread-118713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:04:44.469 [DEBUG] [Thread-118713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:04:44.469 [DEBUG] [Thread-118713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:04:44.469 [DEBUG] [Thread-118713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:04:44.470 [DEBUG] [Thread-118713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:04:44.470 [DEBUG] [Thread-118713] [transport.py] [_log()] client lang: <none>
2025-11-03T16:04:44.470 [DEBUG] [Thread-118713] [transport.py] [_log()] server lang: <none>
2025-11-03T16:04:44.470 [DEBUG] [Thread-118713] [transport.py] [_log()] kex follows: False
2025-11-03T16:04:44.470 [DEBUG] [Thread-118713] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:04:44.470 [DEBUG] [Thread-118713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:04:44.470 [DEBUG] [Thread-118713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:04:44.470 [DEBUG] [Thread-118713] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:04:44.470 [DEBUG] [Thread-118713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:04:44.470 [DEBUG] [Thread-118713] [transport.py] [_log()] Compression: none
2025-11-03T16:04:44.470 [DEBUG] [Thread-118713] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:04:44.487 [DEBUG] [Thread-118713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:04:44.487 [DEBUG] [Thread-118713] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:04:44.487 [DEBUG] [Thread-118713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:04:44.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:04:44.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:04:44.488 [DEBUG] [Thread-118713] [transport.py] [_log()] userauth is OK
2025-11-03T16:04:44.488 [DEBUG] [Thread-118713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:04:44.488 [DEBUG] [Thread-118713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:04:44.488 [DEBUG] [Thread-118713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:04:44.488 [DEBUG] [Thread-118713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:04:44.497 [INFO] [Thread-118713] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:04:44.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:04:45.035 [DEBUG] [Thread-118713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:04:45.036 [DEBUG] [Thread-118713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:04:45.036 [DEBUG] [Thread-118713] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:04:45.076 [DEBUG] [Thread-118713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:04:45.076 [DEBUG] [Thread-118713] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:04:45.078 [DEBUG] [Thread-118713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:04:45.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:04:45.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:04:45.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:04:45.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:04:45.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:04:45.094 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:04:45.094 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:04:45.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:04:45.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:04:45.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.586214 -999.00  +26.20  42.74      7  -10.80 1 1 2 1 1   888    0 36.43 -20.09 ----- 41.1 42.7 291.2 48.5 29.8 -33.4 29.4 -33.5 30.4 -34.7 31.0 -32.1
2025-11-03T16:04:45.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:04:45.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:04:45.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.586214
2025-11-03T16:04:45.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:04:45.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:04:45.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:04:45.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:04:45.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:04:45.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:04:39', tmtdew=47.55, humidity=3.15, cloud=0.0, wind=36.52, temperature=26.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:04:08.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:04:45.096 [DEBUG] [Thread-118713] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:04:45.170 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:04:45.189 [DEBUG] [Thread-118716] [transport.py] [_log()] starting thread (client mode): 0x141da230
2025-11-03T16:04:45.189 [DEBUG] [Thread-118716] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:04:45.204 [DEBUG] [Thread-118716] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:04:45.204 [INFO] [Thread-118716] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:04:45.211 [DEBUG] [Thread-118716] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:04:45.211 [DEBUG] [Thread-118716] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:04:45.211 [DEBUG] [Thread-118716] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:04:45.211 [DEBUG] [Thread-118716] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:04:45.211 [DEBUG] [Thread-118716] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:04:45.211 [DEBUG] [Thread-118716] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:04:45.211 [DEBUG] [Thread-118716] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:04:45.211 [DEBUG] [Thread-118716] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:04:45.211 [DEBUG] [Thread-118716] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:04:45.211 [DEBUG] [Thread-118716] [transport.py] [_log()] client lang: <none>
2025-11-03T16:04:45.211 [DEBUG] [Thread-118716] [transport.py] [_log()] server lang: <none>
2025-11-03T16:04:45.211 [DEBUG] [Thread-118716] [transport.py] [_log()] kex follows: False
2025-11-03T16:04:45.211 [DEBUG] [Thread-118716] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:04:45.211 [DEBUG] [Thread-118716] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:04:45.211 [DEBUG] [Thread-118716] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:04:45.211 [DEBUG] [Thread-118716] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:04:45.211 [DEBUG] [Thread-118716] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:04:45.211 [DEBUG] [Thread-118716] [transport.py] [_log()] Compression: none
2025-11-03T16:04:45.211 [DEBUG] [Thread-118716] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:04:45.270 [DEBUG] [Thread-118716] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:04:45.270 [DEBUG] [Thread-118716] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:04:45.270 [DEBUG] [Thread-118716] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:04:45.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:04:45.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:04:45.336 [DEBUG] [Thread-118716] [transport.py] [_log()] userauth is OK
2025-11-03T16:04:45.337 [DEBUG] [Thread-118716] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:04:45.337 [DEBUG] [Thread-118716] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:04:45.337 [DEBUG] [Thread-118716] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:04:45.337 [DEBUG] [Thread-118716] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:04:45.355 [INFO] [Thread-118716] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:04:45.355 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:04:45.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:04:46.206 [DEBUG] [Thread-118716] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:04:46.206 [DEBUG] [Thread-118716] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:04:46.254 [DEBUG] [Thread-118716] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:04:46.254 [DEBUG] [Thread-118716] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:04:46.263 [DEBUG] [Thread-118716] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:04:46.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:04:46.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:04:46.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:04:46.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:04:46.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:04:46.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:04:46.298 [DEBUG] [Thread-118716] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:04:49.514 [DEBUG] [Thread-118718 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:05:04.589 [DEBUG] [Thread-118719 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:05:11.357 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:05:11.359 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:05:16.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:05:16.321 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:05:16.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:05:17.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 5, 11), 47.37, 3.2, 0.0, 30.81, 26.55, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:05:17.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:05:11
2025-11-03T16:05:17.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:05:17.405 [DEBUG] [Thread-118720] [transport.py] [_log()] starting thread (client mode): 0x117bc8e0
2025-11-03T16:05:17.405 [DEBUG] [Thread-118720] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:05:17.426 [DEBUG] [Thread-118720] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:05:17.426 [INFO] [Thread-118720] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:05:17.430 [DEBUG] [Thread-118720] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:05:17.430 [DEBUG] [Thread-118720] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:05:17.430 [DEBUG] [Thread-118720] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:05:17.430 [DEBUG] [Thread-118720] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:05:17.430 [DEBUG] [Thread-118720] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:05:17.430 [DEBUG] [Thread-118720] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:05:17.430 [DEBUG] [Thread-118720] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:05:17.430 [DEBUG] [Thread-118720] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:05:17.430 [DEBUG] [Thread-118720] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:05:17.430 [DEBUG] [Thread-118720] [transport.py] [_log()] client lang: <none>
2025-11-03T16:05:17.430 [DEBUG] [Thread-118720] [transport.py] [_log()] server lang: <none>
2025-11-03T16:05:17.430 [DEBUG] [Thread-118720] [transport.py] [_log()] kex follows: False
2025-11-03T16:05:17.430 [DEBUG] [Thread-118720] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:05:17.430 [DEBUG] [Thread-118720] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:05:17.430 [DEBUG] [Thread-118720] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:05:17.430 [DEBUG] [Thread-118720] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:05:17.430 [DEBUG] [Thread-118720] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:05:17.430 [DEBUG] [Thread-118720] [transport.py] [_log()] Compression: none
2025-11-03T16:05:17.430 [DEBUG] [Thread-118720] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:05:17.438 [DEBUG] [Thread-118720] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:05:17.439 [DEBUG] [Thread-118720] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:05:17.439 [DEBUG] [Thread-118720] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:05:17.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:05:17.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:05:17.439 [DEBUG] [Thread-118720] [transport.py] [_log()] userauth is OK
2025-11-03T16:05:17.439 [DEBUG] [Thread-118720] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:05:17.439 [DEBUG] [Thread-118720] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:05:17.440 [DEBUG] [Thread-118720] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:05:17.440 [DEBUG] [Thread-118720] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:05:17.455 [INFO] [Thread-118720] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:05:17.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:05:19.634 [DEBUG] [Thread-118722 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:05:20.259 [DEBUG] [Thread-118720] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:05:20.259 [DEBUG] [Thread-118720] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:05:20.259 [DEBUG] [Thread-118720] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:05:20.300 [DEBUG] [Thread-118720] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:05:20.300 [DEBUG] [Thread-118720] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:05:20.302 [DEBUG] [Thread-118720] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:05:20.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:05:20.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:05:20.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:05:20.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:05:20.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:05:20.318 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:05:20.318 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:05:20.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:05:20.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:05:20.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.586561 -999.00  +26.00  35.99      8  -10.70 1 1 2 1 1   888    0 36.55 -20.56 ----- 35.1 36.0 316.2 44.4 29.6 -34.3 29.4 -33.0 30.3 -33.1 30.9 -32.3
2025-11-03T16:05:20.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:05:20.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:05:20.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.586561
2025-11-03T16:05:20.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:05:20.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:05:20.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:05:20.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:05:20.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:05:20.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:05:11', tmtdew=47.37, humidity=3.2, cloud=0.0, wind=30.81, temperature=26.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:04:38.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:05:20.319 [DEBUG] [Thread-118720] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:05:20.394 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:05:20.414 [DEBUG] [Thread-118724] [transport.py] [_log()] starting thread (client mode): 0x141dbfd0
2025-11-03T16:05:20.414 [DEBUG] [Thread-118724] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:05:20.429 [DEBUG] [Thread-118724] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:05:20.429 [INFO] [Thread-118724] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:05:20.436 [DEBUG] [Thread-118724] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:05:20.436 [DEBUG] [Thread-118724] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:05:20.436 [DEBUG] [Thread-118724] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:05:20.436 [DEBUG] [Thread-118724] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:05:20.436 [DEBUG] [Thread-118724] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:05:20.436 [DEBUG] [Thread-118724] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:05:20.437 [DEBUG] [Thread-118724] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:05:20.437 [DEBUG] [Thread-118724] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:05:20.437 [DEBUG] [Thread-118724] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:05:20.437 [DEBUG] [Thread-118724] [transport.py] [_log()] client lang: <none>
2025-11-03T16:05:20.437 [DEBUG] [Thread-118724] [transport.py] [_log()] server lang: <none>
2025-11-03T16:05:20.437 [DEBUG] [Thread-118724] [transport.py] [_log()] kex follows: False
2025-11-03T16:05:20.437 [DEBUG] [Thread-118724] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:05:20.437 [DEBUG] [Thread-118724] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:05:20.437 [DEBUG] [Thread-118724] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:05:20.437 [DEBUG] [Thread-118724] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:05:20.437 [DEBUG] [Thread-118724] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:05:20.437 [DEBUG] [Thread-118724] [transport.py] [_log()] Compression: none
2025-11-03T16:05:20.437 [DEBUG] [Thread-118724] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:05:20.494 [DEBUG] [Thread-118724] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:05:20.495 [DEBUG] [Thread-118724] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:05:20.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:05:20.495 [DEBUG] [Thread-118724] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:05:20.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:05:20.551 [DEBUG] [Thread-118724] [transport.py] [_log()] userauth is OK
2025-11-03T16:05:20.552 [DEBUG] [Thread-118724] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:05:20.552 [DEBUG] [Thread-118724] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:05:20.552 [DEBUG] [Thread-118724] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:05:20.552 [DEBUG] [Thread-118724] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:05:20.563 [DEBUG] [Thread-118726 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:05:20.569 [INFO] [Thread-118724] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:05:20.569 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:05:20.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:05:21.403 [DEBUG] [Thread-118724] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:05:21.404 [DEBUG] [Thread-118724] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:05:21.451 [DEBUG] [Thread-118724] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:05:21.451 [DEBUG] [Thread-118724] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:05:21.460 [DEBUG] [Thread-118724] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:05:21.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:05:21.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:05:21.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:05:21.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:05:21.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:05:21.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:05:21.493 [DEBUG] [Thread-118724] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:05:34.675 [DEBUG] [Thread-118727 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:05:49.743 [DEBUG] [Thread-118728 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:05:51.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:05:51.512 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:05:51.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:05:52.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 5, 44), 46.69, 3.74, 0.0, 38.04, 26.35, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:05:52.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:05:44
2025-11-03T16:05:52.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:05:52.486 [DEBUG] [Thread-118729] [transport.py] [_log()] starting thread (client mode): 0x141daf20
2025-11-03T16:05:52.487 [DEBUG] [Thread-118729] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:05:52.506 [DEBUG] [Thread-118729] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:05:52.506 [INFO] [Thread-118729] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:05:52.509 [DEBUG] [Thread-118729] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:05:52.509 [DEBUG] [Thread-118729] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:05:52.509 [DEBUG] [Thread-118729] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:05:52.509 [DEBUG] [Thread-118729] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:05:52.509 [DEBUG] [Thread-118729] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:05:52.509 [DEBUG] [Thread-118729] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:05:52.509 [DEBUG] [Thread-118729] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:05:52.510 [DEBUG] [Thread-118729] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:05:52.510 [DEBUG] [Thread-118729] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:05:52.510 [DEBUG] [Thread-118729] [transport.py] [_log()] client lang: <none>
2025-11-03T16:05:52.510 [DEBUG] [Thread-118729] [transport.py] [_log()] server lang: <none>
2025-11-03T16:05:52.510 [DEBUG] [Thread-118729] [transport.py] [_log()] kex follows: False
2025-11-03T16:05:52.510 [DEBUG] [Thread-118729] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:05:52.510 [DEBUG] [Thread-118729] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:05:52.510 [DEBUG] [Thread-118729] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:05:52.510 [DEBUG] [Thread-118729] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:05:52.510 [DEBUG] [Thread-118729] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:05:52.510 [DEBUG] [Thread-118729] [transport.py] [_log()] Compression: none
2025-11-03T16:05:52.510 [DEBUG] [Thread-118729] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:05:52.524 [DEBUG] [Thread-118729] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:05:52.524 [DEBUG] [Thread-118729] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:05:52.525 [DEBUG] [Thread-118729] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:05:52.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:05:52.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:05:52.527 [DEBUG] [Thread-118729] [transport.py] [_log()] userauth is OK
2025-11-03T16:05:52.527 [DEBUG] [Thread-118729] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:05:52.527 [DEBUG] [Thread-118729] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:05:52.527 [DEBUG] [Thread-118729] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:05:52.527 [DEBUG] [Thread-118729] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:05:52.551 [INFO] [Thread-118729] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:05:52.552 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:05:53.138 [DEBUG] [Thread-118729] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:05:53.138 [DEBUG] [Thread-118729] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:05:53.138 [DEBUG] [Thread-118729] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:05:53.179 [DEBUG] [Thread-118729] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:05:53.179 [DEBUG] [Thread-118729] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:05:53.183 [DEBUG] [Thread-118729] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:05:53.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:05:53.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:05:53.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:05:53.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:05:53.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:05:53.211 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:05:53.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:05:53.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:05:53.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:05:53.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.586908 -999.00  +25.70  38.11      8  -10.30 1 1 2 1 1   888    0 36.26 -26.96 ----- 29.8 38.1 292.8 47.0 29.6 -34.1 29.4 -32.2 30.2 -33.0 30.9 -31.7
2025-11-03T16:05:53.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:05:53.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:05:53.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.586908
2025-11-03T16:05:53.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:05:53.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:05:53.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:05:53.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:05:53.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:05:53.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:05:44', tmtdew=46.69, humidity=3.74, cloud=0.0, wind=38.04, temperature=26.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:05:08.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:05:53.215 [DEBUG] [Thread-118729] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:05:53.298 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:05:53.323 [DEBUG] [Thread-118732] [transport.py] [_log()] starting thread (client mode): 0x117eb790
2025-11-03T16:05:53.323 [DEBUG] [Thread-118732] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:05:53.336 [DEBUG] [Thread-118732] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:05:53.336 [INFO] [Thread-118732] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:05:53.344 [DEBUG] [Thread-118732] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:05:53.344 [DEBUG] [Thread-118732] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:05:53.344 [DEBUG] [Thread-118732] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:05:53.345 [DEBUG] [Thread-118732] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:05:53.345 [DEBUG] [Thread-118732] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:05:53.345 [DEBUG] [Thread-118732] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:05:53.345 [DEBUG] [Thread-118732] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:05:53.345 [DEBUG] [Thread-118732] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:05:53.345 [DEBUG] [Thread-118732] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:05:53.345 [DEBUG] [Thread-118732] [transport.py] [_log()] client lang: <none>
2025-11-03T16:05:53.346 [DEBUG] [Thread-118732] [transport.py] [_log()] server lang: <none>
2025-11-03T16:05:53.346 [DEBUG] [Thread-118732] [transport.py] [_log()] kex follows: False
2025-11-03T16:05:53.346 [DEBUG] [Thread-118732] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:05:53.346 [DEBUG] [Thread-118732] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:05:53.346 [DEBUG] [Thread-118732] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:05:53.346 [DEBUG] [Thread-118732] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:05:53.347 [DEBUG] [Thread-118732] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:05:53.347 [DEBUG] [Thread-118732] [transport.py] [_log()] Compression: none
2025-11-03T16:05:53.347 [DEBUG] [Thread-118732] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:05:53.403 [DEBUG] [Thread-118732] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:05:53.404 [DEBUG] [Thread-118732] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:05:53.405 [DEBUG] [Thread-118732] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:05:53.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:05:53.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:05:53.459 [DEBUG] [Thread-118732] [transport.py] [_log()] userauth is OK
2025-11-03T16:05:53.460 [DEBUG] [Thread-118732] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:05:53.460 [DEBUG] [Thread-118732] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:05:53.460 [DEBUG] [Thread-118732] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:05:53.460 [DEBUG] [Thread-118732] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:05:53.486 [INFO] [Thread-118732] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:05:53.487 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:05:53.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:05:54.332 [DEBUG] [Thread-118732] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:05:54.333 [DEBUG] [Thread-118732] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:05:54.381 [DEBUG] [Thread-118732] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:05:54.381 [DEBUG] [Thread-118732] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:05:54.391 [DEBUG] [Thread-118732] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:05:54.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:05:54.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:05:54.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:05:54.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:05:54.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:05:54.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:05:54.429 [DEBUG] [Thread-118732] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:06:04.782 [DEBUG] [Thread-118734 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:06:11.499 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:06:11.500 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:06:19.847 [DEBUG] [Thread-118735 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:06:20.613 [DEBUG] [Thread-118736 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:06:24.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:06:24.450 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:06:24.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:06:25.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 6, 16), 46.92, 3.67, 0.0, 35.52, 26.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:06:25.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:06:16
2025-11-03T16:06:25.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:06:25.398 [DEBUG] [Thread-118737] [transport.py] [_log()] starting thread (client mode): 0xedd7d60
2025-11-03T16:06:25.399 [DEBUG] [Thread-118737] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:06:25.419 [DEBUG] [Thread-118737] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:06:25.419 [INFO] [Thread-118737] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:06:25.422 [DEBUG] [Thread-118737] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:06:25.422 [DEBUG] [Thread-118737] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:06:25.423 [DEBUG] [Thread-118737] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:06:25.423 [DEBUG] [Thread-118737] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:06:25.423 [DEBUG] [Thread-118737] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:06:25.423 [DEBUG] [Thread-118737] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:06:25.423 [DEBUG] [Thread-118737] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:06:25.423 [DEBUG] [Thread-118737] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:06:25.423 [DEBUG] [Thread-118737] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:06:25.423 [DEBUG] [Thread-118737] [transport.py] [_log()] client lang: <none>
2025-11-03T16:06:25.423 [DEBUG] [Thread-118737] [transport.py] [_log()] server lang: <none>
2025-11-03T16:06:25.423 [DEBUG] [Thread-118737] [transport.py] [_log()] kex follows: False
2025-11-03T16:06:25.423 [DEBUG] [Thread-118737] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:06:25.423 [DEBUG] [Thread-118737] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:06:25.423 [DEBUG] [Thread-118737] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:06:25.423 [DEBUG] [Thread-118737] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:06:25.423 [DEBUG] [Thread-118737] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:06:25.424 [DEBUG] [Thread-118737] [transport.py] [_log()] Compression: none
2025-11-03T16:06:25.424 [DEBUG] [Thread-118737] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:06:25.437 [DEBUG] [Thread-118737] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:06:25.438 [DEBUG] [Thread-118737] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:06:25.438 [DEBUG] [Thread-118737] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:06:25.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:06:25.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:06:25.440 [DEBUG] [Thread-118737] [transport.py] [_log()] userauth is OK
2025-11-03T16:06:25.441 [DEBUG] [Thread-118737] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:06:25.441 [DEBUG] [Thread-118737] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:06:25.441 [DEBUG] [Thread-118737] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:06:25.441 [DEBUG] [Thread-118737] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:06:25.464 [INFO] [Thread-118737] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:06:25.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:06:26.175 [DEBUG] [Thread-118737] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:06:26.175 [DEBUG] [Thread-118737] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:06:26.176 [DEBUG] [Thread-118737] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:06:26.217 [DEBUG] [Thread-118737] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:06:26.217 [DEBUG] [Thread-118737] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:06:26.220 [DEBUG] [Thread-118737] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:06:26.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:06:26.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:06:26.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:06:26.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:06:26.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:06:26.245 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:06:26.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:06:26.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:06:26.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:06:26.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.587255 -999.00  +25.90  28.66      8  -10.20 1 1 1 1 1   888    0 35.36 -32.34 ----- 26.4 28.7 286.0 44.0 29.6 -33.8 29.3 -32.5 30.0 -34.2 30.8 -32.9
2025-11-03T16:06:26.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:06:26.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:06:26.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.587255
2025-11-03T16:06:26.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:06:26.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:06:26.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:06:26.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:06:26.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:06:26.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:06:16', tmtdew=46.92, humidity=3.67, cloud=0.0, wind=35.52, temperature=26.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:05:38.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:06:26.248 [DEBUG] [Thread-118737] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:06:26.333 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:06:26.354 [DEBUG] [Thread-118740] [transport.py] [_log()] starting thread (client mode): 0x117bd3c0
2025-11-03T16:06:26.354 [DEBUG] [Thread-118740] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:06:26.369 [DEBUG] [Thread-118740] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:06:26.369 [INFO] [Thread-118740] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:06:26.377 [DEBUG] [Thread-118740] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:06:26.377 [DEBUG] [Thread-118740] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:06:26.377 [DEBUG] [Thread-118740] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:06:26.377 [DEBUG] [Thread-118740] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:06:26.377 [DEBUG] [Thread-118740] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:06:26.377 [DEBUG] [Thread-118740] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:06:26.377 [DEBUG] [Thread-118740] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:06:26.377 [DEBUG] [Thread-118740] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:06:26.377 [DEBUG] [Thread-118740] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:06:26.377 [DEBUG] [Thread-118740] [transport.py] [_log()] client lang: <none>
2025-11-03T16:06:26.377 [DEBUG] [Thread-118740] [transport.py] [_log()] server lang: <none>
2025-11-03T16:06:26.377 [DEBUG] [Thread-118740] [transport.py] [_log()] kex follows: False
2025-11-03T16:06:26.377 [DEBUG] [Thread-118740] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:06:26.377 [DEBUG] [Thread-118740] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:06:26.377 [DEBUG] [Thread-118740] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:06:26.377 [DEBUG] [Thread-118740] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:06:26.377 [DEBUG] [Thread-118740] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:06:26.377 [DEBUG] [Thread-118740] [transport.py] [_log()] Compression: none
2025-11-03T16:06:26.377 [DEBUG] [Thread-118740] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:06:26.434 [DEBUG] [Thread-118740] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:06:26.435 [DEBUG] [Thread-118740] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:06:26.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:06:26.436 [DEBUG] [Thread-118740] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:06:26.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:06:26.491 [DEBUG] [Thread-118740] [transport.py] [_log()] userauth is OK
2025-11-03T16:06:26.491 [DEBUG] [Thread-118740] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:06:26.491 [DEBUG] [Thread-118740] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:06:26.491 [DEBUG] [Thread-118740] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:06:26.491 [DEBUG] [Thread-118740] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:06:26.509 [INFO] [Thread-118740] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:06:26.510 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:06:26.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:06:27.387 [DEBUG] [Thread-118740] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:06:27.387 [DEBUG] [Thread-118740] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:06:27.436 [DEBUG] [Thread-118740] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:06:27.436 [DEBUG] [Thread-118740] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:06:27.445 [DEBUG] [Thread-118740] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:06:27.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:06:27.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:06:27.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:06:27.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:06:27.472 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:06:27.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:06:27.480 [DEBUG] [Thread-118740] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:06:34.886 [DEBUG] [Thread-118742 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:06:49.941 [DEBUG] [Thread-118743 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:06:57.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:06:57.503 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:06:57.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:06:58.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 6, 48), 46.67, 3.7, 0.0, 31.05, 26.5, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:06:58.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:06:48
2025-11-03T16:06:58.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:06:58.523 [DEBUG] [Thread-118744] [transport.py] [_log()] starting thread (client mode): 0x117be200
2025-11-03T16:06:58.523 [DEBUG] [Thread-118744] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:06:58.543 [DEBUG] [Thread-118744] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:06:58.543 [INFO] [Thread-118744] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:06:58.547 [DEBUG] [Thread-118744] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:06:58.547 [DEBUG] [Thread-118744] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:06:58.547 [DEBUG] [Thread-118744] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:06:58.547 [DEBUG] [Thread-118744] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:06:58.547 [DEBUG] [Thread-118744] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:06:58.547 [DEBUG] [Thread-118744] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:06:58.547 [DEBUG] [Thread-118744] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:06:58.547 [DEBUG] [Thread-118744] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:06:58.547 [DEBUG] [Thread-118744] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:06:58.547 [DEBUG] [Thread-118744] [transport.py] [_log()] client lang: <none>
2025-11-03T16:06:58.547 [DEBUG] [Thread-118744] [transport.py] [_log()] server lang: <none>
2025-11-03T16:06:58.547 [DEBUG] [Thread-118744] [transport.py] [_log()] kex follows: False
2025-11-03T16:06:58.547 [DEBUG] [Thread-118744] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:06:58.547 [DEBUG] [Thread-118744] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:06:58.547 [DEBUG] [Thread-118744] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:06:58.547 [DEBUG] [Thread-118744] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:06:58.548 [DEBUG] [Thread-118744] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:06:58.548 [DEBUG] [Thread-118744] [transport.py] [_log()] Compression: none
2025-11-03T16:06:58.548 [DEBUG] [Thread-118744] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:06:58.564 [DEBUG] [Thread-118744] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:06:58.564 [DEBUG] [Thread-118744] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:06:58.564 [DEBUG] [Thread-118744] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:06:58.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:06:58.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:06:58.609 [DEBUG] [Thread-118744] [transport.py] [_log()] userauth is OK
2025-11-03T16:06:58.609 [DEBUG] [Thread-118744] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:06:58.609 [DEBUG] [Thread-118744] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:06:58.609 [DEBUG] [Thread-118744] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:06:58.609 [DEBUG] [Thread-118744] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:06:58.636 [INFO] [Thread-118744] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:06:58.636 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:06:59.286 [DEBUG] [Thread-118744] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:06:59.286 [DEBUG] [Thread-118744] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:06:59.287 [DEBUG] [Thread-118744] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:06:59.327 [DEBUG] [Thread-118744] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:06:59.327 [DEBUG] [Thread-118744] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:06:59.331 [DEBUG] [Thread-118744] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:06:59.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:06:59.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:06:59.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:06:59.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:06:59.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:06:59.355 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:06:59.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:06:59.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:06:59.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:06:59.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.587603 -999.00  +26.00  33.05      8  -10.10 1 1 2 1 1   888    0 36.07 -38.68 ----- 26.7 33.0 292.6 40.8 29.5 -33.3 29.4 -32.1 30.1 -34.4 30.9 -32.3
2025-11-03T16:06:59.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:06:59.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:06:59.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.587603
2025-11-03T16:06:59.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:06:59.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:06:59.358 [DEBUG] [Thread-118744] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:06:59.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:06:59.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:06:59.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:06:59.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:06:48', tmtdew=46.67, humidity=3.7, cloud=0.0, wind=31.05, temperature=26.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:06:08.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:06:59.442 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:06:59.460 [DEBUG] [Thread-118747] [transport.py] [_log()] starting thread (client mode): 0x141d9f30
2025-11-03T16:06:59.460 [DEBUG] [Thread-118747] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:06:59.475 [DEBUG] [Thread-118747] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:06:59.476 [INFO] [Thread-118747] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:06:59.483 [DEBUG] [Thread-118747] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:06:59.484 [DEBUG] [Thread-118747] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:06:59.484 [DEBUG] [Thread-118747] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:06:59.484 [DEBUG] [Thread-118747] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:06:59.484 [DEBUG] [Thread-118747] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:06:59.485 [DEBUG] [Thread-118747] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:06:59.485 [DEBUG] [Thread-118747] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:06:59.485 [DEBUG] [Thread-118747] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:06:59.485 [DEBUG] [Thread-118747] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:06:59.485 [DEBUG] [Thread-118747] [transport.py] [_log()] client lang: <none>
2025-11-03T16:06:59.485 [DEBUG] [Thread-118747] [transport.py] [_log()] server lang: <none>
2025-11-03T16:06:59.485 [DEBUG] [Thread-118747] [transport.py] [_log()] kex follows: False
2025-11-03T16:06:59.485 [DEBUG] [Thread-118747] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:06:59.485 [DEBUG] [Thread-118747] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:06:59.485 [DEBUG] [Thread-118747] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:06:59.485 [DEBUG] [Thread-118747] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:06:59.485 [DEBUG] [Thread-118747] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:06:59.485 [DEBUG] [Thread-118747] [transport.py] [_log()] Compression: none
2025-11-03T16:06:59.485 [DEBUG] [Thread-118747] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:06:59.543 [DEBUG] [Thread-118747] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:06:59.544 [DEBUG] [Thread-118747] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:06:59.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:06:59.545 [DEBUG] [Thread-118747] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:06:59.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:06:59.599 [DEBUG] [Thread-118747] [transport.py] [_log()] userauth is OK
2025-11-03T16:06:59.599 [DEBUG] [Thread-118747] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:06:59.599 [DEBUG] [Thread-118747] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:06:59.599 [DEBUG] [Thread-118747] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:06:59.600 [DEBUG] [Thread-118747] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:06:59.620 [INFO] [Thread-118747] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:06:59.621 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:06:59.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:07:00.444 [DEBUG] [Thread-118747] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:07:00.444 [DEBUG] [Thread-118747] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:07:00.493 [DEBUG] [Thread-118747] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:07:00.493 [DEBUG] [Thread-118747] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:07:00.503 [DEBUG] [Thread-118747] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:07:00.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:07:00.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:07:00.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:07:00.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:07:00.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:07:00.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:07:00.552 [DEBUG] [Thread-118747] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:07:04.985 [DEBUG] [Thread-118749 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:07:11.640 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:07:11.641 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:07:20.061 [DEBUG] [Thread-118750 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:07:20.789 [DEBUG] [Thread-118751 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:07:30.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:07:30.569 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:07:30.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:07:31.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 7, 21), 46.8, 3.69, 0.0, 36.63, 26.75, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:07:31.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:07:21
2025-11-03T16:07:31.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:07:31.541 [DEBUG] [Thread-118752] [transport.py] [_log()] starting thread (client mode): 0x117bcb80
2025-11-03T16:07:31.541 [DEBUG] [Thread-118752] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:07:31.560 [DEBUG] [Thread-118752] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:07:31.560 [INFO] [Thread-118752] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:07:31.562 [DEBUG] [Thread-118752] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:07:31.562 [DEBUG] [Thread-118752] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:07:31.562 [DEBUG] [Thread-118752] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:07:31.562 [DEBUG] [Thread-118752] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:07:31.562 [DEBUG] [Thread-118752] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:07:31.562 [DEBUG] [Thread-118752] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:07:31.562 [DEBUG] [Thread-118752] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:07:31.562 [DEBUG] [Thread-118752] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:07:31.562 [DEBUG] [Thread-118752] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:07:31.562 [DEBUG] [Thread-118752] [transport.py] [_log()] client lang: <none>
2025-11-03T16:07:31.562 [DEBUG] [Thread-118752] [transport.py] [_log()] server lang: <none>
2025-11-03T16:07:31.562 [DEBUG] [Thread-118752] [transport.py] [_log()] kex follows: False
2025-11-03T16:07:31.562 [DEBUG] [Thread-118752] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:07:31.562 [DEBUG] [Thread-118752] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:07:31.562 [DEBUG] [Thread-118752] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:07:31.562 [DEBUG] [Thread-118752] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:07:31.562 [DEBUG] [Thread-118752] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:07:31.562 [DEBUG] [Thread-118752] [transport.py] [_log()] Compression: none
2025-11-03T16:07:31.562 [DEBUG] [Thread-118752] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:07:31.572 [DEBUG] [Thread-118752] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:07:31.572 [DEBUG] [Thread-118752] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:07:31.572 [DEBUG] [Thread-118752] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:07:31.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:07:31.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:07:31.574 [DEBUG] [Thread-118752] [transport.py] [_log()] userauth is OK
2025-11-03T16:07:31.574 [DEBUG] [Thread-118752] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:07:31.574 [DEBUG] [Thread-118752] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:07:31.574 [DEBUG] [Thread-118752] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:07:31.574 [DEBUG] [Thread-118752] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:07:31.589 [INFO] [Thread-118752] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:07:31.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:07:32.250 [DEBUG] [Thread-118752] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:07:32.250 [DEBUG] [Thread-118752] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:07:32.251 [DEBUG] [Thread-118752] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:07:32.291 [DEBUG] [Thread-118752] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:07:32.291 [DEBUG] [Thread-118752] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:07:32.294 [DEBUG] [Thread-118752] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:07:32.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:07:32.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:07:32.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:07:32.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:07:32.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:07:32.319 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:07:32.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:07:32.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:07:32.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:07:32.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.587950 -999.00  +26.20  34.30      8  -10.00 1 1 2 1 1   888    0 36.62 -40.51 ----- 41.0 34.3 299.4 46.1 29.6 -32.4 29.4 -33.2 30.2 -33.3 30.9 -32.8
2025-11-03T16:07:32.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:07:32.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:07:32.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.587950
2025-11-03T16:07:32.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:07:32.322 [DEBUG] [Thread-118752] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:07:32.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:07:32.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:07:32.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:07:32.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:07:32.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:07:21', tmtdew=46.8, humidity=3.69, cloud=0.0, wind=36.63, temperature=26.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:06:38.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:07:32.407 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:07:32.428 [DEBUG] [Thread-118755] [transport.py] [_log()] starting thread (client mode): 0x117e9330
2025-11-03T16:07:32.428 [DEBUG] [Thread-118755] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:07:32.443 [DEBUG] [Thread-118755] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:07:32.443 [INFO] [Thread-118755] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:07:32.454 [DEBUG] [Thread-118755] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:07:32.454 [DEBUG] [Thread-118755] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:07:32.454 [DEBUG] [Thread-118755] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:07:32.454 [DEBUG] [Thread-118755] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:07:32.454 [DEBUG] [Thread-118755] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:07:32.454 [DEBUG] [Thread-118755] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:07:32.454 [DEBUG] [Thread-118755] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:07:32.455 [DEBUG] [Thread-118755] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:07:32.455 [DEBUG] [Thread-118755] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:07:32.455 [DEBUG] [Thread-118755] [transport.py] [_log()] client lang: <none>
2025-11-03T16:07:32.455 [DEBUG] [Thread-118755] [transport.py] [_log()] server lang: <none>
2025-11-03T16:07:32.455 [DEBUG] [Thread-118755] [transport.py] [_log()] kex follows: False
2025-11-03T16:07:32.455 [DEBUG] [Thread-118755] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:07:32.455 [DEBUG] [Thread-118755] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:07:32.455 [DEBUG] [Thread-118755] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:07:32.455 [DEBUG] [Thread-118755] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:07:32.455 [DEBUG] [Thread-118755] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:07:32.455 [DEBUG] [Thread-118755] [transport.py] [_log()] Compression: none
2025-11-03T16:07:32.455 [DEBUG] [Thread-118755] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:07:32.518 [DEBUG] [Thread-118755] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:07:32.519 [DEBUG] [Thread-118755] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:07:32.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:07:32.520 [DEBUG] [Thread-118755] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:07:32.521 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:07:32.578 [DEBUG] [Thread-118755] [transport.py] [_log()] userauth is OK
2025-11-03T16:07:32.579 [DEBUG] [Thread-118755] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:07:32.579 [DEBUG] [Thread-118755] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:07:32.579 [DEBUG] [Thread-118755] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:07:32.579 [DEBUG] [Thread-118755] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:07:32.598 [INFO] [Thread-118755] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:07:32.598 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:07:32.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:07:33.423 [DEBUG] [Thread-118755] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:07:33.423 [DEBUG] [Thread-118755] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:07:33.471 [DEBUG] [Thread-118755] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:07:33.472 [DEBUG] [Thread-118755] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:07:33.481 [DEBUG] [Thread-118755] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:07:33.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:07:33.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:07:33.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:07:33.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:07:33.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:07:33.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:07:33.528 [DEBUG] [Thread-118755] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:07:35.104 [DEBUG] [Thread-118757 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:07:50.175 [DEBUG] [Thread-118758 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:08:03.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:08:03.550 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:08:03.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:08:04.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 7, 53), 47.08, 3.67, 0.0, 37.9, 26.76, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:08:04.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:07:53
2025-11-03T16:08:04.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:08:04.528 [DEBUG] [Thread-118759] [transport.py] [_log()] starting thread (client mode): 0x117e8790
2025-11-03T16:08:04.529 [DEBUG] [Thread-118759] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:08:04.542 [DEBUG] [Thread-118759] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:08:04.543 [INFO] [Thread-118759] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:08:04.546 [DEBUG] [Thread-118759] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:08:04.546 [DEBUG] [Thread-118759] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:08:04.546 [DEBUG] [Thread-118759] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:08:04.546 [DEBUG] [Thread-118759] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:08:04.546 [DEBUG] [Thread-118759] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:08:04.547 [DEBUG] [Thread-118759] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:08:04.547 [DEBUG] [Thread-118759] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:08:04.547 [DEBUG] [Thread-118759] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:08:04.547 [DEBUG] [Thread-118759] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:08:04.547 [DEBUG] [Thread-118759] [transport.py] [_log()] client lang: <none>
2025-11-03T16:08:04.547 [DEBUG] [Thread-118759] [transport.py] [_log()] server lang: <none>
2025-11-03T16:08:04.547 [DEBUG] [Thread-118759] [transport.py] [_log()] kex follows: False
2025-11-03T16:08:04.547 [DEBUG] [Thread-118759] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:08:04.547 [DEBUG] [Thread-118759] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:08:04.547 [DEBUG] [Thread-118759] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:08:04.547 [DEBUG] [Thread-118759] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:08:04.547 [DEBUG] [Thread-118759] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:08:04.547 [DEBUG] [Thread-118759] [transport.py] [_log()] Compression: none
2025-11-03T16:08:04.547 [DEBUG] [Thread-118759] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:08:04.566 [DEBUG] [Thread-118759] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:08:04.567 [DEBUG] [Thread-118759] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:08:04.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:08:04.568 [DEBUG] [Thread-118759] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:08:04.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:08:04.609 [DEBUG] [Thread-118759] [transport.py] [_log()] userauth is OK
2025-11-03T16:08:04.609 [DEBUG] [Thread-118759] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:08:04.610 [DEBUG] [Thread-118759] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:08:04.610 [DEBUG] [Thread-118759] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:08:04.610 [DEBUG] [Thread-118759] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:08:04.648 [INFO] [Thread-118759] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:08:04.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:08:05.229 [DEBUG] [Thread-118761 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:08:05.322 [DEBUG] [Thread-118759] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:08:05.323 [DEBUG] [Thread-118759] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:08:05.324 [DEBUG] [Thread-118759] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:08:05.364 [DEBUG] [Thread-118759] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:08:05.364 [DEBUG] [Thread-118759] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:08:05.368 [DEBUG] [Thread-118759] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:08:05.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:08:05.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:08:05.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:08:05.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:08:05.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:08:05.394 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:08:05.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:08:05.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:08:05.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:08:05.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.588297 -999.00  +25.70  39.51      8  -10.30 1 1 2 1 1   888    0 35.23 -42.16 ----- 35.4 39.5 294.0 46.1 29.4 -34.9 29.2 -32.7 30.0 -32.3 30.7 -32.3
2025-11-03T16:08:05.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:08:05.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:08:05.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.588297
2025-11-03T16:08:05.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:08:05.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:08:05.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:08:05.397 [DEBUG] [Thread-118759] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:08:05.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:08:05.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:08:05.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:07:53', tmtdew=47.08, humidity=3.67, cloud=0.0, wind=37.9, temperature=26.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:07:08.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:08:05.480 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:08:05.499 [DEBUG] [Thread-118763] [transport.py] [_log()] starting thread (client mode): 0x1174c490
2025-11-03T16:08:05.499 [DEBUG] [Thread-118763] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:08:05.514 [DEBUG] [Thread-118763] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:08:05.515 [INFO] [Thread-118763] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:08:05.522 [DEBUG] [Thread-118763] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:08:05.522 [DEBUG] [Thread-118763] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:08:05.522 [DEBUG] [Thread-118763] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:08:05.522 [DEBUG] [Thread-118763] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:08:05.522 [DEBUG] [Thread-118763] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:08:05.522 [DEBUG] [Thread-118763] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:08:05.523 [DEBUG] [Thread-118763] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:08:05.523 [DEBUG] [Thread-118763] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:08:05.523 [DEBUG] [Thread-118763] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:08:05.523 [DEBUG] [Thread-118763] [transport.py] [_log()] client lang: <none>
2025-11-03T16:08:05.523 [DEBUG] [Thread-118763] [transport.py] [_log()] server lang: <none>
2025-11-03T16:08:05.523 [DEBUG] [Thread-118763] [transport.py] [_log()] kex follows: False
2025-11-03T16:08:05.523 [DEBUG] [Thread-118763] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:08:05.523 [DEBUG] [Thread-118763] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:08:05.523 [DEBUG] [Thread-118763] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:08:05.524 [DEBUG] [Thread-118763] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:08:05.524 [DEBUG] [Thread-118763] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:08:05.524 [DEBUG] [Thread-118763] [transport.py] [_log()] Compression: none
2025-11-03T16:08:05.524 [DEBUG] [Thread-118763] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:08:05.581 [DEBUG] [Thread-118763] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:08:05.581 [DEBUG] [Thread-118763] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:08:05.581 [DEBUG] [Thread-118763] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:08:05.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:08:05.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:08:05.638 [DEBUG] [Thread-118763] [transport.py] [_log()] userauth is OK
2025-11-03T16:08:05.638 [DEBUG] [Thread-118763] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:08:05.638 [DEBUG] [Thread-118763] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:08:05.639 [DEBUG] [Thread-118763] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:08:05.639 [DEBUG] [Thread-118763] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:08:05.657 [INFO] [Thread-118763] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:08:05.657 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:08:05.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:08:06.528 [DEBUG] [Thread-118763] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:08:06.528 [DEBUG] [Thread-118763] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:08:06.575 [DEBUG] [Thread-118763] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:08:06.576 [DEBUG] [Thread-118763] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:08:06.584 [DEBUG] [Thread-118763] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:08:06.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:08:06.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:08:06.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:08:06.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:08:06.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:08:06.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:08:06.619 [DEBUG] [Thread-118763] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:08:11.793 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:08:11.795 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:08:20.275 [DEBUG] [Thread-118765 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:08:20.880 [DEBUG] [Thread-118766 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:08:35.341 [DEBUG] [Thread-118767 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:08:36.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:08:36.641 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:08:36.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:08:37.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 8, 25), 46.64, 3.77, 0.0, 39.22, 26.43, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:08:37.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:08:25
2025-11-03T16:08:37.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:08:37.696 [DEBUG] [Thread-118768] [transport.py] [_log()] starting thread (client mode): 0x117ead70
2025-11-03T16:08:37.696 [DEBUG] [Thread-118768] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:08:37.707 [DEBUG] [Thread-118768] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:08:37.707 [INFO] [Thread-118768] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:08:37.709 [DEBUG] [Thread-118768] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:08:37.709 [DEBUG] [Thread-118768] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:08:37.709 [DEBUG] [Thread-118768] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:08:37.709 [DEBUG] [Thread-118768] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:08:37.709 [DEBUG] [Thread-118768] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:08:37.709 [DEBUG] [Thread-118768] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:08:37.709 [DEBUG] [Thread-118768] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:08:37.709 [DEBUG] [Thread-118768] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:08:37.709 [DEBUG] [Thread-118768] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:08:37.709 [DEBUG] [Thread-118768] [transport.py] [_log()] client lang: <none>
2025-11-03T16:08:37.709 [DEBUG] [Thread-118768] [transport.py] [_log()] server lang: <none>
2025-11-03T16:08:37.709 [DEBUG] [Thread-118768] [transport.py] [_log()] kex follows: False
2025-11-03T16:08:37.709 [DEBUG] [Thread-118768] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:08:37.709 [DEBUG] [Thread-118768] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:08:37.709 [DEBUG] [Thread-118768] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:08:37.709 [DEBUG] [Thread-118768] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:08:37.709 [DEBUG] [Thread-118768] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:08:37.709 [DEBUG] [Thread-118768] [transport.py] [_log()] Compression: none
2025-11-03T16:08:37.709 [DEBUG] [Thread-118768] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:08:37.716 [DEBUG] [Thread-118768] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:08:37.716 [DEBUG] [Thread-118768] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:08:37.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:08:37.716 [DEBUG] [Thread-118768] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:08:37.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:08:37.717 [DEBUG] [Thread-118768] [transport.py] [_log()] userauth is OK
2025-11-03T16:08:37.717 [DEBUG] [Thread-118768] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:08:37.717 [DEBUG] [Thread-118768] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:08:37.717 [DEBUG] [Thread-118768] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:08:37.717 [DEBUG] [Thread-118768] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:08:37.726 [INFO] [Thread-118768] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:08:37.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:08:38.373 [DEBUG] [Thread-118768] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:08:38.373 [DEBUG] [Thread-118768] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:08:38.373 [DEBUG] [Thread-118768] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:08:38.414 [DEBUG] [Thread-118768] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:08:38.415 [DEBUG] [Thread-118768] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:08:38.417 [DEBUG] [Thread-118768] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:08:38.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:08:38.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:08:38.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:08:38.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:08:38.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:08:38.433 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:08:38.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:08:38.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:08:38.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:08:38.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.588644 -999.00  +25.60  36.60      8  -10.40 1 1 2 1 1   888    0 35.33 -46.35 ----- 35.9 36.6 301.4 42.5 29.4 -33.7 29.1 -33.1 30.0 -31.8 30.6 -32.4
2025-11-03T16:08:38.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:08:38.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:08:38.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.588644
2025-11-03T16:08:38.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:08:38.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:08:38.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:08:38.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:08:38.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:08:38.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:08:25', tmtdew=46.64, humidity=3.77, cloud=0.0, wind=39.22, temperature=26.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:07:38.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:08:38.434 [DEBUG] [Thread-118768] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:08:38.508 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:08:38.530 [DEBUG] [Thread-118771] [transport.py] [_log()] starting thread (client mode): 0x117e9090
2025-11-03T16:08:38.530 [DEBUG] [Thread-118771] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:08:38.548 [DEBUG] [Thread-118771] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:08:38.548 [INFO] [Thread-118771] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:08:38.556 [DEBUG] [Thread-118771] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:08:38.556 [DEBUG] [Thread-118771] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:08:38.556 [DEBUG] [Thread-118771] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:08:38.556 [DEBUG] [Thread-118771] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:08:38.556 [DEBUG] [Thread-118771] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:08:38.556 [DEBUG] [Thread-118771] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:08:38.556 [DEBUG] [Thread-118771] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:08:38.556 [DEBUG] [Thread-118771] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:08:38.556 [DEBUG] [Thread-118771] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:08:38.556 [DEBUG] [Thread-118771] [transport.py] [_log()] client lang: <none>
2025-11-03T16:08:38.556 [DEBUG] [Thread-118771] [transport.py] [_log()] server lang: <none>
2025-11-03T16:08:38.556 [DEBUG] [Thread-118771] [transport.py] [_log()] kex follows: False
2025-11-03T16:08:38.556 [DEBUG] [Thread-118771] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:08:38.556 [DEBUG] [Thread-118771] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:08:38.556 [DEBUG] [Thread-118771] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:08:38.556 [DEBUG] [Thread-118771] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:08:38.556 [DEBUG] [Thread-118771] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:08:38.556 [DEBUG] [Thread-118771] [transport.py] [_log()] Compression: none
2025-11-03T16:08:38.556 [DEBUG] [Thread-118771] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:08:38.612 [DEBUG] [Thread-118771] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:08:38.612 [DEBUG] [Thread-118771] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:08:38.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:08:38.613 [DEBUG] [Thread-118771] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:08:38.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:08:38.674 [DEBUG] [Thread-118771] [transport.py] [_log()] userauth is OK
2025-11-03T16:08:38.674 [DEBUG] [Thread-118771] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:08:38.674 [DEBUG] [Thread-118771] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:08:38.674 [DEBUG] [Thread-118771] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:08:38.674 [DEBUG] [Thread-118771] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:08:38.688 [INFO] [Thread-118771] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:08:38.688 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:08:38.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:08:39.519 [DEBUG] [Thread-118771] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:08:39.519 [DEBUG] [Thread-118771] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:08:39.568 [DEBUG] [Thread-118771] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:08:39.568 [DEBUG] [Thread-118771] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:08:39.576 [DEBUG] [Thread-118771] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:08:39.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:08:39.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:08:39.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:08:39.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:08:39.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:08:39.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:08:39.607 [DEBUG] [Thread-118771] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:08:50.384 [DEBUG] [Thread-118773 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:09:05.467 [DEBUG] [Thread-118774 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:09:09.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:09:09.605 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:09:09.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:09:10.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 8, 58), 46.66, 3.79, 0.0, 30.01, 26.62, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:09:10.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:08:58
2025-11-03T16:09:10.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:09:10.695 [DEBUG] [Thread-118775] [transport.py] [_log()] starting thread (client mode): 0x141dab60
2025-11-03T16:09:10.695 [DEBUG] [Thread-118775] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:09:10.717 [DEBUG] [Thread-118775] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:09:10.718 [INFO] [Thread-118775] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:09:10.720 [DEBUG] [Thread-118775] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:09:10.721 [DEBUG] [Thread-118775] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:09:10.721 [DEBUG] [Thread-118775] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:09:10.721 [DEBUG] [Thread-118775] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:09:10.721 [DEBUG] [Thread-118775] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:09:10.721 [DEBUG] [Thread-118775] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:09:10.721 [DEBUG] [Thread-118775] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:09:10.721 [DEBUG] [Thread-118775] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:09:10.721 [DEBUG] [Thread-118775] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:09:10.721 [DEBUG] [Thread-118775] [transport.py] [_log()] client lang: <none>
2025-11-03T16:09:10.721 [DEBUG] [Thread-118775] [transport.py] [_log()] server lang: <none>
2025-11-03T16:09:10.721 [DEBUG] [Thread-118775] [transport.py] [_log()] kex follows: False
2025-11-03T16:09:10.721 [DEBUG] [Thread-118775] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:09:10.721 [DEBUG] [Thread-118775] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:09:10.721 [DEBUG] [Thread-118775] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:09:10.721 [DEBUG] [Thread-118775] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:09:10.721 [DEBUG] [Thread-118775] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:09:10.721 [DEBUG] [Thread-118775] [transport.py] [_log()] Compression: none
2025-11-03T16:09:10.721 [DEBUG] [Thread-118775] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:09:10.740 [DEBUG] [Thread-118775] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:09:10.740 [DEBUG] [Thread-118775] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:09:10.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:09:10.741 [DEBUG] [Thread-118775] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:09:10.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:09:10.752 [DEBUG] [Thread-118775] [transport.py] [_log()] userauth is OK
2025-11-03T16:09:10.752 [DEBUG] [Thread-118775] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:09:10.752 [DEBUG] [Thread-118775] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:09:10.753 [DEBUG] [Thread-118775] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:09:10.753 [DEBUG] [Thread-118775] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:09:10.777 [INFO] [Thread-118775] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:09:10.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:09:11.402 [DEBUG] [Thread-118775] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:09:11.402 [DEBUG] [Thread-118775] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:09:11.402 [DEBUG] [Thread-118775] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:09:11.443 [DEBUG] [Thread-118775] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:09:11.443 [DEBUG] [Thread-118775] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:09:11.445 [DEBUG] [Thread-118775] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:09:11.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:09:11.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:09:11.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:09:11.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:09:11.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:09:11.458 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:09:11.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:09:11.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:09:11.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:09:11.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.589339 -999.00  +25.40  33.93      8  -10.20 1 1 2 1 1   888    0 36.27 -54.97 ----- 27.0 33.9 289.6 40.2 29.3 -33.0 29.1 -32.6 30.0 -31.9 30.6 -31.5
2025-11-03T16:09:11.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:09:11.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:09:11.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.589339
2025-11-03T16:09:11.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:09:11.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:09:11.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:09:11.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:09:11.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:09:11.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:08:58', tmtdew=46.66, humidity=3.79, cloud=0.0, wind=30.01, temperature=26.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:08:38.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:09:11.459 [DEBUG] [Thread-118775] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:09:11.535 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:09:11.555 [DEBUG] [Thread-118778] [transport.py] [_log()] starting thread (client mode): 0x117bd4e0
2025-11-03T16:09:11.555 [DEBUG] [Thread-118778] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:09:11.571 [DEBUG] [Thread-118778] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:09:11.571 [INFO] [Thread-118778] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:09:11.579 [DEBUG] [Thread-118778] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:09:11.579 [DEBUG] [Thread-118778] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:09:11.579 [DEBUG] [Thread-118778] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:09:11.579 [DEBUG] [Thread-118778] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:09:11.579 [DEBUG] [Thread-118778] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:09:11.579 [DEBUG] [Thread-118778] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:09:11.579 [DEBUG] [Thread-118778] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:09:11.579 [DEBUG] [Thread-118778] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:09:11.579 [DEBUG] [Thread-118778] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:09:11.579 [DEBUG] [Thread-118778] [transport.py] [_log()] client lang: <none>
2025-11-03T16:09:11.580 [DEBUG] [Thread-118778] [transport.py] [_log()] server lang: <none>
2025-11-03T16:09:11.580 [DEBUG] [Thread-118778] [transport.py] [_log()] kex follows: False
2025-11-03T16:09:11.580 [DEBUG] [Thread-118778] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:09:11.580 [DEBUG] [Thread-118778] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:09:11.580 [DEBUG] [Thread-118778] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:09:11.580 [DEBUG] [Thread-118778] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:09:11.580 [DEBUG] [Thread-118778] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:09:11.580 [DEBUG] [Thread-118778] [transport.py] [_log()] Compression: none
2025-11-03T16:09:11.580 [DEBUG] [Thread-118778] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:09:11.637 [DEBUG] [Thread-118778] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:09:11.638 [DEBUG] [Thread-118778] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:09:11.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:09:11.639 [DEBUG] [Thread-118778] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:09:11.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:09:11.697 [DEBUG] [Thread-118778] [transport.py] [_log()] userauth is OK
2025-11-03T16:09:11.697 [DEBUG] [Thread-118778] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:09:11.698 [DEBUG] [Thread-118778] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:09:11.698 [DEBUG] [Thread-118778] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:09:11.698 [DEBUG] [Thread-118778] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:09:11.717 [INFO] [Thread-118778] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:09:11.717 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:09:11.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:09:11.936 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:09:11.937 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:09:12.551 [DEBUG] [Thread-118778] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:09:12.551 [DEBUG] [Thread-118778] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:09:12.599 [DEBUG] [Thread-118778] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:09:12.599 [DEBUG] [Thread-118778] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:09:12.607 [DEBUG] [Thread-118778] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:09:12.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:09:12.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:09:12.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:09:12.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:09:12.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:09:12.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:09:12.648 [DEBUG] [Thread-118778] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:09:20.508 [DEBUG] [Thread-118780 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:09:21.006 [DEBUG] [Thread-118781 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:09:35.585 [DEBUG] [Thread-118782 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:09:42.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:09:42.659 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:09:42.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:09:43.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 9, 30), 46.25, 3.9, 0.0, 27.08, 26.47, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:09:43.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:09:30
2025-11-03T16:09:43.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:09:43.705 [DEBUG] [Thread-118783] [transport.py] [_log()] starting thread (client mode): 0xed8b790
2025-11-03T16:09:43.705 [DEBUG] [Thread-118783] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:09:43.726 [DEBUG] [Thread-118783] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:09:43.727 [INFO] [Thread-118783] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:09:43.730 [DEBUG] [Thread-118783] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:09:43.730 [DEBUG] [Thread-118783] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:09:43.730 [DEBUG] [Thread-118783] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:09:43.731 [DEBUG] [Thread-118783] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:09:43.731 [DEBUG] [Thread-118783] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:09:43.731 [DEBUG] [Thread-118783] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:09:43.731 [DEBUG] [Thread-118783] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:09:43.731 [DEBUG] [Thread-118783] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:09:43.731 [DEBUG] [Thread-118783] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:09:43.731 [DEBUG] [Thread-118783] [transport.py] [_log()] client lang: <none>
2025-11-03T16:09:43.731 [DEBUG] [Thread-118783] [transport.py] [_log()] server lang: <none>
2025-11-03T16:09:43.731 [DEBUG] [Thread-118783] [transport.py] [_log()] kex follows: False
2025-11-03T16:09:43.732 [DEBUG] [Thread-118783] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:09:43.732 [DEBUG] [Thread-118783] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:09:43.732 [DEBUG] [Thread-118783] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:09:43.732 [DEBUG] [Thread-118783] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:09:43.732 [DEBUG] [Thread-118783] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:09:43.732 [DEBUG] [Thread-118783] [transport.py] [_log()] Compression: none
2025-11-03T16:09:43.732 [DEBUG] [Thread-118783] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:09:43.751 [DEBUG] [Thread-118783] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:09:43.751 [DEBUG] [Thread-118783] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:09:43.752 [DEBUG] [Thread-118783] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:09:43.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:09:43.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:09:43.755 [DEBUG] [Thread-118783] [transport.py] [_log()] userauth is OK
2025-11-03T16:09:43.755 [DEBUG] [Thread-118783] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:09:43.755 [DEBUG] [Thread-118783] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:09:43.755 [DEBUG] [Thread-118783] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:09:43.755 [DEBUG] [Thread-118783] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:09:43.771 [INFO] [Thread-118783] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:09:43.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:09:44.514 [DEBUG] [Thread-118783] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:09:44.514 [DEBUG] [Thread-118783] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:09:44.514 [DEBUG] [Thread-118783] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:09:44.555 [DEBUG] [Thread-118783] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:09:44.555 [DEBUG] [Thread-118783] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:09:44.559 [DEBUG] [Thread-118783] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:09:44.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:09:44.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:09:44.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:09:44.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:09:44.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:09:44.595 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:09:44.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:09:44.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:09:44.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:09:44.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.589686 -999.00  +25.50  22.82      8  -10.00 1 1 1 1 1   888    0 34.81 -58.14 ----- 22.7 22.8 303.0 32.6 29.2 -32.8 29.1 -31.7 29.9 -31.9 30.5 -31.5
2025-11-03T16:09:44.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:09:44.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:09:44.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.589686
2025-11-03T16:09:44.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:09:44.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:09:44.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:09:44.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:09:44.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:09:44.599 [DEBUG] [Thread-118783] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:09:44.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:09:30', tmtdew=46.25, humidity=3.9, cloud=0.0, wind=27.08, temperature=26.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:09:08.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:09:44.682 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:09:44.705 [DEBUG] [Thread-118786] [transport.py] [_log()] starting thread (client mode): 0xed2e170
2025-11-03T16:09:44.705 [DEBUG] [Thread-118786] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:09:44.720 [DEBUG] [Thread-118786] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:09:44.720 [INFO] [Thread-118786] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:09:44.728 [DEBUG] [Thread-118786] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:09:44.729 [DEBUG] [Thread-118786] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:09:44.729 [DEBUG] [Thread-118786] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:09:44.729 [DEBUG] [Thread-118786] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:09:44.729 [DEBUG] [Thread-118786] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:09:44.729 [DEBUG] [Thread-118786] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:09:44.729 [DEBUG] [Thread-118786] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:09:44.730 [DEBUG] [Thread-118786] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:09:44.730 [DEBUG] [Thread-118786] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:09:44.730 [DEBUG] [Thread-118786] [transport.py] [_log()] client lang: <none>
2025-11-03T16:09:44.730 [DEBUG] [Thread-118786] [transport.py] [_log()] server lang: <none>
2025-11-03T16:09:44.730 [DEBUG] [Thread-118786] [transport.py] [_log()] kex follows: False
2025-11-03T16:09:44.730 [DEBUG] [Thread-118786] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:09:44.730 [DEBUG] [Thread-118786] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:09:44.730 [DEBUG] [Thread-118786] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:09:44.730 [DEBUG] [Thread-118786] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:09:44.730 [DEBUG] [Thread-118786] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:09:44.730 [DEBUG] [Thread-118786] [transport.py] [_log()] Compression: none
2025-11-03T16:09:44.730 [DEBUG] [Thread-118786] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:09:44.789 [DEBUG] [Thread-118786] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:09:44.789 [DEBUG] [Thread-118786] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:09:44.790 [DEBUG] [Thread-118786] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:09:44.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:09:44.791 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:09:44.844 [DEBUG] [Thread-118786] [transport.py] [_log()] userauth is OK
2025-11-03T16:09:44.845 [DEBUG] [Thread-118786] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:09:44.845 [DEBUG] [Thread-118786] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:09:44.845 [DEBUG] [Thread-118786] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:09:44.845 [DEBUG] [Thread-118786] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:09:44.860 [INFO] [Thread-118786] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:09:44.860 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:09:44.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:09:45.691 [DEBUG] [Thread-118786] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:09:45.691 [DEBUG] [Thread-118786] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:09:45.743 [DEBUG] [Thread-118786] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:09:45.743 [DEBUG] [Thread-118786] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:09:45.755 [DEBUG] [Thread-118786] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:09:45.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:09:45.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:09:45.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:09:45.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:09:45.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:09:45.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:09:45.792 [DEBUG] [Thread-118786] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:09:50.630 [DEBUG] [Thread-118788 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:10:05.683 [DEBUG] [Thread-118789 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:10:12.077 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:10:12.078 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:10:15.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:10:15.785 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:10:15.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:10:16.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 10, 2), 46.4, 3.87, 0.0, 30.35, 26.6, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:10:16.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:10:02
2025-11-03T16:10:16.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:10:16.818 [DEBUG] [Thread-118790] [transport.py] [_log()] starting thread (client mode): 0x141db460
2025-11-03T16:10:16.818 [DEBUG] [Thread-118790] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:10:16.839 [DEBUG] [Thread-118790] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:10:16.839 [INFO] [Thread-118790] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:10:16.842 [DEBUG] [Thread-118790] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:10:16.842 [DEBUG] [Thread-118790] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:10:16.843 [DEBUG] [Thread-118790] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:10:16.843 [DEBUG] [Thread-118790] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:10:16.843 [DEBUG] [Thread-118790] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:10:16.843 [DEBUG] [Thread-118790] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:10:16.843 [DEBUG] [Thread-118790] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:10:16.843 [DEBUG] [Thread-118790] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:10:16.843 [DEBUG] [Thread-118790] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:10:16.843 [DEBUG] [Thread-118790] [transport.py] [_log()] client lang: <none>
2025-11-03T16:10:16.844 [DEBUG] [Thread-118790] [transport.py] [_log()] server lang: <none>
2025-11-03T16:10:16.844 [DEBUG] [Thread-118790] [transport.py] [_log()] kex follows: False
2025-11-03T16:10:16.844 [DEBUG] [Thread-118790] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:10:16.844 [DEBUG] [Thread-118790] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:10:16.844 [DEBUG] [Thread-118790] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:10:16.844 [DEBUG] [Thread-118790] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:10:16.844 [DEBUG] [Thread-118790] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:10:16.845 [DEBUG] [Thread-118790] [transport.py] [_log()] Compression: none
2025-11-03T16:10:16.845 [DEBUG] [Thread-118790] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:10:16.873 [DEBUG] [Thread-118790] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:10:16.874 [DEBUG] [Thread-118790] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:10:16.874 [DEBUG] [Thread-118790] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:10:16.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:10:16.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:10:16.876 [DEBUG] [Thread-118790] [transport.py] [_log()] userauth is OK
2025-11-03T16:10:16.877 [DEBUG] [Thread-118790] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:10:16.877 [DEBUG] [Thread-118790] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:10:16.877 [DEBUG] [Thread-118790] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:10:16.877 [DEBUG] [Thread-118790] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:10:16.913 [INFO] [Thread-118790] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:10:16.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:10:19.854 [DEBUG] [Thread-118790] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:10:19.854 [DEBUG] [Thread-118790] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:10:19.855 [DEBUG] [Thread-118790] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:10:19.887 [DEBUG] [Thread-118790] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:10:19.887 [DEBUG] [Thread-118790] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:10:19.890 [DEBUG] [Thread-118790] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:10:19.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:10:19.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:10:19.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:10:19.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:10:20.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:10:20.083 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:10:20.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:10:20.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:10:20.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:10:20.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.590033 -999.00  +25.70  24.98      8  -10.10 1 1 1 1 1   888    0 34.49 -63.04 ----- 21.9 25.0 295.0 30.1 29.3 -32.5 29.1 -31.4 30.0 -30.8 30.6 -31.4
2025-11-03T16:10:20.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:10:20.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:10:20.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.590033
2025-11-03T16:10:20.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:10:20.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:10:20.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:10:20.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:10:20.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:10:20.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:10:02', tmtdew=46.4, humidity=3.87, cloud=0.0, wind=30.35, temperature=26.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:09:38.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:10:20.087 [DEBUG] [Thread-118790] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:10:20.171 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:10:20.191 [DEBUG] [Thread-118793] [transport.py] [_log()] starting thread (client mode): 0x117bd8d0
2025-11-03T16:10:20.191 [DEBUG] [Thread-118793] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:10:20.206 [DEBUG] [Thread-118793] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:10:20.206 [INFO] [Thread-118793] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:10:20.214 [DEBUG] [Thread-118793] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:10:20.214 [DEBUG] [Thread-118793] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:10:20.214 [DEBUG] [Thread-118793] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:10:20.214 [DEBUG] [Thread-118793] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:10:20.214 [DEBUG] [Thread-118793] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:10:20.214 [DEBUG] [Thread-118793] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:10:20.214 [DEBUG] [Thread-118793] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:10:20.214 [DEBUG] [Thread-118793] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:10:20.214 [DEBUG] [Thread-118793] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:10:20.214 [DEBUG] [Thread-118793] [transport.py] [_log()] client lang: <none>
2025-11-03T16:10:20.214 [DEBUG] [Thread-118793] [transport.py] [_log()] server lang: <none>
2025-11-03T16:10:20.215 [DEBUG] [Thread-118793] [transport.py] [_log()] kex follows: False
2025-11-03T16:10:20.215 [DEBUG] [Thread-118793] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:10:20.215 [DEBUG] [Thread-118793] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:10:20.215 [DEBUG] [Thread-118793] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:10:20.215 [DEBUG] [Thread-118793] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:10:20.215 [DEBUG] [Thread-118793] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:10:20.215 [DEBUG] [Thread-118793] [transport.py] [_log()] Compression: none
2025-11-03T16:10:20.215 [DEBUG] [Thread-118793] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:10:20.272 [DEBUG] [Thread-118793] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:10:20.273 [DEBUG] [Thread-118793] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:10:20.273 [DEBUG] [Thread-118793] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:10:20.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:10:20.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:10:20.328 [DEBUG] [Thread-118793] [transport.py] [_log()] userauth is OK
2025-11-03T16:10:20.328 [DEBUG] [Thread-118793] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:10:20.328 [DEBUG] [Thread-118793] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:10:20.328 [DEBUG] [Thread-118793] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:10:20.328 [DEBUG] [Thread-118793] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:10:20.347 [INFO] [Thread-118793] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:10:20.347 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:10:20.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:10:20.725 [DEBUG] [Thread-118795 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:10:21.073 [DEBUG] [Thread-118796 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:10:21.179 [DEBUG] [Thread-118793] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:10:21.180 [DEBUG] [Thread-118793] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:10:21.228 [DEBUG] [Thread-118793] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:10:21.228 [DEBUG] [Thread-118793] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:10:21.237 [DEBUG] [Thread-118793] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:10:21.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:10:21.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:10:21.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:10:21.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:10:21.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:10:21.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:10:21.276 [DEBUG] [Thread-118793] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:10:35.789 [DEBUG] [Thread-118797 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:10:50.826 [DEBUG] [Thread-118798 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:10:51.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:10:51.298 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:10:51.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:10:51.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 10, 35), 46.34, 3.8, 0.0, 33.26, 26.87, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:10:51.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:10:35
2025-11-03T16:10:52.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:10:52.270 [DEBUG] [Thread-118799] [transport.py] [_log()] starting thread (client mode): 0xedd6dd0
2025-11-03T16:10:52.271 [DEBUG] [Thread-118799] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:10:52.290 [DEBUG] [Thread-118799] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:10:52.291 [INFO] [Thread-118799] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:10:52.293 [DEBUG] [Thread-118799] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:10:52.293 [DEBUG] [Thread-118799] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:10:52.293 [DEBUG] [Thread-118799] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:10:52.294 [DEBUG] [Thread-118799] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:10:52.294 [DEBUG] [Thread-118799] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:10:52.294 [DEBUG] [Thread-118799] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:10:52.294 [DEBUG] [Thread-118799] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:10:52.294 [DEBUG] [Thread-118799] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:10:52.294 [DEBUG] [Thread-118799] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:10:52.294 [DEBUG] [Thread-118799] [transport.py] [_log()] client lang: <none>
2025-11-03T16:10:52.294 [DEBUG] [Thread-118799] [transport.py] [_log()] server lang: <none>
2025-11-03T16:10:52.294 [DEBUG] [Thread-118799] [transport.py] [_log()] kex follows: False
2025-11-03T16:10:52.294 [DEBUG] [Thread-118799] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:10:52.294 [DEBUG] [Thread-118799] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:10:52.294 [DEBUG] [Thread-118799] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:10:52.294 [DEBUG] [Thread-118799] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:10:52.294 [DEBUG] [Thread-118799] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:10:52.294 [DEBUG] [Thread-118799] [transport.py] [_log()] Compression: none
2025-11-03T16:10:52.294 [DEBUG] [Thread-118799] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:10:52.313 [DEBUG] [Thread-118799] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:10:52.313 [DEBUG] [Thread-118799] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:10:52.314 [DEBUG] [Thread-118799] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:10:52.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:10:52.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:10:52.317 [DEBUG] [Thread-118799] [transport.py] [_log()] userauth is OK
2025-11-03T16:10:52.317 [DEBUG] [Thread-118799] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:10:52.317 [DEBUG] [Thread-118799] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:10:52.317 [DEBUG] [Thread-118799] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:10:52.317 [DEBUG] [Thread-118799] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:10:52.342 [INFO] [Thread-118799] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:10:52.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:10:53.007 [DEBUG] [Thread-118799] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:10:53.007 [DEBUG] [Thread-118799] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:10:53.007 [DEBUG] [Thread-118799] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:10:53.048 [DEBUG] [Thread-118799] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:10:53.048 [DEBUG] [Thread-118799] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:10:53.050 [DEBUG] [Thread-118799] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:10:53.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:10:53.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:10:53.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:10:53.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:10:53.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:10:53.069 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:10:53.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:10:53.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:10:53.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:10:53.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.590380 -999.00  +26.20  33.00      8   -9.80 1 1 2 1 1   888    0 34.68 -74.58 ----- 27.6 33.0 306.6 38.6 29.4 -32.0 29.1 -31.4 30.1 -30.1 30.6 -30.6
2025-11-03T16:10:53.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:10:53.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:10:53.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.590380
2025-11-03T16:10:53.078 [DEBUG] [Thread-118799] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:10:53.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:10:53.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:10:53.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:10:53.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:10:53.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:10:53.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:10:35', tmtdew=46.34, humidity=3.8, cloud=0.0, wind=33.26, temperature=26.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:10:08.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:10:53.151 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:10:53.169 [DEBUG] [Thread-118802] [transport.py] [_log()] starting thread (client mode): 0x117bc430
2025-11-03T16:10:53.170 [DEBUG] [Thread-118802] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:10:53.184 [DEBUG] [Thread-118802] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:10:53.185 [INFO] [Thread-118802] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:10:53.192 [DEBUG] [Thread-118802] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:10:53.193 [DEBUG] [Thread-118802] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:10:53.193 [DEBUG] [Thread-118802] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:10:53.193 [DEBUG] [Thread-118802] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:10:53.193 [DEBUG] [Thread-118802] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:10:53.194 [DEBUG] [Thread-118802] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:10:53.194 [DEBUG] [Thread-118802] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:10:53.194 [DEBUG] [Thread-118802] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:10:53.194 [DEBUG] [Thread-118802] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:10:53.194 [DEBUG] [Thread-118802] [transport.py] [_log()] client lang: <none>
2025-11-03T16:10:53.194 [DEBUG] [Thread-118802] [transport.py] [_log()] server lang: <none>
2025-11-03T16:10:53.194 [DEBUG] [Thread-118802] [transport.py] [_log()] kex follows: False
2025-11-03T16:10:53.194 [DEBUG] [Thread-118802] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:10:53.194 [DEBUG] [Thread-118802] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:10:53.194 [DEBUG] [Thread-118802] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:10:53.194 [DEBUG] [Thread-118802] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:10:53.194 [DEBUG] [Thread-118802] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:10:53.194 [DEBUG] [Thread-118802] [transport.py] [_log()] Compression: none
2025-11-03T16:10:53.194 [DEBUG] [Thread-118802] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:10:53.252 [DEBUG] [Thread-118802] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:10:53.252 [DEBUG] [Thread-118802] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:10:53.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:10:53.254 [DEBUG] [Thread-118802] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:10:53.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:10:53.307 [DEBUG] [Thread-118802] [transport.py] [_log()] userauth is OK
2025-11-03T16:10:53.308 [DEBUG] [Thread-118802] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:10:53.308 [DEBUG] [Thread-118802] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:10:53.308 [DEBUG] [Thread-118802] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:10:53.308 [DEBUG] [Thread-118802] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:10:53.332 [INFO] [Thread-118802] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:10:53.333 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:10:53.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:10:54.202 [DEBUG] [Thread-118802] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:10:54.202 [DEBUG] [Thread-118802] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:10:54.250 [DEBUG] [Thread-118802] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:10:54.250 [DEBUG] [Thread-118802] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:10:54.259 [DEBUG] [Thread-118802] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:10:54.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:10:54.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:10:54.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:10:54.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:10:54.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:10:54.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:10:54.290 [DEBUG] [Thread-118802] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:11:05.868 [DEBUG] [Thread-118804 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:11:12.217 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:11:12.218 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:11:20.943 [DEBUG] [Thread-118805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:11:21.127 [DEBUG] [Thread-118806 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:11:24.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:11:24.313 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:11:24.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:11:24.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 11, 7), 47.02, 3.62, 0.0, 36.96, 27.06, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:11:24.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:11:07
2025-11-03T16:11:25.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:11:25.271 [DEBUG] [Thread-118807] [transport.py] [_log()] starting thread (client mode): 0x1174c730
2025-11-03T16:11:25.272 [DEBUG] [Thread-118807] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:11:25.292 [DEBUG] [Thread-118807] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:11:25.293 [INFO] [Thread-118807] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:11:25.303 [DEBUG] [Thread-118807] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:11:25.303 [DEBUG] [Thread-118807] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:11:25.303 [DEBUG] [Thread-118807] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:11:25.303 [DEBUG] [Thread-118807] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:11:25.303 [DEBUG] [Thread-118807] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:11:25.304 [DEBUG] [Thread-118807] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:11:25.304 [DEBUG] [Thread-118807] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:11:25.304 [DEBUG] [Thread-118807] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:11:25.304 [DEBUG] [Thread-118807] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:11:25.304 [DEBUG] [Thread-118807] [transport.py] [_log()] client lang: <none>
2025-11-03T16:11:25.304 [DEBUG] [Thread-118807] [transport.py] [_log()] server lang: <none>
2025-11-03T16:11:25.304 [DEBUG] [Thread-118807] [transport.py] [_log()] kex follows: False
2025-11-03T16:11:25.304 [DEBUG] [Thread-118807] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:11:25.304 [DEBUG] [Thread-118807] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:11:25.304 [DEBUG] [Thread-118807] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:11:25.304 [DEBUG] [Thread-118807] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:11:25.304 [DEBUG] [Thread-118807] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:11:25.304 [DEBUG] [Thread-118807] [transport.py] [_log()] Compression: none
2025-11-03T16:11:25.304 [DEBUG] [Thread-118807] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:11:25.326 [DEBUG] [Thread-118807] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:11:25.327 [DEBUG] [Thread-118807] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:11:25.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:11:25.328 [DEBUG] [Thread-118807] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:11:25.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:11:25.331 [DEBUG] [Thread-118807] [transport.py] [_log()] userauth is OK
2025-11-03T16:11:25.331 [DEBUG] [Thread-118807] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:11:25.332 [DEBUG] [Thread-118807] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:11:25.332 [DEBUG] [Thread-118807] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:11:25.332 [DEBUG] [Thread-118807] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:11:25.354 [INFO] [Thread-118807] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:11:25.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:11:26.095 [DEBUG] [Thread-118807] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:11:26.095 [DEBUG] [Thread-118807] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:11:26.096 [DEBUG] [Thread-118807] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:11:26.136 [DEBUG] [Thread-118807] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:11:26.136 [DEBUG] [Thread-118807] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:11:26.140 [DEBUG] [Thread-118807] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:11:26.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:11:26.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:11:26.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:11:26.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:11:26.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:11:26.163 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:11:26.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:11:26.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:11:26.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:11:26.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.590728 -999.00  +26.40  30.64      8  -10.10 1 1 2 1 1   888    0 35.20 -80.05 ----- 35.5 30.6 290.8 47.1 29.4 -32.9 29.2 -30.8 30.1 -33.3 30.7 -31.4
2025-11-03T16:11:26.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:11:26.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:11:26.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.590728
2025-11-03T16:11:26.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:11:26.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:11:26.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:11:26.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:11:26.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:11:26.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:11:07', tmtdew=47.02, humidity=3.62, cloud=0.0, wind=36.96, temperature=27.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:10:38.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:11:26.173 [DEBUG] [Thread-118807] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:11:26.257 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:11:26.278 [DEBUG] [Thread-118810] [transport.py] [_log()] starting thread (client mode): 0xed88610
2025-11-03T16:11:26.279 [DEBUG] [Thread-118810] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:11:26.294 [DEBUG] [Thread-118810] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:11:26.294 [INFO] [Thread-118810] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:11:26.302 [DEBUG] [Thread-118810] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:11:26.302 [DEBUG] [Thread-118810] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:11:26.302 [DEBUG] [Thread-118810] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:11:26.302 [DEBUG] [Thread-118810] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:11:26.303 [DEBUG] [Thread-118810] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:11:26.303 [DEBUG] [Thread-118810] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:11:26.303 [DEBUG] [Thread-118810] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:11:26.303 [DEBUG] [Thread-118810] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:11:26.303 [DEBUG] [Thread-118810] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:11:26.303 [DEBUG] [Thread-118810] [transport.py] [_log()] client lang: <none>
2025-11-03T16:11:26.303 [DEBUG] [Thread-118810] [transport.py] [_log()] server lang: <none>
2025-11-03T16:11:26.303 [DEBUG] [Thread-118810] [transport.py] [_log()] kex follows: False
2025-11-03T16:11:26.303 [DEBUG] [Thread-118810] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:11:26.304 [DEBUG] [Thread-118810] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:11:26.304 [DEBUG] [Thread-118810] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:11:26.304 [DEBUG] [Thread-118810] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:11:26.304 [DEBUG] [Thread-118810] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:11:26.304 [DEBUG] [Thread-118810] [transport.py] [_log()] Compression: none
2025-11-03T16:11:26.304 [DEBUG] [Thread-118810] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:11:26.361 [DEBUG] [Thread-118810] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:11:26.362 [DEBUG] [Thread-118810] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:11:26.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:11:26.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:11:26.362 [DEBUG] [Thread-118810] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:11:26.419 [DEBUG] [Thread-118810] [transport.py] [_log()] userauth is OK
2025-11-03T16:11:26.419 [DEBUG] [Thread-118810] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:11:26.420 [DEBUG] [Thread-118810] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:11:26.420 [DEBUG] [Thread-118810] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:11:26.420 [DEBUG] [Thread-118810] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:11:26.441 [INFO] [Thread-118810] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:11:26.442 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:11:26.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:11:27.374 [DEBUG] [Thread-118810] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:11:27.375 [DEBUG] [Thread-118810] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:11:27.421 [DEBUG] [Thread-118810] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:11:27.422 [DEBUG] [Thread-118810] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:11:27.430 [DEBUG] [Thread-118810] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:11:27.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:11:27.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:11:27.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:11:27.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:11:27.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:11:27.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:11:27.461 [DEBUG] [Thread-118810] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:11:35.988 [DEBUG] [Thread-118812 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:11:51.058 [DEBUG] [Thread-118813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:11:57.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:11:57.469 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:11:57.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:11:58.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 11, 39), 47.78, 3.14, 0.0, 39.15, 26.61, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:11:58.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:11:39
2025-11-03T16:11:58.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:11:58.400 [DEBUG] [Thread-118814] [transport.py] [_log()] starting thread (client mode): 0xed2e1a0
2025-11-03T16:11:58.400 [DEBUG] [Thread-118814] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:11:58.422 [DEBUG] [Thread-118814] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:11:58.422 [INFO] [Thread-118814] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:11:58.425 [DEBUG] [Thread-118814] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:11:58.425 [DEBUG] [Thread-118814] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:11:58.425 [DEBUG] [Thread-118814] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:11:58.425 [DEBUG] [Thread-118814] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:11:58.425 [DEBUG] [Thread-118814] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:11:58.425 [DEBUG] [Thread-118814] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:11:58.425 [DEBUG] [Thread-118814] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:11:58.425 [DEBUG] [Thread-118814] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:11:58.425 [DEBUG] [Thread-118814] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:11:58.425 [DEBUG] [Thread-118814] [transport.py] [_log()] client lang: <none>
2025-11-03T16:11:58.425 [DEBUG] [Thread-118814] [transport.py] [_log()] server lang: <none>
2025-11-03T16:11:58.425 [DEBUG] [Thread-118814] [transport.py] [_log()] kex follows: False
2025-11-03T16:11:58.425 [DEBUG] [Thread-118814] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:11:58.425 [DEBUG] [Thread-118814] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:11:58.425 [DEBUG] [Thread-118814] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:11:58.426 [DEBUG] [Thread-118814] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:11:58.426 [DEBUG] [Thread-118814] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:11:58.426 [DEBUG] [Thread-118814] [transport.py] [_log()] Compression: none
2025-11-03T16:11:58.426 [DEBUG] [Thread-118814] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:11:58.444 [DEBUG] [Thread-118814] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:11:58.454 [DEBUG] [Thread-118814] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:11:58.455 [DEBUG] [Thread-118814] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:11:58.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:11:58.456 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:11:58.458 [DEBUG] [Thread-118814] [transport.py] [_log()] userauth is OK
2025-11-03T16:11:58.458 [DEBUG] [Thread-118814] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:11:58.458 [DEBUG] [Thread-118814] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:11:58.458 [DEBUG] [Thread-118814] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:11:58.458 [DEBUG] [Thread-118814] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:11:58.483 [INFO] [Thread-118814] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:11:58.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:11:59.119 [DEBUG] [Thread-118814] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:11:59.119 [DEBUG] [Thread-118814] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:11:59.120 [DEBUG] [Thread-118814] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:11:59.160 [DEBUG] [Thread-118814] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:11:59.160 [DEBUG] [Thread-118814] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:11:59.163 [DEBUG] [Thread-118814] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:11:59.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:11:59.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:11:59.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:11:59.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:11:59.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:11:59.185 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:11:59.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:11:59.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:11:59.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:11:59.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.591075 -999.00  +26.60  32.40      7  -10.50 1 1 2 1 1   888    0 34.37 -75.17 ----- 29.9 32.4 300.9 41.6 29.4 -33.6 29.2 -31.9 30.1 -31.6 30.7 -32.6
2025-11-03T16:11:59.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:11:59.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:11:59.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.591075
2025-11-03T16:11:59.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:11:59.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:11:59.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:11:59.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:11:59.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:11:59.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:11:39', tmtdew=47.78, humidity=3.14, cloud=0.0, wind=39.15, temperature=26.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:11:08.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:11:59.188 [DEBUG] [Thread-118814] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:11:59.270 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:11:59.291 [DEBUG] [Thread-118817] [transport.py] [_log()] starting thread (client mode): 0xed2e230
2025-11-03T16:11:59.291 [DEBUG] [Thread-118817] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:11:59.306 [DEBUG] [Thread-118817] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:11:59.306 [INFO] [Thread-118817] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:11:59.314 [DEBUG] [Thread-118817] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:11:59.314 [DEBUG] [Thread-118817] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:11:59.314 [DEBUG] [Thread-118817] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:11:59.314 [DEBUG] [Thread-118817] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:11:59.314 [DEBUG] [Thread-118817] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:11:59.314 [DEBUG] [Thread-118817] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:11:59.315 [DEBUG] [Thread-118817] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:11:59.315 [DEBUG] [Thread-118817] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:11:59.315 [DEBUG] [Thread-118817] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:11:59.315 [DEBUG] [Thread-118817] [transport.py] [_log()] client lang: <none>
2025-11-03T16:11:59.315 [DEBUG] [Thread-118817] [transport.py] [_log()] server lang: <none>
2025-11-03T16:11:59.315 [DEBUG] [Thread-118817] [transport.py] [_log()] kex follows: False
2025-11-03T16:11:59.315 [DEBUG] [Thread-118817] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:11:59.315 [DEBUG] [Thread-118817] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:11:59.316 [DEBUG] [Thread-118817] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:11:59.316 [DEBUG] [Thread-118817] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:11:59.316 [DEBUG] [Thread-118817] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:11:59.316 [DEBUG] [Thread-118817] [transport.py] [_log()] Compression: none
2025-11-03T16:11:59.316 [DEBUG] [Thread-118817] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:11:59.371 [DEBUG] [Thread-118817] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:11:59.371 [DEBUG] [Thread-118817] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:11:59.372 [DEBUG] [Thread-118817] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:11:59.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:11:59.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:11:59.426 [DEBUG] [Thread-118817] [transport.py] [_log()] userauth is OK
2025-11-03T16:11:59.427 [DEBUG] [Thread-118817] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:11:59.427 [DEBUG] [Thread-118817] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:11:59.427 [DEBUG] [Thread-118817] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:11:59.427 [DEBUG] [Thread-118817] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:11:59.446 [INFO] [Thread-118817] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:11:59.446 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:11:59.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:12:00.300 [DEBUG] [Thread-118817] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:12:00.300 [DEBUG] [Thread-118817] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:12:00.348 [DEBUG] [Thread-118817] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:12:00.349 [DEBUG] [Thread-118817] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:12:00.358 [DEBUG] [Thread-118817] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:12:00.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:12:00.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:12:00.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:12:00.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:12:00.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:12:00.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:12:00.390 [DEBUG] [Thread-118817] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:12:06.102 [DEBUG] [Thread-118819 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:12:12.359 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:12:12.360 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:12:21.178 [DEBUG] [Thread-118820 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:12:21.225 [DEBUG] [Thread-118821 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:12:30.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:12:30.412 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:12:30.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:12:31.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 12, 12), 47.73, 3.14, 0.0, 34.35, 26.47, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:12:31.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:12:12
2025-11-03T16:12:31.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:12:31.452 [DEBUG] [Thread-118822] [transport.py] [_log()] starting thread (client mode): 0x1174d6c0
2025-11-03T16:12:31.452 [DEBUG] [Thread-118822] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:12:31.473 [DEBUG] [Thread-118822] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:12:31.473 [INFO] [Thread-118822] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:12:31.476 [DEBUG] [Thread-118822] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:12:31.476 [DEBUG] [Thread-118822] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:12:31.476 [DEBUG] [Thread-118822] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:12:31.476 [DEBUG] [Thread-118822] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:12:31.476 [DEBUG] [Thread-118822] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:12:31.476 [DEBUG] [Thread-118822] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:12:31.476 [DEBUG] [Thread-118822] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:12:31.476 [DEBUG] [Thread-118822] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:12:31.476 [DEBUG] [Thread-118822] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:12:31.476 [DEBUG] [Thread-118822] [transport.py] [_log()] client lang: <none>
2025-11-03T16:12:31.476 [DEBUG] [Thread-118822] [transport.py] [_log()] server lang: <none>
2025-11-03T16:12:31.476 [DEBUG] [Thread-118822] [transport.py] [_log()] kex follows: False
2025-11-03T16:12:31.476 [DEBUG] [Thread-118822] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:12:31.477 [DEBUG] [Thread-118822] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:12:31.477 [DEBUG] [Thread-118822] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:12:31.477 [DEBUG] [Thread-118822] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:12:31.477 [DEBUG] [Thread-118822] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:12:31.477 [DEBUG] [Thread-118822] [transport.py] [_log()] Compression: none
2025-11-03T16:12:31.477 [DEBUG] [Thread-118822] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:12:31.493 [DEBUG] [Thread-118822] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:12:31.493 [DEBUG] [Thread-118822] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:12:31.494 [DEBUG] [Thread-118822] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:12:31.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:12:31.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:12:31.494 [DEBUG] [Thread-118822] [transport.py] [_log()] userauth is OK
2025-11-03T16:12:31.495 [DEBUG] [Thread-118822] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:12:31.495 [DEBUG] [Thread-118822] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:12:31.495 [DEBUG] [Thread-118822] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:12:31.495 [DEBUG] [Thread-118822] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:12:31.508 [INFO] [Thread-118822] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:12:31.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:12:32.233 [DEBUG] [Thread-118822] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:12:32.233 [DEBUG] [Thread-118822] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:12:32.233 [DEBUG] [Thread-118822] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:12:32.274 [DEBUG] [Thread-118822] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:12:32.275 [DEBUG] [Thread-118822] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:12:32.277 [DEBUG] [Thread-118822] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:12:32.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:12:32.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:12:32.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:12:32.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:12:32.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:12:32.293 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:12:32.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:12:32.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:12:32.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:12:32.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.591422 -999.00  +26.40  31.43      8  -10.40 1 1 2 1 1   888    0 34.81 -74.53 ----- 34.3 31.4 311.8 37.8 29.4 -33.5 29.2 -32.3 30.2 -31.2 30.8 -31.7
2025-11-03T16:12:32.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:12:32.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:12:32.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.591422
2025-11-03T16:12:32.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:12:32.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:12:32.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:12:32.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:12:32.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:12:32.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:12:12', tmtdew=47.73, humidity=3.14, cloud=0.0, wind=34.35, temperature=26.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:11:38.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:12:32.296 [DEBUG] [Thread-118822] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:12:32.368 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:12:32.386 [DEBUG] [Thread-118825] [transport.py] [_log()] starting thread (client mode): 0xed20a90
2025-11-03T16:12:32.387 [DEBUG] [Thread-118825] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:12:32.402 [DEBUG] [Thread-118825] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:12:32.402 [INFO] [Thread-118825] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:12:32.410 [DEBUG] [Thread-118825] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:12:32.410 [DEBUG] [Thread-118825] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:12:32.410 [DEBUG] [Thread-118825] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:12:32.410 [DEBUG] [Thread-118825] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:12:32.410 [DEBUG] [Thread-118825] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:12:32.410 [DEBUG] [Thread-118825] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:12:32.410 [DEBUG] [Thread-118825] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:12:32.410 [DEBUG] [Thread-118825] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:12:32.410 [DEBUG] [Thread-118825] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:12:32.410 [DEBUG] [Thread-118825] [transport.py] [_log()] client lang: <none>
2025-11-03T16:12:32.410 [DEBUG] [Thread-118825] [transport.py] [_log()] server lang: <none>
2025-11-03T16:12:32.410 [DEBUG] [Thread-118825] [transport.py] [_log()] kex follows: False
2025-11-03T16:12:32.410 [DEBUG] [Thread-118825] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:12:32.410 [DEBUG] [Thread-118825] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:12:32.410 [DEBUG] [Thread-118825] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:12:32.410 [DEBUG] [Thread-118825] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:12:32.410 [DEBUG] [Thread-118825] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:12:32.410 [DEBUG] [Thread-118825] [transport.py] [_log()] Compression: none
2025-11-03T16:12:32.410 [DEBUG] [Thread-118825] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:12:32.465 [DEBUG] [Thread-118825] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:12:32.466 [DEBUG] [Thread-118825] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:12:32.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:12:32.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:12:32.466 [DEBUG] [Thread-118825] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:12:32.522 [DEBUG] [Thread-118825] [transport.py] [_log()] userauth is OK
2025-11-03T16:12:32.522 [DEBUG] [Thread-118825] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:12:32.522 [DEBUG] [Thread-118825] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:12:32.522 [DEBUG] [Thread-118825] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:12:32.522 [DEBUG] [Thread-118825] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:12:32.540 [INFO] [Thread-118825] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:12:32.540 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:12:32.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:12:33.397 [DEBUG] [Thread-118825] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:12:33.397 [DEBUG] [Thread-118825] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:12:33.445 [DEBUG] [Thread-118825] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:12:33.446 [DEBUG] [Thread-118825] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:12:33.454 [DEBUG] [Thread-118825] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:12:33.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:12:33.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:12:33.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:12:33.478 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:12:33.478 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:12:33.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:12:33.486 [DEBUG] [Thread-118825] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:12:36.219 [DEBUG] [Thread-118827 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:12:51.289 [DEBUG] [Thread-118828 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:13:03.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:13:03.509 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:13:03.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:13:04.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 12, 44), 47.59, 3.1, 0.0, 37.1, 26.37, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:13:04.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:12:44
2025-11-03T16:13:04.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:13:04.553 [DEBUG] [Thread-118829] [transport.py] [_log()] starting thread (client mode): 0xed2e170
2025-11-03T16:13:04.554 [DEBUG] [Thread-118829] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:13:04.573 [DEBUG] [Thread-118829] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:13:04.573 [INFO] [Thread-118829] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:13:04.577 [DEBUG] [Thread-118829] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:13:04.577 [DEBUG] [Thread-118829] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:13:04.577 [DEBUG] [Thread-118829] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:13:04.577 [DEBUG] [Thread-118829] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:13:04.578 [DEBUG] [Thread-118829] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:13:04.578 [DEBUG] [Thread-118829] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:13:04.578 [DEBUG] [Thread-118829] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:13:04.578 [DEBUG] [Thread-118829] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:13:04.578 [DEBUG] [Thread-118829] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:13:04.578 [DEBUG] [Thread-118829] [transport.py] [_log()] client lang: <none>
2025-11-03T16:13:04.578 [DEBUG] [Thread-118829] [transport.py] [_log()] server lang: <none>
2025-11-03T16:13:04.578 [DEBUG] [Thread-118829] [transport.py] [_log()] kex follows: False
2025-11-03T16:13:04.578 [DEBUG] [Thread-118829] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:13:04.579 [DEBUG] [Thread-118829] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:13:04.579 [DEBUG] [Thread-118829] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:13:04.579 [DEBUG] [Thread-118829] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:13:04.579 [DEBUG] [Thread-118829] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:13:04.579 [DEBUG] [Thread-118829] [transport.py] [_log()] Compression: none
2025-11-03T16:13:04.579 [DEBUG] [Thread-118829] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:13:04.598 [DEBUG] [Thread-118829] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:13:04.598 [DEBUG] [Thread-118829] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:13:04.599 [DEBUG] [Thread-118829] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:13:04.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:13:04.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:13:04.601 [DEBUG] [Thread-118829] [transport.py] [_log()] userauth is OK
2025-11-03T16:13:04.601 [DEBUG] [Thread-118829] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:13:04.601 [DEBUG] [Thread-118829] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:13:04.601 [DEBUG] [Thread-118829] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:13:04.601 [DEBUG] [Thread-118829] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:13:04.638 [INFO] [Thread-118829] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:13:04.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:13:05.265 [DEBUG] [Thread-118829] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:13:05.265 [DEBUG] [Thread-118829] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:13:05.265 [DEBUG] [Thread-118829] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:13:05.306 [DEBUG] [Thread-118829] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:13:05.306 [DEBUG] [Thread-118829] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:13:05.310 [DEBUG] [Thread-118829] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:13:05.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:13:05.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:13:05.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:13:05.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:13:05.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:13:05.334 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:13:05.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:13:05.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:13:05.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:13:05.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.591769 -999.00  +26.20  36.06      7  -10.90 1 1 2 1 1   888    0 34.92 -73.76 ----- 39.7 36.1 294.4 40.5 29.5 -34.1 29.3 -32.9 30.1 -33.9 30.7 -32.6
2025-11-03T16:13:05.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:13:05.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:13:05.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.591769
2025-11-03T16:13:05.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:13:05.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:13:05.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:13:05.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:13:05.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:13:05.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:12:44', tmtdew=47.59, humidity=3.1, cloud=0.0, wind=37.1, temperature=26.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:12:08.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:13:05.338 [DEBUG] [Thread-118829] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:13:05.433 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:13:05.453 [DEBUG] [Thread-118832] [transport.py] [_log()] starting thread (client mode): 0xed2e410
2025-11-03T16:13:05.453 [DEBUG] [Thread-118832] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:13:05.468 [DEBUG] [Thread-118832] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:13:05.468 [INFO] [Thread-118832] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:13:05.475 [DEBUG] [Thread-118832] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:13:05.476 [DEBUG] [Thread-118832] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:13:05.476 [DEBUG] [Thread-118832] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:13:05.476 [DEBUG] [Thread-118832] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:13:05.476 [DEBUG] [Thread-118832] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:13:05.476 [DEBUG] [Thread-118832] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:13:05.476 [DEBUG] [Thread-118832] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:13:05.476 [DEBUG] [Thread-118832] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:13:05.476 [DEBUG] [Thread-118832] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:13:05.476 [DEBUG] [Thread-118832] [transport.py] [_log()] client lang: <none>
2025-11-03T16:13:05.476 [DEBUG] [Thread-118832] [transport.py] [_log()] server lang: <none>
2025-11-03T16:13:05.476 [DEBUG] [Thread-118832] [transport.py] [_log()] kex follows: False
2025-11-03T16:13:05.476 [DEBUG] [Thread-118832] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:13:05.476 [DEBUG] [Thread-118832] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:13:05.476 [DEBUG] [Thread-118832] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:13:05.476 [DEBUG] [Thread-118832] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:13:05.476 [DEBUG] [Thread-118832] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:13:05.476 [DEBUG] [Thread-118832] [transport.py] [_log()] Compression: none
2025-11-03T16:13:05.476 [DEBUG] [Thread-118832] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:13:05.532 [DEBUG] [Thread-118832] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:13:05.532 [DEBUG] [Thread-118832] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:13:05.532 [DEBUG] [Thread-118832] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:13:05.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:13:05.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:13:05.589 [DEBUG] [Thread-118832] [transport.py] [_log()] userauth is OK
2025-11-03T16:13:05.589 [DEBUG] [Thread-118832] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:13:05.589 [DEBUG] [Thread-118832] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:13:05.589 [DEBUG] [Thread-118832] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:13:05.589 [DEBUG] [Thread-118832] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:13:05.603 [INFO] [Thread-118832] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:13:05.604 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:13:05.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:13:06.330 [DEBUG] [Thread-118834 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:13:06.425 [DEBUG] [Thread-118832] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:13:06.425 [DEBUG] [Thread-118832] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:13:06.472 [DEBUG] [Thread-118832] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:13:06.473 [DEBUG] [Thread-118832] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:13:06.482 [DEBUG] [Thread-118832] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:13:06.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:13:06.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:13:06.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:13:06.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:13:06.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:13:06.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:13:06.516 [DEBUG] [Thread-118832] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:13:12.509 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:13:12.511 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:13:21.386 [DEBUG] [Thread-118835 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:13:21.537 [DEBUG] [Thread-118836 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:13:36.436 [DEBUG] [Thread-118837 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:13:36.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:13:36.526 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:13:36.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:13:37.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 13, 16), 48.19, 2.94, 0.0, 38.32, 26.32, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:13:37.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:13:16
2025-11-03T16:13:37.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:13:37.529 [DEBUG] [Thread-118838] [transport.py] [_log()] starting thread (client mode): 0xeda1510
2025-11-03T16:13:37.529 [DEBUG] [Thread-118838] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:13:37.531 [DEBUG] [Thread-118838] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:13:37.531 [INFO] [Thread-118838] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:13:37.533 [DEBUG] [Thread-118838] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:13:37.533 [DEBUG] [Thread-118838] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:13:37.533 [DEBUG] [Thread-118838] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:13:37.533 [DEBUG] [Thread-118838] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:13:37.533 [DEBUG] [Thread-118838] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:13:37.533 [DEBUG] [Thread-118838] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:13:37.533 [DEBUG] [Thread-118838] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:13:37.533 [DEBUG] [Thread-118838] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:13:37.533 [DEBUG] [Thread-118838] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:13:37.533 [DEBUG] [Thread-118838] [transport.py] [_log()] client lang: <none>
2025-11-03T16:13:37.533 [DEBUG] [Thread-118838] [transport.py] [_log()] server lang: <none>
2025-11-03T16:13:37.533 [DEBUG] [Thread-118838] [transport.py] [_log()] kex follows: False
2025-11-03T16:13:37.533 [DEBUG] [Thread-118838] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:13:37.533 [DEBUG] [Thread-118838] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:13:37.533 [DEBUG] [Thread-118838] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:13:37.533 [DEBUG] [Thread-118838] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:13:37.533 [DEBUG] [Thread-118838] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:13:37.533 [DEBUG] [Thread-118838] [transport.py] [_log()] Compression: none
2025-11-03T16:13:37.533 [DEBUG] [Thread-118838] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:13:37.540 [DEBUG] [Thread-118838] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:13:37.540 [DEBUG] [Thread-118838] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:13:37.540 [DEBUG] [Thread-118838] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:13:37.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:13:37.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:13:37.541 [DEBUG] [Thread-118838] [transport.py] [_log()] userauth is OK
2025-11-03T16:13:37.541 [DEBUG] [Thread-118838] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:13:37.541 [DEBUG] [Thread-118838] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:13:37.541 [DEBUG] [Thread-118838] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:13:37.541 [DEBUG] [Thread-118838] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:13:37.553 [INFO] [Thread-118838] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:13:37.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:13:38.201 [DEBUG] [Thread-118838] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:13:38.201 [DEBUG] [Thread-118838] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:13:38.202 [DEBUG] [Thread-118838] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:13:38.242 [DEBUG] [Thread-118838] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:13:38.242 [DEBUG] [Thread-118838] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:13:38.246 [DEBUG] [Thread-118838] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:13:38.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:13:38.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:13:38.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:13:38.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:13:38.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:13:38.271 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:13:38.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:13:38.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:13:38.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:13:38.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.592116 -999.00  +26.20  30.85      7  -10.70 1 1 2 1 1   888    0 35.31 -61.54 ----- 40.0 30.9 296.4 41.0 29.4 -33.1 29.2 -33.2 30.1 -34.1 30.7 -32.1
2025-11-03T16:13:38.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:13:38.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:13:38.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.592116
2025-11-03T16:13:38.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:13:38.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:13:38.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:13:38.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:13:38.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:13:38.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:13:16', tmtdew=48.19, humidity=2.94, cloud=0.0, wind=38.32, temperature=26.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:12:38.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:13:38.275 [DEBUG] [Thread-118838] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:13:38.358 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:13:38.378 [DEBUG] [Thread-118841] [transport.py] [_log()] starting thread (client mode): 0x141da860
2025-11-03T16:13:38.379 [DEBUG] [Thread-118841] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:13:38.394 [DEBUG] [Thread-118841] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:13:38.395 [INFO] [Thread-118841] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:13:38.402 [DEBUG] [Thread-118841] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:13:38.402 [DEBUG] [Thread-118841] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:13:38.402 [DEBUG] [Thread-118841] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:13:38.403 [DEBUG] [Thread-118841] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:13:38.403 [DEBUG] [Thread-118841] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:13:38.403 [DEBUG] [Thread-118841] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:13:38.403 [DEBUG] [Thread-118841] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:13:38.403 [DEBUG] [Thread-118841] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:13:38.403 [DEBUG] [Thread-118841] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:13:38.403 [DEBUG] [Thread-118841] [transport.py] [_log()] client lang: <none>
2025-11-03T16:13:38.403 [DEBUG] [Thread-118841] [transport.py] [_log()] server lang: <none>
2025-11-03T16:13:38.403 [DEBUG] [Thread-118841] [transport.py] [_log()] kex follows: False
2025-11-03T16:13:38.403 [DEBUG] [Thread-118841] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:13:38.403 [DEBUG] [Thread-118841] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:13:38.403 [DEBUG] [Thread-118841] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:13:38.403 [DEBUG] [Thread-118841] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:13:38.403 [DEBUG] [Thread-118841] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:13:38.403 [DEBUG] [Thread-118841] [transport.py] [_log()] Compression: none
2025-11-03T16:13:38.403 [DEBUG] [Thread-118841] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:13:38.460 [DEBUG] [Thread-118841] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:13:38.460 [DEBUG] [Thread-118841] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:13:38.460 [DEBUG] [Thread-118841] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:13:38.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:13:38.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:13:38.517 [DEBUG] [Thread-118841] [transport.py] [_log()] userauth is OK
2025-11-03T16:13:38.517 [DEBUG] [Thread-118841] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:13:38.517 [DEBUG] [Thread-118841] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:13:38.517 [DEBUG] [Thread-118841] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:13:38.517 [DEBUG] [Thread-118841] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:13:38.531 [INFO] [Thread-118841] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:13:38.531 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:13:38.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:13:39.375 [DEBUG] [Thread-118841] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:13:39.376 [DEBUG] [Thread-118841] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:13:39.424 [DEBUG] [Thread-118841] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:13:39.425 [DEBUG] [Thread-118841] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:13:39.434 [DEBUG] [Thread-118841] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:13:39.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:13:39.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:13:39.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:13:39.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:13:39.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:13:39.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:13:39.471 [DEBUG] [Thread-118841] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:13:51.478 [DEBUG] [Thread-118843 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:14:06.534 [DEBUG] [Thread-118844 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:14:09.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:14:09.494 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:14:09.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:14:10.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 13, 49), 49.19, 2.82, 0.0, 41.37, 25.99, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:14:10.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:13:49
2025-11-03T16:14:10.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:14:10.466 [DEBUG] [Thread-118845] [transport.py] [_log()] starting thread (client mode): 0xeda1750
2025-11-03T16:14:10.466 [DEBUG] [Thread-118845] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:14:10.487 [DEBUG] [Thread-118845] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:14:10.487 [INFO] [Thread-118845] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:14:10.496 [DEBUG] [Thread-118845] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:14:10.496 [DEBUG] [Thread-118845] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:14:10.497 [DEBUG] [Thread-118845] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:14:10.497 [DEBUG] [Thread-118845] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:14:10.497 [DEBUG] [Thread-118845] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:14:10.497 [DEBUG] [Thread-118845] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:14:10.497 [DEBUG] [Thread-118845] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:14:10.497 [DEBUG] [Thread-118845] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:14:10.497 [DEBUG] [Thread-118845] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:14:10.497 [DEBUG] [Thread-118845] [transport.py] [_log()] client lang: <none>
2025-11-03T16:14:10.497 [DEBUG] [Thread-118845] [transport.py] [_log()] server lang: <none>
2025-11-03T16:14:10.497 [DEBUG] [Thread-118845] [transport.py] [_log()] kex follows: False
2025-11-03T16:14:10.497 [DEBUG] [Thread-118845] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:14:10.497 [DEBUG] [Thread-118845] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:14:10.497 [DEBUG] [Thread-118845] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:14:10.497 [DEBUG] [Thread-118845] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:14:10.497 [DEBUG] [Thread-118845] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:14:10.497 [DEBUG] [Thread-118845] [transport.py] [_log()] Compression: none
2025-11-03T16:14:10.497 [DEBUG] [Thread-118845] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:14:10.514 [DEBUG] [Thread-118845] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:14:10.514 [DEBUG] [Thread-118845] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:14:10.515 [DEBUG] [Thread-118845] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:14:10.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:14:10.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:14:10.516 [DEBUG] [Thread-118845] [transport.py] [_log()] userauth is OK
2025-11-03T16:14:10.516 [DEBUG] [Thread-118845] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:14:10.516 [DEBUG] [Thread-118845] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:14:10.516 [DEBUG] [Thread-118845] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:14:10.516 [DEBUG] [Thread-118845] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:14:10.535 [INFO] [Thread-118845] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:14:10.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:14:11.196 [DEBUG] [Thread-118845] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:14:11.197 [DEBUG] [Thread-118845] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:14:11.198 [DEBUG] [Thread-118845] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:14:11.238 [DEBUG] [Thread-118845] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:14:11.238 [DEBUG] [Thread-118845] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:14:11.242 [DEBUG] [Thread-118845] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:14:11.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:14:11.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:14:11.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:14:11.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:14:11.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:14:11.269 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:14:11.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:14:11.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:14:11.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:14:11.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.592464 -999.00  +26.20  35.14      7  -11.10 1 1 2 1 1   888    0 35.39 -52.94 ----- 36.1 35.1 293.8 44.6 29.4 -34.1 29.2 -32.9 30.1 -33.4 30.6 -32.6
2025-11-03T16:14:11.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:14:11.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:14:11.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.592464
2025-11-03T16:14:11.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:14:11.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:14:11.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:14:11.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:14:11.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:14:11.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:13:49', tmtdew=49.19, humidity=2.82, cloud=0.0, wind=41.37, temperature=25.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:13:08.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:14:11.272 [DEBUG] [Thread-118845] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:14:11.356 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:14:11.377 [DEBUG] [Thread-118848] [transport.py] [_log()] starting thread (client mode): 0x1174f2b0
2025-11-03T16:14:11.377 [DEBUG] [Thread-118848] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:14:11.393 [DEBUG] [Thread-118848] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:14:11.393 [INFO] [Thread-118848] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:14:11.401 [DEBUG] [Thread-118848] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:14:11.402 [DEBUG] [Thread-118848] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:14:11.402 [DEBUG] [Thread-118848] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:14:11.402 [DEBUG] [Thread-118848] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:14:11.402 [DEBUG] [Thread-118848] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:14:11.402 [DEBUG] [Thread-118848] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:14:11.402 [DEBUG] [Thread-118848] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:14:11.402 [DEBUG] [Thread-118848] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:14:11.403 [DEBUG] [Thread-118848] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:14:11.403 [DEBUG] [Thread-118848] [transport.py] [_log()] client lang: <none>
2025-11-03T16:14:11.403 [DEBUG] [Thread-118848] [transport.py] [_log()] server lang: <none>
2025-11-03T16:14:11.403 [DEBUG] [Thread-118848] [transport.py] [_log()] kex follows: False
2025-11-03T16:14:11.403 [DEBUG] [Thread-118848] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:14:11.403 [DEBUG] [Thread-118848] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:14:11.403 [DEBUG] [Thread-118848] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:14:11.404 [DEBUG] [Thread-118848] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:14:11.404 [DEBUG] [Thread-118848] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:14:11.404 [DEBUG] [Thread-118848] [transport.py] [_log()] Compression: none
2025-11-03T16:14:11.404 [DEBUG] [Thread-118848] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:14:11.462 [DEBUG] [Thread-118848] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:14:11.462 [DEBUG] [Thread-118848] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:14:11.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:14:11.464 [DEBUG] [Thread-118848] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:14:11.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:14:11.517 [DEBUG] [Thread-118848] [transport.py] [_log()] userauth is OK
2025-11-03T16:14:11.518 [DEBUG] [Thread-118848] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:14:11.518 [DEBUG] [Thread-118848] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:14:11.518 [DEBUG] [Thread-118848] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:14:11.518 [DEBUG] [Thread-118848] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:14:11.546 [INFO] [Thread-118848] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:14:11.547 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:14:11.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:14:12.411 [DEBUG] [Thread-118848] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:14:12.412 [DEBUG] [Thread-118848] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:14:12.459 [DEBUG] [Thread-118848] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:14:12.459 [DEBUG] [Thread-118848] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:14:12.468 [DEBUG] [Thread-118848] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:14:12.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:14:12.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:14:12.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:14:12.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:14:12.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:14:12.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:14:12.510 [DEBUG] [Thread-118848] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:14:12.651 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:14:12.652 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:14:21.577 [DEBUG] [Thread-118850 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:14:21.597 [DEBUG] [Thread-118851 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:14:36.632 [DEBUG] [Thread-118852 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:14:42.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:14:42.532 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:14:42.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:14:43.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 14, 21), 48.61, 2.97, 0.0, 37.79, 26.05, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:14:43.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:14:21
2025-11-03T16:14:43.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:14:43.472 [DEBUG] [Thread-118853] [transport.py] [_log()] starting thread (client mode): 0xed20d90
2025-11-03T16:14:43.472 [DEBUG] [Thread-118853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:14:43.491 [DEBUG] [Thread-118853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:14:43.491 [INFO] [Thread-118853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:14:43.493 [DEBUG] [Thread-118853] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:14:43.493 [DEBUG] [Thread-118853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:14:43.493 [DEBUG] [Thread-118853] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:14:43.493 [DEBUG] [Thread-118853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:14:43.493 [DEBUG] [Thread-118853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:14:43.493 [DEBUG] [Thread-118853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:14:43.493 [DEBUG] [Thread-118853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:14:43.493 [DEBUG] [Thread-118853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:14:43.493 [DEBUG] [Thread-118853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:14:43.493 [DEBUG] [Thread-118853] [transport.py] [_log()] client lang: <none>
2025-11-03T16:14:43.493 [DEBUG] [Thread-118853] [transport.py] [_log()] server lang: <none>
2025-11-03T16:14:43.493 [DEBUG] [Thread-118853] [transport.py] [_log()] kex follows: False
2025-11-03T16:14:43.493 [DEBUG] [Thread-118853] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:14:43.493 [DEBUG] [Thread-118853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:14:43.494 [DEBUG] [Thread-118853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:14:43.494 [DEBUG] [Thread-118853] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:14:43.494 [DEBUG] [Thread-118853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:14:43.494 [DEBUG] [Thread-118853] [transport.py] [_log()] Compression: none
2025-11-03T16:14:43.494 [DEBUG] [Thread-118853] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:14:43.502 [DEBUG] [Thread-118853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:14:43.503 [DEBUG] [Thread-118853] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:14:43.503 [DEBUG] [Thread-118853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:14:43.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:14:43.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:14:43.505 [DEBUG] [Thread-118853] [transport.py] [_log()] userauth is OK
2025-11-03T16:14:43.505 [DEBUG] [Thread-118853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:14:43.506 [DEBUG] [Thread-118853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:14:43.506 [DEBUG] [Thread-118853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:14:43.506 [DEBUG] [Thread-118853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:14:43.531 [INFO] [Thread-118853] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:14:43.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:14:44.296 [DEBUG] [Thread-118853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:14:44.296 [DEBUG] [Thread-118853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:14:44.296 [DEBUG] [Thread-118853] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:14:44.337 [DEBUG] [Thread-118853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:14:44.337 [DEBUG] [Thread-118853] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:14:44.338 [DEBUG] [Thread-118853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:14:44.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:14:44.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:14:44.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:14:44.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:14:44.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:14:44.355 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:14:44.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:14:44.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:14:44.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:14:44.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.593158 -999.00  +26.00  43.73      7  -12.20 1 1 2 1 1   888    0 35.87 -34.82 ----- 38.7 43.7 304.0 50.0 29.3 -33.9 29.1 -33.4 29.9 -31.8 30.5 -33.0
2025-11-03T16:14:44.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:14:44.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:14:44.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.593158
2025-11-03T16:14:44.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:14:44.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:14:44.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:14:44.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:14:44.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:14:44.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:14:21', tmtdew=48.61, humidity=2.97, cloud=0.0, wind=37.79, temperature=26.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:14:08.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:14:44.356 [DEBUG] [Thread-118853] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:14:44.427 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:14:44.448 [DEBUG] [Thread-118856] [transport.py] [_log()] starting thread (client mode): 0xed2f6a0
2025-11-03T16:14:44.448 [DEBUG] [Thread-118856] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:14:44.462 [DEBUG] [Thread-118856] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:14:44.463 [INFO] [Thread-118856] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:14:44.470 [DEBUG] [Thread-118856] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:14:44.470 [DEBUG] [Thread-118856] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:14:44.470 [DEBUG] [Thread-118856] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:14:44.470 [DEBUG] [Thread-118856] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:14:44.470 [DEBUG] [Thread-118856] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:14:44.470 [DEBUG] [Thread-118856] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:14:44.470 [DEBUG] [Thread-118856] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:14:44.470 [DEBUG] [Thread-118856] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:14:44.470 [DEBUG] [Thread-118856] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:14:44.470 [DEBUG] [Thread-118856] [transport.py] [_log()] client lang: <none>
2025-11-03T16:14:44.470 [DEBUG] [Thread-118856] [transport.py] [_log()] server lang: <none>
2025-11-03T16:14:44.470 [DEBUG] [Thread-118856] [transport.py] [_log()] kex follows: False
2025-11-03T16:14:44.470 [DEBUG] [Thread-118856] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:14:44.470 [DEBUG] [Thread-118856] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:14:44.470 [DEBUG] [Thread-118856] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:14:44.470 [DEBUG] [Thread-118856] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:14:44.471 [DEBUG] [Thread-118856] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:14:44.471 [DEBUG] [Thread-118856] [transport.py] [_log()] Compression: none
2025-11-03T16:14:44.471 [DEBUG] [Thread-118856] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:14:44.527 [DEBUG] [Thread-118856] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:14:44.527 [DEBUG] [Thread-118856] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:14:44.527 [DEBUG] [Thread-118856] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:14:44.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:14:44.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:14:44.588 [DEBUG] [Thread-118856] [transport.py] [_log()] userauth is OK
2025-11-03T16:14:44.588 [DEBUG] [Thread-118856] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:14:44.588 [DEBUG] [Thread-118856] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:14:44.588 [DEBUG] [Thread-118856] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:14:44.588 [DEBUG] [Thread-118856] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:14:44.603 [INFO] [Thread-118856] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:14:44.612 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:14:44.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:14:45.452 [DEBUG] [Thread-118856] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:14:45.452 [DEBUG] [Thread-118856] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:14:45.499 [DEBUG] [Thread-118856] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:14:45.499 [DEBUG] [Thread-118856] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:14:45.509 [DEBUG] [Thread-118856] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:14:45.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:14:45.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:14:45.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:14:45.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:14:45.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:14:45.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:14:45.546 [DEBUG] [Thread-118856] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:14:51.679 [DEBUG] [Thread-118858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:15:06.742 [DEBUG] [Thread-118859 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:15:12.803 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:15:12.804 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:15:15.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:15:15.565 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:15:15.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:15:16.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 14, 54), 49.69, 2.94, 0.0, 38.34, 26.22, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:15:16.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:14:54
2025-11-03T16:15:16.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:15:16.528 [DEBUG] [Thread-118860] [transport.py] [_log()] starting thread (client mode): 0x1179a350
2025-11-03T16:15:16.529 [DEBUG] [Thread-118860] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:15:16.549 [DEBUG] [Thread-118860] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:15:16.549 [INFO] [Thread-118860] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:15:16.552 [DEBUG] [Thread-118860] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:15:16.553 [DEBUG] [Thread-118860] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:15:16.553 [DEBUG] [Thread-118860] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:15:16.553 [DEBUG] [Thread-118860] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:15:16.553 [DEBUG] [Thread-118860] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:15:16.553 [DEBUG] [Thread-118860] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:15:16.553 [DEBUG] [Thread-118860] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:15:16.554 [DEBUG] [Thread-118860] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:15:16.554 [DEBUG] [Thread-118860] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:15:16.554 [DEBUG] [Thread-118860] [transport.py] [_log()] client lang: <none>
2025-11-03T16:15:16.554 [DEBUG] [Thread-118860] [transport.py] [_log()] server lang: <none>
2025-11-03T16:15:16.554 [DEBUG] [Thread-118860] [transport.py] [_log()] kex follows: False
2025-11-03T16:15:16.554 [DEBUG] [Thread-118860] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:15:16.554 [DEBUG] [Thread-118860] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:15:16.554 [DEBUG] [Thread-118860] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:15:16.555 [DEBUG] [Thread-118860] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:15:16.555 [DEBUG] [Thread-118860] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:15:16.564 [DEBUG] [Thread-118860] [transport.py] [_log()] Compression: none
2025-11-03T16:15:16.564 [DEBUG] [Thread-118860] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:15:16.584 [DEBUG] [Thread-118860] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:15:16.585 [DEBUG] [Thread-118860] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:15:16.585 [DEBUG] [Thread-118860] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:15:16.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:15:16.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:15:16.588 [DEBUG] [Thread-118860] [transport.py] [_log()] userauth is OK
2025-11-03T16:15:16.588 [DEBUG] [Thread-118860] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:15:16.588 [DEBUG] [Thread-118860] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:15:16.588 [DEBUG] [Thread-118860] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:15:16.589 [DEBUG] [Thread-118860] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:15:16.604 [INFO] [Thread-118860] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:15:16.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:15:17.206 [DEBUG] [Thread-118860] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:15:17.214 [DEBUG] [Thread-118860] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:15:17.215 [DEBUG] [Thread-118860] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:15:17.246 [DEBUG] [Thread-118860] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:15:17.246 [DEBUG] [Thread-118860] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:15:17.249 [DEBUG] [Thread-118860] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:15:17.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:15:17.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:15:17.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:15:17.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:15:17.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:15:17.268 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:15:17.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:15:17.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:15:17.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:15:17.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.593505 -999.00  +26.00  38.48      7  -12.40 1 1 2 1 1   888    0 36.63 -20.30 ----- 35.6 38.5 293.6 43.1 29.2 -34.5 29.1 -33.2 29.9 -33.4 30.4 -33.1
2025-11-03T16:15:17.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:15:17.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:15:17.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.593505
2025-11-03T16:15:17.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:15:17.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:15:17.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:15:17.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:15:17.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:15:17.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:14:54', tmtdew=49.69, humidity=2.94, cloud=0.0, wind=38.34, temperature=26.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:14:38.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:15:17.269 [DEBUG] [Thread-118860] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:15:17.340 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:15:17.360 [DEBUG] [Thread-118863] [transport.py] [_log()] starting thread (client mode): 0xedd51b0
2025-11-03T16:15:17.360 [DEBUG] [Thread-118863] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:15:17.375 [DEBUG] [Thread-118863] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:15:17.375 [INFO] [Thread-118863] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:15:17.382 [DEBUG] [Thread-118863] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:15:17.382 [DEBUG] [Thread-118863] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:15:17.382 [DEBUG] [Thread-118863] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:15:17.382 [DEBUG] [Thread-118863] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:15:17.382 [DEBUG] [Thread-118863] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:15:17.382 [DEBUG] [Thread-118863] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:15:17.382 [DEBUG] [Thread-118863] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:15:17.382 [DEBUG] [Thread-118863] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:15:17.382 [DEBUG] [Thread-118863] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:15:17.382 [DEBUG] [Thread-118863] [transport.py] [_log()] client lang: <none>
2025-11-03T16:15:17.382 [DEBUG] [Thread-118863] [transport.py] [_log()] server lang: <none>
2025-11-03T16:15:17.382 [DEBUG] [Thread-118863] [transport.py] [_log()] kex follows: False
2025-11-03T16:15:17.383 [DEBUG] [Thread-118863] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:15:17.383 [DEBUG] [Thread-118863] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:15:17.383 [DEBUG] [Thread-118863] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:15:17.383 [DEBUG] [Thread-118863] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:15:17.383 [DEBUG] [Thread-118863] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:15:17.383 [DEBUG] [Thread-118863] [transport.py] [_log()] Compression: none
2025-11-03T16:15:17.383 [DEBUG] [Thread-118863] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:15:17.438 [DEBUG] [Thread-118863] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:15:17.439 [DEBUG] [Thread-118863] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:15:17.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:15:17.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:15:17.439 [DEBUG] [Thread-118863] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:15:17.496 [DEBUG] [Thread-118863] [transport.py] [_log()] userauth is OK
2025-11-03T16:15:17.496 [DEBUG] [Thread-118863] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:15:17.496 [DEBUG] [Thread-118863] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:15:17.496 [DEBUG] [Thread-118863] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:15:17.496 [DEBUG] [Thread-118863] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:15:17.510 [INFO] [Thread-118863] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:15:17.510 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:15:17.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:15:18.398 [DEBUG] [Thread-118863] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:15:18.399 [DEBUG] [Thread-118863] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:15:18.446 [DEBUG] [Thread-118863] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:15:18.446 [DEBUG] [Thread-118863] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:15:18.456 [DEBUG] [Thread-118863] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:15:18.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:15:18.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:15:18.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:15:18.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:15:18.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:15:18.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:15:18.493 [DEBUG] [Thread-118863] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:15:21.732 [DEBUG] [Thread-118865 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:15:21.779 [DEBUG] [Thread-118866 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:15:36.842 [DEBUG] [Thread-118867 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:15:48.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:15:48.515 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:15:48.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:15:49.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 15, 26), 50.06, 2.87, 0.0, 41.11, 26.51, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:15:49.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:15:26
2025-11-03T16:15:49.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:15:49.500 [DEBUG] [Thread-118868] [transport.py] [_log()] starting thread (client mode): 0x1179b400
2025-11-03T16:15:49.500 [DEBUG] [Thread-118868] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:15:49.520 [DEBUG] [Thread-118868] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:15:49.520 [INFO] [Thread-118868] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:15:49.523 [DEBUG] [Thread-118868] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:15:49.523 [DEBUG] [Thread-118868] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:15:49.523 [DEBUG] [Thread-118868] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:15:49.523 [DEBUG] [Thread-118868] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:15:49.523 [DEBUG] [Thread-118868] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:15:49.523 [DEBUG] [Thread-118868] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:15:49.523 [DEBUG] [Thread-118868] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:15:49.523 [DEBUG] [Thread-118868] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:15:49.523 [DEBUG] [Thread-118868] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:15:49.523 [DEBUG] [Thread-118868] [transport.py] [_log()] client lang: <none>
2025-11-03T16:15:49.523 [DEBUG] [Thread-118868] [transport.py] [_log()] server lang: <none>
2025-11-03T16:15:49.523 [DEBUG] [Thread-118868] [transport.py] [_log()] kex follows: False
2025-11-03T16:15:49.523 [DEBUG] [Thread-118868] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:15:49.523 [DEBUG] [Thread-118868] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:15:49.523 [DEBUG] [Thread-118868] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:15:49.523 [DEBUG] [Thread-118868] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:15:49.523 [DEBUG] [Thread-118868] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:15:49.523 [DEBUG] [Thread-118868] [transport.py] [_log()] Compression: none
2025-11-03T16:15:49.523 [DEBUG] [Thread-118868] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:15:49.538 [DEBUG] [Thread-118868] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:15:49.538 [DEBUG] [Thread-118868] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:15:49.538 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:15:49.539 [DEBUG] [Thread-118868] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:15:49.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:15:49.539 [DEBUG] [Thread-118868] [transport.py] [_log()] userauth is OK
2025-11-03T16:15:49.539 [DEBUG] [Thread-118868] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:15:49.539 [DEBUG] [Thread-118868] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:15:49.539 [DEBUG] [Thread-118868] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:15:49.539 [DEBUG] [Thread-118868] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:15:49.555 [INFO] [Thread-118868] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:15:49.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:15:50.190 [DEBUG] [Thread-118868] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:15:50.190 [DEBUG] [Thread-118868] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:15:50.190 [DEBUG] [Thread-118868] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:15:50.232 [DEBUG] [Thread-118868] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:15:50.232 [DEBUG] [Thread-118868] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:15:50.234 [DEBUG] [Thread-118868] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:15:50.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:15:50.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:15:50.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:15:50.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:15:50.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:15:50.255 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:15:50.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:15:50.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:15:50.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:15:50.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.593852 -999.00  +26.20  38.17      7  -11.90 1 1 2 1 1   888    0 37.36 -6.89 ----- 39.8 38.2 310.0 47.5 29.2 -33.8 29.0 -33.8 29.9 -33.5 30.5 -32.7
2025-11-03T16:15:50.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:15:50.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:15:50.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.593852
2025-11-03T16:15:50.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:15:50.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:15:50.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:15:50.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:15:50.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:15:50.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:15:26', tmtdew=50.06, humidity=2.87, cloud=0.0, wind=41.11, temperature=26.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:15:08.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:15:50.256 [DEBUG] [Thread-118868] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:15:50.330 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:15:50.350 [DEBUG] [Thread-118871] [transport.py] [_log()] starting thread (client mode): 0x11798e80
2025-11-03T16:15:50.350 [DEBUG] [Thread-118871] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:15:50.365 [DEBUG] [Thread-118871] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:15:50.365 [INFO] [Thread-118871] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:15:50.372 [DEBUG] [Thread-118871] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:15:50.372 [DEBUG] [Thread-118871] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:15:50.372 [DEBUG] [Thread-118871] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:15:50.372 [DEBUG] [Thread-118871] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:15:50.372 [DEBUG] [Thread-118871] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:15:50.373 [DEBUG] [Thread-118871] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:15:50.373 [DEBUG] [Thread-118871] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:15:50.373 [DEBUG] [Thread-118871] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:15:50.373 [DEBUG] [Thread-118871] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:15:50.373 [DEBUG] [Thread-118871] [transport.py] [_log()] client lang: <none>
2025-11-03T16:15:50.373 [DEBUG] [Thread-118871] [transport.py] [_log()] server lang: <none>
2025-11-03T16:15:50.373 [DEBUG] [Thread-118871] [transport.py] [_log()] kex follows: False
2025-11-03T16:15:50.373 [DEBUG] [Thread-118871] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:15:50.373 [DEBUG] [Thread-118871] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:15:50.373 [DEBUG] [Thread-118871] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:15:50.373 [DEBUG] [Thread-118871] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:15:50.373 [DEBUG] [Thread-118871] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:15:50.373 [DEBUG] [Thread-118871] [transport.py] [_log()] Compression: none
2025-11-03T16:15:50.373 [DEBUG] [Thread-118871] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:15:50.435 [DEBUG] [Thread-118871] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:15:50.435 [DEBUG] [Thread-118871] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:15:50.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:15:50.436 [DEBUG] [Thread-118871] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:15:50.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:15:50.493 [DEBUG] [Thread-118871] [transport.py] [_log()] userauth is OK
2025-11-03T16:15:50.493 [DEBUG] [Thread-118871] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:15:50.493 [DEBUG] [Thread-118871] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:15:50.493 [DEBUG] [Thread-118871] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:15:50.493 [DEBUG] [Thread-118871] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:15:50.511 [INFO] [Thread-118871] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:15:50.511 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:15:50.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:15:51.352 [DEBUG] [Thread-118871] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:15:51.353 [DEBUG] [Thread-118871] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:15:51.400 [DEBUG] [Thread-118871] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:15:51.401 [DEBUG] [Thread-118871] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:15:51.410 [DEBUG] [Thread-118871] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:15:51.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:15:51.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:15:51.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:15:51.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:15:51.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:15:51.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:15:51.450 [DEBUG] [Thread-118871] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:15:51.896 [DEBUG] [Thread-118873 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:16:06.965 [DEBUG] [Thread-118874 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:16:12.944 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:16:12.945 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:16:21.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:16:21.443 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:16:21.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:16:21.787 [DEBUG] [Thread-118875 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:16:22.007 [DEBUG] [Thread-118876 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:16:22.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 15, 58), 50.15, 2.82, 0.0, 41.76, 26.66, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:16:22.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:15:58
2025-11-03T16:16:22.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:16:22.509 [DEBUG] [Thread-118877] [transport.py] [_log()] starting thread (client mode): 0x117992a0
2025-11-03T16:16:22.509 [DEBUG] [Thread-118877] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:16:22.529 [DEBUG] [Thread-118877] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:16:22.529 [INFO] [Thread-118877] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:16:22.532 [DEBUG] [Thread-118877] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:16:22.532 [DEBUG] [Thread-118877] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:16:22.532 [DEBUG] [Thread-118877] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:16:22.533 [DEBUG] [Thread-118877] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:16:22.533 [DEBUG] [Thread-118877] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:16:22.533 [DEBUG] [Thread-118877] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:16:22.533 [DEBUG] [Thread-118877] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:16:22.533 [DEBUG] [Thread-118877] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:16:22.533 [DEBUG] [Thread-118877] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:16:22.533 [DEBUG] [Thread-118877] [transport.py] [_log()] client lang: <none>
2025-11-03T16:16:22.533 [DEBUG] [Thread-118877] [transport.py] [_log()] server lang: <none>
2025-11-03T16:16:22.533 [DEBUG] [Thread-118877] [transport.py] [_log()] kex follows: False
2025-11-03T16:16:22.533 [DEBUG] [Thread-118877] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:16:22.533 [DEBUG] [Thread-118877] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:16:22.533 [DEBUG] [Thread-118877] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:16:22.534 [DEBUG] [Thread-118877] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:16:22.534 [DEBUG] [Thread-118877] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:16:22.534 [DEBUG] [Thread-118877] [transport.py] [_log()] Compression: none
2025-11-03T16:16:22.534 [DEBUG] [Thread-118877] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:16:22.552 [DEBUG] [Thread-118877] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:16:22.552 [DEBUG] [Thread-118877] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:16:22.552 [DEBUG] [Thread-118877] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:16:22.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:16:22.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:16:22.554 [DEBUG] [Thread-118877] [transport.py] [_log()] userauth is OK
2025-11-03T16:16:22.555 [DEBUG] [Thread-118877] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:16:22.555 [DEBUG] [Thread-118877] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:16:22.555 [DEBUG] [Thread-118877] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:16:22.555 [DEBUG] [Thread-118877] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:16:22.588 [INFO] [Thread-118877] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:16:22.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:16:23.207 [DEBUG] [Thread-118877] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:16:23.207 [DEBUG] [Thread-118877] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:16:23.208 [DEBUG] [Thread-118877] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:16:23.248 [DEBUG] [Thread-118877] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:16:23.248 [DEBUG] [Thread-118877] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:16:23.252 [DEBUG] [Thread-118877] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:16:23.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:16:23.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:16:23.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:16:23.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:16:23.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:16:23.276 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:16:23.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:16:23.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:16:23.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:16:23.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.594200 -999.00  +25.60  47.10      7  -12.00 1 1 2 1 1   888    0 38.04 4.62 ----- 47.9 47.1 312.6 57.2 29.1 -35.6 29.0 -33.2 29.7 -36.0 30.4 -32.8
2025-11-03T16:16:23.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:16:23.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:16:23.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.594200
2025-11-03T16:16:23.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:16:23.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:16:23.279 [DEBUG] [Thread-118877] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:16:23.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:16:23.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:16:23.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:16:23.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:15:58', tmtdew=50.15, humidity=2.82, cloud=0.0, wind=41.76, temperature=26.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:15:38.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:16:23.362 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:16:23.383 [DEBUG] [Thread-118880] [transport.py] [_log()] starting thread (client mode): 0xed20ac0
2025-11-03T16:16:23.383 [DEBUG] [Thread-118880] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:16:23.398 [DEBUG] [Thread-118880] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:16:23.399 [INFO] [Thread-118880] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:16:23.407 [DEBUG] [Thread-118880] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:16:23.407 [DEBUG] [Thread-118880] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:16:23.407 [DEBUG] [Thread-118880] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:16:23.407 [DEBUG] [Thread-118880] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:16:23.407 [DEBUG] [Thread-118880] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:16:23.407 [DEBUG] [Thread-118880] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:16:23.407 [DEBUG] [Thread-118880] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:16:23.407 [DEBUG] [Thread-118880] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:16:23.407 [DEBUG] [Thread-118880] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:16:23.408 [DEBUG] [Thread-118880] [transport.py] [_log()] client lang: <none>
2025-11-03T16:16:23.408 [DEBUG] [Thread-118880] [transport.py] [_log()] server lang: <none>
2025-11-03T16:16:23.408 [DEBUG] [Thread-118880] [transport.py] [_log()] kex follows: False
2025-11-03T16:16:23.408 [DEBUG] [Thread-118880] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:16:23.408 [DEBUG] [Thread-118880] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:16:23.408 [DEBUG] [Thread-118880] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:16:23.408 [DEBUG] [Thread-118880] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:16:23.408 [DEBUG] [Thread-118880] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:16:23.408 [DEBUG] [Thread-118880] [transport.py] [_log()] Compression: none
2025-11-03T16:16:23.408 [DEBUG] [Thread-118880] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:16:23.469 [DEBUG] [Thread-118880] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:16:23.470 [DEBUG] [Thread-118880] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:16:23.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:16:23.471 [DEBUG] [Thread-118880] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:16:23.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:16:23.529 [DEBUG] [Thread-118880] [transport.py] [_log()] userauth is OK
2025-11-03T16:16:23.529 [DEBUG] [Thread-118880] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:16:23.530 [DEBUG] [Thread-118880] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:16:23.530 [DEBUG] [Thread-118880] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:16:23.530 [DEBUG] [Thread-118880] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:16:23.549 [INFO] [Thread-118880] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:16:23.550 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:16:23.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:16:24.397 [DEBUG] [Thread-118880] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:16:24.397 [DEBUG] [Thread-118880] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:16:24.445 [DEBUG] [Thread-118880] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:16:24.445 [DEBUG] [Thread-118880] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:16:24.453 [DEBUG] [Thread-118880] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:16:24.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:16:24.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:16:24.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:16:24.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:16:24.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:16:24.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:16:24.485 [DEBUG] [Thread-118880] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:16:37.052 [DEBUG] [Thread-118882 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:16:52.124 [DEBUG] [Thread-118883 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:16:54.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:16:54.508 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:16:54.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:16:55.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 16, 31), 49.57, 2.92, 0.0, 41.9, 26.15, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:16:55.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:16:31
2025-11-03T16:16:55.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:16:55.561 [DEBUG] [Thread-118884] [transport.py] [_log()] starting thread (client mode): 0x11798be0
2025-11-03T16:16:55.561 [DEBUG] [Thread-118884] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:16:55.582 [DEBUG] [Thread-118884] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:16:55.582 [INFO] [Thread-118884] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:16:55.585 [DEBUG] [Thread-118884] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:16:55.585 [DEBUG] [Thread-118884] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:16:55.585 [DEBUG] [Thread-118884] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:16:55.585 [DEBUG] [Thread-118884] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:16:55.586 [DEBUG] [Thread-118884] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:16:55.586 [DEBUG] [Thread-118884] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:16:55.586 [DEBUG] [Thread-118884] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:16:55.595 [DEBUG] [Thread-118884] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:16:55.595 [DEBUG] [Thread-118884] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:16:55.595 [DEBUG] [Thread-118884] [transport.py] [_log()] client lang: <none>
2025-11-03T16:16:55.595 [DEBUG] [Thread-118884] [transport.py] [_log()] server lang: <none>
2025-11-03T16:16:55.595 [DEBUG] [Thread-118884] [transport.py] [_log()] kex follows: False
2025-11-03T16:16:55.595 [DEBUG] [Thread-118884] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:16:55.596 [DEBUG] [Thread-118884] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:16:55.596 [DEBUG] [Thread-118884] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:16:55.596 [DEBUG] [Thread-118884] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:16:55.596 [DEBUG] [Thread-118884] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:16:55.596 [DEBUG] [Thread-118884] [transport.py] [_log()] Compression: none
2025-11-03T16:16:55.596 [DEBUG] [Thread-118884] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:16:55.616 [DEBUG] [Thread-118884] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:16:55.617 [DEBUG] [Thread-118884] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:16:55.617 [DEBUG] [Thread-118884] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:16:55.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:16:55.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:16:55.620 [DEBUG] [Thread-118884] [transport.py] [_log()] userauth is OK
2025-11-03T16:16:55.620 [DEBUG] [Thread-118884] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:16:55.620 [DEBUG] [Thread-118884] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:16:55.620 [DEBUG] [Thread-118884] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:16:55.620 [DEBUG] [Thread-118884] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:16:55.656 [INFO] [Thread-118884] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:16:55.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:16:56.286 [DEBUG] [Thread-118884] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:16:56.286 [DEBUG] [Thread-118884] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:16:56.286 [DEBUG] [Thread-118884] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:16:56.327 [DEBUG] [Thread-118884] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:16:56.327 [DEBUG] [Thread-118884] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:16:56.331 [DEBUG] [Thread-118884] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:16:56.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:16:56.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:16:56.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:16:56.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:16:56.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:16:56.363 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:16:56.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:16:56.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:16:56.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:16:56.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.594547 -999.00  +25.80  42.62      7  -12.00 1 1 2 1 1   888    0 37.88 12.70 ----- 40.6 42.6 306.8 52.4 29.1 -34.1 28.9 -33.5 29.8 -33.2 30.4 -32.5
2025-11-03T16:16:56.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:16:56.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:16:56.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.594547
2025-11-03T16:16:56.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:16:56.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:16:56.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:16:56.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:16:56.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:16:56.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:16:31', tmtdew=49.57, humidity=2.92, cloud=0.0, wind=41.9, temperature=26.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:16:08.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:16:56.367 [DEBUG] [Thread-118884] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:16:56.450 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:16:56.474 [DEBUG] [Thread-118887] [transport.py] [_log()] starting thread (client mode): 0x1179b640
2025-11-03T16:16:56.475 [DEBUG] [Thread-118887] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:16:56.487 [DEBUG] [Thread-118887] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:16:56.488 [INFO] [Thread-118887] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:16:56.495 [DEBUG] [Thread-118887] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:16:56.496 [DEBUG] [Thread-118887] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:16:56.496 [DEBUG] [Thread-118887] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:16:56.496 [DEBUG] [Thread-118887] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:16:56.496 [DEBUG] [Thread-118887] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:16:56.496 [DEBUG] [Thread-118887] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:16:56.496 [DEBUG] [Thread-118887] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:16:56.496 [DEBUG] [Thread-118887] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:16:56.496 [DEBUG] [Thread-118887] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:16:56.496 [DEBUG] [Thread-118887] [transport.py] [_log()] client lang: <none>
2025-11-03T16:16:56.496 [DEBUG] [Thread-118887] [transport.py] [_log()] server lang: <none>
2025-11-03T16:16:56.496 [DEBUG] [Thread-118887] [transport.py] [_log()] kex follows: False
2025-11-03T16:16:56.496 [DEBUG] [Thread-118887] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:16:56.496 [DEBUG] [Thread-118887] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:16:56.497 [DEBUG] [Thread-118887] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:16:56.497 [DEBUG] [Thread-118887] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:16:56.497 [DEBUG] [Thread-118887] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:16:56.497 [DEBUG] [Thread-118887] [transport.py] [_log()] Compression: none
2025-11-03T16:16:56.497 [DEBUG] [Thread-118887] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:16:56.553 [DEBUG] [Thread-118887] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:16:56.554 [DEBUG] [Thread-118887] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:16:56.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:16:56.554 [DEBUG] [Thread-118887] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:16:56.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:16:56.610 [DEBUG] [Thread-118887] [transport.py] [_log()] userauth is OK
2025-11-03T16:16:56.611 [DEBUG] [Thread-118887] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:16:56.611 [DEBUG] [Thread-118887] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:16:56.611 [DEBUG] [Thread-118887] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:16:56.611 [DEBUG] [Thread-118887] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:16:56.630 [INFO] [Thread-118887] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:16:56.630 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:16:56.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:16:57.496 [DEBUG] [Thread-118887] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:16:57.496 [DEBUG] [Thread-118887] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:16:57.543 [DEBUG] [Thread-118887] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:16:57.544 [DEBUG] [Thread-118887] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:16:57.552 [DEBUG] [Thread-118887] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:16:57.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:16:57.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:16:57.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:16:57.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:16:57.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:16:57.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:16:57.587 [DEBUG] [Thread-118887] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:17:07.161 [DEBUG] [Thread-118889 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:17:13.088 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:17:13.089 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:17:21.870 [DEBUG] [Thread-118890 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:17:22.211 [DEBUG] [Thread-118891 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:17:27.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:17:27.610 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:17:27.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:17:28.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 17, 3), 49.15, 3.02, 0.0, 36.45, 26.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:17:28.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:17:03
2025-11-03T16:17:28.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:17:28.678 [DEBUG] [Thread-118892] [transport.py] [_log()] starting thread (client mode): 0xedd5d80
2025-11-03T16:17:28.679 [DEBUG] [Thread-118892] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:17:28.700 [DEBUG] [Thread-118892] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:17:28.700 [INFO] [Thread-118892] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:17:28.702 [DEBUG] [Thread-118892] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:17:28.702 [DEBUG] [Thread-118892] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:17:28.702 [DEBUG] [Thread-118892] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:17:28.702 [DEBUG] [Thread-118892] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:17:28.702 [DEBUG] [Thread-118892] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:17:28.702 [DEBUG] [Thread-118892] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:17:28.702 [DEBUG] [Thread-118892] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:17:28.702 [DEBUG] [Thread-118892] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:17:28.702 [DEBUG] [Thread-118892] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:17:28.702 [DEBUG] [Thread-118892] [transport.py] [_log()] client lang: <none>
2025-11-03T16:17:28.702 [DEBUG] [Thread-118892] [transport.py] [_log()] server lang: <none>
2025-11-03T16:17:28.702 [DEBUG] [Thread-118892] [transport.py] [_log()] kex follows: False
2025-11-03T16:17:28.702 [DEBUG] [Thread-118892] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:17:28.702 [DEBUG] [Thread-118892] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:17:28.702 [DEBUG] [Thread-118892] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:17:28.703 [DEBUG] [Thread-118892] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:17:28.703 [DEBUG] [Thread-118892] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:17:28.703 [DEBUG] [Thread-118892] [transport.py] [_log()] Compression: none
2025-11-03T16:17:28.703 [DEBUG] [Thread-118892] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:17:28.721 [DEBUG] [Thread-118892] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:17:28.721 [DEBUG] [Thread-118892] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:17:28.722 [DEBUG] [Thread-118892] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:17:28.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:17:28.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:17:28.724 [DEBUG] [Thread-118892] [transport.py] [_log()] userauth is OK
2025-11-03T16:17:28.725 [DEBUG] [Thread-118892] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:17:28.725 [DEBUG] [Thread-118892] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:17:28.725 [DEBUG] [Thread-118892] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:17:28.725 [DEBUG] [Thread-118892] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:17:28.749 [INFO] [Thread-118892] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:17:28.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:17:29.383 [DEBUG] [Thread-118892] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:17:29.383 [DEBUG] [Thread-118892] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:17:29.384 [DEBUG] [Thread-118892] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:17:29.424 [DEBUG] [Thread-118892] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:17:29.424 [DEBUG] [Thread-118892] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:17:29.428 [DEBUG] [Thread-118892] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:17:29.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:17:29.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:17:29.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:17:29.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:17:29.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:17:29.451 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:17:29.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:17:29.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:17:29.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:17:29.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.594894 -999.00  +26.00  31.38      7  -11.90 1 1 2 1 1   888    0 37.30 18.28 ----- 41.0 31.4 321.2 44.7 29.1 -33.6 28.9 -33.6 29.7 -33.5 30.4 -33.0
2025-11-03T16:17:29.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:17:29.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:17:29.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.594894
2025-11-03T16:17:29.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:17:29.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:17:29.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:17:29.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:17:29.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:17:29.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:17:03', tmtdew=49.15, humidity=3.02, cloud=0.0, wind=36.45, temperature=26.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:16:38.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:17:29.455 [DEBUG] [Thread-118892] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:17:29.548 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:17:29.567 [DEBUG] [Thread-118895] [transport.py] [_log()] starting thread (client mode): 0x117be380
2025-11-03T16:17:29.568 [DEBUG] [Thread-118895] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:17:29.585 [DEBUG] [Thread-118895] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:17:29.585 [INFO] [Thread-118895] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:17:29.593 [DEBUG] [Thread-118895] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:17:29.593 [DEBUG] [Thread-118895] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:17:29.593 [DEBUG] [Thread-118895] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:17:29.593 [DEBUG] [Thread-118895] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:17:29.593 [DEBUG] [Thread-118895] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:17:29.593 [DEBUG] [Thread-118895] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:17:29.593 [DEBUG] [Thread-118895] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:17:29.593 [DEBUG] [Thread-118895] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:17:29.593 [DEBUG] [Thread-118895] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:17:29.593 [DEBUG] [Thread-118895] [transport.py] [_log()] client lang: <none>
2025-11-03T16:17:29.593 [DEBUG] [Thread-118895] [transport.py] [_log()] server lang: <none>
2025-11-03T16:17:29.593 [DEBUG] [Thread-118895] [transport.py] [_log()] kex follows: False
2025-11-03T16:17:29.593 [DEBUG] [Thread-118895] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:17:29.593 [DEBUG] [Thread-118895] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:17:29.593 [DEBUG] [Thread-118895] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:17:29.593 [DEBUG] [Thread-118895] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:17:29.593 [DEBUG] [Thread-118895] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:17:29.593 [DEBUG] [Thread-118895] [transport.py] [_log()] Compression: none
2025-11-03T16:17:29.593 [DEBUG] [Thread-118895] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:17:29.649 [DEBUG] [Thread-118895] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:17:29.650 [DEBUG] [Thread-118895] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:17:29.650 [DEBUG] [Thread-118895] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:17:29.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:17:29.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:17:29.707 [DEBUG] [Thread-118895] [transport.py] [_log()] userauth is OK
2025-11-03T16:17:29.707 [DEBUG] [Thread-118895] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:17:29.707 [DEBUG] [Thread-118895] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:17:29.707 [DEBUG] [Thread-118895] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:17:29.707 [DEBUG] [Thread-118895] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:17:29.722 [INFO] [Thread-118895] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:17:29.722 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:17:29.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:17:30.623 [DEBUG] [Thread-118895] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:17:30.623 [DEBUG] [Thread-118895] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:17:30.671 [DEBUG] [Thread-118895] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:17:30.672 [DEBUG] [Thread-118895] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:17:30.681 [DEBUG] [Thread-118895] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:17:30.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:17:30.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:17:30.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:17:30.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:17:30.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:17:30.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:17:30.718 [DEBUG] [Thread-118895] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:17:37.246 [DEBUG] [Thread-118898 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:17:52.308 [DEBUG] [Thread-118899 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:17:55.812 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:18:00.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:18:00.740 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:18:00.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:18:01.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 17, 35), 49.48, 2.97, 0.0, 33.01, 26.12, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:18:01.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:17:35
2025-11-03T16:18:01.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:18:01.838 [DEBUG] [Thread-118900] [transport.py] [_log()] starting thread (client mode): 0x1179b310
2025-11-03T16:18:01.839 [DEBUG] [Thread-118900] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:18:01.851 [DEBUG] [Thread-118900] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:18:01.852 [INFO] [Thread-118900] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:18:01.856 [DEBUG] [Thread-118900] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:18:01.856 [DEBUG] [Thread-118900] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:18:01.856 [DEBUG] [Thread-118900] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:18:01.856 [DEBUG] [Thread-118900] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:18:01.856 [DEBUG] [Thread-118900] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:18:01.856 [DEBUG] [Thread-118900] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:18:01.856 [DEBUG] [Thread-118900] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:18:01.856 [DEBUG] [Thread-118900] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:18:01.856 [DEBUG] [Thread-118900] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:18:01.856 [DEBUG] [Thread-118900] [transport.py] [_log()] client lang: <none>
2025-11-03T16:18:01.856 [DEBUG] [Thread-118900] [transport.py] [_log()] server lang: <none>
2025-11-03T16:18:01.857 [DEBUG] [Thread-118900] [transport.py] [_log()] kex follows: False
2025-11-03T16:18:01.857 [DEBUG] [Thread-118900] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:18:01.857 [DEBUG] [Thread-118900] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:18:01.858 [DEBUG] [Thread-118900] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:18:01.858 [DEBUG] [Thread-118900] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:18:01.858 [DEBUG] [Thread-118900] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:18:01.858 [DEBUG] [Thread-118900] [transport.py] [_log()] Compression: none
2025-11-03T16:18:01.858 [DEBUG] [Thread-118900] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:18:01.878 [DEBUG] [Thread-118900] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:18:01.879 [DEBUG] [Thread-118900] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:18:01.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:18:01.881 [DEBUG] [Thread-118900] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:18:01.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:18:01.883 [DEBUG] [Thread-118900] [transport.py] [_log()] userauth is OK
2025-11-03T16:18:01.883 [DEBUG] [Thread-118900] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:18:01.883 [DEBUG] [Thread-118900] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:18:01.883 [DEBUG] [Thread-118900] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:18:01.884 [DEBUG] [Thread-118900] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:18:01.921 [INFO] [Thread-118900] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:18:01.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:18:02.577 [DEBUG] [Thread-118900] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:18:02.578 [DEBUG] [Thread-118900] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:18:02.579 [DEBUG] [Thread-118900] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:18:02.619 [DEBUG] [Thread-118900] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:18:02.619 [DEBUG] [Thread-118900] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:18:02.622 [DEBUG] [Thread-118900] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:18:02.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:18:02.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:18:02.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:18:02.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:18:02.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:18:02.643 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:18:02.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:18:02.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:18:02.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:18:02.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.595241 -999.00  +25.70  42.08      7  -12.30 1 1 2 1 1   888    0 36.49 23.22 ----- 37.4 42.1 306.6 49.6 29.1 -34.4 28.8 -34.1 29.7 -34.1 30.2 -32.7
2025-11-03T16:18:02.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:18:02.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:18:02.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.595241
2025-11-03T16:18:02.649 [DEBUG] [Thread-118900] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:18:02.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:18:02.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:18:02.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:18:02.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:18:02.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:18:02.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:17:35', tmtdew=49.48, humidity=2.97, cloud=0.0, wind=33.01, temperature=26.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:17:08.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:18:02.733 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:18:02.753 [DEBUG] [Thread-118903] [transport.py] [_log()] starting thread (client mode): 0xeda0df0
2025-11-03T16:18:02.753 [DEBUG] [Thread-118903] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:18:02.770 [DEBUG] [Thread-118903] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:18:02.770 [INFO] [Thread-118903] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:18:02.778 [DEBUG] [Thread-118903] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:18:02.778 [DEBUG] [Thread-118903] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:18:02.778 [DEBUG] [Thread-118903] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:18:02.778 [DEBUG] [Thread-118903] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:18:02.778 [DEBUG] [Thread-118903] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:18:02.778 [DEBUG] [Thread-118903] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:18:02.778 [DEBUG] [Thread-118903] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:18:02.778 [DEBUG] [Thread-118903] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:18:02.778 [DEBUG] [Thread-118903] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:18:02.779 [DEBUG] [Thread-118903] [transport.py] [_log()] client lang: <none>
2025-11-03T16:18:02.779 [DEBUG] [Thread-118903] [transport.py] [_log()] server lang: <none>
2025-11-03T16:18:02.779 [DEBUG] [Thread-118903] [transport.py] [_log()] kex follows: False
2025-11-03T16:18:02.779 [DEBUG] [Thread-118903] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:18:02.779 [DEBUG] [Thread-118903] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:18:02.779 [DEBUG] [Thread-118903] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:18:02.779 [DEBUG] [Thread-118903] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:18:02.779 [DEBUG] [Thread-118903] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:18:02.779 [DEBUG] [Thread-118903] [transport.py] [_log()] Compression: none
2025-11-03T16:18:02.779 [DEBUG] [Thread-118903] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:18:02.844 [DEBUG] [Thread-118903] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:18:02.845 [DEBUG] [Thread-118903] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:18:02.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:18:02.846 [DEBUG] [Thread-118903] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:18:02.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:18:02.904 [DEBUG] [Thread-118903] [transport.py] [_log()] userauth is OK
2025-11-03T16:18:02.904 [DEBUG] [Thread-118903] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:18:02.904 [DEBUG] [Thread-118903] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:18:02.905 [DEBUG] [Thread-118903] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:18:02.905 [DEBUG] [Thread-118903] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:18:02.924 [INFO] [Thread-118903] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:18:02.924 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:18:02.925 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:18:03.754 [DEBUG] [Thread-118903] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:18:03.754 [DEBUG] [Thread-118903] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:18:03.802 [DEBUG] [Thread-118903] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:18:03.802 [DEBUG] [Thread-118903] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:18:03.811 [DEBUG] [Thread-118903] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:18:03.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:18:03.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:18:03.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:18:03.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:18:03.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:18:03.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:18:03.843 [DEBUG] [Thread-118903] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:18:07.355 [DEBUG] [Thread-118905 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:18:13.239 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:18:13.241 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:18:22.164 [DEBUG] [Thread-118906 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:18:22.455 [DEBUG] [Thread-118907 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:18:33.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:18:33.866 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:18:33.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:18:34.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 18, 8), 50.3, 2.79, 0.0, 28.78, 26.33, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:18:34.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:18:08
2025-11-03T16:18:34.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:18:34.840 [DEBUG] [Thread-118908] [transport.py] [_log()] starting thread (client mode): 0xeda1450
2025-11-03T16:18:34.840 [DEBUG] [Thread-118908] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:18:34.860 [DEBUG] [Thread-118908] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:18:34.860 [INFO] [Thread-118908] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:18:34.861 [DEBUG] [Thread-118908] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:18:34.862 [DEBUG] [Thread-118908] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:18:34.862 [DEBUG] [Thread-118908] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:18:34.862 [DEBUG] [Thread-118908] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:18:34.862 [DEBUG] [Thread-118908] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:18:34.862 [DEBUG] [Thread-118908] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:18:34.862 [DEBUG] [Thread-118908] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:18:34.862 [DEBUG] [Thread-118908] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:18:34.862 [DEBUG] [Thread-118908] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:18:34.862 [DEBUG] [Thread-118908] [transport.py] [_log()] client lang: <none>
2025-11-03T16:18:34.862 [DEBUG] [Thread-118908] [transport.py] [_log()] server lang: <none>
2025-11-03T16:18:34.862 [DEBUG] [Thread-118908] [transport.py] [_log()] kex follows: False
2025-11-03T16:18:34.862 [DEBUG] [Thread-118908] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:18:34.862 [DEBUG] [Thread-118908] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:18:34.862 [DEBUG] [Thread-118908] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:18:34.862 [DEBUG] [Thread-118908] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:18:34.862 [DEBUG] [Thread-118908] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:18:34.862 [DEBUG] [Thread-118908] [transport.py] [_log()] Compression: none
2025-11-03T16:18:34.862 [DEBUG] [Thread-118908] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:18:34.876 [DEBUG] [Thread-118908] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:18:34.877 [DEBUG] [Thread-118908] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:18:34.877 [DEBUG] [Thread-118908] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:18:34.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:18:34.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:18:34.879 [DEBUG] [Thread-118908] [transport.py] [_log()] userauth is OK
2025-11-03T16:18:34.879 [DEBUG] [Thread-118908] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:18:34.879 [DEBUG] [Thread-118908] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:18:34.879 [DEBUG] [Thread-118908] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:18:34.879 [DEBUG] [Thread-118908] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:18:34.900 [INFO] [Thread-118908] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:18:34.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:18:35.290 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:18:35.531 [DEBUG] [Thread-118908] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:18:35.531 [DEBUG] [Thread-118908] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:18:35.532 [DEBUG] [Thread-118908] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:18:35.572 [DEBUG] [Thread-118908] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:18:35.572 [DEBUG] [Thread-118908] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:18:35.576 [DEBUG] [Thread-118908] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:18:35.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:18:35.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:18:35.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:18:35.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:18:35.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:18:35.610 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:18:35.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:18:35.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:18:35.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:18:35.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.595589 -999.00  +25.80  32.08      7  -12.00 1 1 2 1 1   888    0 37.38 29.59 ----- 30.0 32.1 309.8 41.0 28.9 -33.8 28.8 -33.5 29.8 -31.5 30.2 -32.1
2025-11-03T16:18:35.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:18:35.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:18:35.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.595589
2025-11-03T16:18:35.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:18:35.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:18:35.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:18:35.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:18:35.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:18:35.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:18:08', tmtdew=50.3, humidity=2.79, cloud=0.0, wind=28.78, temperature=26.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:17:38.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:18:35.614 [DEBUG] [Thread-118908] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:18:35.698 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:18:35.723 [DEBUG] [Thread-118911] [transport.py] [_log()] starting thread (client mode): 0x117bd180
2025-11-03T16:18:35.724 [DEBUG] [Thread-118911] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:18:35.736 [DEBUG] [Thread-118911] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:18:35.736 [INFO] [Thread-118911] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:18:35.744 [DEBUG] [Thread-118911] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:18:35.744 [DEBUG] [Thread-118911] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:18:35.744 [DEBUG] [Thread-118911] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:18:35.744 [DEBUG] [Thread-118911] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:18:35.744 [DEBUG] [Thread-118911] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:18:35.745 [DEBUG] [Thread-118911] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:18:35.745 [DEBUG] [Thread-118911] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:18:35.745 [DEBUG] [Thread-118911] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:18:35.745 [DEBUG] [Thread-118911] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:18:35.745 [DEBUG] [Thread-118911] [transport.py] [_log()] client lang: <none>
2025-11-03T16:18:35.745 [DEBUG] [Thread-118911] [transport.py] [_log()] server lang: <none>
2025-11-03T16:18:35.745 [DEBUG] [Thread-118911] [transport.py] [_log()] kex follows: False
2025-11-03T16:18:35.745 [DEBUG] [Thread-118911] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:18:35.746 [DEBUG] [Thread-118911] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:18:35.746 [DEBUG] [Thread-118911] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:18:35.746 [DEBUG] [Thread-118911] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:18:35.746 [DEBUG] [Thread-118911] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:18:35.746 [DEBUG] [Thread-118911] [transport.py] [_log()] Compression: none
2025-11-03T16:18:35.746 [DEBUG] [Thread-118911] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:18:35.804 [DEBUG] [Thread-118911] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:18:35.805 [DEBUG] [Thread-118911] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:18:35.806 [DEBUG] [Thread-118911] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:18:35.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:18:35.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:18:35.861 [DEBUG] [Thread-118911] [transport.py] [_log()] userauth is OK
2025-11-03T16:18:35.861 [DEBUG] [Thread-118911] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:18:35.861 [DEBUG] [Thread-118911] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:18:35.862 [DEBUG] [Thread-118911] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:18:35.862 [DEBUG] [Thread-118911] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:18:35.890 [INFO] [Thread-118911] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:18:35.891 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:18:35.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:18:36.709 [DEBUG] [Thread-118911] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:18:36.709 [DEBUG] [Thread-118911] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:18:36.756 [DEBUG] [Thread-118911] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:18:36.757 [DEBUG] [Thread-118911] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:18:36.766 [DEBUG] [Thread-118911] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:18:36.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:18:36.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:18:36.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:18:36.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:18:36.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:18:36.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:18:36.801 [DEBUG] [Thread-118911] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:18:37.496 [DEBUG] [Thread-118913 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:18:52.571 [DEBUG] [Thread-118914 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:19:06.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:19:06.824 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:19:06.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:19:07.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 18, 41), 50.15, 2.81, 0.0, 33.49, 26.17, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:19:07.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:18:41
2025-11-03T16:19:07.611 [DEBUG] [Thread-118915 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:19:07.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:19:07.789 [DEBUG] [Thread-118916] [transport.py] [_log()] starting thread (client mode): 0x117bc430
2025-11-03T16:19:07.789 [DEBUG] [Thread-118916] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:19:07.800 [DEBUG] [Thread-118916] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:19:07.800 [INFO] [Thread-118916] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:19:07.803 [DEBUG] [Thread-118916] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:19:07.803 [DEBUG] [Thread-118916] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:19:07.803 [DEBUG] [Thread-118916] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:19:07.804 [DEBUG] [Thread-118916] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:19:07.804 [DEBUG] [Thread-118916] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:19:07.804 [DEBUG] [Thread-118916] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:19:07.804 [DEBUG] [Thread-118916] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:19:07.804 [DEBUG] [Thread-118916] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:19:07.804 [DEBUG] [Thread-118916] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:19:07.804 [DEBUG] [Thread-118916] [transport.py] [_log()] client lang: <none>
2025-11-03T16:19:07.804 [DEBUG] [Thread-118916] [transport.py] [_log()] server lang: <none>
2025-11-03T16:19:07.804 [DEBUG] [Thread-118916] [transport.py] [_log()] kex follows: False
2025-11-03T16:19:07.804 [DEBUG] [Thread-118916] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:19:07.804 [DEBUG] [Thread-118916] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:19:07.804 [DEBUG] [Thread-118916] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:19:07.804 [DEBUG] [Thread-118916] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:19:07.804 [DEBUG] [Thread-118916] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:19:07.804 [DEBUG] [Thread-118916] [transport.py] [_log()] Compression: none
2025-11-03T16:19:07.804 [DEBUG] [Thread-118916] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:19:07.820 [DEBUG] [Thread-118916] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:19:07.821 [DEBUG] [Thread-118916] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:19:07.821 [DEBUG] [Thread-118916] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:19:07.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:19:07.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:19:07.822 [DEBUG] [Thread-118916] [transport.py] [_log()] userauth is OK
2025-11-03T16:19:07.822 [DEBUG] [Thread-118916] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:19:07.822 [DEBUG] [Thread-118916] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:19:07.822 [DEBUG] [Thread-118916] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:19:07.822 [DEBUG] [Thread-118916] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:19:07.840 [INFO] [Thread-118916] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:19:07.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:19:08.456 [DEBUG] [Thread-118916] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:19:08.456 [DEBUG] [Thread-118916] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:19:08.456 [DEBUG] [Thread-118916] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:19:08.498 [DEBUG] [Thread-118916] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:19:08.498 [DEBUG] [Thread-118916] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:19:08.500 [DEBUG] [Thread-118916] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:19:08.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:19:08.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:19:08.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:19:08.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:19:08.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:19:08.517 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:19:08.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:19:08.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:19:08.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:19:08.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.595936 -999.00  +26.20  26.09      7  -11.90 1 1 1 1 1   888    0 38.93 36.42 ----- 30.9 26.1 311.0 37.4 29.1 -33.5 28.9 -32.9 29.8 -31.5 30.4 -32.3
2025-11-03T16:19:08.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:19:08.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:19:08.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.595936
2025-11-03T16:19:08.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:19:08.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:19:08.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:19:08.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:19:08.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:19:08.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:18:41', tmtdew=50.15, humidity=2.81, cloud=0.0, wind=33.49, temperature=26.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:18:08.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:19:08.519 [DEBUG] [Thread-118916] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:19:08.591 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:19:08.610 [DEBUG] [Thread-118919] [transport.py] [_log()] starting thread (client mode): 0xed2d930
2025-11-03T16:19:08.610 [DEBUG] [Thread-118919] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:19:08.624 [DEBUG] [Thread-118919] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:19:08.625 [INFO] [Thread-118919] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:19:08.632 [DEBUG] [Thread-118919] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:19:08.632 [DEBUG] [Thread-118919] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:19:08.632 [DEBUG] [Thread-118919] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:19:08.632 [DEBUG] [Thread-118919] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:19:08.632 [DEBUG] [Thread-118919] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:19:08.632 [DEBUG] [Thread-118919] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:19:08.632 [DEBUG] [Thread-118919] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:19:08.632 [DEBUG] [Thread-118919] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:19:08.632 [DEBUG] [Thread-118919] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:19:08.633 [DEBUG] [Thread-118919] [transport.py] [_log()] client lang: <none>
2025-11-03T16:19:08.633 [DEBUG] [Thread-118919] [transport.py] [_log()] server lang: <none>
2025-11-03T16:19:08.633 [DEBUG] [Thread-118919] [transport.py] [_log()] kex follows: False
2025-11-03T16:19:08.633 [DEBUG] [Thread-118919] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:19:08.633 [DEBUG] [Thread-118919] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:19:08.633 [DEBUG] [Thread-118919] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:19:08.633 [DEBUG] [Thread-118919] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:19:08.633 [DEBUG] [Thread-118919] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:19:08.633 [DEBUG] [Thread-118919] [transport.py] [_log()] Compression: none
2025-11-03T16:19:08.633 [DEBUG] [Thread-118919] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:19:08.691 [DEBUG] [Thread-118919] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:19:08.692 [DEBUG] [Thread-118919] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:19:08.692 [DEBUG] [Thread-118919] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:19:08.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:19:08.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:19:08.749 [DEBUG] [Thread-118919] [transport.py] [_log()] userauth is OK
2025-11-03T16:19:08.749 [DEBUG] [Thread-118919] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:19:08.749 [DEBUG] [Thread-118919] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:19:08.749 [DEBUG] [Thread-118919] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:19:08.749 [DEBUG] [Thread-118919] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:19:08.767 [INFO] [Thread-118919] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:19:08.767 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:19:08.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:19:09.643 [DEBUG] [Thread-118919] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:19:09.644 [DEBUG] [Thread-118919] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:19:09.692 [DEBUG] [Thread-118919] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:19:09.692 [DEBUG] [Thread-118919] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:19:09.701 [DEBUG] [Thread-118919] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:19:09.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:19:09.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:19:09.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:19:09.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:19:09.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:19:09.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:19:09.739 [DEBUG] [Thread-118919] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:19:13.384 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:19:13.386 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:19:22.296 [DEBUG] [Thread-118921 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:19:22.651 [DEBUG] [Thread-118922 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:19:37.715 [DEBUG] [Thread-118923 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:19:38.670 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:19:39.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:19:39.762 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:19:39.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:19:40.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 19, 13), 49.92, 2.86, 0.0, 36.45, 26.1, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:19:40.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:19:13
2025-11-03T16:19:40.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:19:40.838 [DEBUG] [Thread-118924] [transport.py] [_log()] starting thread (client mode): 0x11782f80
2025-11-03T16:19:40.839 [DEBUG] [Thread-118924] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:19:40.845 [DEBUG] [Thread-118924] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:19:40.845 [INFO] [Thread-118924] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:19:40.847 [DEBUG] [Thread-118924] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:19:40.847 [DEBUG] [Thread-118924] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:19:40.847 [DEBUG] [Thread-118924] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:19:40.847 [DEBUG] [Thread-118924] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:19:40.847 [DEBUG] [Thread-118924] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:19:40.847 [DEBUG] [Thread-118924] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:19:40.847 [DEBUG] [Thread-118924] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:19:40.847 [DEBUG] [Thread-118924] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:19:40.847 [DEBUG] [Thread-118924] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:19:40.848 [DEBUG] [Thread-118924] [transport.py] [_log()] client lang: <none>
2025-11-03T16:19:40.848 [DEBUG] [Thread-118924] [transport.py] [_log()] server lang: <none>
2025-11-03T16:19:40.848 [DEBUG] [Thread-118924] [transport.py] [_log()] kex follows: False
2025-11-03T16:19:40.848 [DEBUG] [Thread-118924] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:19:40.848 [DEBUG] [Thread-118924] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:19:40.848 [DEBUG] [Thread-118924] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:19:40.848 [DEBUG] [Thread-118924] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:19:40.848 [DEBUG] [Thread-118924] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:19:40.848 [DEBUG] [Thread-118924] [transport.py] [_log()] Compression: none
2025-11-03T16:19:40.848 [DEBUG] [Thread-118924] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:19:40.864 [DEBUG] [Thread-118924] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:19:40.864 [DEBUG] [Thread-118924] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:19:40.865 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:19:40.866 [DEBUG] [Thread-118924] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:19:40.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:19:40.868 [DEBUG] [Thread-118924] [transport.py] [_log()] userauth is OK
2025-11-03T16:19:40.868 [DEBUG] [Thread-118924] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:19:40.868 [DEBUG] [Thread-118924] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:19:40.869 [DEBUG] [Thread-118924] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:19:40.869 [DEBUG] [Thread-118924] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:19:40.885 [INFO] [Thread-118924] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:19:40.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:19:41.536 [DEBUG] [Thread-118924] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:19:41.536 [DEBUG] [Thread-118924] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:19:41.537 [DEBUG] [Thread-118924] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:19:41.576 [DEBUG] [Thread-118924] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:19:41.576 [DEBUG] [Thread-118924] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:19:41.578 [DEBUG] [Thread-118924] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:19:41.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:19:41.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:19:41.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:19:41.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:19:41.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:19:41.595 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:19:41.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:19:41.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:19:41.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:19:41.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.596630 -999.00  +26.20  37.14      7  -11.40 1 1 2 1 1   888    0 38.67 47.67 ----- 34.7 37.1 289.8 46.3 29.1 -33.7 28.9 -32.8 29.9 -33.5 30.4 -32.9
2025-11-03T16:19:41.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:19:41.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:19:41.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.596630
2025-11-03T16:19:41.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:19:41.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:19:41.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:19:41.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:19:41.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:19:41.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:19:13', tmtdew=49.92, humidity=2.86, cloud=0.0, wind=36.45, temperature=26.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:19:08.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:19:41.597 [DEBUG] [Thread-118924] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:19:41.669 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:19:41.689 [DEBUG] [Thread-118927] [transport.py] [_log()] starting thread (client mode): 0x11798160
2025-11-03T16:19:41.689 [DEBUG] [Thread-118927] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:19:41.709 [DEBUG] [Thread-118927] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:19:41.709 [INFO] [Thread-118927] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:19:41.717 [DEBUG] [Thread-118927] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:19:41.717 [DEBUG] [Thread-118927] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:19:41.717 [DEBUG] [Thread-118927] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:19:41.717 [DEBUG] [Thread-118927] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:19:41.717 [DEBUG] [Thread-118927] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:19:41.717 [DEBUG] [Thread-118927] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:19:41.717 [DEBUG] [Thread-118927] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:19:41.717 [DEBUG] [Thread-118927] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:19:41.717 [DEBUG] [Thread-118927] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:19:41.717 [DEBUG] [Thread-118927] [transport.py] [_log()] client lang: <none>
2025-11-03T16:19:41.717 [DEBUG] [Thread-118927] [transport.py] [_log()] server lang: <none>
2025-11-03T16:19:41.717 [DEBUG] [Thread-118927] [transport.py] [_log()] kex follows: False
2025-11-03T16:19:41.717 [DEBUG] [Thread-118927] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:19:41.717 [DEBUG] [Thread-118927] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:19:41.717 [DEBUG] [Thread-118927] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:19:41.717 [DEBUG] [Thread-118927] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:19:41.717 [DEBUG] [Thread-118927] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:19:41.717 [DEBUG] [Thread-118927] [transport.py] [_log()] Compression: none
2025-11-03T16:19:41.717 [DEBUG] [Thread-118927] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:19:41.773 [DEBUG] [Thread-118927] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:19:41.773 [DEBUG] [Thread-118927] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:19:41.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:19:41.773 [DEBUG] [Thread-118927] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:19:41.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:19:41.829 [DEBUG] [Thread-118927] [transport.py] [_log()] userauth is OK
2025-11-03T16:19:41.829 [DEBUG] [Thread-118927] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:19:41.829 [DEBUG] [Thread-118927] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:19:41.829 [DEBUG] [Thread-118927] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:19:41.830 [DEBUG] [Thread-118927] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:19:41.847 [INFO] [Thread-118927] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:19:41.847 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:19:41.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:19:42.687 [DEBUG] [Thread-118927] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:19:42.687 [DEBUG] [Thread-118927] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:19:42.735 [DEBUG] [Thread-118927] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:19:42.736 [DEBUG] [Thread-118927] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:19:42.744 [DEBUG] [Thread-118927] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:19:42.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:19:42.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:19:42.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:19:42.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:19:42.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:19:42.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:19:42.776 [DEBUG] [Thread-118927] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:19:52.753 [DEBUG] [Thread-118929 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:20:03.152 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:20:07.827 [DEBUG] [Thread-118930 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:20:12.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:20:12.781 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:20:12.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:20:13.526 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:20:13.526 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:20:13.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 19, 45), 48.55, 2.97, 0.0, 37.65, 26.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:20:13.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:19:45
2025-11-03T16:20:13.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:20:13.901 [DEBUG] [Thread-118931] [transport.py] [_log()] starting thread (client mode): 0xeda10f0
2025-11-03T16:20:13.901 [DEBUG] [Thread-118931] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:20:13.921 [DEBUG] [Thread-118931] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:20:13.922 [INFO] [Thread-118931] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:20:13.925 [DEBUG] [Thread-118931] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:20:13.925 [DEBUG] [Thread-118931] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:20:13.925 [DEBUG] [Thread-118931] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:20:13.925 [DEBUG] [Thread-118931] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:20:13.925 [DEBUG] [Thread-118931] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:20:13.925 [DEBUG] [Thread-118931] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:20:13.925 [DEBUG] [Thread-118931] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:20:13.925 [DEBUG] [Thread-118931] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:20:13.925 [DEBUG] [Thread-118931] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:20:13.925 [DEBUG] [Thread-118931] [transport.py] [_log()] client lang: <none>
2025-11-03T16:20:13.925 [DEBUG] [Thread-118931] [transport.py] [_log()] server lang: <none>
2025-11-03T16:20:13.925 [DEBUG] [Thread-118931] [transport.py] [_log()] kex follows: False
2025-11-03T16:20:13.925 [DEBUG] [Thread-118931] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:20:13.925 [DEBUG] [Thread-118931] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:20:13.926 [DEBUG] [Thread-118931] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:20:13.926 [DEBUG] [Thread-118931] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:20:13.926 [DEBUG] [Thread-118931] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:20:13.926 [DEBUG] [Thread-118931] [transport.py] [_log()] Compression: none
2025-11-03T16:20:13.926 [DEBUG] [Thread-118931] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:20:13.943 [DEBUG] [Thread-118931] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:20:13.944 [DEBUG] [Thread-118931] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:20:13.944 [DEBUG] [Thread-118931] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:20:13.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:20:13.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:20:13.946 [DEBUG] [Thread-118931] [transport.py] [_log()] userauth is OK
2025-11-03T16:20:13.947 [DEBUG] [Thread-118931] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:20:13.947 [DEBUG] [Thread-118931] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:20:13.947 [DEBUG] [Thread-118931] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:20:13.947 [DEBUG] [Thread-118931] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:20:13.972 [INFO] [Thread-118931] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:20:13.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:20:15.495 [DEBUG] [Thread-118931] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:20:15.495 [DEBUG] [Thread-118931] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:20:15.495 [DEBUG] [Thread-118931] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:20:15.536 [DEBUG] [Thread-118931] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:20:15.536 [DEBUG] [Thread-118931] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:20:15.538 [DEBUG] [Thread-118931] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:20:15.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:20:15.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:20:15.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:20:15.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:20:15.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:20:15.732 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:20:15.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:20:15.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:20:15.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:20:15.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.596978 -999.00  +25.90  34.99      7  -11.30 1 1 2 1 1   888    0 38.91 44.45 ----- 31.4 35.0 293.2 39.4 29.1 -34.6 28.9 -33.1 29.7 -33.9 30.3 -33.0
2025-11-03T16:20:15.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:20:15.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:20:15.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.596978
2025-11-03T16:20:15.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:20:15.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:20:15.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:20:15.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:20:15.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:20:15.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:19:45', tmtdew=48.55, humidity=2.97, cloud=0.0, wind=37.65, temperature=26.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:19:38.899', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:20:15.735 [DEBUG] [Thread-118931] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:20:15.817 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:20:15.836 [DEBUG] [Thread-118934] [transport.py] [_log()] starting thread (client mode): 0xedd6da0
2025-11-03T16:20:15.837 [DEBUG] [Thread-118934] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:20:15.852 [DEBUG] [Thread-118934] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:20:15.852 [INFO] [Thread-118934] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:20:15.859 [DEBUG] [Thread-118934] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:20:15.860 [DEBUG] [Thread-118934] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:20:15.860 [DEBUG] [Thread-118934] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:20:15.860 [DEBUG] [Thread-118934] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:20:15.860 [DEBUG] [Thread-118934] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:20:15.860 [DEBUG] [Thread-118934] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:20:15.860 [DEBUG] [Thread-118934] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:20:15.860 [DEBUG] [Thread-118934] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:20:15.860 [DEBUG] [Thread-118934] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:20:15.860 [DEBUG] [Thread-118934] [transport.py] [_log()] client lang: <none>
2025-11-03T16:20:15.860 [DEBUG] [Thread-118934] [transport.py] [_log()] server lang: <none>
2025-11-03T16:20:15.860 [DEBUG] [Thread-118934] [transport.py] [_log()] kex follows: False
2025-11-03T16:20:15.860 [DEBUG] [Thread-118934] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:20:15.860 [DEBUG] [Thread-118934] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:20:15.861 [DEBUG] [Thread-118934] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:20:15.861 [DEBUG] [Thread-118934] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:20:15.861 [DEBUG] [Thread-118934] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:20:15.861 [DEBUG] [Thread-118934] [transport.py] [_log()] Compression: none
2025-11-03T16:20:15.861 [DEBUG] [Thread-118934] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:20:15.919 [DEBUG] [Thread-118934] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:20:15.920 [DEBUG] [Thread-118934] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:20:15.920 [DEBUG] [Thread-118934] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:20:15.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:20:15.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:20:15.975 [DEBUG] [Thread-118934] [transport.py] [_log()] userauth is OK
2025-11-03T16:20:15.975 [DEBUG] [Thread-118934] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:20:15.976 [DEBUG] [Thread-118934] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:20:15.976 [DEBUG] [Thread-118934] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:20:15.976 [DEBUG] [Thread-118934] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:20:15.995 [INFO] [Thread-118934] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:20:15.996 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:20:15.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:20:16.842 [DEBUG] [Thread-118934] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:20:16.851 [DEBUG] [Thread-118934] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:20:16.890 [DEBUG] [Thread-118934] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:20:16.890 [DEBUG] [Thread-118934] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:20:16.906 [DEBUG] [Thread-118934] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:20:16.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:20:16.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:20:16.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:20:16.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:20:16.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:20:16.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:20:16.939 [DEBUG] [Thread-118934] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:20:22.386 [DEBUG] [Thread-118936 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:20:22.862 [DEBUG] [Thread-118937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:20:25.683 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:20:37.921 [DEBUG] [Thread-118938 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:20:46.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:20:46.961 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:20:46.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:20:47.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 20, 18), 48.26, 3.04, 0.0, 38.9, 25.92, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:20:47.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:20:18
2025-11-03T16:20:47.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:20:48.051 [DEBUG] [Thread-118939] [transport.py] [_log()] starting thread (client mode): 0xed2c5e0
2025-11-03T16:20:48.051 [DEBUG] [Thread-118939] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:20:48.071 [DEBUG] [Thread-118939] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:20:48.071 [INFO] [Thread-118939] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:20:48.074 [DEBUG] [Thread-118939] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:20:48.074 [DEBUG] [Thread-118939] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:20:48.074 [DEBUG] [Thread-118939] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:20:48.074 [DEBUG] [Thread-118939] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:20:48.075 [DEBUG] [Thread-118939] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:20:48.075 [DEBUG] [Thread-118939] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:20:48.075 [DEBUG] [Thread-118939] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:20:48.075 [DEBUG] [Thread-118939] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:20:48.075 [DEBUG] [Thread-118939] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:20:48.075 [DEBUG] [Thread-118939] [transport.py] [_log()] client lang: <none>
2025-11-03T16:20:48.075 [DEBUG] [Thread-118939] [transport.py] [_log()] server lang: <none>
2025-11-03T16:20:48.075 [DEBUG] [Thread-118939] [transport.py] [_log()] kex follows: False
2025-11-03T16:20:48.075 [DEBUG] [Thread-118939] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:20:48.075 [DEBUG] [Thread-118939] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:20:48.075 [DEBUG] [Thread-118939] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:20:48.075 [DEBUG] [Thread-118939] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:20:48.075 [DEBUG] [Thread-118939] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:20:48.075 [DEBUG] [Thread-118939] [transport.py] [_log()] Compression: none
2025-11-03T16:20:48.075 [DEBUG] [Thread-118939] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:20:48.093 [DEBUG] [Thread-118939] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:20:48.093 [DEBUG] [Thread-118939] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:20:48.094 [DEBUG] [Thread-118939] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:20:48.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:20:48.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:20:48.096 [DEBUG] [Thread-118939] [transport.py] [_log()] userauth is OK
2025-11-03T16:20:48.097 [DEBUG] [Thread-118939] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:20:48.097 [DEBUG] [Thread-118939] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:20:48.097 [DEBUG] [Thread-118939] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:20:48.097 [DEBUG] [Thread-118939] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:20:48.121 [INFO] [Thread-118939] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:20:48.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:20:48.141 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:20:48.770 [DEBUG] [Thread-118939] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:20:48.771 [DEBUG] [Thread-118939] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:20:48.771 [DEBUG] [Thread-118939] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:20:48.812 [DEBUG] [Thread-118939] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:20:48.812 [DEBUG] [Thread-118939] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:20:48.814 [DEBUG] [Thread-118939] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:20:48.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:20:48.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:20:48.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:20:48.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:20:48.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:20:48.832 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:20:48.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:20:48.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:20:48.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:20:48.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.597324 -999.00  +26.00  24.72      7  -10.90 1 1 1 1 1   888    0 38.56 38.22 ----- 31.4 24.7 299.0 36.5 29.0 -33.4 28.9 -33.1 29.9 -31.1 30.4 -31.8
2025-11-03T16:20:48.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:20:48.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:20:48.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.597324
2025-11-03T16:20:48.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:20:48.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:20:48.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:20:48.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:20:48.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:20:48.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:20:18', tmtdew=48.26, humidity=3.04, cloud=0.0, wind=38.9, temperature=25.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:20:08.794', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:20:48.841 [DEBUG] [Thread-118939] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:20:48.914 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:20:48.936 [DEBUG] [Thread-118942] [transport.py] [_log()] starting thread (client mode): 0xed8b790
2025-11-03T16:20:48.936 [DEBUG] [Thread-118942] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:20:48.956 [DEBUG] [Thread-118942] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:20:48.956 [INFO] [Thread-118942] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:20:48.964 [DEBUG] [Thread-118942] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:20:48.964 [DEBUG] [Thread-118942] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:20:48.964 [DEBUG] [Thread-118942] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:20:48.964 [DEBUG] [Thread-118942] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:20:48.964 [DEBUG] [Thread-118942] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:20:48.964 [DEBUG] [Thread-118942] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:20:48.964 [DEBUG] [Thread-118942] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:20:48.964 [DEBUG] [Thread-118942] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:20:48.964 [DEBUG] [Thread-118942] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:20:48.964 [DEBUG] [Thread-118942] [transport.py] [_log()] client lang: <none>
2025-11-03T16:20:48.964 [DEBUG] [Thread-118942] [transport.py] [_log()] server lang: <none>
2025-11-03T16:20:48.964 [DEBUG] [Thread-118942] [transport.py] [_log()] kex follows: False
2025-11-03T16:20:48.964 [DEBUG] [Thread-118942] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:20:48.964 [DEBUG] [Thread-118942] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:20:48.964 [DEBUG] [Thread-118942] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:20:48.964 [DEBUG] [Thread-118942] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:20:48.964 [DEBUG] [Thread-118942] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:20:48.964 [DEBUG] [Thread-118942] [transport.py] [_log()] Compression: none
2025-11-03T16:20:48.964 [DEBUG] [Thread-118942] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:20:49.021 [DEBUG] [Thread-118942] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:20:49.022 [DEBUG] [Thread-118942] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:20:49.030 [DEBUG] [Thread-118942] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:20:49.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:20:49.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:20:49.079 [DEBUG] [Thread-118942] [transport.py] [_log()] userauth is OK
2025-11-03T16:20:49.079 [DEBUG] [Thread-118942] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:20:49.079 [DEBUG] [Thread-118942] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:20:49.079 [DEBUG] [Thread-118942] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:20:49.079 [DEBUG] [Thread-118942] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:20:49.093 [INFO] [Thread-118942] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:20:49.093 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:20:49.093 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:20:49.987 [DEBUG] [Thread-118942] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:20:49.987 [DEBUG] [Thread-118942] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:20:50.035 [DEBUG] [Thread-118942] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:20:50.035 [DEBUG] [Thread-118942] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:20:50.044 [DEBUG] [Thread-118942] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:20:50.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:20:50.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:20:50.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:20:50.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:20:50.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:20:50.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:20:50.082 [DEBUG] [Thread-118942] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:20:52.960 [DEBUG] [Thread-118944 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:21:08.014 [DEBUG] [Thread-118945 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:21:10.647 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:21:13.667 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:21:13.668 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:21:20.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:21:20.114 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:21:20.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:21:20.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 20, 50), 47.64, 3.15, 0.0, 36.82, 25.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:21:20.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:20:50
2025-11-03T16:21:20.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:21:21.094 [DEBUG] [Thread-118946] [transport.py] [_log()] starting thread (client mode): 0xeda1210
2025-11-03T16:21:21.094 [DEBUG] [Thread-118946] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:21:21.102 [DEBUG] [Thread-118946] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:21:21.102 [INFO] [Thread-118946] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:21:21.104 [DEBUG] [Thread-118946] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:21:21.104 [DEBUG] [Thread-118946] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:21:21.104 [DEBUG] [Thread-118946] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:21:21.104 [DEBUG] [Thread-118946] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:21:21.104 [DEBUG] [Thread-118946] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:21:21.104 [DEBUG] [Thread-118946] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:21:21.104 [DEBUG] [Thread-118946] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:21:21.105 [DEBUG] [Thread-118946] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:21:21.105 [DEBUG] [Thread-118946] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:21:21.105 [DEBUG] [Thread-118946] [transport.py] [_log()] client lang: <none>
2025-11-03T16:21:21.105 [DEBUG] [Thread-118946] [transport.py] [_log()] server lang: <none>
2025-11-03T16:21:21.105 [DEBUG] [Thread-118946] [transport.py] [_log()] kex follows: False
2025-11-03T16:21:21.105 [DEBUG] [Thread-118946] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:21:21.105 [DEBUG] [Thread-118946] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:21:21.105 [DEBUG] [Thread-118946] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:21:21.105 [DEBUG] [Thread-118946] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:21:21.105 [DEBUG] [Thread-118946] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:21:21.105 [DEBUG] [Thread-118946] [transport.py] [_log()] Compression: none
2025-11-03T16:21:21.105 [DEBUG] [Thread-118946] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:21:21.122 [DEBUG] [Thread-118946] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:21:21.124 [DEBUG] [Thread-118946] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:21:21.125 [DEBUG] [Thread-118946] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:21:21.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:21:21.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:21:21.128 [DEBUG] [Thread-118946] [transport.py] [_log()] userauth is OK
2025-11-03T16:21:21.128 [DEBUG] [Thread-118946] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:21:21.129 [DEBUG] [Thread-118946] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:21:21.129 [DEBUG] [Thread-118946] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:21:21.129 [DEBUG] [Thread-118946] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:21:21.157 [INFO] [Thread-118946] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:21:21.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:21:21.749 [DEBUG] [Thread-118946] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:21:21.749 [DEBUG] [Thread-118946] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:21:21.749 [DEBUG] [Thread-118946] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:21:21.790 [DEBUG] [Thread-118946] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:21:21.790 [DEBUG] [Thread-118946] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:21:21.793 [DEBUG] [Thread-118946] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:21:21.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:21:21.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:21:21.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:21:21.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:21:21.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:21:21.818 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:21:21.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:21:21.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:21:21.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:21:21.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.597672 -999.00  +25.90  35.97      7  -11.10 1 1 2 1 1   888    0 38.37 31.93 ----- 36.7 36.0 292.6 42.0 29.1 -33.3 28.9 -32.2 29.7 -35.3 30.4 -33.0
2025-11-03T16:21:21.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:21:21.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:21:21.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.597672
2025-11-03T16:21:21.825 [DEBUG] [Thread-118946] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:21:21.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:21:21.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:21:21.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:21:21.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:21:21.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:21:21.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:20:50', tmtdew=47.64, humidity=3.15, cloud=0.0, wind=36.82, temperature=25.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:20:38.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:21:21.911 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:21:21.931 [DEBUG] [Thread-118949] [transport.py] [_log()] starting thread (client mode): 0xed8ab30
2025-11-03T16:21:21.931 [DEBUG] [Thread-118949] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:21:21.947 [DEBUG] [Thread-118949] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:21:21.947 [INFO] [Thread-118949] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:21:21.955 [DEBUG] [Thread-118949] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:21:21.955 [DEBUG] [Thread-118949] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:21:21.955 [DEBUG] [Thread-118949] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:21:21.955 [DEBUG] [Thread-118949] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:21:21.955 [DEBUG] [Thread-118949] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:21:21.955 [DEBUG] [Thread-118949] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:21:21.955 [DEBUG] [Thread-118949] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:21:21.955 [DEBUG] [Thread-118949] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:21:21.955 [DEBUG] [Thread-118949] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:21:21.955 [DEBUG] [Thread-118949] [transport.py] [_log()] client lang: <none>
2025-11-03T16:21:21.955 [DEBUG] [Thread-118949] [transport.py] [_log()] server lang: <none>
2025-11-03T16:21:21.955 [DEBUG] [Thread-118949] [transport.py] [_log()] kex follows: False
2025-11-03T16:21:21.956 [DEBUG] [Thread-118949] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:21:21.956 [DEBUG] [Thread-118949] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:21:21.956 [DEBUG] [Thread-118949] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:21:21.956 [DEBUG] [Thread-118949] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:21:21.956 [DEBUG] [Thread-118949] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:21:21.956 [DEBUG] [Thread-118949] [transport.py] [_log()] Compression: none
2025-11-03T16:21:21.956 [DEBUG] [Thread-118949] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:21:22.015 [DEBUG] [Thread-118949] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:21:22.016 [DEBUG] [Thread-118949] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:21:22.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:21:22.017 [DEBUG] [Thread-118949] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:21:22.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:21:22.072 [DEBUG] [Thread-118949] [transport.py] [_log()] userauth is OK
2025-11-03T16:21:22.072 [DEBUG] [Thread-118949] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:21:22.072 [DEBUG] [Thread-118949] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:21:22.073 [DEBUG] [Thread-118949] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:21:22.073 [DEBUG] [Thread-118949] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:21:22.093 [INFO] [Thread-118949] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:21:22.093 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:21:22.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:21:22.509 [DEBUG] [Thread-118951 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:21:22.928 [DEBUG] [Thread-118949] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:21:22.928 [DEBUG] [Thread-118949] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:21:22.976 [DEBUG] [Thread-118949] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:21:22.977 [DEBUG] [Thread-118949] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:21:22.985 [DEBUG] [Thread-118949] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:21:22.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:21:22.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:21:23.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:21:23.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:21:23.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:21:23.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:21:23.026 [DEBUG] [Thread-118949] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:21:23.055 [DEBUG] [Thread-118952 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:21:33.110 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:21:38.111 [DEBUG] [Thread-118953 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:21:53.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:21:53.038 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:21:53.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:21:53.146 [DEBUG] [Thread-118954 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:21:53.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 21, 23), 47.6, 3.17, 0.0, 34.71, 25.85, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:21:53.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:21:23
2025-11-03T16:21:53.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:21:54.061 [DEBUG] [Thread-118955] [transport.py] [_log()] starting thread (client mode): 0x117bc520
2025-11-03T16:21:54.062 [DEBUG] [Thread-118955] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:21:54.078 [DEBUG] [Thread-118955] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:21:54.078 [INFO] [Thread-118955] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:21:54.081 [DEBUG] [Thread-118955] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:21:54.082 [DEBUG] [Thread-118955] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:21:54.082 [DEBUG] [Thread-118955] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:21:54.082 [DEBUG] [Thread-118955] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:21:54.082 [DEBUG] [Thread-118955] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:21:54.083 [DEBUG] [Thread-118955] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:21:54.083 [DEBUG] [Thread-118955] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:21:54.083 [DEBUG] [Thread-118955] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:21:54.083 [DEBUG] [Thread-118955] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:21:54.083 [DEBUG] [Thread-118955] [transport.py] [_log()] client lang: <none>
2025-11-03T16:21:54.083 [DEBUG] [Thread-118955] [transport.py] [_log()] server lang: <none>
2025-11-03T16:21:54.083 [DEBUG] [Thread-118955] [transport.py] [_log()] kex follows: False
2025-11-03T16:21:54.084 [DEBUG] [Thread-118955] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:21:54.084 [DEBUG] [Thread-118955] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:21:54.084 [DEBUG] [Thread-118955] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:21:54.085 [DEBUG] [Thread-118955] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:21:54.085 [DEBUG] [Thread-118955] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:21:54.085 [DEBUG] [Thread-118955] [transport.py] [_log()] Compression: none
2025-11-03T16:21:54.085 [DEBUG] [Thread-118955] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:21:54.107 [DEBUG] [Thread-118955] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:21:54.108 [DEBUG] [Thread-118955] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:21:54.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:21:54.109 [DEBUG] [Thread-118955] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:21:54.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:21:54.112 [DEBUG] [Thread-118955] [transport.py] [_log()] userauth is OK
2025-11-03T16:21:54.112 [DEBUG] [Thread-118955] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:21:54.112 [DEBUG] [Thread-118955] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:21:54.112 [DEBUG] [Thread-118955] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:21:54.112 [DEBUG] [Thread-118955] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:21:54.148 [INFO] [Thread-118955] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:21:54.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:21:54.798 [DEBUG] [Thread-118955] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:21:54.798 [DEBUG] [Thread-118955] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:21:54.798 [DEBUG] [Thread-118955] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:21:54.839 [DEBUG] [Thread-118955] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:21:54.839 [DEBUG] [Thread-118955] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:21:54.842 [DEBUG] [Thread-118955] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:21:54.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:21:54.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:21:54.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:21:54.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:21:54.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:21:54.859 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:21:54.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:21:54.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:21:54.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:21:54.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.598019 -999.00  +25.70  31.90      7  -11.10 1 1 2 1 1   888    0 38.67 28.14 ----- 29.4 31.9 304.6 45.4 29.0 -34.2 28.9 -33.0 29.7 -34.2 30.3 -32.4
2025-11-03T16:21:54.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:21:54.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:21:54.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.598019
2025-11-03T16:21:54.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:21:54.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:21:54.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:21:54.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:21:54.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:21:54.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:21:23', tmtdew=47.6, humidity=3.17, cloud=0.0, wind=34.71, temperature=25.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:21:08.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:21:54.862 [DEBUG] [Thread-118955] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:21:54.934 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:21:54.953 [DEBUG] [Thread-118958] [transport.py] [_log()] starting thread (client mode): 0x1174e560
2025-11-03T16:21:54.953 [DEBUG] [Thread-118958] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:21:54.968 [DEBUG] [Thread-118958] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:21:54.968 [INFO] [Thread-118958] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:21:54.975 [DEBUG] [Thread-118958] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:21:54.975 [DEBUG] [Thread-118958] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:21:54.975 [DEBUG] [Thread-118958] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:21:54.975 [DEBUG] [Thread-118958] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:21:54.975 [DEBUG] [Thread-118958] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:21:54.975 [DEBUG] [Thread-118958] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:21:54.975 [DEBUG] [Thread-118958] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:21:54.975 [DEBUG] [Thread-118958] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:21:54.975 [DEBUG] [Thread-118958] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:21:54.975 [DEBUG] [Thread-118958] [transport.py] [_log()] client lang: <none>
2025-11-03T16:21:54.975 [DEBUG] [Thread-118958] [transport.py] [_log()] server lang: <none>
2025-11-03T16:21:54.975 [DEBUG] [Thread-118958] [transport.py] [_log()] kex follows: False
2025-11-03T16:21:54.976 [DEBUG] [Thread-118958] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:21:54.976 [DEBUG] [Thread-118958] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:21:54.976 [DEBUG] [Thread-118958] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:21:54.976 [DEBUG] [Thread-118958] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:21:54.976 [DEBUG] [Thread-118958] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:21:54.976 [DEBUG] [Thread-118958] [transport.py] [_log()] Compression: none
2025-11-03T16:21:54.976 [DEBUG] [Thread-118958] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:21:55.031 [DEBUG] [Thread-118958] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:21:55.031 [DEBUG] [Thread-118958] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:21:55.031 [DEBUG] [Thread-118958] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:21:55.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:21:55.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:21:55.088 [DEBUG] [Thread-118958] [transport.py] [_log()] userauth is OK
2025-11-03T16:21:55.088 [DEBUG] [Thread-118958] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:21:55.088 [DEBUG] [Thread-118958] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:21:55.088 [DEBUG] [Thread-118958] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:21:55.088 [DEBUG] [Thread-118958] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:21:55.110 [INFO] [Thread-118958] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:21:55.111 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:21:55.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:21:55.592 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:21:55.989 [DEBUG] [Thread-118958] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:21:55.989 [DEBUG] [Thread-118958] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:21:56.037 [DEBUG] [Thread-118958] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:21:56.037 [DEBUG] [Thread-118958] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:21:56.046 [DEBUG] [Thread-118958] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:21:56.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:21:56.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:21:56.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:21:56.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:21:56.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:21:56.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:21:56.081 [DEBUG] [Thread-118958] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:22:08.188 [DEBUG] [Thread-118960 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:22:13.817 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:22:13.818 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:22:18.069 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:22:22.774 [DEBUG] [Thread-118961 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:22:23.262 [DEBUG] [Thread-118962 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:22:26.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:22:26.089 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:22:26.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:22:26.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 21, 55), 47.17, 3.19, 0.0, 27.6, 25.72, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:22:26.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:21:55
2025-11-03T16:22:26.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:22:27.063 [DEBUG] [Thread-118963] [transport.py] [_log()] starting thread (client mode): 0x1174caf0
2025-11-03T16:22:27.063 [DEBUG] [Thread-118963] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:22:27.073 [DEBUG] [Thread-118963] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:22:27.073 [INFO] [Thread-118963] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:22:27.076 [DEBUG] [Thread-118963] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:22:27.076 [DEBUG] [Thread-118963] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:22:27.076 [DEBUG] [Thread-118963] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:22:27.076 [DEBUG] [Thread-118963] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:22:27.076 [DEBUG] [Thread-118963] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:22:27.076 [DEBUG] [Thread-118963] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:22:27.076 [DEBUG] [Thread-118963] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:22:27.076 [DEBUG] [Thread-118963] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:22:27.076 [DEBUG] [Thread-118963] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:22:27.076 [DEBUG] [Thread-118963] [transport.py] [_log()] client lang: <none>
2025-11-03T16:22:27.076 [DEBUG] [Thread-118963] [transport.py] [_log()] server lang: <none>
2025-11-03T16:22:27.076 [DEBUG] [Thread-118963] [transport.py] [_log()] kex follows: False
2025-11-03T16:22:27.076 [DEBUG] [Thread-118963] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:22:27.076 [DEBUG] [Thread-118963] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:22:27.076 [DEBUG] [Thread-118963] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:22:27.076 [DEBUG] [Thread-118963] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:22:27.076 [DEBUG] [Thread-118963] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:22:27.076 [DEBUG] [Thread-118963] [transport.py] [_log()] Compression: none
2025-11-03T16:22:27.076 [DEBUG] [Thread-118963] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:22:27.090 [DEBUG] [Thread-118963] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:22:27.090 [DEBUG] [Thread-118963] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:22:27.090 [DEBUG] [Thread-118963] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:22:27.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:22:27.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:22:27.092 [DEBUG] [Thread-118963] [transport.py] [_log()] userauth is OK
2025-11-03T16:22:27.092 [DEBUG] [Thread-118963] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:22:27.092 [DEBUG] [Thread-118963] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:22:27.092 [DEBUG] [Thread-118963] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:22:27.092 [DEBUG] [Thread-118963] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:22:27.108 [INFO] [Thread-118963] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:22:27.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:22:27.822 [DEBUG] [Thread-118963] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:22:27.822 [DEBUG] [Thread-118963] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:22:27.822 [DEBUG] [Thread-118963] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:22:27.863 [DEBUG] [Thread-118963] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:22:27.863 [DEBUG] [Thread-118963] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:22:27.867 [DEBUG] [Thread-118963] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:22:27.878 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:22:27.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:22:27.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:22:27.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:22:27.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:22:27.892 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:22:27.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:22:27.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:22:27.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:22:27.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.598366 -999.00  +25.60  20.83      8  -10.90 1 1 1 1 1   888    0 37.65 22.62 ----- 25.6 20.8 301.0 40.7 29.0 -33.5 28.8 -33.5 29.8 -31.4 30.3 -32.4
2025-11-03T16:22:27.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:22:27.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:22:27.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.598366
2025-11-03T16:22:27.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:22:27.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:22:27.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:22:27.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:22:27.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:22:27.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:21:55', tmtdew=47.17, humidity=3.19, cloud=0.0, wind=27.6, temperature=25.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:21:38.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:22:27.895 [DEBUG] [Thread-118963] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:22:27.981 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:22:28.003 [DEBUG] [Thread-118966] [transport.py] [_log()] starting thread (client mode): 0xed2cd60
2025-11-03T16:22:28.003 [DEBUG] [Thread-118966] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:22:28.017 [DEBUG] [Thread-118966] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:22:28.017 [INFO] [Thread-118966] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:22:28.025 [DEBUG] [Thread-118966] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:22:28.025 [DEBUG] [Thread-118966] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:22:28.025 [DEBUG] [Thread-118966] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:22:28.025 [DEBUG] [Thread-118966] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:22:28.026 [DEBUG] [Thread-118966] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:22:28.026 [DEBUG] [Thread-118966] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:22:28.026 [DEBUG] [Thread-118966] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:22:28.026 [DEBUG] [Thread-118966] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:22:28.026 [DEBUG] [Thread-118966] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:22:28.026 [DEBUG] [Thread-118966] [transport.py] [_log()] client lang: <none>
2025-11-03T16:22:28.026 [DEBUG] [Thread-118966] [transport.py] [_log()] server lang: <none>
2025-11-03T16:22:28.026 [DEBUG] [Thread-118966] [transport.py] [_log()] kex follows: False
2025-11-03T16:22:28.026 [DEBUG] [Thread-118966] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:22:28.027 [DEBUG] [Thread-118966] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:22:28.027 [DEBUG] [Thread-118966] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:22:28.027 [DEBUG] [Thread-118966] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:22:28.027 [DEBUG] [Thread-118966] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:22:28.027 [DEBUG] [Thread-118966] [transport.py] [_log()] Compression: none
2025-11-03T16:22:28.027 [DEBUG] [Thread-118966] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:22:28.085 [DEBUG] [Thread-118966] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:22:28.085 [DEBUG] [Thread-118966] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:22:28.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:22:28.087 [DEBUG] [Thread-118966] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:22:28.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:22:28.141 [DEBUG] [Thread-118966] [transport.py] [_log()] userauth is OK
2025-11-03T16:22:28.141 [DEBUG] [Thread-118966] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:22:28.141 [DEBUG] [Thread-118966] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:22:28.141 [DEBUG] [Thread-118966] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:22:28.141 [DEBUG] [Thread-118966] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:22:28.159 [INFO] [Thread-118966] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:22:28.160 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:22:28.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:22:29.050 [DEBUG] [Thread-118966] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:22:29.050 [DEBUG] [Thread-118966] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:22:29.098 [DEBUG] [Thread-118966] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:22:29.099 [DEBUG] [Thread-118966] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:22:29.107 [DEBUG] [Thread-118966] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:22:29.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:22:29.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:22:29.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:22:29.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:22:29.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:22:29.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:22:29.139 [DEBUG] [Thread-118966] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:22:38.299 [DEBUG] [Thread-118968 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:22:40.548 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:22:53.366 [DEBUG] [Thread-118969 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:22:59.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:22:59.133 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:22:59.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:22:59.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 22, 28), 47.08, 3.22, 0.0, 24.9, 25.79, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:22:59.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:22:28
2025-11-03T16:22:59.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:23:00.158 [DEBUG] [Thread-118970] [transport.py] [_log()] starting thread (client mode): 0xed2f580
2025-11-03T16:23:00.158 [DEBUG] [Thread-118970] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:23:00.177 [DEBUG] [Thread-118970] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:23:00.177 [INFO] [Thread-118970] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:23:00.180 [DEBUG] [Thread-118970] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:23:00.180 [DEBUG] [Thread-118970] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:23:00.180 [DEBUG] [Thread-118970] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:23:00.180 [DEBUG] [Thread-118970] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:23:00.180 [DEBUG] [Thread-118970] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:23:00.180 [DEBUG] [Thread-118970] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:23:00.180 [DEBUG] [Thread-118970] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:23:00.180 [DEBUG] [Thread-118970] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:23:00.180 [DEBUG] [Thread-118970] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:23:00.180 [DEBUG] [Thread-118970] [transport.py] [_log()] client lang: <none>
2025-11-03T16:23:00.180 [DEBUG] [Thread-118970] [transport.py] [_log()] server lang: <none>
2025-11-03T16:23:00.180 [DEBUG] [Thread-118970] [transport.py] [_log()] kex follows: False
2025-11-03T16:23:00.180 [DEBUG] [Thread-118970] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:23:00.180 [DEBUG] [Thread-118970] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:23:00.180 [DEBUG] [Thread-118970] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:23:00.180 [DEBUG] [Thread-118970] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:23:00.180 [DEBUG] [Thread-118970] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:23:00.180 [DEBUG] [Thread-118970] [transport.py] [_log()] Compression: none
2025-11-03T16:23:00.180 [DEBUG] [Thread-118970] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:23:00.195 [DEBUG] [Thread-118970] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:23:00.195 [DEBUG] [Thread-118970] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:23:00.195 [DEBUG] [Thread-118970] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:23:00.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:23:00.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:23:00.196 [DEBUG] [Thread-118970] [transport.py] [_log()] userauth is OK
2025-11-03T16:23:00.196 [DEBUG] [Thread-118970] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:23:00.196 [DEBUG] [Thread-118970] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:23:00.196 [DEBUG] [Thread-118970] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:23:00.196 [DEBUG] [Thread-118970] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:23:00.211 [INFO] [Thread-118970] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:23:00.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:23:00.837 [DEBUG] [Thread-118970] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:23:00.837 [DEBUG] [Thread-118970] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:23:00.837 [DEBUG] [Thread-118970] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:23:00.878 [DEBUG] [Thread-118970] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:23:00.878 [DEBUG] [Thread-118970] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:23:00.881 [DEBUG] [Thread-118970] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:23:00.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:23:00.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:23:00.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:23:00.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:23:00.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:23:00.895 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:23:00.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:23:00.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:23:00.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:23:00.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.598714 -999.00  +25.50  27.04      8  -10.90 1 1 1 1 1   888    0 37.13 17.45 ----- 28.3 27.0 309.2 41.6 29.0 -33.9 28.9 -32.2 29.6 -35.7 30.2 -32.2
2025-11-03T16:23:00.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:23:00.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:23:00.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.598714
2025-11-03T16:23:00.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:23:00.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:23:00.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:23:00.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:23:00.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:23:00.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:22:28', tmtdew=47.08, humidity=3.22, cloud=0.0, wind=24.9, temperature=25.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:22:08.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:23:00.896 [DEBUG] [Thread-118970] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:23:00.973 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:23:00.992 [DEBUG] [Thread-118973] [transport.py] [_log()] starting thread (client mode): 0xed8ab90
2025-11-03T16:23:00.992 [DEBUG] [Thread-118973] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:23:01.008 [DEBUG] [Thread-118973] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:23:01.008 [INFO] [Thread-118973] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:23:01.019 [DEBUG] [Thread-118973] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:23:01.019 [DEBUG] [Thread-118973] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:23:01.019 [DEBUG] [Thread-118973] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:23:01.019 [DEBUG] [Thread-118973] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:23:01.019 [DEBUG] [Thread-118973] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:23:01.019 [DEBUG] [Thread-118973] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:23:01.019 [DEBUG] [Thread-118973] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:23:01.019 [DEBUG] [Thread-118973] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:23:01.019 [DEBUG] [Thread-118973] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:23:01.019 [DEBUG] [Thread-118973] [transport.py] [_log()] client lang: <none>
2025-11-03T16:23:01.019 [DEBUG] [Thread-118973] [transport.py] [_log()] server lang: <none>
2025-11-03T16:23:01.019 [DEBUG] [Thread-118973] [transport.py] [_log()] kex follows: False
2025-11-03T16:23:01.019 [DEBUG] [Thread-118973] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:23:01.019 [DEBUG] [Thread-118973] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:23:01.019 [DEBUG] [Thread-118973] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:23:01.019 [DEBUG] [Thread-118973] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:23:01.019 [DEBUG] [Thread-118973] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:23:01.019 [DEBUG] [Thread-118973] [transport.py] [_log()] Compression: none
2025-11-03T16:23:01.019 [DEBUG] [Thread-118973] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:23:01.072 [DEBUG] [Thread-118973] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:23:01.072 [DEBUG] [Thread-118973] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:23:01.072 [DEBUG] [Thread-118973] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:23:01.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:23:01.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:23:01.129 [DEBUG] [Thread-118973] [transport.py] [_log()] userauth is OK
2025-11-03T16:23:01.129 [DEBUG] [Thread-118973] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:23:01.129 [DEBUG] [Thread-118973] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:23:01.129 [DEBUG] [Thread-118973] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:23:01.129 [DEBUG] [Thread-118973] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:23:01.143 [INFO] [Thread-118973] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:23:01.143 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:23:01.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:23:02.020 [DEBUG] [Thread-118973] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:23:02.020 [DEBUG] [Thread-118973] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:23:02.068 [DEBUG] [Thread-118973] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:23:02.068 [DEBUG] [Thread-118973] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:23:02.076 [DEBUG] [Thread-118973] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:23:02.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:23:02.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:23:02.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:23:02.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:23:02.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:23:02.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:23:02.107 [DEBUG] [Thread-118973] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:23:03.016 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:23:08.409 [DEBUG] [Thread-118975 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:23:13.969 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:23:13.970 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:23:22.839 [DEBUG] [Thread-118976 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:23:23.474 [DEBUG] [Thread-118977 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:23:25.505 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:23:26.530 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:23:28.941 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:23:30.349 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:23:31.772 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:23:32.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:23:32.126 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:23:32.142 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:23:32.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:23:32.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 22, 28), 47.08, 3.22, 0.0, 24.9, 25.79, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:23:32.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:22:28
2025-11-03T16:23:32.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:23:33.111 [DEBUG] [Thread-118978] [transport.py] [_log()] starting thread (client mode): 0xeda3d00
2025-11-03T16:23:33.111 [DEBUG] [Thread-118978] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:23:33.122 [DEBUG] [Thread-118978] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:23:33.122 [INFO] [Thread-118978] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:23:33.125 [DEBUG] [Thread-118978] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:23:33.125 [DEBUG] [Thread-118978] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:23:33.125 [DEBUG] [Thread-118978] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:23:33.125 [DEBUG] [Thread-118978] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:23:33.125 [DEBUG] [Thread-118978] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:23:33.125 [DEBUG] [Thread-118978] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:23:33.126 [DEBUG] [Thread-118978] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:23:33.126 [DEBUG] [Thread-118978] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:23:33.126 [DEBUG] [Thread-118978] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:23:33.126 [DEBUG] [Thread-118978] [transport.py] [_log()] client lang: <none>
2025-11-03T16:23:33.126 [DEBUG] [Thread-118978] [transport.py] [_log()] server lang: <none>
2025-11-03T16:23:33.126 [DEBUG] [Thread-118978] [transport.py] [_log()] kex follows: False
2025-11-03T16:23:33.126 [DEBUG] [Thread-118978] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:23:33.126 [DEBUG] [Thread-118978] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:23:33.127 [DEBUG] [Thread-118978] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:23:33.127 [DEBUG] [Thread-118978] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:23:33.127 [DEBUG] [Thread-118978] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:23:33.127 [DEBUG] [Thread-118978] [transport.py] [_log()] Compression: none
2025-11-03T16:23:33.127 [DEBUG] [Thread-118978] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:23:33.141 [DEBUG] [Thread-118978] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:23:33.141 [DEBUG] [Thread-118978] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:23:33.142 [DEBUG] [Thread-118978] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:23:33.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:23:33.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:23:33.185 [DEBUG] [Thread-118978] [transport.py] [_log()] userauth is OK
2025-11-03T16:23:33.185 [DEBUG] [Thread-118978] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:23:33.185 [DEBUG] [Thread-118978] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:23:33.185 [DEBUG] [Thread-118978] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:23:33.185 [DEBUG] [Thread-118978] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:23:33.221 [INFO] [Thread-118978] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:23:33.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:23:33.506 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:23:33.799 [DEBUG] [Thread-118978] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:23:33.799 [DEBUG] [Thread-118978] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:23:33.799 [DEBUG] [Thread-118978] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:23:33.839 [DEBUG] [Thread-118978] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:23:33.839 [DEBUG] [Thread-118978] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:23:33.840 [DEBUG] [Thread-118978] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:23:33.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:23:33.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:23:33.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:23:33.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:23:33.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:23:33.851 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:23:33.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:23:33.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:23:33.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:23:33.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.599061 -999.00  +25.40  24.90      8  -10.60 1 1 1 1 1   888    0 36.80 12.03 ----- 20.2 24.9 308.0 30.4 28.9 -33.4 28.8 -33.3 29.8 -32.5 30.3 -32.0
2025-11-03T16:23:33.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:23:33.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:23:33.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.599061
2025-11-03T16:23:33.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:23:33.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:23:33.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:23:33.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:23:33.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:23:33.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:22:28', tmtdew=47.08, humidity=3.22, cloud=0.0, wind=24.9, temperature=25.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:22:38.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:23:33.852 [DEBUG] [Thread-118978] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:23:33.927 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:23:33.947 [DEBUG] [Thread-118981] [transport.py] [_log()] starting thread (client mode): 0x141db220
2025-11-03T16:23:33.947 [DEBUG] [Thread-118981] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:23:33.963 [DEBUG] [Thread-118981] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:23:33.963 [INFO] [Thread-118981] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:23:33.971 [DEBUG] [Thread-118981] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:23:33.971 [DEBUG] [Thread-118981] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:23:33.971 [DEBUG] [Thread-118981] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:23:33.971 [DEBUG] [Thread-118981] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:23:33.971 [DEBUG] [Thread-118981] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:23:33.971 [DEBUG] [Thread-118981] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:23:33.971 [DEBUG] [Thread-118981] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:23:33.971 [DEBUG] [Thread-118981] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:23:33.971 [DEBUG] [Thread-118981] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:23:33.971 [DEBUG] [Thread-118981] [transport.py] [_log()] client lang: <none>
2025-11-03T16:23:33.971 [DEBUG] [Thread-118981] [transport.py] [_log()] server lang: <none>
2025-11-03T16:23:33.971 [DEBUG] [Thread-118981] [transport.py] [_log()] kex follows: False
2025-11-03T16:23:33.971 [DEBUG] [Thread-118981] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:23:33.971 [DEBUG] [Thread-118981] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:23:33.971 [DEBUG] [Thread-118981] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:23:33.971 [DEBUG] [Thread-118981] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:23:33.971 [DEBUG] [Thread-118981] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:23:33.971 [DEBUG] [Thread-118981] [transport.py] [_log()] Compression: none
2025-11-03T16:23:33.971 [DEBUG] [Thread-118981] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:23:34.031 [DEBUG] [Thread-118981] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:23:34.032 [DEBUG] [Thread-118981] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:23:34.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:23:34.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:23:34.032 [DEBUG] [Thread-118981] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:23:34.090 [DEBUG] [Thread-118981] [transport.py] [_log()] userauth is OK
2025-11-03T16:23:34.090 [DEBUG] [Thread-118981] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:23:34.090 [DEBUG] [Thread-118981] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:23:34.090 [DEBUG] [Thread-118981] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:23:34.090 [DEBUG] [Thread-118981] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:23:34.104 [INFO] [Thread-118981] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:23:34.104 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:23:34.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:23:34.920 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:23:34.953 [DEBUG] [Thread-118981] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:23:34.953 [DEBUG] [Thread-118981] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:23:35.001 [DEBUG] [Thread-118981] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:23:35.001 [DEBUG] [Thread-118981] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:23:35.010 [DEBUG] [Thread-118981] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:23:35.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:23:35.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:23:35.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:23:35.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:23:35.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:23:35.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:23:35.042 [DEBUG] [Thread-118981] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:23:36.322 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:23:37.704 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:23:38.073 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:23:38.466 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:23:38.520 [DEBUG] [Thread-118983 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:23:39.020 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:23:47.419 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:23:53.580 [DEBUG] [Thread-118984 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:23:53.794 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:00.214 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:05.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:24:05.065 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:24:05.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:24:05.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 23, 32), 46.28, 3.82, 0.0, 24.01, 25.88, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:24:05.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:23:32
2025-11-03T16:24:05.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:24:06.097 [DEBUG] [Thread-118985] [transport.py] [_log()] starting thread (client mode): 0xed2ec20
2025-11-03T16:24:06.098 [DEBUG] [Thread-118985] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:24:06.118 [DEBUG] [Thread-118985] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:24:06.118 [INFO] [Thread-118985] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:24:06.122 [DEBUG] [Thread-118985] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:24:06.122 [DEBUG] [Thread-118985] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:24:06.122 [DEBUG] [Thread-118985] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:24:06.122 [DEBUG] [Thread-118985] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:24:06.122 [DEBUG] [Thread-118985] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:24:06.122 [DEBUG] [Thread-118985] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:24:06.122 [DEBUG] [Thread-118985] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:24:06.122 [DEBUG] [Thread-118985] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:24:06.122 [DEBUG] [Thread-118985] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:24:06.122 [DEBUG] [Thread-118985] [transport.py] [_log()] client lang: <none>
2025-11-03T16:24:06.122 [DEBUG] [Thread-118985] [transport.py] [_log()] server lang: <none>
2025-11-03T16:24:06.122 [DEBUG] [Thread-118985] [transport.py] [_log()] kex follows: False
2025-11-03T16:24:06.122 [DEBUG] [Thread-118985] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:24:06.122 [DEBUG] [Thread-118985] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:24:06.122 [DEBUG] [Thread-118985] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:24:06.122 [DEBUG] [Thread-118985] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:24:06.122 [DEBUG] [Thread-118985] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:24:06.122 [DEBUG] [Thread-118985] [transport.py] [_log()] Compression: none
2025-11-03T16:24:06.122 [DEBUG] [Thread-118985] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:24:06.139 [DEBUG] [Thread-118985] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:24:06.140 [DEBUG] [Thread-118985] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:24:06.140 [DEBUG] [Thread-118985] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:24:06.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:24:06.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:24:06.141 [DEBUG] [Thread-118985] [transport.py] [_log()] userauth is OK
2025-11-03T16:24:06.141 [DEBUG] [Thread-118985] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:24:06.141 [DEBUG] [Thread-118985] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:24:06.141 [DEBUG] [Thread-118985] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:24:06.141 [DEBUG] [Thread-118985] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:24:06.156 [INFO] [Thread-118985] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:24:06.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:24:06.646 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:06.819 [DEBUG] [Thread-118985] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:24:06.819 [DEBUG] [Thread-118985] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:24:06.819 [DEBUG] [Thread-118985] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:24:06.861 [DEBUG] [Thread-118985] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:24:06.861 [DEBUG] [Thread-118985] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:24:06.863 [DEBUG] [Thread-118985] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:24:06.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:24:06.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:24:06.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:24:06.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:24:06.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:24:06.883 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:24:06.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:24:06.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:24:06.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:24:06.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.599408 -999.00  +25.60  17.26      8  -10.60 1 1 1 1 1   888    0 37.04 7.48 ----- 18.8 17.3 322.8 28.4 29.0 -33.4 28.8 -32.1 29.8 -31.3 30.4 -32.1
2025-11-03T16:24:06.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:24:06.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:24:06.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.599408
2025-11-03T16:24:06.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:24:06.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:24:06.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:24:06.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:24:06.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:24:06.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:23:32', tmtdew=46.28, humidity=3.82, cloud=0.0, wind=24.01, temperature=25.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:23:08.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:24:06.886 [DEBUG] [Thread-118985] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:24:06.958 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:24:06.979 [DEBUG] [Thread-118988] [transport.py] [_log()] starting thread (client mode): 0xed88640
2025-11-03T16:24:06.979 [DEBUG] [Thread-118988] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:24:06.994 [DEBUG] [Thread-118988] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:24:06.994 [INFO] [Thread-118988] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:24:07.002 [DEBUG] [Thread-118988] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:24:07.002 [DEBUG] [Thread-118988] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:24:07.002 [DEBUG] [Thread-118988] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:24:07.002 [DEBUG] [Thread-118988] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:24:07.002 [DEBUG] [Thread-118988] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:24:07.002 [DEBUG] [Thread-118988] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:24:07.002 [DEBUG] [Thread-118988] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:24:07.002 [DEBUG] [Thread-118988] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:24:07.002 [DEBUG] [Thread-118988] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:24:07.002 [DEBUG] [Thread-118988] [transport.py] [_log()] client lang: <none>
2025-11-03T16:24:07.002 [DEBUG] [Thread-118988] [transport.py] [_log()] server lang: <none>
2025-11-03T16:24:07.002 [DEBUG] [Thread-118988] [transport.py] [_log()] kex follows: False
2025-11-03T16:24:07.002 [DEBUG] [Thread-118988] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:24:07.002 [DEBUG] [Thread-118988] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:24:07.002 [DEBUG] [Thread-118988] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:24:07.002 [DEBUG] [Thread-118988] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:24:07.002 [DEBUG] [Thread-118988] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:24:07.002 [DEBUG] [Thread-118988] [transport.py] [_log()] Compression: none
2025-11-03T16:24:07.002 [DEBUG] [Thread-118988] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:24:07.060 [DEBUG] [Thread-118988] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:24:07.060 [DEBUG] [Thread-118988] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:24:07.060 [DEBUG] [Thread-118988] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:24:07.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:24:07.061 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:24:07.117 [DEBUG] [Thread-118988] [transport.py] [_log()] userauth is OK
2025-11-03T16:24:07.117 [DEBUG] [Thread-118988] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:24:07.117 [DEBUG] [Thread-118988] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:24:07.117 [DEBUG] [Thread-118988] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:24:07.117 [DEBUG] [Thread-118988] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:24:07.131 [INFO] [Thread-118988] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:24:07.131 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:24:07.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:24:07.983 [DEBUG] [Thread-118988] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:24:07.983 [DEBUG] [Thread-118988] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:24:08.032 [DEBUG] [Thread-118988] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:24:08.032 [DEBUG] [Thread-118988] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:24:08.042 [DEBUG] [Thread-118988] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:24:08.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:24:08.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:24:08.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:24:08.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:24:08.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:24:08.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:24:08.080 [DEBUG] [Thread-118988] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:24:08.631 [DEBUG] [Thread-118990 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:13.085 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:14.119 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:14.121 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:19.487 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:23.074 [DEBUG] [Thread-118991 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:23.700 [DEBUG] [Thread-118992 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:25.910 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:32.407 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:38.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:24:38.100 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:24:38.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:24:38.745 [DEBUG] [Thread-118993 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:38.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 24, 5), 46.42, 3.79, 0.0, 22.29, 25.98, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:24:38.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:24:05
2025-11-03T16:24:38.833 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:38.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:24:39.099 [DEBUG] [Thread-118994] [transport.py] [_log()] starting thread (client mode): 0x11798f40
2025-11-03T16:24:39.099 [DEBUG] [Thread-118994] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:24:39.117 [DEBUG] [Thread-118994] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:24:39.117 [INFO] [Thread-118994] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:24:39.119 [DEBUG] [Thread-118994] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:24:39.119 [DEBUG] [Thread-118994] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:24:39.119 [DEBUG] [Thread-118994] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:24:39.119 [DEBUG] [Thread-118994] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:24:39.119 [DEBUG] [Thread-118994] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:24:39.119 [DEBUG] [Thread-118994] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:24:39.119 [DEBUG] [Thread-118994] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:24:39.119 [DEBUG] [Thread-118994] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:24:39.119 [DEBUG] [Thread-118994] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:24:39.119 [DEBUG] [Thread-118994] [transport.py] [_log()] client lang: <none>
2025-11-03T16:24:39.119 [DEBUG] [Thread-118994] [transport.py] [_log()] server lang: <none>
2025-11-03T16:24:39.119 [DEBUG] [Thread-118994] [transport.py] [_log()] kex follows: False
2025-11-03T16:24:39.119 [DEBUG] [Thread-118994] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:24:39.119 [DEBUG] [Thread-118994] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:24:39.119 [DEBUG] [Thread-118994] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:24:39.119 [DEBUG] [Thread-118994] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:24:39.119 [DEBUG] [Thread-118994] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:24:39.119 [DEBUG] [Thread-118994] [transport.py] [_log()] Compression: none
2025-11-03T16:24:39.119 [DEBUG] [Thread-118994] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:24:39.127 [DEBUG] [Thread-118994] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:24:39.127 [DEBUG] [Thread-118994] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:24:39.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:24:39.128 [DEBUG] [Thread-118994] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:24:39.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:24:39.128 [DEBUG] [Thread-118994] [transport.py] [_log()] userauth is OK
2025-11-03T16:24:39.128 [DEBUG] [Thread-118994] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:24:39.128 [DEBUG] [Thread-118994] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:24:39.128 [DEBUG] [Thread-118994] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:24:39.128 [DEBUG] [Thread-118994] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:24:39.155 [INFO] [Thread-118994] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:24:39.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:24:39.853 [DEBUG] [Thread-118994] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:24:39.853 [DEBUG] [Thread-118994] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:24:39.853 [DEBUG] [Thread-118994] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:24:39.894 [DEBUG] [Thread-118994] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:24:39.894 [DEBUG] [Thread-118994] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:24:39.896 [DEBUG] [Thread-118994] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:24:39.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:24:39.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:24:39.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:24:39.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:24:39.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:24:39.915 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:24:39.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:24:39.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:24:39.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:24:39.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.600102 -999.00  +25.70  27.66      8  -10.50 1 1 1 1 1   888    0 36.87 1.09 ----- 27.7 27.7 312.6 31.5 29.1 -33.9 28.8 -32.9 30.0 -32.5 30.4 -31.9
2025-11-03T16:24:39.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:24:39.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:24:39.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.600102
2025-11-03T16:24:39.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:24:39.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:24:39.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:24:39.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:24:39.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:24:39.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:24:05', tmtdew=46.42, humidity=3.79, cloud=0.0, wind=22.29, temperature=25.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:24:08.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:24:39.916 [DEBUG] [Thread-118994] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:24:39.991 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:24:40.014 [DEBUG] [Thread-118997] [transport.py] [_log()] starting thread (client mode): 0xed8b580
2025-11-03T16:24:40.014 [DEBUG] [Thread-118997] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:24:40.029 [DEBUG] [Thread-118997] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:24:40.029 [INFO] [Thread-118997] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:24:40.039 [DEBUG] [Thread-118997] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:24:40.039 [DEBUG] [Thread-118997] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:24:40.039 [DEBUG] [Thread-118997] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:24:40.039 [DEBUG] [Thread-118997] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:24:40.039 [DEBUG] [Thread-118997] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:24:40.039 [DEBUG] [Thread-118997] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:24:40.039 [DEBUG] [Thread-118997] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:24:40.039 [DEBUG] [Thread-118997] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:24:40.039 [DEBUG] [Thread-118997] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:24:40.039 [DEBUG] [Thread-118997] [transport.py] [_log()] client lang: <none>
2025-11-03T16:24:40.039 [DEBUG] [Thread-118997] [transport.py] [_log()] server lang: <none>
2025-11-03T16:24:40.039 [DEBUG] [Thread-118997] [transport.py] [_log()] kex follows: False
2025-11-03T16:24:40.039 [DEBUG] [Thread-118997] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:24:40.039 [DEBUG] [Thread-118997] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:24:40.039 [DEBUG] [Thread-118997] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:24:40.039 [DEBUG] [Thread-118997] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:24:40.039 [DEBUG] [Thread-118997] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:24:40.039 [DEBUG] [Thread-118997] [transport.py] [_log()] Compression: none
2025-11-03T16:24:40.039 [DEBUG] [Thread-118997] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:24:40.092 [DEBUG] [Thread-118997] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:24:40.092 [DEBUG] [Thread-118997] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:24:40.092 [DEBUG] [Thread-118997] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:24:40.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:24:40.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:24:40.149 [DEBUG] [Thread-118997] [transport.py] [_log()] userauth is OK
2025-11-03T16:24:40.150 [DEBUG] [Thread-118997] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:24:40.150 [DEBUG] [Thread-118997] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:24:40.150 [DEBUG] [Thread-118997] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:24:40.150 [DEBUG] [Thread-118997] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:24:40.164 [INFO] [Thread-118997] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:24:40.164 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:24:40.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:24:41.000 [DEBUG] [Thread-118997] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:24:41.000 [DEBUG] [Thread-118997] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:24:41.049 [DEBUG] [Thread-118997] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:24:41.049 [DEBUG] [Thread-118997] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:24:41.057 [DEBUG] [Thread-118997] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:24:41.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:24:41.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:24:41.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:24:41.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:24:41.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:24:41.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:24:41.089 [DEBUG] [Thread-118997] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:24:45.253 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:45.613 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:46.999 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:47.396 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:47.804 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:48.206 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:48.603 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:49.014 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:49.428 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:49.845 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:50.247 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:50.646 [DEBUG] [Thread-118897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:24:53.784 [DEBUG] [Thread-118999 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:25:08.847 [DEBUG] [Thread-119000 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:25:11.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:25:11.112 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:25:11.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:25:11.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 24, 37), 47.17, 3.24, 0.0, 24.39, 26.13, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:25:11.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:24:37
2025-11-03T16:25:12.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:25:12.190 [DEBUG] [Thread-119001] [transport.py] [_log()] starting thread (client mode): 0x1174f1f0
2025-11-03T16:25:12.190 [DEBUG] [Thread-119001] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:25:12.203 [DEBUG] [Thread-119001] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:25:12.203 [INFO] [Thread-119001] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:25:12.207 [DEBUG] [Thread-119001] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:25:12.207 [DEBUG] [Thread-119001] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:25:12.207 [DEBUG] [Thread-119001] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:25:12.207 [DEBUG] [Thread-119001] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:25:12.207 [DEBUG] [Thread-119001] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:25:12.207 [DEBUG] [Thread-119001] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:25:12.207 [DEBUG] [Thread-119001] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:25:12.207 [DEBUG] [Thread-119001] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:25:12.207 [DEBUG] [Thread-119001] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:25:12.207 [DEBUG] [Thread-119001] [transport.py] [_log()] client lang: <none>
2025-11-03T16:25:12.207 [DEBUG] [Thread-119001] [transport.py] [_log()] server lang: <none>
2025-11-03T16:25:12.207 [DEBUG] [Thread-119001] [transport.py] [_log()] kex follows: False
2025-11-03T16:25:12.207 [DEBUG] [Thread-119001] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:25:12.208 [DEBUG] [Thread-119001] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:25:12.208 [DEBUG] [Thread-119001] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:25:12.208 [DEBUG] [Thread-119001] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:25:12.208 [DEBUG] [Thread-119001] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:25:12.208 [DEBUG] [Thread-119001] [transport.py] [_log()] Compression: none
2025-11-03T16:25:12.208 [DEBUG] [Thread-119001] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:25:12.233 [DEBUG] [Thread-119001] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:25:12.237 [DEBUG] [Thread-119001] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:25:12.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:25:12.238 [DEBUG] [Thread-119001] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:25:12.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:25:12.240 [DEBUG] [Thread-119001] [transport.py] [_log()] userauth is OK
2025-11-03T16:25:12.240 [DEBUG] [Thread-119001] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:25:12.240 [DEBUG] [Thread-119001] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:25:12.240 [DEBUG] [Thread-119001] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:25:12.240 [DEBUG] [Thread-119001] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:25:12.261 [INFO] [Thread-119001] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:25:12.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:25:14.275 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:25:14.276 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:25:14.898 [DEBUG] [Thread-119001] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:25:14.898 [DEBUG] [Thread-119001] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:25:14.907 [DEBUG] [Thread-119001] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:25:14.939 [DEBUG] [Thread-119001] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:25:14.939 [DEBUG] [Thread-119001] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:25:14.941 [DEBUG] [Thread-119001] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:25:14.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:25:14.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:25:14.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:25:14.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:25:14.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:25:14.981 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:25:14.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:25:14.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:25:14.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:25:14.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.600450 -999.00  +25.60  19.90      7  -11.30 1 1 1 1 1   888    0 37.12 -0.14 ----- 24.7 19.9 299.8 30.6 29.1 -33.3 28.9 -32.8 29.9 -33.6 30.4 -32.5
2025-11-03T16:25:14.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:25:14.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:25:14.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.600450
2025-11-03T16:25:14.987 [DEBUG] [Thread-119001] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:25:14.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:25:14.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:25:14.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:25:14.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:25:14.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:25:14.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:24:37', tmtdew=47.17, humidity=3.24, cloud=0.0, wind=24.39, temperature=26.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:24:38.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:25:15.083 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:25:15.103 [DEBUG] [Thread-119004] [transport.py] [_log()] starting thread (client mode): 0x11798430
2025-11-03T16:25:15.103 [DEBUG] [Thread-119004] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:25:15.119 [DEBUG] [Thread-119004] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:25:15.119 [INFO] [Thread-119004] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:25:15.135 [DEBUG] [Thread-119004] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:25:15.135 [DEBUG] [Thread-119004] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:25:15.135 [DEBUG] [Thread-119004] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:25:15.135 [DEBUG] [Thread-119004] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:25:15.135 [DEBUG] [Thread-119004] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:25:15.135 [DEBUG] [Thread-119004] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:25:15.135 [DEBUG] [Thread-119004] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:25:15.135 [DEBUG] [Thread-119004] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:25:15.135 [DEBUG] [Thread-119004] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:25:15.135 [DEBUG] [Thread-119004] [transport.py] [_log()] client lang: <none>
2025-11-03T16:25:15.135 [DEBUG] [Thread-119004] [transport.py] [_log()] server lang: <none>
2025-11-03T16:25:15.135 [DEBUG] [Thread-119004] [transport.py] [_log()] kex follows: False
2025-11-03T16:25:15.135 [DEBUG] [Thread-119004] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:25:15.135 [DEBUG] [Thread-119004] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:25:15.135 [DEBUG] [Thread-119004] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:25:15.135 [DEBUG] [Thread-119004] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:25:15.135 [DEBUG] [Thread-119004] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:25:15.135 [DEBUG] [Thread-119004] [transport.py] [_log()] Compression: none
2025-11-03T16:25:15.135 [DEBUG] [Thread-119004] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:25:15.184 [DEBUG] [Thread-119004] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:25:15.184 [DEBUG] [Thread-119004] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:25:15.185 [DEBUG] [Thread-119004] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:25:15.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:25:15.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:25:15.242 [DEBUG] [Thread-119004] [transport.py] [_log()] userauth is OK
2025-11-03T16:25:15.242 [DEBUG] [Thread-119004] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:25:15.242 [DEBUG] [Thread-119004] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:25:15.242 [DEBUG] [Thread-119004] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:25:15.242 [DEBUG] [Thread-119004] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:25:15.256 [INFO] [Thread-119004] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:25:15.256 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:25:15.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:25:16.088 [DEBUG] [Thread-119004] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:25:16.088 [DEBUG] [Thread-119004] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:25:16.136 [DEBUG] [Thread-119004] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:25:16.136 [DEBUG] [Thread-119004] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:25:16.145 [DEBUG] [Thread-119004] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:25:16.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:25:16.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:25:16.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:25:16.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:25:16.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:25:16.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:25:16.181 [DEBUG] [Thread-119004] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:25:23.416 [DEBUG] [Thread-119006 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:25:23.890 [DEBUG] [Thread-119007 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:25:38.973 [DEBUG] [Thread-119008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:25:46.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:25:46.201 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:25:46.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:25:46.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 25, 42), 48.31, 3.01, 0.0, 29.64, 26.08, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:25:46.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:25:42
2025-11-03T16:25:47.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:25:47.261 [DEBUG] [Thread-119009] [transport.py] [_log()] starting thread (client mode): 0x117bf520
2025-11-03T16:25:47.261 [DEBUG] [Thread-119009] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:25:47.282 [DEBUG] [Thread-119009] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:25:47.282 [INFO] [Thread-119009] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:25:47.284 [DEBUG] [Thread-119009] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:25:47.285 [DEBUG] [Thread-119009] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:25:47.285 [DEBUG] [Thread-119009] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:25:47.285 [DEBUG] [Thread-119009] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:25:47.285 [DEBUG] [Thread-119009] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:25:47.285 [DEBUG] [Thread-119009] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:25:47.285 [DEBUG] [Thread-119009] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:25:47.285 [DEBUG] [Thread-119009] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:25:47.285 [DEBUG] [Thread-119009] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:25:47.285 [DEBUG] [Thread-119009] [transport.py] [_log()] client lang: <none>
2025-11-03T16:25:47.285 [DEBUG] [Thread-119009] [transport.py] [_log()] server lang: <none>
2025-11-03T16:25:47.285 [DEBUG] [Thread-119009] [transport.py] [_log()] kex follows: False
2025-11-03T16:25:47.285 [DEBUG] [Thread-119009] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:25:47.285 [DEBUG] [Thread-119009] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:25:47.285 [DEBUG] [Thread-119009] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:25:47.285 [DEBUG] [Thread-119009] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:25:47.285 [DEBUG] [Thread-119009] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:25:47.285 [DEBUG] [Thread-119009] [transport.py] [_log()] Compression: none
2025-11-03T16:25:47.286 [DEBUG] [Thread-119009] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:25:47.305 [DEBUG] [Thread-119009] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:25:47.305 [DEBUG] [Thread-119009] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:25:47.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:25:47.307 [DEBUG] [Thread-119009] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:25:47.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:25:47.310 [DEBUG] [Thread-119009] [transport.py] [_log()] userauth is OK
2025-11-03T16:25:47.311 [DEBUG] [Thread-119009] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:25:47.311 [DEBUG] [Thread-119009] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:25:47.311 [DEBUG] [Thread-119009] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:25:47.311 [DEBUG] [Thread-119009] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:25:47.336 [INFO] [Thread-119009] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:25:47.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:25:47.985 [DEBUG] [Thread-119009] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:25:47.985 [DEBUG] [Thread-119009] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:25:47.985 [DEBUG] [Thread-119009] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:25:48.026 [DEBUG] [Thread-119009] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:25:48.026 [DEBUG] [Thread-119009] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:25:48.030 [DEBUG] [Thread-119009] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:25:48.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:25:48.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:25:48.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:25:48.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:25:48.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:25:48.055 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:25:48.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:25:48.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:25:48.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:25:48.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.600797 -999.00  +25.60  30.46      7  -11.70 1 1 2 1 1   888    0 37.30 1.27 ----- 23.2 30.5 287.4 36.1 29.0 -33.6 28.9 -32.5 29.8 -31.9 30.4 -33.1
2025-11-03T16:25:48.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:25:48.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:25:48.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.600797
2025-11-03T16:25:48.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:25:48.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:25:48.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:25:48.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:25:48.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:25:48.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:25:42', tmtdew=48.31, humidity=3.01, cloud=0.0, wind=29.64, temperature=26.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:25:08.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:25:48.058 [DEBUG] [Thread-119009] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:25:48.141 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:25:48.162 [DEBUG] [Thread-119012] [transport.py] [_log()] starting thread (client mode): 0x1179ab30
2025-11-03T16:25:48.162 [DEBUG] [Thread-119012] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:25:48.177 [DEBUG] [Thread-119012] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:25:48.177 [INFO] [Thread-119012] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:25:48.185 [DEBUG] [Thread-119012] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:25:48.185 [DEBUG] [Thread-119012] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:25:48.185 [DEBUG] [Thread-119012] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:25:48.185 [DEBUG] [Thread-119012] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:25:48.185 [DEBUG] [Thread-119012] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:25:48.186 [DEBUG] [Thread-119012] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:25:48.186 [DEBUG] [Thread-119012] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:25:48.186 [DEBUG] [Thread-119012] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:25:48.186 [DEBUG] [Thread-119012] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:25:48.186 [DEBUG] [Thread-119012] [transport.py] [_log()] client lang: <none>
2025-11-03T16:25:48.186 [DEBUG] [Thread-119012] [transport.py] [_log()] server lang: <none>
2025-11-03T16:25:48.186 [DEBUG] [Thread-119012] [transport.py] [_log()] kex follows: False
2025-11-03T16:25:48.186 [DEBUG] [Thread-119012] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:25:48.187 [DEBUG] [Thread-119012] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:25:48.187 [DEBUG] [Thread-119012] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:25:48.187 [DEBUG] [Thread-119012] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:25:48.187 [DEBUG] [Thread-119012] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:25:48.187 [DEBUG] [Thread-119012] [transport.py] [_log()] Compression: none
2025-11-03T16:25:48.187 [DEBUG] [Thread-119012] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:25:48.244 [DEBUG] [Thread-119012] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:25:48.245 [DEBUG] [Thread-119012] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:25:48.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:25:48.247 [DEBUG] [Thread-119012] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:25:48.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:25:48.303 [DEBUG] [Thread-119012] [transport.py] [_log()] userauth is OK
2025-11-03T16:25:48.304 [DEBUG] [Thread-119012] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:25:48.304 [DEBUG] [Thread-119012] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:25:48.304 [DEBUG] [Thread-119012] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:25:48.304 [DEBUG] [Thread-119012] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:25:48.323 [INFO] [Thread-119012] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:25:48.323 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:25:48.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:25:49.229 [DEBUG] [Thread-119012] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:25:49.229 [DEBUG] [Thread-119012] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:25:49.277 [DEBUG] [Thread-119012] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:25:49.277 [DEBUG] [Thread-119012] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:25:49.286 [DEBUG] [Thread-119012] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:25:49.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:25:49.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:25:49.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:25:49.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:25:49.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:25:49.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:25:49.319 [DEBUG] [Thread-119012] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:25:54.010 [DEBUG] [Thread-119014 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:26:09.077 [DEBUG] [Thread-119015 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:26:14.416 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:26:14.417 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:26:19.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:26:19.341 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:26:19.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:26:20.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 26, 14), 48.43, 2.97, 0.0, 28.78, 26.08, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:26:20.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:26:14
2025-11-03T16:26:20.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:26:20.424 [DEBUG] [Thread-119016] [transport.py] [_log()] starting thread (client mode): 0xed2d870
2025-11-03T16:26:20.424 [DEBUG] [Thread-119016] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:26:20.447 [DEBUG] [Thread-119016] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:26:20.447 [INFO] [Thread-119016] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:26:20.449 [DEBUG] [Thread-119016] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:26:20.449 [DEBUG] [Thread-119016] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:26:20.449 [DEBUG] [Thread-119016] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:26:20.449 [DEBUG] [Thread-119016] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:26:20.449 [DEBUG] [Thread-119016] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:26:20.449 [DEBUG] [Thread-119016] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:26:20.449 [DEBUG] [Thread-119016] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:26:20.449 [DEBUG] [Thread-119016] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:26:20.449 [DEBUG] [Thread-119016] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:26:20.449 [DEBUG] [Thread-119016] [transport.py] [_log()] client lang: <none>
2025-11-03T16:26:20.449 [DEBUG] [Thread-119016] [transport.py] [_log()] server lang: <none>
2025-11-03T16:26:20.449 [DEBUG] [Thread-119016] [transport.py] [_log()] kex follows: False
2025-11-03T16:26:20.449 [DEBUG] [Thread-119016] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:26:20.449 [DEBUG] [Thread-119016] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:26:20.449 [DEBUG] [Thread-119016] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:26:20.449 [DEBUG] [Thread-119016] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:26:20.449 [DEBUG] [Thread-119016] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:26:20.449 [DEBUG] [Thread-119016] [transport.py] [_log()] Compression: none
2025-11-03T16:26:20.449 [DEBUG] [Thread-119016] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:26:20.464 [DEBUG] [Thread-119016] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:26:20.464 [DEBUG] [Thread-119016] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:26:20.464 [DEBUG] [Thread-119016] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:26:20.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:26:20.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:26:20.465 [DEBUG] [Thread-119016] [transport.py] [_log()] userauth is OK
2025-11-03T16:26:20.465 [DEBUG] [Thread-119016] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:26:20.465 [DEBUG] [Thread-119016] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:26:20.465 [DEBUG] [Thread-119016] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:26:20.465 [DEBUG] [Thread-119016] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:26:20.481 [INFO] [Thread-119016] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:26:20.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:26:21.130 [DEBUG] [Thread-119016] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:26:21.130 [DEBUG] [Thread-119016] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:26:21.130 [DEBUG] [Thread-119016] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:26:21.171 [DEBUG] [Thread-119016] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:26:21.171 [DEBUG] [Thread-119016] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:26:21.173 [DEBUG] [Thread-119016] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:26:21.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:26:21.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:26:21.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:26:21.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:26:21.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:26:21.188 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:26:21.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:26:21.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:26:21.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:26:21.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.601144 -999.00  +26.20  31.02      7  -11.40 1 1 2 1 1   888    0 37.14 3.74 ----- 36.4 31.0 314.4 35.4 29.1 -33.0 28.9 -32.5 30.1 -31.5 30.5 -32.1
2025-11-03T16:26:21.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:26:21.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:26:21.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.601144
2025-11-03T16:26:21.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:26:21.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:26:21.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:26:21.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:26:21.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:26:21.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:26:14', tmtdew=48.43, humidity=2.97, cloud=0.0, wind=28.78, temperature=26.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:25:38.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:26:21.189 [DEBUG] [Thread-119016] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:26:21.263 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:26:21.285 [DEBUG] [Thread-119019] [transport.py] [_log()] starting thread (client mode): 0x1174feb0
2025-11-03T16:26:21.285 [DEBUG] [Thread-119019] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:26:21.301 [DEBUG] [Thread-119019] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:26:21.301 [INFO] [Thread-119019] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:26:21.309 [DEBUG] [Thread-119019] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:26:21.309 [DEBUG] [Thread-119019] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:26:21.309 [DEBUG] [Thread-119019] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:26:21.309 [DEBUG] [Thread-119019] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:26:21.309 [DEBUG] [Thread-119019] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:26:21.309 [DEBUG] [Thread-119019] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:26:21.309 [DEBUG] [Thread-119019] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:26:21.309 [DEBUG] [Thread-119019] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:26:21.309 [DEBUG] [Thread-119019] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:26:21.309 [DEBUG] [Thread-119019] [transport.py] [_log()] client lang: <none>
2025-11-03T16:26:21.309 [DEBUG] [Thread-119019] [transport.py] [_log()] server lang: <none>
2025-11-03T16:26:21.309 [DEBUG] [Thread-119019] [transport.py] [_log()] kex follows: False
2025-11-03T16:26:21.309 [DEBUG] [Thread-119019] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:26:21.309 [DEBUG] [Thread-119019] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:26:21.309 [DEBUG] [Thread-119019] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:26:21.309 [DEBUG] [Thread-119019] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:26:21.309 [DEBUG] [Thread-119019] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:26:21.309 [DEBUG] [Thread-119019] [transport.py] [_log()] Compression: none
2025-11-03T16:26:21.309 [DEBUG] [Thread-119019] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:26:21.374 [DEBUG] [Thread-119019] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:26:21.374 [DEBUG] [Thread-119019] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:26:21.374 [DEBUG] [Thread-119019] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:26:21.374 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:26:21.374 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:26:21.430 [DEBUG] [Thread-119019] [transport.py] [_log()] userauth is OK
2025-11-03T16:26:21.430 [DEBUG] [Thread-119019] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:26:21.430 [DEBUG] [Thread-119019] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:26:21.430 [DEBUG] [Thread-119019] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:26:21.430 [DEBUG] [Thread-119019] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:26:21.444 [INFO] [Thread-119019] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:26:21.444 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:26:21.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:26:22.290 [DEBUG] [Thread-119019] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:26:22.290 [DEBUG] [Thread-119019] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:26:22.339 [DEBUG] [Thread-119019] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:26:22.339 [DEBUG] [Thread-119019] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:26:22.348 [DEBUG] [Thread-119019] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:26:22.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:26:22.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:26:22.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:26:22.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:26:22.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:26:22.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:26:22.383 [DEBUG] [Thread-119019] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:26:23.449 [DEBUG] [Thread-119021 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:26:24.115 [DEBUG] [Thread-119022 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:26:39.174 [DEBUG] [Thread-119023 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:26:52.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:26:52.405 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:26:52.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:26:53.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 26, 47), 50.39, 2.82, 0.0, 36.08, 26.7, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:26:53.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:26:47
2025-11-03T16:26:53.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:26:53.493 [DEBUG] [Thread-119024] [transport.py] [_log()] starting thread (client mode): 0xed2f580
2025-11-03T16:26:53.493 [DEBUG] [Thread-119024] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:26:53.513 [DEBUG] [Thread-119024] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:26:53.513 [INFO] [Thread-119024] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:26:53.516 [DEBUG] [Thread-119024] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:26:53.516 [DEBUG] [Thread-119024] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:26:53.516 [DEBUG] [Thread-119024] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:26:53.516 [DEBUG] [Thread-119024] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:26:53.517 [DEBUG] [Thread-119024] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:26:53.517 [DEBUG] [Thread-119024] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:26:53.517 [DEBUG] [Thread-119024] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:26:53.517 [DEBUG] [Thread-119024] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:26:53.517 [DEBUG] [Thread-119024] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:26:53.517 [DEBUG] [Thread-119024] [transport.py] [_log()] client lang: <none>
2025-11-03T16:26:53.517 [DEBUG] [Thread-119024] [transport.py] [_log()] server lang: <none>
2025-11-03T16:26:53.517 [DEBUG] [Thread-119024] [transport.py] [_log()] kex follows: False
2025-11-03T16:26:53.517 [DEBUG] [Thread-119024] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:26:53.517 [DEBUG] [Thread-119024] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:26:53.517 [DEBUG] [Thread-119024] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:26:53.517 [DEBUG] [Thread-119024] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:26:53.517 [DEBUG] [Thread-119024] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:26:53.517 [DEBUG] [Thread-119024] [transport.py] [_log()] Compression: none
2025-11-03T16:26:53.517 [DEBUG] [Thread-119024] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:26:53.526 [DEBUG] [Thread-119024] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:26:53.526 [DEBUG] [Thread-119024] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:26:53.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:26:53.527 [DEBUG] [Thread-119024] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:26:53.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:26:53.529 [DEBUG] [Thread-119024] [transport.py] [_log()] userauth is OK
2025-11-03T16:26:53.530 [DEBUG] [Thread-119024] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:26:53.530 [DEBUG] [Thread-119024] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:26:53.530 [DEBUG] [Thread-119024] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:26:53.530 [DEBUG] [Thread-119024] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:26:53.564 [INFO] [Thread-119024] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:26:53.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:26:54.194 [DEBUG] [Thread-119024] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:26:54.194 [DEBUG] [Thread-119024] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:26:54.194 [DEBUG] [Thread-119024] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:26:54.219 [DEBUG] [Thread-119026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:26:54.234 [DEBUG] [Thread-119024] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:26:54.234 [DEBUG] [Thread-119024] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:26:54.237 [DEBUG] [Thread-119024] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:26:54.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:26:54.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:26:54.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:26:54.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:26:54.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:26:54.256 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:26:54.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:26:54.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:26:54.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:26:54.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.601491 -999.00  +25.90  36.42      7  -12.30 1 1 2 1 1   888    0 37.63 10.65 ----- 41.9 36.4 309.0 56.4 29.1 -34.8 29.0 -32.2 29.9 -32.9 30.4 -33.6
2025-11-03T16:26:54.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:26:54.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:26:54.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.601491
2025-11-03T16:26:54.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:26:54.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:26:54.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:26:54.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:26:54.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:26:54.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:26:47', tmtdew=50.39, humidity=2.82, cloud=0.0, wind=36.08, temperature=26.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:26:08.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:26:54.257 [DEBUG] [Thread-119024] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:26:54.329 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:26:54.347 [DEBUG] [Thread-119028] [transport.py] [_log()] starting thread (client mode): 0x141da920
2025-11-03T16:26:54.347 [DEBUG] [Thread-119028] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:26:54.362 [DEBUG] [Thread-119028] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:26:54.362 [INFO] [Thread-119028] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:26:54.370 [DEBUG] [Thread-119028] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:26:54.370 [DEBUG] [Thread-119028] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:26:54.370 [DEBUG] [Thread-119028] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:26:54.370 [DEBUG] [Thread-119028] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:26:54.370 [DEBUG] [Thread-119028] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:26:54.370 [DEBUG] [Thread-119028] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:26:54.370 [DEBUG] [Thread-119028] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:26:54.370 [DEBUG] [Thread-119028] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:26:54.370 [DEBUG] [Thread-119028] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:26:54.370 [DEBUG] [Thread-119028] [transport.py] [_log()] client lang: <none>
2025-11-03T16:26:54.370 [DEBUG] [Thread-119028] [transport.py] [_log()] server lang: <none>
2025-11-03T16:26:54.370 [DEBUG] [Thread-119028] [transport.py] [_log()] kex follows: False
2025-11-03T16:26:54.370 [DEBUG] [Thread-119028] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:26:54.370 [DEBUG] [Thread-119028] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:26:54.370 [DEBUG] [Thread-119028] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:26:54.370 [DEBUG] [Thread-119028] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:26:54.370 [DEBUG] [Thread-119028] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:26:54.370 [DEBUG] [Thread-119028] [transport.py] [_log()] Compression: none
2025-11-03T16:26:54.370 [DEBUG] [Thread-119028] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:26:54.425 [DEBUG] [Thread-119028] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:26:54.426 [DEBUG] [Thread-119028] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:26:54.426 [DEBUG] [Thread-119028] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:26:54.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:26:54.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:26:54.482 [DEBUG] [Thread-119028] [transport.py] [_log()] userauth is OK
2025-11-03T16:26:54.482 [DEBUG] [Thread-119028] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:26:54.482 [DEBUG] [Thread-119028] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:26:54.482 [DEBUG] [Thread-119028] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:26:54.482 [DEBUG] [Thread-119028] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:26:54.496 [INFO] [Thread-119028] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:26:54.496 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:26:54.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:26:55.407 [DEBUG] [Thread-119028] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:26:55.407 [DEBUG] [Thread-119028] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:26:55.454 [DEBUG] [Thread-119028] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:26:55.455 [DEBUG] [Thread-119028] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:26:55.463 [DEBUG] [Thread-119028] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:26:55.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:26:55.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:26:55.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:26:55.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:26:55.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:26:55.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:26:55.496 [DEBUG] [Thread-119028] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:27:09.256 [DEBUG] [Thread-119030 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:27:14.559 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:27:14.560 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:27:23.505 [DEBUG] [Thread-119031 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:27:24.325 [DEBUG] [Thread-119032 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:27:25.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:27:25.519 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:27:25.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:27:26.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 27, 19), 50.37, 2.82, 0.0, 32.77, 26.62, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:27:26.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:27:19
2025-11-03T16:27:26.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:27:26.586 [DEBUG] [Thread-119033] [transport.py] [_log()] starting thread (client mode): 0x1174f220
2025-11-03T16:27:26.587 [DEBUG] [Thread-119033] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:27:26.600 [DEBUG] [Thread-119033] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:27:26.601 [INFO] [Thread-119033] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:27:26.603 [DEBUG] [Thread-119033] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:27:26.603 [DEBUG] [Thread-119033] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:27:26.603 [DEBUG] [Thread-119033] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:27:26.603 [DEBUG] [Thread-119033] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:27:26.603 [DEBUG] [Thread-119033] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:27:26.603 [DEBUG] [Thread-119033] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:27:26.603 [DEBUG] [Thread-119033] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:27:26.603 [DEBUG] [Thread-119033] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:27:26.604 [DEBUG] [Thread-119033] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:27:26.604 [DEBUG] [Thread-119033] [transport.py] [_log()] client lang: <none>
2025-11-03T16:27:26.604 [DEBUG] [Thread-119033] [transport.py] [_log()] server lang: <none>
2025-11-03T16:27:26.604 [DEBUG] [Thread-119033] [transport.py] [_log()] kex follows: False
2025-11-03T16:27:26.604 [DEBUG] [Thread-119033] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:27:26.604 [DEBUG] [Thread-119033] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:27:26.604 [DEBUG] [Thread-119033] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:27:26.604 [DEBUG] [Thread-119033] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:27:26.604 [DEBUG] [Thread-119033] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:27:26.605 [DEBUG] [Thread-119033] [transport.py] [_log()] Compression: none
2025-11-03T16:27:26.605 [DEBUG] [Thread-119033] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:27:26.616 [DEBUG] [Thread-119033] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:27:26.626 [DEBUG] [Thread-119033] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:27:26.627 [DEBUG] [Thread-119033] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:27:26.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:27:26.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:27:26.629 [DEBUG] [Thread-119033] [transport.py] [_log()] userauth is OK
2025-11-03T16:27:26.629 [DEBUG] [Thread-119033] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:27:26.629 [DEBUG] [Thread-119033] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:27:26.630 [DEBUG] [Thread-119033] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:27:26.630 [DEBUG] [Thread-119033] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:27:26.647 [INFO] [Thread-119033] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:27:26.648 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:27:27.295 [DEBUG] [Thread-119033] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:27:27.295 [DEBUG] [Thread-119033] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:27:27.295 [DEBUG] [Thread-119033] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:27:27.336 [DEBUG] [Thread-119033] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:27:27.336 [DEBUG] [Thread-119033] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:27:27.340 [DEBUG] [Thread-119033] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:27:27.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:27:27.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:27:27.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:27:27.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:27:27.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:27:27.364 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:27:27.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:27:27.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:27:27.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:27:27.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.601839 -999.00  +25.80  32.72      7  -12.40 1 1 2 1 1   888    0 36.85 18.39 ----- 26.5 32.7 313.6 43.4 29.0 -34.1 28.9 -33.3 29.9 -33.1 30.4 -33.0
2025-11-03T16:27:27.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:27:27.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:27:27.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.601839
2025-11-03T16:27:27.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:27:27.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:27:27.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:27:27.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:27:27.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:27:27.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:27:19', tmtdew=50.37, humidity=2.82, cloud=0.0, wind=32.77, temperature=26.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:26:38.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:27:27.367 [DEBUG] [Thread-119033] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:27:27.461 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:27:27.487 [DEBUG] [Thread-119036] [transport.py] [_log()] starting thread (client mode): 0xed2e680
2025-11-03T16:27:27.487 [DEBUG] [Thread-119036] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:27:27.502 [DEBUG] [Thread-119036] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:27:27.503 [INFO] [Thread-119036] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:27:27.510 [DEBUG] [Thread-119036] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:27:27.511 [DEBUG] [Thread-119036] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:27:27.511 [DEBUG] [Thread-119036] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:27:27.511 [DEBUG] [Thread-119036] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:27:27.511 [DEBUG] [Thread-119036] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:27:27.512 [DEBUG] [Thread-119036] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:27:27.512 [DEBUG] [Thread-119036] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:27:27.512 [DEBUG] [Thread-119036] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:27:27.512 [DEBUG] [Thread-119036] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:27:27.512 [DEBUG] [Thread-119036] [transport.py] [_log()] client lang: <none>
2025-11-03T16:27:27.512 [DEBUG] [Thread-119036] [transport.py] [_log()] server lang: <none>
2025-11-03T16:27:27.512 [DEBUG] [Thread-119036] [transport.py] [_log()] kex follows: False
2025-11-03T16:27:27.512 [DEBUG] [Thread-119036] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:27:27.512 [DEBUG] [Thread-119036] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:27:27.512 [DEBUG] [Thread-119036] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:27:27.512 [DEBUG] [Thread-119036] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:27:27.512 [DEBUG] [Thread-119036] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:27:27.512 [DEBUG] [Thread-119036] [transport.py] [_log()] Compression: none
2025-11-03T16:27:27.512 [DEBUG] [Thread-119036] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:27:27.571 [DEBUG] [Thread-119036] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:27:27.581 [DEBUG] [Thread-119036] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:27:27.581 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:27:27.582 [DEBUG] [Thread-119036] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:27:27.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:27:27.627 [DEBUG] [Thread-119036] [transport.py] [_log()] userauth is OK
2025-11-03T16:27:27.627 [DEBUG] [Thread-119036] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:27:27.628 [DEBUG] [Thread-119036] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:27:27.628 [DEBUG] [Thread-119036] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:27:27.628 [DEBUG] [Thread-119036] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:27:27.646 [INFO] [Thread-119036] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:27:27.647 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:27:27.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:27:28.521 [DEBUG] [Thread-119036] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:27:28.521 [DEBUG] [Thread-119036] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:27:28.568 [DEBUG] [Thread-119036] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:27:28.568 [DEBUG] [Thread-119036] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:27:28.576 [DEBUG] [Thread-119036] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:27:28.585 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:27:28.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:27:28.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:27:28.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:27:28.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:27:28.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:27:28.609 [DEBUG] [Thread-119036] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:27:39.369 [DEBUG] [Thread-119038 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:27:54.421 [DEBUG] [Thread-119039 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:27:58.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:27:58.616 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:27:58.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:27:59.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 27, 51), 50.11, 2.87, 0.0, 30.74, 26.58, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:27:59.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:27:51
2025-11-03T16:27:59.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:27:59.673 [DEBUG] [Thread-119040] [transport.py] [_log()] starting thread (client mode): 0x1174f670
2025-11-03T16:27:59.673 [DEBUG] [Thread-119040] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:27:59.701 [DEBUG] [Thread-119040] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:27:59.702 [INFO] [Thread-119040] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:27:59.704 [DEBUG] [Thread-119040] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:27:59.705 [DEBUG] [Thread-119040] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:27:59.705 [DEBUG] [Thread-119040] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:27:59.705 [DEBUG] [Thread-119040] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:27:59.705 [DEBUG] [Thread-119040] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:27:59.705 [DEBUG] [Thread-119040] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:27:59.705 [DEBUG] [Thread-119040] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:27:59.705 [DEBUG] [Thread-119040] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:27:59.705 [DEBUG] [Thread-119040] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:27:59.705 [DEBUG] [Thread-119040] [transport.py] [_log()] client lang: <none>
2025-11-03T16:27:59.705 [DEBUG] [Thread-119040] [transport.py] [_log()] server lang: <none>
2025-11-03T16:27:59.705 [DEBUG] [Thread-119040] [transport.py] [_log()] kex follows: False
2025-11-03T16:27:59.705 [DEBUG] [Thread-119040] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:27:59.705 [DEBUG] [Thread-119040] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:27:59.706 [DEBUG] [Thread-119040] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:27:59.706 [DEBUG] [Thread-119040] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:27:59.706 [DEBUG] [Thread-119040] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:27:59.706 [DEBUG] [Thread-119040] [transport.py] [_log()] Compression: none
2025-11-03T16:27:59.706 [DEBUG] [Thread-119040] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:27:59.727 [DEBUG] [Thread-119040] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:27:59.727 [DEBUG] [Thread-119040] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:27:59.728 [DEBUG] [Thread-119040] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:27:59.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:27:59.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:27:59.730 [DEBUG] [Thread-119040] [transport.py] [_log()] userauth is OK
2025-11-03T16:27:59.730 [DEBUG] [Thread-119040] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:27:59.730 [DEBUG] [Thread-119040] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:27:59.731 [DEBUG] [Thread-119040] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:27:59.731 [DEBUG] [Thread-119040] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:27:59.757 [INFO] [Thread-119040] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:27:59.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:28:00.393 [DEBUG] [Thread-119040] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:28:00.393 [DEBUG] [Thread-119040] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:28:00.394 [DEBUG] [Thread-119040] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:28:00.434 [DEBUG] [Thread-119040] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:28:00.434 [DEBUG] [Thread-119040] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:28:00.439 [DEBUG] [Thread-119040] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:28:00.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:28:00.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:28:00.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:28:00.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:28:00.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:28:00.471 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:28:00.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:28:00.472 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:28:00.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:28:00.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.602186 -999.00  +26.00  36.30      7  -12.20 1 1 2 1 1   888    0 37.62 24.23 ----- 33.3 36.3 329.2 43.9 29.1 -34.7 28.9 -32.9 29.9 -32.9 30.4 -33.0
2025-11-03T16:28:00.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:28:00.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:28:00.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.602186
2025-11-03T16:28:00.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:28:00.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:28:00.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:28:00.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:28:00.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:28:00.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:27:51', tmtdew=50.11, humidity=2.87, cloud=0.0, wind=30.74, temperature=26.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:27:08.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:28:00.475 [DEBUG] [Thread-119040] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:28:00.557 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:28:00.575 [DEBUG] [Thread-119043] [transport.py] [_log()] starting thread (client mode): 0x1174d780
2025-11-03T16:28:00.575 [DEBUG] [Thread-119043] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:28:00.590 [DEBUG] [Thread-119043] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:28:00.590 [INFO] [Thread-119043] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:28:00.597 [DEBUG] [Thread-119043] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:28:00.598 [DEBUG] [Thread-119043] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:28:00.598 [DEBUG] [Thread-119043] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:28:00.598 [DEBUG] [Thread-119043] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:28:00.598 [DEBUG] [Thread-119043] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:28:00.598 [DEBUG] [Thread-119043] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:28:00.598 [DEBUG] [Thread-119043] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:28:00.598 [DEBUG] [Thread-119043] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:28:00.598 [DEBUG] [Thread-119043] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:28:00.598 [DEBUG] [Thread-119043] [transport.py] [_log()] client lang: <none>
2025-11-03T16:28:00.598 [DEBUG] [Thread-119043] [transport.py] [_log()] server lang: <none>
2025-11-03T16:28:00.598 [DEBUG] [Thread-119043] [transport.py] [_log()] kex follows: False
2025-11-03T16:28:00.598 [DEBUG] [Thread-119043] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:28:00.598 [DEBUG] [Thread-119043] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:28:00.598 [DEBUG] [Thread-119043] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:28:00.598 [DEBUG] [Thread-119043] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:28:00.599 [DEBUG] [Thread-119043] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:28:00.599 [DEBUG] [Thread-119043] [transport.py] [_log()] Compression: none
2025-11-03T16:28:00.599 [DEBUG] [Thread-119043] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:28:00.660 [DEBUG] [Thread-119043] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:28:00.660 [DEBUG] [Thread-119043] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:28:00.661 [DEBUG] [Thread-119043] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:28:00.661 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:28:00.662 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:28:00.715 [DEBUG] [Thread-119043] [transport.py] [_log()] userauth is OK
2025-11-03T16:28:00.716 [DEBUG] [Thread-119043] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:28:00.716 [DEBUG] [Thread-119043] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:28:00.716 [DEBUG] [Thread-119043] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:28:00.716 [DEBUG] [Thread-119043] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:28:00.736 [INFO] [Thread-119043] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:28:00.736 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:28:00.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:28:01.585 [DEBUG] [Thread-119043] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:28:01.585 [DEBUG] [Thread-119043] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:28:01.634 [DEBUG] [Thread-119043] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:28:01.634 [DEBUG] [Thread-119043] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:28:01.643 [DEBUG] [Thread-119043] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:28:01.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:28:01.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:28:01.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:28:01.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:28:01.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:28:01.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:28:01.679 [DEBUG] [Thread-119043] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:28:09.460 [DEBUG] [Thread-119045 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:28:14.699 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:28:14.700 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:28:23.564 [DEBUG] [Thread-119046 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:28:24.539 [DEBUG] [Thread-119047 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:28:31.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:28:31.702 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:28:31.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:28:32.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 28, 24), 50.28, 2.82, 0.0, 28.59, 26.47, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:28:32.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:28:24
2025-11-03T16:28:32.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:28:32.683 [DEBUG] [Thread-119048] [transport.py] [_log()] starting thread (client mode): 0x1174f130
2025-11-03T16:28:32.683 [DEBUG] [Thread-119048] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:28:32.695 [DEBUG] [Thread-119048] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:28:32.695 [INFO] [Thread-119048] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:28:32.696 [DEBUG] [Thread-119048] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:28:32.696 [DEBUG] [Thread-119048] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:28:32.696 [DEBUG] [Thread-119048] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:28:32.697 [DEBUG] [Thread-119048] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:28:32.697 [DEBUG] [Thread-119048] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:28:32.697 [DEBUG] [Thread-119048] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:28:32.697 [DEBUG] [Thread-119048] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:28:32.697 [DEBUG] [Thread-119048] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:28:32.697 [DEBUG] [Thread-119048] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:28:32.697 [DEBUG] [Thread-119048] [transport.py] [_log()] client lang: <none>
2025-11-03T16:28:32.697 [DEBUG] [Thread-119048] [transport.py] [_log()] server lang: <none>
2025-11-03T16:28:32.697 [DEBUG] [Thread-119048] [transport.py] [_log()] kex follows: False
2025-11-03T16:28:32.697 [DEBUG] [Thread-119048] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:28:32.697 [DEBUG] [Thread-119048] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:28:32.697 [DEBUG] [Thread-119048] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:28:32.698 [DEBUG] [Thread-119048] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:28:32.698 [DEBUG] [Thread-119048] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:28:32.698 [DEBUG] [Thread-119048] [transport.py] [_log()] Compression: none
2025-11-03T16:28:32.698 [DEBUG] [Thread-119048] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:28:32.711 [DEBUG] [Thread-119048] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:28:32.712 [DEBUG] [Thread-119048] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:28:32.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:28:32.714 [DEBUG] [Thread-119048] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:28:32.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:28:32.716 [DEBUG] [Thread-119048] [transport.py] [_log()] userauth is OK
2025-11-03T16:28:32.716 [DEBUG] [Thread-119048] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:28:32.717 [DEBUG] [Thread-119048] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:28:32.717 [DEBUG] [Thread-119048] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:28:32.717 [DEBUG] [Thread-119048] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:28:32.744 [INFO] [Thread-119048] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:28:32.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:28:33.336 [DEBUG] [Thread-119048] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:28:33.336 [DEBUG] [Thread-119048] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:28:33.337 [DEBUG] [Thread-119048] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:28:33.376 [DEBUG] [Thread-119048] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:28:33.377 [DEBUG] [Thread-119048] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:28:33.379 [DEBUG] [Thread-119048] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:28:33.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:28:33.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:28:33.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:28:33.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:28:33.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:28:33.396 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:28:33.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:28:33.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:28:33.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:28:33.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.602533 -999.00  +25.80  29.46      7  -12.00 1 1 1 1 1   887    0 38.29 32.24 ----- 27.0 29.5 318.2 39.1 29.0 -34.1 28.8 -33.3 29.9 -32.7 30.4 -32.9
2025-11-03T16:28:33.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:28:33.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:28:33.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.602533
2025-11-03T16:28:33.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:28:33.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:28:33.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:28:33.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:28:33.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:28:33.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:28:24', tmtdew=50.28, humidity=2.82, cloud=0.0, wind=28.59, temperature=26.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:27:38.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:28:33.400 [DEBUG] [Thread-119048] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:28:33.469 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:28:33.490 [DEBUG] [Thread-119051] [transport.py] [_log()] starting thread (client mode): 0x11781030
2025-11-03T16:28:33.490 [DEBUG] [Thread-119051] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:28:33.504 [DEBUG] [Thread-119051] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:28:33.505 [INFO] [Thread-119051] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:28:33.512 [DEBUG] [Thread-119051] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:28:33.512 [DEBUG] [Thread-119051] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:28:33.512 [DEBUG] [Thread-119051] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:28:33.512 [DEBUG] [Thread-119051] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:28:33.512 [DEBUG] [Thread-119051] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:28:33.513 [DEBUG] [Thread-119051] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:28:33.513 [DEBUG] [Thread-119051] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:28:33.513 [DEBUG] [Thread-119051] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:28:33.513 [DEBUG] [Thread-119051] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:28:33.513 [DEBUG] [Thread-119051] [transport.py] [_log()] client lang: <none>
2025-11-03T16:28:33.513 [DEBUG] [Thread-119051] [transport.py] [_log()] server lang: <none>
2025-11-03T16:28:33.513 [DEBUG] [Thread-119051] [transport.py] [_log()] kex follows: False
2025-11-03T16:28:33.513 [DEBUG] [Thread-119051] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:28:33.513 [DEBUG] [Thread-119051] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:28:33.513 [DEBUG] [Thread-119051] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:28:33.513 [DEBUG] [Thread-119051] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:28:33.513 [DEBUG] [Thread-119051] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:28:33.513 [DEBUG] [Thread-119051] [transport.py] [_log()] Compression: none
2025-11-03T16:28:33.513 [DEBUG] [Thread-119051] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:28:33.570 [DEBUG] [Thread-119051] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:28:33.571 [DEBUG] [Thread-119051] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:28:33.571 [DEBUG] [Thread-119051] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:28:33.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:28:33.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:28:33.631 [DEBUG] [Thread-119051] [transport.py] [_log()] userauth is OK
2025-11-03T16:28:33.632 [DEBUG] [Thread-119051] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:28:33.632 [DEBUG] [Thread-119051] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:28:33.632 [DEBUG] [Thread-119051] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:28:33.632 [DEBUG] [Thread-119051] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:28:33.650 [INFO] [Thread-119051] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:28:33.651 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:28:33.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:28:34.475 [DEBUG] [Thread-119051] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:28:34.476 [DEBUG] [Thread-119051] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:28:34.524 [DEBUG] [Thread-119051] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:28:34.524 [DEBUG] [Thread-119051] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:28:34.534 [DEBUG] [Thread-119051] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:28:34.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:28:34.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:28:34.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:28:34.562 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:28:34.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:28:34.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:28:34.570 [DEBUG] [Thread-119051] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:28:39.581 [DEBUG] [Thread-119053 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:28:54.636 [DEBUG] [Thread-119054 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:29:04.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:29:04.594 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:29:04.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:29:05.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 28, 56), 49.81, 2.84, 0.0, 22.11, 26.0, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:29:05.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:28:56
2025-11-03T16:29:05.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:29:05.541 [DEBUG] [Thread-119055] [transport.py] [_log()] starting thread (client mode): 0x141dacb0
2025-11-03T16:29:05.541 [DEBUG] [Thread-119055] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:29:05.562 [DEBUG] [Thread-119055] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:29:05.562 [INFO] [Thread-119055] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:29:05.565 [DEBUG] [Thread-119055] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:29:05.566 [DEBUG] [Thread-119055] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:29:05.566 [DEBUG] [Thread-119055] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:29:05.566 [DEBUG] [Thread-119055] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:29:05.566 [DEBUG] [Thread-119055] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:29:05.566 [DEBUG] [Thread-119055] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:29:05.566 [DEBUG] [Thread-119055] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:29:05.566 [DEBUG] [Thread-119055] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:29:05.566 [DEBUG] [Thread-119055] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:29:05.566 [DEBUG] [Thread-119055] [transport.py] [_log()] client lang: <none>
2025-11-03T16:29:05.567 [DEBUG] [Thread-119055] [transport.py] [_log()] server lang: <none>
2025-11-03T16:29:05.567 [DEBUG] [Thread-119055] [transport.py] [_log()] kex follows: False
2025-11-03T16:29:05.567 [DEBUG] [Thread-119055] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:29:05.567 [DEBUG] [Thread-119055] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:29:05.569 [DEBUG] [Thread-119055] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:29:05.569 [DEBUG] [Thread-119055] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:29:05.569 [DEBUG] [Thread-119055] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:29:05.570 [DEBUG] [Thread-119055] [transport.py] [_log()] Compression: none
2025-11-03T16:29:05.570 [DEBUG] [Thread-119055] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:29:05.591 [DEBUG] [Thread-119055] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:29:05.591 [DEBUG] [Thread-119055] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:29:05.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:29:05.593 [DEBUG] [Thread-119055] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:29:05.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:29:05.595 [DEBUG] [Thread-119055] [transport.py] [_log()] userauth is OK
2025-11-03T16:29:05.595 [DEBUG] [Thread-119055] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:29:05.596 [DEBUG] [Thread-119055] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:29:05.596 [DEBUG] [Thread-119055] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:29:05.596 [DEBUG] [Thread-119055] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:29:05.633 [INFO] [Thread-119055] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:29:05.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:29:06.309 [DEBUG] [Thread-119055] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:29:06.309 [DEBUG] [Thread-119055] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:29:06.310 [DEBUG] [Thread-119055] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:29:06.351 [DEBUG] [Thread-119055] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:29:06.351 [DEBUG] [Thread-119055] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:29:06.353 [DEBUG] [Thread-119055] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:29:06.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:29:06.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:29:06.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:29:06.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:29:06.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:29:06.371 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:29:06.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:29:06.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:29:06.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:29:06.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.602880 -999.00  +25.70  28.37      7  -12.10 1 1 1 1 1   887    0 37.79 34.51 ----- 23.3 28.4 319.2 33.1 29.0 -34.1 28.8 -32.6 29.9 -34.0 30.4 -32.7
2025-11-03T16:29:06.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:29:06.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:29:06.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.602880
2025-11-03T16:29:06.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:29:06.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:29:06.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:29:06.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:29:06.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:29:06.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:28:56', tmtdew=49.81, humidity=2.84, cloud=0.0, wind=22.11, temperature=26.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:28:08.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:29:06.372 [DEBUG] [Thread-119055] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:29:06.444 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:29:06.463 [DEBUG] [Thread-119058] [transport.py] [_log()] starting thread (client mode): 0xed8b700
2025-11-03T16:29:06.464 [DEBUG] [Thread-119058] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:29:06.478 [DEBUG] [Thread-119058] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:29:06.478 [INFO] [Thread-119058] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:29:06.485 [DEBUG] [Thread-119058] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:29:06.485 [DEBUG] [Thread-119058] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:29:06.485 [DEBUG] [Thread-119058] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:29:06.485 [DEBUG] [Thread-119058] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:29:06.485 [DEBUG] [Thread-119058] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:29:06.485 [DEBUG] [Thread-119058] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:29:06.485 [DEBUG] [Thread-119058] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:29:06.486 [DEBUG] [Thread-119058] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:29:06.486 [DEBUG] [Thread-119058] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:29:06.486 [DEBUG] [Thread-119058] [transport.py] [_log()] client lang: <none>
2025-11-03T16:29:06.486 [DEBUG] [Thread-119058] [transport.py] [_log()] server lang: <none>
2025-11-03T16:29:06.486 [DEBUG] [Thread-119058] [transport.py] [_log()] kex follows: False
2025-11-03T16:29:06.486 [DEBUG] [Thread-119058] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:29:06.486 [DEBUG] [Thread-119058] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:29:06.486 [DEBUG] [Thread-119058] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:29:06.486 [DEBUG] [Thread-119058] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:29:06.486 [DEBUG] [Thread-119058] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:29:06.486 [DEBUG] [Thread-119058] [transport.py] [_log()] Compression: none
2025-11-03T16:29:06.486 [DEBUG] [Thread-119058] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:29:06.546 [DEBUG] [Thread-119058] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:29:06.546 [DEBUG] [Thread-119058] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:29:06.546 [DEBUG] [Thread-119058] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:29:06.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:29:06.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:29:06.607 [DEBUG] [Thread-119058] [transport.py] [_log()] userauth is OK
2025-11-03T16:29:06.607 [DEBUG] [Thread-119058] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:29:06.607 [DEBUG] [Thread-119058] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:29:06.607 [DEBUG] [Thread-119058] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:29:06.607 [DEBUG] [Thread-119058] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:29:06.621 [INFO] [Thread-119058] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:29:06.621 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:29:06.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:29:07.439 [DEBUG] [Thread-119058] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:29:07.440 [DEBUG] [Thread-119058] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:29:07.488 [DEBUG] [Thread-119058] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:29:07.488 [DEBUG] [Thread-119058] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:29:07.498 [DEBUG] [Thread-119058] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:29:07.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:29:07.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:29:07.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:29:07.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:29:07.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:29:07.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:29:07.535 [DEBUG] [Thread-119058] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:29:09.680 [DEBUG] [Thread-119060 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:29:14.842 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:29:14.843 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:29:23.636 [DEBUG] [Thread-119061 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:29:24.738 [DEBUG] [Thread-119062 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:29:37.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:29:37.557 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:29:37.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:29:38.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 29, 28), 49.76, 2.84, 0.0, 21.53, 25.87, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:29:38.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:29:28
2025-11-03T16:29:38.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:29:38.528 [DEBUG] [Thread-119063] [transport.py] [_log()] starting thread (client mode): 0xed89f00
2025-11-03T16:29:38.528 [DEBUG] [Thread-119063] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:29:38.548 [DEBUG] [Thread-119063] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:29:38.548 [INFO] [Thread-119063] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:29:38.552 [DEBUG] [Thread-119063] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:29:38.552 [DEBUG] [Thread-119063] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:29:38.552 [DEBUG] [Thread-119063] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:29:38.552 [DEBUG] [Thread-119063] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:29:38.552 [DEBUG] [Thread-119063] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:29:38.552 [DEBUG] [Thread-119063] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:29:38.553 [DEBUG] [Thread-119063] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:29:38.553 [DEBUG] [Thread-119063] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:29:38.553 [DEBUG] [Thread-119063] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:29:38.553 [DEBUG] [Thread-119063] [transport.py] [_log()] client lang: <none>
2025-11-03T16:29:38.553 [DEBUG] [Thread-119063] [transport.py] [_log()] server lang: <none>
2025-11-03T16:29:38.553 [DEBUG] [Thread-119063] [transport.py] [_log()] kex follows: False
2025-11-03T16:29:38.553 [DEBUG] [Thread-119063] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:29:38.553 [DEBUG] [Thread-119063] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:29:38.553 [DEBUG] [Thread-119063] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:29:38.553 [DEBUG] [Thread-119063] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:29:38.553 [DEBUG] [Thread-119063] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:29:38.553 [DEBUG] [Thread-119063] [transport.py] [_log()] Compression: none
2025-11-03T16:29:38.553 [DEBUG] [Thread-119063] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:29:38.571 [DEBUG] [Thread-119063] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:29:38.571 [DEBUG] [Thread-119063] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:29:38.572 [DEBUG] [Thread-119063] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:29:38.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:29:38.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:29:38.572 [DEBUG] [Thread-119063] [transport.py] [_log()] userauth is OK
2025-11-03T16:29:38.572 [DEBUG] [Thread-119063] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:29:38.572 [DEBUG] [Thread-119063] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:29:38.572 [DEBUG] [Thread-119063] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:29:38.572 [DEBUG] [Thread-119063] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:29:38.587 [INFO] [Thread-119063] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:29:38.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:29:39.254 [DEBUG] [Thread-119063] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:29:39.254 [DEBUG] [Thread-119063] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:29:39.255 [DEBUG] [Thread-119063] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:29:39.295 [DEBUG] [Thread-119063] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:29:39.295 [DEBUG] [Thread-119063] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:29:39.298 [DEBUG] [Thread-119063] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:29:39.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:29:39.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:29:39.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:29:39.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:29:39.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:29:39.322 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:29:39.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:29:39.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:29:39.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:29:39.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.603227 -999.00  +25.50  16.90      7  -12.10 1 1 1 1 1   887    0 38.91 38.00 ----- 19.1 16.9 328.6 33.1 29.0 -34.1 28.9 -33.4 30.0 -31.9 30.4 -32.5
2025-11-03T16:29:39.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:29:39.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:29:39.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.603227
2025-11-03T16:29:39.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:29:39.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:29:39.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:29:39.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:29:39.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:29:39.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:29:28', tmtdew=49.76, humidity=2.84, cloud=0.0, wind=21.53, temperature=25.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:28:38.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:29:39.326 [DEBUG] [Thread-119063] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:29:39.410 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:29:39.432 [DEBUG] [Thread-119066] [transport.py] [_log()] starting thread (client mode): 0xed2ec50
2025-11-03T16:29:39.432 [DEBUG] [Thread-119066] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:29:39.448 [DEBUG] [Thread-119066] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:29:39.448 [INFO] [Thread-119066] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:29:39.455 [DEBUG] [Thread-119066] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:29:39.455 [DEBUG] [Thread-119066] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:29:39.456 [DEBUG] [Thread-119066] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:29:39.456 [DEBUG] [Thread-119066] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:29:39.456 [DEBUG] [Thread-119066] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:29:39.456 [DEBUG] [Thread-119066] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:29:39.456 [DEBUG] [Thread-119066] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:29:39.456 [DEBUG] [Thread-119066] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:29:39.456 [DEBUG] [Thread-119066] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:29:39.456 [DEBUG] [Thread-119066] [transport.py] [_log()] client lang: <none>
2025-11-03T16:29:39.456 [DEBUG] [Thread-119066] [transport.py] [_log()] server lang: <none>
2025-11-03T16:29:39.456 [DEBUG] [Thread-119066] [transport.py] [_log()] kex follows: False
2025-11-03T16:29:39.456 [DEBUG] [Thread-119066] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:29:39.456 [DEBUG] [Thread-119066] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:29:39.456 [DEBUG] [Thread-119066] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:29:39.456 [DEBUG] [Thread-119066] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:29:39.456 [DEBUG] [Thread-119066] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:29:39.456 [DEBUG] [Thread-119066] [transport.py] [_log()] Compression: none
2025-11-03T16:29:39.456 [DEBUG] [Thread-119066] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:29:39.514 [DEBUG] [Thread-119066] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:29:39.514 [DEBUG] [Thread-119066] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:29:39.514 [DEBUG] [Thread-119066] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:29:39.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:29:39.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:29:39.571 [DEBUG] [Thread-119066] [transport.py] [_log()] userauth is OK
2025-11-03T16:29:39.571 [DEBUG] [Thread-119066] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:29:39.571 [DEBUG] [Thread-119066] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:29:39.571 [DEBUG] [Thread-119066] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:29:39.571 [DEBUG] [Thread-119066] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:29:39.588 [INFO] [Thread-119066] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:29:39.588 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:29:39.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:29:39.779 [DEBUG] [Thread-119068 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:29:40.444 [DEBUG] [Thread-119066] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:29:40.445 [DEBUG] [Thread-119066] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:29:40.493 [DEBUG] [Thread-119066] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:29:40.494 [DEBUG] [Thread-119066] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:29:40.506 [DEBUG] [Thread-119066] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:29:40.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:29:40.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:29:40.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:29:40.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:29:40.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:29:40.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:29:40.552 [DEBUG] [Thread-119066] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:29:54.838 [DEBUG] [Thread-119069 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:30:09.883 [DEBUG] [Thread-119070 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:30:10.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:30:10.575 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:30:10.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:30:11.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 30, 1), 49.36, 2.94, 0.0, 21.16, 25.89, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:30:11.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:30:01
2025-11-03T16:30:11.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:30:11.659 [DEBUG] [Thread-119071] [transport.py] [_log()] starting thread (client mode): 0xed8a4d0
2025-11-03T16:30:11.660 [DEBUG] [Thread-119071] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:30:11.675 [DEBUG] [Thread-119071] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:30:11.675 [INFO] [Thread-119071] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:30:11.678 [DEBUG] [Thread-119071] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:30:11.678 [DEBUG] [Thread-119071] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:30:11.678 [DEBUG] [Thread-119071] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:30:11.678 [DEBUG] [Thread-119071] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:30:11.678 [DEBUG] [Thread-119071] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:30:11.678 [DEBUG] [Thread-119071] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:30:11.678 [DEBUG] [Thread-119071] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:30:11.678 [DEBUG] [Thread-119071] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:30:11.678 [DEBUG] [Thread-119071] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:30:11.678 [DEBUG] [Thread-119071] [transport.py] [_log()] client lang: <none>
2025-11-03T16:30:11.678 [DEBUG] [Thread-119071] [transport.py] [_log()] server lang: <none>
2025-11-03T16:30:11.678 [DEBUG] [Thread-119071] [transport.py] [_log()] kex follows: False
2025-11-03T16:30:11.678 [DEBUG] [Thread-119071] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:30:11.678 [DEBUG] [Thread-119071] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:30:11.678 [DEBUG] [Thread-119071] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:30:11.678 [DEBUG] [Thread-119071] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:30:11.678 [DEBUG] [Thread-119071] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:30:11.678 [DEBUG] [Thread-119071] [transport.py] [_log()] Compression: none
2025-11-03T16:30:11.678 [DEBUG] [Thread-119071] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:30:11.693 [DEBUG] [Thread-119071] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:30:11.693 [DEBUG] [Thread-119071] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:30:11.693 [DEBUG] [Thread-119071] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:30:11.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:30:11.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:30:11.694 [DEBUG] [Thread-119071] [transport.py] [_log()] userauth is OK
2025-11-03T16:30:11.694 [DEBUG] [Thread-119071] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:30:11.694 [DEBUG] [Thread-119071] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:30:11.694 [DEBUG] [Thread-119071] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:30:11.694 [DEBUG] [Thread-119071] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:30:11.703 [INFO] [Thread-119071] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:30:11.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:30:13.360 [DEBUG] [Thread-119071] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:30:13.360 [DEBUG] [Thread-119071] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:30:13.360 [DEBUG] [Thread-119071] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:30:13.401 [DEBUG] [Thread-119071] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:30:13.401 [DEBUG] [Thread-119071] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:30:13.404 [DEBUG] [Thread-119071] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:30:13.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:30:13.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:30:13.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:30:13.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:30:13.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:30:13.422 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:30:13.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:30:13.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:30:13.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:30:13.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.603922 -999.00  +26.00  18.93      7  -11.90 1 1 1 1 1   887    0 38.23 48.11 ----- 14.6 18.9 319.0 22.1 29.0 -33.9 28.8 -33.5 30.1 -32.0 30.5 -32.4
2025-11-03T16:30:13.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:30:13.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:30:13.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.603922
2025-11-03T16:30:13.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:30:13.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:30:13.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:30:13.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:30:13.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:30:13.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:30:01', tmtdew=49.36, humidity=2.94, cloud=0.0, wind=21.16, temperature=25.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:29:38.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:30:13.423 [DEBUG] [Thread-119071] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:30:13.497 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:30:13.519 [DEBUG] [Thread-119074] [transport.py] [_log()] starting thread (client mode): 0xeda1cf0
2025-11-03T16:30:13.519 [DEBUG] [Thread-119074] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:30:13.533 [DEBUG] [Thread-119074] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:30:13.533 [INFO] [Thread-119074] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:30:13.540 [DEBUG] [Thread-119074] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:30:13.540 [DEBUG] [Thread-119074] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:30:13.540 [DEBUG] [Thread-119074] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:30:13.540 [DEBUG] [Thread-119074] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:30:13.540 [DEBUG] [Thread-119074] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:30:13.540 [DEBUG] [Thread-119074] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:30:13.540 [DEBUG] [Thread-119074] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:30:13.540 [DEBUG] [Thread-119074] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:30:13.540 [DEBUG] [Thread-119074] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:30:13.540 [DEBUG] [Thread-119074] [transport.py] [_log()] client lang: <none>
2025-11-03T16:30:13.540 [DEBUG] [Thread-119074] [transport.py] [_log()] server lang: <none>
2025-11-03T16:30:13.540 [DEBUG] [Thread-119074] [transport.py] [_log()] kex follows: False
2025-11-03T16:30:13.540 [DEBUG] [Thread-119074] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:30:13.540 [DEBUG] [Thread-119074] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:30:13.540 [DEBUG] [Thread-119074] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:30:13.540 [DEBUG] [Thread-119074] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:30:13.540 [DEBUG] [Thread-119074] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:30:13.540 [DEBUG] [Thread-119074] [transport.py] [_log()] Compression: none
2025-11-03T16:30:13.540 [DEBUG] [Thread-119074] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:30:13.601 [DEBUG] [Thread-119074] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:30:13.601 [DEBUG] [Thread-119074] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:30:13.601 [DEBUG] [Thread-119074] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:30:13.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:30:13.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:30:13.659 [DEBUG] [Thread-119074] [transport.py] [_log()] userauth is OK
2025-11-03T16:30:13.659 [DEBUG] [Thread-119074] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:30:13.659 [DEBUG] [Thread-119074] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:30:13.659 [DEBUG] [Thread-119074] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:30:13.659 [DEBUG] [Thread-119074] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:30:13.672 [INFO] [Thread-119074] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:30:13.673 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:30:13.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:30:14.505 [DEBUG] [Thread-119074] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:30:14.505 [DEBUG] [Thread-119074] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:30:14.553 [DEBUG] [Thread-119074] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:30:14.553 [DEBUG] [Thread-119074] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:30:14.561 [DEBUG] [Thread-119074] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:30:14.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:30:14.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:30:14.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:30:14.585 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:30:14.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:30:14.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:30:14.593 [DEBUG] [Thread-119074] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:30:14.983 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:30:14.984 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:30:23.887 [DEBUG] [Thread-119076 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:30:24.928 [DEBUG] [Thread-119077 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:30:40.005 [DEBUG] [Thread-119078 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:30:44.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:30:44.616 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:30:44.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:30:45.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 30, 33), 49.86, 2.87, 0.0, 27.46, 26.27, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:30:45.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:30:33
2025-11-03T16:30:45.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:30:45.736 [DEBUG] [Thread-119079] [transport.py] [_log()] starting thread (client mode): 0xed8b430
2025-11-03T16:30:45.736 [DEBUG] [Thread-119079] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:30:45.755 [DEBUG] [Thread-119079] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:30:45.755 [INFO] [Thread-119079] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:30:45.758 [DEBUG] [Thread-119079] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:30:45.758 [DEBUG] [Thread-119079] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:30:45.759 [DEBUG] [Thread-119079] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:30:45.759 [DEBUG] [Thread-119079] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:30:45.759 [DEBUG] [Thread-119079] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:30:45.759 [DEBUG] [Thread-119079] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:30:45.759 [DEBUG] [Thread-119079] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:30:45.759 [DEBUG] [Thread-119079] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:30:45.759 [DEBUG] [Thread-119079] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:30:45.759 [DEBUG] [Thread-119079] [transport.py] [_log()] client lang: <none>
2025-11-03T16:30:45.759 [DEBUG] [Thread-119079] [transport.py] [_log()] server lang: <none>
2025-11-03T16:30:45.759 [DEBUG] [Thread-119079] [transport.py] [_log()] kex follows: False
2025-11-03T16:30:45.759 [DEBUG] [Thread-119079] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:30:45.759 [DEBUG] [Thread-119079] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:30:45.759 [DEBUG] [Thread-119079] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:30:45.759 [DEBUG] [Thread-119079] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:30:45.759 [DEBUG] [Thread-119079] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:30:45.759 [DEBUG] [Thread-119079] [transport.py] [_log()] Compression: none
2025-11-03T16:30:45.759 [DEBUG] [Thread-119079] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:30:45.774 [DEBUG] [Thread-119079] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:30:45.775 [DEBUG] [Thread-119079] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:30:45.775 [DEBUG] [Thread-119079] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:30:45.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:30:45.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:30:45.817 [DEBUG] [Thread-119079] [transport.py] [_log()] userauth is OK
2025-11-03T16:30:45.817 [DEBUG] [Thread-119079] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:30:45.817 [DEBUG] [Thread-119079] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:30:45.817 [DEBUG] [Thread-119079] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:30:45.817 [DEBUG] [Thread-119079] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:30:45.841 [INFO] [Thread-119079] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:30:45.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:30:46.509 [DEBUG] [Thread-119079] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:30:46.509 [DEBUG] [Thread-119079] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:30:46.509 [DEBUG] [Thread-119079] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:30:46.549 [DEBUG] [Thread-119079] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:30:46.549 [DEBUG] [Thread-119079] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:30:46.552 [DEBUG] [Thread-119079] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:30:46.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:30:46.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:30:46.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:30:46.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:30:46.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:30:46.570 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:30:46.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:30:46.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:30:46.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:30:46.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.604269 -999.00  +26.20  22.49      7  -12.20 1 1 1 1 1   887    0 39.02 51.39 ----- 24.6 22.5 335.3 28.6 29.1 -33.6 28.9 -32.6 30.1 -32.0 30.6 -32.5
2025-11-03T16:30:46.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:30:46.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:30:46.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.604269
2025-11-03T16:30:46.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:30:46.579 [DEBUG] [Thread-119079] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:30:46.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:30:46.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:30:46.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:30:46.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:30:46.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:30:33', tmtdew=49.86, humidity=2.87, cloud=0.0, wind=27.46, temperature=26.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:30:08.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:30:46.653 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:30:46.678 [DEBUG] [Thread-119082] [transport.py] [_log()] starting thread (client mode): 0xed2d0c0
2025-11-03T16:30:46.678 [DEBUG] [Thread-119082] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:30:46.698 [DEBUG] [Thread-119082] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:30:46.698 [INFO] [Thread-119082] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:30:46.710 [DEBUG] [Thread-119082] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:30:46.710 [DEBUG] [Thread-119082] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:30:46.710 [DEBUG] [Thread-119082] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:30:46.710 [DEBUG] [Thread-119082] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:30:46.710 [DEBUG] [Thread-119082] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:30:46.710 [DEBUG] [Thread-119082] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:30:46.710 [DEBUG] [Thread-119082] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:30:46.710 [DEBUG] [Thread-119082] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:30:46.710 [DEBUG] [Thread-119082] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:30:46.710 [DEBUG] [Thread-119082] [transport.py] [_log()] client lang: <none>
2025-11-03T16:30:46.710 [DEBUG] [Thread-119082] [transport.py] [_log()] server lang: <none>
2025-11-03T16:30:46.710 [DEBUG] [Thread-119082] [transport.py] [_log()] kex follows: False
2025-11-03T16:30:46.710 [DEBUG] [Thread-119082] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:30:46.710 [DEBUG] [Thread-119082] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:30:46.710 [DEBUG] [Thread-119082] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:30:46.710 [DEBUG] [Thread-119082] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:30:46.710 [DEBUG] [Thread-119082] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:30:46.710 [DEBUG] [Thread-119082] [transport.py] [_log()] Compression: none
2025-11-03T16:30:46.710 [DEBUG] [Thread-119082] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:30:46.771 [DEBUG] [Thread-119082] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:30:46.771 [DEBUG] [Thread-119082] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:30:46.771 [DEBUG] [Thread-119082] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:30:46.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:30:46.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:30:46.827 [DEBUG] [Thread-119082] [transport.py] [_log()] userauth is OK
2025-11-03T16:30:46.828 [DEBUG] [Thread-119082] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:30:46.828 [DEBUG] [Thread-119082] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:30:46.828 [DEBUG] [Thread-119082] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:30:46.828 [DEBUG] [Thread-119082] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:30:46.842 [INFO] [Thread-119082] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:30:46.842 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:30:46.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:30:47.715 [DEBUG] [Thread-119082] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:30:47.716 [DEBUG] [Thread-119082] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:30:47.763 [DEBUG] [Thread-119082] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:30:47.763 [DEBUG] [Thread-119082] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:30:47.772 [DEBUG] [Thread-119082] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:30:47.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:30:47.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:30:47.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:30:47.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:30:47.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:30:47.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:30:47.810 [DEBUG] [Thread-119082] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:30:55.040 [DEBUG] [Thread-119084 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:31:10.098 [DEBUG] [Thread-119085 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:31:15.124 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:31:15.125 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:31:17.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:31:17.806 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:31:17.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:31:18.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 31, 5), 49.82, 2.87, 0.0, 27.91, 26.17, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:31:18.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:31:05
2025-11-03T16:31:18.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:31:18.856 [DEBUG] [Thread-119086] [transport.py] [_log()] starting thread (client mode): 0xed2e680
2025-11-03T16:31:18.857 [DEBUG] [Thread-119086] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:31:18.876 [DEBUG] [Thread-119086] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:31:18.877 [INFO] [Thread-119086] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:31:18.880 [DEBUG] [Thread-119086] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:31:18.880 [DEBUG] [Thread-119086] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:31:18.880 [DEBUG] [Thread-119086] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:31:18.880 [DEBUG] [Thread-119086] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:31:18.881 [DEBUG] [Thread-119086] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:31:18.881 [DEBUG] [Thread-119086] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:31:18.881 [DEBUG] [Thread-119086] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:31:18.881 [DEBUG] [Thread-119086] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:31:18.881 [DEBUG] [Thread-119086] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:31:18.881 [DEBUG] [Thread-119086] [transport.py] [_log()] client lang: <none>
2025-11-03T16:31:18.881 [DEBUG] [Thread-119086] [transport.py] [_log()] server lang: <none>
2025-11-03T16:31:18.882 [DEBUG] [Thread-119086] [transport.py] [_log()] kex follows: False
2025-11-03T16:31:18.882 [DEBUG] [Thread-119086] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:31:18.882 [DEBUG] [Thread-119086] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:31:18.882 [DEBUG] [Thread-119086] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:31:18.882 [DEBUG] [Thread-119086] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:31:18.882 [DEBUG] [Thread-119086] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:31:18.883 [DEBUG] [Thread-119086] [transport.py] [_log()] Compression: none
2025-11-03T16:31:18.883 [DEBUG] [Thread-119086] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:31:18.902 [DEBUG] [Thread-119086] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:31:18.903 [DEBUG] [Thread-119086] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:31:18.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:31:18.905 [DEBUG] [Thread-119086] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:31:18.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:31:18.907 [DEBUG] [Thread-119086] [transport.py] [_log()] userauth is OK
2025-11-03T16:31:18.908 [DEBUG] [Thread-119086] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:31:18.908 [DEBUG] [Thread-119086] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:31:18.908 [DEBUG] [Thread-119086] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:31:18.908 [DEBUG] [Thread-119086] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:31:18.935 [INFO] [Thread-119086] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:31:18.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:31:19.604 [DEBUG] [Thread-119086] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:31:19.604 [DEBUG] [Thread-119086] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:31:19.604 [DEBUG] [Thread-119086] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:31:19.646 [DEBUG] [Thread-119086] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:31:19.646 [DEBUG] [Thread-119086] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:31:19.648 [DEBUG] [Thread-119086] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:31:19.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:31:19.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:31:19.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:31:19.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:31:19.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:31:19.667 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:31:19.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:31:19.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:31:19.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:31:19.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.604616 -999.00  +26.20  23.15      7  -12.00 1 1 1 1 1   887    0 38.67 55.56 ----- 25.1 23.1 318.9 28.8 29.1 -33.7 28.9 -33.1 30.2 -32.0 30.7 -32.6
2025-11-03T16:31:19.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:31:19.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:31:19.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.604616
2025-11-03T16:31:19.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:31:19.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:31:19.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:31:19.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:31:19.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:31:19.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:31:05', tmtdew=49.82, humidity=2.87, cloud=0.0, wind=27.91, temperature=26.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:30:38.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:31:19.668 [DEBUG] [Thread-119086] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:31:19.739 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:31:19.759 [DEBUG] [Thread-119089] [transport.py] [_log()] starting thread (client mode): 0xed2d360
2025-11-03T16:31:19.759 [DEBUG] [Thread-119089] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:31:19.774 [DEBUG] [Thread-119089] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:31:19.774 [INFO] [Thread-119089] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:31:19.782 [DEBUG] [Thread-119089] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:31:19.782 [DEBUG] [Thread-119089] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:31:19.782 [DEBUG] [Thread-119089] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:31:19.782 [DEBUG] [Thread-119089] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:31:19.782 [DEBUG] [Thread-119089] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:31:19.782 [DEBUG] [Thread-119089] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:31:19.782 [DEBUG] [Thread-119089] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:31:19.782 [DEBUG] [Thread-119089] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:31:19.782 [DEBUG] [Thread-119089] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:31:19.782 [DEBUG] [Thread-119089] [transport.py] [_log()] client lang: <none>
2025-11-03T16:31:19.782 [DEBUG] [Thread-119089] [transport.py] [_log()] server lang: <none>
2025-11-03T16:31:19.782 [DEBUG] [Thread-119089] [transport.py] [_log()] kex follows: False
2025-11-03T16:31:19.782 [DEBUG] [Thread-119089] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:31:19.782 [DEBUG] [Thread-119089] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:31:19.782 [DEBUG] [Thread-119089] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:31:19.783 [DEBUG] [Thread-119089] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:31:19.783 [DEBUG] [Thread-119089] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:31:19.783 [DEBUG] [Thread-119089] [transport.py] [_log()] Compression: none
2025-11-03T16:31:19.783 [DEBUG] [Thread-119089] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:31:19.840 [DEBUG] [Thread-119089] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:31:19.841 [DEBUG] [Thread-119089] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:31:19.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:31:19.842 [DEBUG] [Thread-119089] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:31:19.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:31:19.896 [DEBUG] [Thread-119089] [transport.py] [_log()] userauth is OK
2025-11-03T16:31:19.897 [DEBUG] [Thread-119089] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:31:19.897 [DEBUG] [Thread-119089] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:31:19.897 [DEBUG] [Thread-119089] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:31:19.897 [DEBUG] [Thread-119089] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:31:19.917 [INFO] [Thread-119089] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:31:19.917 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:31:19.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:31:20.765 [DEBUG] [Thread-119089] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:31:20.765 [DEBUG] [Thread-119089] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:31:20.812 [DEBUG] [Thread-119089] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:31:20.812 [DEBUG] [Thread-119089] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:31:20.821 [DEBUG] [Thread-119089] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:31:20.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:31:20.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:31:20.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:31:20.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:31:20.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:31:20.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:31:20.858 [DEBUG] [Thread-119089] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:31:24.104 [DEBUG] [Thread-119091 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:31:25.141 [DEBUG] [Thread-119092 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:31:40.215 [DEBUG] [Thread-119093 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:31:50.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:31:50.878 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:31:50.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:31:51.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 31, 38), 50.19, 2.36, 0.0, 27.47, 26.15, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:31:51.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:31:38
2025-11-03T16:31:51.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:31:51.937 [DEBUG] [Thread-119094] [transport.py] [_log()] starting thread (client mode): 0x11783b20
2025-11-03T16:31:51.937 [DEBUG] [Thread-119094] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:31:51.949 [DEBUG] [Thread-119094] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:31:51.949 [INFO] [Thread-119094] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:31:51.950 [DEBUG] [Thread-119094] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:31:51.951 [DEBUG] [Thread-119094] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:31:51.951 [DEBUG] [Thread-119094] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:31:51.951 [DEBUG] [Thread-119094] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:31:51.951 [DEBUG] [Thread-119094] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:31:51.951 [DEBUG] [Thread-119094] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:31:51.951 [DEBUG] [Thread-119094] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:31:51.951 [DEBUG] [Thread-119094] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:31:51.951 [DEBUG] [Thread-119094] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:31:51.951 [DEBUG] [Thread-119094] [transport.py] [_log()] client lang: <none>
2025-11-03T16:31:51.951 [DEBUG] [Thread-119094] [transport.py] [_log()] server lang: <none>
2025-11-03T16:31:51.951 [DEBUG] [Thread-119094] [transport.py] [_log()] kex follows: False
2025-11-03T16:31:51.951 [DEBUG] [Thread-119094] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:31:51.951 [DEBUG] [Thread-119094] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:31:51.951 [DEBUG] [Thread-119094] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:31:51.951 [DEBUG] [Thread-119094] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:31:51.951 [DEBUG] [Thread-119094] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:31:51.951 [DEBUG] [Thread-119094] [transport.py] [_log()] Compression: none
2025-11-03T16:31:51.951 [DEBUG] [Thread-119094] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:31:51.961 [DEBUG] [Thread-119094] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:31:51.962 [DEBUG] [Thread-119094] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:31:51.962 [DEBUG] [Thread-119094] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:31:51.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:31:51.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:31:51.964 [DEBUG] [Thread-119094] [transport.py] [_log()] userauth is OK
2025-11-03T16:31:51.964 [DEBUG] [Thread-119094] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:31:51.965 [DEBUG] [Thread-119094] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:31:51.965 [DEBUG] [Thread-119094] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:31:51.965 [DEBUG] [Thread-119094] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:31:51.983 [INFO] [Thread-119094] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:31:51.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:31:52.586 [DEBUG] [Thread-119094] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:31:52.587 [DEBUG] [Thread-119094] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:31:52.587 [DEBUG] [Thread-119094] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:31:52.628 [DEBUG] [Thread-119094] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:31:52.628 [DEBUG] [Thread-119094] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:31:52.631 [DEBUG] [Thread-119094] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:31:52.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:31:52.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:31:52.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:31:52.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:31:52.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:31:52.657 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:31:52.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:31:52.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:31:52.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:31:52.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.604964 -999.00  +26.40  23.85      7  -11.70 1 1 1 1 1   887    0 39.53 69.41 ----- 25.1 23.9 311.6 37.8 29.2 -34.0 29.0 -33.0 30.2 -32.8 30.7 -32.6
2025-11-03T16:31:52.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:31:52.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:31:52.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.604964
2025-11-03T16:31:52.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:31:52.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:31:52.660 [DEBUG] [Thread-119094] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:31:52.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:31:52.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:31:52.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:31:52.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:31:38', tmtdew=50.19, humidity=2.36, cloud=0.0, wind=27.47, temperature=26.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:31:08.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:31:52.753 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:31:52.772 [DEBUG] [Thread-119097] [transport.py] [_log()] starting thread (client mode): 0xeda32e0
2025-11-03T16:31:52.772 [DEBUG] [Thread-119097] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:31:52.787 [DEBUG] [Thread-119097] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:31:52.788 [INFO] [Thread-119097] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:31:52.795 [DEBUG] [Thread-119097] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:31:52.796 [DEBUG] [Thread-119097] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:31:52.796 [DEBUG] [Thread-119097] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:31:52.796 [DEBUG] [Thread-119097] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:31:52.796 [DEBUG] [Thread-119097] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:31:52.796 [DEBUG] [Thread-119097] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:31:52.796 [DEBUG] [Thread-119097] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:31:52.796 [DEBUG] [Thread-119097] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:31:52.797 [DEBUG] [Thread-119097] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:31:52.797 [DEBUG] [Thread-119097] [transport.py] [_log()] client lang: <none>
2025-11-03T16:31:52.797 [DEBUG] [Thread-119097] [transport.py] [_log()] server lang: <none>
2025-11-03T16:31:52.797 [DEBUG] [Thread-119097] [transport.py] [_log()] kex follows: False
2025-11-03T16:31:52.797 [DEBUG] [Thread-119097] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:31:52.797 [DEBUG] [Thread-119097] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:31:52.797 [DEBUG] [Thread-119097] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:31:52.797 [DEBUG] [Thread-119097] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:31:52.797 [DEBUG] [Thread-119097] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:31:52.798 [DEBUG] [Thread-119097] [transport.py] [_log()] Compression: none
2025-11-03T16:31:52.798 [DEBUG] [Thread-119097] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:31:52.856 [DEBUG] [Thread-119097] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:31:52.856 [DEBUG] [Thread-119097] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:31:52.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:31:52.858 [DEBUG] [Thread-119097] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:31:52.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:31:52.912 [DEBUG] [Thread-119097] [transport.py] [_log()] userauth is OK
2025-11-03T16:31:52.912 [DEBUG] [Thread-119097] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:31:52.912 [DEBUG] [Thread-119097] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:31:52.912 [DEBUG] [Thread-119097] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:31:52.913 [DEBUG] [Thread-119097] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:31:52.931 [INFO] [Thread-119097] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:31:52.932 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:31:52.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:31:53.783 [DEBUG] [Thread-119097] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:31:53.783 [DEBUG] [Thread-119097] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:31:53.831 [DEBUG] [Thread-119097] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:31:53.831 [DEBUG] [Thread-119097] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:31:53.840 [DEBUG] [Thread-119097] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:31:53.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:31:53.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:31:53.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:31:53.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:31:53.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:31:53.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:31:53.872 [DEBUG] [Thread-119097] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:31:55.256 [DEBUG] [Thread-119099 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:32:10.321 [DEBUG] [Thread-119100 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:32:15.274 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:32:15.275 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:32:23.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:32:23.866 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:32:23.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:32:24.134 [DEBUG] [Thread-119101 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:32:24.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 32, 10), 50.21, 2.37, 0.0, 28.44, 26.43, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:32:24.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:32:10
2025-11-03T16:32:24.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:32:24.875 [DEBUG] [Thread-119102] [transport.py] [_log()] starting thread (client mode): 0xed8a5f0
2025-11-03T16:32:24.875 [DEBUG] [Thread-119102] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:32:24.896 [DEBUG] [Thread-119102] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:32:24.896 [INFO] [Thread-119102] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:32:24.899 [DEBUG] [Thread-119102] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:32:24.899 [DEBUG] [Thread-119102] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:32:24.900 [DEBUG] [Thread-119102] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:32:24.900 [DEBUG] [Thread-119102] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:32:24.900 [DEBUG] [Thread-119102] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:32:24.900 [DEBUG] [Thread-119102] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:32:24.900 [DEBUG] [Thread-119102] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:32:24.900 [DEBUG] [Thread-119102] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:32:24.900 [DEBUG] [Thread-119102] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:32:24.900 [DEBUG] [Thread-119102] [transport.py] [_log()] client lang: <none>
2025-11-03T16:32:24.900 [DEBUG] [Thread-119102] [transport.py] [_log()] server lang: <none>
2025-11-03T16:32:24.901 [DEBUG] [Thread-119102] [transport.py] [_log()] kex follows: False
2025-11-03T16:32:24.901 [DEBUG] [Thread-119102] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:32:24.901 [DEBUG] [Thread-119102] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:32:24.901 [DEBUG] [Thread-119102] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:32:24.901 [DEBUG] [Thread-119102] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:32:24.901 [DEBUG] [Thread-119102] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:32:24.901 [DEBUG] [Thread-119102] [transport.py] [_log()] Compression: none
2025-11-03T16:32:24.901 [DEBUG] [Thread-119102] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:32:24.922 [DEBUG] [Thread-119102] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:32:24.923 [DEBUG] [Thread-119102] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:32:24.923 [DEBUG] [Thread-119102] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:32:24.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:32:24.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:32:24.925 [DEBUG] [Thread-119102] [transport.py] [_log()] userauth is OK
2025-11-03T16:32:24.926 [DEBUG] [Thread-119102] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:32:24.926 [DEBUG] [Thread-119102] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:32:24.926 [DEBUG] [Thread-119102] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:32:24.926 [DEBUG] [Thread-119102] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:32:24.962 [INFO] [Thread-119102] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:32:24.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:32:25.361 [DEBUG] [Thread-119104 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:32:25.610 [DEBUG] [Thread-119102] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:32:25.610 [DEBUG] [Thread-119102] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:32:25.611 [DEBUG] [Thread-119102] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:32:25.651 [DEBUG] [Thread-119102] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:32:25.651 [DEBUG] [Thread-119102] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:32:25.655 [DEBUG] [Thread-119102] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:32:25.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:32:25.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:32:25.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:32:25.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:32:25.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:32:25.680 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:32:25.680 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:32:25.680 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:32:25.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:32:25.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.605311 -999.00  +26.20  31.78      7  -11.90 1 1 2 1 1   887    0 39.75 72.61 ----- 33.1 31.8 309.6 36.4 29.2 -34.1 29.1 -32.6 30.2 -33.0 30.7 -32.6
2025-11-03T16:32:25.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:32:25.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:32:25.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.605311
2025-11-03T16:32:25.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:32:25.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:32:25.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:32:25.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:32:25.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:32:25.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:32:10', tmtdew=50.21, humidity=2.37, cloud=0.0, wind=28.44, temperature=26.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:31:38.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:32:25.683 [DEBUG] [Thread-119102] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:32:25.766 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:32:40.403 [DEBUG] [Thread-119106 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:32:55.467 [DEBUG] [Thread-119107 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:33:10.508 [DEBUG] [Thread-119108 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:33:15.417 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:33:15.418 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:33:24.320 [DEBUG] [Thread-119109 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:33:25.550 [DEBUG] [Thread-119110 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:33:40.607 [DEBUG] [Thread-119111 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:33:55.654 [DEBUG] [Thread-119112 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:34:10.694 [DEBUG] [Thread-119113 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:34:15.559 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:34:15.560 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:34:24.502 [DEBUG] [Thread-119114 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:34:25.743 [DEBUG] [Thread-119115 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:34:39.841 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T16:34:40.788 [DEBUG] [Thread-119116 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:34:55.821 [DEBUG] [Thread-119117 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:35:09.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:35:09.865 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:35:09.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:35:10.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 34, 52), 49.22, 2.89, 0.0, 30.33, 26.07, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:35:10.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:34:52
2025-11-03T16:35:10.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:35:10.867 [DEBUG] [Thread-119118 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:35:10.974 [DEBUG] [Thread-119119] [transport.py] [_log()] starting thread (client mode): 0x11781d50
2025-11-03T16:35:10.974 [DEBUG] [Thread-119119] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:35:10.986 [DEBUG] [Thread-119119] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:35:10.986 [INFO] [Thread-119119] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:35:10.995 [DEBUG] [Thread-119119] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:35:10.995 [DEBUG] [Thread-119119] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:35:10.995 [DEBUG] [Thread-119119] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:35:10.995 [DEBUG] [Thread-119119] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:35:10.995 [DEBUG] [Thread-119119] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:35:10.996 [DEBUG] [Thread-119119] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:35:10.996 [DEBUG] [Thread-119119] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:35:10.996 [DEBUG] [Thread-119119] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:35:10.996 [DEBUG] [Thread-119119] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:35:10.996 [DEBUG] [Thread-119119] [transport.py] [_log()] client lang: <none>
2025-11-03T16:35:10.996 [DEBUG] [Thread-119119] [transport.py] [_log()] server lang: <none>
2025-11-03T16:35:10.997 [DEBUG] [Thread-119119] [transport.py] [_log()] kex follows: False
2025-11-03T16:35:10.997 [DEBUG] [Thread-119119] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:35:10.998 [DEBUG] [Thread-119119] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:35:10.999 [DEBUG] [Thread-119119] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:35:10.999 [DEBUG] [Thread-119119] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:35:10.999 [DEBUG] [Thread-119119] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:35:10.999 [DEBUG] [Thread-119119] [transport.py] [_log()] Compression: none
2025-11-03T16:35:10.999 [DEBUG] [Thread-119119] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:35:11.036 [DEBUG] [Thread-119119] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:35:11.041 [DEBUG] [Thread-119119] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:35:11.043 [DEBUG] [Thread-119119] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:35:11.044 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:35:11.046 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:35:11.048 [DEBUG] [Thread-119119] [transport.py] [_log()] userauth is OK
2025-11-03T16:35:11.049 [DEBUG] [Thread-119119] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:35:11.049 [DEBUG] [Thread-119119] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:35:11.049 [DEBUG] [Thread-119119] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:35:11.049 [DEBUG] [Thread-119119] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:35:11.070 [INFO] [Thread-119119] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:35:11.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:35:15.702 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:35:15.703 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:35:18.502 [DEBUG] [Thread-119119] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:35:18.502 [DEBUG] [Thread-119119] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:35:18.504 [DEBUG] [Thread-119119] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:35:18.534 [DEBUG] [Thread-119119] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:35:18.534 [DEBUG] [Thread-119119] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:35:18.539 [DEBUG] [Thread-119119] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:35:18.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:35:18.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:35:18.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:35:18.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:35:18.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:35:18.637 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:35:18.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:35:18.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:35:18.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:35:18.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.607394 -999.00  +25.70  32.03      7  -12.10 1 1 2 1 1   887    0 38.88 83.30 ----- 25.8 32.0 330.0 36.1 28.9 -33.5 28.8 -33.6 29.9 -34.1 30.4 -32.4
2025-11-03T16:35:18.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:35:18.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:35:18.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.607394
2025-11-03T16:35:18.644 [DEBUG] [Thread-119119] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:35:18.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:35:18.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:35:18.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:35:18.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:35:18.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:35:18.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:34:52', tmtdew=49.22, humidity=2.89, cloud=0.0, wind=30.33, temperature=26.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:34:38.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:35:18.731 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:35:18.755 [DEBUG] [Thread-119122] [transport.py] [_log()] starting thread (client mode): 0x141daf80
2025-11-03T16:35:18.756 [DEBUG] [Thread-119122] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:35:18.773 [DEBUG] [Thread-119122] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:35:18.773 [INFO] [Thread-119122] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:35:18.784 [DEBUG] [Thread-119122] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:35:18.784 [DEBUG] [Thread-119122] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:35:18.784 [DEBUG] [Thread-119122] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:35:18.784 [DEBUG] [Thread-119122] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:35:18.784 [DEBUG] [Thread-119122] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:35:18.784 [DEBUG] [Thread-119122] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:35:18.784 [DEBUG] [Thread-119122] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:35:18.784 [DEBUG] [Thread-119122] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:35:18.784 [DEBUG] [Thread-119122] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:35:18.784 [DEBUG] [Thread-119122] [transport.py] [_log()] client lang: <none>
2025-11-03T16:35:18.784 [DEBUG] [Thread-119122] [transport.py] [_log()] server lang: <none>
2025-11-03T16:35:18.784 [DEBUG] [Thread-119122] [transport.py] [_log()] kex follows: False
2025-11-03T16:35:18.784 [DEBUG] [Thread-119122] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:35:18.784 [DEBUG] [Thread-119122] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:35:18.784 [DEBUG] [Thread-119122] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:35:18.784 [DEBUG] [Thread-119122] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:35:18.785 [DEBUG] [Thread-119122] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:35:18.785 [DEBUG] [Thread-119122] [transport.py] [_log()] Compression: none
2025-11-03T16:35:18.785 [DEBUG] [Thread-119122] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:35:18.847 [DEBUG] [Thread-119122] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:35:18.847 [DEBUG] [Thread-119122] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:35:18.847 [DEBUG] [Thread-119122] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:35:18.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:35:18.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:35:18.903 [DEBUG] [Thread-119122] [transport.py] [_log()] userauth is OK
2025-11-03T16:35:18.903 [DEBUG] [Thread-119122] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:35:18.903 [DEBUG] [Thread-119122] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:35:18.903 [DEBUG] [Thread-119122] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:35:18.903 [DEBUG] [Thread-119122] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:35:18.918 [INFO] [Thread-119122] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:35:18.918 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:35:18.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:35:19.747 [DEBUG] [Thread-119122] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:35:19.747 [DEBUG] [Thread-119122] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:35:19.794 [DEBUG] [Thread-119122] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:35:19.795 [DEBUG] [Thread-119122] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:35:19.804 [DEBUG] [Thread-119122] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:35:19.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:35:19.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:35:19.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:35:19.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:35:19.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:35:19.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:35:19.842 [DEBUG] [Thread-119122] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:35:24.560 [DEBUG] [Thread-119124 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:35:25.906 [DEBUG] [Thread-119125 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:35:41.019 [DEBUG] [Thread-119126 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:35:49.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:35:49.865 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:35:49.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:35:50.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 35, 24), 48.76, 3.01, 0.0, 30.81, 26.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:35:50.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:35:24
2025-11-03T16:35:50.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:35:50.847 [DEBUG] [Thread-119127] [transport.py] [_log()] starting thread (client mode): 0x11798310
2025-11-03T16:35:50.847 [DEBUG] [Thread-119127] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:35:50.870 [DEBUG] [Thread-119127] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:35:50.871 [INFO] [Thread-119127] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:35:50.874 [DEBUG] [Thread-119127] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:35:50.874 [DEBUG] [Thread-119127] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:35:50.875 [DEBUG] [Thread-119127] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:35:50.875 [DEBUG] [Thread-119127] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:35:50.875 [DEBUG] [Thread-119127] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:35:50.875 [DEBUG] [Thread-119127] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:35:50.875 [DEBUG] [Thread-119127] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:35:50.875 [DEBUG] [Thread-119127] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:35:50.875 [DEBUG] [Thread-119127] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:35:50.875 [DEBUG] [Thread-119127] [transport.py] [_log()] client lang: <none>
2025-11-03T16:35:50.876 [DEBUG] [Thread-119127] [transport.py] [_log()] server lang: <none>
2025-11-03T16:35:50.876 [DEBUG] [Thread-119127] [transport.py] [_log()] kex follows: False
2025-11-03T16:35:50.876 [DEBUG] [Thread-119127] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:35:50.876 [DEBUG] [Thread-119127] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:35:50.876 [DEBUG] [Thread-119127] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:35:50.876 [DEBUG] [Thread-119127] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:35:50.877 [DEBUG] [Thread-119127] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:35:50.877 [DEBUG] [Thread-119127] [transport.py] [_log()] Compression: none
2025-11-03T16:35:50.877 [DEBUG] [Thread-119127] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:35:50.898 [DEBUG] [Thread-119127] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:35:50.899 [DEBUG] [Thread-119127] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:35:50.900 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:35:50.902 [DEBUG] [Thread-119127] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:35:50.902 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:35:50.903 [DEBUG] [Thread-119127] [transport.py] [_log()] userauth is OK
2025-11-03T16:35:50.904 [DEBUG] [Thread-119127] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:35:50.904 [DEBUG] [Thread-119127] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:35:50.904 [DEBUG] [Thread-119127] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:35:50.904 [DEBUG] [Thread-119127] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:35:50.942 [INFO] [Thread-119127] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:35:50.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:35:51.597 [DEBUG] [Thread-119127] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:35:51.597 [DEBUG] [Thread-119127] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:35:51.598 [DEBUG] [Thread-119127] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:35:51.638 [DEBUG] [Thread-119127] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:35:51.638 [DEBUG] [Thread-119127] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:35:51.642 [DEBUG] [Thread-119127] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:35:51.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:35:51.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:35:51.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:35:51.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:35:51.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:35:51.666 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:35:51.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:35:51.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:35:51.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:35:51.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.607741 -999.00  +26.00  34.92      6  -12.60 1 1 2 1 1   887    0 39.69 87.71 ----- 32.6 34.9 317.1 48.5 29.0 -34.4 28.9 -33.1 30.0 -32.4 30.4 -33.5
2025-11-03T16:35:51.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:35:51.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:35:51.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.607741
2025-11-03T16:35:51.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:35:51.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:35:51.669 [DEBUG] [Thread-119127] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:35:51.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:35:51.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:35:51.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:35:51.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:35:24', tmtdew=48.76, humidity=3.01, cloud=0.0, wind=30.81, temperature=26.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:35:08.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:35:51.752 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:35:51.772 [DEBUG] [Thread-119130] [transport.py] [_log()] starting thread (client mode): 0xed21870
2025-11-03T16:35:51.772 [DEBUG] [Thread-119130] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:35:51.787 [DEBUG] [Thread-119130] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:35:51.788 [INFO] [Thread-119130] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:35:51.795 [DEBUG] [Thread-119130] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:35:51.795 [DEBUG] [Thread-119130] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:35:51.796 [DEBUG] [Thread-119130] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:35:51.796 [DEBUG] [Thread-119130] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:35:51.796 [DEBUG] [Thread-119130] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:35:51.796 [DEBUG] [Thread-119130] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:35:51.796 [DEBUG] [Thread-119130] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:35:51.796 [DEBUG] [Thread-119130] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:35:51.796 [DEBUG] [Thread-119130] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:35:51.796 [DEBUG] [Thread-119130] [transport.py] [_log()] client lang: <none>
2025-11-03T16:35:51.796 [DEBUG] [Thread-119130] [transport.py] [_log()] server lang: <none>
2025-11-03T16:35:51.796 [DEBUG] [Thread-119130] [transport.py] [_log()] kex follows: False
2025-11-03T16:35:51.796 [DEBUG] [Thread-119130] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:35:51.796 [DEBUG] [Thread-119130] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:35:51.796 [DEBUG] [Thread-119130] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:35:51.797 [DEBUG] [Thread-119130] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:35:51.797 [DEBUG] [Thread-119130] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:35:51.797 [DEBUG] [Thread-119130] [transport.py] [_log()] Compression: none
2025-11-03T16:35:51.797 [DEBUG] [Thread-119130] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:35:51.856 [DEBUG] [Thread-119130] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:35:51.857 [DEBUG] [Thread-119130] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:35:51.857 [DEBUG] [Thread-119130] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:35:51.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:35:51.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:35:51.912 [DEBUG] [Thread-119130] [transport.py] [_log()] userauth is OK
2025-11-03T16:35:51.912 [DEBUG] [Thread-119130] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:35:51.912 [DEBUG] [Thread-119130] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:35:51.912 [DEBUG] [Thread-119130] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:35:51.913 [DEBUG] [Thread-119130] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:35:51.931 [INFO] [Thread-119130] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:35:51.932 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:35:51.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:35:52.760 [DEBUG] [Thread-119130] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:35:52.761 [DEBUG] [Thread-119130] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:35:52.809 [DEBUG] [Thread-119130] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:35:52.809 [DEBUG] [Thread-119130] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:35:52.818 [DEBUG] [Thread-119130] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:35:52.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:35:52.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:35:52.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:35:52.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:35:52.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:35:52.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:35:52.856 [DEBUG] [Thread-119130] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:35:56.063 [DEBUG] [Thread-119132 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:36:11.131 [DEBUG] [Thread-119133 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:36:15.843 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:36:15.844 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:36:22.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:36:22.857 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:36:22.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:36:23.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 35, 57), 50.38, 2.39, 0.0, 29.54, 26.19, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:36:23.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:35:57
2025-11-03T16:36:23.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:36:23.834 [DEBUG] [Thread-119134] [transport.py] [_log()] starting thread (client mode): 0x1179b220
2025-11-03T16:36:23.834 [DEBUG] [Thread-119134] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:36:23.854 [DEBUG] [Thread-119134] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:36:23.855 [INFO] [Thread-119134] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:36:23.858 [DEBUG] [Thread-119134] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:36:23.858 [DEBUG] [Thread-119134] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:36:23.858 [DEBUG] [Thread-119134] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:36:23.858 [DEBUG] [Thread-119134] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:36:23.858 [DEBUG] [Thread-119134] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:36:23.858 [DEBUG] [Thread-119134] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:36:23.858 [DEBUG] [Thread-119134] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:36:23.858 [DEBUG] [Thread-119134] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:36:23.858 [DEBUG] [Thread-119134] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:36:23.858 [DEBUG] [Thread-119134] [transport.py] [_log()] client lang: <none>
2025-11-03T16:36:23.858 [DEBUG] [Thread-119134] [transport.py] [_log()] server lang: <none>
2025-11-03T16:36:23.858 [DEBUG] [Thread-119134] [transport.py] [_log()] kex follows: False
2025-11-03T16:36:23.858 [DEBUG] [Thread-119134] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:36:23.859 [DEBUG] [Thread-119134] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:36:23.859 [DEBUG] [Thread-119134] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:36:23.859 [DEBUG] [Thread-119134] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:36:23.859 [DEBUG] [Thread-119134] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:36:23.859 [DEBUG] [Thread-119134] [transport.py] [_log()] Compression: none
2025-11-03T16:36:23.859 [DEBUG] [Thread-119134] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:36:23.877 [DEBUG] [Thread-119134] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:36:23.877 [DEBUG] [Thread-119134] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:36:23.879 [DEBUG] [Thread-119134] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:36:23.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:36:23.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:36:23.882 [DEBUG] [Thread-119134] [transport.py] [_log()] userauth is OK
2025-11-03T16:36:23.882 [DEBUG] [Thread-119134] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:36:23.882 [DEBUG] [Thread-119134] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:36:23.882 [DEBUG] [Thread-119134] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:36:23.882 [DEBUG] [Thread-119134] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:36:23.907 [INFO] [Thread-119134] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:36:23.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:36:24.636 [DEBUG] [Thread-119134] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:36:24.636 [DEBUG] [Thread-119134] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:36:24.636 [DEBUG] [Thread-119134] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:36:24.644 [DEBUG] [Thread-119136 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:36:24.677 [DEBUG] [Thread-119134] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:36:24.677 [DEBUG] [Thread-119134] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:36:24.679 [DEBUG] [Thread-119134] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:36:24.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:36:24.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:36:24.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:36:24.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:36:24.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:36:24.705 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:36:24.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:36:24.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:36:24.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:36:24.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.608089 -999.00  +26.30  37.43      6  -13.00 1 1 2 1 1   887    0 40.26 92.66 ----- 47.1 37.4 307.0 52.8 29.0 -33.7 28.9 -33.0 30.0 -32.6 30.4 -33.4
2025-11-03T16:36:24.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:36:24.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:36:24.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.608089
2025-11-03T16:36:24.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:36:24.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:36:24.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:36:24.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:36:24.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:36:24.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:35:57', tmtdew=50.38, humidity=2.39, cloud=0.0, wind=29.54, temperature=26.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:35:38.890', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:36:24.708 [DEBUG] [Thread-119134] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:36:24.794 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:36:24.816 [DEBUG] [Thread-119138] [transport.py] [_log()] starting thread (client mode): 0x141da200
2025-11-03T16:36:24.816 [DEBUG] [Thread-119138] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:36:24.831 [DEBUG] [Thread-119138] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:36:24.831 [INFO] [Thread-119138] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:36:24.839 [DEBUG] [Thread-119138] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:36:24.839 [DEBUG] [Thread-119138] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:36:24.839 [DEBUG] [Thread-119138] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:36:24.839 [DEBUG] [Thread-119138] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:36:24.840 [DEBUG] [Thread-119138] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:36:24.840 [DEBUG] [Thread-119138] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:36:24.840 [DEBUG] [Thread-119138] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:36:24.840 [DEBUG] [Thread-119138] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:36:24.840 [DEBUG] [Thread-119138] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:36:24.840 [DEBUG] [Thread-119138] [transport.py] [_log()] client lang: <none>
2025-11-03T16:36:24.840 [DEBUG] [Thread-119138] [transport.py] [_log()] server lang: <none>
2025-11-03T16:36:24.840 [DEBUG] [Thread-119138] [transport.py] [_log()] kex follows: False
2025-11-03T16:36:24.841 [DEBUG] [Thread-119138] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:36:24.841 [DEBUG] [Thread-119138] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:36:24.841 [DEBUG] [Thread-119138] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:36:24.841 [DEBUG] [Thread-119138] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:36:24.841 [DEBUG] [Thread-119138] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:36:24.841 [DEBUG] [Thread-119138] [transport.py] [_log()] Compression: none
2025-11-03T16:36:24.841 [DEBUG] [Thread-119138] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:36:24.901 [DEBUG] [Thread-119138] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:36:24.901 [DEBUG] [Thread-119138] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:36:24.902 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:36:24.902 [DEBUG] [Thread-119138] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:36:24.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:36:24.964 [DEBUG] [Thread-119138] [transport.py] [_log()] userauth is OK
2025-11-03T16:36:24.964 [DEBUG] [Thread-119138] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:36:24.965 [DEBUG] [Thread-119138] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:36:24.965 [DEBUG] [Thread-119138] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:36:24.965 [DEBUG] [Thread-119138] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:36:24.985 [INFO] [Thread-119138] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:36:24.985 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:36:24.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:36:25.861 [DEBUG] [Thread-119138] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:36:25.861 [DEBUG] [Thread-119138] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:36:25.910 [DEBUG] [Thread-119138] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:36:25.911 [DEBUG] [Thread-119138] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:36:25.920 [DEBUG] [Thread-119138] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:36:25.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:36:25.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:36:25.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:36:25.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:36:25.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:36:25.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:36:25.957 [DEBUG] [Thread-119138] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:36:26.181 [DEBUG] [Thread-119140 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:36:41.252 [DEBUG] [Thread-119141 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:36:55.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:36:55.988 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:36:55.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:36:56.288 [DEBUG] [Thread-119142 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:36:56.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 36, 29), 50.37, 2.39, 0.0, 25.21, 26.15, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:36:56.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:36:29
2025-11-03T16:36:56.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:36:56.976 [DEBUG] [Thread-119143] [transport.py] [_log()] starting thread (client mode): 0xed2c040
2025-11-03T16:36:56.976 [DEBUG] [Thread-119143] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:36:56.996 [DEBUG] [Thread-119143] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:36:56.996 [INFO] [Thread-119143] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:36:56.999 [DEBUG] [Thread-119143] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:36:57.000 [DEBUG] [Thread-119143] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:36:57.000 [DEBUG] [Thread-119143] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:36:57.000 [DEBUG] [Thread-119143] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:36:57.000 [DEBUG] [Thread-119143] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:36:57.000 [DEBUG] [Thread-119143] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:36:57.000 [DEBUG] [Thread-119143] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:36:57.000 [DEBUG] [Thread-119143] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:36:57.000 [DEBUG] [Thread-119143] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:36:57.001 [DEBUG] [Thread-119143] [transport.py] [_log()] client lang: <none>
2025-11-03T16:36:57.001 [DEBUG] [Thread-119143] [transport.py] [_log()] server lang: <none>
2025-11-03T16:36:57.001 [DEBUG] [Thread-119143] [transport.py] [_log()] kex follows: False
2025-11-03T16:36:57.001 [DEBUG] [Thread-119143] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:36:57.001 [DEBUG] [Thread-119143] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:36:57.001 [DEBUG] [Thread-119143] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:36:57.001 [DEBUG] [Thread-119143] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:36:57.001 [DEBUG] [Thread-119143] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:36:57.002 [DEBUG] [Thread-119143] [transport.py] [_log()] Compression: none
2025-11-03T16:36:57.002 [DEBUG] [Thread-119143] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:36:57.021 [DEBUG] [Thread-119143] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:36:57.021 [DEBUG] [Thread-119143] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:36:57.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:36:57.023 [DEBUG] [Thread-119143] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:36:57.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:36:57.024 [DEBUG] [Thread-119143] [transport.py] [_log()] userauth is OK
2025-11-03T16:36:57.024 [DEBUG] [Thread-119143] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:36:57.024 [DEBUG] [Thread-119143] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:36:57.024 [DEBUG] [Thread-119143] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:36:57.024 [DEBUG] [Thread-119143] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:36:57.047 [INFO] [Thread-119143] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:36:57.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:36:57.675 [DEBUG] [Thread-119143] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:36:57.675 [DEBUG] [Thread-119143] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:36:57.675 [DEBUG] [Thread-119143] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:36:57.716 [DEBUG] [Thread-119143] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:36:57.717 [DEBUG] [Thread-119143] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:36:57.719 [DEBUG] [Thread-119143] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:36:57.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:36:57.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:36:57.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:36:57.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:36:57.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:36:57.742 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:36:57.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:36:57.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:36:57.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:36:57.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.608436 -999.00  +26.40  20.73      6  -13.20 1 1 1 1 1   887    0 41.01 99.22 ----- 26.8 20.7 280.3 40.9 29.0 -34.2 28.9 -33.7 30.0 -34.5 30.4 -33.4
2025-11-03T16:36:57.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:36:57.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:36:57.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.608436
2025-11-03T16:36:57.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:36:57.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:36:57.744 [DEBUG] [Thread-119143] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:36:57.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:36:57.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:36:57.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:36:57.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:36:29', tmtdew=50.37, humidity=2.39, cloud=0.0, wind=25.21, temperature=26.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:36:08.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:36:57.827 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:36:57.846 [DEBUG] [Thread-119146] [transport.py] [_log()] starting thread (client mode): 0x141dacb0
2025-11-03T16:36:57.846 [DEBUG] [Thread-119146] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:36:57.861 [DEBUG] [Thread-119146] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:36:57.861 [INFO] [Thread-119146] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:36:57.872 [DEBUG] [Thread-119146] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:36:57.873 [DEBUG] [Thread-119146] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:36:57.873 [DEBUG] [Thread-119146] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:36:57.873 [DEBUG] [Thread-119146] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:36:57.873 [DEBUG] [Thread-119146] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:36:57.873 [DEBUG] [Thread-119146] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:36:57.873 [DEBUG] [Thread-119146] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:36:57.873 [DEBUG] [Thread-119146] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:36:57.873 [DEBUG] [Thread-119146] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:36:57.873 [DEBUG] [Thread-119146] [transport.py] [_log()] client lang: <none>
2025-11-03T16:36:57.873 [DEBUG] [Thread-119146] [transport.py] [_log()] server lang: <none>
2025-11-03T16:36:57.873 [DEBUG] [Thread-119146] [transport.py] [_log()] kex follows: False
2025-11-03T16:36:57.873 [DEBUG] [Thread-119146] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:36:57.873 [DEBUG] [Thread-119146] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:36:57.873 [DEBUG] [Thread-119146] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:36:57.873 [DEBUG] [Thread-119146] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:36:57.874 [DEBUG] [Thread-119146] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:36:57.874 [DEBUG] [Thread-119146] [transport.py] [_log()] Compression: none
2025-11-03T16:36:57.874 [DEBUG] [Thread-119146] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:36:57.932 [DEBUG] [Thread-119146] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:36:57.932 [DEBUG] [Thread-119146] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:36:57.933 [DEBUG] [Thread-119146] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:36:57.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:36:57.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:36:57.987 [DEBUG] [Thread-119146] [transport.py] [_log()] userauth is OK
2025-11-03T16:36:57.988 [DEBUG] [Thread-119146] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:36:57.988 [DEBUG] [Thread-119146] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:36:57.988 [DEBUG] [Thread-119146] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:36:57.988 [DEBUG] [Thread-119146] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:36:58.009 [INFO] [Thread-119146] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:36:58.009 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:36:58.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:36:58.859 [DEBUG] [Thread-119146] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:36:58.859 [DEBUG] [Thread-119146] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:36:58.907 [DEBUG] [Thread-119146] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:36:58.907 [DEBUG] [Thread-119146] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:36:58.915 [DEBUG] [Thread-119146] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:36:58.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:36:58.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:36:58.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:36:58.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:36:58.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:36:58.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:36:58.948 [DEBUG] [Thread-119146] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:37:11.328 [DEBUG] [Thread-119148 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:37:15.985 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:37:15.986 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:37:24.897 [DEBUG] [Thread-119149 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:37:26.403 [DEBUG] [Thread-119150 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:37:28.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:37:28.971 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:37:28.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:37:29.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 37, 1), 51.53, 2.16, 0.0, 27.47, 26.55, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:37:29.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:37:01
2025-11-03T16:37:29.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:37:29.938 [DEBUG] [Thread-119151] [transport.py] [_log()] starting thread (client mode): 0x1174fa60
2025-11-03T16:37:29.938 [DEBUG] [Thread-119151] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:37:29.950 [DEBUG] [Thread-119151] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:37:29.951 [INFO] [Thread-119151] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:37:29.954 [DEBUG] [Thread-119151] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:37:29.954 [DEBUG] [Thread-119151] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:37:29.955 [DEBUG] [Thread-119151] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:37:29.955 [DEBUG] [Thread-119151] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:37:29.955 [DEBUG] [Thread-119151] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:37:29.955 [DEBUG] [Thread-119151] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:37:29.955 [DEBUG] [Thread-119151] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:37:29.955 [DEBUG] [Thread-119151] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:37:29.955 [DEBUG] [Thread-119151] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:37:29.955 [DEBUG] [Thread-119151] [transport.py] [_log()] client lang: <none>
2025-11-03T16:37:29.955 [DEBUG] [Thread-119151] [transport.py] [_log()] server lang: <none>
2025-11-03T16:37:29.955 [DEBUG] [Thread-119151] [transport.py] [_log()] kex follows: False
2025-11-03T16:37:29.955 [DEBUG] [Thread-119151] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:37:29.955 [DEBUG] [Thread-119151] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:37:29.955 [DEBUG] [Thread-119151] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:37:29.956 [DEBUG] [Thread-119151] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:37:29.956 [DEBUG] [Thread-119151] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:37:29.956 [DEBUG] [Thread-119151] [transport.py] [_log()] Compression: none
2025-11-03T16:37:29.956 [DEBUG] [Thread-119151] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:37:29.973 [DEBUG] [Thread-119151] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:37:29.974 [DEBUG] [Thread-119151] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:37:29.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:37:29.975 [DEBUG] [Thread-119151] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:37:29.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:37:30.017 [DEBUG] [Thread-119151] [transport.py] [_log()] userauth is OK
2025-11-03T16:37:30.017 [DEBUG] [Thread-119151] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:37:30.017 [DEBUG] [Thread-119151] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:37:30.017 [DEBUG] [Thread-119151] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:37:30.018 [DEBUG] [Thread-119151] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:37:30.042 [INFO] [Thread-119151] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:37:30.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:37:31.096 [DEBUG] [Thread-119151] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:37:31.096 [DEBUG] [Thread-119151] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:37:31.096 [DEBUG] [Thread-119151] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:37:31.137 [DEBUG] [Thread-119151] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:37:31.138 [DEBUG] [Thread-119151] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:37:31.140 [DEBUG] [Thread-119151] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:37:31.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:37:31.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:37:31.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:37:31.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:37:31.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:37:31.159 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:37:31.159 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:37:31.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:37:31.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:37:31.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.608783 -999.00  +25.90  32.48      6  -13.60 1 1 2 1 1   887    0 40.00 96.86 ----- 34.8 32.5 297.0 36.9 28.9 -35.1 29.0 -33.5 30.0 -32.8 30.4 -34.0
2025-11-03T16:37:31.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:37:31.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:37:31.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.608783
2025-11-03T16:37:31.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:37:31.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:37:31.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:37:31.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:37:31.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:37:31.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:37:01', tmtdew=51.53, humidity=2.16, cloud=0.0, wind=27.47, temperature=26.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:36:38.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:37:31.161 [DEBUG] [Thread-119151] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:37:31.233 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:37:31.253 [DEBUG] [Thread-119154] [transport.py] [_log()] starting thread (client mode): 0x117bfe80
2025-11-03T16:37:31.254 [DEBUG] [Thread-119154] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:37:31.268 [DEBUG] [Thread-119154] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:37:31.269 [INFO] [Thread-119154] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:37:31.276 [DEBUG] [Thread-119154] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:37:31.276 [DEBUG] [Thread-119154] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:37:31.276 [DEBUG] [Thread-119154] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:37:31.276 [DEBUG] [Thread-119154] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:37:31.276 [DEBUG] [Thread-119154] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:37:31.276 [DEBUG] [Thread-119154] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:37:31.276 [DEBUG] [Thread-119154] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:37:31.276 [DEBUG] [Thread-119154] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:37:31.276 [DEBUG] [Thread-119154] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:37:31.276 [DEBUG] [Thread-119154] [transport.py] [_log()] client lang: <none>
2025-11-03T16:37:31.276 [DEBUG] [Thread-119154] [transport.py] [_log()] server lang: <none>
2025-11-03T16:37:31.276 [DEBUG] [Thread-119154] [transport.py] [_log()] kex follows: False
2025-11-03T16:37:31.276 [DEBUG] [Thread-119154] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:37:31.276 [DEBUG] [Thread-119154] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:37:31.276 [DEBUG] [Thread-119154] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:37:31.277 [DEBUG] [Thread-119154] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:37:31.277 [DEBUG] [Thread-119154] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:37:31.277 [DEBUG] [Thread-119154] [transport.py] [_log()] Compression: none
2025-11-03T16:37:31.277 [DEBUG] [Thread-119154] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:37:31.334 [DEBUG] [Thread-119154] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:37:31.334 [DEBUG] [Thread-119154] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:37:31.334 [DEBUG] [Thread-119154] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:37:31.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:37:31.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:37:31.391 [DEBUG] [Thread-119154] [transport.py] [_log()] userauth is OK
2025-11-03T16:37:31.391 [DEBUG] [Thread-119154] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:37:31.391 [DEBUG] [Thread-119154] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:37:31.391 [DEBUG] [Thread-119154] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:37:31.391 [DEBUG] [Thread-119154] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:37:31.407 [INFO] [Thread-119154] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:37:31.408 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:37:31.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:37:32.312 [DEBUG] [Thread-119154] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:37:32.312 [DEBUG] [Thread-119154] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:37:32.360 [DEBUG] [Thread-119154] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:37:32.360 [DEBUG] [Thread-119154] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:37:32.369 [DEBUG] [Thread-119154] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:37:32.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:37:32.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:37:32.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:37:32.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:37:32.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:37:32.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:37:32.401 [DEBUG] [Thread-119154] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:37:41.445 [DEBUG] [Thread-119156 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:37:56.513 [DEBUG] [Thread-119157 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:38:02.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:38:02.423 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:38:02.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:38:03.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 37, 34), 51.89, 2.16, 0.0, 27.83, 26.25, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:38:03.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:37:34
2025-11-03T16:38:03.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:38:03.469 [DEBUG] [Thread-119158] [transport.py] [_log()] starting thread (client mode): 0x141dae90
2025-11-03T16:38:03.469 [DEBUG] [Thread-119158] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:38:03.490 [DEBUG] [Thread-119158] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:38:03.490 [INFO] [Thread-119158] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:38:03.492 [DEBUG] [Thread-119158] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:38:03.492 [DEBUG] [Thread-119158] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:38:03.492 [DEBUG] [Thread-119158] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:38:03.492 [DEBUG] [Thread-119158] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:38:03.492 [DEBUG] [Thread-119158] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:38:03.492 [DEBUG] [Thread-119158] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:38:03.492 [DEBUG] [Thread-119158] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:38:03.492 [DEBUG] [Thread-119158] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:38:03.492 [DEBUG] [Thread-119158] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:38:03.492 [DEBUG] [Thread-119158] [transport.py] [_log()] client lang: <none>
2025-11-03T16:38:03.492 [DEBUG] [Thread-119158] [transport.py] [_log()] server lang: <none>
2025-11-03T16:38:03.492 [DEBUG] [Thread-119158] [transport.py] [_log()] kex follows: False
2025-11-03T16:38:03.492 [DEBUG] [Thread-119158] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:38:03.492 [DEBUG] [Thread-119158] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:38:03.492 [DEBUG] [Thread-119158] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:38:03.492 [DEBUG] [Thread-119158] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:38:03.492 [DEBUG] [Thread-119158] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:38:03.492 [DEBUG] [Thread-119158] [transport.py] [_log()] Compression: none
2025-11-03T16:38:03.492 [DEBUG] [Thread-119158] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:38:03.503 [DEBUG] [Thread-119158] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:38:03.503 [DEBUG] [Thread-119158] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:38:03.504 [DEBUG] [Thread-119158] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:38:03.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:38:03.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:38:03.504 [DEBUG] [Thread-119158] [transport.py] [_log()] userauth is OK
2025-11-03T16:38:03.504 [DEBUG] [Thread-119158] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:38:03.504 [DEBUG] [Thread-119158] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:38:03.504 [DEBUG] [Thread-119158] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:38:03.504 [DEBUG] [Thread-119158] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:38:03.513 [INFO] [Thread-119158] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:38:03.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:38:04.166 [DEBUG] [Thread-119158] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:38:04.166 [DEBUG] [Thread-119158] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:38:04.166 [DEBUG] [Thread-119158] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:38:04.207 [DEBUG] [Thread-119158] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:38:04.207 [DEBUG] [Thread-119158] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:38:04.210 [DEBUG] [Thread-119158] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:38:04.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:38:04.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:38:04.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:38:04.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:38:04.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:38:04.228 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:38:04.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:38:04.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:38:04.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:38:04.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.609130 -999.00  +25.80  29.88      6  -13.50 1 1 1 1 1   887    0 41.64 102.73 ----- 29.8 29.9 299.8 33.9 29.0 -34.6 28.9 -33.5 29.9 -33.3 30.3 -33.4
2025-11-03T16:38:04.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:38:04.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:38:04.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.609130
2025-11-03T16:38:04.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:38:04.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:38:04.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:38:04.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:38:04.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:38:04.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:37:34', tmtdew=51.89, humidity=2.16, cloud=0.0, wind=27.83, temperature=26.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:37:08.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:38:04.229 [DEBUG] [Thread-119158] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:38:04.304 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:38:04.322 [DEBUG] [Thread-119161] [transport.py] [_log()] starting thread (client mode): 0xed22950
2025-11-03T16:38:04.323 [DEBUG] [Thread-119161] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:38:04.337 [DEBUG] [Thread-119161] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:38:04.337 [INFO] [Thread-119161] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:38:04.345 [DEBUG] [Thread-119161] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:38:04.345 [DEBUG] [Thread-119161] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:38:04.345 [DEBUG] [Thread-119161] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:38:04.345 [DEBUG] [Thread-119161] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:38:04.345 [DEBUG] [Thread-119161] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:38:04.345 [DEBUG] [Thread-119161] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:38:04.345 [DEBUG] [Thread-119161] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:38:04.345 [DEBUG] [Thread-119161] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:38:04.345 [DEBUG] [Thread-119161] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:38:04.345 [DEBUG] [Thread-119161] [transport.py] [_log()] client lang: <none>
2025-11-03T16:38:04.345 [DEBUG] [Thread-119161] [transport.py] [_log()] server lang: <none>
2025-11-03T16:38:04.345 [DEBUG] [Thread-119161] [transport.py] [_log()] kex follows: False
2025-11-03T16:38:04.345 [DEBUG] [Thread-119161] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:38:04.345 [DEBUG] [Thread-119161] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:38:04.345 [DEBUG] [Thread-119161] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:38:04.345 [DEBUG] [Thread-119161] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:38:04.346 [DEBUG] [Thread-119161] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:38:04.346 [DEBUG] [Thread-119161] [transport.py] [_log()] Compression: none
2025-11-03T16:38:04.346 [DEBUG] [Thread-119161] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:38:04.406 [DEBUG] [Thread-119161] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:38:04.406 [DEBUG] [Thread-119161] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:38:04.406 [DEBUG] [Thread-119161] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:38:04.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:38:04.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:38:04.463 [DEBUG] [Thread-119161] [transport.py] [_log()] userauth is OK
2025-11-03T16:38:04.463 [DEBUG] [Thread-119161] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:38:04.463 [DEBUG] [Thread-119161] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:38:04.463 [DEBUG] [Thread-119161] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:38:04.463 [DEBUG] [Thread-119161] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:38:04.477 [INFO] [Thread-119161] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:38:04.477 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:38:04.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:38:05.302 [DEBUG] [Thread-119161] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:38:05.302 [DEBUG] [Thread-119161] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:38:05.350 [DEBUG] [Thread-119161] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:38:05.350 [DEBUG] [Thread-119161] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:38:05.361 [DEBUG] [Thread-119161] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:38:05.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:38:05.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:38:05.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:38:05.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:38:05.386 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:38:05.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:38:05.394 [DEBUG] [Thread-119161] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:38:11.561 [DEBUG] [Thread-119163 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:38:16.128 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:38:16.129 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:38:24.971 [DEBUG] [Thread-119164 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:38:26.632 [DEBUG] [Thread-119165 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:38:35.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:38:35.393 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:38:35.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:38:36.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 38, 6), 51.93, 2.14, 0.0, 28.37, 26.13, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:38:36.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:38:06
2025-11-03T16:38:36.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:38:36.453 [DEBUG] [Thread-119166] [transport.py] [_log()] starting thread (client mode): 0x141d91e0
2025-11-03T16:38:36.453 [DEBUG] [Thread-119166] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:38:36.472 [DEBUG] [Thread-119166] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:38:36.472 [INFO] [Thread-119166] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:38:36.475 [DEBUG] [Thread-119166] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:38:36.475 [DEBUG] [Thread-119166] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:38:36.476 [DEBUG] [Thread-119166] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:38:36.476 [DEBUG] [Thread-119166] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:38:36.476 [DEBUG] [Thread-119166] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:38:36.476 [DEBUG] [Thread-119166] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:38:36.476 [DEBUG] [Thread-119166] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:38:36.476 [DEBUG] [Thread-119166] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:38:36.476 [DEBUG] [Thread-119166] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:38:36.476 [DEBUG] [Thread-119166] [transport.py] [_log()] client lang: <none>
2025-11-03T16:38:36.476 [DEBUG] [Thread-119166] [transport.py] [_log()] server lang: <none>
2025-11-03T16:38:36.476 [DEBUG] [Thread-119166] [transport.py] [_log()] kex follows: False
2025-11-03T16:38:36.477 [DEBUG] [Thread-119166] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:38:36.477 [DEBUG] [Thread-119166] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:38:36.477 [DEBUG] [Thread-119166] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:38:36.477 [DEBUG] [Thread-119166] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:38:36.477 [DEBUG] [Thread-119166] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:38:36.477 [DEBUG] [Thread-119166] [transport.py] [_log()] Compression: none
2025-11-03T16:38:36.477 [DEBUG] [Thread-119166] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:38:36.486 [DEBUG] [Thread-119166] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:38:36.486 [DEBUG] [Thread-119166] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:38:36.487 [DEBUG] [Thread-119166] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:38:36.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:38:36.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:38:36.489 [DEBUG] [Thread-119166] [transport.py] [_log()] userauth is OK
2025-11-03T16:38:36.489 [DEBUG] [Thread-119166] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:38:36.489 [DEBUG] [Thread-119166] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:38:36.489 [DEBUG] [Thread-119166] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:38:36.489 [DEBUG] [Thread-119166] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:38:36.512 [INFO] [Thread-119166] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:38:36.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:38:37.205 [DEBUG] [Thread-119166] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:38:37.206 [DEBUG] [Thread-119166] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:38:37.206 [DEBUG] [Thread-119166] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:38:37.247 [DEBUG] [Thread-119166] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:38:37.247 [DEBUG] [Thread-119166] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:38:37.251 [DEBUG] [Thread-119166] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:38:37.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:38:37.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:38:37.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:38:37.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:38:37.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:38:37.276 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:38:37.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:38:37.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:38:37.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:38:37.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.609477 -999.00  +25.70  27.48      6  -13.00 1 1 1 1 1   887    0 40.21 99.51 ----- 25.2 27.5 291.4 40.9 28.9 -34.9 28.9 -34.0 29.9 -36.0 30.3 -32.9
2025-11-03T16:38:37.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:38:37.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:38:37.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.609477
2025-11-03T16:38:37.285 [DEBUG] [Thread-119166] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:38:37.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:38:37.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:38:37.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:38:37.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:38:37.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:38:37.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:38:06', tmtdew=51.93, humidity=2.14, cloud=0.0, wind=28.37, temperature=26.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:37:38.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:38:37.371 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:38:37.392 [DEBUG] [Thread-119169] [transport.py] [_log()] starting thread (client mode): 0x141dbbe0
2025-11-03T16:38:37.392 [DEBUG] [Thread-119169] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:38:37.408 [DEBUG] [Thread-119169] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:38:37.408 [INFO] [Thread-119169] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:38:37.415 [DEBUG] [Thread-119169] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:38:37.415 [DEBUG] [Thread-119169] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:38:37.416 [DEBUG] [Thread-119169] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:38:37.416 [DEBUG] [Thread-119169] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:38:37.416 [DEBUG] [Thread-119169] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:38:37.416 [DEBUG] [Thread-119169] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:38:37.416 [DEBUG] [Thread-119169] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:38:37.416 [DEBUG] [Thread-119169] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:38:37.416 [DEBUG] [Thread-119169] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:38:37.416 [DEBUG] [Thread-119169] [transport.py] [_log()] client lang: <none>
2025-11-03T16:38:37.416 [DEBUG] [Thread-119169] [transport.py] [_log()] server lang: <none>
2025-11-03T16:38:37.416 [DEBUG] [Thread-119169] [transport.py] [_log()] kex follows: False
2025-11-03T16:38:37.416 [DEBUG] [Thread-119169] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:38:37.416 [DEBUG] [Thread-119169] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:38:37.416 [DEBUG] [Thread-119169] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:38:37.416 [DEBUG] [Thread-119169] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:38:37.416 [DEBUG] [Thread-119169] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:38:37.417 [DEBUG] [Thread-119169] [transport.py] [_log()] Compression: none
2025-11-03T16:38:37.417 [DEBUG] [Thread-119169] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:38:37.476 [DEBUG] [Thread-119169] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:38:37.477 [DEBUG] [Thread-119169] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:38:37.477 [DEBUG] [Thread-119169] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:38:37.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:38:37.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:38:37.536 [DEBUG] [Thread-119169] [transport.py] [_log()] userauth is OK
2025-11-03T16:38:37.536 [DEBUG] [Thread-119169] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:38:37.536 [DEBUG] [Thread-119169] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:38:37.536 [DEBUG] [Thread-119169] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:38:37.537 [DEBUG] [Thread-119169] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:38:37.555 [INFO] [Thread-119169] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:38:37.556 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:38:37.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:38:38.472 [DEBUG] [Thread-119169] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:38:38.472 [DEBUG] [Thread-119169] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:38:38.521 [DEBUG] [Thread-119169] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:38:38.521 [DEBUG] [Thread-119169] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:38:38.531 [DEBUG] [Thread-119169] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:38:38.539 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:38:38.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:38:38.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:38:38.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:38:38.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:38:38.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:38:38.565 [DEBUG] [Thread-119169] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:38:41.674 [DEBUG] [Thread-119171 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:38:56.729 [DEBUG] [Thread-119172 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:39:08.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:39:08.588 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:39:08.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:39:09.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 38, 38), 51.12, 2.24, 0.0, 34.34, 26.45, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:39:09.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:38:38
2025-11-03T16:39:09.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:39:09.557 [DEBUG] [Thread-119173] [transport.py] [_log()] starting thread (client mode): 0x117e8ac0
2025-11-03T16:39:09.558 [DEBUG] [Thread-119173] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:39:09.578 [DEBUG] [Thread-119173] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:39:09.578 [INFO] [Thread-119173] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:39:09.581 [DEBUG] [Thread-119173] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:39:09.582 [DEBUG] [Thread-119173] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:39:09.582 [DEBUG] [Thread-119173] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:39:09.582 [DEBUG] [Thread-119173] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:39:09.582 [DEBUG] [Thread-119173] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:39:09.582 [DEBUG] [Thread-119173] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:39:09.582 [DEBUG] [Thread-119173] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:39:09.582 [DEBUG] [Thread-119173] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:39:09.582 [DEBUG] [Thread-119173] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:39:09.583 [DEBUG] [Thread-119173] [transport.py] [_log()] client lang: <none>
2025-11-03T16:39:09.583 [DEBUG] [Thread-119173] [transport.py] [_log()] server lang: <none>
2025-11-03T16:39:09.583 [DEBUG] [Thread-119173] [transport.py] [_log()] kex follows: False
2025-11-03T16:39:09.583 [DEBUG] [Thread-119173] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:39:09.583 [DEBUG] [Thread-119173] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:39:09.583 [DEBUG] [Thread-119173] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:39:09.583 [DEBUG] [Thread-119173] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:39:09.584 [DEBUG] [Thread-119173] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:39:09.584 [DEBUG] [Thread-119173] [transport.py] [_log()] Compression: none
2025-11-03T16:39:09.584 [DEBUG] [Thread-119173] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:39:09.601 [DEBUG] [Thread-119173] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:39:09.601 [DEBUG] [Thread-119173] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:39:09.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:39:09.602 [DEBUG] [Thread-119173] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:39:09.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:39:09.604 [DEBUG] [Thread-119173] [transport.py] [_log()] userauth is OK
2025-11-03T16:39:09.604 [DEBUG] [Thread-119173] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:39:09.605 [DEBUG] [Thread-119173] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:39:09.605 [DEBUG] [Thread-119173] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:39:09.605 [DEBUG] [Thread-119173] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:39:09.620 [INFO] [Thread-119173] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:39:09.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:39:10.254 [DEBUG] [Thread-119173] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:39:10.255 [DEBUG] [Thread-119173] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:39:10.255 [DEBUG] [Thread-119173] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:39:10.295 [DEBUG] [Thread-119173] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:39:10.295 [DEBUG] [Thread-119173] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:39:10.298 [DEBUG] [Thread-119173] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:39:10.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:39:10.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:39:10.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:39:10.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:39:10.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:39:10.316 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:39:10.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:39:10.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:39:10.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:39:10.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.609825 -999.00  +25.80  38.58      6  -12.70 1 1 2 1 1   887    0 40.40 101.94 ----- 40.3 38.6 293.8 43.8 28.9 -35.1 28.9 -33.6 29.8 -33.9 30.2 -33.8
2025-11-03T16:39:10.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:39:10.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:39:10.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.609825
2025-11-03T16:39:10.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:39:10.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:39:10.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:39:10.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:39:10.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:39:10.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:38:38', tmtdew=51.12, humidity=2.24, cloud=0.0, wind=34.34, temperature=26.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:38:08.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:39:10.318 [DEBUG] [Thread-119173] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:39:10.391 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:39:10.412 [DEBUG] [Thread-119176] [transport.py] [_log()] starting thread (client mode): 0x11799240
2025-11-03T16:39:10.412 [DEBUG] [Thread-119176] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:39:10.427 [DEBUG] [Thread-119176] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:39:10.427 [INFO] [Thread-119176] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:39:10.434 [DEBUG] [Thread-119176] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:39:10.434 [DEBUG] [Thread-119176] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:39:10.434 [DEBUG] [Thread-119176] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:39:10.434 [DEBUG] [Thread-119176] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:39:10.434 [DEBUG] [Thread-119176] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:39:10.434 [DEBUG] [Thread-119176] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:39:10.435 [DEBUG] [Thread-119176] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:39:10.435 [DEBUG] [Thread-119176] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:39:10.435 [DEBUG] [Thread-119176] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:39:10.435 [DEBUG] [Thread-119176] [transport.py] [_log()] client lang: <none>
2025-11-03T16:39:10.435 [DEBUG] [Thread-119176] [transport.py] [_log()] server lang: <none>
2025-11-03T16:39:10.435 [DEBUG] [Thread-119176] [transport.py] [_log()] kex follows: False
2025-11-03T16:39:10.435 [DEBUG] [Thread-119176] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:39:10.435 [DEBUG] [Thread-119176] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:39:10.435 [DEBUG] [Thread-119176] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:39:10.435 [DEBUG] [Thread-119176] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:39:10.435 [DEBUG] [Thread-119176] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:39:10.435 [DEBUG] [Thread-119176] [transport.py] [_log()] Compression: none
2025-11-03T16:39:10.435 [DEBUG] [Thread-119176] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:39:10.490 [DEBUG] [Thread-119176] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:39:10.491 [DEBUG] [Thread-119176] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:39:10.491 [DEBUG] [Thread-119176] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:39:10.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:39:10.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:39:10.547 [DEBUG] [Thread-119176] [transport.py] [_log()] userauth is OK
2025-11-03T16:39:10.547 [DEBUG] [Thread-119176] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:39:10.547 [DEBUG] [Thread-119176] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:39:10.547 [DEBUG] [Thread-119176] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:39:10.547 [DEBUG] [Thread-119176] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:39:10.569 [INFO] [Thread-119176] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:39:10.570 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:39:10.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:39:11.462 [DEBUG] [Thread-119176] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:39:11.462 [DEBUG] [Thread-119176] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:39:11.509 [DEBUG] [Thread-119176] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:39:11.509 [DEBUG] [Thread-119176] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:39:11.518 [DEBUG] [Thread-119176] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:39:11.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:39:11.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:39:11.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:39:11.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:39:11.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:39:11.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:39:11.550 [DEBUG] [Thread-119176] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:39:11.768 [DEBUG] [Thread-119178 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:39:16.271 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:39:16.273 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:39:25.271 [DEBUG] [Thread-119179 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:39:26.823 [DEBUG] [Thread-119180 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:39:41.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:39:41.573 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:39:41.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:39:41.868 [DEBUG] [Thread-119181 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:39:42.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 39, 11), 51.09, 2.26, 0.0, 33.67, 26.58, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:39:42.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:39:11
2025-11-03T16:39:42.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:39:42.533 [DEBUG] [Thread-119182] [transport.py] [_log()] starting thread (client mode): 0x1174f970
2025-11-03T16:39:42.533 [DEBUG] [Thread-119182] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:39:42.553 [DEBUG] [Thread-119182] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:39:42.554 [INFO] [Thread-119182] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:39:42.556 [DEBUG] [Thread-119182] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:39:42.556 [DEBUG] [Thread-119182] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:39:42.556 [DEBUG] [Thread-119182] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:39:42.556 [DEBUG] [Thread-119182] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:39:42.556 [DEBUG] [Thread-119182] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:39:42.556 [DEBUG] [Thread-119182] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:39:42.556 [DEBUG] [Thread-119182] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:39:42.556 [DEBUG] [Thread-119182] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:39:42.556 [DEBUG] [Thread-119182] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:39:42.556 [DEBUG] [Thread-119182] [transport.py] [_log()] client lang: <none>
2025-11-03T16:39:42.556 [DEBUG] [Thread-119182] [transport.py] [_log()] server lang: <none>
2025-11-03T16:39:42.556 [DEBUG] [Thread-119182] [transport.py] [_log()] kex follows: False
2025-11-03T16:39:42.557 [DEBUG] [Thread-119182] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:39:42.557 [DEBUG] [Thread-119182] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:39:42.557 [DEBUG] [Thread-119182] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:39:42.557 [DEBUG] [Thread-119182] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:39:42.557 [DEBUG] [Thread-119182] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:39:42.557 [DEBUG] [Thread-119182] [transport.py] [_log()] Compression: none
2025-11-03T16:39:42.557 [DEBUG] [Thread-119182] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:39:42.573 [DEBUG] [Thread-119182] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:39:42.574 [DEBUG] [Thread-119182] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:39:42.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:39:42.575 [DEBUG] [Thread-119182] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:39:42.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:39:42.577 [DEBUG] [Thread-119182] [transport.py] [_log()] userauth is OK
2025-11-03T16:39:42.577 [DEBUG] [Thread-119182] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:39:42.577 [DEBUG] [Thread-119182] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:39:42.577 [DEBUG] [Thread-119182] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:39:42.577 [DEBUG] [Thread-119182] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:39:42.592 [INFO] [Thread-119182] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:39:42.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:39:43.241 [DEBUG] [Thread-119182] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:39:43.241 [DEBUG] [Thread-119182] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:39:43.242 [DEBUG] [Thread-119182] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:39:43.282 [DEBUG] [Thread-119182] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:39:43.282 [DEBUG] [Thread-119182] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:39:43.285 [DEBUG] [Thread-119182] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:39:43.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:39:43.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:39:43.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:39:43.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:39:43.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:39:43.309 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:39:43.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:39:43.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:39:43.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:39:43.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.610519 -999.00  +26.00  33.54      7  -12.40 1 1 2 1 1   887    0 40.34 90.79 ----- 32.5 33.5 296.2 39.5 28.9 -34.6 28.8 -32.7 29.7 -33.8 30.2 -33.1
2025-11-03T16:39:43.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:39:43.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:39:43.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.610519
2025-11-03T16:39:43.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:39:43.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:39:43.312 [DEBUG] [Thread-119182] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:39:43.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:39:43.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:39:43.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:39:43.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:39:11', tmtdew=51.09, humidity=2.26, cloud=0.0, wind=33.67, temperature=26.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:39:08.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:39:43.393 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:39:43.415 [DEBUG] [Thread-119185] [transport.py] [_log()] starting thread (client mode): 0x117bc8e0
2025-11-03T16:39:43.416 [DEBUG] [Thread-119185] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:39:43.431 [DEBUG] [Thread-119185] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:39:43.431 [INFO] [Thread-119185] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:39:43.442 [DEBUG] [Thread-119185] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:39:43.443 [DEBUG] [Thread-119185] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:39:43.443 [DEBUG] [Thread-119185] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:39:43.443 [DEBUG] [Thread-119185] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:39:43.443 [DEBUG] [Thread-119185] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:39:43.443 [DEBUG] [Thread-119185] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:39:43.443 [DEBUG] [Thread-119185] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:39:43.443 [DEBUG] [Thread-119185] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:39:43.443 [DEBUG] [Thread-119185] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:39:43.443 [DEBUG] [Thread-119185] [transport.py] [_log()] client lang: <none>
2025-11-03T16:39:43.443 [DEBUG] [Thread-119185] [transport.py] [_log()] server lang: <none>
2025-11-03T16:39:43.443 [DEBUG] [Thread-119185] [transport.py] [_log()] kex follows: False
2025-11-03T16:39:43.443 [DEBUG] [Thread-119185] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:39:43.444 [DEBUG] [Thread-119185] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:39:43.444 [DEBUG] [Thread-119185] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:39:43.444 [DEBUG] [Thread-119185] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:39:43.444 [DEBUG] [Thread-119185] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:39:43.444 [DEBUG] [Thread-119185] [transport.py] [_log()] Compression: none
2025-11-03T16:39:43.444 [DEBUG] [Thread-119185] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:39:43.499 [DEBUG] [Thread-119185] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:39:43.500 [DEBUG] [Thread-119185] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:39:43.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:39:43.501 [DEBUG] [Thread-119185] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:39:43.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:39:43.555 [DEBUG] [Thread-119185] [transport.py] [_log()] userauth is OK
2025-11-03T16:39:43.556 [DEBUG] [Thread-119185] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:39:43.556 [DEBUG] [Thread-119185] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:39:43.556 [DEBUG] [Thread-119185] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:39:43.556 [DEBUG] [Thread-119185] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:39:43.580 [INFO] [Thread-119185] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:39:43.581 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:39:43.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:39:44.448 [DEBUG] [Thread-119185] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:39:44.448 [DEBUG] [Thread-119185] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:39:44.496 [DEBUG] [Thread-119185] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:39:44.496 [DEBUG] [Thread-119185] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:39:44.504 [DEBUG] [Thread-119185] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:39:44.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:39:44.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:39:44.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:39:44.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:39:44.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:39:44.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:39:44.536 [DEBUG] [Thread-119185] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:39:56.907 [DEBUG] [Thread-119187 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:40:11.964 [DEBUG] [Thread-119188 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:40:14.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:40:14.552 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:40:14.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:40:15.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 39, 43), 50.49, 2.36, 0.0, 31.86, 26.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:40:15.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:39:43
2025-11-03T16:40:15.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:40:15.509 [DEBUG] [Thread-119189] [transport.py] [_log()] starting thread (client mode): 0x117bf4c0
2025-11-03T16:40:15.510 [DEBUG] [Thread-119189] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:40:15.531 [DEBUG] [Thread-119189] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:40:15.531 [INFO] [Thread-119189] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:40:15.542 [DEBUG] [Thread-119189] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:40:15.542 [DEBUG] [Thread-119189] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:40:15.542 [DEBUG] [Thread-119189] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:40:15.542 [DEBUG] [Thread-119189] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:40:15.543 [DEBUG] [Thread-119189] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:40:15.543 [DEBUG] [Thread-119189] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:40:15.543 [DEBUG] [Thread-119189] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:40:15.543 [DEBUG] [Thread-119189] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:40:15.543 [DEBUG] [Thread-119189] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:40:15.544 [DEBUG] [Thread-119189] [transport.py] [_log()] client lang: <none>
2025-11-03T16:40:15.544 [DEBUG] [Thread-119189] [transport.py] [_log()] server lang: <none>
2025-11-03T16:40:15.544 [DEBUG] [Thread-119189] [transport.py] [_log()] kex follows: False
2025-11-03T16:40:15.544 [DEBUG] [Thread-119189] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:40:15.544 [DEBUG] [Thread-119189] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:40:15.544 [DEBUG] [Thread-119189] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:40:15.544 [DEBUG] [Thread-119189] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:40:15.544 [DEBUG] [Thread-119189] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:40:15.544 [DEBUG] [Thread-119189] [transport.py] [_log()] Compression: none
2025-11-03T16:40:15.544 [DEBUG] [Thread-119189] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:40:15.564 [DEBUG] [Thread-119189] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:40:15.565 [DEBUG] [Thread-119189] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:40:15.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:40:15.566 [DEBUG] [Thread-119189] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:40:15.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:40:15.568 [DEBUG] [Thread-119189] [transport.py] [_log()] userauth is OK
2025-11-03T16:40:15.568 [DEBUG] [Thread-119189] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:40:15.568 [DEBUG] [Thread-119189] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:40:15.568 [DEBUG] [Thread-119189] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:40:15.568 [DEBUG] [Thread-119189] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:40:15.605 [INFO] [Thread-119189] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:40:15.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:40:16.244 [DEBUG] [Thread-119189] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:40:16.245 [DEBUG] [Thread-119189] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:40:16.246 [DEBUG] [Thread-119189] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:40:16.286 [DEBUG] [Thread-119189] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:40:16.286 [DEBUG] [Thread-119189] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:40:16.289 [DEBUG] [Thread-119189] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:40:16.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:40:16.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:40:16.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:40:16.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:40:16.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:40:16.315 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:40:16.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:40:16.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:40:16.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:40:16.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.610866 -999.00  +26.20  25.31      7  -11.70 1 1 1 1 1   887    0 40.99 82.39 ----- 40.6 25.3 301.1 38.6 28.9 -33.7 28.8 -33.0 29.6 -34.8 30.2 -33.3
2025-11-03T16:40:16.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:40:16.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:40:16.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.610866
2025-11-03T16:40:16.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:40:16.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:40:16.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:40:16.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:40:16.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:40:16.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:39:43', tmtdew=50.49, humidity=2.36, cloud=0.0, wind=31.86, temperature=26.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:39:38.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:40:16.319 [DEBUG] [Thread-119189] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:40:16.402 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:40:16.413 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:40:16.414 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:40:16.422 [DEBUG] [Thread-119192] [transport.py] [_log()] starting thread (client mode): 0x11763370
2025-11-03T16:40:16.422 [DEBUG] [Thread-119192] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:40:16.436 [DEBUG] [Thread-119192] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:40:16.436 [INFO] [Thread-119192] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:40:16.443 [DEBUG] [Thread-119192] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:40:16.443 [DEBUG] [Thread-119192] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:40:16.443 [DEBUG] [Thread-119192] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:40:16.444 [DEBUG] [Thread-119192] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:40:16.444 [DEBUG] [Thread-119192] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:40:16.444 [DEBUG] [Thread-119192] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:40:16.444 [DEBUG] [Thread-119192] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:40:16.444 [DEBUG] [Thread-119192] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:40:16.444 [DEBUG] [Thread-119192] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:40:16.444 [DEBUG] [Thread-119192] [transport.py] [_log()] client lang: <none>
2025-11-03T16:40:16.444 [DEBUG] [Thread-119192] [transport.py] [_log()] server lang: <none>
2025-11-03T16:40:16.444 [DEBUG] [Thread-119192] [transport.py] [_log()] kex follows: False
2025-11-03T16:40:16.444 [DEBUG] [Thread-119192] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:40:16.445 [DEBUG] [Thread-119192] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:40:16.445 [DEBUG] [Thread-119192] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:40:16.445 [DEBUG] [Thread-119192] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:40:16.445 [DEBUG] [Thread-119192] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:40:16.445 [DEBUG] [Thread-119192] [transport.py] [_log()] Compression: none
2025-11-03T16:40:16.445 [DEBUG] [Thread-119192] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:40:16.501 [DEBUG] [Thread-119192] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:40:16.501 [DEBUG] [Thread-119192] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:40:16.501 [DEBUG] [Thread-119192] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:40:16.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:40:16.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:40:16.558 [DEBUG] [Thread-119192] [transport.py] [_log()] userauth is OK
2025-11-03T16:40:16.558 [DEBUG] [Thread-119192] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:40:16.558 [DEBUG] [Thread-119192] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:40:16.558 [DEBUG] [Thread-119192] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:40:16.558 [DEBUG] [Thread-119192] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:40:16.571 [INFO] [Thread-119192] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:40:16.571 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:40:16.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:40:17.433 [DEBUG] [Thread-119192] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:40:17.433 [DEBUG] [Thread-119192] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:40:17.481 [DEBUG] [Thread-119192] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:40:17.481 [DEBUG] [Thread-119192] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:40:17.489 [DEBUG] [Thread-119192] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:40:17.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:40:17.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:40:17.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:40:17.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:40:17.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:40:17.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:40:17.521 [DEBUG] [Thread-119192] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:40:25.353 [DEBUG] [Thread-119194 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:40:27.011 [DEBUG] [Thread-119195 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:40:42.085 [DEBUG] [Thread-119196 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:40:47.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:40:47.544 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:40:47.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:40:48.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 40, 15), 50.4, 2.37, 0.0, 33.88, 26.73, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:40:48.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:40:15
2025-11-03T16:40:48.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:40:48.517 [DEBUG] [Thread-119197] [transport.py] [_log()] starting thread (client mode): 0x117eb580
2025-11-03T16:40:48.517 [DEBUG] [Thread-119197] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:40:48.539 [DEBUG] [Thread-119197] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:40:48.539 [INFO] [Thread-119197] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:40:48.542 [DEBUG] [Thread-119197] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:40:48.543 [DEBUG] [Thread-119197] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:40:48.543 [DEBUG] [Thread-119197] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:40:48.543 [DEBUG] [Thread-119197] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:40:48.543 [DEBUG] [Thread-119197] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:40:48.543 [DEBUG] [Thread-119197] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:40:48.543 [DEBUG] [Thread-119197] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:40:48.543 [DEBUG] [Thread-119197] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:40:48.543 [DEBUG] [Thread-119197] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:40:48.543 [DEBUG] [Thread-119197] [transport.py] [_log()] client lang: <none>
2025-11-03T16:40:48.543 [DEBUG] [Thread-119197] [transport.py] [_log()] server lang: <none>
2025-11-03T16:40:48.543 [DEBUG] [Thread-119197] [transport.py] [_log()] kex follows: False
2025-11-03T16:40:48.543 [DEBUG] [Thread-119197] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:40:48.543 [DEBUG] [Thread-119197] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:40:48.543 [DEBUG] [Thread-119197] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:40:48.544 [DEBUG] [Thread-119197] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:40:48.544 [DEBUG] [Thread-119197] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:40:48.544 [DEBUG] [Thread-119197] [transport.py] [_log()] Compression: none
2025-11-03T16:40:48.544 [DEBUG] [Thread-119197] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:40:48.564 [DEBUG] [Thread-119197] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:40:48.564 [DEBUG] [Thread-119197] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:40:48.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:40:48.565 [DEBUG] [Thread-119197] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:40:48.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:40:48.567 [DEBUG] [Thread-119197] [transport.py] [_log()] userauth is OK
2025-11-03T16:40:48.568 [DEBUG] [Thread-119197] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:40:48.568 [DEBUG] [Thread-119197] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:40:48.568 [DEBUG] [Thread-119197] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:40:48.568 [DEBUG] [Thread-119197] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:40:48.594 [INFO] [Thread-119197] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:40:48.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:40:49.396 [DEBUG] [Thread-119197] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:40:49.397 [DEBUG] [Thread-119197] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:40:49.397 [DEBUG] [Thread-119197] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:40:49.437 [DEBUG] [Thread-119197] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:40:49.437 [DEBUG] [Thread-119197] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:40:49.440 [DEBUG] [Thread-119197] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:40:49.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:40:49.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:40:49.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:40:49.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:40:49.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:40:49.457 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:40:49.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:40:49.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:40:49.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:40:49.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.611213 -999.00  +25.70  49.20      7  -11.70 1 1 2 1 1   887    0 39.53 80.90 ----- 41.9 49.2 313.4 58.1 28.7 -34.1 28.8 -33.7 29.6 -35.0 30.0 -33.0
2025-11-03T16:40:49.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:40:49.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:40:49.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.611213
2025-11-03T16:40:49.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:40:49.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:40:49.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:40:49.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:40:49.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:40:49.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:40:15', tmtdew=50.4, humidity=2.37, cloud=0.0, wind=33.88, temperature=26.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:40:08.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:40:49.458 [DEBUG] [Thread-119197] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:40:49.532 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:40:49.554 [DEBUG] [Thread-119200] [transport.py] [_log()] starting thread (client mode): 0x117eb0d0
2025-11-03T16:40:49.554 [DEBUG] [Thread-119200] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:40:49.568 [DEBUG] [Thread-119200] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:40:49.568 [INFO] [Thread-119200] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:40:49.576 [DEBUG] [Thread-119200] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:40:49.576 [DEBUG] [Thread-119200] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:40:49.576 [DEBUG] [Thread-119200] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:40:49.576 [DEBUG] [Thread-119200] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:40:49.576 [DEBUG] [Thread-119200] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:40:49.576 [DEBUG] [Thread-119200] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:40:49.576 [DEBUG] [Thread-119200] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:40:49.576 [DEBUG] [Thread-119200] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:40:49.576 [DEBUG] [Thread-119200] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:40:49.576 [DEBUG] [Thread-119200] [transport.py] [_log()] client lang: <none>
2025-11-03T16:40:49.576 [DEBUG] [Thread-119200] [transport.py] [_log()] server lang: <none>
2025-11-03T16:40:49.576 [DEBUG] [Thread-119200] [transport.py] [_log()] kex follows: False
2025-11-03T16:40:49.576 [DEBUG] [Thread-119200] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:40:49.576 [DEBUG] [Thread-119200] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:40:49.576 [DEBUG] [Thread-119200] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:40:49.576 [DEBUG] [Thread-119200] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:40:49.576 [DEBUG] [Thread-119200] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:40:49.576 [DEBUG] [Thread-119200] [transport.py] [_log()] Compression: none
2025-11-03T16:40:49.576 [DEBUG] [Thread-119200] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:40:49.633 [DEBUG] [Thread-119200] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:40:49.633 [DEBUG] [Thread-119200] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:40:49.633 [DEBUG] [Thread-119200] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:40:49.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:40:49.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:40:49.690 [DEBUG] [Thread-119200] [transport.py] [_log()] userauth is OK
2025-11-03T16:40:49.690 [DEBUG] [Thread-119200] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:40:49.690 [DEBUG] [Thread-119200] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:40:49.690 [DEBUG] [Thread-119200] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:40:49.690 [DEBUG] [Thread-119200] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:40:49.704 [INFO] [Thread-119200] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:40:49.704 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:40:49.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:40:50.541 [DEBUG] [Thread-119200] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:40:50.541 [DEBUG] [Thread-119200] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:40:50.589 [DEBUG] [Thread-119200] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:40:50.589 [DEBUG] [Thread-119200] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:40:50.598 [DEBUG] [Thread-119200] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:40:50.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:40:50.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:40:50.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:40:50.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:40:50.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:40:50.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:40:50.629 [DEBUG] [Thread-119200] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:40:57.126 [DEBUG] [Thread-119202 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:41:12.194 [DEBUG] [Thread-119203 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:41:16.552 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:41:16.553 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:41:20.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:41:20.651 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:41:20.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:41:21.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 40, 48), 48.93, 3.02, 0.0, 34.81, 26.23, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:41:21.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:40:48
2025-11-03T16:41:21.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:41:21.678 [DEBUG] [Thread-119204] [transport.py] [_log()] starting thread (client mode): 0x117e8490
2025-11-03T16:41:21.678 [DEBUG] [Thread-119204] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:41:21.698 [DEBUG] [Thread-119204] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:41:21.698 [INFO] [Thread-119204] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:41:21.701 [DEBUG] [Thread-119204] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:41:21.701 [DEBUG] [Thread-119204] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:41:21.701 [DEBUG] [Thread-119204] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:41:21.701 [DEBUG] [Thread-119204] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:41:21.701 [DEBUG] [Thread-119204] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:41:21.701 [DEBUG] [Thread-119204] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:41:21.701 [DEBUG] [Thread-119204] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:41:21.701 [DEBUG] [Thread-119204] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:41:21.702 [DEBUG] [Thread-119204] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:41:21.702 [DEBUG] [Thread-119204] [transport.py] [_log()] client lang: <none>
2025-11-03T16:41:21.702 [DEBUG] [Thread-119204] [transport.py] [_log()] server lang: <none>
2025-11-03T16:41:21.702 [DEBUG] [Thread-119204] [transport.py] [_log()] kex follows: False
2025-11-03T16:41:21.702 [DEBUG] [Thread-119204] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:41:21.702 [DEBUG] [Thread-119204] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:41:21.702 [DEBUG] [Thread-119204] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:41:21.702 [DEBUG] [Thread-119204] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:41:21.702 [DEBUG] [Thread-119204] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:41:21.702 [DEBUG] [Thread-119204] [transport.py] [_log()] Compression: none
2025-11-03T16:41:21.702 [DEBUG] [Thread-119204] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:41:21.721 [DEBUG] [Thread-119204] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:41:21.721 [DEBUG] [Thread-119204] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:41:21.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:41:21.721 [DEBUG] [Thread-119204] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:41:21.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:41:21.722 [DEBUG] [Thread-119204] [transport.py] [_log()] userauth is OK
2025-11-03T16:41:21.722 [DEBUG] [Thread-119204] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:41:21.722 [DEBUG] [Thread-119204] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:41:21.722 [DEBUG] [Thread-119204] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:41:21.722 [DEBUG] [Thread-119204] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:41:21.739 [INFO] [Thread-119204] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:41:21.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:41:22.388 [DEBUG] [Thread-119204] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:41:22.388 [DEBUG] [Thread-119204] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:41:22.388 [DEBUG] [Thread-119204] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:41:22.428 [DEBUG] [Thread-119204] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:41:22.428 [DEBUG] [Thread-119204] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:41:22.430 [DEBUG] [Thread-119204] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:41:22.443 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:41:22.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:41:22.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:41:22.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:41:22.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:41:22.448 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:41:22.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:41:22.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:41:22.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:41:22.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.611561 -999.00  +25.50  40.99      7  -11.60 1 1 2 1 1   887    0 39.62 71.56 ----- 35.3 41.0 312.4 46.8 28.7 -34.4 28.6 -32.8 29.6 -31.8 30.0 -32.7
2025-11-03T16:41:22.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:41:22.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:41:22.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.611561
2025-11-03T16:41:22.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:41:22.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:41:22.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:41:22.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:41:22.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:41:22.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:40:48', tmtdew=48.93, humidity=3.02, cloud=0.0, wind=34.81, temperature=26.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:40:38.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:41:22.449 [DEBUG] [Thread-119204] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:41:22.523 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:41:22.543 [DEBUG] [Thread-119207] [transport.py] [_log()] starting thread (client mode): 0x117e9e10
2025-11-03T16:41:22.543 [DEBUG] [Thread-119207] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:41:22.558 [DEBUG] [Thread-119207] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:41:22.558 [INFO] [Thread-119207] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:41:22.565 [DEBUG] [Thread-119207] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:41:22.565 [DEBUG] [Thread-119207] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:41:22.565 [DEBUG] [Thread-119207] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:41:22.565 [DEBUG] [Thread-119207] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:41:22.565 [DEBUG] [Thread-119207] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:41:22.566 [DEBUG] [Thread-119207] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:41:22.566 [DEBUG] [Thread-119207] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:41:22.566 [DEBUG] [Thread-119207] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:41:22.566 [DEBUG] [Thread-119207] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:41:22.566 [DEBUG] [Thread-119207] [transport.py] [_log()] client lang: <none>
2025-11-03T16:41:22.566 [DEBUG] [Thread-119207] [transport.py] [_log()] server lang: <none>
2025-11-03T16:41:22.566 [DEBUG] [Thread-119207] [transport.py] [_log()] kex follows: False
2025-11-03T16:41:22.566 [DEBUG] [Thread-119207] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:41:22.566 [DEBUG] [Thread-119207] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:41:22.566 [DEBUG] [Thread-119207] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:41:22.566 [DEBUG] [Thread-119207] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:41:22.566 [DEBUG] [Thread-119207] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:41:22.566 [DEBUG] [Thread-119207] [transport.py] [_log()] Compression: none
2025-11-03T16:41:22.566 [DEBUG] [Thread-119207] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:41:22.621 [DEBUG] [Thread-119207] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:41:22.621 [DEBUG] [Thread-119207] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:41:22.622 [DEBUG] [Thread-119207] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:41:22.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:41:22.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:41:22.679 [DEBUG] [Thread-119207] [transport.py] [_log()] userauth is OK
2025-11-03T16:41:22.679 [DEBUG] [Thread-119207] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:41:22.679 [DEBUG] [Thread-119207] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:41:22.679 [DEBUG] [Thread-119207] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:41:22.679 [DEBUG] [Thread-119207] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:41:22.694 [INFO] [Thread-119207] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:41:22.694 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:41:22.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:41:23.515 [DEBUG] [Thread-119207] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:41:23.515 [DEBUG] [Thread-119207] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:41:23.563 [DEBUG] [Thread-119207] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:41:23.563 [DEBUG] [Thread-119207] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:41:23.573 [DEBUG] [Thread-119207] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:41:23.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:41:23.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:41:23.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:41:23.602 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:41:23.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:41:23.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:41:23.611 [DEBUG] [Thread-119207] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:41:25.539 [DEBUG] [Thread-119209 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:41:27.239 [DEBUG] [Thread-119210 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:41:42.296 [DEBUG] [Thread-119211 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:41:53.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:41:53.633 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:41:53.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:41:54.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 41, 20), 48.9, 3.02, 0.0, 36.98, 26.15, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:41:54.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:41:20
2025-11-03T16:41:54.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:41:54.752 [DEBUG] [Thread-119212] [transport.py] [_log()] starting thread (client mode): 0x117ea140
2025-11-03T16:41:54.752 [DEBUG] [Thread-119212] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:41:54.771 [DEBUG] [Thread-119212] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:41:54.771 [INFO] [Thread-119212] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:41:54.773 [DEBUG] [Thread-119212] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:41:54.773 [DEBUG] [Thread-119212] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:41:54.773 [DEBUG] [Thread-119212] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:41:54.773 [DEBUG] [Thread-119212] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:41:54.773 [DEBUG] [Thread-119212] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:41:54.773 [DEBUG] [Thread-119212] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:41:54.773 [DEBUG] [Thread-119212] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:41:54.773 [DEBUG] [Thread-119212] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:41:54.773 [DEBUG] [Thread-119212] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:41:54.773 [DEBUG] [Thread-119212] [transport.py] [_log()] client lang: <none>
2025-11-03T16:41:54.773 [DEBUG] [Thread-119212] [transport.py] [_log()] server lang: <none>
2025-11-03T16:41:54.773 [DEBUG] [Thread-119212] [transport.py] [_log()] kex follows: False
2025-11-03T16:41:54.773 [DEBUG] [Thread-119212] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:41:54.774 [DEBUG] [Thread-119212] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:41:54.774 [DEBUG] [Thread-119212] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:41:54.774 [DEBUG] [Thread-119212] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:41:54.774 [DEBUG] [Thread-119212] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:41:54.774 [DEBUG] [Thread-119212] [transport.py] [_log()] Compression: none
2025-11-03T16:41:54.774 [DEBUG] [Thread-119212] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:41:54.781 [DEBUG] [Thread-119212] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:41:54.782 [DEBUG] [Thread-119212] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:41:54.782 [DEBUG] [Thread-119212] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:41:54.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:41:54.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:41:54.783 [DEBUG] [Thread-119212] [transport.py] [_log()] userauth is OK
2025-11-03T16:41:54.783 [DEBUG] [Thread-119212] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:41:54.783 [DEBUG] [Thread-119212] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:41:54.783 [DEBUG] [Thread-119212] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:41:54.783 [DEBUG] [Thread-119212] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:41:54.800 [INFO] [Thread-119212] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:41:54.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:41:55.572 [DEBUG] [Thread-119212] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:41:55.572 [DEBUG] [Thread-119212] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:41:55.572 [DEBUG] [Thread-119212] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:41:55.613 [DEBUG] [Thread-119212] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:41:55.613 [DEBUG] [Thread-119212] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:41:55.615 [DEBUG] [Thread-119212] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:41:55.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:41:55.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:41:55.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:41:55.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:41:55.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:41:55.633 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:41:55.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:41:55.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:41:55.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:41:55.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.611908 -999.00  +25.40  37.48      7  -11.60 1 1 2 1 1   887    0 39.85 59.84 ----- 39.3 37.5 314.2 47.6 28.6 -34.7 28.6 -33.3 29.6 -34.0 30.0 -33.0
2025-11-03T16:41:55.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:41:55.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:41:55.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.611908
2025-11-03T16:41:55.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:41:55.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:41:55.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:41:55.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:41:55.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:41:55.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:41:20', tmtdew=48.9, humidity=3.02, cloud=0.0, wind=36.98, temperature=26.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:41:08.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:41:55.634 [DEBUG] [Thread-119212] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:41:55.713 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:41:55.732 [DEBUG] [Thread-119215] [transport.py] [_log()] starting thread (client mode): 0x11762980
2025-11-03T16:41:55.732 [DEBUG] [Thread-119215] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:41:55.747 [DEBUG] [Thread-119215] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:41:55.747 [INFO] [Thread-119215] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:41:55.754 [DEBUG] [Thread-119215] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:41:55.754 [DEBUG] [Thread-119215] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:41:55.754 [DEBUG] [Thread-119215] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:41:55.754 [DEBUG] [Thread-119215] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:41:55.754 [DEBUG] [Thread-119215] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:41:55.754 [DEBUG] [Thread-119215] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:41:55.754 [DEBUG] [Thread-119215] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:41:55.754 [DEBUG] [Thread-119215] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:41:55.754 [DEBUG] [Thread-119215] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:41:55.754 [DEBUG] [Thread-119215] [transport.py] [_log()] client lang: <none>
2025-11-03T16:41:55.754 [DEBUG] [Thread-119215] [transport.py] [_log()] server lang: <none>
2025-11-03T16:41:55.754 [DEBUG] [Thread-119215] [transport.py] [_log()] kex follows: False
2025-11-03T16:41:55.754 [DEBUG] [Thread-119215] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:41:55.754 [DEBUG] [Thread-119215] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:41:55.754 [DEBUG] [Thread-119215] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:41:55.754 [DEBUG] [Thread-119215] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:41:55.754 [DEBUG] [Thread-119215] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:41:55.754 [DEBUG] [Thread-119215] [transport.py] [_log()] Compression: none
2025-11-03T16:41:55.754 [DEBUG] [Thread-119215] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:41:55.812 [DEBUG] [Thread-119215] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:41:55.812 [DEBUG] [Thread-119215] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:41:55.812 [DEBUG] [Thread-119215] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:41:55.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:41:55.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:41:55.870 [DEBUG] [Thread-119215] [transport.py] [_log()] userauth is OK
2025-11-03T16:41:55.870 [DEBUG] [Thread-119215] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:41:55.870 [DEBUG] [Thread-119215] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:41:55.870 [DEBUG] [Thread-119215] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:41:55.870 [DEBUG] [Thread-119215] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:41:55.884 [INFO] [Thread-119215] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:41:55.884 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:41:55.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:41:56.729 [DEBUG] [Thread-119215] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:41:56.730 [DEBUG] [Thread-119215] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:41:56.777 [DEBUG] [Thread-119215] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:41:56.777 [DEBUG] [Thread-119215] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:41:56.786 [DEBUG] [Thread-119215] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:41:56.794 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:41:56.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:41:56.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:41:56.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:41:56.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:41:56.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:41:56.817 [DEBUG] [Thread-119215] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:41:57.345 [DEBUG] [Thread-119217 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:42:12.400 [DEBUG] [Thread-119218 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:42:16.694 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:42:16.695 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:42:25.581 [DEBUG] [Thread-119219 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:42:26.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:42:26.839 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:42:26.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:42:27.440 [DEBUG] [Thread-119220 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:42:27.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 41, 52), 48.37, 3.09, 0.0, 38.13, 26.09, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:42:27.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:41:52
2025-11-03T16:42:27.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:42:27.940 [DEBUG] [Thread-119221] [transport.py] [_log()] starting thread (client mode): 0xed4c370
2025-11-03T16:42:27.940 [DEBUG] [Thread-119221] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:42:27.959 [DEBUG] [Thread-119221] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:42:27.959 [INFO] [Thread-119221] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:42:27.963 [DEBUG] [Thread-119221] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:42:27.963 [DEBUG] [Thread-119221] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:42:27.963 [DEBUG] [Thread-119221] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:42:27.963 [DEBUG] [Thread-119221] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:42:27.963 [DEBUG] [Thread-119221] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:42:27.963 [DEBUG] [Thread-119221] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:42:27.963 [DEBUG] [Thread-119221] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:42:27.963 [DEBUG] [Thread-119221] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:42:27.963 [DEBUG] [Thread-119221] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:42:27.963 [DEBUG] [Thread-119221] [transport.py] [_log()] client lang: <none>
2025-11-03T16:42:27.963 [DEBUG] [Thread-119221] [transport.py] [_log()] server lang: <none>
2025-11-03T16:42:27.963 [DEBUG] [Thread-119221] [transport.py] [_log()] kex follows: False
2025-11-03T16:42:27.963 [DEBUG] [Thread-119221] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:42:27.963 [DEBUG] [Thread-119221] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:42:27.963 [DEBUG] [Thread-119221] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:42:27.963 [DEBUG] [Thread-119221] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:42:27.963 [DEBUG] [Thread-119221] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:42:27.963 [DEBUG] [Thread-119221] [transport.py] [_log()] Compression: none
2025-11-03T16:42:27.963 [DEBUG] [Thread-119221] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:42:27.976 [DEBUG] [Thread-119221] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:42:27.977 [DEBUG] [Thread-119221] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:42:27.977 [DEBUG] [Thread-119221] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:42:27.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:42:27.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:42:28.021 [DEBUG] [Thread-119221] [transport.py] [_log()] userauth is OK
2025-11-03T16:42:28.021 [DEBUG] [Thread-119221] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:42:28.021 [DEBUG] [Thread-119221] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:42:28.021 [DEBUG] [Thread-119221] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:42:28.021 [DEBUG] [Thread-119221] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:42:28.037 [INFO] [Thread-119221] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:42:28.037 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:42:28.671 [DEBUG] [Thread-119221] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:42:28.672 [DEBUG] [Thread-119221] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:42:28.672 [DEBUG] [Thread-119221] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:42:28.713 [DEBUG] [Thread-119221] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:42:28.713 [DEBUG] [Thread-119221] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:42:28.715 [DEBUG] [Thread-119221] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:42:28.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:42:28.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:42:28.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:42:28.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:42:28.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:42:28.736 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:42:28.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:42:28.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:42:28.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:42:28.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.612255 -999.00  +25.30  30.91      7  -11.40 1 1 2 1 1   887    0 40.08 54.19 ----- 36.0 30.9 314.4 49.4 28.6 -34.0 28.5 -33.4 29.5 -32.2 29.9 -33.2
2025-11-03T16:42:28.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:42:28.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:42:28.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.612255
2025-11-03T16:42:28.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:42:28.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:42:28.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:42:28.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:42:28.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:42:28.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:41:52', tmtdew=48.37, humidity=3.09, cloud=0.0, wind=38.13, temperature=26.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:41:38.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:42:28.738 [DEBUG] [Thread-119221] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:42:28.809 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:42:28.827 [DEBUG] [Thread-119224] [transport.py] [_log()] starting thread (client mode): 0x11760730
2025-11-03T16:42:28.827 [DEBUG] [Thread-119224] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:42:28.842 [DEBUG] [Thread-119224] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:42:28.842 [INFO] [Thread-119224] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:42:28.850 [DEBUG] [Thread-119224] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:42:28.850 [DEBUG] [Thread-119224] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:42:28.850 [DEBUG] [Thread-119224] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:42:28.850 [DEBUG] [Thread-119224] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:42:28.850 [DEBUG] [Thread-119224] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:42:28.850 [DEBUG] [Thread-119224] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:42:28.850 [DEBUG] [Thread-119224] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:42:28.850 [DEBUG] [Thread-119224] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:42:28.850 [DEBUG] [Thread-119224] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:42:28.850 [DEBUG] [Thread-119224] [transport.py] [_log()] client lang: <none>
2025-11-03T16:42:28.850 [DEBUG] [Thread-119224] [transport.py] [_log()] server lang: <none>
2025-11-03T16:42:28.850 [DEBUG] [Thread-119224] [transport.py] [_log()] kex follows: False
2025-11-03T16:42:28.850 [DEBUG] [Thread-119224] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:42:28.850 [DEBUG] [Thread-119224] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:42:28.850 [DEBUG] [Thread-119224] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:42:28.850 [DEBUG] [Thread-119224] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:42:28.850 [DEBUG] [Thread-119224] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:42:28.850 [DEBUG] [Thread-119224] [transport.py] [_log()] Compression: none
2025-11-03T16:42:28.850 [DEBUG] [Thread-119224] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:42:28.913 [DEBUG] [Thread-119224] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:42:28.913 [DEBUG] [Thread-119224] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:42:28.913 [DEBUG] [Thread-119224] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:42:28.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:42:28.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:42:28.970 [DEBUG] [Thread-119224] [transport.py] [_log()] userauth is OK
2025-11-03T16:42:28.970 [DEBUG] [Thread-119224] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:42:28.970 [DEBUG] [Thread-119224] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:42:28.970 [DEBUG] [Thread-119224] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:42:28.970 [DEBUG] [Thread-119224] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:42:28.983 [INFO] [Thread-119224] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:42:28.984 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:42:28.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:42:29.810 [DEBUG] [Thread-119224] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:42:29.811 [DEBUG] [Thread-119224] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:42:29.859 [DEBUG] [Thread-119224] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:42:29.859 [DEBUG] [Thread-119224] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:42:29.868 [DEBUG] [Thread-119224] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:42:29.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:42:29.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:42:29.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:42:29.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:42:29.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:42:29.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:42:29.902 [DEBUG] [Thread-119224] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:42:42.479 [DEBUG] [Thread-119226 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:42:57.554 [DEBUG] [Thread-119227 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:42:59.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:42:59.925 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:42:59.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:43:00.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 42, 25), 48.3, 3.09, 0.0, 33.61, 25.87, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:43:00.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:42:25
2025-11-03T16:43:00.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:43:01.024 [DEBUG] [Thread-119228] [transport.py] [_log()] starting thread (client mode): 0xed217b0
2025-11-03T16:43:01.024 [DEBUG] [Thread-119228] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:43:01.040 [DEBUG] [Thread-119228] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:43:01.040 [INFO] [Thread-119228] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:43:01.044 [DEBUG] [Thread-119228] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:43:01.044 [DEBUG] [Thread-119228] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:43:01.044 [DEBUG] [Thread-119228] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:43:01.044 [DEBUG] [Thread-119228] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:43:01.044 [DEBUG] [Thread-119228] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:43:01.044 [DEBUG] [Thread-119228] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:43:01.044 [DEBUG] [Thread-119228] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:43:01.044 [DEBUG] [Thread-119228] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:43:01.044 [DEBUG] [Thread-119228] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:43:01.045 [DEBUG] [Thread-119228] [transport.py] [_log()] client lang: <none>
2025-11-03T16:43:01.045 [DEBUG] [Thread-119228] [transport.py] [_log()] server lang: <none>
2025-11-03T16:43:01.045 [DEBUG] [Thread-119228] [transport.py] [_log()] kex follows: False
2025-11-03T16:43:01.045 [DEBUG] [Thread-119228] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:43:01.045 [DEBUG] [Thread-119228] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:43:01.045 [DEBUG] [Thread-119228] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:43:01.045 [DEBUG] [Thread-119228] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:43:01.045 [DEBUG] [Thread-119228] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:43:01.045 [DEBUG] [Thread-119228] [transport.py] [_log()] Compression: none
2025-11-03T16:43:01.045 [DEBUG] [Thread-119228] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:43:01.063 [DEBUG] [Thread-119228] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:43:01.064 [DEBUG] [Thread-119228] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:43:01.064 [DEBUG] [Thread-119228] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:43:01.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:43:01.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:43:01.066 [DEBUG] [Thread-119228] [transport.py] [_log()] userauth is OK
2025-11-03T16:43:01.066 [DEBUG] [Thread-119228] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:43:01.066 [DEBUG] [Thread-119228] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:43:01.067 [DEBUG] [Thread-119228] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:43:01.067 [DEBUG] [Thread-119228] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:43:01.090 [INFO] [Thread-119228] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:43:01.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:43:01.892 [DEBUG] [Thread-119228] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:43:01.892 [DEBUG] [Thread-119228] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:43:01.892 [DEBUG] [Thread-119228] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:43:01.933 [DEBUG] [Thread-119228] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:43:01.933 [DEBUG] [Thread-119228] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:43:01.937 [DEBUG] [Thread-119228] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:43:01.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:43:01.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:43:01.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:43:01.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:43:01.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:43:01.962 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:43:01.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:43:01.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:43:01.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:43:01.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.612602 -999.00  +25.20  28.44      8  -11.40 1 1 1 1 1   887    0 40.00 43.82 ----- 26.2 28.4 307.9 37.9 28.6 -34.3 28.6 -33.2 29.5 -35.2 29.9 -32.5
2025-11-03T16:43:01.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:43:01.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:43:01.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.612602
2025-11-03T16:43:01.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:43:01.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:43:01.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:43:01.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:43:01.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:43:01.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:42:25', tmtdew=48.3, humidity=3.09, cloud=0.0, wind=33.61, temperature=25.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:42:08.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:43:01.966 [DEBUG] [Thread-119228] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:43:02.048 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:43:02.068 [DEBUG] [Thread-119231] [transport.py] [_log()] starting thread (client mode): 0x117bd4e0
2025-11-03T16:43:02.069 [DEBUG] [Thread-119231] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:43:02.084 [DEBUG] [Thread-119231] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:43:02.084 [INFO] [Thread-119231] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:43:02.092 [DEBUG] [Thread-119231] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:43:02.092 [DEBUG] [Thread-119231] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:43:02.092 [DEBUG] [Thread-119231] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:43:02.092 [DEBUG] [Thread-119231] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:43:02.092 [DEBUG] [Thread-119231] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:43:02.092 [DEBUG] [Thread-119231] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:43:02.092 [DEBUG] [Thread-119231] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:43:02.092 [DEBUG] [Thread-119231] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:43:02.092 [DEBUG] [Thread-119231] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:43:02.092 [DEBUG] [Thread-119231] [transport.py] [_log()] client lang: <none>
2025-11-03T16:43:02.092 [DEBUG] [Thread-119231] [transport.py] [_log()] server lang: <none>
2025-11-03T16:43:02.092 [DEBUG] [Thread-119231] [transport.py] [_log()] kex follows: False
2025-11-03T16:43:02.092 [DEBUG] [Thread-119231] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:43:02.092 [DEBUG] [Thread-119231] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:43:02.092 [DEBUG] [Thread-119231] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:43:02.092 [DEBUG] [Thread-119231] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:43:02.092 [DEBUG] [Thread-119231] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:43:02.092 [DEBUG] [Thread-119231] [transport.py] [_log()] Compression: none
2025-11-03T16:43:02.092 [DEBUG] [Thread-119231] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:43:02.152 [DEBUG] [Thread-119231] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:43:02.153 [DEBUG] [Thread-119231] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:43:02.153 [DEBUG] [Thread-119231] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:43:02.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:43:02.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:43:02.210 [DEBUG] [Thread-119231] [transport.py] [_log()] userauth is OK
2025-11-03T16:43:02.210 [DEBUG] [Thread-119231] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:43:02.210 [DEBUG] [Thread-119231] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:43:02.210 [DEBUG] [Thread-119231] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:43:02.210 [DEBUG] [Thread-119231] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:43:02.224 [INFO] [Thread-119231] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:43:02.224 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:43:02.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:43:03.076 [DEBUG] [Thread-119231] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:43:03.076 [DEBUG] [Thread-119231] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:43:03.127 [DEBUG] [Thread-119231] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:43:03.127 [DEBUG] [Thread-119231] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:43:03.136 [DEBUG] [Thread-119231] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:43:03.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:43:03.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:43:03.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:43:03.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:43:03.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:43:03.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:43:03.174 [DEBUG] [Thread-119231] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:43:12.593 [DEBUG] [Thread-119233 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:43:16.836 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:43:16.837 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:43:25.611 [DEBUG] [Thread-119234 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:43:27.641 [DEBUG] [Thread-119235 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:43:33.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:43:33.197 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:43:33.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:43:33.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 43, 30), 47.86, 3.12, 0.0, 23.7, 25.7, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:43:33.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:43:30
2025-11-03T16:43:34.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:43:34.284 [DEBUG] [Thread-119236] [transport.py] [_log()] starting thread (client mode): 0xed21840
2025-11-03T16:43:34.284 [DEBUG] [Thread-119236] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:43:34.304 [DEBUG] [Thread-119236] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:43:34.304 [INFO] [Thread-119236] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:43:34.307 [DEBUG] [Thread-119236] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:43:34.308 [DEBUG] [Thread-119236] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:43:34.308 [DEBUG] [Thread-119236] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:43:34.308 [DEBUG] [Thread-119236] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:43:34.308 [DEBUG] [Thread-119236] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:43:34.308 [DEBUG] [Thread-119236] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:43:34.308 [DEBUG] [Thread-119236] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:43:34.308 [DEBUG] [Thread-119236] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:43:34.308 [DEBUG] [Thread-119236] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:43:34.309 [DEBUG] [Thread-119236] [transport.py] [_log()] client lang: <none>
2025-11-03T16:43:34.309 [DEBUG] [Thread-119236] [transport.py] [_log()] server lang: <none>
2025-11-03T16:43:34.309 [DEBUG] [Thread-119236] [transport.py] [_log()] kex follows: False
2025-11-03T16:43:34.309 [DEBUG] [Thread-119236] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:43:34.309 [DEBUG] [Thread-119236] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:43:34.309 [DEBUG] [Thread-119236] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:43:34.309 [DEBUG] [Thread-119236] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:43:34.310 [DEBUG] [Thread-119236] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:43:34.310 [DEBUG] [Thread-119236] [transport.py] [_log()] Compression: none
2025-11-03T16:43:34.310 [DEBUG] [Thread-119236] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:43:34.331 [DEBUG] [Thread-119236] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:43:34.331 [DEBUG] [Thread-119236] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:43:34.332 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:43:34.332 [DEBUG] [Thread-119236] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:43:34.342 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:43:34.343 [DEBUG] [Thread-119236] [transport.py] [_log()] userauth is OK
2025-11-03T16:43:34.344 [DEBUG] [Thread-119236] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:43:34.344 [DEBUG] [Thread-119236] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:43:34.344 [DEBUG] [Thread-119236] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:43:34.344 [DEBUG] [Thread-119236] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:43:34.368 [INFO] [Thread-119236] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:43:34.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:43:34.988 [DEBUG] [Thread-119236] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:43:34.988 [DEBUG] [Thread-119236] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:43:34.988 [DEBUG] [Thread-119236] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:43:35.028 [DEBUG] [Thread-119236] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:43:35.028 [DEBUG] [Thread-119236] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:43:35.031 [DEBUG] [Thread-119236] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:43:35.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:43:35.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:43:35.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:43:35.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:43:35.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:43:35.051 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:43:35.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:43:35.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:43:35.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:43:35.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.612950 -999.00  +25.40  26.81      7  -11.30 1 1 1 1 1   887    0 37.77 34.13 ----- 26.6 26.8 306.4 36.3 28.6 -33.9 28.5 -32.9 29.4 -32.5 29.9 -32.6
2025-11-03T16:43:35.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:43:35.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:43:35.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.612950
2025-11-03T16:43:35.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:43:35.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:43:35.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:43:35.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:43:35.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:43:35.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:43:30', tmtdew=47.86, humidity=3.12, cloud=0.0, wind=23.7, temperature=25.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:42:38.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:43:35.052 [DEBUG] [Thread-119236] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:43:35.124 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:43:35.143 [DEBUG] [Thread-119239] [transport.py] [_log()] starting thread (client mode): 0x117613f0
2025-11-03T16:43:35.143 [DEBUG] [Thread-119239] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:43:35.158 [DEBUG] [Thread-119239] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:43:35.158 [INFO] [Thread-119239] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:43:35.166 [DEBUG] [Thread-119239] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:43:35.166 [DEBUG] [Thread-119239] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:43:35.166 [DEBUG] [Thread-119239] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:43:35.166 [DEBUG] [Thread-119239] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:43:35.166 [DEBUG] [Thread-119239] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:43:35.166 [DEBUG] [Thread-119239] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:43:35.166 [DEBUG] [Thread-119239] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:43:35.167 [DEBUG] [Thread-119239] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:43:35.167 [DEBUG] [Thread-119239] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:43:35.167 [DEBUG] [Thread-119239] [transport.py] [_log()] client lang: <none>
2025-11-03T16:43:35.167 [DEBUG] [Thread-119239] [transport.py] [_log()] server lang: <none>
2025-11-03T16:43:35.167 [DEBUG] [Thread-119239] [transport.py] [_log()] kex follows: False
2025-11-03T16:43:35.167 [DEBUG] [Thread-119239] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:43:35.167 [DEBUG] [Thread-119239] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:43:35.167 [DEBUG] [Thread-119239] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:43:35.167 [DEBUG] [Thread-119239] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:43:35.167 [DEBUG] [Thread-119239] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:43:35.167 [DEBUG] [Thread-119239] [transport.py] [_log()] Compression: none
2025-11-03T16:43:35.167 [DEBUG] [Thread-119239] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:43:35.224 [DEBUG] [Thread-119239] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:43:35.224 [DEBUG] [Thread-119239] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:43:35.224 [DEBUG] [Thread-119239] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:43:35.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:43:35.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:43:35.282 [DEBUG] [Thread-119239] [transport.py] [_log()] userauth is OK
2025-11-03T16:43:35.282 [DEBUG] [Thread-119239] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:43:35.282 [DEBUG] [Thread-119239] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:43:35.282 [DEBUG] [Thread-119239] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:43:35.282 [DEBUG] [Thread-119239] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:43:35.296 [INFO] [Thread-119239] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:43:35.296 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:43:35.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:43:36.120 [DEBUG] [Thread-119239] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:43:36.121 [DEBUG] [Thread-119239] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:43:36.160 [DEBUG] [Thread-119239] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:43:36.161 [DEBUG] [Thread-119239] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:43:36.170 [DEBUG] [Thread-119239] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:43:36.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:43:36.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:43:36.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:43:36.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:43:36.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:43:36.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:43:36.207 [DEBUG] [Thread-119239] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:43:42.687 [DEBUG] [Thread-119241 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:43:57.759 [DEBUG] [Thread-119242 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:44:06.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:44:06.221 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:44:06.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:44:06.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 44, 2), 47.84, 3.14, 0.0, 24.1, 25.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:44:06.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:44:02
2025-11-03T16:44:07.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:44:07.249 [DEBUG] [Thread-119243] [transport.py] [_log()] starting thread (client mode): 0x117606d0
2025-11-03T16:44:07.250 [DEBUG] [Thread-119243] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:44:07.269 [DEBUG] [Thread-119243] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:44:07.269 [INFO] [Thread-119243] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:44:07.270 [DEBUG] [Thread-119243] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:44:07.270 [DEBUG] [Thread-119243] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:44:07.270 [DEBUG] [Thread-119243] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:44:07.270 [DEBUG] [Thread-119243] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:44:07.270 [DEBUG] [Thread-119243] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:44:07.270 [DEBUG] [Thread-119243] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:44:07.270 [DEBUG] [Thread-119243] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:44:07.270 [DEBUG] [Thread-119243] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:44:07.270 [DEBUG] [Thread-119243] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:44:07.270 [DEBUG] [Thread-119243] [transport.py] [_log()] client lang: <none>
2025-11-03T16:44:07.270 [DEBUG] [Thread-119243] [transport.py] [_log()] server lang: <none>
2025-11-03T16:44:07.270 [DEBUG] [Thread-119243] [transport.py] [_log()] kex follows: False
2025-11-03T16:44:07.270 [DEBUG] [Thread-119243] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:44:07.270 [DEBUG] [Thread-119243] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:44:07.270 [DEBUG] [Thread-119243] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:44:07.270 [DEBUG] [Thread-119243] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:44:07.271 [DEBUG] [Thread-119243] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:44:07.271 [DEBUG] [Thread-119243] [transport.py] [_log()] Compression: none
2025-11-03T16:44:07.271 [DEBUG] [Thread-119243] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:44:07.286 [DEBUG] [Thread-119243] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:44:07.286 [DEBUG] [Thread-119243] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:44:07.286 [DEBUG] [Thread-119243] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:44:07.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:44:07.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:44:07.287 [DEBUG] [Thread-119243] [transport.py] [_log()] userauth is OK
2025-11-03T16:44:07.287 [DEBUG] [Thread-119243] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:44:07.287 [DEBUG] [Thread-119243] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:44:07.287 [DEBUG] [Thread-119243] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:44:07.287 [DEBUG] [Thread-119243] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:44:07.296 [INFO] [Thread-119243] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:44:07.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:44:08.103 [DEBUG] [Thread-119243] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:44:08.104 [DEBUG] [Thread-119243] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:44:08.104 [DEBUG] [Thread-119243] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:44:08.145 [DEBUG] [Thread-119243] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:44:08.145 [DEBUG] [Thread-119243] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:44:08.149 [DEBUG] [Thread-119243] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:44:08.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:44:08.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:44:08.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:44:08.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:44:08.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:44:08.177 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:44:08.177 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:44:08.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:44:08.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:44:08.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.613297 -999.00  +25.50  17.26      7  -11.60 1 1 1 1 1   887    0 39.30 22.70 ----- 13.7 17.3 315.2 32.5 28.6 -33.5 28.4 -32.7 29.4 -33.4 30.0 -32.6
2025-11-03T16:44:08.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:44:08.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:44:08.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.613297
2025-11-03T16:44:08.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:44:08.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:44:08.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:44:08.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:44:08.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:44:08.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:44:02', tmtdew=47.84, humidity=3.14, cloud=0.0, wind=24.1, temperature=25.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:43:08.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:44:08.181 [DEBUG] [Thread-119243] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:44:08.263 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:44:08.284 [DEBUG] [Thread-119246] [transport.py] [_log()] starting thread (client mode): 0x11761330
2025-11-03T16:44:08.284 [DEBUG] [Thread-119246] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:44:08.299 [DEBUG] [Thread-119246] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:44:08.299 [INFO] [Thread-119246] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:44:08.309 [DEBUG] [Thread-119246] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:44:08.309 [DEBUG] [Thread-119246] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:44:08.309 [DEBUG] [Thread-119246] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:44:08.309 [DEBUG] [Thread-119246] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:44:08.309 [DEBUG] [Thread-119246] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:44:08.310 [DEBUG] [Thread-119246] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:44:08.310 [DEBUG] [Thread-119246] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:44:08.310 [DEBUG] [Thread-119246] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:44:08.310 [DEBUG] [Thread-119246] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:44:08.310 [DEBUG] [Thread-119246] [transport.py] [_log()] client lang: <none>
2025-11-03T16:44:08.310 [DEBUG] [Thread-119246] [transport.py] [_log()] server lang: <none>
2025-11-03T16:44:08.310 [DEBUG] [Thread-119246] [transport.py] [_log()] kex follows: False
2025-11-03T16:44:08.310 [DEBUG] [Thread-119246] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:44:08.310 [DEBUG] [Thread-119246] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:44:08.310 [DEBUG] [Thread-119246] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:44:08.310 [DEBUG] [Thread-119246] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:44:08.310 [DEBUG] [Thread-119246] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:44:08.310 [DEBUG] [Thread-119246] [transport.py] [_log()] Compression: none
2025-11-03T16:44:08.310 [DEBUG] [Thread-119246] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:44:08.374 [DEBUG] [Thread-119246] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:44:08.375 [DEBUG] [Thread-119246] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:44:08.375 [DEBUG] [Thread-119246] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:44:08.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:44:08.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:44:08.430 [DEBUG] [Thread-119246] [transport.py] [_log()] userauth is OK
2025-11-03T16:44:08.430 [DEBUG] [Thread-119246] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:44:08.431 [DEBUG] [Thread-119246] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:44:08.431 [DEBUG] [Thread-119246] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:44:08.431 [DEBUG] [Thread-119246] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:44:08.450 [INFO] [Thread-119246] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:44:08.451 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:44:08.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:44:09.339 [DEBUG] [Thread-119246] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:44:09.340 [DEBUG] [Thread-119246] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:44:09.388 [DEBUG] [Thread-119246] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:44:09.389 [DEBUG] [Thread-119246] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:44:09.398 [DEBUG] [Thread-119246] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:44:09.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:44:09.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:44:09.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:44:09.426 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:44:09.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:44:09.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:44:09.436 [DEBUG] [Thread-119246] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:44:12.802 [DEBUG] [Thread-119248 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:44:16.977 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:44:16.979 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:44:25.655 [DEBUG] [Thread-119249 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:44:27.868 [DEBUG] [Thread-119250 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:44:39.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:44:39.458 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:44:39.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:44:40.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 44, 34), 47.75, 3.14, 0.0, 28.36, 25.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:44:40.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:44:34
2025-11-03T16:44:40.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:44:40.425 [DEBUG] [Thread-119251] [transport.py] [_log()] starting thread (client mode): 0xed21330
2025-11-03T16:44:40.425 [DEBUG] [Thread-119251] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:44:40.445 [DEBUG] [Thread-119251] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:44:40.445 [INFO] [Thread-119251] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:44:40.448 [DEBUG] [Thread-119251] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:44:40.449 [DEBUG] [Thread-119251] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:44:40.449 [DEBUG] [Thread-119251] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:44:40.449 [DEBUG] [Thread-119251] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:44:40.449 [DEBUG] [Thread-119251] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:44:40.449 [DEBUG] [Thread-119251] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:44:40.449 [DEBUG] [Thread-119251] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:44:40.449 [DEBUG] [Thread-119251] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:44:40.449 [DEBUG] [Thread-119251] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:44:40.449 [DEBUG] [Thread-119251] [transport.py] [_log()] client lang: <none>
2025-11-03T16:44:40.449 [DEBUG] [Thread-119251] [transport.py] [_log()] server lang: <none>
2025-11-03T16:44:40.449 [DEBUG] [Thread-119251] [transport.py] [_log()] kex follows: False
2025-11-03T16:44:40.449 [DEBUG] [Thread-119251] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:44:40.450 [DEBUG] [Thread-119251] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:44:40.450 [DEBUG] [Thread-119251] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:44:40.450 [DEBUG] [Thread-119251] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:44:40.450 [DEBUG] [Thread-119251] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:44:40.450 [DEBUG] [Thread-119251] [transport.py] [_log()] Compression: none
2025-11-03T16:44:40.450 [DEBUG] [Thread-119251] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:44:40.469 [DEBUG] [Thread-119251] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:44:40.470 [DEBUG] [Thread-119251] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:44:40.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:44:40.471 [DEBUG] [Thread-119251] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:44:40.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:44:40.473 [DEBUG] [Thread-119251] [transport.py] [_log()] userauth is OK
2025-11-03T16:44:40.473 [DEBUG] [Thread-119251] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:44:40.473 [DEBUG] [Thread-119251] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:44:40.473 [DEBUG] [Thread-119251] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:44:40.473 [DEBUG] [Thread-119251] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:44:40.497 [INFO] [Thread-119251] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:44:40.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:44:41.152 [DEBUG] [Thread-119251] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:44:41.153 [DEBUG] [Thread-119251] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:44:41.153 [DEBUG] [Thread-119251] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:44:41.185 [DEBUG] [Thread-119251] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:44:41.185 [DEBUG] [Thread-119251] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:44:41.188 [DEBUG] [Thread-119251] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:44:41.202 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:44:41.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:44:41.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:44:41.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:44:41.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:44:41.216 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:44:41.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:44:41.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:44:41.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:44:41.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.613991 -999.00  +25.60  25.29      7  -11.20 1 1 1 1 1   887    0 37.88 12.65 ----- 25.8 25.3 310.2 28.1 28.6 -33.9 28.5 -32.4 29.6 -31.7 30.1 -32.6
2025-11-03T16:44:41.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:44:41.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:44:41.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.613991
2025-11-03T16:44:41.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:44:41.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:44:41.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:44:41.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:44:41.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:44:41.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:44:34', tmtdew=47.75, humidity=3.14, cloud=0.0, wind=28.36, temperature=25.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:44:08.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:44:41.219 [DEBUG] [Thread-119251] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:44:41.303 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:44:41.324 [DEBUG] [Thread-119254] [transport.py] [_log()] starting thread (client mode): 0x117bf5b0
2025-11-03T16:44:41.325 [DEBUG] [Thread-119254] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:44:41.337 [DEBUG] [Thread-119254] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:44:41.338 [INFO] [Thread-119254] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:44:41.345 [DEBUG] [Thread-119254] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:44:41.346 [DEBUG] [Thread-119254] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:44:41.346 [DEBUG] [Thread-119254] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:44:41.346 [DEBUG] [Thread-119254] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:44:41.347 [DEBUG] [Thread-119254] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:44:41.347 [DEBUG] [Thread-119254] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:44:41.347 [DEBUG] [Thread-119254] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:44:41.347 [DEBUG] [Thread-119254] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:44:41.347 [DEBUG] [Thread-119254] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:44:41.347 [DEBUG] [Thread-119254] [transport.py] [_log()] client lang: <none>
2025-11-03T16:44:41.347 [DEBUG] [Thread-119254] [transport.py] [_log()] server lang: <none>
2025-11-03T16:44:41.347 [DEBUG] [Thread-119254] [transport.py] [_log()] kex follows: False
2025-11-03T16:44:41.347 [DEBUG] [Thread-119254] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:44:41.347 [DEBUG] [Thread-119254] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:44:41.347 [DEBUG] [Thread-119254] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:44:41.347 [DEBUG] [Thread-119254] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:44:41.348 [DEBUG] [Thread-119254] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:44:41.348 [DEBUG] [Thread-119254] [transport.py] [_log()] Compression: none
2025-11-03T16:44:41.348 [DEBUG] [Thread-119254] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:44:41.406 [DEBUG] [Thread-119254] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:44:41.407 [DEBUG] [Thread-119254] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:44:41.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:44:41.408 [DEBUG] [Thread-119254] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:44:41.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:44:41.462 [DEBUG] [Thread-119254] [transport.py] [_log()] userauth is OK
2025-11-03T16:44:41.462 [DEBUG] [Thread-119254] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:44:41.463 [DEBUG] [Thread-119254] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:44:41.463 [DEBUG] [Thread-119254] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:44:41.463 [DEBUG] [Thread-119254] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:44:41.482 [INFO] [Thread-119254] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:44:41.482 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:44:41.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:44:42.317 [DEBUG] [Thread-119254] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:44:42.317 [DEBUG] [Thread-119254] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:44:42.365 [DEBUG] [Thread-119254] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:44:42.365 [DEBUG] [Thread-119254] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:44:42.374 [DEBUG] [Thread-119254] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:44:42.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:44:42.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:44:42.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:44:42.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:44:42.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:44:42.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:44:42.406 [DEBUG] [Thread-119254] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:44:42.900 [DEBUG] [Thread-119256 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:44:57.981 [DEBUG] [Thread-119257 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:45:12.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:45:12.428 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:45:12.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:45:13.023 [DEBUG] [Thread-119258 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:45:13.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 45, 7), 47.77, 3.14, 0.0, 25.16, 25.87, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:45:13.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:45:07
2025-11-03T16:45:13.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:45:13.525 [DEBUG] [Thread-119259] [transport.py] [_log()] starting thread (client mode): 0x117bf5e0
2025-11-03T16:45:13.525 [DEBUG] [Thread-119259] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:45:13.544 [DEBUG] [Thread-119259] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:45:13.544 [INFO] [Thread-119259] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:45:13.548 [DEBUG] [Thread-119259] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:45:13.548 [DEBUG] [Thread-119259] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:45:13.548 [DEBUG] [Thread-119259] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:45:13.548 [DEBUG] [Thread-119259] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:45:13.548 [DEBUG] [Thread-119259] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:45:13.548 [DEBUG] [Thread-119259] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:45:13.548 [DEBUG] [Thread-119259] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:45:13.548 [DEBUG] [Thread-119259] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:45:13.548 [DEBUG] [Thread-119259] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:45:13.548 [DEBUG] [Thread-119259] [transport.py] [_log()] client lang: <none>
2025-11-03T16:45:13.548 [DEBUG] [Thread-119259] [transport.py] [_log()] server lang: <none>
2025-11-03T16:45:13.548 [DEBUG] [Thread-119259] [transport.py] [_log()] kex follows: False
2025-11-03T16:45:13.548 [DEBUG] [Thread-119259] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:45:13.548 [DEBUG] [Thread-119259] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:45:13.548 [DEBUG] [Thread-119259] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:45:13.548 [DEBUG] [Thread-119259] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:45:13.548 [DEBUG] [Thread-119259] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:45:13.548 [DEBUG] [Thread-119259] [transport.py] [_log()] Compression: none
2025-11-03T16:45:13.548 [DEBUG] [Thread-119259] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:45:13.564 [DEBUG] [Thread-119259] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:45:13.564 [DEBUG] [Thread-119259] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:45:13.564 [DEBUG] [Thread-119259] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:45:13.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:45:13.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:45:13.565 [DEBUG] [Thread-119259] [transport.py] [_log()] userauth is OK
2025-11-03T16:45:13.565 [DEBUG] [Thread-119259] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:45:13.565 [DEBUG] [Thread-119259] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:45:13.566 [DEBUG] [Thread-119259] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:45:13.566 [DEBUG] [Thread-119259] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:45:13.576 [INFO] [Thread-119259] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:45:13.576 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:45:17.135 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:45:17.137 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:45:20.311 [DEBUG] [Thread-119259] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:45:20.312 [DEBUG] [Thread-119259] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:45:20.312 [DEBUG] [Thread-119259] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:45:20.353 [DEBUG] [Thread-119259] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:45:20.353 [DEBUG] [Thread-119259] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:45:20.357 [DEBUG] [Thread-119259] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:45:20.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:45:20.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:45:20.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:45:20.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:45:20.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:45:20.588 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:45:20.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:45:20.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:45:20.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:45:20.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.614338 -999.00  +25.90  21.33      7  -11.00 1 1 1 1 1   887    0 37.58 11.70 ----- 25.0 21.3 312.0 26.2 28.7 -33.6 28.5 -33.0 29.6 -32.2 30.1 -32.4
2025-11-03T16:45:20.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:45:20.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:45:20.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.614338
2025-11-03T16:45:20.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:45:20.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:45:20.591 [DEBUG] [Thread-119259] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:45:20.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:45:20.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:45:20.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:45:20.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:45:07', tmtdew=47.77, humidity=3.14, cloud=0.0, wind=25.16, temperature=25.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:44:38.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:45:20.675 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:45:20.693 [DEBUG] [Thread-119262] [transport.py] [_log()] starting thread (client mode): 0xed20a90
2025-11-03T16:45:20.693 [DEBUG] [Thread-119262] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:45:20.708 [DEBUG] [Thread-119262] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:45:20.708 [INFO] [Thread-119262] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:45:20.716 [DEBUG] [Thread-119262] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:45:20.716 [DEBUG] [Thread-119262] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:45:20.716 [DEBUG] [Thread-119262] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:45:20.716 [DEBUG] [Thread-119262] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:45:20.717 [DEBUG] [Thread-119262] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:45:20.717 [DEBUG] [Thread-119262] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:45:20.717 [DEBUG] [Thread-119262] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:45:20.717 [DEBUG] [Thread-119262] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:45:20.717 [DEBUG] [Thread-119262] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:45:20.718 [DEBUG] [Thread-119262] [transport.py] [_log()] client lang: <none>
2025-11-03T16:45:20.718 [DEBUG] [Thread-119262] [transport.py] [_log()] server lang: <none>
2025-11-03T16:45:20.718 [DEBUG] [Thread-119262] [transport.py] [_log()] kex follows: False
2025-11-03T16:45:20.718 [DEBUG] [Thread-119262] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:45:20.718 [DEBUG] [Thread-119262] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:45:20.718 [DEBUG] [Thread-119262] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:45:20.718 [DEBUG] [Thread-119262] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:45:20.718 [DEBUG] [Thread-119262] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:45:20.718 [DEBUG] [Thread-119262] [transport.py] [_log()] Compression: none
2025-11-03T16:45:20.718 [DEBUG] [Thread-119262] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:45:20.774 [DEBUG] [Thread-119262] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:45:20.775 [DEBUG] [Thread-119262] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:45:20.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:45:20.776 [DEBUG] [Thread-119262] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:45:20.776 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:45:20.830 [DEBUG] [Thread-119262] [transport.py] [_log()] userauth is OK
2025-11-03T16:45:20.831 [DEBUG] [Thread-119262] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:45:20.831 [DEBUG] [Thread-119262] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:45:20.831 [DEBUG] [Thread-119262] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:45:20.831 [DEBUG] [Thread-119262] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:45:20.850 [INFO] [Thread-119262] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:45:20.851 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:45:20.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:45:21.636 [DEBUG] [Thread-119262] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:45:21.636 [DEBUG] [Thread-119262] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:45:21.684 [DEBUG] [Thread-119262] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:45:21.684 [DEBUG] [Thread-119262] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:45:21.693 [DEBUG] [Thread-119262] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:45:21.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:45:21.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:45:21.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:45:21.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:45:21.731 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:45:21.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:45:21.740 [DEBUG] [Thread-119262] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:45:25.836 [DEBUG] [Thread-119264 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:45:28.061 [DEBUG] [Thread-119265 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:45:43.113 [DEBUG] [Thread-119266 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:45:51.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:45:51.762 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:45:51.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:45:52.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 45, 39), 47.9, 3.14, 0.0, 30.49, 26.25, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:45:52.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:45:39
2025-11-03T16:45:52.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:45:52.894 [DEBUG] [Thread-119267] [transport.py] [_log()] starting thread (client mode): 0x117bceb0
2025-11-03T16:45:52.894 [DEBUG] [Thread-119267] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:45:52.913 [DEBUG] [Thread-119267] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:45:52.913 [INFO] [Thread-119267] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:45:52.914 [DEBUG] [Thread-119267] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:45:52.914 [DEBUG] [Thread-119267] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:45:52.915 [DEBUG] [Thread-119267] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:45:52.915 [DEBUG] [Thread-119267] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:45:52.915 [DEBUG] [Thread-119267] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:45:52.915 [DEBUG] [Thread-119267] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:45:52.915 [DEBUG] [Thread-119267] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:45:52.915 [DEBUG] [Thread-119267] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:45:52.915 [DEBUG] [Thread-119267] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:45:52.915 [DEBUG] [Thread-119267] [transport.py] [_log()] client lang: <none>
2025-11-03T16:45:52.915 [DEBUG] [Thread-119267] [transport.py] [_log()] server lang: <none>
2025-11-03T16:45:52.915 [DEBUG] [Thread-119267] [transport.py] [_log()] kex follows: False
2025-11-03T16:45:52.915 [DEBUG] [Thread-119267] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:45:52.915 [DEBUG] [Thread-119267] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:45:52.915 [DEBUG] [Thread-119267] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:45:52.915 [DEBUG] [Thread-119267] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:45:52.915 [DEBUG] [Thread-119267] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:45:52.915 [DEBUG] [Thread-119267] [transport.py] [_log()] Compression: none
2025-11-03T16:45:52.915 [DEBUG] [Thread-119267] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:45:52.931 [DEBUG] [Thread-119267] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:45:52.931 [DEBUG] [Thread-119267] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:45:52.931 [DEBUG] [Thread-119267] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:45:52.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:45:52.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:45:52.932 [DEBUG] [Thread-119267] [transport.py] [_log()] userauth is OK
2025-11-03T16:45:52.932 [DEBUG] [Thread-119267] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:45:52.932 [DEBUG] [Thread-119267] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:45:52.932 [DEBUG] [Thread-119267] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:45:52.932 [DEBUG] [Thread-119267] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:45:52.945 [INFO] [Thread-119267] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:45:52.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:45:53.547 [DEBUG] [Thread-119267] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:45:53.548 [DEBUG] [Thread-119267] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:45:53.548 [DEBUG] [Thread-119267] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:45:53.588 [DEBUG] [Thread-119267] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:45:53.589 [DEBUG] [Thread-119267] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:45:53.591 [DEBUG] [Thread-119267] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:45:53.603 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:45:53.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:45:53.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:45:53.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:45:53.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:45:53.608 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:45:53.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:45:53.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:45:53.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:45:53.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.614685 -999.00  +26.10  32.82      7  -10.80 1 1 2 1 1   887    0 37.87 10.64 ----- 35.1 32.8 305.0 36.2 28.8 -33.0 28.6 -32.2 29.7 -31.3 30.2 -32.2
2025-11-03T16:45:53.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:45:53.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:45:53.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.614685
2025-11-03T16:45:53.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:45:53.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:45:53.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:45:53.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:45:53.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:45:53.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:45:39', tmtdew=47.9, humidity=3.14, cloud=0.0, wind=30.49, temperature=26.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:45:08.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:45:53.610 [DEBUG] [Thread-119267] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:45:53.683 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:45:53.700 [DEBUG] [Thread-119270] [transport.py] [_log()] starting thread (client mode): 0xed8bcd0
2025-11-03T16:45:53.700 [DEBUG] [Thread-119270] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:45:53.716 [DEBUG] [Thread-119270] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:45:53.716 [INFO] [Thread-119270] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:45:53.723 [DEBUG] [Thread-119270] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:45:53.723 [DEBUG] [Thread-119270] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:45:53.723 [DEBUG] [Thread-119270] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:45:53.723 [DEBUG] [Thread-119270] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:45:53.723 [DEBUG] [Thread-119270] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:45:53.723 [DEBUG] [Thread-119270] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:45:53.723 [DEBUG] [Thread-119270] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:45:53.723 [DEBUG] [Thread-119270] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:45:53.723 [DEBUG] [Thread-119270] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:45:53.723 [DEBUG] [Thread-119270] [transport.py] [_log()] client lang: <none>
2025-11-03T16:45:53.723 [DEBUG] [Thread-119270] [transport.py] [_log()] server lang: <none>
2025-11-03T16:45:53.723 [DEBUG] [Thread-119270] [transport.py] [_log()] kex follows: False
2025-11-03T16:45:53.723 [DEBUG] [Thread-119270] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:45:53.724 [DEBUG] [Thread-119270] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:45:53.724 [DEBUG] [Thread-119270] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:45:53.724 [DEBUG] [Thread-119270] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:45:53.724 [DEBUG] [Thread-119270] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:45:53.724 [DEBUG] [Thread-119270] [transport.py] [_log()] Compression: none
2025-11-03T16:45:53.724 [DEBUG] [Thread-119270] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:45:53.780 [DEBUG] [Thread-119270] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:45:53.780 [DEBUG] [Thread-119270] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:45:53.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:45:53.781 [DEBUG] [Thread-119270] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:45:53.781 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:45:53.839 [DEBUG] [Thread-119270] [transport.py] [_log()] userauth is OK
2025-11-03T16:45:53.839 [DEBUG] [Thread-119270] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:45:53.839 [DEBUG] [Thread-119270] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:45:53.839 [DEBUG] [Thread-119270] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:45:53.839 [DEBUG] [Thread-119270] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:45:53.854 [INFO] [Thread-119270] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:45:53.854 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:45:53.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:45:54.690 [DEBUG] [Thread-119270] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:45:54.690 [DEBUG] [Thread-119270] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:45:54.739 [DEBUG] [Thread-119270] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:45:54.739 [DEBUG] [Thread-119270] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:45:54.747 [DEBUG] [Thread-119270] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:45:54.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:45:54.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:45:54.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:45:54.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:45:54.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:45:54.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:45:54.781 [DEBUG] [Thread-119270] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:45:58.152 [DEBUG] [Thread-119272 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:46:13.228 [DEBUG] [Thread-119273 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:46:17.285 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:46:17.286 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:46:24.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:46:24.804 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:46:24.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:46:25.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 46, 12), 48.1, 3.09, 0.0, 38.73, 26.34, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:46:25.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:46:12
2025-11-03T16:46:25.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:46:25.907 [DEBUG] [Thread-119274] [transport.py] [_log()] starting thread (client mode): 0xed21630
2025-11-03T16:46:25.907 [DEBUG] [Thread-119274] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:46:25.928 [DEBUG] [Thread-119274] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:46:25.928 [INFO] [Thread-119274] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:46:25.932 [DEBUG] [Thread-119274] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:46:25.932 [DEBUG] [Thread-119274] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:46:25.932 [DEBUG] [Thread-119274] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:46:25.932 [DEBUG] [Thread-119274] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:46:25.932 [DEBUG] [Thread-119274] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:46:25.932 [DEBUG] [Thread-119274] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:46:25.932 [DEBUG] [Thread-119274] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:46:25.932 [DEBUG] [Thread-119274] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:46:25.932 [DEBUG] [Thread-119274] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:46:25.932 [DEBUG] [Thread-119274] [transport.py] [_log()] client lang: <none>
2025-11-03T16:46:25.932 [DEBUG] [Thread-119274] [transport.py] [_log()] server lang: <none>
2025-11-03T16:46:25.932 [DEBUG] [Thread-119274] [transport.py] [_log()] kex follows: False
2025-11-03T16:46:25.932 [DEBUG] [Thread-119274] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:46:25.932 [DEBUG] [Thread-119274] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:46:25.932 [DEBUG] [Thread-119274] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:46:25.932 [DEBUG] [Thread-119274] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:46:25.932 [DEBUG] [Thread-119274] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:46:25.932 [DEBUG] [Thread-119274] [transport.py] [_log()] Compression: none
2025-11-03T16:46:25.932 [DEBUG] [Thread-119274] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:46:25.948 [DEBUG] [Thread-119274] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:46:25.948 [DEBUG] [Thread-119274] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:46:25.948 [DEBUG] [Thread-119274] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:46:25.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:46:25.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:46:25.949 [DEBUG] [Thread-119274] [transport.py] [_log()] userauth is OK
2025-11-03T16:46:25.950 [DEBUG] [Thread-119274] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:46:25.950 [DEBUG] [Thread-119274] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:46:25.950 [DEBUG] [Thread-119274] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:46:25.950 [DEBUG] [Thread-119274] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:46:25.965 [INFO] [Thread-119274] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:46:25.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:46:25.976 [DEBUG] [Thread-119276 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:46:26.721 [DEBUG] [Thread-119274] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:46:26.722 [DEBUG] [Thread-119274] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:46:26.722 [DEBUG] [Thread-119274] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:46:26.762 [DEBUG] [Thread-119274] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:46:26.762 [DEBUG] [Thread-119274] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:46:26.765 [DEBUG] [Thread-119274] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:46:26.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:46:26.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:46:26.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:46:26.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:46:26.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:46:26.785 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:46:26.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:46:26.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:46:26.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:46:26.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.615033 -999.00  +26.20  30.82      7  -11.10 1 1 2 1 1   887    0 37.43 11.06 ----- 45.2 30.8 299.8 55.8 28.8 -33.4 28.7 -33.3 29.7 -33.0 30.2 -33.0
2025-11-03T16:46:26.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:46:26.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:46:26.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.615033
2025-11-03T16:46:26.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:46:26.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:46:26.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:46:26.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:46:26.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:46:26.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:46:12', tmtdew=48.1, humidity=3.09, cloud=0.0, wind=38.73, temperature=26.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:45:38.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:46:26.787 [DEBUG] [Thread-119274] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:46:26.857 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:46:26.878 [DEBUG] [Thread-119278] [transport.py] [_log()] starting thread (client mode): 0xed22140
2025-11-03T16:46:26.878 [DEBUG] [Thread-119278] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:46:26.893 [DEBUG] [Thread-119278] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:46:26.894 [INFO] [Thread-119278] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:46:26.904 [DEBUG] [Thread-119278] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:46:26.904 [DEBUG] [Thread-119278] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:46:26.904 [DEBUG] [Thread-119278] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:46:26.905 [DEBUG] [Thread-119278] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:46:26.905 [DEBUG] [Thread-119278] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:46:26.905 [DEBUG] [Thread-119278] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:46:26.905 [DEBUG] [Thread-119278] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:46:26.905 [DEBUG] [Thread-119278] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:46:26.905 [DEBUG] [Thread-119278] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:46:26.905 [DEBUG] [Thread-119278] [transport.py] [_log()] client lang: <none>
2025-11-03T16:46:26.905 [DEBUG] [Thread-119278] [transport.py] [_log()] server lang: <none>
2025-11-03T16:46:26.905 [DEBUG] [Thread-119278] [transport.py] [_log()] kex follows: False
2025-11-03T16:46:26.905 [DEBUG] [Thread-119278] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:46:26.905 [DEBUG] [Thread-119278] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:46:26.905 [DEBUG] [Thread-119278] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:46:26.905 [DEBUG] [Thread-119278] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:46:26.906 [DEBUG] [Thread-119278] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:46:26.906 [DEBUG] [Thread-119278] [transport.py] [_log()] Compression: none
2025-11-03T16:46:26.906 [DEBUG] [Thread-119278] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:46:26.968 [DEBUG] [Thread-119278] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:46:26.968 [DEBUG] [Thread-119278] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:46:26.968 [DEBUG] [Thread-119278] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:46:26.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:46:26.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:46:27.026 [DEBUG] [Thread-119278] [transport.py] [_log()] userauth is OK
2025-11-03T16:46:27.026 [DEBUG] [Thread-119278] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:46:27.026 [DEBUG] [Thread-119278] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:46:27.026 [DEBUG] [Thread-119278] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:46:27.026 [DEBUG] [Thread-119278] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:46:27.045 [INFO] [Thread-119278] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:46:27.046 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:46:27.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:46:27.863 [DEBUG] [Thread-119278] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:46:27.863 [DEBUG] [Thread-119278] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:46:27.910 [DEBUG] [Thread-119278] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:46:27.910 [DEBUG] [Thread-119278] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:46:27.919 [DEBUG] [Thread-119278] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:46:27.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:46:27.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:46:27.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:46:27.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:46:27.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:46:27.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:46:27.952 [DEBUG] [Thread-119278] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:46:28.267 [DEBUG] [Thread-119280 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:46:43.322 [DEBUG] [Thread-119281 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:46:57.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:46:57.975 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:46:57.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:46:58.365 [DEBUG] [Thread-119282 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:46:58.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 46, 44), 48.22, 3.1, 0.0, 34.09, 26.25, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:46:58.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:46:44
2025-11-03T16:46:58.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:46:59.061 [DEBUG] [Thread-119283] [transport.py] [_log()] starting thread (client mode): 0xed8af20
2025-11-03T16:46:59.061 [DEBUG] [Thread-119283] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:46:59.080 [DEBUG] [Thread-119283] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:46:59.081 [INFO] [Thread-119283] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:46:59.084 [DEBUG] [Thread-119283] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:46:59.084 [DEBUG] [Thread-119283] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:46:59.084 [DEBUG] [Thread-119283] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:46:59.084 [DEBUG] [Thread-119283] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:46:59.084 [DEBUG] [Thread-119283] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:46:59.085 [DEBUG] [Thread-119283] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:46:59.085 [DEBUG] [Thread-119283] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:46:59.085 [DEBUG] [Thread-119283] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:46:59.085 [DEBUG] [Thread-119283] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:46:59.085 [DEBUG] [Thread-119283] [transport.py] [_log()] client lang: <none>
2025-11-03T16:46:59.085 [DEBUG] [Thread-119283] [transport.py] [_log()] server lang: <none>
2025-11-03T16:46:59.085 [DEBUG] [Thread-119283] [transport.py] [_log()] kex follows: False
2025-11-03T16:46:59.085 [DEBUG] [Thread-119283] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:46:59.086 [DEBUG] [Thread-119283] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:46:59.086 [DEBUG] [Thread-119283] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:46:59.086 [DEBUG] [Thread-119283] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:46:59.086 [DEBUG] [Thread-119283] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:46:59.086 [DEBUG] [Thread-119283] [transport.py] [_log()] Compression: none
2025-11-03T16:46:59.086 [DEBUG] [Thread-119283] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:46:59.106 [DEBUG] [Thread-119283] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:46:59.106 [DEBUG] [Thread-119283] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:46:59.107 [DEBUG] [Thread-119283] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:46:59.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:46:59.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:46:59.109 [DEBUG] [Thread-119283] [transport.py] [_log()] userauth is OK
2025-11-03T16:46:59.110 [DEBUG] [Thread-119283] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:46:59.110 [DEBUG] [Thread-119283] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:46:59.110 [DEBUG] [Thread-119283] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:46:59.110 [DEBUG] [Thread-119283] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:46:59.136 [INFO] [Thread-119283] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:46:59.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:46:59.782 [DEBUG] [Thread-119283] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:46:59.782 [DEBUG] [Thread-119283] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:46:59.783 [DEBUG] [Thread-119283] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:46:59.823 [DEBUG] [Thread-119283] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:46:59.823 [DEBUG] [Thread-119283] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:46:59.825 [DEBUG] [Thread-119283] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:46:59.836 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:46:59.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:46:59.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:46:59.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:46:59.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:46:59.847 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:46:59.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:46:59.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:46:59.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:46:59.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.615380 -999.00  +26.20  40.24      7  -11.20 1 1 2 1 1   887    0 37.86 9.73 ----- 38.0 40.2 312.4 42.1 28.8 -33.5 28.7 -32.7 29.7 -32.0 30.2 -32.4
2025-11-03T16:46:59.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:46:59.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:46:59.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.615380
2025-11-03T16:46:59.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:46:59.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:46:59.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:46:59.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:46:59.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:46:59.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:46:44', tmtdew=48.22, humidity=3.1, cloud=0.0, wind=34.09, temperature=26.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:46:08.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:46:59.851 [DEBUG] [Thread-119283] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:46:59.935 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:46:59.953 [DEBUG] [Thread-119286] [transport.py] [_log()] starting thread (client mode): 0x141daef0
2025-11-03T16:46:59.953 [DEBUG] [Thread-119286] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:46:59.968 [DEBUG] [Thread-119286] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:46:59.968 [INFO] [Thread-119286] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:46:59.976 [DEBUG] [Thread-119286] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:46:59.976 [DEBUG] [Thread-119286] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:46:59.976 [DEBUG] [Thread-119286] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:46:59.976 [DEBUG] [Thread-119286] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:46:59.976 [DEBUG] [Thread-119286] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:46:59.976 [DEBUG] [Thread-119286] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:46:59.976 [DEBUG] [Thread-119286] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:46:59.976 [DEBUG] [Thread-119286] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:46:59.976 [DEBUG] [Thread-119286] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:46:59.976 [DEBUG] [Thread-119286] [transport.py] [_log()] client lang: <none>
2025-11-03T16:46:59.976 [DEBUG] [Thread-119286] [transport.py] [_log()] server lang: <none>
2025-11-03T16:46:59.977 [DEBUG] [Thread-119286] [transport.py] [_log()] kex follows: False
2025-11-03T16:46:59.977 [DEBUG] [Thread-119286] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:46:59.977 [DEBUG] [Thread-119286] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:46:59.977 [DEBUG] [Thread-119286] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:46:59.977 [DEBUG] [Thread-119286] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:46:59.977 [DEBUG] [Thread-119286] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:46:59.977 [DEBUG] [Thread-119286] [transport.py] [_log()] Compression: none
2025-11-03T16:46:59.977 [DEBUG] [Thread-119286] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:47:00.031 [DEBUG] [Thread-119286] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:47:00.031 [DEBUG] [Thread-119286] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:47:00.031 [DEBUG] [Thread-119286] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:47:00.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:47:00.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:47:00.092 [DEBUG] [Thread-119286] [transport.py] [_log()] userauth is OK
2025-11-03T16:47:00.092 [DEBUG] [Thread-119286] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:47:00.092 [DEBUG] [Thread-119286] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:47:00.092 [DEBUG] [Thread-119286] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:47:00.092 [DEBUG] [Thread-119286] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:47:00.106 [INFO] [Thread-119286] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:47:00.106 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:47:00.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:47:00.952 [DEBUG] [Thread-119286] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:47:00.953 [DEBUG] [Thread-119286] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:47:01.001 [DEBUG] [Thread-119286] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:47:01.001 [DEBUG] [Thread-119286] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:47:01.010 [DEBUG] [Thread-119286] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:47:01.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:47:01.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:47:01.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:47:01.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:47:01.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:47:01.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:47:01.047 [DEBUG] [Thread-119286] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:47:13.400 [DEBUG] [Thread-119288 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:47:17.428 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:47:17.428 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:47:26.015 [DEBUG] [Thread-119289 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:47:28.464 [DEBUG] [Thread-119290 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:47:31.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:47:31.048 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:47:31.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:47:31.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 47, 17), 48.31, 3.09, 0.0, 30.12, 26.35, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:47:31.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:47:17
2025-11-03T16:47:31.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:47:32.082 [DEBUG] [Thread-119291] [transport.py] [_log()] starting thread (client mode): 0x117e84c0
2025-11-03T16:47:32.082 [DEBUG] [Thread-119291] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:47:32.103 [DEBUG] [Thread-119291] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:47:32.103 [INFO] [Thread-119291] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:47:32.106 [DEBUG] [Thread-119291] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:47:32.106 [DEBUG] [Thread-119291] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:47:32.106 [DEBUG] [Thread-119291] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:47:32.106 [DEBUG] [Thread-119291] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:47:32.106 [DEBUG] [Thread-119291] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:47:32.107 [DEBUG] [Thread-119291] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:47:32.107 [DEBUG] [Thread-119291] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:47:32.107 [DEBUG] [Thread-119291] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:47:32.107 [DEBUG] [Thread-119291] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:47:32.107 [DEBUG] [Thread-119291] [transport.py] [_log()] client lang: <none>
2025-11-03T16:47:32.107 [DEBUG] [Thread-119291] [transport.py] [_log()] server lang: <none>
2025-11-03T16:47:32.107 [DEBUG] [Thread-119291] [transport.py] [_log()] kex follows: False
2025-11-03T16:47:32.107 [DEBUG] [Thread-119291] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:47:32.107 [DEBUG] [Thread-119291] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:47:32.107 [DEBUG] [Thread-119291] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:47:32.116 [DEBUG] [Thread-119291] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:47:32.116 [DEBUG] [Thread-119291] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:47:32.116 [DEBUG] [Thread-119291] [transport.py] [_log()] Compression: none
2025-11-03T16:47:32.116 [DEBUG] [Thread-119291] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:47:32.136 [DEBUG] [Thread-119291] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:47:32.137 [DEBUG] [Thread-119291] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:47:32.137 [DEBUG] [Thread-119291] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:47:32.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:47:32.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:47:32.139 [DEBUG] [Thread-119291] [transport.py] [_log()] userauth is OK
2025-11-03T16:47:32.139 [DEBUG] [Thread-119291] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:47:32.140 [DEBUG] [Thread-119291] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:47:32.140 [DEBUG] [Thread-119291] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:47:32.140 [DEBUG] [Thread-119291] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:47:32.164 [INFO] [Thread-119291] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:47:32.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:47:32.751 [DEBUG] [Thread-119291] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:47:32.751 [DEBUG] [Thread-119291] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:47:32.751 [DEBUG] [Thread-119291] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:47:32.792 [DEBUG] [Thread-119291] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:47:32.792 [DEBUG] [Thread-119291] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:47:32.795 [DEBUG] [Thread-119291] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:47:32.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:47:32.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:47:32.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:47:32.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:47:32.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:47:32.814 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:47:32.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:47:32.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:47:32.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:47:32.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.615727 -999.00  +26.20  31.94      7  -10.90 1 1 2 1 1   887    0 38.17 8.37 ----- 31.4 31.9 313.4 44.0 28.8 -33.5 28.8 -32.6 29.9 -32.3 30.2 -32.4
2025-11-03T16:47:32.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:47:32.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:47:32.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.615727
2025-11-03T16:47:32.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:47:32.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:47:32.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:47:32.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:47:32.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:47:32.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:47:17', tmtdew=48.31, humidity=3.09, cloud=0.0, wind=30.12, temperature=26.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:46:38.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:47:32.815 [DEBUG] [Thread-119291] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:47:32.886 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:47:43.512 [DEBUG] [Thread-119294 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:47:58.586 [DEBUG] [Thread-119295 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:48:13.628 [DEBUG] [Thread-119296 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:48:17.568 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:48:17.570 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:48:26.115 [DEBUG] [Thread-119297 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:48:28.660 [DEBUG] [Thread-119298 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:48:43.701 [DEBUG] [Thread-119299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:48:58.746 [DEBUG] [Thread-119300 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:49:13.794 [DEBUG] [Thread-119301 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:49:17.710 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:49:17.712 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:49:26.224 [DEBUG] [Thread-119302 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:49:28.840 [DEBUG] [Thread-119303 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:49:43.882 [DEBUG] [Thread-119304 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:49:45.056 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T16:49:58.922 [DEBUG] [Thread-119305 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:50:13.963 [DEBUG] [Thread-119306 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:50:15.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:50:15.080 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:50:15.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:50:15.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 49, 58), 48.0, 3.17, 0.0, 34.35, 26.5, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:50:15.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:49:58
2025-11-03T16:50:15.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:50:16.181 [DEBUG] [Thread-119307] [transport.py] [_log()] starting thread (client mode): 0x117e9000
2025-11-03T16:50:16.182 [DEBUG] [Thread-119307] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:50:16.195 [DEBUG] [Thread-119307] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:50:16.196 [INFO] [Thread-119307] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:50:16.209 [DEBUG] [Thread-119307] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:50:16.209 [DEBUG] [Thread-119307] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:50:16.210 [DEBUG] [Thread-119307] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:50:16.210 [DEBUG] [Thread-119307] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:50:16.210 [DEBUG] [Thread-119307] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:50:16.210 [DEBUG] [Thread-119307] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:50:16.210 [DEBUG] [Thread-119307] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:50:16.210 [DEBUG] [Thread-119307] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:50:16.210 [DEBUG] [Thread-119307] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:50:16.210 [DEBUG] [Thread-119307] [transport.py] [_log()] client lang: <none>
2025-11-03T16:50:16.210 [DEBUG] [Thread-119307] [transport.py] [_log()] server lang: <none>
2025-11-03T16:50:16.210 [DEBUG] [Thread-119307] [transport.py] [_log()] kex follows: False
2025-11-03T16:50:16.210 [DEBUG] [Thread-119307] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:50:16.211 [DEBUG] [Thread-119307] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:50:16.211 [DEBUG] [Thread-119307] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:50:16.211 [DEBUG] [Thread-119307] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:50:16.211 [DEBUG] [Thread-119307] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:50:16.211 [DEBUG] [Thread-119307] [transport.py] [_log()] Compression: none
2025-11-03T16:50:16.211 [DEBUG] [Thread-119307] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:50:16.245 [DEBUG] [Thread-119307] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:50:16.249 [DEBUG] [Thread-119307] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:50:16.250 [DEBUG] [Thread-119307] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:50:16.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:50:16.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:50:16.255 [DEBUG] [Thread-119307] [transport.py] [_log()] userauth is OK
2025-11-03T16:50:16.255 [DEBUG] [Thread-119307] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:50:16.255 [DEBUG] [Thread-119307] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:50:16.255 [DEBUG] [Thread-119307] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:50:16.255 [DEBUG] [Thread-119307] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:50:16.297 [INFO] [Thread-119307] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:50:16.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:50:17.476 [DEBUG] [Thread-119307] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:50:17.477 [DEBUG] [Thread-119307] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:50:17.477 [DEBUG] [Thread-119307] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:50:17.518 [DEBUG] [Thread-119307] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:50:17.518 [DEBUG] [Thread-119307] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:50:17.520 [DEBUG] [Thread-119307] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:50:17.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:50:17.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:50:17.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:50:17.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:50:17.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:50:17.622 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:50:17.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:50:17.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:50:17.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:50:17.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.617811 -999.00  +25.80  37.15      7  -11.20 1 1 2 1 1   887    0 37.42 5.03 ----- 32.4 37.1 311.2 45.2 28.7 -34.0 28.7 -33.0 29.8 -32.6 30.1 -33.1
2025-11-03T16:50:17.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:50:17.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:50:17.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.617811
2025-11-03T16:50:17.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:50:17.631 [DEBUG] [Thread-119307] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:50:17.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:50:17.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:50:17.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:50:17.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:50:17.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:49:58', tmtdew=48.0, humidity=3.17, cloud=0.0, wind=34.35, temperature=26.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:49:38.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:50:17.715 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:50:17.737 [DEBUG] [Thread-119310] [transport.py] [_log()] starting thread (client mode): 0x117bd3c0
2025-11-03T16:50:17.737 [DEBUG] [Thread-119310] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:50:17.753 [DEBUG] [Thread-119310] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:50:17.753 [INFO] [Thread-119310] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:50:17.761 [DEBUG] [Thread-119310] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:50:17.762 [DEBUG] [Thread-119310] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:50:17.762 [DEBUG] [Thread-119310] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:50:17.762 [DEBUG] [Thread-119310] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:50:17.762 [DEBUG] [Thread-119310] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:50:17.762 [DEBUG] [Thread-119310] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:50:17.762 [DEBUG] [Thread-119310] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:50:17.762 [DEBUG] [Thread-119310] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:50:17.762 [DEBUG] [Thread-119310] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:50:17.762 [DEBUG] [Thread-119310] [transport.py] [_log()] client lang: <none>
2025-11-03T16:50:17.762 [DEBUG] [Thread-119310] [transport.py] [_log()] server lang: <none>
2025-11-03T16:50:17.762 [DEBUG] [Thread-119310] [transport.py] [_log()] kex follows: False
2025-11-03T16:50:17.762 [DEBUG] [Thread-119310] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:50:17.762 [DEBUG] [Thread-119310] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:50:17.762 [DEBUG] [Thread-119310] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:50:17.762 [DEBUG] [Thread-119310] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:50:17.763 [DEBUG] [Thread-119310] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:50:17.763 [DEBUG] [Thread-119310] [transport.py] [_log()] Compression: none
2025-11-03T16:50:17.763 [DEBUG] [Thread-119310] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:50:17.821 [DEBUG] [Thread-119310] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:50:17.821 [DEBUG] [Thread-119310] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:50:17.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:50:17.822 [DEBUG] [Thread-119310] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:50:17.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:50:17.853 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:50:17.854 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:50:17.890 [DEBUG] [Thread-119310] [transport.py] [_log()] userauth is OK
2025-11-03T16:50:17.891 [DEBUG] [Thread-119310] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:50:17.891 [DEBUG] [Thread-119310] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:50:17.891 [DEBUG] [Thread-119310] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:50:17.891 [DEBUG] [Thread-119310] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:50:17.914 [INFO] [Thread-119310] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:50:17.914 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:50:17.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:50:18.828 [DEBUG] [Thread-119310] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:50:18.828 [DEBUG] [Thread-119310] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:50:18.867 [DEBUG] [Thread-119310] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:50:18.867 [DEBUG] [Thread-119310] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:50:18.876 [DEBUG] [Thread-119310] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:50:18.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:50:18.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:50:18.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:50:18.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:50:18.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:50:18.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:50:18.914 [DEBUG] [Thread-119310] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:50:26.352 [DEBUG] [Thread-119312 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:50:28.999 [DEBUG] [Thread-119313 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:50:44.106 [DEBUG] [Thread-119314 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:50:48.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:50:48.936 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:50:48.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:50:49.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 50, 31), 48.09, 3.15, 0.0, 33.33, 26.6, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:50:49.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:50:31
2025-11-03T16:50:49.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:50:50.009 [DEBUG] [Thread-119315] [transport.py] [_log()] starting thread (client mode): 0x11798be0
2025-11-03T16:50:50.009 [DEBUG] [Thread-119315] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:50:50.029 [DEBUG] [Thread-119315] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:50:50.029 [INFO] [Thread-119315] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:50:50.031 [DEBUG] [Thread-119315] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:50:50.032 [DEBUG] [Thread-119315] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:50:50.032 [DEBUG] [Thread-119315] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:50:50.032 [DEBUG] [Thread-119315] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:50:50.032 [DEBUG] [Thread-119315] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:50:50.032 [DEBUG] [Thread-119315] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:50:50.032 [DEBUG] [Thread-119315] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:50:50.032 [DEBUG] [Thread-119315] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:50:50.032 [DEBUG] [Thread-119315] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:50:50.032 [DEBUG] [Thread-119315] [transport.py] [_log()] client lang: <none>
2025-11-03T16:50:50.032 [DEBUG] [Thread-119315] [transport.py] [_log()] server lang: <none>
2025-11-03T16:50:50.032 [DEBUG] [Thread-119315] [transport.py] [_log()] kex follows: False
2025-11-03T16:50:50.032 [DEBUG] [Thread-119315] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:50:50.032 [DEBUG] [Thread-119315] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:50:50.032 [DEBUG] [Thread-119315] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:50:50.032 [DEBUG] [Thread-119315] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:50:50.032 [DEBUG] [Thread-119315] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:50:50.032 [DEBUG] [Thread-119315] [transport.py] [_log()] Compression: none
2025-11-03T16:50:50.032 [DEBUG] [Thread-119315] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:50:50.063 [DEBUG] [Thread-119315] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:50:50.064 [DEBUG] [Thread-119315] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:50:50.064 [DEBUG] [Thread-119315] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:50:50.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:50:50.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:50:50.069 [DEBUG] [Thread-119315] [transport.py] [_log()] userauth is OK
2025-11-03T16:50:50.069 [DEBUG] [Thread-119315] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:50:50.069 [DEBUG] [Thread-119315] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:50:50.069 [DEBUG] [Thread-119315] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:50:50.069 [DEBUG] [Thread-119315] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:50:50.105 [INFO] [Thread-119315] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:50:50.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:50:50.763 [DEBUG] [Thread-119315] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:50:50.763 [DEBUG] [Thread-119315] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:50:50.764 [DEBUG] [Thread-119315] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:50:50.804 [DEBUG] [Thread-119315] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:50:50.804 [DEBUG] [Thread-119315] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:50:50.807 [DEBUG] [Thread-119315] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:50:50.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:50:50.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:50:50.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:50:50.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:50:50.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:50:50.824 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:50:50.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:50:50.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:50:50.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:50:50.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.618158 -999.00  +25.60  29.40      7  -11.30 1 1 1 1 1   887    0 37.40 0.14 ----- 24.2 29.4 310.2 35.5 28.7 -34.4 28.6 -32.6 29.7 -32.0 30.1 -33.0
2025-11-03T16:50:50.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:50:50.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:50:50.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.618158
2025-11-03T16:50:50.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:50:50.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:50:50.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:50:50.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:50:50.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:50:50.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:50:31', tmtdew=48.09, humidity=3.15, cloud=0.0, wind=33.33, temperature=26.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:50:08.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:50:50.826 [DEBUG] [Thread-119315] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:50:50.897 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:50:50.917 [DEBUG] [Thread-119318] [transport.py] [_log()] starting thread (client mode): 0x117e9d80
2025-11-03T16:50:50.917 [DEBUG] [Thread-119318] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:50:50.932 [DEBUG] [Thread-119318] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:50:50.932 [INFO] [Thread-119318] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:50:50.939 [DEBUG] [Thread-119318] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:50:50.939 [DEBUG] [Thread-119318] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:50:50.940 [DEBUG] [Thread-119318] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:50:50.940 [DEBUG] [Thread-119318] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:50:50.940 [DEBUG] [Thread-119318] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:50:50.940 [DEBUG] [Thread-119318] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:50:50.940 [DEBUG] [Thread-119318] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:50:50.940 [DEBUG] [Thread-119318] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:50:50.940 [DEBUG] [Thread-119318] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:50:50.940 [DEBUG] [Thread-119318] [transport.py] [_log()] client lang: <none>
2025-11-03T16:50:50.940 [DEBUG] [Thread-119318] [transport.py] [_log()] server lang: <none>
2025-11-03T16:50:50.940 [DEBUG] [Thread-119318] [transport.py] [_log()] kex follows: False
2025-11-03T16:50:50.940 [DEBUG] [Thread-119318] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:50:50.940 [DEBUG] [Thread-119318] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:50:50.940 [DEBUG] [Thread-119318] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:50:50.940 [DEBUG] [Thread-119318] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:50:50.940 [DEBUG] [Thread-119318] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:50:50.940 [DEBUG] [Thread-119318] [transport.py] [_log()] Compression: none
2025-11-03T16:50:50.940 [DEBUG] [Thread-119318] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:50:50.996 [DEBUG] [Thread-119318] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:50:50.996 [DEBUG] [Thread-119318] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:50:50.996 [DEBUG] [Thread-119318] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:50:50.996 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:50:50.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:50:51.053 [DEBUG] [Thread-119318] [transport.py] [_log()] userauth is OK
2025-11-03T16:50:51.053 [DEBUG] [Thread-119318] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:50:51.053 [DEBUG] [Thread-119318] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:50:51.053 [DEBUG] [Thread-119318] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:50:51.053 [DEBUG] [Thread-119318] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:50:51.067 [INFO] [Thread-119318] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:50:51.067 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:50:51.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:50:51.877 [DEBUG] [Thread-119318] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:50:51.877 [DEBUG] [Thread-119318] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:50:51.925 [DEBUG] [Thread-119318] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:50:51.925 [DEBUG] [Thread-119318] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:50:51.934 [DEBUG] [Thread-119318] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:50:51.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:50:51.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:50:51.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:50:51.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:50:51.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:50:51.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:50:51.969 [DEBUG] [Thread-119318] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:50:59.152 [DEBUG] [Thread-119320 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:51:14.216 [DEBUG] [Thread-119321 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:51:17.993 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:51:17.994 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:51:21.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:51:21.992 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:51:21.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:51:22.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 51, 3), 48.02, 3.17, 0.0, 36.4, 26.57, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:51:22.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:51:03
2025-11-03T16:51:22.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:51:23.090 [DEBUG] [Thread-119322] [transport.py] [_log()] starting thread (client mode): 0x117eb580
2025-11-03T16:51:23.091 [DEBUG] [Thread-119322] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:51:23.111 [DEBUG] [Thread-119322] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:51:23.111 [INFO] [Thread-119322] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:51:23.115 [DEBUG] [Thread-119322] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:51:23.115 [DEBUG] [Thread-119322] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:51:23.115 [DEBUG] [Thread-119322] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:51:23.115 [DEBUG] [Thread-119322] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:51:23.115 [DEBUG] [Thread-119322] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:51:23.116 [DEBUG] [Thread-119322] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:51:23.116 [DEBUG] [Thread-119322] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:51:23.116 [DEBUG] [Thread-119322] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:51:23.116 [DEBUG] [Thread-119322] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:51:23.116 [DEBUG] [Thread-119322] [transport.py] [_log()] client lang: <none>
2025-11-03T16:51:23.116 [DEBUG] [Thread-119322] [transport.py] [_log()] server lang: <none>
2025-11-03T16:51:23.116 [DEBUG] [Thread-119322] [transport.py] [_log()] kex follows: False
2025-11-03T16:51:23.116 [DEBUG] [Thread-119322] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:51:23.116 [DEBUG] [Thread-119322] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:51:23.116 [DEBUG] [Thread-119322] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:51:23.116 [DEBUG] [Thread-119322] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:51:23.116 [DEBUG] [Thread-119322] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:51:23.116 [DEBUG] [Thread-119322] [transport.py] [_log()] Compression: none
2025-11-03T16:51:23.116 [DEBUG] [Thread-119322] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:51:23.135 [DEBUG] [Thread-119322] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:51:23.135 [DEBUG] [Thread-119322] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:51:23.136 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:51:23.136 [DEBUG] [Thread-119322] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:51:23.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:51:23.139 [DEBUG] [Thread-119322] [transport.py] [_log()] userauth is OK
2025-11-03T16:51:23.140 [DEBUG] [Thread-119322] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:51:23.140 [DEBUG] [Thread-119322] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:51:23.140 [DEBUG] [Thread-119322] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:51:23.140 [DEBUG] [Thread-119322] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:51:23.165 [INFO] [Thread-119322] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:51:23.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:51:23.773 [DEBUG] [Thread-119322] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:51:23.773 [DEBUG] [Thread-119322] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:51:23.773 [DEBUG] [Thread-119322] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:51:23.814 [DEBUG] [Thread-119322] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:51:23.814 [DEBUG] [Thread-119322] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:51:23.817 [DEBUG] [Thread-119322] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:51:23.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:51:23.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:51:23.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:51:23.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:51:23.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:51:23.836 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:51:23.836 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:51:23.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:51:23.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:51:23.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.618505 -999.00  +25.80  23.54      7  -11.00 1 1 1 1 1   887    0 37.40 -5.94 ----- 21.5 23.5 304.4 28.7 28.7 -33.7 28.7 -32.8 29.6 -33.2 30.1 -32.9
2025-11-03T16:51:23.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:51:23.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:51:23.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.618505
2025-11-03T16:51:23.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:51:23.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:51:23.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:51:23.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:51:23.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:51:23.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:51:03', tmtdew=48.02, humidity=3.17, cloud=0.0, wind=36.4, temperature=26.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:50:38.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:51:23.838 [DEBUG] [Thread-119322] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:51:23.909 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:51:23.931 [DEBUG] [Thread-119325] [transport.py] [_log()] starting thread (client mode): 0xed2c700
2025-11-03T16:51:23.932 [DEBUG] [Thread-119325] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:51:23.949 [DEBUG] [Thread-119325] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:51:23.949 [INFO] [Thread-119325] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:51:23.956 [DEBUG] [Thread-119325] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:51:23.956 [DEBUG] [Thread-119325] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:51:23.956 [DEBUG] [Thread-119325] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:51:23.956 [DEBUG] [Thread-119325] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:51:23.956 [DEBUG] [Thread-119325] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:51:23.956 [DEBUG] [Thread-119325] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:51:23.956 [DEBUG] [Thread-119325] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:51:23.956 [DEBUG] [Thread-119325] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:51:23.956 [DEBUG] [Thread-119325] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:51:23.956 [DEBUG] [Thread-119325] [transport.py] [_log()] client lang: <none>
2025-11-03T16:51:23.956 [DEBUG] [Thread-119325] [transport.py] [_log()] server lang: <none>
2025-11-03T16:51:23.956 [DEBUG] [Thread-119325] [transport.py] [_log()] kex follows: False
2025-11-03T16:51:23.956 [DEBUG] [Thread-119325] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:51:23.956 [DEBUG] [Thread-119325] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:51:23.956 [DEBUG] [Thread-119325] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:51:23.956 [DEBUG] [Thread-119325] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:51:23.956 [DEBUG] [Thread-119325] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:51:23.956 [DEBUG] [Thread-119325] [transport.py] [_log()] Compression: none
2025-11-03T16:51:23.956 [DEBUG] [Thread-119325] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:51:24.012 [DEBUG] [Thread-119325] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:51:24.012 [DEBUG] [Thread-119325] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:51:24.012 [DEBUG] [Thread-119325] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:51:24.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:51:24.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:51:24.070 [DEBUG] [Thread-119325] [transport.py] [_log()] userauth is OK
2025-11-03T16:51:24.070 [DEBUG] [Thread-119325] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:51:24.070 [DEBUG] [Thread-119325] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:51:24.070 [DEBUG] [Thread-119325] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:51:24.070 [DEBUG] [Thread-119325] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:51:24.084 [INFO] [Thread-119325] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:51:24.084 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:51:24.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:51:24.936 [DEBUG] [Thread-119325] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:51:24.936 [DEBUG] [Thread-119325] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:51:24.984 [DEBUG] [Thread-119325] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:51:24.984 [DEBUG] [Thread-119325] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:51:24.994 [DEBUG] [Thread-119325] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:51:25.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:51:25.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:51:25.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:51:25.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:51:25.022 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:51:25.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:51:25.031 [DEBUG] [Thread-119325] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:51:26.412 [DEBUG] [Thread-119327 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:51:29.257 [DEBUG] [Thread-119328 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:51:44.322 [DEBUG] [Thread-119329 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:51:55.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:51:55.053 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:51:55.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:51:55.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 51, 35), 47.58, 3.17, 0.0, 33.54, 26.05, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:51:55.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:51:35
2025-11-03T16:51:55.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:51:56.108 [DEBUG] [Thread-119330] [transport.py] [_log()] starting thread (client mode): 0xeda3f70
2025-11-03T16:51:56.108 [DEBUG] [Thread-119330] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:51:56.129 [DEBUG] [Thread-119330] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:51:56.129 [INFO] [Thread-119330] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:51:56.132 [DEBUG] [Thread-119330] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:51:56.132 [DEBUG] [Thread-119330] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:51:56.132 [DEBUG] [Thread-119330] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:51:56.132 [DEBUG] [Thread-119330] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:51:56.132 [DEBUG] [Thread-119330] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:51:56.132 [DEBUG] [Thread-119330] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:51:56.132 [DEBUG] [Thread-119330] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:51:56.132 [DEBUG] [Thread-119330] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:51:56.132 [DEBUG] [Thread-119330] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:51:56.132 [DEBUG] [Thread-119330] [transport.py] [_log()] client lang: <none>
2025-11-03T16:51:56.132 [DEBUG] [Thread-119330] [transport.py] [_log()] server lang: <none>
2025-11-03T16:51:56.133 [DEBUG] [Thread-119330] [transport.py] [_log()] kex follows: False
2025-11-03T16:51:56.133 [DEBUG] [Thread-119330] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:51:56.133 [DEBUG] [Thread-119330] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:51:56.133 [DEBUG] [Thread-119330] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:51:56.133 [DEBUG] [Thread-119330] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:51:56.133 [DEBUG] [Thread-119330] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:51:56.133 [DEBUG] [Thread-119330] [transport.py] [_log()] Compression: none
2025-11-03T16:51:56.133 [DEBUG] [Thread-119330] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:51:56.143 [DEBUG] [Thread-119330] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:51:56.143 [DEBUG] [Thread-119330] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:51:56.144 [DEBUG] [Thread-119330] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:51:56.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:51:56.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:51:56.146 [DEBUG] [Thread-119330] [transport.py] [_log()] userauth is OK
2025-11-03T16:51:56.146 [DEBUG] [Thread-119330] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:51:56.146 [DEBUG] [Thread-119330] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:51:56.146 [DEBUG] [Thread-119330] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:51:56.146 [DEBUG] [Thread-119330] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:51:56.165 [INFO] [Thread-119330] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:51:56.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:51:56.797 [DEBUG] [Thread-119330] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:51:56.797 [DEBUG] [Thread-119330] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:51:56.797 [DEBUG] [Thread-119330] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:51:56.838 [DEBUG] [Thread-119330] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:51:56.838 [DEBUG] [Thread-119330] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:51:56.842 [DEBUG] [Thread-119330] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:51:56.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:51:56.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:51:56.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:51:56.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:51:56.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:51:56.865 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:51:56.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:51:56.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:51:56.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:51:56.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.618852 -999.00  +25.90  31.85      7  -10.90 1 1 2 1 1   887    0 37.23 -11.50 ----- 37.7 31.9 317.6 46.0 28.6 -34.8 28.7 -32.6 29.8 -32.1 30.2 -32.5
2025-11-03T16:51:56.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:51:56.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:51:56.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.618852
2025-11-03T16:51:56.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:51:56.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:51:56.868 [DEBUG] [Thread-119330] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:51:56.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:51:56.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:51:56.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:51:56.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:51:35', tmtdew=47.58, humidity=3.17, cloud=0.0, wind=33.54, temperature=26.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:51:08.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:51:56.951 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:51:56.973 [DEBUG] [Thread-119333] [transport.py] [_log()] starting thread (client mode): 0x141d9270
2025-11-03T16:51:56.973 [DEBUG] [Thread-119333] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:51:56.987 [DEBUG] [Thread-119333] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:51:56.988 [INFO] [Thread-119333] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:51:56.995 [DEBUG] [Thread-119333] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:51:56.995 [DEBUG] [Thread-119333] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:51:56.995 [DEBUG] [Thread-119333] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:51:56.995 [DEBUG] [Thread-119333] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:51:56.995 [DEBUG] [Thread-119333] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:51:56.996 [DEBUG] [Thread-119333] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:51:56.996 [DEBUG] [Thread-119333] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:51:56.996 [DEBUG] [Thread-119333] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:51:56.996 [DEBUG] [Thread-119333] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:51:56.996 [DEBUG] [Thread-119333] [transport.py] [_log()] client lang: <none>
2025-11-03T16:51:56.996 [DEBUG] [Thread-119333] [transport.py] [_log()] server lang: <none>
2025-11-03T16:51:56.996 [DEBUG] [Thread-119333] [transport.py] [_log()] kex follows: False
2025-11-03T16:51:56.996 [DEBUG] [Thread-119333] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:51:56.996 [DEBUG] [Thread-119333] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:51:56.996 [DEBUG] [Thread-119333] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:51:56.996 [DEBUG] [Thread-119333] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:51:56.996 [DEBUG] [Thread-119333] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:51:56.996 [DEBUG] [Thread-119333] [transport.py] [_log()] Compression: none
2025-11-03T16:51:56.996 [DEBUG] [Thread-119333] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:51:57.054 [DEBUG] [Thread-119333] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:51:57.054 [DEBUG] [Thread-119333] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:51:57.055 [DEBUG] [Thread-119333] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:51:57.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:51:57.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:51:57.115 [DEBUG] [Thread-119333] [transport.py] [_log()] userauth is OK
2025-11-03T16:51:57.115 [DEBUG] [Thread-119333] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:51:57.115 [DEBUG] [Thread-119333] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:51:57.115 [DEBUG] [Thread-119333] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:51:57.115 [DEBUG] [Thread-119333] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:51:57.134 [INFO] [Thread-119333] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:51:57.135 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:51:57.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:51:57.948 [DEBUG] [Thread-119333] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:51:57.948 [DEBUG] [Thread-119333] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:51:57.998 [DEBUG] [Thread-119333] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:51:57.998 [DEBUG] [Thread-119333] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:51:58.006 [DEBUG] [Thread-119333] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:51:58.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:51:58.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:51:58.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:51:58.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:51:58.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:51:58.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:51:58.039 [DEBUG] [Thread-119333] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:51:59.359 [DEBUG] [Thread-119335 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:52:14.432 [DEBUG] [Thread-119336 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:52:18.137 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:52:18.138 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:52:26.649 [DEBUG] [Thread-119337 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:52:28.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:52:28.061 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:52:28.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:52:28.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 52, 8), 47.89, 3.1, 0.0, 34.71, 26.28, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:52:28.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:52:08
2025-11-03T16:52:28.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:52:29.039 [DEBUG] [Thread-119338] [transport.py] [_log()] starting thread (client mode): 0x117bc520
2025-11-03T16:52:29.039 [DEBUG] [Thread-119338] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:52:29.049 [DEBUG] [Thread-119338] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:52:29.050 [INFO] [Thread-119338] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:52:29.051 [DEBUG] [Thread-119338] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:52:29.051 [DEBUG] [Thread-119338] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:52:29.051 [DEBUG] [Thread-119338] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:52:29.051 [DEBUG] [Thread-119338] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:52:29.051 [DEBUG] [Thread-119338] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:52:29.051 [DEBUG] [Thread-119338] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:52:29.051 [DEBUG] [Thread-119338] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:52:29.051 [DEBUG] [Thread-119338] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:52:29.051 [DEBUG] [Thread-119338] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:52:29.051 [DEBUG] [Thread-119338] [transport.py] [_log()] client lang: <none>
2025-11-03T16:52:29.051 [DEBUG] [Thread-119338] [transport.py] [_log()] server lang: <none>
2025-11-03T16:52:29.051 [DEBUG] [Thread-119338] [transport.py] [_log()] kex follows: False
2025-11-03T16:52:29.051 [DEBUG] [Thread-119338] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:52:29.051 [DEBUG] [Thread-119338] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:52:29.051 [DEBUG] [Thread-119338] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:52:29.051 [DEBUG] [Thread-119338] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:52:29.051 [DEBUG] [Thread-119338] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:52:29.051 [DEBUG] [Thread-119338] [transport.py] [_log()] Compression: none
2025-11-03T16:52:29.052 [DEBUG] [Thread-119338] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:52:29.067 [DEBUG] [Thread-119338] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:52:29.068 [DEBUG] [Thread-119338] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:52:29.077 [DEBUG] [Thread-119338] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:52:29.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:52:29.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:52:29.079 [DEBUG] [Thread-119338] [transport.py] [_log()] userauth is OK
2025-11-03T16:52:29.079 [DEBUG] [Thread-119338] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:52:29.079 [DEBUG] [Thread-119338] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:52:29.079 [DEBUG] [Thread-119338] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:52:29.079 [DEBUG] [Thread-119338] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:52:29.099 [INFO] [Thread-119338] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:52:29.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:52:29.472 [DEBUG] [Thread-119340 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:52:29.673 [DEBUG] [Thread-119338] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:52:29.673 [DEBUG] [Thread-119338] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:52:29.673 [DEBUG] [Thread-119338] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:52:29.714 [DEBUG] [Thread-119338] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:52:29.714 [DEBUG] [Thread-119338] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:52:29.717 [DEBUG] [Thread-119338] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:52:29.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:52:29.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:52:29.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:52:29.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:52:29.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:52:29.744 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:52:29.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:52:29.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:52:29.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:52:29.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.619200 -999.00  +25.60  34.27      7  -11.20 1 1 2 1 1   887    0 37.65 -20.37 ----- 30.5 34.3 314.4 42.0 28.5 -34.8 28.6 -33.7 29.5 -33.2 30.0 -33.6
2025-11-03T16:52:29.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:52:29.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:52:29.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.619200
2025-11-03T16:52:29.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:52:29.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:52:29.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:52:29.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:52:29.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:52:29.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:52:08', tmtdew=47.89, humidity=3.1, cloud=0.0, wind=34.71, temperature=26.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:51:38.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:52:29.745 [DEBUG] [Thread-119338] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:52:29.817 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:52:29.838 [DEBUG] [Thread-119342] [transport.py] [_log()] starting thread (client mode): 0xeda2e90
2025-11-03T16:52:29.838 [DEBUG] [Thread-119342] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:52:29.852 [DEBUG] [Thread-119342] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:52:29.852 [INFO] [Thread-119342] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:52:29.860 [DEBUG] [Thread-119342] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:52:29.860 [DEBUG] [Thread-119342] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:52:29.860 [DEBUG] [Thread-119342] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:52:29.860 [DEBUG] [Thread-119342] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:52:29.860 [DEBUG] [Thread-119342] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:52:29.860 [DEBUG] [Thread-119342] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:52:29.860 [DEBUG] [Thread-119342] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:52:29.860 [DEBUG] [Thread-119342] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:52:29.860 [DEBUG] [Thread-119342] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:52:29.860 [DEBUG] [Thread-119342] [transport.py] [_log()] client lang: <none>
2025-11-03T16:52:29.860 [DEBUG] [Thread-119342] [transport.py] [_log()] server lang: <none>
2025-11-03T16:52:29.860 [DEBUG] [Thread-119342] [transport.py] [_log()] kex follows: False
2025-11-03T16:52:29.860 [DEBUG] [Thread-119342] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:52:29.860 [DEBUG] [Thread-119342] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:52:29.860 [DEBUG] [Thread-119342] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:52:29.860 [DEBUG] [Thread-119342] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:52:29.860 [DEBUG] [Thread-119342] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:52:29.860 [DEBUG] [Thread-119342] [transport.py] [_log()] Compression: none
2025-11-03T16:52:29.860 [DEBUG] [Thread-119342] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:52:29.918 [DEBUG] [Thread-119342] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:52:29.918 [DEBUG] [Thread-119342] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:52:29.918 [DEBUG] [Thread-119342] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:52:29.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:52:29.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:52:29.975 [DEBUG] [Thread-119342] [transport.py] [_log()] userauth is OK
2025-11-03T16:52:29.975 [DEBUG] [Thread-119342] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:52:29.975 [DEBUG] [Thread-119342] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:52:29.975 [DEBUG] [Thread-119342] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:52:29.975 [DEBUG] [Thread-119342] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:52:29.989 [INFO] [Thread-119342] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:52:29.989 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:52:29.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:52:30.834 [DEBUG] [Thread-119342] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:52:30.835 [DEBUG] [Thread-119342] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:52:30.882 [DEBUG] [Thread-119342] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:52:30.882 [DEBUG] [Thread-119342] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:52:30.891 [DEBUG] [Thread-119342] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:52:30.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:52:30.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:52:30.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:52:30.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:52:30.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:52:30.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:52:30.923 [DEBUG] [Thread-119342] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:52:44.511 [DEBUG] [Thread-119344 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:52:59.566 [DEBUG] [Thread-119345 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:53:00.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:53:00.922 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:53:00.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:53:01.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 52, 40), 47.91, 3.09, 0.0, 34.48, 26.5, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:53:01.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:52:40
2025-11-03T16:53:01.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:53:02.053 [DEBUG] [Thread-119346] [transport.py] [_log()] starting thread (client mode): 0xed2f130
2025-11-03T16:53:02.053 [DEBUG] [Thread-119346] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:53:02.076 [DEBUG] [Thread-119346] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:53:02.076 [INFO] [Thread-119346] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:53:02.077 [DEBUG] [Thread-119346] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:53:02.077 [DEBUG] [Thread-119346] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:53:02.077 [DEBUG] [Thread-119346] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:53:02.077 [DEBUG] [Thread-119346] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:53:02.077 [DEBUG] [Thread-119346] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:53:02.077 [DEBUG] [Thread-119346] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:53:02.078 [DEBUG] [Thread-119346] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:53:02.078 [DEBUG] [Thread-119346] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:53:02.078 [DEBUG] [Thread-119346] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:53:02.078 [DEBUG] [Thread-119346] [transport.py] [_log()] client lang: <none>
2025-11-03T16:53:02.078 [DEBUG] [Thread-119346] [transport.py] [_log()] server lang: <none>
2025-11-03T16:53:02.078 [DEBUG] [Thread-119346] [transport.py] [_log()] kex follows: False
2025-11-03T16:53:02.078 [DEBUG] [Thread-119346] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:53:02.078 [DEBUG] [Thread-119346] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:53:02.078 [DEBUG] [Thread-119346] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:53:02.078 [DEBUG] [Thread-119346] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:53:02.078 [DEBUG] [Thread-119346] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:53:02.078 [DEBUG] [Thread-119346] [transport.py] [_log()] Compression: none
2025-11-03T16:53:02.078 [DEBUG] [Thread-119346] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:53:02.098 [DEBUG] [Thread-119346] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:53:02.098 [DEBUG] [Thread-119346] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:53:02.098 [DEBUG] [Thread-119346] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:53:02.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:53:02.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:53:02.101 [DEBUG] [Thread-119346] [transport.py] [_log()] userauth is OK
2025-11-03T16:53:02.101 [DEBUG] [Thread-119346] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:53:02.101 [DEBUG] [Thread-119346] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:53:02.101 [DEBUG] [Thread-119346] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:53:02.101 [DEBUG] [Thread-119346] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:53:02.120 [INFO] [Thread-119346] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:53:02.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:53:02.729 [DEBUG] [Thread-119346] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:53:02.730 [DEBUG] [Thread-119346] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:53:02.730 [DEBUG] [Thread-119346] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:53:02.772 [DEBUG] [Thread-119346] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:53:02.772 [DEBUG] [Thread-119346] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:53:02.777 [DEBUG] [Thread-119346] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:53:02.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:53:02.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:53:02.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:53:02.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:53:02.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:53:02.812 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:53:02.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:53:02.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:53:02.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:53:02.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.619547 -999.00  +26.10  28.30      7  -10.80 1 1 1 1 1   887    0 36.47 -32.86 ----- 26.5 28.3 305.8 33.4 28.5 -33.6 28.4 -32.7 29.4 -33.3 29.9 -32.7
2025-11-03T16:53:02.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:53:02.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:53:02.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.619547
2025-11-03T16:53:02.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:53:02.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:53:02.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:53:02.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:53:02.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:53:02.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:52:40', tmtdew=47.91, humidity=3.09, cloud=0.0, wind=34.48, temperature=26.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:52:08.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:53:02.814 [DEBUG] [Thread-119346] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:53:02.887 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:53:02.906 [DEBUG] [Thread-119349] [transport.py] [_log()] starting thread (client mode): 0x1174c070
2025-11-03T16:53:02.907 [DEBUG] [Thread-119349] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:53:02.921 [DEBUG] [Thread-119349] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:53:02.921 [INFO] [Thread-119349] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:53:02.929 [DEBUG] [Thread-119349] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:53:02.929 [DEBUG] [Thread-119349] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:53:02.929 [DEBUG] [Thread-119349] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:53:02.929 [DEBUG] [Thread-119349] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:53:02.929 [DEBUG] [Thread-119349] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:53:02.929 [DEBUG] [Thread-119349] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:53:02.929 [DEBUG] [Thread-119349] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:53:02.929 [DEBUG] [Thread-119349] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:53:02.929 [DEBUG] [Thread-119349] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:53:02.929 [DEBUG] [Thread-119349] [transport.py] [_log()] client lang: <none>
2025-11-03T16:53:02.929 [DEBUG] [Thread-119349] [transport.py] [_log()] server lang: <none>
2025-11-03T16:53:02.929 [DEBUG] [Thread-119349] [transport.py] [_log()] kex follows: False
2025-11-03T16:53:02.929 [DEBUG] [Thread-119349] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:53:02.929 [DEBUG] [Thread-119349] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:53:02.929 [DEBUG] [Thread-119349] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:53:02.929 [DEBUG] [Thread-119349] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:53:02.929 [DEBUG] [Thread-119349] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:53:02.929 [DEBUG] [Thread-119349] [transport.py] [_log()] Compression: none
2025-11-03T16:53:02.929 [DEBUG] [Thread-119349] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:53:02.986 [DEBUG] [Thread-119349] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:53:02.986 [DEBUG] [Thread-119349] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:53:02.986 [DEBUG] [Thread-119349] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:53:02.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:53:02.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:53:03.043 [DEBUG] [Thread-119349] [transport.py] [_log()] userauth is OK
2025-11-03T16:53:03.043 [DEBUG] [Thread-119349] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:53:03.043 [DEBUG] [Thread-119349] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:53:03.043 [DEBUG] [Thread-119349] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:53:03.043 [DEBUG] [Thread-119349] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:53:03.057 [INFO] [Thread-119349] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:53:03.057 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:53:03.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:53:03.941 [DEBUG] [Thread-119349] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:53:03.941 [DEBUG] [Thread-119349] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:53:03.989 [DEBUG] [Thread-119349] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:53:03.989 [DEBUG] [Thread-119349] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:53:03.998 [DEBUG] [Thread-119349] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:53:04.006 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:53:04.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:53:04.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:53:04.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:53:04.022 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:53:04.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:53:04.030 [DEBUG] [Thread-119349] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:53:14.602 [DEBUG] [Thread-119351 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:53:18.281 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:53:18.282 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:53:26.751 [DEBUG] [Thread-119352 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:53:29.661 [DEBUG] [Thread-119353 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:53:34.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:53:34.035 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:53:34.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:53:34.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 53, 13), 47.79, 3.12, 0.0, 33.44, 26.5, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:53:34.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:53:13
2025-11-03T16:53:34.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:53:35.061 [DEBUG] [Thread-119354] [transport.py] [_log()] starting thread (client mode): 0xeda0460
2025-11-03T16:53:35.062 [DEBUG] [Thread-119354] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:53:35.073 [DEBUG] [Thread-119354] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:53:35.073 [INFO] [Thread-119354] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:53:35.077 [DEBUG] [Thread-119354] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:53:35.077 [DEBUG] [Thread-119354] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:53:35.077 [DEBUG] [Thread-119354] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:53:35.077 [DEBUG] [Thread-119354] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:53:35.077 [DEBUG] [Thread-119354] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:53:35.077 [DEBUG] [Thread-119354] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:53:35.077 [DEBUG] [Thread-119354] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:53:35.077 [DEBUG] [Thread-119354] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:53:35.077 [DEBUG] [Thread-119354] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:53:35.077 [DEBUG] [Thread-119354] [transport.py] [_log()] client lang: <none>
2025-11-03T16:53:35.077 [DEBUG] [Thread-119354] [transport.py] [_log()] server lang: <none>
2025-11-03T16:53:35.077 [DEBUG] [Thread-119354] [transport.py] [_log()] kex follows: False
2025-11-03T16:53:35.077 [DEBUG] [Thread-119354] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:53:35.077 [DEBUG] [Thread-119354] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:53:35.077 [DEBUG] [Thread-119354] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:53:35.077 [DEBUG] [Thread-119354] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:53:35.077 [DEBUG] [Thread-119354] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:53:35.077 [DEBUG] [Thread-119354] [transport.py] [_log()] Compression: none
2025-11-03T16:53:35.077 [DEBUG] [Thread-119354] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:53:35.091 [DEBUG] [Thread-119354] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:53:35.091 [DEBUG] [Thread-119354] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:53:35.091 [DEBUG] [Thread-119354] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:53:35.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:53:35.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:53:35.092 [DEBUG] [Thread-119354] [transport.py] [_log()] userauth is OK
2025-11-03T16:53:35.092 [DEBUG] [Thread-119354] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:53:35.092 [DEBUG] [Thread-119354] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:53:35.092 [DEBUG] [Thread-119354] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:53:35.092 [DEBUG] [Thread-119354] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:53:35.107 [INFO] [Thread-119354] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:53:35.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:53:35.708 [DEBUG] [Thread-119354] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:53:35.718 [DEBUG] [Thread-119354] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:53:35.719 [DEBUG] [Thread-119354] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:53:35.750 [DEBUG] [Thread-119354] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:53:35.750 [DEBUG] [Thread-119354] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:53:35.753 [DEBUG] [Thread-119354] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:53:35.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:53:35.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:53:35.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:53:35.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:53:35.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:53:35.777 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:53:35.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:53:35.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:53:35.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:53:35.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.619894 -999.00  +26.10  37.40      7  -10.80 1 1 2 1 1   887    0 35.89 -47.39 ----- 33.8 37.4 312.8 39.9 28.6 -34.4 28.6 -32.9 29.5 -32.4 30.0 -32.4
2025-11-03T16:53:35.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:53:35.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:53:35.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.619894
2025-11-03T16:53:35.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:53:35.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:53:35.780 [DEBUG] [Thread-119354] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:53:35.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:53:35.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:53:35.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:53:35.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:53:13', tmtdew=47.79, humidity=3.12, cloud=0.0, wind=33.44, temperature=26.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:52:38.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:53:35.875 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:53:35.897 [DEBUG] [Thread-119357] [transport.py] [_log()] starting thread (client mode): 0xed2f280
2025-11-03T16:53:35.897 [DEBUG] [Thread-119357] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:53:35.911 [DEBUG] [Thread-119357] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:53:35.912 [INFO] [Thread-119357] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:53:35.922 [DEBUG] [Thread-119357] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:53:35.922 [DEBUG] [Thread-119357] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:53:35.922 [DEBUG] [Thread-119357] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:53:35.922 [DEBUG] [Thread-119357] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:53:35.922 [DEBUG] [Thread-119357] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:53:35.922 [DEBUG] [Thread-119357] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:53:35.923 [DEBUG] [Thread-119357] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:53:35.923 [DEBUG] [Thread-119357] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:53:35.923 [DEBUG] [Thread-119357] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:53:35.923 [DEBUG] [Thread-119357] [transport.py] [_log()] client lang: <none>
2025-11-03T16:53:35.923 [DEBUG] [Thread-119357] [transport.py] [_log()] server lang: <none>
2025-11-03T16:53:35.923 [DEBUG] [Thread-119357] [transport.py] [_log()] kex follows: False
2025-11-03T16:53:35.923 [DEBUG] [Thread-119357] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:53:35.923 [DEBUG] [Thread-119357] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:53:35.923 [DEBUG] [Thread-119357] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:53:35.923 [DEBUG] [Thread-119357] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:53:35.923 [DEBUG] [Thread-119357] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:53:35.924 [DEBUG] [Thread-119357] [transport.py] [_log()] Compression: none
2025-11-03T16:53:35.924 [DEBUG] [Thread-119357] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:53:35.988 [DEBUG] [Thread-119357] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:53:35.989 [DEBUG] [Thread-119357] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:53:35.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:53:35.990 [DEBUG] [Thread-119357] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:53:35.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:53:36.045 [DEBUG] [Thread-119357] [transport.py] [_log()] userauth is OK
2025-11-03T16:53:36.045 [DEBUG] [Thread-119357] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:53:36.045 [DEBUG] [Thread-119357] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:53:36.046 [DEBUG] [Thread-119357] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:53:36.046 [DEBUG] [Thread-119357] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:53:36.065 [INFO] [Thread-119357] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:53:36.066 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:53:36.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:53:36.879 [DEBUG] [Thread-119357] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:53:36.879 [DEBUG] [Thread-119357] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:53:36.927 [DEBUG] [Thread-119357] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:53:36.927 [DEBUG] [Thread-119357] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:53:36.935 [DEBUG] [Thread-119357] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:53:36.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:53:36.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:53:36.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:53:36.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:53:36.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:53:36.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:53:36.977 [DEBUG] [Thread-119357] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:53:44.700 [DEBUG] [Thread-119359 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:53:59.765 [DEBUG] [Thread-119360 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:54:06.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:54:07.000 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:54:07.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:54:07.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 53, 45), 47.56, 3.14, 0.0, 34.81, 26.18, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:54:07.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:53:45
2025-11-03T16:54:07.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:54:07.999 [DEBUG] [Thread-119361] [transport.py] [_log()] starting thread (client mode): 0x117e8f10
2025-11-03T16:54:08.000 [DEBUG] [Thread-119361] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:54:08.005 [DEBUG] [Thread-119361] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:54:08.006 [INFO] [Thread-119361] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:54:08.009 [DEBUG] [Thread-119361] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:54:08.009 [DEBUG] [Thread-119361] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:54:08.009 [DEBUG] [Thread-119361] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:54:08.009 [DEBUG] [Thread-119361] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:54:08.009 [DEBUG] [Thread-119361] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:54:08.010 [DEBUG] [Thread-119361] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:54:08.010 [DEBUG] [Thread-119361] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:54:08.010 [DEBUG] [Thread-119361] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:54:08.010 [DEBUG] [Thread-119361] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:54:08.010 [DEBUG] [Thread-119361] [transport.py] [_log()] client lang: <none>
2025-11-03T16:54:08.010 [DEBUG] [Thread-119361] [transport.py] [_log()] server lang: <none>
2025-11-03T16:54:08.010 [DEBUG] [Thread-119361] [transport.py] [_log()] kex follows: False
2025-11-03T16:54:08.010 [DEBUG] [Thread-119361] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:54:08.010 [DEBUG] [Thread-119361] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:54:08.011 [DEBUG] [Thread-119361] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:54:08.011 [DEBUG] [Thread-119361] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:54:08.011 [DEBUG] [Thread-119361] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:54:08.011 [DEBUG] [Thread-119361] [transport.py] [_log()] Compression: none
2025-11-03T16:54:08.011 [DEBUG] [Thread-119361] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:54:08.022 [DEBUG] [Thread-119361] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:54:08.023 [DEBUG] [Thread-119361] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:54:08.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:54:08.024 [DEBUG] [Thread-119361] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:54:08.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:54:08.026 [DEBUG] [Thread-119361] [transport.py] [_log()] userauth is OK
2025-11-03T16:54:08.026 [DEBUG] [Thread-119361] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:54:08.026 [DEBUG] [Thread-119361] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:54:08.026 [DEBUG] [Thread-119361] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:54:08.026 [DEBUG] [Thread-119361] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:54:08.050 [INFO] [Thread-119361] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:54:08.050 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:54:08.695 [DEBUG] [Thread-119361] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:54:08.695 [DEBUG] [Thread-119361] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:54:08.695 [DEBUG] [Thread-119361] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:54:08.735 [DEBUG] [Thread-119361] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:54:08.735 [DEBUG] [Thread-119361] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:54:08.738 [DEBUG] [Thread-119361] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:54:08.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:54:08.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:54:08.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:54:08.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:54:08.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:54:08.756 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:54:08.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:54:08.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:54:08.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:54:08.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.620241 -999.00  +25.60  30.09      8  -10.90 1 1 2 1 1   887    0 36.11 -58.75 ----- 28.4 30.1 308.4 45.4 28.4 -34.3 28.5 -33.5 29.5 -32.9 29.9 -32.9
2025-11-03T16:54:08.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:54:08.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:54:08.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.620241
2025-11-03T16:54:08.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:54:08.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:54:08.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:54:08.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:54:08.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:54:08.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:53:45', tmtdew=47.56, humidity=3.14, cloud=0.0, wind=34.81, temperature=26.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:53:08.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:54:08.757 [DEBUG] [Thread-119361] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:54:08.828 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:54:08.848 [DEBUG] [Thread-119364] [transport.py] [_log()] starting thread (client mode): 0xed2d540
2025-11-03T16:54:08.848 [DEBUG] [Thread-119364] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:54:08.863 [DEBUG] [Thread-119364] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:54:08.864 [INFO] [Thread-119364] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:54:08.871 [DEBUG] [Thread-119364] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:54:08.871 [DEBUG] [Thread-119364] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:54:08.871 [DEBUG] [Thread-119364] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:54:08.871 [DEBUG] [Thread-119364] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:54:08.871 [DEBUG] [Thread-119364] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:54:08.871 [DEBUG] [Thread-119364] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:54:08.871 [DEBUG] [Thread-119364] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:54:08.871 [DEBUG] [Thread-119364] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:54:08.871 [DEBUG] [Thread-119364] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:54:08.871 [DEBUG] [Thread-119364] [transport.py] [_log()] client lang: <none>
2025-11-03T16:54:08.871 [DEBUG] [Thread-119364] [transport.py] [_log()] server lang: <none>
2025-11-03T16:54:08.871 [DEBUG] [Thread-119364] [transport.py] [_log()] kex follows: False
2025-11-03T16:54:08.871 [DEBUG] [Thread-119364] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:54:08.871 [DEBUG] [Thread-119364] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:54:08.871 [DEBUG] [Thread-119364] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:54:08.871 [DEBUG] [Thread-119364] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:54:08.871 [DEBUG] [Thread-119364] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:54:08.871 [DEBUG] [Thread-119364] [transport.py] [_log()] Compression: none
2025-11-03T16:54:08.871 [DEBUG] [Thread-119364] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:54:08.926 [DEBUG] [Thread-119364] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:54:08.926 [DEBUG] [Thread-119364] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:54:08.926 [DEBUG] [Thread-119364] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:54:08.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:54:08.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:54:08.984 [DEBUG] [Thread-119364] [transport.py] [_log()] userauth is OK
2025-11-03T16:54:08.984 [DEBUG] [Thread-119364] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:54:08.984 [DEBUG] [Thread-119364] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:54:08.984 [DEBUG] [Thread-119364] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:54:08.984 [DEBUG] [Thread-119364] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:54:08.998 [INFO] [Thread-119364] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:54:08.998 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:54:08.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:54:09.823 [DEBUG] [Thread-119364] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:54:09.824 [DEBUG] [Thread-119364] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:54:09.871 [DEBUG] [Thread-119364] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:54:09.871 [DEBUG] [Thread-119364] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:54:09.881 [DEBUG] [Thread-119364] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:54:09.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:54:09.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:54:09.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:54:09.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:54:09.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:54:09.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:54:09.917 [DEBUG] [Thread-119364] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:54:14.808 [DEBUG] [Thread-119366 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:54:18.423 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:54:18.423 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:54:26.987 [DEBUG] [Thread-119367 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:54:29.875 [DEBUG] [Thread-119368 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:54:39.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:54:39.940 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:54:39.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:54:40.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 54, 17), 47.72, 3.09, 0.0, 32.84, 26.13, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:54:40.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:54:17
2025-11-03T16:54:40.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:54:40.894 [DEBUG] [Thread-119369] [transport.py] [_log()] starting thread (client mode): 0x1174c400
2025-11-03T16:54:40.894 [DEBUG] [Thread-119369] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:54:40.904 [DEBUG] [Thread-119369] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:54:40.904 [INFO] [Thread-119369] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:54:40.907 [DEBUG] [Thread-119369] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:54:40.907 [DEBUG] [Thread-119369] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:54:40.907 [DEBUG] [Thread-119369] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:54:40.907 [DEBUG] [Thread-119369] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:54:40.907 [DEBUG] [Thread-119369] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:54:40.907 [DEBUG] [Thread-119369] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:54:40.907 [DEBUG] [Thread-119369] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:54:40.908 [DEBUG] [Thread-119369] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:54:40.908 [DEBUG] [Thread-119369] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:54:40.908 [DEBUG] [Thread-119369] [transport.py] [_log()] client lang: <none>
2025-11-03T16:54:40.908 [DEBUG] [Thread-119369] [transport.py] [_log()] server lang: <none>
2025-11-03T16:54:40.908 [DEBUG] [Thread-119369] [transport.py] [_log()] kex follows: False
2025-11-03T16:54:40.908 [DEBUG] [Thread-119369] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:54:40.908 [DEBUG] [Thread-119369] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:54:40.908 [DEBUG] [Thread-119369] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:54:40.908 [DEBUG] [Thread-119369] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:54:40.908 [DEBUG] [Thread-119369] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:54:40.908 [DEBUG] [Thread-119369] [transport.py] [_log()] Compression: none
2025-11-03T16:54:40.908 [DEBUG] [Thread-119369] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:54:40.924 [DEBUG] [Thread-119369] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:54:40.925 [DEBUG] [Thread-119369] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:54:40.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:54:40.926 [DEBUG] [Thread-119369] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:54:40.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:54:40.928 [DEBUG] [Thread-119369] [transport.py] [_log()] userauth is OK
2025-11-03T16:54:40.928 [DEBUG] [Thread-119369] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:54:40.928 [DEBUG] [Thread-119369] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:54:40.928 [DEBUG] [Thread-119369] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:54:40.929 [DEBUG] [Thread-119369] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:54:40.947 [INFO] [Thread-119369] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:54:40.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:54:41.703 [DEBUG] [Thread-119369] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:54:41.703 [DEBUG] [Thread-119369] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:54:41.703 [DEBUG] [Thread-119369] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:54:41.744 [DEBUG] [Thread-119369] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:54:41.744 [DEBUG] [Thread-119369] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:54:41.746 [DEBUG] [Thread-119369] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:54:41.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:54:41.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:54:41.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:54:41.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:54:41.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:54:41.761 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:54:41.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:54:41.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:54:41.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:54:41.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.620936 -999.00  +25.90  30.99      8  -10.80 1 1 2 1 1   887    0 35.91 -79.09 ----- 24.0 31.0 305.6 36.8 28.5 -34.2 28.4 -33.0 29.4 -32.2 29.8 -32.9
2025-11-03T16:54:41.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:54:41.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:54:41.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.620936
2025-11-03T16:54:41.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:54:41.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:54:41.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:54:41.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:54:41.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:54:41.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:54:17', tmtdew=47.72, humidity=3.09, cloud=0.0, wind=32.84, temperature=26.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:54:08.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:54:41.763 [DEBUG] [Thread-119369] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:54:41.835 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:54:41.856 [DEBUG] [Thread-119372] [transport.py] [_log()] starting thread (client mode): 0x1174cb20
2025-11-03T16:54:41.856 [DEBUG] [Thread-119372] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:54:41.871 [DEBUG] [Thread-119372] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:54:41.871 [INFO] [Thread-119372] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:54:41.878 [DEBUG] [Thread-119372] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:54:41.878 [DEBUG] [Thread-119372] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:54:41.878 [DEBUG] [Thread-119372] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:54:41.878 [DEBUG] [Thread-119372] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:54:41.878 [DEBUG] [Thread-119372] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:54:41.878 [DEBUG] [Thread-119372] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:54:41.878 [DEBUG] [Thread-119372] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:54:41.878 [DEBUG] [Thread-119372] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:54:41.878 [DEBUG] [Thread-119372] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:54:41.878 [DEBUG] [Thread-119372] [transport.py] [_log()] client lang: <none>
2025-11-03T16:54:41.878 [DEBUG] [Thread-119372] [transport.py] [_log()] server lang: <none>
2025-11-03T16:54:41.878 [DEBUG] [Thread-119372] [transport.py] [_log()] kex follows: False
2025-11-03T16:54:41.878 [DEBUG] [Thread-119372] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:54:41.878 [DEBUG] [Thread-119372] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:54:41.878 [DEBUG] [Thread-119372] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:54:41.879 [DEBUG] [Thread-119372] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:54:41.879 [DEBUG] [Thread-119372] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:54:41.879 [DEBUG] [Thread-119372] [transport.py] [_log()] Compression: none
2025-11-03T16:54:41.879 [DEBUG] [Thread-119372] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:54:41.935 [DEBUG] [Thread-119372] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:54:41.935 [DEBUG] [Thread-119372] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:54:41.935 [DEBUG] [Thread-119372] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:54:41.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:54:41.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:54:41.992 [DEBUG] [Thread-119372] [transport.py] [_log()] userauth is OK
2025-11-03T16:54:41.992 [DEBUG] [Thread-119372] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:54:41.992 [DEBUG] [Thread-119372] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:54:41.992 [DEBUG] [Thread-119372] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:54:41.992 [DEBUG] [Thread-119372] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:54:42.006 [INFO] [Thread-119372] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:54:42.006 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:54:42.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:54:42.825 [DEBUG] [Thread-119372] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:54:42.826 [DEBUG] [Thread-119372] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:54:42.874 [DEBUG] [Thread-119372] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:54:42.874 [DEBUG] [Thread-119372] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:54:42.883 [DEBUG] [Thread-119372] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:54:42.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:54:42.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:54:42.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:54:42.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:54:42.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:54:42.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:54:42.919 [DEBUG] [Thread-119372] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:54:44.919 [DEBUG] [Thread-119374 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:54:59.977 [DEBUG] [Thread-119375 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:55:12.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:55:12.939 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:55:12.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:55:13.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 54, 50), 47.28, 3.14, 0.0, 34.02, 25.89, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:55:13.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:54:50
2025-11-03T16:55:13.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:55:13.998 [DEBUG] [Thread-119376] [transport.py] [_log()] starting thread (client mode): 0xeda3550
2025-11-03T16:55:13.998 [DEBUG] [Thread-119376] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:55:14.017 [DEBUG] [Thread-119376] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:55:14.017 [INFO] [Thread-119376] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:55:14.020 [DEBUG] [Thread-119376] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:55:14.021 [DEBUG] [Thread-119376] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:55:14.021 [DEBUG] [Thread-119376] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:55:14.029 [DEBUG] [Thread-119376] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:55:14.030 [DEBUG] [Thread-119376] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:55:14.030 [DEBUG] [Thread-119376] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:55:14.030 [DEBUG] [Thread-119376] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:55:14.030 [DEBUG] [Thread-119376] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:55:14.030 [DEBUG] [Thread-119376] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:55:14.030 [DEBUG] [Thread-119376] [transport.py] [_log()] client lang: <none>
2025-11-03T16:55:14.030 [DEBUG] [Thread-119376] [transport.py] [_log()] server lang: <none>
2025-11-03T16:55:14.030 [DEBUG] [Thread-119376] [transport.py] [_log()] kex follows: False
2025-11-03T16:55:14.030 [DEBUG] [Thread-119376] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:55:14.030 [DEBUG] [Thread-119376] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:55:14.030 [DEBUG] [Thread-119376] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:55:14.030 [DEBUG] [Thread-119376] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:55:14.030 [DEBUG] [Thread-119376] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:55:14.031 [DEBUG] [Thread-119376] [transport.py] [_log()] Compression: none
2025-11-03T16:55:14.031 [DEBUG] [Thread-119376] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:55:14.049 [DEBUG] [Thread-119376] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:55:14.049 [DEBUG] [Thread-119376] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:55:14.050 [DEBUG] [Thread-119376] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:55:14.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:55:14.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:55:14.051 [DEBUG] [Thread-119376] [transport.py] [_log()] userauth is OK
2025-11-03T16:55:14.052 [DEBUG] [Thread-119376] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:55:14.052 [DEBUG] [Thread-119376] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:55:14.052 [DEBUG] [Thread-119376] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:55:14.052 [DEBUG] [Thread-119376] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:55:14.076 [INFO] [Thread-119376] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:55:14.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:55:15.015 [DEBUG] [Thread-119378 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:55:15.378 [DEBUG] [Thread-119376] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:55:15.378 [DEBUG] [Thread-119376] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:55:15.378 [DEBUG] [Thread-119376] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:55:15.419 [DEBUG] [Thread-119376] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:55:15.419 [DEBUG] [Thread-119376] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:55:15.422 [DEBUG] [Thread-119376] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:55:15.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:55:15.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:55:15.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:55:15.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:55:15.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:55:15.448 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:55:15.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:55:15.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:55:15.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:55:15.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.621283 -999.00  +26.10  26.27      8  -10.70 1 1 1 1 1   887    0 34.73 -82.86 ----- 33.3 26.3 299.7 36.9 28.4 -33.8 28.4 -32.6 29.4 -31.6 29.9 -32.3
2025-11-03T16:55:15.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:55:15.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:55:15.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.621283
2025-11-03T16:55:15.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:55:15.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:55:15.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:55:15.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:55:15.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:55:15.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:54:50', tmtdew=47.28, humidity=3.14, cloud=0.0, wind=34.02, temperature=25.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:54:38.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:55:15.449 [DEBUG] [Thread-119376] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:55:15.519 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:55:15.540 [DEBUG] [Thread-119380] [transport.py] [_log()] starting thread (client mode): 0xeda2680
2025-11-03T16:55:15.540 [DEBUG] [Thread-119380] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:55:15.555 [DEBUG] [Thread-119380] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:55:15.555 [INFO] [Thread-119380] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:55:15.562 [DEBUG] [Thread-119380] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:55:15.563 [DEBUG] [Thread-119380] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:55:15.563 [DEBUG] [Thread-119380] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:55:15.563 [DEBUG] [Thread-119380] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:55:15.563 [DEBUG] [Thread-119380] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:55:15.563 [DEBUG] [Thread-119380] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:55:15.563 [DEBUG] [Thread-119380] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:55:15.563 [DEBUG] [Thread-119380] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:55:15.563 [DEBUG] [Thread-119380] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:55:15.563 [DEBUG] [Thread-119380] [transport.py] [_log()] client lang: <none>
2025-11-03T16:55:15.563 [DEBUG] [Thread-119380] [transport.py] [_log()] server lang: <none>
2025-11-03T16:55:15.563 [DEBUG] [Thread-119380] [transport.py] [_log()] kex follows: False
2025-11-03T16:55:15.563 [DEBUG] [Thread-119380] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:55:15.564 [DEBUG] [Thread-119380] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:55:15.564 [DEBUG] [Thread-119380] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:55:15.564 [DEBUG] [Thread-119380] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:55:15.564 [DEBUG] [Thread-119380] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:55:15.564 [DEBUG] [Thread-119380] [transport.py] [_log()] Compression: none
2025-11-03T16:55:15.564 [DEBUG] [Thread-119380] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:55:15.621 [DEBUG] [Thread-119380] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:55:15.621 [DEBUG] [Thread-119380] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:55:15.622 [DEBUG] [Thread-119380] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:55:15.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:55:15.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:55:15.678 [DEBUG] [Thread-119380] [transport.py] [_log()] userauth is OK
2025-11-03T16:55:15.678 [DEBUG] [Thread-119380] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:55:15.679 [DEBUG] [Thread-119380] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:55:15.679 [DEBUG] [Thread-119380] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:55:15.679 [DEBUG] [Thread-119380] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:55:15.698 [INFO] [Thread-119380] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:55:15.699 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:55:15.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:55:16.537 [DEBUG] [Thread-119380] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:55:16.537 [DEBUG] [Thread-119380] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:55:16.585 [DEBUG] [Thread-119380] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:55:16.585 [DEBUG] [Thread-119380] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:55:16.593 [DEBUG] [Thread-119380] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:55:16.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:55:16.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:55:16.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:55:16.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:55:16.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:55:16.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:55:16.626 [DEBUG] [Thread-119380] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:55:18.564 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:55:18.565 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:55:27.077 [DEBUG] [Thread-119382 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:55:30.053 [DEBUG] [Thread-119383 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:55:45.117 [DEBUG] [Thread-119384 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:55:46.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:55:46.626 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:55:46.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:55:47.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 55, 22), 46.82, 3.25, 0.0, 37.02, 25.69, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:55:47.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:55:22
2025-11-03T16:55:47.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:55:47.578 [DEBUG] [Thread-119385] [transport.py] [_log()] starting thread (client mode): 0xed2dcf0
2025-11-03T16:55:47.579 [DEBUG] [Thread-119385] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:55:47.599 [DEBUG] [Thread-119385] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:55:47.599 [INFO] [Thread-119385] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:55:47.602 [DEBUG] [Thread-119385] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:55:47.602 [DEBUG] [Thread-119385] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:55:47.602 [DEBUG] [Thread-119385] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:55:47.602 [DEBUG] [Thread-119385] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:55:47.603 [DEBUG] [Thread-119385] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:55:47.603 [DEBUG] [Thread-119385] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:55:47.603 [DEBUG] [Thread-119385] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:55:47.603 [DEBUG] [Thread-119385] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:55:47.603 [DEBUG] [Thread-119385] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:55:47.603 [DEBUG] [Thread-119385] [transport.py] [_log()] client lang: <none>
2025-11-03T16:55:47.603 [DEBUG] [Thread-119385] [transport.py] [_log()] server lang: <none>
2025-11-03T16:55:47.603 [DEBUG] [Thread-119385] [transport.py] [_log()] kex follows: False
2025-11-03T16:55:47.603 [DEBUG] [Thread-119385] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:55:47.603 [DEBUG] [Thread-119385] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:55:47.604 [DEBUG] [Thread-119385] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:55:47.604 [DEBUG] [Thread-119385] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:55:47.604 [DEBUG] [Thread-119385] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:55:47.604 [DEBUG] [Thread-119385] [transport.py] [_log()] Compression: none
2025-11-03T16:55:47.604 [DEBUG] [Thread-119385] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:55:47.615 [DEBUG] [Thread-119385] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:55:47.616 [DEBUG] [Thread-119385] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:55:47.616 [DEBUG] [Thread-119385] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:55:47.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:55:47.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:55:47.618 [DEBUG] [Thread-119385] [transport.py] [_log()] userauth is OK
2025-11-03T16:55:47.619 [DEBUG] [Thread-119385] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:55:47.619 [DEBUG] [Thread-119385] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:55:47.619 [DEBUG] [Thread-119385] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:55:47.619 [DEBUG] [Thread-119385] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:55:47.641 [INFO] [Thread-119385] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:55:47.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:55:48.258 [DEBUG] [Thread-119385] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:55:48.258 [DEBUG] [Thread-119385] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:55:48.259 [DEBUG] [Thread-119385] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:55:48.299 [DEBUG] [Thread-119385] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:55:48.299 [DEBUG] [Thread-119385] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:55:48.303 [DEBUG] [Thread-119385] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:55:48.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:55:48.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:55:48.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:55:48.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:55:48.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:55:48.327 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:55:48.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:55:48.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:55:48.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:55:48.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.621630 -999.00  +26.20  36.98      7  -10.70 1 1 2 1 1   887    0 35.09 -97.26 ----- 34.6 37.0 308.8 41.7 28.5 -33.9 28.4 -32.7 29.4 -33.9 29.9 -32.7
2025-11-03T16:55:48.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:55:48.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:55:48.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.621630
2025-11-03T16:55:48.336 [DEBUG] [Thread-119385] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:55:48.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:55:48.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:55:48.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:55:48.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:55:48.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:55:48.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:55:22', tmtdew=46.82, humidity=3.25, cloud=0.0, wind=37.02, temperature=25.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:55:08.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:55:48.424 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:55:48.445 [DEBUG] [Thread-119388] [transport.py] [_log()] starting thread (client mode): 0x141d9ea0
2025-11-03T16:55:48.445 [DEBUG] [Thread-119388] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:55:48.460 [DEBUG] [Thread-119388] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:55:48.460 [INFO] [Thread-119388] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:55:48.467 [DEBUG] [Thread-119388] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:55:48.468 [DEBUG] [Thread-119388] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:55:48.468 [DEBUG] [Thread-119388] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:55:48.468 [DEBUG] [Thread-119388] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:55:48.468 [DEBUG] [Thread-119388] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:55:48.468 [DEBUG] [Thread-119388] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:55:48.468 [DEBUG] [Thread-119388] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:55:48.468 [DEBUG] [Thread-119388] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:55:48.468 [DEBUG] [Thread-119388] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:55:48.468 [DEBUG] [Thread-119388] [transport.py] [_log()] client lang: <none>
2025-11-03T16:55:48.468 [DEBUG] [Thread-119388] [transport.py] [_log()] server lang: <none>
2025-11-03T16:55:48.468 [DEBUG] [Thread-119388] [transport.py] [_log()] kex follows: False
2025-11-03T16:55:48.468 [DEBUG] [Thread-119388] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:55:48.468 [DEBUG] [Thread-119388] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:55:48.469 [DEBUG] [Thread-119388] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:55:48.469 [DEBUG] [Thread-119388] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:55:48.469 [DEBUG] [Thread-119388] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:55:48.469 [DEBUG] [Thread-119388] [transport.py] [_log()] Compression: none
2025-11-03T16:55:48.469 [DEBUG] [Thread-119388] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:55:48.526 [DEBUG] [Thread-119388] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:55:48.526 [DEBUG] [Thread-119388] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:55:48.527 [DEBUG] [Thread-119388] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:55:48.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:55:48.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:55:48.581 [DEBUG] [Thread-119388] [transport.py] [_log()] userauth is OK
2025-11-03T16:55:48.582 [DEBUG] [Thread-119388] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:55:48.582 [DEBUG] [Thread-119388] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:55:48.582 [DEBUG] [Thread-119388] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:55:48.582 [DEBUG] [Thread-119388] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:55:48.601 [INFO] [Thread-119388] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:55:48.602 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:55:48.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:55:49.451 [DEBUG] [Thread-119388] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:55:49.452 [DEBUG] [Thread-119388] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:55:49.500 [DEBUG] [Thread-119388] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:55:49.500 [DEBUG] [Thread-119388] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:55:49.509 [DEBUG] [Thread-119388] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:55:49.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:55:49.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:55:49.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:55:49.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:55:49.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:55:49.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:55:49.546 [DEBUG] [Thread-119388] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:56:00.157 [DEBUG] [Thread-119390 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:56:15.222 [DEBUG] [Thread-119391 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:56:18.706 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:56:18.707 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:56:19.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:56:19.568 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:56:19.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:56:20.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 55, 54), 46.74, 3.27, 0.0, 41.38, 25.57, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:56:20.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:55:54
2025-11-03T16:56:20.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:56:20.556 [DEBUG] [Thread-119392] [transport.py] [_log()] starting thread (client mode): 0xeda39a0
2025-11-03T16:56:20.556 [DEBUG] [Thread-119392] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:56:20.575 [DEBUG] [Thread-119392] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:56:20.575 [INFO] [Thread-119392] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:56:20.578 [DEBUG] [Thread-119392] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:56:20.578 [DEBUG] [Thread-119392] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:56:20.578 [DEBUG] [Thread-119392] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:56:20.578 [DEBUG] [Thread-119392] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:56:20.578 [DEBUG] [Thread-119392] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:56:20.578 [DEBUG] [Thread-119392] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:56:20.578 [DEBUG] [Thread-119392] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:56:20.578 [DEBUG] [Thread-119392] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:56:20.578 [DEBUG] [Thread-119392] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:56:20.578 [DEBUG] [Thread-119392] [transport.py] [_log()] client lang: <none>
2025-11-03T16:56:20.578 [DEBUG] [Thread-119392] [transport.py] [_log()] server lang: <none>
2025-11-03T16:56:20.578 [DEBUG] [Thread-119392] [transport.py] [_log()] kex follows: False
2025-11-03T16:56:20.578 [DEBUG] [Thread-119392] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:56:20.578 [DEBUG] [Thread-119392] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:56:20.578 [DEBUG] [Thread-119392] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:56:20.578 [DEBUG] [Thread-119392] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:56:20.578 [DEBUG] [Thread-119392] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:56:20.578 [DEBUG] [Thread-119392] [transport.py] [_log()] Compression: none
2025-11-03T16:56:20.578 [DEBUG] [Thread-119392] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:56:20.596 [DEBUG] [Thread-119392] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:56:20.596 [DEBUG] [Thread-119392] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:56:20.596 [DEBUG] [Thread-119392] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:56:20.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:56:20.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:56:20.597 [DEBUG] [Thread-119392] [transport.py] [_log()] userauth is OK
2025-11-03T16:56:20.597 [DEBUG] [Thread-119392] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:56:20.597 [DEBUG] [Thread-119392] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:56:20.597 [DEBUG] [Thread-119392] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:56:20.597 [DEBUG] [Thread-119392] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:56:20.606 [INFO] [Thread-119392] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:56:20.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:56:21.328 [DEBUG] [Thread-119392] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:56:21.328 [DEBUG] [Thread-119392] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:56:21.328 [DEBUG] [Thread-119392] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:56:21.368 [DEBUG] [Thread-119392] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:56:21.369 [DEBUG] [Thread-119392] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:56:21.371 [DEBUG] [Thread-119392] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:56:21.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:56:21.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:56:21.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:56:21.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:56:21.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:56:21.390 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:56:21.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:56:21.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:56:21.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:56:21.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.621977 -999.00  +26.20  25.75      8  -10.60 1 1 1 1 1   887    0 34.90 -104.75 ----- 26.6 25.8 303.4 48.7 28.5 -33.9 28.4 -32.5 29.4 -32.1 29.9 -32.4
2025-11-03T16:56:21.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:56:21.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:56:21.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.621977
2025-11-03T16:56:21.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:56:21.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:56:21.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:56:21.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:56:21.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:56:21.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:55:54', tmtdew=46.74, humidity=3.27, cloud=0.0, wind=41.38, temperature=25.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:55:38.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:56:21.391 [DEBUG] [Thread-119392] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:56:21.466 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:56:21.486 [DEBUG] [Thread-119395] [transport.py] [_log()] starting thread (client mode): 0xeda35b0
2025-11-03T16:56:21.486 [DEBUG] [Thread-119395] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:56:21.501 [DEBUG] [Thread-119395] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:56:21.501 [INFO] [Thread-119395] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:56:21.509 [DEBUG] [Thread-119395] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:56:21.509 [DEBUG] [Thread-119395] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:56:21.509 [DEBUG] [Thread-119395] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:56:21.509 [DEBUG] [Thread-119395] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:56:21.509 [DEBUG] [Thread-119395] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:56:21.509 [DEBUG] [Thread-119395] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:56:21.509 [DEBUG] [Thread-119395] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:56:21.509 [DEBUG] [Thread-119395] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:56:21.509 [DEBUG] [Thread-119395] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:56:21.509 [DEBUG] [Thread-119395] [transport.py] [_log()] client lang: <none>
2025-11-03T16:56:21.509 [DEBUG] [Thread-119395] [transport.py] [_log()] server lang: <none>
2025-11-03T16:56:21.509 [DEBUG] [Thread-119395] [transport.py] [_log()] kex follows: False
2025-11-03T16:56:21.509 [DEBUG] [Thread-119395] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:56:21.509 [DEBUG] [Thread-119395] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:56:21.509 [DEBUG] [Thread-119395] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:56:21.509 [DEBUG] [Thread-119395] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:56:21.509 [DEBUG] [Thread-119395] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:56:21.509 [DEBUG] [Thread-119395] [transport.py] [_log()] Compression: none
2025-11-03T16:56:21.509 [DEBUG] [Thread-119395] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:56:21.563 [DEBUG] [Thread-119395] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:56:21.563 [DEBUG] [Thread-119395] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:56:21.563 [DEBUG] [Thread-119395] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:56:21.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:56:21.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:56:21.621 [DEBUG] [Thread-119395] [transport.py] [_log()] userauth is OK
2025-11-03T16:56:21.621 [DEBUG] [Thread-119395] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:56:21.621 [DEBUG] [Thread-119395] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:56:21.621 [DEBUG] [Thread-119395] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:56:21.621 [DEBUG] [Thread-119395] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:56:21.635 [INFO] [Thread-119395] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:56:21.635 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:56:21.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:56:22.448 [DEBUG] [Thread-119395] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:56:22.448 [DEBUG] [Thread-119395] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:56:22.496 [DEBUG] [Thread-119395] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:56:22.497 [DEBUG] [Thread-119395] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:56:22.505 [DEBUG] [Thread-119395] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:56:22.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:56:22.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:56:22.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:56:22.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:56:22.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:56:22.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:56:22.537 [DEBUG] [Thread-119395] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:56:27.252 [DEBUG] [Thread-119397 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:56:30.262 [DEBUG] [Thread-119398 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:56:45.326 [DEBUG] [Thread-119399 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:56:52.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:56:52.560 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:56:52.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:56:53.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 56, 27), 46.56, 3.32, 0.0, 35.15, 25.5, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:56:53.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:56:27
2025-11-03T16:56:53.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:56:53.626 [DEBUG] [Thread-119400] [transport.py] [_log()] starting thread (client mode): 0xeda38b0
2025-11-03T16:56:53.626 [DEBUG] [Thread-119400] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:56:53.646 [DEBUG] [Thread-119400] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:56:53.646 [INFO] [Thread-119400] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:56:53.649 [DEBUG] [Thread-119400] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:56:53.649 [DEBUG] [Thread-119400] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:56:53.649 [DEBUG] [Thread-119400] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:56:53.650 [DEBUG] [Thread-119400] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:56:53.650 [DEBUG] [Thread-119400] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:56:53.650 [DEBUG] [Thread-119400] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:56:53.650 [DEBUG] [Thread-119400] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:56:53.650 [DEBUG] [Thread-119400] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:56:53.650 [DEBUG] [Thread-119400] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:56:53.650 [DEBUG] [Thread-119400] [transport.py] [_log()] client lang: <none>
2025-11-03T16:56:53.650 [DEBUG] [Thread-119400] [transport.py] [_log()] server lang: <none>
2025-11-03T16:56:53.650 [DEBUG] [Thread-119400] [transport.py] [_log()] kex follows: False
2025-11-03T16:56:53.650 [DEBUG] [Thread-119400] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:56:53.650 [DEBUG] [Thread-119400] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:56:53.650 [DEBUG] [Thread-119400] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:56:53.650 [DEBUG] [Thread-119400] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:56:53.650 [DEBUG] [Thread-119400] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:56:53.650 [DEBUG] [Thread-119400] [transport.py] [_log()] Compression: none
2025-11-03T16:56:53.650 [DEBUG] [Thread-119400] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:56:53.667 [DEBUG] [Thread-119400] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:56:53.668 [DEBUG] [Thread-119400] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:56:53.668 [DEBUG] [Thread-119400] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:56:53.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:56:53.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:56:53.671 [DEBUG] [Thread-119400] [transport.py] [_log()] userauth is OK
2025-11-03T16:56:53.671 [DEBUG] [Thread-119400] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:56:53.672 [DEBUG] [Thread-119400] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:56:53.672 [DEBUG] [Thread-119400] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:56:53.672 [DEBUG] [Thread-119400] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:56:53.699 [INFO] [Thread-119400] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:56:53.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:56:54.360 [DEBUG] [Thread-119400] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:56:54.360 [DEBUG] [Thread-119400] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:56:54.360 [DEBUG] [Thread-119400] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:56:54.401 [DEBUG] [Thread-119400] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:56:54.401 [DEBUG] [Thread-119400] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:56:54.403 [DEBUG] [Thread-119400] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:56:54.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:56:54.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:56:54.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:56:54.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:56:54.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:56:54.430 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:56:54.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:56:54.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:56:54.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:56:54.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.622325 -999.00  +25.60  35.87      8  -10.70 1 1 2 1 1   887    0 35.51 -98.31 ----- 30.0 35.9 308.0 44.9 28.4 -34.5 28.4 -33.6 29.4 -32.5 29.9 -33.2
2025-11-03T16:56:54.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:56:54.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:56:54.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.622325
2025-11-03T16:56:54.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:56:54.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:56:54.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:56:54.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:56:54.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:56:54.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:56:27', tmtdew=46.56, humidity=3.32, cloud=0.0, wind=35.15, temperature=25.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:56:08.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:56:54.432 [DEBUG] [Thread-119400] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:56:54.504 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:56:54.524 [DEBUG] [Thread-119403] [transport.py] [_log()] starting thread (client mode): 0x117be9e0
2025-11-03T16:56:54.524 [DEBUG] [Thread-119403] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:56:54.538 [DEBUG] [Thread-119403] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:56:54.539 [INFO] [Thread-119403] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:56:54.546 [DEBUG] [Thread-119403] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:56:54.546 [DEBUG] [Thread-119403] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:56:54.546 [DEBUG] [Thread-119403] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:56:54.546 [DEBUG] [Thread-119403] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:56:54.546 [DEBUG] [Thread-119403] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:56:54.546 [DEBUG] [Thread-119403] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:56:54.546 [DEBUG] [Thread-119403] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:56:54.546 [DEBUG] [Thread-119403] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:56:54.546 [DEBUG] [Thread-119403] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:56:54.546 [DEBUG] [Thread-119403] [transport.py] [_log()] client lang: <none>
2025-11-03T16:56:54.546 [DEBUG] [Thread-119403] [transport.py] [_log()] server lang: <none>
2025-11-03T16:56:54.546 [DEBUG] [Thread-119403] [transport.py] [_log()] kex follows: False
2025-11-03T16:56:54.546 [DEBUG] [Thread-119403] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:56:54.546 [DEBUG] [Thread-119403] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:56:54.546 [DEBUG] [Thread-119403] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:56:54.546 [DEBUG] [Thread-119403] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:56:54.546 [DEBUG] [Thread-119403] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:56:54.546 [DEBUG] [Thread-119403] [transport.py] [_log()] Compression: none
2025-11-03T16:56:54.546 [DEBUG] [Thread-119403] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:56:54.603 [DEBUG] [Thread-119403] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:56:54.603 [DEBUG] [Thread-119403] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:56:54.604 [DEBUG] [Thread-119403] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:56:54.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:56:54.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:56:54.661 [DEBUG] [Thread-119403] [transport.py] [_log()] userauth is OK
2025-11-03T16:56:54.661 [DEBUG] [Thread-119403] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:56:54.661 [DEBUG] [Thread-119403] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:56:54.661 [DEBUG] [Thread-119403] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:56:54.661 [DEBUG] [Thread-119403] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:56:54.675 [INFO] [Thread-119403] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:56:54.675 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:56:54.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:56:55.485 [DEBUG] [Thread-119403] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:56:55.485 [DEBUG] [Thread-119403] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:56:55.533 [DEBUG] [Thread-119403] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:56:55.533 [DEBUG] [Thread-119403] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:56:55.542 [DEBUG] [Thread-119403] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:56:55.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:56:55.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:56:55.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:56:55.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:56:55.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:56:55.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:56:55.578 [DEBUG] [Thread-119403] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:57:00.366 [DEBUG] [Thread-119405 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:57:15.425 [DEBUG] [Thread-119406 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:57:18.855 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:57:18.856 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:57:25.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:57:25.601 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:57:25.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:57:26.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 56, 59), 46.21, 3.84, 0.0, 27.17, 25.64, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:57:26.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:56:59
2025-11-03T16:57:26.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:57:26.725 [DEBUG] [Thread-119407] [transport.py] [_log()] starting thread (client mode): 0x1174faf0
2025-11-03T16:57:26.726 [DEBUG] [Thread-119407] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:57:26.746 [DEBUG] [Thread-119407] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:57:26.746 [INFO] [Thread-119407] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:57:26.749 [DEBUG] [Thread-119407] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:57:26.750 [DEBUG] [Thread-119407] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:57:26.750 [DEBUG] [Thread-119407] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:57:26.750 [DEBUG] [Thread-119407] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:57:26.750 [DEBUG] [Thread-119407] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:57:26.750 [DEBUG] [Thread-119407] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:57:26.750 [DEBUG] [Thread-119407] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:57:26.751 [DEBUG] [Thread-119407] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:57:26.751 [DEBUG] [Thread-119407] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:57:26.751 [DEBUG] [Thread-119407] [transport.py] [_log()] client lang: <none>
2025-11-03T16:57:26.751 [DEBUG] [Thread-119407] [transport.py] [_log()] server lang: <none>
2025-11-03T16:57:26.751 [DEBUG] [Thread-119407] [transport.py] [_log()] kex follows: False
2025-11-03T16:57:26.751 [DEBUG] [Thread-119407] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:57:26.751 [DEBUG] [Thread-119407] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:57:26.751 [DEBUG] [Thread-119407] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:57:26.751 [DEBUG] [Thread-119407] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:57:26.751 [DEBUG] [Thread-119407] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:57:26.751 [DEBUG] [Thread-119407] [transport.py] [_log()] Compression: none
2025-11-03T16:57:26.751 [DEBUG] [Thread-119407] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:57:26.762 [DEBUG] [Thread-119407] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:57:26.762 [DEBUG] [Thread-119407] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:57:26.763 [DEBUG] [Thread-119407] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:57:26.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:57:26.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:57:26.765 [DEBUG] [Thread-119407] [transport.py] [_log()] userauth is OK
2025-11-03T16:57:26.765 [DEBUG] [Thread-119407] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:57:26.765 [DEBUG] [Thread-119407] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:57:26.765 [DEBUG] [Thread-119407] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:57:26.765 [DEBUG] [Thread-119407] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:57:26.789 [INFO] [Thread-119407] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:57:26.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:57:27.517 [DEBUG] [Thread-119409 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:57:27.519 [DEBUG] [Thread-119407] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:57:27.519 [DEBUG] [Thread-119407] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:57:27.519 [DEBUG] [Thread-119407] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:57:27.560 [DEBUG] [Thread-119407] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:57:27.560 [DEBUG] [Thread-119407] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:57:27.563 [DEBUG] [Thread-119407] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:57:27.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:57:27.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:57:27.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:57:27.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:57:27.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:57:27.587 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:57:27.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:57:27.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:57:27.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:57:27.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.622672 -999.00  +25.30  30.36      8  -10.60 1 1 2 1 1   887    0 33.52 -102.50 ----- 25.9 30.4 310.2 36.4 28.4 -33.7 28.4 -33.1 29.3 -32.5 29.8 -32.8
2025-11-03T16:57:27.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:57:27.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:57:27.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.622672
2025-11-03T16:57:27.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:57:27.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:57:27.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:57:27.590 [DEBUG] [Thread-119407] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:57:27.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:57:27.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:57:27.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:56:59', tmtdew=46.21, humidity=3.84, cloud=0.0, wind=27.17, temperature=25.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:56:38.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:57:27.673 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:57:27.694 [DEBUG] [Thread-119411] [transport.py] [_log()] starting thread (client mode): 0xed2e170
2025-11-03T16:57:27.694 [DEBUG] [Thread-119411] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:57:27.709 [DEBUG] [Thread-119411] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T16:57:27.709 [INFO] [Thread-119411] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T16:57:27.716 [DEBUG] [Thread-119411] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:57:27.716 [DEBUG] [Thread-119411] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T16:57:27.716 [DEBUG] [Thread-119411] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:57:27.716 [DEBUG] [Thread-119411] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:57:27.717 [DEBUG] [Thread-119411] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:57:27.717 [DEBUG] [Thread-119411] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:57:27.717 [DEBUG] [Thread-119411] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:57:27.717 [DEBUG] [Thread-119411] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:57:27.717 [DEBUG] [Thread-119411] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:57:27.717 [DEBUG] [Thread-119411] [transport.py] [_log()] client lang: <none>
2025-11-03T16:57:27.717 [DEBUG] [Thread-119411] [transport.py] [_log()] server lang: <none>
2025-11-03T16:57:27.717 [DEBUG] [Thread-119411] [transport.py] [_log()] kex follows: False
2025-11-03T16:57:27.717 [DEBUG] [Thread-119411] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:57:27.717 [DEBUG] [Thread-119411] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:57:27.717 [DEBUG] [Thread-119411] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:57:27.717 [DEBUG] [Thread-119411] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:57:27.717 [DEBUG] [Thread-119411] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:57:27.718 [DEBUG] [Thread-119411] [transport.py] [_log()] Compression: none
2025-11-03T16:57:27.718 [DEBUG] [Thread-119411] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:57:27.778 [DEBUG] [Thread-119411] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:57:27.779 [DEBUG] [Thread-119411] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:57:27.780 [DEBUG] [Thread-119411] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T16:57:27.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T16:57:27.781 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:57:27.834 [DEBUG] [Thread-119411] [transport.py] [_log()] userauth is OK
2025-11-03T16:57:27.835 [DEBUG] [Thread-119411] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:57:27.835 [DEBUG] [Thread-119411] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:57:27.835 [DEBUG] [Thread-119411] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T16:57:27.836 [DEBUG] [Thread-119411] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:57:27.855 [INFO] [Thread-119411] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:57:27.856 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T16:57:27.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:57:28.712 [DEBUG] [Thread-119411] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:57:28.712 [DEBUG] [Thread-119411] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:57:28.759 [DEBUG] [Thread-119411] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:57:28.759 [DEBUG] [Thread-119411] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:57:28.768 [DEBUG] [Thread-119411] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:57:28.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:57:28.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T16:57:28.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T16:57:28.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:57:28.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:57:28.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:57:28.800 [DEBUG] [Thread-119411] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:57:30.481 [DEBUG] [Thread-119413 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:57:45.544 [DEBUG] [Thread-119414 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:57:58.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T16:57:58.813 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T16:57:58.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T16:57:59.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 16, 57, 32), 46.34, 3.8, 0.0, 28.69, 25.72, 0, 0, 0, 2, 0, 0),)
2025-11-03T16:57:59.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 16:57:32
2025-11-03T16:57:59.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T16:57:59.876 [DEBUG] [Thread-119415] [transport.py] [_log()] starting thread (client mode): 0xed2cb20
2025-11-03T16:57:59.876 [DEBUG] [Thread-119415] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T16:57:59.897 [DEBUG] [Thread-119415] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T16:57:59.897 [INFO] [Thread-119415] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T16:57:59.900 [DEBUG] [Thread-119415] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T16:57:59.901 [DEBUG] [Thread-119415] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T16:57:59.901 [DEBUG] [Thread-119415] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T16:57:59.901 [DEBUG] [Thread-119415] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:57:59.901 [DEBUG] [Thread-119415] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T16:57:59.901 [DEBUG] [Thread-119415] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:57:59.901 [DEBUG] [Thread-119415] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T16:57:59.901 [DEBUG] [Thread-119415] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T16:57:59.901 [DEBUG] [Thread-119415] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T16:57:59.901 [DEBUG] [Thread-119415] [transport.py] [_log()] client lang: <none>
2025-11-03T16:57:59.902 [DEBUG] [Thread-119415] [transport.py] [_log()] server lang: <none>
2025-11-03T16:57:59.902 [DEBUG] [Thread-119415] [transport.py] [_log()] kex follows: False
2025-11-03T16:57:59.902 [DEBUG] [Thread-119415] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T16:57:59.902 [DEBUG] [Thread-119415] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T16:57:59.902 [DEBUG] [Thread-119415] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T16:57:59.902 [DEBUG] [Thread-119415] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T16:57:59.902 [DEBUG] [Thread-119415] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T16:57:59.902 [DEBUG] [Thread-119415] [transport.py] [_log()] Compression: none
2025-11-03T16:57:59.902 [DEBUG] [Thread-119415] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T16:57:59.911 [DEBUG] [Thread-119415] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T16:57:59.912 [DEBUG] [Thread-119415] [transport.py] [_log()] Switch to new keys ...
2025-11-03T16:57:59.913 [DEBUG] [Thread-119415] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T16:57:59.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T16:57:59.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T16:57:59.914 [DEBUG] [Thread-119415] [transport.py] [_log()] userauth is OK
2025-11-03T16:57:59.915 [DEBUG] [Thread-119415] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T16:57:59.915 [DEBUG] [Thread-119415] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T16:57:59.915 [DEBUG] [Thread-119415] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T16:57:59.915 [DEBUG] [Thread-119415] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T16:57:59.933 [INFO] [Thread-119415] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T16:57:59.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T16:58:00.572 [DEBUG] [Thread-119415] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T16:58:00.573 [DEBUG] [Thread-119415] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T16:58:00.573 [DEBUG] [Thread-119415] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T16:58:00.587 [DEBUG] [Thread-119417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:58:00.613 [DEBUG] [Thread-119415] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T16:58:00.614 [DEBUG] [Thread-119415] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T16:58:00.617 [DEBUG] [Thread-119415] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T16:58:00.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T16:58:00.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T16:58:00.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T16:58:00.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T16:58:00.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T16:58:00.642 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T16:58:00.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T16:58:00.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T16:58:00.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T16:58:00.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.623019 -999.00  +25.40  34.02      8  -10.70 1 1 2 1 1   887    0 34.19 -104.87 ----- 34.4 34.0 311.0 37.6 28.4 -33.8 28.4 -32.3 29.3 -31.9 29.7 -32.2
2025-11-03T16:58:00.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T16:58:00.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T16:58:00.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.623019
2025-11-03T16:58:00.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T16:58:00.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T16:58:00.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T16:58:00.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T16:58:00.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T16:58:00.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T16:57:32', tmtdew=46.34, humidity=3.8, cloud=0.0, wind=28.69, temperature=25.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T14:57:08.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T16:58:00.646 [DEBUG] [Thread-119415] [transport.py] [_log()] EOF in transport thread
2025-11-03T16:58:00.725 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T16:58:15.626 [DEBUG] [Thread-119419 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:58:18.996 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:58:18.997 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:58:27.781 [DEBUG] [Thread-119420 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:58:30.683 [DEBUG] [Thread-119421 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:58:45.723 [DEBUG] [Thread-119422 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:59:00.759 [DEBUG] [Thread-119423 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:59:15.799 [DEBUG] [Thread-119424 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:59:19.141 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:59:19.141 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:59:27.832 [DEBUG] [Thread-119425 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:59:30.847 [DEBUG] [Thread-119426 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T16:59:45.911 [DEBUG] [Thread-119427 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:00:00.964 [DEBUG] [Thread-119428 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:00:15.841 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T17:00:16.003 [DEBUG] [Thread-119429 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:00:19.281 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:00:19.282 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:00:28.015 [DEBUG] [Thread-119430 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:00:31.054 [DEBUG] [Thread-119431 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:00:45.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:00:45.859 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:00:45.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:00:46.094 [DEBUG] [Thread-119432 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:00:46.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 0, 14), 46.69, 3.35, 0.0, 35.9, 25.94, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:00:46.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:00:14
2025-11-03T17:00:46.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:00:46.988 [DEBUG] [Thread-119433] [transport.py] [_log()] starting thread (client mode): 0x141da860
2025-11-03T17:00:46.989 [DEBUG] [Thread-119433] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:00:47.000 [DEBUG] [Thread-119433] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:00:47.001 [INFO] [Thread-119433] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:00:47.005 [DEBUG] [Thread-119433] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:00:47.005 [DEBUG] [Thread-119433] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:00:47.005 [DEBUG] [Thread-119433] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:00:47.005 [DEBUG] [Thread-119433] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:00:47.005 [DEBUG] [Thread-119433] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:00:47.005 [DEBUG] [Thread-119433] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:00:47.005 [DEBUG] [Thread-119433] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:00:47.005 [DEBUG] [Thread-119433] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:00:47.005 [DEBUG] [Thread-119433] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:00:47.005 [DEBUG] [Thread-119433] [transport.py] [_log()] client lang: <none>
2025-11-03T17:00:47.005 [DEBUG] [Thread-119433] [transport.py] [_log()] server lang: <none>
2025-11-03T17:00:47.005 [DEBUG] [Thread-119433] [transport.py] [_log()] kex follows: False
2025-11-03T17:00:47.005 [DEBUG] [Thread-119433] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:00:47.006 [DEBUG] [Thread-119433] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:00:47.006 [DEBUG] [Thread-119433] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:00:47.006 [DEBUG] [Thread-119433] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:00:47.006 [DEBUG] [Thread-119433] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:00:47.006 [DEBUG] [Thread-119433] [transport.py] [_log()] Compression: none
2025-11-03T17:00:47.006 [DEBUG] [Thread-119433] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:00:47.037 [DEBUG] [Thread-119433] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:00:47.041 [DEBUG] [Thread-119433] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:00:47.042 [DEBUG] [Thread-119433] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:00:47.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:00:47.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:00:47.045 [DEBUG] [Thread-119433] [transport.py] [_log()] userauth is OK
2025-11-03T17:00:47.045 [DEBUG] [Thread-119433] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:00:47.045 [DEBUG] [Thread-119433] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:00:47.045 [DEBUG] [Thread-119433] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:00:47.045 [DEBUG] [Thread-119433] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:00:47.075 [INFO] [Thread-119433] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:00:47.077 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:00:47.890 [DEBUG] [Thread-119433] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:00:47.890 [DEBUG] [Thread-119433] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:00:47.891 [DEBUG] [Thread-119433] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:00:47.932 [DEBUG] [Thread-119433] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:00:47.932 [DEBUG] [Thread-119433] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:00:47.934 [DEBUG] [Thread-119433] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:00:47.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:00:47.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:00:47.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:00:47.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:00:47.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:00:47.953 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:00:47.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:00:47.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:00:47.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:00:47.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.625102 -999.00  +26.10  36.37      8  -10.40 1 1 2 1 1   887    0 33.66 -110.42 ----- 35.4 36.4 312.0 45.9 28.4 -34.2 28.4 -31.9 29.4 -31.0 29.7 -31.9
2025-11-03T17:00:47.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:00:47.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:00:47.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.625102
2025-11-03T17:00:47.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:00:47.971 [DEBUG] [Thread-119433] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:00:47.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:00:47.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:00:47.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:00:47.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:00:47.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:00:14', tmtdew=46.69, humidity=3.35, cloud=0.0, wind=35.9, temperature=25.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:00:08.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:00:48.052 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:00:48.073 [DEBUG] [Thread-119436] [transport.py] [_log()] starting thread (client mode): 0x1174f550
2025-11-03T17:00:48.073 [DEBUG] [Thread-119436] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:00:48.088 [DEBUG] [Thread-119436] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:00:48.088 [INFO] [Thread-119436] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:00:48.096 [DEBUG] [Thread-119436] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:00:48.096 [DEBUG] [Thread-119436] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:00:48.096 [DEBUG] [Thread-119436] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:00:48.096 [DEBUG] [Thread-119436] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:00:48.096 [DEBUG] [Thread-119436] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:00:48.096 [DEBUG] [Thread-119436] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:00:48.096 [DEBUG] [Thread-119436] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:00:48.096 [DEBUG] [Thread-119436] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:00:48.096 [DEBUG] [Thread-119436] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:00:48.096 [DEBUG] [Thread-119436] [transport.py] [_log()] client lang: <none>
2025-11-03T17:00:48.096 [DEBUG] [Thread-119436] [transport.py] [_log()] server lang: <none>
2025-11-03T17:00:48.096 [DEBUG] [Thread-119436] [transport.py] [_log()] kex follows: False
2025-11-03T17:00:48.096 [DEBUG] [Thread-119436] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:00:48.096 [DEBUG] [Thread-119436] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:00:48.096 [DEBUG] [Thread-119436] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:00:48.096 [DEBUG] [Thread-119436] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:00:48.096 [DEBUG] [Thread-119436] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:00:48.096 [DEBUG] [Thread-119436] [transport.py] [_log()] Compression: none
2025-11-03T17:00:48.096 [DEBUG] [Thread-119436] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:00:48.153 [DEBUG] [Thread-119436] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:00:48.153 [DEBUG] [Thread-119436] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:00:48.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:00:48.153 [DEBUG] [Thread-119436] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:00:48.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:00:48.210 [DEBUG] [Thread-119436] [transport.py] [_log()] userauth is OK
2025-11-03T17:00:48.210 [DEBUG] [Thread-119436] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:00:48.210 [DEBUG] [Thread-119436] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:00:48.210 [DEBUG] [Thread-119436] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:00:48.210 [DEBUG] [Thread-119436] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:00:48.224 [INFO] [Thread-119436] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:00:48.224 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:00:48.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:00:49.069 [DEBUG] [Thread-119436] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:00:49.070 [DEBUG] [Thread-119436] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:00:49.117 [DEBUG] [Thread-119436] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:00:49.117 [DEBUG] [Thread-119436] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:00:49.125 [DEBUG] [Thread-119436] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:00:49.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:00:49.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:00:49.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:00:49.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:00:49.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:00:49.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:00:49.158 [DEBUG] [Thread-119436] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:01:01.138 [DEBUG] [Thread-119438 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:01:16.248 [DEBUG] [Thread-119439 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:01:19.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:01:19.181 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:01:19.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:01:19.423 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:01:19.424 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:01:20.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 0, 46), 46.59, 3.37, 0.0, 31.9, 26.09, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:01:20.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:00:46
2025-11-03T17:01:20.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:01:20.366 [DEBUG] [Thread-119440] [transport.py] [_log()] starting thread (client mode): 0xed2e950
2025-11-03T17:01:20.366 [DEBUG] [Thread-119440] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:01:20.384 [DEBUG] [Thread-119440] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:01:20.384 [INFO] [Thread-119440] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:01:20.387 [DEBUG] [Thread-119440] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:01:20.387 [DEBUG] [Thread-119440] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:01:20.387 [DEBUG] [Thread-119440] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:01:20.387 [DEBUG] [Thread-119440] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:01:20.388 [DEBUG] [Thread-119440] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:01:20.388 [DEBUG] [Thread-119440] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:01:20.388 [DEBUG] [Thread-119440] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:01:20.388 [DEBUG] [Thread-119440] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:01:20.388 [DEBUG] [Thread-119440] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:01:20.388 [DEBUG] [Thread-119440] [transport.py] [_log()] client lang: <none>
2025-11-03T17:01:20.388 [DEBUG] [Thread-119440] [transport.py] [_log()] server lang: <none>
2025-11-03T17:01:20.388 [DEBUG] [Thread-119440] [transport.py] [_log()] kex follows: False
2025-11-03T17:01:20.388 [DEBUG] [Thread-119440] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:01:20.388 [DEBUG] [Thread-119440] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:01:20.388 [DEBUG] [Thread-119440] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:01:20.388 [DEBUG] [Thread-119440] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:01:20.388 [DEBUG] [Thread-119440] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:01:20.388 [DEBUG] [Thread-119440] [transport.py] [_log()] Compression: none
2025-11-03T17:01:20.388 [DEBUG] [Thread-119440] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:01:20.403 [DEBUG] [Thread-119440] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:01:20.403 [DEBUG] [Thread-119440] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:01:20.403 [DEBUG] [Thread-119440] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:01:20.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:01:20.404 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:01:20.404 [DEBUG] [Thread-119440] [transport.py] [_log()] userauth is OK
2025-11-03T17:01:20.404 [DEBUG] [Thread-119440] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:01:20.404 [DEBUG] [Thread-119440] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:01:20.404 [DEBUG] [Thread-119440] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:01:20.404 [DEBUG] [Thread-119440] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:01:20.413 [INFO] [Thread-119440] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:01:20.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:01:21.041 [DEBUG] [Thread-119440] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:01:21.041 [DEBUG] [Thread-119440] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:01:21.042 [DEBUG] [Thread-119440] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:01:21.082 [DEBUG] [Thread-119440] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:01:21.082 [DEBUG] [Thread-119440] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:01:21.085 [DEBUG] [Thread-119440] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:01:21.098 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:01:21.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:01:21.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:01:21.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:01:21.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:01:21.104 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:01:21.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:01:21.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:01:21.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:01:21.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.625450 -999.00  +26.10  30.49      8  -10.20 1 1 2 1 1   887    0 33.31 -117.54 ----- 33.0 30.5 329.2 41.4 28.4 -33.2 28.3 -32.8 29.2 -32.5 29.7 -32.9
2025-11-03T17:01:21.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:01:21.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:01:21.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.625450
2025-11-03T17:01:21.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:01:21.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:01:21.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:01:21.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:01:21.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:01:21.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:00:46', tmtdew=46.59, humidity=3.37, cloud=0.0, wind=31.9, temperature=26.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:00:38.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:01:21.105 [DEBUG] [Thread-119440] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:01:21.179 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:01:21.201 [DEBUG] [Thread-119443] [transport.py] [_log()] starting thread (client mode): 0xeda14b0
2025-11-03T17:01:21.201 [DEBUG] [Thread-119443] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:01:21.216 [DEBUG] [Thread-119443] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:01:21.216 [INFO] [Thread-119443] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:01:21.224 [DEBUG] [Thread-119443] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:01:21.224 [DEBUG] [Thread-119443] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:01:21.224 [DEBUG] [Thread-119443] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:01:21.224 [DEBUG] [Thread-119443] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:01:21.224 [DEBUG] [Thread-119443] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:01:21.224 [DEBUG] [Thread-119443] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:01:21.224 [DEBUG] [Thread-119443] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:01:21.224 [DEBUG] [Thread-119443] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:01:21.224 [DEBUG] [Thread-119443] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:01:21.224 [DEBUG] [Thread-119443] [transport.py] [_log()] client lang: <none>
2025-11-03T17:01:21.224 [DEBUG] [Thread-119443] [transport.py] [_log()] server lang: <none>
2025-11-03T17:01:21.224 [DEBUG] [Thread-119443] [transport.py] [_log()] kex follows: False
2025-11-03T17:01:21.224 [DEBUG] [Thread-119443] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:01:21.224 [DEBUG] [Thread-119443] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:01:21.224 [DEBUG] [Thread-119443] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:01:21.224 [DEBUG] [Thread-119443] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:01:21.224 [DEBUG] [Thread-119443] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:01:21.225 [DEBUG] [Thread-119443] [transport.py] [_log()] Compression: none
2025-11-03T17:01:21.225 [DEBUG] [Thread-119443] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:01:21.281 [DEBUG] [Thread-119443] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:01:21.282 [DEBUG] [Thread-119443] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:01:21.282 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:01:21.282 [DEBUG] [Thread-119443] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:01:21.282 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:01:21.339 [DEBUG] [Thread-119443] [transport.py] [_log()] userauth is OK
2025-11-03T17:01:21.339 [DEBUG] [Thread-119443] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:01:21.339 [DEBUG] [Thread-119443] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:01:21.339 [DEBUG] [Thread-119443] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:01:21.339 [DEBUG] [Thread-119443] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:01:21.353 [INFO] [Thread-119443] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:01:21.353 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:01:21.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:01:22.176 [DEBUG] [Thread-119443] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:01:22.177 [DEBUG] [Thread-119443] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:01:22.225 [DEBUG] [Thread-119443] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:01:22.225 [DEBUG] [Thread-119443] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:01:22.234 [DEBUG] [Thread-119443] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:01:22.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:01:22.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:01:22.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:01:22.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:01:22.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:01:22.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:01:22.271 [DEBUG] [Thread-119443] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:01:28.293 [DEBUG] [Thread-119445 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:01:31.285 [DEBUG] [Thread-119446 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:01:46.349 [DEBUG] [Thread-119447 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:01:52.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:01:52.293 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:01:52.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:01:52.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 1, 18), 46.47, 3.4, 0.0, 28.94, 26.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:01:52.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:01:18
2025-11-03T17:01:53.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:01:53.299 [DEBUG] [Thread-119448] [transport.py] [_log()] starting thread (client mode): 0x141da800
2025-11-03T17:01:53.299 [DEBUG] [Thread-119448] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:01:53.320 [DEBUG] [Thread-119448] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:01:53.320 [INFO] [Thread-119448] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:01:53.324 [DEBUG] [Thread-119448] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:01:53.324 [DEBUG] [Thread-119448] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:01:53.325 [DEBUG] [Thread-119448] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:01:53.325 [DEBUG] [Thread-119448] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:01:53.325 [DEBUG] [Thread-119448] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:01:53.325 [DEBUG] [Thread-119448] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:01:53.325 [DEBUG] [Thread-119448] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:01:53.325 [DEBUG] [Thread-119448] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:01:53.325 [DEBUG] [Thread-119448] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:01:53.325 [DEBUG] [Thread-119448] [transport.py] [_log()] client lang: <none>
2025-11-03T17:01:53.325 [DEBUG] [Thread-119448] [transport.py] [_log()] server lang: <none>
2025-11-03T17:01:53.325 [DEBUG] [Thread-119448] [transport.py] [_log()] kex follows: False
2025-11-03T17:01:53.325 [DEBUG] [Thread-119448] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:01:53.325 [DEBUG] [Thread-119448] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:01:53.325 [DEBUG] [Thread-119448] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:01:53.325 [DEBUG] [Thread-119448] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:01:53.325 [DEBUG] [Thread-119448] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:01:53.325 [DEBUG] [Thread-119448] [transport.py] [_log()] Compression: none
2025-11-03T17:01:53.325 [DEBUG] [Thread-119448] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:01:53.342 [DEBUG] [Thread-119448] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:01:53.342 [DEBUG] [Thread-119448] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:01:53.342 [DEBUG] [Thread-119448] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:01:53.342 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:01:53.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:01:53.343 [DEBUG] [Thread-119448] [transport.py] [_log()] userauth is OK
2025-11-03T17:01:53.343 [DEBUG] [Thread-119448] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:01:53.343 [DEBUG] [Thread-119448] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:01:53.343 [DEBUG] [Thread-119448] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:01:53.343 [DEBUG] [Thread-119448] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:01:53.359 [INFO] [Thread-119448] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:01:53.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:01:54.189 [DEBUG] [Thread-119448] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:01:54.189 [DEBUG] [Thread-119448] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:01:54.189 [DEBUG] [Thread-119448] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:01:54.229 [DEBUG] [Thread-119448] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:01:54.230 [DEBUG] [Thread-119448] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:01:54.232 [DEBUG] [Thread-119448] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:01:54.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:01:54.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:01:54.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:01:54.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:01:54.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:01:54.254 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:01:54.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:01:54.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:01:54.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:01:54.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.625797 -999.00  +25.80  36.90      8  -10.60 1 1 2 1 1   887    0 33.93 -118.30 ----- 36.6 36.9 311.6 50.2 28.3 -33.8 28.4 -32.3 29.3 -32.7 29.7 -32.6
2025-11-03T17:01:54.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:01:54.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:01:54.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.625797
2025-11-03T17:01:54.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:01:54.256 [DEBUG] [Thread-119448] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:01:54.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:01:54.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:01:54.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:01:54.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:01:54.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:01:18', tmtdew=46.47, humidity=3.4, cloud=0.0, wind=28.94, temperature=26.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:01:08.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:01:54.338 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:01:54.357 [DEBUG] [Thread-119451] [transport.py] [_log()] starting thread (client mode): 0x1179abc0
2025-11-03T17:01:54.357 [DEBUG] [Thread-119451] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:01:54.372 [DEBUG] [Thread-119451] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:01:54.372 [INFO] [Thread-119451] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:01:54.381 [DEBUG] [Thread-119451] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:01:54.382 [DEBUG] [Thread-119451] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:01:54.382 [DEBUG] [Thread-119451] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:01:54.382 [DEBUG] [Thread-119451] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:01:54.382 [DEBUG] [Thread-119451] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:01:54.382 [DEBUG] [Thread-119451] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:01:54.382 [DEBUG] [Thread-119451] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:01:54.382 [DEBUG] [Thread-119451] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:01:54.382 [DEBUG] [Thread-119451] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:01:54.382 [DEBUG] [Thread-119451] [transport.py] [_log()] client lang: <none>
2025-11-03T17:01:54.382 [DEBUG] [Thread-119451] [transport.py] [_log()] server lang: <none>
2025-11-03T17:01:54.382 [DEBUG] [Thread-119451] [transport.py] [_log()] kex follows: False
2025-11-03T17:01:54.382 [DEBUG] [Thread-119451] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:01:54.382 [DEBUG] [Thread-119451] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:01:54.382 [DEBUG] [Thread-119451] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:01:54.382 [DEBUG] [Thread-119451] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:01:54.383 [DEBUG] [Thread-119451] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:01:54.383 [DEBUG] [Thread-119451] [transport.py] [_log()] Compression: none
2025-11-03T17:01:54.383 [DEBUG] [Thread-119451] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:01:54.439 [DEBUG] [Thread-119451] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:01:54.440 [DEBUG] [Thread-119451] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:01:54.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:01:54.440 [DEBUG] [Thread-119451] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:01:54.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:01:54.496 [DEBUG] [Thread-119451] [transport.py] [_log()] userauth is OK
2025-11-03T17:01:54.496 [DEBUG] [Thread-119451] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:01:54.497 [DEBUG] [Thread-119451] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:01:54.497 [DEBUG] [Thread-119451] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:01:54.497 [DEBUG] [Thread-119451] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:01:54.516 [INFO] [Thread-119451] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:01:54.517 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:01:54.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:01:55.318 [DEBUG] [Thread-119451] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:01:55.318 [DEBUG] [Thread-119451] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:01:55.366 [DEBUG] [Thread-119451] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:01:55.366 [DEBUG] [Thread-119451] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:01:55.374 [DEBUG] [Thread-119451] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:01:55.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:01:55.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:01:55.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:01:55.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:01:55.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:01:55.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:01:55.415 [DEBUG] [Thread-119451] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:02:01.400 [DEBUG] [Thread-119453 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:02:16.465 [DEBUG] [Thread-119454 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:02:19.564 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:02:19.565 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:02:25.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:02:25.438 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:02:25.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:02:26.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 1, 51), 46.53, 3.4, 0.0, 32.32, 25.92, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:02:26.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:01:51
2025-11-03T17:02:26.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:02:26.485 [DEBUG] [Thread-119455] [transport.py] [_log()] starting thread (client mode): 0x1174fd60
2025-11-03T17:02:26.485 [DEBUG] [Thread-119455] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:02:26.505 [DEBUG] [Thread-119455] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:02:26.505 [INFO] [Thread-119455] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:02:26.508 [DEBUG] [Thread-119455] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:02:26.509 [DEBUG] [Thread-119455] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:02:26.509 [DEBUG] [Thread-119455] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:02:26.509 [DEBUG] [Thread-119455] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:02:26.509 [DEBUG] [Thread-119455] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:02:26.509 [DEBUG] [Thread-119455] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:02:26.509 [DEBUG] [Thread-119455] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:02:26.509 [DEBUG] [Thread-119455] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:02:26.509 [DEBUG] [Thread-119455] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:02:26.509 [DEBUG] [Thread-119455] [transport.py] [_log()] client lang: <none>
2025-11-03T17:02:26.509 [DEBUG] [Thread-119455] [transport.py] [_log()] server lang: <none>
2025-11-03T17:02:26.509 [DEBUG] [Thread-119455] [transport.py] [_log()] kex follows: False
2025-11-03T17:02:26.509 [DEBUG] [Thread-119455] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:02:26.509 [DEBUG] [Thread-119455] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:02:26.509 [DEBUG] [Thread-119455] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:02:26.509 [DEBUG] [Thread-119455] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:02:26.509 [DEBUG] [Thread-119455] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:02:26.509 [DEBUG] [Thread-119455] [transport.py] [_log()] Compression: none
2025-11-03T17:02:26.509 [DEBUG] [Thread-119455] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:02:26.526 [DEBUG] [Thread-119455] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:02:26.527 [DEBUG] [Thread-119455] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:02:26.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:02:26.527 [DEBUG] [Thread-119455] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:02:26.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:02:26.528 [DEBUG] [Thread-119455] [transport.py] [_log()] userauth is OK
2025-11-03T17:02:26.528 [DEBUG] [Thread-119455] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:02:26.528 [DEBUG] [Thread-119455] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:02:26.528 [DEBUG] [Thread-119455] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:02:26.528 [DEBUG] [Thread-119455] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:02:26.539 [INFO] [Thread-119455] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:02:26.539 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:02:27.173 [DEBUG] [Thread-119455] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:02:27.173 [DEBUG] [Thread-119455] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:02:27.173 [DEBUG] [Thread-119455] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:02:27.214 [DEBUG] [Thread-119455] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:02:27.215 [DEBUG] [Thread-119455] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:02:27.218 [DEBUG] [Thread-119455] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:02:27.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:02:27.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:02:27.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:02:27.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:02:27.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:02:27.242 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:02:27.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:02:27.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:02:27.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:02:27.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.626144 -999.00  +25.50  34.39      8  -10.70 1 1 2 1 1   887    0 33.42 -113.72 ----- 35.6 34.4 307.2 41.8 28.3 -34.2 28.3 -33.2 29.3 -32.8 29.7 -32.8
2025-11-03T17:02:27.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:02:27.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:02:27.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.626144
2025-11-03T17:02:27.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:02:27.250 [DEBUG] [Thread-119455] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:02:27.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:02:27.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:02:27.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:02:27.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:02:27.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:01:51', tmtdew=46.53, humidity=3.4, cloud=0.0, wind=32.32, temperature=25.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:01:38.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:02:27.335 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:02:27.356 [DEBUG] [Thread-119458] [transport.py] [_log()] starting thread (client mode): 0x117bcf70
2025-11-03T17:02:27.356 [DEBUG] [Thread-119458] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:02:27.371 [DEBUG] [Thread-119458] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:02:27.371 [INFO] [Thread-119458] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:02:27.379 [DEBUG] [Thread-119458] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:02:27.379 [DEBUG] [Thread-119458] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:02:27.379 [DEBUG] [Thread-119458] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:02:27.380 [DEBUG] [Thread-119458] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:02:27.380 [DEBUG] [Thread-119458] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:02:27.380 [DEBUG] [Thread-119458] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:02:27.380 [DEBUG] [Thread-119458] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:02:27.380 [DEBUG] [Thread-119458] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:02:27.380 [DEBUG] [Thread-119458] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:02:27.380 [DEBUG] [Thread-119458] [transport.py] [_log()] client lang: <none>
2025-11-03T17:02:27.380 [DEBUG] [Thread-119458] [transport.py] [_log()] server lang: <none>
2025-11-03T17:02:27.381 [DEBUG] [Thread-119458] [transport.py] [_log()] kex follows: False
2025-11-03T17:02:27.381 [DEBUG] [Thread-119458] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:02:27.381 [DEBUG] [Thread-119458] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:02:27.381 [DEBUG] [Thread-119458] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:02:27.381 [DEBUG] [Thread-119458] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:02:27.381 [DEBUG] [Thread-119458] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:02:27.382 [DEBUG] [Thread-119458] [transport.py] [_log()] Compression: none
2025-11-03T17:02:27.382 [DEBUG] [Thread-119458] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:02:27.441 [DEBUG] [Thread-119458] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:02:27.441 [DEBUG] [Thread-119458] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:02:27.442 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:02:27.442 [DEBUG] [Thread-119458] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:02:27.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:02:27.499 [DEBUG] [Thread-119458] [transport.py] [_log()] userauth is OK
2025-11-03T17:02:27.500 [DEBUG] [Thread-119458] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:02:27.500 [DEBUG] [Thread-119458] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:02:27.500 [DEBUG] [Thread-119458] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:02:27.500 [DEBUG] [Thread-119458] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:02:27.518 [INFO] [Thread-119458] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:02:27.519 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:02:27.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:02:28.345 [DEBUG] [Thread-119460 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:02:28.354 [DEBUG] [Thread-119458] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:02:28.354 [DEBUG] [Thread-119458] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:02:28.402 [DEBUG] [Thread-119458] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:02:28.402 [DEBUG] [Thread-119458] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:02:28.412 [DEBUG] [Thread-119458] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:02:28.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:02:28.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:02:28.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:02:28.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:02:28.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:02:28.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:02:28.448 [DEBUG] [Thread-119458] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:02:31.504 [DEBUG] [Thread-119461 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:02:46.571 [DEBUG] [Thread-119462 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:02:58.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:02:58.470 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:02:58.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:02:59.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 2, 23), 46.76, 3.35, 0.0, 35.01, 26.17, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:02:59.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:02:23
2025-11-03T17:02:59.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:02:59.458 [DEBUG] [Thread-119463] [transport.py] [_log()] starting thread (client mode): 0x1174d630
2025-11-03T17:02:59.458 [DEBUG] [Thread-119463] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:02:59.478 [DEBUG] [Thread-119463] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:02:59.478 [INFO] [Thread-119463] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:02:59.481 [DEBUG] [Thread-119463] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:02:59.481 [DEBUG] [Thread-119463] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:02:59.481 [DEBUG] [Thread-119463] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:02:59.481 [DEBUG] [Thread-119463] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:02:59.481 [DEBUG] [Thread-119463] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:02:59.481 [DEBUG] [Thread-119463] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:02:59.481 [DEBUG] [Thread-119463] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:02:59.481 [DEBUG] [Thread-119463] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:02:59.481 [DEBUG] [Thread-119463] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:02:59.481 [DEBUG] [Thread-119463] [transport.py] [_log()] client lang: <none>
2025-11-03T17:02:59.481 [DEBUG] [Thread-119463] [transport.py] [_log()] server lang: <none>
2025-11-03T17:02:59.481 [DEBUG] [Thread-119463] [transport.py] [_log()] kex follows: False
2025-11-03T17:02:59.481 [DEBUG] [Thread-119463] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:02:59.481 [DEBUG] [Thread-119463] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:02:59.481 [DEBUG] [Thread-119463] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:02:59.481 [DEBUG] [Thread-119463] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:02:59.481 [DEBUG] [Thread-119463] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:02:59.482 [DEBUG] [Thread-119463] [transport.py] [_log()] Compression: none
2025-11-03T17:02:59.482 [DEBUG] [Thread-119463] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:02:59.505 [DEBUG] [Thread-119463] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:02:59.505 [DEBUG] [Thread-119463] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:02:59.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:02:59.506 [DEBUG] [Thread-119463] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:02:59.507 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:02:59.508 [DEBUG] [Thread-119463] [transport.py] [_log()] userauth is OK
2025-11-03T17:02:59.508 [DEBUG] [Thread-119463] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:02:59.508 [DEBUG] [Thread-119463] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:02:59.508 [DEBUG] [Thread-119463] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:02:59.508 [DEBUG] [Thread-119463] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:02:59.531 [INFO] [Thread-119463] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:02:59.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:03:00.285 [DEBUG] [Thread-119463] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:03:00.286 [DEBUG] [Thread-119463] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:03:00.286 [DEBUG] [Thread-119463] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:03:00.327 [DEBUG] [Thread-119463] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:03:00.327 [DEBUG] [Thread-119463] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:03:00.330 [DEBUG] [Thread-119463] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:03:00.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:03:00.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:03:00.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:03:00.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:03:00.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:03:00.360 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:03:00.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:03:00.361 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:03:00.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:03:00.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.626491 -999.00  +25.50  31.92      8  -10.60 1 1 2 1 1   887    0 33.85 -122.71 ----- 27.5 31.9 305.4 35.1 28.3 -33.8 28.2 -33.1 29.2 -32.3 29.6 -32.7
2025-11-03T17:03:00.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:03:00.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:03:00.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.626491
2025-11-03T17:03:00.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:03:00.362 [DEBUG] [Thread-119463] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:03:00.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:03:00.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:03:00.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:03:00.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:03:00.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:02:23', tmtdew=46.76, humidity=3.35, cloud=0.0, wind=35.01, temperature=26.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:02:08.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:03:00.447 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:03:00.467 [DEBUG] [Thread-119466] [transport.py] [_log()] starting thread (client mode): 0x11782f80
2025-11-03T17:03:00.467 [DEBUG] [Thread-119466] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:03:00.486 [DEBUG] [Thread-119466] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:03:00.486 [INFO] [Thread-119466] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:03:00.495 [DEBUG] [Thread-119466] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:03:00.495 [DEBUG] [Thread-119466] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:03:00.495 [DEBUG] [Thread-119466] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:03:00.495 [DEBUG] [Thread-119466] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:03:00.495 [DEBUG] [Thread-119466] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:03:00.496 [DEBUG] [Thread-119466] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:03:00.496 [DEBUG] [Thread-119466] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:03:00.496 [DEBUG] [Thread-119466] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:03:00.496 [DEBUG] [Thread-119466] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:03:00.496 [DEBUG] [Thread-119466] [transport.py] [_log()] client lang: <none>
2025-11-03T17:03:00.496 [DEBUG] [Thread-119466] [transport.py] [_log()] server lang: <none>
2025-11-03T17:03:00.496 [DEBUG] [Thread-119466] [transport.py] [_log()] kex follows: False
2025-11-03T17:03:00.496 [DEBUG] [Thread-119466] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:03:00.496 [DEBUG] [Thread-119466] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:03:00.496 [DEBUG] [Thread-119466] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:03:00.496 [DEBUG] [Thread-119466] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:03:00.496 [DEBUG] [Thread-119466] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:03:00.496 [DEBUG] [Thread-119466] [transport.py] [_log()] Compression: none
2025-11-03T17:03:00.496 [DEBUG] [Thread-119466] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:03:00.551 [DEBUG] [Thread-119466] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:03:00.552 [DEBUG] [Thread-119466] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:03:00.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:03:00.561 [DEBUG] [Thread-119466] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:03:00.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:03:00.614 [DEBUG] [Thread-119466] [transport.py] [_log()] userauth is OK
2025-11-03T17:03:00.614 [DEBUG] [Thread-119466] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:03:00.614 [DEBUG] [Thread-119466] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:03:00.614 [DEBUG] [Thread-119466] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:03:00.614 [DEBUG] [Thread-119466] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:03:00.634 [INFO] [Thread-119466] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:03:00.634 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:03:00.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:03:01.452 [DEBUG] [Thread-119466] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:03:01.452 [DEBUG] [Thread-119466] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:03:01.499 [DEBUG] [Thread-119466] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:03:01.499 [DEBUG] [Thread-119466] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:03:01.508 [DEBUG] [Thread-119466] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:03:01.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:03:01.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:03:01.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:03:01.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:03:01.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:03:01.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:03:01.539 [DEBUG] [Thread-119466] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:03:01.609 [DEBUG] [Thread-119468 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:03:16.668 [DEBUG] [Thread-119469 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:03:19.705 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:03:19.706 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:03:28.427 [DEBUG] [Thread-119470 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:03:31.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:03:31.562 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:03:31.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:03:31.707 [DEBUG] [Thread-119471 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:03:32.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 3, 28), 46.84, 3.74, 0.0, 35.94, 26.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:03:32.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:03:28
2025-11-03T17:03:32.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:03:32.673 [DEBUG] [Thread-119472] [transport.py] [_log()] starting thread (client mode): 0x117821a0
2025-11-03T17:03:32.673 [DEBUG] [Thread-119472] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:03:32.696 [DEBUG] [Thread-119472] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:03:32.696 [INFO] [Thread-119472] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:03:32.699 [DEBUG] [Thread-119472] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:03:32.699 [DEBUG] [Thread-119472] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:03:32.699 [DEBUG] [Thread-119472] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:03:32.699 [DEBUG] [Thread-119472] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:03:32.699 [DEBUG] [Thread-119472] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:03:32.699 [DEBUG] [Thread-119472] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:03:32.699 [DEBUG] [Thread-119472] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:03:32.699 [DEBUG] [Thread-119472] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:03:32.699 [DEBUG] [Thread-119472] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:03:32.699 [DEBUG] [Thread-119472] [transport.py] [_log()] client lang: <none>
2025-11-03T17:03:32.699 [DEBUG] [Thread-119472] [transport.py] [_log()] server lang: <none>
2025-11-03T17:03:32.699 [DEBUG] [Thread-119472] [transport.py] [_log()] kex follows: False
2025-11-03T17:03:32.699 [DEBUG] [Thread-119472] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:03:32.699 [DEBUG] [Thread-119472] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:03:32.699 [DEBUG] [Thread-119472] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:03:32.699 [DEBUG] [Thread-119472] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:03:32.699 [DEBUG] [Thread-119472] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:03:32.699 [DEBUG] [Thread-119472] [transport.py] [_log()] Compression: none
2025-11-03T17:03:32.699 [DEBUG] [Thread-119472] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:03:32.715 [DEBUG] [Thread-119472] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:03:32.715 [DEBUG] [Thread-119472] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:03:32.715 [DEBUG] [Thread-119472] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:03:32.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:03:32.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:03:32.716 [DEBUG] [Thread-119472] [transport.py] [_log()] userauth is OK
2025-11-03T17:03:32.716 [DEBUG] [Thread-119472] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:03:32.716 [DEBUG] [Thread-119472] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:03:32.716 [DEBUG] [Thread-119472] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:03:32.716 [DEBUG] [Thread-119472] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:03:32.726 [INFO] [Thread-119472] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:03:32.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:03:33.341 [DEBUG] [Thread-119472] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:03:33.341 [DEBUG] [Thread-119472] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:03:33.341 [DEBUG] [Thread-119472] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:03:33.382 [DEBUG] [Thread-119472] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:03:33.382 [DEBUG] [Thread-119472] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:03:33.384 [DEBUG] [Thread-119472] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:03:33.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:03:33.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:03:33.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:03:33.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:03:33.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:03:33.402 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:03:33.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:03:33.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:03:33.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:03:33.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.626838 -999.00  +25.80  29.84      8  -10.60 1 1 1 1 1   887    0 32.94 -112.29 ----- 30.5 29.8 301.0 32.6 28.2 -33.3 28.2 -32.3 29.1 -33.6 29.6 -32.5
2025-11-03T17:03:33.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:03:33.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:03:33.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.626838
2025-11-03T17:03:33.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:03:33.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:03:33.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:03:33.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:03:33.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:03:33.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:03:28', tmtdew=46.84, humidity=3.74, cloud=0.0, wind=35.94, temperature=26.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:02:38.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:03:33.403 [DEBUG] [Thread-119472] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:03:33.478 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:03:33.497 [DEBUG] [Thread-119475] [transport.py] [_log()] starting thread (client mode): 0x1174cf10
2025-11-03T17:03:33.497 [DEBUG] [Thread-119475] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:03:33.512 [DEBUG] [Thread-119475] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:03:33.512 [INFO] [Thread-119475] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:03:33.520 [DEBUG] [Thread-119475] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:03:33.520 [DEBUG] [Thread-119475] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:03:33.520 [DEBUG] [Thread-119475] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:03:33.520 [DEBUG] [Thread-119475] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:03:33.520 [DEBUG] [Thread-119475] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:03:33.520 [DEBUG] [Thread-119475] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:03:33.520 [DEBUG] [Thread-119475] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:03:33.520 [DEBUG] [Thread-119475] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:03:33.520 [DEBUG] [Thread-119475] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:03:33.520 [DEBUG] [Thread-119475] [transport.py] [_log()] client lang: <none>
2025-11-03T17:03:33.520 [DEBUG] [Thread-119475] [transport.py] [_log()] server lang: <none>
2025-11-03T17:03:33.520 [DEBUG] [Thread-119475] [transport.py] [_log()] kex follows: False
2025-11-03T17:03:33.520 [DEBUG] [Thread-119475] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:03:33.520 [DEBUG] [Thread-119475] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:03:33.520 [DEBUG] [Thread-119475] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:03:33.520 [DEBUG] [Thread-119475] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:03:33.520 [DEBUG] [Thread-119475] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:03:33.520 [DEBUG] [Thread-119475] [transport.py] [_log()] Compression: none
2025-11-03T17:03:33.520 [DEBUG] [Thread-119475] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:03:33.582 [DEBUG] [Thread-119475] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:03:33.582 [DEBUG] [Thread-119475] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:03:33.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:03:33.582 [DEBUG] [Thread-119475] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:03:33.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:03:33.639 [DEBUG] [Thread-119475] [transport.py] [_log()] userauth is OK
2025-11-03T17:03:33.639 [DEBUG] [Thread-119475] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:03:33.639 [DEBUG] [Thread-119475] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:03:33.639 [DEBUG] [Thread-119475] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:03:33.639 [DEBUG] [Thread-119475] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:03:33.654 [INFO] [Thread-119475] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:03:33.654 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:03:33.654 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:03:34.486 [DEBUG] [Thread-119475] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:03:34.486 [DEBUG] [Thread-119475] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:03:34.535 [DEBUG] [Thread-119475] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:03:34.535 [DEBUG] [Thread-119475] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:03:34.543 [DEBUG] [Thread-119475] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:03:34.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:03:34.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:03:34.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:03:34.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:03:34.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:03:34.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:03:34.575 [DEBUG] [Thread-119475] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:03:46.743 [DEBUG] [Thread-119477 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:04:01.799 [DEBUG] [Thread-119478 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:04:04.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:04:04.598 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:04:04.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:04:05.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 4), 46.73, 3.77, 0.0, 36.4, 26.02, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:04:05.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:04:00
2025-11-03T17:04:05.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:04:05.650 [DEBUG] [Thread-119479] [transport.py] [_log()] starting thread (client mode): 0x11781390
2025-11-03T17:04:05.650 [DEBUG] [Thread-119479] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:04:05.670 [DEBUG] [Thread-119479] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:04:05.670 [INFO] [Thread-119479] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:04:05.674 [DEBUG] [Thread-119479] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:04:05.674 [DEBUG] [Thread-119479] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:04:05.674 [DEBUG] [Thread-119479] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:04:05.674 [DEBUG] [Thread-119479] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:04:05.674 [DEBUG] [Thread-119479] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:04:05.674 [DEBUG] [Thread-119479] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:04:05.674 [DEBUG] [Thread-119479] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:04:05.674 [DEBUG] [Thread-119479] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:04:05.674 [DEBUG] [Thread-119479] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:04:05.674 [DEBUG] [Thread-119479] [transport.py] [_log()] client lang: <none>
2025-11-03T17:04:05.674 [DEBUG] [Thread-119479] [transport.py] [_log()] server lang: <none>
2025-11-03T17:04:05.674 [DEBUG] [Thread-119479] [transport.py] [_log()] kex follows: False
2025-11-03T17:04:05.674 [DEBUG] [Thread-119479] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:04:05.675 [DEBUG] [Thread-119479] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:04:05.675 [DEBUG] [Thread-119479] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:04:05.675 [DEBUG] [Thread-119479] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:04:05.675 [DEBUG] [Thread-119479] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:04:05.675 [DEBUG] [Thread-119479] [transport.py] [_log()] Compression: none
2025-11-03T17:04:05.675 [DEBUG] [Thread-119479] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:04:05.692 [DEBUG] [Thread-119479] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:04:05.693 [DEBUG] [Thread-119479] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:04:05.694 [DEBUG] [Thread-119479] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:04:05.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:04:05.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:04:05.696 [DEBUG] [Thread-119479] [transport.py] [_log()] userauth is OK
2025-11-03T17:04:05.696 [DEBUG] [Thread-119479] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:04:05.696 [DEBUG] [Thread-119479] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:04:05.696 [DEBUG] [Thread-119479] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:04:05.696 [DEBUG] [Thread-119479] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:04:05.710 [INFO] [Thread-119479] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:04:05.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:04:06.474 [DEBUG] [Thread-119479] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:04:06.474 [DEBUG] [Thread-119479] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:04:06.475 [DEBUG] [Thread-119479] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:04:06.515 [DEBUG] [Thread-119479] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:04:06.515 [DEBUG] [Thread-119479] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:04:06.518 [DEBUG] [Thread-119479] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:04:06.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:04:06.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:04:06.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:04:06.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:04:06.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:04:06.553 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:04:06.553 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:04:06.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:04:06.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:04:06.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.627186 -999.00  +25.70  32.47      8  -10.70 1 1 2 1 1   887    0 33.30 -117.91 ----- 33.5 32.5 303.0 37.3 28.2 -33.4 28.2 -32.7 29.1 -34.5 29.6 -32.7
2025-11-03T17:04:06.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:04:06.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:04:06.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.627186
2025-11-03T17:04:06.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:04:06.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:04:06.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:04:06.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:04:06.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:04:06.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:04:00', tmtdew=46.73, humidity=3.77, cloud=0.0, wind=36.4, temperature=26.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:03:08.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:04:06.556 [DEBUG] [Thread-119479] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:04:06.634 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:04:06.655 [DEBUG] [Thread-119482] [transport.py] [_log()] starting thread (client mode): 0x1174df60
2025-11-03T17:04:06.655 [DEBUG] [Thread-119482] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:04:06.670 [DEBUG] [Thread-119482] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:04:06.671 [INFO] [Thread-119482] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:04:06.678 [DEBUG] [Thread-119482] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:04:06.679 [DEBUG] [Thread-119482] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:04:06.679 [DEBUG] [Thread-119482] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:04:06.679 [DEBUG] [Thread-119482] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:04:06.679 [DEBUG] [Thread-119482] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:04:06.679 [DEBUG] [Thread-119482] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:04:06.679 [DEBUG] [Thread-119482] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:04:06.679 [DEBUG] [Thread-119482] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:04:06.679 [DEBUG] [Thread-119482] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:04:06.679 [DEBUG] [Thread-119482] [transport.py] [_log()] client lang: <none>
2025-11-03T17:04:06.679 [DEBUG] [Thread-119482] [transport.py] [_log()] server lang: <none>
2025-11-03T17:04:06.680 [DEBUG] [Thread-119482] [transport.py] [_log()] kex follows: False
2025-11-03T17:04:06.680 [DEBUG] [Thread-119482] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:04:06.680 [DEBUG] [Thread-119482] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:04:06.680 [DEBUG] [Thread-119482] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:04:06.680 [DEBUG] [Thread-119482] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:04:06.680 [DEBUG] [Thread-119482] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:04:06.680 [DEBUG] [Thread-119482] [transport.py] [_log()] Compression: none
2025-11-03T17:04:06.680 [DEBUG] [Thread-119482] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:04:06.740 [DEBUG] [Thread-119482] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:04:06.741 [DEBUG] [Thread-119482] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:04:06.741 [DEBUG] [Thread-119482] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:04:06.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:04:06.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:04:06.799 [DEBUG] [Thread-119482] [transport.py] [_log()] userauth is OK
2025-11-03T17:04:06.800 [DEBUG] [Thread-119482] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:04:06.800 [DEBUG] [Thread-119482] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:04:06.800 [DEBUG] [Thread-119482] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:04:06.800 [DEBUG] [Thread-119482] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:04:06.814 [INFO] [Thread-119482] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:04:06.814 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:04:06.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:04:07.649 [DEBUG] [Thread-119482] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:04:07.650 [DEBUG] [Thread-119482] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:04:07.698 [DEBUG] [Thread-119482] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:04:07.699 [DEBUG] [Thread-119482] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:04:07.708 [DEBUG] [Thread-119482] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:04:07.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:04:07.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:04:07.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:04:07.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:04:07.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:04:07.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:04:07.747 [DEBUG] [Thread-119482] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:04:16.835 [DEBUG] [Thread-119484 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:04:19.847 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:04:19.848 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:04:28.636 [DEBUG] [Thread-119485 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:04:31.903 [DEBUG] [Thread-119486 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:04:37.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:04:37.768 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:04:37.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:04:38.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 4, 33), 46.43, 3.82, 0.0, 31.9, 25.85, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:04:38.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:04:33
2025-11-03T17:04:38.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:04:38.763 [DEBUG] [Thread-119487] [transport.py] [_log()] starting thread (client mode): 0x141da800
2025-11-03T17:04:38.764 [DEBUG] [Thread-119487] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:04:38.784 [DEBUG] [Thread-119487] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:04:38.784 [INFO] [Thread-119487] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:04:38.787 [DEBUG] [Thread-119487] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:04:38.788 [DEBUG] [Thread-119487] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:04:38.788 [DEBUG] [Thread-119487] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:04:38.788 [DEBUG] [Thread-119487] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:04:38.788 [DEBUG] [Thread-119487] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:04:38.788 [DEBUG] [Thread-119487] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:04:38.789 [DEBUG] [Thread-119487] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:04:38.789 [DEBUG] [Thread-119487] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:04:38.789 [DEBUG] [Thread-119487] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:04:38.789 [DEBUG] [Thread-119487] [transport.py] [_log()] client lang: <none>
2025-11-03T17:04:38.789 [DEBUG] [Thread-119487] [transport.py] [_log()] server lang: <none>
2025-11-03T17:04:38.789 [DEBUG] [Thread-119487] [transport.py] [_log()] kex follows: False
2025-11-03T17:04:38.789 [DEBUG] [Thread-119487] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:04:38.789 [DEBUG] [Thread-119487] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:04:38.789 [DEBUG] [Thread-119487] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:04:38.789 [DEBUG] [Thread-119487] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:04:38.789 [DEBUG] [Thread-119487] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:04:38.789 [DEBUG] [Thread-119487] [transport.py] [_log()] Compression: none
2025-11-03T17:04:38.789 [DEBUG] [Thread-119487] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:04:38.808 [DEBUG] [Thread-119487] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:04:38.809 [DEBUG] [Thread-119487] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:04:38.809 [DEBUG] [Thread-119487] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:04:38.809 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:04:38.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:04:38.812 [DEBUG] [Thread-119487] [transport.py] [_log()] userauth is OK
2025-11-03T17:04:38.812 [DEBUG] [Thread-119487] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:04:38.812 [DEBUG] [Thread-119487] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:04:38.812 [DEBUG] [Thread-119487] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:04:38.812 [DEBUG] [Thread-119487] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:04:38.849 [INFO] [Thread-119487] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:04:38.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:04:39.518 [DEBUG] [Thread-119487] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:04:39.519 [DEBUG] [Thread-119487] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:04:39.519 [DEBUG] [Thread-119487] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:04:39.560 [DEBUG] [Thread-119487] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:04:39.560 [DEBUG] [Thread-119487] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:04:39.564 [DEBUG] [Thread-119487] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:04:39.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:04:39.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:04:39.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:04:39.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:04:39.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:04:39.588 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:04:39.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:04:39.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:04:39.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:04:39.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.627533 -999.00  +25.50  33.60      8  -10.80 1 1 2 1 1   887    0 32.93 -129.82 ----- 27.7 33.6 293.6 37.8 28.1 -34.1 28.3 -32.7 29.1 -32.3 29.6 -32.8
2025-11-03T17:04:39.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:04:39.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:04:39.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.627533
2025-11-03T17:04:39.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:04:39.591 [DEBUG] [Thread-119487] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:04:39.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:04:39.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:04:39.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:04:39.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:04:39.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:04:33', tmtdew=46.43, humidity=3.82, cloud=0.0, wind=31.9, temperature=25.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:03:38.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:04:39.674 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:04:39.697 [DEBUG] [Thread-119490] [transport.py] [_log()] starting thread (client mode): 0x1174c220
2025-11-03T17:04:39.697 [DEBUG] [Thread-119490] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:04:39.710 [DEBUG] [Thread-119490] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:04:39.710 [INFO] [Thread-119490] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:04:39.718 [DEBUG] [Thread-119490] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:04:39.718 [DEBUG] [Thread-119490] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:04:39.718 [DEBUG] [Thread-119490] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:04:39.718 [DEBUG] [Thread-119490] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:04:39.718 [DEBUG] [Thread-119490] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:04:39.718 [DEBUG] [Thread-119490] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:04:39.718 [DEBUG] [Thread-119490] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:04:39.719 [DEBUG] [Thread-119490] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:04:39.719 [DEBUG] [Thread-119490] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:04:39.719 [DEBUG] [Thread-119490] [transport.py] [_log()] client lang: <none>
2025-11-03T17:04:39.719 [DEBUG] [Thread-119490] [transport.py] [_log()] server lang: <none>
2025-11-03T17:04:39.719 [DEBUG] [Thread-119490] [transport.py] [_log()] kex follows: False
2025-11-03T17:04:39.719 [DEBUG] [Thread-119490] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:04:39.719 [DEBUG] [Thread-119490] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:04:39.719 [DEBUG] [Thread-119490] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:04:39.719 [DEBUG] [Thread-119490] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:04:39.719 [DEBUG] [Thread-119490] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:04:39.719 [DEBUG] [Thread-119490] [transport.py] [_log()] Compression: none
2025-11-03T17:04:39.719 [DEBUG] [Thread-119490] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:04:39.776 [DEBUG] [Thread-119490] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:04:39.776 [DEBUG] [Thread-119490] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:04:39.777 [DEBUG] [Thread-119490] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:04:39.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:04:39.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:04:39.832 [DEBUG] [Thread-119490] [transport.py] [_log()] userauth is OK
2025-11-03T17:04:39.832 [DEBUG] [Thread-119490] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:04:39.832 [DEBUG] [Thread-119490] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:04:39.833 [DEBUG] [Thread-119490] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:04:39.833 [DEBUG] [Thread-119490] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:04:39.851 [INFO] [Thread-119490] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:04:39.851 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:04:39.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:04:40.680 [DEBUG] [Thread-119490] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:04:40.680 [DEBUG] [Thread-119490] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:04:40.727 [DEBUG] [Thread-119490] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:04:40.727 [DEBUG] [Thread-119490] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:04:40.736 [DEBUG] [Thread-119490] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:04:40.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:04:40.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:04:40.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:04:40.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:04:40.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:04:40.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:04:40.768 [DEBUG] [Thread-119490] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:04:46.952 [DEBUG] [Thread-119492 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:05:02.010 [DEBUG] [Thread-119493 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:05:10.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:05:10.791 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:05:10.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:05:11.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 5, 5), 46.38, 3.84, 0.0, 30.38, 25.89, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:05:11.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:05:05
2025-11-03T17:05:11.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:05:11.888 [DEBUG] [Thread-119494] [transport.py] [_log()] starting thread (client mode): 0x11781780
2025-11-03T17:05:11.888 [DEBUG] [Thread-119494] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:05:11.908 [DEBUG] [Thread-119494] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:05:11.908 [INFO] [Thread-119494] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:05:11.911 [DEBUG] [Thread-119494] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:05:11.911 [DEBUG] [Thread-119494] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:05:11.911 [DEBUG] [Thread-119494] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:05:11.911 [DEBUG] [Thread-119494] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:05:11.911 [DEBUG] [Thread-119494] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:05:11.911 [DEBUG] [Thread-119494] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:05:11.911 [DEBUG] [Thread-119494] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:05:11.912 [DEBUG] [Thread-119494] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:05:11.912 [DEBUG] [Thread-119494] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:05:11.912 [DEBUG] [Thread-119494] [transport.py] [_log()] client lang: <none>
2025-11-03T17:05:11.912 [DEBUG] [Thread-119494] [transport.py] [_log()] server lang: <none>
2025-11-03T17:05:11.912 [DEBUG] [Thread-119494] [transport.py] [_log()] kex follows: False
2025-11-03T17:05:11.912 [DEBUG] [Thread-119494] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:05:11.912 [DEBUG] [Thread-119494] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:05:11.912 [DEBUG] [Thread-119494] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:05:11.913 [DEBUG] [Thread-119494] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:05:11.913 [DEBUG] [Thread-119494] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:05:11.913 [DEBUG] [Thread-119494] [transport.py] [_log()] Compression: none
2025-11-03T17:05:11.913 [DEBUG] [Thread-119494] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:05:11.931 [DEBUG] [Thread-119494] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:05:11.932 [DEBUG] [Thread-119494] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:05:11.932 [DEBUG] [Thread-119494] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:05:11.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:05:11.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:05:11.973 [DEBUG] [Thread-119494] [transport.py] [_log()] userauth is OK
2025-11-03T17:05:11.973 [DEBUG] [Thread-119494] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:05:11.973 [DEBUG] [Thread-119494] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:05:11.974 [DEBUG] [Thread-119494] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:05:11.974 [DEBUG] [Thread-119494] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:05:12.007 [INFO] [Thread-119494] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:05:12.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:05:17.064 [DEBUG] [Thread-119496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:05:19.989 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:05:19.990 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:05:23.132 [DEBUG] [Thread-119494] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:05:23.132 [DEBUG] [Thread-119494] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:05:23.133 [DEBUG] [Thread-119494] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:05:23.173 [DEBUG] [Thread-119494] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:05:23.173 [DEBUG] [Thread-119494] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:05:23.176 [DEBUG] [Thread-119494] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:05:23.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:05:23.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:05:23.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:05:23.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:05:23.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:05:23.218 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:05:23.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:05:23.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:05:23.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:05:23.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.628227 -999.00  +25.90  27.37      8  -10.30 1 1 1 1 1   887    0 33.23 -125.30 ----- 31.4 27.4 311.6 33.5 28.3 -33.1 28.2 -32.1 29.2 -32.9 29.5 -32.2
2025-11-03T17:05:23.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:05:23.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:05:23.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.628227
2025-11-03T17:05:23.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:05:23.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:05:23.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:05:23.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:05:23.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:05:23.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:05:05', tmtdew=46.38, humidity=3.84, cloud=0.0, wind=30.38, temperature=25.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:04:38.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:05:23.221 [DEBUG] [Thread-119494] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:05:23.306 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:05:23.327 [DEBUG] [Thread-119498] [transport.py] [_log()] starting thread (client mode): 0x11798250
2025-11-03T17:05:23.328 [DEBUG] [Thread-119498] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:05:23.342 [DEBUG] [Thread-119498] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:05:23.343 [INFO] [Thread-119498] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:05:23.350 [DEBUG] [Thread-119498] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:05:23.351 [DEBUG] [Thread-119498] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:05:23.351 [DEBUG] [Thread-119498] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:05:23.351 [DEBUG] [Thread-119498] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:05:23.351 [DEBUG] [Thread-119498] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:05:23.351 [DEBUG] [Thread-119498] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:05:23.351 [DEBUG] [Thread-119498] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:05:23.351 [DEBUG] [Thread-119498] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:05:23.351 [DEBUG] [Thread-119498] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:05:23.351 [DEBUG] [Thread-119498] [transport.py] [_log()] client lang: <none>
2025-11-03T17:05:23.351 [DEBUG] [Thread-119498] [transport.py] [_log()] server lang: <none>
2025-11-03T17:05:23.351 [DEBUG] [Thread-119498] [transport.py] [_log()] kex follows: False
2025-11-03T17:05:23.351 [DEBUG] [Thread-119498] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:05:23.351 [DEBUG] [Thread-119498] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:05:23.351 [DEBUG] [Thread-119498] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:05:23.352 [DEBUG] [Thread-119498] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:05:23.352 [DEBUG] [Thread-119498] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:05:23.352 [DEBUG] [Thread-119498] [transport.py] [_log()] Compression: none
2025-11-03T17:05:23.352 [DEBUG] [Thread-119498] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:05:23.408 [DEBUG] [Thread-119498] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:05:23.408 [DEBUG] [Thread-119498] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:05:23.409 [DEBUG] [Thread-119498] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:05:23.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:05:23.410 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:05:23.464 [DEBUG] [Thread-119498] [transport.py] [_log()] userauth is OK
2025-11-03T17:05:23.464 [DEBUG] [Thread-119498] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:05:23.464 [DEBUG] [Thread-119498] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:05:23.464 [DEBUG] [Thread-119498] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:05:23.464 [DEBUG] [Thread-119498] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:05:23.488 [INFO] [Thread-119498] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:05:23.498 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:05:23.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:05:24.341 [DEBUG] [Thread-119498] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:05:24.342 [DEBUG] [Thread-119498] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:05:24.390 [DEBUG] [Thread-119498] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:05:24.390 [DEBUG] [Thread-119498] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:05:24.400 [DEBUG] [Thread-119498] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:05:24.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:05:24.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:05:24.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:05:24.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:05:24.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:05:24.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:05:24.447 [DEBUG] [Thread-119498] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:05:28.743 [DEBUG] [Thread-119500 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:05:32.105 [DEBUG] [Thread-119501 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:05:47.156 [DEBUG] [Thread-119502 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:05:54.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:05:54.469 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:05:54.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:05:55.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 5, 38), 46.39, 3.8, 0.0, 29.38, 25.89, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:05:55.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:05:38
2025-11-03T17:05:55.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:05:55.485 [DEBUG] [Thread-119503] [transport.py] [_log()] starting thread (client mode): 0x117e9c90
2025-11-03T17:05:55.485 [DEBUG] [Thread-119503] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:05:55.507 [DEBUG] [Thread-119503] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:05:55.507 [INFO] [Thread-119503] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:05:55.509 [DEBUG] [Thread-119503] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:05:55.509 [DEBUG] [Thread-119503] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:05:55.510 [DEBUG] [Thread-119503] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:05:55.510 [DEBUG] [Thread-119503] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:05:55.510 [DEBUG] [Thread-119503] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:05:55.510 [DEBUG] [Thread-119503] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:05:55.510 [DEBUG] [Thread-119503] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:05:55.510 [DEBUG] [Thread-119503] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:05:55.510 [DEBUG] [Thread-119503] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:05:55.510 [DEBUG] [Thread-119503] [transport.py] [_log()] client lang: <none>
2025-11-03T17:05:55.510 [DEBUG] [Thread-119503] [transport.py] [_log()] server lang: <none>
2025-11-03T17:05:55.510 [DEBUG] [Thread-119503] [transport.py] [_log()] kex follows: False
2025-11-03T17:05:55.510 [DEBUG] [Thread-119503] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:05:55.510 [DEBUG] [Thread-119503] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:05:55.510 [DEBUG] [Thread-119503] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:05:55.510 [DEBUG] [Thread-119503] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:05:55.510 [DEBUG] [Thread-119503] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:05:55.510 [DEBUG] [Thread-119503] [transport.py] [_log()] Compression: none
2025-11-03T17:05:55.510 [DEBUG] [Thread-119503] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:05:55.529 [DEBUG] [Thread-119503] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:05:55.529 [DEBUG] [Thread-119503] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:05:55.530 [DEBUG] [Thread-119503] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:05:55.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:05:55.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:05:55.532 [DEBUG] [Thread-119503] [transport.py] [_log()] userauth is OK
2025-11-03T17:05:55.533 [DEBUG] [Thread-119503] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:05:55.533 [DEBUG] [Thread-119503] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:05:55.533 [DEBUG] [Thread-119503] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:05:55.533 [DEBUG] [Thread-119503] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:05:55.569 [INFO] [Thread-119503] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:05:55.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:05:56.219 [DEBUG] [Thread-119503] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:05:56.219 [DEBUG] [Thread-119503] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:05:56.219 [DEBUG] [Thread-119503] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:05:56.260 [DEBUG] [Thread-119503] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:05:56.260 [DEBUG] [Thread-119503] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:05:56.262 [DEBUG] [Thread-119503] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:05:56.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:05:56.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:05:56.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:05:56.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:05:56.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:05:56.281 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:05:56.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:05:56.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:05:56.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:05:56.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.628574 -999.00  +25.60  32.82      8  -10.60 1 1 2 1 1   887    0 32.28 -129.98 ----- 28.8 32.8 311.0 36.9 28.2 -33.6 28.2 -32.7 29.2 -31.6 29.5 -33.0
2025-11-03T17:05:56.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:05:56.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:05:56.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.628574
2025-11-03T17:05:56.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:05:56.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:05:56.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:05:56.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:05:56.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:05:56.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:05:38', tmtdew=46.39, humidity=3.8, cloud=0.0, wind=29.38, temperature=25.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:05:08.794', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:05:56.283 [DEBUG] [Thread-119503] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:05:56.355 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:05:56.376 [DEBUG] [Thread-119506] [transport.py] [_log()] starting thread (client mode): 0x117bf130
2025-11-03T17:05:56.376 [DEBUG] [Thread-119506] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:05:56.391 [DEBUG] [Thread-119506] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:05:56.391 [INFO] [Thread-119506] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:05:56.398 [DEBUG] [Thread-119506] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:05:56.398 [DEBUG] [Thread-119506] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:05:56.399 [DEBUG] [Thread-119506] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:05:56.399 [DEBUG] [Thread-119506] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:05:56.399 [DEBUG] [Thread-119506] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:05:56.399 [DEBUG] [Thread-119506] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:05:56.399 [DEBUG] [Thread-119506] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:05:56.399 [DEBUG] [Thread-119506] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:05:56.399 [DEBUG] [Thread-119506] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:05:56.399 [DEBUG] [Thread-119506] [transport.py] [_log()] client lang: <none>
2025-11-03T17:05:56.399 [DEBUG] [Thread-119506] [transport.py] [_log()] server lang: <none>
2025-11-03T17:05:56.399 [DEBUG] [Thread-119506] [transport.py] [_log()] kex follows: False
2025-11-03T17:05:56.399 [DEBUG] [Thread-119506] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:05:56.399 [DEBUG] [Thread-119506] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:05:56.399 [DEBUG] [Thread-119506] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:05:56.399 [DEBUG] [Thread-119506] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:05:56.399 [DEBUG] [Thread-119506] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:05:56.399 [DEBUG] [Thread-119506] [transport.py] [_log()] Compression: none
2025-11-03T17:05:56.399 [DEBUG] [Thread-119506] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:05:56.454 [DEBUG] [Thread-119506] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:05:56.455 [DEBUG] [Thread-119506] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:05:56.455 [DEBUG] [Thread-119506] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:05:56.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:05:56.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:05:56.511 [DEBUG] [Thread-119506] [transport.py] [_log()] userauth is OK
2025-11-03T17:05:56.511 [DEBUG] [Thread-119506] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:05:56.511 [DEBUG] [Thread-119506] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:05:56.511 [DEBUG] [Thread-119506] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:05:56.511 [DEBUG] [Thread-119506] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:05:56.526 [INFO] [Thread-119506] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:05:56.526 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:05:56.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:05:57.345 [DEBUG] [Thread-119506] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:05:57.346 [DEBUG] [Thread-119506] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:05:57.394 [DEBUG] [Thread-119506] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:05:57.394 [DEBUG] [Thread-119506] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:05:57.403 [DEBUG] [Thread-119506] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:05:57.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:05:57.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:05:57.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:05:57.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:05:57.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:05:57.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:05:57.440 [DEBUG] [Thread-119506] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:06:02.198 [DEBUG] [Thread-119508 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:06:17.273 [DEBUG] [Thread-119509 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:06:20.134 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:06:20.136 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:06:27.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:06:27.444 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:06:27.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:06:28.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 6, 10), 46.15, 3.87, 0.0, 26.7, 25.79, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:06:28.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:06:10
2025-11-03T17:06:28.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:06:28.450 [DEBUG] [Thread-119510] [transport.py] [_log()] starting thread (client mode): 0x117eb6a0
2025-11-03T17:06:28.450 [DEBUG] [Thread-119510] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:06:28.470 [DEBUG] [Thread-119510] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:06:28.470 [INFO] [Thread-119510] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:06:28.477 [DEBUG] [Thread-119510] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:06:28.477 [DEBUG] [Thread-119510] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:06:28.477 [DEBUG] [Thread-119510] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:06:28.477 [DEBUG] [Thread-119510] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:06:28.477 [DEBUG] [Thread-119510] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:06:28.477 [DEBUG] [Thread-119510] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:06:28.477 [DEBUG] [Thread-119510] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:06:28.477 [DEBUG] [Thread-119510] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:06:28.477 [DEBUG] [Thread-119510] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:06:28.477 [DEBUG] [Thread-119510] [transport.py] [_log()] client lang: <none>
2025-11-03T17:06:28.477 [DEBUG] [Thread-119510] [transport.py] [_log()] server lang: <none>
2025-11-03T17:06:28.477 [DEBUG] [Thread-119510] [transport.py] [_log()] kex follows: False
2025-11-03T17:06:28.477 [DEBUG] [Thread-119510] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:06:28.477 [DEBUG] [Thread-119510] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:06:28.477 [DEBUG] [Thread-119510] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:06:28.477 [DEBUG] [Thread-119510] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:06:28.477 [DEBUG] [Thread-119510] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:06:28.477 [DEBUG] [Thread-119510] [transport.py] [_log()] Compression: none
2025-11-03T17:06:28.477 [DEBUG] [Thread-119510] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:06:28.487 [DEBUG] [Thread-119510] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:06:28.487 [DEBUG] [Thread-119510] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:06:28.487 [DEBUG] [Thread-119510] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:06:28.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:06:28.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:06:28.496 [DEBUG] [Thread-119510] [transport.py] [_log()] userauth is OK
2025-11-03T17:06:28.497 [DEBUG] [Thread-119510] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:06:28.497 [DEBUG] [Thread-119510] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:06:28.497 [DEBUG] [Thread-119510] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:06:28.497 [DEBUG] [Thread-119510] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:06:28.505 [INFO] [Thread-119510] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:06:28.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:06:28.946 [DEBUG] [Thread-119512 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:06:29.188 [DEBUG] [Thread-119510] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:06:29.189 [DEBUG] [Thread-119510] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:06:29.189 [DEBUG] [Thread-119510] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:06:29.230 [DEBUG] [Thread-119510] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:06:29.230 [DEBUG] [Thread-119510] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:06:29.234 [DEBUG] [Thread-119510] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:06:29.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:06:29.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:06:29.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:06:29.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:06:29.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:06:29.267 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:06:29.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:06:29.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:06:29.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:06:29.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.628922 -999.00  +25.30  28.58      8  -10.80 1 1 1 1 1   887    0 33.10 -117.10 ----- 23.8 28.6 306.8 39.6 28.2 -34.0 28.3 -32.4 29.2 -33.5 29.6 -32.4
2025-11-03T17:06:29.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:06:29.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:06:29.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.628922
2025-11-03T17:06:29.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:06:29.270 [DEBUG] [Thread-119510] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:06:29.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:06:29.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:06:29.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:06:29.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:06:29.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:06:10', tmtdew=46.15, humidity=3.87, cloud=0.0, wind=26.7, temperature=25.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:05:38.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:06:29.358 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:06:32.314 [DEBUG] [Thread-119514 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:06:47.379 [DEBUG] [Thread-119515 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:07:02.426 [DEBUG] [Thread-119516 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:07:17.464 [DEBUG] [Thread-119517 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:07:20.276 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:07:20.277 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:07:29.012 [DEBUG] [Thread-119518 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:07:32.501 [DEBUG] [Thread-119519 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:07:47.552 [DEBUG] [Thread-119520 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:08:02.594 [DEBUG] [Thread-119521 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:08:17.634 [DEBUG] [Thread-119522 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:08:20.426 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:08:20.428 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:08:29.288 [DEBUG] [Thread-119523 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:08:32.680 [DEBUG] [Thread-119524 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:08:43.744 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T17:08:47.721 [DEBUG] [Thread-119525 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:09:02.759 [DEBUG] [Thread-119526 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:09:13.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:09:13.765 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:09:13.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:09:14.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 8, 52), 47.0, 3.75, 0.0, 25.13, 26.58, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:09:14.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:08:52
2025-11-03T17:09:14.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:09:14.845 [DEBUG] [Thread-119527] [transport.py] [_log()] starting thread (client mode): 0x141db940
2025-11-03T17:09:14.846 [DEBUG] [Thread-119527] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:09:14.860 [DEBUG] [Thread-119527] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:09:14.860 [INFO] [Thread-119527] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:09:14.864 [DEBUG] [Thread-119527] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:09:14.864 [DEBUG] [Thread-119527] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:09:14.864 [DEBUG] [Thread-119527] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:09:14.864 [DEBUG] [Thread-119527] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:09:14.864 [DEBUG] [Thread-119527] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:09:14.864 [DEBUG] [Thread-119527] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:09:14.864 [DEBUG] [Thread-119527] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:09:14.864 [DEBUG] [Thread-119527] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:09:14.864 [DEBUG] [Thread-119527] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:09:14.864 [DEBUG] [Thread-119527] [transport.py] [_log()] client lang: <none>
2025-11-03T17:09:14.864 [DEBUG] [Thread-119527] [transport.py] [_log()] server lang: <none>
2025-11-03T17:09:14.864 [DEBUG] [Thread-119527] [transport.py] [_log()] kex follows: False
2025-11-03T17:09:14.864 [DEBUG] [Thread-119527] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:09:14.864 [DEBUG] [Thread-119527] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:09:14.864 [DEBUG] [Thread-119527] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:09:14.865 [DEBUG] [Thread-119527] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:09:14.865 [DEBUG] [Thread-119527] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:09:14.865 [DEBUG] [Thread-119527] [transport.py] [_log()] Compression: none
2025-11-03T17:09:14.865 [DEBUG] [Thread-119527] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:09:14.895 [DEBUG] [Thread-119527] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:09:14.898 [DEBUG] [Thread-119527] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:09:14.900 [DEBUG] [Thread-119527] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:09:14.900 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:09:14.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:09:14.902 [DEBUG] [Thread-119527] [transport.py] [_log()] userauth is OK
2025-11-03T17:09:14.902 [DEBUG] [Thread-119527] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:09:14.902 [DEBUG] [Thread-119527] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:09:14.902 [DEBUG] [Thread-119527] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:09:14.902 [DEBUG] [Thread-119527] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:09:14.932 [INFO] [Thread-119527] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:09:14.937 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:09:15.573 [DEBUG] [Thread-119527] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:09:15.573 [DEBUG] [Thread-119527] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:09:15.582 [DEBUG] [Thread-119527] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:09:15.614 [DEBUG] [Thread-119527] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:09:15.614 [DEBUG] [Thread-119527] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:09:15.616 [DEBUG] [Thread-119527] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:09:15.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:09:15.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:09:15.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:09:15.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:09:15.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:09:15.637 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:09:15.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:09:15.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:09:15.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:09:15.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.631005 -999.00  +25.30  27.05      8  -10.50 1 1 1 1 1   887    0 33.80 -77.52 ----- 24.6 27.1 312.8 35.8 28.1 -33.4 28.1 -33.0 29.1 -33.8 29.6 -33.0
2025-11-03T17:09:15.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:09:15.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:09:15.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.631005
2025-11-03T17:09:15.644 [DEBUG] [Thread-119527] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:09:15.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:09:15.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:09:15.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:09:15.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:09:15.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:09:15.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:08:52', tmtdew=47.0, humidity=3.75, cloud=0.0, wind=25.13, temperature=26.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:08:38.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:09:15.729 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:09:15.749 [DEBUG] [Thread-119530] [transport.py] [_log()] starting thread (client mode): 0x117821a0
2025-11-03T17:09:15.749 [DEBUG] [Thread-119530] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:09:15.763 [DEBUG] [Thread-119530] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:09:15.764 [INFO] [Thread-119530] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:09:15.771 [DEBUG] [Thread-119530] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:09:15.771 [DEBUG] [Thread-119530] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:09:15.771 [DEBUG] [Thread-119530] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:09:15.772 [DEBUG] [Thread-119530] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:09:15.772 [DEBUG] [Thread-119530] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:09:15.772 [DEBUG] [Thread-119530] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:09:15.772 [DEBUG] [Thread-119530] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:09:15.772 [DEBUG] [Thread-119530] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:09:15.772 [DEBUG] [Thread-119530] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:09:15.772 [DEBUG] [Thread-119530] [transport.py] [_log()] client lang: <none>
2025-11-03T17:09:15.772 [DEBUG] [Thread-119530] [transport.py] [_log()] server lang: <none>
2025-11-03T17:09:15.772 [DEBUG] [Thread-119530] [transport.py] [_log()] kex follows: False
2025-11-03T17:09:15.772 [DEBUG] [Thread-119530] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:09:15.773 [DEBUG] [Thread-119530] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:09:15.773 [DEBUG] [Thread-119530] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:09:15.773 [DEBUG] [Thread-119530] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:09:15.773 [DEBUG] [Thread-119530] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:09:15.773 [DEBUG] [Thread-119530] [transport.py] [_log()] Compression: none
2025-11-03T17:09:15.773 [DEBUG] [Thread-119530] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:09:15.831 [DEBUG] [Thread-119530] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:09:15.832 [DEBUG] [Thread-119530] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:09:15.832 [DEBUG] [Thread-119530] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:09:15.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:09:15.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:09:15.888 [DEBUG] [Thread-119530] [transport.py] [_log()] userauth is OK
2025-11-03T17:09:15.888 [DEBUG] [Thread-119530] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:09:15.888 [DEBUG] [Thread-119530] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:09:15.888 [DEBUG] [Thread-119530] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:09:15.888 [DEBUG] [Thread-119530] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:09:15.905 [INFO] [Thread-119530] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:09:15.906 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:09:15.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:09:16.730 [DEBUG] [Thread-119530] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:09:16.730 [DEBUG] [Thread-119530] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:09:16.769 [DEBUG] [Thread-119530] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:09:16.769 [DEBUG] [Thread-119530] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:09:16.778 [DEBUG] [Thread-119530] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:09:16.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:09:16.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:09:16.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:09:16.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:09:16.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:09:16.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:09:16.812 [DEBUG] [Thread-119530] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:09:17.808 [DEBUG] [Thread-119532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:09:20.570 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:09:20.571 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:09:29.511 [DEBUG] [Thread-119533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:09:32.938 [DEBUG] [Thread-119534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:09:46.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:09:46.834 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:09:46.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:09:47.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 9, 24), 46.78, 3.82, 0.0, 32.25, 26.57, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:09:47.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:09:24
2025-11-03T17:09:47.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:09:47.879 [DEBUG] [Thread-119535] [transport.py] [_log()] starting thread (client mode): 0x11798e50
2025-11-03T17:09:47.879 [DEBUG] [Thread-119535] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:09:47.899 [DEBUG] [Thread-119535] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:09:47.899 [INFO] [Thread-119535] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:09:47.901 [DEBUG] [Thread-119535] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:09:47.901 [DEBUG] [Thread-119535] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:09:47.901 [DEBUG] [Thread-119535] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:09:47.901 [DEBUG] [Thread-119535] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:09:47.901 [DEBUG] [Thread-119535] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:09:47.901 [DEBUG] [Thread-119535] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:09:47.902 [DEBUG] [Thread-119535] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:09:47.902 [DEBUG] [Thread-119535] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:09:47.902 [DEBUG] [Thread-119535] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:09:47.902 [DEBUG] [Thread-119535] [transport.py] [_log()] client lang: <none>
2025-11-03T17:09:47.902 [DEBUG] [Thread-119535] [transport.py] [_log()] server lang: <none>
2025-11-03T17:09:47.902 [DEBUG] [Thread-119535] [transport.py] [_log()] kex follows: False
2025-11-03T17:09:47.902 [DEBUG] [Thread-119535] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:09:47.902 [DEBUG] [Thread-119535] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:09:47.902 [DEBUG] [Thread-119535] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:09:47.902 [DEBUG] [Thread-119535] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:09:47.902 [DEBUG] [Thread-119535] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:09:47.902 [DEBUG] [Thread-119535] [transport.py] [_log()] Compression: none
2025-11-03T17:09:47.902 [DEBUG] [Thread-119535] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:09:47.920 [DEBUG] [Thread-119535] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:09:47.920 [DEBUG] [Thread-119535] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:09:47.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:09:47.921 [DEBUG] [Thread-119535] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:09:47.923 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:09:47.924 [DEBUG] [Thread-119535] [transport.py] [_log()] userauth is OK
2025-11-03T17:09:47.924 [DEBUG] [Thread-119535] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:09:47.924 [DEBUG] [Thread-119535] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:09:47.924 [DEBUG] [Thread-119535] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:09:47.925 [DEBUG] [Thread-119535] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:09:47.960 [INFO] [Thread-119535] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:09:47.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:09:47.982 [DEBUG] [Thread-119537 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:09:48.609 [DEBUG] [Thread-119535] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:09:48.609 [DEBUG] [Thread-119535] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:09:48.609 [DEBUG] [Thread-119535] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:09:48.650 [DEBUG] [Thread-119535] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:09:48.650 [DEBUG] [Thread-119535] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:09:48.653 [DEBUG] [Thread-119535] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:09:48.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:09:48.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:09:48.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:09:48.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:09:48.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:09:48.672 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:09:48.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:09:48.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:09:48.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:09:48.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.631352 -999.00  +25.60  36.08      8  -10.10 1 1 2 1 1   887    0 34.27 -68.10 ----- 41.2 36.1 312.8 45.7 28.1 -33.9 28.2 -31.9 29.2 -32.2 29.6 -32.4
2025-11-03T17:09:48.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:09:48.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:09:48.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.631352
2025-11-03T17:09:48.681 [DEBUG] [Thread-119535] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:09:48.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:09:48.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:09:48.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:09:48.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:09:48.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:09:48.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:09:24', tmtdew=46.78, humidity=3.82, cloud=0.0, wind=32.25, temperature=26.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:09:08.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:09:48.760 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:09:48.781 [DEBUG] [Thread-119539] [transport.py] [_log()] starting thread (client mode): 0x117e9300
2025-11-03T17:09:48.781 [DEBUG] [Thread-119539] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:09:48.795 [DEBUG] [Thread-119539] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:09:48.796 [INFO] [Thread-119539] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:09:48.812 [DEBUG] [Thread-119539] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:09:48.812 [DEBUG] [Thread-119539] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:09:48.812 [DEBUG] [Thread-119539] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:09:48.812 [DEBUG] [Thread-119539] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:09:48.812 [DEBUG] [Thread-119539] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:09:48.812 [DEBUG] [Thread-119539] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:09:48.812 [DEBUG] [Thread-119539] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:09:48.812 [DEBUG] [Thread-119539] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:09:48.812 [DEBUG] [Thread-119539] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:09:48.812 [DEBUG] [Thread-119539] [transport.py] [_log()] client lang: <none>
2025-11-03T17:09:48.812 [DEBUG] [Thread-119539] [transport.py] [_log()] server lang: <none>
2025-11-03T17:09:48.812 [DEBUG] [Thread-119539] [transport.py] [_log()] kex follows: False
2025-11-03T17:09:48.812 [DEBUG] [Thread-119539] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:09:48.812 [DEBUG] [Thread-119539] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:09:48.813 [DEBUG] [Thread-119539] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:09:48.813 [DEBUG] [Thread-119539] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:09:48.813 [DEBUG] [Thread-119539] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:09:48.813 [DEBUG] [Thread-119539] [transport.py] [_log()] Compression: none
2025-11-03T17:09:48.813 [DEBUG] [Thread-119539] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:09:48.863 [DEBUG] [Thread-119539] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:09:48.863 [DEBUG] [Thread-119539] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:09:48.863 [DEBUG] [Thread-119539] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:09:48.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:09:48.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:09:48.919 [DEBUG] [Thread-119539] [transport.py] [_log()] userauth is OK
2025-11-03T17:09:48.919 [DEBUG] [Thread-119539] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:09:48.919 [DEBUG] [Thread-119539] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:09:48.919 [DEBUG] [Thread-119539] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:09:48.919 [DEBUG] [Thread-119539] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:09:48.942 [INFO] [Thread-119539] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:09:48.942 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:09:48.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:09:49.771 [DEBUG] [Thread-119539] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:09:49.771 [DEBUG] [Thread-119539] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:09:49.819 [DEBUG] [Thread-119539] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:09:49.820 [DEBUG] [Thread-119539] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:09:49.830 [DEBUG] [Thread-119539] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:09:49.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:09:49.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:09:49.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:09:49.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:09:49.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:09:49.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:09:49.867 [DEBUG] [Thread-119539] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:10:03.024 [DEBUG] [Thread-119541 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:10:18.110 [DEBUG] [Thread-119542 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:10:19.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:10:19.890 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:10:19.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:10:20.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 9, 57), 46.51, 3.85, 0.0, 36.5, 26.58, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:10:20.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:09:57
2025-11-03T17:10:20.723 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:10:20.723 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:10:20.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:10:20.973 [DEBUG] [Thread-119543] [transport.py] [_log()] starting thread (client mode): 0x117eb550
2025-11-03T17:10:20.974 [DEBUG] [Thread-119543] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:10:20.988 [DEBUG] [Thread-119543] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:10:20.988 [INFO] [Thread-119543] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:10:20.991 [DEBUG] [Thread-119543] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:10:20.992 [DEBUG] [Thread-119543] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:10:20.992 [DEBUG] [Thread-119543] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:10:20.992 [DEBUG] [Thread-119543] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:10:20.992 [DEBUG] [Thread-119543] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:10:20.992 [DEBUG] [Thread-119543] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:10:20.992 [DEBUG] [Thread-119543] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:10:20.992 [DEBUG] [Thread-119543] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:10:20.992 [DEBUG] [Thread-119543] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:10:20.992 [DEBUG] [Thread-119543] [transport.py] [_log()] client lang: <none>
2025-11-03T17:10:20.993 [DEBUG] [Thread-119543] [transport.py] [_log()] server lang: <none>
2025-11-03T17:10:20.993 [DEBUG] [Thread-119543] [transport.py] [_log()] kex follows: False
2025-11-03T17:10:20.993 [DEBUG] [Thread-119543] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:10:20.993 [DEBUG] [Thread-119543] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:10:20.993 [DEBUG] [Thread-119543] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:10:20.993 [DEBUG] [Thread-119543] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:10:20.993 [DEBUG] [Thread-119543] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:10:20.993 [DEBUG] [Thread-119543] [transport.py] [_log()] Compression: none
2025-11-03T17:10:20.994 [DEBUG] [Thread-119543] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:10:21.012 [DEBUG] [Thread-119543] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:10:21.013 [DEBUG] [Thread-119543] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:10:21.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:10:21.014 [DEBUG] [Thread-119543] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:10:21.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:10:21.058 [DEBUG] [Thread-119543] [transport.py] [_log()] userauth is OK
2025-11-03T17:10:21.058 [DEBUG] [Thread-119543] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:10:21.058 [DEBUG] [Thread-119543] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:10:21.058 [DEBUG] [Thread-119543] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:10:21.058 [DEBUG] [Thread-119543] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:10:21.079 [INFO] [Thread-119543] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:10:21.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:10:21.713 [DEBUG] [Thread-119543] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:10:21.713 [DEBUG] [Thread-119543] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:10:21.714 [DEBUG] [Thread-119543] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:10:21.754 [DEBUG] [Thread-119543] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:10:21.754 [DEBUG] [Thread-119543] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:10:21.757 [DEBUG] [Thread-119543] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:10:21.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:10:21.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:10:21.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:10:21.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:10:21.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:10:21.780 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:10:21.781 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:10:21.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:10:21.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:10:21.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.631700 -999.00  +25.40  34.32      8  -10.10 1 1 2 1 1   887    0 34.75 -64.87 ----- 44.1 34.3 310.4 44.0 28.1 -33.7 28.2 -32.9 29.1 -34.5 29.6 -32.7
2025-11-03T17:10:21.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:10:21.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:10:21.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.631700
2025-11-03T17:10:21.789 [DEBUG] [Thread-119543] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:10:21.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:10:21.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:10:21.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:10:21.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:10:21.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:10:21.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:09:57', tmtdew=46.51, humidity=3.85, cloud=0.0, wind=36.5, temperature=26.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:09:38.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:10:21.882 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:10:21.905 [DEBUG] [Thread-119546] [transport.py] [_log()] starting thread (client mode): 0xed23f70
2025-11-03T17:10:21.905 [DEBUG] [Thread-119546] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:10:21.921 [DEBUG] [Thread-119546] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:10:21.921 [INFO] [Thread-119546] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:10:21.932 [DEBUG] [Thread-119546] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:10:21.932 [DEBUG] [Thread-119546] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:10:21.933 [DEBUG] [Thread-119546] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:10:21.933 [DEBUG] [Thread-119546] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:10:21.933 [DEBUG] [Thread-119546] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:10:21.933 [DEBUG] [Thread-119546] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:10:21.933 [DEBUG] [Thread-119546] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:10:21.933 [DEBUG] [Thread-119546] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:10:21.933 [DEBUG] [Thread-119546] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:10:21.933 [DEBUG] [Thread-119546] [transport.py] [_log()] client lang: <none>
2025-11-03T17:10:21.933 [DEBUG] [Thread-119546] [transport.py] [_log()] server lang: <none>
2025-11-03T17:10:21.934 [DEBUG] [Thread-119546] [transport.py] [_log()] kex follows: False
2025-11-03T17:10:21.934 [DEBUG] [Thread-119546] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:10:21.934 [DEBUG] [Thread-119546] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:10:21.934 [DEBUG] [Thread-119546] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:10:21.934 [DEBUG] [Thread-119546] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:10:21.934 [DEBUG] [Thread-119546] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:10:21.934 [DEBUG] [Thread-119546] [transport.py] [_log()] Compression: none
2025-11-03T17:10:21.934 [DEBUG] [Thread-119546] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:10:22.001 [DEBUG] [Thread-119546] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:10:22.001 [DEBUG] [Thread-119546] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:10:22.002 [DEBUG] [Thread-119546] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:10:22.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:10:22.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:10:22.059 [DEBUG] [Thread-119546] [transport.py] [_log()] userauth is OK
2025-11-03T17:10:22.060 [DEBUG] [Thread-119546] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:10:22.060 [DEBUG] [Thread-119546] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:10:22.060 [DEBUG] [Thread-119546] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:10:22.060 [DEBUG] [Thread-119546] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:10:22.078 [INFO] [Thread-119546] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:10:22.078 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:10:22.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:10:22.919 [DEBUG] [Thread-119546] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:10:22.919 [DEBUG] [Thread-119546] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:10:22.968 [DEBUG] [Thread-119546] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:10:22.968 [DEBUG] [Thread-119546] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:10:22.977 [DEBUG] [Thread-119546] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:10:22.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:10:22.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:10:22.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:10:23.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:10:23.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:10:23.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:10:23.014 [DEBUG] [Thread-119546] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:10:29.595 [DEBUG] [Thread-119548 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:10:33.149 [DEBUG] [Thread-119549 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:10:48.203 [DEBUG] [Thread-119550 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:10:53.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:10:53.008 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:10:53.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:10:53.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 10, 30), 46.47, 3.84, 0.0, 32.59, 26.29, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:10:53.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:10:30
2025-11-03T17:10:53.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:10:54.066 [DEBUG] [Thread-119551] [transport.py] [_log()] starting thread (client mode): 0x117e8dc0
2025-11-03T17:10:54.066 [DEBUG] [Thread-119551] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:10:54.089 [DEBUG] [Thread-119551] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:10:54.089 [INFO] [Thread-119551] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:10:54.092 [DEBUG] [Thread-119551] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:10:54.092 [DEBUG] [Thread-119551] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:10:54.092 [DEBUG] [Thread-119551] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:10:54.092 [DEBUG] [Thread-119551] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:10:54.092 [DEBUG] [Thread-119551] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:10:54.092 [DEBUG] [Thread-119551] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:10:54.093 [DEBUG] [Thread-119551] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:10:54.093 [DEBUG] [Thread-119551] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:10:54.093 [DEBUG] [Thread-119551] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:10:54.093 [DEBUG] [Thread-119551] [transport.py] [_log()] client lang: <none>
2025-11-03T17:10:54.093 [DEBUG] [Thread-119551] [transport.py] [_log()] server lang: <none>
2025-11-03T17:10:54.093 [DEBUG] [Thread-119551] [transport.py] [_log()] kex follows: False
2025-11-03T17:10:54.093 [DEBUG] [Thread-119551] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:10:54.093 [DEBUG] [Thread-119551] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:10:54.093 [DEBUG] [Thread-119551] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:10:54.093 [DEBUG] [Thread-119551] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:10:54.093 [DEBUG] [Thread-119551] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:10:54.093 [DEBUG] [Thread-119551] [transport.py] [_log()] Compression: none
2025-11-03T17:10:54.093 [DEBUG] [Thread-119551] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:10:54.112 [DEBUG] [Thread-119551] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:10:54.113 [DEBUG] [Thread-119551] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:10:54.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:10:54.114 [DEBUG] [Thread-119551] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:10:54.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:10:54.116 [DEBUG] [Thread-119551] [transport.py] [_log()] userauth is OK
2025-11-03T17:10:54.116 [DEBUG] [Thread-119551] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:10:54.117 [DEBUG] [Thread-119551] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:10:54.117 [DEBUG] [Thread-119551] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:10:54.117 [DEBUG] [Thread-119551] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:10:54.152 [INFO] [Thread-119551] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:10:54.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:10:54.966 [DEBUG] [Thread-119551] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:10:54.966 [DEBUG] [Thread-119551] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:10:54.966 [DEBUG] [Thread-119551] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:10:55.008 [DEBUG] [Thread-119551] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:10:55.008 [DEBUG] [Thread-119551] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:10:55.010 [DEBUG] [Thread-119551] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:10:55.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:10:55.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:10:55.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:10:55.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:10:55.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:10:55.030 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:10:55.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:10:55.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:10:55.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:10:55.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.632046 -999.00  +25.50  38.40      8  -10.10 1 1 2 1 1   887    0 34.83 -58.32 ----- 36.9 38.4 307.8 45.6 28.0 -34.2 28.1 -32.5 29.0 -32.9 29.4 -32.6
2025-11-03T17:10:55.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:10:55.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:10:55.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.632046
2025-11-03T17:10:55.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:10:55.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:10:55.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:10:55.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:10:55.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:10:55.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:10:30', tmtdew=46.47, humidity=3.84, cloud=0.0, wind=32.59, temperature=26.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:10:08.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:10:55.031 [DEBUG] [Thread-119551] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:10:55.102 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:10:55.120 [DEBUG] [Thread-119554] [transport.py] [_log()] starting thread (client mode): 0x117e92a0
2025-11-03T17:10:55.120 [DEBUG] [Thread-119554] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:10:55.135 [DEBUG] [Thread-119554] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:10:55.135 [INFO] [Thread-119554] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:10:55.143 [DEBUG] [Thread-119554] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:10:55.143 [DEBUG] [Thread-119554] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:10:55.143 [DEBUG] [Thread-119554] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:10:55.143 [DEBUG] [Thread-119554] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:10:55.143 [DEBUG] [Thread-119554] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:10:55.143 [DEBUG] [Thread-119554] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:10:55.143 [DEBUG] [Thread-119554] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:10:55.143 [DEBUG] [Thread-119554] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:10:55.143 [DEBUG] [Thread-119554] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:10:55.143 [DEBUG] [Thread-119554] [transport.py] [_log()] client lang: <none>
2025-11-03T17:10:55.143 [DEBUG] [Thread-119554] [transport.py] [_log()] server lang: <none>
2025-11-03T17:10:55.143 [DEBUG] [Thread-119554] [transport.py] [_log()] kex follows: False
2025-11-03T17:10:55.143 [DEBUG] [Thread-119554] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:10:55.143 [DEBUG] [Thread-119554] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:10:55.143 [DEBUG] [Thread-119554] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:10:55.143 [DEBUG] [Thread-119554] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:10:55.143 [DEBUG] [Thread-119554] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:10:55.143 [DEBUG] [Thread-119554] [transport.py] [_log()] Compression: none
2025-11-03T17:10:55.143 [DEBUG] [Thread-119554] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:10:55.198 [DEBUG] [Thread-119554] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:10:55.198 [DEBUG] [Thread-119554] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:10:55.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:10:55.198 [DEBUG] [Thread-119554] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:10:55.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:10:55.255 [DEBUG] [Thread-119554] [transport.py] [_log()] userauth is OK
2025-11-03T17:10:55.255 [DEBUG] [Thread-119554] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:10:55.255 [DEBUG] [Thread-119554] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:10:55.255 [DEBUG] [Thread-119554] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:10:55.255 [DEBUG] [Thread-119554] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:10:55.269 [INFO] [Thread-119554] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:10:55.269 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:10:55.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:10:56.099 [DEBUG] [Thread-119554] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:10:56.100 [DEBUG] [Thread-119554] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:10:56.148 [DEBUG] [Thread-119554] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:10:56.148 [DEBUG] [Thread-119554] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:10:56.158 [DEBUG] [Thread-119554] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:10:56.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:10:56.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:10:56.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:10:56.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:10:56.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:10:56.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:10:56.196 [DEBUG] [Thread-119554] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:11:03.246 [DEBUG] [Thread-119556 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:11:18.327 [DEBUG] [Thread-119557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:11:20.864 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:11:20.865 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:11:26.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:11:26.218 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:11:26.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:11:26.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 11, 2), 46.08, 3.94, 0.0, 31.69, 26.02, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:11:26.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:11:02
2025-11-03T17:11:27.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:11:27.226 [DEBUG] [Thread-119558] [transport.py] [_log()] starting thread (client mode): 0x117e8f40
2025-11-03T17:11:27.226 [DEBUG] [Thread-119558] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:11:27.247 [DEBUG] [Thread-119558] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:11:27.247 [INFO] [Thread-119558] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:11:27.250 [DEBUG] [Thread-119558] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:11:27.250 [DEBUG] [Thread-119558] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:11:27.250 [DEBUG] [Thread-119558] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:11:27.250 [DEBUG] [Thread-119558] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:11:27.250 [DEBUG] [Thread-119558] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:11:27.250 [DEBUG] [Thread-119558] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:11:27.250 [DEBUG] [Thread-119558] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:11:27.250 [DEBUG] [Thread-119558] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:11:27.250 [DEBUG] [Thread-119558] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:11:27.250 [DEBUG] [Thread-119558] [transport.py] [_log()] client lang: <none>
2025-11-03T17:11:27.250 [DEBUG] [Thread-119558] [transport.py] [_log()] server lang: <none>
2025-11-03T17:11:27.250 [DEBUG] [Thread-119558] [transport.py] [_log()] kex follows: False
2025-11-03T17:11:27.250 [DEBUG] [Thread-119558] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:11:27.250 [DEBUG] [Thread-119558] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:11:27.250 [DEBUG] [Thread-119558] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:11:27.250 [DEBUG] [Thread-119558] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:11:27.250 [DEBUG] [Thread-119558] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:11:27.250 [DEBUG] [Thread-119558] [transport.py] [_log()] Compression: none
2025-11-03T17:11:27.250 [DEBUG] [Thread-119558] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:11:27.266 [DEBUG] [Thread-119558] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:11:27.266 [DEBUG] [Thread-119558] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:11:27.266 [DEBUG] [Thread-119558] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:11:27.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:11:27.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:11:27.267 [DEBUG] [Thread-119558] [transport.py] [_log()] userauth is OK
2025-11-03T17:11:27.267 [DEBUG] [Thread-119558] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:11:27.267 [DEBUG] [Thread-119558] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:11:27.267 [DEBUG] [Thread-119558] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:11:27.267 [DEBUG] [Thread-119558] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:11:27.278 [INFO] [Thread-119558] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:11:27.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:11:27.901 [DEBUG] [Thread-119558] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:11:27.901 [DEBUG] [Thread-119558] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:11:27.901 [DEBUG] [Thread-119558] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:11:27.941 [DEBUG] [Thread-119558] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:11:27.941 [DEBUG] [Thread-119558] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:11:27.944 [DEBUG] [Thread-119558] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:11:27.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:11:27.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:11:27.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:11:27.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:11:27.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:11:27.954 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:11:27.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:11:27.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:11:27.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:11:27.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.632395 -999.00  +25.30  26.85      8  -10.20 1 1 1 1 1   887    0 34.18 -64.09 ----- 27.4 26.9 315.0 43.1 27.9 -33.5 28.0 -33.0 29.0 -32.4 29.3 -32.7
2025-11-03T17:11:27.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:11:27.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:11:27.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.632395
2025-11-03T17:11:27.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:11:27.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:11:27.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:11:27.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:11:27.955 [DEBUG] [Thread-119558] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:11:27.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:11:27.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:11:02', tmtdew=46.08, humidity=3.94, cloud=0.0, wind=31.69, temperature=26.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:10:38.928', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:11:28.035 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:11:28.055 [DEBUG] [Thread-119561] [transport.py] [_log()] starting thread (client mode): 0x117ea800
2025-11-03T17:11:28.055 [DEBUG] [Thread-119561] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:11:28.072 [DEBUG] [Thread-119561] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:11:28.072 [INFO] [Thread-119561] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:11:28.079 [DEBUG] [Thread-119561] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:11:28.079 [DEBUG] [Thread-119561] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:11:28.079 [DEBUG] [Thread-119561] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:11:28.079 [DEBUG] [Thread-119561] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:11:28.079 [DEBUG] [Thread-119561] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:11:28.079 [DEBUG] [Thread-119561] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:11:28.080 [DEBUG] [Thread-119561] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:11:28.080 [DEBUG] [Thread-119561] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:11:28.080 [DEBUG] [Thread-119561] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:11:28.080 [DEBUG] [Thread-119561] [transport.py] [_log()] client lang: <none>
2025-11-03T17:11:28.080 [DEBUG] [Thread-119561] [transport.py] [_log()] server lang: <none>
2025-11-03T17:11:28.080 [DEBUG] [Thread-119561] [transport.py] [_log()] kex follows: False
2025-11-03T17:11:28.080 [DEBUG] [Thread-119561] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:11:28.080 [DEBUG] [Thread-119561] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:11:28.080 [DEBUG] [Thread-119561] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:11:28.080 [DEBUG] [Thread-119561] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:11:28.080 [DEBUG] [Thread-119561] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:11:28.080 [DEBUG] [Thread-119561] [transport.py] [_log()] Compression: none
2025-11-03T17:11:28.080 [DEBUG] [Thread-119561] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:11:28.135 [DEBUG] [Thread-119561] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:11:28.136 [DEBUG] [Thread-119561] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:11:28.136 [DEBUG] [Thread-119561] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:11:28.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:11:28.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:11:28.196 [DEBUG] [Thread-119561] [transport.py] [_log()] userauth is OK
2025-11-03T17:11:28.196 [DEBUG] [Thread-119561] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:11:28.196 [DEBUG] [Thread-119561] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:11:28.197 [DEBUG] [Thread-119561] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:11:28.197 [DEBUG] [Thread-119561] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:11:28.216 [INFO] [Thread-119561] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:11:28.216 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:11:28.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:11:29.048 [DEBUG] [Thread-119561] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:11:29.048 [DEBUG] [Thread-119561] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:11:29.096 [DEBUG] [Thread-119561] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:11:29.096 [DEBUG] [Thread-119561] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:11:29.106 [DEBUG] [Thread-119561] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:11:29.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:11:29.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:11:29.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:11:29.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:11:29.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:11:29.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:11:29.143 [DEBUG] [Thread-119561] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:11:29.869 [DEBUG] [Thread-119563 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:11:33.365 [DEBUG] [Thread-119564 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:11:48.421 [DEBUG] [Thread-119565 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:11:59.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:11:59.166 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:11:59.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:11:59.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 11, 35), 45.51, 3.99, 0.0, 30.28, 25.59, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:11:59.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:11:35
2025-11-03T17:11:59.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:12:00.154 [DEBUG] [Thread-119566] [transport.py] [_log()] starting thread (client mode): 0x117bc820
2025-11-03T17:12:00.154 [DEBUG] [Thread-119566] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:12:00.174 [DEBUG] [Thread-119566] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:12:00.174 [INFO] [Thread-119566] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:12:00.177 [DEBUG] [Thread-119566] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:12:00.177 [DEBUG] [Thread-119566] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:12:00.177 [DEBUG] [Thread-119566] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:12:00.177 [DEBUG] [Thread-119566] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:12:00.177 [DEBUG] [Thread-119566] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:12:00.177 [DEBUG] [Thread-119566] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:12:00.177 [DEBUG] [Thread-119566] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:12:00.178 [DEBUG] [Thread-119566] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:12:00.178 [DEBUG] [Thread-119566] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:12:00.178 [DEBUG] [Thread-119566] [transport.py] [_log()] client lang: <none>
2025-11-03T17:12:00.178 [DEBUG] [Thread-119566] [transport.py] [_log()] server lang: <none>
2025-11-03T17:12:00.178 [DEBUG] [Thread-119566] [transport.py] [_log()] kex follows: False
2025-11-03T17:12:00.178 [DEBUG] [Thread-119566] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:12:00.178 [DEBUG] [Thread-119566] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:12:00.178 [DEBUG] [Thread-119566] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:12:00.178 [DEBUG] [Thread-119566] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:12:00.178 [DEBUG] [Thread-119566] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:12:00.178 [DEBUG] [Thread-119566] [transport.py] [_log()] Compression: none
2025-11-03T17:12:00.178 [DEBUG] [Thread-119566] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:12:00.195 [DEBUG] [Thread-119566] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:12:00.196 [DEBUG] [Thread-119566] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:12:00.197 [DEBUG] [Thread-119566] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:12:00.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:12:00.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:12:00.199 [DEBUG] [Thread-119566] [transport.py] [_log()] userauth is OK
2025-11-03T17:12:00.199 [DEBUG] [Thread-119566] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:12:00.199 [DEBUG] [Thread-119566] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:12:00.199 [DEBUG] [Thread-119566] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:12:00.199 [DEBUG] [Thread-119566] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:12:00.218 [INFO] [Thread-119566] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:12:00.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:12:01.018 [DEBUG] [Thread-119566] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:12:01.018 [DEBUG] [Thread-119566] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:12:01.018 [DEBUG] [Thread-119566] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:12:01.059 [DEBUG] [Thread-119566] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:12:01.059 [DEBUG] [Thread-119566] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:12:01.062 [DEBUG] [Thread-119566] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:12:01.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:12:01.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:12:01.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:12:01.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:12:01.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:12:01.081 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:12:01.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:12:01.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:12:01.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:12:01.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.632741 -999.00  +25.50  28.07      8  -10.10 1 1 1 1 1   887    0 34.69 -67.55 ----- 29.8 28.1 312.0 39.4 27.9 -33.5 28.0 -32.6 28.9 -33.2 29.3 -32.9
2025-11-03T17:12:01.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:12:01.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:12:01.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.632741
2025-11-03T17:12:01.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:12:01.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:12:01.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:12:01.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:12:01.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:12:01.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:11:35', tmtdew=45.51, humidity=3.99, cloud=0.0, wind=30.28, temperature=25.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:11:08.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:12:01.082 [DEBUG] [Thread-119566] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:12:01.154 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:12:01.173 [DEBUG] [Thread-119569] [transport.py] [_log()] starting thread (client mode): 0xed2dc00
2025-11-03T17:12:01.173 [DEBUG] [Thread-119569] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:12:01.188 [DEBUG] [Thread-119569] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:12:01.188 [INFO] [Thread-119569] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:12:01.196 [DEBUG] [Thread-119569] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:12:01.196 [DEBUG] [Thread-119569] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:12:01.196 [DEBUG] [Thread-119569] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:12:01.196 [DEBUG] [Thread-119569] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:12:01.196 [DEBUG] [Thread-119569] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:12:01.196 [DEBUG] [Thread-119569] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:12:01.196 [DEBUG] [Thread-119569] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:12:01.196 [DEBUG] [Thread-119569] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:12:01.196 [DEBUG] [Thread-119569] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:12:01.196 [DEBUG] [Thread-119569] [transport.py] [_log()] client lang: <none>
2025-11-03T17:12:01.196 [DEBUG] [Thread-119569] [transport.py] [_log()] server lang: <none>
2025-11-03T17:12:01.196 [DEBUG] [Thread-119569] [transport.py] [_log()] kex follows: False
2025-11-03T17:12:01.196 [DEBUG] [Thread-119569] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:12:01.196 [DEBUG] [Thread-119569] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:12:01.196 [DEBUG] [Thread-119569] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:12:01.196 [DEBUG] [Thread-119569] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:12:01.196 [DEBUG] [Thread-119569] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:12:01.196 [DEBUG] [Thread-119569] [transport.py] [_log()] Compression: none
2025-11-03T17:12:01.196 [DEBUG] [Thread-119569] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:12:01.254 [DEBUG] [Thread-119569] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:12:01.254 [DEBUG] [Thread-119569] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:12:01.254 [DEBUG] [Thread-119569] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:12:01.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:12:01.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:12:01.312 [DEBUG] [Thread-119569] [transport.py] [_log()] userauth is OK
2025-11-03T17:12:01.312 [DEBUG] [Thread-119569] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:12:01.312 [DEBUG] [Thread-119569] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:12:01.313 [DEBUG] [Thread-119569] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:12:01.313 [DEBUG] [Thread-119569] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:12:01.331 [INFO] [Thread-119569] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:12:01.332 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:12:01.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:12:02.167 [DEBUG] [Thread-119569] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:12:02.167 [DEBUG] [Thread-119569] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:12:02.215 [DEBUG] [Thread-119569] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:12:02.215 [DEBUG] [Thread-119569] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:12:02.224 [DEBUG] [Thread-119569] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:12:02.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:12:02.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:12:02.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:12:02.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:12:02.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:12:02.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:12:02.256 [DEBUG] [Thread-119569] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:12:03.471 [DEBUG] [Thread-119571 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:12:18.524 [DEBUG] [Thread-119572 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:12:21.016 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:12:21.017 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:12:30.008 [DEBUG] [Thread-119573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:12:32.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:12:32.279 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:12:32.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:12:32.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 12, 7), 45.32, 4.05, 0.0, 29.13, 25.59, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:12:32.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:12:07
2025-11-03T17:12:33.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:12:33.278 [DEBUG] [Thread-119574] [transport.py] [_log()] starting thread (client mode): 0xed224a0
2025-11-03T17:12:33.278 [DEBUG] [Thread-119574] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:12:33.301 [DEBUG] [Thread-119574] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:12:33.301 [INFO] [Thread-119574] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:12:33.304 [DEBUG] [Thread-119574] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:12:33.305 [DEBUG] [Thread-119574] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:12:33.305 [DEBUG] [Thread-119574] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:12:33.305 [DEBUG] [Thread-119574] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:12:33.305 [DEBUG] [Thread-119574] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:12:33.305 [DEBUG] [Thread-119574] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:12:33.305 [DEBUG] [Thread-119574] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:12:33.305 [DEBUG] [Thread-119574] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:12:33.305 [DEBUG] [Thread-119574] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:12:33.305 [DEBUG] [Thread-119574] [transport.py] [_log()] client lang: <none>
2025-11-03T17:12:33.305 [DEBUG] [Thread-119574] [transport.py] [_log()] server lang: <none>
2025-11-03T17:12:33.305 [DEBUG] [Thread-119574] [transport.py] [_log()] kex follows: False
2025-11-03T17:12:33.305 [DEBUG] [Thread-119574] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:12:33.305 [DEBUG] [Thread-119574] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:12:33.305 [DEBUG] [Thread-119574] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:12:33.305 [DEBUG] [Thread-119574] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:12:33.305 [DEBUG] [Thread-119574] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:12:33.305 [DEBUG] [Thread-119574] [transport.py] [_log()] Compression: none
2025-11-03T17:12:33.305 [DEBUG] [Thread-119574] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:12:33.322 [DEBUG] [Thread-119574] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:12:33.323 [DEBUG] [Thread-119574] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:12:33.323 [DEBUG] [Thread-119574] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:12:33.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:12:33.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:12:33.325 [DEBUG] [Thread-119574] [transport.py] [_log()] userauth is OK
2025-11-03T17:12:33.325 [DEBUG] [Thread-119574] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:12:33.325 [DEBUG] [Thread-119574] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:12:33.325 [DEBUG] [Thread-119574] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:12:33.325 [DEBUG] [Thread-119574] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:12:33.350 [INFO] [Thread-119574] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:12:33.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:12:33.571 [DEBUG] [Thread-119576 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:12:33.998 [DEBUG] [Thread-119574] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:12:33.998 [DEBUG] [Thread-119574] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:12:33.998 [DEBUG] [Thread-119574] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:12:34.039 [DEBUG] [Thread-119574] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:12:34.039 [DEBUG] [Thread-119574] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:12:34.041 [DEBUG] [Thread-119574] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:12:34.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:12:34.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:12:34.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:12:34.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:12:34.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:12:34.061 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:12:34.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:12:34.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:12:34.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:12:34.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.633088 -999.00  +25.60  20.02      8  -10.00 1 1 1 1 1   887    0 34.26 -76.11 ----- 24.3 20.0 321.8 39.5 27.9 -33.3 28.0 -32.8 28.8 -32.9 29.2 -33.1
2025-11-03T17:12:34.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:12:34.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:12:34.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.633088
2025-11-03T17:12:34.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:12:34.070 [DEBUG] [Thread-119574] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:12:34.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:12:34.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:12:34.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:12:34.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:12:34.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:12:07', tmtdew=45.32, humidity=4.05, cloud=0.0, wind=29.13, temperature=25.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:11:38.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:12:34.143 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:12:34.163 [DEBUG] [Thread-119578] [transport.py] [_log()] starting thread (client mode): 0xed207f0
2025-11-03T17:12:34.163 [DEBUG] [Thread-119578] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:12:34.177 [DEBUG] [Thread-119578] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:12:34.177 [INFO] [Thread-119578] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:12:34.184 [DEBUG] [Thread-119578] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:12:34.185 [DEBUG] [Thread-119578] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:12:34.185 [DEBUG] [Thread-119578] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:12:34.185 [DEBUG] [Thread-119578] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:12:34.185 [DEBUG] [Thread-119578] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:12:34.185 [DEBUG] [Thread-119578] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:12:34.185 [DEBUG] [Thread-119578] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:12:34.185 [DEBUG] [Thread-119578] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:12:34.185 [DEBUG] [Thread-119578] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:12:34.185 [DEBUG] [Thread-119578] [transport.py] [_log()] client lang: <none>
2025-11-03T17:12:34.185 [DEBUG] [Thread-119578] [transport.py] [_log()] server lang: <none>
2025-11-03T17:12:34.185 [DEBUG] [Thread-119578] [transport.py] [_log()] kex follows: False
2025-11-03T17:12:34.185 [DEBUG] [Thread-119578] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:12:34.185 [DEBUG] [Thread-119578] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:12:34.186 [DEBUG] [Thread-119578] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:12:34.186 [DEBUG] [Thread-119578] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:12:34.186 [DEBUG] [Thread-119578] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:12:34.186 [DEBUG] [Thread-119578] [transport.py] [_log()] Compression: none
2025-11-03T17:12:34.186 [DEBUG] [Thread-119578] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:12:34.245 [DEBUG] [Thread-119578] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:12:34.246 [DEBUG] [Thread-119578] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:12:34.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:12:34.247 [DEBUG] [Thread-119578] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:12:34.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:12:34.304 [DEBUG] [Thread-119578] [transport.py] [_log()] userauth is OK
2025-11-03T17:12:34.304 [DEBUG] [Thread-119578] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:12:34.304 [DEBUG] [Thread-119578] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:12:34.304 [DEBUG] [Thread-119578] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:12:34.305 [DEBUG] [Thread-119578] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:12:34.323 [INFO] [Thread-119578] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:12:34.324 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:12:34.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:12:35.185 [DEBUG] [Thread-119578] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:12:35.185 [DEBUG] [Thread-119578] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:12:35.232 [DEBUG] [Thread-119578] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:12:35.232 [DEBUG] [Thread-119578] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:12:35.240 [DEBUG] [Thread-119578] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:12:35.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:12:35.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:12:35.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:12:35.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:12:35.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:12:35.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:12:35.274 [DEBUG] [Thread-119578] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:12:48.616 [DEBUG] [Thread-119580 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:13:03.696 [DEBUG] [Thread-119581 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:13:05.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:13:05.296 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:13:05.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:13:06.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 12, 40), 45.34, 3.97, 0.0, 33.15, 25.37, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:13:06.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:12:40
2025-11-03T17:13:06.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:13:06.310 [DEBUG] [Thread-119582] [transport.py] [_log()] starting thread (client mode): 0xed234f0
2025-11-03T17:13:06.310 [DEBUG] [Thread-119582] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:13:06.330 [DEBUG] [Thread-119582] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:13:06.331 [INFO] [Thread-119582] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:13:06.333 [DEBUG] [Thread-119582] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:13:06.334 [DEBUG] [Thread-119582] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:13:06.334 [DEBUG] [Thread-119582] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:13:06.334 [DEBUG] [Thread-119582] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:13:06.334 [DEBUG] [Thread-119582] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:13:06.334 [DEBUG] [Thread-119582] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:13:06.334 [DEBUG] [Thread-119582] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:13:06.334 [DEBUG] [Thread-119582] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:13:06.334 [DEBUG] [Thread-119582] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:13:06.334 [DEBUG] [Thread-119582] [transport.py] [_log()] client lang: <none>
2025-11-03T17:13:06.334 [DEBUG] [Thread-119582] [transport.py] [_log()] server lang: <none>
2025-11-03T17:13:06.334 [DEBUG] [Thread-119582] [transport.py] [_log()] kex follows: False
2025-11-03T17:13:06.334 [DEBUG] [Thread-119582] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:13:06.334 [DEBUG] [Thread-119582] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:13:06.334 [DEBUG] [Thread-119582] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:13:06.334 [DEBUG] [Thread-119582] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:13:06.334 [DEBUG] [Thread-119582] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:13:06.335 [DEBUG] [Thread-119582] [transport.py] [_log()] Compression: none
2025-11-03T17:13:06.335 [DEBUG] [Thread-119582] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:13:06.351 [DEBUG] [Thread-119582] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:13:06.352 [DEBUG] [Thread-119582] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:13:06.352 [DEBUG] [Thread-119582] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:13:06.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:13:06.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:13:06.355 [DEBUG] [Thread-119582] [transport.py] [_log()] userauth is OK
2025-11-03T17:13:06.355 [DEBUG] [Thread-119582] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:13:06.355 [DEBUG] [Thread-119582] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:13:06.355 [DEBUG] [Thread-119582] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:13:06.355 [DEBUG] [Thread-119582] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:13:06.387 [INFO] [Thread-119582] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:13:06.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:13:07.176 [DEBUG] [Thread-119582] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:13:07.176 [DEBUG] [Thread-119582] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:13:07.176 [DEBUG] [Thread-119582] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:13:07.217 [DEBUG] [Thread-119582] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:13:07.217 [DEBUG] [Thread-119582] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:13:07.220 [DEBUG] [Thread-119582] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:13:07.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:13:07.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:13:07.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:13:07.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:13:07.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:13:07.245 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:13:07.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:13:07.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:13:07.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:13:07.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.633436 -999.00  +25.80  27.94      8  -10.10 1 1 1 1 1   887    0 33.71 -79.77 ----- 33.3 27.9 328.1 36.9 27.9 -33.8 28.0 -32.5 28.9 -31.7 29.3 -32.7
2025-11-03T17:13:07.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:13:07.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:13:07.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.633436
2025-11-03T17:13:07.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:13:07.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:13:07.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:13:07.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:13:07.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:13:07.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:12:40', tmtdew=45.34, humidity=3.97, cloud=0.0, wind=33.15, temperature=25.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:12:08.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:13:07.248 [DEBUG] [Thread-119582] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:13:07.342 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:13:07.361 [DEBUG] [Thread-119585] [transport.py] [_log()] starting thread (client mode): 0xed22890
2025-11-03T17:13:07.361 [DEBUG] [Thread-119585] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:13:07.376 [DEBUG] [Thread-119585] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:13:07.377 [INFO] [Thread-119585] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:13:07.384 [DEBUG] [Thread-119585] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:13:07.385 [DEBUG] [Thread-119585] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:13:07.385 [DEBUG] [Thread-119585] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:13:07.385 [DEBUG] [Thread-119585] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:13:07.385 [DEBUG] [Thread-119585] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:13:07.385 [DEBUG] [Thread-119585] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:13:07.385 [DEBUG] [Thread-119585] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:13:07.385 [DEBUG] [Thread-119585] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:13:07.385 [DEBUG] [Thread-119585] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:13:07.385 [DEBUG] [Thread-119585] [transport.py] [_log()] client lang: <none>
2025-11-03T17:13:07.385 [DEBUG] [Thread-119585] [transport.py] [_log()] server lang: <none>
2025-11-03T17:13:07.385 [DEBUG] [Thread-119585] [transport.py] [_log()] kex follows: False
2025-11-03T17:13:07.385 [DEBUG] [Thread-119585] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:13:07.385 [DEBUG] [Thread-119585] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:13:07.386 [DEBUG] [Thread-119585] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:13:07.386 [DEBUG] [Thread-119585] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:13:07.386 [DEBUG] [Thread-119585] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:13:07.386 [DEBUG] [Thread-119585] [transport.py] [_log()] Compression: none
2025-11-03T17:13:07.386 [DEBUG] [Thread-119585] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:13:07.444 [DEBUG] [Thread-119585] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:13:07.445 [DEBUG] [Thread-119585] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:13:07.446 [DEBUG] [Thread-119585] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:13:07.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:13:07.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:13:07.504 [DEBUG] [Thread-119585] [transport.py] [_log()] userauth is OK
2025-11-03T17:13:07.505 [DEBUG] [Thread-119585] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:13:07.505 [DEBUG] [Thread-119585] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:13:07.505 [DEBUG] [Thread-119585] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:13:07.505 [DEBUG] [Thread-119585] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:13:07.524 [INFO] [Thread-119585] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:13:07.524 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:13:07.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:13:08.370 [DEBUG] [Thread-119585] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:13:08.371 [DEBUG] [Thread-119585] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:13:08.419 [DEBUG] [Thread-119585] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:13:08.420 [DEBUG] [Thread-119585] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:13:08.429 [DEBUG] [Thread-119585] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:13:08.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:13:08.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:13:08.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:13:08.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:13:08.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:13:08.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:13:08.466 [DEBUG] [Thread-119585] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:13:18.736 [DEBUG] [Thread-119587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:13:21.158 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:13:21.159 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:13:30.134 [DEBUG] [Thread-119588 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:13:33.788 [DEBUG] [Thread-119589 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:13:38.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:13:38.462 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:13:38.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:13:39.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 13, 12), 45.2, 4.02, 0.0, 30.52, 25.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:13:39.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:13:12
2025-11-03T17:13:39.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:13:39.477 [DEBUG] [Thread-119590] [transport.py] [_log()] starting thread (client mode): 0x117e8910
2025-11-03T17:13:39.477 [DEBUG] [Thread-119590] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:13:39.498 [DEBUG] [Thread-119590] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:13:39.498 [INFO] [Thread-119590] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:13:39.500 [DEBUG] [Thread-119590] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:13:39.500 [DEBUG] [Thread-119590] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:13:39.501 [DEBUG] [Thread-119590] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:13:39.501 [DEBUG] [Thread-119590] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:13:39.501 [DEBUG] [Thread-119590] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:13:39.501 [DEBUG] [Thread-119590] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:13:39.501 [DEBUG] [Thread-119590] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:13:39.501 [DEBUG] [Thread-119590] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:13:39.501 [DEBUG] [Thread-119590] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:13:39.501 [DEBUG] [Thread-119590] [transport.py] [_log()] client lang: <none>
2025-11-03T17:13:39.501 [DEBUG] [Thread-119590] [transport.py] [_log()] server lang: <none>
2025-11-03T17:13:39.501 [DEBUG] [Thread-119590] [transport.py] [_log()] kex follows: False
2025-11-03T17:13:39.502 [DEBUG] [Thread-119590] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:13:39.502 [DEBUG] [Thread-119590] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:13:39.502 [DEBUG] [Thread-119590] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:13:39.502 [DEBUG] [Thread-119590] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:13:39.502 [DEBUG] [Thread-119590] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:13:39.502 [DEBUG] [Thread-119590] [transport.py] [_log()] Compression: none
2025-11-03T17:13:39.502 [DEBUG] [Thread-119590] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:13:39.521 [DEBUG] [Thread-119590] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:13:39.522 [DEBUG] [Thread-119590] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:13:39.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:13:39.523 [DEBUG] [Thread-119590] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:13:39.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:13:39.525 [DEBUG] [Thread-119590] [transport.py] [_log()] userauth is OK
2025-11-03T17:13:39.525 [DEBUG] [Thread-119590] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:13:39.525 [DEBUG] [Thread-119590] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:13:39.525 [DEBUG] [Thread-119590] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:13:39.525 [DEBUG] [Thread-119590] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:13:39.549 [INFO] [Thread-119590] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:13:39.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:13:40.202 [DEBUG] [Thread-119590] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:13:40.202 [DEBUG] [Thread-119590] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:13:40.202 [DEBUG] [Thread-119590] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:13:40.234 [DEBUG] [Thread-119590] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:13:40.234 [DEBUG] [Thread-119590] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:13:40.237 [DEBUG] [Thread-119590] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:13:40.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:13:40.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:13:40.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:13:40.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:13:40.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:13:40.256 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:13:40.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:13:40.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:13:40.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:13:40.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.633783 -999.00  +25.50  32.02      8  -10.10 1 1 2 1 1   887    0 34.17 -81.33 ----- 32.1 32.0 311.2 38.8 27.9 -33.4 28.0 -32.6 28.9 -33.2 29.3 -32.8
2025-11-03T17:13:40.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:13:40.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:13:40.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.633783
2025-11-03T17:13:40.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:13:40.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:13:40.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:13:40.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:13:40.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:13:40.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:13:12', tmtdew=45.2, humidity=4.02, cloud=0.0, wind=30.52, temperature=25.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:12:38.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:13:40.257 [DEBUG] [Thread-119590] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:13:40.329 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:13:40.348 [DEBUG] [Thread-119593] [transport.py] [_log()] starting thread (client mode): 0x11763d30
2025-11-03T17:13:40.349 [DEBUG] [Thread-119593] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:13:40.363 [DEBUG] [Thread-119593] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:13:40.363 [INFO] [Thread-119593] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:13:40.372 [DEBUG] [Thread-119593] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:13:40.372 [DEBUG] [Thread-119593] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:13:40.372 [DEBUG] [Thread-119593] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:13:40.372 [DEBUG] [Thread-119593] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:13:40.372 [DEBUG] [Thread-119593] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:13:40.372 [DEBUG] [Thread-119593] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:13:40.372 [DEBUG] [Thread-119593] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:13:40.372 [DEBUG] [Thread-119593] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:13:40.372 [DEBUG] [Thread-119593] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:13:40.372 [DEBUG] [Thread-119593] [transport.py] [_log()] client lang: <none>
2025-11-03T17:13:40.372 [DEBUG] [Thread-119593] [transport.py] [_log()] server lang: <none>
2025-11-03T17:13:40.372 [DEBUG] [Thread-119593] [transport.py] [_log()] kex follows: False
2025-11-03T17:13:40.372 [DEBUG] [Thread-119593] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:13:40.372 [DEBUG] [Thread-119593] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:13:40.372 [DEBUG] [Thread-119593] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:13:40.372 [DEBUG] [Thread-119593] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:13:40.372 [DEBUG] [Thread-119593] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:13:40.372 [DEBUG] [Thread-119593] [transport.py] [_log()] Compression: none
2025-11-03T17:13:40.372 [DEBUG] [Thread-119593] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:13:40.430 [DEBUG] [Thread-119593] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:13:40.430 [DEBUG] [Thread-119593] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:13:40.430 [DEBUG] [Thread-119593] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:13:40.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:13:40.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:13:40.488 [DEBUG] [Thread-119593] [transport.py] [_log()] userauth is OK
2025-11-03T17:13:40.488 [DEBUG] [Thread-119593] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:13:40.488 [DEBUG] [Thread-119593] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:13:40.488 [DEBUG] [Thread-119593] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:13:40.488 [DEBUG] [Thread-119593] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:13:40.501 [INFO] [Thread-119593] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:13:40.502 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:13:40.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:13:41.315 [DEBUG] [Thread-119593] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:13:41.316 [DEBUG] [Thread-119593] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:13:41.363 [DEBUG] [Thread-119593] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:13:41.364 [DEBUG] [Thread-119593] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:13:41.373 [DEBUG] [Thread-119593] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:13:41.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:13:41.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:13:41.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:13:41.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:13:41.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:13:41.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:13:41.409 [DEBUG] [Thread-119593] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:13:48.828 [DEBUG] [Thread-119595 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:14:03.888 [DEBUG] [Thread-119596 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:14:11.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:14:11.405 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:14:11.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:14:12.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 13, 44), 45.59, 3.97, 0.0, 28.48, 25.71, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:14:12.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:13:44
2025-11-03T17:14:12.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:14:12.502 [DEBUG] [Thread-119597] [transport.py] [_log()] starting thread (client mode): 0x117610c0
2025-11-03T17:14:12.502 [DEBUG] [Thread-119597] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:14:12.525 [DEBUG] [Thread-119597] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:14:12.526 [INFO] [Thread-119597] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:14:12.527 [DEBUG] [Thread-119597] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:14:12.528 [DEBUG] [Thread-119597] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:14:12.528 [DEBUG] [Thread-119597] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:14:12.528 [DEBUG] [Thread-119597] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:14:12.528 [DEBUG] [Thread-119597] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:14:12.528 [DEBUG] [Thread-119597] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:14:12.529 [DEBUG] [Thread-119597] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:14:12.529 [DEBUG] [Thread-119597] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:14:12.529 [DEBUG] [Thread-119597] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:14:12.529 [DEBUG] [Thread-119597] [transport.py] [_log()] client lang: <none>
2025-11-03T17:14:12.529 [DEBUG] [Thread-119597] [transport.py] [_log()] server lang: <none>
2025-11-03T17:14:12.529 [DEBUG] [Thread-119597] [transport.py] [_log()] kex follows: False
2025-11-03T17:14:12.529 [DEBUG] [Thread-119597] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:14:12.529 [DEBUG] [Thread-119597] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:14:12.530 [DEBUG] [Thread-119597] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:14:12.530 [DEBUG] [Thread-119597] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:14:12.530 [DEBUG] [Thread-119597] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:14:12.530 [DEBUG] [Thread-119597] [transport.py] [_log()] Compression: none
2025-11-03T17:14:12.530 [DEBUG] [Thread-119597] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:14:12.550 [DEBUG] [Thread-119597] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:14:12.551 [DEBUG] [Thread-119597] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:14:12.551 [DEBUG] [Thread-119597] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:14:12.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:14:12.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:14:12.553 [DEBUG] [Thread-119597] [transport.py] [_log()] userauth is OK
2025-11-03T17:14:12.554 [DEBUG] [Thread-119597] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:14:12.554 [DEBUG] [Thread-119597] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:14:12.554 [DEBUG] [Thread-119597] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:14:12.554 [DEBUG] [Thread-119597] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:14:12.578 [INFO] [Thread-119597] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:14:12.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:14:13.354 [DEBUG] [Thread-119597] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:14:13.354 [DEBUG] [Thread-119597] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:14:13.354 [DEBUG] [Thread-119597] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:14:13.394 [DEBUG] [Thread-119597] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:14:13.394 [DEBUG] [Thread-119597] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:14:13.397 [DEBUG] [Thread-119597] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:14:13.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:14:13.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:14:13.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:14:13.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:14:13.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:14:13.415 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:14:13.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:14:13.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:14:13.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:14:13.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.634477 -999.00  +25.50  33.42      8  -10.30 1 1 2 1 1   887    0 34.21 -92.64 ----- 30.6 33.4 321.0 36.7 28.0 -33.6 28.0 -32.5 29.0 -31.8 29.3 -32.7
2025-11-03T17:14:13.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:14:13.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:14:13.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.634477
2025-11-03T17:14:13.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:14:13.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:14:13.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:14:13.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:14:13.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:14:13.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:13:44', tmtdew=45.59, humidity=3.97, cloud=0.0, wind=28.48, temperature=25.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:13:38.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:14:13.417 [DEBUG] [Thread-119597] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:14:13.488 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:14:13.510 [DEBUG] [Thread-119600] [transport.py] [_log()] starting thread (client mode): 0x11761f30
2025-11-03T17:14:13.510 [DEBUG] [Thread-119600] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:14:13.525 [DEBUG] [Thread-119600] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:14:13.525 [INFO] [Thread-119600] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:14:13.533 [DEBUG] [Thread-119600] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:14:13.533 [DEBUG] [Thread-119600] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:14:13.533 [DEBUG] [Thread-119600] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:14:13.533 [DEBUG] [Thread-119600] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:14:13.533 [DEBUG] [Thread-119600] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:14:13.533 [DEBUG] [Thread-119600] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:14:13.533 [DEBUG] [Thread-119600] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:14:13.533 [DEBUG] [Thread-119600] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:14:13.533 [DEBUG] [Thread-119600] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:14:13.533 [DEBUG] [Thread-119600] [transport.py] [_log()] client lang: <none>
2025-11-03T17:14:13.533 [DEBUG] [Thread-119600] [transport.py] [_log()] server lang: <none>
2025-11-03T17:14:13.533 [DEBUG] [Thread-119600] [transport.py] [_log()] kex follows: False
2025-11-03T17:14:13.533 [DEBUG] [Thread-119600] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:14:13.533 [DEBUG] [Thread-119600] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:14:13.533 [DEBUG] [Thread-119600] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:14:13.533 [DEBUG] [Thread-119600] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:14:13.533 [DEBUG] [Thread-119600] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:14:13.533 [DEBUG] [Thread-119600] [transport.py] [_log()] Compression: none
2025-11-03T17:14:13.533 [DEBUG] [Thread-119600] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:14:13.590 [DEBUG] [Thread-119600] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:14:13.590 [DEBUG] [Thread-119600] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:14:13.590 [DEBUG] [Thread-119600] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:14:13.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:14:13.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:14:13.647 [DEBUG] [Thread-119600] [transport.py] [_log()] userauth is OK
2025-11-03T17:14:13.647 [DEBUG] [Thread-119600] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:14:13.647 [DEBUG] [Thread-119600] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:14:13.647 [DEBUG] [Thread-119600] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:14:13.647 [DEBUG] [Thread-119600] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:14:13.662 [INFO] [Thread-119600] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:14:13.662 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:14:13.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:14:14.511 [DEBUG] [Thread-119600] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:14:14.511 [DEBUG] [Thread-119600] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:14:14.559 [DEBUG] [Thread-119600] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:14:14.559 [DEBUG] [Thread-119600] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:14:14.569 [DEBUG] [Thread-119600] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:14:14.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:14:14.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:14:14.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:14:14.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:14:14.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:14:14.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:14:14.606 [DEBUG] [Thread-119600] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:14:18.931 [DEBUG] [Thread-119602 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:14:21.299 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:14:21.300 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:14:30.344 [DEBUG] [Thread-119603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:14:33.987 [DEBUG] [Thread-119604 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:14:44.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:14:44.626 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:14:44.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:14:45.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 14, 17), 45.63, 3.95, 0.0, 27.08, 25.66, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:14:45.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:14:17
2025-11-03T17:14:45.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:14:45.692 [DEBUG] [Thread-119605] [transport.py] [_log()] starting thread (client mode): 0x117eb700
2025-11-03T17:14:45.692 [DEBUG] [Thread-119605] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:14:45.711 [DEBUG] [Thread-119605] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:14:45.711 [INFO] [Thread-119605] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:14:45.715 [DEBUG] [Thread-119605] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:14:45.715 [DEBUG] [Thread-119605] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:14:45.715 [DEBUG] [Thread-119605] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:14:45.715 [DEBUG] [Thread-119605] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:14:45.715 [DEBUG] [Thread-119605] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:14:45.715 [DEBUG] [Thread-119605] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:14:45.715 [DEBUG] [Thread-119605] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:14:45.715 [DEBUG] [Thread-119605] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:14:45.715 [DEBUG] [Thread-119605] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:14:45.715 [DEBUG] [Thread-119605] [transport.py] [_log()] client lang: <none>
2025-11-03T17:14:45.715 [DEBUG] [Thread-119605] [transport.py] [_log()] server lang: <none>
2025-11-03T17:14:45.715 [DEBUG] [Thread-119605] [transport.py] [_log()] kex follows: False
2025-11-03T17:14:45.715 [DEBUG] [Thread-119605] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:14:45.715 [DEBUG] [Thread-119605] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:14:45.715 [DEBUG] [Thread-119605] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:14:45.715 [DEBUG] [Thread-119605] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:14:45.715 [DEBUG] [Thread-119605] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:14:45.715 [DEBUG] [Thread-119605] [transport.py] [_log()] Compression: none
2025-11-03T17:14:45.715 [DEBUG] [Thread-119605] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:14:45.732 [DEBUG] [Thread-119605] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:14:45.733 [DEBUG] [Thread-119605] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:14:45.733 [DEBUG] [Thread-119605] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:14:45.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:14:45.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:14:45.777 [DEBUG] [Thread-119605] [transport.py] [_log()] userauth is OK
2025-11-03T17:14:45.777 [DEBUG] [Thread-119605] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:14:45.777 [DEBUG] [Thread-119605] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:14:45.777 [DEBUG] [Thread-119605] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:14:45.777 [DEBUG] [Thread-119605] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:14:45.806 [INFO] [Thread-119605] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:14:45.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:14:46.469 [DEBUG] [Thread-119605] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:14:46.469 [DEBUG] [Thread-119605] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:14:46.469 [DEBUG] [Thread-119605] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:14:46.511 [DEBUG] [Thread-119605] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:14:46.511 [DEBUG] [Thread-119605] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:14:46.513 [DEBUG] [Thread-119605] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:14:46.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:14:46.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:14:46.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:14:46.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:14:46.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:14:46.539 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:14:46.539 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:14:46.539 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:14:46.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:14:46.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.634825 -999.00  +25.50  36.19      8  -10.20 1 1 2 1 1   887    0 32.78 -96.20 ----- 33.2 36.2 314.2 40.2 27.9 -33.3 28.0 -32.5 29.0 -32.9 29.3 -32.7
2025-11-03T17:14:46.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:14:46.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:14:46.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.634825
2025-11-03T17:14:46.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:14:46.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:14:46.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:14:46.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:14:46.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:14:46.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:14:17', tmtdew=45.63, humidity=3.95, cloud=0.0, wind=27.08, temperature=25.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:14:08.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:14:46.540 [DEBUG] [Thread-119605] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:14:46.612 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:14:46.642 [DEBUG] [Thread-119608] [transport.py] [_log()] starting thread (client mode): 0x11780f10
2025-11-03T17:14:46.642 [DEBUG] [Thread-119608] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:14:46.657 [DEBUG] [Thread-119608] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:14:46.657 [INFO] [Thread-119608] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:14:46.665 [DEBUG] [Thread-119608] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:14:46.665 [DEBUG] [Thread-119608] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:14:46.665 [DEBUG] [Thread-119608] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:14:46.665 [DEBUG] [Thread-119608] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:14:46.665 [DEBUG] [Thread-119608] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:14:46.665 [DEBUG] [Thread-119608] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:14:46.665 [DEBUG] [Thread-119608] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:14:46.665 [DEBUG] [Thread-119608] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:14:46.665 [DEBUG] [Thread-119608] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:14:46.665 [DEBUG] [Thread-119608] [transport.py] [_log()] client lang: <none>
2025-11-03T17:14:46.665 [DEBUG] [Thread-119608] [transport.py] [_log()] server lang: <none>
2025-11-03T17:14:46.665 [DEBUG] [Thread-119608] [transport.py] [_log()] kex follows: False
2025-11-03T17:14:46.665 [DEBUG] [Thread-119608] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:14:46.665 [DEBUG] [Thread-119608] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:14:46.665 [DEBUG] [Thread-119608] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:14:46.665 [DEBUG] [Thread-119608] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:14:46.665 [DEBUG] [Thread-119608] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:14:46.665 [DEBUG] [Thread-119608] [transport.py] [_log()] Compression: none
2025-11-03T17:14:46.665 [DEBUG] [Thread-119608] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:14:46.722 [DEBUG] [Thread-119608] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:14:46.722 [DEBUG] [Thread-119608] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:14:46.722 [DEBUG] [Thread-119608] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:14:46.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:14:46.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:14:46.779 [DEBUG] [Thread-119608] [transport.py] [_log()] userauth is OK
2025-11-03T17:14:46.779 [DEBUG] [Thread-119608] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:14:46.779 [DEBUG] [Thread-119608] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:14:46.779 [DEBUG] [Thread-119608] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:14:46.779 [DEBUG] [Thread-119608] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:14:46.793 [INFO] [Thread-119608] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:14:46.793 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:14:46.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:14:47.640 [DEBUG] [Thread-119608] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:14:47.640 [DEBUG] [Thread-119608] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:14:47.688 [DEBUG] [Thread-119608] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:14:47.688 [DEBUG] [Thread-119608] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:14:47.697 [DEBUG] [Thread-119608] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:14:47.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:14:47.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:14:47.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:14:47.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:14:47.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:14:47.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:14:47.732 [DEBUG] [Thread-119608] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:14:49.026 [DEBUG] [Thread-119610 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:15:04.085 [DEBUG] [Thread-119611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:15:17.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:15:17.750 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:15:17.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:15:18.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 14, 49), 45.78, 3.95, 0.0, 38.87, 25.79, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:15:18.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:14:49
2025-11-03T17:15:18.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:15:18.793 [DEBUG] [Thread-119612] [transport.py] [_log()] starting thread (client mode): 0x11799c90
2025-11-03T17:15:18.793 [DEBUG] [Thread-119612] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:15:18.815 [DEBUG] [Thread-119612] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:15:18.815 [INFO] [Thread-119612] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:15:18.818 [DEBUG] [Thread-119612] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:15:18.818 [DEBUG] [Thread-119612] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:15:18.818 [DEBUG] [Thread-119612] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:15:18.818 [DEBUG] [Thread-119612] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:15:18.819 [DEBUG] [Thread-119612] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:15:18.819 [DEBUG] [Thread-119612] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:15:18.819 [DEBUG] [Thread-119612] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:15:18.819 [DEBUG] [Thread-119612] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:15:18.819 [DEBUG] [Thread-119612] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:15:18.819 [DEBUG] [Thread-119612] [transport.py] [_log()] client lang: <none>
2025-11-03T17:15:18.819 [DEBUG] [Thread-119612] [transport.py] [_log()] server lang: <none>
2025-11-03T17:15:18.819 [DEBUG] [Thread-119612] [transport.py] [_log()] kex follows: False
2025-11-03T17:15:18.819 [DEBUG] [Thread-119612] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:15:18.819 [DEBUG] [Thread-119612] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:15:18.819 [DEBUG] [Thread-119612] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:15:18.819 [DEBUG] [Thread-119612] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:15:18.819 [DEBUG] [Thread-119612] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:15:18.819 [DEBUG] [Thread-119612] [transport.py] [_log()] Compression: none
2025-11-03T17:15:18.819 [DEBUG] [Thread-119612] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:15:18.835 [DEBUG] [Thread-119612] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:15:18.835 [DEBUG] [Thread-119612] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:15:18.835 [DEBUG] [Thread-119612] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:15:18.835 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:15:18.835 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:15:18.836 [DEBUG] [Thread-119612] [transport.py] [_log()] userauth is OK
2025-11-03T17:15:18.836 [DEBUG] [Thread-119612] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:15:18.836 [DEBUG] [Thread-119612] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:15:18.836 [DEBUG] [Thread-119612] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:15:18.836 [DEBUG] [Thread-119612] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:15:18.845 [INFO] [Thread-119612] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:15:18.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:15:19.124 [DEBUG] [Thread-119614 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:15:19.504 [DEBUG] [Thread-119612] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:15:19.505 [DEBUG] [Thread-119612] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:15:19.505 [DEBUG] [Thread-119612] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:15:19.546 [DEBUG] [Thread-119612] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:15:19.546 [DEBUG] [Thread-119612] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:15:19.549 [DEBUG] [Thread-119612] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:15:19.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:15:19.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:15:19.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:15:19.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:15:19.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:15:19.566 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:15:19.566 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:15:19.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:15:19.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:15:19.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.635172 -999.00  +25.70  43.58      8  -10.40 1 1 2 1 1   887    0 33.23 -98.00 ----- 42.2 43.6 303.9 47.1 27.9 -34.2 28.0 -32.7 28.9 -33.7 29.3 -32.8
2025-11-03T17:15:19.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:15:19.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:15:19.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.635172
2025-11-03T17:15:19.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:15:19.570 [DEBUG] [Thread-119612] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:15:19.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:15:19.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:15:19.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:15:19.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:15:19.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:14:49', tmtdew=45.78, humidity=3.95, cloud=0.0, wind=38.87, temperature=25.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:14:38.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:15:19.648 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:15:19.668 [DEBUG] [Thread-119616] [transport.py] [_log()] starting thread (client mode): 0x11799f30
2025-11-03T17:15:19.668 [DEBUG] [Thread-119616] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:15:19.682 [DEBUG] [Thread-119616] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:15:19.682 [INFO] [Thread-119616] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:15:19.690 [DEBUG] [Thread-119616] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:15:19.690 [DEBUG] [Thread-119616] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:15:19.690 [DEBUG] [Thread-119616] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:15:19.690 [DEBUG] [Thread-119616] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:15:19.690 [DEBUG] [Thread-119616] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:15:19.690 [DEBUG] [Thread-119616] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:15:19.690 [DEBUG] [Thread-119616] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:15:19.690 [DEBUG] [Thread-119616] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:15:19.690 [DEBUG] [Thread-119616] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:15:19.690 [DEBUG] [Thread-119616] [transport.py] [_log()] client lang: <none>
2025-11-03T17:15:19.690 [DEBUG] [Thread-119616] [transport.py] [_log()] server lang: <none>
2025-11-03T17:15:19.690 [DEBUG] [Thread-119616] [transport.py] [_log()] kex follows: False
2025-11-03T17:15:19.690 [DEBUG] [Thread-119616] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:15:19.690 [DEBUG] [Thread-119616] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:15:19.690 [DEBUG] [Thread-119616] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:15:19.690 [DEBUG] [Thread-119616] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:15:19.690 [DEBUG] [Thread-119616] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:15:19.690 [DEBUG] [Thread-119616] [transport.py] [_log()] Compression: none
2025-11-03T17:15:19.690 [DEBUG] [Thread-119616] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:15:19.746 [DEBUG] [Thread-119616] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:15:19.746 [DEBUG] [Thread-119616] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:15:19.746 [DEBUG] [Thread-119616] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:15:19.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:15:19.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:15:19.803 [DEBUG] [Thread-119616] [transport.py] [_log()] userauth is OK
2025-11-03T17:15:19.803 [DEBUG] [Thread-119616] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:15:19.804 [DEBUG] [Thread-119616] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:15:19.804 [DEBUG] [Thread-119616] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:15:19.804 [DEBUG] [Thread-119616] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:15:19.821 [INFO] [Thread-119616] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:15:19.821 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:15:19.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:15:20.667 [DEBUG] [Thread-119616] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:15:20.667 [DEBUG] [Thread-119616] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:15:20.718 [DEBUG] [Thread-119616] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:15:20.718 [DEBUG] [Thread-119616] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:15:20.727 [DEBUG] [Thread-119616] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:15:20.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:15:20.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:15:20.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:15:20.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:15:20.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:15:20.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:15:20.764 [DEBUG] [Thread-119616] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:15:21.442 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:15:21.443 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:15:30.671 [DEBUG] [Thread-119618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:15:34.162 [DEBUG] [Thread-119619 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:15:49.246 [DEBUG] [Thread-119620 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:15:50.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:15:50.785 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:15:50.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:15:51.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 15, 22), 46.27, 3.84, 0.0, 40.25, 26.2, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:15:51.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:15:22
2025-11-03T17:15:51.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:15:51.766 [DEBUG] [Thread-119621] [transport.py] [_log()] starting thread (client mode): 0x141da020
2025-11-03T17:15:51.766 [DEBUG] [Thread-119621] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:15:51.774 [DEBUG] [Thread-119621] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:15:51.774 [INFO] [Thread-119621] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:15:51.778 [DEBUG] [Thread-119621] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:15:51.778 [DEBUG] [Thread-119621] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:15:51.778 [DEBUG] [Thread-119621] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:15:51.778 [DEBUG] [Thread-119621] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:15:51.778 [DEBUG] [Thread-119621] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:15:51.778 [DEBUG] [Thread-119621] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:15:51.778 [DEBUG] [Thread-119621] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:15:51.778 [DEBUG] [Thread-119621] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:15:51.778 [DEBUG] [Thread-119621] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:15:51.778 [DEBUG] [Thread-119621] [transport.py] [_log()] client lang: <none>
2025-11-03T17:15:51.778 [DEBUG] [Thread-119621] [transport.py] [_log()] server lang: <none>
2025-11-03T17:15:51.778 [DEBUG] [Thread-119621] [transport.py] [_log()] kex follows: False
2025-11-03T17:15:51.778 [DEBUG] [Thread-119621] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:15:51.778 [DEBUG] [Thread-119621] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:15:51.778 [DEBUG] [Thread-119621] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:15:51.779 [DEBUG] [Thread-119621] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:15:51.779 [DEBUG] [Thread-119621] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:15:51.779 [DEBUG] [Thread-119621] [transport.py] [_log()] Compression: none
2025-11-03T17:15:51.779 [DEBUG] [Thread-119621] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:15:51.798 [DEBUG] [Thread-119621] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:15:51.799 [DEBUG] [Thread-119621] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:15:51.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:15:51.800 [DEBUG] [Thread-119621] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:15:51.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:15:51.802 [DEBUG] [Thread-119621] [transport.py] [_log()] userauth is OK
2025-11-03T17:15:51.803 [DEBUG] [Thread-119621] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:15:51.803 [DEBUG] [Thread-119621] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:15:51.803 [DEBUG] [Thread-119621] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:15:51.803 [DEBUG] [Thread-119621] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:15:51.824 [INFO] [Thread-119621] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:15:51.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:15:52.447 [DEBUG] [Thread-119621] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:15:52.447 [DEBUG] [Thread-119621] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:15:52.448 [DEBUG] [Thread-119621] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:15:52.488 [DEBUG] [Thread-119621] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:15:52.489 [DEBUG] [Thread-119621] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:15:52.492 [DEBUG] [Thread-119621] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:15:52.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:15:52.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:15:52.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:15:52.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:15:52.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:15:52.519 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:15:52.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:15:52.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:15:52.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:15:52.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.635519 -999.00  +25.10  27.14      8  -10.60 1 1 1 1 1   887    0 33.56 -101.72 ----- 29.6 27.1 299.4 53.9 27.8 -33.9 27.9 -33.3 28.7 -34.4 29.2 -33.5
2025-11-03T17:15:52.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:15:52.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:15:52.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.635519
2025-11-03T17:15:52.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:15:52.522 [DEBUG] [Thread-119621] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:15:52.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:15:52.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:15:52.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:15:52.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:15:52.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:15:22', tmtdew=46.27, humidity=3.84, cloud=0.0, wind=40.25, temperature=26.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:15:08.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:15:52.606 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:15:52.624 [DEBUG] [Thread-119624] [transport.py] [_log()] starting thread (client mode): 0x141dbb20
2025-11-03T17:15:52.624 [DEBUG] [Thread-119624] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:15:52.639 [DEBUG] [Thread-119624] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:15:52.639 [INFO] [Thread-119624] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:15:52.647 [DEBUG] [Thread-119624] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:15:52.647 [DEBUG] [Thread-119624] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:15:52.647 [DEBUG] [Thread-119624] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:15:52.648 [DEBUG] [Thread-119624] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:15:52.648 [DEBUG] [Thread-119624] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:15:52.648 [DEBUG] [Thread-119624] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:15:52.648 [DEBUG] [Thread-119624] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:15:52.648 [DEBUG] [Thread-119624] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:15:52.648 [DEBUG] [Thread-119624] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:15:52.648 [DEBUG] [Thread-119624] [transport.py] [_log()] client lang: <none>
2025-11-03T17:15:52.648 [DEBUG] [Thread-119624] [transport.py] [_log()] server lang: <none>
2025-11-03T17:15:52.649 [DEBUG] [Thread-119624] [transport.py] [_log()] kex follows: False
2025-11-03T17:15:52.649 [DEBUG] [Thread-119624] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:15:52.649 [DEBUG] [Thread-119624] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:15:52.649 [DEBUG] [Thread-119624] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:15:52.649 [DEBUG] [Thread-119624] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:15:52.649 [DEBUG] [Thread-119624] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:15:52.649 [DEBUG] [Thread-119624] [transport.py] [_log()] Compression: none
2025-11-03T17:15:52.650 [DEBUG] [Thread-119624] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:15:52.711 [DEBUG] [Thread-119624] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:15:52.711 [DEBUG] [Thread-119624] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:15:52.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:15:52.712 [DEBUG] [Thread-119624] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:15:52.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:15:52.768 [DEBUG] [Thread-119624] [transport.py] [_log()] userauth is OK
2025-11-03T17:15:52.768 [DEBUG] [Thread-119624] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:15:52.768 [DEBUG] [Thread-119624] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:15:52.768 [DEBUG] [Thread-119624] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:15:52.768 [DEBUG] [Thread-119624] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:15:52.800 [INFO] [Thread-119624] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:15:52.800 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:15:52.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:15:53.636 [DEBUG] [Thread-119624] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:15:53.636 [DEBUG] [Thread-119624] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:15:53.684 [DEBUG] [Thread-119624] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:15:53.684 [DEBUG] [Thread-119624] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:15:53.693 [DEBUG] [Thread-119624] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:15:53.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:15:53.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:15:53.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:15:53.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:15:53.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:15:53.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:15:53.730 [DEBUG] [Thread-119624] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:16:04.283 [DEBUG] [Thread-119626 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:16:19.353 [DEBUG] [Thread-119627 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:16:21.583 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:16:21.584 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:16:23.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:16:23.753 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:16:23.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:16:24.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 15, 54), 46.31, 3.8, 0.0, 39.93, 26.05, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:16:24.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:15:54
2025-11-03T17:16:24.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:16:24.812 [DEBUG] [Thread-119628] [transport.py] [_log()] starting thread (client mode): 0x117e81c0
2025-11-03T17:16:24.812 [DEBUG] [Thread-119628] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:16:24.822 [DEBUG] [Thread-119628] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:16:24.822 [INFO] [Thread-119628] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:16:24.825 [DEBUG] [Thread-119628] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:16:24.825 [DEBUG] [Thread-119628] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:16:24.826 [DEBUG] [Thread-119628] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:16:24.826 [DEBUG] [Thread-119628] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:16:24.826 [DEBUG] [Thread-119628] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:16:24.826 [DEBUG] [Thread-119628] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:16:24.826 [DEBUG] [Thread-119628] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:16:24.826 [DEBUG] [Thread-119628] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:16:24.826 [DEBUG] [Thread-119628] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:16:24.826 [DEBUG] [Thread-119628] [transport.py] [_log()] client lang: <none>
2025-11-03T17:16:24.826 [DEBUG] [Thread-119628] [transport.py] [_log()] server lang: <none>
2025-11-03T17:16:24.826 [DEBUG] [Thread-119628] [transport.py] [_log()] kex follows: False
2025-11-03T17:16:24.826 [DEBUG] [Thread-119628] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:16:24.826 [DEBUG] [Thread-119628] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:16:24.826 [DEBUG] [Thread-119628] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:16:24.826 [DEBUG] [Thread-119628] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:16:24.826 [DEBUG] [Thread-119628] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:16:24.826 [DEBUG] [Thread-119628] [transport.py] [_log()] Compression: none
2025-11-03T17:16:24.826 [DEBUG] [Thread-119628] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:16:24.844 [DEBUG] [Thread-119628] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:16:24.845 [DEBUG] [Thread-119628] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:16:24.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:16:24.846 [DEBUG] [Thread-119628] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:16:24.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:16:24.848 [DEBUG] [Thread-119628] [transport.py] [_log()] userauth is OK
2025-11-03T17:16:24.848 [DEBUG] [Thread-119628] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:16:24.848 [DEBUG] [Thread-119628] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:16:24.848 [DEBUG] [Thread-119628] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:16:24.848 [DEBUG] [Thread-119628] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:16:24.883 [INFO] [Thread-119628] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:16:24.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:16:25.536 [DEBUG] [Thread-119628] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:16:25.536 [DEBUG] [Thread-119628] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:16:25.537 [DEBUG] [Thread-119628] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:16:25.577 [DEBUG] [Thread-119628] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:16:25.577 [DEBUG] [Thread-119628] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:16:25.580 [DEBUG] [Thread-119628] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:16:25.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:16:25.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:16:25.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:16:25.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:16:25.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:16:25.605 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:16:25.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:16:25.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:16:25.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:16:25.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.635866 -999.00  +25.40  31.94      8  -10.40 1 1 2 1 1   887    0 33.27 -98.40 ----- 32.1 31.9 313.6 40.9 27.8 -33.6 27.8 -32.5 28.7 -32.1 29.0 -33.0
2025-11-03T17:16:25.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:16:25.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:16:25.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.635866
2025-11-03T17:16:25.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:16:25.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:16:25.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:16:25.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:16:25.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:16:25.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:15:54', tmtdew=46.31, humidity=3.8, cloud=0.0, wind=39.93, temperature=26.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:15:38.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:16:25.609 [DEBUG] [Thread-119628] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:16:25.693 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:16:25.713 [DEBUG] [Thread-119631] [transport.py] [_log()] starting thread (client mode): 0x117eb190
2025-11-03T17:16:25.713 [DEBUG] [Thread-119631] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:16:25.728 [DEBUG] [Thread-119631] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:16:25.728 [INFO] [Thread-119631] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:16:25.738 [DEBUG] [Thread-119631] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:16:25.738 [DEBUG] [Thread-119631] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:16:25.738 [DEBUG] [Thread-119631] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:16:25.738 [DEBUG] [Thread-119631] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:16:25.738 [DEBUG] [Thread-119631] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:16:25.738 [DEBUG] [Thread-119631] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:16:25.738 [DEBUG] [Thread-119631] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:16:25.738 [DEBUG] [Thread-119631] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:16:25.739 [DEBUG] [Thread-119631] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:16:25.739 [DEBUG] [Thread-119631] [transport.py] [_log()] client lang: <none>
2025-11-03T17:16:25.739 [DEBUG] [Thread-119631] [transport.py] [_log()] server lang: <none>
2025-11-03T17:16:25.739 [DEBUG] [Thread-119631] [transport.py] [_log()] kex follows: False
2025-11-03T17:16:25.739 [DEBUG] [Thread-119631] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:16:25.739 [DEBUG] [Thread-119631] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:16:25.739 [DEBUG] [Thread-119631] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:16:25.739 [DEBUG] [Thread-119631] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:16:25.739 [DEBUG] [Thread-119631] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:16:25.739 [DEBUG] [Thread-119631] [transport.py] [_log()] Compression: none
2025-11-03T17:16:25.739 [DEBUG] [Thread-119631] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:16:25.796 [DEBUG] [Thread-119631] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:16:25.796 [DEBUG] [Thread-119631] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:16:25.797 [DEBUG] [Thread-119631] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:16:25.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:16:25.798 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:16:25.856 [DEBUG] [Thread-119631] [transport.py] [_log()] userauth is OK
2025-11-03T17:16:25.856 [DEBUG] [Thread-119631] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:16:25.856 [DEBUG] [Thread-119631] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:16:25.856 [DEBUG] [Thread-119631] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:16:25.856 [DEBUG] [Thread-119631] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:16:25.875 [INFO] [Thread-119631] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:16:25.876 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:16:25.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:16:26.716 [DEBUG] [Thread-119631] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:16:26.716 [DEBUG] [Thread-119631] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:16:26.765 [DEBUG] [Thread-119631] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:16:26.765 [DEBUG] [Thread-119631] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:16:26.774 [DEBUG] [Thread-119631] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:16:26.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:16:26.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:16:26.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:16:26.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:16:26.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:16:26.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:16:26.823 [DEBUG] [Thread-119631] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:16:30.824 [DEBUG] [Thread-119633 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:16:34.392 [DEBUG] [Thread-119634 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:16:49.441 [DEBUG] [Thread-119635 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:16:56.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:16:56.823 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:16:56.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:16:57.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 16, 26), 46.27, 3.79, 0.0, 37.57, 25.77, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:16:57.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:16:26
2025-11-03T17:16:57.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:16:57.824 [DEBUG] [Thread-119636] [transport.py] [_log()] starting thread (client mode): 0xed88ca0
2025-11-03T17:16:57.825 [DEBUG] [Thread-119636] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:16:57.847 [DEBUG] [Thread-119636] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:16:57.847 [INFO] [Thread-119636] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:16:57.857 [DEBUG] [Thread-119636] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:16:57.857 [DEBUG] [Thread-119636] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:16:57.857 [DEBUG] [Thread-119636] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:16:57.857 [DEBUG] [Thread-119636] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:16:57.857 [DEBUG] [Thread-119636] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:16:57.857 [DEBUG] [Thread-119636] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:16:57.857 [DEBUG] [Thread-119636] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:16:57.857 [DEBUG] [Thread-119636] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:16:57.857 [DEBUG] [Thread-119636] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:16:57.857 [DEBUG] [Thread-119636] [transport.py] [_log()] client lang: <none>
2025-11-03T17:16:57.857 [DEBUG] [Thread-119636] [transport.py] [_log()] server lang: <none>
2025-11-03T17:16:57.857 [DEBUG] [Thread-119636] [transport.py] [_log()] kex follows: False
2025-11-03T17:16:57.857 [DEBUG] [Thread-119636] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:16:57.857 [DEBUG] [Thread-119636] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:16:57.858 [DEBUG] [Thread-119636] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:16:57.858 [DEBUG] [Thread-119636] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:16:57.858 [DEBUG] [Thread-119636] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:16:57.858 [DEBUG] [Thread-119636] [transport.py] [_log()] Compression: none
2025-11-03T17:16:57.858 [DEBUG] [Thread-119636] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:16:57.877 [DEBUG] [Thread-119636] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:16:57.877 [DEBUG] [Thread-119636] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:16:57.878 [DEBUG] [Thread-119636] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:16:57.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:16:57.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:16:57.882 [DEBUG] [Thread-119636] [transport.py] [_log()] userauth is OK
2025-11-03T17:16:57.882 [DEBUG] [Thread-119636] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:16:57.882 [DEBUG] [Thread-119636] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:16:57.882 [DEBUG] [Thread-119636] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:16:57.882 [DEBUG] [Thread-119636] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:16:57.906 [INFO] [Thread-119636] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:16:57.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:16:58.556 [DEBUG] [Thread-119636] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:16:58.556 [DEBUG] [Thread-119636] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:16:58.557 [DEBUG] [Thread-119636] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:16:58.597 [DEBUG] [Thread-119636] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:16:58.597 [DEBUG] [Thread-119636] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:16:58.600 [DEBUG] [Thread-119636] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:16:58.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:16:58.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:16:58.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:16:58.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:16:58.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:16:58.620 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:16:58.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:16:58.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:16:58.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:16:58.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.636213 -999.00  +25.40  30.23      8  -10.50 1 1 2 1 1   887    0 33.51 -98.03 ----- 30.0 30.2 290.0 39.4 27.8 -33.6 27.9 -32.7 28.8 -33.5 29.1 -32.5
2025-11-03T17:16:58.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:16:58.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:16:58.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.636213
2025-11-03T17:16:58.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:16:58.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:16:58.623 [DEBUG] [Thread-119636] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:16:58.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:16:58.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:16:58.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:16:58.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:16:26', tmtdew=46.27, humidity=3.79, cloud=0.0, wind=37.57, temperature=25.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:16:08.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:16:58.708 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:16:58.726 [DEBUG] [Thread-119639] [transport.py] [_log()] starting thread (client mode): 0x1179b490
2025-11-03T17:16:58.727 [DEBUG] [Thread-119639] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:16:58.746 [DEBUG] [Thread-119639] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:16:58.746 [INFO] [Thread-119639] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:16:58.755 [DEBUG] [Thread-119639] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:16:58.755 [DEBUG] [Thread-119639] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:16:58.755 [DEBUG] [Thread-119639] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:16:58.755 [DEBUG] [Thread-119639] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:16:58.755 [DEBUG] [Thread-119639] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:16:58.755 [DEBUG] [Thread-119639] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:16:58.755 [DEBUG] [Thread-119639] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:16:58.755 [DEBUG] [Thread-119639] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:16:58.755 [DEBUG] [Thread-119639] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:16:58.755 [DEBUG] [Thread-119639] [transport.py] [_log()] client lang: <none>
2025-11-03T17:16:58.755 [DEBUG] [Thread-119639] [transport.py] [_log()] server lang: <none>
2025-11-03T17:16:58.755 [DEBUG] [Thread-119639] [transport.py] [_log()] kex follows: False
2025-11-03T17:16:58.756 [DEBUG] [Thread-119639] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:16:58.756 [DEBUG] [Thread-119639] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:16:58.756 [DEBUG] [Thread-119639] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:16:58.756 [DEBUG] [Thread-119639] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:16:58.756 [DEBUG] [Thread-119639] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:16:58.756 [DEBUG] [Thread-119639] [transport.py] [_log()] Compression: none
2025-11-03T17:16:58.756 [DEBUG] [Thread-119639] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:16:58.818 [DEBUG] [Thread-119639] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:16:58.818 [DEBUG] [Thread-119639] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:16:58.818 [DEBUG] [Thread-119639] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:16:58.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:16:58.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:16:58.875 [DEBUG] [Thread-119639] [transport.py] [_log()] userauth is OK
2025-11-03T17:16:58.875 [DEBUG] [Thread-119639] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:16:58.875 [DEBUG] [Thread-119639] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:16:58.875 [DEBUG] [Thread-119639] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:16:58.875 [DEBUG] [Thread-119639] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:16:58.888 [INFO] [Thread-119639] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:16:58.889 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:16:58.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:16:59.689 [DEBUG] [Thread-119639] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:16:59.690 [DEBUG] [Thread-119639] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:16:59.737 [DEBUG] [Thread-119639] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:16:59.738 [DEBUG] [Thread-119639] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:16:59.746 [DEBUG] [Thread-119639] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:16:59.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:16:59.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:16:59.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:16:59.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:16:59.772 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:16:59.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:16:59.780 [DEBUG] [Thread-119639] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:17:04.494 [DEBUG] [Thread-119641 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:17:19.564 [DEBUG] [Thread-119642 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:17:21.723 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:17:21.724 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:17:29.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:17:29.803 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:17:29.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:17:30.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 16, 59), 46.06, 3.84, 0.0, 41.13, 25.77, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:17:30.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:16:59
2025-11-03T17:17:30.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:17:30.830 [DEBUG] [Thread-119643] [transport.py] [_log()] starting thread (client mode): 0x141d9120
2025-11-03T17:17:30.834 [DEBUG] [Thread-119643] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:17:30.851 [DEBUG] [Thread-119643] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:17:30.851 [INFO] [Thread-119643] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:17:30.854 [DEBUG] [Thread-119643] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:17:30.854 [DEBUG] [Thread-119643] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:17:30.854 [DEBUG] [Thread-119643] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:17:30.854 [DEBUG] [Thread-119643] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:17:30.854 [DEBUG] [Thread-119643] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:17:30.854 [DEBUG] [Thread-119643] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:17:30.854 [DEBUG] [Thread-119643] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:17:30.854 [DEBUG] [Thread-119643] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:17:30.854 [DEBUG] [Thread-119643] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:17:30.854 [DEBUG] [Thread-119643] [transport.py] [_log()] client lang: <none>
2025-11-03T17:17:30.854 [DEBUG] [Thread-119643] [transport.py] [_log()] server lang: <none>
2025-11-03T17:17:30.854 [DEBUG] [Thread-119643] [transport.py] [_log()] kex follows: False
2025-11-03T17:17:30.854 [DEBUG] [Thread-119643] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:17:30.854 [DEBUG] [Thread-119643] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:17:30.854 [DEBUG] [Thread-119643] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:17:30.855 [DEBUG] [Thread-119643] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:17:30.855 [DEBUG] [Thread-119643] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:17:30.855 [DEBUG] [Thread-119643] [transport.py] [_log()] Compression: none
2025-11-03T17:17:30.855 [DEBUG] [Thread-119643] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:17:30.864 [DEBUG] [Thread-119645 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:17:30.871 [DEBUG] [Thread-119643] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:17:30.871 [DEBUG] [Thread-119643] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:17:30.872 [DEBUG] [Thread-119643] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:17:30.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:17:30.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:17:30.872 [DEBUG] [Thread-119643] [transport.py] [_log()] userauth is OK
2025-11-03T17:17:30.873 [DEBUG] [Thread-119643] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:17:30.873 [DEBUG] [Thread-119643] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:17:30.873 [DEBUG] [Thread-119643] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:17:30.873 [DEBUG] [Thread-119643] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:17:30.888 [INFO] [Thread-119643] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:17:30.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:17:31.520 [DEBUG] [Thread-119643] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:17:31.520 [DEBUG] [Thread-119643] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:17:31.521 [DEBUG] [Thread-119643] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:17:31.561 [DEBUG] [Thread-119643] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:17:31.561 [DEBUG] [Thread-119643] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:17:31.564 [DEBUG] [Thread-119643] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:17:31.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:17:31.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:17:31.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:17:31.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:17:31.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:17:31.584 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:17:31.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:17:31.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:17:31.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:17:31.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.636561 -999.00  +25.30  35.96      8  -10.60 1 1 2 1 1   887    0 33.96 -89.59 ----- 35.4 36.0 289.6 43.5 27.8 -33.4 27.9 -32.9 28.7 -32.3 29.0 -33.2
2025-11-03T17:17:31.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:17:31.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:17:31.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.636561
2025-11-03T17:17:31.593 [DEBUG] [Thread-119643] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:17:31.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:17:31.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:17:31.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:17:31.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:17:31.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:17:31.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:16:59', tmtdew=46.06, humidity=3.84, cloud=0.0, wind=41.13, temperature=25.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:16:38.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:17:31.666 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:17:34.605 [DEBUG] [Thread-119647 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:17:49.677 [DEBUG] [Thread-119648 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:18:04.727 [DEBUG] [Thread-119649 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:18:19.764 [DEBUG] [Thread-119650 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:18:21.874 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:18:21.875 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:18:31.019 [DEBUG] [Thread-119651 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:18:34.808 [DEBUG] [Thread-119652 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:18:49.845 [DEBUG] [Thread-119653 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:19:04.898 [DEBUG] [Thread-119654 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:19:19.948 [DEBUG] [Thread-119655 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:19:22.025 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:19:22.027 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:19:31.314 [DEBUG] [Thread-119656 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:19:34.993 [DEBUG] [Thread-119657 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:19:43.201 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T17:19:50.040 [DEBUG] [Thread-119658 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:20:05.088 [DEBUG] [Thread-119659 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:20:13.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:20:13.235 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:20:13.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:20:13.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 19, 51), 45.81, 3.89, 0.0, 34.76, 25.69, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:20:13.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:19:51
2025-11-03T17:20:14.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:20:14.291 [DEBUG] [Thread-119660] [transport.py] [_log()] starting thread (client mode): 0xeda35b0
2025-11-03T17:20:14.291 [DEBUG] [Thread-119660] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:20:14.303 [DEBUG] [Thread-119660] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:20:14.303 [INFO] [Thread-119660] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:20:14.308 [DEBUG] [Thread-119660] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:20:14.308 [DEBUG] [Thread-119660] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:20:14.308 [DEBUG] [Thread-119660] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:20:14.308 [DEBUG] [Thread-119660] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:20:14.308 [DEBUG] [Thread-119660] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:20:14.308 [DEBUG] [Thread-119660] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:20:14.309 [DEBUG] [Thread-119660] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:20:14.309 [DEBUG] [Thread-119660] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:20:14.309 [DEBUG] [Thread-119660] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:20:14.309 [DEBUG] [Thread-119660] [transport.py] [_log()] client lang: <none>
2025-11-03T17:20:14.309 [DEBUG] [Thread-119660] [transport.py] [_log()] server lang: <none>
2025-11-03T17:20:14.309 [DEBUG] [Thread-119660] [transport.py] [_log()] kex follows: False
2025-11-03T17:20:14.309 [DEBUG] [Thread-119660] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:20:14.309 [DEBUG] [Thread-119660] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:20:14.309 [DEBUG] [Thread-119660] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:20:14.309 [DEBUG] [Thread-119660] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:20:14.309 [DEBUG] [Thread-119660] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:20:14.309 [DEBUG] [Thread-119660] [transport.py] [_log()] Compression: none
2025-11-03T17:20:14.310 [DEBUG] [Thread-119660] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:20:14.339 [DEBUG] [Thread-119660] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:20:14.343 [DEBUG] [Thread-119660] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:20:14.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:20:14.346 [DEBUG] [Thread-119660] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:20:14.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:20:14.348 [DEBUG] [Thread-119660] [transport.py] [_log()] userauth is OK
2025-11-03T17:20:14.348 [DEBUG] [Thread-119660] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:20:14.348 [DEBUG] [Thread-119660] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:20:14.348 [DEBUG] [Thread-119660] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:20:14.348 [DEBUG] [Thread-119660] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:20:14.382 [INFO] [Thread-119660] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:20:14.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:20:19.841 [DEBUG] [Thread-119660] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:20:19.841 [DEBUG] [Thread-119660] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:20:19.843 [DEBUG] [Thread-119660] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:20:19.882 [DEBUG] [Thread-119660] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:20:19.882 [DEBUG] [Thread-119660] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:20:19.885 [DEBUG] [Thread-119660] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:20:19.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:20:19.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:20:19.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:20:19.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:20:20.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:20:20.011 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:20:20.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:20:20.012 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:20:20.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:20:20.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.638644 -999.00  +25.40  31.64      8  -10.40 1 1 2 1 1   887    0 35.02 -59.90 ----- 36.0 31.6 297.1 41.2 27.6 -33.2 27.7 -32.1 28.6 -32.4 28.9 -32.6
2025-11-03T17:20:20.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:20:20.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:20:20.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.638644
2025-11-03T17:20:20.020 [DEBUG] [Thread-119660] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:20:20.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:20:20.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:20:20.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:20:20.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:20:20.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:20:20.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:19:51', tmtdew=45.81, humidity=3.89, cloud=0.0, wind=34.76, temperature=25.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:19:38.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:20:20.130 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:20:20.130 [DEBUG] [Thread-119663 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:20:20.152 [DEBUG] [Thread-119664] [transport.py] [_log()] starting thread (client mode): 0x11760130
2025-11-03T17:20:20.152 [DEBUG] [Thread-119664] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:20:20.166 [DEBUG] [Thread-119664] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:20:20.166 [INFO] [Thread-119664] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:20:20.174 [DEBUG] [Thread-119664] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:20:20.174 [DEBUG] [Thread-119664] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:20:20.174 [DEBUG] [Thread-119664] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:20:20.174 [DEBUG] [Thread-119664] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:20:20.174 [DEBUG] [Thread-119664] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:20:20.174 [DEBUG] [Thread-119664] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:20:20.174 [DEBUG] [Thread-119664] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:20:20.174 [DEBUG] [Thread-119664] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:20:20.174 [DEBUG] [Thread-119664] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:20:20.174 [DEBUG] [Thread-119664] [transport.py] [_log()] client lang: <none>
2025-11-03T17:20:20.174 [DEBUG] [Thread-119664] [transport.py] [_log()] server lang: <none>
2025-11-03T17:20:20.174 [DEBUG] [Thread-119664] [transport.py] [_log()] kex follows: False
2025-11-03T17:20:20.174 [DEBUG] [Thread-119664] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:20:20.174 [DEBUG] [Thread-119664] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:20:20.174 [DEBUG] [Thread-119664] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:20:20.174 [DEBUG] [Thread-119664] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:20:20.174 [DEBUG] [Thread-119664] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:20:20.174 [DEBUG] [Thread-119664] [transport.py] [_log()] Compression: none
2025-11-03T17:20:20.174 [DEBUG] [Thread-119664] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:20:20.231 [DEBUG] [Thread-119664] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:20:20.232 [DEBUG] [Thread-119664] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:20:20.233 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:20:20.233 [DEBUG] [Thread-119664] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:20:20.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:20:20.286 [DEBUG] [Thread-119664] [transport.py] [_log()] userauth is OK
2025-11-03T17:20:20.287 [DEBUG] [Thread-119664] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:20:20.287 [DEBUG] [Thread-119664] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:20:20.287 [DEBUG] [Thread-119664] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:20:20.287 [DEBUG] [Thread-119664] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:20:20.305 [INFO] [Thread-119664] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:20:20.305 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:20:20.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:20:21.094 [DEBUG] [Thread-119664] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:20:21.094 [DEBUG] [Thread-119664] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:20:21.132 [DEBUG] [Thread-119664] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:20:21.132 [DEBUG] [Thread-119664] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:20:21.141 [DEBUG] [Thread-119664] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:20:21.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:20:21.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:20:21.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:20:21.169 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:20:21.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:20:21.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:20:21.181 [DEBUG] [Thread-119664] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:20:22.167 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:20:22.168 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:20:31.628 [DEBUG] [Thread-119666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:20:35.227 [DEBUG] [Thread-119667 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:20:39.870 [DEBUG] [Thread-119668 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:20:50.272 [DEBUG] [Thread-119669 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:20:51.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:20:51.200 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:20:51.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:20:51.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 20, 23), 45.58, 3.95, 0.0, 36.73, 25.59, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:20:51.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:20:23
2025-11-03T17:20:52.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:20:52.299 [DEBUG] [Thread-119670] [transport.py] [_log()] starting thread (client mode): 0x11798820
2025-11-03T17:20:52.299 [DEBUG] [Thread-119670] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:20:52.319 [DEBUG] [Thread-119670] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:20:52.319 [INFO] [Thread-119670] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:20:52.323 [DEBUG] [Thread-119670] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:20:52.323 [DEBUG] [Thread-119670] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:20:52.323 [DEBUG] [Thread-119670] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:20:52.323 [DEBUG] [Thread-119670] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:20:52.323 [DEBUG] [Thread-119670] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:20:52.323 [DEBUG] [Thread-119670] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:20:52.323 [DEBUG] [Thread-119670] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:20:52.323 [DEBUG] [Thread-119670] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:20:52.323 [DEBUG] [Thread-119670] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:20:52.323 [DEBUG] [Thread-119670] [transport.py] [_log()] client lang: <none>
2025-11-03T17:20:52.323 [DEBUG] [Thread-119670] [transport.py] [_log()] server lang: <none>
2025-11-03T17:20:52.323 [DEBUG] [Thread-119670] [transport.py] [_log()] kex follows: False
2025-11-03T17:20:52.323 [DEBUG] [Thread-119670] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:20:52.323 [DEBUG] [Thread-119670] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:20:52.323 [DEBUG] [Thread-119670] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:20:52.324 [DEBUG] [Thread-119670] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:20:52.324 [DEBUG] [Thread-119670] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:20:52.324 [DEBUG] [Thread-119670] [transport.py] [_log()] Compression: none
2025-11-03T17:20:52.324 [DEBUG] [Thread-119670] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:20:52.340 [DEBUG] [Thread-119670] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:20:52.340 [DEBUG] [Thread-119670] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:20:52.341 [DEBUG] [Thread-119670] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:20:52.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:20:52.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:20:52.342 [DEBUG] [Thread-119670] [transport.py] [_log()] userauth is OK
2025-11-03T17:20:52.342 [DEBUG] [Thread-119670] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:20:52.342 [DEBUG] [Thread-119670] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:20:52.342 [DEBUG] [Thread-119670] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:20:52.342 [DEBUG] [Thread-119670] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:20:52.356 [INFO] [Thread-119670] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:20:52.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:20:53.027 [DEBUG] [Thread-119670] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:20:53.027 [DEBUG] [Thread-119670] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:20:53.028 [DEBUG] [Thread-119670] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:20:53.068 [DEBUG] [Thread-119670] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:20:53.069 [DEBUG] [Thread-119670] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:20:53.071 [DEBUG] [Thread-119670] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:20:53.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:20:53.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:20:53.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:20:53.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:20:53.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:20:53.090 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:20:53.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:20:53.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:20:53.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:20:53.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.638991 -999.00  +25.40  26.91      8  -10.40 1 1 1 1 1   887    0 34.80 -57.20 ----- 24.0 26.9 297.8 39.4 27.6 -33.7 27.7 -32.3 28.5 -32.7 28.9 -32.7
2025-11-03T17:20:53.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:20:53.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:20:53.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.638991
2025-11-03T17:20:53.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:20:53.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:20:53.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:20:53.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:20:53.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:20:53.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:20:23', tmtdew=45.58, humidity=3.95, cloud=0.0, wind=36.73, temperature=25.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:20:08.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:20:53.091 [DEBUG] [Thread-119670] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:20:53.166 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:20:53.184 [DEBUG] [Thread-119673] [transport.py] [_log()] starting thread (client mode): 0x11798580
2025-11-03T17:20:53.184 [DEBUG] [Thread-119673] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:20:53.199 [DEBUG] [Thread-119673] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:20:53.199 [INFO] [Thread-119673] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:20:53.207 [DEBUG] [Thread-119673] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:20:53.207 [DEBUG] [Thread-119673] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:20:53.207 [DEBUG] [Thread-119673] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:20:53.207 [DEBUG] [Thread-119673] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:20:53.207 [DEBUG] [Thread-119673] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:20:53.207 [DEBUG] [Thread-119673] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:20:53.207 [DEBUG] [Thread-119673] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:20:53.207 [DEBUG] [Thread-119673] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:20:53.207 [DEBUG] [Thread-119673] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:20:53.207 [DEBUG] [Thread-119673] [transport.py] [_log()] client lang: <none>
2025-11-03T17:20:53.207 [DEBUG] [Thread-119673] [transport.py] [_log()] server lang: <none>
2025-11-03T17:20:53.207 [DEBUG] [Thread-119673] [transport.py] [_log()] kex follows: False
2025-11-03T17:20:53.207 [DEBUG] [Thread-119673] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:20:53.207 [DEBUG] [Thread-119673] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:20:53.207 [DEBUG] [Thread-119673] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:20:53.207 [DEBUG] [Thread-119673] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:20:53.207 [DEBUG] [Thread-119673] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:20:53.207 [DEBUG] [Thread-119673] [transport.py] [_log()] Compression: none
2025-11-03T17:20:53.207 [DEBUG] [Thread-119673] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:20:53.261 [DEBUG] [Thread-119673] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:20:53.261 [DEBUG] [Thread-119673] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:20:53.261 [DEBUG] [Thread-119673] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:20:53.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:20:53.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:20:53.318 [DEBUG] [Thread-119673] [transport.py] [_log()] userauth is OK
2025-11-03T17:20:53.318 [DEBUG] [Thread-119673] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:20:53.318 [DEBUG] [Thread-119673] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:20:53.318 [DEBUG] [Thread-119673] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:20:53.318 [DEBUG] [Thread-119673] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:20:53.332 [INFO] [Thread-119673] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:20:53.332 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:20:53.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:20:54.140 [DEBUG] [Thread-119673] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:20:54.140 [DEBUG] [Thread-119673] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:20:54.187 [DEBUG] [Thread-119673] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:20:54.187 [DEBUG] [Thread-119673] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:20:54.196 [DEBUG] [Thread-119673] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:20:54.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:20:54.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:20:54.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:20:54.220 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:20:54.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:20:54.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:20:54.228 [DEBUG] [Thread-119673] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:21:05.309 [DEBUG] [Thread-119675 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:21:20.378 [DEBUG] [Thread-119676 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:21:22.320 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:21:22.322 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:21:24.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:21:24.244 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:21:24.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:21:24.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 20, 56), 45.73, 3.94, 0.0, 37.25, 25.72, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:21:24.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:20:56
2025-11-03T17:21:25.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:21:25.293 [DEBUG] [Thread-119677] [transport.py] [_log()] starting thread (client mode): 0x1179bca0
2025-11-03T17:21:25.293 [DEBUG] [Thread-119677] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:21:25.314 [DEBUG] [Thread-119677] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:21:25.315 [INFO] [Thread-119677] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:21:25.318 [DEBUG] [Thread-119677] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:21:25.319 [DEBUG] [Thread-119677] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:21:25.319 [DEBUG] [Thread-119677] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:21:25.319 [DEBUG] [Thread-119677] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:21:25.319 [DEBUG] [Thread-119677] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:21:25.319 [DEBUG] [Thread-119677] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:21:25.319 [DEBUG] [Thread-119677] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:21:25.319 [DEBUG] [Thread-119677] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:21:25.319 [DEBUG] [Thread-119677] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:21:25.319 [DEBUG] [Thread-119677] [transport.py] [_log()] client lang: <none>
2025-11-03T17:21:25.319 [DEBUG] [Thread-119677] [transport.py] [_log()] server lang: <none>
2025-11-03T17:21:25.319 [DEBUG] [Thread-119677] [transport.py] [_log()] kex follows: False
2025-11-03T17:21:25.319 [DEBUG] [Thread-119677] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:21:25.319 [DEBUG] [Thread-119677] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:21:25.320 [DEBUG] [Thread-119677] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:21:25.329 [DEBUG] [Thread-119677] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:21:25.329 [DEBUG] [Thread-119677] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:21:25.329 [DEBUG] [Thread-119677] [transport.py] [_log()] Compression: none
2025-11-03T17:21:25.329 [DEBUG] [Thread-119677] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:21:25.345 [DEBUG] [Thread-119677] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:21:25.346 [DEBUG] [Thread-119677] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:21:25.346 [DEBUG] [Thread-119677] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:21:25.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:21:25.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:21:25.349 [DEBUG] [Thread-119677] [transport.py] [_log()] userauth is OK
2025-11-03T17:21:25.349 [DEBUG] [Thread-119677] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:21:25.349 [DEBUG] [Thread-119677] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:21:25.349 [DEBUG] [Thread-119677] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:21:25.349 [DEBUG] [Thread-119677] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:21:25.375 [INFO] [Thread-119677] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:21:25.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:21:26.137 [DEBUG] [Thread-119677] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:21:26.137 [DEBUG] [Thread-119677] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:21:26.137 [DEBUG] [Thread-119677] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:21:26.178 [DEBUG] [Thread-119677] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:21:26.178 [DEBUG] [Thread-119677] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:21:26.180 [DEBUG] [Thread-119677] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:21:26.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:21:26.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:21:26.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:21:26.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:21:26.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:21:26.190 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:21:26.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:21:26.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:21:26.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:21:26.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.639338 -999.00  +25.30  40.63      8  -10.50 1 1 2 1 1   887    0 34.57 -59.75 ----- 30.1 40.6 297.6 47.1 27.6 -33.5 27.7 -32.5 28.4 -32.5 28.9 -33.4
2025-11-03T17:21:26.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:21:26.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:21:26.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.639338
2025-11-03T17:21:26.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:21:26.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:21:26.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:21:26.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:21:26.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:21:26.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:20:56', tmtdew=45.73, humidity=3.94, cloud=0.0, wind=37.25, temperature=25.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:20:38.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:21:26.191 [DEBUG] [Thread-119677] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:21:26.265 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:21:26.285 [DEBUG] [Thread-119680] [transport.py] [_log()] starting thread (client mode): 0x117eac50
2025-11-03T17:21:26.285 [DEBUG] [Thread-119680] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:21:26.302 [DEBUG] [Thread-119680] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:21:26.302 [INFO] [Thread-119680] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:21:26.312 [DEBUG] [Thread-119680] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:21:26.312 [DEBUG] [Thread-119680] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:21:26.312 [DEBUG] [Thread-119680] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:21:26.312 [DEBUG] [Thread-119680] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:21:26.312 [DEBUG] [Thread-119680] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:21:26.312 [DEBUG] [Thread-119680] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:21:26.312 [DEBUG] [Thread-119680] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:21:26.312 [DEBUG] [Thread-119680] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:21:26.312 [DEBUG] [Thread-119680] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:21:26.312 [DEBUG] [Thread-119680] [transport.py] [_log()] client lang: <none>
2025-11-03T17:21:26.312 [DEBUG] [Thread-119680] [transport.py] [_log()] server lang: <none>
2025-11-03T17:21:26.312 [DEBUG] [Thread-119680] [transport.py] [_log()] kex follows: False
2025-11-03T17:21:26.312 [DEBUG] [Thread-119680] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:21:26.312 [DEBUG] [Thread-119680] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:21:26.312 [DEBUG] [Thread-119680] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:21:26.312 [DEBUG] [Thread-119680] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:21:26.312 [DEBUG] [Thread-119680] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:21:26.312 [DEBUG] [Thread-119680] [transport.py] [_log()] Compression: none
2025-11-03T17:21:26.312 [DEBUG] [Thread-119680] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:21:26.372 [DEBUG] [Thread-119680] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:21:26.372 [DEBUG] [Thread-119680] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:21:26.373 [DEBUG] [Thread-119680] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:21:26.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:21:26.374 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:21:26.430 [DEBUG] [Thread-119680] [transport.py] [_log()] userauth is OK
2025-11-03T17:21:26.430 [DEBUG] [Thread-119680] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:21:26.431 [DEBUG] [Thread-119680] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:21:26.431 [DEBUG] [Thread-119680] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:21:26.431 [DEBUG] [Thread-119680] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:21:26.450 [INFO] [Thread-119680] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:21:26.451 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:21:26.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:21:27.299 [DEBUG] [Thread-119680] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:21:27.299 [DEBUG] [Thread-119680] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:21:27.348 [DEBUG] [Thread-119680] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:21:27.349 [DEBUG] [Thread-119680] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:21:27.360 [DEBUG] [Thread-119680] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:21:27.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:21:27.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:21:27.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:21:27.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:21:27.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:21:27.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:21:27.409 [DEBUG] [Thread-119680] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:21:31.871 [DEBUG] [Thread-119682 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:21:35.438 [DEBUG] [Thread-119683 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:21:50.507 [DEBUG] [Thread-119684 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:21:57.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:21:57.421 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:21:57.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:21:58.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 21, 28), 45.89, 3.89, 0.0, 37.03, 25.77, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:21:58.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:21:28
2025-11-03T17:21:58.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:21:58.431 [DEBUG] [Thread-119685] [transport.py] [_log()] starting thread (client mode): 0xeda1b70
2025-11-03T17:21:58.431 [DEBUG] [Thread-119685] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:21:58.450 [DEBUG] [Thread-119685] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:21:58.451 [INFO] [Thread-119685] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:21:58.454 [DEBUG] [Thread-119685] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:21:58.454 [DEBUG] [Thread-119685] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:21:58.454 [DEBUG] [Thread-119685] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:21:58.454 [DEBUG] [Thread-119685] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:21:58.454 [DEBUG] [Thread-119685] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:21:58.455 [DEBUG] [Thread-119685] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:21:58.455 [DEBUG] [Thread-119685] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:21:58.455 [DEBUG] [Thread-119685] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:21:58.455 [DEBUG] [Thread-119685] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:21:58.455 [DEBUG] [Thread-119685] [transport.py] [_log()] client lang: <none>
2025-11-03T17:21:58.455 [DEBUG] [Thread-119685] [transport.py] [_log()] server lang: <none>
2025-11-03T17:21:58.455 [DEBUG] [Thread-119685] [transport.py] [_log()] kex follows: False
2025-11-03T17:21:58.456 [DEBUG] [Thread-119685] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:21:58.456 [DEBUG] [Thread-119685] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:21:58.456 [DEBUG] [Thread-119685] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:21:58.456 [DEBUG] [Thread-119685] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:21:58.456 [DEBUG] [Thread-119685] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:21:58.456 [DEBUG] [Thread-119685] [transport.py] [_log()] Compression: none
2025-11-03T17:21:58.456 [DEBUG] [Thread-119685] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:21:58.476 [DEBUG] [Thread-119685] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:21:58.477 [DEBUG] [Thread-119685] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:21:58.477 [DEBUG] [Thread-119685] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:21:58.477 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:21:58.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:21:58.479 [DEBUG] [Thread-119685] [transport.py] [_log()] userauth is OK
2025-11-03T17:21:58.479 [DEBUG] [Thread-119685] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:21:58.479 [DEBUG] [Thread-119685] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:21:58.479 [DEBUG] [Thread-119685] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:21:58.480 [DEBUG] [Thread-119685] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:21:58.503 [INFO] [Thread-119685] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:21:58.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:21:59.135 [DEBUG] [Thread-119685] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:21:59.135 [DEBUG] [Thread-119685] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:21:59.136 [DEBUG] [Thread-119685] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:21:59.176 [DEBUG] [Thread-119685] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:21:59.176 [DEBUG] [Thread-119685] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:21:59.179 [DEBUG] [Thread-119685] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:21:59.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:21:59.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:21:59.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:21:59.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:21:59.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:21:59.204 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:21:59.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:21:59.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:21:59.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:21:59.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.639686 -999.00  +25.10  34.79      8  -10.60 1 1 2 1 1   887    0 33.18 -60.49 ----- 31.8 34.8 309.4 41.5 27.5 -33.9 27.6 -33.1 28.4 -34.6 28.7 -33.3
2025-11-03T17:21:59.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:21:59.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:21:59.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.639686
2025-11-03T17:21:59.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:21:59.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:21:59.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:21:59.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:21:59.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:21:59.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:21:28', tmtdew=45.89, humidity=3.89, cloud=0.0, wind=37.03, temperature=25.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:21:08.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:21:59.208 [DEBUG] [Thread-119685] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:21:59.301 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:21:59.321 [DEBUG] [Thread-119688] [transport.py] [_log()] starting thread (client mode): 0x1174f550
2025-11-03T17:21:59.321 [DEBUG] [Thread-119688] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:21:59.337 [DEBUG] [Thread-119688] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:21:59.338 [INFO] [Thread-119688] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:21:59.347 [DEBUG] [Thread-119688] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:21:59.347 [DEBUG] [Thread-119688] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:21:59.347 [DEBUG] [Thread-119688] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:21:59.347 [DEBUG] [Thread-119688] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:21:59.347 [DEBUG] [Thread-119688] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:21:59.347 [DEBUG] [Thread-119688] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:21:59.347 [DEBUG] [Thread-119688] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:21:59.347 [DEBUG] [Thread-119688] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:21:59.347 [DEBUG] [Thread-119688] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:21:59.347 [DEBUG] [Thread-119688] [transport.py] [_log()] client lang: <none>
2025-11-03T17:21:59.347 [DEBUG] [Thread-119688] [transport.py] [_log()] server lang: <none>
2025-11-03T17:21:59.348 [DEBUG] [Thread-119688] [transport.py] [_log()] kex follows: False
2025-11-03T17:21:59.348 [DEBUG] [Thread-119688] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:21:59.348 [DEBUG] [Thread-119688] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:21:59.348 [DEBUG] [Thread-119688] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:21:59.348 [DEBUG] [Thread-119688] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:21:59.348 [DEBUG] [Thread-119688] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:21:59.348 [DEBUG] [Thread-119688] [transport.py] [_log()] Compression: none
2025-11-03T17:21:59.348 [DEBUG] [Thread-119688] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:21:59.403 [DEBUG] [Thread-119688] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:21:59.404 [DEBUG] [Thread-119688] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:21:59.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:21:59.406 [DEBUG] [Thread-119688] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:21:59.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:21:59.468 [DEBUG] [Thread-119688] [transport.py] [_log()] userauth is OK
2025-11-03T17:21:59.468 [DEBUG] [Thread-119688] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:21:59.468 [DEBUG] [Thread-119688] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:21:59.468 [DEBUG] [Thread-119688] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:21:59.468 [DEBUG] [Thread-119688] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:21:59.487 [INFO] [Thread-119688] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:21:59.488 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:21:59.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:22:00.311 [DEBUG] [Thread-119688] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:22:00.312 [DEBUG] [Thread-119688] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:22:00.363 [DEBUG] [Thread-119688] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:22:00.363 [DEBUG] [Thread-119688] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:22:00.373 [DEBUG] [Thread-119688] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:22:00.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:22:00.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:22:00.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:22:00.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:22:00.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:22:00.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:22:00.408 [DEBUG] [Thread-119688] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:22:05.552 [DEBUG] [Thread-119690 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:22:20.617 [DEBUG] [Thread-119691 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:22:22.462 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:22:22.463 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:22:30.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:22:30.430 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:22:30.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:22:31.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 22, 1), 45.73, 3.94, 0.0, 33.68, 25.74, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:22:31.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:22:01
2025-11-03T17:22:31.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:22:31.426 [DEBUG] [Thread-119692] [transport.py] [_log()] starting thread (client mode): 0xeda3970
2025-11-03T17:22:31.426 [DEBUG] [Thread-119692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:22:31.446 [DEBUG] [Thread-119692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:22:31.447 [INFO] [Thread-119692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:22:31.448 [DEBUG] [Thread-119692] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:22:31.448 [DEBUG] [Thread-119692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:22:31.448 [DEBUG] [Thread-119692] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:22:31.448 [DEBUG] [Thread-119692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:22:31.448 [DEBUG] [Thread-119692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:22:31.448 [DEBUG] [Thread-119692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:22:31.448 [DEBUG] [Thread-119692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:22:31.448 [DEBUG] [Thread-119692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:22:31.448 [DEBUG] [Thread-119692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:22:31.448 [DEBUG] [Thread-119692] [transport.py] [_log()] client lang: <none>
2025-11-03T17:22:31.448 [DEBUG] [Thread-119692] [transport.py] [_log()] server lang: <none>
2025-11-03T17:22:31.448 [DEBUG] [Thread-119692] [transport.py] [_log()] kex follows: False
2025-11-03T17:22:31.448 [DEBUG] [Thread-119692] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:22:31.448 [DEBUG] [Thread-119692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:22:31.448 [DEBUG] [Thread-119692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:22:31.448 [DEBUG] [Thread-119692] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:22:31.448 [DEBUG] [Thread-119692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:22:31.448 [DEBUG] [Thread-119692] [transport.py] [_log()] Compression: none
2025-11-03T17:22:31.448 [DEBUG] [Thread-119692] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:22:31.457 [DEBUG] [Thread-119692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:22:31.458 [DEBUG] [Thread-119692] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:22:31.458 [DEBUG] [Thread-119692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:22:31.458 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:22:31.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:22:31.460 [DEBUG] [Thread-119692] [transport.py] [_log()] userauth is OK
2025-11-03T17:22:31.461 [DEBUG] [Thread-119692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:22:31.461 [DEBUG] [Thread-119692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:22:31.461 [DEBUG] [Thread-119692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:22:31.461 [DEBUG] [Thread-119692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:22:31.479 [INFO] [Thread-119692] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:22:31.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:22:31.929 [DEBUG] [Thread-119694 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:22:32.142 [DEBUG] [Thread-119692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:22:32.143 [DEBUG] [Thread-119692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:22:32.143 [DEBUG] [Thread-119692] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:22:32.184 [DEBUG] [Thread-119692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:22:32.184 [DEBUG] [Thread-119692] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:22:32.187 [DEBUG] [Thread-119692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:22:32.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:22:32.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:22:32.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:22:32.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:22:32.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:22:32.210 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:22:32.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:22:32.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:22:32.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:22:32.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.640033 -999.00  +25.20  26.05      8  -10.40 1 1 1 1 1   887    0 34.83 -59.15 ----- 28.5 26.1 313.6 39.6 27.5 -33.9 27.6 -32.3 28.4 -31.7 28.7 -32.6
2025-11-03T17:22:32.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:22:32.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:22:32.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.640033
2025-11-03T17:22:32.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:22:32.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:22:32.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:22:32.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:22:32.212 [DEBUG] [Thread-119692] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:22:32.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:22:32.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:22:01', tmtdew=45.73, humidity=3.94, cloud=0.0, wind=33.68, temperature=25.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:21:38.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:22:32.298 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:22:32.318 [DEBUG] [Thread-119696] [transport.py] [_log()] starting thread (client mode): 0x11760a90
2025-11-03T17:22:32.318 [DEBUG] [Thread-119696] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:22:32.333 [DEBUG] [Thread-119696] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:22:32.333 [INFO] [Thread-119696] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:22:32.340 [DEBUG] [Thread-119696] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:22:32.341 [DEBUG] [Thread-119696] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:22:32.341 [DEBUG] [Thread-119696] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:22:32.341 [DEBUG] [Thread-119696] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:22:32.341 [DEBUG] [Thread-119696] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:22:32.341 [DEBUG] [Thread-119696] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:22:32.341 [DEBUG] [Thread-119696] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:22:32.341 [DEBUG] [Thread-119696] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:22:32.341 [DEBUG] [Thread-119696] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:22:32.342 [DEBUG] [Thread-119696] [transport.py] [_log()] client lang: <none>
2025-11-03T17:22:32.342 [DEBUG] [Thread-119696] [transport.py] [_log()] server lang: <none>
2025-11-03T17:22:32.342 [DEBUG] [Thread-119696] [transport.py] [_log()] kex follows: False
2025-11-03T17:22:32.342 [DEBUG] [Thread-119696] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:22:32.342 [DEBUG] [Thread-119696] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:22:32.342 [DEBUG] [Thread-119696] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:22:32.342 [DEBUG] [Thread-119696] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:22:32.343 [DEBUG] [Thread-119696] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:22:32.343 [DEBUG] [Thread-119696] [transport.py] [_log()] Compression: none
2025-11-03T17:22:32.343 [DEBUG] [Thread-119696] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:22:32.403 [DEBUG] [Thread-119696] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:22:32.403 [DEBUG] [Thread-119696] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:22:32.404 [DEBUG] [Thread-119696] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:22:32.404 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:22:32.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:22:32.459 [DEBUG] [Thread-119696] [transport.py] [_log()] userauth is OK
2025-11-03T17:22:32.459 [DEBUG] [Thread-119696] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:22:32.459 [DEBUG] [Thread-119696] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:22:32.459 [DEBUG] [Thread-119696] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:22:32.459 [DEBUG] [Thread-119696] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:22:32.484 [INFO] [Thread-119696] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:22:32.485 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:22:32.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:22:33.328 [DEBUG] [Thread-119696] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:22:33.328 [DEBUG] [Thread-119696] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:22:33.375 [DEBUG] [Thread-119696] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:22:33.376 [DEBUG] [Thread-119696] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:22:33.384 [DEBUG] [Thread-119696] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:22:33.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:22:33.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:22:33.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:22:33.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:22:33.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:22:33.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:22:33.418 [DEBUG] [Thread-119696] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:22:35.659 [DEBUG] [Thread-119698 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:22:50.711 [DEBUG] [Thread-119699 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:23:03.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:23:03.442 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:23:03.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:23:04.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 22, 33), 45.54, 3.9, 0.0, 35.01, 25.45, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:23:04.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:22:33
2025-11-03T17:23:04.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:23:04.495 [DEBUG] [Thread-119700] [transport.py] [_log()] starting thread (client mode): 0x117eb400
2025-11-03T17:23:04.495 [DEBUG] [Thread-119700] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:23:04.517 [DEBUG] [Thread-119700] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:23:04.517 [INFO] [Thread-119700] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:23:04.520 [DEBUG] [Thread-119700] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:23:04.521 [DEBUG] [Thread-119700] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:23:04.521 [DEBUG] [Thread-119700] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:23:04.521 [DEBUG] [Thread-119700] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:23:04.521 [DEBUG] [Thread-119700] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:23:04.521 [DEBUG] [Thread-119700] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:23:04.521 [DEBUG] [Thread-119700] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:23:04.521 [DEBUG] [Thread-119700] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:23:04.521 [DEBUG] [Thread-119700] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:23:04.521 [DEBUG] [Thread-119700] [transport.py] [_log()] client lang: <none>
2025-11-03T17:23:04.521 [DEBUG] [Thread-119700] [transport.py] [_log()] server lang: <none>
2025-11-03T17:23:04.521 [DEBUG] [Thread-119700] [transport.py] [_log()] kex follows: False
2025-11-03T17:23:04.521 [DEBUG] [Thread-119700] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:23:04.521 [DEBUG] [Thread-119700] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:23:04.521 [DEBUG] [Thread-119700] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:23:04.521 [DEBUG] [Thread-119700] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:23:04.521 [DEBUG] [Thread-119700] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:23:04.521 [DEBUG] [Thread-119700] [transport.py] [_log()] Compression: none
2025-11-03T17:23:04.522 [DEBUG] [Thread-119700] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:23:04.539 [DEBUG] [Thread-119700] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:23:04.540 [DEBUG] [Thread-119700] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:23:04.540 [DEBUG] [Thread-119700] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:23:04.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:23:04.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:23:04.542 [DEBUG] [Thread-119700] [transport.py] [_log()] userauth is OK
2025-11-03T17:23:04.542 [DEBUG] [Thread-119700] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:23:04.542 [DEBUG] [Thread-119700] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:23:04.542 [DEBUG] [Thread-119700] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:23:04.543 [DEBUG] [Thread-119700] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:23:04.565 [INFO] [Thread-119700] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:23:04.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:23:05.191 [DEBUG] [Thread-119700] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:23:05.191 [DEBUG] [Thread-119700] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:23:05.191 [DEBUG] [Thread-119700] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:23:05.232 [DEBUG] [Thread-119700] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:23:05.232 [DEBUG] [Thread-119700] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:23:05.234 [DEBUG] [Thread-119700] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:23:05.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:23:05.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:23:05.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:23:05.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:23:05.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:23:05.254 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:23:05.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:23:05.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:23:05.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:23:05.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.640380 -999.00  +25.30  23.43      8  -10.50 1 1 1 1 1   887    0 35.15 -60.62 ----- 34.8 23.4 309.6 39.2 27.5 -33.4 27.6 -32.5 28.5 -33.2 28.8 -32.7
2025-11-03T17:23:05.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:23:05.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:23:05.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.640380
2025-11-03T17:23:05.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:23:05.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:23:05.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:23:05.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:23:05.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:23:05.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:22:33', tmtdew=45.54, humidity=3.9, cloud=0.0, wind=35.01, temperature=25.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:22:08.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:23:05.263 [DEBUG] [Thread-119700] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:23:05.335 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:23:05.355 [DEBUG] [Thread-119703] [transport.py] [_log()] starting thread (client mode): 0xeda1030
2025-11-03T17:23:05.355 [DEBUG] [Thread-119703] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:23:05.370 [DEBUG] [Thread-119703] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:23:05.370 [INFO] [Thread-119703] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:23:05.378 [DEBUG] [Thread-119703] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:23:05.378 [DEBUG] [Thread-119703] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:23:05.378 [DEBUG] [Thread-119703] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:23:05.378 [DEBUG] [Thread-119703] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:23:05.378 [DEBUG] [Thread-119703] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:23:05.378 [DEBUG] [Thread-119703] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:23:05.378 [DEBUG] [Thread-119703] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:23:05.378 [DEBUG] [Thread-119703] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:23:05.378 [DEBUG] [Thread-119703] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:23:05.378 [DEBUG] [Thread-119703] [transport.py] [_log()] client lang: <none>
2025-11-03T17:23:05.378 [DEBUG] [Thread-119703] [transport.py] [_log()] server lang: <none>
2025-11-03T17:23:05.378 [DEBUG] [Thread-119703] [transport.py] [_log()] kex follows: False
2025-11-03T17:23:05.378 [DEBUG] [Thread-119703] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:23:05.378 [DEBUG] [Thread-119703] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:23:05.378 [DEBUG] [Thread-119703] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:23:05.378 [DEBUG] [Thread-119703] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:23:05.378 [DEBUG] [Thread-119703] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:23:05.378 [DEBUG] [Thread-119703] [transport.py] [_log()] Compression: none
2025-11-03T17:23:05.378 [DEBUG] [Thread-119703] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:23:05.437 [DEBUG] [Thread-119703] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:23:05.437 [DEBUG] [Thread-119703] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:23:05.437 [DEBUG] [Thread-119703] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:23:05.437 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:23:05.437 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:23:05.494 [DEBUG] [Thread-119703] [transport.py] [_log()] userauth is OK
2025-11-03T17:23:05.494 [DEBUG] [Thread-119703] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:23:05.494 [DEBUG] [Thread-119703] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:23:05.494 [DEBUG] [Thread-119703] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:23:05.494 [DEBUG] [Thread-119703] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:23:05.507 [INFO] [Thread-119703] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:23:05.508 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:23:05.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:23:05.748 [DEBUG] [Thread-119705 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:23:06.331 [DEBUG] [Thread-119703] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:23:06.331 [DEBUG] [Thread-119703] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:23:06.382 [DEBUG] [Thread-119703] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:23:06.383 [DEBUG] [Thread-119703] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:23:06.392 [DEBUG] [Thread-119703] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:23:06.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:23:06.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:23:06.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:23:06.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:23:06.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:23:06.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:23:06.427 [DEBUG] [Thread-119703] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:23:20.804 [DEBUG] [Thread-119706 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:23:22.611 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:23:22.612 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:23:31.982 [DEBUG] [Thread-119707 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:23:35.844 [DEBUG] [Thread-119708 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:23:36.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:23:36.451 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:23:36.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:23:37.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 23, 6), 45.57, 3.89, 0.0, 37.49, 25.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:23:37.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:23:06
2025-11-03T17:23:37.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:23:37.508 [DEBUG] [Thread-119709] [transport.py] [_log()] starting thread (client mode): 0x11798f10
2025-11-03T17:23:37.508 [DEBUG] [Thread-119709] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:23:37.520 [DEBUG] [Thread-119709] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:23:37.520 [INFO] [Thread-119709] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:23:37.522 [DEBUG] [Thread-119709] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:23:37.522 [DEBUG] [Thread-119709] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:23:37.522 [DEBUG] [Thread-119709] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:23:37.522 [DEBUG] [Thread-119709] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:23:37.522 [DEBUG] [Thread-119709] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:23:37.522 [DEBUG] [Thread-119709] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:23:37.522 [DEBUG] [Thread-119709] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:23:37.522 [DEBUG] [Thread-119709] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:23:37.522 [DEBUG] [Thread-119709] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:23:37.522 [DEBUG] [Thread-119709] [transport.py] [_log()] client lang: <none>
2025-11-03T17:23:37.522 [DEBUG] [Thread-119709] [transport.py] [_log()] server lang: <none>
2025-11-03T17:23:37.522 [DEBUG] [Thread-119709] [transport.py] [_log()] kex follows: False
2025-11-03T17:23:37.522 [DEBUG] [Thread-119709] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:23:37.522 [DEBUG] [Thread-119709] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:23:37.522 [DEBUG] [Thread-119709] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:23:37.522 [DEBUG] [Thread-119709] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:23:37.523 [DEBUG] [Thread-119709] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:23:37.523 [DEBUG] [Thread-119709] [transport.py] [_log()] Compression: none
2025-11-03T17:23:37.523 [DEBUG] [Thread-119709] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:23:37.533 [DEBUG] [Thread-119709] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:23:37.533 [DEBUG] [Thread-119709] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:23:37.533 [DEBUG] [Thread-119709] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:23:37.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:23:37.534 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:23:37.534 [DEBUG] [Thread-119709] [transport.py] [_log()] userauth is OK
2025-11-03T17:23:37.534 [DEBUG] [Thread-119709] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:23:37.534 [DEBUG] [Thread-119709] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:23:37.534 [DEBUG] [Thread-119709] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:23:37.534 [DEBUG] [Thread-119709] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:23:37.543 [INFO] [Thread-119709] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:23:37.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:23:38.201 [DEBUG] [Thread-119709] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:23:38.201 [DEBUG] [Thread-119709] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:23:38.201 [DEBUG] [Thread-119709] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:23:38.242 [DEBUG] [Thread-119709] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:23:38.242 [DEBUG] [Thread-119709] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:23:38.244 [DEBUG] [Thread-119709] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:23:38.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:23:38.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:23:38.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:23:38.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:23:38.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:23:38.261 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:23:38.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:23:38.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:23:38.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:23:38.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.640727 -999.00  +25.40  33.98      8  -10.40 1 1 2 1 1   887    0 34.36 -51.33 ----- 34.2 34.0 310.2 44.2 27.5 -33.9 27.6 -32.7 28.4 -31.6 28.7 -32.8
2025-11-03T17:23:38.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:23:38.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:23:38.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.640727
2025-11-03T17:23:38.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:23:38.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:23:38.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:23:38.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:23:38.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:23:38.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:23:06', tmtdew=45.57, humidity=3.89, cloud=0.0, wind=37.49, temperature=25.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:22:38.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:23:38.262 [DEBUG] [Thread-119709] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:23:38.333 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:23:38.352 [DEBUG] [Thread-119712] [transport.py] [_log()] starting thread (client mode): 0x141dab60
2025-11-03T17:23:38.352 [DEBUG] [Thread-119712] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:23:38.370 [DEBUG] [Thread-119712] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:23:38.370 [INFO] [Thread-119712] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:23:38.377 [DEBUG] [Thread-119712] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:23:38.378 [DEBUG] [Thread-119712] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:23:38.378 [DEBUG] [Thread-119712] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:23:38.378 [DEBUG] [Thread-119712] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:23:38.378 [DEBUG] [Thread-119712] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:23:38.378 [DEBUG] [Thread-119712] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:23:38.378 [DEBUG] [Thread-119712] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:23:38.378 [DEBUG] [Thread-119712] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:23:38.378 [DEBUG] [Thread-119712] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:23:38.378 [DEBUG] [Thread-119712] [transport.py] [_log()] client lang: <none>
2025-11-03T17:23:38.378 [DEBUG] [Thread-119712] [transport.py] [_log()] server lang: <none>
2025-11-03T17:23:38.378 [DEBUG] [Thread-119712] [transport.py] [_log()] kex follows: False
2025-11-03T17:23:38.378 [DEBUG] [Thread-119712] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:23:38.378 [DEBUG] [Thread-119712] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:23:38.378 [DEBUG] [Thread-119712] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:23:38.378 [DEBUG] [Thread-119712] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:23:38.378 [DEBUG] [Thread-119712] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:23:38.378 [DEBUG] [Thread-119712] [transport.py] [_log()] Compression: none
2025-11-03T17:23:38.379 [DEBUG] [Thread-119712] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:23:38.439 [DEBUG] [Thread-119712] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:23:38.439 [DEBUG] [Thread-119712] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:23:38.440 [DEBUG] [Thread-119712] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:23:38.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:23:38.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:23:38.495 [DEBUG] [Thread-119712] [transport.py] [_log()] userauth is OK
2025-11-03T17:23:38.495 [DEBUG] [Thread-119712] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:23:38.495 [DEBUG] [Thread-119712] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:23:38.496 [DEBUG] [Thread-119712] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:23:38.496 [DEBUG] [Thread-119712] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:23:38.515 [INFO] [Thread-119712] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:23:38.515 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:23:38.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:23:39.356 [DEBUG] [Thread-119712] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:23:39.356 [DEBUG] [Thread-119712] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:23:39.395 [DEBUG] [Thread-119712] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:23:39.395 [DEBUG] [Thread-119712] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:23:39.404 [DEBUG] [Thread-119712] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:23:39.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:23:39.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:23:39.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:23:39.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:23:39.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:23:39.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:23:39.435 [DEBUG] [Thread-119712] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:23:50.884 [DEBUG] [Thread-119714 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:24:05.953 [DEBUG] [Thread-119715 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:24:09.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:24:09.457 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:24:09.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:24:10.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 23, 38), 45.55, 3.9, 0.0, 24.77, 25.52, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:24:10.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:23:38
2025-11-03T17:24:10.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:24:10.432 [DEBUG] [Thread-119716] [transport.py] [_log()] starting thread (client mode): 0x117bea70
2025-11-03T17:24:10.432 [DEBUG] [Thread-119716] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:24:10.454 [DEBUG] [Thread-119716] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:24:10.454 [INFO] [Thread-119716] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:24:10.457 [DEBUG] [Thread-119716] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:24:10.457 [DEBUG] [Thread-119716] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:24:10.457 [DEBUG] [Thread-119716] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:24:10.457 [DEBUG] [Thread-119716] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:24:10.457 [DEBUG] [Thread-119716] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:24:10.457 [DEBUG] [Thread-119716] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:24:10.457 [DEBUG] [Thread-119716] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:24:10.457 [DEBUG] [Thread-119716] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:24:10.457 [DEBUG] [Thread-119716] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:24:10.457 [DEBUG] [Thread-119716] [transport.py] [_log()] client lang: <none>
2025-11-03T17:24:10.457 [DEBUG] [Thread-119716] [transport.py] [_log()] server lang: <none>
2025-11-03T17:24:10.457 [DEBUG] [Thread-119716] [transport.py] [_log()] kex follows: False
2025-11-03T17:24:10.457 [DEBUG] [Thread-119716] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:24:10.457 [DEBUG] [Thread-119716] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:24:10.457 [DEBUG] [Thread-119716] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:24:10.458 [DEBUG] [Thread-119716] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:24:10.458 [DEBUG] [Thread-119716] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:24:10.458 [DEBUG] [Thread-119716] [transport.py] [_log()] Compression: none
2025-11-03T17:24:10.458 [DEBUG] [Thread-119716] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:24:10.474 [DEBUG] [Thread-119716] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:24:10.474 [DEBUG] [Thread-119716] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:24:10.474 [DEBUG] [Thread-119716] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:24:10.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:24:10.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:24:10.475 [DEBUG] [Thread-119716] [transport.py] [_log()] userauth is OK
2025-11-03T17:24:10.475 [DEBUG] [Thread-119716] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:24:10.475 [DEBUG] [Thread-119716] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:24:10.475 [DEBUG] [Thread-119716] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:24:10.475 [DEBUG] [Thread-119716] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:24:10.484 [INFO] [Thread-119716] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:24:10.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:24:11.144 [DEBUG] [Thread-119716] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:24:11.144 [DEBUG] [Thread-119716] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:24:11.144 [DEBUG] [Thread-119716] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:24:11.184 [DEBUG] [Thread-119716] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:24:11.184 [DEBUG] [Thread-119716] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:24:11.186 [DEBUG] [Thread-119716] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:24:11.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:24:11.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:24:11.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:24:11.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:24:11.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:24:11.205 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:24:11.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:24:11.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:24:11.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:24:11.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.641422 -999.00  +24.90  29.90      8  -10.50 1 1 1 1 1   887    0 34.15 -47.23 ----- 32.0 29.9 315.0 37.8 27.4 -34.2 27.5 -32.8 28.4 -31.6 28.6 -32.7
2025-11-03T17:24:11.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:24:11.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:24:11.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.641422
2025-11-03T17:24:11.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:24:11.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:24:11.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:24:11.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:24:11.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:24:11.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:23:38', tmtdew=45.55, humidity=3.9, cloud=0.0, wind=24.77, temperature=25.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:23:38.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:24:11.206 [DEBUG] [Thread-119716] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:24:11.284 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:24:11.305 [DEBUG] [Thread-119719] [transport.py] [_log()] starting thread (client mode): 0x1174c160
2025-11-03T17:24:11.305 [DEBUG] [Thread-119719] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:24:11.320 [DEBUG] [Thread-119719] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:24:11.320 [INFO] [Thread-119719] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:24:11.327 [DEBUG] [Thread-119719] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:24:11.327 [DEBUG] [Thread-119719] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:24:11.327 [DEBUG] [Thread-119719] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:24:11.327 [DEBUG] [Thread-119719] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:24:11.327 [DEBUG] [Thread-119719] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:24:11.328 [DEBUG] [Thread-119719] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:24:11.328 [DEBUG] [Thread-119719] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:24:11.328 [DEBUG] [Thread-119719] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:24:11.328 [DEBUG] [Thread-119719] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:24:11.328 [DEBUG] [Thread-119719] [transport.py] [_log()] client lang: <none>
2025-11-03T17:24:11.328 [DEBUG] [Thread-119719] [transport.py] [_log()] server lang: <none>
2025-11-03T17:24:11.328 [DEBUG] [Thread-119719] [transport.py] [_log()] kex follows: False
2025-11-03T17:24:11.328 [DEBUG] [Thread-119719] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:24:11.328 [DEBUG] [Thread-119719] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:24:11.328 [DEBUG] [Thread-119719] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:24:11.328 [DEBUG] [Thread-119719] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:24:11.328 [DEBUG] [Thread-119719] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:24:11.328 [DEBUG] [Thread-119719] [transport.py] [_log()] Compression: none
2025-11-03T17:24:11.328 [DEBUG] [Thread-119719] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:24:11.384 [DEBUG] [Thread-119719] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:24:11.384 [DEBUG] [Thread-119719] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:24:11.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:24:11.385 [DEBUG] [Thread-119719] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:24:11.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:24:11.443 [DEBUG] [Thread-119719] [transport.py] [_log()] userauth is OK
2025-11-03T17:24:11.443 [DEBUG] [Thread-119719] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:24:11.443 [DEBUG] [Thread-119719] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:24:11.443 [DEBUG] [Thread-119719] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:24:11.443 [DEBUG] [Thread-119719] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:24:11.457 [INFO] [Thread-119719] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:24:11.457 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:24:11.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:24:12.324 [DEBUG] [Thread-119719] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:24:12.324 [DEBUG] [Thread-119719] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:24:12.371 [DEBUG] [Thread-119719] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:24:12.372 [DEBUG] [Thread-119719] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:24:12.380 [DEBUG] [Thread-119719] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:24:12.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:24:12.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:24:12.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:24:12.406 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:24:12.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:24:12.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:24:12.414 [DEBUG] [Thread-119719] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:24:20.994 [DEBUG] [Thread-119721 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:24:22.751 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:24:22.752 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:24:32.049 [DEBUG] [Thread-119722 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:24:36.064 [DEBUG] [Thread-119723 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:24:42.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:24:42.437 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:24:42.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:24:43.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 24, 10), 45.6, 3.89, 0.0, 23.93, 25.54, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:24:43.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:24:10
2025-11-03T17:24:43.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:24:43.522 [DEBUG] [Thread-119724] [transport.py] [_log()] starting thread (client mode): 0x1174d5d0
2025-11-03T17:24:43.522 [DEBUG] [Thread-119724] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:24:43.543 [DEBUG] [Thread-119724] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:24:43.543 [INFO] [Thread-119724] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:24:43.547 [DEBUG] [Thread-119724] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:24:43.547 [DEBUG] [Thread-119724] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:24:43.547 [DEBUG] [Thread-119724] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:24:43.547 [DEBUG] [Thread-119724] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:24:43.547 [DEBUG] [Thread-119724] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:24:43.547 [DEBUG] [Thread-119724] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:24:43.547 [DEBUG] [Thread-119724] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:24:43.547 [DEBUG] [Thread-119724] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:24:43.547 [DEBUG] [Thread-119724] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:24:43.547 [DEBUG] [Thread-119724] [transport.py] [_log()] client lang: <none>
2025-11-03T17:24:43.547 [DEBUG] [Thread-119724] [transport.py] [_log()] server lang: <none>
2025-11-03T17:24:43.547 [DEBUG] [Thread-119724] [transport.py] [_log()] kex follows: False
2025-11-03T17:24:43.547 [DEBUG] [Thread-119724] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:24:43.547 [DEBUG] [Thread-119724] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:24:43.547 [DEBUG] [Thread-119724] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:24:43.547 [DEBUG] [Thread-119724] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:24:43.547 [DEBUG] [Thread-119724] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:24:43.547 [DEBUG] [Thread-119724] [transport.py] [_log()] Compression: none
2025-11-03T17:24:43.547 [DEBUG] [Thread-119724] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:24:43.562 [DEBUG] [Thread-119724] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:24:43.562 [DEBUG] [Thread-119724] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:24:43.562 [DEBUG] [Thread-119724] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:24:43.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:24:43.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:24:43.563 [DEBUG] [Thread-119724] [transport.py] [_log()] userauth is OK
2025-11-03T17:24:43.563 [DEBUG] [Thread-119724] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:24:43.563 [DEBUG] [Thread-119724] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:24:43.563 [DEBUG] [Thread-119724] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:24:43.563 [DEBUG] [Thread-119724] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:24:43.578 [INFO] [Thread-119724] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:24:43.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:24:44.300 [DEBUG] [Thread-119724] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:24:44.300 [DEBUG] [Thread-119724] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:24:44.301 [DEBUG] [Thread-119724] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:24:44.341 [DEBUG] [Thread-119724] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:24:44.341 [DEBUG] [Thread-119724] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:24:44.344 [DEBUG] [Thread-119724] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:24:44.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:24:44.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:24:44.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:24:44.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:24:44.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:24:44.362 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:24:44.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:24:44.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:24:44.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:24:44.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.641769 -999.00  +25.30  27.77      8  -10.20 1 1 1 1 1   887    0 34.52 -42.80 ----- 25.4 27.8 308.6 36.6 27.4 -33.8 27.5 -32.2 28.4 -33.0 28.7 -32.5
2025-11-03T17:24:44.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:24:44.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:24:44.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.641769
2025-11-03T17:24:44.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:24:44.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:24:44.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:24:44.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:24:44.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:24:44.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:24:10', tmtdew=45.6, humidity=3.89, cloud=0.0, wind=23.93, temperature=25.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:24:08.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:24:44.364 [DEBUG] [Thread-119724] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:24:44.441 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:24:44.459 [DEBUG] [Thread-119727] [transport.py] [_log()] starting thread (client mode): 0xeda3940
2025-11-03T17:24:44.459 [DEBUG] [Thread-119727] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:24:44.473 [DEBUG] [Thread-119727] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:24:44.473 [INFO] [Thread-119727] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:24:44.481 [DEBUG] [Thread-119727] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:24:44.481 [DEBUG] [Thread-119727] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:24:44.481 [DEBUG] [Thread-119727] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:24:44.481 [DEBUG] [Thread-119727] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:24:44.481 [DEBUG] [Thread-119727] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:24:44.481 [DEBUG] [Thread-119727] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:24:44.481 [DEBUG] [Thread-119727] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:24:44.481 [DEBUG] [Thread-119727] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:24:44.481 [DEBUG] [Thread-119727] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:24:44.481 [DEBUG] [Thread-119727] [transport.py] [_log()] client lang: <none>
2025-11-03T17:24:44.481 [DEBUG] [Thread-119727] [transport.py] [_log()] server lang: <none>
2025-11-03T17:24:44.481 [DEBUG] [Thread-119727] [transport.py] [_log()] kex follows: False
2025-11-03T17:24:44.481 [DEBUG] [Thread-119727] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:24:44.481 [DEBUG] [Thread-119727] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:24:44.481 [DEBUG] [Thread-119727] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:24:44.481 [DEBUG] [Thread-119727] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:24:44.481 [DEBUG] [Thread-119727] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:24:44.481 [DEBUG] [Thread-119727] [transport.py] [_log()] Compression: none
2025-11-03T17:24:44.481 [DEBUG] [Thread-119727] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:24:44.537 [DEBUG] [Thread-119727] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:24:44.537 [DEBUG] [Thread-119727] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:24:44.537 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:24:44.537 [DEBUG] [Thread-119727] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:24:44.537 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:24:44.594 [DEBUG] [Thread-119727] [transport.py] [_log()] userauth is OK
2025-11-03T17:24:44.594 [DEBUG] [Thread-119727] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:24:44.594 [DEBUG] [Thread-119727] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:24:44.594 [DEBUG] [Thread-119727] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:24:44.594 [DEBUG] [Thread-119727] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:24:44.609 [INFO] [Thread-119727] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:24:44.609 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:24:44.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:24:45.449 [DEBUG] [Thread-119727] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:24:45.449 [DEBUG] [Thread-119727] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:24:45.497 [DEBUG] [Thread-119727] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:24:45.497 [DEBUG] [Thread-119727] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:24:45.505 [DEBUG] [Thread-119727] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:24:45.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:24:45.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:24:45.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:24:45.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:24:45.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:24:45.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:24:45.536 [DEBUG] [Thread-119727] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:24:51.103 [DEBUG] [Thread-119729 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:25:06.170 [DEBUG] [Thread-119730 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:25:15.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:25:15.559 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:25:15.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:25:16.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 24, 42), 45.88, 3.92, 0.0, 29.91, 26.19, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:25:16.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:24:42
2025-11-03T17:25:16.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:25:16.592 [DEBUG] [Thread-119731] [transport.py] [_log()] starting thread (client mode): 0xeda0730
2025-11-03T17:25:16.592 [DEBUG] [Thread-119731] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:25:16.611 [DEBUG] [Thread-119731] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:25:16.612 [INFO] [Thread-119731] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:25:16.615 [DEBUG] [Thread-119731] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:25:16.615 [DEBUG] [Thread-119731] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:25:16.615 [DEBUG] [Thread-119731] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:25:16.615 [DEBUG] [Thread-119731] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:25:16.615 [DEBUG] [Thread-119731] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:25:16.615 [DEBUG] [Thread-119731] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:25:16.615 [DEBUG] [Thread-119731] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:25:16.615 [DEBUG] [Thread-119731] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:25:16.615 [DEBUG] [Thread-119731] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:25:16.615 [DEBUG] [Thread-119731] [transport.py] [_log()] client lang: <none>
2025-11-03T17:25:16.615 [DEBUG] [Thread-119731] [transport.py] [_log()] server lang: <none>
2025-11-03T17:25:16.615 [DEBUG] [Thread-119731] [transport.py] [_log()] kex follows: False
2025-11-03T17:25:16.615 [DEBUG] [Thread-119731] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:25:16.615 [DEBUG] [Thread-119731] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:25:16.615 [DEBUG] [Thread-119731] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:25:16.615 [DEBUG] [Thread-119731] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:25:16.615 [DEBUG] [Thread-119731] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:25:16.616 [DEBUG] [Thread-119731] [transport.py] [_log()] Compression: none
2025-11-03T17:25:16.616 [DEBUG] [Thread-119731] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:25:16.632 [DEBUG] [Thread-119731] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:25:16.633 [DEBUG] [Thread-119731] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:25:16.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:25:16.634 [DEBUG] [Thread-119731] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:25:16.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:25:16.636 [DEBUG] [Thread-119731] [transport.py] [_log()] userauth is OK
2025-11-03T17:25:16.636 [DEBUG] [Thread-119731] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:25:16.636 [DEBUG] [Thread-119731] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:25:16.637 [DEBUG] [Thread-119731] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:25:16.637 [DEBUG] [Thread-119731] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:25:16.657 [INFO] [Thread-119731] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:25:16.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:25:20.864 [DEBUG] [Thread-119731] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:25:20.864 [DEBUG] [Thread-119731] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:25:20.864 [DEBUG] [Thread-119731] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:25:20.905 [DEBUG] [Thread-119731] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:25:20.905 [DEBUG] [Thread-119731] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:25:20.908 [DEBUG] [Thread-119731] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:25:21.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:25:21.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:25:21.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:25:21.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:25:21.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:25:21.025 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:25:21.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:25:21.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:25:21.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:25:21.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.642116 -999.00  +25.60  24.72      8  -10.20 1 1 1 1 1   887    0 34.63 -39.17 ----- 24.0 24.7 304.2 30.5 27.5 -33.2 27.5 -32.1 28.4 -32.4 28.8 -32.8
2025-11-03T17:25:21.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:25:21.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:25:21.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.642116
2025-11-03T17:25:21.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:25:21.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:25:21.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:25:21.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:25:21.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:25:21.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:24:42', tmtdew=45.88, humidity=3.92, cloud=0.0, wind=29.91, temperature=26.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:24:38.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:25:21.029 [DEBUG] [Thread-119731] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:25:21.122 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:25:21.142 [DEBUG] [Thread-119734] [transport.py] [_log()] starting thread (client mode): 0x1174d3c0
2025-11-03T17:25:21.142 [DEBUG] [Thread-119734] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:25:21.162 [DEBUG] [Thread-119734] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:25:21.163 [INFO] [Thread-119734] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:25:21.170 [DEBUG] [Thread-119734] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:25:21.170 [DEBUG] [Thread-119734] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:25:21.170 [DEBUG] [Thread-119734] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:25:21.171 [DEBUG] [Thread-119734] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:25:21.171 [DEBUG] [Thread-119734] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:25:21.171 [DEBUG] [Thread-119734] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:25:21.171 [DEBUG] [Thread-119734] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:25:21.171 [DEBUG] [Thread-119734] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:25:21.171 [DEBUG] [Thread-119734] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:25:21.172 [DEBUG] [Thread-119734] [transport.py] [_log()] client lang: <none>
2025-11-03T17:25:21.172 [DEBUG] [Thread-119734] [transport.py] [_log()] server lang: <none>
2025-11-03T17:25:21.172 [DEBUG] [Thread-119734] [transport.py] [_log()] kex follows: False
2025-11-03T17:25:21.172 [DEBUG] [Thread-119734] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:25:21.172 [DEBUG] [Thread-119734] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:25:21.172 [DEBUG] [Thread-119734] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:25:21.172 [DEBUG] [Thread-119734] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:25:21.172 [DEBUG] [Thread-119734] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:25:21.173 [DEBUG] [Thread-119734] [transport.py] [_log()] Compression: none
2025-11-03T17:25:21.173 [DEBUG] [Thread-119734] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:25:21.211 [DEBUG] [Thread-119736 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:25:21.229 [DEBUG] [Thread-119734] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:25:21.230 [DEBUG] [Thread-119734] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:25:21.230 [DEBUG] [Thread-119734] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:25:21.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:25:21.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:25:21.287 [DEBUG] [Thread-119734] [transport.py] [_log()] userauth is OK
2025-11-03T17:25:21.288 [DEBUG] [Thread-119734] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:25:21.288 [DEBUG] [Thread-119734] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:25:21.288 [DEBUG] [Thread-119734] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:25:21.288 [DEBUG] [Thread-119734] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:25:21.309 [INFO] [Thread-119734] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:25:21.309 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:25:21.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:25:22.106 [DEBUG] [Thread-119734] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:25:22.106 [DEBUG] [Thread-119734] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:25:22.154 [DEBUG] [Thread-119734] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:25:22.154 [DEBUG] [Thread-119734] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:25:22.163 [DEBUG] [Thread-119734] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:25:22.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:25:22.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:25:22.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:25:22.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:25:22.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:25:22.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:25:22.201 [DEBUG] [Thread-119734] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:25:22.893 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:25:22.894 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:25:32.123 [DEBUG] [Thread-119737 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:25:36.266 [DEBUG] [Thread-119738 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:25:51.308 [DEBUG] [Thread-119739 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:25:52.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:25:52.221 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:25:52.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:25:53.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 25, 49), 45.87, 3.92, 0.0, 33.1, 25.75, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:25:53.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:25:49
2025-11-03T17:25:53.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:25:53.329 [DEBUG] [Thread-119740] [transport.py] [_log()] starting thread (client mode): 0x141dbeb0
2025-11-03T17:25:53.329 [DEBUG] [Thread-119740] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:25:53.340 [DEBUG] [Thread-119740] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:25:53.341 [INFO] [Thread-119740] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:25:53.344 [DEBUG] [Thread-119740] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:25:53.344 [DEBUG] [Thread-119740] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:25:53.344 [DEBUG] [Thread-119740] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:25:53.344 [DEBUG] [Thread-119740] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:25:53.344 [DEBUG] [Thread-119740] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:25:53.345 [DEBUG] [Thread-119740] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:25:53.345 [DEBUG] [Thread-119740] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:25:53.345 [DEBUG] [Thread-119740] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:25:53.345 [DEBUG] [Thread-119740] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:25:53.345 [DEBUG] [Thread-119740] [transport.py] [_log()] client lang: <none>
2025-11-03T17:25:53.345 [DEBUG] [Thread-119740] [transport.py] [_log()] server lang: <none>
2025-11-03T17:25:53.345 [DEBUG] [Thread-119740] [transport.py] [_log()] kex follows: False
2025-11-03T17:25:53.345 [DEBUG] [Thread-119740] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:25:53.346 [DEBUG] [Thread-119740] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:25:53.346 [DEBUG] [Thread-119740] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:25:53.346 [DEBUG] [Thread-119740] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:25:53.346 [DEBUG] [Thread-119740] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:25:53.346 [DEBUG] [Thread-119740] [transport.py] [_log()] Compression: none
2025-11-03T17:25:53.346 [DEBUG] [Thread-119740] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:25:53.367 [DEBUG] [Thread-119740] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:25:53.367 [DEBUG] [Thread-119740] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:25:53.368 [DEBUG] [Thread-119740] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:25:53.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:25:53.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:25:53.409 [DEBUG] [Thread-119740] [transport.py] [_log()] userauth is OK
2025-11-03T17:25:53.410 [DEBUG] [Thread-119740] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:25:53.410 [DEBUG] [Thread-119740] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:25:53.410 [DEBUG] [Thread-119740] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:25:53.410 [DEBUG] [Thread-119740] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:25:53.442 [INFO] [Thread-119740] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:25:53.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:25:54.058 [DEBUG] [Thread-119740] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:25:54.058 [DEBUG] [Thread-119740] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:25:54.059 [DEBUG] [Thread-119740] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:25:54.099 [DEBUG] [Thread-119740] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:25:54.099 [DEBUG] [Thread-119740] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:25:54.102 [DEBUG] [Thread-119740] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:25:54.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:25:54.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:25:54.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:25:54.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:25:54.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:25:54.126 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:25:54.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:25:54.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:25:54.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:25:54.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.642463 -999.00  +25.80  22.02      8  -10.10 1 1 1 1 1   887    0 34.85 -35.87 ----- 23.6 22.0 311.4 30.6 27.5 -33.4 27.6 -32.5 28.4 -32.3 28.8 -32.6
2025-11-03T17:25:54.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:25:54.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:25:54.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.642463
2025-11-03T17:25:54.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:25:54.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:25:54.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:25:54.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:25:54.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:25:54.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:25:49', tmtdew=45.87, humidity=3.92, cloud=0.0, wind=33.1, temperature=25.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:25:08.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:25:54.129 [DEBUG] [Thread-119740] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:25:54.213 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:25:54.232 [DEBUG] [Thread-119743] [transport.py] [_log()] starting thread (client mode): 0x141d9240
2025-11-03T17:25:54.232 [DEBUG] [Thread-119743] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:25:54.247 [DEBUG] [Thread-119743] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:25:54.248 [INFO] [Thread-119743] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:25:54.255 [DEBUG] [Thread-119743] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:25:54.255 [DEBUG] [Thread-119743] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:25:54.255 [DEBUG] [Thread-119743] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:25:54.255 [DEBUG] [Thread-119743] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:25:54.255 [DEBUG] [Thread-119743] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:25:54.255 [DEBUG] [Thread-119743] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:25:54.255 [DEBUG] [Thread-119743] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:25:54.256 [DEBUG] [Thread-119743] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:25:54.256 [DEBUG] [Thread-119743] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:25:54.256 [DEBUG] [Thread-119743] [transport.py] [_log()] client lang: <none>
2025-11-03T17:25:54.256 [DEBUG] [Thread-119743] [transport.py] [_log()] server lang: <none>
2025-11-03T17:25:54.256 [DEBUG] [Thread-119743] [transport.py] [_log()] kex follows: False
2025-11-03T17:25:54.256 [DEBUG] [Thread-119743] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:25:54.256 [DEBUG] [Thread-119743] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:25:54.256 [DEBUG] [Thread-119743] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:25:54.256 [DEBUG] [Thread-119743] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:25:54.256 [DEBUG] [Thread-119743] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:25:54.256 [DEBUG] [Thread-119743] [transport.py] [_log()] Compression: none
2025-11-03T17:25:54.256 [DEBUG] [Thread-119743] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:25:54.315 [DEBUG] [Thread-119743] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:25:54.316 [DEBUG] [Thread-119743] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:25:54.317 [DEBUG] [Thread-119743] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:25:54.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:25:54.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:25:54.372 [DEBUG] [Thread-119743] [transport.py] [_log()] userauth is OK
2025-11-03T17:25:54.372 [DEBUG] [Thread-119743] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:25:54.372 [DEBUG] [Thread-119743] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:25:54.373 [DEBUG] [Thread-119743] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:25:54.373 [DEBUG] [Thread-119743] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:25:54.391 [INFO] [Thread-119743] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:25:54.391 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:25:54.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:25:55.201 [DEBUG] [Thread-119743] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:25:55.201 [DEBUG] [Thread-119743] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:25:55.249 [DEBUG] [Thread-119743] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:25:55.249 [DEBUG] [Thread-119743] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:25:55.257 [DEBUG] [Thread-119743] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:25:55.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:25:55.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:25:55.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:25:55.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:25:55.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:25:55.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:25:55.289 [DEBUG] [Thread-119743] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:26:06.343 [DEBUG] [Thread-119745 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:26:21.398 [DEBUG] [Thread-119746 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:26:23.035 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:26:23.036 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:26:25.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:26:25.293 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:26:25.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:26:26.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 26, 21), 46.1, 3.85, 0.0, 33.82, 25.84, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:26:26.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:26:21
2025-11-03T17:26:26.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:26:26.372 [DEBUG] [Thread-119747] [transport.py] [_log()] starting thread (client mode): 0x141da7a0
2025-11-03T17:26:26.372 [DEBUG] [Thread-119747] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:26:26.373 [DEBUG] [Thread-119747] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:26:26.374 [INFO] [Thread-119747] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:26:26.375 [DEBUG] [Thread-119747] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:26:26.375 [DEBUG] [Thread-119747] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:26:26.375 [DEBUG] [Thread-119747] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:26:26.375 [DEBUG] [Thread-119747] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:26:26.375 [DEBUG] [Thread-119747] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:26:26.375 [DEBUG] [Thread-119747] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:26:26.375 [DEBUG] [Thread-119747] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:26:26.375 [DEBUG] [Thread-119747] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:26:26.375 [DEBUG] [Thread-119747] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:26:26.375 [DEBUG] [Thread-119747] [transport.py] [_log()] client lang: <none>
2025-11-03T17:26:26.375 [DEBUG] [Thread-119747] [transport.py] [_log()] server lang: <none>
2025-11-03T17:26:26.375 [DEBUG] [Thread-119747] [transport.py] [_log()] kex follows: False
2025-11-03T17:26:26.375 [DEBUG] [Thread-119747] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:26:26.375 [DEBUG] [Thread-119747] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:26:26.375 [DEBUG] [Thread-119747] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:26:26.375 [DEBUG] [Thread-119747] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:26:26.375 [DEBUG] [Thread-119747] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:26:26.375 [DEBUG] [Thread-119747] [transport.py] [_log()] Compression: none
2025-11-03T17:26:26.375 [DEBUG] [Thread-119747] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:26:26.384 [DEBUG] [Thread-119747] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:26:26.384 [DEBUG] [Thread-119747] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:26:26.384 [DEBUG] [Thread-119747] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:26:26.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:26:26.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:26:26.386 [DEBUG] [Thread-119747] [transport.py] [_log()] userauth is OK
2025-11-03T17:26:26.386 [DEBUG] [Thread-119747] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:26:26.386 [DEBUG] [Thread-119747] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:26:26.386 [DEBUG] [Thread-119747] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:26:26.386 [DEBUG] [Thread-119747] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:26:26.402 [INFO] [Thread-119747] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:26:26.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:26:26.989 [DEBUG] [Thread-119747] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:26:26.989 [DEBUG] [Thread-119747] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:26:26.990 [DEBUG] [Thread-119747] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:26:27.030 [DEBUG] [Thread-119747] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:26:27.030 [DEBUG] [Thread-119747] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:26:27.034 [DEBUG] [Thread-119747] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:26:27.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:26:27.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:26:27.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:26:27.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:26:27.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:26:27.058 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:26:27.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:26:27.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:26:27.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:26:27.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.642811 -999.00  +25.70  29.63      8  -10.30 1 1 1 1 1   887    0 35.53 -32.70 ----- 27.7 29.6 298.4 40.4 27.6 -33.3 27.7 -32.2 28.5 -33.5 28.8 -32.6
2025-11-03T17:26:27.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:26:27.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:26:27.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.642811
2025-11-03T17:26:27.067 [DEBUG] [Thread-119747] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:26:27.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:26:27.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:26:27.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:26:27.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:26:27.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:26:27.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:26:21', tmtdew=46.1, humidity=3.85, cloud=0.0, wind=33.82, temperature=25.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:25:38.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:26:27.153 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:26:27.177 [DEBUG] [Thread-119750] [transport.py] [_log()] starting thread (client mode): 0xed886a0
2025-11-03T17:26:27.177 [DEBUG] [Thread-119750] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:26:27.193 [DEBUG] [Thread-119750] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:26:27.193 [INFO] [Thread-119750] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:26:27.200 [DEBUG] [Thread-119750] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:26:27.201 [DEBUG] [Thread-119750] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:26:27.201 [DEBUG] [Thread-119750] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:26:27.201 [DEBUG] [Thread-119750] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:26:27.201 [DEBUG] [Thread-119750] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:26:27.201 [DEBUG] [Thread-119750] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:26:27.201 [DEBUG] [Thread-119750] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:26:27.201 [DEBUG] [Thread-119750] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:26:27.201 [DEBUG] [Thread-119750] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:26:27.201 [DEBUG] [Thread-119750] [transport.py] [_log()] client lang: <none>
2025-11-03T17:26:27.201 [DEBUG] [Thread-119750] [transport.py] [_log()] server lang: <none>
2025-11-03T17:26:27.201 [DEBUG] [Thread-119750] [transport.py] [_log()] kex follows: False
2025-11-03T17:26:27.201 [DEBUG] [Thread-119750] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:26:27.201 [DEBUG] [Thread-119750] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:26:27.201 [DEBUG] [Thread-119750] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:26:27.201 [DEBUG] [Thread-119750] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:26:27.202 [DEBUG] [Thread-119750] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:26:27.202 [DEBUG] [Thread-119750] [transport.py] [_log()] Compression: none
2025-11-03T17:26:27.202 [DEBUG] [Thread-119750] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:26:27.257 [DEBUG] [Thread-119750] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:26:27.257 [DEBUG] [Thread-119750] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:26:27.257 [DEBUG] [Thread-119750] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:26:27.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:26:27.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:26:27.315 [DEBUG] [Thread-119750] [transport.py] [_log()] userauth is OK
2025-11-03T17:26:27.315 [DEBUG] [Thread-119750] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:26:27.315 [DEBUG] [Thread-119750] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:26:27.315 [DEBUG] [Thread-119750] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:26:27.315 [DEBUG] [Thread-119750] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:26:27.330 [INFO] [Thread-119750] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:26:27.330 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:26:27.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:26:28.161 [DEBUG] [Thread-119750] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:26:28.161 [DEBUG] [Thread-119750] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:26:28.209 [DEBUG] [Thread-119750] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:26:28.209 [DEBUG] [Thread-119750] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:26:28.218 [DEBUG] [Thread-119750] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:26:28.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:26:28.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:26:28.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:26:28.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:26:28.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:26:28.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:26:28.255 [DEBUG] [Thread-119750] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:26:32.191 [DEBUG] [Thread-119752 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:26:36.442 [DEBUG] [Thread-119753 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:26:51.516 [DEBUG] [Thread-119754 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:26:58.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:26:58.269 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:26:58.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:26:58.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 26, 53), 45.79, 3.9, 0.0, 30.74, 25.72, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:26:58.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:26:53
2025-11-03T17:26:59.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:26:59.258 [DEBUG] [Thread-119755] [transport.py] [_log()] starting thread (client mode): 0x141d9ba0
2025-11-03T17:26:59.258 [DEBUG] [Thread-119755] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:26:59.278 [DEBUG] [Thread-119755] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:26:59.278 [INFO] [Thread-119755] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:26:59.281 [DEBUG] [Thread-119755] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:26:59.281 [DEBUG] [Thread-119755] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:26:59.282 [DEBUG] [Thread-119755] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:26:59.282 [DEBUG] [Thread-119755] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:26:59.282 [DEBUG] [Thread-119755] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:26:59.282 [DEBUG] [Thread-119755] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:26:59.282 [DEBUG] [Thread-119755] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:26:59.282 [DEBUG] [Thread-119755] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:26:59.282 [DEBUG] [Thread-119755] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:26:59.282 [DEBUG] [Thread-119755] [transport.py] [_log()] client lang: <none>
2025-11-03T17:26:59.282 [DEBUG] [Thread-119755] [transport.py] [_log()] server lang: <none>
2025-11-03T17:26:59.282 [DEBUG] [Thread-119755] [transport.py] [_log()] kex follows: False
2025-11-03T17:26:59.283 [DEBUG] [Thread-119755] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:26:59.283 [DEBUG] [Thread-119755] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:26:59.283 [DEBUG] [Thread-119755] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:26:59.283 [DEBUG] [Thread-119755] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:26:59.283 [DEBUG] [Thread-119755] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:26:59.283 [DEBUG] [Thread-119755] [transport.py] [_log()] Compression: none
2025-11-03T17:26:59.283 [DEBUG] [Thread-119755] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:26:59.302 [DEBUG] [Thread-119755] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:26:59.302 [DEBUG] [Thread-119755] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:26:59.303 [DEBUG] [Thread-119755] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:26:59.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:26:59.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:26:59.304 [DEBUG] [Thread-119755] [transport.py] [_log()] userauth is OK
2025-11-03T17:26:59.304 [DEBUG] [Thread-119755] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:26:59.305 [DEBUG] [Thread-119755] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:26:59.305 [DEBUG] [Thread-119755] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:26:59.305 [DEBUG] [Thread-119755] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:26:59.320 [INFO] [Thread-119755] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:26:59.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:26:59.972 [DEBUG] [Thread-119755] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:26:59.972 [DEBUG] [Thread-119755] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:26:59.973 [DEBUG] [Thread-119755] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:27:00.013 [DEBUG] [Thread-119755] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:27:00.013 [DEBUG] [Thread-119755] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:27:00.016 [DEBUG] [Thread-119755] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:27:00.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:27:00.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:27:00.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:27:00.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:27:00.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:27:00.036 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:27:00.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:27:00.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:27:00.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:27:00.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.643158 -999.00  +25.10  33.67      8  -10.60 1 1 2 1 1   887    0 34.70 -31.67 ----- 30.3 33.7 309.2 41.3 27.5 -33.4 27.7 -33.2 28.6 -32.2 28.8 -33.1
2025-11-03T17:27:00.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:27:00.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:27:00.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.643158
2025-11-03T17:27:00.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:27:00.038 [DEBUG] [Thread-119755] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:27:00.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:27:00.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:27:00.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:27:00.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:27:00.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:26:53', tmtdew=45.79, humidity=3.9, cloud=0.0, wind=30.74, temperature=25.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:26:08.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:27:00.125 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:27:00.145 [DEBUG] [Thread-119758] [transport.py] [_log()] starting thread (client mode): 0xeda0df0
2025-11-03T17:27:00.145 [DEBUG] [Thread-119758] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:27:00.160 [DEBUG] [Thread-119758] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:27:00.160 [INFO] [Thread-119758] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:27:00.167 [DEBUG] [Thread-119758] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:27:00.168 [DEBUG] [Thread-119758] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:27:00.168 [DEBUG] [Thread-119758] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:27:00.168 [DEBUG] [Thread-119758] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:27:00.168 [DEBUG] [Thread-119758] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:27:00.168 [DEBUG] [Thread-119758] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:27:00.168 [DEBUG] [Thread-119758] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:27:00.168 [DEBUG] [Thread-119758] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:27:00.168 [DEBUG] [Thread-119758] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:27:00.169 [DEBUG] [Thread-119758] [transport.py] [_log()] client lang: <none>
2025-11-03T17:27:00.169 [DEBUG] [Thread-119758] [transport.py] [_log()] server lang: <none>
2025-11-03T17:27:00.169 [DEBUG] [Thread-119758] [transport.py] [_log()] kex follows: False
2025-11-03T17:27:00.169 [DEBUG] [Thread-119758] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:27:00.169 [DEBUG] [Thread-119758] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:27:00.169 [DEBUG] [Thread-119758] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:27:00.169 [DEBUG] [Thread-119758] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:27:00.169 [DEBUG] [Thread-119758] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:27:00.169 [DEBUG] [Thread-119758] [transport.py] [_log()] Compression: none
2025-11-03T17:27:00.169 [DEBUG] [Thread-119758] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:27:00.228 [DEBUG] [Thread-119758] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:27:00.228 [DEBUG] [Thread-119758] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:27:00.229 [DEBUG] [Thread-119758] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:27:00.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:27:00.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:27:00.284 [DEBUG] [Thread-119758] [transport.py] [_log()] userauth is OK
2025-11-03T17:27:00.284 [DEBUG] [Thread-119758] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:27:00.284 [DEBUG] [Thread-119758] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:27:00.284 [DEBUG] [Thread-119758] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:27:00.284 [DEBUG] [Thread-119758] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:27:00.303 [INFO] [Thread-119758] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:27:00.312 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:27:00.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:27:01.122 [DEBUG] [Thread-119758] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:27:01.122 [DEBUG] [Thread-119758] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:27:01.170 [DEBUG] [Thread-119758] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:27:01.170 [DEBUG] [Thread-119758] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:27:01.179 [DEBUG] [Thread-119758] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:27:01.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:27:01.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:27:01.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:27:01.202 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:27:01.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:27:01.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:27:01.210 [DEBUG] [Thread-119758] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:27:06.557 [DEBUG] [Thread-119760 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:27:21.621 [DEBUG] [Thread-119761 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:27:23.176 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:27:23.177 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:27:31.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:27:31.232 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:27:31.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:27:31.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 27, 26), 45.85, 3.87, 0.0, 34.1, 25.57, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:27:31.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:27:26
2025-11-03T17:27:32.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:27:32.249 [DEBUG] [Thread-119762] [transport.py] [_log()] starting thread (client mode): 0xed203a0
2025-11-03T17:27:32.249 [DEBUG] [Thread-119762] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:27:32.268 [DEBUG] [Thread-119762] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:27:32.268 [INFO] [Thread-119762] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:27:32.271 [DEBUG] [Thread-119762] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:27:32.271 [DEBUG] [Thread-119762] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:27:32.271 [DEBUG] [Thread-119762] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:27:32.271 [DEBUG] [Thread-119762] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:27:32.271 [DEBUG] [Thread-119762] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:27:32.271 [DEBUG] [Thread-119762] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:27:32.271 [DEBUG] [Thread-119762] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:27:32.271 [DEBUG] [Thread-119762] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:27:32.271 [DEBUG] [Thread-119762] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:27:32.271 [DEBUG] [Thread-119762] [transport.py] [_log()] client lang: <none>
2025-11-03T17:27:32.271 [DEBUG] [Thread-119762] [transport.py] [_log()] server lang: <none>
2025-11-03T17:27:32.272 [DEBUG] [Thread-119762] [transport.py] [_log()] kex follows: False
2025-11-03T17:27:32.272 [DEBUG] [Thread-119762] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:27:32.272 [DEBUG] [Thread-119762] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:27:32.272 [DEBUG] [Thread-119762] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:27:32.272 [DEBUG] [Thread-119762] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:27:32.272 [DEBUG] [Thread-119762] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:27:32.272 [DEBUG] [Thread-119762] [transport.py] [_log()] Compression: none
2025-11-03T17:27:32.272 [DEBUG] [Thread-119762] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:27:32.284 [DEBUG] [Thread-119762] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:27:32.284 [DEBUG] [Thread-119762] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:27:32.285 [DEBUG] [Thread-119762] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:27:32.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:27:32.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:27:32.329 [DEBUG] [Thread-119762] [transport.py] [_log()] userauth is OK
2025-11-03T17:27:32.329 [DEBUG] [Thread-119762] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:27:32.329 [DEBUG] [Thread-119762] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:27:32.329 [DEBUG] [Thread-119762] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:27:32.329 [DEBUG] [Thread-119762] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:27:32.343 [INFO] [Thread-119762] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:27:32.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:27:32.529 [DEBUG] [Thread-119764 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:27:33.033 [DEBUG] [Thread-119762] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:27:33.033 [DEBUG] [Thread-119762] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:27:33.034 [DEBUG] [Thread-119762] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:27:33.074 [DEBUG] [Thread-119762] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:27:33.074 [DEBUG] [Thread-119762] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:27:33.077 [DEBUG] [Thread-119762] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:27:33.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:27:33.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:27:33.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:27:33.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:27:33.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:27:33.095 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:27:33.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:27:33.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:27:33.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:27:33.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.643505 -999.00  +25.10  24.83      8  -10.50 1 1 1 1 1   887    0 34.99 -32.77 ----- 31.0 24.8 310.2 35.1 27.5 -34.1 27.5 -33.1 28.4 -32.0 28.8 -32.7
2025-11-03T17:27:33.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:27:33.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:27:33.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.643505
2025-11-03T17:27:33.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:27:33.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:27:33.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:27:33.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:27:33.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:27:33.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:27:26', tmtdew=45.85, humidity=3.87, cloud=0.0, wind=34.1, temperature=25.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:26:38.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:27:33.097 [DEBUG] [Thread-119762] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:27:33.168 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:27:33.188 [DEBUG] [Thread-119766] [transport.py] [_log()] starting thread (client mode): 0xed22710
2025-11-03T17:27:33.188 [DEBUG] [Thread-119766] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:27:33.203 [DEBUG] [Thread-119766] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:27:33.203 [INFO] [Thread-119766] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:27:33.211 [DEBUG] [Thread-119766] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:27:33.211 [DEBUG] [Thread-119766] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:27:33.211 [DEBUG] [Thread-119766] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:27:33.211 [DEBUG] [Thread-119766] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:27:33.211 [DEBUG] [Thread-119766] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:27:33.211 [DEBUG] [Thread-119766] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:27:33.211 [DEBUG] [Thread-119766] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:27:33.211 [DEBUG] [Thread-119766] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:27:33.211 [DEBUG] [Thread-119766] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:27:33.211 [DEBUG] [Thread-119766] [transport.py] [_log()] client lang: <none>
2025-11-03T17:27:33.211 [DEBUG] [Thread-119766] [transport.py] [_log()] server lang: <none>
2025-11-03T17:27:33.211 [DEBUG] [Thread-119766] [transport.py] [_log()] kex follows: False
2025-11-03T17:27:33.211 [DEBUG] [Thread-119766] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:27:33.211 [DEBUG] [Thread-119766] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:27:33.211 [DEBUG] [Thread-119766] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:27:33.212 [DEBUG] [Thread-119766] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:27:33.213 [DEBUG] [Thread-119766] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:27:33.213 [DEBUG] [Thread-119766] [transport.py] [_log()] Compression: none
2025-11-03T17:27:33.213 [DEBUG] [Thread-119766] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:27:33.266 [DEBUG] [Thread-119766] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:27:33.267 [DEBUG] [Thread-119766] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:27:33.267 [DEBUG] [Thread-119766] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:27:33.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:27:33.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:27:33.324 [DEBUG] [Thread-119766] [transport.py] [_log()] userauth is OK
2025-11-03T17:27:33.324 [DEBUG] [Thread-119766] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:27:33.324 [DEBUG] [Thread-119766] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:27:33.324 [DEBUG] [Thread-119766] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:27:33.324 [DEBUG] [Thread-119766] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:27:33.338 [INFO] [Thread-119766] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:27:33.338 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:27:33.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:27:34.178 [DEBUG] [Thread-119766] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:27:34.178 [DEBUG] [Thread-119766] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:27:34.226 [DEBUG] [Thread-119766] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:27:34.227 [DEBUG] [Thread-119766] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:27:34.236 [DEBUG] [Thread-119766] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:27:34.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:27:34.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:27:34.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:27:34.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:27:34.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:27:34.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:27:34.275 [DEBUG] [Thread-119766] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:27:36.657 [DEBUG] [Thread-119768 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:27:51.732 [DEBUG] [Thread-119769 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:28:04.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:28:04.297 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:28:04.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:28:04.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 27, 58), 45.54, 3.94, 0.0, 30.24, 25.44, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:28:04.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:27:58
2025-11-03T17:28:05.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:28:05.281 [DEBUG] [Thread-119770] [transport.py] [_log()] starting thread (client mode): 0xeda0640
2025-11-03T17:28:05.281 [DEBUG] [Thread-119770] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:28:05.299 [DEBUG] [Thread-119770] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:28:05.299 [INFO] [Thread-119770] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:28:05.301 [DEBUG] [Thread-119770] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:28:05.301 [DEBUG] [Thread-119770] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:28:05.301 [DEBUG] [Thread-119770] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:28:05.301 [DEBUG] [Thread-119770] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:28:05.301 [DEBUG] [Thread-119770] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:28:05.301 [DEBUG] [Thread-119770] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:28:05.301 [DEBUG] [Thread-119770] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:28:05.301 [DEBUG] [Thread-119770] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:28:05.301 [DEBUG] [Thread-119770] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:28:05.301 [DEBUG] [Thread-119770] [transport.py] [_log()] client lang: <none>
2025-11-03T17:28:05.301 [DEBUG] [Thread-119770] [transport.py] [_log()] server lang: <none>
2025-11-03T17:28:05.301 [DEBUG] [Thread-119770] [transport.py] [_log()] kex follows: False
2025-11-03T17:28:05.301 [DEBUG] [Thread-119770] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:28:05.301 [DEBUG] [Thread-119770] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:28:05.301 [DEBUG] [Thread-119770] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:28:05.301 [DEBUG] [Thread-119770] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:28:05.301 [DEBUG] [Thread-119770] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:28:05.301 [DEBUG] [Thread-119770] [transport.py] [_log()] Compression: none
2025-11-03T17:28:05.301 [DEBUG] [Thread-119770] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:28:05.318 [DEBUG] [Thread-119770] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:28:05.318 [DEBUG] [Thread-119770] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:28:05.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:28:05.318 [DEBUG] [Thread-119770] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:28:05.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:28:05.319 [DEBUG] [Thread-119770] [transport.py] [_log()] userauth is OK
2025-11-03T17:28:05.319 [DEBUG] [Thread-119770] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:28:05.319 [DEBUG] [Thread-119770] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:28:05.319 [DEBUG] [Thread-119770] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:28:05.319 [DEBUG] [Thread-119770] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:28:05.332 [INFO] [Thread-119770] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:28:05.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:28:06.026 [DEBUG] [Thread-119770] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:28:06.026 [DEBUG] [Thread-119770] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:28:06.026 [DEBUG] [Thread-119770] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:28:06.066 [DEBUG] [Thread-119770] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:28:06.067 [DEBUG] [Thread-119770] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:28:06.069 [DEBUG] [Thread-119770] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:28:06.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:28:06.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:28:06.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:28:06.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:28:06.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:28:06.086 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:28:06.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:28:06.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:28:06.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:28:06.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.643852 -999.00  +25.20  34.66      8  -10.50 1 1 2 1 1   887    0 34.93 -34.12 ----- 35.7 34.7 314.0 42.7 27.4 -33.7 27.6 -32.6 28.4 -32.6 28.8 -33.0
2025-11-03T17:28:06.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:28:06.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:28:06.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.643852
2025-11-03T17:28:06.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:28:06.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:28:06.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:28:06.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:28:06.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:28:06.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:27:58', tmtdew=45.54, humidity=3.94, cloud=0.0, wind=30.24, temperature=25.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:27:08.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:28:06.087 [DEBUG] [Thread-119770] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:28:06.160 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:28:06.181 [DEBUG] [Thread-119773] [transport.py] [_log()] starting thread (client mode): 0x11762fb0
2025-11-03T17:28:06.181 [DEBUG] [Thread-119773] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:28:06.195 [DEBUG] [Thread-119773] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:28:06.195 [INFO] [Thread-119773] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:28:06.203 [DEBUG] [Thread-119773] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:28:06.203 [DEBUG] [Thread-119773] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:28:06.203 [DEBUG] [Thread-119773] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:28:06.203 [DEBUG] [Thread-119773] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:28:06.203 [DEBUG] [Thread-119773] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:28:06.203 [DEBUG] [Thread-119773] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:28:06.203 [DEBUG] [Thread-119773] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:28:06.203 [DEBUG] [Thread-119773] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:28:06.203 [DEBUG] [Thread-119773] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:28:06.203 [DEBUG] [Thread-119773] [transport.py] [_log()] client lang: <none>
2025-11-03T17:28:06.203 [DEBUG] [Thread-119773] [transport.py] [_log()] server lang: <none>
2025-11-03T17:28:06.203 [DEBUG] [Thread-119773] [transport.py] [_log()] kex follows: False
2025-11-03T17:28:06.203 [DEBUG] [Thread-119773] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:28:06.203 [DEBUG] [Thread-119773] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:28:06.204 [DEBUG] [Thread-119773] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:28:06.204 [DEBUG] [Thread-119773] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:28:06.204 [DEBUG] [Thread-119773] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:28:06.204 [DEBUG] [Thread-119773] [transport.py] [_log()] Compression: none
2025-11-03T17:28:06.204 [DEBUG] [Thread-119773] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:28:06.267 [DEBUG] [Thread-119773] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:28:06.268 [DEBUG] [Thread-119773] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:28:06.268 [DEBUG] [Thread-119773] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:28:06.269 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:28:06.269 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:28:06.324 [DEBUG] [Thread-119773] [transport.py] [_log()] userauth is OK
2025-11-03T17:28:06.325 [DEBUG] [Thread-119773] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:28:06.325 [DEBUG] [Thread-119773] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:28:06.325 [DEBUG] [Thread-119773] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:28:06.325 [DEBUG] [Thread-119773] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:28:06.345 [INFO] [Thread-119773] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:28:06.354 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:28:06.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:28:06.773 [DEBUG] [Thread-119775 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:28:07.183 [DEBUG] [Thread-119773] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:28:07.183 [DEBUG] [Thread-119773] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:28:07.231 [DEBUG] [Thread-119773] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:28:07.231 [DEBUG] [Thread-119773] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:28:07.239 [DEBUG] [Thread-119773] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:28:07.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:28:07.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:28:07.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:28:07.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:28:07.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:28:07.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:28:07.271 [DEBUG] [Thread-119773] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:28:21.845 [DEBUG] [Thread-119776 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:28:23.317 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:28:23.318 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:28:32.564 [DEBUG] [Thread-119777 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:28:36.890 [DEBUG] [Thread-119778 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:28:37.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:28:37.268 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:28:37.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:28:38.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 28, 30), 45.56, 3.95, 0.0, 31.25, 25.66, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:28:38.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:28:30
2025-11-03T17:28:38.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:28:38.325 [DEBUG] [Thread-119779] [transport.py] [_log()] starting thread (client mode): 0x1174f6d0
2025-11-03T17:28:38.325 [DEBUG] [Thread-119779] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:28:38.345 [DEBUG] [Thread-119779] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:28:38.345 [INFO] [Thread-119779] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:28:38.347 [DEBUG] [Thread-119779] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:28:38.347 [DEBUG] [Thread-119779] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:28:38.347 [DEBUG] [Thread-119779] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:28:38.347 [DEBUG] [Thread-119779] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:28:38.347 [DEBUG] [Thread-119779] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:28:38.347 [DEBUG] [Thread-119779] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:28:38.347 [DEBUG] [Thread-119779] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:28:38.347 [DEBUG] [Thread-119779] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:28:38.347 [DEBUG] [Thread-119779] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:28:38.348 [DEBUG] [Thread-119779] [transport.py] [_log()] client lang: <none>
2025-11-03T17:28:38.348 [DEBUG] [Thread-119779] [transport.py] [_log()] server lang: <none>
2025-11-03T17:28:38.348 [DEBUG] [Thread-119779] [transport.py] [_log()] kex follows: False
2025-11-03T17:28:38.348 [DEBUG] [Thread-119779] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:28:38.348 [DEBUG] [Thread-119779] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:28:38.348 [DEBUG] [Thread-119779] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:28:38.348 [DEBUG] [Thread-119779] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:28:38.348 [DEBUG] [Thread-119779] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:28:38.348 [DEBUG] [Thread-119779] [transport.py] [_log()] Compression: none
2025-11-03T17:28:38.348 [DEBUG] [Thread-119779] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:28:38.367 [DEBUG] [Thread-119779] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:28:38.368 [DEBUG] [Thread-119779] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:28:38.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:28:38.378 [DEBUG] [Thread-119779] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:28:38.379 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:28:38.380 [DEBUG] [Thread-119779] [transport.py] [_log()] userauth is OK
2025-11-03T17:28:38.381 [DEBUG] [Thread-119779] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:28:38.381 [DEBUG] [Thread-119779] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:28:38.381 [DEBUG] [Thread-119779] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:28:38.381 [DEBUG] [Thread-119779] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:28:38.417 [INFO] [Thread-119779] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:28:38.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:28:39.113 [DEBUG] [Thread-119779] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:28:39.113 [DEBUG] [Thread-119779] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:28:39.113 [DEBUG] [Thread-119779] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:28:39.155 [DEBUG] [Thread-119779] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:28:39.155 [DEBUG] [Thread-119779] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:28:39.157 [DEBUG] [Thread-119779] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:28:39.170 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:28:39.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:28:39.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:28:39.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:28:39.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:28:39.176 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:28:39.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:28:39.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:28:39.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:28:39.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.644199 -999.00  +25.30  32.42      8  -10.50 1 1 2 1 1   887    0 35.28 -35.40 ----- 40.9 32.4 304.1 43.9 27.4 -33.7 27.5 -32.3 28.5 -32.1 28.8 -33.1
2025-11-03T17:28:39.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:28:39.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:28:39.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.644199
2025-11-03T17:28:39.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:28:39.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:28:39.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:28:39.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:28:39.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:28:39.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:28:30', tmtdew=45.56, humidity=3.95, cloud=0.0, wind=31.25, temperature=25.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:27:38.794', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:28:39.177 [DEBUG] [Thread-119779] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:28:39.251 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:28:39.270 [DEBUG] [Thread-119782] [transport.py] [_log()] starting thread (client mode): 0x11762590
2025-11-03T17:28:39.270 [DEBUG] [Thread-119782] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:28:39.285 [DEBUG] [Thread-119782] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:28:39.285 [INFO] [Thread-119782] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:28:39.292 [DEBUG] [Thread-119782] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:28:39.292 [DEBUG] [Thread-119782] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:28:39.292 [DEBUG] [Thread-119782] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:28:39.292 [DEBUG] [Thread-119782] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:28:39.292 [DEBUG] [Thread-119782] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:28:39.292 [DEBUG] [Thread-119782] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:28:39.292 [DEBUG] [Thread-119782] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:28:39.292 [DEBUG] [Thread-119782] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:28:39.292 [DEBUG] [Thread-119782] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:28:39.293 [DEBUG] [Thread-119782] [transport.py] [_log()] client lang: <none>
2025-11-03T17:28:39.293 [DEBUG] [Thread-119782] [transport.py] [_log()] server lang: <none>
2025-11-03T17:28:39.293 [DEBUG] [Thread-119782] [transport.py] [_log()] kex follows: False
2025-11-03T17:28:39.293 [DEBUG] [Thread-119782] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:28:39.293 [DEBUG] [Thread-119782] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:28:39.293 [DEBUG] [Thread-119782] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:28:39.293 [DEBUG] [Thread-119782] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:28:39.293 [DEBUG] [Thread-119782] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:28:39.293 [DEBUG] [Thread-119782] [transport.py] [_log()] Compression: none
2025-11-03T17:28:39.293 [DEBUG] [Thread-119782] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:28:39.350 [DEBUG] [Thread-119782] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:28:39.351 [DEBUG] [Thread-119782] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:28:39.351 [DEBUG] [Thread-119782] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:28:39.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:28:39.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:28:39.409 [DEBUG] [Thread-119782] [transport.py] [_log()] userauth is OK
2025-11-03T17:28:39.409 [DEBUG] [Thread-119782] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:28:39.409 [DEBUG] [Thread-119782] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:28:39.409 [DEBUG] [Thread-119782] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:28:39.409 [DEBUG] [Thread-119782] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:28:39.424 [INFO] [Thread-119782] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:28:39.424 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:28:39.424 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:28:40.227 [DEBUG] [Thread-119782] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:28:40.227 [DEBUG] [Thread-119782] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:28:40.274 [DEBUG] [Thread-119782] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:28:40.274 [DEBUG] [Thread-119782] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:28:40.283 [DEBUG] [Thread-119782] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:28:40.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:28:40.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:28:40.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:28:40.306 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:28:40.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:28:40.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:28:40.314 [DEBUG] [Thread-119782] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:28:51.931 [DEBUG] [Thread-119784 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:29:07.007 [DEBUG] [Thread-119785 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:29:10.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:29:10.330 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:29:10.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:29:11.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 29, 2), 45.7, 3.9, 0.0, 29.87, 25.62, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:29:11.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:29:02
2025-11-03T17:29:11.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:29:11.348 [DEBUG] [Thread-119786] [transport.py] [_log()] starting thread (client mode): 0x11761000
2025-11-03T17:29:11.349 [DEBUG] [Thread-119786] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:29:11.360 [DEBUG] [Thread-119786] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:29:11.360 [INFO] [Thread-119786] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:29:11.363 [DEBUG] [Thread-119786] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:29:11.363 [DEBUG] [Thread-119786] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:29:11.364 [DEBUG] [Thread-119786] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:29:11.364 [DEBUG] [Thread-119786] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:29:11.364 [DEBUG] [Thread-119786] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:29:11.364 [DEBUG] [Thread-119786] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:29:11.364 [DEBUG] [Thread-119786] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:29:11.364 [DEBUG] [Thread-119786] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:29:11.364 [DEBUG] [Thread-119786] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:29:11.364 [DEBUG] [Thread-119786] [transport.py] [_log()] client lang: <none>
2025-11-03T17:29:11.364 [DEBUG] [Thread-119786] [transport.py] [_log()] server lang: <none>
2025-11-03T17:29:11.364 [DEBUG] [Thread-119786] [transport.py] [_log()] kex follows: False
2025-11-03T17:29:11.364 [DEBUG] [Thread-119786] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:29:11.364 [DEBUG] [Thread-119786] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:29:11.364 [DEBUG] [Thread-119786] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:29:11.364 [DEBUG] [Thread-119786] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:29:11.364 [DEBUG] [Thread-119786] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:29:11.364 [DEBUG] [Thread-119786] [transport.py] [_log()] Compression: none
2025-11-03T17:29:11.364 [DEBUG] [Thread-119786] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:29:11.384 [DEBUG] [Thread-119786] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:29:11.384 [DEBUG] [Thread-119786] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:29:11.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:29:11.385 [DEBUG] [Thread-119786] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:29:11.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:29:11.388 [DEBUG] [Thread-119786] [transport.py] [_log()] userauth is OK
2025-11-03T17:29:11.388 [DEBUG] [Thread-119786] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:29:11.388 [DEBUG] [Thread-119786] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:29:11.388 [DEBUG] [Thread-119786] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:29:11.388 [DEBUG] [Thread-119786] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:29:11.406 [INFO] [Thread-119786] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:29:11.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:29:12.064 [DEBUG] [Thread-119786] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:29:12.064 [DEBUG] [Thread-119786] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:29:12.064 [DEBUG] [Thread-119786] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:29:12.106 [DEBUG] [Thread-119786] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:29:12.106 [DEBUG] [Thread-119786] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:29:12.108 [DEBUG] [Thread-119786] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:29:12.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:29:12.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:29:12.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:29:12.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:29:12.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:29:12.125 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:29:12.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:29:12.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:29:12.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:29:12.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.644894 -999.00  +25.30  28.00      8  -10.70 1 1 1 1 1   887    0 34.51 -34.83 ----- 28.0 28.0 322.8 40.1 27.4 -34.2 27.5 -32.9 28.3 -33.1 28.7 -33.1
2025-11-03T17:29:12.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:29:12.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:29:12.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.644894
2025-11-03T17:29:12.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:29:12.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:29:12.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:29:12.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:29:12.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:29:12.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:29:02', tmtdew=45.7, humidity=3.9, cloud=0.0, wind=29.87, temperature=25.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:28:38.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:29:12.126 [DEBUG] [Thread-119786] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:29:12.198 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:29:12.218 [DEBUG] [Thread-119789] [transport.py] [_log()] starting thread (client mode): 0xed2e1a0
2025-11-03T17:29:12.218 [DEBUG] [Thread-119789] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:29:12.233 [DEBUG] [Thread-119789] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:29:12.233 [INFO] [Thread-119789] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:29:12.240 [DEBUG] [Thread-119789] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:29:12.240 [DEBUG] [Thread-119789] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:29:12.240 [DEBUG] [Thread-119789] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:29:12.240 [DEBUG] [Thread-119789] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:29:12.240 [DEBUG] [Thread-119789] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:29:12.240 [DEBUG] [Thread-119789] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:29:12.240 [DEBUG] [Thread-119789] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:29:12.240 [DEBUG] [Thread-119789] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:29:12.240 [DEBUG] [Thread-119789] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:29:12.240 [DEBUG] [Thread-119789] [transport.py] [_log()] client lang: <none>
2025-11-03T17:29:12.240 [DEBUG] [Thread-119789] [transport.py] [_log()] server lang: <none>
2025-11-03T17:29:12.240 [DEBUG] [Thread-119789] [transport.py] [_log()] kex follows: False
2025-11-03T17:29:12.240 [DEBUG] [Thread-119789] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:29:12.241 [DEBUG] [Thread-119789] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:29:12.241 [DEBUG] [Thread-119789] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:29:12.241 [DEBUG] [Thread-119789] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:29:12.241 [DEBUG] [Thread-119789] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:29:12.241 [DEBUG] [Thread-119789] [transport.py] [_log()] Compression: none
2025-11-03T17:29:12.241 [DEBUG] [Thread-119789] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:29:12.299 [DEBUG] [Thread-119789] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:29:12.299 [DEBUG] [Thread-119789] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:29:12.299 [DEBUG] [Thread-119789] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:29:12.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:29:12.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:29:12.356 [DEBUG] [Thread-119789] [transport.py] [_log()] userauth is OK
2025-11-03T17:29:12.356 [DEBUG] [Thread-119789] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:29:12.356 [DEBUG] [Thread-119789] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:29:12.356 [DEBUG] [Thread-119789] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:29:12.356 [DEBUG] [Thread-119789] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:29:12.374 [INFO] [Thread-119789] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:29:12.374 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:29:12.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:29:13.185 [DEBUG] [Thread-119789] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:29:13.186 [DEBUG] [Thread-119789] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:29:13.234 [DEBUG] [Thread-119789] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:29:13.234 [DEBUG] [Thread-119789] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:29:13.243 [DEBUG] [Thread-119789] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:29:13.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:29:13.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:29:13.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:29:13.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:29:13.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:29:13.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:29:13.286 [DEBUG] [Thread-119789] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:29:22.051 [DEBUG] [Thread-119791 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:29:23.467 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:29:23.468 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:29:32.626 [DEBUG] [Thread-119792 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:29:37.105 [DEBUG] [Thread-119793 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:29:43.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:29:43.285 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:29:43.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:29:43.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 29, 35), 45.87, 3.89, 0.0, 32.84, 25.44, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:29:43.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:29:35
2025-11-03T17:29:44.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:29:49.239 [DEBUG] [Thread-119794] [transport.py] [_log()] starting thread (client mode): 0x11760d30
2025-11-03T17:29:49.240 [DEBUG] [Thread-119794] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:29:49.261 [DEBUG] [Thread-119794] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:29:49.261 [INFO] [Thread-119794] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:29:49.264 [DEBUG] [Thread-119794] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:29:49.264 [DEBUG] [Thread-119794] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:29:49.265 [DEBUG] [Thread-119794] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:29:49.265 [DEBUG] [Thread-119794] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:29:49.265 [DEBUG] [Thread-119794] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:29:49.265 [DEBUG] [Thread-119794] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:29:49.265 [DEBUG] [Thread-119794] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:29:49.265 [DEBUG] [Thread-119794] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:29:49.265 [DEBUG] [Thread-119794] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:29:49.265 [DEBUG] [Thread-119794] [transport.py] [_log()] client lang: <none>
2025-11-03T17:29:49.265 [DEBUG] [Thread-119794] [transport.py] [_log()] server lang: <none>
2025-11-03T17:29:49.266 [DEBUG] [Thread-119794] [transport.py] [_log()] kex follows: False
2025-11-03T17:29:49.266 [DEBUG] [Thread-119794] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:29:49.266 [DEBUG] [Thread-119794] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:29:49.266 [DEBUG] [Thread-119794] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:29:49.266 [DEBUG] [Thread-119794] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:29:49.266 [DEBUG] [Thread-119794] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:29:49.267 [DEBUG] [Thread-119794] [transport.py] [_log()] Compression: none
2025-11-03T17:29:49.267 [DEBUG] [Thread-119794] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:29:49.286 [DEBUG] [Thread-119794] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:29:49.286 [DEBUG] [Thread-119794] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:29:49.287 [DEBUG] [Thread-119794] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:29:49.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:29:49.288 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:29:49.289 [DEBUG] [Thread-119794] [transport.py] [_log()] userauth is OK
2025-11-03T17:29:49.289 [DEBUG] [Thread-119794] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:29:49.289 [DEBUG] [Thread-119794] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:29:49.289 [DEBUG] [Thread-119794] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:29:49.289 [DEBUG] [Thread-119794] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:29:49.326 [INFO] [Thread-119794] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:29:49.326 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:29:49.944 [DEBUG] [Thread-119794] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:29:49.954 [DEBUG] [Thread-119794] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:29:49.954 [DEBUG] [Thread-119794] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:29:49.985 [DEBUG] [Thread-119794] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:29:49.985 [DEBUG] [Thread-119794] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:29:49.988 [DEBUG] [Thread-119794] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:29:50.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:29:50.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:29:50.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:29:50.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:29:50.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:29:50.016 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:29:50.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:29:50.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:29:50.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:29:50.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.645588 -999.00  +25.30  23.48      8  -10.40 1 1 1 1 1   887    0 34.59 -39.57 ----- 28.1 23.5 313.8 32.3 27.3 -33.5 27.5 -32.5 28.4 -32.6 28.6 -32.7
2025-11-03T17:29:50.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:29:50.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:29:50.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.645588
2025-11-03T17:29:50.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:29:50.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:29:50.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:29:50.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:29:50.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:29:50.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:29:35', tmtdew=45.87, humidity=3.89, cloud=0.0, wind=32.84, temperature=25.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:29:38.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:29:50.019 [DEBUG] [Thread-119794] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:29:50.114 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:29:50.127 [DEBUG] [Thread-119797] [transport.py] [_log()] starting thread (client mode): 0xed88850
2025-11-03T17:29:50.127 [DEBUG] [Thread-119797] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:29:50.142 [DEBUG] [Thread-119797] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:29:50.142 [INFO] [Thread-119797] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:29:50.150 [DEBUG] [Thread-119797] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:29:50.151 [DEBUG] [Thread-119797] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:29:50.151 [DEBUG] [Thread-119797] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:29:50.151 [DEBUG] [Thread-119797] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:29:50.151 [DEBUG] [Thread-119797] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:29:50.151 [DEBUG] [Thread-119797] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:29:50.151 [DEBUG] [Thread-119797] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:29:50.151 [DEBUG] [Thread-119797] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:29:50.151 [DEBUG] [Thread-119797] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:29:50.152 [DEBUG] [Thread-119797] [transport.py] [_log()] client lang: <none>
2025-11-03T17:29:50.152 [DEBUG] [Thread-119797] [transport.py] [_log()] server lang: <none>
2025-11-03T17:29:50.152 [DEBUG] [Thread-119797] [transport.py] [_log()] kex follows: False
2025-11-03T17:29:50.152 [DEBUG] [Thread-119797] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:29:50.152 [DEBUG] [Thread-119797] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:29:50.152 [DEBUG] [Thread-119797] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:29:50.152 [DEBUG] [Thread-119797] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:29:50.153 [DEBUG] [Thread-119797] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:29:50.153 [DEBUG] [Thread-119797] [transport.py] [_log()] Compression: none
2025-11-03T17:29:50.153 [DEBUG] [Thread-119797] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:29:50.209 [DEBUG] [Thread-119797] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:29:50.210 [DEBUG] [Thread-119797] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:29:50.210 [DEBUG] [Thread-119797] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:29:50.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:29:50.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:29:50.265 [DEBUG] [Thread-119797] [transport.py] [_log()] userauth is OK
2025-11-03T17:29:50.265 [DEBUG] [Thread-119797] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:29:50.266 [DEBUG] [Thread-119797] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:29:50.266 [DEBUG] [Thread-119797] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:29:50.266 [DEBUG] [Thread-119797] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:29:50.286 [INFO] [Thread-119797] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:29:50.286 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:29:50.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:29:51.120 [DEBUG] [Thread-119797] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:29:51.130 [DEBUG] [Thread-119797] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:29:51.167 [DEBUG] [Thread-119797] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:29:51.168 [DEBUG] [Thread-119797] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:29:51.177 [DEBUG] [Thread-119797] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:29:51.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:29:51.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:29:51.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:29:51.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:29:51.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:29:51.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:29:51.213 [DEBUG] [Thread-119797] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:29:52.147 [DEBUG] [Thread-119799 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:30:07.196 [DEBUG] [Thread-119800 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:30:21.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:30:21.235 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:30:21.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:30:21.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 30, 7), 45.84, 3.9, 0.0, 37.7, 25.51, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:30:21.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:30:07
2025-11-03T17:30:22.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:30:22.230 [DEBUG] [Thread-119801 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:30:22.266 [DEBUG] [Thread-119802] [transport.py] [_log()] starting thread (client mode): 0x117837f0
2025-11-03T17:30:22.266 [DEBUG] [Thread-119802] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:30:22.287 [DEBUG] [Thread-119802] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:30:22.287 [INFO] [Thread-119802] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:30:22.290 [DEBUG] [Thread-119802] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:30:22.290 [DEBUG] [Thread-119802] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:30:22.290 [DEBUG] [Thread-119802] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:30:22.290 [DEBUG] [Thread-119802] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:30:22.290 [DEBUG] [Thread-119802] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:30:22.290 [DEBUG] [Thread-119802] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:30:22.290 [DEBUG] [Thread-119802] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:30:22.290 [DEBUG] [Thread-119802] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:30:22.290 [DEBUG] [Thread-119802] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:30:22.290 [DEBUG] [Thread-119802] [transport.py] [_log()] client lang: <none>
2025-11-03T17:30:22.290 [DEBUG] [Thread-119802] [transport.py] [_log()] server lang: <none>
2025-11-03T17:30:22.290 [DEBUG] [Thread-119802] [transport.py] [_log()] kex follows: False
2025-11-03T17:30:22.290 [DEBUG] [Thread-119802] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:30:22.291 [DEBUG] [Thread-119802] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:30:22.291 [DEBUG] [Thread-119802] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:30:22.291 [DEBUG] [Thread-119802] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:30:22.291 [DEBUG] [Thread-119802] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:30:22.291 [DEBUG] [Thread-119802] [transport.py] [_log()] Compression: none
2025-11-03T17:30:22.291 [DEBUG] [Thread-119802] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:30:22.308 [DEBUG] [Thread-119802] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:30:22.308 [DEBUG] [Thread-119802] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:30:22.309 [DEBUG] [Thread-119802] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:30:22.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:30:22.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:30:22.311 [DEBUG] [Thread-119802] [transport.py] [_log()] userauth is OK
2025-11-03T17:30:22.311 [DEBUG] [Thread-119802] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:30:22.312 [DEBUG] [Thread-119802] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:30:22.312 [DEBUG] [Thread-119802] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:30:22.312 [DEBUG] [Thread-119802] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:30:22.337 [INFO] [Thread-119802] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:30:22.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:30:22.969 [DEBUG] [Thread-119802] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:30:22.969 [DEBUG] [Thread-119802] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:30:22.970 [DEBUG] [Thread-119802] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:30:23.010 [DEBUG] [Thread-119802] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:30:23.010 [DEBUG] [Thread-119802] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:30:23.014 [DEBUG] [Thread-119802] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:30:23.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:30:23.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:30:23.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:30:23.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:30:23.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:30:23.038 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:30:23.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:30:23.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:30:23.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:30:23.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.645935 -999.00  +25.50  34.53      8  -10.60 1 1 2 1 1   887    0 34.72 -37.36 ----- 34.8 34.5 298.8 40.0 27.4 -33.4 27.5 -32.3 28.4 -31.7 28.7 -32.7
2025-11-03T17:30:23.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:30:23.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:30:23.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.645935
2025-11-03T17:30:23.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:30:23.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:30:23.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:30:23.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:30:23.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:30:23.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:30:07', tmtdew=45.84, humidity=3.9, cloud=0.0, wind=37.7, temperature=25.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:30:08.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:30:23.041 [DEBUG] [Thread-119802] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:30:23.124 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:30:23.136 [DEBUG] [Thread-119805] [transport.py] [_log()] starting thread (client mode): 0x11783df0
2025-11-03T17:30:23.136 [DEBUG] [Thread-119805] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:30:23.150 [DEBUG] [Thread-119805] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:30:23.151 [INFO] [Thread-119805] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:30:23.158 [DEBUG] [Thread-119805] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:30:23.158 [DEBUG] [Thread-119805] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:30:23.158 [DEBUG] [Thread-119805] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:30:23.158 [DEBUG] [Thread-119805] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:30:23.158 [DEBUG] [Thread-119805] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:30:23.158 [DEBUG] [Thread-119805] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:30:23.158 [DEBUG] [Thread-119805] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:30:23.159 [DEBUG] [Thread-119805] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:30:23.159 [DEBUG] [Thread-119805] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:30:23.159 [DEBUG] [Thread-119805] [transport.py] [_log()] client lang: <none>
2025-11-03T17:30:23.159 [DEBUG] [Thread-119805] [transport.py] [_log()] server lang: <none>
2025-11-03T17:30:23.159 [DEBUG] [Thread-119805] [transport.py] [_log()] kex follows: False
2025-11-03T17:30:23.159 [DEBUG] [Thread-119805] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:30:23.159 [DEBUG] [Thread-119805] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:30:23.159 [DEBUG] [Thread-119805] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:30:23.159 [DEBUG] [Thread-119805] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:30:23.159 [DEBUG] [Thread-119805] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:30:23.159 [DEBUG] [Thread-119805] [transport.py] [_log()] Compression: none
2025-11-03T17:30:23.159 [DEBUG] [Thread-119805] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:30:23.217 [DEBUG] [Thread-119805] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:30:23.218 [DEBUG] [Thread-119805] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:30:23.219 [DEBUG] [Thread-119805] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:30:23.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:30:23.220 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:30:23.273 [DEBUG] [Thread-119805] [transport.py] [_log()] userauth is OK
2025-11-03T17:30:23.273 [DEBUG] [Thread-119805] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:30:23.273 [DEBUG] [Thread-119805] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:30:23.273 [DEBUG] [Thread-119805] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:30:23.274 [DEBUG] [Thread-119805] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:30:23.292 [INFO] [Thread-119805] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:30:23.292 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:30:23.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:30:23.608 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:30:23.609 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:30:24.116 [DEBUG] [Thread-119805] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:30:24.116 [DEBUG] [Thread-119805] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:30:24.164 [DEBUG] [Thread-119805] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:30:24.164 [DEBUG] [Thread-119805] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:30:24.174 [DEBUG] [Thread-119805] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:30:24.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:30:24.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:30:24.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:30:24.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:30:24.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:30:24.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:30:24.213 [DEBUG] [Thread-119805] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:30:32.690 [DEBUG] [Thread-119807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:30:37.259 [DEBUG] [Thread-119808 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:30:52.301 [DEBUG] [Thread-119809 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:30:54.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:30:54.236 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:30:54.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:30:54.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 30, 39), 45.84, 3.92, 0.0, 28.69, 25.61, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:30:54.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:30:39
2025-11-03T17:30:55.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:30:55.240 [DEBUG] [Thread-119810] [transport.py] [_log()] starting thread (client mode): 0xeda3940
2025-11-03T17:30:55.240 [DEBUG] [Thread-119810] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:30:55.260 [DEBUG] [Thread-119810] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:30:55.260 [INFO] [Thread-119810] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:30:55.263 [DEBUG] [Thread-119810] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:30:55.263 [DEBUG] [Thread-119810] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:30:55.263 [DEBUG] [Thread-119810] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:30:55.263 [DEBUG] [Thread-119810] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:30:55.263 [DEBUG] [Thread-119810] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:30:55.263 [DEBUG] [Thread-119810] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:30:55.263 [DEBUG] [Thread-119810] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:30:55.264 [DEBUG] [Thread-119810] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:30:55.264 [DEBUG] [Thread-119810] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:30:55.264 [DEBUG] [Thread-119810] [transport.py] [_log()] client lang: <none>
2025-11-03T17:30:55.264 [DEBUG] [Thread-119810] [transport.py] [_log()] server lang: <none>
2025-11-03T17:30:55.264 [DEBUG] [Thread-119810] [transport.py] [_log()] kex follows: False
2025-11-03T17:30:55.264 [DEBUG] [Thread-119810] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:30:55.264 [DEBUG] [Thread-119810] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:30:55.264 [DEBUG] [Thread-119810] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:30:55.264 [DEBUG] [Thread-119810] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:30:55.264 [DEBUG] [Thread-119810] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:30:55.264 [DEBUG] [Thread-119810] [transport.py] [_log()] Compression: none
2025-11-03T17:30:55.264 [DEBUG] [Thread-119810] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:30:55.276 [DEBUG] [Thread-119810] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:30:55.277 [DEBUG] [Thread-119810] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:30:55.277 [DEBUG] [Thread-119810] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:30:55.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:30:55.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:30:55.321 [DEBUG] [Thread-119810] [transport.py] [_log()] userauth is OK
2025-11-03T17:30:55.321 [DEBUG] [Thread-119810] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:30:55.321 [DEBUG] [Thread-119810] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:30:55.322 [DEBUG] [Thread-119810] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:30:55.322 [DEBUG] [Thread-119810] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:30:55.353 [INFO] [Thread-119810] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:30:55.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:30:55.926 [DEBUG] [Thread-119810] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:30:55.936 [DEBUG] [Thread-119810] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:30:55.936 [DEBUG] [Thread-119810] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:30:55.967 [DEBUG] [Thread-119810] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:30:55.967 [DEBUG] [Thread-119810] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:30:55.971 [DEBUG] [Thread-119810] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:30:55.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:30:55.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:30:55.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:30:55.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:30:55.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:30:55.989 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:30:55.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:30:55.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:30:55.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:30:55.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.646283 -999.00  +25.30  29.48      8  -10.80 1 1 1 1 1   887    0 34.39 -31.71 ----- 29.0 29.5 292.0 41.1 27.3 -33.9 27.5 -32.9 28.4 -34.5 28.6 -33.0
2025-11-03T17:30:55.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:30:55.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:30:55.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.646283
2025-11-03T17:30:55.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:30:55.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:30:55.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:30:55.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:30:55.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:30:55.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:30:39', tmtdew=45.84, humidity=3.92, cloud=0.0, wind=28.69, temperature=25.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:30:38.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:30:55.992 [DEBUG] [Thread-119810] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:30:56.076 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:30:56.088 [DEBUG] [Thread-119813] [transport.py] [_log()] starting thread (client mode): 0x1179ae30
2025-11-03T17:30:56.088 [DEBUG] [Thread-119813] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:30:56.103 [DEBUG] [Thread-119813] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:30:56.103 [INFO] [Thread-119813] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:30:56.111 [DEBUG] [Thread-119813] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:30:56.111 [DEBUG] [Thread-119813] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:30:56.111 [DEBUG] [Thread-119813] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:30:56.111 [DEBUG] [Thread-119813] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:30:56.112 [DEBUG] [Thread-119813] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:30:56.112 [DEBUG] [Thread-119813] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:30:56.112 [DEBUG] [Thread-119813] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:30:56.112 [DEBUG] [Thread-119813] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:30:56.112 [DEBUG] [Thread-119813] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:30:56.112 [DEBUG] [Thread-119813] [transport.py] [_log()] client lang: <none>
2025-11-03T17:30:56.112 [DEBUG] [Thread-119813] [transport.py] [_log()] server lang: <none>
2025-11-03T17:30:56.112 [DEBUG] [Thread-119813] [transport.py] [_log()] kex follows: False
2025-11-03T17:30:56.112 [DEBUG] [Thread-119813] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:30:56.112 [DEBUG] [Thread-119813] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:30:56.112 [DEBUG] [Thread-119813] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:30:56.112 [DEBUG] [Thread-119813] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:30:56.112 [DEBUG] [Thread-119813] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:30:56.112 [DEBUG] [Thread-119813] [transport.py] [_log()] Compression: none
2025-11-03T17:30:56.112 [DEBUG] [Thread-119813] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:30:56.169 [DEBUG] [Thread-119813] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:30:56.169 [DEBUG] [Thread-119813] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:30:56.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:30:56.171 [DEBUG] [Thread-119813] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:30:56.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:30:56.225 [DEBUG] [Thread-119813] [transport.py] [_log()] userauth is OK
2025-11-03T17:30:56.225 [DEBUG] [Thread-119813] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:30:56.226 [DEBUG] [Thread-119813] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:30:56.226 [DEBUG] [Thread-119813] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:30:56.226 [DEBUG] [Thread-119813] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:30:56.244 [INFO] [Thread-119813] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:30:56.245 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:30:56.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:30:57.061 [DEBUG] [Thread-119813] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:30:57.062 [DEBUG] [Thread-119813] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:30:57.110 [DEBUG] [Thread-119813] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:30:57.110 [DEBUG] [Thread-119813] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:30:57.119 [DEBUG] [Thread-119813] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:30:57.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:30:57.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:30:57.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:30:57.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:30:57.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:30:57.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:30:57.155 [DEBUG] [Thread-119813] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:31:07.352 [DEBUG] [Thread-119815 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:31:22.410 [DEBUG] [Thread-119816 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:31:23.750 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:31:23.751 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:31:27.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:31:27.178 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:31:27.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:31:27.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 31, 12), 45.91, 3.89, 0.0, 32.02, 25.51, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:31:27.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:31:12
2025-11-03T17:31:28.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:31:28.147 [DEBUG] [Thread-119817] [transport.py] [_log()] starting thread (client mode): 0x11760d30
2025-11-03T17:31:28.147 [DEBUG] [Thread-119817] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:31:28.160 [DEBUG] [Thread-119817] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:31:28.160 [INFO] [Thread-119817] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:31:28.162 [DEBUG] [Thread-119817] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:31:28.162 [DEBUG] [Thread-119817] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:31:28.162 [DEBUG] [Thread-119817] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:31:28.162 [DEBUG] [Thread-119817] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:31:28.162 [DEBUG] [Thread-119817] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:31:28.162 [DEBUG] [Thread-119817] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:31:28.162 [DEBUG] [Thread-119817] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:31:28.162 [DEBUG] [Thread-119817] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:31:28.163 [DEBUG] [Thread-119817] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:31:28.163 [DEBUG] [Thread-119817] [transport.py] [_log()] client lang: <none>
2025-11-03T17:31:28.163 [DEBUG] [Thread-119817] [transport.py] [_log()] server lang: <none>
2025-11-03T17:31:28.163 [DEBUG] [Thread-119817] [transport.py] [_log()] kex follows: False
2025-11-03T17:31:28.163 [DEBUG] [Thread-119817] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:31:28.163 [DEBUG] [Thread-119817] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:31:28.163 [DEBUG] [Thread-119817] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:31:28.163 [DEBUG] [Thread-119817] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:31:28.163 [DEBUG] [Thread-119817] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:31:28.163 [DEBUG] [Thread-119817] [transport.py] [_log()] Compression: none
2025-11-03T17:31:28.163 [DEBUG] [Thread-119817] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:31:28.173 [DEBUG] [Thread-119817] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:31:28.174 [DEBUG] [Thread-119817] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:31:28.174 [DEBUG] [Thread-119817] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:31:28.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:31:28.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:31:28.176 [DEBUG] [Thread-119817] [transport.py] [_log()] userauth is OK
2025-11-03T17:31:28.176 [DEBUG] [Thread-119817] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:31:28.176 [DEBUG] [Thread-119817] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:31:28.176 [DEBUG] [Thread-119817] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:31:28.176 [DEBUG] [Thread-119817] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:31:28.192 [INFO] [Thread-119817] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:31:28.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:31:28.772 [DEBUG] [Thread-119817] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:31:28.772 [DEBUG] [Thread-119817] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:31:28.772 [DEBUG] [Thread-119817] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:31:28.813 [DEBUG] [Thread-119817] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:31:28.813 [DEBUG] [Thread-119817] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:31:28.816 [DEBUG] [Thread-119817] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:31:28.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:31:28.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:31:28.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:31:28.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:31:28.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:31:28.827 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:31:28.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:31:28.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:31:28.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:31:28.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.646283 -999.00  +25.30  29.48      8  -10.80 1 1 1 1 1   887    0 34.39 -31.71 ----- 29.0 29.5 292.0 41.1 27.3 -33.9 27.5 -32.9 28.4 -34.5 28.6 -33.0
2025-11-03T17:31:28.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:31:28.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:31:28.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.646283
2025-11-03T17:31:28.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:31:28.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:31:28.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:31:28.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:31:28.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:31:28.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:31:12', tmtdew=45.91, humidity=3.89, cloud=0.0, wind=32.02, temperature=25.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:30:38.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:31:28.828 [DEBUG] [Thread-119817] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:31:28.899 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:31:28.911 [DEBUG] [Thread-119820] [transport.py] [_log()] starting thread (client mode): 0xed89240
2025-11-03T17:31:28.911 [DEBUG] [Thread-119820] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:31:28.925 [DEBUG] [Thread-119820] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:31:28.925 [INFO] [Thread-119820] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:31:28.933 [DEBUG] [Thread-119820] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:31:28.933 [DEBUG] [Thread-119820] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:31:28.933 [DEBUG] [Thread-119820] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:31:28.933 [DEBUG] [Thread-119820] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:31:28.933 [DEBUG] [Thread-119820] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:31:28.933 [DEBUG] [Thread-119820] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:31:28.933 [DEBUG] [Thread-119820] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:31:28.933 [DEBUG] [Thread-119820] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:31:28.933 [DEBUG] [Thread-119820] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:31:28.933 [DEBUG] [Thread-119820] [transport.py] [_log()] client lang: <none>
2025-11-03T17:31:28.933 [DEBUG] [Thread-119820] [transport.py] [_log()] server lang: <none>
2025-11-03T17:31:28.933 [DEBUG] [Thread-119820] [transport.py] [_log()] kex follows: False
2025-11-03T17:31:28.934 [DEBUG] [Thread-119820] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:31:28.934 [DEBUG] [Thread-119820] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:31:28.934 [DEBUG] [Thread-119820] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:31:28.934 [DEBUG] [Thread-119820] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:31:28.934 [DEBUG] [Thread-119820] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:31:28.934 [DEBUG] [Thread-119820] [transport.py] [_log()] Compression: none
2025-11-03T17:31:28.934 [DEBUG] [Thread-119820] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:31:28.994 [DEBUG] [Thread-119820] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:31:28.994 [DEBUG] [Thread-119820] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:31:28.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:31:28.996 [DEBUG] [Thread-119820] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:31:28.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:31:29.053 [DEBUG] [Thread-119820] [transport.py] [_log()] userauth is OK
2025-11-03T17:31:29.054 [DEBUG] [Thread-119820] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:31:29.054 [DEBUG] [Thread-119820] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:31:29.054 [DEBUG] [Thread-119820] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:31:29.054 [DEBUG] [Thread-119820] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:31:29.072 [INFO] [Thread-119820] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:31:29.073 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:31:29.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:31:29.989 [DEBUG] [Thread-119820] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:31:29.989 [DEBUG] [Thread-119820] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:31:30.038 [DEBUG] [Thread-119820] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:31:30.038 [DEBUG] [Thread-119820] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:31:30.046 [DEBUG] [Thread-119820] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:31:30.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:31:30.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:31:30.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:31:30.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:31:30.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:31:30.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:31:30.079 [DEBUG] [Thread-119820] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:31:32.746 [DEBUG] [Thread-119822 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:31:37.450 [DEBUG] [Thread-119823 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:31:52.508 [DEBUG] [Thread-119824 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:32:00.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:32:00.093 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:32:00.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:32:00.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 31, 44), 46.0, 3.87, 0.0, 34.34, 25.52, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:32:00.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:31:44
2025-11-03T17:32:00.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:32:01.085 [DEBUG] [Thread-119825] [transport.py] [_log()] starting thread (client mode): 0x117615d0
2025-11-03T17:32:01.086 [DEBUG] [Thread-119825] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:32:01.106 [DEBUG] [Thread-119825] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:32:01.106 [INFO] [Thread-119825] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:32:01.116 [DEBUG] [Thread-119825] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:32:01.116 [DEBUG] [Thread-119825] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:32:01.116 [DEBUG] [Thread-119825] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:32:01.116 [DEBUG] [Thread-119825] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:32:01.116 [DEBUG] [Thread-119825] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:32:01.116 [DEBUG] [Thread-119825] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:32:01.116 [DEBUG] [Thread-119825] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:32:01.116 [DEBUG] [Thread-119825] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:32:01.116 [DEBUG] [Thread-119825] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:32:01.116 [DEBUG] [Thread-119825] [transport.py] [_log()] client lang: <none>
2025-11-03T17:32:01.116 [DEBUG] [Thread-119825] [transport.py] [_log()] server lang: <none>
2025-11-03T17:32:01.116 [DEBUG] [Thread-119825] [transport.py] [_log()] kex follows: False
2025-11-03T17:32:01.116 [DEBUG] [Thread-119825] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:32:01.116 [DEBUG] [Thread-119825] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:32:01.116 [DEBUG] [Thread-119825] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:32:01.116 [DEBUG] [Thread-119825] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:32:01.116 [DEBUG] [Thread-119825] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:32:01.116 [DEBUG] [Thread-119825] [transport.py] [_log()] Compression: none
2025-11-03T17:32:01.116 [DEBUG] [Thread-119825] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:32:01.133 [DEBUG] [Thread-119825] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:32:01.133 [DEBUG] [Thread-119825] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:32:01.133 [DEBUG] [Thread-119825] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:32:01.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:32:01.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:32:01.134 [DEBUG] [Thread-119825] [transport.py] [_log()] userauth is OK
2025-11-03T17:32:01.134 [DEBUG] [Thread-119825] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:32:01.134 [DEBUG] [Thread-119825] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:32:01.134 [DEBUG] [Thread-119825] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:32:01.134 [DEBUG] [Thread-119825] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:32:01.147 [INFO] [Thread-119825] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:32:01.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:32:01.795 [DEBUG] [Thread-119825] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:32:01.795 [DEBUG] [Thread-119825] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:32:01.795 [DEBUG] [Thread-119825] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:32:01.837 [DEBUG] [Thread-119825] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:32:01.837 [DEBUG] [Thread-119825] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:32:01.839 [DEBUG] [Thread-119825] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:32:01.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:32:01.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:32:01.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:32:01.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:32:01.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:32:01.858 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:32:01.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:32:01.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:32:01.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:32:01.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.646630 -999.00  +25.00  36.17      8  -10.90 1 1 2 1 1   887    0 35.07 -29.67 ----- 33.2 36.2 296.6 40.8 27.3 -34.0 27.4 -33.3 28.1 -33.0 28.6 -33.3
2025-11-03T17:32:01.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:32:01.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:32:01.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.646630
2025-11-03T17:32:01.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:32:01.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:32:01.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:32:01.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:32:01.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:32:01.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:31:44', tmtdew=46.0, humidity=3.87, cloud=0.0, wind=34.34, temperature=25.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:31:08.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:32:01.859 [DEBUG] [Thread-119825] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:32:01.943 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:32:01.954 [DEBUG] [Thread-119828] [transport.py] [_log()] starting thread (client mode): 0x1174e9e0
2025-11-03T17:32:01.954 [DEBUG] [Thread-119828] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:32:01.968 [DEBUG] [Thread-119828] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:32:01.968 [INFO] [Thread-119828] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:32:01.976 [DEBUG] [Thread-119828] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:32:01.976 [DEBUG] [Thread-119828] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:32:01.976 [DEBUG] [Thread-119828] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:32:01.976 [DEBUG] [Thread-119828] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:32:01.976 [DEBUG] [Thread-119828] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:32:01.976 [DEBUG] [Thread-119828] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:32:01.976 [DEBUG] [Thread-119828] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:32:01.976 [DEBUG] [Thread-119828] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:32:01.976 [DEBUG] [Thread-119828] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:32:01.976 [DEBUG] [Thread-119828] [transport.py] [_log()] client lang: <none>
2025-11-03T17:32:01.976 [DEBUG] [Thread-119828] [transport.py] [_log()] server lang: <none>
2025-11-03T17:32:01.976 [DEBUG] [Thread-119828] [transport.py] [_log()] kex follows: False
2025-11-03T17:32:01.976 [DEBUG] [Thread-119828] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:32:01.976 [DEBUG] [Thread-119828] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:32:01.976 [DEBUG] [Thread-119828] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:32:01.976 [DEBUG] [Thread-119828] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:32:01.976 [DEBUG] [Thread-119828] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:32:01.976 [DEBUG] [Thread-119828] [transport.py] [_log()] Compression: none
2025-11-03T17:32:01.976 [DEBUG] [Thread-119828] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:32:02.036 [DEBUG] [Thread-119828] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:32:02.037 [DEBUG] [Thread-119828] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:32:02.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:32:02.039 [DEBUG] [Thread-119828] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:32:02.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:32:02.093 [DEBUG] [Thread-119828] [transport.py] [_log()] userauth is OK
2025-11-03T17:32:02.094 [DEBUG] [Thread-119828] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:32:02.094 [DEBUG] [Thread-119828] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:32:02.094 [DEBUG] [Thread-119828] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:32:02.094 [DEBUG] [Thread-119828] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:32:02.117 [INFO] [Thread-119828] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:32:02.118 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:32:02.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:32:02.969 [DEBUG] [Thread-119828] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:32:02.969 [DEBUG] [Thread-119828] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:32:03.017 [DEBUG] [Thread-119828] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:32:03.017 [DEBUG] [Thread-119828] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:32:03.026 [DEBUG] [Thread-119828] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:32:03.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:32:03.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:32:03.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:32:03.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:32:03.050 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:32:03.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:32:03.058 [DEBUG] [Thread-119828] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:32:07.548 [DEBUG] [Thread-119830 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:32:22.600 [DEBUG] [Thread-119831 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:32:23.893 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:32:23.894 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:32:32.777 [DEBUG] [Thread-119832 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:32:33.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:32:33.078 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:32:33.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:32:33.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 32, 17), 46.05, 3.85, 0.0, 34.57, 25.54, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:32:33.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:32:17
2025-11-03T17:32:34.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:32:34.158 [DEBUG] [Thread-119833] [transport.py] [_log()] starting thread (client mode): 0xed8bcd0
2025-11-03T17:32:34.158 [DEBUG] [Thread-119833] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:32:34.178 [DEBUG] [Thread-119833] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:32:34.178 [INFO] [Thread-119833] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:32:34.181 [DEBUG] [Thread-119833] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:32:34.182 [DEBUG] [Thread-119833] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:32:34.182 [DEBUG] [Thread-119833] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:32:34.182 [DEBUG] [Thread-119833] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:32:34.182 [DEBUG] [Thread-119833] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:32:34.182 [DEBUG] [Thread-119833] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:32:34.182 [DEBUG] [Thread-119833] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:32:34.182 [DEBUG] [Thread-119833] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:32:34.182 [DEBUG] [Thread-119833] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:32:34.182 [DEBUG] [Thread-119833] [transport.py] [_log()] client lang: <none>
2025-11-03T17:32:34.182 [DEBUG] [Thread-119833] [transport.py] [_log()] server lang: <none>
2025-11-03T17:32:34.182 [DEBUG] [Thread-119833] [transport.py] [_log()] kex follows: False
2025-11-03T17:32:34.182 [DEBUG] [Thread-119833] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:32:34.182 [DEBUG] [Thread-119833] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:32:34.182 [DEBUG] [Thread-119833] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:32:34.182 [DEBUG] [Thread-119833] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:32:34.182 [DEBUG] [Thread-119833] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:32:34.182 [DEBUG] [Thread-119833] [transport.py] [_log()] Compression: none
2025-11-03T17:32:34.182 [DEBUG] [Thread-119833] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:32:34.199 [DEBUG] [Thread-119833] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:32:34.199 [DEBUG] [Thread-119833] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:32:34.199 [DEBUG] [Thread-119833] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:32:34.199 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:32:34.199 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:32:34.200 [DEBUG] [Thread-119833] [transport.py] [_log()] userauth is OK
2025-11-03T17:32:34.200 [DEBUG] [Thread-119833] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:32:34.200 [DEBUG] [Thread-119833] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:32:34.200 [DEBUG] [Thread-119833] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:32:34.200 [DEBUG] [Thread-119833] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:32:34.210 [INFO] [Thread-119833] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:32:34.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:32:34.816 [DEBUG] [Thread-119833] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:32:34.816 [DEBUG] [Thread-119833] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:32:34.816 [DEBUG] [Thread-119833] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:32:34.857 [DEBUG] [Thread-119833] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:32:34.857 [DEBUG] [Thread-119833] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:32:34.861 [DEBUG] [Thread-119833] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:32:34.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:32:34.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:32:34.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:32:34.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:32:34.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:32:34.877 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:32:34.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:32:34.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:32:34.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:32:34.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.646977 -999.00  +24.80  31.34      8  -11.00 1 1 2 1 1   887    0 35.33 -25.50 ----- 33.5 31.3 293.2 38.0 27.3 -34.2 27.4 -33.1 28.1 -34.1 28.4 -33.5
2025-11-03T17:32:34.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:32:34.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:32:34.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.646977
2025-11-03T17:32:34.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:32:34.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:32:34.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:32:34.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:32:34.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:32:34.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:32:17', tmtdew=46.05, humidity=3.85, cloud=0.0, wind=34.57, temperature=25.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:31:38.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:32:34.878 [DEBUG] [Thread-119833] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:32:34.952 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:32:34.965 [DEBUG] [Thread-119836] [transport.py] [_log()] starting thread (client mode): 0xeda31c0
2025-11-03T17:32:34.965 [DEBUG] [Thread-119836] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:32:34.979 [DEBUG] [Thread-119836] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:32:34.979 [INFO] [Thread-119836] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:32:34.987 [DEBUG] [Thread-119836] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:32:34.987 [DEBUG] [Thread-119836] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:32:34.987 [DEBUG] [Thread-119836] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:32:34.987 [DEBUG] [Thread-119836] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:32:34.987 [DEBUG] [Thread-119836] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:32:34.987 [DEBUG] [Thread-119836] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:32:34.987 [DEBUG] [Thread-119836] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:32:34.987 [DEBUG] [Thread-119836] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:32:34.987 [DEBUG] [Thread-119836] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:32:34.987 [DEBUG] [Thread-119836] [transport.py] [_log()] client lang: <none>
2025-11-03T17:32:34.987 [DEBUG] [Thread-119836] [transport.py] [_log()] server lang: <none>
2025-11-03T17:32:34.987 [DEBUG] [Thread-119836] [transport.py] [_log()] kex follows: False
2025-11-03T17:32:34.987 [DEBUG] [Thread-119836] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:32:34.987 [DEBUG] [Thread-119836] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:32:34.987 [DEBUG] [Thread-119836] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:32:34.987 [DEBUG] [Thread-119836] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:32:34.987 [DEBUG] [Thread-119836] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:32:34.987 [DEBUG] [Thread-119836] [transport.py] [_log()] Compression: none
2025-11-03T17:32:34.987 [DEBUG] [Thread-119836] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:32:35.044 [DEBUG] [Thread-119836] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:32:35.044 [DEBUG] [Thread-119836] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:32:35.044 [DEBUG] [Thread-119836] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:32:35.044 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:32:35.045 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:32:35.101 [DEBUG] [Thread-119836] [transport.py] [_log()] userauth is OK
2025-11-03T17:32:35.101 [DEBUG] [Thread-119836] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:32:35.101 [DEBUG] [Thread-119836] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:32:35.101 [DEBUG] [Thread-119836] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:32:35.101 [DEBUG] [Thread-119836] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:32:35.115 [INFO] [Thread-119836] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:32:35.115 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:32:35.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:32:35.931 [DEBUG] [Thread-119836] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:32:35.931 [DEBUG] [Thread-119836] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:32:35.979 [DEBUG] [Thread-119836] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:32:35.979 [DEBUG] [Thread-119836] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:32:35.987 [DEBUG] [Thread-119836] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:32:35.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:32:35.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:32:36.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:32:36.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:32:36.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:32:36.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:32:36.021 [DEBUG] [Thread-119836] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:32:37.635 [DEBUG] [Thread-119838 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:32:52.679 [DEBUG] [Thread-119839 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:33:06.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:33:06.044 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:33:06.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:33:06.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 32, 49), 45.9, 3.87, 0.0, 27.84, 25.37, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:33:06.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:32:49
2025-11-03T17:33:06.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:33:07.076 [DEBUG] [Thread-119840] [transport.py] [_log()] starting thread (client mode): 0xeda2aa0
2025-11-03T17:33:07.076 [DEBUG] [Thread-119840] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:33:07.095 [DEBUG] [Thread-119840] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:33:07.095 [INFO] [Thread-119840] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:33:07.096 [DEBUG] [Thread-119840] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:33:07.097 [DEBUG] [Thread-119840] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:33:07.097 [DEBUG] [Thread-119840] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:33:07.097 [DEBUG] [Thread-119840] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:33:07.097 [DEBUG] [Thread-119840] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:33:07.097 [DEBUG] [Thread-119840] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:33:07.097 [DEBUG] [Thread-119840] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:33:07.097 [DEBUG] [Thread-119840] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:33:07.097 [DEBUG] [Thread-119840] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:33:07.097 [DEBUG] [Thread-119840] [transport.py] [_log()] client lang: <none>
2025-11-03T17:33:07.097 [DEBUG] [Thread-119840] [transport.py] [_log()] server lang: <none>
2025-11-03T17:33:07.097 [DEBUG] [Thread-119840] [transport.py] [_log()] kex follows: False
2025-11-03T17:33:07.097 [DEBUG] [Thread-119840] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:33:07.097 [DEBUG] [Thread-119840] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:33:07.097 [DEBUG] [Thread-119840] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:33:07.097 [DEBUG] [Thread-119840] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:33:07.097 [DEBUG] [Thread-119840] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:33:07.097 [DEBUG] [Thread-119840] [transport.py] [_log()] Compression: none
2025-11-03T17:33:07.097 [DEBUG] [Thread-119840] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:33:07.114 [DEBUG] [Thread-119840] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:33:07.115 [DEBUG] [Thread-119840] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:33:07.116 [DEBUG] [Thread-119840] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:33:07.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:33:07.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:33:07.118 [DEBUG] [Thread-119840] [transport.py] [_log()] userauth is OK
2025-11-03T17:33:07.119 [DEBUG] [Thread-119840] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:33:07.119 [DEBUG] [Thread-119840] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:33:07.119 [DEBUG] [Thread-119840] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:33:07.119 [DEBUG] [Thread-119840] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:33:07.135 [INFO] [Thread-119840] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:33:07.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:33:07.719 [DEBUG] [Thread-119842 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:33:07.729 [DEBUG] [Thread-119840] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:33:07.729 [DEBUG] [Thread-119840] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:33:07.730 [DEBUG] [Thread-119840] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:33:07.767 [DEBUG] [Thread-119840] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:33:07.767 [DEBUG] [Thread-119840] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:33:07.770 [DEBUG] [Thread-119840] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:33:07.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:33:07.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:33:07.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:33:07.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:33:07.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:33:07.795 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:33:07.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:33:07.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:33:07.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:33:07.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.647324 -999.00  +24.80  28.98      8  -11.00 1 1 1 1 1   887    0 33.88 -20.51 ----- 36.5 29.0 303.4 41.8 27.2 -33.7 27.3 -32.7 28.1 -33.1 28.4 -33.0
2025-11-03T17:33:07.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:33:07.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:33:07.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.647324
2025-11-03T17:33:07.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:33:07.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:33:07.798 [DEBUG] [Thread-119840] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:33:07.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:33:07.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:33:07.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:33:07.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:32:49', tmtdew=45.9, humidity=3.87, cloud=0.0, wind=27.84, temperature=25.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:32:08.794', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:33:07.881 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:33:07.893 [DEBUG] [Thread-119844] [transport.py] [_log()] starting thread (client mode): 0xed224a0
2025-11-03T17:33:07.894 [DEBUG] [Thread-119844] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:33:07.912 [DEBUG] [Thread-119844] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:33:07.912 [INFO] [Thread-119844] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:33:07.920 [DEBUG] [Thread-119844] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:33:07.920 [DEBUG] [Thread-119844] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:33:07.920 [DEBUG] [Thread-119844] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:33:07.920 [DEBUG] [Thread-119844] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:33:07.920 [DEBUG] [Thread-119844] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:33:07.920 [DEBUG] [Thread-119844] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:33:07.920 [DEBUG] [Thread-119844] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:33:07.920 [DEBUG] [Thread-119844] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:33:07.920 [DEBUG] [Thread-119844] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:33:07.920 [DEBUG] [Thread-119844] [transport.py] [_log()] client lang: <none>
2025-11-03T17:33:07.920 [DEBUG] [Thread-119844] [transport.py] [_log()] server lang: <none>
2025-11-03T17:33:07.921 [DEBUG] [Thread-119844] [transport.py] [_log()] kex follows: False
2025-11-03T17:33:07.921 [DEBUG] [Thread-119844] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:33:07.921 [DEBUG] [Thread-119844] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:33:07.921 [DEBUG] [Thread-119844] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:33:07.921 [DEBUG] [Thread-119844] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:33:07.921 [DEBUG] [Thread-119844] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:33:07.921 [DEBUG] [Thread-119844] [transport.py] [_log()] Compression: none
2025-11-03T17:33:07.921 [DEBUG] [Thread-119844] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:33:07.978 [DEBUG] [Thread-119844] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:33:07.979 [DEBUG] [Thread-119844] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:33:07.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:33:07.989 [DEBUG] [Thread-119844] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:33:07.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:33:08.037 [DEBUG] [Thread-119844] [transport.py] [_log()] userauth is OK
2025-11-03T17:33:08.038 [DEBUG] [Thread-119844] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:33:08.038 [DEBUG] [Thread-119844] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:33:08.038 [DEBUG] [Thread-119844] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:33:08.038 [DEBUG] [Thread-119844] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:33:08.057 [INFO] [Thread-119844] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:33:08.058 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:33:08.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:33:09.015 [DEBUG] [Thread-119844] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:33:09.015 [DEBUG] [Thread-119844] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:33:09.064 [DEBUG] [Thread-119844] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:33:09.064 [DEBUG] [Thread-119844] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:33:09.073 [DEBUG] [Thread-119844] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:33:09.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:33:09.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:33:09.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:33:09.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:33:09.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:33:09.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:33:09.105 [DEBUG] [Thread-119844] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:33:22.757 [DEBUG] [Thread-119846 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:33:24.043 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:33:24.044 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:33:32.922 [DEBUG] [Thread-119847 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:33:37.797 [DEBUG] [Thread-119848 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:33:39.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:33:39.108 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:33:39.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:33:39.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 33, 22), 46.02, 3.84, 0.0, 29.47, 25.44, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:33:39.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:33:22
2025-11-03T17:33:39.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:33:40.131 [DEBUG] [Thread-119849] [transport.py] [_log()] starting thread (client mode): 0x117eb4c0
2025-11-03T17:33:40.131 [DEBUG] [Thread-119849] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:33:40.146 [DEBUG] [Thread-119849] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:33:40.146 [INFO] [Thread-119849] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:33:40.149 [DEBUG] [Thread-119849] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:33:40.154 [DEBUG] [Thread-119849] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:33:40.155 [DEBUG] [Thread-119849] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:33:40.155 [DEBUG] [Thread-119849] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:33:40.155 [DEBUG] [Thread-119849] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:33:40.155 [DEBUG] [Thread-119849] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:33:40.155 [DEBUG] [Thread-119849] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:33:40.155 [DEBUG] [Thread-119849] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:33:40.155 [DEBUG] [Thread-119849] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:33:40.155 [DEBUG] [Thread-119849] [transport.py] [_log()] client lang: <none>
2025-11-03T17:33:40.155 [DEBUG] [Thread-119849] [transport.py] [_log()] server lang: <none>
2025-11-03T17:33:40.155 [DEBUG] [Thread-119849] [transport.py] [_log()] kex follows: False
2025-11-03T17:33:40.155 [DEBUG] [Thread-119849] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:33:40.155 [DEBUG] [Thread-119849] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:33:40.155 [DEBUG] [Thread-119849] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:33:40.155 [DEBUG] [Thread-119849] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:33:40.155 [DEBUG] [Thread-119849] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:33:40.156 [DEBUG] [Thread-119849] [transport.py] [_log()] Compression: none
2025-11-03T17:33:40.156 [DEBUG] [Thread-119849] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:33:40.164 [DEBUG] [Thread-119849] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:33:40.165 [DEBUG] [Thread-119849] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:33:40.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:33:40.166 [DEBUG] [Thread-119849] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:33:40.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:33:40.167 [DEBUG] [Thread-119849] [transport.py] [_log()] userauth is OK
2025-11-03T17:33:40.167 [DEBUG] [Thread-119849] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:33:40.167 [DEBUG] [Thread-119849] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:33:40.167 [DEBUG] [Thread-119849] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:33:40.167 [DEBUG] [Thread-119849] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:33:40.189 [INFO] [Thread-119849] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:33:40.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:33:40.756 [DEBUG] [Thread-119849] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:33:40.757 [DEBUG] [Thread-119849] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:33:40.757 [DEBUG] [Thread-119849] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:33:40.797 [DEBUG] [Thread-119849] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:33:40.797 [DEBUG] [Thread-119849] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:33:40.799 [DEBUG] [Thread-119849] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:33:40.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:33:40.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:33:40.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:33:40.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:33:40.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:33:40.812 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:33:40.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:33:40.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:33:40.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:33:40.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.647672 -999.00  +24.60  28.80      8  -11.00 1 1 1 1 1   887    0 35.37 -21.74 ----- 29.2 28.8 301.6 40.5 27.1 -34.4 27.3 -33.0 27.9 -32.8 28.3 -33.0
2025-11-03T17:33:40.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:33:40.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:33:40.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.647672
2025-11-03T17:33:40.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:33:40.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:33:40.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:33:40.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:33:40.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:33:40.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:33:22', tmtdew=46.02, humidity=3.84, cloud=0.0, wind=29.47, temperature=25.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:32:38.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:33:40.814 [DEBUG] [Thread-119849] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:33:40.903 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:33:40.914 [DEBUG] [Thread-119852] [transport.py] [_log()] starting thread (client mode): 0x11799810
2025-11-03T17:33:40.914 [DEBUG] [Thread-119852] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:33:40.930 [DEBUG] [Thread-119852] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:33:40.930 [INFO] [Thread-119852] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:33:40.937 [DEBUG] [Thread-119852] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:33:40.938 [DEBUG] [Thread-119852] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:33:40.938 [DEBUG] [Thread-119852] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:33:40.938 [DEBUG] [Thread-119852] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:33:40.938 [DEBUG] [Thread-119852] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:33:40.938 [DEBUG] [Thread-119852] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:33:40.938 [DEBUG] [Thread-119852] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:33:40.938 [DEBUG] [Thread-119852] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:33:40.938 [DEBUG] [Thread-119852] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:33:40.938 [DEBUG] [Thread-119852] [transport.py] [_log()] client lang: <none>
2025-11-03T17:33:40.938 [DEBUG] [Thread-119852] [transport.py] [_log()] server lang: <none>
2025-11-03T17:33:40.938 [DEBUG] [Thread-119852] [transport.py] [_log()] kex follows: False
2025-11-03T17:33:40.939 [DEBUG] [Thread-119852] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:33:40.939 [DEBUG] [Thread-119852] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:33:40.939 [DEBUG] [Thread-119852] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:33:40.939 [DEBUG] [Thread-119852] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:33:40.939 [DEBUG] [Thread-119852] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:33:40.939 [DEBUG] [Thread-119852] [transport.py] [_log()] Compression: none
2025-11-03T17:33:40.939 [DEBUG] [Thread-119852] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:33:40.996 [DEBUG] [Thread-119852] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:33:40.996 [DEBUG] [Thread-119852] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:33:40.996 [DEBUG] [Thread-119852] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:33:40.996 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:33:40.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:33:41.057 [DEBUG] [Thread-119852] [transport.py] [_log()] userauth is OK
2025-11-03T17:33:41.057 [DEBUG] [Thread-119852] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:33:41.057 [DEBUG] [Thread-119852] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:33:41.057 [DEBUG] [Thread-119852] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:33:41.057 [DEBUG] [Thread-119852] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:33:41.074 [INFO] [Thread-119852] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:33:41.075 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:33:41.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:33:41.887 [DEBUG] [Thread-119852] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:33:41.887 [DEBUG] [Thread-119852] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:33:41.936 [DEBUG] [Thread-119852] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:33:41.936 [DEBUG] [Thread-119852] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:33:41.944 [DEBUG] [Thread-119852] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:33:41.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:33:41.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:33:41.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:33:41.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:33:41.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:33:41.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:33:41.989 [DEBUG] [Thread-119852] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:33:52.830 [DEBUG] [Thread-119854 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:34:07.867 [DEBUG] [Thread-119855 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:34:12.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:34:12.011 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:34:12.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:34:12.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 33, 54), 46.08, 3.85, 0.0, 32.5, 25.52, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:34:12.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:33:54
2025-11-03T17:34:12.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:34:13.081 [DEBUG] [Thread-119856] [transport.py] [_log()] starting thread (client mode): 0xeda0640
2025-11-03T17:34:13.081 [DEBUG] [Thread-119856] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:34:13.092 [DEBUG] [Thread-119856] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:34:13.092 [INFO] [Thread-119856] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:34:13.095 [DEBUG] [Thread-119856] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:34:13.095 [DEBUG] [Thread-119856] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:34:13.095 [DEBUG] [Thread-119856] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:34:13.095 [DEBUG] [Thread-119856] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:34:13.095 [DEBUG] [Thread-119856] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:34:13.095 [DEBUG] [Thread-119856] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:34:13.096 [DEBUG] [Thread-119856] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:34:13.096 [DEBUG] [Thread-119856] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:34:13.096 [DEBUG] [Thread-119856] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:34:13.096 [DEBUG] [Thread-119856] [transport.py] [_log()] client lang: <none>
2025-11-03T17:34:13.096 [DEBUG] [Thread-119856] [transport.py] [_log()] server lang: <none>
2025-11-03T17:34:13.096 [DEBUG] [Thread-119856] [transport.py] [_log()] kex follows: False
2025-11-03T17:34:13.096 [DEBUG] [Thread-119856] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:34:13.096 [DEBUG] [Thread-119856] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:34:13.096 [DEBUG] [Thread-119856] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:34:13.096 [DEBUG] [Thread-119856] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:34:13.096 [DEBUG] [Thread-119856] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:34:13.096 [DEBUG] [Thread-119856] [transport.py] [_log()] Compression: none
2025-11-03T17:34:13.096 [DEBUG] [Thread-119856] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:34:13.115 [DEBUG] [Thread-119856] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:34:13.116 [DEBUG] [Thread-119856] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:34:13.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:34:13.117 [DEBUG] [Thread-119856] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:34:13.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:34:13.157 [DEBUG] [Thread-119856] [transport.py] [_log()] userauth is OK
2025-11-03T17:34:13.158 [DEBUG] [Thread-119856] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:34:13.158 [DEBUG] [Thread-119856] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:34:13.158 [DEBUG] [Thread-119856] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:34:13.158 [DEBUG] [Thread-119856] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:34:13.178 [INFO] [Thread-119856] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:34:13.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:34:13.756 [DEBUG] [Thread-119856] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:34:13.756 [DEBUG] [Thread-119856] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:34:13.757 [DEBUG] [Thread-119856] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:34:13.797 [DEBUG] [Thread-119856] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:34:13.797 [DEBUG] [Thread-119856] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:34:13.800 [DEBUG] [Thread-119856] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:34:13.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:34:13.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:34:13.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:34:13.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:34:13.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:34:13.826 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:34:13.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:34:13.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:34:13.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:34:13.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.648366 -999.00  +24.80  27.81      8  -10.90 1 1 1 1 1   887    0 35.39 -16.33 ----- 35.1 27.8 277.6 38.6 27.0 -33.8 27.1 -32.6 27.9 -31.6 28.2 -32.9
2025-11-03T17:34:13.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:34:13.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:34:13.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.648366
2025-11-03T17:34:13.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:34:13.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:34:13.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:34:13.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:34:13.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:34:13.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:33:54', tmtdew=46.08, humidity=3.85, cloud=0.0, wind=32.5, temperature=25.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:33:38.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:34:13.828 [DEBUG] [Thread-119856] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:34:13.899 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:34:13.911 [DEBUG] [Thread-119859] [transport.py] [_log()] starting thread (client mode): 0x11799e70
2025-11-03T17:34:13.911 [DEBUG] [Thread-119859] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:34:13.926 [DEBUG] [Thread-119859] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:34:13.926 [INFO] [Thread-119859] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:34:13.933 [DEBUG] [Thread-119859] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:34:13.933 [DEBUG] [Thread-119859] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:34:13.933 [DEBUG] [Thread-119859] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:34:13.933 [DEBUG] [Thread-119859] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:34:13.933 [DEBUG] [Thread-119859] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:34:13.933 [DEBUG] [Thread-119859] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:34:13.933 [DEBUG] [Thread-119859] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:34:13.933 [DEBUG] [Thread-119859] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:34:13.933 [DEBUG] [Thread-119859] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:34:13.933 [DEBUG] [Thread-119859] [transport.py] [_log()] client lang: <none>
2025-11-03T17:34:13.934 [DEBUG] [Thread-119859] [transport.py] [_log()] server lang: <none>
2025-11-03T17:34:13.934 [DEBUG] [Thread-119859] [transport.py] [_log()] kex follows: False
2025-11-03T17:34:13.934 [DEBUG] [Thread-119859] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:34:13.934 [DEBUG] [Thread-119859] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:34:13.934 [DEBUG] [Thread-119859] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:34:13.934 [DEBUG] [Thread-119859] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:34:13.934 [DEBUG] [Thread-119859] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:34:13.934 [DEBUG] [Thread-119859] [transport.py] [_log()] Compression: none
2025-11-03T17:34:13.934 [DEBUG] [Thread-119859] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:34:13.991 [DEBUG] [Thread-119859] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:34:13.992 [DEBUG] [Thread-119859] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:34:13.992 [DEBUG] [Thread-119859] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:34:13.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:34:13.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:34:14.049 [DEBUG] [Thread-119859] [transport.py] [_log()] userauth is OK
2025-11-03T17:34:14.049 [DEBUG] [Thread-119859] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:34:14.049 [DEBUG] [Thread-119859] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:34:14.049 [DEBUG] [Thread-119859] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:34:14.049 [DEBUG] [Thread-119859] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:34:14.063 [INFO] [Thread-119859] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:34:14.063 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:34:14.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:34:14.907 [DEBUG] [Thread-119859] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:34:14.908 [DEBUG] [Thread-119859] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:34:14.955 [DEBUG] [Thread-119859] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:34:14.955 [DEBUG] [Thread-119859] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:34:14.964 [DEBUG] [Thread-119859] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:34:14.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:34:14.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:34:14.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:34:14.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:34:14.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:34:14.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:34:15.002 [DEBUG] [Thread-119859] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:34:22.906 [DEBUG] [Thread-119861 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:34:24.194 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:34:24.196 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:34:33.133 [DEBUG] [Thread-119862 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:34:37.963 [DEBUG] [Thread-119863 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:34:45.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:34:45.024 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:34:45.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:34:45.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 34, 26), 46.38, 3.77, 0.0, 39.01, 25.62, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:34:45.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:34:26
2025-11-03T17:34:45.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:34:46.075 [DEBUG] [Thread-119864] [transport.py] [_log()] starting thread (client mode): 0xeda1a80
2025-11-03T17:34:46.075 [DEBUG] [Thread-119864] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:34:46.096 [DEBUG] [Thread-119864] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:34:46.096 [INFO] [Thread-119864] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:34:46.097 [DEBUG] [Thread-119864] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:34:46.097 [DEBUG] [Thread-119864] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:34:46.097 [DEBUG] [Thread-119864] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:34:46.097 [DEBUG] [Thread-119864] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:34:46.098 [DEBUG] [Thread-119864] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:34:46.098 [DEBUG] [Thread-119864] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:34:46.098 [DEBUG] [Thread-119864] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:34:46.098 [DEBUG] [Thread-119864] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:34:46.098 [DEBUG] [Thread-119864] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:34:46.098 [DEBUG] [Thread-119864] [transport.py] [_log()] client lang: <none>
2025-11-03T17:34:46.098 [DEBUG] [Thread-119864] [transport.py] [_log()] server lang: <none>
2025-11-03T17:34:46.098 [DEBUG] [Thread-119864] [transport.py] [_log()] kex follows: False
2025-11-03T17:34:46.098 [DEBUG] [Thread-119864] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:34:46.098 [DEBUG] [Thread-119864] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:34:46.098 [DEBUG] [Thread-119864] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:34:46.098 [DEBUG] [Thread-119864] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:34:46.098 [DEBUG] [Thread-119864] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:34:46.098 [DEBUG] [Thread-119864] [transport.py] [_log()] Compression: none
2025-11-03T17:34:46.098 [DEBUG] [Thread-119864] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:34:46.107 [DEBUG] [Thread-119864] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:34:46.107 [DEBUG] [Thread-119864] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:34:46.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:34:46.108 [DEBUG] [Thread-119864] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:34:46.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:34:46.110 [DEBUG] [Thread-119864] [transport.py] [_log()] userauth is OK
2025-11-03T17:34:46.110 [DEBUG] [Thread-119864] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:34:46.110 [DEBUG] [Thread-119864] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:34:46.110 [DEBUG] [Thread-119864] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:34:46.110 [DEBUG] [Thread-119864] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:34:46.134 [INFO] [Thread-119864] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:34:46.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:34:46.760 [DEBUG] [Thread-119864] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:34:46.760 [DEBUG] [Thread-119864] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:34:46.761 [DEBUG] [Thread-119864] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:34:46.801 [DEBUG] [Thread-119864] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:34:46.801 [DEBUG] [Thread-119864] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:34:46.804 [DEBUG] [Thread-119864] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:34:46.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:34:46.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:34:46.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:34:46.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:34:46.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:34:46.832 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:34:46.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:34:46.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:34:46.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:34:46.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.648713 -999.00  +24.90  25.34      8  -10.80 1 1 1 1 1   887    0 35.76 -13.64 ----- 26.1 25.3 270.0 37.7 26.9 -34.5 27.1 -32.5 27.7 -32.3 28.1 -32.7
2025-11-03T17:34:46.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:34:46.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:34:46.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.648713
2025-11-03T17:34:46.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:34:46.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:34:46.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:34:46.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:34:46.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:34:46.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:34:26', tmtdew=46.38, humidity=3.77, cloud=0.0, wind=39.01, temperature=25.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:34:08.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:34:46.833 [DEBUG] [Thread-119864] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:34:46.906 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:34:53.008 [DEBUG] [Thread-119867 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:35:08.067 [DEBUG] [Thread-119868 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:35:23.106 [DEBUG] [Thread-119869 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:35:24.337 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:35:24.339 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:35:33.170 [DEBUG] [Thread-119870 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:35:38.146 [DEBUG] [Thread-119871 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:35:53.182 [DEBUG] [Thread-119872 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:36:08.214 [DEBUG] [Thread-119873 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:36:23.253 [DEBUG] [Thread-119874 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:36:24.479 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:36:24.480 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:36:33.239 [DEBUG] [Thread-119875 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:36:38.282 [DEBUG] [Thread-119876 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:36:53.315 [DEBUG] [Thread-119877 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:36:59.498 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T17:37:08.349 [DEBUG] [Thread-119878 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:37:23.381 [DEBUG] [Thread-119879 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:37:24.620 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:37:24.622 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:37:29.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:37:29.535 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:37:29.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:37:30.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 37, 8), 45.83, 3.89, 0.0, 31.09, 25.42, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:37:30.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:37:08
2025-11-03T17:37:30.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:37:30.590 [DEBUG] [Thread-119880] [transport.py] [_log()] starting thread (client mode): 0xed2e170
2025-11-03T17:37:30.591 [DEBUG] [Thread-119880] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:37:30.605 [DEBUG] [Thread-119880] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:37:30.605 [INFO] [Thread-119880] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:37:30.609 [DEBUG] [Thread-119880] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:37:30.609 [DEBUG] [Thread-119880] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:37:30.609 [DEBUG] [Thread-119880] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:37:30.609 [DEBUG] [Thread-119880] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:37:30.609 [DEBUG] [Thread-119880] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:37:30.609 [DEBUG] [Thread-119880] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:37:30.610 [DEBUG] [Thread-119880] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:37:30.610 [DEBUG] [Thread-119880] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:37:30.610 [DEBUG] [Thread-119880] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:37:30.610 [DEBUG] [Thread-119880] [transport.py] [_log()] client lang: <none>
2025-11-03T17:37:30.610 [DEBUG] [Thread-119880] [transport.py] [_log()] server lang: <none>
2025-11-03T17:37:30.610 [DEBUG] [Thread-119880] [transport.py] [_log()] kex follows: False
2025-11-03T17:37:30.610 [DEBUG] [Thread-119880] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:37:30.611 [DEBUG] [Thread-119880] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:37:30.611 [DEBUG] [Thread-119880] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:37:30.611 [DEBUG] [Thread-119880] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:37:30.611 [DEBUG] [Thread-119880] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:37:30.611 [DEBUG] [Thread-119880] [transport.py] [_log()] Compression: none
2025-11-03T17:37:30.611 [DEBUG] [Thread-119880] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:37:30.640 [DEBUG] [Thread-119880] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:37:30.643 [DEBUG] [Thread-119880] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:37:30.644 [DEBUG] [Thread-119880] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:37:30.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:37:30.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:37:30.649 [DEBUG] [Thread-119880] [transport.py] [_log()] userauth is OK
2025-11-03T17:37:30.649 [DEBUG] [Thread-119880] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:37:30.649 [DEBUG] [Thread-119880] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:37:30.649 [DEBUG] [Thread-119880] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:37:30.649 [DEBUG] [Thread-119880] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:37:30.675 [INFO] [Thread-119880] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:37:30.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:37:32.503 [DEBUG] [Thread-119880] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:37:32.504 [DEBUG] [Thread-119880] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:37:32.505 [DEBUG] [Thread-119880] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:37:32.536 [DEBUG] [Thread-119880] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:37:32.537 [DEBUG] [Thread-119880] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:37:32.540 [DEBUG] [Thread-119880] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:37:32.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:37:32.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:37:32.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:37:32.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:37:32.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:37:32.565 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:37:32.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:37:32.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:37:32.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:37:32.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.650449 -999.00  +24.60  29.92      8  -11.00 1 1 1 1 1   887    0 35.58 -7.08 ----- 28.9 29.9 292.7 40.5 26.8 -33.8 27.0 -32.9 27.6 -33.0 28.0 -33.1
2025-11-03T17:37:32.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:37:32.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:37:32.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.650449
2025-11-03T17:37:32.573 [DEBUG] [Thread-119880] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:37:32.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:37:32.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:37:32.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:37:32.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:37:32.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:37:32.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:37:08', tmtdew=45.83, humidity=3.89, cloud=0.0, wind=31.09, temperature=25.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:36:38.794', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:37:32.674 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:37:32.687 [DEBUG] [Thread-119883] [transport.py] [_log()] starting thread (client mode): 0x11783df0
2025-11-03T17:37:32.687 [DEBUG] [Thread-119883] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:37:32.704 [DEBUG] [Thread-119883] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:37:32.704 [INFO] [Thread-119883] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:37:32.712 [DEBUG] [Thread-119883] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:37:32.712 [DEBUG] [Thread-119883] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:37:32.712 [DEBUG] [Thread-119883] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:37:32.712 [DEBUG] [Thread-119883] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:37:32.712 [DEBUG] [Thread-119883] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:37:32.712 [DEBUG] [Thread-119883] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:37:32.713 [DEBUG] [Thread-119883] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:37:32.713 [DEBUG] [Thread-119883] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:37:32.713 [DEBUG] [Thread-119883] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:37:32.713 [DEBUG] [Thread-119883] [transport.py] [_log()] client lang: <none>
2025-11-03T17:37:32.713 [DEBUG] [Thread-119883] [transport.py] [_log()] server lang: <none>
2025-11-03T17:37:32.713 [DEBUG] [Thread-119883] [transport.py] [_log()] kex follows: False
2025-11-03T17:37:32.713 [DEBUG] [Thread-119883] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:37:32.713 [DEBUG] [Thread-119883] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:37:32.713 [DEBUG] [Thread-119883] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:37:32.713 [DEBUG] [Thread-119883] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:37:32.713 [DEBUG] [Thread-119883] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:37:32.713 [DEBUG] [Thread-119883] [transport.py] [_log()] Compression: none
2025-11-03T17:37:32.713 [DEBUG] [Thread-119883] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:37:32.774 [DEBUG] [Thread-119883] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:37:32.774 [DEBUG] [Thread-119883] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:37:32.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:37:32.775 [DEBUG] [Thread-119883] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:37:32.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:37:32.829 [DEBUG] [Thread-119883] [transport.py] [_log()] userauth is OK
2025-11-03T17:37:32.830 [DEBUG] [Thread-119883] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:37:32.830 [DEBUG] [Thread-119883] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:37:32.830 [DEBUG] [Thread-119883] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:37:32.830 [DEBUG] [Thread-119883] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:37:32.850 [INFO] [Thread-119883] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:37:32.851 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:37:32.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:37:33.285 [DEBUG] [Thread-119885 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:37:33.731 [DEBUG] [Thread-119883] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:37:33.731 [DEBUG] [Thread-119883] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:37:33.778 [DEBUG] [Thread-119883] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:37:33.779 [DEBUG] [Thread-119883] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:37:33.787 [DEBUG] [Thread-119883] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:37:33.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:37:33.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:37:33.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:37:33.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:37:33.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:37:33.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:37:33.824 [DEBUG] [Thread-119883] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:37:38.417 [DEBUG] [Thread-119886 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:37:53.513 [DEBUG] [Thread-119887 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:38:03.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:38:03.847 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:38:03.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:38:04.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 37, 41), 45.64, 3.89, 0.0, 35.96, 25.24, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:38:04.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:37:41
2025-11-03T17:38:04.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:38:04.912 [DEBUG] [Thread-119888] [transport.py] [_log()] starting thread (client mode): 0x117e9ae0
2025-11-03T17:38:04.912 [DEBUG] [Thread-119888] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:38:04.933 [DEBUG] [Thread-119888] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:38:04.933 [INFO] [Thread-119888] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:38:04.937 [DEBUG] [Thread-119888] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:38:04.937 [DEBUG] [Thread-119888] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:38:04.937 [DEBUG] [Thread-119888] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:38:04.938 [DEBUG] [Thread-119888] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:38:04.938 [DEBUG] [Thread-119888] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:38:04.938 [DEBUG] [Thread-119888] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:38:04.938 [DEBUG] [Thread-119888] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:38:04.938 [DEBUG] [Thread-119888] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:38:04.938 [DEBUG] [Thread-119888] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:38:04.938 [DEBUG] [Thread-119888] [transport.py] [_log()] client lang: <none>
2025-11-03T17:38:04.938 [DEBUG] [Thread-119888] [transport.py] [_log()] server lang: <none>
2025-11-03T17:38:04.938 [DEBUG] [Thread-119888] [transport.py] [_log()] kex follows: False
2025-11-03T17:38:04.938 [DEBUG] [Thread-119888] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:38:04.939 [DEBUG] [Thread-119888] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:38:04.939 [DEBUG] [Thread-119888] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:38:04.939 [DEBUG] [Thread-119888] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:38:04.939 [DEBUG] [Thread-119888] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:38:04.939 [DEBUG] [Thread-119888] [transport.py] [_log()] Compression: none
2025-11-03T17:38:04.939 [DEBUG] [Thread-119888] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:38:04.959 [DEBUG] [Thread-119888] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:38:04.960 [DEBUG] [Thread-119888] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:38:04.961 [DEBUG] [Thread-119888] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:38:04.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:38:04.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:38:04.963 [DEBUG] [Thread-119888] [transport.py] [_log()] userauth is OK
2025-11-03T17:38:04.963 [DEBUG] [Thread-119888] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:38:04.963 [DEBUG] [Thread-119888] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:38:04.963 [DEBUG] [Thread-119888] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:38:04.963 [DEBUG] [Thread-119888] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:38:04.999 [INFO] [Thread-119888] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:38:05.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:38:05.615 [DEBUG] [Thread-119888] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:38:05.615 [DEBUG] [Thread-119888] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:38:05.615 [DEBUG] [Thread-119888] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:38:05.656 [DEBUG] [Thread-119888] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:38:05.656 [DEBUG] [Thread-119888] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:38:05.658 [DEBUG] [Thread-119888] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:38:05.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:38:05.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:38:05.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:38:05.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:38:05.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:38:05.680 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:38:05.680 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:38:05.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:38:05.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:38:05.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.650797 -999.00  +24.60  23.54      8  -10.80 1 1 1 1 1   887    0 36.15 -7.33 ----- 26.5 23.5 285.8 37.7 26.8 -33.8 26.9 -32.7 27.6 -32.3 27.9 -32.6
2025-11-03T17:38:05.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:38:05.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:38:05.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.650797
2025-11-03T17:38:05.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:38:05.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:38:05.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:38:05.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:38:05.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:38:05.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:37:41', tmtdew=45.64, humidity=3.89, cloud=0.0, wind=35.96, temperature=25.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:37:08.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:38:05.683 [DEBUG] [Thread-119888] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:38:05.763 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:38:05.774 [DEBUG] [Thread-119891] [transport.py] [_log()] starting thread (client mode): 0xed2c2b0
2025-11-03T17:38:05.774 [DEBUG] [Thread-119891] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:38:05.789 [DEBUG] [Thread-119891] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:38:05.789 [INFO] [Thread-119891] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:38:05.797 [DEBUG] [Thread-119891] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:38:05.797 [DEBUG] [Thread-119891] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:38:05.798 [DEBUG] [Thread-119891] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:38:05.798 [DEBUG] [Thread-119891] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:38:05.798 [DEBUG] [Thread-119891] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:38:05.798 [DEBUG] [Thread-119891] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:38:05.798 [DEBUG] [Thread-119891] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:38:05.798 [DEBUG] [Thread-119891] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:38:05.799 [DEBUG] [Thread-119891] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:38:05.799 [DEBUG] [Thread-119891] [transport.py] [_log()] client lang: <none>
2025-11-03T17:38:05.799 [DEBUG] [Thread-119891] [transport.py] [_log()] server lang: <none>
2025-11-03T17:38:05.799 [DEBUG] [Thread-119891] [transport.py] [_log()] kex follows: False
2025-11-03T17:38:05.799 [DEBUG] [Thread-119891] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:38:05.799 [DEBUG] [Thread-119891] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:38:05.799 [DEBUG] [Thread-119891] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:38:05.799 [DEBUG] [Thread-119891] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:38:05.799 [DEBUG] [Thread-119891] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:38:05.799 [DEBUG] [Thread-119891] [transport.py] [_log()] Compression: none
2025-11-03T17:38:05.799 [DEBUG] [Thread-119891] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:38:05.861 [DEBUG] [Thread-119891] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:38:05.862 [DEBUG] [Thread-119891] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:38:05.862 [DEBUG] [Thread-119891] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:38:05.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:38:05.864 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:38:05.917 [DEBUG] [Thread-119891] [transport.py] [_log()] userauth is OK
2025-11-03T17:38:05.918 [DEBUG] [Thread-119891] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:38:05.918 [DEBUG] [Thread-119891] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:38:05.918 [DEBUG] [Thread-119891] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:38:05.918 [DEBUG] [Thread-119891] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:38:05.937 [INFO] [Thread-119891] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:38:05.937 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:38:05.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:38:06.752 [DEBUG] [Thread-119891] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:38:06.752 [DEBUG] [Thread-119891] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:38:06.799 [DEBUG] [Thread-119891] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:38:06.799 [DEBUG] [Thread-119891] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:38:06.808 [DEBUG] [Thread-119891] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:38:06.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:38:06.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:38:06.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:38:06.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:38:06.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:38:06.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:38:06.840 [DEBUG] [Thread-119891] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:38:08.561 [DEBUG] [Thread-119893 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:38:23.615 [DEBUG] [Thread-119894 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:38:24.762 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:38:24.763 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:38:33.335 [DEBUG] [Thread-119895 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:38:36.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:38:36.863 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:38:36.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:38:37.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 38, 13), 45.62, 3.89, 0.0, 33.91, 25.19, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:38:37.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:38:13
2025-11-03T17:38:37.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:38:37.917 [DEBUG] [Thread-119896] [transport.py] [_log()] starting thread (client mode): 0x117ea8f0
2025-11-03T17:38:37.917 [DEBUG] [Thread-119896] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:38:37.937 [DEBUG] [Thread-119896] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:38:37.937 [INFO] [Thread-119896] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:38:37.947 [DEBUG] [Thread-119896] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:38:37.947 [DEBUG] [Thread-119896] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:38:37.947 [DEBUG] [Thread-119896] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:38:37.947 [DEBUG] [Thread-119896] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:38:37.947 [DEBUG] [Thread-119896] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:38:37.948 [DEBUG] [Thread-119896] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:38:37.948 [DEBUG] [Thread-119896] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:38:37.948 [DEBUG] [Thread-119896] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:38:37.948 [DEBUG] [Thread-119896] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:38:37.948 [DEBUG] [Thread-119896] [transport.py] [_log()] client lang: <none>
2025-11-03T17:38:37.948 [DEBUG] [Thread-119896] [transport.py] [_log()] server lang: <none>
2025-11-03T17:38:37.948 [DEBUG] [Thread-119896] [transport.py] [_log()] kex follows: False
2025-11-03T17:38:37.948 [DEBUG] [Thread-119896] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:38:37.948 [DEBUG] [Thread-119896] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:38:37.949 [DEBUG] [Thread-119896] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:38:37.949 [DEBUG] [Thread-119896] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:38:37.949 [DEBUG] [Thread-119896] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:38:37.949 [DEBUG] [Thread-119896] [transport.py] [_log()] Compression: none
2025-11-03T17:38:37.949 [DEBUG] [Thread-119896] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:38:37.961 [DEBUG] [Thread-119896] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:38:37.962 [DEBUG] [Thread-119896] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:38:37.963 [DEBUG] [Thread-119896] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:38:37.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:38:37.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:38:37.965 [DEBUG] [Thread-119896] [transport.py] [_log()] userauth is OK
2025-11-03T17:38:37.965 [DEBUG] [Thread-119896] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:38:37.965 [DEBUG] [Thread-119896] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:38:37.965 [DEBUG] [Thread-119896] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:38:37.965 [DEBUG] [Thread-119896] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:38:37.988 [INFO] [Thread-119896] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:38:37.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:38:38.597 [DEBUG] [Thread-119896] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:38:38.597 [DEBUG] [Thread-119896] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:38:38.597 [DEBUG] [Thread-119896] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:38:38.639 [DEBUG] [Thread-119896] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:38:38.639 [DEBUG] [Thread-119896] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:38:38.641 [DEBUG] [Thread-119896] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:38:38.652 [DEBUG] [Thread-119898 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:38:38.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:38:38.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:38:38.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:38:38.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:38:38.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:38:38.659 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:38:38.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:38:38.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:38:38.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:38:38.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.651144 -999.00  +24.70  35.29      8  -10.90 1 1 2 1 1   887    0 36.00 -5.67 ----- 32.7 35.3 290.6 40.4 26.8 -33.7 26.9 -32.6 27.6 -32.2 27.9 -32.9
2025-11-03T17:38:38.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:38:38.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:38:38.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.651144
2025-11-03T17:38:38.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:38:38.668 [DEBUG] [Thread-119896] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:38:38.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:38:38.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:38:38.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:38:38.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:38:38.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:38:13', tmtdew=45.62, humidity=3.89, cloud=0.0, wind=33.91, temperature=25.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:37:38.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:38:38.741 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:38:38.753 [DEBUG] [Thread-119900] [transport.py] [_log()] starting thread (client mode): 0x117e94e0
2025-11-03T17:38:38.753 [DEBUG] [Thread-119900] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:38:38.767 [DEBUG] [Thread-119900] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:38:38.767 [INFO] [Thread-119900] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:38:38.775 [DEBUG] [Thread-119900] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:38:38.775 [DEBUG] [Thread-119900] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:38:38.775 [DEBUG] [Thread-119900] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:38:38.775 [DEBUG] [Thread-119900] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:38:38.775 [DEBUG] [Thread-119900] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:38:38.775 [DEBUG] [Thread-119900] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:38:38.775 [DEBUG] [Thread-119900] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:38:38.775 [DEBUG] [Thread-119900] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:38:38.775 [DEBUG] [Thread-119900] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:38:38.775 [DEBUG] [Thread-119900] [transport.py] [_log()] client lang: <none>
2025-11-03T17:38:38.775 [DEBUG] [Thread-119900] [transport.py] [_log()] server lang: <none>
2025-11-03T17:38:38.775 [DEBUG] [Thread-119900] [transport.py] [_log()] kex follows: False
2025-11-03T17:38:38.775 [DEBUG] [Thread-119900] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:38:38.775 [DEBUG] [Thread-119900] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:38:38.775 [DEBUG] [Thread-119900] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:38:38.775 [DEBUG] [Thread-119900] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:38:38.775 [DEBUG] [Thread-119900] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:38:38.775 [DEBUG] [Thread-119900] [transport.py] [_log()] Compression: none
2025-11-03T17:38:38.775 [DEBUG] [Thread-119900] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:38:38.832 [DEBUG] [Thread-119900] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:38:38.832 [DEBUG] [Thread-119900] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:38:38.832 [DEBUG] [Thread-119900] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:38:38.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:38:38.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:38:38.889 [DEBUG] [Thread-119900] [transport.py] [_log()] userauth is OK
2025-11-03T17:38:38.889 [DEBUG] [Thread-119900] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:38:38.889 [DEBUG] [Thread-119900] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:38:38.889 [DEBUG] [Thread-119900] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:38:38.889 [DEBUG] [Thread-119900] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:38:38.903 [INFO] [Thread-119900] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:38:38.904 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:38:38.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:38:39.708 [DEBUG] [Thread-119900] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:38:39.708 [DEBUG] [Thread-119900] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:38:39.756 [DEBUG] [Thread-119900] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:38:39.756 [DEBUG] [Thread-119900] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:38:39.765 [DEBUG] [Thread-119900] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:38:39.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:38:39.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:38:39.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:38:39.794 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:38:39.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:38:39.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:38:39.803 [DEBUG] [Thread-119900] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:38:53.683 [DEBUG] [Thread-119903 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:38:54.303 [DEBUG] [Thread-119902 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:39:08.747 [DEBUG] [Thread-119904 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:39:09.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:39:09.826 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:39:09.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:39:10.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 38, 45), 45.75, 3.9, 0.0, 27.07, 25.47, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:39:10.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:38:45
2025-11-03T17:39:10.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:39:10.786 [DEBUG] [Thread-119905] [transport.py] [_log()] starting thread (client mode): 0x1179a020
2025-11-03T17:39:10.786 [DEBUG] [Thread-119905] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:39:10.808 [DEBUG] [Thread-119905] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:39:10.808 [INFO] [Thread-119905] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:39:10.812 [DEBUG] [Thread-119905] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:39:10.812 [DEBUG] [Thread-119905] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:39:10.821 [DEBUG] [Thread-119905] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:39:10.822 [DEBUG] [Thread-119905] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:39:10.822 [DEBUG] [Thread-119905] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:39:10.822 [DEBUG] [Thread-119905] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:39:10.822 [DEBUG] [Thread-119905] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:39:10.822 [DEBUG] [Thread-119905] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:39:10.822 [DEBUG] [Thread-119905] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:39:10.823 [DEBUG] [Thread-119905] [transport.py] [_log()] client lang: <none>
2025-11-03T17:39:10.823 [DEBUG] [Thread-119905] [transport.py] [_log()] server lang: <none>
2025-11-03T17:39:10.823 [DEBUG] [Thread-119905] [transport.py] [_log()] kex follows: False
2025-11-03T17:39:10.823 [DEBUG] [Thread-119905] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:39:10.823 [DEBUG] [Thread-119905] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:39:10.823 [DEBUG] [Thread-119905] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:39:10.823 [DEBUG] [Thread-119905] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:39:10.823 [DEBUG] [Thread-119905] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:39:10.823 [DEBUG] [Thread-119905] [transport.py] [_log()] Compression: none
2025-11-03T17:39:10.823 [DEBUG] [Thread-119905] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:39:10.841 [DEBUG] [Thread-119905] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:39:10.842 [DEBUG] [Thread-119905] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:39:10.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:39:10.843 [DEBUG] [Thread-119905] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:39:10.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:39:10.845 [DEBUG] [Thread-119905] [transport.py] [_log()] userauth is OK
2025-11-03T17:39:10.846 [DEBUG] [Thread-119905] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:39:10.846 [DEBUG] [Thread-119905] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:39:10.846 [DEBUG] [Thread-119905] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:39:10.846 [DEBUG] [Thread-119905] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:39:10.870 [INFO] [Thread-119905] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:39:10.871 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:39:11.522 [DEBUG] [Thread-119905] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:39:11.522 [DEBUG] [Thread-119905] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:39:11.523 [DEBUG] [Thread-119905] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:39:11.563 [DEBUG] [Thread-119905] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:39:11.563 [DEBUG] [Thread-119905] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:39:11.567 [DEBUG] [Thread-119905] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:39:11.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:39:11.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:39:11.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:39:11.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:39:11.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:39:11.602 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:39:11.602 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:39:11.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:39:11.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:39:11.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.651838 -999.00  +24.70  27.27      8  -10.80 1 1 1 1 1   887    0 35.86 -4.02 ----- 36.0 27.3 303.8 39.0 26.7 -33.6 26.9 -32.5 27.5 -32.2 27.9 -32.7
2025-11-03T17:39:11.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:39:11.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:39:11.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.651838
2025-11-03T17:39:11.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:39:11.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:39:11.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:39:11.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:39:11.605 [DEBUG] [Thread-119905] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:39:11.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:39:11.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:38:45', tmtdew=45.75, humidity=3.9, cloud=0.0, wind=27.07, temperature=25.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:38:38.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:39:11.688 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:39:11.700 [DEBUG] [Thread-119908] [transport.py] [_log()] starting thread (client mode): 0x117e9c60
2025-11-03T17:39:11.700 [DEBUG] [Thread-119908] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:39:11.716 [DEBUG] [Thread-119908] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:39:11.716 [INFO] [Thread-119908] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:39:11.723 [DEBUG] [Thread-119908] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:39:11.724 [DEBUG] [Thread-119908] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:39:11.724 [DEBUG] [Thread-119908] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:39:11.724 [DEBUG] [Thread-119908] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:39:11.724 [DEBUG] [Thread-119908] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:39:11.724 [DEBUG] [Thread-119908] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:39:11.724 [DEBUG] [Thread-119908] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:39:11.724 [DEBUG] [Thread-119908] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:39:11.724 [DEBUG] [Thread-119908] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:39:11.724 [DEBUG] [Thread-119908] [transport.py] [_log()] client lang: <none>
2025-11-03T17:39:11.724 [DEBUG] [Thread-119908] [transport.py] [_log()] server lang: <none>
2025-11-03T17:39:11.724 [DEBUG] [Thread-119908] [transport.py] [_log()] kex follows: False
2025-11-03T17:39:11.724 [DEBUG] [Thread-119908] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:39:11.724 [DEBUG] [Thread-119908] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:39:11.724 [DEBUG] [Thread-119908] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:39:11.724 [DEBUG] [Thread-119908] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:39:11.724 [DEBUG] [Thread-119908] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:39:11.725 [DEBUG] [Thread-119908] [transport.py] [_log()] Compression: none
2025-11-03T17:39:11.725 [DEBUG] [Thread-119908] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:39:11.782 [DEBUG] [Thread-119908] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:39:11.782 [DEBUG] [Thread-119908] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:39:11.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:39:11.783 [DEBUG] [Thread-119908] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:39:11.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:39:11.838 [DEBUG] [Thread-119908] [transport.py] [_log()] userauth is OK
2025-11-03T17:39:11.838 [DEBUG] [Thread-119908] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:39:11.838 [DEBUG] [Thread-119908] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:39:11.839 [DEBUG] [Thread-119908] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:39:11.839 [DEBUG] [Thread-119908] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:39:11.858 [INFO] [Thread-119908] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:39:11.858 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:39:11.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:39:12.694 [DEBUG] [Thread-119908] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:39:12.694 [DEBUG] [Thread-119908] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:39:12.742 [DEBUG] [Thread-119908] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:39:12.743 [DEBUG] [Thread-119908] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:39:12.752 [DEBUG] [Thread-119908] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:39:12.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:39:12.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:39:12.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:39:12.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:39:12.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:39:12.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:39:12.788 [DEBUG] [Thread-119908] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:39:23.781 [DEBUG] [Thread-119910 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:39:24.903 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:39:24.903 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:39:33.546 [DEBUG] [Thread-119911 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:39:38.833 [DEBUG] [Thread-119912 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:39:42.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:39:42.810 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:39:42.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:39:43.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 39, 18), 45.81, 3.89, 0.0, 29.77, 25.51, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:39:43.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:39:18
2025-11-03T17:39:43.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:39:43.775 [DEBUG] [Thread-119913] [transport.py] [_log()] starting thread (client mode): 0x117eb8b0
2025-11-03T17:39:43.775 [DEBUG] [Thread-119913] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:39:43.788 [DEBUG] [Thread-119913] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:39:43.788 [INFO] [Thread-119913] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:39:43.791 [DEBUG] [Thread-119913] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:39:43.792 [DEBUG] [Thread-119913] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:39:43.792 [DEBUG] [Thread-119913] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:39:43.792 [DEBUG] [Thread-119913] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:39:43.792 [DEBUG] [Thread-119913] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:39:43.792 [DEBUG] [Thread-119913] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:39:43.792 [DEBUG] [Thread-119913] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:39:43.792 [DEBUG] [Thread-119913] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:39:43.792 [DEBUG] [Thread-119913] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:39:43.792 [DEBUG] [Thread-119913] [transport.py] [_log()] client lang: <none>
2025-11-03T17:39:43.792 [DEBUG] [Thread-119913] [transport.py] [_log()] server lang: <none>
2025-11-03T17:39:43.792 [DEBUG] [Thread-119913] [transport.py] [_log()] kex follows: False
2025-11-03T17:39:43.792 [DEBUG] [Thread-119913] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:39:43.792 [DEBUG] [Thread-119913] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:39:43.792 [DEBUG] [Thread-119913] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:39:43.792 [DEBUG] [Thread-119913] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:39:43.792 [DEBUG] [Thread-119913] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:39:43.792 [DEBUG] [Thread-119913] [transport.py] [_log()] Compression: none
2025-11-03T17:39:43.792 [DEBUG] [Thread-119913] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:39:43.799 [DEBUG] [Thread-119913] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:39:43.799 [DEBUG] [Thread-119913] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:39:43.800 [DEBUG] [Thread-119913] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:39:43.800 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:39:43.800 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:39:43.800 [DEBUG] [Thread-119913] [transport.py] [_log()] userauth is OK
2025-11-03T17:39:43.800 [DEBUG] [Thread-119913] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:39:43.801 [DEBUG] [Thread-119913] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:39:43.801 [DEBUG] [Thread-119913] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:39:43.801 [DEBUG] [Thread-119913] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:39:43.811 [INFO] [Thread-119913] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:39:43.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:39:44.465 [DEBUG] [Thread-119913] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:39:44.465 [DEBUG] [Thread-119913] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:39:44.465 [DEBUG] [Thread-119913] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:39:44.506 [DEBUG] [Thread-119913] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:39:44.506 [DEBUG] [Thread-119913] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:39:44.508 [DEBUG] [Thread-119913] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:39:44.522 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:39:44.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:39:44.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:39:44.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:39:44.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:39:44.527 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:39:44.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:39:44.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:39:44.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:39:44.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.652186 -999.00  +24.60  27.33      8  -10.90 1 1 1 1 1   887    0 35.50 -5.15 ----- 34.2 27.3 298.2 36.8 26.7 -33.4 26.9 -32.3 27.6 -33.4 27.9 -32.9
2025-11-03T17:39:44.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:39:44.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:39:44.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.652186
2025-11-03T17:39:44.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:39:44.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:39:44.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:39:44.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:39:44.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:39:44.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:39:18', tmtdew=45.81, humidity=3.89, cloud=0.0, wind=29.77, temperature=25.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:39:08.870', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:39:44.528 [DEBUG] [Thread-119913] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:39:44.602 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:39:44.613 [DEBUG] [Thread-119916] [transport.py] [_log()] starting thread (client mode): 0x11780f10
2025-11-03T17:39:44.613 [DEBUG] [Thread-119916] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:39:44.628 [DEBUG] [Thread-119916] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:39:44.628 [INFO] [Thread-119916] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:39:44.636 [DEBUG] [Thread-119916] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:39:44.636 [DEBUG] [Thread-119916] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:39:44.636 [DEBUG] [Thread-119916] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:39:44.636 [DEBUG] [Thread-119916] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:39:44.636 [DEBUG] [Thread-119916] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:39:44.636 [DEBUG] [Thread-119916] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:39:44.636 [DEBUG] [Thread-119916] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:39:44.636 [DEBUG] [Thread-119916] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:39:44.636 [DEBUG] [Thread-119916] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:39:44.636 [DEBUG] [Thread-119916] [transport.py] [_log()] client lang: <none>
2025-11-03T17:39:44.636 [DEBUG] [Thread-119916] [transport.py] [_log()] server lang: <none>
2025-11-03T17:39:44.636 [DEBUG] [Thread-119916] [transport.py] [_log()] kex follows: False
2025-11-03T17:39:44.636 [DEBUG] [Thread-119916] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:39:44.636 [DEBUG] [Thread-119916] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:39:44.636 [DEBUG] [Thread-119916] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:39:44.636 [DEBUG] [Thread-119916] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:39:44.636 [DEBUG] [Thread-119916] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:39:44.636 [DEBUG] [Thread-119916] [transport.py] [_log()] Compression: none
2025-11-03T17:39:44.636 [DEBUG] [Thread-119916] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:39:44.692 [DEBUG] [Thread-119916] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:39:44.692 [DEBUG] [Thread-119916] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:39:44.692 [DEBUG] [Thread-119916] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:39:44.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:39:44.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:39:44.750 [DEBUG] [Thread-119916] [transport.py] [_log()] userauth is OK
2025-11-03T17:39:44.750 [DEBUG] [Thread-119916] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:39:44.750 [DEBUG] [Thread-119916] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:39:44.750 [DEBUG] [Thread-119916] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:39:44.750 [DEBUG] [Thread-119916] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:39:44.768 [INFO] [Thread-119916] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:39:44.768 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:39:44.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:39:45.584 [DEBUG] [Thread-119916] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:39:45.584 [DEBUG] [Thread-119916] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:39:45.632 [DEBUG] [Thread-119916] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:39:45.632 [DEBUG] [Thread-119916] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:39:45.640 [DEBUG] [Thread-119916] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:39:45.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:39:45.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:39:45.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:39:45.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:39:45.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:39:45.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:39:45.671 [DEBUG] [Thread-119916] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:39:53.863 [DEBUG] [Thread-119918 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:40:08.915 [DEBUG] [Thread-119919 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:40:15.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:40:15.695 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:40:15.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:40:16.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 39, 50), 45.63, 3.92, 0.0, 31.21, 25.22, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:40:16.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:39:50
2025-11-03T17:40:16.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:40:16.749 [DEBUG] [Thread-119920] [transport.py] [_log()] starting thread (client mode): 0x117821a0
2025-11-03T17:40:16.749 [DEBUG] [Thread-119920] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:40:16.768 [DEBUG] [Thread-119920] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:40:16.768 [INFO] [Thread-119920] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:40:16.771 [DEBUG] [Thread-119920] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:40:16.771 [DEBUG] [Thread-119920] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:40:16.772 [DEBUG] [Thread-119920] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:40:16.772 [DEBUG] [Thread-119920] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:40:16.772 [DEBUG] [Thread-119920] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:40:16.772 [DEBUG] [Thread-119920] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:40:16.772 [DEBUG] [Thread-119920] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:40:16.772 [DEBUG] [Thread-119920] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:40:16.772 [DEBUG] [Thread-119920] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:40:16.772 [DEBUG] [Thread-119920] [transport.py] [_log()] client lang: <none>
2025-11-03T17:40:16.772 [DEBUG] [Thread-119920] [transport.py] [_log()] server lang: <none>
2025-11-03T17:40:16.772 [DEBUG] [Thread-119920] [transport.py] [_log()] kex follows: False
2025-11-03T17:40:16.772 [DEBUG] [Thread-119920] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:40:16.772 [DEBUG] [Thread-119920] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:40:16.772 [DEBUG] [Thread-119920] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:40:16.773 [DEBUG] [Thread-119920] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:40:16.773 [DEBUG] [Thread-119920] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:40:16.773 [DEBUG] [Thread-119920] [transport.py] [_log()] Compression: none
2025-11-03T17:40:16.773 [DEBUG] [Thread-119920] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:40:16.791 [DEBUG] [Thread-119920] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:40:16.793 [DEBUG] [Thread-119920] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:40:16.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:40:16.794 [DEBUG] [Thread-119920] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:40:16.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:40:16.795 [DEBUG] [Thread-119920] [transport.py] [_log()] userauth is OK
2025-11-03T17:40:16.795 [DEBUG] [Thread-119920] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:40:16.795 [DEBUG] [Thread-119920] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:40:16.795 [DEBUG] [Thread-119920] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:40:16.795 [DEBUG] [Thread-119920] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:40:16.825 [INFO] [Thread-119920] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:40:16.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:40:18.446 [DEBUG] [Thread-119920] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:40:18.447 [DEBUG] [Thread-119920] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:40:18.447 [DEBUG] [Thread-119920] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:40:18.489 [DEBUG] [Thread-119920] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:40:18.489 [DEBUG] [Thread-119920] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:40:18.492 [DEBUG] [Thread-119920] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:40:18.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:40:18.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:40:18.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:40:18.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:40:18.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:40:18.637 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:40:18.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:40:18.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:40:18.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:40:18.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.652533 -999.00  +24.60  30.03      8  -10.80 1 1 2 1 1   887    0 35.55 -6.53 ----- 33.9 30.0 296.4 35.0 26.6 -34.2 26.9 -32.7 27.6 -32.3 27.9 -32.6
2025-11-03T17:40:18.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:40:18.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:40:18.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.652533
2025-11-03T17:40:18.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:40:18.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:40:18.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:40:18.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:40:18.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:40:18.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:39:50', tmtdew=45.63, humidity=3.92, cloud=0.0, wind=31.21, temperature=25.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:39:38.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:40:18.640 [DEBUG] [Thread-119920] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:40:18.723 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:40:18.735 [DEBUG] [Thread-119923] [transport.py] [_log()] starting thread (client mode): 0x117805e0
2025-11-03T17:40:18.735 [DEBUG] [Thread-119923] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:40:18.751 [DEBUG] [Thread-119923] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:40:18.751 [INFO] [Thread-119923] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:40:18.758 [DEBUG] [Thread-119923] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:40:18.759 [DEBUG] [Thread-119923] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:40:18.759 [DEBUG] [Thread-119923] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:40:18.759 [DEBUG] [Thread-119923] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:40:18.759 [DEBUG] [Thread-119923] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:40:18.759 [DEBUG] [Thread-119923] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:40:18.759 [DEBUG] [Thread-119923] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:40:18.759 [DEBUG] [Thread-119923] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:40:18.759 [DEBUG] [Thread-119923] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:40:18.759 [DEBUG] [Thread-119923] [transport.py] [_log()] client lang: <none>
2025-11-03T17:40:18.759 [DEBUG] [Thread-119923] [transport.py] [_log()] server lang: <none>
2025-11-03T17:40:18.759 [DEBUG] [Thread-119923] [transport.py] [_log()] kex follows: False
2025-11-03T17:40:18.759 [DEBUG] [Thread-119923] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:40:18.759 [DEBUG] [Thread-119923] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:40:18.759 [DEBUG] [Thread-119923] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:40:18.759 [DEBUG] [Thread-119923] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:40:18.759 [DEBUG] [Thread-119923] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:40:18.760 [DEBUG] [Thread-119923] [transport.py] [_log()] Compression: none
2025-11-03T17:40:18.760 [DEBUG] [Thread-119923] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:40:18.818 [DEBUG] [Thread-119923] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:40:18.819 [DEBUG] [Thread-119923] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:40:18.820 [DEBUG] [Thread-119923] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:40:18.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:40:18.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:40:18.874 [DEBUG] [Thread-119923] [transport.py] [_log()] userauth is OK
2025-11-03T17:40:18.874 [DEBUG] [Thread-119923] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:40:18.874 [DEBUG] [Thread-119923] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:40:18.874 [DEBUG] [Thread-119923] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:40:18.874 [DEBUG] [Thread-119923] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:40:18.887 [INFO] [Thread-119923] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:40:18.888 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:40:18.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:40:19.726 [DEBUG] [Thread-119923] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:40:19.726 [DEBUG] [Thread-119923] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:40:19.773 [DEBUG] [Thread-119923] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:40:19.773 [DEBUG] [Thread-119923] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:40:19.782 [DEBUG] [Thread-119923] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:40:19.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:40:19.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:40:19.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:40:19.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:40:19.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:40:19.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:40:19.815 [DEBUG] [Thread-119923] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:40:23.945 [DEBUG] [Thread-119925 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:40:25.044 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:40:25.045 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:40:33.723 [DEBUG] [Thread-119926 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:40:38.987 [DEBUG] [Thread-119927 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:40:49.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:40:49.826 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:40:49.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:40:50.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 40, 22), 45.73, 3.89, 0.0, 29.27, 25.22, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:40:50.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:40:22
2025-11-03T17:40:50.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:40:50.887 [DEBUG] [Thread-119928] [transport.py] [_log()] starting thread (client mode): 0x117e87f0
2025-11-03T17:40:50.887 [DEBUG] [Thread-119928] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:40:50.911 [DEBUG] [Thread-119928] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:40:50.911 [INFO] [Thread-119928] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:40:50.914 [DEBUG] [Thread-119928] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:40:50.914 [DEBUG] [Thread-119928] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:40:50.914 [DEBUG] [Thread-119928] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:40:50.914 [DEBUG] [Thread-119928] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:40:50.914 [DEBUG] [Thread-119928] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:40:50.914 [DEBUG] [Thread-119928] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:40:50.915 [DEBUG] [Thread-119928] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:40:50.915 [DEBUG] [Thread-119928] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:40:50.915 [DEBUG] [Thread-119928] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:40:50.915 [DEBUG] [Thread-119928] [transport.py] [_log()] client lang: <none>
2025-11-03T17:40:50.915 [DEBUG] [Thread-119928] [transport.py] [_log()] server lang: <none>
2025-11-03T17:40:50.915 [DEBUG] [Thread-119928] [transport.py] [_log()] kex follows: False
2025-11-03T17:40:50.915 [DEBUG] [Thread-119928] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:40:50.915 [DEBUG] [Thread-119928] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:40:50.915 [DEBUG] [Thread-119928] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:40:50.915 [DEBUG] [Thread-119928] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:40:50.915 [DEBUG] [Thread-119928] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:40:50.915 [DEBUG] [Thread-119928] [transport.py] [_log()] Compression: none
2025-11-03T17:40:50.915 [DEBUG] [Thread-119928] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:40:50.925 [DEBUG] [Thread-119928] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:40:50.925 [DEBUG] [Thread-119928] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:40:50.926 [DEBUG] [Thread-119928] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:40:50.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:40:50.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:40:50.928 [DEBUG] [Thread-119928] [transport.py] [_log()] userauth is OK
2025-11-03T17:40:50.928 [DEBUG] [Thread-119928] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:40:50.928 [DEBUG] [Thread-119928] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:40:50.928 [DEBUG] [Thread-119928] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:40:50.928 [DEBUG] [Thread-119928] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:40:50.964 [INFO] [Thread-119928] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:40:50.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:40:51.585 [DEBUG] [Thread-119928] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:40:51.585 [DEBUG] [Thread-119928] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:40:51.585 [DEBUG] [Thread-119928] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:40:51.625 [DEBUG] [Thread-119928] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:40:51.625 [DEBUG] [Thread-119928] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:40:51.628 [DEBUG] [Thread-119928] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:40:51.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:40:51.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:40:51.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:40:51.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:40:51.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:40:51.656 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:40:51.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:40:51.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:40:51.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:40:51.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.652880 -999.00  +24.50  34.15      8  -10.80 1 1 2 1 1   887    0 35.76 -9.83 ----- 34.1 34.1 295.2 41.8 26.6 -33.5 26.8 -32.4 27.5 -33.9 27.8 -32.7
2025-11-03T17:40:51.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:40:51.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:40:51.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.652880
2025-11-03T17:40:51.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:40:51.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:40:51.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:40:51.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:40:51.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:40:51.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:40:22', tmtdew=45.73, humidity=3.89, cloud=0.0, wind=29.27, temperature=25.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:40:08.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:40:51.657 [DEBUG] [Thread-119928] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:40:51.729 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:40:51.741 [DEBUG] [Thread-119931] [transport.py] [_log()] starting thread (client mode): 0x117eae90
2025-11-03T17:40:51.741 [DEBUG] [Thread-119931] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:40:51.755 [DEBUG] [Thread-119931] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:40:51.755 [INFO] [Thread-119931] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:40:51.762 [DEBUG] [Thread-119931] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:40:51.762 [DEBUG] [Thread-119931] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:40:51.763 [DEBUG] [Thread-119931] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:40:51.763 [DEBUG] [Thread-119931] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:40:51.763 [DEBUG] [Thread-119931] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:40:51.763 [DEBUG] [Thread-119931] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:40:51.763 [DEBUG] [Thread-119931] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:40:51.763 [DEBUG] [Thread-119931] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:40:51.763 [DEBUG] [Thread-119931] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:40:51.763 [DEBUG] [Thread-119931] [transport.py] [_log()] client lang: <none>
2025-11-03T17:40:51.763 [DEBUG] [Thread-119931] [transport.py] [_log()] server lang: <none>
2025-11-03T17:40:51.763 [DEBUG] [Thread-119931] [transport.py] [_log()] kex follows: False
2025-11-03T17:40:51.763 [DEBUG] [Thread-119931] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:40:51.763 [DEBUG] [Thread-119931] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:40:51.763 [DEBUG] [Thread-119931] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:40:51.763 [DEBUG] [Thread-119931] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:40:51.763 [DEBUG] [Thread-119931] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:40:51.763 [DEBUG] [Thread-119931] [transport.py] [_log()] Compression: none
2025-11-03T17:40:51.763 [DEBUG] [Thread-119931] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:40:51.820 [DEBUG] [Thread-119931] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:40:51.820 [DEBUG] [Thread-119931] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:40:51.820 [DEBUG] [Thread-119931] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:40:51.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:40:51.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:40:51.881 [DEBUG] [Thread-119931] [transport.py] [_log()] userauth is OK
2025-11-03T17:40:51.881 [DEBUG] [Thread-119931] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:40:51.881 [DEBUG] [Thread-119931] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:40:51.881 [DEBUG] [Thread-119931] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:40:51.881 [DEBUG] [Thread-119931] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:40:51.895 [INFO] [Thread-119931] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:40:51.895 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:40:51.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:40:52.719 [DEBUG] [Thread-119931] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:40:52.720 [DEBUG] [Thread-119931] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:40:52.768 [DEBUG] [Thread-119931] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:40:52.768 [DEBUG] [Thread-119931] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:40:52.778 [DEBUG] [Thread-119931] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:40:52.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:40:52.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:40:52.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:40:52.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:40:52.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:40:52.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:40:52.815 [DEBUG] [Thread-119931] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:40:54.031 [DEBUG] [Thread-119933 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:41:09.080 [DEBUG] [Thread-119934 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:41:22.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:41:22.835 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:41:22.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:41:23.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 40, 55), 45.31, 3.94, 0.0, 27.97, 25.26, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:41:23.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:40:55
2025-11-03T17:41:23.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:41:23.798 [DEBUG] [Thread-119935] [transport.py] [_log()] starting thread (client mode): 0x11799690
2025-11-03T17:41:23.798 [DEBUG] [Thread-119935] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:41:23.815 [DEBUG] [Thread-119935] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:41:23.816 [INFO] [Thread-119935] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:41:23.819 [DEBUG] [Thread-119935] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:41:23.819 [DEBUG] [Thread-119935] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:41:23.819 [DEBUG] [Thread-119935] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:41:23.819 [DEBUG] [Thread-119935] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:41:23.819 [DEBUG] [Thread-119935] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:41:23.819 [DEBUG] [Thread-119935] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:41:23.820 [DEBUG] [Thread-119935] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:41:23.820 [DEBUG] [Thread-119935] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:41:23.820 [DEBUG] [Thread-119935] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:41:23.820 [DEBUG] [Thread-119935] [transport.py] [_log()] client lang: <none>
2025-11-03T17:41:23.820 [DEBUG] [Thread-119935] [transport.py] [_log()] server lang: <none>
2025-11-03T17:41:23.820 [DEBUG] [Thread-119935] [transport.py] [_log()] kex follows: False
2025-11-03T17:41:23.820 [DEBUG] [Thread-119935] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:41:23.820 [DEBUG] [Thread-119935] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:41:23.820 [DEBUG] [Thread-119935] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:41:23.820 [DEBUG] [Thread-119935] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:41:23.820 [DEBUG] [Thread-119935] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:41:23.820 [DEBUG] [Thread-119935] [transport.py] [_log()] Compression: none
2025-11-03T17:41:23.820 [DEBUG] [Thread-119935] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:41:23.845 [DEBUG] [Thread-119935] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:41:23.846 [DEBUG] [Thread-119935] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:41:23.847 [DEBUG] [Thread-119935] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:41:23.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:41:23.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:41:23.851 [DEBUG] [Thread-119935] [transport.py] [_log()] userauth is OK
2025-11-03T17:41:23.851 [DEBUG] [Thread-119935] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:41:23.851 [DEBUG] [Thread-119935] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:41:23.851 [DEBUG] [Thread-119935] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:41:23.851 [DEBUG] [Thread-119935] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:41:23.888 [INFO] [Thread-119935] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:41:23.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:41:24.123 [DEBUG] [Thread-119937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:41:24.605 [DEBUG] [Thread-119935] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:41:24.605 [DEBUG] [Thread-119935] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:41:24.607 [DEBUG] [Thread-119935] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:41:24.637 [DEBUG] [Thread-119935] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:41:24.637 [DEBUG] [Thread-119935] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:41:24.641 [DEBUG] [Thread-119935] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:41:24.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:41:24.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:41:24.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:41:24.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:41:24.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:41:24.668 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:41:24.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:41:24.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:41:24.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:41:24.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.653227 -999.00  +24.50  29.53      8  -10.60 1 1 1 1 1   887    0 35.12 -14.55 ----- 32.2 29.5 302.2 38.7 26.6 -33.4 26.7 -32.2 27.5 -31.8 27.8 -32.7
2025-11-03T17:41:24.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:41:24.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:41:24.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.653227
2025-11-03T17:41:24.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:41:24.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:41:24.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:41:24.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:41:24.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:41:24.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:40:55', tmtdew=45.31, humidity=3.94, cloud=0.0, wind=27.97, temperature=25.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:40:38.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:41:24.679 [DEBUG] [Thread-119935] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:41:24.760 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:41:24.772 [DEBUG] [Thread-119939] [transport.py] [_log()] starting thread (client mode): 0x11783c40
2025-11-03T17:41:24.772 [DEBUG] [Thread-119939] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:41:24.789 [DEBUG] [Thread-119939] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:41:24.789 [INFO] [Thread-119939] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:41:24.797 [DEBUG] [Thread-119939] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:41:24.797 [DEBUG] [Thread-119939] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:41:24.797 [DEBUG] [Thread-119939] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:41:24.798 [DEBUG] [Thread-119939] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:41:24.798 [DEBUG] [Thread-119939] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:41:24.798 [DEBUG] [Thread-119939] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:41:24.798 [DEBUG] [Thread-119939] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:41:24.798 [DEBUG] [Thread-119939] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:41:24.798 [DEBUG] [Thread-119939] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:41:24.798 [DEBUG] [Thread-119939] [transport.py] [_log()] client lang: <none>
2025-11-03T17:41:24.798 [DEBUG] [Thread-119939] [transport.py] [_log()] server lang: <none>
2025-11-03T17:41:24.798 [DEBUG] [Thread-119939] [transport.py] [_log()] kex follows: False
2025-11-03T17:41:24.799 [DEBUG] [Thread-119939] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:41:24.799 [DEBUG] [Thread-119939] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:41:24.799 [DEBUG] [Thread-119939] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:41:24.799 [DEBUG] [Thread-119939] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:41:24.799 [DEBUG] [Thread-119939] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:41:24.799 [DEBUG] [Thread-119939] [transport.py] [_log()] Compression: none
2025-11-03T17:41:24.799 [DEBUG] [Thread-119939] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:41:24.861 [DEBUG] [Thread-119939] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:41:24.870 [DEBUG] [Thread-119939] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:41:24.871 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:41:24.871 [DEBUG] [Thread-119939] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:41:24.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:41:24.918 [DEBUG] [Thread-119939] [transport.py] [_log()] userauth is OK
2025-11-03T17:41:24.918 [DEBUG] [Thread-119939] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:41:24.919 [DEBUG] [Thread-119939] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:41:24.919 [DEBUG] [Thread-119939] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:41:24.919 [DEBUG] [Thread-119939] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:41:24.938 [INFO] [Thread-119939] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:41:24.939 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:41:24.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:41:25.185 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:41:25.186 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:41:25.770 [DEBUG] [Thread-119939] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:41:25.770 [DEBUG] [Thread-119939] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:41:25.818 [DEBUG] [Thread-119939] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:41:25.818 [DEBUG] [Thread-119939] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:41:25.828 [DEBUG] [Thread-119939] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:41:25.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:41:25.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:41:25.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:41:25.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:41:25.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:41:25.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:41:25.873 [DEBUG] [Thread-119939] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:41:33.895 [DEBUG] [Thread-119941 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:41:39.161 [DEBUG] [Thread-119942 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:41:54.207 [DEBUG] [Thread-119943 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:41:55.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:41:55.896 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:41:55.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:41:56.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 41, 27), 45.29, 3.95, 0.0, 29.87, 25.36, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:41:56.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:41:27
2025-11-03T17:41:56.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:41:56.906 [DEBUG] [Thread-119944] [transport.py] [_log()] starting thread (client mode): 0x117e8b50
2025-11-03T17:41:56.906 [DEBUG] [Thread-119944] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:41:56.926 [DEBUG] [Thread-119944] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:41:56.926 [INFO] [Thread-119944] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:41:56.937 [DEBUG] [Thread-119944] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:41:56.937 [DEBUG] [Thread-119944] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:41:56.937 [DEBUG] [Thread-119944] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:41:56.937 [DEBUG] [Thread-119944] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:41:56.937 [DEBUG] [Thread-119944] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:41:56.937 [DEBUG] [Thread-119944] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:41:56.937 [DEBUG] [Thread-119944] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:41:56.937 [DEBUG] [Thread-119944] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:41:56.937 [DEBUG] [Thread-119944] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:41:56.937 [DEBUG] [Thread-119944] [transport.py] [_log()] client lang: <none>
2025-11-03T17:41:56.937 [DEBUG] [Thread-119944] [transport.py] [_log()] server lang: <none>
2025-11-03T17:41:56.937 [DEBUG] [Thread-119944] [transport.py] [_log()] kex follows: False
2025-11-03T17:41:56.937 [DEBUG] [Thread-119944] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:41:56.937 [DEBUG] [Thread-119944] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:41:56.937 [DEBUG] [Thread-119944] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:41:56.937 [DEBUG] [Thread-119944] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:41:56.937 [DEBUG] [Thread-119944] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:41:56.937 [DEBUG] [Thread-119944] [transport.py] [_log()] Compression: none
2025-11-03T17:41:56.937 [DEBUG] [Thread-119944] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:41:56.955 [DEBUG] [Thread-119944] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:41:56.957 [DEBUG] [Thread-119944] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:41:56.957 [DEBUG] [Thread-119944] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:41:56.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:41:56.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:41:56.958 [DEBUG] [Thread-119944] [transport.py] [_log()] userauth is OK
2025-11-03T17:41:56.958 [DEBUG] [Thread-119944] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:41:56.958 [DEBUG] [Thread-119944] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:41:56.958 [DEBUG] [Thread-119944] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:41:56.958 [DEBUG] [Thread-119944] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:41:56.975 [INFO] [Thread-119944] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:41:56.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:41:57.596 [DEBUG] [Thread-119944] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:41:57.596 [DEBUG] [Thread-119944] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:41:57.597 [DEBUG] [Thread-119944] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:41:57.637 [DEBUG] [Thread-119944] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:41:57.637 [DEBUG] [Thread-119944] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:41:57.640 [DEBUG] [Thread-119944] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:41:57.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:41:57.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:41:57.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:41:57.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:41:57.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:41:57.663 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:41:57.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:41:57.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:41:57.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:41:57.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.653574 -999.00  +24.60  36.39      8  -10.60 1 1 2 1 1   887    0 34.66 -18.51 ----- 34.7 36.4 293.4 40.8 26.6 -33.5 26.8 -32.3 27.4 -33.1 27.8 -32.5
2025-11-03T17:41:57.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:41:57.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:41:57.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.653574
2025-11-03T17:41:57.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:41:57.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:41:57.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:41:57.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:41:57.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:41:57.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:41:27', tmtdew=45.29, humidity=3.95, cloud=0.0, wind=29.87, temperature=25.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:41:08.794', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:41:57.665 [DEBUG] [Thread-119944] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:41:57.736 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:41:57.748 [DEBUG] [Thread-119947] [transport.py] [_log()] starting thread (client mode): 0xed22590
2025-11-03T17:41:57.749 [DEBUG] [Thread-119947] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:41:57.766 [DEBUG] [Thread-119947] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:41:57.766 [INFO] [Thread-119947] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:41:57.774 [DEBUG] [Thread-119947] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:41:57.774 [DEBUG] [Thread-119947] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:41:57.774 [DEBUG] [Thread-119947] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:41:57.774 [DEBUG] [Thread-119947] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:41:57.774 [DEBUG] [Thread-119947] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:41:57.774 [DEBUG] [Thread-119947] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:41:57.774 [DEBUG] [Thread-119947] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:41:57.774 [DEBUG] [Thread-119947] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:41:57.774 [DEBUG] [Thread-119947] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:41:57.774 [DEBUG] [Thread-119947] [transport.py] [_log()] client lang: <none>
2025-11-03T17:41:57.774 [DEBUG] [Thread-119947] [transport.py] [_log()] server lang: <none>
2025-11-03T17:41:57.775 [DEBUG] [Thread-119947] [transport.py] [_log()] kex follows: False
2025-11-03T17:41:57.775 [DEBUG] [Thread-119947] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:41:57.775 [DEBUG] [Thread-119947] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:41:57.775 [DEBUG] [Thread-119947] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:41:57.775 [DEBUG] [Thread-119947] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:41:57.775 [DEBUG] [Thread-119947] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:41:57.775 [DEBUG] [Thread-119947] [transport.py] [_log()] Compression: none
2025-11-03T17:41:57.775 [DEBUG] [Thread-119947] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:41:57.832 [DEBUG] [Thread-119947] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:41:57.832 [DEBUG] [Thread-119947] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:41:57.832 [DEBUG] [Thread-119947] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:41:57.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:41:57.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:41:57.889 [DEBUG] [Thread-119947] [transport.py] [_log()] userauth is OK
2025-11-03T17:41:57.889 [DEBUG] [Thread-119947] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:41:57.889 [DEBUG] [Thread-119947] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:41:57.889 [DEBUG] [Thread-119947] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:41:57.889 [DEBUG] [Thread-119947] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:41:57.903 [INFO] [Thread-119947] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:41:57.903 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:41:57.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:41:58.699 [DEBUG] [Thread-119947] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:41:58.699 [DEBUG] [Thread-119947] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:41:58.748 [DEBUG] [Thread-119947] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:41:58.748 [DEBUG] [Thread-119947] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:41:58.757 [DEBUG] [Thread-119947] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:41:58.767 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:41:58.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:41:58.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:41:58.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:41:58.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:41:58.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:41:58.795 [DEBUG] [Thread-119947] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:42:09.251 [DEBUG] [Thread-119949 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:42:24.307 [DEBUG] [Thread-119950 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:42:25.335 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:42:25.336 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:42:28.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:42:28.818 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:42:28.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:42:29.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 41, 59), 45.1, 3.95, 0.0, 29.55, 25.34, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:42:29.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:41:59
2025-11-03T17:42:29.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:42:29.756 [DEBUG] [Thread-119951] [transport.py] [_log()] starting thread (client mode): 0xed21000
2025-11-03T17:42:29.757 [DEBUG] [Thread-119951] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:42:29.777 [DEBUG] [Thread-119951] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:42:29.777 [INFO] [Thread-119951] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:42:29.778 [DEBUG] [Thread-119951] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:42:29.779 [DEBUG] [Thread-119951] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:42:29.779 [DEBUG] [Thread-119951] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:42:29.779 [DEBUG] [Thread-119951] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:42:29.779 [DEBUG] [Thread-119951] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:42:29.779 [DEBUG] [Thread-119951] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:42:29.779 [DEBUG] [Thread-119951] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:42:29.779 [DEBUG] [Thread-119951] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:42:29.779 [DEBUG] [Thread-119951] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:42:29.779 [DEBUG] [Thread-119951] [transport.py] [_log()] client lang: <none>
2025-11-03T17:42:29.779 [DEBUG] [Thread-119951] [transport.py] [_log()] server lang: <none>
2025-11-03T17:42:29.779 [DEBUG] [Thread-119951] [transport.py] [_log()] kex follows: False
2025-11-03T17:42:29.779 [DEBUG] [Thread-119951] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:42:29.779 [DEBUG] [Thread-119951] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:42:29.779 [DEBUG] [Thread-119951] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:42:29.779 [DEBUG] [Thread-119951] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:42:29.779 [DEBUG] [Thread-119951] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:42:29.779 [DEBUG] [Thread-119951] [transport.py] [_log()] Compression: none
2025-11-03T17:42:29.779 [DEBUG] [Thread-119951] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:42:29.797 [DEBUG] [Thread-119951] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:42:29.798 [DEBUG] [Thread-119951] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:42:29.798 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:42:29.799 [DEBUG] [Thread-119951] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:42:29.800 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:42:29.801 [DEBUG] [Thread-119951] [transport.py] [_log()] userauth is OK
2025-11-03T17:42:29.801 [DEBUG] [Thread-119951] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:42:29.801 [DEBUG] [Thread-119951] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:42:29.801 [DEBUG] [Thread-119951] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:42:29.801 [DEBUG] [Thread-119951] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:42:29.826 [INFO] [Thread-119951] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:42:29.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:42:30.548 [DEBUG] [Thread-119951] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:42:30.548 [DEBUG] [Thread-119951] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:42:30.549 [DEBUG] [Thread-119951] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:42:30.589 [DEBUG] [Thread-119951] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:42:30.589 [DEBUG] [Thread-119951] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:42:30.593 [DEBUG] [Thread-119951] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:42:30.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:42:30.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:42:30.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:42:30.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:42:30.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:42:30.625 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:42:30.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:42:30.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:42:30.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:42:30.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.653922 -999.00  +24.70  38.38      8  -10.50 1 1 2 1 1   887    0 34.80 -20.69 ----- 32.5 38.4 286.4 42.9 26.6 -33.0 26.8 -32.0 27.5 -32.9 27.7 -32.6
2025-11-03T17:42:30.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:42:30.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:42:30.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.653922
2025-11-03T17:42:30.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:42:30.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:42:30.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:42:30.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:42:30.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:42:30.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:41:59', tmtdew=45.1, humidity=3.95, cloud=0.0, wind=29.55, temperature=25.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:41:38.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:42:30.628 [DEBUG] [Thread-119951] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:42:30.717 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:42:30.731 [DEBUG] [Thread-119954] [transport.py] [_log()] starting thread (client mode): 0xed201f0
2025-11-03T17:42:30.731 [DEBUG] [Thread-119954] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:42:30.748 [DEBUG] [Thread-119954] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:42:30.748 [INFO] [Thread-119954] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:42:30.756 [DEBUG] [Thread-119954] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:42:30.756 [DEBUG] [Thread-119954] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:42:30.756 [DEBUG] [Thread-119954] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:42:30.756 [DEBUG] [Thread-119954] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:42:30.756 [DEBUG] [Thread-119954] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:42:30.756 [DEBUG] [Thread-119954] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:42:30.756 [DEBUG] [Thread-119954] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:42:30.756 [DEBUG] [Thread-119954] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:42:30.756 [DEBUG] [Thread-119954] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:42:30.756 [DEBUG] [Thread-119954] [transport.py] [_log()] client lang: <none>
2025-11-03T17:42:30.756 [DEBUG] [Thread-119954] [transport.py] [_log()] server lang: <none>
2025-11-03T17:42:30.756 [DEBUG] [Thread-119954] [transport.py] [_log()] kex follows: False
2025-11-03T17:42:30.756 [DEBUG] [Thread-119954] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:42:30.757 [DEBUG] [Thread-119954] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:42:30.757 [DEBUG] [Thread-119954] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:42:30.757 [DEBUG] [Thread-119954] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:42:30.757 [DEBUG] [Thread-119954] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:42:30.757 [DEBUG] [Thread-119954] [transport.py] [_log()] Compression: none
2025-11-03T17:42:30.757 [DEBUG] [Thread-119954] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:42:30.811 [DEBUG] [Thread-119954] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:42:30.812 [DEBUG] [Thread-119954] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:42:30.812 [DEBUG] [Thread-119954] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:42:30.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:42:30.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:42:30.869 [DEBUG] [Thread-119954] [transport.py] [_log()] userauth is OK
2025-11-03T17:42:30.869 [DEBUG] [Thread-119954] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:42:30.869 [DEBUG] [Thread-119954] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:42:30.869 [DEBUG] [Thread-119954] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:42:30.869 [DEBUG] [Thread-119954] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:42:30.888 [INFO] [Thread-119954] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:42:30.889 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:42:30.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:42:31.735 [DEBUG] [Thread-119954] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:42:31.735 [DEBUG] [Thread-119954] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:42:31.783 [DEBUG] [Thread-119954] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:42:31.783 [DEBUG] [Thread-119954] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:42:31.791 [DEBUG] [Thread-119954] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:42:31.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:42:31.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:42:31.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:42:31.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:42:31.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:42:31.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:42:31.829 [DEBUG] [Thread-119954] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:42:34.092 [DEBUG] [Thread-119956 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:42:39.356 [DEBUG] [Thread-119957 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:42:54.410 [DEBUG] [Thread-119958 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:43:01.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:43:01.839 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:43:01.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:43:02.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 42, 32), 45.09, 3.95, 0.0, 33.05, 25.31, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:43:02.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:42:32
2025-11-03T17:43:02.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:43:02.869 [DEBUG] [Thread-119959] [transport.py] [_log()] starting thread (client mode): 0x117e81c0
2025-11-03T17:43:02.869 [DEBUG] [Thread-119959] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:43:02.889 [DEBUG] [Thread-119959] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:43:02.889 [INFO] [Thread-119959] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:43:02.892 [DEBUG] [Thread-119959] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:43:02.892 [DEBUG] [Thread-119959] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:43:02.892 [DEBUG] [Thread-119959] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:43:02.892 [DEBUG] [Thread-119959] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:43:02.892 [DEBUG] [Thread-119959] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:43:02.892 [DEBUG] [Thread-119959] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:43:02.892 [DEBUG] [Thread-119959] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:43:02.892 [DEBUG] [Thread-119959] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:43:02.892 [DEBUG] [Thread-119959] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:43:02.892 [DEBUG] [Thread-119959] [transport.py] [_log()] client lang: <none>
2025-11-03T17:43:02.892 [DEBUG] [Thread-119959] [transport.py] [_log()] server lang: <none>
2025-11-03T17:43:02.892 [DEBUG] [Thread-119959] [transport.py] [_log()] kex follows: False
2025-11-03T17:43:02.892 [DEBUG] [Thread-119959] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:43:02.892 [DEBUG] [Thread-119959] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:43:02.892 [DEBUG] [Thread-119959] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:43:02.892 [DEBUG] [Thread-119959] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:43:02.892 [DEBUG] [Thread-119959] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:43:02.892 [DEBUG] [Thread-119959] [transport.py] [_log()] Compression: none
2025-11-03T17:43:02.892 [DEBUG] [Thread-119959] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:43:02.914 [DEBUG] [Thread-119959] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:43:02.915 [DEBUG] [Thread-119959] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:43:02.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:43:02.916 [DEBUG] [Thread-119959] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:43:02.917 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:43:02.918 [DEBUG] [Thread-119959] [transport.py] [_log()] userauth is OK
2025-11-03T17:43:02.918 [DEBUG] [Thread-119959] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:43:02.918 [DEBUG] [Thread-119959] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:43:02.918 [DEBUG] [Thread-119959] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:43:02.918 [DEBUG] [Thread-119959] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:43:02.954 [INFO] [Thread-119959] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:43:02.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:43:03.588 [DEBUG] [Thread-119959] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:43:03.588 [DEBUG] [Thread-119959] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:43:03.588 [DEBUG] [Thread-119959] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:43:03.629 [DEBUG] [Thread-119959] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:43:03.629 [DEBUG] [Thread-119959] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:43:03.632 [DEBUG] [Thread-119959] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:43:03.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:43:03.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:43:03.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:43:03.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:43:03.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:43:03.660 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:43:03.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:43:03.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:43:03.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:43:03.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.654269 -999.00  +24.70  36.35      8  -10.40 1 1 2 1 1   887    0 34.19 -20.85 ----- 30.0 36.4 299.4 41.7 26.5 -33.3 26.7 -32.3 27.4 -31.9 27.7 -32.7
2025-11-03T17:43:03.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:43:03.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:43:03.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.654269
2025-11-03T17:43:03.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:43:03.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:43:03.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:43:03.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:43:03.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:43:03.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:42:32', tmtdew=45.09, humidity=3.95, cloud=0.0, wind=33.05, temperature=25.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:42:08.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:43:03.661 [DEBUG] [Thread-119959] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:43:03.733 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:43:03.744 [DEBUG] [Thread-119962] [transport.py] [_log()] starting thread (client mode): 0x141d91e0
2025-11-03T17:43:03.744 [DEBUG] [Thread-119962] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:43:03.758 [DEBUG] [Thread-119962] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:43:03.758 [INFO] [Thread-119962] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:43:03.766 [DEBUG] [Thread-119962] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:43:03.766 [DEBUG] [Thread-119962] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:43:03.766 [DEBUG] [Thread-119962] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:43:03.766 [DEBUG] [Thread-119962] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:43:03.766 [DEBUG] [Thread-119962] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:43:03.766 [DEBUG] [Thread-119962] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:43:03.766 [DEBUG] [Thread-119962] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:43:03.766 [DEBUG] [Thread-119962] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:43:03.766 [DEBUG] [Thread-119962] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:43:03.766 [DEBUG] [Thread-119962] [transport.py] [_log()] client lang: <none>
2025-11-03T17:43:03.766 [DEBUG] [Thread-119962] [transport.py] [_log()] server lang: <none>
2025-11-03T17:43:03.766 [DEBUG] [Thread-119962] [transport.py] [_log()] kex follows: False
2025-11-03T17:43:03.766 [DEBUG] [Thread-119962] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:43:03.766 [DEBUG] [Thread-119962] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:43:03.766 [DEBUG] [Thread-119962] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:43:03.766 [DEBUG] [Thread-119962] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:43:03.766 [DEBUG] [Thread-119962] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:43:03.766 [DEBUG] [Thread-119962] [transport.py] [_log()] Compression: none
2025-11-03T17:43:03.766 [DEBUG] [Thread-119962] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:43:03.824 [DEBUG] [Thread-119962] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:43:03.824 [DEBUG] [Thread-119962] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:43:03.825 [DEBUG] [Thread-119962] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:43:03.825 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:43:03.825 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:43:03.881 [DEBUG] [Thread-119962] [transport.py] [_log()] userauth is OK
2025-11-03T17:43:03.881 [DEBUG] [Thread-119962] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:43:03.881 [DEBUG] [Thread-119962] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:43:03.881 [DEBUG] [Thread-119962] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:43:03.881 [DEBUG] [Thread-119962] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:43:03.895 [INFO] [Thread-119962] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:43:03.896 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:43:03.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:43:04.714 [DEBUG] [Thread-119962] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:43:04.715 [DEBUG] [Thread-119962] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:43:04.763 [DEBUG] [Thread-119962] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:43:04.763 [DEBUG] [Thread-119962] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:43:04.773 [DEBUG] [Thread-119962] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:43:04.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:43:04.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:43:04.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:43:04.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:43:04.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:43:04.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:43:04.810 [DEBUG] [Thread-119962] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:43:09.441 [DEBUG] [Thread-119964 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:43:24.504 [DEBUG] [Thread-119965 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:43:25.477 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:43:25.478 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:43:34.176 [DEBUG] [Thread-119966 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:43:34.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:43:34.832 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:43:34.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:43:35.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 43, 4), 45.03, 3.97, 0.0, 35.04, 25.27, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:43:35.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:43:04
2025-11-03T17:43:35.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:43:35.898 [DEBUG] [Thread-119967] [transport.py] [_log()] starting thread (client mode): 0x117eab30
2025-11-03T17:43:35.898 [DEBUG] [Thread-119967] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:43:35.908 [DEBUG] [Thread-119967] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:43:35.909 [INFO] [Thread-119967] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:43:35.910 [DEBUG] [Thread-119967] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:43:35.910 [DEBUG] [Thread-119967] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:43:35.910 [DEBUG] [Thread-119967] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:43:35.910 [DEBUG] [Thread-119967] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:43:35.910 [DEBUG] [Thread-119967] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:43:35.910 [DEBUG] [Thread-119967] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:43:35.910 [DEBUG] [Thread-119967] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:43:35.910 [DEBUG] [Thread-119967] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:43:35.910 [DEBUG] [Thread-119967] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:43:35.910 [DEBUG] [Thread-119967] [transport.py] [_log()] client lang: <none>
2025-11-03T17:43:35.910 [DEBUG] [Thread-119967] [transport.py] [_log()] server lang: <none>
2025-11-03T17:43:35.910 [DEBUG] [Thread-119967] [transport.py] [_log()] kex follows: False
2025-11-03T17:43:35.910 [DEBUG] [Thread-119967] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:43:35.910 [DEBUG] [Thread-119967] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:43:35.910 [DEBUG] [Thread-119967] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:43:35.910 [DEBUG] [Thread-119967] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:43:35.910 [DEBUG] [Thread-119967] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:43:35.910 [DEBUG] [Thread-119967] [transport.py] [_log()] Compression: none
2025-11-03T17:43:35.910 [DEBUG] [Thread-119967] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:43:35.919 [DEBUG] [Thread-119967] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:43:35.919 [DEBUG] [Thread-119967] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:43:35.919 [DEBUG] [Thread-119967] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:43:35.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:43:35.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:43:35.920 [DEBUG] [Thread-119967] [transport.py] [_log()] userauth is OK
2025-11-03T17:43:35.920 [DEBUG] [Thread-119967] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:43:35.920 [DEBUG] [Thread-119967] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:43:35.920 [DEBUG] [Thread-119967] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:43:35.920 [DEBUG] [Thread-119967] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:43:35.929 [INFO] [Thread-119967] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:43:35.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:43:36.634 [DEBUG] [Thread-119967] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:43:36.634 [DEBUG] [Thread-119967] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:43:36.634 [DEBUG] [Thread-119967] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:43:36.675 [DEBUG] [Thread-119967] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:43:36.675 [DEBUG] [Thread-119967] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:43:36.677 [DEBUG] [Thread-119967] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:43:36.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:43:36.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:43:36.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:43:36.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:43:36.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:43:36.696 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:43:36.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:43:36.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:43:36.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:43:36.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.654616 -999.00  +24.60  33.75      8  -10.40 1 1 2 1 1   887    0 33.99 -24.42 ----- 32.4 33.8 305.6 45.8 26.4 -33.6 26.7 -32.6 27.4 -31.8 27.6 -32.9
2025-11-03T17:43:36.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:43:36.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:43:36.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.654616
2025-11-03T17:43:36.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:43:36.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:43:36.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:43:36.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:43:36.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:43:36.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:43:04', tmtdew=45.03, humidity=3.97, cloud=0.0, wind=35.04, temperature=25.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:42:38.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:43:36.698 [DEBUG] [Thread-119967] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:43:36.770 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:43:36.782 [DEBUG] [Thread-119970] [transport.py] [_log()] starting thread (client mode): 0x1179a5f0
2025-11-03T17:43:36.782 [DEBUG] [Thread-119970] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:43:36.797 [DEBUG] [Thread-119970] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:43:36.797 [INFO] [Thread-119970] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:43:36.804 [DEBUG] [Thread-119970] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:43:36.804 [DEBUG] [Thread-119970] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:43:36.804 [DEBUG] [Thread-119970] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:43:36.804 [DEBUG] [Thread-119970] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:43:36.804 [DEBUG] [Thread-119970] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:43:36.804 [DEBUG] [Thread-119970] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:43:36.804 [DEBUG] [Thread-119970] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:43:36.804 [DEBUG] [Thread-119970] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:43:36.804 [DEBUG] [Thread-119970] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:43:36.805 [DEBUG] [Thread-119970] [transport.py] [_log()] client lang: <none>
2025-11-03T17:43:36.805 [DEBUG] [Thread-119970] [transport.py] [_log()] server lang: <none>
2025-11-03T17:43:36.805 [DEBUG] [Thread-119970] [transport.py] [_log()] kex follows: False
2025-11-03T17:43:36.805 [DEBUG] [Thread-119970] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:43:36.805 [DEBUG] [Thread-119970] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:43:36.805 [DEBUG] [Thread-119970] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:43:36.805 [DEBUG] [Thread-119970] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:43:36.805 [DEBUG] [Thread-119970] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:43:36.805 [DEBUG] [Thread-119970] [transport.py] [_log()] Compression: none
2025-11-03T17:43:36.805 [DEBUG] [Thread-119970] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:43:36.860 [DEBUG] [Thread-119970] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:43:36.860 [DEBUG] [Thread-119970] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:43:36.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:43:36.861 [DEBUG] [Thread-119970] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:43:36.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:43:36.917 [DEBUG] [Thread-119970] [transport.py] [_log()] userauth is OK
2025-11-03T17:43:36.917 [DEBUG] [Thread-119970] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:43:36.917 [DEBUG] [Thread-119970] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:43:36.917 [DEBUG] [Thread-119970] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:43:36.917 [DEBUG] [Thread-119970] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:43:36.931 [INFO] [Thread-119970] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:43:36.931 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:43:36.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:43:37.804 [DEBUG] [Thread-119970] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:43:37.804 [DEBUG] [Thread-119970] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:43:37.851 [DEBUG] [Thread-119970] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:43:37.851 [DEBUG] [Thread-119970] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:43:37.859 [DEBUG] [Thread-119970] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:43:37.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:43:37.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:43:37.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:43:37.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:43:37.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:43:37.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:43:37.891 [DEBUG] [Thread-119970] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:43:39.538 [DEBUG] [Thread-119972 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:43:54.581 [DEBUG] [Thread-119973 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:44:07.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:44:07.906 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:44:07.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:44:08.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 43, 36), 44.93, 3.97, 0.0, 39.24, 25.06, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:44:08.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:43:36
2025-11-03T17:44:08.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:44:08.974 [DEBUG] [Thread-119974] [transport.py] [_log()] starting thread (client mode): 0xed21a20
2025-11-03T17:44:08.974 [DEBUG] [Thread-119974] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:44:08.995 [DEBUG] [Thread-119974] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:44:08.996 [INFO] [Thread-119974] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:44:08.999 [DEBUG] [Thread-119974] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:44:08.999 [DEBUG] [Thread-119974] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:44:08.999 [DEBUG] [Thread-119974] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:44:08.999 [DEBUG] [Thread-119974] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:44:08.999 [DEBUG] [Thread-119974] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:44:08.999 [DEBUG] [Thread-119974] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:44:08.999 [DEBUG] [Thread-119974] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:44:08.999 [DEBUG] [Thread-119974] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:44:08.999 [DEBUG] [Thread-119974] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:44:08.999 [DEBUG] [Thread-119974] [transport.py] [_log()] client lang: <none>
2025-11-03T17:44:08.999 [DEBUG] [Thread-119974] [transport.py] [_log()] server lang: <none>
2025-11-03T17:44:08.999 [DEBUG] [Thread-119974] [transport.py] [_log()] kex follows: False
2025-11-03T17:44:08.999 [DEBUG] [Thread-119974] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:44:08.999 [DEBUG] [Thread-119974] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:44:08.999 [DEBUG] [Thread-119974] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:44:08.999 [DEBUG] [Thread-119974] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:44:08.999 [DEBUG] [Thread-119974] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:44:08.999 [DEBUG] [Thread-119974] [transport.py] [_log()] Compression: none
2025-11-03T17:44:08.999 [DEBUG] [Thread-119974] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:44:09.014 [DEBUG] [Thread-119974] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:44:09.015 [DEBUG] [Thread-119974] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:44:09.015 [DEBUG] [Thread-119974] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:44:09.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:44:09.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:44:09.016 [DEBUG] [Thread-119974] [transport.py] [_log()] userauth is OK
2025-11-03T17:44:09.016 [DEBUG] [Thread-119974] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:44:09.016 [DEBUG] [Thread-119974] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:44:09.016 [DEBUG] [Thread-119974] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:44:09.016 [DEBUG] [Thread-119974] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:44:09.026 [INFO] [Thread-119974] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:44:09.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:44:09.615 [DEBUG] [Thread-119974] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:44:09.615 [DEBUG] [Thread-119974] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:44:09.617 [DEBUG] [Thread-119976 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:44:09.618 [DEBUG] [Thread-119974] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:44:09.656 [DEBUG] [Thread-119974] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:44:09.657 [DEBUG] [Thread-119974] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:44:09.659 [DEBUG] [Thread-119974] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:44:09.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:44:09.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:44:09.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:44:09.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:44:09.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:44:09.690 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:44:09.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:44:09.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:44:09.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:44:09.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.654963 -999.00  +24.70  37.56      8  -10.40 1 1 2 1 1   887    0 34.40 -24.77 ----- 36.5 37.6 311.2 48.9 26.4 -33.3 26.6 -32.1 27.3 -32.5 27.6 -32.4
2025-11-03T17:44:09.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:44:09.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:44:09.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.654963
2025-11-03T17:44:09.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:44:09.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:44:09.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:44:09.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:44:09.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:44:09.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:43:36', tmtdew=44.93, humidity=3.97, cloud=0.0, wind=39.24, temperature=25.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:43:08.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:44:09.693 [DEBUG] [Thread-119974] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:44:09.781 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:44:09.793 [DEBUG] [Thread-119978] [transport.py] [_log()] starting thread (client mode): 0x11799900
2025-11-03T17:44:09.793 [DEBUG] [Thread-119978] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:44:09.808 [DEBUG] [Thread-119978] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:44:09.808 [INFO] [Thread-119978] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:44:09.815 [DEBUG] [Thread-119978] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:44:09.816 [DEBUG] [Thread-119978] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:44:09.816 [DEBUG] [Thread-119978] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:44:09.816 [DEBUG] [Thread-119978] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:44:09.816 [DEBUG] [Thread-119978] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:44:09.816 [DEBUG] [Thread-119978] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:44:09.816 [DEBUG] [Thread-119978] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:44:09.816 [DEBUG] [Thread-119978] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:44:09.816 [DEBUG] [Thread-119978] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:44:09.816 [DEBUG] [Thread-119978] [transport.py] [_log()] client lang: <none>
2025-11-03T17:44:09.816 [DEBUG] [Thread-119978] [transport.py] [_log()] server lang: <none>
2025-11-03T17:44:09.816 [DEBUG] [Thread-119978] [transport.py] [_log()] kex follows: False
2025-11-03T17:44:09.816 [DEBUG] [Thread-119978] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:44:09.816 [DEBUG] [Thread-119978] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:44:09.816 [DEBUG] [Thread-119978] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:44:09.816 [DEBUG] [Thread-119978] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:44:09.816 [DEBUG] [Thread-119978] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:44:09.817 [DEBUG] [Thread-119978] [transport.py] [_log()] Compression: none
2025-11-03T17:44:09.817 [DEBUG] [Thread-119978] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:44:09.874 [DEBUG] [Thread-119978] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:44:09.875 [DEBUG] [Thread-119978] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:44:09.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:44:09.876 [DEBUG] [Thread-119978] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:44:09.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:44:09.935 [DEBUG] [Thread-119978] [transport.py] [_log()] userauth is OK
2025-11-03T17:44:09.935 [DEBUG] [Thread-119978] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:44:09.935 [DEBUG] [Thread-119978] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:44:09.935 [DEBUG] [Thread-119978] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:44:09.936 [DEBUG] [Thread-119978] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:44:09.955 [INFO] [Thread-119978] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:44:09.955 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:44:09.956 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:44:10.763 [DEBUG] [Thread-119978] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:44:10.763 [DEBUG] [Thread-119978] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:44:10.810 [DEBUG] [Thread-119978] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:44:10.810 [DEBUG] [Thread-119978] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:44:10.819 [DEBUG] [Thread-119978] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:44:10.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:44:10.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:44:10.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:44:10.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:44:10.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:44:10.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:44:10.853 [DEBUG] [Thread-119978] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:44:24.649 [DEBUG] [Thread-119980 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:44:25.617 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:44:25.618 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:44:34.247 [DEBUG] [Thread-119981 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:44:39.708 [DEBUG] [Thread-119982 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:44:40.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:44:40.876 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:44:40.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:44:41.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 44, 10), 44.71, 4.04, 0.0, 38.99, 24.97, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:44:41.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:44:10
2025-11-03T17:44:41.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:44:41.930 [DEBUG] [Thread-119983] [transport.py] [_log()] starting thread (client mode): 0x141dbdc0
2025-11-03T17:44:41.930 [DEBUG] [Thread-119983] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:44:41.949 [DEBUG] [Thread-119983] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:44:41.949 [INFO] [Thread-119983] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:44:41.958 [DEBUG] [Thread-119983] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:44:41.959 [DEBUG] [Thread-119983] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:44:41.959 [DEBUG] [Thread-119983] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:44:41.959 [DEBUG] [Thread-119983] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:44:41.959 [DEBUG] [Thread-119983] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:44:41.959 [DEBUG] [Thread-119983] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:44:41.959 [DEBUG] [Thread-119983] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:44:41.959 [DEBUG] [Thread-119983] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:44:41.959 [DEBUG] [Thread-119983] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:44:41.959 [DEBUG] [Thread-119983] [transport.py] [_log()] client lang: <none>
2025-11-03T17:44:41.959 [DEBUG] [Thread-119983] [transport.py] [_log()] server lang: <none>
2025-11-03T17:44:41.959 [DEBUG] [Thread-119983] [transport.py] [_log()] kex follows: False
2025-11-03T17:44:41.959 [DEBUG] [Thread-119983] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:44:41.959 [DEBUG] [Thread-119983] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:44:41.959 [DEBUG] [Thread-119983] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:44:41.959 [DEBUG] [Thread-119983] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:44:41.959 [DEBUG] [Thread-119983] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:44:41.959 [DEBUG] [Thread-119983] [transport.py] [_log()] Compression: none
2025-11-03T17:44:41.959 [DEBUG] [Thread-119983] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:44:41.976 [DEBUG] [Thread-119983] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:44:41.977 [DEBUG] [Thread-119983] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:44:41.977 [DEBUG] [Thread-119983] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:44:41.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:44:41.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:44:41.980 [DEBUG] [Thread-119983] [transport.py] [_log()] userauth is OK
2025-11-03T17:44:41.980 [DEBUG] [Thread-119983] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:44:41.980 [DEBUG] [Thread-119983] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:44:41.981 [DEBUG] [Thread-119983] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:44:41.981 [DEBUG] [Thread-119983] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:44:42.003 [INFO] [Thread-119983] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:44:42.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:44:42.756 [DEBUG] [Thread-119983] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:44:42.756 [DEBUG] [Thread-119983] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:44:42.756 [DEBUG] [Thread-119983] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:44:42.797 [DEBUG] [Thread-119983] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:44:42.797 [DEBUG] [Thread-119983] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:44:42.799 [DEBUG] [Thread-119983] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:44:42.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:44:42.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:44:42.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:44:42.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:44:42.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:44:42.816 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:44:42.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:44:42.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:44:42.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:44:42.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.655658 -999.00  +24.60  39.04      8  -10.40 1 1 2 1 1   887    0 35.01 -29.88 ----- 39.2 39.0 301.6 48.2 26.4 -33.8 26.6 -32.5 27.3 -31.7 27.6 -32.5
2025-11-03T17:44:42.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:44:42.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:44:42.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.655658
2025-11-03T17:44:42.825 [DEBUG] [Thread-119983] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:44:42.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:44:42.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:44:42.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:44:42.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:44:42.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:44:42.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:44:10', tmtdew=44.71, humidity=4.04, cloud=0.0, wind=38.99, temperature=24.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:44:08.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:44:42.898 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:44:42.910 [DEBUG] [Thread-119986] [transport.py] [_log()] starting thread (client mode): 0xeda07f0
2025-11-03T17:44:42.910 [DEBUG] [Thread-119986] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:44:42.925 [DEBUG] [Thread-119986] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:44:42.925 [INFO] [Thread-119986] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:44:42.933 [DEBUG] [Thread-119986] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:44:42.933 [DEBUG] [Thread-119986] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:44:42.933 [DEBUG] [Thread-119986] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:44:42.933 [DEBUG] [Thread-119986] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:44:42.933 [DEBUG] [Thread-119986] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:44:42.933 [DEBUG] [Thread-119986] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:44:42.933 [DEBUG] [Thread-119986] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:44:42.933 [DEBUG] [Thread-119986] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:44:42.933 [DEBUG] [Thread-119986] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:44:42.933 [DEBUG] [Thread-119986] [transport.py] [_log()] client lang: <none>
2025-11-03T17:44:42.933 [DEBUG] [Thread-119986] [transport.py] [_log()] server lang: <none>
2025-11-03T17:44:42.933 [DEBUG] [Thread-119986] [transport.py] [_log()] kex follows: False
2025-11-03T17:44:42.933 [DEBUG] [Thread-119986] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:44:42.933 [DEBUG] [Thread-119986] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:44:42.933 [DEBUG] [Thread-119986] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:44:42.933 [DEBUG] [Thread-119986] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:44:42.933 [DEBUG] [Thread-119986] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:44:42.933 [DEBUG] [Thread-119986] [transport.py] [_log()] Compression: none
2025-11-03T17:44:42.933 [DEBUG] [Thread-119986] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:44:42.988 [DEBUG] [Thread-119986] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:44:42.988 [DEBUG] [Thread-119986] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:44:42.988 [DEBUG] [Thread-119986] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:44:42.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:44:42.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:44:43.045 [DEBUG] [Thread-119986] [transport.py] [_log()] userauth is OK
2025-11-03T17:44:43.045 [DEBUG] [Thread-119986] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:44:43.045 [DEBUG] [Thread-119986] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:44:43.045 [DEBUG] [Thread-119986] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:44:43.045 [DEBUG] [Thread-119986] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:44:43.059 [INFO] [Thread-119986] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:44:43.059 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:44:43.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:44:43.856 [DEBUG] [Thread-119986] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:44:43.856 [DEBUG] [Thread-119986] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:44:43.904 [DEBUG] [Thread-119986] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:44:43.904 [DEBUG] [Thread-119986] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:44:43.913 [DEBUG] [Thread-119986] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:44:43.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:44:43.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:44:43.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:44:43.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:44:43.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:44:43.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:44:43.947 [DEBUG] [Thread-119986] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:44:54.745 [DEBUG] [Thread-119988 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:45:09.786 [DEBUG] [Thread-119989 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:45:13.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:45:13.969 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:45:13.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:45:14.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 44, 43), 44.82, 3.99, 0.0, 39.49, 25.03, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:45:14.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:44:43
2025-11-03T17:45:14.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:45:14.999 [DEBUG] [Thread-119990] [transport.py] [_log()] starting thread (client mode): 0xed22bf0
2025-11-03T17:45:14.999 [DEBUG] [Thread-119990] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:45:15.020 [DEBUG] [Thread-119990] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:45:15.020 [INFO] [Thread-119990] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:45:15.023 [DEBUG] [Thread-119990] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:45:15.023 [DEBUG] [Thread-119990] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:45:15.023 [DEBUG] [Thread-119990] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:45:15.024 [DEBUG] [Thread-119990] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:45:15.024 [DEBUG] [Thread-119990] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:45:15.024 [DEBUG] [Thread-119990] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:45:15.024 [DEBUG] [Thread-119990] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:45:15.024 [DEBUG] [Thread-119990] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:45:15.024 [DEBUG] [Thread-119990] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:45:15.024 [DEBUG] [Thread-119990] [transport.py] [_log()] client lang: <none>
2025-11-03T17:45:15.024 [DEBUG] [Thread-119990] [transport.py] [_log()] server lang: <none>
2025-11-03T17:45:15.024 [DEBUG] [Thread-119990] [transport.py] [_log()] kex follows: False
2025-11-03T17:45:15.024 [DEBUG] [Thread-119990] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:45:15.024 [DEBUG] [Thread-119990] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:45:15.024 [DEBUG] [Thread-119990] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:45:15.024 [DEBUG] [Thread-119990] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:45:15.024 [DEBUG] [Thread-119990] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:45:15.024 [DEBUG] [Thread-119990] [transport.py] [_log()] Compression: none
2025-11-03T17:45:15.024 [DEBUG] [Thread-119990] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:45:15.039 [DEBUG] [Thread-119990] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:45:15.039 [DEBUG] [Thread-119990] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:45:15.040 [DEBUG] [Thread-119990] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:45:15.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:45:15.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:45:15.040 [DEBUG] [Thread-119990] [transport.py] [_log()] userauth is OK
2025-11-03T17:45:15.040 [DEBUG] [Thread-119990] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:45:15.040 [DEBUG] [Thread-119990] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:45:15.040 [DEBUG] [Thread-119990] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:45:15.040 [DEBUG] [Thread-119990] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:45:15.050 [INFO] [Thread-119990] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:45:15.050 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:45:18.741 [DEBUG] [Thread-119990] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:45:18.741 [DEBUG] [Thread-119990] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:45:18.741 [DEBUG] [Thread-119990] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:45:18.781 [DEBUG] [Thread-119990] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:45:18.781 [DEBUG] [Thread-119990] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:45:18.784 [DEBUG] [Thread-119990] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:45:18.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:45:18.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:45:18.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:45:18.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:45:18.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:45:18.819 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:45:18.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:45:18.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:45:18.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:45:18.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.656005 -999.00  +24.70  33.18      8  -10.40 1 1 2 1 1   887    0 35.05 -33.63 ----- 28.9 33.2 304.8 42.3 26.4 -33.2 26.6 -32.3 27.3 -31.5 27.6 -32.8
2025-11-03T17:45:18.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:45:18.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:45:18.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.656005
2025-11-03T17:45:18.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:45:18.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:45:18.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:45:18.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:45:18.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:45:18.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:44:43', tmtdew=44.82, humidity=3.99, cloud=0.0, wind=39.49, temperature=25.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:44:38.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:45:18.821 [DEBUG] [Thread-119990] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:45:18.892 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:45:18.904 [DEBUG] [Thread-119993] [transport.py] [_log()] starting thread (client mode): 0x1179bb80
2025-11-03T17:45:18.904 [DEBUG] [Thread-119993] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:45:18.919 [DEBUG] [Thread-119993] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:45:18.919 [INFO] [Thread-119993] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:45:18.927 [DEBUG] [Thread-119993] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:45:18.927 [DEBUG] [Thread-119993] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:45:18.927 [DEBUG] [Thread-119993] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:45:18.927 [DEBUG] [Thread-119993] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:45:18.927 [DEBUG] [Thread-119993] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:45:18.927 [DEBUG] [Thread-119993] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:45:18.927 [DEBUG] [Thread-119993] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:45:18.927 [DEBUG] [Thread-119993] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:45:18.927 [DEBUG] [Thread-119993] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:45:18.927 [DEBUG] [Thread-119993] [transport.py] [_log()] client lang: <none>
2025-11-03T17:45:18.927 [DEBUG] [Thread-119993] [transport.py] [_log()] server lang: <none>
2025-11-03T17:45:18.927 [DEBUG] [Thread-119993] [transport.py] [_log()] kex follows: False
2025-11-03T17:45:18.927 [DEBUG] [Thread-119993] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:45:18.927 [DEBUG] [Thread-119993] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:45:18.927 [DEBUG] [Thread-119993] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:45:18.928 [DEBUG] [Thread-119993] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:45:18.928 [DEBUG] [Thread-119993] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:45:18.928 [DEBUG] [Thread-119993] [transport.py] [_log()] Compression: none
2025-11-03T17:45:18.928 [DEBUG] [Thread-119993] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:45:18.984 [DEBUG] [Thread-119993] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:45:18.984 [DEBUG] [Thread-119993] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:45:18.984 [DEBUG] [Thread-119993] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:45:18.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:45:18.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:45:19.041 [DEBUG] [Thread-119993] [transport.py] [_log()] userauth is OK
2025-11-03T17:45:19.041 [DEBUG] [Thread-119993] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:45:19.041 [DEBUG] [Thread-119993] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:45:19.041 [DEBUG] [Thread-119993] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:45:19.041 [DEBUG] [Thread-119993] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:45:19.055 [INFO] [Thread-119993] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:45:19.056 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:45:19.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:45:19.893 [DEBUG] [Thread-119993] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:45:19.894 [DEBUG] [Thread-119993] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:45:19.943 [DEBUG] [Thread-119993] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:45:19.944 [DEBUG] [Thread-119993] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:45:19.953 [DEBUG] [Thread-119993] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:45:19.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:45:19.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:45:19.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:45:19.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:45:19.983 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:45:19.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:45:19.991 [DEBUG] [Thread-119993] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:45:24.824 [DEBUG] [Thread-119995 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:45:25.759 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:45:25.760 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:45:34.301 [DEBUG] [Thread-119996 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:45:39.884 [DEBUG] [Thread-119997 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:45:50.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:45:50.009 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:45:50.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:45:50.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 45, 15), 44.55, 4.08, 0.0, 36.75, 25.07, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:45:50.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:45:15
2025-11-03T17:45:50.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:45:51.063 [DEBUG] [Thread-119998] [transport.py] [_log()] starting thread (client mode): 0xed217b0
2025-11-03T17:45:51.063 [DEBUG] [Thread-119998] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:45:51.083 [DEBUG] [Thread-119998] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:45:51.083 [INFO] [Thread-119998] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:45:51.086 [DEBUG] [Thread-119998] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:45:51.086 [DEBUG] [Thread-119998] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:45:51.086 [DEBUG] [Thread-119998] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:45:51.086 [DEBUG] [Thread-119998] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:45:51.086 [DEBUG] [Thread-119998] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:45:51.086 [DEBUG] [Thread-119998] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:45:51.086 [DEBUG] [Thread-119998] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:45:51.086 [DEBUG] [Thread-119998] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:45:51.086 [DEBUG] [Thread-119998] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:45:51.086 [DEBUG] [Thread-119998] [transport.py] [_log()] client lang: <none>
2025-11-03T17:45:51.086 [DEBUG] [Thread-119998] [transport.py] [_log()] server lang: <none>
2025-11-03T17:45:51.086 [DEBUG] [Thread-119998] [transport.py] [_log()] kex follows: False
2025-11-03T17:45:51.086 [DEBUG] [Thread-119998] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:45:51.086 [DEBUG] [Thread-119998] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:45:51.086 [DEBUG] [Thread-119998] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:45:51.087 [DEBUG] [Thread-119998] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:45:51.087 [DEBUG] [Thread-119998] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:45:51.087 [DEBUG] [Thread-119998] [transport.py] [_log()] Compression: none
2025-11-03T17:45:51.087 [DEBUG] [Thread-119998] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:45:51.102 [DEBUG] [Thread-119998] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:45:51.102 [DEBUG] [Thread-119998] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:45:51.103 [DEBUG] [Thread-119998] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:45:51.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:45:51.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:45:51.105 [DEBUG] [Thread-119998] [transport.py] [_log()] userauth is OK
2025-11-03T17:45:51.105 [DEBUG] [Thread-119998] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:45:51.105 [DEBUG] [Thread-119998] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:45:51.105 [DEBUG] [Thread-119998] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:45:51.105 [DEBUG] [Thread-119998] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:45:51.129 [INFO] [Thread-119998] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:45:51.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:45:51.746 [DEBUG] [Thread-119998] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:45:51.746 [DEBUG] [Thread-119998] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:45:51.747 [DEBUG] [Thread-119998] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:45:51.787 [DEBUG] [Thread-119998] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:45:51.787 [DEBUG] [Thread-119998] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:45:51.791 [DEBUG] [Thread-119998] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:45:51.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:45:51.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:45:51.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:45:51.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:45:51.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:45:51.826 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:45:51.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:45:51.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:45:51.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:45:51.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.656352 -999.00  +24.90  25.42      8  -10.20 1 1 1 1 1   887    0 34.27 -32.76 ----- 28.0 25.4 307.8 34.6 26.4 -33.1 26.6 -32.3 27.4 -30.9 27.6 -32.2
2025-11-03T17:45:51.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:45:51.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:45:51.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.656352
2025-11-03T17:45:51.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:45:51.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:45:51.829 [DEBUG] [Thread-119998] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:45:51.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:45:51.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:45:51.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:45:51.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:45:15', tmtdew=44.55, humidity=4.08, cloud=0.0, wind=36.75, temperature=25.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:45:08.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:45:51.914 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:45:51.926 [DEBUG] [Thread-120001] [transport.py] [_log()] starting thread (client mode): 0x1179aad0
2025-11-03T17:45:51.926 [DEBUG] [Thread-120001] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:45:51.941 [DEBUG] [Thread-120001] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:45:51.942 [INFO] [Thread-120001] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:45:51.949 [DEBUG] [Thread-120001] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:45:51.950 [DEBUG] [Thread-120001] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:45:51.950 [DEBUG] [Thread-120001] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:45:51.950 [DEBUG] [Thread-120001] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:45:51.950 [DEBUG] [Thread-120001] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:45:51.950 [DEBUG] [Thread-120001] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:45:51.950 [DEBUG] [Thread-120001] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:45:51.950 [DEBUG] [Thread-120001] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:45:51.950 [DEBUG] [Thread-120001] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:45:51.950 [DEBUG] [Thread-120001] [transport.py] [_log()] client lang: <none>
2025-11-03T17:45:51.950 [DEBUG] [Thread-120001] [transport.py] [_log()] server lang: <none>
2025-11-03T17:45:51.950 [DEBUG] [Thread-120001] [transport.py] [_log()] kex follows: False
2025-11-03T17:45:51.950 [DEBUG] [Thread-120001] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:45:51.950 [DEBUG] [Thread-120001] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:45:51.950 [DEBUG] [Thread-120001] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:45:51.950 [DEBUG] [Thread-120001] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:45:51.950 [DEBUG] [Thread-120001] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:45:51.950 [DEBUG] [Thread-120001] [transport.py] [_log()] Compression: none
2025-11-03T17:45:51.950 [DEBUG] [Thread-120001] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:45:52.010 [DEBUG] [Thread-120001] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:45:52.010 [DEBUG] [Thread-120001] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:45:52.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:45:52.011 [DEBUG] [Thread-120001] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:45:52.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:45:52.066 [DEBUG] [Thread-120001] [transport.py] [_log()] userauth is OK
2025-11-03T17:45:52.066 [DEBUG] [Thread-120001] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:45:52.067 [DEBUG] [Thread-120001] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:45:52.067 [DEBUG] [Thread-120001] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:45:52.067 [DEBUG] [Thread-120001] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:45:52.086 [INFO] [Thread-120001] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:45:52.086 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:45:52.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:45:52.923 [DEBUG] [Thread-120001] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:45:52.923 [DEBUG] [Thread-120001] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:45:52.970 [DEBUG] [Thread-120001] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:45:52.970 [DEBUG] [Thread-120001] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:45:52.978 [DEBUG] [Thread-120001] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:45:52.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:45:52.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:45:52.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:45:53.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:45:53.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:45:53.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:45:53.011 [DEBUG] [Thread-120001] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:45:54.919 [DEBUG] [Thread-120003 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:46:09.980 [DEBUG] [Thread-120004 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:46:23.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:46:23.013 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:46:23.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:46:23.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 45, 48), 44.68, 4.04, 0.0, 33.47, 25.03, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:46:23.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:45:48
2025-11-03T17:46:23.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:46:23.996 [DEBUG] [Thread-120005] [transport.py] [_log()] starting thread (client mode): 0x117816c0
2025-11-03T17:46:23.996 [DEBUG] [Thread-120005] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:46:24.010 [DEBUG] [Thread-120005] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:46:24.010 [INFO] [Thread-120005] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:46:24.013 [DEBUG] [Thread-120005] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:46:24.014 [DEBUG] [Thread-120005] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:46:24.014 [DEBUG] [Thread-120005] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:46:24.014 [DEBUG] [Thread-120005] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:46:24.014 [DEBUG] [Thread-120005] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:46:24.014 [DEBUG] [Thread-120005] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:46:24.014 [DEBUG] [Thread-120005] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:46:24.014 [DEBUG] [Thread-120005] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:46:24.014 [DEBUG] [Thread-120005] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:46:24.014 [DEBUG] [Thread-120005] [transport.py] [_log()] client lang: <none>
2025-11-03T17:46:24.014 [DEBUG] [Thread-120005] [transport.py] [_log()] server lang: <none>
2025-11-03T17:46:24.014 [DEBUG] [Thread-120005] [transport.py] [_log()] kex follows: False
2025-11-03T17:46:24.014 [DEBUG] [Thread-120005] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:46:24.014 [DEBUG] [Thread-120005] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:46:24.014 [DEBUG] [Thread-120005] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:46:24.014 [DEBUG] [Thread-120005] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:46:24.014 [DEBUG] [Thread-120005] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:46:24.014 [DEBUG] [Thread-120005] [transport.py] [_log()] Compression: none
2025-11-03T17:46:24.014 [DEBUG] [Thread-120005] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:46:24.030 [DEBUG] [Thread-120005] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:46:24.031 [DEBUG] [Thread-120005] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:46:24.031 [DEBUG] [Thread-120005] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:46:24.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:46:24.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:46:24.033 [DEBUG] [Thread-120005] [transport.py] [_log()] userauth is OK
2025-11-03T17:46:24.033 [DEBUG] [Thread-120005] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:46:24.033 [DEBUG] [Thread-120005] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:46:24.034 [DEBUG] [Thread-120005] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:46:24.034 [DEBUG] [Thread-120005] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:46:24.058 [INFO] [Thread-120005] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:46:24.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:46:24.775 [DEBUG] [Thread-120005] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:46:24.776 [DEBUG] [Thread-120005] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:46:24.776 [DEBUG] [Thread-120005] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:46:24.817 [DEBUG] [Thread-120005] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:46:24.817 [DEBUG] [Thread-120005] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:46:24.821 [DEBUG] [Thread-120005] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:46:24.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:46:24.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:46:24.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:46:24.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:46:24.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:46:24.855 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:46:24.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:46:24.855 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:46:24.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:46:24.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.656699 -999.00  +24.90  29.31      8  -10.20 1 1 1 1 1   887    0 34.59 -35.36 ----- 28.7 29.3 313.2 40.5 26.4 -33.5 26.6 -32.4 27.3 -31.3 27.6 -32.3
2025-11-03T17:46:24.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:46:24.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:46:24.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.656699
2025-11-03T17:46:24.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:46:24.858 [DEBUG] [Thread-120005] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:46:24.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:46:24.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:46:24.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:46:24.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:46:24.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:45:48', tmtdew=44.68, humidity=4.04, cloud=0.0, wind=33.47, temperature=25.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:45:38.794', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:46:24.942 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:46:24.954 [DEBUG] [Thread-120008] [transport.py] [_log()] starting thread (client mode): 0xed22290
2025-11-03T17:46:24.954 [DEBUG] [Thread-120008] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:46:24.969 [DEBUG] [Thread-120008] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:46:24.969 [INFO] [Thread-120008] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:46:24.979 [DEBUG] [Thread-120008] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:46:24.980 [DEBUG] [Thread-120008] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:46:24.980 [DEBUG] [Thread-120008] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:46:24.980 [DEBUG] [Thread-120008] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:46:24.980 [DEBUG] [Thread-120008] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:46:24.981 [DEBUG] [Thread-120008] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:46:24.981 [DEBUG] [Thread-120008] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:46:24.981 [DEBUG] [Thread-120008] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:46:24.981 [DEBUG] [Thread-120008] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:46:24.981 [DEBUG] [Thread-120008] [transport.py] [_log()] client lang: <none>
2025-11-03T17:46:24.981 [DEBUG] [Thread-120008] [transport.py] [_log()] server lang: <none>
2025-11-03T17:46:24.981 [DEBUG] [Thread-120008] [transport.py] [_log()] kex follows: False
2025-11-03T17:46:24.981 [DEBUG] [Thread-120008] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:46:24.981 [DEBUG] [Thread-120008] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:46:24.981 [DEBUG] [Thread-120008] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:46:24.981 [DEBUG] [Thread-120008] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:46:24.981 [DEBUG] [Thread-120008] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:46:24.982 [DEBUG] [Thread-120008] [transport.py] [_log()] Compression: none
2025-11-03T17:46:24.982 [DEBUG] [Thread-120008] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:46:25.011 [DEBUG] [Thread-120010 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:46:25.037 [DEBUG] [Thread-120008] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:46:25.037 [DEBUG] [Thread-120008] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:46:25.038 [DEBUG] [Thread-120008] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:46:25.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:46:25.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:46:25.096 [DEBUG] [Thread-120008] [transport.py] [_log()] userauth is OK
2025-11-03T17:46:25.097 [DEBUG] [Thread-120008] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:46:25.097 [DEBUG] [Thread-120008] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:46:25.097 [DEBUG] [Thread-120008] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:46:25.097 [DEBUG] [Thread-120008] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:46:25.120 [INFO] [Thread-120008] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:46:25.121 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:46:25.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:46:25.908 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:46:25.909 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:46:25.937 [DEBUG] [Thread-120008] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:46:25.937 [DEBUG] [Thread-120008] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:46:25.985 [DEBUG] [Thread-120008] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:46:25.985 [DEBUG] [Thread-120008] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:46:25.994 [DEBUG] [Thread-120008] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:46:26.006 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:46:26.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:46:26.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:46:26.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:46:26.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:46:26.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:46:26.035 [DEBUG] [Thread-120008] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:46:34.530 [DEBUG] [Thread-120011 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:46:40.063 [DEBUG] [Thread-120012 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:46:55.098 [DEBUG] [Thread-120013 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:46:56.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:46:56.057 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:46:56.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:46:56.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 46, 52), 44.78, 4.0, 0.0, 34.97, 25.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:46:56.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:46:52
2025-11-03T17:46:56.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:46:56.993 [DEBUG] [Thread-120014] [transport.py] [_log()] starting thread (client mode): 0xeda3400
2025-11-03T17:46:56.993 [DEBUG] [Thread-120014] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:46:57.015 [DEBUG] [Thread-120014] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:46:57.015 [INFO] [Thread-120014] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:46:57.018 [DEBUG] [Thread-120014] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:46:57.018 [DEBUG] [Thread-120014] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:46:57.018 [DEBUG] [Thread-120014] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:46:57.018 [DEBUG] [Thread-120014] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:46:57.018 [DEBUG] [Thread-120014] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:46:57.019 [DEBUG] [Thread-120014] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:46:57.019 [DEBUG] [Thread-120014] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:46:57.019 [DEBUG] [Thread-120014] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:46:57.019 [DEBUG] [Thread-120014] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:46:57.019 [DEBUG] [Thread-120014] [transport.py] [_log()] client lang: <none>
2025-11-03T17:46:57.019 [DEBUG] [Thread-120014] [transport.py] [_log()] server lang: <none>
2025-11-03T17:46:57.019 [DEBUG] [Thread-120014] [transport.py] [_log()] kex follows: False
2025-11-03T17:46:57.019 [DEBUG] [Thread-120014] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:46:57.019 [DEBUG] [Thread-120014] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:46:57.019 [DEBUG] [Thread-120014] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:46:57.019 [DEBUG] [Thread-120014] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:46:57.019 [DEBUG] [Thread-120014] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:46:57.019 [DEBUG] [Thread-120014] [transport.py] [_log()] Compression: none
2025-11-03T17:46:57.019 [DEBUG] [Thread-120014] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:46:57.036 [DEBUG] [Thread-120014] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:46:57.037 [DEBUG] [Thread-120014] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:46:57.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:46:57.038 [DEBUG] [Thread-120014] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:46:57.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:46:57.040 [DEBUG] [Thread-120014] [transport.py] [_log()] userauth is OK
2025-11-03T17:46:57.040 [DEBUG] [Thread-120014] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:46:57.040 [DEBUG] [Thread-120014] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:46:57.040 [DEBUG] [Thread-120014] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:46:57.040 [DEBUG] [Thread-120014] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:46:57.063 [INFO] [Thread-120014] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:46:57.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:46:57.686 [DEBUG] [Thread-120014] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:46:57.686 [DEBUG] [Thread-120014] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:46:57.686 [DEBUG] [Thread-120014] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:46:57.727 [DEBUG] [Thread-120014] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:46:57.727 [DEBUG] [Thread-120014] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:46:57.730 [DEBUG] [Thread-120014] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:46:57.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:46:57.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:46:57.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:46:57.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:46:57.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:46:57.757 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:46:57.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:46:57.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:46:57.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:46:57.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.657047 -999.00  +25.00  22.80      8  -10.10 1 1 1 1 1   887    0 34.63 -36.16 ----- 23.8 22.8 307.0 37.5 26.4 -32.8 26.6 -31.6 27.4 -32.6 27.7 -32.5
2025-11-03T17:46:57.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:46:57.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:46:57.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.657047
2025-11-03T17:46:57.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:46:57.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:46:57.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:46:57.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:46:57.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:46:57.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:46:52', tmtdew=44.78, humidity=4.0, cloud=0.0, wind=34.97, temperature=25.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:46:08.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:46:57.760 [DEBUG] [Thread-120014] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:46:57.843 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:46:57.855 [DEBUG] [Thread-120017] [transport.py] [_log()] starting thread (client mode): 0x11781de0
2025-11-03T17:46:57.855 [DEBUG] [Thread-120017] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:46:57.871 [DEBUG] [Thread-120017] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:46:57.871 [INFO] [Thread-120017] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:46:57.879 [DEBUG] [Thread-120017] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:46:57.879 [DEBUG] [Thread-120017] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:46:57.879 [DEBUG] [Thread-120017] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:46:57.879 [DEBUG] [Thread-120017] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:46:57.879 [DEBUG] [Thread-120017] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:46:57.879 [DEBUG] [Thread-120017] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:46:57.879 [DEBUG] [Thread-120017] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:46:57.879 [DEBUG] [Thread-120017] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:46:57.879 [DEBUG] [Thread-120017] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:46:57.879 [DEBUG] [Thread-120017] [transport.py] [_log()] client lang: <none>
2025-11-03T17:46:57.879 [DEBUG] [Thread-120017] [transport.py] [_log()] server lang: <none>
2025-11-03T17:46:57.879 [DEBUG] [Thread-120017] [transport.py] [_log()] kex follows: False
2025-11-03T17:46:57.880 [DEBUG] [Thread-120017] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:46:57.880 [DEBUG] [Thread-120017] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:46:57.880 [DEBUG] [Thread-120017] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:46:57.880 [DEBUG] [Thread-120017] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:46:57.880 [DEBUG] [Thread-120017] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:46:57.880 [DEBUG] [Thread-120017] [transport.py] [_log()] Compression: none
2025-11-03T17:46:57.880 [DEBUG] [Thread-120017] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:46:57.938 [DEBUG] [Thread-120017] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:46:57.938 [DEBUG] [Thread-120017] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:46:57.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:46:57.940 [DEBUG] [Thread-120017] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:46:57.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:46:57.994 [DEBUG] [Thread-120017] [transport.py] [_log()] userauth is OK
2025-11-03T17:46:57.994 [DEBUG] [Thread-120017] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:46:57.995 [DEBUG] [Thread-120017] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:46:57.995 [DEBUG] [Thread-120017] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:46:57.995 [DEBUG] [Thread-120017] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:46:58.014 [INFO] [Thread-120017] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:46:58.014 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:46:58.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:46:58.860 [DEBUG] [Thread-120017] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:46:58.860 [DEBUG] [Thread-120017] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:46:58.908 [DEBUG] [Thread-120017] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:46:58.908 [DEBUG] [Thread-120017] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:46:58.917 [DEBUG] [Thread-120017] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:46:58.925 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:46:58.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:46:58.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:46:58.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:46:58.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:46:58.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:46:58.949 [DEBUG] [Thread-120017] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:47:10.129 [DEBUG] [Thread-120019 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:47:25.184 [DEBUG] [Thread-120020 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:47:26.050 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:47:26.051 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:47:28.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:47:28.941 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:47:28.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:47:29.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 47, 25), 44.66, 4.05, 0.0, 32.47, 25.11, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:47:29.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:47:25
2025-11-03T17:47:29.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:47:29.941 [DEBUG] [Thread-120021] [transport.py] [_log()] starting thread (client mode): 0x1174df00
2025-11-03T17:47:29.941 [DEBUG] [Thread-120021] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:47:29.962 [DEBUG] [Thread-120021] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:47:29.962 [INFO] [Thread-120021] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:47:29.965 [DEBUG] [Thread-120021] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:47:29.965 [DEBUG] [Thread-120021] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:47:29.965 [DEBUG] [Thread-120021] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:47:29.965 [DEBUG] [Thread-120021] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:47:29.966 [DEBUG] [Thread-120021] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:47:29.966 [DEBUG] [Thread-120021] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:47:29.966 [DEBUG] [Thread-120021] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:47:29.966 [DEBUG] [Thread-120021] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:47:29.966 [DEBUG] [Thread-120021] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:47:29.966 [DEBUG] [Thread-120021] [transport.py] [_log()] client lang: <none>
2025-11-03T17:47:29.966 [DEBUG] [Thread-120021] [transport.py] [_log()] server lang: <none>
2025-11-03T17:47:29.966 [DEBUG] [Thread-120021] [transport.py] [_log()] kex follows: False
2025-11-03T17:47:29.966 [DEBUG] [Thread-120021] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:47:29.966 [DEBUG] [Thread-120021] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:47:29.966 [DEBUG] [Thread-120021] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:47:29.966 [DEBUG] [Thread-120021] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:47:29.966 [DEBUG] [Thread-120021] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:47:29.966 [DEBUG] [Thread-120021] [transport.py] [_log()] Compression: none
2025-11-03T17:47:29.966 [DEBUG] [Thread-120021] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:47:29.981 [DEBUG] [Thread-120021] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:47:29.982 [DEBUG] [Thread-120021] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:47:29.982 [DEBUG] [Thread-120021] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:47:29.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:47:29.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:47:29.983 [DEBUG] [Thread-120021] [transport.py] [_log()] userauth is OK
2025-11-03T17:47:29.983 [DEBUG] [Thread-120021] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:47:29.983 [DEBUG] [Thread-120021] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:47:29.983 [DEBUG] [Thread-120021] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:47:29.983 [DEBUG] [Thread-120021] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:47:29.993 [INFO] [Thread-120021] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:47:29.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:47:30.729 [DEBUG] [Thread-120021] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:47:30.730 [DEBUG] [Thread-120021] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:47:30.730 [DEBUG] [Thread-120021] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:47:30.770 [DEBUG] [Thread-120021] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:47:30.771 [DEBUG] [Thread-120021] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:47:30.773 [DEBUG] [Thread-120021] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:47:30.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:47:30.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:47:30.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:47:30.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:47:30.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:47:30.793 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:47:30.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:47:30.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:47:30.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:47:30.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.657394 -999.00  +24.90  31.76      8  -10.20 1 1 2 1 1   887    0 35.16 -38.38 ----- 29.0 31.8 309.0 47.4 26.4 -33.4 26.6 -32.5 27.4 -31.5 27.6 -32.2
2025-11-03T17:47:30.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:47:30.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:47:30.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.657394
2025-11-03T17:47:30.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:47:30.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:47:30.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:47:30.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:47:30.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:47:30.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:47:25', tmtdew=44.66, humidity=4.05, cloud=0.0, wind=32.47, temperature=25.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:46:38.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:47:30.794 [DEBUG] [Thread-120021] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:47:30.869 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:47:30.883 [DEBUG] [Thread-120024] [transport.py] [_log()] starting thread (client mode): 0xed8b4c0
2025-11-03T17:47:30.883 [DEBUG] [Thread-120024] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:47:30.900 [DEBUG] [Thread-120024] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:47:30.900 [INFO] [Thread-120024] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:47:30.910 [DEBUG] [Thread-120024] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:47:30.911 [DEBUG] [Thread-120024] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:47:30.911 [DEBUG] [Thread-120024] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:47:30.911 [DEBUG] [Thread-120024] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:47:30.911 [DEBUG] [Thread-120024] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:47:30.911 [DEBUG] [Thread-120024] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:47:30.911 [DEBUG] [Thread-120024] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:47:30.911 [DEBUG] [Thread-120024] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:47:30.911 [DEBUG] [Thread-120024] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:47:30.911 [DEBUG] [Thread-120024] [transport.py] [_log()] client lang: <none>
2025-11-03T17:47:30.911 [DEBUG] [Thread-120024] [transport.py] [_log()] server lang: <none>
2025-11-03T17:47:30.911 [DEBUG] [Thread-120024] [transport.py] [_log()] kex follows: False
2025-11-03T17:47:30.911 [DEBUG] [Thread-120024] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:47:30.911 [DEBUG] [Thread-120024] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:47:30.911 [DEBUG] [Thread-120024] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:47:30.911 [DEBUG] [Thread-120024] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:47:30.911 [DEBUG] [Thread-120024] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:47:30.911 [DEBUG] [Thread-120024] [transport.py] [_log()] Compression: none
2025-11-03T17:47:30.911 [DEBUG] [Thread-120024] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:47:30.968 [DEBUG] [Thread-120024] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:47:30.968 [DEBUG] [Thread-120024] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:47:30.968 [DEBUG] [Thread-120024] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:47:30.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:47:30.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:47:31.029 [DEBUG] [Thread-120024] [transport.py] [_log()] userauth is OK
2025-11-03T17:47:31.029 [DEBUG] [Thread-120024] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:47:31.029 [DEBUG] [Thread-120024] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:47:31.029 [DEBUG] [Thread-120024] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:47:31.029 [DEBUG] [Thread-120024] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:47:31.046 [INFO] [Thread-120024] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:47:31.046 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:47:31.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:47:31.858 [DEBUG] [Thread-120024] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:47:31.859 [DEBUG] [Thread-120024] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:47:31.906 [DEBUG] [Thread-120024] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:47:31.906 [DEBUG] [Thread-120024] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:47:31.915 [DEBUG] [Thread-120024] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:47:31.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:47:31.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:47:31.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:47:31.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:47:31.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:47:31.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:47:31.947 [DEBUG] [Thread-120024] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:47:34.622 [DEBUG] [Thread-120026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:47:40.224 [DEBUG] [Thread-120027 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:47:55.278 [DEBUG] [Thread-120028 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:48:01.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:48:01.967 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:48:01.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:48:02.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 47, 57), 44.69, 4.05, 0.0, 34.0, 25.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:48:02.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:47:57
2025-11-03T17:48:02.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:48:03.008 [DEBUG] [Thread-120029] [transport.py] [_log()] starting thread (client mode): 0x1179a7d0
2025-11-03T17:48:03.009 [DEBUG] [Thread-120029] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:48:03.029 [DEBUG] [Thread-120029] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:48:03.029 [INFO] [Thread-120029] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:48:03.039 [DEBUG] [Thread-120029] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:48:03.039 [DEBUG] [Thread-120029] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:48:03.039 [DEBUG] [Thread-120029] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:48:03.039 [DEBUG] [Thread-120029] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:48:03.039 [DEBUG] [Thread-120029] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:48:03.039 [DEBUG] [Thread-120029] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:48:03.039 [DEBUG] [Thread-120029] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:48:03.039 [DEBUG] [Thread-120029] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:48:03.039 [DEBUG] [Thread-120029] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:48:03.039 [DEBUG] [Thread-120029] [transport.py] [_log()] client lang: <none>
2025-11-03T17:48:03.039 [DEBUG] [Thread-120029] [transport.py] [_log()] server lang: <none>
2025-11-03T17:48:03.039 [DEBUG] [Thread-120029] [transport.py] [_log()] kex follows: False
2025-11-03T17:48:03.039 [DEBUG] [Thread-120029] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:48:03.040 [DEBUG] [Thread-120029] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:48:03.040 [DEBUG] [Thread-120029] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:48:03.040 [DEBUG] [Thread-120029] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:48:03.040 [DEBUG] [Thread-120029] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:48:03.040 [DEBUG] [Thread-120029] [transport.py] [_log()] Compression: none
2025-11-03T17:48:03.040 [DEBUG] [Thread-120029] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:48:03.061 [DEBUG] [Thread-120029] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:48:03.062 [DEBUG] [Thread-120029] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:48:03.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:48:03.064 [DEBUG] [Thread-120029] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:48:03.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:48:03.065 [DEBUG] [Thread-120029] [transport.py] [_log()] userauth is OK
2025-11-03T17:48:03.065 [DEBUG] [Thread-120029] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:48:03.066 [DEBUG] [Thread-120029] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:48:03.066 [DEBUG] [Thread-120029] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:48:03.066 [DEBUG] [Thread-120029] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:48:03.088 [INFO] [Thread-120029] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:48:03.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:48:03.717 [DEBUG] [Thread-120029] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:48:03.726 [DEBUG] [Thread-120029] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:48:03.726 [DEBUG] [Thread-120029] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:48:03.759 [DEBUG] [Thread-120029] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:48:03.759 [DEBUG] [Thread-120029] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:48:03.761 [DEBUG] [Thread-120029] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:48:03.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:48:03.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:48:03.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:48:03.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:48:03.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:48:03.780 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:48:03.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:48:03.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:48:03.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:48:03.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.657741 -999.00  +24.80  30.88      8  -10.30 1 1 2 1 1   887    0 34.66 -37.43 ----- 41.8 30.9 306.4 39.8 26.5 -33.5 26.6 -32.3 27.4 -31.4 27.6 -32.3
2025-11-03T17:48:03.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:48:03.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:48:03.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.657741
2025-11-03T17:48:03.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:48:03.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:48:03.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:48:03.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:48:03.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:48:03.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:47:57', tmtdew=44.69, humidity=4.05, cloud=0.0, wind=34.0, temperature=25.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:47:08.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:48:03.782 [DEBUG] [Thread-120029] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:48:03.854 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:48:03.866 [DEBUG] [Thread-120032] [transport.py] [_log()] starting thread (client mode): 0x1174fe80
2025-11-03T17:48:03.866 [DEBUG] [Thread-120032] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:48:03.883 [DEBUG] [Thread-120032] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:48:03.883 [INFO] [Thread-120032] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:48:03.891 [DEBUG] [Thread-120032] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:48:03.891 [DEBUG] [Thread-120032] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:48:03.892 [DEBUG] [Thread-120032] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:48:03.892 [DEBUG] [Thread-120032] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:48:03.892 [DEBUG] [Thread-120032] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:48:03.892 [DEBUG] [Thread-120032] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:48:03.892 [DEBUG] [Thread-120032] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:48:03.892 [DEBUG] [Thread-120032] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:48:03.892 [DEBUG] [Thread-120032] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:48:03.892 [DEBUG] [Thread-120032] [transport.py] [_log()] client lang: <none>
2025-11-03T17:48:03.892 [DEBUG] [Thread-120032] [transport.py] [_log()] server lang: <none>
2025-11-03T17:48:03.892 [DEBUG] [Thread-120032] [transport.py] [_log()] kex follows: False
2025-11-03T17:48:03.892 [DEBUG] [Thread-120032] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:48:03.892 [DEBUG] [Thread-120032] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:48:03.892 [DEBUG] [Thread-120032] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:48:03.892 [DEBUG] [Thread-120032] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:48:03.892 [DEBUG] [Thread-120032] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:48:03.892 [DEBUG] [Thread-120032] [transport.py] [_log()] Compression: none
2025-11-03T17:48:03.892 [DEBUG] [Thread-120032] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:48:03.948 [DEBUG] [Thread-120032] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:48:03.949 [DEBUG] [Thread-120032] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:48:03.949 [DEBUG] [Thread-120032] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:48:03.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:48:03.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:48:04.005 [DEBUG] [Thread-120032] [transport.py] [_log()] userauth is OK
2025-11-03T17:48:04.005 [DEBUG] [Thread-120032] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:48:04.005 [DEBUG] [Thread-120032] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:48:04.005 [DEBUG] [Thread-120032] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:48:04.005 [DEBUG] [Thread-120032] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:48:04.019 [INFO] [Thread-120032] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:48:04.019 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:48:04.020 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:48:04.871 [DEBUG] [Thread-120032] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:48:04.871 [DEBUG] [Thread-120032] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:48:04.919 [DEBUG] [Thread-120032] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:48:04.920 [DEBUG] [Thread-120032] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:48:04.929 [DEBUG] [Thread-120032] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:48:04.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:48:04.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:48:04.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:48:04.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:48:04.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:48:04.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:48:04.986 [DEBUG] [Thread-120032] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:48:10.314 [DEBUG] [Thread-120034 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:48:25.349 [DEBUG] [Thread-120035 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:48:26.194 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:48:26.196 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:48:34.664 [DEBUG] [Thread-120036 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:48:35.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:48:35.000 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:48:35.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:48:35.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 48, 29), 44.74, 4.05, 0.0, 36.96, 25.21, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:48:35.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:48:29
2025-11-03T17:48:35.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:48:36.046 [DEBUG] [Thread-120037] [transport.py] [_log()] starting thread (client mode): 0x1174f310
2025-11-03T17:48:36.046 [DEBUG] [Thread-120037] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:48:36.063 [DEBUG] [Thread-120037] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:48:36.063 [INFO] [Thread-120037] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:48:36.064 [DEBUG] [Thread-120037] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:48:36.064 [DEBUG] [Thread-120037] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:48:36.064 [DEBUG] [Thread-120037] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:48:36.064 [DEBUG] [Thread-120037] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:48:36.064 [DEBUG] [Thread-120037] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:48:36.064 [DEBUG] [Thread-120037] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:48:36.064 [DEBUG] [Thread-120037] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:48:36.064 [DEBUG] [Thread-120037] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:48:36.064 [DEBUG] [Thread-120037] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:48:36.065 [DEBUG] [Thread-120037] [transport.py] [_log()] client lang: <none>
2025-11-03T17:48:36.065 [DEBUG] [Thread-120037] [transport.py] [_log()] server lang: <none>
2025-11-03T17:48:36.065 [DEBUG] [Thread-120037] [transport.py] [_log()] kex follows: False
2025-11-03T17:48:36.065 [DEBUG] [Thread-120037] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:48:36.065 [DEBUG] [Thread-120037] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:48:36.065 [DEBUG] [Thread-120037] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:48:36.065 [DEBUG] [Thread-120037] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:48:36.065 [DEBUG] [Thread-120037] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:48:36.065 [DEBUG] [Thread-120037] [transport.py] [_log()] Compression: none
2025-11-03T17:48:36.065 [DEBUG] [Thread-120037] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:48:36.083 [DEBUG] [Thread-120037] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:48:36.084 [DEBUG] [Thread-120037] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:48:36.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:48:36.085 [DEBUG] [Thread-120037] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:48:36.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:48:36.086 [DEBUG] [Thread-120037] [transport.py] [_log()] userauth is OK
2025-11-03T17:48:36.087 [DEBUG] [Thread-120037] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:48:36.087 [DEBUG] [Thread-120037] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:48:36.087 [DEBUG] [Thread-120037] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:48:36.087 [DEBUG] [Thread-120037] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:48:36.122 [INFO] [Thread-120037] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:48:36.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:48:36.835 [DEBUG] [Thread-120037] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:48:36.835 [DEBUG] [Thread-120037] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:48:36.835 [DEBUG] [Thread-120037] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:48:36.876 [DEBUG] [Thread-120037] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:48:36.876 [DEBUG] [Thread-120037] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:48:36.878 [DEBUG] [Thread-120037] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:48:36.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:48:36.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:48:36.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:48:36.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:48:36.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:48:36.893 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:48:36.893 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:48:36.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:48:36.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:48:36.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.658088 -999.00  +24.60  35.81      8  -10.40 1 1 2 1 1   887    0 34.33 -41.77 ----- 39.0 35.8 315.4 43.7 26.4 -33.0 26.6 -32.4 27.4 -31.3 27.6 -32.5
2025-11-03T17:48:36.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:48:36.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:48:36.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.658088
2025-11-03T17:48:36.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:48:36.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:48:36.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:48:36.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:48:36.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:48:36.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:48:29', tmtdew=44.74, humidity=4.05, cloud=0.0, wind=36.96, temperature=25.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:47:38.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:48:36.894 [DEBUG] [Thread-120037] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:48:36.971 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:48:36.983 [DEBUG] [Thread-120040] [transport.py] [_log()] starting thread (client mode): 0xed134c0
2025-11-03T17:48:36.983 [DEBUG] [Thread-120040] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:48:36.997 [DEBUG] [Thread-120040] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:48:36.997 [INFO] [Thread-120040] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:48:37.005 [DEBUG] [Thread-120040] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:48:37.005 [DEBUG] [Thread-120040] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:48:37.005 [DEBUG] [Thread-120040] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:48:37.005 [DEBUG] [Thread-120040] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:48:37.005 [DEBUG] [Thread-120040] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:48:37.005 [DEBUG] [Thread-120040] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:48:37.005 [DEBUG] [Thread-120040] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:48:37.005 [DEBUG] [Thread-120040] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:48:37.005 [DEBUG] [Thread-120040] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:48:37.005 [DEBUG] [Thread-120040] [transport.py] [_log()] client lang: <none>
2025-11-03T17:48:37.005 [DEBUG] [Thread-120040] [transport.py] [_log()] server lang: <none>
2025-11-03T17:48:37.005 [DEBUG] [Thread-120040] [transport.py] [_log()] kex follows: False
2025-11-03T17:48:37.005 [DEBUG] [Thread-120040] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:48:37.005 [DEBUG] [Thread-120040] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:48:37.005 [DEBUG] [Thread-120040] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:48:37.005 [DEBUG] [Thread-120040] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:48:37.005 [DEBUG] [Thread-120040] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:48:37.005 [DEBUG] [Thread-120040] [transport.py] [_log()] Compression: none
2025-11-03T17:48:37.005 [DEBUG] [Thread-120040] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:48:37.061 [DEBUG] [Thread-120040] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:48:37.062 [DEBUG] [Thread-120040] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:48:37.063 [DEBUG] [Thread-120040] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:48:37.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:48:37.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:48:37.118 [DEBUG] [Thread-120040] [transport.py] [_log()] userauth is OK
2025-11-03T17:48:37.118 [DEBUG] [Thread-120040] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:48:37.118 [DEBUG] [Thread-120040] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:48:37.118 [DEBUG] [Thread-120040] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:48:37.118 [DEBUG] [Thread-120040] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:48:37.144 [INFO] [Thread-120040] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:48:37.144 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:48:37.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:48:37.981 [DEBUG] [Thread-120040] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:48:37.981 [DEBUG] [Thread-120040] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:48:38.028 [DEBUG] [Thread-120040] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:48:38.028 [DEBUG] [Thread-120040] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:48:38.037 [DEBUG] [Thread-120040] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:48:38.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:48:38.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:48:38.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:48:38.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:48:38.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:48:38.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:48:38.069 [DEBUG] [Thread-120040] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:48:40.395 [DEBUG] [Thread-120042 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:48:55.440 [DEBUG] [Thread-120043 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:49:08.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:49:08.092 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:49:08.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:49:08.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 49, 2), 44.72, 4.05, 0.0, 35.48, 25.16, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:49:08.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:49:02
2025-11-03T17:49:08.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:49:09.121 [DEBUG] [Thread-120044] [transport.py] [_log()] starting thread (client mode): 0xed89cf0
2025-11-03T17:49:09.121 [DEBUG] [Thread-120044] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:49:09.142 [DEBUG] [Thread-120044] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:49:09.142 [INFO] [Thread-120044] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:49:09.145 [DEBUG] [Thread-120044] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:49:09.145 [DEBUG] [Thread-120044] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:49:09.145 [DEBUG] [Thread-120044] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:49:09.145 [DEBUG] [Thread-120044] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:49:09.145 [DEBUG] [Thread-120044] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:49:09.145 [DEBUG] [Thread-120044] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:49:09.145 [DEBUG] [Thread-120044] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:49:09.145 [DEBUG] [Thread-120044] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:49:09.145 [DEBUG] [Thread-120044] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:49:09.145 [DEBUG] [Thread-120044] [transport.py] [_log()] client lang: <none>
2025-11-03T17:49:09.145 [DEBUG] [Thread-120044] [transport.py] [_log()] server lang: <none>
2025-11-03T17:49:09.145 [DEBUG] [Thread-120044] [transport.py] [_log()] kex follows: False
2025-11-03T17:49:09.145 [DEBUG] [Thread-120044] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:49:09.145 [DEBUG] [Thread-120044] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:49:09.145 [DEBUG] [Thread-120044] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:49:09.146 [DEBUG] [Thread-120044] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:49:09.146 [DEBUG] [Thread-120044] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:49:09.146 [DEBUG] [Thread-120044] [transport.py] [_log()] Compression: none
2025-11-03T17:49:09.146 [DEBUG] [Thread-120044] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:49:09.166 [DEBUG] [Thread-120044] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:49:09.167 [DEBUG] [Thread-120044] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:49:09.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:49:09.168 [DEBUG] [Thread-120044] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:49:09.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:49:09.170 [DEBUG] [Thread-120044] [transport.py] [_log()] userauth is OK
2025-11-03T17:49:09.170 [DEBUG] [Thread-120044] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:49:09.170 [DEBUG] [Thread-120044] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:49:09.170 [DEBUG] [Thread-120044] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:49:09.170 [DEBUG] [Thread-120044] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:49:09.193 [INFO] [Thread-120044] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:49:09.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:49:09.837 [DEBUG] [Thread-120044] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:49:09.838 [DEBUG] [Thread-120044] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:49:09.838 [DEBUG] [Thread-120044] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:49:09.878 [DEBUG] [Thread-120044] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:49:09.878 [DEBUG] [Thread-120044] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:49:09.882 [DEBUG] [Thread-120044] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:49:09.893 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:49:09.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:49:09.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:49:09.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:49:09.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:49:09.905 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:49:09.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:49:09.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:49:09.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:49:09.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.658435 -999.00  +24.50  42.29      9  -10.40 1 1 2 1 1   887    0 34.32 -43.14 ----- 41.6 42.3 312.6 44.5 26.4 -33.3 26.6 -32.2 27.4 -31.7 27.6 -32.6
2025-11-03T17:49:09.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:49:09.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:49:09.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.658435
2025-11-03T17:49:09.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:49:09.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:49:09.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:49:09.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:49:09.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:49:09.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:49:02', tmtdew=44.72, humidity=4.05, cloud=0.0, wind=35.48, temperature=25.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:48:08.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:49:09.909 [DEBUG] [Thread-120044] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:49:09.997 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:49:10.009 [DEBUG] [Thread-120047] [transport.py] [_log()] starting thread (client mode): 0x11781de0
2025-11-03T17:49:10.009 [DEBUG] [Thread-120047] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:49:10.026 [DEBUG] [Thread-120047] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:49:10.026 [INFO] [Thread-120047] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:49:10.034 [DEBUG] [Thread-120047] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:49:10.034 [DEBUG] [Thread-120047] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:49:10.034 [DEBUG] [Thread-120047] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:49:10.034 [DEBUG] [Thread-120047] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:49:10.034 [DEBUG] [Thread-120047] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:49:10.034 [DEBUG] [Thread-120047] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:49:10.034 [DEBUG] [Thread-120047] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:49:10.034 [DEBUG] [Thread-120047] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:49:10.034 [DEBUG] [Thread-120047] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:49:10.034 [DEBUG] [Thread-120047] [transport.py] [_log()] client lang: <none>
2025-11-03T17:49:10.034 [DEBUG] [Thread-120047] [transport.py] [_log()] server lang: <none>
2025-11-03T17:49:10.034 [DEBUG] [Thread-120047] [transport.py] [_log()] kex follows: False
2025-11-03T17:49:10.034 [DEBUG] [Thread-120047] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:49:10.034 [DEBUG] [Thread-120047] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:49:10.034 [DEBUG] [Thread-120047] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:49:10.034 [DEBUG] [Thread-120047] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:49:10.034 [DEBUG] [Thread-120047] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:49:10.034 [DEBUG] [Thread-120047] [transport.py] [_log()] Compression: none
2025-11-03T17:49:10.034 [DEBUG] [Thread-120047] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:49:10.092 [DEBUG] [Thread-120047] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:49:10.092 [DEBUG] [Thread-120047] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:49:10.092 [DEBUG] [Thread-120047] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:49:10.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:49:10.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:49:10.149 [DEBUG] [Thread-120047] [transport.py] [_log()] userauth is OK
2025-11-03T17:49:10.149 [DEBUG] [Thread-120047] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:49:10.149 [DEBUG] [Thread-120047] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:49:10.149 [DEBUG] [Thread-120047] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:49:10.149 [DEBUG] [Thread-120047] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:49:10.163 [INFO] [Thread-120047] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:49:10.163 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:49:10.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:49:10.487 [DEBUG] [Thread-120049 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:49:11.009 [DEBUG] [Thread-120047] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:49:11.009 [DEBUG] [Thread-120047] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:49:11.057 [DEBUG] [Thread-120047] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:49:11.057 [DEBUG] [Thread-120047] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:49:11.067 [DEBUG] [Thread-120047] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:49:11.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:49:11.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:49:11.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:49:11.101 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:49:11.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:49:11.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:49:11.114 [DEBUG] [Thread-120047] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:49:25.529 [DEBUG] [Thread-120050 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:49:26.337 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:49:26.339 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:49:34.725 [DEBUG] [Thread-120051 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:49:40.576 [DEBUG] [Thread-120052 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:49:41.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:49:41.133 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:49:41.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:49:41.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 49, 34), 44.78, 4.0, 0.0, 33.45, 25.01, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:49:41.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:49:34
2025-11-03T17:49:41.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:49:42.137 [DEBUG] [Thread-120053] [transport.py] [_log()] starting thread (client mode): 0xed89d20
2025-11-03T17:49:42.137 [DEBUG] [Thread-120053] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:49:42.153 [DEBUG] [Thread-120053] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:49:42.153 [INFO] [Thread-120053] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:49:42.157 [DEBUG] [Thread-120053] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:49:42.157 [DEBUG] [Thread-120053] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:49:42.157 [DEBUG] [Thread-120053] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:49:42.157 [DEBUG] [Thread-120053] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:49:42.157 [DEBUG] [Thread-120053] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:49:42.157 [DEBUG] [Thread-120053] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:49:42.157 [DEBUG] [Thread-120053] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:49:42.157 [DEBUG] [Thread-120053] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:49:42.157 [DEBUG] [Thread-120053] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:49:42.157 [DEBUG] [Thread-120053] [transport.py] [_log()] client lang: <none>
2025-11-03T17:49:42.157 [DEBUG] [Thread-120053] [transport.py] [_log()] server lang: <none>
2025-11-03T17:49:42.157 [DEBUG] [Thread-120053] [transport.py] [_log()] kex follows: False
2025-11-03T17:49:42.157 [DEBUG] [Thread-120053] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:49:42.157 [DEBUG] [Thread-120053] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:49:42.157 [DEBUG] [Thread-120053] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:49:42.157 [DEBUG] [Thread-120053] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:49:42.157 [DEBUG] [Thread-120053] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:49:42.157 [DEBUG] [Thread-120053] [transport.py] [_log()] Compression: none
2025-11-03T17:49:42.157 [DEBUG] [Thread-120053] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:49:42.172 [DEBUG] [Thread-120053] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:49:42.173 [DEBUG] [Thread-120053] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:49:42.173 [DEBUG] [Thread-120053] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:49:42.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:49:42.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:49:42.176 [DEBUG] [Thread-120053] [transport.py] [_log()] userauth is OK
2025-11-03T17:49:42.176 [DEBUG] [Thread-120053] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:49:42.176 [DEBUG] [Thread-120053] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:49:42.176 [DEBUG] [Thread-120053] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:49:42.176 [DEBUG] [Thread-120053] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:49:42.194 [INFO] [Thread-120053] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:49:42.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:49:42.877 [DEBUG] [Thread-120053] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:49:42.877 [DEBUG] [Thread-120053] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:49:42.877 [DEBUG] [Thread-120053] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:49:42.918 [DEBUG] [Thread-120053] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:49:42.919 [DEBUG] [Thread-120053] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:49:42.921 [DEBUG] [Thread-120053] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:49:42.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:49:42.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:49:42.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:49:42.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:49:42.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:49:42.939 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:49:42.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:49:42.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:49:42.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:49:42.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.659130 -999.00  +24.60  34.19      8  -10.40 1 1 2 1 1   887    0 34.53 -52.29 ----- 26.6 34.2 309.0 44.6 26.4 -33.2 26.6 -32.0 27.4 -31.6 27.6 -32.8
2025-11-03T17:49:42.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:49:42.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:49:42.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.659130
2025-11-03T17:49:42.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:49:42.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:49:42.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:49:42.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:49:42.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:49:42.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:49:34', tmtdew=44.78, humidity=4.0, cloud=0.0, wind=33.45, temperature=25.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:49:08.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:49:42.948 [DEBUG] [Thread-120053] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:49:43.021 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:49:43.032 [DEBUG] [Thread-120056] [transport.py] [_log()] starting thread (client mode): 0xed10ca0
2025-11-03T17:49:43.032 [DEBUG] [Thread-120056] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:49:43.048 [DEBUG] [Thread-120056] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:49:43.048 [INFO] [Thread-120056] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:49:43.055 [DEBUG] [Thread-120056] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:49:43.055 [DEBUG] [Thread-120056] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:49:43.055 [DEBUG] [Thread-120056] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:49:43.055 [DEBUG] [Thread-120056] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:49:43.055 [DEBUG] [Thread-120056] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:49:43.055 [DEBUG] [Thread-120056] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:49:43.056 [DEBUG] [Thread-120056] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:49:43.056 [DEBUG] [Thread-120056] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:49:43.056 [DEBUG] [Thread-120056] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:49:43.056 [DEBUG] [Thread-120056] [transport.py] [_log()] client lang: <none>
2025-11-03T17:49:43.056 [DEBUG] [Thread-120056] [transport.py] [_log()] server lang: <none>
2025-11-03T17:49:43.056 [DEBUG] [Thread-120056] [transport.py] [_log()] kex follows: False
2025-11-03T17:49:43.056 [DEBUG] [Thread-120056] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:49:43.056 [DEBUG] [Thread-120056] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:49:43.056 [DEBUG] [Thread-120056] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:49:43.056 [DEBUG] [Thread-120056] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:49:43.056 [DEBUG] [Thread-120056] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:49:43.056 [DEBUG] [Thread-120056] [transport.py] [_log()] Compression: none
2025-11-03T17:49:43.056 [DEBUG] [Thread-120056] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:49:43.112 [DEBUG] [Thread-120056] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:49:43.112 [DEBUG] [Thread-120056] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:49:43.112 [DEBUG] [Thread-120056] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:49:43.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:49:43.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:49:43.169 [DEBUG] [Thread-120056] [transport.py] [_log()] userauth is OK
2025-11-03T17:49:43.169 [DEBUG] [Thread-120056] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:49:43.169 [DEBUG] [Thread-120056] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:49:43.169 [DEBUG] [Thread-120056] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:49:43.169 [DEBUG] [Thread-120056] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:49:43.183 [INFO] [Thread-120056] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:49:43.183 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:49:43.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:49:44.048 [DEBUG] [Thread-120056] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:49:44.048 [DEBUG] [Thread-120056] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:49:44.096 [DEBUG] [Thread-120056] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:49:44.096 [DEBUG] [Thread-120056] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:49:44.105 [DEBUG] [Thread-120056] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:49:44.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:49:44.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:49:44.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:49:44.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:49:44.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:49:44.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:49:44.141 [DEBUG] [Thread-120056] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:49:55.609 [DEBUG] [Thread-120058 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:50:10.656 [DEBUG] [Thread-120059 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:50:14.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:50:14.164 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:50:14.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:50:14.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 50, 6), 44.49, 4.08, 0.0, 32.62, 24.83, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:50:14.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:50:06
2025-11-03T17:50:15.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:50:15.150 [DEBUG] [Thread-120060] [transport.py] [_log()] starting thread (client mode): 0x1174f610
2025-11-03T17:50:15.151 [DEBUG] [Thread-120060] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:50:15.171 [DEBUG] [Thread-120060] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:50:15.171 [INFO] [Thread-120060] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:50:15.174 [DEBUG] [Thread-120060] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:50:15.174 [DEBUG] [Thread-120060] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:50:15.174 [DEBUG] [Thread-120060] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:50:15.174 [DEBUG] [Thread-120060] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:50:15.174 [DEBUG] [Thread-120060] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:50:15.174 [DEBUG] [Thread-120060] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:50:15.174 [DEBUG] [Thread-120060] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:50:15.174 [DEBUG] [Thread-120060] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:50:15.175 [DEBUG] [Thread-120060] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:50:15.175 [DEBUG] [Thread-120060] [transport.py] [_log()] client lang: <none>
2025-11-03T17:50:15.175 [DEBUG] [Thread-120060] [transport.py] [_log()] server lang: <none>
2025-11-03T17:50:15.175 [DEBUG] [Thread-120060] [transport.py] [_log()] kex follows: False
2025-11-03T17:50:15.175 [DEBUG] [Thread-120060] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:50:15.175 [DEBUG] [Thread-120060] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:50:15.175 [DEBUG] [Thread-120060] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:50:15.175 [DEBUG] [Thread-120060] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:50:15.175 [DEBUG] [Thread-120060] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:50:15.175 [DEBUG] [Thread-120060] [transport.py] [_log()] Compression: none
2025-11-03T17:50:15.175 [DEBUG] [Thread-120060] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:50:15.196 [DEBUG] [Thread-120060] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:50:15.197 [DEBUG] [Thread-120060] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:50:15.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:50:15.198 [DEBUG] [Thread-120060] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:50:15.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:50:15.199 [DEBUG] [Thread-120060] [transport.py] [_log()] userauth is OK
2025-11-03T17:50:15.200 [DEBUG] [Thread-120060] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:50:15.200 [DEBUG] [Thread-120060] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:50:15.200 [DEBUG] [Thread-120060] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:50:15.200 [DEBUG] [Thread-120060] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:50:15.225 [INFO] [Thread-120060] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:50:15.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:50:17.584 [DEBUG] [Thread-120060] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:50:17.585 [DEBUG] [Thread-120060] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:50:17.585 [DEBUG] [Thread-120060] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:50:17.625 [DEBUG] [Thread-120060] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:50:17.626 [DEBUG] [Thread-120060] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:50:17.628 [DEBUG] [Thread-120060] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:50:17.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:50:17.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:50:17.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:50:17.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:50:17.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:50:17.721 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:50:17.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:50:17.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:50:17.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:50:17.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.659477 -999.00  +24.60  26.52      9  -10.30 1 1 1 1 1   887    0 34.07 -49.10 ----- 25.4 26.5 309.0 37.6 26.4 -33.5 26.6 -32.3 27.4 -31.7 27.6 -32.7
2025-11-03T17:50:17.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:50:17.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:50:17.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.659477
2025-11-03T17:50:17.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:50:17.723 [DEBUG] [Thread-120060] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:50:17.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:50:17.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:50:17.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:50:17.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:50:17.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:50:06', tmtdew=44.49, humidity=4.08, cloud=0.0, wind=32.62, temperature=24.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:49:38.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:50:17.801 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:50:17.812 [DEBUG] [Thread-120063] [transport.py] [_log()] starting thread (client mode): 0xeda3400
2025-11-03T17:50:17.812 [DEBUG] [Thread-120063] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:50:17.826 [DEBUG] [Thread-120063] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:50:17.827 [INFO] [Thread-120063] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:50:17.834 [DEBUG] [Thread-120063] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:50:17.834 [DEBUG] [Thread-120063] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:50:17.834 [DEBUG] [Thread-120063] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:50:17.834 [DEBUG] [Thread-120063] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:50:17.834 [DEBUG] [Thread-120063] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:50:17.834 [DEBUG] [Thread-120063] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:50:17.834 [DEBUG] [Thread-120063] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:50:17.834 [DEBUG] [Thread-120063] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:50:17.835 [DEBUG] [Thread-120063] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:50:17.835 [DEBUG] [Thread-120063] [transport.py] [_log()] client lang: <none>
2025-11-03T17:50:17.835 [DEBUG] [Thread-120063] [transport.py] [_log()] server lang: <none>
2025-11-03T17:50:17.835 [DEBUG] [Thread-120063] [transport.py] [_log()] kex follows: False
2025-11-03T17:50:17.835 [DEBUG] [Thread-120063] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:50:17.835 [DEBUG] [Thread-120063] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:50:17.835 [DEBUG] [Thread-120063] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:50:17.835 [DEBUG] [Thread-120063] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:50:17.835 [DEBUG] [Thread-120063] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:50:17.835 [DEBUG] [Thread-120063] [transport.py] [_log()] Compression: none
2025-11-03T17:50:17.835 [DEBUG] [Thread-120063] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:50:17.893 [DEBUG] [Thread-120063] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:50:17.894 [DEBUG] [Thread-120063] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:50:17.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:50:17.894 [DEBUG] [Thread-120063] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:50:17.895 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:50:17.949 [DEBUG] [Thread-120063] [transport.py] [_log()] userauth is OK
2025-11-03T17:50:17.950 [DEBUG] [Thread-120063] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:50:17.950 [DEBUG] [Thread-120063] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:50:17.950 [DEBUG] [Thread-120063] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:50:17.950 [DEBUG] [Thread-120063] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:50:17.972 [INFO] [Thread-120063] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:50:17.973 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:50:17.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:50:18.804 [DEBUG] [Thread-120063] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:50:18.804 [DEBUG] [Thread-120063] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:50:18.852 [DEBUG] [Thread-120063] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:50:18.852 [DEBUG] [Thread-120063] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:50:18.861 [DEBUG] [Thread-120063] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:50:18.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:50:18.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:50:18.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:50:18.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:50:18.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:50:18.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:50:18.896 [DEBUG] [Thread-120063] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:50:25.685 [DEBUG] [Thread-120065 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:50:26.480 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:50:26.481 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:50:34.789 [DEBUG] [Thread-120066 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:50:40.735 [DEBUG] [Thread-120067 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:50:48.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:50:48.918 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:50:48.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:50:49.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 50, 38), 44.36, 4.1, 0.0, 31.46, 24.76, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:50:49.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:50:38
2025-11-03T17:50:49.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:50:49.880 [DEBUG] [Thread-120068] [transport.py] [_log()] starting thread (client mode): 0xed89cf0
2025-11-03T17:50:49.880 [DEBUG] [Thread-120068] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:50:49.900 [DEBUG] [Thread-120068] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:50:49.900 [INFO] [Thread-120068] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:50:49.903 [DEBUG] [Thread-120068] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:50:49.903 [DEBUG] [Thread-120068] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:50:49.903 [DEBUG] [Thread-120068] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:50:49.903 [DEBUG] [Thread-120068] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:50:49.903 [DEBUG] [Thread-120068] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:50:49.903 [DEBUG] [Thread-120068] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:50:49.903 [DEBUG] [Thread-120068] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:50:49.903 [DEBUG] [Thread-120068] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:50:49.903 [DEBUG] [Thread-120068] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:50:49.903 [DEBUG] [Thread-120068] [transport.py] [_log()] client lang: <none>
2025-11-03T17:50:49.903 [DEBUG] [Thread-120068] [transport.py] [_log()] server lang: <none>
2025-11-03T17:50:49.903 [DEBUG] [Thread-120068] [transport.py] [_log()] kex follows: False
2025-11-03T17:50:49.903 [DEBUG] [Thread-120068] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:50:49.903 [DEBUG] [Thread-120068] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:50:49.904 [DEBUG] [Thread-120068] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:50:49.904 [DEBUG] [Thread-120068] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:50:49.904 [DEBUG] [Thread-120068] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:50:49.904 [DEBUG] [Thread-120068] [transport.py] [_log()] Compression: none
2025-11-03T17:50:49.904 [DEBUG] [Thread-120068] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:50:49.918 [DEBUG] [Thread-120068] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:50:49.918 [DEBUG] [Thread-120068] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:50:49.918 [DEBUG] [Thread-120068] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:50:49.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:50:49.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:50:49.919 [DEBUG] [Thread-120068] [transport.py] [_log()] userauth is OK
2025-11-03T17:50:49.919 [DEBUG] [Thread-120068] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:50:49.919 [DEBUG] [Thread-120068] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:50:49.919 [DEBUG] [Thread-120068] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:50:49.919 [DEBUG] [Thread-120068] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:50:49.929 [INFO] [Thread-120068] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:50:49.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:50:50.540 [DEBUG] [Thread-120068] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:50:50.540 [DEBUG] [Thread-120068] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:50:50.540 [DEBUG] [Thread-120068] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:50:50.580 [DEBUG] [Thread-120068] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:50:50.581 [DEBUG] [Thread-120068] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:50:50.583 [DEBUG] [Thread-120068] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:50:50.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:50:50.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:50:50.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:50:50.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:50:50.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:50:50.601 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:50:50.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:50:50.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:50:50.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:50:50.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.659824 -999.00  +24.80  23.75      9  -10.20 1 1 1 1 1   887    0 34.98 -51.46 ----- 22.8 23.8 305.4 40.7 26.4 -33.0 26.6 -32.1 27.4 -31.5 27.6 -32.2
2025-11-03T17:50:50.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:50:50.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:50:50.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.659824
2025-11-03T17:50:50.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:50:50.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:50:50.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:50:50.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:50:50.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:50:50.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:50:38', tmtdew=44.36, humidity=4.1, cloud=0.0, wind=31.46, temperature=24.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:50:08.794', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:50:50.602 [DEBUG] [Thread-120068] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:50:50.674 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:50:50.686 [DEBUG] [Thread-120071] [transport.py] [_log()] starting thread (client mode): 0xed89d20
2025-11-03T17:50:50.686 [DEBUG] [Thread-120071] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:50:50.701 [DEBUG] [Thread-120071] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:50:50.702 [INFO] [Thread-120071] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:50:50.709 [DEBUG] [Thread-120071] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:50:50.709 [DEBUG] [Thread-120071] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:50:50.709 [DEBUG] [Thread-120071] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:50:50.709 [DEBUG] [Thread-120071] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:50:50.709 [DEBUG] [Thread-120071] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:50:50.709 [DEBUG] [Thread-120071] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:50:50.709 [DEBUG] [Thread-120071] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:50:50.709 [DEBUG] [Thread-120071] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:50:50.709 [DEBUG] [Thread-120071] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:50:50.709 [DEBUG] [Thread-120071] [transport.py] [_log()] client lang: <none>
2025-11-03T17:50:50.709 [DEBUG] [Thread-120071] [transport.py] [_log()] server lang: <none>
2025-11-03T17:50:50.709 [DEBUG] [Thread-120071] [transport.py] [_log()] kex follows: False
2025-11-03T17:50:50.709 [DEBUG] [Thread-120071] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:50:50.709 [DEBUG] [Thread-120071] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:50:50.709 [DEBUG] [Thread-120071] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:50:50.709 [DEBUG] [Thread-120071] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:50:50.709 [DEBUG] [Thread-120071] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:50:50.709 [DEBUG] [Thread-120071] [transport.py] [_log()] Compression: none
2025-11-03T17:50:50.709 [DEBUG] [Thread-120071] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:50:50.772 [DEBUG] [Thread-120071] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:50:50.772 [DEBUG] [Thread-120071] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:50:50.772 [DEBUG] [Thread-120071] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:50:50.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:50:50.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:50:50.829 [DEBUG] [Thread-120071] [transport.py] [_log()] userauth is OK
2025-11-03T17:50:50.829 [DEBUG] [Thread-120071] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:50:50.829 [DEBUG] [Thread-120071] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:50:50.829 [DEBUG] [Thread-120071] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:50:50.829 [DEBUG] [Thread-120071] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:50:50.843 [INFO] [Thread-120071] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:50:50.843 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:50:50.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:50:51.654 [DEBUG] [Thread-120071] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:50:51.655 [DEBUG] [Thread-120071] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:50:51.703 [DEBUG] [Thread-120071] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:50:51.703 [DEBUG] [Thread-120071] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:50:51.713 [DEBUG] [Thread-120071] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:50:51.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:50:51.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:50:51.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:50:51.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:50:51.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:50:51.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:50:51.749 [DEBUG] [Thread-120071] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:50:55.762 [DEBUG] [Thread-120073 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:51:10.807 [DEBUG] [Thread-120074 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:51:21.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:51:21.762 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:51:21.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:51:22.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 51, 11), 44.48, 4.07, 0.0, 28.71, 24.86, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:51:22.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:51:11
2025-11-03T17:51:22.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:51:22.831 [DEBUG] [Thread-120075] [transport.py] [_log()] starting thread (client mode): 0x1174f520
2025-11-03T17:51:22.832 [DEBUG] [Thread-120075] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:51:22.848 [DEBUG] [Thread-120075] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:51:22.848 [INFO] [Thread-120075] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:51:22.849 [DEBUG] [Thread-120075] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:51:22.849 [DEBUG] [Thread-120075] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:51:22.850 [DEBUG] [Thread-120075] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:51:22.850 [DEBUG] [Thread-120075] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:51:22.850 [DEBUG] [Thread-120075] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:51:22.850 [DEBUG] [Thread-120075] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:51:22.850 [DEBUG] [Thread-120075] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:51:22.850 [DEBUG] [Thread-120075] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:51:22.850 [DEBUG] [Thread-120075] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:51:22.850 [DEBUG] [Thread-120075] [transport.py] [_log()] client lang: <none>
2025-11-03T17:51:22.850 [DEBUG] [Thread-120075] [transport.py] [_log()] server lang: <none>
2025-11-03T17:51:22.850 [DEBUG] [Thread-120075] [transport.py] [_log()] kex follows: False
2025-11-03T17:51:22.850 [DEBUG] [Thread-120075] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:51:22.850 [DEBUG] [Thread-120075] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:51:22.850 [DEBUG] [Thread-120075] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:51:22.850 [DEBUG] [Thread-120075] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:51:22.850 [DEBUG] [Thread-120075] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:51:22.850 [DEBUG] [Thread-120075] [transport.py] [_log()] Compression: none
2025-11-03T17:51:22.850 [DEBUG] [Thread-120075] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:51:22.860 [DEBUG] [Thread-120075] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:51:22.860 [DEBUG] [Thread-120075] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:51:22.861 [DEBUG] [Thread-120075] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:51:22.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:51:22.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:51:22.863 [DEBUG] [Thread-120075] [transport.py] [_log()] userauth is OK
2025-11-03T17:51:22.863 [DEBUG] [Thread-120075] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:51:22.863 [DEBUG] [Thread-120075] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:51:22.863 [DEBUG] [Thread-120075] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:51:22.864 [DEBUG] [Thread-120075] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:51:22.889 [INFO] [Thread-120075] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:51:22.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:51:23.539 [DEBUG] [Thread-120075] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:51:23.539 [DEBUG] [Thread-120075] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:51:23.539 [DEBUG] [Thread-120075] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:51:23.581 [DEBUG] [Thread-120075] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:51:23.581 [DEBUG] [Thread-120075] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:51:23.583 [DEBUG] [Thread-120075] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:51:23.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:51:23.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:51:23.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:51:23.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:51:23.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:51:23.604 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:51:23.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:51:23.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:51:23.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:51:23.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.660172 -999.00  +25.10  21.97      8  -10.10 1 1 1 1 1   887    0 34.21 -49.98 ----- 19.5 22.0 288.9 27.2 26.4 -33.0 26.6 -32.0 27.4 -32.1 27.6 -32.5
2025-11-03T17:51:23.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:51:23.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:51:23.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.660172
2025-11-03T17:51:23.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:51:23.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:51:23.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:51:23.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:51:23.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:51:23.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:51:11', tmtdew=44.48, humidity=4.07, cloud=0.0, wind=28.71, temperature=24.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:50:38.861', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:51:23.606 [DEBUG] [Thread-120075] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:51:23.679 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:51:23.691 [DEBUG] [Thread-120078] [transport.py] [_log()] starting thread (client mode): 0x141da770
2025-11-03T17:51:23.691 [DEBUG] [Thread-120078] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:51:23.705 [DEBUG] [Thread-120078] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:51:23.705 [INFO] [Thread-120078] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:51:23.713 [DEBUG] [Thread-120078] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:51:23.713 [DEBUG] [Thread-120078] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:51:23.713 [DEBUG] [Thread-120078] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:51:23.713 [DEBUG] [Thread-120078] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:51:23.713 [DEBUG] [Thread-120078] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:51:23.713 [DEBUG] [Thread-120078] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:51:23.713 [DEBUG] [Thread-120078] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:51:23.713 [DEBUG] [Thread-120078] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:51:23.713 [DEBUG] [Thread-120078] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:51:23.713 [DEBUG] [Thread-120078] [transport.py] [_log()] client lang: <none>
2025-11-03T17:51:23.713 [DEBUG] [Thread-120078] [transport.py] [_log()] server lang: <none>
2025-11-03T17:51:23.713 [DEBUG] [Thread-120078] [transport.py] [_log()] kex follows: False
2025-11-03T17:51:23.713 [DEBUG] [Thread-120078] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:51:23.713 [DEBUG] [Thread-120078] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:51:23.713 [DEBUG] [Thread-120078] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:51:23.713 [DEBUG] [Thread-120078] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:51:23.713 [DEBUG] [Thread-120078] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:51:23.713 [DEBUG] [Thread-120078] [transport.py] [_log()] Compression: none
2025-11-03T17:51:23.713 [DEBUG] [Thread-120078] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:51:23.768 [DEBUG] [Thread-120078] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:51:23.768 [DEBUG] [Thread-120078] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:51:23.768 [DEBUG] [Thread-120078] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:51:23.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:51:23.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:51:23.825 [DEBUG] [Thread-120078] [transport.py] [_log()] userauth is OK
2025-11-03T17:51:23.826 [DEBUG] [Thread-120078] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:51:23.826 [DEBUG] [Thread-120078] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:51:23.826 [DEBUG] [Thread-120078] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:51:23.826 [DEBUG] [Thread-120078] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:51:23.840 [INFO] [Thread-120078] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:51:23.840 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:51:23.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:51:24.719 [DEBUG] [Thread-120078] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:51:24.719 [DEBUG] [Thread-120078] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:51:24.767 [DEBUG] [Thread-120078] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:51:24.767 [DEBUG] [Thread-120078] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:51:24.776 [DEBUG] [Thread-120078] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:51:24.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:51:24.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:51:24.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:51:24.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:51:24.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:51:24.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:51:24.809 [DEBUG] [Thread-120078] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:51:25.838 [DEBUG] [Thread-120080 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:51:26.628 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:51:26.629 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:51:34.862 [DEBUG] [Thread-120081 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:51:40.879 [DEBUG] [Thread-120082 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:51:54.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:51:54.831 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:51:54.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:51:55.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 51, 43), 44.43, 4.1, 0.0, 28.37, 25.09, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:51:55.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:51:43
2025-11-03T17:51:55.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:51:55.840 [DEBUG] [Thread-120083] [transport.py] [_log()] starting thread (client mode): 0x1174ef80
2025-11-03T17:51:55.840 [DEBUG] [Thread-120083] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:51:55.860 [DEBUG] [Thread-120083] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:51:55.860 [INFO] [Thread-120083] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:51:55.863 [DEBUG] [Thread-120083] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:51:55.863 [DEBUG] [Thread-120083] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:51:55.872 [DEBUG] [Thread-120083] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:51:55.872 [DEBUG] [Thread-120083] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:51:55.873 [DEBUG] [Thread-120083] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:51:55.873 [DEBUG] [Thread-120083] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:51:55.873 [DEBUG] [Thread-120083] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:51:55.873 [DEBUG] [Thread-120083] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:51:55.873 [DEBUG] [Thread-120083] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:51:55.873 [DEBUG] [Thread-120083] [transport.py] [_log()] client lang: <none>
2025-11-03T17:51:55.873 [DEBUG] [Thread-120083] [transport.py] [_log()] server lang: <none>
2025-11-03T17:51:55.873 [DEBUG] [Thread-120083] [transport.py] [_log()] kex follows: False
2025-11-03T17:51:55.873 [DEBUG] [Thread-120083] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:51:55.874 [DEBUG] [Thread-120083] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:51:55.874 [DEBUG] [Thread-120083] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:51:55.874 [DEBUG] [Thread-120083] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:51:55.874 [DEBUG] [Thread-120083] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:51:55.874 [DEBUG] [Thread-120083] [transport.py] [_log()] Compression: none
2025-11-03T17:51:55.874 [DEBUG] [Thread-120083] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:51:55.899 [DEBUG] [Thread-120083] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:51:55.900 [DEBUG] [Thread-120083] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:51:55.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:51:55.901 [DEBUG] [Thread-120083] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:51:55.902 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:51:55.903 [DEBUG] [Thread-120083] [transport.py] [_log()] userauth is OK
2025-11-03T17:51:55.903 [DEBUG] [Thread-120083] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:51:55.903 [DEBUG] [Thread-120083] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:51:55.904 [DEBUG] [Thread-120083] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:51:55.904 [DEBUG] [Thread-120083] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:51:55.917 [DEBUG] [Thread-120085 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:51:55.928 [INFO] [Thread-120083] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:51:55.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:51:56.585 [DEBUG] [Thread-120083] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:51:56.585 [DEBUG] [Thread-120083] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:51:56.586 [DEBUG] [Thread-120083] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:51:56.626 [DEBUG] [Thread-120083] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:51:56.626 [DEBUG] [Thread-120083] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:51:56.630 [DEBUG] [Thread-120083] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:51:56.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:51:56.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:51:56.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:51:56.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:51:56.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:51:56.664 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:51:56.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:51:56.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:51:56.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:51:56.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.660519 -999.00  +25.10  28.62      8  -10.20 1 1 1 1 1   887    0 33.90 -47.67 ----- 25.8 28.6 295.0 31.5 26.5 -32.9 26.6 -31.8 27.5 -31.4 27.7 -32.5
2025-11-03T17:51:56.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:51:56.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:51:56.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.660519
2025-11-03T17:51:56.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:51:56.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:51:56.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:51:56.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:51:56.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:51:56.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:51:43', tmtdew=44.43, humidity=4.1, cloud=0.0, wind=28.37, temperature=25.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:51:08.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:51:56.667 [DEBUG] [Thread-120083] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:51:56.751 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:51:56.764 [DEBUG] [Thread-120087] [transport.py] [_log()] starting thread (client mode): 0x1174ea40
2025-11-03T17:51:56.764 [DEBUG] [Thread-120087] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:51:56.779 [DEBUG] [Thread-120087] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:51:56.779 [INFO] [Thread-120087] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:51:56.788 [DEBUG] [Thread-120087] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:51:56.788 [DEBUG] [Thread-120087] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:51:56.789 [DEBUG] [Thread-120087] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:51:56.789 [DEBUG] [Thread-120087] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:51:56.789 [DEBUG] [Thread-120087] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:51:56.789 [DEBUG] [Thread-120087] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:51:56.789 [DEBUG] [Thread-120087] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:51:56.789 [DEBUG] [Thread-120087] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:51:56.789 [DEBUG] [Thread-120087] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:51:56.789 [DEBUG] [Thread-120087] [transport.py] [_log()] client lang: <none>
2025-11-03T17:51:56.789 [DEBUG] [Thread-120087] [transport.py] [_log()] server lang: <none>
2025-11-03T17:51:56.789 [DEBUG] [Thread-120087] [transport.py] [_log()] kex follows: False
2025-11-03T17:51:56.789 [DEBUG] [Thread-120087] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:51:56.789 [DEBUG] [Thread-120087] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:51:56.789 [DEBUG] [Thread-120087] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:51:56.789 [DEBUG] [Thread-120087] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:51:56.789 [DEBUG] [Thread-120087] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:51:56.789 [DEBUG] [Thread-120087] [transport.py] [_log()] Compression: none
2025-11-03T17:51:56.790 [DEBUG] [Thread-120087] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:51:56.846 [DEBUG] [Thread-120087] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:51:56.846 [DEBUG] [Thread-120087] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:51:56.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:51:56.847 [DEBUG] [Thread-120087] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:51:56.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:51:56.902 [DEBUG] [Thread-120087] [transport.py] [_log()] userauth is OK
2025-11-03T17:51:56.902 [DEBUG] [Thread-120087] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:51:56.902 [DEBUG] [Thread-120087] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:51:56.902 [DEBUG] [Thread-120087] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:51:56.902 [DEBUG] [Thread-120087] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:51:56.921 [INFO] [Thread-120087] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:51:56.922 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:51:56.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:51:57.758 [DEBUG] [Thread-120087] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:51:57.759 [DEBUG] [Thread-120087] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:51:57.807 [DEBUG] [Thread-120087] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:51:57.807 [DEBUG] [Thread-120087] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:51:57.817 [DEBUG] [Thread-120087] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:51:57.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:51:57.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:51:57.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:51:57.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:51:57.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:51:57.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:51:57.855 [DEBUG] [Thread-120087] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:52:10.948 [DEBUG] [Thread-120089 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:52:26.002 [DEBUG] [Thread-120090 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:52:26.770 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:52:26.770 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:52:27.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:52:27.878 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:52:27.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:52:28.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 52, 15), 44.52, 4.07, 0.0, 32.98, 25.11, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:52:28.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:52:15
2025-11-03T17:52:28.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:52:28.867 [DEBUG] [Thread-120091] [transport.py] [_log()] starting thread (client mode): 0xeda35e0
2025-11-03T17:52:28.867 [DEBUG] [Thread-120091] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:52:28.878 [DEBUG] [Thread-120091] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:52:28.878 [INFO] [Thread-120091] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:52:28.880 [DEBUG] [Thread-120091] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:52:28.880 [DEBUG] [Thread-120091] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:52:28.880 [DEBUG] [Thread-120091] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:52:28.880 [DEBUG] [Thread-120091] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:52:28.880 [DEBUG] [Thread-120091] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:52:28.880 [DEBUG] [Thread-120091] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:52:28.880 [DEBUG] [Thread-120091] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:52:28.880 [DEBUG] [Thread-120091] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:52:28.880 [DEBUG] [Thread-120091] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:52:28.880 [DEBUG] [Thread-120091] [transport.py] [_log()] client lang: <none>
2025-11-03T17:52:28.880 [DEBUG] [Thread-120091] [transport.py] [_log()] server lang: <none>
2025-11-03T17:52:28.880 [DEBUG] [Thread-120091] [transport.py] [_log()] kex follows: False
2025-11-03T17:52:28.880 [DEBUG] [Thread-120091] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:52:28.880 [DEBUG] [Thread-120091] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:52:28.880 [DEBUG] [Thread-120091] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:52:28.880 [DEBUG] [Thread-120091] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:52:28.880 [DEBUG] [Thread-120091] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:52:28.880 [DEBUG] [Thread-120091] [transport.py] [_log()] Compression: none
2025-11-03T17:52:28.880 [DEBUG] [Thread-120091] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:52:28.887 [DEBUG] [Thread-120091] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:52:28.888 [DEBUG] [Thread-120091] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:52:28.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:52:28.888 [DEBUG] [Thread-120091] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:52:28.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:52:28.889 [DEBUG] [Thread-120091] [transport.py] [_log()] userauth is OK
2025-11-03T17:52:28.889 [DEBUG] [Thread-120091] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:52:28.889 [DEBUG] [Thread-120091] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:52:28.889 [DEBUG] [Thread-120091] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:52:28.889 [DEBUG] [Thread-120091] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:52:28.905 [INFO] [Thread-120091] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:52:28.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:52:29.448 [DEBUG] [Thread-120091] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:52:29.448 [DEBUG] [Thread-120091] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:52:29.448 [DEBUG] [Thread-120091] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:52:29.488 [DEBUG] [Thread-120091] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:52:29.488 [DEBUG] [Thread-120091] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:52:29.490 [DEBUG] [Thread-120091] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:52:29.509 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:52:29.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:52:29.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:52:29.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:52:29.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:52:29.515 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:52:29.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:52:29.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:52:29.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:52:29.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.660866 -999.00  +25.00  22.41      8  -10.30 1 1 1 1 1   887    0 33.50 -51.84 ----- 23.6 22.4 306.8 33.4 26.4 -33.4 26.6 -32.4 27.4 -31.8 27.6 -32.9
2025-11-03T17:52:29.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:52:29.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:52:29.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.660866
2025-11-03T17:52:29.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:52:29.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:52:29.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:52:29.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:52:29.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:52:29.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:52:15', tmtdew=44.52, humidity=4.07, cloud=0.0, wind=32.98, temperature=25.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:51:38.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:52:29.516 [DEBUG] [Thread-120091] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:52:29.590 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:52:29.603 [DEBUG] [Thread-120094] [transport.py] [_log()] starting thread (client mode): 0xeda07f0
2025-11-03T17:52:29.603 [DEBUG] [Thread-120094] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:52:29.618 [DEBUG] [Thread-120094] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:52:29.618 [INFO] [Thread-120094] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:52:29.625 [DEBUG] [Thread-120094] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:52:29.625 [DEBUG] [Thread-120094] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:52:29.625 [DEBUG] [Thread-120094] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:52:29.625 [DEBUG] [Thread-120094] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:52:29.625 [DEBUG] [Thread-120094] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:52:29.625 [DEBUG] [Thread-120094] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:52:29.625 [DEBUG] [Thread-120094] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:52:29.625 [DEBUG] [Thread-120094] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:52:29.625 [DEBUG] [Thread-120094] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:52:29.625 [DEBUG] [Thread-120094] [transport.py] [_log()] client lang: <none>
2025-11-03T17:52:29.625 [DEBUG] [Thread-120094] [transport.py] [_log()] server lang: <none>
2025-11-03T17:52:29.626 [DEBUG] [Thread-120094] [transport.py] [_log()] kex follows: False
2025-11-03T17:52:29.626 [DEBUG] [Thread-120094] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:52:29.626 [DEBUG] [Thread-120094] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:52:29.626 [DEBUG] [Thread-120094] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:52:29.626 [DEBUG] [Thread-120094] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:52:29.626 [DEBUG] [Thread-120094] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:52:29.626 [DEBUG] [Thread-120094] [transport.py] [_log()] Compression: none
2025-11-03T17:52:29.626 [DEBUG] [Thread-120094] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:52:29.688 [DEBUG] [Thread-120094] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:52:29.688 [DEBUG] [Thread-120094] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:52:29.688 [DEBUG] [Thread-120094] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:52:29.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:52:29.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:52:29.745 [DEBUG] [Thread-120094] [transport.py] [_log()] userauth is OK
2025-11-03T17:52:29.745 [DEBUG] [Thread-120094] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:52:29.745 [DEBUG] [Thread-120094] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:52:29.745 [DEBUG] [Thread-120094] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:52:29.745 [DEBUG] [Thread-120094] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:52:29.758 [INFO] [Thread-120094] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:52:29.759 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:52:29.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:52:30.591 [DEBUG] [Thread-120094] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:52:30.591 [DEBUG] [Thread-120094] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:52:30.640 [DEBUG] [Thread-120094] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:52:30.640 [DEBUG] [Thread-120094] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:52:30.649 [DEBUG] [Thread-120094] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:52:30.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:52:30.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:52:30.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:52:30.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:52:30.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:52:30.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:52:30.684 [DEBUG] [Thread-120094] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:52:35.029 [DEBUG] [Thread-120096 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:52:41.041 [DEBUG] [Thread-120097 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:52:56.087 [DEBUG] [Thread-120098 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:53:00.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:53:00.681 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:53:00.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:53:01.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 52, 48), 44.48, 4.1, 0.0, 34.0, 25.11, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:53:01.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:52:48
2025-11-03T17:53:01.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:53:01.722 [DEBUG] [Thread-120099] [transport.py] [_log()] starting thread (client mode): 0xeda1990
2025-11-03T17:53:01.722 [DEBUG] [Thread-120099] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:53:01.742 [DEBUG] [Thread-120099] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:53:01.742 [INFO] [Thread-120099] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:53:01.745 [DEBUG] [Thread-120099] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:53:01.745 [DEBUG] [Thread-120099] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:53:01.745 [DEBUG] [Thread-120099] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:53:01.745 [DEBUG] [Thread-120099] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:53:01.745 [DEBUG] [Thread-120099] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:53:01.745 [DEBUG] [Thread-120099] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:53:01.745 [DEBUG] [Thread-120099] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:53:01.745 [DEBUG] [Thread-120099] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:53:01.745 [DEBUG] [Thread-120099] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:53:01.745 [DEBUG] [Thread-120099] [transport.py] [_log()] client lang: <none>
2025-11-03T17:53:01.745 [DEBUG] [Thread-120099] [transport.py] [_log()] server lang: <none>
2025-11-03T17:53:01.745 [DEBUG] [Thread-120099] [transport.py] [_log()] kex follows: False
2025-11-03T17:53:01.745 [DEBUG] [Thread-120099] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:53:01.745 [DEBUG] [Thread-120099] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:53:01.745 [DEBUG] [Thread-120099] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:53:01.745 [DEBUG] [Thread-120099] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:53:01.745 [DEBUG] [Thread-120099] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:53:01.745 [DEBUG] [Thread-120099] [transport.py] [_log()] Compression: none
2025-11-03T17:53:01.745 [DEBUG] [Thread-120099] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:53:01.761 [DEBUG] [Thread-120099] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:53:01.761 [DEBUG] [Thread-120099] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:53:01.761 [DEBUG] [Thread-120099] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:53:01.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:53:01.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:53:01.762 [DEBUG] [Thread-120099] [transport.py] [_log()] userauth is OK
2025-11-03T17:53:01.762 [DEBUG] [Thread-120099] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:53:01.762 [DEBUG] [Thread-120099] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:53:01.762 [DEBUG] [Thread-120099] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:53:01.762 [DEBUG] [Thread-120099] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:53:01.777 [INFO] [Thread-120099] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:53:01.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:53:02.407 [DEBUG] [Thread-120099] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:53:02.407 [DEBUG] [Thread-120099] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:53:02.407 [DEBUG] [Thread-120099] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:53:02.448 [DEBUG] [Thread-120099] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:53:02.448 [DEBUG] [Thread-120099] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:53:02.451 [DEBUG] [Thread-120099] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:53:02.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:53:02.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:53:02.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:53:02.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:53:02.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:53:02.471 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:53:02.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:53:02.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:53:02.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:53:02.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.661213 -999.00  +25.00  32.03      8  -10.30 1 1 2 1 1   887    0 33.70 -49.57 ----- 33.2 32.0 297.8 36.5 26.4 -32.9 26.6 -32.1 27.5 -32.1 27.7 -32.5
2025-11-03T17:53:02.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:53:02.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:53:02.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.661213
2025-11-03T17:53:02.480 [DEBUG] [Thread-120099] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:53:02.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:53:02.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:53:02.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:53:02.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:53:02.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:53:02.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:52:48', tmtdew=44.48, humidity=4.1, cloud=0.0, wind=34.0, temperature=25.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:52:08.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:53:02.554 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:53:02.565 [DEBUG] [Thread-120102] [transport.py] [_log()] starting thread (client mode): 0x11763d30
2025-11-03T17:53:02.565 [DEBUG] [Thread-120102] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:53:02.579 [DEBUG] [Thread-120102] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:53:02.579 [INFO] [Thread-120102] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:53:02.587 [DEBUG] [Thread-120102] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:53:02.587 [DEBUG] [Thread-120102] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:53:02.587 [DEBUG] [Thread-120102] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:53:02.587 [DEBUG] [Thread-120102] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:53:02.587 [DEBUG] [Thread-120102] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:53:02.587 [DEBUG] [Thread-120102] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:53:02.587 [DEBUG] [Thread-120102] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:53:02.587 [DEBUG] [Thread-120102] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:53:02.587 [DEBUG] [Thread-120102] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:53:02.587 [DEBUG] [Thread-120102] [transport.py] [_log()] client lang: <none>
2025-11-03T17:53:02.587 [DEBUG] [Thread-120102] [transport.py] [_log()] server lang: <none>
2025-11-03T17:53:02.587 [DEBUG] [Thread-120102] [transport.py] [_log()] kex follows: False
2025-11-03T17:53:02.587 [DEBUG] [Thread-120102] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:53:02.587 [DEBUG] [Thread-120102] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:53:02.587 [DEBUG] [Thread-120102] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:53:02.587 [DEBUG] [Thread-120102] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:53:02.587 [DEBUG] [Thread-120102] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:53:02.587 [DEBUG] [Thread-120102] [transport.py] [_log()] Compression: none
2025-11-03T17:53:02.587 [DEBUG] [Thread-120102] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:53:02.644 [DEBUG] [Thread-120102] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:53:02.644 [DEBUG] [Thread-120102] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:53:02.644 [DEBUG] [Thread-120102] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:53:02.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:53:02.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:53:02.701 [DEBUG] [Thread-120102] [transport.py] [_log()] userauth is OK
2025-11-03T17:53:02.701 [DEBUG] [Thread-120102] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:53:02.701 [DEBUG] [Thread-120102] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:53:02.701 [DEBUG] [Thread-120102] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:53:02.701 [DEBUG] [Thread-120102] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:53:02.715 [INFO] [Thread-120102] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:53:02.715 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:53:02.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:53:03.524 [DEBUG] [Thread-120102] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:53:03.525 [DEBUG] [Thread-120102] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:53:03.573 [DEBUG] [Thread-120102] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:53:03.574 [DEBUG] [Thread-120102] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:53:03.584 [DEBUG] [Thread-120102] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:53:03.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:53:03.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:53:03.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:53:03.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:53:03.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:53:03.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:53:03.620 [DEBUG] [Thread-120102] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:53:11.125 [DEBUG] [Thread-120104 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:53:26.174 [DEBUG] [Thread-120105 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:53:26.911 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:53:26.911 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:53:33.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:53:33.631 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:53:33.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:53:34.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 53, 20), 44.51, 4.08, 0.0, 33.91, 25.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:53:34.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:53:20
2025-11-03T17:53:34.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:53:34.710 [DEBUG] [Thread-120106] [transport.py] [_log()] starting thread (client mode): 0xeda3e80
2025-11-03T17:53:34.710 [DEBUG] [Thread-120106] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:53:34.731 [DEBUG] [Thread-120106] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:53:34.731 [INFO] [Thread-120106] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:53:34.735 [DEBUG] [Thread-120106] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:53:34.735 [DEBUG] [Thread-120106] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:53:34.735 [DEBUG] [Thread-120106] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:53:34.735 [DEBUG] [Thread-120106] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:53:34.735 [DEBUG] [Thread-120106] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:53:34.735 [DEBUG] [Thread-120106] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:53:34.735 [DEBUG] [Thread-120106] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:53:34.735 [DEBUG] [Thread-120106] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:53:34.735 [DEBUG] [Thread-120106] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:53:34.735 [DEBUG] [Thread-120106] [transport.py] [_log()] client lang: <none>
2025-11-03T17:53:34.735 [DEBUG] [Thread-120106] [transport.py] [_log()] server lang: <none>
2025-11-03T17:53:34.735 [DEBUG] [Thread-120106] [transport.py] [_log()] kex follows: False
2025-11-03T17:53:34.735 [DEBUG] [Thread-120106] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:53:34.736 [DEBUG] [Thread-120106] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:53:34.736 [DEBUG] [Thread-120106] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:53:34.736 [DEBUG] [Thread-120106] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:53:34.736 [DEBUG] [Thread-120106] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:53:34.736 [DEBUG] [Thread-120106] [transport.py] [_log()] Compression: none
2025-11-03T17:53:34.736 [DEBUG] [Thread-120106] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:53:34.752 [DEBUG] [Thread-120106] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:53:34.752 [DEBUG] [Thread-120106] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:53:34.753 [DEBUG] [Thread-120106] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:53:34.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:53:34.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:53:34.755 [DEBUG] [Thread-120106] [transport.py] [_log()] userauth is OK
2025-11-03T17:53:34.755 [DEBUG] [Thread-120106] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:53:34.755 [DEBUG] [Thread-120106] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:53:34.755 [DEBUG] [Thread-120106] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:53:34.756 [DEBUG] [Thread-120106] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:53:34.797 [INFO] [Thread-120106] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:53:34.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:53:35.296 [DEBUG] [Thread-120108 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:53:35.500 [DEBUG] [Thread-120106] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:53:35.500 [DEBUG] [Thread-120106] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:53:35.501 [DEBUG] [Thread-120106] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:53:35.541 [DEBUG] [Thread-120106] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:53:35.541 [DEBUG] [Thread-120106] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:53:35.545 [DEBUG] [Thread-120106] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:53:35.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:53:35.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:53:35.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:53:35.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:53:35.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:53:35.576 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:53:35.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:53:35.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:53:35.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:53:35.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.661560 -999.00  +24.70  25.63      8  -10.30 1 1 1 1 1   887    0 34.40 -50.70 ----- 23.7 25.6 301.6 42.1 26.4 -33.9 26.6 -32.7 27.3 -32.1 27.5 -33.0
2025-11-03T17:53:35.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:53:35.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:53:35.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.661560
2025-11-03T17:53:35.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:53:35.578 [DEBUG] [Thread-120106] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:53:35.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:53:35.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:53:35.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:53:35.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:53:35.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:53:20', tmtdew=44.51, humidity=4.08, cloud=0.0, wind=33.91, temperature=25.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:52:38.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:53:35.663 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:53:35.674 [DEBUG] [Thread-120110] [transport.py] [_log()] starting thread (client mode): 0x141d9120
2025-11-03T17:53:35.674 [DEBUG] [Thread-120110] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:53:35.688 [DEBUG] [Thread-120110] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:53:35.688 [INFO] [Thread-120110] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:53:35.696 [DEBUG] [Thread-120110] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:53:35.696 [DEBUG] [Thread-120110] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:53:35.696 [DEBUG] [Thread-120110] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:53:35.696 [DEBUG] [Thread-120110] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:53:35.696 [DEBUG] [Thread-120110] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:53:35.696 [DEBUG] [Thread-120110] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:53:35.696 [DEBUG] [Thread-120110] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:53:35.697 [DEBUG] [Thread-120110] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:53:35.697 [DEBUG] [Thread-120110] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:53:35.697 [DEBUG] [Thread-120110] [transport.py] [_log()] client lang: <none>
2025-11-03T17:53:35.697 [DEBUG] [Thread-120110] [transport.py] [_log()] server lang: <none>
2025-11-03T17:53:35.697 [DEBUG] [Thread-120110] [transport.py] [_log()] kex follows: False
2025-11-03T17:53:35.697 [DEBUG] [Thread-120110] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:53:35.697 [DEBUG] [Thread-120110] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:53:35.697 [DEBUG] [Thread-120110] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:53:35.698 [DEBUG] [Thread-120110] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:53:35.698 [DEBUG] [Thread-120110] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:53:35.698 [DEBUG] [Thread-120110] [transport.py] [_log()] Compression: none
2025-11-03T17:53:35.698 [DEBUG] [Thread-120110] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:53:35.754 [DEBUG] [Thread-120110] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:53:35.754 [DEBUG] [Thread-120110] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:53:35.755 [DEBUG] [Thread-120110] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:53:35.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:53:35.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:53:35.809 [DEBUG] [Thread-120110] [transport.py] [_log()] userauth is OK
2025-11-03T17:53:35.810 [DEBUG] [Thread-120110] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:53:35.810 [DEBUG] [Thread-120110] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:53:35.810 [DEBUG] [Thread-120110] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:53:35.810 [DEBUG] [Thread-120110] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:53:35.830 [INFO] [Thread-120110] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:53:35.830 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:53:35.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:53:36.645 [DEBUG] [Thread-120110] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:53:36.645 [DEBUG] [Thread-120110] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:53:36.693 [DEBUG] [Thread-120110] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:53:36.693 [DEBUG] [Thread-120110] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:53:36.702 [DEBUG] [Thread-120110] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:53:36.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:53:36.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:53:36.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:53:36.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:53:36.731 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:53:36.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:53:36.740 [DEBUG] [Thread-120110] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:53:41.217 [DEBUG] [Thread-120112 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:53:56.269 [DEBUG] [Thread-120113 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:54:06.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:54:06.762 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:54:06.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:54:07.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 53, 52), 44.45, 4.12, 0.0, 36.19, 25.01, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:54:07.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:53:52
2025-11-03T17:54:07.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:54:07.695 [DEBUG] [Thread-120114] [transport.py] [_log()] starting thread (client mode): 0x141daef0
2025-11-03T17:54:07.696 [DEBUG] [Thread-120114] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:54:07.714 [DEBUG] [Thread-120114] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:54:07.714 [INFO] [Thread-120114] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:54:07.717 [DEBUG] [Thread-120114] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:54:07.717 [DEBUG] [Thread-120114] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:54:07.718 [DEBUG] [Thread-120114] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:54:07.718 [DEBUG] [Thread-120114] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:54:07.718 [DEBUG] [Thread-120114] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:54:07.718 [DEBUG] [Thread-120114] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:54:07.718 [DEBUG] [Thread-120114] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:54:07.718 [DEBUG] [Thread-120114] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:54:07.718 [DEBUG] [Thread-120114] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:54:07.718 [DEBUG] [Thread-120114] [transport.py] [_log()] client lang: <none>
2025-11-03T17:54:07.718 [DEBUG] [Thread-120114] [transport.py] [_log()] server lang: <none>
2025-11-03T17:54:07.718 [DEBUG] [Thread-120114] [transport.py] [_log()] kex follows: False
2025-11-03T17:54:07.718 [DEBUG] [Thread-120114] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:54:07.718 [DEBUG] [Thread-120114] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:54:07.718 [DEBUG] [Thread-120114] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:54:07.718 [DEBUG] [Thread-120114] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:54:07.718 [DEBUG] [Thread-120114] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:54:07.719 [DEBUG] [Thread-120114] [transport.py] [_log()] Compression: none
2025-11-03T17:54:07.719 [DEBUG] [Thread-120114] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:54:07.739 [DEBUG] [Thread-120114] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:54:07.739 [DEBUG] [Thread-120114] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:54:07.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:54:07.740 [DEBUG] [Thread-120114] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:54:07.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:54:07.743 [DEBUG] [Thread-120114] [transport.py] [_log()] userauth is OK
2025-11-03T17:54:07.743 [DEBUG] [Thread-120114] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:54:07.743 [DEBUG] [Thread-120114] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:54:07.743 [DEBUG] [Thread-120114] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:54:07.743 [DEBUG] [Thread-120114] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:54:07.760 [INFO] [Thread-120114] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:54:07.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:54:08.443 [DEBUG] [Thread-120114] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:54:08.444 [DEBUG] [Thread-120114] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:54:08.444 [DEBUG] [Thread-120114] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:54:08.484 [DEBUG] [Thread-120114] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:54:08.484 [DEBUG] [Thread-120114] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:54:08.487 [DEBUG] [Thread-120114] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:54:08.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:54:08.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:54:08.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:54:08.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:54:08.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:54:08.504 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:54:08.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:54:08.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:54:08.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:54:08.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.661908 -999.00  +24.80  32.20      8  -10.30 1 1 2 1 1   887    0 33.53 -56.26 ----- 33.7 32.2 308.6 39.7 26.4 -33.6 26.6 -32.5 27.3 -32.1 27.6 -32.9
2025-11-03T17:54:08.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:54:08.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:54:08.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.661908
2025-11-03T17:54:08.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:54:08.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:54:08.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:54:08.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:54:08.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:54:08.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:53:52', tmtdew=44.45, humidity=4.12, cloud=0.0, wind=36.19, temperature=25.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:53:08.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:54:08.505 [DEBUG] [Thread-120114] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:54:08.577 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:54:08.588 [DEBUG] [Thread-120117] [transport.py] [_log()] starting thread (client mode): 0xeda2c20
2025-11-03T17:54:08.588 [DEBUG] [Thread-120117] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:54:08.603 [DEBUG] [Thread-120117] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:54:08.603 [INFO] [Thread-120117] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:54:08.610 [DEBUG] [Thread-120117] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:54:08.610 [DEBUG] [Thread-120117] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:54:08.611 [DEBUG] [Thread-120117] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:54:08.611 [DEBUG] [Thread-120117] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:54:08.611 [DEBUG] [Thread-120117] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:54:08.611 [DEBUG] [Thread-120117] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:54:08.611 [DEBUG] [Thread-120117] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:54:08.611 [DEBUG] [Thread-120117] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:54:08.611 [DEBUG] [Thread-120117] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:54:08.611 [DEBUG] [Thread-120117] [transport.py] [_log()] client lang: <none>
2025-11-03T17:54:08.611 [DEBUG] [Thread-120117] [transport.py] [_log()] server lang: <none>
2025-11-03T17:54:08.611 [DEBUG] [Thread-120117] [transport.py] [_log()] kex follows: False
2025-11-03T17:54:08.611 [DEBUG] [Thread-120117] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:54:08.611 [DEBUG] [Thread-120117] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:54:08.611 [DEBUG] [Thread-120117] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:54:08.611 [DEBUG] [Thread-120117] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:54:08.611 [DEBUG] [Thread-120117] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:54:08.611 [DEBUG] [Thread-120117] [transport.py] [_log()] Compression: none
2025-11-03T17:54:08.611 [DEBUG] [Thread-120117] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:54:08.668 [DEBUG] [Thread-120117] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:54:08.668 [DEBUG] [Thread-120117] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:54:08.668 [DEBUG] [Thread-120117] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:54:08.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:54:08.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:54:08.725 [DEBUG] [Thread-120117] [transport.py] [_log()] userauth is OK
2025-11-03T17:54:08.725 [DEBUG] [Thread-120117] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:54:08.725 [DEBUG] [Thread-120117] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:54:08.725 [DEBUG] [Thread-120117] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:54:08.725 [DEBUG] [Thread-120117] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:54:08.738 [INFO] [Thread-120117] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:54:08.738 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:54:08.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:54:09.552 [DEBUG] [Thread-120117] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:54:09.552 [DEBUG] [Thread-120117] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:54:09.600 [DEBUG] [Thread-120117] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:54:09.601 [DEBUG] [Thread-120117] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:54:09.610 [DEBUG] [Thread-120117] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:54:09.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:54:09.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:54:09.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:54:09.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:54:09.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:54:09.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:54:09.647 [DEBUG] [Thread-120117] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:54:11.303 [DEBUG] [Thread-120119 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:54:26.358 [DEBUG] [Thread-120120 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:54:27.051 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:54:27.052 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:54:35.371 [DEBUG] [Thread-120121 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:54:39.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:54:39.670 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:54:39.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:54:40.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 54, 25), 44.45, 4.12, 0.0, 36.45, 25.01, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:54:40.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:54:25
2025-11-03T17:54:40.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:54:40.691 [DEBUG] [Thread-120122] [transport.py] [_log()] starting thread (client mode): 0xed12d40
2025-11-03T17:54:40.691 [DEBUG] [Thread-120122] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:54:40.712 [DEBUG] [Thread-120122] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:54:40.712 [INFO] [Thread-120122] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:54:40.715 [DEBUG] [Thread-120122] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:54:40.715 [DEBUG] [Thread-120122] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:54:40.715 [DEBUG] [Thread-120122] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:54:40.715 [DEBUG] [Thread-120122] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:54:40.715 [DEBUG] [Thread-120122] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:54:40.715 [DEBUG] [Thread-120122] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:54:40.715 [DEBUG] [Thread-120122] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:54:40.715 [DEBUG] [Thread-120122] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:54:40.715 [DEBUG] [Thread-120122] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:54:40.715 [DEBUG] [Thread-120122] [transport.py] [_log()] client lang: <none>
2025-11-03T17:54:40.715 [DEBUG] [Thread-120122] [transport.py] [_log()] server lang: <none>
2025-11-03T17:54:40.715 [DEBUG] [Thread-120122] [transport.py] [_log()] kex follows: False
2025-11-03T17:54:40.715 [DEBUG] [Thread-120122] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:54:40.715 [DEBUG] [Thread-120122] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:54:40.716 [DEBUG] [Thread-120122] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:54:40.716 [DEBUG] [Thread-120122] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:54:40.716 [DEBUG] [Thread-120122] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:54:40.716 [DEBUG] [Thread-120122] [transport.py] [_log()] Compression: none
2025-11-03T17:54:40.716 [DEBUG] [Thread-120122] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:54:40.731 [DEBUG] [Thread-120122] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:54:40.731 [DEBUG] [Thread-120122] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:54:40.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:54:40.731 [DEBUG] [Thread-120122] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:54:40.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:54:40.732 [DEBUG] [Thread-120122] [transport.py] [_log()] userauth is OK
2025-11-03T17:54:40.732 [DEBUG] [Thread-120122] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:54:40.732 [DEBUG] [Thread-120122] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:54:40.732 [DEBUG] [Thread-120122] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:54:40.732 [DEBUG] [Thread-120122] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:54:40.744 [INFO] [Thread-120122] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:54:40.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:54:41.388 [DEBUG] [Thread-120124 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:54:41.486 [DEBUG] [Thread-120122] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:54:41.486 [DEBUG] [Thread-120122] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:54:41.486 [DEBUG] [Thread-120122] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:54:41.526 [DEBUG] [Thread-120122] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:54:41.526 [DEBUG] [Thread-120122] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:54:41.528 [DEBUG] [Thread-120122] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:54:41.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:54:41.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:54:41.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:54:41.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:54:41.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:54:41.542 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:54:41.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:54:41.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:54:41.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:54:41.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.662602 -999.00  +24.60  26.88      9  -10.30 1 1 1 1 1   887    0 33.10 -69.33 ----- 25.9 26.9 307.0 36.4 26.3 -33.3 26.5 -32.2 27.2 -32.5 27.4 -32.9
2025-11-03T17:54:41.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:54:41.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:54:41.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.662602
2025-11-03T17:54:41.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:54:41.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:54:41.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:54:41.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:54:41.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:54:41.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:54:25', tmtdew=44.45, humidity=4.12, cloud=0.0, wind=36.45, temperature=25.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:54:08.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:54:41.544 [DEBUG] [Thread-120122] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:54:41.620 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:54:41.632 [DEBUG] [Thread-120126] [transport.py] [_log()] starting thread (client mode): 0xed11ff0
2025-11-03T17:54:41.632 [DEBUG] [Thread-120126] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:54:41.647 [DEBUG] [Thread-120126] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:54:41.647 [INFO] [Thread-120126] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:54:41.654 [DEBUG] [Thread-120126] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:54:41.654 [DEBUG] [Thread-120126] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:54:41.654 [DEBUG] [Thread-120126] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:54:41.654 [DEBUG] [Thread-120126] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:54:41.654 [DEBUG] [Thread-120126] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:54:41.654 [DEBUG] [Thread-120126] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:54:41.654 [DEBUG] [Thread-120126] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:54:41.654 [DEBUG] [Thread-120126] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:54:41.654 [DEBUG] [Thread-120126] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:54:41.654 [DEBUG] [Thread-120126] [transport.py] [_log()] client lang: <none>
2025-11-03T17:54:41.654 [DEBUG] [Thread-120126] [transport.py] [_log()] server lang: <none>
2025-11-03T17:54:41.654 [DEBUG] [Thread-120126] [transport.py] [_log()] kex follows: False
2025-11-03T17:54:41.655 [DEBUG] [Thread-120126] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:54:41.655 [DEBUG] [Thread-120126] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:54:41.655 [DEBUG] [Thread-120126] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:54:41.655 [DEBUG] [Thread-120126] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:54:41.655 [DEBUG] [Thread-120126] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:54:41.655 [DEBUG] [Thread-120126] [transport.py] [_log()] Compression: none
2025-11-03T17:54:41.655 [DEBUG] [Thread-120126] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:54:41.712 [DEBUG] [Thread-120126] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:54:41.712 [DEBUG] [Thread-120126] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:54:41.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:54:41.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:54:41.713 [DEBUG] [Thread-120126] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:54:41.769 [DEBUG] [Thread-120126] [transport.py] [_log()] userauth is OK
2025-11-03T17:54:41.769 [DEBUG] [Thread-120126] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:54:41.769 [DEBUG] [Thread-120126] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:54:41.769 [DEBUG] [Thread-120126] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:54:41.769 [DEBUG] [Thread-120126] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:54:41.782 [INFO] [Thread-120126] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:54:41.782 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:54:41.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:54:42.594 [DEBUG] [Thread-120126] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:54:42.594 [DEBUG] [Thread-120126] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:54:42.642 [DEBUG] [Thread-120126] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:54:42.642 [DEBUG] [Thread-120126] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:54:42.651 [DEBUG] [Thread-120126] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:54:42.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:54:42.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:54:42.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:54:42.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:54:42.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:54:42.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:54:42.682 [DEBUG] [Thread-120126] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:54:56.420 [DEBUG] [Thread-120128 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:55:11.475 [DEBUG] [Thread-120129 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:55:12.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:55:12.698 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:55:12.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:55:13.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 54, 57), 44.36, 4.1, 0.0, 34.48, 25.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:55:13.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:54:57
2025-11-03T17:55:13.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:55:13.732 [DEBUG] [Thread-120130] [transport.py] [_log()] starting thread (client mode): 0xeda2c80
2025-11-03T17:55:13.732 [DEBUG] [Thread-120130] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:55:13.753 [DEBUG] [Thread-120130] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:55:13.753 [INFO] [Thread-120130] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:55:13.756 [DEBUG] [Thread-120130] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:55:13.756 [DEBUG] [Thread-120130] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:55:13.756 [DEBUG] [Thread-120130] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:55:13.756 [DEBUG] [Thread-120130] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:55:13.756 [DEBUG] [Thread-120130] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:55:13.756 [DEBUG] [Thread-120130] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:55:13.756 [DEBUG] [Thread-120130] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:55:13.756 [DEBUG] [Thread-120130] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:55:13.756 [DEBUG] [Thread-120130] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:55:13.756 [DEBUG] [Thread-120130] [transport.py] [_log()] client lang: <none>
2025-11-03T17:55:13.757 [DEBUG] [Thread-120130] [transport.py] [_log()] server lang: <none>
2025-11-03T17:55:13.757 [DEBUG] [Thread-120130] [transport.py] [_log()] kex follows: False
2025-11-03T17:55:13.757 [DEBUG] [Thread-120130] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:55:13.757 [DEBUG] [Thread-120130] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:55:13.757 [DEBUG] [Thread-120130] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:55:13.757 [DEBUG] [Thread-120130] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:55:13.757 [DEBUG] [Thread-120130] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:55:13.757 [DEBUG] [Thread-120130] [transport.py] [_log()] Compression: none
2025-11-03T17:55:13.757 [DEBUG] [Thread-120130] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:55:13.774 [DEBUG] [Thread-120130] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:55:13.775 [DEBUG] [Thread-120130] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:55:13.775 [DEBUG] [Thread-120130] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:55:13.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:55:13.776 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:55:13.777 [DEBUG] [Thread-120130] [transport.py] [_log()] userauth is OK
2025-11-03T17:55:13.777 [DEBUG] [Thread-120130] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:55:13.777 [DEBUG] [Thread-120130] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:55:13.777 [DEBUG] [Thread-120130] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:55:13.778 [DEBUG] [Thread-120130] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:55:13.810 [INFO] [Thread-120130] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:55:13.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:55:14.725 [DEBUG] [Thread-120130] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:55:14.725 [DEBUG] [Thread-120130] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:55:14.725 [DEBUG] [Thread-120130] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:55:14.766 [DEBUG] [Thread-120130] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:55:14.766 [DEBUG] [Thread-120130] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:55:14.769 [DEBUG] [Thread-120130] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:55:14.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:55:14.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:55:14.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:55:14.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:55:14.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:55:14.788 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:55:14.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:55:14.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:55:14.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:55:14.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.662949 -999.00  +24.70  24.92      9  -10.20 1 1 1 1 1   887    0 34.41 -69.63 ----- 25.8 24.9 294.0 33.5 26.3 -33.2 26.5 -32.4 27.2 -33.0 27.5 -32.5
2025-11-03T17:55:14.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:55:14.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:55:14.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.662949
2025-11-03T17:55:14.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:55:14.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:55:14.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:55:14.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:55:14.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:55:14.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:54:57', tmtdew=44.36, humidity=4.1, cloud=0.0, wind=34.48, temperature=25.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:54:38.794', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:55:14.789 [DEBUG] [Thread-120130] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:55:14.860 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:55:14.871 [DEBUG] [Thread-120133] [transport.py] [_log()] starting thread (client mode): 0x11760580
2025-11-03T17:55:14.871 [DEBUG] [Thread-120133] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:55:14.885 [DEBUG] [Thread-120133] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:55:14.885 [INFO] [Thread-120133] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:55:14.893 [DEBUG] [Thread-120133] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:55:14.893 [DEBUG] [Thread-120133] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:55:14.893 [DEBUG] [Thread-120133] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:55:14.893 [DEBUG] [Thread-120133] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:55:14.893 [DEBUG] [Thread-120133] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:55:14.893 [DEBUG] [Thread-120133] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:55:14.893 [DEBUG] [Thread-120133] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:55:14.893 [DEBUG] [Thread-120133] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:55:14.893 [DEBUG] [Thread-120133] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:55:14.893 [DEBUG] [Thread-120133] [transport.py] [_log()] client lang: <none>
2025-11-03T17:55:14.893 [DEBUG] [Thread-120133] [transport.py] [_log()] server lang: <none>
2025-11-03T17:55:14.893 [DEBUG] [Thread-120133] [transport.py] [_log()] kex follows: False
2025-11-03T17:55:14.893 [DEBUG] [Thread-120133] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:55:14.893 [DEBUG] [Thread-120133] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:55:14.893 [DEBUG] [Thread-120133] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:55:14.893 [DEBUG] [Thread-120133] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:55:14.893 [DEBUG] [Thread-120133] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:55:14.893 [DEBUG] [Thread-120133] [transport.py] [_log()] Compression: none
2025-11-03T17:55:14.893 [DEBUG] [Thread-120133] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:55:14.952 [DEBUG] [Thread-120133] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:55:14.952 [DEBUG] [Thread-120133] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:55:14.952 [DEBUG] [Thread-120133] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:55:14.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:55:14.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:55:15.009 [DEBUG] [Thread-120133] [transport.py] [_log()] userauth is OK
2025-11-03T17:55:15.009 [DEBUG] [Thread-120133] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:55:15.009 [DEBUG] [Thread-120133] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:55:15.009 [DEBUG] [Thread-120133] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:55:15.009 [DEBUG] [Thread-120133] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:55:15.023 [INFO] [Thread-120133] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:55:15.023 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:55:15.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:55:15.853 [DEBUG] [Thread-120133] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:55:15.862 [DEBUG] [Thread-120133] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:55:15.901 [DEBUG] [Thread-120133] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:55:15.901 [DEBUG] [Thread-120133] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:55:15.911 [DEBUG] [Thread-120133] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:55:15.920 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:55:15.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:55:15.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:55:15.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:55:15.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:55:15.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:55:15.946 [DEBUG] [Thread-120133] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:55:26.517 [DEBUG] [Thread-120135 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:55:27.194 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:55:27.196 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:55:35.498 [DEBUG] [Thread-120136 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:55:41.569 [DEBUG] [Thread-120137 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:55:45.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:55:45.969 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:55:45.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:55:46.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 55, 29), 44.22, 4.15, 0.0, 32.75, 25.03, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:55:46.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:55:29
2025-11-03T17:55:46.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:55:47.011 [DEBUG] [Thread-120138] [transport.py] [_log()] starting thread (client mode): 0x11760a30
2025-11-03T17:55:47.020 [DEBUG] [Thread-120138] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:55:47.032 [DEBUG] [Thread-120138] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:55:47.032 [INFO] [Thread-120138] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:55:47.035 [DEBUG] [Thread-120138] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:55:47.035 [DEBUG] [Thread-120138] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:55:47.035 [DEBUG] [Thread-120138] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:55:47.035 [DEBUG] [Thread-120138] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:55:47.036 [DEBUG] [Thread-120138] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:55:47.036 [DEBUG] [Thread-120138] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:55:47.036 [DEBUG] [Thread-120138] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:55:47.036 [DEBUG] [Thread-120138] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:55:47.036 [DEBUG] [Thread-120138] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:55:47.036 [DEBUG] [Thread-120138] [transport.py] [_log()] client lang: <none>
2025-11-03T17:55:47.036 [DEBUG] [Thread-120138] [transport.py] [_log()] server lang: <none>
2025-11-03T17:55:47.036 [DEBUG] [Thread-120138] [transport.py] [_log()] kex follows: False
2025-11-03T17:55:47.036 [DEBUG] [Thread-120138] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:55:47.036 [DEBUG] [Thread-120138] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:55:47.036 [DEBUG] [Thread-120138] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:55:47.036 [DEBUG] [Thread-120138] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:55:47.037 [DEBUG] [Thread-120138] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:55:47.037 [DEBUG] [Thread-120138] [transport.py] [_log()] Compression: none
2025-11-03T17:55:47.037 [DEBUG] [Thread-120138] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:55:47.055 [DEBUG] [Thread-120138] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:55:47.056 [DEBUG] [Thread-120138] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:55:47.057 [DEBUG] [Thread-120138] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:55:47.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:55:47.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:55:47.060 [DEBUG] [Thread-120138] [transport.py] [_log()] userauth is OK
2025-11-03T17:55:47.060 [DEBUG] [Thread-120138] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:55:47.060 [DEBUG] [Thread-120138] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:55:47.060 [DEBUG] [Thread-120138] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:55:47.060 [DEBUG] [Thread-120138] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:55:47.084 [INFO] [Thread-120138] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:55:47.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:55:47.702 [DEBUG] [Thread-120138] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:55:47.702 [DEBUG] [Thread-120138] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:55:47.702 [DEBUG] [Thread-120138] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:55:47.743 [DEBUG] [Thread-120138] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:55:47.743 [DEBUG] [Thread-120138] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:55:47.746 [DEBUG] [Thread-120138] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:55:47.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:55:47.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:55:47.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:55:47.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:55:47.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:55:47.764 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:55:47.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:55:47.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:55:47.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:55:47.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.663296 -999.00  +24.80  31.69      9  -10.00 1 1 2 1 1   887    0 32.58 -63.23 ----- 27.9 31.7 312.2 36.1 26.3 -33.2 26.5 -32.2 27.2 -32.3 27.5 -32.4
2025-11-03T17:55:47.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:55:47.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:55:47.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.663296
2025-11-03T17:55:47.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:55:47.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:55:47.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:55:47.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:55:47.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:55:47.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:55:29', tmtdew=44.22, humidity=4.15, cloud=0.0, wind=32.75, temperature=25.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:55:08.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:55:47.765 [DEBUG] [Thread-120138] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:55:47.837 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:55:47.849 [DEBUG] [Thread-120141] [transport.py] [_log()] starting thread (client mode): 0xed23970
2025-11-03T17:55:47.849 [DEBUG] [Thread-120141] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:55:47.864 [DEBUG] [Thread-120141] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:55:47.864 [INFO] [Thread-120141] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:55:47.872 [DEBUG] [Thread-120141] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:55:47.872 [DEBUG] [Thread-120141] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:55:47.872 [DEBUG] [Thread-120141] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:55:47.872 [DEBUG] [Thread-120141] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:55:47.872 [DEBUG] [Thread-120141] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:55:47.872 [DEBUG] [Thread-120141] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:55:47.872 [DEBUG] [Thread-120141] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:55:47.872 [DEBUG] [Thread-120141] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:55:47.872 [DEBUG] [Thread-120141] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:55:47.872 [DEBUG] [Thread-120141] [transport.py] [_log()] client lang: <none>
2025-11-03T17:55:47.872 [DEBUG] [Thread-120141] [transport.py] [_log()] server lang: <none>
2025-11-03T17:55:47.872 [DEBUG] [Thread-120141] [transport.py] [_log()] kex follows: False
2025-11-03T17:55:47.872 [DEBUG] [Thread-120141] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:55:47.872 [DEBUG] [Thread-120141] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:55:47.872 [DEBUG] [Thread-120141] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:55:47.872 [DEBUG] [Thread-120141] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:55:47.872 [DEBUG] [Thread-120141] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:55:47.872 [DEBUG] [Thread-120141] [transport.py] [_log()] Compression: none
2025-11-03T17:55:47.872 [DEBUG] [Thread-120141] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:55:47.928 [DEBUG] [Thread-120141] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:55:47.928 [DEBUG] [Thread-120141] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:55:47.928 [DEBUG] [Thread-120141] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:55:47.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:55:47.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:55:47.985 [DEBUG] [Thread-120141] [transport.py] [_log()] userauth is OK
2025-11-03T17:55:47.985 [DEBUG] [Thread-120141] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:55:47.985 [DEBUG] [Thread-120141] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:55:47.985 [DEBUG] [Thread-120141] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:55:47.985 [DEBUG] [Thread-120141] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:55:47.998 [INFO] [Thread-120141] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:55:47.998 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:55:47.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:55:48.868 [DEBUG] [Thread-120141] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:55:48.868 [DEBUG] [Thread-120141] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:55:48.916 [DEBUG] [Thread-120141] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:55:48.917 [DEBUG] [Thread-120141] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:55:48.926 [DEBUG] [Thread-120141] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:55:48.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:55:48.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:55:48.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:55:48.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:55:48.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:55:48.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:55:48.963 [DEBUG] [Thread-120141] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:55:56.604 [DEBUG] [Thread-120143 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:56:11.663 [DEBUG] [Thread-120144 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:56:18.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:56:18.974 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:56:18.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:56:19.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 56, 2), 44.22, 4.15, 0.0, 29.57, 25.03, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:56:19.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:56:02
2025-11-03T17:56:19.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:56:19.982 [DEBUG] [Thread-120145] [transport.py] [_log()] starting thread (client mode): 0xed22bc0
2025-11-03T17:56:19.982 [DEBUG] [Thread-120145] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:56:19.995 [DEBUG] [Thread-120145] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:56:19.996 [INFO] [Thread-120145] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:56:20.006 [DEBUG] [Thread-120145] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:56:20.006 [DEBUG] [Thread-120145] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:56:20.006 [DEBUG] [Thread-120145] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:56:20.006 [DEBUG] [Thread-120145] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:56:20.006 [DEBUG] [Thread-120145] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:56:20.006 [DEBUG] [Thread-120145] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:56:20.006 [DEBUG] [Thread-120145] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:56:20.006 [DEBUG] [Thread-120145] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:56:20.006 [DEBUG] [Thread-120145] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:56:20.006 [DEBUG] [Thread-120145] [transport.py] [_log()] client lang: <none>
2025-11-03T17:56:20.006 [DEBUG] [Thread-120145] [transport.py] [_log()] server lang: <none>
2025-11-03T17:56:20.006 [DEBUG] [Thread-120145] [transport.py] [_log()] kex follows: False
2025-11-03T17:56:20.006 [DEBUG] [Thread-120145] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:56:20.006 [DEBUG] [Thread-120145] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:56:20.007 [DEBUG] [Thread-120145] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:56:20.007 [DEBUG] [Thread-120145] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:56:20.007 [DEBUG] [Thread-120145] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:56:20.007 [DEBUG] [Thread-120145] [transport.py] [_log()] Compression: none
2025-11-03T17:56:20.007 [DEBUG] [Thread-120145] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:56:20.020 [DEBUG] [Thread-120145] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:56:20.021 [DEBUG] [Thread-120145] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:56:20.021 [DEBUG] [Thread-120145] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:56:20.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:56:20.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:56:20.023 [DEBUG] [Thread-120145] [transport.py] [_log()] userauth is OK
2025-11-03T17:56:20.023 [DEBUG] [Thread-120145] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:56:20.023 [DEBUG] [Thread-120145] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:56:20.023 [DEBUG] [Thread-120145] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:56:20.023 [DEBUG] [Thread-120145] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:56:20.037 [INFO] [Thread-120145] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:56:20.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:56:20.681 [DEBUG] [Thread-120145] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:56:20.681 [DEBUG] [Thread-120145] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:56:20.681 [DEBUG] [Thread-120145] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:56:20.722 [DEBUG] [Thread-120145] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:56:20.722 [DEBUG] [Thread-120145] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:56:20.725 [DEBUG] [Thread-120145] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:56:20.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:56:20.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:56:20.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:56:20.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:56:20.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:56:20.749 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:56:20.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:56:20.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:56:20.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:56:20.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.663644 -999.00  +24.60  25.39      9  -10.00 1 1 1 1 1   887    0 33.40 -58.43 ----- 29.2 25.4 290.6 40.0 26.3 -33.3 26.5 -32.4 27.3 -31.5 27.5 -32.3
2025-11-03T17:56:20.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:56:20.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:56:20.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.663644
2025-11-03T17:56:20.758 [DEBUG] [Thread-120145] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:56:20.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:56:20.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:56:20.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:56:20.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:56:20.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:56:20.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:56:02', tmtdew=44.22, humidity=4.15, cloud=0.0, wind=29.57, temperature=25.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:55:38.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:56:20.845 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:56:20.856 [DEBUG] [Thread-120148] [transport.py] [_log()] starting thread (client mode): 0x117e8760
2025-11-03T17:56:20.856 [DEBUG] [Thread-120148] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:56:20.870 [DEBUG] [Thread-120148] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:56:20.870 [INFO] [Thread-120148] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:56:20.878 [DEBUG] [Thread-120148] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:56:20.878 [DEBUG] [Thread-120148] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:56:20.878 [DEBUG] [Thread-120148] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:56:20.878 [DEBUG] [Thread-120148] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:56:20.878 [DEBUG] [Thread-120148] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:56:20.878 [DEBUG] [Thread-120148] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:56:20.878 [DEBUG] [Thread-120148] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:56:20.878 [DEBUG] [Thread-120148] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:56:20.878 [DEBUG] [Thread-120148] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:56:20.879 [DEBUG] [Thread-120148] [transport.py] [_log()] client lang: <none>
2025-11-03T17:56:20.879 [DEBUG] [Thread-120148] [transport.py] [_log()] server lang: <none>
2025-11-03T17:56:20.879 [DEBUG] [Thread-120148] [transport.py] [_log()] kex follows: False
2025-11-03T17:56:20.879 [DEBUG] [Thread-120148] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:56:20.879 [DEBUG] [Thread-120148] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:56:20.879 [DEBUG] [Thread-120148] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:56:20.879 [DEBUG] [Thread-120148] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:56:20.879 [DEBUG] [Thread-120148] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:56:20.879 [DEBUG] [Thread-120148] [transport.py] [_log()] Compression: none
2025-11-03T17:56:20.879 [DEBUG] [Thread-120148] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:56:20.938 [DEBUG] [Thread-120148] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:56:20.938 [DEBUG] [Thread-120148] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:56:20.939 [DEBUG] [Thread-120148] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:56:20.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:56:20.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:56:20.994 [DEBUG] [Thread-120148] [transport.py] [_log()] userauth is OK
2025-11-03T17:56:20.994 [DEBUG] [Thread-120148] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:56:20.994 [DEBUG] [Thread-120148] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:56:20.994 [DEBUG] [Thread-120148] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:56:20.994 [DEBUG] [Thread-120148] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:56:21.014 [INFO] [Thread-120148] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:56:21.014 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:56:21.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:56:21.907 [DEBUG] [Thread-120148] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:56:21.916 [DEBUG] [Thread-120148] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:56:21.958 [DEBUG] [Thread-120148] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:56:21.958 [DEBUG] [Thread-120148] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:56:21.968 [DEBUG] [Thread-120148] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:56:21.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:56:21.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:56:21.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:56:21.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:56:21.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:56:21.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:56:22.010 [DEBUG] [Thread-120148] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:56:26.701 [DEBUG] [Thread-120150 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:56:27.336 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:56:27.337 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:56:35.547 [DEBUG] [Thread-120151 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:56:41.760 [DEBUG] [Thread-120152 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:56:52.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:56:52.008 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:56:52.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:56:52.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 56, 35), 43.88, 4.17, 0.0, 32.08, 24.94, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:56:52.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:56:35
2025-11-03T17:56:52.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:56:52.946 [DEBUG] [Thread-120153] [transport.py] [_log()] starting thread (client mode): 0x117ebc70
2025-11-03T17:56:52.946 [DEBUG] [Thread-120153] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:56:52.957 [DEBUG] [Thread-120153] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:56:52.958 [INFO] [Thread-120153] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:56:52.961 [DEBUG] [Thread-120153] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:56:52.961 [DEBUG] [Thread-120153] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:56:52.961 [DEBUG] [Thread-120153] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:56:52.961 [DEBUG] [Thread-120153] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:56:52.961 [DEBUG] [Thread-120153] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:56:52.961 [DEBUG] [Thread-120153] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:56:52.961 [DEBUG] [Thread-120153] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:56:52.961 [DEBUG] [Thread-120153] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:56:52.961 [DEBUG] [Thread-120153] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:56:52.961 [DEBUG] [Thread-120153] [transport.py] [_log()] client lang: <none>
2025-11-03T17:56:52.961 [DEBUG] [Thread-120153] [transport.py] [_log()] server lang: <none>
2025-11-03T17:56:52.961 [DEBUG] [Thread-120153] [transport.py] [_log()] kex follows: False
2025-11-03T17:56:52.961 [DEBUG] [Thread-120153] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:56:52.961 [DEBUG] [Thread-120153] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:56:52.961 [DEBUG] [Thread-120153] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:56:52.961 [DEBUG] [Thread-120153] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:56:52.961 [DEBUG] [Thread-120153] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:56:52.961 [DEBUG] [Thread-120153] [transport.py] [_log()] Compression: none
2025-11-03T17:56:52.961 [DEBUG] [Thread-120153] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:56:52.979 [DEBUG] [Thread-120153] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:56:52.980 [DEBUG] [Thread-120153] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:56:52.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:56:52.981 [DEBUG] [Thread-120153] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:56:52.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:56:52.983 [DEBUG] [Thread-120153] [transport.py] [_log()] userauth is OK
2025-11-03T17:56:52.984 [DEBUG] [Thread-120153] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:56:52.984 [DEBUG] [Thread-120153] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:56:52.984 [DEBUG] [Thread-120153] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:56:52.984 [DEBUG] [Thread-120153] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:56:53.008 [INFO] [Thread-120153] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:56:53.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:56:53.634 [DEBUG] [Thread-120153] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:56:53.634 [DEBUG] [Thread-120153] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:56:53.634 [DEBUG] [Thread-120153] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:56:53.675 [DEBUG] [Thread-120153] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:56:53.675 [DEBUG] [Thread-120153] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:56:53.678 [DEBUG] [Thread-120153] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:56:53.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:56:53.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:56:53.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:56:53.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:56:53.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:56:53.700 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:56:53.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:56:53.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:56:53.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:56:53.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.663991 -999.00  +24.60  35.65      9  -10.00 1 1 2 1 1   887    0 34.10 -62.94 ----- 29.2 35.6 291.0 44.9 26.3 -33.5 26.5 -32.3 27.1 -33.0 27.4 -33.1
2025-11-03T17:56:53.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:56:53.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:56:53.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.663991
2025-11-03T17:56:53.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:56:53.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:56:53.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:56:53.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:56:53.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:56:53.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:56:35', tmtdew=43.88, humidity=4.17, cloud=0.0, wind=32.08, temperature=24.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:56:08.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:56:53.703 [DEBUG] [Thread-120153] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:56:53.786 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:56:53.803 [DEBUG] [Thread-120156] [transport.py] [_log()] starting thread (client mode): 0xed88d30
2025-11-03T17:56:53.803 [DEBUG] [Thread-120156] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:56:53.822 [DEBUG] [Thread-120156] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:56:53.822 [INFO] [Thread-120156] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:56:53.834 [DEBUG] [Thread-120156] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:56:53.834 [DEBUG] [Thread-120156] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:56:53.834 [DEBUG] [Thread-120156] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:56:53.834 [DEBUG] [Thread-120156] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:56:53.834 [DEBUG] [Thread-120156] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:56:53.834 [DEBUG] [Thread-120156] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:56:53.834 [DEBUG] [Thread-120156] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:56:53.834 [DEBUG] [Thread-120156] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:56:53.835 [DEBUG] [Thread-120156] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:56:53.835 [DEBUG] [Thread-120156] [transport.py] [_log()] client lang: <none>
2025-11-03T17:56:53.835 [DEBUG] [Thread-120156] [transport.py] [_log()] server lang: <none>
2025-11-03T17:56:53.835 [DEBUG] [Thread-120156] [transport.py] [_log()] kex follows: False
2025-11-03T17:56:53.835 [DEBUG] [Thread-120156] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:56:53.835 [DEBUG] [Thread-120156] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:56:53.835 [DEBUG] [Thread-120156] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:56:53.835 [DEBUG] [Thread-120156] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:56:53.835 [DEBUG] [Thread-120156] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:56:53.835 [DEBUG] [Thread-120156] [transport.py] [_log()] Compression: none
2025-11-03T17:56:53.836 [DEBUG] [Thread-120156] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:56:53.898 [DEBUG] [Thread-120156] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:56:53.898 [DEBUG] [Thread-120156] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:56:53.899 [DEBUG] [Thread-120156] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:56:53.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:56:53.900 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:56:53.959 [DEBUG] [Thread-120156] [transport.py] [_log()] userauth is OK
2025-11-03T17:56:53.959 [DEBUG] [Thread-120156] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:56:53.959 [DEBUG] [Thread-120156] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:56:53.959 [DEBUG] [Thread-120156] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:56:53.959 [DEBUG] [Thread-120156] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:56:53.978 [INFO] [Thread-120156] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:56:53.978 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:56:53.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:56:54.789 [DEBUG] [Thread-120156] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:56:54.789 [DEBUG] [Thread-120156] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:56:54.837 [DEBUG] [Thread-120156] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:56:54.837 [DEBUG] [Thread-120156] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:56:54.846 [DEBUG] [Thread-120156] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:56:54.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:56:54.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:56:54.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:56:54.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:56:54.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:56:54.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:56:54.878 [DEBUG] [Thread-120156] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:56:56.791 [DEBUG] [Thread-120158 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:57:11.844 [DEBUG] [Thread-120159 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:57:24.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:57:24.901 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:57:24.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:57:25.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 57, 7), 43.82, 4.18, 0.0, 35.69, 24.91, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:57:25.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:57:07
2025-11-03T17:57:25.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:57:25.885 [DEBUG] [Thread-120160] [transport.py] [_log()] starting thread (client mode): 0x117eae30
2025-11-03T17:57:25.885 [DEBUG] [Thread-120160] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:57:25.906 [DEBUG] [Thread-120160] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:57:25.906 [INFO] [Thread-120160] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:57:25.909 [DEBUG] [Thread-120160] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:57:25.909 [DEBUG] [Thread-120160] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:57:25.909 [DEBUG] [Thread-120160] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:57:25.909 [DEBUG] [Thread-120160] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:57:25.909 [DEBUG] [Thread-120160] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:57:25.909 [DEBUG] [Thread-120160] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:57:25.909 [DEBUG] [Thread-120160] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:57:25.909 [DEBUG] [Thread-120160] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:57:25.909 [DEBUG] [Thread-120160] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:57:25.909 [DEBUG] [Thread-120160] [transport.py] [_log()] client lang: <none>
2025-11-03T17:57:25.909 [DEBUG] [Thread-120160] [transport.py] [_log()] server lang: <none>
2025-11-03T17:57:25.909 [DEBUG] [Thread-120160] [transport.py] [_log()] kex follows: False
2025-11-03T17:57:25.909 [DEBUG] [Thread-120160] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:57:25.909 [DEBUG] [Thread-120160] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:57:25.910 [DEBUG] [Thread-120160] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:57:25.910 [DEBUG] [Thread-120160] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:57:25.910 [DEBUG] [Thread-120160] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:57:25.910 [DEBUG] [Thread-120160] [transport.py] [_log()] Compression: none
2025-11-03T17:57:25.910 [DEBUG] [Thread-120160] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:57:25.927 [DEBUG] [Thread-120160] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:57:25.928 [DEBUG] [Thread-120160] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:57:25.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:57:25.929 [DEBUG] [Thread-120160] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:57:25.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:57:25.940 [DEBUG] [Thread-120160] [transport.py] [_log()] userauth is OK
2025-11-03T17:57:25.940 [DEBUG] [Thread-120160] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:57:25.940 [DEBUG] [Thread-120160] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:57:25.940 [DEBUG] [Thread-120160] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:57:25.940 [DEBUG] [Thread-120160] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:57:25.977 [INFO] [Thread-120160] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:57:25.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:57:26.658 [DEBUG] [Thread-120160] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:57:26.658 [DEBUG] [Thread-120160] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:57:26.659 [DEBUG] [Thread-120160] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:57:26.699 [DEBUG] [Thread-120160] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:57:26.699 [DEBUG] [Thread-120160] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:57:26.702 [DEBUG] [Thread-120160] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:57:26.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:57:26.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:57:26.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:57:26.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:57:26.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:57:26.719 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:57:26.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:57:26.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:57:26.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:57:26.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.664338 -999.00  +24.60  28.43      9  -10.00 1 1 1 1 1   887    0 33.86 -58.97 ----- 27.7 28.4 292.6 37.1 26.2 -33.4 26.4 -32.1 27.1 -32.8 27.4 -32.6
2025-11-03T17:57:26.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:57:26.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:57:26.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.664338
2025-11-03T17:57:26.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:57:26.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:57:26.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:57:26.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:57:26.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:57:26.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:57:07', tmtdew=43.82, humidity=4.18, cloud=0.0, wind=35.69, temperature=24.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:56:38.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:57:26.720 [DEBUG] [Thread-120160] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:57:26.791 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:57:26.804 [DEBUG] [Thread-120163] [transport.py] [_log()] starting thread (client mode): 0x11762110
2025-11-03T17:57:26.804 [DEBUG] [Thread-120163] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:57:26.818 [DEBUG] [Thread-120163] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:57:26.818 [INFO] [Thread-120163] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:57:26.826 [DEBUG] [Thread-120163] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:57:26.826 [DEBUG] [Thread-120163] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:57:26.826 [DEBUG] [Thread-120163] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:57:26.826 [DEBUG] [Thread-120163] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:57:26.826 [DEBUG] [Thread-120163] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:57:26.826 [DEBUG] [Thread-120163] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:57:26.826 [DEBUG] [Thread-120163] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:57:26.826 [DEBUG] [Thread-120163] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:57:26.826 [DEBUG] [Thread-120163] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:57:26.826 [DEBUG] [Thread-120163] [transport.py] [_log()] client lang: <none>
2025-11-03T17:57:26.826 [DEBUG] [Thread-120163] [transport.py] [_log()] server lang: <none>
2025-11-03T17:57:26.826 [DEBUG] [Thread-120163] [transport.py] [_log()] kex follows: False
2025-11-03T17:57:26.826 [DEBUG] [Thread-120163] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:57:26.826 [DEBUG] [Thread-120163] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:57:26.826 [DEBUG] [Thread-120163] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:57:26.826 [DEBUG] [Thread-120163] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:57:26.826 [DEBUG] [Thread-120163] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:57:26.826 [DEBUG] [Thread-120163] [transport.py] [_log()] Compression: none
2025-11-03T17:57:26.826 [DEBUG] [Thread-120163] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:57:26.879 [DEBUG] [Thread-120165 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:57:26.890 [DEBUG] [Thread-120163] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:57:26.890 [DEBUG] [Thread-120163] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:57:26.890 [DEBUG] [Thread-120163] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:57:26.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:57:26.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:57:26.956 [DEBUG] [Thread-120163] [transport.py] [_log()] userauth is OK
2025-11-03T17:57:26.957 [DEBUG] [Thread-120163] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:57:26.957 [DEBUG] [Thread-120163] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:57:26.958 [DEBUG] [Thread-120163] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:57:26.958 [DEBUG] [Thread-120163] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:57:26.981 [INFO] [Thread-120163] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:57:26.981 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:57:26.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:57:27.487 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:57:27.487 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:57:27.813 [DEBUG] [Thread-120163] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:57:27.813 [DEBUG] [Thread-120163] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:57:27.861 [DEBUG] [Thread-120163] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:57:27.861 [DEBUG] [Thread-120163] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:57:27.870 [DEBUG] [Thread-120163] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:57:27.878 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:57:27.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:57:27.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:57:27.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:57:27.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:57:27.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:57:27.902 [DEBUG] [Thread-120163] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:57:35.627 [DEBUG] [Thread-120166 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:57:41.918 [DEBUG] [Thread-120167 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:57:56.945 [DEBUG] [Thread-120168 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:57:57.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:57:57.924 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:57:57.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:57:58.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 57, 39), 43.52, 4.22, 0.0, 34.07, 24.69, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:57:58.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:57:39
2025-11-03T17:57:58.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:57:58.883 [DEBUG] [Thread-120169] [transport.py] [_log()] starting thread (client mode): 0xed207f0
2025-11-03T17:57:58.884 [DEBUG] [Thread-120169] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:57:58.905 [DEBUG] [Thread-120169] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:57:58.905 [INFO] [Thread-120169] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:57:58.908 [DEBUG] [Thread-120169] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:57:58.908 [DEBUG] [Thread-120169] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:57:58.908 [DEBUG] [Thread-120169] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:57:58.908 [DEBUG] [Thread-120169] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:57:58.908 [DEBUG] [Thread-120169] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:57:58.908 [DEBUG] [Thread-120169] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:57:58.908 [DEBUG] [Thread-120169] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:57:58.908 [DEBUG] [Thread-120169] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:57:58.908 [DEBUG] [Thread-120169] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:57:58.908 [DEBUG] [Thread-120169] [transport.py] [_log()] client lang: <none>
2025-11-03T17:57:58.908 [DEBUG] [Thread-120169] [transport.py] [_log()] server lang: <none>
2025-11-03T17:57:58.908 [DEBUG] [Thread-120169] [transport.py] [_log()] kex follows: False
2025-11-03T17:57:58.908 [DEBUG] [Thread-120169] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:57:58.908 [DEBUG] [Thread-120169] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:57:58.908 [DEBUG] [Thread-120169] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:57:58.908 [DEBUG] [Thread-120169] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:57:58.908 [DEBUG] [Thread-120169] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:57:58.908 [DEBUG] [Thread-120169] [transport.py] [_log()] Compression: none
2025-11-03T17:57:58.908 [DEBUG] [Thread-120169] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:57:58.923 [DEBUG] [Thread-120169] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:57:58.923 [DEBUG] [Thread-120169] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:57:58.923 [DEBUG] [Thread-120169] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:57:58.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:57:58.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:57:58.924 [DEBUG] [Thread-120169] [transport.py] [_log()] userauth is OK
2025-11-03T17:57:58.924 [DEBUG] [Thread-120169] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:57:58.924 [DEBUG] [Thread-120169] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:57:58.924 [DEBUG] [Thread-120169] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:57:58.924 [DEBUG] [Thread-120169] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:57:58.933 [INFO] [Thread-120169] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:57:58.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:57:59.593 [DEBUG] [Thread-120169] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:57:59.594 [DEBUG] [Thread-120169] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:57:59.594 [DEBUG] [Thread-120169] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:57:59.634 [DEBUG] [Thread-120169] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:57:59.635 [DEBUG] [Thread-120169] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:57:59.646 [DEBUG] [Thread-120169] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:57:59.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:57:59.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:57:59.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:57:59.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:57:59.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:57:59.663 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:57:59.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:57:59.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:57:59.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:57:59.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.664685 -999.00  +24.70  21.95      9   -9.90 1 1 1 1 1   887    0 32.85 -61.57 ----- 24.1 21.9 302.6 36.8 26.2 -33.0 26.4 -32.0 27.2 -31.4 27.4 -32.5
2025-11-03T17:57:59.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:57:59.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:57:59.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.664685
2025-11-03T17:57:59.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:57:59.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:57:59.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:57:59.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:57:59.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:57:59.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:57:39', tmtdew=43.52, humidity=4.22, cloud=0.0, wind=34.07, temperature=24.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:57:08.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:57:59.664 [DEBUG] [Thread-120169] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:57:59.738 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:57:59.749 [DEBUG] [Thread-120172] [transport.py] [_log()] starting thread (client mode): 0x117e84f0
2025-11-03T17:57:59.750 [DEBUG] [Thread-120172] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:57:59.764 [DEBUG] [Thread-120172] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:57:59.764 [INFO] [Thread-120172] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:57:59.771 [DEBUG] [Thread-120172] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:57:59.771 [DEBUG] [Thread-120172] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:57:59.771 [DEBUG] [Thread-120172] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:57:59.771 [DEBUG] [Thread-120172] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:57:59.771 [DEBUG] [Thread-120172] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:57:59.771 [DEBUG] [Thread-120172] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:57:59.771 [DEBUG] [Thread-120172] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:57:59.771 [DEBUG] [Thread-120172] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:57:59.771 [DEBUG] [Thread-120172] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:57:59.772 [DEBUG] [Thread-120172] [transport.py] [_log()] client lang: <none>
2025-11-03T17:57:59.772 [DEBUG] [Thread-120172] [transport.py] [_log()] server lang: <none>
2025-11-03T17:57:59.772 [DEBUG] [Thread-120172] [transport.py] [_log()] kex follows: False
2025-11-03T17:57:59.772 [DEBUG] [Thread-120172] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:57:59.772 [DEBUG] [Thread-120172] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:57:59.772 [DEBUG] [Thread-120172] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:57:59.772 [DEBUG] [Thread-120172] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:57:59.772 [DEBUG] [Thread-120172] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:57:59.772 [DEBUG] [Thread-120172] [transport.py] [_log()] Compression: none
2025-11-03T17:57:59.772 [DEBUG] [Thread-120172] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:57:59.827 [DEBUG] [Thread-120172] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:57:59.827 [DEBUG] [Thread-120172] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:57:59.827 [DEBUG] [Thread-120172] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:57:59.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:57:59.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:57:59.885 [DEBUG] [Thread-120172] [transport.py] [_log()] userauth is OK
2025-11-03T17:57:59.885 [DEBUG] [Thread-120172] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:57:59.885 [DEBUG] [Thread-120172] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:57:59.885 [DEBUG] [Thread-120172] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:57:59.885 [DEBUG] [Thread-120172] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:57:59.899 [INFO] [Thread-120172] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:57:59.899 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:57:59.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:58:00.716 [DEBUG] [Thread-120172] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:58:00.716 [DEBUG] [Thread-120172] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:58:00.764 [DEBUG] [Thread-120172] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:58:00.765 [DEBUG] [Thread-120172] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:58:00.774 [DEBUG] [Thread-120172] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:58:00.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:58:00.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:58:00.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:58:00.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:58:00.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:58:00.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:58:00.820 [DEBUG] [Thread-120172] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:58:11.978 [DEBUG] [Thread-120174 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:58:27.032 [DEBUG] [Thread-120175 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:58:27.629 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:58:27.630 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:58:30.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:58:30.843 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:58:30.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:58:31.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 58, 11), 43.4, 4.25, 0.0, 32.48, 24.61, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:58:31.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:58:11
2025-11-03T17:58:31.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:58:31.889 [DEBUG] [Thread-120176] [transport.py] [_log()] starting thread (client mode): 0x117e89d0
2025-11-03T17:58:31.889 [DEBUG] [Thread-120176] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:58:31.909 [DEBUG] [Thread-120176] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:58:31.910 [INFO] [Thread-120176] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:58:31.912 [DEBUG] [Thread-120176] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:58:31.913 [DEBUG] [Thread-120176] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:58:31.913 [DEBUG] [Thread-120176] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:58:31.913 [DEBUG] [Thread-120176] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:58:31.913 [DEBUG] [Thread-120176] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:58:31.913 [DEBUG] [Thread-120176] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:58:31.913 [DEBUG] [Thread-120176] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:58:31.913 [DEBUG] [Thread-120176] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:58:31.913 [DEBUG] [Thread-120176] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:58:31.913 [DEBUG] [Thread-120176] [transport.py] [_log()] client lang: <none>
2025-11-03T17:58:31.913 [DEBUG] [Thread-120176] [transport.py] [_log()] server lang: <none>
2025-11-03T17:58:31.913 [DEBUG] [Thread-120176] [transport.py] [_log()] kex follows: False
2025-11-03T17:58:31.913 [DEBUG] [Thread-120176] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:58:31.913 [DEBUG] [Thread-120176] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:58:31.914 [DEBUG] [Thread-120176] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:58:31.914 [DEBUG] [Thread-120176] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:58:31.914 [DEBUG] [Thread-120176] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:58:31.914 [DEBUG] [Thread-120176] [transport.py] [_log()] Compression: none
2025-11-03T17:58:31.914 [DEBUG] [Thread-120176] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:58:31.932 [DEBUG] [Thread-120176] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:58:31.932 [DEBUG] [Thread-120176] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:58:31.933 [DEBUG] [Thread-120176] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:58:31.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:58:31.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:58:31.935 [DEBUG] [Thread-120176] [transport.py] [_log()] userauth is OK
2025-11-03T17:58:31.936 [DEBUG] [Thread-120176] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:58:31.936 [DEBUG] [Thread-120176] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:58:31.936 [DEBUG] [Thread-120176] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:58:31.936 [DEBUG] [Thread-120176] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:58:31.959 [INFO] [Thread-120176] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:58:31.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:58:32.543 [DEBUG] [Thread-120176] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:58:32.543 [DEBUG] [Thread-120176] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:58:32.543 [DEBUG] [Thread-120176] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:58:32.584 [DEBUG] [Thread-120176] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:58:32.585 [DEBUG] [Thread-120176] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:58:32.588 [DEBUG] [Thread-120176] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:58:32.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:58:32.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:58:32.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:58:32.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:58:32.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:58:32.614 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:58:32.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:58:32.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:58:32.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:58:32.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.665033 -999.00  +24.70  27.45      9  -10.00 1 1 1 1 1   887    0 33.61 -59.63 ----- 27.2 27.4 300.1 39.2 26.2 -33.2 26.4 -32.3 27.1 -31.6 27.4 -32.4
2025-11-03T17:58:32.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:58:32.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:58:32.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.665033
2025-11-03T17:58:32.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:58:32.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:58:32.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:58:32.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:58:32.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:58:32.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:58:11', tmtdew=43.4, humidity=4.25, cloud=0.0, wind=32.48, temperature=24.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:57:38.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:58:32.617 [DEBUG] [Thread-120176] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:58:32.700 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:58:32.711 [DEBUG] [Thread-120179] [transport.py] [_log()] starting thread (client mode): 0xed886a0
2025-11-03T17:58:32.711 [DEBUG] [Thread-120179] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:58:32.726 [DEBUG] [Thread-120179] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:58:32.726 [INFO] [Thread-120179] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:58:32.734 [DEBUG] [Thread-120179] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:58:32.734 [DEBUG] [Thread-120179] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:58:32.734 [DEBUG] [Thread-120179] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:58:32.734 [DEBUG] [Thread-120179] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:58:32.734 [DEBUG] [Thread-120179] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:58:32.735 [DEBUG] [Thread-120179] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:58:32.735 [DEBUG] [Thread-120179] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:58:32.735 [DEBUG] [Thread-120179] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:58:32.735 [DEBUG] [Thread-120179] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:58:32.735 [DEBUG] [Thread-120179] [transport.py] [_log()] client lang: <none>
2025-11-03T17:58:32.735 [DEBUG] [Thread-120179] [transport.py] [_log()] server lang: <none>
2025-11-03T17:58:32.735 [DEBUG] [Thread-120179] [transport.py] [_log()] kex follows: False
2025-11-03T17:58:32.735 [DEBUG] [Thread-120179] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:58:32.735 [DEBUG] [Thread-120179] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:58:32.735 [DEBUG] [Thread-120179] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:58:32.735 [DEBUG] [Thread-120179] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:58:32.735 [DEBUG] [Thread-120179] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:58:32.736 [DEBUG] [Thread-120179] [transport.py] [_log()] Compression: none
2025-11-03T17:58:32.736 [DEBUG] [Thread-120179] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:58:32.794 [DEBUG] [Thread-120179] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:58:32.795 [DEBUG] [Thread-120179] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:58:32.795 [DEBUG] [Thread-120179] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:58:32.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:58:32.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:58:32.850 [DEBUG] [Thread-120179] [transport.py] [_log()] userauth is OK
2025-11-03T17:58:32.851 [DEBUG] [Thread-120179] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:58:32.851 [DEBUG] [Thread-120179] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:58:32.851 [DEBUG] [Thread-120179] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:58:32.851 [DEBUG] [Thread-120179] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:58:32.869 [INFO] [Thread-120179] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:58:32.870 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:58:32.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:58:33.704 [DEBUG] [Thread-120179] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:58:33.704 [DEBUG] [Thread-120179] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:58:33.752 [DEBUG] [Thread-120179] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:58:33.752 [DEBUG] [Thread-120179] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:58:33.761 [DEBUG] [Thread-120179] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:58:33.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:58:33.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:58:33.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:58:33.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:58:33.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:58:33.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:58:33.792 [DEBUG] [Thread-120179] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:58:35.850 [DEBUG] [Thread-120181 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:58:42.069 [DEBUG] [Thread-120182 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:58:57.118 [DEBUG] [Thread-120183 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:59:03.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:59:03.815 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:59:03.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:59:04.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 58, 43), 43.38, 4.3, 0.0, 33.82, 24.71, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:59:04.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:58:43
2025-11-03T17:59:04.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:59:04.802 [DEBUG] [Thread-120184] [transport.py] [_log()] starting thread (client mode): 0x11799600
2025-11-03T17:59:04.802 [DEBUG] [Thread-120184] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:59:04.818 [DEBUG] [Thread-120184] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:59:04.818 [INFO] [Thread-120184] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:59:04.827 [DEBUG] [Thread-120184] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:59:04.827 [DEBUG] [Thread-120184] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:59:04.827 [DEBUG] [Thread-120184] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:59:04.827 [DEBUG] [Thread-120184] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:59:04.828 [DEBUG] [Thread-120184] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:59:04.828 [DEBUG] [Thread-120184] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:59:04.828 [DEBUG] [Thread-120184] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:59:04.828 [DEBUG] [Thread-120184] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:59:04.828 [DEBUG] [Thread-120184] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:59:04.828 [DEBUG] [Thread-120184] [transport.py] [_log()] client lang: <none>
2025-11-03T17:59:04.828 [DEBUG] [Thread-120184] [transport.py] [_log()] server lang: <none>
2025-11-03T17:59:04.828 [DEBUG] [Thread-120184] [transport.py] [_log()] kex follows: False
2025-11-03T17:59:04.828 [DEBUG] [Thread-120184] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:59:04.828 [DEBUG] [Thread-120184] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:59:04.828 [DEBUG] [Thread-120184] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:59:04.828 [DEBUG] [Thread-120184] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:59:04.828 [DEBUG] [Thread-120184] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:59:04.828 [DEBUG] [Thread-120184] [transport.py] [_log()] Compression: none
2025-11-03T17:59:04.828 [DEBUG] [Thread-120184] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:59:04.849 [DEBUG] [Thread-120184] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:59:04.850 [DEBUG] [Thread-120184] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:59:04.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:59:04.851 [DEBUG] [Thread-120184] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:59:04.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:59:04.854 [DEBUG] [Thread-120184] [transport.py] [_log()] userauth is OK
2025-11-03T17:59:04.854 [DEBUG] [Thread-120184] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:59:04.854 [DEBUG] [Thread-120184] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:59:04.854 [DEBUG] [Thread-120184] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:59:04.854 [DEBUG] [Thread-120184] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:59:04.886 [INFO] [Thread-120184] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:59:04.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:59:05.540 [DEBUG] [Thread-120184] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:59:05.549 [DEBUG] [Thread-120184] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:59:05.549 [DEBUG] [Thread-120184] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:59:05.580 [DEBUG] [Thread-120184] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:59:05.580 [DEBUG] [Thread-120184] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:59:05.582 [DEBUG] [Thread-120184] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:59:05.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:59:05.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:59:05.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:59:05.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:59:05.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:59:05.600 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:59:05.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:59:05.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:59:05.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:59:05.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.665380 -999.00  +24.70  28.50      9   -9.90 1 1 1 1 1   887    0 33.17 -55.16 ----- 34.7 28.5 316.6 33.9 26.2 -32.8 26.4 -31.8 27.1 -31.8 27.3 -32.6
2025-11-03T17:59:05.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:59:05.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:59:05.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.665380
2025-11-03T17:59:05.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:59:05.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:59:05.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:59:05.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:59:05.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:59:05.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:58:43', tmtdew=43.38, humidity=4.3, cloud=0.0, wind=33.82, temperature=24.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:58:08.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:59:05.602 [DEBUG] [Thread-120184] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:59:05.673 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:59:05.684 [DEBUG] [Thread-120187] [transport.py] [_log()] starting thread (client mode): 0x117981c0
2025-11-03T17:59:05.684 [DEBUG] [Thread-120187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:59:05.699 [DEBUG] [Thread-120187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:59:05.699 [INFO] [Thread-120187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:59:05.706 [DEBUG] [Thread-120187] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:59:05.706 [DEBUG] [Thread-120187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:59:05.706 [DEBUG] [Thread-120187] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:59:05.706 [DEBUG] [Thread-120187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:59:05.706 [DEBUG] [Thread-120187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:59:05.706 [DEBUG] [Thread-120187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:59:05.706 [DEBUG] [Thread-120187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:59:05.706 [DEBUG] [Thread-120187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:59:05.706 [DEBUG] [Thread-120187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:59:05.706 [DEBUG] [Thread-120187] [transport.py] [_log()] client lang: <none>
2025-11-03T17:59:05.706 [DEBUG] [Thread-120187] [transport.py] [_log()] server lang: <none>
2025-11-03T17:59:05.706 [DEBUG] [Thread-120187] [transport.py] [_log()] kex follows: False
2025-11-03T17:59:05.706 [DEBUG] [Thread-120187] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:59:05.706 [DEBUG] [Thread-120187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:59:05.706 [DEBUG] [Thread-120187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:59:05.706 [DEBUG] [Thread-120187] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:59:05.706 [DEBUG] [Thread-120187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:59:05.706 [DEBUG] [Thread-120187] [transport.py] [_log()] Compression: none
2025-11-03T17:59:05.706 [DEBUG] [Thread-120187] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:59:05.762 [DEBUG] [Thread-120187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:59:05.762 [DEBUG] [Thread-120187] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:59:05.762 [DEBUG] [Thread-120187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:59:05.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:59:05.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:59:05.819 [DEBUG] [Thread-120187] [transport.py] [_log()] userauth is OK
2025-11-03T17:59:05.820 [DEBUG] [Thread-120187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:59:05.820 [DEBUG] [Thread-120187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:59:05.820 [DEBUG] [Thread-120187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:59:05.820 [DEBUG] [Thread-120187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:59:05.834 [INFO] [Thread-120187] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:59:05.843 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:59:05.843 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:59:06.722 [DEBUG] [Thread-120187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:59:06.722 [DEBUG] [Thread-120187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:59:06.770 [DEBUG] [Thread-120187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:59:06.771 [DEBUG] [Thread-120187] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:59:06.780 [DEBUG] [Thread-120187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:59:06.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:59:06.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:59:06.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:59:06.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:59:06.817 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:59:06.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:59:06.826 [DEBUG] [Thread-120187] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:59:12.149 [DEBUG] [Thread-120189 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:59:27.189 [DEBUG] [Thread-120190 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:59:27.778 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:59:27.779 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:59:35.929 [DEBUG] [Thread-120191 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:59:36.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T17:59:36.849 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T17:59:36.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T17:59:37.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 59, 16), 43.42, 4.28, 0.0, 33.38, 24.71, 0, 0, 0, 2, 0, 0),)
2025-11-03T17:59:37.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:59:16
2025-11-03T17:59:37.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T17:59:37.831 [DEBUG] [Thread-120192] [transport.py] [_log()] starting thread (client mode): 0x117e9750
2025-11-03T17:59:37.831 [DEBUG] [Thread-120192] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:59:37.846 [DEBUG] [Thread-120192] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T17:59:37.846 [INFO] [Thread-120192] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T17:59:37.849 [DEBUG] [Thread-120192] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:59:37.849 [DEBUG] [Thread-120192] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T17:59:37.849 [DEBUG] [Thread-120192] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:59:37.849 [DEBUG] [Thread-120192] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:59:37.849 [DEBUG] [Thread-120192] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:59:37.849 [DEBUG] [Thread-120192] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:59:37.849 [DEBUG] [Thread-120192] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:59:37.850 [DEBUG] [Thread-120192] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:59:37.850 [DEBUG] [Thread-120192] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:59:37.850 [DEBUG] [Thread-120192] [transport.py] [_log()] client lang: <none>
2025-11-03T17:59:37.850 [DEBUG] [Thread-120192] [transport.py] [_log()] server lang: <none>
2025-11-03T17:59:37.850 [DEBUG] [Thread-120192] [transport.py] [_log()] kex follows: False
2025-11-03T17:59:37.850 [DEBUG] [Thread-120192] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:59:37.850 [DEBUG] [Thread-120192] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:59:37.850 [DEBUG] [Thread-120192] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:59:37.850 [DEBUG] [Thread-120192] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:59:37.850 [DEBUG] [Thread-120192] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:59:37.850 [DEBUG] [Thread-120192] [transport.py] [_log()] Compression: none
2025-11-03T17:59:37.850 [DEBUG] [Thread-120192] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:59:37.867 [DEBUG] [Thread-120192] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:59:37.868 [DEBUG] [Thread-120192] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:59:37.868 [DEBUG] [Thread-120192] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T17:59:37.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T17:59:37.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:59:37.870 [DEBUG] [Thread-120192] [transport.py] [_log()] userauth is OK
2025-11-03T17:59:37.870 [DEBUG] [Thread-120192] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:59:37.870 [DEBUG] [Thread-120192] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:59:37.870 [DEBUG] [Thread-120192] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T17:59:37.871 [DEBUG] [Thread-120192] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:59:37.888 [INFO] [Thread-120192] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:59:37.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:59:38.621 [DEBUG] [Thread-120192] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:59:38.621 [DEBUG] [Thread-120192] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:59:38.621 [DEBUG] [Thread-120192] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T17:59:38.662 [DEBUG] [Thread-120192] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:59:38.662 [DEBUG] [Thread-120192] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:59:38.665 [DEBUG] [Thread-120192] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:59:38.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:59:38.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T17:59:38.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T17:59:38.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T17:59:38.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:59:38.681 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T17:59:38.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:59:38.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:59:38.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T17:59:38.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.665727 -999.00  +24.60  33.15      9   -9.90 1 1 2 1 1   887    0 34.08 -52.36 ----- 33.1 33.1 310.4 44.2 26.2 -33.1 26.4 -31.9 27.1 -33.2 27.3 -32.8
2025-11-03T17:59:38.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T17:59:38.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T17:59:38.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.665727
2025-11-03T17:59:38.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T17:59:38.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T17:59:38.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T17:59:38.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T17:59:38.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T17:59:38.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:59:16', tmtdew=43.42, humidity=4.28, cloud=0.0, wind=33.38, temperature=24.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:58:38.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T17:59:38.684 [DEBUG] [Thread-120192] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:59:38.754 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T17:59:38.767 [DEBUG] [Thread-120195] [transport.py] [_log()] starting thread (client mode): 0x11799e70
2025-11-03T17:59:38.767 [DEBUG] [Thread-120195] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T17:59:38.782 [DEBUG] [Thread-120195] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T17:59:38.782 [INFO] [Thread-120195] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T17:59:38.790 [DEBUG] [Thread-120195] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T17:59:38.790 [DEBUG] [Thread-120195] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T17:59:38.790 [DEBUG] [Thread-120195] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T17:59:38.790 [DEBUG] [Thread-120195] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:59:38.790 [DEBUG] [Thread-120195] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T17:59:38.790 [DEBUG] [Thread-120195] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:59:38.790 [DEBUG] [Thread-120195] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T17:59:38.790 [DEBUG] [Thread-120195] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T17:59:38.790 [DEBUG] [Thread-120195] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T17:59:38.790 [DEBUG] [Thread-120195] [transport.py] [_log()] client lang: <none>
2025-11-03T17:59:38.790 [DEBUG] [Thread-120195] [transport.py] [_log()] server lang: <none>
2025-11-03T17:59:38.790 [DEBUG] [Thread-120195] [transport.py] [_log()] kex follows: False
2025-11-03T17:59:38.790 [DEBUG] [Thread-120195] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T17:59:38.790 [DEBUG] [Thread-120195] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T17:59:38.790 [DEBUG] [Thread-120195] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T17:59:38.790 [DEBUG] [Thread-120195] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T17:59:38.790 [DEBUG] [Thread-120195] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T17:59:38.790 [DEBUG] [Thread-120195] [transport.py] [_log()] Compression: none
2025-11-03T17:59:38.790 [DEBUG] [Thread-120195] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T17:59:38.849 [DEBUG] [Thread-120195] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T17:59:38.849 [DEBUG] [Thread-120195] [transport.py] [_log()] Switch to new keys ...
2025-11-03T17:59:38.849 [DEBUG] [Thread-120195] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T17:59:38.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T17:59:38.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T17:59:38.906 [DEBUG] [Thread-120195] [transport.py] [_log()] userauth is OK
2025-11-03T17:59:38.906 [DEBUG] [Thread-120195] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T17:59:38.906 [DEBUG] [Thread-120195] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T17:59:38.906 [DEBUG] [Thread-120195] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T17:59:38.906 [DEBUG] [Thread-120195] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T17:59:38.920 [INFO] [Thread-120195] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T17:59:38.920 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T17:59:38.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T17:59:39.773 [DEBUG] [Thread-120195] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T17:59:39.773 [DEBUG] [Thread-120195] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T17:59:39.821 [DEBUG] [Thread-120195] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T17:59:39.822 [DEBUG] [Thread-120195] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T17:59:39.831 [DEBUG] [Thread-120195] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T17:59:39.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T17:59:39.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T17:59:39.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T17:59:39.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T17:59:39.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T17:59:39.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T17:59:39.868 [DEBUG] [Thread-120195] [transport.py] [_log()] EOF in transport thread
2025-11-03T17:59:42.226 [DEBUG] [Thread-120197 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T17:59:57.289 [DEBUG] [Thread-120198 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:00:09.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:00:09.891 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:00:09.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:00:10.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 17, 59, 48), 43.37, 4.28, 0.0, 28.71, 24.76, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:00:10.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 17:59:48
2025-11-03T18:00:10.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:00:10.969 [DEBUG] [Thread-120199] [transport.py] [_log()] starting thread (client mode): 0x117999f0
2025-11-03T18:00:10.969 [DEBUG] [Thread-120199] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:00:10.989 [DEBUG] [Thread-120199] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:00:10.989 [INFO] [Thread-120199] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:00:10.992 [DEBUG] [Thread-120199] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:00:10.992 [DEBUG] [Thread-120199] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:00:10.992 [DEBUG] [Thread-120199] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:00:10.992 [DEBUG] [Thread-120199] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:00:10.992 [DEBUG] [Thread-120199] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:00:10.992 [DEBUG] [Thread-120199] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:00:10.992 [DEBUG] [Thread-120199] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:00:10.993 [DEBUG] [Thread-120199] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:00:10.993 [DEBUG] [Thread-120199] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:00:10.993 [DEBUG] [Thread-120199] [transport.py] [_log()] client lang: <none>
2025-11-03T18:00:10.993 [DEBUG] [Thread-120199] [transport.py] [_log()] server lang: <none>
2025-11-03T18:00:10.993 [DEBUG] [Thread-120199] [transport.py] [_log()] kex follows: False
2025-11-03T18:00:10.993 [DEBUG] [Thread-120199] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:00:10.993 [DEBUG] [Thread-120199] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:00:10.993 [DEBUG] [Thread-120199] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:00:10.993 [DEBUG] [Thread-120199] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:00:10.993 [DEBUG] [Thread-120199] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:00:10.993 [DEBUG] [Thread-120199] [transport.py] [_log()] Compression: none
2025-11-03T18:00:10.994 [DEBUG] [Thread-120199] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:00:11.012 [DEBUG] [Thread-120199] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:00:11.013 [DEBUG] [Thread-120199] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:00:11.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:00:11.014 [DEBUG] [Thread-120199] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:00:11.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:00:11.016 [DEBUG] [Thread-120199] [transport.py] [_log()] userauth is OK
2025-11-03T18:00:11.016 [DEBUG] [Thread-120199] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:00:11.016 [DEBUG] [Thread-120199] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:00:11.016 [DEBUG] [Thread-120199] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:00:11.016 [DEBUG] [Thread-120199] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:00:11.040 [INFO] [Thread-120199] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:00:11.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:00:12.334 [DEBUG] [Thread-120201 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:00:13.747 [DEBUG] [Thread-120199] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:00:13.748 [DEBUG] [Thread-120199] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:00:13.748 [DEBUG] [Thread-120199] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:00:13.789 [DEBUG] [Thread-120199] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:00:13.789 [DEBUG] [Thread-120199] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:00:13.792 [DEBUG] [Thread-120199] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:00:13.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:00:13.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:00:13.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:00:13.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:00:13.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:00:13.921 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:00:13.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:00:13.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:00:13.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:00:13.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.666421 -999.00  +24.90  21.69      9   -9.70 1 1 1 1 1   887    0 33.98 -53.78 ----- 24.2 21.7 311.4 32.5 26.3 -33.0 26.4 -31.8 27.2 -31.6 27.4 -32.3
2025-11-03T18:00:13.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:00:13.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:00:13.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.666421
2025-11-03T18:00:13.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:00:13.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:00:13.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:00:13.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:00:13.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:00:13.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T17:59:48', tmtdew=43.37, humidity=4.28, cloud=0.0, wind=28.71, temperature=24.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T15:59:38.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:00:13.924 [DEBUG] [Thread-120199] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:00:14.010 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:00:14.021 [DEBUG] [Thread-120203] [transport.py] [_log()] starting thread (client mode): 0xed23820
2025-11-03T18:00:14.021 [DEBUG] [Thread-120203] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:00:14.036 [DEBUG] [Thread-120203] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:00:14.036 [INFO] [Thread-120203] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:00:14.043 [DEBUG] [Thread-120203] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:00:14.043 [DEBUG] [Thread-120203] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:00:14.044 [DEBUG] [Thread-120203] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:00:14.044 [DEBUG] [Thread-120203] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:00:14.044 [DEBUG] [Thread-120203] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:00:14.044 [DEBUG] [Thread-120203] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:00:14.044 [DEBUG] [Thread-120203] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:00:14.044 [DEBUG] [Thread-120203] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:00:14.044 [DEBUG] [Thread-120203] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:00:14.044 [DEBUG] [Thread-120203] [transport.py] [_log()] client lang: <none>
2025-11-03T18:00:14.044 [DEBUG] [Thread-120203] [transport.py] [_log()] server lang: <none>
2025-11-03T18:00:14.044 [DEBUG] [Thread-120203] [transport.py] [_log()] kex follows: False
2025-11-03T18:00:14.044 [DEBUG] [Thread-120203] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:00:14.044 [DEBUG] [Thread-120203] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:00:14.044 [DEBUG] [Thread-120203] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:00:14.044 [DEBUG] [Thread-120203] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:00:14.044 [DEBUG] [Thread-120203] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:00:14.044 [DEBUG] [Thread-120203] [transport.py] [_log()] Compression: none
2025-11-03T18:00:14.044 [DEBUG] [Thread-120203] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:00:14.100 [DEBUG] [Thread-120203] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:00:14.101 [DEBUG] [Thread-120203] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:00:14.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:00:14.102 [DEBUG] [Thread-120203] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:00:14.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:00:14.156 [DEBUG] [Thread-120203] [transport.py] [_log()] userauth is OK
2025-11-03T18:00:14.157 [DEBUG] [Thread-120203] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:00:14.157 [DEBUG] [Thread-120203] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:00:14.157 [DEBUG] [Thread-120203] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:00:14.157 [DEBUG] [Thread-120203] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:00:14.176 [INFO] [Thread-120203] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:00:14.177 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:00:14.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:00:14.988 [DEBUG] [Thread-120203] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:00:14.988 [DEBUG] [Thread-120203] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:00:15.036 [DEBUG] [Thread-120203] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:00:15.036 [DEBUG] [Thread-120203] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:00:15.045 [DEBUG] [Thread-120203] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:00:15.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:00:15.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:00:15.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:00:15.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:00:15.074 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:00:15.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:00:15.083 [DEBUG] [Thread-120203] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:00:27.372 [DEBUG] [Thread-120205 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:00:27.927 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:00:27.928 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:00:35.987 [DEBUG] [Thread-120206 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:00:42.429 [DEBUG] [Thread-120207 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:00:45.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:00:45.097 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:00:45.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:00:45.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 0, 20), 43.55, 4.22, 0.0, 29.75, 24.79, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:00:45.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:00:20
2025-11-03T18:00:46.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:00:46.151 [DEBUG] [Thread-120208] [transport.py] [_log()] starting thread (client mode): 0x117982b0
2025-11-03T18:00:46.151 [DEBUG] [Thread-120208] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:00:46.171 [DEBUG] [Thread-120208] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:00:46.172 [INFO] [Thread-120208] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:00:46.174 [DEBUG] [Thread-120208] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:00:46.174 [DEBUG] [Thread-120208] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:00:46.174 [DEBUG] [Thread-120208] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:00:46.174 [DEBUG] [Thread-120208] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:00:46.175 [DEBUG] [Thread-120208] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:00:46.175 [DEBUG] [Thread-120208] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:00:46.175 [DEBUG] [Thread-120208] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:00:46.175 [DEBUG] [Thread-120208] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:00:46.175 [DEBUG] [Thread-120208] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:00:46.175 [DEBUG] [Thread-120208] [transport.py] [_log()] client lang: <none>
2025-11-03T18:00:46.175 [DEBUG] [Thread-120208] [transport.py] [_log()] server lang: <none>
2025-11-03T18:00:46.175 [DEBUG] [Thread-120208] [transport.py] [_log()] kex follows: False
2025-11-03T18:00:46.175 [DEBUG] [Thread-120208] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:00:46.175 [DEBUG] [Thread-120208] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:00:46.175 [DEBUG] [Thread-120208] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:00:46.175 [DEBUG] [Thread-120208] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:00:46.175 [DEBUG] [Thread-120208] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:00:46.175 [DEBUG] [Thread-120208] [transport.py] [_log()] Compression: none
2025-11-03T18:00:46.175 [DEBUG] [Thread-120208] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:00:46.194 [DEBUG] [Thread-120208] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:00:46.195 [DEBUG] [Thread-120208] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:00:46.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:00:46.196 [DEBUG] [Thread-120208] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:00:46.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:00:46.237 [DEBUG] [Thread-120208] [transport.py] [_log()] userauth is OK
2025-11-03T18:00:46.237 [DEBUG] [Thread-120208] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:00:46.237 [DEBUG] [Thread-120208] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:00:46.238 [DEBUG] [Thread-120208] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:00:46.238 [DEBUG] [Thread-120208] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:00:46.270 [INFO] [Thread-120208] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:00:46.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:00:46.923 [DEBUG] [Thread-120208] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:00:46.924 [DEBUG] [Thread-120208] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:00:46.924 [DEBUG] [Thread-120208] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:00:46.964 [DEBUG] [Thread-120208] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:00:46.964 [DEBUG] [Thread-120208] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:00:46.967 [DEBUG] [Thread-120208] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:00:46.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:00:46.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:00:46.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:00:46.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:00:46.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:00:46.984 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:00:46.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:00:46.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:00:46.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:00:46.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.666768 -999.00  +24.90  26.50      9   -9.80 1 1 1 1 1   887    0 33.25 -50.40 ----- 31.1 26.5 308.6 35.3 26.2 -33.4 26.5 -31.9 27.1 -33.1 27.4 -33.0
2025-11-03T18:00:46.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:00:46.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:00:46.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.666768
2025-11-03T18:00:46.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:00:46.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:00:46.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:00:46.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:00:46.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:00:46.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:00:20', tmtdew=43.55, humidity=4.22, cloud=0.0, wind=29.75, temperature=24.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:00:08.755', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:00:46.985 [DEBUG] [Thread-120208] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:00:47.057 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:00:47.070 [DEBUG] [Thread-120211] [transport.py] [_log()] starting thread (client mode): 0x11799750
2025-11-03T18:00:47.070 [DEBUG] [Thread-120211] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:00:47.085 [DEBUG] [Thread-120211] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:00:47.085 [INFO] [Thread-120211] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:00:47.093 [DEBUG] [Thread-120211] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:00:47.093 [DEBUG] [Thread-120211] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:00:47.093 [DEBUG] [Thread-120211] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:00:47.093 [DEBUG] [Thread-120211] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:00:47.093 [DEBUG] [Thread-120211] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:00:47.093 [DEBUG] [Thread-120211] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:00:47.093 [DEBUG] [Thread-120211] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:00:47.093 [DEBUG] [Thread-120211] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:00:47.093 [DEBUG] [Thread-120211] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:00:47.093 [DEBUG] [Thread-120211] [transport.py] [_log()] client lang: <none>
2025-11-03T18:00:47.093 [DEBUG] [Thread-120211] [transport.py] [_log()] server lang: <none>
2025-11-03T18:00:47.093 [DEBUG] [Thread-120211] [transport.py] [_log()] kex follows: False
2025-11-03T18:00:47.093 [DEBUG] [Thread-120211] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:00:47.093 [DEBUG] [Thread-120211] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:00:47.093 [DEBUG] [Thread-120211] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:00:47.093 [DEBUG] [Thread-120211] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:00:47.093 [DEBUG] [Thread-120211] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:00:47.093 [DEBUG] [Thread-120211] [transport.py] [_log()] Compression: none
2025-11-03T18:00:47.093 [DEBUG] [Thread-120211] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:00:47.149 [DEBUG] [Thread-120211] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:00:47.158 [DEBUG] [Thread-120211] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:00:47.158 [DEBUG] [Thread-120211] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:00:47.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:00:47.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:00:47.206 [DEBUG] [Thread-120211] [transport.py] [_log()] userauth is OK
2025-11-03T18:00:47.206 [DEBUG] [Thread-120211] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:00:47.206 [DEBUG] [Thread-120211] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:00:47.206 [DEBUG] [Thread-120211] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:00:47.206 [DEBUG] [Thread-120211] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:00:47.220 [INFO] [Thread-120211] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:00:47.220 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:00:47.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:00:48.084 [DEBUG] [Thread-120211] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:00:48.085 [DEBUG] [Thread-120211] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:00:48.133 [DEBUG] [Thread-120211] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:00:48.133 [DEBUG] [Thread-120211] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:00:48.143 [DEBUG] [Thread-120211] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:00:48.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:00:48.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:00:48.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:00:48.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:00:48.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:00:48.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:00:48.189 [DEBUG] [Thread-120211] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:00:57.468 [DEBUG] [Thread-120213 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:01:12.521 [DEBUG] [Thread-120214 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:01:18.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:01:18.189 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:01:18.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:01:18.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 0, 53), 43.53, 4.28, 0.0, 29.64, 25.11, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:01:18.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:00:53
2025-11-03T18:01:19.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:01:19.168 [DEBUG] [Thread-120215] [transport.py] [_log()] starting thread (client mode): 0x11798af0
2025-11-03T18:01:19.168 [DEBUG] [Thread-120215] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:01:19.188 [DEBUG] [Thread-120215] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:01:19.188 [INFO] [Thread-120215] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:01:19.197 [DEBUG] [Thread-120215] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:01:19.197 [DEBUG] [Thread-120215] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:01:19.197 [DEBUG] [Thread-120215] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:01:19.197 [DEBUG] [Thread-120215] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:01:19.197 [DEBUG] [Thread-120215] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:01:19.197 [DEBUG] [Thread-120215] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:01:19.197 [DEBUG] [Thread-120215] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:01:19.197 [DEBUG] [Thread-120215] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:01:19.197 [DEBUG] [Thread-120215] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:01:19.197 [DEBUG] [Thread-120215] [transport.py] [_log()] client lang: <none>
2025-11-03T18:01:19.197 [DEBUG] [Thread-120215] [transport.py] [_log()] server lang: <none>
2025-11-03T18:01:19.197 [DEBUG] [Thread-120215] [transport.py] [_log()] kex follows: False
2025-11-03T18:01:19.197 [DEBUG] [Thread-120215] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:01:19.197 [DEBUG] [Thread-120215] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:01:19.197 [DEBUG] [Thread-120215] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:01:19.197 [DEBUG] [Thread-120215] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:01:19.198 [DEBUG] [Thread-120215] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:01:19.198 [DEBUG] [Thread-120215] [transport.py] [_log()] Compression: none
2025-11-03T18:01:19.198 [DEBUG] [Thread-120215] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:01:19.216 [DEBUG] [Thread-120215] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:01:19.216 [DEBUG] [Thread-120215] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:01:19.216 [DEBUG] [Thread-120215] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:01:19.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:01:19.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:01:19.219 [DEBUG] [Thread-120215] [transport.py] [_log()] userauth is OK
2025-11-03T18:01:19.219 [DEBUG] [Thread-120215] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:01:19.219 [DEBUG] [Thread-120215] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:01:19.219 [DEBUG] [Thread-120215] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:01:19.219 [DEBUG] [Thread-120215] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:01:19.228 [INFO] [Thread-120215] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:01:19.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:01:19.964 [DEBUG] [Thread-120215] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:01:19.964 [DEBUG] [Thread-120215] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:01:19.965 [DEBUG] [Thread-120215] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:01:20.005 [DEBUG] [Thread-120215] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:01:20.005 [DEBUG] [Thread-120215] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:01:20.009 [DEBUG] [Thread-120215] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:01:20.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:01:20.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:01:20.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:01:20.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:01:20.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:01:20.043 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:01:20.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:01:20.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:01:20.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:01:20.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.667116 -999.00  +24.50  29.49      9   -9.90 1 1 1 1 1   887    0 33.62 -49.47 ----- 27.1 29.5 298.2 41.9 26.2 -33.7 26.4 -32.7 26.9 -32.8 27.3 -33.0
2025-11-03T18:01:20.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:01:20.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:01:20.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.667116
2025-11-03T18:01:20.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:01:20.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:01:20.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:01:20.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:01:20.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:01:20.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:00:53', tmtdew=43.53, humidity=4.28, cloud=0.0, wind=29.64, temperature=25.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:00:38.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:01:20.046 [DEBUG] [Thread-120215] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:01:20.129 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:01:20.142 [DEBUG] [Thread-120218] [transport.py] [_log()] starting thread (client mode): 0x117ea950
2025-11-03T18:01:20.142 [DEBUG] [Thread-120218] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:01:20.157 [DEBUG] [Thread-120218] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:01:20.157 [INFO] [Thread-120218] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:01:20.165 [DEBUG] [Thread-120218] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:01:20.165 [DEBUG] [Thread-120218] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:01:20.165 [DEBUG] [Thread-120218] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:01:20.165 [DEBUG] [Thread-120218] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:01:20.165 [DEBUG] [Thread-120218] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:01:20.165 [DEBUG] [Thread-120218] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:01:20.166 [DEBUG] [Thread-120218] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:01:20.166 [DEBUG] [Thread-120218] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:01:20.166 [DEBUG] [Thread-120218] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:01:20.166 [DEBUG] [Thread-120218] [transport.py] [_log()] client lang: <none>
2025-11-03T18:01:20.166 [DEBUG] [Thread-120218] [transport.py] [_log()] server lang: <none>
2025-11-03T18:01:20.166 [DEBUG] [Thread-120218] [transport.py] [_log()] kex follows: False
2025-11-03T18:01:20.166 [DEBUG] [Thread-120218] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:01:20.166 [DEBUG] [Thread-120218] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:01:20.167 [DEBUG] [Thread-120218] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:01:20.167 [DEBUG] [Thread-120218] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:01:20.167 [DEBUG] [Thread-120218] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:01:20.167 [DEBUG] [Thread-120218] [transport.py] [_log()] Compression: none
2025-11-03T18:01:20.167 [DEBUG] [Thread-120218] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:01:20.225 [DEBUG] [Thread-120218] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:01:20.225 [DEBUG] [Thread-120218] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:01:20.226 [DEBUG] [Thread-120218] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:01:20.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:01:20.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:01:20.284 [DEBUG] [Thread-120218] [transport.py] [_log()] userauth is OK
2025-11-03T18:01:20.285 [DEBUG] [Thread-120218] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:01:20.285 [DEBUG] [Thread-120218] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:01:20.285 [DEBUG] [Thread-120218] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:01:20.285 [DEBUG] [Thread-120218] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:01:20.304 [INFO] [Thread-120218] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:01:20.304 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:01:20.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:01:21.170 [DEBUG] [Thread-120218] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:01:21.170 [DEBUG] [Thread-120218] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:01:21.218 [DEBUG] [Thread-120218] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:01:21.219 [DEBUG] [Thread-120218] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:01:21.228 [DEBUG] [Thread-120218] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:01:21.237 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:01:21.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:01:21.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:01:21.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:01:21.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:01:21.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:01:21.265 [DEBUG] [Thread-120218] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:01:27.550 [DEBUG] [Thread-120220 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:01:28.069 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:01:28.069 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:01:36.187 [DEBUG] [Thread-120221 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:01:42.593 [DEBUG] [Thread-120222 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:01:51.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:01:51.287 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:01:51.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:01:52.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 1, 25), 43.77, 4.18, 0.0, 28.5, 25.06, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:01:52.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:01:25
2025-11-03T18:01:52.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:01:52.358 [DEBUG] [Thread-120223] [transport.py] [_log()] starting thread (client mode): 0x117e9b70
2025-11-03T18:01:52.358 [DEBUG] [Thread-120223] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:01:52.379 [DEBUG] [Thread-120223] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:01:52.379 [INFO] [Thread-120223] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:01:52.382 [DEBUG] [Thread-120223] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:01:52.382 [DEBUG] [Thread-120223] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:01:52.382 [DEBUG] [Thread-120223] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:01:52.382 [DEBUG] [Thread-120223] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:01:52.382 [DEBUG] [Thread-120223] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:01:52.382 [DEBUG] [Thread-120223] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:01:52.382 [DEBUG] [Thread-120223] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:01:52.382 [DEBUG] [Thread-120223] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:01:52.382 [DEBUG] [Thread-120223] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:01:52.382 [DEBUG] [Thread-120223] [transport.py] [_log()] client lang: <none>
2025-11-03T18:01:52.382 [DEBUG] [Thread-120223] [transport.py] [_log()] server lang: <none>
2025-11-03T18:01:52.382 [DEBUG] [Thread-120223] [transport.py] [_log()] kex follows: False
2025-11-03T18:01:52.382 [DEBUG] [Thread-120223] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:01:52.383 [DEBUG] [Thread-120223] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:01:52.383 [DEBUG] [Thread-120223] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:01:52.383 [DEBUG] [Thread-120223] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:01:52.383 [DEBUG] [Thread-120223] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:01:52.383 [DEBUG] [Thread-120223] [transport.py] [_log()] Compression: none
2025-11-03T18:01:52.383 [DEBUG] [Thread-120223] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:01:52.398 [DEBUG] [Thread-120223] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:01:52.398 [DEBUG] [Thread-120223] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:01:52.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:01:52.398 [DEBUG] [Thread-120223] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:01:52.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:01:52.399 [DEBUG] [Thread-120223] [transport.py] [_log()] userauth is OK
2025-11-03T18:01:52.399 [DEBUG] [Thread-120223] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:01:52.399 [DEBUG] [Thread-120223] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:01:52.399 [DEBUG] [Thread-120223] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:01:52.399 [DEBUG] [Thread-120223] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:01:52.409 [INFO] [Thread-120223] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:01:52.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:01:53.059 [DEBUG] [Thread-120223] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:01:53.059 [DEBUG] [Thread-120223] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:01:53.059 [DEBUG] [Thread-120223] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:01:53.100 [DEBUG] [Thread-120223] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:01:53.100 [DEBUG] [Thread-120223] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:01:53.102 [DEBUG] [Thread-120223] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:01:53.113 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:01:53.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:01:53.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:01:53.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:01:53.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:01:53.119 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:01:53.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:01:53.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:01:53.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:01:53.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.667463 -999.00  +24.40  30.32      9  -10.00 1 1 2 1 1   887    0 33.74 -45.80 ----- 31.2 30.3 292.2 35.1 26.1 -33.0 26.3 -31.9 27.0 -32.5 27.2 -33.0
2025-11-03T18:01:53.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:01:53.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:01:53.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.667463
2025-11-03T18:01:53.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:01:53.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:01:53.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:01:53.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:01:53.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:01:53.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:01:25', tmtdew=43.77, humidity=4.18, cloud=0.0, wind=28.5, temperature=25.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:01:08.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:01:53.120 [DEBUG] [Thread-120223] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:01:53.194 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:01:53.207 [DEBUG] [Thread-120226] [transport.py] [_log()] starting thread (client mode): 0x117e83a0
2025-11-03T18:01:53.208 [DEBUG] [Thread-120226] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:01:53.222 [DEBUG] [Thread-120226] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:01:53.222 [INFO] [Thread-120226] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:01:53.230 [DEBUG] [Thread-120226] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:01:53.230 [DEBUG] [Thread-120226] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:01:53.230 [DEBUG] [Thread-120226] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:01:53.230 [DEBUG] [Thread-120226] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:01:53.230 [DEBUG] [Thread-120226] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:01:53.230 [DEBUG] [Thread-120226] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:01:53.230 [DEBUG] [Thread-120226] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:01:53.230 [DEBUG] [Thread-120226] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:01:53.230 [DEBUG] [Thread-120226] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:01:53.230 [DEBUG] [Thread-120226] [transport.py] [_log()] client lang: <none>
2025-11-03T18:01:53.230 [DEBUG] [Thread-120226] [transport.py] [_log()] server lang: <none>
2025-11-03T18:01:53.230 [DEBUG] [Thread-120226] [transport.py] [_log()] kex follows: False
2025-11-03T18:01:53.230 [DEBUG] [Thread-120226] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:01:53.230 [DEBUG] [Thread-120226] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:01:53.230 [DEBUG] [Thread-120226] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:01:53.230 [DEBUG] [Thread-120226] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:01:53.230 [DEBUG] [Thread-120226] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:01:53.230 [DEBUG] [Thread-120226] [transport.py] [_log()] Compression: none
2025-11-03T18:01:53.230 [DEBUG] [Thread-120226] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:01:53.288 [DEBUG] [Thread-120226] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:01:53.289 [DEBUG] [Thread-120226] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:01:53.289 [DEBUG] [Thread-120226] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:01:53.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:01:53.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:01:53.345 [DEBUG] [Thread-120226] [transport.py] [_log()] userauth is OK
2025-11-03T18:01:53.345 [DEBUG] [Thread-120226] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:01:53.345 [DEBUG] [Thread-120226] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:01:53.346 [DEBUG] [Thread-120226] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:01:53.346 [DEBUG] [Thread-120226] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:01:53.359 [INFO] [Thread-120226] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:01:53.359 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:01:53.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:01:54.206 [DEBUG] [Thread-120226] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:01:54.206 [DEBUG] [Thread-120226] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:01:54.253 [DEBUG] [Thread-120226] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:01:54.253 [DEBUG] [Thread-120226] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:01:54.262 [DEBUG] [Thread-120226] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:01:54.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:01:54.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:01:54.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:01:54.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:01:54.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:01:54.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:01:54.297 [DEBUG] [Thread-120226] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:01:57.625 [DEBUG] [Thread-120228 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:02:12.693 [DEBUG] [Thread-120229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:02:24.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:02:24.299 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:02:24.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:02:25.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 1, 57), 43.53, 4.22, 0.0, 29.18, 24.73, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:02:25.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:01:57
2025-11-03T18:02:25.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:02:25.373 [DEBUG] [Thread-120230] [transport.py] [_log()] starting thread (client mode): 0x117eb190
2025-11-03T18:02:25.373 [DEBUG] [Thread-120230] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:02:25.387 [DEBUG] [Thread-120230] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:02:25.387 [INFO] [Thread-120230] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:02:25.388 [DEBUG] [Thread-120230] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:02:25.389 [DEBUG] [Thread-120230] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:02:25.389 [DEBUG] [Thread-120230] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:02:25.389 [DEBUG] [Thread-120230] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:02:25.389 [DEBUG] [Thread-120230] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:02:25.389 [DEBUG] [Thread-120230] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:02:25.389 [DEBUG] [Thread-120230] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:02:25.389 [DEBUG] [Thread-120230] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:02:25.389 [DEBUG] [Thread-120230] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:02:25.389 [DEBUG] [Thread-120230] [transport.py] [_log()] client lang: <none>
2025-11-03T18:02:25.389 [DEBUG] [Thread-120230] [transport.py] [_log()] server lang: <none>
2025-11-03T18:02:25.389 [DEBUG] [Thread-120230] [transport.py] [_log()] kex follows: False
2025-11-03T18:02:25.389 [DEBUG] [Thread-120230] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:02:25.389 [DEBUG] [Thread-120230] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:02:25.389 [DEBUG] [Thread-120230] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:02:25.389 [DEBUG] [Thread-120230] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:02:25.389 [DEBUG] [Thread-120230] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:02:25.389 [DEBUG] [Thread-120230] [transport.py] [_log()] Compression: none
2025-11-03T18:02:25.389 [DEBUG] [Thread-120230] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:02:25.410 [DEBUG] [Thread-120230] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:02:25.410 [DEBUG] [Thread-120230] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:02:25.411 [DEBUG] [Thread-120230] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:02:25.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:02:25.412 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:02:25.413 [DEBUG] [Thread-120230] [transport.py] [_log()] userauth is OK
2025-11-03T18:02:25.413 [DEBUG] [Thread-120230] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:02:25.413 [DEBUG] [Thread-120230] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:02:25.413 [DEBUG] [Thread-120230] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:02:25.413 [DEBUG] [Thread-120230] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:02:25.436 [INFO] [Thread-120230] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:02:25.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:02:26.069 [DEBUG] [Thread-120230] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:02:26.069 [DEBUG] [Thread-120230] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:02:26.069 [DEBUG] [Thread-120230] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:02:26.110 [DEBUG] [Thread-120230] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:02:26.110 [DEBUG] [Thread-120230] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:02:26.113 [DEBUG] [Thread-120230] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:02:26.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:02:26.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:02:26.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:02:26.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:02:26.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:02:26.132 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:02:26.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:02:26.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:02:26.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:02:26.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.667810 -999.00  +24.40  23.84      9   -9.90 1 1 1 1 1   887    0 33.51 -48.55 ----- 27.1 23.8 310.6 30.7 26.1 -33.0 26.3 -31.9 26.9 -32.3 27.2 -32.5
2025-11-03T18:02:26.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:02:26.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:02:26.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.667810
2025-11-03T18:02:26.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:02:26.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:02:26.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:02:26.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:02:26.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:02:26.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:01:57', tmtdew=43.53, humidity=4.22, cloud=0.0, wind=29.18, temperature=24.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:01:38.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:02:26.133 [DEBUG] [Thread-120230] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:02:26.205 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:02:26.218 [DEBUG] [Thread-120233] [transport.py] [_log()] starting thread (client mode): 0xed10940
2025-11-03T18:02:26.218 [DEBUG] [Thread-120233] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:02:26.235 [DEBUG] [Thread-120233] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:02:26.235 [INFO] [Thread-120233] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:02:26.242 [DEBUG] [Thread-120233] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:02:26.242 [DEBUG] [Thread-120233] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:02:26.242 [DEBUG] [Thread-120233] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:02:26.242 [DEBUG] [Thread-120233] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:02:26.242 [DEBUG] [Thread-120233] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:02:26.242 [DEBUG] [Thread-120233] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:02:26.242 [DEBUG] [Thread-120233] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:02:26.242 [DEBUG] [Thread-120233] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:02:26.243 [DEBUG] [Thread-120233] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:02:26.243 [DEBUG] [Thread-120233] [transport.py] [_log()] client lang: <none>
2025-11-03T18:02:26.243 [DEBUG] [Thread-120233] [transport.py] [_log()] server lang: <none>
2025-11-03T18:02:26.243 [DEBUG] [Thread-120233] [transport.py] [_log()] kex follows: False
2025-11-03T18:02:26.243 [DEBUG] [Thread-120233] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:02:26.243 [DEBUG] [Thread-120233] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:02:26.243 [DEBUG] [Thread-120233] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:02:26.243 [DEBUG] [Thread-120233] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:02:26.243 [DEBUG] [Thread-120233] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:02:26.243 [DEBUG] [Thread-120233] [transport.py] [_log()] Compression: none
2025-11-03T18:02:26.243 [DEBUG] [Thread-120233] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:02:26.303 [DEBUG] [Thread-120233] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:02:26.303 [DEBUG] [Thread-120233] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:02:26.303 [DEBUG] [Thread-120233] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:02:26.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:02:26.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:02:26.359 [DEBUG] [Thread-120233] [transport.py] [_log()] userauth is OK
2025-11-03T18:02:26.359 [DEBUG] [Thread-120233] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:02:26.359 [DEBUG] [Thread-120233] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:02:26.359 [DEBUG] [Thread-120233] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:02:26.359 [DEBUG] [Thread-120233] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:02:26.377 [INFO] [Thread-120233] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:02:26.377 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:02:26.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:02:27.206 [DEBUG] [Thread-120233] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:02:27.206 [DEBUG] [Thread-120233] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:02:27.254 [DEBUG] [Thread-120233] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:02:27.255 [DEBUG] [Thread-120233] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:02:27.263 [DEBUG] [Thread-120233] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:02:27.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:02:27.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:02:27.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:02:27.287 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:02:27.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:02:27.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:02:27.295 [DEBUG] [Thread-120233] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:02:27.729 [DEBUG] [Thread-120235 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:02:28.211 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:02:28.212 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:02:36.267 [DEBUG] [Thread-120236 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:02:42.772 [DEBUG] [Thread-120237 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:02:57.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:02:57.307 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:02:57.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:02:57.812 [DEBUG] [Thread-120238 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:02:57.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 2, 30), 43.36, 4.27, 0.0, 28.43, 24.61, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:02:57.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:02:30
2025-11-03T18:02:58.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:02:58.290 [DEBUG] [Thread-120239] [transport.py] [_log()] starting thread (client mode): 0xed10df0
2025-11-03T18:02:58.290 [DEBUG] [Thread-120239] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:02:58.311 [DEBUG] [Thread-120239] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:02:58.311 [INFO] [Thread-120239] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:02:58.314 [DEBUG] [Thread-120239] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:02:58.314 [DEBUG] [Thread-120239] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:02:58.314 [DEBUG] [Thread-120239] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:02:58.314 [DEBUG] [Thread-120239] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:02:58.314 [DEBUG] [Thread-120239] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:02:58.315 [DEBUG] [Thread-120239] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:02:58.315 [DEBUG] [Thread-120239] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:02:58.315 [DEBUG] [Thread-120239] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:02:58.315 [DEBUG] [Thread-120239] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:02:58.315 [DEBUG] [Thread-120239] [transport.py] [_log()] client lang: <none>
2025-11-03T18:02:58.315 [DEBUG] [Thread-120239] [transport.py] [_log()] server lang: <none>
2025-11-03T18:02:58.315 [DEBUG] [Thread-120239] [transport.py] [_log()] kex follows: False
2025-11-03T18:02:58.315 [DEBUG] [Thread-120239] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:02:58.315 [DEBUG] [Thread-120239] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:02:58.315 [DEBUG] [Thread-120239] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:02:58.315 [DEBUG] [Thread-120239] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:02:58.315 [DEBUG] [Thread-120239] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:02:58.315 [DEBUG] [Thread-120239] [transport.py] [_log()] Compression: none
2025-11-03T18:02:58.315 [DEBUG] [Thread-120239] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:02:58.332 [DEBUG] [Thread-120239] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:02:58.333 [DEBUG] [Thread-120239] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:02:58.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:02:58.334 [DEBUG] [Thread-120239] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:02:58.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:02:58.336 [DEBUG] [Thread-120239] [transport.py] [_log()] userauth is OK
2025-11-03T18:02:58.336 [DEBUG] [Thread-120239] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:02:58.336 [DEBUG] [Thread-120239] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:02:58.336 [DEBUG] [Thread-120239] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:02:58.336 [DEBUG] [Thread-120239] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:02:58.368 [INFO] [Thread-120239] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:02:58.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:02:59.011 [DEBUG] [Thread-120239] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:02:59.011 [DEBUG] [Thread-120239] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:02:59.012 [DEBUG] [Thread-120239] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:02:59.052 [DEBUG] [Thread-120239] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:02:59.052 [DEBUG] [Thread-120239] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:02:59.056 [DEBUG] [Thread-120239] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:02:59.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:02:59.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:02:59.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:02:59.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:02:59.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:02:59.079 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:02:59.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:02:59.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:02:59.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:02:59.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.668158 -999.00  +24.40  24.43      9   -9.90 1 1 1 1 1   887    0 33.54 -48.65 ----- 21.0 24.4 308.4 27.7 26.1 -33.1 26.3 -32.1 26.9 -33.0 27.2 -33.0
2025-11-03T18:02:59.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:02:59.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:02:59.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.668158
2025-11-03T18:02:59.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:02:59.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:02:59.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:02:59.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:02:59.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:02:59.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:02:30', tmtdew=43.36, humidity=4.27, cloud=0.0, wind=28.43, temperature=24.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:02:08.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:02:59.082 [DEBUG] [Thread-120239] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:02:59.174 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:02:59.188 [DEBUG] [Thread-120242] [transport.py] [_log()] starting thread (client mode): 0xed10610
2025-11-03T18:02:59.189 [DEBUG] [Thread-120242] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:02:59.203 [DEBUG] [Thread-120242] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:02:59.203 [INFO] [Thread-120242] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:02:59.213 [DEBUG] [Thread-120242] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:02:59.213 [DEBUG] [Thread-120242] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:02:59.213 [DEBUG] [Thread-120242] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:02:59.213 [DEBUG] [Thread-120242] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:02:59.213 [DEBUG] [Thread-120242] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:02:59.213 [DEBUG] [Thread-120242] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:02:59.213 [DEBUG] [Thread-120242] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:02:59.213 [DEBUG] [Thread-120242] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:02:59.213 [DEBUG] [Thread-120242] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:02:59.213 [DEBUG] [Thread-120242] [transport.py] [_log()] client lang: <none>
2025-11-03T18:02:59.213 [DEBUG] [Thread-120242] [transport.py] [_log()] server lang: <none>
2025-11-03T18:02:59.214 [DEBUG] [Thread-120242] [transport.py] [_log()] kex follows: False
2025-11-03T18:02:59.214 [DEBUG] [Thread-120242] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:02:59.214 [DEBUG] [Thread-120242] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:02:59.214 [DEBUG] [Thread-120242] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:02:59.214 [DEBUG] [Thread-120242] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:02:59.214 [DEBUG] [Thread-120242] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:02:59.214 [DEBUG] [Thread-120242] [transport.py] [_log()] Compression: none
2025-11-03T18:02:59.214 [DEBUG] [Thread-120242] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:02:59.275 [DEBUG] [Thread-120242] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:02:59.276 [DEBUG] [Thread-120242] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:02:59.276 [DEBUG] [Thread-120242] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:02:59.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:02:59.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:02:59.333 [DEBUG] [Thread-120242] [transport.py] [_log()] userauth is OK
2025-11-03T18:02:59.333 [DEBUG] [Thread-120242] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:02:59.333 [DEBUG] [Thread-120242] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:02:59.333 [DEBUG] [Thread-120242] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:02:59.333 [DEBUG] [Thread-120242] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:02:59.346 [INFO] [Thread-120242] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:02:59.347 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:02:59.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:03:00.179 [DEBUG] [Thread-120242] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:03:00.180 [DEBUG] [Thread-120242] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:03:00.227 [DEBUG] [Thread-120242] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:03:00.227 [DEBUG] [Thread-120242] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:03:00.236 [DEBUG] [Thread-120242] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:03:00.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:03:00.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:03:00.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:03:00.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:03:00.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:03:00.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:03:00.271 [DEBUG] [Thread-120242] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:03:12.837 [DEBUG] [Thread-120244 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:03:27.890 [DEBUG] [Thread-120245 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:03:28.352 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:03:28.353 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:03:30.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:03:30.287 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:03:30.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:03:30.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 3, 2), 43.3, 4.28, 0.0, 27.77, 24.56, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:03:30.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:03:02
2025-11-03T18:03:31.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:03:31.243 [DEBUG] [Thread-120246] [transport.py] [_log()] starting thread (client mode): 0xed207f0
2025-11-03T18:03:31.243 [DEBUG] [Thread-120246] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:03:31.264 [DEBUG] [Thread-120246] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:03:31.265 [INFO] [Thread-120246] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:03:31.268 [DEBUG] [Thread-120246] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:03:31.268 [DEBUG] [Thread-120246] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:03:31.268 [DEBUG] [Thread-120246] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:03:31.268 [DEBUG] [Thread-120246] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:03:31.268 [DEBUG] [Thread-120246] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:03:31.268 [DEBUG] [Thread-120246] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:03:31.268 [DEBUG] [Thread-120246] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:03:31.269 [DEBUG] [Thread-120246] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:03:31.269 [DEBUG] [Thread-120246] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:03:31.269 [DEBUG] [Thread-120246] [transport.py] [_log()] client lang: <none>
2025-11-03T18:03:31.269 [DEBUG] [Thread-120246] [transport.py] [_log()] server lang: <none>
2025-11-03T18:03:31.269 [DEBUG] [Thread-120246] [transport.py] [_log()] kex follows: False
2025-11-03T18:03:31.269 [DEBUG] [Thread-120246] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:03:31.269 [DEBUG] [Thread-120246] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:03:31.269 [DEBUG] [Thread-120246] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:03:31.269 [DEBUG] [Thread-120246] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:03:31.269 [DEBUG] [Thread-120246] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:03:31.270 [DEBUG] [Thread-120246] [transport.py] [_log()] Compression: none
2025-11-03T18:03:31.270 [DEBUG] [Thread-120246] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:03:31.289 [DEBUG] [Thread-120246] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:03:31.289 [DEBUG] [Thread-120246] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:03:31.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:03:31.290 [DEBUG] [Thread-120246] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:03:31.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:03:31.302 [DEBUG] [Thread-120246] [transport.py] [_log()] userauth is OK
2025-11-03T18:03:31.302 [DEBUG] [Thread-120246] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:03:31.302 [DEBUG] [Thread-120246] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:03:31.302 [DEBUG] [Thread-120246] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:03:31.302 [DEBUG] [Thread-120246] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:03:31.328 [INFO] [Thread-120246] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:03:31.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:03:32.075 [DEBUG] [Thread-120246] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:03:32.076 [DEBUG] [Thread-120246] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:03:32.077 [DEBUG] [Thread-120246] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:03:32.117 [DEBUG] [Thread-120246] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:03:32.117 [DEBUG] [Thread-120246] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:03:32.121 [DEBUG] [Thread-120246] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:03:32.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:03:32.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:03:32.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:03:32.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:03:32.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:03:32.138 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:03:32.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:03:32.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:03:32.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:03:32.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.668505 -999.00  +24.40  19.63      9   -9.90 1 1 1 1 1   887    0 33.53 -52.79 ----- 21.9 19.6 307.6 28.8 26.1 -33.3 26.3 -32.0 26.9 -32.2 27.2 -32.5
2025-11-03T18:03:32.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:03:32.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:03:32.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.668505
2025-11-03T18:03:32.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:03:32.147 [DEBUG] [Thread-120246] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:03:32.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:03:32.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:03:32.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:03:32.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:03:32.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:03:02', tmtdew=43.3, humidity=4.28, cloud=0.0, wind=27.77, temperature=24.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:02:38.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:03:32.233 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:03:32.245 [DEBUG] [Thread-120249] [transport.py] [_log()] starting thread (client mode): 0x1179b130
2025-11-03T18:03:32.246 [DEBUG] [Thread-120249] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:03:32.261 [DEBUG] [Thread-120249] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:03:32.261 [INFO] [Thread-120249] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:03:32.269 [DEBUG] [Thread-120249] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:03:32.269 [DEBUG] [Thread-120249] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:03:32.269 [DEBUG] [Thread-120249] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:03:32.269 [DEBUG] [Thread-120249] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:03:32.269 [DEBUG] [Thread-120249] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:03:32.269 [DEBUG] [Thread-120249] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:03:32.269 [DEBUG] [Thread-120249] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:03:32.269 [DEBUG] [Thread-120249] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:03:32.269 [DEBUG] [Thread-120249] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:03:32.269 [DEBUG] [Thread-120249] [transport.py] [_log()] client lang: <none>
2025-11-03T18:03:32.269 [DEBUG] [Thread-120249] [transport.py] [_log()] server lang: <none>
2025-11-03T18:03:32.269 [DEBUG] [Thread-120249] [transport.py] [_log()] kex follows: False
2025-11-03T18:03:32.270 [DEBUG] [Thread-120249] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:03:32.270 [DEBUG] [Thread-120249] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:03:32.270 [DEBUG] [Thread-120249] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:03:32.270 [DEBUG] [Thread-120249] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:03:32.270 [DEBUG] [Thread-120249] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:03:32.270 [DEBUG] [Thread-120249] [transport.py] [_log()] Compression: none
2025-11-03T18:03:32.270 [DEBUG] [Thread-120249] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:03:32.327 [DEBUG] [Thread-120249] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:03:32.328 [DEBUG] [Thread-120249] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:03:32.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:03:32.329 [DEBUG] [Thread-120249] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:03:32.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:03:32.383 [DEBUG] [Thread-120249] [transport.py] [_log()] userauth is OK
2025-11-03T18:03:32.384 [DEBUG] [Thread-120249] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:03:32.384 [DEBUG] [Thread-120249] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:03:32.384 [DEBUG] [Thread-120249] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:03:32.384 [DEBUG] [Thread-120249] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:03:32.409 [INFO] [Thread-120249] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:03:32.410 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:03:32.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:03:33.229 [DEBUG] [Thread-120249] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:03:33.229 [DEBUG] [Thread-120249] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:03:33.277 [DEBUG] [Thread-120249] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:03:33.277 [DEBUG] [Thread-120249] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:03:33.287 [DEBUG] [Thread-120249] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:03:33.296 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:03:33.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:03:33.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:03:33.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:03:33.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:03:33.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:03:33.342 [DEBUG] [Thread-120249] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:03:36.320 [DEBUG] [Thread-120251 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:03:42.924 [DEBUG] [Thread-120252 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:03:57.972 [DEBUG] [Thread-120253 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:04:03.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:04:03.358 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:04:03.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:04:04.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 3, 34), 43.25, 4.28, 0.0, 23.31, 24.71, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:04:04.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:03:34
2025-11-03T18:04:04.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:04:04.437 [DEBUG] [Thread-120254] [transport.py] [_log()] starting thread (client mode): 0xed127a0
2025-11-03T18:04:04.437 [DEBUG] [Thread-120254] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:04:04.451 [DEBUG] [Thread-120254] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:04:04.451 [INFO] [Thread-120254] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:04:04.454 [DEBUG] [Thread-120254] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:04:04.454 [DEBUG] [Thread-120254] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:04:04.454 [DEBUG] [Thread-120254] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:04:04.454 [DEBUG] [Thread-120254] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:04:04.454 [DEBUG] [Thread-120254] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:04:04.454 [DEBUG] [Thread-120254] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:04:04.454 [DEBUG] [Thread-120254] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:04:04.455 [DEBUG] [Thread-120254] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:04:04.455 [DEBUG] [Thread-120254] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:04:04.455 [DEBUG] [Thread-120254] [transport.py] [_log()] client lang: <none>
2025-11-03T18:04:04.455 [DEBUG] [Thread-120254] [transport.py] [_log()] server lang: <none>
2025-11-03T18:04:04.455 [DEBUG] [Thread-120254] [transport.py] [_log()] kex follows: False
2025-11-03T18:04:04.455 [DEBUG] [Thread-120254] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:04:04.455 [DEBUG] [Thread-120254] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:04:04.455 [DEBUG] [Thread-120254] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:04:04.455 [DEBUG] [Thread-120254] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:04:04.455 [DEBUG] [Thread-120254] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:04:04.455 [DEBUG] [Thread-120254] [transport.py] [_log()] Compression: none
2025-11-03T18:04:04.455 [DEBUG] [Thread-120254] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:04:04.472 [DEBUG] [Thread-120254] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:04:04.473 [DEBUG] [Thread-120254] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:04:04.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:04:04.474 [DEBUG] [Thread-120254] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:04:04.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:04:04.517 [DEBUG] [Thread-120254] [transport.py] [_log()] userauth is OK
2025-11-03T18:04:04.517 [DEBUG] [Thread-120254] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:04:04.518 [DEBUG] [Thread-120254] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:04:04.518 [DEBUG] [Thread-120254] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:04:04.518 [DEBUG] [Thread-120254] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:04:04.538 [INFO] [Thread-120254] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:04:04.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:04:05.187 [DEBUG] [Thread-120254] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:04:05.187 [DEBUG] [Thread-120254] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:04:05.187 [DEBUG] [Thread-120254] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:04:05.229 [DEBUG] [Thread-120254] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:04:05.229 [DEBUG] [Thread-120254] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:04:05.230 [DEBUG] [Thread-120254] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:04:05.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:04:05.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:04:05.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:04:05.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:04:05.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:04:05.247 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:04:05.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:04:05.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:04:05.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:04:05.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.668852 -999.00  +24.60  27.41      9   -9.90 1 1 1 1 1   887    0 32.91 -53.16 ----- 30.9 27.4 288.0 33.7 26.1 -32.9 26.3 -31.7 27.0 -31.7 27.2 -32.5
2025-11-03T18:04:05.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:04:05.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:04:05.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.668852
2025-11-03T18:04:05.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:04:05.256 [DEBUG] [Thread-120254] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:04:05.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:04:05.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:04:05.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:04:05.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:04:05.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:03:34', tmtdew=43.25, humidity=4.28, cloud=0.0, wind=23.31, temperature=24.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:03:08.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:04:05.328 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:04:13.017 [DEBUG] [Thread-120257 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:04:28.065 [DEBUG] [Thread-120258 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:04:28.495 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:04:28.496 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:04:36.402 [DEBUG] [Thread-120259 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:04:43.096 [DEBUG] [Thread-120260 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:04:58.145 [DEBUG] [Thread-120261 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:05:13.177 [DEBUG] [Thread-120262 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:05:28.217 [DEBUG] [Thread-120263 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:05:28.640 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:05:28.642 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:05:36.501 [DEBUG] [Thread-120264 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:05:43.253 [DEBUG] [Thread-120265 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:05:58.286 [DEBUG] [Thread-120266 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:06:13.332 [DEBUG] [Thread-120267 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:06:20.776 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T18:06:28.361 [DEBUG] [Thread-120268 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:06:28.782 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:06:28.782 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:06:36.563 [DEBUG] [Thread-120269 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:06:43.392 [DEBUG] [Thread-120270 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:06:50.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:06:50.809 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:06:50.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:06:51.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 6, 16), 43.25, 4.77, 0.0, 35.47, 24.78, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:06:51.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:06:16
2025-11-03T18:06:51.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:06:51.884 [DEBUG] [Thread-120271] [transport.py] [_log()] starting thread (client mode): 0x11760130
2025-11-03T18:06:51.885 [DEBUG] [Thread-120271] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:06:51.890 [DEBUG] [Thread-120271] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:06:51.890 [INFO] [Thread-120271] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:06:51.896 [DEBUG] [Thread-120271] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:06:51.896 [DEBUG] [Thread-120271] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:06:51.896 [DEBUG] [Thread-120271] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:06:51.896 [DEBUG] [Thread-120271] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:06:51.896 [DEBUG] [Thread-120271] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:06:51.896 [DEBUG] [Thread-120271] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:06:51.896 [DEBUG] [Thread-120271] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:06:51.896 [DEBUG] [Thread-120271] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:06:51.896 [DEBUG] [Thread-120271] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:06:51.896 [DEBUG] [Thread-120271] [transport.py] [_log()] client lang: <none>
2025-11-03T18:06:51.896 [DEBUG] [Thread-120271] [transport.py] [_log()] server lang: <none>
2025-11-03T18:06:51.896 [DEBUG] [Thread-120271] [transport.py] [_log()] kex follows: False
2025-11-03T18:06:51.896 [DEBUG] [Thread-120271] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:06:51.897 [DEBUG] [Thread-120271] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:06:51.897 [DEBUG] [Thread-120271] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:06:51.897 [DEBUG] [Thread-120271] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:06:51.897 [DEBUG] [Thread-120271] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:06:51.897 [DEBUG] [Thread-120271] [transport.py] [_log()] Compression: none
2025-11-03T18:06:51.897 [DEBUG] [Thread-120271] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:06:51.936 [DEBUG] [Thread-120271] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:06:51.941 [DEBUG] [Thread-120271] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:06:51.942 [DEBUG] [Thread-120271] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:06:51.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:06:51.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:06:51.947 [DEBUG] [Thread-120271] [transport.py] [_log()] userauth is OK
2025-11-03T18:06:51.947 [DEBUG] [Thread-120271] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:06:51.948 [DEBUG] [Thread-120271] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:06:51.948 [DEBUG] [Thread-120271] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:06:51.948 [DEBUG] [Thread-120271] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:06:51.974 [INFO] [Thread-120271] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:06:51.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:06:52.620 [DEBUG] [Thread-120271] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:06:52.620 [DEBUG] [Thread-120271] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:06:52.632 [DEBUG] [Thread-120271] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:06:52.662 [DEBUG] [Thread-120271] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:06:52.663 [DEBUG] [Thread-120271] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:06:52.666 [DEBUG] [Thread-120271] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:06:52.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:06:52.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:06:52.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:06:52.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:06:52.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:06:52.690 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:06:52.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:06:52.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:06:52.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:06:52.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.670935 -999.00  +24.30  33.02      9   -9.90 1 1 2 1 1   887    0 32.95 -58.74 ----- 29.7 33.0 298.0 45.2 25.9 -33.0 26.1 -32.0 26.6 -32.7 26.9 -32.6
2025-11-03T18:06:52.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:06:52.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:06:52.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.670935
2025-11-03T18:06:52.698 [DEBUG] [Thread-120271] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:06:52.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:06:52.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:06:52.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:06:52.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:06:52.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:06:52.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:06:16', tmtdew=43.25, humidity=4.77, cloud=0.0, wind=35.47, temperature=24.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:06:08.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:06:52.800 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:06:52.814 [DEBUG] [Thread-120274] [transport.py] [_log()] starting thread (client mode): 0xed239a0
2025-11-03T18:06:52.814 [DEBUG] [Thread-120274] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:06:52.828 [DEBUG] [Thread-120274] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:06:52.829 [INFO] [Thread-120274] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:06:52.837 [DEBUG] [Thread-120274] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:06:52.837 [DEBUG] [Thread-120274] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:06:52.837 [DEBUG] [Thread-120274] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:06:52.837 [DEBUG] [Thread-120274] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:06:52.837 [DEBUG] [Thread-120274] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:06:52.838 [DEBUG] [Thread-120274] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:06:52.838 [DEBUG] [Thread-120274] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:06:52.838 [DEBUG] [Thread-120274] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:06:52.838 [DEBUG] [Thread-120274] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:06:52.838 [DEBUG] [Thread-120274] [transport.py] [_log()] client lang: <none>
2025-11-03T18:06:52.838 [DEBUG] [Thread-120274] [transport.py] [_log()] server lang: <none>
2025-11-03T18:06:52.838 [DEBUG] [Thread-120274] [transport.py] [_log()] kex follows: False
2025-11-03T18:06:52.838 [DEBUG] [Thread-120274] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:06:52.838 [DEBUG] [Thread-120274] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:06:52.838 [DEBUG] [Thread-120274] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:06:52.838 [DEBUG] [Thread-120274] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:06:52.838 [DEBUG] [Thread-120274] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:06:52.838 [DEBUG] [Thread-120274] [transport.py] [_log()] Compression: none
2025-11-03T18:06:52.838 [DEBUG] [Thread-120274] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:06:52.898 [DEBUG] [Thread-120274] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:06:52.899 [DEBUG] [Thread-120274] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:06:52.900 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:06:52.900 [DEBUG] [Thread-120274] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:06:52.902 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:06:52.954 [DEBUG] [Thread-120274] [transport.py] [_log()] userauth is OK
2025-11-03T18:06:52.955 [DEBUG] [Thread-120274] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:06:52.955 [DEBUG] [Thread-120274] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:06:52.955 [DEBUG] [Thread-120274] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:06:52.955 [DEBUG] [Thread-120274] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:06:52.974 [INFO] [Thread-120274] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:06:52.975 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:06:52.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:06:53.841 [DEBUG] [Thread-120274] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:06:53.841 [DEBUG] [Thread-120274] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:06:53.880 [DEBUG] [Thread-120274] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:06:53.880 [DEBUG] [Thread-120274] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:06:53.889 [DEBUG] [Thread-120274] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:06:53.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:06:53.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:06:53.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:06:53.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:06:53.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:06:53.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:06:53.923 [DEBUG] [Thread-120274] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:06:58.440 [DEBUG] [Thread-120276 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:07:13.540 [DEBUG] [Thread-120277 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:07:23.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:07:23.945 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:07:23.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:07:24.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 7, 20), 43.12, 4.82, 0.0, 33.65, 24.83, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:07:24.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:07:20
2025-11-03T18:07:24.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:07:24.978 [DEBUG] [Thread-120278] [transport.py] [_log()] starting thread (client mode): 0x11763dc0
2025-11-03T18:07:24.978 [DEBUG] [Thread-120278] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:07:24.994 [DEBUG] [Thread-120278] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:07:24.994 [INFO] [Thread-120278] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:07:24.997 [DEBUG] [Thread-120278] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:07:24.997 [DEBUG] [Thread-120278] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:07:24.997 [DEBUG] [Thread-120278] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:07:24.997 [DEBUG] [Thread-120278] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:07:24.997 [DEBUG] [Thread-120278] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:07:24.997 [DEBUG] [Thread-120278] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:07:24.997 [DEBUG] [Thread-120278] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:07:24.998 [DEBUG] [Thread-120278] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:07:24.998 [DEBUG] [Thread-120278] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:07:24.998 [DEBUG] [Thread-120278] [transport.py] [_log()] client lang: <none>
2025-11-03T18:07:24.998 [DEBUG] [Thread-120278] [transport.py] [_log()] server lang: <none>
2025-11-03T18:07:24.998 [DEBUG] [Thread-120278] [transport.py] [_log()] kex follows: False
2025-11-03T18:07:24.998 [DEBUG] [Thread-120278] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:07:24.998 [DEBUG] [Thread-120278] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:07:24.998 [DEBUG] [Thread-120278] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:07:24.998 [DEBUG] [Thread-120278] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:07:24.998 [DEBUG] [Thread-120278] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:07:24.999 [DEBUG] [Thread-120278] [transport.py] [_log()] Compression: none
2025-11-03T18:07:24.999 [DEBUG] [Thread-120278] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:07:25.016 [DEBUG] [Thread-120278] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:07:25.016 [DEBUG] [Thread-120278] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:07:25.017 [DEBUG] [Thread-120278] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:07:25.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:07:25.018 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:07:25.019 [DEBUG] [Thread-120278] [transport.py] [_log()] userauth is OK
2025-11-03T18:07:25.019 [DEBUG] [Thread-120278] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:07:25.019 [DEBUG] [Thread-120278] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:07:25.019 [DEBUG] [Thread-120278] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:07:25.019 [DEBUG] [Thread-120278] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:07:25.043 [INFO] [Thread-120278] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:07:25.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:07:25.880 [DEBUG] [Thread-120278] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:07:25.881 [DEBUG] [Thread-120278] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:07:25.881 [DEBUG] [Thread-120278] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:07:25.922 [DEBUG] [Thread-120278] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:07:25.922 [DEBUG] [Thread-120278] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:07:25.925 [DEBUG] [Thread-120278] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:07:25.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:07:25.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:07:25.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:07:25.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:07:25.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:07:25.946 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:07:25.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:07:25.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:07:25.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:07:25.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.671283 -999.00  +24.20  36.61      9   -9.90 1 1 2 1 1   887    0 33.01 -55.65 ----- 34.2 36.6 292.8 42.8 25.8 -33.2 26.1 -32.1 26.6 -32.0 26.8 -32.8
2025-11-03T18:07:25.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:07:25.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:07:25.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.671283
2025-11-03T18:07:25.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:07:25.948 [DEBUG] [Thread-120278] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:07:25.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:07:25.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:07:25.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:07:25.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:07:25.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:07:20', tmtdew=43.12, humidity=4.82, cloud=0.0, wind=33.65, temperature=24.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:06:38.851', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:07:26.032 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:07:26.044 [DEBUG] [Thread-120281] [transport.py] [_log()] starting thread (client mode): 0x117eaaa0
2025-11-03T18:07:26.044 [DEBUG] [Thread-120281] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:07:26.058 [DEBUG] [Thread-120281] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:07:26.058 [INFO] [Thread-120281] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:07:26.065 [DEBUG] [Thread-120281] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:07:26.065 [DEBUG] [Thread-120281] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:07:26.065 [DEBUG] [Thread-120281] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:07:26.065 [DEBUG] [Thread-120281] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:07:26.065 [DEBUG] [Thread-120281] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:07:26.065 [DEBUG] [Thread-120281] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:07:26.065 [DEBUG] [Thread-120281] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:07:26.066 [DEBUG] [Thread-120281] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:07:26.066 [DEBUG] [Thread-120281] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:07:26.066 [DEBUG] [Thread-120281] [transport.py] [_log()] client lang: <none>
2025-11-03T18:07:26.066 [DEBUG] [Thread-120281] [transport.py] [_log()] server lang: <none>
2025-11-03T18:07:26.066 [DEBUG] [Thread-120281] [transport.py] [_log()] kex follows: False
2025-11-03T18:07:26.066 [DEBUG] [Thread-120281] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:07:26.066 [DEBUG] [Thread-120281] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:07:26.066 [DEBUG] [Thread-120281] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:07:26.066 [DEBUG] [Thread-120281] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:07:26.066 [DEBUG] [Thread-120281] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:07:26.066 [DEBUG] [Thread-120281] [transport.py] [_log()] Compression: none
2025-11-03T18:07:26.066 [DEBUG] [Thread-120281] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:07:26.122 [DEBUG] [Thread-120281] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:07:26.122 [DEBUG] [Thread-120281] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:07:26.122 [DEBUG] [Thread-120281] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:07:26.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:07:26.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:07:26.179 [DEBUG] [Thread-120281] [transport.py] [_log()] userauth is OK
2025-11-03T18:07:26.179 [DEBUG] [Thread-120281] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:07:26.179 [DEBUG] [Thread-120281] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:07:26.179 [DEBUG] [Thread-120281] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:07:26.179 [DEBUG] [Thread-120281] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:07:26.192 [INFO] [Thread-120281] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:07:26.193 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:07:26.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:07:27.028 [DEBUG] [Thread-120281] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:07:27.028 [DEBUG] [Thread-120281] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:07:27.076 [DEBUG] [Thread-120281] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:07:27.076 [DEBUG] [Thread-120281] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:07:27.084 [DEBUG] [Thread-120281] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:07:27.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:07:27.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:07:27.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:07:27.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:07:27.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:07:27.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:07:27.119 [DEBUG] [Thread-120281] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:07:28.574 [DEBUG] [Thread-120283 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:07:28.924 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:07:28.925 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:07:36.641 [DEBUG] [Thread-120284 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:07:43.623 [DEBUG] [Thread-120285 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:07:57.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:07:57.137 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:07:57.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:07:57.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 7, 53), 43.29, 4.77, 0.0, 34.25, 24.74, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:07:57.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:07:53
2025-11-03T18:07:57.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:07:58.125 [DEBUG] [Thread-120286] [transport.py] [_log()] starting thread (client mode): 0x117617e0
2025-11-03T18:07:58.126 [DEBUG] [Thread-120286] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:07:58.145 [DEBUG] [Thread-120286] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:07:58.145 [INFO] [Thread-120286] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:07:58.148 [DEBUG] [Thread-120286] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:07:58.148 [DEBUG] [Thread-120286] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:07:58.148 [DEBUG] [Thread-120286] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:07:58.148 [DEBUG] [Thread-120286] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:07:58.148 [DEBUG] [Thread-120286] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:07:58.148 [DEBUG] [Thread-120286] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:07:58.148 [DEBUG] [Thread-120286] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:07:58.148 [DEBUG] [Thread-120286] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:07:58.148 [DEBUG] [Thread-120286] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:07:58.148 [DEBUG] [Thread-120286] [transport.py] [_log()] client lang: <none>
2025-11-03T18:07:58.148 [DEBUG] [Thread-120286] [transport.py] [_log()] server lang: <none>
2025-11-03T18:07:58.148 [DEBUG] [Thread-120286] [transport.py] [_log()] kex follows: False
2025-11-03T18:07:58.148 [DEBUG] [Thread-120286] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:07:58.148 [DEBUG] [Thread-120286] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:07:58.148 [DEBUG] [Thread-120286] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:07:58.148 [DEBUG] [Thread-120286] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:07:58.148 [DEBUG] [Thread-120286] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:07:58.148 [DEBUG] [Thread-120286] [transport.py] [_log()] Compression: none
2025-11-03T18:07:58.148 [DEBUG] [Thread-120286] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:07:58.163 [DEBUG] [Thread-120286] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:07:58.163 [DEBUG] [Thread-120286] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:07:58.164 [DEBUG] [Thread-120286] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:07:58.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:07:58.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:07:58.165 [DEBUG] [Thread-120286] [transport.py] [_log()] userauth is OK
2025-11-03T18:07:58.165 [DEBUG] [Thread-120286] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:07:58.165 [DEBUG] [Thread-120286] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:07:58.165 [DEBUG] [Thread-120286] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:07:58.165 [DEBUG] [Thread-120286] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:07:58.184 [INFO] [Thread-120286] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:07:58.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:07:58.663 [DEBUG] [Thread-120288 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:07:58.830 [DEBUG] [Thread-120286] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:07:58.831 [DEBUG] [Thread-120286] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:07:58.831 [DEBUG] [Thread-120286] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:07:58.871 [DEBUG] [Thread-120286] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:07:58.871 [DEBUG] [Thread-120286] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:07:58.875 [DEBUG] [Thread-120286] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:07:58.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:07:58.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:07:58.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:07:58.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:07:58.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:07:58.898 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:07:58.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:07:58.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:07:58.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:07:58.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.671630 -999.00  +24.30  32.72      9   -9.80 1 1 2 1 1   887    0 33.05 -56.82 ----- 29.2 32.7 296.0 38.6 25.8 -32.7 26.0 -31.8 26.6 -31.7 26.8 -32.5
2025-11-03T18:07:58.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:07:58.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:07:58.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.671630
2025-11-03T18:07:58.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:07:58.901 [DEBUG] [Thread-120286] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:07:58.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:07:58.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:07:58.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:07:58.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:07:58.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:07:53', tmtdew=43.29, humidity=4.77, cloud=0.0, wind=34.25, temperature=24.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:07:08.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:07:58.989 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:08:13.696 [DEBUG] [Thread-120290 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:08:28.757 [DEBUG] [Thread-120291 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:08:29.065 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:08:29.065 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:08:36.924 [DEBUG] [Thread-120292 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:08:43.791 [DEBUG] [Thread-120293 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:08:58.824 [DEBUG] [Thread-120294 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:09:13.857 [DEBUG] [Thread-120295 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:09:28.903 [DEBUG] [Thread-120296 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:09:29.207 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:09:29.208 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:09:37.103 [DEBUG] [Thread-120297 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:09:43.927 [DEBUG] [Thread-120298 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:09:58.964 [DEBUG] [Thread-120299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:10:14.001 [DEBUG] [Thread-120300 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:10:14.252 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T18:10:29.033 [DEBUG] [Thread-120301 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:10:29.350 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:10:29.351 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:10:37.158 [DEBUG] [Thread-120302 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:10:44.076 [DEBUG] [Thread-120303 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:10:44.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:10:44.300 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:10:44.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:10:45.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 10, 34), 43.51, 4.2, 0.0, 38.46, 24.63, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:10:45.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:10:34
2025-11-03T18:10:45.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:10:45.420 [DEBUG] [Thread-120304] [transport.py] [_log()] starting thread (client mode): 0x1179bdc0
2025-11-03T18:10:45.421 [DEBUG] [Thread-120304] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:10:45.434 [DEBUG] [Thread-120304] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:10:45.434 [INFO] [Thread-120304] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:10:45.441 [DEBUG] [Thread-120304] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:10:45.441 [DEBUG] [Thread-120304] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:10:45.441 [DEBUG] [Thread-120304] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:10:45.441 [DEBUG] [Thread-120304] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:10:45.441 [DEBUG] [Thread-120304] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:10:45.441 [DEBUG] [Thread-120304] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:10:45.441 [DEBUG] [Thread-120304] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:10:45.442 [DEBUG] [Thread-120304] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:10:45.442 [DEBUG] [Thread-120304] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:10:45.442 [DEBUG] [Thread-120304] [transport.py] [_log()] client lang: <none>
2025-11-03T18:10:45.442 [DEBUG] [Thread-120304] [transport.py] [_log()] server lang: <none>
2025-11-03T18:10:45.442 [DEBUG] [Thread-120304] [transport.py] [_log()] kex follows: False
2025-11-03T18:10:45.442 [DEBUG] [Thread-120304] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:10:45.443 [DEBUG] [Thread-120304] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:10:45.443 [DEBUG] [Thread-120304] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:10:45.443 [DEBUG] [Thread-120304] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:10:45.444 [DEBUG] [Thread-120304] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:10:45.444 [DEBUG] [Thread-120304] [transport.py] [_log()] Compression: none
2025-11-03T18:10:45.444 [DEBUG] [Thread-120304] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:10:45.484 [DEBUG] [Thread-120304] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:10:45.489 [DEBUG] [Thread-120304] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:10:45.491 [DEBUG] [Thread-120304] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:10:45.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:10:45.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:10:45.496 [DEBUG] [Thread-120304] [transport.py] [_log()] userauth is OK
2025-11-03T18:10:45.497 [DEBUG] [Thread-120304] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:10:45.497 [DEBUG] [Thread-120304] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:10:45.497 [DEBUG] [Thread-120304] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:10:45.497 [DEBUG] [Thread-120304] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:10:45.535 [INFO] [Thread-120304] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:10:45.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:10:46.176 [DEBUG] [Thread-120304] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:10:46.176 [DEBUG] [Thread-120304] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:10:46.186 [DEBUG] [Thread-120304] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:10:46.218 [DEBUG] [Thread-120304] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:10:46.218 [DEBUG] [Thread-120304] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:10:46.220 [DEBUG] [Thread-120304] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:10:46.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:10:46.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:10:46.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:10:46.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:10:46.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:10:46.240 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:10:46.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:10:46.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:10:46.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:10:46.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.673713 -999.00  +24.20  36.66      9  -10.30 1 1 2 1 1   887    0 32.44 -50.96 ----- 32.5 36.7 295.6 40.6 25.7 -33.5 26.0 -32.2 26.4 -33.1 26.7 -33.0
2025-11-03T18:10:46.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:10:46.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:10:46.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.673713
2025-11-03T18:10:46.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:10:46.258 [DEBUG] [Thread-120304] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:10:46.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:10:46.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:10:46.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:10:46.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:10:46.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:10:34', tmtdew=43.51, humidity=4.2, cloud=0.0, wind=38.46, temperature=24.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:10:08.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:10:46.333 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:10:46.346 [DEBUG] [Thread-120307] [transport.py] [_log()] starting thread (client mode): 0x11760af0
2025-11-03T18:10:46.346 [DEBUG] [Thread-120307] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:10:46.360 [DEBUG] [Thread-120307] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:10:46.360 [INFO] [Thread-120307] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:10:46.368 [DEBUG] [Thread-120307] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:10:46.368 [DEBUG] [Thread-120307] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:10:46.368 [DEBUG] [Thread-120307] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:10:46.368 [DEBUG] [Thread-120307] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:10:46.368 [DEBUG] [Thread-120307] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:10:46.368 [DEBUG] [Thread-120307] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:10:46.368 [DEBUG] [Thread-120307] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:10:46.368 [DEBUG] [Thread-120307] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:10:46.368 [DEBUG] [Thread-120307] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:10:46.368 [DEBUG] [Thread-120307] [transport.py] [_log()] client lang: <none>
2025-11-03T18:10:46.368 [DEBUG] [Thread-120307] [transport.py] [_log()] server lang: <none>
2025-11-03T18:10:46.368 [DEBUG] [Thread-120307] [transport.py] [_log()] kex follows: False
2025-11-03T18:10:46.368 [DEBUG] [Thread-120307] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:10:46.368 [DEBUG] [Thread-120307] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:10:46.368 [DEBUG] [Thread-120307] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:10:46.368 [DEBUG] [Thread-120307] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:10:46.368 [DEBUG] [Thread-120307] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:10:46.368 [DEBUG] [Thread-120307] [transport.py] [_log()] Compression: none
2025-11-03T18:10:46.368 [DEBUG] [Thread-120307] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:10:46.423 [DEBUG] [Thread-120307] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:10:46.423 [DEBUG] [Thread-120307] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:10:46.423 [DEBUG] [Thread-120307] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:10:46.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:10:46.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:10:46.480 [DEBUG] [Thread-120307] [transport.py] [_log()] userauth is OK
2025-11-03T18:10:46.480 [DEBUG] [Thread-120307] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:10:46.480 [DEBUG] [Thread-120307] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:10:46.480 [DEBUG] [Thread-120307] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:10:46.480 [DEBUG] [Thread-120307] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:10:46.494 [INFO] [Thread-120307] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:10:46.494 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:10:46.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:10:47.318 [DEBUG] [Thread-120307] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:10:47.319 [DEBUG] [Thread-120307] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:10:47.357 [DEBUG] [Thread-120307] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:10:47.357 [DEBUG] [Thread-120307] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:10:47.366 [DEBUG] [Thread-120307] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:10:47.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:10:47.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:10:47.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:10:47.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:10:47.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:10:47.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:10:47.405 [DEBUG] [Thread-120307] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:10:59.107 [DEBUG] [Thread-120309 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:11:14.196 [DEBUG] [Thread-120310 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:11:17.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:11:17.407 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:11:17.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:11:18.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 11, 7), 43.47, 4.22, 0.0, 38.04, 24.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:11:18.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:11:07
2025-11-03T18:11:18.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:11:18.490 [DEBUG] [Thread-120311] [transport.py] [_log()] starting thread (client mode): 0xed11990
2025-11-03T18:11:18.490 [DEBUG] [Thread-120311] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:11:18.512 [DEBUG] [Thread-120311] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:11:18.512 [INFO] [Thread-120311] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:11:18.523 [DEBUG] [Thread-120311] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:11:18.523 [DEBUG] [Thread-120311] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:11:18.524 [DEBUG] [Thread-120311] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:11:18.524 [DEBUG] [Thread-120311] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:11:18.524 [DEBUG] [Thread-120311] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:11:18.524 [DEBUG] [Thread-120311] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:11:18.524 [DEBUG] [Thread-120311] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:11:18.524 [DEBUG] [Thread-120311] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:11:18.524 [DEBUG] [Thread-120311] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:11:18.524 [DEBUG] [Thread-120311] [transport.py] [_log()] client lang: <none>
2025-11-03T18:11:18.524 [DEBUG] [Thread-120311] [transport.py] [_log()] server lang: <none>
2025-11-03T18:11:18.525 [DEBUG] [Thread-120311] [transport.py] [_log()] kex follows: False
2025-11-03T18:11:18.525 [DEBUG] [Thread-120311] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:11:18.525 [DEBUG] [Thread-120311] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:11:18.525 [DEBUG] [Thread-120311] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:11:18.525 [DEBUG] [Thread-120311] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:11:18.525 [DEBUG] [Thread-120311] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:11:18.525 [DEBUG] [Thread-120311] [transport.py] [_log()] Compression: none
2025-11-03T18:11:18.526 [DEBUG] [Thread-120311] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:11:18.538 [DEBUG] [Thread-120311] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:11:18.538 [DEBUG] [Thread-120311] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:11:18.539 [DEBUG] [Thread-120311] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:11:18.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:11:18.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:11:18.541 [DEBUG] [Thread-120311] [transport.py] [_log()] userauth is OK
2025-11-03T18:11:18.541 [DEBUG] [Thread-120311] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:11:18.541 [DEBUG] [Thread-120311] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:11:18.541 [DEBUG] [Thread-120311] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:11:18.541 [DEBUG] [Thread-120311] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:11:18.565 [INFO] [Thread-120311] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:11:18.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:11:19.383 [DEBUG] [Thread-120311] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:11:19.383 [DEBUG] [Thread-120311] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:11:19.383 [DEBUG] [Thread-120311] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:11:19.424 [DEBUG] [Thread-120311] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:11:19.424 [DEBUG] [Thread-120311] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:11:19.426 [DEBUG] [Thread-120311] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:11:19.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:11:19.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:11:19.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:11:19.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:11:19.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:11:19.453 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:11:19.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:11:19.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:11:19.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:11:19.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.674060 -999.00  +24.20  34.57      9  -10.20 1 1 2 1 1   887    0 32.96 -45.92 ----- 31.1 34.6 299.6 38.1 25.7 -33.0 25.9 -32.0 26.4 -32.0 26.6 -32.6
2025-11-03T18:11:19.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:11:19.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:11:19.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.674060
2025-11-03T18:11:19.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:11:19.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:11:19.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:11:19.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:11:19.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:11:19.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:11:07', tmtdew=43.47, humidity=4.22, cloud=0.0, wind=38.04, temperature=24.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:10:38.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:11:19.454 [DEBUG] [Thread-120311] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:11:19.526 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:11:19.537 [DEBUG] [Thread-120314] [transport.py] [_log()] starting thread (client mode): 0x11799840
2025-11-03T18:11:19.537 [DEBUG] [Thread-120314] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:11:19.556 [DEBUG] [Thread-120314] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:11:19.556 [INFO] [Thread-120314] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:11:19.564 [DEBUG] [Thread-120314] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:11:19.564 [DEBUG] [Thread-120314] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:11:19.564 [DEBUG] [Thread-120314] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:11:19.564 [DEBUG] [Thread-120314] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:11:19.564 [DEBUG] [Thread-120314] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:11:19.564 [DEBUG] [Thread-120314] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:11:19.564 [DEBUG] [Thread-120314] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:11:19.564 [DEBUG] [Thread-120314] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:11:19.564 [DEBUG] [Thread-120314] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:11:19.564 [DEBUG] [Thread-120314] [transport.py] [_log()] client lang: <none>
2025-11-03T18:11:19.564 [DEBUG] [Thread-120314] [transport.py] [_log()] server lang: <none>
2025-11-03T18:11:19.564 [DEBUG] [Thread-120314] [transport.py] [_log()] kex follows: False
2025-11-03T18:11:19.564 [DEBUG] [Thread-120314] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:11:19.564 [DEBUG] [Thread-120314] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:11:19.564 [DEBUG] [Thread-120314] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:11:19.564 [DEBUG] [Thread-120314] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:11:19.564 [DEBUG] [Thread-120314] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:11:19.564 [DEBUG] [Thread-120314] [transport.py] [_log()] Compression: none
2025-11-03T18:11:19.564 [DEBUG] [Thread-120314] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:11:19.619 [DEBUG] [Thread-120314] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:11:19.620 [DEBUG] [Thread-120314] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:11:19.620 [DEBUG] [Thread-120314] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:11:19.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:11:19.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:11:19.677 [DEBUG] [Thread-120314] [transport.py] [_log()] userauth is OK
2025-11-03T18:11:19.677 [DEBUG] [Thread-120314] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:11:19.677 [DEBUG] [Thread-120314] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:11:19.677 [DEBUG] [Thread-120314] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:11:19.677 [DEBUG] [Thread-120314] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:11:19.692 [INFO] [Thread-120314] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:11:19.692 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:11:19.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:11:20.507 [DEBUG] [Thread-120314] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:11:20.508 [DEBUG] [Thread-120314] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:11:20.556 [DEBUG] [Thread-120314] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:11:20.556 [DEBUG] [Thread-120314] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:11:20.565 [DEBUG] [Thread-120314] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:11:20.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:11:20.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:11:20.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:11:20.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:11:20.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:11:20.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:11:20.603 [DEBUG] [Thread-120314] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:11:29.237 [DEBUG] [Thread-120316 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:11:29.493 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:11:29.495 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:11:37.207 [DEBUG] [Thread-120317 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:11:44.289 [DEBUG] [Thread-120318 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:11:50.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:11:50.625 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:11:50.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:11:51.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 11, 39), 43.4, 4.23, 0.0, 34.72, 24.55, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:11:51.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:11:39
2025-11-03T18:11:51.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:11:51.617 [DEBUG] [Thread-120319] [transport.py] [_log()] starting thread (client mode): 0x1179b820
2025-11-03T18:11:51.617 [DEBUG] [Thread-120319] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:11:51.637 [DEBUG] [Thread-120319] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:11:51.637 [INFO] [Thread-120319] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:11:51.640 [DEBUG] [Thread-120319] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:11:51.640 [DEBUG] [Thread-120319] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:11:51.641 [DEBUG] [Thread-120319] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:11:51.641 [DEBUG] [Thread-120319] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:11:51.641 [DEBUG] [Thread-120319] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:11:51.641 [DEBUG] [Thread-120319] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:11:51.641 [DEBUG] [Thread-120319] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:11:51.641 [DEBUG] [Thread-120319] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:11:51.641 [DEBUG] [Thread-120319] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:11:51.641 [DEBUG] [Thread-120319] [transport.py] [_log()] client lang: <none>
2025-11-03T18:11:51.641 [DEBUG] [Thread-120319] [transport.py] [_log()] server lang: <none>
2025-11-03T18:11:51.641 [DEBUG] [Thread-120319] [transport.py] [_log()] kex follows: False
2025-11-03T18:11:51.641 [DEBUG] [Thread-120319] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:11:51.641 [DEBUG] [Thread-120319] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:11:51.642 [DEBUG] [Thread-120319] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:11:51.642 [DEBUG] [Thread-120319] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:11:51.642 [DEBUG] [Thread-120319] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:11:51.642 [DEBUG] [Thread-120319] [transport.py] [_log()] Compression: none
2025-11-03T18:11:51.642 [DEBUG] [Thread-120319] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:11:51.662 [DEBUG] [Thread-120319] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:11:51.662 [DEBUG] [Thread-120319] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:11:51.663 [DEBUG] [Thread-120319] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:11:51.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:11:51.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:11:51.666 [DEBUG] [Thread-120319] [transport.py] [_log()] userauth is OK
2025-11-03T18:11:51.666 [DEBUG] [Thread-120319] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:11:51.666 [DEBUG] [Thread-120319] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:11:51.666 [DEBUG] [Thread-120319] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:11:51.666 [DEBUG] [Thread-120319] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:11:51.694 [INFO] [Thread-120319] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:11:51.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:11:52.340 [DEBUG] [Thread-120319] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:11:52.340 [DEBUG] [Thread-120319] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:11:52.340 [DEBUG] [Thread-120319] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:11:52.381 [DEBUG] [Thread-120319] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:11:52.381 [DEBUG] [Thread-120319] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:11:52.383 [DEBUG] [Thread-120319] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:11:52.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:11:52.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:11:52.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:11:52.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:11:52.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:11:52.403 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:11:52.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:11:52.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:11:52.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:11:52.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.674407 -999.00  +24.30  34.91      9  -10.10 1 1 2 1 1   887    0 33.85 -49.73 ----- 37.1 34.9 303.6 40.8 25.6 -32.9 25.9 -32.0 26.3 -32.4 26.6 -32.9
2025-11-03T18:11:52.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:11:52.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:11:52.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.674407
2025-11-03T18:11:52.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:11:52.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:11:52.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:11:52.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:11:52.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:11:52.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:11:39', tmtdew=43.4, humidity=4.23, cloud=0.0, wind=34.72, temperature=24.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:11:08.765', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:11:52.404 [DEBUG] [Thread-120319] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:11:52.476 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:11:52.488 [DEBUG] [Thread-120322] [transport.py] [_log()] starting thread (client mode): 0x11798250
2025-11-03T18:11:52.488 [DEBUG] [Thread-120322] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:11:52.504 [DEBUG] [Thread-120322] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:11:52.504 [INFO] [Thread-120322] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:11:52.511 [DEBUG] [Thread-120322] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:11:52.511 [DEBUG] [Thread-120322] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:11:52.511 [DEBUG] [Thread-120322] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:11:52.511 [DEBUG] [Thread-120322] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:11:52.511 [DEBUG] [Thread-120322] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:11:52.511 [DEBUG] [Thread-120322] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:11:52.511 [DEBUG] [Thread-120322] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:11:52.511 [DEBUG] [Thread-120322] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:11:52.511 [DEBUG] [Thread-120322] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:11:52.511 [DEBUG] [Thread-120322] [transport.py] [_log()] client lang: <none>
2025-11-03T18:11:52.511 [DEBUG] [Thread-120322] [transport.py] [_log()] server lang: <none>
2025-11-03T18:11:52.511 [DEBUG] [Thread-120322] [transport.py] [_log()] kex follows: False
2025-11-03T18:11:52.511 [DEBUG] [Thread-120322] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:11:52.512 [DEBUG] [Thread-120322] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:11:52.512 [DEBUG] [Thread-120322] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:11:52.512 [DEBUG] [Thread-120322] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:11:52.512 [DEBUG] [Thread-120322] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:11:52.512 [DEBUG] [Thread-120322] [transport.py] [_log()] Compression: none
2025-11-03T18:11:52.512 [DEBUG] [Thread-120322] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:11:52.568 [DEBUG] [Thread-120322] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:11:52.568 [DEBUG] [Thread-120322] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:11:52.568 [DEBUG] [Thread-120322] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:11:52.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:11:52.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:11:52.626 [DEBUG] [Thread-120322] [transport.py] [_log()] userauth is OK
2025-11-03T18:11:52.626 [DEBUG] [Thread-120322] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:11:52.626 [DEBUG] [Thread-120322] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:11:52.626 [DEBUG] [Thread-120322] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:11:52.626 [DEBUG] [Thread-120322] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:11:52.640 [INFO] [Thread-120322] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:11:52.640 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:11:52.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:11:53.516 [DEBUG] [Thread-120322] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:11:53.517 [DEBUG] [Thread-120322] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:11:53.564 [DEBUG] [Thread-120322] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:11:53.564 [DEBUG] [Thread-120322] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:11:53.573 [DEBUG] [Thread-120322] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:11:53.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:11:53.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:11:53.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:11:53.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:11:53.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:11:53.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:11:53.610 [DEBUG] [Thread-120322] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:11:59.323 [DEBUG] [Thread-120324 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:12:14.380 [DEBUG] [Thread-120325 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:12:23.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:12:23.634 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:12:23.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:12:24.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 12, 13), 43.39, 4.23, 0.0, 35.94, 24.51, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:12:24.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:12:13
2025-11-03T18:12:24.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:12:24.591 [DEBUG] [Thread-120326] [transport.py] [_log()] starting thread (client mode): 0xed101f0
2025-11-03T18:12:24.592 [DEBUG] [Thread-120326] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:12:24.610 [DEBUG] [Thread-120326] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:12:24.611 [INFO] [Thread-120326] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:12:24.614 [DEBUG] [Thread-120326] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:12:24.614 [DEBUG] [Thread-120326] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:12:24.614 [DEBUG] [Thread-120326] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:12:24.614 [DEBUG] [Thread-120326] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:12:24.614 [DEBUG] [Thread-120326] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:12:24.614 [DEBUG] [Thread-120326] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:12:24.614 [DEBUG] [Thread-120326] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:12:24.615 [DEBUG] [Thread-120326] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:12:24.615 [DEBUG] [Thread-120326] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:12:24.615 [DEBUG] [Thread-120326] [transport.py] [_log()] client lang: <none>
2025-11-03T18:12:24.615 [DEBUG] [Thread-120326] [transport.py] [_log()] server lang: <none>
2025-11-03T18:12:24.615 [DEBUG] [Thread-120326] [transport.py] [_log()] kex follows: False
2025-11-03T18:12:24.615 [DEBUG] [Thread-120326] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:12:24.615 [DEBUG] [Thread-120326] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:12:24.615 [DEBUG] [Thread-120326] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:12:24.615 [DEBUG] [Thread-120326] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:12:24.615 [DEBUG] [Thread-120326] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:12:24.615 [DEBUG] [Thread-120326] [transport.py] [_log()] Compression: none
2025-11-03T18:12:24.615 [DEBUG] [Thread-120326] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:12:24.625 [DEBUG] [Thread-120326] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:12:24.626 [DEBUG] [Thread-120326] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:12:24.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:12:24.628 [DEBUG] [Thread-120326] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:12:24.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:12:24.630 [DEBUG] [Thread-120326] [transport.py] [_log()] userauth is OK
2025-11-03T18:12:24.630 [DEBUG] [Thread-120326] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:12:24.630 [DEBUG] [Thread-120326] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:12:24.631 [DEBUG] [Thread-120326] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:12:24.631 [DEBUG] [Thread-120326] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:12:24.656 [INFO] [Thread-120326] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:12:24.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:12:25.471 [DEBUG] [Thread-120326] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:12:25.471 [DEBUG] [Thread-120326] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:12:25.471 [DEBUG] [Thread-120326] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:12:25.512 [DEBUG] [Thread-120326] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:12:25.512 [DEBUG] [Thread-120326] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:12:25.515 [DEBUG] [Thread-120326] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:12:25.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:12:25.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:12:25.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:12:25.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:12:25.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:12:25.538 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:12:25.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:12:25.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:12:25.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:12:25.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.674871 -999.00  +24.30  25.13      9  -10.10 1 1 1 1 1   887    0 33.36 -46.08 ----- 27.6 25.1 296.6 36.1 25.6 -32.9 25.9 -32.1 26.4 -31.4 26.6 -32.3
2025-11-03T18:12:25.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:12:25.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:12:25.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.674871
2025-11-03T18:12:25.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:12:25.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:12:25.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:12:25.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:12:25.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:12:25.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:12:13', tmtdew=43.39, humidity=4.23, cloud=0.0, wind=35.94, temperature=24.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:11:48.854', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:12:25.539 [DEBUG] [Thread-120326] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:12:25.612 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:12:25.624 [DEBUG] [Thread-120329] [transport.py] [_log()] starting thread (client mode): 0x117e83d0
2025-11-03T18:12:25.624 [DEBUG] [Thread-120329] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:12:25.639 [DEBUG] [Thread-120329] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:12:25.639 [INFO] [Thread-120329] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:12:25.646 [DEBUG] [Thread-120329] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:12:25.646 [DEBUG] [Thread-120329] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:12:25.646 [DEBUG] [Thread-120329] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:12:25.646 [DEBUG] [Thread-120329] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:12:25.646 [DEBUG] [Thread-120329] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:12:25.646 [DEBUG] [Thread-120329] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:12:25.646 [DEBUG] [Thread-120329] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:12:25.646 [DEBUG] [Thread-120329] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:12:25.646 [DEBUG] [Thread-120329] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:12:25.646 [DEBUG] [Thread-120329] [transport.py] [_log()] client lang: <none>
2025-11-03T18:12:25.646 [DEBUG] [Thread-120329] [transport.py] [_log()] server lang: <none>
2025-11-03T18:12:25.646 [DEBUG] [Thread-120329] [transport.py] [_log()] kex follows: False
2025-11-03T18:12:25.646 [DEBUG] [Thread-120329] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:12:25.646 [DEBUG] [Thread-120329] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:12:25.646 [DEBUG] [Thread-120329] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:12:25.646 [DEBUG] [Thread-120329] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:12:25.646 [DEBUG] [Thread-120329] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:12:25.646 [DEBUG] [Thread-120329] [transport.py] [_log()] Compression: none
2025-11-03T18:12:25.647 [DEBUG] [Thread-120329] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:12:25.701 [DEBUG] [Thread-120329] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:12:25.701 [DEBUG] [Thread-120329] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:12:25.701 [DEBUG] [Thread-120329] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:12:25.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:12:25.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:12:25.759 [DEBUG] [Thread-120329] [transport.py] [_log()] userauth is OK
2025-11-03T18:12:25.759 [DEBUG] [Thread-120329] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:12:25.759 [DEBUG] [Thread-120329] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:12:25.759 [DEBUG] [Thread-120329] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:12:25.759 [DEBUG] [Thread-120329] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:12:25.773 [INFO] [Thread-120329] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:12:25.773 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:12:25.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:12:26.594 [DEBUG] [Thread-120329] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:12:26.594 [DEBUG] [Thread-120329] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:12:26.641 [DEBUG] [Thread-120329] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:12:26.641 [DEBUG] [Thread-120329] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:12:26.650 [DEBUG] [Thread-120329] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:12:26.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:12:26.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:12:26.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:12:26.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:12:26.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:12:26.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:12:26.682 [DEBUG] [Thread-120329] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:12:29.422 [DEBUG] [Thread-120331 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:12:29.635 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:12:29.636 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:12:37.267 [DEBUG] [Thread-120332 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:12:44.476 [DEBUG] [Thread-120333 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:12:56.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:12:56.704 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:12:56.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:12:57.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 12, 45), 43.39, 4.27, 0.0, 33.1, 24.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:12:57.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:12:45
2025-11-03T18:12:57.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:12:57.777 [DEBUG] [Thread-120334] [transport.py] [_log()] starting thread (client mode): 0x141da350
2025-11-03T18:12:57.777 [DEBUG] [Thread-120334] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:12:57.797 [DEBUG] [Thread-120334] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:12:57.797 [INFO] [Thread-120334] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:12:57.800 [DEBUG] [Thread-120334] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:12:57.801 [DEBUG] [Thread-120334] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:12:57.801 [DEBUG] [Thread-120334] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:12:57.801 [DEBUG] [Thread-120334] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:12:57.801 [DEBUG] [Thread-120334] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:12:57.801 [DEBUG] [Thread-120334] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:12:57.801 [DEBUG] [Thread-120334] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:12:57.801 [DEBUG] [Thread-120334] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:12:57.801 [DEBUG] [Thread-120334] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:12:57.801 [DEBUG] [Thread-120334] [transport.py] [_log()] client lang: <none>
2025-11-03T18:12:57.801 [DEBUG] [Thread-120334] [transport.py] [_log()] server lang: <none>
2025-11-03T18:12:57.801 [DEBUG] [Thread-120334] [transport.py] [_log()] kex follows: False
2025-11-03T18:12:57.801 [DEBUG] [Thread-120334] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:12:57.801 [DEBUG] [Thread-120334] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:12:57.801 [DEBUG] [Thread-120334] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:12:57.801 [DEBUG] [Thread-120334] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:12:57.801 [DEBUG] [Thread-120334] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:12:57.801 [DEBUG] [Thread-120334] [transport.py] [_log()] Compression: none
2025-11-03T18:12:57.801 [DEBUG] [Thread-120334] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:12:57.816 [DEBUG] [Thread-120334] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:12:57.817 [DEBUG] [Thread-120334] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:12:57.817 [DEBUG] [Thread-120334] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:12:57.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:12:57.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:12:57.818 [DEBUG] [Thread-120334] [transport.py] [_log()] userauth is OK
2025-11-03T18:12:57.818 [DEBUG] [Thread-120334] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:12:57.818 [DEBUG] [Thread-120334] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:12:57.818 [DEBUG] [Thread-120334] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:12:57.818 [DEBUG] [Thread-120334] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:12:57.836 [INFO] [Thread-120334] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:12:57.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:12:58.436 [DEBUG] [Thread-120334] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:12:58.436 [DEBUG] [Thread-120334] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:12:58.437 [DEBUG] [Thread-120334] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:12:58.477 [DEBUG] [Thread-120334] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:12:58.477 [DEBUG] [Thread-120334] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:12:58.479 [DEBUG] [Thread-120334] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:12:58.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:12:58.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:12:58.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:12:58.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:12:58.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:12:58.509 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:12:58.509 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:12:58.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:12:58.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:12:58.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.675102 -999.00  +24.30  29.77      9  -10.20 1 1 1 1 1   887    0 33.85 -44.49 ----- 28.6 29.8 306.0 41.7 25.6 -33.1 25.9 -32.1 26.3 -33.0 26.6 -32.8
2025-11-03T18:12:58.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:12:58.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:12:58.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.675102
2025-11-03T18:12:58.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:12:58.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:12:58.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:12:58.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:12:58.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:12:58.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:12:45', tmtdew=43.39, humidity=4.27, cloud=0.0, wind=33.1, temperature=24.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:12:08.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:12:58.510 [DEBUG] [Thread-120334] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:12:58.582 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:12:58.594 [DEBUG] [Thread-120337] [transport.py] [_log()] starting thread (client mode): 0x1174c670
2025-11-03T18:12:58.594 [DEBUG] [Thread-120337] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:12:58.609 [DEBUG] [Thread-120337] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:12:58.609 [INFO] [Thread-120337] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:12:58.617 [DEBUG] [Thread-120337] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:12:58.617 [DEBUG] [Thread-120337] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:12:58.617 [DEBUG] [Thread-120337] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:12:58.617 [DEBUG] [Thread-120337] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:12:58.617 [DEBUG] [Thread-120337] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:12:58.617 [DEBUG] [Thread-120337] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:12:58.617 [DEBUG] [Thread-120337] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:12:58.617 [DEBUG] [Thread-120337] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:12:58.617 [DEBUG] [Thread-120337] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:12:58.617 [DEBUG] [Thread-120337] [transport.py] [_log()] client lang: <none>
2025-11-03T18:12:58.617 [DEBUG] [Thread-120337] [transport.py] [_log()] server lang: <none>
2025-11-03T18:12:58.617 [DEBUG] [Thread-120337] [transport.py] [_log()] kex follows: False
2025-11-03T18:12:58.618 [DEBUG] [Thread-120337] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:12:58.618 [DEBUG] [Thread-120337] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:12:58.618 [DEBUG] [Thread-120337] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:12:58.618 [DEBUG] [Thread-120337] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:12:58.618 [DEBUG] [Thread-120337] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:12:58.618 [DEBUG] [Thread-120337] [transport.py] [_log()] Compression: none
2025-11-03T18:12:58.618 [DEBUG] [Thread-120337] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:12:58.676 [DEBUG] [Thread-120337] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:12:58.677 [DEBUG] [Thread-120337] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:12:58.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:12:58.678 [DEBUG] [Thread-120337] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:12:58.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:12:58.735 [DEBUG] [Thread-120337] [transport.py] [_log()] userauth is OK
2025-11-03T18:12:58.736 [DEBUG] [Thread-120337] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:12:58.736 [DEBUG] [Thread-120337] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:12:58.736 [DEBUG] [Thread-120337] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:12:58.736 [DEBUG] [Thread-120337] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:12:58.756 [INFO] [Thread-120337] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:12:58.756 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:12:58.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:12:59.518 [DEBUG] [Thread-120339 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:12:59.575 [DEBUG] [Thread-120337] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:12:59.575 [DEBUG] [Thread-120337] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:12:59.624 [DEBUG] [Thread-120337] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:12:59.625 [DEBUG] [Thread-120337] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:12:59.634 [DEBUG] [Thread-120337] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:12:59.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:12:59.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:12:59.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:12:59.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:12:59.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:12:59.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:12:59.672 [DEBUG] [Thread-120337] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:13:14.573 [DEBUG] [Thread-120340 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:13:29.613 [DEBUG] [Thread-120341 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:13:29.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:13:29.675 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:13:29.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:13:29.775 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:13:29.776 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:13:30.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 13, 18), 43.65, 4.17, 0.0, 36.47, 24.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:13:30.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:13:18
2025-11-03T18:13:30.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:13:30.776 [DEBUG] [Thread-120342] [transport.py] [_log()] starting thread (client mode): 0xed22590
2025-11-03T18:13:30.776 [DEBUG] [Thread-120342] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:13:30.796 [DEBUG] [Thread-120342] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:13:30.797 [INFO] [Thread-120342] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:13:30.800 [DEBUG] [Thread-120342] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:13:30.800 [DEBUG] [Thread-120342] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:13:30.800 [DEBUG] [Thread-120342] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:13:30.800 [DEBUG] [Thread-120342] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:13:30.800 [DEBUG] [Thread-120342] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:13:30.800 [DEBUG] [Thread-120342] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:13:30.800 [DEBUG] [Thread-120342] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:13:30.800 [DEBUG] [Thread-120342] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:13:30.800 [DEBUG] [Thread-120342] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:13:30.800 [DEBUG] [Thread-120342] [transport.py] [_log()] client lang: <none>
2025-11-03T18:13:30.800 [DEBUG] [Thread-120342] [transport.py] [_log()] server lang: <none>
2025-11-03T18:13:30.800 [DEBUG] [Thread-120342] [transport.py] [_log()] kex follows: False
2025-11-03T18:13:30.800 [DEBUG] [Thread-120342] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:13:30.800 [DEBUG] [Thread-120342] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:13:30.800 [DEBUG] [Thread-120342] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:13:30.800 [DEBUG] [Thread-120342] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:13:30.800 [DEBUG] [Thread-120342] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:13:30.800 [DEBUG] [Thread-120342] [transport.py] [_log()] Compression: none
2025-11-03T18:13:30.800 [DEBUG] [Thread-120342] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:13:30.815 [DEBUG] [Thread-120342] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:13:30.815 [DEBUG] [Thread-120342] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:13:30.815 [DEBUG] [Thread-120342] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:13:30.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:13:30.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:13:30.816 [DEBUG] [Thread-120342] [transport.py] [_log()] userauth is OK
2025-11-03T18:13:30.816 [DEBUG] [Thread-120342] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:13:30.816 [DEBUG] [Thread-120342] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:13:30.816 [DEBUG] [Thread-120342] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:13:30.816 [DEBUG] [Thread-120342] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:13:30.831 [INFO] [Thread-120342] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:13:30.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:13:31.629 [DEBUG] [Thread-120342] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:13:31.629 [DEBUG] [Thread-120342] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:13:31.629 [DEBUG] [Thread-120342] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:13:31.669 [DEBUG] [Thread-120342] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:13:31.669 [DEBUG] [Thread-120342] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:13:31.672 [DEBUG] [Thread-120342] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:13:31.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:13:31.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:13:31.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:13:31.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:13:31.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:13:31.690 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:13:31.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:13:31.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:13:31.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:13:31.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.675449 -999.00  +24.20  37.78      9  -10.30 1 1 2 1 1   887    0 33.95 -45.04 ----- 32.8 37.8 290.4 40.9 25.6 -33.3 25.8 -32.2 26.2 -32.0 26.4 -32.8
2025-11-03T18:13:31.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:13:31.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:13:31.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.675449
2025-11-03T18:13:31.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:13:31.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:13:31.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:13:31.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:13:31.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:13:31.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:13:18', tmtdew=43.65, humidity=4.17, cloud=0.0, wind=36.47, temperature=24.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:12:38.794', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:13:31.691 [DEBUG] [Thread-120342] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:13:31.768 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:13:31.780 [DEBUG] [Thread-120345] [transport.py] [_log()] starting thread (client mode): 0x117805e0
2025-11-03T18:13:31.780 [DEBUG] [Thread-120345] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:13:31.794 [DEBUG] [Thread-120345] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:13:31.794 [INFO] [Thread-120345] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:13:31.802 [DEBUG] [Thread-120345] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:13:31.802 [DEBUG] [Thread-120345] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:13:31.802 [DEBUG] [Thread-120345] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:13:31.802 [DEBUG] [Thread-120345] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:13:31.802 [DEBUG] [Thread-120345] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:13:31.802 [DEBUG] [Thread-120345] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:13:31.802 [DEBUG] [Thread-120345] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:13:31.802 [DEBUG] [Thread-120345] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:13:31.802 [DEBUG] [Thread-120345] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:13:31.802 [DEBUG] [Thread-120345] [transport.py] [_log()] client lang: <none>
2025-11-03T18:13:31.802 [DEBUG] [Thread-120345] [transport.py] [_log()] server lang: <none>
2025-11-03T18:13:31.802 [DEBUG] [Thread-120345] [transport.py] [_log()] kex follows: False
2025-11-03T18:13:31.802 [DEBUG] [Thread-120345] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:13:31.802 [DEBUG] [Thread-120345] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:13:31.802 [DEBUG] [Thread-120345] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:13:31.802 [DEBUG] [Thread-120345] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:13:31.802 [DEBUG] [Thread-120345] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:13:31.802 [DEBUG] [Thread-120345] [transport.py] [_log()] Compression: none
2025-11-03T18:13:31.802 [DEBUG] [Thread-120345] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:13:31.859 [DEBUG] [Thread-120345] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:13:31.859 [DEBUG] [Thread-120345] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:13:31.859 [DEBUG] [Thread-120345] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:13:31.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:13:31.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:13:31.916 [DEBUG] [Thread-120345] [transport.py] [_log()] userauth is OK
2025-11-03T18:13:31.916 [DEBUG] [Thread-120345] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:13:31.916 [DEBUG] [Thread-120345] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:13:31.916 [DEBUG] [Thread-120345] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:13:31.916 [DEBUG] [Thread-120345] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:13:31.929 [INFO] [Thread-120345] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:13:31.930 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:13:31.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:13:32.751 [DEBUG] [Thread-120345] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:13:32.751 [DEBUG] [Thread-120345] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:13:32.799 [DEBUG] [Thread-120345] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:13:32.799 [DEBUG] [Thread-120345] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:13:32.807 [DEBUG] [Thread-120345] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:13:32.815 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:13:32.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:13:32.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:13:32.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:13:32.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:13:32.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:13:32.838 [DEBUG] [Thread-120345] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:13:37.347 [DEBUG] [Thread-120347 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:13:44.647 [DEBUG] [Thread-120348 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:13:59.709 [DEBUG] [Thread-120349 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:14:02.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:14:02.861 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:14:02.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:14:03.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 13, 50), 43.53, 4.22, 0.0, 38.41, 24.35, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:14:03.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:13:50
2025-11-03T18:14:03.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:14:03.907 [DEBUG] [Thread-120350] [transport.py] [_log()] starting thread (client mode): 0x1174c490
2025-11-03T18:14:03.908 [DEBUG] [Thread-120350] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:14:03.928 [DEBUG] [Thread-120350] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:14:03.928 [INFO] [Thread-120350] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:14:03.938 [DEBUG] [Thread-120350] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:14:03.938 [DEBUG] [Thread-120350] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:14:03.938 [DEBUG] [Thread-120350] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:14:03.938 [DEBUG] [Thread-120350] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:14:03.939 [DEBUG] [Thread-120350] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:14:03.939 [DEBUG] [Thread-120350] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:14:03.939 [DEBUG] [Thread-120350] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:14:03.939 [DEBUG] [Thread-120350] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:14:03.939 [DEBUG] [Thread-120350] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:14:03.939 [DEBUG] [Thread-120350] [transport.py] [_log()] client lang: <none>
2025-11-03T18:14:03.939 [DEBUG] [Thread-120350] [transport.py] [_log()] server lang: <none>
2025-11-03T18:14:03.939 [DEBUG] [Thread-120350] [transport.py] [_log()] kex follows: False
2025-11-03T18:14:03.939 [DEBUG] [Thread-120350] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:14:03.940 [DEBUG] [Thread-120350] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:14:03.940 [DEBUG] [Thread-120350] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:14:03.940 [DEBUG] [Thread-120350] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:14:03.940 [DEBUG] [Thread-120350] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:14:03.940 [DEBUG] [Thread-120350] [transport.py] [_log()] Compression: none
2025-11-03T18:14:03.940 [DEBUG] [Thread-120350] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:14:03.960 [DEBUG] [Thread-120350] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:14:03.961 [DEBUG] [Thread-120350] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:14:03.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:14:03.963 [DEBUG] [Thread-120350] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:14:03.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:14:03.965 [DEBUG] [Thread-120350] [transport.py] [_log()] userauth is OK
2025-11-03T18:14:03.965 [DEBUG] [Thread-120350] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:14:03.965 [DEBUG] [Thread-120350] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:14:03.965 [DEBUG] [Thread-120350] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:14:03.966 [DEBUG] [Thread-120350] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:14:04.002 [INFO] [Thread-120350] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:14:04.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:14:04.652 [DEBUG] [Thread-120350] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:14:04.653 [DEBUG] [Thread-120350] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:14:04.653 [DEBUG] [Thread-120350] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:14:04.694 [DEBUG] [Thread-120350] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:14:04.694 [DEBUG] [Thread-120350] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:14:04.698 [DEBUG] [Thread-120350] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:14:04.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:14:04.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:14:04.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:14:04.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:14:04.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:14:04.725 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:14:04.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:14:04.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:14:04.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:14:04.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.675796 -999.00  +24.10  31.57      9  -10.30 1 1 2 1 1   887    0 33.64 -42.30 ----- 37.3 31.6 296.4 44.3 25.5 -32.8 25.7 -32.0 26.3 -32.1 26.4 -32.5
2025-11-03T18:14:04.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:14:04.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:14:04.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.675796
2025-11-03T18:14:04.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:14:04.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:14:04.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:14:04.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:14:04.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:14:04.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:13:50', tmtdew=43.53, humidity=4.22, cloud=0.0, wind=38.41, temperature=24.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:13:08.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:14:04.728 [DEBUG] [Thread-120350] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:14:04.811 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:14:04.822 [DEBUG] [Thread-120353] [transport.py] [_log()] starting thread (client mode): 0x1174d7b0
2025-11-03T18:14:04.822 [DEBUG] [Thread-120353] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:14:04.841 [DEBUG] [Thread-120353] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:14:04.841 [INFO] [Thread-120353] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:14:04.852 [DEBUG] [Thread-120353] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:14:04.852 [DEBUG] [Thread-120353] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:14:04.852 [DEBUG] [Thread-120353] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:14:04.852 [DEBUG] [Thread-120353] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:14:04.852 [DEBUG] [Thread-120353] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:14:04.853 [DEBUG] [Thread-120353] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:14:04.853 [DEBUG] [Thread-120353] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:14:04.853 [DEBUG] [Thread-120353] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:14:04.853 [DEBUG] [Thread-120353] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:14:04.853 [DEBUG] [Thread-120353] [transport.py] [_log()] client lang: <none>
2025-11-03T18:14:04.853 [DEBUG] [Thread-120353] [transport.py] [_log()] server lang: <none>
2025-11-03T18:14:04.853 [DEBUG] [Thread-120353] [transport.py] [_log()] kex follows: False
2025-11-03T18:14:04.853 [DEBUG] [Thread-120353] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:14:04.853 [DEBUG] [Thread-120353] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:14:04.853 [DEBUG] [Thread-120353] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:14:04.853 [DEBUG] [Thread-120353] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:14:04.853 [DEBUG] [Thread-120353] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:14:04.853 [DEBUG] [Thread-120353] [transport.py] [_log()] Compression: none
2025-11-03T18:14:04.854 [DEBUG] [Thread-120353] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:14:04.917 [DEBUG] [Thread-120353] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:14:04.918 [DEBUG] [Thread-120353] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:14:04.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:14:04.919 [DEBUG] [Thread-120353] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:14:04.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:14:04.973 [DEBUG] [Thread-120353] [transport.py] [_log()] userauth is OK
2025-11-03T18:14:04.974 [DEBUG] [Thread-120353] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:14:04.974 [DEBUG] [Thread-120353] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:14:04.974 [DEBUG] [Thread-120353] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:14:04.974 [DEBUG] [Thread-120353] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:14:04.994 [INFO] [Thread-120353] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:14:04.994 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:14:04.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:14:05.844 [DEBUG] [Thread-120353] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:14:05.844 [DEBUG] [Thread-120353] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:14:05.892 [DEBUG] [Thread-120353] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:14:05.892 [DEBUG] [Thread-120353] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:14:05.901 [DEBUG] [Thread-120353] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:14:05.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:14:05.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:14:05.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:14:05.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:14:05.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:14:05.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:14:05.947 [DEBUG] [Thread-120353] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:14:14.742 [DEBUG] [Thread-120355 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:14:29.785 [DEBUG] [Thread-120356 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:14:29.927 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:14:29.928 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:14:35.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:14:35.970 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:14:35.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:14:36.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 14, 22), 43.42, 4.25, 0.0, 34.58, 24.28, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:14:36.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:14:22
2025-11-03T18:14:36.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:14:37.002 [DEBUG] [Thread-120357] [transport.py] [_log()] starting thread (client mode): 0x1174e080
2025-11-03T18:14:37.002 [DEBUG] [Thread-120357] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:14:37.021 [DEBUG] [Thread-120357] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:14:37.022 [INFO] [Thread-120357] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:14:37.025 [DEBUG] [Thread-120357] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:14:37.025 [DEBUG] [Thread-120357] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:14:37.025 [DEBUG] [Thread-120357] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:14:37.025 [DEBUG] [Thread-120357] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:14:37.025 [DEBUG] [Thread-120357] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:14:37.025 [DEBUG] [Thread-120357] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:14:37.025 [DEBUG] [Thread-120357] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:14:37.025 [DEBUG] [Thread-120357] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:14:37.025 [DEBUG] [Thread-120357] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:14:37.025 [DEBUG] [Thread-120357] [transport.py] [_log()] client lang: <none>
2025-11-03T18:14:37.025 [DEBUG] [Thread-120357] [transport.py] [_log()] server lang: <none>
2025-11-03T18:14:37.025 [DEBUG] [Thread-120357] [transport.py] [_log()] kex follows: False
2025-11-03T18:14:37.025 [DEBUG] [Thread-120357] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:14:37.025 [DEBUG] [Thread-120357] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:14:37.025 [DEBUG] [Thread-120357] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:14:37.025 [DEBUG] [Thread-120357] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:14:37.025 [DEBUG] [Thread-120357] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:14:37.025 [DEBUG] [Thread-120357] [transport.py] [_log()] Compression: none
2025-11-03T18:14:37.025 [DEBUG] [Thread-120357] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:14:37.043 [DEBUG] [Thread-120357] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:14:37.044 [DEBUG] [Thread-120357] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:14:37.044 [DEBUG] [Thread-120357] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:14:37.045 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:14:37.045 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:14:37.047 [DEBUG] [Thread-120357] [transport.py] [_log()] userauth is OK
2025-11-03T18:14:37.047 [DEBUG] [Thread-120357] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:14:37.047 [DEBUG] [Thread-120357] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:14:37.047 [DEBUG] [Thread-120357] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:14:37.047 [DEBUG] [Thread-120357] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:14:37.064 [INFO] [Thread-120357] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:14:37.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:14:37.627 [DEBUG] [Thread-120359 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:14:37.832 [DEBUG] [Thread-120357] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:14:37.833 [DEBUG] [Thread-120357] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:14:37.833 [DEBUG] [Thread-120357] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:14:37.874 [DEBUG] [Thread-120357] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:14:37.874 [DEBUG] [Thread-120357] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:14:37.878 [DEBUG] [Thread-120357] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:14:37.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:14:37.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:14:37.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:14:37.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:14:37.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:14:37.901 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:14:37.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:14:37.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:14:37.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:14:37.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.676144 -999.00  +24.10  34.30      9  -10.30 1 1 2 1 1   887    0 33.99 -43.47 ----- 33.9 34.3 292.2 46.5 25.5 -32.8 25.7 -32.0 26.2 -31.9 26.4 -32.6
2025-11-03T18:14:37.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:14:37.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:14:37.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.676144
2025-11-03T18:14:37.909 [DEBUG] [Thread-120357] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:14:37.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:14:37.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:14:37.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:14:37.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:14:37.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:14:37.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:14:22', tmtdew=43.42, humidity=4.25, cloud=0.0, wind=34.58, temperature=24.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:13:38.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:14:37.993 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:14:38.005 [DEBUG] [Thread-120361] [transport.py] [_log()] starting thread (client mode): 0x1179a2f0
2025-11-03T18:14:38.005 [DEBUG] [Thread-120361] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:14:38.020 [DEBUG] [Thread-120361] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:14:38.020 [INFO] [Thread-120361] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:14:38.028 [DEBUG] [Thread-120361] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:14:38.028 [DEBUG] [Thread-120361] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:14:38.028 [DEBUG] [Thread-120361] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:14:38.028 [DEBUG] [Thread-120361] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:14:38.028 [DEBUG] [Thread-120361] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:14:38.028 [DEBUG] [Thread-120361] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:14:38.028 [DEBUG] [Thread-120361] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:14:38.028 [DEBUG] [Thread-120361] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:14:38.028 [DEBUG] [Thread-120361] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:14:38.028 [DEBUG] [Thread-120361] [transport.py] [_log()] client lang: <none>
2025-11-03T18:14:38.028 [DEBUG] [Thread-120361] [transport.py] [_log()] server lang: <none>
2025-11-03T18:14:38.028 [DEBUG] [Thread-120361] [transport.py] [_log()] kex follows: False
2025-11-03T18:14:38.029 [DEBUG] [Thread-120361] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:14:38.029 [DEBUG] [Thread-120361] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:14:38.029 [DEBUG] [Thread-120361] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:14:38.029 [DEBUG] [Thread-120361] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:14:38.029 [DEBUG] [Thread-120361] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:14:38.029 [DEBUG] [Thread-120361] [transport.py] [_log()] Compression: none
2025-11-03T18:14:38.029 [DEBUG] [Thread-120361] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:14:38.086 [DEBUG] [Thread-120361] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:14:38.086 [DEBUG] [Thread-120361] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:14:38.087 [DEBUG] [Thread-120361] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:14:38.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:14:38.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:14:38.142 [DEBUG] [Thread-120361] [transport.py] [_log()] userauth is OK
2025-11-03T18:14:38.142 [DEBUG] [Thread-120361] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:14:38.142 [DEBUG] [Thread-120361] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:14:38.142 [DEBUG] [Thread-120361] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:14:38.143 [DEBUG] [Thread-120361] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:14:38.167 [INFO] [Thread-120361] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:14:38.167 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:14:38.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:14:38.977 [DEBUG] [Thread-120361] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:14:38.977 [DEBUG] [Thread-120361] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:14:39.025 [DEBUG] [Thread-120361] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:14:39.025 [DEBUG] [Thread-120361] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:14:39.035 [DEBUG] [Thread-120361] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:14:39.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:14:39.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:14:39.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:14:39.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:14:39.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:14:39.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:14:39.072 [DEBUG] [Thread-120361] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:14:44.831 [DEBUG] [Thread-120363 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:14:59.872 [DEBUG] [Thread-120364 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:15:09.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:15:09.085 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:15:09.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:15:09.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 14, 55), 43.48, 4.23, 0.0, 35.84, 24.3, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:15:09.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:14:55
2025-11-03T18:15:10.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:15:10.174 [DEBUG] [Thread-120365] [transport.py] [_log()] starting thread (client mode): 0xed111b0
2025-11-03T18:15:10.174 [DEBUG] [Thread-120365] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:15:10.187 [DEBUG] [Thread-120365] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:15:10.187 [INFO] [Thread-120365] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:15:10.189 [DEBUG] [Thread-120365] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:15:10.189 [DEBUG] [Thread-120365] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:15:10.189 [DEBUG] [Thread-120365] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:15:10.189 [DEBUG] [Thread-120365] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:15:10.189 [DEBUG] [Thread-120365] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:15:10.189 [DEBUG] [Thread-120365] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:15:10.189 [DEBUG] [Thread-120365] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:15:10.189 [DEBUG] [Thread-120365] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:15:10.189 [DEBUG] [Thread-120365] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:15:10.189 [DEBUG] [Thread-120365] [transport.py] [_log()] client lang: <none>
2025-11-03T18:15:10.189 [DEBUG] [Thread-120365] [transport.py] [_log()] server lang: <none>
2025-11-03T18:15:10.189 [DEBUG] [Thread-120365] [transport.py] [_log()] kex follows: False
2025-11-03T18:15:10.189 [DEBUG] [Thread-120365] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:15:10.189 [DEBUG] [Thread-120365] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:15:10.189 [DEBUG] [Thread-120365] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:15:10.189 [DEBUG] [Thread-120365] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:15:10.189 [DEBUG] [Thread-120365] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:15:10.189 [DEBUG] [Thread-120365] [transport.py] [_log()] Compression: none
2025-11-03T18:15:10.189 [DEBUG] [Thread-120365] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:15:10.204 [DEBUG] [Thread-120365] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:15:10.204 [DEBUG] [Thread-120365] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:15:10.205 [DEBUG] [Thread-120365] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:15:10.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:15:10.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:15:10.206 [DEBUG] [Thread-120365] [transport.py] [_log()] userauth is OK
2025-11-03T18:15:10.207 [DEBUG] [Thread-120365] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:15:10.207 [DEBUG] [Thread-120365] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:15:10.207 [DEBUG] [Thread-120365] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:15:10.207 [DEBUG] [Thread-120365] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:15:10.225 [INFO] [Thread-120365] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:15:10.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:15:11.888 [DEBUG] [Thread-120365] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:15:11.888 [DEBUG] [Thread-120365] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:15:11.889 [DEBUG] [Thread-120365] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:15:11.929 [DEBUG] [Thread-120365] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:15:11.929 [DEBUG] [Thread-120365] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:15:11.933 [DEBUG] [Thread-120365] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:15:11.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:15:11.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:15:11.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:15:11.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:15:11.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:15:11.957 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:15:11.958 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:15:11.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:15:11.966 [DEBUG] [Thread-120365] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:15:11.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:15:11.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.676838 -999.00  +24.10  24.15      9  -10.30 1 1 1 1 1   887    0 32.49 -45.46 ----- 24.6 24.1 298.2 35.9 25.4 -32.6 25.6 -31.6 26.1 -31.3 26.3 -32.4
2025-11-03T18:15:11.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:15:11.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:15:11.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.676838
2025-11-03T18:15:11.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:15:11.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:15:11.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:15:11.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:15:11.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:15:11.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:14:55', tmtdew=43.48, humidity=4.23, cloud=0.0, wind=35.84, temperature=24.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:14:38.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:15:12.054 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:15:12.066 [DEBUG] [Thread-120368] [transport.py] [_log()] starting thread (client mode): 0x117803a0
2025-11-03T18:15:12.067 [DEBUG] [Thread-120368] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:15:12.081 [DEBUG] [Thread-120368] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:15:12.082 [INFO] [Thread-120368] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:15:12.089 [DEBUG] [Thread-120368] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:15:12.089 [DEBUG] [Thread-120368] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:15:12.089 [DEBUG] [Thread-120368] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:15:12.089 [DEBUG] [Thread-120368] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:15:12.089 [DEBUG] [Thread-120368] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:15:12.089 [DEBUG] [Thread-120368] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:15:12.089 [DEBUG] [Thread-120368] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:15:12.089 [DEBUG] [Thread-120368] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:15:12.089 [DEBUG] [Thread-120368] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:15:12.089 [DEBUG] [Thread-120368] [transport.py] [_log()] client lang: <none>
2025-11-03T18:15:12.090 [DEBUG] [Thread-120368] [transport.py] [_log()] server lang: <none>
2025-11-03T18:15:12.090 [DEBUG] [Thread-120368] [transport.py] [_log()] kex follows: False
2025-11-03T18:15:12.090 [DEBUG] [Thread-120368] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:15:12.090 [DEBUG] [Thread-120368] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:15:12.090 [DEBUG] [Thread-120368] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:15:12.090 [DEBUG] [Thread-120368] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:15:12.090 [DEBUG] [Thread-120368] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:15:12.090 [DEBUG] [Thread-120368] [transport.py] [_log()] Compression: none
2025-11-03T18:15:12.090 [DEBUG] [Thread-120368] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:15:12.146 [DEBUG] [Thread-120368] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:15:12.147 [DEBUG] [Thread-120368] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:15:12.147 [DEBUG] [Thread-120368] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:15:12.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:15:12.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:15:12.203 [DEBUG] [Thread-120368] [transport.py] [_log()] userauth is OK
2025-11-03T18:15:12.203 [DEBUG] [Thread-120368] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:15:12.203 [DEBUG] [Thread-120368] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:15:12.203 [DEBUG] [Thread-120368] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:15:12.204 [DEBUG] [Thread-120368] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:15:12.224 [INFO] [Thread-120368] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:15:12.224 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:15:12.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:15:13.055 [DEBUG] [Thread-120368] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:15:13.056 [DEBUG] [Thread-120368] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:15:13.104 [DEBUG] [Thread-120368] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:15:13.104 [DEBUG] [Thread-120368] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:15:13.114 [DEBUG] [Thread-120368] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:15:13.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:15:13.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:15:13.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:15:13.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:15:13.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:15:13.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:15:13.150 [DEBUG] [Thread-120368] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:15:14.909 [DEBUG] [Thread-120370 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:15:29.960 [DEBUG] [Thread-120371 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:15:30.069 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:15:30.070 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:15:37.710 [DEBUG] [Thread-120372 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:15:43.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:15:43.173 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:15:43.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:15:43.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 15, 27), 43.51, 4.22, 0.0, 34.94, 24.25, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:15:43.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:15:27
2025-11-03T18:15:44.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:15:44.163 [DEBUG] [Thread-120373] [transport.py] [_log()] starting thread (client mode): 0xed2d7e0
2025-11-03T18:15:44.163 [DEBUG] [Thread-120373] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:15:44.184 [DEBUG] [Thread-120373] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:15:44.184 [INFO] [Thread-120373] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:15:44.187 [DEBUG] [Thread-120373] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:15:44.187 [DEBUG] [Thread-120373] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:15:44.187 [DEBUG] [Thread-120373] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:15:44.187 [DEBUG] [Thread-120373] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:15:44.187 [DEBUG] [Thread-120373] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:15:44.187 [DEBUG] [Thread-120373] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:15:44.187 [DEBUG] [Thread-120373] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:15:44.187 [DEBUG] [Thread-120373] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:15:44.187 [DEBUG] [Thread-120373] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:15:44.187 [DEBUG] [Thread-120373] [transport.py] [_log()] client lang: <none>
2025-11-03T18:15:44.187 [DEBUG] [Thread-120373] [transport.py] [_log()] server lang: <none>
2025-11-03T18:15:44.187 [DEBUG] [Thread-120373] [transport.py] [_log()] kex follows: False
2025-11-03T18:15:44.187 [DEBUG] [Thread-120373] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:15:44.188 [DEBUG] [Thread-120373] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:15:44.188 [DEBUG] [Thread-120373] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:15:44.188 [DEBUG] [Thread-120373] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:15:44.188 [DEBUG] [Thread-120373] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:15:44.188 [DEBUG] [Thread-120373] [transport.py] [_log()] Compression: none
2025-11-03T18:15:44.188 [DEBUG] [Thread-120373] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:15:44.204 [DEBUG] [Thread-120373] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:15:44.205 [DEBUG] [Thread-120373] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:15:44.205 [DEBUG] [Thread-120373] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:15:44.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:15:44.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:15:44.208 [DEBUG] [Thread-120373] [transport.py] [_log()] userauth is OK
2025-11-03T18:15:44.208 [DEBUG] [Thread-120373] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:15:44.208 [DEBUG] [Thread-120373] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:15:44.208 [DEBUG] [Thread-120373] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:15:44.208 [DEBUG] [Thread-120373] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:15:44.243 [INFO] [Thread-120373] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:15:44.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:15:44.889 [DEBUG] [Thread-120373] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:15:44.889 [DEBUG] [Thread-120373] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:15:44.889 [DEBUG] [Thread-120373] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:15:44.930 [DEBUG] [Thread-120373] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:15:44.930 [DEBUG] [Thread-120373] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:15:44.933 [DEBUG] [Thread-120373] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:15:44.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:15:44.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:15:44.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:15:44.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:15:44.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:15:44.952 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:15:44.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:15:44.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:15:44.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:15:44.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.677185 -999.00  +24.20  31.23      9  -10.30 1 1 2 1 1   887    0 33.71 -43.25 ----- 28.5 31.2 294.8 35.9 25.4 -32.6 25.6 -31.7 26.1 -31.5 26.3 -32.5
2025-11-03T18:15:44.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:15:44.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:15:44.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.677185
2025-11-03T18:15:44.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:15:44.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:15:44.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:15:44.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:15:44.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:15:44.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:15:27', tmtdew=43.51, humidity=4.22, cloud=0.0, wind=34.94, temperature=24.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:15:08.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:15:44.953 [DEBUG] [Thread-120373] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:15:44.988 [DEBUG] [Thread-120376 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:15:45.026 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:15:45.040 [DEBUG] [Thread-120377] [transport.py] [_log()] starting thread (client mode): 0xed2c6d0
2025-11-03T18:15:45.040 [DEBUG] [Thread-120377] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:15:45.055 [DEBUG] [Thread-120377] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:15:45.055 [INFO] [Thread-120377] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:15:45.062 [DEBUG] [Thread-120377] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:15:45.062 [DEBUG] [Thread-120377] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:15:45.062 [DEBUG] [Thread-120377] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:15:45.062 [DEBUG] [Thread-120377] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:15:45.062 [DEBUG] [Thread-120377] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:15:45.062 [DEBUG] [Thread-120377] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:15:45.062 [DEBUG] [Thread-120377] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:15:45.062 [DEBUG] [Thread-120377] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:15:45.062 [DEBUG] [Thread-120377] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:15:45.062 [DEBUG] [Thread-120377] [transport.py] [_log()] client lang: <none>
2025-11-03T18:15:45.062 [DEBUG] [Thread-120377] [transport.py] [_log()] server lang: <none>
2025-11-03T18:15:45.063 [DEBUG] [Thread-120377] [transport.py] [_log()] kex follows: False
2025-11-03T18:15:45.063 [DEBUG] [Thread-120377] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:15:45.063 [DEBUG] [Thread-120377] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:15:45.063 [DEBUG] [Thread-120377] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:15:45.063 [DEBUG] [Thread-120377] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:15:45.063 [DEBUG] [Thread-120377] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:15:45.063 [DEBUG] [Thread-120377] [transport.py] [_log()] Compression: none
2025-11-03T18:15:45.063 [DEBUG] [Thread-120377] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:15:45.117 [DEBUG] [Thread-120377] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:15:45.117 [DEBUG] [Thread-120377] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:15:45.118 [DEBUG] [Thread-120377] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:15:45.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:15:45.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:15:45.175 [DEBUG] [Thread-120377] [transport.py] [_log()] userauth is OK
2025-11-03T18:15:45.175 [DEBUG] [Thread-120377] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:15:45.175 [DEBUG] [Thread-120377] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:15:45.175 [DEBUG] [Thread-120377] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:15:45.176 [DEBUG] [Thread-120377] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:15:45.195 [INFO] [Thread-120377] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:15:45.195 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:15:45.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:15:46.006 [DEBUG] [Thread-120377] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:15:46.006 [DEBUG] [Thread-120377] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:15:46.054 [DEBUG] [Thread-120377] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:15:46.054 [DEBUG] [Thread-120377] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:15:46.063 [DEBUG] [Thread-120377] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:15:46.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:15:46.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:15:46.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:15:46.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:15:46.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:15:46.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:15:46.101 [DEBUG] [Thread-120377] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:16:00.031 [DEBUG] [Thread-120379 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:16:15.074 [DEBUG] [Thread-120380 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:16:16.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:16:16.133 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:16:16.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:16:16.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 15, 59), 43.52, 4.23, 0.0, 35.31, 24.31, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:16:16.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:15:59
2025-11-03T18:16:16.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:16:17.064 [DEBUG] [Thread-120381] [transport.py] [_log()] starting thread (client mode): 0x1174e020
2025-11-03T18:16:17.064 [DEBUG] [Thread-120381] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:16:17.082 [DEBUG] [Thread-120381] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:16:17.082 [INFO] [Thread-120381] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:16:17.083 [DEBUG] [Thread-120381] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:16:17.083 [DEBUG] [Thread-120381] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:16:17.083 [DEBUG] [Thread-120381] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:16:17.083 [DEBUG] [Thread-120381] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:16:17.083 [DEBUG] [Thread-120381] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:16:17.083 [DEBUG] [Thread-120381] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:16:17.083 [DEBUG] [Thread-120381] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:16:17.083 [DEBUG] [Thread-120381] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:16:17.083 [DEBUG] [Thread-120381] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:16:17.083 [DEBUG] [Thread-120381] [transport.py] [_log()] client lang: <none>
2025-11-03T18:16:17.083 [DEBUG] [Thread-120381] [transport.py] [_log()] server lang: <none>
2025-11-03T18:16:17.084 [DEBUG] [Thread-120381] [transport.py] [_log()] kex follows: False
2025-11-03T18:16:17.084 [DEBUG] [Thread-120381] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:16:17.084 [DEBUG] [Thread-120381] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:16:17.084 [DEBUG] [Thread-120381] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:16:17.084 [DEBUG] [Thread-120381] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:16:17.084 [DEBUG] [Thread-120381] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:16:17.084 [DEBUG] [Thread-120381] [transport.py] [_log()] Compression: none
2025-11-03T18:16:17.084 [DEBUG] [Thread-120381] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:16:17.093 [DEBUG] [Thread-120381] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:16:17.094 [DEBUG] [Thread-120381] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:16:17.094 [DEBUG] [Thread-120381] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:16:17.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:16:17.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:16:17.096 [DEBUG] [Thread-120381] [transport.py] [_log()] userauth is OK
2025-11-03T18:16:17.096 [DEBUG] [Thread-120381] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:16:17.096 [DEBUG] [Thread-120381] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:16:17.096 [DEBUG] [Thread-120381] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:16:17.096 [DEBUG] [Thread-120381] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:16:17.108 [INFO] [Thread-120381] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:16:17.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:16:17.752 [DEBUG] [Thread-120381] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:16:17.753 [DEBUG] [Thread-120381] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:16:17.753 [DEBUG] [Thread-120381] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:16:17.794 [DEBUG] [Thread-120381] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:16:17.794 [DEBUG] [Thread-120381] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:16:17.797 [DEBUG] [Thread-120381] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:16:17.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:16:17.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:16:17.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:16:17.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:16:17.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:16:17.821 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:16:17.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:16:17.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:16:17.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:16:17.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.677532 -999.00  +24.30  31.53      9  -10.20 1 1 2 1 1   887    0 33.28 -43.08 ----- 33.2 31.5 296.6 35.4 25.4 -32.7 25.7 -31.6 26.1 -31.3 26.3 -32.3
2025-11-03T18:16:17.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:16:17.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:16:17.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.677532
2025-11-03T18:16:17.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:16:17.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:16:17.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:16:17.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:16:17.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:16:17.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:15:59', tmtdew=43.52, humidity=4.23, cloud=0.0, wind=35.31, temperature=24.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:15:38.765', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:16:17.828 [DEBUG] [Thread-120381] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:16:17.910 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:16:17.922 [DEBUG] [Thread-120384] [transport.py] [_log()] starting thread (client mode): 0xed2c640
2025-11-03T18:16:17.922 [DEBUG] [Thread-120384] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:16:17.938 [DEBUG] [Thread-120384] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:16:17.939 [INFO] [Thread-120384] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:16:17.946 [DEBUG] [Thread-120384] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:16:17.946 [DEBUG] [Thread-120384] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:16:17.947 [DEBUG] [Thread-120384] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:16:17.947 [DEBUG] [Thread-120384] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:16:17.947 [DEBUG] [Thread-120384] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:16:17.947 [DEBUG] [Thread-120384] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:16:17.947 [DEBUG] [Thread-120384] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:16:17.947 [DEBUG] [Thread-120384] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:16:17.947 [DEBUG] [Thread-120384] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:16:17.947 [DEBUG] [Thread-120384] [transport.py] [_log()] client lang: <none>
2025-11-03T18:16:17.947 [DEBUG] [Thread-120384] [transport.py] [_log()] server lang: <none>
2025-11-03T18:16:17.947 [DEBUG] [Thread-120384] [transport.py] [_log()] kex follows: False
2025-11-03T18:16:17.948 [DEBUG] [Thread-120384] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:16:17.948 [DEBUG] [Thread-120384] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:16:17.948 [DEBUG] [Thread-120384] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:16:17.948 [DEBUG] [Thread-120384] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:16:17.948 [DEBUG] [Thread-120384] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:16:17.948 [DEBUG] [Thread-120384] [transport.py] [_log()] Compression: none
2025-11-03T18:16:17.948 [DEBUG] [Thread-120384] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:16:18.003 [DEBUG] [Thread-120384] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:16:18.004 [DEBUG] [Thread-120384] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:16:18.004 [DEBUG] [Thread-120384] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:16:18.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:16:18.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:16:18.059 [DEBUG] [Thread-120384] [transport.py] [_log()] userauth is OK
2025-11-03T18:16:18.060 [DEBUG] [Thread-120384] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:16:18.060 [DEBUG] [Thread-120384] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:16:18.060 [DEBUG] [Thread-120384] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:16:18.060 [DEBUG] [Thread-120384] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:16:18.080 [INFO] [Thread-120384] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:16:18.080 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:16:18.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:16:18.907 [DEBUG] [Thread-120384] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:16:18.907 [DEBUG] [Thread-120384] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:16:18.954 [DEBUG] [Thread-120384] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:16:18.954 [DEBUG] [Thread-120384] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:16:18.963 [DEBUG] [Thread-120384] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:16:18.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:16:18.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:16:18.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:16:18.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:16:18.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:16:18.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:16:18.997 [DEBUG] [Thread-120384] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:16:30.111 [DEBUG] [Thread-120386 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:16:30.211 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:16:30.212 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:16:38.050 [DEBUG] [Thread-120387 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:16:45.219 [DEBUG] [Thread-120388 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:16:49.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:16:49.018 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:16:49.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:16:49.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 16, 32), 43.59, 4.22, 0.0, 32.33, 24.4, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:16:49.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:16:32
2025-11-03T18:16:49.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:16:50.087 [DEBUG] [Thread-120389] [transport.py] [_log()] starting thread (client mode): 0xeda3d00
2025-11-03T18:16:50.087 [DEBUG] [Thread-120389] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:16:50.107 [DEBUG] [Thread-120389] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:16:50.107 [INFO] [Thread-120389] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:16:50.110 [DEBUG] [Thread-120389] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:16:50.110 [DEBUG] [Thread-120389] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:16:50.110 [DEBUG] [Thread-120389] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:16:50.110 [DEBUG] [Thread-120389] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:16:50.110 [DEBUG] [Thread-120389] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:16:50.110 [DEBUG] [Thread-120389] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:16:50.110 [DEBUG] [Thread-120389] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:16:50.110 [DEBUG] [Thread-120389] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:16:50.110 [DEBUG] [Thread-120389] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:16:50.110 [DEBUG] [Thread-120389] [transport.py] [_log()] client lang: <none>
2025-11-03T18:16:50.110 [DEBUG] [Thread-120389] [transport.py] [_log()] server lang: <none>
2025-11-03T18:16:50.110 [DEBUG] [Thread-120389] [transport.py] [_log()] kex follows: False
2025-11-03T18:16:50.110 [DEBUG] [Thread-120389] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:16:50.110 [DEBUG] [Thread-120389] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:16:50.110 [DEBUG] [Thread-120389] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:16:50.110 [DEBUG] [Thread-120389] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:16:50.110 [DEBUG] [Thread-120389] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:16:50.110 [DEBUG] [Thread-120389] [transport.py] [_log()] Compression: none
2025-11-03T18:16:50.110 [DEBUG] [Thread-120389] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:16:50.125 [DEBUG] [Thread-120389] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:16:50.125 [DEBUG] [Thread-120389] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:16:50.125 [DEBUG] [Thread-120389] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:16:50.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:16:50.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:16:50.126 [DEBUG] [Thread-120389] [transport.py] [_log()] userauth is OK
2025-11-03T18:16:50.126 [DEBUG] [Thread-120389] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:16:50.126 [DEBUG] [Thread-120389] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:16:50.126 [DEBUG] [Thread-120389] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:16:50.126 [DEBUG] [Thread-120389] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:16:50.143 [INFO] [Thread-120389] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:16:50.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:16:50.728 [DEBUG] [Thread-120389] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:16:50.728 [DEBUG] [Thread-120389] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:16:50.728 [DEBUG] [Thread-120389] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:16:50.770 [DEBUG] [Thread-120389] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:16:50.770 [DEBUG] [Thread-120389] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:16:50.772 [DEBUG] [Thread-120389] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:16:50.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:16:50.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:16:50.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:16:50.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:16:50.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:16:50.791 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:16:50.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:16:50.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:16:50.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:16:50.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.677880 -999.00  +24.20  33.85      9  -10.30 1 1 2 1 1   887    0 33.07 -43.45 ----- 31.0 33.9 296.4 39.4 25.4 -32.9 25.6 -31.9 26.0 -32.4 26.2 -32.8
2025-11-03T18:16:50.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:16:50.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:16:50.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.677880
2025-11-03T18:16:50.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:16:50.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:16:50.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:16:50.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:16:50.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:16:50.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:16:32', tmtdew=43.59, humidity=4.22, cloud=0.0, wind=32.33, temperature=24.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:16:08.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:16:50.792 [DEBUG] [Thread-120389] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:16:50.867 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:16:50.880 [DEBUG] [Thread-120392] [transport.py] [_log()] starting thread (client mode): 0xeda0130
2025-11-03T18:16:50.880 [DEBUG] [Thread-120392] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:16:50.894 [DEBUG] [Thread-120392] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:16:50.894 [INFO] [Thread-120392] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:16:50.902 [DEBUG] [Thread-120392] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:16:50.902 [DEBUG] [Thread-120392] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:16:50.902 [DEBUG] [Thread-120392] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:16:50.902 [DEBUG] [Thread-120392] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:16:50.902 [DEBUG] [Thread-120392] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:16:50.902 [DEBUG] [Thread-120392] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:16:50.902 [DEBUG] [Thread-120392] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:16:50.902 [DEBUG] [Thread-120392] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:16:50.902 [DEBUG] [Thread-120392] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:16:50.902 [DEBUG] [Thread-120392] [transport.py] [_log()] client lang: <none>
2025-11-03T18:16:50.902 [DEBUG] [Thread-120392] [transport.py] [_log()] server lang: <none>
2025-11-03T18:16:50.902 [DEBUG] [Thread-120392] [transport.py] [_log()] kex follows: False
2025-11-03T18:16:50.902 [DEBUG] [Thread-120392] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:16:50.902 [DEBUG] [Thread-120392] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:16:50.902 [DEBUG] [Thread-120392] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:16:50.902 [DEBUG] [Thread-120392] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:16:50.902 [DEBUG] [Thread-120392] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:16:50.902 [DEBUG] [Thread-120392] [transport.py] [_log()] Compression: none
2025-11-03T18:16:50.902 [DEBUG] [Thread-120392] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:16:50.963 [DEBUG] [Thread-120392] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:16:50.963 [DEBUG] [Thread-120392] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:16:50.963 [DEBUG] [Thread-120392] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:16:50.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:16:50.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:16:51.020 [DEBUG] [Thread-120392] [transport.py] [_log()] userauth is OK
2025-11-03T18:16:51.020 [DEBUG] [Thread-120392] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:16:51.020 [DEBUG] [Thread-120392] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:16:51.020 [DEBUG] [Thread-120392] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:16:51.020 [DEBUG] [Thread-120392] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:16:51.034 [INFO] [Thread-120392] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:16:51.034 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:16:51.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:16:51.858 [DEBUG] [Thread-120392] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:16:51.858 [DEBUG] [Thread-120392] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:16:51.906 [DEBUG] [Thread-120392] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:16:51.906 [DEBUG] [Thread-120392] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:16:51.916 [DEBUG] [Thread-120392] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:16:51.925 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:16:51.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:16:51.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:16:51.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:16:51.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:16:51.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:16:51.961 [DEBUG] [Thread-120392] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:17:00.254 [DEBUG] [Thread-120394 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:17:15.318 [DEBUG] [Thread-120395 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:17:21.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:17:21.984 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:17:21.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:17:22.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 17, 4), 43.69, 4.18, 0.0, 35.01, 24.45, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:17:22.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:17:04
2025-11-03T18:17:22.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:17:23.047 [DEBUG] [Thread-120396] [transport.py] [_log()] starting thread (client mode): 0x1174f610
2025-11-03T18:17:23.047 [DEBUG] [Thread-120396] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:17:23.058 [DEBUG] [Thread-120396] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:17:23.058 [INFO] [Thread-120396] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:17:23.061 [DEBUG] [Thread-120396] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:17:23.061 [DEBUG] [Thread-120396] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:17:23.062 [DEBUG] [Thread-120396] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:17:23.062 [DEBUG] [Thread-120396] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:17:23.062 [DEBUG] [Thread-120396] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:17:23.062 [DEBUG] [Thread-120396] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:17:23.062 [DEBUG] [Thread-120396] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:17:23.062 [DEBUG] [Thread-120396] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:17:23.062 [DEBUG] [Thread-120396] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:17:23.062 [DEBUG] [Thread-120396] [transport.py] [_log()] client lang: <none>
2025-11-03T18:17:23.062 [DEBUG] [Thread-120396] [transport.py] [_log()] server lang: <none>
2025-11-03T18:17:23.062 [DEBUG] [Thread-120396] [transport.py] [_log()] kex follows: False
2025-11-03T18:17:23.062 [DEBUG] [Thread-120396] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:17:23.062 [DEBUG] [Thread-120396] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:17:23.063 [DEBUG] [Thread-120396] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:17:23.063 [DEBUG] [Thread-120396] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:17:23.063 [DEBUG] [Thread-120396] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:17:23.063 [DEBUG] [Thread-120396] [transport.py] [_log()] Compression: none
2025-11-03T18:17:23.063 [DEBUG] [Thread-120396] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:17:23.084 [DEBUG] [Thread-120396] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:17:23.084 [DEBUG] [Thread-120396] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:17:23.085 [DEBUG] [Thread-120396] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:17:23.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:17:23.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:17:23.128 [DEBUG] [Thread-120396] [transport.py] [_log()] userauth is OK
2025-11-03T18:17:23.129 [DEBUG] [Thread-120396] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:17:23.129 [DEBUG] [Thread-120396] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:17:23.129 [DEBUG] [Thread-120396] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:17:23.129 [DEBUG] [Thread-120396] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:17:23.155 [INFO] [Thread-120396] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:17:23.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:17:23.791 [DEBUG] [Thread-120396] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:17:23.791 [DEBUG] [Thread-120396] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:17:23.792 [DEBUG] [Thread-120396] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:17:23.832 [DEBUG] [Thread-120396] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:17:23.832 [DEBUG] [Thread-120396] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:17:23.835 [DEBUG] [Thread-120396] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:17:23.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:17:23.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:17:23.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:17:23.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:17:23.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:17:23.849 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:17:23.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:17:23.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:17:23.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:17:23.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.678227 -999.00  +24.10  31.28      9  -10.40 1 1 2 1 1   887    0 32.82 -41.71 ----- 35.7 31.3 293.0 33.6 25.4 -32.8 25.6 -31.9 26.0 -32.1 26.2 -32.5
2025-11-03T18:17:23.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:17:23.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:17:23.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.678227
2025-11-03T18:17:23.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:17:23.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:17:23.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:17:23.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:17:23.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:17:23.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:17:04', tmtdew=43.69, humidity=4.18, cloud=0.0, wind=35.01, temperature=24.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:16:38.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:17:23.850 [DEBUG] [Thread-120396] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:17:23.926 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:17:23.937 [DEBUG] [Thread-120399] [transport.py] [_log()] starting thread (client mode): 0xed13e80
2025-11-03T18:17:23.937 [DEBUG] [Thread-120399] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:17:23.952 [DEBUG] [Thread-120399] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:17:23.953 [INFO] [Thread-120399] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:17:23.960 [DEBUG] [Thread-120399] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:17:23.960 [DEBUG] [Thread-120399] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:17:23.960 [DEBUG] [Thread-120399] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:17:23.960 [DEBUG] [Thread-120399] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:17:23.960 [DEBUG] [Thread-120399] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:17:23.960 [DEBUG] [Thread-120399] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:17:23.960 [DEBUG] [Thread-120399] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:17:23.960 [DEBUG] [Thread-120399] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:17:23.960 [DEBUG] [Thread-120399] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:17:23.960 [DEBUG] [Thread-120399] [transport.py] [_log()] client lang: <none>
2025-11-03T18:17:23.960 [DEBUG] [Thread-120399] [transport.py] [_log()] server lang: <none>
2025-11-03T18:17:23.960 [DEBUG] [Thread-120399] [transport.py] [_log()] kex follows: False
2025-11-03T18:17:23.960 [DEBUG] [Thread-120399] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:17:23.960 [DEBUG] [Thread-120399] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:17:23.961 [DEBUG] [Thread-120399] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:17:23.961 [DEBUG] [Thread-120399] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:17:23.961 [DEBUG] [Thread-120399] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:17:23.961 [DEBUG] [Thread-120399] [transport.py] [_log()] Compression: none
2025-11-03T18:17:23.961 [DEBUG] [Thread-120399] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:17:24.015 [DEBUG] [Thread-120399] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:17:24.015 [DEBUG] [Thread-120399] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:17:24.015 [DEBUG] [Thread-120399] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:17:24.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:17:24.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:17:24.072 [DEBUG] [Thread-120399] [transport.py] [_log()] userauth is OK
2025-11-03T18:17:24.073 [DEBUG] [Thread-120399] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:17:24.073 [DEBUG] [Thread-120399] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:17:24.073 [DEBUG] [Thread-120399] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:17:24.073 [DEBUG] [Thread-120399] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:17:24.090 [INFO] [Thread-120399] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:17:24.090 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:17:24.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:17:24.943 [DEBUG] [Thread-120399] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:17:24.944 [DEBUG] [Thread-120399] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:17:24.991 [DEBUG] [Thread-120399] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:17:24.991 [DEBUG] [Thread-120399] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:17:25.000 [DEBUG] [Thread-120399] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:17:25.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:17:25.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:17:25.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:17:25.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:17:25.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:17:25.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:17:25.034 [DEBUG] [Thread-120399] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:17:30.351 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:17:30.353 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:17:30.354 [DEBUG] [Thread-120401 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:17:38.107 [DEBUG] [Thread-120402 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:17:45.397 [DEBUG] [Thread-120403 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:17:55.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:17:55.055 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:17:55.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:17:55.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 17, 36), 43.66, 4.18, 0.0, 27.15, 24.46, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:17:55.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:17:36
2025-11-03T18:17:55.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:17:56.098 [DEBUG] [Thread-120404] [transport.py] [_log()] starting thread (client mode): 0x1174eb60
2025-11-03T18:17:56.098 [DEBUG] [Thread-120404] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:17:56.119 [DEBUG] [Thread-120404] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:17:56.119 [INFO] [Thread-120404] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:17:56.122 [DEBUG] [Thread-120404] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:17:56.123 [DEBUG] [Thread-120404] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:17:56.123 [DEBUG] [Thread-120404] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:17:56.123 [DEBUG] [Thread-120404] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:17:56.123 [DEBUG] [Thread-120404] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:17:56.123 [DEBUG] [Thread-120404] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:17:56.123 [DEBUG] [Thread-120404] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:17:56.123 [DEBUG] [Thread-120404] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:17:56.123 [DEBUG] [Thread-120404] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:17:56.123 [DEBUG] [Thread-120404] [transport.py] [_log()] client lang: <none>
2025-11-03T18:17:56.123 [DEBUG] [Thread-120404] [transport.py] [_log()] server lang: <none>
2025-11-03T18:17:56.123 [DEBUG] [Thread-120404] [transport.py] [_log()] kex follows: False
2025-11-03T18:17:56.123 [DEBUG] [Thread-120404] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:17:56.124 [DEBUG] [Thread-120404] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:17:56.124 [DEBUG] [Thread-120404] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:17:56.124 [DEBUG] [Thread-120404] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:17:56.124 [DEBUG] [Thread-120404] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:17:56.124 [DEBUG] [Thread-120404] [transport.py] [_log()] Compression: none
2025-11-03T18:17:56.124 [DEBUG] [Thread-120404] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:17:56.141 [DEBUG] [Thread-120404] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:17:56.142 [DEBUG] [Thread-120404] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:17:56.143 [DEBUG] [Thread-120404] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:17:56.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:17:56.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:17:56.145 [DEBUG] [Thread-120404] [transport.py] [_log()] userauth is OK
2025-11-03T18:17:56.145 [DEBUG] [Thread-120404] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:17:56.145 [DEBUG] [Thread-120404] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:17:56.145 [DEBUG] [Thread-120404] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:17:56.146 [DEBUG] [Thread-120404] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:17:56.168 [INFO] [Thread-120404] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:17:56.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:17:56.788 [DEBUG] [Thread-120404] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:17:56.788 [DEBUG] [Thread-120404] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:17:56.788 [DEBUG] [Thread-120404] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:17:56.829 [DEBUG] [Thread-120404] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:17:56.829 [DEBUG] [Thread-120404] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:17:56.833 [DEBUG] [Thread-120404] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:17:56.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:17:56.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:17:56.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:17:56.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:17:56.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:17:56.858 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:17:56.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:17:56.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:17:56.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:17:56.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.678574 -999.00  +23.90  26.37      9  -10.40 1 1 1 1 1   887    0 32.91 -41.15 ----- 30.3 26.4 306.6 37.8 25.3 -32.7 25.5 -31.8 25.9 -32.5 26.2 -32.3
2025-11-03T18:17:56.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:17:56.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:17:56.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.678574
2025-11-03T18:17:56.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:17:56.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:17:56.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:17:56.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:17:56.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:17:56.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:17:36', tmtdew=43.66, humidity=4.18, cloud=0.0, wind=27.15, temperature=24.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:17:08.794', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:17:56.859 [DEBUG] [Thread-120404] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:17:56.931 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:17:56.944 [DEBUG] [Thread-120407] [transport.py] [_log()] starting thread (client mode): 0x1174f790
2025-11-03T18:17:56.944 [DEBUG] [Thread-120407] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:17:56.958 [DEBUG] [Thread-120407] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:17:56.958 [INFO] [Thread-120407] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:17:56.966 [DEBUG] [Thread-120407] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:17:56.966 [DEBUG] [Thread-120407] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:17:56.966 [DEBUG] [Thread-120407] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:17:56.966 [DEBUG] [Thread-120407] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:17:56.966 [DEBUG] [Thread-120407] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:17:56.966 [DEBUG] [Thread-120407] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:17:56.966 [DEBUG] [Thread-120407] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:17:56.966 [DEBUG] [Thread-120407] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:17:56.966 [DEBUG] [Thread-120407] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:17:56.966 [DEBUG] [Thread-120407] [transport.py] [_log()] client lang: <none>
2025-11-03T18:17:56.966 [DEBUG] [Thread-120407] [transport.py] [_log()] server lang: <none>
2025-11-03T18:17:56.966 [DEBUG] [Thread-120407] [transport.py] [_log()] kex follows: False
2025-11-03T18:17:56.966 [DEBUG] [Thread-120407] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:17:56.966 [DEBUG] [Thread-120407] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:17:56.966 [DEBUG] [Thread-120407] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:17:56.966 [DEBUG] [Thread-120407] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:17:56.966 [DEBUG] [Thread-120407] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:17:56.966 [DEBUG] [Thread-120407] [transport.py] [_log()] Compression: none
2025-11-03T18:17:56.966 [DEBUG] [Thread-120407] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:17:57.023 [DEBUG] [Thread-120407] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:17:57.023 [DEBUG] [Thread-120407] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:17:57.023 [DEBUG] [Thread-120407] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:17:57.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:17:57.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:17:57.081 [DEBUG] [Thread-120407] [transport.py] [_log()] userauth is OK
2025-11-03T18:17:57.081 [DEBUG] [Thread-120407] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:17:57.081 [DEBUG] [Thread-120407] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:17:57.081 [DEBUG] [Thread-120407] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:17:57.081 [DEBUG] [Thread-120407] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:17:57.094 [INFO] [Thread-120407] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:17:57.094 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:17:57.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:17:57.907 [DEBUG] [Thread-120407] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:17:57.908 [DEBUG] [Thread-120407] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:17:57.956 [DEBUG] [Thread-120407] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:17:57.956 [DEBUG] [Thread-120407] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:17:57.965 [DEBUG] [Thread-120407] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:17:57.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:17:57.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:17:57.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:17:57.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:17:57.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:17:57.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:17:58.003 [DEBUG] [Thread-120407] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:18:00.441 [DEBUG] [Thread-120409 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:18:15.498 [DEBUG] [Thread-120410 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:18:27.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:18:27.997 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:18:28.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:18:28.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 18, 9), 43.61, 4.2, 0.0, 30.22, 24.43, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:18:28.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:18:09
2025-11-03T18:18:28.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:18:29.060 [DEBUG] [Thread-120411] [transport.py] [_log()] starting thread (client mode): 0xeda3e80
2025-11-03T18:18:29.060 [DEBUG] [Thread-120411] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:18:29.081 [DEBUG] [Thread-120411] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:18:29.081 [INFO] [Thread-120411] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:18:29.084 [DEBUG] [Thread-120411] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:18:29.084 [DEBUG] [Thread-120411] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:18:29.084 [DEBUG] [Thread-120411] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:18:29.084 [DEBUG] [Thread-120411] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:18:29.084 [DEBUG] [Thread-120411] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:18:29.084 [DEBUG] [Thread-120411] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:18:29.084 [DEBUG] [Thread-120411] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:18:29.084 [DEBUG] [Thread-120411] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:18:29.084 [DEBUG] [Thread-120411] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:18:29.084 [DEBUG] [Thread-120411] [transport.py] [_log()] client lang: <none>
2025-11-03T18:18:29.084 [DEBUG] [Thread-120411] [transport.py] [_log()] server lang: <none>
2025-11-03T18:18:29.084 [DEBUG] [Thread-120411] [transport.py] [_log()] kex follows: False
2025-11-03T18:18:29.084 [DEBUG] [Thread-120411] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:18:29.085 [DEBUG] [Thread-120411] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:18:29.085 [DEBUG] [Thread-120411] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:18:29.085 [DEBUG] [Thread-120411] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:18:29.085 [DEBUG] [Thread-120411] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:18:29.085 [DEBUG] [Thread-120411] [transport.py] [_log()] Compression: none
2025-11-03T18:18:29.085 [DEBUG] [Thread-120411] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:18:29.102 [DEBUG] [Thread-120411] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:18:29.103 [DEBUG] [Thread-120411] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:18:29.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:18:29.104 [DEBUG] [Thread-120411] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:18:29.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:18:29.105 [DEBUG] [Thread-120411] [transport.py] [_log()] userauth is OK
2025-11-03T18:18:29.105 [DEBUG] [Thread-120411] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:18:29.105 [DEBUG] [Thread-120411] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:18:29.106 [DEBUG] [Thread-120411] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:18:29.106 [DEBUG] [Thread-120411] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:18:29.138 [INFO] [Thread-120411] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:18:29.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:18:29.822 [DEBUG] [Thread-120411] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:18:29.823 [DEBUG] [Thread-120411] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:18:29.831 [DEBUG] [Thread-120411] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:18:29.864 [DEBUG] [Thread-120411] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:18:29.864 [DEBUG] [Thread-120411] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:18:29.866 [DEBUG] [Thread-120411] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:18:29.878 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:18:29.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:18:29.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:18:29.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:18:29.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:18:29.885 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:18:29.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:18:29.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:18:29.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:18:29.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.678921 -999.00  +24.00  24.92      9  -10.30 1 1 1 1 1   887    0 33.18 -39.36 ----- 29.5 24.9 303.8 32.7 25.3 -32.3 25.5 -31.7 26.0 -31.4 26.2 -32.1
2025-11-03T18:18:29.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:18:29.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:18:29.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.678921
2025-11-03T18:18:29.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:18:29.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:18:29.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:18:29.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:18:29.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:18:29.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:18:09', tmtdew=43.61, humidity=4.2, cloud=0.0, wind=30.22, temperature=24.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:17:38.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:18:29.887 [DEBUG] [Thread-120411] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:18:29.958 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:18:29.969 [DEBUG] [Thread-120414] [transport.py] [_log()] starting thread (client mode): 0xeda2aa0
2025-11-03T18:18:29.969 [DEBUG] [Thread-120414] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:18:29.984 [DEBUG] [Thread-120414] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:18:29.984 [INFO] [Thread-120414] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:18:29.991 [DEBUG] [Thread-120414] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:18:29.991 [DEBUG] [Thread-120414] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:18:29.991 [DEBUG] [Thread-120414] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:18:29.991 [DEBUG] [Thread-120414] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:18:29.992 [DEBUG] [Thread-120414] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:18:29.992 [DEBUG] [Thread-120414] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:18:29.992 [DEBUG] [Thread-120414] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:18:29.992 [DEBUG] [Thread-120414] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:18:29.992 [DEBUG] [Thread-120414] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:18:29.992 [DEBUG] [Thread-120414] [transport.py] [_log()] client lang: <none>
2025-11-03T18:18:29.992 [DEBUG] [Thread-120414] [transport.py] [_log()] server lang: <none>
2025-11-03T18:18:29.992 [DEBUG] [Thread-120414] [transport.py] [_log()] kex follows: False
2025-11-03T18:18:29.992 [DEBUG] [Thread-120414] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:18:29.992 [DEBUG] [Thread-120414] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:18:29.992 [DEBUG] [Thread-120414] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:18:29.992 [DEBUG] [Thread-120414] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:18:29.992 [DEBUG] [Thread-120414] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:18:29.992 [DEBUG] [Thread-120414] [transport.py] [_log()] Compression: none
2025-11-03T18:18:29.992 [DEBUG] [Thread-120414] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:18:30.048 [DEBUG] [Thread-120414] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:18:30.048 [DEBUG] [Thread-120414] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:18:30.049 [DEBUG] [Thread-120414] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:18:30.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:18:30.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:18:30.105 [DEBUG] [Thread-120414] [transport.py] [_log()] userauth is OK
2025-11-03T18:18:30.105 [DEBUG] [Thread-120414] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:18:30.105 [DEBUG] [Thread-120414] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:18:30.105 [DEBUG] [Thread-120414] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:18:30.105 [DEBUG] [Thread-120414] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:18:30.119 [INFO] [Thread-120414] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:18:30.119 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:18:30.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:18:30.495 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:18:30.496 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:18:30.547 [DEBUG] [Thread-120416 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:18:30.929 [DEBUG] [Thread-120414] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:18:30.929 [DEBUG] [Thread-120414] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:18:30.977 [DEBUG] [Thread-120414] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:18:30.977 [DEBUG] [Thread-120414] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:18:30.986 [DEBUG] [Thread-120414] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:18:30.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:18:30.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:18:31.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:18:31.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:18:31.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:18:31.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:18:31.023 [DEBUG] [Thread-120414] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:18:38.168 [DEBUG] [Thread-120417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:18:45.593 [DEBUG] [Thread-120418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:19:00.639 [DEBUG] [Thread-120419 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:19:01.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:19:01.046 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:19:01.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:19:01.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 18, 41), 43.75, 4.18, 0.0, 25.11, 24.51, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:19:01.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:18:41
2025-11-03T18:19:01.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:19:02.103 [DEBUG] [Thread-120420] [transport.py] [_log()] starting thread (client mode): 0xed2f4c0
2025-11-03T18:19:02.103 [DEBUG] [Thread-120420] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:19:02.123 [DEBUG] [Thread-120420] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:19:02.123 [INFO] [Thread-120420] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:19:02.133 [DEBUG] [Thread-120420] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:19:02.134 [DEBUG] [Thread-120420] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:19:02.134 [DEBUG] [Thread-120420] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:19:02.134 [DEBUG] [Thread-120420] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:19:02.134 [DEBUG] [Thread-120420] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:19:02.134 [DEBUG] [Thread-120420] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:19:02.134 [DEBUG] [Thread-120420] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:19:02.134 [DEBUG] [Thread-120420] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:19:02.134 [DEBUG] [Thread-120420] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:19:02.134 [DEBUG] [Thread-120420] [transport.py] [_log()] client lang: <none>
2025-11-03T18:19:02.134 [DEBUG] [Thread-120420] [transport.py] [_log()] server lang: <none>
2025-11-03T18:19:02.134 [DEBUG] [Thread-120420] [transport.py] [_log()] kex follows: False
2025-11-03T18:19:02.134 [DEBUG] [Thread-120420] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:19:02.134 [DEBUG] [Thread-120420] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:19:02.134 [DEBUG] [Thread-120420] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:19:02.134 [DEBUG] [Thread-120420] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:19:02.134 [DEBUG] [Thread-120420] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:19:02.134 [DEBUG] [Thread-120420] [transport.py] [_log()] Compression: none
2025-11-03T18:19:02.134 [DEBUG] [Thread-120420] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:19:02.154 [DEBUG] [Thread-120420] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:19:02.155 [DEBUG] [Thread-120420] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:19:02.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:19:02.156 [DEBUG] [Thread-120420] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:19:02.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:19:02.158 [DEBUG] [Thread-120420] [transport.py] [_log()] userauth is OK
2025-11-03T18:19:02.158 [DEBUG] [Thread-120420] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:19:02.158 [DEBUG] [Thread-120420] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:19:02.158 [DEBUG] [Thread-120420] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:19:02.158 [DEBUG] [Thread-120420] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:19:02.180 [INFO] [Thread-120420] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:19:02.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:19:02.825 [DEBUG] [Thread-120420] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:19:02.826 [DEBUG] [Thread-120420] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:19:02.826 [DEBUG] [Thread-120420] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:19:02.867 [DEBUG] [Thread-120420] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:19:02.867 [DEBUG] [Thread-120420] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:19:02.871 [DEBUG] [Thread-120420] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:19:02.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:19:02.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:19:02.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:19:02.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:19:02.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:19:02.897 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:19:02.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:19:02.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:19:02.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:19:02.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.679269 -999.00  +24.10  28.66      9  -10.30 1 1 1 1 1   887    0 33.03 -36.59 ----- 24.1 28.7 297.4 38.5 25.3 -32.5 25.4 -31.5 25.9 -31.6 26.2 -32.3
2025-11-03T18:19:02.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:19:02.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:19:02.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.679269
2025-11-03T18:19:02.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:19:02.907 [DEBUG] [Thread-120420] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:19:02.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:19:02.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:19:02.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:19:02.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:19:02.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:18:41', tmtdew=43.75, humidity=4.18, cloud=0.0, wind=25.11, temperature=24.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:18:08.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:19:02.992 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:19:03.004 [DEBUG] [Thread-120423] [transport.py] [_log()] starting thread (client mode): 0xed2d3f0
2025-11-03T18:19:03.004 [DEBUG] [Thread-120423] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:19:03.018 [DEBUG] [Thread-120423] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:19:03.019 [INFO] [Thread-120423] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:19:03.027 [DEBUG] [Thread-120423] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:19:03.027 [DEBUG] [Thread-120423] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:19:03.027 [DEBUG] [Thread-120423] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:19:03.027 [DEBUG] [Thread-120423] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:19:03.027 [DEBUG] [Thread-120423] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:19:03.027 [DEBUG] [Thread-120423] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:19:03.027 [DEBUG] [Thread-120423] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:19:03.027 [DEBUG] [Thread-120423] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:19:03.027 [DEBUG] [Thread-120423] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:19:03.027 [DEBUG] [Thread-120423] [transport.py] [_log()] client lang: <none>
2025-11-03T18:19:03.027 [DEBUG] [Thread-120423] [transport.py] [_log()] server lang: <none>
2025-11-03T18:19:03.027 [DEBUG] [Thread-120423] [transport.py] [_log()] kex follows: False
2025-11-03T18:19:03.027 [DEBUG] [Thread-120423] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:19:03.028 [DEBUG] [Thread-120423] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:19:03.028 [DEBUG] [Thread-120423] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:19:03.028 [DEBUG] [Thread-120423] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:19:03.028 [DEBUG] [Thread-120423] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:19:03.028 [DEBUG] [Thread-120423] [transport.py] [_log()] Compression: none
2025-11-03T18:19:03.028 [DEBUG] [Thread-120423] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:19:03.086 [DEBUG] [Thread-120423] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:19:03.087 [DEBUG] [Thread-120423] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:19:03.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:19:03.088 [DEBUG] [Thread-120423] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:19:03.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:19:03.146 [DEBUG] [Thread-120423] [transport.py] [_log()] userauth is OK
2025-11-03T18:19:03.147 [DEBUG] [Thread-120423] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:19:03.147 [DEBUG] [Thread-120423] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:19:03.147 [DEBUG] [Thread-120423] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:19:03.147 [DEBUG] [Thread-120423] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:19:03.166 [INFO] [Thread-120423] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:19:03.167 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:19:03.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:19:04.011 [DEBUG] [Thread-120423] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:19:04.011 [DEBUG] [Thread-120423] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:19:04.059 [DEBUG] [Thread-120423] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:19:04.059 [DEBUG] [Thread-120423] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:19:04.067 [DEBUG] [Thread-120423] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:19:04.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:19:04.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:19:04.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:19:04.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:19:04.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:19:04.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:19:04.099 [DEBUG] [Thread-120423] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:19:15.675 [DEBUG] [Thread-120425 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:19:30.636 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:19:30.637 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:19:30.716 [DEBUG] [Thread-120426 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:19:34.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:19:34.109 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:19:34.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:19:34.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 19, 13), 43.77, 4.17, 0.0, 30.52, 24.43, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:19:34.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:19:13
2025-11-03T18:19:35.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:19:35.171 [DEBUG] [Thread-120427] [transport.py] [_log()] starting thread (client mode): 0xeda2140
2025-11-03T18:19:35.171 [DEBUG] [Thread-120427] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:19:35.191 [DEBUG] [Thread-120427] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:19:35.191 [INFO] [Thread-120427] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:19:35.194 [DEBUG] [Thread-120427] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:19:35.195 [DEBUG] [Thread-120427] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:19:35.195 [DEBUG] [Thread-120427] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:19:35.195 [DEBUG] [Thread-120427] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:19:35.195 [DEBUG] [Thread-120427] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:19:35.195 [DEBUG] [Thread-120427] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:19:35.195 [DEBUG] [Thread-120427] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:19:35.195 [DEBUG] [Thread-120427] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:19:35.195 [DEBUG] [Thread-120427] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:19:35.195 [DEBUG] [Thread-120427] [transport.py] [_log()] client lang: <none>
2025-11-03T18:19:35.195 [DEBUG] [Thread-120427] [transport.py] [_log()] server lang: <none>
2025-11-03T18:19:35.195 [DEBUG] [Thread-120427] [transport.py] [_log()] kex follows: False
2025-11-03T18:19:35.195 [DEBUG] [Thread-120427] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:19:35.196 [DEBUG] [Thread-120427] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:19:35.196 [DEBUG] [Thread-120427] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:19:35.196 [DEBUG] [Thread-120427] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:19:35.196 [DEBUG] [Thread-120427] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:19:35.196 [DEBUG] [Thread-120427] [transport.py] [_log()] Compression: none
2025-11-03T18:19:35.196 [DEBUG] [Thread-120427] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:19:35.206 [DEBUG] [Thread-120427] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:19:35.207 [DEBUG] [Thread-120427] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:19:35.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:19:35.208 [DEBUG] [Thread-120427] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:19:35.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:19:35.249 [DEBUG] [Thread-120427] [transport.py] [_log()] userauth is OK
2025-11-03T18:19:35.249 [DEBUG] [Thread-120427] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:19:35.249 [DEBUG] [Thread-120427] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:19:35.249 [DEBUG] [Thread-120427] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:19:35.249 [DEBUG] [Thread-120427] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:19:35.281 [INFO] [Thread-120427] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:19:35.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:19:35.930 [DEBUG] [Thread-120427] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:19:35.930 [DEBUG] [Thread-120427] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:19:35.930 [DEBUG] [Thread-120427] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:19:35.971 [DEBUG] [Thread-120427] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:19:35.971 [DEBUG] [Thread-120427] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:19:35.975 [DEBUG] [Thread-120427] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:19:35.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:19:35.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:19:35.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:19:35.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:19:35.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:19:35.999 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:19:35.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:19:36.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:19:36.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:19:36.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.679616 -999.00  +24.10  29.43      9  -10.40 1 1 1 1 1   887    0 33.34 -40.32 ----- 22.1 29.4 304.8 38.3 25.3 -32.5 25.5 -31.8 26.0 -30.9 26.2 -32.2
2025-11-03T18:19:36.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:19:36.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:19:36.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.679616
2025-11-03T18:19:36.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:19:36.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:19:36.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:19:36.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:19:36.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:19:36.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:19:13', tmtdew=43.77, humidity=4.17, cloud=0.0, wind=30.52, temperature=24.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:18:38.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:19:36.002 [DEBUG] [Thread-120427] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:19:36.082 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:19:36.094 [DEBUG] [Thread-120430] [transport.py] [_log()] starting thread (client mode): 0xeda14b0
2025-11-03T18:19:36.094 [DEBUG] [Thread-120430] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:19:36.108 [DEBUG] [Thread-120430] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:19:36.108 [INFO] [Thread-120430] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:19:36.116 [DEBUG] [Thread-120430] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:19:36.116 [DEBUG] [Thread-120430] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:19:36.117 [DEBUG] [Thread-120430] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:19:36.117 [DEBUG] [Thread-120430] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:19:36.117 [DEBUG] [Thread-120430] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:19:36.117 [DEBUG] [Thread-120430] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:19:36.117 [DEBUG] [Thread-120430] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:19:36.117 [DEBUG] [Thread-120430] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:19:36.117 [DEBUG] [Thread-120430] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:19:36.117 [DEBUG] [Thread-120430] [transport.py] [_log()] client lang: <none>
2025-11-03T18:19:36.117 [DEBUG] [Thread-120430] [transport.py] [_log()] server lang: <none>
2025-11-03T18:19:36.117 [DEBUG] [Thread-120430] [transport.py] [_log()] kex follows: False
2025-11-03T18:19:36.118 [DEBUG] [Thread-120430] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:19:36.118 [DEBUG] [Thread-120430] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:19:36.118 [DEBUG] [Thread-120430] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:19:36.118 [DEBUG] [Thread-120430] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:19:36.118 [DEBUG] [Thread-120430] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:19:36.118 [DEBUG] [Thread-120430] [transport.py] [_log()] Compression: none
2025-11-03T18:19:36.118 [DEBUG] [Thread-120430] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:19:36.180 [DEBUG] [Thread-120430] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:19:36.180 [DEBUG] [Thread-120430] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:19:36.181 [DEBUG] [Thread-120430] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:19:36.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:19:36.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:19:36.239 [DEBUG] [Thread-120430] [transport.py] [_log()] userauth is OK
2025-11-03T18:19:36.239 [DEBUG] [Thread-120430] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:19:36.240 [DEBUG] [Thread-120430] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:19:36.240 [DEBUG] [Thread-120430] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:19:36.240 [DEBUG] [Thread-120430] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:19:36.259 [INFO] [Thread-120430] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:19:36.259 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:19:36.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:19:37.081 [DEBUG] [Thread-120430] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:19:37.081 [DEBUG] [Thread-120430] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:19:37.128 [DEBUG] [Thread-120430] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:19:37.128 [DEBUG] [Thread-120430] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:19:37.137 [DEBUG] [Thread-120430] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:19:37.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:19:37.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:19:37.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:19:37.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:19:37.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:19:37.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:19:37.172 [DEBUG] [Thread-120430] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:19:38.251 [DEBUG] [Thread-120432 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:19:45.754 [DEBUG] [Thread-120433 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:20:00.799 [DEBUG] [Thread-120434 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:20:07.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:20:07.193 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:20:07.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:20:07.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 19, 45), 43.8, 4.17, 0.0, 32.62, 24.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:20:07.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:19:45
2025-11-03T18:20:08.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:20:08.164 [DEBUG] [Thread-120435] [transport.py] [_log()] starting thread (client mode): 0x11762fe0
2025-11-03T18:20:08.164 [DEBUG] [Thread-120435] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:20:08.186 [DEBUG] [Thread-120435] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:20:08.186 [INFO] [Thread-120435] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:20:08.187 [DEBUG] [Thread-120435] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:20:08.188 [DEBUG] [Thread-120435] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:20:08.188 [DEBUG] [Thread-120435] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:20:08.188 [DEBUG] [Thread-120435] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:20:08.188 [DEBUG] [Thread-120435] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:20:08.188 [DEBUG] [Thread-120435] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:20:08.188 [DEBUG] [Thread-120435] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:20:08.188 [DEBUG] [Thread-120435] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:20:08.188 [DEBUG] [Thread-120435] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:20:08.188 [DEBUG] [Thread-120435] [transport.py] [_log()] client lang: <none>
2025-11-03T18:20:08.188 [DEBUG] [Thread-120435] [transport.py] [_log()] server lang: <none>
2025-11-03T18:20:08.188 [DEBUG] [Thread-120435] [transport.py] [_log()] kex follows: False
2025-11-03T18:20:08.188 [DEBUG] [Thread-120435] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:20:08.188 [DEBUG] [Thread-120435] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:20:08.188 [DEBUG] [Thread-120435] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:20:08.189 [DEBUG] [Thread-120435] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:20:08.189 [DEBUG] [Thread-120435] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:20:08.189 [DEBUG] [Thread-120435] [transport.py] [_log()] Compression: none
2025-11-03T18:20:08.189 [DEBUG] [Thread-120435] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:20:08.197 [DEBUG] [Thread-120435] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:20:08.198 [DEBUG] [Thread-120435] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:20:08.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:20:08.198 [DEBUG] [Thread-120435] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:20:08.199 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:20:08.200 [DEBUG] [Thread-120435] [transport.py] [_log()] userauth is OK
2025-11-03T18:20:08.200 [DEBUG] [Thread-120435] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:20:08.200 [DEBUG] [Thread-120435] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:20:08.200 [DEBUG] [Thread-120435] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:20:08.200 [DEBUG] [Thread-120435] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:20:08.216 [INFO] [Thread-120435] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:20:08.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:20:15.834 [DEBUG] [Thread-120437 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:20:17.103 [DEBUG] [Thread-120435] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:20:17.103 [DEBUG] [Thread-120435] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:20:17.103 [DEBUG] [Thread-120435] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:20:17.143 [DEBUG] [Thread-120435] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:20:17.143 [DEBUG] [Thread-120435] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:20:17.146 [DEBUG] [Thread-120435] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:20:17.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:20:17.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:20:17.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:20:17.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:20:17.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:20:17.249 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:20:17.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:20:17.249 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:20:17.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:20:17.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.679963 -999.00  +24.10  28.98      9  -10.40 1 1 1 1 1   887    0 33.78 -40.41 ----- 26.9 29.0 306.2 40.2 25.2 -32.5 25.5 -31.7 26.0 -31.2 26.1 -32.0
2025-11-03T18:20:17.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:20:17.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:20:17.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.679963
2025-11-03T18:20:17.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:20:17.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:20:17.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:20:17.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:20:17.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:20:17.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:19:45', tmtdew=43.8, humidity=4.17, cloud=0.0, wind=32.62, temperature=24.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:19:08.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:20:17.251 [DEBUG] [Thread-120435] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:20:17.322 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:20:17.334 [DEBUG] [Thread-120439] [transport.py] [_log()] starting thread (client mode): 0x11798400
2025-11-03T18:20:17.334 [DEBUG] [Thread-120439] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:20:17.348 [DEBUG] [Thread-120439] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:20:17.349 [INFO] [Thread-120439] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:20:17.356 [DEBUG] [Thread-120439] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:20:17.356 [DEBUG] [Thread-120439] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:20:17.357 [DEBUG] [Thread-120439] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:20:17.357 [DEBUG] [Thread-120439] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:20:17.357 [DEBUG] [Thread-120439] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:20:17.357 [DEBUG] [Thread-120439] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:20:17.357 [DEBUG] [Thread-120439] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:20:17.357 [DEBUG] [Thread-120439] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:20:17.357 [DEBUG] [Thread-120439] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:20:17.357 [DEBUG] [Thread-120439] [transport.py] [_log()] client lang: <none>
2025-11-03T18:20:17.357 [DEBUG] [Thread-120439] [transport.py] [_log()] server lang: <none>
2025-11-03T18:20:17.357 [DEBUG] [Thread-120439] [transport.py] [_log()] kex follows: False
2025-11-03T18:20:17.357 [DEBUG] [Thread-120439] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:20:17.357 [DEBUG] [Thread-120439] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:20:17.358 [DEBUG] [Thread-120439] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:20:17.358 [DEBUG] [Thread-120439] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:20:17.358 [DEBUG] [Thread-120439] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:20:17.358 [DEBUG] [Thread-120439] [transport.py] [_log()] Compression: none
2025-11-03T18:20:17.358 [DEBUG] [Thread-120439] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:20:17.420 [DEBUG] [Thread-120439] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:20:17.420 [DEBUG] [Thread-120439] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:20:17.421 [DEBUG] [Thread-120439] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:20:17.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:20:17.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:20:17.476 [DEBUG] [Thread-120439] [transport.py] [_log()] userauth is OK
2025-11-03T18:20:17.476 [DEBUG] [Thread-120439] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:20:17.477 [DEBUG] [Thread-120439] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:20:17.477 [DEBUG] [Thread-120439] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:20:17.477 [DEBUG] [Thread-120439] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:20:17.496 [INFO] [Thread-120439] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:20:17.496 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:20:17.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:20:18.355 [DEBUG] [Thread-120439] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:20:18.355 [DEBUG] [Thread-120439] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:20:18.403 [DEBUG] [Thread-120439] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:20:18.403 [DEBUG] [Thread-120439] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:20:18.412 [DEBUG] [Thread-120439] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:20:18.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:20:18.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:20:18.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:20:18.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:20:18.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:20:18.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:20:18.449 [DEBUG] [Thread-120439] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:20:30.779 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:20:30.780 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:20:30.869 [DEBUG] [Thread-120441 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:20:38.304 [DEBUG] [Thread-120442 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:20:45.920 [DEBUG] [Thread-120443 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:20:48.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:20:48.471 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:20:48.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:20:49.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 20, 18), 43.76, 4.18, 0.0, 31.62, 24.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:20:49.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:20:18
2025-11-03T18:20:49.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:20:49.532 [DEBUG] [Thread-120444] [transport.py] [_log()] starting thread (client mode): 0x1174f970
2025-11-03T18:20:49.532 [DEBUG] [Thread-120444] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:20:49.552 [DEBUG] [Thread-120444] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:20:49.552 [INFO] [Thread-120444] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:20:49.553 [DEBUG] [Thread-120444] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:20:49.562 [DEBUG] [Thread-120444] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:20:49.562 [DEBUG] [Thread-120444] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:20:49.563 [DEBUG] [Thread-120444] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:20:49.563 [DEBUG] [Thread-120444] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:20:49.563 [DEBUG] [Thread-120444] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:20:49.563 [DEBUG] [Thread-120444] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:20:49.563 [DEBUG] [Thread-120444] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:20:49.563 [DEBUG] [Thread-120444] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:20:49.563 [DEBUG] [Thread-120444] [transport.py] [_log()] client lang: <none>
2025-11-03T18:20:49.563 [DEBUG] [Thread-120444] [transport.py] [_log()] server lang: <none>
2025-11-03T18:20:49.563 [DEBUG] [Thread-120444] [transport.py] [_log()] kex follows: False
2025-11-03T18:20:49.563 [DEBUG] [Thread-120444] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:20:49.564 [DEBUG] [Thread-120444] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:20:49.564 [DEBUG] [Thread-120444] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:20:49.564 [DEBUG] [Thread-120444] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:20:49.564 [DEBUG] [Thread-120444] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:20:49.564 [DEBUG] [Thread-120444] [transport.py] [_log()] Compression: none
2025-11-03T18:20:49.564 [DEBUG] [Thread-120444] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:20:49.584 [DEBUG] [Thread-120444] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:20:49.585 [DEBUG] [Thread-120444] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:20:49.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:20:49.586 [DEBUG] [Thread-120444] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:20:49.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:20:49.588 [DEBUG] [Thread-120444] [transport.py] [_log()] userauth is OK
2025-11-03T18:20:49.588 [DEBUG] [Thread-120444] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:20:49.588 [DEBUG] [Thread-120444] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:20:49.589 [DEBUG] [Thread-120444] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:20:49.589 [DEBUG] [Thread-120444] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:20:49.613 [INFO] [Thread-120444] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:20:49.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:20:50.187 [DEBUG] [Thread-120444] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:20:50.187 [DEBUG] [Thread-120444] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:20:50.187 [DEBUG] [Thread-120444] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:20:50.227 [DEBUG] [Thread-120444] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:20:50.227 [DEBUG] [Thread-120444] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:20:50.230 [DEBUG] [Thread-120444] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:20:50.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:20:50.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:20:50.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:20:50.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:20:50.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:20:50.246 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:20:50.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:20:50.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:20:50.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:20:50.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.680657 -999.00  +24.30  29.94      9  -10.20 1 1 1 1 1   887    0 33.73 -34.93 ----- 27.3 29.9 300.9 32.6 25.3 -32.2 25.5 -31.4 25.9 -31.3 26.2 -32.2
2025-11-03T18:20:50.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:20:50.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:20:50.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.680657
2025-11-03T18:20:50.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:20:50.247 [DEBUG] [Thread-120444] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:20:50.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:20:50.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:20:50.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:20:50.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:20:50.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:20:18', tmtdew=43.76, humidity=4.18, cloud=0.0, wind=31.62, temperature=24.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:20:08.765', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:20:50.319 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:20:50.331 [DEBUG] [Thread-120447] [transport.py] [_log()] starting thread (client mode): 0xed13520
2025-11-03T18:20:50.331 [DEBUG] [Thread-120447] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:20:50.346 [DEBUG] [Thread-120447] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:20:50.346 [INFO] [Thread-120447] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:20:50.354 [DEBUG] [Thread-120447] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:20:50.354 [DEBUG] [Thread-120447] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:20:50.354 [DEBUG] [Thread-120447] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:20:50.354 [DEBUG] [Thread-120447] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:20:50.354 [DEBUG] [Thread-120447] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:20:50.354 [DEBUG] [Thread-120447] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:20:50.354 [DEBUG] [Thread-120447] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:20:50.354 [DEBUG] [Thread-120447] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:20:50.354 [DEBUG] [Thread-120447] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:20:50.354 [DEBUG] [Thread-120447] [transport.py] [_log()] client lang: <none>
2025-11-03T18:20:50.354 [DEBUG] [Thread-120447] [transport.py] [_log()] server lang: <none>
2025-11-03T18:20:50.354 [DEBUG] [Thread-120447] [transport.py] [_log()] kex follows: False
2025-11-03T18:20:50.354 [DEBUG] [Thread-120447] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:20:50.354 [DEBUG] [Thread-120447] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:20:50.354 [DEBUG] [Thread-120447] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:20:50.354 [DEBUG] [Thread-120447] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:20:50.354 [DEBUG] [Thread-120447] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:20:50.354 [DEBUG] [Thread-120447] [transport.py] [_log()] Compression: none
2025-11-03T18:20:50.354 [DEBUG] [Thread-120447] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:20:50.410 [DEBUG] [Thread-120447] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:20:50.410 [DEBUG] [Thread-120447] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:20:50.411 [DEBUG] [Thread-120447] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:20:50.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:20:50.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:20:50.467 [DEBUG] [Thread-120447] [transport.py] [_log()] userauth is OK
2025-11-03T18:20:50.467 [DEBUG] [Thread-120447] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:20:50.467 [DEBUG] [Thread-120447] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:20:50.467 [DEBUG] [Thread-120447] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:20:50.468 [DEBUG] [Thread-120447] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:20:50.490 [INFO] [Thread-120447] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:20:50.491 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:20:50.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:20:51.339 [DEBUG] [Thread-120447] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:20:51.339 [DEBUG] [Thread-120447] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:20:51.387 [DEBUG] [Thread-120447] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:20:51.387 [DEBUG] [Thread-120447] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:20:51.395 [DEBUG] [Thread-120447] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:20:51.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:20:51.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:20:51.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:20:51.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:20:51.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:20:51.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:20:51.427 [DEBUG] [Thread-120447] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:21:00.964 [DEBUG] [Thread-120449 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:21:16.019 [DEBUG] [Thread-120450 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:21:21.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:21:21.449 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:21:21.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:21:22.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 20, 50), 43.96, 4.17, 0.0, 36.51, 24.25, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:21:22.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:20:50
2025-11-03T18:21:22.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:21:22.421 [DEBUG] [Thread-120451] [transport.py] [_log()] starting thread (client mode): 0xed2c640
2025-11-03T18:21:22.421 [DEBUG] [Thread-120451] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:21:22.440 [DEBUG] [Thread-120451] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:21:22.440 [INFO] [Thread-120451] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:21:22.443 [DEBUG] [Thread-120451] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:21:22.443 [DEBUG] [Thread-120451] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:21:22.443 [DEBUG] [Thread-120451] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:21:22.443 [DEBUG] [Thread-120451] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:21:22.443 [DEBUG] [Thread-120451] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:21:22.443 [DEBUG] [Thread-120451] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:21:22.443 [DEBUG] [Thread-120451] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:21:22.443 [DEBUG] [Thread-120451] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:21:22.443 [DEBUG] [Thread-120451] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:21:22.443 [DEBUG] [Thread-120451] [transport.py] [_log()] client lang: <none>
2025-11-03T18:21:22.443 [DEBUG] [Thread-120451] [transport.py] [_log()] server lang: <none>
2025-11-03T18:21:22.443 [DEBUG] [Thread-120451] [transport.py] [_log()] kex follows: False
2025-11-03T18:21:22.443 [DEBUG] [Thread-120451] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:21:22.443 [DEBUG] [Thread-120451] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:21:22.443 [DEBUG] [Thread-120451] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:21:22.443 [DEBUG] [Thread-120451] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:21:22.443 [DEBUG] [Thread-120451] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:21:22.443 [DEBUG] [Thread-120451] [transport.py] [_log()] Compression: none
2025-11-03T18:21:22.443 [DEBUG] [Thread-120451] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:21:22.459 [DEBUG] [Thread-120451] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:21:22.459 [DEBUG] [Thread-120451] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:21:22.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:21:22.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:21:22.460 [DEBUG] [Thread-120451] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:21:22.460 [DEBUG] [Thread-120451] [transport.py] [_log()] userauth is OK
2025-11-03T18:21:22.460 [DEBUG] [Thread-120451] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:21:22.460 [DEBUG] [Thread-120451] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:21:22.460 [DEBUG] [Thread-120451] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:21:22.460 [DEBUG] [Thread-120451] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:21:22.471 [INFO] [Thread-120451] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:21:22.472 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:21:23.271 [DEBUG] [Thread-120451] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:21:23.272 [DEBUG] [Thread-120451] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:21:23.272 [DEBUG] [Thread-120451] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:21:23.312 [DEBUG] [Thread-120451] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:21:23.312 [DEBUG] [Thread-120451] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:21:23.314 [DEBUG] [Thread-120451] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:21:23.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:21:23.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:21:23.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:21:23.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:21:23.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:21:23.332 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:21:23.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:21:23.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:21:23.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:21:23.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.681005 -999.00  +24.30  30.03      9  -10.50 1 1 2 1 1   887    0 33.45 -32.93 ----- 26.4 30.0 301.2 34.0 25.3 -32.2 25.5 -31.4 26.0 -31.2 26.1 -32.2
2025-11-03T18:21:23.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:21:23.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:21:23.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.681005
2025-11-03T18:21:23.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:21:23.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:21:23.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:21:23.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:21:23.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:21:23.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:20:50', tmtdew=43.96, humidity=4.17, cloud=0.0, wind=36.51, temperature=24.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:20:38.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:21:23.333 [DEBUG] [Thread-120451] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:21:23.409 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:21:23.422 [DEBUG] [Thread-120454] [transport.py] [_log()] starting thread (client mode): 0x1174dfc0
2025-11-03T18:21:23.422 [DEBUG] [Thread-120454] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:21:23.436 [DEBUG] [Thread-120454] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:21:23.437 [INFO] [Thread-120454] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:21:23.444 [DEBUG] [Thread-120454] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:21:23.444 [DEBUG] [Thread-120454] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:21:23.444 [DEBUG] [Thread-120454] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:21:23.444 [DEBUG] [Thread-120454] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:21:23.444 [DEBUG] [Thread-120454] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:21:23.444 [DEBUG] [Thread-120454] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:21:23.444 [DEBUG] [Thread-120454] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:21:23.444 [DEBUG] [Thread-120454] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:21:23.444 [DEBUG] [Thread-120454] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:21:23.444 [DEBUG] [Thread-120454] [transport.py] [_log()] client lang: <none>
2025-11-03T18:21:23.444 [DEBUG] [Thread-120454] [transport.py] [_log()] server lang: <none>
2025-11-03T18:21:23.444 [DEBUG] [Thread-120454] [transport.py] [_log()] kex follows: False
2025-11-03T18:21:23.444 [DEBUG] [Thread-120454] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:21:23.444 [DEBUG] [Thread-120454] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:21:23.444 [DEBUG] [Thread-120454] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:21:23.444 [DEBUG] [Thread-120454] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:21:23.444 [DEBUG] [Thread-120454] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:21:23.444 [DEBUG] [Thread-120454] [transport.py] [_log()] Compression: none
2025-11-03T18:21:23.444 [DEBUG] [Thread-120454] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:21:23.503 [DEBUG] [Thread-120454] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:21:23.503 [DEBUG] [Thread-120454] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:21:23.503 [DEBUG] [Thread-120454] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:21:23.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:21:23.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:21:23.560 [DEBUG] [Thread-120454] [transport.py] [_log()] userauth is OK
2025-11-03T18:21:23.560 [DEBUG] [Thread-120454] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:21:23.560 [DEBUG] [Thread-120454] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:21:23.560 [DEBUG] [Thread-120454] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:21:23.560 [DEBUG] [Thread-120454] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:21:23.576 [INFO] [Thread-120454] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:21:23.576 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:21:23.576 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:21:24.453 [DEBUG] [Thread-120454] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:21:24.453 [DEBUG] [Thread-120454] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:21:24.500 [DEBUG] [Thread-120454] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:21:24.500 [DEBUG] [Thread-120454] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:21:24.509 [DEBUG] [Thread-120454] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:21:24.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:21:24.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:21:24.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:21:24.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:21:24.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:21:24.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:21:24.542 [DEBUG] [Thread-120454] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:21:30.944 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:21:30.945 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:21:31.050 [DEBUG] [Thread-120456 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:21:38.365 [DEBUG] [Thread-120457 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:21:46.103 [DEBUG] [Thread-120458 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:21:54.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:21:54.565 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:21:54.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:21:55.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 21, 22), 43.83, 4.22, 0.0, 35.71, 24.23, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:21:55.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:21:22
2025-11-03T18:21:55.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:21:55.576 [DEBUG] [Thread-120459] [transport.py] [_log()] starting thread (client mode): 0x11798850
2025-11-03T18:21:55.576 [DEBUG] [Thread-120459] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:21:55.597 [DEBUG] [Thread-120459] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:21:55.597 [INFO] [Thread-120459] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:21:55.607 [DEBUG] [Thread-120459] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:21:55.608 [DEBUG] [Thread-120459] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:21:55.608 [DEBUG] [Thread-120459] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:21:55.608 [DEBUG] [Thread-120459] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:21:55.608 [DEBUG] [Thread-120459] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:21:55.608 [DEBUG] [Thread-120459] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:21:55.608 [DEBUG] [Thread-120459] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:21:55.608 [DEBUG] [Thread-120459] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:21:55.608 [DEBUG] [Thread-120459] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:21:55.608 [DEBUG] [Thread-120459] [transport.py] [_log()] client lang: <none>
2025-11-03T18:21:55.608 [DEBUG] [Thread-120459] [transport.py] [_log()] server lang: <none>
2025-11-03T18:21:55.608 [DEBUG] [Thread-120459] [transport.py] [_log()] kex follows: False
2025-11-03T18:21:55.608 [DEBUG] [Thread-120459] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:21:55.608 [DEBUG] [Thread-120459] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:21:55.608 [DEBUG] [Thread-120459] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:21:55.608 [DEBUG] [Thread-120459] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:21:55.609 [DEBUG] [Thread-120459] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:21:55.609 [DEBUG] [Thread-120459] [transport.py] [_log()] Compression: none
2025-11-03T18:21:55.609 [DEBUG] [Thread-120459] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:21:55.628 [DEBUG] [Thread-120459] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:21:55.629 [DEBUG] [Thread-120459] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:21:55.629 [DEBUG] [Thread-120459] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:21:55.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:21:55.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:21:55.632 [DEBUG] [Thread-120459] [transport.py] [_log()] userauth is OK
2025-11-03T18:21:55.632 [DEBUG] [Thread-120459] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:21:55.632 [DEBUG] [Thread-120459] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:21:55.632 [DEBUG] [Thread-120459] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:21:55.632 [DEBUG] [Thread-120459] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:21:55.669 [INFO] [Thread-120459] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:21:55.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:21:56.270 [DEBUG] [Thread-120459] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:21:56.270 [DEBUG] [Thread-120459] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:21:56.270 [DEBUG] [Thread-120459] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:21:56.312 [DEBUG] [Thread-120459] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:21:56.312 [DEBUG] [Thread-120459] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:21:56.314 [DEBUG] [Thread-120459] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:21:56.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:21:56.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:21:56.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:21:56.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:21:56.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:21:56.332 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:21:56.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:21:56.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:21:56.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:21:56.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.681352 -999.00  +24.20  33.57      9  -10.60 1 1 2 1 1   887    0 33.68 -28.29 ----- 38.6 33.6 296.0 38.4 25.3 -32.5 25.5 -31.5 25.9 -32.3 26.1 -32.5
2025-11-03T18:21:56.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:21:56.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:21:56.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.681352
2025-11-03T18:21:56.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:21:56.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:21:56.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:21:56.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:21:56.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:21:56.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:21:22', tmtdew=43.83, humidity=4.22, cloud=0.0, wind=35.71, temperature=24.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:21:08.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:21:56.333 [DEBUG] [Thread-120459] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:21:56.408 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:21:56.420 [DEBUG] [Thread-120462] [transport.py] [_log()] starting thread (client mode): 0xed88100
2025-11-03T18:21:56.420 [DEBUG] [Thread-120462] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:21:56.436 [DEBUG] [Thread-120462] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:21:56.436 [INFO] [Thread-120462] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:21:56.443 [DEBUG] [Thread-120462] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:21:56.443 [DEBUG] [Thread-120462] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:21:56.443 [DEBUG] [Thread-120462] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:21:56.443 [DEBUG] [Thread-120462] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:21:56.443 [DEBUG] [Thread-120462] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:21:56.443 [DEBUG] [Thread-120462] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:21:56.443 [DEBUG] [Thread-120462] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:21:56.443 [DEBUG] [Thread-120462] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:21:56.443 [DEBUG] [Thread-120462] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:21:56.443 [DEBUG] [Thread-120462] [transport.py] [_log()] client lang: <none>
2025-11-03T18:21:56.443 [DEBUG] [Thread-120462] [transport.py] [_log()] server lang: <none>
2025-11-03T18:21:56.443 [DEBUG] [Thread-120462] [transport.py] [_log()] kex follows: False
2025-11-03T18:21:56.443 [DEBUG] [Thread-120462] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:21:56.443 [DEBUG] [Thread-120462] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:21:56.443 [DEBUG] [Thread-120462] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:21:56.443 [DEBUG] [Thread-120462] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:21:56.443 [DEBUG] [Thread-120462] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:21:56.443 [DEBUG] [Thread-120462] [transport.py] [_log()] Compression: none
2025-11-03T18:21:56.443 [DEBUG] [Thread-120462] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:21:56.501 [DEBUG] [Thread-120462] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:21:56.501 [DEBUG] [Thread-120462] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:21:56.501 [DEBUG] [Thread-120462] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:21:56.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:21:56.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:21:56.556 [DEBUG] [Thread-120462] [transport.py] [_log()] userauth is OK
2025-11-03T18:21:56.556 [DEBUG] [Thread-120462] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:21:56.557 [DEBUG] [Thread-120462] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:21:56.557 [DEBUG] [Thread-120462] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:21:56.557 [DEBUG] [Thread-120462] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:21:56.570 [INFO] [Thread-120462] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:21:56.570 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:21:56.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:21:57.380 [DEBUG] [Thread-120462] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:21:57.380 [DEBUG] [Thread-120462] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:21:57.427 [DEBUG] [Thread-120462] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:21:57.427 [DEBUG] [Thread-120462] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:21:57.436 [DEBUG] [Thread-120462] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:21:57.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:21:57.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:21:57.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:21:57.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:21:57.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:21:57.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:21:57.467 [DEBUG] [Thread-120462] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:22:01.142 [DEBUG] [Thread-120464 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:22:16.188 [DEBUG] [Thread-120465 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:22:27.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:22:27.490 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:22:27.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:22:28.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 21, 55), 43.86, 4.18, 0.0, 33.67, 24.23, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:22:28.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:21:55
2025-11-03T18:22:28.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:22:28.444 [DEBUG] [Thread-120466] [transport.py] [_log()] starting thread (client mode): 0x1179b610
2025-11-03T18:22:28.444 [DEBUG] [Thread-120466] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:22:28.463 [DEBUG] [Thread-120466] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:22:28.463 [INFO] [Thread-120466] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:22:28.466 [DEBUG] [Thread-120466] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:22:28.466 [DEBUG] [Thread-120466] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:22:28.466 [DEBUG] [Thread-120466] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:22:28.466 [DEBUG] [Thread-120466] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:22:28.466 [DEBUG] [Thread-120466] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:22:28.467 [DEBUG] [Thread-120466] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:22:28.467 [DEBUG] [Thread-120466] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:22:28.467 [DEBUG] [Thread-120466] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:22:28.467 [DEBUG] [Thread-120466] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:22:28.467 [DEBUG] [Thread-120466] [transport.py] [_log()] client lang: <none>
2025-11-03T18:22:28.467 [DEBUG] [Thread-120466] [transport.py] [_log()] server lang: <none>
2025-11-03T18:22:28.467 [DEBUG] [Thread-120466] [transport.py] [_log()] kex follows: False
2025-11-03T18:22:28.467 [DEBUG] [Thread-120466] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:22:28.467 [DEBUG] [Thread-120466] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:22:28.467 [DEBUG] [Thread-120466] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:22:28.467 [DEBUG] [Thread-120466] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:22:28.467 [DEBUG] [Thread-120466] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:22:28.467 [DEBUG] [Thread-120466] [transport.py] [_log()] Compression: none
2025-11-03T18:22:28.467 [DEBUG] [Thread-120466] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:22:28.474 [DEBUG] [Thread-120466] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:22:28.474 [DEBUG] [Thread-120466] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:22:28.474 [DEBUG] [Thread-120466] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:22:28.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:22:28.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:22:28.475 [DEBUG] [Thread-120466] [transport.py] [_log()] userauth is OK
2025-11-03T18:22:28.475 [DEBUG] [Thread-120466] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:22:28.475 [DEBUG] [Thread-120466] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:22:28.475 [DEBUG] [Thread-120466] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:22:28.475 [DEBUG] [Thread-120466] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:22:28.484 [INFO] [Thread-120466] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:22:28.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:22:29.287 [DEBUG] [Thread-120466] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:22:29.287 [DEBUG] [Thread-120466] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:22:29.287 [DEBUG] [Thread-120466] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:22:29.329 [DEBUG] [Thread-120466] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:22:29.329 [DEBUG] [Thread-120466] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:22:29.331 [DEBUG] [Thread-120466] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:22:29.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:22:29.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:22:29.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:22:29.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:22:29.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:22:29.348 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:22:29.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:22:29.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:22:29.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:22:29.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.681699 -999.00  +24.00  34.68      9  -10.80 1 1 2 1 1   887    0 33.58 -22.70 ----- 32.6 34.7 300.0 47.6 25.2 -32.8 25.4 -32.0 25.8 -31.5 26.0 -32.7
2025-11-03T18:22:29.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:22:29.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:22:29.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.681699
2025-11-03T18:22:29.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:22:29.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:22:29.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:22:29.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:22:29.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:22:29.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:21:55', tmtdew=43.86, humidity=4.18, cloud=0.0, wind=33.67, temperature=24.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:21:38.794', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:22:29.349 [DEBUG] [Thread-120466] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:22:29.424 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:22:29.435 [DEBUG] [Thread-120469] [transport.py] [_log()] starting thread (client mode): 0x11799900
2025-11-03T18:22:29.435 [DEBUG] [Thread-120469] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:22:29.450 [DEBUG] [Thread-120469] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:22:29.450 [INFO] [Thread-120469] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:22:29.457 [DEBUG] [Thread-120469] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:22:29.457 [DEBUG] [Thread-120469] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:22:29.457 [DEBUG] [Thread-120469] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:22:29.457 [DEBUG] [Thread-120469] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:22:29.457 [DEBUG] [Thread-120469] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:22:29.457 [DEBUG] [Thread-120469] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:22:29.457 [DEBUG] [Thread-120469] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:22:29.457 [DEBUG] [Thread-120469] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:22:29.457 [DEBUG] [Thread-120469] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:22:29.457 [DEBUG] [Thread-120469] [transport.py] [_log()] client lang: <none>
2025-11-03T18:22:29.458 [DEBUG] [Thread-120469] [transport.py] [_log()] server lang: <none>
2025-11-03T18:22:29.458 [DEBUG] [Thread-120469] [transport.py] [_log()] kex follows: False
2025-11-03T18:22:29.458 [DEBUG] [Thread-120469] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:22:29.458 [DEBUG] [Thread-120469] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:22:29.458 [DEBUG] [Thread-120469] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:22:29.458 [DEBUG] [Thread-120469] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:22:29.458 [DEBUG] [Thread-120469] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:22:29.458 [DEBUG] [Thread-120469] [transport.py] [_log()] Compression: none
2025-11-03T18:22:29.458 [DEBUG] [Thread-120469] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:22:29.517 [DEBUG] [Thread-120469] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:22:29.517 [DEBUG] [Thread-120469] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:22:29.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:22:29.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:22:29.517 [DEBUG] [Thread-120469] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:22:29.573 [DEBUG] [Thread-120469] [transport.py] [_log()] userauth is OK
2025-11-03T18:22:29.573 [DEBUG] [Thread-120469] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:22:29.573 [DEBUG] [Thread-120469] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:22:29.573 [DEBUG] [Thread-120469] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:22:29.573 [DEBUG] [Thread-120469] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:22:29.588 [INFO] [Thread-120469] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:22:29.588 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:22:29.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:22:30.436 [DEBUG] [Thread-120469] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:22:30.436 [DEBUG] [Thread-120469] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:22:30.483 [DEBUG] [Thread-120469] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:22:30.484 [DEBUG] [Thread-120469] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:22:30.493 [DEBUG] [Thread-120469] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:22:30.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:22:30.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:22:30.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:22:30.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:22:30.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:22:30.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:22:30.528 [DEBUG] [Thread-120469] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:22:31.085 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:22:31.086 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:22:31.228 [DEBUG] [Thread-120471 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:22:38.560 [DEBUG] [Thread-120472 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:22:46.268 [DEBUG] [Thread-120473 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:23:00.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:23:00.525 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:23:00.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:23:01.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 22, 27), 43.88, 4.18, 0.0, 36.19, 24.28, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:23:01.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:22:27
2025-11-03T18:23:01.300 [DEBUG] [Thread-120474 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:23:01.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:23:01.581 [DEBUG] [Thread-120475] [transport.py] [_log()] starting thread (client mode): 0xed10610
2025-11-03T18:23:01.581 [DEBUG] [Thread-120475] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:23:01.601 [DEBUG] [Thread-120475] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:23:01.601 [INFO] [Thread-120475] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:23:01.604 [DEBUG] [Thread-120475] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:23:01.604 [DEBUG] [Thread-120475] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:23:01.604 [DEBUG] [Thread-120475] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:23:01.604 [DEBUG] [Thread-120475] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:23:01.604 [DEBUG] [Thread-120475] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:23:01.604 [DEBUG] [Thread-120475] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:23:01.604 [DEBUG] [Thread-120475] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:23:01.604 [DEBUG] [Thread-120475] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:23:01.604 [DEBUG] [Thread-120475] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:23:01.604 [DEBUG] [Thread-120475] [transport.py] [_log()] client lang: <none>
2025-11-03T18:23:01.604 [DEBUG] [Thread-120475] [transport.py] [_log()] server lang: <none>
2025-11-03T18:23:01.605 [DEBUG] [Thread-120475] [transport.py] [_log()] kex follows: False
2025-11-03T18:23:01.605 [DEBUG] [Thread-120475] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:23:01.605 [DEBUG] [Thread-120475] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:23:01.605 [DEBUG] [Thread-120475] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:23:01.605 [DEBUG] [Thread-120475] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:23:01.605 [DEBUG] [Thread-120475] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:23:01.605 [DEBUG] [Thread-120475] [transport.py] [_log()] Compression: none
2025-11-03T18:23:01.605 [DEBUG] [Thread-120475] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:23:01.620 [DEBUG] [Thread-120475] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:23:01.621 [DEBUG] [Thread-120475] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:23:01.621 [DEBUG] [Thread-120475] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:23:01.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:23:01.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:23:01.622 [DEBUG] [Thread-120475] [transport.py] [_log()] userauth is OK
2025-11-03T18:23:01.622 [DEBUG] [Thread-120475] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:23:01.622 [DEBUG] [Thread-120475] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:23:01.622 [DEBUG] [Thread-120475] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:23:01.622 [DEBUG] [Thread-120475] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:23:01.632 [INFO] [Thread-120475] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:23:01.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:23:02.281 [DEBUG] [Thread-120475] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:23:02.281 [DEBUG] [Thread-120475] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:23:02.281 [DEBUG] [Thread-120475] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:23:02.322 [DEBUG] [Thread-120475] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:23:02.322 [DEBUG] [Thread-120475] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:23:02.325 [DEBUG] [Thread-120475] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:23:02.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:23:02.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:23:02.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:23:02.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:23:02.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:23:02.343 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:23:02.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:23:02.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:23:02.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:23:02.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.682046 -999.00  +23.90  32.14      9  -10.80 1 1 2 1 1   887    0 34.21 -15.33 ----- 36.0 32.1 294.4 40.2 25.2 -32.7 25.4 -31.8 25.8 -32.4 26.0 -32.6
2025-11-03T18:23:02.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:23:02.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:23:02.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.682046
2025-11-03T18:23:02.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:23:02.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:23:02.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:23:02.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:23:02.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:23:02.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:22:27', tmtdew=43.88, humidity=4.18, cloud=0.0, wind=36.19, temperature=24.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:22:08.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:23:02.345 [DEBUG] [Thread-120475] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:23:02.418 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:23:02.430 [DEBUG] [Thread-120478] [transport.py] [_log()] starting thread (client mode): 0xed207f0
2025-11-03T18:23:02.430 [DEBUG] [Thread-120478] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:23:02.448 [DEBUG] [Thread-120478] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:23:02.448 [INFO] [Thread-120478] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:23:02.455 [DEBUG] [Thread-120478] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:23:02.455 [DEBUG] [Thread-120478] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:23:02.456 [DEBUG] [Thread-120478] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:23:02.456 [DEBUG] [Thread-120478] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:23:02.456 [DEBUG] [Thread-120478] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:23:02.456 [DEBUG] [Thread-120478] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:23:02.456 [DEBUG] [Thread-120478] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:23:02.456 [DEBUG] [Thread-120478] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:23:02.456 [DEBUG] [Thread-120478] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:23:02.456 [DEBUG] [Thread-120478] [transport.py] [_log()] client lang: <none>
2025-11-03T18:23:02.456 [DEBUG] [Thread-120478] [transport.py] [_log()] server lang: <none>
2025-11-03T18:23:02.456 [DEBUG] [Thread-120478] [transport.py] [_log()] kex follows: False
2025-11-03T18:23:02.456 [DEBUG] [Thread-120478] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:23:02.456 [DEBUG] [Thread-120478] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:23:02.456 [DEBUG] [Thread-120478] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:23:02.456 [DEBUG] [Thread-120478] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:23:02.456 [DEBUG] [Thread-120478] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:23:02.456 [DEBUG] [Thread-120478] [transport.py] [_log()] Compression: none
2025-11-03T18:23:02.456 [DEBUG] [Thread-120478] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:23:02.516 [DEBUG] [Thread-120478] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:23:02.516 [DEBUG] [Thread-120478] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:23:02.517 [DEBUG] [Thread-120478] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:23:02.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:23:02.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:23:02.573 [DEBUG] [Thread-120478] [transport.py] [_log()] userauth is OK
2025-11-03T18:23:02.573 [DEBUG] [Thread-120478] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:23:02.573 [DEBUG] [Thread-120478] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:23:02.573 [DEBUG] [Thread-120478] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:23:02.573 [DEBUG] [Thread-120478] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:23:02.587 [INFO] [Thread-120478] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:23:02.588 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:23:02.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:23:03.512 [DEBUG] [Thread-120478] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:23:03.512 [DEBUG] [Thread-120478] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:23:03.562 [DEBUG] [Thread-120478] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:23:03.562 [DEBUG] [Thread-120478] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:23:03.570 [DEBUG] [Thread-120478] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:23:03.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:23:03.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:23:03.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:23:03.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:23:03.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:23:03.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:23:03.604 [DEBUG] [Thread-120478] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:23:16.331 [DEBUG] [Thread-120480 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:23:31.227 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:23:31.229 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:23:31.372 [DEBUG] [Thread-120481 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:23:33.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:23:33.626 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:23:33.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:23:34.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 22, 27), 43.88, 4.18, 0.0, 36.19, 24.28, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:23:34.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:22:27
2025-11-03T18:23:34.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:23:34.701 [DEBUG] [Thread-120482] [transport.py] [_log()] starting thread (client mode): 0x117eaaa0
2025-11-03T18:23:34.701 [DEBUG] [Thread-120482] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:23:34.720 [DEBUG] [Thread-120482] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:23:34.720 [INFO] [Thread-120482] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:23:34.723 [DEBUG] [Thread-120482] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:23:34.723 [DEBUG] [Thread-120482] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:23:34.724 [DEBUG] [Thread-120482] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:23:34.724 [DEBUG] [Thread-120482] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:23:34.724 [DEBUG] [Thread-120482] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:23:34.724 [DEBUG] [Thread-120482] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:23:34.724 [DEBUG] [Thread-120482] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:23:34.724 [DEBUG] [Thread-120482] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:23:34.724 [DEBUG] [Thread-120482] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:23:34.724 [DEBUG] [Thread-120482] [transport.py] [_log()] client lang: <none>
2025-11-03T18:23:34.724 [DEBUG] [Thread-120482] [transport.py] [_log()] server lang: <none>
2025-11-03T18:23:34.724 [DEBUG] [Thread-120482] [transport.py] [_log()] kex follows: False
2025-11-03T18:23:34.724 [DEBUG] [Thread-120482] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:23:34.724 [DEBUG] [Thread-120482] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:23:34.724 [DEBUG] [Thread-120482] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:23:34.724 [DEBUG] [Thread-120482] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:23:34.724 [DEBUG] [Thread-120482] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:23:34.724 [DEBUG] [Thread-120482] [transport.py] [_log()] Compression: none
2025-11-03T18:23:34.724 [DEBUG] [Thread-120482] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:23:34.738 [DEBUG] [Thread-120482] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:23:34.739 [DEBUG] [Thread-120482] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:23:34.739 [DEBUG] [Thread-120482] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:23:34.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:23:34.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:23:34.740 [DEBUG] [Thread-120482] [transport.py] [_log()] userauth is OK
2025-11-03T18:23:34.740 [DEBUG] [Thread-120482] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:23:34.740 [DEBUG] [Thread-120482] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:23:34.740 [DEBUG] [Thread-120482] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:23:34.740 [DEBUG] [Thread-120482] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:23:34.749 [INFO] [Thread-120482] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:23:34.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:23:35.568 [DEBUG] [Thread-120482] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:23:35.568 [DEBUG] [Thread-120482] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:23:35.569 [DEBUG] [Thread-120482] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:23:35.608 [DEBUG] [Thread-120482] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:23:35.608 [DEBUG] [Thread-120482] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:23:35.611 [DEBUG] [Thread-120482] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:23:35.623 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:23:35.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:23:35.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:23:35.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:23:35.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:23:35.629 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:23:35.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:23:35.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:23:35.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:23:35.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.682394 -999.00  +23.90  29.44      9  -10.70 1 1 1 1 1   887    0 34.39 -9.98 ----- 30.5 29.4 296.4 42.9 25.1 -32.6 25.3 -31.8 25.8 -31.6 25.9 -32.6
2025-11-03T18:23:35.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:23:35.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:23:35.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.682394
2025-11-03T18:23:35.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:23:35.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:23:35.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:23:35.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:23:35.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:23:35.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:22:27', tmtdew=43.88, humidity=4.18, cloud=0.0, wind=36.19, temperature=24.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:22:38.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:23:35.631 [DEBUG] [Thread-120482] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:23:35.713 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:23:35.726 [DEBUG] [Thread-120485] [transport.py] [_log()] starting thread (client mode): 0xed21870
2025-11-03T18:23:35.726 [DEBUG] [Thread-120485] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:23:35.741 [DEBUG] [Thread-120485] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:23:35.741 [INFO] [Thread-120485] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:23:35.752 [DEBUG] [Thread-120485] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:23:35.752 [DEBUG] [Thread-120485] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:23:35.752 [DEBUG] [Thread-120485] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:23:35.752 [DEBUG] [Thread-120485] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:23:35.752 [DEBUG] [Thread-120485] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:23:35.752 [DEBUG] [Thread-120485] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:23:35.752 [DEBUG] [Thread-120485] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:23:35.752 [DEBUG] [Thread-120485] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:23:35.752 [DEBUG] [Thread-120485] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:23:35.752 [DEBUG] [Thread-120485] [transport.py] [_log()] client lang: <none>
2025-11-03T18:23:35.753 [DEBUG] [Thread-120485] [transport.py] [_log()] server lang: <none>
2025-11-03T18:23:35.753 [DEBUG] [Thread-120485] [transport.py] [_log()] kex follows: False
2025-11-03T18:23:35.753 [DEBUG] [Thread-120485] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:23:35.753 [DEBUG] [Thread-120485] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:23:35.753 [DEBUG] [Thread-120485] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:23:35.753 [DEBUG] [Thread-120485] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:23:35.753 [DEBUG] [Thread-120485] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:23:35.753 [DEBUG] [Thread-120485] [transport.py] [_log()] Compression: none
2025-11-03T18:23:35.753 [DEBUG] [Thread-120485] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:23:35.819 [DEBUG] [Thread-120485] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:23:35.820 [DEBUG] [Thread-120485] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:23:35.821 [DEBUG] [Thread-120485] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:23:35.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:23:35.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:23:35.878 [DEBUG] [Thread-120485] [transport.py] [_log()] userauth is OK
2025-11-03T18:23:35.879 [DEBUG] [Thread-120485] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:23:35.879 [DEBUG] [Thread-120485] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:23:35.879 [DEBUG] [Thread-120485] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:23:35.879 [DEBUG] [Thread-120485] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:23:35.897 [INFO] [Thread-120485] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:23:35.897 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:23:35.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:23:36.720 [DEBUG] [Thread-120485] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:23:36.721 [DEBUG] [Thread-120485] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:23:36.768 [DEBUG] [Thread-120485] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:23:36.768 [DEBUG] [Thread-120485] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:23:36.776 [DEBUG] [Thread-120485] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:23:36.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:23:36.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:23:36.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:23:36.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:23:36.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:23:36.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:23:36.808 [DEBUG] [Thread-120485] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:23:38.640 [DEBUG] [Thread-120487 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:23:46.416 [DEBUG] [Thread-120488 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:24:01.454 [DEBUG] [Thread-120489 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:24:06.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:24:06.801 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:24:06.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:24:07.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 23, 32), 43.93, 4.13, 0.0, 38.22, 24.03, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:24:07.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:23:32
2025-11-03T18:24:07.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:24:07.844 [DEBUG] [Thread-120490] [transport.py] [_log()] starting thread (client mode): 0xeda12d0
2025-11-03T18:24:07.844 [DEBUG] [Thread-120490] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:24:07.863 [DEBUG] [Thread-120490] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:24:07.863 [INFO] [Thread-120490] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:24:07.865 [DEBUG] [Thread-120490] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:24:07.865 [DEBUG] [Thread-120490] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:24:07.865 [DEBUG] [Thread-120490] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:24:07.865 [DEBUG] [Thread-120490] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:24:07.865 [DEBUG] [Thread-120490] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:24:07.865 [DEBUG] [Thread-120490] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:24:07.865 [DEBUG] [Thread-120490] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:24:07.865 [DEBUG] [Thread-120490] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:24:07.865 [DEBUG] [Thread-120490] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:24:07.865 [DEBUG] [Thread-120490] [transport.py] [_log()] client lang: <none>
2025-11-03T18:24:07.865 [DEBUG] [Thread-120490] [transport.py] [_log()] server lang: <none>
2025-11-03T18:24:07.865 [DEBUG] [Thread-120490] [transport.py] [_log()] kex follows: False
2025-11-03T18:24:07.865 [DEBUG] [Thread-120490] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:24:07.865 [DEBUG] [Thread-120490] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:24:07.865 [DEBUG] [Thread-120490] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:24:07.865 [DEBUG] [Thread-120490] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:24:07.865 [DEBUG] [Thread-120490] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:24:07.865 [DEBUG] [Thread-120490] [transport.py] [_log()] Compression: none
2025-11-03T18:24:07.865 [DEBUG] [Thread-120490] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:24:07.873 [DEBUG] [Thread-120490] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:24:07.874 [DEBUG] [Thread-120490] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:24:07.874 [DEBUG] [Thread-120490] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:24:07.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:24:07.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:24:07.876 [DEBUG] [Thread-120490] [transport.py] [_log()] userauth is OK
2025-11-03T18:24:07.876 [DEBUG] [Thread-120490] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:24:07.876 [DEBUG] [Thread-120490] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:24:07.876 [DEBUG] [Thread-120490] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:24:07.876 [DEBUG] [Thread-120490] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:24:07.899 [INFO] [Thread-120490] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:24:07.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:24:08.537 [DEBUG] [Thread-120490] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:24:08.537 [DEBUG] [Thread-120490] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:24:08.538 [DEBUG] [Thread-120490] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:24:08.579 [DEBUG] [Thread-120490] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:24:08.579 [DEBUG] [Thread-120490] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:24:08.581 [DEBUG] [Thread-120490] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:24:08.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:24:08.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:24:08.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:24:08.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:24:08.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:24:08.599 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:24:08.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:24:08.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:24:08.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:24:08.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.682741 -999.00  +23.90  40.82      9  -10.80 1 1 2 1 1   887    0 35.31 -6.10 ----- 39.0 40.8 299.0 44.2 25.1 -32.8 25.3 -31.7 25.7 -31.9 25.9 -32.6
2025-11-03T18:24:08.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:24:08.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:24:08.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.682741
2025-11-03T18:24:08.607 [DEBUG] [Thread-120490] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:24:08.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:24:08.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:24:08.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:24:08.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:24:08.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:24:08.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:23:32', tmtdew=43.93, humidity=4.13, cloud=0.0, wind=38.22, temperature=24.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:23:08.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:24:08.681 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:24:08.692 [DEBUG] [Thread-120493] [transport.py] [_log()] starting thread (client mode): 0x1174d1e0
2025-11-03T18:24:08.692 [DEBUG] [Thread-120493] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:24:08.707 [DEBUG] [Thread-120493] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:24:08.707 [INFO] [Thread-120493] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:24:08.715 [DEBUG] [Thread-120493] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:24:08.715 [DEBUG] [Thread-120493] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:24:08.715 [DEBUG] [Thread-120493] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:24:08.715 [DEBUG] [Thread-120493] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:24:08.715 [DEBUG] [Thread-120493] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:24:08.715 [DEBUG] [Thread-120493] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:24:08.715 [DEBUG] [Thread-120493] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:24:08.715 [DEBUG] [Thread-120493] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:24:08.715 [DEBUG] [Thread-120493] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:24:08.715 [DEBUG] [Thread-120493] [transport.py] [_log()] client lang: <none>
2025-11-03T18:24:08.715 [DEBUG] [Thread-120493] [transport.py] [_log()] server lang: <none>
2025-11-03T18:24:08.715 [DEBUG] [Thread-120493] [transport.py] [_log()] kex follows: False
2025-11-03T18:24:08.715 [DEBUG] [Thread-120493] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:24:08.715 [DEBUG] [Thread-120493] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:24:08.715 [DEBUG] [Thread-120493] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:24:08.715 [DEBUG] [Thread-120493] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:24:08.715 [DEBUG] [Thread-120493] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:24:08.715 [DEBUG] [Thread-120493] [transport.py] [_log()] Compression: none
2025-11-03T18:24:08.715 [DEBUG] [Thread-120493] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:24:08.773 [DEBUG] [Thread-120493] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:24:08.773 [DEBUG] [Thread-120493] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:24:08.773 [DEBUG] [Thread-120493] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:24:08.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:24:08.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:24:08.830 [DEBUG] [Thread-120493] [transport.py] [_log()] userauth is OK
2025-11-03T18:24:08.830 [DEBUG] [Thread-120493] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:24:08.830 [DEBUG] [Thread-120493] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:24:08.830 [DEBUG] [Thread-120493] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:24:08.830 [DEBUG] [Thread-120493] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:24:08.844 [INFO] [Thread-120493] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:24:08.844 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:24:08.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:24:09.669 [DEBUG] [Thread-120493] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:24:09.670 [DEBUG] [Thread-120493] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:24:09.718 [DEBUG] [Thread-120493] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:24:09.718 [DEBUG] [Thread-120493] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:24:09.728 [DEBUG] [Thread-120493] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:24:09.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:24:09.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:24:09.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:24:09.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:24:09.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:24:09.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:24:09.765 [DEBUG] [Thread-120493] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:24:16.495 [DEBUG] [Thread-120495 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:24:31.370 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:24:31.371 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:24:31.540 [DEBUG] [Thread-120496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:24:38.670 [DEBUG] [Thread-120497 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:24:39.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:24:39.771 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:24:39.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:24:40.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 24, 37), 43.89, 4.15, 0.0, 30.63, 24.08, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:24:40.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:24:37
2025-11-03T18:24:40.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:24:40.783 [DEBUG] [Thread-120498] [transport.py] [_log()] starting thread (client mode): 0xed239a0
2025-11-03T18:24:40.783 [DEBUG] [Thread-120498] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:24:40.804 [DEBUG] [Thread-120498] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:24:40.804 [INFO] [Thread-120498] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:24:40.807 [DEBUG] [Thread-120498] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:24:40.808 [DEBUG] [Thread-120498] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:24:40.808 [DEBUG] [Thread-120498] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:24:40.808 [DEBUG] [Thread-120498] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:24:40.808 [DEBUG] [Thread-120498] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:24:40.808 [DEBUG] [Thread-120498] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:24:40.808 [DEBUG] [Thread-120498] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:24:40.808 [DEBUG] [Thread-120498] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:24:40.808 [DEBUG] [Thread-120498] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:24:40.808 [DEBUG] [Thread-120498] [transport.py] [_log()] client lang: <none>
2025-11-03T18:24:40.808 [DEBUG] [Thread-120498] [transport.py] [_log()] server lang: <none>
2025-11-03T18:24:40.808 [DEBUG] [Thread-120498] [transport.py] [_log()] kex follows: False
2025-11-03T18:24:40.808 [DEBUG] [Thread-120498] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:24:40.808 [DEBUG] [Thread-120498] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:24:40.808 [DEBUG] [Thread-120498] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:24:40.808 [DEBUG] [Thread-120498] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:24:40.808 [DEBUG] [Thread-120498] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:24:40.808 [DEBUG] [Thread-120498] [transport.py] [_log()] Compression: none
2025-11-03T18:24:40.808 [DEBUG] [Thread-120498] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:24:40.825 [DEBUG] [Thread-120498] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:24:40.826 [DEBUG] [Thread-120498] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:24:40.826 [DEBUG] [Thread-120498] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:24:40.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:24:40.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:24:40.828 [DEBUG] [Thread-120498] [transport.py] [_log()] userauth is OK
2025-11-03T18:24:40.829 [DEBUG] [Thread-120498] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:24:40.829 [DEBUG] [Thread-120498] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:24:40.829 [DEBUG] [Thread-120498] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:24:40.829 [DEBUG] [Thread-120498] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:24:40.847 [INFO] [Thread-120498] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:24:40.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:24:41.656 [DEBUG] [Thread-120498] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:24:41.656 [DEBUG] [Thread-120498] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:24:41.657 [DEBUG] [Thread-120498] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:24:41.697 [DEBUG] [Thread-120498] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:24:41.697 [DEBUG] [Thread-120498] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:24:41.701 [DEBUG] [Thread-120498] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:24:41.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:24:41.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:24:41.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:24:41.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:24:41.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:24:41.721 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:24:41.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:24:41.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:24:41.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:24:41.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.683435 -999.00  +23.80  28.73      9  -10.90 1 1 1 1 1   887    0 34.51 3.46 ----- 36.0 28.7 296.8 41.7 25.0 -32.7 25.2 -31.7 25.6 -31.7 25.8 -32.6
2025-11-03T18:24:41.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:24:41.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:24:41.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.683435
2025-11-03T18:24:41.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:24:41.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:24:41.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:24:41.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:24:41.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:24:41.724 [DEBUG] [Thread-120498] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:24:41.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:24:37', tmtdew=43.89, humidity=4.15, cloud=0.0, wind=30.63, temperature=24.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:24:08.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:24:41.808 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:24:41.820 [DEBUG] [Thread-120501] [transport.py] [_log()] starting thread (client mode): 0xeda12d0
2025-11-03T18:24:41.820 [DEBUG] [Thread-120501] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:24:41.835 [DEBUG] [Thread-120501] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:24:41.835 [INFO] [Thread-120501] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:24:41.843 [DEBUG] [Thread-120501] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:24:41.843 [DEBUG] [Thread-120501] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:24:41.843 [DEBUG] [Thread-120501] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:24:41.843 [DEBUG] [Thread-120501] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:24:41.843 [DEBUG] [Thread-120501] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:24:41.843 [DEBUG] [Thread-120501] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:24:41.843 [DEBUG] [Thread-120501] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:24:41.844 [DEBUG] [Thread-120501] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:24:41.844 [DEBUG] [Thread-120501] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:24:41.844 [DEBUG] [Thread-120501] [transport.py] [_log()] client lang: <none>
2025-11-03T18:24:41.844 [DEBUG] [Thread-120501] [transport.py] [_log()] server lang: <none>
2025-11-03T18:24:41.844 [DEBUG] [Thread-120501] [transport.py] [_log()] kex follows: False
2025-11-03T18:24:41.844 [DEBUG] [Thread-120501] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:24:41.844 [DEBUG] [Thread-120501] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:24:41.844 [DEBUG] [Thread-120501] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:24:41.844 [DEBUG] [Thread-120501] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:24:41.844 [DEBUG] [Thread-120501] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:24:41.844 [DEBUG] [Thread-120501] [transport.py] [_log()] Compression: none
2025-11-03T18:24:41.844 [DEBUG] [Thread-120501] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:24:41.903 [DEBUG] [Thread-120501] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:24:41.904 [DEBUG] [Thread-120501] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:24:41.905 [DEBUG] [Thread-120501] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:24:41.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:24:41.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:24:41.960 [DEBUG] [Thread-120501] [transport.py] [_log()] userauth is OK
2025-11-03T18:24:41.960 [DEBUG] [Thread-120501] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:24:41.960 [DEBUG] [Thread-120501] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:24:41.960 [DEBUG] [Thread-120501] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:24:41.960 [DEBUG] [Thread-120501] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:24:41.979 [INFO] [Thread-120501] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:24:41.979 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:24:41.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:24:42.792 [DEBUG] [Thread-120501] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:24:42.792 [DEBUG] [Thread-120501] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:24:42.840 [DEBUG] [Thread-120501] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:24:42.840 [DEBUG] [Thread-120501] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:24:42.850 [DEBUG] [Thread-120501] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:24:42.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:24:42.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:24:42.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:24:42.878 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:24:42.878 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:24:42.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:24:42.886 [DEBUG] [Thread-120501] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:24:46.567 [DEBUG] [Thread-120503 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:25:01.629 [DEBUG] [Thread-120504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:25:12.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:25:12.909 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:25:12.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:25:13.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 25, 9), 43.75, 4.2, 0.0, 27.44, 24.05, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:25:13.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:25:09
2025-11-03T18:25:13.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:25:14.003 [DEBUG] [Thread-120505] [transport.py] [_log()] starting thread (client mode): 0x1179b1c0
2025-11-03T18:25:14.003 [DEBUG] [Thread-120505] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:25:14.023 [DEBUG] [Thread-120505] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:25:14.023 [INFO] [Thread-120505] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:25:14.026 [DEBUG] [Thread-120505] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:25:14.026 [DEBUG] [Thread-120505] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:25:14.026 [DEBUG] [Thread-120505] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:25:14.027 [DEBUG] [Thread-120505] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:25:14.027 [DEBUG] [Thread-120505] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:25:14.027 [DEBUG] [Thread-120505] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:25:14.027 [DEBUG] [Thread-120505] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:25:14.027 [DEBUG] [Thread-120505] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:25:14.027 [DEBUG] [Thread-120505] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:25:14.027 [DEBUG] [Thread-120505] [transport.py] [_log()] client lang: <none>
2025-11-03T18:25:14.027 [DEBUG] [Thread-120505] [transport.py] [_log()] server lang: <none>
2025-11-03T18:25:14.027 [DEBUG] [Thread-120505] [transport.py] [_log()] kex follows: False
2025-11-03T18:25:14.027 [DEBUG] [Thread-120505] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:25:14.027 [DEBUG] [Thread-120505] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:25:14.027 [DEBUG] [Thread-120505] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:25:14.027 [DEBUG] [Thread-120505] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:25:14.027 [DEBUG] [Thread-120505] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:25:14.027 [DEBUG] [Thread-120505] [transport.py] [_log()] Compression: none
2025-11-03T18:25:14.027 [DEBUG] [Thread-120505] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:25:14.041 [DEBUG] [Thread-120505] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:25:14.042 [DEBUG] [Thread-120505] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:25:14.042 [DEBUG] [Thread-120505] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:25:14.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:25:14.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:25:14.084 [DEBUG] [Thread-120505] [transport.py] [_log()] userauth is OK
2025-11-03T18:25:14.084 [DEBUG] [Thread-120505] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:25:14.084 [DEBUG] [Thread-120505] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:25:14.084 [DEBUG] [Thread-120505] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:25:14.084 [DEBUG] [Thread-120505] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:25:14.100 [INFO] [Thread-120505] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:25:14.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:25:16.599 [DEBUG] [Thread-120505] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:25:16.608 [DEBUG] [Thread-120505] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:25:16.608 [DEBUG] [Thread-120505] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:25:16.639 [DEBUG] [Thread-120505] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:25:16.639 [DEBUG] [Thread-120505] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:25:16.642 [DEBUG] [Thread-120505] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:25:16.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:25:16.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:25:16.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:25:16.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:25:16.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:25:16.657 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:25:16.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:25:16.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:25:16.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:25:16.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.683782 -999.00  +23.70  28.03      9  -10.80 1 1 1 1 1   887    0 35.02 6.42 ----- 32.6 28.0 290.2 42.1 25.0 -32.7 25.2 -31.8 25.5 -31.6 25.7 -32.5
2025-11-03T18:25:16.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:25:16.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:25:16.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.683782
2025-11-03T18:25:16.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:25:16.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:25:16.661 [DEBUG] [Thread-120505] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:25:16.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:25:16.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:25:16.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:25:16.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:25:09', tmtdew=43.75, humidity=4.2, cloud=0.0, wind=27.44, temperature=24.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:24:38.765', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:25:16.661 [DEBUG] [Thread-120508 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:25:16.737 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:25:16.749 [DEBUG] [Thread-120509] [transport.py] [_log()] starting thread (client mode): 0x1174e080
2025-11-03T18:25:16.749 [DEBUG] [Thread-120509] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:25:16.764 [DEBUG] [Thread-120509] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:25:16.764 [INFO] [Thread-120509] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:25:16.771 [DEBUG] [Thread-120509] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:25:16.771 [DEBUG] [Thread-120509] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:25:16.771 [DEBUG] [Thread-120509] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:25:16.771 [DEBUG] [Thread-120509] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:25:16.771 [DEBUG] [Thread-120509] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:25:16.771 [DEBUG] [Thread-120509] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:25:16.771 [DEBUG] [Thread-120509] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:25:16.772 [DEBUG] [Thread-120509] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:25:16.772 [DEBUG] [Thread-120509] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:25:16.772 [DEBUG] [Thread-120509] [transport.py] [_log()] client lang: <none>
2025-11-03T18:25:16.772 [DEBUG] [Thread-120509] [transport.py] [_log()] server lang: <none>
2025-11-03T18:25:16.772 [DEBUG] [Thread-120509] [transport.py] [_log()] kex follows: False
2025-11-03T18:25:16.772 [DEBUG] [Thread-120509] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:25:16.772 [DEBUG] [Thread-120509] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:25:16.772 [DEBUG] [Thread-120509] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:25:16.772 [DEBUG] [Thread-120509] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:25:16.772 [DEBUG] [Thread-120509] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:25:16.772 [DEBUG] [Thread-120509] [transport.py] [_log()] Compression: none
2025-11-03T18:25:16.772 [DEBUG] [Thread-120509] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:25:16.830 [DEBUG] [Thread-120509] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:25:16.831 [DEBUG] [Thread-120509] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:25:16.831 [DEBUG] [Thread-120509] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:25:16.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:25:16.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:25:16.887 [DEBUG] [Thread-120509] [transport.py] [_log()] userauth is OK
2025-11-03T18:25:16.887 [DEBUG] [Thread-120509] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:25:16.887 [DEBUG] [Thread-120509] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:25:16.887 [DEBUG] [Thread-120509] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:25:16.887 [DEBUG] [Thread-120509] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:25:16.901 [INFO] [Thread-120509] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:25:16.902 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:25:16.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:25:17.737 [DEBUG] [Thread-120509] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:25:17.737 [DEBUG] [Thread-120509] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:25:17.785 [DEBUG] [Thread-120509] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:25:17.786 [DEBUG] [Thread-120509] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:25:17.795 [DEBUG] [Thread-120509] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:25:17.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:25:17.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:25:17.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:25:17.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:25:17.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:25:17.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:25:17.832 [DEBUG] [Thread-120509] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:25:31.523 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:25:31.526 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:25:31.716 [DEBUG] [Thread-120511 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:25:38.811 [DEBUG] [Thread-120512 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:25:46.752 [DEBUG] [Thread-120513 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:25:47.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:25:47.855 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:25:47.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:25:48.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 25, 41), 43.88, 4.15, 0.0, 30.31, 23.95, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:25:48.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:25:41
2025-11-03T18:25:48.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:25:48.887 [DEBUG] [Thread-120514] [transport.py] [_log()] starting thread (client mode): 0x117eaa70
2025-11-03T18:25:48.887 [DEBUG] [Thread-120514] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:25:48.906 [DEBUG] [Thread-120514] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:25:48.906 [INFO] [Thread-120514] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:25:48.910 [DEBUG] [Thread-120514] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:25:48.910 [DEBUG] [Thread-120514] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:25:48.910 [DEBUG] [Thread-120514] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:25:48.910 [DEBUG] [Thread-120514] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:25:48.910 [DEBUG] [Thread-120514] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:25:48.910 [DEBUG] [Thread-120514] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:25:48.910 [DEBUG] [Thread-120514] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:25:48.910 [DEBUG] [Thread-120514] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:25:48.910 [DEBUG] [Thread-120514] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:25:48.910 [DEBUG] [Thread-120514] [transport.py] [_log()] client lang: <none>
2025-11-03T18:25:48.910 [DEBUG] [Thread-120514] [transport.py] [_log()] server lang: <none>
2025-11-03T18:25:48.910 [DEBUG] [Thread-120514] [transport.py] [_log()] kex follows: False
2025-11-03T18:25:48.910 [DEBUG] [Thread-120514] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:25:48.910 [DEBUG] [Thread-120514] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:25:48.910 [DEBUG] [Thread-120514] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:25:48.910 [DEBUG] [Thread-120514] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:25:48.910 [DEBUG] [Thread-120514] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:25:48.910 [DEBUG] [Thread-120514] [transport.py] [_log()] Compression: none
2025-11-03T18:25:48.910 [DEBUG] [Thread-120514] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:25:48.927 [DEBUG] [Thread-120514] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:25:48.928 [DEBUG] [Thread-120514] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:25:48.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:25:48.929 [DEBUG] [Thread-120514] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:25:48.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:25:48.931 [DEBUG] [Thread-120514] [transport.py] [_log()] userauth is OK
2025-11-03T18:25:48.931 [DEBUG] [Thread-120514] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:25:48.931 [DEBUG] [Thread-120514] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:25:48.931 [DEBUG] [Thread-120514] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:25:48.931 [DEBUG] [Thread-120514] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:25:48.944 [INFO] [Thread-120514] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:25:48.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:25:49.560 [DEBUG] [Thread-120514] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:25:49.560 [DEBUG] [Thread-120514] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:25:49.560 [DEBUG] [Thread-120514] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:25:49.601 [DEBUG] [Thread-120514] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:25:49.601 [DEBUG] [Thread-120514] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:25:49.603 [DEBUG] [Thread-120514] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:25:49.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:25:49.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:25:49.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:25:49.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:25:49.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:25:49.614 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:25:49.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:25:49.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:25:49.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:25:49.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.684129 -999.00  +23.70  25.06      9  -10.80 1 1 1 1 1   887    0 34.82 8.87 ----- 27.4 25.1 297.0 34.8 24.9 -32.4 25.2 -31.7 25.5 -31.4 25.7 -32.5
2025-11-03T18:25:49.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:25:49.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:25:49.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.684129
2025-11-03T18:25:49.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:25:49.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:25:49.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:25:49.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:25:49.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:25:49.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:25:41', tmtdew=43.88, humidity=4.15, cloud=0.0, wind=30.31, temperature=23.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:25:08.746', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:25:49.623 [DEBUG] [Thread-120514] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:25:49.696 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:25:49.707 [DEBUG] [Thread-120517] [transport.py] [_log()] starting thread (client mode): 0xed22bf0
2025-11-03T18:25:49.708 [DEBUG] [Thread-120517] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:25:49.723 [DEBUG] [Thread-120517] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:25:49.723 [INFO] [Thread-120517] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:25:49.731 [DEBUG] [Thread-120517] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:25:49.731 [DEBUG] [Thread-120517] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:25:49.731 [DEBUG] [Thread-120517] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:25:49.731 [DEBUG] [Thread-120517] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:25:49.731 [DEBUG] [Thread-120517] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:25:49.731 [DEBUG] [Thread-120517] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:25:49.731 [DEBUG] [Thread-120517] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:25:49.731 [DEBUG] [Thread-120517] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:25:49.732 [DEBUG] [Thread-120517] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:25:49.732 [DEBUG] [Thread-120517] [transport.py] [_log()] client lang: <none>
2025-11-03T18:25:49.732 [DEBUG] [Thread-120517] [transport.py] [_log()] server lang: <none>
2025-11-03T18:25:49.732 [DEBUG] [Thread-120517] [transport.py] [_log()] kex follows: False
2025-11-03T18:25:49.732 [DEBUG] [Thread-120517] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:25:49.732 [DEBUG] [Thread-120517] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:25:49.732 [DEBUG] [Thread-120517] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:25:49.732 [DEBUG] [Thread-120517] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:25:49.732 [DEBUG] [Thread-120517] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:25:49.732 [DEBUG] [Thread-120517] [transport.py] [_log()] Compression: none
2025-11-03T18:25:49.732 [DEBUG] [Thread-120517] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:25:49.790 [DEBUG] [Thread-120517] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:25:49.791 [DEBUG] [Thread-120517] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:25:49.791 [DEBUG] [Thread-120517] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:25:49.791 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:25:49.791 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:25:49.851 [DEBUG] [Thread-120517] [transport.py] [_log()] userauth is OK
2025-11-03T18:25:49.851 [DEBUG] [Thread-120517] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:25:49.851 [DEBUG] [Thread-120517] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:25:49.851 [DEBUG] [Thread-120517] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:25:49.851 [DEBUG] [Thread-120517] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:25:49.865 [INFO] [Thread-120517] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:25:49.865 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:25:49.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:25:50.739 [DEBUG] [Thread-120517] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:25:50.739 [DEBUG] [Thread-120517] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:25:50.787 [DEBUG] [Thread-120517] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:25:50.787 [DEBUG] [Thread-120517] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:25:50.795 [DEBUG] [Thread-120517] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:25:50.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:25:50.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:25:50.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:25:50.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:25:50.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:25:50.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:25:50.827 [DEBUG] [Thread-120517] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:26:01.784 [DEBUG] [Thread-120519 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:26:16.833 [DEBUG] [Thread-120520 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:26:20.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:26:20.850 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:26:20.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:26:21.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 26, 14), 43.93, 4.13, 0.0, 33.4, 23.98, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:26:21.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:26:14
2025-11-03T18:26:21.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:26:21.929 [DEBUG] [Thread-120521] [transport.py] [_log()] starting thread (client mode): 0xed23550
2025-11-03T18:26:21.929 [DEBUG] [Thread-120521] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:26:21.942 [DEBUG] [Thread-120521] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:26:21.942 [INFO] [Thread-120521] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:26:21.942 [DEBUG] [Thread-120521] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:26:21.943 [DEBUG] [Thread-120521] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:26:21.943 [DEBUG] [Thread-120521] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:26:21.943 [DEBUG] [Thread-120521] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:26:21.943 [DEBUG] [Thread-120521] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:26:21.943 [DEBUG] [Thread-120521] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:26:21.943 [DEBUG] [Thread-120521] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:26:21.943 [DEBUG] [Thread-120521] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:26:21.943 [DEBUG] [Thread-120521] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:26:21.943 [DEBUG] [Thread-120521] [transport.py] [_log()] client lang: <none>
2025-11-03T18:26:21.943 [DEBUG] [Thread-120521] [transport.py] [_log()] server lang: <none>
2025-11-03T18:26:21.943 [DEBUG] [Thread-120521] [transport.py] [_log()] kex follows: False
2025-11-03T18:26:21.943 [DEBUG] [Thread-120521] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:26:21.943 [DEBUG] [Thread-120521] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:26:21.943 [DEBUG] [Thread-120521] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:26:21.943 [DEBUG] [Thread-120521] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:26:21.943 [DEBUG] [Thread-120521] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:26:21.943 [DEBUG] [Thread-120521] [transport.py] [_log()] Compression: none
2025-11-03T18:26:21.943 [DEBUG] [Thread-120521] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:26:21.951 [DEBUG] [Thread-120521] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:26:21.952 [DEBUG] [Thread-120521] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:26:21.952 [DEBUG] [Thread-120521] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:26:21.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:26:21.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:26:21.953 [DEBUG] [Thread-120521] [transport.py] [_log()] userauth is OK
2025-11-03T18:26:21.953 [DEBUG] [Thread-120521] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:26:21.962 [DEBUG] [Thread-120521] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:26:21.962 [DEBUG] [Thread-120521] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:26:21.962 [DEBUG] [Thread-120521] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:26:21.982 [INFO] [Thread-120521] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:26:21.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:26:22.636 [DEBUG] [Thread-120521] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:26:22.637 [DEBUG] [Thread-120521] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:26:22.637 [DEBUG] [Thread-120521] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:26:22.677 [DEBUG] [Thread-120521] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:26:22.677 [DEBUG] [Thread-120521] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:26:22.681 [DEBUG] [Thread-120521] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:26:22.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:26:22.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:26:22.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:26:22.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:26:22.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:26:22.707 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:26:22.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:26:22.708 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:26:22.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:26:22.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.684477 -999.00  +23.70  28.17      9  -10.90 1 1 1 1 1   887    0 35.44 10.68 ----- 31.1 28.2 311.8 34.1 24.9 -32.3 25.1 -31.6 25.5 -31.6 25.7 -32.4
2025-11-03T18:26:22.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:26:22.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:26:22.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.684477
2025-11-03T18:26:22.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:26:22.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:26:22.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:26:22.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:26:22.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:26:22.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:26:14', tmtdew=43.93, humidity=4.13, cloud=0.0, wind=33.4, temperature=23.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:25:38.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:26:22.711 [DEBUG] [Thread-120521] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:26:22.793 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:26:22.805 [DEBUG] [Thread-120524] [transport.py] [_log()] starting thread (client mode): 0x1179b6a0
2025-11-03T18:26:22.806 [DEBUG] [Thread-120524] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:26:22.821 [DEBUG] [Thread-120524] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:26:22.821 [INFO] [Thread-120524] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:26:22.829 [DEBUG] [Thread-120524] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:26:22.829 [DEBUG] [Thread-120524] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:26:22.829 [DEBUG] [Thread-120524] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:26:22.829 [DEBUG] [Thread-120524] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:26:22.829 [DEBUG] [Thread-120524] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:26:22.829 [DEBUG] [Thread-120524] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:26:22.829 [DEBUG] [Thread-120524] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:26:22.829 [DEBUG] [Thread-120524] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:26:22.829 [DEBUG] [Thread-120524] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:26:22.829 [DEBUG] [Thread-120524] [transport.py] [_log()] client lang: <none>
2025-11-03T18:26:22.829 [DEBUG] [Thread-120524] [transport.py] [_log()] server lang: <none>
2025-11-03T18:26:22.829 [DEBUG] [Thread-120524] [transport.py] [_log()] kex follows: False
2025-11-03T18:26:22.829 [DEBUG] [Thread-120524] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:26:22.829 [DEBUG] [Thread-120524] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:26:22.830 [DEBUG] [Thread-120524] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:26:22.830 [DEBUG] [Thread-120524] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:26:22.830 [DEBUG] [Thread-120524] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:26:22.830 [DEBUG] [Thread-120524] [transport.py] [_log()] Compression: none
2025-11-03T18:26:22.830 [DEBUG] [Thread-120524] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:26:22.889 [DEBUG] [Thread-120524] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:26:22.889 [DEBUG] [Thread-120524] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:26:22.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:26:22.891 [DEBUG] [Thread-120524] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:26:22.892 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:26:22.944 [DEBUG] [Thread-120524] [transport.py] [_log()] userauth is OK
2025-11-03T18:26:22.945 [DEBUG] [Thread-120524] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:26:22.945 [DEBUG] [Thread-120524] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:26:22.945 [DEBUG] [Thread-120524] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:26:22.945 [DEBUG] [Thread-120524] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:26:22.964 [INFO] [Thread-120524] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:26:22.973 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:26:22.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:26:23.808 [DEBUG] [Thread-120524] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:26:23.808 [DEBUG] [Thread-120524] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:26:23.856 [DEBUG] [Thread-120524] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:26:23.856 [DEBUG] [Thread-120524] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:26:23.864 [DEBUG] [Thread-120524] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:26:23.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:26:23.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:26:23.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:26:23.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:26:23.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:26:23.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:26:23.897 [DEBUG] [Thread-120524] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:26:31.669 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:26:31.669 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:26:31.863 [DEBUG] [Thread-120526 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:26:38.912 [DEBUG] [Thread-120527 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:26:46.900 [DEBUG] [Thread-120528 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:26:53.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:26:53.894 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:26:53.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:26:54.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 26, 46), 44.1, 4.09, 0.0, 34.32, 23.97, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:26:54.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:26:46
2025-11-03T18:26:54.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:26:54.954 [DEBUG] [Thread-120529] [transport.py] [_log()] starting thread (client mode): 0xed22ef0
2025-11-03T18:26:54.954 [DEBUG] [Thread-120529] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:26:54.974 [DEBUG] [Thread-120529] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:26:54.974 [INFO] [Thread-120529] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:26:54.977 [DEBUG] [Thread-120529] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:26:54.977 [DEBUG] [Thread-120529] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:26:54.978 [DEBUG] [Thread-120529] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:26:54.978 [DEBUG] [Thread-120529] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:26:54.978 [DEBUG] [Thread-120529] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:26:54.978 [DEBUG] [Thread-120529] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:26:54.978 [DEBUG] [Thread-120529] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:26:54.978 [DEBUG] [Thread-120529] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:26:54.978 [DEBUG] [Thread-120529] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:26:54.978 [DEBUG] [Thread-120529] [transport.py] [_log()] client lang: <none>
2025-11-03T18:26:54.978 [DEBUG] [Thread-120529] [transport.py] [_log()] server lang: <none>
2025-11-03T18:26:54.978 [DEBUG] [Thread-120529] [transport.py] [_log()] kex follows: False
2025-11-03T18:26:54.978 [DEBUG] [Thread-120529] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:26:54.978 [DEBUG] [Thread-120529] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:26:54.978 [DEBUG] [Thread-120529] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:26:54.979 [DEBUG] [Thread-120529] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:26:54.979 [DEBUG] [Thread-120529] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:26:54.979 [DEBUG] [Thread-120529] [transport.py] [_log()] Compression: none
2025-11-03T18:26:54.979 [DEBUG] [Thread-120529] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:26:54.998 [DEBUG] [Thread-120529] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:26:54.999 [DEBUG] [Thread-120529] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:26:54.999 [DEBUG] [Thread-120529] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:26:55.000 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:26:55.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:26:55.002 [DEBUG] [Thread-120529] [transport.py] [_log()] userauth is OK
2025-11-03T18:26:55.002 [DEBUG] [Thread-120529] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:26:55.002 [DEBUG] [Thread-120529] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:26:55.002 [DEBUG] [Thread-120529] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:26:55.002 [DEBUG] [Thread-120529] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:26:55.020 [INFO] [Thread-120529] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:26:55.021 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:26:55.672 [DEBUG] [Thread-120529] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:26:55.672 [DEBUG] [Thread-120529] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:26:55.673 [DEBUG] [Thread-120529] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:26:55.713 [DEBUG] [Thread-120529] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:26:55.713 [DEBUG] [Thread-120529] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:26:55.716 [DEBUG] [Thread-120529] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:26:55.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:26:55.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:26:55.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:26:55.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:26:55.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:26:55.734 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:26:55.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:26:55.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:26:55.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:26:55.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.684824 -999.00  +23.80  35.52      9  -10.90 1 1 2 1 1   887    0 34.79 11.74 ----- 33.5 35.5 297.2 39.0 24.9 -32.6 25.1 -31.4 25.4 -31.7 25.6 -32.5
2025-11-03T18:26:55.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:26:55.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:26:55.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.684824
2025-11-03T18:26:55.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:26:55.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:26:55.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:26:55.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:26:55.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:26:55.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:26:46', tmtdew=44.1, humidity=4.09, cloud=0.0, wind=34.32, temperature=23.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:26:08.794', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:26:55.736 [DEBUG] [Thread-120529] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:26:55.807 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:26:55.819 [DEBUG] [Thread-120532] [transport.py] [_log()] starting thread (client mode): 0xed2cb20
2025-11-03T18:26:55.819 [DEBUG] [Thread-120532] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:26:55.834 [DEBUG] [Thread-120532] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:26:55.834 [INFO] [Thread-120532] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:26:55.841 [DEBUG] [Thread-120532] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:26:55.841 [DEBUG] [Thread-120532] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:26:55.841 [DEBUG] [Thread-120532] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:26:55.841 [DEBUG] [Thread-120532] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:26:55.841 [DEBUG] [Thread-120532] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:26:55.841 [DEBUG] [Thread-120532] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:26:55.841 [DEBUG] [Thread-120532] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:26:55.841 [DEBUG] [Thread-120532] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:26:55.841 [DEBUG] [Thread-120532] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:26:55.841 [DEBUG] [Thread-120532] [transport.py] [_log()] client lang: <none>
2025-11-03T18:26:55.841 [DEBUG] [Thread-120532] [transport.py] [_log()] server lang: <none>
2025-11-03T18:26:55.841 [DEBUG] [Thread-120532] [transport.py] [_log()] kex follows: False
2025-11-03T18:26:55.841 [DEBUG] [Thread-120532] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:26:55.841 [DEBUG] [Thread-120532] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:26:55.841 [DEBUG] [Thread-120532] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:26:55.841 [DEBUG] [Thread-120532] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:26:55.841 [DEBUG] [Thread-120532] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:26:55.841 [DEBUG] [Thread-120532] [transport.py] [_log()] Compression: none
2025-11-03T18:26:55.841 [DEBUG] [Thread-120532] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:26:55.899 [DEBUG] [Thread-120532] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:26:55.899 [DEBUG] [Thread-120532] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:26:55.899 [DEBUG] [Thread-120532] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:26:55.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:26:55.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:26:55.956 [DEBUG] [Thread-120532] [transport.py] [_log()] userauth is OK
2025-11-03T18:26:55.956 [DEBUG] [Thread-120532] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:26:55.956 [DEBUG] [Thread-120532] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:26:55.956 [DEBUG] [Thread-120532] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:26:55.956 [DEBUG] [Thread-120532] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:26:55.970 [INFO] [Thread-120532] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:26:55.970 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:26:55.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:26:56.818 [DEBUG] [Thread-120532] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:26:56.818 [DEBUG] [Thread-120532] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:26:56.865 [DEBUG] [Thread-120532] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:26:56.865 [DEBUG] [Thread-120532] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:26:56.874 [DEBUG] [Thread-120532] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:26:56.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:26:56.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:26:56.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:26:56.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:26:56.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:26:56.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:26:56.906 [DEBUG] [Thread-120532] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:27:01.929 [DEBUG] [Thread-120534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:27:16.982 [DEBUG] [Thread-120535 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:27:26.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:27:26.929 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:27:26.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:27:27.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 27, 18), 43.97, 4.13, 0.0, 33.33, 24.0, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:27:27.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:27:18
2025-11-03T18:27:27.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:27:27.950 [DEBUG] [Thread-120536] [transport.py] [_log()] starting thread (client mode): 0xed2e680
2025-11-03T18:27:27.950 [DEBUG] [Thread-120536] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:27:27.970 [DEBUG] [Thread-120536] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:27:27.971 [INFO] [Thread-120536] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:27:27.973 [DEBUG] [Thread-120536] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:27:27.973 [DEBUG] [Thread-120536] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:27:27.973 [DEBUG] [Thread-120536] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:27:27.973 [DEBUG] [Thread-120536] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:27:27.973 [DEBUG] [Thread-120536] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:27:27.973 [DEBUG] [Thread-120536] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:27:27.973 [DEBUG] [Thread-120536] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:27:27.973 [DEBUG] [Thread-120536] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:27:27.974 [DEBUG] [Thread-120536] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:27:27.974 [DEBUG] [Thread-120536] [transport.py] [_log()] client lang: <none>
2025-11-03T18:27:27.974 [DEBUG] [Thread-120536] [transport.py] [_log()] server lang: <none>
2025-11-03T18:27:27.974 [DEBUG] [Thread-120536] [transport.py] [_log()] kex follows: False
2025-11-03T18:27:27.974 [DEBUG] [Thread-120536] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:27:27.974 [DEBUG] [Thread-120536] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:27:27.974 [DEBUG] [Thread-120536] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:27:27.974 [DEBUG] [Thread-120536] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:27:27.983 [DEBUG] [Thread-120536] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:27:27.983 [DEBUG] [Thread-120536] [transport.py] [_log()] Compression: none
2025-11-03T18:27:27.983 [DEBUG] [Thread-120536] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:27:27.994 [DEBUG] [Thread-120536] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:27:27.994 [DEBUG] [Thread-120536] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:27:27.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:27:27.995 [DEBUG] [Thread-120536] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:27:27.996 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:27:27.998 [DEBUG] [Thread-120536] [transport.py] [_log()] userauth is OK
2025-11-03T18:27:27.998 [DEBUG] [Thread-120536] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:27:27.998 [DEBUG] [Thread-120536] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:27:27.998 [DEBUG] [Thread-120536] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:27:27.998 [DEBUG] [Thread-120536] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:27:28.017 [INFO] [Thread-120536] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:27:28.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:27:28.611 [DEBUG] [Thread-120536] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:27:28.611 [DEBUG] [Thread-120536] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:27:28.612 [DEBUG] [Thread-120536] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:27:28.651 [DEBUG] [Thread-120536] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:27:28.652 [DEBUG] [Thread-120536] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:27:28.655 [DEBUG] [Thread-120536] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:27:28.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:27:28.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:27:28.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:27:28.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:27:28.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:27:28.681 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:27:28.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:27:28.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:27:28.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:27:28.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.685171 -999.00  +23.70  38.04      9  -11.00 1 1 2 1 1   887    0 34.99 13.39 ----- 35.2 38.0 298.2 42.3 24.8 -32.6 25.0 -31.6 25.4 -31.4 -999.0 -999.0
2025-11-03T18:27:28.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:27:28.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:27:28.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.685171
2025-11-03T18:27:28.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:27:28.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:27:28.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:27:28.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:27:28.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:27:28.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:27:18', tmtdew=43.97, humidity=4.13, cloud=0.0, wind=33.33, temperature=24.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:26:38.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:27:28.682 [DEBUG] [Thread-120536] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:27:28.754 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:27:28.766 [DEBUG] [Thread-120539] [transport.py] [_log()] starting thread (client mode): 0xed23970
2025-11-03T18:27:28.766 [DEBUG] [Thread-120539] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:27:28.783 [DEBUG] [Thread-120539] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:27:28.783 [INFO] [Thread-120539] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:27:28.790 [DEBUG] [Thread-120539] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:27:28.790 [DEBUG] [Thread-120539] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:27:28.790 [DEBUG] [Thread-120539] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:27:28.790 [DEBUG] [Thread-120539] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:27:28.790 [DEBUG] [Thread-120539] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:27:28.790 [DEBUG] [Thread-120539] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:27:28.790 [DEBUG] [Thread-120539] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:27:28.790 [DEBUG] [Thread-120539] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:27:28.790 [DEBUG] [Thread-120539] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:27:28.790 [DEBUG] [Thread-120539] [transport.py] [_log()] client lang: <none>
2025-11-03T18:27:28.790 [DEBUG] [Thread-120539] [transport.py] [_log()] server lang: <none>
2025-11-03T18:27:28.790 [DEBUG] [Thread-120539] [transport.py] [_log()] kex follows: False
2025-11-03T18:27:28.791 [DEBUG] [Thread-120539] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:27:28.791 [DEBUG] [Thread-120539] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:27:28.791 [DEBUG] [Thread-120539] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:27:28.791 [DEBUG] [Thread-120539] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:27:28.791 [DEBUG] [Thread-120539] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:27:28.791 [DEBUG] [Thread-120539] [transport.py] [_log()] Compression: none
2025-11-03T18:27:28.791 [DEBUG] [Thread-120539] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:27:28.848 [DEBUG] [Thread-120539] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:27:28.848 [DEBUG] [Thread-120539] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:27:28.848 [DEBUG] [Thread-120539] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:27:28.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:27:28.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:27:28.905 [DEBUG] [Thread-120539] [transport.py] [_log()] userauth is OK
2025-11-03T18:27:28.905 [DEBUG] [Thread-120539] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:27:28.905 [DEBUG] [Thread-120539] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:27:28.905 [DEBUG] [Thread-120539] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:27:28.905 [DEBUG] [Thread-120539] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:27:28.920 [INFO] [Thread-120539] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:27:28.921 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:27:28.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:27:29.786 [DEBUG] [Thread-120539] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:27:29.787 [DEBUG] [Thread-120539] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:27:29.835 [DEBUG] [Thread-120539] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:27:29.835 [DEBUG] [Thread-120539] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:27:29.846 [DEBUG] [Thread-120539] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:27:29.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:27:29.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:27:29.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:27:29.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:27:29.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:27:29.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:27:29.884 [DEBUG] [Thread-120539] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:27:31.811 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:27:31.813 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:27:32.029 [DEBUG] [Thread-120541 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:27:39.048 [DEBUG] [Thread-120542 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:27:47.080 [DEBUG] [Thread-120543 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:27:59.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:27:59.912 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:27:59.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:28:00.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 27, 51), 43.98, 4.15, 0.0, 32.01, 23.95, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:28:00.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:27:51
2025-11-03T18:28:00.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:28:00.931 [DEBUG] [Thread-120544] [transport.py] [_log()] starting thread (client mode): 0xed22140
2025-11-03T18:28:00.931 [DEBUG] [Thread-120544] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:28:00.951 [DEBUG] [Thread-120544] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:28:00.952 [INFO] [Thread-120544] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:28:00.954 [DEBUG] [Thread-120544] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:28:00.954 [DEBUG] [Thread-120544] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:28:00.954 [DEBUG] [Thread-120544] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:28:00.955 [DEBUG] [Thread-120544] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:28:00.955 [DEBUG] [Thread-120544] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:28:00.955 [DEBUG] [Thread-120544] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:28:00.955 [DEBUG] [Thread-120544] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:28:00.955 [DEBUG] [Thread-120544] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:28:00.955 [DEBUG] [Thread-120544] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:28:00.955 [DEBUG] [Thread-120544] [transport.py] [_log()] client lang: <none>
2025-11-03T18:28:00.955 [DEBUG] [Thread-120544] [transport.py] [_log()] server lang: <none>
2025-11-03T18:28:00.955 [DEBUG] [Thread-120544] [transport.py] [_log()] kex follows: False
2025-11-03T18:28:00.955 [DEBUG] [Thread-120544] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:28:00.955 [DEBUG] [Thread-120544] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:28:00.955 [DEBUG] [Thread-120544] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:28:00.955 [DEBUG] [Thread-120544] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:28:00.955 [DEBUG] [Thread-120544] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:28:00.955 [DEBUG] [Thread-120544] [transport.py] [_log()] Compression: none
2025-11-03T18:28:00.955 [DEBUG] [Thread-120544] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:28:00.974 [DEBUG] [Thread-120544] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:28:00.975 [DEBUG] [Thread-120544] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:28:00.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:28:00.976 [DEBUG] [Thread-120544] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:28:00.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:28:00.978 [DEBUG] [Thread-120544] [transport.py] [_log()] userauth is OK
2025-11-03T18:28:00.978 [DEBUG] [Thread-120544] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:28:00.978 [DEBUG] [Thread-120544] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:28:00.978 [DEBUG] [Thread-120544] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:28:00.979 [DEBUG] [Thread-120544] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:28:01.003 [INFO] [Thread-120544] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:28:01.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:28:01.623 [DEBUG] [Thread-120544] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:28:01.623 [DEBUG] [Thread-120544] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:28:01.623 [DEBUG] [Thread-120544] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:28:01.664 [DEBUG] [Thread-120544] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:28:01.665 [DEBUG] [Thread-120544] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:28:01.667 [DEBUG] [Thread-120544] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:28:01.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:28:01.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:28:01.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:28:01.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:28:01.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:28:01.690 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:28:01.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:28:01.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:28:01.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:28:01.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.685519 -999.00  +23.70  27.38      9  -11.00 1 1 1 1 1   887    0 34.83 15.59 ----- 25.0 27.4 294.8 36.3 24.8 -32.4 25.0 -31.6 25.4 -31.5 25.6 -32.2
2025-11-03T18:28:01.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:28:01.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:28:01.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.685519
2025-11-03T18:28:01.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:28:01.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:28:01.692 [DEBUG] [Thread-120544] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:28:01.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:28:01.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:28:01.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:28:01.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:27:51', tmtdew=43.98, humidity=4.15, cloud=0.0, wind=32.01, temperature=23.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:27:08.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:28:01.773 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:28:01.785 [DEBUG] [Thread-120547] [transport.py] [_log()] starting thread (client mode): 0x117eae90
2025-11-03T18:28:01.785 [DEBUG] [Thread-120547] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:28:01.799 [DEBUG] [Thread-120547] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:28:01.799 [INFO] [Thread-120547] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:28:01.810 [DEBUG] [Thread-120547] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:28:01.810 [DEBUG] [Thread-120547] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:28:01.811 [DEBUG] [Thread-120547] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:28:01.811 [DEBUG] [Thread-120547] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:28:01.811 [DEBUG] [Thread-120547] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:28:01.811 [DEBUG] [Thread-120547] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:28:01.811 [DEBUG] [Thread-120547] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:28:01.811 [DEBUG] [Thread-120547] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:28:01.811 [DEBUG] [Thread-120547] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:28:01.811 [DEBUG] [Thread-120547] [transport.py] [_log()] client lang: <none>
2025-11-03T18:28:01.812 [DEBUG] [Thread-120547] [transport.py] [_log()] server lang: <none>
2025-11-03T18:28:01.812 [DEBUG] [Thread-120547] [transport.py] [_log()] kex follows: False
2025-11-03T18:28:01.812 [DEBUG] [Thread-120547] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:28:01.812 [DEBUG] [Thread-120547] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:28:01.812 [DEBUG] [Thread-120547] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:28:01.812 [DEBUG] [Thread-120547] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:28:01.812 [DEBUG] [Thread-120547] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:28:01.813 [DEBUG] [Thread-120547] [transport.py] [_log()] Compression: none
2025-11-03T18:28:01.813 [DEBUG] [Thread-120547] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:28:01.873 [DEBUG] [Thread-120547] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:28:01.874 [DEBUG] [Thread-120547] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:28:01.874 [DEBUG] [Thread-120547] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:28:01.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:28:01.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:28:01.934 [DEBUG] [Thread-120547] [transport.py] [_log()] userauth is OK
2025-11-03T18:28:01.934 [DEBUG] [Thread-120547] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:28:01.935 [DEBUG] [Thread-120547] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:28:01.935 [DEBUG] [Thread-120547] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:28:01.935 [DEBUG] [Thread-120547] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:28:01.952 [INFO] [Thread-120547] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:28:01.953 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:28:01.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:28:02.116 [DEBUG] [Thread-120549 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:28:02.796 [DEBUG] [Thread-120547] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:28:02.797 [DEBUG] [Thread-120547] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:28:02.846 [DEBUG] [Thread-120547] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:28:02.846 [DEBUG] [Thread-120547] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:28:02.855 [DEBUG] [Thread-120547] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:28:02.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:28:02.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:28:02.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:28:02.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:28:02.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:28:02.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:28:02.897 [DEBUG] [Thread-120547] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:28:17.162 [DEBUG] [Thread-120550 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:28:31.952 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:28:31.953 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:28:32.191 [DEBUG] [Thread-120551 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:28:32.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:28:32.917 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:28:32.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:28:33.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 28, 23), 44.15, 4.09, 0.0, 33.42, 23.9, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:28:33.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:28:23
2025-11-03T18:28:33.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:28:33.850 [DEBUG] [Thread-120552] [transport.py] [_log()] starting thread (client mode): 0x117e99c0
2025-11-03T18:28:33.850 [DEBUG] [Thread-120552] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:28:33.863 [DEBUG] [Thread-120552] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:28:33.863 [INFO] [Thread-120552] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:28:33.864 [DEBUG] [Thread-120552] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:28:33.865 [DEBUG] [Thread-120552] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:28:33.865 [DEBUG] [Thread-120552] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:28:33.865 [DEBUG] [Thread-120552] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:28:33.865 [DEBUG] [Thread-120552] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:28:33.865 [DEBUG] [Thread-120552] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:28:33.865 [DEBUG] [Thread-120552] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:28:33.865 [DEBUG] [Thread-120552] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:28:33.865 [DEBUG] [Thread-120552] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:28:33.865 [DEBUG] [Thread-120552] [transport.py] [_log()] client lang: <none>
2025-11-03T18:28:33.865 [DEBUG] [Thread-120552] [transport.py] [_log()] server lang: <none>
2025-11-03T18:28:33.865 [DEBUG] [Thread-120552] [transport.py] [_log()] kex follows: False
2025-11-03T18:28:33.865 [DEBUG] [Thread-120552] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:28:33.865 [DEBUG] [Thread-120552] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:28:33.865 [DEBUG] [Thread-120552] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:28:33.865 [DEBUG] [Thread-120552] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:28:33.865 [DEBUG] [Thread-120552] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:28:33.865 [DEBUG] [Thread-120552] [transport.py] [_log()] Compression: none
2025-11-03T18:28:33.865 [DEBUG] [Thread-120552] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:28:33.872 [DEBUG] [Thread-120552] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:28:33.873 [DEBUG] [Thread-120552] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:28:33.873 [DEBUG] [Thread-120552] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:28:33.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:28:33.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:28:33.874 [DEBUG] [Thread-120552] [transport.py] [_log()] userauth is OK
2025-11-03T18:28:33.874 [DEBUG] [Thread-120552] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:28:33.874 [DEBUG] [Thread-120552] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:28:33.874 [DEBUG] [Thread-120552] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:28:33.874 [DEBUG] [Thread-120552] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:28:33.889 [INFO] [Thread-120552] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:28:33.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:28:34.535 [DEBUG] [Thread-120552] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:28:34.535 [DEBUG] [Thread-120552] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:28:34.535 [DEBUG] [Thread-120552] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:28:34.576 [DEBUG] [Thread-120552] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:28:34.576 [DEBUG] [Thread-120552] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:28:34.579 [DEBUG] [Thread-120552] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:28:34.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:28:34.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:28:34.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:28:34.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:28:34.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:28:34.597 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:28:34.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:28:34.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:28:34.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:28:34.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.685866 -999.00  +23.70  29.02      9  -11.00 1 1 1 1 1   887    0 35.24 16.55 ----- 27.8 29.0 302.4 38.2 24.8 -32.3 25.0 -31.4 25.4 -31.8 25.6 -32.2
2025-11-03T18:28:34.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:28:34.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:28:34.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.685866
2025-11-03T18:28:34.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:28:34.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:28:34.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:28:34.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:28:34.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:28:34.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:28:23', tmtdew=44.15, humidity=4.09, cloud=0.0, wind=33.42, temperature=23.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:27:38.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:28:34.598 [DEBUG] [Thread-120552] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:28:34.669 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:28:34.681 [DEBUG] [Thread-120555] [transport.py] [_log()] starting thread (client mode): 0x11798e80
2025-11-03T18:28:34.681 [DEBUG] [Thread-120555] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:28:34.696 [DEBUG] [Thread-120555] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:28:34.697 [INFO] [Thread-120555] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:28:34.707 [DEBUG] [Thread-120555] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:28:34.707 [DEBUG] [Thread-120555] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:28:34.707 [DEBUG] [Thread-120555] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:28:34.707 [DEBUG] [Thread-120555] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:28:34.707 [DEBUG] [Thread-120555] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:28:34.707 [DEBUG] [Thread-120555] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:28:34.707 [DEBUG] [Thread-120555] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:28:34.707 [DEBUG] [Thread-120555] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:28:34.707 [DEBUG] [Thread-120555] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:28:34.707 [DEBUG] [Thread-120555] [transport.py] [_log()] client lang: <none>
2025-11-03T18:28:34.707 [DEBUG] [Thread-120555] [transport.py] [_log()] server lang: <none>
2025-11-03T18:28:34.707 [DEBUG] [Thread-120555] [transport.py] [_log()] kex follows: False
2025-11-03T18:28:34.707 [DEBUG] [Thread-120555] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:28:34.707 [DEBUG] [Thread-120555] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:28:34.707 [DEBUG] [Thread-120555] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:28:34.707 [DEBUG] [Thread-120555] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:28:34.707 [DEBUG] [Thread-120555] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:28:34.707 [DEBUG] [Thread-120555] [transport.py] [_log()] Compression: none
2025-11-03T18:28:34.707 [DEBUG] [Thread-120555] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:28:34.765 [DEBUG] [Thread-120555] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:28:34.765 [DEBUG] [Thread-120555] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:28:34.765 [DEBUG] [Thread-120555] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:28:34.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:28:34.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:28:34.821 [DEBUG] [Thread-120555] [transport.py] [_log()] userauth is OK
2025-11-03T18:28:34.821 [DEBUG] [Thread-120555] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:28:34.821 [DEBUG] [Thread-120555] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:28:34.821 [DEBUG] [Thread-120555] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:28:34.821 [DEBUG] [Thread-120555] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:28:34.835 [INFO] [Thread-120555] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:28:34.835 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:28:34.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:28:35.724 [DEBUG] [Thread-120555] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:28:35.724 [DEBUG] [Thread-120555] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:28:35.773 [DEBUG] [Thread-120555] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:28:35.773 [DEBUG] [Thread-120555] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:28:35.783 [DEBUG] [Thread-120555] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:28:35.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:28:35.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:28:35.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:28:35.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:28:35.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:28:35.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:28:35.821 [DEBUG] [Thread-120555] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:28:39.286 [DEBUG] [Thread-120557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:28:47.220 [DEBUG] [Thread-120558 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:29:02.282 [DEBUG] [Thread-120559 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:29:05.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:29:05.842 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:29:05.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:29:06.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 28, 55), 44.02, 4.13, 0.0, 32.17, 23.98, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:29:06.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:28:55
2025-11-03T18:29:06.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:29:06.822 [DEBUG] [Thread-120560] [transport.py] [_log()] starting thread (client mode): 0x117e8ac0
2025-11-03T18:29:06.822 [DEBUG] [Thread-120560] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:29:06.840 [DEBUG] [Thread-120560] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:29:06.840 [INFO] [Thread-120560] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:29:06.843 [DEBUG] [Thread-120560] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:29:06.843 [DEBUG] [Thread-120560] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:29:06.843 [DEBUG] [Thread-120560] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:29:06.843 [DEBUG] [Thread-120560] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:29:06.843 [DEBUG] [Thread-120560] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:29:06.843 [DEBUG] [Thread-120560] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:29:06.843 [DEBUG] [Thread-120560] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:29:06.843 [DEBUG] [Thread-120560] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:29:06.843 [DEBUG] [Thread-120560] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:29:06.843 [DEBUG] [Thread-120560] [transport.py] [_log()] client lang: <none>
2025-11-03T18:29:06.843 [DEBUG] [Thread-120560] [transport.py] [_log()] server lang: <none>
2025-11-03T18:29:06.843 [DEBUG] [Thread-120560] [transport.py] [_log()] kex follows: False
2025-11-03T18:29:06.844 [DEBUG] [Thread-120560] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:29:06.844 [DEBUG] [Thread-120560] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:29:06.844 [DEBUG] [Thread-120560] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:29:06.844 [DEBUG] [Thread-120560] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:29:06.844 [DEBUG] [Thread-120560] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:29:06.844 [DEBUG] [Thread-120560] [transport.py] [_log()] Compression: none
2025-11-03T18:29:06.844 [DEBUG] [Thread-120560] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:29:06.858 [DEBUG] [Thread-120560] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:29:06.858 [DEBUG] [Thread-120560] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:29:06.858 [DEBUG] [Thread-120560] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:29:06.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:29:06.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:29:06.859 [DEBUG] [Thread-120560] [transport.py] [_log()] userauth is OK
2025-11-03T18:29:06.859 [DEBUG] [Thread-120560] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:29:06.859 [DEBUG] [Thread-120560] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:29:06.859 [DEBUG] [Thread-120560] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:29:06.859 [DEBUG] [Thread-120560] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:29:06.868 [INFO] [Thread-120560] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:29:06.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:29:07.497 [DEBUG] [Thread-120560] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:29:07.497 [DEBUG] [Thread-120560] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:29:07.498 [DEBUG] [Thread-120560] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:29:07.539 [DEBUG] [Thread-120560] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:29:07.539 [DEBUG] [Thread-120560] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:29:07.541 [DEBUG] [Thread-120560] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:29:07.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:29:07.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:29:07.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:29:07.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:29:07.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:29:07.558 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:29:07.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:29:07.558 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:29:07.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:29:07.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.686213 -999.00  +23.60  33.65      9  -11.00 1 1 2 1 1   887    0 35.08 17.85 ----- 35.6 33.6 293.6 43.3 24.8 -32.4 25.0 -31.6 25.3 -31.7 25.5 -32.5
2025-11-03T18:29:07.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:29:07.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:29:07.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.686213
2025-11-03T18:29:07.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:29:07.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:29:07.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:29:07.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:29:07.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:29:07.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:28:55', tmtdew=44.02, humidity=4.13, cloud=0.0, wind=32.17, temperature=23.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:28:08.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:29:07.559 [DEBUG] [Thread-120560] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:29:07.633 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:29:07.645 [DEBUG] [Thread-120563] [transport.py] [_log()] starting thread (client mode): 0x117e8a30
2025-11-03T18:29:07.645 [DEBUG] [Thread-120563] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:29:07.660 [DEBUG] [Thread-120563] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:29:07.660 [INFO] [Thread-120563] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:29:07.668 [DEBUG] [Thread-120563] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:29:07.668 [DEBUG] [Thread-120563] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:29:07.668 [DEBUG] [Thread-120563] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:29:07.668 [DEBUG] [Thread-120563] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:29:07.668 [DEBUG] [Thread-120563] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:29:07.668 [DEBUG] [Thread-120563] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:29:07.668 [DEBUG] [Thread-120563] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:29:07.668 [DEBUG] [Thread-120563] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:29:07.668 [DEBUG] [Thread-120563] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:29:07.668 [DEBUG] [Thread-120563] [transport.py] [_log()] client lang: <none>
2025-11-03T18:29:07.668 [DEBUG] [Thread-120563] [transport.py] [_log()] server lang: <none>
2025-11-03T18:29:07.668 [DEBUG] [Thread-120563] [transport.py] [_log()] kex follows: False
2025-11-03T18:29:07.668 [DEBUG] [Thread-120563] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:29:07.668 [DEBUG] [Thread-120563] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:29:07.668 [DEBUG] [Thread-120563] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:29:07.668 [DEBUG] [Thread-120563] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:29:07.669 [DEBUG] [Thread-120563] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:29:07.669 [DEBUG] [Thread-120563] [transport.py] [_log()] Compression: none
2025-11-03T18:29:07.669 [DEBUG] [Thread-120563] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:29:07.729 [DEBUG] [Thread-120563] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:29:07.729 [DEBUG] [Thread-120563] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:29:07.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:29:07.729 [DEBUG] [Thread-120563] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:29:07.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:29:07.787 [DEBUG] [Thread-120563] [transport.py] [_log()] userauth is OK
2025-11-03T18:29:07.787 [DEBUG] [Thread-120563] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:29:07.787 [DEBUG] [Thread-120563] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:29:07.787 [DEBUG] [Thread-120563] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:29:07.787 [DEBUG] [Thread-120563] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:29:07.801 [INFO] [Thread-120563] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:29:07.801 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:29:07.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:29:08.687 [DEBUG] [Thread-120563] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:29:08.687 [DEBUG] [Thread-120563] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:29:08.736 [DEBUG] [Thread-120563] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:29:08.736 [DEBUG] [Thread-120563] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:29:08.744 [DEBUG] [Thread-120563] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:29:08.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:29:08.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:29:08.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:29:08.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:29:08.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:29:08.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:29:08.776 [DEBUG] [Thread-120563] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:29:17.315 [DEBUG] [Thread-120565 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:29:32.102 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:29:32.104 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:29:32.374 [DEBUG] [Thread-120566 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:29:38.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:29:38.799 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:29:38.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:29:39.340 [DEBUG] [Thread-120567 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:29:39.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 29, 28), 44.09, 4.1, 0.0, 29.8, 23.92, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:29:39.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:29:28
2025-11-03T18:29:39.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:29:39.893 [DEBUG] [Thread-120568] [transport.py] [_log()] starting thread (client mode): 0xed22ce0
2025-11-03T18:29:39.894 [DEBUG] [Thread-120568] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:29:39.903 [DEBUG] [Thread-120568] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:29:39.903 [INFO] [Thread-120568] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:29:39.905 [DEBUG] [Thread-120568] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:29:39.905 [DEBUG] [Thread-120568] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:29:39.905 [DEBUG] [Thread-120568] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:29:39.905 [DEBUG] [Thread-120568] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:29:39.905 [DEBUG] [Thread-120568] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:29:39.905 [DEBUG] [Thread-120568] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:29:39.905 [DEBUG] [Thread-120568] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:29:39.905 [DEBUG] [Thread-120568] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:29:39.905 [DEBUG] [Thread-120568] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:29:39.905 [DEBUG] [Thread-120568] [transport.py] [_log()] client lang: <none>
2025-11-03T18:29:39.905 [DEBUG] [Thread-120568] [transport.py] [_log()] server lang: <none>
2025-11-03T18:29:39.905 [DEBUG] [Thread-120568] [transport.py] [_log()] kex follows: False
2025-11-03T18:29:39.905 [DEBUG] [Thread-120568] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:29:39.905 [DEBUG] [Thread-120568] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:29:39.905 [DEBUG] [Thread-120568] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:29:39.905 [DEBUG] [Thread-120568] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:29:39.905 [DEBUG] [Thread-120568] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:29:39.905 [DEBUG] [Thread-120568] [transport.py] [_log()] Compression: none
2025-11-03T18:29:39.905 [DEBUG] [Thread-120568] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:29:39.916 [DEBUG] [Thread-120568] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:29:39.916 [DEBUG] [Thread-120568] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:29:39.917 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:29:39.917 [DEBUG] [Thread-120568] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:29:39.917 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:29:39.918 [DEBUG] [Thread-120568] [transport.py] [_log()] userauth is OK
2025-11-03T18:29:39.918 [DEBUG] [Thread-120568] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:29:39.918 [DEBUG] [Thread-120568] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:29:39.918 [DEBUG] [Thread-120568] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:29:39.918 [DEBUG] [Thread-120568] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:29:39.929 [INFO] [Thread-120568] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:29:39.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:29:40.581 [DEBUG] [Thread-120568] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:29:40.581 [DEBUG] [Thread-120568] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:29:40.581 [DEBUG] [Thread-120568] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:29:40.621 [DEBUG] [Thread-120568] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:29:40.621 [DEBUG] [Thread-120568] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:29:40.623 [DEBUG] [Thread-120568] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:29:40.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:29:40.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:29:40.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:29:40.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:29:40.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:29:40.650 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:29:40.650 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:29:40.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:29:40.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:29:40.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.686560 -999.00  +23.70  28.64      9  -11.00 1 1 1 1 1   887    0 34.80 17.49 ----- 32.9 28.6 307.8 42.0 24.7 -32.4 24.9 -31.3 25.2 -31.8 25.5 -32.3
2025-11-03T18:29:40.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:29:40.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:29:40.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.686560
2025-11-03T18:29:40.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:29:40.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:29:40.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:29:40.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:29:40.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:29:40.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:29:28', tmtdew=44.09, humidity=4.1, cloud=0.0, wind=29.8, temperature=23.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:28:38.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:29:40.651 [DEBUG] [Thread-120568] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:29:40.726 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:29:40.738 [DEBUG] [Thread-120571] [transport.py] [_log()] starting thread (client mode): 0xed201f0
2025-11-03T18:29:40.739 [DEBUG] [Thread-120571] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:29:40.754 [DEBUG] [Thread-120571] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:29:40.754 [INFO] [Thread-120571] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:29:40.762 [DEBUG] [Thread-120571] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:29:40.762 [DEBUG] [Thread-120571] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:29:40.762 [DEBUG] [Thread-120571] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:29:40.762 [DEBUG] [Thread-120571] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:29:40.762 [DEBUG] [Thread-120571] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:29:40.762 [DEBUG] [Thread-120571] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:29:40.762 [DEBUG] [Thread-120571] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:29:40.762 [DEBUG] [Thread-120571] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:29:40.762 [DEBUG] [Thread-120571] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:29:40.762 [DEBUG] [Thread-120571] [transport.py] [_log()] client lang: <none>
2025-11-03T18:29:40.762 [DEBUG] [Thread-120571] [transport.py] [_log()] server lang: <none>
2025-11-03T18:29:40.762 [DEBUG] [Thread-120571] [transport.py] [_log()] kex follows: False
2025-11-03T18:29:40.762 [DEBUG] [Thread-120571] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:29:40.762 [DEBUG] [Thread-120571] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:29:40.762 [DEBUG] [Thread-120571] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:29:40.762 [DEBUG] [Thread-120571] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:29:40.762 [DEBUG] [Thread-120571] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:29:40.762 [DEBUG] [Thread-120571] [transport.py] [_log()] Compression: none
2025-11-03T18:29:40.762 [DEBUG] [Thread-120571] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:29:40.817 [DEBUG] [Thread-120571] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:29:40.817 [DEBUG] [Thread-120571] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:29:40.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:29:40.817 [DEBUG] [Thread-120571] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:29:40.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:29:40.874 [DEBUG] [Thread-120571] [transport.py] [_log()] userauth is OK
2025-11-03T18:29:40.874 [DEBUG] [Thread-120571] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:29:40.874 [DEBUG] [Thread-120571] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:29:40.874 [DEBUG] [Thread-120571] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:29:40.874 [DEBUG] [Thread-120571] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:29:40.892 [INFO] [Thread-120571] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:29:40.892 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:29:40.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:29:41.699 [DEBUG] [Thread-120571] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:29:41.700 [DEBUG] [Thread-120571] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:29:41.748 [DEBUG] [Thread-120571] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:29:41.748 [DEBUG] [Thread-120571] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:29:41.757 [DEBUG] [Thread-120571] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:29:41.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:29:41.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:29:41.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:29:41.794 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:29:41.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:29:41.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:29:41.802 [DEBUG] [Thread-120571] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:29:47.406 [DEBUG] [Thread-120573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:30:02.444 [DEBUG] [Thread-120574 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:30:11.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:30:11.819 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:30:11.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:30:12.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 30), 44.08, 4.12, 0.0, 34.21, 24.05, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:30:12.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:30:00
2025-11-03T18:30:12.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:30:12.928 [DEBUG] [Thread-120575] [transport.py] [_log()] starting thread (client mode): 0xed89f90
2025-11-03T18:30:12.928 [DEBUG] [Thread-120575] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:30:12.947 [DEBUG] [Thread-120575] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:30:12.947 [INFO] [Thread-120575] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:30:12.951 [DEBUG] [Thread-120575] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:30:12.951 [DEBUG] [Thread-120575] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:30:12.951 [DEBUG] [Thread-120575] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:30:12.951 [DEBUG] [Thread-120575] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:30:12.951 [DEBUG] [Thread-120575] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:30:12.951 [DEBUG] [Thread-120575] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:30:12.951 [DEBUG] [Thread-120575] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:30:12.951 [DEBUG] [Thread-120575] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:30:12.951 [DEBUG] [Thread-120575] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:30:12.951 [DEBUG] [Thread-120575] [transport.py] [_log()] client lang: <none>
2025-11-03T18:30:12.951 [DEBUG] [Thread-120575] [transport.py] [_log()] server lang: <none>
2025-11-03T18:30:12.951 [DEBUG] [Thread-120575] [transport.py] [_log()] kex follows: False
2025-11-03T18:30:12.952 [DEBUG] [Thread-120575] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:30:12.952 [DEBUG] [Thread-120575] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:30:12.952 [DEBUG] [Thread-120575] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:30:12.952 [DEBUG] [Thread-120575] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:30:12.952 [DEBUG] [Thread-120575] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:30:12.952 [DEBUG] [Thread-120575] [transport.py] [_log()] Compression: none
2025-11-03T18:30:12.952 [DEBUG] [Thread-120575] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:30:12.972 [DEBUG] [Thread-120575] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:30:12.973 [DEBUG] [Thread-120575] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:30:12.974 [DEBUG] [Thread-120575] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:30:12.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:30:12.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:30:12.976 [DEBUG] [Thread-120575] [transport.py] [_log()] userauth is OK
2025-11-03T18:30:12.976 [DEBUG] [Thread-120575] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:30:12.976 [DEBUG] [Thread-120575] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:30:12.976 [DEBUG] [Thread-120575] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:30:12.977 [DEBUG] [Thread-120575] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:30:13.003 [INFO] [Thread-120575] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:30:13.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:30:14.986 [DEBUG] [Thread-120575] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:30:14.987 [DEBUG] [Thread-120575] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:30:14.987 [DEBUG] [Thread-120575] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:30:15.028 [DEBUG] [Thread-120575] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:30:15.028 [DEBUG] [Thread-120575] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:30:15.032 [DEBUG] [Thread-120575] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:30:15.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:30:15.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:30:15.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:30:15.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:30:15.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:30:15.111 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:30:15.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:30:15.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:30:15.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:30:15.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.687255 -999.00  +23.80  29.58      8  -11.10 1 1 1 1 1   887    0 35.19 21.00 ----- 27.5 29.6 295.2 37.5 24.7 -32.3 24.9 -31.3 25.2 -31.3 25.4 -32.1
2025-11-03T18:30:15.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:30:15.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:30:15.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.687255
2025-11-03T18:30:15.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:30:15.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:30:15.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:30:15.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:30:15.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:30:15.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:30:00', tmtdew=44.08, humidity=4.12, cloud=0.0, wind=34.21, temperature=24.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:29:38.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:30:15.114 [DEBUG] [Thread-120575] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:30:15.204 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:30:15.216 [DEBUG] [Thread-120578] [transport.py] [_log()] starting thread (client mode): 0xed8b790
2025-11-03T18:30:15.216 [DEBUG] [Thread-120578] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:30:15.230 [DEBUG] [Thread-120578] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:30:15.230 [INFO] [Thread-120578] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:30:15.238 [DEBUG] [Thread-120578] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:30:15.238 [DEBUG] [Thread-120578] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:30:15.238 [DEBUG] [Thread-120578] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:30:15.238 [DEBUG] [Thread-120578] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:30:15.238 [DEBUG] [Thread-120578] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:30:15.238 [DEBUG] [Thread-120578] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:30:15.238 [DEBUG] [Thread-120578] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:30:15.238 [DEBUG] [Thread-120578] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:30:15.238 [DEBUG] [Thread-120578] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:30:15.238 [DEBUG] [Thread-120578] [transport.py] [_log()] client lang: <none>
2025-11-03T18:30:15.238 [DEBUG] [Thread-120578] [transport.py] [_log()] server lang: <none>
2025-11-03T18:30:15.238 [DEBUG] [Thread-120578] [transport.py] [_log()] kex follows: False
2025-11-03T18:30:15.238 [DEBUG] [Thread-120578] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:30:15.238 [DEBUG] [Thread-120578] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:30:15.238 [DEBUG] [Thread-120578] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:30:15.239 [DEBUG] [Thread-120578] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:30:15.239 [DEBUG] [Thread-120578] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:30:15.239 [DEBUG] [Thread-120578] [transport.py] [_log()] Compression: none
2025-11-03T18:30:15.239 [DEBUG] [Thread-120578] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:30:15.296 [DEBUG] [Thread-120578] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:30:15.297 [DEBUG] [Thread-120578] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:30:15.298 [DEBUG] [Thread-120578] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:30:15.298 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:30:15.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:30:15.356 [DEBUG] [Thread-120578] [transport.py] [_log()] userauth is OK
2025-11-03T18:30:15.356 [DEBUG] [Thread-120578] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:30:15.356 [DEBUG] [Thread-120578] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:30:15.356 [DEBUG] [Thread-120578] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:30:15.356 [DEBUG] [Thread-120578] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:30:15.376 [INFO] [Thread-120578] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:30:15.376 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:30:15.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:30:16.218 [DEBUG] [Thread-120578] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:30:16.218 [DEBUG] [Thread-120578] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:30:16.266 [DEBUG] [Thread-120578] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:30:16.266 [DEBUG] [Thread-120578] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:30:16.276 [DEBUG] [Thread-120578] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:30:16.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:30:16.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:30:16.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:30:16.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:30:16.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:30:16.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:30:16.312 [DEBUG] [Thread-120578] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:30:17.482 [DEBUG] [Thread-120580 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:30:32.245 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:30:32.246 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:30:32.532 [DEBUG] [Thread-120581 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:30:39.570 [DEBUG] [Thread-120582 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:30:46.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:30:46.334 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:30:46.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:30:46.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 30, 33), 44.18, 4.12, 0.0, 38.75, 24.1, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:30:46.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:30:33
2025-11-03T18:30:47.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:30:47.272 [DEBUG] [Thread-120583] [transport.py] [_log()] starting thread (client mode): 0x1179b940
2025-11-03T18:30:47.272 [DEBUG] [Thread-120583] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:30:47.291 [DEBUG] [Thread-120583] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:30:47.291 [INFO] [Thread-120583] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:30:47.294 [DEBUG] [Thread-120583] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:30:47.294 [DEBUG] [Thread-120583] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:30:47.294 [DEBUG] [Thread-120583] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:30:47.294 [DEBUG] [Thread-120583] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:30:47.294 [DEBUG] [Thread-120583] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:30:47.294 [DEBUG] [Thread-120583] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:30:47.295 [DEBUG] [Thread-120583] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:30:47.295 [DEBUG] [Thread-120583] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:30:47.295 [DEBUG] [Thread-120583] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:30:47.295 [DEBUG] [Thread-120583] [transport.py] [_log()] client lang: <none>
2025-11-03T18:30:47.295 [DEBUG] [Thread-120583] [transport.py] [_log()] server lang: <none>
2025-11-03T18:30:47.295 [DEBUG] [Thread-120583] [transport.py] [_log()] kex follows: False
2025-11-03T18:30:47.295 [DEBUG] [Thread-120583] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:30:47.295 [DEBUG] [Thread-120583] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:30:47.295 [DEBUG] [Thread-120583] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:30:47.295 [DEBUG] [Thread-120583] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:30:47.295 [DEBUG] [Thread-120583] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:30:47.295 [DEBUG] [Thread-120583] [transport.py] [_log()] Compression: none
2025-11-03T18:30:47.295 [DEBUG] [Thread-120583] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:30:47.313 [DEBUG] [Thread-120583] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:30:47.314 [DEBUG] [Thread-120583] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:30:47.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:30:47.314 [DEBUG] [Thread-120583] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:30:47.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:30:47.356 [DEBUG] [Thread-120583] [transport.py] [_log()] userauth is OK
2025-11-03T18:30:47.357 [DEBUG] [Thread-120583] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:30:47.357 [DEBUG] [Thread-120583] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:30:47.357 [DEBUG] [Thread-120583] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:30:47.357 [DEBUG] [Thread-120583] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:30:47.392 [INFO] [Thread-120583] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:30:47.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:30:47.565 [DEBUG] [Thread-120585 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:30:47.998 [DEBUG] [Thread-120583] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:30:47.999 [DEBUG] [Thread-120583] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:30:47.999 [DEBUG] [Thread-120583] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:30:48.039 [DEBUG] [Thread-120583] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:30:48.040 [DEBUG] [Thread-120583] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:30:48.042 [DEBUG] [Thread-120583] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:30:48.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:30:48.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:30:48.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:30:48.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:30:48.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:30:48.067 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:30:48.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:30:48.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:30:48.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:30:48.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.687602 -999.00  +23.80  32.11      8  -11.10 1 1 2 1 1   887    0 35.09 24.85 ----- 28.2 32.1 297.0 37.4 24.7 -32.3 24.9 -31.3 25.3 -31.4 25.4 -32.0
2025-11-03T18:30:48.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:30:48.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:30:48.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.687602
2025-11-03T18:30:48.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:30:48.068 [DEBUG] [Thread-120583] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:30:48.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:30:48.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:30:48.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:30:48.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:30:48.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:30:33', tmtdew=44.18, humidity=4.12, cloud=0.0, wind=38.75, temperature=24.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:30:08.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:30:48.155 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:30:48.166 [DEBUG] [Thread-120587] [transport.py] [_log()] starting thread (client mode): 0xed2f910
2025-11-03T18:30:48.166 [DEBUG] [Thread-120587] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:30:48.180 [DEBUG] [Thread-120587] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:30:48.180 [INFO] [Thread-120587] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:30:48.188 [DEBUG] [Thread-120587] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:30:48.188 [DEBUG] [Thread-120587] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:30:48.188 [DEBUG] [Thread-120587] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:30:48.188 [DEBUG] [Thread-120587] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:30:48.188 [DEBUG] [Thread-120587] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:30:48.188 [DEBUG] [Thread-120587] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:30:48.188 [DEBUG] [Thread-120587] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:30:48.189 [DEBUG] [Thread-120587] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:30:48.189 [DEBUG] [Thread-120587] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:30:48.189 [DEBUG] [Thread-120587] [transport.py] [_log()] client lang: <none>
2025-11-03T18:30:48.189 [DEBUG] [Thread-120587] [transport.py] [_log()] server lang: <none>
2025-11-03T18:30:48.189 [DEBUG] [Thread-120587] [transport.py] [_log()] kex follows: False
2025-11-03T18:30:48.189 [DEBUG] [Thread-120587] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:30:48.189 [DEBUG] [Thread-120587] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:30:48.189 [DEBUG] [Thread-120587] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:30:48.189 [DEBUG] [Thread-120587] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:30:48.190 [DEBUG] [Thread-120587] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:30:48.190 [DEBUG] [Thread-120587] [transport.py] [_log()] Compression: none
2025-11-03T18:30:48.190 [DEBUG] [Thread-120587] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:30:48.247 [DEBUG] [Thread-120587] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:30:48.248 [DEBUG] [Thread-120587] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:30:48.249 [DEBUG] [Thread-120587] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:30:48.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:30:48.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:30:48.304 [DEBUG] [Thread-120587] [transport.py] [_log()] userauth is OK
2025-11-03T18:30:48.304 [DEBUG] [Thread-120587] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:30:48.304 [DEBUG] [Thread-120587] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:30:48.304 [DEBUG] [Thread-120587] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:30:48.304 [DEBUG] [Thread-120587] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:30:48.323 [INFO] [Thread-120587] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:30:48.324 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:30:48.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:30:49.182 [DEBUG] [Thread-120587] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:30:49.183 [DEBUG] [Thread-120587] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:30:49.230 [DEBUG] [Thread-120587] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:30:49.231 [DEBUG] [Thread-120587] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:30:49.239 [DEBUG] [Thread-120587] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:30:49.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:30:49.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:30:49.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:30:49.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:30:49.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:30:49.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:30:49.273 [DEBUG] [Thread-120587] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:31:02.595 [DEBUG] [Thread-120589 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:31:17.633 [DEBUG] [Thread-120590 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:31:19.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:31:19.295 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:31:19.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:31:20.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 31, 5), 44.2, 4.1, 0.0, 37.95, 24.02, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:31:20.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:31:05
2025-11-03T18:31:20.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:31:20.325 [DEBUG] [Thread-120591] [transport.py] [_log()] starting thread (client mode): 0x117984c0
2025-11-03T18:31:20.325 [DEBUG] [Thread-120591] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:31:20.343 [DEBUG] [Thread-120591] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:31:20.343 [INFO] [Thread-120591] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:31:20.346 [DEBUG] [Thread-120591] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:31:20.346 [DEBUG] [Thread-120591] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:31:20.346 [DEBUG] [Thread-120591] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:31:20.346 [DEBUG] [Thread-120591] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:31:20.346 [DEBUG] [Thread-120591] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:31:20.346 [DEBUG] [Thread-120591] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:31:20.346 [DEBUG] [Thread-120591] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:31:20.346 [DEBUG] [Thread-120591] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:31:20.347 [DEBUG] [Thread-120591] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:31:20.347 [DEBUG] [Thread-120591] [transport.py] [_log()] client lang: <none>
2025-11-03T18:31:20.347 [DEBUG] [Thread-120591] [transport.py] [_log()] server lang: <none>
2025-11-03T18:31:20.347 [DEBUG] [Thread-120591] [transport.py] [_log()] kex follows: False
2025-11-03T18:31:20.347 [DEBUG] [Thread-120591] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:31:20.347 [DEBUG] [Thread-120591] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:31:20.347 [DEBUG] [Thread-120591] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:31:20.347 [DEBUG] [Thread-120591] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:31:20.347 [DEBUG] [Thread-120591] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:31:20.347 [DEBUG] [Thread-120591] [transport.py] [_log()] Compression: none
2025-11-03T18:31:20.347 [DEBUG] [Thread-120591] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:31:20.359 [DEBUG] [Thread-120591] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:31:20.360 [DEBUG] [Thread-120591] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:31:20.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:31:20.361 [DEBUG] [Thread-120591] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:31:20.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:31:20.363 [DEBUG] [Thread-120591] [transport.py] [_log()] userauth is OK
2025-11-03T18:31:20.363 [DEBUG] [Thread-120591] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:31:20.363 [DEBUG] [Thread-120591] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:31:20.363 [DEBUG] [Thread-120591] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:31:20.363 [DEBUG] [Thread-120591] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:31:20.386 [INFO] [Thread-120591] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:31:20.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:31:20.945 [DEBUG] [Thread-120591] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:31:20.946 [DEBUG] [Thread-120591] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:31:20.947 [DEBUG] [Thread-120591] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:31:20.987 [DEBUG] [Thread-120591] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:31:20.987 [DEBUG] [Thread-120591] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:31:20.991 [DEBUG] [Thread-120591] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:31:20.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:31:21.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:31:21.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:31:21.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:31:21.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:31:21.019 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:31:21.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:31:21.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:31:21.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:31:21.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.687949 -999.00  +23.80  26.89      9  -10.90 1 1 1 1 1   887    0 34.79 27.47 ----- 30.8 26.9 288.2 36.6 24.7 -32.2 24.9 -31.2 25.2 -31.5 25.4 -32.3
2025-11-03T18:31:21.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:31:21.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:31:21.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.687949
2025-11-03T18:31:21.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:31:21.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:31:21.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:31:21.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:31:21.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:31:21.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:31:05', tmtdew=44.2, humidity=4.1, cloud=0.0, wind=37.95, temperature=24.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:30:38.794', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:31:21.022 [DEBUG] [Thread-120591] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:31:21.105 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:31:21.117 [DEBUG] [Thread-120594] [transport.py] [_log()] starting thread (client mode): 0xed21000
2025-11-03T18:31:21.117 [DEBUG] [Thread-120594] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:31:21.131 [DEBUG] [Thread-120594] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:31:21.131 [INFO] [Thread-120594] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:31:21.139 [DEBUG] [Thread-120594] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:31:21.139 [DEBUG] [Thread-120594] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:31:21.140 [DEBUG] [Thread-120594] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:31:21.140 [DEBUG] [Thread-120594] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:31:21.140 [DEBUG] [Thread-120594] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:31:21.140 [DEBUG] [Thread-120594] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:31:21.140 [DEBUG] [Thread-120594] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:31:21.140 [DEBUG] [Thread-120594] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:31:21.140 [DEBUG] [Thread-120594] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:31:21.140 [DEBUG] [Thread-120594] [transport.py] [_log()] client lang: <none>
2025-11-03T18:31:21.141 [DEBUG] [Thread-120594] [transport.py] [_log()] server lang: <none>
2025-11-03T18:31:21.141 [DEBUG] [Thread-120594] [transport.py] [_log()] kex follows: False
2025-11-03T18:31:21.141 [DEBUG] [Thread-120594] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:31:21.141 [DEBUG] [Thread-120594] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:31:21.141 [DEBUG] [Thread-120594] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:31:21.150 [DEBUG] [Thread-120594] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:31:21.150 [DEBUG] [Thread-120594] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:31:21.151 [DEBUG] [Thread-120594] [transport.py] [_log()] Compression: none
2025-11-03T18:31:21.151 [DEBUG] [Thread-120594] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:31:21.199 [DEBUG] [Thread-120594] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:31:21.199 [DEBUG] [Thread-120594] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:31:21.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:31:21.200 [DEBUG] [Thread-120594] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:31:21.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:31:21.256 [DEBUG] [Thread-120594] [transport.py] [_log()] userauth is OK
2025-11-03T18:31:21.257 [DEBUG] [Thread-120594] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:31:21.257 [DEBUG] [Thread-120594] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:31:21.257 [DEBUG] [Thread-120594] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:31:21.257 [DEBUG] [Thread-120594] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:31:21.276 [INFO] [Thread-120594] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:31:21.276 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:31:21.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:31:22.074 [DEBUG] [Thread-120594] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:31:22.075 [DEBUG] [Thread-120594] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:31:22.123 [DEBUG] [Thread-120594] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:31:22.123 [DEBUG] [Thread-120594] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:31:22.133 [DEBUG] [Thread-120594] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:31:22.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:31:22.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:31:22.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:31:22.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:31:22.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:31:22.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:31:22.169 [DEBUG] [Thread-120594] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:31:32.396 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:31:32.397 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:31:32.671 [DEBUG] [Thread-120596 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:31:39.644 [DEBUG] [Thread-120597 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:31:47.717 [DEBUG] [Thread-120598 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:31:52.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:31:52.182 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:31:52.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:31:52.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 31, 37), 43.92, 4.15, 0.0, 36.95, 23.93, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:31:52.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:31:37
2025-11-03T18:31:53.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:31:53.199 [DEBUG] [Thread-120599] [transport.py] [_log()] starting thread (client mode): 0x117e8bb0
2025-11-03T18:31:53.199 [DEBUG] [Thread-120599] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:31:53.219 [DEBUG] [Thread-120599] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:31:53.219 [INFO] [Thread-120599] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:31:53.222 [DEBUG] [Thread-120599] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:31:53.222 [DEBUG] [Thread-120599] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:31:53.223 [DEBUG] [Thread-120599] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:31:53.223 [DEBUG] [Thread-120599] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:31:53.223 [DEBUG] [Thread-120599] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:31:53.223 [DEBUG] [Thread-120599] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:31:53.223 [DEBUG] [Thread-120599] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:31:53.223 [DEBUG] [Thread-120599] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:31:53.223 [DEBUG] [Thread-120599] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:31:53.223 [DEBUG] [Thread-120599] [transport.py] [_log()] client lang: <none>
2025-11-03T18:31:53.223 [DEBUG] [Thread-120599] [transport.py] [_log()] server lang: <none>
2025-11-03T18:31:53.223 [DEBUG] [Thread-120599] [transport.py] [_log()] kex follows: False
2025-11-03T18:31:53.223 [DEBUG] [Thread-120599] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:31:53.223 [DEBUG] [Thread-120599] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:31:53.223 [DEBUG] [Thread-120599] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:31:53.223 [DEBUG] [Thread-120599] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:31:53.223 [DEBUG] [Thread-120599] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:31:53.223 [DEBUG] [Thread-120599] [transport.py] [_log()] Compression: none
2025-11-03T18:31:53.223 [DEBUG] [Thread-120599] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:31:53.239 [DEBUG] [Thread-120599] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:31:53.240 [DEBUG] [Thread-120599] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:31:53.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:31:53.241 [DEBUG] [Thread-120599] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:31:53.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:31:53.244 [DEBUG] [Thread-120599] [transport.py] [_log()] userauth is OK
2025-11-03T18:31:53.244 [DEBUG] [Thread-120599] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:31:53.244 [DEBUG] [Thread-120599] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:31:53.244 [DEBUG] [Thread-120599] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:31:53.244 [DEBUG] [Thread-120599] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:31:53.280 [INFO] [Thread-120599] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:31:53.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:31:53.930 [DEBUG] [Thread-120599] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:31:53.930 [DEBUG] [Thread-120599] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:31:53.931 [DEBUG] [Thread-120599] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:31:53.971 [DEBUG] [Thread-120599] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:31:53.971 [DEBUG] [Thread-120599] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:31:53.974 [DEBUG] [Thread-120599] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:31:53.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:31:53.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:31:53.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:31:54.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:31:54.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:31:54.009 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:31:54.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:31:54.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:31:54.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:31:54.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.688296 -999.00  +23.70  28.91      8  -11.10 1 1 1 1 1   887    0 35.45 27.62 ----- 31.6 28.9 295.7 39.7 24.6 -32.4 24.9 -31.5 25.2 -31.2 25.4 -32.2
2025-11-03T18:31:54.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:31:54.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:31:54.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.688296
2025-11-03T18:31:54.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:31:54.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:31:54.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:31:54.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:31:54.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:31:54.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:31:37', tmtdew=43.92, humidity=4.15, cloud=0.0, wind=36.95, temperature=23.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:31:08.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:31:54.013 [DEBUG] [Thread-120599] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:31:54.097 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:31:54.109 [DEBUG] [Thread-120602] [transport.py] [_log()] starting thread (client mode): 0x117e98d0
2025-11-03T18:31:54.109 [DEBUG] [Thread-120602] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:31:54.124 [DEBUG] [Thread-120602] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:31:54.124 [INFO] [Thread-120602] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:31:54.131 [DEBUG] [Thread-120602] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:31:54.132 [DEBUG] [Thread-120602] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:31:54.132 [DEBUG] [Thread-120602] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:31:54.132 [DEBUG] [Thread-120602] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:31:54.132 [DEBUG] [Thread-120602] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:31:54.132 [DEBUG] [Thread-120602] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:31:54.132 [DEBUG] [Thread-120602] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:31:54.132 [DEBUG] [Thread-120602] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:31:54.132 [DEBUG] [Thread-120602] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:31:54.132 [DEBUG] [Thread-120602] [transport.py] [_log()] client lang: <none>
2025-11-03T18:31:54.132 [DEBUG] [Thread-120602] [transport.py] [_log()] server lang: <none>
2025-11-03T18:31:54.132 [DEBUG] [Thread-120602] [transport.py] [_log()] kex follows: False
2025-11-03T18:31:54.132 [DEBUG] [Thread-120602] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:31:54.132 [DEBUG] [Thread-120602] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:31:54.132 [DEBUG] [Thread-120602] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:31:54.132 [DEBUG] [Thread-120602] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:31:54.132 [DEBUG] [Thread-120602] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:31:54.132 [DEBUG] [Thread-120602] [transport.py] [_log()] Compression: none
2025-11-03T18:31:54.133 [DEBUG] [Thread-120602] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:31:54.193 [DEBUG] [Thread-120602] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:31:54.193 [DEBUG] [Thread-120602] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:31:54.194 [DEBUG] [Thread-120602] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:31:54.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:31:54.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:31:54.249 [DEBUG] [Thread-120602] [transport.py] [_log()] userauth is OK
2025-11-03T18:31:54.249 [DEBUG] [Thread-120602] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:31:54.249 [DEBUG] [Thread-120602] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:31:54.249 [DEBUG] [Thread-120602] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:31:54.249 [DEBUG] [Thread-120602] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:31:54.268 [INFO] [Thread-120602] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:31:54.268 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:31:54.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:31:55.086 [DEBUG] [Thread-120602] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:31:55.095 [DEBUG] [Thread-120602] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:31:55.133 [DEBUG] [Thread-120602] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:31:55.133 [DEBUG] [Thread-120602] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:31:55.142 [DEBUG] [Thread-120602] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:31:55.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:31:55.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:31:55.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:31:55.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:31:55.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:31:55.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:31:55.174 [DEBUG] [Thread-120602] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:32:02.757 [DEBUG] [Thread-120604 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:32:17.797 [DEBUG] [Thread-120605 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:32:25.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:32:25.196 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:32:25.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:32:25.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 32, 10), 43.99, 4.12, 0.0, 36.95, 23.85, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:32:25.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:32:10
2025-11-03T18:32:25.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:32:26.114 [DEBUG] [Thread-120606] [transport.py] [_log()] starting thread (client mode): 0xed22ef0
2025-11-03T18:32:26.114 [DEBUG] [Thread-120606] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:32:26.134 [DEBUG] [Thread-120606] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:32:26.134 [INFO] [Thread-120606] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:32:26.138 [DEBUG] [Thread-120606] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:32:26.138 [DEBUG] [Thread-120606] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:32:26.138 [DEBUG] [Thread-120606] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:32:26.138 [DEBUG] [Thread-120606] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:32:26.138 [DEBUG] [Thread-120606] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:32:26.138 [DEBUG] [Thread-120606] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:32:26.138 [DEBUG] [Thread-120606] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:32:26.138 [DEBUG] [Thread-120606] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:32:26.138 [DEBUG] [Thread-120606] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:32:26.138 [DEBUG] [Thread-120606] [transport.py] [_log()] client lang: <none>
2025-11-03T18:32:26.138 [DEBUG] [Thread-120606] [transport.py] [_log()] server lang: <none>
2025-11-03T18:32:26.138 [DEBUG] [Thread-120606] [transport.py] [_log()] kex follows: False
2025-11-03T18:32:26.138 [DEBUG] [Thread-120606] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:32:26.138 [DEBUG] [Thread-120606] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:32:26.138 [DEBUG] [Thread-120606] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:32:26.138 [DEBUG] [Thread-120606] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:32:26.138 [DEBUG] [Thread-120606] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:32:26.138 [DEBUG] [Thread-120606] [transport.py] [_log()] Compression: none
2025-11-03T18:32:26.138 [DEBUG] [Thread-120606] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:32:26.154 [DEBUG] [Thread-120606] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:32:26.154 [DEBUG] [Thread-120606] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:32:26.154 [DEBUG] [Thread-120606] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:32:26.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:32:26.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:32:26.155 [DEBUG] [Thread-120606] [transport.py] [_log()] userauth is OK
2025-11-03T18:32:26.155 [DEBUG] [Thread-120606] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:32:26.155 [DEBUG] [Thread-120606] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:32:26.155 [DEBUG] [Thread-120606] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:32:26.155 [DEBUG] [Thread-120606] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:32:26.164 [INFO] [Thread-120606] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:32:26.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:32:26.895 [DEBUG] [Thread-120606] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:32:26.895 [DEBUG] [Thread-120606] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:32:26.895 [DEBUG] [Thread-120606] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:32:26.936 [DEBUG] [Thread-120606] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:32:26.936 [DEBUG] [Thread-120606] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:32:26.938 [DEBUG] [Thread-120606] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:32:26.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:32:26.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:32:26.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:32:26.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:32:26.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:32:26.954 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:32:26.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:32:26.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:32:26.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:32:26.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.688644 -999.00  +23.80  22.56      9  -10.90 1 1 1 1 1   887    0 35.15 30.98 ----- 29.5 22.6 304.6 34.4 24.6 -32.1 24.9 -31.1 25.2 -31.4 25.4 -32.1
2025-11-03T18:32:26.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:32:26.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:32:26.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.688644
2025-11-03T18:32:26.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:32:26.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:32:26.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:32:26.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:32:26.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:32:26.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:32:10', tmtdew=43.99, humidity=4.12, cloud=0.0, wind=36.95, temperature=23.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:31:38.842', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:32:26.956 [DEBUG] [Thread-120606] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:32:27.026 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:32:27.037 [DEBUG] [Thread-120609] [transport.py] [_log()] starting thread (client mode): 0xed8b6d0
2025-11-03T18:32:27.037 [DEBUG] [Thread-120609] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:32:27.052 [DEBUG] [Thread-120609] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:32:27.052 [INFO] [Thread-120609] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:32:27.060 [DEBUG] [Thread-120609] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:32:27.061 [DEBUG] [Thread-120609] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:32:27.061 [DEBUG] [Thread-120609] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:32:27.061 [DEBUG] [Thread-120609] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:32:27.061 [DEBUG] [Thread-120609] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:32:27.061 [DEBUG] [Thread-120609] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:32:27.061 [DEBUG] [Thread-120609] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:32:27.061 [DEBUG] [Thread-120609] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:32:27.062 [DEBUG] [Thread-120609] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:32:27.062 [DEBUG] [Thread-120609] [transport.py] [_log()] client lang: <none>
2025-11-03T18:32:27.062 [DEBUG] [Thread-120609] [transport.py] [_log()] server lang: <none>
2025-11-03T18:32:27.062 [DEBUG] [Thread-120609] [transport.py] [_log()] kex follows: False
2025-11-03T18:32:27.062 [DEBUG] [Thread-120609] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:32:27.062 [DEBUG] [Thread-120609] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:32:27.062 [DEBUG] [Thread-120609] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:32:27.062 [DEBUG] [Thread-120609] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:32:27.063 [DEBUG] [Thread-120609] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:32:27.063 [DEBUG] [Thread-120609] [transport.py] [_log()] Compression: none
2025-11-03T18:32:27.063 [DEBUG] [Thread-120609] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:32:27.124 [DEBUG] [Thread-120609] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:32:27.125 [DEBUG] [Thread-120609] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:32:27.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:32:27.126 [DEBUG] [Thread-120609] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:32:27.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:32:27.181 [DEBUG] [Thread-120609] [transport.py] [_log()] userauth is OK
2025-11-03T18:32:27.182 [DEBUG] [Thread-120609] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:32:27.182 [DEBUG] [Thread-120609] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:32:27.182 [DEBUG] [Thread-120609] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:32:27.182 [DEBUG] [Thread-120609] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:32:27.205 [INFO] [Thread-120609] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:32:27.206 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:32:27.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:32:28.057 [DEBUG] [Thread-120609] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:32:28.057 [DEBUG] [Thread-120609] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:32:28.105 [DEBUG] [Thread-120609] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:32:28.106 [DEBUG] [Thread-120609] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:32:28.114 [DEBUG] [Thread-120609] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:32:28.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:32:28.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:32:28.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:32:28.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:32:28.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:32:28.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:32:28.146 [DEBUG] [Thread-120609] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:32:32.547 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:32:32.548 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:32:32.833 [DEBUG] [Thread-120611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:32:39.701 [DEBUG] [Thread-120612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:32:47.904 [DEBUG] [Thread-120613 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:32:58.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:32:58.157 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:32:58.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:32:58.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 32, 42), 44.0, 4.12, 0.0, 27.51, 23.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:32:58.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:32:42
2025-11-03T18:32:59.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:32:59.232 [DEBUG] [Thread-120614] [transport.py] [_log()] starting thread (client mode): 0x11763ca0
2025-11-03T18:32:59.232 [DEBUG] [Thread-120614] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:32:59.253 [DEBUG] [Thread-120614] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:32:59.253 [INFO] [Thread-120614] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:32:59.256 [DEBUG] [Thread-120614] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:32:59.256 [DEBUG] [Thread-120614] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:32:59.256 [DEBUG] [Thread-120614] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:32:59.256 [DEBUG] [Thread-120614] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:32:59.256 [DEBUG] [Thread-120614] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:32:59.256 [DEBUG] [Thread-120614] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:32:59.256 [DEBUG] [Thread-120614] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:32:59.256 [DEBUG] [Thread-120614] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:32:59.256 [DEBUG] [Thread-120614] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:32:59.256 [DEBUG] [Thread-120614] [transport.py] [_log()] client lang: <none>
2025-11-03T18:32:59.256 [DEBUG] [Thread-120614] [transport.py] [_log()] server lang: <none>
2025-11-03T18:32:59.256 [DEBUG] [Thread-120614] [transport.py] [_log()] kex follows: False
2025-11-03T18:32:59.256 [DEBUG] [Thread-120614] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:32:59.256 [DEBUG] [Thread-120614] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:32:59.256 [DEBUG] [Thread-120614] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:32:59.257 [DEBUG] [Thread-120614] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:32:59.257 [DEBUG] [Thread-120614] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:32:59.257 [DEBUG] [Thread-120614] [transport.py] [_log()] Compression: none
2025-11-03T18:32:59.257 [DEBUG] [Thread-120614] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:32:59.274 [DEBUG] [Thread-120614] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:32:59.274 [DEBUG] [Thread-120614] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:32:59.275 [DEBUG] [Thread-120614] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:32:59.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:32:59.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:32:59.277 [DEBUG] [Thread-120614] [transport.py] [_log()] userauth is OK
2025-11-03T18:32:59.277 [DEBUG] [Thread-120614] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:32:59.277 [DEBUG] [Thread-120614] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:32:59.277 [DEBUG] [Thread-120614] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:32:59.277 [DEBUG] [Thread-120614] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:32:59.302 [INFO] [Thread-120614] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:32:59.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:32:59.929 [DEBUG] [Thread-120614] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:32:59.929 [DEBUG] [Thread-120614] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:32:59.929 [DEBUG] [Thread-120614] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:32:59.970 [DEBUG] [Thread-120614] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:32:59.970 [DEBUG] [Thread-120614] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:32:59.981 [DEBUG] [Thread-120614] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:32:59.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:32:59.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:32:59.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:32:59.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:32:59.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:32:59.997 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:32:59.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:32:59.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:32:59.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:32:59.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.688991 -999.00  +23.90  25.27      8  -11.00 1 1 1 1 1   887    0 35.32 29.69 ----- 26.3 25.3 298.4 31.6 24.6 -32.3 24.9 -30.9 25.2 -31.3 25.4 -32.1
2025-11-03T18:32:59.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:32:59.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:32:59.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.688991
2025-11-03T18:32:59.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:32:59.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:32:59.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:32:59.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:32:59.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:32:59.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:32:42', tmtdew=44.0, humidity=4.12, cloud=0.0, wind=27.51, temperature=23.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:32:08.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:32:59.998 [DEBUG] [Thread-120614] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:33:00.073 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:33:00.084 [DEBUG] [Thread-120617] [transport.py] [_log()] starting thread (client mode): 0x141da380
2025-11-03T18:33:00.084 [DEBUG] [Thread-120617] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:33:00.099 [DEBUG] [Thread-120617] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:33:00.099 [INFO] [Thread-120617] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:33:00.106 [DEBUG] [Thread-120617] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:33:00.106 [DEBUG] [Thread-120617] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:33:00.106 [DEBUG] [Thread-120617] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:33:00.106 [DEBUG] [Thread-120617] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:33:00.106 [DEBUG] [Thread-120617] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:33:00.106 [DEBUG] [Thread-120617] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:33:00.106 [DEBUG] [Thread-120617] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:33:00.106 [DEBUG] [Thread-120617] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:33:00.106 [DEBUG] [Thread-120617] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:33:00.106 [DEBUG] [Thread-120617] [transport.py] [_log()] client lang: <none>
2025-11-03T18:33:00.107 [DEBUG] [Thread-120617] [transport.py] [_log()] server lang: <none>
2025-11-03T18:33:00.107 [DEBUG] [Thread-120617] [transport.py] [_log()] kex follows: False
2025-11-03T18:33:00.107 [DEBUG] [Thread-120617] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:33:00.107 [DEBUG] [Thread-120617] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:33:00.107 [DEBUG] [Thread-120617] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:33:00.107 [DEBUG] [Thread-120617] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:33:00.107 [DEBUG] [Thread-120617] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:33:00.107 [DEBUG] [Thread-120617] [transport.py] [_log()] Compression: none
2025-11-03T18:33:00.107 [DEBUG] [Thread-120617] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:33:00.163 [DEBUG] [Thread-120617] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:33:00.164 [DEBUG] [Thread-120617] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:33:00.164 [DEBUG] [Thread-120617] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:33:00.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:33:00.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:33:00.221 [DEBUG] [Thread-120617] [transport.py] [_log()] userauth is OK
2025-11-03T18:33:00.221 [DEBUG] [Thread-120617] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:33:00.221 [DEBUG] [Thread-120617] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:33:00.221 [DEBUG] [Thread-120617] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:33:00.221 [DEBUG] [Thread-120617] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:33:00.238 [INFO] [Thread-120617] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:33:00.238 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:33:00.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:33:01.055 [DEBUG] [Thread-120617] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:33:01.055 [DEBUG] [Thread-120617] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:33:01.102 [DEBUG] [Thread-120617] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:33:01.102 [DEBUG] [Thread-120617] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:33:01.110 [DEBUG] [Thread-120617] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:33:01.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:33:01.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:33:01.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:33:01.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:33:01.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:33:01.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:33:01.141 [DEBUG] [Thread-120617] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:33:02.935 [DEBUG] [Thread-120619 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:33:17.977 [DEBUG] [Thread-120620 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:33:31.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:33:31.164 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:33:31.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:33:31.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 33, 14), 43.92, 4.15, 0.0, 30.01, 23.82, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:33:31.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:33:14
2025-11-03T18:33:31.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:33:32.109 [DEBUG] [Thread-120621] [transport.py] [_log()] starting thread (client mode): 0x141d9510
2025-11-03T18:33:32.110 [DEBUG] [Thread-120621] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:33:32.130 [DEBUG] [Thread-120621] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:33:32.130 [INFO] [Thread-120621] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:33:32.133 [DEBUG] [Thread-120621] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:33:32.133 [DEBUG] [Thread-120621] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:33:32.133 [DEBUG] [Thread-120621] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:33:32.134 [DEBUG] [Thread-120621] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:33:32.134 [DEBUG] [Thread-120621] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:33:32.134 [DEBUG] [Thread-120621] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:33:32.134 [DEBUG] [Thread-120621] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:33:32.134 [DEBUG] [Thread-120621] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:33:32.134 [DEBUG] [Thread-120621] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:33:32.134 [DEBUG] [Thread-120621] [transport.py] [_log()] client lang: <none>
2025-11-03T18:33:32.134 [DEBUG] [Thread-120621] [transport.py] [_log()] server lang: <none>
2025-11-03T18:33:32.134 [DEBUG] [Thread-120621] [transport.py] [_log()] kex follows: False
2025-11-03T18:33:32.134 [DEBUG] [Thread-120621] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:33:32.134 [DEBUG] [Thread-120621] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:33:32.134 [DEBUG] [Thread-120621] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:33:32.134 [DEBUG] [Thread-120621] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:33:32.134 [DEBUG] [Thread-120621] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:33:32.134 [DEBUG] [Thread-120621] [transport.py] [_log()] Compression: none
2025-11-03T18:33:32.134 [DEBUG] [Thread-120621] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:33:32.158 [DEBUG] [Thread-120621] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:33:32.159 [DEBUG] [Thread-120621] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:33:32.159 [DEBUG] [Thread-120621] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:33:32.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:33:32.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:33:32.165 [DEBUG] [Thread-120621] [transport.py] [_log()] userauth is OK
2025-11-03T18:33:32.165 [DEBUG] [Thread-120621] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:33:32.165 [DEBUG] [Thread-120621] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:33:32.165 [DEBUG] [Thread-120621] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:33:32.165 [DEBUG] [Thread-120621] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:33:32.203 [INFO] [Thread-120621] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:33:32.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:33:32.694 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:33:32.695 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:33:32.893 [DEBUG] [Thread-120621] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:33:32.894 [DEBUG] [Thread-120621] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:33:32.894 [DEBUG] [Thread-120621] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:33:32.934 [DEBUG] [Thread-120621] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:33:32.934 [DEBUG] [Thread-120621] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:33:32.938 [DEBUG] [Thread-120621] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:33:32.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:33:32.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:33:32.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:33:32.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:33:32.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:33:32.971 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:33:32.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:33:32.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:33:32.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:33:32.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.689338 -999.00  +23.80  34.19      8  -11.00 1 1 2 1 1   887    0 35.64 29.21 ----- 34.2 34.2 286.2 40.6 24.6 -32.5 24.9 -31.3 25.1 -32.4 25.4 -32.1
2025-11-03T18:33:32.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:33:32.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:33:32.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.689338
2025-11-03T18:33:32.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:33:32.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:33:32.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:33:32.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:33:32.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:33:32.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:33:14', tmtdew=43.92, humidity=4.15, cloud=0.0, wind=30.01, temperature=23.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:32:38.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:33:32.974 [DEBUG] [Thread-120621] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:33:33.012 [DEBUG] [Thread-120624 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:33:33.062 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:33:33.074 [DEBUG] [Thread-120625] [transport.py] [_log()] starting thread (client mode): 0x1174d960
2025-11-03T18:33:33.074 [DEBUG] [Thread-120625] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:33:33.089 [DEBUG] [Thread-120625] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:33:33.089 [INFO] [Thread-120625] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:33:33.097 [DEBUG] [Thread-120625] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:33:33.097 [DEBUG] [Thread-120625] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:33:33.098 [DEBUG] [Thread-120625] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:33:33.098 [DEBUG] [Thread-120625] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:33:33.098 [DEBUG] [Thread-120625] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:33:33.098 [DEBUG] [Thread-120625] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:33:33.098 [DEBUG] [Thread-120625] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:33:33.098 [DEBUG] [Thread-120625] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:33:33.098 [DEBUG] [Thread-120625] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:33:33.098 [DEBUG] [Thread-120625] [transport.py] [_log()] client lang: <none>
2025-11-03T18:33:33.099 [DEBUG] [Thread-120625] [transport.py] [_log()] server lang: <none>
2025-11-03T18:33:33.099 [DEBUG] [Thread-120625] [transport.py] [_log()] kex follows: False
2025-11-03T18:33:33.099 [DEBUG] [Thread-120625] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:33:33.099 [DEBUG] [Thread-120625] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:33:33.099 [DEBUG] [Thread-120625] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:33:33.099 [DEBUG] [Thread-120625] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:33:33.099 [DEBUG] [Thread-120625] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:33:33.099 [DEBUG] [Thread-120625] [transport.py] [_log()] Compression: none
2025-11-03T18:33:33.100 [DEBUG] [Thread-120625] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:33:33.163 [DEBUG] [Thread-120625] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:33:33.163 [DEBUG] [Thread-120625] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:33:33.164 [DEBUG] [Thread-120625] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:33:33.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:33:33.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:33:33.222 [DEBUG] [Thread-120625] [transport.py] [_log()] userauth is OK
2025-11-03T18:33:33.222 [DEBUG] [Thread-120625] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:33:33.222 [DEBUG] [Thread-120625] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:33:33.222 [DEBUG] [Thread-120625] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:33:33.223 [DEBUG] [Thread-120625] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:33:33.241 [INFO] [Thread-120625] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:33:33.241 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:33:33.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:33:34.069 [DEBUG] [Thread-120625] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:33:34.070 [DEBUG] [Thread-120625] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:33:34.121 [DEBUG] [Thread-120625] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:33:34.121 [DEBUG] [Thread-120625] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:33:34.130 [DEBUG] [Thread-120625] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:33:34.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:33:34.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:33:34.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:33:34.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:33:34.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:33:34.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:33:34.181 [DEBUG] [Thread-120625] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:33:39.807 [DEBUG] [Thread-120627 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:33:48.050 [DEBUG] [Thread-120628 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:34:03.079 [DEBUG] [Thread-120629 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:34:04.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:34:04.204 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:34:04.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:34:04.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 33, 47), 44.18, 4.07, 0.0, 33.26, 23.82, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:34:04.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:33:47
2025-11-03T18:34:05.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:34:05.191 [DEBUG] [Thread-120630] [transport.py] [_log()] starting thread (client mode): 0x11761d80
2025-11-03T18:34:05.191 [DEBUG] [Thread-120630] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:34:05.202 [DEBUG] [Thread-120630] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:34:05.202 [INFO] [Thread-120630] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:34:05.205 [DEBUG] [Thread-120630] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:34:05.205 [DEBUG] [Thread-120630] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:34:05.206 [DEBUG] [Thread-120630] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:34:05.206 [DEBUG] [Thread-120630] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:34:05.206 [DEBUG] [Thread-120630] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:34:05.206 [DEBUG] [Thread-120630] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:34:05.206 [DEBUG] [Thread-120630] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:34:05.206 [DEBUG] [Thread-120630] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:34:05.206 [DEBUG] [Thread-120630] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:34:05.206 [DEBUG] [Thread-120630] [transport.py] [_log()] client lang: <none>
2025-11-03T18:34:05.206 [DEBUG] [Thread-120630] [transport.py] [_log()] server lang: <none>
2025-11-03T18:34:05.206 [DEBUG] [Thread-120630] [transport.py] [_log()] kex follows: False
2025-11-03T18:34:05.206 [DEBUG] [Thread-120630] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:34:05.206 [DEBUG] [Thread-120630] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:34:05.207 [DEBUG] [Thread-120630] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:34:05.207 [DEBUG] [Thread-120630] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:34:05.207 [DEBUG] [Thread-120630] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:34:05.207 [DEBUG] [Thread-120630] [transport.py] [_log()] Compression: none
2025-11-03T18:34:05.207 [DEBUG] [Thread-120630] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:34:05.225 [DEBUG] [Thread-120630] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:34:05.225 [DEBUG] [Thread-120630] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:34:05.226 [DEBUG] [Thread-120630] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:34:05.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:34:05.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:34:05.228 [DEBUG] [Thread-120630] [transport.py] [_log()] userauth is OK
2025-11-03T18:34:05.228 [DEBUG] [Thread-120630] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:34:05.228 [DEBUG] [Thread-120630] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:34:05.228 [DEBUG] [Thread-120630] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:34:05.229 [DEBUG] [Thread-120630] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:34:05.248 [INFO] [Thread-120630] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:34:05.249 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:34:05.922 [DEBUG] [Thread-120630] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:34:05.922 [DEBUG] [Thread-120630] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:34:05.922 [DEBUG] [Thread-120630] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:34:05.962 [DEBUG] [Thread-120630] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:34:05.962 [DEBUG] [Thread-120630] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:34:05.965 [DEBUG] [Thread-120630] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:34:05.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:34:05.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:34:05.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:34:05.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:34:05.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:34:05.982 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:34:05.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:34:05.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:34:05.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:34:05.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.689685 -999.00  +23.70  27.64      9  -11.00 1 1 1 1 1   887    0 35.86 30.61 ----- 23.9 27.6 309.0 39.7 24.6 -32.3 24.8 -31.3 25.2 -31.8 25.3 -32.5
2025-11-03T18:34:05.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:34:05.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:34:05.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.689685
2025-11-03T18:34:05.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:34:05.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:34:05.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:34:05.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:34:05.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:34:05.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:33:47', tmtdew=44.18, humidity=4.07, cloud=0.0, wind=33.26, temperature=23.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:33:08.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:34:05.983 [DEBUG] [Thread-120630] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:34:06.055 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:34:06.067 [DEBUG] [Thread-120633] [transport.py] [_log()] starting thread (client mode): 0xeda1990
2025-11-03T18:34:06.067 [DEBUG] [Thread-120633] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:34:06.085 [DEBUG] [Thread-120633] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:34:06.085 [INFO] [Thread-120633] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:34:06.093 [DEBUG] [Thread-120633] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:34:06.093 [DEBUG] [Thread-120633] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:34:06.093 [DEBUG] [Thread-120633] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:34:06.093 [DEBUG] [Thread-120633] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:34:06.093 [DEBUG] [Thread-120633] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:34:06.093 [DEBUG] [Thread-120633] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:34:06.093 [DEBUG] [Thread-120633] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:34:06.093 [DEBUG] [Thread-120633] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:34:06.093 [DEBUG] [Thread-120633] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:34:06.093 [DEBUG] [Thread-120633] [transport.py] [_log()] client lang: <none>
2025-11-03T18:34:06.093 [DEBUG] [Thread-120633] [transport.py] [_log()] server lang: <none>
2025-11-03T18:34:06.093 [DEBUG] [Thread-120633] [transport.py] [_log()] kex follows: False
2025-11-03T18:34:06.093 [DEBUG] [Thread-120633] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:34:06.093 [DEBUG] [Thread-120633] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:34:06.093 [DEBUG] [Thread-120633] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:34:06.093 [DEBUG] [Thread-120633] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:34:06.093 [DEBUG] [Thread-120633] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:34:06.093 [DEBUG] [Thread-120633] [transport.py] [_log()] Compression: none
2025-11-03T18:34:06.093 [DEBUG] [Thread-120633] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:34:06.148 [DEBUG] [Thread-120633] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:34:06.148 [DEBUG] [Thread-120633] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:34:06.148 [DEBUG] [Thread-120633] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:34:06.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:34:06.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:34:06.206 [DEBUG] [Thread-120633] [transport.py] [_log()] userauth is OK
2025-11-03T18:34:06.206 [DEBUG] [Thread-120633] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:34:06.206 [DEBUG] [Thread-120633] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:34:06.206 [DEBUG] [Thread-120633] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:34:06.206 [DEBUG] [Thread-120633] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:34:06.220 [INFO] [Thread-120633] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:34:06.220 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:34:06.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:34:07.042 [DEBUG] [Thread-120633] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:34:07.042 [DEBUG] [Thread-120633] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:34:07.090 [DEBUG] [Thread-120633] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:34:07.090 [DEBUG] [Thread-120633] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:34:07.100 [DEBUG] [Thread-120633] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:34:07.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:34:07.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:34:07.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:34:07.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:34:07.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:34:07.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:34:07.138 [DEBUG] [Thread-120633] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:34:18.112 [DEBUG] [Thread-120635 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:34:32.837 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:34:32.838 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:34:33.155 [DEBUG] [Thread-120636 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:34:37.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:34:37.161 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:34:37.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:34:37.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 34, 19), 44.05, 4.12, 0.0, 33.88, 23.84, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:34:37.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:34:19
2025-11-03T18:34:38.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:34:38.171 [DEBUG] [Thread-120637] [transport.py] [_log()] starting thread (client mode): 0xeda1b70
2025-11-03T18:34:38.171 [DEBUG] [Thread-120637] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:34:38.192 [DEBUG] [Thread-120637] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:34:38.192 [INFO] [Thread-120637] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:34:38.196 [DEBUG] [Thread-120637] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:34:38.196 [DEBUG] [Thread-120637] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:34:38.196 [DEBUG] [Thread-120637] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:34:38.196 [DEBUG] [Thread-120637] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:34:38.196 [DEBUG] [Thread-120637] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:34:38.197 [DEBUG] [Thread-120637] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:34:38.197 [DEBUG] [Thread-120637] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:34:38.197 [DEBUG] [Thread-120637] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:34:38.197 [DEBUG] [Thread-120637] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:34:38.197 [DEBUG] [Thread-120637] [transport.py] [_log()] client lang: <none>
2025-11-03T18:34:38.197 [DEBUG] [Thread-120637] [transport.py] [_log()] server lang: <none>
2025-11-03T18:34:38.197 [DEBUG] [Thread-120637] [transport.py] [_log()] kex follows: False
2025-11-03T18:34:38.197 [DEBUG] [Thread-120637] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:34:38.197 [DEBUG] [Thread-120637] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:34:38.197 [DEBUG] [Thread-120637] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:34:38.197 [DEBUG] [Thread-120637] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:34:38.198 [DEBUG] [Thread-120637] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:34:38.198 [DEBUG] [Thread-120637] [transport.py] [_log()] Compression: none
2025-11-03T18:34:38.198 [DEBUG] [Thread-120637] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:34:38.223 [DEBUG] [Thread-120637] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:34:38.224 [DEBUG] [Thread-120637] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:34:38.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:34:38.225 [DEBUG] [Thread-120637] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:34:38.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:34:38.236 [DEBUG] [Thread-120637] [transport.py] [_log()] userauth is OK
2025-11-03T18:34:38.236 [DEBUG] [Thread-120637] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:34:38.237 [DEBUG] [Thread-120637] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:34:38.237 [DEBUG] [Thread-120637] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:34:38.237 [DEBUG] [Thread-120637] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:34:38.272 [INFO] [Thread-120637] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:34:38.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:34:39.553 [DEBUG] [Thread-120637] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:34:39.562 [DEBUG] [Thread-120637] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:34:39.562 [DEBUG] [Thread-120637] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:34:39.594 [DEBUG] [Thread-120637] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:34:39.594 [DEBUG] [Thread-120637] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:34:39.597 [DEBUG] [Thread-120637] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:34:39.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:34:39.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:34:39.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:34:39.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:34:39.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:34:39.618 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:34:39.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:34:39.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:34:39.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:34:39.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.690032 -999.00  +23.70  31.19      8  -11.10 1 1 2 1 1   887    0 35.54 31.95 ----- 28.4 31.2 298.4 33.8 24.6 -32.4 24.8 -31.1 25.1 -31.4 25.4 -32.2
2025-11-03T18:34:39.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:34:39.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:34:39.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.690032
2025-11-03T18:34:39.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:34:39.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:34:39.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:34:39.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:34:39.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:34:39.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:34:19', tmtdew=44.05, humidity=4.12, cloud=0.0, wind=33.88, temperature=23.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:33:38.765', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:34:39.619 [DEBUG] [Thread-120637] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:34:39.699 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:34:39.712 [DEBUG] [Thread-120640] [transport.py] [_log()] starting thread (client mode): 0x11760d30
2025-11-03T18:34:39.712 [DEBUG] [Thread-120640] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:34:39.730 [DEBUG] [Thread-120640] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:34:39.730 [INFO] [Thread-120640] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:34:39.740 [DEBUG] [Thread-120640] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:34:39.740 [DEBUG] [Thread-120640] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:34:39.740 [DEBUG] [Thread-120640] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:34:39.740 [DEBUG] [Thread-120640] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:34:39.740 [DEBUG] [Thread-120640] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:34:39.741 [DEBUG] [Thread-120640] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:34:39.741 [DEBUG] [Thread-120640] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:34:39.741 [DEBUG] [Thread-120640] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:34:39.741 [DEBUG] [Thread-120640] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:34:39.741 [DEBUG] [Thread-120640] [transport.py] [_log()] client lang: <none>
2025-11-03T18:34:39.741 [DEBUG] [Thread-120640] [transport.py] [_log()] server lang: <none>
2025-11-03T18:34:39.741 [DEBUG] [Thread-120640] [transport.py] [_log()] kex follows: False
2025-11-03T18:34:39.741 [DEBUG] [Thread-120640] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:34:39.741 [DEBUG] [Thread-120640] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:34:39.741 [DEBUG] [Thread-120640] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:34:39.742 [DEBUG] [Thread-120640] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:34:39.742 [DEBUG] [Thread-120640] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:34:39.742 [DEBUG] [Thread-120640] [transport.py] [_log()] Compression: none
2025-11-03T18:34:39.742 [DEBUG] [Thread-120640] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:34:39.795 [DEBUG] [Thread-120640] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:34:39.795 [DEBUG] [Thread-120640] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:34:39.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:34:39.797 [DEBUG] [Thread-120640] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:34:39.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:34:39.850 [DEBUG] [Thread-120640] [transport.py] [_log()] userauth is OK
2025-11-03T18:34:39.850 [DEBUG] [Thread-120640] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:34:39.850 [DEBUG] [Thread-120640] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:34:39.850 [DEBUG] [Thread-120640] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:34:39.850 [DEBUG] [Thread-120640] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:34:39.866 [INFO] [Thread-120640] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:34:39.866 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:34:39.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:34:39.876 [DEBUG] [Thread-120642 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:34:40.903 [DEBUG] [Thread-120640] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:34:40.903 [DEBUG] [Thread-120640] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:34:40.951 [DEBUG] [Thread-120640] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:34:40.951 [DEBUG] [Thread-120640] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:34:40.960 [DEBUG] [Thread-120640] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:34:40.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:34:40.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:34:40.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:34:40.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:34:40.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:34:40.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:34:40.998 [DEBUG] [Thread-120640] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:34:48.193 [DEBUG] [Thread-120643 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:35:03.250 [DEBUG] [Thread-120644 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:35:11.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:35:11.020 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:35:11.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:35:11.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 34, 52), 44.07, 4.09, 0.0, 26.54, 23.75, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:35:11.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:34:52
2025-11-03T18:35:11.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:35:12.019 [DEBUG] [Thread-120645] [transport.py] [_log()] starting thread (client mode): 0x1179a3e0
2025-11-03T18:35:12.019 [DEBUG] [Thread-120645] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:35:12.039 [DEBUG] [Thread-120645] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:35:12.039 [INFO] [Thread-120645] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:35:12.043 [DEBUG] [Thread-120645] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:35:12.043 [DEBUG] [Thread-120645] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:35:12.043 [DEBUG] [Thread-120645] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:35:12.044 [DEBUG] [Thread-120645] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:35:12.044 [DEBUG] [Thread-120645] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:35:12.044 [DEBUG] [Thread-120645] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:35:12.044 [DEBUG] [Thread-120645] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:35:12.044 [DEBUG] [Thread-120645] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:35:12.044 [DEBUG] [Thread-120645] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:35:12.044 [DEBUG] [Thread-120645] [transport.py] [_log()] client lang: <none>
2025-11-03T18:35:12.044 [DEBUG] [Thread-120645] [transport.py] [_log()] server lang: <none>
2025-11-03T18:35:12.044 [DEBUG] [Thread-120645] [transport.py] [_log()] kex follows: False
2025-11-03T18:35:12.044 [DEBUG] [Thread-120645] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:35:12.044 [DEBUG] [Thread-120645] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:35:12.044 [DEBUG] [Thread-120645] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:35:12.045 [DEBUG] [Thread-120645] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:35:12.045 [DEBUG] [Thread-120645] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:35:12.045 [DEBUG] [Thread-120645] [transport.py] [_log()] Compression: none
2025-11-03T18:35:12.045 [DEBUG] [Thread-120645] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:35:12.063 [DEBUG] [Thread-120645] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:35:12.064 [DEBUG] [Thread-120645] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:35:12.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:35:12.066 [DEBUG] [Thread-120645] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:35:12.067 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:35:12.105 [DEBUG] [Thread-120645] [transport.py] [_log()] userauth is OK
2025-11-03T18:35:12.105 [DEBUG] [Thread-120645] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:35:12.105 [DEBUG] [Thread-120645] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:35:12.106 [DEBUG] [Thread-120645] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:35:12.106 [DEBUG] [Thread-120645] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:35:12.125 [INFO] [Thread-120645] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:35:12.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:35:13.482 [DEBUG] [Thread-120645] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:35:13.483 [DEBUG] [Thread-120645] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:35:13.483 [DEBUG] [Thread-120645] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:35:13.524 [DEBUG] [Thread-120645] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:35:13.525 [DEBUG] [Thread-120645] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:35:13.528 [DEBUG] [Thread-120645] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:35:13.539 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:35:13.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:35:13.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:35:13.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:35:13.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:35:13.550 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:35:13.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:35:13.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:35:13.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:35:13.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.690727 -999.00  +23.70  34.88      8  -11.10 1 1 2 1 1   887    0 35.23 31.33 ----- 36.2 34.9 311.6 39.6 24.6 -32.5 24.8 -31.3 25.1 -30.9 25.3 -32.1
2025-11-03T18:35:13.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:35:13.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:35:13.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.690727
2025-11-03T18:35:13.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:35:13.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:35:13.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:35:13.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:35:13.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:35:13.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:34:52', tmtdew=44.07, humidity=4.09, cloud=0.0, wind=26.54, temperature=23.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:34:38.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:35:13.554 [DEBUG] [Thread-120645] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:35:13.637 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:35:13.649 [DEBUG] [Thread-120648] [transport.py] [_log()] starting thread (client mode): 0x117615d0
2025-11-03T18:35:13.649 [DEBUG] [Thread-120648] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:35:13.662 [DEBUG] [Thread-120648] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:35:13.663 [INFO] [Thread-120648] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:35:13.670 [DEBUG] [Thread-120648] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:35:13.670 [DEBUG] [Thread-120648] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:35:13.670 [DEBUG] [Thread-120648] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:35:13.670 [DEBUG] [Thread-120648] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:35:13.670 [DEBUG] [Thread-120648] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:35:13.670 [DEBUG] [Thread-120648] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:35:13.670 [DEBUG] [Thread-120648] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:35:13.670 [DEBUG] [Thread-120648] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:35:13.670 [DEBUG] [Thread-120648] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:35:13.670 [DEBUG] [Thread-120648] [transport.py] [_log()] client lang: <none>
2025-11-03T18:35:13.670 [DEBUG] [Thread-120648] [transport.py] [_log()] server lang: <none>
2025-11-03T18:35:13.671 [DEBUG] [Thread-120648] [transport.py] [_log()] kex follows: False
2025-11-03T18:35:13.671 [DEBUG] [Thread-120648] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:35:13.671 [DEBUG] [Thread-120648] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:35:13.671 [DEBUG] [Thread-120648] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:35:13.671 [DEBUG] [Thread-120648] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:35:13.671 [DEBUG] [Thread-120648] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:35:13.671 [DEBUG] [Thread-120648] [transport.py] [_log()] Compression: none
2025-11-03T18:35:13.671 [DEBUG] [Thread-120648] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:35:13.727 [DEBUG] [Thread-120648] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:35:13.727 [DEBUG] [Thread-120648] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:35:13.728 [DEBUG] [Thread-120648] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:35:13.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:35:13.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:35:13.783 [DEBUG] [Thread-120648] [transport.py] [_log()] userauth is OK
2025-11-03T18:35:13.783 [DEBUG] [Thread-120648] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:35:13.784 [DEBUG] [Thread-120648] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:35:13.784 [DEBUG] [Thread-120648] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:35:13.784 [DEBUG] [Thread-120648] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:35:13.802 [INFO] [Thread-120648] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:35:13.803 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:35:13.803 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:35:14.628 [DEBUG] [Thread-120648] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:35:14.628 [DEBUG] [Thread-120648] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:35:14.676 [DEBUG] [Thread-120648] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:35:14.677 [DEBUG] [Thread-120648] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:35:14.686 [DEBUG] [Thread-120648] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:35:14.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:35:14.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:35:14.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:35:14.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:35:14.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:35:14.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:35:14.731 [DEBUG] [Thread-120648] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:35:18.281 [DEBUG] [Thread-120650 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:35:32.980 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:35:32.981 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:35:33.331 [DEBUG] [Thread-120651 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:35:39.935 [DEBUG] [Thread-120652 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:35:44.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:35:44.754 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:35:44.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:35:45.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 35, 24), 43.86, 4.17, 0.0, 28.92, 23.84, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:35:45.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:35:24
2025-11-03T18:35:45.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:35:45.759 [DEBUG] [Thread-120653] [transport.py] [_log()] starting thread (client mode): 0x1174dfc0
2025-11-03T18:35:45.759 [DEBUG] [Thread-120653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:35:45.778 [DEBUG] [Thread-120653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:35:45.778 [INFO] [Thread-120653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:35:45.781 [DEBUG] [Thread-120653] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:35:45.781 [DEBUG] [Thread-120653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:35:45.781 [DEBUG] [Thread-120653] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:35:45.781 [DEBUG] [Thread-120653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:35:45.781 [DEBUG] [Thread-120653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:35:45.781 [DEBUG] [Thread-120653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:35:45.781 [DEBUG] [Thread-120653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:35:45.781 [DEBUG] [Thread-120653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:35:45.781 [DEBUG] [Thread-120653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:35:45.781 [DEBUG] [Thread-120653] [transport.py] [_log()] client lang: <none>
2025-11-03T18:35:45.781 [DEBUG] [Thread-120653] [transport.py] [_log()] server lang: <none>
2025-11-03T18:35:45.781 [DEBUG] [Thread-120653] [transport.py] [_log()] kex follows: False
2025-11-03T18:35:45.781 [DEBUG] [Thread-120653] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:35:45.781 [DEBUG] [Thread-120653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:35:45.781 [DEBUG] [Thread-120653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:35:45.781 [DEBUG] [Thread-120653] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:35:45.781 [DEBUG] [Thread-120653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:35:45.781 [DEBUG] [Thread-120653] [transport.py] [_log()] Compression: none
2025-11-03T18:35:45.781 [DEBUG] [Thread-120653] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:35:45.800 [DEBUG] [Thread-120653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:35:45.800 [DEBUG] [Thread-120653] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:35:45.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:35:45.801 [DEBUG] [Thread-120653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:35:45.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:35:45.803 [DEBUG] [Thread-120653] [transport.py] [_log()] userauth is OK
2025-11-03T18:35:45.803 [DEBUG] [Thread-120653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:35:45.803 [DEBUG] [Thread-120653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:35:45.803 [DEBUG] [Thread-120653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:35:45.803 [DEBUG] [Thread-120653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:35:45.818 [INFO] [Thread-120653] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:35:45.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:35:46.410 [DEBUG] [Thread-120653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:35:46.411 [DEBUG] [Thread-120653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:35:46.420 [DEBUG] [Thread-120653] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:35:46.450 [DEBUG] [Thread-120653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:35:46.450 [DEBUG] [Thread-120653] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:35:46.453 [DEBUG] [Thread-120653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:35:46.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:35:46.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:35:46.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:35:46.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:35:46.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:35:46.470 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:35:46.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:35:46.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:35:46.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:35:46.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.691074 -999.00  +23.60  29.54      9  -11.00 1 1 1 1 1   887    0 34.85 31.57 ----- 35.4 29.5 300.2 36.4 24.6 -32.2 24.7 -31.1 25.1 -31.7 25.2 -32.0
2025-11-03T18:35:46.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:35:46.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:35:46.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.691074
2025-11-03T18:35:46.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:35:46.476 [DEBUG] [Thread-120653] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:35:46.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:35:46.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:35:46.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:35:46.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:35:46.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:35:24', tmtdew=43.86, humidity=4.17, cloud=0.0, wind=28.92, temperature=23.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:35:08.794', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:35:46.554 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:35:46.567 [DEBUG] [Thread-120656] [transport.py] [_log()] starting thread (client mode): 0x11799fc0
2025-11-03T18:35:46.567 [DEBUG] [Thread-120656] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:35:46.582 [DEBUG] [Thread-120656] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:35:46.582 [INFO] [Thread-120656] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:35:46.589 [DEBUG] [Thread-120656] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:35:46.590 [DEBUG] [Thread-120656] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:35:46.590 [DEBUG] [Thread-120656] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:35:46.590 [DEBUG] [Thread-120656] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:35:46.590 [DEBUG] [Thread-120656] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:35:46.590 [DEBUG] [Thread-120656] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:35:46.590 [DEBUG] [Thread-120656] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:35:46.590 [DEBUG] [Thread-120656] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:35:46.590 [DEBUG] [Thread-120656] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:35:46.590 [DEBUG] [Thread-120656] [transport.py] [_log()] client lang: <none>
2025-11-03T18:35:46.590 [DEBUG] [Thread-120656] [transport.py] [_log()] server lang: <none>
2025-11-03T18:35:46.590 [DEBUG] [Thread-120656] [transport.py] [_log()] kex follows: False
2025-11-03T18:35:46.590 [DEBUG] [Thread-120656] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:35:46.590 [DEBUG] [Thread-120656] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:35:46.590 [DEBUG] [Thread-120656] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:35:46.590 [DEBUG] [Thread-120656] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:35:46.590 [DEBUG] [Thread-120656] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:35:46.590 [DEBUG] [Thread-120656] [transport.py] [_log()] Compression: none
2025-11-03T18:35:46.590 [DEBUG] [Thread-120656] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:35:46.645 [DEBUG] [Thread-120656] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:35:46.645 [DEBUG] [Thread-120656] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:35:46.645 [DEBUG] [Thread-120656] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:35:46.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:35:46.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:35:46.704 [DEBUG] [Thread-120656] [transport.py] [_log()] userauth is OK
2025-11-03T18:35:46.704 [DEBUG] [Thread-120656] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:35:46.704 [DEBUG] [Thread-120656] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:35:46.704 [DEBUG] [Thread-120656] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:35:46.704 [DEBUG] [Thread-120656] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:35:46.721 [INFO] [Thread-120656] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:35:46.721 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:35:46.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:35:47.554 [DEBUG] [Thread-120656] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:35:47.554 [DEBUG] [Thread-120656] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:35:47.602 [DEBUG] [Thread-120656] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:35:47.603 [DEBUG] [Thread-120656] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:35:47.612 [DEBUG] [Thread-120656] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:35:47.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:35:47.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:35:47.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:35:47.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:35:47.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:35:47.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:35:47.649 [DEBUG] [Thread-120656] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:35:48.377 [DEBUG] [Thread-120658 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:36:03.427 [DEBUG] [Thread-120659 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:36:17.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:36:17.671 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:36:17.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:36:18.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 35, 56), 43.95, 4.15, 0.0, 31.83, 23.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:36:18.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:35:56
2025-11-03T18:36:18.457 [DEBUG] [Thread-120660 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:36:18.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:36:18.638 [DEBUG] [Thread-120661] [transport.py] [_log()] starting thread (client mode): 0x141d96c0
2025-11-03T18:36:18.638 [DEBUG] [Thread-120661] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:36:18.659 [DEBUG] [Thread-120661] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:36:18.659 [INFO] [Thread-120661] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:36:18.662 [DEBUG] [Thread-120661] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:36:18.662 [DEBUG] [Thread-120661] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:36:18.662 [DEBUG] [Thread-120661] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:36:18.663 [DEBUG] [Thread-120661] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:36:18.663 [DEBUG] [Thread-120661] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:36:18.663 [DEBUG] [Thread-120661] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:36:18.663 [DEBUG] [Thread-120661] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:36:18.663 [DEBUG] [Thread-120661] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:36:18.663 [DEBUG] [Thread-120661] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:36:18.663 [DEBUG] [Thread-120661] [transport.py] [_log()] client lang: <none>
2025-11-03T18:36:18.663 [DEBUG] [Thread-120661] [transport.py] [_log()] server lang: <none>
2025-11-03T18:36:18.663 [DEBUG] [Thread-120661] [transport.py] [_log()] kex follows: False
2025-11-03T18:36:18.663 [DEBUG] [Thread-120661] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:36:18.663 [DEBUG] [Thread-120661] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:36:18.663 [DEBUG] [Thread-120661] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:36:18.663 [DEBUG] [Thread-120661] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:36:18.663 [DEBUG] [Thread-120661] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:36:18.663 [DEBUG] [Thread-120661] [transport.py] [_log()] Compression: none
2025-11-03T18:36:18.663 [DEBUG] [Thread-120661] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:36:18.677 [DEBUG] [Thread-120661] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:36:18.677 [DEBUG] [Thread-120661] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:36:18.677 [DEBUG] [Thread-120661] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:36:18.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:36:18.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:36:18.678 [DEBUG] [Thread-120661] [transport.py] [_log()] userauth is OK
2025-11-03T18:36:18.678 [DEBUG] [Thread-120661] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:36:18.678 [DEBUG] [Thread-120661] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:36:18.678 [DEBUG] [Thread-120661] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:36:18.678 [DEBUG] [Thread-120661] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:36:18.694 [INFO] [Thread-120661] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:36:18.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:36:19.329 [DEBUG] [Thread-120661] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:36:19.338 [DEBUG] [Thread-120661] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:36:19.338 [DEBUG] [Thread-120661] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:36:19.370 [DEBUG] [Thread-120661] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:36:19.370 [DEBUG] [Thread-120661] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:36:19.373 [DEBUG] [Thread-120661] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:36:19.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:36:19.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:36:19.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:36:19.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:36:19.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:36:19.391 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:36:19.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:36:19.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:36:19.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:36:19.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.691421 -999.00  +23.60  29.92      9  -11.10 1 1 1 1 1   887    0 35.96 33.21 ----- 28.3 29.9 300.0 38.8 24.5 -32.2 24.8 -31.3 25.0 -31.5 25.2 -32.3
2025-11-03T18:36:19.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:36:19.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:36:19.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.691421
2025-11-03T18:36:19.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:36:19.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:36:19.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:36:19.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:36:19.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:36:19.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:35:56', tmtdew=43.95, humidity=4.15, cloud=0.0, wind=31.83, temperature=23.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:35:38.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:36:19.393 [DEBUG] [Thread-120661] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:36:19.466 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:36:19.478 [DEBUG] [Thread-120664] [transport.py] [_log()] starting thread (client mode): 0xed22590
2025-11-03T18:36:19.478 [DEBUG] [Thread-120664] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:36:19.492 [DEBUG] [Thread-120664] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:36:19.492 [INFO] [Thread-120664] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:36:19.500 [DEBUG] [Thread-120664] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:36:19.500 [DEBUG] [Thread-120664] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:36:19.500 [DEBUG] [Thread-120664] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:36:19.500 [DEBUG] [Thread-120664] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:36:19.500 [DEBUG] [Thread-120664] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:36:19.500 [DEBUG] [Thread-120664] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:36:19.500 [DEBUG] [Thread-120664] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:36:19.500 [DEBUG] [Thread-120664] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:36:19.500 [DEBUG] [Thread-120664] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:36:19.500 [DEBUG] [Thread-120664] [transport.py] [_log()] client lang: <none>
2025-11-03T18:36:19.500 [DEBUG] [Thread-120664] [transport.py] [_log()] server lang: <none>
2025-11-03T18:36:19.500 [DEBUG] [Thread-120664] [transport.py] [_log()] kex follows: False
2025-11-03T18:36:19.500 [DEBUG] [Thread-120664] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:36:19.500 [DEBUG] [Thread-120664] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:36:19.500 [DEBUG] [Thread-120664] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:36:19.500 [DEBUG] [Thread-120664] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:36:19.500 [DEBUG] [Thread-120664] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:36:19.500 [DEBUG] [Thread-120664] [transport.py] [_log()] Compression: none
2025-11-03T18:36:19.500 [DEBUG] [Thread-120664] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:36:19.558 [DEBUG] [Thread-120664] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:36:19.558 [DEBUG] [Thread-120664] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:36:19.558 [DEBUG] [Thread-120664] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:36:19.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:36:19.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:36:19.615 [DEBUG] [Thread-120664] [transport.py] [_log()] userauth is OK
2025-11-03T18:36:19.615 [DEBUG] [Thread-120664] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:36:19.615 [DEBUG] [Thread-120664] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:36:19.615 [DEBUG] [Thread-120664] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:36:19.615 [DEBUG] [Thread-120664] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:36:19.629 [INFO] [Thread-120664] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:36:19.630 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:36:19.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:36:20.446 [DEBUG] [Thread-120664] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:36:20.446 [DEBUG] [Thread-120664] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:36:20.494 [DEBUG] [Thread-120664] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:36:20.494 [DEBUG] [Thread-120664] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:36:20.503 [DEBUG] [Thread-120664] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:36:20.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:36:20.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:36:20.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:36:20.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:36:20.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:36:20.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:36:20.550 [DEBUG] [Thread-120664] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:36:33.120 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:36:33.122 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:36:33.499 [DEBUG] [Thread-120666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:36:40.120 [DEBUG] [Thread-120667 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:36:48.554 [DEBUG] [Thread-120668 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:36:50.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:36:50.572 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:36:50.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:36:51.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 36, 29), 43.87, 4.18, 0.0, 28.64, 23.82, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:36:51.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:36:29
2025-11-03T18:36:51.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:36:51.625 [DEBUG] [Thread-120669] [transport.py] [_log()] starting thread (client mode): 0x117ebb20
2025-11-03T18:36:51.625 [DEBUG] [Thread-120669] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:36:51.645 [DEBUG] [Thread-120669] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:36:51.645 [INFO] [Thread-120669] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:36:51.649 [DEBUG] [Thread-120669] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:36:51.649 [DEBUG] [Thread-120669] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:36:51.649 [DEBUG] [Thread-120669] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:36:51.649 [DEBUG] [Thread-120669] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:36:51.649 [DEBUG] [Thread-120669] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:36:51.649 [DEBUG] [Thread-120669] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:36:51.649 [DEBUG] [Thread-120669] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:36:51.649 [DEBUG] [Thread-120669] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:36:51.649 [DEBUG] [Thread-120669] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:36:51.649 [DEBUG] [Thread-120669] [transport.py] [_log()] client lang: <none>
2025-11-03T18:36:51.649 [DEBUG] [Thread-120669] [transport.py] [_log()] server lang: <none>
2025-11-03T18:36:51.649 [DEBUG] [Thread-120669] [transport.py] [_log()] kex follows: False
2025-11-03T18:36:51.649 [DEBUG] [Thread-120669] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:36:51.649 [DEBUG] [Thread-120669] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:36:51.649 [DEBUG] [Thread-120669] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:36:51.649 [DEBUG] [Thread-120669] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:36:51.649 [DEBUG] [Thread-120669] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:36:51.649 [DEBUG] [Thread-120669] [transport.py] [_log()] Compression: none
2025-11-03T18:36:51.649 [DEBUG] [Thread-120669] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:36:51.667 [DEBUG] [Thread-120669] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:36:51.668 [DEBUG] [Thread-120669] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:36:51.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:36:51.670 [DEBUG] [Thread-120669] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:36:51.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:36:51.672 [DEBUG] [Thread-120669] [transport.py] [_log()] userauth is OK
2025-11-03T18:36:51.672 [DEBUG] [Thread-120669] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:36:51.672 [DEBUG] [Thread-120669] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:36:51.672 [DEBUG] [Thread-120669] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:36:51.672 [DEBUG] [Thread-120669] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:36:51.697 [INFO] [Thread-120669] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:36:51.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:36:52.337 [DEBUG] [Thread-120669] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:36:52.337 [DEBUG] [Thread-120669] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:36:52.338 [DEBUG] [Thread-120669] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:36:52.378 [DEBUG] [Thread-120669] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:36:52.378 [DEBUG] [Thread-120669] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:36:52.382 [DEBUG] [Thread-120669] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:36:52.394 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:36:52.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:36:52.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:36:52.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:36:52.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:36:52.406 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:36:52.406 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:36:52.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:36:52.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:36:52.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.691768 -999.00  +23.50  25.28      9  -11.10 1 1 1 1 1   887    0 35.74 30.06 ----- 25.1 25.3 307.6 38.1 24.5 -32.3 24.7 -31.2 25.0 -31.8 25.2 -32.3
2025-11-03T18:36:52.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:36:52.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:36:52.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.691768
2025-11-03T18:36:52.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:36:52.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:36:52.409 [DEBUG] [Thread-120669] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:36:52.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:36:52.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:36:52.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:36:52.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:36:29', tmtdew=43.87, humidity=4.18, cloud=0.0, wind=28.64, temperature=23.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:36:08.755', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:36:52.493 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:36:52.506 [DEBUG] [Thread-120672] [transport.py] [_log()] starting thread (client mode): 0x117e8160
2025-11-03T18:36:52.506 [DEBUG] [Thread-120672] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:36:52.521 [DEBUG] [Thread-120672] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:36:52.521 [INFO] [Thread-120672] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:36:52.529 [DEBUG] [Thread-120672] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:36:52.529 [DEBUG] [Thread-120672] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:36:52.530 [DEBUG] [Thread-120672] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:36:52.530 [DEBUG] [Thread-120672] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:36:52.530 [DEBUG] [Thread-120672] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:36:52.530 [DEBUG] [Thread-120672] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:36:52.530 [DEBUG] [Thread-120672] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:36:52.530 [DEBUG] [Thread-120672] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:36:52.530 [DEBUG] [Thread-120672] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:36:52.531 [DEBUG] [Thread-120672] [transport.py] [_log()] client lang: <none>
2025-11-03T18:36:52.531 [DEBUG] [Thread-120672] [transport.py] [_log()] server lang: <none>
2025-11-03T18:36:52.531 [DEBUG] [Thread-120672] [transport.py] [_log()] kex follows: False
2025-11-03T18:36:52.531 [DEBUG] [Thread-120672] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:36:52.531 [DEBUG] [Thread-120672] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:36:52.531 [DEBUG] [Thread-120672] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:36:52.531 [DEBUG] [Thread-120672] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:36:52.532 [DEBUG] [Thread-120672] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:36:52.532 [DEBUG] [Thread-120672] [transport.py] [_log()] Compression: none
2025-11-03T18:36:52.532 [DEBUG] [Thread-120672] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:36:52.593 [DEBUG] [Thread-120672] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:36:52.593 [DEBUG] [Thread-120672] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:36:52.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:36:52.595 [DEBUG] [Thread-120672] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:36:52.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:36:52.653 [DEBUG] [Thread-120672] [transport.py] [_log()] userauth is OK
2025-11-03T18:36:52.653 [DEBUG] [Thread-120672] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:36:52.653 [DEBUG] [Thread-120672] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:36:52.653 [DEBUG] [Thread-120672] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:36:52.653 [DEBUG] [Thread-120672] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:36:52.672 [INFO] [Thread-120672] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:36:52.672 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:36:52.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:36:53.490 [DEBUG] [Thread-120672] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:36:53.490 [DEBUG] [Thread-120672] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:36:53.538 [DEBUG] [Thread-120672] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:36:53.538 [DEBUG] [Thread-120672] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:36:53.546 [DEBUG] [Thread-120672] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:36:53.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:36:53.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:36:53.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:36:53.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:36:53.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:36:53.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:36:53.578 [DEBUG] [Thread-120672] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:37:03.582 [DEBUG] [Thread-120674 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:37:18.622 [DEBUG] [Thread-120675 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:37:23.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:37:23.590 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:37:23.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:37:24.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 37, 1), 43.97, 4.15, 0.0, 26.59, 23.87, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:37:24.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:37:01
2025-11-03T18:37:24.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:37:24.647 [DEBUG] [Thread-120676] [transport.py] [_log()] starting thread (client mode): 0xed886a0
2025-11-03T18:37:24.647 [DEBUG] [Thread-120676] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:37:24.667 [DEBUG] [Thread-120676] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:37:24.667 [INFO] [Thread-120676] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:37:24.670 [DEBUG] [Thread-120676] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:37:24.670 [DEBUG] [Thread-120676] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:37:24.671 [DEBUG] [Thread-120676] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:37:24.671 [DEBUG] [Thread-120676] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:37:24.671 [DEBUG] [Thread-120676] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:37:24.671 [DEBUG] [Thread-120676] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:37:24.671 [DEBUG] [Thread-120676] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:37:24.671 [DEBUG] [Thread-120676] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:37:24.671 [DEBUG] [Thread-120676] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:37:24.671 [DEBUG] [Thread-120676] [transport.py] [_log()] client lang: <none>
2025-11-03T18:37:24.671 [DEBUG] [Thread-120676] [transport.py] [_log()] server lang: <none>
2025-11-03T18:37:24.671 [DEBUG] [Thread-120676] [transport.py] [_log()] kex follows: False
2025-11-03T18:37:24.671 [DEBUG] [Thread-120676] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:37:24.671 [DEBUG] [Thread-120676] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:37:24.671 [DEBUG] [Thread-120676] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:37:24.671 [DEBUG] [Thread-120676] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:37:24.671 [DEBUG] [Thread-120676] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:37:24.671 [DEBUG] [Thread-120676] [transport.py] [_log()] Compression: none
2025-11-03T18:37:24.671 [DEBUG] [Thread-120676] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:37:24.688 [DEBUG] [Thread-120676] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:37:24.689 [DEBUG] [Thread-120676] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:37:24.689 [DEBUG] [Thread-120676] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:37:24.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:37:24.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:37:24.691 [DEBUG] [Thread-120676] [transport.py] [_log()] userauth is OK
2025-11-03T18:37:24.692 [DEBUG] [Thread-120676] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:37:24.692 [DEBUG] [Thread-120676] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:37:24.692 [DEBUG] [Thread-120676] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:37:24.692 [DEBUG] [Thread-120676] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:37:24.716 [INFO] [Thread-120676] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:37:24.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:37:25.345 [DEBUG] [Thread-120676] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:37:25.345 [DEBUG] [Thread-120676] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:37:25.345 [DEBUG] [Thread-120676] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:37:25.386 [DEBUG] [Thread-120676] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:37:25.386 [DEBUG] [Thread-120676] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:37:25.389 [DEBUG] [Thread-120676] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:37:25.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:37:25.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:37:25.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:37:25.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:37:25.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:37:25.416 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:37:25.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:37:25.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:37:25.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:37:25.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.692116 -999.00  +23.50  29.08      9  -11.10 1 1 1 1 1   887    0 35.62 29.61 ----- 30.1 29.1 288.4 34.5 24.4 -32.3 24.6 -31.1 24.9 -31.8 25.1 -32.0
2025-11-03T18:37:25.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:37:25.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:37:25.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.692116
2025-11-03T18:37:25.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:37:25.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:37:25.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:37:25.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:37:25.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:37:25.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:37:01', tmtdew=43.97, humidity=4.15, cloud=0.0, wind=26.59, temperature=23.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:36:38.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:37:25.417 [DEBUG] [Thread-120676] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:37:25.490 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:37:25.502 [DEBUG] [Thread-120679] [transport.py] [_log()] starting thread (client mode): 0xeda21d0
2025-11-03T18:37:25.502 [DEBUG] [Thread-120679] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:37:25.516 [DEBUG] [Thread-120679] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:37:25.516 [INFO] [Thread-120679] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:37:25.524 [DEBUG] [Thread-120679] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:37:25.524 [DEBUG] [Thread-120679] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:37:25.524 [DEBUG] [Thread-120679] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:37:25.524 [DEBUG] [Thread-120679] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:37:25.524 [DEBUG] [Thread-120679] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:37:25.524 [DEBUG] [Thread-120679] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:37:25.524 [DEBUG] [Thread-120679] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:37:25.524 [DEBUG] [Thread-120679] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:37:25.524 [DEBUG] [Thread-120679] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:37:25.524 [DEBUG] [Thread-120679] [transport.py] [_log()] client lang: <none>
2025-11-03T18:37:25.524 [DEBUG] [Thread-120679] [transport.py] [_log()] server lang: <none>
2025-11-03T18:37:25.524 [DEBUG] [Thread-120679] [transport.py] [_log()] kex follows: False
2025-11-03T18:37:25.524 [DEBUG] [Thread-120679] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:37:25.524 [DEBUG] [Thread-120679] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:37:25.524 [DEBUG] [Thread-120679] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:37:25.524 [DEBUG] [Thread-120679] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:37:25.525 [DEBUG] [Thread-120679] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:37:25.525 [DEBUG] [Thread-120679] [transport.py] [_log()] Compression: none
2025-11-03T18:37:25.525 [DEBUG] [Thread-120679] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:37:25.582 [DEBUG] [Thread-120679] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:37:25.583 [DEBUG] [Thread-120679] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:37:25.583 [DEBUG] [Thread-120679] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:37:25.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:37:25.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:37:25.640 [DEBUG] [Thread-120679] [transport.py] [_log()] userauth is OK
2025-11-03T18:37:25.640 [DEBUG] [Thread-120679] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:37:25.640 [DEBUG] [Thread-120679] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:37:25.640 [DEBUG] [Thread-120679] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:37:25.640 [DEBUG] [Thread-120679] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:37:25.654 [INFO] [Thread-120679] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:37:25.663 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:37:25.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:37:26.509 [DEBUG] [Thread-120679] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:37:26.510 [DEBUG] [Thread-120679] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:37:26.557 [DEBUG] [Thread-120679] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:37:26.557 [DEBUG] [Thread-120679] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:37:26.567 [DEBUG] [Thread-120679] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:37:26.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:37:26.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:37:26.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:37:26.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:37:26.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:37:26.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:37:26.606 [DEBUG] [Thread-120679] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:37:33.262 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:37:33.263 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:37:33.659 [DEBUG] [Thread-120681 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:37:40.377 [DEBUG] [Thread-120682 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:37:48.701 [DEBUG] [Thread-120683 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:37:56.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:37:56.629 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:37:56.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:37:57.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 37, 33), 44.03, 4.07, 0.0, 27.01, 23.82, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:37:57.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:37:33
2025-11-03T18:37:57.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:37:57.638 [DEBUG] [Thread-120684] [transport.py] [_log()] starting thread (client mode): 0xed224a0
2025-11-03T18:37:57.638 [DEBUG] [Thread-120684] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:37:57.657 [DEBUG] [Thread-120684] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:37:57.658 [INFO] [Thread-120684] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:37:57.660 [DEBUG] [Thread-120684] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:37:57.661 [DEBUG] [Thread-120684] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:37:57.661 [DEBUG] [Thread-120684] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:37:57.661 [DEBUG] [Thread-120684] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:37:57.661 [DEBUG] [Thread-120684] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:37:57.661 [DEBUG] [Thread-120684] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:37:57.661 [DEBUG] [Thread-120684] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:37:57.661 [DEBUG] [Thread-120684] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:37:57.661 [DEBUG] [Thread-120684] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:37:57.661 [DEBUG] [Thread-120684] [transport.py] [_log()] client lang: <none>
2025-11-03T18:37:57.661 [DEBUG] [Thread-120684] [transport.py] [_log()] server lang: <none>
2025-11-03T18:37:57.661 [DEBUG] [Thread-120684] [transport.py] [_log()] kex follows: False
2025-11-03T18:37:57.661 [DEBUG] [Thread-120684] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:37:57.661 [DEBUG] [Thread-120684] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:37:57.661 [DEBUG] [Thread-120684] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:37:57.662 [DEBUG] [Thread-120684] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:37:57.662 [DEBUG] [Thread-120684] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:37:57.662 [DEBUG] [Thread-120684] [transport.py] [_log()] Compression: none
2025-11-03T18:37:57.662 [DEBUG] [Thread-120684] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:37:57.681 [DEBUG] [Thread-120684] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:37:57.682 [DEBUG] [Thread-120684] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:37:57.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:37:57.683 [DEBUG] [Thread-120684] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:37:57.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:37:57.685 [DEBUG] [Thread-120684] [transport.py] [_log()] userauth is OK
2025-11-03T18:37:57.686 [DEBUG] [Thread-120684] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:37:57.686 [DEBUG] [Thread-120684] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:37:57.686 [DEBUG] [Thread-120684] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:37:57.686 [DEBUG] [Thread-120684] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:37:57.710 [INFO] [Thread-120684] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:37:57.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:37:58.368 [DEBUG] [Thread-120684] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:37:58.368 [DEBUG] [Thread-120684] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:37:58.368 [DEBUG] [Thread-120684] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:37:58.409 [DEBUG] [Thread-120684] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:37:58.409 [DEBUG] [Thread-120684] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:37:58.412 [DEBUG] [Thread-120684] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:37:58.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:37:58.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:37:58.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:37:58.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:37:58.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:37:58.438 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:37:58.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:37:58.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:37:58.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:37:58.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.692463 -999.00  +23.60  22.55      9  -11.10 1 1 1 1 1   887    0 35.55 24.52 ----- 26.7 22.6 298.6 32.8 24.4 -32.1 24.6 -31.1 24.9 -31.2 25.1 -32.0
2025-11-03T18:37:58.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:37:58.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:37:58.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.692463
2025-11-03T18:37:58.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:37:58.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:37:58.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:37:58.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:37:58.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:37:58.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:37:33', tmtdew=44.03, humidity=4.07, cloud=0.0, wind=27.01, temperature=23.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:37:08.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:37:58.440 [DEBUG] [Thread-120684] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:37:58.512 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:38:03.741 [DEBUG] [Thread-120687 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:38:18.788 [DEBUG] [Thread-120688 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:38:33.404 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:38:33.405 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:38:33.826 [DEBUG] [Thread-120689 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:38:40.430 [DEBUG] [Thread-120690 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:38:48.866 [DEBUG] [Thread-120691 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:39:03.898 [DEBUG] [Thread-120692 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:39:18.933 [DEBUG] [Thread-120693 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:39:33.557 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:39:33.557 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:39:33.956 [DEBUG] [Thread-120694 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:39:40.506 [DEBUG] [Thread-120695 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:39:48.997 [DEBUG] [Thread-120696 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:40:04.032 [DEBUG] [Thread-120697 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:40:12.384 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T18:40:19.064 [DEBUG] [Thread-120698 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:40:33.697 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:40:33.698 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:40:34.099 [DEBUG] [Thread-120699 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:40:40.587 [DEBUG] [Thread-120700 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:40:42.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:40:42.432 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:40:42.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:40:43.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 40, 15), 43.78, 4.17, 0.0, 30.05, 23.67, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:40:43.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:40:15
2025-11-03T18:40:43.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:40:43.488 [DEBUG] [Thread-120701] [transport.py] [_log()] starting thread (client mode): 0xed217b0
2025-11-03T18:40:43.488 [DEBUG] [Thread-120701] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:40:43.502 [DEBUG] [Thread-120701] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:40:43.502 [INFO] [Thread-120701] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:40:43.508 [DEBUG] [Thread-120701] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:40:43.508 [DEBUG] [Thread-120701] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:40:43.508 [DEBUG] [Thread-120701] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:40:43.509 [DEBUG] [Thread-120701] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:40:43.509 [DEBUG] [Thread-120701] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:40:43.509 [DEBUG] [Thread-120701] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:40:43.509 [DEBUG] [Thread-120701] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:40:43.509 [DEBUG] [Thread-120701] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:40:43.509 [DEBUG] [Thread-120701] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:40:43.509 [DEBUG] [Thread-120701] [transport.py] [_log()] client lang: <none>
2025-11-03T18:40:43.509 [DEBUG] [Thread-120701] [transport.py] [_log()] server lang: <none>
2025-11-03T18:40:43.509 [DEBUG] [Thread-120701] [transport.py] [_log()] kex follows: False
2025-11-03T18:40:43.510 [DEBUG] [Thread-120701] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:40:43.511 [DEBUG] [Thread-120701] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:40:43.511 [DEBUG] [Thread-120701] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:40:43.512 [DEBUG] [Thread-120701] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:40:43.512 [DEBUG] [Thread-120701] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:40:43.512 [DEBUG] [Thread-120701] [transport.py] [_log()] Compression: none
2025-11-03T18:40:43.512 [DEBUG] [Thread-120701] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:40:43.549 [DEBUG] [Thread-120701] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:40:43.555 [DEBUG] [Thread-120701] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:40:43.558 [DEBUG] [Thread-120701] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:40:43.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:40:43.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:40:43.562 [DEBUG] [Thread-120701] [transport.py] [_log()] userauth is OK
2025-11-03T18:40:43.562 [DEBUG] [Thread-120701] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:40:43.562 [DEBUG] [Thread-120701] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:40:43.563 [DEBUG] [Thread-120701] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:40:43.563 [DEBUG] [Thread-120701] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:40:43.603 [INFO] [Thread-120701] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:40:43.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:40:44.197 [DEBUG] [Thread-120701] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:40:44.197 [DEBUG] [Thread-120701] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:40:44.198 [DEBUG] [Thread-120701] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:40:44.239 [DEBUG] [Thread-120701] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:40:44.239 [DEBUG] [Thread-120701] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:40:44.242 [DEBUG] [Thread-120701] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:40:44.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:40:44.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:40:44.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:40:44.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:40:44.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:40:44.264 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:40:44.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:40:44.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:40:44.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:40:44.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.694546 -999.00  +23.50  27.40      9  -11.10 1 1 1 1 1   887    0 35.10 14.75 ----- 27.4 27.4 309.1 37.5 24.3 -32.0 24.5 -31.0 24.8 -31.2 24.9 -31.9
2025-11-03T18:40:44.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:40:44.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:40:44.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.694546
2025-11-03T18:40:44.271 [DEBUG] [Thread-120701] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:40:44.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:40:44.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:40:44.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:40:44.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:40:44.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:40:44.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:40:15', tmtdew=43.78, humidity=4.17, cloud=0.0, wind=30.05, temperature=23.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:40:08.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:40:44.357 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:40:44.370 [DEBUG] [Thread-120704] [transport.py] [_log()] starting thread (client mode): 0xed22710
2025-11-03T18:40:44.370 [DEBUG] [Thread-120704] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:40:44.385 [DEBUG] [Thread-120704] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:40:44.385 [INFO] [Thread-120704] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:40:44.392 [DEBUG] [Thread-120704] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:40:44.393 [DEBUG] [Thread-120704] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:40:44.393 [DEBUG] [Thread-120704] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:40:44.393 [DEBUG] [Thread-120704] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:40:44.393 [DEBUG] [Thread-120704] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:40:44.393 [DEBUG] [Thread-120704] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:40:44.393 [DEBUG] [Thread-120704] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:40:44.393 [DEBUG] [Thread-120704] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:40:44.393 [DEBUG] [Thread-120704] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:40:44.393 [DEBUG] [Thread-120704] [transport.py] [_log()] client lang: <none>
2025-11-03T18:40:44.393 [DEBUG] [Thread-120704] [transport.py] [_log()] server lang: <none>
2025-11-03T18:40:44.393 [DEBUG] [Thread-120704] [transport.py] [_log()] kex follows: False
2025-11-03T18:40:44.393 [DEBUG] [Thread-120704] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:40:44.393 [DEBUG] [Thread-120704] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:40:44.393 [DEBUG] [Thread-120704] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:40:44.393 [DEBUG] [Thread-120704] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:40:44.393 [DEBUG] [Thread-120704] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:40:44.393 [DEBUG] [Thread-120704] [transport.py] [_log()] Compression: none
2025-11-03T18:40:44.393 [DEBUG] [Thread-120704] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:40:44.453 [DEBUG] [Thread-120704] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:40:44.453 [DEBUG] [Thread-120704] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:40:44.453 [DEBUG] [Thread-120704] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:40:44.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:40:44.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:40:44.510 [DEBUG] [Thread-120704] [transport.py] [_log()] userauth is OK
2025-11-03T18:40:44.510 [DEBUG] [Thread-120704] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:40:44.510 [DEBUG] [Thread-120704] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:40:44.510 [DEBUG] [Thread-120704] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:40:44.510 [DEBUG] [Thread-120704] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:40:44.524 [INFO] [Thread-120704] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:40:44.524 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:40:44.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:40:45.352 [DEBUG] [Thread-120704] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:40:45.353 [DEBUG] [Thread-120704] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:40:45.400 [DEBUG] [Thread-120704] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:40:45.400 [DEBUG] [Thread-120704] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:40:45.410 [DEBUG] [Thread-120704] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:40:45.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:40:45.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:40:45.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:40:45.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:40:45.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:40:45.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:40:45.446 [DEBUG] [Thread-120704] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:40:49.130 [DEBUG] [Thread-120706 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:41:04.221 [DEBUG] [Thread-120707 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:41:15.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:41:15.469 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:41:15.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:41:16.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 40, 47), 43.72, 4.18, 0.0, 27.26, 23.62, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:41:16.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:40:47
2025-11-03T18:41:16.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:41:16.436 [DEBUG] [Thread-120708] [transport.py] [_log()] starting thread (client mode): 0xedc55d0
2025-11-03T18:41:16.436 [DEBUG] [Thread-120708] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:41:16.445 [DEBUG] [Thread-120708] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:41:16.445 [INFO] [Thread-120708] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:41:16.448 [DEBUG] [Thread-120708] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:41:16.449 [DEBUG] [Thread-120708] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:41:16.449 [DEBUG] [Thread-120708] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:41:16.449 [DEBUG] [Thread-120708] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:41:16.449 [DEBUG] [Thread-120708] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:41:16.449 [DEBUG] [Thread-120708] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:41:16.449 [DEBUG] [Thread-120708] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:41:16.449 [DEBUG] [Thread-120708] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:41:16.449 [DEBUG] [Thread-120708] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:41:16.449 [DEBUG] [Thread-120708] [transport.py] [_log()] client lang: <none>
2025-11-03T18:41:16.449 [DEBUG] [Thread-120708] [transport.py] [_log()] server lang: <none>
2025-11-03T18:41:16.449 [DEBUG] [Thread-120708] [transport.py] [_log()] kex follows: False
2025-11-03T18:41:16.449 [DEBUG] [Thread-120708] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:41:16.449 [DEBUG] [Thread-120708] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:41:16.450 [DEBUG] [Thread-120708] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:41:16.450 [DEBUG] [Thread-120708] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:41:16.450 [DEBUG] [Thread-120708] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:41:16.450 [DEBUG] [Thread-120708] [transport.py] [_log()] Compression: none
2025-11-03T18:41:16.450 [DEBUG] [Thread-120708] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:41:16.470 [DEBUG] [Thread-120708] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:41:16.471 [DEBUG] [Thread-120708] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:41:16.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:41:16.473 [DEBUG] [Thread-120708] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:41:16.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:41:16.475 [DEBUG] [Thread-120708] [transport.py] [_log()] userauth is OK
2025-11-03T18:41:16.475 [DEBUG] [Thread-120708] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:41:16.475 [DEBUG] [Thread-120708] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:41:16.475 [DEBUG] [Thread-120708] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:41:16.475 [DEBUG] [Thread-120708] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:41:16.508 [INFO] [Thread-120708] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:41:16.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:41:17.140 [DEBUG] [Thread-120708] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:41:17.140 [DEBUG] [Thread-120708] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:41:17.140 [DEBUG] [Thread-120708] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:41:17.181 [DEBUG] [Thread-120708] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:41:17.182 [DEBUG] [Thread-120708] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:41:17.184 [DEBUG] [Thread-120708] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:41:17.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:41:17.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:41:17.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:41:17.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:41:17.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:41:17.201 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:41:17.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:41:17.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:41:17.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:41:17.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.694893 -999.00  +23.50  26.60      9  -11.10 1 1 1 1 1   887    0 34.60 13.84 ----- 26.6 26.6 300.0 40.0 24.3 -32.3 24.4 -31.0 24.7 -31.0 24.9 -31.9
2025-11-03T18:41:17.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:41:17.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:41:17.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.694893
2025-11-03T18:41:17.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:41:17.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:41:17.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:41:17.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:41:17.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:41:17.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:40:47', tmtdew=43.72, humidity=4.18, cloud=0.0, wind=27.26, temperature=23.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:40:38.755', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:41:17.203 [DEBUG] [Thread-120708] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:41:17.274 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:41:17.286 [DEBUG] [Thread-120711] [transport.py] [_log()] starting thread (client mode): 0xeda2680
2025-11-03T18:41:17.286 [DEBUG] [Thread-120711] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:41:17.301 [DEBUG] [Thread-120711] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:41:17.301 [INFO] [Thread-120711] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:41:17.309 [DEBUG] [Thread-120711] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:41:17.309 [DEBUG] [Thread-120711] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:41:17.309 [DEBUG] [Thread-120711] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:41:17.309 [DEBUG] [Thread-120711] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:41:17.309 [DEBUG] [Thread-120711] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:41:17.309 [DEBUG] [Thread-120711] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:41:17.309 [DEBUG] [Thread-120711] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:41:17.309 [DEBUG] [Thread-120711] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:41:17.309 [DEBUG] [Thread-120711] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:41:17.309 [DEBUG] [Thread-120711] [transport.py] [_log()] client lang: <none>
2025-11-03T18:41:17.309 [DEBUG] [Thread-120711] [transport.py] [_log()] server lang: <none>
2025-11-03T18:41:17.309 [DEBUG] [Thread-120711] [transport.py] [_log()] kex follows: False
2025-11-03T18:41:17.309 [DEBUG] [Thread-120711] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:41:17.309 [DEBUG] [Thread-120711] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:41:17.309 [DEBUG] [Thread-120711] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:41:17.309 [DEBUG] [Thread-120711] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:41:17.309 [DEBUG] [Thread-120711] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:41:17.309 [DEBUG] [Thread-120711] [transport.py] [_log()] Compression: none
2025-11-03T18:41:17.309 [DEBUG] [Thread-120711] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:41:17.365 [DEBUG] [Thread-120711] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:41:17.366 [DEBUG] [Thread-120711] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:41:17.366 [DEBUG] [Thread-120711] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:41:17.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:41:17.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:41:17.423 [DEBUG] [Thread-120711] [transport.py] [_log()] userauth is OK
2025-11-03T18:41:17.423 [DEBUG] [Thread-120711] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:41:17.423 [DEBUG] [Thread-120711] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:41:17.423 [DEBUG] [Thread-120711] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:41:17.423 [DEBUG] [Thread-120711] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:41:17.437 [INFO] [Thread-120711] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:41:17.437 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:41:17.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:41:18.277 [DEBUG] [Thread-120711] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:41:18.277 [DEBUG] [Thread-120711] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:41:18.328 [DEBUG] [Thread-120711] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:41:18.328 [DEBUG] [Thread-120711] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:41:18.338 [DEBUG] [Thread-120711] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:41:18.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:41:18.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:41:18.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:41:18.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:41:18.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:41:18.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:41:18.377 [DEBUG] [Thread-120711] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:41:19.256 [DEBUG] [Thread-120713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:41:33.839 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:41:33.840 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:41:34.296 [DEBUG] [Thread-120714 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:41:40.817 [DEBUG] [Thread-120715 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:41:48.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:41:48.391 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:41:48.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:41:49.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 41, 20), 43.82, 4.15, 0.0, 28.09, 23.67, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:41:49.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:41:20
2025-11-03T18:41:49.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:41:49.330 [DEBUG] [Thread-120716 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:41:49.392 [DEBUG] [Thread-120717] [transport.py] [_log()] starting thread (client mode): 0xeda11e0
2025-11-03T18:41:49.392 [DEBUG] [Thread-120717] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:41:49.412 [DEBUG] [Thread-120717] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:41:49.412 [INFO] [Thread-120717] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:41:49.415 [DEBUG] [Thread-120717] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:41:49.415 [DEBUG] [Thread-120717] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:41:49.415 [DEBUG] [Thread-120717] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:41:49.415 [DEBUG] [Thread-120717] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:41:49.415 [DEBUG] [Thread-120717] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:41:49.415 [DEBUG] [Thread-120717] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:41:49.415 [DEBUG] [Thread-120717] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:41:49.415 [DEBUG] [Thread-120717] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:41:49.415 [DEBUG] [Thread-120717] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:41:49.415 [DEBUG] [Thread-120717] [transport.py] [_log()] client lang: <none>
2025-11-03T18:41:49.415 [DEBUG] [Thread-120717] [transport.py] [_log()] server lang: <none>
2025-11-03T18:41:49.415 [DEBUG] [Thread-120717] [transport.py] [_log()] kex follows: False
2025-11-03T18:41:49.415 [DEBUG] [Thread-120717] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:41:49.415 [DEBUG] [Thread-120717] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:41:49.416 [DEBUG] [Thread-120717] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:41:49.416 [DEBUG] [Thread-120717] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:41:49.416 [DEBUG] [Thread-120717] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:41:49.416 [DEBUG] [Thread-120717] [transport.py] [_log()] Compression: none
2025-11-03T18:41:49.416 [DEBUG] [Thread-120717] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:41:49.434 [DEBUG] [Thread-120717] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:41:49.434 [DEBUG] [Thread-120717] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:41:49.435 [DEBUG] [Thread-120717] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:41:49.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:41:49.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:41:49.477 [DEBUG] [Thread-120717] [transport.py] [_log()] userauth is OK
2025-11-03T18:41:49.478 [DEBUG] [Thread-120717] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:41:49.478 [DEBUG] [Thread-120717] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:41:49.478 [DEBUG] [Thread-120717] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:41:49.478 [DEBUG] [Thread-120717] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:41:49.513 [INFO] [Thread-120717] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:41:49.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:41:50.172 [DEBUG] [Thread-120717] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:41:50.172 [DEBUG] [Thread-120717] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:41:50.173 [DEBUG] [Thread-120717] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:41:50.214 [DEBUG] [Thread-120717] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:41:50.214 [DEBUG] [Thread-120717] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:41:50.216 [DEBUG] [Thread-120717] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:41:50.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:41:50.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:41:50.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:41:50.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:41:50.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:41:50.235 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:41:50.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:41:50.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:41:50.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:41:50.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.695241 -999.00  +23.50  26.25      9  -11.10 1 1 1 1 1   887    0 34.89 12.50 ----- 26.2 26.2 293.2 32.5 24.3 -32.1 24.4 -31.0 24.7 -31.5 24.9 -32.0
2025-11-03T18:41:50.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:41:50.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:41:50.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.695241
2025-11-03T18:41:50.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:41:50.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:41:50.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:41:50.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:41:50.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:41:50.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:41:20', tmtdew=43.82, humidity=4.15, cloud=0.0, wind=28.09, temperature=23.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:41:08.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:41:50.236 [DEBUG] [Thread-120717] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:41:50.308 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:41:50.320 [DEBUG] [Thread-120720] [transport.py] [_log()] starting thread (client mode): 0xed2f4c0
2025-11-03T18:41:50.320 [DEBUG] [Thread-120720] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:41:50.334 [DEBUG] [Thread-120720] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:41:50.334 [INFO] [Thread-120720] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:41:50.342 [DEBUG] [Thread-120720] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:41:50.342 [DEBUG] [Thread-120720] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:41:50.342 [DEBUG] [Thread-120720] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:41:50.342 [DEBUG] [Thread-120720] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:41:50.342 [DEBUG] [Thread-120720] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:41:50.342 [DEBUG] [Thread-120720] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:41:50.342 [DEBUG] [Thread-120720] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:41:50.342 [DEBUG] [Thread-120720] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:41:50.342 [DEBUG] [Thread-120720] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:41:50.342 [DEBUG] [Thread-120720] [transport.py] [_log()] client lang: <none>
2025-11-03T18:41:50.342 [DEBUG] [Thread-120720] [transport.py] [_log()] server lang: <none>
2025-11-03T18:41:50.342 [DEBUG] [Thread-120720] [transport.py] [_log()] kex follows: False
2025-11-03T18:41:50.342 [DEBUG] [Thread-120720] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:41:50.342 [DEBUG] [Thread-120720] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:41:50.342 [DEBUG] [Thread-120720] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:41:50.342 [DEBUG] [Thread-120720] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:41:50.342 [DEBUG] [Thread-120720] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:41:50.342 [DEBUG] [Thread-120720] [transport.py] [_log()] Compression: none
2025-11-03T18:41:50.342 [DEBUG] [Thread-120720] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:41:50.399 [DEBUG] [Thread-120720] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:41:50.399 [DEBUG] [Thread-120720] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:41:50.399 [DEBUG] [Thread-120720] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:41:50.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:41:50.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:41:50.455 [DEBUG] [Thread-120720] [transport.py] [_log()] userauth is OK
2025-11-03T18:41:50.455 [DEBUG] [Thread-120720] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:41:50.456 [DEBUG] [Thread-120720] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:41:50.456 [DEBUG] [Thread-120720] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:41:50.456 [DEBUG] [Thread-120720] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:41:50.469 [INFO] [Thread-120720] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:41:50.470 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:41:50.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:41:51.335 [DEBUG] [Thread-120720] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:41:51.336 [DEBUG] [Thread-120720] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:41:51.384 [DEBUG] [Thread-120720] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:41:51.384 [DEBUG] [Thread-120720] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:41:51.393 [DEBUG] [Thread-120720] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:41:51.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:41:51.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:41:51.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:41:51.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:41:51.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:41:51.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:41:51.431 [DEBUG] [Thread-120720] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:42:04.359 [DEBUG] [Thread-120722 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:42:19.396 [DEBUG] [Thread-120723 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:42:21.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:42:21.426 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:42:21.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:42:22.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 41, 52), 43.88, 4.12, 0.0, 32.11, 23.5, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:42:22.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:41:52
2025-11-03T18:42:22.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:42:22.487 [DEBUG] [Thread-120724] [transport.py] [_log()] starting thread (client mode): 0xed2d3f0
2025-11-03T18:42:22.487 [DEBUG] [Thread-120724] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:42:22.508 [DEBUG] [Thread-120724] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:42:22.508 [INFO] [Thread-120724] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:42:22.511 [DEBUG] [Thread-120724] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:42:22.511 [DEBUG] [Thread-120724] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:42:22.511 [DEBUG] [Thread-120724] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:42:22.511 [DEBUG] [Thread-120724] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:42:22.511 [DEBUG] [Thread-120724] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:42:22.511 [DEBUG] [Thread-120724] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:42:22.511 [DEBUG] [Thread-120724] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:42:22.511 [DEBUG] [Thread-120724] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:42:22.511 [DEBUG] [Thread-120724] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:42:22.511 [DEBUG] [Thread-120724] [transport.py] [_log()] client lang: <none>
2025-11-03T18:42:22.511 [DEBUG] [Thread-120724] [transport.py] [_log()] server lang: <none>
2025-11-03T18:42:22.511 [DEBUG] [Thread-120724] [transport.py] [_log()] kex follows: False
2025-11-03T18:42:22.511 [DEBUG] [Thread-120724] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:42:22.511 [DEBUG] [Thread-120724] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:42:22.511 [DEBUG] [Thread-120724] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:42:22.511 [DEBUG] [Thread-120724] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:42:22.511 [DEBUG] [Thread-120724] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:42:22.520 [DEBUG] [Thread-120724] [transport.py] [_log()] Compression: none
2025-11-03T18:42:22.520 [DEBUG] [Thread-120724] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:42:22.539 [DEBUG] [Thread-120724] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:42:22.539 [DEBUG] [Thread-120724] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:42:22.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:42:22.540 [DEBUG] [Thread-120724] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:42:22.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:42:22.542 [DEBUG] [Thread-120724] [transport.py] [_log()] userauth is OK
2025-11-03T18:42:22.543 [DEBUG] [Thread-120724] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:42:22.543 [DEBUG] [Thread-120724] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:42:22.543 [DEBUG] [Thread-120724] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:42:22.543 [DEBUG] [Thread-120724] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:42:22.568 [INFO] [Thread-120724] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:42:22.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:42:23.234 [DEBUG] [Thread-120724] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:42:23.234 [DEBUG] [Thread-120724] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:42:23.235 [DEBUG] [Thread-120724] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:42:23.275 [DEBUG] [Thread-120724] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:42:23.275 [DEBUG] [Thread-120724] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:42:23.279 [DEBUG] [Thread-120724] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:42:23.291 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:42:23.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:42:23.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:42:23.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:42:23.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:42:23.304 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:42:23.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:42:23.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:42:23.313 [DEBUG] [Thread-120724] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:42:23.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:42:23.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.695588 -999.00  +23.50  26.45      9  -11.10 1 1 1 1 1   887    0 34.77 10.94 ----- 26.4 26.4 298.4 31.3 24.3 -32.2 24.4 -31.0 24.6 -31.2 24.8 -32.1
2025-11-03T18:42:23.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:42:23.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:42:23.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.695588
2025-11-03T18:42:23.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:42:23.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:42:23.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:42:23.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:42:23.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:42:23.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:41:52', tmtdew=43.88, humidity=4.12, cloud=0.0, wind=32.11, temperature=23.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:41:38.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:42:23.399 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:42:33.980 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:42:33.981 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:42:34.431 [DEBUG] [Thread-120727 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:42:40.895 [DEBUG] [Thread-120728 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:42:49.482 [DEBUG] [Thread-120729 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:43:04.516 [DEBUG] [Thread-120730 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:43:19.571 [DEBUG] [Thread-120731 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:43:34.124 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:43:34.125 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:43:34.599 [DEBUG] [Thread-120732 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:43:40.975 [DEBUG] [Thread-120733 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:43:49.633 [DEBUG] [Thread-120734 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:44:04.667 [DEBUG] [Thread-120735 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:44:19.699 [DEBUG] [Thread-120736 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:44:34.265 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:44:34.266 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:44:34.735 [DEBUG] [Thread-120737 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:44:38.625 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T18:44:41.173 [DEBUG] [Thread-120738 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:44:49.773 [DEBUG] [Thread-120739 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:45:04.810 [DEBUG] [Thread-120740 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:45:08.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:45:08.662 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:45:08.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:45:09.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 44, 34), 43.56, 4.2, 0.0, 30.49, 23.51, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:45:09.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:44:34
2025-11-03T18:45:09.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:45:09.787 [DEBUG] [Thread-120741] [transport.py] [_log()] starting thread (client mode): 0xed22530
2025-11-03T18:45:09.788 [DEBUG] [Thread-120741] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:45:09.801 [DEBUG] [Thread-120741] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:45:09.802 [INFO] [Thread-120741] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:45:09.806 [DEBUG] [Thread-120741] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:45:09.806 [DEBUG] [Thread-120741] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:45:09.806 [DEBUG] [Thread-120741] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:45:09.807 [DEBUG] [Thread-120741] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:45:09.807 [DEBUG] [Thread-120741] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:45:09.807 [DEBUG] [Thread-120741] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:45:09.807 [DEBUG] [Thread-120741] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:45:09.807 [DEBUG] [Thread-120741] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:45:09.807 [DEBUG] [Thread-120741] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:45:09.807 [DEBUG] [Thread-120741] [transport.py] [_log()] client lang: <none>
2025-11-03T18:45:09.807 [DEBUG] [Thread-120741] [transport.py] [_log()] server lang: <none>
2025-11-03T18:45:09.807 [DEBUG] [Thread-120741] [transport.py] [_log()] kex follows: False
2025-11-03T18:45:09.807 [DEBUG] [Thread-120741] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:45:09.807 [DEBUG] [Thread-120741] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:45:09.807 [DEBUG] [Thread-120741] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:45:09.807 [DEBUG] [Thread-120741] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:45:09.808 [DEBUG] [Thread-120741] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:45:09.808 [DEBUG] [Thread-120741] [transport.py] [_log()] Compression: none
2025-11-03T18:45:09.808 [DEBUG] [Thread-120741] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:45:09.835 [DEBUG] [Thread-120741] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:45:09.838 [DEBUG] [Thread-120741] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:45:09.840 [DEBUG] [Thread-120741] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:45:09.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:45:09.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:45:09.842 [DEBUG] [Thread-120741] [transport.py] [_log()] userauth is OK
2025-11-03T18:45:09.842 [DEBUG] [Thread-120741] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:45:09.842 [DEBUG] [Thread-120741] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:45:09.842 [DEBUG] [Thread-120741] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:45:09.842 [DEBUG] [Thread-120741] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:45:09.860 [INFO] [Thread-120741] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:45:09.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:45:18.425 [DEBUG] [Thread-120741] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:45:18.425 [DEBUG] [Thread-120741] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:45:18.427 [DEBUG] [Thread-120741] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:45:18.466 [DEBUG] [Thread-120741] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:45:18.466 [DEBUG] [Thread-120741] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:45:18.470 [DEBUG] [Thread-120741] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:45:18.571 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:45:18.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:45:18.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:45:18.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:45:18.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:45:18.588 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:45:18.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:45:18.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:45:18.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:45:18.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.697671 -999.00  +23.20  28.24      9  -11.10 1 1 1 1 1   887    0 35.04 2.07 ----- 28.2 28.2 293.0 34.5 24.1 -31.9 24.2 -30.9 24.4 -32.1 24.6 -32.2
2025-11-03T18:45:18.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:45:18.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:45:18.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.697671
2025-11-03T18:45:18.598 [DEBUG] [Thread-120741] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:45:18.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:45:18.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:45:18.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:45:18.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:45:18.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:45:18.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:44:34', tmtdew=43.56, humidity=4.2, cloud=0.0, wind=30.49, temperature=23.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:44:38.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:45:18.699 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:45:18.711 [DEBUG] [Thread-120744] [transport.py] [_log()] starting thread (client mode): 0x141d9a50
2025-11-03T18:45:18.711 [DEBUG] [Thread-120744] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:45:18.726 [DEBUG] [Thread-120744] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:45:18.726 [INFO] [Thread-120744] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:45:18.734 [DEBUG] [Thread-120744] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:45:18.734 [DEBUG] [Thread-120744] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:45:18.734 [DEBUG] [Thread-120744] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:45:18.734 [DEBUG] [Thread-120744] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:45:18.734 [DEBUG] [Thread-120744] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:45:18.734 [DEBUG] [Thread-120744] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:45:18.734 [DEBUG] [Thread-120744] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:45:18.734 [DEBUG] [Thread-120744] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:45:18.734 [DEBUG] [Thread-120744] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:45:18.734 [DEBUG] [Thread-120744] [transport.py] [_log()] client lang: <none>
2025-11-03T18:45:18.734 [DEBUG] [Thread-120744] [transport.py] [_log()] server lang: <none>
2025-11-03T18:45:18.734 [DEBUG] [Thread-120744] [transport.py] [_log()] kex follows: False
2025-11-03T18:45:18.734 [DEBUG] [Thread-120744] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:45:18.734 [DEBUG] [Thread-120744] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:45:18.734 [DEBUG] [Thread-120744] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:45:18.734 [DEBUG] [Thread-120744] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:45:18.734 [DEBUG] [Thread-120744] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:45:18.734 [DEBUG] [Thread-120744] [transport.py] [_log()] Compression: none
2025-11-03T18:45:18.734 [DEBUG] [Thread-120744] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:45:18.792 [DEBUG] [Thread-120744] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:45:18.792 [DEBUG] [Thread-120744] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:45:18.792 [DEBUG] [Thread-120744] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:45:18.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:45:18.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:45:18.849 [DEBUG] [Thread-120744] [transport.py] [_log()] userauth is OK
2025-11-03T18:45:18.849 [DEBUG] [Thread-120744] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:45:18.849 [DEBUG] [Thread-120744] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:45:18.849 [DEBUG] [Thread-120744] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:45:18.849 [DEBUG] [Thread-120744] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:45:18.863 [INFO] [Thread-120744] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:45:18.863 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:45:18.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:45:19.671 [DEBUG] [Thread-120744] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:45:19.671 [DEBUG] [Thread-120744] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:45:19.718 [DEBUG] [Thread-120744] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:45:19.718 [DEBUG] [Thread-120744] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:45:19.727 [DEBUG] [Thread-120744] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:45:19.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:45:19.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:45:19.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:45:19.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:45:19.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:45:19.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:45:19.760 [DEBUG] [Thread-120744] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:45:19.846 [DEBUG] [Thread-120746 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:45:34.415 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:45:34.416 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:45:34.932 [DEBUG] [Thread-120747 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:45:41.233 [DEBUG] [Thread-120748 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:45:49.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:45:49.774 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:45:49.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:45:49.966 [DEBUG] [Thread-120749 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:45:50.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 45, 39), 43.38, 4.23, 0.0, 24.82, 23.47, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:45:50.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:45:39
2025-11-03T18:45:50.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:45:50.788 [DEBUG] [Thread-120750] [transport.py] [_log()] starting thread (client mode): 0xed23100
2025-11-03T18:45:50.788 [DEBUG] [Thread-120750] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:45:50.798 [DEBUG] [Thread-120750] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:45:50.798 [INFO] [Thread-120750] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:45:50.801 [DEBUG] [Thread-120750] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:45:50.801 [DEBUG] [Thread-120750] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:45:50.801 [DEBUG] [Thread-120750] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:45:50.801 [DEBUG] [Thread-120750] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:45:50.801 [DEBUG] [Thread-120750] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:45:50.801 [DEBUG] [Thread-120750] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:45:50.801 [DEBUG] [Thread-120750] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:45:50.801 [DEBUG] [Thread-120750] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:45:50.801 [DEBUG] [Thread-120750] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:45:50.802 [DEBUG] [Thread-120750] [transport.py] [_log()] client lang: <none>
2025-11-03T18:45:50.802 [DEBUG] [Thread-120750] [transport.py] [_log()] server lang: <none>
2025-11-03T18:45:50.802 [DEBUG] [Thread-120750] [transport.py] [_log()] kex follows: False
2025-11-03T18:45:50.802 [DEBUG] [Thread-120750] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:45:50.802 [DEBUG] [Thread-120750] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:45:50.802 [DEBUG] [Thread-120750] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:45:50.802 [DEBUG] [Thread-120750] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:45:50.802 [DEBUG] [Thread-120750] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:45:50.802 [DEBUG] [Thread-120750] [transport.py] [_log()] Compression: none
2025-11-03T18:45:50.802 [DEBUG] [Thread-120750] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:45:50.820 [DEBUG] [Thread-120750] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:45:50.821 [DEBUG] [Thread-120750] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:45:50.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:45:50.822 [DEBUG] [Thread-120750] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:45:50.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:45:50.823 [DEBUG] [Thread-120750] [transport.py] [_log()] userauth is OK
2025-11-03T18:45:50.824 [DEBUG] [Thread-120750] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:45:50.824 [DEBUG] [Thread-120750] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:45:50.824 [DEBUG] [Thread-120750] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:45:50.824 [DEBUG] [Thread-120750] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:45:50.849 [INFO] [Thread-120750] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:45:50.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:45:51.501 [DEBUG] [Thread-120750] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:45:51.501 [DEBUG] [Thread-120750] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:45:51.502 [DEBUG] [Thread-120750] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:45:51.543 [DEBUG] [Thread-120750] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:45:51.543 [DEBUG] [Thread-120750] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:45:51.546 [DEBUG] [Thread-120750] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:45:51.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:45:51.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:45:51.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:45:51.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:45:51.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:45:51.570 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:45:51.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:45:51.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:45:51.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:45:51.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.698018 -999.00  +23.20  34.80      9  -11.10 1 1 2 1 1   887    0 34.74 -0.26 ----- 34.8 34.8 305.8 45.6 24.0 -32.1 24.2 -31.0 24.4 -31.4 24.5 -31.9
2025-11-03T18:45:51.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:45:51.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:45:51.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.698018
2025-11-03T18:45:51.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:45:51.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:45:51.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:45:51.572 [DEBUG] [Thread-120750] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:45:51.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:45:51.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:45:51.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:45:39', tmtdew=43.38, humidity=4.23, cloud=0.0, wind=24.82, temperature=23.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:45:08.755', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:45:51.656 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:45:51.668 [DEBUG] [Thread-120753] [transport.py] [_log()] starting thread (client mode): 0xed2c640
2025-11-03T18:45:51.668 [DEBUG] [Thread-120753] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:45:51.683 [DEBUG] [Thread-120753] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:45:51.683 [INFO] [Thread-120753] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:45:51.690 [DEBUG] [Thread-120753] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:45:51.691 [DEBUG] [Thread-120753] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:45:51.691 [DEBUG] [Thread-120753] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:45:51.691 [DEBUG] [Thread-120753] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:45:51.691 [DEBUG] [Thread-120753] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:45:51.691 [DEBUG] [Thread-120753] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:45:51.691 [DEBUG] [Thread-120753] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:45:51.691 [DEBUG] [Thread-120753] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:45:51.691 [DEBUG] [Thread-120753] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:45:51.691 [DEBUG] [Thread-120753] [transport.py] [_log()] client lang: <none>
2025-11-03T18:45:51.692 [DEBUG] [Thread-120753] [transport.py] [_log()] server lang: <none>
2025-11-03T18:45:51.692 [DEBUG] [Thread-120753] [transport.py] [_log()] kex follows: False
2025-11-03T18:45:51.692 [DEBUG] [Thread-120753] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:45:51.692 [DEBUG] [Thread-120753] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:45:51.692 [DEBUG] [Thread-120753] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:45:51.692 [DEBUG] [Thread-120753] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:45:51.693 [DEBUG] [Thread-120753] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:45:51.693 [DEBUG] [Thread-120753] [transport.py] [_log()] Compression: none
2025-11-03T18:45:51.693 [DEBUG] [Thread-120753] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:45:51.750 [DEBUG] [Thread-120753] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:45:51.750 [DEBUG] [Thread-120753] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:45:51.751 [DEBUG] [Thread-120753] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:45:51.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:45:51.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:45:51.805 [DEBUG] [Thread-120753] [transport.py] [_log()] userauth is OK
2025-11-03T18:45:51.805 [DEBUG] [Thread-120753] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:45:51.805 [DEBUG] [Thread-120753] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:45:51.806 [DEBUG] [Thread-120753] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:45:51.806 [DEBUG] [Thread-120753] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:45:51.829 [INFO] [Thread-120753] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:45:51.829 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:45:51.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:45:52.679 [DEBUG] [Thread-120753] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:45:52.679 [DEBUG] [Thread-120753] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:45:52.727 [DEBUG] [Thread-120753] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:45:52.727 [DEBUG] [Thread-120753] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:45:52.736 [DEBUG] [Thread-120753] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:45:52.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:45:52.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:45:52.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:45:52.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:45:52.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:45:52.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:45:52.774 [DEBUG] [Thread-120753] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:46:05.006 [DEBUG] [Thread-120755 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:46:20.060 [DEBUG] [Thread-120756 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:46:22.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:46:22.796 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:46:22.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:46:23.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 46, 11), 43.32, 4.25, 0.0, 24.7, 23.42, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:46:23.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:46:11
2025-11-03T18:46:23.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:46:23.836 [DEBUG] [Thread-120757] [transport.py] [_log()] starting thread (client mode): 0xeda1030
2025-11-03T18:46:23.836 [DEBUG] [Thread-120757] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:46:23.857 [DEBUG] [Thread-120757] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:46:23.858 [INFO] [Thread-120757] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:46:23.870 [DEBUG] [Thread-120757] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:46:23.870 [DEBUG] [Thread-120757] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:46:23.870 [DEBUG] [Thread-120757] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:46:23.870 [DEBUG] [Thread-120757] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:46:23.870 [DEBUG] [Thread-120757] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:46:23.870 [DEBUG] [Thread-120757] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:46:23.870 [DEBUG] [Thread-120757] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:46:23.870 [DEBUG] [Thread-120757] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:46:23.870 [DEBUG] [Thread-120757] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:46:23.870 [DEBUG] [Thread-120757] [transport.py] [_log()] client lang: <none>
2025-11-03T18:46:23.871 [DEBUG] [Thread-120757] [transport.py] [_log()] server lang: <none>
2025-11-03T18:46:23.871 [DEBUG] [Thread-120757] [transport.py] [_log()] kex follows: False
2025-11-03T18:46:23.871 [DEBUG] [Thread-120757] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:46:23.871 [DEBUG] [Thread-120757] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:46:23.871 [DEBUG] [Thread-120757] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:46:23.871 [DEBUG] [Thread-120757] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:46:23.871 [DEBUG] [Thread-120757] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:46:23.871 [DEBUG] [Thread-120757] [transport.py] [_log()] Compression: none
2025-11-03T18:46:23.871 [DEBUG] [Thread-120757] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:46:23.886 [DEBUG] [Thread-120757] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:46:23.887 [DEBUG] [Thread-120757] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:46:23.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:46:23.888 [DEBUG] [Thread-120757] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:46:23.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:46:23.889 [DEBUG] [Thread-120757] [transport.py] [_log()] userauth is OK
2025-11-03T18:46:23.889 [DEBUG] [Thread-120757] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:46:23.890 [DEBUG] [Thread-120757] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:46:23.890 [DEBUG] [Thread-120757] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:46:23.890 [DEBUG] [Thread-120757] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:46:23.907 [INFO] [Thread-120757] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:46:23.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:46:24.628 [DEBUG] [Thread-120757] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:46:24.628 [DEBUG] [Thread-120757] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:46:24.628 [DEBUG] [Thread-120757] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:46:24.670 [DEBUG] [Thread-120757] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:46:24.670 [DEBUG] [Thread-120757] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:46:24.673 [DEBUG] [Thread-120757] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:46:24.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:46:24.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:46:24.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:46:24.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:46:24.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:46:24.695 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:46:24.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:46:24.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:46:24.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:46:24.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.698366 -999.00  +23.20  26.47      9  -11.10 1 1 1 1 1   887    0 34.69 -2.15 ----- 26.5 26.5 288.2 38.2 24.0 -32.0 24.1 -31.0 24.3 -30.9 24.5 -31.8
2025-11-03T18:46:24.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:46:24.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:46:24.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.698366
2025-11-03T18:46:24.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:46:24.697 [DEBUG] [Thread-120757] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:46:24.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:46:24.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:46:24.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:46:24.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:46:24.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:46:11', tmtdew=43.32, humidity=4.25, cloud=0.0, wind=24.7, temperature=23.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:45:38.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:46:24.779 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:46:24.790 [DEBUG] [Thread-120760] [transport.py] [_log()] starting thread (client mode): 0xed224a0
2025-11-03T18:46:24.791 [DEBUG] [Thread-120760] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:46:24.806 [DEBUG] [Thread-120760] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:46:24.806 [INFO] [Thread-120760] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:46:24.814 [DEBUG] [Thread-120760] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:46:24.814 [DEBUG] [Thread-120760] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:46:24.814 [DEBUG] [Thread-120760] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:46:24.814 [DEBUG] [Thread-120760] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:46:24.814 [DEBUG] [Thread-120760] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:46:24.814 [DEBUG] [Thread-120760] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:46:24.814 [DEBUG] [Thread-120760] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:46:24.814 [DEBUG] [Thread-120760] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:46:24.814 [DEBUG] [Thread-120760] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:46:24.814 [DEBUG] [Thread-120760] [transport.py] [_log()] client lang: <none>
2025-11-03T18:46:24.814 [DEBUG] [Thread-120760] [transport.py] [_log()] server lang: <none>
2025-11-03T18:46:24.814 [DEBUG] [Thread-120760] [transport.py] [_log()] kex follows: False
2025-11-03T18:46:24.815 [DEBUG] [Thread-120760] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:46:24.815 [DEBUG] [Thread-120760] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:46:24.815 [DEBUG] [Thread-120760] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:46:24.815 [DEBUG] [Thread-120760] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:46:24.815 [DEBUG] [Thread-120760] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:46:24.815 [DEBUG] [Thread-120760] [transport.py] [_log()] Compression: none
2025-11-03T18:46:24.815 [DEBUG] [Thread-120760] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:46:24.874 [DEBUG] [Thread-120760] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:46:24.875 [DEBUG] [Thread-120760] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:46:24.876 [DEBUG] [Thread-120760] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:46:24.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:46:24.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:46:24.943 [DEBUG] [Thread-120760] [transport.py] [_log()] userauth is OK
2025-11-03T18:46:24.943 [DEBUG] [Thread-120760] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:46:24.943 [DEBUG] [Thread-120760] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:46:24.943 [DEBUG] [Thread-120760] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:46:24.943 [DEBUG] [Thread-120760] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:46:24.962 [INFO] [Thread-120760] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:46:24.962 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:46:24.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:46:25.787 [DEBUG] [Thread-120760] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:46:25.787 [DEBUG] [Thread-120760] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:46:25.835 [DEBUG] [Thread-120760] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:46:25.835 [DEBUG] [Thread-120760] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:46:25.845 [DEBUG] [Thread-120760] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:46:25.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:46:25.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:46:25.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:46:25.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:46:25.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:46:25.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:46:25.880 [DEBUG] [Thread-120760] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:46:34.556 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:46:34.557 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:46:35.100 [DEBUG] [Thread-120762 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:46:41.442 [DEBUG] [Thread-120763 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:46:50.151 [DEBUG] [Thread-120764 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:46:55.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:46:55.903 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:46:55.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:46:56.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 46, 44), 43.39, 4.22, 0.0, 28.19, 23.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:46:56.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:46:44
2025-11-03T18:46:56.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:46:56.915 [DEBUG] [Thread-120765] [transport.py] [_log()] starting thread (client mode): 0x141daef0
2025-11-03T18:46:56.915 [DEBUG] [Thread-120765] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:46:56.936 [DEBUG] [Thread-120765] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:46:56.936 [INFO] [Thread-120765] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:46:56.939 [DEBUG] [Thread-120765] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:46:56.939 [DEBUG] [Thread-120765] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:46:56.939 [DEBUG] [Thread-120765] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:46:56.939 [DEBUG] [Thread-120765] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:46:56.939 [DEBUG] [Thread-120765] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:46:56.939 [DEBUG] [Thread-120765] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:46:56.939 [DEBUG] [Thread-120765] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:46:56.939 [DEBUG] [Thread-120765] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:46:56.939 [DEBUG] [Thread-120765] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:46:56.939 [DEBUG] [Thread-120765] [transport.py] [_log()] client lang: <none>
2025-11-03T18:46:56.939 [DEBUG] [Thread-120765] [transport.py] [_log()] server lang: <none>
2025-11-03T18:46:56.939 [DEBUG] [Thread-120765] [transport.py] [_log()] kex follows: False
2025-11-03T18:46:56.939 [DEBUG] [Thread-120765] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:46:56.939 [DEBUG] [Thread-120765] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:46:56.939 [DEBUG] [Thread-120765] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:46:56.939 [DEBUG] [Thread-120765] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:46:56.940 [DEBUG] [Thread-120765] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:46:56.940 [DEBUG] [Thread-120765] [transport.py] [_log()] Compression: none
2025-11-03T18:46:56.940 [DEBUG] [Thread-120765] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:46:56.957 [DEBUG] [Thread-120765] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:46:56.957 [DEBUG] [Thread-120765] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:46:56.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:46:56.958 [DEBUG] [Thread-120765] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:46:56.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:46:56.961 [DEBUG] [Thread-120765] [transport.py] [_log()] userauth is OK
2025-11-03T18:46:56.961 [DEBUG] [Thread-120765] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:46:56.961 [DEBUG] [Thread-120765] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:46:56.962 [DEBUG] [Thread-120765] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:46:56.962 [DEBUG] [Thread-120765] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:46:56.985 [INFO] [Thread-120765] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:46:56.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:46:57.580 [DEBUG] [Thread-120765] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:46:57.580 [DEBUG] [Thread-120765] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:46:57.580 [DEBUG] [Thread-120765] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:46:57.620 [DEBUG] [Thread-120765] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:46:57.620 [DEBUG] [Thread-120765] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:46:57.623 [DEBUG] [Thread-120765] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:46:57.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:46:57.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:46:57.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:46:57.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:46:57.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:46:57.649 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:46:57.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:46:57.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:46:57.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:46:57.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.698713 -999.00  +23.10  35.18      9  -11.10 1 1 2 1 1   887    0 34.19 -3.97 ----- 35.2 35.2 300.0 41.6 23.9 -32.0 24.1 -31.0 24.3 -30.9 24.4 -31.8
2025-11-03T18:46:57.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:46:57.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:46:57.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.698713
2025-11-03T18:46:57.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:46:57.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:46:57.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:46:57.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:46:57.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:46:57.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:46:44', tmtdew=43.39, humidity=4.22, cloud=0.0, wind=28.19, temperature=23.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:46:08.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:46:57.650 [DEBUG] [Thread-120765] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:46:57.721 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:46:57.733 [DEBUG] [Thread-120768] [transport.py] [_log()] starting thread (client mode): 0xeda1e10
2025-11-03T18:46:57.733 [DEBUG] [Thread-120768] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:46:57.748 [DEBUG] [Thread-120768] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:46:57.748 [INFO] [Thread-120768] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:46:57.755 [DEBUG] [Thread-120768] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:46:57.755 [DEBUG] [Thread-120768] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:46:57.755 [DEBUG] [Thread-120768] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:46:57.755 [DEBUG] [Thread-120768] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:46:57.755 [DEBUG] [Thread-120768] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:46:57.755 [DEBUG] [Thread-120768] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:46:57.755 [DEBUG] [Thread-120768] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:46:57.755 [DEBUG] [Thread-120768] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:46:57.755 [DEBUG] [Thread-120768] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:46:57.755 [DEBUG] [Thread-120768] [transport.py] [_log()] client lang: <none>
2025-11-03T18:46:57.755 [DEBUG] [Thread-120768] [transport.py] [_log()] server lang: <none>
2025-11-03T18:46:57.755 [DEBUG] [Thread-120768] [transport.py] [_log()] kex follows: False
2025-11-03T18:46:57.755 [DEBUG] [Thread-120768] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:46:57.755 [DEBUG] [Thread-120768] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:46:57.756 [DEBUG] [Thread-120768] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:46:57.756 [DEBUG] [Thread-120768] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:46:57.756 [DEBUG] [Thread-120768] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:46:57.756 [DEBUG] [Thread-120768] [transport.py] [_log()] Compression: none
2025-11-03T18:46:57.756 [DEBUG] [Thread-120768] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:46:57.813 [DEBUG] [Thread-120768] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:46:57.813 [DEBUG] [Thread-120768] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:46:57.813 [DEBUG] [Thread-120768] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:46:57.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:46:57.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:46:57.870 [DEBUG] [Thread-120768] [transport.py] [_log()] userauth is OK
2025-11-03T18:46:57.870 [DEBUG] [Thread-120768] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:46:57.870 [DEBUG] [Thread-120768] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:46:57.870 [DEBUG] [Thread-120768] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:46:57.870 [DEBUG] [Thread-120768] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:46:57.885 [INFO] [Thread-120768] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:46:57.885 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:46:57.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:46:58.677 [DEBUG] [Thread-120768] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:46:58.678 [DEBUG] [Thread-120768] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:46:58.726 [DEBUG] [Thread-120768] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:46:58.726 [DEBUG] [Thread-120768] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:46:58.735 [DEBUG] [Thread-120768] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:46:58.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:46:58.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:46:58.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:46:58.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:46:58.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:46:58.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:46:58.775 [DEBUG] [Thread-120768] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:47:05.184 [DEBUG] [Thread-120770 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:47:20.237 [DEBUG] [Thread-120771 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:47:28.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:47:28.796 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:47:28.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:47:29.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 47, 17), 43.23, 4.28, 0.0, 26.71, 23.41, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:47:29.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:47:17
2025-11-03T18:47:29.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:47:29.790 [DEBUG] [Thread-120772] [transport.py] [_log()] starting thread (client mode): 0xedc59f0
2025-11-03T18:47:29.790 [DEBUG] [Thread-120772] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:47:29.811 [DEBUG] [Thread-120772] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:47:29.811 [INFO] [Thread-120772] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:47:29.814 [DEBUG] [Thread-120772] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:47:29.814 [DEBUG] [Thread-120772] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:47:29.814 [DEBUG] [Thread-120772] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:47:29.814 [DEBUG] [Thread-120772] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:47:29.814 [DEBUG] [Thread-120772] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:47:29.814 [DEBUG] [Thread-120772] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:47:29.814 [DEBUG] [Thread-120772] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:47:29.814 [DEBUG] [Thread-120772] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:47:29.814 [DEBUG] [Thread-120772] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:47:29.815 [DEBUG] [Thread-120772] [transport.py] [_log()] client lang: <none>
2025-11-03T18:47:29.815 [DEBUG] [Thread-120772] [transport.py] [_log()] server lang: <none>
2025-11-03T18:47:29.815 [DEBUG] [Thread-120772] [transport.py] [_log()] kex follows: False
2025-11-03T18:47:29.815 [DEBUG] [Thread-120772] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:47:29.815 [DEBUG] [Thread-120772] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:47:29.815 [DEBUG] [Thread-120772] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:47:29.815 [DEBUG] [Thread-120772] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:47:29.815 [DEBUG] [Thread-120772] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:47:29.815 [DEBUG] [Thread-120772] [transport.py] [_log()] Compression: none
2025-11-03T18:47:29.815 [DEBUG] [Thread-120772] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:47:29.835 [DEBUG] [Thread-120772] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:47:29.836 [DEBUG] [Thread-120772] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:47:29.836 [DEBUG] [Thread-120772] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:47:29.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:47:29.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:47:29.838 [DEBUG] [Thread-120772] [transport.py] [_log()] userauth is OK
2025-11-03T18:47:29.839 [DEBUG] [Thread-120772] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:47:29.839 [DEBUG] [Thread-120772] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:47:29.839 [DEBUG] [Thread-120772] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:47:29.839 [DEBUG] [Thread-120772] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:47:29.872 [INFO] [Thread-120772] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:47:29.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:47:30.603 [DEBUG] [Thread-120772] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:47:30.603 [DEBUG] [Thread-120772] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:47:30.603 [DEBUG] [Thread-120772] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:47:30.644 [DEBUG] [Thread-120772] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:47:30.644 [DEBUG] [Thread-120772] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:47:30.649 [DEBUG] [Thread-120772] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:47:30.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:47:30.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:47:30.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:47:30.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:47:30.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:47:30.668 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:47:30.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:47:30.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:47:30.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:47:30.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.699060 -999.00  +23.10  28.93      9  -11.00 1 1 1 1 1   887    0 34.21 -6.62 ----- 28.9 28.9 292.4 39.7 23.9 -32.0 24.1 -30.9 24.2 -31.2 24.4 -31.7
2025-11-03T18:47:30.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:47:30.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:47:30.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.699060
2025-11-03T18:47:30.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:47:30.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:47:30.669 [DEBUG] [Thread-120772] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:47:30.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:47:30.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:47:30.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:47:30.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:47:17', tmtdew=43.23, humidity=4.28, cloud=0.0, wind=26.71, temperature=23.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:46:38.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:47:30.742 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:47:30.755 [DEBUG] [Thread-120775] [transport.py] [_log()] starting thread (client mode): 0xed115d0
2025-11-03T18:47:30.755 [DEBUG] [Thread-120775] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:47:30.770 [DEBUG] [Thread-120775] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:47:30.770 [INFO] [Thread-120775] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:47:30.777 [DEBUG] [Thread-120775] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:47:30.777 [DEBUG] [Thread-120775] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:47:30.777 [DEBUG] [Thread-120775] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:47:30.777 [DEBUG] [Thread-120775] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:47:30.777 [DEBUG] [Thread-120775] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:47:30.777 [DEBUG] [Thread-120775] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:47:30.777 [DEBUG] [Thread-120775] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:47:30.777 [DEBUG] [Thread-120775] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:47:30.777 [DEBUG] [Thread-120775] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:47:30.777 [DEBUG] [Thread-120775] [transport.py] [_log()] client lang: <none>
2025-11-03T18:47:30.777 [DEBUG] [Thread-120775] [transport.py] [_log()] server lang: <none>
2025-11-03T18:47:30.777 [DEBUG] [Thread-120775] [transport.py] [_log()] kex follows: False
2025-11-03T18:47:30.777 [DEBUG] [Thread-120775] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:47:30.777 [DEBUG] [Thread-120775] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:47:30.777 [DEBUG] [Thread-120775] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:47:30.778 [DEBUG] [Thread-120775] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:47:30.778 [DEBUG] [Thread-120775] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:47:30.778 [DEBUG] [Thread-120775] [transport.py] [_log()] Compression: none
2025-11-03T18:47:30.778 [DEBUG] [Thread-120775] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:47:30.834 [DEBUG] [Thread-120775] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:47:30.834 [DEBUG] [Thread-120775] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:47:30.834 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:47:30.835 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:47:30.835 [DEBUG] [Thread-120775] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:47:30.895 [DEBUG] [Thread-120775] [transport.py] [_log()] userauth is OK
2025-11-03T18:47:30.895 [DEBUG] [Thread-120775] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:47:30.895 [DEBUG] [Thread-120775] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:47:30.895 [DEBUG] [Thread-120775] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:47:30.895 [DEBUG] [Thread-120775] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:47:30.909 [INFO] [Thread-120775] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:47:30.909 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:47:30.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:47:31.725 [DEBUG] [Thread-120775] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:47:31.725 [DEBUG] [Thread-120775] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:47:31.775 [DEBUG] [Thread-120775] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:47:31.775 [DEBUG] [Thread-120775] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:47:31.784 [DEBUG] [Thread-120775] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:47:31.794 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:47:31.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:47:31.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:47:31.815 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:47:31.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:47:31.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:47:31.830 [DEBUG] [Thread-120775] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:47:34.704 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:47:34.705 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:47:35.270 [DEBUG] [Thread-120777 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:47:41.614 [DEBUG] [Thread-120778 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:47:50.326 [DEBUG] [Thread-120779 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:48:01.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:48:01.846 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:48:01.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:48:02.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 47, 50), 43.22, 4.22, 0.0, 33.0, 23.21, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:48:02.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:47:50
2025-11-03T18:48:02.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:48:02.808 [DEBUG] [Thread-120780] [transport.py] [_log()] starting thread (client mode): 0x141d91e0
2025-11-03T18:48:02.808 [DEBUG] [Thread-120780] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:48:02.828 [DEBUG] [Thread-120780] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:48:02.828 [INFO] [Thread-120780] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:48:02.831 [DEBUG] [Thread-120780] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:48:02.831 [DEBUG] [Thread-120780] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:48:02.831 [DEBUG] [Thread-120780] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:48:02.831 [DEBUG] [Thread-120780] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:48:02.831 [DEBUG] [Thread-120780] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:48:02.832 [DEBUG] [Thread-120780] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:48:02.832 [DEBUG] [Thread-120780] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:48:02.832 [DEBUG] [Thread-120780] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:48:02.832 [DEBUG] [Thread-120780] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:48:02.832 [DEBUG] [Thread-120780] [transport.py] [_log()] client lang: <none>
2025-11-03T18:48:02.832 [DEBUG] [Thread-120780] [transport.py] [_log()] server lang: <none>
2025-11-03T18:48:02.832 [DEBUG] [Thread-120780] [transport.py] [_log()] kex follows: False
2025-11-03T18:48:02.832 [DEBUG] [Thread-120780] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:48:02.832 [DEBUG] [Thread-120780] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:48:02.832 [DEBUG] [Thread-120780] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:48:02.832 [DEBUG] [Thread-120780] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:48:02.832 [DEBUG] [Thread-120780] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:48:02.832 [DEBUG] [Thread-120780] [transport.py] [_log()] Compression: none
2025-11-03T18:48:02.832 [DEBUG] [Thread-120780] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:48:02.849 [DEBUG] [Thread-120780] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:48:02.850 [DEBUG] [Thread-120780] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:48:02.851 [DEBUG] [Thread-120780] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:48:02.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:48:02.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:48:02.893 [DEBUG] [Thread-120780] [transport.py] [_log()] userauth is OK
2025-11-03T18:48:02.894 [DEBUG] [Thread-120780] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:48:02.894 [DEBUG] [Thread-120780] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:48:02.894 [DEBUG] [Thread-120780] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:48:02.895 [DEBUG] [Thread-120780] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:48:02.926 [INFO] [Thread-120780] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:48:02.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:48:03.538 [DEBUG] [Thread-120780] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:48:03.538 [DEBUG] [Thread-120780] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:48:03.539 [DEBUG] [Thread-120780] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:48:03.579 [DEBUG] [Thread-120780] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:48:03.579 [DEBUG] [Thread-120780] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:48:03.582 [DEBUG] [Thread-120780] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:48:03.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:48:03.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:48:03.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:48:03.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:48:03.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:48:03.617 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:48:03.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:48:03.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:48:03.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:48:03.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.699407 -999.00  +23.10  31.15      9  -11.00 1 1 2 1 1   887    0 34.93 -8.97 ----- 31.1 31.1 295.6 39.7 23.9 -32.1 24.0 -31.0 24.2 -31.2 24.3 -31.6
2025-11-03T18:48:03.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:48:03.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:48:03.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.699407
2025-11-03T18:48:03.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:48:03.620 [DEBUG] [Thread-120780] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:48:03.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:48:03.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:48:03.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:48:03.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:48:03.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:47:50', tmtdew=43.22, humidity=4.22, cloud=0.0, wind=33.0, temperature=23.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:47:08.765', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:48:03.705 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:48:03.716 [DEBUG] [Thread-120783] [transport.py] [_log()] starting thread (client mode): 0x141d9f30
2025-11-03T18:48:03.716 [DEBUG] [Thread-120783] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:48:03.731 [DEBUG] [Thread-120783] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:48:03.731 [INFO] [Thread-120783] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:48:03.742 [DEBUG] [Thread-120783] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:48:03.742 [DEBUG] [Thread-120783] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:48:03.742 [DEBUG] [Thread-120783] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:48:03.742 [DEBUG] [Thread-120783] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:48:03.742 [DEBUG] [Thread-120783] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:48:03.742 [DEBUG] [Thread-120783] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:48:03.742 [DEBUG] [Thread-120783] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:48:03.742 [DEBUG] [Thread-120783] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:48:03.743 [DEBUG] [Thread-120783] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:48:03.743 [DEBUG] [Thread-120783] [transport.py] [_log()] client lang: <none>
2025-11-03T18:48:03.743 [DEBUG] [Thread-120783] [transport.py] [_log()] server lang: <none>
2025-11-03T18:48:03.743 [DEBUG] [Thread-120783] [transport.py] [_log()] kex follows: False
2025-11-03T18:48:03.743 [DEBUG] [Thread-120783] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:48:03.743 [DEBUG] [Thread-120783] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:48:03.743 [DEBUG] [Thread-120783] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:48:03.743 [DEBUG] [Thread-120783] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:48:03.743 [DEBUG] [Thread-120783] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:48:03.743 [DEBUG] [Thread-120783] [transport.py] [_log()] Compression: none
2025-11-03T18:48:03.743 [DEBUG] [Thread-120783] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:48:03.807 [DEBUG] [Thread-120783] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:48:03.808 [DEBUG] [Thread-120783] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:48:03.809 [DEBUG] [Thread-120783] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:48:03.809 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:48:03.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:48:03.874 [DEBUG] [Thread-120783] [transport.py] [_log()] userauth is OK
2025-11-03T18:48:03.874 [DEBUG] [Thread-120783] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:48:03.875 [DEBUG] [Thread-120783] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:48:03.875 [DEBUG] [Thread-120783] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:48:03.875 [DEBUG] [Thread-120783] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:48:03.896 [INFO] [Thread-120783] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:48:03.897 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:48:03.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:48:04.737 [DEBUG] [Thread-120783] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:48:04.738 [DEBUG] [Thread-120783] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:48:04.785 [DEBUG] [Thread-120783] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:48:04.785 [DEBUG] [Thread-120783] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:48:04.795 [DEBUG] [Thread-120783] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:48:04.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:48:04.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:48:04.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:48:04.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:48:04.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:48:04.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:48:04.841 [DEBUG] [Thread-120783] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:48:05.356 [DEBUG] [Thread-120785 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:48:20.411 [DEBUG] [Thread-120786 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:48:34.855 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:48:34.855 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:48:34.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:48:34.863 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:48:34.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:48:35.448 [DEBUG] [Thread-120787 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:48:35.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 48, 22), 43.07, 4.28, 0.0, 36.28, 23.27, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:48:35.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:48:22
2025-11-03T18:48:35.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:48:35.914 [DEBUG] [Thread-120788] [transport.py] [_log()] starting thread (client mode): 0xedc6aa0
2025-11-03T18:48:35.914 [DEBUG] [Thread-120788] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:48:35.937 [DEBUG] [Thread-120788] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:48:35.937 [INFO] [Thread-120788] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:48:35.940 [DEBUG] [Thread-120788] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:48:35.940 [DEBUG] [Thread-120788] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:48:35.940 [DEBUG] [Thread-120788] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:48:35.940 [DEBUG] [Thread-120788] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:48:35.940 [DEBUG] [Thread-120788] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:48:35.940 [DEBUG] [Thread-120788] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:48:35.940 [DEBUG] [Thread-120788] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:48:35.940 [DEBUG] [Thread-120788] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:48:35.940 [DEBUG] [Thread-120788] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:48:35.940 [DEBUG] [Thread-120788] [transport.py] [_log()] client lang: <none>
2025-11-03T18:48:35.940 [DEBUG] [Thread-120788] [transport.py] [_log()] server lang: <none>
2025-11-03T18:48:35.940 [DEBUG] [Thread-120788] [transport.py] [_log()] kex follows: False
2025-11-03T18:48:35.940 [DEBUG] [Thread-120788] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:48:35.940 [DEBUG] [Thread-120788] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:48:35.941 [DEBUG] [Thread-120788] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:48:35.941 [DEBUG] [Thread-120788] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:48:35.941 [DEBUG] [Thread-120788] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:48:35.941 [DEBUG] [Thread-120788] [transport.py] [_log()] Compression: none
2025-11-03T18:48:35.941 [DEBUG] [Thread-120788] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:48:35.956 [DEBUG] [Thread-120788] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:48:35.956 [DEBUG] [Thread-120788] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:48:35.956 [DEBUG] [Thread-120788] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:48:35.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:48:35.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:48:35.957 [DEBUG] [Thread-120788] [transport.py] [_log()] userauth is OK
2025-11-03T18:48:35.957 [DEBUG] [Thread-120788] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:48:35.957 [DEBUG] [Thread-120788] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:48:35.957 [DEBUG] [Thread-120788] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:48:35.957 [DEBUG] [Thread-120788] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:48:35.968 [INFO] [Thread-120788] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:48:35.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:48:36.738 [DEBUG] [Thread-120788] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:48:36.739 [DEBUG] [Thread-120788] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:48:36.739 [DEBUG] [Thread-120788] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:48:36.779 [DEBUG] [Thread-120788] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:48:36.779 [DEBUG] [Thread-120788] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:48:36.785 [DEBUG] [Thread-120788] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:48:36.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:48:36.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:48:36.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:48:36.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:48:36.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:48:36.803 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:48:36.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:48:36.803 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:48:36.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:48:36.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.699755 -999.00  +23.00  31.79      9  -11.10 1 1 2 1 1   887    0 34.08 -13.15 ----- 31.8 31.8 298.2 41.3 23.9 -31.9 24.0 -31.0 24.1 -31.4 24.3 -31.9
2025-11-03T18:48:36.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:48:36.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:48:36.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.699755
2025-11-03T18:48:36.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:48:36.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:48:36.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:48:36.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:48:36.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:48:36.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:48:22', tmtdew=43.07, humidity=4.28, cloud=0.0, wind=36.28, temperature=23.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:47:38.832', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:48:36.804 [DEBUG] [Thread-120788] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:48:36.879 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:48:36.891 [DEBUG] [Thread-120791] [transport.py] [_log()] starting thread (client mode): 0xed8abc0
2025-11-03T18:48:36.891 [DEBUG] [Thread-120791] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:48:36.905 [DEBUG] [Thread-120791] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:48:36.905 [INFO] [Thread-120791] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:48:36.913 [DEBUG] [Thread-120791] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:48:36.913 [DEBUG] [Thread-120791] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:48:36.913 [DEBUG] [Thread-120791] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:48:36.913 [DEBUG] [Thread-120791] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:48:36.913 [DEBUG] [Thread-120791] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:48:36.913 [DEBUG] [Thread-120791] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:48:36.913 [DEBUG] [Thread-120791] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:48:36.913 [DEBUG] [Thread-120791] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:48:36.913 [DEBUG] [Thread-120791] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:48:36.913 [DEBUG] [Thread-120791] [transport.py] [_log()] client lang: <none>
2025-11-03T18:48:36.913 [DEBUG] [Thread-120791] [transport.py] [_log()] server lang: <none>
2025-11-03T18:48:36.913 [DEBUG] [Thread-120791] [transport.py] [_log()] kex follows: False
2025-11-03T18:48:36.913 [DEBUG] [Thread-120791] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:48:36.913 [DEBUG] [Thread-120791] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:48:36.913 [DEBUG] [Thread-120791] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:48:36.913 [DEBUG] [Thread-120791] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:48:36.914 [DEBUG] [Thread-120791] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:48:36.914 [DEBUG] [Thread-120791] [transport.py] [_log()] Compression: none
2025-11-03T18:48:36.914 [DEBUG] [Thread-120791] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:48:36.969 [DEBUG] [Thread-120791] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:48:36.970 [DEBUG] [Thread-120791] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:48:36.970 [DEBUG] [Thread-120791] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:48:36.970 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:48:36.970 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:48:37.027 [DEBUG] [Thread-120791] [transport.py] [_log()] userauth is OK
2025-11-03T18:48:37.027 [DEBUG] [Thread-120791] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:48:37.027 [DEBUG] [Thread-120791] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:48:37.027 [DEBUG] [Thread-120791] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:48:37.027 [DEBUG] [Thread-120791] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:48:37.041 [INFO] [Thread-120791] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:48:37.041 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:48:37.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:48:37.845 [DEBUG] [Thread-120791] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:48:37.845 [DEBUG] [Thread-120791] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:48:37.893 [DEBUG] [Thread-120791] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:48:37.893 [DEBUG] [Thread-120791] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:48:37.902 [DEBUG] [Thread-120791] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:48:37.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:48:37.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:48:37.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:48:37.925 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:48:37.925 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:48:37.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:48:37.933 [DEBUG] [Thread-120791] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:48:41.697 [DEBUG] [Thread-120793 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:48:50.480 [DEBUG] [Thread-120794 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:49:05.549 [DEBUG] [Thread-120795 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:49:07.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:49:07.943 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:49:07.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:49:08.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 48, 54), 42.96, 4.28, 0.0, 28.19, 23.24, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:49:08.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:48:54
2025-11-03T18:49:08.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:49:09.003 [DEBUG] [Thread-120796] [transport.py] [_log()] starting thread (client mode): 0xed8a920
2025-11-03T18:49:09.003 [DEBUG] [Thread-120796] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:49:09.022 [DEBUG] [Thread-120796] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:49:09.023 [INFO] [Thread-120796] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:49:09.026 [DEBUG] [Thread-120796] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:49:09.026 [DEBUG] [Thread-120796] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:49:09.026 [DEBUG] [Thread-120796] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:49:09.026 [DEBUG] [Thread-120796] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:49:09.026 [DEBUG] [Thread-120796] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:49:09.026 [DEBUG] [Thread-120796] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:49:09.026 [DEBUG] [Thread-120796] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:49:09.026 [DEBUG] [Thread-120796] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:49:09.026 [DEBUG] [Thread-120796] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:49:09.027 [DEBUG] [Thread-120796] [transport.py] [_log()] client lang: <none>
2025-11-03T18:49:09.027 [DEBUG] [Thread-120796] [transport.py] [_log()] server lang: <none>
2025-11-03T18:49:09.027 [DEBUG] [Thread-120796] [transport.py] [_log()] kex follows: False
2025-11-03T18:49:09.027 [DEBUG] [Thread-120796] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:49:09.027 [DEBUG] [Thread-120796] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:49:09.027 [DEBUG] [Thread-120796] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:49:09.027 [DEBUG] [Thread-120796] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:49:09.027 [DEBUG] [Thread-120796] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:49:09.027 [DEBUG] [Thread-120796] [transport.py] [_log()] Compression: none
2025-11-03T18:49:09.027 [DEBUG] [Thread-120796] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:49:09.046 [DEBUG] [Thread-120796] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:49:09.047 [DEBUG] [Thread-120796] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:49:09.048 [DEBUG] [Thread-120796] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:49:09.048 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:49:09.048 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:49:09.050 [DEBUG] [Thread-120796] [transport.py] [_log()] userauth is OK
2025-11-03T18:49:09.050 [DEBUG] [Thread-120796] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:49:09.050 [DEBUG] [Thread-120796] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:49:09.050 [DEBUG] [Thread-120796] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:49:09.050 [DEBUG] [Thread-120796] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:49:09.068 [INFO] [Thread-120796] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:49:09.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:49:09.751 [DEBUG] [Thread-120796] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:49:09.751 [DEBUG] [Thread-120796] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:49:09.751 [DEBUG] [Thread-120796] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:49:09.792 [DEBUG] [Thread-120796] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:49:09.792 [DEBUG] [Thread-120796] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:49:09.795 [DEBUG] [Thread-120796] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:49:09.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:49:09.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:49:09.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:49:09.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:49:09.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:49:09.821 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:49:09.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:49:09.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:49:09.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:49:09.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.700450 -999.00  +23.00  25.61      9  -11.10 1 1 1 1 1   887    0 33.71 -20.76 ----- 25.6 25.6 291.6 39.2 23.8 -31.9 23.9 -30.9 24.1 -31.2 24.2 -31.7
2025-11-03T18:49:09.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:49:09.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:49:09.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.700450
2025-11-03T18:49:09.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:49:09.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:49:09.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:49:09.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:49:09.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:49:09.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:48:54', tmtdew=42.96, humidity=4.28, cloud=0.0, wind=28.19, temperature=23.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:48:38.880', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:49:09.823 [DEBUG] [Thread-120796] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:49:09.894 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:49:09.905 [DEBUG] [Thread-120799] [transport.py] [_log()] starting thread (client mode): 0xedc7580
2025-11-03T18:49:09.905 [DEBUG] [Thread-120799] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:49:09.920 [DEBUG] [Thread-120799] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:49:09.920 [INFO] [Thread-120799] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:49:09.928 [DEBUG] [Thread-120799] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:49:09.928 [DEBUG] [Thread-120799] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:49:09.928 [DEBUG] [Thread-120799] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:49:09.928 [DEBUG] [Thread-120799] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:49:09.928 [DEBUG] [Thread-120799] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:49:09.928 [DEBUG] [Thread-120799] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:49:09.928 [DEBUG] [Thread-120799] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:49:09.928 [DEBUG] [Thread-120799] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:49:09.929 [DEBUG] [Thread-120799] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:49:09.929 [DEBUG] [Thread-120799] [transport.py] [_log()] client lang: <none>
2025-11-03T18:49:09.929 [DEBUG] [Thread-120799] [transport.py] [_log()] server lang: <none>
2025-11-03T18:49:09.929 [DEBUG] [Thread-120799] [transport.py] [_log()] kex follows: False
2025-11-03T18:49:09.929 [DEBUG] [Thread-120799] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:49:09.929 [DEBUG] [Thread-120799] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:49:09.929 [DEBUG] [Thread-120799] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:49:09.929 [DEBUG] [Thread-120799] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:49:09.929 [DEBUG] [Thread-120799] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:49:09.929 [DEBUG] [Thread-120799] [transport.py] [_log()] Compression: none
2025-11-03T18:49:09.929 [DEBUG] [Thread-120799] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:49:09.987 [DEBUG] [Thread-120799] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:49:09.987 [DEBUG] [Thread-120799] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:49:09.987 [DEBUG] [Thread-120799] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:49:09.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:49:09.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:49:10.044 [DEBUG] [Thread-120799] [transport.py] [_log()] userauth is OK
2025-11-03T18:49:10.044 [DEBUG] [Thread-120799] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:49:10.044 [DEBUG] [Thread-120799] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:49:10.044 [DEBUG] [Thread-120799] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:49:10.044 [DEBUG] [Thread-120799] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:49:10.058 [INFO] [Thread-120799] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:49:10.058 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:49:10.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:49:10.905 [DEBUG] [Thread-120799] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:49:10.905 [DEBUG] [Thread-120799] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:49:10.953 [DEBUG] [Thread-120799] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:49:10.953 [DEBUG] [Thread-120799] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:49:10.963 [DEBUG] [Thread-120799] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:49:10.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:49:10.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:49:10.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:49:10.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:49:10.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:49:10.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:49:11.000 [DEBUG] [Thread-120799] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:49:20.584 [DEBUG] [Thread-120801 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:49:34.997 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:49:35.005 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:49:35.635 [DEBUG] [Thread-120802 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:49:41.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:49:41.022 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:49:41.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:49:41.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 49, 27), 42.91, 4.3, 0.0, 25.04, 23.22, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:49:41.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:49:27
2025-11-03T18:49:41.773 [DEBUG] [Thread-120803 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:49:41.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:49:42.015 [DEBUG] [Thread-120804] [transport.py] [_log()] starting thread (client mode): 0xedc78e0
2025-11-03T18:49:42.015 [DEBUG] [Thread-120804] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:49:42.034 [DEBUG] [Thread-120804] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:49:42.034 [INFO] [Thread-120804] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:49:42.036 [DEBUG] [Thread-120804] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:49:42.036 [DEBUG] [Thread-120804] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:49:42.036 [DEBUG] [Thread-120804] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:49:42.036 [DEBUG] [Thread-120804] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:49:42.036 [DEBUG] [Thread-120804] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:49:42.036 [DEBUG] [Thread-120804] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:49:42.036 [DEBUG] [Thread-120804] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:49:42.036 [DEBUG] [Thread-120804] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:49:42.036 [DEBUG] [Thread-120804] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:49:42.036 [DEBUG] [Thread-120804] [transport.py] [_log()] client lang: <none>
2025-11-03T18:49:42.036 [DEBUG] [Thread-120804] [transport.py] [_log()] server lang: <none>
2025-11-03T18:49:42.036 [DEBUG] [Thread-120804] [transport.py] [_log()] kex follows: False
2025-11-03T18:49:42.036 [DEBUG] [Thread-120804] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:49:42.036 [DEBUG] [Thread-120804] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:49:42.036 [DEBUG] [Thread-120804] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:49:42.036 [DEBUG] [Thread-120804] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:49:42.045 [DEBUG] [Thread-120804] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:49:42.045 [DEBUG] [Thread-120804] [transport.py] [_log()] Compression: none
2025-11-03T18:49:42.045 [DEBUG] [Thread-120804] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:49:42.057 [DEBUG] [Thread-120804] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:49:42.057 [DEBUG] [Thread-120804] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:49:42.057 [DEBUG] [Thread-120804] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:49:42.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:49:42.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:49:42.058 [DEBUG] [Thread-120804] [transport.py] [_log()] userauth is OK
2025-11-03T18:49:42.058 [DEBUG] [Thread-120804] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:49:42.058 [DEBUG] [Thread-120804] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:49:42.058 [DEBUG] [Thread-120804] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:49:42.058 [DEBUG] [Thread-120804] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:49:42.073 [INFO] [Thread-120804] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:49:42.074 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:49:42.821 [DEBUG] [Thread-120804] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:49:42.821 [DEBUG] [Thread-120804] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:49:42.821 [DEBUG] [Thread-120804] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:49:42.862 [DEBUG] [Thread-120804] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:49:42.862 [DEBUG] [Thread-120804] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:49:42.866 [DEBUG] [Thread-120804] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:49:42.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:49:42.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:49:42.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:49:42.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:49:42.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:49:42.884 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:49:42.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:49:42.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:49:42.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:49:42.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.700796 -999.00  +23.00  31.74      9  -11.10 1 1 2 1 1   887    0 33.83 -22.31 ----- 31.7 31.7 297.6 38.1 23.7 -31.9 23.9 -30.9 24.0 -31.6 24.1 -31.8
2025-11-03T18:49:42.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:49:42.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:49:42.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.700796
2025-11-03T18:49:42.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:49:42.893 [DEBUG] [Thread-120804] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:49:42.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:49:42.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:49:42.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:49:42.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:49:42.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:49:27', tmtdew=42.91, humidity=4.3, cloud=0.0, wind=25.04, temperature=23.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:49:08.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:49:42.980 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:49:42.997 [DEBUG] [Thread-120807] [transport.py] [_log()] starting thread (client mode): 0xed134c0
2025-11-03T18:49:42.997 [DEBUG] [Thread-120807] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:49:43.015 [DEBUG] [Thread-120807] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:49:43.016 [INFO] [Thread-120807] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:49:43.027 [DEBUG] [Thread-120807] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:49:43.028 [DEBUG] [Thread-120807] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:49:43.028 [DEBUG] [Thread-120807] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:49:43.028 [DEBUG] [Thread-120807] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:49:43.028 [DEBUG] [Thread-120807] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:49:43.028 [DEBUG] [Thread-120807] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:49:43.028 [DEBUG] [Thread-120807] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:49:43.028 [DEBUG] [Thread-120807] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:49:43.028 [DEBUG] [Thread-120807] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:49:43.028 [DEBUG] [Thread-120807] [transport.py] [_log()] client lang: <none>
2025-11-03T18:49:43.028 [DEBUG] [Thread-120807] [transport.py] [_log()] server lang: <none>
2025-11-03T18:49:43.028 [DEBUG] [Thread-120807] [transport.py] [_log()] kex follows: False
2025-11-03T18:49:43.028 [DEBUG] [Thread-120807] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:49:43.029 [DEBUG] [Thread-120807] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:49:43.029 [DEBUG] [Thread-120807] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:49:43.029 [DEBUG] [Thread-120807] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:49:43.029 [DEBUG] [Thread-120807] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:49:43.029 [DEBUG] [Thread-120807] [transport.py] [_log()] Compression: none
2025-11-03T18:49:43.029 [DEBUG] [Thread-120807] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:49:43.086 [DEBUG] [Thread-120807] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:49:43.086 [DEBUG] [Thread-120807] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:49:43.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:49:43.087 [DEBUG] [Thread-120807] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:49:43.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:49:43.144 [DEBUG] [Thread-120807] [transport.py] [_log()] userauth is OK
2025-11-03T18:49:43.145 [DEBUG] [Thread-120807] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:49:43.145 [DEBUG] [Thread-120807] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:49:43.145 [DEBUG] [Thread-120807] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:49:43.145 [DEBUG] [Thread-120807] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:49:43.165 [INFO] [Thread-120807] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:49:43.165 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:49:43.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:49:43.989 [DEBUG] [Thread-120807] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:49:43.989 [DEBUG] [Thread-120807] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:49:44.037 [DEBUG] [Thread-120807] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:49:44.038 [DEBUG] [Thread-120807] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:49:44.046 [DEBUG] [Thread-120807] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:49:44.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:49:44.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:49:44.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:49:44.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:49:44.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:49:44.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:49:44.082 [DEBUG] [Thread-120807] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:49:50.669 [DEBUG] [Thread-120809 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:50:05.715 [DEBUG] [Thread-120810 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:50:14.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:50:14.084 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:50:14.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:50:14.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 49, 59), 42.9, 4.3, 0.0, 26.66, 23.14, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:50:14.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:49:59
2025-11-03T18:50:14.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:50:15.148 [DEBUG] [Thread-120811] [transport.py] [_log()] starting thread (client mode): 0x141d9ea0
2025-11-03T18:50:15.148 [DEBUG] [Thread-120811] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:50:15.169 [DEBUG] [Thread-120811] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:50:15.169 [INFO] [Thread-120811] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:50:15.172 [DEBUG] [Thread-120811] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:50:15.172 [DEBUG] [Thread-120811] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:50:15.172 [DEBUG] [Thread-120811] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:50:15.172 [DEBUG] [Thread-120811] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:50:15.172 [DEBUG] [Thread-120811] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:50:15.172 [DEBUG] [Thread-120811] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:50:15.172 [DEBUG] [Thread-120811] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:50:15.172 [DEBUG] [Thread-120811] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:50:15.172 [DEBUG] [Thread-120811] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:50:15.172 [DEBUG] [Thread-120811] [transport.py] [_log()] client lang: <none>
2025-11-03T18:50:15.172 [DEBUG] [Thread-120811] [transport.py] [_log()] server lang: <none>
2025-11-03T18:50:15.172 [DEBUG] [Thread-120811] [transport.py] [_log()] kex follows: False
2025-11-03T18:50:15.172 [DEBUG] [Thread-120811] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:50:15.172 [DEBUG] [Thread-120811] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:50:15.172 [DEBUG] [Thread-120811] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:50:15.173 [DEBUG] [Thread-120811] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:50:15.173 [DEBUG] [Thread-120811] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:50:15.173 [DEBUG] [Thread-120811] [transport.py] [_log()] Compression: none
2025-11-03T18:50:15.173 [DEBUG] [Thread-120811] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:50:15.192 [DEBUG] [Thread-120811] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:50:15.193 [DEBUG] [Thread-120811] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:50:15.194 [DEBUG] [Thread-120811] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:50:15.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:50:15.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:50:15.196 [DEBUG] [Thread-120811] [transport.py] [_log()] userauth is OK
2025-11-03T18:50:15.197 [DEBUG] [Thread-120811] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:50:15.197 [DEBUG] [Thread-120811] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:50:15.197 [DEBUG] [Thread-120811] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:50:15.197 [DEBUG] [Thread-120811] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:50:15.232 [INFO] [Thread-120811] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:50:15.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:50:18.367 [DEBUG] [Thread-120811] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:50:18.367 [DEBUG] [Thread-120811] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:50:18.367 [DEBUG] [Thread-120811] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:50:18.408 [DEBUG] [Thread-120811] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:50:18.408 [DEBUG] [Thread-120811] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:50:18.411 [DEBUG] [Thread-120811] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:50:18.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:50:18.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:50:18.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:50:18.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:50:18.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:50:18.530 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:50:18.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:50:18.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:50:18.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:50:18.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.701143 -999.00  +23.00  24.48      9  -11.10 1 1 1 1 1   887    0 33.30 -26.48 ----- 24.5 24.5 301.6 38.5 23.7 -31.9 23.8 -31.0 23.9 -31.3 24.1 -31.8
2025-11-03T18:50:18.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:50:18.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:50:18.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.701143
2025-11-03T18:50:18.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:50:18.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:50:18.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:50:18.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:50:18.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:50:18.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:49:59', tmtdew=42.9, humidity=4.3, cloud=0.0, wind=26.66, temperature=23.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:49:38.755', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:50:18.533 [DEBUG] [Thread-120811] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:50:18.618 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:50:18.630 [DEBUG] [Thread-120814] [transport.py] [_log()] starting thread (client mode): 0x1179a3e0
2025-11-03T18:50:18.630 [DEBUG] [Thread-120814] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:50:18.646 [DEBUG] [Thread-120814] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:50:18.646 [INFO] [Thread-120814] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:50:18.653 [DEBUG] [Thread-120814] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:50:18.653 [DEBUG] [Thread-120814] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:50:18.653 [DEBUG] [Thread-120814] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:50:18.653 [DEBUG] [Thread-120814] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:50:18.653 [DEBUG] [Thread-120814] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:50:18.653 [DEBUG] [Thread-120814] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:50:18.653 [DEBUG] [Thread-120814] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:50:18.653 [DEBUG] [Thread-120814] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:50:18.653 [DEBUG] [Thread-120814] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:50:18.653 [DEBUG] [Thread-120814] [transport.py] [_log()] client lang: <none>
2025-11-03T18:50:18.653 [DEBUG] [Thread-120814] [transport.py] [_log()] server lang: <none>
2025-11-03T18:50:18.654 [DEBUG] [Thread-120814] [transport.py] [_log()] kex follows: False
2025-11-03T18:50:18.654 [DEBUG] [Thread-120814] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:50:18.654 [DEBUG] [Thread-120814] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:50:18.654 [DEBUG] [Thread-120814] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:50:18.654 [DEBUG] [Thread-120814] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:50:18.654 [DEBUG] [Thread-120814] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:50:18.654 [DEBUG] [Thread-120814] [transport.py] [_log()] Compression: none
2025-11-03T18:50:18.654 [DEBUG] [Thread-120814] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:50:18.711 [DEBUG] [Thread-120814] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:50:18.711 [DEBUG] [Thread-120814] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:50:18.711 [DEBUG] [Thread-120814] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:50:18.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:50:18.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:50:18.768 [DEBUG] [Thread-120814] [transport.py] [_log()] userauth is OK
2025-11-03T18:50:18.768 [DEBUG] [Thread-120814] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:50:18.768 [DEBUG] [Thread-120814] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:50:18.768 [DEBUG] [Thread-120814] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:50:18.768 [DEBUG] [Thread-120814] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:50:18.782 [INFO] [Thread-120814] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:50:18.782 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:50:18.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:50:19.620 [DEBUG] [Thread-120814] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:50:19.620 [DEBUG] [Thread-120814] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:50:19.668 [DEBUG] [Thread-120814] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:50:19.668 [DEBUG] [Thread-120814] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:50:19.678 [DEBUG] [Thread-120814] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:50:19.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:50:19.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:50:19.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:50:19.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:50:19.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:50:19.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:50:19.716 [DEBUG] [Thread-120814] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:50:20.751 [DEBUG] [Thread-120816 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:50:35.146 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:50:35.147 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:50:35.813 [DEBUG] [Thread-120817 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:50:41.981 [DEBUG] [Thread-120818 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:50:49.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:50:49.738 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:50:49.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:50:50.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 50, 32), 42.92, 4.28, 0.0, 28.74, 23.06, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:50:50.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:50:32
2025-11-03T18:50:50.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:50:50.683 [DEBUG] [Thread-120819] [transport.py] [_log()] starting thread (client mode): 0x11763370
2025-11-03T18:50:50.683 [DEBUG] [Thread-120819] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:50:50.704 [DEBUG] [Thread-120819] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:50:50.704 [INFO] [Thread-120819] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:50:50.707 [DEBUG] [Thread-120819] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:50:50.707 [DEBUG] [Thread-120819] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:50:50.707 [DEBUG] [Thread-120819] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:50:50.707 [DEBUG] [Thread-120819] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:50:50.707 [DEBUG] [Thread-120819] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:50:50.707 [DEBUG] [Thread-120819] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:50:50.707 [DEBUG] [Thread-120819] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:50:50.707 [DEBUG] [Thread-120819] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:50:50.707 [DEBUG] [Thread-120819] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:50:50.707 [DEBUG] [Thread-120819] [transport.py] [_log()] client lang: <none>
2025-11-03T18:50:50.707 [DEBUG] [Thread-120819] [transport.py] [_log()] server lang: <none>
2025-11-03T18:50:50.707 [DEBUG] [Thread-120819] [transport.py] [_log()] kex follows: False
2025-11-03T18:50:50.707 [DEBUG] [Thread-120819] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:50:50.707 [DEBUG] [Thread-120819] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:50:50.707 [DEBUG] [Thread-120819] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:50:50.716 [DEBUG] [Thread-120819] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:50:50.717 [DEBUG] [Thread-120819] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:50:50.717 [DEBUG] [Thread-120819] [transport.py] [_log()] Compression: none
2025-11-03T18:50:50.717 [DEBUG] [Thread-120819] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:50:50.739 [DEBUG] [Thread-120819] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:50:50.740 [DEBUG] [Thread-120819] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:50:50.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:50:50.741 [DEBUG] [Thread-120819] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:50:50.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:50:50.744 [DEBUG] [Thread-120819] [transport.py] [_log()] userauth is OK
2025-11-03T18:50:50.744 [DEBUG] [Thread-120819] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:50:50.744 [DEBUG] [Thread-120819] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:50:50.744 [DEBUG] [Thread-120819] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:50:50.744 [DEBUG] [Thread-120819] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:50:50.770 [INFO] [Thread-120819] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:50:50.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:50:50.846 [DEBUG] [Thread-120821 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:50:51.425 [DEBUG] [Thread-120819] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:50:51.426 [DEBUG] [Thread-120819] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:50:51.426 [DEBUG] [Thread-120819] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:50:51.467 [DEBUG] [Thread-120819] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:50:51.467 [DEBUG] [Thread-120819] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:50:51.471 [DEBUG] [Thread-120819] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:50:51.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:50:51.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:50:51.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:50:51.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:50:51.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:50:51.505 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:50:51.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:50:51.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:50:51.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:50:51.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.701490 -999.00  +22.90  23.88      9  -11.10 1 1 1 1 1   887    0 33.34 -28.16 ----- 23.9 23.9 296.6 36.5 23.6 -31.8 23.7 -30.8 23.9 -31.1 24.1 -31.7
2025-11-03T18:50:51.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:50:51.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:50:51.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.701490
2025-11-03T18:50:51.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:50:51.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:50:51.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:50:51.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:50:51.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:50:51.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:50:32', tmtdew=42.92, humidity=4.28, cloud=0.0, wind=28.74, temperature=23.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:50:08.736', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:50:51.509 [DEBUG] [Thread-120819] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:50:51.592 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:50:51.605 [DEBUG] [Thread-120823] [transport.py] [_log()] starting thread (client mode): 0xedc7e80
2025-11-03T18:50:51.605 [DEBUG] [Thread-120823] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:50:51.620 [DEBUG] [Thread-120823] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:50:51.621 [INFO] [Thread-120823] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:50:51.631 [DEBUG] [Thread-120823] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:50:51.632 [DEBUG] [Thread-120823] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:50:51.632 [DEBUG] [Thread-120823] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:50:51.632 [DEBUG] [Thread-120823] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:50:51.632 [DEBUG] [Thread-120823] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:50:51.632 [DEBUG] [Thread-120823] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:50:51.632 [DEBUG] [Thread-120823] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:50:51.632 [DEBUG] [Thread-120823] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:50:51.632 [DEBUG] [Thread-120823] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:50:51.632 [DEBUG] [Thread-120823] [transport.py] [_log()] client lang: <none>
2025-11-03T18:50:51.632 [DEBUG] [Thread-120823] [transport.py] [_log()] server lang: <none>
2025-11-03T18:50:51.632 [DEBUG] [Thread-120823] [transport.py] [_log()] kex follows: False
2025-11-03T18:50:51.632 [DEBUG] [Thread-120823] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:50:51.632 [DEBUG] [Thread-120823] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:50:51.633 [DEBUG] [Thread-120823] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:50:51.633 [DEBUG] [Thread-120823] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:50:51.633 [DEBUG] [Thread-120823] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:50:51.633 [DEBUG] [Thread-120823] [transport.py] [_log()] Compression: none
2025-11-03T18:50:51.633 [DEBUG] [Thread-120823] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:50:51.697 [DEBUG] [Thread-120823] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:50:51.698 [DEBUG] [Thread-120823] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:50:51.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:50:51.699 [DEBUG] [Thread-120823] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:50:51.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:50:51.757 [DEBUG] [Thread-120823] [transport.py] [_log()] userauth is OK
2025-11-03T18:50:51.758 [DEBUG] [Thread-120823] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:50:51.758 [DEBUG] [Thread-120823] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:50:51.758 [DEBUG] [Thread-120823] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:50:51.758 [DEBUG] [Thread-120823] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:50:51.778 [INFO] [Thread-120823] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:50:51.778 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:50:51.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:50:52.632 [DEBUG] [Thread-120823] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:50:52.632 [DEBUG] [Thread-120823] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:50:52.680 [DEBUG] [Thread-120823] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:50:52.680 [DEBUG] [Thread-120823] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:50:52.688 [DEBUG] [Thread-120823] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:50:52.697 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:50:52.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:50:52.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:50:52.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:50:52.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:50:52.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:50:52.721 [DEBUG] [Thread-120823] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:51:05.878 [DEBUG] [Thread-120825 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:51:20.918 [DEBUG] [Thread-120826 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:51:22.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:51:22.744 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:51:22.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:51:23.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 51, 4), 42.84, 4.32, 0.0, 25.58, 23.07, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:51:23.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:51:04
2025-11-03T18:51:23.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:51:23.717 [DEBUG] [Thread-120827] [transport.py] [_log()] starting thread (client mode): 0xedc7610
2025-11-03T18:51:23.717 [DEBUG] [Thread-120827] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:51:23.737 [DEBUG] [Thread-120827] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:51:23.737 [INFO] [Thread-120827] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:51:23.739 [DEBUG] [Thread-120827] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:51:23.739 [DEBUG] [Thread-120827] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:51:23.740 [DEBUG] [Thread-120827] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:51:23.740 [DEBUG] [Thread-120827] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:51:23.740 [DEBUG] [Thread-120827] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:51:23.740 [DEBUG] [Thread-120827] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:51:23.740 [DEBUG] [Thread-120827] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:51:23.740 [DEBUG] [Thread-120827] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:51:23.740 [DEBUG] [Thread-120827] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:51:23.740 [DEBUG] [Thread-120827] [transport.py] [_log()] client lang: <none>
2025-11-03T18:51:23.740 [DEBUG] [Thread-120827] [transport.py] [_log()] server lang: <none>
2025-11-03T18:51:23.740 [DEBUG] [Thread-120827] [transport.py] [_log()] kex follows: False
2025-11-03T18:51:23.740 [DEBUG] [Thread-120827] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:51:23.740 [DEBUG] [Thread-120827] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:51:23.740 [DEBUG] [Thread-120827] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:51:23.740 [DEBUG] [Thread-120827] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:51:23.740 [DEBUG] [Thread-120827] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:51:23.741 [DEBUG] [Thread-120827] [transport.py] [_log()] Compression: none
2025-11-03T18:51:23.741 [DEBUG] [Thread-120827] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:51:23.758 [DEBUG] [Thread-120827] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:51:23.759 [DEBUG] [Thread-120827] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:51:23.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:51:23.760 [DEBUG] [Thread-120827] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:51:23.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:51:23.763 [DEBUG] [Thread-120827] [transport.py] [_log()] userauth is OK
2025-11-03T18:51:23.763 [DEBUG] [Thread-120827] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:51:23.763 [DEBUG] [Thread-120827] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:51:23.763 [DEBUG] [Thread-120827] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:51:23.763 [DEBUG] [Thread-120827] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:51:23.784 [INFO] [Thread-120827] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:51:23.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:51:24.500 [DEBUG] [Thread-120827] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:51:24.501 [DEBUG] [Thread-120827] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:51:24.501 [DEBUG] [Thread-120827] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:51:24.541 [DEBUG] [Thread-120827] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:51:24.541 [DEBUG] [Thread-120827] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:51:24.545 [DEBUG] [Thread-120827] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:51:24.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:51:24.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:51:24.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:51:24.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:51:24.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:51:24.583 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:51:24.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:51:24.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:51:24.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:51:24.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.701838 -999.00  +22.90  29.79      9  -11.10 1 1 1 1 1   887    0 34.07 -31.41 ----- 29.8 29.8 301.4 33.1 23.6 -31.8 23.8 -30.8 23.8 -30.9 24.0 -31.6
2025-11-03T18:51:24.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:51:24.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:51:24.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.701838
2025-11-03T18:51:24.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:51:24.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:51:24.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:51:24.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:51:24.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:51:24.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:51:04', tmtdew=42.84, humidity=4.32, cloud=0.0, wind=25.58, temperature=23.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:50:38.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:51:24.587 [DEBUG] [Thread-120827] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:51:24.670 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:51:24.681 [DEBUG] [Thread-120830] [transport.py] [_log()] starting thread (client mode): 0x11760130
2025-11-03T18:51:24.681 [DEBUG] [Thread-120830] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:51:24.697 [DEBUG] [Thread-120830] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:51:24.697 [INFO] [Thread-120830] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:51:24.705 [DEBUG] [Thread-120830] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:51:24.705 [DEBUG] [Thread-120830] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:51:24.705 [DEBUG] [Thread-120830] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:51:24.705 [DEBUG] [Thread-120830] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:51:24.705 [DEBUG] [Thread-120830] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:51:24.705 [DEBUG] [Thread-120830] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:51:24.705 [DEBUG] [Thread-120830] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:51:24.705 [DEBUG] [Thread-120830] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:51:24.705 [DEBUG] [Thread-120830] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:51:24.705 [DEBUG] [Thread-120830] [transport.py] [_log()] client lang: <none>
2025-11-03T18:51:24.705 [DEBUG] [Thread-120830] [transport.py] [_log()] server lang: <none>
2025-11-03T18:51:24.705 [DEBUG] [Thread-120830] [transport.py] [_log()] kex follows: False
2025-11-03T18:51:24.705 [DEBUG] [Thread-120830] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:51:24.705 [DEBUG] [Thread-120830] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:51:24.706 [DEBUG] [Thread-120830] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:51:24.706 [DEBUG] [Thread-120830] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:51:24.706 [DEBUG] [Thread-120830] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:51:24.706 [DEBUG] [Thread-120830] [transport.py] [_log()] Compression: none
2025-11-03T18:51:24.706 [DEBUG] [Thread-120830] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:51:24.761 [DEBUG] [Thread-120830] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:51:24.762 [DEBUG] [Thread-120830] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:51:24.763 [DEBUG] [Thread-120830] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:51:24.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:51:24.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:51:24.822 [DEBUG] [Thread-120830] [transport.py] [_log()] userauth is OK
2025-11-03T18:51:24.822 [DEBUG] [Thread-120830] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:51:24.823 [DEBUG] [Thread-120830] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:51:24.823 [DEBUG] [Thread-120830] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:51:24.823 [DEBUG] [Thread-120830] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:51:24.842 [INFO] [Thread-120830] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:51:24.842 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:51:24.843 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:51:25.677 [DEBUG] [Thread-120830] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:51:25.677 [DEBUG] [Thread-120830] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:51:25.724 [DEBUG] [Thread-120830] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:51:25.725 [DEBUG] [Thread-120830] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:51:25.733 [DEBUG] [Thread-120830] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:51:25.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:51:25.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:51:25.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:51:25.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:51:25.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:51:25.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:51:25.765 [DEBUG] [Thread-120830] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:51:35.286 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:51:35.288 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:51:35.958 [DEBUG] [Thread-120832 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:51:42.163 [DEBUG] [Thread-120833 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:51:51.006 [DEBUG] [Thread-120834 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:51:55.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:51:55.788 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:51:55.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:51:56.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 51, 36), 42.84, 4.32, 0.0, 24.81, 23.09, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:51:56.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:51:36
2025-11-03T18:51:56.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:51:56.713 [DEBUG] [Thread-120835] [transport.py] [_log()] starting thread (client mode): 0xed89f00
2025-11-03T18:51:56.714 [DEBUG] [Thread-120835] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:51:56.733 [DEBUG] [Thread-120835] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:51:56.734 [INFO] [Thread-120835] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:51:56.743 [DEBUG] [Thread-120835] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:51:56.743 [DEBUG] [Thread-120835] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:51:56.743 [DEBUG] [Thread-120835] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:51:56.743 [DEBUG] [Thread-120835] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:51:56.744 [DEBUG] [Thread-120835] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:51:56.744 [DEBUG] [Thread-120835] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:51:56.744 [DEBUG] [Thread-120835] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:51:56.744 [DEBUG] [Thread-120835] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:51:56.744 [DEBUG] [Thread-120835] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:51:56.744 [DEBUG] [Thread-120835] [transport.py] [_log()] client lang: <none>
2025-11-03T18:51:56.744 [DEBUG] [Thread-120835] [transport.py] [_log()] server lang: <none>
2025-11-03T18:51:56.744 [DEBUG] [Thread-120835] [transport.py] [_log()] kex follows: False
2025-11-03T18:51:56.744 [DEBUG] [Thread-120835] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:51:56.744 [DEBUG] [Thread-120835] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:51:56.744 [DEBUG] [Thread-120835] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:51:56.744 [DEBUG] [Thread-120835] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:51:56.744 [DEBUG] [Thread-120835] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:51:56.744 [DEBUG] [Thread-120835] [transport.py] [_log()] Compression: none
2025-11-03T18:51:56.744 [DEBUG] [Thread-120835] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:51:56.762 [DEBUG] [Thread-120835] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:51:56.763 [DEBUG] [Thread-120835] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:51:56.763 [DEBUG] [Thread-120835] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:51:56.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:51:56.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:51:56.766 [DEBUG] [Thread-120835] [transport.py] [_log()] userauth is OK
2025-11-03T18:51:56.766 [DEBUG] [Thread-120835] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:51:56.766 [DEBUG] [Thread-120835] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:51:56.766 [DEBUG] [Thread-120835] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:51:56.766 [DEBUG] [Thread-120835] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:51:56.790 [INFO] [Thread-120835] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:51:56.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:51:57.423 [DEBUG] [Thread-120835] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:51:57.424 [DEBUG] [Thread-120835] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:51:57.425 [DEBUG] [Thread-120835] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:51:57.465 [DEBUG] [Thread-120835] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:51:57.465 [DEBUG] [Thread-120835] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:51:57.469 [DEBUG] [Thread-120835] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:51:57.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:51:57.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:51:57.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:51:57.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:51:57.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:51:57.503 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:51:57.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:51:57.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:51:57.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:51:57.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.702185 -999.00  +22.90  30.66      9  -11.00 1 1 2 1 1   887    0 33.45 -34.61 ----- 30.7 30.7 296.6 38.7 23.6 -31.7 23.7 -30.8 23.7 -30.7 24.0 -31.7
2025-11-03T18:51:57.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:51:57.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:51:57.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.702185
2025-11-03T18:51:57.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:51:57.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:51:57.506 [DEBUG] [Thread-120835] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:51:57.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:51:57.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:51:57.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:51:57.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:51:36', tmtdew=42.84, humidity=4.32, cloud=0.0, wind=24.81, temperature=23.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:51:08.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:51:57.599 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:51:57.611 [DEBUG] [Thread-120838] [transport.py] [_log()] starting thread (client mode): 0x1179a020
2025-11-03T18:51:57.611 [DEBUG] [Thread-120838] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:51:57.626 [DEBUG] [Thread-120838] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:51:57.626 [INFO] [Thread-120838] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:51:57.634 [DEBUG] [Thread-120838] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:51:57.634 [DEBUG] [Thread-120838] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:51:57.634 [DEBUG] [Thread-120838] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:51:57.635 [DEBUG] [Thread-120838] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:51:57.635 [DEBUG] [Thread-120838] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:51:57.635 [DEBUG] [Thread-120838] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:51:57.635 [DEBUG] [Thread-120838] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:51:57.635 [DEBUG] [Thread-120838] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:51:57.635 [DEBUG] [Thread-120838] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:51:57.635 [DEBUG] [Thread-120838] [transport.py] [_log()] client lang: <none>
2025-11-03T18:51:57.635 [DEBUG] [Thread-120838] [transport.py] [_log()] server lang: <none>
2025-11-03T18:51:57.636 [DEBUG] [Thread-120838] [transport.py] [_log()] kex follows: False
2025-11-03T18:51:57.636 [DEBUG] [Thread-120838] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:51:57.636 [DEBUG] [Thread-120838] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:51:57.636 [DEBUG] [Thread-120838] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:51:57.636 [DEBUG] [Thread-120838] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:51:57.636 [DEBUG] [Thread-120838] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:51:57.636 [DEBUG] [Thread-120838] [transport.py] [_log()] Compression: none
2025-11-03T18:51:57.637 [DEBUG] [Thread-120838] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:51:57.695 [DEBUG] [Thread-120838] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:51:57.696 [DEBUG] [Thread-120838] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:51:57.697 [DEBUG] [Thread-120838] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:51:57.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:51:57.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:51:57.754 [DEBUG] [Thread-120838] [transport.py] [_log()] userauth is OK
2025-11-03T18:51:57.754 [DEBUG] [Thread-120838] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:51:57.755 [DEBUG] [Thread-120838] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:51:57.755 [DEBUG] [Thread-120838] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:51:57.755 [DEBUG] [Thread-120838] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:51:57.774 [INFO] [Thread-120838] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:51:57.774 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:51:57.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:51:58.562 [DEBUG] [Thread-120838] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:51:58.562 [DEBUG] [Thread-120838] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:51:58.610 [DEBUG] [Thread-120838] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:51:58.610 [DEBUG] [Thread-120838] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:51:58.619 [DEBUG] [Thread-120838] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:51:58.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:51:58.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:51:58.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:51:58.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:51:58.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:51:58.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:51:58.651 [DEBUG] [Thread-120838] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:52:06.038 [DEBUG] [Thread-120840 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:52:21.088 [DEBUG] [Thread-120841 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:52:28.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:52:28.673 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:52:28.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:52:29.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 52, 8), 42.84, 4.32, 0.0, 26.29, 23.09, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:52:29.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:52:08
2025-11-03T18:52:29.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:52:29.727 [DEBUG] [Thread-120842] [transport.py] [_log()] starting thread (client mode): 0x1179b4c0
2025-11-03T18:52:29.727 [DEBUG] [Thread-120842] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:52:29.747 [DEBUG] [Thread-120842] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:52:29.747 [INFO] [Thread-120842] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:52:29.750 [DEBUG] [Thread-120842] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:52:29.750 [DEBUG] [Thread-120842] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:52:29.750 [DEBUG] [Thread-120842] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:52:29.750 [DEBUG] [Thread-120842] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:52:29.750 [DEBUG] [Thread-120842] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:52:29.750 [DEBUG] [Thread-120842] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:52:29.750 [DEBUG] [Thread-120842] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:52:29.750 [DEBUG] [Thread-120842] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:52:29.750 [DEBUG] [Thread-120842] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:52:29.750 [DEBUG] [Thread-120842] [transport.py] [_log()] client lang: <none>
2025-11-03T18:52:29.751 [DEBUG] [Thread-120842] [transport.py] [_log()] server lang: <none>
2025-11-03T18:52:29.751 [DEBUG] [Thread-120842] [transport.py] [_log()] kex follows: False
2025-11-03T18:52:29.751 [DEBUG] [Thread-120842] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:52:29.751 [DEBUG] [Thread-120842] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:52:29.751 [DEBUG] [Thread-120842] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:52:29.751 [DEBUG] [Thread-120842] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:52:29.751 [DEBUG] [Thread-120842] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:52:29.751 [DEBUG] [Thread-120842] [transport.py] [_log()] Compression: none
2025-11-03T18:52:29.751 [DEBUG] [Thread-120842] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:52:29.763 [DEBUG] [Thread-120842] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:52:29.763 [DEBUG] [Thread-120842] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:52:29.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:52:29.763 [DEBUG] [Thread-120842] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:52:29.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:52:29.764 [DEBUG] [Thread-120842] [transport.py] [_log()] userauth is OK
2025-11-03T18:52:29.764 [DEBUG] [Thread-120842] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:52:29.764 [DEBUG] [Thread-120842] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:52:29.764 [DEBUG] [Thread-120842] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:52:29.764 [DEBUG] [Thread-120842] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:52:29.774 [INFO] [Thread-120842] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:52:29.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:52:30.499 [DEBUG] [Thread-120842] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:52:30.499 [DEBUG] [Thread-120842] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:52:30.499 [DEBUG] [Thread-120842] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:52:30.539 [DEBUG] [Thread-120842] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:52:30.539 [DEBUG] [Thread-120842] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:52:30.542 [DEBUG] [Thread-120842] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:52:30.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:52:30.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:52:30.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:52:30.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:52:30.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:52:30.560 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:52:30.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:52:30.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:52:30.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:52:30.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.702532 -999.00  +22.90  32.72      9  -11.00 1 1 2 1 1   886    0 33.37 -33.78 ----- 32.7 32.7 305.4 36.8 23.5 -31.7 23.6 -30.7 23.7 -30.8 23.9 -31.6
2025-11-03T18:52:30.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:52:30.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:52:30.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.702532
2025-11-03T18:52:30.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:52:30.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:52:30.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:52:30.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:52:30.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:52:30.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:52:08', tmtdew=42.84, humidity=4.32, cloud=0.0, wind=26.29, temperature=23.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:51:38.765', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:52:30.561 [DEBUG] [Thread-120842] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:52:30.635 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:52:30.646 [DEBUG] [Thread-120845] [transport.py] [_log()] starting thread (client mode): 0xed8a0e0
2025-11-03T18:52:30.647 [DEBUG] [Thread-120845] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:52:30.661 [DEBUG] [Thread-120845] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:52:30.661 [INFO] [Thread-120845] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:52:30.669 [DEBUG] [Thread-120845] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:52:30.670 [DEBUG] [Thread-120845] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:52:30.670 [DEBUG] [Thread-120845] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:52:30.670 [DEBUG] [Thread-120845] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:52:30.670 [DEBUG] [Thread-120845] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:52:30.670 [DEBUG] [Thread-120845] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:52:30.670 [DEBUG] [Thread-120845] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:52:30.670 [DEBUG] [Thread-120845] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:52:30.670 [DEBUG] [Thread-120845] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:52:30.670 [DEBUG] [Thread-120845] [transport.py] [_log()] client lang: <none>
2025-11-03T18:52:30.670 [DEBUG] [Thread-120845] [transport.py] [_log()] server lang: <none>
2025-11-03T18:52:30.670 [DEBUG] [Thread-120845] [transport.py] [_log()] kex follows: False
2025-11-03T18:52:30.670 [DEBUG] [Thread-120845] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:52:30.670 [DEBUG] [Thread-120845] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:52:30.670 [DEBUG] [Thread-120845] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:52:30.670 [DEBUG] [Thread-120845] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:52:30.670 [DEBUG] [Thread-120845] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:52:30.670 [DEBUG] [Thread-120845] [transport.py] [_log()] Compression: none
2025-11-03T18:52:30.670 [DEBUG] [Thread-120845] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:52:30.724 [DEBUG] [Thread-120845] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:52:30.724 [DEBUG] [Thread-120845] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:52:30.724 [DEBUG] [Thread-120845] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:52:30.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:52:30.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:52:30.782 [DEBUG] [Thread-120845] [transport.py] [_log()] userauth is OK
2025-11-03T18:52:30.782 [DEBUG] [Thread-120845] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:52:30.782 [DEBUG] [Thread-120845] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:52:30.782 [DEBUG] [Thread-120845] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:52:30.782 [DEBUG] [Thread-120845] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:52:30.795 [INFO] [Thread-120845] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:52:30.796 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:52:30.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:52:31.652 [DEBUG] [Thread-120845] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:52:31.652 [DEBUG] [Thread-120845] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:52:31.701 [DEBUG] [Thread-120845] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:52:31.701 [DEBUG] [Thread-120845] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:52:31.710 [DEBUG] [Thread-120845] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:52:31.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:52:31.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:52:31.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:52:31.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:52:31.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:52:31.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:52:31.742 [DEBUG] [Thread-120845] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:52:35.437 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:52:35.439 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:52:36.126 [DEBUG] [Thread-120847 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:52:42.418 [DEBUG] [Thread-120848 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:52:51.178 [DEBUG] [Thread-120849 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:53:01.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:53:01.758 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:53:01.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:53:02.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 52, 41), 42.75, 4.33, 0.0, 24.61, 23.08, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:53:02.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:52:41
2025-11-03T18:53:02.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:53:02.787 [DEBUG] [Thread-120850] [transport.py] [_log()] starting thread (client mode): 0x117ea950
2025-11-03T18:53:02.787 [DEBUG] [Thread-120850] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:53:02.807 [DEBUG] [Thread-120850] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:53:02.807 [INFO] [Thread-120850] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:53:02.810 [DEBUG] [Thread-120850] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:53:02.811 [DEBUG] [Thread-120850] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:53:02.811 [DEBUG] [Thread-120850] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:53:02.811 [DEBUG] [Thread-120850] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:53:02.811 [DEBUG] [Thread-120850] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:53:02.811 [DEBUG] [Thread-120850] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:53:02.811 [DEBUG] [Thread-120850] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:53:02.811 [DEBUG] [Thread-120850] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:53:02.811 [DEBUG] [Thread-120850] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:53:02.811 [DEBUG] [Thread-120850] [transport.py] [_log()] client lang: <none>
2025-11-03T18:53:02.811 [DEBUG] [Thread-120850] [transport.py] [_log()] server lang: <none>
2025-11-03T18:53:02.811 [DEBUG] [Thread-120850] [transport.py] [_log()] kex follows: False
2025-11-03T18:53:02.811 [DEBUG] [Thread-120850] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:53:02.811 [DEBUG] [Thread-120850] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:53:02.811 [DEBUG] [Thread-120850] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:53:02.811 [DEBUG] [Thread-120850] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:53:02.811 [DEBUG] [Thread-120850] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:53:02.811 [DEBUG] [Thread-120850] [transport.py] [_log()] Compression: none
2025-11-03T18:53:02.811 [DEBUG] [Thread-120850] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:53:02.820 [DEBUG] [Thread-120850] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:53:02.821 [DEBUG] [Thread-120850] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:53:02.821 [DEBUG] [Thread-120850] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:53:02.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:53:02.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:53:02.823 [DEBUG] [Thread-120850] [transport.py] [_log()] userauth is OK
2025-11-03T18:53:02.823 [DEBUG] [Thread-120850] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:53:02.824 [DEBUG] [Thread-120850] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:53:02.824 [DEBUG] [Thread-120850] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:53:02.824 [DEBUG] [Thread-120850] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:53:02.841 [INFO] [Thread-120850] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:53:02.843 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:53:03.477 [DEBUG] [Thread-120850] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:53:03.477 [DEBUG] [Thread-120850] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:53:03.477 [DEBUG] [Thread-120850] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:53:03.519 [DEBUG] [Thread-120850] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:53:03.519 [DEBUG] [Thread-120850] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:53:03.521 [DEBUG] [Thread-120850] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:53:03.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:53:03.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:53:03.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:53:03.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:53:03.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:53:03.549 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:53:03.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:53:03.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:53:03.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:53:03.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.702879 -999.00  +22.90  28.64      9  -11.10 1 1 1 1 1   886    0 33.76 -33.34 ----- 28.6 28.6 300.7 37.7 23.5 -31.7 23.6 -30.6 23.7 -30.6 23.9 -31.4
2025-11-03T18:53:03.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:53:03.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:53:03.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.702879
2025-11-03T18:53:03.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:53:03.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:53:03.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:53:03.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:53:03.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:53:03.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:52:41', tmtdew=42.75, humidity=4.33, cloud=0.0, wind=24.61, temperature=23.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:52:08.746', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:53:03.551 [DEBUG] [Thread-120850] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:53:03.623 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:53:03.634 [DEBUG] [Thread-120853] [transport.py] [_log()] starting thread (client mode): 0x11761ab0
2025-11-03T18:53:03.634 [DEBUG] [Thread-120853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:53:03.649 [DEBUG] [Thread-120853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:53:03.649 [INFO] [Thread-120853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:53:03.656 [DEBUG] [Thread-120853] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:53:03.656 [DEBUG] [Thread-120853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:53:03.656 [DEBUG] [Thread-120853] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:53:03.656 [DEBUG] [Thread-120853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:53:03.656 [DEBUG] [Thread-120853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:53:03.656 [DEBUG] [Thread-120853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:53:03.656 [DEBUG] [Thread-120853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:53:03.656 [DEBUG] [Thread-120853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:53:03.656 [DEBUG] [Thread-120853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:53:03.656 [DEBUG] [Thread-120853] [transport.py] [_log()] client lang: <none>
2025-11-03T18:53:03.656 [DEBUG] [Thread-120853] [transport.py] [_log()] server lang: <none>
2025-11-03T18:53:03.656 [DEBUG] [Thread-120853] [transport.py] [_log()] kex follows: False
2025-11-03T18:53:03.656 [DEBUG] [Thread-120853] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:53:03.656 [DEBUG] [Thread-120853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:53:03.656 [DEBUG] [Thread-120853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:53:03.656 [DEBUG] [Thread-120853] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:53:03.656 [DEBUG] [Thread-120853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:53:03.656 [DEBUG] [Thread-120853] [transport.py] [_log()] Compression: none
2025-11-03T18:53:03.656 [DEBUG] [Thread-120853] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:53:03.716 [DEBUG] [Thread-120853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:53:03.717 [DEBUG] [Thread-120853] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:53:03.717 [DEBUG] [Thread-120853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:53:03.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:53:03.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:53:03.778 [DEBUG] [Thread-120853] [transport.py] [_log()] userauth is OK
2025-11-03T18:53:03.778 [DEBUG] [Thread-120853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:53:03.778 [DEBUG] [Thread-120853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:53:03.778 [DEBUG] [Thread-120853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:53:03.778 [DEBUG] [Thread-120853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:53:03.801 [INFO] [Thread-120853] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:53:03.802 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:53:03.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:53:04.643 [DEBUG] [Thread-120853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:53:04.643 [DEBUG] [Thread-120853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:53:04.691 [DEBUG] [Thread-120853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:53:04.692 [DEBUG] [Thread-120853] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:53:04.701 [DEBUG] [Thread-120853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:53:04.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:53:04.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:53:04.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:53:04.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:53:04.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:53:04.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:53:04.737 [DEBUG] [Thread-120853] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:53:06.216 [DEBUG] [Thread-120855 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:53:21.270 [DEBUG] [Thread-120856 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:53:34.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:53:34.760 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:53:34.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:53:35.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 53, 13), 42.7, 4.35, 0.0, 22.23, 23.06, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:53:35.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:53:13
2025-11-03T18:53:35.580 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:53:35.581 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:53:35.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:53:35.790 [DEBUG] [Thread-120857] [transport.py] [_log()] starting thread (client mode): 0x117eae30
2025-11-03T18:53:35.790 [DEBUG] [Thread-120857] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:53:35.812 [DEBUG] [Thread-120857] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:53:35.812 [INFO] [Thread-120857] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:53:35.815 [DEBUG] [Thread-120857] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:53:35.815 [DEBUG] [Thread-120857] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:53:35.815 [DEBUG] [Thread-120857] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:53:35.815 [DEBUG] [Thread-120857] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:53:35.815 [DEBUG] [Thread-120857] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:53:35.815 [DEBUG] [Thread-120857] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:53:35.815 [DEBUG] [Thread-120857] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:53:35.815 [DEBUG] [Thread-120857] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:53:35.815 [DEBUG] [Thread-120857] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:53:35.815 [DEBUG] [Thread-120857] [transport.py] [_log()] client lang: <none>
2025-11-03T18:53:35.815 [DEBUG] [Thread-120857] [transport.py] [_log()] server lang: <none>
2025-11-03T18:53:35.815 [DEBUG] [Thread-120857] [transport.py] [_log()] kex follows: False
2025-11-03T18:53:35.816 [DEBUG] [Thread-120857] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:53:35.816 [DEBUG] [Thread-120857] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:53:35.816 [DEBUG] [Thread-120857] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:53:35.816 [DEBUG] [Thread-120857] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:53:35.816 [DEBUG] [Thread-120857] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:53:35.816 [DEBUG] [Thread-120857] [transport.py] [_log()] Compression: none
2025-11-03T18:53:35.816 [DEBUG] [Thread-120857] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:53:35.838 [DEBUG] [Thread-120857] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:53:35.839 [DEBUG] [Thread-120857] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:53:35.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:53:35.840 [DEBUG] [Thread-120857] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:53:35.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:53:35.842 [DEBUG] [Thread-120857] [transport.py] [_log()] userauth is OK
2025-11-03T18:53:35.842 [DEBUG] [Thread-120857] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:53:35.843 [DEBUG] [Thread-120857] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:53:35.843 [DEBUG] [Thread-120857] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:53:35.843 [DEBUG] [Thread-120857] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:53:35.860 [INFO] [Thread-120857] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:53:35.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:53:36.317 [DEBUG] [Thread-120859 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:53:36.519 [DEBUG] [Thread-120857] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:53:36.520 [DEBUG] [Thread-120857] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:53:36.520 [DEBUG] [Thread-120857] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:53:36.561 [DEBUG] [Thread-120857] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:53:36.561 [DEBUG] [Thread-120857] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:53:36.565 [DEBUG] [Thread-120857] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:53:36.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:53:36.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:53:36.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:53:36.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:53:36.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:53:36.589 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:53:36.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:53:36.590 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:53:36.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:53:36.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.703227 -999.00  +22.80  25.38      9  -11.10 1 1 1 1 1   886    0 33.34 -34.55 ----- 25.4 25.4 302.0 37.6 23.4 -31.7 23.6 -30.6 23.7 -30.7 23.9 -31.5
2025-11-03T18:53:36.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:53:36.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:53:36.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.703227
2025-11-03T18:53:36.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:53:36.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:53:36.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:53:36.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:53:36.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:53:36.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:53:13', tmtdew=42.7, humidity=4.35, cloud=0.0, wind=22.23, temperature=23.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:52:38.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:53:36.593 [DEBUG] [Thread-120857] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:53:36.676 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:53:36.688 [DEBUG] [Thread-120861] [transport.py] [_log()] starting thread (client mode): 0x117e9b10
2025-11-03T18:53:36.688 [DEBUG] [Thread-120861] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:53:36.704 [DEBUG] [Thread-120861] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:53:36.704 [INFO] [Thread-120861] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:53:36.711 [DEBUG] [Thread-120861] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:53:36.712 [DEBUG] [Thread-120861] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:53:36.712 [DEBUG] [Thread-120861] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:53:36.712 [DEBUG] [Thread-120861] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:53:36.712 [DEBUG] [Thread-120861] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:53:36.712 [DEBUG] [Thread-120861] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:53:36.712 [DEBUG] [Thread-120861] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:53:36.712 [DEBUG] [Thread-120861] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:53:36.712 [DEBUG] [Thread-120861] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:53:36.712 [DEBUG] [Thread-120861] [transport.py] [_log()] client lang: <none>
2025-11-03T18:53:36.712 [DEBUG] [Thread-120861] [transport.py] [_log()] server lang: <none>
2025-11-03T18:53:36.712 [DEBUG] [Thread-120861] [transport.py] [_log()] kex follows: False
2025-11-03T18:53:36.712 [DEBUG] [Thread-120861] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:53:36.712 [DEBUG] [Thread-120861] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:53:36.712 [DEBUG] [Thread-120861] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:53:36.712 [DEBUG] [Thread-120861] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:53:36.712 [DEBUG] [Thread-120861] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:53:36.712 [DEBUG] [Thread-120861] [transport.py] [_log()] Compression: none
2025-11-03T18:53:36.713 [DEBUG] [Thread-120861] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:53:36.770 [DEBUG] [Thread-120861] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:53:36.770 [DEBUG] [Thread-120861] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:53:36.771 [DEBUG] [Thread-120861] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:53:36.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:53:36.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:53:36.826 [DEBUG] [Thread-120861] [transport.py] [_log()] userauth is OK
2025-11-03T18:53:36.826 [DEBUG] [Thread-120861] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:53:36.826 [DEBUG] [Thread-120861] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:53:36.826 [DEBUG] [Thread-120861] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:53:36.827 [DEBUG] [Thread-120861] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:53:36.844 [INFO] [Thread-120861] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:53:36.845 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:53:36.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:53:37.666 [DEBUG] [Thread-120861] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:53:37.666 [DEBUG] [Thread-120861] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:53:37.714 [DEBUG] [Thread-120861] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:53:37.714 [DEBUG] [Thread-120861] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:53:37.723 [DEBUG] [Thread-120861] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:53:37.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:53:37.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:53:37.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:53:37.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:53:37.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:53:37.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:53:37.765 [DEBUG] [Thread-120861] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:53:42.585 [DEBUG] [Thread-120863 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:53:51.352 [DEBUG] [Thread-120864 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:54:06.397 [DEBUG] [Thread-120865 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:54:07.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:54:07.768 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:54:07.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:54:08.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 53, 45), 42.69, 4.33, 0.0, 29.91, 22.99, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:54:08.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:53:45
2025-11-03T18:54:08.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:54:08.794 [DEBUG] [Thread-120866] [transport.py] [_log()] starting thread (client mode): 0xed2f490
2025-11-03T18:54:08.794 [DEBUG] [Thread-120866] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:54:08.815 [DEBUG] [Thread-120866] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:54:08.815 [INFO] [Thread-120866] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:54:08.818 [DEBUG] [Thread-120866] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:54:08.819 [DEBUG] [Thread-120866] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:54:08.819 [DEBUG] [Thread-120866] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:54:08.819 [DEBUG] [Thread-120866] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:54:08.819 [DEBUG] [Thread-120866] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:54:08.819 [DEBUG] [Thread-120866] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:54:08.819 [DEBUG] [Thread-120866] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:54:08.819 [DEBUG] [Thread-120866] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:54:08.819 [DEBUG] [Thread-120866] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:54:08.819 [DEBUG] [Thread-120866] [transport.py] [_log()] client lang: <none>
2025-11-03T18:54:08.819 [DEBUG] [Thread-120866] [transport.py] [_log()] server lang: <none>
2025-11-03T18:54:08.819 [DEBUG] [Thread-120866] [transport.py] [_log()] kex follows: False
2025-11-03T18:54:08.819 [DEBUG] [Thread-120866] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:54:08.820 [DEBUG] [Thread-120866] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:54:08.820 [DEBUG] [Thread-120866] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:54:08.820 [DEBUG] [Thread-120866] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:54:08.820 [DEBUG] [Thread-120866] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:54:08.820 [DEBUG] [Thread-120866] [transport.py] [_log()] Compression: none
2025-11-03T18:54:08.820 [DEBUG] [Thread-120866] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:54:08.838 [DEBUG] [Thread-120866] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:54:08.839 [DEBUG] [Thread-120866] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:54:08.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:54:08.840 [DEBUG] [Thread-120866] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:54:08.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:54:08.842 [DEBUG] [Thread-120866] [transport.py] [_log()] userauth is OK
2025-11-03T18:54:08.842 [DEBUG] [Thread-120866] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:54:08.843 [DEBUG] [Thread-120866] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:54:08.843 [DEBUG] [Thread-120866] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:54:08.843 [DEBUG] [Thread-120866] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:54:08.878 [INFO] [Thread-120866] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:54:08.878 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:54:09.542 [DEBUG] [Thread-120866] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:54:09.542 [DEBUG] [Thread-120866] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:54:09.542 [DEBUG] [Thread-120866] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:54:09.583 [DEBUG] [Thread-120866] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:54:09.583 [DEBUG] [Thread-120866] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:54:09.586 [DEBUG] [Thread-120866] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:54:09.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:54:09.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:54:09.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:54:09.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:54:09.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:54:09.603 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:54:09.603 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:54:09.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:54:09.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:54:09.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.703921 -999.00  +22.80  26.09      9  -11.10 1 1 1 1 1   886    0 33.29 -35.76 ----- 26.1 26.1 302.2 35.6 23.4 -31.7 23.6 -30.6 23.6 -30.6 23.8 -31.3
2025-11-03T18:54:09.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:54:09.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:54:09.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.703921
2025-11-03T18:54:09.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:54:09.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:54:09.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:54:09.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:54:09.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:54:09.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:53:45', tmtdew=42.69, humidity=4.33, cloud=0.0, wind=29.91, temperature=22.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:53:38.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:54:09.605 [DEBUG] [Thread-120866] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:54:09.677 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:54:09.689 [DEBUG] [Thread-120869] [transport.py] [_log()] starting thread (client mode): 0x117e8370
2025-11-03T18:54:09.689 [DEBUG] [Thread-120869] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:54:09.707 [DEBUG] [Thread-120869] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:54:09.707 [INFO] [Thread-120869] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:54:09.715 [DEBUG] [Thread-120869] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:54:09.715 [DEBUG] [Thread-120869] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:54:09.715 [DEBUG] [Thread-120869] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:54:09.715 [DEBUG] [Thread-120869] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:54:09.715 [DEBUG] [Thread-120869] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:54:09.715 [DEBUG] [Thread-120869] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:54:09.715 [DEBUG] [Thread-120869] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:54:09.715 [DEBUG] [Thread-120869] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:54:09.715 [DEBUG] [Thread-120869] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:54:09.715 [DEBUG] [Thread-120869] [transport.py] [_log()] client lang: <none>
2025-11-03T18:54:09.715 [DEBUG] [Thread-120869] [transport.py] [_log()] server lang: <none>
2025-11-03T18:54:09.715 [DEBUG] [Thread-120869] [transport.py] [_log()] kex follows: False
2025-11-03T18:54:09.715 [DEBUG] [Thread-120869] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:54:09.715 [DEBUG] [Thread-120869] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:54:09.716 [DEBUG] [Thread-120869] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:54:09.716 [DEBUG] [Thread-120869] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:54:09.716 [DEBUG] [Thread-120869] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:54:09.716 [DEBUG] [Thread-120869] [transport.py] [_log()] Compression: none
2025-11-03T18:54:09.716 [DEBUG] [Thread-120869] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:54:09.779 [DEBUG] [Thread-120869] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:54:09.780 [DEBUG] [Thread-120869] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:54:09.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:54:09.781 [DEBUG] [Thread-120869] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:54:09.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:54:09.835 [DEBUG] [Thread-120869] [transport.py] [_log()] userauth is OK
2025-11-03T18:54:09.836 [DEBUG] [Thread-120869] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:54:09.836 [DEBUG] [Thread-120869] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:54:09.836 [DEBUG] [Thread-120869] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:54:09.836 [DEBUG] [Thread-120869] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:54:09.855 [INFO] [Thread-120869] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:54:09.855 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:54:09.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:54:10.676 [DEBUG] [Thread-120869] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:54:10.677 [DEBUG] [Thread-120869] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:54:10.725 [DEBUG] [Thread-120869] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:54:10.725 [DEBUG] [Thread-120869] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:54:10.735 [DEBUG] [Thread-120869] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:54:10.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:54:10.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:54:10.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:54:10.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:54:10.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:54:10.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:54:10.773 [DEBUG] [Thread-120869] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:54:21.433 [DEBUG] [Thread-120871 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:54:35.721 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:54:35.723 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:54:36.473 [DEBUG] [Thread-120872 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:54:40.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:54:40.773 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:54:40.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:54:41.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 54, 18), 42.75, 4.3, 0.0, 27.77, 22.91, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:54:41.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:54:18
2025-11-03T18:54:41.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:54:41.720 [DEBUG] [Thread-120873] [transport.py] [_log()] starting thread (client mode): 0x117eba60
2025-11-03T18:54:41.720 [DEBUG] [Thread-120873] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:54:41.736 [DEBUG] [Thread-120873] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:54:41.736 [INFO] [Thread-120873] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:54:41.738 [DEBUG] [Thread-120873] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:54:41.738 [DEBUG] [Thread-120873] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:54:41.738 [DEBUG] [Thread-120873] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:54:41.738 [DEBUG] [Thread-120873] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:54:41.738 [DEBUG] [Thread-120873] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:54:41.738 [DEBUG] [Thread-120873] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:54:41.738 [DEBUG] [Thread-120873] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:54:41.738 [DEBUG] [Thread-120873] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:54:41.738 [DEBUG] [Thread-120873] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:54:41.738 [DEBUG] [Thread-120873] [transport.py] [_log()] client lang: <none>
2025-11-03T18:54:41.738 [DEBUG] [Thread-120873] [transport.py] [_log()] server lang: <none>
2025-11-03T18:54:41.738 [DEBUG] [Thread-120873] [transport.py] [_log()] kex follows: False
2025-11-03T18:54:41.738 [DEBUG] [Thread-120873] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:54:41.738 [DEBUG] [Thread-120873] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:54:41.739 [DEBUG] [Thread-120873] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:54:41.739 [DEBUG] [Thread-120873] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:54:41.739 [DEBUG] [Thread-120873] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:54:41.739 [DEBUG] [Thread-120873] [transport.py] [_log()] Compression: none
2025-11-03T18:54:41.739 [DEBUG] [Thread-120873] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:54:41.750 [DEBUG] [Thread-120873] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:54:41.759 [DEBUG] [Thread-120873] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:54:41.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:54:41.760 [DEBUG] [Thread-120873] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:54:41.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:54:41.763 [DEBUG] [Thread-120873] [transport.py] [_log()] userauth is OK
2025-11-03T18:54:41.763 [DEBUG] [Thread-120873] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:54:41.763 [DEBUG] [Thread-120873] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:54:41.763 [DEBUG] [Thread-120873] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:54:41.763 [DEBUG] [Thread-120873] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:54:41.790 [INFO] [Thread-120873] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:54:41.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:54:42.474 [DEBUG] [Thread-120873] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:54:42.474 [DEBUG] [Thread-120873] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:54:42.475 [DEBUG] [Thread-120873] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:54:42.515 [DEBUG] [Thread-120873] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:54:42.515 [DEBUG] [Thread-120873] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:54:42.518 [DEBUG] [Thread-120873] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:54:42.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:54:42.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:54:42.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:54:42.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:54:42.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:54:42.543 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:54:42.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:54:42.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:54:42.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:54:42.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.704268 -999.00  +22.80  33.52      9  -11.10 1 1 2 1 1   886    0 33.33 -38.75 ----- 33.5 33.5 297.6 38.0 23.4 -31.7 23.5 -30.7 23.5 -30.5 23.8 -31.5
2025-11-03T18:54:42.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:54:42.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:54:42.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.704268
2025-11-03T18:54:42.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:54:42.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:54:42.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:54:42.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:54:42.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:54:42.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:54:18', tmtdew=42.75, humidity=4.3, cloud=0.0, wind=27.77, temperature=22.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:54:08.755', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:54:42.546 [DEBUG] [Thread-120873] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:54:42.630 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:54:42.642 [DEBUG] [Thread-120876] [transport.py] [_log()] starting thread (client mode): 0x117e9d50
2025-11-03T18:54:42.642 [DEBUG] [Thread-120876] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:54:42.656 [DEBUG] [Thread-120876] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:54:42.656 [INFO] [Thread-120876] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:54:42.664 [DEBUG] [Thread-120876] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:54:42.664 [DEBUG] [Thread-120876] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:54:42.664 [DEBUG] [Thread-120876] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:54:42.664 [DEBUG] [Thread-120876] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:54:42.665 [DEBUG] [Thread-120876] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:54:42.665 [DEBUG] [Thread-120876] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:54:42.665 [DEBUG] [Thread-120876] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:54:42.665 [DEBUG] [Thread-120876] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:54:42.665 [DEBUG] [Thread-120876] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:54:42.665 [DEBUG] [Thread-120876] [transport.py] [_log()] client lang: <none>
2025-11-03T18:54:42.665 [DEBUG] [Thread-120876] [transport.py] [_log()] server lang: <none>
2025-11-03T18:54:42.665 [DEBUG] [Thread-120876] [transport.py] [_log()] kex follows: False
2025-11-03T18:54:42.665 [DEBUG] [Thread-120876] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:54:42.666 [DEBUG] [Thread-120876] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:54:42.666 [DEBUG] [Thread-120876] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:54:42.666 [DEBUG] [Thread-120876] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:54:42.666 [DEBUG] [Thread-120876] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:54:42.666 [DEBUG] [Thread-120876] [transport.py] [_log()] Compression: none
2025-11-03T18:54:42.666 [DEBUG] [Thread-120876] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:54:42.727 [DEBUG] [Thread-120876] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:54:42.728 [DEBUG] [Thread-120876] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:54:42.728 [DEBUG] [Thread-120876] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:54:42.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:54:42.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:54:42.783 [DEBUG] [Thread-120876] [transport.py] [_log()] userauth is OK
2025-11-03T18:54:42.783 [DEBUG] [Thread-120876] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:54:42.783 [DEBUG] [Thread-120876] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:54:42.783 [DEBUG] [Thread-120876] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:54:42.783 [DEBUG] [Thread-120876] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:54:42.805 [INFO] [Thread-120876] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:54:42.806 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:54:42.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:54:42.851 [DEBUG] [Thread-120878 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:54:43.599 [DEBUG] [Thread-120876] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:54:43.599 [DEBUG] [Thread-120876] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:54:43.646 [DEBUG] [Thread-120876] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:54:43.646 [DEBUG] [Thread-120876] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:54:43.654 [DEBUG] [Thread-120876] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:54:43.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:54:43.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:54:43.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:54:43.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:54:43.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:54:43.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:54:43.686 [DEBUG] [Thread-120876] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:54:51.511 [DEBUG] [Thread-120879 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:55:06.566 [DEBUG] [Thread-120880 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:55:13.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:55:13.709 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:55:13.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:55:14.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 54, 51), 42.63, 4.35, 0.0, 24.4, 22.89, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:55:14.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:54:51
2025-11-03T18:55:14.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:55:14.645 [DEBUG] [Thread-120881] [transport.py] [_log()] starting thread (client mode): 0x117eb4c0
2025-11-03T18:55:14.645 [DEBUG] [Thread-120881] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:55:14.665 [DEBUG] [Thread-120881] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:55:14.665 [INFO] [Thread-120881] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:55:14.675 [DEBUG] [Thread-120881] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:55:14.676 [DEBUG] [Thread-120881] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:55:14.676 [DEBUG] [Thread-120881] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:55:14.676 [DEBUG] [Thread-120881] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:55:14.676 [DEBUG] [Thread-120881] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:55:14.676 [DEBUG] [Thread-120881] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:55:14.676 [DEBUG] [Thread-120881] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:55:14.676 [DEBUG] [Thread-120881] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:55:14.676 [DEBUG] [Thread-120881] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:55:14.677 [DEBUG] [Thread-120881] [transport.py] [_log()] client lang: <none>
2025-11-03T18:55:14.677 [DEBUG] [Thread-120881] [transport.py] [_log()] server lang: <none>
2025-11-03T18:55:14.677 [DEBUG] [Thread-120881] [transport.py] [_log()] kex follows: False
2025-11-03T18:55:14.677 [DEBUG] [Thread-120881] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:55:14.677 [DEBUG] [Thread-120881] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:55:14.677 [DEBUG] [Thread-120881] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:55:14.677 [DEBUG] [Thread-120881] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:55:14.677 [DEBUG] [Thread-120881] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:55:14.677 [DEBUG] [Thread-120881] [transport.py] [_log()] Compression: none
2025-11-03T18:55:14.677 [DEBUG] [Thread-120881] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:55:14.694 [DEBUG] [Thread-120881] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:55:14.695 [DEBUG] [Thread-120881] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:55:14.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:55:14.696 [DEBUG] [Thread-120881] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:55:14.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:55:14.698 [DEBUG] [Thread-120881] [transport.py] [_log()] userauth is OK
2025-11-03T18:55:14.698 [DEBUG] [Thread-120881] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:55:14.698 [DEBUG] [Thread-120881] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:55:14.698 [DEBUG] [Thread-120881] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:55:14.699 [DEBUG] [Thread-120881] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:55:14.722 [INFO] [Thread-120881] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:55:14.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:55:15.918 [DEBUG] [Thread-120881] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:55:15.918 [DEBUG] [Thread-120881] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:55:15.918 [DEBUG] [Thread-120881] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:55:15.959 [DEBUG] [Thread-120881] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:55:15.959 [DEBUG] [Thread-120881] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:55:15.963 [DEBUG] [Thread-120881] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:55:16.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:55:16.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:55:16.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:55:16.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:55:16.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:55:16.072 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:55:16.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:55:16.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:55:16.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:55:16.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.704616 -999.00  +22.70  29.92      9  -11.10 1 1 1 1 1   886    0 33.09 -39.46 ----- 29.9 29.9 301.4 38.9 23.4 -31.7 23.5 -30.6 23.5 -30.5 23.7 -31.6
2025-11-03T18:55:16.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:55:16.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:55:16.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.704616
2025-11-03T18:55:16.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:55:16.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:55:16.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:55:16.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:55:16.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:55:16.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:54:51', tmtdew=42.63, humidity=4.35, cloud=0.0, wind=24.4, temperature=22.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:54:38.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:55:16.075 [DEBUG] [Thread-120881] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:55:16.158 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:55:16.170 [DEBUG] [Thread-120884] [transport.py] [_log()] starting thread (client mode): 0x117eb8e0
2025-11-03T18:55:16.170 [DEBUG] [Thread-120884] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:55:16.184 [DEBUG] [Thread-120884] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:55:16.185 [INFO] [Thread-120884] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:55:16.192 [DEBUG] [Thread-120884] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:55:16.192 [DEBUG] [Thread-120884] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:55:16.192 [DEBUG] [Thread-120884] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:55:16.193 [DEBUG] [Thread-120884] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:55:16.193 [DEBUG] [Thread-120884] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:55:16.193 [DEBUG] [Thread-120884] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:55:16.193 [DEBUG] [Thread-120884] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:55:16.193 [DEBUG] [Thread-120884] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:55:16.193 [DEBUG] [Thread-120884] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:55:16.193 [DEBUG] [Thread-120884] [transport.py] [_log()] client lang: <none>
2025-11-03T18:55:16.193 [DEBUG] [Thread-120884] [transport.py] [_log()] server lang: <none>
2025-11-03T18:55:16.193 [DEBUG] [Thread-120884] [transport.py] [_log()] kex follows: False
2025-11-03T18:55:16.194 [DEBUG] [Thread-120884] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:55:16.194 [DEBUG] [Thread-120884] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:55:16.194 [DEBUG] [Thread-120884] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:55:16.194 [DEBUG] [Thread-120884] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:55:16.194 [DEBUG] [Thread-120884] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:55:16.194 [DEBUG] [Thread-120884] [transport.py] [_log()] Compression: none
2025-11-03T18:55:16.194 [DEBUG] [Thread-120884] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:55:16.251 [DEBUG] [Thread-120884] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:55:16.252 [DEBUG] [Thread-120884] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:55:16.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:55:16.253 [DEBUG] [Thread-120884] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:55:16.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:55:16.308 [DEBUG] [Thread-120884] [transport.py] [_log()] userauth is OK
2025-11-03T18:55:16.308 [DEBUG] [Thread-120884] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:55:16.308 [DEBUG] [Thread-120884] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:55:16.308 [DEBUG] [Thread-120884] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:55:16.309 [DEBUG] [Thread-120884] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:55:16.341 [INFO] [Thread-120884] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:55:16.341 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:55:16.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:55:17.169 [DEBUG] [Thread-120884] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:55:17.169 [DEBUG] [Thread-120884] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:55:17.217 [DEBUG] [Thread-120884] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:55:17.217 [DEBUG] [Thread-120884] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:55:17.226 [DEBUG] [Thread-120884] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:55:17.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:55:17.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:55:17.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:55:17.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:55:17.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:55:17.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:55:17.263 [DEBUG] [Thread-120884] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:55:21.599 [DEBUG] [Thread-120886 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:55:35.868 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:55:35.869 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:55:36.664 [DEBUG] [Thread-120887 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:55:42.911 [DEBUG] [Thread-120888 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:55:47.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:55:47.285 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:55:47.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:55:47.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 55, 23), 42.67, 4.33, 0.0, 27.08, 22.88, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:55:47.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:55:23
2025-11-03T18:55:48.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:55:48.262 [DEBUG] [Thread-120889] [transport.py] [_log()] starting thread (client mode): 0xed2dc00
2025-11-03T18:55:48.262 [DEBUG] [Thread-120889] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:55:48.276 [DEBUG] [Thread-120889] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:55:48.276 [INFO] [Thread-120889] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:55:48.279 [DEBUG] [Thread-120889] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:55:48.279 [DEBUG] [Thread-120889] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:55:48.279 [DEBUG] [Thread-120889] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:55:48.279 [DEBUG] [Thread-120889] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:55:48.279 [DEBUG] [Thread-120889] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:55:48.279 [DEBUG] [Thread-120889] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:55:48.279 [DEBUG] [Thread-120889] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:55:48.279 [DEBUG] [Thread-120889] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:55:48.279 [DEBUG] [Thread-120889] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:55:48.280 [DEBUG] [Thread-120889] [transport.py] [_log()] client lang: <none>
2025-11-03T18:55:48.280 [DEBUG] [Thread-120889] [transport.py] [_log()] server lang: <none>
2025-11-03T18:55:48.280 [DEBUG] [Thread-120889] [transport.py] [_log()] kex follows: False
2025-11-03T18:55:48.280 [DEBUG] [Thread-120889] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:55:48.280 [DEBUG] [Thread-120889] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:55:48.280 [DEBUG] [Thread-120889] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:55:48.280 [DEBUG] [Thread-120889] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:55:48.280 [DEBUG] [Thread-120889] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:55:48.280 [DEBUG] [Thread-120889] [transport.py] [_log()] Compression: none
2025-11-03T18:55:48.280 [DEBUG] [Thread-120889] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:55:48.294 [DEBUG] [Thread-120889] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:55:48.294 [DEBUG] [Thread-120889] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:55:48.294 [DEBUG] [Thread-120889] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:55:48.294 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:55:48.294 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:55:48.295 [DEBUG] [Thread-120889] [transport.py] [_log()] userauth is OK
2025-11-03T18:55:48.295 [DEBUG] [Thread-120889] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:55:48.295 [DEBUG] [Thread-120889] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:55:48.295 [DEBUG] [Thread-120889] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:55:48.295 [DEBUG] [Thread-120889] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:55:48.304 [INFO] [Thread-120889] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:55:48.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:55:48.945 [DEBUG] [Thread-120889] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:55:48.945 [DEBUG] [Thread-120889] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:55:48.945 [DEBUG] [Thread-120889] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:55:48.985 [DEBUG] [Thread-120889] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:55:48.985 [DEBUG] [Thread-120889] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:55:48.988 [DEBUG] [Thread-120889] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:55:49.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:55:49.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:55:49.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:55:49.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:55:49.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:55:49.014 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:55:49.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:55:49.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:55:49.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:55:49.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.704962 -999.00  +22.70  29.29      9  -11.20 1 1 1 1 1   885    0 32.69 -45.02 ----- 29.3 29.3 302.6 36.9 23.3 -31.6 23.4 -30.5 23.5 -30.6 23.7 -31.4
2025-11-03T18:55:49.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:55:49.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:55:49.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.704962
2025-11-03T18:55:49.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:55:49.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:55:49.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:55:49.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:55:49.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:55:49.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:55:23', tmtdew=42.67, humidity=4.33, cloud=0.0, wind=27.08, temperature=22.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:55:08.717', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:55:49.015 [DEBUG] [Thread-120889] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:55:49.087 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:55:49.099 [DEBUG] [Thread-120892] [transport.py] [_log()] starting thread (client mode): 0xed12680
2025-11-03T18:55:49.099 [DEBUG] [Thread-120892] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:55:49.114 [DEBUG] [Thread-120892] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:55:49.114 [INFO] [Thread-120892] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:55:49.121 [DEBUG] [Thread-120892] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:55:49.121 [DEBUG] [Thread-120892] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:55:49.121 [DEBUG] [Thread-120892] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:55:49.121 [DEBUG] [Thread-120892] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:55:49.121 [DEBUG] [Thread-120892] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:55:49.121 [DEBUG] [Thread-120892] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:55:49.121 [DEBUG] [Thread-120892] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:55:49.121 [DEBUG] [Thread-120892] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:55:49.121 [DEBUG] [Thread-120892] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:55:49.121 [DEBUG] [Thread-120892] [transport.py] [_log()] client lang: <none>
2025-11-03T18:55:49.121 [DEBUG] [Thread-120892] [transport.py] [_log()] server lang: <none>
2025-11-03T18:55:49.121 [DEBUG] [Thread-120892] [transport.py] [_log()] kex follows: False
2025-11-03T18:55:49.121 [DEBUG] [Thread-120892] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:55:49.122 [DEBUG] [Thread-120892] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:55:49.122 [DEBUG] [Thread-120892] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:55:49.122 [DEBUG] [Thread-120892] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:55:49.122 [DEBUG] [Thread-120892] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:55:49.122 [DEBUG] [Thread-120892] [transport.py] [_log()] Compression: none
2025-11-03T18:55:49.122 [DEBUG] [Thread-120892] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:55:49.178 [DEBUG] [Thread-120892] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:55:49.178 [DEBUG] [Thread-120892] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:55:49.178 [DEBUG] [Thread-120892] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:55:49.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:55:49.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:55:49.235 [DEBUG] [Thread-120892] [transport.py] [_log()] userauth is OK
2025-11-03T18:55:49.236 [DEBUG] [Thread-120892] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:55:49.236 [DEBUG] [Thread-120892] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:55:49.236 [DEBUG] [Thread-120892] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:55:49.236 [DEBUG] [Thread-120892] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:55:49.254 [INFO] [Thread-120892] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:55:49.255 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:55:49.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:55:50.142 [DEBUG] [Thread-120892] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:55:50.142 [DEBUG] [Thread-120892] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:55:50.190 [DEBUG] [Thread-120892] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:55:50.190 [DEBUG] [Thread-120892] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:55:50.199 [DEBUG] [Thread-120892] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:55:50.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:55:50.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:55:50.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:55:50.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:55:50.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:55:50.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:55:50.231 [DEBUG] [Thread-120892] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:55:51.699 [DEBUG] [Thread-120894 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:56:06.765 [DEBUG] [Thread-120895 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:56:20.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:56:20.253 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:56:20.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:56:21.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 55, 55), 42.58, 4.37, 0.0, 29.15, 22.86, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:56:21.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:55:55
2025-11-03T18:56:21.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:56:21.327 [DEBUG] [Thread-120896] [transport.py] [_log()] starting thread (client mode): 0xed88dc0
2025-11-03T18:56:21.327 [DEBUG] [Thread-120896] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:56:21.342 [DEBUG] [Thread-120896] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:56:21.342 [INFO] [Thread-120896] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:56:21.345 [DEBUG] [Thread-120896] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:56:21.345 [DEBUG] [Thread-120896] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:56:21.345 [DEBUG] [Thread-120896] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:56:21.345 [DEBUG] [Thread-120896] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:56:21.345 [DEBUG] [Thread-120896] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:56:21.345 [DEBUG] [Thread-120896] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:56:21.345 [DEBUG] [Thread-120896] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:56:21.345 [DEBUG] [Thread-120896] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:56:21.345 [DEBUG] [Thread-120896] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:56:21.345 [DEBUG] [Thread-120896] [transport.py] [_log()] client lang: <none>
2025-11-03T18:56:21.345 [DEBUG] [Thread-120896] [transport.py] [_log()] server lang: <none>
2025-11-03T18:56:21.345 [DEBUG] [Thread-120896] [transport.py] [_log()] kex follows: False
2025-11-03T18:56:21.345 [DEBUG] [Thread-120896] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:56:21.346 [DEBUG] [Thread-120896] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:56:21.346 [DEBUG] [Thread-120896] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:56:21.346 [DEBUG] [Thread-120896] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:56:21.346 [DEBUG] [Thread-120896] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:56:21.346 [DEBUG] [Thread-120896] [transport.py] [_log()] Compression: none
2025-11-03T18:56:21.346 [DEBUG] [Thread-120896] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:56:21.362 [DEBUG] [Thread-120896] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:56:21.362 [DEBUG] [Thread-120896] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:56:21.362 [DEBUG] [Thread-120896] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:56:21.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:56:21.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:56:21.363 [DEBUG] [Thread-120896] [transport.py] [_log()] userauth is OK
2025-11-03T18:56:21.363 [DEBUG] [Thread-120896] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:56:21.363 [DEBUG] [Thread-120896] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:56:21.363 [DEBUG] [Thread-120896] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:56:21.363 [DEBUG] [Thread-120896] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:56:21.372 [INFO] [Thread-120896] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:56:21.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:56:21.799 [DEBUG] [Thread-120898 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:56:21.974 [DEBUG] [Thread-120896] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:56:21.974 [DEBUG] [Thread-120896] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:56:21.974 [DEBUG] [Thread-120896] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:56:22.014 [DEBUG] [Thread-120896] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:56:22.014 [DEBUG] [Thread-120896] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:56:22.016 [DEBUG] [Thread-120896] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:56:22.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:56:22.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:56:22.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:56:22.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:56:22.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:56:22.034 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:56:22.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:56:22.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:56:22.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:56:22.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.705310 -999.00  +22.70  27.37      9  -11.20 1 1 1 1 1   885    0 32.90 -50.09 ----- 27.4 27.4 296.6 36.7 23.3 -31.6 23.4 -30.6 23.4 -31.0 23.6 -31.5
2025-11-03T18:56:22.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:56:22.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:56:22.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.705310
2025-11-03T18:56:22.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:56:22.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:56:22.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:56:22.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:56:22.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:56:22.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:55:55', tmtdew=42.58, humidity=4.37, cloud=0.0, wind=29.15, temperature=22.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:55:38.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:56:22.035 [DEBUG] [Thread-120896] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:56:22.109 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:56:36.009 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:56:36.011 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:56:36.841 [DEBUG] [Thread-120900 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:56:42.968 [DEBUG] [Thread-120901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:56:51.894 [DEBUG] [Thread-120902 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:57:06.925 [DEBUG] [Thread-120903 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:57:21.965 [DEBUG] [Thread-120904 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:57:36.159 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:57:36.169 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:57:37.014 [DEBUG] [Thread-120905 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:57:43.019 [DEBUG] [Thread-120906 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:57:52.053 [DEBUG] [Thread-120907 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:58:07.088 [DEBUG] [Thread-120908 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:58:22.119 [DEBUG] [Thread-120909 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:58:34.218 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T18:58:36.309 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:58:36.311 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:58:37.158 [DEBUG] [Thread-120910 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:58:43.289 [DEBUG] [Thread-120911 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:58:52.193 [DEBUG] [Thread-120912 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:59:04.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:59:04.266 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:59:04.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:59:04.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 58, 37), 42.5, 4.85, 0.0, 22.02, 22.73, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:59:04.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:58:37
2025-11-03T18:59:05.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:59:05.264 [DEBUG] [Thread-120913] [transport.py] [_log()] starting thread (client mode): 0xed893f0
2025-11-03T18:59:05.265 [DEBUG] [Thread-120913] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:59:05.279 [DEBUG] [Thread-120913] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:59:05.279 [INFO] [Thread-120913] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:59:05.286 [DEBUG] [Thread-120913] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:59:05.286 [DEBUG] [Thread-120913] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:59:05.287 [DEBUG] [Thread-120913] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:59:05.287 [DEBUG] [Thread-120913] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:59:05.287 [DEBUG] [Thread-120913] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:59:05.287 [DEBUG] [Thread-120913] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:59:05.287 [DEBUG] [Thread-120913] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:59:05.287 [DEBUG] [Thread-120913] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:59:05.287 [DEBUG] [Thread-120913] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:59:05.287 [DEBUG] [Thread-120913] [transport.py] [_log()] client lang: <none>
2025-11-03T18:59:05.287 [DEBUG] [Thread-120913] [transport.py] [_log()] server lang: <none>
2025-11-03T18:59:05.288 [DEBUG] [Thread-120913] [transport.py] [_log()] kex follows: False
2025-11-03T18:59:05.288 [DEBUG] [Thread-120913] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:59:05.289 [DEBUG] [Thread-120913] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:59:05.289 [DEBUG] [Thread-120913] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:59:05.290 [DEBUG] [Thread-120913] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:59:05.290 [DEBUG] [Thread-120913] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:59:05.290 [DEBUG] [Thread-120913] [transport.py] [_log()] Compression: none
2025-11-03T18:59:05.290 [DEBUG] [Thread-120913] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:59:05.327 [DEBUG] [Thread-120913] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:59:05.332 [DEBUG] [Thread-120913] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:59:05.334 [DEBUG] [Thread-120913] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:59:05.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:59:05.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:59:05.340 [DEBUG] [Thread-120913] [transport.py] [_log()] userauth is OK
2025-11-03T18:59:05.341 [DEBUG] [Thread-120913] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:59:05.341 [DEBUG] [Thread-120913] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:59:05.341 [DEBUG] [Thread-120913] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:59:05.341 [DEBUG] [Thread-120913] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:59:05.381 [INFO] [Thread-120913] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:59:05.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:59:06.029 [DEBUG] [Thread-120913] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:59:06.030 [DEBUG] [Thread-120913] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:59:06.039 [DEBUG] [Thread-120913] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:59:06.071 [DEBUG] [Thread-120913] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:59:06.071 [DEBUG] [Thread-120913] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:59:06.073 [DEBUG] [Thread-120913] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:59:06.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:59:06.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:59:06.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:59:06.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:59:06.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:59:06.088 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:59:06.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:59:06.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:59:06.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:59:06.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.707046 -999.00  +22.60  19.96      9  -11.10 1 1 1 1 1   884    0 32.70 -51.84 ----- 20.0 20.0 293.6 30.8 23.2 -31.6 23.2 -30.5 23.2 -30.6 23.4 -31.5
2025-11-03T18:59:06.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:59:06.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:59:06.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.707046
2025-11-03T18:59:06.095 [DEBUG] [Thread-120913] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:59:06.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:59:06.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:59:06.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:59:06.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:59:06.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:59:06.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:58:37', tmtdew=42.5, humidity=4.85, cloud=0.0, wind=22.02, temperature=22.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:58:08.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:59:06.180 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:59:06.192 [DEBUG] [Thread-120916] [transport.py] [_log()] starting thread (client mode): 0xed8aad0
2025-11-03T18:59:06.192 [DEBUG] [Thread-120916] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:59:06.206 [DEBUG] [Thread-120916] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:59:06.206 [INFO] [Thread-120916] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:59:06.214 [DEBUG] [Thread-120916] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:59:06.214 [DEBUG] [Thread-120916] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:59:06.214 [DEBUG] [Thread-120916] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:59:06.214 [DEBUG] [Thread-120916] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:59:06.214 [DEBUG] [Thread-120916] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:59:06.214 [DEBUG] [Thread-120916] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:59:06.214 [DEBUG] [Thread-120916] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:59:06.214 [DEBUG] [Thread-120916] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:59:06.214 [DEBUG] [Thread-120916] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:59:06.214 [DEBUG] [Thread-120916] [transport.py] [_log()] client lang: <none>
2025-11-03T18:59:06.214 [DEBUG] [Thread-120916] [transport.py] [_log()] server lang: <none>
2025-11-03T18:59:06.214 [DEBUG] [Thread-120916] [transport.py] [_log()] kex follows: False
2025-11-03T18:59:06.214 [DEBUG] [Thread-120916] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:59:06.214 [DEBUG] [Thread-120916] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:59:06.214 [DEBUG] [Thread-120916] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:59:06.215 [DEBUG] [Thread-120916] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:59:06.215 [DEBUG] [Thread-120916] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:59:06.215 [DEBUG] [Thread-120916] [transport.py] [_log()] Compression: none
2025-11-03T18:59:06.215 [DEBUG] [Thread-120916] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:59:06.273 [DEBUG] [Thread-120916] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:59:06.273 [DEBUG] [Thread-120916] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:59:06.273 [DEBUG] [Thread-120916] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:59:06.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:59:06.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:59:06.329 [DEBUG] [Thread-120916] [transport.py] [_log()] userauth is OK
2025-11-03T18:59:06.329 [DEBUG] [Thread-120916] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:59:06.329 [DEBUG] [Thread-120916] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:59:06.330 [DEBUG] [Thread-120916] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:59:06.330 [DEBUG] [Thread-120916] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:59:06.343 [INFO] [Thread-120916] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:59:06.343 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:59:06.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:59:07.186 [DEBUG] [Thread-120916] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:59:07.186 [DEBUG] [Thread-120916] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:59:07.225 [DEBUG] [Thread-120916] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:59:07.225 [DEBUG] [Thread-120916] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:59:07.229 [DEBUG] [Thread-120918 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:59:07.238 [DEBUG] [Thread-120916] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:59:07.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:59:07.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:59:07.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:59:07.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:59:07.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:59:07.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:59:07.274 [DEBUG] [Thread-120916] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:59:22.357 [DEBUG] [Thread-120919 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:59:36.452 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:59:36.453 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:59:37.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T18:59:37.297 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T18:59:37.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T18:59:37.394 [DEBUG] [Thread-120920 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:59:37.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 59, 9), 42.46, 4.87, 0.0, 23.47, 22.73, 0, 0, 0, 2, 0, 0),)
2025-11-03T18:59:37.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:59:09
2025-11-03T18:59:38.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T18:59:38.285 [DEBUG] [Thread-120921] [transport.py] [_log()] starting thread (client mode): 0xed88220
2025-11-03T18:59:38.285 [DEBUG] [Thread-120921] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:59:38.304 [DEBUG] [Thread-120921] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T18:59:38.304 [INFO] [Thread-120921] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T18:59:38.308 [DEBUG] [Thread-120921] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:59:38.308 [DEBUG] [Thread-120921] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T18:59:38.308 [DEBUG] [Thread-120921] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:59:38.308 [DEBUG] [Thread-120921] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:59:38.308 [DEBUG] [Thread-120921] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:59:38.308 [DEBUG] [Thread-120921] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:59:38.308 [DEBUG] [Thread-120921] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:59:38.308 [DEBUG] [Thread-120921] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:59:38.308 [DEBUG] [Thread-120921] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:59:38.308 [DEBUG] [Thread-120921] [transport.py] [_log()] client lang: <none>
2025-11-03T18:59:38.308 [DEBUG] [Thread-120921] [transport.py] [_log()] server lang: <none>
2025-11-03T18:59:38.308 [DEBUG] [Thread-120921] [transport.py] [_log()] kex follows: False
2025-11-03T18:59:38.308 [DEBUG] [Thread-120921] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:59:38.308 [DEBUG] [Thread-120921] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:59:38.308 [DEBUG] [Thread-120921] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:59:38.308 [DEBUG] [Thread-120921] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:59:38.308 [DEBUG] [Thread-120921] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:59:38.308 [DEBUG] [Thread-120921] [transport.py] [_log()] Compression: none
2025-11-03T18:59:38.308 [DEBUG] [Thread-120921] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:59:38.323 [DEBUG] [Thread-120921] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:59:38.323 [DEBUG] [Thread-120921] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:59:38.323 [DEBUG] [Thread-120921] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T18:59:38.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T18:59:38.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:59:38.324 [DEBUG] [Thread-120921] [transport.py] [_log()] userauth is OK
2025-11-03T18:59:38.324 [DEBUG] [Thread-120921] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:59:38.324 [DEBUG] [Thread-120921] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:59:38.324 [DEBUG] [Thread-120921] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T18:59:38.324 [DEBUG] [Thread-120921] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:59:38.333 [INFO] [Thread-120921] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:59:38.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:59:39.120 [DEBUG] [Thread-120921] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:59:39.120 [DEBUG] [Thread-120921] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:59:39.120 [DEBUG] [Thread-120921] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T18:59:39.162 [DEBUG] [Thread-120921] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:59:39.162 [DEBUG] [Thread-120921] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:59:39.164 [DEBUG] [Thread-120921] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:59:39.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:59:39.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T18:59:39.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T18:59:39.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T18:59:39.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:59:39.181 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T18:59:39.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:59:39.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:59:39.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T18:59:39.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.707741 -999.00  +22.50  30.57      9  -11.20 1 1 2 1 1   883    0 32.61 -65.48 ----- 30.6 30.6 296.4 32.9 23.1 -31.5 23.2 -30.5 23.1 -30.8 23.3 -31.1
2025-11-03T18:59:39.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T18:59:39.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T18:59:39.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.707741
2025-11-03T18:59:39.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T18:59:39.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T18:59:39.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T18:59:39.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T18:59:39.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T18:59:39.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:59:09', tmtdew=42.46, humidity=4.87, cloud=0.0, wind=23.47, temperature=22.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:59:08.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T18:59:39.182 [DEBUG] [Thread-120921] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:59:39.259 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T18:59:39.272 [DEBUG] [Thread-120924] [transport.py] [_log()] starting thread (client mode): 0xed2d3f0
2025-11-03T18:59:39.272 [DEBUG] [Thread-120924] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T18:59:39.286 [DEBUG] [Thread-120924] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T18:59:39.286 [INFO] [Thread-120924] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T18:59:39.294 [DEBUG] [Thread-120924] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T18:59:39.294 [DEBUG] [Thread-120924] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T18:59:39.294 [DEBUG] [Thread-120924] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T18:59:39.294 [DEBUG] [Thread-120924] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:59:39.294 [DEBUG] [Thread-120924] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T18:59:39.294 [DEBUG] [Thread-120924] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:59:39.294 [DEBUG] [Thread-120924] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T18:59:39.294 [DEBUG] [Thread-120924] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T18:59:39.294 [DEBUG] [Thread-120924] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T18:59:39.294 [DEBUG] [Thread-120924] [transport.py] [_log()] client lang: <none>
2025-11-03T18:59:39.294 [DEBUG] [Thread-120924] [transport.py] [_log()] server lang: <none>
2025-11-03T18:59:39.294 [DEBUG] [Thread-120924] [transport.py] [_log()] kex follows: False
2025-11-03T18:59:39.294 [DEBUG] [Thread-120924] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T18:59:39.294 [DEBUG] [Thread-120924] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T18:59:39.294 [DEBUG] [Thread-120924] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T18:59:39.294 [DEBUG] [Thread-120924] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T18:59:39.294 [DEBUG] [Thread-120924] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T18:59:39.294 [DEBUG] [Thread-120924] [transport.py] [_log()] Compression: none
2025-11-03T18:59:39.294 [DEBUG] [Thread-120924] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T18:59:39.352 [DEBUG] [Thread-120924] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T18:59:39.353 [DEBUG] [Thread-120924] [transport.py] [_log()] Switch to new keys ...
2025-11-03T18:59:39.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T18:59:39.353 [DEBUG] [Thread-120924] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T18:59:39.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T18:59:39.410 [DEBUG] [Thread-120924] [transport.py] [_log()] userauth is OK
2025-11-03T18:59:39.410 [DEBUG] [Thread-120924] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T18:59:39.410 [DEBUG] [Thread-120924] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T18:59:39.410 [DEBUG] [Thread-120924] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T18:59:39.410 [DEBUG] [Thread-120924] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T18:59:39.424 [INFO] [Thread-120924] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T18:59:39.424 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T18:59:39.424 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T18:59:40.223 [DEBUG] [Thread-120924] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T18:59:40.223 [DEBUG] [Thread-120924] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T18:59:40.271 [DEBUG] [Thread-120924] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T18:59:40.271 [DEBUG] [Thread-120924] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T18:59:40.280 [DEBUG] [Thread-120924] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T18:59:40.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T18:59:40.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T18:59:40.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T18:59:40.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T18:59:40.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T18:59:40.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T18:59:40.311 [DEBUG] [Thread-120924] [transport.py] [_log()] EOF in transport thread
2025-11-03T18:59:43.469 [DEBUG] [Thread-120926 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T18:59:52.427 [DEBUG] [Thread-120927 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:00:07.496 [DEBUG] [Thread-120928 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:00:10.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:00:10.307 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:00:10.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:00:11.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 18, 59, 42), 42.41, 4.88, 0.0, 26.17, 22.64, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:00:11.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 18:59:42
2025-11-03T19:00:11.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:00:11.373 [DEBUG] [Thread-120929] [transport.py] [_log()] starting thread (client mode): 0x117e88e0
2025-11-03T19:00:11.373 [DEBUG] [Thread-120929] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:00:11.395 [DEBUG] [Thread-120929] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:00:11.396 [INFO] [Thread-120929] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:00:11.399 [DEBUG] [Thread-120929] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:00:11.399 [DEBUG] [Thread-120929] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:00:11.399 [DEBUG] [Thread-120929] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:00:11.399 [DEBUG] [Thread-120929] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:00:11.399 [DEBUG] [Thread-120929] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:00:11.400 [DEBUG] [Thread-120929] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:00:11.400 [DEBUG] [Thread-120929] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:00:11.400 [DEBUG] [Thread-120929] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:00:11.400 [DEBUG] [Thread-120929] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:00:11.400 [DEBUG] [Thread-120929] [transport.py] [_log()] client lang: <none>
2025-11-03T19:00:11.400 [DEBUG] [Thread-120929] [transport.py] [_log()] server lang: <none>
2025-11-03T19:00:11.400 [DEBUG] [Thread-120929] [transport.py] [_log()] kex follows: False
2025-11-03T19:00:11.400 [DEBUG] [Thread-120929] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:00:11.400 [DEBUG] [Thread-120929] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:00:11.400 [DEBUG] [Thread-120929] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:00:11.400 [DEBUG] [Thread-120929] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:00:11.400 [DEBUG] [Thread-120929] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:00:11.400 [DEBUG] [Thread-120929] [transport.py] [_log()] Compression: none
2025-11-03T19:00:11.400 [DEBUG] [Thread-120929] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:00:11.419 [DEBUG] [Thread-120929] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:00:11.419 [DEBUG] [Thread-120929] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:00:11.420 [DEBUG] [Thread-120929] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:00:11.420 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:00:11.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:00:11.423 [DEBUG] [Thread-120929] [transport.py] [_log()] userauth is OK
2025-11-03T19:00:11.423 [DEBUG] [Thread-120929] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:00:11.423 [DEBUG] [Thread-120929] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:00:11.424 [DEBUG] [Thread-120929] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:00:11.424 [DEBUG] [Thread-120929] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:00:11.446 [INFO] [Thread-120929] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:00:11.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:00:14.402 [DEBUG] [Thread-120929] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:00:14.403 [DEBUG] [Thread-120929] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:00:14.403 [DEBUG] [Thread-120929] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:00:14.443 [DEBUG] [Thread-120929] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:00:14.443 [DEBUG] [Thread-120929] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:00:14.449 [DEBUG] [Thread-120929] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:00:14.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:00:14.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:00:14.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:00:14.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:00:14.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:00:14.530 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:00:14.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:00:14.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:00:14.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:00:14.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.708088 -999.00  +22.50  24.19      9  -11.20 1 1 1 1 1   882    0 32.49 -69.50 ----- 24.2 24.2 296.2 33.3 23.1 -31.6 23.1 -30.4 23.1 -30.7 23.3 -31.2
2025-11-03T19:00:14.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:00:14.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:00:14.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.708088
2025-11-03T19:00:14.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:00:14.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:00:14.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:00:14.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:00:14.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:00:14.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T18:59:42', tmtdew=42.41, humidity=4.88, cloud=0.0, wind=26.17, temperature=22.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T16:59:38.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:00:14.533 [DEBUG] [Thread-120929] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:00:14.618 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:00:14.630 [DEBUG] [Thread-120932] [transport.py] [_log()] starting thread (client mode): 0x11760850
2025-11-03T19:00:14.630 [DEBUG] [Thread-120932] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:00:14.648 [DEBUG] [Thread-120932] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:00:14.648 [INFO] [Thread-120932] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:00:14.656 [DEBUG] [Thread-120932] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:00:14.656 [DEBUG] [Thread-120932] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:00:14.657 [DEBUG] [Thread-120932] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:00:14.657 [DEBUG] [Thread-120932] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:00:14.657 [DEBUG] [Thread-120932] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:00:14.657 [DEBUG] [Thread-120932] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:00:14.657 [DEBUG] [Thread-120932] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:00:14.657 [DEBUG] [Thread-120932] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:00:14.658 [DEBUG] [Thread-120932] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:00:14.658 [DEBUG] [Thread-120932] [transport.py] [_log()] client lang: <none>
2025-11-03T19:00:14.658 [DEBUG] [Thread-120932] [transport.py] [_log()] server lang: <none>
2025-11-03T19:00:14.658 [DEBUG] [Thread-120932] [transport.py] [_log()] kex follows: False
2025-11-03T19:00:14.658 [DEBUG] [Thread-120932] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:00:14.658 [DEBUG] [Thread-120932] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:00:14.658 [DEBUG] [Thread-120932] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:00:14.658 [DEBUG] [Thread-120932] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:00:14.658 [DEBUG] [Thread-120932] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:00:14.658 [DEBUG] [Thread-120932] [transport.py] [_log()] Compression: none
2025-11-03T19:00:14.658 [DEBUG] [Thread-120932] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:00:14.715 [DEBUG] [Thread-120932] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:00:14.715 [DEBUG] [Thread-120932] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:00:14.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:00:14.717 [DEBUG] [Thread-120932] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:00:14.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:00:14.771 [DEBUG] [Thread-120932] [transport.py] [_log()] userauth is OK
2025-11-03T19:00:14.771 [DEBUG] [Thread-120932] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:00:14.772 [DEBUG] [Thread-120932] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:00:14.772 [DEBUG] [Thread-120932] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:00:14.772 [DEBUG] [Thread-120932] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:00:14.790 [INFO] [Thread-120932] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:00:14.791 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:00:14.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:00:15.618 [DEBUG] [Thread-120932] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:00:15.618 [DEBUG] [Thread-120932] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:00:15.667 [DEBUG] [Thread-120932] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:00:15.667 [DEBUG] [Thread-120932] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:00:15.675 [DEBUG] [Thread-120932] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:00:15.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:00:15.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:00:15.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:00:15.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:00:15.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:00:15.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:00:15.708 [DEBUG] [Thread-120932] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:00:22.535 [DEBUG] [Thread-120934 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:00:36.594 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:00:36.595 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:00:37.587 [DEBUG] [Thread-120935 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:00:43.583 [DEBUG] [Thread-120936 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:00:45.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:00:45.731 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:00:45.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:00:46.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 0, 14), 42.37, 4.9, 0.0, 23.96, 22.64, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:00:46.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:00:14
2025-11-03T19:00:46.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:00:46.802 [DEBUG] [Thread-120937] [transport.py] [_log()] starting thread (client mode): 0x117ebf10
2025-11-03T19:00:46.802 [DEBUG] [Thread-120937] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:00:46.821 [DEBUG] [Thread-120937] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:00:46.821 [INFO] [Thread-120937] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:00:46.824 [DEBUG] [Thread-120937] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:00:46.825 [DEBUG] [Thread-120937] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:00:46.825 [DEBUG] [Thread-120937] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:00:46.825 [DEBUG] [Thread-120937] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:00:46.825 [DEBUG] [Thread-120937] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:00:46.825 [DEBUG] [Thread-120937] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:00:46.825 [DEBUG] [Thread-120937] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:00:46.825 [DEBUG] [Thread-120937] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:00:46.825 [DEBUG] [Thread-120937] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:00:46.825 [DEBUG] [Thread-120937] [transport.py] [_log()] client lang: <none>
2025-11-03T19:00:46.825 [DEBUG] [Thread-120937] [transport.py] [_log()] server lang: <none>
2025-11-03T19:00:46.825 [DEBUG] [Thread-120937] [transport.py] [_log()] kex follows: False
2025-11-03T19:00:46.825 [DEBUG] [Thread-120937] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:00:46.825 [DEBUG] [Thread-120937] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:00:46.825 [DEBUG] [Thread-120937] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:00:46.825 [DEBUG] [Thread-120937] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:00:46.825 [DEBUG] [Thread-120937] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:00:46.825 [DEBUG] [Thread-120937] [transport.py] [_log()] Compression: none
2025-11-03T19:00:46.825 [DEBUG] [Thread-120937] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:00:46.842 [DEBUG] [Thread-120937] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:00:46.842 [DEBUG] [Thread-120937] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:00:46.843 [DEBUG] [Thread-120937] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:00:46.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:00:46.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:00:46.845 [DEBUG] [Thread-120937] [transport.py] [_log()] userauth is OK
2025-11-03T19:00:46.845 [DEBUG] [Thread-120937] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:00:46.845 [DEBUG] [Thread-120937] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:00:46.845 [DEBUG] [Thread-120937] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:00:46.845 [DEBUG] [Thread-120937] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:00:46.870 [INFO] [Thread-120937] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:00:46.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:00:47.498 [DEBUG] [Thread-120937] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:00:47.498 [DEBUG] [Thread-120937] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:00:47.498 [DEBUG] [Thread-120937] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:00:47.539 [DEBUG] [Thread-120937] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:00:47.539 [DEBUG] [Thread-120937] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:00:47.542 [DEBUG] [Thread-120937] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:00:47.553 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:00:47.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:00:47.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:00:47.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:00:47.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:00:47.568 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:00:47.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:00:47.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:00:47.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:00:47.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.708435 -999.00  +22.50  19.41      9  -11.20 1 1 1 1 1   882    0 32.64 -69.95 ----- 19.4 19.4 304.4 32.0 23.0 -31.4 23.1 -30.4 23.0 -30.5 23.2 -31.3
2025-11-03T19:00:47.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:00:47.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:00:47.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.708435
2025-11-03T19:00:47.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:00:47.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:00:47.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:00:47.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:00:47.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:00:47.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:00:14', tmtdew=42.37, humidity=4.9, cloud=0.0, wind=23.96, temperature=22.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:00:08.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:00:47.569 [DEBUG] [Thread-120937] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:00:47.643 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:00:47.654 [DEBUG] [Thread-120940] [transport.py] [_log()] starting thread (client mode): 0x117e8df0
2025-11-03T19:00:47.654 [DEBUG] [Thread-120940] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:00:47.669 [DEBUG] [Thread-120940] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:00:47.669 [INFO] [Thread-120940] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:00:47.676 [DEBUG] [Thread-120940] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:00:47.677 [DEBUG] [Thread-120940] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:00:47.677 [DEBUG] [Thread-120940] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:00:47.677 [DEBUG] [Thread-120940] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:00:47.677 [DEBUG] [Thread-120940] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:00:47.677 [DEBUG] [Thread-120940] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:00:47.677 [DEBUG] [Thread-120940] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:00:47.677 [DEBUG] [Thread-120940] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:00:47.677 [DEBUG] [Thread-120940] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:00:47.677 [DEBUG] [Thread-120940] [transport.py] [_log()] client lang: <none>
2025-11-03T19:00:47.677 [DEBUG] [Thread-120940] [transport.py] [_log()] server lang: <none>
2025-11-03T19:00:47.677 [DEBUG] [Thread-120940] [transport.py] [_log()] kex follows: False
2025-11-03T19:00:47.677 [DEBUG] [Thread-120940] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:00:47.677 [DEBUG] [Thread-120940] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:00:47.677 [DEBUG] [Thread-120940] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:00:47.677 [DEBUG] [Thread-120940] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:00:47.677 [DEBUG] [Thread-120940] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:00:47.677 [DEBUG] [Thread-120940] [transport.py] [_log()] Compression: none
2025-11-03T19:00:47.677 [DEBUG] [Thread-120940] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:00:47.737 [DEBUG] [Thread-120940] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:00:47.738 [DEBUG] [Thread-120940] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:00:47.738 [DEBUG] [Thread-120940] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:00:47.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:00:47.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:00:47.794 [DEBUG] [Thread-120940] [transport.py] [_log()] userauth is OK
2025-11-03T19:00:47.794 [DEBUG] [Thread-120940] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:00:47.794 [DEBUG] [Thread-120940] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:00:47.795 [DEBUG] [Thread-120940] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:00:47.795 [DEBUG] [Thread-120940] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:00:47.811 [INFO] [Thread-120940] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:00:47.811 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:00:47.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:00:48.674 [DEBUG] [Thread-120940] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:00:48.674 [DEBUG] [Thread-120940] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:00:48.722 [DEBUG] [Thread-120940] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:00:48.722 [DEBUG] [Thread-120940] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:00:48.730 [DEBUG] [Thread-120940] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:00:48.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:00:48.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:00:48.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:00:48.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:00:48.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:00:48.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:00:48.762 [DEBUG] [Thread-120940] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:00:52.620 [DEBUG] [Thread-120942 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:01:07.671 [DEBUG] [Thread-120943 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:01:18.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:01:18.785 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:01:18.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:01:19.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 0, 47), 42.31, 4.87, 0.0, 26.91, 22.48, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:01:19.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:00:47
2025-11-03T19:01:19.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:01:19.836 [DEBUG] [Thread-120944] [transport.py] [_log()] starting thread (client mode): 0xed8aad0
2025-11-03T19:01:19.836 [DEBUG] [Thread-120944] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:01:19.852 [DEBUG] [Thread-120944] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:01:19.852 [INFO] [Thread-120944] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:01:19.861 [DEBUG] [Thread-120944] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:01:19.862 [DEBUG] [Thread-120944] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:01:19.862 [DEBUG] [Thread-120944] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:01:19.862 [DEBUG] [Thread-120944] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:01:19.862 [DEBUG] [Thread-120944] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:01:19.862 [DEBUG] [Thread-120944] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:01:19.862 [DEBUG] [Thread-120944] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:01:19.862 [DEBUG] [Thread-120944] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:01:19.862 [DEBUG] [Thread-120944] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:01:19.862 [DEBUG] [Thread-120944] [transport.py] [_log()] client lang: <none>
2025-11-03T19:01:19.862 [DEBUG] [Thread-120944] [transport.py] [_log()] server lang: <none>
2025-11-03T19:01:19.862 [DEBUG] [Thread-120944] [transport.py] [_log()] kex follows: False
2025-11-03T19:01:19.862 [DEBUG] [Thread-120944] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:01:19.862 [DEBUG] [Thread-120944] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:01:19.863 [DEBUG] [Thread-120944] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:01:19.863 [DEBUG] [Thread-120944] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:01:19.863 [DEBUG] [Thread-120944] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:01:19.863 [DEBUG] [Thread-120944] [transport.py] [_log()] Compression: none
2025-11-03T19:01:19.863 [DEBUG] [Thread-120944] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:01:19.873 [DEBUG] [Thread-120944] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:01:19.873 [DEBUG] [Thread-120944] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:01:19.874 [DEBUG] [Thread-120944] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:01:19.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:01:19.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:01:19.876 [DEBUG] [Thread-120944] [transport.py] [_log()] userauth is OK
2025-11-03T19:01:19.876 [DEBUG] [Thread-120944] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:01:19.876 [DEBUG] [Thread-120944] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:01:19.876 [DEBUG] [Thread-120944] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:01:19.876 [DEBUG] [Thread-120944] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:01:19.900 [INFO] [Thread-120944] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:01:19.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:01:20.474 [DEBUG] [Thread-120944] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:01:20.474 [DEBUG] [Thread-120944] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:01:20.474 [DEBUG] [Thread-120944] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:01:20.515 [DEBUG] [Thread-120944] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:01:20.515 [DEBUG] [Thread-120944] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:01:20.518 [DEBUG] [Thread-120944] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:01:20.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:01:20.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:01:20.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:01:20.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:01:20.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:01:20.535 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:01:20.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:01:20.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:01:20.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:01:20.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.708782 -999.00  +22.50  30.63      9  -11.20 1 1 2 1 1   881    0 31.85 -72.35 ----- 30.6 30.6 304.4 38.2 23.1 -31.5 23.0 -30.4 23.0 -30.5 23.2 -31.3
2025-11-03T19:01:20.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:01:20.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:01:20.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.708782
2025-11-03T19:01:20.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:01:20.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:01:20.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:01:20.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:01:20.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:01:20.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:00:47', tmtdew=42.31, humidity=4.87, cloud=0.0, wind=26.91, temperature=22.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:00:38.765', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:01:20.536 [DEBUG] [Thread-120944] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:01:20.610 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:01:20.621 [DEBUG] [Thread-120947] [transport.py] [_log()] starting thread (client mode): 0x11798610
2025-11-03T19:01:20.622 [DEBUG] [Thread-120947] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:01:20.636 [DEBUG] [Thread-120947] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:01:20.636 [INFO] [Thread-120947] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:01:20.644 [DEBUG] [Thread-120947] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:01:20.644 [DEBUG] [Thread-120947] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:01:20.644 [DEBUG] [Thread-120947] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:01:20.644 [DEBUG] [Thread-120947] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:01:20.644 [DEBUG] [Thread-120947] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:01:20.644 [DEBUG] [Thread-120947] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:01:20.644 [DEBUG] [Thread-120947] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:01:20.644 [DEBUG] [Thread-120947] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:01:20.644 [DEBUG] [Thread-120947] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:01:20.644 [DEBUG] [Thread-120947] [transport.py] [_log()] client lang: <none>
2025-11-03T19:01:20.644 [DEBUG] [Thread-120947] [transport.py] [_log()] server lang: <none>
2025-11-03T19:01:20.644 [DEBUG] [Thread-120947] [transport.py] [_log()] kex follows: False
2025-11-03T19:01:20.644 [DEBUG] [Thread-120947] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:01:20.644 [DEBUG] [Thread-120947] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:01:20.644 [DEBUG] [Thread-120947] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:01:20.644 [DEBUG] [Thread-120947] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:01:20.644 [DEBUG] [Thread-120947] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:01:20.644 [DEBUG] [Thread-120947] [transport.py] [_log()] Compression: none
2025-11-03T19:01:20.644 [DEBUG] [Thread-120947] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:01:20.702 [DEBUG] [Thread-120947] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:01:20.702 [DEBUG] [Thread-120947] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:01:20.702 [DEBUG] [Thread-120947] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:01:20.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:01:20.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:01:20.759 [DEBUG] [Thread-120947] [transport.py] [_log()] userauth is OK
2025-11-03T19:01:20.759 [DEBUG] [Thread-120947] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:01:20.759 [DEBUG] [Thread-120947] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:01:20.759 [DEBUG] [Thread-120947] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:01:20.759 [DEBUG] [Thread-120947] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:01:20.773 [INFO] [Thread-120947] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:01:20.773 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:01:20.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:01:21.633 [DEBUG] [Thread-120947] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:01:21.633 [DEBUG] [Thread-120947] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:01:21.681 [DEBUG] [Thread-120947] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:01:21.682 [DEBUG] [Thread-120947] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:01:21.690 [DEBUG] [Thread-120947] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:01:21.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:01:21.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:01:21.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:01:21.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:01:21.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:01:21.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:01:21.721 [DEBUG] [Thread-120947] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:01:22.712 [DEBUG] [Thread-120949 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:01:37.752 [DEBUG] [Thread-120950 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:01:43.903 [DEBUG] [Thread-120951 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:01:44.801 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:01:44.802 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:01:51.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:01:51.744 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:01:51.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:01:52.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 1, 19), 42.16, 4.93, 0.0, 27.21, 22.5, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:01:52.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:01:19
2025-11-03T19:01:52.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:01:52.780 [DEBUG] [Thread-120952 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:01:52.809 [DEBUG] [Thread-120953] [transport.py] [_log()] starting thread (client mode): 0xed8b430
2025-11-03T19:01:52.809 [DEBUG] [Thread-120953] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:01:52.829 [DEBUG] [Thread-120953] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:01:52.829 [INFO] [Thread-120953] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:01:52.833 [DEBUG] [Thread-120953] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:01:52.833 [DEBUG] [Thread-120953] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:01:52.833 [DEBUG] [Thread-120953] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:01:52.833 [DEBUG] [Thread-120953] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:01:52.833 [DEBUG] [Thread-120953] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:01:52.833 [DEBUG] [Thread-120953] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:01:52.833 [DEBUG] [Thread-120953] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:01:52.833 [DEBUG] [Thread-120953] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:01:52.833 [DEBUG] [Thread-120953] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:01:52.833 [DEBUG] [Thread-120953] [transport.py] [_log()] client lang: <none>
2025-11-03T19:01:52.833 [DEBUG] [Thread-120953] [transport.py] [_log()] server lang: <none>
2025-11-03T19:01:52.833 [DEBUG] [Thread-120953] [transport.py] [_log()] kex follows: False
2025-11-03T19:01:52.833 [DEBUG] [Thread-120953] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:01:52.833 [DEBUG] [Thread-120953] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:01:52.833 [DEBUG] [Thread-120953] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:01:52.833 [DEBUG] [Thread-120953] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:01:52.833 [DEBUG] [Thread-120953] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:01:52.833 [DEBUG] [Thread-120953] [transport.py] [_log()] Compression: none
2025-11-03T19:01:52.834 [DEBUG] [Thread-120953] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:01:52.852 [DEBUG] [Thread-120953] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:01:52.852 [DEBUG] [Thread-120953] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:01:52.853 [DEBUG] [Thread-120953] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:01:52.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:01:52.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:01:52.854 [DEBUG] [Thread-120953] [transport.py] [_log()] userauth is OK
2025-11-03T19:01:52.854 [DEBUG] [Thread-120953] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:01:52.854 [DEBUG] [Thread-120953] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:01:52.854 [DEBUG] [Thread-120953] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:01:52.854 [DEBUG] [Thread-120953] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:01:52.867 [INFO] [Thread-120953] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:01:52.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:01:53.515 [DEBUG] [Thread-120953] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:01:53.515 [DEBUG] [Thread-120953] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:01:53.515 [DEBUG] [Thread-120953] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:01:53.555 [DEBUG] [Thread-120953] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:01:53.556 [DEBUG] [Thread-120953] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:01:53.558 [DEBUG] [Thread-120953] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:01:53.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:01:53.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:01:53.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:01:53.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:01:53.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:01:53.577 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:01:53.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:01:53.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:01:53.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:01:53.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.709129 -999.00  +22.40  23.80      9  -11.10 1 1 1 1 1   880    0 31.52 -68.16 ----- 23.8 23.8 301.2 33.0 23.0 -31.5 23.0 -30.3 22.9 -30.6 23.2 -31.2
2025-11-03T19:01:53.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:01:53.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:01:53.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.709129
2025-11-03T19:01:53.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:01:53.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:01:53.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:01:53.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:01:53.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:01:53.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:01:19', tmtdew=42.16, humidity=4.93, cloud=0.0, wind=27.21, temperature=22.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:01:08.746', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:01:53.578 [DEBUG] [Thread-120953] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:01:53.652 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:01:53.665 [DEBUG] [Thread-120956] [transport.py] [_log()] starting thread (client mode): 0x1174e2f0
2025-11-03T19:01:53.665 [DEBUG] [Thread-120956] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:01:53.679 [DEBUG] [Thread-120956] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:01:53.679 [INFO] [Thread-120956] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:01:53.687 [DEBUG] [Thread-120956] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:01:53.687 [DEBUG] [Thread-120956] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:01:53.687 [DEBUG] [Thread-120956] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:01:53.687 [DEBUG] [Thread-120956] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:01:53.687 [DEBUG] [Thread-120956] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:01:53.687 [DEBUG] [Thread-120956] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:01:53.687 [DEBUG] [Thread-120956] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:01:53.687 [DEBUG] [Thread-120956] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:01:53.687 [DEBUG] [Thread-120956] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:01:53.687 [DEBUG] [Thread-120956] [transport.py] [_log()] client lang: <none>
2025-11-03T19:01:53.687 [DEBUG] [Thread-120956] [transport.py] [_log()] server lang: <none>
2025-11-03T19:01:53.687 [DEBUG] [Thread-120956] [transport.py] [_log()] kex follows: False
2025-11-03T19:01:53.687 [DEBUG] [Thread-120956] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:01:53.687 [DEBUG] [Thread-120956] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:01:53.687 [DEBUG] [Thread-120956] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:01:53.687 [DEBUG] [Thread-120956] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:01:53.687 [DEBUG] [Thread-120956] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:01:53.687 [DEBUG] [Thread-120956] [transport.py] [_log()] Compression: none
2025-11-03T19:01:53.687 [DEBUG] [Thread-120956] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:01:53.747 [DEBUG] [Thread-120956] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:01:53.747 [DEBUG] [Thread-120956] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:01:53.747 [DEBUG] [Thread-120956] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:01:53.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:01:53.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:01:53.803 [DEBUG] [Thread-120956] [transport.py] [_log()] userauth is OK
2025-11-03T19:01:53.803 [DEBUG] [Thread-120956] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:01:53.803 [DEBUG] [Thread-120956] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:01:53.803 [DEBUG] [Thread-120956] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:01:53.803 [DEBUG] [Thread-120956] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:01:53.818 [INFO] [Thread-120956] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:01:53.818 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:01:53.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:01:54.758 [DEBUG] [Thread-120956] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:01:54.759 [DEBUG] [Thread-120956] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:01:54.806 [DEBUG] [Thread-120956] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:01:54.807 [DEBUG] [Thread-120956] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:01:54.815 [DEBUG] [Thread-120956] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:01:54.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:01:54.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:01:54.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:01:54.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:01:54.839 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:01:54.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:01:54.847 [DEBUG] [Thread-120956] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:02:07.817 [DEBUG] [Thread-120958 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:02:22.876 [DEBUG] [Thread-120959 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:02:24.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:02:24.848 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:02:24.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:02:25.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 1, 51), 42.16, 4.9, 0.0, 26.31, 22.35, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:02:25.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:01:51
2025-11-03T19:02:25.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:02:25.869 [DEBUG] [Thread-120960] [transport.py] [_log()] starting thread (client mode): 0xed895d0
2025-11-03T19:02:25.869 [DEBUG] [Thread-120960] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:02:25.889 [DEBUG] [Thread-120960] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:02:25.889 [INFO] [Thread-120960] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:02:25.892 [DEBUG] [Thread-120960] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:02:25.892 [DEBUG] [Thread-120960] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:02:25.892 [DEBUG] [Thread-120960] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:02:25.893 [DEBUG] [Thread-120960] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:02:25.893 [DEBUG] [Thread-120960] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:02:25.893 [DEBUG] [Thread-120960] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:02:25.893 [DEBUG] [Thread-120960] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:02:25.893 [DEBUG] [Thread-120960] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:02:25.893 [DEBUG] [Thread-120960] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:02:25.893 [DEBUG] [Thread-120960] [transport.py] [_log()] client lang: <none>
2025-11-03T19:02:25.893 [DEBUG] [Thread-120960] [transport.py] [_log()] server lang: <none>
2025-11-03T19:02:25.893 [DEBUG] [Thread-120960] [transport.py] [_log()] kex follows: False
2025-11-03T19:02:25.893 [DEBUG] [Thread-120960] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:02:25.893 [DEBUG] [Thread-120960] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:02:25.893 [DEBUG] [Thread-120960] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:02:25.893 [DEBUG] [Thread-120960] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:02:25.893 [DEBUG] [Thread-120960] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:02:25.893 [DEBUG] [Thread-120960] [transport.py] [_log()] Compression: none
2025-11-03T19:02:25.893 [DEBUG] [Thread-120960] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:02:25.907 [DEBUG] [Thread-120960] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:02:25.907 [DEBUG] [Thread-120960] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:02:25.908 [DEBUG] [Thread-120960] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:02:25.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:02:25.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:02:25.908 [DEBUG] [Thread-120960] [transport.py] [_log()] userauth is OK
2025-11-03T19:02:25.908 [DEBUG] [Thread-120960] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:02:25.908 [DEBUG] [Thread-120960] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:02:25.908 [DEBUG] [Thread-120960] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:02:25.908 [DEBUG] [Thread-120960] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:02:25.923 [INFO] [Thread-120960] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:02:25.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:02:26.515 [DEBUG] [Thread-120960] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:02:26.515 [DEBUG] [Thread-120960] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:02:26.515 [DEBUG] [Thread-120960] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:02:26.556 [DEBUG] [Thread-120960] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:02:26.556 [DEBUG] [Thread-120960] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:02:26.559 [DEBUG] [Thread-120960] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:02:26.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:02:26.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:02:26.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:02:26.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:02:26.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:02:26.577 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:02:26.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:02:26.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:02:26.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:02:26.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.709477 -999.00  +22.40  27.82      9  -11.10 1 1 1 1 1   880    0 31.62 -70.53 ----- 27.8 27.8 292.6 31.4 23.0 -31.4 22.9 -30.4 22.8 -30.5 23.1 -31.3
2025-11-03T19:02:26.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:02:26.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:02:26.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.709477
2025-11-03T19:02:26.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:02:26.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:02:26.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:02:26.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:02:26.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:02:26.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:01:51', tmtdew=42.16, humidity=4.9, cloud=0.0, wind=26.31, temperature=22.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:01:38.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:02:26.579 [DEBUG] [Thread-120960] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:02:26.653 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:02:26.665 [DEBUG] [Thread-120963] [transport.py] [_log()] starting thread (client mode): 0x1179ace0
2025-11-03T19:02:26.665 [DEBUG] [Thread-120963] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:02:26.680 [DEBUG] [Thread-120963] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:02:26.680 [INFO] [Thread-120963] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:02:26.687 [DEBUG] [Thread-120963] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:02:26.687 [DEBUG] [Thread-120963] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:02:26.687 [DEBUG] [Thread-120963] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:02:26.688 [DEBUG] [Thread-120963] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:02:26.688 [DEBUG] [Thread-120963] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:02:26.688 [DEBUG] [Thread-120963] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:02:26.688 [DEBUG] [Thread-120963] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:02:26.688 [DEBUG] [Thread-120963] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:02:26.688 [DEBUG] [Thread-120963] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:02:26.688 [DEBUG] [Thread-120963] [transport.py] [_log()] client lang: <none>
2025-11-03T19:02:26.688 [DEBUG] [Thread-120963] [transport.py] [_log()] server lang: <none>
2025-11-03T19:02:26.688 [DEBUG] [Thread-120963] [transport.py] [_log()] kex follows: False
2025-11-03T19:02:26.688 [DEBUG] [Thread-120963] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:02:26.688 [DEBUG] [Thread-120963] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:02:26.688 [DEBUG] [Thread-120963] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:02:26.688 [DEBUG] [Thread-120963] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:02:26.688 [DEBUG] [Thread-120963] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:02:26.688 [DEBUG] [Thread-120963] [transport.py] [_log()] Compression: none
2025-11-03T19:02:26.688 [DEBUG] [Thread-120963] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:02:26.743 [DEBUG] [Thread-120963] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:02:26.744 [DEBUG] [Thread-120963] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:02:26.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:02:26.744 [DEBUG] [Thread-120963] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:02:26.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:02:26.802 [DEBUG] [Thread-120963] [transport.py] [_log()] userauth is OK
2025-11-03T19:02:26.802 [DEBUG] [Thread-120963] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:02:26.802 [DEBUG] [Thread-120963] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:02:26.802 [DEBUG] [Thread-120963] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:02:26.802 [DEBUG] [Thread-120963] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:02:26.816 [INFO] [Thread-120963] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:02:26.816 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:02:26.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:02:27.646 [DEBUG] [Thread-120963] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:02:27.646 [DEBUG] [Thread-120963] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:02:27.693 [DEBUG] [Thread-120963] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:02:27.693 [DEBUG] [Thread-120963] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:02:27.701 [DEBUG] [Thread-120963] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:02:27.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:02:27.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:02:27.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:02:27.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:02:27.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:02:27.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:02:27.743 [DEBUG] [Thread-120963] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:02:37.917 [DEBUG] [Thread-120965 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:02:43.998 [DEBUG] [Thread-120966 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:02:51.823 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:02:51.823 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:02:52.970 [DEBUG] [Thread-120967 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:02:57.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:02:57.765 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:02:57.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:02:58.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 2, 24), 42.05, 4.95, 0.0, 26.34, 22.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:02:58.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:02:24
2025-11-03T19:02:58.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:02:58.823 [DEBUG] [Thread-120968] [transport.py] [_log()] starting thread (client mode): 0x1179aec0
2025-11-03T19:02:58.823 [DEBUG] [Thread-120968] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:02:58.843 [DEBUG] [Thread-120968] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:02:58.843 [INFO] [Thread-120968] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:02:58.846 [DEBUG] [Thread-120968] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:02:58.846 [DEBUG] [Thread-120968] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:02:58.846 [DEBUG] [Thread-120968] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:02:58.846 [DEBUG] [Thread-120968] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:02:58.846 [DEBUG] [Thread-120968] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:02:58.846 [DEBUG] [Thread-120968] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:02:58.846 [DEBUG] [Thread-120968] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:02:58.846 [DEBUG] [Thread-120968] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:02:58.846 [DEBUG] [Thread-120968] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:02:58.846 [DEBUG] [Thread-120968] [transport.py] [_log()] client lang: <none>
2025-11-03T19:02:58.846 [DEBUG] [Thread-120968] [transport.py] [_log()] server lang: <none>
2025-11-03T19:02:58.846 [DEBUG] [Thread-120968] [transport.py] [_log()] kex follows: False
2025-11-03T19:02:58.846 [DEBUG] [Thread-120968] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:02:58.846 [DEBUG] [Thread-120968] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:02:58.846 [DEBUG] [Thread-120968] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:02:58.846 [DEBUG] [Thread-120968] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:02:58.847 [DEBUG] [Thread-120968] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:02:58.847 [DEBUG] [Thread-120968] [transport.py] [_log()] Compression: none
2025-11-03T19:02:58.847 [DEBUG] [Thread-120968] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:02:58.864 [DEBUG] [Thread-120968] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:02:58.864 [DEBUG] [Thread-120968] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:02:58.864 [DEBUG] [Thread-120968] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:02:58.864 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:02:58.864 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:02:58.865 [DEBUG] [Thread-120968] [transport.py] [_log()] userauth is OK
2025-11-03T19:02:58.865 [DEBUG] [Thread-120968] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:02:58.865 [DEBUG] [Thread-120968] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:02:58.865 [DEBUG] [Thread-120968] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:02:58.865 [DEBUG] [Thread-120968] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:02:58.880 [INFO] [Thread-120968] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:02:58.880 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:02:59.544 [DEBUG] [Thread-120968] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:02:59.544 [DEBUG] [Thread-120968] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:02:59.545 [DEBUG] [Thread-120968] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:02:59.585 [DEBUG] [Thread-120968] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:02:59.585 [DEBUG] [Thread-120968] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:02:59.589 [DEBUG] [Thread-120968] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:02:59.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:02:59.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:02:59.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:02:59.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:02:59.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:02:59.626 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:02:59.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:02:59.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:02:59.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:02:59.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.709824 -999.00  +22.40  25.64      9  -11.20 1 1 1 1 1   879    0 32.47 -68.59 ----- 25.6 25.6 297.4 31.8 22.9 -31.4 22.9 -30.4 22.8 -30.5 23.0 -31.1
2025-11-03T19:02:59.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:02:59.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:02:59.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.709824
2025-11-03T19:02:59.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:02:59.629 [DEBUG] [Thread-120968] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:02:59.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:02:59.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:02:59.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:02:59.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:02:59.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:02:24', tmtdew=42.05, humidity=4.95, cloud=0.0, wind=26.34, temperature=22.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:02:08.794', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:02:59.712 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:02:59.726 [DEBUG] [Thread-120971] [transport.py] [_log()] starting thread (client mode): 0xed8bb50
2025-11-03T19:02:59.726 [DEBUG] [Thread-120971] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:02:59.740 [DEBUG] [Thread-120971] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:02:59.740 [INFO] [Thread-120971] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:02:59.748 [DEBUG] [Thread-120971] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:02:59.748 [DEBUG] [Thread-120971] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:02:59.748 [DEBUG] [Thread-120971] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:02:59.748 [DEBUG] [Thread-120971] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:02:59.748 [DEBUG] [Thread-120971] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:02:59.748 [DEBUG] [Thread-120971] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:02:59.748 [DEBUG] [Thread-120971] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:02:59.748 [DEBUG] [Thread-120971] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:02:59.748 [DEBUG] [Thread-120971] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:02:59.749 [DEBUG] [Thread-120971] [transport.py] [_log()] client lang: <none>
2025-11-03T19:02:59.749 [DEBUG] [Thread-120971] [transport.py] [_log()] server lang: <none>
2025-11-03T19:02:59.749 [DEBUG] [Thread-120971] [transport.py] [_log()] kex follows: False
2025-11-03T19:02:59.749 [DEBUG] [Thread-120971] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:02:59.749 [DEBUG] [Thread-120971] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:02:59.749 [DEBUG] [Thread-120971] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:02:59.749 [DEBUG] [Thread-120971] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:02:59.749 [DEBUG] [Thread-120971] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:02:59.749 [DEBUG] [Thread-120971] [transport.py] [_log()] Compression: none
2025-11-03T19:02:59.749 [DEBUG] [Thread-120971] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:02:59.803 [DEBUG] [Thread-120971] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:02:59.803 [DEBUG] [Thread-120971] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:02:59.803 [DEBUG] [Thread-120971] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:02:59.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:02:59.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:02:59.860 [DEBUG] [Thread-120971] [transport.py] [_log()] userauth is OK
2025-11-03T19:02:59.860 [DEBUG] [Thread-120971] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:02:59.860 [DEBUG] [Thread-120971] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:02:59.860 [DEBUG] [Thread-120971] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:02:59.860 [DEBUG] [Thread-120971] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:02:59.874 [INFO] [Thread-120971] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:02:59.874 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:02:59.874 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:03:00.705 [DEBUG] [Thread-120971] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:03:00.705 [DEBUG] [Thread-120971] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:03:00.752 [DEBUG] [Thread-120971] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:03:00.752 [DEBUG] [Thread-120971] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:03:00.760 [DEBUG] [Thread-120971] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:03:00.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:03:00.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:03:00.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:03:00.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:03:00.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:03:00.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:03:00.791 [DEBUG] [Thread-120971] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:03:08.004 [DEBUG] [Thread-120973 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:03:23.057 [DEBUG] [Thread-120974 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:03:30.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:03:30.813 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:03:30.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:03:31.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 2, 56), 42.16, 4.9, 0.0, 26.11, 22.35, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:03:31.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:02:56
2025-11-03T19:03:31.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:03:31.946 [DEBUG] [Thread-120975] [transport.py] [_log()] starting thread (client mode): 0xeda3b50
2025-11-03T19:03:31.946 [DEBUG] [Thread-120975] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:03:31.965 [DEBUG] [Thread-120975] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:03:31.965 [INFO] [Thread-120975] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:03:31.966 [DEBUG] [Thread-120975] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:03:31.966 [DEBUG] [Thread-120975] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:03:31.966 [DEBUG] [Thread-120975] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:03:31.966 [DEBUG] [Thread-120975] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:03:31.966 [DEBUG] [Thread-120975] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:03:31.966 [DEBUG] [Thread-120975] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:03:31.966 [DEBUG] [Thread-120975] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:03:31.966 [DEBUG] [Thread-120975] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:03:31.966 [DEBUG] [Thread-120975] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:03:31.966 [DEBUG] [Thread-120975] [transport.py] [_log()] client lang: <none>
2025-11-03T19:03:31.967 [DEBUG] [Thread-120975] [transport.py] [_log()] server lang: <none>
2025-11-03T19:03:31.967 [DEBUG] [Thread-120975] [transport.py] [_log()] kex follows: False
2025-11-03T19:03:31.967 [DEBUG] [Thread-120975] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:03:31.967 [DEBUG] [Thread-120975] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:03:31.967 [DEBUG] [Thread-120975] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:03:31.967 [DEBUG] [Thread-120975] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:03:31.967 [DEBUG] [Thread-120975] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:03:31.967 [DEBUG] [Thread-120975] [transport.py] [_log()] Compression: none
2025-11-03T19:03:31.967 [DEBUG] [Thread-120975] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:03:31.975 [DEBUG] [Thread-120975] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:03:31.975 [DEBUG] [Thread-120975] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:03:31.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:03:31.976 [DEBUG] [Thread-120975] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:03:31.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:03:31.978 [DEBUG] [Thread-120975] [transport.py] [_log()] userauth is OK
2025-11-03T19:03:31.978 [DEBUG] [Thread-120975] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:03:31.978 [DEBUG] [Thread-120975] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:03:31.978 [DEBUG] [Thread-120975] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:03:31.978 [DEBUG] [Thread-120975] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:03:31.989 [INFO] [Thread-120975] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:03:31.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:03:32.576 [DEBUG] [Thread-120975] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:03:32.576 [DEBUG] [Thread-120975] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:03:32.576 [DEBUG] [Thread-120975] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:03:32.616 [DEBUG] [Thread-120975] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:03:32.616 [DEBUG] [Thread-120975] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:03:32.619 [DEBUG] [Thread-120975] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:03:32.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:03:32.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:03:32.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:03:32.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:03:32.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:03:32.636 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:03:32.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:03:32.636 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:03:32.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:03:32.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.710171 -999.00  +22.30  29.23      9  -11.20 1 1 1 1 1   878    0 32.06 -67.37 ----- 29.2 29.2 293.0 35.9 22.9 -31.3 22.9 -30.3 22.7 -30.6 22.9 -31.1
2025-11-03T19:03:32.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:03:32.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:03:32.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.710171
2025-11-03T19:03:32.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:03:32.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:03:32.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:03:32.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:03:32.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:03:32.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:02:56', tmtdew=42.16, humidity=4.9, cloud=0.0, wind=26.11, temperature=22.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:02:38.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:03:32.637 [DEBUG] [Thread-120975] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:03:32.712 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:03:32.723 [DEBUG] [Thread-120978] [transport.py] [_log()] starting thread (client mode): 0x1179b850
2025-11-03T19:03:32.723 [DEBUG] [Thread-120978] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:03:32.738 [DEBUG] [Thread-120978] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:03:32.738 [INFO] [Thread-120978] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:03:32.745 [DEBUG] [Thread-120978] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:03:32.745 [DEBUG] [Thread-120978] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:03:32.745 [DEBUG] [Thread-120978] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:03:32.745 [DEBUG] [Thread-120978] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:03:32.745 [DEBUG] [Thread-120978] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:03:32.745 [DEBUG] [Thread-120978] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:03:32.745 [DEBUG] [Thread-120978] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:03:32.745 [DEBUG] [Thread-120978] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:03:32.745 [DEBUG] [Thread-120978] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:03:32.745 [DEBUG] [Thread-120978] [transport.py] [_log()] client lang: <none>
2025-11-03T19:03:32.745 [DEBUG] [Thread-120978] [transport.py] [_log()] server lang: <none>
2025-11-03T19:03:32.745 [DEBUG] [Thread-120978] [transport.py] [_log()] kex follows: False
2025-11-03T19:03:32.745 [DEBUG] [Thread-120978] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:03:32.745 [DEBUG] [Thread-120978] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:03:32.745 [DEBUG] [Thread-120978] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:03:32.745 [DEBUG] [Thread-120978] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:03:32.745 [DEBUG] [Thread-120978] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:03:32.745 [DEBUG] [Thread-120978] [transport.py] [_log()] Compression: none
2025-11-03T19:03:32.745 [DEBUG] [Thread-120978] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:03:32.803 [DEBUG] [Thread-120978] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:03:32.803 [DEBUG] [Thread-120978] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:03:32.803 [DEBUG] [Thread-120978] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:03:32.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:03:32.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:03:32.860 [DEBUG] [Thread-120978] [transport.py] [_log()] userauth is OK
2025-11-03T19:03:32.860 [DEBUG] [Thread-120978] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:03:32.860 [DEBUG] [Thread-120978] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:03:32.860 [DEBUG] [Thread-120978] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:03:32.860 [DEBUG] [Thread-120978] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:03:32.874 [INFO] [Thread-120978] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:03:32.875 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:03:32.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:03:33.677 [DEBUG] [Thread-120978] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:03:33.677 [DEBUG] [Thread-120978] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:03:33.725 [DEBUG] [Thread-120978] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:03:33.726 [DEBUG] [Thread-120978] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:03:33.734 [DEBUG] [Thread-120978] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:03:33.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:03:33.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:03:33.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:03:33.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:03:33.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:03:33.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:03:33.767 [DEBUG] [Thread-120978] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:03:38.092 [DEBUG] [Thread-120980 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:03:44.083 [DEBUG] [Thread-120981 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:03:53.154 [DEBUG] [Thread-120982 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:03:56.859 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:03:56.860 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:04:03.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:04:03.788 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:04:03.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:04:04.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 3, 28), 41.96, 4.98, 0.0, 23.31, 22.35, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:04:04.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:03:28
2025-11-03T19:04:04.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:04:04.847 [DEBUG] [Thread-120983] [transport.py] [_log()] starting thread (client mode): 0x1174ee60
2025-11-03T19:04:04.848 [DEBUG] [Thread-120983] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:04:04.870 [DEBUG] [Thread-120983] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:04:04.870 [INFO] [Thread-120983] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:04:04.874 [DEBUG] [Thread-120983] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:04:04.874 [DEBUG] [Thread-120983] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:04:04.874 [DEBUG] [Thread-120983] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:04:04.874 [DEBUG] [Thread-120983] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:04:04.874 [DEBUG] [Thread-120983] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:04:04.874 [DEBUG] [Thread-120983] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:04:04.875 [DEBUG] [Thread-120983] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:04:04.875 [DEBUG] [Thread-120983] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:04:04.875 [DEBUG] [Thread-120983] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:04:04.875 [DEBUG] [Thread-120983] [transport.py] [_log()] client lang: <none>
2025-11-03T19:04:04.875 [DEBUG] [Thread-120983] [transport.py] [_log()] server lang: <none>
2025-11-03T19:04:04.875 [DEBUG] [Thread-120983] [transport.py] [_log()] kex follows: False
2025-11-03T19:04:04.875 [DEBUG] [Thread-120983] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:04:04.875 [DEBUG] [Thread-120983] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:04:04.875 [DEBUG] [Thread-120983] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:04:04.875 [DEBUG] [Thread-120983] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:04:04.876 [DEBUG] [Thread-120983] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:04:04.876 [DEBUG] [Thread-120983] [transport.py] [_log()] Compression: none
2025-11-03T19:04:04.876 [DEBUG] [Thread-120983] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:04:04.894 [DEBUG] [Thread-120983] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:04:04.895 [DEBUG] [Thread-120983] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:04:04.896 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:04:04.896 [DEBUG] [Thread-120983] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:04:04.897 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:04:04.898 [DEBUG] [Thread-120983] [transport.py] [_log()] userauth is OK
2025-11-03T19:04:04.898 [DEBUG] [Thread-120983] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:04:04.898 [DEBUG] [Thread-120983] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:04:04.898 [DEBUG] [Thread-120983] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:04:04.899 [DEBUG] [Thread-120983] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:04:04.923 [INFO] [Thread-120983] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:04:04.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:04:05.565 [DEBUG] [Thread-120983] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:04:05.565 [DEBUG] [Thread-120983] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:04:05.566 [DEBUG] [Thread-120983] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:04:05.606 [DEBUG] [Thread-120983] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:04:05.606 [DEBUG] [Thread-120983] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:04:05.609 [DEBUG] [Thread-120983] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:04:05.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:04:05.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:04:05.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:04:05.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:04:05.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:04:05.628 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:04:05.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:04:05.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:04:05.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:04:05.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.710518 -999.00  +22.30  35.93      9  -11.20 1 1 2 1 1   877    0 32.01 -71.63 ----- 35.9 35.9 298.0 40.8 22.9 -31.4 22.8 -30.2 22.6 -30.3 22.9 -31.1
2025-11-03T19:04:05.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:04:05.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:04:05.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.710518
2025-11-03T19:04:05.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:04:05.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:04:05.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:04:05.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:04:05.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:04:05.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:03:28', tmtdew=41.96, humidity=4.98, cloud=0.0, wind=23.31, temperature=22.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:03:08.755', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:04:05.631 [DEBUG] [Thread-120983] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:04:05.728 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:04:05.739 [DEBUG] [Thread-120986] [transport.py] [_log()] starting thread (client mode): 0x11763dc0
2025-11-03T19:04:05.739 [DEBUG] [Thread-120986] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:04:05.753 [DEBUG] [Thread-120986] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:04:05.753 [INFO] [Thread-120986] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:04:05.761 [DEBUG] [Thread-120986] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:04:05.761 [DEBUG] [Thread-120986] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:04:05.761 [DEBUG] [Thread-120986] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:04:05.761 [DEBUG] [Thread-120986] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:04:05.761 [DEBUG] [Thread-120986] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:04:05.761 [DEBUG] [Thread-120986] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:04:05.761 [DEBUG] [Thread-120986] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:04:05.761 [DEBUG] [Thread-120986] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:04:05.761 [DEBUG] [Thread-120986] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:04:05.761 [DEBUG] [Thread-120986] [transport.py] [_log()] client lang: <none>
2025-11-03T19:04:05.761 [DEBUG] [Thread-120986] [transport.py] [_log()] server lang: <none>
2025-11-03T19:04:05.761 [DEBUG] [Thread-120986] [transport.py] [_log()] kex follows: False
2025-11-03T19:04:05.761 [DEBUG] [Thread-120986] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:04:05.761 [DEBUG] [Thread-120986] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:04:05.762 [DEBUG] [Thread-120986] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:04:05.762 [DEBUG] [Thread-120986] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:04:05.762 [DEBUG] [Thread-120986] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:04:05.762 [DEBUG] [Thread-120986] [transport.py] [_log()] Compression: none
2025-11-03T19:04:05.762 [DEBUG] [Thread-120986] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:04:05.821 [DEBUG] [Thread-120986] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:04:05.822 [DEBUG] [Thread-120986] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:04:05.822 [DEBUG] [Thread-120986] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:04:05.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:04:05.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:04:05.878 [DEBUG] [Thread-120986] [transport.py] [_log()] userauth is OK
2025-11-03T19:04:05.878 [DEBUG] [Thread-120986] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:04:05.879 [DEBUG] [Thread-120986] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:04:05.879 [DEBUG] [Thread-120986] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:04:05.879 [DEBUG] [Thread-120986] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:04:05.898 [INFO] [Thread-120986] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:04:05.898 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:04:05.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:04:06.741 [DEBUG] [Thread-120986] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:04:06.741 [DEBUG] [Thread-120986] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:04:06.794 [DEBUG] [Thread-120986] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:04:06.794 [DEBUG] [Thread-120986] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:04:06.804 [DEBUG] [Thread-120986] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:04:06.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:04:06.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:04:06.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:04:06.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:04:06.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:04:06.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:04:06.845 [DEBUG] [Thread-120986] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:04:08.199 [DEBUG] [Thread-120988 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:04:23.272 [DEBUG] [Thread-120989 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:04:36.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:04:36.856 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:04:36.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:04:37.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 4, 33), 42.02, 4.93, 0.0, 29.87, 22.26, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:04:37.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:04:33
2025-11-03T19:04:37.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:04:37.886 [DEBUG] [Thread-120990] [transport.py] [_log()] starting thread (client mode): 0x11762b60
2025-11-03T19:04:37.886 [DEBUG] [Thread-120990] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:04:37.906 [DEBUG] [Thread-120990] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:04:37.907 [INFO] [Thread-120990] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:04:37.909 [DEBUG] [Thread-120990] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:04:37.910 [DEBUG] [Thread-120990] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:04:37.910 [DEBUG] [Thread-120990] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:04:37.910 [DEBUG] [Thread-120990] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:04:37.910 [DEBUG] [Thread-120990] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:04:37.910 [DEBUG] [Thread-120990] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:04:37.910 [DEBUG] [Thread-120990] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:04:37.910 [DEBUG] [Thread-120990] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:04:37.910 [DEBUG] [Thread-120990] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:04:37.910 [DEBUG] [Thread-120990] [transport.py] [_log()] client lang: <none>
2025-11-03T19:04:37.910 [DEBUG] [Thread-120990] [transport.py] [_log()] server lang: <none>
2025-11-03T19:04:37.910 [DEBUG] [Thread-120990] [transport.py] [_log()] kex follows: False
2025-11-03T19:04:37.910 [DEBUG] [Thread-120990] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:04:37.910 [DEBUG] [Thread-120990] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:04:37.910 [DEBUG] [Thread-120990] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:04:37.910 [DEBUG] [Thread-120990] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:04:37.910 [DEBUG] [Thread-120990] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:04:37.910 [DEBUG] [Thread-120990] [transport.py] [_log()] Compression: none
2025-11-03T19:04:37.910 [DEBUG] [Thread-120990] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:04:37.928 [DEBUG] [Thread-120990] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:04:37.929 [DEBUG] [Thread-120990] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:04:37.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:04:37.930 [DEBUG] [Thread-120990] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:04:37.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:04:37.932 [DEBUG] [Thread-120990] [transport.py] [_log()] userauth is OK
2025-11-03T19:04:37.932 [DEBUG] [Thread-120990] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:04:37.933 [DEBUG] [Thread-120990] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:04:37.933 [DEBUG] [Thread-120990] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:04:37.933 [DEBUG] [Thread-120990] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:04:37.968 [INFO] [Thread-120990] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:04:37.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:04:38.313 [DEBUG] [Thread-120992 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:04:38.565 [DEBUG] [Thread-120990] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:04:38.566 [DEBUG] [Thread-120990] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:04:38.566 [DEBUG] [Thread-120990] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:04:38.606 [DEBUG] [Thread-120990] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:04:38.606 [DEBUG] [Thread-120990] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:04:38.609 [DEBUG] [Thread-120990] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:04:38.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:04:38.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:04:38.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:04:38.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:04:38.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:04:38.635 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:04:38.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:04:38.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:04:38.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:04:38.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.711213 -999.00  +22.30  24.90      9  -11.20 1 1 1 1 1   875    0 31.69 -63.25 ----- 24.9 24.9 294.2 33.7 22.8 -31.4 22.7 -30.3 22.5 -30.4 22.7 -31.0
2025-11-03T19:04:38.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:04:38.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:04:38.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.711213
2025-11-03T19:04:38.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:04:38.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:04:38.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:04:38.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:04:38.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:04:38.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:04:33', tmtdew=42.02, humidity=4.93, cloud=0.0, wind=29.87, temperature=22.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:04:08.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:04:38.638 [DEBUG] [Thread-120990] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:04:38.720 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:04:38.734 [DEBUG] [Thread-120994] [transport.py] [_log()] starting thread (client mode): 0xed21000
2025-11-03T19:04:38.734 [DEBUG] [Thread-120994] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:04:38.750 [DEBUG] [Thread-120994] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:04:38.750 [INFO] [Thread-120994] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:04:38.759 [DEBUG] [Thread-120994] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:04:38.760 [DEBUG] [Thread-120994] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:04:38.760 [DEBUG] [Thread-120994] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:04:38.760 [DEBUG] [Thread-120994] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:04:38.760 [DEBUG] [Thread-120994] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:04:38.760 [DEBUG] [Thread-120994] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:04:38.760 [DEBUG] [Thread-120994] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:04:38.760 [DEBUG] [Thread-120994] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:04:38.760 [DEBUG] [Thread-120994] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:04:38.760 [DEBUG] [Thread-120994] [transport.py] [_log()] client lang: <none>
2025-11-03T19:04:38.760 [DEBUG] [Thread-120994] [transport.py] [_log()] server lang: <none>
2025-11-03T19:04:38.760 [DEBUG] [Thread-120994] [transport.py] [_log()] kex follows: False
2025-11-03T19:04:38.760 [DEBUG] [Thread-120994] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:04:38.760 [DEBUG] [Thread-120994] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:04:38.760 [DEBUG] [Thread-120994] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:04:38.760 [DEBUG] [Thread-120994] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:04:38.760 [DEBUG] [Thread-120994] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:04:38.760 [DEBUG] [Thread-120994] [transport.py] [_log()] Compression: none
2025-11-03T19:04:38.760 [DEBUG] [Thread-120994] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:04:38.817 [DEBUG] [Thread-120994] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:04:38.817 [DEBUG] [Thread-120994] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:04:38.817 [DEBUG] [Thread-120994] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:04:38.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:04:38.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:04:38.873 [DEBUG] [Thread-120994] [transport.py] [_log()] userauth is OK
2025-11-03T19:04:38.873 [DEBUG] [Thread-120994] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:04:38.873 [DEBUG] [Thread-120994] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:04:38.873 [DEBUG] [Thread-120994] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:04:38.873 [DEBUG] [Thread-120994] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:04:38.887 [INFO] [Thread-120994] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:04:38.887 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:04:38.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:04:39.712 [DEBUG] [Thread-120994] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:04:39.713 [DEBUG] [Thread-120994] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:04:39.761 [DEBUG] [Thread-120994] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:04:39.761 [DEBUG] [Thread-120994] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:04:39.771 [DEBUG] [Thread-120994] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:04:39.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:04:39.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:04:39.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:04:39.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:04:39.799 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:04:39.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:04:39.808 [DEBUG] [Thread-120994] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:04:44.166 [DEBUG] [Thread-120996 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:04:53.346 [DEBUG] [Thread-120997 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:05:02.398 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:05:02.399 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:05:08.386 [DEBUG] [Thread-120998 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:05:09.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:05:09.806 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:05:09.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:05:10.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 5, 5), 41.95, 4.97, 0.0, 27.95, 22.3, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:05:10.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:05:05
2025-11-03T19:05:10.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:05:10.837 [DEBUG] [Thread-120999] [transport.py] [_log()] starting thread (client mode): 0x11760f70
2025-11-03T19:05:10.837 [DEBUG] [Thread-120999] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:05:10.858 [DEBUG] [Thread-120999] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:05:10.858 [INFO] [Thread-120999] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:05:10.861 [DEBUG] [Thread-120999] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:05:10.861 [DEBUG] [Thread-120999] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:05:10.861 [DEBUG] [Thread-120999] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:05:10.861 [DEBUG] [Thread-120999] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:05:10.861 [DEBUG] [Thread-120999] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:05:10.862 [DEBUG] [Thread-120999] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:05:10.862 [DEBUG] [Thread-120999] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:05:10.862 [DEBUG] [Thread-120999] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:05:10.862 [DEBUG] [Thread-120999] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:05:10.862 [DEBUG] [Thread-120999] [transport.py] [_log()] client lang: <none>
2025-11-03T19:05:10.862 [DEBUG] [Thread-120999] [transport.py] [_log()] server lang: <none>
2025-11-03T19:05:10.862 [DEBUG] [Thread-120999] [transport.py] [_log()] kex follows: False
2025-11-03T19:05:10.862 [DEBUG] [Thread-120999] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:05:10.862 [DEBUG] [Thread-120999] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:05:10.862 [DEBUG] [Thread-120999] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:05:10.862 [DEBUG] [Thread-120999] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:05:10.862 [DEBUG] [Thread-120999] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:05:10.862 [DEBUG] [Thread-120999] [transport.py] [_log()] Compression: none
2025-11-03T19:05:10.862 [DEBUG] [Thread-120999] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:05:10.888 [DEBUG] [Thread-120999] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:05:10.889 [DEBUG] [Thread-120999] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:05:10.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:05:10.890 [DEBUG] [Thread-120999] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:05:10.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:05:10.892 [DEBUG] [Thread-120999] [transport.py] [_log()] userauth is OK
2025-11-03T19:05:10.892 [DEBUG] [Thread-120999] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:05:10.892 [DEBUG] [Thread-120999] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:05:10.892 [DEBUG] [Thread-120999] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:05:10.892 [DEBUG] [Thread-120999] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:05:10.927 [INFO] [Thread-120999] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:05:10.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:05:12.597 [DEBUG] [Thread-120999] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:05:12.597 [DEBUG] [Thread-120999] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:05:12.597 [DEBUG] [Thread-120999] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:05:12.639 [DEBUG] [Thread-120999] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:05:12.639 [DEBUG] [Thread-120999] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:05:12.643 [DEBUG] [Thread-120999] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:05:12.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:05:12.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:05:12.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:05:12.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:05:12.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:05:12.667 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:05:12.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:05:12.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:05:12.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:05:12.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.711560 -999.00  +22.30  27.75      9  -11.20 1 1 1 1 1   873    0 31.85 -74.41 ----- 27.8 27.8 295.8 35.9 22.7 -31.3 22.7 -30.3 22.5 -30.2 22.7 -31.1
2025-11-03T19:05:12.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:05:12.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:05:12.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.711560
2025-11-03T19:05:12.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:05:12.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:05:12.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:05:12.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:05:12.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:05:12.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:05:05', tmtdew=41.95, humidity=4.97, cloud=0.0, wind=27.95, temperature=22.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:04:38.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:05:12.671 [DEBUG] [Thread-120999] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:05:12.748 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:05:12.761 [DEBUG] [Thread-121002] [transport.py] [_log()] starting thread (client mode): 0xed89d80
2025-11-03T19:05:12.761 [DEBUG] [Thread-121002] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:05:12.776 [DEBUG] [Thread-121002] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:05:12.777 [INFO] [Thread-121002] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:05:12.784 [DEBUG] [Thread-121002] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:05:12.785 [DEBUG] [Thread-121002] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:05:12.785 [DEBUG] [Thread-121002] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:05:12.785 [DEBUG] [Thread-121002] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:05:12.785 [DEBUG] [Thread-121002] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:05:12.785 [DEBUG] [Thread-121002] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:05:12.785 [DEBUG] [Thread-121002] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:05:12.785 [DEBUG] [Thread-121002] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:05:12.785 [DEBUG] [Thread-121002] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:05:12.785 [DEBUG] [Thread-121002] [transport.py] [_log()] client lang: <none>
2025-11-03T19:05:12.785 [DEBUG] [Thread-121002] [transport.py] [_log()] server lang: <none>
2025-11-03T19:05:12.785 [DEBUG] [Thread-121002] [transport.py] [_log()] kex follows: False
2025-11-03T19:05:12.785 [DEBUG] [Thread-121002] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:05:12.785 [DEBUG] [Thread-121002] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:05:12.785 [DEBUG] [Thread-121002] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:05:12.785 [DEBUG] [Thread-121002] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:05:12.785 [DEBUG] [Thread-121002] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:05:12.785 [DEBUG] [Thread-121002] [transport.py] [_log()] Compression: none
2025-11-03T19:05:12.785 [DEBUG] [Thread-121002] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:05:12.842 [DEBUG] [Thread-121002] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:05:12.842 [DEBUG] [Thread-121002] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:05:12.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:05:12.844 [DEBUG] [Thread-121002] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:05:12.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:05:12.898 [DEBUG] [Thread-121002] [transport.py] [_log()] userauth is OK
2025-11-03T19:05:12.899 [DEBUG] [Thread-121002] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:05:12.899 [DEBUG] [Thread-121002] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:05:12.899 [DEBUG] [Thread-121002] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:05:12.899 [DEBUG] [Thread-121002] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:05:12.920 [INFO] [Thread-121002] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:05:12.930 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:05:12.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:05:13.734 [DEBUG] [Thread-121002] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:05:13.734 [DEBUG] [Thread-121002] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:05:13.781 [DEBUG] [Thread-121002] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:05:13.781 [DEBUG] [Thread-121002] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:05:13.790 [DEBUG] [Thread-121002] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:05:13.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:05:13.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:05:13.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:05:13.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:05:13.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:05:13.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:05:13.824 [DEBUG] [Thread-121002] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:05:23.417 [DEBUG] [Thread-121004 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:05:38.469 [DEBUG] [Thread-121005 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:05:43.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:05:43.818 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:05:43.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:05:44.312 [DEBUG] [Thread-121006 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:05:44.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 5, 38), 41.94, 4.97, 0.0, 25.35, 22.2, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:05:44.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:05:38
2025-11-03T19:05:44.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:05:44.858 [DEBUG] [Thread-121007] [transport.py] [_log()] starting thread (client mode): 0xed22830
2025-11-03T19:05:44.858 [DEBUG] [Thread-121007] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:05:44.876 [DEBUG] [Thread-121007] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:05:44.876 [INFO] [Thread-121007] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:05:44.879 [DEBUG] [Thread-121007] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:05:44.880 [DEBUG] [Thread-121007] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:05:44.880 [DEBUG] [Thread-121007] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:05:44.880 [DEBUG] [Thread-121007] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:05:44.880 [DEBUG] [Thread-121007] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:05:44.880 [DEBUG] [Thread-121007] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:05:44.880 [DEBUG] [Thread-121007] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:05:44.880 [DEBUG] [Thread-121007] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:05:44.880 [DEBUG] [Thread-121007] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:05:44.880 [DEBUG] [Thread-121007] [transport.py] [_log()] client lang: <none>
2025-11-03T19:05:44.880 [DEBUG] [Thread-121007] [transport.py] [_log()] server lang: <none>
2025-11-03T19:05:44.880 [DEBUG] [Thread-121007] [transport.py] [_log()] kex follows: False
2025-11-03T19:05:44.880 [DEBUG] [Thread-121007] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:05:44.881 [DEBUG] [Thread-121007] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:05:44.881 [DEBUG] [Thread-121007] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:05:44.881 [DEBUG] [Thread-121007] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:05:44.881 [DEBUG] [Thread-121007] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:05:44.881 [DEBUG] [Thread-121007] [transport.py] [_log()] Compression: none
2025-11-03T19:05:44.881 [DEBUG] [Thread-121007] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:05:44.902 [DEBUG] [Thread-121007] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:05:44.903 [DEBUG] [Thread-121007] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:05:44.904 [DEBUG] [Thread-121007] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:05:44.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:05:44.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:05:44.906 [DEBUG] [Thread-121007] [transport.py] [_log()] userauth is OK
2025-11-03T19:05:44.906 [DEBUG] [Thread-121007] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:05:44.906 [DEBUG] [Thread-121007] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:05:44.906 [DEBUG] [Thread-121007] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:05:44.906 [DEBUG] [Thread-121007] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:05:44.930 [INFO] [Thread-121007] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:05:44.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:05:45.703 [DEBUG] [Thread-121007] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:05:45.703 [DEBUG] [Thread-121007] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:05:45.703 [DEBUG] [Thread-121007] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:05:45.744 [DEBUG] [Thread-121007] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:05:45.744 [DEBUG] [Thread-121007] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:05:45.747 [DEBUG] [Thread-121007] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:05:45.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:05:45.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:05:45.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:05:45.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:05:45.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:05:45.766 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:05:45.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:05:45.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:05:45.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:05:45.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.711907 -999.00  +22.20  21.34      9  -11.30 1 1 1 1 1   872    0 31.83 -67.27 ----- 21.3 21.3 292.7 29.2 22.6 -31.3 22.6 -30.1 22.4 -30.2 22.6 -31.0
2025-11-03T19:05:45.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:05:45.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:05:45.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.711907
2025-11-03T19:05:45.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:05:45.769 [DEBUG] [Thread-121007] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:05:45.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:05:45.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:05:45.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:05:45.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:05:45.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:05:38', tmtdew=41.94, humidity=4.97, cloud=0.0, wind=25.35, temperature=22.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:05:08.765', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:05:45.856 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:05:45.871 [DEBUG] [Thread-121010] [transport.py] [_log()] starting thread (client mode): 0xed20610
2025-11-03T19:05:45.871 [DEBUG] [Thread-121010] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:05:45.886 [DEBUG] [Thread-121010] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:05:45.886 [INFO] [Thread-121010] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:05:45.896 [DEBUG] [Thread-121010] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:05:45.896 [DEBUG] [Thread-121010] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:05:45.896 [DEBUG] [Thread-121010] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:05:45.896 [DEBUG] [Thread-121010] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:05:45.896 [DEBUG] [Thread-121010] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:05:45.896 [DEBUG] [Thread-121010] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:05:45.896 [DEBUG] [Thread-121010] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:05:45.896 [DEBUG] [Thread-121010] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:05:45.896 [DEBUG] [Thread-121010] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:05:45.896 [DEBUG] [Thread-121010] [transport.py] [_log()] client lang: <none>
2025-11-03T19:05:45.896 [DEBUG] [Thread-121010] [transport.py] [_log()] server lang: <none>
2025-11-03T19:05:45.897 [DEBUG] [Thread-121010] [transport.py] [_log()] kex follows: False
2025-11-03T19:05:45.897 [DEBUG] [Thread-121010] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:05:45.897 [DEBUG] [Thread-121010] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:05:45.897 [DEBUG] [Thread-121010] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:05:45.897 [DEBUG] [Thread-121010] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:05:45.897 [DEBUG] [Thread-121010] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:05:45.897 [DEBUG] [Thread-121010] [transport.py] [_log()] Compression: none
2025-11-03T19:05:45.898 [DEBUG] [Thread-121010] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:05:45.955 [DEBUG] [Thread-121010] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:05:45.956 [DEBUG] [Thread-121010] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:05:45.957 [DEBUG] [Thread-121010] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:05:45.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:05:45.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:05:46.014 [DEBUG] [Thread-121010] [transport.py] [_log()] userauth is OK
2025-11-03T19:05:46.015 [DEBUG] [Thread-121010] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:05:46.015 [DEBUG] [Thread-121010] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:05:46.015 [DEBUG] [Thread-121010] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:05:46.015 [DEBUG] [Thread-121010] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:05:46.034 [INFO] [Thread-121010] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:05:46.034 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:05:46.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:05:46.878 [DEBUG] [Thread-121010] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:05:46.879 [DEBUG] [Thread-121010] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:05:46.927 [DEBUG] [Thread-121010] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:05:46.927 [DEBUG] [Thread-121010] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:05:46.935 [DEBUG] [Thread-121010] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:05:46.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:05:46.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:05:46.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:05:46.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:05:46.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:05:46.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:05:46.967 [DEBUG] [Thread-121010] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:05:53.503 [DEBUG] [Thread-121012 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:06:08.557 [DEBUG] [Thread-121013 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:06:09.283 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:06:09.284 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:06:16.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:06:16.990 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:06:16.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:06:17.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 6, 10), 41.98, 4.95, 0.0, 25.58, 22.23, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:06:17.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:06:10
2025-11-03T19:06:17.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:06:18.002 [DEBUG] [Thread-121014] [transport.py] [_log()] starting thread (client mode): 0xedc65c0
2025-11-03T19:06:18.002 [DEBUG] [Thread-121014] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:06:18.021 [DEBUG] [Thread-121014] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:06:18.021 [INFO] [Thread-121014] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:06:18.024 [DEBUG] [Thread-121014] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:06:18.025 [DEBUG] [Thread-121014] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:06:18.025 [DEBUG] [Thread-121014] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:06:18.025 [DEBUG] [Thread-121014] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:06:18.025 [DEBUG] [Thread-121014] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:06:18.025 [DEBUG] [Thread-121014] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:06:18.025 [DEBUG] [Thread-121014] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:06:18.025 [DEBUG] [Thread-121014] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:06:18.025 [DEBUG] [Thread-121014] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:06:18.025 [DEBUG] [Thread-121014] [transport.py] [_log()] client lang: <none>
2025-11-03T19:06:18.025 [DEBUG] [Thread-121014] [transport.py] [_log()] server lang: <none>
2025-11-03T19:06:18.025 [DEBUG] [Thread-121014] [transport.py] [_log()] kex follows: False
2025-11-03T19:06:18.025 [DEBUG] [Thread-121014] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:06:18.025 [DEBUG] [Thread-121014] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:06:18.026 [DEBUG] [Thread-121014] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:06:18.026 [DEBUG] [Thread-121014] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:06:18.026 [DEBUG] [Thread-121014] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:06:18.026 [DEBUG] [Thread-121014] [transport.py] [_log()] Compression: none
2025-11-03T19:06:18.026 [DEBUG] [Thread-121014] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:06:18.045 [DEBUG] [Thread-121014] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:06:18.046 [DEBUG] [Thread-121014] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:06:18.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:06:18.047 [DEBUG] [Thread-121014] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:06:18.048 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:06:18.049 [DEBUG] [Thread-121014] [transport.py] [_log()] userauth is OK
2025-11-03T19:06:18.049 [DEBUG] [Thread-121014] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:06:18.050 [DEBUG] [Thread-121014] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:06:18.050 [DEBUG] [Thread-121014] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:06:18.050 [DEBUG] [Thread-121014] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:06:18.073 [INFO] [Thread-121014] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:06:18.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:06:18.699 [DEBUG] [Thread-121014] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:06:18.699 [DEBUG] [Thread-121014] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:06:18.700 [DEBUG] [Thread-121014] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:06:18.740 [DEBUG] [Thread-121014] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:06:18.740 [DEBUG] [Thread-121014] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:06:18.744 [DEBUG] [Thread-121014] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:06:18.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:06:18.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:06:18.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:06:18.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:06:18.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:06:18.777 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:06:18.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:06:18.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:06:18.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:06:18.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.712254 -999.00  +22.10  18.94      9  -11.40 1 1 1 1 1   870    0 32.04 -65.68 ----- 18.9 18.9 309.4 25.2 22.6 -31.3 22.6 -30.2 22.3 -30.2 22.6 -30.8
2025-11-03T19:06:18.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:06:18.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:06:18.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.712254
2025-11-03T19:06:18.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:06:18.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:06:18.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:06:18.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:06:18.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:06:18.781 [DEBUG] [Thread-121014] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:06:18.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:06:10', tmtdew=41.98, humidity=4.95, cloud=0.0, wind=25.58, temperature=22.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:05:38.746', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:06:18.865 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:06:18.876 [DEBUG] [Thread-121017] [transport.py] [_log()] starting thread (client mode): 0x11760460
2025-11-03T19:06:18.876 [DEBUG] [Thread-121017] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:06:18.893 [DEBUG] [Thread-121017] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:06:18.893 [INFO] [Thread-121017] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:06:18.901 [DEBUG] [Thread-121017] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:06:18.902 [DEBUG] [Thread-121017] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:06:18.902 [DEBUG] [Thread-121017] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:06:18.902 [DEBUG] [Thread-121017] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:06:18.902 [DEBUG] [Thread-121017] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:06:18.902 [DEBUG] [Thread-121017] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:06:18.902 [DEBUG] [Thread-121017] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:06:18.902 [DEBUG] [Thread-121017] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:06:18.902 [DEBUG] [Thread-121017] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:06:18.903 [DEBUG] [Thread-121017] [transport.py] [_log()] client lang: <none>
2025-11-03T19:06:18.903 [DEBUG] [Thread-121017] [transport.py] [_log()] server lang: <none>
2025-11-03T19:06:18.903 [DEBUG] [Thread-121017] [transport.py] [_log()] kex follows: False
2025-11-03T19:06:18.903 [DEBUG] [Thread-121017] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:06:18.903 [DEBUG] [Thread-121017] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:06:18.903 [DEBUG] [Thread-121017] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:06:18.903 [DEBUG] [Thread-121017] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:06:18.904 [DEBUG] [Thread-121017] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:06:18.904 [DEBUG] [Thread-121017] [transport.py] [_log()] Compression: none
2025-11-03T19:06:18.904 [DEBUG] [Thread-121017] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:06:18.959 [DEBUG] [Thread-121017] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:06:18.959 [DEBUG] [Thread-121017] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:06:18.960 [DEBUG] [Thread-121017] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:06:18.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:06:18.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:06:19.015 [DEBUG] [Thread-121017] [transport.py] [_log()] userauth is OK
2025-11-03T19:06:19.015 [DEBUG] [Thread-121017] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:06:19.015 [DEBUG] [Thread-121017] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:06:19.015 [DEBUG] [Thread-121017] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:06:19.015 [DEBUG] [Thread-121017] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:06:19.035 [INFO] [Thread-121017] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:06:19.044 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:06:19.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:06:19.848 [DEBUG] [Thread-121017] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:06:19.848 [DEBUG] [Thread-121017] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:06:19.895 [DEBUG] [Thread-121017] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:06:19.895 [DEBUG] [Thread-121017] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:06:19.903 [DEBUG] [Thread-121017] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:06:19.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:06:19.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:06:19.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:06:19.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:06:19.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:06:19.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:06:19.936 [DEBUG] [Thread-121017] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:06:23.588 [DEBUG] [Thread-121019 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:06:38.641 [DEBUG] [Thread-121020 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:06:44.384 [DEBUG] [Thread-121021 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:06:49.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:06:49.958 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:06:49.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:06:50.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 6, 43), 42.12, 4.88, 0.0, 30.72, 22.17, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:06:50.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:06:43
2025-11-03T19:06:50.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:06:50.976 [DEBUG] [Thread-121022] [transport.py] [_log()] starting thread (client mode): 0x1179b820
2025-11-03T19:06:50.976 [DEBUG] [Thread-121022] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:06:50.997 [DEBUG] [Thread-121022] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:06:50.997 [INFO] [Thread-121022] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:06:50.998 [DEBUG] [Thread-121022] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:06:50.998 [DEBUG] [Thread-121022] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:06:50.998 [DEBUG] [Thread-121022] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:06:50.998 [DEBUG] [Thread-121022] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:06:50.998 [DEBUG] [Thread-121022] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:06:50.998 [DEBUG] [Thread-121022] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:06:50.998 [DEBUG] [Thread-121022] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:06:50.999 [DEBUG] [Thread-121022] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:06:50.999 [DEBUG] [Thread-121022] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:06:50.999 [DEBUG] [Thread-121022] [transport.py] [_log()] client lang: <none>
2025-11-03T19:06:50.999 [DEBUG] [Thread-121022] [transport.py] [_log()] server lang: <none>
2025-11-03T19:06:50.999 [DEBUG] [Thread-121022] [transport.py] [_log()] kex follows: False
2025-11-03T19:06:50.999 [DEBUG] [Thread-121022] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:06:50.999 [DEBUG] [Thread-121022] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:06:50.999 [DEBUG] [Thread-121022] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:06:50.999 [DEBUG] [Thread-121022] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:06:50.999 [DEBUG] [Thread-121022] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:06:50.999 [DEBUG] [Thread-121022] [transport.py] [_log()] Compression: none
2025-11-03T19:06:50.999 [DEBUG] [Thread-121022] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:06:51.015 [DEBUG] [Thread-121022] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:06:51.015 [DEBUG] [Thread-121022] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:06:51.015 [DEBUG] [Thread-121022] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:06:51.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:06:51.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:06:51.016 [DEBUG] [Thread-121022] [transport.py] [_log()] userauth is OK
2025-11-03T19:06:51.016 [DEBUG] [Thread-121022] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:06:51.016 [DEBUG] [Thread-121022] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:06:51.016 [DEBUG] [Thread-121022] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:06:51.016 [DEBUG] [Thread-121022] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:06:51.026 [INFO] [Thread-121022] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:06:51.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:06:51.805 [DEBUG] [Thread-121022] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:06:51.805 [DEBUG] [Thread-121022] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:06:51.805 [DEBUG] [Thread-121022] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:06:51.845 [DEBUG] [Thread-121022] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:06:51.845 [DEBUG] [Thread-121022] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:06:51.848 [DEBUG] [Thread-121022] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:06:51.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:06:51.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:06:51.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:06:51.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:06:51.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:06:51.864 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:06:51.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:06:51.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:06:51.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:06:51.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.712602 -999.00  +22.10  20.35      9  -11.30 1 1 1 1 1   868    0 31.38 -63.46 ----- 20.4 20.4 292.0 30.1 22.6 -31.3 22.5 -30.2 22.3 -30.1 22.5 -30.8
2025-11-03T19:06:51.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:06:51.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:06:51.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.712602
2025-11-03T19:06:51.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:06:51.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:06:51.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:06:51.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:06:51.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:06:51.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:06:43', tmtdew=42.12, humidity=4.88, cloud=0.0, wind=30.72, temperature=22.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:06:08.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:06:51.866 [DEBUG] [Thread-121022] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:06:51.939 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:06:51.949 [DEBUG] [Thread-121025] [transport.py] [_log()] starting thread (client mode): 0x1174cd00
2025-11-03T19:06:51.949 [DEBUG] [Thread-121025] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:06:51.965 [DEBUG] [Thread-121025] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:06:51.965 [INFO] [Thread-121025] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:06:51.973 [DEBUG] [Thread-121025] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:06:51.973 [DEBUG] [Thread-121025] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:06:51.973 [DEBUG] [Thread-121025] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:06:51.973 [DEBUG] [Thread-121025] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:06:51.973 [DEBUG] [Thread-121025] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:06:51.973 [DEBUG] [Thread-121025] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:06:51.973 [DEBUG] [Thread-121025] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:06:51.973 [DEBUG] [Thread-121025] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:06:51.973 [DEBUG] [Thread-121025] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:06:51.973 [DEBUG] [Thread-121025] [transport.py] [_log()] client lang: <none>
2025-11-03T19:06:51.973 [DEBUG] [Thread-121025] [transport.py] [_log()] server lang: <none>
2025-11-03T19:06:51.973 [DEBUG] [Thread-121025] [transport.py] [_log()] kex follows: False
2025-11-03T19:06:51.973 [DEBUG] [Thread-121025] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:06:51.973 [DEBUG] [Thread-121025] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:06:51.973 [DEBUG] [Thread-121025] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:06:51.973 [DEBUG] [Thread-121025] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:06:51.973 [DEBUG] [Thread-121025] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:06:51.973 [DEBUG] [Thread-121025] [transport.py] [_log()] Compression: none
2025-11-03T19:06:51.973 [DEBUG] [Thread-121025] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:06:52.032 [DEBUG] [Thread-121025] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:06:52.032 [DEBUG] [Thread-121025] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:06:52.032 [DEBUG] [Thread-121025] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:06:52.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:06:52.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:06:52.089 [DEBUG] [Thread-121025] [transport.py] [_log()] userauth is OK
2025-11-03T19:06:52.089 [DEBUG] [Thread-121025] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:06:52.089 [DEBUG] [Thread-121025] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:06:52.089 [DEBUG] [Thread-121025] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:06:52.089 [DEBUG] [Thread-121025] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:06:52.103 [INFO] [Thread-121025] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:06:52.103 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:06:52.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:06:52.943 [DEBUG] [Thread-121025] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:06:52.943 [DEBUG] [Thread-121025] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:06:52.992 [DEBUG] [Thread-121025] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:06:52.992 [DEBUG] [Thread-121025] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:06:53.001 [DEBUG] [Thread-121025] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:06:53.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:06:53.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:06:53.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:06:53.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:06:53.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:06:53.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:06:53.037 [DEBUG] [Thread-121025] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:06:53.681 [DEBUG] [Thread-121027 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:07:08.716 [DEBUG] [Thread-121028 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:07:15.579 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:07:15.580 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:07:23.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:07:23.059 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:07:23.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:07:23.748 [DEBUG] [Thread-121029 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:07:23.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 7, 15), 41.94, 4.97, 0.0, 28.71, 22.21, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:07:23.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:07:15
2025-11-03T19:07:23.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:07:24.104 [DEBUG] [Thread-121030] [transport.py] [_log()] starting thread (client mode): 0x117eb790
2025-11-03T19:07:24.104 [DEBUG] [Thread-121030] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:07:24.125 [DEBUG] [Thread-121030] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:07:24.125 [INFO] [Thread-121030] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:07:24.129 [DEBUG] [Thread-121030] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:07:24.129 [DEBUG] [Thread-121030] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:07:24.129 [DEBUG] [Thread-121030] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:07:24.129 [DEBUG] [Thread-121030] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:07:24.129 [DEBUG] [Thread-121030] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:07:24.129 [DEBUG] [Thread-121030] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:07:24.129 [DEBUG] [Thread-121030] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:07:24.129 [DEBUG] [Thread-121030] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:07:24.129 [DEBUG] [Thread-121030] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:07:24.129 [DEBUG] [Thread-121030] [transport.py] [_log()] client lang: <none>
2025-11-03T19:07:24.130 [DEBUG] [Thread-121030] [transport.py] [_log()] server lang: <none>
2025-11-03T19:07:24.130 [DEBUG] [Thread-121030] [transport.py] [_log()] kex follows: False
2025-11-03T19:07:24.130 [DEBUG] [Thread-121030] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:07:24.130 [DEBUG] [Thread-121030] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:07:24.130 [DEBUG] [Thread-121030] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:07:24.130 [DEBUG] [Thread-121030] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:07:24.130 [DEBUG] [Thread-121030] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:07:24.130 [DEBUG] [Thread-121030] [transport.py] [_log()] Compression: none
2025-11-03T19:07:24.130 [DEBUG] [Thread-121030] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:07:24.147 [DEBUG] [Thread-121030] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:07:24.147 [DEBUG] [Thread-121030] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:07:24.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:07:24.148 [DEBUG] [Thread-121030] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:07:24.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:07:24.150 [DEBUG] [Thread-121030] [transport.py] [_log()] userauth is OK
2025-11-03T19:07:24.151 [DEBUG] [Thread-121030] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:07:24.151 [DEBUG] [Thread-121030] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:07:24.151 [DEBUG] [Thread-121030] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:07:24.151 [DEBUG] [Thread-121030] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:07:24.175 [INFO] [Thread-121030] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:07:24.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:07:24.836 [DEBUG] [Thread-121030] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:07:24.837 [DEBUG] [Thread-121030] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:07:24.837 [DEBUG] [Thread-121030] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:07:24.878 [DEBUG] [Thread-121030] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:07:24.878 [DEBUG] [Thread-121030] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:07:24.882 [DEBUG] [Thread-121030] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:07:24.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:07:24.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:07:24.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:07:24.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:07:24.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:07:24.913 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:07:24.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:07:24.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:07:24.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:07:24.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.712949 -999.00  +22.00  25.13      9  -11.30 1 1 1 1 1   867    0 32.00 -64.85 ----- 25.1 25.1 302.4 35.3 22.5 -31.2 22.5 -30.2 22.2 -30.0 22.5 -30.9
2025-11-03T19:07:24.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:07:24.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:07:24.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.712949
2025-11-03T19:07:24.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:07:24.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:07:24.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:07:24.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:07:24.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:07:24.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:07:15', tmtdew=41.94, humidity=4.97, cloud=0.0, wind=28.71, temperature=22.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:06:38.794', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:07:24.917 [DEBUG] [Thread-121030] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:07:25.000 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:07:25.011 [DEBUG] [Thread-121033] [transport.py] [_log()] starting thread (client mode): 0xed886a0
2025-11-03T19:07:25.012 [DEBUG] [Thread-121033] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:07:25.029 [DEBUG] [Thread-121033] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:07:25.029 [INFO] [Thread-121033] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:07:25.037 [DEBUG] [Thread-121033] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:07:25.037 [DEBUG] [Thread-121033] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:07:25.037 [DEBUG] [Thread-121033] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:07:25.037 [DEBUG] [Thread-121033] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:07:25.037 [DEBUG] [Thread-121033] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:07:25.038 [DEBUG] [Thread-121033] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:07:25.038 [DEBUG] [Thread-121033] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:07:25.038 [DEBUG] [Thread-121033] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:07:25.038 [DEBUG] [Thread-121033] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:07:25.038 [DEBUG] [Thread-121033] [transport.py] [_log()] client lang: <none>
2025-11-03T19:07:25.038 [DEBUG] [Thread-121033] [transport.py] [_log()] server lang: <none>
2025-11-03T19:07:25.038 [DEBUG] [Thread-121033] [transport.py] [_log()] kex follows: False
2025-11-03T19:07:25.038 [DEBUG] [Thread-121033] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:07:25.039 [DEBUG] [Thread-121033] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:07:25.039 [DEBUG] [Thread-121033] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:07:25.039 [DEBUG] [Thread-121033] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:07:25.039 [DEBUG] [Thread-121033] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:07:25.039 [DEBUG] [Thread-121033] [transport.py] [_log()] Compression: none
2025-11-03T19:07:25.039 [DEBUG] [Thread-121033] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:07:25.096 [DEBUG] [Thread-121033] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:07:25.096 [DEBUG] [Thread-121033] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:07:25.097 [DEBUG] [Thread-121033] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:07:25.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:07:25.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:07:25.160 [DEBUG] [Thread-121033] [transport.py] [_log()] userauth is OK
2025-11-03T19:07:25.160 [DEBUG] [Thread-121033] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:07:25.160 [DEBUG] [Thread-121033] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:07:25.160 [DEBUG] [Thread-121033] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:07:25.161 [DEBUG] [Thread-121033] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:07:25.182 [INFO] [Thread-121033] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:07:25.183 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:07:25.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:07:25.967 [DEBUG] [Thread-121033] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:07:25.967 [DEBUG] [Thread-121033] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:07:26.015 [DEBUG] [Thread-121033] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:07:26.015 [DEBUG] [Thread-121033] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:07:26.023 [DEBUG] [Thread-121033] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:07:26.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:07:26.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:07:26.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:07:26.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:07:26.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:07:26.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:07:26.055 [DEBUG] [Thread-121033] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:07:38.779 [DEBUG] [Thread-121035 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:07:44.488 [DEBUG] [Thread-121036 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:07:53.838 [DEBUG] [Thread-121037 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:07:56.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:07:56.066 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:07:56.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:07:56.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 7, 48), 42.08, 4.92, 0.0, 26.54, 22.12, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:07:56.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:07:48
2025-11-03T19:07:56.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:07:57.099 [DEBUG] [Thread-121038] [transport.py] [_log()] starting thread (client mode): 0xed22440
2025-11-03T19:07:57.099 [DEBUG] [Thread-121038] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:07:57.119 [DEBUG] [Thread-121038] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:07:57.119 [INFO] [Thread-121038] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:07:57.121 [DEBUG] [Thread-121038] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:07:57.121 [DEBUG] [Thread-121038] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:07:57.121 [DEBUG] [Thread-121038] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:07:57.121 [DEBUG] [Thread-121038] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:07:57.121 [DEBUG] [Thread-121038] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:07:57.121 [DEBUG] [Thread-121038] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:07:57.121 [DEBUG] [Thread-121038] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:07:57.121 [DEBUG] [Thread-121038] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:07:57.122 [DEBUG] [Thread-121038] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:07:57.122 [DEBUG] [Thread-121038] [transport.py] [_log()] client lang: <none>
2025-11-03T19:07:57.122 [DEBUG] [Thread-121038] [transport.py] [_log()] server lang: <none>
2025-11-03T19:07:57.122 [DEBUG] [Thread-121038] [transport.py] [_log()] kex follows: False
2025-11-03T19:07:57.122 [DEBUG] [Thread-121038] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:07:57.122 [DEBUG] [Thread-121038] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:07:57.122 [DEBUG] [Thread-121038] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:07:57.122 [DEBUG] [Thread-121038] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:07:57.122 [DEBUG] [Thread-121038] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:07:57.122 [DEBUG] [Thread-121038] [transport.py] [_log()] Compression: none
2025-11-03T19:07:57.122 [DEBUG] [Thread-121038] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:07:57.136 [DEBUG] [Thread-121038] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:07:57.137 [DEBUG] [Thread-121038] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:07:57.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:07:57.138 [DEBUG] [Thread-121038] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:07:57.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:07:57.140 [DEBUG] [Thread-121038] [transport.py] [_log()] userauth is OK
2025-11-03T19:07:57.140 [DEBUG] [Thread-121038] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:07:57.140 [DEBUG] [Thread-121038] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:07:57.140 [DEBUG] [Thread-121038] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:07:57.140 [DEBUG] [Thread-121038] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:07:57.159 [INFO] [Thread-121038] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:07:57.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:07:57.962 [DEBUG] [Thread-121038] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:07:57.963 [DEBUG] [Thread-121038] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:07:57.963 [DEBUG] [Thread-121038] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:07:58.004 [DEBUG] [Thread-121038] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:07:58.004 [DEBUG] [Thread-121038] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:07:58.006 [DEBUG] [Thread-121038] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:07:58.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:07:58.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:07:58.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:07:58.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:07:58.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:07:58.025 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:07:58.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:07:58.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:07:58.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:07:58.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.713296 -999.00  +22.10  28.81      9  -11.40 1 1 1 1 1   864    0 31.79 -61.34 ----- 28.8 28.8 294.2 35.9 22.5 -31.1 22.4 -30.1 22.1 -30.0 22.4 -30.8
2025-11-03T19:07:58.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:07:58.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:07:58.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.713296
2025-11-03T19:07:58.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:07:58.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:07:58.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:07:58.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:07:58.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:07:58.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:07:48', tmtdew=42.08, humidity=4.92, cloud=0.0, wind=26.54, temperature=22.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:07:08.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:07:58.026 [DEBUG] [Thread-121038] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:07:58.097 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:07:58.109 [DEBUG] [Thread-121041] [transport.py] [_log()] starting thread (client mode): 0xed22da0
2025-11-03T19:07:58.109 [DEBUG] [Thread-121041] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:07:58.124 [DEBUG] [Thread-121041] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:07:58.124 [INFO] [Thread-121041] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:07:58.131 [DEBUG] [Thread-121041] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:07:58.132 [DEBUG] [Thread-121041] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:07:58.132 [DEBUG] [Thread-121041] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:07:58.132 [DEBUG] [Thread-121041] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:07:58.132 [DEBUG] [Thread-121041] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:07:58.132 [DEBUG] [Thread-121041] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:07:58.132 [DEBUG] [Thread-121041] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:07:58.132 [DEBUG] [Thread-121041] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:07:58.132 [DEBUG] [Thread-121041] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:07:58.132 [DEBUG] [Thread-121041] [transport.py] [_log()] client lang: <none>
2025-11-03T19:07:58.132 [DEBUG] [Thread-121041] [transport.py] [_log()] server lang: <none>
2025-11-03T19:07:58.132 [DEBUG] [Thread-121041] [transport.py] [_log()] kex follows: False
2025-11-03T19:07:58.132 [DEBUG] [Thread-121041] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:07:58.132 [DEBUG] [Thread-121041] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:07:58.132 [DEBUG] [Thread-121041] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:07:58.132 [DEBUG] [Thread-121041] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:07:58.132 [DEBUG] [Thread-121041] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:07:58.132 [DEBUG] [Thread-121041] [transport.py] [_log()] Compression: none
2025-11-03T19:07:58.132 [DEBUG] [Thread-121041] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:07:58.187 [DEBUG] [Thread-121041] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:07:58.187 [DEBUG] [Thread-121041] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:07:58.187 [DEBUG] [Thread-121041] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:07:58.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:07:58.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:07:58.245 [DEBUG] [Thread-121041] [transport.py] [_log()] userauth is OK
2025-11-03T19:07:58.245 [DEBUG] [Thread-121041] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:07:58.245 [DEBUG] [Thread-121041] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:07:58.245 [DEBUG] [Thread-121041] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:07:58.245 [DEBUG] [Thread-121041] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:07:58.264 [INFO] [Thread-121041] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:07:58.264 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:07:58.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:07:59.093 [DEBUG] [Thread-121041] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:07:59.093 [DEBUG] [Thread-121041] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:07:59.141 [DEBUG] [Thread-121041] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:07:59.141 [DEBUG] [Thread-121041] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:07:59.150 [DEBUG] [Thread-121041] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:07:59.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:07:59.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:07:59.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:07:59.178 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:07:59.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:07:59.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:07:59.187 [DEBUG] [Thread-121041] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:08:08.872 [DEBUG] [Thread-121043 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:08:21.543 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:08:21.544 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:08:23.910 [DEBUG] [Thread-121044 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:08:29.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:08:29.207 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:08:29.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:08:29.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 8, 20), 42.11, 4.9, 0.0, 27.4, 22.08, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:08:29.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:08:20
2025-11-03T19:08:30.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:08:30.259 [DEBUG] [Thread-121045] [transport.py] [_log()] starting thread (client mode): 0xed239a0
2025-11-03T19:08:30.260 [DEBUG] [Thread-121045] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:08:30.279 [DEBUG] [Thread-121045] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:08:30.279 [INFO] [Thread-121045] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:08:30.282 [DEBUG] [Thread-121045] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:08:30.283 [DEBUG] [Thread-121045] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:08:30.283 [DEBUG] [Thread-121045] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:08:30.283 [DEBUG] [Thread-121045] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:08:30.283 [DEBUG] [Thread-121045] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:08:30.283 [DEBUG] [Thread-121045] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:08:30.283 [DEBUG] [Thread-121045] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:08:30.283 [DEBUG] [Thread-121045] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:08:30.283 [DEBUG] [Thread-121045] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:08:30.283 [DEBUG] [Thread-121045] [transport.py] [_log()] client lang: <none>
2025-11-03T19:08:30.283 [DEBUG] [Thread-121045] [transport.py] [_log()] server lang: <none>
2025-11-03T19:08:30.283 [DEBUG] [Thread-121045] [transport.py] [_log()] kex follows: False
2025-11-03T19:08:30.283 [DEBUG] [Thread-121045] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:08:30.283 [DEBUG] [Thread-121045] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:08:30.283 [DEBUG] [Thread-121045] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:08:30.283 [DEBUG] [Thread-121045] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:08:30.283 [DEBUG] [Thread-121045] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:08:30.283 [DEBUG] [Thread-121045] [transport.py] [_log()] Compression: none
2025-11-03T19:08:30.283 [DEBUG] [Thread-121045] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:08:30.298 [DEBUG] [Thread-121045] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:08:30.299 [DEBUG] [Thread-121045] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:08:30.299 [DEBUG] [Thread-121045] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:08:30.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:08:30.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:08:30.301 [DEBUG] [Thread-121045] [transport.py] [_log()] userauth is OK
2025-11-03T19:08:30.302 [DEBUG] [Thread-121045] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:08:30.302 [DEBUG] [Thread-121045] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:08:30.302 [DEBUG] [Thread-121045] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:08:30.302 [DEBUG] [Thread-121045] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:08:30.319 [INFO] [Thread-121045] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:08:30.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:08:30.946 [DEBUG] [Thread-121045] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:08:30.946 [DEBUG] [Thread-121045] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:08:30.947 [DEBUG] [Thread-121045] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:08:30.987 [DEBUG] [Thread-121045] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:08:30.987 [DEBUG] [Thread-121045] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:08:30.991 [DEBUG] [Thread-121045] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:08:31.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:08:31.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:08:31.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:08:31.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:08:31.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:08:31.015 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:08:31.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:08:31.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:08:31.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:08:31.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.713643 -999.00  +22.10  29.08      9  -11.40 1 1 1 1 1   862    0 32.00 -56.90 ----- 29.1 29.1 302.2 33.4 22.5 -31.0 22.4 -30.0 22.2 -30.0 22.4 -30.6
2025-11-03T19:08:31.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:08:31.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:08:31.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.713643
2025-11-03T19:08:31.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:08:31.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:08:31.018 [DEBUG] [Thread-121045] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:08:31.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:08:31.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:08:31.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:08:31.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:08:20', tmtdew=42.11, humidity=4.9, cloud=0.0, wind=27.4, temperature=22.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:07:38.755', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:08:31.101 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:08:31.115 [DEBUG] [Thread-121048] [transport.py] [_log()] starting thread (client mode): 0xed22140
2025-11-03T19:08:31.115 [DEBUG] [Thread-121048] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:08:31.130 [DEBUG] [Thread-121048] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:08:31.130 [INFO] [Thread-121048] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:08:31.138 [DEBUG] [Thread-121048] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:08:31.138 [DEBUG] [Thread-121048] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:08:31.138 [DEBUG] [Thread-121048] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:08:31.138 [DEBUG] [Thread-121048] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:08:31.138 [DEBUG] [Thread-121048] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:08:31.138 [DEBUG] [Thread-121048] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:08:31.138 [DEBUG] [Thread-121048] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:08:31.138 [DEBUG] [Thread-121048] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:08:31.138 [DEBUG] [Thread-121048] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:08:31.138 [DEBUG] [Thread-121048] [transport.py] [_log()] client lang: <none>
2025-11-03T19:08:31.138 [DEBUG] [Thread-121048] [transport.py] [_log()] server lang: <none>
2025-11-03T19:08:31.138 [DEBUG] [Thread-121048] [transport.py] [_log()] kex follows: False
2025-11-03T19:08:31.138 [DEBUG] [Thread-121048] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:08:31.138 [DEBUG] [Thread-121048] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:08:31.138 [DEBUG] [Thread-121048] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:08:31.138 [DEBUG] [Thread-121048] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:08:31.138 [DEBUG] [Thread-121048] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:08:31.138 [DEBUG] [Thread-121048] [transport.py] [_log()] Compression: none
2025-11-03T19:08:31.138 [DEBUG] [Thread-121048] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:08:31.192 [DEBUG] [Thread-121048] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:08:31.192 [DEBUG] [Thread-121048] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:08:31.192 [DEBUG] [Thread-121048] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:08:31.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:08:31.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:08:31.250 [DEBUG] [Thread-121048] [transport.py] [_log()] userauth is OK
2025-11-03T19:08:31.250 [DEBUG] [Thread-121048] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:08:31.250 [DEBUG] [Thread-121048] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:08:31.250 [DEBUG] [Thread-121048] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:08:31.250 [DEBUG] [Thread-121048] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:08:31.263 [INFO] [Thread-121048] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:08:31.263 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:08:31.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:08:32.149 [DEBUG] [Thread-121048] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:08:32.149 [DEBUG] [Thread-121048] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:08:32.197 [DEBUG] [Thread-121048] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:08:32.198 [DEBUG] [Thread-121048] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:08:32.207 [DEBUG] [Thread-121048] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:08:32.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:08:32.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:08:32.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:08:32.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:08:32.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:08:32.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:08:32.244 [DEBUG] [Thread-121048] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:08:38.949 [DEBUG] [Thread-121050 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:08:44.563 [DEBUG] [Thread-121051 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:08:54.006 [DEBUG] [Thread-121052 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:09:02.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:09:02.243 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:09:02.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:09:02.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 8, 52), 42.07, 4.9, 0.0, 31.92, 22.05, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:09:02.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:08:52
2025-11-03T19:09:03.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:09:03.277 [DEBUG] [Thread-121053] [transport.py] [_log()] starting thread (client mode): 0xed8a350
2025-11-03T19:09:03.277 [DEBUG] [Thread-121053] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:09:03.297 [DEBUG] [Thread-121053] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:09:03.297 [INFO] [Thread-121053] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:09:03.300 [DEBUG] [Thread-121053] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:09:03.300 [DEBUG] [Thread-121053] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:09:03.300 [DEBUG] [Thread-121053] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:09:03.300 [DEBUG] [Thread-121053] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:09:03.300 [DEBUG] [Thread-121053] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:09:03.300 [DEBUG] [Thread-121053] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:09:03.300 [DEBUG] [Thread-121053] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:09:03.300 [DEBUG] [Thread-121053] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:09:03.300 [DEBUG] [Thread-121053] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:09:03.300 [DEBUG] [Thread-121053] [transport.py] [_log()] client lang: <none>
2025-11-03T19:09:03.301 [DEBUG] [Thread-121053] [transport.py] [_log()] server lang: <none>
2025-11-03T19:09:03.301 [DEBUG] [Thread-121053] [transport.py] [_log()] kex follows: False
2025-11-03T19:09:03.301 [DEBUG] [Thread-121053] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:09:03.301 [DEBUG] [Thread-121053] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:09:03.301 [DEBUG] [Thread-121053] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:09:03.301 [DEBUG] [Thread-121053] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:09:03.301 [DEBUG] [Thread-121053] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:09:03.301 [DEBUG] [Thread-121053] [transport.py] [_log()] Compression: none
2025-11-03T19:09:03.301 [DEBUG] [Thread-121053] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:09:03.316 [DEBUG] [Thread-121053] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:09:03.317 [DEBUG] [Thread-121053] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:09:03.317 [DEBUG] [Thread-121053] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:09:03.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:09:03.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:09:03.319 [DEBUG] [Thread-121053] [transport.py] [_log()] userauth is OK
2025-11-03T19:09:03.319 [DEBUG] [Thread-121053] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:09:03.320 [DEBUG] [Thread-121053] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:09:03.320 [DEBUG] [Thread-121053] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:09:03.320 [DEBUG] [Thread-121053] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:09:03.340 [INFO] [Thread-121053] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:09:03.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:09:04.131 [DEBUG] [Thread-121053] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:09:04.131 [DEBUG] [Thread-121053] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:09:04.132 [DEBUG] [Thread-121053] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:09:04.173 [DEBUG] [Thread-121053] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:09:04.173 [DEBUG] [Thread-121053] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:09:04.174 [DEBUG] [Thread-121053] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:09:04.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:09:04.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:09:04.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:09:04.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:09:04.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:09:04.190 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:09:04.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:09:04.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:09:04.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:09:04.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.713990 -999.00  +22.10  29.74      9  -11.40 1 1 1 1 1   859    0 31.66 -67.35 ----- 29.7 29.7 292.8 34.2 22.4 -31.0 22.4 -30.0 22.1 -30.0 22.4 -30.6
2025-11-03T19:09:04.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:09:04.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:09:04.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.713990
2025-11-03T19:09:04.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:09:04.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:09:04.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:09:04.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:09:04.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:09:04.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:08:52', tmtdew=42.07, humidity=4.9, cloud=0.0, wind=31.92, temperature=22.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:08:08.736', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:09:04.199 [DEBUG] [Thread-121053] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:09:04.271 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:09:04.283 [DEBUG] [Thread-121056] [transport.py] [_log()] starting thread (client mode): 0xed899c0
2025-11-03T19:09:04.283 [DEBUG] [Thread-121056] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:09:04.298 [DEBUG] [Thread-121056] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:09:04.298 [INFO] [Thread-121056] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:09:04.305 [DEBUG] [Thread-121056] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:09:04.305 [DEBUG] [Thread-121056] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:09:04.305 [DEBUG] [Thread-121056] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:09:04.305 [DEBUG] [Thread-121056] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:09:04.305 [DEBUG] [Thread-121056] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:09:04.305 [DEBUG] [Thread-121056] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:09:04.305 [DEBUG] [Thread-121056] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:09:04.305 [DEBUG] [Thread-121056] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:09:04.305 [DEBUG] [Thread-121056] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:09:04.305 [DEBUG] [Thread-121056] [transport.py] [_log()] client lang: <none>
2025-11-03T19:09:04.305 [DEBUG] [Thread-121056] [transport.py] [_log()] server lang: <none>
2025-11-03T19:09:04.305 [DEBUG] [Thread-121056] [transport.py] [_log()] kex follows: False
2025-11-03T19:09:04.305 [DEBUG] [Thread-121056] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:09:04.305 [DEBUG] [Thread-121056] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:09:04.305 [DEBUG] [Thread-121056] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:09:04.305 [DEBUG] [Thread-121056] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:09:04.305 [DEBUG] [Thread-121056] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:09:04.305 [DEBUG] [Thread-121056] [transport.py] [_log()] Compression: none
2025-11-03T19:09:04.305 [DEBUG] [Thread-121056] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:09:04.371 [DEBUG] [Thread-121056] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:09:04.372 [DEBUG] [Thread-121056] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:09:04.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:09:04.372 [DEBUG] [Thread-121056] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:09:04.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:09:04.433 [DEBUG] [Thread-121056] [transport.py] [_log()] userauth is OK
2025-11-03T19:09:04.433 [DEBUG] [Thread-121056] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:09:04.433 [DEBUG] [Thread-121056] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:09:04.433 [DEBUG] [Thread-121056] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:09:04.433 [DEBUG] [Thread-121056] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:09:04.452 [INFO] [Thread-121056] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:09:04.452 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:09:04.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:09:05.273 [DEBUG] [Thread-121056] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:09:05.274 [DEBUG] [Thread-121056] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:09:05.322 [DEBUG] [Thread-121056] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:09:05.322 [DEBUG] [Thread-121056] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:09:05.331 [DEBUG] [Thread-121056] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:09:05.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:09:05.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:09:05.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:09:05.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:09:05.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:09:05.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:09:05.368 [DEBUG] [Thread-121056] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:09:09.040 [DEBUG] [Thread-121058 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:09:24.092 [DEBUG] [Thread-121059 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:09:26.607 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:09:26.607 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:09:35.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:09:35.391 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:09:35.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:09:36.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 9, 25), 41.87, 4.98, 0.0, 29.73, 22.07, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:09:36.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:09:25
2025-11-03T19:09:36.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:09:36.389 [DEBUG] [Thread-121060] [transport.py] [_log()] starting thread (client mode): 0xedc6710
2025-11-03T19:09:36.389 [DEBUG] [Thread-121060] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:09:36.407 [DEBUG] [Thread-121060] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:09:36.407 [INFO] [Thread-121060] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:09:36.410 [DEBUG] [Thread-121060] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:09:36.410 [DEBUG] [Thread-121060] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:09:36.411 [DEBUG] [Thread-121060] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:09:36.411 [DEBUG] [Thread-121060] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:09:36.411 [DEBUG] [Thread-121060] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:09:36.411 [DEBUG] [Thread-121060] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:09:36.411 [DEBUG] [Thread-121060] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:09:36.411 [DEBUG] [Thread-121060] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:09:36.411 [DEBUG] [Thread-121060] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:09:36.411 [DEBUG] [Thread-121060] [transport.py] [_log()] client lang: <none>
2025-11-03T19:09:36.411 [DEBUG] [Thread-121060] [transport.py] [_log()] server lang: <none>
2025-11-03T19:09:36.411 [DEBUG] [Thread-121060] [transport.py] [_log()] kex follows: False
2025-11-03T19:09:36.411 [DEBUG] [Thread-121060] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:09:36.411 [DEBUG] [Thread-121060] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:09:36.411 [DEBUG] [Thread-121060] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:09:36.411 [DEBUG] [Thread-121060] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:09:36.411 [DEBUG] [Thread-121060] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:09:36.411 [DEBUG] [Thread-121060] [transport.py] [_log()] Compression: none
2025-11-03T19:09:36.411 [DEBUG] [Thread-121060] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:09:36.430 [DEBUG] [Thread-121060] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:09:36.431 [DEBUG] [Thread-121060] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:09:36.431 [DEBUG] [Thread-121060] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:09:36.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:09:36.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:09:36.433 [DEBUG] [Thread-121060] [transport.py] [_log()] userauth is OK
2025-11-03T19:09:36.433 [DEBUG] [Thread-121060] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:09:36.434 [DEBUG] [Thread-121060] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:09:36.434 [DEBUG] [Thread-121060] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:09:36.434 [DEBUG] [Thread-121060] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:09:36.469 [INFO] [Thread-121060] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:09:36.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:09:37.103 [DEBUG] [Thread-121060] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:09:37.103 [DEBUG] [Thread-121060] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:09:37.103 [DEBUG] [Thread-121060] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:09:37.144 [DEBUG] [Thread-121060] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:09:37.144 [DEBUG] [Thread-121060] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:09:37.147 [DEBUG] [Thread-121060] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:09:37.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:09:37.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:09:37.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:09:37.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:09:37.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:09:37.170 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:09:37.170 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:09:37.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:09:37.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:09:37.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.714338 -999.00  +22.10  22.64      9  -11.40 1 1 1 1 1   857    0 31.99 -67.35 ----- 22.6 22.6 299.8 32.6 22.4 -31.2 22.3 -30.0 22.1 -29.9 22.3 -30.7
2025-11-03T19:09:37.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:09:37.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:09:37.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.714338
2025-11-03T19:09:37.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:09:37.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:09:37.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:09:37.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:09:37.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:09:37.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:09:25', tmtdew=41.87, humidity=4.98, cloud=0.0, wind=29.73, temperature=22.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:08:38.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:09:37.173 [DEBUG] [Thread-121060] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:09:37.256 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:09:37.267 [DEBUG] [Thread-121063] [transport.py] [_log()] starting thread (client mode): 0xedc41c0
2025-11-03T19:09:37.268 [DEBUG] [Thread-121063] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:09:37.284 [DEBUG] [Thread-121063] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:09:37.284 [INFO] [Thread-121063] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:09:37.295 [DEBUG] [Thread-121063] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:09:37.295 [DEBUG] [Thread-121063] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:09:37.295 [DEBUG] [Thread-121063] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:09:37.295 [DEBUG] [Thread-121063] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:09:37.295 [DEBUG] [Thread-121063] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:09:37.295 [DEBUG] [Thread-121063] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:09:37.295 [DEBUG] [Thread-121063] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:09:37.295 [DEBUG] [Thread-121063] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:09:37.295 [DEBUG] [Thread-121063] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:09:37.295 [DEBUG] [Thread-121063] [transport.py] [_log()] client lang: <none>
2025-11-03T19:09:37.295 [DEBUG] [Thread-121063] [transport.py] [_log()] server lang: <none>
2025-11-03T19:09:37.295 [DEBUG] [Thread-121063] [transport.py] [_log()] kex follows: False
2025-11-03T19:09:37.295 [DEBUG] [Thread-121063] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:09:37.295 [DEBUG] [Thread-121063] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:09:37.295 [DEBUG] [Thread-121063] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:09:37.295 [DEBUG] [Thread-121063] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:09:37.295 [DEBUG] [Thread-121063] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:09:37.295 [DEBUG] [Thread-121063] [transport.py] [_log()] Compression: none
2025-11-03T19:09:37.295 [DEBUG] [Thread-121063] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:09:37.348 [DEBUG] [Thread-121063] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:09:37.348 [DEBUG] [Thread-121063] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:09:37.349 [DEBUG] [Thread-121063] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:09:37.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:09:37.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:09:37.406 [DEBUG] [Thread-121063] [transport.py] [_log()] userauth is OK
2025-11-03T19:09:37.406 [DEBUG] [Thread-121063] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:09:37.406 [DEBUG] [Thread-121063] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:09:37.406 [DEBUG] [Thread-121063] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:09:37.406 [DEBUG] [Thread-121063] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:09:37.419 [INFO] [Thread-121063] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:09:37.419 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:09:37.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:09:38.240 [DEBUG] [Thread-121063] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:09:38.240 [DEBUG] [Thread-121063] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:09:38.292 [DEBUG] [Thread-121063] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:09:38.293 [DEBUG] [Thread-121063] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:09:38.304 [DEBUG] [Thread-121063] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:09:38.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:09:38.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:09:38.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:09:38.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:09:38.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:09:38.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:09:38.345 [DEBUG] [Thread-121063] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:09:39.143 [DEBUG] [Thread-121065 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:09:44.849 [DEBUG] [Thread-121066 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:09:54.201 [DEBUG] [Thread-121067 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:10:08.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:10:08.367 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:10:08.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:10:09.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 9, 57), 41.78, 4.98, 0.0, 26.17, 22.05, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:10:09.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:09:57
2025-11-03T19:10:09.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:10:09.228 [DEBUG] [Thread-121068 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:10:09.335 [DEBUG] [Thread-121069] [transport.py] [_log()] starting thread (client mode): 0xedc6e60
2025-11-03T19:10:09.335 [DEBUG] [Thread-121069] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:10:09.356 [DEBUG] [Thread-121069] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:10:09.356 [INFO] [Thread-121069] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:10:09.359 [DEBUG] [Thread-121069] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:10:09.359 [DEBUG] [Thread-121069] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:10:09.359 [DEBUG] [Thread-121069] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:10:09.359 [DEBUG] [Thread-121069] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:10:09.359 [DEBUG] [Thread-121069] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:10:09.360 [DEBUG] [Thread-121069] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:10:09.360 [DEBUG] [Thread-121069] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:10:09.360 [DEBUG] [Thread-121069] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:10:09.360 [DEBUG] [Thread-121069] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:10:09.360 [DEBUG] [Thread-121069] [transport.py] [_log()] client lang: <none>
2025-11-03T19:10:09.360 [DEBUG] [Thread-121069] [transport.py] [_log()] server lang: <none>
2025-11-03T19:10:09.360 [DEBUG] [Thread-121069] [transport.py] [_log()] kex follows: False
2025-11-03T19:10:09.360 [DEBUG] [Thread-121069] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:10:09.360 [DEBUG] [Thread-121069] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:10:09.360 [DEBUG] [Thread-121069] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:10:09.360 [DEBUG] [Thread-121069] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:10:09.360 [DEBUG] [Thread-121069] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:10:09.360 [DEBUG] [Thread-121069] [transport.py] [_log()] Compression: none
2025-11-03T19:10:09.360 [DEBUG] [Thread-121069] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:10:09.382 [DEBUG] [Thread-121069] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:10:09.383 [DEBUG] [Thread-121069] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:10:09.383 [DEBUG] [Thread-121069] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:10:09.383 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:10:09.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:10:09.385 [DEBUG] [Thread-121069] [transport.py] [_log()] userauth is OK
2025-11-03T19:10:09.385 [DEBUG] [Thread-121069] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:10:09.385 [DEBUG] [Thread-121069] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:10:09.385 [DEBUG] [Thread-121069] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:10:09.386 [DEBUG] [Thread-121069] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:10:09.409 [INFO] [Thread-121069] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:10:09.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:10:15.631 [DEBUG] [Thread-121069] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:10:15.632 [DEBUG] [Thread-121069] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:10:15.632 [DEBUG] [Thread-121069] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:10:15.664 [DEBUG] [Thread-121069] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:10:15.664 [DEBUG] [Thread-121069] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:10:15.666 [DEBUG] [Thread-121069] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:10:15.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:10:15.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:10:15.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:10:15.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:10:15.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:10:15.740 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:10:15.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:10:15.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:10:15.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:10:15.741 [WARNING] [poll_weather_worker] [driver.py] [poll_weather_state()] Unable to get atlas cloud data: list index out of range
2025-11-03T19:10:15.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:09:57', tmtdew=41.78, humidity=4.98, cloud=0.0, wind=26.17, temperature=22.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp=None, atlas_cloud=None, atlas_rain=None, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:10:15.741 [DEBUG] [Thread-121069] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:10:15.814 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:10:15.826 [DEBUG] [Thread-121072] [transport.py] [_log()] starting thread (client mode): 0x141da590
2025-11-03T19:10:15.826 [DEBUG] [Thread-121072] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:10:15.840 [DEBUG] [Thread-121072] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:10:15.840 [INFO] [Thread-121072] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:10:15.848 [DEBUG] [Thread-121072] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:10:15.848 [DEBUG] [Thread-121072] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:10:15.848 [DEBUG] [Thread-121072] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:10:15.849 [DEBUG] [Thread-121072] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:10:15.849 [DEBUG] [Thread-121072] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:10:15.849 [DEBUG] [Thread-121072] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:10:15.849 [DEBUG] [Thread-121072] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:10:15.849 [DEBUG] [Thread-121072] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:10:15.849 [DEBUG] [Thread-121072] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:10:15.849 [DEBUG] [Thread-121072] [transport.py] [_log()] client lang: <none>
2025-11-03T19:10:15.849 [DEBUG] [Thread-121072] [transport.py] [_log()] server lang: <none>
2025-11-03T19:10:15.849 [DEBUG] [Thread-121072] [transport.py] [_log()] kex follows: False
2025-11-03T19:10:15.849 [DEBUG] [Thread-121072] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:10:15.849 [DEBUG] [Thread-121072] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:10:15.849 [DEBUG] [Thread-121072] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:10:15.849 [DEBUG] [Thread-121072] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:10:15.849 [DEBUG] [Thread-121072] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:10:15.850 [DEBUG] [Thread-121072] [transport.py] [_log()] Compression: none
2025-11-03T19:10:15.850 [DEBUG] [Thread-121072] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:10:15.906 [DEBUG] [Thread-121072] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:10:15.907 [DEBUG] [Thread-121072] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:10:15.907 [DEBUG] [Thread-121072] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:10:15.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:10:15.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:10:15.964 [DEBUG] [Thread-121072] [transport.py] [_log()] userauth is OK
2025-11-03T19:10:15.964 [DEBUG] [Thread-121072] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:10:15.964 [DEBUG] [Thread-121072] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:10:15.964 [DEBUG] [Thread-121072] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:10:15.964 [DEBUG] [Thread-121072] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:10:15.984 [INFO] [Thread-121072] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:10:15.984 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:10:15.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:10:16.791 [DEBUG] [Thread-121072] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:10:16.791 [DEBUG] [Thread-121072] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:10:16.839 [DEBUG] [Thread-121072] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:10:16.839 [DEBUG] [Thread-121072] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:10:16.849 [DEBUG] [Thread-121072] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:10:16.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:10:16.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:10:16.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:10:16.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:10:16.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:10:16.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:10:16.886 [DEBUG] [Thread-121072] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:10:24.260 [DEBUG] [Thread-121074 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:10:34.009 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:10:34.011 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:10:39.301 [DEBUG] [Thread-121075 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:10:45.116 [DEBUG] [Thread-121076 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:10:46.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:10:46.901 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:10:46.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:10:47.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 10, 29), 41.81, 4.97, 0.0, 25.48, 22.0, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:10:47.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:10:29
2025-11-03T19:10:47.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:10:47.922 [DEBUG] [Thread-121077] [transport.py] [_log()] starting thread (client mode): 0xedc4a90
2025-11-03T19:10:47.922 [DEBUG] [Thread-121077] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:10:47.942 [DEBUG] [Thread-121077] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:10:47.942 [INFO] [Thread-121077] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:10:47.952 [DEBUG] [Thread-121077] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:10:47.953 [DEBUG] [Thread-121077] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:10:47.953 [DEBUG] [Thread-121077] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:10:47.953 [DEBUG] [Thread-121077] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:10:47.953 [DEBUG] [Thread-121077] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:10:47.953 [DEBUG] [Thread-121077] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:10:47.953 [DEBUG] [Thread-121077] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:10:47.953 [DEBUG] [Thread-121077] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:10:47.953 [DEBUG] [Thread-121077] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:10:47.953 [DEBUG] [Thread-121077] [transport.py] [_log()] client lang: <none>
2025-11-03T19:10:47.953 [DEBUG] [Thread-121077] [transport.py] [_log()] server lang: <none>
2025-11-03T19:10:47.953 [DEBUG] [Thread-121077] [transport.py] [_log()] kex follows: False
2025-11-03T19:10:47.953 [DEBUG] [Thread-121077] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:10:47.953 [DEBUG] [Thread-121077] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:10:47.953 [DEBUG] [Thread-121077] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:10:47.953 [DEBUG] [Thread-121077] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:10:47.953 [DEBUG] [Thread-121077] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:10:47.953 [DEBUG] [Thread-121077] [transport.py] [_log()] Compression: none
2025-11-03T19:10:47.953 [DEBUG] [Thread-121077] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:10:47.972 [DEBUG] [Thread-121077] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:10:47.972 [DEBUG] [Thread-121077] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:10:47.973 [DEBUG] [Thread-121077] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:10:47.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:10:47.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:10:47.975 [DEBUG] [Thread-121077] [transport.py] [_log()] userauth is OK
2025-11-03T19:10:47.975 [DEBUG] [Thread-121077] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:10:47.975 [DEBUG] [Thread-121077] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:10:47.975 [DEBUG] [Thread-121077] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:10:47.975 [DEBUG] [Thread-121077] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:10:48.001 [INFO] [Thread-121077] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:10:48.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:10:48.602 [DEBUG] [Thread-121077] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:10:48.603 [DEBUG] [Thread-121077] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:10:48.603 [DEBUG] [Thread-121077] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:10:48.643 [DEBUG] [Thread-121077] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:10:48.643 [DEBUG] [Thread-121077] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:10:48.646 [DEBUG] [Thread-121077] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:10:48.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:10:48.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:10:48.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:10:48.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:10:48.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:10:48.666 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:10:48.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:10:48.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:10:48.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:10:48.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.715379 -999.00  +22.00  28.05      9  -11.40 1 1 1 1 1   846    0 32.54 -55.44 ----- 28.1 28.1 297.4 37.0 22.3 -31.1 22.2 -29.8 21.9 -29.9 22.2 -30.6
2025-11-03T19:10:48.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:10:48.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:10:48.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.715379
2025-11-03T19:10:48.674 [DEBUG] [Thread-121077] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:10:48.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:10:48.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:10:48.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:10:48.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:10:48.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:10:48.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:10:29', tmtdew=41.81, humidity=4.97, cloud=0.0, wind=25.48, temperature=22.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:10:08.746', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:10:48.775 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:10:48.787 [DEBUG] [Thread-121080] [transport.py] [_log()] starting thread (client mode): 0x1174eb60
2025-11-03T19:10:48.787 [DEBUG] [Thread-121080] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:10:48.802 [DEBUG] [Thread-121080] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:10:48.802 [INFO] [Thread-121080] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:10:48.813 [DEBUG] [Thread-121080] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:10:48.813 [DEBUG] [Thread-121080] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:10:48.813 [DEBUG] [Thread-121080] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:10:48.813 [DEBUG] [Thread-121080] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:10:48.813 [DEBUG] [Thread-121080] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:10:48.813 [DEBUG] [Thread-121080] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:10:48.813 [DEBUG] [Thread-121080] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:10:48.813 [DEBUG] [Thread-121080] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:10:48.813 [DEBUG] [Thread-121080] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:10:48.813 [DEBUG] [Thread-121080] [transport.py] [_log()] client lang: <none>
2025-11-03T19:10:48.813 [DEBUG] [Thread-121080] [transport.py] [_log()] server lang: <none>
2025-11-03T19:10:48.813 [DEBUG] [Thread-121080] [transport.py] [_log()] kex follows: False
2025-11-03T19:10:48.813 [DEBUG] [Thread-121080] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:10:48.813 [DEBUG] [Thread-121080] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:10:48.814 [DEBUG] [Thread-121080] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:10:48.814 [DEBUG] [Thread-121080] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:10:48.814 [DEBUG] [Thread-121080] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:10:48.814 [DEBUG] [Thread-121080] [transport.py] [_log()] Compression: none
2025-11-03T19:10:48.814 [DEBUG] [Thread-121080] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:10:48.870 [DEBUG] [Thread-121080] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:10:48.871 [DEBUG] [Thread-121080] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:10:48.872 [DEBUG] [Thread-121080] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:10:48.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:10:48.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:10:48.926 [DEBUG] [Thread-121080] [transport.py] [_log()] userauth is OK
2025-11-03T19:10:48.927 [DEBUG] [Thread-121080] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:10:48.927 [DEBUG] [Thread-121080] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:10:48.927 [DEBUG] [Thread-121080] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:10:48.927 [DEBUG] [Thread-121080] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:10:48.946 [INFO] [Thread-121080] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:10:48.947 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:10:48.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:10:49.799 [DEBUG] [Thread-121080] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:10:49.799 [DEBUG] [Thread-121080] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:10:49.847 [DEBUG] [Thread-121080] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:10:49.847 [DEBUG] [Thread-121080] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:10:49.855 [DEBUG] [Thread-121080] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:10:49.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:10:49.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:10:49.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:10:49.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:10:49.880 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:10:49.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:10:49.888 [DEBUG] [Thread-121080] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:10:54.334 [DEBUG] [Thread-121082 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:11:09.395 [DEBUG] [Thread-121083 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:11:19.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:11:19.910 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:11:19.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:11:20.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 11, 2), 41.8, 4.97, 0.0, 26.64, 21.98, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:11:20.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:11:02
2025-11-03T19:11:20.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:11:21.019 [DEBUG] [Thread-121084] [transport.py] [_log()] starting thread (client mode): 0x1174d060
2025-11-03T19:11:21.019 [DEBUG] [Thread-121084] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:11:21.033 [DEBUG] [Thread-121084] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:11:21.033 [INFO] [Thread-121084] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:11:21.035 [DEBUG] [Thread-121084] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:11:21.035 [DEBUG] [Thread-121084] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:11:21.035 [DEBUG] [Thread-121084] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:11:21.035 [DEBUG] [Thread-121084] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:11:21.035 [DEBUG] [Thread-121084] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:11:21.035 [DEBUG] [Thread-121084] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:11:21.035 [DEBUG] [Thread-121084] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:11:21.035 [DEBUG] [Thread-121084] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:11:21.035 [DEBUG] [Thread-121084] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:11:21.035 [DEBUG] [Thread-121084] [transport.py] [_log()] client lang: <none>
2025-11-03T19:11:21.035 [DEBUG] [Thread-121084] [transport.py] [_log()] server lang: <none>
2025-11-03T19:11:21.035 [DEBUG] [Thread-121084] [transport.py] [_log()] kex follows: False
2025-11-03T19:11:21.035 [DEBUG] [Thread-121084] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:11:21.035 [DEBUG] [Thread-121084] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:11:21.035 [DEBUG] [Thread-121084] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:11:21.036 [DEBUG] [Thread-121084] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:11:21.036 [DEBUG] [Thread-121084] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:11:21.036 [DEBUG] [Thread-121084] [transport.py] [_log()] Compression: none
2025-11-03T19:11:21.036 [DEBUG] [Thread-121084] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:11:21.043 [DEBUG] [Thread-121084] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:11:21.043 [DEBUG] [Thread-121084] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:11:21.043 [DEBUG] [Thread-121084] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:11:21.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:11:21.044 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:11:21.044 [DEBUG] [Thread-121084] [transport.py] [_log()] userauth is OK
2025-11-03T19:11:21.044 [DEBUG] [Thread-121084] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:11:21.044 [DEBUG] [Thread-121084] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:11:21.044 [DEBUG] [Thread-121084] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:11:21.045 [DEBUG] [Thread-121084] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:11:21.060 [INFO] [Thread-121084] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:11:21.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:11:21.704 [DEBUG] [Thread-121084] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:11:21.704 [DEBUG] [Thread-121084] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:11:21.704 [DEBUG] [Thread-121084] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:11:21.744 [DEBUG] [Thread-121084] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:11:21.744 [DEBUG] [Thread-121084] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:11:21.745 [DEBUG] [Thread-121084] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:11:21.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:11:21.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:11:21.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:11:21.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:11:21.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:11:21.757 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:11:21.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:11:21.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:11:21.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:11:21.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.715727 -999.00  +22.00  25.47      9  -11.30 1 1 1 1 1   842    0 32.43 -49.24 ----- 25.5 25.5 302.2 30.1 22.2 -30.9 22.2 -29.9 22.0 -30.0 22.2 -30.6
2025-11-03T19:11:21.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:11:21.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:11:21.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.715727
2025-11-03T19:11:21.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:11:21.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:11:21.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:11:21.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:11:21.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:11:21.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:11:02', tmtdew=41.8, humidity=4.97, cloud=0.0, wind=26.64, temperature=21.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:10:38.813', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:11:21.758 [DEBUG] [Thread-121084] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:11:21.833 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:11:21.844 [DEBUG] [Thread-121087] [transport.py] [_log()] starting thread (client mode): 0xed20dc0
2025-11-03T19:11:21.844 [DEBUG] [Thread-121087] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:11:21.859 [DEBUG] [Thread-121087] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:11:21.859 [INFO] [Thread-121087] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:11:21.866 [DEBUG] [Thread-121087] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:11:21.866 [DEBUG] [Thread-121087] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:11:21.866 [DEBUG] [Thread-121087] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:11:21.866 [DEBUG] [Thread-121087] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:11:21.866 [DEBUG] [Thread-121087] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:11:21.866 [DEBUG] [Thread-121087] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:11:21.866 [DEBUG] [Thread-121087] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:11:21.866 [DEBUG] [Thread-121087] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:11:21.866 [DEBUG] [Thread-121087] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:11:21.867 [DEBUG] [Thread-121087] [transport.py] [_log()] client lang: <none>
2025-11-03T19:11:21.867 [DEBUG] [Thread-121087] [transport.py] [_log()] server lang: <none>
2025-11-03T19:11:21.867 [DEBUG] [Thread-121087] [transport.py] [_log()] kex follows: False
2025-11-03T19:11:21.867 [DEBUG] [Thread-121087] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:11:21.867 [DEBUG] [Thread-121087] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:11:21.867 [DEBUG] [Thread-121087] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:11:21.867 [DEBUG] [Thread-121087] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:11:21.867 [DEBUG] [Thread-121087] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:11:21.867 [DEBUG] [Thread-121087] [transport.py] [_log()] Compression: none
2025-11-03T19:11:21.867 [DEBUG] [Thread-121087] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:11:21.923 [DEBUG] [Thread-121087] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:11:21.924 [DEBUG] [Thread-121087] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:11:21.924 [DEBUG] [Thread-121087] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:11:21.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:11:21.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:11:21.980 [DEBUG] [Thread-121087] [transport.py] [_log()] userauth is OK
2025-11-03T19:11:21.980 [DEBUG] [Thread-121087] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:11:21.980 [DEBUG] [Thread-121087] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:11:21.980 [DEBUG] [Thread-121087] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:11:21.980 [DEBUG] [Thread-121087] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:11:21.993 [INFO] [Thread-121087] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:11:21.994 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:11:21.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:11:22.820 [DEBUG] [Thread-121087] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:11:22.820 [DEBUG] [Thread-121087] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:11:22.867 [DEBUG] [Thread-121087] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:11:22.867 [DEBUG] [Thread-121087] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:11:22.875 [DEBUG] [Thread-121087] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:11:22.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:11:22.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:11:22.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:11:22.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:11:22.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:11:22.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:11:22.907 [DEBUG] [Thread-121087] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:11:24.426 [DEBUG] [Thread-121089 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:11:39.469 [DEBUG] [Thread-121090 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:11:40.908 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:11:40.909 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:11:45.237 [DEBUG] [Thread-121091 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:11:52.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:11:52.926 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:11:52.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:11:53.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 11, 34), 41.71, 4.98, 0.0, 26.98, 21.92, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:11:53.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:11:34
2025-11-03T19:11:53.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:11:54.002 [DEBUG] [Thread-121092] [transport.py] [_log()] starting thread (client mode): 0xedc5ff0
2025-11-03T19:11:54.002 [DEBUG] [Thread-121092] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:11:54.022 [DEBUG] [Thread-121092] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:11:54.022 [INFO] [Thread-121092] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:11:54.025 [DEBUG] [Thread-121092] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:11:54.026 [DEBUG] [Thread-121092] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:11:54.026 [DEBUG] [Thread-121092] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:11:54.026 [DEBUG] [Thread-121092] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:11:54.026 [DEBUG] [Thread-121092] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:11:54.026 [DEBUG] [Thread-121092] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:11:54.026 [DEBUG] [Thread-121092] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:11:54.026 [DEBUG] [Thread-121092] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:11:54.026 [DEBUG] [Thread-121092] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:11:54.026 [DEBUG] [Thread-121092] [transport.py] [_log()] client lang: <none>
2025-11-03T19:11:54.026 [DEBUG] [Thread-121092] [transport.py] [_log()] server lang: <none>
2025-11-03T19:11:54.026 [DEBUG] [Thread-121092] [transport.py] [_log()] kex follows: False
2025-11-03T19:11:54.026 [DEBUG] [Thread-121092] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:11:54.027 [DEBUG] [Thread-121092] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:11:54.027 [DEBUG] [Thread-121092] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:11:54.027 [DEBUG] [Thread-121092] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:11:54.027 [DEBUG] [Thread-121092] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:11:54.027 [DEBUG] [Thread-121092] [transport.py] [_log()] Compression: none
2025-11-03T19:11:54.027 [DEBUG] [Thread-121092] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:11:54.045 [DEBUG] [Thread-121092] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:11:54.047 [DEBUG] [Thread-121092] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:11:54.048 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:11:54.048 [DEBUG] [Thread-121092] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:11:54.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:11:54.051 [DEBUG] [Thread-121092] [transport.py] [_log()] userauth is OK
2025-11-03T19:11:54.051 [DEBUG] [Thread-121092] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:11:54.051 [DEBUG] [Thread-121092] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:11:54.051 [DEBUG] [Thread-121092] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:11:54.051 [DEBUG] [Thread-121092] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:11:54.076 [INFO] [Thread-121092] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:11:54.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:11:54.516 [DEBUG] [Thread-121094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:11:54.670 [DEBUG] [Thread-121092] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:11:54.671 [DEBUG] [Thread-121092] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:11:54.671 [DEBUG] [Thread-121092] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:11:54.712 [DEBUG] [Thread-121092] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:11:54.712 [DEBUG] [Thread-121092] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:11:54.716 [DEBUG] [Thread-121092] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:11:54.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:11:54.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:11:54.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:11:54.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:11:54.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:11:54.745 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:11:54.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:11:54.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:11:54.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:11:54.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.716074 -999.00  +22.00  23.90      9  -11.40 1 1 1 1 1   838    0 32.50 -49.88 ----- 23.9 23.9 307.6 31.9 22.2 -31.1 22.1 -29.9 21.9 -30.1 22.1 -30.7
2025-11-03T19:11:54.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:11:54.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:11:54.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.716074
2025-11-03T19:11:54.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:11:54.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:11:54.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:11:54.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:11:54.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:11:54.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:11:34', tmtdew=41.71, humidity=4.98, cloud=0.0, wind=26.98, temperature=21.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:11:08.794', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:11:54.749 [DEBUG] [Thread-121092] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:11:54.832 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:11:54.845 [DEBUG] [Thread-121096] [transport.py] [_log()] starting thread (client mode): 0xedc6620
2025-11-03T19:11:54.845 [DEBUG] [Thread-121096] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:11:54.860 [DEBUG] [Thread-121096] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:11:54.860 [INFO] [Thread-121096] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:11:54.867 [DEBUG] [Thread-121096] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:11:54.867 [DEBUG] [Thread-121096] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:11:54.867 [DEBUG] [Thread-121096] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:11:54.867 [DEBUG] [Thread-121096] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:11:54.867 [DEBUG] [Thread-121096] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:11:54.867 [DEBUG] [Thread-121096] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:11:54.867 [DEBUG] [Thread-121096] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:11:54.867 [DEBUG] [Thread-121096] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:11:54.867 [DEBUG] [Thread-121096] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:11:54.867 [DEBUG] [Thread-121096] [transport.py] [_log()] client lang: <none>
2025-11-03T19:11:54.867 [DEBUG] [Thread-121096] [transport.py] [_log()] server lang: <none>
2025-11-03T19:11:54.867 [DEBUG] [Thread-121096] [transport.py] [_log()] kex follows: False
2025-11-03T19:11:54.867 [DEBUG] [Thread-121096] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:11:54.867 [DEBUG] [Thread-121096] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:11:54.867 [DEBUG] [Thread-121096] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:11:54.867 [DEBUG] [Thread-121096] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:11:54.867 [DEBUG] [Thread-121096] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:11:54.867 [DEBUG] [Thread-121096] [transport.py] [_log()] Compression: none
2025-11-03T19:11:54.867 [DEBUG] [Thread-121096] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:11:54.925 [DEBUG] [Thread-121096] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:11:54.925 [DEBUG] [Thread-121096] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:11:54.925 [DEBUG] [Thread-121096] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:11:54.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:11:54.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:11:54.982 [DEBUG] [Thread-121096] [transport.py] [_log()] userauth is OK
2025-11-03T19:11:54.982 [DEBUG] [Thread-121096] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:11:54.982 [DEBUG] [Thread-121096] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:11:54.982 [DEBUG] [Thread-121096] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:11:54.982 [DEBUG] [Thread-121096] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:11:54.996 [INFO] [Thread-121096] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:11:54.996 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:11:54.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:11:55.813 [DEBUG] [Thread-121096] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:11:55.813 [DEBUG] [Thread-121096] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:11:55.862 [DEBUG] [Thread-121096] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:11:55.862 [DEBUG] [Thread-121096] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:11:55.872 [DEBUG] [Thread-121096] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:11:55.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:11:55.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:11:55.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:11:55.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:11:55.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:11:55.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:11:55.909 [DEBUG] [Thread-121096] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:12:09.545 [DEBUG] [Thread-121098 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:12:24.588 [DEBUG] [Thread-121099 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:12:25.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:12:25.922 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:12:25.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:12:26.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 12, 6), 41.67, 5.0, 0.0, 25.81, 21.93, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:12:26.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:12:06
2025-11-03T19:12:26.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:12:26.952 [DEBUG] [Thread-121100] [transport.py] [_log()] starting thread (client mode): 0x1174ec50
2025-11-03T19:12:26.952 [DEBUG] [Thread-121100] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:12:26.973 [DEBUG] [Thread-121100] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:12:26.973 [INFO] [Thread-121100] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:12:26.976 [DEBUG] [Thread-121100] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:12:26.976 [DEBUG] [Thread-121100] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:12:26.976 [DEBUG] [Thread-121100] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:12:26.976 [DEBUG] [Thread-121100] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:12:26.976 [DEBUG] [Thread-121100] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:12:26.976 [DEBUG] [Thread-121100] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:12:26.976 [DEBUG] [Thread-121100] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:12:26.976 [DEBUG] [Thread-121100] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:12:26.976 [DEBUG] [Thread-121100] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:12:26.976 [DEBUG] [Thread-121100] [transport.py] [_log()] client lang: <none>
2025-11-03T19:12:26.976 [DEBUG] [Thread-121100] [transport.py] [_log()] server lang: <none>
2025-11-03T19:12:26.976 [DEBUG] [Thread-121100] [transport.py] [_log()] kex follows: False
2025-11-03T19:12:26.977 [DEBUG] [Thread-121100] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:12:26.977 [DEBUG] [Thread-121100] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:12:26.977 [DEBUG] [Thread-121100] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:12:26.977 [DEBUG] [Thread-121100] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:12:26.977 [DEBUG] [Thread-121100] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:12:26.977 [DEBUG] [Thread-121100] [transport.py] [_log()] Compression: none
2025-11-03T19:12:26.977 [DEBUG] [Thread-121100] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:12:26.992 [DEBUG] [Thread-121100] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:12:26.993 [DEBUG] [Thread-121100] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:12:26.993 [DEBUG] [Thread-121100] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:12:26.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:12:26.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:12:26.995 [DEBUG] [Thread-121100] [transport.py] [_log()] userauth is OK
2025-11-03T19:12:26.995 [DEBUG] [Thread-121100] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:12:26.995 [DEBUG] [Thread-121100] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:12:26.995 [DEBUG] [Thread-121100] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:12:26.996 [DEBUG] [Thread-121100] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:12:27.031 [INFO] [Thread-121100] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:12:27.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:12:27.793 [DEBUG] [Thread-121100] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:12:27.793 [DEBUG] [Thread-121100] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:12:27.793 [DEBUG] [Thread-121100] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:12:27.835 [DEBUG] [Thread-121100] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:12:27.836 [DEBUG] [Thread-121100] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:12:27.838 [DEBUG] [Thread-121100] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:12:27.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:12:27.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:12:27.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:12:27.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:12:27.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:12:27.862 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:12:27.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:12:27.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:12:27.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:12:27.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.716421 -999.00  +21.90  23.41      9  -11.40 1 1 1 1 1   833    0 32.40 -48.76 ----- 23.4 23.4 308.8 26.3 22.2 -31.0 22.1 -30.1 21.9 -29.9 22.1 -30.8
2025-11-03T19:12:27.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:12:27.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:12:27.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.716421
2025-11-03T19:12:27.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:12:27.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:12:27.865 [DEBUG] [Thread-121100] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:12:27.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:12:27.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:12:27.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:12:27.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:12:06', tmtdew=41.67, humidity=5.0, cloud=0.0, wind=25.81, temperature=21.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:11:38.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:12:27.949 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:12:27.961 [DEBUG] [Thread-121103] [transport.py] [_log()] starting thread (client mode): 0xedc6470
2025-11-03T19:12:27.962 [DEBUG] [Thread-121103] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:12:27.978 [DEBUG] [Thread-121103] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:12:27.979 [INFO] [Thread-121103] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:12:27.995 [DEBUG] [Thread-121103] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:12:27.995 [DEBUG] [Thread-121103] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:12:27.995 [DEBUG] [Thread-121103] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:12:27.995 [DEBUG] [Thread-121103] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:12:27.995 [DEBUG] [Thread-121103] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:12:27.995 [DEBUG] [Thread-121103] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:12:27.995 [DEBUG] [Thread-121103] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:12:27.995 [DEBUG] [Thread-121103] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:12:27.995 [DEBUG] [Thread-121103] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:12:27.995 [DEBUG] [Thread-121103] [transport.py] [_log()] client lang: <none>
2025-11-03T19:12:27.995 [DEBUG] [Thread-121103] [transport.py] [_log()] server lang: <none>
2025-11-03T19:12:27.995 [DEBUG] [Thread-121103] [transport.py] [_log()] kex follows: False
2025-11-03T19:12:27.995 [DEBUG] [Thread-121103] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:12:27.995 [DEBUG] [Thread-121103] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:12:27.996 [DEBUG] [Thread-121103] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:12:27.996 [DEBUG] [Thread-121103] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:12:27.996 [DEBUG] [Thread-121103] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:12:27.996 [DEBUG] [Thread-121103] [transport.py] [_log()] Compression: none
2025-11-03T19:12:27.996 [DEBUG] [Thread-121103] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:12:28.048 [DEBUG] [Thread-121103] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:12:28.049 [DEBUG] [Thread-121103] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:12:28.049 [DEBUG] [Thread-121103] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:12:28.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:12:28.051 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:12:28.105 [DEBUG] [Thread-121103] [transport.py] [_log()] userauth is OK
2025-11-03T19:12:28.106 [DEBUG] [Thread-121103] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:12:28.106 [DEBUG] [Thread-121103] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:12:28.106 [DEBUG] [Thread-121103] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:12:28.106 [DEBUG] [Thread-121103] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:12:28.125 [INFO] [Thread-121103] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:12:28.126 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:12:28.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:12:28.984 [DEBUG] [Thread-121103] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:12:28.984 [DEBUG] [Thread-121103] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:12:29.032 [DEBUG] [Thread-121103] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:12:29.032 [DEBUG] [Thread-121103] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:12:29.040 [DEBUG] [Thread-121103] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:12:29.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:12:29.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:12:29.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:12:29.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:12:29.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:12:29.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:12:29.074 [DEBUG] [Thread-121103] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:12:39.625 [DEBUG] [Thread-121105 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:12:45.297 [DEBUG] [Thread-121106 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:12:46.292 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:12:46.293 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:12:54.671 [DEBUG] [Thread-121107 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:12:59.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:12:59.097 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:12:59.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:12:59.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 12, 39), 41.74, 4.97, 0.0, 24.84, 21.9, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:12:59.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:12:39
2025-11-03T19:12:59.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:13:00.076 [DEBUG] [Thread-121108] [transport.py] [_log()] starting thread (client mode): 0xed22bc0
2025-11-03T19:13:00.076 [DEBUG] [Thread-121108] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:13:00.099 [DEBUG] [Thread-121108] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:13:00.100 [INFO] [Thread-121108] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:13:00.103 [DEBUG] [Thread-121108] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:13:00.103 [DEBUG] [Thread-121108] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:13:00.103 [DEBUG] [Thread-121108] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:13:00.103 [DEBUG] [Thread-121108] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:13:00.103 [DEBUG] [Thread-121108] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:13:00.103 [DEBUG] [Thread-121108] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:13:00.103 [DEBUG] [Thread-121108] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:13:00.103 [DEBUG] [Thread-121108] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:13:00.103 [DEBUG] [Thread-121108] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:13:00.103 [DEBUG] [Thread-121108] [transport.py] [_log()] client lang: <none>
2025-11-03T19:13:00.103 [DEBUG] [Thread-121108] [transport.py] [_log()] server lang: <none>
2025-11-03T19:13:00.103 [DEBUG] [Thread-121108] [transport.py] [_log()] kex follows: False
2025-11-03T19:13:00.103 [DEBUG] [Thread-121108] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:13:00.103 [DEBUG] [Thread-121108] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:13:00.103 [DEBUG] [Thread-121108] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:13:00.103 [DEBUG] [Thread-121108] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:13:00.104 [DEBUG] [Thread-121108] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:13:00.104 [DEBUG] [Thread-121108] [transport.py] [_log()] Compression: none
2025-11-03T19:13:00.104 [DEBUG] [Thread-121108] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:13:00.121 [DEBUG] [Thread-121108] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:13:00.122 [DEBUG] [Thread-121108] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:13:00.122 [DEBUG] [Thread-121108] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:13:00.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:13:00.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:13:00.125 [DEBUG] [Thread-121108] [transport.py] [_log()] userauth is OK
2025-11-03T19:13:00.125 [DEBUG] [Thread-121108] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:13:00.125 [DEBUG] [Thread-121108] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:13:00.125 [DEBUG] [Thread-121108] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:13:00.125 [DEBUG] [Thread-121108] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:13:00.150 [INFO] [Thread-121108] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:13:00.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:13:00.788 [DEBUG] [Thread-121108] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:13:00.788 [DEBUG] [Thread-121108] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:13:00.788 [DEBUG] [Thread-121108] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:13:00.828 [DEBUG] [Thread-121108] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:13:00.828 [DEBUG] [Thread-121108] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:13:00.830 [DEBUG] [Thread-121108] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:13:00.843 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:13:00.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:13:00.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:13:00.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:13:00.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:13:00.850 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:13:00.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:13:00.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:13:00.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:13:00.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.716768 -999.00  +21.90  19.07      9  -11.40 1 1 1 1 1   828    0 32.32 -48.17 ----- 19.1 19.1 308.6 31.2 22.1 -31.1 22.1 -29.9 21.9 -30.0 22.1 -30.8
2025-11-03T19:13:00.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:13:00.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:13:00.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.716768
2025-11-03T19:13:00.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:13:00.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:13:00.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:13:00.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:13:00.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:13:00.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:12:39', tmtdew=41.74, humidity=4.97, cloud=0.0, wind=24.84, temperature=21.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:12:08.755', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:13:00.851 [DEBUG] [Thread-121108] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:13:00.923 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:13:00.934 [DEBUG] [Thread-121111] [transport.py] [_log()] starting thread (client mode): 0xeda30a0
2025-11-03T19:13:00.934 [DEBUG] [Thread-121111] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:13:00.949 [DEBUG] [Thread-121111] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:13:00.949 [INFO] [Thread-121111] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:13:00.957 [DEBUG] [Thread-121111] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:13:00.957 [DEBUG] [Thread-121111] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:13:00.957 [DEBUG] [Thread-121111] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:13:00.957 [DEBUG] [Thread-121111] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:13:00.957 [DEBUG] [Thread-121111] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:13:00.957 [DEBUG] [Thread-121111] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:13:00.957 [DEBUG] [Thread-121111] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:13:00.957 [DEBUG] [Thread-121111] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:13:00.957 [DEBUG] [Thread-121111] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:13:00.957 [DEBUG] [Thread-121111] [transport.py] [_log()] client lang: <none>
2025-11-03T19:13:00.957 [DEBUG] [Thread-121111] [transport.py] [_log()] server lang: <none>
2025-11-03T19:13:00.957 [DEBUG] [Thread-121111] [transport.py] [_log()] kex follows: False
2025-11-03T19:13:00.957 [DEBUG] [Thread-121111] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:13:00.957 [DEBUG] [Thread-121111] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:13:00.957 [DEBUG] [Thread-121111] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:13:00.958 [DEBUG] [Thread-121111] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:13:00.958 [DEBUG] [Thread-121111] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:13:00.958 [DEBUG] [Thread-121111] [transport.py] [_log()] Compression: none
2025-11-03T19:13:00.958 [DEBUG] [Thread-121111] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:13:01.014 [DEBUG] [Thread-121111] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:13:01.014 [DEBUG] [Thread-121111] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:13:01.014 [DEBUG] [Thread-121111] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:13:01.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:13:01.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:13:01.071 [DEBUG] [Thread-121111] [transport.py] [_log()] userauth is OK
2025-11-03T19:13:01.071 [DEBUG] [Thread-121111] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:13:01.071 [DEBUG] [Thread-121111] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:13:01.071 [DEBUG] [Thread-121111] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:13:01.071 [DEBUG] [Thread-121111] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:13:01.086 [INFO] [Thread-121111] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:13:01.086 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:13:01.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:13:01.939 [DEBUG] [Thread-121111] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:13:01.939 [DEBUG] [Thread-121111] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:13:01.990 [DEBUG] [Thread-121111] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:13:01.991 [DEBUG] [Thread-121111] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:13:02.000 [DEBUG] [Thread-121111] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:13:02.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:13:02.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:13:02.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:13:02.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:13:02.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:13:02.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:13:02.037 [DEBUG] [Thread-121111] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:13:09.711 [DEBUG] [Thread-121113 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:13:24.763 [DEBUG] [Thread-121114 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:13:32.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:13:32.059 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:13:32.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:13:32.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 13, 11), 41.66, 5.0, 0.0, 25.46, 21.87, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:13:32.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:13:11
2025-11-03T19:13:32.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:13:33.078 [DEBUG] [Thread-121115] [transport.py] [_log()] starting thread (client mode): 0xed8b790
2025-11-03T19:13:33.078 [DEBUG] [Thread-121115] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:13:33.091 [DEBUG] [Thread-121115] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:13:33.091 [INFO] [Thread-121115] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:13:33.092 [DEBUG] [Thread-121115] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:13:33.092 [DEBUG] [Thread-121115] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:13:33.092 [DEBUG] [Thread-121115] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:13:33.092 [DEBUG] [Thread-121115] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:13:33.092 [DEBUG] [Thread-121115] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:13:33.092 [DEBUG] [Thread-121115] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:13:33.092 [DEBUG] [Thread-121115] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:13:33.092 [DEBUG] [Thread-121115] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:13:33.092 [DEBUG] [Thread-121115] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:13:33.092 [DEBUG] [Thread-121115] [transport.py] [_log()] client lang: <none>
2025-11-03T19:13:33.092 [DEBUG] [Thread-121115] [transport.py] [_log()] server lang: <none>
2025-11-03T19:13:33.092 [DEBUG] [Thread-121115] [transport.py] [_log()] kex follows: False
2025-11-03T19:13:33.092 [DEBUG] [Thread-121115] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:13:33.092 [DEBUG] [Thread-121115] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:13:33.093 [DEBUG] [Thread-121115] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:13:33.093 [DEBUG] [Thread-121115] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:13:33.093 [DEBUG] [Thread-121115] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:13:33.093 [DEBUG] [Thread-121115] [transport.py] [_log()] Compression: none
2025-11-03T19:13:33.093 [DEBUG] [Thread-121115] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:13:33.100 [DEBUG] [Thread-121115] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:13:33.100 [DEBUG] [Thread-121115] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:13:33.101 [DEBUG] [Thread-121115] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:13:33.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:13:33.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:13:33.102 [DEBUG] [Thread-121115] [transport.py] [_log()] userauth is OK
2025-11-03T19:13:33.102 [DEBUG] [Thread-121115] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:13:33.102 [DEBUG] [Thread-121115] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:13:33.102 [DEBUG] [Thread-121115] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:13:33.102 [DEBUG] [Thread-121115] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:13:33.115 [INFO] [Thread-121115] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:13:33.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:13:33.735 [DEBUG] [Thread-121115] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:13:33.735 [DEBUG] [Thread-121115] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:13:33.735 [DEBUG] [Thread-121115] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:13:33.775 [DEBUG] [Thread-121115] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:13:33.775 [DEBUG] [Thread-121115] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:13:33.780 [DEBUG] [Thread-121115] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:13:33.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:13:33.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:13:33.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:13:33.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:13:33.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:13:33.790 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:13:33.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:13:33.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:13:33.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:13:33.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.717115 -999.00  +21.80  19.36      9  -11.50 1 1 1 1 1   822    0 32.11 -47.79 ----- 19.4 19.4 303.4 26.6 22.1 -31.1 22.1 -30.1 21.8 -30.1 22.1 -30.6
2025-11-03T19:13:33.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:13:33.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:13:33.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.717115
2025-11-03T19:13:33.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:13:33.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:13:33.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:13:33.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:13:33.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:13:33.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:13:11', tmtdew=41.66, humidity=5.0, cloud=0.0, wind=25.46, temperature=21.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:12:38.736', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:13:33.791 [DEBUG] [Thread-121115] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:13:33.864 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:13:33.876 [DEBUG] [Thread-121118] [transport.py] [_log()] starting thread (client mode): 0x1174f610
2025-11-03T19:13:33.876 [DEBUG] [Thread-121118] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:13:33.890 [DEBUG] [Thread-121118] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:13:33.890 [INFO] [Thread-121118] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:13:33.898 [DEBUG] [Thread-121118] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:13:33.898 [DEBUG] [Thread-121118] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:13:33.898 [DEBUG] [Thread-121118] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:13:33.898 [DEBUG] [Thread-121118] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:13:33.898 [DEBUG] [Thread-121118] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:13:33.898 [DEBUG] [Thread-121118] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:13:33.898 [DEBUG] [Thread-121118] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:13:33.898 [DEBUG] [Thread-121118] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:13:33.898 [DEBUG] [Thread-121118] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:13:33.898 [DEBUG] [Thread-121118] [transport.py] [_log()] client lang: <none>
2025-11-03T19:13:33.898 [DEBUG] [Thread-121118] [transport.py] [_log()] server lang: <none>
2025-11-03T19:13:33.898 [DEBUG] [Thread-121118] [transport.py] [_log()] kex follows: False
2025-11-03T19:13:33.898 [DEBUG] [Thread-121118] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:13:33.898 [DEBUG] [Thread-121118] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:13:33.898 [DEBUG] [Thread-121118] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:13:33.898 [DEBUG] [Thread-121118] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:13:33.898 [DEBUG] [Thread-121118] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:13:33.898 [DEBUG] [Thread-121118] [transport.py] [_log()] Compression: none
2025-11-03T19:13:33.898 [DEBUG] [Thread-121118] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:13:33.952 [DEBUG] [Thread-121118] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:13:33.953 [DEBUG] [Thread-121118] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:13:33.953 [DEBUG] [Thread-121118] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:13:33.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:13:33.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:13:34.010 [DEBUG] [Thread-121118] [transport.py] [_log()] userauth is OK
2025-11-03T19:13:34.010 [DEBUG] [Thread-121118] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:13:34.010 [DEBUG] [Thread-121118] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:13:34.010 [DEBUG] [Thread-121118] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:13:34.010 [DEBUG] [Thread-121118] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:13:34.026 [INFO] [Thread-121118] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:13:34.026 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:13:34.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:13:34.856 [DEBUG] [Thread-121118] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:13:34.856 [DEBUG] [Thread-121118] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:13:34.904 [DEBUG] [Thread-121118] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:13:34.905 [DEBUG] [Thread-121118] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:13:34.914 [DEBUG] [Thread-121118] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:13:34.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:13:34.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:13:34.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:13:34.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:13:34.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:13:34.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:13:34.960 [DEBUG] [Thread-121118] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:13:39.796 [DEBUG] [Thread-121120 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:13:45.468 [DEBUG] [Thread-121121 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:13:54.306 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:13:54.307 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:13:54.844 [DEBUG] [Thread-121122 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:14:04.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:14:04.992 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:14:04.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:14:05.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 13, 43), 41.67, 4.98, 0.0, 25.35, 21.79, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:14:05.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:13:43
2025-11-03T19:14:05.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:14:05.957 [DEBUG] [Thread-121123] [transport.py] [_log()] starting thread (client mode): 0xedc6b90
2025-11-03T19:14:05.957 [DEBUG] [Thread-121123] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:14:05.977 [DEBUG] [Thread-121123] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:14:05.977 [INFO] [Thread-121123] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:14:05.980 [DEBUG] [Thread-121123] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:14:05.980 [DEBUG] [Thread-121123] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:14:05.981 [DEBUG] [Thread-121123] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:14:05.981 [DEBUG] [Thread-121123] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:14:05.981 [DEBUG] [Thread-121123] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:14:05.981 [DEBUG] [Thread-121123] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:14:05.981 [DEBUG] [Thread-121123] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:14:05.981 [DEBUG] [Thread-121123] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:14:05.981 [DEBUG] [Thread-121123] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:14:05.981 [DEBUG] [Thread-121123] [transport.py] [_log()] client lang: <none>
2025-11-03T19:14:05.981 [DEBUG] [Thread-121123] [transport.py] [_log()] server lang: <none>
2025-11-03T19:14:05.981 [DEBUG] [Thread-121123] [transport.py] [_log()] kex follows: False
2025-11-03T19:14:05.981 [DEBUG] [Thread-121123] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:14:05.981 [DEBUG] [Thread-121123] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:14:05.982 [DEBUG] [Thread-121123] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:14:05.982 [DEBUG] [Thread-121123] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:14:05.982 [DEBUG] [Thread-121123] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:14:05.982 [DEBUG] [Thread-121123] [transport.py] [_log()] Compression: none
2025-11-03T19:14:05.982 [DEBUG] [Thread-121123] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:14:05.999 [DEBUG] [Thread-121123] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:14:06.000 [DEBUG] [Thread-121123] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:14:06.000 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:14:06.001 [DEBUG] [Thread-121123] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:14:06.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:14:06.003 [DEBUG] [Thread-121123] [transport.py] [_log()] userauth is OK
2025-11-03T19:14:06.003 [DEBUG] [Thread-121123] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:14:06.003 [DEBUG] [Thread-121123] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:14:06.003 [DEBUG] [Thread-121123] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:14:06.004 [DEBUG] [Thread-121123] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:14:06.025 [INFO] [Thread-121123] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:14:06.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:14:06.673 [DEBUG] [Thread-121123] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:14:06.673 [DEBUG] [Thread-121123] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:14:06.673 [DEBUG] [Thread-121123] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:14:06.714 [DEBUG] [Thread-121123] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:14:06.714 [DEBUG] [Thread-121123] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:14:06.716 [DEBUG] [Thread-121123] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:14:06.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:14:06.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:14:06.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:14:06.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:14:06.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:14:06.733 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:14:06.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:14:06.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:14:06.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:14:06.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.717463 -999.00  +21.80  28.68      9  -11.50 1 1 1 1 1   816    0 31.99 -47.53 ----- 28.7 28.7 290.6 32.5 22.1 -31.2 22.1 -30.3 21.8 -30.1 22.1 -30.9
2025-11-03T19:14:06.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:14:06.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:14:06.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.717463
2025-11-03T19:14:06.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:14:06.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:14:06.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:14:06.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:14:06.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:14:06.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:13:43', tmtdew=41.67, humidity=4.98, cloud=0.0, wind=25.35, temperature=21.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:13:08.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:14:06.734 [DEBUG] [Thread-121123] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:14:06.806 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:14:06.817 [DEBUG] [Thread-121126] [transport.py] [_log()] starting thread (client mode): 0x1174f550
2025-11-03T19:14:06.818 [DEBUG] [Thread-121126] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:14:06.832 [DEBUG] [Thread-121126] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:14:06.833 [INFO] [Thread-121126] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:14:06.840 [DEBUG] [Thread-121126] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:14:06.840 [DEBUG] [Thread-121126] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:14:06.840 [DEBUG] [Thread-121126] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:14:06.840 [DEBUG] [Thread-121126] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:14:06.840 [DEBUG] [Thread-121126] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:14:06.840 [DEBUG] [Thread-121126] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:14:06.840 [DEBUG] [Thread-121126] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:14:06.840 [DEBUG] [Thread-121126] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:14:06.840 [DEBUG] [Thread-121126] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:14:06.840 [DEBUG] [Thread-121126] [transport.py] [_log()] client lang: <none>
2025-11-03T19:14:06.840 [DEBUG] [Thread-121126] [transport.py] [_log()] server lang: <none>
2025-11-03T19:14:06.840 [DEBUG] [Thread-121126] [transport.py] [_log()] kex follows: False
2025-11-03T19:14:06.840 [DEBUG] [Thread-121126] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:14:06.840 [DEBUG] [Thread-121126] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:14:06.840 [DEBUG] [Thread-121126] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:14:06.840 [DEBUG] [Thread-121126] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:14:06.841 [DEBUG] [Thread-121126] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:14:06.841 [DEBUG] [Thread-121126] [transport.py] [_log()] Compression: none
2025-11-03T19:14:06.841 [DEBUG] [Thread-121126] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:14:06.896 [DEBUG] [Thread-121126] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:14:06.896 [DEBUG] [Thread-121126] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:14:06.896 [DEBUG] [Thread-121126] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:14:06.896 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:14:06.897 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:14:06.953 [DEBUG] [Thread-121126] [transport.py] [_log()] userauth is OK
2025-11-03T19:14:06.953 [DEBUG] [Thread-121126] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:14:06.953 [DEBUG] [Thread-121126] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:14:06.953 [DEBUG] [Thread-121126] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:14:06.953 [DEBUG] [Thread-121126] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:14:06.967 [INFO] [Thread-121126] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:14:06.967 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:14:06.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:14:07.786 [DEBUG] [Thread-121126] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:14:07.786 [DEBUG] [Thread-121126] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:14:07.834 [DEBUG] [Thread-121126] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:14:07.834 [DEBUG] [Thread-121126] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:14:07.842 [DEBUG] [Thread-121126] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:14:07.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:14:07.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:14:07.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:14:07.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:14:07.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:14:07.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:14:07.877 [DEBUG] [Thread-121126] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:14:09.887 [DEBUG] [Thread-121128 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:14:24.938 [DEBUG] [Thread-121129 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:14:37.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:14:37.899 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:14:37.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:14:38.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 14, 16), 41.75, 4.95, 0.0, 24.67, 21.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:14:38.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:14:16
2025-11-03T19:14:38.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:14:38.914 [DEBUG] [Thread-121130] [transport.py] [_log()] starting thread (client mode): 0xedc5db0
2025-11-03T19:14:38.914 [DEBUG] [Thread-121130] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:14:38.924 [DEBUG] [Thread-121130] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:14:38.924 [INFO] [Thread-121130] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:14:38.925 [DEBUG] [Thread-121130] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:14:38.925 [DEBUG] [Thread-121130] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:14:38.925 [DEBUG] [Thread-121130] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:14:38.925 [DEBUG] [Thread-121130] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:14:38.925 [DEBUG] [Thread-121130] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:14:38.926 [DEBUG] [Thread-121130] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:14:38.926 [DEBUG] [Thread-121130] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:14:38.926 [DEBUG] [Thread-121130] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:14:38.926 [DEBUG] [Thread-121130] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:14:38.926 [DEBUG] [Thread-121130] [transport.py] [_log()] client lang: <none>
2025-11-03T19:14:38.926 [DEBUG] [Thread-121130] [transport.py] [_log()] server lang: <none>
2025-11-03T19:14:38.926 [DEBUG] [Thread-121130] [transport.py] [_log()] kex follows: False
2025-11-03T19:14:38.926 [DEBUG] [Thread-121130] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:14:38.926 [DEBUG] [Thread-121130] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:14:38.926 [DEBUG] [Thread-121130] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:14:38.926 [DEBUG] [Thread-121130] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:14:38.926 [DEBUG] [Thread-121130] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:14:38.926 [DEBUG] [Thread-121130] [transport.py] [_log()] Compression: none
2025-11-03T19:14:38.926 [DEBUG] [Thread-121130] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:14:38.935 [DEBUG] [Thread-121130] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:14:38.935 [DEBUG] [Thread-121130] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:14:38.935 [DEBUG] [Thread-121130] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:14:38.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:14:38.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:14:38.936 [DEBUG] [Thread-121130] [transport.py] [_log()] userauth is OK
2025-11-03T19:14:38.936 [DEBUG] [Thread-121130] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:14:38.936 [DEBUG] [Thread-121130] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:14:38.936 [DEBUG] [Thread-121130] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:14:38.936 [DEBUG] [Thread-121130] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:14:38.944 [INFO] [Thread-121130] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:14:38.945 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:14:39.568 [DEBUG] [Thread-121130] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:14:39.568 [DEBUG] [Thread-121130] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:14:39.568 [DEBUG] [Thread-121130] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:14:39.609 [DEBUG] [Thread-121130] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:14:39.609 [DEBUG] [Thread-121130] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:14:39.611 [DEBUG] [Thread-121130] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:14:39.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:14:39.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:14:39.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:14:39.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:14:39.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:14:39.629 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:14:39.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:14:39.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:14:39.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:14:39.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.717810 -999.00  +21.80  21.00      9  -11.40 1 1 1 1 1   809    0 32.34 -45.36 ----- 21.0 21.0 303.0 25.1 22.0 -31.2 22.0 -30.2 21.8 -30.2 22.0 -30.8
2025-11-03T19:14:39.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:14:39.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:14:39.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.717810
2025-11-03T19:14:39.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:14:39.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:14:39.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:14:39.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:14:39.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:14:39.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:14:16', tmtdew=41.75, humidity=4.95, cloud=0.0, wind=24.67, temperature=21.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:13:38.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:14:39.631 [DEBUG] [Thread-121130] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:14:39.711 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:14:39.723 [DEBUG] [Thread-121133] [transport.py] [_log()] starting thread (client mode): 0x1179a080
2025-11-03T19:14:39.723 [DEBUG] [Thread-121133] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:14:39.739 [DEBUG] [Thread-121133] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:14:39.739 [INFO] [Thread-121133] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:14:39.746 [DEBUG] [Thread-121133] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:14:39.746 [DEBUG] [Thread-121133] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:14:39.746 [DEBUG] [Thread-121133] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:14:39.746 [DEBUG] [Thread-121133] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:14:39.746 [DEBUG] [Thread-121133] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:14:39.746 [DEBUG] [Thread-121133] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:14:39.746 [DEBUG] [Thread-121133] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:14:39.747 [DEBUG] [Thread-121133] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:14:39.747 [DEBUG] [Thread-121133] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:14:39.747 [DEBUG] [Thread-121133] [transport.py] [_log()] client lang: <none>
2025-11-03T19:14:39.747 [DEBUG] [Thread-121133] [transport.py] [_log()] server lang: <none>
2025-11-03T19:14:39.747 [DEBUG] [Thread-121133] [transport.py] [_log()] kex follows: False
2025-11-03T19:14:39.747 [DEBUG] [Thread-121133] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:14:39.747 [DEBUG] [Thread-121133] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:14:39.747 [DEBUG] [Thread-121133] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:14:39.747 [DEBUG] [Thread-121133] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:14:39.747 [DEBUG] [Thread-121133] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:14:39.747 [DEBUG] [Thread-121133] [transport.py] [_log()] Compression: none
2025-11-03T19:14:39.747 [DEBUG] [Thread-121133] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:14:39.803 [DEBUG] [Thread-121133] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:14:39.803 [DEBUG] [Thread-121133] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:14:39.803 [DEBUG] [Thread-121133] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:14:39.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:14:39.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:14:39.860 [DEBUG] [Thread-121133] [transport.py] [_log()] userauth is OK
2025-11-03T19:14:39.860 [DEBUG] [Thread-121133] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:14:39.860 [DEBUG] [Thread-121133] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:14:39.860 [DEBUG] [Thread-121133] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:14:39.860 [DEBUG] [Thread-121133] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:14:39.874 [INFO] [Thread-121133] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:14:39.874 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:14:39.874 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:14:39.981 [DEBUG] [Thread-121135 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:14:40.707 [DEBUG] [Thread-121133] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:14:40.707 [DEBUG] [Thread-121133] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:14:40.754 [DEBUG] [Thread-121133] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:14:40.754 [DEBUG] [Thread-121133] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:14:40.763 [DEBUG] [Thread-121133] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:14:40.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:14:40.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:14:40.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:14:40.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:14:40.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:14:40.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:14:40.795 [DEBUG] [Thread-121133] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:14:45.613 [DEBUG] [Thread-121136 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:14:55.032 [DEBUG] [Thread-121137 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:15:01.135 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:15:01.137 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:15:10.069 [DEBUG] [Thread-121138 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:15:10.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:15:10.818 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:15:10.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:15:11.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 14, 48), 41.71, 5.0, 0.0, 22.78, 21.88, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:15:11.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:14:48
2025-11-03T19:15:11.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:15:11.892 [DEBUG] [Thread-121139] [transport.py] [_log()] starting thread (client mode): 0xed884f0
2025-11-03T19:15:11.892 [DEBUG] [Thread-121139] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:15:11.913 [DEBUG] [Thread-121139] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:15:11.913 [INFO] [Thread-121139] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:15:11.923 [DEBUG] [Thread-121139] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:15:11.923 [DEBUG] [Thread-121139] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:15:11.923 [DEBUG] [Thread-121139] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:15:11.923 [DEBUG] [Thread-121139] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:15:11.923 [DEBUG] [Thread-121139] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:15:11.923 [DEBUG] [Thread-121139] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:15:11.923 [DEBUG] [Thread-121139] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:15:11.923 [DEBUG] [Thread-121139] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:15:11.923 [DEBUG] [Thread-121139] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:15:11.923 [DEBUG] [Thread-121139] [transport.py] [_log()] client lang: <none>
2025-11-03T19:15:11.923 [DEBUG] [Thread-121139] [transport.py] [_log()] server lang: <none>
2025-11-03T19:15:11.923 [DEBUG] [Thread-121139] [transport.py] [_log()] kex follows: False
2025-11-03T19:15:11.923 [DEBUG] [Thread-121139] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:15:11.924 [DEBUG] [Thread-121139] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:15:11.924 [DEBUG] [Thread-121139] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:15:11.924 [DEBUG] [Thread-121139] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:15:11.924 [DEBUG] [Thread-121139] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:15:11.925 [DEBUG] [Thread-121139] [transport.py] [_log()] Compression: none
2025-11-03T19:15:11.925 [DEBUG] [Thread-121139] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:15:11.950 [DEBUG] [Thread-121139] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:15:11.950 [DEBUG] [Thread-121139] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:15:11.951 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:15:11.951 [DEBUG] [Thread-121139] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:15:11.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:15:11.954 [DEBUG] [Thread-121139] [transport.py] [_log()] userauth is OK
2025-11-03T19:15:11.954 [DEBUG] [Thread-121139] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:15:11.954 [DEBUG] [Thread-121139] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:15:11.955 [DEBUG] [Thread-121139] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:15:11.955 [DEBUG] [Thread-121139] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:15:11.980 [INFO] [Thread-121139] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:15:11.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:15:13.732 [DEBUG] [Thread-121139] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:15:13.732 [DEBUG] [Thread-121139] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:15:13.732 [DEBUG] [Thread-121139] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:15:13.773 [DEBUG] [Thread-121139] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:15:13.773 [DEBUG] [Thread-121139] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:15:13.776 [DEBUG] [Thread-121139] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:15:13.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:15:13.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:15:13.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:15:13.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:15:13.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:15:13.795 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:15:13.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:15:13.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:15:13.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:15:13.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.718504 -999.00  +21.80  18.81      9  -11.50 1 1 1 1 1   793    0 32.12 -49.20 ----- 18.8 18.8 317.0 28.9 22.0 -31.1 22.0 -30.1 21.7 -30.0 21.9 -30.9
2025-11-03T19:15:13.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:15:13.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:15:13.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.718504
2025-11-03T19:15:13.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:15:13.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:15:13.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:15:13.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:15:13.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:15:13.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:14:48', tmtdew=41.71, humidity=5.0, cloud=0.0, wind=22.78, temperature=21.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:14:38.746', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:15:13.796 [DEBUG] [Thread-121139] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:15:13.872 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:15:13.884 [DEBUG] [Thread-121142] [transport.py] [_log()] starting thread (client mode): 0xedc4be0
2025-11-03T19:15:13.884 [DEBUG] [Thread-121142] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:15:13.899 [DEBUG] [Thread-121142] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:15:13.899 [INFO] [Thread-121142] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:15:13.907 [DEBUG] [Thread-121142] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:15:13.907 [DEBUG] [Thread-121142] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:15:13.907 [DEBUG] [Thread-121142] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:15:13.907 [DEBUG] [Thread-121142] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:15:13.907 [DEBUG] [Thread-121142] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:15:13.907 [DEBUG] [Thread-121142] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:15:13.907 [DEBUG] [Thread-121142] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:15:13.907 [DEBUG] [Thread-121142] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:15:13.907 [DEBUG] [Thread-121142] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:15:13.907 [DEBUG] [Thread-121142] [transport.py] [_log()] client lang: <none>
2025-11-03T19:15:13.907 [DEBUG] [Thread-121142] [transport.py] [_log()] server lang: <none>
2025-11-03T19:15:13.907 [DEBUG] [Thread-121142] [transport.py] [_log()] kex follows: False
2025-11-03T19:15:13.907 [DEBUG] [Thread-121142] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:15:13.907 [DEBUG] [Thread-121142] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:15:13.908 [DEBUG] [Thread-121142] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:15:13.908 [DEBUG] [Thread-121142] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:15:13.908 [DEBUG] [Thread-121142] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:15:13.908 [DEBUG] [Thread-121142] [transport.py] [_log()] Compression: none
2025-11-03T19:15:13.908 [DEBUG] [Thread-121142] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:15:13.965 [DEBUG] [Thread-121142] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:15:13.966 [DEBUG] [Thread-121142] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:15:13.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:15:13.967 [DEBUG] [Thread-121142] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:15:13.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:15:14.027 [DEBUG] [Thread-121142] [transport.py] [_log()] userauth is OK
2025-11-03T19:15:14.027 [DEBUG] [Thread-121142] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:15:14.027 [DEBUG] [Thread-121142] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:15:14.027 [DEBUG] [Thread-121142] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:15:14.027 [DEBUG] [Thread-121142] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:15:14.045 [INFO] [Thread-121142] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:15:14.045 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:15:14.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:15:14.860 [DEBUG] [Thread-121142] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:15:14.860 [DEBUG] [Thread-121142] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:15:14.908 [DEBUG] [Thread-121142] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:15:14.908 [DEBUG] [Thread-121142] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:15:14.917 [DEBUG] [Thread-121142] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:15:14.925 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:15:14.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:15:14.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:15:14.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:15:14.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:15:14.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:15:14.949 [DEBUG] [Thread-121142] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:15:25.102 [DEBUG] [Thread-121144 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:15:40.158 [DEBUG] [Thread-121145 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:15:44.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:15:44.972 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:15:44.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:15:45.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 15, 21), 41.73, 4.98, 0.0, 22.34, 21.82, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:15:45.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:15:21
2025-11-03T19:15:45.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:15:45.926 [DEBUG] [Thread-121146 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:15:46.016 [DEBUG] [Thread-121147] [transport.py] [_log()] starting thread (client mode): 0xeda38e0
2025-11-03T19:15:46.016 [DEBUG] [Thread-121147] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:15:46.038 [DEBUG] [Thread-121147] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:15:46.038 [INFO] [Thread-121147] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:15:46.042 [DEBUG] [Thread-121147] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:15:46.042 [DEBUG] [Thread-121147] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:15:46.042 [DEBUG] [Thread-121147] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:15:46.042 [DEBUG] [Thread-121147] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:15:46.042 [DEBUG] [Thread-121147] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:15:46.042 [DEBUG] [Thread-121147] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:15:46.042 [DEBUG] [Thread-121147] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:15:46.042 [DEBUG] [Thread-121147] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:15:46.043 [DEBUG] [Thread-121147] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:15:46.043 [DEBUG] [Thread-121147] [transport.py] [_log()] client lang: <none>
2025-11-03T19:15:46.043 [DEBUG] [Thread-121147] [transport.py] [_log()] server lang: <none>
2025-11-03T19:15:46.043 [DEBUG] [Thread-121147] [transport.py] [_log()] kex follows: False
2025-11-03T19:15:46.043 [DEBUG] [Thread-121147] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:15:46.043 [DEBUG] [Thread-121147] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:15:46.043 [DEBUG] [Thread-121147] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:15:46.043 [DEBUG] [Thread-121147] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:15:46.044 [DEBUG] [Thread-121147] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:15:46.044 [DEBUG] [Thread-121147] [transport.py] [_log()] Compression: none
2025-11-03T19:15:46.044 [DEBUG] [Thread-121147] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:15:46.063 [DEBUG] [Thread-121147] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:15:46.064 [DEBUG] [Thread-121147] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:15:46.065 [DEBUG] [Thread-121147] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:15:46.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:15:46.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:15:46.067 [DEBUG] [Thread-121147] [transport.py] [_log()] userauth is OK
2025-11-03T19:15:46.067 [DEBUG] [Thread-121147] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:15:46.067 [DEBUG] [Thread-121147] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:15:46.067 [DEBUG] [Thread-121147] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:15:46.067 [DEBUG] [Thread-121147] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:15:46.093 [INFO] [Thread-121147] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:15:46.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:15:46.720 [DEBUG] [Thread-121147] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:15:46.720 [DEBUG] [Thread-121147] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:15:46.720 [DEBUG] [Thread-121147] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:15:46.760 [DEBUG] [Thread-121147] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:15:46.760 [DEBUG] [Thread-121147] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:15:46.766 [DEBUG] [Thread-121147] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:15:46.781 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:15:46.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:15:46.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:15:46.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:15:46.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:15:46.786 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:15:46.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:15:46.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:15:46.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:15:46.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.718851 -999.00  +21.70  18.25      9  -11.40 1 1 1 1 1   785    0 31.81 -50.73 ----- 18.2 18.2 309.2 28.3 22.0 -31.0 21.9 -30.1 21.6 -30.1 21.9 -30.8
2025-11-03T19:15:46.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:15:46.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:15:46.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.718851
2025-11-03T19:15:46.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:15:46.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:15:46.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:15:46.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:15:46.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:15:46.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:15:21', tmtdew=41.73, humidity=4.98, cloud=0.0, wind=22.34, temperature=21.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:15:08.726', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:15:46.787 [DEBUG] [Thread-121147] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:15:46.859 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:15:46.872 [DEBUG] [Thread-121150] [transport.py] [_log()] starting thread (client mode): 0xed89ae0
2025-11-03T19:15:46.872 [DEBUG] [Thread-121150] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:15:46.888 [DEBUG] [Thread-121150] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:15:46.888 [INFO] [Thread-121150] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:15:46.896 [DEBUG] [Thread-121150] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:15:46.896 [DEBUG] [Thread-121150] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:15:46.896 [DEBUG] [Thread-121150] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:15:46.897 [DEBUG] [Thread-121150] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:15:46.897 [DEBUG] [Thread-121150] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:15:46.897 [DEBUG] [Thread-121150] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:15:46.897 [DEBUG] [Thread-121150] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:15:46.897 [DEBUG] [Thread-121150] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:15:46.897 [DEBUG] [Thread-121150] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:15:46.897 [DEBUG] [Thread-121150] [transport.py] [_log()] client lang: <none>
2025-11-03T19:15:46.897 [DEBUG] [Thread-121150] [transport.py] [_log()] server lang: <none>
2025-11-03T19:15:46.897 [DEBUG] [Thread-121150] [transport.py] [_log()] kex follows: False
2025-11-03T19:15:46.897 [DEBUG] [Thread-121150] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:15:46.897 [DEBUG] [Thread-121150] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:15:46.897 [DEBUG] [Thread-121150] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:15:46.897 [DEBUG] [Thread-121150] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:15:46.897 [DEBUG] [Thread-121150] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:15:46.897 [DEBUG] [Thread-121150] [transport.py] [_log()] Compression: none
2025-11-03T19:15:46.897 [DEBUG] [Thread-121150] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:15:46.956 [DEBUG] [Thread-121150] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:15:46.956 [DEBUG] [Thread-121150] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:15:46.956 [DEBUG] [Thread-121150] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:15:46.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:15:46.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:15:47.014 [DEBUG] [Thread-121150] [transport.py] [_log()] userauth is OK
2025-11-03T19:15:47.014 [DEBUG] [Thread-121150] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:15:47.015 [DEBUG] [Thread-121150] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:15:47.015 [DEBUG] [Thread-121150] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:15:47.015 [DEBUG] [Thread-121150] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:15:47.037 [INFO] [Thread-121150] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:15:47.037 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:15:47.037 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:15:47.895 [DEBUG] [Thread-121150] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:15:47.896 [DEBUG] [Thread-121150] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:15:47.943 [DEBUG] [Thread-121150] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:15:47.944 [DEBUG] [Thread-121150] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:15:47.953 [DEBUG] [Thread-121150] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:15:47.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:15:47.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:15:47.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:15:47.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:15:47.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:15:47.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:15:47.990 [DEBUG] [Thread-121150] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:15:55.185 [DEBUG] [Thread-121152 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:16:06.885 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:16:06.887 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:16:10.228 [DEBUG] [Thread-121153 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:16:18.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:16:18.008 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:16:18.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:16:18.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 15, 53), 41.71, 5.02, 0.0, 27.84, 21.84, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:16:18.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:15:53
2025-11-03T19:16:18.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:16:19.011 [DEBUG] [Thread-121154] [transport.py] [_log()] starting thread (client mode): 0x11763c10
2025-11-03T19:16:19.011 [DEBUG] [Thread-121154] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:16:19.031 [DEBUG] [Thread-121154] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:16:19.032 [INFO] [Thread-121154] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:16:19.035 [DEBUG] [Thread-121154] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:16:19.035 [DEBUG] [Thread-121154] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:16:19.035 [DEBUG] [Thread-121154] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:16:19.035 [DEBUG] [Thread-121154] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:16:19.035 [DEBUG] [Thread-121154] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:16:19.035 [DEBUG] [Thread-121154] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:16:19.035 [DEBUG] [Thread-121154] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:16:19.035 [DEBUG] [Thread-121154] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:16:19.035 [DEBUG] [Thread-121154] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:16:19.036 [DEBUG] [Thread-121154] [transport.py] [_log()] client lang: <none>
2025-11-03T19:16:19.036 [DEBUG] [Thread-121154] [transport.py] [_log()] server lang: <none>
2025-11-03T19:16:19.036 [DEBUG] [Thread-121154] [transport.py] [_log()] kex follows: False
2025-11-03T19:16:19.036 [DEBUG] [Thread-121154] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:16:19.036 [DEBUG] [Thread-121154] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:16:19.036 [DEBUG] [Thread-121154] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:16:19.036 [DEBUG] [Thread-121154] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:16:19.036 [DEBUG] [Thread-121154] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:16:19.036 [DEBUG] [Thread-121154] [transport.py] [_log()] Compression: none
2025-11-03T19:16:19.036 [DEBUG] [Thread-121154] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:16:19.055 [DEBUG] [Thread-121154] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:16:19.056 [DEBUG] [Thread-121154] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:16:19.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:16:19.057 [DEBUG] [Thread-121154] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:16:19.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:16:19.069 [DEBUG] [Thread-121154] [transport.py] [_log()] userauth is OK
2025-11-03T19:16:19.069 [DEBUG] [Thread-121154] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:16:19.069 [DEBUG] [Thread-121154] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:16:19.070 [DEBUG] [Thread-121154] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:16:19.070 [DEBUG] [Thread-121154] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:16:19.097 [INFO] [Thread-121154] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:16:19.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:16:19.712 [DEBUG] [Thread-121154] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:16:19.712 [DEBUG] [Thread-121154] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:16:19.712 [DEBUG] [Thread-121154] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:16:19.752 [DEBUG] [Thread-121154] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:16:19.752 [DEBUG] [Thread-121154] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:16:19.755 [DEBUG] [Thread-121154] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:16:19.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:16:19.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:16:19.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:16:19.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:16:19.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:16:19.774 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:16:19.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:16:19.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:16:19.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:16:19.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.719199 -999.00  +21.70  20.40      9  -11.40 1 1 1 1 1   775    0 31.67 -51.17 ----- 20.4 20.4 319.6 30.1 21.9 -31.2 21.9 -30.1 21.6 -30.0 21.9 -30.9
2025-11-03T19:16:19.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:16:19.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:16:19.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.719199
2025-11-03T19:16:19.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:16:19.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:16:19.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:16:19.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:16:19.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:16:19.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:15:53', tmtdew=41.71, humidity=5.02, cloud=0.0, wind=27.84, temperature=21.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:15:38.794', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:16:19.775 [DEBUG] [Thread-121154] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:16:19.847 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:16:19.860 [DEBUG] [Thread-121157] [transport.py] [_log()] starting thread (client mode): 0x1179a500
2025-11-03T19:16:19.860 [DEBUG] [Thread-121157] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:16:19.874 [DEBUG] [Thread-121157] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:16:19.874 [INFO] [Thread-121157] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:16:19.881 [DEBUG] [Thread-121157] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:16:19.881 [DEBUG] [Thread-121157] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:16:19.881 [DEBUG] [Thread-121157] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:16:19.881 [DEBUG] [Thread-121157] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:16:19.881 [DEBUG] [Thread-121157] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:16:19.882 [DEBUG] [Thread-121157] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:16:19.882 [DEBUG] [Thread-121157] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:16:19.882 [DEBUG] [Thread-121157] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:16:19.882 [DEBUG] [Thread-121157] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:16:19.882 [DEBUG] [Thread-121157] [transport.py] [_log()] client lang: <none>
2025-11-03T19:16:19.882 [DEBUG] [Thread-121157] [transport.py] [_log()] server lang: <none>
2025-11-03T19:16:19.882 [DEBUG] [Thread-121157] [transport.py] [_log()] kex follows: False
2025-11-03T19:16:19.882 [DEBUG] [Thread-121157] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:16:19.882 [DEBUG] [Thread-121157] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:16:19.882 [DEBUG] [Thread-121157] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:16:19.882 [DEBUG] [Thread-121157] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:16:19.882 [DEBUG] [Thread-121157] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:16:19.882 [DEBUG] [Thread-121157] [transport.py] [_log()] Compression: none
2025-11-03T19:16:19.882 [DEBUG] [Thread-121157] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:16:19.945 [DEBUG] [Thread-121157] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:16:19.945 [DEBUG] [Thread-121157] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:16:19.945 [DEBUG] [Thread-121157] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:16:19.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:16:19.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:16:20.000 [DEBUG] [Thread-121157] [transport.py] [_log()] userauth is OK
2025-11-03T19:16:20.001 [DEBUG] [Thread-121157] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:16:20.001 [DEBUG] [Thread-121157] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:16:20.001 [DEBUG] [Thread-121157] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:16:20.001 [DEBUG] [Thread-121157] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:16:20.015 [INFO] [Thread-121157] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:16:20.015 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:16:20.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:16:20.862 [DEBUG] [Thread-121157] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:16:20.862 [DEBUG] [Thread-121157] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:16:20.910 [DEBUG] [Thread-121157] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:16:20.910 [DEBUG] [Thread-121157] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:16:20.919 [DEBUG] [Thread-121157] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:16:20.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:16:20.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:16:20.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:16:20.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:16:20.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:16:20.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:16:20.956 [DEBUG] [Thread-121157] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:16:25.274 [DEBUG] [Thread-121159 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:16:40.325 [DEBUG] [Thread-121160 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:16:46.005 [DEBUG] [Thread-121161 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:16:50.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:16:50.973 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:16:50.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:16:51.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 16, 25), 41.77, 4.98, 0.0, 28.09, 21.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:16:51.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:16:25
2025-11-03T19:16:51.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:16:51.941 [DEBUG] [Thread-121162] [transport.py] [_log()] starting thread (client mode): 0x141dbbe0
2025-11-03T19:16:51.941 [DEBUG] [Thread-121162] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:16:51.960 [DEBUG] [Thread-121162] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:16:51.960 [INFO] [Thread-121162] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:16:51.962 [DEBUG] [Thread-121162] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:16:51.962 [DEBUG] [Thread-121162] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:16:51.962 [DEBUG] [Thread-121162] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:16:51.962 [DEBUG] [Thread-121162] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:16:51.962 [DEBUG] [Thread-121162] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:16:51.962 [DEBUG] [Thread-121162] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:16:51.962 [DEBUG] [Thread-121162] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:16:51.962 [DEBUG] [Thread-121162] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:16:51.962 [DEBUG] [Thread-121162] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:16:51.962 [DEBUG] [Thread-121162] [transport.py] [_log()] client lang: <none>
2025-11-03T19:16:51.962 [DEBUG] [Thread-121162] [transport.py] [_log()] server lang: <none>
2025-11-03T19:16:51.962 [DEBUG] [Thread-121162] [transport.py] [_log()] kex follows: False
2025-11-03T19:16:51.962 [DEBUG] [Thread-121162] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:16:51.962 [DEBUG] [Thread-121162] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:16:51.962 [DEBUG] [Thread-121162] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:16:51.962 [DEBUG] [Thread-121162] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:16:51.962 [DEBUG] [Thread-121162] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:16:51.962 [DEBUG] [Thread-121162] [transport.py] [_log()] Compression: none
2025-11-03T19:16:51.962 [DEBUG] [Thread-121162] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:16:51.976 [DEBUG] [Thread-121162] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:16:51.976 [DEBUG] [Thread-121162] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:16:51.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:16:51.977 [DEBUG] [Thread-121162] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:16:51.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:16:51.979 [DEBUG] [Thread-121162] [transport.py] [_log()] userauth is OK
2025-11-03T19:16:51.979 [DEBUG] [Thread-121162] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:16:51.980 [DEBUG] [Thread-121162] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:16:51.980 [DEBUG] [Thread-121162] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:16:51.980 [DEBUG] [Thread-121162] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:16:52.003 [INFO] [Thread-121162] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:16:52.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:16:52.777 [DEBUG] [Thread-121162] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:16:52.777 [DEBUG] [Thread-121162] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:16:52.777 [DEBUG] [Thread-121162] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:16:52.818 [DEBUG] [Thread-121162] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:16:52.818 [DEBUG] [Thread-121162] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:16:52.821 [DEBUG] [Thread-121162] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:16:52.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:16:52.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:16:52.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:16:52.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:16:52.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:16:52.847 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:16:52.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:16:52.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:16:52.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:16:52.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.719546 -999.00  +21.70  19.13      9  -11.60 1 1 1 1 1   765    0 31.94 -53.15 ----- 19.1 19.1 308.2 34.2 21.9 -31.2 21.9 -30.0 21.6 -30.1 21.8 -30.8
2025-11-03T19:16:52.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:16:52.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:16:52.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.719546
2025-11-03T19:16:52.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:16:52.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:16:52.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:16:52.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:16:52.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:16:52.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:16:25', tmtdew=41.77, humidity=4.98, cloud=0.0, wind=28.09, temperature=21.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:16:08.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:16:52.848 [DEBUG] [Thread-121162] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:16:52.919 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:16:52.935 [DEBUG] [Thread-121165] [transport.py] [_log()] starting thread (client mode): 0x11760250
2025-11-03T19:16:52.935 [DEBUG] [Thread-121165] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:16:52.950 [DEBUG] [Thread-121165] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:16:52.950 [INFO] [Thread-121165] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:16:52.958 [DEBUG] [Thread-121165] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:16:52.958 [DEBUG] [Thread-121165] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:16:52.958 [DEBUG] [Thread-121165] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:16:52.958 [DEBUG] [Thread-121165] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:16:52.958 [DEBUG] [Thread-121165] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:16:52.959 [DEBUG] [Thread-121165] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:16:52.959 [DEBUG] [Thread-121165] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:16:52.959 [DEBUG] [Thread-121165] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:16:52.959 [DEBUG] [Thread-121165] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:16:52.959 [DEBUG] [Thread-121165] [transport.py] [_log()] client lang: <none>
2025-11-03T19:16:52.959 [DEBUG] [Thread-121165] [transport.py] [_log()] server lang: <none>
2025-11-03T19:16:52.959 [DEBUG] [Thread-121165] [transport.py] [_log()] kex follows: False
2025-11-03T19:16:52.959 [DEBUG] [Thread-121165] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:16:52.960 [DEBUG] [Thread-121165] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:16:52.960 [DEBUG] [Thread-121165] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:16:52.960 [DEBUG] [Thread-121165] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:16:52.960 [DEBUG] [Thread-121165] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:16:52.960 [DEBUG] [Thread-121165] [transport.py] [_log()] Compression: none
2025-11-03T19:16:52.960 [DEBUG] [Thread-121165] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:16:53.017 [DEBUG] [Thread-121165] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:16:53.017 [DEBUG] [Thread-121165] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:16:53.018 [DEBUG] [Thread-121165] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:16:53.018 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:16:53.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:16:53.072 [DEBUG] [Thread-121165] [transport.py] [_log()] userauth is OK
2025-11-03T19:16:53.073 [DEBUG] [Thread-121165] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:16:53.073 [DEBUG] [Thread-121165] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:16:53.073 [DEBUG] [Thread-121165] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:16:53.073 [DEBUG] [Thread-121165] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:16:53.093 [INFO] [Thread-121165] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:16:53.094 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:16:53.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:16:53.931 [DEBUG] [Thread-121165] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:16:53.931 [DEBUG] [Thread-121165] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:16:53.979 [DEBUG] [Thread-121165] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:16:53.979 [DEBUG] [Thread-121165] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:16:53.989 [DEBUG] [Thread-121165] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:16:53.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:16:53.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:16:54.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:16:54.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:16:54.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:16:54.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:16:54.024 [DEBUG] [Thread-121165] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:16:55.373 [DEBUG] [Thread-121167 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:17:10.417 [DEBUG] [Thread-121168 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:17:12.792 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:17:12.793 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:17:24.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:17:24.029 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:17:24.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:17:24.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 16, 58), 41.78, 4.98, 0.0, 25.64, 21.77, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:17:24.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:16:58
2025-11-03T19:17:24.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:17:25.078 [DEBUG] [Thread-121169] [transport.py] [_log()] starting thread (client mode): 0xedc6ef0
2025-11-03T19:17:25.087 [DEBUG] [Thread-121169] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:17:25.098 [DEBUG] [Thread-121169] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:17:25.098 [INFO] [Thread-121169] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:17:25.101 [DEBUG] [Thread-121169] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:17:25.101 [DEBUG] [Thread-121169] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:17:25.101 [DEBUG] [Thread-121169] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:17:25.102 [DEBUG] [Thread-121169] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:17:25.102 [DEBUG] [Thread-121169] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:17:25.102 [DEBUG] [Thread-121169] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:17:25.102 [DEBUG] [Thread-121169] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:17:25.102 [DEBUG] [Thread-121169] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:17:25.102 [DEBUG] [Thread-121169] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:17:25.102 [DEBUG] [Thread-121169] [transport.py] [_log()] client lang: <none>
2025-11-03T19:17:25.102 [DEBUG] [Thread-121169] [transport.py] [_log()] server lang: <none>
2025-11-03T19:17:25.102 [DEBUG] [Thread-121169] [transport.py] [_log()] kex follows: False
2025-11-03T19:17:25.102 [DEBUG] [Thread-121169] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:17:25.102 [DEBUG] [Thread-121169] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:17:25.102 [DEBUG] [Thread-121169] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:17:25.102 [DEBUG] [Thread-121169] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:17:25.102 [DEBUG] [Thread-121169] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:17:25.102 [DEBUG] [Thread-121169] [transport.py] [_log()] Compression: none
2025-11-03T19:17:25.102 [DEBUG] [Thread-121169] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:17:25.118 [DEBUG] [Thread-121169] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:17:25.118 [DEBUG] [Thread-121169] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:17:25.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:17:25.119 [DEBUG] [Thread-121169] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:17:25.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:17:25.122 [DEBUG] [Thread-121169] [transport.py] [_log()] userauth is OK
2025-11-03T19:17:25.122 [DEBUG] [Thread-121169] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:17:25.122 [DEBUG] [Thread-121169] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:17:25.122 [DEBUG] [Thread-121169] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:17:25.122 [DEBUG] [Thread-121169] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:17:25.161 [INFO] [Thread-121169] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:17:25.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:17:25.456 [DEBUG] [Thread-121171 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:17:25.816 [DEBUG] [Thread-121169] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:17:25.816 [DEBUG] [Thread-121169] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:17:25.816 [DEBUG] [Thread-121169] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:17:25.856 [DEBUG] [Thread-121169] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:17:25.856 [DEBUG] [Thread-121169] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:17:25.859 [DEBUG] [Thread-121169] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:17:25.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:17:25.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:17:25.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:17:25.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:17:25.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:17:25.877 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:17:25.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:17:25.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:17:25.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:17:25.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.719893 -999.00  +21.60  24.67      9  -11.60 1 1 1 1 1   754    0 31.55 -58.80 ----- 24.7 24.7 308.4 27.8 21.9 -31.1 21.9 -30.1 21.5 -30.0 21.8 -30.5
2025-11-03T19:17:25.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:17:25.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:17:25.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.719893
2025-11-03T19:17:25.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:17:25.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:17:25.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:17:25.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:17:25.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:17:25.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:16:58', tmtdew=41.78, humidity=4.98, cloud=0.0, wind=25.64, temperature=21.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:16:38.755', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:17:25.878 [DEBUG] [Thread-121169] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:17:25.949 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:17:25.961 [DEBUG] [Thread-121173] [transport.py] [_log()] starting thread (client mode): 0x1174c490
2025-11-03T19:17:25.961 [DEBUG] [Thread-121173] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:17:25.976 [DEBUG] [Thread-121173] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:17:25.976 [INFO] [Thread-121173] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:17:25.984 [DEBUG] [Thread-121173] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:17:25.984 [DEBUG] [Thread-121173] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:17:25.984 [DEBUG] [Thread-121173] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:17:25.984 [DEBUG] [Thread-121173] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:17:25.984 [DEBUG] [Thread-121173] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:17:25.984 [DEBUG] [Thread-121173] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:17:25.984 [DEBUG] [Thread-121173] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:17:25.984 [DEBUG] [Thread-121173] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:17:25.984 [DEBUG] [Thread-121173] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:17:25.984 [DEBUG] [Thread-121173] [transport.py] [_log()] client lang: <none>
2025-11-03T19:17:25.984 [DEBUG] [Thread-121173] [transport.py] [_log()] server lang: <none>
2025-11-03T19:17:25.984 [DEBUG] [Thread-121173] [transport.py] [_log()] kex follows: False
2025-11-03T19:17:25.984 [DEBUG] [Thread-121173] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:17:25.984 [DEBUG] [Thread-121173] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:17:25.984 [DEBUG] [Thread-121173] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:17:25.984 [DEBUG] [Thread-121173] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:17:25.984 [DEBUG] [Thread-121173] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:17:25.984 [DEBUG] [Thread-121173] [transport.py] [_log()] Compression: none
2025-11-03T19:17:25.984 [DEBUG] [Thread-121173] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:17:26.042 [DEBUG] [Thread-121173] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:17:26.042 [DEBUG] [Thread-121173] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:17:26.042 [DEBUG] [Thread-121173] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:17:26.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:17:26.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:17:26.099 [DEBUG] [Thread-121173] [transport.py] [_log()] userauth is OK
2025-11-03T19:17:26.099 [DEBUG] [Thread-121173] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:17:26.099 [DEBUG] [Thread-121173] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:17:26.099 [DEBUG] [Thread-121173] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:17:26.099 [DEBUG] [Thread-121173] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:17:26.122 [INFO] [Thread-121173] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:17:26.122 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:17:26.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:17:26.954 [DEBUG] [Thread-121173] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:17:26.954 [DEBUG] [Thread-121173] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:17:27.005 [DEBUG] [Thread-121173] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:17:27.005 [DEBUG] [Thread-121173] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:17:27.016 [DEBUG] [Thread-121173] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:17:27.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:17:27.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:17:27.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:17:27.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:17:27.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:17:27.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:17:27.054 [DEBUG] [Thread-121173] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:17:40.489 [DEBUG] [Thread-121175 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:17:46.098 [DEBUG] [Thread-121176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:17:55.538 [DEBUG] [Thread-121177 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:17:57.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:17:57.076 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:17:57.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:17:57.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 17, 30), 41.86, 4.95, 0.0, 26.68, 21.77, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:17:57.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:17:30
2025-11-03T19:17:57.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:17:58.083 [DEBUG] [Thread-121178] [transport.py] [_log()] starting thread (client mode): 0x117e8a90
2025-11-03T19:17:58.083 [DEBUG] [Thread-121178] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:17:58.105 [DEBUG] [Thread-121178] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:17:58.105 [INFO] [Thread-121178] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:17:58.109 [DEBUG] [Thread-121178] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:17:58.109 [DEBUG] [Thread-121178] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:17:58.109 [DEBUG] [Thread-121178] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:17:58.109 [DEBUG] [Thread-121178] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:17:58.109 [DEBUG] [Thread-121178] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:17:58.109 [DEBUG] [Thread-121178] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:17:58.109 [DEBUG] [Thread-121178] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:17:58.109 [DEBUG] [Thread-121178] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:17:58.109 [DEBUG] [Thread-121178] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:17:58.109 [DEBUG] [Thread-121178] [transport.py] [_log()] client lang: <none>
2025-11-03T19:17:58.109 [DEBUG] [Thread-121178] [transport.py] [_log()] server lang: <none>
2025-11-03T19:17:58.109 [DEBUG] [Thread-121178] [transport.py] [_log()] kex follows: False
2025-11-03T19:17:58.109 [DEBUG] [Thread-121178] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:17:58.110 [DEBUG] [Thread-121178] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:17:58.110 [DEBUG] [Thread-121178] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:17:58.110 [DEBUG] [Thread-121178] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:17:58.110 [DEBUG] [Thread-121178] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:17:58.110 [DEBUG] [Thread-121178] [transport.py] [_log()] Compression: none
2025-11-03T19:17:58.110 [DEBUG] [Thread-121178] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:17:58.127 [DEBUG] [Thread-121178] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:17:58.128 [DEBUG] [Thread-121178] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:17:58.128 [DEBUG] [Thread-121178] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:17:58.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:17:58.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:17:58.139 [DEBUG] [Thread-121178] [transport.py] [_log()] userauth is OK
2025-11-03T19:17:58.139 [DEBUG] [Thread-121178] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:17:58.140 [DEBUG] [Thread-121178] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:17:58.140 [DEBUG] [Thread-121178] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:17:58.140 [DEBUG] [Thread-121178] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:17:58.164 [INFO] [Thread-121178] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:17:58.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:17:58.941 [DEBUG] [Thread-121178] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:17:58.950 [DEBUG] [Thread-121178] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:17:58.950 [DEBUG] [Thread-121178] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:17:58.982 [DEBUG] [Thread-121178] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:17:58.982 [DEBUG] [Thread-121178] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:17:58.984 [DEBUG] [Thread-121178] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:17:58.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:17:58.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:17:58.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:17:58.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:17:58.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:17:59.000 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:17:59.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:17:59.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:17:59.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:17:59.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.720241 -999.00  +21.60  25.22      9  -11.60 1 1 1 1 1   743    0 30.90 -58.57 ----- 25.2 25.2 311.6 27.6 21.9 -31.1 21.8 -30.0 21.5 -30.0 21.8 -30.8
2025-11-03T19:17:59.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:17:59.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:17:59.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.720241
2025-11-03T19:17:59.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:17:59.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:17:59.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:17:59.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:17:59.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:17:59.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:17:30', tmtdew=41.86, humidity=4.95, cloud=0.0, wind=26.68, temperature=21.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:17:08.822', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:17:59.001 [DEBUG] [Thread-121178] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:17:59.072 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:17:59.087 [DEBUG] [Thread-121181] [transport.py] [_log()] starting thread (client mode): 0xed886a0
2025-11-03T19:17:59.087 [DEBUG] [Thread-121181] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:17:59.101 [DEBUG] [Thread-121181] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:17:59.102 [INFO] [Thread-121181] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:17:59.109 [DEBUG] [Thread-121181] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:17:59.109 [DEBUG] [Thread-121181] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:17:59.109 [DEBUG] [Thread-121181] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:17:59.109 [DEBUG] [Thread-121181] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:17:59.109 [DEBUG] [Thread-121181] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:17:59.109 [DEBUG] [Thread-121181] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:17:59.110 [DEBUG] [Thread-121181] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:17:59.110 [DEBUG] [Thread-121181] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:17:59.110 [DEBUG] [Thread-121181] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:17:59.110 [DEBUG] [Thread-121181] [transport.py] [_log()] client lang: <none>
2025-11-03T19:17:59.110 [DEBUG] [Thread-121181] [transport.py] [_log()] server lang: <none>
2025-11-03T19:17:59.110 [DEBUG] [Thread-121181] [transport.py] [_log()] kex follows: False
2025-11-03T19:17:59.110 [DEBUG] [Thread-121181] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:17:59.110 [DEBUG] [Thread-121181] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:17:59.110 [DEBUG] [Thread-121181] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:17:59.110 [DEBUG] [Thread-121181] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:17:59.110 [DEBUG] [Thread-121181] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:17:59.110 [DEBUG] [Thread-121181] [transport.py] [_log()] Compression: none
2025-11-03T19:17:59.110 [DEBUG] [Thread-121181] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:17:59.170 [DEBUG] [Thread-121181] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:17:59.171 [DEBUG] [Thread-121181] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:17:59.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:17:59.172 [DEBUG] [Thread-121181] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:17:59.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:17:59.227 [DEBUG] [Thread-121181] [transport.py] [_log()] userauth is OK
2025-11-03T19:17:59.227 [DEBUG] [Thread-121181] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:17:59.228 [DEBUG] [Thread-121181] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:17:59.228 [DEBUG] [Thread-121181] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:17:59.228 [DEBUG] [Thread-121181] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:17:59.246 [INFO] [Thread-121181] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:17:59.255 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:17:59.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:18:00.116 [DEBUG] [Thread-121181] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:18:00.116 [DEBUG] [Thread-121181] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:18:00.165 [DEBUG] [Thread-121181] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:18:00.165 [DEBUG] [Thread-121181] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:18:00.174 [DEBUG] [Thread-121181] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:18:00.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:18:00.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:18:00.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:18:00.202 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:18:00.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:18:00.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:18:00.211 [DEBUG] [Thread-121181] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:18:10.567 [DEBUG] [Thread-121183 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:18:22.255 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:18:22.256 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:18:25.622 [DEBUG] [Thread-121184 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:18:30.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:18:30.233 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:18:30.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:18:30.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 18, 2), 41.79, 4.98, 0.0, 25.53, 21.82, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:18:30.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:18:02
2025-11-03T19:18:31.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:18:31.303 [DEBUG] [Thread-121185] [transport.py] [_log()] starting thread (client mode): 0xed893f0
2025-11-03T19:18:31.303 [DEBUG] [Thread-121185] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:18:31.319 [DEBUG] [Thread-121185] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:18:31.319 [INFO] [Thread-121185] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:18:31.322 [DEBUG] [Thread-121185] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:18:31.322 [DEBUG] [Thread-121185] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:18:31.322 [DEBUG] [Thread-121185] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:18:31.322 [DEBUG] [Thread-121185] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:18:31.322 [DEBUG] [Thread-121185] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:18:31.322 [DEBUG] [Thread-121185] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:18:31.322 [DEBUG] [Thread-121185] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:18:31.322 [DEBUG] [Thread-121185] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:18:31.322 [DEBUG] [Thread-121185] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:18:31.322 [DEBUG] [Thread-121185] [transport.py] [_log()] client lang: <none>
2025-11-03T19:18:31.322 [DEBUG] [Thread-121185] [transport.py] [_log()] server lang: <none>
2025-11-03T19:18:31.322 [DEBUG] [Thread-121185] [transport.py] [_log()] kex follows: False
2025-11-03T19:18:31.322 [DEBUG] [Thread-121185] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:18:31.322 [DEBUG] [Thread-121185] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:18:31.322 [DEBUG] [Thread-121185] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:18:31.322 [DEBUG] [Thread-121185] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:18:31.322 [DEBUG] [Thread-121185] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:18:31.322 [DEBUG] [Thread-121185] [transport.py] [_log()] Compression: none
2025-11-03T19:18:31.322 [DEBUG] [Thread-121185] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:18:31.338 [DEBUG] [Thread-121185] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:18:31.338 [DEBUG] [Thread-121185] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:18:31.338 [DEBUG] [Thread-121185] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:18:31.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:18:31.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:18:31.339 [DEBUG] [Thread-121185] [transport.py] [_log()] userauth is OK
2025-11-03T19:18:31.339 [DEBUG] [Thread-121185] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:18:31.339 [DEBUG] [Thread-121185] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:18:31.339 [DEBUG] [Thread-121185] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:18:31.339 [DEBUG] [Thread-121185] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:18:31.348 [INFO] [Thread-121185] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:18:31.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:18:31.953 [DEBUG] [Thread-121185] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:18:31.953 [DEBUG] [Thread-121185] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:18:31.953 [DEBUG] [Thread-121185] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:18:31.994 [DEBUG] [Thread-121185] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:18:31.994 [DEBUG] [Thread-121185] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:18:31.996 [DEBUG] [Thread-121185] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:18:32.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:18:32.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:18:32.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:18:32.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:18:32.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:18:32.013 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:18:32.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:18:32.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:18:32.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:18:32.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.720588 -999.00  +21.60  21.61      9  -11.70 1 1 1 1 1   730    0 31.11 -54.03 ----- 21.6 21.6 292.8 32.1 21.8 -31.0 21.8 -30.1 21.4 -30.0 21.7 -30.8
2025-11-03T19:18:32.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:18:32.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:18:32.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.720588
2025-11-03T19:18:32.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:18:32.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:18:32.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:18:32.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:18:32.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:18:32.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:18:02', tmtdew=41.79, humidity=4.98, cloud=0.0, wind=25.53, temperature=21.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:17:38.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:18:32.014 [DEBUG] [Thread-121185] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:18:32.089 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:18:32.101 [DEBUG] [Thread-121188] [transport.py] [_log()] starting thread (client mode): 0x117e98d0
2025-11-03T19:18:32.101 [DEBUG] [Thread-121188] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:18:32.116 [DEBUG] [Thread-121188] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:18:32.116 [INFO] [Thread-121188] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:18:32.125 [DEBUG] [Thread-121188] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:18:32.125 [DEBUG] [Thread-121188] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:18:32.125 [DEBUG] [Thread-121188] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:18:32.125 [DEBUG] [Thread-121188] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:18:32.125 [DEBUG] [Thread-121188] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:18:32.125 [DEBUG] [Thread-121188] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:18:32.125 [DEBUG] [Thread-121188] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:18:32.125 [DEBUG] [Thread-121188] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:18:32.125 [DEBUG] [Thread-121188] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:18:32.125 [DEBUG] [Thread-121188] [transport.py] [_log()] client lang: <none>
2025-11-03T19:18:32.125 [DEBUG] [Thread-121188] [transport.py] [_log()] server lang: <none>
2025-11-03T19:18:32.125 [DEBUG] [Thread-121188] [transport.py] [_log()] kex follows: False
2025-11-03T19:18:32.125 [DEBUG] [Thread-121188] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:18:32.125 [DEBUG] [Thread-121188] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:18:32.125 [DEBUG] [Thread-121188] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:18:32.125 [DEBUG] [Thread-121188] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:18:32.125 [DEBUG] [Thread-121188] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:18:32.125 [DEBUG] [Thread-121188] [transport.py] [_log()] Compression: none
2025-11-03T19:18:32.125 [DEBUG] [Thread-121188] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:18:32.180 [DEBUG] [Thread-121188] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:18:32.180 [DEBUG] [Thread-121188] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:18:32.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:18:32.180 [DEBUG] [Thread-121188] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:18:32.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:18:32.239 [DEBUG] [Thread-121188] [transport.py] [_log()] userauth is OK
2025-11-03T19:18:32.239 [DEBUG] [Thread-121188] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:18:32.239 [DEBUG] [Thread-121188] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:18:32.239 [DEBUG] [Thread-121188] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:18:32.239 [DEBUG] [Thread-121188] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:18:32.254 [INFO] [Thread-121188] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:18:32.254 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:18:32.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:18:33.089 [DEBUG] [Thread-121188] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:18:33.089 [DEBUG] [Thread-121188] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:18:33.137 [DEBUG] [Thread-121188] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:18:33.137 [DEBUG] [Thread-121188] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:18:33.148 [DEBUG] [Thread-121188] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:18:33.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:18:33.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:18:33.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:18:33.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:18:33.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:18:33.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:18:33.189 [DEBUG] [Thread-121188] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:18:40.652 [DEBUG] [Thread-121190 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:18:46.184 [DEBUG] [Thread-121191 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:18:55.692 [DEBUG] [Thread-121192 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:19:03.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:19:03.211 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:19:03.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:19:03.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 18, 35), 41.63, 4.98, 0.0, 24.49, 21.72, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:19:03.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:18:35
2025-11-03T19:19:04.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:19:04.245 [DEBUG] [Thread-121193] [transport.py] [_log()] starting thread (client mode): 0x117e8cd0
2025-11-03T19:19:04.245 [DEBUG] [Thread-121193] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:19:04.265 [DEBUG] [Thread-121193] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:19:04.265 [INFO] [Thread-121193] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:19:04.268 [DEBUG] [Thread-121193] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:19:04.268 [DEBUG] [Thread-121193] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:19:04.268 [DEBUG] [Thread-121193] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:19:04.268 [DEBUG] [Thread-121193] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:19:04.268 [DEBUG] [Thread-121193] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:19:04.268 [DEBUG] [Thread-121193] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:19:04.268 [DEBUG] [Thread-121193] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:19:04.268 [DEBUG] [Thread-121193] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:19:04.268 [DEBUG] [Thread-121193] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:19:04.268 [DEBUG] [Thread-121193] [transport.py] [_log()] client lang: <none>
2025-11-03T19:19:04.268 [DEBUG] [Thread-121193] [transport.py] [_log()] server lang: <none>
2025-11-03T19:19:04.269 [DEBUG] [Thread-121193] [transport.py] [_log()] kex follows: False
2025-11-03T19:19:04.269 [DEBUG] [Thread-121193] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:19:04.269 [DEBUG] [Thread-121193] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:19:04.269 [DEBUG] [Thread-121193] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:19:04.269 [DEBUG] [Thread-121193] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:19:04.269 [DEBUG] [Thread-121193] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:19:04.269 [DEBUG] [Thread-121193] [transport.py] [_log()] Compression: none
2025-11-03T19:19:04.269 [DEBUG] [Thread-121193] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:19:04.283 [DEBUG] [Thread-121193] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:19:04.283 [DEBUG] [Thread-121193] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:19:04.284 [DEBUG] [Thread-121193] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:19:04.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:19:04.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:19:04.284 [DEBUG] [Thread-121193] [transport.py] [_log()] userauth is OK
2025-11-03T19:19:04.284 [DEBUG] [Thread-121193] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:19:04.284 [DEBUG] [Thread-121193] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:19:04.284 [DEBUG] [Thread-121193] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:19:04.284 [DEBUG] [Thread-121193] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:19:04.293 [INFO] [Thread-121193] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:19:04.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:19:05.105 [DEBUG] [Thread-121193] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:19:05.105 [DEBUG] [Thread-121193] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:19:05.106 [DEBUG] [Thread-121193] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:19:05.146 [DEBUG] [Thread-121193] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:19:05.146 [DEBUG] [Thread-121193] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:19:05.150 [DEBUG] [Thread-121193] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:19:05.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:19:05.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:19:05.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:19:05.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:19:05.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:19:05.175 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:19:05.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:19:05.175 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:19:05.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:19:05.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.720935 -999.00  +21.60  19.95      9  -11.70 1 1 1 1 1   717    0 31.51 -54.53 ----- 19.9 19.9 303.5 28.2 21.8 -31.2 21.8 -30.1 21.4 -30.0 21.7 -30.7
2025-11-03T19:19:05.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:19:05.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:19:05.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.720935
2025-11-03T19:19:05.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:19:05.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:19:05.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:19:05.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:19:05.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:19:05.178 [DEBUG] [Thread-121193] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:19:05.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:18:35', tmtdew=41.63, humidity=4.98, cloud=0.0, wind=24.49, temperature=21.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:18:08.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:19:05.262 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:19:05.274 [DEBUG] [Thread-121196] [transport.py] [_log()] starting thread (client mode): 0x117ebc70
2025-11-03T19:19:05.274 [DEBUG] [Thread-121196] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:19:05.288 [DEBUG] [Thread-121196] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:19:05.288 [INFO] [Thread-121196] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:19:05.295 [DEBUG] [Thread-121196] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:19:05.296 [DEBUG] [Thread-121196] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:19:05.296 [DEBUG] [Thread-121196] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:19:05.296 [DEBUG] [Thread-121196] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:19:05.296 [DEBUG] [Thread-121196] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:19:05.296 [DEBUG] [Thread-121196] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:19:05.296 [DEBUG] [Thread-121196] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:19:05.296 [DEBUG] [Thread-121196] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:19:05.296 [DEBUG] [Thread-121196] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:19:05.296 [DEBUG] [Thread-121196] [transport.py] [_log()] client lang: <none>
2025-11-03T19:19:05.296 [DEBUG] [Thread-121196] [transport.py] [_log()] server lang: <none>
2025-11-03T19:19:05.296 [DEBUG] [Thread-121196] [transport.py] [_log()] kex follows: False
2025-11-03T19:19:05.296 [DEBUG] [Thread-121196] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:19:05.296 [DEBUG] [Thread-121196] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:19:05.296 [DEBUG] [Thread-121196] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:19:05.296 [DEBUG] [Thread-121196] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:19:05.296 [DEBUG] [Thread-121196] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:19:05.296 [DEBUG] [Thread-121196] [transport.py] [_log()] Compression: none
2025-11-03T19:19:05.296 [DEBUG] [Thread-121196] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:19:05.352 [DEBUG] [Thread-121196] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:19:05.352 [DEBUG] [Thread-121196] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:19:05.352 [DEBUG] [Thread-121196] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:19:05.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:19:05.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:19:05.412 [DEBUG] [Thread-121196] [transport.py] [_log()] userauth is OK
2025-11-03T19:19:05.413 [DEBUG] [Thread-121196] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:19:05.413 [DEBUG] [Thread-121196] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:19:05.413 [DEBUG] [Thread-121196] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:19:05.413 [DEBUG] [Thread-121196] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:19:05.432 [INFO] [Thread-121196] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:19:05.433 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:19:05.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:19:06.269 [DEBUG] [Thread-121196] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:19:06.269 [DEBUG] [Thread-121196] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:19:06.316 [DEBUG] [Thread-121196] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:19:06.316 [DEBUG] [Thread-121196] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:19:06.325 [DEBUG] [Thread-121196] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:19:06.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:19:06.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:19:06.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:19:06.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:19:06.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:19:06.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:19:06.357 [DEBUG] [Thread-121196] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:19:10.724 [DEBUG] [Thread-121198 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:19:25.777 [DEBUG] [Thread-121199 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:19:27.155 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:19:27.157 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:19:36.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:19:36.379 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:19:36.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:19:37.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 19, 7), 41.63, 4.98, 0.0, 23.61, 21.7, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:19:37.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:19:07
2025-11-03T19:19:37.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:19:37.346 [DEBUG] [Thread-121200] [transport.py] [_log()] starting thread (client mode): 0x1179ad40
2025-11-03T19:19:37.346 [DEBUG] [Thread-121200] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:19:37.367 [DEBUG] [Thread-121200] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:19:37.368 [INFO] [Thread-121200] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:19:37.371 [DEBUG] [Thread-121200] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:19:37.372 [DEBUG] [Thread-121200] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:19:37.372 [DEBUG] [Thread-121200] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:19:37.372 [DEBUG] [Thread-121200] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:19:37.372 [DEBUG] [Thread-121200] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:19:37.372 [DEBUG] [Thread-121200] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:19:37.372 [DEBUG] [Thread-121200] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:19:37.372 [DEBUG] [Thread-121200] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:19:37.372 [DEBUG] [Thread-121200] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:19:37.372 [DEBUG] [Thread-121200] [transport.py] [_log()] client lang: <none>
2025-11-03T19:19:37.373 [DEBUG] [Thread-121200] [transport.py] [_log()] server lang: <none>
2025-11-03T19:19:37.373 [DEBUG] [Thread-121200] [transport.py] [_log()] kex follows: False
2025-11-03T19:19:37.373 [DEBUG] [Thread-121200] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:19:37.373 [DEBUG] [Thread-121200] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:19:37.373 [DEBUG] [Thread-121200] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:19:37.373 [DEBUG] [Thread-121200] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:19:37.373 [DEBUG] [Thread-121200] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:19:37.373 [DEBUG] [Thread-121200] [transport.py] [_log()] Compression: none
2025-11-03T19:19:37.373 [DEBUG] [Thread-121200] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:19:37.386 [DEBUG] [Thread-121200] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:19:37.386 [DEBUG] [Thread-121200] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:19:37.387 [DEBUG] [Thread-121200] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:19:37.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:19:37.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:19:37.389 [DEBUG] [Thread-121200] [transport.py] [_log()] userauth is OK
2025-11-03T19:19:37.389 [DEBUG] [Thread-121200] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:19:37.389 [DEBUG] [Thread-121200] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:19:37.389 [DEBUG] [Thread-121200] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:19:37.389 [DEBUG] [Thread-121200] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:19:37.413 [INFO] [Thread-121200] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:19:37.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:19:38.036 [DEBUG] [Thread-121200] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:19:38.037 [DEBUG] [Thread-121200] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:19:38.037 [DEBUG] [Thread-121200] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:19:38.077 [DEBUG] [Thread-121200] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:19:38.077 [DEBUG] [Thread-121200] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:19:38.081 [DEBUG] [Thread-121200] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:19:38.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:19:38.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:19:38.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:19:38.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:19:38.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:19:38.117 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:19:38.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:19:38.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:19:38.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:19:38.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.721282 -999.00  +21.60  20.66      9  -11.70 1 1 1 1 1   703    0 31.70 -54.02 ----- 20.7 20.7 312.6 27.6 21.8 -31.1 21.7 -30.0 21.4 -29.8 21.7 -30.6
2025-11-03T19:19:38.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:19:38.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:19:38.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.721282
2025-11-03T19:19:38.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:19:38.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:19:38.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:19:38.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:19:38.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:19:38.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:19:07', tmtdew=41.63, humidity=4.98, cloud=0.0, wind=23.61, temperature=21.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:18:38.765', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:19:38.121 [DEBUG] [Thread-121200] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:19:38.210 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:19:38.221 [DEBUG] [Thread-121203] [transport.py] [_log()] starting thread (client mode): 0x11798550
2025-11-03T19:19:38.222 [DEBUG] [Thread-121203] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:19:38.236 [DEBUG] [Thread-121203] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:19:38.236 [INFO] [Thread-121203] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:19:38.246 [DEBUG] [Thread-121203] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:19:38.246 [DEBUG] [Thread-121203] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:19:38.246 [DEBUG] [Thread-121203] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:19:38.247 [DEBUG] [Thread-121203] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:19:38.247 [DEBUG] [Thread-121203] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:19:38.247 [DEBUG] [Thread-121203] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:19:38.247 [DEBUG] [Thread-121203] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:19:38.247 [DEBUG] [Thread-121203] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:19:38.247 [DEBUG] [Thread-121203] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:19:38.247 [DEBUG] [Thread-121203] [transport.py] [_log()] client lang: <none>
2025-11-03T19:19:38.247 [DEBUG] [Thread-121203] [transport.py] [_log()] server lang: <none>
2025-11-03T19:19:38.247 [DEBUG] [Thread-121203] [transport.py] [_log()] kex follows: False
2025-11-03T19:19:38.247 [DEBUG] [Thread-121203] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:19:38.247 [DEBUG] [Thread-121203] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:19:38.247 [DEBUG] [Thread-121203] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:19:38.247 [DEBUG] [Thread-121203] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:19:38.247 [DEBUG] [Thread-121203] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:19:38.247 [DEBUG] [Thread-121203] [transport.py] [_log()] Compression: none
2025-11-03T19:19:38.247 [DEBUG] [Thread-121203] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:19:38.304 [DEBUG] [Thread-121203] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:19:38.305 [DEBUG] [Thread-121203] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:19:38.305 [DEBUG] [Thread-121203] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:19:38.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:19:38.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:19:38.361 [DEBUG] [Thread-121203] [transport.py] [_log()] userauth is OK
2025-11-03T19:19:38.361 [DEBUG] [Thread-121203] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:19:38.361 [DEBUG] [Thread-121203] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:19:38.361 [DEBUG] [Thread-121203] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:19:38.361 [DEBUG] [Thread-121203] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:19:38.380 [INFO] [Thread-121203] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:19:38.381 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:19:38.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:19:39.182 [DEBUG] [Thread-121203] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:19:39.183 [DEBUG] [Thread-121203] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:19:39.231 [DEBUG] [Thread-121203] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:19:39.231 [DEBUG] [Thread-121203] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:19:39.241 [DEBUG] [Thread-121203] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:19:39.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:19:39.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:19:39.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:19:39.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:19:39.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:19:39.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:19:39.278 [DEBUG] [Thread-121203] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:19:40.816 [DEBUG] [Thread-121205 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:19:46.265 [DEBUG] [Thread-121206 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:19:55.853 [DEBUG] [Thread-121207 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:20:09.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:20:09.301 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:20:09.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:20:10.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 19, 39), 41.71, 4.98, 0.0, 24.12, 21.64, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:20:10.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:19:39
2025-11-03T19:20:10.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:20:10.330 [DEBUG] [Thread-121208] [transport.py] [_log()] starting thread (client mode): 0x117e80d0
2025-11-03T19:20:10.330 [DEBUG] [Thread-121208] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:20:10.350 [DEBUG] [Thread-121208] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:20:10.350 [INFO] [Thread-121208] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:20:10.359 [DEBUG] [Thread-121208] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:20:10.359 [DEBUG] [Thread-121208] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:20:10.360 [DEBUG] [Thread-121208] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:20:10.360 [DEBUG] [Thread-121208] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:20:10.360 [DEBUG] [Thread-121208] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:20:10.360 [DEBUG] [Thread-121208] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:20:10.360 [DEBUG] [Thread-121208] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:20:10.360 [DEBUG] [Thread-121208] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:20:10.360 [DEBUG] [Thread-121208] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:20:10.360 [DEBUG] [Thread-121208] [transport.py] [_log()] client lang: <none>
2025-11-03T19:20:10.360 [DEBUG] [Thread-121208] [transport.py] [_log()] server lang: <none>
2025-11-03T19:20:10.360 [DEBUG] [Thread-121208] [transport.py] [_log()] kex follows: False
2025-11-03T19:20:10.360 [DEBUG] [Thread-121208] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:20:10.360 [DEBUG] [Thread-121208] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:20:10.360 [DEBUG] [Thread-121208] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:20:10.360 [DEBUG] [Thread-121208] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:20:10.360 [DEBUG] [Thread-121208] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:20:10.360 [DEBUG] [Thread-121208] [transport.py] [_log()] Compression: none
2025-11-03T19:20:10.360 [DEBUG] [Thread-121208] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:20:10.381 [DEBUG] [Thread-121208] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:20:10.382 [DEBUG] [Thread-121208] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:20:10.383 [DEBUG] [Thread-121208] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:20:10.383 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:20:10.383 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:20:10.384 [DEBUG] [Thread-121208] [transport.py] [_log()] userauth is OK
2025-11-03T19:20:10.384 [DEBUG] [Thread-121208] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:20:10.385 [DEBUG] [Thread-121208] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:20:10.385 [DEBUG] [Thread-121208] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:20:10.385 [DEBUG] [Thread-121208] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:20:10.399 [INFO] [Thread-121208] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:20:10.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:20:10.897 [DEBUG] [Thread-121210 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:20:19.717 [DEBUG] [Thread-121208] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:20:19.717 [DEBUG] [Thread-121208] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:20:19.726 [DEBUG] [Thread-121208] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:20:19.757 [DEBUG] [Thread-121208] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:20:19.757 [DEBUG] [Thread-121208] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:20:19.759 [DEBUG] [Thread-121208] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:20:19.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:20:19.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:20:19.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:20:19.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:20:19.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:20:19.891 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:20:19.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:20:19.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:20:19.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:20:19.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.721629 -999.00  +21.60  28.66      9  -11.80 1 1 1 1 1   689    0 31.79 -51.45 ----- 28.7 28.7 303.8 31.9 21.7 -31.1 21.6 -30.0 21.4 -29.8 21.7 -30.5
2025-11-03T19:20:19.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:20:19.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:20:19.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.721629
2025-11-03T19:20:19.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:20:19.895 [DEBUG] [Thread-121208] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:20:19.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:20:19.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:20:19.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:20:19.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:20:19.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:19:39', tmtdew=41.71, humidity=4.98, cloud=0.0, wind=24.12, temperature=21.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:19:08.746', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:20:19.970 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:20:19.983 [DEBUG] [Thread-121212] [transport.py] [_log()] starting thread (client mode): 0xed12260
2025-11-03T19:20:19.983 [DEBUG] [Thread-121212] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:20:19.997 [DEBUG] [Thread-121212] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:20:19.998 [INFO] [Thread-121212] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:20:20.005 [DEBUG] [Thread-121212] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:20:20.006 [DEBUG] [Thread-121212] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:20:20.006 [DEBUG] [Thread-121212] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:20:20.006 [DEBUG] [Thread-121212] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:20:20.006 [DEBUG] [Thread-121212] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:20:20.006 [DEBUG] [Thread-121212] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:20:20.006 [DEBUG] [Thread-121212] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:20:20.006 [DEBUG] [Thread-121212] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:20:20.006 [DEBUG] [Thread-121212] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:20:20.006 [DEBUG] [Thread-121212] [transport.py] [_log()] client lang: <none>
2025-11-03T19:20:20.006 [DEBUG] [Thread-121212] [transport.py] [_log()] server lang: <none>
2025-11-03T19:20:20.006 [DEBUG] [Thread-121212] [transport.py] [_log()] kex follows: False
2025-11-03T19:20:20.006 [DEBUG] [Thread-121212] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:20:20.006 [DEBUG] [Thread-121212] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:20:20.006 [DEBUG] [Thread-121212] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:20:20.006 [DEBUG] [Thread-121212] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:20:20.006 [DEBUG] [Thread-121212] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:20:20.006 [DEBUG] [Thread-121212] [transport.py] [_log()] Compression: none
2025-11-03T19:20:20.006 [DEBUG] [Thread-121212] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:20:20.064 [DEBUG] [Thread-121212] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:20:20.064 [DEBUG] [Thread-121212] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:20:20.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:20:20.066 [DEBUG] [Thread-121212] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:20:20.067 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:20:20.120 [DEBUG] [Thread-121212] [transport.py] [_log()] userauth is OK
2025-11-03T19:20:20.121 [DEBUG] [Thread-121212] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:20:20.121 [DEBUG] [Thread-121212] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:20:20.121 [DEBUG] [Thread-121212] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:20:20.121 [DEBUG] [Thread-121212] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:20:20.139 [INFO] [Thread-121212] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:20:20.140 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:20:20.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:20:20.961 [DEBUG] [Thread-121212] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:20:20.961 [DEBUG] [Thread-121212] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:20:21.009 [DEBUG] [Thread-121212] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:20:21.009 [DEBUG] [Thread-121212] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:20:21.018 [DEBUG] [Thread-121212] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:20:21.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:20:21.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:20:21.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:20:21.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:20:21.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:20:21.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:20:21.067 [DEBUG] [Thread-121212] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:20:25.932 [DEBUG] [Thread-121214 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:20:31.194 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:20:31.195 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:20:40.973 [DEBUG] [Thread-121215 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:20:46.550 [DEBUG] [Thread-121216 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:20:51.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:20:51.089 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:20:51.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:20:51.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 20, 44), 41.76, 4.98, 0.0, 23.91, 21.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:20:51.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:20:44
2025-11-03T19:20:51.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:20:52.127 [DEBUG] [Thread-121217] [transport.py] [_log()] starting thread (client mode): 0x1179ba60
2025-11-03T19:20:52.127 [DEBUG] [Thread-121217] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:20:52.137 [DEBUG] [Thread-121217] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:20:52.138 [INFO] [Thread-121217] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:20:52.141 [DEBUG] [Thread-121217] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:20:52.141 [DEBUG] [Thread-121217] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:20:52.141 [DEBUG] [Thread-121217] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:20:52.141 [DEBUG] [Thread-121217] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:20:52.141 [DEBUG] [Thread-121217] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:20:52.141 [DEBUG] [Thread-121217] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:20:52.142 [DEBUG] [Thread-121217] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:20:52.142 [DEBUG] [Thread-121217] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:20:52.142 [DEBUG] [Thread-121217] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:20:52.142 [DEBUG] [Thread-121217] [transport.py] [_log()] client lang: <none>
2025-11-03T19:20:52.142 [DEBUG] [Thread-121217] [transport.py] [_log()] server lang: <none>
2025-11-03T19:20:52.142 [DEBUG] [Thread-121217] [transport.py] [_log()] kex follows: False
2025-11-03T19:20:52.142 [DEBUG] [Thread-121217] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:20:52.142 [DEBUG] [Thread-121217] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:20:52.142 [DEBUG] [Thread-121217] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:20:52.142 [DEBUG] [Thread-121217] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:20:52.142 [DEBUG] [Thread-121217] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:20:52.142 [DEBUG] [Thread-121217] [transport.py] [_log()] Compression: none
2025-11-03T19:20:52.143 [DEBUG] [Thread-121217] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:20:52.161 [DEBUG] [Thread-121217] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:20:52.162 [DEBUG] [Thread-121217] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:20:52.163 [DEBUG] [Thread-121217] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:20:52.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:20:52.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:20:52.165 [DEBUG] [Thread-121217] [transport.py] [_log()] userauth is OK
2025-11-03T19:20:52.165 [DEBUG] [Thread-121217] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:20:52.166 [DEBUG] [Thread-121217] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:20:52.166 [DEBUG] [Thread-121217] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:20:52.166 [DEBUG] [Thread-121217] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:20:52.202 [INFO] [Thread-121217] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:20:52.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:20:52.841 [DEBUG] [Thread-121217] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:20:52.842 [DEBUG] [Thread-121217] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:20:52.842 [DEBUG] [Thread-121217] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:20:52.883 [DEBUG] [Thread-121217] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:20:52.883 [DEBUG] [Thread-121217] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:20:52.891 [DEBUG] [Thread-121217] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:20:52.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:20:52.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:20:52.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:20:52.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:20:52.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:20:52.917 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:20:52.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:20:52.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:20:52.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:20:52.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.722323 -999.00  +21.60  23.46      9  -11.70 1 1 1 1 1   656    0 32.57 -44.01 ----- 23.5 23.5 304.8 33.5 21.7 -31.1 21.6 -30.0 21.4 -29.9 21.6 -30.6
2025-11-03T19:20:52.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:20:52.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:20:52.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.722323
2025-11-03T19:20:52.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:20:52.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:20:52.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:20:52.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:20:52.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:20:52.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:20:44', tmtdew=41.76, humidity=4.98, cloud=0.0, wind=23.91, temperature=21.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:20:08.707', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:20:52.920 [DEBUG] [Thread-121217] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:20:53.003 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:20:53.016 [DEBUG] [Thread-121220] [transport.py] [_log()] starting thread (client mode): 0x1179b040
2025-11-03T19:20:53.017 [DEBUG] [Thread-121220] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:20:53.031 [DEBUG] [Thread-121220] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:20:53.032 [INFO] [Thread-121220] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:20:53.043 [DEBUG] [Thread-121220] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:20:53.043 [DEBUG] [Thread-121220] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:20:53.044 [DEBUG] [Thread-121220] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:20:53.044 [DEBUG] [Thread-121220] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:20:53.044 [DEBUG] [Thread-121220] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:20:53.044 [DEBUG] [Thread-121220] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:20:53.044 [DEBUG] [Thread-121220] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:20:53.044 [DEBUG] [Thread-121220] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:20:53.044 [DEBUG] [Thread-121220] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:20:53.044 [DEBUG] [Thread-121220] [transport.py] [_log()] client lang: <none>
2025-11-03T19:20:53.045 [DEBUG] [Thread-121220] [transport.py] [_log()] server lang: <none>
2025-11-03T19:20:53.045 [DEBUG] [Thread-121220] [transport.py] [_log()] kex follows: False
2025-11-03T19:20:53.045 [DEBUG] [Thread-121220] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:20:53.045 [DEBUG] [Thread-121220] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:20:53.045 [DEBUG] [Thread-121220] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:20:53.045 [DEBUG] [Thread-121220] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:20:53.045 [DEBUG] [Thread-121220] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:20:53.046 [DEBUG] [Thread-121220] [transport.py] [_log()] Compression: none
2025-11-03T19:20:53.046 [DEBUG] [Thread-121220] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:20:53.108 [DEBUG] [Thread-121220] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:20:53.109 [DEBUG] [Thread-121220] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:20:53.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:20:53.111 [DEBUG] [Thread-121220] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:20:53.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:20:53.167 [DEBUG] [Thread-121220] [transport.py] [_log()] userauth is OK
2025-11-03T19:20:53.168 [DEBUG] [Thread-121220] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:20:53.168 [DEBUG] [Thread-121220] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:20:53.169 [DEBUG] [Thread-121220] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:20:53.169 [DEBUG] [Thread-121220] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:20:53.187 [INFO] [Thread-121220] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:20:53.188 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:20:53.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:20:54.034 [DEBUG] [Thread-121220] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:20:54.034 [DEBUG] [Thread-121220] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:20:54.082 [DEBUG] [Thread-121220] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:20:54.082 [DEBUG] [Thread-121220] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:20:54.091 [DEBUG] [Thread-121220] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:20:54.099 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:20:54.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:20:54.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:20:54.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:20:54.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:20:54.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:20:54.123 [DEBUG] [Thread-121220] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:20:56.021 [DEBUG] [Thread-121222 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:21:11.074 [DEBUG] [Thread-121223 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:21:24.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:21:24.146 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:21:24.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:21:24.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 21, 16), 41.72, 5.0, 0.0, 24.93, 21.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:21:24.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:21:16
2025-11-03T19:21:25.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:21:25.186 [DEBUG] [Thread-121224] [transport.py] [_log()] starting thread (client mode): 0x117eafe0
2025-11-03T19:21:25.187 [DEBUG] [Thread-121224] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:21:25.208 [DEBUG] [Thread-121224] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:21:25.208 [INFO] [Thread-121224] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:21:25.209 [DEBUG] [Thread-121224] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:21:25.209 [DEBUG] [Thread-121224] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:21:25.209 [DEBUG] [Thread-121224] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:21:25.210 [DEBUG] [Thread-121224] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:21:25.210 [DEBUG] [Thread-121224] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:21:25.210 [DEBUG] [Thread-121224] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:21:25.210 [DEBUG] [Thread-121224] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:21:25.210 [DEBUG] [Thread-121224] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:21:25.210 [DEBUG] [Thread-121224] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:21:25.210 [DEBUG] [Thread-121224] [transport.py] [_log()] client lang: <none>
2025-11-03T19:21:25.210 [DEBUG] [Thread-121224] [transport.py] [_log()] server lang: <none>
2025-11-03T19:21:25.210 [DEBUG] [Thread-121224] [transport.py] [_log()] kex follows: False
2025-11-03T19:21:25.210 [DEBUG] [Thread-121224] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:21:25.210 [DEBUG] [Thread-121224] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:21:25.210 [DEBUG] [Thread-121224] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:21:25.210 [DEBUG] [Thread-121224] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:21:25.210 [DEBUG] [Thread-121224] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:21:25.210 [DEBUG] [Thread-121224] [transport.py] [_log()] Compression: none
2025-11-03T19:21:25.210 [DEBUG] [Thread-121224] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:21:25.226 [DEBUG] [Thread-121224] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:21:25.227 [DEBUG] [Thread-121224] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:21:25.227 [DEBUG] [Thread-121224] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:21:25.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:21:25.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:21:25.230 [DEBUG] [Thread-121224] [transport.py] [_log()] userauth is OK
2025-11-03T19:21:25.230 [DEBUG] [Thread-121224] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:21:25.230 [DEBUG] [Thread-121224] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:21:25.230 [DEBUG] [Thread-121224] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:21:25.230 [DEBUG] [Thread-121224] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:21:25.254 [INFO] [Thread-121224] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:21:25.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:21:25.880 [DEBUG] [Thread-121224] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:21:25.880 [DEBUG] [Thread-121224] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:21:25.880 [DEBUG] [Thread-121224] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:21:25.921 [DEBUG] [Thread-121224] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:21:25.921 [DEBUG] [Thread-121224] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:21:25.925 [DEBUG] [Thread-121224] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:21:25.940 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:21:25.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:21:25.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:21:25.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:21:25.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:21:25.962 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:21:25.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:21:25.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:21:25.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:21:25.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.722671 -999.00  +21.60  20.38      9  -11.80 1 1 1 1 1   639    0 31.86 -40.22 ----- 20.4 20.4 304.0 29.3 21.7 -31.1 21.6 -30.1 21.4 -29.9 21.6 -30.8
2025-11-03T19:21:25.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:21:25.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:21:25.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.722671
2025-11-03T19:21:25.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:21:25.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:21:25.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:21:25.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:21:25.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:21:25.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:21:16', tmtdew=41.72, humidity=5.0, cloud=0.0, wind=24.93, temperature=21.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:20:38.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:21:25.966 [DEBUG] [Thread-121224] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:21:26.049 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:21:26.061 [DEBUG] [Thread-121227] [transport.py] [_log()] starting thread (client mode): 0x11762590
2025-11-03T19:21:26.061 [DEBUG] [Thread-121227] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:21:26.081 [DEBUG] [Thread-121227] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:21:26.081 [INFO] [Thread-121227] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:21:26.094 [DEBUG] [Thread-121227] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:21:26.094 [DEBUG] [Thread-121227] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:21:26.094 [DEBUG] [Thread-121227] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:21:26.094 [DEBUG] [Thread-121227] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:21:26.094 [DEBUG] [Thread-121227] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:21:26.094 [DEBUG] [Thread-121227] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:21:26.094 [DEBUG] [Thread-121227] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:21:26.094 [DEBUG] [Thread-121227] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:21:26.094 [DEBUG] [Thread-121227] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:21:26.094 [DEBUG] [Thread-121227] [transport.py] [_log()] client lang: <none>
2025-11-03T19:21:26.095 [DEBUG] [Thread-121227] [transport.py] [_log()] server lang: <none>
2025-11-03T19:21:26.095 [DEBUG] [Thread-121227] [transport.py] [_log()] kex follows: False
2025-11-03T19:21:26.095 [DEBUG] [Thread-121227] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:21:26.095 [DEBUG] [Thread-121227] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:21:26.095 [DEBUG] [Thread-121227] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:21:26.095 [DEBUG] [Thread-121227] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:21:26.095 [DEBUG] [Thread-121227] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:21:26.095 [DEBUG] [Thread-121227] [transport.py] [_log()] Compression: none
2025-11-03T19:21:26.095 [DEBUG] [Thread-121227] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:21:26.105 [DEBUG] [Thread-121229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:21:26.156 [DEBUG] [Thread-121227] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:21:26.157 [DEBUG] [Thread-121227] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:21:26.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:21:26.158 [DEBUG] [Thread-121227] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:21:26.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:21:26.220 [DEBUG] [Thread-121227] [transport.py] [_log()] userauth is OK
2025-11-03T19:21:26.220 [DEBUG] [Thread-121227] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:21:26.220 [DEBUG] [Thread-121227] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:21:26.220 [DEBUG] [Thread-121227] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:21:26.220 [DEBUG] [Thread-121227] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:21:26.242 [INFO] [Thread-121227] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:21:26.242 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:21:26.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:21:27.089 [DEBUG] [Thread-121227] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:21:27.089 [DEBUG] [Thread-121227] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:21:27.141 [DEBUG] [Thread-121227] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:21:27.141 [DEBUG] [Thread-121227] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:21:27.154 [DEBUG] [Thread-121227] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:21:27.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:21:27.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:21:27.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:21:27.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:21:27.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:21:27.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:21:27.202 [DEBUG] [Thread-121227] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:21:37.404 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:21:37.405 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:21:41.156 [DEBUG] [Thread-121230 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:21:46.625 [DEBUG] [Thread-121231 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:21:56.198 [DEBUG] [Thread-121232 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:21:57.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:21:57.200 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:21:57.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:21:57.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 21, 48), 41.81, 4.98, 0.0, 26.01, 21.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:21:57.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:21:48
2025-11-03T19:21:58.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:21:58.151 [DEBUG] [Thread-121233] [transport.py] [_log()] starting thread (client mode): 0xed23160
2025-11-03T19:21:58.151 [DEBUG] [Thread-121233] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:21:58.172 [DEBUG] [Thread-121233] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:21:58.172 [INFO] [Thread-121233] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:21:58.175 [DEBUG] [Thread-121233] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:21:58.175 [DEBUG] [Thread-121233] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:21:58.175 [DEBUG] [Thread-121233] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:21:58.175 [DEBUG] [Thread-121233] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:21:58.175 [DEBUG] [Thread-121233] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:21:58.175 [DEBUG] [Thread-121233] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:21:58.175 [DEBUG] [Thread-121233] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:21:58.175 [DEBUG] [Thread-121233] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:21:58.175 [DEBUG] [Thread-121233] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:21:58.175 [DEBUG] [Thread-121233] [transport.py] [_log()] client lang: <none>
2025-11-03T19:21:58.175 [DEBUG] [Thread-121233] [transport.py] [_log()] server lang: <none>
2025-11-03T19:21:58.175 [DEBUG] [Thread-121233] [transport.py] [_log()] kex follows: False
2025-11-03T19:21:58.175 [DEBUG] [Thread-121233] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:21:58.175 [DEBUG] [Thread-121233] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:21:58.175 [DEBUG] [Thread-121233] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:21:58.175 [DEBUG] [Thread-121233] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:21:58.175 [DEBUG] [Thread-121233] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:21:58.175 [DEBUG] [Thread-121233] [transport.py] [_log()] Compression: none
2025-11-03T19:21:58.175 [DEBUG] [Thread-121233] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:21:58.192 [DEBUG] [Thread-121233] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:21:58.193 [DEBUG] [Thread-121233] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:21:58.193 [DEBUG] [Thread-121233] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:21:58.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:21:58.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:21:58.195 [DEBUG] [Thread-121233] [transport.py] [_log()] userauth is OK
2025-11-03T19:21:58.195 [DEBUG] [Thread-121233] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:21:58.196 [DEBUG] [Thread-121233] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:21:58.196 [DEBUG] [Thread-121233] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:21:58.196 [DEBUG] [Thread-121233] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:21:58.217 [INFO] [Thread-121233] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:21:58.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:21:58.826 [DEBUG] [Thread-121233] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:21:58.827 [DEBUG] [Thread-121233] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:21:58.827 [DEBUG] [Thread-121233] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:21:58.868 [DEBUG] [Thread-121233] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:21:58.868 [DEBUG] [Thread-121233] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:21:58.871 [DEBUG] [Thread-121233] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:21:58.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:21:58.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:21:58.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:21:58.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:21:58.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:21:58.897 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:21:58.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:21:58.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:21:58.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:21:58.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.723018 -999.00  +21.50  19.90      9  -11.80 1 1 1 1 1   621    0 32.31 -35.86 ----- 19.9 19.9 308.2 25.6 21.6 -31.0 21.6 -30.0 21.4 -29.9 21.6 -30.6
2025-11-03T19:21:58.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:21:58.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:21:58.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.723018
2025-11-03T19:21:58.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:21:58.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:21:58.899 [DEBUG] [Thread-121233] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:21:58.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:21:58.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:21:58.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:21:58.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:21:48', tmtdew=41.81, humidity=4.98, cloud=0.0, wind=26.01, temperature=21.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:21:08.755', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:21:58.985 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:21:58.997 [DEBUG] [Thread-121236] [transport.py] [_log()] starting thread (client mode): 0x117e9a50
2025-11-03T19:21:58.997 [DEBUG] [Thread-121236] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:21:59.012 [DEBUG] [Thread-121236] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:21:59.012 [INFO] [Thread-121236] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:21:59.019 [DEBUG] [Thread-121236] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:21:59.019 [DEBUG] [Thread-121236] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:21:59.019 [DEBUG] [Thread-121236] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:21:59.019 [DEBUG] [Thread-121236] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:21:59.020 [DEBUG] [Thread-121236] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:21:59.020 [DEBUG] [Thread-121236] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:21:59.020 [DEBUG] [Thread-121236] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:21:59.020 [DEBUG] [Thread-121236] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:21:59.020 [DEBUG] [Thread-121236] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:21:59.020 [DEBUG] [Thread-121236] [transport.py] [_log()] client lang: <none>
2025-11-03T19:21:59.020 [DEBUG] [Thread-121236] [transport.py] [_log()] server lang: <none>
2025-11-03T19:21:59.020 [DEBUG] [Thread-121236] [transport.py] [_log()] kex follows: False
2025-11-03T19:21:59.020 [DEBUG] [Thread-121236] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:21:59.020 [DEBUG] [Thread-121236] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:21:59.020 [DEBUG] [Thread-121236] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:21:59.020 [DEBUG] [Thread-121236] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:21:59.020 [DEBUG] [Thread-121236] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:21:59.020 [DEBUG] [Thread-121236] [transport.py] [_log()] Compression: none
2025-11-03T19:21:59.020 [DEBUG] [Thread-121236] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:21:59.077 [DEBUG] [Thread-121236] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:21:59.077 [DEBUG] [Thread-121236] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:21:59.078 [DEBUG] [Thread-121236] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:21:59.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:21:59.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:21:59.133 [DEBUG] [Thread-121236] [transport.py] [_log()] userauth is OK
2025-11-03T19:21:59.133 [DEBUG] [Thread-121236] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:21:59.134 [DEBUG] [Thread-121236] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:21:59.134 [DEBUG] [Thread-121236] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:21:59.134 [DEBUG] [Thread-121236] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:21:59.156 [INFO] [Thread-121236] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:21:59.156 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:21:59.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:22:00.000 [DEBUG] [Thread-121236] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:22:00.000 [DEBUG] [Thread-121236] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:22:00.047 [DEBUG] [Thread-121236] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:22:00.048 [DEBUG] [Thread-121236] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:22:00.056 [DEBUG] [Thread-121236] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:22:00.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:22:00.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:22:00.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:22:00.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:22:00.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:22:00.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:22:00.090 [DEBUG] [Thread-121236] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:22:11.232 [DEBUG] [Thread-121238 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:22:26.296 [DEBUG] [Thread-121239 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:22:30.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:22:30.106 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:22:30.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:22:30.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 22, 21), 41.8, 4.98, 0.0, 24.88, 21.62, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:22:30.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:22:21
2025-11-03T19:22:31.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:22:31.192 [DEBUG] [Thread-121240] [transport.py] [_log()] starting thread (client mode): 0xed13a90
2025-11-03T19:22:31.192 [DEBUG] [Thread-121240] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:22:31.211 [DEBUG] [Thread-121240] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:22:31.211 [INFO] [Thread-121240] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:22:31.214 [DEBUG] [Thread-121240] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:22:31.214 [DEBUG] [Thread-121240] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:22:31.214 [DEBUG] [Thread-121240] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:22:31.214 [DEBUG] [Thread-121240] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:22:31.214 [DEBUG] [Thread-121240] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:22:31.214 [DEBUG] [Thread-121240] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:22:31.214 [DEBUG] [Thread-121240] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:22:31.214 [DEBUG] [Thread-121240] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:22:31.214 [DEBUG] [Thread-121240] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:22:31.214 [DEBUG] [Thread-121240] [transport.py] [_log()] client lang: <none>
2025-11-03T19:22:31.214 [DEBUG] [Thread-121240] [transport.py] [_log()] server lang: <none>
2025-11-03T19:22:31.214 [DEBUG] [Thread-121240] [transport.py] [_log()] kex follows: False
2025-11-03T19:22:31.214 [DEBUG] [Thread-121240] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:22:31.214 [DEBUG] [Thread-121240] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:22:31.214 [DEBUG] [Thread-121240] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:22:31.214 [DEBUG] [Thread-121240] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:22:31.214 [DEBUG] [Thread-121240] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:22:31.214 [DEBUG] [Thread-121240] [transport.py] [_log()] Compression: none
2025-11-03T19:22:31.214 [DEBUG] [Thread-121240] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:22:31.229 [DEBUG] [Thread-121240] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:22:31.229 [DEBUG] [Thread-121240] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:22:31.230 [DEBUG] [Thread-121240] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:22:31.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:22:31.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:22:31.232 [DEBUG] [Thread-121240] [transport.py] [_log()] userauth is OK
2025-11-03T19:22:31.232 [DEBUG] [Thread-121240] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:22:31.232 [DEBUG] [Thread-121240] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:22:31.232 [DEBUG] [Thread-121240] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:22:31.232 [DEBUG] [Thread-121240] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:22:31.250 [INFO] [Thread-121240] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:22:31.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:22:31.970 [DEBUG] [Thread-121240] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:22:31.970 [DEBUG] [Thread-121240] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:22:31.970 [DEBUG] [Thread-121240] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:22:32.012 [DEBUG] [Thread-121240] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:22:32.012 [DEBUG] [Thread-121240] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:22:32.014 [DEBUG] [Thread-121240] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:22:32.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:22:32.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:22:32.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:22:32.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:22:32.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:22:32.043 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:22:32.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:22:32.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:22:32.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:22:32.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.723365 -999.00  +21.50  26.99      9  -11.70 1 1 1 1 1   603    0 32.47 -35.41 ----- 27.0 27.0 308.6 33.0 21.6 -31.0 21.5 -29.9 21.3 -29.9 21.5 -30.7
2025-11-03T19:22:32.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:22:32.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:22:32.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.723365
2025-11-03T19:22:32.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:22:32.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:22:32.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:22:32.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:22:32.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:22:32.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:22:21', tmtdew=41.8, humidity=4.98, cloud=0.0, wind=24.88, temperature=21.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:21:38.736', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:22:32.044 [DEBUG] [Thread-121240] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:22:32.116 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:22:32.127 [DEBUG] [Thread-121243] [transport.py] [_log()] starting thread (client mode): 0x11799090
2025-11-03T19:22:32.127 [DEBUG] [Thread-121243] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:22:32.142 [DEBUG] [Thread-121243] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:22:32.142 [INFO] [Thread-121243] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:22:32.149 [DEBUG] [Thread-121243] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:22:32.150 [DEBUG] [Thread-121243] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:22:32.150 [DEBUG] [Thread-121243] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:22:32.150 [DEBUG] [Thread-121243] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:22:32.150 [DEBUG] [Thread-121243] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:22:32.150 [DEBUG] [Thread-121243] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:22:32.150 [DEBUG] [Thread-121243] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:22:32.150 [DEBUG] [Thread-121243] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:22:32.150 [DEBUG] [Thread-121243] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:22:32.150 [DEBUG] [Thread-121243] [transport.py] [_log()] client lang: <none>
2025-11-03T19:22:32.150 [DEBUG] [Thread-121243] [transport.py] [_log()] server lang: <none>
2025-11-03T19:22:32.150 [DEBUG] [Thread-121243] [transport.py] [_log()] kex follows: False
2025-11-03T19:22:32.150 [DEBUG] [Thread-121243] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:22:32.150 [DEBUG] [Thread-121243] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:22:32.150 [DEBUG] [Thread-121243] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:22:32.150 [DEBUG] [Thread-121243] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:22:32.150 [DEBUG] [Thread-121243] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:22:32.150 [DEBUG] [Thread-121243] [transport.py] [_log()] Compression: none
2025-11-03T19:22:32.150 [DEBUG] [Thread-121243] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:22:32.208 [DEBUG] [Thread-121243] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:22:32.208 [DEBUG] [Thread-121243] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:22:32.208 [DEBUG] [Thread-121243] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:22:32.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:22:32.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:22:32.265 [DEBUG] [Thread-121243] [transport.py] [_log()] userauth is OK
2025-11-03T19:22:32.265 [DEBUG] [Thread-121243] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:22:32.265 [DEBUG] [Thread-121243] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:22:32.265 [DEBUG] [Thread-121243] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:22:32.265 [DEBUG] [Thread-121243] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:22:32.279 [INFO] [Thread-121243] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:22:32.279 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:22:32.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:22:33.096 [DEBUG] [Thread-121243] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:22:33.096 [DEBUG] [Thread-121243] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:22:33.144 [DEBUG] [Thread-121243] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:22:33.145 [DEBUG] [Thread-121243] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:22:33.155 [DEBUG] [Thread-121243] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:22:33.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:22:33.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:22:33.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:22:33.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:22:33.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:22:33.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:22:33.198 [DEBUG] [Thread-121243] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:22:41.330 [DEBUG] [Thread-121245 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:22:43.287 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:22:43.288 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:22:46.710 [DEBUG] [Thread-121246 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:22:56.387 [DEBUG] [Thread-121247 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:23:03.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:23:03.221 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:23:03.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:23:03.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 22, 53), 41.69, 4.97, 0.0, 25.53, 21.52, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:23:03.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:22:53
2025-11-03T19:23:03.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:23:04.149 [DEBUG] [Thread-121248] [transport.py] [_log()] starting thread (client mode): 0xed12260
2025-11-03T19:23:04.149 [DEBUG] [Thread-121248] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:23:04.170 [DEBUG] [Thread-121248] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:23:04.170 [INFO] [Thread-121248] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:23:04.173 [DEBUG] [Thread-121248] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:23:04.173 [DEBUG] [Thread-121248] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:23:04.173 [DEBUG] [Thread-121248] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:23:04.173 [DEBUG] [Thread-121248] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:23:04.173 [DEBUG] [Thread-121248] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:23:04.173 [DEBUG] [Thread-121248] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:23:04.173 [DEBUG] [Thread-121248] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:23:04.173 [DEBUG] [Thread-121248] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:23:04.173 [DEBUG] [Thread-121248] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:23:04.173 [DEBUG] [Thread-121248] [transport.py] [_log()] client lang: <none>
2025-11-03T19:23:04.173 [DEBUG] [Thread-121248] [transport.py] [_log()] server lang: <none>
2025-11-03T19:23:04.173 [DEBUG] [Thread-121248] [transport.py] [_log()] kex follows: False
2025-11-03T19:23:04.173 [DEBUG] [Thread-121248] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:23:04.173 [DEBUG] [Thread-121248] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:23:04.173 [DEBUG] [Thread-121248] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:23:04.173 [DEBUG] [Thread-121248] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:23:04.173 [DEBUG] [Thread-121248] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:23:04.173 [DEBUG] [Thread-121248] [transport.py] [_log()] Compression: none
2025-11-03T19:23:04.173 [DEBUG] [Thread-121248] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:23:04.189 [DEBUG] [Thread-121248] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:23:04.189 [DEBUG] [Thread-121248] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:23:04.189 [DEBUG] [Thread-121248] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:23:04.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:23:04.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:23:04.190 [DEBUG] [Thread-121248] [transport.py] [_log()] userauth is OK
2025-11-03T19:23:04.190 [DEBUG] [Thread-121248] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:23:04.190 [DEBUG] [Thread-121248] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:23:04.190 [DEBUG] [Thread-121248] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:23:04.190 [DEBUG] [Thread-121248] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:23:04.200 [INFO] [Thread-121248] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:23:04.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:23:04.833 [DEBUG] [Thread-121248] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:23:04.833 [DEBUG] [Thread-121248] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:23:04.833 [DEBUG] [Thread-121248] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:23:04.874 [DEBUG] [Thread-121248] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:23:04.874 [DEBUG] [Thread-121248] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:23:04.876 [DEBUG] [Thread-121248] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:23:04.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:23:04.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:23:04.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:23:04.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:23:04.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:23:04.895 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:23:04.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:23:04.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:23:04.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:23:04.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.723713 -999.00  +21.50  26.14      9  -11.80 1 1 1 1 1   583    0 32.74 -34.03 ----- 26.1 26.1 310.6 31.4 21.6 -31.0 21.6 -30.1 21.3 -29.7 21.5 -30.5
2025-11-03T19:23:04.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:23:04.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:23:04.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.723713
2025-11-03T19:23:04.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:23:04.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:23:04.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:23:04.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:23:04.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:23:04.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:22:53', tmtdew=41.69, humidity=4.97, cloud=0.0, wind=25.53, temperature=21.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:22:08.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:23:04.897 [DEBUG] [Thread-121248] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:23:04.971 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:23:04.984 [DEBUG] [Thread-121251] [transport.py] [_log()] starting thread (client mode): 0xeda1930
2025-11-03T19:23:04.984 [DEBUG] [Thread-121251] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:23:04.999 [DEBUG] [Thread-121251] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:23:04.999 [INFO] [Thread-121251] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:23:05.007 [DEBUG] [Thread-121251] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:23:05.007 [DEBUG] [Thread-121251] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:23:05.007 [DEBUG] [Thread-121251] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:23:05.007 [DEBUG] [Thread-121251] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:23:05.007 [DEBUG] [Thread-121251] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:23:05.007 [DEBUG] [Thread-121251] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:23:05.007 [DEBUG] [Thread-121251] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:23:05.007 [DEBUG] [Thread-121251] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:23:05.007 [DEBUG] [Thread-121251] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:23:05.007 [DEBUG] [Thread-121251] [transport.py] [_log()] client lang: <none>
2025-11-03T19:23:05.007 [DEBUG] [Thread-121251] [transport.py] [_log()] server lang: <none>
2025-11-03T19:23:05.007 [DEBUG] [Thread-121251] [transport.py] [_log()] kex follows: False
2025-11-03T19:23:05.007 [DEBUG] [Thread-121251] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:23:05.007 [DEBUG] [Thread-121251] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:23:05.007 [DEBUG] [Thread-121251] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:23:05.008 [DEBUG] [Thread-121251] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:23:05.008 [DEBUG] [Thread-121251] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:23:05.008 [DEBUG] [Thread-121251] [transport.py] [_log()] Compression: none
2025-11-03T19:23:05.008 [DEBUG] [Thread-121251] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:23:05.064 [DEBUG] [Thread-121251] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:23:05.064 [DEBUG] [Thread-121251] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:23:05.064 [DEBUG] [Thread-121251] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:23:05.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:23:05.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:23:05.124 [DEBUG] [Thread-121251] [transport.py] [_log()] userauth is OK
2025-11-03T19:23:05.124 [DEBUG] [Thread-121251] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:23:05.124 [DEBUG] [Thread-121251] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:23:05.124 [DEBUG] [Thread-121251] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:23:05.124 [DEBUG] [Thread-121251] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:23:05.138 [INFO] [Thread-121251] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:23:05.138 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:23:05.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:23:06.000 [DEBUG] [Thread-121251] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:23:06.000 [DEBUG] [Thread-121251] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:23:06.048 [DEBUG] [Thread-121251] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:23:06.048 [DEBUG] [Thread-121251] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:23:06.057 [DEBUG] [Thread-121251] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:23:06.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:23:06.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:23:06.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:23:06.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:23:06.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:23:06.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:23:06.088 [DEBUG] [Thread-121251] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:23:11.418 [DEBUG] [Thread-121253 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:23:26.481 [DEBUG] [Thread-121254 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:23:36.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:23:36.087 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:23:36.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:23:36.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 23, 26), 41.63, 4.98, 0.0, 25.02, 21.46, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:23:36.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:23:26
2025-11-03T19:23:37.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:23:37.158 [DEBUG] [Thread-121255] [transport.py] [_log()] starting thread (client mode): 0x1174c490
2025-11-03T19:23:37.158 [DEBUG] [Thread-121255] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:23:37.177 [DEBUG] [Thread-121255] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:23:37.177 [INFO] [Thread-121255] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:23:37.181 [DEBUG] [Thread-121255] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:23:37.181 [DEBUG] [Thread-121255] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:23:37.181 [DEBUG] [Thread-121255] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:23:37.181 [DEBUG] [Thread-121255] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:23:37.181 [DEBUG] [Thread-121255] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:23:37.181 [DEBUG] [Thread-121255] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:23:37.181 [DEBUG] [Thread-121255] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:23:37.181 [DEBUG] [Thread-121255] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:23:37.181 [DEBUG] [Thread-121255] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:23:37.181 [DEBUG] [Thread-121255] [transport.py] [_log()] client lang: <none>
2025-11-03T19:23:37.181 [DEBUG] [Thread-121255] [transport.py] [_log()] server lang: <none>
2025-11-03T19:23:37.181 [DEBUG] [Thread-121255] [transport.py] [_log()] kex follows: False
2025-11-03T19:23:37.181 [DEBUG] [Thread-121255] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:23:37.181 [DEBUG] [Thread-121255] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:23:37.181 [DEBUG] [Thread-121255] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:23:37.181 [DEBUG] [Thread-121255] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:23:37.181 [DEBUG] [Thread-121255] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:23:37.181 [DEBUG] [Thread-121255] [transport.py] [_log()] Compression: none
2025-11-03T19:23:37.181 [DEBUG] [Thread-121255] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:23:37.199 [DEBUG] [Thread-121255] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:23:37.199 [DEBUG] [Thread-121255] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:23:37.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:23:37.209 [DEBUG] [Thread-121255] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:23:37.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:23:37.211 [DEBUG] [Thread-121255] [transport.py] [_log()] userauth is OK
2025-11-03T19:23:37.212 [DEBUG] [Thread-121255] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:23:37.212 [DEBUG] [Thread-121255] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:23:37.212 [DEBUG] [Thread-121255] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:23:37.212 [DEBUG] [Thread-121255] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:23:37.240 [INFO] [Thread-121255] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:23:37.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:23:37.937 [DEBUG] [Thread-121255] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:23:37.937 [DEBUG] [Thread-121255] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:23:37.937 [DEBUG] [Thread-121255] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:23:37.979 [DEBUG] [Thread-121255] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:23:37.979 [DEBUG] [Thread-121255] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:23:37.981 [DEBUG] [Thread-121255] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:23:37.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:23:37.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:23:37.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:23:37.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:23:38.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:23:38.001 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:23:38.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:23:38.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:23:38.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:23:38.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.724060 -999.00  +21.50  21.03      9  -11.80 1 1 1 1 1   563    0 32.43 -31.19 ----- 21.0 21.0 314.8 32.3 21.6 -31.0 21.5 -29.9 21.2 -29.9 21.5 -30.6
2025-11-03T19:23:38.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:23:38.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:23:38.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.724060
2025-11-03T19:23:38.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:23:38.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:23:38.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:23:38.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:23:38.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:23:38.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:23:26', tmtdew=41.63, humidity=4.98, cloud=0.0, wind=25.02, temperature=21.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:22:38.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:23:38.004 [DEBUG] [Thread-121255] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:23:38.075 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:23:38.087 [DEBUG] [Thread-121258] [transport.py] [_log()] starting thread (client mode): 0x117997e0
2025-11-03T19:23:38.087 [DEBUG] [Thread-121258] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:23:38.102 [DEBUG] [Thread-121258] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:23:38.102 [INFO] [Thread-121258] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:23:38.109 [DEBUG] [Thread-121258] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:23:38.109 [DEBUG] [Thread-121258] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:23:38.109 [DEBUG] [Thread-121258] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:23:38.109 [DEBUG] [Thread-121258] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:23:38.109 [DEBUG] [Thread-121258] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:23:38.109 [DEBUG] [Thread-121258] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:23:38.109 [DEBUG] [Thread-121258] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:23:38.109 [DEBUG] [Thread-121258] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:23:38.109 [DEBUG] [Thread-121258] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:23:38.109 [DEBUG] [Thread-121258] [transport.py] [_log()] client lang: <none>
2025-11-03T19:23:38.109 [DEBUG] [Thread-121258] [transport.py] [_log()] server lang: <none>
2025-11-03T19:23:38.109 [DEBUG] [Thread-121258] [transport.py] [_log()] kex follows: False
2025-11-03T19:23:38.109 [DEBUG] [Thread-121258] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:23:38.109 [DEBUG] [Thread-121258] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:23:38.109 [DEBUG] [Thread-121258] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:23:38.109 [DEBUG] [Thread-121258] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:23:38.109 [DEBUG] [Thread-121258] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:23:38.109 [DEBUG] [Thread-121258] [transport.py] [_log()] Compression: none
2025-11-03T19:23:38.109 [DEBUG] [Thread-121258] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:23:38.167 [DEBUG] [Thread-121258] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:23:38.167 [DEBUG] [Thread-121258] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:23:38.167 [DEBUG] [Thread-121258] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:23:38.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:23:38.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:23:38.224 [DEBUG] [Thread-121258] [transport.py] [_log()] userauth is OK
2025-11-03T19:23:38.224 [DEBUG] [Thread-121258] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:23:38.224 [DEBUG] [Thread-121258] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:23:38.224 [DEBUG] [Thread-121258] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:23:38.224 [DEBUG] [Thread-121258] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:23:38.238 [INFO] [Thread-121258] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:23:38.238 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:23:38.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:23:39.077 [DEBUG] [Thread-121258] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:23:39.077 [DEBUG] [Thread-121258] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:23:39.125 [DEBUG] [Thread-121258] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:23:39.125 [DEBUG] [Thread-121258] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:23:39.134 [DEBUG] [Thread-121258] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:23:39.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:23:39.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:23:39.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:23:39.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:23:39.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:23:39.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:23:39.166 [DEBUG] [Thread-121258] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:23:41.516 [DEBUG] [Thread-121260 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:23:46.790 [DEBUG] [Thread-121261 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:23:50.688 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:23:50.690 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:23:56.561 [DEBUG] [Thread-121262 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:24:09.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:24:09.188 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:24:09.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:24:09.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 23, 58), 41.73, 4.98, 0.0, 24.98, 21.51, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:24:09.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:23:58
2025-11-03T19:24:10.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:24:10.250 [DEBUG] [Thread-121263] [transport.py] [_log()] starting thread (client mode): 0xed2d540
2025-11-03T19:24:10.250 [DEBUG] [Thread-121263] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:24:10.269 [DEBUG] [Thread-121263] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:24:10.269 [INFO] [Thread-121263] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:24:10.271 [DEBUG] [Thread-121263] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:24:10.271 [DEBUG] [Thread-121263] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:24:10.271 [DEBUG] [Thread-121263] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:24:10.271 [DEBUG] [Thread-121263] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:24:10.271 [DEBUG] [Thread-121263] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:24:10.271 [DEBUG] [Thread-121263] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:24:10.271 [DEBUG] [Thread-121263] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:24:10.271 [DEBUG] [Thread-121263] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:24:10.271 [DEBUG] [Thread-121263] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:24:10.271 [DEBUG] [Thread-121263] [transport.py] [_log()] client lang: <none>
2025-11-03T19:24:10.271 [DEBUG] [Thread-121263] [transport.py] [_log()] server lang: <none>
2025-11-03T19:24:10.271 [DEBUG] [Thread-121263] [transport.py] [_log()] kex follows: False
2025-11-03T19:24:10.271 [DEBUG] [Thread-121263] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:24:10.271 [DEBUG] [Thread-121263] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:24:10.272 [DEBUG] [Thread-121263] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:24:10.272 [DEBUG] [Thread-121263] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:24:10.272 [DEBUG] [Thread-121263] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:24:10.272 [DEBUG] [Thread-121263] [transport.py] [_log()] Compression: none
2025-11-03T19:24:10.272 [DEBUG] [Thread-121263] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:24:10.284 [DEBUG] [Thread-121263] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:24:10.284 [DEBUG] [Thread-121263] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:24:10.284 [DEBUG] [Thread-121263] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:24:10.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:24:10.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:24:10.285 [DEBUG] [Thread-121263] [transport.py] [_log()] userauth is OK
2025-11-03T19:24:10.285 [DEBUG] [Thread-121263] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:24:10.286 [DEBUG] [Thread-121263] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:24:10.286 [DEBUG] [Thread-121263] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:24:10.286 [DEBUG] [Thread-121263] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:24:10.297 [INFO] [Thread-121263] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:24:10.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:24:10.918 [DEBUG] [Thread-121263] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:24:10.918 [DEBUG] [Thread-121263] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:24:10.918 [DEBUG] [Thread-121263] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:24:10.959 [DEBUG] [Thread-121263] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:24:10.959 [DEBUG] [Thread-121263] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:24:10.961 [DEBUG] [Thread-121263] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:24:10.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:24:10.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:24:10.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:24:10.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:24:10.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:24:10.978 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:24:10.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:24:10.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:24:10.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:24:10.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.724407 -999.00  +21.50  23.89      9  -11.80 1 1 1 1 1   543    0 32.51 -29.07 ----- 23.9 23.9 311.6 34.6 21.6 -31.0 21.5 -30.1 21.2 -29.8 21.5 -30.8
2025-11-03T19:24:10.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:24:10.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:24:10.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.724407
2025-11-03T19:24:10.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:24:10.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:24:10.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:24:10.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:24:10.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:24:10.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:23:58', tmtdew=41.73, humidity=4.98, cloud=0.0, wind=24.98, temperature=21.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:23:08.765', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:24:10.980 [DEBUG] [Thread-121263] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:24:11.054 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:24:11.065 [DEBUG] [Thread-121266] [transport.py] [_log()] starting thread (client mode): 0x141daef0
2025-11-03T19:24:11.065 [DEBUG] [Thread-121266] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:24:11.080 [DEBUG] [Thread-121266] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:24:11.080 [INFO] [Thread-121266] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:24:11.087 [DEBUG] [Thread-121266] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:24:11.087 [DEBUG] [Thread-121266] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:24:11.087 [DEBUG] [Thread-121266] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:24:11.087 [DEBUG] [Thread-121266] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:24:11.087 [DEBUG] [Thread-121266] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:24:11.087 [DEBUG] [Thread-121266] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:24:11.087 [DEBUG] [Thread-121266] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:24:11.087 [DEBUG] [Thread-121266] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:24:11.087 [DEBUG] [Thread-121266] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:24:11.087 [DEBUG] [Thread-121266] [transport.py] [_log()] client lang: <none>
2025-11-03T19:24:11.087 [DEBUG] [Thread-121266] [transport.py] [_log()] server lang: <none>
2025-11-03T19:24:11.087 [DEBUG] [Thread-121266] [transport.py] [_log()] kex follows: False
2025-11-03T19:24:11.087 [DEBUG] [Thread-121266] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:24:11.087 [DEBUG] [Thread-121266] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:24:11.087 [DEBUG] [Thread-121266] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:24:11.087 [DEBUG] [Thread-121266] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:24:11.087 [DEBUG] [Thread-121266] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:24:11.087 [DEBUG] [Thread-121266] [transport.py] [_log()] Compression: none
2025-11-03T19:24:11.087 [DEBUG] [Thread-121266] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:24:11.142 [DEBUG] [Thread-121266] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:24:11.142 [DEBUG] [Thread-121266] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:24:11.142 [DEBUG] [Thread-121266] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:24:11.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:24:11.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:24:11.200 [DEBUG] [Thread-121266] [transport.py] [_log()] userauth is OK
2025-11-03T19:24:11.200 [DEBUG] [Thread-121266] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:24:11.200 [DEBUG] [Thread-121266] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:24:11.200 [DEBUG] [Thread-121266] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:24:11.200 [DEBUG] [Thread-121266] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:24:11.214 [INFO] [Thread-121266] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:24:11.214 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:24:11.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:24:11.594 [DEBUG] [Thread-121268 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:24:12.061 [DEBUG] [Thread-121266] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:24:12.061 [DEBUG] [Thread-121266] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:24:12.109 [DEBUG] [Thread-121266] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:24:12.109 [DEBUG] [Thread-121266] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:24:12.118 [DEBUG] [Thread-121266] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:24:12.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:24:12.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:24:12.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:24:12.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:24:12.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:24:12.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:24:12.153 [DEBUG] [Thread-121266] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:24:26.654 [DEBUG] [Thread-121269 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:24:41.694 [DEBUG] [Thread-121270 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:24:42.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:24:42.159 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:24:42.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:24:42.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 24, 30), 41.69, 5.0, 0.0, 24.44, 21.49, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:24:42.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:24:30
2025-11-03T19:24:42.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:24:43.148 [DEBUG] [Thread-121271] [transport.py] [_log()] starting thread (client mode): 0x117ea860
2025-11-03T19:24:43.148 [DEBUG] [Thread-121271] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:24:43.169 [DEBUG] [Thread-121271] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:24:43.170 [INFO] [Thread-121271] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:24:43.172 [DEBUG] [Thread-121271] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:24:43.173 [DEBUG] [Thread-121271] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:24:43.173 [DEBUG] [Thread-121271] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:24:43.173 [DEBUG] [Thread-121271] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:24:43.173 [DEBUG] [Thread-121271] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:24:43.173 [DEBUG] [Thread-121271] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:24:43.173 [DEBUG] [Thread-121271] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:24:43.173 [DEBUG] [Thread-121271] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:24:43.173 [DEBUG] [Thread-121271] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:24:43.173 [DEBUG] [Thread-121271] [transport.py] [_log()] client lang: <none>
2025-11-03T19:24:43.173 [DEBUG] [Thread-121271] [transport.py] [_log()] server lang: <none>
2025-11-03T19:24:43.173 [DEBUG] [Thread-121271] [transport.py] [_log()] kex follows: False
2025-11-03T19:24:43.173 [DEBUG] [Thread-121271] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:24:43.173 [DEBUG] [Thread-121271] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:24:43.173 [DEBUG] [Thread-121271] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:24:43.173 [DEBUG] [Thread-121271] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:24:43.173 [DEBUG] [Thread-121271] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:24:43.173 [DEBUG] [Thread-121271] [transport.py] [_log()] Compression: none
2025-11-03T19:24:43.173 [DEBUG] [Thread-121271] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:24:43.186 [DEBUG] [Thread-121271] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:24:43.186 [DEBUG] [Thread-121271] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:24:43.187 [DEBUG] [Thread-121271] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:24:43.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:24:43.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:24:43.188 [DEBUG] [Thread-121271] [transport.py] [_log()] userauth is OK
2025-11-03T19:24:43.189 [DEBUG] [Thread-121271] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:24:43.189 [DEBUG] [Thread-121271] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:24:43.189 [DEBUG] [Thread-121271] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:24:43.189 [DEBUG] [Thread-121271] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:24:43.213 [INFO] [Thread-121271] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:24:43.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:24:43.969 [DEBUG] [Thread-121271] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:24:43.969 [DEBUG] [Thread-121271] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:24:43.970 [DEBUG] [Thread-121271] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:24:44.010 [DEBUG] [Thread-121271] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:24:44.012 [DEBUG] [Thread-121271] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:24:44.015 [DEBUG] [Thread-121271] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:24:44.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:24:44.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:24:44.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:24:44.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:24:44.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:24:44.040 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:24:44.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:24:44.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:24:44.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:24:44.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.725101 -999.00  +21.40  24.66      9  -11.90 1 1 1 1 1   500    0 32.84 -27.92 ----- 24.7 24.7 311.0 35.9 21.5 -31.0 21.4 -29.8 21.2 -29.8 21.4 -30.5
2025-11-03T19:24:44.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:24:44.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:24:44.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.725101
2025-11-03T19:24:44.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:24:44.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:24:44.043 [DEBUG] [Thread-121271] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:24:44.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:24:44.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:24:44.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:24:44.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:24:30', tmtdew=41.69, humidity=5.0, cloud=0.0, wind=24.44, temperature=21.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:24:08.726', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:24:44.127 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:24:46.907 [DEBUG] [Thread-121274 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:24:55.605 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:24:55.606 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:24:56.734 [DEBUG] [Thread-121275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:25:11.785 [DEBUG] [Thread-121276 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:25:26.827 [DEBUG] [Thread-121277 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:25:41.870 [DEBUG] [Thread-121278 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:25:47.008 [DEBUG] [Thread-121279 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:25:56.902 [DEBUG] [Thread-121280 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:26:00.957 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:26:00.958 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:26:11.940 [DEBUG] [Thread-121281 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:26:26.986 [DEBUG] [Thread-121282 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:26:42.022 [DEBUG] [Thread-121283 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:26:47.324 [DEBUG] [Thread-121284 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:26:57.053 [DEBUG] [Thread-121285 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:26:58.144 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T19:27:06.323 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:27:06.325 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:27:12.085 [DEBUG] [Thread-121286 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:27:27.119 [DEBUG] [Thread-121287 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:27:28.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:27:28.189 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:27:28.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:27:28.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 27, 12), 41.96, 4.47, 0.0, 32.04, 21.52, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:27:28.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:27:12
2025-11-03T19:27:29.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:27:29.292 [DEBUG] [Thread-121288] [transport.py] [_log()] starting thread (client mode): 0xeda2680
2025-11-03T19:27:29.293 [DEBUG] [Thread-121288] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:27:29.305 [DEBUG] [Thread-121288] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:27:29.306 [INFO] [Thread-121288] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:27:29.323 [DEBUG] [Thread-121288] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:27:29.323 [DEBUG] [Thread-121288] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:27:29.324 [DEBUG] [Thread-121288] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:27:29.324 [DEBUG] [Thread-121288] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:27:29.324 [DEBUG] [Thread-121288] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:27:29.324 [DEBUG] [Thread-121288] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:27:29.324 [DEBUG] [Thread-121288] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:27:29.324 [DEBUG] [Thread-121288] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:27:29.324 [DEBUG] [Thread-121288] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:27:29.324 [DEBUG] [Thread-121288] [transport.py] [_log()] client lang: <none>
2025-11-03T19:27:29.324 [DEBUG] [Thread-121288] [transport.py] [_log()] server lang: <none>
2025-11-03T19:27:29.325 [DEBUG] [Thread-121288] [transport.py] [_log()] kex follows: False
2025-11-03T19:27:29.325 [DEBUG] [Thread-121288] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:27:29.326 [DEBUG] [Thread-121288] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:27:29.326 [DEBUG] [Thread-121288] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:27:29.326 [DEBUG] [Thread-121288] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:27:29.326 [DEBUG] [Thread-121288] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:27:29.326 [DEBUG] [Thread-121288] [transport.py] [_log()] Compression: none
2025-11-03T19:27:29.326 [DEBUG] [Thread-121288] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:27:29.363 [DEBUG] [Thread-121288] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:27:29.367 [DEBUG] [Thread-121288] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:27:29.370 [DEBUG] [Thread-121288] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:27:29.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:27:29.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:27:29.375 [DEBUG] [Thread-121288] [transport.py] [_log()] userauth is OK
2025-11-03T19:27:29.376 [DEBUG] [Thread-121288] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:27:29.376 [DEBUG] [Thread-121288] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:27:29.376 [DEBUG] [Thread-121288] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:27:29.376 [DEBUG] [Thread-121288] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:27:29.414 [INFO] [Thread-121288] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:27:29.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:27:30.226 [DEBUG] [Thread-121288] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:27:30.226 [DEBUG] [Thread-121288] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:27:30.237 [DEBUG] [Thread-121288] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:27:30.267 [DEBUG] [Thread-121288] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:27:30.267 [DEBUG] [Thread-121288] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:27:30.271 [DEBUG] [Thread-121288] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:27:30.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:27:30.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:27:30.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:27:30.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:27:30.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:27:30.297 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:27:30.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:27:30.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:27:30.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:27:30.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.726838 -999.00  +21.60  24.63      9  -12.00 1 1 1 1 1   392    0 33.14 -17.98 ----- 24.6 24.6 298.2 33.8 21.4 -30.7 21.4 -29.8 21.1 -29.8 21.4 -30.6
2025-11-03T19:27:30.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:27:30.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:27:30.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.726838
2025-11-03T19:27:30.305 [DEBUG] [Thread-121288] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:27:30.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:27:30.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:27:30.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:27:30.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:27:30.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:27:30.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:27:12', tmtdew=41.96, humidity=4.47, cloud=0.0, wind=32.04, temperature=21.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:26:38.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:27:30.416 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:27:30.428 [DEBUG] [Thread-121291] [transport.py] [_log()] starting thread (client mode): 0x11763dc0
2025-11-03T19:27:30.428 [DEBUG] [Thread-121291] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:27:30.444 [DEBUG] [Thread-121291] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:27:30.444 [INFO] [Thread-121291] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:27:30.451 [DEBUG] [Thread-121291] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:27:30.452 [DEBUG] [Thread-121291] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:27:30.452 [DEBUG] [Thread-121291] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:27:30.452 [DEBUG] [Thread-121291] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:27:30.452 [DEBUG] [Thread-121291] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:27:30.452 [DEBUG] [Thread-121291] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:27:30.452 [DEBUG] [Thread-121291] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:27:30.452 [DEBUG] [Thread-121291] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:27:30.452 [DEBUG] [Thread-121291] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:27:30.452 [DEBUG] [Thread-121291] [transport.py] [_log()] client lang: <none>
2025-11-03T19:27:30.453 [DEBUG] [Thread-121291] [transport.py] [_log()] server lang: <none>
2025-11-03T19:27:30.453 [DEBUG] [Thread-121291] [transport.py] [_log()] kex follows: False
2025-11-03T19:27:30.453 [DEBUG] [Thread-121291] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:27:30.453 [DEBUG] [Thread-121291] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:27:30.453 [DEBUG] [Thread-121291] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:27:30.453 [DEBUG] [Thread-121291] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:27:30.453 [DEBUG] [Thread-121291] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:27:30.453 [DEBUG] [Thread-121291] [transport.py] [_log()] Compression: none
2025-11-03T19:27:30.454 [DEBUG] [Thread-121291] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:27:30.510 [DEBUG] [Thread-121291] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:27:30.511 [DEBUG] [Thread-121291] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:27:30.512 [DEBUG] [Thread-121291] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:27:30.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:27:30.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:27:30.570 [DEBUG] [Thread-121291] [transport.py] [_log()] userauth is OK
2025-11-03T19:27:30.570 [DEBUG] [Thread-121291] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:27:30.571 [DEBUG] [Thread-121291] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:27:30.571 [DEBUG] [Thread-121291] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:27:30.571 [DEBUG] [Thread-121291] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:27:30.590 [INFO] [Thread-121291] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:27:30.590 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:27:30.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:27:31.419 [DEBUG] [Thread-121291] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:27:31.419 [DEBUG] [Thread-121291] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:27:31.458 [DEBUG] [Thread-121291] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:27:31.458 [DEBUG] [Thread-121291] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:27:31.467 [DEBUG] [Thread-121291] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:27:31.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:27:31.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:27:31.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:27:31.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:27:31.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:27:31.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:27:31.501 [DEBUG] [Thread-121291] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:27:42.165 [DEBUG] [Thread-121293 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:27:47.405 [DEBUG] [Thread-121294 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:27:57.298 [DEBUG] [Thread-121295 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:28:01.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:28:01.524 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:28:01.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:28:02.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 27, 44), 42.11, 4.45, 0.0, 30.14, 21.59, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:28:02.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:27:44
2025-11-03T19:28:02.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:28:02.610 [DEBUG] [Thread-121296] [transport.py] [_log()] starting thread (client mode): 0x1179bac0
2025-11-03T19:28:02.610 [DEBUG] [Thread-121296] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:28:02.621 [DEBUG] [Thread-121296] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:28:02.621 [INFO] [Thread-121296] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:28:02.624 [DEBUG] [Thread-121296] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:28:02.625 [DEBUG] [Thread-121296] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:28:02.625 [DEBUG] [Thread-121296] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:28:02.625 [DEBUG] [Thread-121296] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:28:02.625 [DEBUG] [Thread-121296] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:28:02.625 [DEBUG] [Thread-121296] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:28:02.625 [DEBUG] [Thread-121296] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:28:02.625 [DEBUG] [Thread-121296] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:28:02.625 [DEBUG] [Thread-121296] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:28:02.625 [DEBUG] [Thread-121296] [transport.py] [_log()] client lang: <none>
2025-11-03T19:28:02.625 [DEBUG] [Thread-121296] [transport.py] [_log()] server lang: <none>
2025-11-03T19:28:02.625 [DEBUG] [Thread-121296] [transport.py] [_log()] kex follows: False
2025-11-03T19:28:02.625 [DEBUG] [Thread-121296] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:28:02.625 [DEBUG] [Thread-121296] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:28:02.625 [DEBUG] [Thread-121296] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:28:02.625 [DEBUG] [Thread-121296] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:28:02.625 [DEBUG] [Thread-121296] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:28:02.625 [DEBUG] [Thread-121296] [transport.py] [_log()] Compression: none
2025-11-03T19:28:02.625 [DEBUG] [Thread-121296] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:28:02.645 [DEBUG] [Thread-121296] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:28:02.646 [DEBUG] [Thread-121296] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:28:02.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:28:02.647 [DEBUG] [Thread-121296] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:28:02.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:28:02.649 [DEBUG] [Thread-121296] [transport.py] [_log()] userauth is OK
2025-11-03T19:28:02.649 [DEBUG] [Thread-121296] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:28:02.649 [DEBUG] [Thread-121296] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:28:02.649 [DEBUG] [Thread-121296] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:28:02.650 [DEBUG] [Thread-121296] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:28:02.687 [INFO] [Thread-121296] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:28:02.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:28:03.287 [DEBUG] [Thread-121296] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:28:03.287 [DEBUG] [Thread-121296] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:28:03.287 [DEBUG] [Thread-121296] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:28:03.329 [DEBUG] [Thread-121296] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:28:03.329 [DEBUG] [Thread-121296] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:28:03.331 [DEBUG] [Thread-121296] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:28:03.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:28:03.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:28:03.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:28:03.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:28:03.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:28:03.359 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:28:03.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:28:03.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:28:03.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:28:03.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.727185 -999.00  +21.50  23.37      9  -11.90 1 1 1 1 1   371    0 33.31 -17.16 ----- 23.4 23.4 309.7 30.3 21.5 -31.0 21.4 -30.0 21.2 -29.9 21.4 -30.7
2025-11-03T19:28:03.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:28:03.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:28:03.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.727185
2025-11-03T19:28:03.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:28:03.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:28:03.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:28:03.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:28:03.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:28:03.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:27:44', tmtdew=42.11, humidity=4.45, cloud=0.0, wind=30.14, temperature=21.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:27:08.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:28:03.360 [DEBUG] [Thread-121296] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:28:03.433 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:28:03.444 [DEBUG] [Thread-121299] [transport.py] [_log()] starting thread (client mode): 0x117eb8b0
2025-11-03T19:28:03.444 [DEBUG] [Thread-121299] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:28:03.460 [DEBUG] [Thread-121299] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:28:03.460 [INFO] [Thread-121299] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:28:03.467 [DEBUG] [Thread-121299] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:28:03.467 [DEBUG] [Thread-121299] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:28:03.467 [DEBUG] [Thread-121299] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:28:03.467 [DEBUG] [Thread-121299] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:28:03.467 [DEBUG] [Thread-121299] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:28:03.467 [DEBUG] [Thread-121299] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:28:03.467 [DEBUG] [Thread-121299] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:28:03.467 [DEBUG] [Thread-121299] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:28:03.467 [DEBUG] [Thread-121299] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:28:03.467 [DEBUG] [Thread-121299] [transport.py] [_log()] client lang: <none>
2025-11-03T19:28:03.467 [DEBUG] [Thread-121299] [transport.py] [_log()] server lang: <none>
2025-11-03T19:28:03.467 [DEBUG] [Thread-121299] [transport.py] [_log()] kex follows: False
2025-11-03T19:28:03.467 [DEBUG] [Thread-121299] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:28:03.467 [DEBUG] [Thread-121299] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:28:03.467 [DEBUG] [Thread-121299] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:28:03.467 [DEBUG] [Thread-121299] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:28:03.467 [DEBUG] [Thread-121299] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:28:03.467 [DEBUG] [Thread-121299] [transport.py] [_log()] Compression: none
2025-11-03T19:28:03.467 [DEBUG] [Thread-121299] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:28:03.524 [DEBUG] [Thread-121299] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:28:03.524 [DEBUG] [Thread-121299] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:28:03.525 [DEBUG] [Thread-121299] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:28:03.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:28:03.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:28:03.581 [DEBUG] [Thread-121299] [transport.py] [_log()] userauth is OK
2025-11-03T19:28:03.581 [DEBUG] [Thread-121299] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:28:03.581 [DEBUG] [Thread-121299] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:28:03.581 [DEBUG] [Thread-121299] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:28:03.581 [DEBUG] [Thread-121299] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:28:03.595 [INFO] [Thread-121299] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:28:03.596 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:28:03.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:28:04.425 [DEBUG] [Thread-121299] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:28:04.425 [DEBUG] [Thread-121299] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:28:04.473 [DEBUG] [Thread-121299] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:28:04.473 [DEBUG] [Thread-121299] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:28:04.483 [DEBUG] [Thread-121299] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:28:04.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:28:04.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:28:04.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:28:04.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:28:04.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:28:04.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:28:04.522 [DEBUG] [Thread-121299] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:28:12.334 [DEBUG] [Thread-121301 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:28:13.006 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:28:13.007 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:28:27.379 [DEBUG] [Thread-121302 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:28:34.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:28:34.544 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:28:34.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:28:35.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 28, 17), 42.11, 4.45, 0.0, 30.52, 21.59, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:28:35.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:28:17
2025-11-03T19:28:35.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:28:35.601 [DEBUG] [Thread-121303] [transport.py] [_log()] starting thread (client mode): 0x11760610
2025-11-03T19:28:35.602 [DEBUG] [Thread-121303] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:28:35.621 [DEBUG] [Thread-121303] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:28:35.621 [INFO] [Thread-121303] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:28:35.622 [DEBUG] [Thread-121303] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:28:35.622 [DEBUG] [Thread-121303] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:28:35.623 [DEBUG] [Thread-121303] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:28:35.623 [DEBUG] [Thread-121303] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:28:35.623 [DEBUG] [Thread-121303] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:28:35.623 [DEBUG] [Thread-121303] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:28:35.623 [DEBUG] [Thread-121303] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:28:35.623 [DEBUG] [Thread-121303] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:28:35.623 [DEBUG] [Thread-121303] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:28:35.623 [DEBUG] [Thread-121303] [transport.py] [_log()] client lang: <none>
2025-11-03T19:28:35.623 [DEBUG] [Thread-121303] [transport.py] [_log()] server lang: <none>
2025-11-03T19:28:35.623 [DEBUG] [Thread-121303] [transport.py] [_log()] kex follows: False
2025-11-03T19:28:35.623 [DEBUG] [Thread-121303] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:28:35.624 [DEBUG] [Thread-121303] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:28:35.624 [DEBUG] [Thread-121303] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:28:35.624 [DEBUG] [Thread-121303] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:28:35.624 [DEBUG] [Thread-121303] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:28:35.624 [DEBUG] [Thread-121303] [transport.py] [_log()] Compression: none
2025-11-03T19:28:35.624 [DEBUG] [Thread-121303] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:28:35.638 [DEBUG] [Thread-121303] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:28:35.639 [DEBUG] [Thread-121303] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:28:35.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:28:35.640 [DEBUG] [Thread-121303] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:28:35.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:28:35.642 [DEBUG] [Thread-121303] [transport.py] [_log()] userauth is OK
2025-11-03T19:28:35.642 [DEBUG] [Thread-121303] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:28:35.642 [DEBUG] [Thread-121303] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:28:35.642 [DEBUG] [Thread-121303] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:28:35.642 [DEBUG] [Thread-121303] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:28:35.660 [INFO] [Thread-121303] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:28:35.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:28:36.504 [DEBUG] [Thread-121303] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:28:36.504 [DEBUG] [Thread-121303] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:28:36.504 [DEBUG] [Thread-121303] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:28:36.545 [DEBUG] [Thread-121303] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:28:36.545 [DEBUG] [Thread-121303] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:28:36.549 [DEBUG] [Thread-121303] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:28:36.562 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:28:36.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:28:36.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:28:36.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:28:36.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:28:36.574 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:28:36.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:28:36.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:28:36.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:28:36.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.727532 -999.00  +21.50  24.12      9  -12.00 1 1 1 1 1   350    0 33.54 -15.35 ----- 24.1 24.1 303.2 29.6 21.4 -30.9 21.4 -29.8 21.1 -29.7 21.4 -30.6
2025-11-03T19:28:36.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:28:36.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:28:36.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.727532
2025-11-03T19:28:36.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:28:36.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:28:36.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:28:36.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:28:36.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:28:36.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:28:17', tmtdew=42.11, humidity=4.45, cloud=0.0, wind=30.52, temperature=21.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:27:38.765', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:28:36.577 [DEBUG] [Thread-121303] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:28:36.661 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:28:36.674 [DEBUG] [Thread-121306] [transport.py] [_log()] starting thread (client mode): 0x117e86d0
2025-11-03T19:28:36.674 [DEBUG] [Thread-121306] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:28:36.688 [DEBUG] [Thread-121306] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:28:36.689 [INFO] [Thread-121306] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:28:36.696 [DEBUG] [Thread-121306] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:28:36.697 [DEBUG] [Thread-121306] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:28:36.697 [DEBUG] [Thread-121306] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:28:36.697 [DEBUG] [Thread-121306] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:28:36.697 [DEBUG] [Thread-121306] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:28:36.697 [DEBUG] [Thread-121306] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:28:36.697 [DEBUG] [Thread-121306] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:28:36.697 [DEBUG] [Thread-121306] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:28:36.697 [DEBUG] [Thread-121306] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:28:36.698 [DEBUG] [Thread-121306] [transport.py] [_log()] client lang: <none>
2025-11-03T19:28:36.698 [DEBUG] [Thread-121306] [transport.py] [_log()] server lang: <none>
2025-11-03T19:28:36.698 [DEBUG] [Thread-121306] [transport.py] [_log()] kex follows: False
2025-11-03T19:28:36.698 [DEBUG] [Thread-121306] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:28:36.698 [DEBUG] [Thread-121306] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:28:36.698 [DEBUG] [Thread-121306] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:28:36.698 [DEBUG] [Thread-121306] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:28:36.698 [DEBUG] [Thread-121306] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:28:36.699 [DEBUG] [Thread-121306] [transport.py] [_log()] Compression: none
2025-11-03T19:28:36.699 [DEBUG] [Thread-121306] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:28:36.754 [DEBUG] [Thread-121306] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:28:36.754 [DEBUG] [Thread-121306] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:28:36.755 [DEBUG] [Thread-121306] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:28:36.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:28:36.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:28:36.810 [DEBUG] [Thread-121306] [transport.py] [_log()] userauth is OK
2025-11-03T19:28:36.810 [DEBUG] [Thread-121306] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:28:36.810 [DEBUG] [Thread-121306] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:28:36.811 [DEBUG] [Thread-121306] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:28:36.811 [DEBUG] [Thread-121306] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:28:36.830 [INFO] [Thread-121306] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:28:36.830 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:28:36.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:28:37.644 [DEBUG] [Thread-121306] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:28:37.644 [DEBUG] [Thread-121306] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:28:37.692 [DEBUG] [Thread-121306] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:28:37.692 [DEBUG] [Thread-121306] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:28:37.701 [DEBUG] [Thread-121306] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:28:37.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:28:37.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:28:37.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:28:37.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:28:37.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:28:37.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:28:37.735 [DEBUG] [Thread-121306] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:28:42.414 [DEBUG] [Thread-121308 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:28:47.549 [DEBUG] [Thread-121309 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:28:57.479 [DEBUG] [Thread-121310 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:29:07.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:29:07.758 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:29:07.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:29:08.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 28, 49), 42.14, 4.43, 0.0, 26.43, 21.53, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:29:08.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:28:49
2025-11-03T19:29:08.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:29:08.769 [DEBUG] [Thread-121311] [transport.py] [_log()] starting thread (client mode): 0x1174f100
2025-11-03T19:29:08.769 [DEBUG] [Thread-121311] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:29:08.789 [DEBUG] [Thread-121311] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:29:08.789 [INFO] [Thread-121311] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:29:08.792 [DEBUG] [Thread-121311] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:29:08.792 [DEBUG] [Thread-121311] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:29:08.793 [DEBUG] [Thread-121311] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:29:08.793 [DEBUG] [Thread-121311] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:29:08.793 [DEBUG] [Thread-121311] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:29:08.793 [DEBUG] [Thread-121311] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:29:08.793 [DEBUG] [Thread-121311] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:29:08.793 [DEBUG] [Thread-121311] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:29:08.793 [DEBUG] [Thread-121311] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:29:08.793 [DEBUG] [Thread-121311] [transport.py] [_log()] client lang: <none>
2025-11-03T19:29:08.793 [DEBUG] [Thread-121311] [transport.py] [_log()] server lang: <none>
2025-11-03T19:29:08.793 [DEBUG] [Thread-121311] [transport.py] [_log()] kex follows: False
2025-11-03T19:29:08.793 [DEBUG] [Thread-121311] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:29:08.793 [DEBUG] [Thread-121311] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:29:08.793 [DEBUG] [Thread-121311] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:29:08.793 [DEBUG] [Thread-121311] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:29:08.793 [DEBUG] [Thread-121311] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:29:08.793 [DEBUG] [Thread-121311] [transport.py] [_log()] Compression: none
2025-11-03T19:29:08.793 [DEBUG] [Thread-121311] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:29:08.811 [DEBUG] [Thread-121311] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:29:08.812 [DEBUG] [Thread-121311] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:29:08.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:29:08.813 [DEBUG] [Thread-121311] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:29:08.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:29:08.815 [DEBUG] [Thread-121311] [transport.py] [_log()] userauth is OK
2025-11-03T19:29:08.815 [DEBUG] [Thread-121311] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:29:08.815 [DEBUG] [Thread-121311] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:29:08.816 [DEBUG] [Thread-121311] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:29:08.816 [DEBUG] [Thread-121311] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:29:08.834 [INFO] [Thread-121311] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:29:08.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:29:09.479 [DEBUG] [Thread-121311] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:29:09.479 [DEBUG] [Thread-121311] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:29:09.479 [DEBUG] [Thread-121311] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:29:09.519 [DEBUG] [Thread-121311] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:29:09.519 [DEBUG] [Thread-121311] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:29:09.522 [DEBUG] [Thread-121311] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:29:09.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:29:09.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:29:09.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:29:09.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:29:09.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:29:09.539 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:29:09.539 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:29:09.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:29:09.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:29:09.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.727879 -999.00  +21.40  22.28      9  -11.90 1 1 1 1 1   329    0 33.12 -13.28 ----- 22.3 22.3 300.0 32.3 21.4 -31.0 21.4 -29.9 21.1 -29.7 21.3 -30.5
2025-11-03T19:29:09.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:29:09.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:29:09.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.727879
2025-11-03T19:29:09.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:29:09.548 [DEBUG] [Thread-121311] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:29:09.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:29:09.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:29:09.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:29:09.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:29:09.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:28:49', tmtdew=42.14, humidity=4.43, cloud=0.0, wind=26.43, temperature=21.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:28:08.746', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:29:09.621 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:29:09.633 [DEBUG] [Thread-121314] [transport.py] [_log()] starting thread (client mode): 0x11760250
2025-11-03T19:29:09.633 [DEBUG] [Thread-121314] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:29:09.648 [DEBUG] [Thread-121314] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:29:09.649 [INFO] [Thread-121314] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:29:09.656 [DEBUG] [Thread-121314] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:29:09.656 [DEBUG] [Thread-121314] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:29:09.656 [DEBUG] [Thread-121314] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:29:09.656 [DEBUG] [Thread-121314] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:29:09.656 [DEBUG] [Thread-121314] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:29:09.656 [DEBUG] [Thread-121314] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:29:09.656 [DEBUG] [Thread-121314] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:29:09.656 [DEBUG] [Thread-121314] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:29:09.656 [DEBUG] [Thread-121314] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:29:09.656 [DEBUG] [Thread-121314] [transport.py] [_log()] client lang: <none>
2025-11-03T19:29:09.656 [DEBUG] [Thread-121314] [transport.py] [_log()] server lang: <none>
2025-11-03T19:29:09.656 [DEBUG] [Thread-121314] [transport.py] [_log()] kex follows: False
2025-11-03T19:29:09.656 [DEBUG] [Thread-121314] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:29:09.656 [DEBUG] [Thread-121314] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:29:09.656 [DEBUG] [Thread-121314] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:29:09.656 [DEBUG] [Thread-121314] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:29:09.656 [DEBUG] [Thread-121314] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:29:09.656 [DEBUG] [Thread-121314] [transport.py] [_log()] Compression: none
2025-11-03T19:29:09.656 [DEBUG] [Thread-121314] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:29:09.711 [DEBUG] [Thread-121314] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:29:09.711 [DEBUG] [Thread-121314] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:29:09.711 [DEBUG] [Thread-121314] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:29:09.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:29:09.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:29:09.768 [DEBUG] [Thread-121314] [transport.py] [_log()] userauth is OK
2025-11-03T19:29:09.768 [DEBUG] [Thread-121314] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:29:09.768 [DEBUG] [Thread-121314] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:29:09.768 [DEBUG] [Thread-121314] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:29:09.768 [DEBUG] [Thread-121314] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:29:09.782 [INFO] [Thread-121314] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:29:09.782 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:29:09.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:29:10.611 [DEBUG] [Thread-121314] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:29:10.611 [DEBUG] [Thread-121314] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:29:10.659 [DEBUG] [Thread-121314] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:29:10.659 [DEBUG] [Thread-121314] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:29:10.669 [DEBUG] [Thread-121314] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:29:10.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:29:10.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:29:10.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:29:10.697 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:29:10.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:29:10.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:29:10.707 [DEBUG] [Thread-121314] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:29:12.511 [DEBUG] [Thread-121316 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:29:18.348 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:29:18.349 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:29:27.559 [DEBUG] [Thread-121317 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:29:40.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:29:40.729 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:29:40.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:29:41.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 29, 21), 42.14, 4.43, 0.0, 25.25, 21.53, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:29:41.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:29:21
2025-11-03T19:29:41.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:29:41.818 [DEBUG] [Thread-121318] [transport.py] [_log()] starting thread (client mode): 0x1174f880
2025-11-03T19:29:41.818 [DEBUG] [Thread-121318] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:29:41.838 [DEBUG] [Thread-121318] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:29:41.839 [INFO] [Thread-121318] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:29:41.848 [DEBUG] [Thread-121318] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:29:41.848 [DEBUG] [Thread-121318] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:29:41.848 [DEBUG] [Thread-121318] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:29:41.848 [DEBUG] [Thread-121318] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:29:41.848 [DEBUG] [Thread-121318] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:29:41.848 [DEBUG] [Thread-121318] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:29:41.848 [DEBUG] [Thread-121318] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:29:41.848 [DEBUG] [Thread-121318] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:29:41.848 [DEBUG] [Thread-121318] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:29:41.848 [DEBUG] [Thread-121318] [transport.py] [_log()] client lang: <none>
2025-11-03T19:29:41.849 [DEBUG] [Thread-121318] [transport.py] [_log()] server lang: <none>
2025-11-03T19:29:41.849 [DEBUG] [Thread-121318] [transport.py] [_log()] kex follows: False
2025-11-03T19:29:41.849 [DEBUG] [Thread-121318] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:29:41.849 [DEBUG] [Thread-121318] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:29:41.849 [DEBUG] [Thread-121318] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:29:41.849 [DEBUG] [Thread-121318] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:29:41.849 [DEBUG] [Thread-121318] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:29:41.849 [DEBUG] [Thread-121318] [transport.py] [_log()] Compression: none
2025-11-03T19:29:41.849 [DEBUG] [Thread-121318] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:29:41.866 [DEBUG] [Thread-121318] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:29:41.867 [DEBUG] [Thread-121318] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:29:41.868 [DEBUG] [Thread-121318] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:29:41.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:29:41.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:29:41.870 [DEBUG] [Thread-121318] [transport.py] [_log()] userauth is OK
2025-11-03T19:29:41.870 [DEBUG] [Thread-121318] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:29:41.870 [DEBUG] [Thread-121318] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:29:41.870 [DEBUG] [Thread-121318] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:29:41.870 [DEBUG] [Thread-121318] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:29:41.892 [INFO] [Thread-121318] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:29:41.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:29:42.591 [DEBUG] [Thread-121320 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:29:42.679 [DEBUG] [Thread-121318] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:29:42.679 [DEBUG] [Thread-121318] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:29:42.679 [DEBUG] [Thread-121318] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:29:42.720 [DEBUG] [Thread-121318] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:29:42.720 [DEBUG] [Thread-121318] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:29:42.722 [DEBUG] [Thread-121318] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:29:42.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:29:42.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:29:42.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:29:42.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:29:42.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:29:42.742 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:29:42.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:29:42.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:29:42.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:29:42.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.728574 -999.00  +21.40  22.72      9  -11.90 1 1 1 1 1   290    0 33.28 -10.18 ----- 22.7 22.7 307.0 29.9 21.4 -30.9 21.3 -29.9 21.1 -29.8 21.4 -30.6
2025-11-03T19:29:42.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:29:42.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:29:42.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.728574
2025-11-03T19:29:42.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:29:42.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:29:42.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:29:42.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:29:42.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:29:42.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:29:21', tmtdew=42.14, humidity=4.43, cloud=0.0, wind=25.25, temperature=21.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:29:08.794', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:29:42.743 [DEBUG] [Thread-121318] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:29:42.815 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:29:42.827 [DEBUG] [Thread-121322] [transport.py] [_log()] starting thread (client mode): 0x141d9150
2025-11-03T19:29:42.827 [DEBUG] [Thread-121322] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:29:42.843 [DEBUG] [Thread-121322] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:29:42.843 [INFO] [Thread-121322] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:29:42.850 [DEBUG] [Thread-121322] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:29:42.850 [DEBUG] [Thread-121322] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:29:42.850 [DEBUG] [Thread-121322] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:29:42.850 [DEBUG] [Thread-121322] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:29:42.850 [DEBUG] [Thread-121322] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:29:42.850 [DEBUG] [Thread-121322] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:29:42.850 [DEBUG] [Thread-121322] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:29:42.850 [DEBUG] [Thread-121322] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:29:42.850 [DEBUG] [Thread-121322] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:29:42.850 [DEBUG] [Thread-121322] [transport.py] [_log()] client lang: <none>
2025-11-03T19:29:42.850 [DEBUG] [Thread-121322] [transport.py] [_log()] server lang: <none>
2025-11-03T19:29:42.850 [DEBUG] [Thread-121322] [transport.py] [_log()] kex follows: False
2025-11-03T19:29:42.850 [DEBUG] [Thread-121322] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:29:42.850 [DEBUG] [Thread-121322] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:29:42.851 [DEBUG] [Thread-121322] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:29:42.851 [DEBUG] [Thread-121322] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:29:42.851 [DEBUG] [Thread-121322] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:29:42.851 [DEBUG] [Thread-121322] [transport.py] [_log()] Compression: none
2025-11-03T19:29:42.851 [DEBUG] [Thread-121322] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:29:42.908 [DEBUG] [Thread-121322] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:29:42.908 [DEBUG] [Thread-121322] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:29:42.908 [DEBUG] [Thread-121322] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:29:42.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:29:42.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:29:42.964 [DEBUG] [Thread-121322] [transport.py] [_log()] userauth is OK
2025-11-03T19:29:42.964 [DEBUG] [Thread-121322] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:29:42.964 [DEBUG] [Thread-121322] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:29:42.964 [DEBUG] [Thread-121322] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:29:42.964 [DEBUG] [Thread-121322] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:29:42.978 [INFO] [Thread-121322] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:29:42.979 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:29:42.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:29:43.821 [DEBUG] [Thread-121322] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:29:43.831 [DEBUG] [Thread-121322] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:29:43.869 [DEBUG] [Thread-121322] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:29:43.869 [DEBUG] [Thread-121322] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:29:43.880 [DEBUG] [Thread-121322] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:29:43.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:29:43.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:29:43.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:29:43.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:29:43.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:29:43.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:29:43.918 [DEBUG] [Thread-121322] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:29:47.834 [DEBUG] [Thread-121324 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:29:57.627 [DEBUG] [Thread-121325 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:30:12.686 [DEBUG] [Thread-121326 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:30:13.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:30:13.928 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:30:13.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:30:14.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 29, 54), 42.09, 4.43, 0.0, 25.25, 21.51, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:30:14.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:29:54
2025-11-03T19:30:14.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:30:14.912 [DEBUG] [Thread-121327] [transport.py] [_log()] starting thread (client mode): 0xedc4850
2025-11-03T19:30:14.912 [DEBUG] [Thread-121327] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:30:14.932 [DEBUG] [Thread-121327] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:30:14.932 [INFO] [Thread-121327] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:30:14.933 [DEBUG] [Thread-121327] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:30:14.934 [DEBUG] [Thread-121327] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:30:14.934 [DEBUG] [Thread-121327] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:30:14.934 [DEBUG] [Thread-121327] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:30:14.934 [DEBUG] [Thread-121327] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:30:14.934 [DEBUG] [Thread-121327] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:30:14.934 [DEBUG] [Thread-121327] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:30:14.934 [DEBUG] [Thread-121327] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:30:14.934 [DEBUG] [Thread-121327] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:30:14.934 [DEBUG] [Thread-121327] [transport.py] [_log()] client lang: <none>
2025-11-03T19:30:14.934 [DEBUG] [Thread-121327] [transport.py] [_log()] server lang: <none>
2025-11-03T19:30:14.934 [DEBUG] [Thread-121327] [transport.py] [_log()] kex follows: False
2025-11-03T19:30:14.934 [DEBUG] [Thread-121327] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:30:14.934 [DEBUG] [Thread-121327] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:30:14.934 [DEBUG] [Thread-121327] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:30:14.934 [DEBUG] [Thread-121327] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:30:14.934 [DEBUG] [Thread-121327] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:30:14.934 [DEBUG] [Thread-121327] [transport.py] [_log()] Compression: none
2025-11-03T19:30:14.934 [DEBUG] [Thread-121327] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:30:14.950 [DEBUG] [Thread-121327] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:30:14.950 [DEBUG] [Thread-121327] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:30:14.950 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:30:14.951 [DEBUG] [Thread-121327] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:30:14.951 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:30:14.951 [DEBUG] [Thread-121327] [transport.py] [_log()] userauth is OK
2025-11-03T19:30:14.951 [DEBUG] [Thread-121327] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:30:14.951 [DEBUG] [Thread-121327] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:30:14.951 [DEBUG] [Thread-121327] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:30:14.951 [DEBUG] [Thread-121327] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:30:14.961 [INFO] [Thread-121327] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:30:14.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:30:16.732 [DEBUG] [Thread-121327] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:30:16.733 [DEBUG] [Thread-121327] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:30:16.733 [DEBUG] [Thread-121327] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:30:16.773 [DEBUG] [Thread-121327] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:30:16.773 [DEBUG] [Thread-121327] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:30:16.776 [DEBUG] [Thread-121327] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:30:16.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:30:16.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:30:16.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:30:16.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:30:16.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:30:16.821 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:30:16.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:30:16.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:30:16.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:30:16.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.728921 -999.00  +21.30  28.97      9  -12.00 1 1 1 1 1   271    0 32.66 -9.81 ----- 29.0 29.0 308.6 33.8 21.4 -30.9 21.3 -29.8 21.0 -29.5 21.3 -30.6
2025-11-03T19:30:16.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:30:16.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:30:16.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.728921
2025-11-03T19:30:16.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:30:16.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:30:16.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:30:16.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:30:16.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:30:16.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:29:54', tmtdew=42.09, humidity=4.43, cloud=0.0, wind=25.25, temperature=21.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:29:38.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:30:16.822 [DEBUG] [Thread-121327] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:30:16.896 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:30:16.909 [DEBUG] [Thread-121330] [transport.py] [_log()] starting thread (client mode): 0x117624d0
2025-11-03T19:30:16.909 [DEBUG] [Thread-121330] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:30:16.924 [DEBUG] [Thread-121330] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:30:16.924 [INFO] [Thread-121330] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:30:16.931 [DEBUG] [Thread-121330] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:30:16.931 [DEBUG] [Thread-121330] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:30:16.931 [DEBUG] [Thread-121330] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:30:16.931 [DEBUG] [Thread-121330] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:30:16.931 [DEBUG] [Thread-121330] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:30:16.931 [DEBUG] [Thread-121330] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:30:16.931 [DEBUG] [Thread-121330] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:30:16.931 [DEBUG] [Thread-121330] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:30:16.931 [DEBUG] [Thread-121330] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:30:16.931 [DEBUG] [Thread-121330] [transport.py] [_log()] client lang: <none>
2025-11-03T19:30:16.931 [DEBUG] [Thread-121330] [transport.py] [_log()] server lang: <none>
2025-11-03T19:30:16.931 [DEBUG] [Thread-121330] [transport.py] [_log()] kex follows: False
2025-11-03T19:30:16.931 [DEBUG] [Thread-121330] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:30:16.931 [DEBUG] [Thread-121330] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:30:16.932 [DEBUG] [Thread-121330] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:30:16.932 [DEBUG] [Thread-121330] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:30:16.932 [DEBUG] [Thread-121330] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:30:16.932 [DEBUG] [Thread-121330] [transport.py] [_log()] Compression: none
2025-11-03T19:30:16.932 [DEBUG] [Thread-121330] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:30:16.989 [DEBUG] [Thread-121330] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:30:16.990 [DEBUG] [Thread-121330] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:30:16.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:30:16.990 [DEBUG] [Thread-121330] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:30:16.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:30:17.048 [DEBUG] [Thread-121330] [transport.py] [_log()] userauth is OK
2025-11-03T19:30:17.048 [DEBUG] [Thread-121330] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:30:17.048 [DEBUG] [Thread-121330] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:30:17.048 [DEBUG] [Thread-121330] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:30:17.048 [DEBUG] [Thread-121330] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:30:17.062 [INFO] [Thread-121330] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:30:17.062 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:30:17.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:30:17.869 [DEBUG] [Thread-121330] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:30:17.869 [DEBUG] [Thread-121330] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:30:17.918 [DEBUG] [Thread-121330] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:30:17.918 [DEBUG] [Thread-121330] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:30:17.928 [DEBUG] [Thread-121330] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:30:17.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:30:17.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:30:17.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:30:17.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:30:17.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:30:17.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:30:17.961 [DEBUG] [Thread-121330] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:30:26.660 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:30:26.661 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:30:27.712 [DEBUG] [Thread-121332 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:30:42.745 [DEBUG] [Thread-121333 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:30:43.396 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:30:47.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:30:47.964 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:30:47.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:30:48.112 [DEBUG] [Thread-121334 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:30:48.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 30, 26), 42.0, 4.47, 0.0, 25.92, 21.49, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:30:48.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:30:26
2025-11-03T19:30:48.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:30:49.028 [DEBUG] [Thread-121335] [transport.py] [_log()] starting thread (client mode): 0x1174e950
2025-11-03T19:30:49.028 [DEBUG] [Thread-121335] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:30:49.049 [DEBUG] [Thread-121335] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:30:49.049 [INFO] [Thread-121335] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:30:49.052 [DEBUG] [Thread-121335] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:30:49.052 [DEBUG] [Thread-121335] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:30:49.052 [DEBUG] [Thread-121335] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:30:49.052 [DEBUG] [Thread-121335] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:30:49.052 [DEBUG] [Thread-121335] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:30:49.052 [DEBUG] [Thread-121335] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:30:49.052 [DEBUG] [Thread-121335] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:30:49.052 [DEBUG] [Thread-121335] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:30:49.052 [DEBUG] [Thread-121335] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:30:49.053 [DEBUG] [Thread-121335] [transport.py] [_log()] client lang: <none>
2025-11-03T19:30:49.053 [DEBUG] [Thread-121335] [transport.py] [_log()] server lang: <none>
2025-11-03T19:30:49.053 [DEBUG] [Thread-121335] [transport.py] [_log()] kex follows: False
2025-11-03T19:30:49.053 [DEBUG] [Thread-121335] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:30:49.053 [DEBUG] [Thread-121335] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:30:49.053 [DEBUG] [Thread-121335] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:30:49.053 [DEBUG] [Thread-121335] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:30:49.053 [DEBUG] [Thread-121335] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:30:49.053 [DEBUG] [Thread-121335] [transport.py] [_log()] Compression: none
2025-11-03T19:30:49.053 [DEBUG] [Thread-121335] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:30:49.071 [DEBUG] [Thread-121335] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:30:49.072 [DEBUG] [Thread-121335] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:30:49.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:30:49.073 [DEBUG] [Thread-121335] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:30:49.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:30:49.075 [DEBUG] [Thread-121335] [transport.py] [_log()] userauth is OK
2025-11-03T19:30:49.075 [DEBUG] [Thread-121335] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:30:49.075 [DEBUG] [Thread-121335] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:30:49.076 [DEBUG] [Thread-121335] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:30:49.076 [DEBUG] [Thread-121335] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:30:49.099 [INFO] [Thread-121335] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:30:49.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:30:49.527 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:30:49.778 [DEBUG] [Thread-121335] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:30:49.779 [DEBUG] [Thread-121335] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:30:49.780 [DEBUG] [Thread-121335] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:30:49.819 [DEBUG] [Thread-121335] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:30:49.819 [DEBUG] [Thread-121335] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:30:49.822 [DEBUG] [Thread-121335] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:30:49.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:30:49.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:30:49.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:30:49.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:30:49.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:30:49.841 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:30:49.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:30:49.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:30:49.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:30:49.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.729268 -999.00  +21.30  25.08      9  -12.00 1 1 1 1 1   253    0 33.29 -9.45 ----- 25.1 25.1 314.6 31.5 21.3 -30.9 21.3 -29.9 21.0 -29.8 21.3 -30.6
2025-11-03T19:30:49.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:30:49.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:30:49.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.729268
2025-11-03T19:30:49.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:30:49.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:30:49.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:30:49.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:30:49.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:30:49.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:30:26', tmtdew=42.0, humidity=4.47, cloud=0.0, wind=25.92, temperature=21.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:30:08.755', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:30:49.842 [DEBUG] [Thread-121335] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:30:49.913 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:30:49.925 [DEBUG] [Thread-121338] [transport.py] [_log()] starting thread (client mode): 0x1179a620
2025-11-03T19:30:49.926 [DEBUG] [Thread-121338] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:30:49.940 [DEBUG] [Thread-121338] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:30:49.940 [INFO] [Thread-121338] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:30:49.948 [DEBUG] [Thread-121338] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:30:49.948 [DEBUG] [Thread-121338] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:30:49.948 [DEBUG] [Thread-121338] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:30:49.948 [DEBUG] [Thread-121338] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:30:49.948 [DEBUG] [Thread-121338] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:30:49.948 [DEBUG] [Thread-121338] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:30:49.948 [DEBUG] [Thread-121338] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:30:49.948 [DEBUG] [Thread-121338] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:30:49.948 [DEBUG] [Thread-121338] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:30:49.948 [DEBUG] [Thread-121338] [transport.py] [_log()] client lang: <none>
2025-11-03T19:30:49.948 [DEBUG] [Thread-121338] [transport.py] [_log()] server lang: <none>
2025-11-03T19:30:49.948 [DEBUG] [Thread-121338] [transport.py] [_log()] kex follows: False
2025-11-03T19:30:49.948 [DEBUG] [Thread-121338] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:30:49.948 [DEBUG] [Thread-121338] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:30:49.949 [DEBUG] [Thread-121338] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:30:49.949 [DEBUG] [Thread-121338] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:30:49.949 [DEBUG] [Thread-121338] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:30:49.949 [DEBUG] [Thread-121338] [transport.py] [_log()] Compression: none
2025-11-03T19:30:49.949 [DEBUG] [Thread-121338] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:30:50.007 [DEBUG] [Thread-121338] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:30:50.007 [DEBUG] [Thread-121338] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:30:50.007 [DEBUG] [Thread-121338] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:30:50.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:30:50.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:30:50.064 [DEBUG] [Thread-121338] [transport.py] [_log()] userauth is OK
2025-11-03T19:30:50.064 [DEBUG] [Thread-121338] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:30:50.064 [DEBUG] [Thread-121338] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:30:50.064 [DEBUG] [Thread-121338] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:30:50.064 [DEBUG] [Thread-121338] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:30:50.078 [INFO] [Thread-121338] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:30:50.086 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:30:50.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:30:50.921 [DEBUG] [Thread-121338] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:30:50.921 [DEBUG] [Thread-121338] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:30:50.969 [DEBUG] [Thread-121338] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:30:50.969 [DEBUG] [Thread-121338] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:30:50.978 [DEBUG] [Thread-121338] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:30:50.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:30:50.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:30:50.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:30:51.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:30:51.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:30:51.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:30:51.014 [DEBUG] [Thread-121338] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:30:57.774 [DEBUG] [Thread-121340 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:31:12.825 [DEBUG] [Thread-121341 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:31:16.976 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:31:21.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:31:21.037 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:31:21.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:31:21.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 30, 58), 41.84, 4.47, 0.0, 28.07, 21.36, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:31:21.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:30:58
2025-11-03T19:31:21.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:31:22.098 [DEBUG] [Thread-121342] [transport.py] [_log()] starting thread (client mode): 0xedc4e20
2025-11-03T19:31:22.098 [DEBUG] [Thread-121342] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:31:22.120 [DEBUG] [Thread-121342] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:31:22.121 [INFO] [Thread-121342] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:31:22.122 [DEBUG] [Thread-121342] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:31:22.122 [DEBUG] [Thread-121342] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:31:22.122 [DEBUG] [Thread-121342] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:31:22.122 [DEBUG] [Thread-121342] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:31:22.122 [DEBUG] [Thread-121342] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:31:22.122 [DEBUG] [Thread-121342] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:31:22.122 [DEBUG] [Thread-121342] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:31:22.122 [DEBUG] [Thread-121342] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:31:22.123 [DEBUG] [Thread-121342] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:31:22.123 [DEBUG] [Thread-121342] [transport.py] [_log()] client lang: <none>
2025-11-03T19:31:22.123 [DEBUG] [Thread-121342] [transport.py] [_log()] server lang: <none>
2025-11-03T19:31:22.123 [DEBUG] [Thread-121342] [transport.py] [_log()] kex follows: False
2025-11-03T19:31:22.123 [DEBUG] [Thread-121342] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:31:22.123 [DEBUG] [Thread-121342] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:31:22.123 [DEBUG] [Thread-121342] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:31:22.123 [DEBUG] [Thread-121342] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:31:22.123 [DEBUG] [Thread-121342] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:31:22.123 [DEBUG] [Thread-121342] [transport.py] [_log()] Compression: none
2025-11-03T19:31:22.123 [DEBUG] [Thread-121342] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:31:22.142 [DEBUG] [Thread-121342] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:31:22.143 [DEBUG] [Thread-121342] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:31:22.144 [DEBUG] [Thread-121342] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:31:22.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:31:22.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:31:22.146 [DEBUG] [Thread-121342] [transport.py] [_log()] userauth is OK
2025-11-03T19:31:22.147 [DEBUG] [Thread-121342] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:31:22.147 [DEBUG] [Thread-121342] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:31:22.147 [DEBUG] [Thread-121342] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:31:22.147 [DEBUG] [Thread-121342] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:31:22.162 [INFO] [Thread-121342] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:31:22.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:31:22.742 [DEBUG] [Thread-121342] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:31:22.743 [DEBUG] [Thread-121342] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:31:22.743 [DEBUG] [Thread-121342] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:31:22.784 [DEBUG] [Thread-121342] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:31:22.784 [DEBUG] [Thread-121342] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:31:22.788 [DEBUG] [Thread-121342] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:31:22.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:31:22.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:31:22.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:31:22.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:31:22.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:31:22.815 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:31:22.815 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:31:22.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:31:22.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:31:22.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.729615 -999.00  +21.20  23.70      9  -12.00 1 1 1 1 1   236    0 33.43 -8.00 ----- 23.7 23.7 307.2 30.7 21.4 -31.1 21.2 -29.8 21.0 -29.9 21.2 -30.5
2025-11-03T19:31:22.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:31:22.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:31:22.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.729615
2025-11-03T19:31:22.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:31:22.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:31:22.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:31:22.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:31:22.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:31:22.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:30:58', tmtdew=41.84, humidity=4.47, cloud=0.0, wind=28.07, temperature=21.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:30:38.736', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:31:22.818 [DEBUG] [Thread-121342] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:31:22.903 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:31:22.914 [DEBUG] [Thread-121345] [transport.py] [_log()] starting thread (client mode): 0xed375b0
2025-11-03T19:31:22.914 [DEBUG] [Thread-121345] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:31:22.929 [DEBUG] [Thread-121345] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:31:22.929 [INFO] [Thread-121345] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:31:22.937 [DEBUG] [Thread-121345] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:31:22.937 [DEBUG] [Thread-121345] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:31:22.937 [DEBUG] [Thread-121345] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:31:22.937 [DEBUG] [Thread-121345] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:31:22.937 [DEBUG] [Thread-121345] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:31:22.937 [DEBUG] [Thread-121345] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:31:22.937 [DEBUG] [Thread-121345] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:31:22.938 [DEBUG] [Thread-121345] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:31:22.938 [DEBUG] [Thread-121345] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:31:22.938 [DEBUG] [Thread-121345] [transport.py] [_log()] client lang: <none>
2025-11-03T19:31:22.938 [DEBUG] [Thread-121345] [transport.py] [_log()] server lang: <none>
2025-11-03T19:31:22.938 [DEBUG] [Thread-121345] [transport.py] [_log()] kex follows: False
2025-11-03T19:31:22.938 [DEBUG] [Thread-121345] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:31:22.938 [DEBUG] [Thread-121345] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:31:22.938 [DEBUG] [Thread-121345] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:31:22.938 [DEBUG] [Thread-121345] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:31:22.939 [DEBUG] [Thread-121345] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:31:22.939 [DEBUG] [Thread-121345] [transport.py] [_log()] Compression: none
2025-11-03T19:31:22.939 [DEBUG] [Thread-121345] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:31:22.996 [DEBUG] [Thread-121345] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:31:22.997 [DEBUG] [Thread-121345] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:31:22.998 [DEBUG] [Thread-121345] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:31:22.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:31:22.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:31:23.052 [DEBUG] [Thread-121345] [transport.py] [_log()] userauth is OK
2025-11-03T19:31:23.052 [DEBUG] [Thread-121345] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:31:23.052 [DEBUG] [Thread-121345] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:31:23.052 [DEBUG] [Thread-121345] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:31:23.052 [DEBUG] [Thread-121345] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:31:23.071 [INFO] [Thread-121345] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:31:23.072 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:31:23.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:31:23.909 [DEBUG] [Thread-121345] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:31:23.909 [DEBUG] [Thread-121345] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:31:23.956 [DEBUG] [Thread-121345] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:31:23.956 [DEBUG] [Thread-121345] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:31:23.964 [DEBUG] [Thread-121345] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:31:23.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:31:23.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:31:23.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:31:23.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:31:23.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:31:23.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:31:23.997 [DEBUG] [Thread-121345] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:31:27.863 [DEBUG] [Thread-121347 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:31:32.848 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:31:32.849 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:31:42.402 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:31:42.902 [DEBUG] [Thread-121348 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:31:48.245 [DEBUG] [Thread-121349 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:31:53.185 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:31:54.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:31:54.013 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:31:54.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:31:54.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 31, 31), 41.85, 4.47, 0.0, 28.78, 21.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:31:54.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:31:31
2025-11-03T19:31:54.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:31:54.983 [DEBUG] [Thread-121350] [transport.py] [_log()] starting thread (client mode): 0xedc6440
2025-11-03T19:31:54.983 [DEBUG] [Thread-121350] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:31:55.002 [DEBUG] [Thread-121350] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:31:55.003 [INFO] [Thread-121350] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:31:55.006 [DEBUG] [Thread-121350] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:31:55.006 [DEBUG] [Thread-121350] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:31:55.006 [DEBUG] [Thread-121350] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:31:55.006 [DEBUG] [Thread-121350] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:31:55.006 [DEBUG] [Thread-121350] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:31:55.006 [DEBUG] [Thread-121350] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:31:55.006 [DEBUG] [Thread-121350] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:31:55.006 [DEBUG] [Thread-121350] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:31:55.006 [DEBUG] [Thread-121350] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:31:55.007 [DEBUG] [Thread-121350] [transport.py] [_log()] client lang: <none>
2025-11-03T19:31:55.007 [DEBUG] [Thread-121350] [transport.py] [_log()] server lang: <none>
2025-11-03T19:31:55.007 [DEBUG] [Thread-121350] [transport.py] [_log()] kex follows: False
2025-11-03T19:31:55.007 [DEBUG] [Thread-121350] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:31:55.007 [DEBUG] [Thread-121350] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:31:55.007 [DEBUG] [Thread-121350] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:31:55.007 [DEBUG] [Thread-121350] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:31:55.007 [DEBUG] [Thread-121350] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:31:55.007 [DEBUG] [Thread-121350] [transport.py] [_log()] Compression: none
2025-11-03T19:31:55.007 [DEBUG] [Thread-121350] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:31:55.024 [DEBUG] [Thread-121350] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:31:55.025 [DEBUG] [Thread-121350] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:31:55.025 [DEBUG] [Thread-121350] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:31:55.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:31:55.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:31:55.027 [DEBUG] [Thread-121350] [transport.py] [_log()] userauth is OK
2025-11-03T19:31:55.028 [DEBUG] [Thread-121350] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:31:55.028 [DEBUG] [Thread-121350] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:31:55.028 [DEBUG] [Thread-121350] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:31:55.028 [DEBUG] [Thread-121350] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:31:55.062 [INFO] [Thread-121350] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:31:55.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:31:55.677 [DEBUG] [Thread-121350] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:31:55.677 [DEBUG] [Thread-121350] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:31:55.678 [DEBUG] [Thread-121350] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:31:55.718 [DEBUG] [Thread-121350] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:31:55.718 [DEBUG] [Thread-121350] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:31:55.722 [DEBUG] [Thread-121350] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:31:55.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:31:55.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:31:55.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:31:55.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:31:55.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:31:55.757 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:31:55.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:31:55.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:31:55.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:31:55.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.729963 -999.00  +21.20  22.72      9  -12.00 1 1 1 1 1   219    0 33.38 -8.25 ----- 22.7 22.7 309.0 34.9 21.2 -30.9 21.2 -29.8 21.0 -29.8 21.2 -30.5
2025-11-03T19:31:55.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:31:55.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:31:55.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.729963
2025-11-03T19:31:55.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:31:55.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:31:55.760 [DEBUG] [Thread-121350] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:31:55.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:31:55.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:31:55.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:31:55.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:31:31', tmtdew=41.85, humidity=4.47, cloud=0.0, wind=28.78, temperature=21.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:31:08.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:31:55.843 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:31:55.855 [DEBUG] [Thread-121353] [transport.py] [_log()] starting thread (client mode): 0xedc6710
2025-11-03T19:31:55.855 [DEBUG] [Thread-121353] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:31:55.870 [DEBUG] [Thread-121353] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:31:55.870 [INFO] [Thread-121353] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:31:55.887 [DEBUG] [Thread-121353] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:31:55.887 [DEBUG] [Thread-121353] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:31:55.887 [DEBUG] [Thread-121353] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:31:55.887 [DEBUG] [Thread-121353] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:31:55.887 [DEBUG] [Thread-121353] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:31:55.888 [DEBUG] [Thread-121353] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:31:55.888 [DEBUG] [Thread-121353] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:31:55.888 [DEBUG] [Thread-121353] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:31:55.888 [DEBUG] [Thread-121353] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:31:55.888 [DEBUG] [Thread-121353] [transport.py] [_log()] client lang: <none>
2025-11-03T19:31:55.888 [DEBUG] [Thread-121353] [transport.py] [_log()] server lang: <none>
2025-11-03T19:31:55.888 [DEBUG] [Thread-121353] [transport.py] [_log()] kex follows: False
2025-11-03T19:31:55.888 [DEBUG] [Thread-121353] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:31:55.888 [DEBUG] [Thread-121353] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:31:55.888 [DEBUG] [Thread-121353] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:31:55.888 [DEBUG] [Thread-121353] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:31:55.888 [DEBUG] [Thread-121353] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:31:55.889 [DEBUG] [Thread-121353] [transport.py] [_log()] Compression: none
2025-11-03T19:31:55.889 [DEBUG] [Thread-121353] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:31:55.936 [DEBUG] [Thread-121353] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:31:55.937 [DEBUG] [Thread-121353] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:31:55.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:31:55.938 [DEBUG] [Thread-121353] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:31:55.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:31:55.996 [DEBUG] [Thread-121353] [transport.py] [_log()] userauth is OK
2025-11-03T19:31:55.996 [DEBUG] [Thread-121353] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:31:55.996 [DEBUG] [Thread-121353] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:31:55.996 [DEBUG] [Thread-121353] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:31:55.997 [DEBUG] [Thread-121353] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:31:56.016 [INFO] [Thread-121353] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:31:56.021 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:31:56.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:31:56.863 [DEBUG] [Thread-121353] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:31:56.863 [DEBUG] [Thread-121353] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:31:56.911 [DEBUG] [Thread-121353] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:31:56.911 [DEBUG] [Thread-121353] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:31:56.919 [DEBUG] [Thread-121353] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:31:56.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:31:56.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:31:56.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:31:56.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:31:56.943 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:31:56.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:31:56.951 [DEBUG] [Thread-121353] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:31:57.939 [DEBUG] [Thread-121355 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:31:59.295 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:32:12.985 [DEBUG] [Thread-121356 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:32:23.729 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:32:26.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:32:26.974 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:32:26.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:32:27.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 32, 3), 41.97, 4.42, 0.0, 27.74, 21.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:32:27.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:32:03
2025-11-03T19:32:27.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:32:28.011 [DEBUG] [Thread-121357] [transport.py] [_log()] starting thread (client mode): 0xed2dc00
2025-11-03T19:32:28.011 [DEBUG] [Thread-121357] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:32:28.015 [DEBUG] [Thread-121358 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:32:28.021 [DEBUG] [Thread-121357] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:32:28.021 [INFO] [Thread-121357] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:32:28.022 [DEBUG] [Thread-121357] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:32:28.022 [DEBUG] [Thread-121357] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:32:28.022 [DEBUG] [Thread-121357] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:32:28.023 [DEBUG] [Thread-121357] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:32:28.023 [DEBUG] [Thread-121357] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:32:28.023 [DEBUG] [Thread-121357] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:32:28.023 [DEBUG] [Thread-121357] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:32:28.023 [DEBUG] [Thread-121357] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:32:28.023 [DEBUG] [Thread-121357] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:32:28.023 [DEBUG] [Thread-121357] [transport.py] [_log()] client lang: <none>
2025-11-03T19:32:28.023 [DEBUG] [Thread-121357] [transport.py] [_log()] server lang: <none>
2025-11-03T19:32:28.023 [DEBUG] [Thread-121357] [transport.py] [_log()] kex follows: False
2025-11-03T19:32:28.023 [DEBUG] [Thread-121357] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:32:28.023 [DEBUG] [Thread-121357] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:32:28.023 [DEBUG] [Thread-121357] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:32:28.023 [DEBUG] [Thread-121357] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:32:28.023 [DEBUG] [Thread-121357] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:32:28.023 [DEBUG] [Thread-121357] [transport.py] [_log()] Compression: none
2025-11-03T19:32:28.023 [DEBUG] [Thread-121357] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:32:28.031 [DEBUG] [Thread-121357] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:32:28.031 [DEBUG] [Thread-121357] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:32:28.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:32:28.031 [DEBUG] [Thread-121357] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:32:28.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:32:28.032 [DEBUG] [Thread-121357] [transport.py] [_log()] userauth is OK
2025-11-03T19:32:28.032 [DEBUG] [Thread-121357] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:32:28.032 [DEBUG] [Thread-121357] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:32:28.032 [DEBUG] [Thread-121357] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:32:28.032 [DEBUG] [Thread-121357] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:32:28.042 [INFO] [Thread-121357] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:32:28.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:32:28.690 [DEBUG] [Thread-121357] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:32:28.690 [DEBUG] [Thread-121357] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:32:28.691 [DEBUG] [Thread-121357] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:32:28.731 [DEBUG] [Thread-121357] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:32:28.731 [DEBUG] [Thread-121357] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:32:28.734 [DEBUG] [Thread-121357] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:32:28.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:32:28.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:32:28.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:32:28.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:32:28.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:32:28.753 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:32:28.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:32:28.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:32:28.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:32:28.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.730310 -999.00  +21.10  22.36      9  -12.00 1 1 1 1 1   204    0 32.99 -8.58 ----- 22.4 22.4 310.0 26.5 21.2 -31.0 21.2 -29.8 20.9 -29.6 21.2 -30.5
2025-11-03T19:32:28.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:32:28.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:32:28.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.730310
2025-11-03T19:32:28.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:32:28.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:32:28.756 [DEBUG] [Thread-121357] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:32:28.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:32:28.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:32:28.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:32:28.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:32:03', tmtdew=41.97, humidity=4.42, cloud=0.0, wind=27.74, temperature=21.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:31:38.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:32:28.839 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:32:28.850 [DEBUG] [Thread-121361] [transport.py] [_log()] starting thread (client mode): 0xed37310
2025-11-03T19:32:28.851 [DEBUG] [Thread-121361] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:32:28.865 [DEBUG] [Thread-121361] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:32:28.865 [INFO] [Thread-121361] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:32:28.875 [DEBUG] [Thread-121361] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:32:28.875 [DEBUG] [Thread-121361] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:32:28.875 [DEBUG] [Thread-121361] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:32:28.875 [DEBUG] [Thread-121361] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:32:28.875 [DEBUG] [Thread-121361] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:32:28.875 [DEBUG] [Thread-121361] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:32:28.875 [DEBUG] [Thread-121361] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:32:28.875 [DEBUG] [Thread-121361] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:32:28.876 [DEBUG] [Thread-121361] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:32:28.876 [DEBUG] [Thread-121361] [transport.py] [_log()] client lang: <none>
2025-11-03T19:32:28.876 [DEBUG] [Thread-121361] [transport.py] [_log()] server lang: <none>
2025-11-03T19:32:28.876 [DEBUG] [Thread-121361] [transport.py] [_log()] kex follows: False
2025-11-03T19:32:28.876 [DEBUG] [Thread-121361] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:32:28.876 [DEBUG] [Thread-121361] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:32:28.876 [DEBUG] [Thread-121361] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:32:28.876 [DEBUG] [Thread-121361] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:32:28.876 [DEBUG] [Thread-121361] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:32:28.876 [DEBUG] [Thread-121361] [transport.py] [_log()] Compression: none
2025-11-03T19:32:28.876 [DEBUG] [Thread-121361] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:32:28.931 [DEBUG] [Thread-121361] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:32:28.932 [DEBUG] [Thread-121361] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:32:28.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:32:28.933 [DEBUG] [Thread-121361] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:32:28.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:32:28.988 [DEBUG] [Thread-121361] [transport.py] [_log()] userauth is OK
2025-11-03T19:32:28.988 [DEBUG] [Thread-121361] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:32:28.989 [DEBUG] [Thread-121361] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:32:28.989 [DEBUG] [Thread-121361] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:32:28.989 [DEBUG] [Thread-121361] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:32:29.007 [INFO] [Thread-121361] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:32:29.008 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:32:29.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:32:29.869 [DEBUG] [Thread-121361] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:32:29.869 [DEBUG] [Thread-121361] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:32:29.920 [DEBUG] [Thread-121361] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:32:29.920 [DEBUG] [Thread-121361] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:32:29.931 [DEBUG] [Thread-121361] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:32:29.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:32:29.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:32:29.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:32:29.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:32:29.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:32:29.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:32:29.972 [DEBUG] [Thread-121361] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:32:39.118 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:32:39.119 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:32:43.047 [DEBUG] [Thread-121363 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:32:47.172 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:32:48.357 [DEBUG] [Thread-121364 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:32:55.951 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:32:58.084 [DEBUG] [Thread-121365 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:32:59.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:32:59.981 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:32:59.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:33:00.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 32, 36), 41.97, 4.42, 0.0, 26.41, 21.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:33:00.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:32:36
2025-11-03T19:33:00.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:33:00.926 [DEBUG] [Thread-121366] [transport.py] [_log()] starting thread (client mode): 0xed37d00
2025-11-03T19:33:00.926 [DEBUG] [Thread-121366] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:33:00.947 [DEBUG] [Thread-121366] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:33:00.947 [INFO] [Thread-121366] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:33:00.950 [DEBUG] [Thread-121366] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:33:00.950 [DEBUG] [Thread-121366] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:33:00.950 [DEBUG] [Thread-121366] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:33:00.950 [DEBUG] [Thread-121366] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:33:00.950 [DEBUG] [Thread-121366] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:33:00.950 [DEBUG] [Thread-121366] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:33:00.950 [DEBUG] [Thread-121366] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:33:00.950 [DEBUG] [Thread-121366] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:33:00.951 [DEBUG] [Thread-121366] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:33:00.951 [DEBUG] [Thread-121366] [transport.py] [_log()] client lang: <none>
2025-11-03T19:33:00.951 [DEBUG] [Thread-121366] [transport.py] [_log()] server lang: <none>
2025-11-03T19:33:00.951 [DEBUG] [Thread-121366] [transport.py] [_log()] kex follows: False
2025-11-03T19:33:00.951 [DEBUG] [Thread-121366] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:33:00.951 [DEBUG] [Thread-121366] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:33:00.951 [DEBUG] [Thread-121366] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:33:00.951 [DEBUG] [Thread-121366] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:33:00.951 [DEBUG] [Thread-121366] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:33:00.951 [DEBUG] [Thread-121366] [transport.py] [_log()] Compression: none
2025-11-03T19:33:00.951 [DEBUG] [Thread-121366] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:33:00.970 [DEBUG] [Thread-121366] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:33:00.971 [DEBUG] [Thread-121366] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:33:00.971 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:33:00.972 [DEBUG] [Thread-121366] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:33:00.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:33:00.973 [DEBUG] [Thread-121366] [transport.py] [_log()] userauth is OK
2025-11-03T19:33:00.974 [DEBUG] [Thread-121366] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:33:00.974 [DEBUG] [Thread-121366] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:33:00.974 [DEBUG] [Thread-121366] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:33:00.974 [DEBUG] [Thread-121366] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:33:00.998 [INFO] [Thread-121366] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:33:00.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:33:01.621 [DEBUG] [Thread-121366] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:33:01.622 [DEBUG] [Thread-121366] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:33:01.622 [DEBUG] [Thread-121366] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:33:01.663 [DEBUG] [Thread-121366] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:33:01.663 [DEBUG] [Thread-121366] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:33:01.667 [DEBUG] [Thread-121366] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:33:01.680 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:33:01.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:33:01.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:33:01.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:33:01.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:33:01.691 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:33:01.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:33:01.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:33:01.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:33:01.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.730657 -999.00  +21.20  23.93      9  -12.10 1 1 1 1 1   189    0 33.14 -8.06 ----- 23.9 23.9 309.0 38.5 21.2 -30.7 21.2 -29.6 20.9 -29.7 21.2 -30.4
2025-11-03T19:33:01.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:33:01.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:33:01.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.730657
2025-11-03T19:33:01.700 [DEBUG] [Thread-121366] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:33:01.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:33:01.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:33:01.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:33:01.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:33:01.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:33:01.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:32:36', tmtdew=41.97, humidity=4.42, cloud=0.0, wind=26.41, temperature=21.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:32:08.765', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:33:01.786 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:33:01.797 [DEBUG] [Thread-121369] [transport.py] [_log()] starting thread (client mode): 0x141d9510
2025-11-03T19:33:01.797 [DEBUG] [Thread-121369] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:33:01.812 [DEBUG] [Thread-121369] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:33:01.812 [INFO] [Thread-121369] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:33:01.820 [DEBUG] [Thread-121369] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:33:01.820 [DEBUG] [Thread-121369] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:33:01.820 [DEBUG] [Thread-121369] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:33:01.820 [DEBUG] [Thread-121369] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:33:01.820 [DEBUG] [Thread-121369] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:33:01.820 [DEBUG] [Thread-121369] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:33:01.820 [DEBUG] [Thread-121369] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:33:01.820 [DEBUG] [Thread-121369] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:33:01.820 [DEBUG] [Thread-121369] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:33:01.820 [DEBUG] [Thread-121369] [transport.py] [_log()] client lang: <none>
2025-11-03T19:33:01.820 [DEBUG] [Thread-121369] [transport.py] [_log()] server lang: <none>
2025-11-03T19:33:01.820 [DEBUG] [Thread-121369] [transport.py] [_log()] kex follows: False
2025-11-03T19:33:01.821 [DEBUG] [Thread-121369] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:33:01.821 [DEBUG] [Thread-121369] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:33:01.821 [DEBUG] [Thread-121369] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:33:01.821 [DEBUG] [Thread-121369] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:33:01.821 [DEBUG] [Thread-121369] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:33:01.821 [DEBUG] [Thread-121369] [transport.py] [_log()] Compression: none
2025-11-03T19:33:01.821 [DEBUG] [Thread-121369] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:33:01.879 [DEBUG] [Thread-121369] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:33:01.880 [DEBUG] [Thread-121369] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:33:01.880 [DEBUG] [Thread-121369] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:33:01.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:33:01.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:33:01.935 [DEBUG] [Thread-121369] [transport.py] [_log()] userauth is OK
2025-11-03T19:33:01.936 [DEBUG] [Thread-121369] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:33:01.936 [DEBUG] [Thread-121369] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:33:01.936 [DEBUG] [Thread-121369] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:33:01.936 [DEBUG] [Thread-121369] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:33:01.950 [INFO] [Thread-121369] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:33:01.951 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:33:01.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:33:02.064 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:33:02.813 [DEBUG] [Thread-121369] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:33:02.813 [DEBUG] [Thread-121369] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:33:02.861 [DEBUG] [Thread-121369] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:33:02.861 [DEBUG] [Thread-121369] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:33:02.871 [DEBUG] [Thread-121369] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:33:02.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:33:02.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:33:02.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:33:02.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:33:02.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:33:02.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:33:02.908 [DEBUG] [Thread-121369] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:33:13.117 [DEBUG] [Thread-121371 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:33:25.604 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:33:28.172 [DEBUG] [Thread-121372 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:33:32.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:33:32.930 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:33:32.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:33:33.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 33, 8), 41.95, 4.42, 0.0, 27.79, 21.33, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:33:33.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:33:08
2025-11-03T19:33:33.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:33:33.858 [DEBUG] [Thread-121373] [transport.py] [_log()] starting thread (client mode): 0xed108b0
2025-11-03T19:33:33.858 [DEBUG] [Thread-121373] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:33:33.877 [DEBUG] [Thread-121373] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:33:33.877 [INFO] [Thread-121373] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:33:33.880 [DEBUG] [Thread-121373] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:33:33.880 [DEBUG] [Thread-121373] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:33:33.880 [DEBUG] [Thread-121373] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:33:33.880 [DEBUG] [Thread-121373] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:33:33.880 [DEBUG] [Thread-121373] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:33:33.880 [DEBUG] [Thread-121373] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:33:33.880 [DEBUG] [Thread-121373] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:33:33.880 [DEBUG] [Thread-121373] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:33:33.880 [DEBUG] [Thread-121373] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:33:33.880 [DEBUG] [Thread-121373] [transport.py] [_log()] client lang: <none>
2025-11-03T19:33:33.880 [DEBUG] [Thread-121373] [transport.py] [_log()] server lang: <none>
2025-11-03T19:33:33.880 [DEBUG] [Thread-121373] [transport.py] [_log()] kex follows: False
2025-11-03T19:33:33.880 [DEBUG] [Thread-121373] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:33:33.880 [DEBUG] [Thread-121373] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:33:33.880 [DEBUG] [Thread-121373] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:33:33.880 [DEBUG] [Thread-121373] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:33:33.881 [DEBUG] [Thread-121373] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:33:33.881 [DEBUG] [Thread-121373] [transport.py] [_log()] Compression: none
2025-11-03T19:33:33.881 [DEBUG] [Thread-121373] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:33:33.895 [DEBUG] [Thread-121373] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:33:33.895 [DEBUG] [Thread-121373] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:33:33.896 [DEBUG] [Thread-121373] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:33:33.896 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:33:33.896 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:33:33.897 [DEBUG] [Thread-121373] [transport.py] [_log()] userauth is OK
2025-11-03T19:33:33.897 [DEBUG] [Thread-121373] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:33:33.897 [DEBUG] [Thread-121373] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:33:33.897 [DEBUG] [Thread-121373] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:33:33.897 [DEBUG] [Thread-121373] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:33:33.907 [INFO] [Thread-121373] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:33:33.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:33:34.660 [DEBUG] [Thread-121373] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:33:34.660 [DEBUG] [Thread-121373] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:33:34.660 [DEBUG] [Thread-121373] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:33:34.700 [DEBUG] [Thread-121373] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:33:34.700 [DEBUG] [Thread-121373] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:33:34.702 [DEBUG] [Thread-121373] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:33:34.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:33:34.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:33:34.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:33:34.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:33:34.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:33:34.726 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:33:34.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:33:34.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:33:34.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:33:34.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.731004 -999.00  +21.30  27.99      9  -12.00 1 1 1 1 1   175    0 32.70 -6.95 ----- 28.0 28.0 304.4 36.1 21.2 -30.7 21.2 -29.5 20.9 -29.5 21.2 -30.2
2025-11-03T19:33:34.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:33:34.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:33:34.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.731004
2025-11-03T19:33:34.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:33:34.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:33:34.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:33:34.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:33:34.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:33:34.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:33:08', tmtdew=41.95, humidity=4.42, cloud=0.0, wind=27.79, temperature=21.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:32:38.746', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:33:34.727 [DEBUG] [Thread-121373] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:33:34.798 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:33:34.810 [DEBUG] [Thread-121376] [transport.py] [_log()] starting thread (client mode): 0xed34cd0
2025-11-03T19:33:34.810 [DEBUG] [Thread-121376] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:33:34.825 [DEBUG] [Thread-121376] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:33:34.825 [INFO] [Thread-121376] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:33:34.832 [DEBUG] [Thread-121376] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:33:34.833 [DEBUG] [Thread-121376] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:33:34.833 [DEBUG] [Thread-121376] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:33:34.833 [DEBUG] [Thread-121376] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:33:34.833 [DEBUG] [Thread-121376] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:33:34.833 [DEBUG] [Thread-121376] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:33:34.833 [DEBUG] [Thread-121376] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:33:34.833 [DEBUG] [Thread-121376] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:33:34.833 [DEBUG] [Thread-121376] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:33:34.833 [DEBUG] [Thread-121376] [transport.py] [_log()] client lang: <none>
2025-11-03T19:33:34.833 [DEBUG] [Thread-121376] [transport.py] [_log()] server lang: <none>
2025-11-03T19:33:34.833 [DEBUG] [Thread-121376] [transport.py] [_log()] kex follows: False
2025-11-03T19:33:34.833 [DEBUG] [Thread-121376] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:33:34.833 [DEBUG] [Thread-121376] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:33:34.833 [DEBUG] [Thread-121376] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:33:34.833 [DEBUG] [Thread-121376] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:33:34.833 [DEBUG] [Thread-121376] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:33:34.833 [DEBUG] [Thread-121376] [transport.py] [_log()] Compression: none
2025-11-03T19:33:34.833 [DEBUG] [Thread-121376] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:33:34.889 [DEBUG] [Thread-121376] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:33:34.889 [DEBUG] [Thread-121376] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:33:34.890 [DEBUG] [Thread-121376] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:33:34.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:33:34.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:33:34.947 [DEBUG] [Thread-121376] [transport.py] [_log()] userauth is OK
2025-11-03T19:33:34.947 [DEBUG] [Thread-121376] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:33:34.947 [DEBUG] [Thread-121376] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:33:34.947 [DEBUG] [Thread-121376] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:33:34.947 [DEBUG] [Thread-121376] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:33:34.961 [INFO] [Thread-121376] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:33:34.961 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:33:34.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:33:35.766 [DEBUG] [Thread-121376] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:33:35.766 [DEBUG] [Thread-121376] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:33:35.814 [DEBUG] [Thread-121376] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:33:35.814 [DEBUG] [Thread-121376] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:33:35.825 [DEBUG] [Thread-121376] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:33:35.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:33:35.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:33:35.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:33:35.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:33:35.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:33:35.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:33:35.863 [DEBUG] [Thread-121376] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:33:43.197 [DEBUG] [Thread-121378 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:33:46.231 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:33:46.233 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:33:48.727 [DEBUG] [Thread-121379 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:33:49.117 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:33:56.712 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:33:58.237 [DEBUG] [Thread-121380 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:34:02.835 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:34:05.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:34:05.885 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:34:05.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:34:06.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 33, 40), 41.92, 4.93, 0.0, 25.48, 21.36, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:34:06.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:33:40
2025-11-03T19:34:06.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:34:06.950 [DEBUG] [Thread-121381] [transport.py] [_log()] starting thread (client mode): 0xed34190
2025-11-03T19:34:06.950 [DEBUG] [Thread-121381] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:34:06.969 [DEBUG] [Thread-121381] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:34:06.970 [INFO] [Thread-121381] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:34:06.972 [DEBUG] [Thread-121381] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:34:06.972 [DEBUG] [Thread-121381] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:34:06.973 [DEBUG] [Thread-121381] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:34:06.973 [DEBUG] [Thread-121381] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:34:06.973 [DEBUG] [Thread-121381] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:34:06.973 [DEBUG] [Thread-121381] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:34:06.973 [DEBUG] [Thread-121381] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:34:06.973 [DEBUG] [Thread-121381] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:34:06.973 [DEBUG] [Thread-121381] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:34:06.973 [DEBUG] [Thread-121381] [transport.py] [_log()] client lang: <none>
2025-11-03T19:34:06.973 [DEBUG] [Thread-121381] [transport.py] [_log()] server lang: <none>
2025-11-03T19:34:06.973 [DEBUG] [Thread-121381] [transport.py] [_log()] kex follows: False
2025-11-03T19:34:06.973 [DEBUG] [Thread-121381] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:34:06.973 [DEBUG] [Thread-121381] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:34:06.973 [DEBUG] [Thread-121381] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:34:06.973 [DEBUG] [Thread-121381] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:34:06.973 [DEBUG] [Thread-121381] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:34:06.973 [DEBUG] [Thread-121381] [transport.py] [_log()] Compression: none
2025-11-03T19:34:06.973 [DEBUG] [Thread-121381] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:34:06.987 [DEBUG] [Thread-121381] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:34:06.987 [DEBUG] [Thread-121381] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:34:06.988 [DEBUG] [Thread-121381] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:34:06.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:34:06.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:34:06.988 [DEBUG] [Thread-121381] [transport.py] [_log()] userauth is OK
2025-11-03T19:34:06.989 [DEBUG] [Thread-121381] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:34:06.989 [DEBUG] [Thread-121381] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:34:06.989 [DEBUG] [Thread-121381] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:34:06.989 [DEBUG] [Thread-121381] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:34:07.004 [INFO] [Thread-121381] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:34:07.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:34:07.625 [DEBUG] [Thread-121381] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:34:07.625 [DEBUG] [Thread-121381] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:34:07.625 [DEBUG] [Thread-121381] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:34:07.666 [DEBUG] [Thread-121381] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:34:07.666 [DEBUG] [Thread-121381] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:34:07.669 [DEBUG] [Thread-121381] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:34:07.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:34:07.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:34:07.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:34:07.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:34:07.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:34:07.686 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:34:07.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:34:07.686 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:34:07.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:34:07.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.731351 -999.00  +21.30  28.55      9  -12.00 1 1 1 1 1   161    0 33.26 -6.95 ----- 28.6 28.6 306.8 33.8 21.2 -30.7 21.1 -29.7 20.9 -29.5 21.2 -30.4
2025-11-03T19:34:07.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:34:07.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:34:07.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.731351
2025-11-03T19:34:07.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:34:07.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:34:07.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:34:07.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:34:07.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:34:07.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:33:40', tmtdew=41.92, humidity=4.93, cloud=0.0, wind=25.48, temperature=21.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:33:08.726', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:34:07.688 [DEBUG] [Thread-121381] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:34:07.761 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:34:07.772 [DEBUG] [Thread-121384] [transport.py] [_log()] starting thread (client mode): 0xed349d0
2025-11-03T19:34:07.772 [DEBUG] [Thread-121384] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:34:07.786 [DEBUG] [Thread-121384] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:34:07.786 [INFO] [Thread-121384] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:34:07.793 [DEBUG] [Thread-121384] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:34:07.793 [DEBUG] [Thread-121384] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:34:07.794 [DEBUG] [Thread-121384] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:34:07.794 [DEBUG] [Thread-121384] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:34:07.794 [DEBUG] [Thread-121384] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:34:07.794 [DEBUG] [Thread-121384] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:34:07.794 [DEBUG] [Thread-121384] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:34:07.794 [DEBUG] [Thread-121384] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:34:07.794 [DEBUG] [Thread-121384] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:34:07.794 [DEBUG] [Thread-121384] [transport.py] [_log()] client lang: <none>
2025-11-03T19:34:07.794 [DEBUG] [Thread-121384] [transport.py] [_log()] server lang: <none>
2025-11-03T19:34:07.794 [DEBUG] [Thread-121384] [transport.py] [_log()] kex follows: False
2025-11-03T19:34:07.794 [DEBUG] [Thread-121384] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:34:07.794 [DEBUG] [Thread-121384] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:34:07.794 [DEBUG] [Thread-121384] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:34:07.794 [DEBUG] [Thread-121384] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:34:07.794 [DEBUG] [Thread-121384] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:34:07.794 [DEBUG] [Thread-121384] [transport.py] [_log()] Compression: none
2025-11-03T19:34:07.794 [DEBUG] [Thread-121384] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:34:07.849 [DEBUG] [Thread-121384] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:34:07.849 [DEBUG] [Thread-121384] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:34:07.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:34:07.850 [DEBUG] [Thread-121384] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:34:07.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:34:07.906 [DEBUG] [Thread-121384] [transport.py] [_log()] userauth is OK
2025-11-03T19:34:07.906 [DEBUG] [Thread-121384] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:34:07.906 [DEBUG] [Thread-121384] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:34:07.907 [DEBUG] [Thread-121384] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:34:07.907 [DEBUG] [Thread-121384] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:34:07.924 [INFO] [Thread-121384] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:34:07.924 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:34:07.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:34:08.725 [DEBUG] [Thread-121384] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:34:08.725 [DEBUG] [Thread-121384] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:34:08.775 [DEBUG] [Thread-121384] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:34:08.775 [DEBUG] [Thread-121384] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:34:08.787 [DEBUG] [Thread-121384] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:34:08.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:34:08.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:34:08.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:34:08.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:34:08.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:34:08.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:34:08.828 [DEBUG] [Thread-121384] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:34:13.270 [DEBUG] [Thread-121386 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:34:26.242 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:34:28.334 [DEBUG] [Thread-121387 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:34:38.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:34:38.849 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:34:38.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:34:39.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 34, 13), 41.91, 4.93, 0.0, 24.17, 21.31, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:34:39.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:34:13
2025-11-03T19:34:39.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:34:39.900 [DEBUG] [Thread-121388] [transport.py] [_log()] starting thread (client mode): 0xed370d0
2025-11-03T19:34:39.900 [DEBUG] [Thread-121388] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:34:39.921 [DEBUG] [Thread-121388] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:34:39.921 [INFO] [Thread-121388] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:34:39.924 [DEBUG] [Thread-121388] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:34:39.924 [DEBUG] [Thread-121388] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:34:39.924 [DEBUG] [Thread-121388] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:34:39.924 [DEBUG] [Thread-121388] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:34:39.924 [DEBUG] [Thread-121388] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:34:39.924 [DEBUG] [Thread-121388] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:34:39.924 [DEBUG] [Thread-121388] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:34:39.924 [DEBUG] [Thread-121388] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:34:39.924 [DEBUG] [Thread-121388] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:34:39.924 [DEBUG] [Thread-121388] [transport.py] [_log()] client lang: <none>
2025-11-03T19:34:39.924 [DEBUG] [Thread-121388] [transport.py] [_log()] server lang: <none>
2025-11-03T19:34:39.924 [DEBUG] [Thread-121388] [transport.py] [_log()] kex follows: False
2025-11-03T19:34:39.925 [DEBUG] [Thread-121388] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:34:39.925 [DEBUG] [Thread-121388] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:34:39.925 [DEBUG] [Thread-121388] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:34:39.925 [DEBUG] [Thread-121388] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:34:39.925 [DEBUG] [Thread-121388] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:34:39.925 [DEBUG] [Thread-121388] [transport.py] [_log()] Compression: none
2025-11-03T19:34:39.925 [DEBUG] [Thread-121388] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:34:39.942 [DEBUG] [Thread-121388] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:34:39.942 [DEBUG] [Thread-121388] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:34:39.943 [DEBUG] [Thread-121388] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:34:39.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:34:39.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:34:39.945 [DEBUG] [Thread-121388] [transport.py] [_log()] userauth is OK
2025-11-03T19:34:39.945 [DEBUG] [Thread-121388] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:34:39.945 [DEBUG] [Thread-121388] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:34:39.945 [DEBUG] [Thread-121388] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:34:39.946 [DEBUG] [Thread-121388] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:34:39.970 [INFO] [Thread-121388] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:34:39.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:34:40.689 [DEBUG] [Thread-121388] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:34:40.689 [DEBUG] [Thread-121388] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:34:40.689 [DEBUG] [Thread-121388] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:34:40.731 [DEBUG] [Thread-121388] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:34:40.731 [DEBUG] [Thread-121388] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:34:40.733 [DEBUG] [Thread-121388] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:34:40.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:34:40.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:34:40.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:34:40.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:34:40.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:34:40.750 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:34:40.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:34:40.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:34:40.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:34:40.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.732046 -999.00  +21.30  25.74      9  -12.00 1 1 1 1 1   137    0 33.46 -5.29 ----- 25.7 25.7 291.1 38.0 21.2 -30.6 21.2 -29.4 20.9 -28.9 21.2 -30.4
2025-11-03T19:34:40.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:34:40.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:34:40.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.732046
2025-11-03T19:34:40.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:34:40.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:34:40.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:34:40.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:34:40.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:34:40.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:34:13', tmtdew=41.91, humidity=4.93, cloud=0.0, wind=24.17, temperature=21.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:34:08.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:34:40.751 [DEBUG] [Thread-121388] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:34:40.824 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:34:40.837 [DEBUG] [Thread-121391] [transport.py] [_log()] starting thread (client mode): 0x141dbbe0
2025-11-03T19:34:40.837 [DEBUG] [Thread-121391] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:34:40.852 [DEBUG] [Thread-121391] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:34:40.852 [INFO] [Thread-121391] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:34:40.859 [DEBUG] [Thread-121391] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:34:40.859 [DEBUG] [Thread-121391] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:34:40.859 [DEBUG] [Thread-121391] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:34:40.859 [DEBUG] [Thread-121391] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:34:40.859 [DEBUG] [Thread-121391] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:34:40.859 [DEBUG] [Thread-121391] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:34:40.860 [DEBUG] [Thread-121391] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:34:40.860 [DEBUG] [Thread-121391] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:34:40.860 [DEBUG] [Thread-121391] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:34:40.860 [DEBUG] [Thread-121391] [transport.py] [_log()] client lang: <none>
2025-11-03T19:34:40.860 [DEBUG] [Thread-121391] [transport.py] [_log()] server lang: <none>
2025-11-03T19:34:40.860 [DEBUG] [Thread-121391] [transport.py] [_log()] kex follows: False
2025-11-03T19:34:40.860 [DEBUG] [Thread-121391] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:34:40.860 [DEBUG] [Thread-121391] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:34:40.860 [DEBUG] [Thread-121391] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:34:40.860 [DEBUG] [Thread-121391] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:34:40.860 [DEBUG] [Thread-121391] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:34:40.860 [DEBUG] [Thread-121391] [transport.py] [_log()] Compression: none
2025-11-03T19:34:40.860 [DEBUG] [Thread-121391] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:34:40.917 [DEBUG] [Thread-121391] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:34:40.917 [DEBUG] [Thread-121391] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:34:40.917 [DEBUG] [Thread-121391] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:34:40.917 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:34:40.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:34:40.975 [DEBUG] [Thread-121391] [transport.py] [_log()] userauth is OK
2025-11-03T19:34:40.975 [DEBUG] [Thread-121391] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:34:40.975 [DEBUG] [Thread-121391] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:34:40.975 [DEBUG] [Thread-121391] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:34:40.975 [DEBUG] [Thread-121391] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:34:40.989 [INFO] [Thread-121391] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:34:40.989 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:34:40.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:34:41.808 [DEBUG] [Thread-121391] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:34:41.808 [DEBUG] [Thread-121391] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:34:41.856 [DEBUG] [Thread-121391] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:34:41.857 [DEBUG] [Thread-121391] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:34:41.866 [DEBUG] [Thread-121391] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:34:41.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:34:41.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:34:41.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:34:41.893 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:34:41.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:34:41.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:34:41.902 [DEBUG] [Thread-121391] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:34:43.370 [DEBUG] [Thread-121393 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:34:48.802 [DEBUG] [Thread-121394 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:34:49.697 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:34:53.660 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:34:53.661 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:34:57.345 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:34:58.416 [DEBUG] [Thread-121395 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:35:03.482 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:35:11.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:35:11.925 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:35:11.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:35:12.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 34, 45), 41.69, 4.98, 0.0, 28.41, 21.28, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:35:12.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:34:45
2025-11-03T19:35:12.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:35:12.926 [DEBUG] [Thread-121396] [transport.py] [_log()] starting thread (client mode): 0xedc4730
2025-11-03T19:35:12.926 [DEBUG] [Thread-121396] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:35:12.949 [DEBUG] [Thread-121396] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:35:12.949 [INFO] [Thread-121396] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:35:12.951 [DEBUG] [Thread-121396] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:35:12.951 [DEBUG] [Thread-121396] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:35:12.951 [DEBUG] [Thread-121396] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:35:12.951 [DEBUG] [Thread-121396] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:35:12.951 [DEBUG] [Thread-121396] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:35:12.952 [DEBUG] [Thread-121396] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:35:12.952 [DEBUG] [Thread-121396] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:35:12.952 [DEBUG] [Thread-121396] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:35:12.952 [DEBUG] [Thread-121396] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:35:12.952 [DEBUG] [Thread-121396] [transport.py] [_log()] client lang: <none>
2025-11-03T19:35:12.952 [DEBUG] [Thread-121396] [transport.py] [_log()] server lang: <none>
2025-11-03T19:35:12.952 [DEBUG] [Thread-121396] [transport.py] [_log()] kex follows: False
2025-11-03T19:35:12.952 [DEBUG] [Thread-121396] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:35:12.952 [DEBUG] [Thread-121396] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:35:12.952 [DEBUG] [Thread-121396] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:35:12.952 [DEBUG] [Thread-121396] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:35:12.953 [DEBUG] [Thread-121396] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:35:12.953 [DEBUG] [Thread-121396] [transport.py] [_log()] Compression: none
2025-11-03T19:35:12.953 [DEBUG] [Thread-121396] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:35:12.967 [DEBUG] [Thread-121396] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:35:12.968 [DEBUG] [Thread-121396] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:35:12.969 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:35:12.970 [DEBUG] [Thread-121396] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:35:12.970 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:35:12.972 [DEBUG] [Thread-121396] [transport.py] [_log()] userauth is OK
2025-11-03T19:35:12.972 [DEBUG] [Thread-121396] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:35:12.972 [DEBUG] [Thread-121396] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:35:12.972 [DEBUG] [Thread-121396] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:35:12.973 [DEBUG] [Thread-121396] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:35:13.001 [INFO] [Thread-121396] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:35:13.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:35:13.459 [DEBUG] [Thread-121398 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:35:13.639 [DEBUG] [Thread-121396] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:35:13.639 [DEBUG] [Thread-121396] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:35:13.640 [DEBUG] [Thread-121396] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:35:13.680 [DEBUG] [Thread-121396] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:35:13.680 [DEBUG] [Thread-121396] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:35:13.683 [DEBUG] [Thread-121396] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:35:13.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:35:13.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:35:13.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:35:13.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:35:13.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:35:13.706 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:35:13.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:35:13.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:35:13.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:35:13.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.732393 -999.00  +21.20  32.52      9  -12.10 1 1 2 1 1   126    0 33.35 -4.76 ----- 32.5 32.5 314.0 37.1 21.2 -30.7 21.1 -29.6 20.9 -29.5 21.2 -30.2
2025-11-03T19:35:13.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:35:13.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:35:13.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.732393
2025-11-03T19:35:13.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:35:13.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:35:13.709 [DEBUG] [Thread-121396] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:35:13.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:35:13.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:35:13.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:35:13.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:34:45', tmtdew=41.69, humidity=4.98, cloud=0.0, wind=28.41, temperature=21.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:34:38.755', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:35:13.790 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:35:13.803 [DEBUG] [Thread-121400] [transport.py] [_log()] starting thread (client mode): 0x141dba90
2025-11-03T19:35:13.803 [DEBUG] [Thread-121400] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:35:13.818 [DEBUG] [Thread-121400] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:35:13.818 [INFO] [Thread-121400] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:35:13.825 [DEBUG] [Thread-121400] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:35:13.825 [DEBUG] [Thread-121400] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:35:13.825 [DEBUG] [Thread-121400] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:35:13.825 [DEBUG] [Thread-121400] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:35:13.825 [DEBUG] [Thread-121400] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:35:13.825 [DEBUG] [Thread-121400] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:35:13.825 [DEBUG] [Thread-121400] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:35:13.825 [DEBUG] [Thread-121400] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:35:13.825 [DEBUG] [Thread-121400] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:35:13.825 [DEBUG] [Thread-121400] [transport.py] [_log()] client lang: <none>
2025-11-03T19:35:13.825 [DEBUG] [Thread-121400] [transport.py] [_log()] server lang: <none>
2025-11-03T19:35:13.825 [DEBUG] [Thread-121400] [transport.py] [_log()] kex follows: False
2025-11-03T19:35:13.825 [DEBUG] [Thread-121400] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:35:13.825 [DEBUG] [Thread-121400] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:35:13.825 [DEBUG] [Thread-121400] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:35:13.825 [DEBUG] [Thread-121400] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:35:13.825 [DEBUG] [Thread-121400] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:35:13.825 [DEBUG] [Thread-121400] [transport.py] [_log()] Compression: none
2025-11-03T19:35:13.825 [DEBUG] [Thread-121400] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:35:13.883 [DEBUG] [Thread-121400] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:35:13.883 [DEBUG] [Thread-121400] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:35:13.884 [DEBUG] [Thread-121400] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:35:13.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:35:13.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:35:13.943 [DEBUG] [Thread-121400] [transport.py] [_log()] userauth is OK
2025-11-03T19:35:13.943 [DEBUG] [Thread-121400] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:35:13.943 [DEBUG] [Thread-121400] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:35:13.943 [DEBUG] [Thread-121400] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:35:13.943 [DEBUG] [Thread-121400] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:35:13.966 [INFO] [Thread-121400] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:35:13.967 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:35:13.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:35:14.804 [DEBUG] [Thread-121400] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:35:14.805 [DEBUG] [Thread-121400] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:35:14.844 [DEBUG] [Thread-121400] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:35:14.844 [DEBUG] [Thread-121400] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:35:14.853 [DEBUG] [Thread-121400] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:35:14.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:35:14.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:35:14.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:35:14.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:35:14.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:35:14.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:35:14.889 [DEBUG] [Thread-121400] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:35:26.935 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:35:28.490 [DEBUG] [Thread-121402 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:35:43.530 [DEBUG] [Thread-121403 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:35:44.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:35:44.911 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:35:44.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:35:45.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 35, 17), 41.69, 4.98, 0.0, 28.12, 21.26, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:35:45.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:35:17
2025-11-03T19:35:45.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:35:45.924 [DEBUG] [Thread-121404] [transport.py] [_log()] starting thread (client mode): 0xed34460
2025-11-03T19:35:45.924 [DEBUG] [Thread-121404] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:35:45.943 [DEBUG] [Thread-121404] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:35:45.943 [INFO] [Thread-121404] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:35:45.946 [DEBUG] [Thread-121404] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:35:45.946 [DEBUG] [Thread-121404] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:35:45.946 [DEBUG] [Thread-121404] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:35:45.946 [DEBUG] [Thread-121404] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:35:45.946 [DEBUG] [Thread-121404] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:35:45.947 [DEBUG] [Thread-121404] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:35:45.947 [DEBUG] [Thread-121404] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:35:45.947 [DEBUG] [Thread-121404] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:35:45.947 [DEBUG] [Thread-121404] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:35:45.947 [DEBUG] [Thread-121404] [transport.py] [_log()] client lang: <none>
2025-11-03T19:35:45.947 [DEBUG] [Thread-121404] [transport.py] [_log()] server lang: <none>
2025-11-03T19:35:45.947 [DEBUG] [Thread-121404] [transport.py] [_log()] kex follows: False
2025-11-03T19:35:45.947 [DEBUG] [Thread-121404] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:35:45.947 [DEBUG] [Thread-121404] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:35:45.947 [DEBUG] [Thread-121404] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:35:45.947 [DEBUG] [Thread-121404] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:35:45.947 [DEBUG] [Thread-121404] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:35:45.947 [DEBUG] [Thread-121404] [transport.py] [_log()] Compression: none
2025-11-03T19:35:45.947 [DEBUG] [Thread-121404] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:35:45.964 [DEBUG] [Thread-121404] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:35:45.964 [DEBUG] [Thread-121404] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:35:45.965 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:35:45.965 [DEBUG] [Thread-121404] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:35:45.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:35:46.009 [DEBUG] [Thread-121404] [transport.py] [_log()] userauth is OK
2025-11-03T19:35:46.009 [DEBUG] [Thread-121404] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:35:46.010 [DEBUG] [Thread-121404] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:35:46.010 [DEBUG] [Thread-121404] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:35:46.010 [DEBUG] [Thread-121404] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:35:46.041 [INFO] [Thread-121404] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:35:46.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:35:46.689 [DEBUG] [Thread-121404] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:35:46.689 [DEBUG] [Thread-121404] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:35:46.690 [DEBUG] [Thread-121404] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:35:46.731 [DEBUG] [Thread-121404] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:35:46.731 [DEBUG] [Thread-121404] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:35:46.734 [DEBUG] [Thread-121404] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:35:46.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:35:46.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:35:46.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:35:46.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:35:46.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:35:46.760 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:35:46.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:35:46.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:35:46.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:35:46.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.732740 -999.00  +21.20  29.51      9  -11.90 1 1 1 1 1   116    0 33.30 -4.41 ----- 29.5 29.5 314.6 33.7 21.2 -30.6 21.1 -29.5 20.9 -29.3 21.1 -30.0
2025-11-03T19:35:46.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:35:46.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:35:46.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.732740
2025-11-03T19:35:46.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:35:46.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:35:46.764 [DEBUG] [Thread-121404] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:35:46.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:35:46.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:35:46.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:35:46.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:35:17', tmtdew=41.69, humidity=4.98, cloud=0.0, wind=28.12, temperature=21.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:35:08.736', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:35:46.852 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:35:46.864 [DEBUG] [Thread-121407] [transport.py] [_log()] starting thread (client mode): 0xed8bd00
2025-11-03T19:35:46.864 [DEBUG] [Thread-121407] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:35:46.879 [DEBUG] [Thread-121407] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:35:46.879 [INFO] [Thread-121407] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:35:46.887 [DEBUG] [Thread-121407] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:35:46.888 [DEBUG] [Thread-121407] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:35:46.888 [DEBUG] [Thread-121407] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:35:46.888 [DEBUG] [Thread-121407] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:35:46.888 [DEBUG] [Thread-121407] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:35:46.888 [DEBUG] [Thread-121407] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:35:46.888 [DEBUG] [Thread-121407] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:35:46.889 [DEBUG] [Thread-121407] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:35:46.889 [DEBUG] [Thread-121407] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:35:46.889 [DEBUG] [Thread-121407] [transport.py] [_log()] client lang: <none>
2025-11-03T19:35:46.889 [DEBUG] [Thread-121407] [transport.py] [_log()] server lang: <none>
2025-11-03T19:35:46.889 [DEBUG] [Thread-121407] [transport.py] [_log()] kex follows: False
2025-11-03T19:35:46.889 [DEBUG] [Thread-121407] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:35:46.889 [DEBUG] [Thread-121407] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:35:46.889 [DEBUG] [Thread-121407] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:35:46.898 [DEBUG] [Thread-121407] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:35:46.899 [DEBUG] [Thread-121407] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:35:46.899 [DEBUG] [Thread-121407] [transport.py] [_log()] Compression: none
2025-11-03T19:35:46.899 [DEBUG] [Thread-121407] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:35:46.946 [DEBUG] [Thread-121407] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:35:46.947 [DEBUG] [Thread-121407] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:35:46.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:35:46.948 [DEBUG] [Thread-121407] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:35:46.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:35:47.002 [DEBUG] [Thread-121407] [transport.py] [_log()] userauth is OK
2025-11-03T19:35:47.003 [DEBUG] [Thread-121407] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:35:47.003 [DEBUG] [Thread-121407] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:35:47.003 [DEBUG] [Thread-121407] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:35:47.003 [DEBUG] [Thread-121407] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:35:47.022 [INFO] [Thread-121407] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:35:47.022 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:35:47.022 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:35:47.859 [DEBUG] [Thread-121407] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:35:47.859 [DEBUG] [Thread-121407] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:35:47.907 [DEBUG] [Thread-121407] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:35:47.907 [DEBUG] [Thread-121407] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:35:47.915 [DEBUG] [Thread-121407] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:35:47.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:35:47.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:35:47.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:35:47.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:35:47.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:35:47.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:35:47.947 [DEBUG] [Thread-121407] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:35:48.948 [DEBUG] [Thread-121409 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:35:50.447 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:35:58.563 [DEBUG] [Thread-121410 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:35:59.604 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:35:59.605 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:36:02.295 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:36:07.379 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:36:13.622 [DEBUG] [Thread-121411 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:36:17.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:36:17.957 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:36:17.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:36:18.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 35, 50), 41.77, 4.95, 0.0, 23.41, 21.28, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:36:18.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:35:50
2025-11-03T19:36:18.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:36:18.981 [DEBUG] [Thread-121412] [transport.py] [_log()] starting thread (client mode): 0xedc62f0
2025-11-03T19:36:18.981 [DEBUG] [Thread-121412] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:36:19.000 [DEBUG] [Thread-121412] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:36:19.000 [INFO] [Thread-121412] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:36:19.003 [DEBUG] [Thread-121412] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:36:19.003 [DEBUG] [Thread-121412] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:36:19.003 [DEBUG] [Thread-121412] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:36:19.003 [DEBUG] [Thread-121412] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:36:19.003 [DEBUG] [Thread-121412] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:36:19.003 [DEBUG] [Thread-121412] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:36:19.004 [DEBUG] [Thread-121412] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:36:19.004 [DEBUG] [Thread-121412] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:36:19.004 [DEBUG] [Thread-121412] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:36:19.004 [DEBUG] [Thread-121412] [transport.py] [_log()] client lang: <none>
2025-11-03T19:36:19.004 [DEBUG] [Thread-121412] [transport.py] [_log()] server lang: <none>
2025-11-03T19:36:19.004 [DEBUG] [Thread-121412] [transport.py] [_log()] kex follows: False
2025-11-03T19:36:19.004 [DEBUG] [Thread-121412] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:36:19.004 [DEBUG] [Thread-121412] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:36:19.004 [DEBUG] [Thread-121412] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:36:19.004 [DEBUG] [Thread-121412] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:36:19.004 [DEBUG] [Thread-121412] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:36:19.004 [DEBUG] [Thread-121412] [transport.py] [_log()] Compression: none
2025-11-03T19:36:19.004 [DEBUG] [Thread-121412] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:36:19.024 [DEBUG] [Thread-121412] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:36:19.024 [DEBUG] [Thread-121412] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:36:19.025 [DEBUG] [Thread-121412] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:36:19.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:36:19.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:36:19.027 [DEBUG] [Thread-121412] [transport.py] [_log()] userauth is OK
2025-11-03T19:36:19.028 [DEBUG] [Thread-121412] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:36:19.028 [DEBUG] [Thread-121412] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:36:19.028 [DEBUG] [Thread-121412] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:36:19.028 [DEBUG] [Thread-121412] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:36:19.048 [INFO] [Thread-121412] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:36:19.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:36:19.692 [DEBUG] [Thread-121412] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:36:19.692 [DEBUG] [Thread-121412] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:36:19.692 [DEBUG] [Thread-121412] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:36:19.732 [DEBUG] [Thread-121412] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:36:19.732 [DEBUG] [Thread-121412] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:36:19.735 [DEBUG] [Thread-121412] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:36:19.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:36:19.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:36:19.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:36:19.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:36:19.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:36:19.752 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:36:19.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:36:19.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:36:19.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:36:19.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.733088 -999.00  +21.10  21.72      9  -12.00 1 1 1 1 1   107    0 32.83 -4.58 ----- 21.7 21.7 315.0 29.4 21.2 -30.7 21.1 -29.5 20.9 -29.2 21.1 -30.3
2025-11-03T19:36:19.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:36:19.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:36:19.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.733088
2025-11-03T19:36:19.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:36:19.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:36:19.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:36:19.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:36:19.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:36:19.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:35:50', tmtdew=41.77, humidity=4.95, cloud=0.0, wind=23.41, temperature=21.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:35:38.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:36:19.761 [DEBUG] [Thread-121412] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:36:19.837 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:36:19.848 [DEBUG] [Thread-121415] [transport.py] [_log()] starting thread (client mode): 0xedc44f0
2025-11-03T19:36:19.848 [DEBUG] [Thread-121415] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:36:19.864 [DEBUG] [Thread-121415] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:36:19.864 [INFO] [Thread-121415] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:36:19.871 [DEBUG] [Thread-121415] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:36:19.871 [DEBUG] [Thread-121415] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:36:19.871 [DEBUG] [Thread-121415] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:36:19.871 [DEBUG] [Thread-121415] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:36:19.872 [DEBUG] [Thread-121415] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:36:19.872 [DEBUG] [Thread-121415] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:36:19.872 [DEBUG] [Thread-121415] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:36:19.872 [DEBUG] [Thread-121415] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:36:19.872 [DEBUG] [Thread-121415] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:36:19.872 [DEBUG] [Thread-121415] [transport.py] [_log()] client lang: <none>
2025-11-03T19:36:19.872 [DEBUG] [Thread-121415] [transport.py] [_log()] server lang: <none>
2025-11-03T19:36:19.872 [DEBUG] [Thread-121415] [transport.py] [_log()] kex follows: False
2025-11-03T19:36:19.872 [DEBUG] [Thread-121415] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:36:19.872 [DEBUG] [Thread-121415] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:36:19.872 [DEBUG] [Thread-121415] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:36:19.872 [DEBUG] [Thread-121415] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:36:19.872 [DEBUG] [Thread-121415] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:36:19.872 [DEBUG] [Thread-121415] [transport.py] [_log()] Compression: none
2025-11-03T19:36:19.872 [DEBUG] [Thread-121415] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:36:19.928 [DEBUG] [Thread-121415] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:36:19.928 [DEBUG] [Thread-121415] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:36:19.928 [DEBUG] [Thread-121415] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:36:19.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:36:19.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:36:19.986 [DEBUG] [Thread-121415] [transport.py] [_log()] userauth is OK
2025-11-03T19:36:19.986 [DEBUG] [Thread-121415] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:36:19.986 [DEBUG] [Thread-121415] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:36:19.986 [DEBUG] [Thread-121415] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:36:19.986 [DEBUG] [Thread-121415] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:36:20.000 [INFO] [Thread-121415] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:36:20.000 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:36:20.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:36:20.836 [DEBUG] [Thread-121415] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:36:20.838 [DEBUG] [Thread-121415] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:36:20.884 [DEBUG] [Thread-121415] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:36:20.884 [DEBUG] [Thread-121415] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:36:20.893 [DEBUG] [Thread-121415] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:36:20.904 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:36:20.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:36:20.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:36:20.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:36:20.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:36:20.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:36:20.933 [DEBUG] [Thread-121415] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:36:28.671 [DEBUG] [Thread-121417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:36:30.837 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:36:43.732 [DEBUG] [Thread-121418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:36:49.191 [DEBUG] [Thread-121419 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:36:50.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:36:50.929 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:36:50.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:36:51.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 36, 22), 41.66, 5.0, 0.0, 22.73, 21.29, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:36:51.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:36:22
2025-11-03T19:36:51.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:36:51.956 [DEBUG] [Thread-121420] [transport.py] [_log()] starting thread (client mode): 0xed378b0
2025-11-03T19:36:51.956 [DEBUG] [Thread-121420] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:36:51.966 [DEBUG] [Thread-121420] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:36:51.967 [INFO] [Thread-121420] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:36:51.970 [DEBUG] [Thread-121420] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:36:51.970 [DEBUG] [Thread-121420] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:36:51.970 [DEBUG] [Thread-121420] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:36:51.970 [DEBUG] [Thread-121420] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:36:51.970 [DEBUG] [Thread-121420] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:36:51.970 [DEBUG] [Thread-121420] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:36:51.971 [DEBUG] [Thread-121420] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:36:51.971 [DEBUG] [Thread-121420] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:36:51.971 [DEBUG] [Thread-121420] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:36:51.971 [DEBUG] [Thread-121420] [transport.py] [_log()] client lang: <none>
2025-11-03T19:36:51.971 [DEBUG] [Thread-121420] [transport.py] [_log()] server lang: <none>
2025-11-03T19:36:51.971 [DEBUG] [Thread-121420] [transport.py] [_log()] kex follows: False
2025-11-03T19:36:51.971 [DEBUG] [Thread-121420] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:36:51.971 [DEBUG] [Thread-121420] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:36:51.971 [DEBUG] [Thread-121420] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:36:51.971 [DEBUG] [Thread-121420] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:36:51.971 [DEBUG] [Thread-121420] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:36:51.971 [DEBUG] [Thread-121420] [transport.py] [_log()] Compression: none
2025-11-03T19:36:51.972 [DEBUG] [Thread-121420] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:36:51.980 [DEBUG] [Thread-121420] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:36:51.981 [DEBUG] [Thread-121420] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:36:51.981 [DEBUG] [Thread-121420] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:36:51.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:36:51.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:36:51.983 [DEBUG] [Thread-121420] [transport.py] [_log()] userauth is OK
2025-11-03T19:36:51.984 [DEBUG] [Thread-121420] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:36:51.984 [DEBUG] [Thread-121420] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:36:51.984 [DEBUG] [Thread-121420] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:36:51.984 [DEBUG] [Thread-121420] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:36:52.008 [INFO] [Thread-121420] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:36:52.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:36:52.649 [DEBUG] [Thread-121420] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:36:52.649 [DEBUG] [Thread-121420] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:36:52.649 [DEBUG] [Thread-121420] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:36:52.690 [DEBUG] [Thread-121420] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:36:52.690 [DEBUG] [Thread-121420] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:36:52.692 [DEBUG] [Thread-121420] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:36:52.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:36:52.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:36:52.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:36:52.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:36:52.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:36:52.710 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:36:52.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:36:52.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:36:52.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:36:52.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.733435 -999.00  +21.10  33.98      9  -11.90 1 1 2 1 1    98    0 33.04 -5.25 ----- 34.0 34.0 305.4 37.4 21.1 -30.6 21.1 -29.3 20.8 -28.9 21.1 -30.1
2025-11-03T19:36:52.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:36:52.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:36:52.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.733435
2025-11-03T19:36:52.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:36:52.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:36:52.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:36:52.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:36:52.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:36:52.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:36:22', tmtdew=41.66, humidity=5.0, cloud=0.0, wind=22.73, temperature=21.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:36:08.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:36:52.711 [DEBUG] [Thread-121420] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:36:52.783 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:36:52.794 [DEBUG] [Thread-121423] [transport.py] [_log()] starting thread (client mode): 0x1174f790
2025-11-03T19:36:52.794 [DEBUG] [Thread-121423] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:36:52.814 [DEBUG] [Thread-121423] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:36:52.814 [INFO] [Thread-121423] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:36:52.822 [DEBUG] [Thread-121423] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:36:52.822 [DEBUG] [Thread-121423] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:36:52.822 [DEBUG] [Thread-121423] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:36:52.822 [DEBUG] [Thread-121423] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:36:52.822 [DEBUG] [Thread-121423] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:36:52.822 [DEBUG] [Thread-121423] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:36:52.822 [DEBUG] [Thread-121423] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:36:52.822 [DEBUG] [Thread-121423] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:36:52.822 [DEBUG] [Thread-121423] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:36:52.822 [DEBUG] [Thread-121423] [transport.py] [_log()] client lang: <none>
2025-11-03T19:36:52.822 [DEBUG] [Thread-121423] [transport.py] [_log()] server lang: <none>
2025-11-03T19:36:52.822 [DEBUG] [Thread-121423] [transport.py] [_log()] kex follows: False
2025-11-03T19:36:52.822 [DEBUG] [Thread-121423] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:36:52.822 [DEBUG] [Thread-121423] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:36:52.822 [DEBUG] [Thread-121423] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:36:52.822 [DEBUG] [Thread-121423] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:36:52.822 [DEBUG] [Thread-121423] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:36:52.822 [DEBUG] [Thread-121423] [transport.py] [_log()] Compression: none
2025-11-03T19:36:52.822 [DEBUG] [Thread-121423] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:36:52.880 [DEBUG] [Thread-121423] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:36:52.880 [DEBUG] [Thread-121423] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:36:52.880 [DEBUG] [Thread-121423] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:36:52.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:36:52.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:36:52.938 [DEBUG] [Thread-121423] [transport.py] [_log()] userauth is OK
2025-11-03T19:36:52.939 [DEBUG] [Thread-121423] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:36:52.939 [DEBUG] [Thread-121423] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:36:52.939 [DEBUG] [Thread-121423] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:36:52.939 [DEBUG] [Thread-121423] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:36:52.958 [INFO] [Thread-121423] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:36:52.959 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:36:52.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:36:53.809 [DEBUG] [Thread-121423] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:36:53.809 [DEBUG] [Thread-121423] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:36:53.856 [DEBUG] [Thread-121423] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:36:53.856 [DEBUG] [Thread-121423] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:36:53.865 [DEBUG] [Thread-121423] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:36:53.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:36:53.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:36:53.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:36:53.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:36:53.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:36:53.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:36:53.897 [DEBUG] [Thread-121423] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:36:54.280 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:36:58.759 [DEBUG] [Thread-121425 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:36:59.936 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:37:05.003 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:37:05.004 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:37:05.013 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:37:13.812 [DEBUG] [Thread-121426 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:37:23.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:37:23.919 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:37:23.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:37:24.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 36, 54), 41.7, 4.93, 0.0, 26.98, 21.23, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:37:24.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:36:54
2025-11-03T19:37:24.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:37:25.034 [DEBUG] [Thread-121427] [transport.py] [_log()] starting thread (client mode): 0xed36c20
2025-11-03T19:37:25.034 [DEBUG] [Thread-121427] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:37:25.059 [DEBUG] [Thread-121427] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:37:25.059 [INFO] [Thread-121427] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:37:25.061 [DEBUG] [Thread-121427] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:37:25.061 [DEBUG] [Thread-121427] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:37:25.061 [DEBUG] [Thread-121427] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:37:25.061 [DEBUG] [Thread-121427] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:37:25.061 [DEBUG] [Thread-121427] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:37:25.061 [DEBUG] [Thread-121427] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:37:25.061 [DEBUG] [Thread-121427] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:37:25.061 [DEBUG] [Thread-121427] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:37:25.061 [DEBUG] [Thread-121427] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:37:25.061 [DEBUG] [Thread-121427] [transport.py] [_log()] client lang: <none>
2025-11-03T19:37:25.061 [DEBUG] [Thread-121427] [transport.py] [_log()] server lang: <none>
2025-11-03T19:37:25.061 [DEBUG] [Thread-121427] [transport.py] [_log()] kex follows: False
2025-11-03T19:37:25.061 [DEBUG] [Thread-121427] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:37:25.061 [DEBUG] [Thread-121427] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:37:25.061 [DEBUG] [Thread-121427] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:37:25.061 [DEBUG] [Thread-121427] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:37:25.061 [DEBUG] [Thread-121427] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:37:25.061 [DEBUG] [Thread-121427] [transport.py] [_log()] Compression: none
2025-11-03T19:37:25.061 [DEBUG] [Thread-121427] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:37:25.070 [DEBUG] [Thread-121427] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:37:25.070 [DEBUG] [Thread-121427] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:37:25.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:37:25.070 [DEBUG] [Thread-121427] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:37:25.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:37:25.071 [DEBUG] [Thread-121427] [transport.py] [_log()] userauth is OK
2025-11-03T19:37:25.071 [DEBUG] [Thread-121427] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:37:25.071 [DEBUG] [Thread-121427] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:37:25.071 [DEBUG] [Thread-121427] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:37:25.071 [DEBUG] [Thread-121427] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:37:25.084 [INFO] [Thread-121427] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:37:25.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:37:25.729 [DEBUG] [Thread-121427] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:37:25.730 [DEBUG] [Thread-121427] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:37:25.730 [DEBUG] [Thread-121427] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:37:25.771 [DEBUG] [Thread-121427] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:37:25.771 [DEBUG] [Thread-121427] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:37:25.773 [DEBUG] [Thread-121427] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:37:25.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:37:25.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:37:25.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:37:25.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:37:25.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:37:25.790 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:37:25.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:37:25.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:37:25.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:37:25.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.733782 -999.00  +21.20  31.57      9  -11.90 1 1 2 1 1    90    0 32.93 -6.19 ----- 31.6 31.6 298.6 36.0 21.1 -30.4 21.1 -29.3 20.9 -29.1 21.1 -30.1
2025-11-03T19:37:25.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:37:25.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:37:25.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.733782
2025-11-03T19:37:25.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:37:25.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:37:25.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:37:25.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:37:25.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:37:25.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:36:54', tmtdew=41.7, humidity=4.93, cloud=0.0, wind=26.98, temperature=21.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:36:38.765', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:37:25.792 [DEBUG] [Thread-121427] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:37:25.866 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:37:25.877 [DEBUG] [Thread-121430] [transport.py] [_log()] starting thread (client mode): 0xedc70a0
2025-11-03T19:37:25.877 [DEBUG] [Thread-121430] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:37:25.892 [DEBUG] [Thread-121430] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:37:25.892 [INFO] [Thread-121430] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:37:25.899 [DEBUG] [Thread-121430] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:37:25.900 [DEBUG] [Thread-121430] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:37:25.900 [DEBUG] [Thread-121430] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:37:25.900 [DEBUG] [Thread-121430] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:37:25.900 [DEBUG] [Thread-121430] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:37:25.900 [DEBUG] [Thread-121430] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:37:25.900 [DEBUG] [Thread-121430] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:37:25.900 [DEBUG] [Thread-121430] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:37:25.900 [DEBUG] [Thread-121430] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:37:25.900 [DEBUG] [Thread-121430] [transport.py] [_log()] client lang: <none>
2025-11-03T19:37:25.900 [DEBUG] [Thread-121430] [transport.py] [_log()] server lang: <none>
2025-11-03T19:37:25.900 [DEBUG] [Thread-121430] [transport.py] [_log()] kex follows: False
2025-11-03T19:37:25.900 [DEBUG] [Thread-121430] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:37:25.900 [DEBUG] [Thread-121430] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:37:25.900 [DEBUG] [Thread-121430] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:37:25.900 [DEBUG] [Thread-121430] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:37:25.900 [DEBUG] [Thread-121430] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:37:25.900 [DEBUG] [Thread-121430] [transport.py] [_log()] Compression: none
2025-11-03T19:37:25.900 [DEBUG] [Thread-121430] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:37:25.956 [DEBUG] [Thread-121430] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:37:25.956 [DEBUG] [Thread-121430] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:37:25.956 [DEBUG] [Thread-121430] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:37:25.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:37:25.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:37:26.013 [DEBUG] [Thread-121430] [transport.py] [_log()] userauth is OK
2025-11-03T19:37:26.014 [DEBUG] [Thread-121430] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:37:26.014 [DEBUG] [Thread-121430] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:37:26.014 [DEBUG] [Thread-121430] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:37:26.014 [DEBUG] [Thread-121430] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:37:26.027 [INFO] [Thread-121430] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:37:26.028 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:37:26.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:37:26.853 [DEBUG] [Thread-121430] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:37:26.853 [DEBUG] [Thread-121430] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:37:26.904 [DEBUG] [Thread-121430] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:37:26.904 [DEBUG] [Thread-121430] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:37:26.915 [DEBUG] [Thread-121430] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:37:26.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:37:26.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:37:26.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:37:26.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:37:26.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:37:26.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:37:26.959 [DEBUG] [Thread-121430] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:37:28.523 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:37:28.843 [DEBUG] [Thread-121432 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:37:43.890 [DEBUG] [Thread-121433 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:37:49.520 [DEBUG] [Thread-121434 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:37:52.088 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:37:56.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:37:56.980 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:37:56.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:37:57.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 37, 27), 41.58, 4.98, 0.0, 25.04, 21.21, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:37:57.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:37:27
2025-11-03T19:37:57.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:37:58.064 [DEBUG] [Thread-121435] [transport.py] [_log()] starting thread (client mode): 0xedc4a60
2025-11-03T19:37:58.064 [DEBUG] [Thread-121435] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:37:58.086 [DEBUG] [Thread-121435] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:37:58.086 [INFO] [Thread-121435] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:37:58.089 [DEBUG] [Thread-121435] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:37:58.089 [DEBUG] [Thread-121435] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:37:58.089 [DEBUG] [Thread-121435] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:37:58.089 [DEBUG] [Thread-121435] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:37:58.089 [DEBUG] [Thread-121435] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:37:58.089 [DEBUG] [Thread-121435] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:37:58.089 [DEBUG] [Thread-121435] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:37:58.089 [DEBUG] [Thread-121435] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:37:58.089 [DEBUG] [Thread-121435] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:37:58.089 [DEBUG] [Thread-121435] [transport.py] [_log()] client lang: <none>
2025-11-03T19:37:58.090 [DEBUG] [Thread-121435] [transport.py] [_log()] server lang: <none>
2025-11-03T19:37:58.090 [DEBUG] [Thread-121435] [transport.py] [_log()] kex follows: False
2025-11-03T19:37:58.090 [DEBUG] [Thread-121435] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:37:58.090 [DEBUG] [Thread-121435] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:37:58.090 [DEBUG] [Thread-121435] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:37:58.090 [DEBUG] [Thread-121435] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:37:58.090 [DEBUG] [Thread-121435] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:37:58.090 [DEBUG] [Thread-121435] [transport.py] [_log()] Compression: none
2025-11-03T19:37:58.090 [DEBUG] [Thread-121435] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:37:58.108 [DEBUG] [Thread-121435] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:37:58.108 [DEBUG] [Thread-121435] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:37:58.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:37:58.109 [DEBUG] [Thread-121435] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:37:58.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:37:58.111 [DEBUG] [Thread-121435] [transport.py] [_log()] userauth is OK
2025-11-03T19:37:58.112 [DEBUG] [Thread-121435] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:37:58.112 [DEBUG] [Thread-121435] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:37:58.112 [DEBUG] [Thread-121435] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:37:58.112 [DEBUG] [Thread-121435] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:37:58.138 [INFO] [Thread-121435] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:37:58.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:37:58.780 [DEBUG] [Thread-121435] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:37:58.780 [DEBUG] [Thread-121435] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:37:58.781 [DEBUG] [Thread-121435] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:37:58.821 [DEBUG] [Thread-121435] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:37:58.821 [DEBUG] [Thread-121435] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:37:58.824 [DEBUG] [Thread-121435] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:37:58.836 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:37:58.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:37:58.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:37:58.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:37:58.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:37:58.859 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:37:58.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:37:58.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:37:58.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:37:58.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.734129 -999.00  +21.20  27.63      9  -11.80 1 1 1 1 1    82    0 33.17 -6.75 ----- 27.6 27.6 306.2 40.0 21.1 -30.5 21.1 -29.3 20.9 -29.2 21.1 -30.0
2025-11-03T19:37:58.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:37:58.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:37:58.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.734129
2025-11-03T19:37:58.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:37:58.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:37:58.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:37:58.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:37:58.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:37:58.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:37:27', tmtdew=41.58, humidity=4.98, cloud=0.0, wind=25.04, temperature=21.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:37:08.746', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:37:58.862 [DEBUG] [Thread-121435] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:37:58.929 [DEBUG] [Thread-121438 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:37:58.956 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:37:58.967 [DEBUG] [Thread-121439] [transport.py] [_log()] starting thread (client mode): 0x141d9630
2025-11-03T19:37:58.967 [DEBUG] [Thread-121439] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:37:58.983 [DEBUG] [Thread-121439] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:37:58.984 [INFO] [Thread-121439] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:37:58.993 [DEBUG] [Thread-121439] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:37:58.993 [DEBUG] [Thread-121439] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:37:58.993 [DEBUG] [Thread-121439] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:37:58.993 [DEBUG] [Thread-121439] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:37:58.993 [DEBUG] [Thread-121439] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:37:58.993 [DEBUG] [Thread-121439] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:37:58.993 [DEBUG] [Thread-121439] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:37:58.994 [DEBUG] [Thread-121439] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:37:58.994 [DEBUG] [Thread-121439] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:37:58.994 [DEBUG] [Thread-121439] [transport.py] [_log()] client lang: <none>
2025-11-03T19:37:58.994 [DEBUG] [Thread-121439] [transport.py] [_log()] server lang: <none>
2025-11-03T19:37:58.994 [DEBUG] [Thread-121439] [transport.py] [_log()] kex follows: False
2025-11-03T19:37:58.994 [DEBUG] [Thread-121439] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:37:58.994 [DEBUG] [Thread-121439] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:37:58.994 [DEBUG] [Thread-121439] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:37:58.994 [DEBUG] [Thread-121439] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:37:58.994 [DEBUG] [Thread-121439] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:37:58.994 [DEBUG] [Thread-121439] [transport.py] [_log()] Compression: none
2025-11-03T19:37:58.994 [DEBUG] [Thread-121439] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:37:59.051 [DEBUG] [Thread-121439] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:37:59.052 [DEBUG] [Thread-121439] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:37:59.052 [DEBUG] [Thread-121439] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:37:59.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:37:59.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:37:59.110 [DEBUG] [Thread-121439] [transport.py] [_log()] userauth is OK
2025-11-03T19:37:59.110 [DEBUG] [Thread-121439] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:37:59.110 [DEBUG] [Thread-121439] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:37:59.111 [DEBUG] [Thread-121439] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:37:59.111 [DEBUG] [Thread-121439] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:37:59.130 [INFO] [Thread-121439] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:37:59.131 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:37:59.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:37:59.966 [DEBUG] [Thread-121439] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:37:59.966 [DEBUG] [Thread-121439] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:38:00.016 [DEBUG] [Thread-121439] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:38:00.016 [DEBUG] [Thread-121439] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:38:00.024 [DEBUG] [Thread-121439] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:38:00.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:38:00.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:38:00.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:38:00.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:38:00.050 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:38:00.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:38:00.058 [DEBUG] [Thread-121439] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:38:10.785 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:38:10.787 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:38:13.964 [DEBUG] [Thread-121441 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:38:28.996 [DEBUG] [Thread-121442 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:38:30.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:38:30.081 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:38:30.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:38:30.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 37, 59), 41.49, 5.02, 0.0, 22.0, 21.2, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:38:30.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:37:59
2025-11-03T19:38:30.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:38:31.125 [DEBUG] [Thread-121443] [transport.py] [_log()] starting thread (client mode): 0x11762ec0
2025-11-03T19:38:31.134 [DEBUG] [Thread-121443] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:38:31.145 [DEBUG] [Thread-121443] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:38:31.146 [INFO] [Thread-121443] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:38:31.147 [DEBUG] [Thread-121443] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:38:31.148 [DEBUG] [Thread-121443] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:38:31.148 [DEBUG] [Thread-121443] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:38:31.148 [DEBUG] [Thread-121443] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:38:31.148 [DEBUG] [Thread-121443] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:38:31.148 [DEBUG] [Thread-121443] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:38:31.148 [DEBUG] [Thread-121443] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:38:31.148 [DEBUG] [Thread-121443] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:38:31.148 [DEBUG] [Thread-121443] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:38:31.148 [DEBUG] [Thread-121443] [transport.py] [_log()] client lang: <none>
2025-11-03T19:38:31.148 [DEBUG] [Thread-121443] [transport.py] [_log()] server lang: <none>
2025-11-03T19:38:31.148 [DEBUG] [Thread-121443] [transport.py] [_log()] kex follows: False
2025-11-03T19:38:31.148 [DEBUG] [Thread-121443] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:38:31.148 [DEBUG] [Thread-121443] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:38:31.149 [DEBUG] [Thread-121443] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:38:31.149 [DEBUG] [Thread-121443] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:38:31.149 [DEBUG] [Thread-121443] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:38:31.149 [DEBUG] [Thread-121443] [transport.py] [_log()] Compression: none
2025-11-03T19:38:31.149 [DEBUG] [Thread-121443] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:38:31.158 [DEBUG] [Thread-121443] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:38:31.159 [DEBUG] [Thread-121443] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:38:31.160 [DEBUG] [Thread-121443] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:38:31.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:38:31.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:38:31.163 [DEBUG] [Thread-121443] [transport.py] [_log()] userauth is OK
2025-11-03T19:38:31.163 [DEBUG] [Thread-121443] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:38:31.163 [DEBUG] [Thread-121443] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:38:31.163 [DEBUG] [Thread-121443] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:38:31.163 [DEBUG] [Thread-121443] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:38:31.183 [INFO] [Thread-121443] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:38:31.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:38:31.834 [DEBUG] [Thread-121443] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:38:31.834 [DEBUG] [Thread-121443] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:38:31.834 [DEBUG] [Thread-121443] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:38:31.875 [DEBUG] [Thread-121443] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:38:31.875 [DEBUG] [Thread-121443] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:38:31.878 [DEBUG] [Thread-121443] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:38:31.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:38:31.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:38:31.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:38:31.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:38:31.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:38:31.896 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:38:31.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:38:31.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:38:31.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:38:31.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.734476 -999.00  +21.20  28.95      9  -11.80 1 1 1 1 1    75    0 33.14 -6.60 ----- 28.9 28.9 311.6 35.6 21.1 -30.2 21.1 -29.4 20.9 -29.2 21.1 -29.8
2025-11-03T19:38:31.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:38:31.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:38:31.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.734476
2025-11-03T19:38:31.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:38:31.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:38:31.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:38:31.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:38:31.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:38:31.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:37:59', tmtdew=41.49, humidity=5.02, cloud=0.0, wind=22.0, temperature=21.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:37:38.726', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:38:31.897 [DEBUG] [Thread-121443] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:38:31.969 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:38:31.981 [DEBUG] [Thread-121446] [transport.py] [_log()] starting thread (client mode): 0x117602b0
2025-11-03T19:38:31.981 [DEBUG] [Thread-121446] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:38:32.000 [DEBUG] [Thread-121446] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:38:32.000 [INFO] [Thread-121446] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:38:32.007 [DEBUG] [Thread-121446] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:38:32.007 [DEBUG] [Thread-121446] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:38:32.007 [DEBUG] [Thread-121446] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:38:32.007 [DEBUG] [Thread-121446] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:38:32.007 [DEBUG] [Thread-121446] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:38:32.007 [DEBUG] [Thread-121446] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:38:32.007 [DEBUG] [Thread-121446] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:38:32.007 [DEBUG] [Thread-121446] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:38:32.007 [DEBUG] [Thread-121446] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:38:32.007 [DEBUG] [Thread-121446] [transport.py] [_log()] client lang: <none>
2025-11-03T19:38:32.007 [DEBUG] [Thread-121446] [transport.py] [_log()] server lang: <none>
2025-11-03T19:38:32.007 [DEBUG] [Thread-121446] [transport.py] [_log()] kex follows: False
2025-11-03T19:38:32.007 [DEBUG] [Thread-121446] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:38:32.007 [DEBUG] [Thread-121446] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:38:32.007 [DEBUG] [Thread-121446] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:38:32.007 [DEBUG] [Thread-121446] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:38:32.007 [DEBUG] [Thread-121446] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:38:32.007 [DEBUG] [Thread-121446] [transport.py] [_log()] Compression: none
2025-11-03T19:38:32.007 [DEBUG] [Thread-121446] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:38:32.064 [DEBUG] [Thread-121446] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:38:32.064 [DEBUG] [Thread-121446] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:38:32.064 [DEBUG] [Thread-121446] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:38:32.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:38:32.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:38:32.121 [DEBUG] [Thread-121446] [transport.py] [_log()] userauth is OK
2025-11-03T19:38:32.121 [DEBUG] [Thread-121446] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:38:32.121 [DEBUG] [Thread-121446] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:38:32.121 [DEBUG] [Thread-121446] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:38:32.121 [DEBUG] [Thread-121446] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:38:32.135 [INFO] [Thread-121446] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:38:32.135 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:38:32.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:38:32.975 [DEBUG] [Thread-121446] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:38:32.975 [DEBUG] [Thread-121446] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:38:33.022 [DEBUG] [Thread-121446] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:38:33.022 [DEBUG] [Thread-121446] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:38:33.033 [DEBUG] [Thread-121446] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:38:33.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:38:33.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:38:33.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:38:33.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:38:33.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:38:33.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:38:33.065 [DEBUG] [Thread-121446] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:38:44.023 [DEBUG] [Thread-121448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:38:49.582 [DEBUG] [Thread-121449 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:38:59.066 [DEBUG] [Thread-121450 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:39:03.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:39:03.088 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:39:03.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:39:03.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 38, 32), 41.41, 5.05, 0.0, 23.13, 21.18, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:39:03.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:38:32
2025-11-03T19:39:03.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:39:04.097 [DEBUG] [Thread-121451] [transport.py] [_log()] starting thread (client mode): 0xed88dc0
2025-11-03T19:39:04.097 [DEBUG] [Thread-121451] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:39:04.118 [DEBUG] [Thread-121451] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:39:04.118 [INFO] [Thread-121451] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:39:04.121 [DEBUG] [Thread-121451] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:39:04.122 [DEBUG] [Thread-121451] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:39:04.122 [DEBUG] [Thread-121451] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:39:04.122 [DEBUG] [Thread-121451] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:39:04.122 [DEBUG] [Thread-121451] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:39:04.122 [DEBUG] [Thread-121451] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:39:04.122 [DEBUG] [Thread-121451] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:39:04.122 [DEBUG] [Thread-121451] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:39:04.122 [DEBUG] [Thread-121451] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:39:04.122 [DEBUG] [Thread-121451] [transport.py] [_log()] client lang: <none>
2025-11-03T19:39:04.122 [DEBUG] [Thread-121451] [transport.py] [_log()] server lang: <none>
2025-11-03T19:39:04.122 [DEBUG] [Thread-121451] [transport.py] [_log()] kex follows: False
2025-11-03T19:39:04.122 [DEBUG] [Thread-121451] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:39:04.122 [DEBUG] [Thread-121451] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:39:04.122 [DEBUG] [Thread-121451] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:39:04.122 [DEBUG] [Thread-121451] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:39:04.122 [DEBUG] [Thread-121451] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:39:04.122 [DEBUG] [Thread-121451] [transport.py] [_log()] Compression: none
2025-11-03T19:39:04.122 [DEBUG] [Thread-121451] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:39:04.140 [DEBUG] [Thread-121451] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:39:04.141 [DEBUG] [Thread-121451] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:39:04.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:39:04.141 [DEBUG] [Thread-121451] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:39:04.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:39:04.143 [DEBUG] [Thread-121451] [transport.py] [_log()] userauth is OK
2025-11-03T19:39:04.143 [DEBUG] [Thread-121451] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:39:04.143 [DEBUG] [Thread-121451] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:39:04.143 [DEBUG] [Thread-121451] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:39:04.143 [DEBUG] [Thread-121451] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:39:04.163 [INFO] [Thread-121451] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:39:04.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:39:04.799 [DEBUG] [Thread-121451] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:39:04.800 [DEBUG] [Thread-121451] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:39:04.800 [DEBUG] [Thread-121451] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:39:04.840 [DEBUG] [Thread-121451] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:39:04.841 [DEBUG] [Thread-121451] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:39:04.843 [DEBUG] [Thread-121451] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:39:04.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:39:04.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:39:04.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:39:04.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:39:04.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:39:04.868 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:39:04.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:39:04.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:39:04.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:39:04.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.734824 -999.00  +21.20  25.98      9  -11.80 1 1 1 1 1    69    0 33.02 -6.84 ----- 26.0 26.0 312.8 35.9 21.1 -30.4 21.1 -29.4 20.8 -29.1 21.0 -29.9
2025-11-03T19:39:04.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:39:04.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:39:04.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.734824
2025-11-03T19:39:04.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:39:04.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:39:04.871 [DEBUG] [Thread-121451] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:39:04.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:39:04.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:39:04.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:39:04.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:38:32', tmtdew=41.41, humidity=5.05, cloud=0.0, wind=23.13, temperature=21.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:38:08.794', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:39:04.957 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:39:04.967 [DEBUG] [Thread-121454] [transport.py] [_log()] starting thread (client mode): 0xedc7e20
2025-11-03T19:39:04.967 [DEBUG] [Thread-121454] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:39:04.982 [DEBUG] [Thread-121454] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:39:04.982 [INFO] [Thread-121454] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:39:04.989 [DEBUG] [Thread-121454] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:39:04.990 [DEBUG] [Thread-121454] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:39:04.990 [DEBUG] [Thread-121454] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:39:04.990 [DEBUG] [Thread-121454] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:39:04.990 [DEBUG] [Thread-121454] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:39:04.990 [DEBUG] [Thread-121454] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:39:04.990 [DEBUG] [Thread-121454] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:39:04.990 [DEBUG] [Thread-121454] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:39:04.990 [DEBUG] [Thread-121454] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:39:04.990 [DEBUG] [Thread-121454] [transport.py] [_log()] client lang: <none>
2025-11-03T19:39:04.990 [DEBUG] [Thread-121454] [transport.py] [_log()] server lang: <none>
2025-11-03T19:39:04.990 [DEBUG] [Thread-121454] [transport.py] [_log()] kex follows: False
2025-11-03T19:39:04.990 [DEBUG] [Thread-121454] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:39:04.990 [DEBUG] [Thread-121454] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:39:04.990 [DEBUG] [Thread-121454] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:39:04.990 [DEBUG] [Thread-121454] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:39:04.990 [DEBUG] [Thread-121454] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:39:04.990 [DEBUG] [Thread-121454] [transport.py] [_log()] Compression: none
2025-11-03T19:39:04.990 [DEBUG] [Thread-121454] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:39:05.052 [DEBUG] [Thread-121454] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:39:05.052 [DEBUG] [Thread-121454] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:39:05.052 [DEBUG] [Thread-121454] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:39:05.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:39:05.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:39:05.109 [DEBUG] [Thread-121454] [transport.py] [_log()] userauth is OK
2025-11-03T19:39:05.109 [DEBUG] [Thread-121454] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:39:05.109 [DEBUG] [Thread-121454] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:39:05.109 [DEBUG] [Thread-121454] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:39:05.109 [DEBUG] [Thread-121454] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:39:05.122 [INFO] [Thread-121454] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:39:05.123 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:39:05.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:39:05.932 [DEBUG] [Thread-121454] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:39:05.932 [DEBUG] [Thread-121454] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:39:05.980 [DEBUG] [Thread-121454] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:39:05.980 [DEBUG] [Thread-121454] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:39:05.988 [DEBUG] [Thread-121454] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:39:05.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:39:05.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:39:06.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:39:06.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:39:06.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:39:06.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:39:06.020 [DEBUG] [Thread-121454] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:39:14.109 [DEBUG] [Thread-121456 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:39:15.868 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:39:15.869 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:39:20.240 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:39:26.338 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:39:29.166 [DEBUG] [Thread-121457 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:39:36.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:39:36.019 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:39:36.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:39:36.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 39, 4), 41.56, 4.98, 0.0, 23.29, 21.16, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:39:36.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:39:04
2025-11-03T19:39:36.696 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:39:36.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:39:36.985 [DEBUG] [Thread-121458] [transport.py] [_log()] starting thread (client mode): 0xedc4e50
2025-11-03T19:39:36.985 [DEBUG] [Thread-121458] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:39:37.004 [DEBUG] [Thread-121458] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:39:37.004 [INFO] [Thread-121458] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:39:37.007 [DEBUG] [Thread-121458] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:39:37.007 [DEBUG] [Thread-121458] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:39:37.007 [DEBUG] [Thread-121458] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:39:37.007 [DEBUG] [Thread-121458] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:39:37.007 [DEBUG] [Thread-121458] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:39:37.007 [DEBUG] [Thread-121458] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:39:37.007 [DEBUG] [Thread-121458] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:39:37.007 [DEBUG] [Thread-121458] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:39:37.007 [DEBUG] [Thread-121458] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:39:37.007 [DEBUG] [Thread-121458] [transport.py] [_log()] client lang: <none>
2025-11-03T19:39:37.007 [DEBUG] [Thread-121458] [transport.py] [_log()] server lang: <none>
2025-11-03T19:39:37.007 [DEBUG] [Thread-121458] [transport.py] [_log()] kex follows: False
2025-11-03T19:39:37.007 [DEBUG] [Thread-121458] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:39:37.008 [DEBUG] [Thread-121458] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:39:37.008 [DEBUG] [Thread-121458] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:39:37.008 [DEBUG] [Thread-121458] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:39:37.008 [DEBUG] [Thread-121458] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:39:37.008 [DEBUG] [Thread-121458] [transport.py] [_log()] Compression: none
2025-11-03T19:39:37.008 [DEBUG] [Thread-121458] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:39:37.025 [DEBUG] [Thread-121458] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:39:37.026 [DEBUG] [Thread-121458] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:39:37.026 [DEBUG] [Thread-121458] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:39:37.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:39:37.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:39:37.069 [DEBUG] [Thread-121458] [transport.py] [_log()] userauth is OK
2025-11-03T19:39:37.070 [DEBUG] [Thread-121458] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:39:37.070 [DEBUG] [Thread-121458] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:39:37.070 [DEBUG] [Thread-121458] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:39:37.070 [DEBUG] [Thread-121458] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:39:37.094 [INFO] [Thread-121458] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:39:37.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:39:37.759 [DEBUG] [Thread-121458] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:39:37.759 [DEBUG] [Thread-121458] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:39:37.759 [DEBUG] [Thread-121458] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:39:37.799 [DEBUG] [Thread-121458] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:39:37.799 [DEBUG] [Thread-121458] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:39:37.802 [DEBUG] [Thread-121458] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:39:37.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:39:37.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:39:37.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:39:37.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:39:37.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:39:37.820 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:39:37.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:39:37.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:39:37.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:39:37.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.735171 -999.00  +21.20  28.66      9  -11.80 1 1 1 1 1    63    0 32.83 -6.71 ----- 28.7 28.7 313.2 36.0 21.1 -30.5 21.1 -29.3 20.8 -29.1 21.1 -29.9
2025-11-03T19:39:37.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:39:37.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:39:37.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.735171
2025-11-03T19:39:37.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:39:37.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:39:37.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:39:37.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:39:37.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:39:37.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:39:04', tmtdew=41.56, humidity=4.98, cloud=0.0, wind=23.29, temperature=21.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:38:38.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:39:37.821 [DEBUG] [Thread-121458] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:39:37.895 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:39:37.906 [DEBUG] [Thread-121461] [transport.py] [_log()] starting thread (client mode): 0xedc6ef0
2025-11-03T19:39:37.906 [DEBUG] [Thread-121461] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:39:37.922 [DEBUG] [Thread-121461] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:39:37.922 [INFO] [Thread-121461] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:39:37.930 [DEBUG] [Thread-121461] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:39:37.930 [DEBUG] [Thread-121461] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:39:37.930 [DEBUG] [Thread-121461] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:39:37.930 [DEBUG] [Thread-121461] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:39:37.930 [DEBUG] [Thread-121461] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:39:37.930 [DEBUG] [Thread-121461] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:39:37.930 [DEBUG] [Thread-121461] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:39:37.930 [DEBUG] [Thread-121461] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:39:37.930 [DEBUG] [Thread-121461] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:39:37.930 [DEBUG] [Thread-121461] [transport.py] [_log()] client lang: <none>
2025-11-03T19:39:37.930 [DEBUG] [Thread-121461] [transport.py] [_log()] server lang: <none>
2025-11-03T19:39:37.930 [DEBUG] [Thread-121461] [transport.py] [_log()] kex follows: False
2025-11-03T19:39:37.930 [DEBUG] [Thread-121461] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:39:37.930 [DEBUG] [Thread-121461] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:39:37.930 [DEBUG] [Thread-121461] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:39:37.930 [DEBUG] [Thread-121461] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:39:37.939 [DEBUG] [Thread-121461] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:39:37.939 [DEBUG] [Thread-121461] [transport.py] [_log()] Compression: none
2025-11-03T19:39:37.939 [DEBUG] [Thread-121461] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:39:37.988 [DEBUG] [Thread-121461] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:39:37.988 [DEBUG] [Thread-121461] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:39:37.988 [DEBUG] [Thread-121461] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:39:37.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:39:37.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:39:38.045 [DEBUG] [Thread-121461] [transport.py] [_log()] userauth is OK
2025-11-03T19:39:38.045 [DEBUG] [Thread-121461] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:39:38.045 [DEBUG] [Thread-121461] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:39:38.045 [DEBUG] [Thread-121461] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:39:38.045 [DEBUG] [Thread-121461] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:39:38.059 [INFO] [Thread-121461] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:39:38.060 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:39:38.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:39:38.897 [DEBUG] [Thread-121461] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:39:38.898 [DEBUG] [Thread-121461] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:39:38.945 [DEBUG] [Thread-121461] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:39:38.945 [DEBUG] [Thread-121461] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:39:38.954 [DEBUG] [Thread-121461] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:39:38.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:39:38.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:39:38.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:39:38.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:39:38.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:39:38.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:39:38.986 [DEBUG] [Thread-121461] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:39:44.204 [DEBUG] [Thread-121463 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:39:46.123 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:39:49.952 [DEBUG] [Thread-121464 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:39:56.761 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:39:59.253 [DEBUG] [Thread-121465 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:40:02.943 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:40:09.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:40:09.008 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:40:09.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:40:09.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 39, 36), 41.21, 5.05, 0.0, 27.08, 21.13, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:40:09.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:39:36
2025-11-03T19:40:09.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:40:10.017 [DEBUG] [Thread-121466] [transport.py] [_log()] starting thread (client mode): 0x141db190
2025-11-03T19:40:10.017 [DEBUG] [Thread-121466] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:40:10.037 [DEBUG] [Thread-121466] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:40:10.037 [INFO] [Thread-121466] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:40:10.040 [DEBUG] [Thread-121466] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:40:10.040 [DEBUG] [Thread-121466] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:40:10.040 [DEBUG] [Thread-121466] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:40:10.040 [DEBUG] [Thread-121466] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:40:10.040 [DEBUG] [Thread-121466] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:40:10.040 [DEBUG] [Thread-121466] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:40:10.040 [DEBUG] [Thread-121466] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:40:10.040 [DEBUG] [Thread-121466] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:40:10.040 [DEBUG] [Thread-121466] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:40:10.040 [DEBUG] [Thread-121466] [transport.py] [_log()] client lang: <none>
2025-11-03T19:40:10.040 [DEBUG] [Thread-121466] [transport.py] [_log()] server lang: <none>
2025-11-03T19:40:10.040 [DEBUG] [Thread-121466] [transport.py] [_log()] kex follows: False
2025-11-03T19:40:10.040 [DEBUG] [Thread-121466] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:40:10.040 [DEBUG] [Thread-121466] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:40:10.040 [DEBUG] [Thread-121466] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:40:10.040 [DEBUG] [Thread-121466] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:40:10.040 [DEBUG] [Thread-121466] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:40:10.040 [DEBUG] [Thread-121466] [transport.py] [_log()] Compression: none
2025-11-03T19:40:10.040 [DEBUG] [Thread-121466] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:40:10.055 [DEBUG] [Thread-121466] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:40:10.055 [DEBUG] [Thread-121466] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:40:10.055 [DEBUG] [Thread-121466] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:40:10.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:40:10.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:40:10.056 [DEBUG] [Thread-121466] [transport.py] [_log()] userauth is OK
2025-11-03T19:40:10.056 [DEBUG] [Thread-121466] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:40:10.056 [DEBUG] [Thread-121466] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:40:10.056 [DEBUG] [Thread-121466] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:40:10.056 [DEBUG] [Thread-121466] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:40:10.065 [INFO] [Thread-121466] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:40:10.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:40:11.370 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:40:13.881 [DEBUG] [Thread-121466] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:40:13.881 [DEBUG] [Thread-121466] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:40:13.881 [DEBUG] [Thread-121466] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:40:13.921 [DEBUG] [Thread-121466] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:40:13.922 [DEBUG] [Thread-121466] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:40:13.924 [DEBUG] [Thread-121466] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:40:13.937 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:40:13.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:40:13.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:40:13.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:40:13.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:40:13.951 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:40:13.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:40:13.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:40:13.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:40:13.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.735865 -999.00  +21.00  21.82      9  -11.80 1 1 1 1 1    52    0 33.43 -7.90 ----- 21.8 21.8 308.2 30.1 21.1 -30.1 21.0 -29.2 20.8 -29.2 21.1 -29.9
2025-11-03T19:40:13.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:40:13.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:40:13.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.735865
2025-11-03T19:40:13.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:40:13.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:40:13.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:40:13.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:40:13.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:40:13.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:39:36', tmtdew=41.21, humidity=5.05, cloud=0.0, wind=27.08, temperature=21.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:39:38.736', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:40:13.952 [DEBUG] [Thread-121466] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:40:14.024 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:40:14.035 [DEBUG] [Thread-121469] [transport.py] [_log()] starting thread (client mode): 0xeda2680
2025-11-03T19:40:14.036 [DEBUG] [Thread-121469] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:40:14.055 [DEBUG] [Thread-121469] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:40:14.056 [INFO] [Thread-121469] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:40:14.063 [DEBUG] [Thread-121469] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:40:14.063 [DEBUG] [Thread-121469] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:40:14.063 [DEBUG] [Thread-121469] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:40:14.063 [DEBUG] [Thread-121469] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:40:14.063 [DEBUG] [Thread-121469] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:40:14.063 [DEBUG] [Thread-121469] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:40:14.063 [DEBUG] [Thread-121469] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:40:14.063 [DEBUG] [Thread-121469] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:40:14.063 [DEBUG] [Thread-121469] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:40:14.063 [DEBUG] [Thread-121469] [transport.py] [_log()] client lang: <none>
2025-11-03T19:40:14.063 [DEBUG] [Thread-121469] [transport.py] [_log()] server lang: <none>
2025-11-03T19:40:14.063 [DEBUG] [Thread-121469] [transport.py] [_log()] kex follows: False
2025-11-03T19:40:14.063 [DEBUG] [Thread-121469] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:40:14.063 [DEBUG] [Thread-121469] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:40:14.063 [DEBUG] [Thread-121469] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:40:14.063 [DEBUG] [Thread-121469] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:40:14.063 [DEBUG] [Thread-121469] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:40:14.063 [DEBUG] [Thread-121469] [transport.py] [_log()] Compression: none
2025-11-03T19:40:14.063 [DEBUG] [Thread-121469] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:40:14.119 [DEBUG] [Thread-121469] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:40:14.119 [DEBUG] [Thread-121469] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:40:14.120 [DEBUG] [Thread-121469] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:40:14.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:40:14.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:40:14.176 [DEBUG] [Thread-121469] [transport.py] [_log()] userauth is OK
2025-11-03T19:40:14.176 [DEBUG] [Thread-121469] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:40:14.176 [DEBUG] [Thread-121469] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:40:14.177 [DEBUG] [Thread-121469] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:40:14.177 [DEBUG] [Thread-121469] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:40:14.190 [INFO] [Thread-121469] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:40:14.191 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:40:14.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:40:14.286 [DEBUG] [Thread-121471 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:40:15.016 [DEBUG] [Thread-121469] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:40:15.016 [DEBUG] [Thread-121469] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:40:15.064 [DEBUG] [Thread-121469] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:40:15.064 [DEBUG] [Thread-121469] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:40:15.073 [DEBUG] [Thread-121469] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:40:15.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:40:15.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:40:15.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:40:15.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:40:15.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:40:15.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:40:15.111 [DEBUG] [Thread-121469] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:40:18.794 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:40:21.325 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:40:21.326 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:40:29.296 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:40:29.336 [DEBUG] [Thread-121472 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:40:35.432 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:40:42.887 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:40:44.366 [DEBUG] [Thread-121473 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:40:45.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:40:45.132 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:40:45.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:40:45.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 40, 41), 41.19, 5.07, 0.0, 26.15, 21.01, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:40:45.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:40:41
2025-11-03T19:40:46.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:40:46.203 [DEBUG] [Thread-121474] [transport.py] [_log()] starting thread (client mode): 0xeda31c0
2025-11-03T19:40:46.203 [DEBUG] [Thread-121474] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:40:46.224 [DEBUG] [Thread-121474] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:40:46.224 [INFO] [Thread-121474] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:40:46.227 [DEBUG] [Thread-121474] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:40:46.227 [DEBUG] [Thread-121474] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:40:46.227 [DEBUG] [Thread-121474] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:40:46.227 [DEBUG] [Thread-121474] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:40:46.227 [DEBUG] [Thread-121474] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:40:46.227 [DEBUG] [Thread-121474] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:40:46.227 [DEBUG] [Thread-121474] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:40:46.227 [DEBUG] [Thread-121474] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:40:46.227 [DEBUG] [Thread-121474] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:40:46.227 [DEBUG] [Thread-121474] [transport.py] [_log()] client lang: <none>
2025-11-03T19:40:46.227 [DEBUG] [Thread-121474] [transport.py] [_log()] server lang: <none>
2025-11-03T19:40:46.227 [DEBUG] [Thread-121474] [transport.py] [_log()] kex follows: False
2025-11-03T19:40:46.227 [DEBUG] [Thread-121474] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:40:46.227 [DEBUG] [Thread-121474] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:40:46.227 [DEBUG] [Thread-121474] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:40:46.227 [DEBUG] [Thread-121474] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:40:46.227 [DEBUG] [Thread-121474] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:40:46.227 [DEBUG] [Thread-121474] [transport.py] [_log()] Compression: none
2025-11-03T19:40:46.227 [DEBUG] [Thread-121474] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:40:46.247 [DEBUG] [Thread-121474] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:40:46.248 [DEBUG] [Thread-121474] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:40:46.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:40:46.249 [DEBUG] [Thread-121474] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:40:46.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:40:46.251 [DEBUG] [Thread-121474] [transport.py] [_log()] userauth is OK
2025-11-03T19:40:46.251 [DEBUG] [Thread-121474] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:40:46.251 [DEBUG] [Thread-121474] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:40:46.251 [DEBUG] [Thread-121474] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:40:46.251 [DEBUG] [Thread-121474] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:40:46.274 [INFO] [Thread-121474] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:40:46.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:40:47.083 [DEBUG] [Thread-121474] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:40:47.083 [DEBUG] [Thread-121474] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:40:47.083 [DEBUG] [Thread-121474] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:40:47.124 [DEBUG] [Thread-121474] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:40:47.124 [DEBUG] [Thread-121474] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:40:47.127 [DEBUG] [Thread-121474] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:40:47.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:40:47.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:40:47.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:40:47.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:40:47.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:40:47.145 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:40:47.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:40:47.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:40:47.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:40:47.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.736212 -999.00  +21.00  23.59      9  -11.80 1 1 1 1 1    48    0 32.78 -8.51 ----- 23.6 23.6 313.6 34.8 21.0 -30.2 21.0 -29.3 20.8 -29.2 21.0 -29.8
2025-11-03T19:40:47.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:40:47.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:40:47.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.736212
2025-11-03T19:40:47.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:40:47.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:40:47.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:40:47.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:40:47.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:40:47.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:40:41', tmtdew=41.19, humidity=5.07, cloud=0.0, wind=26.15, temperature=21.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:40:08.717', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:40:47.146 [DEBUG] [Thread-121474] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:40:47.218 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:40:47.230 [DEBUG] [Thread-121477] [transport.py] [_log()] starting thread (client mode): 0x11799030
2025-11-03T19:40:47.230 [DEBUG] [Thread-121477] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:40:47.245 [DEBUG] [Thread-121477] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:40:47.245 [INFO] [Thread-121477] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:40:47.253 [DEBUG] [Thread-121477] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:40:47.253 [DEBUG] [Thread-121477] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:40:47.253 [DEBUG] [Thread-121477] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:40:47.253 [DEBUG] [Thread-121477] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:40:47.253 [DEBUG] [Thread-121477] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:40:47.253 [DEBUG] [Thread-121477] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:40:47.253 [DEBUG] [Thread-121477] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:40:47.253 [DEBUG] [Thread-121477] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:40:47.253 [DEBUG] [Thread-121477] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:40:47.253 [DEBUG] [Thread-121477] [transport.py] [_log()] client lang: <none>
2025-11-03T19:40:47.253 [DEBUG] [Thread-121477] [transport.py] [_log()] server lang: <none>
2025-11-03T19:40:47.253 [DEBUG] [Thread-121477] [transport.py] [_log()] kex follows: False
2025-11-03T19:40:47.253 [DEBUG] [Thread-121477] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:40:47.253 [DEBUG] [Thread-121477] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:40:47.253 [DEBUG] [Thread-121477] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:40:47.253 [DEBUG] [Thread-121477] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:40:47.253 [DEBUG] [Thread-121477] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:40:47.253 [DEBUG] [Thread-121477] [transport.py] [_log()] Compression: none
2025-11-03T19:40:47.253 [DEBUG] [Thread-121477] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:40:47.311 [DEBUG] [Thread-121477] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:40:47.312 [DEBUG] [Thread-121477] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:40:47.312 [DEBUG] [Thread-121477] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:40:47.312 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:40:47.312 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:40:47.368 [DEBUG] [Thread-121477] [transport.py] [_log()] userauth is OK
2025-11-03T19:40:47.368 [DEBUG] [Thread-121477] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:40:47.368 [DEBUG] [Thread-121477] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:40:47.368 [DEBUG] [Thread-121477] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:40:47.368 [DEBUG] [Thread-121477] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:40:47.383 [INFO] [Thread-121477] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:40:47.383 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:40:47.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:40:48.234 [DEBUG] [Thread-121477] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:40:48.235 [DEBUG] [Thread-121477] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:40:48.283 [DEBUG] [Thread-121477] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:40:48.284 [DEBUG] [Thread-121477] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:40:48.293 [DEBUG] [Thread-121477] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:40:48.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:40:48.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:40:48.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:40:48.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:40:48.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:40:48.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:40:48.330 [DEBUG] [Thread-121477] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:40:50.228 [DEBUG] [Thread-121479 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:40:50.284 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:40:57.860 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:40:59.399 [DEBUG] [Thread-121480 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:41:03.975 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:41:11.476 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:41:14.451 [DEBUG] [Thread-121481 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:41:18.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:41:18.323 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:41:18.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:41:18.960 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:41:19.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 41, 13), 41.12, 5.1, 0.0, 25.78, 21.03, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:41:19.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:41:13
2025-11-03T19:41:19.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:41:19.433 [DEBUG] [Thread-121482] [transport.py] [_log()] starting thread (client mode): 0xedc4640
2025-11-03T19:41:19.433 [DEBUG] [Thread-121482] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:41:19.453 [DEBUG] [Thread-121482] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:41:19.453 [INFO] [Thread-121482] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:41:19.456 [DEBUG] [Thread-121482] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:41:19.456 [DEBUG] [Thread-121482] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:41:19.456 [DEBUG] [Thread-121482] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:41:19.456 [DEBUG] [Thread-121482] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:41:19.456 [DEBUG] [Thread-121482] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:41:19.456 [DEBUG] [Thread-121482] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:41:19.456 [DEBUG] [Thread-121482] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:41:19.456 [DEBUG] [Thread-121482] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:41:19.456 [DEBUG] [Thread-121482] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:41:19.456 [DEBUG] [Thread-121482] [transport.py] [_log()] client lang: <none>
2025-11-03T19:41:19.456 [DEBUG] [Thread-121482] [transport.py] [_log()] server lang: <none>
2025-11-03T19:41:19.456 [DEBUG] [Thread-121482] [transport.py] [_log()] kex follows: False
2025-11-03T19:41:19.456 [DEBUG] [Thread-121482] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:41:19.456 [DEBUG] [Thread-121482] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:41:19.457 [DEBUG] [Thread-121482] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:41:19.457 [DEBUG] [Thread-121482] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:41:19.457 [DEBUG] [Thread-121482] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:41:19.457 [DEBUG] [Thread-121482] [transport.py] [_log()] Compression: none
2025-11-03T19:41:19.457 [DEBUG] [Thread-121482] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:41:19.472 [DEBUG] [Thread-121482] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:41:19.472 [DEBUG] [Thread-121482] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:41:19.472 [DEBUG] [Thread-121482] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:41:19.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:41:19.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:41:19.473 [DEBUG] [Thread-121482] [transport.py] [_log()] userauth is OK
2025-11-03T19:41:19.473 [DEBUG] [Thread-121482] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:41:19.473 [DEBUG] [Thread-121482] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:41:19.473 [DEBUG] [Thread-121482] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:41:19.473 [DEBUG] [Thread-121482] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:41:19.488 [INFO] [Thread-121482] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:41:19.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:41:20.109 [DEBUG] [Thread-121482] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:41:20.109 [DEBUG] [Thread-121482] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:41:20.109 [DEBUG] [Thread-121482] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:41:20.152 [DEBUG] [Thread-121482] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:41:20.152 [DEBUG] [Thread-121482] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:41:20.157 [DEBUG] [Thread-121482] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:41:20.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:41:20.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:41:20.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:41:20.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:41:20.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:41:20.177 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:41:20.177 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:41:20.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:41:20.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:41:20.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.736560 -999.00  +21.00  26.55      9  -11.80 1 1 1 1 1    43    0 32.79 -10.38 ----- 26.6 26.6 315.2 36.5 21.1 -30.2 21.0 -29.1 20.7 -29.0 21.0 -29.7
2025-11-03T19:41:20.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:41:20.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:41:20.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.736560
2025-11-03T19:41:20.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:41:20.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:41:20.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:41:20.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:41:20.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:41:20.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:41:13', tmtdew=41.12, humidity=5.1, cloud=0.0, wind=25.78, temperature=21.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:40:38.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:41:20.179 [DEBUG] [Thread-121482] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:41:20.253 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:41:20.264 [DEBUG] [Thread-121485] [transport.py] [_log()] starting thread (client mode): 0xeda2c20
2025-11-03T19:41:20.265 [DEBUG] [Thread-121485] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:41:20.280 [DEBUG] [Thread-121485] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:41:20.280 [INFO] [Thread-121485] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:41:20.287 [DEBUG] [Thread-121485] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:41:20.287 [DEBUG] [Thread-121485] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:41:20.288 [DEBUG] [Thread-121485] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:41:20.288 [DEBUG] [Thread-121485] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:41:20.288 [DEBUG] [Thread-121485] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:41:20.288 [DEBUG] [Thread-121485] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:41:20.288 [DEBUG] [Thread-121485] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:41:20.288 [DEBUG] [Thread-121485] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:41:20.288 [DEBUG] [Thread-121485] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:41:20.288 [DEBUG] [Thread-121485] [transport.py] [_log()] client lang: <none>
2025-11-03T19:41:20.288 [DEBUG] [Thread-121485] [transport.py] [_log()] server lang: <none>
2025-11-03T19:41:20.288 [DEBUG] [Thread-121485] [transport.py] [_log()] kex follows: False
2025-11-03T19:41:20.288 [DEBUG] [Thread-121485] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:41:20.288 [DEBUG] [Thread-121485] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:41:20.288 [DEBUG] [Thread-121485] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:41:20.288 [DEBUG] [Thread-121485] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:41:20.288 [DEBUG] [Thread-121485] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:41:20.288 [DEBUG] [Thread-121485] [transport.py] [_log()] Compression: none
2025-11-03T19:41:20.288 [DEBUG] [Thread-121485] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:41:20.345 [DEBUG] [Thread-121485] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:41:20.345 [DEBUG] [Thread-121485] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:41:20.345 [DEBUG] [Thread-121485] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:41:20.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:41:20.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:41:20.403 [DEBUG] [Thread-121485] [transport.py] [_log()] userauth is OK
2025-11-03T19:41:20.403 [DEBUG] [Thread-121485] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:41:20.403 [DEBUG] [Thread-121485] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:41:20.403 [DEBUG] [Thread-121485] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:41:20.403 [DEBUG] [Thread-121485] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:41:20.417 [INFO] [Thread-121485] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:41:20.417 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:41:20.417 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:41:21.239 [DEBUG] [Thread-121485] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:41:21.239 [DEBUG] [Thread-121485] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:41:21.287 [DEBUG] [Thread-121485] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:41:21.287 [DEBUG] [Thread-121485] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:41:21.295 [DEBUG] [Thread-121485] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:41:21.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:41:21.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:41:21.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:41:21.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:41:21.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:41:21.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:41:21.327 [DEBUG] [Thread-121485] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:41:25.248 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:41:27.467 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:41:27.469 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:41:29.500 [DEBUG] [Thread-121487 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:41:31.382 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:41:38.793 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:41:44.569 [DEBUG] [Thread-121488 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:41:46.221 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:41:50.571 [DEBUG] [Thread-121489 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:41:51.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:41:51.350 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:41:51.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:41:52.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 41, 46), 41.05, 5.08, 0.0, 29.34, 20.9, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:41:52.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:41:46
2025-11-03T19:41:52.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:41:52.383 [DEBUG] [Thread-121490] [transport.py] [_log()] starting thread (client mode): 0x1179b850
2025-11-03T19:41:52.383 [DEBUG] [Thread-121490] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:41:52.402 [DEBUG] [Thread-121490] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:41:52.402 [INFO] [Thread-121490] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:41:52.405 [DEBUG] [Thread-121490] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:41:52.406 [DEBUG] [Thread-121490] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:41:52.406 [DEBUG] [Thread-121490] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:41:52.406 [DEBUG] [Thread-121490] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:41:52.406 [DEBUG] [Thread-121490] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:41:52.406 [DEBUG] [Thread-121490] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:41:52.406 [DEBUG] [Thread-121490] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:41:52.406 [DEBUG] [Thread-121490] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:41:52.406 [DEBUG] [Thread-121490] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:41:52.406 [DEBUG] [Thread-121490] [transport.py] [_log()] client lang: <none>
2025-11-03T19:41:52.406 [DEBUG] [Thread-121490] [transport.py] [_log()] server lang: <none>
2025-11-03T19:41:52.406 [DEBUG] [Thread-121490] [transport.py] [_log()] kex follows: False
2025-11-03T19:41:52.406 [DEBUG] [Thread-121490] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:41:52.406 [DEBUG] [Thread-121490] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:41:52.406 [DEBUG] [Thread-121490] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:41:52.406 [DEBUG] [Thread-121490] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:41:52.406 [DEBUG] [Thread-121490] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:41:52.406 [DEBUG] [Thread-121490] [transport.py] [_log()] Compression: none
2025-11-03T19:41:52.406 [DEBUG] [Thread-121490] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:41:52.424 [DEBUG] [Thread-121490] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:41:52.425 [DEBUG] [Thread-121490] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:41:52.425 [DEBUG] [Thread-121490] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:41:52.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:41:52.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:41:52.427 [DEBUG] [Thread-121490] [transport.py] [_log()] userauth is OK
2025-11-03T19:41:52.427 [DEBUG] [Thread-121490] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:41:52.428 [DEBUG] [Thread-121490] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:41:52.428 [DEBUG] [Thread-121490] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:41:52.428 [DEBUG] [Thread-121490] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:41:52.446 [INFO] [Thread-121490] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:41:52.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:41:53.222 [DEBUG] [Thread-121490] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:41:53.223 [DEBUG] [Thread-121490] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:41:53.224 [DEBUG] [Thread-121490] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:41:53.263 [DEBUG] [Thread-121490] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:41:53.263 [DEBUG] [Thread-121490] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:41:53.267 [DEBUG] [Thread-121490] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:41:53.278 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:41:53.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:41:53.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:41:53.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:41:53.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:41:53.292 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:41:53.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:41:53.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:41:53.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:41:53.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.736907 -999.00  +21.00  32.95      9  -11.80 1 1 2 1 1    40    0 32.66 -12.33 ----- 33.0 33.0 311.0 36.8 21.0 -30.3 20.9 -29.0 20.7 -29.0 21.0 -29.9
2025-11-03T19:41:53.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:41:53.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:41:53.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.736907
2025-11-03T19:41:53.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:41:53.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:41:53.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:41:53.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:41:53.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:41:53.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:41:46', tmtdew=41.05, humidity=5.08, cloud=0.0, wind=29.34, temperature=20.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:41:08.765', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:41:53.296 [DEBUG] [Thread-121490] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:41:53.379 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:41:53.391 [DEBUG] [Thread-121493] [transport.py] [_log()] starting thread (client mode): 0x1174f370
2025-11-03T19:41:53.391 [DEBUG] [Thread-121493] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:41:53.406 [DEBUG] [Thread-121493] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:41:53.406 [INFO] [Thread-121493] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:41:53.414 [DEBUG] [Thread-121493] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:41:53.415 [DEBUG] [Thread-121493] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:41:53.415 [DEBUG] [Thread-121493] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:41:53.415 [DEBUG] [Thread-121493] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:41:53.415 [DEBUG] [Thread-121493] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:41:53.415 [DEBUG] [Thread-121493] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:41:53.415 [DEBUG] [Thread-121493] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:41:53.415 [DEBUG] [Thread-121493] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:41:53.415 [DEBUG] [Thread-121493] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:41:53.415 [DEBUG] [Thread-121493] [transport.py] [_log()] client lang: <none>
2025-11-03T19:41:53.415 [DEBUG] [Thread-121493] [transport.py] [_log()] server lang: <none>
2025-11-03T19:41:53.415 [DEBUG] [Thread-121493] [transport.py] [_log()] kex follows: False
2025-11-03T19:41:53.415 [DEBUG] [Thread-121493] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:41:53.415 [DEBUG] [Thread-121493] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:41:53.415 [DEBUG] [Thread-121493] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:41:53.415 [DEBUG] [Thread-121493] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:41:53.416 [DEBUG] [Thread-121493] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:41:53.416 [DEBUG] [Thread-121493] [transport.py] [_log()] Compression: none
2025-11-03T19:41:53.416 [DEBUG] [Thread-121493] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:41:53.478 [DEBUG] [Thread-121493] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:41:53.479 [DEBUG] [Thread-121493] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:41:53.479 [DEBUG] [Thread-121493] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:41:53.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:41:53.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:41:53.537 [DEBUG] [Thread-121493] [transport.py] [_log()] userauth is OK
2025-11-03T19:41:53.537 [DEBUG] [Thread-121493] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:41:53.538 [DEBUG] [Thread-121493] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:41:53.538 [DEBUG] [Thread-121493] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:41:53.538 [DEBUG] [Thread-121493] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:41:53.564 [INFO] [Thread-121493] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:41:53.564 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:41:53.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:41:54.401 [DEBUG] [Thread-121493] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:41:54.402 [DEBUG] [Thread-121493] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:41:54.449 [DEBUG] [Thread-121493] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:41:54.449 [DEBUG] [Thread-121493] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:41:54.457 [DEBUG] [Thread-121493] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:41:54.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:41:54.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:41:54.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:41:54.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:41:54.482 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:41:54.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:41:54.490 [DEBUG] [Thread-121493] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:41:56.893 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:41:59.604 [DEBUG] [Thread-121495 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:42:01.971 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:42:09.352 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:42:14.646 [DEBUG] [Thread-121496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:42:16.780 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:42:21.260 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:42:24.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:42:24.513 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:42:24.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:42:25.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 42, 18), 41.06, 5.08, 0.0, 27.67, 20.95, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:42:25.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:42:18
2025-11-03T19:42:25.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:42:25.544 [DEBUG] [Thread-121497] [transport.py] [_log()] starting thread (client mode): 0x11799840
2025-11-03T19:42:25.544 [DEBUG] [Thread-121497] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:42:25.563 [DEBUG] [Thread-121497] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:42:25.563 [INFO] [Thread-121497] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:42:25.566 [DEBUG] [Thread-121497] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:42:25.566 [DEBUG] [Thread-121497] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:42:25.566 [DEBUG] [Thread-121497] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:42:25.566 [DEBUG] [Thread-121497] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:42:25.566 [DEBUG] [Thread-121497] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:42:25.567 [DEBUG] [Thread-121497] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:42:25.567 [DEBUG] [Thread-121497] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:42:25.567 [DEBUG] [Thread-121497] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:42:25.567 [DEBUG] [Thread-121497] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:42:25.567 [DEBUG] [Thread-121497] [transport.py] [_log()] client lang: <none>
2025-11-03T19:42:25.567 [DEBUG] [Thread-121497] [transport.py] [_log()] server lang: <none>
2025-11-03T19:42:25.567 [DEBUG] [Thread-121497] [transport.py] [_log()] kex follows: False
2025-11-03T19:42:25.567 [DEBUG] [Thread-121497] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:42:25.567 [DEBUG] [Thread-121497] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:42:25.567 [DEBUG] [Thread-121497] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:42:25.567 [DEBUG] [Thread-121497] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:42:25.567 [DEBUG] [Thread-121497] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:42:25.568 [DEBUG] [Thread-121497] [transport.py] [_log()] Compression: none
2025-11-03T19:42:25.568 [DEBUG] [Thread-121497] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:42:25.584 [DEBUG] [Thread-121497] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:42:25.585 [DEBUG] [Thread-121497] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:42:25.585 [DEBUG] [Thread-121497] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:42:25.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:42:25.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:42:25.587 [DEBUG] [Thread-121497] [transport.py] [_log()] userauth is OK
2025-11-03T19:42:25.588 [DEBUG] [Thread-121497] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:42:25.588 [DEBUG] [Thread-121497] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:42:25.588 [DEBUG] [Thread-121497] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:42:25.588 [DEBUG] [Thread-121497] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:42:25.612 [INFO] [Thread-121497] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:42:25.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:42:26.255 [DEBUG] [Thread-121497] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:42:26.256 [DEBUG] [Thread-121497] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:42:26.256 [DEBUG] [Thread-121497] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:42:26.297 [DEBUG] [Thread-121497] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:42:26.298 [DEBUG] [Thread-121497] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:42:26.301 [DEBUG] [Thread-121497] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:42:26.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:42:26.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:42:26.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:42:26.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:42:26.326 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:42:26.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:42:26.333 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:42:26.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:42:26.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:42:26.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:42:26.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.737254 -999.00  +21.00  28.54      9  -11.90 1 1 1 1 1    36    0 32.83 -12.85 ----- 28.5 28.5 310.8 32.2 21.0 -30.2 20.9 -29.2 20.7 -28.9 20.9 -30.0
2025-11-03T19:42:26.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:42:26.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:42:26.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.737254
2025-11-03T19:42:26.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:42:26.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:42:26.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:42:26.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:42:26.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:42:26.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:42:18', tmtdew=41.06, humidity=5.08, cloud=0.0, wind=27.67, temperature=20.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:41:38.746', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:42:26.337 [DEBUG] [Thread-121497] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:42:26.420 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:42:26.432 [DEBUG] [Thread-121500] [transport.py] [_log()] starting thread (client mode): 0xed89d80
2025-11-03T19:42:26.433 [DEBUG] [Thread-121500] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:42:26.448 [DEBUG] [Thread-121500] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:42:26.448 [INFO] [Thread-121500] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:42:26.456 [DEBUG] [Thread-121500] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:42:26.457 [DEBUG] [Thread-121500] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:42:26.457 [DEBUG] [Thread-121500] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:42:26.457 [DEBUG] [Thread-121500] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:42:26.457 [DEBUG] [Thread-121500] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:42:26.457 [DEBUG] [Thread-121500] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:42:26.457 [DEBUG] [Thread-121500] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:42:26.457 [DEBUG] [Thread-121500] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:42:26.457 [DEBUG] [Thread-121500] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:42:26.458 [DEBUG] [Thread-121500] [transport.py] [_log()] client lang: <none>
2025-11-03T19:42:26.458 [DEBUG] [Thread-121500] [transport.py] [_log()] server lang: <none>
2025-11-03T19:42:26.458 [DEBUG] [Thread-121500] [transport.py] [_log()] kex follows: False
2025-11-03T19:42:26.458 [DEBUG] [Thread-121500] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:42:26.458 [DEBUG] [Thread-121500] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:42:26.458 [DEBUG] [Thread-121500] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:42:26.458 [DEBUG] [Thread-121500] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:42:26.459 [DEBUG] [Thread-121500] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:42:26.459 [DEBUG] [Thread-121500] [transport.py] [_log()] Compression: none
2025-11-03T19:42:26.459 [DEBUG] [Thread-121500] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:42:26.517 [DEBUG] [Thread-121500] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:42:26.517 [DEBUG] [Thread-121500] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:42:26.518 [DEBUG] [Thread-121500] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:42:26.518 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:42:26.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:42:26.576 [DEBUG] [Thread-121500] [transport.py] [_log()] userauth is OK
2025-11-03T19:42:26.576 [DEBUG] [Thread-121500] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:42:26.576 [DEBUG] [Thread-121500] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:42:26.577 [DEBUG] [Thread-121500] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:42:26.577 [DEBUG] [Thread-121500] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:42:26.601 [INFO] [Thread-121500] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:42:26.602 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:42:26.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:42:27.439 [DEBUG] [Thread-121500] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:42:27.439 [DEBUG] [Thread-121500] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:42:27.487 [DEBUG] [Thread-121500] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:42:27.487 [DEBUG] [Thread-121500] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:42:27.495 [DEBUG] [Thread-121500] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:42:27.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:42:27.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:42:27.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:42:27.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:42:27.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:42:27.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:42:27.526 [DEBUG] [Thread-121500] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:42:29.689 [DEBUG] [Thread-121502 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:42:33.479 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:42:33.480 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:42:33.807 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:42:41.290 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:42:44.747 [DEBUG] [Thread-121503 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:42:50.668 [DEBUG] [Thread-121504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:42:57.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:42:57.549 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:42:57.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:42:58.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 42, 50), 40.98, 5.1, 0.0, 29.68, 20.96, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:42:58.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:42:50
2025-11-03T19:42:58.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:42:58.557 [DEBUG] [Thread-121505] [transport.py] [_log()] starting thread (client mode): 0x1174fa60
2025-11-03T19:42:58.558 [DEBUG] [Thread-121505] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:42:58.577 [DEBUG] [Thread-121505] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:42:58.577 [INFO] [Thread-121505] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:42:58.580 [DEBUG] [Thread-121505] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:42:58.580 [DEBUG] [Thread-121505] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:42:58.580 [DEBUG] [Thread-121505] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:42:58.580 [DEBUG] [Thread-121505] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:42:58.580 [DEBUG] [Thread-121505] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:42:58.580 [DEBUG] [Thread-121505] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:42:58.580 [DEBUG] [Thread-121505] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:42:58.580 [DEBUG] [Thread-121505] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:42:58.580 [DEBUG] [Thread-121505] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:42:58.580 [DEBUG] [Thread-121505] [transport.py] [_log()] client lang: <none>
2025-11-03T19:42:58.580 [DEBUG] [Thread-121505] [transport.py] [_log()] server lang: <none>
2025-11-03T19:42:58.580 [DEBUG] [Thread-121505] [transport.py] [_log()] kex follows: False
2025-11-03T19:42:58.580 [DEBUG] [Thread-121505] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:42:58.580 [DEBUG] [Thread-121505] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:42:58.580 [DEBUG] [Thread-121505] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:42:58.581 [DEBUG] [Thread-121505] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:42:58.581 [DEBUG] [Thread-121505] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:42:58.581 [DEBUG] [Thread-121505] [transport.py] [_log()] Compression: none
2025-11-03T19:42:58.581 [DEBUG] [Thread-121505] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:42:58.595 [DEBUG] [Thread-121505] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:42:58.595 [DEBUG] [Thread-121505] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:42:58.595 [DEBUG] [Thread-121505] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:42:58.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:42:58.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:42:58.596 [DEBUG] [Thread-121505] [transport.py] [_log()] userauth is OK
2025-11-03T19:42:58.596 [DEBUG] [Thread-121505] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:42:58.596 [DEBUG] [Thread-121505] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:42:58.596 [DEBUG] [Thread-121505] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:42:58.596 [DEBUG] [Thread-121505] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:42:58.611 [INFO] [Thread-121505] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:42:58.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:42:59.349 [DEBUG] [Thread-121505] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:42:59.350 [DEBUG] [Thread-121505] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:42:59.350 [DEBUG] [Thread-121505] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:42:59.391 [DEBUG] [Thread-121505] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:42:59.391 [DEBUG] [Thread-121505] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:42:59.394 [DEBUG] [Thread-121505] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:42:59.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:42:59.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:42:59.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:42:59.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:42:59.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:42:59.418 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:42:59.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:42:59.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:42:59.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:42:59.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.737601 -999.00  +21.00  31.80     10  -11.70 1 1 2 1 1    33    0 33.20 -14.37 ----- 31.8 31.8 306.0 37.2 21.0 -29.9 20.9 -29.0 20.7 -28.8 20.9 -29.9
2025-11-03T19:42:59.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:42:59.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:42:59.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.737601
2025-11-03T19:42:59.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:42:59.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:42:59.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:42:59.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:42:59.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:42:59.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:42:50', tmtdew=40.98, humidity=5.1, cloud=0.0, wind=29.68, temperature=20.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:42:08.726', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:42:59.421 [DEBUG] [Thread-121505] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:42:59.504 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:42:59.517 [DEBUG] [Thread-121508] [transport.py] [_log()] starting thread (client mode): 0x117e8160
2025-11-03T19:42:59.518 [DEBUG] [Thread-121508] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:42:59.533 [DEBUG] [Thread-121508] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:42:59.533 [INFO] [Thread-121508] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:42:59.540 [DEBUG] [Thread-121508] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:42:59.541 [DEBUG] [Thread-121508] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:42:59.541 [DEBUG] [Thread-121508] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:42:59.541 [DEBUG] [Thread-121508] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:42:59.541 [DEBUG] [Thread-121508] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:42:59.541 [DEBUG] [Thread-121508] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:42:59.541 [DEBUG] [Thread-121508] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:42:59.542 [DEBUG] [Thread-121508] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:42:59.542 [DEBUG] [Thread-121508] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:42:59.542 [DEBUG] [Thread-121508] [transport.py] [_log()] client lang: <none>
2025-11-03T19:42:59.542 [DEBUG] [Thread-121508] [transport.py] [_log()] server lang: <none>
2025-11-03T19:42:59.542 [DEBUG] [Thread-121508] [transport.py] [_log()] kex follows: False
2025-11-03T19:42:59.542 [DEBUG] [Thread-121508] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:42:59.542 [DEBUG] [Thread-121508] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:42:59.543 [DEBUG] [Thread-121508] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:42:59.543 [DEBUG] [Thread-121508] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:42:59.543 [DEBUG] [Thread-121508] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:42:59.543 [DEBUG] [Thread-121508] [transport.py] [_log()] Compression: none
2025-11-03T19:42:59.543 [DEBUG] [Thread-121508] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:42:59.607 [DEBUG] [Thread-121508] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:42:59.608 [DEBUG] [Thread-121508] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:42:59.609 [DEBUG] [Thread-121508] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:42:59.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:42:59.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:42:59.666 [DEBUG] [Thread-121508] [transport.py] [_log()] userauth is OK
2025-11-03T19:42:59.666 [DEBUG] [Thread-121508] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:42:59.666 [DEBUG] [Thread-121508] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:42:59.667 [DEBUG] [Thread-121508] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:42:59.667 [DEBUG] [Thread-121508] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:42:59.685 [INFO] [Thread-121508] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:42:59.686 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:42:59.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:42:59.787 [DEBUG] [Thread-121510 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:43:00.521 [DEBUG] [Thread-121508] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:43:00.521 [DEBUG] [Thread-121508] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:43:00.568 [DEBUG] [Thread-121508] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:43:00.568 [DEBUG] [Thread-121508] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:43:00.578 [DEBUG] [Thread-121508] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:43:00.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:43:00.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:43:00.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:43:00.603 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:43:00.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:43:00.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:43:00.611 [DEBUG] [Thread-121508] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:43:14.837 [DEBUG] [Thread-121511 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:43:29.880 [DEBUG] [Thread-121512 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:43:30.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:43:30.631 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:43:30.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:43:31.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 43, 23), 40.98, 5.1, 0.0, 27.14, 20.95, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:43:31.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:43:23
2025-11-03T19:43:31.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:43:31.669 [DEBUG] [Thread-121513] [transport.py] [_log()] starting thread (client mode): 0x117eaec0
2025-11-03T19:43:31.669 [DEBUG] [Thread-121513] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:43:31.689 [DEBUG] [Thread-121513] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:43:31.689 [INFO] [Thread-121513] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:43:31.693 [DEBUG] [Thread-121513] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:43:31.693 [DEBUG] [Thread-121513] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:43:31.693 [DEBUG] [Thread-121513] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:43:31.693 [DEBUG] [Thread-121513] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:43:31.693 [DEBUG] [Thread-121513] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:43:31.693 [DEBUG] [Thread-121513] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:43:31.693 [DEBUG] [Thread-121513] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:43:31.693 [DEBUG] [Thread-121513] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:43:31.693 [DEBUG] [Thread-121513] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:43:31.693 [DEBUG] [Thread-121513] [transport.py] [_log()] client lang: <none>
2025-11-03T19:43:31.693 [DEBUG] [Thread-121513] [transport.py] [_log()] server lang: <none>
2025-11-03T19:43:31.702 [DEBUG] [Thread-121513] [transport.py] [_log()] kex follows: False
2025-11-03T19:43:31.702 [DEBUG] [Thread-121513] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:43:31.702 [DEBUG] [Thread-121513] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:43:31.702 [DEBUG] [Thread-121513] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:43:31.702 [DEBUG] [Thread-121513] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:43:31.702 [DEBUG] [Thread-121513] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:43:31.702 [DEBUG] [Thread-121513] [transport.py] [_log()] Compression: none
2025-11-03T19:43:31.702 [DEBUG] [Thread-121513] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:43:31.721 [DEBUG] [Thread-121513] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:43:31.722 [DEBUG] [Thread-121513] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:43:31.722 [DEBUG] [Thread-121513] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:43:31.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:43:31.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:43:31.725 [DEBUG] [Thread-121513] [transport.py] [_log()] userauth is OK
2025-11-03T19:43:31.725 [DEBUG] [Thread-121513] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:43:31.725 [DEBUG] [Thread-121513] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:43:31.725 [DEBUG] [Thread-121513] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:43:31.725 [DEBUG] [Thread-121513] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:43:31.761 [INFO] [Thread-121513] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:43:31.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:43:32.393 [DEBUG] [Thread-121513] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:43:32.393 [DEBUG] [Thread-121513] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:43:32.394 [DEBUG] [Thread-121513] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:43:32.434 [DEBUG] [Thread-121513] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:43:32.434 [DEBUG] [Thread-121513] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:43:32.438 [DEBUG] [Thread-121513] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:43:32.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:43:32.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:43:32.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:43:32.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:43:32.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:43:32.471 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:43:32.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:43:32.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:43:32.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:43:32.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.737949 -999.00  +20.90  28.38      9  -11.90 1 1 1 1 1    30    0 32.87 -16.55 ----- 28.4 28.4 307.4 31.1 20.9 -30.1 20.9 -29.0 20.6 -28.9 20.9 -29.7
2025-11-03T19:43:32.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:43:32.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:43:32.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.737949
2025-11-03T19:43:32.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:43:32.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:43:32.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:43:32.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:43:32.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:43:32.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:43:23', tmtdew=40.98, humidity=5.1, cloud=0.0, wind=27.14, temperature=20.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:42:38.794', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:43:32.472 [DEBUG] [Thread-121513] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:43:32.544 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:43:32.555 [DEBUG] [Thread-121516] [transport.py] [_log()] starting thread (client mode): 0x117e9cf0
2025-11-03T19:43:32.555 [DEBUG] [Thread-121516] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:43:32.573 [DEBUG] [Thread-121516] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:43:32.573 [INFO] [Thread-121516] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:43:32.584 [DEBUG] [Thread-121516] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:43:32.584 [DEBUG] [Thread-121516] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:43:32.584 [DEBUG] [Thread-121516] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:43:32.584 [DEBUG] [Thread-121516] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:43:32.584 [DEBUG] [Thread-121516] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:43:32.584 [DEBUG] [Thread-121516] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:43:32.584 [DEBUG] [Thread-121516] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:43:32.584 [DEBUG] [Thread-121516] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:43:32.584 [DEBUG] [Thread-121516] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:43:32.584 [DEBUG] [Thread-121516] [transport.py] [_log()] client lang: <none>
2025-11-03T19:43:32.584 [DEBUG] [Thread-121516] [transport.py] [_log()] server lang: <none>
2025-11-03T19:43:32.584 [DEBUG] [Thread-121516] [transport.py] [_log()] kex follows: False
2025-11-03T19:43:32.584 [DEBUG] [Thread-121516] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:43:32.584 [DEBUG] [Thread-121516] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:43:32.584 [DEBUG] [Thread-121516] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:43:32.584 [DEBUG] [Thread-121516] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:43:32.584 [DEBUG] [Thread-121516] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:43:32.584 [DEBUG] [Thread-121516] [transport.py] [_log()] Compression: none
2025-11-03T19:43:32.584 [DEBUG] [Thread-121516] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:43:32.640 [DEBUG] [Thread-121516] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:43:32.640 [DEBUG] [Thread-121516] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:43:32.640 [DEBUG] [Thread-121516] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:43:32.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:43:32.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:43:32.697 [DEBUG] [Thread-121516] [transport.py] [_log()] userauth is OK
2025-11-03T19:43:32.697 [DEBUG] [Thread-121516] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:43:32.697 [DEBUG] [Thread-121516] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:43:32.697 [DEBUG] [Thread-121516] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:43:32.697 [DEBUG] [Thread-121516] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:43:32.711 [INFO] [Thread-121516] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:43:32.711 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:43:32.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:43:33.541 [DEBUG] [Thread-121516] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:43:33.541 [DEBUG] [Thread-121516] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:43:33.589 [DEBUG] [Thread-121516] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:43:33.589 [DEBUG] [Thread-121516] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:43:33.599 [DEBUG] [Thread-121516] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:43:33.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:43:33.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:43:33.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:43:33.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:43:33.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:43:33.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:43:33.646 [DEBUG] [Thread-121516] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:43:38.658 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:43:38.659 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:43:44.918 [DEBUG] [Thread-121518 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:43:50.766 [DEBUG] [Thread-121519 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:43:59.967 [DEBUG] [Thread-121520 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:44:03.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:44:03.669 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:44:03.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:44:04.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 43, 55), 40.76, 5.13, 0.0, 23.5, 20.98, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:44:04.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:43:55
2025-11-03T19:44:04.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:44:04.710 [DEBUG] [Thread-121521] [transport.py] [_log()] starting thread (client mode): 0xed2f4c0
2025-11-03T19:44:04.710 [DEBUG] [Thread-121521] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:44:04.730 [DEBUG] [Thread-121521] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:44:04.730 [INFO] [Thread-121521] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:44:04.733 [DEBUG] [Thread-121521] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:44:04.733 [DEBUG] [Thread-121521] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:44:04.733 [DEBUG] [Thread-121521] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:44:04.733 [DEBUG] [Thread-121521] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:44:04.733 [DEBUG] [Thread-121521] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:44:04.733 [DEBUG] [Thread-121521] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:44:04.733 [DEBUG] [Thread-121521] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:44:04.734 [DEBUG] [Thread-121521] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:44:04.734 [DEBUG] [Thread-121521] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:44:04.734 [DEBUG] [Thread-121521] [transport.py] [_log()] client lang: <none>
2025-11-03T19:44:04.734 [DEBUG] [Thread-121521] [transport.py] [_log()] server lang: <none>
2025-11-03T19:44:04.734 [DEBUG] [Thread-121521] [transport.py] [_log()] kex follows: False
2025-11-03T19:44:04.734 [DEBUG] [Thread-121521] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:44:04.734 [DEBUG] [Thread-121521] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:44:04.734 [DEBUG] [Thread-121521] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:44:04.734 [DEBUG] [Thread-121521] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:44:04.734 [DEBUG] [Thread-121521] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:44:04.734 [DEBUG] [Thread-121521] [transport.py] [_log()] Compression: none
2025-11-03T19:44:04.734 [DEBUG] [Thread-121521] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:44:04.752 [DEBUG] [Thread-121521] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:44:04.753 [DEBUG] [Thread-121521] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:44:04.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:44:04.754 [DEBUG] [Thread-121521] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:44:04.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:44:04.756 [DEBUG] [Thread-121521] [transport.py] [_log()] userauth is OK
2025-11-03T19:44:04.756 [DEBUG] [Thread-121521] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:44:04.756 [DEBUG] [Thread-121521] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:44:04.757 [DEBUG] [Thread-121521] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:44:04.757 [DEBUG] [Thread-121521] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:44:04.781 [INFO] [Thread-121521] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:44:04.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:44:05.539 [DEBUG] [Thread-121521] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:44:05.539 [DEBUG] [Thread-121521] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:44:05.539 [DEBUG] [Thread-121521] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:44:05.579 [DEBUG] [Thread-121521] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:44:05.579 [DEBUG] [Thread-121521] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:44:05.582 [DEBUG] [Thread-121521] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:44:05.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:44:05.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:44:05.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:44:05.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:44:05.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:44:05.601 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:44:05.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:44:05.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:44:05.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:44:05.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.738296 -999.00  +20.90  20.82     10  -11.70 1 1 1 1 1    27    0 32.94 -18.57 ----- 20.8 20.8 308.0 30.2 20.9 -30.1 20.9 -29.0 20.6 -29.0 20.9 -29.7
2025-11-03T19:44:05.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:44:05.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:44:05.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.738296
2025-11-03T19:44:05.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:44:05.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:44:05.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:44:05.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:44:05.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:44:05.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:43:55', tmtdew=40.76, humidity=5.13, cloud=0.0, wind=23.5, temperature=20.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:43:08.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:44:05.610 [DEBUG] [Thread-121521] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:44:05.682 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:44:05.694 [DEBUG] [Thread-121524] [transport.py] [_log()] starting thread (client mode): 0xeda2da0
2025-11-03T19:44:05.694 [DEBUG] [Thread-121524] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:44:05.709 [DEBUG] [Thread-121524] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:44:05.709 [INFO] [Thread-121524] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:44:05.717 [DEBUG] [Thread-121524] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:44:05.717 [DEBUG] [Thread-121524] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:44:05.717 [DEBUG] [Thread-121524] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:44:05.717 [DEBUG] [Thread-121524] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:44:05.717 [DEBUG] [Thread-121524] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:44:05.717 [DEBUG] [Thread-121524] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:44:05.717 [DEBUG] [Thread-121524] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:44:05.717 [DEBUG] [Thread-121524] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:44:05.717 [DEBUG] [Thread-121524] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:44:05.717 [DEBUG] [Thread-121524] [transport.py] [_log()] client lang: <none>
2025-11-03T19:44:05.717 [DEBUG] [Thread-121524] [transport.py] [_log()] server lang: <none>
2025-11-03T19:44:05.717 [DEBUG] [Thread-121524] [transport.py] [_log()] kex follows: False
2025-11-03T19:44:05.717 [DEBUG] [Thread-121524] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:44:05.717 [DEBUG] [Thread-121524] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:44:05.717 [DEBUG] [Thread-121524] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:44:05.717 [DEBUG] [Thread-121524] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:44:05.717 [DEBUG] [Thread-121524] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:44:05.717 [DEBUG] [Thread-121524] [transport.py] [_log()] Compression: none
2025-11-03T19:44:05.717 [DEBUG] [Thread-121524] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:44:05.773 [DEBUG] [Thread-121524] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:44:05.773 [DEBUG] [Thread-121524] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:44:05.773 [DEBUG] [Thread-121524] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:44:05.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:44:05.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:44:05.831 [DEBUG] [Thread-121524] [transport.py] [_log()] userauth is OK
2025-11-03T19:44:05.832 [DEBUG] [Thread-121524] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:44:05.832 [DEBUG] [Thread-121524] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:44:05.832 [DEBUG] [Thread-121524] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:44:05.832 [DEBUG] [Thread-121524] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:44:05.855 [INFO] [Thread-121524] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:44:05.855 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:44:05.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:44:06.685 [DEBUG] [Thread-121524] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:44:06.685 [DEBUG] [Thread-121524] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:44:06.733 [DEBUG] [Thread-121524] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:44:06.733 [DEBUG] [Thread-121524] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:44:06.743 [DEBUG] [Thread-121524] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:44:06.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:44:06.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:44:06.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:44:06.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:44:06.772 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:44:06.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:44:06.780 [DEBUG] [Thread-121524] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:44:15.001 [DEBUG] [Thread-121526 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:44:30.051 [DEBUG] [Thread-121527 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:44:36.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:44:36.802 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:44:36.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:44:37.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 44, 27), 40.72, 5.15, 0.0, 22.39, 20.95, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:44:37.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:44:27
2025-11-03T19:44:37.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:44:37.804 [DEBUG] [Thread-121528] [transport.py] [_log()] starting thread (client mode): 0x1179a770
2025-11-03T19:44:37.804 [DEBUG] [Thread-121528] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:44:37.822 [DEBUG] [Thread-121528] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:44:37.822 [INFO] [Thread-121528] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:44:37.826 [DEBUG] [Thread-121528] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:44:37.826 [DEBUG] [Thread-121528] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:44:37.826 [DEBUG] [Thread-121528] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:44:37.826 [DEBUG] [Thread-121528] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:44:37.826 [DEBUG] [Thread-121528] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:44:37.826 [DEBUG] [Thread-121528] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:44:37.826 [DEBUG] [Thread-121528] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:44:37.826 [DEBUG] [Thread-121528] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:44:37.826 [DEBUG] [Thread-121528] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:44:37.826 [DEBUG] [Thread-121528] [transport.py] [_log()] client lang: <none>
2025-11-03T19:44:37.826 [DEBUG] [Thread-121528] [transport.py] [_log()] server lang: <none>
2025-11-03T19:44:37.826 [DEBUG] [Thread-121528] [transport.py] [_log()] kex follows: False
2025-11-03T19:44:37.826 [DEBUG] [Thread-121528] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:44:37.826 [DEBUG] [Thread-121528] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:44:37.826 [DEBUG] [Thread-121528] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:44:37.826 [DEBUG] [Thread-121528] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:44:37.826 [DEBUG] [Thread-121528] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:44:37.826 [DEBUG] [Thread-121528] [transport.py] [_log()] Compression: none
2025-11-03T19:44:37.826 [DEBUG] [Thread-121528] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:44:37.841 [DEBUG] [Thread-121528] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:44:37.841 [DEBUG] [Thread-121528] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:44:37.841 [DEBUG] [Thread-121528] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:44:37.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:44:37.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:44:37.842 [DEBUG] [Thread-121528] [transport.py] [_log()] userauth is OK
2025-11-03T19:44:37.842 [DEBUG] [Thread-121528] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:44:37.842 [DEBUG] [Thread-121528] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:44:37.842 [DEBUG] [Thread-121528] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:44:37.842 [DEBUG] [Thread-121528] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:44:37.857 [INFO] [Thread-121528] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:44:37.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:44:38.458 [DEBUG] [Thread-121528] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:44:38.458 [DEBUG] [Thread-121528] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:44:38.458 [DEBUG] [Thread-121528] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:44:38.499 [DEBUG] [Thread-121528] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:44:38.499 [DEBUG] [Thread-121528] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:44:38.502 [DEBUG] [Thread-121528] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:44:38.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:44:38.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:44:38.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:44:38.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:44:38.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:44:38.520 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:44:38.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:44:38.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:44:38.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:44:38.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.738643 -999.00  +20.90  27.22     10  -11.60 1 1 1 1 1    25    0 32.36 -21.56 ----- 27.2 27.2 299.7 32.1 20.9 -30.0 20.9 -28.9 20.6 -28.8 20.9 -29.6
2025-11-03T19:44:38.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:44:38.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:44:38.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.738643
2025-11-03T19:44:38.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:44:38.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:44:38.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:44:38.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:44:38.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:44:38.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:44:27', tmtdew=40.72, humidity=5.15, cloud=0.0, wind=22.39, temperature=20.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:43:38.755', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:44:38.522 [DEBUG] [Thread-121528] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:44:38.595 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:44:38.608 [DEBUG] [Thread-121531] [transport.py] [_log()] starting thread (client mode): 0x117980a0
2025-11-03T19:44:38.608 [DEBUG] [Thread-121531] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:44:38.623 [DEBUG] [Thread-121531] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:44:38.623 [INFO] [Thread-121531] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:44:38.631 [DEBUG] [Thread-121531] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:44:38.631 [DEBUG] [Thread-121531] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:44:38.631 [DEBUG] [Thread-121531] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:44:38.631 [DEBUG] [Thread-121531] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:44:38.631 [DEBUG] [Thread-121531] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:44:38.631 [DEBUG] [Thread-121531] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:44:38.631 [DEBUG] [Thread-121531] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:44:38.631 [DEBUG] [Thread-121531] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:44:38.631 [DEBUG] [Thread-121531] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:44:38.631 [DEBUG] [Thread-121531] [transport.py] [_log()] client lang: <none>
2025-11-03T19:44:38.631 [DEBUG] [Thread-121531] [transport.py] [_log()] server lang: <none>
2025-11-03T19:44:38.631 [DEBUG] [Thread-121531] [transport.py] [_log()] kex follows: False
2025-11-03T19:44:38.631 [DEBUG] [Thread-121531] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:44:38.631 [DEBUG] [Thread-121531] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:44:38.631 [DEBUG] [Thread-121531] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:44:38.631 [DEBUG] [Thread-121531] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:44:38.631 [DEBUG] [Thread-121531] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:44:38.631 [DEBUG] [Thread-121531] [transport.py] [_log()] Compression: none
2025-11-03T19:44:38.631 [DEBUG] [Thread-121531] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:44:38.689 [DEBUG] [Thread-121531] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:44:38.690 [DEBUG] [Thread-121531] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:44:38.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:44:38.690 [DEBUG] [Thread-121531] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:44:38.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:44:38.751 [DEBUG] [Thread-121531] [transport.py] [_log()] userauth is OK
2025-11-03T19:44:38.751 [DEBUG] [Thread-121531] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:44:38.751 [DEBUG] [Thread-121531] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:44:38.751 [DEBUG] [Thread-121531] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:44:38.751 [DEBUG] [Thread-121531] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:44:38.765 [INFO] [Thread-121531] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:44:38.765 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:44:38.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:44:39.567 [DEBUG] [Thread-121531] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:44:39.567 [DEBUG] [Thread-121531] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:44:39.616 [DEBUG] [Thread-121531] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:44:39.616 [DEBUG] [Thread-121531] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:44:39.625 [DEBUG] [Thread-121531] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:44:39.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:44:39.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:44:39.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:44:39.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:44:39.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:44:39.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:44:39.663 [DEBUG] [Thread-121531] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:44:43.771 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:44:43.773 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:44:45.080 [DEBUG] [Thread-121533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:44:50.864 [DEBUG] [Thread-121534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:45:00.126 [DEBUG] [Thread-121535 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:45:09.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:45:09.684 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:45:09.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:45:10.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 44, 27), 40.72, 5.15, 0.0, 22.39, 20.95, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:45:10.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:44:27
2025-11-03T19:45:10.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:45:10.748 [DEBUG] [Thread-121536] [transport.py] [_log()] starting thread (client mode): 0x117e86a0
2025-11-03T19:45:10.748 [DEBUG] [Thread-121536] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:45:10.769 [DEBUG] [Thread-121536] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:45:10.770 [INFO] [Thread-121536] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:45:10.773 [DEBUG] [Thread-121536] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:45:10.773 [DEBUG] [Thread-121536] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:45:10.773 [DEBUG] [Thread-121536] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:45:10.773 [DEBUG] [Thread-121536] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:45:10.773 [DEBUG] [Thread-121536] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:45:10.773 [DEBUG] [Thread-121536] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:45:10.773 [DEBUG] [Thread-121536] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:45:10.773 [DEBUG] [Thread-121536] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:45:10.773 [DEBUG] [Thread-121536] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:45:10.773 [DEBUG] [Thread-121536] [transport.py] [_log()] client lang: <none>
2025-11-03T19:45:10.773 [DEBUG] [Thread-121536] [transport.py] [_log()] server lang: <none>
2025-11-03T19:45:10.773 [DEBUG] [Thread-121536] [transport.py] [_log()] kex follows: False
2025-11-03T19:45:10.773 [DEBUG] [Thread-121536] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:45:10.773 [DEBUG] [Thread-121536] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:45:10.773 [DEBUG] [Thread-121536] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:45:10.773 [DEBUG] [Thread-121536] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:45:10.773 [DEBUG] [Thread-121536] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:45:10.773 [DEBUG] [Thread-121536] [transport.py] [_log()] Compression: none
2025-11-03T19:45:10.773 [DEBUG] [Thread-121536] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:45:10.793 [DEBUG] [Thread-121536] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:45:10.794 [DEBUG] [Thread-121536] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:45:10.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:45:10.794 [DEBUG] [Thread-121536] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:45:10.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:45:10.797 [DEBUG] [Thread-121536] [transport.py] [_log()] userauth is OK
2025-11-03T19:45:10.797 [DEBUG] [Thread-121536] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:45:10.797 [DEBUG] [Thread-121536] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:45:10.797 [DEBUG] [Thread-121536] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:45:10.797 [DEBUG] [Thread-121536] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:45:10.820 [INFO] [Thread-121536] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:45:10.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:45:15.159 [DEBUG] [Thread-121538 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:45:20.523 [DEBUG] [Thread-121536] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:45:20.524 [DEBUG] [Thread-121536] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:45:20.524 [DEBUG] [Thread-121536] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:45:20.564 [DEBUG] [Thread-121536] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:45:20.564 [DEBUG] [Thread-121536] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:45:20.568 [DEBUG] [Thread-121536] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:45:20.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:45:20.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:45:20.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:45:20.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:45:20.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:45:20.717 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:45:20.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:45:20.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:45:20.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:45:20.729 [DEBUG] [Thread-121536] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:45:20.729 [WARNING] [poll_weather_worker] [driver.py] [poll_weather_state()] Unable to get atlas cloud data: list index out of range
2025-11-03T19:45:20.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:44:27', tmtdew=40.72, humidity=5.15, cloud=0.0, wind=22.39, temperature=20.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp=None, atlas_cloud=None, atlas_rain=None, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:45:20.817 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:45:20.828 [DEBUG] [Thread-121540] [transport.py] [_log()] starting thread (client mode): 0x117ea4a0
2025-11-03T19:45:20.828 [DEBUG] [Thread-121540] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:45:20.843 [DEBUG] [Thread-121540] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:45:20.843 [INFO] [Thread-121540] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:45:20.850 [DEBUG] [Thread-121540] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:45:20.851 [DEBUG] [Thread-121540] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:45:20.851 [DEBUG] [Thread-121540] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:45:20.851 [DEBUG] [Thread-121540] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:45:20.851 [DEBUG] [Thread-121540] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:45:20.851 [DEBUG] [Thread-121540] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:45:20.851 [DEBUG] [Thread-121540] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:45:20.851 [DEBUG] [Thread-121540] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:45:20.851 [DEBUG] [Thread-121540] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:45:20.851 [DEBUG] [Thread-121540] [transport.py] [_log()] client lang: <none>
2025-11-03T19:45:20.851 [DEBUG] [Thread-121540] [transport.py] [_log()] server lang: <none>
2025-11-03T19:45:20.851 [DEBUG] [Thread-121540] [transport.py] [_log()] kex follows: False
2025-11-03T19:45:20.851 [DEBUG] [Thread-121540] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:45:20.851 [DEBUG] [Thread-121540] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:45:20.851 [DEBUG] [Thread-121540] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:45:20.851 [DEBUG] [Thread-121540] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:45:20.851 [DEBUG] [Thread-121540] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:45:20.852 [DEBUG] [Thread-121540] [transport.py] [_log()] Compression: none
2025-11-03T19:45:20.852 [DEBUG] [Thread-121540] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:45:20.909 [DEBUG] [Thread-121540] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:45:20.910 [DEBUG] [Thread-121540] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:45:20.919 [DEBUG] [Thread-121540] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:45:20.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:45:20.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:45:20.968 [DEBUG] [Thread-121540] [transport.py] [_log()] userauth is OK
2025-11-03T19:45:20.969 [DEBUG] [Thread-121540] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:45:20.969 [DEBUG] [Thread-121540] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:45:20.969 [DEBUG] [Thread-121540] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:45:20.969 [DEBUG] [Thread-121540] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:45:20.988 [INFO] [Thread-121540] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:45:20.989 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:45:20.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:45:21.811 [DEBUG] [Thread-121540] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:45:21.811 [DEBUG] [Thread-121540] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:45:21.859 [DEBUG] [Thread-121540] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:45:21.859 [DEBUG] [Thread-121540] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:45:21.868 [DEBUG] [Thread-121540] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:45:21.878 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:45:21.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:45:21.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:45:21.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:45:21.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:45:21.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:45:21.915 [DEBUG] [Thread-121540] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:45:30.206 [DEBUG] [Thread-121542 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:45:45.252 [DEBUG] [Thread-121543 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:45:49.104 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:45:49.105 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:45:50.947 [DEBUG] [Thread-121544 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:45:51.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:45:51.936 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:45:51.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:45:52.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 45, 32), 40.37, 5.17, 0.0, 28.94, 20.87, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:45:52.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:45:32
2025-11-03T19:45:52.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:45:53.028 [DEBUG] [Thread-121545] [transport.py] [_log()] starting thread (client mode): 0x11798970
2025-11-03T19:45:53.028 [DEBUG] [Thread-121545] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:45:53.049 [DEBUG] [Thread-121545] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:45:53.049 [INFO] [Thread-121545] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:45:53.052 [DEBUG] [Thread-121545] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:45:53.052 [DEBUG] [Thread-121545] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:45:53.052 [DEBUG] [Thread-121545] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:45:53.052 [DEBUG] [Thread-121545] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:45:53.052 [DEBUG] [Thread-121545] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:45:53.052 [DEBUG] [Thread-121545] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:45:53.052 [DEBUG] [Thread-121545] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:45:53.052 [DEBUG] [Thread-121545] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:45:53.052 [DEBUG] [Thread-121545] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:45:53.052 [DEBUG] [Thread-121545] [transport.py] [_log()] client lang: <none>
2025-11-03T19:45:53.052 [DEBUG] [Thread-121545] [transport.py] [_log()] server lang: <none>
2025-11-03T19:45:53.052 [DEBUG] [Thread-121545] [transport.py] [_log()] kex follows: False
2025-11-03T19:45:53.052 [DEBUG] [Thread-121545] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:45:53.052 [DEBUG] [Thread-121545] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:45:53.053 [DEBUG] [Thread-121545] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:45:53.053 [DEBUG] [Thread-121545] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:45:53.053 [DEBUG] [Thread-121545] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:45:53.053 [DEBUG] [Thread-121545] [transport.py] [_log()] Compression: none
2025-11-03T19:45:53.053 [DEBUG] [Thread-121545] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:45:53.068 [DEBUG] [Thread-121545] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:45:53.068 [DEBUG] [Thread-121545] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:45:53.068 [DEBUG] [Thread-121545] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:45:53.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:45:53.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:45:53.069 [DEBUG] [Thread-121545] [transport.py] [_log()] userauth is OK
2025-11-03T19:45:53.069 [DEBUG] [Thread-121545] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:45:53.069 [DEBUG] [Thread-121545] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:45:53.069 [DEBUG] [Thread-121545] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:45:53.069 [DEBUG] [Thread-121545] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:45:53.078 [INFO] [Thread-121545] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:45:53.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:45:53.690 [DEBUG] [Thread-121545] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:45:53.690 [DEBUG] [Thread-121545] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:45:53.690 [DEBUG] [Thread-121545] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:45:53.731 [DEBUG] [Thread-121545] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:45:53.731 [DEBUG] [Thread-121545] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:45:53.734 [DEBUG] [Thread-121545] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:45:53.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:45:53.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:45:53.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:45:53.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:45:53.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:45:53.747 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:45:53.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:45:53.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:45:53.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:45:53.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.739685 -999.00  +20.90  22.60     10  -11.40 1 1 1 1 1    19    0 32.43 -34.42 ----- 22.6 22.6 307.6 32.8 20.9 -29.9 20.9 -29.0 20.6 -28.8 20.9 -29.8
2025-11-03T19:45:53.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:45:53.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:45:53.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.739685
2025-11-03T19:45:53.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:45:53.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:45:53.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:45:53.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:45:53.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:45:53.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:45:32', tmtdew=40.37, humidity=5.17, cloud=0.0, wind=28.94, temperature=20.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:45:08.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:45:53.748 [DEBUG] [Thread-121545] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:45:53.823 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:45:53.835 [DEBUG] [Thread-121548] [transport.py] [_log()] starting thread (client mode): 0xeda2da0
2025-11-03T19:45:53.835 [DEBUG] [Thread-121548] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:45:53.849 [DEBUG] [Thread-121548] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:45:53.849 [INFO] [Thread-121548] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:45:53.857 [DEBUG] [Thread-121548] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:45:53.857 [DEBUG] [Thread-121548] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:45:53.857 [DEBUG] [Thread-121548] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:45:53.857 [DEBUG] [Thread-121548] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:45:53.857 [DEBUG] [Thread-121548] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:45:53.857 [DEBUG] [Thread-121548] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:45:53.857 [DEBUG] [Thread-121548] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:45:53.857 [DEBUG] [Thread-121548] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:45:53.857 [DEBUG] [Thread-121548] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:45:53.857 [DEBUG] [Thread-121548] [transport.py] [_log()] client lang: <none>
2025-11-03T19:45:53.857 [DEBUG] [Thread-121548] [transport.py] [_log()] server lang: <none>
2025-11-03T19:45:53.857 [DEBUG] [Thread-121548] [transport.py] [_log()] kex follows: False
2025-11-03T19:45:53.857 [DEBUG] [Thread-121548] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:45:53.857 [DEBUG] [Thread-121548] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:45:53.857 [DEBUG] [Thread-121548] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:45:53.857 [DEBUG] [Thread-121548] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:45:53.857 [DEBUG] [Thread-121548] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:45:53.857 [DEBUG] [Thread-121548] [transport.py] [_log()] Compression: none
2025-11-03T19:45:53.857 [DEBUG] [Thread-121548] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:45:53.914 [DEBUG] [Thread-121548] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:45:53.914 [DEBUG] [Thread-121548] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:45:53.914 [DEBUG] [Thread-121548] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:45:53.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:45:53.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:45:53.971 [DEBUG] [Thread-121548] [transport.py] [_log()] userauth is OK
2025-11-03T19:45:53.971 [DEBUG] [Thread-121548] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:45:53.971 [DEBUG] [Thread-121548] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:45:53.971 [DEBUG] [Thread-121548] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:45:53.971 [DEBUG] [Thread-121548] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:45:53.986 [INFO] [Thread-121548] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:45:53.986 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:45:53.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:45:54.781 [DEBUG] [Thread-121548] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:45:54.781 [DEBUG] [Thread-121548] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:45:54.829 [DEBUG] [Thread-121548] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:45:54.830 [DEBUG] [Thread-121548] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:45:54.838 [DEBUG] [Thread-121548] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:45:54.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:45:54.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:45:54.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:45:54.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:45:54.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:45:54.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:45:54.877 [DEBUG] [Thread-121548] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:46:00.284 [DEBUG] [Thread-121550 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:46:15.336 [DEBUG] [Thread-121551 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:46:24.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:46:24.900 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:46:24.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:46:25.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 46, 4), 40.28, 5.22, 0.0, 27.35, 20.92, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:46:25.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:46:04
2025-11-03T19:46:25.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:46:25.959 [DEBUG] [Thread-121552] [transport.py] [_log()] starting thread (client mode): 0xeda0ee0
2025-11-03T19:46:25.959 [DEBUG] [Thread-121552] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:46:25.979 [DEBUG] [Thread-121552] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:46:25.979 [INFO] [Thread-121552] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:46:25.981 [DEBUG] [Thread-121552] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:46:25.981 [DEBUG] [Thread-121552] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:46:25.981 [DEBUG] [Thread-121552] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:46:25.981 [DEBUG] [Thread-121552] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:46:25.981 [DEBUG] [Thread-121552] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:46:25.982 [DEBUG] [Thread-121552] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:46:25.982 [DEBUG] [Thread-121552] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:46:25.982 [DEBUG] [Thread-121552] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:46:25.982 [DEBUG] [Thread-121552] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:46:25.982 [DEBUG] [Thread-121552] [transport.py] [_log()] client lang: <none>
2025-11-03T19:46:25.982 [DEBUG] [Thread-121552] [transport.py] [_log()] server lang: <none>
2025-11-03T19:46:25.982 [DEBUG] [Thread-121552] [transport.py] [_log()] kex follows: False
2025-11-03T19:46:25.982 [DEBUG] [Thread-121552] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:46:25.982 [DEBUG] [Thread-121552] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:46:25.982 [DEBUG] [Thread-121552] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:46:25.982 [DEBUG] [Thread-121552] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:46:25.982 [DEBUG] [Thread-121552] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:46:25.982 [DEBUG] [Thread-121552] [transport.py] [_log()] Compression: none
2025-11-03T19:46:25.982 [DEBUG] [Thread-121552] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:46:26.000 [DEBUG] [Thread-121552] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:46:26.000 [DEBUG] [Thread-121552] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:46:26.001 [DEBUG] [Thread-121552] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:46:26.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:46:26.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:46:26.003 [DEBUG] [Thread-121552] [transport.py] [_log()] userauth is OK
2025-11-03T19:46:26.003 [DEBUG] [Thread-121552] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:46:26.003 [DEBUG] [Thread-121552] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:46:26.003 [DEBUG] [Thread-121552] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:46:26.004 [DEBUG] [Thread-121552] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:46:26.038 [INFO] [Thread-121552] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:46:26.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:46:26.726 [DEBUG] [Thread-121552] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:46:26.726 [DEBUG] [Thread-121552] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:46:26.727 [DEBUG] [Thread-121552] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:46:26.758 [DEBUG] [Thread-121552] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:46:26.758 [DEBUG] [Thread-121552] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:46:26.762 [DEBUG] [Thread-121552] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:46:26.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:46:26.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:46:26.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:46:26.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:46:26.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:46:26.780 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:46:26.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:46:26.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:46:26.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:46:26.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.740032 -999.00  +20.80  25.68     10  -11.50 1 1 1 1 1    17    0 31.95 -42.91 ----- 25.7 25.7 296.8 36.3 20.9 -29.9 20.8 -28.9 20.6 -28.8 20.9 -29.6
2025-11-03T19:46:26.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:46:26.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:46:26.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.740032
2025-11-03T19:46:26.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:46:26.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:46:26.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:46:26.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:46:26.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:46:26.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:46:04', tmtdew=40.28, humidity=5.22, cloud=0.0, wind=27.35, temperature=20.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:45:38.765', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:46:26.781 [DEBUG] [Thread-121552] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:46:26.852 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:46:26.864 [DEBUG] [Thread-121555] [transport.py] [_log()] starting thread (client mode): 0x1179a260
2025-11-03T19:46:26.864 [DEBUG] [Thread-121555] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:46:26.879 [DEBUG] [Thread-121555] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:46:26.879 [INFO] [Thread-121555] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:46:26.887 [DEBUG] [Thread-121555] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:46:26.887 [DEBUG] [Thread-121555] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:46:26.887 [DEBUG] [Thread-121555] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:46:26.887 [DEBUG] [Thread-121555] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:46:26.887 [DEBUG] [Thread-121555] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:46:26.887 [DEBUG] [Thread-121555] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:46:26.887 [DEBUG] [Thread-121555] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:46:26.887 [DEBUG] [Thread-121555] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:46:26.887 [DEBUG] [Thread-121555] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:46:26.887 [DEBUG] [Thread-121555] [transport.py] [_log()] client lang: <none>
2025-11-03T19:46:26.887 [DEBUG] [Thread-121555] [transport.py] [_log()] server lang: <none>
2025-11-03T19:46:26.887 [DEBUG] [Thread-121555] [transport.py] [_log()] kex follows: False
2025-11-03T19:46:26.887 [DEBUG] [Thread-121555] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:46:26.887 [DEBUG] [Thread-121555] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:46:26.887 [DEBUG] [Thread-121555] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:46:26.887 [DEBUG] [Thread-121555] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:46:26.887 [DEBUG] [Thread-121555] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:46:26.887 [DEBUG] [Thread-121555] [transport.py] [_log()] Compression: none
2025-11-03T19:46:26.887 [DEBUG] [Thread-121555] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:46:26.945 [DEBUG] [Thread-121555] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:46:26.945 [DEBUG] [Thread-121555] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:46:26.945 [DEBUG] [Thread-121555] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:46:26.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:46:26.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:46:27.001 [DEBUG] [Thread-121555] [transport.py] [_log()] userauth is OK
2025-11-03T19:46:27.001 [DEBUG] [Thread-121555] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:46:27.001 [DEBUG] [Thread-121555] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:46:27.001 [DEBUG] [Thread-121555] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:46:27.001 [DEBUG] [Thread-121555] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:46:27.015 [INFO] [Thread-121555] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:46:27.016 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:46:27.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:46:27.879 [DEBUG] [Thread-121555] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:46:27.879 [DEBUG] [Thread-121555] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:46:27.928 [DEBUG] [Thread-121555] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:46:27.928 [DEBUG] [Thread-121555] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:46:27.938 [DEBUG] [Thread-121555] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:46:27.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:46:27.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:46:27.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:46:27.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:46:27.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:46:27.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:46:27.984 [DEBUG] [Thread-121555] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:46:30.369 [DEBUG] [Thread-121557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:46:45.404 [DEBUG] [Thread-121558 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:46:51.075 [DEBUG] [Thread-121559 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:46:55.627 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:46:55.637 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:46:58.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:46:58.005 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:46:58.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:46:58.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 46, 37), 39.99, 5.28, 0.0, 32.25, 20.93, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:46:58.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:46:37
2025-11-03T19:46:58.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:46:59.045 [DEBUG] [Thread-121560] [transport.py] [_log()] starting thread (client mode): 0x1179a5f0
2025-11-03T19:46:59.045 [DEBUG] [Thread-121560] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:46:59.064 [DEBUG] [Thread-121560] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:46:59.064 [INFO] [Thread-121560] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:46:59.074 [DEBUG] [Thread-121560] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:46:59.074 [DEBUG] [Thread-121560] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:46:59.074 [DEBUG] [Thread-121560] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:46:59.074 [DEBUG] [Thread-121560] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:46:59.074 [DEBUG] [Thread-121560] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:46:59.074 [DEBUG] [Thread-121560] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:46:59.075 [DEBUG] [Thread-121560] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:46:59.075 [DEBUG] [Thread-121560] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:46:59.075 [DEBUG] [Thread-121560] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:46:59.075 [DEBUG] [Thread-121560] [transport.py] [_log()] client lang: <none>
2025-11-03T19:46:59.075 [DEBUG] [Thread-121560] [transport.py] [_log()] server lang: <none>
2025-11-03T19:46:59.075 [DEBUG] [Thread-121560] [transport.py] [_log()] kex follows: False
2025-11-03T19:46:59.075 [DEBUG] [Thread-121560] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:46:59.075 [DEBUG] [Thread-121560] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:46:59.075 [DEBUG] [Thread-121560] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:46:59.075 [DEBUG] [Thread-121560] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:46:59.075 [DEBUG] [Thread-121560] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:46:59.075 [DEBUG] [Thread-121560] [transport.py] [_log()] Compression: none
2025-11-03T19:46:59.075 [DEBUG] [Thread-121560] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:46:59.094 [DEBUG] [Thread-121560] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:46:59.094 [DEBUG] [Thread-121560] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:46:59.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:46:59.095 [DEBUG] [Thread-121560] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:46:59.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:46:59.097 [DEBUG] [Thread-121560] [transport.py] [_log()] userauth is OK
2025-11-03T19:46:59.097 [DEBUG] [Thread-121560] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:46:59.098 [DEBUG] [Thread-121560] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:46:59.098 [DEBUG] [Thread-121560] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:46:59.098 [DEBUG] [Thread-121560] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:46:59.133 [INFO] [Thread-121560] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:46:59.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:46:59.772 [DEBUG] [Thread-121560] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:46:59.772 [DEBUG] [Thread-121560] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:46:59.772 [DEBUG] [Thread-121560] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:46:59.813 [DEBUG] [Thread-121560] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:46:59.813 [DEBUG] [Thread-121560] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:46:59.816 [DEBUG] [Thread-121560] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:46:59.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:46:59.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:46:59.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:46:59.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:46:59.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:46:59.835 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:46:59.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:46:59.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:46:59.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:46:59.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.740379 -999.00  +20.80  24.29     10  -11.20 1 1 1 1 1    15    0 31.79 -50.24 ----- 24.3 24.3 310.4 34.4 20.9 -29.7 20.9 -28.8 20.6 -28.8 20.9 -29.7
2025-11-03T19:46:59.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:46:59.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:46:59.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.740379
2025-11-03T19:46:59.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:46:59.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:46:59.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:46:59.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:46:59.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:46:59.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:46:37', tmtdew=39.99, humidity=5.28, cloud=0.0, wind=32.25, temperature=20.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:46:08.746', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:46:59.836 [DEBUG] [Thread-121560] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:46:59.908 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:46:59.920 [DEBUG] [Thread-121563] [transport.py] [_log()] starting thread (client mode): 0x1174e050
2025-11-03T19:46:59.920 [DEBUG] [Thread-121563] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:46:59.935 [DEBUG] [Thread-121563] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:46:59.935 [INFO] [Thread-121563] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:46:59.945 [DEBUG] [Thread-121563] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:46:59.945 [DEBUG] [Thread-121563] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:46:59.945 [DEBUG] [Thread-121563] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:46:59.945 [DEBUG] [Thread-121563] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:46:59.945 [DEBUG] [Thread-121563] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:46:59.945 [DEBUG] [Thread-121563] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:46:59.945 [DEBUG] [Thread-121563] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:46:59.945 [DEBUG] [Thread-121563] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:46:59.945 [DEBUG] [Thread-121563] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:46:59.945 [DEBUG] [Thread-121563] [transport.py] [_log()] client lang: <none>
2025-11-03T19:46:59.945 [DEBUG] [Thread-121563] [transport.py] [_log()] server lang: <none>
2025-11-03T19:46:59.945 [DEBUG] [Thread-121563] [transport.py] [_log()] kex follows: False
2025-11-03T19:46:59.945 [DEBUG] [Thread-121563] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:46:59.945 [DEBUG] [Thread-121563] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:46:59.945 [DEBUG] [Thread-121563] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:46:59.945 [DEBUG] [Thread-121563] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:46:59.945 [DEBUG] [Thread-121563] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:46:59.945 [DEBUG] [Thread-121563] [transport.py] [_log()] Compression: none
2025-11-03T19:46:59.945 [DEBUG] [Thread-121563] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:47:00.001 [DEBUG] [Thread-121563] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:47:00.001 [DEBUG] [Thread-121563] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:47:00.002 [DEBUG] [Thread-121563] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:47:00.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:47:00.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:47:00.056 [DEBUG] [Thread-121563] [transport.py] [_log()] userauth is OK
2025-11-03T19:47:00.057 [DEBUG] [Thread-121563] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:47:00.057 [DEBUG] [Thread-121563] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:47:00.057 [DEBUG] [Thread-121563] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:47:00.057 [DEBUG] [Thread-121563] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:47:00.075 [INFO] [Thread-121563] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:47:00.076 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:47:00.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:47:00.449 [DEBUG] [Thread-121565 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:47:00.943 [DEBUG] [Thread-121563] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:47:00.944 [DEBUG] [Thread-121563] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:47:00.991 [DEBUG] [Thread-121563] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:47:00.991 [DEBUG] [Thread-121563] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:47:01.001 [DEBUG] [Thread-121563] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:47:01.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:47:01.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:47:01.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:47:01.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:47:01.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:47:01.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:47:01.036 [DEBUG] [Thread-121563] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:47:15.499 [DEBUG] [Thread-121566 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:47:30.538 [DEBUG] [Thread-121567 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:47:31.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:47:31.058 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:47:31.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:47:31.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 47, 9), 40.08, 5.23, 0.0, 31.04, 20.87, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:47:31.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:47:09
2025-11-03T19:47:31.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:47:32.044 [DEBUG] [Thread-121568] [transport.py] [_log()] starting thread (client mode): 0x1179a110
2025-11-03T19:47:32.044 [DEBUG] [Thread-121568] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:47:32.056 [DEBUG] [Thread-121568] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:47:32.056 [INFO] [Thread-121568] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:47:32.058 [DEBUG] [Thread-121568] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:47:32.058 [DEBUG] [Thread-121568] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:47:32.058 [DEBUG] [Thread-121568] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:47:32.058 [DEBUG] [Thread-121568] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:47:32.058 [DEBUG] [Thread-121568] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:47:32.058 [DEBUG] [Thread-121568] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:47:32.058 [DEBUG] [Thread-121568] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:47:32.058 [DEBUG] [Thread-121568] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:47:32.058 [DEBUG] [Thread-121568] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:47:32.058 [DEBUG] [Thread-121568] [transport.py] [_log()] client lang: <none>
2025-11-03T19:47:32.058 [DEBUG] [Thread-121568] [transport.py] [_log()] server lang: <none>
2025-11-03T19:47:32.058 [DEBUG] [Thread-121568] [transport.py] [_log()] kex follows: False
2025-11-03T19:47:32.058 [DEBUG] [Thread-121568] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:47:32.058 [DEBUG] [Thread-121568] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:47:32.058 [DEBUG] [Thread-121568] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:47:32.058 [DEBUG] [Thread-121568] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:47:32.058 [DEBUG] [Thread-121568] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:47:32.058 [DEBUG] [Thread-121568] [transport.py] [_log()] Compression: none
2025-11-03T19:47:32.058 [DEBUG] [Thread-121568] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:47:32.067 [DEBUG] [Thread-121568] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:47:32.067 [DEBUG] [Thread-121568] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:47:32.067 [DEBUG] [Thread-121568] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:47:32.067 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:47:32.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:47:32.068 [DEBUG] [Thread-121568] [transport.py] [_log()] userauth is OK
2025-11-03T19:47:32.068 [DEBUG] [Thread-121568] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:47:32.068 [DEBUG] [Thread-121568] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:47:32.068 [DEBUG] [Thread-121568] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:47:32.069 [DEBUG] [Thread-121568] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:47:32.082 [INFO] [Thread-121568] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:47:32.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:47:32.743 [DEBUG] [Thread-121568] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:47:32.743 [DEBUG] [Thread-121568] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:47:32.744 [DEBUG] [Thread-121568] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:47:32.784 [DEBUG] [Thread-121568] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:47:32.784 [DEBUG] [Thread-121568] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:47:32.797 [DEBUG] [Thread-121568] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:47:32.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:47:32.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:47:32.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:47:32.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:47:32.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:47:32.827 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:47:32.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:47:32.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:47:32.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:47:32.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.740726 -999.00  +20.80  30.55     10  -11.20 1 1 2 1 1    14    0 30.76 -58.04 ----- 30.6 30.6 304.4 35.2 20.9 -29.9 20.8 -28.8 20.6 -28.4 20.8 -29.4
2025-11-03T19:47:32.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:47:32.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:47:32.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.740726
2025-11-03T19:47:32.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:47:32.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:47:32.831 [DEBUG] [Thread-121568] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:47:32.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:47:32.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:47:32.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:47:32.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:47:09', tmtdew=40.08, humidity=5.23, cloud=0.0, wind=31.04, temperature=20.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:46:38.726', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:47:32.915 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:47:32.927 [DEBUG] [Thread-121571] [transport.py] [_log()] starting thread (client mode): 0x1179a7d0
2025-11-03T19:47:32.927 [DEBUG] [Thread-121571] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:47:32.942 [DEBUG] [Thread-121571] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:47:32.943 [INFO] [Thread-121571] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:47:32.950 [DEBUG] [Thread-121571] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:47:32.950 [DEBUG] [Thread-121571] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:47:32.950 [DEBUG] [Thread-121571] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:47:32.950 [DEBUG] [Thread-121571] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:47:32.950 [DEBUG] [Thread-121571] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:47:32.950 [DEBUG] [Thread-121571] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:47:32.950 [DEBUG] [Thread-121571] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:47:32.951 [DEBUG] [Thread-121571] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:47:32.951 [DEBUG] [Thread-121571] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:47:32.951 [DEBUG] [Thread-121571] [transport.py] [_log()] client lang: <none>
2025-11-03T19:47:32.951 [DEBUG] [Thread-121571] [transport.py] [_log()] server lang: <none>
2025-11-03T19:47:32.951 [DEBUG] [Thread-121571] [transport.py] [_log()] kex follows: False
2025-11-03T19:47:32.951 [DEBUG] [Thread-121571] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:47:32.951 [DEBUG] [Thread-121571] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:47:32.951 [DEBUG] [Thread-121571] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:47:32.951 [DEBUG] [Thread-121571] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:47:32.951 [DEBUG] [Thread-121571] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:47:32.951 [DEBUG] [Thread-121571] [transport.py] [_log()] Compression: none
2025-11-03T19:47:32.951 [DEBUG] [Thread-121571] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:47:33.007 [DEBUG] [Thread-121571] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:47:33.008 [DEBUG] [Thread-121571] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:47:33.009 [DEBUG] [Thread-121571] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:47:33.009 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:47:33.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:47:33.064 [DEBUG] [Thread-121571] [transport.py] [_log()] userauth is OK
2025-11-03T19:47:33.064 [DEBUG] [Thread-121571] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:47:33.064 [DEBUG] [Thread-121571] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:47:33.064 [DEBUG] [Thread-121571] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:47:33.065 [DEBUG] [Thread-121571] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:47:33.084 [INFO] [Thread-121571] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:47:33.085 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:47:33.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:47:33.968 [DEBUG] [Thread-121571] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:47:33.968 [DEBUG] [Thread-121571] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:47:34.015 [DEBUG] [Thread-121571] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:47:34.015 [DEBUG] [Thread-121571] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:47:34.023 [DEBUG] [Thread-121571] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:47:34.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:47:34.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:47:34.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:47:34.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:47:34.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:47:34.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:47:34.056 [DEBUG] [Thread-121571] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:47:45.567 [DEBUG] [Thread-121573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:47:51.346 [DEBUG] [Thread-121574 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:48:00.619 [DEBUG] [Thread-121575 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:48:02.379 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:48:02.380 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:48:04.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:48:04.078 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:48:04.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:48:04.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 47, 41), 39.88, 5.8, 0.0, 27.17, 20.78, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:48:04.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:47:41
2025-11-03T19:48:04.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:48:05.116 [DEBUG] [Thread-121576] [transport.py] [_log()] starting thread (client mode): 0xeda07c0
2025-11-03T19:48:05.116 [DEBUG] [Thread-121576] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:48:05.136 [DEBUG] [Thread-121576] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:48:05.136 [INFO] [Thread-121576] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:48:05.139 [DEBUG] [Thread-121576] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:48:05.139 [DEBUG] [Thread-121576] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:48:05.139 [DEBUG] [Thread-121576] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:48:05.139 [DEBUG] [Thread-121576] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:48:05.139 [DEBUG] [Thread-121576] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:48:05.139 [DEBUG] [Thread-121576] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:48:05.139 [DEBUG] [Thread-121576] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:48:05.139 [DEBUG] [Thread-121576] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:48:05.139 [DEBUG] [Thread-121576] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:48:05.139 [DEBUG] [Thread-121576] [transport.py] [_log()] client lang: <none>
2025-11-03T19:48:05.139 [DEBUG] [Thread-121576] [transport.py] [_log()] server lang: <none>
2025-11-03T19:48:05.139 [DEBUG] [Thread-121576] [transport.py] [_log()] kex follows: False
2025-11-03T19:48:05.139 [DEBUG] [Thread-121576] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:48:05.139 [DEBUG] [Thread-121576] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:48:05.139 [DEBUG] [Thread-121576] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:48:05.139 [DEBUG] [Thread-121576] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:48:05.139 [DEBUG] [Thread-121576] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:48:05.139 [DEBUG] [Thread-121576] [transport.py] [_log()] Compression: none
2025-11-03T19:48:05.139 [DEBUG] [Thread-121576] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:48:05.155 [DEBUG] [Thread-121576] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:48:05.155 [DEBUG] [Thread-121576] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:48:05.155 [DEBUG] [Thread-121576] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:48:05.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:48:05.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:48:05.197 [DEBUG] [Thread-121576] [transport.py] [_log()] userauth is OK
2025-11-03T19:48:05.197 [DEBUG] [Thread-121576] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:48:05.197 [DEBUG] [Thread-121576] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:48:05.197 [DEBUG] [Thread-121576] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:48:05.197 [DEBUG] [Thread-121576] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:48:05.223 [INFO] [Thread-121576] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:48:05.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:48:05.870 [DEBUG] [Thread-121576] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:48:05.870 [DEBUG] [Thread-121576] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:48:05.870 [DEBUG] [Thread-121576] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:48:05.911 [DEBUG] [Thread-121576] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:48:05.911 [DEBUG] [Thread-121576] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:48:05.914 [DEBUG] [Thread-121576] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:48:05.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:48:05.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:48:05.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:48:05.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:48:05.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:48:05.933 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:48:05.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:48:05.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:48:05.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:48:05.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.741073 -999.00  +20.70  23.12     10  -11.30 1 1 1 1 1    13    0 30.79 -57.92 ----- 23.1 23.1 287.6 31.0 20.9 -29.7 20.8 -28.9 20.6 -28.6 20.8 -29.5
2025-11-03T19:48:05.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:48:05.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:48:05.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.741073
2025-11-03T19:48:05.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:48:05.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:48:05.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:48:05.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:48:05.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:48:05.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:47:41', tmtdew=39.88, humidity=5.8, cloud=0.0, wind=27.17, temperature=20.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:47:08.707', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:48:05.935 [DEBUG] [Thread-121576] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:48:06.004 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:48:06.016 [DEBUG] [Thread-121579] [transport.py] [_log()] starting thread (client mode): 0x11763790
2025-11-03T19:48:06.016 [DEBUG] [Thread-121579] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:48:06.032 [DEBUG] [Thread-121579] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:48:06.033 [INFO] [Thread-121579] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:48:06.040 [DEBUG] [Thread-121579] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:48:06.041 [DEBUG] [Thread-121579] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:48:06.041 [DEBUG] [Thread-121579] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:48:06.041 [DEBUG] [Thread-121579] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:48:06.041 [DEBUG] [Thread-121579] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:48:06.041 [DEBUG] [Thread-121579] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:48:06.041 [DEBUG] [Thread-121579] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:48:06.041 [DEBUG] [Thread-121579] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:48:06.041 [DEBUG] [Thread-121579] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:48:06.041 [DEBUG] [Thread-121579] [transport.py] [_log()] client lang: <none>
2025-11-03T19:48:06.041 [DEBUG] [Thread-121579] [transport.py] [_log()] server lang: <none>
2025-11-03T19:48:06.041 [DEBUG] [Thread-121579] [transport.py] [_log()] kex follows: False
2025-11-03T19:48:06.041 [DEBUG] [Thread-121579] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:48:06.041 [DEBUG] [Thread-121579] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:48:06.041 [DEBUG] [Thread-121579] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:48:06.041 [DEBUG] [Thread-121579] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:48:06.042 [DEBUG] [Thread-121579] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:48:06.042 [DEBUG] [Thread-121579] [transport.py] [_log()] Compression: none
2025-11-03T19:48:06.042 [DEBUG] [Thread-121579] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:48:06.099 [DEBUG] [Thread-121579] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:48:06.099 [DEBUG] [Thread-121579] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:48:06.100 [DEBUG] [Thread-121579] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:48:06.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:48:06.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:48:06.155 [DEBUG] [Thread-121579] [transport.py] [_log()] userauth is OK
2025-11-03T19:48:06.155 [DEBUG] [Thread-121579] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:48:06.155 [DEBUG] [Thread-121579] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:48:06.155 [DEBUG] [Thread-121579] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:48:06.156 [DEBUG] [Thread-121579] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:48:06.174 [INFO] [Thread-121579] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:48:06.175 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:48:06.175 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:48:06.993 [DEBUG] [Thread-121579] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:48:06.993 [DEBUG] [Thread-121579] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:48:07.041 [DEBUG] [Thread-121579] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:48:07.041 [DEBUG] [Thread-121579] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:48:07.051 [DEBUG] [Thread-121579] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:48:07.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:48:07.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:48:07.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:48:07.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:48:07.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:48:07.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:48:07.087 [DEBUG] [Thread-121579] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:48:15.657 [DEBUG] [Thread-121581 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:48:30.694 [DEBUG] [Thread-121582 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:48:37.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:48:37.085 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:48:37.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:48:37.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 48, 14), 39.81, 5.83, 0.0, 27.47, 20.77, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:48:37.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:48:14
2025-11-03T19:48:38.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:48:38.172 [DEBUG] [Thread-121583] [transport.py] [_log()] starting thread (client mode): 0x11762440
2025-11-03T19:48:38.172 [DEBUG] [Thread-121583] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:48:38.175 [DEBUG] [Thread-121583] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:48:38.175 [INFO] [Thread-121583] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:48:38.176 [DEBUG] [Thread-121583] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:48:38.176 [DEBUG] [Thread-121583] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:48:38.176 [DEBUG] [Thread-121583] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:48:38.176 [DEBUG] [Thread-121583] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:48:38.176 [DEBUG] [Thread-121583] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:48:38.176 [DEBUG] [Thread-121583] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:48:38.176 [DEBUG] [Thread-121583] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:48:38.176 [DEBUG] [Thread-121583] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:48:38.176 [DEBUG] [Thread-121583] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:48:38.176 [DEBUG] [Thread-121583] [transport.py] [_log()] client lang: <none>
2025-11-03T19:48:38.176 [DEBUG] [Thread-121583] [transport.py] [_log()] server lang: <none>
2025-11-03T19:48:38.176 [DEBUG] [Thread-121583] [transport.py] [_log()] kex follows: False
2025-11-03T19:48:38.176 [DEBUG] [Thread-121583] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:48:38.177 [DEBUG] [Thread-121583] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:48:38.177 [DEBUG] [Thread-121583] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:48:38.177 [DEBUG] [Thread-121583] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:48:38.177 [DEBUG] [Thread-121583] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:48:38.177 [DEBUG] [Thread-121583] [transport.py] [_log()] Compression: none
2025-11-03T19:48:38.177 [DEBUG] [Thread-121583] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:48:38.183 [DEBUG] [Thread-121583] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:48:38.184 [DEBUG] [Thread-121583] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:48:38.184 [DEBUG] [Thread-121583] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:48:38.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:48:38.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:48:38.184 [DEBUG] [Thread-121583] [transport.py] [_log()] userauth is OK
2025-11-03T19:48:38.184 [DEBUG] [Thread-121583] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:48:38.184 [DEBUG] [Thread-121583] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:48:38.184 [DEBUG] [Thread-121583] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:48:38.184 [DEBUG] [Thread-121583] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:48:38.194 [INFO] [Thread-121583] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:48:38.194 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:48:38.756 [DEBUG] [Thread-121583] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:48:38.757 [DEBUG] [Thread-121583] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:48:38.757 [DEBUG] [Thread-121583] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:48:38.798 [DEBUG] [Thread-121583] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:48:38.798 [DEBUG] [Thread-121583] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:48:38.801 [DEBUG] [Thread-121583] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:48:38.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:48:38.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:48:38.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:48:38.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:48:38.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:48:38.827 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:48:38.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:48:38.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:48:38.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:48:38.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.741421 -999.00  +20.70  23.92     10  -11.30 1 1 1 1 1    11    0 31.16 -62.41 ----- 23.9 23.9 298.1 29.8 20.9 -29.7 20.8 -28.8 20.5 -28.5 20.8 -29.4
2025-11-03T19:48:38.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:48:38.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:48:38.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.741421
2025-11-03T19:48:38.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:48:38.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:48:38.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:48:38.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:48:38.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:48:38.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:48:14', tmtdew=39.81, humidity=5.83, cloud=0.0, wind=27.47, temperature=20.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:47:38.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:48:38.831 [DEBUG] [Thread-121583] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:48:38.913 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:48:38.925 [DEBUG] [Thread-121586] [transport.py] [_log()] starting thread (client mode): 0xeda1210
2025-11-03T19:48:38.925 [DEBUG] [Thread-121586] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:48:38.942 [DEBUG] [Thread-121586] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:48:38.942 [INFO] [Thread-121586] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:48:38.950 [DEBUG] [Thread-121586] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:48:38.950 [DEBUG] [Thread-121586] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:48:38.951 [DEBUG] [Thread-121586] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:48:38.951 [DEBUG] [Thread-121586] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:48:38.951 [DEBUG] [Thread-121586] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:48:38.951 [DEBUG] [Thread-121586] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:48:38.951 [DEBUG] [Thread-121586] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:48:38.951 [DEBUG] [Thread-121586] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:48:38.952 [DEBUG] [Thread-121586] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:48:38.952 [DEBUG] [Thread-121586] [transport.py] [_log()] client lang: <none>
2025-11-03T19:48:38.952 [DEBUG] [Thread-121586] [transport.py] [_log()] server lang: <none>
2025-11-03T19:48:38.952 [DEBUG] [Thread-121586] [transport.py] [_log()] kex follows: False
2025-11-03T19:48:38.952 [DEBUG] [Thread-121586] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:48:38.952 [DEBUG] [Thread-121586] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:48:38.952 [DEBUG] [Thread-121586] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:48:38.952 [DEBUG] [Thread-121586] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:48:38.952 [DEBUG] [Thread-121586] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:48:38.952 [DEBUG] [Thread-121586] [transport.py] [_log()] Compression: none
2025-11-03T19:48:38.952 [DEBUG] [Thread-121586] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:48:39.010 [DEBUG] [Thread-121586] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:48:39.011 [DEBUG] [Thread-121586] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:48:39.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:48:39.012 [DEBUG] [Thread-121586] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:48:39.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:48:39.066 [DEBUG] [Thread-121586] [transport.py] [_log()] userauth is OK
2025-11-03T19:48:39.066 [DEBUG] [Thread-121586] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:48:39.066 [DEBUG] [Thread-121586] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:48:39.066 [DEBUG] [Thread-121586] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:48:39.066 [DEBUG] [Thread-121586] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:48:39.081 [INFO] [Thread-121586] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:48:39.081 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:48:39.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:48:39.931 [DEBUG] [Thread-121586] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:48:39.931 [DEBUG] [Thread-121586] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:48:39.980 [DEBUG] [Thread-121586] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:48:39.980 [DEBUG] [Thread-121586] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:48:39.989 [DEBUG] [Thread-121586] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:48:39.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:48:40.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:48:40.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:48:40.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:48:40.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:48:40.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:48:40.034 [DEBUG] [Thread-121586] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:48:45.726 [DEBUG] [Thread-121588 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:48:51.498 [DEBUG] [Thread-121589 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:49:00.779 [DEBUG] [Thread-121590 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:49:10.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:49:10.057 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:49:10.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:49:10.355 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:49:10.355 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:49:10.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 48, 46), 39.76, 5.83, 0.0, 24.12, 20.77, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:49:10.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:48:46
2025-11-03T19:49:10.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:49:11.027 [DEBUG] [Thread-121591] [transport.py] [_log()] starting thread (client mode): 0x1174e980
2025-11-03T19:49:11.027 [DEBUG] [Thread-121591] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:49:11.048 [DEBUG] [Thread-121591] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:49:11.048 [INFO] [Thread-121591] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:49:11.051 [DEBUG] [Thread-121591] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:49:11.051 [DEBUG] [Thread-121591] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:49:11.051 [DEBUG] [Thread-121591] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:49:11.051 [DEBUG] [Thread-121591] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:49:11.051 [DEBUG] [Thread-121591] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:49:11.051 [DEBUG] [Thread-121591] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:49:11.051 [DEBUG] [Thread-121591] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:49:11.051 [DEBUG] [Thread-121591] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:49:11.051 [DEBUG] [Thread-121591] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:49:11.052 [DEBUG] [Thread-121591] [transport.py] [_log()] client lang: <none>
2025-11-03T19:49:11.052 [DEBUG] [Thread-121591] [transport.py] [_log()] server lang: <none>
2025-11-03T19:49:11.052 [DEBUG] [Thread-121591] [transport.py] [_log()] kex follows: False
2025-11-03T19:49:11.052 [DEBUG] [Thread-121591] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:49:11.052 [DEBUG] [Thread-121591] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:49:11.052 [DEBUG] [Thread-121591] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:49:11.052 [DEBUG] [Thread-121591] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:49:11.052 [DEBUG] [Thread-121591] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:49:11.052 [DEBUG] [Thread-121591] [transport.py] [_log()] Compression: none
2025-11-03T19:49:11.052 [DEBUG] [Thread-121591] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:49:11.069 [DEBUG] [Thread-121591] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:49:11.069 [DEBUG] [Thread-121591] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:49:11.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:49:11.069 [DEBUG] [Thread-121591] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:49:11.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:49:11.070 [DEBUG] [Thread-121591] [transport.py] [_log()] userauth is OK
2025-11-03T19:49:11.070 [DEBUG] [Thread-121591] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:49:11.070 [DEBUG] [Thread-121591] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:49:11.070 [DEBUG] [Thread-121591] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:49:11.070 [DEBUG] [Thread-121591] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:49:11.079 [INFO] [Thread-121591] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:49:11.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:49:11.710 [DEBUG] [Thread-121591] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:49:11.710 [DEBUG] [Thread-121591] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:49:11.710 [DEBUG] [Thread-121591] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:49:11.752 [DEBUG] [Thread-121591] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:49:11.752 [DEBUG] [Thread-121591] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:49:11.754 [DEBUG] [Thread-121591] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:49:11.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:49:11.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:49:11.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:49:11.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:49:11.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:49:11.774 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:49:11.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:49:11.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:49:11.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:49:11.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.742115 -999.00  +20.70  25.25     10  -11.20 1 1 1 1 1     9    0 30.80 -71.96 ----- 25.2 25.2 305.2 33.2 20.9 -29.8 20.7 -28.7 20.5 -28.6 20.8 -29.2
2025-11-03T19:49:11.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:49:11.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:49:11.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.742115
2025-11-03T19:49:11.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:49:11.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:49:11.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:49:11.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:49:11.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:49:11.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:48:46', tmtdew=39.76, humidity=5.83, cloud=0.0, wind=24.12, temperature=20.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:48:38.736', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:49:11.776 [DEBUG] [Thread-121591] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:49:11.848 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:49:11.861 [DEBUG] [Thread-121594] [transport.py] [_log()] starting thread (client mode): 0x117eafb0
2025-11-03T19:49:11.861 [DEBUG] [Thread-121594] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:49:11.876 [DEBUG] [Thread-121594] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:49:11.876 [INFO] [Thread-121594] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:49:11.885 [DEBUG] [Thread-121594] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:49:11.885 [DEBUG] [Thread-121594] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:49:11.885 [DEBUG] [Thread-121594] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:49:11.885 [DEBUG] [Thread-121594] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:49:11.885 [DEBUG] [Thread-121594] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:49:11.885 [DEBUG] [Thread-121594] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:49:11.885 [DEBUG] [Thread-121594] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:49:11.885 [DEBUG] [Thread-121594] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:49:11.885 [DEBUG] [Thread-121594] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:49:11.885 [DEBUG] [Thread-121594] [transport.py] [_log()] client lang: <none>
2025-11-03T19:49:11.885 [DEBUG] [Thread-121594] [transport.py] [_log()] server lang: <none>
2025-11-03T19:49:11.885 [DEBUG] [Thread-121594] [transport.py] [_log()] kex follows: False
2025-11-03T19:49:11.885 [DEBUG] [Thread-121594] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:49:11.885 [DEBUG] [Thread-121594] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:49:11.885 [DEBUG] [Thread-121594] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:49:11.885 [DEBUG] [Thread-121594] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:49:11.885 [DEBUG] [Thread-121594] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:49:11.885 [DEBUG] [Thread-121594] [transport.py] [_log()] Compression: none
2025-11-03T19:49:11.885 [DEBUG] [Thread-121594] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:49:11.940 [DEBUG] [Thread-121594] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:49:11.940 [DEBUG] [Thread-121594] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:49:11.940 [DEBUG] [Thread-121594] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:49:11.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:49:11.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:49:12.002 [DEBUG] [Thread-121594] [transport.py] [_log()] userauth is OK
2025-11-03T19:49:12.003 [DEBUG] [Thread-121594] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:49:12.003 [DEBUG] [Thread-121594] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:49:12.003 [DEBUG] [Thread-121594] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:49:12.003 [DEBUG] [Thread-121594] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:49:12.022 [INFO] [Thread-121594] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:49:12.022 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:49:12.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:49:12.850 [DEBUG] [Thread-121594] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:49:12.851 [DEBUG] [Thread-121594] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:49:12.899 [DEBUG] [Thread-121594] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:49:12.899 [DEBUG] [Thread-121594] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:49:12.909 [DEBUG] [Thread-121594] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:49:12.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:49:12.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:49:12.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:49:12.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:49:12.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:49:12.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:49:12.952 [DEBUG] [Thread-121594] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:49:15.817 [DEBUG] [Thread-121596 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:49:30.858 [DEBUG] [Thread-121597 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:49:42.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:49:42.974 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:49:42.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:49:43.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 49, 19), 39.75, 5.83, 0.0, 24.49, 20.73, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:49:43.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:49:19
2025-11-03T19:49:43.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:49:44.029 [DEBUG] [Thread-121598] [transport.py] [_log()] starting thread (client mode): 0xed34940
2025-11-03T19:49:44.029 [DEBUG] [Thread-121598] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:49:44.049 [DEBUG] [Thread-121598] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:49:44.049 [INFO] [Thread-121598] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:49:44.052 [DEBUG] [Thread-121598] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:49:44.052 [DEBUG] [Thread-121598] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:49:44.052 [DEBUG] [Thread-121598] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:49:44.052 [DEBUG] [Thread-121598] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:49:44.052 [DEBUG] [Thread-121598] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:49:44.052 [DEBUG] [Thread-121598] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:49:44.052 [DEBUG] [Thread-121598] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:49:44.052 [DEBUG] [Thread-121598] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:49:44.052 [DEBUG] [Thread-121598] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:49:44.052 [DEBUG] [Thread-121598] [transport.py] [_log()] client lang: <none>
2025-11-03T19:49:44.052 [DEBUG] [Thread-121598] [transport.py] [_log()] server lang: <none>
2025-11-03T19:49:44.052 [DEBUG] [Thread-121598] [transport.py] [_log()] kex follows: False
2025-11-03T19:49:44.052 [DEBUG] [Thread-121598] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:49:44.052 [DEBUG] [Thread-121598] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:49:44.052 [DEBUG] [Thread-121598] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:49:44.052 [DEBUG] [Thread-121598] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:49:44.052 [DEBUG] [Thread-121598] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:49:44.052 [DEBUG] [Thread-121598] [transport.py] [_log()] Compression: none
2025-11-03T19:49:44.052 [DEBUG] [Thread-121598] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:49:44.069 [DEBUG] [Thread-121598] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:49:44.070 [DEBUG] [Thread-121598] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:49:44.070 [DEBUG] [Thread-121598] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:49:44.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:49:44.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:49:44.072 [DEBUG] [Thread-121598] [transport.py] [_log()] userauth is OK
2025-11-03T19:49:44.072 [DEBUG] [Thread-121598] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:49:44.072 [DEBUG] [Thread-121598] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:49:44.073 [DEBUG] [Thread-121598] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:49:44.073 [DEBUG] [Thread-121598] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:49:44.099 [INFO] [Thread-121598] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:49:44.099 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:49:44.798 [DEBUG] [Thread-121598] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:49:44.798 [DEBUG] [Thread-121598] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:49:44.798 [DEBUG] [Thread-121598] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:49:44.840 [DEBUG] [Thread-121598] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:49:44.840 [DEBUG] [Thread-121598] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:49:44.842 [DEBUG] [Thread-121598] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:49:44.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:49:44.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:49:44.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:49:44.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:49:44.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:49:44.858 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:49:44.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:49:44.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:49:44.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:49:44.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.742462 -999.00  +20.70  26.41     10  -11.10 1 1 1 1 1     8    0 30.67 -74.41 ----- 26.4 26.4 311.8 33.2 20.8 -29.7 20.7 -28.8 20.5 -28.5 20.8 -29.3
2025-11-03T19:49:44.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:49:44.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:49:44.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.742462
2025-11-03T19:49:44.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:49:44.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:49:44.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:49:44.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:49:44.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:49:44.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:49:19', tmtdew=39.75, humidity=5.83, cloud=0.0, wind=24.49, temperature=20.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:49:08.717', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:49:44.859 [DEBUG] [Thread-121598] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:49:44.936 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:49:44.948 [DEBUG] [Thread-121601] [transport.py] [_log()] starting thread (client mode): 0x1174c0a0
2025-11-03T19:49:44.948 [DEBUG] [Thread-121601] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:49:44.964 [DEBUG] [Thread-121601] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:49:44.964 [INFO] [Thread-121601] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:49:44.975 [DEBUG] [Thread-121601] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:49:44.975 [DEBUG] [Thread-121601] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:49:44.975 [DEBUG] [Thread-121601] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:49:44.975 [DEBUG] [Thread-121601] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:49:44.976 [DEBUG] [Thread-121601] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:49:44.976 [DEBUG] [Thread-121601] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:49:44.976 [DEBUG] [Thread-121601] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:49:44.976 [DEBUG] [Thread-121601] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:49:44.976 [DEBUG] [Thread-121601] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:49:44.976 [DEBUG] [Thread-121601] [transport.py] [_log()] client lang: <none>
2025-11-03T19:49:44.976 [DEBUG] [Thread-121601] [transport.py] [_log()] server lang: <none>
2025-11-03T19:49:44.976 [DEBUG] [Thread-121601] [transport.py] [_log()] kex follows: False
2025-11-03T19:49:44.976 [DEBUG] [Thread-121601] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:49:44.976 [DEBUG] [Thread-121601] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:49:44.976 [DEBUG] [Thread-121601] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:49:44.976 [DEBUG] [Thread-121601] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:49:44.976 [DEBUG] [Thread-121601] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:49:44.976 [DEBUG] [Thread-121601] [transport.py] [_log()] Compression: none
2025-11-03T19:49:44.976 [DEBUG] [Thread-121601] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:49:45.031 [DEBUG] [Thread-121601] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:49:45.032 [DEBUG] [Thread-121601] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:49:45.032 [DEBUG] [Thread-121601] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:49:45.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:49:45.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:49:45.087 [DEBUG] [Thread-121601] [transport.py] [_log()] userauth is OK
2025-11-03T19:49:45.088 [DEBUG] [Thread-121601] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:49:45.088 [DEBUG] [Thread-121601] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:49:45.088 [DEBUG] [Thread-121601] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:49:45.088 [DEBUG] [Thread-121601] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:49:45.102 [INFO] [Thread-121601] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:49:45.102 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:49:45.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:49:45.898 [DEBUG] [Thread-121603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:49:45.948 [DEBUG] [Thread-121601] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:49:45.948 [DEBUG] [Thread-121601] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:49:45.996 [DEBUG] [Thread-121601] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:49:45.996 [DEBUG] [Thread-121601] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:49:46.004 [DEBUG] [Thread-121601] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:49:46.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:49:46.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:49:46.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:49:46.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:49:46.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:49:46.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:49:46.035 [DEBUG] [Thread-121601] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:49:51.744 [DEBUG] [Thread-121604 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:50:00.938 [DEBUG] [Thread-121605 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:50:15.971 [DEBUG] [Thread-121606 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:50:16.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:50:16.055 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:50:16.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:50:16.562 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:50:16.563 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:50:16.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 49, 51), 39.62, 5.85, 0.0, 29.55, 20.7, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:50:16.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:49:51
2025-11-03T19:50:16.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:50:17.056 [DEBUG] [Thread-121607] [transport.py] [_log()] starting thread (client mode): 0x11798e20
2025-11-03T19:50:17.056 [DEBUG] [Thread-121607] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:50:17.077 [DEBUG] [Thread-121607] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:50:17.077 [INFO] [Thread-121607] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:50:17.080 [DEBUG] [Thread-121607] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:50:17.080 [DEBUG] [Thread-121607] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:50:17.080 [DEBUG] [Thread-121607] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:50:17.080 [DEBUG] [Thread-121607] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:50:17.080 [DEBUG] [Thread-121607] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:50:17.080 [DEBUG] [Thread-121607] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:50:17.081 [DEBUG] [Thread-121607] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:50:17.081 [DEBUG] [Thread-121607] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:50:17.081 [DEBUG] [Thread-121607] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:50:17.081 [DEBUG] [Thread-121607] [transport.py] [_log()] client lang: <none>
2025-11-03T19:50:17.081 [DEBUG] [Thread-121607] [transport.py] [_log()] server lang: <none>
2025-11-03T19:50:17.081 [DEBUG] [Thread-121607] [transport.py] [_log()] kex follows: False
2025-11-03T19:50:17.081 [DEBUG] [Thread-121607] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:50:17.081 [DEBUG] [Thread-121607] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:50:17.081 [DEBUG] [Thread-121607] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:50:17.081 [DEBUG] [Thread-121607] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:50:17.081 [DEBUG] [Thread-121607] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:50:17.082 [DEBUG] [Thread-121607] [transport.py] [_log()] Compression: none
2025-11-03T19:50:17.082 [DEBUG] [Thread-121607] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:50:17.101 [DEBUG] [Thread-121607] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:50:17.101 [DEBUG] [Thread-121607] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:50:17.102 [DEBUG] [Thread-121607] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:50:17.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:50:17.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:50:17.104 [DEBUG] [Thread-121607] [transport.py] [_log()] userauth is OK
2025-11-03T19:50:17.104 [DEBUG] [Thread-121607] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:50:17.104 [DEBUG] [Thread-121607] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:50:17.105 [DEBUG] [Thread-121607] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:50:17.105 [DEBUG] [Thread-121607] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:50:17.140 [INFO] [Thread-121607] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:50:17.141 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:50:20.458 [DEBUG] [Thread-121607] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:50:20.459 [DEBUG] [Thread-121607] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:50:20.459 [DEBUG] [Thread-121607] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:50:20.499 [DEBUG] [Thread-121607] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:50:20.499 [DEBUG] [Thread-121607] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:50:20.503 [DEBUG] [Thread-121607] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:50:20.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:50:20.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:50:20.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:50:20.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:50:20.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:50:20.576 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:50:20.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:50:20.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:50:20.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:50:20.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.742810 -999.00  +20.70  28.19     10  -11.00 1 1 1 1 1     8    0 30.14 -73.29 ----- 28.2 28.2 304.6 33.2 20.8 -29.7 20.7 -28.8 20.4 -28.4 20.7 -29.2
2025-11-03T19:50:20.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:50:20.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:50:20.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.742810
2025-11-03T19:50:20.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:50:20.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:50:20.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:50:20.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:50:20.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:50:20.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:49:51', tmtdew=39.62, humidity=5.85, cloud=0.0, wind=29.55, temperature=20.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:49:38.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:50:20.583 [DEBUG] [Thread-121607] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:50:20.665 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:50:20.678 [DEBUG] [Thread-121610] [transport.py] [_log()] starting thread (client mode): 0x11762e60
2025-11-03T19:50:20.678 [DEBUG] [Thread-121610] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:50:20.695 [DEBUG] [Thread-121610] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:50:20.695 [INFO] [Thread-121610] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:50:20.712 [DEBUG] [Thread-121610] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:50:20.712 [DEBUG] [Thread-121610] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:50:20.712 [DEBUG] [Thread-121610] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:50:20.712 [DEBUG] [Thread-121610] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:50:20.712 [DEBUG] [Thread-121610] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:50:20.713 [DEBUG] [Thread-121610] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:50:20.713 [DEBUG] [Thread-121610] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:50:20.713 [DEBUG] [Thread-121610] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:50:20.713 [DEBUG] [Thread-121610] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:50:20.713 [DEBUG] [Thread-121610] [transport.py] [_log()] client lang: <none>
2025-11-03T19:50:20.713 [DEBUG] [Thread-121610] [transport.py] [_log()] server lang: <none>
2025-11-03T19:50:20.713 [DEBUG] [Thread-121610] [transport.py] [_log()] kex follows: False
2025-11-03T19:50:20.713 [DEBUG] [Thread-121610] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:50:20.714 [DEBUG] [Thread-121610] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:50:20.714 [DEBUG] [Thread-121610] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:50:20.714 [DEBUG] [Thread-121610] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:50:20.714 [DEBUG] [Thread-121610] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:50:20.714 [DEBUG] [Thread-121610] [transport.py] [_log()] Compression: none
2025-11-03T19:50:20.714 [DEBUG] [Thread-121610] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:50:20.764 [DEBUG] [Thread-121610] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:50:20.764 [DEBUG] [Thread-121610] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:50:20.765 [DEBUG] [Thread-121610] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:50:20.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:50:20.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:50:20.820 [DEBUG] [Thread-121610] [transport.py] [_log()] userauth is OK
2025-11-03T19:50:20.820 [DEBUG] [Thread-121610] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:50:20.820 [DEBUG] [Thread-121610] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:50:20.821 [DEBUG] [Thread-121610] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:50:20.821 [DEBUG] [Thread-121610] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:50:20.842 [INFO] [Thread-121610] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:50:20.842 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:50:20.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:50:21.667 [DEBUG] [Thread-121610] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:50:21.667 [DEBUG] [Thread-121610] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:50:21.715 [DEBUG] [Thread-121610] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:50:21.715 [DEBUG] [Thread-121610] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:50:21.725 [DEBUG] [Thread-121610] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:50:21.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:50:21.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:50:21.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:50:21.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:50:21.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:50:21.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:50:21.772 [DEBUG] [Thread-121610] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:50:31.002 [DEBUG] [Thread-121612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:50:46.053 [DEBUG] [Thread-121613 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:50:51.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:50:51.794 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:50:51.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:50:51.851 [DEBUG] [Thread-121614 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:50:52.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 50, 23), 39.55, 5.88, 0.0, 30.19, 20.7, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:50:52.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:50:23
2025-11-03T19:50:52.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:50:52.825 [DEBUG] [Thread-121615] [transport.py] [_log()] starting thread (client mode): 0x11799b40
2025-11-03T19:50:52.825 [DEBUG] [Thread-121615] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:50:52.845 [DEBUG] [Thread-121615] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:50:52.845 [INFO] [Thread-121615] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:50:52.848 [DEBUG] [Thread-121615] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:50:52.848 [DEBUG] [Thread-121615] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:50:52.848 [DEBUG] [Thread-121615] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:50:52.848 [DEBUG] [Thread-121615] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:50:52.848 [DEBUG] [Thread-121615] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:50:52.848 [DEBUG] [Thread-121615] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:50:52.848 [DEBUG] [Thread-121615] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:50:52.848 [DEBUG] [Thread-121615] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:50:52.848 [DEBUG] [Thread-121615] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:50:52.848 [DEBUG] [Thread-121615] [transport.py] [_log()] client lang: <none>
2025-11-03T19:50:52.848 [DEBUG] [Thread-121615] [transport.py] [_log()] server lang: <none>
2025-11-03T19:50:52.848 [DEBUG] [Thread-121615] [transport.py] [_log()] kex follows: False
2025-11-03T19:50:52.848 [DEBUG] [Thread-121615] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:50:52.848 [DEBUG] [Thread-121615] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:50:52.848 [DEBUG] [Thread-121615] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:50:52.848 [DEBUG] [Thread-121615] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:50:52.848 [DEBUG] [Thread-121615] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:50:52.848 [DEBUG] [Thread-121615] [transport.py] [_log()] Compression: none
2025-11-03T19:50:52.848 [DEBUG] [Thread-121615] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:50:52.866 [DEBUG] [Thread-121615] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:50:52.867 [DEBUG] [Thread-121615] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:50:52.867 [DEBUG] [Thread-121615] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:50:52.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:50:52.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:50:52.869 [DEBUG] [Thread-121615] [transport.py] [_log()] userauth is OK
2025-11-03T19:50:52.870 [DEBUG] [Thread-121615] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:50:52.870 [DEBUG] [Thread-121615] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:50:52.870 [DEBUG] [Thread-121615] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:50:52.870 [DEBUG] [Thread-121615] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:50:52.909 [INFO] [Thread-121615] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:50:52.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:50:53.524 [DEBUG] [Thread-121615] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:50:53.524 [DEBUG] [Thread-121615] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:50:53.524 [DEBUG] [Thread-121615] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:50:53.565 [DEBUG] [Thread-121615] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:50:53.565 [DEBUG] [Thread-121615] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:50:53.575 [DEBUG] [Thread-121615] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:50:53.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:50:53.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:50:53.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:50:53.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:50:53.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:50:53.584 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:50:53.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:50:53.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:50:53.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:50:53.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.743157 -999.00  +20.70  23.06     10  -10.90 1 1 1 1 1     7    0 30.23 -86.46 ----- 23.1 23.1 302.8 32.9 20.8 -29.7 20.7 -28.7 20.5 -28.5 20.7 -29.2
2025-11-03T19:50:53.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:50:53.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:50:53.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.743157
2025-11-03T19:50:53.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:50:53.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:50:53.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:50:53.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:50:53.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:50:53.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:50:23', tmtdew=39.55, humidity=5.88, cloud=0.0, wind=30.19, temperature=20.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:50:08.765', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:50:53.585 [DEBUG] [Thread-121615] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:50:53.657 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:50:53.668 [DEBUG] [Thread-121618] [transport.py] [_log()] starting thread (client mode): 0x117e98d0
2025-11-03T19:50:53.669 [DEBUG] [Thread-121618] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:50:53.684 [DEBUG] [Thread-121618] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:50:53.684 [INFO] [Thread-121618] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:50:53.691 [DEBUG] [Thread-121618] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:50:53.692 [DEBUG] [Thread-121618] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:50:53.692 [DEBUG] [Thread-121618] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:50:53.692 [DEBUG] [Thread-121618] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:50:53.692 [DEBUG] [Thread-121618] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:50:53.692 [DEBUG] [Thread-121618] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:50:53.692 [DEBUG] [Thread-121618] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:50:53.692 [DEBUG] [Thread-121618] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:50:53.692 [DEBUG] [Thread-121618] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:50:53.692 [DEBUG] [Thread-121618] [transport.py] [_log()] client lang: <none>
2025-11-03T19:50:53.692 [DEBUG] [Thread-121618] [transport.py] [_log()] server lang: <none>
2025-11-03T19:50:53.692 [DEBUG] [Thread-121618] [transport.py] [_log()] kex follows: False
2025-11-03T19:50:53.692 [DEBUG] [Thread-121618] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:50:53.692 [DEBUG] [Thread-121618] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:50:53.692 [DEBUG] [Thread-121618] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:50:53.692 [DEBUG] [Thread-121618] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:50:53.692 [DEBUG] [Thread-121618] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:50:53.692 [DEBUG] [Thread-121618] [transport.py] [_log()] Compression: none
2025-11-03T19:50:53.692 [DEBUG] [Thread-121618] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:50:53.748 [DEBUG] [Thread-121618] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:50:53.749 [DEBUG] [Thread-121618] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:50:53.749 [DEBUG] [Thread-121618] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:50:53.749 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:50:53.749 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:50:53.806 [DEBUG] [Thread-121618] [transport.py] [_log()] userauth is OK
2025-11-03T19:50:53.806 [DEBUG] [Thread-121618] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:50:53.806 [DEBUG] [Thread-121618] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:50:53.806 [DEBUG] [Thread-121618] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:50:53.806 [DEBUG] [Thread-121618] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:50:53.820 [INFO] [Thread-121618] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:50:53.820 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:50:53.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:50:54.665 [DEBUG] [Thread-121618] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:50:54.665 [DEBUG] [Thread-121618] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:50:54.713 [DEBUG] [Thread-121618] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:50:54.713 [DEBUG] [Thread-121618] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:50:54.723 [DEBUG] [Thread-121618] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:50:54.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:50:54.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:50:54.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:50:54.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:50:54.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:50:54.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:50:54.769 [DEBUG] [Thread-121618] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:51:01.085 [DEBUG] [Thread-121620 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:51:16.133 [DEBUG] [Thread-121621 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:51:21.916 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:51:21.917 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:51:24.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:51:24.765 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:51:24.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:51:25.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 50, 56), 39.35, 5.93, 0.0, 28.78, 20.72, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:51:25.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:50:56
2025-11-03T19:51:25.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:51:25.724 [DEBUG] [Thread-121622] [transport.py] [_log()] starting thread (client mode): 0x11799210
2025-11-03T19:51:25.724 [DEBUG] [Thread-121622] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:51:25.744 [DEBUG] [Thread-121622] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:51:25.744 [INFO] [Thread-121622] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:51:25.748 [DEBUG] [Thread-121622] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:51:25.748 [DEBUG] [Thread-121622] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:51:25.748 [DEBUG] [Thread-121622] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:51:25.748 [DEBUG] [Thread-121622] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:51:25.748 [DEBUG] [Thread-121622] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:51:25.748 [DEBUG] [Thread-121622] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:51:25.748 [DEBUG] [Thread-121622] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:51:25.748 [DEBUG] [Thread-121622] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:51:25.748 [DEBUG] [Thread-121622] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:51:25.748 [DEBUG] [Thread-121622] [transport.py] [_log()] client lang: <none>
2025-11-03T19:51:25.749 [DEBUG] [Thread-121622] [transport.py] [_log()] server lang: <none>
2025-11-03T19:51:25.749 [DEBUG] [Thread-121622] [transport.py] [_log()] kex follows: False
2025-11-03T19:51:25.749 [DEBUG] [Thread-121622] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:51:25.749 [DEBUG] [Thread-121622] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:51:25.749 [DEBUG] [Thread-121622] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:51:25.749 [DEBUG] [Thread-121622] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:51:25.749 [DEBUG] [Thread-121622] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:51:25.749 [DEBUG] [Thread-121622] [transport.py] [_log()] Compression: none
2025-11-03T19:51:25.749 [DEBUG] [Thread-121622] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:51:25.766 [DEBUG] [Thread-121622] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:51:25.766 [DEBUG] [Thread-121622] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:51:25.767 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:51:25.767 [DEBUG] [Thread-121622] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:51:25.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:51:25.810 [DEBUG] [Thread-121622] [transport.py] [_log()] userauth is OK
2025-11-03T19:51:25.810 [DEBUG] [Thread-121622] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:51:25.810 [DEBUG] [Thread-121622] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:51:25.810 [DEBUG] [Thread-121622] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:51:25.810 [DEBUG] [Thread-121622] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:51:25.831 [INFO] [Thread-121622] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:51:25.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:51:26.564 [DEBUG] [Thread-121622] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:51:26.565 [DEBUG] [Thread-121622] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:51:26.565 [DEBUG] [Thread-121622] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:51:26.606 [DEBUG] [Thread-121622] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:51:26.606 [DEBUG] [Thread-121622] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:51:26.609 [DEBUG] [Thread-121622] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:51:26.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:51:26.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:51:26.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:51:26.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:51:26.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:51:26.633 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:51:26.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:51:26.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:51:26.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:51:26.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.743504 -999.00  +20.70  21.92     10  -11.00 1 1 1 1 1     6    0 30.15 -90.45 ----- 21.9 21.9 304.1 35.1 20.7 -29.8 20.7 -28.7 20.4 -28.6 20.7 -29.4
2025-11-03T19:51:26.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:51:26.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:51:26.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.743504
2025-11-03T19:51:26.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:51:26.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:51:26.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:51:26.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:51:26.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:51:26.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:50:56', tmtdew=39.35, humidity=5.93, cloud=0.0, wind=28.78, temperature=20.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:50:38.746', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:51:26.636 [DEBUG] [Thread-121622] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:51:26.725 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:51:26.736 [DEBUG] [Thread-121625] [transport.py] [_log()] starting thread (client mode): 0x117eb640
2025-11-03T19:51:26.736 [DEBUG] [Thread-121625] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:51:26.757 [DEBUG] [Thread-121625] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:51:26.757 [INFO] [Thread-121625] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:51:26.764 [DEBUG] [Thread-121625] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:51:26.765 [DEBUG] [Thread-121625] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:51:26.765 [DEBUG] [Thread-121625] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:51:26.765 [DEBUG] [Thread-121625] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:51:26.765 [DEBUG] [Thread-121625] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:51:26.765 [DEBUG] [Thread-121625] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:51:26.765 [DEBUG] [Thread-121625] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:51:26.765 [DEBUG] [Thread-121625] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:51:26.765 [DEBUG] [Thread-121625] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:51:26.766 [DEBUG] [Thread-121625] [transport.py] [_log()] client lang: <none>
2025-11-03T19:51:26.766 [DEBUG] [Thread-121625] [transport.py] [_log()] server lang: <none>
2025-11-03T19:51:26.766 [DEBUG] [Thread-121625] [transport.py] [_log()] kex follows: False
2025-11-03T19:51:26.766 [DEBUG] [Thread-121625] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:51:26.775 [DEBUG] [Thread-121625] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:51:26.775 [DEBUG] [Thread-121625] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:51:26.775 [DEBUG] [Thread-121625] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:51:26.776 [DEBUG] [Thread-121625] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:51:26.776 [DEBUG] [Thread-121625] [transport.py] [_log()] Compression: none
2025-11-03T19:51:26.776 [DEBUG] [Thread-121625] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:51:26.821 [DEBUG] [Thread-121625] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:51:26.822 [DEBUG] [Thread-121625] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:51:26.822 [DEBUG] [Thread-121625] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:51:26.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:51:26.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:51:26.880 [DEBUG] [Thread-121625] [transport.py] [_log()] userauth is OK
2025-11-03T19:51:26.881 [DEBUG] [Thread-121625] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:51:26.881 [DEBUG] [Thread-121625] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:51:26.881 [DEBUG] [Thread-121625] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:51:26.881 [DEBUG] [Thread-121625] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:51:26.901 [INFO] [Thread-121625] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:51:26.901 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:51:26.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:51:27.749 [DEBUG] [Thread-121625] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:51:27.749 [DEBUG] [Thread-121625] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:51:27.798 [DEBUG] [Thread-121625] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:51:27.798 [DEBUG] [Thread-121625] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:51:27.807 [DEBUG] [Thread-121625] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:51:27.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:51:27.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:51:27.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:51:27.836 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:51:27.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:51:27.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:51:27.847 [DEBUG] [Thread-121625] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:51:31.172 [DEBUG] [Thread-121627 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:51:46.221 [DEBUG] [Thread-121628 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:51:52.139 [DEBUG] [Thread-121629 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:51:57.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:51:57.856 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:51:57.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:51:58.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 51, 28), 39.29, 5.96, 0.0, 27.01, 20.73, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:51:58.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:51:28
2025-11-03T19:51:58.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:51:58.833 [DEBUG] [Thread-121630] [transport.py] [_log()] starting thread (client mode): 0xedc6f50
2025-11-03T19:51:58.833 [DEBUG] [Thread-121630] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:51:58.853 [DEBUG] [Thread-121630] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:51:58.853 [INFO] [Thread-121630] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:51:58.862 [DEBUG] [Thread-121630] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:51:58.862 [DEBUG] [Thread-121630] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:51:58.862 [DEBUG] [Thread-121630] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:51:58.862 [DEBUG] [Thread-121630] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:51:58.862 [DEBUG] [Thread-121630] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:51:58.862 [DEBUG] [Thread-121630] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:51:58.862 [DEBUG] [Thread-121630] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:51:58.863 [DEBUG] [Thread-121630] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:51:58.863 [DEBUG] [Thread-121630] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:51:58.863 [DEBUG] [Thread-121630] [transport.py] [_log()] client lang: <none>
2025-11-03T19:51:58.863 [DEBUG] [Thread-121630] [transport.py] [_log()] server lang: <none>
2025-11-03T19:51:58.863 [DEBUG] [Thread-121630] [transport.py] [_log()] kex follows: False
2025-11-03T19:51:58.863 [DEBUG] [Thread-121630] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:51:58.863 [DEBUG] [Thread-121630] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:51:58.863 [DEBUG] [Thread-121630] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:51:58.863 [DEBUG] [Thread-121630] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:51:58.863 [DEBUG] [Thread-121630] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:51:58.863 [DEBUG] [Thread-121630] [transport.py] [_log()] Compression: none
2025-11-03T19:51:58.863 [DEBUG] [Thread-121630] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:51:58.883 [DEBUG] [Thread-121630] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:51:58.884 [DEBUG] [Thread-121630] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:51:58.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:51:58.885 [DEBUG] [Thread-121630] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:51:58.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:51:58.887 [DEBUG] [Thread-121630] [transport.py] [_log()] userauth is OK
2025-11-03T19:51:58.887 [DEBUG] [Thread-121630] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:51:58.887 [DEBUG] [Thread-121630] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:51:58.887 [DEBUG] [Thread-121630] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:51:58.887 [DEBUG] [Thread-121630] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:51:58.921 [INFO] [Thread-121630] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:51:58.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:51:59.532 [DEBUG] [Thread-121630] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:51:59.532 [DEBUG] [Thread-121630] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:51:59.532 [DEBUG] [Thread-121630] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:51:59.574 [DEBUG] [Thread-121630] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:51:59.574 [DEBUG] [Thread-121630] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:51:59.576 [DEBUG] [Thread-121630] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:51:59.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:51:59.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:51:59.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:51:59.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:51:59.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:51:59.594 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:51:59.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:51:59.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:51:59.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:51:59.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.743851 -999.00  +20.70  23.77     10  -10.90 1 1 1 1 1     6    0 29.76 -107.49 ----- 23.8 23.8 305.7 30.3 20.7 -29.7 20.6 -28.7 20.4 -28.3 20.7 -29.4
2025-11-03T19:51:59.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:51:59.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:51:59.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.743851
2025-11-03T19:51:59.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:51:59.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:51:59.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:51:59.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:51:59.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:51:59.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:51:28', tmtdew=39.29, humidity=5.96, cloud=0.0, wind=27.01, temperature=20.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:51:08.726', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:51:59.596 [DEBUG] [Thread-121630] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:51:59.667 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:51:59.678 [DEBUG] [Thread-121633] [transport.py] [_log()] starting thread (client mode): 0xeda1030
2025-11-03T19:51:59.678 [DEBUG] [Thread-121633] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:51:59.692 [DEBUG] [Thread-121633] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:51:59.693 [INFO] [Thread-121633] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:51:59.700 [DEBUG] [Thread-121633] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:51:59.700 [DEBUG] [Thread-121633] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:51:59.700 [DEBUG] [Thread-121633] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:51:59.700 [DEBUG] [Thread-121633] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:51:59.700 [DEBUG] [Thread-121633] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:51:59.700 [DEBUG] [Thread-121633] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:51:59.700 [DEBUG] [Thread-121633] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:51:59.700 [DEBUG] [Thread-121633] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:51:59.700 [DEBUG] [Thread-121633] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:51:59.700 [DEBUG] [Thread-121633] [transport.py] [_log()] client lang: <none>
2025-11-03T19:51:59.700 [DEBUG] [Thread-121633] [transport.py] [_log()] server lang: <none>
2025-11-03T19:51:59.700 [DEBUG] [Thread-121633] [transport.py] [_log()] kex follows: False
2025-11-03T19:51:59.700 [DEBUG] [Thread-121633] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:51:59.700 [DEBUG] [Thread-121633] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:51:59.700 [DEBUG] [Thread-121633] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:51:59.700 [DEBUG] [Thread-121633] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:51:59.700 [DEBUG] [Thread-121633] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:51:59.700 [DEBUG] [Thread-121633] [transport.py] [_log()] Compression: none
2025-11-03T19:51:59.700 [DEBUG] [Thread-121633] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:51:59.756 [DEBUG] [Thread-121633] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:51:59.756 [DEBUG] [Thread-121633] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:51:59.756 [DEBUG] [Thread-121633] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:51:59.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:51:59.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:51:59.812 [DEBUG] [Thread-121633] [transport.py] [_log()] userauth is OK
2025-11-03T19:51:59.812 [DEBUG] [Thread-121633] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:51:59.812 [DEBUG] [Thread-121633] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:51:59.812 [DEBUG] [Thread-121633] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:51:59.812 [DEBUG] [Thread-121633] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:51:59.826 [INFO] [Thread-121633] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:51:59.826 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:51:59.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:52:00.662 [DEBUG] [Thread-121633] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:52:00.663 [DEBUG] [Thread-121633] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:52:00.712 [DEBUG] [Thread-121633] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:52:00.712 [DEBUG] [Thread-121633] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:52:00.722 [DEBUG] [Thread-121633] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:52:00.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:52:00.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:52:00.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:52:00.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:52:00.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:52:00.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:52:00.769 [DEBUG] [Thread-121633] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:52:01.250 [DEBUG] [Thread-121635 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:52:16.296 [DEBUG] [Thread-121636 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:52:27.595 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:52:27.597 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:52:30.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:52:30.788 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:52:30.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:52:31.328 [DEBUG] [Thread-121637 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:52:31.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 52), 39.1, 5.98, 0.0, 26.89, 20.68, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:52:31.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:52:00
2025-11-03T19:52:31.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:52:31.752 [DEBUG] [Thread-121638] [transport.py] [_log()] starting thread (client mode): 0x11763490
2025-11-03T19:52:31.752 [DEBUG] [Thread-121638] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:52:31.760 [DEBUG] [Thread-121638] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:52:31.760 [INFO] [Thread-121638] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:52:31.762 [DEBUG] [Thread-121638] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:52:31.762 [DEBUG] [Thread-121638] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:52:31.762 [DEBUG] [Thread-121638] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:52:31.762 [DEBUG] [Thread-121638] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:52:31.762 [DEBUG] [Thread-121638] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:52:31.762 [DEBUG] [Thread-121638] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:52:31.762 [DEBUG] [Thread-121638] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:52:31.762 [DEBUG] [Thread-121638] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:52:31.762 [DEBUG] [Thread-121638] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:52:31.762 [DEBUG] [Thread-121638] [transport.py] [_log()] client lang: <none>
2025-11-03T19:52:31.762 [DEBUG] [Thread-121638] [transport.py] [_log()] server lang: <none>
2025-11-03T19:52:31.762 [DEBUG] [Thread-121638] [transport.py] [_log()] kex follows: False
2025-11-03T19:52:31.762 [DEBUG] [Thread-121638] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:52:31.762 [DEBUG] [Thread-121638] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:52:31.762 [DEBUG] [Thread-121638] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:52:31.762 [DEBUG] [Thread-121638] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:52:31.762 [DEBUG] [Thread-121638] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:52:31.762 [DEBUG] [Thread-121638] [transport.py] [_log()] Compression: none
2025-11-03T19:52:31.762 [DEBUG] [Thread-121638] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:52:31.775 [DEBUG] [Thread-121638] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:52:31.776 [DEBUG] [Thread-121638] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:52:31.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:52:31.777 [DEBUG] [Thread-121638] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:52:31.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:52:31.779 [DEBUG] [Thread-121638] [transport.py] [_log()] userauth is OK
2025-11-03T19:52:31.780 [DEBUG] [Thread-121638] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:52:31.780 [DEBUG] [Thread-121638] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:52:31.780 [DEBUG] [Thread-121638] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:52:31.780 [DEBUG] [Thread-121638] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:52:31.798 [INFO] [Thread-121638] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:52:31.799 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:52:32.564 [DEBUG] [Thread-121638] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:52:32.564 [DEBUG] [Thread-121638] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:52:32.564 [DEBUG] [Thread-121638] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:52:32.605 [DEBUG] [Thread-121638] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:52:32.605 [DEBUG] [Thread-121638] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:52:32.609 [DEBUG] [Thread-121638] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:52:32.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:52:32.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:52:32.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:52:32.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:52:32.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:52:32.632 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:52:32.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:52:32.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:52:32.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:52:32.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.744198 -999.00  +20.70  33.13     11  -10.60 1 1 2 1 1     5    0 28.76 -115.66 ----- 33.1 33.1 296.4 38.8 20.7 -29.7 20.6 -28.5 20.4 -28.3 20.6 -29.0
2025-11-03T19:52:32.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:52:32.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:52:32.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.744198
2025-11-03T19:52:32.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:52:32.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:52:32.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:52:32.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:52:32.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:52:32.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:52:00', tmtdew=39.1, humidity=5.98, cloud=0.0, wind=26.89, temperature=20.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:51:38.707', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:52:32.636 [DEBUG] [Thread-121638] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:52:32.719 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:52:32.730 [DEBUG] [Thread-121641] [transport.py] [_log()] starting thread (client mode): 0xeda2f80
2025-11-03T19:52:32.731 [DEBUG] [Thread-121641] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:52:32.745 [DEBUG] [Thread-121641] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:52:32.746 [INFO] [Thread-121641] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:52:32.756 [DEBUG] [Thread-121641] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:52:32.756 [DEBUG] [Thread-121641] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:52:32.756 [DEBUG] [Thread-121641] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:52:32.756 [DEBUG] [Thread-121641] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:52:32.756 [DEBUG] [Thread-121641] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:52:32.756 [DEBUG] [Thread-121641] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:52:32.756 [DEBUG] [Thread-121641] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:52:32.756 [DEBUG] [Thread-121641] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:52:32.756 [DEBUG] [Thread-121641] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:52:32.756 [DEBUG] [Thread-121641] [transport.py] [_log()] client lang: <none>
2025-11-03T19:52:32.756 [DEBUG] [Thread-121641] [transport.py] [_log()] server lang: <none>
2025-11-03T19:52:32.756 [DEBUG] [Thread-121641] [transport.py] [_log()] kex follows: False
2025-11-03T19:52:32.756 [DEBUG] [Thread-121641] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:52:32.757 [DEBUG] [Thread-121641] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:52:32.757 [DEBUG] [Thread-121641] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:52:32.757 [DEBUG] [Thread-121641] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:52:32.757 [DEBUG] [Thread-121641] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:52:32.757 [DEBUG] [Thread-121641] [transport.py] [_log()] Compression: none
2025-11-03T19:52:32.757 [DEBUG] [Thread-121641] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:52:32.821 [DEBUG] [Thread-121641] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:52:32.822 [DEBUG] [Thread-121641] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:52:32.822 [DEBUG] [Thread-121641] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:52:32.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:52:32.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:52:32.880 [DEBUG] [Thread-121641] [transport.py] [_log()] userauth is OK
2025-11-03T19:52:32.881 [DEBUG] [Thread-121641] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:52:32.890 [DEBUG] [Thread-121641] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:52:32.891 [DEBUG] [Thread-121641] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:52:32.891 [DEBUG] [Thread-121641] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:52:32.910 [INFO] [Thread-121641] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:52:32.911 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:52:32.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:52:33.753 [DEBUG] [Thread-121641] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:52:33.753 [DEBUG] [Thread-121641] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:52:33.802 [DEBUG] [Thread-121641] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:52:33.802 [DEBUG] [Thread-121641] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:52:33.810 [DEBUG] [Thread-121641] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:52:33.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:52:33.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:52:33.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:52:33.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:52:33.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:52:33.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:52:33.841 [DEBUG] [Thread-121641] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:52:46.360 [DEBUG] [Thread-121643 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:52:52.296 [DEBUG] [Thread-121644 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:53:01.401 [DEBUG] [Thread-121645 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:53:03.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:53:03.863 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:53:03.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:53:04.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 52, 33), 38.97, 5.95, 0.0, 29.52, 20.72, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:53:04.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:52:33
2025-11-03T19:53:04.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:53:04.966 [DEBUG] [Thread-121646] [transport.py] [_log()] starting thread (client mode): 0xedc4ee0
2025-11-03T19:53:04.966 [DEBUG] [Thread-121646] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:53:04.985 [DEBUG] [Thread-121646] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:53:04.985 [INFO] [Thread-121646] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:53:04.988 [DEBUG] [Thread-121646] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:53:04.988 [DEBUG] [Thread-121646] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:53:04.988 [DEBUG] [Thread-121646] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:53:04.988 [DEBUG] [Thread-121646] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:53:04.988 [DEBUG] [Thread-121646] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:53:04.988 [DEBUG] [Thread-121646] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:53:04.988 [DEBUG] [Thread-121646] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:53:04.988 [DEBUG] [Thread-121646] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:53:04.988 [DEBUG] [Thread-121646] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:53:04.988 [DEBUG] [Thread-121646] [transport.py] [_log()] client lang: <none>
2025-11-03T19:53:04.988 [DEBUG] [Thread-121646] [transport.py] [_log()] server lang: <none>
2025-11-03T19:53:04.988 [DEBUG] [Thread-121646] [transport.py] [_log()] kex follows: False
2025-11-03T19:53:04.988 [DEBUG] [Thread-121646] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:53:04.988 [DEBUG] [Thread-121646] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:53:04.988 [DEBUG] [Thread-121646] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:53:04.988 [DEBUG] [Thread-121646] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:53:04.988 [DEBUG] [Thread-121646] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:53:04.988 [DEBUG] [Thread-121646] [transport.py] [_log()] Compression: none
2025-11-03T19:53:04.988 [DEBUG] [Thread-121646] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:53:05.004 [DEBUG] [Thread-121646] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:53:05.005 [DEBUG] [Thread-121646] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:53:05.005 [DEBUG] [Thread-121646] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:53:05.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:53:05.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:53:05.006 [DEBUG] [Thread-121646] [transport.py] [_log()] userauth is OK
2025-11-03T19:53:05.006 [DEBUG] [Thread-121646] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:53:05.006 [DEBUG] [Thread-121646] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:53:05.006 [DEBUG] [Thread-121646] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:53:05.006 [DEBUG] [Thread-121646] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:53:05.024 [INFO] [Thread-121646] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:53:05.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:53:05.691 [DEBUG] [Thread-121646] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:53:05.691 [DEBUG] [Thread-121646] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:53:05.692 [DEBUG] [Thread-121646] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:53:05.732 [DEBUG] [Thread-121646] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:53:05.732 [DEBUG] [Thread-121646] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:53:05.734 [DEBUG] [Thread-121646] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:53:05.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:53:05.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:53:05.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:53:05.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:53:05.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:53:05.752 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:53:05.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:53:05.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:53:05.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:53:05.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.744546 -999.00  +20.70  26.65     11  -10.60 1 1 1 1 1     5    0 29.07 -111.32 ZNeS. 26.6 26.6 309.8 31.8 20.7 -29.5 20.6 -28.6 20.4 -28.3 20.7 -29.2
2025-11-03T19:53:05.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:53:05.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:53:05.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.744546
2025-11-03T19:53:05.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:53:05.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:53:05.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:53:05.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:53:05.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:53:05.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:52:33', tmtdew=38.97, humidity=5.95, cloud=0.0, wind=29.52, temperature=20.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:52:08.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:53:05.753 [DEBUG] [Thread-121646] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:53:05.827 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:53:05.838 [DEBUG] [Thread-121649] [transport.py] [_log()] starting thread (client mode): 0xedc7370
2025-11-03T19:53:05.838 [DEBUG] [Thread-121649] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:53:05.853 [DEBUG] [Thread-121649] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:53:05.853 [INFO] [Thread-121649] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:53:05.861 [DEBUG] [Thread-121649] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:53:05.861 [DEBUG] [Thread-121649] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:53:05.861 [DEBUG] [Thread-121649] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:53:05.861 [DEBUG] [Thread-121649] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:53:05.861 [DEBUG] [Thread-121649] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:53:05.861 [DEBUG] [Thread-121649] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:53:05.861 [DEBUG] [Thread-121649] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:53:05.861 [DEBUG] [Thread-121649] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:53:05.861 [DEBUG] [Thread-121649] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:53:05.861 [DEBUG] [Thread-121649] [transport.py] [_log()] client lang: <none>
2025-11-03T19:53:05.861 [DEBUG] [Thread-121649] [transport.py] [_log()] server lang: <none>
2025-11-03T19:53:05.861 [DEBUG] [Thread-121649] [transport.py] [_log()] kex follows: False
2025-11-03T19:53:05.861 [DEBUG] [Thread-121649] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:53:05.861 [DEBUG] [Thread-121649] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:53:05.862 [DEBUG] [Thread-121649] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:53:05.862 [DEBUG] [Thread-121649] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:53:05.862 [DEBUG] [Thread-121649] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:53:05.862 [DEBUG] [Thread-121649] [transport.py] [_log()] Compression: none
2025-11-03T19:53:05.862 [DEBUG] [Thread-121649] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:53:05.919 [DEBUG] [Thread-121649] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:53:05.919 [DEBUG] [Thread-121649] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:53:05.919 [DEBUG] [Thread-121649] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:53:05.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:53:05.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:53:05.975 [DEBUG] [Thread-121649] [transport.py] [_log()] userauth is OK
2025-11-03T19:53:05.975 [DEBUG] [Thread-121649] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:53:05.975 [DEBUG] [Thread-121649] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:53:05.975 [DEBUG] [Thread-121649] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:53:05.975 [DEBUG] [Thread-121649] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:53:05.990 [INFO] [Thread-121649] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:53:05.990 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:53:05.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:53:06.838 [DEBUG] [Thread-121649] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:53:06.838 [DEBUG] [Thread-121649] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:53:06.887 [DEBUG] [Thread-121649] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:53:06.887 [DEBUG] [Thread-121649] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:53:06.895 [DEBUG] [Thread-121649] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:53:06.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:53:06.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:53:06.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:53:06.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:53:06.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:53:06.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:53:06.927 [DEBUG] [Thread-121649] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:53:16.432 [DEBUG] [Thread-121651 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:53:31.492 [DEBUG] [Thread-121652 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:53:35.057 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:53:35.059 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:53:36.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:53:36.950 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:53:36.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:53:37.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 53, 5), 38.86, 6.0, 0.0, 27.74, 20.68, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:53:37.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:53:05
2025-11-03T19:53:37.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:53:38.023 [DEBUG] [Thread-121653] [transport.py] [_log()] starting thread (client mode): 0x141da200
2025-11-03T19:53:38.023 [DEBUG] [Thread-121653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:53:38.046 [DEBUG] [Thread-121653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:53:38.046 [INFO] [Thread-121653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:53:38.047 [DEBUG] [Thread-121653] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:53:38.047 [DEBUG] [Thread-121653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:53:38.047 [DEBUG] [Thread-121653] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:53:38.047 [DEBUG] [Thread-121653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:53:38.047 [DEBUG] [Thread-121653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:53:38.047 [DEBUG] [Thread-121653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:53:38.047 [DEBUG] [Thread-121653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:53:38.047 [DEBUG] [Thread-121653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:53:38.047 [DEBUG] [Thread-121653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:53:38.047 [DEBUG] [Thread-121653] [transport.py] [_log()] client lang: <none>
2025-11-03T19:53:38.047 [DEBUG] [Thread-121653] [transport.py] [_log()] server lang: <none>
2025-11-03T19:53:38.047 [DEBUG] [Thread-121653] [transport.py] [_log()] kex follows: False
2025-11-03T19:53:38.047 [DEBUG] [Thread-121653] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:53:38.047 [DEBUG] [Thread-121653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:53:38.047 [DEBUG] [Thread-121653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:53:38.047 [DEBUG] [Thread-121653] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:53:38.047 [DEBUG] [Thread-121653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:53:38.047 [DEBUG] [Thread-121653] [transport.py] [_log()] Compression: none
2025-11-03T19:53:38.047 [DEBUG] [Thread-121653] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:53:38.055 [DEBUG] [Thread-121653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:53:38.056 [DEBUG] [Thread-121653] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:53:38.056 [DEBUG] [Thread-121653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:53:38.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:53:38.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:53:38.058 [DEBUG] [Thread-121653] [transport.py] [_log()] userauth is OK
2025-11-03T19:53:38.058 [DEBUG] [Thread-121653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:53:38.058 [DEBUG] [Thread-121653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:53:38.058 [DEBUG] [Thread-121653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:53:38.058 [DEBUG] [Thread-121653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:53:38.077 [INFO] [Thread-121653] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:53:38.077 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:53:38.743 [DEBUG] [Thread-121653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:53:38.743 [DEBUG] [Thread-121653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:53:38.744 [DEBUG] [Thread-121653] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:53:38.785 [DEBUG] [Thread-121653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:53:38.785 [DEBUG] [Thread-121653] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:53:38.787 [DEBUG] [Thread-121653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:53:38.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:53:38.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:53:38.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:53:38.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:53:38.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:53:38.805 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:53:38.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:53:38.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:53:38.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:53:38.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.744893 -999.00  +20.70  27.66     11  -10.40 1 1 1 1 1     4    0 29.22 -113.78 ZNeS. 27.7 27.7 300.0 37.2 20.7 -29.6 20.6 -28.4 20.4 -28.3 20.6 -29.2
2025-11-03T19:53:38.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:53:38.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:53:38.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.744893
2025-11-03T19:53:38.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:53:38.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:53:38.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:53:38.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:53:38.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:53:38.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:53:05', tmtdew=38.86, humidity=6.0, cloud=0.0, wind=27.74, temperature=20.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:52:38.755', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:53:38.806 [DEBUG] [Thread-121653] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:53:38.880 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:53:38.892 [DEBUG] [Thread-121656] [transport.py] [_log()] starting thread (client mode): 0x11763880
2025-11-03T19:53:38.892 [DEBUG] [Thread-121656] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:53:38.908 [DEBUG] [Thread-121656] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:53:38.908 [INFO] [Thread-121656] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:53:38.918 [DEBUG] [Thread-121656] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:53:38.918 [DEBUG] [Thread-121656] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:53:38.918 [DEBUG] [Thread-121656] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:53:38.918 [DEBUG] [Thread-121656] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:53:38.918 [DEBUG] [Thread-121656] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:53:38.918 [DEBUG] [Thread-121656] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:53:38.918 [DEBUG] [Thread-121656] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:53:38.918 [DEBUG] [Thread-121656] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:53:38.918 [DEBUG] [Thread-121656] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:53:38.918 [DEBUG] [Thread-121656] [transport.py] [_log()] client lang: <none>
2025-11-03T19:53:38.918 [DEBUG] [Thread-121656] [transport.py] [_log()] server lang: <none>
2025-11-03T19:53:38.918 [DEBUG] [Thread-121656] [transport.py] [_log()] kex follows: False
2025-11-03T19:53:38.918 [DEBUG] [Thread-121656] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:53:38.919 [DEBUG] [Thread-121656] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:53:38.919 [DEBUG] [Thread-121656] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:53:38.919 [DEBUG] [Thread-121656] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:53:38.919 [DEBUG] [Thread-121656] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:53:38.919 [DEBUG] [Thread-121656] [transport.py] [_log()] Compression: none
2025-11-03T19:53:38.919 [DEBUG] [Thread-121656] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:53:38.974 [DEBUG] [Thread-121656] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:53:38.974 [DEBUG] [Thread-121656] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:53:38.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:53:38.975 [DEBUG] [Thread-121656] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:53:38.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:53:39.030 [DEBUG] [Thread-121656] [transport.py] [_log()] userauth is OK
2025-11-03T19:53:39.031 [DEBUG] [Thread-121656] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:53:39.031 [DEBUG] [Thread-121656] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:53:39.031 [DEBUG] [Thread-121656] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:53:39.031 [DEBUG] [Thread-121656] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:53:39.045 [INFO] [Thread-121656] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:53:39.046 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:53:39.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:53:39.874 [DEBUG] [Thread-121656] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:53:39.874 [DEBUG] [Thread-121656] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:53:39.923 [DEBUG] [Thread-121656] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:53:39.923 [DEBUG] [Thread-121656] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:53:39.931 [DEBUG] [Thread-121656] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:53:39.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:53:39.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:53:39.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:53:39.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:53:39.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:53:39.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:53:39.963 [DEBUG] [Thread-121656] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:53:46.523 [DEBUG] [Thread-121658 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:53:52.379 [DEBUG] [Thread-121659 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:54:01.563 [DEBUG] [Thread-121660 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:54:09.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:54:09.965 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:54:09.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:54:10.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 53, 37), 38.68, 6.01, 0.0, 27.67, 20.67, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:54:10.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:53:37
2025-11-03T19:54:10.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:54:11.056 [DEBUG] [Thread-121661] [transport.py] [_log()] starting thread (client mode): 0x11761330
2025-11-03T19:54:11.056 [DEBUG] [Thread-121661] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:54:11.077 [DEBUG] [Thread-121661] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:54:11.077 [INFO] [Thread-121661] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:54:11.080 [DEBUG] [Thread-121661] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:54:11.081 [DEBUG] [Thread-121661] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:54:11.081 [DEBUG] [Thread-121661] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:54:11.081 [DEBUG] [Thread-121661] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:54:11.081 [DEBUG] [Thread-121661] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:54:11.081 [DEBUG] [Thread-121661] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:54:11.081 [DEBUG] [Thread-121661] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:54:11.081 [DEBUG] [Thread-121661] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:54:11.081 [DEBUG] [Thread-121661] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:54:11.081 [DEBUG] [Thread-121661] [transport.py] [_log()] client lang: <none>
2025-11-03T19:54:11.081 [DEBUG] [Thread-121661] [transport.py] [_log()] server lang: <none>
2025-11-03T19:54:11.081 [DEBUG] [Thread-121661] [transport.py] [_log()] kex follows: False
2025-11-03T19:54:11.081 [DEBUG] [Thread-121661] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:54:11.081 [DEBUG] [Thread-121661] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:54:11.081 [DEBUG] [Thread-121661] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:54:11.081 [DEBUG] [Thread-121661] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:54:11.081 [DEBUG] [Thread-121661] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:54:11.081 [DEBUG] [Thread-121661] [transport.py] [_log()] Compression: none
2025-11-03T19:54:11.081 [DEBUG] [Thread-121661] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:54:11.097 [DEBUG] [Thread-121661] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:54:11.097 [DEBUG] [Thread-121661] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:54:11.098 [DEBUG] [Thread-121661] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:54:11.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:54:11.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:54:11.099 [DEBUG] [Thread-121661] [transport.py] [_log()] userauth is OK
2025-11-03T19:54:11.099 [DEBUG] [Thread-121661] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:54:11.099 [DEBUG] [Thread-121661] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:54:11.099 [DEBUG] [Thread-121661] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:54:11.099 [DEBUG] [Thread-121661] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:54:11.128 [INFO] [Thread-121661] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:54:11.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:54:11.799 [DEBUG] [Thread-121661] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:54:11.799 [DEBUG] [Thread-121661] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:54:11.800 [DEBUG] [Thread-121661] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:54:11.840 [DEBUG] [Thread-121661] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:54:11.840 [DEBUG] [Thread-121661] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:54:11.843 [DEBUG] [Thread-121661] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:54:11.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:54:11.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:54:11.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:54:11.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:54:11.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:54:11.859 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:54:11.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:54:11.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:54:11.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:54:11.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.745587 -999.00  +20.70  22.80     11  -10.40 1 1 1 1 1     3    0 29.02 -119.55 ZNeS. 22.8 22.8 300.2 37.3 20.7 -29.5 20.6 -28.4 20.3 -28.0 20.6 -29.1
2025-11-03T19:54:11.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:54:11.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:54:11.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.745587
2025-11-03T19:54:11.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:54:11.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:54:11.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:54:11.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:54:11.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:54:11.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:53:37', tmtdew=38.68, humidity=6.01, cloud=0.0, wind=27.67, temperature=20.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:53:38.717', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:54:11.861 [DEBUG] [Thread-121661] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:54:11.934 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:54:11.945 [DEBUG] [Thread-121664] [transport.py] [_log()] starting thread (client mode): 0xed2f820
2025-11-03T19:54:11.945 [DEBUG] [Thread-121664] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:54:11.963 [DEBUG] [Thread-121664] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:54:11.963 [INFO] [Thread-121664] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:54:11.971 [DEBUG] [Thread-121664] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:54:11.971 [DEBUG] [Thread-121664] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:54:11.971 [DEBUG] [Thread-121664] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:54:11.971 [DEBUG] [Thread-121664] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:54:11.971 [DEBUG] [Thread-121664] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:54:11.971 [DEBUG] [Thread-121664] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:54:11.971 [DEBUG] [Thread-121664] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:54:11.971 [DEBUG] [Thread-121664] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:54:11.971 [DEBUG] [Thread-121664] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:54:11.971 [DEBUG] [Thread-121664] [transport.py] [_log()] client lang: <none>
2025-11-03T19:54:11.971 [DEBUG] [Thread-121664] [transport.py] [_log()] server lang: <none>
2025-11-03T19:54:11.971 [DEBUG] [Thread-121664] [transport.py] [_log()] kex follows: False
2025-11-03T19:54:11.971 [DEBUG] [Thread-121664] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:54:11.971 [DEBUG] [Thread-121664] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:54:11.971 [DEBUG] [Thread-121664] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:54:11.971 [DEBUG] [Thread-121664] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:54:11.971 [DEBUG] [Thread-121664] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:54:11.971 [DEBUG] [Thread-121664] [transport.py] [_log()] Compression: none
2025-11-03T19:54:11.971 [DEBUG] [Thread-121664] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:54:12.031 [DEBUG] [Thread-121664] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:54:12.031 [DEBUG] [Thread-121664] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:54:12.031 [DEBUG] [Thread-121664] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:54:12.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:54:12.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:54:12.088 [DEBUG] [Thread-121664] [transport.py] [_log()] userauth is OK
2025-11-03T19:54:12.088 [DEBUG] [Thread-121664] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:54:12.089 [DEBUG] [Thread-121664] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:54:12.089 [DEBUG] [Thread-121664] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:54:12.089 [DEBUG] [Thread-121664] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:54:12.103 [INFO] [Thread-121664] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:54:12.103 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:54:12.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:54:12.944 [DEBUG] [Thread-121664] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:54:12.944 [DEBUG] [Thread-121664] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:54:12.991 [DEBUG] [Thread-121664] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:54:12.991 [DEBUG] [Thread-121664] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:54:13.000 [DEBUG] [Thread-121664] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:54:13.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:54:13.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:54:13.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:54:13.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:54:13.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:54:13.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:54:13.031 [DEBUG] [Thread-121664] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:54:16.613 [DEBUG] [Thread-121666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:54:31.676 [DEBUG] [Thread-121667 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:54:41.742 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:54:41.744 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:54:43.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:54:43.054 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:54:43.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:54:43.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 54, 9), 38.58, 6.06, 0.0, 27.86, 20.68, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:54:43.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:54:09
2025-11-03T19:54:43.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:54:44.062 [DEBUG] [Thread-121668] [transport.py] [_log()] starting thread (client mode): 0xed10610
2025-11-03T19:54:44.062 [DEBUG] [Thread-121668] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:54:44.079 [DEBUG] [Thread-121668] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:54:44.079 [INFO] [Thread-121668] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:54:44.080 [DEBUG] [Thread-121668] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:54:44.080 [DEBUG] [Thread-121668] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:54:44.080 [DEBUG] [Thread-121668] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:54:44.080 [DEBUG] [Thread-121668] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:54:44.080 [DEBUG] [Thread-121668] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:54:44.080 [DEBUG] [Thread-121668] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:54:44.080 [DEBUG] [Thread-121668] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:54:44.080 [DEBUG] [Thread-121668] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:54:44.080 [DEBUG] [Thread-121668] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:54:44.080 [DEBUG] [Thread-121668] [transport.py] [_log()] client lang: <none>
2025-11-03T19:54:44.080 [DEBUG] [Thread-121668] [transport.py] [_log()] server lang: <none>
2025-11-03T19:54:44.080 [DEBUG] [Thread-121668] [transport.py] [_log()] kex follows: False
2025-11-03T19:54:44.080 [DEBUG] [Thread-121668] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:54:44.080 [DEBUG] [Thread-121668] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:54:44.080 [DEBUG] [Thread-121668] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:54:44.081 [DEBUG] [Thread-121668] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:54:44.081 [DEBUG] [Thread-121668] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:54:44.081 [DEBUG] [Thread-121668] [transport.py] [_log()] Compression: none
2025-11-03T19:54:44.081 [DEBUG] [Thread-121668] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:54:44.089 [DEBUG] [Thread-121668] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:54:44.089 [DEBUG] [Thread-121668] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:54:44.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:54:44.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:54:44.090 [DEBUG] [Thread-121668] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:54:44.090 [DEBUG] [Thread-121668] [transport.py] [_log()] userauth is OK
2025-11-03T19:54:44.090 [DEBUG] [Thread-121668] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:54:44.090 [DEBUG] [Thread-121668] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:54:44.090 [DEBUG] [Thread-121668] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:54:44.090 [DEBUG] [Thread-121668] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:54:44.115 [INFO] [Thread-121668] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:54:44.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:54:44.775 [DEBUG] [Thread-121668] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:54:44.775 [DEBUG] [Thread-121668] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:54:44.775 [DEBUG] [Thread-121668] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:54:44.816 [DEBUG] [Thread-121668] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:54:44.816 [DEBUG] [Thread-121668] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:54:44.818 [DEBUG] [Thread-121668] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:54:44.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:54:44.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:54:44.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:54:44.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:54:44.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:54:44.830 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:54:44.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:54:44.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:54:44.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:54:44.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.745935 -999.00  +20.70  25.81     11  -10.40 1 1 1 1 1     3    0 29.06 -132.02 ZNeSW 25.8 25.8 299.0 37.0 20.6 -29.3 20.6 -28.3 20.4 -28.0 20.6 -29.2
2025-11-03T19:54:44.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:54:44.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:54:44.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.745935
2025-11-03T19:54:44.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:54:44.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:54:44.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:54:44.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:54:44.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:54:44.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:54:09', tmtdew=38.58, humidity=6.06, cloud=0.0, wind=27.86, temperature=20.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:54:08.784', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:54:44.831 [DEBUG] [Thread-121668] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:54:44.906 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:54:44.918 [DEBUG] [Thread-121671] [transport.py] [_log()] starting thread (client mode): 0xed13e80
2025-11-03T19:54:44.918 [DEBUG] [Thread-121671] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:54:44.933 [DEBUG] [Thread-121671] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:54:44.933 [INFO] [Thread-121671] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:54:44.941 [DEBUG] [Thread-121671] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:54:44.941 [DEBUG] [Thread-121671] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:54:44.941 [DEBUG] [Thread-121671] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:54:44.941 [DEBUG] [Thread-121671] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:54:44.941 [DEBUG] [Thread-121671] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:54:44.941 [DEBUG] [Thread-121671] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:54:44.941 [DEBUG] [Thread-121671] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:54:44.941 [DEBUG] [Thread-121671] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:54:44.941 [DEBUG] [Thread-121671] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:54:44.941 [DEBUG] [Thread-121671] [transport.py] [_log()] client lang: <none>
2025-11-03T19:54:44.941 [DEBUG] [Thread-121671] [transport.py] [_log()] server lang: <none>
2025-11-03T19:54:44.941 [DEBUG] [Thread-121671] [transport.py] [_log()] kex follows: False
2025-11-03T19:54:44.941 [DEBUG] [Thread-121671] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:54:44.941 [DEBUG] [Thread-121671] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:54:44.941 [DEBUG] [Thread-121671] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:54:44.942 [DEBUG] [Thread-121671] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:54:44.942 [DEBUG] [Thread-121671] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:54:44.942 [DEBUG] [Thread-121671] [transport.py] [_log()] Compression: none
2025-11-03T19:54:44.942 [DEBUG] [Thread-121671] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:54:44.997 [DEBUG] [Thread-121671] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:54:44.997 [DEBUG] [Thread-121671] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:54:44.997 [DEBUG] [Thread-121671] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:54:44.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:54:44.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:54:45.053 [DEBUG] [Thread-121671] [transport.py] [_log()] userauth is OK
2025-11-03T19:54:45.053 [DEBUG] [Thread-121671] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:54:45.054 [DEBUG] [Thread-121671] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:54:45.054 [DEBUG] [Thread-121671] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:54:45.054 [DEBUG] [Thread-121671] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:54:45.069 [INFO] [Thread-121671] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:54:45.069 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:54:45.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:54:45.940 [DEBUG] [Thread-121671] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:54:45.940 [DEBUG] [Thread-121671] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:54:45.994 [DEBUG] [Thread-121671] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:54:45.994 [DEBUG] [Thread-121671] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:54:46.007 [DEBUG] [Thread-121671] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:54:46.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:54:46.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:54:46.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:54:46.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:54:46.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:54:46.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:54:46.044 [DEBUG] [Thread-121671] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:54:46.723 [DEBUG] [Thread-121673 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:54:52.717 [DEBUG] [Thread-121674 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:55:01.780 [DEBUG] [Thread-121675 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:55:16.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:55:16.066 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:55:16.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:55:16.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 54, 42), 38.41, 6.13, 0.0, 27.14, 20.7, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:55:16.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:54:42
2025-11-03T19:55:16.814 [DEBUG] [Thread-121676 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:55:16.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:55:17.108 [DEBUG] [Thread-121677] [transport.py] [_log()] starting thread (client mode): 0x141d9630
2025-11-03T19:55:17.108 [DEBUG] [Thread-121677] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:55:17.129 [DEBUG] [Thread-121677] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:55:17.129 [INFO] [Thread-121677] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:55:17.132 [DEBUG] [Thread-121677] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:55:17.132 [DEBUG] [Thread-121677] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:55:17.132 [DEBUG] [Thread-121677] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:55:17.133 [DEBUG] [Thread-121677] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:55:17.133 [DEBUG] [Thread-121677] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:55:17.133 [DEBUG] [Thread-121677] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:55:17.133 [DEBUG] [Thread-121677] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:55:17.133 [DEBUG] [Thread-121677] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:55:17.133 [DEBUG] [Thread-121677] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:55:17.133 [DEBUG] [Thread-121677] [transport.py] [_log()] client lang: <none>
2025-11-03T19:55:17.133 [DEBUG] [Thread-121677] [transport.py] [_log()] server lang: <none>
2025-11-03T19:55:17.133 [DEBUG] [Thread-121677] [transport.py] [_log()] kex follows: False
2025-11-03T19:55:17.133 [DEBUG] [Thread-121677] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:55:17.133 [DEBUG] [Thread-121677] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:55:17.133 [DEBUG] [Thread-121677] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:55:17.133 [DEBUG] [Thread-121677] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:55:17.133 [DEBUG] [Thread-121677] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:55:17.133 [DEBUG] [Thread-121677] [transport.py] [_log()] Compression: none
2025-11-03T19:55:17.133 [DEBUG] [Thread-121677] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:55:17.149 [DEBUG] [Thread-121677] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:55:17.149 [DEBUG] [Thread-121677] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:55:17.149 [DEBUG] [Thread-121677] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:55:17.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:55:17.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:55:17.150 [DEBUG] [Thread-121677] [transport.py] [_log()] userauth is OK
2025-11-03T19:55:17.150 [DEBUG] [Thread-121677] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:55:17.150 [DEBUG] [Thread-121677] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:55:17.150 [DEBUG] [Thread-121677] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:55:17.150 [DEBUG] [Thread-121677] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:55:17.159 [INFO] [Thread-121677] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:55:17.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:55:18.278 [DEBUG] [Thread-121677] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:55:18.278 [DEBUG] [Thread-121677] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:55:18.278 [DEBUG] [Thread-121677] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:55:18.318 [DEBUG] [Thread-121677] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:55:18.319 [DEBUG] [Thread-121677] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:55:18.321 [DEBUG] [Thread-121677] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:55:18.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:55:18.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:55:18.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:55:18.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:55:18.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:55:18.393 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:55:18.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:55:18.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:55:18.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:55:18.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.746282 -999.00  +20.70  34.22     11  -10.40 1 1 2 1 1     3    0 27.61 -140.83 ZNeSW 34.2 34.2 310.6 39.5 20.7 -29.5 20.6 -28.5 20.3 -28.3 20.6 -29.0
2025-11-03T19:55:18.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:55:18.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:55:18.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.746282
2025-11-03T19:55:18.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:55:18.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:55:18.396 [DEBUG] [Thread-121677] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:55:18.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:55:18.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:55:18.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:55:18.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:54:42', tmtdew=38.41, humidity=6.13, cloud=0.0, wind=27.14, temperature=20.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:54:38.765', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:55:18.480 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:55:18.492 [DEBUG] [Thread-121680] [transport.py] [_log()] starting thread (client mode): 0xedc4730
2025-11-03T19:55:18.492 [DEBUG] [Thread-121680] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:55:18.506 [DEBUG] [Thread-121680] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:55:18.506 [INFO] [Thread-121680] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:55:18.513 [DEBUG] [Thread-121680] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:55:18.513 [DEBUG] [Thread-121680] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:55:18.514 [DEBUG] [Thread-121680] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:55:18.514 [DEBUG] [Thread-121680] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:55:18.514 [DEBUG] [Thread-121680] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:55:18.514 [DEBUG] [Thread-121680] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:55:18.514 [DEBUG] [Thread-121680] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:55:18.514 [DEBUG] [Thread-121680] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:55:18.514 [DEBUG] [Thread-121680] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:55:18.514 [DEBUG] [Thread-121680] [transport.py] [_log()] client lang: <none>
2025-11-03T19:55:18.514 [DEBUG] [Thread-121680] [transport.py] [_log()] server lang: <none>
2025-11-03T19:55:18.514 [DEBUG] [Thread-121680] [transport.py] [_log()] kex follows: False
2025-11-03T19:55:18.514 [DEBUG] [Thread-121680] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:55:18.514 [DEBUG] [Thread-121680] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:55:18.514 [DEBUG] [Thread-121680] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:55:18.514 [DEBUG] [Thread-121680] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:55:18.514 [DEBUG] [Thread-121680] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:55:18.514 [DEBUG] [Thread-121680] [transport.py] [_log()] Compression: none
2025-11-03T19:55:18.514 [DEBUG] [Thread-121680] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:55:18.573 [DEBUG] [Thread-121680] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:55:18.574 [DEBUG] [Thread-121680] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:55:18.575 [DEBUG] [Thread-121680] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:55:18.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:55:18.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:55:18.633 [DEBUG] [Thread-121680] [transport.py] [_log()] userauth is OK
2025-11-03T19:55:18.633 [DEBUG] [Thread-121680] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:55:18.633 [DEBUG] [Thread-121680] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:55:18.633 [DEBUG] [Thread-121680] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:55:18.633 [DEBUG] [Thread-121680] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:55:18.647 [INFO] [Thread-121680] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:55:18.647 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:55:18.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:55:19.470 [DEBUG] [Thread-121680] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:55:19.470 [DEBUG] [Thread-121680] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:55:19.517 [DEBUG] [Thread-121680] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:55:19.517 [DEBUG] [Thread-121680] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:55:19.526 [DEBUG] [Thread-121680] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:55:19.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:55:19.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:55:19.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:55:19.550 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:55:19.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:55:19.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:55:19.558 [DEBUG] [Thread-121680] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:55:31.848 [DEBUG] [Thread-121682 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:55:46.904 [DEBUG] [Thread-121683 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:55:48.308 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:55:48.309 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:55:49.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:55:49.581 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:55:49.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:55:50.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 55, 14), 38.46, 6.1, 0.0, 26.82, 20.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:55:50.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:55:14
2025-11-03T19:55:50.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:55:50.611 [DEBUG] [Thread-121684] [transport.py] [_log()] starting thread (client mode): 0xed137c0
2025-11-03T19:55:50.611 [DEBUG] [Thread-121684] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:55:50.632 [DEBUG] [Thread-121684] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:55:50.632 [INFO] [Thread-121684] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:55:50.635 [DEBUG] [Thread-121684] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:55:50.635 [DEBUG] [Thread-121684] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:55:50.635 [DEBUG] [Thread-121684] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:55:50.635 [DEBUG] [Thread-121684] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:55:50.635 [DEBUG] [Thread-121684] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:55:50.635 [DEBUG] [Thread-121684] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:55:50.635 [DEBUG] [Thread-121684] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:55:50.635 [DEBUG] [Thread-121684] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:55:50.635 [DEBUG] [Thread-121684] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:55:50.635 [DEBUG] [Thread-121684] [transport.py] [_log()] client lang: <none>
2025-11-03T19:55:50.635 [DEBUG] [Thread-121684] [transport.py] [_log()] server lang: <none>
2025-11-03T19:55:50.635 [DEBUG] [Thread-121684] [transport.py] [_log()] kex follows: False
2025-11-03T19:55:50.635 [DEBUG] [Thread-121684] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:55:50.635 [DEBUG] [Thread-121684] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:55:50.635 [DEBUG] [Thread-121684] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:55:50.635 [DEBUG] [Thread-121684] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:55:50.635 [DEBUG] [Thread-121684] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:55:50.635 [DEBUG] [Thread-121684] [transport.py] [_log()] Compression: none
2025-11-03T19:55:50.636 [DEBUG] [Thread-121684] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:55:50.644 [DEBUG] [Thread-121684] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:55:50.645 [DEBUG] [Thread-121684] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:55:50.645 [DEBUG] [Thread-121684] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:55:50.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:55:50.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:55:50.648 [DEBUG] [Thread-121684] [transport.py] [_log()] userauth is OK
2025-11-03T19:55:50.648 [DEBUG] [Thread-121684] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:55:50.648 [DEBUG] [Thread-121684] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:55:50.648 [DEBUG] [Thread-121684] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:55:50.648 [DEBUG] [Thread-121684] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:55:50.684 [INFO] [Thread-121684] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:55:50.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:55:51.354 [DEBUG] [Thread-121684] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:55:51.354 [DEBUG] [Thread-121684] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:55:51.355 [DEBUG] [Thread-121684] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:55:51.395 [DEBUG] [Thread-121684] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:55:51.395 [DEBUG] [Thread-121684] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:55:51.399 [DEBUG] [Thread-121684] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:55:51.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:55:51.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:55:51.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:55:51.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:55:51.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:55:51.433 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:55:51.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:55:51.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:55:51.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:55:51.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.746629 -999.00  +20.70  29.56     11  -10.40 1 1 1 1 1     2    0 28.25 -136.11 ZNeSW 29.6 29.6 307.4 34.3 20.6 -29.5 20.6 -28.4 20.3 -28.4 20.6 -29.2
2025-11-03T19:55:51.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:55:51.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:55:51.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.746629
2025-11-03T19:55:51.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:55:51.436 [DEBUG] [Thread-121684] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:55:51.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:55:51.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:55:51.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:55:51.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:55:51.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:55:14', tmtdew=38.46, humidity=6.1, cloud=0.0, wind=26.82, temperature=20.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:55:08.746', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:55:51.520 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:55:51.533 [DEBUG] [Thread-121687] [transport.py] [_log()] starting thread (client mode): 0x141d9c30
2025-11-03T19:55:51.533 [DEBUG] [Thread-121687] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:55:51.546 [DEBUG] [Thread-121687] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:55:51.547 [INFO] [Thread-121687] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:55:51.555 [DEBUG] [Thread-121687] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:55:51.555 [DEBUG] [Thread-121687] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:55:51.555 [DEBUG] [Thread-121687] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:55:51.555 [DEBUG] [Thread-121687] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:55:51.555 [DEBUG] [Thread-121687] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:55:51.555 [DEBUG] [Thread-121687] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:55:51.555 [DEBUG] [Thread-121687] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:55:51.555 [DEBUG] [Thread-121687] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:55:51.555 [DEBUG] [Thread-121687] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:55:51.555 [DEBUG] [Thread-121687] [transport.py] [_log()] client lang: <none>
2025-11-03T19:55:51.555 [DEBUG] [Thread-121687] [transport.py] [_log()] server lang: <none>
2025-11-03T19:55:51.555 [DEBUG] [Thread-121687] [transport.py] [_log()] kex follows: False
2025-11-03T19:55:51.555 [DEBUG] [Thread-121687] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:55:51.555 [DEBUG] [Thread-121687] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:55:51.555 [DEBUG] [Thread-121687] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:55:51.556 [DEBUG] [Thread-121687] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:55:51.556 [DEBUG] [Thread-121687] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:55:51.556 [DEBUG] [Thread-121687] [transport.py] [_log()] Compression: none
2025-11-03T19:55:51.556 [DEBUG] [Thread-121687] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:55:51.613 [DEBUG] [Thread-121687] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:55:51.613 [DEBUG] [Thread-121687] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:55:51.614 [DEBUG] [Thread-121687] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:55:51.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:55:51.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:55:51.668 [DEBUG] [Thread-121687] [transport.py] [_log()] userauth is OK
2025-11-03T19:55:51.669 [DEBUG] [Thread-121687] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:55:51.669 [DEBUG] [Thread-121687] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:55:51.669 [DEBUG] [Thread-121687] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:55:51.669 [DEBUG] [Thread-121687] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:55:51.704 [INFO] [Thread-121687] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:55:51.705 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:55:51.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:55:52.524 [DEBUG] [Thread-121687] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:55:52.524 [DEBUG] [Thread-121687] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:55:52.572 [DEBUG] [Thread-121687] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:55:52.572 [DEBUG] [Thread-121687] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:55:52.582 [DEBUG] [Thread-121687] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:55:52.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:55:52.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:55:52.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:55:52.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:55:52.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:55:52.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:55:52.618 [DEBUG] [Thread-121687] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:55:53.051 [DEBUG] [Thread-121689 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:56:01.937 [DEBUG] [Thread-121690 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:56:16.999 [DEBUG] [Thread-121691 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:56:22.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:56:22.637 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:56:22.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:56:23.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 56, 19), 38.06, 6.26, 0.0, 25.34, 20.62, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:56:23.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:56:19
2025-11-03T19:56:23.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:56:23.640 [DEBUG] [Thread-121692] [transport.py] [_log()] starting thread (client mode): 0x11798a60
2025-11-03T19:56:23.640 [DEBUG] [Thread-121692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:56:23.661 [DEBUG] [Thread-121692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:56:23.661 [INFO] [Thread-121692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:56:23.664 [DEBUG] [Thread-121692] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:56:23.664 [DEBUG] [Thread-121692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:56:23.664 [DEBUG] [Thread-121692] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:56:23.664 [DEBUG] [Thread-121692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:56:23.664 [DEBUG] [Thread-121692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:56:23.664 [DEBUG] [Thread-121692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:56:23.664 [DEBUG] [Thread-121692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:56:23.664 [DEBUG] [Thread-121692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:56:23.664 [DEBUG] [Thread-121692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:56:23.664 [DEBUG] [Thread-121692] [transport.py] [_log()] client lang: <none>
2025-11-03T19:56:23.664 [DEBUG] [Thread-121692] [transport.py] [_log()] server lang: <none>
2025-11-03T19:56:23.664 [DEBUG] [Thread-121692] [transport.py] [_log()] kex follows: False
2025-11-03T19:56:23.664 [DEBUG] [Thread-121692] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:56:23.664 [DEBUG] [Thread-121692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:56:23.664 [DEBUG] [Thread-121692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:56:23.664 [DEBUG] [Thread-121692] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:56:23.664 [DEBUG] [Thread-121692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:56:23.664 [DEBUG] [Thread-121692] [transport.py] [_log()] Compression: none
2025-11-03T19:56:23.664 [DEBUG] [Thread-121692] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:56:23.684 [DEBUG] [Thread-121692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:56:23.684 [DEBUG] [Thread-121692] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:56:23.684 [DEBUG] [Thread-121692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:56:23.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:56:23.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:56:23.685 [DEBUG] [Thread-121692] [transport.py] [_log()] userauth is OK
2025-11-03T19:56:23.685 [DEBUG] [Thread-121692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:56:23.685 [DEBUG] [Thread-121692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:56:23.685 [DEBUG] [Thread-121692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:56:23.685 [DEBUG] [Thread-121692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:56:23.700 [INFO] [Thread-121692] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:56:23.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:56:24.452 [DEBUG] [Thread-121692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:56:24.452 [DEBUG] [Thread-121692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:56:24.453 [DEBUG] [Thread-121692] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:56:24.493 [DEBUG] [Thread-121692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:56:24.493 [DEBUG] [Thread-121692] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:56:24.495 [DEBUG] [Thread-121692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:56:24.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:56:24.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:56:24.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:56:24.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:56:24.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:56:24.519 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:56:24.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:56:24.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:56:24.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:56:24.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.746976 -999.00  +20.60  23.05     11  -10.30 1 1 1 1 1     2    0 28.08 -148.80 ZNeSW 23.1 23.1 301.8 39.3 20.6 -29.4 20.6 -28.4 20.3 -28.1 20.6 -28.9
2025-11-03T19:56:24.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:56:24.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:56:24.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.746976
2025-11-03T19:56:24.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:56:24.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:56:24.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:56:24.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:56:24.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:56:24.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:56:19', tmtdew=38.06, humidity=6.26, cloud=0.0, wind=25.34, temperature=20.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:55:38.726', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:56:24.520 [DEBUG] [Thread-121692] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:56:24.595 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:56:24.607 [DEBUG] [Thread-121695] [transport.py] [_log()] starting thread (client mode): 0xed10340
2025-11-03T19:56:24.607 [DEBUG] [Thread-121695] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:56:24.621 [DEBUG] [Thread-121695] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:56:24.621 [INFO] [Thread-121695] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:56:24.629 [DEBUG] [Thread-121695] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:56:24.629 [DEBUG] [Thread-121695] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:56:24.629 [DEBUG] [Thread-121695] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:56:24.629 [DEBUG] [Thread-121695] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:56:24.629 [DEBUG] [Thread-121695] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:56:24.629 [DEBUG] [Thread-121695] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:56:24.629 [DEBUG] [Thread-121695] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:56:24.629 [DEBUG] [Thread-121695] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:56:24.629 [DEBUG] [Thread-121695] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:56:24.629 [DEBUG] [Thread-121695] [transport.py] [_log()] client lang: <none>
2025-11-03T19:56:24.629 [DEBUG] [Thread-121695] [transport.py] [_log()] server lang: <none>
2025-11-03T19:56:24.629 [DEBUG] [Thread-121695] [transport.py] [_log()] kex follows: False
2025-11-03T19:56:24.629 [DEBUG] [Thread-121695] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:56:24.629 [DEBUG] [Thread-121695] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:56:24.629 [DEBUG] [Thread-121695] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:56:24.629 [DEBUG] [Thread-121695] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:56:24.629 [DEBUG] [Thread-121695] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:56:24.629 [DEBUG] [Thread-121695] [transport.py] [_log()] Compression: none
2025-11-03T19:56:24.629 [DEBUG] [Thread-121695] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:56:24.690 [DEBUG] [Thread-121695] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:56:24.690 [DEBUG] [Thread-121695] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:56:24.690 [DEBUG] [Thread-121695] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:56:24.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:56:24.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:56:24.748 [DEBUG] [Thread-121695] [transport.py] [_log()] userauth is OK
2025-11-03T19:56:24.748 [DEBUG] [Thread-121695] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:56:24.748 [DEBUG] [Thread-121695] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:56:24.748 [DEBUG] [Thread-121695] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:56:24.748 [DEBUG] [Thread-121695] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:56:24.761 [INFO] [Thread-121695] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:56:24.762 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:56:24.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:56:25.564 [DEBUG] [Thread-121695] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:56:25.564 [DEBUG] [Thread-121695] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:56:25.612 [DEBUG] [Thread-121695] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:56:25.612 [DEBUG] [Thread-121695] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:56:25.621 [DEBUG] [Thread-121695] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:56:25.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:56:25.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:56:25.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:56:25.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:56:25.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:56:25.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:56:25.654 [DEBUG] [Thread-121695] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:56:32.049 [DEBUG] [Thread-121697 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:56:47.102 [DEBUG] [Thread-121698 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:56:53.132 [DEBUG] [Thread-121699 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:56:55.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:56:55.676 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:56:55.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:56:56.240 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:56:56.241 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:56:56.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 56, 51), 38.05, 6.25, 0.0, 29.06, 20.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:56:56.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:56:51
2025-11-03T19:56:56.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:56:56.694 [DEBUG] [Thread-121700] [transport.py] [_log()] starting thread (client mode): 0xedc4fd0
2025-11-03T19:56:56.694 [DEBUG] [Thread-121700] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:56:56.715 [DEBUG] [Thread-121700] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:56:56.715 [INFO] [Thread-121700] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:56:56.718 [DEBUG] [Thread-121700] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:56:56.719 [DEBUG] [Thread-121700] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:56:56.719 [DEBUG] [Thread-121700] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:56:56.719 [DEBUG] [Thread-121700] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:56:56.719 [DEBUG] [Thread-121700] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:56:56.719 [DEBUG] [Thread-121700] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:56:56.719 [DEBUG] [Thread-121700] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:56:56.719 [DEBUG] [Thread-121700] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:56:56.719 [DEBUG] [Thread-121700] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:56:56.719 [DEBUG] [Thread-121700] [transport.py] [_log()] client lang: <none>
2025-11-03T19:56:56.719 [DEBUG] [Thread-121700] [transport.py] [_log()] server lang: <none>
2025-11-03T19:56:56.719 [DEBUG] [Thread-121700] [transport.py] [_log()] kex follows: False
2025-11-03T19:56:56.719 [DEBUG] [Thread-121700] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:56:56.719 [DEBUG] [Thread-121700] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:56:56.720 [DEBUG] [Thread-121700] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:56:56.720 [DEBUG] [Thread-121700] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:56:56.720 [DEBUG] [Thread-121700] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:56:56.720 [DEBUG] [Thread-121700] [transport.py] [_log()] Compression: none
2025-11-03T19:56:56.720 [DEBUG] [Thread-121700] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:56:56.737 [DEBUG] [Thread-121700] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:56:56.738 [DEBUG] [Thread-121700] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:56:56.739 [DEBUG] [Thread-121700] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:56:56.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:56:56.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:56:56.742 [DEBUG] [Thread-121700] [transport.py] [_log()] userauth is OK
2025-11-03T19:56:56.742 [DEBUG] [Thread-121700] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:56:56.742 [DEBUG] [Thread-121700] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:56:56.742 [DEBUG] [Thread-121700] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:56:56.742 [DEBUG] [Thread-121700] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:56:56.766 [INFO] [Thread-121700] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:56:56.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:56:57.392 [DEBUG] [Thread-121700] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:56:57.392 [DEBUG] [Thread-121700] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:56:57.392 [DEBUG] [Thread-121700] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:56:57.432 [DEBUG] [Thread-121700] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:56:57.432 [DEBUG] [Thread-121700] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:56:57.436 [DEBUG] [Thread-121700] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:56:57.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:56:57.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:56:57.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:56:57.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:56:57.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:56:57.461 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:56:57.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:56:57.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:56:57.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:56:57.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.747323 -999.00  +20.70  33.97     11  -10.20 1 1 2 1 1     2    0 28.18 -162.97 ZNESW 34.0 34.0 308.2 36.6 20.6 -29.4 20.6 -28.4 20.3 -28.0 20.6 -29.2
2025-11-03T19:56:57.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:56:57.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:56:57.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.747323
2025-11-03T19:56:57.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:56:57.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:56:57.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:56:57.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:56:57.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:56:57.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:56:51', tmtdew=38.05, humidity=6.25, cloud=0.0, wind=29.06, temperature=20.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:56:08.707', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:56:57.464 [DEBUG] [Thread-121700] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:56:57.547 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:56:57.562 [DEBUG] [Thread-121703] [transport.py] [_log()] starting thread (client mode): 0x141d9510
2025-11-03T19:56:57.562 [DEBUG] [Thread-121703] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:56:57.579 [DEBUG] [Thread-121703] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T19:56:57.579 [INFO] [Thread-121703] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T19:56:57.587 [DEBUG] [Thread-121703] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:56:57.587 [DEBUG] [Thread-121703] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T19:56:57.587 [DEBUG] [Thread-121703] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:56:57.587 [DEBUG] [Thread-121703] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:56:57.587 [DEBUG] [Thread-121703] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:56:57.587 [DEBUG] [Thread-121703] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:56:57.587 [DEBUG] [Thread-121703] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:56:57.587 [DEBUG] [Thread-121703] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:56:57.587 [DEBUG] [Thread-121703] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:56:57.587 [DEBUG] [Thread-121703] [transport.py] [_log()] client lang: <none>
2025-11-03T19:56:57.587 [DEBUG] [Thread-121703] [transport.py] [_log()] server lang: <none>
2025-11-03T19:56:57.587 [DEBUG] [Thread-121703] [transport.py] [_log()] kex follows: False
2025-11-03T19:56:57.588 [DEBUG] [Thread-121703] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:56:57.588 [DEBUG] [Thread-121703] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:56:57.588 [DEBUG] [Thread-121703] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:56:57.588 [DEBUG] [Thread-121703] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:56:57.588 [DEBUG] [Thread-121703] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:56:57.588 [DEBUG] [Thread-121703] [transport.py] [_log()] Compression: none
2025-11-03T19:56:57.588 [DEBUG] [Thread-121703] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:56:57.647 [DEBUG] [Thread-121703] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:56:57.648 [DEBUG] [Thread-121703] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:56:57.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T19:56:57.649 [DEBUG] [Thread-121703] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T19:56:57.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:56:57.703 [DEBUG] [Thread-121703] [transport.py] [_log()] userauth is OK
2025-11-03T19:56:57.704 [DEBUG] [Thread-121703] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:56:57.704 [DEBUG] [Thread-121703] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:56:57.704 [DEBUG] [Thread-121703] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T19:56:57.704 [DEBUG] [Thread-121703] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:56:57.723 [INFO] [Thread-121703] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:56:57.724 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T19:56:57.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:56:58.567 [DEBUG] [Thread-121703] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:56:58.567 [DEBUG] [Thread-121703] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:56:58.615 [DEBUG] [Thread-121703] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:56:58.615 [DEBUG] [Thread-121703] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:56:58.624 [DEBUG] [Thread-121703] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:56:58.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:56:58.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T19:56:58.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T19:56:58.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:56:58.648 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:56:58.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:56:58.655 [DEBUG] [Thread-121703] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:57:02.135 [DEBUG] [Thread-121705 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:57:17.190 [DEBUG] [Thread-121706 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:57:28.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T19:57:28.660 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T19:57:28.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T19:57:29.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 19, 57, 24), 38.05, 6.25, 0.0, 26.7, 20.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T19:57:29.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 19:57:24
2025-11-03T19:57:29.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T19:57:29.729 [DEBUG] [Thread-121707] [transport.py] [_log()] starting thread (client mode): 0xed12920
2025-11-03T19:57:29.729 [DEBUG] [Thread-121707] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T19:57:29.750 [DEBUG] [Thread-121707] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T19:57:29.751 [INFO] [Thread-121707] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T19:57:29.753 [DEBUG] [Thread-121707] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T19:57:29.753 [DEBUG] [Thread-121707] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T19:57:29.753 [DEBUG] [Thread-121707] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T19:57:29.753 [DEBUG] [Thread-121707] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:57:29.753 [DEBUG] [Thread-121707] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T19:57:29.753 [DEBUG] [Thread-121707] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:57:29.753 [DEBUG] [Thread-121707] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T19:57:29.753 [DEBUG] [Thread-121707] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T19:57:29.753 [DEBUG] [Thread-121707] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T19:57:29.753 [DEBUG] [Thread-121707] [transport.py] [_log()] client lang: <none>
2025-11-03T19:57:29.753 [DEBUG] [Thread-121707] [transport.py] [_log()] server lang: <none>
2025-11-03T19:57:29.753 [DEBUG] [Thread-121707] [transport.py] [_log()] kex follows: False
2025-11-03T19:57:29.754 [DEBUG] [Thread-121707] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T19:57:29.754 [DEBUG] [Thread-121707] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T19:57:29.754 [DEBUG] [Thread-121707] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T19:57:29.754 [DEBUG] [Thread-121707] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T19:57:29.754 [DEBUG] [Thread-121707] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T19:57:29.754 [DEBUG] [Thread-121707] [transport.py] [_log()] Compression: none
2025-11-03T19:57:29.754 [DEBUG] [Thread-121707] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T19:57:29.769 [DEBUG] [Thread-121707] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T19:57:29.769 [DEBUG] [Thread-121707] [transport.py] [_log()] Switch to new keys ...
2025-11-03T19:57:29.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T19:57:29.770 [DEBUG] [Thread-121707] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T19:57:29.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T19:57:29.772 [DEBUG] [Thread-121707] [transport.py] [_log()] userauth is OK
2025-11-03T19:57:29.772 [DEBUG] [Thread-121707] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T19:57:29.772 [DEBUG] [Thread-121707] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T19:57:29.772 [DEBUG] [Thread-121707] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T19:57:29.772 [DEBUG] [Thread-121707] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T19:57:29.792 [INFO] [Thread-121707] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T19:57:29.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T19:57:30.340 [DEBUG] [Thread-121707] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T19:57:30.340 [DEBUG] [Thread-121707] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T19:57:30.341 [DEBUG] [Thread-121707] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T19:57:30.380 [DEBUG] [Thread-121707] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T19:57:30.381 [DEBUG] [Thread-121707] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T19:57:30.384 [DEBUG] [Thread-121707] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T19:57:30.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T19:57:30.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T19:57:30.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T19:57:30.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T19:57:30.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T19:57:30.416 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T19:57:30.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T19:57:30.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T19:57:30.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T19:57:30.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.747671 -999.00  +20.60  25.14     11  -10.10 1 1 1 1 1     2    0 27.72 -161.43 zNeSW 25.1 25.1 314.2 34.4 20.6 -29.6 20.5 -28.3 20.3 -28.4 20.6 -29.1
2025-11-03T19:57:30.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T19:57:30.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T19:57:30.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.747671
2025-11-03T19:57:30.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T19:57:30.418 [DEBUG] [Thread-121707] [transport.py] [_log()] EOF in transport thread
2025-11-03T19:57:30.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T19:57:30.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T19:57:30.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T19:57:30.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T19:57:30.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T19:57:24', tmtdew=38.05, humidity=6.25, cloud=0.0, wind=26.7, temperature=20.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T04:17:49', seeing=1.29, atlas_timestamp='2025-11-03T17:56:38.774', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T02:51:00')
2025-11-03T19:57:30.502 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T19:57:32.231 [DEBUG] [Thread-121710 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:57:47.289 [DEBUG] [Thread-121711 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:57:53.236 [DEBUG] [Thread-121712 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:58:02.333 [DEBUG] [Thread-121713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:58:03.531 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:58:03.532 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:58:17.365 [DEBUG] [Thread-121714 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:58:32.399 [DEBUG] [Thread-121715 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:58:47.437 [DEBUG] [Thread-121716 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:58:53.566 [DEBUG] [Thread-121717 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:59:02.474 [DEBUG] [Thread-121718 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:59:08.769 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:59:08.770 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:59:17.508 [DEBUG] [Thread-121719 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:59:32.599 [DEBUG] [Thread-121720 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:59:44.241 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T19:59:47.709 [DEBUG] [Thread-121721 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T19:59:55.191 [DEBUG] [Thread-121722 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:00:02.788 [DEBUG] [Thread-121723 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:00:14.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:00:14.306 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:00:14.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:00:15.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 0, 6), 37.51, 6.86, 0.0, 28.94, 20.45, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:00:15.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:00:06
2025-11-03T20:00:15.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:00:15.943 [DEBUG] [Thread-121724] [transport.py] [_log()] starting thread (client mode): 0xed10ca0
2025-11-03T20:00:15.944 [DEBUG] [Thread-121724] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:00:15.952 [DEBUG] [Thread-121724] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:00:15.952 [INFO] [Thread-121724] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:00:15.959 [DEBUG] [Thread-121724] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:00:15.959 [DEBUG] [Thread-121724] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:00:15.959 [DEBUG] [Thread-121724] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:00:15.959 [DEBUG] [Thread-121724] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:00:15.959 [DEBUG] [Thread-121724] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:00:15.959 [DEBUG] [Thread-121724] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:00:15.959 [DEBUG] [Thread-121724] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:00:15.959 [DEBUG] [Thread-121724] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:00:15.959 [DEBUG] [Thread-121724] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:00:15.959 [DEBUG] [Thread-121724] [transport.py] [_log()] client lang: <none>
2025-11-03T20:00:15.959 [DEBUG] [Thread-121724] [transport.py] [_log()] server lang: <none>
2025-11-03T20:00:15.959 [DEBUG] [Thread-121724] [transport.py] [_log()] kex follows: False
2025-11-03T20:00:15.959 [DEBUG] [Thread-121724] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:00:15.960 [DEBUG] [Thread-121724] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:00:15.960 [DEBUG] [Thread-121724] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:00:15.960 [DEBUG] [Thread-121724] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:00:15.960 [DEBUG] [Thread-121724] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:00:15.960 [DEBUG] [Thread-121724] [transport.py] [_log()] Compression: none
2025-11-03T20:00:15.960 [DEBUG] [Thread-121724] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:00:15.990 [DEBUG] [Thread-121724] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:00:15.994 [DEBUG] [Thread-121724] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:00:15.996 [DEBUG] [Thread-121724] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:00:15.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:00:16.000 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:00:16.002 [DEBUG] [Thread-121724] [transport.py] [_log()] userauth is OK
2025-11-03T20:00:16.003 [DEBUG] [Thread-121724] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:00:16.003 [DEBUG] [Thread-121724] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:00:16.003 [DEBUG] [Thread-121724] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:00:16.003 [DEBUG] [Thread-121724] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:00:16.028 [INFO] [Thread-121724] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:00:16.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:00:16.642 [DEBUG] [Thread-121724] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:00:16.643 [DEBUG] [Thread-121724] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:00:16.644 [DEBUG] [Thread-121724] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:00:16.684 [DEBUG] [Thread-121724] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:00:16.684 [DEBUG] [Thread-121724] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:00:16.687 [DEBUG] [Thread-121724] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:00:16.703 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:00:16.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:00:16.710 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:00:16.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:00:16.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:00:16.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:00:16.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:00:16.720 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:00:16.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:00:16.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:00:16.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:00:16.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.749754 -999.00  +20.40  24.08     11  -10.00 1 1 1 1 1     1    0 27.29 -176.37 zNeSW 24.1 24.1 297.6 34.8 20.5 -29.4 20.4 -28.5 20.2 -28.3 20.4 -29.2
2025-11-03T20:00:16.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:00:16.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:00:16.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.749754
2025-11-03T20:00:16.733 [DEBUG] [Thread-121724] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:00:16.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:00:16.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:00:16.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:00:16.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:00:16.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:00:16.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:00:06', tmtdew=37.51, humidity=6.86, cloud=0.0, wind=28.94, temperature=20.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:00:07', seeing=1.13, atlas_timestamp='2025-11-03T17:59:38.746', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T17:57:00')
2025-11-03T20:00:16.819 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:00:16.831 [DEBUG] [Thread-121727] [transport.py] [_log()] starting thread (client mode): 0xed36fb0
2025-11-03T20:00:16.832 [DEBUG] [Thread-121727] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:00:16.846 [DEBUG] [Thread-121727] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:00:16.846 [INFO] [Thread-121727] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:00:16.853 [DEBUG] [Thread-121727] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:00:16.853 [DEBUG] [Thread-121727] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:00:16.853 [DEBUG] [Thread-121727] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:00:16.853 [DEBUG] [Thread-121727] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:00:16.853 [DEBUG] [Thread-121727] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:00:16.854 [DEBUG] [Thread-121727] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:00:16.854 [DEBUG] [Thread-121727] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:00:16.854 [DEBUG] [Thread-121727] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:00:16.854 [DEBUG] [Thread-121727] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:00:16.854 [DEBUG] [Thread-121727] [transport.py] [_log()] client lang: <none>
2025-11-03T20:00:16.854 [DEBUG] [Thread-121727] [transport.py] [_log()] server lang: <none>
2025-11-03T20:00:16.854 [DEBUG] [Thread-121727] [transport.py] [_log()] kex follows: False
2025-11-03T20:00:16.854 [DEBUG] [Thread-121727] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:00:16.854 [DEBUG] [Thread-121727] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:00:16.854 [DEBUG] [Thread-121727] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:00:16.854 [DEBUG] [Thread-121727] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:00:16.854 [DEBUG] [Thread-121727] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:00:16.854 [DEBUG] [Thread-121727] [transport.py] [_log()] Compression: none
2025-11-03T20:00:16.854 [DEBUG] [Thread-121727] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:00:16.911 [DEBUG] [Thread-121727] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:00:16.911 [DEBUG] [Thread-121727] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:00:16.911 [DEBUG] [Thread-121727] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:00:16.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:00:16.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:00:16.968 [DEBUG] [Thread-121727] [transport.py] [_log()] userauth is OK
2025-11-03T20:00:16.968 [DEBUG] [Thread-121727] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:00:16.968 [DEBUG] [Thread-121727] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:00:16.968 [DEBUG] [Thread-121727] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:00:16.969 [DEBUG] [Thread-121727] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:00:16.982 [INFO] [Thread-121727] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:00:16.982 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:00:16.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:00:17.834 [DEBUG] [Thread-121727] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:00:17.834 [DEBUG] [Thread-121727] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:00:17.848 [DEBUG] [Thread-121729 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:00:17.882 [DEBUG] [Thread-121727] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:00:17.882 [DEBUG] [Thread-121727] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:00:17.891 [DEBUG] [Thread-121727] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:00:17.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:00:17.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:00:17.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:00:17.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:00:17.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:00:17.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:00:17.926 [DEBUG] [Thread-121727] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:00:33.043 [DEBUG] [Thread-121730 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:00:47.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:00:47.967 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:00:48.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:00:48.142 [DEBUG] [Thread-121731 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:00:49.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 0, 40), 37.4, 6.93, 0.0, 27.14, 20.47, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:00:49.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:00:40
2025-11-03T20:00:49.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:00:49.667 [DEBUG] [Thread-121732] [transport.py] [_log()] starting thread (client mode): 0xed36410
2025-11-03T20:00:49.668 [DEBUG] [Thread-121732] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:00:49.682 [DEBUG] [Thread-121732] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:00:49.682 [INFO] [Thread-121732] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:00:49.688 [DEBUG] [Thread-121732] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:00:49.689 [DEBUG] [Thread-121732] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:00:49.689 [DEBUG] [Thread-121732] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:00:49.689 [DEBUG] [Thread-121732] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:00:49.689 [DEBUG] [Thread-121732] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:00:49.689 [DEBUG] [Thread-121732] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:00:49.689 [DEBUG] [Thread-121732] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:00:49.689 [DEBUG] [Thread-121732] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:00:49.689 [DEBUG] [Thread-121732] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:00:49.689 [DEBUG] [Thread-121732] [transport.py] [_log()] client lang: <none>
2025-11-03T20:00:49.689 [DEBUG] [Thread-121732] [transport.py] [_log()] server lang: <none>
2025-11-03T20:00:49.689 [DEBUG] [Thread-121732] [transport.py] [_log()] kex follows: False
2025-11-03T20:00:49.689 [DEBUG] [Thread-121732] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:00:49.689 [DEBUG] [Thread-121732] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:00:49.690 [DEBUG] [Thread-121732] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:00:49.690 [DEBUG] [Thread-121732] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:00:49.690 [DEBUG] [Thread-121732] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:00:49.690 [DEBUG] [Thread-121732] [transport.py] [_log()] Compression: none
2025-11-03T20:00:49.690 [DEBUG] [Thread-121732] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:00:49.720 [DEBUG] [Thread-121732] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:00:49.724 [DEBUG] [Thread-121732] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:00:49.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:00:49.726 [DEBUG] [Thread-121732] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:00:49.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:00:49.729 [DEBUG] [Thread-121732] [transport.py] [_log()] userauth is OK
2025-11-03T20:00:49.730 [DEBUG] [Thread-121732] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:00:49.730 [DEBUG] [Thread-121732] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:00:49.730 [DEBUG] [Thread-121732] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:00:49.730 [DEBUG] [Thread-121732] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:00:49.766 [INFO] [Thread-121732] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:00:49.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:00:50.414 [DEBUG] [Thread-121732] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:00:50.414 [DEBUG] [Thread-121732] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:00:50.415 [DEBUG] [Thread-121732] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:00:50.457 [DEBUG] [Thread-121732] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:00:50.457 [DEBUG] [Thread-121732] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:00:50.459 [DEBUG] [Thread-121732] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:00:50.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:00:50.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:00:50.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:00:50.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:00:50.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:00:50.479 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:00:50.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:00:50.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:00:50.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:00:50.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.750101 -999.00  +20.40  27.35     11  -10.00 1 1 1 1 1     1    0 26.29 -192.01 zNeSW 27.4 27.4 307.4 34.4 20.5 -29.4 20.4 -28.4 20.1 -28.2 20.4 -29.1
2025-11-03T20:00:50.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:00:50.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:00:50.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.750101
2025-11-03T20:00:50.486 [DEBUG] [Thread-121732] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:00:50.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:00:50.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:00:50.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:00:50.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:00:50.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:00:50.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:00:40', tmtdew=37.4, humidity=6.93, cloud=0.0, wind=27.14, temperature=20.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:00:40', seeing=1.03, atlas_timestamp='2025-11-03T18:00:08.726', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T17:57:00')
2025-11-03T20:00:50.569 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:00:50.581 [DEBUG] [Thread-121735] [transport.py] [_log()] starting thread (client mode): 0x1179a6b0
2025-11-03T20:00:50.581 [DEBUG] [Thread-121735] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:00:50.596 [DEBUG] [Thread-121735] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:00:50.596 [INFO] [Thread-121735] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:00:50.605 [DEBUG] [Thread-121735] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:00:50.605 [DEBUG] [Thread-121735] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:00:50.605 [DEBUG] [Thread-121735] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:00:50.605 [DEBUG] [Thread-121735] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:00:50.605 [DEBUG] [Thread-121735] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:00:50.605 [DEBUG] [Thread-121735] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:00:50.605 [DEBUG] [Thread-121735] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:00:50.605 [DEBUG] [Thread-121735] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:00:50.605 [DEBUG] [Thread-121735] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:00:50.605 [DEBUG] [Thread-121735] [transport.py] [_log()] client lang: <none>
2025-11-03T20:00:50.605 [DEBUG] [Thread-121735] [transport.py] [_log()] server lang: <none>
2025-11-03T20:00:50.605 [DEBUG] [Thread-121735] [transport.py] [_log()] kex follows: False
2025-11-03T20:00:50.605 [DEBUG] [Thread-121735] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:00:50.605 [DEBUG] [Thread-121735] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:00:50.605 [DEBUG] [Thread-121735] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:00:50.605 [DEBUG] [Thread-121735] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:00:50.605 [DEBUG] [Thread-121735] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:00:50.606 [DEBUG] [Thread-121735] [transport.py] [_log()] Compression: none
2025-11-03T20:00:50.606 [DEBUG] [Thread-121735] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:00:50.663 [DEBUG] [Thread-121735] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:00:50.664 [DEBUG] [Thread-121735] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:00:50.664 [DEBUG] [Thread-121735] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:00:50.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:00:50.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:00:50.721 [DEBUG] [Thread-121735] [transport.py] [_log()] userauth is OK
2025-11-03T20:00:50.721 [DEBUG] [Thread-121735] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:00:50.721 [DEBUG] [Thread-121735] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:00:50.721 [DEBUG] [Thread-121735] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:00:50.721 [DEBUG] [Thread-121735] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:00:50.736 [INFO] [Thread-121735] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:00:50.736 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:00:50.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:00:51.553 [DEBUG] [Thread-121735] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:00:51.553 [DEBUG] [Thread-121735] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:00:51.602 [DEBUG] [Thread-121735] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:00:51.602 [DEBUG] [Thread-121735] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:00:51.612 [DEBUG] [Thread-121735] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:00:51.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:00:51.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:00:51.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:00:51.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:00:51.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:00:51.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:00:51.650 [DEBUG] [Thread-121735] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:00:55.523 [DEBUG] [Thread-121737 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:01:03.253 [DEBUG] [Thread-121738 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:01:18.423 [DEBUG] [Thread-121739 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:01:21.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:01:21.690 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:01:21.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:01:23.078 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:01:23.084 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:01:27.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 1, 13), 37.42, 6.91, 0.0, 26.11, 20.45, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:01:27.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:01:13
2025-11-03T20:01:27.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:01:27.624 [DEBUG] [Thread-121740] [transport.py] [_log()] starting thread (client mode): 0x117983a0
2025-11-03T20:01:27.625 [DEBUG] [Thread-121740] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:01:27.626 [DEBUG] [Thread-121740] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:01:27.626 [INFO] [Thread-121740] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:01:27.629 [DEBUG] [Thread-121740] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:01:27.629 [DEBUG] [Thread-121740] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:01:27.629 [DEBUG] [Thread-121740] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:01:27.629 [DEBUG] [Thread-121740] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:01:27.629 [DEBUG] [Thread-121740] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:01:27.629 [DEBUG] [Thread-121740] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:01:27.629 [DEBUG] [Thread-121740] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:01:27.630 [DEBUG] [Thread-121740] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:01:27.630 [DEBUG] [Thread-121740] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:01:27.630 [DEBUG] [Thread-121740] [transport.py] [_log()] client lang: <none>
2025-11-03T20:01:27.630 [DEBUG] [Thread-121740] [transport.py] [_log()] server lang: <none>
2025-11-03T20:01:27.630 [DEBUG] [Thread-121740] [transport.py] [_log()] kex follows: False
2025-11-03T20:01:27.630 [DEBUG] [Thread-121740] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:01:27.630 [DEBUG] [Thread-121740] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:01:27.630 [DEBUG] [Thread-121740] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:01:27.630 [DEBUG] [Thread-121740] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:01:27.630 [DEBUG] [Thread-121740] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:01:27.630 [DEBUG] [Thread-121740] [transport.py] [_log()] Compression: none
2025-11-03T20:01:27.630 [DEBUG] [Thread-121740] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:01:27.656 [DEBUG] [Thread-121740] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:01:27.659 [DEBUG] [Thread-121740] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:01:27.660 [DEBUG] [Thread-121740] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:01:27.661 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:01:27.661 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:01:27.663 [DEBUG] [Thread-121740] [transport.py] [_log()] userauth is OK
2025-11-03T20:01:27.664 [DEBUG] [Thread-121740] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:01:27.664 [DEBUG] [Thread-121740] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:01:27.664 [DEBUG] [Thread-121740] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:01:27.664 [DEBUG] [Thread-121740] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:01:27.681 [INFO] [Thread-121740] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:01:27.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:01:28.316 [DEBUG] [Thread-121740] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:01:28.316 [DEBUG] [Thread-121740] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:01:28.318 [DEBUG] [Thread-121740] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:01:28.357 [DEBUG] [Thread-121740] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:01:28.357 [DEBUG] [Thread-121740] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:01:28.360 [DEBUG] [Thread-121740] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:01:28.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:01:28.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:01:28.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:01:28.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:01:28.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:01:28.385 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:01:28.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:01:28.385 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:01:28.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:01:28.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.750448 -999.00  +20.40  30.13     12   -9.90 1 1 2 1 1     1    0 26.99 -183.39 ZNESW 30.1 30.1 310.8 37.0 20.5 -29.4 20.4 -28.5 20.2 -28.2 20.4 -29.1
2025-11-03T20:01:28.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:01:28.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:01:28.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.750448
2025-11-03T20:01:28.392 [DEBUG] [Thread-121740] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:01:28.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:01:28.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:01:28.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:01:28.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:01:28.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:01:28.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:01:13', tmtdew=37.42, humidity=6.91, cloud=0.0, wind=26.11, temperature=20.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:01:14', seeing=1.05, atlas_timestamp='2025-11-03T18:00:38.707', atlas_cloud=1, atlas_rain=1, zp_data=[-0.005250000000000199, 0.039250000000000895, 0.05824999999999925, 0.05549999999999855, 0.09849999999999959, 0.04025000000000034, 0.045999999999999375, 0.005250000000000199, 0.09750000000000014, 0.0065000000000008384, 0.09274999999999878, 0.04899999999999949, 0.15000000000000036, -0.0027500000000006963, -0.034000000000000696, 0.08499999999999908, 0.021250000000000213, 0.06450000000000067, -0.02400000000000091, 0.08724999999999916, 0.16749999999999865, 0.10974999999999824, 0.07475000000000165, 0.07374999999999865, 0.09149999999999814, 0.08499999999999908, -0.04824999999999946, 0.2530000000000001, 0.25900000000000034, 0.09050000000000225, 0.18400000000000105, 0.0020000000000024443, 0.1402499999999982], zp_timestamp='2025-11-03T17:57:00')
2025-11-03T20:01:28.478 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:01:28.494 [DEBUG] [Thread-121743] [transport.py] [_log()] starting thread (client mode): 0xedc7280
2025-11-03T20:01:28.494 [DEBUG] [Thread-121743] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:01:28.513 [DEBUG] [Thread-121743] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:01:28.513 [INFO] [Thread-121743] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:01:28.521 [DEBUG] [Thread-121743] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:01:28.521 [DEBUG] [Thread-121743] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:01:28.521 [DEBUG] [Thread-121743] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:01:28.521 [DEBUG] [Thread-121743] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:01:28.521 [DEBUG] [Thread-121743] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:01:28.521 [DEBUG] [Thread-121743] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:01:28.521 [DEBUG] [Thread-121743] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:01:28.521 [DEBUG] [Thread-121743] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:01:28.521 [DEBUG] [Thread-121743] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:01:28.521 [DEBUG] [Thread-121743] [transport.py] [_log()] client lang: <none>
2025-11-03T20:01:28.521 [DEBUG] [Thread-121743] [transport.py] [_log()] server lang: <none>
2025-11-03T20:01:28.521 [DEBUG] [Thread-121743] [transport.py] [_log()] kex follows: False
2025-11-03T20:01:28.521 [DEBUG] [Thread-121743] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:01:28.521 [DEBUG] [Thread-121743] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:01:28.521 [DEBUG] [Thread-121743] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:01:28.521 [DEBUG] [Thread-121743] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:01:28.521 [DEBUG] [Thread-121743] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:01:28.521 [DEBUG] [Thread-121743] [transport.py] [_log()] Compression: none
2025-11-03T20:01:28.521 [DEBUG] [Thread-121743] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:01:28.584 [DEBUG] [Thread-121743] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:01:28.584 [DEBUG] [Thread-121743] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:01:28.585 [DEBUG] [Thread-121743] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:01:28.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:01:28.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:01:28.648 [DEBUG] [Thread-121743] [transport.py] [_log()] userauth is OK
2025-11-03T20:01:28.648 [DEBUG] [Thread-121743] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:01:28.649 [DEBUG] [Thread-121743] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:01:28.649 [DEBUG] [Thread-121743] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:01:28.649 [DEBUG] [Thread-121743] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:01:28.671 [INFO] [Thread-121743] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:01:28.671 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:01:28.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:01:29.544 [DEBUG] [Thread-121743] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:01:29.544 [DEBUG] [Thread-121743] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:01:29.591 [DEBUG] [Thread-121743] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:01:29.591 [DEBUG] [Thread-121743] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:01:29.599 [DEBUG] [Thread-121743] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:01:29.607 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:01:29.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:01:29.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:01:29.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:01:29.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:01:29.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:01:29.632 [DEBUG] [Thread-121743] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:01:33.540 [DEBUG] [Thread-121745 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:01:48.722 [DEBUG] [Thread-121746 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:01:55.807 [DEBUG] [Thread-121747 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:01:59.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:01:59.657 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:01:59.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:02:00.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 1, 46), 37.32, 6.91, 0.0, 25.48, 20.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:02:00.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:01:46
2025-11-03T20:02:01.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:02:01.300 [DEBUG] [Thread-121748] [transport.py] [_log()] starting thread (client mode): 0x11799240
2025-11-03T20:02:01.302 [DEBUG] [Thread-121748] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:02:01.311 [DEBUG] [Thread-121748] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:02:01.311 [INFO] [Thread-121748] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:02:01.316 [DEBUG] [Thread-121748] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:02:01.317 [DEBUG] [Thread-121748] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:02:01.317 [DEBUG] [Thread-121748] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:02:01.317 [DEBUG] [Thread-121748] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:02:01.317 [DEBUG] [Thread-121748] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:02:01.317 [DEBUG] [Thread-121748] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:02:01.317 [DEBUG] [Thread-121748] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:02:01.317 [DEBUG] [Thread-121748] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:02:01.317 [DEBUG] [Thread-121748] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:02:01.317 [DEBUG] [Thread-121748] [transport.py] [_log()] client lang: <none>
2025-11-03T20:02:01.317 [DEBUG] [Thread-121748] [transport.py] [_log()] server lang: <none>
2025-11-03T20:02:01.317 [DEBUG] [Thread-121748] [transport.py] [_log()] kex follows: False
2025-11-03T20:02:01.317 [DEBUG] [Thread-121748] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:02:01.318 [DEBUG] [Thread-121748] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:02:01.318 [DEBUG] [Thread-121748] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:02:01.318 [DEBUG] [Thread-121748] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:02:01.318 [DEBUG] [Thread-121748] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:02:01.318 [DEBUG] [Thread-121748] [transport.py] [_log()] Compression: none
2025-11-03T20:02:01.318 [DEBUG] [Thread-121748] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:02:01.349 [DEBUG] [Thread-121748] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:02:01.352 [DEBUG] [Thread-121748] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:02:01.354 [DEBUG] [Thread-121748] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:02:01.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:02:01.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:02:01.357 [DEBUG] [Thread-121748] [transport.py] [_log()] userauth is OK
2025-11-03T20:02:01.357 [DEBUG] [Thread-121748] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:02:01.357 [DEBUG] [Thread-121748] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:02:01.357 [DEBUG] [Thread-121748] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:02:01.357 [DEBUG] [Thread-121748] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:02:01.380 [INFO] [Thread-121748] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:02:01.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:02:02.016 [DEBUG] [Thread-121748] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:02:02.016 [DEBUG] [Thread-121748] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:02:02.017 [DEBUG] [Thread-121748] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:02:02.057 [DEBUG] [Thread-121748] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:02:02.057 [DEBUG] [Thread-121748] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:02:02.060 [DEBUG] [Thread-121748] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:02:02.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:02:02.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:02:02.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:02:02.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:02:02.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:02:02.080 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:02:02.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:02:02.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:02:02.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:02:02.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.750796 -999.00  +20.40  27.06     12   -9.90 1 1 1 1 1     0    0 25.65 -199.24 ZNESW 27.1 27.1 298.8 34.6 20.5 -29.6 20.4 -28.5 20.2 -28.4 20.4 -29.1
2025-11-03T20:02:02.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:02:02.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:02:02.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.750796
2025-11-03T20:02:02.087 [DEBUG] [Thread-121748] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:02:02.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:02:02.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:02:02.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:02:02.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:02:02.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:02:02.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:01:46', tmtdew=37.32, humidity=6.91, cloud=0.0, wind=25.48, temperature=20.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:01:47', seeing=1.05, atlas_timestamp='2025-11-03T18:01:08.774', atlas_cloud=1, atlas_rain=1, zp_data=[0.0017499999999994742, 0.05525000000000091, 0.13724999999999987, 0.0754999999999999, 0.13700000000000045, 0.03775000000000084, 0.04150000000000098, -0.013749999999998153, -0.10550000000000104, 0.06550000000000011, 0.12324999999999875, 0.07600000000000051, 0.1479999999999997, 0.029249999999999332, -0.1095000000000006, -0.040000000000000924, -0.025750000000000384, 0.11100000000000065, 0.1769999999999996, 0.11624999999999908, 0.026999999999999247, 0.08774999999999977, -0.08674999999999855, -0.3367500000000003, -0.1725000000000012, 0.23000000000000043, 0.2317499999999999, 0.13649999999999984, -0.15200000000000102, 0.01950000000000074, 0.1255000000000024, -0.02999999999999936, -0.6677500000000016], zp_timestamp='2025-11-03T17:59:00')
2025-11-03T20:02:02.177 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:02:02.189 [DEBUG] [Thread-121751] [transport.py] [_log()] starting thread (client mode): 0xed34ac0
2025-11-03T20:02:02.189 [DEBUG] [Thread-121751] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:02:02.204 [DEBUG] [Thread-121751] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:02:02.204 [INFO] [Thread-121751] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:02:02.212 [DEBUG] [Thread-121751] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:02:02.212 [DEBUG] [Thread-121751] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:02:02.212 [DEBUG] [Thread-121751] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:02:02.212 [DEBUG] [Thread-121751] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:02:02.212 [DEBUG] [Thread-121751] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:02:02.213 [DEBUG] [Thread-121751] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:02:02.213 [DEBUG] [Thread-121751] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:02:02.213 [DEBUG] [Thread-121751] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:02:02.213 [DEBUG] [Thread-121751] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:02:02.213 [DEBUG] [Thread-121751] [transport.py] [_log()] client lang: <none>
2025-11-03T20:02:02.213 [DEBUG] [Thread-121751] [transport.py] [_log()] server lang: <none>
2025-11-03T20:02:02.213 [DEBUG] [Thread-121751] [transport.py] [_log()] kex follows: False
2025-11-03T20:02:02.213 [DEBUG] [Thread-121751] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:02:02.213 [DEBUG] [Thread-121751] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:02:02.213 [DEBUG] [Thread-121751] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:02:02.213 [DEBUG] [Thread-121751] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:02:02.213 [DEBUG] [Thread-121751] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:02:02.213 [DEBUG] [Thread-121751] [transport.py] [_log()] Compression: none
2025-11-03T20:02:02.213 [DEBUG] [Thread-121751] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:02:02.271 [DEBUG] [Thread-121751] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:02:02.271 [DEBUG] [Thread-121751] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:02:02.272 [DEBUG] [Thread-121751] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:02:02.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:02:02.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:02:02.330 [DEBUG] [Thread-121751] [transport.py] [_log()] userauth is OK
2025-11-03T20:02:02.330 [DEBUG] [Thread-121751] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:02:02.330 [DEBUG] [Thread-121751] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:02:02.330 [DEBUG] [Thread-121751] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:02:02.330 [DEBUG] [Thread-121751] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:02:02.343 [INFO] [Thread-121751] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:02:02.343 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:02:02.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:02:03.197 [DEBUG] [Thread-121751] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:02:03.206 [DEBUG] [Thread-121751] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:02:03.245 [DEBUG] [Thread-121751] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:02:03.245 [DEBUG] [Thread-121751] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:02:03.254 [DEBUG] [Thread-121751] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:02:03.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:02:03.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:02:03.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:02:03.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:02:03.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:02:03.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:02:03.289 [DEBUG] [Thread-121751] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:02:03.811 [DEBUG] [Thread-121753 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:02:18.982 [DEBUG] [Thread-121754 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:02:23.292 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:02:23.295 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:02:33.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:02:33.329 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:02:33.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:02:34.074 [DEBUG] [Thread-121755 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:02:34.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 2, 20), 37.18, 6.99, 0.0, 25.69, 20.42, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:02:34.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:02:20
2025-11-03T20:02:34.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:02:35.060 [DEBUG] [Thread-121756] [transport.py] [_log()] starting thread (client mode): 0xedc4bb0
2025-11-03T20:02:35.061 [DEBUG] [Thread-121756] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:02:35.076 [DEBUG] [Thread-121756] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:02:35.076 [INFO] [Thread-121756] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:02:35.080 [DEBUG] [Thread-121756] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:02:35.080 [DEBUG] [Thread-121756] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:02:35.080 [DEBUG] [Thread-121756] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:02:35.080 [DEBUG] [Thread-121756] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:02:35.080 [DEBUG] [Thread-121756] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:02:35.080 [DEBUG] [Thread-121756] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:02:35.080 [DEBUG] [Thread-121756] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:02:35.080 [DEBUG] [Thread-121756] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:02:35.080 [DEBUG] [Thread-121756] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:02:35.080 [DEBUG] [Thread-121756] [transport.py] [_log()] client lang: <none>
2025-11-03T20:02:35.080 [DEBUG] [Thread-121756] [transport.py] [_log()] server lang: <none>
2025-11-03T20:02:35.080 [DEBUG] [Thread-121756] [transport.py] [_log()] kex follows: False
2025-11-03T20:02:35.080 [DEBUG] [Thread-121756] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:02:35.080 [DEBUG] [Thread-121756] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:02:35.080 [DEBUG] [Thread-121756] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:02:35.081 [DEBUG] [Thread-121756] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:02:35.081 [DEBUG] [Thread-121756] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:02:35.081 [DEBUG] [Thread-121756] [transport.py] [_log()] Compression: none
2025-11-03T20:02:35.081 [DEBUG] [Thread-121756] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:02:35.108 [DEBUG] [Thread-121756] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:02:35.111 [DEBUG] [Thread-121756] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:02:35.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:02:35.113 [DEBUG] [Thread-121756] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:02:35.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:02:35.116 [DEBUG] [Thread-121756] [transport.py] [_log()] userauth is OK
2025-11-03T20:02:35.116 [DEBUG] [Thread-121756] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:02:35.116 [DEBUG] [Thread-121756] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:02:35.116 [DEBUG] [Thread-121756] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:02:35.116 [DEBUG] [Thread-121756] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:02:35.147 [INFO] [Thread-121756] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:02:35.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:02:35.798 [DEBUG] [Thread-121756] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:02:35.798 [DEBUG] [Thread-121756] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:02:35.799 [DEBUG] [Thread-121756] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:02:35.840 [DEBUG] [Thread-121756] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:02:35.840 [DEBUG] [Thread-121756] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:02:35.842 [DEBUG] [Thread-121756] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:02:35.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:02:35.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:02:35.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:02:35.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:02:35.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:02:35.863 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:02:35.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:02:35.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:02:35.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:02:35.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.751490 -999.00  +20.30  26.99     12   -9.90 1 1 1 1 1     0    0 25.88 -195.78 ZNESW 27.0 27.0 304.0 29.0 20.5 -29.6 20.3 -28.5 20.1 -28.4 20.4 -29.1
2025-11-03T20:02:35.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:02:35.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:02:35.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.751490
2025-11-03T20:02:35.870 [DEBUG] [Thread-121756] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:02:35.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:02:35.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:02:35.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:02:35.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:02:35.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:02:35.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:02:20', tmtdew=37.18, humidity=6.99, cloud=0.0, wind=25.69, temperature=20.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:02:20', seeing=1.02, atlas_timestamp='2025-11-03T18:02:08.736', atlas_cloud=1, atlas_rain=1, zp_data=[0.0017499999999994742, 0.05525000000000091, 0.13724999999999987, 0.0754999999999999, 0.13700000000000045, 0.03775000000000084, 0.04150000000000098, -0.013749999999998153, -0.10550000000000104, 0.06550000000000011, 0.12324999999999875, 0.07600000000000051, 0.1479999999999997, 0.029249999999999332, -0.1095000000000006, -0.040000000000000924, -0.025750000000000384, 0.11100000000000065, 0.1769999999999996, 0.11624999999999908, 0.026999999999999247, 0.08774999999999977, -0.08674999999999855, -0.3367500000000003, -0.1725000000000012, 0.23000000000000043, 0.2317499999999999, 0.13649999999999984, -0.15200000000000102, 0.01950000000000074, 0.1255000000000024, -0.02999999999999936, -0.6677500000000016], zp_timestamp='2025-11-03T17:59:00')
2025-11-03T20:02:35.960 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:02:35.972 [DEBUG] [Thread-121759] [transport.py] [_log()] starting thread (client mode): 0x1174df30
2025-11-03T20:02:35.972 [DEBUG] [Thread-121759] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:02:35.987 [DEBUG] [Thread-121759] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:02:35.987 [INFO] [Thread-121759] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:02:35.994 [DEBUG] [Thread-121759] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:02:35.994 [DEBUG] [Thread-121759] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:02:35.994 [DEBUG] [Thread-121759] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:02:35.994 [DEBUG] [Thread-121759] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:02:35.994 [DEBUG] [Thread-121759] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:02:35.994 [DEBUG] [Thread-121759] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:02:35.994 [DEBUG] [Thread-121759] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:02:35.994 [DEBUG] [Thread-121759] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:02:35.994 [DEBUG] [Thread-121759] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:02:35.994 [DEBUG] [Thread-121759] [transport.py] [_log()] client lang: <none>
2025-11-03T20:02:35.994 [DEBUG] [Thread-121759] [transport.py] [_log()] server lang: <none>
2025-11-03T20:02:35.994 [DEBUG] [Thread-121759] [transport.py] [_log()] kex follows: False
2025-11-03T20:02:35.994 [DEBUG] [Thread-121759] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:02:35.994 [DEBUG] [Thread-121759] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:02:35.994 [DEBUG] [Thread-121759] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:02:35.994 [DEBUG] [Thread-121759] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:02:35.994 [DEBUG] [Thread-121759] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:02:35.994 [DEBUG] [Thread-121759] [transport.py] [_log()] Compression: none
2025-11-03T20:02:35.994 [DEBUG] [Thread-121759] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:02:36.053 [DEBUG] [Thread-121759] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:02:36.053 [DEBUG] [Thread-121759] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:02:36.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:02:36.053 [DEBUG] [Thread-121759] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:02:36.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:02:36.111 [DEBUG] [Thread-121759] [transport.py] [_log()] userauth is OK
2025-11-03T20:02:36.111 [DEBUG] [Thread-121759] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:02:36.111 [DEBUG] [Thread-121759] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:02:36.111 [DEBUG] [Thread-121759] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:02:36.111 [DEBUG] [Thread-121759] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:02:36.124 [INFO] [Thread-121759] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:02:36.124 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:02:36.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:02:36.957 [DEBUG] [Thread-121759] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:02:36.958 [DEBUG] [Thread-121759] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:02:37.005 [DEBUG] [Thread-121759] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:02:37.005 [DEBUG] [Thread-121759] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:02:37.014 [DEBUG] [Thread-121759] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:02:37.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:02:37.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:02:37.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:02:37.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:02:37.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:02:37.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:02:37.049 [DEBUG] [Thread-121759] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:02:49.181 [DEBUG] [Thread-121761 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:02:56.073 [DEBUG] [Thread-121762 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:03:04.642 [DEBUG] [Thread-121763 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:03:07.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:03:07.065 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:03:07.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:03:07.756 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:03:10.948 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:03:11.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 2, 53), 37.03, 6.99, 0.0, 26.01, 20.4, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:03:11.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:02:53
2025-11-03T20:03:11.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:03:11.688 [DEBUG] [Thread-121764] [transport.py] [_log()] starting thread (client mode): 0xed12a40
2025-11-03T20:03:11.689 [DEBUG] [Thread-121764] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:03:11.701 [DEBUG] [Thread-121764] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:03:11.701 [INFO] [Thread-121764] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:03:11.706 [DEBUG] [Thread-121764] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:03:11.706 [DEBUG] [Thread-121764] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:03:11.706 [DEBUG] [Thread-121764] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:03:11.706 [DEBUG] [Thread-121764] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:03:11.706 [DEBUG] [Thread-121764] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:03:11.706 [DEBUG] [Thread-121764] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:03:11.706 [DEBUG] [Thread-121764] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:03:11.706 [DEBUG] [Thread-121764] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:03:11.706 [DEBUG] [Thread-121764] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:03:11.706 [DEBUG] [Thread-121764] [transport.py] [_log()] client lang: <none>
2025-11-03T20:03:11.706 [DEBUG] [Thread-121764] [transport.py] [_log()] server lang: <none>
2025-11-03T20:03:11.706 [DEBUG] [Thread-121764] [transport.py] [_log()] kex follows: False
2025-11-03T20:03:11.706 [DEBUG] [Thread-121764] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:03:11.707 [DEBUG] [Thread-121764] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:03:11.707 [DEBUG] [Thread-121764] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:03:11.707 [DEBUG] [Thread-121764] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:03:11.707 [DEBUG] [Thread-121764] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:03:11.707 [DEBUG] [Thread-121764] [transport.py] [_log()] Compression: none
2025-11-03T20:03:11.707 [DEBUG] [Thread-121764] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:03:11.737 [DEBUG] [Thread-121764] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:03:11.740 [DEBUG] [Thread-121764] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:03:11.741 [DEBUG] [Thread-121764] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:03:11.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:03:11.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:03:11.744 [DEBUG] [Thread-121764] [transport.py] [_log()] userauth is OK
2025-11-03T20:03:11.744 [DEBUG] [Thread-121764] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:03:11.744 [DEBUG] [Thread-121764] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:03:11.744 [DEBUG] [Thread-121764] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:03:11.744 [DEBUG] [Thread-121764] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:03:11.755 [INFO] [Thread-121764] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:03:11.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:03:12.402 [DEBUG] [Thread-121764] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:03:12.403 [DEBUG] [Thread-121764] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:03:12.404 [DEBUG] [Thread-121764] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:03:12.444 [DEBUG] [Thread-121764] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:03:12.444 [DEBUG] [Thread-121764] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:03:12.447 [DEBUG] [Thread-121764] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:03:12.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:03:12.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:03:12.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:03:12.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:03:12.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:03:12.471 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:03:12.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:03:12.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:03:12.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:03:12.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.751837 -999.00  +20.30  23.42     12  -10.00 1 1 1 1 1     0    0 26.52 -185.69 ZNESW 23.4 23.4 303.4 33.1 20.4 -29.7 20.3 -28.5 20.1 -28.4 20.4 -29.2
2025-11-03T20:03:12.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:03:12.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:03:12.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.751837
2025-11-03T20:03:12.478 [DEBUG] [Thread-121764] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:03:12.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:03:12.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:03:12.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:03:12.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:03:12.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:03:12.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:02:53', tmtdew=37.03, humidity=6.99, cloud=0.0, wind=26.01, temperature=20.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:02:55', seeing=1.02, atlas_timestamp='2025-11-03T18:02:38.717', atlas_cloud=1, atlas_rain=1, zp_data=[0.0017499999999994742, 0.05525000000000091, 0.13724999999999987, 0.0754999999999999, 0.13700000000000045, 0.03775000000000084, 0.04150000000000098, -0.013749999999998153, -0.10550000000000104, 0.06550000000000011, 0.12324999999999875, 0.07600000000000051, 0.1479999999999997, 0.029249999999999332, -0.1095000000000006, -0.040000000000000924, -0.025750000000000384, 0.11100000000000065, 0.1769999999999996, 0.11624999999999908, 0.026999999999999247, 0.08774999999999977, -0.08674999999999855, -0.3367500000000003, -0.1725000000000012, 0.23000000000000043, 0.2317499999999999, 0.13649999999999984, -0.15200000000000102, 0.01950000000000074, 0.1255000000000024, -0.02999999999999936, -0.6677500000000016], zp_timestamp='2025-11-03T17:59:00')
2025-11-03T20:03:12.571 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:03:12.584 [DEBUG] [Thread-121767] [transport.py] [_log()] starting thread (client mode): 0x117e94e0
2025-11-03T20:03:12.584 [DEBUG] [Thread-121767] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:03:12.599 [DEBUG] [Thread-121767] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:03:12.599 [INFO] [Thread-121767] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:03:12.607 [DEBUG] [Thread-121767] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:03:12.607 [DEBUG] [Thread-121767] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:03:12.607 [DEBUG] [Thread-121767] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:03:12.607 [DEBUG] [Thread-121767] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:03:12.607 [DEBUG] [Thread-121767] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:03:12.607 [DEBUG] [Thread-121767] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:03:12.607 [DEBUG] [Thread-121767] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:03:12.607 [DEBUG] [Thread-121767] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:03:12.607 [DEBUG] [Thread-121767] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:03:12.607 [DEBUG] [Thread-121767] [transport.py] [_log()] client lang: <none>
2025-11-03T20:03:12.607 [DEBUG] [Thread-121767] [transport.py] [_log()] server lang: <none>
2025-11-03T20:03:12.607 [DEBUG] [Thread-121767] [transport.py] [_log()] kex follows: False
2025-11-03T20:03:12.607 [DEBUG] [Thread-121767] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:03:12.607 [DEBUG] [Thread-121767] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:03:12.607 [DEBUG] [Thread-121767] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:03:12.607 [DEBUG] [Thread-121767] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:03:12.607 [DEBUG] [Thread-121767] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:03:12.607 [DEBUG] [Thread-121767] [transport.py] [_log()] Compression: none
2025-11-03T20:03:12.607 [DEBUG] [Thread-121767] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:03:12.665 [DEBUG] [Thread-121767] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:03:12.665 [DEBUG] [Thread-121767] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:03:12.665 [DEBUG] [Thread-121767] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:03:12.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:03:12.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:03:12.723 [DEBUG] [Thread-121767] [transport.py] [_log()] userauth is OK
2025-11-03T20:03:12.723 [DEBUG] [Thread-121767] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:03:12.723 [DEBUG] [Thread-121767] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:03:12.723 [DEBUG] [Thread-121767] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:03:12.724 [DEBUG] [Thread-121767] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:03:12.741 [INFO] [Thread-121767] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:03:12.741 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:03:12.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:03:13.576 [DEBUG] [Thread-121767] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:03:13.576 [DEBUG] [Thread-121767] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:03:13.623 [DEBUG] [Thread-121767] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:03:13.624 [DEBUG] [Thread-121767] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:03:13.633 [DEBUG] [Thread-121767] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:03:13.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:03:13.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:03:13.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:03:13.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:03:13.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:03:13.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:03:13.671 [DEBUG] [Thread-121767] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:03:15.983 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:03:20.015 [DEBUG] [Thread-121769 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:03:22.419 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:03:23.499 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:03:23.501 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:03:35.203 [DEBUG] [Thread-121770 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:03:41.940 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:03:43.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:03:43.692 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:03:44.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:03:46.357 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:03:50.490 [DEBUG] [Thread-121771 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:03:51.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 3, 28), 36.95, 7.03, 0.0, 27.1, 20.3, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:03:51.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:03:28
2025-11-03T20:03:51.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:03:51.438 [DEBUG] [Thread-121772] [transport.py] [_log()] starting thread (client mode): 0x117ea350
2025-11-03T20:03:51.439 [DEBUG] [Thread-121772] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:03:51.452 [DEBUG] [Thread-121772] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:03:51.452 [INFO] [Thread-121772] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:03:51.457 [DEBUG] [Thread-121772] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:03:51.458 [DEBUG] [Thread-121772] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:03:51.458 [DEBUG] [Thread-121772] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:03:51.458 [DEBUG] [Thread-121772] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:03:51.458 [DEBUG] [Thread-121772] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:03:51.458 [DEBUG] [Thread-121772] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:03:51.458 [DEBUG] [Thread-121772] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:03:51.458 [DEBUG] [Thread-121772] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:03:51.458 [DEBUG] [Thread-121772] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:03:51.458 [DEBUG] [Thread-121772] [transport.py] [_log()] client lang: <none>
2025-11-03T20:03:51.458 [DEBUG] [Thread-121772] [transport.py] [_log()] server lang: <none>
2025-11-03T20:03:51.458 [DEBUG] [Thread-121772] [transport.py] [_log()] kex follows: False
2025-11-03T20:03:51.458 [DEBUG] [Thread-121772] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:03:51.459 [DEBUG] [Thread-121772] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:03:51.459 [DEBUG] [Thread-121772] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:03:51.459 [DEBUG] [Thread-121772] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:03:51.459 [DEBUG] [Thread-121772] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:03:51.459 [DEBUG] [Thread-121772] [transport.py] [_log()] Compression: none
2025-11-03T20:03:51.459 [DEBUG] [Thread-121772] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:03:51.492 [DEBUG] [Thread-121772] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:03:51.497 [DEBUG] [Thread-121772] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:03:51.499 [DEBUG] [Thread-121772] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:03:51.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:03:51.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:03:51.503 [DEBUG] [Thread-121772] [transport.py] [_log()] userauth is OK
2025-11-03T20:03:51.503 [DEBUG] [Thread-121772] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:03:51.503 [DEBUG] [Thread-121772] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:03:51.503 [DEBUG] [Thread-121772] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:03:51.503 [DEBUG] [Thread-121772] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:03:51.521 [INFO] [Thread-121772] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:03:51.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:03:52.174 [DEBUG] [Thread-121772] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:03:52.174 [DEBUG] [Thread-121772] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:03:52.176 [DEBUG] [Thread-121772] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:03:52.216 [DEBUG] [Thread-121772] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:03:52.217 [DEBUG] [Thread-121772] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:03:52.219 [DEBUG] [Thread-121772] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:03:52.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:03:52.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:03:52.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:03:52.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:03:52.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:03:52.242 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:03:52.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:03:52.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:03:52.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:03:52.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.752184 -999.00  +20.30  25.56     12   -9.90 1 1 1 1 1     0    0 26.29 -184.18 ZNESW 25.6 25.6 295.6 32.5 20.4 -29.5 20.3 -28.4 20.1 -28.4 20.3 -29.2
2025-11-03T20:03:52.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:03:52.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:03:52.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.752184
2025-11-03T20:03:52.249 [DEBUG] [Thread-121772] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:03:52.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:03:52.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:03:52.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:03:52.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:03:52.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:03:52.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:03:28', tmtdew=36.95, humidity=7.03, cloud=0.0, wind=27.1, temperature=20.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:03:28', seeing=0.97, atlas_timestamp='2025-11-03T18:03:08.698', atlas_cloud=1, atlas_rain=1, zp_data=[0.0017499999999994742, 0.05525000000000091, 0.13724999999999987, 0.0754999999999999, 0.13700000000000045, 0.03775000000000084, 0.04150000000000098, -0.013749999999998153, -0.10550000000000104, 0.06550000000000011, 0.12324999999999875, 0.07600000000000051, 0.1479999999999997, 0.029249999999999332, -0.1095000000000006, -0.040000000000000924, -0.025750000000000384, 0.11100000000000065, 0.1769999999999996, 0.11624999999999908, 0.026999999999999247, 0.08774999999999977, -0.08674999999999855, -0.3367500000000003, -0.1725000000000012, 0.23000000000000043, 0.2317499999999999, 0.13649999999999984, -0.15200000000000102, 0.01950000000000074, 0.1255000000000024, -0.02999999999999936, -0.6677500000000016], zp_timestamp='2025-11-03T17:59:00')
2025-11-03T20:03:52.354 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:03:52.366 [DEBUG] [Thread-121775] [transport.py] [_log()] starting thread (client mode): 0x117996c0
2025-11-03T20:03:52.366 [DEBUG] [Thread-121775] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:03:52.380 [DEBUG] [Thread-121775] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:03:52.380 [INFO] [Thread-121775] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:03:52.388 [DEBUG] [Thread-121775] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:03:52.388 [DEBUG] [Thread-121775] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:03:52.388 [DEBUG] [Thread-121775] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:03:52.388 [DEBUG] [Thread-121775] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:03:52.388 [DEBUG] [Thread-121775] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:03:52.388 [DEBUG] [Thread-121775] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:03:52.388 [DEBUG] [Thread-121775] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:03:52.388 [DEBUG] [Thread-121775] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:03:52.388 [DEBUG] [Thread-121775] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:03:52.388 [DEBUG] [Thread-121775] [transport.py] [_log()] client lang: <none>
2025-11-03T20:03:52.388 [DEBUG] [Thread-121775] [transport.py] [_log()] server lang: <none>
2025-11-03T20:03:52.388 [DEBUG] [Thread-121775] [transport.py] [_log()] kex follows: False
2025-11-03T20:03:52.389 [DEBUG] [Thread-121775] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:03:52.389 [DEBUG] [Thread-121775] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:03:52.389 [DEBUG] [Thread-121775] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:03:52.389 [DEBUG] [Thread-121775] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:03:52.389 [DEBUG] [Thread-121775] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:03:52.389 [DEBUG] [Thread-121775] [transport.py] [_log()] Compression: none
2025-11-03T20:03:52.389 [DEBUG] [Thread-121775] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:03:52.444 [DEBUG] [Thread-121775] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:03:52.444 [DEBUG] [Thread-121775] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:03:52.445 [DEBUG] [Thread-121775] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:03:52.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:03:52.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:03:52.501 [DEBUG] [Thread-121775] [transport.py] [_log()] userauth is OK
2025-11-03T20:03:52.501 [DEBUG] [Thread-121775] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:03:52.502 [DEBUG] [Thread-121775] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:03:52.502 [DEBUG] [Thread-121775] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:03:52.502 [DEBUG] [Thread-121775] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:03:52.519 [INFO] [Thread-121775] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:03:52.519 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:03:52.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:03:53.359 [DEBUG] [Thread-121775] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:03:53.359 [DEBUG] [Thread-121775] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:03:53.407 [DEBUG] [Thread-121775] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:03:53.407 [DEBUG] [Thread-121775] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:03:53.416 [DEBUG] [Thread-121775] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:03:53.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:03:53.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:03:53.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:03:53.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:03:53.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:03:53.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:03:53.450 [DEBUG] [Thread-121775] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:03:56.451 [DEBUG] [Thread-121777 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:04:05.717 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:04:05.863 [DEBUG] [Thread-121778 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:04:10.135 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:04:16.321 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:04:20.779 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:04:21.252 [DEBUG] [Thread-121779 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:04:23.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:04:23.487 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:04:23.709 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:04:23.722 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:04:23.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:04:25.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 4, 1), 36.91, 7.04, 0.0, 25.69, 20.26, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:04:25.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:04:01
2025-11-03T20:04:26.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:04:26.279 [DEBUG] [Thread-121780] [transport.py] [_log()] starting thread (client mode): 0xed36230
2025-11-03T20:04:26.281 [DEBUG] [Thread-121780] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:04:26.282 [DEBUG] [Thread-121780] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:04:26.282 [INFO] [Thread-121780] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:04:26.288 [DEBUG] [Thread-121780] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:04:26.288 [DEBUG] [Thread-121780] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:04:26.288 [DEBUG] [Thread-121780] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:04:26.288 [DEBUG] [Thread-121780] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:04:26.288 [DEBUG] [Thread-121780] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:04:26.288 [DEBUG] [Thread-121780] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:04:26.288 [DEBUG] [Thread-121780] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:04:26.288 [DEBUG] [Thread-121780] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:04:26.288 [DEBUG] [Thread-121780] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:04:26.288 [DEBUG] [Thread-121780] [transport.py] [_log()] client lang: <none>
2025-11-03T20:04:26.288 [DEBUG] [Thread-121780] [transport.py] [_log()] server lang: <none>
2025-11-03T20:04:26.289 [DEBUG] [Thread-121780] [transport.py] [_log()] kex follows: False
2025-11-03T20:04:26.289 [DEBUG] [Thread-121780] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:04:26.289 [DEBUG] [Thread-121780] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:04:26.289 [DEBUG] [Thread-121780] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:04:26.289 [DEBUG] [Thread-121780] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:04:26.289 [DEBUG] [Thread-121780] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:04:26.289 [DEBUG] [Thread-121780] [transport.py] [_log()] Compression: none
2025-11-03T20:04:26.289 [DEBUG] [Thread-121780] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:04:26.312 [DEBUG] [Thread-121780] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:04:26.315 [DEBUG] [Thread-121780] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:04:26.317 [DEBUG] [Thread-121780] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:04:26.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:04:26.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:04:26.321 [DEBUG] [Thread-121780] [transport.py] [_log()] userauth is OK
2025-11-03T20:04:26.322 [DEBUG] [Thread-121780] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:04:26.322 [DEBUG] [Thread-121780] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:04:26.322 [DEBUG] [Thread-121780] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:04:26.322 [DEBUG] [Thread-121780] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:04:26.349 [INFO] [Thread-121780] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:04:26.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:04:26.973 [DEBUG] [Thread-121780] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:04:26.973 [DEBUG] [Thread-121780] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:04:26.974 [DEBUG] [Thread-121780] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:04:27.014 [DEBUG] [Thread-121780] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:04:27.014 [DEBUG] [Thread-121780] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:04:27.016 [DEBUG] [Thread-121780] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:04:27.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:04:27.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:04:27.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:04:27.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:04:27.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:04:27.037 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:04:27.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:04:27.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:04:27.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:04:27.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.752532 -999.00  +20.20  23.84     12   -9.90 1 1 1 1 1     0    0 26.05 -187.78 ZNESW 23.8 23.8 314.0 30.0 20.4 -29.4 20.3 -28.5 20.1 -28.4 20.3 -29.2
2025-11-03T20:04:27.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:04:27.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:04:27.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.752532
2025-11-03T20:04:27.051 [DEBUG] [Thread-121780] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:04:27.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:04:27.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:04:27.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:04:27.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:04:27.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:04:27.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:04:01', tmtdew=36.91, humidity=7.04, cloud=0.0, wind=25.69, temperature=20.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:04:02', seeing=0.91, atlas_timestamp='2025-11-03T18:03:38.765', atlas_cloud=1, atlas_rain=1, zp_data=[0.0017499999999994742, 0.05525000000000091, 0.13724999999999987, 0.0754999999999999, 0.13700000000000045, 0.03775000000000084, 0.04150000000000098, -0.013749999999998153, -0.10550000000000104, 0.06550000000000011, 0.12324999999999875, 0.07600000000000051, 0.1479999999999997, 0.029249999999999332, -0.1095000000000006, -0.040000000000000924, -0.025750000000000384, 0.11100000000000065, 0.1769999999999996, 0.11624999999999908, 0.026999999999999247, 0.08774999999999977, -0.08674999999999855, -0.3367500000000003, -0.1725000000000012, 0.23000000000000043, 0.2317499999999999, 0.13649999999999984, -0.15200000000000102, 0.01950000000000074, 0.1255000000000024, -0.02999999999999936, -0.6677500000000016], zp_timestamp='2025-11-03T17:59:00')
2025-11-03T20:04:27.143 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:04:27.154 [DEBUG] [Thread-121783] [transport.py] [_log()] starting thread (client mode): 0x11763fa0
2025-11-03T20:04:27.154 [DEBUG] [Thread-121783] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:04:27.169 [DEBUG] [Thread-121783] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:04:27.169 [INFO] [Thread-121783] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:04:27.178 [DEBUG] [Thread-121783] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:04:27.178 [DEBUG] [Thread-121783] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:04:27.178 [DEBUG] [Thread-121783] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:04:27.178 [DEBUG] [Thread-121783] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:04:27.178 [DEBUG] [Thread-121783] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:04:27.178 [DEBUG] [Thread-121783] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:04:27.178 [DEBUG] [Thread-121783] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:04:27.178 [DEBUG] [Thread-121783] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:04:27.178 [DEBUG] [Thread-121783] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:04:27.178 [DEBUG] [Thread-121783] [transport.py] [_log()] client lang: <none>
2025-11-03T20:04:27.178 [DEBUG] [Thread-121783] [transport.py] [_log()] server lang: <none>
2025-11-03T20:04:27.178 [DEBUG] [Thread-121783] [transport.py] [_log()] kex follows: False
2025-11-03T20:04:27.178 [DEBUG] [Thread-121783] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:04:27.178 [DEBUG] [Thread-121783] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:04:27.178 [DEBUG] [Thread-121783] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:04:27.178 [DEBUG] [Thread-121783] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:04:27.178 [DEBUG] [Thread-121783] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:04:27.178 [DEBUG] [Thread-121783] [transport.py] [_log()] Compression: none
2025-11-03T20:04:27.178 [DEBUG] [Thread-121783] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:04:27.232 [DEBUG] [Thread-121783] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:04:27.232 [DEBUG] [Thread-121783] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:04:27.232 [DEBUG] [Thread-121783] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:04:27.233 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:04:27.233 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:04:27.290 [DEBUG] [Thread-121783] [transport.py] [_log()] userauth is OK
2025-11-03T20:04:27.290 [DEBUG] [Thread-121783] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:04:27.291 [DEBUG] [Thread-121783] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:04:27.291 [DEBUG] [Thread-121783] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:04:27.291 [DEBUG] [Thread-121783] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:04:27.313 [INFO] [Thread-121783] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:04:27.314 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:04:27.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:04:28.195 [DEBUG] [Thread-121783] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:04:28.195 [DEBUG] [Thread-121783] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:04:28.243 [DEBUG] [Thread-121783] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:04:28.243 [DEBUG] [Thread-121783] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:04:28.251 [DEBUG] [Thread-121783] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:04:28.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:04:28.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:04:28.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:04:28.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:04:28.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:04:28.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:04:28.286 [DEBUG] [Thread-121783] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:04:36.624 [DEBUG] [Thread-121785 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:04:52.133 [DEBUG] [Thread-121786 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:04:56.743 [DEBUG] [Thread-121787 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:04:58.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:04:58.323 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:04:58.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:04:59.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 4, 35), 36.87, 7.04, 0.0, 24.86, 20.24, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:04:59.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:04:35
2025-11-03T20:04:59.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:05:00.060 [DEBUG] [Thread-121788] [transport.py] [_log()] starting thread (client mode): 0x1179bfd0
2025-11-03T20:05:00.062 [DEBUG] [Thread-121788] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:05:00.066 [DEBUG] [Thread-121788] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:05:00.067 [INFO] [Thread-121788] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:05:00.072 [DEBUG] [Thread-121788] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:05:00.072 [DEBUG] [Thread-121788] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:05:00.073 [DEBUG] [Thread-121788] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:05:00.073 [DEBUG] [Thread-121788] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:05:00.073 [DEBUG] [Thread-121788] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:05:00.073 [DEBUG] [Thread-121788] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:05:00.073 [DEBUG] [Thread-121788] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:05:00.073 [DEBUG] [Thread-121788] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:05:00.073 [DEBUG] [Thread-121788] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:05:00.073 [DEBUG] [Thread-121788] [transport.py] [_log()] client lang: <none>
2025-11-03T20:05:00.073 [DEBUG] [Thread-121788] [transport.py] [_log()] server lang: <none>
2025-11-03T20:05:00.073 [DEBUG] [Thread-121788] [transport.py] [_log()] kex follows: False
2025-11-03T20:05:00.073 [DEBUG] [Thread-121788] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:05:00.074 [DEBUG] [Thread-121788] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:05:00.074 [DEBUG] [Thread-121788] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:05:00.074 [DEBUG] [Thread-121788] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:05:00.074 [DEBUG] [Thread-121788] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:05:00.074 [DEBUG] [Thread-121788] [transport.py] [_log()] Compression: none
2025-11-03T20:05:00.074 [DEBUG] [Thread-121788] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:05:00.108 [DEBUG] [Thread-121788] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:05:00.113 [DEBUG] [Thread-121788] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:05:00.114 [DEBUG] [Thread-121788] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:05:00.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:05:00.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:05:00.119 [DEBUG] [Thread-121788] [transport.py] [_log()] userauth is OK
2025-11-03T20:05:00.120 [DEBUG] [Thread-121788] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:05:00.120 [DEBUG] [Thread-121788] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:05:00.120 [DEBUG] [Thread-121788] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:05:00.120 [DEBUG] [Thread-121788] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:05:00.139 [INFO] [Thread-121788] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:05:00.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:05:00.734 [DEBUG] [Thread-121788] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:05:00.734 [DEBUG] [Thread-121788] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:05:00.735 [DEBUG] [Thread-121788] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:05:00.776 [DEBUG] [Thread-121788] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:05:00.776 [DEBUG] [Thread-121788] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:05:00.779 [DEBUG] [Thread-121788] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:05:00.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:05:00.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:05:00.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:05:00.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:05:00.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:05:00.800 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:05:00.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:05:00.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:05:00.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:05:00.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.752879 -999.00  +20.20  27.53     12   -9.70 1 1 1 1 1     0    0 26.50 -173.51 ZNESW 27.5 27.5 301.6 33.0 20.4 -29.6 20.3 -28.4 20.0 -28.1 20.3 -29.2
2025-11-03T20:05:00.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:05:00.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:05:00.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.752879
2025-11-03T20:05:00.807 [DEBUG] [Thread-121788] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:05:00.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:05:00.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:05:00.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:05:00.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:05:00.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:05:00.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:04:35', tmtdew=36.87, humidity=7.04, cloud=0.0, wind=24.86, temperature=20.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:04:35', seeing=1.1, atlas_timestamp='2025-11-03T18:04:08.746', atlas_cloud=1, atlas_rain=1, zp_data=[0.0017499999999994742, 0.05525000000000091, 0.13724999999999987, 0.0754999999999999, 0.13700000000000045, 0.03775000000000084, 0.04150000000000098, -0.013749999999998153, -0.10550000000000104, 0.06550000000000011, 0.12324999999999875, 0.07600000000000051, 0.1479999999999997, 0.029249999999999332, -0.1095000000000006, -0.040000000000000924, -0.025750000000000384, 0.11100000000000065, 0.1769999999999996, 0.11624999999999908, 0.026999999999999247, 0.08774999999999977, -0.08674999999999855, -0.3367500000000003, -0.1725000000000012, 0.23000000000000043, 0.2317499999999999, 0.13649999999999984, -0.15200000000000102, 0.01950000000000074, 0.1255000000000024, -0.02999999999999936, -0.6677500000000016], zp_timestamp='2025-11-03T18:02:00')
2025-11-03T20:05:00.899 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:05:00.912 [DEBUG] [Thread-121791] [transport.py] [_log()] starting thread (client mode): 0x1179bdf0
2025-11-03T20:05:00.912 [DEBUG] [Thread-121791] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:05:00.927 [DEBUG] [Thread-121791] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:05:00.927 [INFO] [Thread-121791] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:05:00.935 [DEBUG] [Thread-121791] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:05:00.935 [DEBUG] [Thread-121791] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:05:00.935 [DEBUG] [Thread-121791] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:05:00.935 [DEBUG] [Thread-121791] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:05:00.935 [DEBUG] [Thread-121791] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:05:00.935 [DEBUG] [Thread-121791] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:05:00.935 [DEBUG] [Thread-121791] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:05:00.935 [DEBUG] [Thread-121791] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:05:00.935 [DEBUG] [Thread-121791] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:05:00.935 [DEBUG] [Thread-121791] [transport.py] [_log()] client lang: <none>
2025-11-03T20:05:00.935 [DEBUG] [Thread-121791] [transport.py] [_log()] server lang: <none>
2025-11-03T20:05:00.935 [DEBUG] [Thread-121791] [transport.py] [_log()] kex follows: False
2025-11-03T20:05:00.936 [DEBUG] [Thread-121791] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:05:00.936 [DEBUG] [Thread-121791] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:05:00.936 [DEBUG] [Thread-121791] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:05:00.936 [DEBUG] [Thread-121791] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:05:00.936 [DEBUG] [Thread-121791] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:05:00.936 [DEBUG] [Thread-121791] [transport.py] [_log()] Compression: none
2025-11-03T20:05:00.936 [DEBUG] [Thread-121791] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:05:00.992 [DEBUG] [Thread-121791] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:05:00.992 [DEBUG] [Thread-121791] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:05:00.992 [DEBUG] [Thread-121791] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:05:00.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:05:00.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:05:01.049 [DEBUG] [Thread-121791] [transport.py] [_log()] userauth is OK
2025-11-03T20:05:01.049 [DEBUG] [Thread-121791] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:05:01.049 [DEBUG] [Thread-121791] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:05:01.049 [DEBUG] [Thread-121791] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:05:01.049 [DEBUG] [Thread-121791] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:05:01.063 [INFO] [Thread-121791] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:05:01.063 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:05:01.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:05:01.913 [DEBUG] [Thread-121791] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:05:01.913 [DEBUG] [Thread-121791] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:05:01.965 [DEBUG] [Thread-121791] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:05:01.965 [DEBUG] [Thread-121791] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:05:01.973 [DEBUG] [Thread-121791] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:05:01.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:05:01.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:05:01.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:05:02.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:05:02.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:05:02.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:05:02.011 [DEBUG] [Thread-121791] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:05:07.572 [DEBUG] [Thread-121793 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:05:22.763 [DEBUG] [Thread-121794 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:05:23.942 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:05:23.943 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:05:24.208 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:05:27.264 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:05:32.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:05:32.038 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:05:32.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:05:33.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 5, 8), 36.82, 7.06, 0.0, 26.38, 20.19, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:05:33.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:05:08
2025-11-03T20:05:33.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:05:33.846 [DEBUG] [Thread-121795] [transport.py] [_log()] starting thread (client mode): 0xed13e20
2025-11-03T20:05:33.848 [DEBUG] [Thread-121795] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:05:33.853 [DEBUG] [Thread-121795] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:05:33.854 [INFO] [Thread-121795] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:05:33.860 [DEBUG] [Thread-121795] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:05:33.860 [DEBUG] [Thread-121795] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:05:33.861 [DEBUG] [Thread-121795] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:05:33.861 [DEBUG] [Thread-121795] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:05:33.861 [DEBUG] [Thread-121795] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:05:33.861 [DEBUG] [Thread-121795] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:05:33.861 [DEBUG] [Thread-121795] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:05:33.861 [DEBUG] [Thread-121795] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:05:33.861 [DEBUG] [Thread-121795] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:05:33.861 [DEBUG] [Thread-121795] [transport.py] [_log()] client lang: <none>
2025-11-03T20:05:33.861 [DEBUG] [Thread-121795] [transport.py] [_log()] server lang: <none>
2025-11-03T20:05:33.861 [DEBUG] [Thread-121795] [transport.py] [_log()] kex follows: False
2025-11-03T20:05:33.861 [DEBUG] [Thread-121795] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:05:33.862 [DEBUG] [Thread-121795] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:05:33.862 [DEBUG] [Thread-121795] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:05:33.862 [DEBUG] [Thread-121795] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:05:33.862 [DEBUG] [Thread-121795] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:05:33.862 [DEBUG] [Thread-121795] [transport.py] [_log()] Compression: none
2025-11-03T20:05:33.862 [DEBUG] [Thread-121795] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:05:33.896 [DEBUG] [Thread-121795] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:05:33.900 [DEBUG] [Thread-121795] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:05:33.901 [DEBUG] [Thread-121795] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:05:33.902 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:05:33.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:05:33.905 [DEBUG] [Thread-121795] [transport.py] [_log()] userauth is OK
2025-11-03T20:05:33.905 [DEBUG] [Thread-121795] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:05:33.905 [DEBUG] [Thread-121795] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:05:33.905 [DEBUG] [Thread-121795] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:05:33.905 [DEBUG] [Thread-121795] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:05:33.925 [INFO] [Thread-121795] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:05:33.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:05:34.574 [DEBUG] [Thread-121795] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:05:34.574 [DEBUG] [Thread-121795] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:05:34.575 [DEBUG] [Thread-121795] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:05:34.615 [DEBUG] [Thread-121795] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:05:34.615 [DEBUG] [Thread-121795] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:05:34.618 [DEBUG] [Thread-121795] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:05:34.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:05:34.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:05:34.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:05:34.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:05:34.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:05:34.639 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:05:34.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:05:34.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:05:34.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:05:34.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.753226 -999.00  +20.20  21.72     12   -9.80 1 1 1 1 1     0    0 25.86 -179.36 ZNESW 21.7 21.7 312.8 30.9 20.4 -29.5 20.3 -28.5 20.0 -28.2 20.3 -29.2
2025-11-03T20:05:34.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:05:34.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:05:34.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.753226
2025-11-03T20:05:34.646 [DEBUG] [Thread-121795] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:05:34.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:05:34.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:05:34.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:05:34.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:05:34.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:05:34.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:05:08', tmtdew=36.82, humidity=7.06, cloud=0.0, wind=26.38, temperature=20.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:05:09', seeing=1.06, atlas_timestamp='2025-11-03T18:04:38.726', atlas_cloud=1, atlas_rain=1, zp_data=[0.0017499999999994742, 0.05525000000000091, 0.13724999999999987, 0.0754999999999999, 0.13700000000000045, 0.03775000000000084, 0.04150000000000098, -0.013749999999998153, -0.10550000000000104, 0.06550000000000011, 0.12324999999999875, 0.07600000000000051, 0.1479999999999997, 0.029249999999999332, -0.1095000000000006, -0.040000000000000924, -0.025750000000000384, 0.11100000000000065, 0.1769999999999996, 0.11624999999999908, 0.026999999999999247, 0.08774999999999977, -0.08674999999999855, -0.3367500000000003, -0.1725000000000012, 0.23000000000000043, 0.2317499999999999, 0.13649999999999984, -0.15200000000000102, 0.01950000000000074, 0.1255000000000024, -0.02999999999999936, -0.6677500000000016], zp_timestamp='2025-11-03T18:02:00')
2025-11-03T20:05:34.742 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:05:34.755 [DEBUG] [Thread-121798] [transport.py] [_log()] starting thread (client mode): 0x1174c610
2025-11-03T20:05:34.755 [DEBUG] [Thread-121798] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:05:34.768 [DEBUG] [Thread-121798] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:05:34.769 [INFO] [Thread-121798] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:05:34.776 [DEBUG] [Thread-121798] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:05:34.776 [DEBUG] [Thread-121798] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:05:34.776 [DEBUG] [Thread-121798] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:05:34.776 [DEBUG] [Thread-121798] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:05:34.777 [DEBUG] [Thread-121798] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:05:34.777 [DEBUG] [Thread-121798] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:05:34.777 [DEBUG] [Thread-121798] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:05:34.777 [DEBUG] [Thread-121798] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:05:34.777 [DEBUG] [Thread-121798] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:05:34.777 [DEBUG] [Thread-121798] [transport.py] [_log()] client lang: <none>
2025-11-03T20:05:34.777 [DEBUG] [Thread-121798] [transport.py] [_log()] server lang: <none>
2025-11-03T20:05:34.777 [DEBUG] [Thread-121798] [transport.py] [_log()] kex follows: False
2025-11-03T20:05:34.777 [DEBUG] [Thread-121798] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:05:34.777 [DEBUG] [Thread-121798] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:05:34.777 [DEBUG] [Thread-121798] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:05:34.777 [DEBUG] [Thread-121798] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:05:34.777 [DEBUG] [Thread-121798] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:05:34.777 [DEBUG] [Thread-121798] [transport.py] [_log()] Compression: none
2025-11-03T20:05:34.777 [DEBUG] [Thread-121798] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:05:34.837 [DEBUG] [Thread-121798] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:05:34.838 [DEBUG] [Thread-121798] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:05:34.838 [DEBUG] [Thread-121798] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:05:34.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:05:34.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:05:34.900 [DEBUG] [Thread-121798] [transport.py] [_log()] userauth is OK
2025-11-03T20:05:34.900 [DEBUG] [Thread-121798] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:05:34.900 [DEBUG] [Thread-121798] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:05:34.900 [DEBUG] [Thread-121798] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:05:34.900 [DEBUG] [Thread-121798] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:05:34.914 [INFO] [Thread-121798] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:05:34.915 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:05:34.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:05:35.758 [DEBUG] [Thread-121798] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:05:35.758 [DEBUG] [Thread-121798] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:05:35.805 [DEBUG] [Thread-121798] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:05:35.806 [DEBUG] [Thread-121798] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:05:35.814 [DEBUG] [Thread-121798] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:05:35.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:05:35.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:05:35.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:05:35.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:05:35.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:05:35.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:05:35.848 [DEBUG] [Thread-121798] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:05:37.868 [DEBUG] [Thread-121800 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:05:53.113 [DEBUG] [Thread-121801 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:05:57.106 [DEBUG] [Thread-121802 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:06:05.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:06:05.905 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:06:06.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:06:08.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 5, 42), 36.71, 7.06, 0.0, 24.54, 20.14, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:06:08.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:05:42
2025-11-03T20:06:08.280 [DEBUG] [Thread-121803 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:06:08.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:06:08.653 [DEBUG] [Thread-121804] [transport.py] [_log()] starting thread (client mode): 0xedc6920
2025-11-03T20:06:08.677 [DEBUG] [Thread-121804] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:06:08.690 [DEBUG] [Thread-121804] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:06:08.694 [INFO] [Thread-121804] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:06:08.730 [DEBUG] [Thread-121804] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:06:08.730 [DEBUG] [Thread-121804] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:06:08.730 [DEBUG] [Thread-121804] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:06:08.730 [DEBUG] [Thread-121804] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:06:08.730 [DEBUG] [Thread-121804] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:06:08.730 [DEBUG] [Thread-121804] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:06:08.730 [DEBUG] [Thread-121804] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:06:08.730 [DEBUG] [Thread-121804] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:06:08.730 [DEBUG] [Thread-121804] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:06:08.730 [DEBUG] [Thread-121804] [transport.py] [_log()] client lang: <none>
2025-11-03T20:06:08.730 [DEBUG] [Thread-121804] [transport.py] [_log()] server lang: <none>
2025-11-03T20:06:08.730 [DEBUG] [Thread-121804] [transport.py] [_log()] kex follows: False
2025-11-03T20:06:08.730 [DEBUG] [Thread-121804] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:06:08.731 [DEBUG] [Thread-121804] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:06:08.731 [DEBUG] [Thread-121804] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:06:08.731 [DEBUG] [Thread-121804] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:06:08.731 [DEBUG] [Thread-121804] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:06:08.731 [DEBUG] [Thread-121804] [transport.py] [_log()] Compression: none
2025-11-03T20:06:08.731 [DEBUG] [Thread-121804] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:06:08.763 [DEBUG] [Thread-121804] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:06:08.767 [DEBUG] [Thread-121804] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:06:08.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:06:08.770 [DEBUG] [Thread-121804] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:06:08.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:06:08.773 [DEBUG] [Thread-121804] [transport.py] [_log()] userauth is OK
2025-11-03T20:06:08.773 [DEBUG] [Thread-121804] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:06:08.773 [DEBUG] [Thread-121804] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:06:08.773 [DEBUG] [Thread-121804] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:06:08.773 [DEBUG] [Thread-121804] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:06:08.791 [INFO] [Thread-121804] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:06:08.799 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:06:09.422 [DEBUG] [Thread-121804] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:06:09.423 [DEBUG] [Thread-121804] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:06:09.424 [DEBUG] [Thread-121804] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:06:09.464 [DEBUG] [Thread-121804] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:06:09.464 [DEBUG] [Thread-121804] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:06:09.468 [DEBUG] [Thread-121804] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:06:09.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:06:09.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:06:09.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:06:09.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:06:09.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:06:09.495 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:06:09.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:06:09.495 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:06:09.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:06:09.497 [DEBUG] [Thread-121804] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:06:09.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.753921 -999.00  +20.10  28.97     12   -9.70 1 1 1 1 1     0    0 25.85 -181.06 ZNESW 29.0 29.0 294.0 35.0 20.3 -29.3 20.2 -28.4 19.9 -28.3 20.2 -29.0
2025-11-03T20:06:09.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:06:09.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:06:09.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.753921
2025-11-03T20:06:09.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:06:09.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:06:09.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:06:09.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:06:09.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:06:09.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:05:42', tmtdew=36.71, humidity=7.06, cloud=0.0, wind=24.54, temperature=20.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:05:42', seeing=1.05, atlas_timestamp='2025-11-03T18:05:38.774', atlas_cloud=1, atlas_rain=1, zp_data=[0.0017499999999994742, 0.05525000000000091, 0.13724999999999987, 0.0754999999999999, 0.13700000000000045, 0.03775000000000084, 0.04150000000000098, -0.013749999999998153, -0.10550000000000104, 0.06550000000000011, 0.12324999999999875, 0.07600000000000051, 0.1479999999999997, 0.029249999999999332, -0.1095000000000006, -0.040000000000000924, -0.025750000000000384, 0.11100000000000065, 0.1769999999999996, 0.11624999999999908, 0.026999999999999247, 0.08774999999999977, -0.08674999999999855, -0.3367500000000003, -0.1725000000000012, 0.23000000000000043, 0.2317499999999999, 0.13649999999999984, -0.15200000000000102, 0.01950000000000074, 0.1255000000000024, -0.02999999999999936, -0.6677500000000016], zp_timestamp='2025-11-03T18:02:00')
2025-11-03T20:06:09.615 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:06:09.626 [DEBUG] [Thread-121807] [transport.py] [_log()] starting thread (client mode): 0xeda3a30
2025-11-03T20:06:09.627 [DEBUG] [Thread-121807] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:06:09.645 [DEBUG] [Thread-121807] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:06:09.645 [INFO] [Thread-121807] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:06:09.653 [DEBUG] [Thread-121807] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:06:09.653 [DEBUG] [Thread-121807] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:06:09.653 [DEBUG] [Thread-121807] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:06:09.653 [DEBUG] [Thread-121807] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:06:09.653 [DEBUG] [Thread-121807] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:06:09.653 [DEBUG] [Thread-121807] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:06:09.653 [DEBUG] [Thread-121807] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:06:09.653 [DEBUG] [Thread-121807] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:06:09.654 [DEBUG] [Thread-121807] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:06:09.654 [DEBUG] [Thread-121807] [transport.py] [_log()] client lang: <none>
2025-11-03T20:06:09.654 [DEBUG] [Thread-121807] [transport.py] [_log()] server lang: <none>
2025-11-03T20:06:09.654 [DEBUG] [Thread-121807] [transport.py] [_log()] kex follows: False
2025-11-03T20:06:09.654 [DEBUG] [Thread-121807] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:06:09.654 [DEBUG] [Thread-121807] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:06:09.654 [DEBUG] [Thread-121807] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:06:09.654 [DEBUG] [Thread-121807] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:06:09.654 [DEBUG] [Thread-121807] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:06:09.654 [DEBUG] [Thread-121807] [transport.py] [_log()] Compression: none
2025-11-03T20:06:09.654 [DEBUG] [Thread-121807] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:06:09.713 [DEBUG] [Thread-121807] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:06:09.713 [DEBUG] [Thread-121807] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:06:09.714 [DEBUG] [Thread-121807] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:06:09.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:06:09.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:06:09.768 [DEBUG] [Thread-121807] [transport.py] [_log()] userauth is OK
2025-11-03T20:06:09.768 [DEBUG] [Thread-121807] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:06:09.768 [DEBUG] [Thread-121807] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:06:09.768 [DEBUG] [Thread-121807] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:06:09.768 [DEBUG] [Thread-121807] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:06:09.791 [INFO] [Thread-121807] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:06:09.792 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:06:09.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:06:10.672 [DEBUG] [Thread-121807] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:06:10.672 [DEBUG] [Thread-121807] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:06:10.721 [DEBUG] [Thread-121807] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:06:10.721 [DEBUG] [Thread-121807] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:06:10.729 [DEBUG] [Thread-121807] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:06:10.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:06:10.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:06:10.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:06:10.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:06:10.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:06:10.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:06:10.766 [DEBUG] [Thread-121807] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:06:23.421 [DEBUG] [Thread-121809 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:06:24.147 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:06:24.149 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:06:38.680 [DEBUG] [Thread-121810 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:06:40.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:06:40.791 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:06:40.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:06:42.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 6, 16), 36.64, 7.11, 0.0, 24.75, 20.17, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:06:42.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:06:16
2025-11-03T20:06:43.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:06:43.400 [DEBUG] [Thread-121811] [transport.py] [_log()] starting thread (client mode): 0xedc5e10
2025-11-03T20:06:43.402 [DEBUG] [Thread-121811] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:06:43.415 [DEBUG] [Thread-121811] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:06:43.415 [INFO] [Thread-121811] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:06:43.421 [DEBUG] [Thread-121811] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:06:43.422 [DEBUG] [Thread-121811] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:06:43.422 [DEBUG] [Thread-121811] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:06:43.422 [DEBUG] [Thread-121811] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:06:43.422 [DEBUG] [Thread-121811] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:06:43.422 [DEBUG] [Thread-121811] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:06:43.422 [DEBUG] [Thread-121811] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:06:43.422 [DEBUG] [Thread-121811] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:06:43.422 [DEBUG] [Thread-121811] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:06:43.422 [DEBUG] [Thread-121811] [transport.py] [_log()] client lang: <none>
2025-11-03T20:06:43.423 [DEBUG] [Thread-121811] [transport.py] [_log()] server lang: <none>
2025-11-03T20:06:43.423 [DEBUG] [Thread-121811] [transport.py] [_log()] kex follows: False
2025-11-03T20:06:43.423 [DEBUG] [Thread-121811] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:06:43.424 [DEBUG] [Thread-121811] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:06:43.424 [DEBUG] [Thread-121811] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:06:43.424 [DEBUG] [Thread-121811] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:06:43.425 [DEBUG] [Thread-121811] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:06:43.425 [DEBUG] [Thread-121811] [transport.py] [_log()] Compression: none
2025-11-03T20:06:43.425 [DEBUG] [Thread-121811] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:06:43.467 [DEBUG] [Thread-121811] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:06:43.471 [DEBUG] [Thread-121811] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:06:43.474 [DEBUG] [Thread-121811] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:06:43.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:06:43.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:06:43.478 [DEBUG] [Thread-121811] [transport.py] [_log()] userauth is OK
2025-11-03T20:06:43.479 [DEBUG] [Thread-121811] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:06:43.479 [DEBUG] [Thread-121811] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:06:43.479 [DEBUG] [Thread-121811] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:06:43.479 [DEBUG] [Thread-121811] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:06:43.507 [INFO] [Thread-121811] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:06:43.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:06:44.156 [DEBUG] [Thread-121811] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:06:44.156 [DEBUG] [Thread-121811] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:06:44.158 [DEBUG] [Thread-121811] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:06:44.197 [DEBUG] [Thread-121811] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:06:44.197 [DEBUG] [Thread-121811] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:06:44.201 [DEBUG] [Thread-121811] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:06:44.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:06:44.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:06:44.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:06:44.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:06:44.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:06:44.238 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:06:44.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:06:44.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:06:44.243 [DEBUG] [Thread-121811] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:06:44.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:06:44.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.754268 -999.00  +20.10  28.75     12   -9.70 1 1 1 1 1     0    0 25.31 -190.26 ZNESW 28.8 28.8 297.2 38.3 20.3 -29.4 20.2 -28.4 19.9 -28.2 20.2 -28.9
2025-11-03T20:06:44.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:06:44.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:06:44.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.754268
2025-11-03T20:06:44.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:06:44.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:06:44.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:06:44.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:06:44.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:06:44.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:06:16', tmtdew=36.64, humidity=7.11, cloud=0.0, wind=24.75, temperature=20.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:06:17', seeing=1.05, atlas_timestamp='2025-11-03T18:06:08.755', atlas_cloud=1, atlas_rain=1, zp_data=[0.0017499999999994742, 0.05525000000000091, 0.13724999999999987, 0.0754999999999999, 0.13700000000000045, 0.03775000000000084, 0.04150000000000098, -0.013749999999998153, -0.10550000000000104, 0.06550000000000011, 0.12324999999999875, 0.07600000000000051, 0.1479999999999997, 0.029249999999999332, -0.1095000000000006, -0.040000000000000924, -0.025750000000000384, 0.11100000000000065, 0.1769999999999996, 0.11624999999999908, 0.026999999999999247, 0.08774999999999977, -0.08674999999999855, -0.3367500000000003, -0.1725000000000012, 0.23000000000000043, 0.2317499999999999, 0.13649999999999984, -0.15200000000000102, 0.01950000000000074, 0.1255000000000024, -0.02999999999999936, -0.6677500000000016], zp_timestamp='2025-11-03T18:02:00')
2025-11-03T20:06:44.346 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:06:44.357 [DEBUG] [Thread-121814] [transport.py] [_log()] starting thread (client mode): 0x1179bfd0
2025-11-03T20:06:44.358 [DEBUG] [Thread-121814] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:06:44.376 [DEBUG] [Thread-121814] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:06:44.376 [INFO] [Thread-121814] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:06:44.387 [DEBUG] [Thread-121814] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:06:44.387 [DEBUG] [Thread-121814] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:06:44.387 [DEBUG] [Thread-121814] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:06:44.387 [DEBUG] [Thread-121814] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:06:44.387 [DEBUG] [Thread-121814] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:06:44.387 [DEBUG] [Thread-121814] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:06:44.387 [DEBUG] [Thread-121814] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:06:44.387 [DEBUG] [Thread-121814] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:06:44.387 [DEBUG] [Thread-121814] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:06:44.387 [DEBUG] [Thread-121814] [transport.py] [_log()] client lang: <none>
2025-11-03T20:06:44.387 [DEBUG] [Thread-121814] [transport.py] [_log()] server lang: <none>
2025-11-03T20:06:44.387 [DEBUG] [Thread-121814] [transport.py] [_log()] kex follows: False
2025-11-03T20:06:44.387 [DEBUG] [Thread-121814] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:06:44.387 [DEBUG] [Thread-121814] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:06:44.387 [DEBUG] [Thread-121814] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:06:44.387 [DEBUG] [Thread-121814] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:06:44.388 [DEBUG] [Thread-121814] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:06:44.388 [DEBUG] [Thread-121814] [transport.py] [_log()] Compression: none
2025-11-03T20:06:44.388 [DEBUG] [Thread-121814] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:06:44.442 [DEBUG] [Thread-121814] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:06:44.442 [DEBUG] [Thread-121814] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:06:44.442 [DEBUG] [Thread-121814] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:06:44.442 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:06:44.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:06:44.499 [DEBUG] [Thread-121814] [transport.py] [_log()] userauth is OK
2025-11-03T20:06:44.499 [DEBUG] [Thread-121814] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:06:44.499 [DEBUG] [Thread-121814] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:06:44.499 [DEBUG] [Thread-121814] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:06:44.500 [DEBUG] [Thread-121814] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:06:44.513 [INFO] [Thread-121814] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:06:44.513 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:06:44.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:06:45.353 [DEBUG] [Thread-121814] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:06:45.353 [DEBUG] [Thread-121814] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:06:45.400 [DEBUG] [Thread-121814] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:06:45.401 [DEBUG] [Thread-121814] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:06:45.409 [DEBUG] [Thread-121814] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:06:45.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:06:45.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:06:45.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:06:45.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:06:45.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:06:45.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:06:45.444 [DEBUG] [Thread-121814] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:06:53.848 [DEBUG] [Thread-121816 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:06:57.503 [DEBUG] [Thread-121817 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:07:09.118 [DEBUG] [Thread-121818 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:07:15.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:07:15.471 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:07:15.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:07:17.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 6, 51), 36.54, 7.11, 0.0, 22.94, 20.07, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:07:17.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:06:51
2025-11-03T20:07:17.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:07:18.177 [DEBUG] [Thread-121819] [transport.py] [_log()] starting thread (client mode): 0xedc7ca0
2025-11-03T20:07:18.179 [DEBUG] [Thread-121819] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:07:18.181 [DEBUG] [Thread-121819] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:07:18.181 [INFO] [Thread-121819] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:07:18.233 [DEBUG] [Thread-121819] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:07:18.233 [DEBUG] [Thread-121819] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:07:18.233 [DEBUG] [Thread-121819] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:07:18.233 [DEBUG] [Thread-121819] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:07:18.233 [DEBUG] [Thread-121819] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:07:18.233 [DEBUG] [Thread-121819] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:07:18.233 [DEBUG] [Thread-121819] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:07:18.233 [DEBUG] [Thread-121819] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:07:18.233 [DEBUG] [Thread-121819] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:07:18.233 [DEBUG] [Thread-121819] [transport.py] [_log()] client lang: <none>
2025-11-03T20:07:18.233 [DEBUG] [Thread-121819] [transport.py] [_log()] server lang: <none>
2025-11-03T20:07:18.234 [DEBUG] [Thread-121819] [transport.py] [_log()] kex follows: False
2025-11-03T20:07:18.234 [DEBUG] [Thread-121819] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:07:18.236 [DEBUG] [Thread-121819] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:07:18.236 [DEBUG] [Thread-121819] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:07:18.236 [DEBUG] [Thread-121819] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:07:18.236 [DEBUG] [Thread-121819] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:07:18.236 [DEBUG] [Thread-121819] [transport.py] [_log()] Compression: none
2025-11-03T20:07:18.236 [DEBUG] [Thread-121819] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:07:18.270 [DEBUG] [Thread-121819] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:07:18.274 [DEBUG] [Thread-121819] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:07:18.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:07:18.277 [DEBUG] [Thread-121819] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:07:18.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:07:18.280 [DEBUG] [Thread-121819] [transport.py] [_log()] userauth is OK
2025-11-03T20:07:18.280 [DEBUG] [Thread-121819] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:07:18.280 [DEBUG] [Thread-121819] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:07:18.280 [DEBUG] [Thread-121819] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:07:18.280 [DEBUG] [Thread-121819] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:07:18.300 [INFO] [Thread-121819] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:07:18.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:07:18.944 [DEBUG] [Thread-121819] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:07:18.944 [DEBUG] [Thread-121819] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:07:18.944 [DEBUG] [Thread-121819] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:07:18.985 [DEBUG] [Thread-121819] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:07:18.985 [DEBUG] [Thread-121819] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:07:18.987 [DEBUG] [Thread-121819] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:07:18.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:07:19.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:07:19.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:07:19.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:07:19.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:07:19.008 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:07:19.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:07:19.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:07:19.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:07:19.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.754615 -999.00  +20.10  30.51     12   -9.70 1 1 2 1 1     0    0 25.95 -196.51 ZNESW 30.5 30.5 305.0 36.2 20.3 -29.5 20.2 -28.5 20.0 -28.3 20.2 -29.1
2025-11-03T20:07:19.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:07:19.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:07:19.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.754615
2025-11-03T20:07:19.015 [DEBUG] [Thread-121819] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:07:19.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:07:19.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:07:19.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:07:19.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:07:19.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:07:19.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:06:51', tmtdew=36.54, humidity=7.11, cloud=0.0, wind=22.94, temperature=20.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:06:52', seeing=0.96, atlas_timestamp='2025-11-03T18:06:38.736', atlas_cloud=1, atlas_rain=1, zp_data=[0.0017499999999994742, 0.05525000000000091, 0.13724999999999987, 0.0754999999999999, 0.13700000000000045, 0.03775000000000084, 0.04150000000000098, -0.013749999999998153, -0.10550000000000104, 0.06550000000000011, 0.12324999999999875, 0.07600000000000051, 0.1479999999999997, 0.029249999999999332, -0.1095000000000006, -0.040000000000000924, -0.025750000000000384, 0.11100000000000065, 0.1769999999999996, 0.11624999999999908, 0.026999999999999247, 0.08774999999999977, -0.08674999999999855, -0.3367500000000003, -0.1725000000000012, 0.23000000000000043, 0.2317499999999999, 0.13649999999999984, -0.15200000000000102, 0.01950000000000074, 0.1255000000000024, -0.02999999999999936, -0.6677500000000016], zp_timestamp='2025-11-03T18:02:00')
2025-11-03T20:07:19.123 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:07:19.134 [DEBUG] [Thread-121822] [transport.py] [_log()] starting thread (client mode): 0x1179acb0
2025-11-03T20:07:19.135 [DEBUG] [Thread-121822] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:07:19.149 [DEBUG] [Thread-121822] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:07:19.149 [INFO] [Thread-121822] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:07:19.157 [DEBUG] [Thread-121822] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:07:19.157 [DEBUG] [Thread-121822] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:07:19.157 [DEBUG] [Thread-121822] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:07:19.157 [DEBUG] [Thread-121822] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:07:19.157 [DEBUG] [Thread-121822] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:07:19.157 [DEBUG] [Thread-121822] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:07:19.158 [DEBUG] [Thread-121822] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:07:19.158 [DEBUG] [Thread-121822] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:07:19.158 [DEBUG] [Thread-121822] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:07:19.158 [DEBUG] [Thread-121822] [transport.py] [_log()] client lang: <none>
2025-11-03T20:07:19.158 [DEBUG] [Thread-121822] [transport.py] [_log()] server lang: <none>
2025-11-03T20:07:19.158 [DEBUG] [Thread-121822] [transport.py] [_log()] kex follows: False
2025-11-03T20:07:19.158 [DEBUG] [Thread-121822] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:07:19.158 [DEBUG] [Thread-121822] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:07:19.158 [DEBUG] [Thread-121822] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:07:19.159 [DEBUG] [Thread-121822] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:07:19.159 [DEBUG] [Thread-121822] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:07:19.159 [DEBUG] [Thread-121822] [transport.py] [_log()] Compression: none
2025-11-03T20:07:19.159 [DEBUG] [Thread-121822] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:07:19.216 [DEBUG] [Thread-121822] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:07:19.217 [DEBUG] [Thread-121822] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:07:19.218 [DEBUG] [Thread-121822] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:07:19.218 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:07:19.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:07:19.272 [DEBUG] [Thread-121822] [transport.py] [_log()] userauth is OK
2025-11-03T20:07:19.272 [DEBUG] [Thread-121822] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:07:19.272 [DEBUG] [Thread-121822] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:07:19.272 [DEBUG] [Thread-121822] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:07:19.272 [DEBUG] [Thread-121822] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:07:19.290 [INFO] [Thread-121822] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:07:19.292 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:07:19.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:07:20.118 [DEBUG] [Thread-121822] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:07:20.118 [DEBUG] [Thread-121822] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:07:20.166 [DEBUG] [Thread-121822] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:07:20.166 [DEBUG] [Thread-121822] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:07:20.175 [DEBUG] [Thread-121822] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:07:20.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:07:20.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:07:20.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:07:20.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:07:20.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:07:20.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:07:20.213 [DEBUG] [Thread-121822] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:07:24.279 [DEBUG] [Thread-121824 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:07:24.351 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:07:24.352 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:07:39.709 [DEBUG] [Thread-121825 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:07:50.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:07:50.273 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:07:50.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:07:52.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 7, 25), 36.52, 7.11, 0.0, 21.38, 20.02, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:07:52.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:07:25
2025-11-03T20:07:52.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:07:52.639 [DEBUG] [Thread-121826] [transport.py] [_log()] starting thread (client mode): 0x117633d0
2025-11-03T20:07:52.641 [DEBUG] [Thread-121826] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:07:52.647 [DEBUG] [Thread-121826] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:07:52.647 [INFO] [Thread-121826] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:07:52.655 [DEBUG] [Thread-121826] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:07:52.655 [DEBUG] [Thread-121826] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:07:52.655 [DEBUG] [Thread-121826] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:07:52.655 [DEBUG] [Thread-121826] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:07:52.655 [DEBUG] [Thread-121826] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:07:52.655 [DEBUG] [Thread-121826] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:07:52.655 [DEBUG] [Thread-121826] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:07:52.655 [DEBUG] [Thread-121826] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:07:52.656 [DEBUG] [Thread-121826] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:07:52.656 [DEBUG] [Thread-121826] [transport.py] [_log()] client lang: <none>
2025-11-03T20:07:52.656 [DEBUG] [Thread-121826] [transport.py] [_log()] server lang: <none>
2025-11-03T20:07:52.656 [DEBUG] [Thread-121826] [transport.py] [_log()] kex follows: False
2025-11-03T20:07:52.656 [DEBUG] [Thread-121826] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:07:52.657 [DEBUG] [Thread-121826] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:07:52.658 [DEBUG] [Thread-121826] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:07:52.658 [DEBUG] [Thread-121826] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:07:52.658 [DEBUG] [Thread-121826] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:07:52.658 [DEBUG] [Thread-121826] [transport.py] [_log()] Compression: none
2025-11-03T20:07:52.658 [DEBUG] [Thread-121826] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:07:52.699 [DEBUG] [Thread-121826] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:07:52.705 [DEBUG] [Thread-121826] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:07:52.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:07:52.710 [DEBUG] [Thread-121826] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:07:52.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:07:52.714 [DEBUG] [Thread-121826] [transport.py] [_log()] userauth is OK
2025-11-03T20:07:52.715 [DEBUG] [Thread-121826] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:07:52.715 [DEBUG] [Thread-121826] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:07:52.715 [DEBUG] [Thread-121826] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:07:52.715 [DEBUG] [Thread-121826] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:07:52.743 [INFO] [Thread-121826] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:07:52.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:07:53.549 [DEBUG] [Thread-121826] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:07:53.550 [DEBUG] [Thread-121826] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:07:53.551 [DEBUG] [Thread-121826] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:07:53.591 [DEBUG] [Thread-121826] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:07:53.591 [DEBUG] [Thread-121826] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:07:53.594 [DEBUG] [Thread-121826] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:07:53.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:07:53.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:07:53.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:07:53.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:07:53.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:07:53.625 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:07:53.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:07:53.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:07:53.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:07:53.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.754962 -999.00  +20.10  22.13     12   -9.70 1 1 1 1 1     0    0 25.98 -193.57 ZNESW 22.1 22.1 300.2 30.7 20.2 -29.4 20.2 -28.4 19.9 -28.1 20.2 -28.8
2025-11-03T20:07:53.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:07:53.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:07:53.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.754962
2025-11-03T20:07:53.634 [DEBUG] [Thread-121826] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:07:53.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:07:53.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:07:53.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:07:53.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:07:53.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:07:53.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:07:25', tmtdew=36.52, humidity=7.11, cloud=0.0, wind=21.38, temperature=20.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:07:26', seeing=1.35, atlas_timestamp='2025-11-03T18:07:08.717', atlas_cloud=1, atlas_rain=1, zp_data=[-0.039250000000000895, -0.03974999999999973, 0.01925000000000132, 0.022499999999999076, 0.033500000000000085, 0.047750000000000625, -0.019000000000000128, 0.01025000000000098, -0.08399999999999963, -0.015000000000000568, 0.06524999999999892, -0.0005000000000006111, 0.16499999999999915, -0.012249999999999872, -0.14100000000000001, -0.13900000000000112, -0.14175000000000004, 0.05250000000000021, 0.11650000000000027, 0.06824999999999903, 0.06899999999999906, 0.005749999999999034, -0.10874999999999879, -0.1352499999999992, -0.3260000000000005, 0.2475000000000005, 0.1327499999999997, -0.008999999999998565, 0.04400000000000048, 0.03500000000000014, 0.07450000000000045, -0.2079999999999984, -0.49324999999999974], zp_timestamp='2025-11-03T18:06:00')
2025-11-03T20:07:53.737 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:07:53.749 [DEBUG] [Thread-121829] [transport.py] [_log()] starting thread (client mode): 0xed37430
2025-11-03T20:07:53.750 [DEBUG] [Thread-121829] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:07:53.764 [DEBUG] [Thread-121829] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:07:53.764 [INFO] [Thread-121829] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:07:53.772 [DEBUG] [Thread-121829] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:07:53.772 [DEBUG] [Thread-121829] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:07:53.772 [DEBUG] [Thread-121829] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:07:53.773 [DEBUG] [Thread-121829] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:07:53.773 [DEBUG] [Thread-121829] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:07:53.773 [DEBUG] [Thread-121829] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:07:53.773 [DEBUG] [Thread-121829] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:07:53.773 [DEBUG] [Thread-121829] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:07:53.773 [DEBUG] [Thread-121829] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:07:53.773 [DEBUG] [Thread-121829] [transport.py] [_log()] client lang: <none>
2025-11-03T20:07:53.773 [DEBUG] [Thread-121829] [transport.py] [_log()] server lang: <none>
2025-11-03T20:07:53.773 [DEBUG] [Thread-121829] [transport.py] [_log()] kex follows: False
2025-11-03T20:07:53.773 [DEBUG] [Thread-121829] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:07:53.773 [DEBUG] [Thread-121829] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:07:53.773 [DEBUG] [Thread-121829] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:07:53.773 [DEBUG] [Thread-121829] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:07:53.773 [DEBUG] [Thread-121829] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:07:53.774 [DEBUG] [Thread-121829] [transport.py] [_log()] Compression: none
2025-11-03T20:07:53.774 [DEBUG] [Thread-121829] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:07:53.831 [DEBUG] [Thread-121829] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:07:53.831 [DEBUG] [Thread-121829] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:07:53.832 [DEBUG] [Thread-121829] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:07:53.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:07:53.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:07:53.887 [DEBUG] [Thread-121829] [transport.py] [_log()] userauth is OK
2025-11-03T20:07:53.887 [DEBUG] [Thread-121829] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:07:53.887 [DEBUG] [Thread-121829] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:07:53.887 [DEBUG] [Thread-121829] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:07:53.887 [DEBUG] [Thread-121829] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:07:53.906 [INFO] [Thread-121829] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:07:53.907 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:07:53.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:07:54.739 [DEBUG] [Thread-121829] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:07:54.739 [DEBUG] [Thread-121829] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:07:54.787 [DEBUG] [Thread-121829] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:07:54.787 [DEBUG] [Thread-121829] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:07:54.796 [DEBUG] [Thread-121829] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:07:54.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:07:54.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:07:54.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:07:54.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:07:54.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:07:54.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:07:54.833 [DEBUG] [Thread-121829] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:07:54.843 [DEBUG] [Thread-121831 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:07:57.913 [DEBUG] [Thread-121832 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:08:10.103 [DEBUG] [Thread-121833 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:08:24.571 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:08:24.591 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:08:24.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:08:24.859 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:08:24.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:08:25.244 [DEBUG] [Thread-121834 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:08:26.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 7, 25), 36.47, 7.11, 0.0, 24.98, 20.02, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:08:26.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:07:25
2025-11-03T20:08:26.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:08:27.097 [DEBUG] [Thread-121835] [transport.py] [_log()] starting thread (client mode): 0xeda10f0
2025-11-03T20:08:27.099 [DEBUG] [Thread-121835] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:08:27.107 [DEBUG] [Thread-121835] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:08:27.107 [INFO] [Thread-121835] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:08:27.118 [DEBUG] [Thread-121835] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:08:27.119 [DEBUG] [Thread-121835] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:08:27.119 [DEBUG] [Thread-121835] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:08:27.119 [DEBUG] [Thread-121835] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:08:27.119 [DEBUG] [Thread-121835] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:08:27.119 [DEBUG] [Thread-121835] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:08:27.119 [DEBUG] [Thread-121835] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:08:27.119 [DEBUG] [Thread-121835] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:08:27.119 [DEBUG] [Thread-121835] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:08:27.119 [DEBUG] [Thread-121835] [transport.py] [_log()] client lang: <none>
2025-11-03T20:08:27.119 [DEBUG] [Thread-121835] [transport.py] [_log()] server lang: <none>
2025-11-03T20:08:27.119 [DEBUG] [Thread-121835] [transport.py] [_log()] kex follows: False
2025-11-03T20:08:27.119 [DEBUG] [Thread-121835] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:08:27.120 [DEBUG] [Thread-121835] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:08:27.120 [DEBUG] [Thread-121835] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:08:27.120 [DEBUG] [Thread-121835] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:08:27.120 [DEBUG] [Thread-121835] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:08:27.120 [DEBUG] [Thread-121835] [transport.py] [_log()] Compression: none
2025-11-03T20:08:27.120 [DEBUG] [Thread-121835] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:08:27.159 [DEBUG] [Thread-121835] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:08:27.164 [DEBUG] [Thread-121835] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:08:27.166 [DEBUG] [Thread-121835] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:08:27.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:08:27.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:08:27.172 [DEBUG] [Thread-121835] [transport.py] [_log()] userauth is OK
2025-11-03T20:08:27.172 [DEBUG] [Thread-121835] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:08:27.172 [DEBUG] [Thread-121835] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:08:27.172 [DEBUG] [Thread-121835] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:08:27.172 [DEBUG] [Thread-121835] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:08:27.207 [INFO] [Thread-121835] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:08:27.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:08:27.824 [DEBUG] [Thread-121835] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:08:27.824 [DEBUG] [Thread-121835] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:08:27.825 [DEBUG] [Thread-121835] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:08:27.866 [DEBUG] [Thread-121835] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:08:27.866 [DEBUG] [Thread-121835] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:08:27.868 [DEBUG] [Thread-121835] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:08:27.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:08:27.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:08:27.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:08:27.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:08:27.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:08:27.891 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:08:27.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:08:27.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:08:27.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:08:27.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.755657 -999.00  +20.10  24.29     12   -9.60 1 1 1 1 1     0    0 26.05 -175.34 ZNESW 24.3 24.3 294.6 37.8 20.2 -29.3 20.1 -28.2 19.9 -27.9 20.2 -28.8
2025-11-03T20:08:27.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:08:27.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:08:27.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.755657
2025-11-03T20:08:27.898 [DEBUG] [Thread-121835] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:08:27.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:08:27.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:08:27.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:08:27.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:08:27.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:08:27.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:07:25', tmtdew=36.47, humidity=7.11, cloud=0.0, wind=24.98, temperature=20.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:08:00', seeing=1.37, atlas_timestamp='2025-11-03T18:08:08.765', atlas_cloud=1, atlas_rain=1, zp_data=[-0.039250000000000895, -0.03974999999999973, 0.01925000000000132, 0.022499999999999076, 0.033500000000000085, 0.047750000000000625, -0.019000000000000128, 0.01025000000000098, -0.08399999999999963, -0.015000000000000568, 0.06524999999999892, -0.0005000000000006111, 0.16499999999999915, -0.012249999999999872, -0.14100000000000001, -0.13900000000000112, -0.14175000000000004, 0.05250000000000021, 0.11650000000000027, 0.06824999999999903, 0.06899999999999906, 0.005749999999999034, -0.10874999999999879, -0.1352499999999992, -0.3260000000000005, 0.2475000000000005, 0.1327499999999997, -0.008999999999998565, 0.04400000000000048, 0.03500000000000014, 0.07450000000000045, -0.2079999999999984, -0.49324999999999974], zp_timestamp='2025-11-03T18:06:00')
2025-11-03T20:08:28.002 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:08:28.013 [DEBUG] [Thread-121838] [transport.py] [_log()] starting thread (client mode): 0xed10df0
2025-11-03T20:08:28.013 [DEBUG] [Thread-121838] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:08:28.028 [DEBUG] [Thread-121838] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:08:28.028 [INFO] [Thread-121838] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:08:28.035 [DEBUG] [Thread-121838] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:08:28.035 [DEBUG] [Thread-121838] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:08:28.035 [DEBUG] [Thread-121838] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:08:28.035 [DEBUG] [Thread-121838] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:08:28.036 [DEBUG] [Thread-121838] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:08:28.036 [DEBUG] [Thread-121838] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:08:28.036 [DEBUG] [Thread-121838] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:08:28.036 [DEBUG] [Thread-121838] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:08:28.036 [DEBUG] [Thread-121838] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:08:28.036 [DEBUG] [Thread-121838] [transport.py] [_log()] client lang: <none>
2025-11-03T20:08:28.036 [DEBUG] [Thread-121838] [transport.py] [_log()] server lang: <none>
2025-11-03T20:08:28.036 [DEBUG] [Thread-121838] [transport.py] [_log()] kex follows: False
2025-11-03T20:08:28.036 [DEBUG] [Thread-121838] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:08:28.036 [DEBUG] [Thread-121838] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:08:28.036 [DEBUG] [Thread-121838] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:08:28.036 [DEBUG] [Thread-121838] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:08:28.036 [DEBUG] [Thread-121838] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:08:28.036 [DEBUG] [Thread-121838] [transport.py] [_log()] Compression: none
2025-11-03T20:08:28.036 [DEBUG] [Thread-121838] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:08:28.093 [DEBUG] [Thread-121838] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:08:28.093 [DEBUG] [Thread-121838] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:08:28.093 [DEBUG] [Thread-121838] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:08:28.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:08:28.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:08:28.151 [DEBUG] [Thread-121838] [transport.py] [_log()] userauth is OK
2025-11-03T20:08:28.151 [DEBUG] [Thread-121838] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:08:28.151 [DEBUG] [Thread-121838] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:08:28.151 [DEBUG] [Thread-121838] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:08:28.151 [DEBUG] [Thread-121838] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:08:28.166 [INFO] [Thread-121838] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:08:28.166 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:08:28.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:08:28.998 [DEBUG] [Thread-121838] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:08:28.998 [DEBUG] [Thread-121838] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:08:29.045 [DEBUG] [Thread-121838] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:08:29.045 [DEBUG] [Thread-121838] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:08:29.055 [DEBUG] [Thread-121838] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:08:29.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:08:29.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:08:29.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:08:29.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:08:29.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:08:29.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:08:29.090 [DEBUG] [Thread-121838] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:08:40.396 [DEBUG] [Thread-121840 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:08:55.731 [DEBUG] [Thread-121841 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:08:58.298 [DEBUG] [Thread-121842 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:08:59.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:08:59.115 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:08:59.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:09:01.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 8, 33), 36.37, 7.18, 0.0, 29.41, 20.12, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:09:01.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:08:33
2025-11-03T20:09:01.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:09:01.465 [DEBUG] [Thread-121843] [transport.py] [_log()] starting thread (client mode): 0xeda08e0
2025-11-03T20:09:01.466 [DEBUG] [Thread-121843] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:09:01.474 [DEBUG] [Thread-121843] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:09:01.475 [INFO] [Thread-121843] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:09:01.486 [DEBUG] [Thread-121843] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:09:01.487 [DEBUG] [Thread-121843] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:09:01.487 [DEBUG] [Thread-121843] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:09:01.487 [DEBUG] [Thread-121843] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:09:01.487 [DEBUG] [Thread-121843] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:09:01.487 [DEBUG] [Thread-121843] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:09:01.487 [DEBUG] [Thread-121843] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:09:01.487 [DEBUG] [Thread-121843] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:09:01.487 [DEBUG] [Thread-121843] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:09:01.487 [DEBUG] [Thread-121843] [transport.py] [_log()] client lang: <none>
2025-11-03T20:09:01.487 [DEBUG] [Thread-121843] [transport.py] [_log()] server lang: <none>
2025-11-03T20:09:01.487 [DEBUG] [Thread-121843] [transport.py] [_log()] kex follows: False
2025-11-03T20:09:01.488 [DEBUG] [Thread-121843] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:09:01.488 [DEBUG] [Thread-121843] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:09:01.489 [DEBUG] [Thread-121843] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:09:01.489 [DEBUG] [Thread-121843] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:09:01.489 [DEBUG] [Thread-121843] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:09:01.489 [DEBUG] [Thread-121843] [transport.py] [_log()] Compression: none
2025-11-03T20:09:01.489 [DEBUG] [Thread-121843] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:09:01.524 [DEBUG] [Thread-121843] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:09:01.531 [DEBUG] [Thread-121843] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:09:01.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:09:01.535 [DEBUG] [Thread-121843] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:09:01.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:09:01.539 [DEBUG] [Thread-121843] [transport.py] [_log()] userauth is OK
2025-11-03T20:09:01.539 [DEBUG] [Thread-121843] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:09:01.539 [DEBUG] [Thread-121843] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:09:01.539 [DEBUG] [Thread-121843] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:09:01.539 [DEBUG] [Thread-121843] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:09:01.583 [INFO] [Thread-121843] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:09:01.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:09:02.231 [DEBUG] [Thread-121843] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:09:02.231 [DEBUG] [Thread-121843] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:09:02.232 [DEBUG] [Thread-121843] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:09:02.272 [DEBUG] [Thread-121843] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:09:02.272 [DEBUG] [Thread-121843] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:09:02.275 [DEBUG] [Thread-121843] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:09:02.287 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:09:02.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:09:02.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:09:02.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:09:02.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:09:02.298 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:09:02.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:09:02.298 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:09:02.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:09:02.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.756004 -999.00  +20.10  23.86     12   -9.60 1 1 1 1 1     0    0 26.32 -165.59 ZNESW 23.9 23.9 296.0 35.6 20.2 -29.2 20.1 -28.3 19.9 -28.0 20.2 -28.9
2025-11-03T20:09:02.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:09:02.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:09:02.300 [DEBUG] [Thread-121843] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:09:02.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.756004
2025-11-03T20:09:02.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:09:02.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:09:02.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:09:02.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:09:02.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:09:02.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:08:33', tmtdew=36.37, humidity=7.18, cloud=0.0, wind=29.41, temperature=20.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:08:34', seeing=1.28, atlas_timestamp='2025-11-03T18:08:38.746', atlas_cloud=1, atlas_rain=1, zp_data=[-0.039250000000000895, -0.03974999999999973, 0.01925000000000132, 0.022499999999999076, 0.033500000000000085, 0.047750000000000625, -0.019000000000000128, 0.01025000000000098, -0.08399999999999963, -0.015000000000000568, 0.06524999999999892, -0.0005000000000006111, 0.16499999999999915, -0.012249999999999872, -0.14100000000000001, -0.13900000000000112, -0.14175000000000004, 0.05250000000000021, 0.11650000000000027, 0.06824999999999903, 0.06899999999999906, 0.005749999999999034, -0.10874999999999879, -0.1352499999999992, -0.3260000000000005, 0.2475000000000005, 0.1327499999999997, -0.008999999999998565, 0.04400000000000048, 0.03500000000000014, 0.07450000000000045, -0.2079999999999984, -0.49324999999999974], zp_timestamp='2025-11-03T18:06:00')
2025-11-03T20:09:02.450 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:09:02.461 [DEBUG] [Thread-121846] [transport.py] [_log()] starting thread (client mode): 0x117eaa10
2025-11-03T20:09:02.461 [DEBUG] [Thread-121846] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:09:02.476 [DEBUG] [Thread-121846] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:09:02.476 [INFO] [Thread-121846] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:09:02.483 [DEBUG] [Thread-121846] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:09:02.483 [DEBUG] [Thread-121846] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:09:02.483 [DEBUG] [Thread-121846] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:09:02.483 [DEBUG] [Thread-121846] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:09:02.484 [DEBUG] [Thread-121846] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:09:02.484 [DEBUG] [Thread-121846] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:09:02.484 [DEBUG] [Thread-121846] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:09:02.484 [DEBUG] [Thread-121846] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:09:02.484 [DEBUG] [Thread-121846] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:09:02.484 [DEBUG] [Thread-121846] [transport.py] [_log()] client lang: <none>
2025-11-03T20:09:02.484 [DEBUG] [Thread-121846] [transport.py] [_log()] server lang: <none>
2025-11-03T20:09:02.484 [DEBUG] [Thread-121846] [transport.py] [_log()] kex follows: False
2025-11-03T20:09:02.484 [DEBUG] [Thread-121846] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:09:02.484 [DEBUG] [Thread-121846] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:09:02.484 [DEBUG] [Thread-121846] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:09:02.484 [DEBUG] [Thread-121846] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:09:02.485 [DEBUG] [Thread-121846] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:09:02.485 [DEBUG] [Thread-121846] [transport.py] [_log()] Compression: none
2025-11-03T20:09:02.485 [DEBUG] [Thread-121846] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:09:02.542 [DEBUG] [Thread-121846] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:09:02.542 [DEBUG] [Thread-121846] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:09:02.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:09:02.542 [DEBUG] [Thread-121846] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:09:02.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:09:02.598 [DEBUG] [Thread-121846] [transport.py] [_log()] userauth is OK
2025-11-03T20:09:02.599 [DEBUG] [Thread-121846] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:09:02.599 [DEBUG] [Thread-121846] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:09:02.599 [DEBUG] [Thread-121846] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:09:02.599 [DEBUG] [Thread-121846] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:09:02.617 [INFO] [Thread-121846] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:09:02.617 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:09:02.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:09:03.434 [DEBUG] [Thread-121846] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:09:03.434 [DEBUG] [Thread-121846] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:09:03.482 [DEBUG] [Thread-121846] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:09:03.482 [DEBUG] [Thread-121846] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:09:03.491 [DEBUG] [Thread-121846] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:09:03.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:09:03.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:09:03.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:09:03.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:09:03.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:09:03.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:09:03.524 [DEBUG] [Thread-121846] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:09:10.892 [DEBUG] [Thread-121848 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:09:24.810 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:09:24.828 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:09:26.126 [DEBUG] [Thread-121849 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:09:33.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:09:33.550 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:09:33.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:09:35.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 9, 7), 36.38, 7.16, 0.0, 29.15, 20.07, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:09:35.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:09:07
2025-11-03T20:09:35.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:09:35.872 [DEBUG] [Thread-121850] [transport.py] [_log()] starting thread (client mode): 0xed13c70
2025-11-03T20:09:35.873 [DEBUG] [Thread-121850] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:09:35.881 [DEBUG] [Thread-121850] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:09:35.881 [INFO] [Thread-121850] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:09:35.889 [DEBUG] [Thread-121850] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:09:35.890 [DEBUG] [Thread-121850] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:09:35.890 [DEBUG] [Thread-121850] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:09:35.890 [DEBUG] [Thread-121850] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:09:35.890 [DEBUG] [Thread-121850] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:09:35.891 [DEBUG] [Thread-121850] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:09:35.891 [DEBUG] [Thread-121850] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:09:35.891 [DEBUG] [Thread-121850] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:09:35.891 [DEBUG] [Thread-121850] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:09:35.891 [DEBUG] [Thread-121850] [transport.py] [_log()] client lang: <none>
2025-11-03T20:09:35.891 [DEBUG] [Thread-121850] [transport.py] [_log()] server lang: <none>
2025-11-03T20:09:35.891 [DEBUG] [Thread-121850] [transport.py] [_log()] kex follows: False
2025-11-03T20:09:35.891 [DEBUG] [Thread-121850] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:09:35.892 [DEBUG] [Thread-121850] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:09:35.892 [DEBUG] [Thread-121850] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:09:35.893 [DEBUG] [Thread-121850] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:09:35.893 [DEBUG] [Thread-121850] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:09:35.893 [DEBUG] [Thread-121850] [transport.py] [_log()] Compression: none
2025-11-03T20:09:35.893 [DEBUG] [Thread-121850] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:09:35.936 [DEBUG] [Thread-121850] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:09:35.941 [DEBUG] [Thread-121850] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:09:35.943 [DEBUG] [Thread-121850] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:09:35.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:09:35.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:09:35.950 [DEBUG] [Thread-121850] [transport.py] [_log()] userauth is OK
2025-11-03T20:09:35.950 [DEBUG] [Thread-121850] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:09:35.951 [DEBUG] [Thread-121850] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:09:35.951 [DEBUG] [Thread-121850] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:09:35.951 [DEBUG] [Thread-121850] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:09:35.980 [INFO] [Thread-121850] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:09:35.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:09:36.630 [DEBUG] [Thread-121850] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:09:36.630 [DEBUG] [Thread-121850] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:09:36.631 [DEBUG] [Thread-121850] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:09:36.671 [DEBUG] [Thread-121850] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:09:36.671 [DEBUG] [Thread-121850] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:09:36.675 [DEBUG] [Thread-121850] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:09:36.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:09:36.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:09:36.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:09:36.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:09:36.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:09:36.704 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:09:36.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:09:36.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:09:36.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:09:36.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.756351 -999.00  +20.10  20.80     12   -9.60 1 1 1 1 1     0    0 25.53 -173.20 ZNESW 20.8 20.8 306.2 32.0 20.2 -29.2 20.1 -28.1 19.9 -28.1 20.1 -28.7
2025-11-03T20:09:36.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:09:36.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:09:36.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.756351
2025-11-03T20:09:36.713 [DEBUG] [Thread-121850] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:09:36.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:09:36.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:09:36.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:09:36.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:09:36.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:09:36.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:09:07', tmtdew=36.38, humidity=7.16, cloud=0.0, wind=29.15, temperature=20.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:09:08', seeing=1.15, atlas_timestamp='2025-11-03T18:09:08.726', atlas_cloud=1, atlas_rain=1, zp_data=[-0.039250000000000895, -0.03974999999999973, 0.01925000000000132, 0.022499999999999076, 0.033500000000000085, 0.047750000000000625, -0.019000000000000128, 0.01025000000000098, -0.08399999999999963, -0.015000000000000568, 0.06524999999999892, -0.0005000000000006111, 0.16499999999999915, -0.012249999999999872, -0.14100000000000001, -0.13900000000000112, -0.14175000000000004, 0.05250000000000021, 0.11650000000000027, 0.06824999999999903, 0.06899999999999906, 0.005749999999999034, -0.10874999999999879, -0.1352499999999992, -0.3260000000000005, 0.2475000000000005, 0.1327499999999997, -0.008999999999998565, 0.04400000000000048, 0.03500000000000014, 0.07450000000000045, -0.2079999999999984, -0.49324999999999974], zp_timestamp='2025-11-03T18:06:00')
2025-11-03T20:09:36.828 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:09:36.840 [DEBUG] [Thread-121853] [transport.py] [_log()] starting thread (client mode): 0x117ea470
2025-11-03T20:09:36.840 [DEBUG] [Thread-121853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:09:36.856 [DEBUG] [Thread-121853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:09:36.856 [INFO] [Thread-121853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:09:36.863 [DEBUG] [Thread-121853] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:09:36.864 [DEBUG] [Thread-121853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:09:36.864 [DEBUG] [Thread-121853] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:09:36.864 [DEBUG] [Thread-121853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:09:36.864 [DEBUG] [Thread-121853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:09:36.864 [DEBUG] [Thread-121853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:09:36.864 [DEBUG] [Thread-121853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:09:36.864 [DEBUG] [Thread-121853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:09:36.864 [DEBUG] [Thread-121853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:09:36.864 [DEBUG] [Thread-121853] [transport.py] [_log()] client lang: <none>
2025-11-03T20:09:36.864 [DEBUG] [Thread-121853] [transport.py] [_log()] server lang: <none>
2025-11-03T20:09:36.864 [DEBUG] [Thread-121853] [transport.py] [_log()] kex follows: False
2025-11-03T20:09:36.864 [DEBUG] [Thread-121853] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:09:36.864 [DEBUG] [Thread-121853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:09:36.864 [DEBUG] [Thread-121853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:09:36.864 [DEBUG] [Thread-121853] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:09:36.865 [DEBUG] [Thread-121853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:09:36.865 [DEBUG] [Thread-121853] [transport.py] [_log()] Compression: none
2025-11-03T20:09:36.865 [DEBUG] [Thread-121853] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:09:36.922 [DEBUG] [Thread-121853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:09:36.923 [DEBUG] [Thread-121853] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:09:36.924 [DEBUG] [Thread-121853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:09:36.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:09:36.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:09:36.979 [DEBUG] [Thread-121853] [transport.py] [_log()] userauth is OK
2025-11-03T20:09:36.979 [DEBUG] [Thread-121853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:09:36.979 [DEBUG] [Thread-121853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:09:36.979 [DEBUG] [Thread-121853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:09:36.980 [DEBUG] [Thread-121853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:09:37.001 [INFO] [Thread-121853] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:09:37.001 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:09:37.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:09:37.857 [DEBUG] [Thread-121853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:09:37.857 [DEBUG] [Thread-121853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:09:37.906 [DEBUG] [Thread-121853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:09:37.906 [DEBUG] [Thread-121853] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:09:37.915 [DEBUG] [Thread-121853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:09:37.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:09:37.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:09:37.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:09:37.940 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:09:37.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:09:37.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:09:37.948 [DEBUG] [Thread-121853] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:09:41.253 [DEBUG] [Thread-121855 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:09:56.505 [DEBUG] [Thread-121856 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:09:58.667 [DEBUG] [Thread-121857 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:10:07.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:10:07.973 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:10:08.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:10:09.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 9, 40), 36.31, 7.24, 0.0, 23.13, 20.12, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:10:09.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:09:40
2025-11-03T20:10:09.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:10:10.210 [DEBUG] [Thread-121858] [transport.py] [_log()] starting thread (client mode): 0xeda3cd0
2025-11-03T20:10:10.212 [DEBUG] [Thread-121858] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:10:10.213 [DEBUG] [Thread-121858] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:10:10.213 [INFO] [Thread-121858] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:10:10.219 [DEBUG] [Thread-121858] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:10:10.220 [DEBUG] [Thread-121858] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:10:10.220 [DEBUG] [Thread-121858] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:10:10.220 [DEBUG] [Thread-121858] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:10:10.220 [DEBUG] [Thread-121858] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:10:10.220 [DEBUG] [Thread-121858] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:10:10.220 [DEBUG] [Thread-121858] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:10:10.220 [DEBUG] [Thread-121858] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:10:10.220 [DEBUG] [Thread-121858] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:10:10.220 [DEBUG] [Thread-121858] [transport.py] [_log()] client lang: <none>
2025-11-03T20:10:10.220 [DEBUG] [Thread-121858] [transport.py] [_log()] server lang: <none>
2025-11-03T20:10:10.220 [DEBUG] [Thread-121858] [transport.py] [_log()] kex follows: False
2025-11-03T20:10:10.220 [DEBUG] [Thread-121858] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:10:10.220 [DEBUG] [Thread-121858] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:10:10.221 [DEBUG] [Thread-121858] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:10:10.221 [DEBUG] [Thread-121858] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:10:10.221 [DEBUG] [Thread-121858] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:10:10.221 [DEBUG] [Thread-121858] [transport.py] [_log()] Compression: none
2025-11-03T20:10:10.221 [DEBUG] [Thread-121858] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:10:10.255 [DEBUG] [Thread-121858] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:10:10.258 [DEBUG] [Thread-121858] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:10:10.260 [DEBUG] [Thread-121858] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:10:10.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:10:10.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:10:10.264 [DEBUG] [Thread-121858] [transport.py] [_log()] userauth is OK
2025-11-03T20:10:10.264 [DEBUG] [Thread-121858] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:10:10.264 [DEBUG] [Thread-121858] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:10:10.264 [DEBUG] [Thread-121858] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:10:10.264 [DEBUG] [Thread-121858] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:10:10.284 [INFO] [Thread-121858] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:10:10.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:10:11.619 [DEBUG] [Thread-121860 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:10:15.901 [DEBUG] [Thread-121858] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:10:15.901 [DEBUG] [Thread-121858] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:10:15.902 [DEBUG] [Thread-121858] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:10:15.942 [DEBUG] [Thread-121858] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:10:15.942 [DEBUG] [Thread-121858] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:10:15.945 [DEBUG] [Thread-121858] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:10:16.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:10:16.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:10:16.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:10:16.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:10:16.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:10:16.064 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:10:16.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:10:16.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:10:16.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:10:16.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.756698 -999.00  +20.10  23.54     12   -9.50 1 1 1 1 1     0    0 25.10 -181.72 ZNESW 23.5 23.5 301.4 33.8 20.2 -29.2 20.1 -28.1 19.9 -28.1 20.1 -28.7
2025-11-03T20:10:16.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:10:16.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:10:16.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.756698
2025-11-03T20:10:16.071 [DEBUG] [Thread-121858] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:10:16.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:10:16.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:10:16.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:10:16.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:10:16.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:10:16.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:09:40', tmtdew=36.31, humidity=7.24, cloud=0.0, wind=23.13, temperature=20.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:09:41', seeing=1.28, atlas_timestamp='2025-11-03T18:09:38.707', atlas_cloud=1, atlas_rain=1, zp_data=[-0.039250000000000895, -0.03974999999999973, 0.01925000000000132, 0.022499999999999076, 0.033500000000000085, 0.047750000000000625, -0.019000000000000128, 0.01025000000000098, -0.08399999999999963, -0.015000000000000568, 0.06524999999999892, -0.0005000000000006111, 0.16499999999999915, -0.012249999999999872, -0.14100000000000001, -0.13900000000000112, -0.14175000000000004, 0.05250000000000021, 0.11650000000000027, 0.06824999999999903, 0.06899999999999906, 0.005749999999999034, -0.10874999999999879, -0.1352499999999992, -0.3260000000000005, 0.2475000000000005, 0.1327499999999997, -0.008999999999998565, 0.04400000000000048, 0.03500000000000014, 0.07450000000000045, -0.2079999999999984, -0.49324999999999974], zp_timestamp='2025-11-03T18:06:00')
2025-11-03T20:10:16.194 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:10:16.206 [DEBUG] [Thread-121862] [transport.py] [_log()] starting thread (client mode): 0xed123e0
2025-11-03T20:10:16.206 [DEBUG] [Thread-121862] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:10:16.221 [DEBUG] [Thread-121862] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:10:16.221 [INFO] [Thread-121862] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:10:16.228 [DEBUG] [Thread-121862] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:10:16.228 [DEBUG] [Thread-121862] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:10:16.228 [DEBUG] [Thread-121862] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:10:16.228 [DEBUG] [Thread-121862] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:10:16.228 [DEBUG] [Thread-121862] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:10:16.228 [DEBUG] [Thread-121862] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:10:16.228 [DEBUG] [Thread-121862] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:10:16.228 [DEBUG] [Thread-121862] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:10:16.229 [DEBUG] [Thread-121862] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:10:16.229 [DEBUG] [Thread-121862] [transport.py] [_log()] client lang: <none>
2025-11-03T20:10:16.229 [DEBUG] [Thread-121862] [transport.py] [_log()] server lang: <none>
2025-11-03T20:10:16.229 [DEBUG] [Thread-121862] [transport.py] [_log()] kex follows: False
2025-11-03T20:10:16.229 [DEBUG] [Thread-121862] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:10:16.229 [DEBUG] [Thread-121862] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:10:16.229 [DEBUG] [Thread-121862] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:10:16.229 [DEBUG] [Thread-121862] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:10:16.229 [DEBUG] [Thread-121862] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:10:16.229 [DEBUG] [Thread-121862] [transport.py] [_log()] Compression: none
2025-11-03T20:10:16.229 [DEBUG] [Thread-121862] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:10:16.284 [DEBUG] [Thread-121862] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:10:16.284 [DEBUG] [Thread-121862] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:10:16.285 [DEBUG] [Thread-121862] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:10:16.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:10:16.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:10:16.345 [DEBUG] [Thread-121862] [transport.py] [_log()] userauth is OK
2025-11-03T20:10:16.345 [DEBUG] [Thread-121862] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:10:16.345 [DEBUG] [Thread-121862] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:10:16.345 [DEBUG] [Thread-121862] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:10:16.345 [DEBUG] [Thread-121862] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:10:16.364 [INFO] [Thread-121862] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:10:16.364 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:10:16.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:10:17.195 [DEBUG] [Thread-121862] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:10:17.195 [DEBUG] [Thread-121862] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:10:17.244 [DEBUG] [Thread-121862] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:10:17.244 [DEBUG] [Thread-121862] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:10:17.253 [DEBUG] [Thread-121862] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:10:17.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:10:17.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:10:17.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:10:17.278 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:10:17.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:10:17.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:10:17.286 [DEBUG] [Thread-121862] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:10:25.028 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:10:25.029 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:10:26.679 [DEBUG] [Thread-121864 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:10:41.819 [DEBUG] [Thread-121865 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:10:47.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:10:47.306 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:10:47.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:10:49.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 10, 14), 36.22, 7.29, 0.0, 24.95, 20.09, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:10:49.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:10:14
2025-11-03T20:10:49.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:10:49.832 [DEBUG] [Thread-121866] [transport.py] [_log()] starting thread (client mode): 0x11762740
2025-11-03T20:10:49.835 [DEBUG] [Thread-121866] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:10:49.839 [DEBUG] [Thread-121866] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:10:49.839 [INFO] [Thread-121866] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:10:49.847 [DEBUG] [Thread-121866] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:10:49.847 [DEBUG] [Thread-121866] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:10:49.847 [DEBUG] [Thread-121866] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:10:49.847 [DEBUG] [Thread-121866] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:10:49.847 [DEBUG] [Thread-121866] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:10:49.847 [DEBUG] [Thread-121866] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:10:49.847 [DEBUG] [Thread-121866] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:10:49.847 [DEBUG] [Thread-121866] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:10:49.847 [DEBUG] [Thread-121866] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:10:49.847 [DEBUG] [Thread-121866] [transport.py] [_log()] client lang: <none>
2025-11-03T20:10:49.848 [DEBUG] [Thread-121866] [transport.py] [_log()] server lang: <none>
2025-11-03T20:10:49.848 [DEBUG] [Thread-121866] [transport.py] [_log()] kex follows: False
2025-11-03T20:10:49.848 [DEBUG] [Thread-121866] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:10:49.848 [DEBUG] [Thread-121866] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:10:49.848 [DEBUG] [Thread-121866] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:10:49.848 [DEBUG] [Thread-121866] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:10:49.848 [DEBUG] [Thread-121866] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:10:49.848 [DEBUG] [Thread-121866] [transport.py] [_log()] Compression: none
2025-11-03T20:10:49.848 [DEBUG] [Thread-121866] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:10:49.884 [DEBUG] [Thread-121866] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:10:49.888 [DEBUG] [Thread-121866] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:10:49.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:10:49.892 [DEBUG] [Thread-121866] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:10:49.892 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:10:49.895 [DEBUG] [Thread-121866] [transport.py] [_log()] userauth is OK
2025-11-03T20:10:49.895 [DEBUG] [Thread-121866] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:10:49.895 [DEBUG] [Thread-121866] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:10:49.895 [DEBUG] [Thread-121866] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:10:49.895 [DEBUG] [Thread-121866] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:10:49.917 [INFO] [Thread-121866] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:10:49.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:10:50.609 [DEBUG] [Thread-121866] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:10:50.609 [DEBUG] [Thread-121866] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:10:50.610 [DEBUG] [Thread-121866] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:10:50.651 [DEBUG] [Thread-121866] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:10:50.651 [DEBUG] [Thread-121866] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:10:50.653 [DEBUG] [Thread-121866] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:10:50.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:10:50.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:10:50.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:10:50.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:10:50.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:10:50.678 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:10:50.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:10:50.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:10:50.680 [DEBUG] [Thread-121866] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:10:50.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:10:50.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.757045 -999.00  +20.10  21.42     12   -9.60 1 1 1 1 1     0    0 24.90 -188.56 ZNESW 21.4 21.4 305.3 26.4 20.2 -29.3 20.1 -28.2 19.9 -28.2 20.1 -28.9
2025-11-03T20:10:50.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:10:50.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:10:50.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.757045
2025-11-03T20:10:50.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:10:50.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:10:50.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:10:50.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:10:50.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:10:50.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:10:14', tmtdew=36.22, humidity=7.29, cloud=0.0, wind=24.95, temperature=20.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:10:15', seeing=1.39, atlas_timestamp='2025-11-03T18:10:08.688', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024250000000000327, 0.06125000000000114, 0.01025000000000098, 0.08149999999999835, 0.09600000000000009, 0.048250000000001236, -0.009999999999999787, 0.05325000000000202, -0.019999999999999574, 0.0649999999999995, 0.11224999999999952, 0.11950000000000038, 0.16799999999999926, -0.02624999999999922, -0.053000000000000824, -0.17300000000000004, -0.034750000000000725, 0.07649999999999935, 0.18799999999999883, 0.1242499999999982, 0.05999999999999872, 0.05574999999999797, -0.08374999999999844, -0.20025000000000048, -0.032000000000001805, 0.25099999999999945, 0.19375000000000142, 0.14100000000000001, 0.12100000000000044, 0.11200000000000188, 0.1330000000000009, -0.03999999999999915, -0.20674999999999955], zp_timestamp='2025-11-03T18:09:00')
2025-11-03T20:10:50.794 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:10:50.807 [DEBUG] [Thread-121869] [transport.py] [_log()] starting thread (client mode): 0xeda3d30
2025-11-03T20:10:50.807 [DEBUG] [Thread-121869] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:10:50.821 [DEBUG] [Thread-121869] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:10:50.821 [INFO] [Thread-121869] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:10:50.829 [DEBUG] [Thread-121869] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:10:50.829 [DEBUG] [Thread-121869] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:10:50.829 [DEBUG] [Thread-121869] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:10:50.829 [DEBUG] [Thread-121869] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:10:50.829 [DEBUG] [Thread-121869] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:10:50.829 [DEBUG] [Thread-121869] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:10:50.829 [DEBUG] [Thread-121869] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:10:50.829 [DEBUG] [Thread-121869] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:10:50.829 [DEBUG] [Thread-121869] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:10:50.829 [DEBUG] [Thread-121869] [transport.py] [_log()] client lang: <none>
2025-11-03T20:10:50.829 [DEBUG] [Thread-121869] [transport.py] [_log()] server lang: <none>
2025-11-03T20:10:50.829 [DEBUG] [Thread-121869] [transport.py] [_log()] kex follows: False
2025-11-03T20:10:50.829 [DEBUG] [Thread-121869] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:10:50.829 [DEBUG] [Thread-121869] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:10:50.830 [DEBUG] [Thread-121869] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:10:50.830 [DEBUG] [Thread-121869] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:10:50.830 [DEBUG] [Thread-121869] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:10:50.830 [DEBUG] [Thread-121869] [transport.py] [_log()] Compression: none
2025-11-03T20:10:50.830 [DEBUG] [Thread-121869] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:10:50.893 [DEBUG] [Thread-121869] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:10:50.893 [DEBUG] [Thread-121869] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:10:50.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:10:50.893 [DEBUG] [Thread-121869] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:10:50.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:10:50.949 [DEBUG] [Thread-121869] [transport.py] [_log()] userauth is OK
2025-11-03T20:10:50.949 [DEBUG] [Thread-121869] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:10:50.949 [DEBUG] [Thread-121869] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:10:50.950 [DEBUG] [Thread-121869] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:10:50.950 [DEBUG] [Thread-121869] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:10:50.968 [INFO] [Thread-121869] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:10:50.968 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:10:50.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:10:51.820 [DEBUG] [Thread-121869] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:10:51.820 [DEBUG] [Thread-121869] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:10:51.867 [DEBUG] [Thread-121869] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:10:51.867 [DEBUG] [Thread-121869] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:10:51.876 [DEBUG] [Thread-121869] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:10:51.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:10:51.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:10:51.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:10:51.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:10:51.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:10:51.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:10:51.911 [DEBUG] [Thread-121869] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:10:56.893 [DEBUG] [Thread-121871 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:10:59.179 [DEBUG] [Thread-121872 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:11:12.113 [DEBUG] [Thread-121873 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:11:21.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:11:21.984 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:11:22.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:11:23.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 10, 47), 36.12, 7.29, 0.0, 22.88, 20.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:11:23.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:10:47
2025-11-03T20:11:24.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:11:24.213 [DEBUG] [Thread-121874] [transport.py] [_log()] starting thread (client mode): 0xeda21a0
2025-11-03T20:11:24.216 [DEBUG] [Thread-121874] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:11:24.219 [DEBUG] [Thread-121874] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:11:24.219 [INFO] [Thread-121874] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:11:24.227 [DEBUG] [Thread-121874] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:11:24.227 [DEBUG] [Thread-121874] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:11:24.227 [DEBUG] [Thread-121874] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:11:24.227 [DEBUG] [Thread-121874] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:11:24.227 [DEBUG] [Thread-121874] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:11:24.227 [DEBUG] [Thread-121874] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:11:24.227 [DEBUG] [Thread-121874] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:11:24.227 [DEBUG] [Thread-121874] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:11:24.227 [DEBUG] [Thread-121874] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:11:24.227 [DEBUG] [Thread-121874] [transport.py] [_log()] client lang: <none>
2025-11-03T20:11:24.228 [DEBUG] [Thread-121874] [transport.py] [_log()] server lang: <none>
2025-11-03T20:11:24.228 [DEBUG] [Thread-121874] [transport.py] [_log()] kex follows: False
2025-11-03T20:11:24.228 [DEBUG] [Thread-121874] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:11:24.228 [DEBUG] [Thread-121874] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:11:24.229 [DEBUG] [Thread-121874] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:11:24.229 [DEBUG] [Thread-121874] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:11:24.229 [DEBUG] [Thread-121874] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:11:24.229 [DEBUG] [Thread-121874] [transport.py] [_log()] Compression: none
2025-11-03T20:11:24.229 [DEBUG] [Thread-121874] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:11:24.266 [DEBUG] [Thread-121874] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:11:24.270 [DEBUG] [Thread-121874] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:11:24.272 [DEBUG] [Thread-121874] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:11:24.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:11:24.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:11:24.277 [DEBUG] [Thread-121874] [transport.py] [_log()] userauth is OK
2025-11-03T20:11:24.277 [DEBUG] [Thread-121874] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:11:24.277 [DEBUG] [Thread-121874] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:11:24.277 [DEBUG] [Thread-121874] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:11:24.277 [DEBUG] [Thread-121874] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:11:24.310 [INFO] [Thread-121874] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:11:24.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:11:24.955 [DEBUG] [Thread-121874] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:11:24.955 [DEBUG] [Thread-121874] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:11:24.956 [DEBUG] [Thread-121874] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:11:24.996 [DEBUG] [Thread-121874] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:11:24.996 [DEBUG] [Thread-121874] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:11:24.999 [DEBUG] [Thread-121874] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:11:25.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:11:25.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:11:25.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:11:25.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:11:25.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:11:25.022 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:11:25.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:11:25.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:11:25.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:11:25.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.757393 -999.00  +20.10  26.87     12   -9.50 1 1 1 1 1     0    0 25.35 -181.55 ZNESW 26.9 26.9 290.8 34.2 20.2 -28.9 20.1 -28.1 19.9 -27.8 20.1 -28.9
2025-11-03T20:11:25.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:11:25.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:11:25.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.757393
2025-11-03T20:11:25.037 [DEBUG] [Thread-121874] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:11:25.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:11:25.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:11:25.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:11:25.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:11:25.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:11:25.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:10:47', tmtdew=36.12, humidity=7.29, cloud=0.0, wind=22.88, temperature=20.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:10:48', seeing=1.39, atlas_timestamp='2025-11-03T18:10:38.755', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024250000000000327, 0.06125000000000114, 0.01025000000000098, 0.08149999999999835, 0.09600000000000009, 0.048250000000001236, -0.009999999999999787, 0.05325000000000202, -0.019999999999999574, 0.0649999999999995, 0.11224999999999952, 0.11950000000000038, 0.16799999999999926, -0.02624999999999922, -0.053000000000000824, -0.17300000000000004, -0.034750000000000725, 0.07649999999999935, 0.18799999999999883, 0.1242499999999982, 0.05999999999999872, 0.05574999999999797, -0.08374999999999844, -0.20025000000000048, -0.032000000000001805, 0.25099999999999945, 0.19375000000000142, 0.14100000000000001, 0.12100000000000044, 0.11200000000000188, 0.1330000000000009, -0.03999999999999915, -0.20674999999999955], zp_timestamp='2025-11-03T18:09:00')
2025-11-03T20:11:25.144 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:11:25.156 [DEBUG] [Thread-121877] [transport.py] [_log()] starting thread (client mode): 0x11762e60
2025-11-03T20:11:25.156 [DEBUG] [Thread-121877] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:11:25.170 [DEBUG] [Thread-121877] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:11:25.170 [INFO] [Thread-121877] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:11:25.179 [DEBUG] [Thread-121877] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:11:25.179 [DEBUG] [Thread-121877] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:11:25.179 [DEBUG] [Thread-121877] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:11:25.179 [DEBUG] [Thread-121877] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:11:25.179 [DEBUG] [Thread-121877] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:11:25.179 [DEBUG] [Thread-121877] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:11:25.179 [DEBUG] [Thread-121877] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:11:25.179 [DEBUG] [Thread-121877] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:11:25.179 [DEBUG] [Thread-121877] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:11:25.179 [DEBUG] [Thread-121877] [transport.py] [_log()] client lang: <none>
2025-11-03T20:11:25.179 [DEBUG] [Thread-121877] [transport.py] [_log()] server lang: <none>
2025-11-03T20:11:25.179 [DEBUG] [Thread-121877] [transport.py] [_log()] kex follows: False
2025-11-03T20:11:25.179 [DEBUG] [Thread-121877] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:11:25.179 [DEBUG] [Thread-121877] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:11:25.179 [DEBUG] [Thread-121877] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:11:25.179 [DEBUG] [Thread-121877] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:11:25.179 [DEBUG] [Thread-121877] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:11:25.179 [DEBUG] [Thread-121877] [transport.py] [_log()] Compression: none
2025-11-03T20:11:25.179 [DEBUG] [Thread-121877] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:11:25.234 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:11:25.236 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:11:25.237 [DEBUG] [Thread-121877] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:11:25.238 [DEBUG] [Thread-121877] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:11:25.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:11:25.238 [DEBUG] [Thread-121877] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:11:25.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:11:25.293 [DEBUG] [Thread-121877] [transport.py] [_log()] userauth is OK
2025-11-03T20:11:25.293 [DEBUG] [Thread-121877] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:11:25.293 [DEBUG] [Thread-121877] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:11:25.293 [DEBUG] [Thread-121877] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:11:25.293 [DEBUG] [Thread-121877] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:11:25.312 [INFO] [Thread-121877] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:11:25.312 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:11:25.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:11:26.141 [DEBUG] [Thread-121877] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:11:26.141 [DEBUG] [Thread-121877] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:11:26.192 [DEBUG] [Thread-121877] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:11:26.192 [DEBUG] [Thread-121877] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:11:26.205 [DEBUG] [Thread-121877] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:11:26.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:11:26.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:11:26.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:11:26.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:11:26.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:11:26.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:11:26.243 [DEBUG] [Thread-121877] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:11:27.227 [DEBUG] [Thread-121879 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:11:42.446 [DEBUG] [Thread-121880 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:11:56.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:11:56.273 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:11:56.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:11:57.723 [DEBUG] [Thread-121881 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:11:58.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 11, 21), 36.15, 7.28, 0.0, 20.61, 20.06, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:11:58.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:11:21
2025-11-03T20:11:58.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:11:58.615 [DEBUG] [Thread-121882] [transport.py] [_log()] starting thread (client mode): 0x1174e050
2025-11-03T20:11:58.616 [DEBUG] [Thread-121882] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:11:58.628 [DEBUG] [Thread-121882] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:11:58.628 [INFO] [Thread-121882] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:11:58.644 [DEBUG] [Thread-121882] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:11:58.644 [DEBUG] [Thread-121882] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:11:58.644 [DEBUG] [Thread-121882] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:11:58.644 [DEBUG] [Thread-121882] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:11:58.644 [DEBUG] [Thread-121882] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:11:58.644 [DEBUG] [Thread-121882] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:11:58.644 [DEBUG] [Thread-121882] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:11:58.644 [DEBUG] [Thread-121882] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:11:58.644 [DEBUG] [Thread-121882] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:11:58.644 [DEBUG] [Thread-121882] [transport.py] [_log()] client lang: <none>
2025-11-03T20:11:58.644 [DEBUG] [Thread-121882] [transport.py] [_log()] server lang: <none>
2025-11-03T20:11:58.644 [DEBUG] [Thread-121882] [transport.py] [_log()] kex follows: False
2025-11-03T20:11:58.644 [DEBUG] [Thread-121882] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:11:58.645 [DEBUG] [Thread-121882] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:11:58.645 [DEBUG] [Thread-121882] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:11:58.645 [DEBUG] [Thread-121882] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:11:58.645 [DEBUG] [Thread-121882] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:11:58.645 [DEBUG] [Thread-121882] [transport.py] [_log()] Compression: none
2025-11-03T20:11:58.645 [DEBUG] [Thread-121882] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:11:58.679 [DEBUG] [Thread-121882] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:11:58.683 [DEBUG] [Thread-121882] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:11:58.684 [DEBUG] [Thread-121882] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:11:58.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:11:58.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:11:58.688 [DEBUG] [Thread-121882] [transport.py] [_log()] userauth is OK
2025-11-03T20:11:58.689 [DEBUG] [Thread-121882] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:11:58.689 [DEBUG] [Thread-121882] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:11:58.689 [DEBUG] [Thread-121882] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:11:58.689 [DEBUG] [Thread-121882] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:11:58.719 [INFO] [Thread-121882] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:11:58.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:11:59.353 [DEBUG] [Thread-121882] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:11:59.353 [DEBUG] [Thread-121882] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:11:59.355 [DEBUG] [Thread-121882] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:11:59.394 [DEBUG] [Thread-121882] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:11:59.394 [DEBUG] [Thread-121882] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:11:59.396 [DEBUG] [Thread-121882] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:11:59.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:11:59.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:11:59.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:11:59.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:11:59.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:11:59.420 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:11:59.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:11:59.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:11:59.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:11:59.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.758088 -999.00  +20.10  23.21     12   -9.60 1 1 1 1 1     0    0 25.83 -166.40 ZNESW 23.2 23.2 304.2 30.8 20.2 -29.2 20.0 -28.2 19.8 -28.0 20.1 -28.9
2025-11-03T20:11:59.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:11:59.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:11:59.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.758088
2025-11-03T20:11:59.428 [DEBUG] [Thread-121882] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:11:59.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:11:59.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:11:59.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:11:59.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:11:59.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:11:59.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:11:21', tmtdew=36.15, humidity=7.28, cloud=0.0, wind=20.61, temperature=20.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:11:22', seeing=1.04, atlas_timestamp='2025-11-03T18:11:38.803', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024250000000000327, 0.06125000000000114, 0.01025000000000098, 0.08149999999999835, 0.09600000000000009, 0.048250000000001236, -0.009999999999999787, 0.05325000000000202, -0.019999999999999574, 0.0649999999999995, 0.11224999999999952, 0.11950000000000038, 0.16799999999999926, -0.02624999999999922, -0.053000000000000824, -0.17300000000000004, -0.034750000000000725, 0.07649999999999935, 0.18799999999999883, 0.1242499999999982, 0.05999999999999872, 0.05574999999999797, -0.08374999999999844, -0.20025000000000048, -0.032000000000001805, 0.25099999999999945, 0.19375000000000142, 0.14100000000000001, 0.12100000000000044, 0.11200000000000188, 0.1330000000000009, -0.03999999999999915, -0.20674999999999955], zp_timestamp='2025-11-03T18:09:00')
2025-11-03T20:11:59.535 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:11:59.548 [DEBUG] [Thread-121885] [transport.py] [_log()] starting thread (client mode): 0xed21840
2025-11-03T20:11:59.548 [DEBUG] [Thread-121885] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:11:59.563 [DEBUG] [Thread-121885] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:11:59.563 [INFO] [Thread-121885] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:11:59.570 [DEBUG] [Thread-121885] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:11:59.570 [DEBUG] [Thread-121885] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:11:59.570 [DEBUG] [Thread-121885] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:11:59.570 [DEBUG] [Thread-121885] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:11:59.570 [DEBUG] [Thread-121885] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:11:59.570 [DEBUG] [Thread-121885] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:11:59.570 [DEBUG] [Thread-121885] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:11:59.570 [DEBUG] [Thread-121885] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:11:59.570 [DEBUG] [Thread-121885] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:11:59.570 [DEBUG] [Thread-121885] [transport.py] [_log()] client lang: <none>
2025-11-03T20:11:59.570 [DEBUG] [Thread-121885] [transport.py] [_log()] server lang: <none>
2025-11-03T20:11:59.571 [DEBUG] [Thread-121885] [transport.py] [_log()] kex follows: False
2025-11-03T20:11:59.571 [DEBUG] [Thread-121885] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:11:59.571 [DEBUG] [Thread-121885] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:11:59.571 [DEBUG] [Thread-121885] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:11:59.571 [DEBUG] [Thread-121885] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:11:59.571 [DEBUG] [Thread-121885] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:11:59.571 [DEBUG] [Thread-121885] [transport.py] [_log()] Compression: none
2025-11-03T20:11:59.571 [DEBUG] [Thread-121885] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:11:59.611 [DEBUG] [Thread-121887 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:11:59.627 [DEBUG] [Thread-121885] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:11:59.628 [DEBUG] [Thread-121885] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:11:59.628 [DEBUG] [Thread-121885] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:11:59.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:11:59.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:11:59.688 [DEBUG] [Thread-121885] [transport.py] [_log()] userauth is OK
2025-11-03T20:11:59.689 [DEBUG] [Thread-121885] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:11:59.689 [DEBUG] [Thread-121885] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:11:59.689 [DEBUG] [Thread-121885] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:11:59.689 [DEBUG] [Thread-121885] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:11:59.706 [INFO] [Thread-121885] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:11:59.706 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:11:59.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:12:00.551 [DEBUG] [Thread-121885] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:12:00.551 [DEBUG] [Thread-121885] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:12:00.600 [DEBUG] [Thread-121885] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:12:00.600 [DEBUG] [Thread-121885] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:12:00.610 [DEBUG] [Thread-121885] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:12:00.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:12:00.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:12:00.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:12:00.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:12:00.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:12:00.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:12:00.661 [DEBUG] [Thread-121885] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:12:12.920 [DEBUG] [Thread-121888 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:12:25.462 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:12:25.485 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:12:28.251 [DEBUG] [Thread-121889 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:12:30.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:12:30.686 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:12:30.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:12:32.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 11, 55), 36.21, 7.28, 0.0, 23.01, 20.07, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:12:32.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:11:55
2025-11-03T20:12:32.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:12:32.741 [DEBUG] [Thread-121890] [transport.py] [_log()] starting thread (client mode): 0x1174cb20
2025-11-03T20:12:32.743 [DEBUG] [Thread-121890] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:12:32.750 [DEBUG] [Thread-121890] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:12:32.755 [INFO] [Thread-121890] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:12:32.809 [DEBUG] [Thread-121890] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:12:32.809 [DEBUG] [Thread-121890] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:12:32.809 [DEBUG] [Thread-121890] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:12:32.809 [DEBUG] [Thread-121890] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:12:32.809 [DEBUG] [Thread-121890] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:12:32.809 [DEBUG] [Thread-121890] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:12:32.809 [DEBUG] [Thread-121890] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:12:32.809 [DEBUG] [Thread-121890] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:12:32.809 [DEBUG] [Thread-121890] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:12:32.809 [DEBUG] [Thread-121890] [transport.py] [_log()] client lang: <none>
2025-11-03T20:12:32.809 [DEBUG] [Thread-121890] [transport.py] [_log()] server lang: <none>
2025-11-03T20:12:32.809 [DEBUG] [Thread-121890] [transport.py] [_log()] kex follows: False
2025-11-03T20:12:32.809 [DEBUG] [Thread-121890] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:12:32.810 [DEBUG] [Thread-121890] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:12:32.810 [DEBUG] [Thread-121890] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:12:32.811 [DEBUG] [Thread-121890] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:12:32.811 [DEBUG] [Thread-121890] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:12:32.811 [DEBUG] [Thread-121890] [transport.py] [_log()] Compression: none
2025-11-03T20:12:32.811 [DEBUG] [Thread-121890] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:12:32.847 [DEBUG] [Thread-121890] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:12:32.851 [DEBUG] [Thread-121890] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:12:32.853 [DEBUG] [Thread-121890] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:12:32.854 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:12:32.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:12:32.857 [DEBUG] [Thread-121890] [transport.py] [_log()] userauth is OK
2025-11-03T20:12:32.858 [DEBUG] [Thread-121890] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:12:32.858 [DEBUG] [Thread-121890] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:12:32.858 [DEBUG] [Thread-121890] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:12:32.858 [DEBUG] [Thread-121890] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:12:32.889 [INFO] [Thread-121890] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:12:32.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:12:33.563 [DEBUG] [Thread-121890] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:12:33.563 [DEBUG] [Thread-121890] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:12:33.564 [DEBUG] [Thread-121890] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:12:33.605 [DEBUG] [Thread-121890] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:12:33.605 [DEBUG] [Thread-121890] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:12:33.607 [DEBUG] [Thread-121890] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:12:33.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:12:33.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:12:33.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:12:33.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:12:33.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:12:33.641 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:12:33.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:12:33.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:12:33.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:12:33.643 [DEBUG] [Thread-121890] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:12:33.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.758434 -999.00  +20.10  24.92     12   -9.60 1 1 1 1 1     0    0 25.78 -151.80 ZNESW 24.9 24.9 305.7 32.2 20.1 -29.1 20.1 -28.1 19.9 -27.8 20.1 -29.1
2025-11-03T20:12:33.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:12:33.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:12:33.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.758434
2025-11-03T20:12:33.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:12:33.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:12:33.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:12:33.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:12:33.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:12:33.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:11:55', tmtdew=36.21, humidity=7.28, cloud=0.0, wind=23.01, temperature=20.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:12:30', seeing=1.17, atlas_timestamp='2025-11-03T18:12:08.698', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024250000000000327, 0.06125000000000114, 0.01025000000000098, 0.08149999999999835, 0.09600000000000009, 0.048250000000001236, -0.009999999999999787, 0.05325000000000202, -0.019999999999999574, 0.0649999999999995, 0.11224999999999952, 0.11950000000000038, 0.16799999999999926, -0.02624999999999922, -0.053000000000000824, -0.17300000000000004, -0.034750000000000725, 0.07649999999999935, 0.18799999999999883, 0.1242499999999982, 0.05999999999999872, 0.05574999999999797, -0.08374999999999844, -0.20025000000000048, -0.032000000000001805, 0.25099999999999945, 0.19375000000000142, 0.14100000000000001, 0.12100000000000044, 0.11200000000000188, 0.1330000000000009, -0.03999999999999915, -0.20674999999999955], zp_timestamp='2025-11-03T18:09:00')
2025-11-03T20:12:33.756 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:12:33.769 [DEBUG] [Thread-121893] [transport.py] [_log()] starting thread (client mode): 0x11760a90
2025-11-03T20:12:33.769 [DEBUG] [Thread-121893] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:12:33.789 [DEBUG] [Thread-121893] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:12:33.789 [INFO] [Thread-121893] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:12:33.800 [DEBUG] [Thread-121893] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:12:33.800 [DEBUG] [Thread-121893] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:12:33.800 [DEBUG] [Thread-121893] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:12:33.800 [DEBUG] [Thread-121893] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:12:33.800 [DEBUG] [Thread-121893] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:12:33.800 [DEBUG] [Thread-121893] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:12:33.800 [DEBUG] [Thread-121893] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:12:33.800 [DEBUG] [Thread-121893] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:12:33.800 [DEBUG] [Thread-121893] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:12:33.800 [DEBUG] [Thread-121893] [transport.py] [_log()] client lang: <none>
2025-11-03T20:12:33.800 [DEBUG] [Thread-121893] [transport.py] [_log()] server lang: <none>
2025-11-03T20:12:33.800 [DEBUG] [Thread-121893] [transport.py] [_log()] kex follows: False
2025-11-03T20:12:33.800 [DEBUG] [Thread-121893] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:12:33.800 [DEBUG] [Thread-121893] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:12:33.800 [DEBUG] [Thread-121893] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:12:33.800 [DEBUG] [Thread-121893] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:12:33.800 [DEBUG] [Thread-121893] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:12:33.800 [DEBUG] [Thread-121893] [transport.py] [_log()] Compression: none
2025-11-03T20:12:33.800 [DEBUG] [Thread-121893] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:12:33.857 [DEBUG] [Thread-121893] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:12:33.857 [DEBUG] [Thread-121893] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:12:33.857 [DEBUG] [Thread-121893] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:12:33.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:12:33.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:12:33.916 [DEBUG] [Thread-121893] [transport.py] [_log()] userauth is OK
2025-11-03T20:12:33.916 [DEBUG] [Thread-121893] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:12:33.916 [DEBUG] [Thread-121893] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:12:33.916 [DEBUG] [Thread-121893] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:12:33.916 [DEBUG] [Thread-121893] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:12:33.930 [INFO] [Thread-121893] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:12:33.930 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:12:33.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:12:34.787 [DEBUG] [Thread-121893] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:12:34.787 [DEBUG] [Thread-121893] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:12:34.835 [DEBUG] [Thread-121893] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:12:34.835 [DEBUG] [Thread-121893] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:12:34.844 [DEBUG] [Thread-121893] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:12:34.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:12:34.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:12:34.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:12:34.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:12:34.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:12:34.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:12:34.880 [DEBUG] [Thread-121893] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:12:43.404 [DEBUG] [Thread-121895 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:12:58.706 [DEBUG] [Thread-121896 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:13:00.083 [DEBUG] [Thread-121897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:13:04.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:13:04.906 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:13:04.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:13:06.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 12, 29), 36.18, 7.29, 0.0, 23.73, 20.07, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:13:06.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:12:29
2025-11-03T20:13:07.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:13:07.304 [DEBUG] [Thread-121898] [transport.py] [_log()] starting thread (client mode): 0xed34490
2025-11-03T20:13:07.306 [DEBUG] [Thread-121898] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:13:07.307 [DEBUG] [Thread-121898] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:13:07.307 [INFO] [Thread-121898] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:13:07.312 [DEBUG] [Thread-121898] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:13:07.312 [DEBUG] [Thread-121898] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:13:07.312 [DEBUG] [Thread-121898] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:13:07.312 [DEBUG] [Thread-121898] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:13:07.312 [DEBUG] [Thread-121898] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:13:07.312 [DEBUG] [Thread-121898] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:13:07.312 [DEBUG] [Thread-121898] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:13:07.312 [DEBUG] [Thread-121898] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:13:07.312 [DEBUG] [Thread-121898] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:13:07.312 [DEBUG] [Thread-121898] [transport.py] [_log()] client lang: <none>
2025-11-03T20:13:07.312 [DEBUG] [Thread-121898] [transport.py] [_log()] server lang: <none>
2025-11-03T20:13:07.312 [DEBUG] [Thread-121898] [transport.py] [_log()] kex follows: False
2025-11-03T20:13:07.312 [DEBUG] [Thread-121898] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:13:07.312 [DEBUG] [Thread-121898] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:13:07.313 [DEBUG] [Thread-121898] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:13:07.313 [DEBUG] [Thread-121898] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:13:07.313 [DEBUG] [Thread-121898] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:13:07.313 [DEBUG] [Thread-121898] [transport.py] [_log()] Compression: none
2025-11-03T20:13:07.313 [DEBUG] [Thread-121898] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:13:07.341 [DEBUG] [Thread-121898] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:13:07.344 [DEBUG] [Thread-121898] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:13:07.345 [DEBUG] [Thread-121898] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:13:07.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:13:07.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:13:07.348 [DEBUG] [Thread-121898] [transport.py] [_log()] userauth is OK
2025-11-03T20:13:07.348 [DEBUG] [Thread-121898] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:13:07.348 [DEBUG] [Thread-121898] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:13:07.348 [DEBUG] [Thread-121898] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:13:07.348 [DEBUG] [Thread-121898] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:13:07.366 [INFO] [Thread-121898] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:13:07.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:13:08.162 [DEBUG] [Thread-121898] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:13:08.162 [DEBUG] [Thread-121898] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:13:08.163 [DEBUG] [Thread-121898] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:13:08.203 [DEBUG] [Thread-121898] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:13:08.203 [DEBUG] [Thread-121898] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:13:08.205 [DEBUG] [Thread-121898] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:13:08.220 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:13:08.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:13:08.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:13:08.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:13:08.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:13:08.230 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:13:08.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:13:08.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:13:08.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:13:08.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.758782 -999.00  +20.10  21.92     12   -9.60 1 1 1 1 1     0    0 26.74 -146.53 ZNESW 21.9 21.9 303.8 32.0 20.1 -29.3 20.0 -28.2 19.8 -28.1 20.1 -28.8
2025-11-03T20:13:08.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:13:08.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:13:08.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.758782
2025-11-03T20:13:08.237 [DEBUG] [Thread-121898] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:13:08.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:13:08.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:13:08.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:13:08.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:13:08.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:13:08.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:12:29', tmtdew=36.18, humidity=7.29, cloud=0.0, wind=23.73, temperature=20.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:13:04', seeing=1.14, atlas_timestamp='2025-11-03T18:12:38.765', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024250000000000327, 0.06125000000000114, 0.01025000000000098, 0.08149999999999835, 0.09600000000000009, 0.048250000000001236, -0.009999999999999787, 0.05325000000000202, -0.019999999999999574, 0.0649999999999995, 0.11224999999999952, 0.11950000000000038, 0.16799999999999926, -0.02624999999999922, -0.053000000000000824, -0.17300000000000004, -0.034750000000000725, 0.07649999999999935, 0.18799999999999883, 0.1242499999999982, 0.05999999999999872, 0.05574999999999797, -0.08374999999999844, -0.20025000000000048, -0.032000000000001805, 0.25099999999999945, 0.19375000000000142, 0.14100000000000001, 0.12100000000000044, 0.11200000000000188, 0.1330000000000009, -0.03999999999999915, -0.20674999999999955], zp_timestamp='2025-11-03T18:09:00')
2025-11-03T20:13:08.351 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:13:08.367 [DEBUG] [Thread-121901] [transport.py] [_log()] starting thread (client mode): 0xed2e680
2025-11-03T20:13:08.367 [DEBUG] [Thread-121901] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:13:08.383 [DEBUG] [Thread-121901] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:13:08.383 [INFO] [Thread-121901] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:13:08.391 [DEBUG] [Thread-121901] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:13:08.391 [DEBUG] [Thread-121901] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:13:08.391 [DEBUG] [Thread-121901] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:13:08.391 [DEBUG] [Thread-121901] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:13:08.391 [DEBUG] [Thread-121901] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:13:08.391 [DEBUG] [Thread-121901] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:13:08.391 [DEBUG] [Thread-121901] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:13:08.391 [DEBUG] [Thread-121901] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:13:08.391 [DEBUG] [Thread-121901] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:13:08.391 [DEBUG] [Thread-121901] [transport.py] [_log()] client lang: <none>
2025-11-03T20:13:08.391 [DEBUG] [Thread-121901] [transport.py] [_log()] server lang: <none>
2025-11-03T20:13:08.391 [DEBUG] [Thread-121901] [transport.py] [_log()] kex follows: False
2025-11-03T20:13:08.391 [DEBUG] [Thread-121901] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:13:08.391 [DEBUG] [Thread-121901] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:13:08.391 [DEBUG] [Thread-121901] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:13:08.391 [DEBUG] [Thread-121901] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:13:08.391 [DEBUG] [Thread-121901] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:13:08.391 [DEBUG] [Thread-121901] [transport.py] [_log()] Compression: none
2025-11-03T20:13:08.391 [DEBUG] [Thread-121901] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:13:08.446 [DEBUG] [Thread-121901] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:13:08.446 [DEBUG] [Thread-121901] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:13:08.446 [DEBUG] [Thread-121901] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:13:08.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:13:08.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:13:08.503 [DEBUG] [Thread-121901] [transport.py] [_log()] userauth is OK
2025-11-03T20:13:08.503 [DEBUG] [Thread-121901] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:13:08.503 [DEBUG] [Thread-121901] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:13:08.503 [DEBUG] [Thread-121901] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:13:08.503 [DEBUG] [Thread-121901] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:13:08.517 [INFO] [Thread-121901] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:13:08.517 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:13:08.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:13:09.326 [DEBUG] [Thread-121901] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:13:09.326 [DEBUG] [Thread-121901] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:13:09.374 [DEBUG] [Thread-121901] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:13:09.374 [DEBUG] [Thread-121901] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:13:09.383 [DEBUG] [Thread-121901] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:13:09.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:13:09.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:13:09.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:13:09.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:13:09.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:13:09.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:13:09.419 [DEBUG] [Thread-121901] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:13:13.835 [DEBUG] [Thread-121903 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:13:25.688 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:13:25.690 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:13:29.111 [DEBUG] [Thread-121904 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:13:39.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:13:39.445 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:13:39.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:13:41.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 13, 3), 36.25, 7.24, 0.0, 22.78, 20.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:13:41.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:13:03
2025-11-03T20:13:41.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:13:41.534 [DEBUG] [Thread-121905] [transport.py] [_log()] starting thread (client mode): 0x11760ee0
2025-11-03T20:13:41.536 [DEBUG] [Thread-121905] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:13:41.538 [DEBUG] [Thread-121905] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:13:41.538 [INFO] [Thread-121905] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:13:41.547 [DEBUG] [Thread-121905] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:13:41.548 [DEBUG] [Thread-121905] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:13:41.548 [DEBUG] [Thread-121905] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:13:41.548 [DEBUG] [Thread-121905] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:13:41.548 [DEBUG] [Thread-121905] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:13:41.548 [DEBUG] [Thread-121905] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:13:41.548 [DEBUG] [Thread-121905] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:13:41.548 [DEBUG] [Thread-121905] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:13:41.548 [DEBUG] [Thread-121905] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:13:41.548 [DEBUG] [Thread-121905] [transport.py] [_log()] client lang: <none>
2025-11-03T20:13:41.548 [DEBUG] [Thread-121905] [transport.py] [_log()] server lang: <none>
2025-11-03T20:13:41.548 [DEBUG] [Thread-121905] [transport.py] [_log()] kex follows: False
2025-11-03T20:13:41.549 [DEBUG] [Thread-121905] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:13:41.549 [DEBUG] [Thread-121905] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:13:41.549 [DEBUG] [Thread-121905] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:13:41.549 [DEBUG] [Thread-121905] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:13:41.549 [DEBUG] [Thread-121905] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:13:41.549 [DEBUG] [Thread-121905] [transport.py] [_log()] Compression: none
2025-11-03T20:13:41.549 [DEBUG] [Thread-121905] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:13:41.597 [DEBUG] [Thread-121905] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:13:41.603 [DEBUG] [Thread-121905] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:13:41.605 [DEBUG] [Thread-121905] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:13:41.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:13:41.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:13:41.610 [DEBUG] [Thread-121905] [transport.py] [_log()] userauth is OK
2025-11-03T20:13:41.610 [DEBUG] [Thread-121905] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:13:41.610 [DEBUG] [Thread-121905] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:13:41.610 [DEBUG] [Thread-121905] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:13:41.610 [DEBUG] [Thread-121905] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:13:41.645 [INFO] [Thread-121905] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:13:41.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:13:42.297 [DEBUG] [Thread-121905] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:13:42.297 [DEBUG] [Thread-121905] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:13:42.299 [DEBUG] [Thread-121905] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:13:42.340 [DEBUG] [Thread-121905] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:13:42.340 [DEBUG] [Thread-121905] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:13:42.347 [DEBUG] [Thread-121905] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:13:42.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:13:42.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:13:42.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:13:42.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:13:42.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:13:42.369 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:13:42.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:13:42.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:13:42.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:13:42.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.759129 -999.00  +20.10  27.99     12   -9.50 1 1 1 1 1     0    0 26.98 -127.10 ZNESW 28.0 28.0 303.2 32.1 20.1 -29.1 20.0 -28.1 19.9 -27.8 -999.0 -999.0
2025-11-03T20:13:42.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:13:42.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:13:42.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.759129
2025-11-03T20:13:42.378 [DEBUG] [Thread-121905] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:13:42.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:13:42.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:13:42.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:13:42.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:13:42.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:13:42.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:13:03', tmtdew=36.25, humidity=7.24, cloud=0.0, wind=22.78, temperature=20.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:13:39', seeing=1.14, atlas_timestamp='2025-11-03T18:13:08.746', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024250000000000327, 0.06125000000000114, 0.01025000000000098, 0.08149999999999835, 0.09600000000000009, 0.048250000000001236, -0.009999999999999787, 0.05325000000000202, -0.019999999999999574, 0.0649999999999995, 0.11224999999999952, 0.11950000000000038, 0.16799999999999926, -0.02624999999999922, -0.053000000000000824, -0.17300000000000004, -0.034750000000000725, 0.07649999999999935, 0.18799999999999883, 0.1242499999999982, 0.05999999999999872, 0.05574999999999797, -0.08374999999999844, -0.20025000000000048, -0.032000000000001805, 0.25099999999999945, 0.19375000000000142, 0.14100000000000001, 0.12100000000000044, 0.11200000000000188, 0.1330000000000009, -0.03999999999999915, -0.20674999999999955], zp_timestamp='2025-11-03T18:12:00')
2025-11-03T20:13:42.482 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:13:42.494 [DEBUG] [Thread-121908] [transport.py] [_log()] starting thread (client mode): 0x11760b80
2025-11-03T20:13:42.494 [DEBUG] [Thread-121908] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:13:42.510 [DEBUG] [Thread-121908] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:13:42.510 [INFO] [Thread-121908] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:13:42.520 [DEBUG] [Thread-121908] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:13:42.520 [DEBUG] [Thread-121908] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:13:42.520 [DEBUG] [Thread-121908] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:13:42.520 [DEBUG] [Thread-121908] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:13:42.520 [DEBUG] [Thread-121908] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:13:42.520 [DEBUG] [Thread-121908] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:13:42.520 [DEBUG] [Thread-121908] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:13:42.520 [DEBUG] [Thread-121908] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:13:42.520 [DEBUG] [Thread-121908] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:13:42.520 [DEBUG] [Thread-121908] [transport.py] [_log()] client lang: <none>
2025-11-03T20:13:42.520 [DEBUG] [Thread-121908] [transport.py] [_log()] server lang: <none>
2025-11-03T20:13:42.520 [DEBUG] [Thread-121908] [transport.py] [_log()] kex follows: False
2025-11-03T20:13:42.520 [DEBUG] [Thread-121908] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:13:42.520 [DEBUG] [Thread-121908] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:13:42.520 [DEBUG] [Thread-121908] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:13:42.520 [DEBUG] [Thread-121908] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:13:42.521 [DEBUG] [Thread-121908] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:13:42.521 [DEBUG] [Thread-121908] [transport.py] [_log()] Compression: none
2025-11-03T20:13:42.521 [DEBUG] [Thread-121908] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:13:42.579 [DEBUG] [Thread-121908] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:13:42.579 [DEBUG] [Thread-121908] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:13:42.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:13:42.579 [DEBUG] [Thread-121908] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:13:42.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:13:42.636 [DEBUG] [Thread-121908] [transport.py] [_log()] userauth is OK
2025-11-03T20:13:42.636 [DEBUG] [Thread-121908] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:13:42.636 [DEBUG] [Thread-121908] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:13:42.636 [DEBUG] [Thread-121908] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:13:42.636 [DEBUG] [Thread-121908] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:13:42.650 [INFO] [Thread-121908] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:13:42.650 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:13:42.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:13:43.507 [DEBUG] [Thread-121908] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:13:43.507 [DEBUG] [Thread-121908] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:13:43.558 [DEBUG] [Thread-121908] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:13:43.558 [DEBUG] [Thread-121908] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:13:43.567 [DEBUG] [Thread-121908] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:13:43.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:13:43.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:13:43.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:13:43.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:13:43.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:13:43.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:13:43.604 [DEBUG] [Thread-121908] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:13:44.246 [DEBUG] [Thread-121910 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:13:59.505 [DEBUG] [Thread-121911 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:14:00.713 [DEBUG] [Thread-121912 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:14:13.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:14:13.652 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:14:13.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:14:14.655 [DEBUG] [Thread-121913 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:14:15.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 13, 38), 36.17, 7.26, 0.0, 20.91, 20.06, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:14:15.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:13:38
2025-11-03T20:14:15.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:14:15.757 [DEBUG] [Thread-121914] [transport.py] [_log()] starting thread (client mode): 0xed10340
2025-11-03T20:14:15.758 [DEBUG] [Thread-121914] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:14:15.765 [DEBUG] [Thread-121914] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:14:15.769 [INFO] [Thread-121914] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:14:15.777 [DEBUG] [Thread-121914] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:14:15.777 [DEBUG] [Thread-121914] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:14:15.777 [DEBUG] [Thread-121914] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:14:15.777 [DEBUG] [Thread-121914] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:14:15.777 [DEBUG] [Thread-121914] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:14:15.777 [DEBUG] [Thread-121914] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:14:15.777 [DEBUG] [Thread-121914] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:14:15.777 [DEBUG] [Thread-121914] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:14:15.777 [DEBUG] [Thread-121914] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:14:15.777 [DEBUG] [Thread-121914] [transport.py] [_log()] client lang: <none>
2025-11-03T20:14:15.777 [DEBUG] [Thread-121914] [transport.py] [_log()] server lang: <none>
2025-11-03T20:14:15.777 [DEBUG] [Thread-121914] [transport.py] [_log()] kex follows: False
2025-11-03T20:14:15.777 [DEBUG] [Thread-121914] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:14:15.778 [DEBUG] [Thread-121914] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:14:15.778 [DEBUG] [Thread-121914] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:14:15.778 [DEBUG] [Thread-121914] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:14:15.778 [DEBUG] [Thread-121914] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:14:15.778 [DEBUG] [Thread-121914] [transport.py] [_log()] Compression: none
2025-11-03T20:14:15.778 [DEBUG] [Thread-121914] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:14:15.813 [DEBUG] [Thread-121914] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:14:15.819 [DEBUG] [Thread-121914] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:14:15.820 [DEBUG] [Thread-121914] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:14:15.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:14:15.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:14:15.825 [DEBUG] [Thread-121914] [transport.py] [_log()] userauth is OK
2025-11-03T20:14:15.825 [DEBUG] [Thread-121914] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:14:15.825 [DEBUG] [Thread-121914] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:14:15.825 [DEBUG] [Thread-121914] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:14:15.825 [DEBUG] [Thread-121914] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:14:15.855 [INFO] [Thread-121914] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:14:15.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:14:16.514 [DEBUG] [Thread-121914] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:14:16.514 [DEBUG] [Thread-121914] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:14:16.515 [DEBUG] [Thread-121914] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:14:16.554 [DEBUG] [Thread-121914] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:14:16.554 [DEBUG] [Thread-121914] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:14:16.557 [DEBUG] [Thread-121914] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:14:16.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:14:16.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:14:16.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:14:16.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:14:16.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:14:16.580 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:14:16.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:14:16.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:14:16.582 [DEBUG] [Thread-121914] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:14:16.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:14:16.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.759476 -999.00  +20.00  24.09     12   -9.50 1 1 1 1 1     0    0 27.09 -125.90 ZNESW 24.1 24.1 309.6 27.7 20.1 -29.3 20.0 -28.3 19.8 -28.2 20.1 -29.0
2025-11-03T20:14:16.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:14:16.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:14:16.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.759476
2025-11-03T20:14:16.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:14:16.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:14:16.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:14:16.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:14:16.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:14:16.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:13:38', tmtdew=36.17, humidity=7.26, cloud=0.0, wind=20.91, temperature=20.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:14:13', seeing=0.96, atlas_timestamp='2025-11-03T18:13:38.726', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024250000000000327, 0.06125000000000114, 0.01025000000000098, 0.08149999999999835, 0.09600000000000009, 0.048250000000001236, -0.009999999999999787, 0.05325000000000202, -0.019999999999999574, 0.0649999999999995, 0.11224999999999952, 0.11950000000000038, 0.16799999999999926, -0.02624999999999922, -0.053000000000000824, -0.17300000000000004, -0.034750000000000725, 0.07649999999999935, 0.18799999999999883, 0.1242499999999982, 0.05999999999999872, 0.05574999999999797, -0.08374999999999844, -0.20025000000000048, -0.032000000000001805, 0.25099999999999945, 0.19375000000000142, 0.14100000000000001, 0.12100000000000044, 0.11200000000000188, 0.1330000000000009, -0.03999999999999915, -0.20674999999999955], zp_timestamp='2025-11-03T18:12:00')
2025-11-03T20:14:16.679 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:14:16.691 [DEBUG] [Thread-121917] [transport.py] [_log()] starting thread (client mode): 0x1174f6a0
2025-11-03T20:14:16.691 [DEBUG] [Thread-121917] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:14:16.706 [DEBUG] [Thread-121917] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:14:16.706 [INFO] [Thread-121917] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:14:16.713 [DEBUG] [Thread-121917] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:14:16.714 [DEBUG] [Thread-121917] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:14:16.714 [DEBUG] [Thread-121917] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:14:16.714 [DEBUG] [Thread-121917] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:14:16.714 [DEBUG] [Thread-121917] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:14:16.714 [DEBUG] [Thread-121917] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:14:16.714 [DEBUG] [Thread-121917] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:14:16.714 [DEBUG] [Thread-121917] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:14:16.714 [DEBUG] [Thread-121917] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:14:16.714 [DEBUG] [Thread-121917] [transport.py] [_log()] client lang: <none>
2025-11-03T20:14:16.714 [DEBUG] [Thread-121917] [transport.py] [_log()] server lang: <none>
2025-11-03T20:14:16.714 [DEBUG] [Thread-121917] [transport.py] [_log()] kex follows: False
2025-11-03T20:14:16.714 [DEBUG] [Thread-121917] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:14:16.714 [DEBUG] [Thread-121917] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:14:16.714 [DEBUG] [Thread-121917] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:14:16.714 [DEBUG] [Thread-121917] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:14:16.714 [DEBUG] [Thread-121917] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:14:16.714 [DEBUG] [Thread-121917] [transport.py] [_log()] Compression: none
2025-11-03T20:14:16.714 [DEBUG] [Thread-121917] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:14:16.771 [DEBUG] [Thread-121917] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:14:16.771 [DEBUG] [Thread-121917] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:14:16.771 [DEBUG] [Thread-121917] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:14:16.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:14:16.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:14:16.827 [DEBUG] [Thread-121917] [transport.py] [_log()] userauth is OK
2025-11-03T20:14:16.827 [DEBUG] [Thread-121917] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:14:16.827 [DEBUG] [Thread-121917] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:14:16.827 [DEBUG] [Thread-121917] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:14:16.827 [DEBUG] [Thread-121917] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:14:16.843 [INFO] [Thread-121917] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:14:16.843 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:14:16.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:14:17.649 [DEBUG] [Thread-121917] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:14:17.650 [DEBUG] [Thread-121917] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:14:17.697 [DEBUG] [Thread-121917] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:14:17.697 [DEBUG] [Thread-121917] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:14:17.705 [DEBUG] [Thread-121917] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:14:17.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:14:17.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:14:17.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:14:17.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:14:17.731 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:14:17.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:14:17.739 [DEBUG] [Thread-121917] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:14:25.920 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:14:25.944 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:14:29.880 [DEBUG] [Thread-121919 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:14:45.129 [DEBUG] [Thread-121920 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:14:47.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:14:47.764 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:14:47.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:14:49.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 14, 12), 36.07, 7.33, 0.0, 21.14, 20.09, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:14:49.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:14:12
2025-11-03T20:14:49.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:14:50.082 [DEBUG] [Thread-121921] [transport.py] [_log()] starting thread (client mode): 0x141d95a0
2025-11-03T20:14:50.084 [DEBUG] [Thread-121921] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:14:50.085 [DEBUG] [Thread-121921] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:14:50.085 [INFO] [Thread-121921] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:14:50.093 [DEBUG] [Thread-121921] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:14:50.093 [DEBUG] [Thread-121921] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:14:50.093 [DEBUG] [Thread-121921] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:14:50.093 [DEBUG] [Thread-121921] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:14:50.093 [DEBUG] [Thread-121921] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:14:50.093 [DEBUG] [Thread-121921] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:14:50.093 [DEBUG] [Thread-121921] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:14:50.093 [DEBUG] [Thread-121921] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:14:50.093 [DEBUG] [Thread-121921] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:14:50.093 [DEBUG] [Thread-121921] [transport.py] [_log()] client lang: <none>
2025-11-03T20:14:50.093 [DEBUG] [Thread-121921] [transport.py] [_log()] server lang: <none>
2025-11-03T20:14:50.093 [DEBUG] [Thread-121921] [transport.py] [_log()] kex follows: False
2025-11-03T20:14:50.093 [DEBUG] [Thread-121921] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:14:50.094 [DEBUG] [Thread-121921] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:14:50.094 [DEBUG] [Thread-121921] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:14:50.094 [DEBUG] [Thread-121921] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:14:50.094 [DEBUG] [Thread-121921] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:14:50.094 [DEBUG] [Thread-121921] [transport.py] [_log()] Compression: none
2025-11-03T20:14:50.094 [DEBUG] [Thread-121921] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:14:50.143 [DEBUG] [Thread-121921] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:14:50.180 [DEBUG] [Thread-121921] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:14:50.182 [DEBUG] [Thread-121921] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:14:50.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:14:50.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:14:50.187 [DEBUG] [Thread-121921] [transport.py] [_log()] userauth is OK
2025-11-03T20:14:50.188 [DEBUG] [Thread-121921] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:14:50.188 [DEBUG] [Thread-121921] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:14:50.188 [DEBUG] [Thread-121921] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:14:50.188 [DEBUG] [Thread-121921] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:14:50.219 [INFO] [Thread-121921] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:14:50.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:14:50.868 [DEBUG] [Thread-121921] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:14:50.868 [DEBUG] [Thread-121921] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:14:50.869 [DEBUG] [Thread-121921] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:14:50.908 [DEBUG] [Thread-121921] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:14:50.909 [DEBUG] [Thread-121921] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:14:50.911 [DEBUG] [Thread-121921] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:14:50.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:14:50.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:14:50.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:14:50.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:14:50.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:14:50.934 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:14:50.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:14:50.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:14:50.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:14:50.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.759823 -999.00  +20.00  25.44     12   -9.60 1 1 1 1 1     0    0 27.10 -126.21 ZNESW 25.4 25.4 306.2 32.3 20.1 -29.3 20.0 -28.2 19.8 -28.1 20.0 -28.8
2025-11-03T20:14:50.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:14:50.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:14:50.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.759823
2025-11-03T20:14:50.942 [DEBUG] [Thread-121921] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:14:50.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:14:50.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:14:50.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:14:50.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:14:50.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:14:50.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:14:12', tmtdew=36.07, humidity=7.33, cloud=0.0, wind=21.14, temperature=20.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:14:47', seeing=1.06, atlas_timestamp='2025-11-03T18:14:08.707', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024250000000000327, 0.06125000000000114, 0.01025000000000098, 0.08149999999999835, 0.09600000000000009, 0.048250000000001236, -0.009999999999999787, 0.05325000000000202, -0.019999999999999574, 0.0649999999999995, 0.11224999999999952, 0.11950000000000038, 0.16799999999999926, -0.02624999999999922, -0.053000000000000824, -0.17300000000000004, -0.034750000000000725, 0.07649999999999935, 0.18799999999999883, 0.1242499999999982, 0.05999999999999872, 0.05574999999999797, -0.08374999999999844, -0.20025000000000048, -0.032000000000001805, 0.25099999999999945, 0.19375000000000142, 0.14100000000000001, 0.12100000000000044, 0.11200000000000188, 0.1330000000000009, -0.03999999999999915, -0.20674999999999955], zp_timestamp='2025-11-03T18:12:00')
2025-11-03T20:14:51.045 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:14:51.058 [DEBUG] [Thread-121924] [transport.py] [_log()] starting thread (client mode): 0xed89660
2025-11-03T20:14:51.058 [DEBUG] [Thread-121924] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:14:51.073 [DEBUG] [Thread-121924] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:14:51.073 [INFO] [Thread-121924] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:14:51.080 [DEBUG] [Thread-121924] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:14:51.081 [DEBUG] [Thread-121924] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:14:51.081 [DEBUG] [Thread-121924] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:14:51.081 [DEBUG] [Thread-121924] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:14:51.081 [DEBUG] [Thread-121924] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:14:51.081 [DEBUG] [Thread-121924] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:14:51.081 [DEBUG] [Thread-121924] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:14:51.081 [DEBUG] [Thread-121924] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:14:51.081 [DEBUG] [Thread-121924] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:14:51.081 [DEBUG] [Thread-121924] [transport.py] [_log()] client lang: <none>
2025-11-03T20:14:51.081 [DEBUG] [Thread-121924] [transport.py] [_log()] server lang: <none>
2025-11-03T20:14:51.081 [DEBUG] [Thread-121924] [transport.py] [_log()] kex follows: False
2025-11-03T20:14:51.081 [DEBUG] [Thread-121924] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:14:51.081 [DEBUG] [Thread-121924] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:14:51.081 [DEBUG] [Thread-121924] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:14:51.081 [DEBUG] [Thread-121924] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:14:51.081 [DEBUG] [Thread-121924] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:14:51.081 [DEBUG] [Thread-121924] [transport.py] [_log()] Compression: none
2025-11-03T20:14:51.081 [DEBUG] [Thread-121924] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:14:51.139 [DEBUG] [Thread-121924] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:14:51.140 [DEBUG] [Thread-121924] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:14:51.140 [DEBUG] [Thread-121924] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:14:51.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:14:51.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:14:51.194 [DEBUG] [Thread-121924] [transport.py] [_log()] userauth is OK
2025-11-03T20:14:51.195 [DEBUG] [Thread-121924] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:14:51.195 [DEBUG] [Thread-121924] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:14:51.195 [DEBUG] [Thread-121924] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:14:51.195 [DEBUG] [Thread-121924] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:14:51.210 [INFO] [Thread-121924] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:14:51.210 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:14:51.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:14:52.057 [DEBUG] [Thread-121924] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:14:52.057 [DEBUG] [Thread-121924] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:14:52.104 [DEBUG] [Thread-121924] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:14:52.104 [DEBUG] [Thread-121924] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:14:52.112 [DEBUG] [Thread-121924] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:14:52.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:14:52.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:14:52.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:14:52.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:14:52.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:14:52.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:14:52.146 [DEBUG] [Thread-121924] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:15:00.323 [DEBUG] [Thread-121926 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:15:01.376 [DEBUG] [Thread-121927 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:15:15.620 [DEBUG] [Thread-121928 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:15:22.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:15:22.175 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:15:22.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:15:23.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 14, 46), 36.06, 7.33, 0.0, 22.27, 19.96, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:15:23.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:14:46
2025-11-03T20:15:23.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:15:24.175 [DEBUG] [Thread-121929] [transport.py] [_log()] starting thread (client mode): 0x1174dae0
2025-11-03T20:15:24.177 [DEBUG] [Thread-121929] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:15:24.177 [DEBUG] [Thread-121929] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:15:24.178 [INFO] [Thread-121929] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:15:24.186 [DEBUG] [Thread-121929] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:15:24.186 [DEBUG] [Thread-121929] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:15:24.186 [DEBUG] [Thread-121929] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:15:24.186 [DEBUG] [Thread-121929] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:15:24.186 [DEBUG] [Thread-121929] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:15:24.186 [DEBUG] [Thread-121929] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:15:24.186 [DEBUG] [Thread-121929] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:15:24.186 [DEBUG] [Thread-121929] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:15:24.186 [DEBUG] [Thread-121929] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:15:24.186 [DEBUG] [Thread-121929] [transport.py] [_log()] client lang: <none>
2025-11-03T20:15:24.186 [DEBUG] [Thread-121929] [transport.py] [_log()] server lang: <none>
2025-11-03T20:15:24.186 [DEBUG] [Thread-121929] [transport.py] [_log()] kex follows: False
2025-11-03T20:15:24.186 [DEBUG] [Thread-121929] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:15:24.187 [DEBUG] [Thread-121929] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:15:24.187 [DEBUG] [Thread-121929] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:15:24.187 [DEBUG] [Thread-121929] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:15:24.187 [DEBUG] [Thread-121929] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:15:24.187 [DEBUG] [Thread-121929] [transport.py] [_log()] Compression: none
2025-11-03T20:15:24.187 [DEBUG] [Thread-121929] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:15:24.230 [DEBUG] [Thread-121929] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:15:24.236 [DEBUG] [Thread-121929] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:15:24.237 [DEBUG] [Thread-121929] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:15:24.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:15:24.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:15:24.242 [DEBUG] [Thread-121929] [transport.py] [_log()] userauth is OK
2025-11-03T20:15:24.242 [DEBUG] [Thread-121929] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:15:24.242 [DEBUG] [Thread-121929] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:15:24.242 [DEBUG] [Thread-121929] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:15:24.242 [DEBUG] [Thread-121929] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:15:24.264 [INFO] [Thread-121929] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:15:24.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:15:24.909 [DEBUG] [Thread-121929] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:15:24.909 [DEBUG] [Thread-121929] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:15:24.911 [DEBUG] [Thread-121929] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:15:24.951 [DEBUG] [Thread-121929] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:15:24.951 [DEBUG] [Thread-121929] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:15:24.953 [DEBUG] [Thread-121929] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:15:24.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:15:24.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:15:24.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:15:24.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:15:24.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:15:24.975 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:15:24.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:15:24.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:15:24.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:15:24.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.760517 -999.00  +19.90  18.06     12   -9.60 1 1 1 1 1     0    0 26.52 -119.34 ZNESW 20.8 18.1 306.6 28.9 20.1 -29.2 20.0 -28.1 19.8 -28.0 19.9 -29.0
2025-11-03T20:15:24.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:15:24.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:15:24.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.760517
2025-11-03T20:15:24.988 [DEBUG] [Thread-121929] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:15:24.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:15:25.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:15:25.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:15:25.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:15:25.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:15:25.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:14:46', tmtdew=36.06, humidity=7.33, cloud=0.0, wind=22.27, temperature=19.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:15:21', seeing=0.98, atlas_timestamp='2025-11-03T18:15:08.669', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024250000000000327, 0.06125000000000114, 0.01025000000000098, 0.08149999999999835, 0.09600000000000009, 0.048250000000001236, -0.009999999999999787, 0.05325000000000202, -0.019999999999999574, 0.0649999999999995, 0.11224999999999952, 0.11950000000000038, 0.16799999999999926, -0.02624999999999922, -0.053000000000000824, -0.17300000000000004, -0.034750000000000725, 0.07649999999999935, 0.18799999999999883, 0.1242499999999982, 0.05999999999999872, 0.05574999999999797, -0.08374999999999844, -0.20025000000000048, -0.032000000000001805, 0.25099999999999945, 0.19375000000000142, 0.14100000000000001, 0.12100000000000044, 0.11200000000000188, 0.1330000000000009, -0.03999999999999915, -0.20674999999999955], zp_timestamp='2025-11-03T18:12:00')
2025-11-03T20:15:25.087 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:15:25.098 [DEBUG] [Thread-121932] [transport.py] [_log()] starting thread (client mode): 0x1174ef50
2025-11-03T20:15:25.098 [DEBUG] [Thread-121932] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:15:25.113 [DEBUG] [Thread-121932] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:15:25.113 [INFO] [Thread-121932] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:15:25.120 [DEBUG] [Thread-121932] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:15:25.121 [DEBUG] [Thread-121932] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:15:25.121 [DEBUG] [Thread-121932] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:15:25.121 [DEBUG] [Thread-121932] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:15:25.121 [DEBUG] [Thread-121932] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:15:25.121 [DEBUG] [Thread-121932] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:15:25.121 [DEBUG] [Thread-121932] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:15:25.121 [DEBUG] [Thread-121932] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:15:25.121 [DEBUG] [Thread-121932] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:15:25.121 [DEBUG] [Thread-121932] [transport.py] [_log()] client lang: <none>
2025-11-03T20:15:25.121 [DEBUG] [Thread-121932] [transport.py] [_log()] server lang: <none>
2025-11-03T20:15:25.121 [DEBUG] [Thread-121932] [transport.py] [_log()] kex follows: False
2025-11-03T20:15:25.121 [DEBUG] [Thread-121932] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:15:25.121 [DEBUG] [Thread-121932] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:15:25.121 [DEBUG] [Thread-121932] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:15:25.121 [DEBUG] [Thread-121932] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:15:25.121 [DEBUG] [Thread-121932] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:15:25.121 [DEBUG] [Thread-121932] [transport.py] [_log()] Compression: none
2025-11-03T20:15:25.121 [DEBUG] [Thread-121932] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:15:25.179 [DEBUG] [Thread-121932] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:15:25.180 [DEBUG] [Thread-121932] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:15:25.180 [DEBUG] [Thread-121932] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:15:25.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:15:25.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:15:25.240 [DEBUG] [Thread-121932] [transport.py] [_log()] userauth is OK
2025-11-03T20:15:25.240 [DEBUG] [Thread-121932] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:15:25.240 [DEBUG] [Thread-121932] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:15:25.240 [DEBUG] [Thread-121932] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:15:25.240 [DEBUG] [Thread-121932] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:15:25.262 [INFO] [Thread-121932] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:15:25.262 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:15:25.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:15:26.108 [DEBUG] [Thread-121932] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:15:26.108 [DEBUG] [Thread-121932] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:15:26.152 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:15:26.154 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:15:26.156 [DEBUG] [Thread-121932] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:15:26.156 [DEBUG] [Thread-121932] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:15:26.164 [DEBUG] [Thread-121932] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:15:26.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:15:26.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:15:26.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:15:26.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:15:26.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:15:26.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:15:26.202 [DEBUG] [Thread-121932] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:15:30.759 [DEBUG] [Thread-121934 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:15:45.973 [DEBUG] [Thread-121935 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:15:56.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:15:56.252 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:15:56.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:15:57.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 15, 20), 36.06, 7.33, 0.0, 22.6, 19.96, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:15:57.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:15:20
2025-11-03T20:15:57.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:15:58.220 [DEBUG] [Thread-121936] [transport.py] [_log()] starting thread (client mode): 0xed378e0
2025-11-03T20:15:58.222 [DEBUG] [Thread-121936] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:15:58.222 [DEBUG] [Thread-121936] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:15:58.222 [INFO] [Thread-121936] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:15:58.227 [DEBUG] [Thread-121936] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:15:58.227 [DEBUG] [Thread-121936] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:15:58.227 [DEBUG] [Thread-121936] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:15:58.227 [DEBUG] [Thread-121936] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:15:58.227 [DEBUG] [Thread-121936] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:15:58.227 [DEBUG] [Thread-121936] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:15:58.227 [DEBUG] [Thread-121936] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:15:58.227 [DEBUG] [Thread-121936] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:15:58.227 [DEBUG] [Thread-121936] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:15:58.227 [DEBUG] [Thread-121936] [transport.py] [_log()] client lang: <none>
2025-11-03T20:15:58.227 [DEBUG] [Thread-121936] [transport.py] [_log()] server lang: <none>
2025-11-03T20:15:58.227 [DEBUG] [Thread-121936] [transport.py] [_log()] kex follows: False
2025-11-03T20:15:58.227 [DEBUG] [Thread-121936] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:15:58.228 [DEBUG] [Thread-121936] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:15:58.228 [DEBUG] [Thread-121936] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:15:58.228 [DEBUG] [Thread-121936] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:15:58.228 [DEBUG] [Thread-121936] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:15:58.228 [DEBUG] [Thread-121936] [transport.py] [_log()] Compression: none
2025-11-03T20:15:58.228 [DEBUG] [Thread-121936] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:15:58.264 [DEBUG] [Thread-121936] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:15:58.268 [DEBUG] [Thread-121936] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:15:58.270 [DEBUG] [Thread-121936] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:15:58.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:15:58.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:15:58.274 [DEBUG] [Thread-121936] [transport.py] [_log()] userauth is OK
2025-11-03T20:15:58.274 [DEBUG] [Thread-121936] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:15:58.274 [DEBUG] [Thread-121936] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:15:58.274 [DEBUG] [Thread-121936] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:15:58.274 [DEBUG] [Thread-121936] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:15:58.308 [INFO] [Thread-121936] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:15:58.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:15:58.954 [DEBUG] [Thread-121936] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:15:58.954 [DEBUG] [Thread-121936] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:15:58.956 [DEBUG] [Thread-121936] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:15:58.996 [DEBUG] [Thread-121936] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:15:58.996 [DEBUG] [Thread-121936] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:15:59.000 [DEBUG] [Thread-121936] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:15:59.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:15:59.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:15:59.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:15:59.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:15:59.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:15:59.026 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:15:59.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:15:59.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:15:59.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:15:59.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.760865 -999.00  +19.90  25.57     12   -9.60 1 1 1 1 1     0    0 26.19 -128.15 ZNESW 25.6 25.6 305.0 32.3 20.0 -29.3 19.9 -28.2 19.8 -28.1 20.0 -28.9
2025-11-03T20:15:59.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:15:59.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:15:59.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.760865
2025-11-03T20:15:59.035 [DEBUG] [Thread-121936] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:15:59.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:15:59.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:15:59.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:15:59.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:15:59.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:15:59.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:15:20', tmtdew=36.06, humidity=7.33, cloud=0.0, wind=22.6, temperature=19.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:15:55', seeing=1.03, atlas_timestamp='2025-11-03T18:15:38.736', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024250000000000327, 0.06125000000000114, 0.01025000000000098, 0.08149999999999835, 0.09600000000000009, 0.048250000000001236, -0.009999999999999787, 0.05325000000000202, -0.019999999999999574, 0.0649999999999995, 0.11224999999999952, 0.11950000000000038, 0.16799999999999926, -0.02624999999999922, -0.053000000000000824, -0.17300000000000004, -0.034750000000000725, 0.07649999999999935, 0.18799999999999883, 0.1242499999999982, 0.05999999999999872, 0.05574999999999797, -0.08374999999999844, -0.20025000000000048, -0.032000000000001805, 0.25099999999999945, 0.19375000000000142, 0.14100000000000001, 0.12100000000000044, 0.11200000000000188, 0.1330000000000009, -0.03999999999999915, -0.20674999999999955], zp_timestamp='2025-11-03T18:12:00')
2025-11-03T20:15:59.144 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:15:59.157 [DEBUG] [Thread-121939] [transport.py] [_log()] starting thread (client mode): 0x141dbe80
2025-11-03T20:15:59.157 [DEBUG] [Thread-121939] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:15:59.171 [DEBUG] [Thread-121939] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:15:59.171 [INFO] [Thread-121939] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:15:59.178 [DEBUG] [Thread-121939] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:15:59.178 [DEBUG] [Thread-121939] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:15:59.178 [DEBUG] [Thread-121939] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:15:59.178 [DEBUG] [Thread-121939] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:15:59.178 [DEBUG] [Thread-121939] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:15:59.178 [DEBUG] [Thread-121939] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:15:59.178 [DEBUG] [Thread-121939] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:15:59.178 [DEBUG] [Thread-121939] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:15:59.178 [DEBUG] [Thread-121939] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:15:59.178 [DEBUG] [Thread-121939] [transport.py] [_log()] client lang: <none>
2025-11-03T20:15:59.178 [DEBUG] [Thread-121939] [transport.py] [_log()] server lang: <none>
2025-11-03T20:15:59.178 [DEBUG] [Thread-121939] [transport.py] [_log()] kex follows: False
2025-11-03T20:15:59.178 [DEBUG] [Thread-121939] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:15:59.178 [DEBUG] [Thread-121939] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:15:59.178 [DEBUG] [Thread-121939] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:15:59.178 [DEBUG] [Thread-121939] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:15:59.179 [DEBUG] [Thread-121939] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:15:59.179 [DEBUG] [Thread-121939] [transport.py] [_log()] Compression: none
2025-11-03T20:15:59.179 [DEBUG] [Thread-121939] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:15:59.234 [DEBUG] [Thread-121939] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:15:59.234 [DEBUG] [Thread-121939] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:15:59.234 [DEBUG] [Thread-121939] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:15:59.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:15:59.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:15:59.291 [DEBUG] [Thread-121939] [transport.py] [_log()] userauth is OK
2025-11-03T20:15:59.291 [DEBUG] [Thread-121939] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:15:59.291 [DEBUG] [Thread-121939] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:15:59.291 [DEBUG] [Thread-121939] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:15:59.291 [DEBUG] [Thread-121939] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:15:59.305 [INFO] [Thread-121939] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:15:59.306 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:15:59.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:16:00.148 [DEBUG] [Thread-121939] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:16:00.149 [DEBUG] [Thread-121939] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:16:00.197 [DEBUG] [Thread-121939] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:16:00.197 [DEBUG] [Thread-121939] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:16:00.206 [DEBUG] [Thread-121939] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:16:00.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:16:00.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:16:00.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:16:00.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:16:00.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:16:00.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:16:00.244 [DEBUG] [Thread-121939] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:16:01.230 [DEBUG] [Thread-121941 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:16:02.125 [DEBUG] [Thread-121942 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:16:16.498 [DEBUG] [Thread-121943 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:16:26.360 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:16:26.362 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:16:30.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:16:30.305 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:16:30.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:16:31.559 [DEBUG] [Thread-121944 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:16:31.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 15, 54), 35.92, 7.38, 0.0, 23.04, 19.84, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:16:31.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:15:54
2025-11-03T20:16:31.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:16:32.114 [DEBUG] [Thread-121945] [transport.py] [_log()] starting thread (client mode): 0x11762fb0
2025-11-03T20:16:32.115 [DEBUG] [Thread-121945] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:16:32.123 [DEBUG] [Thread-121945] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:16:32.123 [INFO] [Thread-121945] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:16:32.131 [DEBUG] [Thread-121945] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:16:32.131 [DEBUG] [Thread-121945] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:16:32.131 [DEBUG] [Thread-121945] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:16:32.131 [DEBUG] [Thread-121945] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:16:32.131 [DEBUG] [Thread-121945] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:16:32.131 [DEBUG] [Thread-121945] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:16:32.131 [DEBUG] [Thread-121945] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:16:32.131 [DEBUG] [Thread-121945] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:16:32.131 [DEBUG] [Thread-121945] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:16:32.131 [DEBUG] [Thread-121945] [transport.py] [_log()] client lang: <none>
2025-11-03T20:16:32.132 [DEBUG] [Thread-121945] [transport.py] [_log()] server lang: <none>
2025-11-03T20:16:32.132 [DEBUG] [Thread-121945] [transport.py] [_log()] kex follows: False
2025-11-03T20:16:32.132 [DEBUG] [Thread-121945] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:16:32.133 [DEBUG] [Thread-121945] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:16:32.133 [DEBUG] [Thread-121945] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:16:32.133 [DEBUG] [Thread-121945] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:16:32.133 [DEBUG] [Thread-121945] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:16:32.133 [DEBUG] [Thread-121945] [transport.py] [_log()] Compression: none
2025-11-03T20:16:32.133 [DEBUG] [Thread-121945] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:16:32.169 [DEBUG] [Thread-121945] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:16:32.175 [DEBUG] [Thread-121945] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:16:32.177 [DEBUG] [Thread-121945] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:16:32.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:16:32.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:16:32.181 [DEBUG] [Thread-121945] [transport.py] [_log()] userauth is OK
2025-11-03T20:16:32.181 [DEBUG] [Thread-121945] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:16:32.181 [DEBUG] [Thread-121945] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:16:32.181 [DEBUG] [Thread-121945] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:16:32.181 [DEBUG] [Thread-121945] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:16:32.201 [INFO] [Thread-121945] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:16:32.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:16:32.846 [DEBUG] [Thread-121945] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:16:32.846 [DEBUG] [Thread-121945] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:16:32.847 [DEBUG] [Thread-121945] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:16:32.887 [DEBUG] [Thread-121945] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:16:32.887 [DEBUG] [Thread-121945] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:16:32.890 [DEBUG] [Thread-121945] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:16:32.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:16:32.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:16:32.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:16:32.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:16:32.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:16:32.911 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:16:32.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:16:32.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:16:32.915 [DEBUG] [Thread-121945] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:16:32.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:16:32.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.761212 -999.00  +19.90  25.04     12   -9.70 1 1 1 1 1     0    0 26.39 -126.83 ZNESW 25.0 25.0 299.1 27.9 20.0 -29.3 19.9 -28.2 19.7 -28.2 19.9 -28.8
2025-11-03T20:16:32.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:16:32.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:16:32.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.761212
2025-11-03T20:16:32.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:16:32.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:16:32.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:16:32.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:16:32.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:16:32.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:15:54', tmtdew=35.92, humidity=7.38, cloud=0.0, wind=23.04, temperature=19.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:16:29', seeing=1.23, atlas_timestamp='2025-11-03T18:16:08.717', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024250000000000327, 0.06125000000000114, 0.01025000000000098, 0.08149999999999835, 0.09600000000000009, 0.048250000000001236, -0.009999999999999787, 0.05325000000000202, -0.019999999999999574, 0.0649999999999995, 0.11224999999999952, 0.11950000000000038, 0.16799999999999926, -0.02624999999999922, -0.053000000000000824, -0.17300000000000004, -0.034750000000000725, 0.07649999999999935, 0.18799999999999883, 0.1242499999999982, 0.05999999999999872, 0.05574999999999797, -0.08374999999999844, -0.20025000000000048, -0.032000000000001805, 0.25099999999999945, 0.19375000000000142, 0.14100000000000001, 0.12100000000000044, 0.11200000000000188, 0.1330000000000009, -0.03999999999999915, -0.20674999999999955], zp_timestamp='2025-11-03T18:12:00')
2025-11-03T20:16:33.017 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:16:33.029 [DEBUG] [Thread-121948] [transport.py] [_log()] starting thread (client mode): 0xed2f490
2025-11-03T20:16:33.029 [DEBUG] [Thread-121948] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:16:33.043 [DEBUG] [Thread-121948] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:16:33.043 [INFO] [Thread-121948] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:16:33.051 [DEBUG] [Thread-121948] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:16:33.051 [DEBUG] [Thread-121948] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:16:33.051 [DEBUG] [Thread-121948] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:16:33.051 [DEBUG] [Thread-121948] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:16:33.051 [DEBUG] [Thread-121948] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:16:33.051 [DEBUG] [Thread-121948] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:16:33.051 [DEBUG] [Thread-121948] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:16:33.051 [DEBUG] [Thread-121948] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:16:33.051 [DEBUG] [Thread-121948] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:16:33.051 [DEBUG] [Thread-121948] [transport.py] [_log()] client lang: <none>
2025-11-03T20:16:33.051 [DEBUG] [Thread-121948] [transport.py] [_log()] server lang: <none>
2025-11-03T20:16:33.051 [DEBUG] [Thread-121948] [transport.py] [_log()] kex follows: False
2025-11-03T20:16:33.051 [DEBUG] [Thread-121948] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:16:33.051 [DEBUG] [Thread-121948] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:16:33.051 [DEBUG] [Thread-121948] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:16:33.051 [DEBUG] [Thread-121948] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:16:33.051 [DEBUG] [Thread-121948] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:16:33.051 [DEBUG] [Thread-121948] [transport.py] [_log()] Compression: none
2025-11-03T20:16:33.051 [DEBUG] [Thread-121948] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:16:33.108 [DEBUG] [Thread-121948] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:16:33.108 [DEBUG] [Thread-121948] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:16:33.108 [DEBUG] [Thread-121948] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:16:33.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:16:33.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:16:33.165 [DEBUG] [Thread-121948] [transport.py] [_log()] userauth is OK
2025-11-03T20:16:33.165 [DEBUG] [Thread-121948] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:16:33.165 [DEBUG] [Thread-121948] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:16:33.165 [DEBUG] [Thread-121948] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:16:33.165 [DEBUG] [Thread-121948] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:16:33.179 [INFO] [Thread-121948] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:16:33.179 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:16:33.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:16:34.015 [DEBUG] [Thread-121948] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:16:34.015 [DEBUG] [Thread-121948] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:16:34.063 [DEBUG] [Thread-121948] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:16:34.063 [DEBUG] [Thread-121948] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:16:34.071 [DEBUG] [Thread-121948] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:16:34.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:16:34.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:16:34.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:16:34.098 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:16:34.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:16:34.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:16:34.106 [DEBUG] [Thread-121948] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:16:46.631 [DEBUG] [Thread-121950 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:17:01.830 [DEBUG] [Thread-121951 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:17:02.582 [DEBUG] [Thread-121952 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:17:04.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:17:04.161 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:17:04.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:17:05.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 16, 28), 35.87, 7.41, 0.0, 21.17, 19.88, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:17:05.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:16:28
2025-11-03T20:17:06.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:17:06.327 [DEBUG] [Thread-121953] [transport.py] [_log()] starting thread (client mode): 0x11763880
2025-11-03T20:17:06.329 [DEBUG] [Thread-121953] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:17:06.336 [DEBUG] [Thread-121953] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:17:06.337 [INFO] [Thread-121953] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:17:06.344 [DEBUG] [Thread-121953] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:17:06.345 [DEBUG] [Thread-121953] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:17:06.345 [DEBUG] [Thread-121953] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:17:06.345 [DEBUG] [Thread-121953] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:17:06.345 [DEBUG] [Thread-121953] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:17:06.345 [DEBUG] [Thread-121953] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:17:06.345 [DEBUG] [Thread-121953] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:17:06.345 [DEBUG] [Thread-121953] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:17:06.345 [DEBUG] [Thread-121953] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:17:06.345 [DEBUG] [Thread-121953] [transport.py] [_log()] client lang: <none>
2025-11-03T20:17:06.345 [DEBUG] [Thread-121953] [transport.py] [_log()] server lang: <none>
2025-11-03T20:17:06.345 [DEBUG] [Thread-121953] [transport.py] [_log()] kex follows: False
2025-11-03T20:17:06.345 [DEBUG] [Thread-121953] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:17:06.346 [DEBUG] [Thread-121953] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:17:06.346 [DEBUG] [Thread-121953] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:17:06.346 [DEBUG] [Thread-121953] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:17:06.346 [DEBUG] [Thread-121953] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:17:06.346 [DEBUG] [Thread-121953] [transport.py] [_log()] Compression: none
2025-11-03T20:17:06.346 [DEBUG] [Thread-121953] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:17:06.385 [DEBUG] [Thread-121953] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:17:06.391 [DEBUG] [Thread-121953] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:17:06.393 [DEBUG] [Thread-121953] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:17:06.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:17:06.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:17:06.398 [DEBUG] [Thread-121953] [transport.py] [_log()] userauth is OK
2025-11-03T20:17:06.398 [DEBUG] [Thread-121953] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:17:06.399 [DEBUG] [Thread-121953] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:17:06.399 [DEBUG] [Thread-121953] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:17:06.399 [DEBUG] [Thread-121953] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:17:06.417 [INFO] [Thread-121953] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:17:06.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:17:07.047 [DEBUG] [Thread-121953] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:17:07.047 [DEBUG] [Thread-121953] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:17:07.048 [DEBUG] [Thread-121953] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:17:07.088 [DEBUG] [Thread-121953] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:17:07.088 [DEBUG] [Thread-121953] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:17:07.090 [DEBUG] [Thread-121953] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:17:07.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:17:07.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:17:07.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:17:07.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:17:07.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:17:07.114 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:17:07.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:17:07.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:17:07.116 [DEBUG] [Thread-121953] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:17:07.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:17:07.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.761559 -999.00  +19.80  23.00     12   -9.70 1 1 1 1 1     0    0 26.21 -121.01 ZNESW 23.0 23.0 311.0 27.9 20.0 -29.3 19.9 -28.2 19.6 -28.0 19.9 -28.8
2025-11-03T20:17:07.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:17:07.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:17:07.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.761559
2025-11-03T20:17:07.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:17:07.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:17:07.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:17:07.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:17:07.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:17:07.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:16:28', tmtdew=35.87, humidity=7.41, cloud=0.0, wind=21.17, temperature=19.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:17:03', seeing=1.02, atlas_timestamp='2025-11-03T18:16:38.698', atlas_cloud=1, atlas_rain=1, zp_data=[-0.026250000000000995, 0.005250000000000199, -0.01574999999999882, 0.07449999999999868, 0.0600000000000005, 0.08825000000000038, 0.008999999999998565, 0.06225000000000058, -0.21600000000000108, 0.10500000000000043, 0.10524999999999984, 0.0810000000000013, 0.15200000000000102, -0.034750000000000725, -0.12600000000000122, -0.14400000000000013, -0.05375000000000085, 0.1014999999999997, 0.1609999999999996, 0.12024999999999864, 0.05699999999999861, 0.07374999999999865, -0.17074999999999996, -0.0337499999999995, -0.2789999999999999, 0.21649999999999991, 0.19374999999999964, 0.08649999999999913, 0.0129999999999999, 0.11700000000000088, 0.09500000000000064, -0.1689999999999987, -0.06825000000000081], zp_timestamp='2025-11-03T18:16:00')
2025-11-03T20:17:07.227 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:17:07.243 [DEBUG] [Thread-121956] [transport.py] [_log()] starting thread (client mode): 0xed11e40
2025-11-03T20:17:07.243 [DEBUG] [Thread-121956] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:17:07.257 [DEBUG] [Thread-121956] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:17:07.257 [INFO] [Thread-121956] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:17:07.264 [DEBUG] [Thread-121956] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:17:07.264 [DEBUG] [Thread-121956] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:17:07.264 [DEBUG] [Thread-121956] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:17:07.265 [DEBUG] [Thread-121956] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:17:07.265 [DEBUG] [Thread-121956] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:17:07.265 [DEBUG] [Thread-121956] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:17:07.265 [DEBUG] [Thread-121956] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:17:07.265 [DEBUG] [Thread-121956] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:17:07.265 [DEBUG] [Thread-121956] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:17:07.265 [DEBUG] [Thread-121956] [transport.py] [_log()] client lang: <none>
2025-11-03T20:17:07.265 [DEBUG] [Thread-121956] [transport.py] [_log()] server lang: <none>
2025-11-03T20:17:07.265 [DEBUG] [Thread-121956] [transport.py] [_log()] kex follows: False
2025-11-03T20:17:07.265 [DEBUG] [Thread-121956] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:17:07.265 [DEBUG] [Thread-121956] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:17:07.265 [DEBUG] [Thread-121956] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:17:07.265 [DEBUG] [Thread-121956] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:17:07.265 [DEBUG] [Thread-121956] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:17:07.265 [DEBUG] [Thread-121956] [transport.py] [_log()] Compression: none
2025-11-03T20:17:07.265 [DEBUG] [Thread-121956] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:17:07.324 [DEBUG] [Thread-121956] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:17:07.325 [DEBUG] [Thread-121956] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:17:07.325 [DEBUG] [Thread-121956] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:17:07.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:17:07.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:17:07.381 [DEBUG] [Thread-121956] [transport.py] [_log()] userauth is OK
2025-11-03T20:17:07.381 [DEBUG] [Thread-121956] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:17:07.381 [DEBUG] [Thread-121956] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:17:07.381 [DEBUG] [Thread-121956] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:17:07.381 [DEBUG] [Thread-121956] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:17:07.398 [INFO] [Thread-121956] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:17:07.399 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:17:07.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:17:08.285 [DEBUG] [Thread-121956] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:17:08.285 [DEBUG] [Thread-121956] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:17:08.333 [DEBUG] [Thread-121956] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:17:08.333 [DEBUG] [Thread-121956] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:17:08.341 [DEBUG] [Thread-121956] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:17:08.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:17:08.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:17:08.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:17:08.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:17:08.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:17:08.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:17:08.379 [DEBUG] [Thread-121956] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:17:17.001 [DEBUG] [Thread-121958 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:17:26.581 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:17:26.598 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:17:32.299 [DEBUG] [Thread-121959 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:17:38.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:17:38.408 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:17:38.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:17:40.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 17, 2), 35.87, 7.39, 0.0, 22.97, 19.78, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:17:40.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:17:02
2025-11-03T20:17:40.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:17:40.542 [DEBUG] [Thread-121960] [transport.py] [_log()] starting thread (client mode): 0x11763a90
2025-11-03T20:17:40.543 [DEBUG] [Thread-121960] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:17:40.546 [DEBUG] [Thread-121960] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:17:40.546 [INFO] [Thread-121960] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:17:40.553 [DEBUG] [Thread-121960] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:17:40.553 [DEBUG] [Thread-121960] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:17:40.553 [DEBUG] [Thread-121960] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:17:40.553 [DEBUG] [Thread-121960] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:17:40.553 [DEBUG] [Thread-121960] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:17:40.553 [DEBUG] [Thread-121960] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:17:40.553 [DEBUG] [Thread-121960] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:17:40.553 [DEBUG] [Thread-121960] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:17:40.553 [DEBUG] [Thread-121960] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:17:40.553 [DEBUG] [Thread-121960] [transport.py] [_log()] client lang: <none>
2025-11-03T20:17:40.553 [DEBUG] [Thread-121960] [transport.py] [_log()] server lang: <none>
2025-11-03T20:17:40.553 [DEBUG] [Thread-121960] [transport.py] [_log()] kex follows: False
2025-11-03T20:17:40.553 [DEBUG] [Thread-121960] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:17:40.554 [DEBUG] [Thread-121960] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:17:40.554 [DEBUG] [Thread-121960] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:17:40.554 [DEBUG] [Thread-121960] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:17:40.554 [DEBUG] [Thread-121960] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:17:40.554 [DEBUG] [Thread-121960] [transport.py] [_log()] Compression: none
2025-11-03T20:17:40.554 [DEBUG] [Thread-121960] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:17:40.591 [DEBUG] [Thread-121960] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:17:40.596 [DEBUG] [Thread-121960] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:17:40.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:17:40.599 [DEBUG] [Thread-121960] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:17:40.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:17:40.602 [DEBUG] [Thread-121960] [transport.py] [_log()] userauth is OK
2025-11-03T20:17:40.603 [DEBUG] [Thread-121960] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:17:40.603 [DEBUG] [Thread-121960] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:17:40.603 [DEBUG] [Thread-121960] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:17:40.603 [DEBUG] [Thread-121960] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:17:40.621 [INFO] [Thread-121960] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:17:40.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:17:41.267 [DEBUG] [Thread-121960] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:17:41.268 [DEBUG] [Thread-121960] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:17:41.277 [DEBUG] [Thread-121960] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:17:41.307 [DEBUG] [Thread-121960] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:17:41.307 [DEBUG] [Thread-121960] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:17:41.310 [DEBUG] [Thread-121960] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:17:41.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:17:41.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:17:41.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:17:41.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:17:41.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:17:41.332 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:17:41.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:17:41.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:17:41.334 [DEBUG] [Thread-121960] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:17:41.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:17:41.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.761907 -999.00  +19.70  24.43     12   -9.70 1 1 1 1 1     0    0 26.83 -109.82 ZNESW 24.4 24.4 313.6 31.5 19.9 -29.2 19.9 -28.1 19.6 -28.0 19.9 -28.8
2025-11-03T20:17:41.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:17:41.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:17:41.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.761907
2025-11-03T20:17:41.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:17:41.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:17:41.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:17:41.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:17:41.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:17:41.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:17:02', tmtdew=35.87, humidity=7.39, cloud=0.0, wind=22.97, temperature=19.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:17:37', seeing=1.02, atlas_timestamp='2025-11-03T18:17:08.765', atlas_cloud=1, atlas_rain=1, zp_data=[-0.026250000000000995, 0.005250000000000199, -0.01574999999999882, 0.07449999999999868, 0.0600000000000005, 0.08825000000000038, 0.008999999999998565, 0.06225000000000058, -0.21600000000000108, 0.10500000000000043, 0.10524999999999984, 0.0810000000000013, 0.15200000000000102, -0.034750000000000725, -0.12600000000000122, -0.14400000000000013, -0.05375000000000085, 0.1014999999999997, 0.1609999999999996, 0.12024999999999864, 0.05699999999999861, 0.07374999999999865, -0.17074999999999996, -0.0337499999999995, -0.2789999999999999, 0.21649999999999991, 0.19374999999999964, 0.08649999999999913, 0.0129999999999999, 0.11700000000000088, 0.09500000000000064, -0.1689999999999987, -0.06825000000000081], zp_timestamp='2025-11-03T18:16:00')
2025-11-03T20:17:41.446 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:17:41.459 [DEBUG] [Thread-121963] [transport.py] [_log()] starting thread (client mode): 0x141da860
2025-11-03T20:17:41.459 [DEBUG] [Thread-121963] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:17:41.474 [DEBUG] [Thread-121963] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:17:41.474 [INFO] [Thread-121963] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:17:41.482 [DEBUG] [Thread-121963] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:17:41.482 [DEBUG] [Thread-121963] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:17:41.482 [DEBUG] [Thread-121963] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:17:41.482 [DEBUG] [Thread-121963] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:17:41.482 [DEBUG] [Thread-121963] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:17:41.482 [DEBUG] [Thread-121963] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:17:41.482 [DEBUG] [Thread-121963] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:17:41.482 [DEBUG] [Thread-121963] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:17:41.482 [DEBUG] [Thread-121963] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:17:41.482 [DEBUG] [Thread-121963] [transport.py] [_log()] client lang: <none>
2025-11-03T20:17:41.482 [DEBUG] [Thread-121963] [transport.py] [_log()] server lang: <none>
2025-11-03T20:17:41.482 [DEBUG] [Thread-121963] [transport.py] [_log()] kex follows: False
2025-11-03T20:17:41.482 [DEBUG] [Thread-121963] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:17:41.482 [DEBUG] [Thread-121963] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:17:41.482 [DEBUG] [Thread-121963] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:17:41.482 [DEBUG] [Thread-121963] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:17:41.482 [DEBUG] [Thread-121963] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:17:41.482 [DEBUG] [Thread-121963] [transport.py] [_log()] Compression: none
2025-11-03T20:17:41.482 [DEBUG] [Thread-121963] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:17:41.537 [DEBUG] [Thread-121963] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:17:41.537 [DEBUG] [Thread-121963] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:17:41.537 [DEBUG] [Thread-121963] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:17:41.537 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:17:41.537 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:17:41.594 [DEBUG] [Thread-121963] [transport.py] [_log()] userauth is OK
2025-11-03T20:17:41.594 [DEBUG] [Thread-121963] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:17:41.594 [DEBUG] [Thread-121963] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:17:41.594 [DEBUG] [Thread-121963] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:17:41.594 [DEBUG] [Thread-121963] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:17:41.608 [INFO] [Thread-121963] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:17:41.608 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:17:41.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:17:42.430 [DEBUG] [Thread-121963] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:17:42.430 [DEBUG] [Thread-121963] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:17:42.478 [DEBUG] [Thread-121963] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:17:42.478 [DEBUG] [Thread-121963] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:17:42.487 [DEBUG] [Thread-121963] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:17:42.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:17:42.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:17:42.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:17:42.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:17:42.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:17:42.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:17:42.525 [DEBUG] [Thread-121963] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:17:47.434 [DEBUG] [Thread-121965 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:18:02.723 [DEBUG] [Thread-121966 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:18:03.019 [DEBUG] [Thread-121967 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:18:12.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:18:12.569 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:18:12.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:18:14.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 17, 37), 35.9, 7.84, 0.0, 23.57, 19.74, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:18:14.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:17:37
2025-11-03T20:18:14.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:18:14.615 [DEBUG] [Thread-121968] [transport.py] [_log()] starting thread (client mode): 0x1179b730
2025-11-03T20:18:14.616 [DEBUG] [Thread-121968] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:18:14.617 [DEBUG] [Thread-121968] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:18:14.617 [INFO] [Thread-121968] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:18:14.624 [DEBUG] [Thread-121968] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:18:14.625 [DEBUG] [Thread-121968] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:18:14.625 [DEBUG] [Thread-121968] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:18:14.625 [DEBUG] [Thread-121968] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:18:14.625 [DEBUG] [Thread-121968] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:18:14.625 [DEBUG] [Thread-121968] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:18:14.625 [DEBUG] [Thread-121968] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:18:14.625 [DEBUG] [Thread-121968] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:18:14.625 [DEBUG] [Thread-121968] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:18:14.625 [DEBUG] [Thread-121968] [transport.py] [_log()] client lang: <none>
2025-11-03T20:18:14.625 [DEBUG] [Thread-121968] [transport.py] [_log()] server lang: <none>
2025-11-03T20:18:14.625 [DEBUG] [Thread-121968] [transport.py] [_log()] kex follows: False
2025-11-03T20:18:14.625 [DEBUG] [Thread-121968] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:18:14.626 [DEBUG] [Thread-121968] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:18:14.626 [DEBUG] [Thread-121968] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:18:14.626 [DEBUG] [Thread-121968] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:18:14.626 [DEBUG] [Thread-121968] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:18:14.626 [DEBUG] [Thread-121968] [transport.py] [_log()] Compression: none
2025-11-03T20:18:14.626 [DEBUG] [Thread-121968] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:18:14.658 [DEBUG] [Thread-121968] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:18:14.663 [DEBUG] [Thread-121968] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:18:14.664 [DEBUG] [Thread-121968] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:18:14.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:18:14.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:18:14.668 [DEBUG] [Thread-121968] [transport.py] [_log()] userauth is OK
2025-11-03T20:18:14.668 [DEBUG] [Thread-121968] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:18:14.668 [DEBUG] [Thread-121968] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:18:14.668 [DEBUG] [Thread-121968] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:18:14.668 [DEBUG] [Thread-121968] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:18:14.688 [INFO] [Thread-121968] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:18:14.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:18:15.333 [DEBUG] [Thread-121968] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:18:15.333 [DEBUG] [Thread-121968] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:18:15.334 [DEBUG] [Thread-121968] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:18:15.376 [DEBUG] [Thread-121968] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:18:15.376 [DEBUG] [Thread-121968] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:18:15.379 [DEBUG] [Thread-121968] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:18:15.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:18:15.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:18:15.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:18:15.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:18:15.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:18:15.403 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:18:15.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:18:15.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:18:15.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:18:15.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.762601 -999.00  +19.70  22.90     12   -9.70 1 1 1 1 1     0    0 26.81 -106.50 ZNESW 22.9 22.9 306.6 28.3 19.9 -29.1 19.8 -28.0 19.6 -27.9 19.9 -28.8
2025-11-03T20:18:15.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:18:15.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:18:15.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.762601
2025-11-03T20:18:15.410 [DEBUG] [Thread-121968] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:18:15.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:18:15.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:18:15.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:18:15.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:18:15.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:18:15.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:17:37', tmtdew=35.9, humidity=7.84, cloud=0.0, wind=23.57, temperature=19.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:18:11', seeing=1.04, atlas_timestamp='2025-11-03T18:18:08.726', atlas_cloud=1, atlas_rain=1, zp_data=[-0.026250000000000995, 0.005250000000000199, -0.01574999999999882, 0.07449999999999868, 0.0600000000000005, 0.08825000000000038, 0.008999999999998565, 0.06225000000000058, -0.21600000000000108, 0.10500000000000043, 0.10524999999999984, 0.0810000000000013, 0.15200000000000102, -0.034750000000000725, -0.12600000000000122, -0.14400000000000013, -0.05375000000000085, 0.1014999999999997, 0.1609999999999996, 0.12024999999999864, 0.05699999999999861, 0.07374999999999865, -0.17074999999999996, -0.0337499999999995, -0.2789999999999999, 0.21649999999999991, 0.19374999999999964, 0.08649999999999913, 0.0129999999999999, 0.11700000000000088, 0.09500000000000064, -0.1689999999999987, -0.06825000000000081], zp_timestamp='2025-11-03T18:16:00')
2025-11-03T20:18:15.517 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:18:15.534 [DEBUG] [Thread-121971] [transport.py] [_log()] starting thread (client mode): 0x1179a3b0
2025-11-03T20:18:15.534 [DEBUG] [Thread-121971] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:18:15.556 [DEBUG] [Thread-121971] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:18:15.556 [INFO] [Thread-121971] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:18:15.572 [DEBUG] [Thread-121971] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:18:15.572 [DEBUG] [Thread-121971] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:18:15.572 [DEBUG] [Thread-121971] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:18:15.572 [DEBUG] [Thread-121971] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:18:15.572 [DEBUG] [Thread-121971] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:18:15.572 [DEBUG] [Thread-121971] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:18:15.572 [DEBUG] [Thread-121971] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:18:15.572 [DEBUG] [Thread-121971] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:18:15.572 [DEBUG] [Thread-121971] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:18:15.572 [DEBUG] [Thread-121971] [transport.py] [_log()] client lang: <none>
2025-11-03T20:18:15.572 [DEBUG] [Thread-121971] [transport.py] [_log()] server lang: <none>
2025-11-03T20:18:15.572 [DEBUG] [Thread-121971] [transport.py] [_log()] kex follows: False
2025-11-03T20:18:15.572 [DEBUG] [Thread-121971] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:18:15.572 [DEBUG] [Thread-121971] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:18:15.572 [DEBUG] [Thread-121971] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:18:15.572 [DEBUG] [Thread-121971] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:18:15.572 [DEBUG] [Thread-121971] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:18:15.572 [DEBUG] [Thread-121971] [transport.py] [_log()] Compression: none
2025-11-03T20:18:15.572 [DEBUG] [Thread-121971] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:18:15.630 [DEBUG] [Thread-121971] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:18:15.630 [DEBUG] [Thread-121971] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:18:15.630 [DEBUG] [Thread-121971] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:18:15.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:18:15.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:18:15.691 [DEBUG] [Thread-121971] [transport.py] [_log()] userauth is OK
2025-11-03T20:18:15.691 [DEBUG] [Thread-121971] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:18:15.691 [DEBUG] [Thread-121971] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:18:15.691 [DEBUG] [Thread-121971] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:18:15.691 [DEBUG] [Thread-121971] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:18:15.709 [INFO] [Thread-121971] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:18:15.709 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:18:15.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:18:16.514 [DEBUG] [Thread-121971] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:18:16.514 [DEBUG] [Thread-121971] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:18:16.563 [DEBUG] [Thread-121971] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:18:16.563 [DEBUG] [Thread-121971] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:18:16.571 [DEBUG] [Thread-121971] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:18:16.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:18:16.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:18:16.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:18:16.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:18:16.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:18:16.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:18:16.607 [DEBUG] [Thread-121971] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:18:17.843 [DEBUG] [Thread-121973 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:18:26.808 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:18:26.815 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:18:33.031 [DEBUG] [Thread-121974 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:18:46.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:18:46.670 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:18:46.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:18:48.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 18, 11), 35.87, 7.86, 0.0, 23.01, 19.69, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:18:48.167 [DEBUG] [Thread-121975 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:18:48.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:18:11
2025-11-03T20:18:48.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:18:48.568 [DEBUG] [Thread-121976] [transport.py] [_log()] starting thread (client mode): 0x11799e70
2025-11-03T20:18:48.573 [DEBUG] [Thread-121976] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:18:48.573 [DEBUG] [Thread-121976] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:18:48.574 [INFO] [Thread-121976] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:18:48.579 [DEBUG] [Thread-121976] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:18:48.579 [DEBUG] [Thread-121976] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:18:48.580 [DEBUG] [Thread-121976] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:18:48.580 [DEBUG] [Thread-121976] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:18:48.580 [DEBUG] [Thread-121976] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:18:48.580 [DEBUG] [Thread-121976] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:18:48.580 [DEBUG] [Thread-121976] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:18:48.580 [DEBUG] [Thread-121976] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:18:48.580 [DEBUG] [Thread-121976] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:18:48.580 [DEBUG] [Thread-121976] [transport.py] [_log()] client lang: <none>
2025-11-03T20:18:48.580 [DEBUG] [Thread-121976] [transport.py] [_log()] server lang: <none>
2025-11-03T20:18:48.580 [DEBUG] [Thread-121976] [transport.py] [_log()] kex follows: False
2025-11-03T20:18:48.580 [DEBUG] [Thread-121976] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:18:48.581 [DEBUG] [Thread-121976] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:18:48.581 [DEBUG] [Thread-121976] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:18:48.581 [DEBUG] [Thread-121976] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:18:48.581 [DEBUG] [Thread-121976] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:18:48.581 [DEBUG] [Thread-121976] [transport.py] [_log()] Compression: none
2025-11-03T20:18:48.581 [DEBUG] [Thread-121976] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:18:48.628 [DEBUG] [Thread-121976] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:18:48.633 [DEBUG] [Thread-121976] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:18:48.634 [DEBUG] [Thread-121976] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:18:48.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:18:48.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:18:48.639 [DEBUG] [Thread-121976] [transport.py] [_log()] userauth is OK
2025-11-03T20:18:48.639 [DEBUG] [Thread-121976] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:18:48.639 [DEBUG] [Thread-121976] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:18:48.639 [DEBUG] [Thread-121976] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:18:48.639 [DEBUG] [Thread-121976] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:18:48.658 [INFO] [Thread-121976] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:18:48.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:18:49.257 [DEBUG] [Thread-121976] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:18:49.257 [DEBUG] [Thread-121976] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:18:49.258 [DEBUG] [Thread-121976] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:18:49.298 [DEBUG] [Thread-121976] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:18:49.298 [DEBUG] [Thread-121976] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:18:49.301 [DEBUG] [Thread-121976] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:18:49.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:18:49.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:18:49.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:18:49.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:18:49.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:18:49.324 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:18:49.324 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:18:49.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:18:49.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:18:49.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.762948 -999.00  +19.70  23.40     12   -9.70 1 1 1 1 1     0    0 26.95 -101.06 ZNESW 23.4 23.4 311.6 28.0 19.9 -29.1 19.8 -28.1 19.6 -28.1 19.8 -29.0
2025-11-03T20:18:49.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:18:49.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:18:49.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.762948
2025-11-03T20:18:49.337 [DEBUG] [Thread-121976] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:18:49.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:18:49.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:18:49.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:18:49.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:18:49.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:18:49.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:18:11', tmtdew=35.87, humidity=7.86, cloud=0.0, wind=23.01, temperature=19.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:18:46', seeing=0.89, atlas_timestamp='2025-11-03T18:18:38.707', atlas_cloud=1, atlas_rain=1, zp_data=[-0.026250000000000995, 0.005250000000000199, -0.01574999999999882, 0.07449999999999868, 0.0600000000000005, 0.08825000000000038, 0.008999999999998565, 0.06225000000000058, -0.21600000000000108, 0.10500000000000043, 0.10524999999999984, 0.0810000000000013, 0.15200000000000102, -0.034750000000000725, -0.12600000000000122, -0.14400000000000013, -0.05375000000000085, 0.1014999999999997, 0.1609999999999996, 0.12024999999999864, 0.05699999999999861, 0.07374999999999865, -0.17074999999999996, -0.0337499999999995, -0.2789999999999999, 0.21649999999999991, 0.19374999999999964, 0.08649999999999913, 0.0129999999999999, 0.11700000000000088, 0.09500000000000064, -0.1689999999999987, -0.06825000000000081], zp_timestamp='2025-11-03T18:16:00')
2025-11-03T20:18:49.443 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:18:49.455 [DEBUG] [Thread-121979] [transport.py] [_log()] starting thread (client mode): 0x11761870
2025-11-03T20:18:49.455 [DEBUG] [Thread-121979] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:18:49.471 [DEBUG] [Thread-121979] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:18:49.471 [INFO] [Thread-121979] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:18:49.479 [DEBUG] [Thread-121979] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:18:49.479 [DEBUG] [Thread-121979] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:18:49.479 [DEBUG] [Thread-121979] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:18:49.479 [DEBUG] [Thread-121979] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:18:49.479 [DEBUG] [Thread-121979] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:18:49.479 [DEBUG] [Thread-121979] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:18:49.479 [DEBUG] [Thread-121979] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:18:49.479 [DEBUG] [Thread-121979] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:18:49.479 [DEBUG] [Thread-121979] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:18:49.479 [DEBUG] [Thread-121979] [transport.py] [_log()] client lang: <none>
2025-11-03T20:18:49.479 [DEBUG] [Thread-121979] [transport.py] [_log()] server lang: <none>
2025-11-03T20:18:49.479 [DEBUG] [Thread-121979] [transport.py] [_log()] kex follows: False
2025-11-03T20:18:49.479 [DEBUG] [Thread-121979] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:18:49.479 [DEBUG] [Thread-121979] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:18:49.479 [DEBUG] [Thread-121979] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:18:49.479 [DEBUG] [Thread-121979] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:18:49.479 [DEBUG] [Thread-121979] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:18:49.479 [DEBUG] [Thread-121979] [transport.py] [_log()] Compression: none
2025-11-03T20:18:49.479 [DEBUG] [Thread-121979] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:18:49.539 [DEBUG] [Thread-121979] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:18:49.540 [DEBUG] [Thread-121979] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:18:49.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:18:49.540 [DEBUG] [Thread-121979] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:18:49.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:18:49.596 [DEBUG] [Thread-121979] [transport.py] [_log()] userauth is OK
2025-11-03T20:18:49.596 [DEBUG] [Thread-121979] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:18:49.596 [DEBUG] [Thread-121979] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:18:49.596 [DEBUG] [Thread-121979] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:18:49.596 [DEBUG] [Thread-121979] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:18:49.615 [INFO] [Thread-121979] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:18:49.615 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:18:49.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:18:50.421 [DEBUG] [Thread-121979] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:18:50.421 [DEBUG] [Thread-121979] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:18:50.469 [DEBUG] [Thread-121979] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:18:50.469 [DEBUG] [Thread-121979] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:18:50.477 [DEBUG] [Thread-121979] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:18:50.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:18:50.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:18:50.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:18:50.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:18:50.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:18:50.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:18:50.511 [DEBUG] [Thread-121979] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:19:03.260 [DEBUG] [Thread-121981 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:19:03.484 [DEBUG] [Thread-121982 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:19:18.507 [DEBUG] [Thread-121983 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:19:20.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:19:20.538 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:19:20.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:19:22.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 18, 45), 35.87, 7.86, 0.0, 20.82, 19.71, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:19:22.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:18:45
2025-11-03T20:19:22.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:19:22.595 [DEBUG] [Thread-121984] [transport.py] [_log()] starting thread (client mode): 0xed07c10
2025-11-03T20:19:22.597 [DEBUG] [Thread-121984] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:19:22.605 [DEBUG] [Thread-121984] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:19:22.605 [INFO] [Thread-121984] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:19:22.612 [DEBUG] [Thread-121984] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:19:22.612 [DEBUG] [Thread-121984] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:19:22.612 [DEBUG] [Thread-121984] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:19:22.612 [DEBUG] [Thread-121984] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:19:22.612 [DEBUG] [Thread-121984] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:19:22.612 [DEBUG] [Thread-121984] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:19:22.612 [DEBUG] [Thread-121984] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:19:22.612 [DEBUG] [Thread-121984] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:19:22.612 [DEBUG] [Thread-121984] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:19:22.612 [DEBUG] [Thread-121984] [transport.py] [_log()] client lang: <none>
2025-11-03T20:19:22.612 [DEBUG] [Thread-121984] [transport.py] [_log()] server lang: <none>
2025-11-03T20:19:22.612 [DEBUG] [Thread-121984] [transport.py] [_log()] kex follows: False
2025-11-03T20:19:22.612 [DEBUG] [Thread-121984] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:19:22.613 [DEBUG] [Thread-121984] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:19:22.613 [DEBUG] [Thread-121984] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:19:22.614 [DEBUG] [Thread-121984] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:19:22.614 [DEBUG] [Thread-121984] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:19:22.614 [DEBUG] [Thread-121984] [transport.py] [_log()] Compression: none
2025-11-03T20:19:22.614 [DEBUG] [Thread-121984] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:19:22.648 [DEBUG] [Thread-121984] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:19:22.654 [DEBUG] [Thread-121984] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:19:22.656 [DEBUG] [Thread-121984] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:19:22.657 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:19:22.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:19:22.661 [DEBUG] [Thread-121984] [transport.py] [_log()] userauth is OK
2025-11-03T20:19:22.661 [DEBUG] [Thread-121984] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:19:22.661 [DEBUG] [Thread-121984] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:19:22.661 [DEBUG] [Thread-121984] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:19:22.661 [DEBUG] [Thread-121984] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:19:22.680 [INFO] [Thread-121984] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:19:22.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:19:23.260 [DEBUG] [Thread-121984] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:19:23.261 [DEBUG] [Thread-121984] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:19:23.262 [DEBUG] [Thread-121984] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:19:23.302 [DEBUG] [Thread-121984] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:19:23.302 [DEBUG] [Thread-121984] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:19:23.305 [DEBUG] [Thread-121984] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:19:23.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:19:23.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:19:23.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:19:23.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:19:23.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:19:23.326 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:19:23.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:19:23.326 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:19:23.328 [DEBUG] [Thread-121984] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:19:23.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:19:23.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.763295 -999.00  +19.70  21.15     12   -9.70 1 1 1 1 1     0    0 26.85 -109.72 ZNESW 21.1 21.1 306.4 26.7 19.9 -29.1 19.8 -28.1 19.5 -28.0 -999.0 -999.0
2025-11-03T20:19:23.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:19:23.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:19:23.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.763295
2025-11-03T20:19:23.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:19:23.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:19:23.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:19:23.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:19:23.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:19:23.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:18:45', tmtdew=35.87, humidity=7.86, cloud=0.0, wind=20.82, temperature=19.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:19:20', seeing=1.05, atlas_timestamp='2025-11-03T18:19:08.688', atlas_cloud=1, atlas_rain=1, zp_data=[-0.026250000000000995, 0.005250000000000199, -0.01574999999999882, 0.07449999999999868, 0.0600000000000005, 0.08825000000000038, 0.008999999999998565, 0.06225000000000058, -0.21600000000000108, 0.10500000000000043, 0.10524999999999984, 0.0810000000000013, 0.15200000000000102, -0.034750000000000725, -0.12600000000000122, -0.14400000000000013, -0.05375000000000085, 0.1014999999999997, 0.1609999999999996, 0.12024999999999864, 0.05699999999999861, 0.07374999999999865, -0.17074999999999996, -0.0337499999999995, -0.2789999999999999, 0.21649999999999991, 0.19374999999999964, 0.08649999999999913, 0.0129999999999999, 0.11700000000000088, 0.09500000000000064, -0.1689999999999987, -0.06825000000000081], zp_timestamp='2025-11-03T18:16:00')
2025-11-03T20:19:23.436 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:19:23.448 [DEBUG] [Thread-121987] [transport.py] [_log()] starting thread (client mode): 0xed36b60
2025-11-03T20:19:23.448 [DEBUG] [Thread-121987] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:19:23.462 [DEBUG] [Thread-121987] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:19:23.462 [INFO] [Thread-121987] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:19:23.470 [DEBUG] [Thread-121987] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:19:23.470 [DEBUG] [Thread-121987] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:19:23.470 [DEBUG] [Thread-121987] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:19:23.470 [DEBUG] [Thread-121987] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:19:23.470 [DEBUG] [Thread-121987] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:19:23.470 [DEBUG] [Thread-121987] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:19:23.470 [DEBUG] [Thread-121987] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:19:23.470 [DEBUG] [Thread-121987] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:19:23.470 [DEBUG] [Thread-121987] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:19:23.470 [DEBUG] [Thread-121987] [transport.py] [_log()] client lang: <none>
2025-11-03T20:19:23.470 [DEBUG] [Thread-121987] [transport.py] [_log()] server lang: <none>
2025-11-03T20:19:23.470 [DEBUG] [Thread-121987] [transport.py] [_log()] kex follows: False
2025-11-03T20:19:23.470 [DEBUG] [Thread-121987] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:19:23.470 [DEBUG] [Thread-121987] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:19:23.470 [DEBUG] [Thread-121987] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:19:23.470 [DEBUG] [Thread-121987] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:19:23.470 [DEBUG] [Thread-121987] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:19:23.470 [DEBUG] [Thread-121987] [transport.py] [_log()] Compression: none
2025-11-03T20:19:23.470 [DEBUG] [Thread-121987] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:19:23.527 [DEBUG] [Thread-121987] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:19:23.527 [DEBUG] [Thread-121987] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:19:23.527 [DEBUG] [Thread-121987] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:19:23.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:19:23.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:19:23.585 [DEBUG] [Thread-121987] [transport.py] [_log()] userauth is OK
2025-11-03T20:19:23.585 [DEBUG] [Thread-121987] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:19:23.585 [DEBUG] [Thread-121987] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:19:23.585 [DEBUG] [Thread-121987] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:19:23.585 [DEBUG] [Thread-121987] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:19:23.599 [INFO] [Thread-121987] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:19:23.599 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:19:23.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:19:24.427 [DEBUG] [Thread-121987] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:19:24.427 [DEBUG] [Thread-121987] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:19:24.474 [DEBUG] [Thread-121987] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:19:24.475 [DEBUG] [Thread-121987] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:19:24.483 [DEBUG] [Thread-121987] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:19:24.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:19:24.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:19:24.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:19:24.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:19:24.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:19:24.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:19:24.519 [DEBUG] [Thread-121987] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:19:27.056 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:19:27.057 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:19:33.638 [DEBUG] [Thread-121989 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:19:48.821 [DEBUG] [Thread-121990 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:19:54.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:19:54.545 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:19:54.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:19:56.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 19, 19), 35.92, 7.83, 0.0, 21.97, 19.71, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:19:56.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:19:19
2025-11-03T20:19:56.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:19:56.828 [DEBUG] [Thread-121991] [transport.py] [_log()] starting thread (client mode): 0xed12140
2025-11-03T20:19:56.830 [DEBUG] [Thread-121991] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:19:56.839 [DEBUG] [Thread-121991] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:19:56.839 [INFO] [Thread-121991] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:19:56.845 [DEBUG] [Thread-121991] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:19:56.846 [DEBUG] [Thread-121991] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:19:56.846 [DEBUG] [Thread-121991] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:19:56.846 [DEBUG] [Thread-121991] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:19:56.846 [DEBUG] [Thread-121991] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:19:56.846 [DEBUG] [Thread-121991] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:19:56.846 [DEBUG] [Thread-121991] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:19:56.846 [DEBUG] [Thread-121991] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:19:56.846 [DEBUG] [Thread-121991] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:19:56.846 [DEBUG] [Thread-121991] [transport.py] [_log()] client lang: <none>
2025-11-03T20:19:56.846 [DEBUG] [Thread-121991] [transport.py] [_log()] server lang: <none>
2025-11-03T20:19:56.846 [DEBUG] [Thread-121991] [transport.py] [_log()] kex follows: False
2025-11-03T20:19:56.846 [DEBUG] [Thread-121991] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:19:56.846 [DEBUG] [Thread-121991] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:19:56.846 [DEBUG] [Thread-121991] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:19:56.846 [DEBUG] [Thread-121991] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:19:56.847 [DEBUG] [Thread-121991] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:19:56.847 [DEBUG] [Thread-121991] [transport.py] [_log()] Compression: none
2025-11-03T20:19:56.847 [DEBUG] [Thread-121991] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:19:56.877 [DEBUG] [Thread-121991] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:19:56.881 [DEBUG] [Thread-121991] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:19:56.882 [DEBUG] [Thread-121991] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:19:56.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:19:56.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:19:56.890 [DEBUG] [Thread-121991] [transport.py] [_log()] userauth is OK
2025-11-03T20:19:56.891 [DEBUG] [Thread-121991] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:19:56.891 [DEBUG] [Thread-121991] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:19:56.891 [DEBUG] [Thread-121991] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:19:56.891 [DEBUG] [Thread-121991] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:19:56.911 [INFO] [Thread-121991] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:19:56.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:19:57.535 [DEBUG] [Thread-121991] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:19:57.535 [DEBUG] [Thread-121991] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:19:57.536 [DEBUG] [Thread-121991] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:19:57.576 [DEBUG] [Thread-121991] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:19:57.577 [DEBUG] [Thread-121991] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:19:57.578 [DEBUG] [Thread-121991] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:19:57.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:19:57.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:19:57.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:19:57.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:19:57.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:19:57.598 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:19:57.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:19:57.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:19:57.599 [DEBUG] [Thread-121991] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:19:57.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:19:57.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.763643 -999.00  +19.70  18.74     12   -9.70 1 1 1 1 1     0    0 26.40 -115.26 ZNESW 18.7 18.7 306.4 27.9 19.8 -29.1 19.8 -28.0 19.6 -27.9 19.8 -28.7
2025-11-03T20:19:57.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:19:57.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:19:57.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.763643
2025-11-03T20:19:57.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:19:57.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:19:57.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:19:57.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:19:57.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:19:57.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:19:19', tmtdew=35.92, humidity=7.83, cloud=0.0, wind=21.97, temperature=19.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:19:54', seeing=1.14, atlas_timestamp='2025-11-03T18:19:38.755', atlas_cloud=1, atlas_rain=1, zp_data=[-0.026250000000000995, 0.005250000000000199, -0.01574999999999882, 0.07449999999999868, 0.0600000000000005, 0.08825000000000038, 0.008999999999998565, 0.06225000000000058, -0.21600000000000108, 0.10500000000000043, 0.10524999999999984, 0.0810000000000013, 0.15200000000000102, -0.034750000000000725, -0.12600000000000122, -0.14400000000000013, -0.05375000000000085, 0.1014999999999997, 0.1609999999999996, 0.12024999999999864, 0.05699999999999861, 0.07374999999999865, -0.17074999999999996, -0.0337499999999995, -0.2789999999999999, 0.21649999999999991, 0.19374999999999964, 0.08649999999999913, 0.0129999999999999, 0.11700000000000088, 0.09500000000000064, -0.1689999999999987, -0.06825000000000081], zp_timestamp='2025-11-03T18:18:00')
2025-11-03T20:19:57.701 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:19:57.713 [DEBUG] [Thread-121994] [transport.py] [_log()] starting thread (client mode): 0xed115d0
2025-11-03T20:19:57.713 [DEBUG] [Thread-121994] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:19:57.728 [DEBUG] [Thread-121994] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:19:57.728 [INFO] [Thread-121994] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:19:57.735 [DEBUG] [Thread-121994] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:19:57.735 [DEBUG] [Thread-121994] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:19:57.735 [DEBUG] [Thread-121994] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:19:57.735 [DEBUG] [Thread-121994] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:19:57.735 [DEBUG] [Thread-121994] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:19:57.735 [DEBUG] [Thread-121994] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:19:57.735 [DEBUG] [Thread-121994] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:19:57.735 [DEBUG] [Thread-121994] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:19:57.735 [DEBUG] [Thread-121994] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:19:57.735 [DEBUG] [Thread-121994] [transport.py] [_log()] client lang: <none>
2025-11-03T20:19:57.735 [DEBUG] [Thread-121994] [transport.py] [_log()] server lang: <none>
2025-11-03T20:19:57.735 [DEBUG] [Thread-121994] [transport.py] [_log()] kex follows: False
2025-11-03T20:19:57.735 [DEBUG] [Thread-121994] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:19:57.735 [DEBUG] [Thread-121994] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:19:57.735 [DEBUG] [Thread-121994] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:19:57.736 [DEBUG] [Thread-121994] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:19:57.736 [DEBUG] [Thread-121994] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:19:57.736 [DEBUG] [Thread-121994] [transport.py] [_log()] Compression: none
2025-11-03T20:19:57.736 [DEBUG] [Thread-121994] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:19:57.792 [DEBUG] [Thread-121994] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:19:57.792 [DEBUG] [Thread-121994] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:19:57.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:19:57.792 [DEBUG] [Thread-121994] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:19:57.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:19:57.849 [DEBUG] [Thread-121994] [transport.py] [_log()] userauth is OK
2025-11-03T20:19:57.849 [DEBUG] [Thread-121994] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:19:57.849 [DEBUG] [Thread-121994] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:19:57.849 [DEBUG] [Thread-121994] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:19:57.849 [DEBUG] [Thread-121994] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:19:57.863 [INFO] [Thread-121994] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:19:57.863 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:19:57.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:19:58.687 [DEBUG] [Thread-121994] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:19:58.687 [DEBUG] [Thread-121994] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:19:58.735 [DEBUG] [Thread-121994] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:19:58.735 [DEBUG] [Thread-121994] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:19:58.743 [DEBUG] [Thread-121994] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:19:58.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:19:58.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:19:58.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:19:58.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:19:58.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:19:58.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:19:58.787 [DEBUG] [Thread-121994] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:20:03.896 [DEBUG] [Thread-121996 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:20:03.988 [DEBUG] [Thread-121997 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:20:19.181 [DEBUG] [Thread-121998 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:20:27.261 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:20:27.264 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:20:28.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:20:28.811 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:20:28.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:20:30.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 19, 53), 35.96, 7.78, 0.0, 23.22, 19.69, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:20:30.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:19:53
2025-11-03T20:20:30.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:20:30.896 [DEBUG] [Thread-121999] [transport.py] [_log()] starting thread (client mode): 0xed07d30
2025-11-03T20:20:30.897 [DEBUG] [Thread-121999] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:20:30.900 [DEBUG] [Thread-121999] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:20:30.901 [INFO] [Thread-121999] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:20:30.908 [DEBUG] [Thread-121999] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:20:30.908 [DEBUG] [Thread-121999] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:20:30.908 [DEBUG] [Thread-121999] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:20:30.908 [DEBUG] [Thread-121999] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:20:30.908 [DEBUG] [Thread-121999] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:20:30.908 [DEBUG] [Thread-121999] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:20:30.908 [DEBUG] [Thread-121999] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:20:30.908 [DEBUG] [Thread-121999] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:20:30.908 [DEBUG] [Thread-121999] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:20:30.908 [DEBUG] [Thread-121999] [transport.py] [_log()] client lang: <none>
2025-11-03T20:20:30.909 [DEBUG] [Thread-121999] [transport.py] [_log()] server lang: <none>
2025-11-03T20:20:30.909 [DEBUG] [Thread-121999] [transport.py] [_log()] kex follows: False
2025-11-03T20:20:30.909 [DEBUG] [Thread-121999] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:20:30.909 [DEBUG] [Thread-121999] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:20:30.909 [DEBUG] [Thread-121999] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:20:30.910 [DEBUG] [Thread-121999] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:20:30.910 [DEBUG] [Thread-121999] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:20:30.910 [DEBUG] [Thread-121999] [transport.py] [_log()] Compression: none
2025-11-03T20:20:30.910 [DEBUG] [Thread-121999] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:20:30.949 [DEBUG] [Thread-121999] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:20:30.955 [DEBUG] [Thread-121999] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:20:30.956 [DEBUG] [Thread-121999] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:20:30.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:20:30.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:20:30.960 [DEBUG] [Thread-121999] [transport.py] [_log()] userauth is OK
2025-11-03T20:20:30.960 [DEBUG] [Thread-121999] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:20:30.961 [DEBUG] [Thread-121999] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:20:30.961 [DEBUG] [Thread-121999] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:20:30.961 [DEBUG] [Thread-121999] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:20:30.984 [INFO] [Thread-121999] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:20:30.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:20:31.599 [DEBUG] [Thread-121999] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:20:31.599 [DEBUG] [Thread-121999] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:20:31.600 [DEBUG] [Thread-121999] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:20:31.639 [DEBUG] [Thread-121999] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:20:31.639 [DEBUG] [Thread-121999] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:20:31.644 [DEBUG] [Thread-121999] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:20:31.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:20:31.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:20:31.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:20:31.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:20:31.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:20:31.666 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:20:31.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:20:31.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:20:31.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:20:31.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.763990 -999.00  +19.60  22.33     12   -9.80 1 1 1 1 1     0    0 26.43 -120.19 ZNESW 23.5 22.3 302.0 26.5 19.8 -29.0 19.8 -28.0 19.6 -27.7 19.8 -28.7
2025-11-03T20:20:31.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:20:31.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:20:31.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.763990
2025-11-03T20:20:31.680 [DEBUG] [Thread-121999] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:20:31.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:20:31.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:20:31.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:20:31.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:20:31.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:20:31.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:19:53', tmtdew=35.96, humidity=7.78, cloud=0.0, wind=23.22, temperature=19.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:20:28', seeing=1.07, atlas_timestamp='2025-11-03T18:20:08.736', atlas_cloud=1, atlas_rain=1, zp_data=[-0.026250000000000995, 0.005250000000000199, -0.01574999999999882, 0.07449999999999868, 0.0600000000000005, 0.08825000000000038, 0.008999999999998565, 0.06225000000000058, -0.21600000000000108, 0.10500000000000043, 0.10524999999999984, 0.0810000000000013, 0.15200000000000102, -0.034750000000000725, -0.12600000000000122, -0.14400000000000013, -0.05375000000000085, 0.1014999999999997, 0.1609999999999996, 0.12024999999999864, 0.05699999999999861, 0.07374999999999865, -0.17074999999999996, -0.0337499999999995, -0.2789999999999999, 0.21649999999999991, 0.19374999999999964, 0.08649999999999913, 0.0129999999999999, 0.11700000000000088, 0.09500000000000064, -0.1689999999999987, -0.06825000000000081], zp_timestamp='2025-11-03T18:18:00')
2025-11-03T20:20:31.773 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:20:34.257 [DEBUG] [Thread-122002 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:20:49.499 [DEBUG] [Thread-122003 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:21:04.384 [DEBUG] [Thread-122004 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:21:04.628 [DEBUG] [Thread-122005 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:21:19.712 [DEBUG] [Thread-122006 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:21:27.467 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:21:27.469 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:21:34.753 [DEBUG] [Thread-122007 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:21:49.917 [DEBUG] [Thread-122008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:22:04.841 [DEBUG] [Thread-122009 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:22:04.982 [DEBUG] [Thread-122010 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:22:20.151 [DEBUG] [Thread-122011 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:22:27.672 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:22:27.674 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:22:35.362 [DEBUG] [Thread-122012 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:22:44.600 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T20:22:50.461 [DEBUG] [Thread-122013 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:23:05.305 [DEBUG] [Thread-122014 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:23:05.567 [DEBUG] [Thread-122015 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:23:14.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:23:14.660 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:23:14.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:23:16.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 22, 45), 35.71, 7.84, 0.0, 19.53, 19.66, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:23:16.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:22:45
2025-11-03T20:23:16.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:23:16.865 [DEBUG] [Thread-122016] [transport.py] [_log()] starting thread (client mode): 0xed20a90
2025-11-03T20:23:16.868 [DEBUG] [Thread-122016] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:23:16.869 [DEBUG] [Thread-122016] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:23:16.869 [INFO] [Thread-122016] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:23:16.879 [DEBUG] [Thread-122016] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:23:16.880 [DEBUG] [Thread-122016] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:23:16.880 [DEBUG] [Thread-122016] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:23:16.880 [DEBUG] [Thread-122016] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:23:16.880 [DEBUG] [Thread-122016] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:23:16.880 [DEBUG] [Thread-122016] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:23:16.880 [DEBUG] [Thread-122016] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:23:16.880 [DEBUG] [Thread-122016] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:23:16.880 [DEBUG] [Thread-122016] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:23:16.880 [DEBUG] [Thread-122016] [transport.py] [_log()] client lang: <none>
2025-11-03T20:23:16.880 [DEBUG] [Thread-122016] [transport.py] [_log()] server lang: <none>
2025-11-03T20:23:16.880 [DEBUG] [Thread-122016] [transport.py] [_log()] kex follows: False
2025-11-03T20:23:16.880 [DEBUG] [Thread-122016] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:23:16.881 [DEBUG] [Thread-122016] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:23:16.881 [DEBUG] [Thread-122016] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:23:16.881 [DEBUG] [Thread-122016] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:23:16.881 [DEBUG] [Thread-122016] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:23:16.881 [DEBUG] [Thread-122016] [transport.py] [_log()] Compression: none
2025-11-03T20:23:16.881 [DEBUG] [Thread-122016] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:23:16.918 [DEBUG] [Thread-122016] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:23:16.921 [DEBUG] [Thread-122016] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:23:16.925 [DEBUG] [Thread-122016] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:23:16.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:23:16.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:23:16.929 [DEBUG] [Thread-122016] [transport.py] [_log()] userauth is OK
2025-11-03T20:23:16.929 [DEBUG] [Thread-122016] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:23:16.929 [DEBUG] [Thread-122016] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:23:16.929 [DEBUG] [Thread-122016] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:23:16.929 [DEBUG] [Thread-122016] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:23:16.948 [INFO] [Thread-122016] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:23:16.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:23:17.589 [DEBUG] [Thread-122016] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:23:17.589 [DEBUG] [Thread-122016] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:23:17.590 [DEBUG] [Thread-122016] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:23:17.631 [DEBUG] [Thread-122016] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:23:17.631 [DEBUG] [Thread-122016] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:23:17.633 [DEBUG] [Thread-122016] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:23:17.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:23:17.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:23:17.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:23:17.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:23:17.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:23:17.664 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:23:17.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:23:17.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:23:17.667 [DEBUG] [Thread-122016] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:23:17.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:23:17.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.765726 -999.00  +19.70  21.44     12   -9.70 1 1 1 1 1     0    0 27.35 -87.40 ZNESW 25.5 21.4 304.0 28.6 19.8 -29.0 19.8 -27.9 19.4 -27.7 19.7 -28.7
2025-11-03T20:23:17.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:23:17.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:23:17.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.765726
2025-11-03T20:23:17.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:23:17.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:23:17.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:23:17.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:23:17.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:23:17.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:22:45', tmtdew=35.71, humidity=7.84, cloud=0.0, wind=19.53, temperature=19.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:22:45', seeing=1.06, atlas_timestamp='2025-11-03T18:22:38.726', atlas_cloud=1, atlas_rain=1, zp_data=[-0.04124999999999979, 0.08225000000000016, 0.03725000000000023, 0.022499999999999076, 0.07949999999999946, 0.09925000000000139, -0.05650000000000155, -0.003750000000000142, -0.1725000000000012, 0.010000000000001563, 0.1247499999999988, 0.10599999999999987, 0.18799999999999883, -0.07425000000000104, -0.04800000000000004, -0.22750000000000092, -0.21674999999999933, 0.03200000000000003, 0.16999999999999993, 0.11724999999999852, 0.04499999999999815, 0.07574999999999932, -0.15625, -0.04925000000000068, -0.04100000000000037, 0.20749999999999957, 0.19074999999999953, 0.1095000000000006, 0.03399999999999892, 0.07400000000000162, 0.19500000000000028, -0.08499999999999908, -0.09425000000000061], zp_timestamp='2025-11-03T18:21:00')
2025-11-03T20:23:17.778 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:23:17.791 [DEBUG] [Thread-122019] [transport.py] [_log()] starting thread (client mode): 0x11799030
2025-11-03T20:23:17.792 [DEBUG] [Thread-122019] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:23:17.806 [DEBUG] [Thread-122019] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:23:17.806 [INFO] [Thread-122019] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:23:17.814 [DEBUG] [Thread-122019] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:23:17.814 [DEBUG] [Thread-122019] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:23:17.814 [DEBUG] [Thread-122019] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:23:17.814 [DEBUG] [Thread-122019] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:23:17.815 [DEBUG] [Thread-122019] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:23:17.815 [DEBUG] [Thread-122019] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:23:17.815 [DEBUG] [Thread-122019] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:23:17.815 [DEBUG] [Thread-122019] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:23:17.815 [DEBUG] [Thread-122019] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:23:17.815 [DEBUG] [Thread-122019] [transport.py] [_log()] client lang: <none>
2025-11-03T20:23:17.815 [DEBUG] [Thread-122019] [transport.py] [_log()] server lang: <none>
2025-11-03T20:23:17.815 [DEBUG] [Thread-122019] [transport.py] [_log()] kex follows: False
2025-11-03T20:23:17.815 [DEBUG] [Thread-122019] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:23:17.815 [DEBUG] [Thread-122019] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:23:17.815 [DEBUG] [Thread-122019] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:23:17.815 [DEBUG] [Thread-122019] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:23:17.816 [DEBUG] [Thread-122019] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:23:17.816 [DEBUG] [Thread-122019] [transport.py] [_log()] Compression: none
2025-11-03T20:23:17.816 [DEBUG] [Thread-122019] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:23:17.871 [DEBUG] [Thread-122019] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:23:17.872 [DEBUG] [Thread-122019] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:23:17.872 [DEBUG] [Thread-122019] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:23:17.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:23:17.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:23:17.927 [DEBUG] [Thread-122019] [transport.py] [_log()] userauth is OK
2025-11-03T20:23:17.928 [DEBUG] [Thread-122019] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:23:17.928 [DEBUG] [Thread-122019] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:23:17.928 [DEBUG] [Thread-122019] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:23:17.928 [DEBUG] [Thread-122019] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:23:17.944 [INFO] [Thread-122019] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:23:17.944 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:23:17.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:23:18.793 [DEBUG] [Thread-122019] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:23:18.794 [DEBUG] [Thread-122019] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:23:18.847 [DEBUG] [Thread-122019] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:23:18.847 [DEBUG] [Thread-122019] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:23:18.861 [DEBUG] [Thread-122019] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:23:18.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:23:18.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:23:18.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:23:18.893 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:23:18.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:23:18.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:23:18.901 [DEBUG] [Thread-122019] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:23:20.618 [DEBUG] [Thread-122021 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:23:27.884 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:23:27.891 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:23:35.878 [DEBUG] [Thread-122022 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:23:48.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:23:48.960 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:23:49.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:23:50.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 23, 19), 35.67, 7.86, 0.0, 20.11, 19.61, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:23:50.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:23:19
2025-11-03T20:23:50.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:23:50.976 [DEBUG] [Thread-122023 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:23:51.069 [DEBUG] [Thread-122024] [transport.py] [_log()] starting thread (client mode): 0xed21840
2025-11-03T20:23:51.070 [DEBUG] [Thread-122024] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:23:51.080 [DEBUG] [Thread-122024] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:23:51.081 [INFO] [Thread-122024] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:23:51.088 [DEBUG] [Thread-122024] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:23:51.088 [DEBUG] [Thread-122024] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:23:51.089 [DEBUG] [Thread-122024] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:23:51.089 [DEBUG] [Thread-122024] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:23:51.089 [DEBUG] [Thread-122024] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:23:51.089 [DEBUG] [Thread-122024] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:23:51.089 [DEBUG] [Thread-122024] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:23:51.089 [DEBUG] [Thread-122024] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:23:51.089 [DEBUG] [Thread-122024] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:23:51.089 [DEBUG] [Thread-122024] [transport.py] [_log()] client lang: <none>
2025-11-03T20:23:51.089 [DEBUG] [Thread-122024] [transport.py] [_log()] server lang: <none>
2025-11-03T20:23:51.089 [DEBUG] [Thread-122024] [transport.py] [_log()] kex follows: False
2025-11-03T20:23:51.089 [DEBUG] [Thread-122024] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:23:51.090 [DEBUG] [Thread-122024] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:23:51.090 [DEBUG] [Thread-122024] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:23:51.090 [DEBUG] [Thread-122024] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:23:51.090 [DEBUG] [Thread-122024] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:23:51.090 [DEBUG] [Thread-122024] [transport.py] [_log()] Compression: none
2025-11-03T20:23:51.090 [DEBUG] [Thread-122024] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:23:51.127 [DEBUG] [Thread-122024] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:23:51.132 [DEBUG] [Thread-122024] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:23:51.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:23:51.136 [DEBUG] [Thread-122024] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:23:51.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:23:51.139 [DEBUG] [Thread-122024] [transport.py] [_log()] userauth is OK
2025-11-03T20:23:51.140 [DEBUG] [Thread-122024] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:23:51.140 [DEBUG] [Thread-122024] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:23:51.140 [DEBUG] [Thread-122024] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:23:51.140 [DEBUG] [Thread-122024] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:23:51.168 [INFO] [Thread-122024] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:23:51.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:23:51.817 [DEBUG] [Thread-122024] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:23:51.817 [DEBUG] [Thread-122024] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:23:51.818 [DEBUG] [Thread-122024] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:23:51.858 [DEBUG] [Thread-122024] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:23:51.858 [DEBUG] [Thread-122024] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:23:51.860 [DEBUG] [Thread-122024] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:23:51.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:23:51.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:23:51.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:23:51.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:23:51.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:23:51.886 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:23:51.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:23:51.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:23:51.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:23:51.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.766073 -999.00  +19.60  25.05     12   -9.80 1 1 1 1 1     0    0 26.90 -88.19 ZNESW 25.1 25.1 311.2 29.8 19.8 -29.0 19.7 -28.0 19.4 -27.9 19.7 -28.4
2025-11-03T20:23:51.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:23:51.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:23:51.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.766073
2025-11-03T20:23:51.894 [DEBUG] [Thread-122024] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:23:51.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:23:51.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:23:51.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:23:51.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:23:51.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:23:51.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:23:19', tmtdew=35.67, humidity=7.86, cloud=0.0, wind=20.11, temperature=19.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:23:20', seeing=1.05, atlas_timestamp='2025-11-03T18:23:08.707', atlas_cloud=1, atlas_rain=1, zp_data=[-0.04124999999999979, 0.08225000000000016, 0.03725000000000023, 0.022499999999999076, 0.07949999999999946, 0.09925000000000139, -0.05650000000000155, -0.003750000000000142, -0.1725000000000012, 0.010000000000001563, 0.1247499999999988, 0.10599999999999987, 0.18799999999999883, -0.07425000000000104, -0.04800000000000004, -0.22750000000000092, -0.21674999999999933, 0.03200000000000003, 0.16999999999999993, 0.11724999999999852, 0.04499999999999815, 0.07574999999999932, -0.15625, -0.04925000000000068, -0.04100000000000037, 0.20749999999999957, 0.19074999999999953, 0.1095000000000006, 0.03399999999999892, 0.07400000000000162, 0.19500000000000028, -0.08499999999999908, -0.09425000000000061], zp_timestamp='2025-11-03T18:21:00')
2025-11-03T20:23:52.008 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:23:52.020 [DEBUG] [Thread-122027] [transport.py] [_log()] starting thread (client mode): 0xed2f4c0
2025-11-03T20:23:52.020 [DEBUG] [Thread-122027] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:23:52.035 [DEBUG] [Thread-122027] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:23:52.035 [INFO] [Thread-122027] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:23:52.043 [DEBUG] [Thread-122027] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:23:52.043 [DEBUG] [Thread-122027] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:23:52.043 [DEBUG] [Thread-122027] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:23:52.043 [DEBUG] [Thread-122027] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:23:52.043 [DEBUG] [Thread-122027] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:23:52.043 [DEBUG] [Thread-122027] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:23:52.043 [DEBUG] [Thread-122027] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:23:52.043 [DEBUG] [Thread-122027] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:23:52.043 [DEBUG] [Thread-122027] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:23:52.043 [DEBUG] [Thread-122027] [transport.py] [_log()] client lang: <none>
2025-11-03T20:23:52.043 [DEBUG] [Thread-122027] [transport.py] [_log()] server lang: <none>
2025-11-03T20:23:52.043 [DEBUG] [Thread-122027] [transport.py] [_log()] kex follows: False
2025-11-03T20:23:52.043 [DEBUG] [Thread-122027] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:23:52.043 [DEBUG] [Thread-122027] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:23:52.043 [DEBUG] [Thread-122027] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:23:52.043 [DEBUG] [Thread-122027] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:23:52.043 [DEBUG] [Thread-122027] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:23:52.043 [DEBUG] [Thread-122027] [transport.py] [_log()] Compression: none
2025-11-03T20:23:52.043 [DEBUG] [Thread-122027] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:23:52.099 [DEBUG] [Thread-122027] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:23:52.100 [DEBUG] [Thread-122027] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:23:52.100 [DEBUG] [Thread-122027] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:23:52.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:23:52.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:23:52.156 [DEBUG] [Thread-122027] [transport.py] [_log()] userauth is OK
2025-11-03T20:23:52.156 [DEBUG] [Thread-122027] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:23:52.156 [DEBUG] [Thread-122027] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:23:52.156 [DEBUG] [Thread-122027] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:23:52.156 [DEBUG] [Thread-122027] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:23:52.174 [INFO] [Thread-122027] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:23:52.174 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:23:52.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:23:53.002 [DEBUG] [Thread-122027] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:23:53.003 [DEBUG] [Thread-122027] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:23:53.050 [DEBUG] [Thread-122027] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:23:53.050 [DEBUG] [Thread-122027] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:23:53.058 [DEBUG] [Thread-122027] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:23:53.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:23:53.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:23:53.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:23:53.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:23:53.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:23:53.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:23:53.092 [DEBUG] [Thread-122027] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:24:05.734 [DEBUG] [Thread-122029 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:24:06.079 [DEBUG] [Thread-122030 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:24:21.317 [DEBUG] [Thread-122031 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:24:23.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:24:23.108 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:24:23.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:24:25.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 23, 52), 35.72, 7.86, 0.0, 23.54, 19.61, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:24:25.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:23:52
2025-11-03T20:24:25.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:24:25.511 [DEBUG] [Thread-122032] [transport.py] [_log()] starting thread (client mode): 0xedc6ef0
2025-11-03T20:24:25.512 [DEBUG] [Thread-122032] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:24:25.522 [DEBUG] [Thread-122032] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:24:25.522 [INFO] [Thread-122032] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:24:25.528 [DEBUG] [Thread-122032] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:24:25.529 [DEBUG] [Thread-122032] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:24:25.529 [DEBUG] [Thread-122032] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:24:25.529 [DEBUG] [Thread-122032] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:24:25.529 [DEBUG] [Thread-122032] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:24:25.529 [DEBUG] [Thread-122032] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:24:25.529 [DEBUG] [Thread-122032] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:24:25.529 [DEBUG] [Thread-122032] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:24:25.529 [DEBUG] [Thread-122032] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:24:25.529 [DEBUG] [Thread-122032] [transport.py] [_log()] client lang: <none>
2025-11-03T20:24:25.530 [DEBUG] [Thread-122032] [transport.py] [_log()] server lang: <none>
2025-11-03T20:24:25.530 [DEBUG] [Thread-122032] [transport.py] [_log()] kex follows: False
2025-11-03T20:24:25.530 [DEBUG] [Thread-122032] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:24:25.531 [DEBUG] [Thread-122032] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:24:25.531 [DEBUG] [Thread-122032] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:24:25.531 [DEBUG] [Thread-122032] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:24:25.531 [DEBUG] [Thread-122032] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:24:25.531 [DEBUG] [Thread-122032] [transport.py] [_log()] Compression: none
2025-11-03T20:24:25.531 [DEBUG] [Thread-122032] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:24:25.574 [DEBUG] [Thread-122032] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:24:25.581 [DEBUG] [Thread-122032] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:24:25.583 [DEBUG] [Thread-122032] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:24:25.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:24:25.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:24:25.589 [DEBUG] [Thread-122032] [transport.py] [_log()] userauth is OK
2025-11-03T20:24:25.590 [DEBUG] [Thread-122032] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:24:25.590 [DEBUG] [Thread-122032] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:24:25.590 [DEBUG] [Thread-122032] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:24:25.590 [DEBUG] [Thread-122032] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:24:25.622 [INFO] [Thread-122032] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:24:25.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:24:26.286 [DEBUG] [Thread-122032] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:24:26.286 [DEBUG] [Thread-122032] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:24:26.287 [DEBUG] [Thread-122032] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:24:26.327 [DEBUG] [Thread-122032] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:24:26.327 [DEBUG] [Thread-122032] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:24:26.333 [DEBUG] [Thread-122032] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:24:26.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:24:26.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:24:26.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:24:26.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:24:26.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:24:26.359 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:24:26.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:24:26.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:24:26.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:24:26.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.766420 -999.00  +19.70  25.52     12   -9.70 1 1 1 1 1     0    0 27.16 -84.11 ZNESW 25.5 25.5 307.4 31.1 19.8 -28.9 19.7 -27.9 19.4 -27.5 19.7 -28.6
2025-11-03T20:24:26.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:24:26.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:24:26.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.766420
2025-11-03T20:24:26.369 [DEBUG] [Thread-122032] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:24:26.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:24:26.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:24:26.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:24:26.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:24:26.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:24:26.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:23:52', tmtdew=35.72, humidity=7.86, cloud=0.0, wind=23.54, temperature=19.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:23:53', seeing=1.14, atlas_timestamp='2025-11-03T18:23:38.688', atlas_cloud=1, atlas_rain=1, zp_data=[-0.04124999999999979, 0.08225000000000016, 0.03725000000000023, 0.022499999999999076, 0.07949999999999946, 0.09925000000000139, -0.05650000000000155, -0.003750000000000142, -0.1725000000000012, 0.010000000000001563, 0.1247499999999988, 0.10599999999999987, 0.18799999999999883, -0.07425000000000104, -0.04800000000000004, -0.22750000000000092, -0.21674999999999933, 0.03200000000000003, 0.16999999999999993, 0.11724999999999852, 0.04499999999999815, 0.07574999999999932, -0.15625, -0.04925000000000068, -0.04100000000000037, 0.20749999999999957, 0.19074999999999953, 0.1095000000000006, 0.03399999999999892, 0.07400000000000162, 0.19500000000000028, -0.08499999999999908, -0.09425000000000061], zp_timestamp='2025-11-03T18:21:00')
2025-11-03T20:24:26.483 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:24:26.494 [DEBUG] [Thread-122035] [transport.py] [_log()] starting thread (client mode): 0xed06920
2025-11-03T20:24:26.494 [DEBUG] [Thread-122035] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:24:26.509 [DEBUG] [Thread-122035] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:24:26.509 [INFO] [Thread-122035] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:24:26.517 [DEBUG] [Thread-122035] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:24:26.517 [DEBUG] [Thread-122035] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:24:26.517 [DEBUG] [Thread-122035] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:24:26.517 [DEBUG] [Thread-122035] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:24:26.517 [DEBUG] [Thread-122035] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:24:26.518 [DEBUG] [Thread-122035] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:24:26.518 [DEBUG] [Thread-122035] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:24:26.518 [DEBUG] [Thread-122035] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:24:26.518 [DEBUG] [Thread-122035] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:24:26.518 [DEBUG] [Thread-122035] [transport.py] [_log()] client lang: <none>
2025-11-03T20:24:26.518 [DEBUG] [Thread-122035] [transport.py] [_log()] server lang: <none>
2025-11-03T20:24:26.518 [DEBUG] [Thread-122035] [transport.py] [_log()] kex follows: False
2025-11-03T20:24:26.518 [DEBUG] [Thread-122035] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:24:26.518 [DEBUG] [Thread-122035] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:24:26.519 [DEBUG] [Thread-122035] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:24:26.519 [DEBUG] [Thread-122035] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:24:26.519 [DEBUG] [Thread-122035] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:24:26.519 [DEBUG] [Thread-122035] [transport.py] [_log()] Compression: none
2025-11-03T20:24:26.519 [DEBUG] [Thread-122035] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:24:26.583 [DEBUG] [Thread-122035] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:24:26.583 [DEBUG] [Thread-122035] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:24:26.584 [DEBUG] [Thread-122035] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:24:26.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:24:26.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:24:26.640 [DEBUG] [Thread-122035] [transport.py] [_log()] userauth is OK
2025-11-03T20:24:26.640 [DEBUG] [Thread-122035] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:24:26.640 [DEBUG] [Thread-122035] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:24:26.640 [DEBUG] [Thread-122035] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:24:26.641 [DEBUG] [Thread-122035] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:24:26.663 [INFO] [Thread-122035] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:24:26.663 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:24:26.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:24:27.506 [DEBUG] [Thread-122035] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:24:27.506 [DEBUG] [Thread-122035] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:24:27.555 [DEBUG] [Thread-122035] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:24:27.555 [DEBUG] [Thread-122035] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:24:27.563 [DEBUG] [Thread-122035] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:24:27.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:24:27.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:24:27.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:24:27.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:24:27.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:24:27.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:24:27.599 [DEBUG] [Thread-122035] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:24:28.096 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:24:28.097 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:24:36.462 [DEBUG] [Thread-122037 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:24:51.663 [DEBUG] [Thread-122038 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:24:57.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:24:57.624 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:24:57.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:24:59.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 24, 26), 35.69, 7.88, 0.0, 22.23, 19.59, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:24:59.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:24:26
2025-11-03T20:24:59.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:24:59.947 [DEBUG] [Thread-122039] [transport.py] [_log()] starting thread (client mode): 0xed05180
2025-11-03T20:24:59.948 [DEBUG] [Thread-122039] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:24:59.949 [DEBUG] [Thread-122039] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:24:59.949 [INFO] [Thread-122039] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:24:59.953 [DEBUG] [Thread-122039] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:24:59.953 [DEBUG] [Thread-122039] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:24:59.953 [DEBUG] [Thread-122039] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:24:59.953 [DEBUG] [Thread-122039] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:24:59.953 [DEBUG] [Thread-122039] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:24:59.953 [DEBUG] [Thread-122039] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:24:59.953 [DEBUG] [Thread-122039] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:24:59.953 [DEBUG] [Thread-122039] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:24:59.953 [DEBUG] [Thread-122039] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:24:59.953 [DEBUG] [Thread-122039] [transport.py] [_log()] client lang: <none>
2025-11-03T20:24:59.953 [DEBUG] [Thread-122039] [transport.py] [_log()] server lang: <none>
2025-11-03T20:24:59.954 [DEBUG] [Thread-122039] [transport.py] [_log()] kex follows: False
2025-11-03T20:24:59.954 [DEBUG] [Thread-122039] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:24:59.954 [DEBUG] [Thread-122039] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:24:59.954 [DEBUG] [Thread-122039] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:24:59.954 [DEBUG] [Thread-122039] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:24:59.954 [DEBUG] [Thread-122039] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:24:59.954 [DEBUG] [Thread-122039] [transport.py] [_log()] Compression: none
2025-11-03T20:24:59.954 [DEBUG] [Thread-122039] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:24:59.985 [DEBUG] [Thread-122039] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:24:59.987 [DEBUG] [Thread-122039] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:24:59.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:24:59.991 [DEBUG] [Thread-122039] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:24:59.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:24:59.992 [DEBUG] [Thread-122039] [transport.py] [_log()] userauth is OK
2025-11-03T20:24:59.992 [DEBUG] [Thread-122039] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:24:59.992 [DEBUG] [Thread-122039] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:24:59.993 [DEBUG] [Thread-122039] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:24:59.993 [DEBUG] [Thread-122039] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:25:00.009 [INFO] [Thread-122039] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:25:00.012 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:25:00.636 [DEBUG] [Thread-122039] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:25:00.636 [DEBUG] [Thread-122039] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:25:00.637 [DEBUG] [Thread-122039] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:25:00.678 [DEBUG] [Thread-122039] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:25:00.678 [DEBUG] [Thread-122039] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:25:00.680 [DEBUG] [Thread-122039] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:25:00.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:25:00.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:25:00.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:25:00.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:25:00.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:25:00.712 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:25:00.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:25:00.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:25:00.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:25:00.714 [DEBUG] [Thread-122039] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:25:00.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.766768 -999.00  +19.60  20.58     12   -9.70 1 1 1 1 1     0    0 27.25 -77.95 ZNESW 17.1 20.6 310.0 28.5 19.8 -29.1 19.7 -28.0 19.4 -27.8 19.7 -28.6
2025-11-03T20:25:00.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:25:00.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:25:00.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.766768
2025-11-03T20:25:00.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:25:00.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:25:00.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:25:00.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:25:00.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:25:00.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:24:26', tmtdew=35.69, humidity=7.88, cloud=0.0, wind=22.23, temperature=19.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:24:26', seeing=1.02, atlas_timestamp='2025-11-03T18:24:08.755', atlas_cloud=1, atlas_rain=1, zp_data=[-0.04124999999999979, 0.08225000000000016, 0.03725000000000023, 0.022499999999999076, 0.07949999999999946, 0.09925000000000139, -0.05650000000000155, -0.003750000000000142, -0.1725000000000012, 0.010000000000001563, 0.1247499999999988, 0.10599999999999987, 0.18799999999999883, -0.07425000000000104, -0.04800000000000004, -0.22750000000000092, -0.21674999999999933, 0.03200000000000003, 0.16999999999999993, 0.11724999999999852, 0.04499999999999815, 0.07574999999999932, -0.15625, -0.04925000000000068, -0.04100000000000037, 0.20749999999999957, 0.19074999999999953, 0.1095000000000006, 0.03399999999999892, 0.07400000000000162, 0.19500000000000028, -0.08499999999999908, -0.09425000000000061], zp_timestamp='2025-11-03T18:21:00')
2025-11-03T20:25:00.830 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:25:00.842 [DEBUG] [Thread-122042] [transport.py] [_log()] starting thread (client mode): 0x141da470
2025-11-03T20:25:00.842 [DEBUG] [Thread-122042] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:25:00.856 [DEBUG] [Thread-122042] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:25:00.857 [INFO] [Thread-122042] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:25:00.864 [DEBUG] [Thread-122042] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:25:00.864 [DEBUG] [Thread-122042] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:25:00.864 [DEBUG] [Thread-122042] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:25:00.864 [DEBUG] [Thread-122042] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:25:00.864 [DEBUG] [Thread-122042] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:25:00.864 [DEBUG] [Thread-122042] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:25:00.864 [DEBUG] [Thread-122042] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:25:00.864 [DEBUG] [Thread-122042] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:25:00.864 [DEBUG] [Thread-122042] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:25:00.864 [DEBUG] [Thread-122042] [transport.py] [_log()] client lang: <none>
2025-11-03T20:25:00.864 [DEBUG] [Thread-122042] [transport.py] [_log()] server lang: <none>
2025-11-03T20:25:00.864 [DEBUG] [Thread-122042] [transport.py] [_log()] kex follows: False
2025-11-03T20:25:00.864 [DEBUG] [Thread-122042] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:25:00.864 [DEBUG] [Thread-122042] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:25:00.864 [DEBUG] [Thread-122042] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:25:00.865 [DEBUG] [Thread-122042] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:25:00.865 [DEBUG] [Thread-122042] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:25:00.865 [DEBUG] [Thread-122042] [transport.py] [_log()] Compression: none
2025-11-03T20:25:00.865 [DEBUG] [Thread-122042] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:25:00.919 [DEBUG] [Thread-122042] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:25:00.919 [DEBUG] [Thread-122042] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:25:00.920 [DEBUG] [Thread-122042] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:25:00.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:25:00.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:25:00.977 [DEBUG] [Thread-122042] [transport.py] [_log()] userauth is OK
2025-11-03T20:25:00.977 [DEBUG] [Thread-122042] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:25:00.977 [DEBUG] [Thread-122042] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:25:00.977 [DEBUG] [Thread-122042] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:25:00.977 [DEBUG] [Thread-122042] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:25:00.994 [INFO] [Thread-122042] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:25:00.995 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:25:00.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:25:01.854 [DEBUG] [Thread-122042] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:25:01.854 [DEBUG] [Thread-122042] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:25:01.903 [DEBUG] [Thread-122042] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:25:01.903 [DEBUG] [Thread-122042] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:25:01.916 [DEBUG] [Thread-122042] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:25:01.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:25:01.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:25:01.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:25:01.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:25:01.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:25:01.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:25:01.950 [DEBUG] [Thread-122042] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:25:06.095 [DEBUG] [Thread-122044 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:25:06.723 [DEBUG] [Thread-122045 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:25:21.865 [DEBUG] [Thread-122046 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:25:28.309 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:25:28.310 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:25:28.338 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:25:31.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:25:31.951 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:25:32.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:25:33.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 24, 59), 35.7, 7.86, 0.0, 20.1, 19.53, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:25:33.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:24:59
2025-11-03T20:25:34.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:25:34.212 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:25:34.340 [DEBUG] [Thread-122047] [transport.py] [_log()] starting thread (client mode): 0xed06ad0
2025-11-03T20:25:34.341 [DEBUG] [Thread-122047] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:25:34.342 [DEBUG] [Thread-122047] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:25:34.342 [INFO] [Thread-122047] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:25:34.349 [DEBUG] [Thread-122047] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:25:34.349 [DEBUG] [Thread-122047] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:25:34.349 [DEBUG] [Thread-122047] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:25:34.349 [DEBUG] [Thread-122047] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:25:34.349 [DEBUG] [Thread-122047] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:25:34.349 [DEBUG] [Thread-122047] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:25:34.349 [DEBUG] [Thread-122047] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:25:34.349 [DEBUG] [Thread-122047] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:25:34.349 [DEBUG] [Thread-122047] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:25:34.349 [DEBUG] [Thread-122047] [transport.py] [_log()] client lang: <none>
2025-11-03T20:25:34.349 [DEBUG] [Thread-122047] [transport.py] [_log()] server lang: <none>
2025-11-03T20:25:34.349 [DEBUG] [Thread-122047] [transport.py] [_log()] kex follows: False
2025-11-03T20:25:34.349 [DEBUG] [Thread-122047] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:25:34.350 [DEBUG] [Thread-122047] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:25:34.350 [DEBUG] [Thread-122047] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:25:34.350 [DEBUG] [Thread-122047] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:25:34.350 [DEBUG] [Thread-122047] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:25:34.350 [DEBUG] [Thread-122047] [transport.py] [_log()] Compression: none
2025-11-03T20:25:34.350 [DEBUG] [Thread-122047] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:25:34.384 [DEBUG] [Thread-122047] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:25:34.388 [DEBUG] [Thread-122047] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:25:34.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:25:34.391 [DEBUG] [Thread-122047] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:25:34.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:25:34.393 [DEBUG] [Thread-122047] [transport.py] [_log()] userauth is OK
2025-11-03T20:25:34.393 [DEBUG] [Thread-122047] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:25:34.393 [DEBUG] [Thread-122047] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:25:34.393 [DEBUG] [Thread-122047] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:25:34.393 [DEBUG] [Thread-122047] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:25:34.422 [INFO] [Thread-122047] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:25:34.426 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:25:35.079 [DEBUG] [Thread-122047] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:25:35.079 [DEBUG] [Thread-122047] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:25:35.081 [DEBUG] [Thread-122047] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:25:35.119 [DEBUG] [Thread-122047] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:25:35.120 [DEBUG] [Thread-122047] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:25:35.122 [DEBUG] [Thread-122047] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:25:35.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:25:35.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:25:35.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:25:35.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:25:35.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:25:35.145 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:25:35.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:25:35.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:25:35.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:25:35.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.767462 -999.00  +19.50  25.01     12   -9.80 1 1 1 1 1     0    0 27.68 -77.29 ZNESW 27.4 25.0 305.2 30.7 19.7 -29.0 19.6 -27.9 19.4 -27.8 19.6 -28.5
2025-11-03T20:25:35.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:25:35.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:25:35.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.767462
2025-11-03T20:25:35.153 [DEBUG] [Thread-122047] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:25:35.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:25:35.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:25:35.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:25:35.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:25:35.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:25:35.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:24:59', tmtdew=35.7, humidity=7.86, cloud=0.0, wind=20.1, temperature=19.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:24:59', seeing=1.02, atlas_timestamp='2025-11-03T18:25:08.717', atlas_cloud=1, atlas_rain=1, zp_data=[-0.04124999999999979, 0.08225000000000016, 0.03725000000000023, 0.022499999999999076, 0.07949999999999946, 0.09925000000000139, -0.05650000000000155, -0.003750000000000142, -0.1725000000000012, 0.010000000000001563, 0.1247499999999988, 0.10599999999999987, 0.18799999999999883, -0.07425000000000104, -0.04800000000000004, -0.22750000000000092, -0.21674999999999933, 0.03200000000000003, 0.16999999999999993, 0.11724999999999852, 0.04499999999999815, 0.07574999999999932, -0.15625, -0.04925000000000068, -0.04100000000000037, 0.20749999999999957, 0.19074999999999953, 0.1095000000000006, 0.03399999999999892, 0.07400000000000162, 0.19500000000000028, -0.08499999999999908, -0.09425000000000061], zp_timestamp='2025-11-03T18:21:00')
2025-11-03T20:25:35.261 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:25:35.272 [DEBUG] [Thread-122050] [transport.py] [_log()] starting thread (client mode): 0x1179a2f0
2025-11-03T20:25:35.272 [DEBUG] [Thread-122050] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:25:35.288 [DEBUG] [Thread-122050] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:25:35.288 [INFO] [Thread-122050] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:25:35.297 [DEBUG] [Thread-122050] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:25:35.298 [DEBUG] [Thread-122050] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:25:35.298 [DEBUG] [Thread-122050] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:25:35.298 [DEBUG] [Thread-122050] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:25:35.298 [DEBUG] [Thread-122050] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:25:35.298 [DEBUG] [Thread-122050] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:25:35.298 [DEBUG] [Thread-122050] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:25:35.298 [DEBUG] [Thread-122050] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:25:35.298 [DEBUG] [Thread-122050] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:25:35.298 [DEBUG] [Thread-122050] [transport.py] [_log()] client lang: <none>
2025-11-03T20:25:35.298 [DEBUG] [Thread-122050] [transport.py] [_log()] server lang: <none>
2025-11-03T20:25:35.298 [DEBUG] [Thread-122050] [transport.py] [_log()] kex follows: False
2025-11-03T20:25:35.298 [DEBUG] [Thread-122050] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:25:35.298 [DEBUG] [Thread-122050] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:25:35.298 [DEBUG] [Thread-122050] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:25:35.298 [DEBUG] [Thread-122050] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:25:35.298 [DEBUG] [Thread-122050] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:25:35.298 [DEBUG] [Thread-122050] [transport.py] [_log()] Compression: none
2025-11-03T20:25:35.298 [DEBUG] [Thread-122050] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:25:35.360 [DEBUG] [Thread-122050] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:25:35.360 [DEBUG] [Thread-122050] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:25:35.360 [DEBUG] [Thread-122050] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:25:35.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:25:35.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:25:35.418 [DEBUG] [Thread-122050] [transport.py] [_log()] userauth is OK
2025-11-03T20:25:35.418 [DEBUG] [Thread-122050] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:25:35.418 [DEBUG] [Thread-122050] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:25:35.418 [DEBUG] [Thread-122050] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:25:35.418 [DEBUG] [Thread-122050] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:25:35.432 [INFO] [Thread-122050] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:25:35.432 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:25:35.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:25:36.267 [DEBUG] [Thread-122050] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:25:36.267 [DEBUG] [Thread-122050] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:25:36.315 [DEBUG] [Thread-122050] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:25:36.315 [DEBUG] [Thread-122050] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:25:36.324 [DEBUG] [Thread-122050] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:25:36.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:25:36.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:25:36.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:25:36.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:25:36.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:25:36.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:25:36.358 [DEBUG] [Thread-122050] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:25:36.943 [DEBUG] [Thread-122052 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:25:37.256 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:25:42.644 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:25:52.109 [DEBUG] [Thread-122053 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:26:06.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:26:06.434 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:26:06.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:26:06.620 [DEBUG] [Thread-122054 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:26:07.212 [DEBUG] [Thread-122055 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:26:08.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 25, 32), 35.61, 7.93, 0.0, 18.54, 19.56, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:26:08.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:25:32
2025-11-03T20:26:08.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:26:08.507 [DEBUG] [Thread-122056] [transport.py] [_log()] starting thread (client mode): 0xed10670
2025-11-03T20:26:08.508 [DEBUG] [Thread-122056] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:26:08.513 [DEBUG] [Thread-122056] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:26:08.513 [INFO] [Thread-122056] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:26:08.520 [DEBUG] [Thread-122056] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:26:08.521 [DEBUG] [Thread-122056] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:26:08.521 [DEBUG] [Thread-122056] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:26:08.521 [DEBUG] [Thread-122056] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:26:08.521 [DEBUG] [Thread-122056] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:26:08.521 [DEBUG] [Thread-122056] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:26:08.521 [DEBUG] [Thread-122056] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:26:08.521 [DEBUG] [Thread-122056] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:26:08.521 [DEBUG] [Thread-122056] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:26:08.521 [DEBUG] [Thread-122056] [transport.py] [_log()] client lang: <none>
2025-11-03T20:26:08.521 [DEBUG] [Thread-122056] [transport.py] [_log()] server lang: <none>
2025-11-03T20:26:08.521 [DEBUG] [Thread-122056] [transport.py] [_log()] kex follows: False
2025-11-03T20:26:08.521 [DEBUG] [Thread-122056] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:26:08.522 [DEBUG] [Thread-122056] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:26:08.522 [DEBUG] [Thread-122056] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:26:08.523 [DEBUG] [Thread-122056] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:26:08.523 [DEBUG] [Thread-122056] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:26:08.523 [DEBUG] [Thread-122056] [transport.py] [_log()] Compression: none
2025-11-03T20:26:08.523 [DEBUG] [Thread-122056] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:26:08.560 [DEBUG] [Thread-122056] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:26:08.564 [DEBUG] [Thread-122056] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:26:08.566 [DEBUG] [Thread-122056] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:26:08.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:26:08.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:26:08.570 [DEBUG] [Thread-122056] [transport.py] [_log()] userauth is OK
2025-11-03T20:26:08.570 [DEBUG] [Thread-122056] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:26:08.570 [DEBUG] [Thread-122056] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:26:08.570 [DEBUG] [Thread-122056] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:26:08.570 [DEBUG] [Thread-122056] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:26:08.589 [INFO] [Thread-122056] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:26:08.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:26:10.140 [DEBUG] [Thread-122056] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:26:10.140 [DEBUG] [Thread-122056] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:26:10.141 [DEBUG] [Thread-122056] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:26:10.182 [DEBUG] [Thread-122056] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:26:10.182 [DEBUG] [Thread-122056] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:26:10.185 [DEBUG] [Thread-122056] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:26:10.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:26:10.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:26:10.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:26:10.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:26:10.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:26:10.207 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:26:10.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:26:10.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:26:10.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:26:10.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.767809 -999.00  +19.50  32.39     12   -9.70 1 1 2 1 1     0    0 27.23 -81.33 ZNESW 32.4 32.4 309.6 35.1 19.7 -28.9 19.6 -27.9 19.4 -27.6 19.6 -28.6
2025-11-03T20:26:10.209 [DEBUG] [Thread-122056] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:26:10.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:26:10.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:26:10.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.767809
2025-11-03T20:26:10.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:26:10.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:26:10.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:26:10.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:26:10.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:26:10.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:25:32', tmtdew=35.61, humidity=7.93, cloud=0.0, wind=18.54, temperature=19.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:25:33', seeing=1.1, atlas_timestamp='2025-11-03T18:25:38.698', atlas_cloud=1, atlas_rain=1, zp_data=[-0.06925000000000026, 0.01925000000000132, -0.010749999999999815, 0.02049999999999841, 0.08450000000000024, 0.09325000000000117, -0.02999999999999936, -0.04025000000000034, -0.16550000000000153, 0.030999999999998806, 0.0727499999999992, 0.025000000000000355, 0.16999999999999993, 0.044749999999998735, 0.022999999999999687, -0.09500000000000064, -0.2947500000000005, 0.11800000000000033, 0.16699999999999982, 0.15474999999999994, 0.07449999999999868, 0.04824999999999946, -0.1302500000000002, -0.14925000000000033, -0.11300000000000132, 0.16900000000000048, 0.18874999999999886, 0.13349999999999973, 0.08399999999999963, 0.09000000000000163, 0.1490000000000009, -0.021999999999998465, -0.026250000000000995], zp_timestamp='2025-11-03T18:24:00')
2025-11-03T20:26:10.316 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:26:10.328 [DEBUG] [Thread-122059] [transport.py] [_log()] starting thread (client mode): 0x117991b0
2025-11-03T20:26:10.328 [DEBUG] [Thread-122059] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:26:10.343 [DEBUG] [Thread-122059] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:26:10.343 [INFO] [Thread-122059] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:26:10.353 [DEBUG] [Thread-122059] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:26:10.353 [DEBUG] [Thread-122059] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:26:10.353 [DEBUG] [Thread-122059] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:26:10.353 [DEBUG] [Thread-122059] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:26:10.353 [DEBUG] [Thread-122059] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:26:10.353 [DEBUG] [Thread-122059] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:26:10.353 [DEBUG] [Thread-122059] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:26:10.353 [DEBUG] [Thread-122059] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:26:10.353 [DEBUG] [Thread-122059] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:26:10.353 [DEBUG] [Thread-122059] [transport.py] [_log()] client lang: <none>
2025-11-03T20:26:10.353 [DEBUG] [Thread-122059] [transport.py] [_log()] server lang: <none>
2025-11-03T20:26:10.353 [DEBUG] [Thread-122059] [transport.py] [_log()] kex follows: False
2025-11-03T20:26:10.353 [DEBUG] [Thread-122059] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:26:10.353 [DEBUG] [Thread-122059] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:26:10.354 [DEBUG] [Thread-122059] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:26:10.354 [DEBUG] [Thread-122059] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:26:10.354 [DEBUG] [Thread-122059] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:26:10.354 [DEBUG] [Thread-122059] [transport.py] [_log()] Compression: none
2025-11-03T20:26:10.354 [DEBUG] [Thread-122059] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:26:10.408 [DEBUG] [Thread-122059] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:26:10.408 [DEBUG] [Thread-122059] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:26:10.408 [DEBUG] [Thread-122059] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:26:10.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:26:10.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:26:10.465 [DEBUG] [Thread-122059] [transport.py] [_log()] userauth is OK
2025-11-03T20:26:10.465 [DEBUG] [Thread-122059] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:26:10.465 [DEBUG] [Thread-122059] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:26:10.465 [DEBUG] [Thread-122059] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:26:10.465 [DEBUG] [Thread-122059] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:26:10.479 [INFO] [Thread-122059] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:26:10.479 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:26:10.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:26:11.293 [DEBUG] [Thread-122059] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:26:11.293 [DEBUG] [Thread-122059] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:26:11.341 [DEBUG] [Thread-122059] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:26:11.341 [DEBUG] [Thread-122059] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:26:11.350 [DEBUG] [Thread-122059] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:26:11.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:26:11.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:26:11.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:26:11.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:26:11.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:26:11.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:26:11.384 [DEBUG] [Thread-122059] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:26:22.325 [DEBUG] [Thread-122061 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:26:28.514 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:26:28.516 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:26:37.541 [DEBUG] [Thread-122062 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:26:41.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:26:41.409 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:26:41.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:26:42.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 26, 5), 35.61, 7.93, 0.0, 18.91, 19.56, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:26:42.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:26:05
2025-11-03T20:26:42.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:26:43.154 [DEBUG] [Thread-122063] [transport.py] [_log()] starting thread (client mode): 0x1179a8f0
2025-11-03T20:26:43.155 [DEBUG] [Thread-122063] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:26:43.156 [DEBUG] [Thread-122063] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:26:43.156 [INFO] [Thread-122063] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:26:43.164 [DEBUG] [Thread-122063] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:26:43.164 [DEBUG] [Thread-122063] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:26:43.164 [DEBUG] [Thread-122063] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:26:43.164 [DEBUG] [Thread-122063] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:26:43.164 [DEBUG] [Thread-122063] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:26:43.164 [DEBUG] [Thread-122063] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:26:43.164 [DEBUG] [Thread-122063] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:26:43.164 [DEBUG] [Thread-122063] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:26:43.164 [DEBUG] [Thread-122063] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:26:43.164 [DEBUG] [Thread-122063] [transport.py] [_log()] client lang: <none>
2025-11-03T20:26:43.164 [DEBUG] [Thread-122063] [transport.py] [_log()] server lang: <none>
2025-11-03T20:26:43.164 [DEBUG] [Thread-122063] [transport.py] [_log()] kex follows: False
2025-11-03T20:26:43.164 [DEBUG] [Thread-122063] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:26:43.165 [DEBUG] [Thread-122063] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:26:43.165 [DEBUG] [Thread-122063] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:26:43.165 [DEBUG] [Thread-122063] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:26:43.165 [DEBUG] [Thread-122063] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:26:43.165 [DEBUG] [Thread-122063] [transport.py] [_log()] Compression: none
2025-11-03T20:26:43.165 [DEBUG] [Thread-122063] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:26:43.207 [DEBUG] [Thread-122063] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:26:43.217 [DEBUG] [Thread-122063] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:26:43.218 [DEBUG] [Thread-122063] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:26:43.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:26:43.222 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:26:43.224 [DEBUG] [Thread-122063] [transport.py] [_log()] userauth is OK
2025-11-03T20:26:43.224 [DEBUG] [Thread-122063] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:26:43.224 [DEBUG] [Thread-122063] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:26:43.224 [DEBUG] [Thread-122063] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:26:43.224 [DEBUG] [Thread-122063] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:26:43.255 [INFO] [Thread-122063] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:26:43.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:26:43.908 [DEBUG] [Thread-122063] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:26:43.908 [DEBUG] [Thread-122063] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:26:43.909 [DEBUG] [Thread-122063] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:26:43.949 [DEBUG] [Thread-122063] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:26:43.949 [DEBUG] [Thread-122063] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:26:43.951 [DEBUG] [Thread-122063] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:26:43.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:26:43.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:26:43.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:26:43.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:26:43.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:26:43.990 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:26:43.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:26:43.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:26:43.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:26:43.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.768156 -999.00  +19.60  18.22     12   -9.80 1 1 1 1 1     0    0 27.48 -71.29 ZNESW 18.2 18.2 310.8 29.6 19.6 -28.9 19.6 -27.9 19.4 -27.8 19.6 -28.5
2025-11-03T20:26:43.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:26:43.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:26:43.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.768156
2025-11-03T20:26:44.003 [DEBUG] [Thread-122063] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:26:44.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:26:44.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:26:44.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:26:44.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:26:44.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:26:44.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:26:05', tmtdew=35.61, humidity=7.93, cloud=0.0, wind=18.91, temperature=19.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:26:40', seeing=1.13, atlas_timestamp='2025-11-03T18:26:08.678', atlas_cloud=1, atlas_rain=1, zp_data=[-0.06925000000000026, 0.01925000000000132, -0.010749999999999815, 0.02049999999999841, 0.08450000000000024, 0.09325000000000117, -0.02999999999999936, -0.04025000000000034, -0.16550000000000153, 0.030999999999998806, 0.0727499999999992, 0.025000000000000355, 0.16999999999999993, 0.044749999999998735, 0.022999999999999687, -0.09500000000000064, -0.2947500000000005, 0.11800000000000033, 0.16699999999999982, 0.15474999999999994, 0.07449999999999868, 0.04824999999999946, -0.1302500000000002, -0.14925000000000033, -0.11300000000000132, 0.16900000000000048, 0.18874999999999886, 0.13349999999999973, 0.08399999999999963, 0.09000000000000163, 0.1490000000000009, -0.021999999999998465, -0.026250000000000995], zp_timestamp='2025-11-03T18:24:00')
2025-11-03T20:26:44.096 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:26:44.109 [DEBUG] [Thread-122066] [transport.py] [_log()] starting thread (client mode): 0xed36ce0
2025-11-03T20:26:44.109 [DEBUG] [Thread-122066] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:26:44.126 [DEBUG] [Thread-122066] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:26:44.126 [INFO] [Thread-122066] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:26:44.135 [DEBUG] [Thread-122066] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:26:44.135 [DEBUG] [Thread-122066] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:26:44.135 [DEBUG] [Thread-122066] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:26:44.135 [DEBUG] [Thread-122066] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:26:44.135 [DEBUG] [Thread-122066] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:26:44.136 [DEBUG] [Thread-122066] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:26:44.136 [DEBUG] [Thread-122066] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:26:44.136 [DEBUG] [Thread-122066] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:26:44.136 [DEBUG] [Thread-122066] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:26:44.136 [DEBUG] [Thread-122066] [transport.py] [_log()] client lang: <none>
2025-11-03T20:26:44.136 [DEBUG] [Thread-122066] [transport.py] [_log()] server lang: <none>
2025-11-03T20:26:44.136 [DEBUG] [Thread-122066] [transport.py] [_log()] kex follows: False
2025-11-03T20:26:44.136 [DEBUG] [Thread-122066] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:26:44.136 [DEBUG] [Thread-122066] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:26:44.136 [DEBUG] [Thread-122066] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:26:44.136 [DEBUG] [Thread-122066] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:26:44.136 [DEBUG] [Thread-122066] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:26:44.136 [DEBUG] [Thread-122066] [transport.py] [_log()] Compression: none
2025-11-03T20:26:44.136 [DEBUG] [Thread-122066] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:26:44.193 [DEBUG] [Thread-122066] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:26:44.194 [DEBUG] [Thread-122066] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:26:44.194 [DEBUG] [Thread-122066] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:26:44.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:26:44.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:26:44.249 [DEBUG] [Thread-122066] [transport.py] [_log()] userauth is OK
2025-11-03T20:26:44.249 [DEBUG] [Thread-122066] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:26:44.249 [DEBUG] [Thread-122066] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:26:44.249 [DEBUG] [Thread-122066] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:26:44.249 [DEBUG] [Thread-122066] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:26:44.264 [INFO] [Thread-122066] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:26:44.264 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:26:44.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:26:45.095 [DEBUG] [Thread-122066] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:26:45.095 [DEBUG] [Thread-122066] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:26:45.144 [DEBUG] [Thread-122066] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:26:45.144 [DEBUG] [Thread-122066] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:26:45.153 [DEBUG] [Thread-122066] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:26:45.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:26:45.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:26:45.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:26:45.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:26:45.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:26:45.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:26:45.188 [DEBUG] [Thread-122066] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:26:52.616 [DEBUG] [Thread-122068 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:27:07.074 [DEBUG] [Thread-122069 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:27:07.796 [DEBUG] [Thread-122070 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:27:13.234 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:27:15.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:27:15.213 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:27:15.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:27:16.412 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:27:16.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 26, 39), 35.61, 7.89, 0.0, 20.89, 19.53, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:27:16.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:26:39
2025-11-03T20:27:16.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:27:16.874 [DEBUG] [Thread-122071] [transport.py] [_log()] starting thread (client mode): 0xedc4610
2025-11-03T20:27:16.875 [DEBUG] [Thread-122071] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:27:16.881 [DEBUG] [Thread-122071] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:27:16.881 [INFO] [Thread-122071] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:27:16.889 [DEBUG] [Thread-122071] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:27:16.889 [DEBUG] [Thread-122071] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:27:16.889 [DEBUG] [Thread-122071] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:27:16.889 [DEBUG] [Thread-122071] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:27:16.889 [DEBUG] [Thread-122071] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:27:16.889 [DEBUG] [Thread-122071] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:27:16.889 [DEBUG] [Thread-122071] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:27:16.889 [DEBUG] [Thread-122071] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:27:16.889 [DEBUG] [Thread-122071] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:27:16.889 [DEBUG] [Thread-122071] [transport.py] [_log()] client lang: <none>
2025-11-03T20:27:16.889 [DEBUG] [Thread-122071] [transport.py] [_log()] server lang: <none>
2025-11-03T20:27:16.889 [DEBUG] [Thread-122071] [transport.py] [_log()] kex follows: False
2025-11-03T20:27:16.889 [DEBUG] [Thread-122071] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:27:16.890 [DEBUG] [Thread-122071] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:27:16.890 [DEBUG] [Thread-122071] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:27:16.890 [DEBUG] [Thread-122071] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:27:16.890 [DEBUG] [Thread-122071] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:27:16.890 [DEBUG] [Thread-122071] [transport.py] [_log()] Compression: none
2025-11-03T20:27:16.890 [DEBUG] [Thread-122071] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:27:16.925 [DEBUG] [Thread-122071] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:27:16.928 [DEBUG] [Thread-122071] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:27:16.930 [DEBUG] [Thread-122071] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:27:16.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:27:16.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:27:16.933 [DEBUG] [Thread-122071] [transport.py] [_log()] userauth is OK
2025-11-03T20:27:16.933 [DEBUG] [Thread-122071] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:27:16.933 [DEBUG] [Thread-122071] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:27:16.933 [DEBUG] [Thread-122071] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:27:16.933 [DEBUG] [Thread-122071] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:27:16.951 [INFO] [Thread-122071] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:27:16.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:27:17.592 [DEBUG] [Thread-122071] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:27:17.592 [DEBUG] [Thread-122071] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:27:17.593 [DEBUG] [Thread-122071] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:27:17.633 [DEBUG] [Thread-122071] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:27:17.633 [DEBUG] [Thread-122071] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:27:17.636 [DEBUG] [Thread-122071] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:27:17.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:27:17.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:27:17.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:27:17.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:27:17.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:27:17.660 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:27:17.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:27:17.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:27:17.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:27:17.662 [DEBUG] [Thread-122071] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:27:17.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.768504 -999.00  +19.50  19.94     12   -9.70 1 1 1 1 1     0    0 27.68 -77.37 ZNESW 19.9 19.9 298.7 30.4 19.6 -29.0 19.6 -27.8 19.3 -27.8 19.6 -28.7
2025-11-03T20:27:17.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:27:17.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:27:17.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.768504
2025-11-03T20:27:17.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:27:17.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:27:17.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:27:17.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:27:17.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:27:17.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:26:39', tmtdew=35.61, humidity=7.89, cloud=0.0, wind=20.89, temperature=19.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:27:14', seeing=1.07, atlas_timestamp='2025-11-03T18:26:38.746', atlas_cloud=1, atlas_rain=1, zp_data=[-0.06925000000000026, 0.01925000000000132, -0.010749999999999815, 0.02049999999999841, 0.08450000000000024, 0.09325000000000117, -0.02999999999999936, -0.04025000000000034, -0.16550000000000153, 0.030999999999998806, 0.0727499999999992, 0.025000000000000355, 0.16999999999999993, 0.044749999999998735, 0.022999999999999687, -0.09500000000000064, -0.2947500000000005, 0.11800000000000033, 0.16699999999999982, 0.15474999999999994, 0.07449999999999868, 0.04824999999999946, -0.1302500000000002, -0.14925000000000033, -0.11300000000000132, 0.16900000000000048, 0.18874999999999886, 0.13349999999999973, 0.08399999999999963, 0.09000000000000163, 0.1490000000000009, -0.021999999999998465, -0.026250000000000995], zp_timestamp='2025-11-03T18:24:00')
2025-11-03T20:27:17.776 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:27:17.789 [DEBUG] [Thread-122074] [transport.py] [_log()] starting thread (client mode): 0x117996c0
2025-11-03T20:27:17.789 [DEBUG] [Thread-122074] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:27:17.804 [DEBUG] [Thread-122074] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:27:17.804 [INFO] [Thread-122074] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:27:17.812 [DEBUG] [Thread-122074] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:27:17.812 [DEBUG] [Thread-122074] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:27:17.812 [DEBUG] [Thread-122074] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:27:17.812 [DEBUG] [Thread-122074] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:27:17.812 [DEBUG] [Thread-122074] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:27:17.812 [DEBUG] [Thread-122074] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:27:17.812 [DEBUG] [Thread-122074] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:27:17.812 [DEBUG] [Thread-122074] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:27:17.812 [DEBUG] [Thread-122074] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:27:17.812 [DEBUG] [Thread-122074] [transport.py] [_log()] client lang: <none>
2025-11-03T20:27:17.812 [DEBUG] [Thread-122074] [transport.py] [_log()] server lang: <none>
2025-11-03T20:27:17.812 [DEBUG] [Thread-122074] [transport.py] [_log()] kex follows: False
2025-11-03T20:27:17.812 [DEBUG] [Thread-122074] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:27:17.812 [DEBUG] [Thread-122074] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:27:17.812 [DEBUG] [Thread-122074] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:27:17.812 [DEBUG] [Thread-122074] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:27:17.812 [DEBUG] [Thread-122074] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:27:17.812 [DEBUG] [Thread-122074] [transport.py] [_log()] Compression: none
2025-11-03T20:27:17.812 [DEBUG] [Thread-122074] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:27:17.870 [DEBUG] [Thread-122074] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:27:17.870 [DEBUG] [Thread-122074] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:27:17.871 [DEBUG] [Thread-122074] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:27:17.871 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:27:17.871 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:27:17.926 [DEBUG] [Thread-122074] [transport.py] [_log()] userauth is OK
2025-11-03T20:27:17.926 [DEBUG] [Thread-122074] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:27:17.926 [DEBUG] [Thread-122074] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:27:17.926 [DEBUG] [Thread-122074] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:27:17.926 [DEBUG] [Thread-122074] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:27:17.943 [INFO] [Thread-122074] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:27:17.943 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:27:17.943 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:27:18.804 [DEBUG] [Thread-122074] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:27:18.805 [DEBUG] [Thread-122074] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:27:18.852 [DEBUG] [Thread-122074] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:27:18.852 [DEBUG] [Thread-122074] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:27:18.861 [DEBUG] [Thread-122074] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:27:18.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:27:18.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:27:18.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:27:18.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:27:18.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:27:18.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:27:18.899 [DEBUG] [Thread-122074] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:27:21.495 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:27:22.903 [DEBUG] [Thread-122076 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:27:26.864 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:27:28.718 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:27:28.719 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:27:38.102 [DEBUG] [Thread-122077 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:27:46.269 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:27:48.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:27:48.897 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:27:48.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:27:49.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 27, 14), 35.62, 7.88, 0.0, 21.79, 19.48, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:27:49.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:27:14
2025-11-03T20:27:50.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:27:50.358 [DEBUG] [Thread-122078] [transport.py] [_log()] starting thread (client mode): 0x1179b0d0
2025-11-03T20:27:50.360 [DEBUG] [Thread-122078] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:27:50.360 [DEBUG] [Thread-122078] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:27:50.360 [INFO] [Thread-122078] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:27:50.364 [DEBUG] [Thread-122078] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:27:50.364 [DEBUG] [Thread-122078] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:27:50.364 [DEBUG] [Thread-122078] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:27:50.364 [DEBUG] [Thread-122078] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:27:50.364 [DEBUG] [Thread-122078] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:27:50.364 [DEBUG] [Thread-122078] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:27:50.364 [DEBUG] [Thread-122078] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:27:50.364 [DEBUG] [Thread-122078] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:27:50.364 [DEBUG] [Thread-122078] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:27:50.365 [DEBUG] [Thread-122078] [transport.py] [_log()] client lang: <none>
2025-11-03T20:27:50.365 [DEBUG] [Thread-122078] [transport.py] [_log()] server lang: <none>
2025-11-03T20:27:50.365 [DEBUG] [Thread-122078] [transport.py] [_log()] kex follows: False
2025-11-03T20:27:50.365 [DEBUG] [Thread-122078] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:27:50.365 [DEBUG] [Thread-122078] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:27:50.365 [DEBUG] [Thread-122078] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:27:50.365 [DEBUG] [Thread-122078] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:27:50.365 [DEBUG] [Thread-122078] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:27:50.365 [DEBUG] [Thread-122078] [transport.py] [_log()] Compression: none
2025-11-03T20:27:50.365 [DEBUG] [Thread-122078] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:27:50.393 [DEBUG] [Thread-122078] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:27:50.395 [DEBUG] [Thread-122078] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:27:50.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:27:50.397 [DEBUG] [Thread-122078] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:27:50.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:27:50.400 [DEBUG] [Thread-122078] [transport.py] [_log()] userauth is OK
2025-11-03T20:27:50.400 [DEBUG] [Thread-122078] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:27:50.400 [DEBUG] [Thread-122078] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:27:50.400 [DEBUG] [Thread-122078] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:27:50.400 [DEBUG] [Thread-122078] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:27:50.411 [INFO] [Thread-122078] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:27:50.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:27:50.666 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:27:51.010 [DEBUG] [Thread-122078] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:27:51.010 [DEBUG] [Thread-122078] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:27:51.011 [DEBUG] [Thread-122078] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:27:51.052 [DEBUG] [Thread-122078] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:27:51.053 [DEBUG] [Thread-122078] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:27:51.055 [DEBUG] [Thread-122078] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:27:51.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:27:51.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:27:51.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:27:51.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:27:51.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:27:51.077 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:27:51.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:27:51.077 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:27:51.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:27:51.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.768851 -999.00  +19.50  22.82     12   -9.80 1 1 1 1 1     0    0 27.23 -68.06 ZNESW 22.8 22.8 291.8 26.2 19.6 -28.9 19.6 -28.0 19.3 -27.8 19.6 -28.6
2025-11-03T20:27:51.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:27:51.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:27:51.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.768851
2025-11-03T20:27:51.083 [DEBUG] [Thread-122078] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:27:51.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:27:51.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:27:51.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:27:51.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:27:51.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:27:51.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:27:14', tmtdew=35.62, humidity=7.88, cloud=0.0, wind=21.79, temperature=19.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:27:48', seeing=1.15, atlas_timestamp='2025-11-03T18:27:08.726', atlas_cloud=1, atlas_rain=1, zp_data=[-0.06925000000000026, 0.01925000000000132, -0.010749999999999815, 0.02049999999999841, 0.08450000000000024, 0.09325000000000117, -0.02999999999999936, -0.04025000000000034, -0.16550000000000153, 0.030999999999998806, 0.0727499999999992, 0.025000000000000355, 0.16999999999999993, 0.044749999999998735, 0.022999999999999687, -0.09500000000000064, -0.2947500000000005, 0.11800000000000033, 0.16699999999999982, 0.15474999999999994, 0.07449999999999868, 0.04824999999999946, -0.1302500000000002, -0.14925000000000033, -0.11300000000000132, 0.16900000000000048, 0.18874999999999886, 0.13349999999999973, 0.08399999999999963, 0.09000000000000163, 0.1490000000000009, -0.021999999999998465, -0.026250000000000995], zp_timestamp='2025-11-03T18:24:00')
2025-11-03T20:27:51.176 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:27:51.189 [DEBUG] [Thread-122081] [transport.py] [_log()] starting thread (client mode): 0x11763790
2025-11-03T20:27:51.189 [DEBUG] [Thread-122081] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:27:51.203 [DEBUG] [Thread-122081] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:27:51.203 [INFO] [Thread-122081] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:27:51.211 [DEBUG] [Thread-122081] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:27:51.211 [DEBUG] [Thread-122081] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:27:51.211 [DEBUG] [Thread-122081] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:27:51.211 [DEBUG] [Thread-122081] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:27:51.211 [DEBUG] [Thread-122081] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:27:51.211 [DEBUG] [Thread-122081] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:27:51.211 [DEBUG] [Thread-122081] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:27:51.211 [DEBUG] [Thread-122081] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:27:51.211 [DEBUG] [Thread-122081] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:27:51.211 [DEBUG] [Thread-122081] [transport.py] [_log()] client lang: <none>
2025-11-03T20:27:51.211 [DEBUG] [Thread-122081] [transport.py] [_log()] server lang: <none>
2025-11-03T20:27:51.211 [DEBUG] [Thread-122081] [transport.py] [_log()] kex follows: False
2025-11-03T20:27:51.211 [DEBUG] [Thread-122081] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:27:51.211 [DEBUG] [Thread-122081] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:27:51.211 [DEBUG] [Thread-122081] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:27:51.211 [DEBUG] [Thread-122081] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:27:51.211 [DEBUG] [Thread-122081] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:27:51.211 [DEBUG] [Thread-122081] [transport.py] [_log()] Compression: none
2025-11-03T20:27:51.211 [DEBUG] [Thread-122081] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:27:51.274 [DEBUG] [Thread-122081] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:27:51.274 [DEBUG] [Thread-122081] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:27:51.274 [DEBUG] [Thread-122081] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:27:51.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:27:51.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:27:51.330 [DEBUG] [Thread-122081] [transport.py] [_log()] userauth is OK
2025-11-03T20:27:51.330 [DEBUG] [Thread-122081] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:27:51.330 [DEBUG] [Thread-122081] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:27:51.330 [DEBUG] [Thread-122081] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:27:51.330 [DEBUG] [Thread-122081] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:27:51.348 [INFO] [Thread-122081] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:27:51.349 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:27:51.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:27:52.178 [DEBUG] [Thread-122081] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:27:52.179 [DEBUG] [Thread-122081] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:27:52.227 [DEBUG] [Thread-122081] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:27:52.227 [DEBUG] [Thread-122081] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:27:52.236 [DEBUG] [Thread-122081] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:27:52.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:27:52.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:27:52.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:27:52.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:27:52.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:27:52.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:27:52.273 [DEBUG] [Thread-122081] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:27:53.169 [DEBUG] [Thread-122083 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:28:07.399 [DEBUG] [Thread-122084 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:28:08.342 [DEBUG] [Thread-122085 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:28:10.011 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:28:14.411 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:28:20.557 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:28:22.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:28:22.298 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:28:22.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:28:23.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 27, 47), 35.63, 7.91, 0.0, 23.4, 19.51, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:28:23.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:27:47
2025-11-03T20:28:23.441 [DEBUG] [Thread-122086 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:28:23.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:28:23.716 [DEBUG] [Thread-122087] [transport.py] [_log()] starting thread (client mode): 0xed07850
2025-11-03T20:28:23.717 [DEBUG] [Thread-122087] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:28:23.727 [DEBUG] [Thread-122087] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:28:23.728 [INFO] [Thread-122087] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:28:23.733 [DEBUG] [Thread-122087] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:28:23.733 [DEBUG] [Thread-122087] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:28:23.733 [DEBUG] [Thread-122087] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:28:23.733 [DEBUG] [Thread-122087] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:28:23.733 [DEBUG] [Thread-122087] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:28:23.733 [DEBUG] [Thread-122087] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:28:23.733 [DEBUG] [Thread-122087] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:28:23.733 [DEBUG] [Thread-122087] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:28:23.734 [DEBUG] [Thread-122087] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:28:23.734 [DEBUG] [Thread-122087] [transport.py] [_log()] client lang: <none>
2025-11-03T20:28:23.734 [DEBUG] [Thread-122087] [transport.py] [_log()] server lang: <none>
2025-11-03T20:28:23.734 [DEBUG] [Thread-122087] [transport.py] [_log()] kex follows: False
2025-11-03T20:28:23.734 [DEBUG] [Thread-122087] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:28:23.734 [DEBUG] [Thread-122087] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:28:23.734 [DEBUG] [Thread-122087] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:28:23.735 [DEBUG] [Thread-122087] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:28:23.735 [DEBUG] [Thread-122087] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:28:23.735 [DEBUG] [Thread-122087] [transport.py] [_log()] Compression: none
2025-11-03T20:28:23.735 [DEBUG] [Thread-122087] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:28:23.775 [DEBUG] [Thread-122087] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:28:23.778 [DEBUG] [Thread-122087] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:28:23.779 [DEBUG] [Thread-122087] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:28:23.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:28:23.781 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:28:23.783 [DEBUG] [Thread-122087] [transport.py] [_log()] userauth is OK
2025-11-03T20:28:23.783 [DEBUG] [Thread-122087] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:28:23.783 [DEBUG] [Thread-122087] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:28:23.783 [DEBUG] [Thread-122087] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:28:23.783 [DEBUG] [Thread-122087] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:28:23.812 [INFO] [Thread-122087] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:28:23.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:28:24.386 [DEBUG] [Thread-122087] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:28:24.386 [DEBUG] [Thread-122087] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:28:24.387 [DEBUG] [Thread-122087] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:28:24.428 [DEBUG] [Thread-122087] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:28:24.428 [DEBUG] [Thread-122087] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:28:24.430 [DEBUG] [Thread-122087] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:28:24.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:28:24.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:28:24.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:28:24.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:28:24.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:28:24.450 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:28:24.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:28:24.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:28:24.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:28:24.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.769545 -999.00  +19.50  20.99     12   -9.90 1 1 1 1 1     0    0 28.41 -59.90 ZNESW 21.0 21.0 297.0 30.6 19.6 -28.9 19.6 -27.7 19.3 -27.5 19.6 -28.4
2025-11-03T20:28:24.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:28:24.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:28:24.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.769545
2025-11-03T20:28:24.463 [DEBUG] [Thread-122087] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:28:24.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:28:24.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:28:24.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:28:24.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:28:24.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:28:24.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:27:47', tmtdew=35.63, humidity=7.91, cloud=0.0, wind=23.4, temperature=19.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:28:21', seeing=1.01, atlas_timestamp='2025-11-03T18:28:08.688', atlas_cloud=1, atlas_rain=1, zp_data=[-0.06925000000000026, 0.01925000000000132, -0.010749999999999815, 0.02049999999999841, 0.08450000000000024, 0.09325000000000117, -0.02999999999999936, -0.04025000000000034, -0.16550000000000153, 0.030999999999998806, 0.0727499999999992, 0.025000000000000355, 0.16999999999999993, 0.044749999999998735, 0.022999999999999687, -0.09500000000000064, -0.2947500000000005, 0.11800000000000033, 0.16699999999999982, 0.15474999999999994, 0.07449999999999868, 0.04824999999999946, -0.1302500000000002, -0.14925000000000033, -0.11300000000000132, 0.16900000000000048, 0.18874999999999886, 0.13349999999999973, 0.08399999999999963, 0.09000000000000163, 0.1490000000000009, -0.021999999999998465, -0.026250000000000995], zp_timestamp='2025-11-03T18:24:00')
2025-11-03T20:28:24.550 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:28:24.561 [DEBUG] [Thread-122090] [transport.py] [_log()] starting thread (client mode): 0x11799180
2025-11-03T20:28:24.562 [DEBUG] [Thread-122090] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:28:24.576 [DEBUG] [Thread-122090] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:28:24.576 [INFO] [Thread-122090] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:28:24.583 [DEBUG] [Thread-122090] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:28:24.583 [DEBUG] [Thread-122090] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:28:24.583 [DEBUG] [Thread-122090] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:28:24.584 [DEBUG] [Thread-122090] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:28:24.584 [DEBUG] [Thread-122090] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:28:24.584 [DEBUG] [Thread-122090] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:28:24.584 [DEBUG] [Thread-122090] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:28:24.584 [DEBUG] [Thread-122090] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:28:24.584 [DEBUG] [Thread-122090] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:28:24.584 [DEBUG] [Thread-122090] [transport.py] [_log()] client lang: <none>
2025-11-03T20:28:24.584 [DEBUG] [Thread-122090] [transport.py] [_log()] server lang: <none>
2025-11-03T20:28:24.584 [DEBUG] [Thread-122090] [transport.py] [_log()] kex follows: False
2025-11-03T20:28:24.584 [DEBUG] [Thread-122090] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:28:24.584 [DEBUG] [Thread-122090] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:28:24.584 [DEBUG] [Thread-122090] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:28:24.584 [DEBUG] [Thread-122090] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:28:24.584 [DEBUG] [Thread-122090] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:28:24.584 [DEBUG] [Thread-122090] [transport.py] [_log()] Compression: none
2025-11-03T20:28:24.584 [DEBUG] [Thread-122090] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:28:24.641 [DEBUG] [Thread-122090] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:28:24.641 [DEBUG] [Thread-122090] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:28:24.641 [DEBUG] [Thread-122090] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:28:24.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:28:24.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:28:24.698 [DEBUG] [Thread-122090] [transport.py] [_log()] userauth is OK
2025-11-03T20:28:24.698 [DEBUG] [Thread-122090] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:28:24.699 [DEBUG] [Thread-122090] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:28:24.699 [DEBUG] [Thread-122090] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:28:24.699 [DEBUG] [Thread-122090] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:28:24.720 [INFO] [Thread-122090] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:28:24.720 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:28:24.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:28:24.976 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:28:25.559 [DEBUG] [Thread-122090] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:28:25.559 [DEBUG] [Thread-122090] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:28:25.606 [DEBUG] [Thread-122090] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:28:25.606 [DEBUG] [Thread-122090] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:28:25.615 [DEBUG] [Thread-122090] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:28:25.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:28:25.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:28:25.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:28:25.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:28:25.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:28:25.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:28:25.650 [DEBUG] [Thread-122090] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:28:28.932 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:28:28.942 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:28:38.577 [DEBUG] [Thread-122092 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:28:53.786 [DEBUG] [Thread-122093 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:28:55.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:28:55.661 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:28:55.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:28:56.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 28, 20), 35.65, 7.89, 0.0, 22.81, 19.48, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:28:56.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:28:20
2025-11-03T20:28:56.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:28:57.076 [DEBUG] [Thread-122094] [transport.py] [_log()] starting thread (client mode): 0x1179bdc0
2025-11-03T20:28:57.077 [DEBUG] [Thread-122094] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:28:57.089 [DEBUG] [Thread-122094] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:28:57.089 [INFO] [Thread-122094] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:28:57.094 [DEBUG] [Thread-122094] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:28:57.094 [DEBUG] [Thread-122094] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:28:57.094 [DEBUG] [Thread-122094] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:28:57.094 [DEBUG] [Thread-122094] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:28:57.094 [DEBUG] [Thread-122094] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:28:57.094 [DEBUG] [Thread-122094] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:28:57.094 [DEBUG] [Thread-122094] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:28:57.095 [DEBUG] [Thread-122094] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:28:57.095 [DEBUG] [Thread-122094] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:28:57.095 [DEBUG] [Thread-122094] [transport.py] [_log()] client lang: <none>
2025-11-03T20:28:57.095 [DEBUG] [Thread-122094] [transport.py] [_log()] server lang: <none>
2025-11-03T20:28:57.095 [DEBUG] [Thread-122094] [transport.py] [_log()] kex follows: False
2025-11-03T20:28:57.095 [DEBUG] [Thread-122094] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:28:57.095 [DEBUG] [Thread-122094] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:28:57.095 [DEBUG] [Thread-122094] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:28:57.095 [DEBUG] [Thread-122094] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:28:57.096 [DEBUG] [Thread-122094] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:28:57.096 [DEBUG] [Thread-122094] [transport.py] [_log()] Compression: none
2025-11-03T20:28:57.096 [DEBUG] [Thread-122094] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:28:57.127 [DEBUG] [Thread-122094] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:28:57.131 [DEBUG] [Thread-122094] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:28:57.132 [DEBUG] [Thread-122094] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:28:57.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:28:57.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:28:57.136 [DEBUG] [Thread-122094] [transport.py] [_log()] userauth is OK
2025-11-03T20:28:57.136 [DEBUG] [Thread-122094] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:28:57.136 [DEBUG] [Thread-122094] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:28:57.136 [DEBUG] [Thread-122094] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:28:57.136 [DEBUG] [Thread-122094] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:28:57.153 [INFO] [Thread-122094] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:28:57.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:28:57.793 [DEBUG] [Thread-122094] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:28:57.793 [DEBUG] [Thread-122094] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:28:57.794 [DEBUG] [Thread-122094] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:28:57.834 [DEBUG] [Thread-122094] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:28:57.834 [DEBUG] [Thread-122094] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:28:57.837 [DEBUG] [Thread-122094] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:28:57.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:28:57.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:28:57.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:28:57.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:28:57.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:28:57.859 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:28:57.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:28:57.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:28:57.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:28:57.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.769893 -999.00  +19.50  21.71     12   -9.90 1 1 1 1 1     0    0 28.24 -56.76 ZNESW 21.7 21.7 302.8 28.9 19.6 -28.8 19.5 -27.9 19.3 -27.5 19.5 -28.5
2025-11-03T20:28:57.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:28:57.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:28:57.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.769893
2025-11-03T20:28:57.866 [DEBUG] [Thread-122094] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:28:57.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:28:57.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:28:57.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:28:57.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:28:57.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:28:57.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:28:20', tmtdew=35.65, humidity=7.89, cloud=0.0, wind=22.81, temperature=19.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:28:54', seeing=1.17, atlas_timestamp='2025-11-03T18:28:38.755', atlas_cloud=1, atlas_rain=1, zp_data=[-0.06925000000000026, 0.01925000000000132, -0.010749999999999815, 0.02049999999999841, 0.08450000000000024, 0.09325000000000117, -0.02999999999999936, -0.04025000000000034, -0.16550000000000153, 0.030999999999998806, 0.0727499999999992, 0.025000000000000355, 0.16999999999999993, 0.044749999999998735, 0.022999999999999687, -0.09500000000000064, -0.2947500000000005, 0.11800000000000033, 0.16699999999999982, 0.15474999999999994, 0.07449999999999868, 0.04824999999999946, -0.1302500000000002, -0.14925000000000033, -0.11300000000000132, 0.16900000000000048, 0.18874999999999886, 0.13349999999999973, 0.08399999999999963, 0.09000000000000163, 0.1490000000000009, -0.021999999999998465, -0.026250000000000995], zp_timestamp='2025-11-03T18:26:00')
2025-11-03T20:28:57.956 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:28:57.969 [DEBUG] [Thread-122097] [transport.py] [_log()] starting thread (client mode): 0xed04d00
2025-11-03T20:28:57.970 [DEBUG] [Thread-122097] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:28:57.984 [DEBUG] [Thread-122097] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:28:57.984 [INFO] [Thread-122097] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:28:57.991 [DEBUG] [Thread-122097] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:28:57.991 [DEBUG] [Thread-122097] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:28:57.991 [DEBUG] [Thread-122097] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:28:57.992 [DEBUG] [Thread-122097] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:28:57.992 [DEBUG] [Thread-122097] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:28:57.992 [DEBUG] [Thread-122097] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:28:57.992 [DEBUG] [Thread-122097] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:28:57.992 [DEBUG] [Thread-122097] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:28:57.992 [DEBUG] [Thread-122097] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:28:57.992 [DEBUG] [Thread-122097] [transport.py] [_log()] client lang: <none>
2025-11-03T20:28:57.992 [DEBUG] [Thread-122097] [transport.py] [_log()] server lang: <none>
2025-11-03T20:28:57.992 [DEBUG] [Thread-122097] [transport.py] [_log()] kex follows: False
2025-11-03T20:28:57.992 [DEBUG] [Thread-122097] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:28:57.992 [DEBUG] [Thread-122097] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:28:57.992 [DEBUG] [Thread-122097] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:28:57.992 [DEBUG] [Thread-122097] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:28:57.992 [DEBUG] [Thread-122097] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:28:57.992 [DEBUG] [Thread-122097] [transport.py] [_log()] Compression: none
2025-11-03T20:28:57.992 [DEBUG] [Thread-122097] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:28:58.049 [DEBUG] [Thread-122097] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:28:58.049 [DEBUG] [Thread-122097] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:28:58.049 [DEBUG] [Thread-122097] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:28:58.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:28:58.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:28:58.106 [DEBUG] [Thread-122097] [transport.py] [_log()] userauth is OK
2025-11-03T20:28:58.106 [DEBUG] [Thread-122097] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:28:58.106 [DEBUG] [Thread-122097] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:28:58.106 [DEBUG] [Thread-122097] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:28:58.106 [DEBUG] [Thread-122097] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:28:58.128 [INFO] [Thread-122097] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:28:58.129 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:28:58.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:28:58.951 [DEBUG] [Thread-122097] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:28:58.951 [DEBUG] [Thread-122097] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:28:58.999 [DEBUG] [Thread-122097] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:28:58.999 [DEBUG] [Thread-122097] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:28:59.008 [DEBUG] [Thread-122097] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:28:59.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:28:59.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:28:59.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:28:59.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:28:59.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:28:59.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:28:59.048 [DEBUG] [Thread-122097] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:29:07.704 [DEBUG] [Thread-122099 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:29:08.906 [DEBUG] [Thread-122100 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:29:24.095 [DEBUG] [Thread-122101 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:29:27.379 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:29:29.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:29:29.070 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:29:29.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:29:29.158 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:29:29.159 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:29:30.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 28, 54), 35.61, 7.91, 0.0, 21.31, 19.45, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:29:30.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:28:54
2025-11-03T20:29:30.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:29:30.467 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:29:30.546 [DEBUG] [Thread-122102] [transport.py] [_log()] starting thread (client mode): 0xed88be0
2025-11-03T20:29:30.547 [DEBUG] [Thread-122102] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:29:30.562 [DEBUG] [Thread-122102] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:29:30.562 [INFO] [Thread-122102] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:29:30.567 [DEBUG] [Thread-122102] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:29:30.567 [DEBUG] [Thread-122102] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:29:30.567 [DEBUG] [Thread-122102] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:29:30.567 [DEBUG] [Thread-122102] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:29:30.567 [DEBUG] [Thread-122102] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:29:30.567 [DEBUG] [Thread-122102] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:29:30.567 [DEBUG] [Thread-122102] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:29:30.567 [DEBUG] [Thread-122102] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:29:30.567 [DEBUG] [Thread-122102] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:29:30.567 [DEBUG] [Thread-122102] [transport.py] [_log()] client lang: <none>
2025-11-03T20:29:30.567 [DEBUG] [Thread-122102] [transport.py] [_log()] server lang: <none>
2025-11-03T20:29:30.567 [DEBUG] [Thread-122102] [transport.py] [_log()] kex follows: False
2025-11-03T20:29:30.567 [DEBUG] [Thread-122102] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:29:30.568 [DEBUG] [Thread-122102] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:29:30.568 [DEBUG] [Thread-122102] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:29:30.568 [DEBUG] [Thread-122102] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:29:30.568 [DEBUG] [Thread-122102] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:29:30.568 [DEBUG] [Thread-122102] [transport.py] [_log()] Compression: none
2025-11-03T20:29:30.568 [DEBUG] [Thread-122102] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:29:30.597 [DEBUG] [Thread-122102] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:29:30.600 [DEBUG] [Thread-122102] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:29:30.601 [DEBUG] [Thread-122102] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:29:30.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:29:30.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:29:30.603 [DEBUG] [Thread-122102] [transport.py] [_log()] userauth is OK
2025-11-03T20:29:30.603 [DEBUG] [Thread-122102] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:29:30.603 [DEBUG] [Thread-122102] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:29:30.603 [DEBUG] [Thread-122102] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:29:30.603 [DEBUG] [Thread-122102] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:29:30.635 [INFO] [Thread-122102] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:29:30.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:29:31.253 [DEBUG] [Thread-122102] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:29:31.253 [DEBUG] [Thread-122102] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:29:31.253 [DEBUG] [Thread-122102] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:29:31.294 [DEBUG] [Thread-122102] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:29:31.295 [DEBUG] [Thread-122102] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:29:31.297 [DEBUG] [Thread-122102] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:29:31.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:29:31.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:29:31.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:29:31.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:29:31.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:29:31.317 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:29:31.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:29:31.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:29:31.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:29:31.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.770240 -999.00  +19.50  24.05     12   -9.90 1 1 1 1 1     0    0 27.92 -51.13 ZNESW 24.1 24.1 302.4 30.1 19.6 -28.8 19.5 -27.7 19.3 -27.6 19.5 -28.4
2025-11-03T20:29:31.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:29:31.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:29:31.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.770240
2025-11-03T20:29:31.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:29:31.333 [DEBUG] [Thread-122102] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:29:31.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:29:31.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:29:31.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:29:31.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:29:31.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:28:54', tmtdew=35.61, humidity=7.91, cloud=0.0, wind=21.31, temperature=19.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:29:28', seeing=1.1, atlas_timestamp='2025-11-03T18:29:08.736', atlas_cloud=1, atlas_rain=1, zp_data=[-0.06925000000000026, 0.01925000000000132, -0.010749999999999815, 0.02049999999999841, 0.08450000000000024, 0.09325000000000117, -0.02999999999999936, -0.04025000000000034, -0.16550000000000153, 0.030999999999998806, 0.0727499999999992, 0.025000000000000355, 0.16999999999999993, 0.044749999999998735, 0.022999999999999687, -0.09500000000000064, -0.2947500000000005, 0.11800000000000033, 0.16699999999999982, 0.15474999999999994, 0.07449999999999868, 0.04824999999999946, -0.1302500000000002, -0.14925000000000033, -0.11300000000000132, 0.16900000000000048, 0.18874999999999886, 0.13349999999999973, 0.08399999999999963, 0.09000000000000163, 0.1490000000000009, -0.021999999999998465, -0.026250000000000995], zp_timestamp='2025-11-03T18:26:00')
2025-11-03T20:29:31.413 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:29:31.425 [DEBUG] [Thread-122105] [transport.py] [_log()] starting thread (client mode): 0xed8a530
2025-11-03T20:29:31.425 [DEBUG] [Thread-122105] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:29:31.439 [DEBUG] [Thread-122105] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:29:31.439 [INFO] [Thread-122105] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:29:31.447 [DEBUG] [Thread-122105] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:29:31.447 [DEBUG] [Thread-122105] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:29:31.447 [DEBUG] [Thread-122105] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:29:31.447 [DEBUG] [Thread-122105] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:29:31.447 [DEBUG] [Thread-122105] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:29:31.447 [DEBUG] [Thread-122105] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:29:31.447 [DEBUG] [Thread-122105] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:29:31.447 [DEBUG] [Thread-122105] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:29:31.447 [DEBUG] [Thread-122105] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:29:31.447 [DEBUG] [Thread-122105] [transport.py] [_log()] client lang: <none>
2025-11-03T20:29:31.447 [DEBUG] [Thread-122105] [transport.py] [_log()] server lang: <none>
2025-11-03T20:29:31.447 [DEBUG] [Thread-122105] [transport.py] [_log()] kex follows: False
2025-11-03T20:29:31.447 [DEBUG] [Thread-122105] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:29:31.447 [DEBUG] [Thread-122105] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:29:31.447 [DEBUG] [Thread-122105] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:29:31.447 [DEBUG] [Thread-122105] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:29:31.447 [DEBUG] [Thread-122105] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:29:31.447 [DEBUG] [Thread-122105] [transport.py] [_log()] Compression: none
2025-11-03T20:29:31.447 [DEBUG] [Thread-122105] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:29:31.505 [DEBUG] [Thread-122105] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:29:31.505 [DEBUG] [Thread-122105] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:29:31.505 [DEBUG] [Thread-122105] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:29:31.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:29:31.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:29:31.562 [DEBUG] [Thread-122105] [transport.py] [_log()] userauth is OK
2025-11-03T20:29:31.562 [DEBUG] [Thread-122105] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:29:31.562 [DEBUG] [Thread-122105] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:29:31.562 [DEBUG] [Thread-122105] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:29:31.563 [DEBUG] [Thread-122105] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:29:31.582 [INFO] [Thread-122105] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:29:31.582 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:29:31.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:29:32.420 [DEBUG] [Thread-122105] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:29:32.420 [DEBUG] [Thread-122105] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:29:32.467 [DEBUG] [Thread-122105] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:29:32.468 [DEBUG] [Thread-122105] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:29:32.476 [DEBUG] [Thread-122105] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:29:32.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:29:32.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:29:32.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:29:32.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:29:32.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:29:32.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:29:32.509 [DEBUG] [Thread-122105] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:29:39.232 [DEBUG] [Thread-122107 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:29:54.533 [DEBUG] [Thread-122108 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:30:02.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:30:02.534 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:30:02.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:30:04.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 29, 27), 35.56, 7.94, 0.0, 21.23, 19.45, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:30:04.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:29:27
2025-11-03T20:30:04.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:30:04.729 [DEBUG] [Thread-122109] [transport.py] [_log()] starting thread (client mode): 0xed88970
2025-11-03T20:30:04.730 [DEBUG] [Thread-122109] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:30:04.735 [DEBUG] [Thread-122109] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:30:04.735 [INFO] [Thread-122109] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:30:04.744 [DEBUG] [Thread-122109] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:30:04.744 [DEBUG] [Thread-122109] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:30:04.744 [DEBUG] [Thread-122109] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:30:04.744 [DEBUG] [Thread-122109] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:30:04.744 [DEBUG] [Thread-122109] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:30:04.744 [DEBUG] [Thread-122109] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:30:04.744 [DEBUG] [Thread-122109] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:30:04.744 [DEBUG] [Thread-122109] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:30:04.744 [DEBUG] [Thread-122109] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:30:04.744 [DEBUG] [Thread-122109] [transport.py] [_log()] client lang: <none>
2025-11-03T20:30:04.744 [DEBUG] [Thread-122109] [transport.py] [_log()] server lang: <none>
2025-11-03T20:30:04.744 [DEBUG] [Thread-122109] [transport.py] [_log()] kex follows: False
2025-11-03T20:30:04.744 [DEBUG] [Thread-122109] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:30:04.745 [DEBUG] [Thread-122109] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:30:04.745 [DEBUG] [Thread-122109] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:30:04.745 [DEBUG] [Thread-122109] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:30:04.745 [DEBUG] [Thread-122109] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:30:04.745 [DEBUG] [Thread-122109] [transport.py] [_log()] Compression: none
2025-11-03T20:30:04.745 [DEBUG] [Thread-122109] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:30:04.786 [DEBUG] [Thread-122109] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:30:04.790 [DEBUG] [Thread-122109] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:30:04.791 [DEBUG] [Thread-122109] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:30:04.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:30:04.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:30:04.795 [DEBUG] [Thread-122109] [transport.py] [_log()] userauth is OK
2025-11-03T20:30:04.795 [DEBUG] [Thread-122109] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:30:04.795 [DEBUG] [Thread-122109] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:30:04.795 [DEBUG] [Thread-122109] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:30:04.795 [DEBUG] [Thread-122109] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:30:04.825 [INFO] [Thread-122109] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:30:04.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:30:08.049 [DEBUG] [Thread-122111 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:30:09.645 [DEBUG] [Thread-122112 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:30:11.329 [DEBUG] [Thread-122109] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:30:11.329 [DEBUG] [Thread-122109] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:30:11.332 [DEBUG] [Thread-122109] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:30:11.359 [DEBUG] [Thread-122109] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:30:11.359 [DEBUG] [Thread-122109] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:30:11.367 [DEBUG] [Thread-122109] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:30:11.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:30:11.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:30:11.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:30:11.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:30:11.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:30:11.466 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:30:11.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:30:11.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:30:11.470 [DEBUG] [Thread-122109] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:30:11.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:30:11.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.770587 -999.00  +19.50  24.83     12   -9.90 1 1 1 1 1     0    0 27.96 -47.75 ZNESW 24.8 24.8 305.6 29.3 19.6 -28.8 19.6 -27.8 19.2 -27.6 19.6 -28.4
2025-11-03T20:30:11.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:30:11.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:30:11.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.770587
2025-11-03T20:30:11.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:30:11.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:30:11.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:30:11.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:30:11.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:30:11.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:29:27', tmtdew=35.56, humidity=7.94, cloud=0.0, wind=21.23, temperature=19.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:30:02', seeing=1.1, atlas_timestamp='2025-11-03T18:29:38.717', atlas_cloud=1, atlas_rain=1, zp_data=[-0.06925000000000026, 0.01925000000000132, -0.010749999999999815, 0.02049999999999841, 0.08450000000000024, 0.09325000000000117, -0.02999999999999936, -0.04025000000000034, -0.16550000000000153, 0.030999999999998806, 0.0727499999999992, 0.025000000000000355, 0.16999999999999993, 0.044749999999998735, 0.022999999999999687, -0.09500000000000064, -0.2947500000000005, 0.11800000000000033, 0.16699999999999982, 0.15474999999999994, 0.07449999999999868, 0.04824999999999946, -0.1302500000000002, -0.14925000000000033, -0.11300000000000132, 0.16900000000000048, 0.18874999999999886, 0.13349999999999973, 0.08399999999999963, 0.09000000000000163, 0.1490000000000009, -0.021999999999998465, -0.026250000000000995], zp_timestamp='2025-11-03T18:26:00')
2025-11-03T20:30:11.631 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:30:11.647 [DEBUG] [Thread-122114] [transport.py] [_log()] starting thread (client mode): 0x11761f30
2025-11-03T20:30:11.647 [DEBUG] [Thread-122114] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:30:11.659 [DEBUG] [Thread-122114] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:30:11.659 [INFO] [Thread-122114] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:30:11.667 [DEBUG] [Thread-122114] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:30:11.667 [DEBUG] [Thread-122114] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:30:11.667 [DEBUG] [Thread-122114] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:30:11.667 [DEBUG] [Thread-122114] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:30:11.667 [DEBUG] [Thread-122114] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:30:11.667 [DEBUG] [Thread-122114] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:30:11.667 [DEBUG] [Thread-122114] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:30:11.667 [DEBUG] [Thread-122114] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:30:11.667 [DEBUG] [Thread-122114] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:30:11.667 [DEBUG] [Thread-122114] [transport.py] [_log()] client lang: <none>
2025-11-03T20:30:11.667 [DEBUG] [Thread-122114] [transport.py] [_log()] server lang: <none>
2025-11-03T20:30:11.667 [DEBUG] [Thread-122114] [transport.py] [_log()] kex follows: False
2025-11-03T20:30:11.667 [DEBUG] [Thread-122114] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:30:11.668 [DEBUG] [Thread-122114] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:30:11.668 [DEBUG] [Thread-122114] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:30:11.668 [DEBUG] [Thread-122114] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:30:11.668 [DEBUG] [Thread-122114] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:30:11.668 [DEBUG] [Thread-122114] [transport.py] [_log()] Compression: none
2025-11-03T20:30:11.668 [DEBUG] [Thread-122114] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:30:11.732 [DEBUG] [Thread-122114] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:30:11.735 [DEBUG] [Thread-122114] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:30:11.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:30:11.736 [DEBUG] [Thread-122114] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:30:11.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:30:11.793 [DEBUG] [Thread-122114] [transport.py] [_log()] userauth is OK
2025-11-03T20:30:11.793 [DEBUG] [Thread-122114] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:30:11.793 [DEBUG] [Thread-122114] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:30:11.793 [DEBUG] [Thread-122114] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:30:11.793 [DEBUG] [Thread-122114] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:30:11.809 [INFO] [Thread-122114] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:30:11.809 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:30:11.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:30:12.631 [DEBUG] [Thread-122114] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:30:12.631 [DEBUG] [Thread-122114] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:30:12.682 [DEBUG] [Thread-122114] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:30:12.682 [DEBUG] [Thread-122114] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:30:12.694 [DEBUG] [Thread-122114] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:30:12.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:30:12.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:30:12.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:30:12.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:30:12.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:30:12.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:30:12.732 [DEBUG] [Thread-122114] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:30:24.803 [DEBUG] [Thread-122116 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:30:29.368 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:30:29.374 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:30:40.161 [DEBUG] [Thread-122117 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:30:42.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:30:42.750 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:30:42.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:30:43.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 30, 35), 35.64, 7.89, 0.0, 23.64, 19.43, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:30:43.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:30:35
2025-11-03T20:30:44.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:30:44.256 [DEBUG] [Thread-122118] [transport.py] [_log()] starting thread (client mode): 0x1179bdc0
2025-11-03T20:30:44.258 [DEBUG] [Thread-122118] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:30:44.259 [DEBUG] [Thread-122118] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:30:44.259 [INFO] [Thread-122118] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:30:44.264 [DEBUG] [Thread-122118] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:30:44.264 [DEBUG] [Thread-122118] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:30:44.264 [DEBUG] [Thread-122118] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:30:44.264 [DEBUG] [Thread-122118] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:30:44.264 [DEBUG] [Thread-122118] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:30:44.264 [DEBUG] [Thread-122118] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:30:44.264 [DEBUG] [Thread-122118] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:30:44.265 [DEBUG] [Thread-122118] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:30:44.265 [DEBUG] [Thread-122118] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:30:44.265 [DEBUG] [Thread-122118] [transport.py] [_log()] client lang: <none>
2025-11-03T20:30:44.265 [DEBUG] [Thread-122118] [transport.py] [_log()] server lang: <none>
2025-11-03T20:30:44.265 [DEBUG] [Thread-122118] [transport.py] [_log()] kex follows: False
2025-11-03T20:30:44.265 [DEBUG] [Thread-122118] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:30:44.266 [DEBUG] [Thread-122118] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:30:44.266 [DEBUG] [Thread-122118] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:30:44.266 [DEBUG] [Thread-122118] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:30:44.266 [DEBUG] [Thread-122118] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:30:44.266 [DEBUG] [Thread-122118] [transport.py] [_log()] Compression: none
2025-11-03T20:30:44.267 [DEBUG] [Thread-122118] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:30:44.307 [DEBUG] [Thread-122118] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:30:44.312 [DEBUG] [Thread-122118] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:30:44.315 [DEBUG] [Thread-122118] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:30:44.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:30:44.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:30:44.323 [DEBUG] [Thread-122118] [transport.py] [_log()] userauth is OK
2025-11-03T20:30:44.323 [DEBUG] [Thread-122118] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:30:44.324 [DEBUG] [Thread-122118] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:30:44.324 [DEBUG] [Thread-122118] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:30:44.324 [DEBUG] [Thread-122118] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:30:44.361 [INFO] [Thread-122118] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:30:44.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:30:45.022 [DEBUG] [Thread-122118] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:30:45.022 [DEBUG] [Thread-122118] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:30:45.023 [DEBUG] [Thread-122118] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:30:45.063 [DEBUG] [Thread-122118] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:30:45.063 [DEBUG] [Thread-122118] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:30:45.065 [DEBUG] [Thread-122118] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:30:45.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:30:45.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:30:45.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:30:45.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:30:45.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:30:45.083 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:30:45.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:30:45.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:30:45.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:30:45.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.770934 -999.00  +19.60  26.04     12   -9.80 1 1 1 1 1     0    0 28.26 -51.44 ZNESW 24.8 26.0 306.2 36.1 19.6 -28.7 19.5 -27.7 19.3 -27.5 19.5 -28.3
2025-11-03T20:30:45.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:30:45.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:30:45.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.770934
2025-11-03T20:30:45.091 [DEBUG] [Thread-122118] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:30:45.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:30:45.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:30:45.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:30:45.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:30:45.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:30:45.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:30:35', tmtdew=35.64, humidity=7.89, cloud=0.0, wind=23.64, temperature=19.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:30:36', seeing=1.19, atlas_timestamp='2025-11-03T18:30:08.698', atlas_cloud=1, atlas_rain=1, zp_data=[-0.06925000000000026, 0.01925000000000132, -0.010749999999999815, 0.02049999999999841, 0.08450000000000024, 0.09325000000000117, -0.02999999999999936, -0.04025000000000034, -0.16550000000000153, 0.030999999999998806, 0.0727499999999992, 0.025000000000000355, 0.16999999999999993, 0.044749999999998735, 0.022999999999999687, -0.09500000000000064, -0.2947500000000005, 0.11800000000000033, 0.16699999999999982, 0.15474999999999994, 0.07449999999999868, 0.04824999999999946, -0.1302500000000002, -0.14925000000000033, -0.11300000000000132, 0.16900000000000048, 0.18874999999999886, 0.13349999999999973, 0.08399999999999963, 0.09000000000000163, 0.1490000000000009, -0.021999999999998465, -0.026250000000000995], zp_timestamp='2025-11-03T18:26:00')
2025-11-03T20:30:45.208 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:30:45.220 [DEBUG] [Thread-122121] [transport.py] [_log()] starting thread (client mode): 0x1174fbe0
2025-11-03T20:30:45.220 [DEBUG] [Thread-122121] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:30:45.234 [DEBUG] [Thread-122121] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:30:45.235 [INFO] [Thread-122121] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:30:45.242 [DEBUG] [Thread-122121] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:30:45.242 [DEBUG] [Thread-122121] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:30:45.243 [DEBUG] [Thread-122121] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:30:45.243 [DEBUG] [Thread-122121] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:30:45.243 [DEBUG] [Thread-122121] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:30:45.243 [DEBUG] [Thread-122121] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:30:45.243 [DEBUG] [Thread-122121] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:30:45.243 [DEBUG] [Thread-122121] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:30:45.243 [DEBUG] [Thread-122121] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:30:45.243 [DEBUG] [Thread-122121] [transport.py] [_log()] client lang: <none>
2025-11-03T20:30:45.243 [DEBUG] [Thread-122121] [transport.py] [_log()] server lang: <none>
2025-11-03T20:30:45.244 [DEBUG] [Thread-122121] [transport.py] [_log()] kex follows: False
2025-11-03T20:30:45.244 [DEBUG] [Thread-122121] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:30:45.244 [DEBUG] [Thread-122121] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:30:45.244 [DEBUG] [Thread-122121] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:30:45.244 [DEBUG] [Thread-122121] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:30:45.244 [DEBUG] [Thread-122121] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:30:45.244 [DEBUG] [Thread-122121] [transport.py] [_log()] Compression: none
2025-11-03T20:30:45.244 [DEBUG] [Thread-122121] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:30:45.303 [DEBUG] [Thread-122121] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:30:45.303 [DEBUG] [Thread-122121] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:30:45.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:30:45.304 [DEBUG] [Thread-122121] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:30:45.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:30:45.359 [DEBUG] [Thread-122121] [transport.py] [_log()] userauth is OK
2025-11-03T20:30:45.359 [DEBUG] [Thread-122121] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:30:45.360 [DEBUG] [Thread-122121] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:30:45.360 [DEBUG] [Thread-122121] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:30:45.360 [DEBUG] [Thread-122121] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:30:45.383 [INFO] [Thread-122121] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:30:45.383 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:30:45.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:30:46.193 [DEBUG] [Thread-122121] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:30:46.193 [DEBUG] [Thread-122121] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:30:46.241 [DEBUG] [Thread-122121] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:30:46.241 [DEBUG] [Thread-122121] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:30:46.250 [DEBUG] [Thread-122121] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:30:46.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:30:46.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:30:46.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:30:46.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:30:46.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:30:46.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:30:46.288 [DEBUG] [Thread-122121] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:30:55.303 [DEBUG] [Thread-122123 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:31:08.614 [DEBUG] [Thread-122124 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:31:10.477 [DEBUG] [Thread-122125 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:31:16.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:31:16.330 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:31:16.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:31:17.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 31, 10), 35.58, 7.93, 0.0, 24.23, 19.41, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:31:17.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:31:10
2025-11-03T20:31:17.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:31:17.726 [DEBUG] [Thread-122126] [transport.py] [_log()] starting thread (client mode): 0x11798610
2025-11-03T20:31:17.728 [DEBUG] [Thread-122126] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:31:17.729 [DEBUG] [Thread-122126] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:31:17.729 [INFO] [Thread-122126] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:31:17.738 [DEBUG] [Thread-122126] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:31:17.738 [DEBUG] [Thread-122126] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:31:17.738 [DEBUG] [Thread-122126] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:31:17.738 [DEBUG] [Thread-122126] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:31:17.739 [DEBUG] [Thread-122126] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:31:17.739 [DEBUG] [Thread-122126] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:31:17.739 [DEBUG] [Thread-122126] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:31:17.739 [DEBUG] [Thread-122126] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:31:17.739 [DEBUG] [Thread-122126] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:31:17.739 [DEBUG] [Thread-122126] [transport.py] [_log()] client lang: <none>
2025-11-03T20:31:17.739 [DEBUG] [Thread-122126] [transport.py] [_log()] server lang: <none>
2025-11-03T20:31:17.739 [DEBUG] [Thread-122126] [transport.py] [_log()] kex follows: False
2025-11-03T20:31:17.739 [DEBUG] [Thread-122126] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:31:17.740 [DEBUG] [Thread-122126] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:31:17.740 [DEBUG] [Thread-122126] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:31:17.740 [DEBUG] [Thread-122126] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:31:17.740 [DEBUG] [Thread-122126] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:31:17.740 [DEBUG] [Thread-122126] [transport.py] [_log()] Compression: none
2025-11-03T20:31:17.741 [DEBUG] [Thread-122126] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:31:17.794 [DEBUG] [Thread-122126] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:31:17.801 [DEBUG] [Thread-122126] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:31:17.803 [DEBUG] [Thread-122126] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:31:17.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:31:17.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:31:17.808 [DEBUG] [Thread-122126] [transport.py] [_log()] userauth is OK
2025-11-03T20:31:17.809 [DEBUG] [Thread-122126] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:31:17.809 [DEBUG] [Thread-122126] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:31:17.809 [DEBUG] [Thread-122126] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:31:17.809 [DEBUG] [Thread-122126] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:31:17.829 [INFO] [Thread-122126] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:31:17.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:31:18.438 [DEBUG] [Thread-122126] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:31:18.438 [DEBUG] [Thread-122126] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:31:18.439 [DEBUG] [Thread-122126] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:31:18.479 [DEBUG] [Thread-122126] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:31:18.479 [DEBUG] [Thread-122126] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:31:18.482 [DEBUG] [Thread-122126] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:31:18.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:31:18.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:31:18.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:31:18.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:31:18.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:31:18.505 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:31:18.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:31:18.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:31:18.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:31:18.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.771282 -999.00  +19.60  23.11     12   -9.80 1 1 1 1 1     0    0 27.75 -45.17 ZNESW 21.6 23.1 298.4 31.7 19.6 -28.7 19.5 -27.8 19.3 -27.6 19.5 -28.4
2025-11-03T20:31:18.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:31:18.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:31:18.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.771282
2025-11-03T20:31:18.513 [DEBUG] [Thread-122126] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:31:18.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:31:18.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:31:18.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:31:18.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:31:18.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:31:18.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:31:10', tmtdew=35.58, humidity=7.93, cloud=0.0, wind=24.23, temperature=19.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:31:11', seeing=0.94, atlas_timestamp='2025-11-03T18:30:38.765', atlas_cloud=1, atlas_rain=1, zp_data=[-0.06925000000000026, 0.01925000000000132, -0.010749999999999815, 0.02049999999999841, 0.08450000000000024, 0.09325000000000117, -0.02999999999999936, -0.04025000000000034, -0.16550000000000153, 0.030999999999998806, 0.0727499999999992, 0.025000000000000355, 0.16999999999999993, 0.044749999999998735, 0.022999999999999687, -0.09500000000000064, -0.2947500000000005, 0.11800000000000033, 0.16699999999999982, 0.15474999999999994, 0.07449999999999868, 0.04824999999999946, -0.1302500000000002, -0.14925000000000033, -0.11300000000000132, 0.16900000000000048, 0.18874999999999886, 0.13349999999999973, 0.08399999999999963, 0.09000000000000163, 0.1490000000000009, -0.021999999999998465, -0.026250000000000995], zp_timestamp='2025-11-03T18:26:00')
2025-11-03T20:31:18.632 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:31:18.645 [DEBUG] [Thread-122129] [transport.py] [_log()] starting thread (client mode): 0xed04970
2025-11-03T20:31:18.645 [DEBUG] [Thread-122129] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:31:18.660 [DEBUG] [Thread-122129] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:31:18.660 [INFO] [Thread-122129] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:31:18.668 [DEBUG] [Thread-122129] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:31:18.668 [DEBUG] [Thread-122129] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:31:18.669 [DEBUG] [Thread-122129] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:31:18.669 [DEBUG] [Thread-122129] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:31:18.669 [DEBUG] [Thread-122129] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:31:18.669 [DEBUG] [Thread-122129] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:31:18.669 [DEBUG] [Thread-122129] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:31:18.669 [DEBUG] [Thread-122129] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:31:18.669 [DEBUG] [Thread-122129] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:31:18.669 [DEBUG] [Thread-122129] [transport.py] [_log()] client lang: <none>
2025-11-03T20:31:18.669 [DEBUG] [Thread-122129] [transport.py] [_log()] server lang: <none>
2025-11-03T20:31:18.669 [DEBUG] [Thread-122129] [transport.py] [_log()] kex follows: False
2025-11-03T20:31:18.669 [DEBUG] [Thread-122129] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:31:18.669 [DEBUG] [Thread-122129] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:31:18.669 [DEBUG] [Thread-122129] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:31:18.669 [DEBUG] [Thread-122129] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:31:18.669 [DEBUG] [Thread-122129] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:31:18.669 [DEBUG] [Thread-122129] [transport.py] [_log()] Compression: none
2025-11-03T20:31:18.669 [DEBUG] [Thread-122129] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:31:18.727 [DEBUG] [Thread-122129] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:31:18.728 [DEBUG] [Thread-122129] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:31:18.728 [DEBUG] [Thread-122129] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:31:18.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:31:18.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:31:18.789 [DEBUG] [Thread-122129] [transport.py] [_log()] userauth is OK
2025-11-03T20:31:18.789 [DEBUG] [Thread-122129] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:31:18.789 [DEBUG] [Thread-122129] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:31:18.789 [DEBUG] [Thread-122129] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:31:18.789 [DEBUG] [Thread-122129] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:31:18.806 [INFO] [Thread-122129] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:31:18.807 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:31:18.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:31:19.641 [DEBUG] [Thread-122129] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:31:19.641 [DEBUG] [Thread-122129] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:31:19.688 [DEBUG] [Thread-122129] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:31:19.689 [DEBUG] [Thread-122129] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:31:19.697 [DEBUG] [Thread-122129] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:31:19.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:31:19.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:31:19.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:31:19.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:31:19.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:31:19.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:31:19.734 [DEBUG] [Thread-122129] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:31:25.564 [DEBUG] [Thread-122131 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:31:29.576 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:31:29.577 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:31:40.915 [DEBUG] [Thread-122132 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:31:49.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:31:49.793 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:31:49.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:31:51.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 31, 44), 35.58, 7.89, 0.0, 22.36, 19.35, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:31:51.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:31:44
2025-11-03T20:31:51.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:31:51.516 [DEBUG] [Thread-122133] [transport.py] [_log()] starting thread (client mode): 0x141db190
2025-11-03T20:31:51.524 [DEBUG] [Thread-122133] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:31:51.525 [DEBUG] [Thread-122133] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:31:51.525 [INFO] [Thread-122133] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:31:51.533 [DEBUG] [Thread-122133] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:31:51.533 [DEBUG] [Thread-122133] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:31:51.533 [DEBUG] [Thread-122133] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:31:51.533 [DEBUG] [Thread-122133] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:31:51.533 [DEBUG] [Thread-122133] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:31:51.533 [DEBUG] [Thread-122133] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:31:51.533 [DEBUG] [Thread-122133] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:31:51.533 [DEBUG] [Thread-122133] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:31:51.533 [DEBUG] [Thread-122133] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:31:51.533 [DEBUG] [Thread-122133] [transport.py] [_log()] client lang: <none>
2025-11-03T20:31:51.533 [DEBUG] [Thread-122133] [transport.py] [_log()] server lang: <none>
2025-11-03T20:31:51.533 [DEBUG] [Thread-122133] [transport.py] [_log()] kex follows: False
2025-11-03T20:31:51.533 [DEBUG] [Thread-122133] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:31:51.534 [DEBUG] [Thread-122133] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:31:51.534 [DEBUG] [Thread-122133] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:31:51.534 [DEBUG] [Thread-122133] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:31:51.534 [DEBUG] [Thread-122133] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:31:51.534 [DEBUG] [Thread-122133] [transport.py] [_log()] Compression: none
2025-11-03T20:31:51.534 [DEBUG] [Thread-122133] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:31:51.569 [DEBUG] [Thread-122133] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:31:51.574 [DEBUG] [Thread-122133] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:31:51.576 [DEBUG] [Thread-122133] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:31:51.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:31:51.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:31:51.584 [DEBUG] [Thread-122133] [transport.py] [_log()] userauth is OK
2025-11-03T20:31:51.584 [DEBUG] [Thread-122133] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:31:51.584 [DEBUG] [Thread-122133] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:31:51.584 [DEBUG] [Thread-122133] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:31:51.584 [DEBUG] [Thread-122133] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:31:51.620 [INFO] [Thread-122133] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:31:51.625 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:31:52.277 [DEBUG] [Thread-122133] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:31:52.277 [DEBUG] [Thread-122133] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:31:52.278 [DEBUG] [Thread-122133] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:31:52.318 [DEBUG] [Thread-122133] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:31:52.318 [DEBUG] [Thread-122133] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:31:52.321 [DEBUG] [Thread-122133] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:31:52.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:31:52.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:31:52.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:31:52.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:31:52.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:31:52.347 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:31:52.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:31:52.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:31:52.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:31:52.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.771976 -999.00  +19.60  27.53     12   -9.90 1 1 1 1 1     0    0 28.70 -43.25 ZNESW 27.7 27.5 297.4 34.8 19.6 -28.6 19.5 -27.6 19.3 -27.3 19.5 -28.2
2025-11-03T20:31:52.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:31:52.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:31:52.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.771976
2025-11-03T20:31:52.355 [DEBUG] [Thread-122133] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:31:52.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:31:52.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:31:52.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:31:52.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:31:52.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:31:52.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:31:44', tmtdew=35.58, humidity=7.89, cloud=0.0, wind=22.36, temperature=19.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:31:45', seeing=1.29, atlas_timestamp='2025-11-03T18:31:38.726', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010249999999999204, 0.09224999999999994, 0.04075000000000095, 0.05999999999999872, 0.11250000000000071, 0.09125000000000227, -0.062000000000001165, -0.038750000000000284, -0.1745000000000001, 0.08549999999999969, 0.11224999999999952, 0.08099999999999952, 0.1844999999999999, -0.08724999999999916, -0.028999999999999915, -0.27250000000000085, -0.12475000000000058, 0.08300000000000018, 0.18299999999999983, 0.14324999999999832, 0.10999999999999943, 0.048749999999998295, -0.11074999999999946, -0.4767499999999991, -0.34000000000000163, 0.1645000000000003, 0.19875000000000043, 0.14550000000000018, 0.07699999999999996, 0.08650000000000091, 0.1540000000000017, -0.03399999999999892, -0.04025000000000034], zp_timestamp='2025-11-03T18:30:00')
2025-11-03T20:31:52.478 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:31:52.490 [DEBUG] [Thread-122136] [transport.py] [_log()] starting thread (client mode): 0x117606d0
2025-11-03T20:31:52.490 [DEBUG] [Thread-122136] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:31:52.505 [DEBUG] [Thread-122136] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:31:52.505 [INFO] [Thread-122136] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:31:52.513 [DEBUG] [Thread-122136] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:31:52.513 [DEBUG] [Thread-122136] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:31:52.513 [DEBUG] [Thread-122136] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:31:52.513 [DEBUG] [Thread-122136] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:31:52.513 [DEBUG] [Thread-122136] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:31:52.513 [DEBUG] [Thread-122136] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:31:52.513 [DEBUG] [Thread-122136] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:31:52.513 [DEBUG] [Thread-122136] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:31:52.513 [DEBUG] [Thread-122136] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:31:52.513 [DEBUG] [Thread-122136] [transport.py] [_log()] client lang: <none>
2025-11-03T20:31:52.513 [DEBUG] [Thread-122136] [transport.py] [_log()] server lang: <none>
2025-11-03T20:31:52.513 [DEBUG] [Thread-122136] [transport.py] [_log()] kex follows: False
2025-11-03T20:31:52.513 [DEBUG] [Thread-122136] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:31:52.513 [DEBUG] [Thread-122136] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:31:52.513 [DEBUG] [Thread-122136] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:31:52.513 [DEBUG] [Thread-122136] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:31:52.513 [DEBUG] [Thread-122136] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:31:52.513 [DEBUG] [Thread-122136] [transport.py] [_log()] Compression: none
2025-11-03T20:31:52.513 [DEBUG] [Thread-122136] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:31:52.570 [DEBUG] [Thread-122136] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:31:52.571 [DEBUG] [Thread-122136] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:31:52.572 [DEBUG] [Thread-122136] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:31:52.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:31:52.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:31:52.627 [DEBUG] [Thread-122136] [transport.py] [_log()] userauth is OK
2025-11-03T20:31:52.627 [DEBUG] [Thread-122136] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:31:52.627 [DEBUG] [Thread-122136] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:31:52.627 [DEBUG] [Thread-122136] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:31:52.627 [DEBUG] [Thread-122136] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:31:52.648 [INFO] [Thread-122136] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:31:52.648 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:31:52.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:31:53.467 [DEBUG] [Thread-122136] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:31:53.467 [DEBUG] [Thread-122136] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:31:53.516 [DEBUG] [Thread-122136] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:31:53.516 [DEBUG] [Thread-122136] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:31:53.525 [DEBUG] [Thread-122136] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:31:53.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:31:53.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:31:53.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:31:53.555 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:31:53.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:31:53.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:31:53.563 [DEBUG] [Thread-122136] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:31:56.052 [DEBUG] [Thread-122138 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:32:09.076 [DEBUG] [Thread-122139 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:32:11.322 [DEBUG] [Thread-122140 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:32:23.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:32:23.620 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:32:23.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:32:24.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 31, 44), 35.58, 7.89, 0.0, 22.36, 19.35, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:32:24.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:31:44
2025-11-03T20:32:24.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:32:25.052 [DEBUG] [Thread-122141] [transport.py] [_log()] starting thread (client mode): 0xed042e0
2025-11-03T20:32:25.054 [DEBUG] [Thread-122141] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:32:25.054 [DEBUG] [Thread-122141] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:32:25.054 [INFO] [Thread-122141] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:32:25.062 [DEBUG] [Thread-122141] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:32:25.062 [DEBUG] [Thread-122141] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:32:25.062 [DEBUG] [Thread-122141] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:32:25.062 [DEBUG] [Thread-122141] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:32:25.062 [DEBUG] [Thread-122141] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:32:25.062 [DEBUG] [Thread-122141] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:32:25.062 [DEBUG] [Thread-122141] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:32:25.062 [DEBUG] [Thread-122141] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:32:25.062 [DEBUG] [Thread-122141] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:32:25.062 [DEBUG] [Thread-122141] [transport.py] [_log()] client lang: <none>
2025-11-03T20:32:25.062 [DEBUG] [Thread-122141] [transport.py] [_log()] server lang: <none>
2025-11-03T20:32:25.062 [DEBUG] [Thread-122141] [transport.py] [_log()] kex follows: False
2025-11-03T20:32:25.062 [DEBUG] [Thread-122141] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:32:25.063 [DEBUG] [Thread-122141] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:32:25.063 [DEBUG] [Thread-122141] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:32:25.063 [DEBUG] [Thread-122141] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:32:25.063 [DEBUG] [Thread-122141] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:32:25.063 [DEBUG] [Thread-122141] [transport.py] [_log()] Compression: none
2025-11-03T20:32:25.063 [DEBUG] [Thread-122141] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:32:25.092 [DEBUG] [Thread-122141] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:32:25.097 [DEBUG] [Thread-122141] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:32:25.099 [DEBUG] [Thread-122141] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:32:25.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:32:25.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:32:25.103 [DEBUG] [Thread-122141] [transport.py] [_log()] userauth is OK
2025-11-03T20:32:25.104 [DEBUG] [Thread-122141] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:32:25.104 [DEBUG] [Thread-122141] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:32:25.104 [DEBUG] [Thread-122141] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:32:25.104 [DEBUG] [Thread-122141] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:32:25.124 [INFO] [Thread-122141] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:32:25.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:32:25.694 [DEBUG] [Thread-122141] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:32:25.694 [DEBUG] [Thread-122141] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:32:25.695 [DEBUG] [Thread-122141] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:32:25.735 [DEBUG] [Thread-122141] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:32:25.735 [DEBUG] [Thread-122141] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:32:25.738 [DEBUG] [Thread-122141] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:32:25.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:32:25.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:32:25.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:32:25.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:32:25.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:32:25.766 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:32:25.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:32:25.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:32:25.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:32:25.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.772323 -999.00  +19.70  24.49     12   -9.80 1 1 1 1 1     0    0 27.81 -41.02 ZNESW 28.6 24.5 298.4 29.6 19.6 -28.6 19.5 -27.7 19.3 -27.4 19.5 -28.4
2025-11-03T20:32:25.769 [DEBUG] [Thread-122141] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:32:25.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:32:25.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:32:25.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.772323
2025-11-03T20:32:25.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:32:25.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:32:25.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:32:25.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:32:25.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:32:25.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:31:44', tmtdew=35.58, humidity=7.89, cloud=0.0, wind=22.36, temperature=19.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:32:20', seeing=1.1, atlas_timestamp='2025-11-03T18:32:08.707', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010249999999999204, 0.09224999999999994, 0.04075000000000095, 0.05999999999999872, 0.11250000000000071, 0.09125000000000227, -0.062000000000001165, -0.038750000000000284, -0.1745000000000001, 0.08549999999999969, 0.11224999999999952, 0.08099999999999952, 0.1844999999999999, -0.08724999999999916, -0.028999999999999915, -0.27250000000000085, -0.12475000000000058, 0.08300000000000018, 0.18299999999999983, 0.14324999999999832, 0.10999999999999943, 0.048749999999998295, -0.11074999999999946, -0.4767499999999991, -0.34000000000000163, 0.1645000000000003, 0.19875000000000043, 0.14550000000000018, 0.07699999999999996, 0.08650000000000091, 0.1540000000000017, -0.03399999999999892, -0.04025000000000034], zp_timestamp='2025-11-03T18:30:00')
2025-11-03T20:32:25.878 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:32:25.889 [DEBUG] [Thread-122144] [transport.py] [_log()] starting thread (client mode): 0xeda0be0
2025-11-03T20:32:25.889 [DEBUG] [Thread-122144] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:32:25.903 [DEBUG] [Thread-122144] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:32:25.903 [INFO] [Thread-122144] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:32:25.910 [DEBUG] [Thread-122144] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:32:25.911 [DEBUG] [Thread-122144] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:32:25.911 [DEBUG] [Thread-122144] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:32:25.911 [DEBUG] [Thread-122144] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:32:25.911 [DEBUG] [Thread-122144] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:32:25.911 [DEBUG] [Thread-122144] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:32:25.911 [DEBUG] [Thread-122144] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:32:25.911 [DEBUG] [Thread-122144] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:32:25.911 [DEBUG] [Thread-122144] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:32:25.911 [DEBUG] [Thread-122144] [transport.py] [_log()] client lang: <none>
2025-11-03T20:32:25.911 [DEBUG] [Thread-122144] [transport.py] [_log()] server lang: <none>
2025-11-03T20:32:25.912 [DEBUG] [Thread-122144] [transport.py] [_log()] kex follows: False
2025-11-03T20:32:25.912 [DEBUG] [Thread-122144] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:32:25.912 [DEBUG] [Thread-122144] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:32:25.912 [DEBUG] [Thread-122144] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:32:25.912 [DEBUG] [Thread-122144] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:32:25.912 [DEBUG] [Thread-122144] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:32:25.912 [DEBUG] [Thread-122144] [transport.py] [_log()] Compression: none
2025-11-03T20:32:25.912 [DEBUG] [Thread-122144] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:32:25.970 [DEBUG] [Thread-122144] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:32:25.970 [DEBUG] [Thread-122144] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:32:25.971 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:32:25.971 [DEBUG] [Thread-122144] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:32:25.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:32:26.027 [DEBUG] [Thread-122144] [transport.py] [_log()] userauth is OK
2025-11-03T20:32:26.027 [DEBUG] [Thread-122144] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:32:26.027 [DEBUG] [Thread-122144] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:32:26.027 [DEBUG] [Thread-122144] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:32:26.027 [DEBUG] [Thread-122144] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:32:26.046 [INFO] [Thread-122144] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:32:26.046 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:32:26.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:32:26.440 [DEBUG] [Thread-122146 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:32:26.912 [DEBUG] [Thread-122144] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:32:26.912 [DEBUG] [Thread-122144] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:32:26.960 [DEBUG] [Thread-122144] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:32:26.960 [DEBUG] [Thread-122144] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:32:26.968 [DEBUG] [Thread-122144] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:32:26.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:32:26.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:32:26.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:32:27.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:32:27.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:32:27.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:32:27.034 [DEBUG] [Thread-122144] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:32:29.781 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:32:29.783 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:32:41.699 [DEBUG] [Thread-122147 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:32:56.868 [DEBUG] [Thread-122148 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:32:57.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:32:57.060 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:32:57.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:32:58.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 32, 19), 35.55, 7.91, 0.0, 23.1, 19.35, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:32:58.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:32:19
2025-11-03T20:32:58.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:32:58.475 [DEBUG] [Thread-122149] [transport.py] [_log()] starting thread (client mode): 0xed88850
2025-11-03T20:32:58.476 [DEBUG] [Thread-122149] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:32:58.481 [DEBUG] [Thread-122149] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:32:58.481 [INFO] [Thread-122149] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:32:58.489 [DEBUG] [Thread-122149] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:32:58.490 [DEBUG] [Thread-122149] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:32:58.490 [DEBUG] [Thread-122149] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:32:58.490 [DEBUG] [Thread-122149] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:32:58.490 [DEBUG] [Thread-122149] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:32:58.490 [DEBUG] [Thread-122149] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:32:58.490 [DEBUG] [Thread-122149] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:32:58.490 [DEBUG] [Thread-122149] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:32:58.490 [DEBUG] [Thread-122149] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:32:58.490 [DEBUG] [Thread-122149] [transport.py] [_log()] client lang: <none>
2025-11-03T20:32:58.490 [DEBUG] [Thread-122149] [transport.py] [_log()] server lang: <none>
2025-11-03T20:32:58.490 [DEBUG] [Thread-122149] [transport.py] [_log()] kex follows: False
2025-11-03T20:32:58.490 [DEBUG] [Thread-122149] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:32:58.491 [DEBUG] [Thread-122149] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:32:58.491 [DEBUG] [Thread-122149] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:32:58.491 [DEBUG] [Thread-122149] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:32:58.492 [DEBUG] [Thread-122149] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:32:58.492 [DEBUG] [Thread-122149] [transport.py] [_log()] Compression: none
2025-11-03T20:32:58.492 [DEBUG] [Thread-122149] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:32:58.538 [DEBUG] [Thread-122149] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:32:58.543 [DEBUG] [Thread-122149] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:32:58.545 [DEBUG] [Thread-122149] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:32:58.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:32:58.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:32:58.551 [DEBUG] [Thread-122149] [transport.py] [_log()] userauth is OK
2025-11-03T20:32:58.551 [DEBUG] [Thread-122149] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:32:58.551 [DEBUG] [Thread-122149] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:32:58.551 [DEBUG] [Thread-122149] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:32:58.551 [DEBUG] [Thread-122149] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:32:58.580 [INFO] [Thread-122149] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:32:58.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:32:59.195 [DEBUG] [Thread-122149] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:32:59.195 [DEBUG] [Thread-122149] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:32:59.196 [DEBUG] [Thread-122149] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:32:59.237 [DEBUG] [Thread-122149] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:32:59.237 [DEBUG] [Thread-122149] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:32:59.240 [DEBUG] [Thread-122149] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:32:59.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:32:59.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:32:59.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:32:59.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:32:59.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:32:59.268 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:32:59.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:32:59.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:32:59.271 [DEBUG] [Thread-122149] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:32:59.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:32:59.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.772670 -999.00  +19.60  20.20     12   -9.90 1 1 1 1 1     0    0 28.30 -39.28 ZNESW 26.9 20.2 298.4 34.1 19.6 -28.6 19.5 -27.7 19.3 -27.3 19.6 -28.3
2025-11-03T20:32:59.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:32:59.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:32:59.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.772670
2025-11-03T20:32:59.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:32:59.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:32:59.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:32:59.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:32:59.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:32:59.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:32:19', tmtdew=35.55, humidity=7.91, cloud=0.0, wind=23.1, temperature=19.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:32:54', seeing=1.02, atlas_timestamp='2025-11-03T18:32:38.688', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010249999999999204, 0.09224999999999994, 0.04075000000000095, 0.05999999999999872, 0.11250000000000071, 0.09125000000000227, -0.062000000000001165, -0.038750000000000284, -0.1745000000000001, 0.08549999999999969, 0.11224999999999952, 0.08099999999999952, 0.1844999999999999, -0.08724999999999916, -0.028999999999999915, -0.27250000000000085, -0.12475000000000058, 0.08300000000000018, 0.18299999999999983, 0.14324999999999832, 0.10999999999999943, 0.048749999999998295, -0.11074999999999946, -0.4767499999999991, -0.34000000000000163, 0.1645000000000003, 0.19875000000000043, 0.14550000000000018, 0.07699999999999996, 0.08650000000000091, 0.1540000000000017, -0.03399999999999892, -0.04025000000000034], zp_timestamp='2025-11-03T18:30:00')
2025-11-03T20:32:59.392 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:32:59.405 [DEBUG] [Thread-122152] [transport.py] [_log()] starting thread (client mode): 0xed89f00
2025-11-03T20:32:59.405 [DEBUG] [Thread-122152] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:32:59.420 [DEBUG] [Thread-122152] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:32:59.420 [INFO] [Thread-122152] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:32:59.428 [DEBUG] [Thread-122152] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:32:59.428 [DEBUG] [Thread-122152] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:32:59.428 [DEBUG] [Thread-122152] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:32:59.428 [DEBUG] [Thread-122152] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:32:59.428 [DEBUG] [Thread-122152] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:32:59.428 [DEBUG] [Thread-122152] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:32:59.428 [DEBUG] [Thread-122152] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:32:59.428 [DEBUG] [Thread-122152] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:32:59.429 [DEBUG] [Thread-122152] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:32:59.429 [DEBUG] [Thread-122152] [transport.py] [_log()] client lang: <none>
2025-11-03T20:32:59.429 [DEBUG] [Thread-122152] [transport.py] [_log()] server lang: <none>
2025-11-03T20:32:59.429 [DEBUG] [Thread-122152] [transport.py] [_log()] kex follows: False
2025-11-03T20:32:59.429 [DEBUG] [Thread-122152] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:32:59.429 [DEBUG] [Thread-122152] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:32:59.429 [DEBUG] [Thread-122152] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:32:59.429 [DEBUG] [Thread-122152] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:32:59.429 [DEBUG] [Thread-122152] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:32:59.429 [DEBUG] [Thread-122152] [transport.py] [_log()] Compression: none
2025-11-03T20:32:59.429 [DEBUG] [Thread-122152] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:32:59.487 [DEBUG] [Thread-122152] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:32:59.487 [DEBUG] [Thread-122152] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:32:59.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:32:59.488 [DEBUG] [Thread-122152] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:32:59.489 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:32:59.544 [DEBUG] [Thread-122152] [transport.py] [_log()] userauth is OK
2025-11-03T20:32:59.544 [DEBUG] [Thread-122152] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:32:59.544 [DEBUG] [Thread-122152] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:32:59.544 [DEBUG] [Thread-122152] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:32:59.545 [DEBUG] [Thread-122152] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:32:59.565 [INFO] [Thread-122152] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:32:59.566 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:32:59.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:33:00.394 [DEBUG] [Thread-122152] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:33:00.394 [DEBUG] [Thread-122152] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:33:00.442 [DEBUG] [Thread-122152] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:33:00.442 [DEBUG] [Thread-122152] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:33:00.451 [DEBUG] [Thread-122152] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:33:00.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:33:00.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:33:00.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:33:00.478 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:33:00.478 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:33:00.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:33:00.486 [DEBUG] [Thread-122152] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:33:09.627 [DEBUG] [Thread-122154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:33:11.949 [DEBUG] [Thread-122155 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:33:27.347 [DEBUG] [Thread-122156 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:33:29.986 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:33:29.988 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:33:30.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:33:30.512 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:33:30.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:33:31.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 32, 53), 35.69, 7.89, 0.0, 21.35, 19.43, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:33:31.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:32:53
2025-11-03T20:33:31.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:33:32.154 [DEBUG] [Thread-122157] [transport.py] [_log()] starting thread (client mode): 0xed21a20
2025-11-03T20:33:32.155 [DEBUG] [Thread-122157] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:33:32.165 [DEBUG] [Thread-122157] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:33:32.165 [INFO] [Thread-122157] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:33:32.168 [DEBUG] [Thread-122157] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:33:32.168 [DEBUG] [Thread-122157] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:33:32.168 [DEBUG] [Thread-122157] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:33:32.168 [DEBUG] [Thread-122157] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:33:32.168 [DEBUG] [Thread-122157] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:33:32.168 [DEBUG] [Thread-122157] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:33:32.168 [DEBUG] [Thread-122157] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:33:32.168 [DEBUG] [Thread-122157] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:33:32.168 [DEBUG] [Thread-122157] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:33:32.168 [DEBUG] [Thread-122157] [transport.py] [_log()] client lang: <none>
2025-11-03T20:33:32.168 [DEBUG] [Thread-122157] [transport.py] [_log()] server lang: <none>
2025-11-03T20:33:32.168 [DEBUG] [Thread-122157] [transport.py] [_log()] kex follows: False
2025-11-03T20:33:32.168 [DEBUG] [Thread-122157] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:33:32.169 [DEBUG] [Thread-122157] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:33:32.169 [DEBUG] [Thread-122157] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:33:32.169 [DEBUG] [Thread-122157] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:33:32.169 [DEBUG] [Thread-122157] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:33:32.169 [DEBUG] [Thread-122157] [transport.py] [_log()] Compression: none
2025-11-03T20:33:32.169 [DEBUG] [Thread-122157] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:33:32.196 [DEBUG] [Thread-122157] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:33:32.200 [DEBUG] [Thread-122157] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:33:32.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:33:32.203 [DEBUG] [Thread-122157] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:33:32.203 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:33:32.205 [DEBUG] [Thread-122157] [transport.py] [_log()] userauth is OK
2025-11-03T20:33:32.205 [DEBUG] [Thread-122157] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:33:32.205 [DEBUG] [Thread-122157] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:33:32.205 [DEBUG] [Thread-122157] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:33:32.205 [DEBUG] [Thread-122157] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:33:32.225 [INFO] [Thread-122157] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:33:32.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:33:32.861 [DEBUG] [Thread-122157] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:33:32.861 [DEBUG] [Thread-122157] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:33:32.862 [DEBUG] [Thread-122157] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:33:32.902 [DEBUG] [Thread-122157] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:33:32.903 [DEBUG] [Thread-122157] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:33:32.905 [DEBUG] [Thread-122157] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:33:32.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:33:32.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:33:32.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:33:32.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:33:32.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:33:32.931 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:33:32.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:33:32.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:33:32.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:33:32.934 [DEBUG] [Thread-122157] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:33:32.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.773018 -999.00  +19.60  20.93     12   -9.90 1 1 1 1 1     0    0 27.66 -38.05 ZNESW 20.9 20.9 296.2 31.9 19.6 -28.7 19.5 -27.7 19.3 -27.4 19.6 -28.3
2025-11-03T20:33:32.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:33:32.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:33:32.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.773018
2025-11-03T20:33:32.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:33:32.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:33:32.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:33:32.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:33:32.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:33:32.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:32:53', tmtdew=35.69, humidity=7.89, cloud=0.0, wind=21.35, temperature=19.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:33:28', seeing=1.02, atlas_timestamp='2025-11-03T18:33:08.755', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010249999999999204, 0.09224999999999994, 0.04075000000000095, 0.05999999999999872, 0.11250000000000071, 0.09125000000000227, -0.062000000000001165, -0.038750000000000284, -0.1745000000000001, 0.08549999999999969, 0.11224999999999952, 0.08099999999999952, 0.1844999999999999, -0.08724999999999916, -0.028999999999999915, -0.27250000000000085, -0.12475000000000058, 0.08300000000000018, 0.18299999999999983, 0.14324999999999832, 0.10999999999999943, 0.048749999999998295, -0.11074999999999946, -0.4767499999999991, -0.34000000000000163, 0.1645000000000003, 0.19875000000000043, 0.14550000000000018, 0.07699999999999996, 0.08650000000000091, 0.1540000000000017, -0.03399999999999892, -0.04025000000000034], zp_timestamp='2025-11-03T18:30:00')
2025-11-03T20:33:33.055 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:33:33.066 [DEBUG] [Thread-122160] [transport.py] [_log()] starting thread (client mode): 0x117e8a00
2025-11-03T20:33:33.066 [DEBUG] [Thread-122160] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:33:33.081 [DEBUG] [Thread-122160] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:33:33.081 [INFO] [Thread-122160] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:33:33.088 [DEBUG] [Thread-122160] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:33:33.089 [DEBUG] [Thread-122160] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:33:33.089 [DEBUG] [Thread-122160] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:33:33.089 [DEBUG] [Thread-122160] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:33:33.089 [DEBUG] [Thread-122160] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:33:33.089 [DEBUG] [Thread-122160] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:33:33.089 [DEBUG] [Thread-122160] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:33:33.089 [DEBUG] [Thread-122160] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:33:33.089 [DEBUG] [Thread-122160] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:33:33.089 [DEBUG] [Thread-122160] [transport.py] [_log()] client lang: <none>
2025-11-03T20:33:33.089 [DEBUG] [Thread-122160] [transport.py] [_log()] server lang: <none>
2025-11-03T20:33:33.089 [DEBUG] [Thread-122160] [transport.py] [_log()] kex follows: False
2025-11-03T20:33:33.089 [DEBUG] [Thread-122160] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:33:33.089 [DEBUG] [Thread-122160] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:33:33.089 [DEBUG] [Thread-122160] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:33:33.089 [DEBUG] [Thread-122160] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:33:33.089 [DEBUG] [Thread-122160] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:33:33.089 [DEBUG] [Thread-122160] [transport.py] [_log()] Compression: none
2025-11-03T20:33:33.089 [DEBUG] [Thread-122160] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:33:33.146 [DEBUG] [Thread-122160] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:33:33.146 [DEBUG] [Thread-122160] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:33:33.147 [DEBUG] [Thread-122160] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:33:33.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:33:33.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:33:33.204 [DEBUG] [Thread-122160] [transport.py] [_log()] userauth is OK
2025-11-03T20:33:33.204 [DEBUG] [Thread-122160] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:33:33.204 [DEBUG] [Thread-122160] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:33:33.204 [DEBUG] [Thread-122160] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:33:33.204 [DEBUG] [Thread-122160] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:33:33.224 [INFO] [Thread-122160] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:33:33.224 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:33:33.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:33:34.090 [DEBUG] [Thread-122160] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:33:34.090 [DEBUG] [Thread-122160] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:33:34.137 [DEBUG] [Thread-122160] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:33:34.137 [DEBUG] [Thread-122160] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:33:34.146 [DEBUG] [Thread-122160] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:33:34.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:33:34.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:33:34.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:33:34.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:33:34.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:33:34.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:33:34.183 [DEBUG] [Thread-122160] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:33:42.514 [DEBUG] [Thread-122162 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:33:57.829 [DEBUG] [Thread-122163 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:34:04.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:34:04.209 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:34:04.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:34:05.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 33, 28), 35.67, 7.91, 0.0, 19.85, 19.48, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:34:05.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:33:28
2025-11-03T20:34:05.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:34:06.106 [DEBUG] [Thread-122164] [transport.py] [_log()] starting thread (client mode): 0x117ea260
2025-11-03T20:34:06.107 [DEBUG] [Thread-122164] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:34:06.117 [DEBUG] [Thread-122164] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:34:06.117 [INFO] [Thread-122164] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:34:06.124 [DEBUG] [Thread-122164] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:34:06.124 [DEBUG] [Thread-122164] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:34:06.124 [DEBUG] [Thread-122164] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:34:06.124 [DEBUG] [Thread-122164] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:34:06.124 [DEBUG] [Thread-122164] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:34:06.124 [DEBUG] [Thread-122164] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:34:06.124 [DEBUG] [Thread-122164] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:34:06.124 [DEBUG] [Thread-122164] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:34:06.124 [DEBUG] [Thread-122164] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:34:06.124 [DEBUG] [Thread-122164] [transport.py] [_log()] client lang: <none>
2025-11-03T20:34:06.124 [DEBUG] [Thread-122164] [transport.py] [_log()] server lang: <none>
2025-11-03T20:34:06.124 [DEBUG] [Thread-122164] [transport.py] [_log()] kex follows: False
2025-11-03T20:34:06.124 [DEBUG] [Thread-122164] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:34:06.125 [DEBUG] [Thread-122164] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:34:06.125 [DEBUG] [Thread-122164] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:34:06.125 [DEBUG] [Thread-122164] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:34:06.125 [DEBUG] [Thread-122164] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:34:06.125 [DEBUG] [Thread-122164] [transport.py] [_log()] Compression: none
2025-11-03T20:34:06.125 [DEBUG] [Thread-122164] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:34:06.160 [DEBUG] [Thread-122164] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:34:06.165 [DEBUG] [Thread-122164] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:34:06.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:34:06.168 [DEBUG] [Thread-122164] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:34:06.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:34:06.171 [DEBUG] [Thread-122164] [transport.py] [_log()] userauth is OK
2025-11-03T20:34:06.171 [DEBUG] [Thread-122164] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:34:06.171 [DEBUG] [Thread-122164] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:34:06.171 [DEBUG] [Thread-122164] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:34:06.171 [DEBUG] [Thread-122164] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:34:06.191 [INFO] [Thread-122164] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:34:06.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:34:06.809 [DEBUG] [Thread-122164] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:34:06.809 [DEBUG] [Thread-122164] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:34:06.810 [DEBUG] [Thread-122164] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:34:06.851 [DEBUG] [Thread-122164] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:34:06.851 [DEBUG] [Thread-122164] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:34:06.853 [DEBUG] [Thread-122164] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:34:06.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:34:06.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:34:06.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:34:06.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:34:06.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:34:06.874 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:34:06.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:34:06.874 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:34:06.876 [DEBUG] [Thread-122164] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:34:06.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:34:06.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.773365 -999.00  +19.60  24.71     12   -9.90 1 1 1 1 1     0    0 28.67 -34.78 ZNESW 21.0 24.7 295.6 29.4 19.6 -28.6 19.5 -27.6 19.3 -27.7 19.6 -28.5
2025-11-03T20:34:06.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:34:06.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:34:06.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.773365
2025-11-03T20:34:06.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:34:06.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:34:06.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:34:06.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:34:06.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:34:06.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:33:28', tmtdew=35.67, humidity=7.91, cloud=0.0, wind=19.85, temperature=19.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:34:03', seeing=0.98, atlas_timestamp='2025-11-03T18:33:38.736', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010249999999999204, 0.09224999999999994, 0.04075000000000095, 0.05999999999999872, 0.11250000000000071, 0.09125000000000227, -0.062000000000001165, -0.038750000000000284, -0.1745000000000001, 0.08549999999999969, 0.11224999999999952, 0.08099999999999952, 0.1844999999999999, -0.08724999999999916, -0.028999999999999915, -0.27250000000000085, -0.12475000000000058, 0.08300000000000018, 0.18299999999999983, 0.14324999999999832, 0.10999999999999943, 0.048749999999998295, -0.11074999999999946, -0.4767499999999991, -0.34000000000000163, 0.1645000000000003, 0.19875000000000043, 0.14550000000000018, 0.07699999999999996, 0.08650000000000091, 0.1540000000000017, -0.03399999999999892, -0.04025000000000034], zp_timestamp='2025-11-03T18:30:00')
2025-11-03T20:34:06.990 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:34:07.002 [DEBUG] [Thread-122167] [transport.py] [_log()] starting thread (client mode): 0x1174d9c0
2025-11-03T20:34:07.002 [DEBUG] [Thread-122167] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:34:07.016 [DEBUG] [Thread-122167] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:34:07.016 [INFO] [Thread-122167] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:34:07.023 [DEBUG] [Thread-122167] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:34:07.024 [DEBUG] [Thread-122167] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:34:07.024 [DEBUG] [Thread-122167] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:34:07.024 [DEBUG] [Thread-122167] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:34:07.024 [DEBUG] [Thread-122167] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:34:07.024 [DEBUG] [Thread-122167] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:34:07.024 [DEBUG] [Thread-122167] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:34:07.024 [DEBUG] [Thread-122167] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:34:07.024 [DEBUG] [Thread-122167] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:34:07.024 [DEBUG] [Thread-122167] [transport.py] [_log()] client lang: <none>
2025-11-03T20:34:07.024 [DEBUG] [Thread-122167] [transport.py] [_log()] server lang: <none>
2025-11-03T20:34:07.024 [DEBUG] [Thread-122167] [transport.py] [_log()] kex follows: False
2025-11-03T20:34:07.024 [DEBUG] [Thread-122167] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:34:07.024 [DEBUG] [Thread-122167] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:34:07.024 [DEBUG] [Thread-122167] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:34:07.024 [DEBUG] [Thread-122167] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:34:07.024 [DEBUG] [Thread-122167] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:34:07.024 [DEBUG] [Thread-122167] [transport.py] [_log()] Compression: none
2025-11-03T20:34:07.024 [DEBUG] [Thread-122167] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:34:07.083 [DEBUG] [Thread-122167] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:34:07.084 [DEBUG] [Thread-122167] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:34:07.084 [DEBUG] [Thread-122167] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:34:07.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:34:07.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:34:07.139 [DEBUG] [Thread-122167] [transport.py] [_log()] userauth is OK
2025-11-03T20:34:07.139 [DEBUG] [Thread-122167] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:34:07.139 [DEBUG] [Thread-122167] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:34:07.139 [DEBUG] [Thread-122167] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:34:07.139 [DEBUG] [Thread-122167] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:34:07.153 [INFO] [Thread-122167] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:34:07.153 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:34:07.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:34:08.023 [DEBUG] [Thread-122167] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:34:08.023 [DEBUG] [Thread-122167] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:34:08.069 [DEBUG] [Thread-122167] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:34:08.069 [DEBUG] [Thread-122167] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:34:08.078 [DEBUG] [Thread-122167] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:34:08.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:34:08.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:34:08.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:34:08.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:34:08.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:34:08.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:34:08.115 [DEBUG] [Thread-122167] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:34:10.143 [DEBUG] [Thread-122169 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:34:12.978 [DEBUG] [Thread-122170 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:34:28.309 [DEBUG] [Thread-122171 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:34:30.194 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:34:30.195 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:34:38.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:34:38.122 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:34:38.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:34:39.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 34, 2), 35.64, 7.93, 0.0, 19.74, 19.46, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:34:39.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:34:02
2025-11-03T20:34:40.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:34:40.271 [DEBUG] [Thread-122172] [transport.py] [_log()] starting thread (client mode): 0xed89000
2025-11-03T20:34:40.275 [DEBUG] [Thread-122172] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:34:40.276 [DEBUG] [Thread-122172] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:34:40.276 [INFO] [Thread-122172] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:34:40.284 [DEBUG] [Thread-122172] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:34:40.285 [DEBUG] [Thread-122172] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:34:40.285 [DEBUG] [Thread-122172] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:34:40.285 [DEBUG] [Thread-122172] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:34:40.285 [DEBUG] [Thread-122172] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:34:40.285 [DEBUG] [Thread-122172] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:34:40.285 [DEBUG] [Thread-122172] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:34:40.285 [DEBUG] [Thread-122172] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:34:40.285 [DEBUG] [Thread-122172] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:34:40.285 [DEBUG] [Thread-122172] [transport.py] [_log()] client lang: <none>
2025-11-03T20:34:40.285 [DEBUG] [Thread-122172] [transport.py] [_log()] server lang: <none>
2025-11-03T20:34:40.285 [DEBUG] [Thread-122172] [transport.py] [_log()] kex follows: False
2025-11-03T20:34:40.285 [DEBUG] [Thread-122172] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:34:40.286 [DEBUG] [Thread-122172] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:34:40.286 [DEBUG] [Thread-122172] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:34:40.286 [DEBUG] [Thread-122172] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:34:40.286 [DEBUG] [Thread-122172] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:34:40.286 [DEBUG] [Thread-122172] [transport.py] [_log()] Compression: none
2025-11-03T20:34:40.286 [DEBUG] [Thread-122172] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:34:40.328 [DEBUG] [Thread-122172] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:34:40.333 [DEBUG] [Thread-122172] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:34:40.335 [DEBUG] [Thread-122172] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:34:40.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:34:40.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:34:40.339 [DEBUG] [Thread-122172] [transport.py] [_log()] userauth is OK
2025-11-03T20:34:40.340 [DEBUG] [Thread-122172] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:34:40.340 [DEBUG] [Thread-122172] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:34:40.340 [DEBUG] [Thread-122172] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:34:40.340 [DEBUG] [Thread-122172] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:34:40.359 [INFO] [Thread-122172] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:34:40.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:34:40.951 [DEBUG] [Thread-122172] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:34:40.951 [DEBUG] [Thread-122172] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:34:40.952 [DEBUG] [Thread-122172] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:34:40.993 [DEBUG] [Thread-122172] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:34:40.993 [DEBUG] [Thread-122172] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:34:40.995 [DEBUG] [Thread-122172] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:34:41.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:34:41.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:34:41.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:34:41.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:34:41.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:34:41.019 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:34:41.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:34:41.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:34:41.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:34:41.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.773712 -999.00  +19.60  25.63     12   -9.90 1 1 1 1 1     0    0 28.60 -31.23 ZNESW 23.8 25.6 296.2 32.3 19.6 -28.8 19.5 -27.7 19.2 -27.5 19.5 -28.2
2025-11-03T20:34:41.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:34:41.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:34:41.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.773712
2025-11-03T20:34:41.028 [DEBUG] [Thread-122172] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:34:41.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:34:41.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:34:41.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:34:41.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:34:41.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:34:41.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:34:02', tmtdew=35.64, humidity=7.93, cloud=0.0, wind=19.74, temperature=19.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:34:37', seeing=0.93, atlas_timestamp='2025-11-03T18:34:08.717', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010249999999999204, 0.09224999999999994, 0.04075000000000095, 0.05999999999999872, 0.11250000000000071, 0.09125000000000227, -0.062000000000001165, -0.038750000000000284, -0.1745000000000001, 0.08549999999999969, 0.11224999999999952, 0.08099999999999952, 0.1844999999999999, -0.08724999999999916, -0.028999999999999915, -0.27250000000000085, -0.12475000000000058, 0.08300000000000018, 0.18299999999999983, 0.14324999999999832, 0.10999999999999943, 0.048749999999998295, -0.11074999999999946, -0.4767499999999991, -0.34000000000000163, 0.1645000000000003, 0.19875000000000043, 0.14550000000000018, 0.07699999999999996, 0.08650000000000091, 0.1540000000000017, -0.03399999999999892, -0.04025000000000034], zp_timestamp='2025-11-03T18:30:00')
2025-11-03T20:34:41.134 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:34:41.146 [DEBUG] [Thread-122175] [transport.py] [_log()] starting thread (client mode): 0x141db940
2025-11-03T20:34:41.146 [DEBUG] [Thread-122175] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:34:41.160 [DEBUG] [Thread-122175] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:34:41.160 [INFO] [Thread-122175] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:34:41.168 [DEBUG] [Thread-122175] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:34:41.168 [DEBUG] [Thread-122175] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:34:41.168 [DEBUG] [Thread-122175] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:34:41.168 [DEBUG] [Thread-122175] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:34:41.168 [DEBUG] [Thread-122175] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:34:41.168 [DEBUG] [Thread-122175] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:34:41.168 [DEBUG] [Thread-122175] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:34:41.168 [DEBUG] [Thread-122175] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:34:41.169 [DEBUG] [Thread-122175] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:34:41.169 [DEBUG] [Thread-122175] [transport.py] [_log()] client lang: <none>
2025-11-03T20:34:41.169 [DEBUG] [Thread-122175] [transport.py] [_log()] server lang: <none>
2025-11-03T20:34:41.169 [DEBUG] [Thread-122175] [transport.py] [_log()] kex follows: False
2025-11-03T20:34:41.169 [DEBUG] [Thread-122175] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:34:41.169 [DEBUG] [Thread-122175] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:34:41.169 [DEBUG] [Thread-122175] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:34:41.169 [DEBUG] [Thread-122175] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:34:41.169 [DEBUG] [Thread-122175] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:34:41.169 [DEBUG] [Thread-122175] [transport.py] [_log()] Compression: none
2025-11-03T20:34:41.169 [DEBUG] [Thread-122175] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:34:41.227 [DEBUG] [Thread-122175] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:34:41.227 [DEBUG] [Thread-122175] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:34:41.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:34:41.228 [DEBUG] [Thread-122175] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:34:41.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:34:41.283 [DEBUG] [Thread-122175] [transport.py] [_log()] userauth is OK
2025-11-03T20:34:41.283 [DEBUG] [Thread-122175] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:34:41.283 [DEBUG] [Thread-122175] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:34:41.283 [DEBUG] [Thread-122175] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:34:41.283 [DEBUG] [Thread-122175] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:34:41.298 [INFO] [Thread-122175] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:34:41.298 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:34:41.298 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:34:42.120 [DEBUG] [Thread-122175] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:34:42.121 [DEBUG] [Thread-122175] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:34:42.170 [DEBUG] [Thread-122175] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:34:42.170 [DEBUG] [Thread-122175] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:34:42.179 [DEBUG] [Thread-122175] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:34:42.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:34:42.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:34:42.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:34:42.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:34:42.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:34:42.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:34:42.217 [DEBUG] [Thread-122175] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:34:43.468 [DEBUG] [Thread-122177 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:34:58.730 [DEBUG] [Thread-122178 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:35:10.649 [DEBUG] [Thread-122179 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:35:12.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:35:12.243 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:35:12.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:35:13.928 [DEBUG] [Thread-122180 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:35:14.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 34, 36), 35.74, 7.89, 0.0, 23.59, 19.45, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:35:14.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:34:36
2025-11-03T20:35:14.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:35:14.408 [DEBUG] [Thread-122181] [transport.py] [_log()] starting thread (client mode): 0x141db4c0
2025-11-03T20:35:14.409 [DEBUG] [Thread-122181] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:35:14.412 [DEBUG] [Thread-122181] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:35:14.412 [INFO] [Thread-122181] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:35:14.420 [DEBUG] [Thread-122181] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:35:14.421 [DEBUG] [Thread-122181] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:35:14.421 [DEBUG] [Thread-122181] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:35:14.421 [DEBUG] [Thread-122181] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:35:14.421 [DEBUG] [Thread-122181] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:35:14.421 [DEBUG] [Thread-122181] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:35:14.421 [DEBUG] [Thread-122181] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:35:14.421 [DEBUG] [Thread-122181] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:35:14.421 [DEBUG] [Thread-122181] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:35:14.421 [DEBUG] [Thread-122181] [transport.py] [_log()] client lang: <none>
2025-11-03T20:35:14.421 [DEBUG] [Thread-122181] [transport.py] [_log()] server lang: <none>
2025-11-03T20:35:14.421 [DEBUG] [Thread-122181] [transport.py] [_log()] kex follows: False
2025-11-03T20:35:14.421 [DEBUG] [Thread-122181] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:35:14.422 [DEBUG] [Thread-122181] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:35:14.422 [DEBUG] [Thread-122181] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:35:14.422 [DEBUG] [Thread-122181] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:35:14.422 [DEBUG] [Thread-122181] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:35:14.423 [DEBUG] [Thread-122181] [transport.py] [_log()] Compression: none
2025-11-03T20:35:14.423 [DEBUG] [Thread-122181] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:35:14.461 [DEBUG] [Thread-122181] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:35:14.466 [DEBUG] [Thread-122181] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:35:14.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:35:14.469 [DEBUG] [Thread-122181] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:35:14.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:35:14.472 [DEBUG] [Thread-122181] [transport.py] [_log()] userauth is OK
2025-11-03T20:35:14.472 [DEBUG] [Thread-122181] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:35:14.472 [DEBUG] [Thread-122181] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:35:14.472 [DEBUG] [Thread-122181] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:35:14.472 [DEBUG] [Thread-122181] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:35:14.493 [INFO] [Thread-122181] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:35:14.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:35:15.061 [DEBUG] [Thread-122181] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:35:15.061 [DEBUG] [Thread-122181] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:35:15.062 [DEBUG] [Thread-122181] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:35:15.103 [DEBUG] [Thread-122181] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:35:15.103 [DEBUG] [Thread-122181] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:35:15.106 [DEBUG] [Thread-122181] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:35:15.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:35:15.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:35:15.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:35:15.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:35:15.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:35:15.130 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:35:15.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:35:15.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:35:15.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:35:15.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.774406 -999.00  +19.60  19.79     12   -9.90 1 1 1 1 1     0    0 28.44 -23.92 ZNESW 21.0 19.8 301.0 24.3 19.6 -28.7 19.5 -27.6 19.2 -27.5 19.5 -28.1
2025-11-03T20:35:15.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:35:15.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:35:15.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.774406
2025-11-03T20:35:15.137 [DEBUG] [Thread-122181] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:35:15.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:35:15.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:35:15.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:35:15.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:35:15.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:35:15.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:34:36', tmtdew=35.74, humidity=7.89, cloud=0.0, wind=23.59, temperature=19.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:35:11', seeing=1.02, atlas_timestamp='2025-11-03T18:35:08.678', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010249999999999204, 0.09224999999999994, 0.04075000000000095, 0.05999999999999872, 0.11250000000000071, 0.09125000000000227, -0.062000000000001165, -0.038750000000000284, -0.1745000000000001, 0.08549999999999969, 0.11224999999999952, 0.08099999999999952, 0.1844999999999999, -0.08724999999999916, -0.028999999999999915, -0.27250000000000085, -0.12475000000000058, 0.08300000000000018, 0.18299999999999983, 0.14324999999999832, 0.10999999999999943, 0.048749999999998295, -0.11074999999999946, -0.4767499999999991, -0.34000000000000163, 0.1645000000000003, 0.19875000000000043, 0.14550000000000018, 0.07699999999999996, 0.08650000000000091, 0.1540000000000017, -0.03399999999999892, -0.04025000000000034], zp_timestamp='2025-11-03T18:34:00')
2025-11-03T20:35:15.241 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:35:15.252 [DEBUG] [Thread-122184] [transport.py] [_log()] starting thread (client mode): 0x117ea140
2025-11-03T20:35:15.252 [DEBUG] [Thread-122184] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:35:15.268 [DEBUG] [Thread-122184] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:35:15.268 [INFO] [Thread-122184] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:35:15.275 [DEBUG] [Thread-122184] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:35:15.275 [DEBUG] [Thread-122184] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:35:15.276 [DEBUG] [Thread-122184] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:35:15.276 [DEBUG] [Thread-122184] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:35:15.276 [DEBUG] [Thread-122184] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:35:15.276 [DEBUG] [Thread-122184] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:35:15.276 [DEBUG] [Thread-122184] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:35:15.276 [DEBUG] [Thread-122184] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:35:15.276 [DEBUG] [Thread-122184] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:35:15.276 [DEBUG] [Thread-122184] [transport.py] [_log()] client lang: <none>
2025-11-03T20:35:15.276 [DEBUG] [Thread-122184] [transport.py] [_log()] server lang: <none>
2025-11-03T20:35:15.276 [DEBUG] [Thread-122184] [transport.py] [_log()] kex follows: False
2025-11-03T20:35:15.276 [DEBUG] [Thread-122184] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:35:15.276 [DEBUG] [Thread-122184] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:35:15.276 [DEBUG] [Thread-122184] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:35:15.276 [DEBUG] [Thread-122184] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:35:15.276 [DEBUG] [Thread-122184] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:35:15.276 [DEBUG] [Thread-122184] [transport.py] [_log()] Compression: none
2025-11-03T20:35:15.276 [DEBUG] [Thread-122184] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:35:15.334 [DEBUG] [Thread-122184] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:35:15.334 [DEBUG] [Thread-122184] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:35:15.334 [DEBUG] [Thread-122184] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:35:15.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:35:15.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:35:15.391 [DEBUG] [Thread-122184] [transport.py] [_log()] userauth is OK
2025-11-03T20:35:15.391 [DEBUG] [Thread-122184] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:35:15.391 [DEBUG] [Thread-122184] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:35:15.392 [DEBUG] [Thread-122184] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:35:15.392 [DEBUG] [Thread-122184] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:35:15.406 [INFO] [Thread-122184] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:35:15.406 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:35:15.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:35:16.224 [DEBUG] [Thread-122184] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:35:16.225 [DEBUG] [Thread-122184] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:35:16.272 [DEBUG] [Thread-122184] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:35:16.273 [DEBUG] [Thread-122184] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:35:16.281 [DEBUG] [Thread-122184] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:35:16.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:35:16.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:35:16.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:35:16.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:35:16.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:35:16.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:35:16.317 [DEBUG] [Thread-122184] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:35:29.136 [DEBUG] [Thread-122186 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:35:30.418 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:35:30.419 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:35:44.383 [DEBUG] [Thread-122187 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:35:46.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:35:46.322 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:35:46.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:35:48.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 35, 11), 35.73, 7.89, 0.0, 22.32, 19.41, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:35:48.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:35:11
2025-11-03T20:35:48.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:35:48.461 [DEBUG] [Thread-122188] [transport.py] [_log()] starting thread (client mode): 0xed88ca0
2025-11-03T20:35:48.463 [DEBUG] [Thread-122188] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:35:48.469 [DEBUG] [Thread-122188] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:35:48.469 [INFO] [Thread-122188] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:35:48.477 [DEBUG] [Thread-122188] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:35:48.477 [DEBUG] [Thread-122188] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:35:48.477 [DEBUG] [Thread-122188] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:35:48.477 [DEBUG] [Thread-122188] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:35:48.478 [DEBUG] [Thread-122188] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:35:48.478 [DEBUG] [Thread-122188] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:35:48.478 [DEBUG] [Thread-122188] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:35:48.478 [DEBUG] [Thread-122188] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:35:48.478 [DEBUG] [Thread-122188] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:35:48.478 [DEBUG] [Thread-122188] [transport.py] [_log()] client lang: <none>
2025-11-03T20:35:48.478 [DEBUG] [Thread-122188] [transport.py] [_log()] server lang: <none>
2025-11-03T20:35:48.478 [DEBUG] [Thread-122188] [transport.py] [_log()] kex follows: False
2025-11-03T20:35:48.478 [DEBUG] [Thread-122188] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:35:48.479 [DEBUG] [Thread-122188] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:35:48.479 [DEBUG] [Thread-122188] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:35:48.479 [DEBUG] [Thread-122188] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:35:48.479 [DEBUG] [Thread-122188] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:35:48.479 [DEBUG] [Thread-122188] [transport.py] [_log()] Compression: none
2025-11-03T20:35:48.479 [DEBUG] [Thread-122188] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:35:48.522 [DEBUG] [Thread-122188] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:35:48.527 [DEBUG] [Thread-122188] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:35:48.529 [DEBUG] [Thread-122188] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:35:48.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:35:48.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:35:48.534 [DEBUG] [Thread-122188] [transport.py] [_log()] userauth is OK
2025-11-03T20:35:48.534 [DEBUG] [Thread-122188] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:35:48.534 [DEBUG] [Thread-122188] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:35:48.534 [DEBUG] [Thread-122188] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:35:48.534 [DEBUG] [Thread-122188] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:35:48.554 [INFO] [Thread-122188] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:35:48.558 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:35:49.130 [DEBUG] [Thread-122188] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:35:49.130 [DEBUG] [Thread-122188] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:35:49.131 [DEBUG] [Thread-122188] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:35:49.171 [DEBUG] [Thread-122188] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:35:49.172 [DEBUG] [Thread-122188] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:35:49.173 [DEBUG] [Thread-122188] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:35:49.178 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:35:49.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:35:49.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:35:49.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:35:49.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:35:49.190 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:35:49.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:35:49.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:35:49.192 [DEBUG] [Thread-122188] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:35:49.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:35:49.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.774406 -999.00  +19.60  19.79     12   -9.90 1 1 1 1 1     0    0 28.44 -23.92 ZNESW 21.0 19.8 301.0 24.3 19.6 -28.7 19.5 -27.6 19.2 -27.5 19.5 -28.1
2025-11-03T20:35:49.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:35:49.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:35:49.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.774406
2025-11-03T20:35:49.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:35:49.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:35:49.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:35:49.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:35:49.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:35:49.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:35:11', tmtdew=35.73, humidity=7.89, cloud=0.0, wind=22.32, temperature=19.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:35:11', seeing=1.02, atlas_timestamp='2025-11-03T18:35:08.678', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010249999999999204, 0.09224999999999994, 0.04075000000000095, 0.05999999999999872, 0.11250000000000071, 0.09125000000000227, -0.062000000000001165, -0.038750000000000284, -0.1745000000000001, 0.08549999999999969, 0.11224999999999952, 0.08099999999999952, 0.1844999999999999, -0.08724999999999916, -0.028999999999999915, -0.27250000000000085, -0.12475000000000058, 0.08300000000000018, 0.18299999999999983, 0.14324999999999832, 0.10999999999999943, 0.048749999999998295, -0.11074999999999946, -0.4767499999999991, -0.34000000000000163, 0.1645000000000003, 0.19875000000000043, 0.14550000000000018, 0.07699999999999996, 0.08650000000000091, 0.1540000000000017, -0.03399999999999892, -0.04025000000000034], zp_timestamp='2025-11-03T18:34:00')
2025-11-03T20:35:49.299 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:35:49.312 [DEBUG] [Thread-122191] [transport.py] [_log()] starting thread (client mode): 0xed89d80
2025-11-03T20:35:49.312 [DEBUG] [Thread-122191] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:35:49.327 [DEBUG] [Thread-122191] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:35:49.327 [INFO] [Thread-122191] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:35:49.335 [DEBUG] [Thread-122191] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:35:49.335 [DEBUG] [Thread-122191] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:35:49.335 [DEBUG] [Thread-122191] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:35:49.335 [DEBUG] [Thread-122191] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:35:49.335 [DEBUG] [Thread-122191] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:35:49.335 [DEBUG] [Thread-122191] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:35:49.335 [DEBUG] [Thread-122191] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:35:49.335 [DEBUG] [Thread-122191] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:35:49.335 [DEBUG] [Thread-122191] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:35:49.335 [DEBUG] [Thread-122191] [transport.py] [_log()] client lang: <none>
2025-11-03T20:35:49.335 [DEBUG] [Thread-122191] [transport.py] [_log()] server lang: <none>
2025-11-03T20:35:49.335 [DEBUG] [Thread-122191] [transport.py] [_log()] kex follows: False
2025-11-03T20:35:49.335 [DEBUG] [Thread-122191] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:35:49.335 [DEBUG] [Thread-122191] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:35:49.336 [DEBUG] [Thread-122191] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:35:49.336 [DEBUG] [Thread-122191] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:35:49.336 [DEBUG] [Thread-122191] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:35:49.336 [DEBUG] [Thread-122191] [transport.py] [_log()] Compression: none
2025-11-03T20:35:49.336 [DEBUG] [Thread-122191] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:35:49.390 [DEBUG] [Thread-122191] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:35:49.390 [DEBUG] [Thread-122191] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:35:49.391 [DEBUG] [Thread-122191] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:35:49.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:35:49.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:35:49.448 [DEBUG] [Thread-122191] [transport.py] [_log()] userauth is OK
2025-11-03T20:35:49.448 [DEBUG] [Thread-122191] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:35:49.448 [DEBUG] [Thread-122191] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:35:49.448 [DEBUG] [Thread-122191] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:35:49.448 [DEBUG] [Thread-122191] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:35:49.462 [INFO] [Thread-122191] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:35:49.462 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:35:49.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:35:50.305 [DEBUG] [Thread-122191] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:35:50.305 [DEBUG] [Thread-122191] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:35:50.352 [DEBUG] [Thread-122191] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:35:50.352 [DEBUG] [Thread-122191] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:35:50.361 [DEBUG] [Thread-122191] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:35:50.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:35:50.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:35:50.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:35:50.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:35:50.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:35:50.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:35:50.395 [DEBUG] [Thread-122191] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:35:59.459 [DEBUG] [Thread-122193 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:36:11.097 [DEBUG] [Thread-122194 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:36:14.638 [DEBUG] [Thread-122195 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:36:20.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:36:20.456 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:36:20.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:36:22.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 35, 45), 35.73, 7.43, 0.0, 21.79, 19.48, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:36:22.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:35:45
2025-11-03T20:36:22.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:36:22.410 [DEBUG] [Thread-122196] [transport.py] [_log()] starting thread (client mode): 0x1174eb90
2025-11-03T20:36:22.413 [DEBUG] [Thread-122196] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:36:22.413 [DEBUG] [Thread-122196] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:36:22.413 [INFO] [Thread-122196] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:36:22.421 [DEBUG] [Thread-122196] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:36:22.421 [DEBUG] [Thread-122196] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:36:22.421 [DEBUG] [Thread-122196] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:36:22.421 [DEBUG] [Thread-122196] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:36:22.421 [DEBUG] [Thread-122196] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:36:22.421 [DEBUG] [Thread-122196] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:36:22.421 [DEBUG] [Thread-122196] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:36:22.421 [DEBUG] [Thread-122196] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:36:22.421 [DEBUG] [Thread-122196] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:36:22.421 [DEBUG] [Thread-122196] [transport.py] [_log()] client lang: <none>
2025-11-03T20:36:22.421 [DEBUG] [Thread-122196] [transport.py] [_log()] server lang: <none>
2025-11-03T20:36:22.421 [DEBUG] [Thread-122196] [transport.py] [_log()] kex follows: False
2025-11-03T20:36:22.421 [DEBUG] [Thread-122196] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:36:22.422 [DEBUG] [Thread-122196] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:36:22.422 [DEBUG] [Thread-122196] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:36:22.422 [DEBUG] [Thread-122196] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:36:22.422 [DEBUG] [Thread-122196] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:36:22.423 [DEBUG] [Thread-122196] [transport.py] [_log()] Compression: none
2025-11-03T20:36:22.423 [DEBUG] [Thread-122196] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:36:22.454 [DEBUG] [Thread-122196] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:36:22.460 [DEBUG] [Thread-122196] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:36:22.462 [DEBUG] [Thread-122196] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:36:22.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:36:22.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:36:22.466 [DEBUG] [Thread-122196] [transport.py] [_log()] userauth is OK
2025-11-03T20:36:22.466 [DEBUG] [Thread-122196] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:36:22.467 [DEBUG] [Thread-122196] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:36:22.467 [DEBUG] [Thread-122196] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:36:22.467 [DEBUG] [Thread-122196] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:36:22.482 [INFO] [Thread-122196] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:36:22.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:36:23.129 [DEBUG] [Thread-122196] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:36:23.129 [DEBUG] [Thread-122196] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:36:23.131 [DEBUG] [Thread-122196] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:36:23.172 [DEBUG] [Thread-122196] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:36:23.172 [DEBUG] [Thread-122196] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:36:23.174 [DEBUG] [Thread-122196] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:36:23.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:36:23.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:36:23.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:36:23.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:36:23.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:36:23.190 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:36:23.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:36:23.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:36:23.192 [DEBUG] [Thread-122196] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:36:23.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:36:23.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.774754 -999.00  +19.50  18.02     12   -9.90 1 1 1 1 1     0    0 29.20 -20.34 ZNESW 21.8 18.0 307.8 28.1 19.6 -28.6 19.5 -27.5 19.2 -27.2 19.5 -28.3
2025-11-03T20:36:23.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:36:23.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:36:23.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.774754
2025-11-03T20:36:23.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:36:23.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:36:23.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:36:23.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:36:23.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:36:23.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:35:45', tmtdew=35.73, humidity=7.43, cloud=0.0, wind=21.79, temperature=19.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:36:19', seeing=1.03, atlas_timestamp='2025-11-03T18:35:38.746', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010249999999999204, 0.09224999999999994, 0.04075000000000095, 0.05999999999999872, 0.11250000000000071, 0.09125000000000227, -0.062000000000001165, -0.038750000000000284, -0.1745000000000001, 0.08549999999999969, 0.11224999999999952, 0.08099999999999952, 0.1844999999999999, -0.08724999999999916, -0.028999999999999915, -0.27250000000000085, -0.12475000000000058, 0.08300000000000018, 0.18299999999999983, 0.14324999999999832, 0.10999999999999943, 0.048749999999998295, -0.11074999999999946, -0.4767499999999991, -0.34000000000000163, 0.1645000000000003, 0.19875000000000043, 0.14550000000000018, 0.07699999999999996, 0.08650000000000091, 0.1540000000000017, -0.03399999999999892, -0.04025000000000034], zp_timestamp='2025-11-03T18:34:00')
2025-11-03T20:36:23.302 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:36:23.313 [DEBUG] [Thread-122199] [transport.py] [_log()] starting thread (client mode): 0xed12dd0
2025-11-03T20:36:23.313 [DEBUG] [Thread-122199] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:36:23.328 [DEBUG] [Thread-122199] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:36:23.328 [INFO] [Thread-122199] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:36:23.335 [DEBUG] [Thread-122199] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:36:23.335 [DEBUG] [Thread-122199] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:36:23.336 [DEBUG] [Thread-122199] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:36:23.336 [DEBUG] [Thread-122199] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:36:23.336 [DEBUG] [Thread-122199] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:36:23.336 [DEBUG] [Thread-122199] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:36:23.336 [DEBUG] [Thread-122199] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:36:23.336 [DEBUG] [Thread-122199] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:36:23.336 [DEBUG] [Thread-122199] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:36:23.336 [DEBUG] [Thread-122199] [transport.py] [_log()] client lang: <none>
2025-11-03T20:36:23.336 [DEBUG] [Thread-122199] [transport.py] [_log()] server lang: <none>
2025-11-03T20:36:23.336 [DEBUG] [Thread-122199] [transport.py] [_log()] kex follows: False
2025-11-03T20:36:23.336 [DEBUG] [Thread-122199] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:36:23.336 [DEBUG] [Thread-122199] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:36:23.336 [DEBUG] [Thread-122199] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:36:23.337 [DEBUG] [Thread-122199] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:36:23.337 [DEBUG] [Thread-122199] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:36:23.337 [DEBUG] [Thread-122199] [transport.py] [_log()] Compression: none
2025-11-03T20:36:23.337 [DEBUG] [Thread-122199] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:36:23.398 [DEBUG] [Thread-122199] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:36:23.398 [DEBUG] [Thread-122199] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:36:23.398 [DEBUG] [Thread-122199] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:36:23.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:36:23.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:36:23.455 [DEBUG] [Thread-122199] [transport.py] [_log()] userauth is OK
2025-11-03T20:36:23.455 [DEBUG] [Thread-122199] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:36:23.455 [DEBUG] [Thread-122199] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:36:23.455 [DEBUG] [Thread-122199] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:36:23.455 [DEBUG] [Thread-122199] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:36:23.469 [INFO] [Thread-122199] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:36:23.469 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:36:23.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:36:24.348 [DEBUG] [Thread-122199] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:36:24.348 [DEBUG] [Thread-122199] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:36:24.396 [DEBUG] [Thread-122199] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:36:24.396 [DEBUG] [Thread-122199] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:36:24.404 [DEBUG] [Thread-122199] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:36:24.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:36:24.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:36:24.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:36:24.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:36:24.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:36:24.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:36:24.439 [DEBUG] [Thread-122199] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:36:29.719 [DEBUG] [Thread-122201 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:36:30.621 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:36:30.622 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:36:45.017 [DEBUG] [Thread-122202 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:36:54.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:36:54.469 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:36:54.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:36:55.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 36, 19), 35.81, 7.38, 0.0, 23.41, 19.48, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:36:55.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:36:19
2025-11-03T20:36:56.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:36:56.381 [DEBUG] [Thread-122203] [transport.py] [_log()] starting thread (client mode): 0xed12ce0
2025-11-03T20:36:56.384 [DEBUG] [Thread-122203] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:36:56.385 [DEBUG] [Thread-122203] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:36:56.385 [INFO] [Thread-122203] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:36:56.396 [DEBUG] [Thread-122203] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:36:56.396 [DEBUG] [Thread-122203] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:36:56.396 [DEBUG] [Thread-122203] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:36:56.396 [DEBUG] [Thread-122203] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:36:56.396 [DEBUG] [Thread-122203] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:36:56.397 [DEBUG] [Thread-122203] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:36:56.397 [DEBUG] [Thread-122203] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:36:56.397 [DEBUG] [Thread-122203] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:36:56.397 [DEBUG] [Thread-122203] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:36:56.397 [DEBUG] [Thread-122203] [transport.py] [_log()] client lang: <none>
2025-11-03T20:36:56.397 [DEBUG] [Thread-122203] [transport.py] [_log()] server lang: <none>
2025-11-03T20:36:56.397 [DEBUG] [Thread-122203] [transport.py] [_log()] kex follows: False
2025-11-03T20:36:56.397 [DEBUG] [Thread-122203] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:36:56.398 [DEBUG] [Thread-122203] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:36:56.398 [DEBUG] [Thread-122203] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:36:56.398 [DEBUG] [Thread-122203] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:36:56.398 [DEBUG] [Thread-122203] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:36:56.398 [DEBUG] [Thread-122203] [transport.py] [_log()] Compression: none
2025-11-03T20:36:56.398 [DEBUG] [Thread-122203] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:36:56.436 [DEBUG] [Thread-122203] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:36:56.441 [DEBUG] [Thread-122203] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:36:56.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:36:56.446 [DEBUG] [Thread-122203] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:36:56.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:36:56.448 [DEBUG] [Thread-122203] [transport.py] [_log()] userauth is OK
2025-11-03T20:36:56.449 [DEBUG] [Thread-122203] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:36:56.449 [DEBUG] [Thread-122203] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:36:56.449 [DEBUG] [Thread-122203] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:36:56.449 [DEBUG] [Thread-122203] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:36:56.469 [INFO] [Thread-122203] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:36:56.473 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:36:57.087 [DEBUG] [Thread-122203] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:36:57.087 [DEBUG] [Thread-122203] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:36:57.088 [DEBUG] [Thread-122203] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:36:57.130 [DEBUG] [Thread-122203] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:36:57.130 [DEBUG] [Thread-122203] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:36:57.132 [DEBUG] [Thread-122203] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:36:57.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:36:57.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:36:57.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:36:57.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:36:57.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:36:57.156 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:36:57.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:36:57.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:36:57.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:36:57.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.775101 -999.00  +19.50  19.32     12   -9.90 1 1 1 1 1     0    0 28.56 -18.08 ZNESW 20.9 19.3 298.2 27.3 19.5 -28.6 19.5 -27.5 19.2 -27.5 19.5 -28.3
2025-11-03T20:36:57.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:36:57.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:36:57.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.775101
2025-11-03T20:36:57.163 [DEBUG] [Thread-122203] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:36:57.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:36:57.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:36:57.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:36:57.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:36:57.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:36:57.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:36:19', tmtdew=35.81, humidity=7.38, cloud=0.0, wind=23.41, temperature=19.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:36:53', seeing=0.99, atlas_timestamp='2025-11-03T18:36:08.726', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010249999999999204, 0.09224999999999994, 0.04075000000000095, 0.05999999999999872, 0.11250000000000071, 0.09125000000000227, -0.062000000000001165, -0.038750000000000284, -0.1745000000000001, 0.08549999999999969, 0.11224999999999952, 0.08099999999999952, 0.1844999999999999, -0.08724999999999916, -0.028999999999999915, -0.27250000000000085, -0.12475000000000058, 0.08300000000000018, 0.18299999999999983, 0.14324999999999832, 0.10999999999999943, 0.048749999999998295, -0.11074999999999946, -0.4767499999999991, -0.34000000000000163, 0.1645000000000003, 0.19875000000000043, 0.14550000000000018, 0.07699999999999996, 0.08650000000000091, 0.1540000000000017, -0.03399999999999892, -0.04025000000000034], zp_timestamp='2025-11-03T18:34:00')
2025-11-03T20:36:57.264 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:36:57.275 [DEBUG] [Thread-122206] [transport.py] [_log()] starting thread (client mode): 0xed13e20
2025-11-03T20:36:57.275 [DEBUG] [Thread-122206] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:36:57.295 [DEBUG] [Thread-122206] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:36:57.295 [INFO] [Thread-122206] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:36:57.302 [DEBUG] [Thread-122206] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:36:57.302 [DEBUG] [Thread-122206] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:36:57.302 [DEBUG] [Thread-122206] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:36:57.302 [DEBUG] [Thread-122206] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:36:57.302 [DEBUG] [Thread-122206] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:36:57.302 [DEBUG] [Thread-122206] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:36:57.302 [DEBUG] [Thread-122206] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:36:57.302 [DEBUG] [Thread-122206] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:36:57.302 [DEBUG] [Thread-122206] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:36:57.302 [DEBUG] [Thread-122206] [transport.py] [_log()] client lang: <none>
2025-11-03T20:36:57.302 [DEBUG] [Thread-122206] [transport.py] [_log()] server lang: <none>
2025-11-03T20:36:57.302 [DEBUG] [Thread-122206] [transport.py] [_log()] kex follows: False
2025-11-03T20:36:57.302 [DEBUG] [Thread-122206] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:36:57.302 [DEBUG] [Thread-122206] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:36:57.302 [DEBUG] [Thread-122206] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:36:57.302 [DEBUG] [Thread-122206] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:36:57.302 [DEBUG] [Thread-122206] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:36:57.302 [DEBUG] [Thread-122206] [transport.py] [_log()] Compression: none
2025-11-03T20:36:57.302 [DEBUG] [Thread-122206] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:36:57.358 [DEBUG] [Thread-122206] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:36:57.358 [DEBUG] [Thread-122206] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:36:57.358 [DEBUG] [Thread-122206] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:36:57.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:36:57.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:36:57.415 [DEBUG] [Thread-122206] [transport.py] [_log()] userauth is OK
2025-11-03T20:36:57.415 [DEBUG] [Thread-122206] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:36:57.415 [DEBUG] [Thread-122206] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:36:57.415 [DEBUG] [Thread-122206] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:36:57.415 [DEBUG] [Thread-122206] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:36:57.435 [INFO] [Thread-122206] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:36:57.435 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:36:57.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:36:58.282 [DEBUG] [Thread-122206] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:36:58.282 [DEBUG] [Thread-122206] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:36:58.329 [DEBUG] [Thread-122206] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:36:58.330 [DEBUG] [Thread-122206] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:36:58.339 [DEBUG] [Thread-122206] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:36:58.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:36:58.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:36:58.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:36:58.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:36:58.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:36:58.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:36:58.375 [DEBUG] [Thread-122206] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:37:00.154 [DEBUG] [Thread-122208 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:37:11.503 [DEBUG] [Thread-122209 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:37:15.339 [DEBUG] [Thread-122210 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:37:28.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:37:28.395 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:37:28.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:37:29.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 36, 53), 35.84, 7.36, 0.0, 20.66, 19.43, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:37:29.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:36:53
2025-11-03T20:37:29.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:37:30.074 [DEBUG] [Thread-122211] [transport.py] [_log()] starting thread (client mode): 0x11763340
2025-11-03T20:37:30.076 [DEBUG] [Thread-122211] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:37:30.077 [DEBUG] [Thread-122211] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:37:30.077 [INFO] [Thread-122211] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:37:30.084 [DEBUG] [Thread-122211] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:37:30.084 [DEBUG] [Thread-122211] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:37:30.084 [DEBUG] [Thread-122211] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:37:30.084 [DEBUG] [Thread-122211] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:37:30.084 [DEBUG] [Thread-122211] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:37:30.084 [DEBUG] [Thread-122211] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:37:30.084 [DEBUG] [Thread-122211] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:37:30.084 [DEBUG] [Thread-122211] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:37:30.084 [DEBUG] [Thread-122211] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:37:30.084 [DEBUG] [Thread-122211] [transport.py] [_log()] client lang: <none>
2025-11-03T20:37:30.084 [DEBUG] [Thread-122211] [transport.py] [_log()] server lang: <none>
2025-11-03T20:37:30.084 [DEBUG] [Thread-122211] [transport.py] [_log()] kex follows: False
2025-11-03T20:37:30.084 [DEBUG] [Thread-122211] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:37:30.085 [DEBUG] [Thread-122211] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:37:30.085 [DEBUG] [Thread-122211] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:37:30.085 [DEBUG] [Thread-122211] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:37:30.085 [DEBUG] [Thread-122211] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:37:30.085 [DEBUG] [Thread-122211] [transport.py] [_log()] Compression: none
2025-11-03T20:37:30.085 [DEBUG] [Thread-122211] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:37:30.118 [DEBUG] [Thread-122211] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:37:30.123 [DEBUG] [Thread-122211] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:37:30.125 [DEBUG] [Thread-122211] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:37:30.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:37:30.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:37:30.129 [DEBUG] [Thread-122211] [transport.py] [_log()] userauth is OK
2025-11-03T20:37:30.129 [DEBUG] [Thread-122211] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:37:30.130 [DEBUG] [Thread-122211] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:37:30.130 [DEBUG] [Thread-122211] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:37:30.130 [DEBUG] [Thread-122211] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:37:30.161 [INFO] [Thread-122211] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:37:30.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:37:30.430 [DEBUG] [Thread-122213 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:37:30.821 [DEBUG] [Thread-122211] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:37:30.821 [DEBUG] [Thread-122211] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:37:30.821 [DEBUG] [Thread-122211] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:37:30.824 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:37:30.825 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:37:30.862 [DEBUG] [Thread-122211] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:37:30.862 [DEBUG] [Thread-122211] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:37:30.865 [DEBUG] [Thread-122211] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:37:30.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:37:30.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:37:30.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:37:30.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:37:30.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:37:30.885 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:37:30.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:37:30.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:37:30.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:37:30.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.775448 -999.00  +19.50  20.72     12  -10.00 1 1 1 1 1     0    0 28.64 -18.47 ZNESW 24.6 20.7 304.6 25.2 19.5 -28.6 19.4 -27.6 19.2 -27.5 19.5 -28.2
2025-11-03T20:37:30.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:37:30.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:37:30.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.775448
2025-11-03T20:37:30.893 [DEBUG] [Thread-122211] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:37:30.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:37:30.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:37:30.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:37:30.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:37:30.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:37:30.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:36:53', tmtdew=35.84, humidity=7.36, cloud=0.0, wind=20.66, temperature=19.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:37:27', seeing=0.97, atlas_timestamp='2025-11-03T18:36:38.707', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010249999999999204, 0.09224999999999994, 0.04075000000000095, 0.05999999999999872, 0.11250000000000071, 0.09125000000000227, -0.062000000000001165, -0.038750000000000284, -0.1745000000000001, 0.08549999999999969, 0.11224999999999952, 0.08099999999999952, 0.1844999999999999, -0.08724999999999916, -0.028999999999999915, -0.27250000000000085, -0.12475000000000058, 0.08300000000000018, 0.18299999999999983, 0.14324999999999832, 0.10999999999999943, 0.048749999999998295, -0.11074999999999946, -0.4767499999999991, -0.34000000000000163, 0.1645000000000003, 0.19875000000000043, 0.14550000000000018, 0.07699999999999996, 0.08650000000000091, 0.1540000000000017, -0.03399999999999892, -0.04025000000000034], zp_timestamp='2025-11-03T18:34:00')
2025-11-03T20:37:30.986 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:37:31.001 [DEBUG] [Thread-122215] [transport.py] [_log()] starting thread (client mode): 0x117eb640
2025-11-03T20:37:31.001 [DEBUG] [Thread-122215] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:37:31.020 [DEBUG] [Thread-122215] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:37:31.021 [INFO] [Thread-122215] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:37:31.030 [DEBUG] [Thread-122215] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:37:31.030 [DEBUG] [Thread-122215] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:37:31.030 [DEBUG] [Thread-122215] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:37:31.030 [DEBUG] [Thread-122215] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:37:31.030 [DEBUG] [Thread-122215] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:37:31.030 [DEBUG] [Thread-122215] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:37:31.030 [DEBUG] [Thread-122215] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:37:31.030 [DEBUG] [Thread-122215] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:37:31.030 [DEBUG] [Thread-122215] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:37:31.030 [DEBUG] [Thread-122215] [transport.py] [_log()] client lang: <none>
2025-11-03T20:37:31.030 [DEBUG] [Thread-122215] [transport.py] [_log()] server lang: <none>
2025-11-03T20:37:31.030 [DEBUG] [Thread-122215] [transport.py] [_log()] kex follows: False
2025-11-03T20:37:31.030 [DEBUG] [Thread-122215] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:37:31.031 [DEBUG] [Thread-122215] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:37:31.031 [DEBUG] [Thread-122215] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:37:31.031 [DEBUG] [Thread-122215] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:37:31.031 [DEBUG] [Thread-122215] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:37:31.031 [DEBUG] [Thread-122215] [transport.py] [_log()] Compression: none
2025-11-03T20:37:31.031 [DEBUG] [Thread-122215] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:37:31.086 [DEBUG] [Thread-122215] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:37:31.086 [DEBUG] [Thread-122215] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:37:31.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:37:31.086 [DEBUG] [Thread-122215] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:37:31.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:37:31.143 [DEBUG] [Thread-122215] [transport.py] [_log()] userauth is OK
2025-11-03T20:37:31.144 [DEBUG] [Thread-122215] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:37:31.144 [DEBUG] [Thread-122215] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:37:31.144 [DEBUG] [Thread-122215] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:37:31.144 [DEBUG] [Thread-122215] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:37:31.168 [INFO] [Thread-122215] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:37:31.168 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:37:31.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:37:32.062 [DEBUG] [Thread-122215] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:37:32.062 [DEBUG] [Thread-122215] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:37:32.109 [DEBUG] [Thread-122215] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:37:32.109 [DEBUG] [Thread-122215] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:37:32.117 [DEBUG] [Thread-122215] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:37:32.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:37:32.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:37:32.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:37:32.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:37:32.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:37:32.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:37:32.152 [DEBUG] [Thread-122215] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:37:45.560 [DEBUG] [Thread-122217 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:38:00.769 [DEBUG] [Thread-122218 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:38:02.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:38:02.177 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:38:02.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:38:03.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 37, 26), 35.87, 7.34, 0.0, 19.11, 19.46, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:38:03.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:37:26
2025-11-03T20:38:03.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:38:03.553 [DEBUG] [Thread-122219] [transport.py] [_log()] starting thread (client mode): 0xed137f0
2025-11-03T20:38:03.553 [DEBUG] [Thread-122219] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:38:03.569 [DEBUG] [Thread-122219] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:38:03.569 [INFO] [Thread-122219] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:38:03.574 [DEBUG] [Thread-122219] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:38:03.574 [DEBUG] [Thread-122219] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:38:03.574 [DEBUG] [Thread-122219] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:38:03.574 [DEBUG] [Thread-122219] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:38:03.574 [DEBUG] [Thread-122219] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:38:03.574 [DEBUG] [Thread-122219] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:38:03.574 [DEBUG] [Thread-122219] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:38:03.574 [DEBUG] [Thread-122219] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:38:03.574 [DEBUG] [Thread-122219] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:38:03.574 [DEBUG] [Thread-122219] [transport.py] [_log()] client lang: <none>
2025-11-03T20:38:03.574 [DEBUG] [Thread-122219] [transport.py] [_log()] server lang: <none>
2025-11-03T20:38:03.574 [DEBUG] [Thread-122219] [transport.py] [_log()] kex follows: False
2025-11-03T20:38:03.574 [DEBUG] [Thread-122219] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:38:03.575 [DEBUG] [Thread-122219] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:38:03.575 [DEBUG] [Thread-122219] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:38:03.575 [DEBUG] [Thread-122219] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:38:03.575 [DEBUG] [Thread-122219] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:38:03.575 [DEBUG] [Thread-122219] [transport.py] [_log()] Compression: none
2025-11-03T20:38:03.575 [DEBUG] [Thread-122219] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:38:03.604 [DEBUG] [Thread-122219] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:38:03.608 [DEBUG] [Thread-122219] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:38:03.609 [DEBUG] [Thread-122219] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:38:03.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:38:03.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:38:03.613 [DEBUG] [Thread-122219] [transport.py] [_log()] userauth is OK
2025-11-03T20:38:03.613 [DEBUG] [Thread-122219] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:38:03.613 [DEBUG] [Thread-122219] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:38:03.613 [DEBUG] [Thread-122219] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:38:03.613 [DEBUG] [Thread-122219] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:38:03.631 [INFO] [Thread-122219] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:38:03.636 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:38:04.302 [DEBUG] [Thread-122219] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:38:04.303 [DEBUG] [Thread-122219] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:38:04.303 [DEBUG] [Thread-122219] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:38:04.343 [DEBUG] [Thread-122219] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:38:04.344 [DEBUG] [Thread-122219] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:38:04.346 [DEBUG] [Thread-122219] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:38:04.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:38:04.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:38:04.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:38:04.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:38:04.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:38:04.366 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:38:04.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:38:04.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:38:04.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:38:04.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.775795 -999.00  +19.50  21.93     12   -9.90 1 1 1 1 1     0    0 28.89 -16.19 ZNESW 18.2 21.9 304.8 28.7 19.6 -28.6 19.5 -27.5 19.2 -27.3 19.5 -28.1
2025-11-03T20:38:04.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:38:04.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:38:04.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.775795
2025-11-03T20:38:04.373 [DEBUG] [Thread-122219] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:38:04.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:38:04.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:38:04.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:38:04.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:38:04.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:38:04.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:37:26', tmtdew=35.87, humidity=7.34, cloud=0.0, wind=19.11, temperature=19.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:38:01', seeing=1.06, atlas_timestamp='2025-11-03T18:37:08.688', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0572499999999998, 0.0702499999999997, -0.018749999999998934, -0.0065000000000008384, 0.03950000000000031, 0.022750000000002046, -0.12100000000000044, -0.23775000000000013, -0.16050000000000075, -0.0004999999999988347, 0.03324999999999889, 0.012000000000000455, 0.11400000000000077, -0.0442499999999999, -0.125, -0.23300000000000054, -0.15875000000000128, 0.05850000000000044, 0.10299999999999976, 0.06674999999999898, 0.06649999999999778, -0.07025000000000148, -0.24074999999999847, -0.6782500000000002, -0.19100000000000072, 0.13949999999999996, 0.13674999999999926, 0.09350000000000058, -0.057000000000000384, 0.0840000000000014, 0.031000000000000583, -0.33000000000000007, -0.04025000000000034], zp_timestamp='2025-11-03T18:36:00')
2025-11-03T20:38:04.463 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:38:04.475 [DEBUG] [Thread-122222] [transport.py] [_log()] starting thread (client mode): 0xed06dd0
2025-11-03T20:38:04.475 [DEBUG] [Thread-122222] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:38:04.490 [DEBUG] [Thread-122222] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:38:04.490 [INFO] [Thread-122222] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:38:04.498 [DEBUG] [Thread-122222] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:38:04.498 [DEBUG] [Thread-122222] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:38:04.498 [DEBUG] [Thread-122222] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:38:04.498 [DEBUG] [Thread-122222] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:38:04.498 [DEBUG] [Thread-122222] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:38:04.498 [DEBUG] [Thread-122222] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:38:04.498 [DEBUG] [Thread-122222] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:38:04.498 [DEBUG] [Thread-122222] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:38:04.498 [DEBUG] [Thread-122222] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:38:04.498 [DEBUG] [Thread-122222] [transport.py] [_log()] client lang: <none>
2025-11-03T20:38:04.498 [DEBUG] [Thread-122222] [transport.py] [_log()] server lang: <none>
2025-11-03T20:38:04.498 [DEBUG] [Thread-122222] [transport.py] [_log()] kex follows: False
2025-11-03T20:38:04.498 [DEBUG] [Thread-122222] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:38:04.498 [DEBUG] [Thread-122222] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:38:04.498 [DEBUG] [Thread-122222] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:38:04.498 [DEBUG] [Thread-122222] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:38:04.498 [DEBUG] [Thread-122222] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:38:04.498 [DEBUG] [Thread-122222] [transport.py] [_log()] Compression: none
2025-11-03T20:38:04.499 [DEBUG] [Thread-122222] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:38:04.554 [DEBUG] [Thread-122222] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:38:04.554 [DEBUG] [Thread-122222] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:38:04.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:38:04.555 [DEBUG] [Thread-122222] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:38:04.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:38:04.612 [DEBUG] [Thread-122222] [transport.py] [_log()] userauth is OK
2025-11-03T20:38:04.612 [DEBUG] [Thread-122222] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:38:04.612 [DEBUG] [Thread-122222] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:38:04.612 [DEBUG] [Thread-122222] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:38:04.612 [DEBUG] [Thread-122222] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:38:04.628 [INFO] [Thread-122222] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:38:04.628 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:38:04.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:38:05.496 [DEBUG] [Thread-122222] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:38:05.496 [DEBUG] [Thread-122222] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:38:05.545 [DEBUG] [Thread-122222] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:38:05.545 [DEBUG] [Thread-122222] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:38:05.554 [DEBUG] [Thread-122222] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:38:05.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:38:05.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:38:05.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:38:05.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:38:05.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:38:05.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:38:05.601 [DEBUG] [Thread-122222] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:38:11.878 [DEBUG] [Thread-122224 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:38:15.862 [DEBUG] [Thread-122225 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:38:31.041 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:38:31.048 [DEBUG] [Thread-122226 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:38:31.052 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:38:35.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:38:35.623 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:38:35.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:38:36.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 38), 35.85, 7.36, 0.0, 20.33, 19.5, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:38:36.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:38:00
2025-11-03T20:38:36.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:38:36.992 [DEBUG] [Thread-122227] [transport.py] [_log()] starting thread (client mode): 0x1174ed10
2025-11-03T20:38:36.993 [DEBUG] [Thread-122227] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:38:36.997 [DEBUG] [Thread-122227] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:38:36.997 [INFO] [Thread-122227] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:38:37.005 [DEBUG] [Thread-122227] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:38:37.005 [DEBUG] [Thread-122227] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:38:37.005 [DEBUG] [Thread-122227] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:38:37.005 [DEBUG] [Thread-122227] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:38:37.005 [DEBUG] [Thread-122227] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:38:37.005 [DEBUG] [Thread-122227] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:38:37.005 [DEBUG] [Thread-122227] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:38:37.005 [DEBUG] [Thread-122227] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:38:37.005 [DEBUG] [Thread-122227] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:38:37.005 [DEBUG] [Thread-122227] [transport.py] [_log()] client lang: <none>
2025-11-03T20:38:37.005 [DEBUG] [Thread-122227] [transport.py] [_log()] server lang: <none>
2025-11-03T20:38:37.005 [DEBUG] [Thread-122227] [transport.py] [_log()] kex follows: False
2025-11-03T20:38:37.005 [DEBUG] [Thread-122227] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:38:37.006 [DEBUG] [Thread-122227] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:38:37.006 [DEBUG] [Thread-122227] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:38:37.006 [DEBUG] [Thread-122227] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:38:37.006 [DEBUG] [Thread-122227] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:38:37.006 [DEBUG] [Thread-122227] [transport.py] [_log()] Compression: none
2025-11-03T20:38:37.006 [DEBUG] [Thread-122227] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:38:37.040 [DEBUG] [Thread-122227] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:38:37.044 [DEBUG] [Thread-122227] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:38:37.045 [DEBUG] [Thread-122227] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:38:37.046 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:38:37.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:38:37.049 [DEBUG] [Thread-122227] [transport.py] [_log()] userauth is OK
2025-11-03T20:38:37.049 [DEBUG] [Thread-122227] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:38:37.049 [DEBUG] [Thread-122227] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:38:37.049 [DEBUG] [Thread-122227] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:38:37.050 [DEBUG] [Thread-122227] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:38:37.081 [INFO] [Thread-122227] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:38:37.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:38:37.728 [DEBUG] [Thread-122227] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:38:37.728 [DEBUG] [Thread-122227] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:38:37.729 [DEBUG] [Thread-122227] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:38:37.769 [DEBUG] [Thread-122227] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:38:37.769 [DEBUG] [Thread-122227] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:38:37.771 [DEBUG] [Thread-122227] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:38:37.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:38:37.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:38:37.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:38:37.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:38:37.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:38:37.796 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:38:37.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:38:37.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:38:37.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:38:37.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.776490 -999.00  +19.60  21.05     12  -10.00 1 1 1 1 1     0    0 28.66 -12.69 ZNESW 20.6 21.1 294.6 30.9 19.6 -28.4 19.4 -27.5 19.3 -27.4 19.5 -28.1
2025-11-03T20:38:37.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:38:37.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:38:37.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.776490
2025-11-03T20:38:37.803 [DEBUG] [Thread-122227] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:38:37.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:38:37.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:38:37.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:38:37.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:38:37.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:38:37.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:38:00', tmtdew=35.85, humidity=7.36, cloud=0.0, wind=20.33, temperature=19.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:38:34', seeing=1.0, atlas_timestamp='2025-11-03T18:38:08.736', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0572499999999998, 0.0702499999999997, -0.018749999999998934, -0.0065000000000008384, 0.03950000000000031, 0.022750000000002046, -0.12100000000000044, -0.23775000000000013, -0.16050000000000075, -0.0004999999999988347, 0.03324999999999889, 0.012000000000000455, 0.11400000000000077, -0.0442499999999999, -0.125, -0.23300000000000054, -0.15875000000000128, 0.05850000000000044, 0.10299999999999976, 0.06674999999999898, 0.06649999999999778, -0.07025000000000148, -0.24074999999999847, -0.6782500000000002, -0.19100000000000072, 0.13949999999999996, 0.13674999999999926, 0.09350000000000058, -0.057000000000000384, 0.0840000000000014, 0.031000000000000583, -0.33000000000000007, -0.04025000000000034], zp_timestamp='2025-11-03T18:36:00')
2025-11-03T20:38:37.904 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:38:37.918 [DEBUG] [Thread-122230] [transport.py] [_log()] starting thread (client mode): 0x11762ec0
2025-11-03T20:38:37.918 [DEBUG] [Thread-122230] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:38:37.933 [DEBUG] [Thread-122230] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:38:37.933 [INFO] [Thread-122230] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:38:37.940 [DEBUG] [Thread-122230] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:38:37.940 [DEBUG] [Thread-122230] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:38:37.940 [DEBUG] [Thread-122230] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:38:37.940 [DEBUG] [Thread-122230] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:38:37.940 [DEBUG] [Thread-122230] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:38:37.940 [DEBUG] [Thread-122230] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:38:37.940 [DEBUG] [Thread-122230] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:38:37.940 [DEBUG] [Thread-122230] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:38:37.940 [DEBUG] [Thread-122230] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:38:37.940 [DEBUG] [Thread-122230] [transport.py] [_log()] client lang: <none>
2025-11-03T20:38:37.940 [DEBUG] [Thread-122230] [transport.py] [_log()] server lang: <none>
2025-11-03T20:38:37.940 [DEBUG] [Thread-122230] [transport.py] [_log()] kex follows: False
2025-11-03T20:38:37.940 [DEBUG] [Thread-122230] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:38:37.940 [DEBUG] [Thread-122230] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:38:37.940 [DEBUG] [Thread-122230] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:38:37.940 [DEBUG] [Thread-122230] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:38:37.940 [DEBUG] [Thread-122230] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:38:37.940 [DEBUG] [Thread-122230] [transport.py] [_log()] Compression: none
2025-11-03T20:38:37.940 [DEBUG] [Thread-122230] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:38:37.999 [DEBUG] [Thread-122230] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:38:37.999 [DEBUG] [Thread-122230] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:38:37.999 [DEBUG] [Thread-122230] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:38:37.999 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:38:38.000 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:38:38.055 [DEBUG] [Thread-122230] [transport.py] [_log()] userauth is OK
2025-11-03T20:38:38.055 [DEBUG] [Thread-122230] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:38:38.055 [DEBUG] [Thread-122230] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:38:38.055 [DEBUG] [Thread-122230] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:38:38.055 [DEBUG] [Thread-122230] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:38:38.069 [INFO] [Thread-122230] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:38:38.070 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:38:38.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:38:38.896 [DEBUG] [Thread-122230] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:38:38.896 [DEBUG] [Thread-122230] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:38:38.944 [DEBUG] [Thread-122230] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:38:38.944 [DEBUG] [Thread-122230] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:38:38.952 [DEBUG] [Thread-122230] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:38:38.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:38:38.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:38:38.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:38:38.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:38:38.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:38:38.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:38:38.987 [DEBUG] [Thread-122230] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:38:46.208 [DEBUG] [Thread-122232 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:39:01.411 [DEBUG] [Thread-122233 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:39:09.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:39:09.022 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:39:09.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:39:10.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 38, 34), 35.85, 7.36, 0.0, 20.66, 19.5, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:39:10.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:38:34
2025-11-03T20:39:10.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:39:10.383 [DEBUG] [Thread-122234] [transport.py] [_log()] starting thread (client mode): 0x11763e80
2025-11-03T20:39:10.384 [DEBUG] [Thread-122234] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:39:10.385 [DEBUG] [Thread-122234] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:39:10.385 [INFO] [Thread-122234] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:39:10.389 [DEBUG] [Thread-122234] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:39:10.389 [DEBUG] [Thread-122234] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:39:10.389 [DEBUG] [Thread-122234] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:39:10.390 [DEBUG] [Thread-122234] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:39:10.390 [DEBUG] [Thread-122234] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:39:10.390 [DEBUG] [Thread-122234] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:39:10.390 [DEBUG] [Thread-122234] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:39:10.390 [DEBUG] [Thread-122234] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:39:10.390 [DEBUG] [Thread-122234] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:39:10.390 [DEBUG] [Thread-122234] [transport.py] [_log()] client lang: <none>
2025-11-03T20:39:10.390 [DEBUG] [Thread-122234] [transport.py] [_log()] server lang: <none>
2025-11-03T20:39:10.390 [DEBUG] [Thread-122234] [transport.py] [_log()] kex follows: False
2025-11-03T20:39:10.390 [DEBUG] [Thread-122234] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:39:10.390 [DEBUG] [Thread-122234] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:39:10.391 [DEBUG] [Thread-122234] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:39:10.391 [DEBUG] [Thread-122234] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:39:10.391 [DEBUG] [Thread-122234] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:39:10.391 [DEBUG] [Thread-122234] [transport.py] [_log()] Compression: none
2025-11-03T20:39:10.391 [DEBUG] [Thread-122234] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:39:10.413 [DEBUG] [Thread-122234] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:39:10.417 [DEBUG] [Thread-122234] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:39:10.418 [DEBUG] [Thread-122234] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:39:10.418 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:39:10.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:39:10.421 [DEBUG] [Thread-122234] [transport.py] [_log()] userauth is OK
2025-11-03T20:39:10.421 [DEBUG] [Thread-122234] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:39:10.421 [DEBUG] [Thread-122234] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:39:10.421 [DEBUG] [Thread-122234] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:39:10.421 [DEBUG] [Thread-122234] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:39:10.434 [INFO] [Thread-122234] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:39:10.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:39:11.211 [DEBUG] [Thread-122234] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:39:11.211 [DEBUG] [Thread-122234] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:39:11.211 [DEBUG] [Thread-122234] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:39:11.252 [DEBUG] [Thread-122234] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:39:11.252 [DEBUG] [Thread-122234] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:39:11.254 [DEBUG] [Thread-122234] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:39:11.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:39:11.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:39:11.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:39:11.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:39:11.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:39:11.274 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:39:11.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:39:11.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:39:11.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:39:11.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.776837 -999.00  +19.50  18.17     12   -9.90 1 1 1 1 1     0    0 29.00 -11.75 ZNESW 18.8 18.2 309.6 24.1 19.6 -28.6 19.4 -27.4 19.3 -27.4 19.5 -28.3
2025-11-03T20:39:11.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:39:11.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:39:11.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.776837
2025-11-03T20:39:11.281 [DEBUG] [Thread-122234] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:39:11.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:39:11.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:39:11.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:39:11.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:39:11.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:39:11.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:38:34', tmtdew=35.85, humidity=7.36, cloud=0.0, wind=20.66, temperature=19.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:39:08', seeing=1.0, atlas_timestamp='2025-11-03T18:38:38.717', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0572499999999998, 0.0702499999999997, -0.018749999999998934, -0.0065000000000008384, 0.03950000000000031, 0.022750000000002046, -0.12100000000000044, -0.23775000000000013, -0.16050000000000075, -0.0004999999999988347, 0.03324999999999889, 0.012000000000000455, 0.11400000000000077, -0.0442499999999999, -0.125, -0.23300000000000054, -0.15875000000000128, 0.05850000000000044, 0.10299999999999976, 0.06674999999999898, 0.06649999999999778, -0.07025000000000148, -0.24074999999999847, -0.6782500000000002, -0.19100000000000072, 0.13949999999999996, 0.13674999999999926, 0.09350000000000058, -0.057000000000000384, 0.0840000000000014, 0.031000000000000583, -0.33000000000000007, -0.04025000000000034], zp_timestamp='2025-11-03T18:36:00')
2025-11-03T20:39:11.372 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:39:11.385 [DEBUG] [Thread-122237] [transport.py] [_log()] starting thread (client mode): 0xed10940
2025-11-03T20:39:11.385 [DEBUG] [Thread-122237] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:39:11.399 [DEBUG] [Thread-122237] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:39:11.399 [INFO] [Thread-122237] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:39:11.407 [DEBUG] [Thread-122237] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:39:11.408 [DEBUG] [Thread-122237] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:39:11.408 [DEBUG] [Thread-122237] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:39:11.408 [DEBUG] [Thread-122237] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:39:11.408 [DEBUG] [Thread-122237] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:39:11.408 [DEBUG] [Thread-122237] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:39:11.408 [DEBUG] [Thread-122237] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:39:11.408 [DEBUG] [Thread-122237] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:39:11.408 [DEBUG] [Thread-122237] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:39:11.408 [DEBUG] [Thread-122237] [transport.py] [_log()] client lang: <none>
2025-11-03T20:39:11.408 [DEBUG] [Thread-122237] [transport.py] [_log()] server lang: <none>
2025-11-03T20:39:11.409 [DEBUG] [Thread-122237] [transport.py] [_log()] kex follows: False
2025-11-03T20:39:11.409 [DEBUG] [Thread-122237] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:39:11.409 [DEBUG] [Thread-122237] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:39:11.409 [DEBUG] [Thread-122237] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:39:11.409 [DEBUG] [Thread-122237] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:39:11.409 [DEBUG] [Thread-122237] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:39:11.409 [DEBUG] [Thread-122237] [transport.py] [_log()] Compression: none
2025-11-03T20:39:11.409 [DEBUG] [Thread-122237] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:39:11.467 [DEBUG] [Thread-122237] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:39:11.468 [DEBUG] [Thread-122237] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:39:11.469 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:39:11.470 [DEBUG] [Thread-122237] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:39:11.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:39:11.526 [DEBUG] [Thread-122237] [transport.py] [_log()] userauth is OK
2025-11-03T20:39:11.526 [DEBUG] [Thread-122237] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:39:11.526 [DEBUG] [Thread-122237] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:39:11.527 [DEBUG] [Thread-122237] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:39:11.527 [DEBUG] [Thread-122237] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:39:11.546 [INFO] [Thread-122237] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:39:11.546 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:39:11.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:39:12.223 [DEBUG] [Thread-122239 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:39:12.371 [DEBUG] [Thread-122237] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:39:12.371 [DEBUG] [Thread-122237] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:39:12.420 [DEBUG] [Thread-122237] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:39:12.420 [DEBUG] [Thread-122237] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:39:12.429 [DEBUG] [Thread-122237] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:39:12.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:39:12.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:39:12.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:39:12.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:39:12.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:39:12.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:39:12.466 [DEBUG] [Thread-122237] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:39:16.516 [DEBUG] [Thread-122240 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:39:31.268 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:39:31.279 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:39:31.686 [DEBUG] [Thread-122241 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:39:42.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:39:42.514 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:39:42.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:39:43.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 39, 7), 35.82, 7.38, 0.0, 18.97, 19.45, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:39:43.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:39:07
2025-11-03T20:39:43.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:39:43.810 [DEBUG] [Thread-122242] [transport.py] [_log()] starting thread (client mode): 0xed8a860
2025-11-03T20:39:43.811 [DEBUG] [Thread-122242] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:39:43.817 [DEBUG] [Thread-122242] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:39:43.818 [INFO] [Thread-122242] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:39:43.824 [DEBUG] [Thread-122242] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:39:43.824 [DEBUG] [Thread-122242] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:39:43.824 [DEBUG] [Thread-122242] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:39:43.824 [DEBUG] [Thread-122242] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:39:43.824 [DEBUG] [Thread-122242] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:39:43.824 [DEBUG] [Thread-122242] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:39:43.824 [DEBUG] [Thread-122242] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:39:43.824 [DEBUG] [Thread-122242] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:39:43.824 [DEBUG] [Thread-122242] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:39:43.824 [DEBUG] [Thread-122242] [transport.py] [_log()] client lang: <none>
2025-11-03T20:39:43.825 [DEBUG] [Thread-122242] [transport.py] [_log()] server lang: <none>
2025-11-03T20:39:43.825 [DEBUG] [Thread-122242] [transport.py] [_log()] kex follows: False
2025-11-03T20:39:43.825 [DEBUG] [Thread-122242] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:39:43.825 [DEBUG] [Thread-122242] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:39:43.825 [DEBUG] [Thread-122242] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:39:43.825 [DEBUG] [Thread-122242] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:39:43.825 [DEBUG] [Thread-122242] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:39:43.825 [DEBUG] [Thread-122242] [transport.py] [_log()] Compression: none
2025-11-03T20:39:43.826 [DEBUG] [Thread-122242] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:39:43.856 [DEBUG] [Thread-122242] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:39:43.860 [DEBUG] [Thread-122242] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:39:43.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:39:43.862 [DEBUG] [Thread-122242] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:39:43.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:39:43.865 [DEBUG] [Thread-122242] [transport.py] [_log()] userauth is OK
2025-11-03T20:39:43.865 [DEBUG] [Thread-122242] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:39:43.865 [DEBUG] [Thread-122242] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:39:43.865 [DEBUG] [Thread-122242] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:39:43.865 [DEBUG] [Thread-122242] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:39:43.885 [INFO] [Thread-122242] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:39:43.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:39:44.513 [DEBUG] [Thread-122242] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:39:44.513 [DEBUG] [Thread-122242] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:39:44.514 [DEBUG] [Thread-122242] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:39:44.555 [DEBUG] [Thread-122242] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:39:44.555 [DEBUG] [Thread-122242] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:39:44.557 [DEBUG] [Thread-122242] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:39:44.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:39:44.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:39:44.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:39:44.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:39:44.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:39:44.579 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:39:44.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:39:44.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:39:44.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:39:44.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.777184 -999.00  +19.50  18.76     12  -10.00 1 1 1 1 1     0    0 29.12 -9.78 ZNESW 18.5 18.8 307.0 22.6 19.5 -28.5 19.4 -27.5 19.2 -27.2 19.5 -28.2
2025-11-03T20:39:44.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:39:44.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:39:44.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.777184
2025-11-03T20:39:44.585 [DEBUG] [Thread-122242] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:39:44.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:39:44.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:39:44.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:39:44.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:39:44.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:39:44.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:39:07', tmtdew=35.82, humidity=7.38, cloud=0.0, wind=18.97, temperature=19.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:39:41', seeing=1.07, atlas_timestamp='2025-11-03T18:39:08.698', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0572499999999998, 0.0702499999999997, -0.018749999999998934, -0.0065000000000008384, 0.03950000000000031, 0.022750000000002046, -0.12100000000000044, -0.23775000000000013, -0.16050000000000075, -0.0004999999999988347, 0.03324999999999889, 0.012000000000000455, 0.11400000000000077, -0.0442499999999999, -0.125, -0.23300000000000054, -0.15875000000000128, 0.05850000000000044, 0.10299999999999976, 0.06674999999999898, 0.06649999999999778, -0.07025000000000148, -0.24074999999999847, -0.6782500000000002, -0.19100000000000072, 0.13949999999999996, 0.13674999999999926, 0.09350000000000058, -0.057000000000000384, 0.0840000000000014, 0.031000000000000583, -0.33000000000000007, -0.04025000000000034], zp_timestamp='2025-11-03T18:36:00')
2025-11-03T20:39:44.675 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:39:44.687 [DEBUG] [Thread-122245] [transport.py] [_log()] starting thread (client mode): 0x141da7a0
2025-11-03T20:39:44.687 [DEBUG] [Thread-122245] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:39:44.702 [DEBUG] [Thread-122245] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:39:44.702 [INFO] [Thread-122245] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:39:44.709 [DEBUG] [Thread-122245] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:39:44.709 [DEBUG] [Thread-122245] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:39:44.709 [DEBUG] [Thread-122245] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:39:44.709 [DEBUG] [Thread-122245] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:39:44.709 [DEBUG] [Thread-122245] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:39:44.709 [DEBUG] [Thread-122245] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:39:44.710 [DEBUG] [Thread-122245] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:39:44.710 [DEBUG] [Thread-122245] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:39:44.710 [DEBUG] [Thread-122245] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:39:44.710 [DEBUG] [Thread-122245] [transport.py] [_log()] client lang: <none>
2025-11-03T20:39:44.710 [DEBUG] [Thread-122245] [transport.py] [_log()] server lang: <none>
2025-11-03T20:39:44.710 [DEBUG] [Thread-122245] [transport.py] [_log()] kex follows: False
2025-11-03T20:39:44.710 [DEBUG] [Thread-122245] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:39:44.710 [DEBUG] [Thread-122245] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:39:44.710 [DEBUG] [Thread-122245] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:39:44.710 [DEBUG] [Thread-122245] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:39:44.710 [DEBUG] [Thread-122245] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:39:44.710 [DEBUG] [Thread-122245] [transport.py] [_log()] Compression: none
2025-11-03T20:39:44.710 [DEBUG] [Thread-122245] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:39:44.766 [DEBUG] [Thread-122245] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:39:44.766 [DEBUG] [Thread-122245] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:39:44.766 [DEBUG] [Thread-122245] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:39:44.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:39:44.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:39:44.823 [DEBUG] [Thread-122245] [transport.py] [_log()] userauth is OK
2025-11-03T20:39:44.823 [DEBUG] [Thread-122245] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:39:44.823 [DEBUG] [Thread-122245] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:39:44.823 [DEBUG] [Thread-122245] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:39:44.823 [DEBUG] [Thread-122245] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:39:44.837 [INFO] [Thread-122245] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:39:44.837 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:39:44.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:39:45.716 [DEBUG] [Thread-122245] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:39:45.716 [DEBUG] [Thread-122245] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:39:45.763 [DEBUG] [Thread-122245] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:39:45.763 [DEBUG] [Thread-122245] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:39:45.772 [DEBUG] [Thread-122245] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:39:45.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:39:45.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:39:45.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:39:45.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:39:45.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:39:45.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:39:45.806 [DEBUG] [Thread-122245] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:39:46.768 [DEBUG] [Thread-122247 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:40:02.004 [DEBUG] [Thread-122248 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:40:12.542 [DEBUG] [Thread-122249 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:40:15.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:40:15.813 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:40:15.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:40:16.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 39, 40), 35.83, 7.36, 0.0, 19.3, 19.4, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:40:16.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:39:40
2025-11-03T20:40:16.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:40:17.107 [DEBUG] [Thread-122250 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:40:17.181 [DEBUG] [Thread-122251] [transport.py] [_log()] starting thread (client mode): 0xed8a860
2025-11-03T20:40:17.182 [DEBUG] [Thread-122251] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:40:17.192 [DEBUG] [Thread-122251] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:40:17.193 [INFO] [Thread-122251] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:40:17.198 [DEBUG] [Thread-122251] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:40:17.199 [DEBUG] [Thread-122251] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:40:17.199 [DEBUG] [Thread-122251] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:40:17.199 [DEBUG] [Thread-122251] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:40:17.199 [DEBUG] [Thread-122251] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:40:17.199 [DEBUG] [Thread-122251] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:40:17.199 [DEBUG] [Thread-122251] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:40:17.199 [DEBUG] [Thread-122251] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:40:17.199 [DEBUG] [Thread-122251] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:40:17.199 [DEBUG] [Thread-122251] [transport.py] [_log()] client lang: <none>
2025-11-03T20:40:17.199 [DEBUG] [Thread-122251] [transport.py] [_log()] server lang: <none>
2025-11-03T20:40:17.199 [DEBUG] [Thread-122251] [transport.py] [_log()] kex follows: False
2025-11-03T20:40:17.199 [DEBUG] [Thread-122251] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:40:17.200 [DEBUG] [Thread-122251] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:40:17.200 [DEBUG] [Thread-122251] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:40:17.200 [DEBUG] [Thread-122251] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:40:17.200 [DEBUG] [Thread-122251] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:40:17.200 [DEBUG] [Thread-122251] [transport.py] [_log()] Compression: none
2025-11-03T20:40:17.200 [DEBUG] [Thread-122251] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:40:17.233 [DEBUG] [Thread-122251] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:40:17.236 [DEBUG] [Thread-122251] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:40:17.237 [DEBUG] [Thread-122251] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:40:17.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:40:17.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:40:17.242 [DEBUG] [Thread-122251] [transport.py] [_log()] userauth is OK
2025-11-03T20:40:17.242 [DEBUG] [Thread-122251] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:40:17.242 [DEBUG] [Thread-122251] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:40:17.242 [DEBUG] [Thread-122251] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:40:17.242 [DEBUG] [Thread-122251] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:40:17.261 [INFO] [Thread-122251] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:40:17.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:40:17.915 [DEBUG] [Thread-122251] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:40:17.915 [DEBUG] [Thread-122251] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:40:17.915 [DEBUG] [Thread-122251] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:40:17.956 [DEBUG] [Thread-122251] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:40:17.956 [DEBUG] [Thread-122251] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:40:17.958 [DEBUG] [Thread-122251] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:40:17.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:40:17.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:40:17.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:40:17.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:40:17.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:40:17.980 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:40:17.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:40:17.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:40:17.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:40:17.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.777531 -999.00  +19.40  17.92     12  -10.00 1 1 1 1 1     0    0 29.19 -8.13 ZNESW 20.5 17.9 298.0 22.1 19.5 -28.5 19.4 -27.3 19.2 -27.1 19.5 -28.2
2025-11-03T20:40:17.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:40:17.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:40:17.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.777531
2025-11-03T20:40:17.986 [DEBUG] [Thread-122251] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:40:17.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:40:17.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:40:17.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:40:17.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:40:17.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:40:17.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:39:40', tmtdew=35.83, humidity=7.36, cloud=0.0, wind=19.3, temperature=19.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:40:14', seeing=1.34, atlas_timestamp='2025-11-03T18:39:38.678', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0572499999999998, 0.0702499999999997, -0.018749999999998934, -0.0065000000000008384, 0.03950000000000031, 0.022750000000002046, -0.12100000000000044, -0.23775000000000013, -0.16050000000000075, -0.0004999999999988347, 0.03324999999999889, 0.012000000000000455, 0.11400000000000077, -0.0442499999999999, -0.125, -0.23300000000000054, -0.15875000000000128, 0.05850000000000044, 0.10299999999999976, 0.06674999999999898, 0.06649999999999778, -0.07025000000000148, -0.24074999999999847, -0.6782500000000002, -0.19100000000000072, 0.13949999999999996, 0.13674999999999926, 0.09350000000000058, -0.057000000000000384, 0.0840000000000014, 0.031000000000000583, -0.33000000000000007, -0.04025000000000034], zp_timestamp='2025-11-03T18:36:00')
2025-11-03T20:40:18.072 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:40:18.084 [DEBUG] [Thread-122254] [transport.py] [_log()] starting thread (client mode): 0xed044c0
2025-11-03T20:40:18.084 [DEBUG] [Thread-122254] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:40:18.097 [DEBUG] [Thread-122254] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:40:18.098 [INFO] [Thread-122254] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:40:18.105 [DEBUG] [Thread-122254] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:40:18.105 [DEBUG] [Thread-122254] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:40:18.105 [DEBUG] [Thread-122254] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:40:18.105 [DEBUG] [Thread-122254] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:40:18.105 [DEBUG] [Thread-122254] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:40:18.105 [DEBUG] [Thread-122254] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:40:18.105 [DEBUG] [Thread-122254] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:40:18.106 [DEBUG] [Thread-122254] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:40:18.106 [DEBUG] [Thread-122254] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:40:18.106 [DEBUG] [Thread-122254] [transport.py] [_log()] client lang: <none>
2025-11-03T20:40:18.106 [DEBUG] [Thread-122254] [transport.py] [_log()] server lang: <none>
2025-11-03T20:40:18.106 [DEBUG] [Thread-122254] [transport.py] [_log()] kex follows: False
2025-11-03T20:40:18.106 [DEBUG] [Thread-122254] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:40:18.106 [DEBUG] [Thread-122254] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:40:18.106 [DEBUG] [Thread-122254] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:40:18.106 [DEBUG] [Thread-122254] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:40:18.106 [DEBUG] [Thread-122254] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:40:18.106 [DEBUG] [Thread-122254] [transport.py] [_log()] Compression: none
2025-11-03T20:40:18.106 [DEBUG] [Thread-122254] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:40:18.166 [DEBUG] [Thread-122254] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:40:18.166 [DEBUG] [Thread-122254] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:40:18.167 [DEBUG] [Thread-122254] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:40:18.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:40:18.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:40:18.224 [DEBUG] [Thread-122254] [transport.py] [_log()] userauth is OK
2025-11-03T20:40:18.224 [DEBUG] [Thread-122254] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:40:18.224 [DEBUG] [Thread-122254] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:40:18.224 [DEBUG] [Thread-122254] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:40:18.224 [DEBUG] [Thread-122254] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:40:18.242 [INFO] [Thread-122254] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:40:18.242 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:40:18.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:40:19.075 [DEBUG] [Thread-122254] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:40:19.075 [DEBUG] [Thread-122254] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:40:19.126 [DEBUG] [Thread-122254] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:40:19.126 [DEBUG] [Thread-122254] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:40:19.135 [DEBUG] [Thread-122254] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:40:19.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:40:19.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:40:19.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:40:19.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:40:19.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:40:19.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:40:19.174 [DEBUG] [Thread-122254] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:40:31.499 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:40:31.513 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:40:32.205 [DEBUG] [Thread-122256 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:40:47.347 [DEBUG] [Thread-122257 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:40:49.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:40:49.199 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:40:49.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:40:50.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 40, 13), 35.86, 7.33, 0.0, 19.5, 19.33, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:40:50.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:40:13
2025-11-03T20:40:50.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:40:50.531 [DEBUG] [Thread-122258] [transport.py] [_log()] starting thread (client mode): 0x117e8400
2025-11-03T20:40:50.532 [DEBUG] [Thread-122258] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:40:50.534 [DEBUG] [Thread-122258] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:40:50.534 [INFO] [Thread-122258] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:40:50.539 [DEBUG] [Thread-122258] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:40:50.539 [DEBUG] [Thread-122258] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:40:50.539 [DEBUG] [Thread-122258] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:40:50.539 [DEBUG] [Thread-122258] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:40:50.539 [DEBUG] [Thread-122258] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:40:50.539 [DEBUG] [Thread-122258] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:40:50.539 [DEBUG] [Thread-122258] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:40:50.539 [DEBUG] [Thread-122258] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:40:50.539 [DEBUG] [Thread-122258] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:40:50.539 [DEBUG] [Thread-122258] [transport.py] [_log()] client lang: <none>
2025-11-03T20:40:50.539 [DEBUG] [Thread-122258] [transport.py] [_log()] server lang: <none>
2025-11-03T20:40:50.539 [DEBUG] [Thread-122258] [transport.py] [_log()] kex follows: False
2025-11-03T20:40:50.539 [DEBUG] [Thread-122258] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:40:50.540 [DEBUG] [Thread-122258] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:40:50.540 [DEBUG] [Thread-122258] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:40:50.540 [DEBUG] [Thread-122258] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:40:50.540 [DEBUG] [Thread-122258] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:40:50.540 [DEBUG] [Thread-122258] [transport.py] [_log()] Compression: none
2025-11-03T20:40:50.540 [DEBUG] [Thread-122258] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:40:50.573 [DEBUG] [Thread-122258] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:40:50.577 [DEBUG] [Thread-122258] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:40:50.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:40:50.578 [DEBUG] [Thread-122258] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:40:50.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:40:50.581 [DEBUG] [Thread-122258] [transport.py] [_log()] userauth is OK
2025-11-03T20:40:50.581 [DEBUG] [Thread-122258] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:40:50.581 [DEBUG] [Thread-122258] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:40:50.581 [DEBUG] [Thread-122258] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:40:50.581 [DEBUG] [Thread-122258] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:40:50.610 [INFO] [Thread-122258] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:40:50.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:40:52.152 [DEBUG] [Thread-122258] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:40:52.152 [DEBUG] [Thread-122258] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:40:52.153 [DEBUG] [Thread-122258] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:40:52.193 [DEBUG] [Thread-122258] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:40:52.193 [DEBUG] [Thread-122258] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:40:52.196 [DEBUG] [Thread-122258] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:40:52.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:40:52.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:40:52.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:40:52.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:40:52.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:40:52.216 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:40:52.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:40:52.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:40:52.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:40:52.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.777878 -999.00  +19.50  19.14     12  -10.00 1 1 1 1 1     0    0 29.27 -6.65 ZNESW 17.2 19.1 299.4 24.9 19.5 -28.3 19.4 -27.3 19.2 -27.2 19.5 -28.1
2025-11-03T20:40:52.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:40:52.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:40:52.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.777878
2025-11-03T20:40:52.223 [DEBUG] [Thread-122258] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:40:52.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:40:52.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:40:52.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:40:52.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:40:52.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:40:52.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:40:13', tmtdew=35.86, humidity=7.33, cloud=0.0, wind=19.5, temperature=19.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:40:47', seeing=1.23, atlas_timestamp='2025-11-03T18:40:08.659', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03225000000000122, 0.005250000000000199, -0.029749999999999943, 0.007499999999998508, 0.012000000000000455, 0.048250000000001236, -0.06949999999999967, -0.18624999999999936, -0.06350000000000122, 0.04300000000000104, 0.011250000000000426, 0.0009999999999994458, 0.0909999999999993, -0.0702499999999997, -0.11800000000000033, -0.1590000000000007, -0.11374999999999957, 0.03599999999999959, 0.11899999999999977, 0.06074999999999875, 0.09799999999999898, -0.11575000000000202, -0.14724999999999966, -0.5202500000000008, -0.1930000000000014, 0.11050000000000004, 0.13375000000000092, 0.09450000000000003, -0.06400000000000006, 0.03900000000000148, 0.04750000000000121, -0.21099999999999852, -0.008250000000000313], zp_timestamp='2025-11-03T18:40:00')
2025-11-03T20:40:52.309 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:40:52.322 [DEBUG] [Thread-122261] [transport.py] [_log()] starting thread (client mode): 0x11760a90
2025-11-03T20:40:52.322 [DEBUG] [Thread-122261] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:40:52.338 [DEBUG] [Thread-122261] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:40:52.338 [INFO] [Thread-122261] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:40:52.351 [DEBUG] [Thread-122261] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:40:52.351 [DEBUG] [Thread-122261] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:40:52.351 [DEBUG] [Thread-122261] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:40:52.351 [DEBUG] [Thread-122261] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:40:52.351 [DEBUG] [Thread-122261] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:40:52.351 [DEBUG] [Thread-122261] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:40:52.351 [DEBUG] [Thread-122261] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:40:52.351 [DEBUG] [Thread-122261] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:40:52.351 [DEBUG] [Thread-122261] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:40:52.351 [DEBUG] [Thread-122261] [transport.py] [_log()] client lang: <none>
2025-11-03T20:40:52.351 [DEBUG] [Thread-122261] [transport.py] [_log()] server lang: <none>
2025-11-03T20:40:52.351 [DEBUG] [Thread-122261] [transport.py] [_log()] kex follows: False
2025-11-03T20:40:52.351 [DEBUG] [Thread-122261] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:40:52.351 [DEBUG] [Thread-122261] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:40:52.351 [DEBUG] [Thread-122261] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:40:52.351 [DEBUG] [Thread-122261] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:40:52.352 [DEBUG] [Thread-122261] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:40:52.352 [DEBUG] [Thread-122261] [transport.py] [_log()] Compression: none
2025-11-03T20:40:52.352 [DEBUG] [Thread-122261] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:40:52.410 [DEBUG] [Thread-122261] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:40:52.410 [DEBUG] [Thread-122261] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:40:52.410 [DEBUG] [Thread-122261] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:40:52.410 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:40:52.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:40:52.467 [DEBUG] [Thread-122261] [transport.py] [_log()] userauth is OK
2025-11-03T20:40:52.467 [DEBUG] [Thread-122261] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:40:52.467 [DEBUG] [Thread-122261] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:40:52.467 [DEBUG] [Thread-122261] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:40:52.467 [DEBUG] [Thread-122261] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:40:52.483 [INFO] [Thread-122261] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:40:52.484 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:40:52.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:40:53.301 [DEBUG] [Thread-122261] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:40:53.301 [DEBUG] [Thread-122261] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:40:53.349 [DEBUG] [Thread-122261] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:40:53.349 [DEBUG] [Thread-122261] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:40:53.357 [DEBUG] [Thread-122261] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:40:53.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:40:53.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:40:53.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:40:53.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:40:53.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:40:53.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:40:53.391 [DEBUG] [Thread-122261] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:41:02.407 [DEBUG] [Thread-122263 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:41:12.858 [DEBUG] [Thread-122264 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:41:17.561 [DEBUG] [Thread-122265 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:41:23.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:41:23.423 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:41:23.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:41:24.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 40, 47), 35.67, 7.89, 0.0, 19.23, 19.33, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:41:24.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:40:47
2025-11-03T20:41:24.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:41:24.873 [DEBUG] [Thread-122266] [transport.py] [_log()] starting thread (client mode): 0xed34eb0
2025-11-03T20:41:24.875 [DEBUG] [Thread-122266] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:41:24.878 [DEBUG] [Thread-122266] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:41:24.878 [INFO] [Thread-122266] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:41:24.886 [DEBUG] [Thread-122266] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:41:24.886 [DEBUG] [Thread-122266] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:41:24.886 [DEBUG] [Thread-122266] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:41:24.886 [DEBUG] [Thread-122266] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:41:24.886 [DEBUG] [Thread-122266] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:41:24.886 [DEBUG] [Thread-122266] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:41:24.886 [DEBUG] [Thread-122266] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:41:24.886 [DEBUG] [Thread-122266] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:41:24.886 [DEBUG] [Thread-122266] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:41:24.886 [DEBUG] [Thread-122266] [transport.py] [_log()] client lang: <none>
2025-11-03T20:41:24.886 [DEBUG] [Thread-122266] [transport.py] [_log()] server lang: <none>
2025-11-03T20:41:24.886 [DEBUG] [Thread-122266] [transport.py] [_log()] kex follows: False
2025-11-03T20:41:24.886 [DEBUG] [Thread-122266] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:41:24.887 [DEBUG] [Thread-122266] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:41:24.888 [DEBUG] [Thread-122266] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:41:24.888 [DEBUG] [Thread-122266] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:41:24.888 [DEBUG] [Thread-122266] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:41:24.888 [DEBUG] [Thread-122266] [transport.py] [_log()] Compression: none
2025-11-03T20:41:24.888 [DEBUG] [Thread-122266] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:41:24.924 [DEBUG] [Thread-122266] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:41:24.929 [DEBUG] [Thread-122266] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:41:24.930 [DEBUG] [Thread-122266] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:41:24.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:41:24.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:41:24.935 [DEBUG] [Thread-122266] [transport.py] [_log()] userauth is OK
2025-11-03T20:41:24.935 [DEBUG] [Thread-122266] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:41:24.935 [DEBUG] [Thread-122266] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:41:24.935 [DEBUG] [Thread-122266] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:41:24.935 [DEBUG] [Thread-122266] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:41:24.954 [INFO] [Thread-122266] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:41:24.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:41:25.586 [DEBUG] [Thread-122266] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:41:25.586 [DEBUG] [Thread-122266] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:41:25.587 [DEBUG] [Thread-122266] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:41:25.629 [DEBUG] [Thread-122266] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:41:25.629 [DEBUG] [Thread-122266] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:41:25.632 [DEBUG] [Thread-122266] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:41:25.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:41:25.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:41:25.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:41:25.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:41:25.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:41:25.656 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:41:25.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:41:25.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:41:25.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:41:25.662 [DEBUG] [Thread-122266] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:41:25.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.778226 -999.00  +19.40  17.62     12   -9.90 1 1 1 1 1     0    0 29.40 -6.34 ZNESW 21.8 17.6 317.4 21.7 19.5 -28.3 19.4 -27.2 19.2 -27.1 19.5 -28.0
2025-11-03T20:41:25.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:41:25.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:41:25.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.778226
2025-11-03T20:41:25.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:41:25.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:41:25.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:41:25.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:41:25.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:41:25.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:40:47', tmtdew=35.67, humidity=7.89, cloud=0.0, wind=19.23, temperature=19.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:41:21', seeing=1.23, atlas_timestamp='2025-11-03T18:40:38.726', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03225000000000122, 0.005250000000000199, -0.029749999999999943, 0.007499999999998508, 0.012000000000000455, 0.048250000000001236, -0.06949999999999967, -0.18624999999999936, -0.06350000000000122, 0.04300000000000104, 0.011250000000000426, 0.0009999999999994458, 0.0909999999999993, -0.0702499999999997, -0.11800000000000033, -0.1590000000000007, -0.11374999999999957, 0.03599999999999959, 0.11899999999999977, 0.06074999999999875, 0.09799999999999898, -0.11575000000000202, -0.14724999999999966, -0.5202500000000008, -0.1930000000000014, 0.11050000000000004, 0.13375000000000092, 0.09450000000000003, -0.06400000000000006, 0.03900000000000148, 0.04750000000000121, -0.21099999999999852, -0.008250000000000313], zp_timestamp='2025-11-03T18:40:00')
2025-11-03T20:41:25.761 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:41:25.773 [DEBUG] [Thread-122269] [transport.py] [_log()] starting thread (client mode): 0xed35630
2025-11-03T20:41:25.774 [DEBUG] [Thread-122269] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:41:25.790 [DEBUG] [Thread-122269] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:41:25.790 [INFO] [Thread-122269] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:41:25.799 [DEBUG] [Thread-122269] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:41:25.799 [DEBUG] [Thread-122269] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:41:25.799 [DEBUG] [Thread-122269] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:41:25.799 [DEBUG] [Thread-122269] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:41:25.799 [DEBUG] [Thread-122269] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:41:25.799 [DEBUG] [Thread-122269] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:41:25.799 [DEBUG] [Thread-122269] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:41:25.799 [DEBUG] [Thread-122269] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:41:25.799 [DEBUG] [Thread-122269] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:41:25.799 [DEBUG] [Thread-122269] [transport.py] [_log()] client lang: <none>
2025-11-03T20:41:25.799 [DEBUG] [Thread-122269] [transport.py] [_log()] server lang: <none>
2025-11-03T20:41:25.799 [DEBUG] [Thread-122269] [transport.py] [_log()] kex follows: False
2025-11-03T20:41:25.799 [DEBUG] [Thread-122269] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:41:25.799 [DEBUG] [Thread-122269] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:41:25.799 [DEBUG] [Thread-122269] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:41:25.799 [DEBUG] [Thread-122269] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:41:25.799 [DEBUG] [Thread-122269] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:41:25.799 [DEBUG] [Thread-122269] [transport.py] [_log()] Compression: none
2025-11-03T20:41:25.799 [DEBUG] [Thread-122269] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:41:25.858 [DEBUG] [Thread-122269] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:41:25.858 [DEBUG] [Thread-122269] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:41:25.858 [DEBUG] [Thread-122269] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:41:25.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:41:25.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:41:25.916 [DEBUG] [Thread-122269] [transport.py] [_log()] userauth is OK
2025-11-03T20:41:25.916 [DEBUG] [Thread-122269] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:41:25.916 [DEBUG] [Thread-122269] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:41:25.916 [DEBUG] [Thread-122269] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:41:25.916 [DEBUG] [Thread-122269] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:41:25.930 [INFO] [Thread-122269] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:41:25.930 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:41:25.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:41:26.745 [DEBUG] [Thread-122269] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:41:26.745 [DEBUG] [Thread-122269] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:41:26.792 [DEBUG] [Thread-122269] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:41:26.792 [DEBUG] [Thread-122269] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:41:26.801 [DEBUG] [Thread-122269] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:41:26.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:41:26.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:41:26.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:41:26.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:41:26.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:41:26.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:41:26.835 [DEBUG] [Thread-122269] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:41:31.719 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:41:31.722 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:41:32.644 [DEBUG] [Thread-122271 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:41:47.845 [DEBUG] [Thread-122272 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:41:56.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:41:56.886 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:41:56.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:41:58.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 41, 20), 35.66, 7.89, 0.0, 18.02, 19.3, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:41:58.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:41:20
2025-11-03T20:41:58.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:41:58.426 [DEBUG] [Thread-122273] [transport.py] [_log()] starting thread (client mode): 0xedc6020
2025-11-03T20:41:58.428 [DEBUG] [Thread-122273] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:41:58.428 [DEBUG] [Thread-122273] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:41:58.429 [INFO] [Thread-122273] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:41:58.433 [DEBUG] [Thread-122273] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:41:58.433 [DEBUG] [Thread-122273] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:41:58.433 [DEBUG] [Thread-122273] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:41:58.433 [DEBUG] [Thread-122273] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:41:58.433 [DEBUG] [Thread-122273] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:41:58.434 [DEBUG] [Thread-122273] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:41:58.434 [DEBUG] [Thread-122273] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:41:58.434 [DEBUG] [Thread-122273] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:41:58.434 [DEBUG] [Thread-122273] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:41:58.434 [DEBUG] [Thread-122273] [transport.py] [_log()] client lang: <none>
2025-11-03T20:41:58.434 [DEBUG] [Thread-122273] [transport.py] [_log()] server lang: <none>
2025-11-03T20:41:58.434 [DEBUG] [Thread-122273] [transport.py] [_log()] kex follows: False
2025-11-03T20:41:58.434 [DEBUG] [Thread-122273] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:41:58.434 [DEBUG] [Thread-122273] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:41:58.434 [DEBUG] [Thread-122273] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:41:58.434 [DEBUG] [Thread-122273] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:41:58.434 [DEBUG] [Thread-122273] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:41:58.434 [DEBUG] [Thread-122273] [transport.py] [_log()] Compression: none
2025-11-03T20:41:58.434 [DEBUG] [Thread-122273] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:41:58.467 [DEBUG] [Thread-122273] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:41:58.471 [DEBUG] [Thread-122273] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:41:58.472 [DEBUG] [Thread-122273] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:41:58.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:41:58.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:41:58.476 [DEBUG] [Thread-122273] [transport.py] [_log()] userauth is OK
2025-11-03T20:41:58.476 [DEBUG] [Thread-122273] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:41:58.477 [DEBUG] [Thread-122273] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:41:58.477 [DEBUG] [Thread-122273] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:41:58.477 [DEBUG] [Thread-122273] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:41:58.510 [INFO] [Thread-122273] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:41:58.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:41:59.280 [DEBUG] [Thread-122273] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:41:59.280 [DEBUG] [Thread-122273] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:41:59.281 [DEBUG] [Thread-122273] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:41:59.322 [DEBUG] [Thread-122273] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:41:59.322 [DEBUG] [Thread-122273] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:41:59.323 [DEBUG] [Thread-122273] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:41:59.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:41:59.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:41:59.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:41:59.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:41:59.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:41:59.341 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:41:59.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:41:59.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:41:59.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:41:59.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.778573 -999.00  +19.40  16.50     12   -9.90 1 1 1 1 1     0    0 29.60 -5.34 ZNESW 16.6 16.5 300.2 23.8 19.5 -28.3 19.4 -27.2 19.2 -26.8 19.4 -27.7
2025-11-03T20:41:59.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:41:59.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:41:59.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.778573
2025-11-03T20:41:59.342 [DEBUG] [Thread-122273] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:41:59.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:41:59.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:41:59.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:41:59.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:41:59.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:41:59.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:41:20', tmtdew=35.66, humidity=7.89, cloud=0.0, wind=18.02, temperature=19.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:41:55', seeing=1.25, atlas_timestamp='2025-11-03T18:41:08.707', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03225000000000122, 0.005250000000000199, -0.029749999999999943, 0.007499999999998508, 0.012000000000000455, 0.048250000000001236, -0.06949999999999967, -0.18624999999999936, -0.06350000000000122, 0.04300000000000104, 0.011250000000000426, 0.0009999999999994458, 0.0909999999999993, -0.0702499999999997, -0.11800000000000033, -0.1590000000000007, -0.11374999999999957, 0.03599999999999959, 0.11899999999999977, 0.06074999999999875, 0.09799999999999898, -0.11575000000000202, -0.14724999999999966, -0.5202500000000008, -0.1930000000000014, 0.11050000000000004, 0.13375000000000092, 0.09450000000000003, -0.06400000000000006, 0.03900000000000148, 0.04750000000000121, -0.21099999999999852, -0.008250000000000313], zp_timestamp='2025-11-03T18:40:00')
2025-11-03T20:41:59.452 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:41:59.464 [DEBUG] [Thread-122276] [transport.py] [_log()] starting thread (client mode): 0xedc7700
2025-11-03T20:41:59.465 [DEBUG] [Thread-122276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:41:59.480 [DEBUG] [Thread-122276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:41:59.480 [INFO] [Thread-122276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:41:59.487 [DEBUG] [Thread-122276] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:41:59.487 [DEBUG] [Thread-122276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:41:59.487 [DEBUG] [Thread-122276] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:41:59.487 [DEBUG] [Thread-122276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:41:59.487 [DEBUG] [Thread-122276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:41:59.487 [DEBUG] [Thread-122276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:41:59.487 [DEBUG] [Thread-122276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:41:59.487 [DEBUG] [Thread-122276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:41:59.487 [DEBUG] [Thread-122276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:41:59.487 [DEBUG] [Thread-122276] [transport.py] [_log()] client lang: <none>
2025-11-03T20:41:59.487 [DEBUG] [Thread-122276] [transport.py] [_log()] server lang: <none>
2025-11-03T20:41:59.487 [DEBUG] [Thread-122276] [transport.py] [_log()] kex follows: False
2025-11-03T20:41:59.487 [DEBUG] [Thread-122276] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:41:59.487 [DEBUG] [Thread-122276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:41:59.487 [DEBUG] [Thread-122276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:41:59.487 [DEBUG] [Thread-122276] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:41:59.487 [DEBUG] [Thread-122276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:41:59.487 [DEBUG] [Thread-122276] [transport.py] [_log()] Compression: none
2025-11-03T20:41:59.487 [DEBUG] [Thread-122276] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:41:59.542 [DEBUG] [Thread-122276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:41:59.542 [DEBUG] [Thread-122276] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:41:59.543 [DEBUG] [Thread-122276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:41:59.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:41:59.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:41:59.599 [DEBUG] [Thread-122276] [transport.py] [_log()] userauth is OK
2025-11-03T20:41:59.599 [DEBUG] [Thread-122276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:41:59.599 [DEBUG] [Thread-122276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:41:59.599 [DEBUG] [Thread-122276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:41:59.599 [DEBUG] [Thread-122276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:41:59.613 [INFO] [Thread-122276] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:41:59.614 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:41:59.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:42:00.498 [DEBUG] [Thread-122276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:42:00.498 [DEBUG] [Thread-122276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:42:00.546 [DEBUG] [Thread-122276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:42:00.546 [DEBUG] [Thread-122276] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:42:00.555 [DEBUG] [Thread-122276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:42:00.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:42:00.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:42:00.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:42:00.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:42:00.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:42:00.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:42:00.588 [DEBUG] [Thread-122276] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:42:02.936 [DEBUG] [Thread-122278 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:42:13.137 [DEBUG] [Thread-122279 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:42:18.146 [DEBUG] [Thread-122280 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:42:30.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:42:30.669 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:42:30.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:42:31.930 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:42:31.934 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:42:32.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 41, 54), 35.63, 7.91, 0.0, 16.25, 19.25, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:42:32.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:41:54
2025-11-03T20:42:32.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:42:32.740 [DEBUG] [Thread-122281] [transport.py] [_log()] starting thread (client mode): 0x11762770
2025-11-03T20:42:32.742 [DEBUG] [Thread-122281] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:42:32.749 [DEBUG] [Thread-122281] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:42:32.749 [INFO] [Thread-122281] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:42:32.755 [DEBUG] [Thread-122281] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:42:32.755 [DEBUG] [Thread-122281] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:42:32.755 [DEBUG] [Thread-122281] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:42:32.755 [DEBUG] [Thread-122281] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:42:32.755 [DEBUG] [Thread-122281] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:42:32.756 [DEBUG] [Thread-122281] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:42:32.756 [DEBUG] [Thread-122281] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:42:32.756 [DEBUG] [Thread-122281] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:42:32.756 [DEBUG] [Thread-122281] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:42:32.756 [DEBUG] [Thread-122281] [transport.py] [_log()] client lang: <none>
2025-11-03T20:42:32.756 [DEBUG] [Thread-122281] [transport.py] [_log()] server lang: <none>
2025-11-03T20:42:32.756 [DEBUG] [Thread-122281] [transport.py] [_log()] kex follows: False
2025-11-03T20:42:32.756 [DEBUG] [Thread-122281] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:42:32.757 [DEBUG] [Thread-122281] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:42:32.757 [DEBUG] [Thread-122281] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:42:32.757 [DEBUG] [Thread-122281] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:42:32.757 [DEBUG] [Thread-122281] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:42:32.757 [DEBUG] [Thread-122281] [transport.py] [_log()] Compression: none
2025-11-03T20:42:32.757 [DEBUG] [Thread-122281] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:42:32.796 [DEBUG] [Thread-122281] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:42:32.801 [DEBUG] [Thread-122281] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:42:32.803 [DEBUG] [Thread-122281] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:42:32.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:42:32.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:42:32.808 [DEBUG] [Thread-122281] [transport.py] [_log()] userauth is OK
2025-11-03T20:42:32.808 [DEBUG] [Thread-122281] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:42:32.809 [DEBUG] [Thread-122281] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:42:32.809 [DEBUG] [Thread-122281] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:42:32.809 [DEBUG] [Thread-122281] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:42:32.843 [INFO] [Thread-122281] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:42:32.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:42:33.282 [DEBUG] [Thread-122283 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:42:33.415 [DEBUG] [Thread-122281] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:42:33.415 [DEBUG] [Thread-122281] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:42:33.416 [DEBUG] [Thread-122281] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:42:33.457 [DEBUG] [Thread-122281] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:42:33.457 [DEBUG] [Thread-122281] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:42:33.460 [DEBUG] [Thread-122281] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:42:33.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:42:33.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:42:33.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:42:33.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:42:33.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:42:33.481 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:42:33.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:42:33.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:42:33.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:42:33.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.779268 -999.00  +19.30  16.80     12   -9.90 1 1 1 1 1     0    0 29.33 -3.93 ZNESW 21.8 16.8 303.0 23.8 19.5 -28.3 19.4 -27.0 19.2 -27.0 19.4 -28.1
2025-11-03T20:42:33.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:42:33.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:42:33.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.779268
2025-11-03T20:42:33.494 [DEBUG] [Thread-122281] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:42:33.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:42:33.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:42:33.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:42:33.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:42:33.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:42:33.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:41:54', tmtdew=35.63, humidity=7.91, cloud=0.0, wind=16.25, temperature=19.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:42:29', seeing=1.22, atlas_timestamp='2025-11-03T18:42:08.755', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03225000000000122, 0.005250000000000199, -0.029749999999999943, 0.007499999999998508, 0.012000000000000455, 0.048250000000001236, -0.06949999999999967, -0.18624999999999936, -0.06350000000000122, 0.04300000000000104, 0.011250000000000426, 0.0009999999999994458, 0.0909999999999993, -0.0702499999999997, -0.11800000000000033, -0.1590000000000007, -0.11374999999999957, 0.03599999999999959, 0.11899999999999977, 0.06074999999999875, 0.09799999999999898, -0.11575000000000202, -0.14724999999999966, -0.5202500000000008, -0.1930000000000014, 0.11050000000000004, 0.13375000000000092, 0.09450000000000003, -0.06400000000000006, 0.03900000000000148, 0.04750000000000121, -0.21099999999999852, -0.008250000000000313], zp_timestamp='2025-11-03T18:40:00')
2025-11-03T20:42:33.589 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:42:33.601 [DEBUG] [Thread-122285] [transport.py] [_log()] starting thread (client mode): 0xed36320
2025-11-03T20:42:33.601 [DEBUG] [Thread-122285] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:42:33.622 [DEBUG] [Thread-122285] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:42:33.622 [INFO] [Thread-122285] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:42:33.631 [DEBUG] [Thread-122285] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:42:33.631 [DEBUG] [Thread-122285] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:42:33.631 [DEBUG] [Thread-122285] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:42:33.631 [DEBUG] [Thread-122285] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:42:33.631 [DEBUG] [Thread-122285] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:42:33.631 [DEBUG] [Thread-122285] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:42:33.631 [DEBUG] [Thread-122285] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:42:33.631 [DEBUG] [Thread-122285] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:42:33.631 [DEBUG] [Thread-122285] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:42:33.631 [DEBUG] [Thread-122285] [transport.py] [_log()] client lang: <none>
2025-11-03T20:42:33.631 [DEBUG] [Thread-122285] [transport.py] [_log()] server lang: <none>
2025-11-03T20:42:33.631 [DEBUG] [Thread-122285] [transport.py] [_log()] kex follows: False
2025-11-03T20:42:33.631 [DEBUG] [Thread-122285] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:42:33.631 [DEBUG] [Thread-122285] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:42:33.631 [DEBUG] [Thread-122285] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:42:33.631 [DEBUG] [Thread-122285] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:42:33.631 [DEBUG] [Thread-122285] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:42:33.632 [DEBUG] [Thread-122285] [transport.py] [_log()] Compression: none
2025-11-03T20:42:33.632 [DEBUG] [Thread-122285] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:42:33.687 [DEBUG] [Thread-122285] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:42:33.687 [DEBUG] [Thread-122285] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:42:33.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:42:33.687 [DEBUG] [Thread-122285] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:42:33.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:42:33.750 [DEBUG] [Thread-122285] [transport.py] [_log()] userauth is OK
2025-11-03T20:42:33.750 [DEBUG] [Thread-122285] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:42:33.750 [DEBUG] [Thread-122285] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:42:33.750 [DEBUG] [Thread-122285] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:42:33.750 [DEBUG] [Thread-122285] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:42:33.770 [INFO] [Thread-122285] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:42:33.770 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:42:33.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:42:34.603 [DEBUG] [Thread-122285] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:42:34.603 [DEBUG] [Thread-122285] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:42:34.654 [DEBUG] [Thread-122285] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:42:34.655 [DEBUG] [Thread-122285] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:42:34.664 [DEBUG] [Thread-122285] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:42:34.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:42:34.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:42:34.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:42:34.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:42:34.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:42:34.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:42:34.703 [DEBUG] [Thread-122285] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:42:48.458 [DEBUG] [Thread-122287 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:43:03.747 [DEBUG] [Thread-122288 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:43:04.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:43:04.728 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:43:04.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:43:06.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 42, 29), 35.67, 7.88, 0.0, 16.11, 19.23, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:43:06.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:42:29
2025-11-03T20:43:06.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:43:06.676 [DEBUG] [Thread-122289] [transport.py] [_log()] starting thread (client mode): 0x141da590
2025-11-03T20:43:06.678 [DEBUG] [Thread-122289] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:43:06.682 [DEBUG] [Thread-122289] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:43:06.682 [INFO] [Thread-122289] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:43:06.691 [DEBUG] [Thread-122289] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:43:06.691 [DEBUG] [Thread-122289] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:43:06.691 [DEBUG] [Thread-122289] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:43:06.691 [DEBUG] [Thread-122289] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:43:06.691 [DEBUG] [Thread-122289] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:43:06.691 [DEBUG] [Thread-122289] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:43:06.691 [DEBUG] [Thread-122289] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:43:06.691 [DEBUG] [Thread-122289] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:43:06.691 [DEBUG] [Thread-122289] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:43:06.691 [DEBUG] [Thread-122289] [transport.py] [_log()] client lang: <none>
2025-11-03T20:43:06.691 [DEBUG] [Thread-122289] [transport.py] [_log()] server lang: <none>
2025-11-03T20:43:06.692 [DEBUG] [Thread-122289] [transport.py] [_log()] kex follows: False
2025-11-03T20:43:06.692 [DEBUG] [Thread-122289] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:43:06.692 [DEBUG] [Thread-122289] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:43:06.693 [DEBUG] [Thread-122289] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:43:06.693 [DEBUG] [Thread-122289] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:43:06.693 [DEBUG] [Thread-122289] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:43:06.693 [DEBUG] [Thread-122289] [transport.py] [_log()] Compression: none
2025-11-03T20:43:06.693 [DEBUG] [Thread-122289] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:43:06.728 [DEBUG] [Thread-122289] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:43:06.733 [DEBUG] [Thread-122289] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:43:06.735 [DEBUG] [Thread-122289] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:43:06.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:43:06.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:43:06.739 [DEBUG] [Thread-122289] [transport.py] [_log()] userauth is OK
2025-11-03T20:43:06.739 [DEBUG] [Thread-122289] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:43:06.739 [DEBUG] [Thread-122289] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:43:06.739 [DEBUG] [Thread-122289] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:43:06.740 [DEBUG] [Thread-122289] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:43:06.760 [INFO] [Thread-122289] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:43:06.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:43:07.390 [DEBUG] [Thread-122289] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:43:07.390 [DEBUG] [Thread-122289] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:43:07.391 [DEBUG] [Thread-122289] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:43:07.431 [DEBUG] [Thread-122289] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:43:07.431 [DEBUG] [Thread-122289] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:43:07.433 [DEBUG] [Thread-122289] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:43:07.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:43:07.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:43:07.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:43:07.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:43:07.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:43:07.454 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:43:07.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:43:07.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:43:07.456 [DEBUG] [Thread-122289] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:43:07.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:43:07.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.779615 -999.00  +19.50  23.19     12   -9.70 1 1 1 1 1     0    0 29.26 -3.94 ZNESW 21.9 23.2 298.0 26.4 19.5 -28.0 19.4 -26.9 19.2 -26.8 19.4 -27.6
2025-11-03T20:43:07.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:43:07.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:43:07.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.779615
2025-11-03T20:43:07.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:43:07.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:43:07.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:43:07.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:43:07.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:43:07.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:42:29', tmtdew=35.67, humidity=7.88, cloud=0.0, wind=16.11, temperature=19.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:43:04', seeing=1.01, atlas_timestamp='2025-11-03T18:42:38.736', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03225000000000122, 0.005250000000000199, -0.029749999999999943, 0.007499999999998508, 0.012000000000000455, 0.048250000000001236, -0.06949999999999967, -0.18624999999999936, -0.06350000000000122, 0.04300000000000104, 0.011250000000000426, 0.0009999999999994458, 0.0909999999999993, -0.0702499999999997, -0.11800000000000033, -0.1590000000000007, -0.11374999999999957, 0.03599999999999959, 0.11899999999999977, 0.06074999999999875, 0.09799999999999898, -0.11575000000000202, -0.14724999999999966, -0.5202500000000008, -0.1930000000000014, 0.11050000000000004, 0.13375000000000092, 0.09450000000000003, -0.06400000000000006, 0.03900000000000148, 0.04750000000000121, -0.21099999999999852, -0.008250000000000313], zp_timestamp='2025-11-03T18:40:00')
2025-11-03T20:43:07.563 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:43:07.573 [DEBUG] [Thread-122292] [transport.py] [_log()] starting thread (client mode): 0xed342b0
2025-11-03T20:43:07.574 [DEBUG] [Thread-122292] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:43:07.589 [DEBUG] [Thread-122292] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:43:07.589 [INFO] [Thread-122292] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:43:07.597 [DEBUG] [Thread-122292] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:43:07.597 [DEBUG] [Thread-122292] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:43:07.597 [DEBUG] [Thread-122292] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:43:07.597 [DEBUG] [Thread-122292] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:43:07.597 [DEBUG] [Thread-122292] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:43:07.597 [DEBUG] [Thread-122292] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:43:07.597 [DEBUG] [Thread-122292] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:43:07.597 [DEBUG] [Thread-122292] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:43:07.597 [DEBUG] [Thread-122292] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:43:07.597 [DEBUG] [Thread-122292] [transport.py] [_log()] client lang: <none>
2025-11-03T20:43:07.597 [DEBUG] [Thread-122292] [transport.py] [_log()] server lang: <none>
2025-11-03T20:43:07.597 [DEBUG] [Thread-122292] [transport.py] [_log()] kex follows: False
2025-11-03T20:43:07.597 [DEBUG] [Thread-122292] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:43:07.597 [DEBUG] [Thread-122292] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:43:07.597 [DEBUG] [Thread-122292] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:43:07.597 [DEBUG] [Thread-122292] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:43:07.597 [DEBUG] [Thread-122292] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:43:07.597 [DEBUG] [Thread-122292] [transport.py] [_log()] Compression: none
2025-11-03T20:43:07.597 [DEBUG] [Thread-122292] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:43:07.654 [DEBUG] [Thread-122292] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:43:07.654 [DEBUG] [Thread-122292] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:43:07.654 [DEBUG] [Thread-122292] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:43:07.654 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:43:07.654 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:43:07.711 [DEBUG] [Thread-122292] [transport.py] [_log()] userauth is OK
2025-11-03T20:43:07.711 [DEBUG] [Thread-122292] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:43:07.711 [DEBUG] [Thread-122292] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:43:07.711 [DEBUG] [Thread-122292] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:43:07.711 [DEBUG] [Thread-122292] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:43:07.725 [INFO] [Thread-122292] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:43:07.725 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:43:07.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:43:08.574 [DEBUG] [Thread-122292] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:43:08.574 [DEBUG] [Thread-122292] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:43:08.621 [DEBUG] [Thread-122292] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:43:08.621 [DEBUG] [Thread-122292] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:43:08.631 [DEBUG] [Thread-122292] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:43:08.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:43:08.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:43:08.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:43:08.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:43:08.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:43:08.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:43:08.669 [DEBUG] [Thread-122292] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:43:13.472 [DEBUG] [Thread-122294 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:43:18.846 [DEBUG] [Thread-122295 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:43:32.163 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:43:32.183 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:43:34.047 [DEBUG] [Thread-122296 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:43:38.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:43:38.674 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:43:38.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:43:40.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 43, 3), 35.66, 7.89, 0.0, 15.79, 19.28, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:43:40.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:43:03
2025-11-03T20:43:40.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:43:40.725 [DEBUG] [Thread-122297] [transport.py] [_log()] starting thread (client mode): 0xed35150
2025-11-03T20:43:40.726 [DEBUG] [Thread-122297] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:43:40.733 [DEBUG] [Thread-122297] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:43:40.733 [INFO] [Thread-122297] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:43:40.739 [DEBUG] [Thread-122297] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:43:40.740 [DEBUG] [Thread-122297] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:43:40.740 [DEBUG] [Thread-122297] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:43:40.740 [DEBUG] [Thread-122297] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:43:40.740 [DEBUG] [Thread-122297] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:43:40.740 [DEBUG] [Thread-122297] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:43:40.740 [DEBUG] [Thread-122297] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:43:40.740 [DEBUG] [Thread-122297] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:43:40.740 [DEBUG] [Thread-122297] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:43:40.740 [DEBUG] [Thread-122297] [transport.py] [_log()] client lang: <none>
2025-11-03T20:43:40.740 [DEBUG] [Thread-122297] [transport.py] [_log()] server lang: <none>
2025-11-03T20:43:40.740 [DEBUG] [Thread-122297] [transport.py] [_log()] kex follows: False
2025-11-03T20:43:40.740 [DEBUG] [Thread-122297] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:43:40.741 [DEBUG] [Thread-122297] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:43:40.741 [DEBUG] [Thread-122297] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:43:40.741 [DEBUG] [Thread-122297] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:43:40.741 [DEBUG] [Thread-122297] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:43:40.741 [DEBUG] [Thread-122297] [transport.py] [_log()] Compression: none
2025-11-03T20:43:40.741 [DEBUG] [Thread-122297] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:43:40.780 [DEBUG] [Thread-122297] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:43:40.785 [DEBUG] [Thread-122297] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:43:40.786 [DEBUG] [Thread-122297] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:43:40.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:43:40.788 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:43:40.790 [DEBUG] [Thread-122297] [transport.py] [_log()] userauth is OK
2025-11-03T20:43:40.790 [DEBUG] [Thread-122297] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:43:40.790 [DEBUG] [Thread-122297] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:43:40.790 [DEBUG] [Thread-122297] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:43:40.790 [DEBUG] [Thread-122297] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:43:40.809 [INFO] [Thread-122297] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:43:40.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:43:41.417 [DEBUG] [Thread-122297] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:43:41.417 [DEBUG] [Thread-122297] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:43:41.418 [DEBUG] [Thread-122297] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:43:41.458 [DEBUG] [Thread-122297] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:43:41.459 [DEBUG] [Thread-122297] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:43:41.461 [DEBUG] [Thread-122297] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:43:41.473 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:43:41.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:43:41.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:43:41.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:43:41.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:43:41.483 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:43:41.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:43:41.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:43:41.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:43:41.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.779962 -999.00  +19.60  23.47     12   -9.70 1 1 1 1 1     0    0 29.48 -3.57 ZNESW 22.1 23.5 301.0 25.6 19.4 -27.8 19.4 -26.9 19.1 -26.8 19.4 -27.5
2025-11-03T20:43:41.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:43:41.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:43:41.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.779962
2025-11-03T20:43:41.491 [DEBUG] [Thread-122297] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:43:41.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:43:41.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:43:41.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:43:41.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:43:41.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:43:41.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:43:03', tmtdew=35.66, humidity=7.89, cloud=0.0, wind=15.79, temperature=19.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:43:38', seeing=0.93, atlas_timestamp='2025-11-03T18:43:08.717', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03225000000000122, 0.005250000000000199, -0.029749999999999943, 0.007499999999998508, 0.012000000000000455, 0.048250000000001236, -0.06949999999999967, -0.18624999999999936, -0.06350000000000122, 0.04300000000000104, 0.011250000000000426, 0.0009999999999994458, 0.0909999999999993, -0.0702499999999997, -0.11800000000000033, -0.1590000000000007, -0.11374999999999957, 0.03599999999999959, 0.11899999999999977, 0.06074999999999875, 0.09799999999999898, -0.11575000000000202, -0.14724999999999966, -0.5202500000000008, -0.1930000000000014, 0.11050000000000004, 0.13375000000000092, 0.09450000000000003, -0.06400000000000006, 0.03900000000000148, 0.04750000000000121, -0.21099999999999852, -0.008250000000000313], zp_timestamp='2025-11-03T18:40:00')
2025-11-03T20:43:41.590 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:43:41.601 [DEBUG] [Thread-122300] [transport.py] [_log()] starting thread (client mode): 0x11799c30
2025-11-03T20:43:41.601 [DEBUG] [Thread-122300] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:43:41.616 [DEBUG] [Thread-122300] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:43:41.616 [INFO] [Thread-122300] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:43:41.623 [DEBUG] [Thread-122300] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:43:41.623 [DEBUG] [Thread-122300] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:43:41.623 [DEBUG] [Thread-122300] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:43:41.623 [DEBUG] [Thread-122300] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:43:41.623 [DEBUG] [Thread-122300] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:43:41.623 [DEBUG] [Thread-122300] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:43:41.623 [DEBUG] [Thread-122300] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:43:41.623 [DEBUG] [Thread-122300] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:43:41.623 [DEBUG] [Thread-122300] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:43:41.623 [DEBUG] [Thread-122300] [transport.py] [_log()] client lang: <none>
2025-11-03T20:43:41.624 [DEBUG] [Thread-122300] [transport.py] [_log()] server lang: <none>
2025-11-03T20:43:41.624 [DEBUG] [Thread-122300] [transport.py] [_log()] kex follows: False
2025-11-03T20:43:41.624 [DEBUG] [Thread-122300] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:43:41.624 [DEBUG] [Thread-122300] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:43:41.624 [DEBUG] [Thread-122300] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:43:41.624 [DEBUG] [Thread-122300] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:43:41.624 [DEBUG] [Thread-122300] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:43:41.624 [DEBUG] [Thread-122300] [transport.py] [_log()] Compression: none
2025-11-03T20:43:41.624 [DEBUG] [Thread-122300] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:43:41.682 [DEBUG] [Thread-122300] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:43:41.682 [DEBUG] [Thread-122300] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:43:41.683 [DEBUG] [Thread-122300] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:43:41.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:43:41.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:43:41.739 [DEBUG] [Thread-122300] [transport.py] [_log()] userauth is OK
2025-11-03T20:43:41.739 [DEBUG] [Thread-122300] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:43:41.739 [DEBUG] [Thread-122300] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:43:41.739 [DEBUG] [Thread-122300] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:43:41.739 [DEBUG] [Thread-122300] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:43:41.755 [INFO] [Thread-122300] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:43:41.755 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:43:41.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:43:42.630 [DEBUG] [Thread-122300] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:43:42.631 [DEBUG] [Thread-122300] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:43:42.679 [DEBUG] [Thread-122300] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:43:42.679 [DEBUG] [Thread-122300] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:43:42.688 [DEBUG] [Thread-122300] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:43:42.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:43:42.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:43:42.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:43:42.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:43:42.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:43:42.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:43:42.724 [DEBUG] [Thread-122300] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:43:49.131 [DEBUG] [Thread-122302 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:44:04.386 [DEBUG] [Thread-122303 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:44:12.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:44:12.736 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:44:12.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:44:13.953 [DEBUG] [Thread-122304 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:44:14.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 43, 37), 35.44, 7.93, 0.0, 17.93, 19.22, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:44:14.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:43:37
2025-11-03T20:44:14.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:44:14.659 [DEBUG] [Thread-122305] [transport.py] [_log()] starting thread (client mode): 0x141da8f0
2025-11-03T20:44:14.661 [DEBUG] [Thread-122305] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:44:14.668 [DEBUG] [Thread-122305] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:44:14.668 [INFO] [Thread-122305] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:44:14.675 [DEBUG] [Thread-122305] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:44:14.675 [DEBUG] [Thread-122305] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:44:14.675 [DEBUG] [Thread-122305] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:44:14.675 [DEBUG] [Thread-122305] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:44:14.675 [DEBUG] [Thread-122305] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:44:14.675 [DEBUG] [Thread-122305] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:44:14.675 [DEBUG] [Thread-122305] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:44:14.675 [DEBUG] [Thread-122305] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:44:14.675 [DEBUG] [Thread-122305] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:44:14.675 [DEBUG] [Thread-122305] [transport.py] [_log()] client lang: <none>
2025-11-03T20:44:14.676 [DEBUG] [Thread-122305] [transport.py] [_log()] server lang: <none>
2025-11-03T20:44:14.676 [DEBUG] [Thread-122305] [transport.py] [_log()] kex follows: False
2025-11-03T20:44:14.676 [DEBUG] [Thread-122305] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:44:14.677 [DEBUG] [Thread-122305] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:44:14.677 [DEBUG] [Thread-122305] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:44:14.677 [DEBUG] [Thread-122305] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:44:14.677 [DEBUG] [Thread-122305] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:44:14.677 [DEBUG] [Thread-122305] [transport.py] [_log()] Compression: none
2025-11-03T20:44:14.677 [DEBUG] [Thread-122305] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:44:14.714 [DEBUG] [Thread-122305] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:44:14.720 [DEBUG] [Thread-122305] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:44:14.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:44:14.724 [DEBUG] [Thread-122305] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:44:14.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:44:14.727 [DEBUG] [Thread-122305] [transport.py] [_log()] userauth is OK
2025-11-03T20:44:14.727 [DEBUG] [Thread-122305] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:44:14.727 [DEBUG] [Thread-122305] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:44:14.727 [DEBUG] [Thread-122305] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:44:14.727 [DEBUG] [Thread-122305] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:44:14.750 [INFO] [Thread-122305] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:44:14.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:44:15.392 [DEBUG] [Thread-122305] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:44:15.392 [DEBUG] [Thread-122305] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:44:15.393 [DEBUG] [Thread-122305] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:44:15.433 [DEBUG] [Thread-122305] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:44:15.433 [DEBUG] [Thread-122305] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:44:15.436 [DEBUG] [Thread-122305] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:44:15.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:44:15.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:44:15.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:44:15.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:44:15.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:44:15.463 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:44:15.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:44:15.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:44:15.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:44:15.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.780309 -999.00  +19.60  17.41     12   -9.70 1 1 1 1 1     0    0 29.13 -3.09 ZNESW 22.8 17.4 300.0 26.6 19.4 -27.9 19.4 -27.0 19.2 -26.6 19.4 -27.6
2025-11-03T20:44:15.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:44:15.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:44:15.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.780309
2025-11-03T20:44:15.471 [DEBUG] [Thread-122305] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:44:15.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:44:15.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:44:15.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:44:15.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:44:15.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:44:15.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:43:37', tmtdew=35.44, humidity=7.93, cloud=0.0, wind=17.93, temperature=19.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:44:12', seeing=0.93, atlas_timestamp='2025-11-03T18:43:38.698', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03225000000000122, 0.005250000000000199, -0.029749999999999943, 0.007499999999998508, 0.012000000000000455, 0.048250000000001236, -0.06949999999999967, -0.18624999999999936, -0.06350000000000122, 0.04300000000000104, 0.011250000000000426, 0.0009999999999994458, 0.0909999999999993, -0.0702499999999997, -0.11800000000000033, -0.1590000000000007, -0.11374999999999957, 0.03599999999999959, 0.11899999999999977, 0.06074999999999875, 0.09799999999999898, -0.11575000000000202, -0.14724999999999966, -0.5202500000000008, -0.1930000000000014, 0.11050000000000004, 0.13375000000000092, 0.09450000000000003, -0.06400000000000006, 0.03900000000000148, 0.04750000000000121, -0.21099999999999852, -0.008250000000000313], zp_timestamp='2025-11-03T18:42:00')
2025-11-03T20:44:15.574 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:44:15.585 [DEBUG] [Thread-122308] [transport.py] [_log()] starting thread (client mode): 0x117984f0
2025-11-03T20:44:15.586 [DEBUG] [Thread-122308] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:44:15.599 [DEBUG] [Thread-122308] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:44:15.600 [INFO] [Thread-122308] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:44:15.607 [DEBUG] [Thread-122308] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:44:15.607 [DEBUG] [Thread-122308] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:44:15.607 [DEBUG] [Thread-122308] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:44:15.607 [DEBUG] [Thread-122308] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:44:15.607 [DEBUG] [Thread-122308] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:44:15.607 [DEBUG] [Thread-122308] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:44:15.607 [DEBUG] [Thread-122308] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:44:15.607 [DEBUG] [Thread-122308] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:44:15.607 [DEBUG] [Thread-122308] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:44:15.607 [DEBUG] [Thread-122308] [transport.py] [_log()] client lang: <none>
2025-11-03T20:44:15.607 [DEBUG] [Thread-122308] [transport.py] [_log()] server lang: <none>
2025-11-03T20:44:15.607 [DEBUG] [Thread-122308] [transport.py] [_log()] kex follows: False
2025-11-03T20:44:15.607 [DEBUG] [Thread-122308] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:44:15.607 [DEBUG] [Thread-122308] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:44:15.607 [DEBUG] [Thread-122308] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:44:15.607 [DEBUG] [Thread-122308] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:44:15.607 [DEBUG] [Thread-122308] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:44:15.607 [DEBUG] [Thread-122308] [transport.py] [_log()] Compression: none
2025-11-03T20:44:15.607 [DEBUG] [Thread-122308] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:44:15.667 [DEBUG] [Thread-122308] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:44:15.667 [DEBUG] [Thread-122308] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:44:15.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:44:15.667 [DEBUG] [Thread-122308] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:44:15.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:44:15.723 [DEBUG] [Thread-122308] [transport.py] [_log()] userauth is OK
2025-11-03T20:44:15.723 [DEBUG] [Thread-122308] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:44:15.723 [DEBUG] [Thread-122308] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:44:15.723 [DEBUG] [Thread-122308] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:44:15.723 [DEBUG] [Thread-122308] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:44:15.737 [INFO] [Thread-122308] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:44:15.737 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:44:15.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:44:16.545 [DEBUG] [Thread-122308] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:44:16.546 [DEBUG] [Thread-122308] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:44:16.594 [DEBUG] [Thread-122308] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:44:16.594 [DEBUG] [Thread-122308] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:44:16.603 [DEBUG] [Thread-122308] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:44:16.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:44:16.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:44:16.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:44:16.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:44:16.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:44:16.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:44:16.641 [DEBUG] [Thread-122308] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:44:19.508 [DEBUG] [Thread-122310 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:44:32.387 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:44:32.389 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:44:34.788 [DEBUG] [Thread-122311 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:44:46.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:44:46.697 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:44:46.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:44:48.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 44, 11), 35.39, 7.96, 0.0, 17.33, 19.22, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:44:48.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:44:11
2025-11-03T20:44:48.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:44:48.926 [DEBUG] [Thread-122312] [transport.py] [_log()] starting thread (client mode): 0xed36fe0
2025-11-03T20:44:48.928 [DEBUG] [Thread-122312] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:44:48.928 [DEBUG] [Thread-122312] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:44:48.928 [INFO] [Thread-122312] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:44:48.932 [DEBUG] [Thread-122312] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:44:48.932 [DEBUG] [Thread-122312] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:44:48.932 [DEBUG] [Thread-122312] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:44:48.932 [DEBUG] [Thread-122312] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:44:48.932 [DEBUG] [Thread-122312] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:44:48.932 [DEBUG] [Thread-122312] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:44:48.932 [DEBUG] [Thread-122312] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:44:48.932 [DEBUG] [Thread-122312] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:44:48.932 [DEBUG] [Thread-122312] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:44:48.932 [DEBUG] [Thread-122312] [transport.py] [_log()] client lang: <none>
2025-11-03T20:44:48.932 [DEBUG] [Thread-122312] [transport.py] [_log()] server lang: <none>
2025-11-03T20:44:48.932 [DEBUG] [Thread-122312] [transport.py] [_log()] kex follows: False
2025-11-03T20:44:48.932 [DEBUG] [Thread-122312] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:44:48.933 [DEBUG] [Thread-122312] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:44:48.933 [DEBUG] [Thread-122312] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:44:48.933 [DEBUG] [Thread-122312] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:44:48.933 [DEBUG] [Thread-122312] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:44:48.933 [DEBUG] [Thread-122312] [transport.py] [_log()] Compression: none
2025-11-03T20:44:48.933 [DEBUG] [Thread-122312] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:44:48.965 [DEBUG] [Thread-122312] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:44:48.969 [DEBUG] [Thread-122312] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:44:48.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:44:48.975 [DEBUG] [Thread-122312] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:44:48.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:44:48.978 [DEBUG] [Thread-122312] [transport.py] [_log()] userauth is OK
2025-11-03T20:44:48.978 [DEBUG] [Thread-122312] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:44:48.978 [DEBUG] [Thread-122312] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:44:48.978 [DEBUG] [Thread-122312] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:44:48.978 [DEBUG] [Thread-122312] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:44:48.996 [INFO] [Thread-122312] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:44:48.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:44:49.765 [DEBUG] [Thread-122312] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:44:49.765 [DEBUG] [Thread-122312] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:44:49.766 [DEBUG] [Thread-122312] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:44:49.807 [DEBUG] [Thread-122312] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:44:49.807 [DEBUG] [Thread-122312] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:44:49.809 [DEBUG] [Thread-122312] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:44:49.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:44:49.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:44:49.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:44:49.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:44:49.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:44:49.836 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:44:49.836 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:44:49.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:44:49.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:44:49.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.780656 -999.00  +19.60  20.33     12   -9.70 1 1 1 1 1     0    0 29.70 -2.82 ZNESW 21.1 20.3 297.2 25.3 19.5 -27.8 19.4 -27.0 19.2 -26.4 19.4 -27.7
2025-11-03T20:44:49.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:44:49.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:44:49.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.780656
2025-11-03T20:44:49.861 [DEBUG] [Thread-122312] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:44:49.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:44:49.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:44:49.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:44:49.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:44:49.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:44:49.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:44:11', tmtdew=35.39, humidity=7.96, cloud=0.0, wind=17.33, temperature=19.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:44:46', seeing=1.04, atlas_timestamp='2025-11-03T18:44:08.678', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03225000000000122, 0.005250000000000199, -0.029749999999999943, 0.007499999999998508, 0.012000000000000455, 0.048250000000001236, -0.06949999999999967, -0.18624999999999936, -0.06350000000000122, 0.04300000000000104, 0.011250000000000426, 0.0009999999999994458, 0.0909999999999993, -0.0702499999999997, -0.11800000000000033, -0.1590000000000007, -0.11374999999999957, 0.03599999999999959, 0.11899999999999977, 0.06074999999999875, 0.09799999999999898, -0.11575000000000202, -0.14724999999999966, -0.5202500000000008, -0.1930000000000014, 0.11050000000000004, 0.13375000000000092, 0.09450000000000003, -0.06400000000000006, 0.03900000000000148, 0.04750000000000121, -0.21099999999999852, -0.008250000000000313], zp_timestamp='2025-11-03T18:42:00')
2025-11-03T20:44:49.922 [DEBUG] [Thread-122315 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:44:49.964 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:44:49.975 [DEBUG] [Thread-122316] [transport.py] [_log()] starting thread (client mode): 0x11798c10
2025-11-03T20:44:49.975 [DEBUG] [Thread-122316] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:44:49.990 [DEBUG] [Thread-122316] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:44:49.990 [INFO] [Thread-122316] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:44:49.998 [DEBUG] [Thread-122316] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:44:49.998 [DEBUG] [Thread-122316] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:44:49.998 [DEBUG] [Thread-122316] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:44:49.998 [DEBUG] [Thread-122316] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:44:49.998 [DEBUG] [Thread-122316] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:44:49.998 [DEBUG] [Thread-122316] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:44:49.998 [DEBUG] [Thread-122316] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:44:49.998 [DEBUG] [Thread-122316] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:44:49.998 [DEBUG] [Thread-122316] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:44:49.998 [DEBUG] [Thread-122316] [transport.py] [_log()] client lang: <none>
2025-11-03T20:44:49.998 [DEBUG] [Thread-122316] [transport.py] [_log()] server lang: <none>
2025-11-03T20:44:49.998 [DEBUG] [Thread-122316] [transport.py] [_log()] kex follows: False
2025-11-03T20:44:49.998 [DEBUG] [Thread-122316] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:44:49.998 [DEBUG] [Thread-122316] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:44:49.998 [DEBUG] [Thread-122316] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:44:49.998 [DEBUG] [Thread-122316] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:44:49.998 [DEBUG] [Thread-122316] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:44:49.998 [DEBUG] [Thread-122316] [transport.py] [_log()] Compression: none
2025-11-03T20:44:49.998 [DEBUG] [Thread-122316] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:44:50.055 [DEBUG] [Thread-122316] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:44:50.055 [DEBUG] [Thread-122316] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:44:50.055 [DEBUG] [Thread-122316] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:44:50.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:44:50.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:44:50.111 [DEBUG] [Thread-122316] [transport.py] [_log()] userauth is OK
2025-11-03T20:44:50.111 [DEBUG] [Thread-122316] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:44:50.111 [DEBUG] [Thread-122316] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:44:50.111 [DEBUG] [Thread-122316] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:44:50.111 [DEBUG] [Thread-122316] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:44:50.134 [INFO] [Thread-122316] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:44:50.134 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:44:50.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:44:50.946 [DEBUG] [Thread-122316] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:44:50.947 [DEBUG] [Thread-122316] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:44:50.995 [DEBUG] [Thread-122316] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:44:50.995 [DEBUG] [Thread-122316] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:44:51.005 [DEBUG] [Thread-122316] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:44:51.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:44:51.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:44:51.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:44:51.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:44:51.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:44:51.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:44:51.041 [DEBUG] [Thread-122316] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:45:05.191 [DEBUG] [Thread-122318 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:45:14.437 [DEBUG] [Thread-122319 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:45:20.316 [DEBUG] [Thread-122320 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:45:21.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:45:21.067 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:45:21.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:45:22.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 44, 45), 35.38, 7.93, 0.0, 17.84, 19.18, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:45:22.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:44:45
2025-11-03T20:45:22.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:45:23.003 [DEBUG] [Thread-122321] [transport.py] [_log()] starting thread (client mode): 0xedc5810
2025-11-03T20:45:23.004 [DEBUG] [Thread-122321] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:45:23.011 [DEBUG] [Thread-122321] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:45:23.011 [INFO] [Thread-122321] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:45:23.020 [DEBUG] [Thread-122321] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:45:23.020 [DEBUG] [Thread-122321] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:45:23.020 [DEBUG] [Thread-122321] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:45:23.020 [DEBUG] [Thread-122321] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:45:23.021 [DEBUG] [Thread-122321] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:45:23.021 [DEBUG] [Thread-122321] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:45:23.021 [DEBUG] [Thread-122321] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:45:23.021 [DEBUG] [Thread-122321] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:45:23.021 [DEBUG] [Thread-122321] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:45:23.021 [DEBUG] [Thread-122321] [transport.py] [_log()] client lang: <none>
2025-11-03T20:45:23.021 [DEBUG] [Thread-122321] [transport.py] [_log()] server lang: <none>
2025-11-03T20:45:23.021 [DEBUG] [Thread-122321] [transport.py] [_log()] kex follows: False
2025-11-03T20:45:23.021 [DEBUG] [Thread-122321] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:45:23.022 [DEBUG] [Thread-122321] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:45:23.022 [DEBUG] [Thread-122321] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:45:23.022 [DEBUG] [Thread-122321] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:45:23.022 [DEBUG] [Thread-122321] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:45:23.022 [DEBUG] [Thread-122321] [transport.py] [_log()] Compression: none
2025-11-03T20:45:23.022 [DEBUG] [Thread-122321] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:45:23.068 [DEBUG] [Thread-122321] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:45:23.073 [DEBUG] [Thread-122321] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:45:23.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:45:23.077 [DEBUG] [Thread-122321] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:45:23.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:45:23.080 [DEBUG] [Thread-122321] [transport.py] [_log()] userauth is OK
2025-11-03T20:45:23.080 [DEBUG] [Thread-122321] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:45:23.080 [DEBUG] [Thread-122321] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:45:23.080 [DEBUG] [Thread-122321] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:45:23.080 [DEBUG] [Thread-122321] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:45:23.113 [INFO] [Thread-122321] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:45:23.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:45:23.745 [DEBUG] [Thread-122321] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:45:23.745 [DEBUG] [Thread-122321] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:45:23.746 [DEBUG] [Thread-122321] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:45:23.786 [DEBUG] [Thread-122321] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:45:23.787 [DEBUG] [Thread-122321] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:45:23.789 [DEBUG] [Thread-122321] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:45:23.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:45:23.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:45:23.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:45:23.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:45:23.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:45:23.813 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:45:23.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:45:23.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:45:23.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:45:23.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.781004 -999.00  +19.60  17.14     12   -9.70 1 1 1 1 1     0    0 29.37 -2.48 ZNESW 17.9 17.1 310.6 24.7 19.5 -27.9 19.4 -26.9 19.2 -26.9 19.5 -27.8
2025-11-03T20:45:23.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:45:23.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:45:23.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.781004
2025-11-03T20:45:23.821 [DEBUG] [Thread-122321] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:45:23.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:45:23.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:45:23.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:45:23.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:45:23.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:45:23.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:44:45', tmtdew=35.38, humidity=7.93, cloud=0.0, wind=17.84, temperature=19.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:45:20', seeing=1.11, atlas_timestamp='2025-11-03T18:44:38.746', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03225000000000122, 0.005250000000000199, -0.029749999999999943, 0.007499999999998508, 0.012000000000000455, 0.048250000000001236, -0.06949999999999967, -0.18624999999999936, -0.06350000000000122, 0.04300000000000104, 0.011250000000000426, 0.0009999999999994458, 0.0909999999999993, -0.0702499999999997, -0.11800000000000033, -0.1590000000000007, -0.11374999999999957, 0.03599999999999959, 0.11899999999999977, 0.06074999999999875, 0.09799999999999898, -0.11575000000000202, -0.14724999999999966, -0.5202500000000008, -0.1930000000000014, 0.11050000000000004, 0.13375000000000092, 0.09450000000000003, -0.06400000000000006, 0.03900000000000148, 0.04750000000000121, -0.21099999999999852, -0.008250000000000313], zp_timestamp='2025-11-03T18:42:00')
2025-11-03T20:45:23.923 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:45:23.935 [DEBUG] [Thread-122324] [transport.py] [_log()] starting thread (client mode): 0xedc7610
2025-11-03T20:45:23.935 [DEBUG] [Thread-122324] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:45:23.953 [DEBUG] [Thread-122324] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:45:23.953 [INFO] [Thread-122324] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:45:23.961 [DEBUG] [Thread-122324] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:45:23.961 [DEBUG] [Thread-122324] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:45:23.961 [DEBUG] [Thread-122324] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:45:23.961 [DEBUG] [Thread-122324] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:45:23.961 [DEBUG] [Thread-122324] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:45:23.961 [DEBUG] [Thread-122324] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:45:23.961 [DEBUG] [Thread-122324] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:45:23.961 [DEBUG] [Thread-122324] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:45:23.961 [DEBUG] [Thread-122324] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:45:23.961 [DEBUG] [Thread-122324] [transport.py] [_log()] client lang: <none>
2025-11-03T20:45:23.961 [DEBUG] [Thread-122324] [transport.py] [_log()] server lang: <none>
2025-11-03T20:45:23.961 [DEBUG] [Thread-122324] [transport.py] [_log()] kex follows: False
2025-11-03T20:45:23.961 [DEBUG] [Thread-122324] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:45:23.961 [DEBUG] [Thread-122324] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:45:23.961 [DEBUG] [Thread-122324] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:45:23.962 [DEBUG] [Thread-122324] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:45:23.962 [DEBUG] [Thread-122324] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:45:23.962 [DEBUG] [Thread-122324] [transport.py] [_log()] Compression: none
2025-11-03T20:45:23.962 [DEBUG] [Thread-122324] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:45:24.019 [DEBUG] [Thread-122324] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:45:24.020 [DEBUG] [Thread-122324] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:45:24.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:45:24.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:45:24.020 [DEBUG] [Thread-122324] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:45:24.075 [DEBUG] [Thread-122324] [transport.py] [_log()] userauth is OK
2025-11-03T20:45:24.075 [DEBUG] [Thread-122324] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:45:24.076 [DEBUG] [Thread-122324] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:45:24.076 [DEBUG] [Thread-122324] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:45:24.076 [DEBUG] [Thread-122324] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:45:24.095 [INFO] [Thread-122324] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:45:24.095 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:45:24.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:45:24.973 [DEBUG] [Thread-122324] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:45:24.973 [DEBUG] [Thread-122324] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:45:25.020 [DEBUG] [Thread-122324] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:45:25.021 [DEBUG] [Thread-122324] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:45:25.030 [DEBUG] [Thread-122324] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:45:25.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:45:25.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:45:25.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:45:25.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:45:25.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:45:25.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:45:25.065 [DEBUG] [Thread-122324] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:45:32.600 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:45:32.603 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:45:35.380 [DEBUG] [Thread-122326 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:45:50.576 [DEBUG] [Thread-122327 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:45:55.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:45:55.070 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:45:55.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:45:56.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 45, 19), 35.31, 7.98, 0.0, 17.49, 19.18, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:45:56.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:45:19
2025-11-03T20:45:56.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:45:57.027 [DEBUG] [Thread-122328] [transport.py] [_log()] starting thread (client mode): 0xedc4700
2025-11-03T20:45:57.028 [DEBUG] [Thread-122328] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:45:57.036 [DEBUG] [Thread-122328] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:45:57.036 [INFO] [Thread-122328] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:45:57.043 [DEBUG] [Thread-122328] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:45:57.043 [DEBUG] [Thread-122328] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:45:57.043 [DEBUG] [Thread-122328] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:45:57.043 [DEBUG] [Thread-122328] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:45:57.043 [DEBUG] [Thread-122328] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:45:57.043 [DEBUG] [Thread-122328] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:45:57.044 [DEBUG] [Thread-122328] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:45:57.044 [DEBUG] [Thread-122328] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:45:57.044 [DEBUG] [Thread-122328] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:45:57.044 [DEBUG] [Thread-122328] [transport.py] [_log()] client lang: <none>
2025-11-03T20:45:57.044 [DEBUG] [Thread-122328] [transport.py] [_log()] server lang: <none>
2025-11-03T20:45:57.044 [DEBUG] [Thread-122328] [transport.py] [_log()] kex follows: False
2025-11-03T20:45:57.044 [DEBUG] [Thread-122328] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:45:57.044 [DEBUG] [Thread-122328] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:45:57.045 [DEBUG] [Thread-122328] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:45:57.045 [DEBUG] [Thread-122328] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:45:57.045 [DEBUG] [Thread-122328] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:45:57.045 [DEBUG] [Thread-122328] [transport.py] [_log()] Compression: none
2025-11-03T20:45:57.045 [DEBUG] [Thread-122328] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:45:57.079 [DEBUG] [Thread-122328] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:45:57.083 [DEBUG] [Thread-122328] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:45:57.085 [DEBUG] [Thread-122328] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:45:57.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:45:57.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:45:57.089 [DEBUG] [Thread-122328] [transport.py] [_log()] userauth is OK
2025-11-03T20:45:57.089 [DEBUG] [Thread-122328] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:45:57.089 [DEBUG] [Thread-122328] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:45:57.089 [DEBUG] [Thread-122328] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:45:57.089 [DEBUG] [Thread-122328] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:45:57.108 [INFO] [Thread-122328] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:45:57.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:45:57.724 [DEBUG] [Thread-122328] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:45:57.724 [DEBUG] [Thread-122328] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:45:57.731 [DEBUG] [Thread-122328] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:45:57.766 [DEBUG] [Thread-122328] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:45:57.766 [DEBUG] [Thread-122328] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:45:57.768 [DEBUG] [Thread-122328] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:45:57.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:45:57.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:45:57.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:45:57.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:45:57.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:45:57.791 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:45:57.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:45:57.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:45:57.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:45:57.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.781698 -999.00  +19.40  19.01     13   -9.60 1 1 1 1 1     0    0 29.20 -3.04 ZNESW 17.6 19.0 308.6 23.5 19.4 -28.2 19.4 -27.1 19.1 -27.0 19.4 -27.7
2025-11-03T20:45:57.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:45:57.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:45:57.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.781698
2025-11-03T20:45:57.799 [DEBUG] [Thread-122328] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:45:57.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:45:57.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:45:57.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:45:57.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:45:57.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:45:57.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:45:19', tmtdew=35.31, humidity=7.98, cloud=0.0, wind=17.49, temperature=19.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:45:54', seeing=1.04, atlas_timestamp='2025-11-03T18:45:38.707', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03225000000000122, 0.005250000000000199, -0.029749999999999943, 0.007499999999998508, 0.012000000000000455, 0.048250000000001236, -0.06949999999999967, -0.18624999999999936, -0.06350000000000122, 0.04300000000000104, 0.011250000000000426, 0.0009999999999994458, 0.0909999999999993, -0.0702499999999997, -0.11800000000000033, -0.1590000000000007, -0.11374999999999957, 0.03599999999999959, 0.11899999999999977, 0.06074999999999875, 0.09799999999999898, -0.11575000000000202, -0.14724999999999966, -0.5202500000000008, -0.1930000000000014, 0.11050000000000004, 0.13375000000000092, 0.09450000000000003, -0.06400000000000006, 0.03900000000000148, 0.04750000000000121, -0.21099999999999852, -0.008250000000000313], zp_timestamp='2025-11-03T18:42:00')
2025-11-03T20:45:57.908 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:45:57.920 [DEBUG] [Thread-122331] [transport.py] [_log()] starting thread (client mode): 0xedc4d90
2025-11-03T20:45:57.920 [DEBUG] [Thread-122331] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:45:57.935 [DEBUG] [Thread-122331] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:45:57.935 [INFO] [Thread-122331] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:45:57.942 [DEBUG] [Thread-122331] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:45:57.942 [DEBUG] [Thread-122331] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:45:57.942 [DEBUG] [Thread-122331] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:45:57.942 [DEBUG] [Thread-122331] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:45:57.942 [DEBUG] [Thread-122331] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:45:57.943 [DEBUG] [Thread-122331] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:45:57.943 [DEBUG] [Thread-122331] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:45:57.943 [DEBUG] [Thread-122331] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:45:57.943 [DEBUG] [Thread-122331] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:45:57.943 [DEBUG] [Thread-122331] [transport.py] [_log()] client lang: <none>
2025-11-03T20:45:57.943 [DEBUG] [Thread-122331] [transport.py] [_log()] server lang: <none>
2025-11-03T20:45:57.943 [DEBUG] [Thread-122331] [transport.py] [_log()] kex follows: False
2025-11-03T20:45:57.943 [DEBUG] [Thread-122331] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:45:57.943 [DEBUG] [Thread-122331] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:45:57.943 [DEBUG] [Thread-122331] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:45:57.943 [DEBUG] [Thread-122331] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:45:57.943 [DEBUG] [Thread-122331] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:45:57.943 [DEBUG] [Thread-122331] [transport.py] [_log()] Compression: none
2025-11-03T20:45:57.943 [DEBUG] [Thread-122331] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:45:58.002 [DEBUG] [Thread-122331] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:45:58.002 [DEBUG] [Thread-122331] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:45:58.002 [DEBUG] [Thread-122331] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:45:58.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:45:58.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:45:58.059 [DEBUG] [Thread-122331] [transport.py] [_log()] userauth is OK
2025-11-03T20:45:58.059 [DEBUG] [Thread-122331] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:45:58.059 [DEBUG] [Thread-122331] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:45:58.059 [DEBUG] [Thread-122331] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:45:58.059 [DEBUG] [Thread-122331] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:45:58.073 [INFO] [Thread-122331] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:45:58.074 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:45:58.074 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:45:58.904 [DEBUG] [Thread-122331] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:45:58.904 [DEBUG] [Thread-122331] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:45:58.952 [DEBUG] [Thread-122331] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:45:58.952 [DEBUG] [Thread-122331] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:45:58.961 [DEBUG] [Thread-122331] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:45:58.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:45:58.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:45:58.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:45:58.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:45:58.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:45:58.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:45:58.999 [DEBUG] [Thread-122331] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:46:05.735 [DEBUG] [Thread-122333 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:46:14.872 [DEBUG] [Thread-122334 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:46:20.946 [DEBUG] [Thread-122335 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:46:29.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:46:29.024 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:46:29.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:46:30.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 45, 53), 35.26, 7.98, 0.0, 17.15, 19.17, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:46:30.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:45:53
2025-11-03T20:46:30.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:46:31.025 [DEBUG] [Thread-122336] [transport.py] [_log()] starting thread (client mode): 0x117980a0
2025-11-03T20:46:31.027 [DEBUG] [Thread-122336] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:46:31.035 [DEBUG] [Thread-122336] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:46:31.035 [INFO] [Thread-122336] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:46:31.043 [DEBUG] [Thread-122336] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:46:31.043 [DEBUG] [Thread-122336] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:46:31.043 [DEBUG] [Thread-122336] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:46:31.043 [DEBUG] [Thread-122336] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:46:31.043 [DEBUG] [Thread-122336] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:46:31.044 [DEBUG] [Thread-122336] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:46:31.044 [DEBUG] [Thread-122336] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:46:31.044 [DEBUG] [Thread-122336] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:46:31.044 [DEBUG] [Thread-122336] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:46:31.044 [DEBUG] [Thread-122336] [transport.py] [_log()] client lang: <none>
2025-11-03T20:46:31.044 [DEBUG] [Thread-122336] [transport.py] [_log()] server lang: <none>
2025-11-03T20:46:31.044 [DEBUG] [Thread-122336] [transport.py] [_log()] kex follows: False
2025-11-03T20:46:31.044 [DEBUG] [Thread-122336] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:46:31.044 [DEBUG] [Thread-122336] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:46:31.045 [DEBUG] [Thread-122336] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:46:31.045 [DEBUG] [Thread-122336] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:46:31.045 [DEBUG] [Thread-122336] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:46:31.045 [DEBUG] [Thread-122336] [transport.py] [_log()] Compression: none
2025-11-03T20:46:31.045 [DEBUG] [Thread-122336] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:46:31.094 [DEBUG] [Thread-122336] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:46:31.099 [DEBUG] [Thread-122336] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:46:31.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:46:31.103 [DEBUG] [Thread-122336] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:46:31.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:46:31.105 [DEBUG] [Thread-122336] [transport.py] [_log()] userauth is OK
2025-11-03T20:46:31.105 [DEBUG] [Thread-122336] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:46:31.106 [DEBUG] [Thread-122336] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:46:31.106 [DEBUG] [Thread-122336] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:46:31.106 [DEBUG] [Thread-122336] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:46:31.126 [INFO] [Thread-122336] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:46:31.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:46:31.788 [DEBUG] [Thread-122336] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:46:31.788 [DEBUG] [Thread-122336] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:46:31.789 [DEBUG] [Thread-122336] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:46:31.828 [DEBUG] [Thread-122336] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:46:31.828 [DEBUG] [Thread-122336] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:46:31.830 [DEBUG] [Thread-122336] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:46:31.843 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:46:31.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:46:31.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:46:31.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:46:31.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:46:31.853 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:46:31.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:46:31.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:46:31.854 [DEBUG] [Thread-122336] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:46:31.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:46:31.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.782045 -999.00  +19.30  17.20     13   -9.70 1 1 1 1 1     0    0 29.36 -3.90 ZNESW 17.3 17.2 308.6 22.7 -999.0 -999.0 19.3 -27.1 19.2 -27.0 19.4 -27.8
2025-11-03T20:46:31.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:46:31.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:46:31.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.782045
2025-11-03T20:46:31.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:46:31.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:46:31.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:46:31.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:46:31.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:46:31.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:45:53', tmtdew=35.26, humidity=7.98, cloud=0.0, wind=17.15, temperature=19.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:46:28', seeing=1.18, atlas_timestamp='2025-11-03T18:46:08.688', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03225000000000122, 0.005250000000000199, -0.029749999999999943, 0.007499999999998508, 0.012000000000000455, 0.048250000000001236, -0.06949999999999967, -0.18624999999999936, -0.06350000000000122, 0.04300000000000104, 0.011250000000000426, 0.0009999999999994458, 0.0909999999999993, -0.0702499999999997, -0.11800000000000033, -0.1590000000000007, -0.11374999999999957, 0.03599999999999959, 0.11899999999999977, 0.06074999999999875, 0.09799999999999898, -0.11575000000000202, -0.14724999999999966, -0.5202500000000008, -0.1930000000000014, 0.11050000000000004, 0.13375000000000092, 0.09450000000000003, -0.06400000000000006, 0.03900000000000148, 0.04750000000000121, -0.21099999999999852, -0.008250000000000313], zp_timestamp='2025-11-03T18:42:00')
2025-11-03T20:46:31.962 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:46:31.973 [DEBUG] [Thread-122339] [transport.py] [_log()] starting thread (client mode): 0xedc7700
2025-11-03T20:46:31.973 [DEBUG] [Thread-122339] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:46:31.989 [DEBUG] [Thread-122339] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:46:31.989 [INFO] [Thread-122339] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:46:31.996 [DEBUG] [Thread-122339] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:46:31.997 [DEBUG] [Thread-122339] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:46:31.997 [DEBUG] [Thread-122339] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:46:31.997 [DEBUG] [Thread-122339] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:46:31.997 [DEBUG] [Thread-122339] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:46:31.997 [DEBUG] [Thread-122339] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:46:31.997 [DEBUG] [Thread-122339] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:46:31.997 [DEBUG] [Thread-122339] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:46:31.997 [DEBUG] [Thread-122339] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:46:31.997 [DEBUG] [Thread-122339] [transport.py] [_log()] client lang: <none>
2025-11-03T20:46:31.997 [DEBUG] [Thread-122339] [transport.py] [_log()] server lang: <none>
2025-11-03T20:46:31.997 [DEBUG] [Thread-122339] [transport.py] [_log()] kex follows: False
2025-11-03T20:46:31.997 [DEBUG] [Thread-122339] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:46:31.997 [DEBUG] [Thread-122339] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:46:31.997 [DEBUG] [Thread-122339] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:46:31.997 [DEBUG] [Thread-122339] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:46:31.997 [DEBUG] [Thread-122339] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:46:31.997 [DEBUG] [Thread-122339] [transport.py] [_log()] Compression: none
2025-11-03T20:46:31.997 [DEBUG] [Thread-122339] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:46:32.055 [DEBUG] [Thread-122339] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:46:32.056 [DEBUG] [Thread-122339] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:46:32.056 [DEBUG] [Thread-122339] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:46:32.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:46:32.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:46:32.113 [DEBUG] [Thread-122339] [transport.py] [_log()] userauth is OK
2025-11-03T20:46:32.113 [DEBUG] [Thread-122339] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:46:32.113 [DEBUG] [Thread-122339] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:46:32.113 [DEBUG] [Thread-122339] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:46:32.113 [DEBUG] [Thread-122339] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:46:32.128 [INFO] [Thread-122339] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:46:32.129 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:46:32.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:46:32.834 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:46:32.835 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:46:32.959 [DEBUG] [Thread-122339] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:46:32.959 [DEBUG] [Thread-122339] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:46:33.008 [DEBUG] [Thread-122339] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:46:33.008 [DEBUG] [Thread-122339] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:46:33.018 [DEBUG] [Thread-122339] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:46:33.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:46:33.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:46:33.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:46:33.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:46:33.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:46:33.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:46:33.053 [DEBUG] [Thread-122339] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:46:36.026 [DEBUG] [Thread-122341 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:46:51.186 [DEBUG] [Thread-122342 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:47:03.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:47:03.117 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:47:03.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:47:04.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 46, 27), 35.28, 7.94, 0.0, 16.52, 19.09, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:47:04.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:46:27
2025-11-03T20:47:04.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:47:05.115 [DEBUG] [Thread-122343] [transport.py] [_log()] starting thread (client mode): 0xedc5270
2025-11-03T20:47:05.117 [DEBUG] [Thread-122343] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:47:05.120 [DEBUG] [Thread-122343] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:47:05.122 [INFO] [Thread-122343] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:47:05.130 [DEBUG] [Thread-122343] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:47:05.130 [DEBUG] [Thread-122343] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:47:05.130 [DEBUG] [Thread-122343] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:47:05.130 [DEBUG] [Thread-122343] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:47:05.130 [DEBUG] [Thread-122343] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:47:05.130 [DEBUG] [Thread-122343] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:47:05.130 [DEBUG] [Thread-122343] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:47:05.130 [DEBUG] [Thread-122343] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:47:05.130 [DEBUG] [Thread-122343] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:47:05.130 [DEBUG] [Thread-122343] [transport.py] [_log()] client lang: <none>
2025-11-03T20:47:05.130 [DEBUG] [Thread-122343] [transport.py] [_log()] server lang: <none>
2025-11-03T20:47:05.130 [DEBUG] [Thread-122343] [transport.py] [_log()] kex follows: False
2025-11-03T20:47:05.130 [DEBUG] [Thread-122343] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:47:05.131 [DEBUG] [Thread-122343] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:47:05.131 [DEBUG] [Thread-122343] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:47:05.131 [DEBUG] [Thread-122343] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:47:05.132 [DEBUG] [Thread-122343] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:47:05.132 [DEBUG] [Thread-122343] [transport.py] [_log()] Compression: none
2025-11-03T20:47:05.132 [DEBUG] [Thread-122343] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:47:05.173 [DEBUG] [Thread-122343] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:47:05.177 [DEBUG] [Thread-122343] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:47:05.179 [DEBUG] [Thread-122343] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:47:05.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:47:05.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:47:05.183 [DEBUG] [Thread-122343] [transport.py] [_log()] userauth is OK
2025-11-03T20:47:05.183 [DEBUG] [Thread-122343] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:47:05.183 [DEBUG] [Thread-122343] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:47:05.183 [DEBUG] [Thread-122343] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:47:05.183 [DEBUG] [Thread-122343] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:47:05.214 [INFO] [Thread-122343] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:47:05.219 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:47:05.848 [DEBUG] [Thread-122343] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:47:05.848 [DEBUG] [Thread-122343] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:47:05.849 [DEBUG] [Thread-122343] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:47:05.889 [DEBUG] [Thread-122343] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:47:05.889 [DEBUG] [Thread-122343] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:47:05.892 [DEBUG] [Thread-122343] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:47:05.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:47:05.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:47:05.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:47:05.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:47:05.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:47:05.921 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:47:05.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:47:05.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:47:05.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:47:05.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.782392 -999.00  +19.30  14.99     13   -9.70 1 1 1 1 1     0    0 29.28 -4.65 ZNESW 16.0 15.0 301.8 22.5 19.4 -28.1 19.3 -27.1 19.1 -27.0 19.4 -27.8
2025-11-03T20:47:05.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:47:05.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:47:05.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.782392
2025-11-03T20:47:05.928 [DEBUG] [Thread-122343] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:47:05.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:47:05.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:47:05.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:47:05.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:47:05.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:47:05.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:46:27', tmtdew=35.28, humidity=7.94, cloud=0.0, wind=16.52, temperature=19.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:47:02', seeing=1.18, atlas_timestamp='2025-11-03T18:46:38.669', atlas_cloud=1, atlas_rain=1, zp_data=[0.00274999999999892, 0.08375000000000021, 0.036749999999999616, 0.04099999999999859, 0.0649999999999995, 0.08075000000000188, -0.05400000000000027, 0.0002500000000011937, -0.1440000000000019, 0.0389999999999997, 0.062249999999998806, 0.06300000000000061, 0.18900000000000006, -0.09975000000000023, -0.09200000000000053, -0.2890000000000015, -0.05424999999999969, 0.067499999999999, 0.17600000000000016, 0.12374999999999758, 0.12799999999999834, -0.09225000000000172, -0.12524999999999942, -0.81325, -0.028999999999999915, 0.14100000000000001, 0.20374999999999943, 0.17950000000000088, -0.0030000000000001137, 0.1255000000000024, 0.16900000000000048, -0.4764999999999997, -0.04225000000000101], zp_timestamp='2025-11-03T18:46:00')
2025-11-03T20:47:06.037 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:47:06.048 [DEBUG] [Thread-122346] [transport.py] [_log()] starting thread (client mode): 0xed36bc0
2025-11-03T20:47:06.048 [DEBUG] [Thread-122346] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:47:06.063 [DEBUG] [Thread-122346] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:47:06.063 [INFO] [Thread-122346] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:47:06.071 [DEBUG] [Thread-122346] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:47:06.071 [DEBUG] [Thread-122346] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:47:06.071 [DEBUG] [Thread-122346] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:47:06.071 [DEBUG] [Thread-122346] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:47:06.071 [DEBUG] [Thread-122346] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:47:06.072 [DEBUG] [Thread-122346] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:47:06.072 [DEBUG] [Thread-122346] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:47:06.072 [DEBUG] [Thread-122346] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:47:06.072 [DEBUG] [Thread-122346] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:47:06.072 [DEBUG] [Thread-122346] [transport.py] [_log()] client lang: <none>
2025-11-03T20:47:06.072 [DEBUG] [Thread-122346] [transport.py] [_log()] server lang: <none>
2025-11-03T20:47:06.072 [DEBUG] [Thread-122346] [transport.py] [_log()] kex follows: False
2025-11-03T20:47:06.072 [DEBUG] [Thread-122346] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:47:06.072 [DEBUG] [Thread-122346] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:47:06.072 [DEBUG] [Thread-122346] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:47:06.072 [DEBUG] [Thread-122346] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:47:06.072 [DEBUG] [Thread-122346] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:47:06.072 [DEBUG] [Thread-122346] [transport.py] [_log()] Compression: none
2025-11-03T20:47:06.072 [DEBUG] [Thread-122346] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:47:06.126 [DEBUG] [Thread-122346] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:47:06.127 [DEBUG] [Thread-122346] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:47:06.127 [DEBUG] [Thread-122346] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:47:06.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:47:06.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:47:06.183 [DEBUG] [Thread-122346] [transport.py] [_log()] userauth is OK
2025-11-03T20:47:06.183 [DEBUG] [Thread-122346] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:47:06.183 [DEBUG] [Thread-122346] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:47:06.183 [DEBUG] [Thread-122346] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:47:06.183 [DEBUG] [Thread-122346] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:47:06.200 [INFO] [Thread-122346] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:47:06.200 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:47:06.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:47:06.304 [DEBUG] [Thread-122348 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:47:07.037 [DEBUG] [Thread-122346] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:47:07.037 [DEBUG] [Thread-122346] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:47:07.086 [DEBUG] [Thread-122346] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:47:07.086 [DEBUG] [Thread-122346] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:47:07.095 [DEBUG] [Thread-122346] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:47:07.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:47:07.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:47:07.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:47:07.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:47:07.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:47:07.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:47:07.131 [DEBUG] [Thread-122346] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:47:15.354 [DEBUG] [Thread-122349 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:47:21.525 [DEBUG] [Thread-122350 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:47:33.055 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:47:33.068 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:47:36.663 [DEBUG] [Thread-122351 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:47:37.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:47:37.155 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:47:37.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:47:38.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 47, 1), 35.18, 8.01, 0.0, 17.31, 19.07, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:47:38.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:47:01
2025-11-03T20:47:38.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:47:38.871 [DEBUG] [Thread-122352] [transport.py] [_log()] starting thread (client mode): 0xedc6440
2025-11-03T20:47:38.872 [DEBUG] [Thread-122352] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:47:38.873 [DEBUG] [Thread-122352] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:47:38.873 [INFO] [Thread-122352] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:47:38.879 [DEBUG] [Thread-122352] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:47:38.879 [DEBUG] [Thread-122352] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:47:38.879 [DEBUG] [Thread-122352] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:47:38.879 [DEBUG] [Thread-122352] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:47:38.879 [DEBUG] [Thread-122352] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:47:38.879 [DEBUG] [Thread-122352] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:47:38.879 [DEBUG] [Thread-122352] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:47:38.879 [DEBUG] [Thread-122352] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:47:38.879 [DEBUG] [Thread-122352] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:47:38.879 [DEBUG] [Thread-122352] [transport.py] [_log()] client lang: <none>
2025-11-03T20:47:38.879 [DEBUG] [Thread-122352] [transport.py] [_log()] server lang: <none>
2025-11-03T20:47:38.879 [DEBUG] [Thread-122352] [transport.py] [_log()] kex follows: False
2025-11-03T20:47:38.880 [DEBUG] [Thread-122352] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:47:38.880 [DEBUG] [Thread-122352] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:47:38.880 [DEBUG] [Thread-122352] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:47:38.880 [DEBUG] [Thread-122352] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:47:38.880 [DEBUG] [Thread-122352] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:47:38.880 [DEBUG] [Thread-122352] [transport.py] [_log()] Compression: none
2025-11-03T20:47:38.880 [DEBUG] [Thread-122352] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:47:38.915 [DEBUG] [Thread-122352] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:47:38.919 [DEBUG] [Thread-122352] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:47:38.920 [DEBUG] [Thread-122352] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:47:38.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:47:38.923 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:47:38.924 [DEBUG] [Thread-122352] [transport.py] [_log()] userauth is OK
2025-11-03T20:47:38.925 [DEBUG] [Thread-122352] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:47:38.925 [DEBUG] [Thread-122352] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:47:38.925 [DEBUG] [Thread-122352] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:47:38.925 [DEBUG] [Thread-122352] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:47:38.943 [INFO] [Thread-122352] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:47:38.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:47:39.590 [DEBUG] [Thread-122352] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:47:39.590 [DEBUG] [Thread-122352] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:47:39.591 [DEBUG] [Thread-122352] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:47:39.631 [DEBUG] [Thread-122352] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:47:39.631 [DEBUG] [Thread-122352] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:47:39.634 [DEBUG] [Thread-122352] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:47:39.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:47:39.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:47:39.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:47:39.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:47:39.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:47:39.657 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:47:39.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:47:39.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:47:39.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:47:39.659 [DEBUG] [Thread-122352] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:47:39.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.782740 -999.00  +19.20  13.75     13   -9.80 1 1 1 1 1     0    0 29.64 -5.79 ZNESW 15.9 13.8 307.0 22.9 19.4 -28.2 19.3 -27.0 19.1 -26.9 19.4 -27.7
2025-11-03T20:47:39.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:47:39.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:47:39.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.782740
2025-11-03T20:47:39.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:47:39.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:47:39.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:47:39.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:47:39.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:47:39.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:47:01', tmtdew=35.18, humidity=8.01, cloud=0.0, wind=17.31, temperature=19.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:47:36', seeing=1.15, atlas_timestamp='2025-11-03T18:47:08.736', atlas_cloud=1, atlas_rain=1, zp_data=[0.00274999999999892, 0.08375000000000021, 0.036749999999999616, 0.04099999999999859, 0.0649999999999995, 0.08075000000000188, -0.05400000000000027, 0.0002500000000011937, -0.1440000000000019, 0.0389999999999997, 0.062249999999998806, 0.06300000000000061, 0.18900000000000006, -0.09975000000000023, -0.09200000000000053, -0.2890000000000015, -0.05424999999999969, 0.067499999999999, 0.17600000000000016, 0.12374999999999758, 0.12799999999999834, -0.09225000000000172, -0.12524999999999942, -0.81325, -0.028999999999999915, 0.14100000000000001, 0.20374999999999943, 0.17950000000000088, -0.0030000000000001137, 0.1255000000000024, 0.16900000000000048, -0.4764999999999997, -0.04225000000000101], zp_timestamp='2025-11-03T18:46:00')
2025-11-03T20:47:39.770 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:47:39.784 [DEBUG] [Thread-122355] [transport.py] [_log()] starting thread (client mode): 0xed134c0
2025-11-03T20:47:39.784 [DEBUG] [Thread-122355] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:47:39.799 [DEBUG] [Thread-122355] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:47:39.799 [INFO] [Thread-122355] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:47:39.807 [DEBUG] [Thread-122355] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:47:39.807 [DEBUG] [Thread-122355] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:47:39.807 [DEBUG] [Thread-122355] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:47:39.807 [DEBUG] [Thread-122355] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:47:39.807 [DEBUG] [Thread-122355] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:47:39.807 [DEBUG] [Thread-122355] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:47:39.807 [DEBUG] [Thread-122355] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:47:39.807 [DEBUG] [Thread-122355] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:47:39.807 [DEBUG] [Thread-122355] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:47:39.807 [DEBUG] [Thread-122355] [transport.py] [_log()] client lang: <none>
2025-11-03T20:47:39.807 [DEBUG] [Thread-122355] [transport.py] [_log()] server lang: <none>
2025-11-03T20:47:39.807 [DEBUG] [Thread-122355] [transport.py] [_log()] kex follows: False
2025-11-03T20:47:39.807 [DEBUG] [Thread-122355] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:47:39.807 [DEBUG] [Thread-122355] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:47:39.807 [DEBUG] [Thread-122355] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:47:39.807 [DEBUG] [Thread-122355] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:47:39.807 [DEBUG] [Thread-122355] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:47:39.807 [DEBUG] [Thread-122355] [transport.py] [_log()] Compression: none
2025-11-03T20:47:39.807 [DEBUG] [Thread-122355] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:47:39.867 [DEBUG] [Thread-122355] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:47:39.868 [DEBUG] [Thread-122355] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:47:39.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:47:39.869 [DEBUG] [Thread-122355] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:47:39.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:47:39.927 [DEBUG] [Thread-122355] [transport.py] [_log()] userauth is OK
2025-11-03T20:47:39.928 [DEBUG] [Thread-122355] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:47:39.928 [DEBUG] [Thread-122355] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:47:39.928 [DEBUG] [Thread-122355] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:47:39.928 [DEBUG] [Thread-122355] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:47:39.955 [INFO] [Thread-122355] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:47:39.955 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:47:39.956 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:47:40.766 [DEBUG] [Thread-122355] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:47:40.766 [DEBUG] [Thread-122355] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:47:40.815 [DEBUG] [Thread-122355] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:47:40.815 [DEBUG] [Thread-122355] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:47:40.824 [DEBUG] [Thread-122355] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:47:40.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:47:40.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:47:40.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:47:40.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:47:40.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:47:40.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:47:40.863 [DEBUG] [Thread-122355] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:47:51.828 [DEBUG] [Thread-122357 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:48:07.043 [DEBUG] [Thread-122358 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:48:10.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:48:10.875 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:48:10.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:48:12.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 47, 35), 35.11, 8.02, 0.0, 16.8, 19.09, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:48:12.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:47:35
2025-11-03T20:48:12.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:48:12.684 [DEBUG] [Thread-122359] [transport.py] [_log()] starting thread (client mode): 0xed355a0
2025-11-03T20:48:12.686 [DEBUG] [Thread-122359] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:48:12.686 [DEBUG] [Thread-122359] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:48:12.686 [INFO] [Thread-122359] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:48:12.694 [DEBUG] [Thread-122359] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:48:12.694 [DEBUG] [Thread-122359] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:48:12.694 [DEBUG] [Thread-122359] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:48:12.694 [DEBUG] [Thread-122359] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:48:12.694 [DEBUG] [Thread-122359] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:48:12.694 [DEBUG] [Thread-122359] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:48:12.694 [DEBUG] [Thread-122359] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:48:12.694 [DEBUG] [Thread-122359] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:48:12.695 [DEBUG] [Thread-122359] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:48:12.695 [DEBUG] [Thread-122359] [transport.py] [_log()] client lang: <none>
2025-11-03T20:48:12.695 [DEBUG] [Thread-122359] [transport.py] [_log()] server lang: <none>
2025-11-03T20:48:12.695 [DEBUG] [Thread-122359] [transport.py] [_log()] kex follows: False
2025-11-03T20:48:12.695 [DEBUG] [Thread-122359] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:48:12.695 [DEBUG] [Thread-122359] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:48:12.696 [DEBUG] [Thread-122359] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:48:12.696 [DEBUG] [Thread-122359] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:48:12.696 [DEBUG] [Thread-122359] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:48:12.696 [DEBUG] [Thread-122359] [transport.py] [_log()] Compression: none
2025-11-03T20:48:12.696 [DEBUG] [Thread-122359] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:48:12.729 [DEBUG] [Thread-122359] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:48:12.734 [DEBUG] [Thread-122359] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:48:12.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:48:12.738 [DEBUG] [Thread-122359] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:48:12.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:48:12.741 [DEBUG] [Thread-122359] [transport.py] [_log()] userauth is OK
2025-11-03T20:48:12.741 [DEBUG] [Thread-122359] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:48:12.741 [DEBUG] [Thread-122359] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:48:12.741 [DEBUG] [Thread-122359] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:48:12.741 [DEBUG] [Thread-122359] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:48:12.760 [INFO] [Thread-122359] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:48:12.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:48:13.399 [DEBUG] [Thread-122359] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:48:13.399 [DEBUG] [Thread-122359] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:48:13.400 [DEBUG] [Thread-122359] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:48:13.440 [DEBUG] [Thread-122359] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:48:13.440 [DEBUG] [Thread-122359] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:48:13.442 [DEBUG] [Thread-122359] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:48:13.455 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:48:13.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:48:13.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:48:13.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:48:13.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:48:13.465 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:48:13.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:48:13.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:48:13.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:48:13.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.783087 -999.00  +19.20  16.97     13   -9.70 1 1 1 1 1     0    0 29.16 -7.43 ZNESW 14.5 17.0 288.2 20.8 19.4 -28.1 19.3 -27.2 19.1 -27.1 19.3 -27.9
2025-11-03T20:48:13.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:48:13.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:48:13.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.783087
2025-11-03T20:48:13.472 [DEBUG] [Thread-122359] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:48:13.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:48:13.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:48:13.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:48:13.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:48:13.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:48:13.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:47:35', tmtdew=35.11, humidity=8.02, cloud=0.0, wind=16.8, temperature=19.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:48:10', seeing=1.2, atlas_timestamp='2025-11-03T18:47:38.717', atlas_cloud=1, atlas_rain=1, zp_data=[0.00274999999999892, 0.08375000000000021, 0.036749999999999616, 0.04099999999999859, 0.0649999999999995, 0.08075000000000188, -0.05400000000000027, 0.0002500000000011937, -0.1440000000000019, 0.0389999999999997, 0.062249999999998806, 0.06300000000000061, 0.18900000000000006, -0.09975000000000023, -0.09200000000000053, -0.2890000000000015, -0.05424999999999969, 0.067499999999999, 0.17600000000000016, 0.12374999999999758, 0.12799999999999834, -0.09225000000000172, -0.12524999999999942, -0.81325, -0.028999999999999915, 0.14100000000000001, 0.20374999999999943, 0.17950000000000088, -0.0030000000000001137, 0.1255000000000024, 0.16900000000000048, -0.4764999999999997, -0.04225000000000101], zp_timestamp='2025-11-03T18:46:00')
2025-11-03T20:48:13.568 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:48:13.580 [DEBUG] [Thread-122362] [transport.py] [_log()] starting thread (client mode): 0xedc4e20
2025-11-03T20:48:13.580 [DEBUG] [Thread-122362] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:48:13.595 [DEBUG] [Thread-122362] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:48:13.595 [INFO] [Thread-122362] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:48:13.604 [DEBUG] [Thread-122362] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:48:13.604 [DEBUG] [Thread-122362] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:48:13.604 [DEBUG] [Thread-122362] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:48:13.604 [DEBUG] [Thread-122362] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:48:13.604 [DEBUG] [Thread-122362] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:48:13.604 [DEBUG] [Thread-122362] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:48:13.604 [DEBUG] [Thread-122362] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:48:13.604 [DEBUG] [Thread-122362] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:48:13.604 [DEBUG] [Thread-122362] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:48:13.604 [DEBUG] [Thread-122362] [transport.py] [_log()] client lang: <none>
2025-11-03T20:48:13.604 [DEBUG] [Thread-122362] [transport.py] [_log()] server lang: <none>
2025-11-03T20:48:13.604 [DEBUG] [Thread-122362] [transport.py] [_log()] kex follows: False
2025-11-03T20:48:13.604 [DEBUG] [Thread-122362] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:48:13.605 [DEBUG] [Thread-122362] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:48:13.605 [DEBUG] [Thread-122362] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:48:13.605 [DEBUG] [Thread-122362] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:48:13.605 [DEBUG] [Thread-122362] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:48:13.605 [DEBUG] [Thread-122362] [transport.py] [_log()] Compression: none
2025-11-03T20:48:13.605 [DEBUG] [Thread-122362] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:48:13.664 [DEBUG] [Thread-122362] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:48:13.665 [DEBUG] [Thread-122362] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:48:13.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:48:13.665 [DEBUG] [Thread-122362] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:48:13.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:48:13.723 [DEBUG] [Thread-122362] [transport.py] [_log()] userauth is OK
2025-11-03T20:48:13.723 [DEBUG] [Thread-122362] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:48:13.723 [DEBUG] [Thread-122362] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:48:13.723 [DEBUG] [Thread-122362] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:48:13.723 [DEBUG] [Thread-122362] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:48:13.740 [INFO] [Thread-122362] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:48:13.741 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:48:13.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:48:14.576 [DEBUG] [Thread-122362] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:48:14.577 [DEBUG] [Thread-122362] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:48:14.625 [DEBUG] [Thread-122362] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:48:14.625 [DEBUG] [Thread-122362] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:48:14.635 [DEBUG] [Thread-122362] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:48:14.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:48:14.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:48:14.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:48:14.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:48:14.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:48:14.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:48:14.672 [DEBUG] [Thread-122362] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:48:15.780 [DEBUG] [Thread-122364 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:48:22.147 [DEBUG] [Thread-122365 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:48:33.292 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:48:33.303 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:48:37.304 [DEBUG] [Thread-122366 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:48:44.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:48:44.711 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:48:44.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:48:45.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 48, 9), 35.09, 8.04, 0.0, 16.75, 19.09, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:48:45.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:48:09
2025-11-03T20:48:45.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:48:46.093 [DEBUG] [Thread-122367] [transport.py] [_log()] starting thread (client mode): 0xedc6020
2025-11-03T20:48:46.094 [DEBUG] [Thread-122367] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:48:46.103 [DEBUG] [Thread-122367] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:48:46.103 [INFO] [Thread-122367] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:48:46.108 [DEBUG] [Thread-122367] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:48:46.108 [DEBUG] [Thread-122367] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:48:46.108 [DEBUG] [Thread-122367] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:48:46.108 [DEBUG] [Thread-122367] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:48:46.108 [DEBUG] [Thread-122367] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:48:46.108 [DEBUG] [Thread-122367] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:48:46.108 [DEBUG] [Thread-122367] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:48:46.108 [DEBUG] [Thread-122367] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:48:46.108 [DEBUG] [Thread-122367] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:48:46.108 [DEBUG] [Thread-122367] [transport.py] [_log()] client lang: <none>
2025-11-03T20:48:46.108 [DEBUG] [Thread-122367] [transport.py] [_log()] server lang: <none>
2025-11-03T20:48:46.108 [DEBUG] [Thread-122367] [transport.py] [_log()] kex follows: False
2025-11-03T20:48:46.108 [DEBUG] [Thread-122367] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:48:46.109 [DEBUG] [Thread-122367] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:48:46.109 [DEBUG] [Thread-122367] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:48:46.109 [DEBUG] [Thread-122367] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:48:46.109 [DEBUG] [Thread-122367] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:48:46.109 [DEBUG] [Thread-122367] [transport.py] [_log()] Compression: none
2025-11-03T20:48:46.109 [DEBUG] [Thread-122367] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:48:46.138 [DEBUG] [Thread-122367] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:48:46.141 [DEBUG] [Thread-122367] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:48:46.142 [DEBUG] [Thread-122367] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:48:46.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:48:46.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:48:46.145 [DEBUG] [Thread-122367] [transport.py] [_log()] userauth is OK
2025-11-03T20:48:46.145 [DEBUG] [Thread-122367] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:48:46.145 [DEBUG] [Thread-122367] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:48:46.145 [DEBUG] [Thread-122367] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:48:46.145 [DEBUG] [Thread-122367] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:48:46.174 [INFO] [Thread-122367] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:48:46.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:48:46.833 [DEBUG] [Thread-122367] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:48:46.833 [DEBUG] [Thread-122367] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:48:46.833 [DEBUG] [Thread-122367] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:48:46.874 [DEBUG] [Thread-122367] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:48:46.875 [DEBUG] [Thread-122367] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:48:46.877 [DEBUG] [Thread-122367] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:48:46.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:48:46.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:48:46.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:48:46.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:48:46.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:48:46.898 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:48:46.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:48:46.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:48:46.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:48:46.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.783781 -999.00  +19.20  17.25     13   -9.70 1 1 1 1 1     0    0 28.82 -11.86 ZNESW 15.8 17.2 310.4 20.3 19.4 -28.1 19.2 -26.9 19.1 -26.8 19.3 -27.5
2025-11-03T20:48:46.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:48:46.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:48:46.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.783781
2025-11-03T20:48:46.905 [DEBUG] [Thread-122367] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:48:46.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:48:46.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:48:46.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:48:46.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:48:46.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:48:46.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:48:09', tmtdew=35.09, humidity=8.04, cloud=0.0, wind=16.75, temperature=19.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:48:43', seeing=1.25, atlas_timestamp='2025-11-03T18:48:38.678', atlas_cloud=1, atlas_rain=1, zp_data=[0.00274999999999892, 0.08375000000000021, 0.036749999999999616, 0.04099999999999859, 0.0649999999999995, 0.08075000000000188, -0.05400000000000027, 0.0002500000000011937, -0.1440000000000019, 0.0389999999999997, 0.062249999999998806, 0.06300000000000061, 0.18900000000000006, -0.09975000000000023, -0.09200000000000053, -0.2890000000000015, -0.05424999999999969, 0.067499999999999, 0.17600000000000016, 0.12374999999999758, 0.12799999999999834, -0.09225000000000172, -0.12524999999999942, -0.81325, -0.028999999999999915, 0.14100000000000001, 0.20374999999999943, 0.17950000000000088, -0.0030000000000001137, 0.1255000000000024, 0.16900000000000048, -0.4764999999999997, -0.04225000000000101], zp_timestamp='2025-11-03T18:46:00')
2025-11-03T20:48:47.002 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:48:47.015 [DEBUG] [Thread-122370] [transport.py] [_log()] starting thread (client mode): 0xedc6c50
2025-11-03T20:48:47.016 [DEBUG] [Thread-122370] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:48:47.030 [DEBUG] [Thread-122370] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:48:47.030 [INFO] [Thread-122370] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:48:47.038 [DEBUG] [Thread-122370] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:48:47.038 [DEBUG] [Thread-122370] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:48:47.038 [DEBUG] [Thread-122370] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:48:47.038 [DEBUG] [Thread-122370] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:48:47.038 [DEBUG] [Thread-122370] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:48:47.038 [DEBUG] [Thread-122370] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:48:47.038 [DEBUG] [Thread-122370] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:48:47.038 [DEBUG] [Thread-122370] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:48:47.038 [DEBUG] [Thread-122370] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:48:47.039 [DEBUG] [Thread-122370] [transport.py] [_log()] client lang: <none>
2025-11-03T20:48:47.039 [DEBUG] [Thread-122370] [transport.py] [_log()] server lang: <none>
2025-11-03T20:48:47.039 [DEBUG] [Thread-122370] [transport.py] [_log()] kex follows: False
2025-11-03T20:48:47.039 [DEBUG] [Thread-122370] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:48:47.039 [DEBUG] [Thread-122370] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:48:47.039 [DEBUG] [Thread-122370] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:48:47.039 [DEBUG] [Thread-122370] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:48:47.039 [DEBUG] [Thread-122370] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:48:47.039 [DEBUG] [Thread-122370] [transport.py] [_log()] Compression: none
2025-11-03T20:48:47.039 [DEBUG] [Thread-122370] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:48:47.096 [DEBUG] [Thread-122370] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:48:47.096 [DEBUG] [Thread-122370] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:48:47.097 [DEBUG] [Thread-122370] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:48:47.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:48:47.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:48:47.155 [DEBUG] [Thread-122370] [transport.py] [_log()] userauth is OK
2025-11-03T20:48:47.155 [DEBUG] [Thread-122370] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:48:47.155 [DEBUG] [Thread-122370] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:48:47.155 [DEBUG] [Thread-122370] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:48:47.155 [DEBUG] [Thread-122370] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:48:47.174 [INFO] [Thread-122370] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:48:47.174 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:48:47.175 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:48:48.034 [DEBUG] [Thread-122370] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:48:48.035 [DEBUG] [Thread-122370] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:48:48.083 [DEBUG] [Thread-122370] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:48:48.083 [DEBUG] [Thread-122370] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:48:48.092 [DEBUG] [Thread-122370] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:48:48.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:48:48.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:48:48.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:48:48.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:48:48.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:48:48.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:48:48.126 [DEBUG] [Thread-122370] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:48:52.399 [DEBUG] [Thread-122372 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:49:07.581 [DEBUG] [Thread-122373 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:49:16.055 [DEBUG] [Thread-122374 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:49:18.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:49:18.126 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:49:18.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:49:19.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 48, 43), 35.02, 8.04, 0.0, 15.65, 18.97, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:49:19.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:48:43
2025-11-03T20:49:19.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:49:19.410 [DEBUG] [Thread-122375] [transport.py] [_log()] starting thread (client mode): 0xed8a920
2025-11-03T20:49:19.411 [DEBUG] [Thread-122375] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:49:19.419 [DEBUG] [Thread-122375] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:49:19.419 [INFO] [Thread-122375] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:49:19.424 [DEBUG] [Thread-122375] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:49:19.424 [DEBUG] [Thread-122375] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:49:19.424 [DEBUG] [Thread-122375] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:49:19.424 [DEBUG] [Thread-122375] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:49:19.424 [DEBUG] [Thread-122375] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:49:19.424 [DEBUG] [Thread-122375] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:49:19.424 [DEBUG] [Thread-122375] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:49:19.424 [DEBUG] [Thread-122375] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:49:19.424 [DEBUG] [Thread-122375] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:49:19.425 [DEBUG] [Thread-122375] [transport.py] [_log()] client lang: <none>
2025-11-03T20:49:19.425 [DEBUG] [Thread-122375] [transport.py] [_log()] server lang: <none>
2025-11-03T20:49:19.425 [DEBUG] [Thread-122375] [transport.py] [_log()] kex follows: False
2025-11-03T20:49:19.425 [DEBUG] [Thread-122375] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:49:19.426 [DEBUG] [Thread-122375] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:49:19.426 [DEBUG] [Thread-122375] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:49:19.426 [DEBUG] [Thread-122375] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:49:19.426 [DEBUG] [Thread-122375] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:49:19.426 [DEBUG] [Thread-122375] [transport.py] [_log()] Compression: none
2025-11-03T20:49:19.426 [DEBUG] [Thread-122375] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:49:19.450 [DEBUG] [Thread-122375] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:49:19.453 [DEBUG] [Thread-122375] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:49:19.455 [DEBUG] [Thread-122375] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:49:19.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:49:19.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:49:19.458 [DEBUG] [Thread-122375] [transport.py] [_log()] userauth is OK
2025-11-03T20:49:19.459 [DEBUG] [Thread-122375] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:49:19.459 [DEBUG] [Thread-122375] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:49:19.459 [DEBUG] [Thread-122375] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:49:19.459 [DEBUG] [Thread-122375] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:49:19.471 [INFO] [Thread-122375] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:49:19.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:49:20.102 [DEBUG] [Thread-122375] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:49:20.102 [DEBUG] [Thread-122375] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:49:20.103 [DEBUG] [Thread-122375] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:49:20.144 [DEBUG] [Thread-122375] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:49:20.144 [DEBUG] [Thread-122375] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:49:20.147 [DEBUG] [Thread-122375] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:49:20.159 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:49:20.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:49:20.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:49:20.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:49:20.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:49:20.171 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:49:20.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:49:20.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:49:20.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:49:20.173 [DEBUG] [Thread-122375] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:49:20.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.784128 -999.00  +19.20  19.37     13   -9.70 1 1 1 1 1     0    0 29.57 -13.70 ZNESW 16.6 19.4 300.7 23.9 19.4 -28.0 19.2 -26.9 19.0 -26.8 19.3 -27.6
2025-11-03T20:49:20.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:49:20.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:49:20.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.784128
2025-11-03T20:49:20.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:49:20.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:49:20.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:49:20.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:49:20.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:49:20.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:48:43', tmtdew=35.02, humidity=8.04, cloud=0.0, wind=15.65, temperature=18.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:49:17', seeing=1.18, atlas_timestamp='2025-11-03T18:49:08.659', atlas_cloud=1, atlas_rain=1, zp_data=[0.00274999999999892, 0.08375000000000021, 0.036749999999999616, 0.04099999999999859, 0.0649999999999995, 0.08075000000000188, -0.05400000000000027, 0.0002500000000011937, -0.1440000000000019, 0.0389999999999997, 0.062249999999998806, 0.06300000000000061, 0.18900000000000006, -0.09975000000000023, -0.09200000000000053, -0.2890000000000015, -0.05424999999999969, 0.067499999999999, 0.17600000000000016, 0.12374999999999758, 0.12799999999999834, -0.09225000000000172, -0.12524999999999942, -0.81325, -0.028999999999999915, 0.14100000000000001, 0.20374999999999943, 0.17950000000000088, -0.0030000000000001137, 0.1255000000000024, 0.16900000000000048, -0.4764999999999997, -0.04225000000000101], zp_timestamp='2025-11-03T18:46:00')
2025-11-03T20:49:20.279 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:49:20.292 [DEBUG] [Thread-122378] [transport.py] [_log()] starting thread (client mode): 0x141d91e0
2025-11-03T20:49:20.292 [DEBUG] [Thread-122378] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:49:20.305 [DEBUG] [Thread-122378] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:49:20.306 [INFO] [Thread-122378] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:49:20.313 [DEBUG] [Thread-122378] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:49:20.313 [DEBUG] [Thread-122378] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:49:20.313 [DEBUG] [Thread-122378] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:49:20.314 [DEBUG] [Thread-122378] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:49:20.314 [DEBUG] [Thread-122378] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:49:20.314 [DEBUG] [Thread-122378] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:49:20.314 [DEBUG] [Thread-122378] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:49:20.314 [DEBUG] [Thread-122378] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:49:20.314 [DEBUG] [Thread-122378] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:49:20.314 [DEBUG] [Thread-122378] [transport.py] [_log()] client lang: <none>
2025-11-03T20:49:20.314 [DEBUG] [Thread-122378] [transport.py] [_log()] server lang: <none>
2025-11-03T20:49:20.314 [DEBUG] [Thread-122378] [transport.py] [_log()] kex follows: False
2025-11-03T20:49:20.314 [DEBUG] [Thread-122378] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:49:20.315 [DEBUG] [Thread-122378] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:49:20.315 [DEBUG] [Thread-122378] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:49:20.316 [DEBUG] [Thread-122378] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:49:20.316 [DEBUG] [Thread-122378] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:49:20.316 [DEBUG] [Thread-122378] [transport.py] [_log()] Compression: none
2025-11-03T20:49:20.316 [DEBUG] [Thread-122378] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:49:20.370 [DEBUG] [Thread-122378] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:49:20.371 [DEBUG] [Thread-122378] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:49:20.371 [DEBUG] [Thread-122378] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:49:20.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:49:20.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:49:20.429 [DEBUG] [Thread-122378] [transport.py] [_log()] userauth is OK
2025-11-03T20:49:20.429 [DEBUG] [Thread-122378] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:49:20.429 [DEBUG] [Thread-122378] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:49:20.429 [DEBUG] [Thread-122378] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:49:20.429 [DEBUG] [Thread-122378] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:49:20.451 [INFO] [Thread-122378] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:49:20.451 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:49:20.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:49:21.259 [DEBUG] [Thread-122378] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:49:21.259 [DEBUG] [Thread-122378] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:49:21.307 [DEBUG] [Thread-122378] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:49:21.308 [DEBUG] [Thread-122378] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:49:21.318 [DEBUG] [Thread-122378] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:49:21.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:49:21.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:49:21.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:49:21.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:49:21.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:49:21.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:49:21.362 [DEBUG] [Thread-122378] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:49:22.643 [DEBUG] [Thread-122380 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:49:31.509 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:49:33.504 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:49:33.505 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:49:37.569 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:49:37.727 [DEBUG] [Thread-122381 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:49:40.620 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:49:46.002 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:49:51.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:49:51.381 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:49:51.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:49:52.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 49, 16), 34.97, 8.07, 0.0, 15.4, 18.97, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:49:52.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:49:16
2025-11-03T20:49:52.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:49:52.499 [DEBUG] [Thread-122382] [transport.py] [_log()] starting thread (client mode): 0xedc7d60
2025-11-03T20:49:52.499 [DEBUG] [Thread-122382] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:49:52.521 [DEBUG] [Thread-122382] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:49:52.521 [INFO] [Thread-122382] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:49:52.523 [DEBUG] [Thread-122382] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:49:52.523 [DEBUG] [Thread-122382] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:49:52.523 [DEBUG] [Thread-122382] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:49:52.523 [DEBUG] [Thread-122382] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:49:52.523 [DEBUG] [Thread-122382] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:49:52.523 [DEBUG] [Thread-122382] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:49:52.523 [DEBUG] [Thread-122382] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:49:52.523 [DEBUG] [Thread-122382] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:49:52.523 [DEBUG] [Thread-122382] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:49:52.523 [DEBUG] [Thread-122382] [transport.py] [_log()] client lang: <none>
2025-11-03T20:49:52.523 [DEBUG] [Thread-122382] [transport.py] [_log()] server lang: <none>
2025-11-03T20:49:52.523 [DEBUG] [Thread-122382] [transport.py] [_log()] kex follows: False
2025-11-03T20:49:52.523 [DEBUG] [Thread-122382] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:49:52.523 [DEBUG] [Thread-122382] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:49:52.523 [DEBUG] [Thread-122382] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:49:52.523 [DEBUG] [Thread-122382] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:49:52.523 [DEBUG] [Thread-122382] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:49:52.523 [DEBUG] [Thread-122382] [transport.py] [_log()] Compression: none
2025-11-03T20:49:52.523 [DEBUG] [Thread-122382] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:49:52.539 [DEBUG] [Thread-122382] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:49:52.540 [DEBUG] [Thread-122382] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:49:52.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:49:52.540 [DEBUG] [Thread-122382] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:49:52.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:49:52.540 [DEBUG] [Thread-122382] [transport.py] [_log()] userauth is OK
2025-11-03T20:49:52.541 [DEBUG] [Thread-122382] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:49:52.541 [DEBUG] [Thread-122382] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:49:52.541 [DEBUG] [Thread-122382] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:49:52.541 [DEBUG] [Thread-122382] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:49:52.550 [INFO] [Thread-122382] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:49:52.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:49:52.758 [DEBUG] [Thread-122384 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:49:53.149 [DEBUG] [Thread-122382] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:49:53.149 [DEBUG] [Thread-122382] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:49:53.150 [DEBUG] [Thread-122382] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:49:53.190 [DEBUG] [Thread-122382] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:49:53.190 [DEBUG] [Thread-122382] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:49:53.193 [DEBUG] [Thread-122382] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:49:53.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:49:53.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:49:53.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:49:53.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:49:53.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:49:53.211 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:49:53.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:49:53.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:49:53.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:49:53.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.784128 -999.00  +19.20  19.37     13   -9.70 1 1 1 1 1     0    0 29.57 -13.70 ZNESW 16.6 19.4 300.7 23.9 19.4 -28.0 19.2 -26.9 19.0 -26.8 19.3 -27.6
2025-11-03T20:49:53.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:49:53.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:49:53.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.784128
2025-11-03T20:49:53.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:49:53.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:49:53.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:49:53.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:49:53.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:49:53.213 [DEBUG] [Thread-122382] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:49:53.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:49:16', tmtdew=34.97, humidity=8.07, cloud=0.0, wind=15.4, temperature=18.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:49:50', seeing=1.18, atlas_timestamp='2025-11-03T18:49:08.659', atlas_cloud=1, atlas_rain=1, zp_data=[0.00274999999999892, 0.08375000000000021, 0.036749999999999616, 0.04099999999999859, 0.0649999999999995, 0.08075000000000188, -0.05400000000000027, 0.0002500000000011937, -0.1440000000000019, 0.0389999999999997, 0.062249999999998806, 0.06300000000000061, 0.18900000000000006, -0.09975000000000023, -0.09200000000000053, -0.2890000000000015, -0.05424999999999969, 0.067499999999999, 0.17600000000000016, 0.12374999999999758, 0.12799999999999834, -0.09225000000000172, -0.12524999999999942, -0.81325, -0.028999999999999915, 0.14100000000000001, 0.20374999999999943, 0.17950000000000088, -0.0030000000000001137, 0.1255000000000024, 0.16900000000000048, -0.4764999999999997, -0.04225000000000101], zp_timestamp='2025-11-03T18:46:00')
2025-11-03T20:49:53.312 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:49:53.323 [DEBUG] [Thread-122386] [transport.py] [_log()] starting thread (client mode): 0xedc7790
2025-11-03T20:49:53.323 [DEBUG] [Thread-122386] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:49:53.338 [DEBUG] [Thread-122386] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:49:53.338 [INFO] [Thread-122386] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:49:53.345 [DEBUG] [Thread-122386] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:49:53.345 [DEBUG] [Thread-122386] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:49:53.345 [DEBUG] [Thread-122386] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:49:53.345 [DEBUG] [Thread-122386] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:49:53.345 [DEBUG] [Thread-122386] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:49:53.345 [DEBUG] [Thread-122386] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:49:53.346 [DEBUG] [Thread-122386] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:49:53.346 [DEBUG] [Thread-122386] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:49:53.346 [DEBUG] [Thread-122386] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:49:53.346 [DEBUG] [Thread-122386] [transport.py] [_log()] client lang: <none>
2025-11-03T20:49:53.346 [DEBUG] [Thread-122386] [transport.py] [_log()] server lang: <none>
2025-11-03T20:49:53.346 [DEBUG] [Thread-122386] [transport.py] [_log()] kex follows: False
2025-11-03T20:49:53.346 [DEBUG] [Thread-122386] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:49:53.346 [DEBUG] [Thread-122386] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:49:53.346 [DEBUG] [Thread-122386] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:49:53.346 [DEBUG] [Thread-122386] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:49:53.346 [DEBUG] [Thread-122386] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:49:53.346 [DEBUG] [Thread-122386] [transport.py] [_log()] Compression: none
2025-11-03T20:49:53.346 [DEBUG] [Thread-122386] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:49:53.405 [DEBUG] [Thread-122386] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:49:53.405 [DEBUG] [Thread-122386] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:49:53.406 [DEBUG] [Thread-122386] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:49:53.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:49:53.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:49:53.461 [DEBUG] [Thread-122386] [transport.py] [_log()] userauth is OK
2025-11-03T20:49:53.461 [DEBUG] [Thread-122386] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:49:53.462 [DEBUG] [Thread-122386] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:49:53.462 [DEBUG] [Thread-122386] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:49:53.462 [DEBUG] [Thread-122386] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:49:53.481 [INFO] [Thread-122386] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:49:53.482 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:49:53.482 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:49:54.277 [DEBUG] [Thread-122386] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:49:54.286 [DEBUG] [Thread-122386] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:49:54.325 [DEBUG] [Thread-122386] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:49:54.325 [DEBUG] [Thread-122386] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:49:54.333 [DEBUG] [Thread-122386] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:49:54.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:49:54.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:49:54.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:49:54.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:49:54.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:49:54.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:49:54.365 [DEBUG] [Thread-122386] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:50:07.793 [DEBUG] [Thread-122388 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:50:16.321 [DEBUG] [Thread-122389 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:50:22.850 [DEBUG] [Thread-122390 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:50:24.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:50:24.388 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:50:24.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:50:25.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 49, 49), 35.0, 8.06, 0.0, 17.43, 19.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:50:25.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:49:49
2025-11-03T20:50:25.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:50:25.435 [DEBUG] [Thread-122391] [transport.py] [_log()] starting thread (client mode): 0xed051e0
2025-11-03T20:50:25.435 [DEBUG] [Thread-122391] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:50:25.451 [DEBUG] [Thread-122391] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:50:25.451 [INFO] [Thread-122391] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:50:25.454 [DEBUG] [Thread-122391] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:50:25.454 [DEBUG] [Thread-122391] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:50:25.455 [DEBUG] [Thread-122391] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:50:25.455 [DEBUG] [Thread-122391] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:50:25.455 [DEBUG] [Thread-122391] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:50:25.455 [DEBUG] [Thread-122391] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:50:25.455 [DEBUG] [Thread-122391] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:50:25.455 [DEBUG] [Thread-122391] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:50:25.455 [DEBUG] [Thread-122391] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:50:25.455 [DEBUG] [Thread-122391] [transport.py] [_log()] client lang: <none>
2025-11-03T20:50:25.455 [DEBUG] [Thread-122391] [transport.py] [_log()] server lang: <none>
2025-11-03T20:50:25.455 [DEBUG] [Thread-122391] [transport.py] [_log()] kex follows: False
2025-11-03T20:50:25.455 [DEBUG] [Thread-122391] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:50:25.455 [DEBUG] [Thread-122391] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:50:25.455 [DEBUG] [Thread-122391] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:50:25.455 [DEBUG] [Thread-122391] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:50:25.456 [DEBUG] [Thread-122391] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:50:25.456 [DEBUG] [Thread-122391] [transport.py] [_log()] Compression: none
2025-11-03T20:50:25.456 [DEBUG] [Thread-122391] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:50:25.474 [DEBUG] [Thread-122391] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:50:25.475 [DEBUG] [Thread-122391] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:50:25.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:50:25.477 [DEBUG] [Thread-122391] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:50:25.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:50:25.518 [DEBUG] [Thread-122391] [transport.py] [_log()] userauth is OK
2025-11-03T20:50:25.518 [DEBUG] [Thread-122391] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:50:25.518 [DEBUG] [Thread-122391] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:50:25.519 [DEBUG] [Thread-122391] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:50:25.519 [DEBUG] [Thread-122391] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:50:25.551 [INFO] [Thread-122391] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:50:25.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:50:27.582 [DEBUG] [Thread-122391] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:50:27.582 [DEBUG] [Thread-122391] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:50:27.583 [DEBUG] [Thread-122391] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:50:27.623 [DEBUG] [Thread-122391] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:50:27.624 [DEBUG] [Thread-122391] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:50:27.626 [DEBUG] [Thread-122391] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:50:27.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:50:27.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:50:27.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:50:27.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:50:27.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:50:27.648 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:50:27.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:50:27.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:50:27.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:50:27.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.784476 -999.00  +19.20  15.07     13   -9.70 1 1 1 1 1     0    0 28.76 -14.86 ZNESW 13.5 15.1 305.4 22.4 19.3 -28.0 19.2 -26.9 19.0 -26.7 19.2 -27.4
2025-11-03T20:50:27.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:50:27.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:50:27.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.784476
2025-11-03T20:50:27.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:50:27.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:50:27.652 [DEBUG] [Thread-122391] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:50:27.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:50:27.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:50:27.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:50:27.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:49:49', tmtdew=35.0, humidity=8.06, cloud=0.0, wind=17.43, temperature=19.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:50:22', seeing=1.18, atlas_timestamp='2025-11-03T18:49:38.726', atlas_cloud=1, atlas_rain=1, zp_data=[0.00274999999999892, 0.08375000000000021, 0.036749999999999616, 0.04099999999999859, 0.0649999999999995, 0.08075000000000188, -0.05400000000000027, 0.0002500000000011937, -0.1440000000000019, 0.0389999999999997, 0.062249999999998806, 0.06300000000000061, 0.18900000000000006, -0.09975000000000023, -0.09200000000000053, -0.2890000000000015, -0.05424999999999969, 0.067499999999999, 0.17600000000000016, 0.12374999999999758, 0.12799999999999834, -0.09225000000000172, -0.12524999999999942, -0.81325, -0.028999999999999915, 0.14100000000000001, 0.20374999999999943, 0.17950000000000088, -0.0030000000000001137, 0.1255000000000024, 0.16900000000000048, -0.4764999999999997, -0.04225000000000101], zp_timestamp='2025-11-03T18:48:00')
2025-11-03T20:50:27.734 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:50:27.745 [DEBUG] [Thread-122394] [transport.py] [_log()] starting thread (client mode): 0xed04cd0
2025-11-03T20:50:27.745 [DEBUG] [Thread-122394] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:50:27.761 [DEBUG] [Thread-122394] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:50:27.761 [INFO] [Thread-122394] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:50:27.772 [DEBUG] [Thread-122394] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:50:27.772 [DEBUG] [Thread-122394] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:50:27.772 [DEBUG] [Thread-122394] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:50:27.773 [DEBUG] [Thread-122394] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:50:27.773 [DEBUG] [Thread-122394] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:50:27.773 [DEBUG] [Thread-122394] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:50:27.773 [DEBUG] [Thread-122394] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:50:27.773 [DEBUG] [Thread-122394] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:50:27.773 [DEBUG] [Thread-122394] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:50:27.773 [DEBUG] [Thread-122394] [transport.py] [_log()] client lang: <none>
2025-11-03T20:50:27.773 [DEBUG] [Thread-122394] [transport.py] [_log()] server lang: <none>
2025-11-03T20:50:27.773 [DEBUG] [Thread-122394] [transport.py] [_log()] kex follows: False
2025-11-03T20:50:27.774 [DEBUG] [Thread-122394] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:50:27.774 [DEBUG] [Thread-122394] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:50:27.774 [DEBUG] [Thread-122394] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:50:27.774 [DEBUG] [Thread-122394] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:50:27.774 [DEBUG] [Thread-122394] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:50:27.774 [DEBUG] [Thread-122394] [transport.py] [_log()] Compression: none
2025-11-03T20:50:27.774 [DEBUG] [Thread-122394] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:50:27.838 [DEBUG] [Thread-122394] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:50:27.839 [DEBUG] [Thread-122394] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:50:27.848 [DEBUG] [Thread-122394] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:50:27.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:50:27.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:50:27.906 [DEBUG] [Thread-122394] [transport.py] [_log()] userauth is OK
2025-11-03T20:50:27.906 [DEBUG] [Thread-122394] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:50:27.907 [DEBUG] [Thread-122394] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:50:27.907 [DEBUG] [Thread-122394] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:50:27.907 [DEBUG] [Thread-122394] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:50:27.933 [INFO] [Thread-122394] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:50:27.933 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:50:27.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:50:28.779 [DEBUG] [Thread-122394] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:50:28.779 [DEBUG] [Thread-122394] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:50:28.828 [DEBUG] [Thread-122394] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:50:28.828 [DEBUG] [Thread-122394] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:50:28.839 [DEBUG] [Thread-122394] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:50:28.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:50:28.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:50:28.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:50:28.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:50:28.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:50:28.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:50:28.882 [DEBUG] [Thread-122394] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:50:33.706 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:50:33.707 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:50:37.882 [DEBUG] [Thread-122396 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:50:52.933 [DEBUG] [Thread-122397 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:50:55.930 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:50:58.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:50:58.871 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:50:58.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:50:59.126 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:50:59.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 50, 54), 34.95, 8.06, 0.0, 17.22, 19.0, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:50:59.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:50:54
2025-11-03T20:50:59.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:50:59.926 [DEBUG] [Thread-122398] [transport.py] [_log()] starting thread (client mode): 0xed343d0
2025-11-03T20:50:59.926 [DEBUG] [Thread-122398] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:50:59.945 [DEBUG] [Thread-122398] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:50:59.946 [INFO] [Thread-122398] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:50:59.958 [DEBUG] [Thread-122398] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:50:59.958 [DEBUG] [Thread-122398] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:50:59.958 [DEBUG] [Thread-122398] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:50:59.958 [DEBUG] [Thread-122398] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:50:59.958 [DEBUG] [Thread-122398] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:50:59.958 [DEBUG] [Thread-122398] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:50:59.958 [DEBUG] [Thread-122398] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:50:59.958 [DEBUG] [Thread-122398] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:50:59.958 [DEBUG] [Thread-122398] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:50:59.958 [DEBUG] [Thread-122398] [transport.py] [_log()] client lang: <none>
2025-11-03T20:50:59.958 [DEBUG] [Thread-122398] [transport.py] [_log()] server lang: <none>
2025-11-03T20:50:59.958 [DEBUG] [Thread-122398] [transport.py] [_log()] kex follows: False
2025-11-03T20:50:59.959 [DEBUG] [Thread-122398] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:50:59.959 [DEBUG] [Thread-122398] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:50:59.959 [DEBUG] [Thread-122398] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:50:59.959 [DEBUG] [Thread-122398] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:50:59.959 [DEBUG] [Thread-122398] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:50:59.959 [DEBUG] [Thread-122398] [transport.py] [_log()] Compression: none
2025-11-03T20:50:59.959 [DEBUG] [Thread-122398] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:50:59.976 [DEBUG] [Thread-122398] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:50:59.976 [DEBUG] [Thread-122398] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:50:59.976 [DEBUG] [Thread-122398] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:50:59.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:50:59.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:50:59.978 [DEBUG] [Thread-122398] [transport.py] [_log()] userauth is OK
2025-11-03T20:50:59.978 [DEBUG] [Thread-122398] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:50:59.978 [DEBUG] [Thread-122398] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:50:59.978 [DEBUG] [Thread-122398] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:50:59.978 [DEBUG] [Thread-122398] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:51:00.004 [INFO] [Thread-122398] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:51:00.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:51:00.650 [DEBUG] [Thread-122398] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:51:00.650 [DEBUG] [Thread-122398] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:51:00.650 [DEBUG] [Thread-122398] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:51:00.691 [DEBUG] [Thread-122398] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:51:00.691 [DEBUG] [Thread-122398] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:51:00.694 [DEBUG] [Thread-122398] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:51:00.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:51:00.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:51:00.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:51:00.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:51:00.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:51:00.715 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:51:00.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:51:00.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:51:00.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:51:00.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.784823 -999.00  +19.10  15.52     13   -9.70 1 1 1 1 1     0    0 28.63 -16.71 ZNESW 18.1 15.5 309.0 19.3 19.3 -27.9 19.2 -26.8 19.0 -26.5 19.2 -27.4
2025-11-03T20:51:00.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:51:00.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:51:00.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.784823
2025-11-03T20:51:00.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:51:00.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:51:00.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:51:00.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:51:00.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:51:00.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:50:54', tmtdew=34.95, humidity=8.06, cloud=0.0, wind=17.22, temperature=19.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:50:54', seeing=1.08, atlas_timestamp='2025-11-03T18:50:08.707', atlas_cloud=1, atlas_rain=1, zp_data=[0.00274999999999892, 0.08375000000000021, 0.036749999999999616, 0.04099999999999859, 0.0649999999999995, 0.08075000000000188, -0.05400000000000027, 0.0002500000000011937, -0.1440000000000019, 0.0389999999999997, 0.062249999999998806, 0.06300000000000061, 0.18900000000000006, -0.09975000000000023, -0.09200000000000053, -0.2890000000000015, -0.05424999999999969, 0.067499999999999, 0.17600000000000016, 0.12374999999999758, 0.12799999999999834, -0.09225000000000172, -0.12524999999999942, -0.81325, -0.028999999999999915, 0.14100000000000001, 0.20374999999999943, 0.17950000000000088, -0.0030000000000001137, 0.1255000000000024, 0.16900000000000048, -0.4764999999999997, -0.04225000000000101], zp_timestamp='2025-11-03T18:48:00')
2025-11-03T20:51:00.718 [DEBUG] [Thread-122398] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:51:00.796 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:51:00.812 [DEBUG] [Thread-122401] [transport.py] [_log()] starting thread (client mode): 0xed37c40
2025-11-03T20:51:00.812 [DEBUG] [Thread-122401] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:51:00.832 [DEBUG] [Thread-122401] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:51:00.832 [INFO] [Thread-122401] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:51:00.846 [DEBUG] [Thread-122401] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:51:00.846 [DEBUG] [Thread-122401] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:51:00.846 [DEBUG] [Thread-122401] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:51:00.846 [DEBUG] [Thread-122401] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:51:00.846 [DEBUG] [Thread-122401] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:51:00.846 [DEBUG] [Thread-122401] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:51:00.847 [DEBUG] [Thread-122401] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:51:00.847 [DEBUG] [Thread-122401] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:51:00.847 [DEBUG] [Thread-122401] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:51:00.847 [DEBUG] [Thread-122401] [transport.py] [_log()] client lang: <none>
2025-11-03T20:51:00.847 [DEBUG] [Thread-122401] [transport.py] [_log()] server lang: <none>
2025-11-03T20:51:00.847 [DEBUG] [Thread-122401] [transport.py] [_log()] kex follows: False
2025-11-03T20:51:00.847 [DEBUG] [Thread-122401] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:51:00.847 [DEBUG] [Thread-122401] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:51:00.847 [DEBUG] [Thread-122401] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:51:00.847 [DEBUG] [Thread-122401] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:51:00.847 [DEBUG] [Thread-122401] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:51:00.847 [DEBUG] [Thread-122401] [transport.py] [_log()] Compression: none
2025-11-03T20:51:00.847 [DEBUG] [Thread-122401] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:51:00.902 [DEBUG] [Thread-122401] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:51:00.903 [DEBUG] [Thread-122401] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:51:00.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:51:00.904 [DEBUG] [Thread-122401] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:51:00.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:51:00.965 [DEBUG] [Thread-122401] [transport.py] [_log()] userauth is OK
2025-11-03T20:51:00.965 [DEBUG] [Thread-122401] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:51:00.965 [DEBUG] [Thread-122401] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:51:00.965 [DEBUG] [Thread-122401] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:51:00.965 [DEBUG] [Thread-122401] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:51:00.991 [INFO] [Thread-122401] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:51:00.991 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:51:00.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:51:01.810 [DEBUG] [Thread-122401] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:51:01.810 [DEBUG] [Thread-122401] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:51:01.858 [DEBUG] [Thread-122401] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:51:01.858 [DEBUG] [Thread-122401] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:51:01.866 [DEBUG] [Thread-122401] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:51:01.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:51:01.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:51:01.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:51:01.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:51:01.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:51:01.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:51:01.899 [DEBUG] [Thread-122401] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:51:04.197 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:51:07.966 [DEBUG] [Thread-122403 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:51:09.590 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:51:16.560 [DEBUG] [Thread-122404 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:51:23.033 [DEBUG] [Thread-122405 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:51:28.970 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:51:31.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:51:31.893 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:51:31.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:51:32.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 51, 26), 34.94, 8.06, 0.0, 17.13, 18.97, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:51:32.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:51:26
2025-11-03T20:51:32.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:51:33.038 [DEBUG] [Thread-122406] [transport.py] [_log()] starting thread (client mode): 0xedc7d90
2025-11-03T20:51:33.039 [DEBUG] [Thread-122406] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:51:33.053 [DEBUG] [Thread-122406] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:51:33.053 [INFO] [Thread-122406] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:51:33.057 [DEBUG] [Thread-122406] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:51:33.057 [DEBUG] [Thread-122406] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:51:33.058 [DEBUG] [Thread-122406] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:51:33.058 [DEBUG] [Thread-122406] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:51:33.058 [DEBUG] [Thread-122406] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:51:33.058 [DEBUG] [Thread-122406] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:51:33.058 [DEBUG] [Thread-122406] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:51:33.058 [DEBUG] [Thread-122406] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:51:33.058 [DEBUG] [Thread-122406] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:51:33.058 [DEBUG] [Thread-122406] [transport.py] [_log()] client lang: <none>
2025-11-03T20:51:33.058 [DEBUG] [Thread-122406] [transport.py] [_log()] server lang: <none>
2025-11-03T20:51:33.058 [DEBUG] [Thread-122406] [transport.py] [_log()] kex follows: False
2025-11-03T20:51:33.058 [DEBUG] [Thread-122406] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:51:33.059 [DEBUG] [Thread-122406] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:51:33.059 [DEBUG] [Thread-122406] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:51:33.059 [DEBUG] [Thread-122406] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:51:33.059 [DEBUG] [Thread-122406] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:51:33.059 [DEBUG] [Thread-122406] [transport.py] [_log()] Compression: none
2025-11-03T20:51:33.059 [DEBUG] [Thread-122406] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:51:33.084 [DEBUG] [Thread-122406] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:51:33.089 [DEBUG] [Thread-122406] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:51:33.091 [DEBUG] [Thread-122406] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:51:33.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:51:33.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:51:33.094 [DEBUG] [Thread-122406] [transport.py] [_log()] userauth is OK
2025-11-03T20:51:33.094 [DEBUG] [Thread-122406] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:51:33.094 [DEBUG] [Thread-122406] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:51:33.094 [DEBUG] [Thread-122406] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:51:33.094 [DEBUG] [Thread-122406] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:51:33.120 [INFO] [Thread-122406] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:51:33.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:51:33.350 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:51:33.870 [DEBUG] [Thread-122406] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:51:33.870 [DEBUG] [Thread-122406] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:51:33.871 [DEBUG] [Thread-122406] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:51:33.910 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:51:33.911 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:51:33.912 [DEBUG] [Thread-122406] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:51:33.912 [DEBUG] [Thread-122406] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:51:33.914 [DEBUG] [Thread-122406] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:51:33.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:51:33.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:51:33.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:51:33.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:51:33.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:51:33.933 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:51:33.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:51:33.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:51:33.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:51:33.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.785170 -999.00  +19.10  14.60     13   -9.70 1 1 1 1 1     0    0 28.65 -18.69 ZNESW 16.3 14.6 308.4 20.4 19.3 -27.8 19.2 -27.0 19.0 -26.6 19.2 -27.6
2025-11-03T20:51:33.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:51:33.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:51:33.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.785170
2025-11-03T20:51:33.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:51:33.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:51:33.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:51:33.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:51:33.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:51:33.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:51:26', tmtdew=34.94, humidity=8.06, cloud=0.0, wind=17.13, temperature=18.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:51:27', seeing=1.24, atlas_timestamp='2025-11-03T18:50:38.688', atlas_cloud=1, atlas_rain=1, zp_data=[0.00274999999999892, 0.08375000000000021, 0.036749999999999616, 0.04099999999999859, 0.0649999999999995, 0.08075000000000188, -0.05400000000000027, 0.0002500000000011937, -0.1440000000000019, 0.0389999999999997, 0.062249999999998806, 0.06300000000000061, 0.18900000000000006, -0.09975000000000023, -0.09200000000000053, -0.2890000000000015, -0.05424999999999969, 0.067499999999999, 0.17600000000000016, 0.12374999999999758, 0.12799999999999834, -0.09225000000000172, -0.12524999999999942, -0.81325, -0.028999999999999915, 0.14100000000000001, 0.20374999999999943, 0.17950000000000088, -0.0030000000000001137, 0.1255000000000024, 0.16900000000000048, -0.4764999999999997, -0.04225000000000101], zp_timestamp='2025-11-03T18:48:00')
2025-11-03T20:51:33.939 [DEBUG] [Thread-122406] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:51:34.017 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:51:34.031 [DEBUG] [Thread-122409] [transport.py] [_log()] starting thread (client mode): 0x141dbfd0
2025-11-03T20:51:34.031 [DEBUG] [Thread-122409] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:51:34.045 [DEBUG] [Thread-122409] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:51:34.045 [INFO] [Thread-122409] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:51:34.053 [DEBUG] [Thread-122409] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:51:34.053 [DEBUG] [Thread-122409] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:51:34.053 [DEBUG] [Thread-122409] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:51:34.053 [DEBUG] [Thread-122409] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:51:34.053 [DEBUG] [Thread-122409] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:51:34.054 [DEBUG] [Thread-122409] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:51:34.054 [DEBUG] [Thread-122409] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:51:34.054 [DEBUG] [Thread-122409] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:51:34.054 [DEBUG] [Thread-122409] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:51:34.054 [DEBUG] [Thread-122409] [transport.py] [_log()] client lang: <none>
2025-11-03T20:51:34.054 [DEBUG] [Thread-122409] [transport.py] [_log()] server lang: <none>
2025-11-03T20:51:34.054 [DEBUG] [Thread-122409] [transport.py] [_log()] kex follows: False
2025-11-03T20:51:34.054 [DEBUG] [Thread-122409] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:51:34.054 [DEBUG] [Thread-122409] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:51:34.054 [DEBUG] [Thread-122409] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:51:34.054 [DEBUG] [Thread-122409] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:51:34.054 [DEBUG] [Thread-122409] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:51:34.054 [DEBUG] [Thread-122409] [transport.py] [_log()] Compression: none
2025-11-03T20:51:34.054 [DEBUG] [Thread-122409] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:51:34.112 [DEBUG] [Thread-122409] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:51:34.112 [DEBUG] [Thread-122409] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:51:34.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:51:34.112 [DEBUG] [Thread-122409] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:51:34.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:51:34.168 [DEBUG] [Thread-122409] [transport.py] [_log()] userauth is OK
2025-11-03T20:51:34.168 [DEBUG] [Thread-122409] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:51:34.168 [DEBUG] [Thread-122409] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:51:34.168 [DEBUG] [Thread-122409] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:51:34.168 [DEBUG] [Thread-122409] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:51:34.186 [INFO] [Thread-122409] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:51:34.186 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:51:34.187 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:51:34.985 [DEBUG] [Thread-122409] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:51:34.985 [DEBUG] [Thread-122409] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:51:35.032 [DEBUG] [Thread-122409] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:51:35.032 [DEBUG] [Thread-122409] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:51:35.040 [DEBUG] [Thread-122409] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:51:35.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:51:35.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:51:35.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:51:35.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:51:35.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:51:35.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:51:35.073 [DEBUG] [Thread-122409] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:51:38.062 [DEBUG] [Thread-122411 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:51:52.721 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:51:53.125 [DEBUG] [Thread-122412 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:51:57.133 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:52:03.253 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:52:05.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:52:05.106 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:52:05.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:52:06.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 51, 59), 34.91, 8.07, 0.0, 17.26, 18.89, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:52:06.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:51:59
2025-11-03T20:52:06.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:52:06.365 [DEBUG] [Thread-122413] [transport.py] [_log()] starting thread (client mode): 0x141db460
2025-11-03T20:52:06.366 [DEBUG] [Thread-122413] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:52:06.381 [DEBUG] [Thread-122413] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:52:06.381 [INFO] [Thread-122413] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:52:06.385 [DEBUG] [Thread-122413] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:52:06.385 [DEBUG] [Thread-122413] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:52:06.385 [DEBUG] [Thread-122413] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:52:06.385 [DEBUG] [Thread-122413] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:52:06.385 [DEBUG] [Thread-122413] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:52:06.385 [DEBUG] [Thread-122413] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:52:06.385 [DEBUG] [Thread-122413] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:52:06.385 [DEBUG] [Thread-122413] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:52:06.385 [DEBUG] [Thread-122413] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:52:06.385 [DEBUG] [Thread-122413] [transport.py] [_log()] client lang: <none>
2025-11-03T20:52:06.385 [DEBUG] [Thread-122413] [transport.py] [_log()] server lang: <none>
2025-11-03T20:52:06.385 [DEBUG] [Thread-122413] [transport.py] [_log()] kex follows: False
2025-11-03T20:52:06.385 [DEBUG] [Thread-122413] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:52:06.385 [DEBUG] [Thread-122413] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:52:06.385 [DEBUG] [Thread-122413] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:52:06.385 [DEBUG] [Thread-122413] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:52:06.385 [DEBUG] [Thread-122413] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:52:06.385 [DEBUG] [Thread-122413] [transport.py] [_log()] Compression: none
2025-11-03T20:52:06.385 [DEBUG] [Thread-122413] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:52:06.402 [DEBUG] [Thread-122413] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:52:06.404 [DEBUG] [Thread-122413] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:52:06.406 [DEBUG] [Thread-122413] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:52:06.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:52:06.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:52:06.409 [DEBUG] [Thread-122413] [transport.py] [_log()] userauth is OK
2025-11-03T20:52:06.409 [DEBUG] [Thread-122413] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:52:06.409 [DEBUG] [Thread-122413] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:52:06.409 [DEBUG] [Thread-122413] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:52:06.409 [DEBUG] [Thread-122413] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:52:06.432 [INFO] [Thread-122413] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:52:06.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:52:07.076 [DEBUG] [Thread-122413] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:52:07.076 [DEBUG] [Thread-122413] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:52:07.087 [DEBUG] [Thread-122413] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:52:07.117 [DEBUG] [Thread-122413] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:52:07.118 [DEBUG] [Thread-122413] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:52:07.121 [DEBUG] [Thread-122413] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:52:07.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:52:07.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:52:07.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:52:07.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:52:07.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:52:07.147 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:52:07.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:52:07.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:52:07.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:52:07.151 [DEBUG] [Thread-122413] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:52:07.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.785517 -999.00  +19.10  14.72     13   -9.60 1 1 1 1 1     0    0 28.94 -20.58 ZNESW 15.9 14.7 317.6 18.6 19.3 -27.8 19.2 -26.6 18.9 -26.7 19.2 -27.5
2025-11-03T20:52:07.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:52:07.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:52:07.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.785517
2025-11-03T20:52:07.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:52:07.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:52:07.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:52:07.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:52:07.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:52:07.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:51:59', tmtdew=34.91, humidity=8.07, cloud=0.0, wind=17.26, temperature=18.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:52:00', seeing=1.1, atlas_timestamp='2025-11-03T18:51:08.669', atlas_cloud=1, atlas_rain=1, zp_data=[0.00274999999999892, 0.08375000000000021, 0.036749999999999616, 0.04099999999999859, 0.0649999999999995, 0.08075000000000188, -0.05400000000000027, 0.0002500000000011937, -0.1440000000000019, 0.0389999999999997, 0.062249999999998806, 0.06300000000000061, 0.18900000000000006, -0.09975000000000023, -0.09200000000000053, -0.2890000000000015, -0.05424999999999969, 0.067499999999999, 0.17600000000000016, 0.12374999999999758, 0.12799999999999834, -0.09225000000000172, -0.12524999999999942, -0.81325, -0.028999999999999915, 0.14100000000000001, 0.20374999999999943, 0.17950000000000088, -0.0030000000000001137, 0.1255000000000024, 0.16900000000000048, -0.4764999999999997, -0.04225000000000101], zp_timestamp='2025-11-03T18:48:00')
2025-11-03T20:52:07.251 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:52:07.264 [DEBUG] [Thread-122416] [transport.py] [_log()] starting thread (client mode): 0xeda3b50
2025-11-03T20:52:07.264 [DEBUG] [Thread-122416] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:52:07.281 [DEBUG] [Thread-122416] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:52:07.281 [INFO] [Thread-122416] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:52:07.289 [DEBUG] [Thread-122416] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:52:07.290 [DEBUG] [Thread-122416] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:52:07.290 [DEBUG] [Thread-122416] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:52:07.290 [DEBUG] [Thread-122416] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:52:07.290 [DEBUG] [Thread-122416] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:52:07.290 [DEBUG] [Thread-122416] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:52:07.290 [DEBUG] [Thread-122416] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:52:07.290 [DEBUG] [Thread-122416] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:52:07.290 [DEBUG] [Thread-122416] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:52:07.290 [DEBUG] [Thread-122416] [transport.py] [_log()] client lang: <none>
2025-11-03T20:52:07.291 [DEBUG] [Thread-122416] [transport.py] [_log()] server lang: <none>
2025-11-03T20:52:07.291 [DEBUG] [Thread-122416] [transport.py] [_log()] kex follows: False
2025-11-03T20:52:07.291 [DEBUG] [Thread-122416] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:52:07.291 [DEBUG] [Thread-122416] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:52:07.291 [DEBUG] [Thread-122416] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:52:07.291 [DEBUG] [Thread-122416] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:52:07.291 [DEBUG] [Thread-122416] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:52:07.291 [DEBUG] [Thread-122416] [transport.py] [_log()] Compression: none
2025-11-03T20:52:07.291 [DEBUG] [Thread-122416] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:52:07.355 [DEBUG] [Thread-122416] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:52:07.355 [DEBUG] [Thread-122416] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:52:07.356 [DEBUG] [Thread-122416] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:52:07.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:52:07.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:52:07.412 [DEBUG] [Thread-122416] [transport.py] [_log()] userauth is OK
2025-11-03T20:52:07.412 [DEBUG] [Thread-122416] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:52:07.412 [DEBUG] [Thread-122416] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:52:07.413 [DEBUG] [Thread-122416] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:52:07.413 [DEBUG] [Thread-122416] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:52:07.433 [INFO] [Thread-122416] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:52:07.433 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:52:07.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:52:07.659 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:52:08.167 [DEBUG] [Thread-122418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:52:08.283 [DEBUG] [Thread-122416] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:52:08.284 [DEBUG] [Thread-122416] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:52:08.333 [DEBUG] [Thread-122416] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:52:08.334 [DEBUG] [Thread-122416] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:52:08.344 [DEBUG] [Thread-122416] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:52:08.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:52:08.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:52:08.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:52:08.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:52:08.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:52:08.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:52:08.387 [DEBUG] [Thread-122416] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:52:16.815 [DEBUG] [Thread-122419 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:52:23.248 [DEBUG] [Thread-122420 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:52:34.111 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:52:34.112 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:52:38.285 [DEBUG] [Thread-122421 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:52:38.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:52:38.409 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:52:38.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:52:39.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 52, 32), 34.86, 8.11, 0.0, 17.63, 18.89, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:52:39.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:52:32
2025-11-03T20:52:39.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:52:39.433 [DEBUG] [Thread-122422] [transport.py] [_log()] starting thread (client mode): 0xedc6e90
2025-11-03T20:52:39.433 [DEBUG] [Thread-122422] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:52:39.443 [DEBUG] [Thread-122422] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:52:39.443 [INFO] [Thread-122422] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:52:39.453 [DEBUG] [Thread-122422] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:52:39.453 [DEBUG] [Thread-122422] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:52:39.453 [DEBUG] [Thread-122422] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:52:39.453 [DEBUG] [Thread-122422] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:52:39.453 [DEBUG] [Thread-122422] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:52:39.453 [DEBUG] [Thread-122422] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:52:39.453 [DEBUG] [Thread-122422] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:52:39.453 [DEBUG] [Thread-122422] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:52:39.453 [DEBUG] [Thread-122422] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:52:39.453 [DEBUG] [Thread-122422] [transport.py] [_log()] client lang: <none>
2025-11-03T20:52:39.453 [DEBUG] [Thread-122422] [transport.py] [_log()] server lang: <none>
2025-11-03T20:52:39.453 [DEBUG] [Thread-122422] [transport.py] [_log()] kex follows: False
2025-11-03T20:52:39.453 [DEBUG] [Thread-122422] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:52:39.453 [DEBUG] [Thread-122422] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:52:39.453 [DEBUG] [Thread-122422] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:52:39.453 [DEBUG] [Thread-122422] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:52:39.453 [DEBUG] [Thread-122422] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:52:39.453 [DEBUG] [Thread-122422] [transport.py] [_log()] Compression: none
2025-11-03T20:52:39.453 [DEBUG] [Thread-122422] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:52:39.467 [DEBUG] [Thread-122422] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:52:39.468 [DEBUG] [Thread-122422] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:52:39.468 [DEBUG] [Thread-122422] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:52:39.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:52:39.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:52:39.468 [DEBUG] [Thread-122422] [transport.py] [_log()] userauth is OK
2025-11-03T20:52:39.468 [DEBUG] [Thread-122422] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:52:39.468 [DEBUG] [Thread-122422] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:52:39.469 [DEBUG] [Thread-122422] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:52:39.469 [DEBUG] [Thread-122422] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:52:39.478 [INFO] [Thread-122422] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:52:39.478 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:52:40.115 [DEBUG] [Thread-122422] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:52:40.115 [DEBUG] [Thread-122422] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:52:40.115 [DEBUG] [Thread-122422] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:52:40.147 [DEBUG] [Thread-122422] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:52:40.147 [DEBUG] [Thread-122422] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:52:40.150 [DEBUG] [Thread-122422] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:52:40.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:52:40.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:52:40.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:52:40.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:52:40.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:52:40.174 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:52:40.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:52:40.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:52:40.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:52:40.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.786212 -999.00  +19.00  12.91     13   -9.70 1 1 1 1 1     0    0 28.40 -25.41 ZNESW 10.0 12.9 314.8 17.8 19.3 -27.8 19.1 -26.7 19.0 -26.6 19.2 -27.5
2025-11-03T20:52:40.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:52:40.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:52:40.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.786212
2025-11-03T20:52:40.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:52:40.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:52:40.177 [DEBUG] [Thread-122422] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:52:40.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:52:40.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:52:40.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:52:40.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:52:32', tmtdew=34.86, humidity=8.11, cloud=0.0, wind=17.63, temperature=18.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:52:32', seeing=1.14, atlas_timestamp='2025-11-03T18:52:08.717', atlas_cloud=1, atlas_rain=1, zp_data=[0.00274999999999892, 0.08375000000000021, 0.036749999999999616, 0.04099999999999859, 0.0649999999999995, 0.08075000000000188, -0.05400000000000027, 0.0002500000000011937, -0.1440000000000019, 0.0389999999999997, 0.062249999999998806, 0.06300000000000061, 0.18900000000000006, -0.09975000000000023, -0.09200000000000053, -0.2890000000000015, -0.05424999999999969, 0.067499999999999, 0.17600000000000016, 0.12374999999999758, 0.12799999999999834, -0.09225000000000172, -0.12524999999999942, -0.81325, -0.028999999999999915, 0.14100000000000001, 0.20374999999999943, 0.17950000000000088, -0.0030000000000001137, 0.1255000000000024, 0.16900000000000048, -0.4764999999999997, -0.04225000000000101], zp_timestamp='2025-11-03T18:48:00')
2025-11-03T20:52:40.262 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:52:40.274 [DEBUG] [Thread-122425] [transport.py] [_log()] starting thread (client mode): 0x141d9f30
2025-11-03T20:52:40.274 [DEBUG] [Thread-122425] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:52:40.289 [DEBUG] [Thread-122425] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:52:40.289 [INFO] [Thread-122425] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:52:40.299 [DEBUG] [Thread-122425] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:52:40.299 [DEBUG] [Thread-122425] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:52:40.299 [DEBUG] [Thread-122425] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:52:40.299 [DEBUG] [Thread-122425] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:52:40.299 [DEBUG] [Thread-122425] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:52:40.299 [DEBUG] [Thread-122425] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:52:40.299 [DEBUG] [Thread-122425] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:52:40.299 [DEBUG] [Thread-122425] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:52:40.299 [DEBUG] [Thread-122425] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:52:40.299 [DEBUG] [Thread-122425] [transport.py] [_log()] client lang: <none>
2025-11-03T20:52:40.299 [DEBUG] [Thread-122425] [transport.py] [_log()] server lang: <none>
2025-11-03T20:52:40.299 [DEBUG] [Thread-122425] [transport.py] [_log()] kex follows: False
2025-11-03T20:52:40.299 [DEBUG] [Thread-122425] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:52:40.299 [DEBUG] [Thread-122425] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:52:40.299 [DEBUG] [Thread-122425] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:52:40.299 [DEBUG] [Thread-122425] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:52:40.299 [DEBUG] [Thread-122425] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:52:40.299 [DEBUG] [Thread-122425] [transport.py] [_log()] Compression: none
2025-11-03T20:52:40.299 [DEBUG] [Thread-122425] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:52:40.361 [DEBUG] [Thread-122425] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:52:40.362 [DEBUG] [Thread-122425] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:52:40.362 [DEBUG] [Thread-122425] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:52:40.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:52:40.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:52:40.422 [DEBUG] [Thread-122425] [transport.py] [_log()] userauth is OK
2025-11-03T20:52:40.423 [DEBUG] [Thread-122425] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:52:40.423 [DEBUG] [Thread-122425] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:52:40.423 [DEBUG] [Thread-122425] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:52:40.423 [DEBUG] [Thread-122425] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:52:40.441 [INFO] [Thread-122425] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:52:40.442 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:52:40.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:52:41.276 [DEBUG] [Thread-122425] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:52:41.277 [DEBUG] [Thread-122425] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:52:41.325 [DEBUG] [Thread-122425] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:52:41.325 [DEBUG] [Thread-122425] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:52:41.333 [DEBUG] [Thread-122425] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:52:41.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:52:41.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:52:41.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:52:41.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:52:41.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:52:41.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:52:41.374 [DEBUG] [Thread-122425] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:52:53.323 [DEBUG] [Thread-122427 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:53:08.361 [DEBUG] [Thread-122428 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:53:11.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:53:11.398 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:53:11.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:53:12.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 53, 4), 34.8, 8.16, 0.0, 17.63, 18.94, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:53:12.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:53:04
2025-11-03T20:53:12.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:53:12.517 [DEBUG] [Thread-122429] [transport.py] [_log()] starting thread (client mode): 0x141dbbe0
2025-11-03T20:53:12.517 [DEBUG] [Thread-122429] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:53:12.535 [DEBUG] [Thread-122429] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:53:12.536 [INFO] [Thread-122429] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:53:12.539 [DEBUG] [Thread-122429] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:53:12.539 [DEBUG] [Thread-122429] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:53:12.539 [DEBUG] [Thread-122429] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:53:12.539 [DEBUG] [Thread-122429] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:53:12.539 [DEBUG] [Thread-122429] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:53:12.539 [DEBUG] [Thread-122429] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:53:12.539 [DEBUG] [Thread-122429] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:53:12.539 [DEBUG] [Thread-122429] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:53:12.539 [DEBUG] [Thread-122429] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:53:12.539 [DEBUG] [Thread-122429] [transport.py] [_log()] client lang: <none>
2025-11-03T20:53:12.539 [DEBUG] [Thread-122429] [transport.py] [_log()] server lang: <none>
2025-11-03T20:53:12.539 [DEBUG] [Thread-122429] [transport.py] [_log()] kex follows: False
2025-11-03T20:53:12.539 [DEBUG] [Thread-122429] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:53:12.540 [DEBUG] [Thread-122429] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:53:12.540 [DEBUG] [Thread-122429] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:53:12.540 [DEBUG] [Thread-122429] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:53:12.540 [DEBUG] [Thread-122429] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:53:12.540 [DEBUG] [Thread-122429] [transport.py] [_log()] Compression: none
2025-11-03T20:53:12.540 [DEBUG] [Thread-122429] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:53:12.558 [DEBUG] [Thread-122429] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:53:12.559 [DEBUG] [Thread-122429] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:53:12.559 [DEBUG] [Thread-122429] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:53:12.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:53:12.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:53:12.601 [DEBUG] [Thread-122429] [transport.py] [_log()] userauth is OK
2025-11-03T20:53:12.602 [DEBUG] [Thread-122429] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:53:12.602 [DEBUG] [Thread-122429] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:53:12.602 [DEBUG] [Thread-122429] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:53:12.602 [DEBUG] [Thread-122429] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:53:12.633 [INFO] [Thread-122429] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:53:12.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:53:13.308 [DEBUG] [Thread-122429] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:53:13.309 [DEBUG] [Thread-122429] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:53:13.309 [DEBUG] [Thread-122429] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:53:13.350 [DEBUG] [Thread-122429] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:53:13.350 [DEBUG] [Thread-122429] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:53:13.353 [DEBUG] [Thread-122429] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:53:13.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:53:13.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:53:13.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:53:13.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:53:13.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:53:13.376 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:53:13.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:53:13.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:53:13.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:53:13.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.786559 -999.00  +19.00  12.61     13   -9.70 1 1 1 1 1     0    0 28.12 -27.17 ZNESW 13.9 12.6 313.2 17.1 19.2 -27.8 19.1 -26.8 18.9 -26.6 19.1 -27.4
2025-11-03T20:53:13.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:53:13.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:53:13.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.786559
2025-11-03T20:53:13.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:53:13.379 [DEBUG] [Thread-122429] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:53:13.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:53:13.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:53:13.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:53:13.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:53:13.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:53:04', tmtdew=34.8, humidity=8.16, cloud=0.0, wind=17.63, temperature=18.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:53:05', seeing=1.14, atlas_timestamp='2025-11-03T18:52:38.698', atlas_cloud=1, atlas_rain=1, zp_data=[0.040749999999999176, 0.09425000000000061, -0.03874999999999851, 0.11050000000000004, 0.0754999999999999, 0.1172500000000003, 0.04399999999999871, -0.007749999999999702, 0.058499999999998664, 0.14750000000000085, 0.1302500000000002, 0.12899999999999956, 0.19299999999999962, 0.09675000000000011, -0.03500000000000014, -0.17600000000000193, 0.10824999999999996, 0.13349999999999973, 0.18399999999999928, 0.1402499999999982, 0.16699999999999804, -0.0632500000000018, -0.04974999999999952, -0.8872499999999999, -0.10600000000000165, 0.15249999999999986, 0.2557500000000008, 0.21850000000000058, 0.04499999999999993, 0.17400000000000126, 0.10500000000000043, -0.48999999999999844, 0.1947499999999991], zp_timestamp='2025-11-03T18:52:00')
2025-11-03T20:53:13.467 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:53:13.480 [DEBUG] [Thread-122432] [transport.py] [_log()] starting thread (client mode): 0xed8bb50
2025-11-03T20:53:13.480 [DEBUG] [Thread-122432] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:53:13.495 [DEBUG] [Thread-122432] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:53:13.495 [INFO] [Thread-122432] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:53:13.502 [DEBUG] [Thread-122432] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:53:13.503 [DEBUG] [Thread-122432] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:53:13.503 [DEBUG] [Thread-122432] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:53:13.503 [DEBUG] [Thread-122432] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:53:13.503 [DEBUG] [Thread-122432] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:53:13.503 [DEBUG] [Thread-122432] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:53:13.503 [DEBUG] [Thread-122432] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:53:13.503 [DEBUG] [Thread-122432] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:53:13.503 [DEBUG] [Thread-122432] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:53:13.503 [DEBUG] [Thread-122432] [transport.py] [_log()] client lang: <none>
2025-11-03T20:53:13.504 [DEBUG] [Thread-122432] [transport.py] [_log()] server lang: <none>
2025-11-03T20:53:13.504 [DEBUG] [Thread-122432] [transport.py] [_log()] kex follows: False
2025-11-03T20:53:13.504 [DEBUG] [Thread-122432] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:53:13.504 [DEBUG] [Thread-122432] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:53:13.504 [DEBUG] [Thread-122432] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:53:13.504 [DEBUG] [Thread-122432] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:53:13.504 [DEBUG] [Thread-122432] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:53:13.504 [DEBUG] [Thread-122432] [transport.py] [_log()] Compression: none
2025-11-03T20:53:13.505 [DEBUG] [Thread-122432] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:53:13.561 [DEBUG] [Thread-122432] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:53:13.562 [DEBUG] [Thread-122432] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:53:13.562 [DEBUG] [Thread-122432] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:53:13.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:53:13.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:53:13.620 [DEBUG] [Thread-122432] [transport.py] [_log()] userauth is OK
2025-11-03T20:53:13.620 [DEBUG] [Thread-122432] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:53:13.620 [DEBUG] [Thread-122432] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:53:13.620 [DEBUG] [Thread-122432] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:53:13.620 [DEBUG] [Thread-122432] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:53:13.639 [INFO] [Thread-122432] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:53:13.639 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:53:13.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:53:14.318 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:53:14.473 [DEBUG] [Thread-122432] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:53:14.473 [DEBUG] [Thread-122432] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:53:14.523 [DEBUG] [Thread-122432] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:53:14.523 [DEBUG] [Thread-122432] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:53:14.533 [DEBUG] [Thread-122432] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:53:14.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:53:14.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:53:14.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:53:14.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:53:14.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:53:14.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:53:14.572 [DEBUG] [Thread-122432] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:53:16.973 [DEBUG] [Thread-122434 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:53:18.430 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:53:23.396 [DEBUG] [Thread-122435 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:53:34.313 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:53:34.314 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:53:38.453 [DEBUG] [Thread-122436 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:53:44.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:53:44.567 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:53:44.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:53:45.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 53, 37), 34.77, 8.11, 0.0, 16.23, 18.92, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:53:45.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:53:37
2025-11-03T20:53:45.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:53:45.665 [DEBUG] [Thread-122437] [transport.py] [_log()] starting thread (client mode): 0xed34e20
2025-11-03T20:53:45.666 [DEBUG] [Thread-122437] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:53:45.685 [DEBUG] [Thread-122437] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:53:45.685 [INFO] [Thread-122437] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:53:45.688 [DEBUG] [Thread-122437] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:53:45.689 [DEBUG] [Thread-122437] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:53:45.689 [DEBUG] [Thread-122437] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:53:45.689 [DEBUG] [Thread-122437] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:53:45.689 [DEBUG] [Thread-122437] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:53:45.689 [DEBUG] [Thread-122437] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:53:45.689 [DEBUG] [Thread-122437] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:53:45.689 [DEBUG] [Thread-122437] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:53:45.689 [DEBUG] [Thread-122437] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:53:45.689 [DEBUG] [Thread-122437] [transport.py] [_log()] client lang: <none>
2025-11-03T20:53:45.689 [DEBUG] [Thread-122437] [transport.py] [_log()] server lang: <none>
2025-11-03T20:53:45.689 [DEBUG] [Thread-122437] [transport.py] [_log()] kex follows: False
2025-11-03T20:53:45.689 [DEBUG] [Thread-122437] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:53:45.689 [DEBUG] [Thread-122437] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:53:45.689 [DEBUG] [Thread-122437] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:53:45.689 [DEBUG] [Thread-122437] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:53:45.689 [DEBUG] [Thread-122437] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:53:45.689 [DEBUG] [Thread-122437] [transport.py] [_log()] Compression: none
2025-11-03T20:53:45.689 [DEBUG] [Thread-122437] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:53:45.704 [DEBUG] [Thread-122437] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:53:45.704 [DEBUG] [Thread-122437] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:53:45.704 [DEBUG] [Thread-122437] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:53:45.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:53:45.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:53:45.705 [DEBUG] [Thread-122437] [transport.py] [_log()] userauth is OK
2025-11-03T20:53:45.705 [DEBUG] [Thread-122437] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:53:45.705 [DEBUG] [Thread-122437] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:53:45.705 [DEBUG] [Thread-122437] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:53:45.705 [DEBUG] [Thread-122437] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:53:45.720 [INFO] [Thread-122437] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:53:45.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:53:46.494 [DEBUG] [Thread-122437] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:53:46.494 [DEBUG] [Thread-122437] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:53:46.494 [DEBUG] [Thread-122437] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:53:46.534 [DEBUG] [Thread-122437] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:53:46.535 [DEBUG] [Thread-122437] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:53:46.537 [DEBUG] [Thread-122437] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:53:46.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:53:46.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:53:46.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:53:46.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:53:46.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:53:46.559 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:53:46.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:53:46.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:53:46.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:53:46.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.786906 -999.00  +19.00  14.46     13   -9.60 1 1 1 1 1     0    0 28.16 -29.79 ZNESW 12.4 14.5 305.6 21.1 19.2 -27.8 19.1 -26.5 18.9 -26.5 19.1 -27.3
2025-11-03T20:53:46.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:53:46.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:53:46.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.786906
2025-11-03T20:53:46.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:53:46.566 [DEBUG] [Thread-122437] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:53:46.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:53:46.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:53:46.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:53:46.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:53:46.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:53:37', tmtdew=34.77, humidity=8.11, cloud=0.0, wind=16.23, temperature=18.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:53:37', seeing=1.15, atlas_timestamp='2025-11-03T18:53:08.678', atlas_cloud=1, atlas_rain=1, zp_data=[0.040749999999999176, 0.09425000000000061, -0.03874999999999851, 0.11050000000000004, 0.0754999999999999, 0.1172500000000003, 0.04399999999999871, -0.007749999999999702, 0.058499999999998664, 0.14750000000000085, 0.1302500000000002, 0.12899999999999956, 0.19299999999999962, 0.09675000000000011, -0.03500000000000014, -0.17600000000000193, 0.10824999999999996, 0.13349999999999973, 0.18399999999999928, 0.1402499999999982, 0.16699999999999804, -0.0632500000000018, -0.04974999999999952, -0.8872499999999999, -0.10600000000000165, 0.15249999999999986, 0.2557500000000008, 0.21850000000000058, 0.04499999999999993, 0.17400000000000126, 0.10500000000000043, -0.48999999999999844, 0.1947499999999991], zp_timestamp='2025-11-03T18:52:00')
2025-11-03T20:53:46.654 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:53:46.666 [DEBUG] [Thread-122440] [transport.py] [_log()] starting thread (client mode): 0xed061a0
2025-11-03T20:53:46.666 [DEBUG] [Thread-122440] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:53:46.681 [DEBUG] [Thread-122440] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:53:46.681 [INFO] [Thread-122440] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:53:46.688 [DEBUG] [Thread-122440] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:53:46.688 [DEBUG] [Thread-122440] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:53:46.688 [DEBUG] [Thread-122440] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:53:46.688 [DEBUG] [Thread-122440] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:53:46.688 [DEBUG] [Thread-122440] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:53:46.688 [DEBUG] [Thread-122440] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:53:46.688 [DEBUG] [Thread-122440] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:53:46.688 [DEBUG] [Thread-122440] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:53:46.688 [DEBUG] [Thread-122440] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:53:46.688 [DEBUG] [Thread-122440] [transport.py] [_log()] client lang: <none>
2025-11-03T20:53:46.688 [DEBUG] [Thread-122440] [transport.py] [_log()] server lang: <none>
2025-11-03T20:53:46.689 [DEBUG] [Thread-122440] [transport.py] [_log()] kex follows: False
2025-11-03T20:53:46.689 [DEBUG] [Thread-122440] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:53:46.689 [DEBUG] [Thread-122440] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:53:46.689 [DEBUG] [Thread-122440] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:53:46.689 [DEBUG] [Thread-122440] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:53:46.689 [DEBUG] [Thread-122440] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:53:46.689 [DEBUG] [Thread-122440] [transport.py] [_log()] Compression: none
2025-11-03T20:53:46.689 [DEBUG] [Thread-122440] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:53:46.745 [DEBUG] [Thread-122440] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:53:46.745 [DEBUG] [Thread-122440] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:53:46.745 [DEBUG] [Thread-122440] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:53:46.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:53:46.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:53:46.806 [DEBUG] [Thread-122440] [transport.py] [_log()] userauth is OK
2025-11-03T20:53:46.806 [DEBUG] [Thread-122440] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:53:46.806 [DEBUG] [Thread-122440] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:53:46.806 [DEBUG] [Thread-122440] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:53:46.806 [DEBUG] [Thread-122440] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:53:46.820 [INFO] [Thread-122440] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:53:46.820 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:53:46.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:53:47.666 [DEBUG] [Thread-122440] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:53:47.666 [DEBUG] [Thread-122440] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:53:47.716 [DEBUG] [Thread-122440] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:53:47.716 [DEBUG] [Thread-122440] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:53:47.726 [DEBUG] [Thread-122440] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:53:47.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:53:47.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:53:47.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:53:47.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:53:47.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:53:47.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:53:47.761 [DEBUG] [Thread-122440] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:53:53.481 [DEBUG] [Thread-122442 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:54:08.537 [DEBUG] [Thread-122443 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:54:17.097 [DEBUG] [Thread-122444 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:54:17.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:54:17.783 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:54:17.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:54:18.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 54, 9), 34.82, 8.09, 0.0, 16.0, 19.0, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:54:18.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:54:09
2025-11-03T20:54:18.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:54:18.923 [DEBUG] [Thread-122445] [transport.py] [_log()] starting thread (client mode): 0xed05000
2025-11-03T20:54:18.923 [DEBUG] [Thread-122445] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:54:18.943 [DEBUG] [Thread-122445] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:54:18.943 [INFO] [Thread-122445] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:54:18.944 [DEBUG] [Thread-122445] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:54:18.944 [DEBUG] [Thread-122445] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:54:18.944 [DEBUG] [Thread-122445] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:54:18.944 [DEBUG] [Thread-122445] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:54:18.944 [DEBUG] [Thread-122445] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:54:18.944 [DEBUG] [Thread-122445] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:54:18.944 [DEBUG] [Thread-122445] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:54:18.944 [DEBUG] [Thread-122445] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:54:18.944 [DEBUG] [Thread-122445] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:54:18.944 [DEBUG] [Thread-122445] [transport.py] [_log()] client lang: <none>
2025-11-03T20:54:18.944 [DEBUG] [Thread-122445] [transport.py] [_log()] server lang: <none>
2025-11-03T20:54:18.944 [DEBUG] [Thread-122445] [transport.py] [_log()] kex follows: False
2025-11-03T20:54:18.944 [DEBUG] [Thread-122445] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:54:18.944 [DEBUG] [Thread-122445] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:54:18.944 [DEBUG] [Thread-122445] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:54:18.944 [DEBUG] [Thread-122445] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:54:18.944 [DEBUG] [Thread-122445] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:54:18.944 [DEBUG] [Thread-122445] [transport.py] [_log()] Compression: none
2025-11-03T20:54:18.944 [DEBUG] [Thread-122445] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:54:18.962 [DEBUG] [Thread-122445] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:54:18.962 [DEBUG] [Thread-122445] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:54:18.962 [DEBUG] [Thread-122445] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:54:18.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:54:18.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:54:18.963 [DEBUG] [Thread-122445] [transport.py] [_log()] userauth is OK
2025-11-03T20:54:18.963 [DEBUG] [Thread-122445] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:54:18.963 [DEBUG] [Thread-122445] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:54:18.963 [DEBUG] [Thread-122445] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:54:18.963 [DEBUG] [Thread-122445] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:54:18.974 [INFO] [Thread-122445] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:54:18.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:54:19.636 [DEBUG] [Thread-122445] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:54:19.636 [DEBUG] [Thread-122445] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:54:19.636 [DEBUG] [Thread-122445] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:54:19.677 [DEBUG] [Thread-122445] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:54:19.678 [DEBUG] [Thread-122445] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:54:19.680 [DEBUG] [Thread-122445] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:54:19.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:54:19.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:54:19.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:54:19.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:54:19.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:54:19.696 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:54:19.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:54:19.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:54:19.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:54:19.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.787254 -999.00  +18.90  12.88     13   -9.70 1 1 1 1 1     0    0 27.46 -33.88 ZNESW 17.0 12.9 317.6 13.6 19.2 -27.8 19.1 -26.6 18.9 -26.6 19.1 -27.3
2025-11-03T20:54:19.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:54:19.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:54:19.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.787254
2025-11-03T20:54:19.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:54:19.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:54:19.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:54:19.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:54:19.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:54:19.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:54:09', tmtdew=34.82, humidity=8.09, cloud=0.0, wind=16.0, temperature=19.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:54:10', seeing=1.13, atlas_timestamp='2025-11-03T18:53:38.746', atlas_cloud=1, atlas_rain=1, zp_data=[0.040749999999999176, 0.09425000000000061, -0.03874999999999851, 0.11050000000000004, 0.0754999999999999, 0.1172500000000003, 0.04399999999999871, -0.007749999999999702, 0.058499999999998664, 0.14750000000000085, 0.1302500000000002, 0.12899999999999956, 0.19299999999999962, 0.09675000000000011, -0.03500000000000014, -0.17600000000000193, 0.10824999999999996, 0.13349999999999973, 0.18399999999999928, 0.1402499999999982, 0.16699999999999804, -0.0632500000000018, -0.04974999999999952, -0.8872499999999999, -0.10600000000000165, 0.15249999999999986, 0.2557500000000008, 0.21850000000000058, 0.04499999999999993, 0.17400000000000126, 0.10500000000000043, -0.48999999999999844, 0.1947499999999991], zp_timestamp='2025-11-03T18:52:00')
2025-11-03T20:54:19.698 [DEBUG] [Thread-122445] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:54:19.773 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:54:19.784 [DEBUG] [Thread-122448] [transport.py] [_log()] starting thread (client mode): 0xed36140
2025-11-03T20:54:19.784 [DEBUG] [Thread-122448] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:54:19.799 [DEBUG] [Thread-122448] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:54:19.799 [INFO] [Thread-122448] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:54:19.806 [DEBUG] [Thread-122448] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:54:19.806 [DEBUG] [Thread-122448] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:54:19.806 [DEBUG] [Thread-122448] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:54:19.806 [DEBUG] [Thread-122448] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:54:19.806 [DEBUG] [Thread-122448] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:54:19.806 [DEBUG] [Thread-122448] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:54:19.806 [DEBUG] [Thread-122448] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:54:19.807 [DEBUG] [Thread-122448] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:54:19.807 [DEBUG] [Thread-122448] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:54:19.807 [DEBUG] [Thread-122448] [transport.py] [_log()] client lang: <none>
2025-11-03T20:54:19.807 [DEBUG] [Thread-122448] [transport.py] [_log()] server lang: <none>
2025-11-03T20:54:19.807 [DEBUG] [Thread-122448] [transport.py] [_log()] kex follows: False
2025-11-03T20:54:19.807 [DEBUG] [Thread-122448] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:54:19.807 [DEBUG] [Thread-122448] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:54:19.807 [DEBUG] [Thread-122448] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:54:19.807 [DEBUG] [Thread-122448] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:54:19.807 [DEBUG] [Thread-122448] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:54:19.807 [DEBUG] [Thread-122448] [transport.py] [_log()] Compression: none
2025-11-03T20:54:19.807 [DEBUG] [Thread-122448] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:54:19.863 [DEBUG] [Thread-122448] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:54:19.863 [DEBUG] [Thread-122448] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:54:19.863 [DEBUG] [Thread-122448] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:54:19.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:54:19.864 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:54:19.920 [DEBUG] [Thread-122448] [transport.py] [_log()] userauth is OK
2025-11-03T20:54:19.920 [DEBUG] [Thread-122448] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:54:19.920 [DEBUG] [Thread-122448] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:54:19.920 [DEBUG] [Thread-122448] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:54:19.920 [DEBUG] [Thread-122448] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:54:19.934 [INFO] [Thread-122448] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:54:19.934 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:54:19.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:54:20.765 [DEBUG] [Thread-122448] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:54:20.765 [DEBUG] [Thread-122448] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:54:20.814 [DEBUG] [Thread-122448] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:54:20.814 [DEBUG] [Thread-122448] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:54:20.824 [DEBUG] [Thread-122448] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:54:20.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:54:20.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:54:20.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:54:20.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:54:20.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:54:20.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:54:20.872 [DEBUG] [Thread-122448] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:54:23.573 [DEBUG] [Thread-122450 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:54:34.536 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:54:34.537 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:54:38.627 [DEBUG] [Thread-122451 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:54:43.012 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:54:49.871 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:54:50.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:54:50.894 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:54:50.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:54:51.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 54, 42), 34.76, 8.12, 0.0, 16.0, 18.99, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:54:51.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:54:42
2025-11-03T20:54:51.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:54:51.952 [DEBUG] [Thread-122452] [transport.py] [_log()] starting thread (client mode): 0x1174c0a0
2025-11-03T20:54:51.952 [DEBUG] [Thread-122452] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:54:51.973 [DEBUG] [Thread-122452] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:54:51.973 [INFO] [Thread-122452] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:54:51.976 [DEBUG] [Thread-122452] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:54:51.976 [DEBUG] [Thread-122452] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:54:51.977 [DEBUG] [Thread-122452] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:54:51.977 [DEBUG] [Thread-122452] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:54:51.977 [DEBUG] [Thread-122452] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:54:51.977 [DEBUG] [Thread-122452] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:54:51.977 [DEBUG] [Thread-122452] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:54:51.977 [DEBUG] [Thread-122452] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:54:51.977 [DEBUG] [Thread-122452] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:54:51.977 [DEBUG] [Thread-122452] [transport.py] [_log()] client lang: <none>
2025-11-03T20:54:51.977 [DEBUG] [Thread-122452] [transport.py] [_log()] server lang: <none>
2025-11-03T20:54:51.977 [DEBUG] [Thread-122452] [transport.py] [_log()] kex follows: False
2025-11-03T20:54:51.977 [DEBUG] [Thread-122452] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:54:51.977 [DEBUG] [Thread-122452] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:54:51.979 [DEBUG] [Thread-122452] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:54:51.979 [DEBUG] [Thread-122452] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:54:51.979 [DEBUG] [Thread-122452] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:54:51.979 [DEBUG] [Thread-122452] [transport.py] [_log()] Compression: none
2025-11-03T20:54:51.979 [DEBUG] [Thread-122452] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:54:52.002 [DEBUG] [Thread-122452] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:54:52.002 [DEBUG] [Thread-122452] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:54:52.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:54:52.003 [DEBUG] [Thread-122452] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:54:52.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:54:52.005 [DEBUG] [Thread-122452] [transport.py] [_log()] userauth is OK
2025-11-03T20:54:52.005 [DEBUG] [Thread-122452] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:54:52.005 [DEBUG] [Thread-122452] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:54:52.006 [DEBUG] [Thread-122452] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:54:52.006 [DEBUG] [Thread-122452] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:54:52.022 [INFO] [Thread-122452] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:54:52.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:54:52.564 [DEBUG] [Thread-122452] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:54:52.564 [DEBUG] [Thread-122452] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:54:52.564 [DEBUG] [Thread-122452] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:54:52.604 [DEBUG] [Thread-122452] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:54:52.604 [DEBUG] [Thread-122452] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:54:52.606 [DEBUG] [Thread-122452] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:54:52.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:54:52.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:54:52.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:54:52.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:54:52.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:54:52.626 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:54:52.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:54:52.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:54:52.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:54:52.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.787601 -999.00  +18.90  12.33     13   -9.70 1 1 1 1 1     0    0 28.09 -35.42 ZNESW 13.5 12.3 315.0 19.8 19.2 -27.8 19.1 -26.6 18.9 -26.4 19.1 -27.2
2025-11-03T20:54:52.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:54:52.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:54:52.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.787601
2025-11-03T20:54:52.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:54:52.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:54:52.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:54:52.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:54:52.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:54:52.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:54:42', tmtdew=34.76, humidity=8.12, cloud=0.0, wind=16.0, temperature=18.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:54:42', seeing=1.14, atlas_timestamp='2025-11-03T18:54:08.726', atlas_cloud=1, atlas_rain=1, zp_data=[0.040749999999999176, 0.09425000000000061, -0.03874999999999851, 0.11050000000000004, 0.0754999999999999, 0.1172500000000003, 0.04399999999999871, -0.007749999999999702, 0.058499999999998664, 0.14750000000000085, 0.1302500000000002, 0.12899999999999956, 0.19299999999999962, 0.09675000000000011, -0.03500000000000014, -0.17600000000000193, 0.10824999999999996, 0.13349999999999973, 0.18399999999999928, 0.1402499999999982, 0.16699999999999804, -0.0632500000000018, -0.04974999999999952, -0.8872499999999999, -0.10600000000000165, 0.15249999999999986, 0.2557500000000008, 0.21850000000000058, 0.04499999999999993, 0.17400000000000126, 0.10500000000000043, -0.48999999999999844, 0.1947499999999991], zp_timestamp='2025-11-03T18:52:00')
2025-11-03T20:54:52.628 [DEBUG] [Thread-122452] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:54:52.707 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:54:52.720 [DEBUG] [Thread-122455] [transport.py] [_log()] starting thread (client mode): 0xeda0ee0
2025-11-03T20:54:52.720 [DEBUG] [Thread-122455] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:54:52.735 [DEBUG] [Thread-122455] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:54:52.735 [INFO] [Thread-122455] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:54:52.743 [DEBUG] [Thread-122455] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:54:52.743 [DEBUG] [Thread-122455] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:54:52.743 [DEBUG] [Thread-122455] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:54:52.743 [DEBUG] [Thread-122455] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:54:52.743 [DEBUG] [Thread-122455] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:54:52.743 [DEBUG] [Thread-122455] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:54:52.743 [DEBUG] [Thread-122455] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:54:52.743 [DEBUG] [Thread-122455] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:54:52.743 [DEBUG] [Thread-122455] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:54:52.743 [DEBUG] [Thread-122455] [transport.py] [_log()] client lang: <none>
2025-11-03T20:54:52.743 [DEBUG] [Thread-122455] [transport.py] [_log()] server lang: <none>
2025-11-03T20:54:52.743 [DEBUG] [Thread-122455] [transport.py] [_log()] kex follows: False
2025-11-03T20:54:52.743 [DEBUG] [Thread-122455] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:54:52.743 [DEBUG] [Thread-122455] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:54:52.743 [DEBUG] [Thread-122455] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:54:52.743 [DEBUG] [Thread-122455] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:54:52.743 [DEBUG] [Thread-122455] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:54:52.743 [DEBUG] [Thread-122455] [transport.py] [_log()] Compression: none
2025-11-03T20:54:52.743 [DEBUG] [Thread-122455] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:54:52.800 [DEBUG] [Thread-122455] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:54:52.800 [DEBUG] [Thread-122455] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:54:52.801 [DEBUG] [Thread-122455] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:54:52.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:54:52.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:54:52.857 [DEBUG] [Thread-122455] [transport.py] [_log()] userauth is OK
2025-11-03T20:54:52.857 [DEBUG] [Thread-122455] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:54:52.857 [DEBUG] [Thread-122455] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:54:52.857 [DEBUG] [Thread-122455] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:54:52.857 [DEBUG] [Thread-122455] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:54:52.872 [INFO] [Thread-122455] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:54:52.872 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:54:52.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:54:53.664 [DEBUG] [Thread-122457 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:54:53.697 [DEBUG] [Thread-122455] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:54:53.697 [DEBUG] [Thread-122455] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:54:53.745 [DEBUG] [Thread-122455] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:54:53.745 [DEBUG] [Thread-122455] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:54:53.754 [DEBUG] [Thread-122455] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:54:53.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:54:53.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:54:53.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:54:53.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:54:53.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:54:53.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:54:53.785 [DEBUG] [Thread-122455] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:54:53.993 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:55:08.702 [DEBUG] [Thread-122458 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:55:17.290 [DEBUG] [Thread-122459 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:55:23.741 [DEBUG] [Thread-122460 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:55:23.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:55:23.808 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:55:23.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:55:24.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 55, 14), 34.73, 8.16, 0.0, 15.44, 19.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:55:24.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:55:14
2025-11-03T20:55:24.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:55:24.875 [DEBUG] [Thread-122461] [transport.py] [_log()] starting thread (client mode): 0x1174d6c0
2025-11-03T20:55:24.875 [DEBUG] [Thread-122461] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:55:24.895 [DEBUG] [Thread-122461] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:55:24.896 [INFO] [Thread-122461] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:55:24.906 [DEBUG] [Thread-122461] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:55:24.906 [DEBUG] [Thread-122461] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:55:24.906 [DEBUG] [Thread-122461] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:55:24.906 [DEBUG] [Thread-122461] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:55:24.906 [DEBUG] [Thread-122461] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:55:24.906 [DEBUG] [Thread-122461] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:55:24.907 [DEBUG] [Thread-122461] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:55:24.907 [DEBUG] [Thread-122461] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:55:24.907 [DEBUG] [Thread-122461] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:55:24.907 [DEBUG] [Thread-122461] [transport.py] [_log()] client lang: <none>
2025-11-03T20:55:24.907 [DEBUG] [Thread-122461] [transport.py] [_log()] server lang: <none>
2025-11-03T20:55:24.907 [DEBUG] [Thread-122461] [transport.py] [_log()] kex follows: False
2025-11-03T20:55:24.907 [DEBUG] [Thread-122461] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:55:24.907 [DEBUG] [Thread-122461] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:55:24.907 [DEBUG] [Thread-122461] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:55:24.908 [DEBUG] [Thread-122461] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:55:24.908 [DEBUG] [Thread-122461] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:55:24.908 [DEBUG] [Thread-122461] [transport.py] [_log()] Compression: none
2025-11-03T20:55:24.908 [DEBUG] [Thread-122461] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:55:24.927 [DEBUG] [Thread-122461] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:55:24.928 [DEBUG] [Thread-122461] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:55:24.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:55:24.929 [DEBUG] [Thread-122461] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:55:24.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:55:24.931 [DEBUG] [Thread-122461] [transport.py] [_log()] userauth is OK
2025-11-03T20:55:24.932 [DEBUG] [Thread-122461] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:55:24.932 [DEBUG] [Thread-122461] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:55:24.932 [DEBUG] [Thread-122461] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:55:24.932 [DEBUG] [Thread-122461] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:55:24.969 [INFO] [Thread-122461] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:55:24.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:55:25.614 [DEBUG] [Thread-122461] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:55:25.614 [DEBUG] [Thread-122461] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:55:25.615 [DEBUG] [Thread-122461] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:55:25.655 [DEBUG] [Thread-122461] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:55:25.655 [DEBUG] [Thread-122461] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:55:25.658 [DEBUG] [Thread-122461] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:55:25.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:55:25.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:55:25.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:55:25.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:55:25.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:55:25.682 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:55:25.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:55:25.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:55:25.690 [DEBUG] [Thread-122461] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:55:25.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:55:25.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.787948 -999.00  +18.90  12.12     13   -9.80 1 1 1 1 1     0    0 27.64 -37.93 ZNESW 12.9 12.1 304.0 16.3 19.1 -27.7 19.1 -26.6 18.9 -26.4 19.1 -27.4
2025-11-03T20:55:25.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:55:25.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:55:25.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.787948
2025-11-03T20:55:25.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:55:25.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:55:25.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:55:25.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:55:25.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:55:25.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:55:14', tmtdew=34.73, humidity=8.16, cloud=0.0, wind=15.44, temperature=19.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:55:14', seeing=1.14, atlas_timestamp='2025-11-03T18:54:38.707', atlas_cloud=1, atlas_rain=1, zp_data=[0.040749999999999176, 0.09425000000000061, -0.03874999999999851, 0.11050000000000004, 0.0754999999999999, 0.1172500000000003, 0.04399999999999871, -0.007749999999999702, 0.058499999999998664, 0.14750000000000085, 0.1302500000000002, 0.12899999999999956, 0.19299999999999962, 0.09675000000000011, -0.03500000000000014, -0.17600000000000193, 0.10824999999999996, 0.13349999999999973, 0.18399999999999928, 0.1402499999999982, 0.16699999999999804, -0.0632500000000018, -0.04974999999999952, -0.8872499999999999, -0.10600000000000165, 0.15249999999999986, 0.2557500000000008, 0.21850000000000058, 0.04499999999999993, 0.17400000000000126, 0.10500000000000043, -0.48999999999999844, 0.1947499999999991], zp_timestamp='2025-11-03T18:52:00')
2025-11-03T20:55:25.777 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:55:25.792 [DEBUG] [Thread-122464] [transport.py] [_log()] starting thread (client mode): 0x1174d270
2025-11-03T20:55:25.792 [DEBUG] [Thread-122464] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:55:25.810 [DEBUG] [Thread-122464] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:55:25.810 [INFO] [Thread-122464] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:55:25.819 [DEBUG] [Thread-122464] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:55:25.820 [DEBUG] [Thread-122464] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:55:25.820 [DEBUG] [Thread-122464] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:55:25.820 [DEBUG] [Thread-122464] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:55:25.820 [DEBUG] [Thread-122464] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:55:25.820 [DEBUG] [Thread-122464] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:55:25.820 [DEBUG] [Thread-122464] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:55:25.820 [DEBUG] [Thread-122464] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:55:25.820 [DEBUG] [Thread-122464] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:55:25.820 [DEBUG] [Thread-122464] [transport.py] [_log()] client lang: <none>
2025-11-03T20:55:25.820 [DEBUG] [Thread-122464] [transport.py] [_log()] server lang: <none>
2025-11-03T20:55:25.820 [DEBUG] [Thread-122464] [transport.py] [_log()] kex follows: False
2025-11-03T20:55:25.820 [DEBUG] [Thread-122464] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:55:25.820 [DEBUG] [Thread-122464] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:55:25.820 [DEBUG] [Thread-122464] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:55:25.821 [DEBUG] [Thread-122464] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:55:25.821 [DEBUG] [Thread-122464] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:55:25.821 [DEBUG] [Thread-122464] [transport.py] [_log()] Compression: none
2025-11-03T20:55:25.821 [DEBUG] [Thread-122464] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:55:25.877 [DEBUG] [Thread-122464] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:55:25.878 [DEBUG] [Thread-122464] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:55:25.878 [DEBUG] [Thread-122464] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:55:25.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:55:25.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:55:25.938 [DEBUG] [Thread-122464] [transport.py] [_log()] userauth is OK
2025-11-03T20:55:25.939 [DEBUG] [Thread-122464] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:55:25.939 [DEBUG] [Thread-122464] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:55:25.939 [DEBUG] [Thread-122464] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:55:25.939 [DEBUG] [Thread-122464] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:55:25.960 [INFO] [Thread-122464] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:55:25.969 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:55:25.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:55:26.804 [DEBUG] [Thread-122464] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:55:26.805 [DEBUG] [Thread-122464] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:55:26.853 [DEBUG] [Thread-122464] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:55:26.854 [DEBUG] [Thread-122464] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:55:26.867 [DEBUG] [Thread-122464] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:55:26.878 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:55:26.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:55:26.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:55:26.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:55:26.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:55:26.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:55:26.907 [DEBUG] [Thread-122464] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:55:34.739 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:55:34.740 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:55:38.770 [DEBUG] [Thread-122466 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:55:53.810 [DEBUG] [Thread-122467 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:55:56.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:55:56.917 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:55:56.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:55:57.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 55, 46), 34.78, 8.11, 0.0, 17.66, 18.97, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:55:57.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:55:46
2025-11-03T20:55:57.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:55:57.998 [DEBUG] [Thread-122468] [transport.py] [_log()] starting thread (client mode): 0x1174dab0
2025-11-03T20:55:57.999 [DEBUG] [Thread-122468] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:55:58.000 [DEBUG] [Thread-122468] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:55:58.000 [INFO] [Thread-122468] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:55:58.003 [DEBUG] [Thread-122468] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:55:58.003 [DEBUG] [Thread-122468] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:55:58.003 [DEBUG] [Thread-122468] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:55:58.003 [DEBUG] [Thread-122468] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:55:58.003 [DEBUG] [Thread-122468] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:55:58.003 [DEBUG] [Thread-122468] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:55:58.003 [DEBUG] [Thread-122468] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:55:58.003 [DEBUG] [Thread-122468] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:55:58.003 [DEBUG] [Thread-122468] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:55:58.003 [DEBUG] [Thread-122468] [transport.py] [_log()] client lang: <none>
2025-11-03T20:55:58.003 [DEBUG] [Thread-122468] [transport.py] [_log()] server lang: <none>
2025-11-03T20:55:58.003 [DEBUG] [Thread-122468] [transport.py] [_log()] kex follows: False
2025-11-03T20:55:58.003 [DEBUG] [Thread-122468] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:55:58.003 [DEBUG] [Thread-122468] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:55:58.004 [DEBUG] [Thread-122468] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:55:58.004 [DEBUG] [Thread-122468] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:55:58.004 [DEBUG] [Thread-122468] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:55:58.004 [DEBUG] [Thread-122468] [transport.py] [_log()] Compression: none
2025-11-03T20:55:58.004 [DEBUG] [Thread-122468] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:55:58.029 [DEBUG] [Thread-122468] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:55:58.032 [DEBUG] [Thread-122468] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:55:58.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:55:58.034 [DEBUG] [Thread-122468] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:55:58.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:55:58.035 [DEBUG] [Thread-122468] [transport.py] [_log()] userauth is OK
2025-11-03T20:55:58.035 [DEBUG] [Thread-122468] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:55:58.035 [DEBUG] [Thread-122468] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:55:58.035 [DEBUG] [Thread-122468] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:55:58.035 [DEBUG] [Thread-122468] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:55:58.066 [INFO] [Thread-122468] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:55:58.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:55:58.701 [DEBUG] [Thread-122468] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:55:58.701 [DEBUG] [Thread-122468] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:55:58.712 [DEBUG] [Thread-122468] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:55:58.742 [DEBUG] [Thread-122468] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:55:58.742 [DEBUG] [Thread-122468] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:55:58.746 [DEBUG] [Thread-122468] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:55:58.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:55:58.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:55:58.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:55:58.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:55:58.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:55:58.774 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:55:58.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:55:58.775 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:55:58.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:55:58.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.788642 -999.00  +18.90  13.07     13   -9.80 1 1 1 1 1     0    0 27.72 -39.86 ZNESW 12.7 13.1 303.8 17.0 19.1 -27.5 19.1 -26.4 18.8 -26.0 19.1 -27.1
2025-11-03T20:55:58.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:55:58.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:55:58.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.788642
2025-11-03T20:55:58.782 [DEBUG] [Thread-122468] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:55:58.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:55:58.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:55:58.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:55:58.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:55:58.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:55:58.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:55:46', tmtdew=34.78, humidity=8.11, cloud=0.0, wind=17.66, temperature=18.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:55:47', seeing=1.19, atlas_timestamp='2025-11-03T18:55:38.669', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021750000000000824, -0.020749999999999602, -0.16274999999999906, 0.010499999999998622, -0.015000000000000568, 0.028249999999999886, -0.009999999999999787, -0.05474999999999852, -0.015499999999999403, 0.09800000000000075, 0.05224999999999902, 0.058999999999999275, 0.13049999999999962, 0.03924999999999912, 0.011499999999998067, -0.11300000000000132, -0.030249999999998778, 0.04300000000000104, 0.16549999999999976, 0.0852499999999985, 0.16499999999999915, -0.050250000000001904, -0.1407500000000006, -0.9792500000000004, -0.3570000000000011, 0.24150000000000027, 0.19974999999999987, 0.20599999999999952, -0.08800000000000097, 0.10500000000000043, 0.05150000000000077, -0.28749999999999787, 0.010749999999999815], zp_timestamp='2025-11-03T18:54:00')
2025-11-03T20:55:58.874 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:55:58.887 [DEBUG] [Thread-122471] [transport.py] [_log()] starting thread (client mode): 0x1174c490
2025-11-03T20:55:58.887 [DEBUG] [Thread-122471] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:55:58.902 [DEBUG] [Thread-122471] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:55:58.902 [INFO] [Thread-122471] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:55:58.910 [DEBUG] [Thread-122471] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:55:58.910 [DEBUG] [Thread-122471] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:55:58.910 [DEBUG] [Thread-122471] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:55:58.910 [DEBUG] [Thread-122471] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:55:58.910 [DEBUG] [Thread-122471] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:55:58.910 [DEBUG] [Thread-122471] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:55:58.910 [DEBUG] [Thread-122471] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:55:58.910 [DEBUG] [Thread-122471] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:55:58.911 [DEBUG] [Thread-122471] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:55:58.911 [DEBUG] [Thread-122471] [transport.py] [_log()] client lang: <none>
2025-11-03T20:55:58.911 [DEBUG] [Thread-122471] [transport.py] [_log()] server lang: <none>
2025-11-03T20:55:58.911 [DEBUG] [Thread-122471] [transport.py] [_log()] kex follows: False
2025-11-03T20:55:58.911 [DEBUG] [Thread-122471] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:55:58.911 [DEBUG] [Thread-122471] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:55:58.911 [DEBUG] [Thread-122471] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:55:58.911 [DEBUG] [Thread-122471] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:55:58.911 [DEBUG] [Thread-122471] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:55:58.911 [DEBUG] [Thread-122471] [transport.py] [_log()] Compression: none
2025-11-03T20:55:58.911 [DEBUG] [Thread-122471] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:55:58.970 [DEBUG] [Thread-122471] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:55:58.970 [DEBUG] [Thread-122471] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:55:58.971 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:55:58.971 [DEBUG] [Thread-122471] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:55:58.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:55:59.025 [DEBUG] [Thread-122471] [transport.py] [_log()] userauth is OK
2025-11-03T20:55:59.026 [DEBUG] [Thread-122471] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:55:59.026 [DEBUG] [Thread-122471] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:55:59.026 [DEBUG] [Thread-122471] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:55:59.026 [DEBUG] [Thread-122471] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:55:59.044 [INFO] [Thread-122471] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:55:59.044 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:55:59.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:55:59.870 [DEBUG] [Thread-122471] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:55:59.870 [DEBUG] [Thread-122471] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:55:59.922 [DEBUG] [Thread-122471] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:55:59.922 [DEBUG] [Thread-122471] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:55:59.933 [DEBUG] [Thread-122471] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:55:59.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:55:59.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:55:59.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:55:59.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:55:59.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:55:59.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:55:59.989 [DEBUG] [Thread-122471] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:56:08.841 [DEBUG] [Thread-122473 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:56:16.478 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:56:17.544 [DEBUG] [Thread-122474 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:56:23.897 [DEBUG] [Thread-122475 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:56:24.588 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:56:28.709 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:56:29.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:56:29.981 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:56:29.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:56:30.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 56, 19), 34.74, 8.14, 0.0, 17.77, 19.0, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:56:30.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:56:19
2025-11-03T20:56:30.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:56:31.055 [DEBUG] [Thread-122476] [transport.py] [_log()] starting thread (client mode): 0x1174fca0
2025-11-03T20:56:31.056 [DEBUG] [Thread-122476] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:56:31.076 [DEBUG] [Thread-122476] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:56:31.076 [INFO] [Thread-122476] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:56:31.079 [DEBUG] [Thread-122476] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:56:31.079 [DEBUG] [Thread-122476] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:56:31.079 [DEBUG] [Thread-122476] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:56:31.079 [DEBUG] [Thread-122476] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:56:31.080 [DEBUG] [Thread-122476] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:56:31.080 [DEBUG] [Thread-122476] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:56:31.080 [DEBUG] [Thread-122476] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:56:31.080 [DEBUG] [Thread-122476] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:56:31.080 [DEBUG] [Thread-122476] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:56:31.080 [DEBUG] [Thread-122476] [transport.py] [_log()] client lang: <none>
2025-11-03T20:56:31.080 [DEBUG] [Thread-122476] [transport.py] [_log()] server lang: <none>
2025-11-03T20:56:31.080 [DEBUG] [Thread-122476] [transport.py] [_log()] kex follows: False
2025-11-03T20:56:31.080 [DEBUG] [Thread-122476] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:56:31.080 [DEBUG] [Thread-122476] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:56:31.080 [DEBUG] [Thread-122476] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:56:31.080 [DEBUG] [Thread-122476] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:56:31.080 [DEBUG] [Thread-122476] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:56:31.080 [DEBUG] [Thread-122476] [transport.py] [_log()] Compression: none
2025-11-03T20:56:31.080 [DEBUG] [Thread-122476] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:56:31.100 [DEBUG] [Thread-122476] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:56:31.100 [DEBUG] [Thread-122476] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:56:31.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:56:31.101 [DEBUG] [Thread-122476] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:56:31.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:56:31.145 [DEBUG] [Thread-122476] [transport.py] [_log()] userauth is OK
2025-11-03T20:56:31.145 [DEBUG] [Thread-122476] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:56:31.146 [DEBUG] [Thread-122476] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:56:31.146 [DEBUG] [Thread-122476] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:56:31.146 [DEBUG] [Thread-122476] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:56:31.176 [INFO] [Thread-122476] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:56:31.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:56:31.831 [DEBUG] [Thread-122476] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:56:31.831 [DEBUG] [Thread-122476] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:56:31.831 [DEBUG] [Thread-122476] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:56:31.872 [DEBUG] [Thread-122476] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:56:31.872 [DEBUG] [Thread-122476] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:56:31.875 [DEBUG] [Thread-122476] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:56:31.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:56:31.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:56:31.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:56:31.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:56:31.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:56:31.886 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:56:31.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:56:31.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:56:31.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:56:31.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.788990 -999.00  +18.90  15.18     13   -9.70 1 1 1 1 1     0    0 27.25 -43.89 ZNESW 15.9 15.2 299.4 20.4 19.1 -27.8 19.1 -26.6 18.9 -26.3 19.0 -27.1
2025-11-03T20:56:31.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:56:31.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:56:31.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.788990
2025-11-03T20:56:31.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:56:31.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:56:31.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:56:31.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:56:31.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:56:31.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:56:19', tmtdew=34.74, humidity=8.14, cloud=0.0, wind=17.77, temperature=19.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:56:19', seeing=1.04, atlas_timestamp='2025-11-03T18:56:08.736', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021750000000000824, -0.020749999999999602, -0.16274999999999906, 0.010499999999998622, -0.015000000000000568, 0.028249999999999886, -0.009999999999999787, -0.05474999999999852, -0.015499999999999403, 0.09800000000000075, 0.05224999999999902, 0.058999999999999275, 0.13049999999999962, 0.03924999999999912, 0.011499999999998067, -0.11300000000000132, -0.030249999999998778, 0.04300000000000104, 0.16549999999999976, 0.0852499999999985, 0.16499999999999915, -0.050250000000001904, -0.1407500000000006, -0.9792500000000004, -0.3570000000000011, 0.24150000000000027, 0.19974999999999987, 0.20599999999999952, -0.08800000000000097, 0.10500000000000043, 0.05150000000000077, -0.28749999999999787, 0.010749999999999815], zp_timestamp='2025-11-03T18:54:00')
2025-11-03T20:56:31.887 [DEBUG] [Thread-122476] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:56:31.964 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:56:31.975 [DEBUG] [Thread-122479] [transport.py] [_log()] starting thread (client mode): 0xeda2bf0
2025-11-03T20:56:31.975 [DEBUG] [Thread-122479] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:56:31.990 [DEBUG] [Thread-122479] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:56:31.990 [INFO] [Thread-122479] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:56:31.997 [DEBUG] [Thread-122479] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:56:31.997 [DEBUG] [Thread-122479] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:56:31.997 [DEBUG] [Thread-122479] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:56:31.997 [DEBUG] [Thread-122479] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:56:31.997 [DEBUG] [Thread-122479] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:56:31.997 [DEBUG] [Thread-122479] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:56:31.997 [DEBUG] [Thread-122479] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:56:31.997 [DEBUG] [Thread-122479] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:56:31.997 [DEBUG] [Thread-122479] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:56:31.997 [DEBUG] [Thread-122479] [transport.py] [_log()] client lang: <none>
2025-11-03T20:56:31.997 [DEBUG] [Thread-122479] [transport.py] [_log()] server lang: <none>
2025-11-03T20:56:31.997 [DEBUG] [Thread-122479] [transport.py] [_log()] kex follows: False
2025-11-03T20:56:31.997 [DEBUG] [Thread-122479] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:56:31.997 [DEBUG] [Thread-122479] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:56:31.997 [DEBUG] [Thread-122479] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:56:31.997 [DEBUG] [Thread-122479] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:56:31.997 [DEBUG] [Thread-122479] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:56:31.997 [DEBUG] [Thread-122479] [transport.py] [_log()] Compression: none
2025-11-03T20:56:31.997 [DEBUG] [Thread-122479] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:56:32.053 [DEBUG] [Thread-122479] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:56:32.053 [DEBUG] [Thread-122479] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:56:32.053 [DEBUG] [Thread-122479] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:56:32.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:56:32.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:56:32.112 [DEBUG] [Thread-122479] [transport.py] [_log()] userauth is OK
2025-11-03T20:56:32.112 [DEBUG] [Thread-122479] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:56:32.112 [DEBUG] [Thread-122479] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:56:32.112 [DEBUG] [Thread-122479] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:56:32.112 [DEBUG] [Thread-122479] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:56:32.128 [INFO] [Thread-122479] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:56:32.128 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:56:32.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:56:32.972 [DEBUG] [Thread-122479] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:56:32.972 [DEBUG] [Thread-122479] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:56:33.020 [DEBUG] [Thread-122479] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:56:33.021 [DEBUG] [Thread-122479] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:56:33.030 [DEBUG] [Thread-122479] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:56:33.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:56:33.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:56:33.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:56:33.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:56:33.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:56:33.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:56:33.072 [DEBUG] [Thread-122479] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:56:34.943 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:56:34.944 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:56:38.932 [DEBUG] [Thread-122481 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:56:53.989 [DEBUG] [Thread-122482 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:57:03.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:57:03.093 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:57:03.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:57:03.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 56, 51), 34.62, 8.19, 0.0, 17.79, 19.0, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:57:03.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:56:51
2025-11-03T20:57:03.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:57:04.105 [DEBUG] [Thread-122483] [transport.py] [_log()] starting thread (client mode): 0x141d98a0
2025-11-03T20:57:04.105 [DEBUG] [Thread-122483] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:57:04.126 [DEBUG] [Thread-122483] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:57:04.126 [INFO] [Thread-122483] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:57:04.129 [DEBUG] [Thread-122483] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:57:04.129 [DEBUG] [Thread-122483] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:57:04.129 [DEBUG] [Thread-122483] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:57:04.129 [DEBUG] [Thread-122483] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:57:04.129 [DEBUG] [Thread-122483] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:57:04.129 [DEBUG] [Thread-122483] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:57:04.129 [DEBUG] [Thread-122483] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:57:04.129 [DEBUG] [Thread-122483] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:57:04.130 [DEBUG] [Thread-122483] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:57:04.130 [DEBUG] [Thread-122483] [transport.py] [_log()] client lang: <none>
2025-11-03T20:57:04.130 [DEBUG] [Thread-122483] [transport.py] [_log()] server lang: <none>
2025-11-03T20:57:04.130 [DEBUG] [Thread-122483] [transport.py] [_log()] kex follows: False
2025-11-03T20:57:04.130 [DEBUG] [Thread-122483] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:57:04.130 [DEBUG] [Thread-122483] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:57:04.130 [DEBUG] [Thread-122483] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:57:04.130 [DEBUG] [Thread-122483] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:57:04.130 [DEBUG] [Thread-122483] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:57:04.130 [DEBUG] [Thread-122483] [transport.py] [_log()] Compression: none
2025-11-03T20:57:04.130 [DEBUG] [Thread-122483] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:57:04.147 [DEBUG] [Thread-122483] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:57:04.147 [DEBUG] [Thread-122483] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:57:04.147 [DEBUG] [Thread-122483] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:57:04.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:57:04.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:57:04.149 [DEBUG] [Thread-122483] [transport.py] [_log()] userauth is OK
2025-11-03T20:57:04.149 [DEBUG] [Thread-122483] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:57:04.149 [DEBUG] [Thread-122483] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:57:04.149 [DEBUG] [Thread-122483] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:57:04.149 [DEBUG] [Thread-122483] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:57:04.170 [INFO] [Thread-122483] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:57:04.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:57:04.810 [DEBUG] [Thread-122483] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:57:04.810 [DEBUG] [Thread-122483] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:57:04.811 [DEBUG] [Thread-122483] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:57:04.851 [DEBUG] [Thread-122483] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:57:04.851 [DEBUG] [Thread-122483] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:57:04.855 [DEBUG] [Thread-122483] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:57:04.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:57:04.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:57:04.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:57:04.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:57:04.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:57:04.880 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:57:04.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:57:04.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:57:04.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:57:04.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.789337 -999.00  +18.90  14.97     13   -9.60 1 1 1 1 1     0    0 27.86 -51.57 ZNESW 14.4 15.0 315.2 19.0 19.1 -27.5 19.1 -26.5 18.8 -26.2 19.1 -26.9
2025-11-03T20:57:04.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:57:04.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:57:04.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.789337
2025-11-03T20:57:04.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:57:04.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:57:04.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:57:04.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:57:04.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:57:04.883 [DEBUG] [Thread-122483] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:57:04.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:56:51', tmtdew=34.62, humidity=8.19, cloud=0.0, wind=17.79, temperature=19.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:56:51', seeing=1.04, atlas_timestamp='2025-11-03T18:56:38.717', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021750000000000824, -0.020749999999999602, -0.16274999999999906, 0.010499999999998622, -0.015000000000000568, 0.028249999999999886, -0.009999999999999787, -0.05474999999999852, -0.015499999999999403, 0.09800000000000075, 0.05224999999999902, 0.058999999999999275, 0.13049999999999962, 0.03924999999999912, 0.011499999999998067, -0.11300000000000132, -0.030249999999998778, 0.04300000000000104, 0.16549999999999976, 0.0852499999999985, 0.16499999999999915, -0.050250000000001904, -0.1407500000000006, -0.9792500000000004, -0.3570000000000011, 0.24150000000000027, 0.19974999999999987, 0.20599999999999952, -0.08800000000000097, 0.10500000000000043, 0.05150000000000077, -0.28749999999999787, 0.010749999999999815], zp_timestamp='2025-11-03T18:54:00')
2025-11-03T20:57:04.959 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:57:04.972 [DEBUG] [Thread-122486] [transport.py] [_log()] starting thread (client mode): 0x11762fb0
2025-11-03T20:57:04.972 [DEBUG] [Thread-122486] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:57:04.991 [DEBUG] [Thread-122486] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:57:04.991 [INFO] [Thread-122486] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:57:04.998 [DEBUG] [Thread-122486] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:57:04.999 [DEBUG] [Thread-122486] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:57:04.999 [DEBUG] [Thread-122486] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:57:04.999 [DEBUG] [Thread-122486] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:57:04.999 [DEBUG] [Thread-122486] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:57:04.999 [DEBUG] [Thread-122486] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:57:04.999 [DEBUG] [Thread-122486] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:57:04.999 [DEBUG] [Thread-122486] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:57:04.999 [DEBUG] [Thread-122486] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:57:04.999 [DEBUG] [Thread-122486] [transport.py] [_log()] client lang: <none>
2025-11-03T20:57:04.999 [DEBUG] [Thread-122486] [transport.py] [_log()] server lang: <none>
2025-11-03T20:57:04.999 [DEBUG] [Thread-122486] [transport.py] [_log()] kex follows: False
2025-11-03T20:57:04.999 [DEBUG] [Thread-122486] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:57:04.999 [DEBUG] [Thread-122486] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:57:04.999 [DEBUG] [Thread-122486] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:57:04.999 [DEBUG] [Thread-122486] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:57:04.999 [DEBUG] [Thread-122486] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:57:04.999 [DEBUG] [Thread-122486] [transport.py] [_log()] Compression: none
2025-11-03T20:57:05.000 [DEBUG] [Thread-122486] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:57:05.061 [DEBUG] [Thread-122486] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:57:05.062 [DEBUG] [Thread-122486] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:57:05.062 [DEBUG] [Thread-122486] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:57:05.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:57:05.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:57:05.120 [DEBUG] [Thread-122486] [transport.py] [_log()] userauth is OK
2025-11-03T20:57:05.121 [DEBUG] [Thread-122486] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:57:05.121 [DEBUG] [Thread-122486] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:57:05.121 [DEBUG] [Thread-122486] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:57:05.121 [DEBUG] [Thread-122486] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:57:05.140 [INFO] [Thread-122486] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:57:05.140 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:57:05.141 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:57:05.978 [DEBUG] [Thread-122486] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:57:05.978 [DEBUG] [Thread-122486] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:57:06.025 [DEBUG] [Thread-122486] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:57:06.026 [DEBUG] [Thread-122486] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:57:06.034 [DEBUG] [Thread-122486] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:57:06.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:57:06.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:57:06.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:57:06.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:57:06.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:57:06.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:57:06.072 [DEBUG] [Thread-122486] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:57:09.026 [DEBUG] [Thread-122488 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:57:17.784 [DEBUG] [Thread-122489 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:57:24.085 [DEBUG] [Thread-122490 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:57:35.145 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:57:35.146 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:57:36.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:57:36.094 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:57:36.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:57:36.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 57, 23), 34.55, 8.24, 0.0, 18.58, 19.02, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:57:36.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:57:23
2025-11-03T20:57:36.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:57:37.014 [DEBUG] [Thread-122491] [transport.py] [_log()] starting thread (client mode): 0x141db4c0
2025-11-03T20:57:37.014 [DEBUG] [Thread-122491] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:57:37.035 [DEBUG] [Thread-122491] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:57:37.035 [INFO] [Thread-122491] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:57:37.038 [DEBUG] [Thread-122491] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:57:37.038 [DEBUG] [Thread-122491] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:57:37.038 [DEBUG] [Thread-122491] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:57:37.038 [DEBUG] [Thread-122491] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:57:37.038 [DEBUG] [Thread-122491] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:57:37.038 [DEBUG] [Thread-122491] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:57:37.038 [DEBUG] [Thread-122491] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:57:37.038 [DEBUG] [Thread-122491] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:57:37.038 [DEBUG] [Thread-122491] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:57:37.038 [DEBUG] [Thread-122491] [transport.py] [_log()] client lang: <none>
2025-11-03T20:57:37.038 [DEBUG] [Thread-122491] [transport.py] [_log()] server lang: <none>
2025-11-03T20:57:37.038 [DEBUG] [Thread-122491] [transport.py] [_log()] kex follows: False
2025-11-03T20:57:37.038 [DEBUG] [Thread-122491] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:57:37.039 [DEBUG] [Thread-122491] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:57:37.039 [DEBUG] [Thread-122491] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:57:37.039 [DEBUG] [Thread-122491] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:57:37.039 [DEBUG] [Thread-122491] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:57:37.039 [DEBUG] [Thread-122491] [transport.py] [_log()] Compression: none
2025-11-03T20:57:37.039 [DEBUG] [Thread-122491] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:57:37.055 [DEBUG] [Thread-122491] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:57:37.055 [DEBUG] [Thread-122491] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:57:37.055 [DEBUG] [Thread-122491] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:57:37.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:57:37.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:57:37.056 [DEBUG] [Thread-122491] [transport.py] [_log()] userauth is OK
2025-11-03T20:57:37.056 [DEBUG] [Thread-122491] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:57:37.056 [DEBUG] [Thread-122491] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:57:37.056 [DEBUG] [Thread-122491] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:57:37.056 [DEBUG] [Thread-122491] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:57:37.065 [INFO] [Thread-122491] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:57:37.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:57:37.690 [DEBUG] [Thread-122491] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:57:37.690 [DEBUG] [Thread-122491] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:57:37.691 [DEBUG] [Thread-122491] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:57:37.722 [DEBUG] [Thread-122491] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:57:37.722 [DEBUG] [Thread-122491] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:57:37.723 [DEBUG] [Thread-122491] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:57:37.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:57:37.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:57:37.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:57:37.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:57:37.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:57:37.740 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:57:37.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:57:37.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:57:37.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:57:37.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.789684 -999.00  +19.00  15.63     13   -9.50 1 1 1 1 1     0    0 27.42 -51.95 ZNESW 20.1 15.6 300.6 21.6 19.1 -27.5 19.1 -26.2 18.8 -26.2 19.0 -27.0
2025-11-03T20:57:37.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:57:37.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:57:37.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.789684
2025-11-03T20:57:37.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:57:37.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:57:37.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:57:37.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:57:37.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:57:37.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:57:23', tmtdew=34.55, humidity=8.24, cloud=0.0, wind=18.58, temperature=19.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:57:24', seeing=1.11, atlas_timestamp='2025-11-03T18:57:08.698', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021750000000000824, -0.020749999999999602, -0.16274999999999906, 0.010499999999998622, -0.015000000000000568, 0.028249999999999886, -0.009999999999999787, -0.05474999999999852, -0.015499999999999403, 0.09800000000000075, 0.05224999999999902, 0.058999999999999275, 0.13049999999999962, 0.03924999999999912, 0.011499999999998067, -0.11300000000000132, -0.030249999999998778, 0.04300000000000104, 0.16549999999999976, 0.0852499999999985, 0.16499999999999915, -0.050250000000001904, -0.1407500000000006, -0.9792500000000004, -0.3570000000000011, 0.24150000000000027, 0.19974999999999987, 0.20599999999999952, -0.08800000000000097, 0.10500000000000043, 0.05150000000000077, -0.28749999999999787, 0.010749999999999815], zp_timestamp='2025-11-03T18:54:00')
2025-11-03T20:57:37.741 [DEBUG] [Thread-122491] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:57:37.813 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:57:37.831 [DEBUG] [Thread-122494] [transport.py] [_log()] starting thread (client mode): 0x141d91e0
2025-11-03T20:57:37.831 [DEBUG] [Thread-122494] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:57:37.845 [DEBUG] [Thread-122494] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:57:37.845 [INFO] [Thread-122494] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:57:37.853 [DEBUG] [Thread-122494] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:57:37.853 [DEBUG] [Thread-122494] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:57:37.853 [DEBUG] [Thread-122494] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:57:37.853 [DEBUG] [Thread-122494] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:57:37.853 [DEBUG] [Thread-122494] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:57:37.853 [DEBUG] [Thread-122494] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:57:37.853 [DEBUG] [Thread-122494] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:57:37.853 [DEBUG] [Thread-122494] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:57:37.853 [DEBUG] [Thread-122494] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:57:37.853 [DEBUG] [Thread-122494] [transport.py] [_log()] client lang: <none>
2025-11-03T20:57:37.853 [DEBUG] [Thread-122494] [transport.py] [_log()] server lang: <none>
2025-11-03T20:57:37.853 [DEBUG] [Thread-122494] [transport.py] [_log()] kex follows: False
2025-11-03T20:57:37.853 [DEBUG] [Thread-122494] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:57:37.853 [DEBUG] [Thread-122494] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:57:37.853 [DEBUG] [Thread-122494] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:57:37.853 [DEBUG] [Thread-122494] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:57:37.853 [DEBUG] [Thread-122494] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:57:37.853 [DEBUG] [Thread-122494] [transport.py] [_log()] Compression: none
2025-11-03T20:57:37.853 [DEBUG] [Thread-122494] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:57:37.908 [DEBUG] [Thread-122494] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:57:37.908 [DEBUG] [Thread-122494] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:57:37.908 [DEBUG] [Thread-122494] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:57:37.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:57:37.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:57:37.965 [DEBUG] [Thread-122494] [transport.py] [_log()] userauth is OK
2025-11-03T20:57:37.965 [DEBUG] [Thread-122494] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:57:37.965 [DEBUG] [Thread-122494] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:57:37.966 [DEBUG] [Thread-122494] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:57:37.966 [DEBUG] [Thread-122494] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:57:37.979 [INFO] [Thread-122494] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:57:37.979 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:57:37.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:57:38.793 [DEBUG] [Thread-122494] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:57:38.794 [DEBUG] [Thread-122494] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:57:38.844 [DEBUG] [Thread-122494] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:57:38.844 [DEBUG] [Thread-122494] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:57:38.855 [DEBUG] [Thread-122494] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:57:38.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:57:38.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:57:38.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:57:38.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:57:38.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:57:38.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:57:38.897 [DEBUG] [Thread-122494] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:57:39.116 [DEBUG] [Thread-122496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:57:51.299 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:57:54.180 [DEBUG] [Thread-122497 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:58:00.363 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:58:04.477 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:58:08.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:58:08.891 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:58:08.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:58:09.219 [DEBUG] [Thread-122498 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:58:09.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 57, 56), 34.52, 8.24, 0.0, 16.55, 19.02, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:58:09.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:57:56
2025-11-03T20:58:09.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:58:09.981 [DEBUG] [Thread-122499] [transport.py] [_log()] starting thread (client mode): 0x141da680
2025-11-03T20:58:09.981 [DEBUG] [Thread-122499] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:58:09.998 [DEBUG] [Thread-122499] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:58:09.999 [INFO] [Thread-122499] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:58:10.009 [DEBUG] [Thread-122499] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:58:10.009 [DEBUG] [Thread-122499] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:58:10.009 [DEBUG] [Thread-122499] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:58:10.009 [DEBUG] [Thread-122499] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:58:10.009 [DEBUG] [Thread-122499] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:58:10.009 [DEBUG] [Thread-122499] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:58:10.010 [DEBUG] [Thread-122499] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:58:10.010 [DEBUG] [Thread-122499] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:58:10.010 [DEBUG] [Thread-122499] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:58:10.010 [DEBUG] [Thread-122499] [transport.py] [_log()] client lang: <none>
2025-11-03T20:58:10.010 [DEBUG] [Thread-122499] [transport.py] [_log()] server lang: <none>
2025-11-03T20:58:10.010 [DEBUG] [Thread-122499] [transport.py] [_log()] kex follows: False
2025-11-03T20:58:10.010 [DEBUG] [Thread-122499] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:58:10.010 [DEBUG] [Thread-122499] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:58:10.010 [DEBUG] [Thread-122499] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:58:10.010 [DEBUG] [Thread-122499] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:58:10.010 [DEBUG] [Thread-122499] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:58:10.010 [DEBUG] [Thread-122499] [transport.py] [_log()] Compression: none
2025-11-03T20:58:10.010 [DEBUG] [Thread-122499] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:58:10.021 [DEBUG] [Thread-122499] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:58:10.022 [DEBUG] [Thread-122499] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:58:10.023 [DEBUG] [Thread-122499] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:58:10.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:58:10.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:58:10.025 [DEBUG] [Thread-122499] [transport.py] [_log()] userauth is OK
2025-11-03T20:58:10.025 [DEBUG] [Thread-122499] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:58:10.025 [DEBUG] [Thread-122499] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:58:10.025 [DEBUG] [Thread-122499] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:58:10.025 [DEBUG] [Thread-122499] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:58:10.047 [INFO] [Thread-122499] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:58:10.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:58:10.621 [DEBUG] [Thread-122499] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:58:10.621 [DEBUG] [Thread-122499] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:58:10.621 [DEBUG] [Thread-122499] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:58:10.661 [DEBUG] [Thread-122499] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:58:10.661 [DEBUG] [Thread-122499] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:58:10.663 [DEBUG] [Thread-122499] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:58:10.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:58:10.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:58:10.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:58:10.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:58:10.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:58:10.680 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:58:10.680 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:58:10.680 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:58:10.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:58:10.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.790031 -999.00  +19.10  14.14     13   -9.40 1 1 1 1 1     0    0 27.07 -57.21 ZNESW 17.5 14.1 306.6 24.6 19.1 -27.3 19.1 -26.4 18.8 -25.8 19.1 -27.1
2025-11-03T20:58:10.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:58:10.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:58:10.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.790031
2025-11-03T20:58:10.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:58:10.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:58:10.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:58:10.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:58:10.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:58:10.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:57:56', tmtdew=34.52, humidity=8.24, cloud=0.0, wind=16.55, temperature=19.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:57:56', seeing=1.22, atlas_timestamp='2025-11-03T18:57:38.678', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021750000000000824, -0.020749999999999602, -0.16274999999999906, 0.010499999999998622, -0.015000000000000568, 0.028249999999999886, -0.009999999999999787, -0.05474999999999852, -0.015499999999999403, 0.09800000000000075, 0.05224999999999902, 0.058999999999999275, 0.13049999999999962, 0.03924999999999912, 0.011499999999998067, -0.11300000000000132, -0.030249999999998778, 0.04300000000000104, 0.16549999999999976, 0.0852499999999985, 0.16499999999999915, -0.050250000000001904, -0.1407500000000006, -0.9792500000000004, -0.3570000000000011, 0.24150000000000027, 0.19974999999999987, 0.20599999999999952, -0.08800000000000097, 0.10500000000000043, 0.05150000000000077, -0.28749999999999787, 0.010749999999999815], zp_timestamp='2025-11-03T18:54:00')
2025-11-03T20:58:10.681 [DEBUG] [Thread-122499] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:58:10.756 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:58:10.768 [DEBUG] [Thread-122502] [transport.py] [_log()] starting thread (client mode): 0x11762dd0
2025-11-03T20:58:10.768 [DEBUG] [Thread-122502] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:58:10.784 [DEBUG] [Thread-122502] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:58:10.784 [INFO] [Thread-122502] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:58:10.793 [DEBUG] [Thread-122502] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:58:10.793 [DEBUG] [Thread-122502] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:58:10.793 [DEBUG] [Thread-122502] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:58:10.793 [DEBUG] [Thread-122502] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:58:10.793 [DEBUG] [Thread-122502] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:58:10.793 [DEBUG] [Thread-122502] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:58:10.793 [DEBUG] [Thread-122502] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:58:10.793 [DEBUG] [Thread-122502] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:58:10.793 [DEBUG] [Thread-122502] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:58:10.794 [DEBUG] [Thread-122502] [transport.py] [_log()] client lang: <none>
2025-11-03T20:58:10.794 [DEBUG] [Thread-122502] [transport.py] [_log()] server lang: <none>
2025-11-03T20:58:10.794 [DEBUG] [Thread-122502] [transport.py] [_log()] kex follows: False
2025-11-03T20:58:10.794 [DEBUG] [Thread-122502] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:58:10.794 [DEBUG] [Thread-122502] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:58:10.794 [DEBUG] [Thread-122502] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:58:10.794 [DEBUG] [Thread-122502] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:58:10.794 [DEBUG] [Thread-122502] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:58:10.794 [DEBUG] [Thread-122502] [transport.py] [_log()] Compression: none
2025-11-03T20:58:10.794 [DEBUG] [Thread-122502] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:58:10.850 [DEBUG] [Thread-122502] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:58:10.850 [DEBUG] [Thread-122502] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:58:10.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:58:10.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:58:10.851 [DEBUG] [Thread-122502] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:58:10.909 [DEBUG] [Thread-122502] [transport.py] [_log()] userauth is OK
2025-11-03T20:58:10.909 [DEBUG] [Thread-122502] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:58:10.909 [DEBUG] [Thread-122502] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:58:10.909 [DEBUG] [Thread-122502] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:58:10.909 [DEBUG] [Thread-122502] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:58:10.931 [INFO] [Thread-122502] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:58:10.931 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:58:10.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:58:11.751 [DEBUG] [Thread-122502] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:58:11.751 [DEBUG] [Thread-122502] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:58:11.799 [DEBUG] [Thread-122502] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:58:11.800 [DEBUG] [Thread-122502] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:58:11.808 [DEBUG] [Thread-122502] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:58:11.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:58:11.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:58:11.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:58:11.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:58:11.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:58:11.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:58:11.841 [DEBUG] [Thread-122502] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:58:18.688 [DEBUG] [Thread-122504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:58:24.248 [DEBUG] [Thread-122505 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:58:35.348 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:58:35.349 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:58:39.303 [DEBUG] [Thread-122506 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:58:41.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:58:41.861 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:58:41.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:58:42.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 58, 28), 34.54, 8.22, 0.0, 15.62, 19.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:58:42.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:58:28
2025-11-03T20:58:42.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:58:42.951 [DEBUG] [Thread-122507] [transport.py] [_log()] starting thread (client mode): 0x11762d40
2025-11-03T20:58:42.951 [DEBUG] [Thread-122507] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:58:42.963 [DEBUG] [Thread-122507] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:58:42.963 [INFO] [Thread-122507] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:58:42.966 [DEBUG] [Thread-122507] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:58:42.966 [DEBUG] [Thread-122507] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:58:42.966 [DEBUG] [Thread-122507] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:58:42.966 [DEBUG] [Thread-122507] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:58:42.966 [DEBUG] [Thread-122507] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:58:42.966 [DEBUG] [Thread-122507] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:58:42.966 [DEBUG] [Thread-122507] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:58:42.966 [DEBUG] [Thread-122507] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:58:42.966 [DEBUG] [Thread-122507] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:58:42.966 [DEBUG] [Thread-122507] [transport.py] [_log()] client lang: <none>
2025-11-03T20:58:42.966 [DEBUG] [Thread-122507] [transport.py] [_log()] server lang: <none>
2025-11-03T20:58:42.966 [DEBUG] [Thread-122507] [transport.py] [_log()] kex follows: False
2025-11-03T20:58:42.966 [DEBUG] [Thread-122507] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:58:42.966 [DEBUG] [Thread-122507] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:58:42.966 [DEBUG] [Thread-122507] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:58:42.966 [DEBUG] [Thread-122507] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:58:42.966 [DEBUG] [Thread-122507] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:58:42.967 [DEBUG] [Thread-122507] [transport.py] [_log()] Compression: none
2025-11-03T20:58:42.967 [DEBUG] [Thread-122507] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:58:42.984 [DEBUG] [Thread-122507] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:58:42.985 [DEBUG] [Thread-122507] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:58:42.985 [DEBUG] [Thread-122507] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:58:42.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:58:42.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:58:43.029 [DEBUG] [Thread-122507] [transport.py] [_log()] userauth is OK
2025-11-03T20:58:43.030 [DEBUG] [Thread-122507] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:58:43.030 [DEBUG] [Thread-122507] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:58:43.030 [DEBUG] [Thread-122507] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:58:43.030 [DEBUG] [Thread-122507] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:58:43.053 [INFO] [Thread-122507] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:58:43.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:58:43.662 [DEBUG] [Thread-122507] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:58:43.662 [DEBUG] [Thread-122507] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:58:43.662 [DEBUG] [Thread-122507] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:58:43.703 [DEBUG] [Thread-122507] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:58:43.703 [DEBUG] [Thread-122507] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:58:43.705 [DEBUG] [Thread-122507] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:58:43.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:58:43.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:58:43.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:58:43.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:58:43.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:58:43.734 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:58:43.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:58:43.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:58:43.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:58:43.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.790031 -999.00  +19.10  14.14     13   -9.40 1 1 1 1 1     0    0 27.07 -57.21 ZNESW 17.5 14.1 306.6 24.6 19.1 -27.3 19.1 -26.4 18.8 -25.8 19.1 -27.1
2025-11-03T20:58:43.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:58:43.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:58:43.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.790031
2025-11-03T20:58:43.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:58:43.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:58:43.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:58:43.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:58:43.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:58:43.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:58:28', tmtdew=34.54, humidity=8.22, cloud=0.0, wind=15.62, temperature=19.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:58:29', seeing=1.45, atlas_timestamp='2025-11-03T18:57:38.678', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021750000000000824, -0.020749999999999602, -0.16274999999999906, 0.010499999999998622, -0.015000000000000568, 0.028249999999999886, -0.009999999999999787, -0.05474999999999852, -0.015499999999999403, 0.09800000000000075, 0.05224999999999902, 0.058999999999999275, 0.13049999999999962, 0.03924999999999912, 0.011499999999998067, -0.11300000000000132, -0.030249999999998778, 0.04300000000000104, 0.16549999999999976, 0.0852499999999985, 0.16499999999999915, -0.050250000000001904, -0.1407500000000006, -0.9792500000000004, -0.3570000000000011, 0.24150000000000027, 0.19974999999999987, 0.20599999999999952, -0.08800000000000097, 0.10500000000000043, 0.05150000000000077, -0.28749999999999787, 0.010749999999999815], zp_timestamp='2025-11-03T18:54:00')
2025-11-03T20:58:43.736 [DEBUG] [Thread-122507] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:58:43.807 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:58:43.818 [DEBUG] [Thread-122510] [transport.py] [_log()] starting thread (client mode): 0xed8a4d0
2025-11-03T20:58:43.818 [DEBUG] [Thread-122510] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:58:43.833 [DEBUG] [Thread-122510] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:58:43.833 [INFO] [Thread-122510] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:58:43.841 [DEBUG] [Thread-122510] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:58:43.841 [DEBUG] [Thread-122510] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:58:43.841 [DEBUG] [Thread-122510] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:58:43.841 [DEBUG] [Thread-122510] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:58:43.841 [DEBUG] [Thread-122510] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:58:43.841 [DEBUG] [Thread-122510] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:58:43.841 [DEBUG] [Thread-122510] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:58:43.841 [DEBUG] [Thread-122510] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:58:43.841 [DEBUG] [Thread-122510] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:58:43.841 [DEBUG] [Thread-122510] [transport.py] [_log()] client lang: <none>
2025-11-03T20:58:43.841 [DEBUG] [Thread-122510] [transport.py] [_log()] server lang: <none>
2025-11-03T20:58:43.841 [DEBUG] [Thread-122510] [transport.py] [_log()] kex follows: False
2025-11-03T20:58:43.841 [DEBUG] [Thread-122510] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:58:43.841 [DEBUG] [Thread-122510] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:58:43.841 [DEBUG] [Thread-122510] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:58:43.841 [DEBUG] [Thread-122510] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:58:43.841 [DEBUG] [Thread-122510] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:58:43.841 [DEBUG] [Thread-122510] [transport.py] [_log()] Compression: none
2025-11-03T20:58:43.841 [DEBUG] [Thread-122510] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:58:43.900 [DEBUG] [Thread-122510] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:58:43.900 [DEBUG] [Thread-122510] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:58:43.901 [DEBUG] [Thread-122510] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:58:43.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:58:43.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:58:43.957 [DEBUG] [Thread-122510] [transport.py] [_log()] userauth is OK
2025-11-03T20:58:43.957 [DEBUG] [Thread-122510] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:58:43.957 [DEBUG] [Thread-122510] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:58:43.957 [DEBUG] [Thread-122510] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:58:43.957 [DEBUG] [Thread-122510] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:58:43.971 [INFO] [Thread-122510] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:58:43.971 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:58:43.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:58:44.826 [DEBUG] [Thread-122510] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:58:44.826 [DEBUG] [Thread-122510] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:58:44.877 [DEBUG] [Thread-122510] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:58:44.877 [DEBUG] [Thread-122510] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:58:44.891 [DEBUG] [Thread-122510] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:58:44.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:58:44.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:58:44.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:58:44.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:58:44.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:58:44.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:58:44.938 [DEBUG] [Thread-122510] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:58:54.331 [DEBUG] [Thread-122512 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:59:09.377 [DEBUG] [Thread-122513 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:59:14.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:59:14.966 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:59:14.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:59:15.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 59, 1), 34.5, 8.26, 0.0, 15.6, 19.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:59:15.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:59:01
2025-11-03T20:59:15.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:59:16.056 [DEBUG] [Thread-122514] [transport.py] [_log()] starting thread (client mode): 0x1174d030
2025-11-03T20:59:16.056 [DEBUG] [Thread-122514] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:59:16.073 [DEBUG] [Thread-122514] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:59:16.074 [INFO] [Thread-122514] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:59:16.077 [DEBUG] [Thread-122514] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:59:16.077 [DEBUG] [Thread-122514] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:59:16.077 [DEBUG] [Thread-122514] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:59:16.077 [DEBUG] [Thread-122514] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:59:16.077 [DEBUG] [Thread-122514] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:59:16.077 [DEBUG] [Thread-122514] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:59:16.077 [DEBUG] [Thread-122514] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:59:16.077 [DEBUG] [Thread-122514] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:59:16.078 [DEBUG] [Thread-122514] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:59:16.078 [DEBUG] [Thread-122514] [transport.py] [_log()] client lang: <none>
2025-11-03T20:59:16.078 [DEBUG] [Thread-122514] [transport.py] [_log()] server lang: <none>
2025-11-03T20:59:16.078 [DEBUG] [Thread-122514] [transport.py] [_log()] kex follows: False
2025-11-03T20:59:16.078 [DEBUG] [Thread-122514] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:59:16.078 [DEBUG] [Thread-122514] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:59:16.078 [DEBUG] [Thread-122514] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:59:16.078 [DEBUG] [Thread-122514] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:59:16.078 [DEBUG] [Thread-122514] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:59:16.079 [DEBUG] [Thread-122514] [transport.py] [_log()] Compression: none
2025-11-03T20:59:16.079 [DEBUG] [Thread-122514] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:59:16.099 [DEBUG] [Thread-122514] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:59:16.102 [DEBUG] [Thread-122514] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:59:16.103 [DEBUG] [Thread-122514] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:59:16.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:59:16.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:59:16.106 [DEBUG] [Thread-122514] [transport.py] [_log()] userauth is OK
2025-11-03T20:59:16.106 [DEBUG] [Thread-122514] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:59:16.106 [DEBUG] [Thread-122514] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:59:16.106 [DEBUG] [Thread-122514] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:59:16.106 [DEBUG] [Thread-122514] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:59:16.142 [INFO] [Thread-122514] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:59:16.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:59:16.801 [DEBUG] [Thread-122514] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:59:16.802 [DEBUG] [Thread-122514] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:59:16.802 [DEBUG] [Thread-122514] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:59:16.834 [DEBUG] [Thread-122514] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:59:16.834 [DEBUG] [Thread-122514] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:59:16.838 [DEBUG] [Thread-122514] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:59:16.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:59:16.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:59:16.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:59:16.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:59:16.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:59:16.864 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:59:16.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:59:16.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:59:16.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:59:16.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.790726 -999.00  +19.20  19.27     13   -9.10 1 1 1 1 1     0    0 27.11 -65.88 ZNESW 19.6 19.3 303.2 22.8 19.1 -27.2 19.1 -26.2 18.8 -25.8 19.1 -27.1
2025-11-03T20:59:16.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:59:16.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:59:16.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.790726
2025-11-03T20:59:16.871 [DEBUG] [Thread-122514] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:59:16.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:59:16.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:59:16.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:59:16.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:59:16.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:59:16.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:59:01', tmtdew=34.5, humidity=8.26, cloud=0.0, wind=15.6, temperature=19.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:59:01', seeing=1.18, atlas_timestamp='2025-11-03T18:58:38.726', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021750000000000824, -0.020749999999999602, -0.16274999999999906, 0.010499999999998622, -0.015000000000000568, 0.028249999999999886, -0.009999999999999787, -0.05474999999999852, -0.015499999999999403, 0.09800000000000075, 0.05224999999999902, 0.058999999999999275, 0.13049999999999962, 0.03924999999999912, 0.011499999999998067, -0.11300000000000132, -0.030249999999998778, 0.04300000000000104, 0.16549999999999976, 0.0852499999999985, 0.16499999999999915, -0.050250000000001904, -0.1407500000000006, -0.9792500000000004, -0.3570000000000011, 0.24150000000000027, 0.19974999999999987, 0.20599999999999952, -0.08800000000000097, 0.10500000000000043, 0.05150000000000077, -0.28749999999999787, 0.010749999999999815], zp_timestamp='2025-11-03T18:57:00')
2025-11-03T20:59:16.965 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:59:16.976 [DEBUG] [Thread-122517] [transport.py] [_log()] starting thread (client mode): 0x1174e890
2025-11-03T20:59:16.976 [DEBUG] [Thread-122517] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:59:16.991 [DEBUG] [Thread-122517] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:59:16.991 [INFO] [Thread-122517] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:59:16.999 [DEBUG] [Thread-122517] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:59:16.999 [DEBUG] [Thread-122517] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:59:16.999 [DEBUG] [Thread-122517] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:59:16.999 [DEBUG] [Thread-122517] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:59:16.999 [DEBUG] [Thread-122517] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:59:16.999 [DEBUG] [Thread-122517] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:59:16.999 [DEBUG] [Thread-122517] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:59:16.999 [DEBUG] [Thread-122517] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:59:16.999 [DEBUG] [Thread-122517] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:59:16.999 [DEBUG] [Thread-122517] [transport.py] [_log()] client lang: <none>
2025-11-03T20:59:16.999 [DEBUG] [Thread-122517] [transport.py] [_log()] server lang: <none>
2025-11-03T20:59:16.999 [DEBUG] [Thread-122517] [transport.py] [_log()] kex follows: False
2025-11-03T20:59:16.999 [DEBUG] [Thread-122517] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:59:16.999 [DEBUG] [Thread-122517] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:59:16.999 [DEBUG] [Thread-122517] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:59:17.000 [DEBUG] [Thread-122517] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:59:17.000 [DEBUG] [Thread-122517] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:59:17.000 [DEBUG] [Thread-122517] [transport.py] [_log()] Compression: none
2025-11-03T20:59:17.000 [DEBUG] [Thread-122517] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:59:17.058 [DEBUG] [Thread-122517] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:59:17.059 [DEBUG] [Thread-122517] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:59:17.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:59:17.060 [DEBUG] [Thread-122517] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:59:17.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:59:17.117 [DEBUG] [Thread-122517] [transport.py] [_log()] userauth is OK
2025-11-03T20:59:17.118 [DEBUG] [Thread-122517] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:59:17.118 [DEBUG] [Thread-122517] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:59:17.118 [DEBUG] [Thread-122517] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:59:17.118 [DEBUG] [Thread-122517] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:59:17.137 [INFO] [Thread-122517] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:59:17.137 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:59:17.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:59:17.989 [DEBUG] [Thread-122517] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:59:17.989 [DEBUG] [Thread-122517] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:59:18.039 [DEBUG] [Thread-122517] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:59:18.039 [DEBUG] [Thread-122517] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:59:18.049 [DEBUG] [Thread-122517] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:59:18.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:59:18.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:59:18.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:59:18.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:59:18.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:59:18.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:59:18.098 [DEBUG] [Thread-122517] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:59:18.992 [DEBUG] [Thread-122519 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:59:24.414 [DEBUG] [Thread-122520 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:59:27.011 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:59:35.550 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:59:35.552 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:59:39.471 [DEBUG] [Thread-122521 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T20:59:48.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T20:59:48.091 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T20:59:48.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T20:59:48.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 20, 59, 33), 34.06, 8.76, 0.0, 17.42, 19.12, 0, 0, 0, 2, 0, 0),)
2025-11-03T20:59:48.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 20:59:33
2025-11-03T20:59:49.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T20:59:49.159 [DEBUG] [Thread-122522] [transport.py] [_log()] starting thread (client mode): 0x11763490
2025-11-03T20:59:49.159 [DEBUG] [Thread-122522] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:59:49.178 [DEBUG] [Thread-122522] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T20:59:49.178 [INFO] [Thread-122522] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T20:59:49.182 [DEBUG] [Thread-122522] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:59:49.182 [DEBUG] [Thread-122522] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T20:59:49.182 [DEBUG] [Thread-122522] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:59:49.182 [DEBUG] [Thread-122522] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:59:49.182 [DEBUG] [Thread-122522] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:59:49.182 [DEBUG] [Thread-122522] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:59:49.182 [DEBUG] [Thread-122522] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:59:49.182 [DEBUG] [Thread-122522] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:59:49.182 [DEBUG] [Thread-122522] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:59:49.182 [DEBUG] [Thread-122522] [transport.py] [_log()] client lang: <none>
2025-11-03T20:59:49.182 [DEBUG] [Thread-122522] [transport.py] [_log()] server lang: <none>
2025-11-03T20:59:49.182 [DEBUG] [Thread-122522] [transport.py] [_log()] kex follows: False
2025-11-03T20:59:49.182 [DEBUG] [Thread-122522] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:59:49.182 [DEBUG] [Thread-122522] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:59:49.182 [DEBUG] [Thread-122522] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:59:49.182 [DEBUG] [Thread-122522] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:59:49.182 [DEBUG] [Thread-122522] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:59:49.182 [DEBUG] [Thread-122522] [transport.py] [_log()] Compression: none
2025-11-03T20:59:49.182 [DEBUG] [Thread-122522] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:59:49.191 [DEBUG] [Thread-122522] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:59:49.192 [DEBUG] [Thread-122522] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:59:49.193 [DEBUG] [Thread-122522] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T20:59:49.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T20:59:49.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:59:49.194 [DEBUG] [Thread-122522] [transport.py] [_log()] userauth is OK
2025-11-03T20:59:49.194 [DEBUG] [Thread-122522] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:59:49.194 [DEBUG] [Thread-122522] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:59:49.195 [DEBUG] [Thread-122522] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T20:59:49.195 [DEBUG] [Thread-122522] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:59:49.207 [INFO] [Thread-122522] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:59:49.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:59:49.861 [DEBUG] [Thread-122522] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:59:49.861 [DEBUG] [Thread-122522] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:59:49.861 [DEBUG] [Thread-122522] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T20:59:49.902 [DEBUG] [Thread-122522] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:59:49.902 [DEBUG] [Thread-122522] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:59:49.906 [DEBUG] [Thread-122522] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:59:49.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:59:49.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T20:59:49.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T20:59:49.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T20:59:49.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:59:49.938 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T20:59:49.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:59:49.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:59:49.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T20:59:49.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.791073 -999.00  +19.20  17.47     14   -8.90 1 1 1 1 1     0    0 27.05 -66.04 ZNESW 20.0 17.5 309.8 20.9 19.1 -27.5 19.1 -26.1 18.9 -26.2 -999.0 -999.0
2025-11-03T20:59:49.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T20:59:49.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T20:59:49.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.791073
2025-11-03T20:59:49.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T20:59:49.941 [DEBUG] [Thread-122522] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:59:49.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T20:59:49.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T20:59:49.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T20:59:49.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T20:59:49.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T20:59:33', tmtdew=34.06, humidity=8.76, cloud=0.0, wind=17.42, temperature=19.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T20:59:34', seeing=1.18, atlas_timestamp='2025-11-03T18:59:08.707', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021750000000000824, -0.020749999999999602, -0.16274999999999906, 0.010499999999998622, -0.015000000000000568, 0.028249999999999886, -0.009999999999999787, -0.05474999999999852, -0.015499999999999403, 0.09800000000000075, 0.05224999999999902, 0.058999999999999275, 0.13049999999999962, 0.03924999999999912, 0.011499999999998067, -0.11300000000000132, -0.030249999999998778, 0.04300000000000104, 0.16549999999999976, 0.0852499999999985, 0.16499999999999915, -0.050250000000001904, -0.1407500000000006, -0.9792500000000004, -0.3570000000000011, 0.24150000000000027, 0.19974999999999987, 0.20599999999999952, -0.08800000000000097, 0.10500000000000043, 0.05150000000000077, -0.28749999999999787, 0.010749999999999815], zp_timestamp='2025-11-03T18:57:00')
2025-11-03T20:59:50.025 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T20:59:50.038 [DEBUG] [Thread-122525] [transport.py] [_log()] starting thread (client mode): 0xed059c0
2025-11-03T20:59:50.038 [DEBUG] [Thread-122525] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T20:59:50.054 [DEBUG] [Thread-122525] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T20:59:50.055 [INFO] [Thread-122525] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T20:59:50.062 [DEBUG] [Thread-122525] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T20:59:50.063 [DEBUG] [Thread-122525] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T20:59:50.063 [DEBUG] [Thread-122525] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T20:59:50.063 [DEBUG] [Thread-122525] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:59:50.063 [DEBUG] [Thread-122525] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T20:59:50.063 [DEBUG] [Thread-122525] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:59:50.063 [DEBUG] [Thread-122525] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T20:59:50.063 [DEBUG] [Thread-122525] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T20:59:50.063 [DEBUG] [Thread-122525] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T20:59:50.063 [DEBUG] [Thread-122525] [transport.py] [_log()] client lang: <none>
2025-11-03T20:59:50.063 [DEBUG] [Thread-122525] [transport.py] [_log()] server lang: <none>
2025-11-03T20:59:50.063 [DEBUG] [Thread-122525] [transport.py] [_log()] kex follows: False
2025-11-03T20:59:50.063 [DEBUG] [Thread-122525] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T20:59:50.063 [DEBUG] [Thread-122525] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T20:59:50.063 [DEBUG] [Thread-122525] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T20:59:50.063 [DEBUG] [Thread-122525] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T20:59:50.063 [DEBUG] [Thread-122525] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T20:59:50.064 [DEBUG] [Thread-122525] [transport.py] [_log()] Compression: none
2025-11-03T20:59:50.064 [DEBUG] [Thread-122525] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T20:59:50.129 [DEBUG] [Thread-122525] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T20:59:50.130 [DEBUG] [Thread-122525] [transport.py] [_log()] Switch to new keys ...
2025-11-03T20:59:50.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T20:59:50.131 [DEBUG] [Thread-122525] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T20:59:50.132 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T20:59:50.187 [DEBUG] [Thread-122525] [transport.py] [_log()] userauth is OK
2025-11-03T20:59:50.187 [DEBUG] [Thread-122525] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T20:59:50.187 [DEBUG] [Thread-122525] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T20:59:50.187 [DEBUG] [Thread-122525] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T20:59:50.188 [DEBUG] [Thread-122525] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T20:59:50.207 [INFO] [Thread-122525] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T20:59:50.208 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T20:59:50.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T20:59:51.123 [DEBUG] [Thread-122525] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T20:59:51.123 [DEBUG] [Thread-122525] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T20:59:51.171 [DEBUG] [Thread-122525] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T20:59:51.172 [DEBUG] [Thread-122525] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T20:59:51.180 [DEBUG] [Thread-122525] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T20:59:51.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T20:59:51.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T20:59:51.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T20:59:51.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T20:59:51.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T20:59:51.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T20:59:51.225 [DEBUG] [Thread-122525] [transport.py] [_log()] EOF in transport thread
2025-11-03T20:59:54.510 [DEBUG] [Thread-122527 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:00:09.590 [DEBUG] [Thread-122528 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:00:19.242 [DEBUG] [Thread-122529 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:00:21.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:00:21.241 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:00:21.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:00:22.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 0, 5), 34.03, 8.76, 0.0, 17.36, 19.0, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:00:22.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:00:05
2025-11-03T21:00:22.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:00:22.362 [DEBUG] [Thread-122530] [transport.py] [_log()] starting thread (client mode): 0xeda3a60
2025-11-03T21:00:22.363 [DEBUG] [Thread-122530] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:00:22.374 [DEBUG] [Thread-122530] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:00:22.374 [INFO] [Thread-122530] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:00:22.377 [DEBUG] [Thread-122530] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:00:22.378 [DEBUG] [Thread-122530] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:00:22.378 [DEBUG] [Thread-122530] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:00:22.378 [DEBUG] [Thread-122530] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:00:22.378 [DEBUG] [Thread-122530] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:00:22.378 [DEBUG] [Thread-122530] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:00:22.378 [DEBUG] [Thread-122530] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:00:22.378 [DEBUG] [Thread-122530] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:00:22.378 [DEBUG] [Thread-122530] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:00:22.378 [DEBUG] [Thread-122530] [transport.py] [_log()] client lang: <none>
2025-11-03T21:00:22.378 [DEBUG] [Thread-122530] [transport.py] [_log()] server lang: <none>
2025-11-03T21:00:22.378 [DEBUG] [Thread-122530] [transport.py] [_log()] kex follows: False
2025-11-03T21:00:22.378 [DEBUG] [Thread-122530] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:00:22.378 [DEBUG] [Thread-122530] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:00:22.379 [DEBUG] [Thread-122530] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:00:22.379 [DEBUG] [Thread-122530] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:00:22.379 [DEBUG] [Thread-122530] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:00:22.379 [DEBUG] [Thread-122530] [transport.py] [_log()] Compression: none
2025-11-03T21:00:22.379 [DEBUG] [Thread-122530] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:00:22.397 [DEBUG] [Thread-122530] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:00:22.397 [DEBUG] [Thread-122530] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:00:22.398 [DEBUG] [Thread-122530] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:00:22.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:00:22.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:00:22.441 [DEBUG] [Thread-122530] [transport.py] [_log()] userauth is OK
2025-11-03T21:00:22.442 [DEBUG] [Thread-122530] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:00:22.442 [DEBUG] [Thread-122530] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:00:22.442 [DEBUG] [Thread-122530] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:00:22.442 [DEBUG] [Thread-122530] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:00:22.474 [INFO] [Thread-122530] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:00:22.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:00:23.225 [DEBUG] [Thread-122530] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:00:23.226 [DEBUG] [Thread-122530] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:00:23.226 [DEBUG] [Thread-122530] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:00:23.257 [DEBUG] [Thread-122530] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:00:23.258 [DEBUG] [Thread-122530] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:00:23.261 [DEBUG] [Thread-122530] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:00:23.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:00:23.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:00:23.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:00:23.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:00:23.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:00:23.286 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:00:23.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:00:23.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:00:23.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:00:23.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.791420 -999.00  +19.30  21.72     14   -8.40 1 1 1 1 1     0    0 27.52 -75.59 ZNESW 18.6 21.7 297.0 23.7 19.1 -27.1 19.1 -26.1 18.8 -26.1 19.1 -27.0
2025-11-03T21:00:23.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:00:23.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:00:23.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.791420
2025-11-03T21:00:23.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:00:23.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:00:23.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:00:23.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:00:23.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:00:23.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:00:05', tmtdew=34.03, humidity=8.76, cloud=0.0, wind=17.36, temperature=19.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:00:06', seeing=1.14, atlas_timestamp='2025-11-03T18:59:38.688', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021750000000000824, -0.020749999999999602, -0.16274999999999906, 0.010499999999998622, -0.015000000000000568, 0.028249999999999886, -0.009999999999999787, -0.05474999999999852, -0.015499999999999403, 0.09800000000000075, 0.05224999999999902, 0.058999999999999275, 0.13049999999999962, 0.03924999999999912, 0.011499999999998067, -0.11300000000000132, -0.030249999999998778, 0.04300000000000104, 0.16549999999999976, 0.0852499999999985, 0.16499999999999915, -0.050250000000001904, -0.1407500000000006, -0.9792500000000004, -0.3570000000000011, 0.24150000000000027, 0.19974999999999987, 0.20599999999999952, -0.08800000000000097, 0.10500000000000043, 0.05150000000000077, -0.28749999999999787, 0.010749999999999815], zp_timestamp='2025-11-03T18:57:00')
2025-11-03T21:00:23.289 [DEBUG] [Thread-122530] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:00:23.363 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:00:23.379 [DEBUG] [Thread-122533] [transport.py] [_log()] starting thread (client mode): 0x11799420
2025-11-03T21:00:23.379 [DEBUG] [Thread-122533] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:00:23.398 [DEBUG] [Thread-122533] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:00:23.398 [INFO] [Thread-122533] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:00:23.409 [DEBUG] [Thread-122533] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:00:23.409 [DEBUG] [Thread-122533] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:00:23.409 [DEBUG] [Thread-122533] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:00:23.409 [DEBUG] [Thread-122533] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:00:23.410 [DEBUG] [Thread-122533] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:00:23.410 [DEBUG] [Thread-122533] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:00:23.410 [DEBUG] [Thread-122533] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:00:23.410 [DEBUG] [Thread-122533] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:00:23.410 [DEBUG] [Thread-122533] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:00:23.410 [DEBUG] [Thread-122533] [transport.py] [_log()] client lang: <none>
2025-11-03T21:00:23.410 [DEBUG] [Thread-122533] [transport.py] [_log()] server lang: <none>
2025-11-03T21:00:23.410 [DEBUG] [Thread-122533] [transport.py] [_log()] kex follows: False
2025-11-03T21:00:23.411 [DEBUG] [Thread-122533] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:00:23.411 [DEBUG] [Thread-122533] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:00:23.411 [DEBUG] [Thread-122533] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:00:23.411 [DEBUG] [Thread-122533] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:00:23.411 [DEBUG] [Thread-122533] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:00:23.411 [DEBUG] [Thread-122533] [transport.py] [_log()] Compression: none
2025-11-03T21:00:23.411 [DEBUG] [Thread-122533] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:00:23.477 [DEBUG] [Thread-122533] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:00:23.477 [DEBUG] [Thread-122533] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:00:23.478 [DEBUG] [Thread-122533] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:00:23.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:00:23.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:00:23.539 [DEBUG] [Thread-122533] [transport.py] [_log()] userauth is OK
2025-11-03T21:00:23.540 [DEBUG] [Thread-122533] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:00:23.540 [DEBUG] [Thread-122533] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:00:23.540 [DEBUG] [Thread-122533] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:00:23.540 [DEBUG] [Thread-122533] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:00:23.561 [INFO] [Thread-122533] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:00:23.561 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:00:23.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:00:24.387 [DEBUG] [Thread-122533] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:00:24.387 [DEBUG] [Thread-122533] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:00:24.436 [DEBUG] [Thread-122533] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:00:24.436 [DEBUG] [Thread-122533] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:00:24.446 [DEBUG] [Thread-122533] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:00:24.455 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:00:24.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:00:24.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:00:24.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:00:24.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:00:24.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:00:24.482 [DEBUG] [Thread-122533] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:00:24.628 [DEBUG] [Thread-122535 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:00:35.764 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:00:35.765 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:00:39.702 [DEBUG] [Thread-122536 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:00:54.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:00:54.504 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:00:54.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:00:54.734 [DEBUG] [Thread-122537 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:00:55.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 0, 38), 33.8, 8.82, 0.0, 17.86, 19.1, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:00:55.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:00:38
2025-11-03T21:00:55.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:00:55.422 [DEBUG] [Thread-122538] [transport.py] [_log()] starting thread (client mode): 0x117ebe50
2025-11-03T21:00:55.423 [DEBUG] [Thread-122538] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:00:55.440 [DEBUG] [Thread-122538] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:00:55.440 [INFO] [Thread-122538] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:00:55.443 [DEBUG] [Thread-122538] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:00:55.443 [DEBUG] [Thread-122538] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:00:55.443 [DEBUG] [Thread-122538] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:00:55.443 [DEBUG] [Thread-122538] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:00:55.443 [DEBUG] [Thread-122538] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:00:55.443 [DEBUG] [Thread-122538] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:00:55.443 [DEBUG] [Thread-122538] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:00:55.443 [DEBUG] [Thread-122538] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:00:55.443 [DEBUG] [Thread-122538] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:00:55.443 [DEBUG] [Thread-122538] [transport.py] [_log()] client lang: <none>
2025-11-03T21:00:55.443 [DEBUG] [Thread-122538] [transport.py] [_log()] server lang: <none>
2025-11-03T21:00:55.443 [DEBUG] [Thread-122538] [transport.py] [_log()] kex follows: False
2025-11-03T21:00:55.443 [DEBUG] [Thread-122538] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:00:55.443 [DEBUG] [Thread-122538] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:00:55.443 [DEBUG] [Thread-122538] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:00:55.443 [DEBUG] [Thread-122538] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:00:55.443 [DEBUG] [Thread-122538] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:00:55.443 [DEBUG] [Thread-122538] [transport.py] [_log()] Compression: none
2025-11-03T21:00:55.443 [DEBUG] [Thread-122538] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:00:55.450 [DEBUG] [Thread-122538] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:00:55.450 [DEBUG] [Thread-122538] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:00:55.451 [DEBUG] [Thread-122538] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:00:55.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:00:55.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:00:55.452 [DEBUG] [Thread-122538] [transport.py] [_log()] userauth is OK
2025-11-03T21:00:55.452 [DEBUG] [Thread-122538] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:00:55.452 [DEBUG] [Thread-122538] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:00:55.452 [DEBUG] [Thread-122538] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:00:55.452 [DEBUG] [Thread-122538] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:00:55.467 [INFO] [Thread-122538] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:00:55.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:00:56.087 [DEBUG] [Thread-122538] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:00:56.087 [DEBUG] [Thread-122538] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:00:56.087 [DEBUG] [Thread-122538] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:00:56.129 [DEBUG] [Thread-122538] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:00:56.129 [DEBUG] [Thread-122538] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:00:56.132 [DEBUG] [Thread-122538] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:00:56.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:00:56.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:00:56.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:00:56.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:00:56.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:00:56.153 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:00:56.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:00:56.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:00:56.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:00:56.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.791767 -999.00  +19.40  19.60     14   -8.50 1 1 1 1 1     0    0 26.44 -77.24 ZNESW 18.6 19.6 297.8 22.3 19.2 -27.2 19.1 -26.3 18.9 -26.1 19.1 -27.0
2025-11-03T21:00:56.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:00:56.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:00:56.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.791767
2025-11-03T21:00:56.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:00:56.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:00:56.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:00:56.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:00:56.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:00:56.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:00:38', tmtdew=33.8, humidity=8.82, cloud=0.0, wind=17.86, temperature=19.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:00:39', seeing=1.17, atlas_timestamp='2025-11-03T19:00:08.669', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021750000000000824, -0.020749999999999602, -0.16274999999999906, 0.010499999999998622, -0.015000000000000568, 0.028249999999999886, -0.009999999999999787, -0.05474999999999852, -0.015499999999999403, 0.09800000000000075, 0.05224999999999902, 0.058999999999999275, 0.13049999999999962, 0.03924999999999912, 0.011499999999998067, -0.11300000000000132, -0.030249999999998778, 0.04300000000000104, 0.16549999999999976, 0.0852499999999985, 0.16499999999999915, -0.050250000000001904, -0.1407500000000006, -0.9792500000000004, -0.3570000000000011, 0.24150000000000027, 0.19974999999999987, 0.20599999999999952, -0.08800000000000097, 0.10500000000000043, 0.05150000000000077, -0.28749999999999787, 0.010749999999999815], zp_timestamp='2025-11-03T18:57:00')
2025-11-03T21:00:56.156 [DEBUG] [Thread-122538] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:00:56.236 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:00:56.248 [DEBUG] [Thread-122541] [transport.py] [_log()] starting thread (client mode): 0x11761960
2025-11-03T21:00:56.248 [DEBUG] [Thread-122541] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:00:56.263 [DEBUG] [Thread-122541] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:00:56.263 [INFO] [Thread-122541] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:00:56.271 [DEBUG] [Thread-122541] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:00:56.271 [DEBUG] [Thread-122541] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:00:56.271 [DEBUG] [Thread-122541] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:00:56.271 [DEBUG] [Thread-122541] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:00:56.271 [DEBUG] [Thread-122541] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:00:56.271 [DEBUG] [Thread-122541] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:00:56.271 [DEBUG] [Thread-122541] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:00:56.271 [DEBUG] [Thread-122541] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:00:56.271 [DEBUG] [Thread-122541] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:00:56.271 [DEBUG] [Thread-122541] [transport.py] [_log()] client lang: <none>
2025-11-03T21:00:56.271 [DEBUG] [Thread-122541] [transport.py] [_log()] server lang: <none>
2025-11-03T21:00:56.271 [DEBUG] [Thread-122541] [transport.py] [_log()] kex follows: False
2025-11-03T21:00:56.272 [DEBUG] [Thread-122541] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:00:56.272 [DEBUG] [Thread-122541] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:00:56.272 [DEBUG] [Thread-122541] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:00:56.272 [DEBUG] [Thread-122541] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:00:56.272 [DEBUG] [Thread-122541] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:00:56.272 [DEBUG] [Thread-122541] [transport.py] [_log()] Compression: none
2025-11-03T21:00:56.272 [DEBUG] [Thread-122541] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:00:56.330 [DEBUG] [Thread-122541] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:00:56.330 [DEBUG] [Thread-122541] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:00:56.330 [DEBUG] [Thread-122541] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:00:56.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:00:56.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:00:56.389 [DEBUG] [Thread-122541] [transport.py] [_log()] userauth is OK
2025-11-03T21:00:56.389 [DEBUG] [Thread-122541] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:00:56.389 [DEBUG] [Thread-122541] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:00:56.389 [DEBUG] [Thread-122541] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:00:56.389 [DEBUG] [Thread-122541] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:00:56.403 [INFO] [Thread-122541] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:00:56.403 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:00:56.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:00:56.914 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:00:57.239 [DEBUG] [Thread-122541] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:00:57.239 [DEBUG] [Thread-122541] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:00:57.288 [DEBUG] [Thread-122541] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:00:57.288 [DEBUG] [Thread-122541] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:00:57.299 [DEBUG] [Thread-122541] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:00:57.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:00:57.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:00:57.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:00:57.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:00:57.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:00:57.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:00:57.357 [DEBUG] [Thread-122541] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:01:00.073 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:01:05.096 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:01:09.763 [DEBUG] [Thread-122543 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:01:11.493 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:01:19.457 [DEBUG] [Thread-122544 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:01:24.820 [DEBUG] [Thread-122545 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:01:27.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:01:27.371 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:01:27.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:01:28.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 1, 10), 33.65, 8.92, 0.0, 18.21, 19.05, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:01:28.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:01:10
2025-11-03T21:01:28.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:01:28.779 [DEBUG] [Thread-122546] [transport.py] [_log()] starting thread (client mode): 0xed05c60
2025-11-03T21:01:28.779 [DEBUG] [Thread-122546] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:01:28.799 [DEBUG] [Thread-122546] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:01:28.799 [INFO] [Thread-122546] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:01:28.802 [DEBUG] [Thread-122546] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:01:28.802 [DEBUG] [Thread-122546] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:01:28.802 [DEBUG] [Thread-122546] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:01:28.802 [DEBUG] [Thread-122546] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:01:28.802 [DEBUG] [Thread-122546] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:01:28.802 [DEBUG] [Thread-122546] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:01:28.802 [DEBUG] [Thread-122546] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:01:28.802 [DEBUG] [Thread-122546] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:01:28.802 [DEBUG] [Thread-122546] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:01:28.802 [DEBUG] [Thread-122546] [transport.py] [_log()] client lang: <none>
2025-11-03T21:01:28.802 [DEBUG] [Thread-122546] [transport.py] [_log()] server lang: <none>
2025-11-03T21:01:28.802 [DEBUG] [Thread-122546] [transport.py] [_log()] kex follows: False
2025-11-03T21:01:28.802 [DEBUG] [Thread-122546] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:01:28.802 [DEBUG] [Thread-122546] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:01:28.802 [DEBUG] [Thread-122546] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:01:28.802 [DEBUG] [Thread-122546] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:01:28.802 [DEBUG] [Thread-122546] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:01:28.802 [DEBUG] [Thread-122546] [transport.py] [_log()] Compression: none
2025-11-03T21:01:28.802 [DEBUG] [Thread-122546] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:01:28.819 [DEBUG] [Thread-122546] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:01:28.819 [DEBUG] [Thread-122546] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:01:28.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:01:28.820 [DEBUG] [Thread-122546] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:01:28.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:01:28.822 [DEBUG] [Thread-122546] [transport.py] [_log()] userauth is OK
2025-11-03T21:01:28.822 [DEBUG] [Thread-122546] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:01:28.822 [DEBUG] [Thread-122546] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:01:28.822 [DEBUG] [Thread-122546] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:01:28.822 [DEBUG] [Thread-122546] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:01:28.839 [INFO] [Thread-122546] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:01:28.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:01:29.507 [DEBUG] [Thread-122546] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:01:29.507 [DEBUG] [Thread-122546] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:01:29.507 [DEBUG] [Thread-122546] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:01:29.549 [DEBUG] [Thread-122546] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:01:29.549 [DEBUG] [Thread-122546] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:01:29.551 [DEBUG] [Thread-122546] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:01:29.562 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:01:29.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:01:29.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:01:29.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:01:29.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:01:29.578 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:01:29.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:01:29.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:01:29.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:01:29.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.792115 -999.00  +19.40  15.55     14   -8.50 1 1 1 1 1     0    0 26.37 -82.57 ZNESW 18.4 15.6 307.8 20.6 19.2 -27.4 19.1 -26.3 18.9 -26.0 19.1 -26.9
2025-11-03T21:01:29.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:01:29.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:01:29.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.792115
2025-11-03T21:01:29.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:01:29.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:01:29.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:01:29.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:01:29.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:01:29.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:01:10', tmtdew=33.65, humidity=8.92, cloud=0.0, wind=18.21, temperature=19.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:01:11', seeing=1.19, atlas_timestamp='2025-11-03T19:00:38.736', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021750000000000824, -0.020749999999999602, -0.16274999999999906, 0.010499999999998622, -0.015000000000000568, 0.028249999999999886, -0.009999999999999787, -0.05474999999999852, -0.015499999999999403, 0.09800000000000075, 0.05224999999999902, 0.058999999999999275, 0.13049999999999962, 0.03924999999999912, 0.011499999999998067, -0.11300000000000132, -0.030249999999998778, 0.04300000000000104, 0.16549999999999976, 0.0852499999999985, 0.16499999999999915, -0.050250000000001904, -0.1407500000000006, -0.9792500000000004, -0.3570000000000011, 0.24150000000000027, 0.19974999999999987, 0.20599999999999952, -0.08800000000000097, 0.10500000000000043, 0.05150000000000077, -0.28749999999999787, 0.010749999999999815], zp_timestamp='2025-11-03T18:57:00')
2025-11-03T21:01:29.579 [DEBUG] [Thread-122546] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:01:29.653 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:01:29.664 [DEBUG] [Thread-122549] [transport.py] [_log()] starting thread (client mode): 0x11763490
2025-11-03T21:01:29.664 [DEBUG] [Thread-122549] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:01:29.680 [DEBUG] [Thread-122549] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:01:29.680 [INFO] [Thread-122549] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:01:29.687 [DEBUG] [Thread-122549] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:01:29.687 [DEBUG] [Thread-122549] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:01:29.687 [DEBUG] [Thread-122549] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:01:29.687 [DEBUG] [Thread-122549] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:01:29.688 [DEBUG] [Thread-122549] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:01:29.688 [DEBUG] [Thread-122549] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:01:29.688 [DEBUG] [Thread-122549] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:01:29.688 [DEBUG] [Thread-122549] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:01:29.688 [DEBUG] [Thread-122549] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:01:29.688 [DEBUG] [Thread-122549] [transport.py] [_log()] client lang: <none>
2025-11-03T21:01:29.688 [DEBUG] [Thread-122549] [transport.py] [_log()] server lang: <none>
2025-11-03T21:01:29.688 [DEBUG] [Thread-122549] [transport.py] [_log()] kex follows: False
2025-11-03T21:01:29.688 [DEBUG] [Thread-122549] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:01:29.688 [DEBUG] [Thread-122549] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:01:29.688 [DEBUG] [Thread-122549] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:01:29.688 [DEBUG] [Thread-122549] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:01:29.688 [DEBUG] [Thread-122549] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:01:29.688 [DEBUG] [Thread-122549] [transport.py] [_log()] Compression: none
2025-11-03T21:01:29.688 [DEBUG] [Thread-122549] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:01:29.748 [DEBUG] [Thread-122549] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:01:29.748 [DEBUG] [Thread-122549] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:01:29.748 [DEBUG] [Thread-122549] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:01:29.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:01:29.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:01:29.811 [DEBUG] [Thread-122549] [transport.py] [_log()] userauth is OK
2025-11-03T21:01:29.811 [DEBUG] [Thread-122549] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:01:29.811 [DEBUG] [Thread-122549] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:01:29.811 [DEBUG] [Thread-122549] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:01:29.811 [DEBUG] [Thread-122549] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:01:29.826 [INFO] [Thread-122549] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:01:29.826 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:01:29.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:01:29.871 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:01:30.675 [DEBUG] [Thread-122549] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:01:30.675 [DEBUG] [Thread-122549] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:01:30.728 [DEBUG] [Thread-122549] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:01:30.728 [DEBUG] [Thread-122549] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:01:30.741 [DEBUG] [Thread-122549] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:01:30.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:01:30.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:01:30.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:01:30.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:01:30.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:01:30.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:01:31.008 [DEBUG] [Thread-122549] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:01:34.273 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:01:35.965 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:01:35.966 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:01:39.850 [DEBUG] [Thread-122551 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:01:53.644 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:01:54.930 [DEBUG] [Thread-122552 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:01:58.034 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:02:01.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:02:01.022 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:02:01.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:02:01.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 1, 43), 33.54, 8.97, 0.0, 17.4, 19.12, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:02:01.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:01:43
2025-11-03T21:02:02.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:02:02.202 [DEBUG] [Thread-122553] [transport.py] [_log()] starting thread (client mode): 0xed05e10
2025-11-03T21:02:02.202 [DEBUG] [Thread-122553] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:02:02.221 [DEBUG] [Thread-122553] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:02:02.221 [INFO] [Thread-122553] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:02:02.225 [DEBUG] [Thread-122553] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:02:02.225 [DEBUG] [Thread-122553] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:02:02.225 [DEBUG] [Thread-122553] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:02:02.225 [DEBUG] [Thread-122553] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:02:02.225 [DEBUG] [Thread-122553] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:02:02.225 [DEBUG] [Thread-122553] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:02:02.225 [DEBUG] [Thread-122553] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:02:02.225 [DEBUG] [Thread-122553] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:02:02.225 [DEBUG] [Thread-122553] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:02:02.225 [DEBUG] [Thread-122553] [transport.py] [_log()] client lang: <none>
2025-11-03T21:02:02.225 [DEBUG] [Thread-122553] [transport.py] [_log()] server lang: <none>
2025-11-03T21:02:02.225 [DEBUG] [Thread-122553] [transport.py] [_log()] kex follows: False
2025-11-03T21:02:02.225 [DEBUG] [Thread-122553] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:02:02.225 [DEBUG] [Thread-122553] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:02:02.225 [DEBUG] [Thread-122553] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:02:02.226 [DEBUG] [Thread-122553] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:02:02.226 [DEBUG] [Thread-122553] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:02:02.226 [DEBUG] [Thread-122553] [transport.py] [_log()] Compression: none
2025-11-03T21:02:02.226 [DEBUG] [Thread-122553] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:02:02.235 [DEBUG] [Thread-122553] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:02:02.236 [DEBUG] [Thread-122553] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:02:02.236 [DEBUG] [Thread-122553] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:02:02.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:02:02.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:02:02.238 [DEBUG] [Thread-122553] [transport.py] [_log()] userauth is OK
2025-11-03T21:02:02.239 [DEBUG] [Thread-122553] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:02:02.239 [DEBUG] [Thread-122553] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:02:02.239 [DEBUG] [Thread-122553] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:02:02.239 [DEBUG] [Thread-122553] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:02:02.264 [INFO] [Thread-122553] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:02:02.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:02:02.928 [DEBUG] [Thread-122553] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:02:02.928 [DEBUG] [Thread-122553] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:02:02.928 [DEBUG] [Thread-122553] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:02:02.969 [DEBUG] [Thread-122553] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:02:02.970 [DEBUG] [Thread-122553] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:02:02.972 [DEBUG] [Thread-122553] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:02:02.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:02:02.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:02:02.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:02:02.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:02:02.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:02:02.990 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:02:02.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:02:02.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:02:02.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:02:02.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.792809 -999.00  +19.30  19.70     14   -8.40 1 1 1 1 1     0    0 26.25 -89.09 ZNESW 18.4 19.7 300.2 20.8 19.2 -27.2 19.1 -26.4 18.9 -26.2 19.1 -26.9
2025-11-03T21:02:02.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:02:02.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:02:02.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.792809
2025-11-03T21:02:02.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:02:02.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:02:02.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:02:02.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:02:02.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:02:02.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:01:43', tmtdew=33.54, humidity=8.97, cloud=0.0, wind=17.4, temperature=19.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:01:43', seeing=1.16, atlas_timestamp='2025-11-03T19:01:38.698', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, 0.015249999999999986, 0.0182500000000001, 0.05349999999999966, 0.042500000000000426, 0.06475000000000009, -0.018000000000000682, -0.25874999999999915, 0.03599999999999959, 0.04600000000000115, 0.09975000000000023, 0.03449999999999953, 0.13349999999999973, -0.0012500000000006395, -0.005000000000000782, -0.3490000000000002, -0.019249999999999545, 0.0625, 0.16549999999999976, 0.11074999999999946, 0.1659999999999986, -0.1232500000000023, -0.13574999999999804, -0.48274999999999935, -0.17850000000000144, 0.09549999999999947, 0.22475000000000023, 0.16650000000000098, -0.03599999999999959, 0.09500000000000064, 0.1980000000000004, -0.4219999999999988, 0.031749999999998835], zp_timestamp='2025-11-03T19:00:00')
2025-11-03T21:02:02.991 [DEBUG] [Thread-122553] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:02:03.064 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:02:03.079 [DEBUG] [Thread-122556] [transport.py] [_log()] starting thread (client mode): 0x117ea080
2025-11-03T21:02:03.079 [DEBUG] [Thread-122556] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:02:03.097 [DEBUG] [Thread-122556] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:02:03.097 [INFO] [Thread-122556] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:02:03.107 [DEBUG] [Thread-122556] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:02:03.107 [DEBUG] [Thread-122556] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:02:03.107 [DEBUG] [Thread-122556] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:02:03.107 [DEBUG] [Thread-122556] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:02:03.107 [DEBUG] [Thread-122556] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:02:03.107 [DEBUG] [Thread-122556] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:02:03.107 [DEBUG] [Thread-122556] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:02:03.107 [DEBUG] [Thread-122556] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:02:03.107 [DEBUG] [Thread-122556] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:02:03.107 [DEBUG] [Thread-122556] [transport.py] [_log()] client lang: <none>
2025-11-03T21:02:03.107 [DEBUG] [Thread-122556] [transport.py] [_log()] server lang: <none>
2025-11-03T21:02:03.107 [DEBUG] [Thread-122556] [transport.py] [_log()] kex follows: False
2025-11-03T21:02:03.107 [DEBUG] [Thread-122556] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:02:03.107 [DEBUG] [Thread-122556] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:02:03.107 [DEBUG] [Thread-122556] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:02:03.107 [DEBUG] [Thread-122556] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:02:03.107 [DEBUG] [Thread-122556] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:02:03.107 [DEBUG] [Thread-122556] [transport.py] [_log()] Compression: none
2025-11-03T21:02:03.107 [DEBUG] [Thread-122556] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:02:03.168 [DEBUG] [Thread-122556] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:02:03.168 [DEBUG] [Thread-122556] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:02:03.169 [DEBUG] [Thread-122556] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:02:03.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:02:03.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:02:03.227 [DEBUG] [Thread-122556] [transport.py] [_log()] userauth is OK
2025-11-03T21:02:03.228 [DEBUG] [Thread-122556] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:02:03.228 [DEBUG] [Thread-122556] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:02:03.228 [DEBUG] [Thread-122556] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:02:03.228 [DEBUG] [Thread-122556] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:02:03.247 [INFO] [Thread-122556] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:02:03.248 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:02:03.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:02:04.116 [DEBUG] [Thread-122556] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:02:04.117 [DEBUG] [Thread-122556] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:02:04.167 [DEBUG] [Thread-122556] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:02:04.167 [DEBUG] [Thread-122556] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:02:04.175 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:02:04.180 [DEBUG] [Thread-122556] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:02:04.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:02:04.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:02:04.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:02:04.220 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:02:04.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:02:04.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:02:04.231 [DEBUG] [Thread-122556] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:02:08.560 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:02:09.967 [DEBUG] [Thread-122558 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:02:19.788 [DEBUG] [Thread-122559 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:02:25.030 [DEBUG] [Thread-122560 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:02:34.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:02:34.261 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:02:34.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:02:35.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 2, 15), 33.63, 8.91, 0.0, 17.73, 19.1, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:02:35.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:02:15
2025-11-03T21:02:35.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:02:35.373 [DEBUG] [Thread-122561] [transport.py] [_log()] starting thread (client mode): 0xed88ca0
2025-11-03T21:02:35.373 [DEBUG] [Thread-122561] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:02:35.389 [DEBUG] [Thread-122561] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:02:35.389 [INFO] [Thread-122561] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:02:35.394 [DEBUG] [Thread-122561] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:02:35.394 [DEBUG] [Thread-122561] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:02:35.394 [DEBUG] [Thread-122561] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:02:35.394 [DEBUG] [Thread-122561] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:02:35.394 [DEBUG] [Thread-122561] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:02:35.395 [DEBUG] [Thread-122561] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:02:35.395 [DEBUG] [Thread-122561] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:02:35.395 [DEBUG] [Thread-122561] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:02:35.395 [DEBUG] [Thread-122561] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:02:35.395 [DEBUG] [Thread-122561] [transport.py] [_log()] client lang: <none>
2025-11-03T21:02:35.395 [DEBUG] [Thread-122561] [transport.py] [_log()] server lang: <none>
2025-11-03T21:02:35.395 [DEBUG] [Thread-122561] [transport.py] [_log()] kex follows: False
2025-11-03T21:02:35.395 [DEBUG] [Thread-122561] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:02:35.396 [DEBUG] [Thread-122561] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:02:35.396 [DEBUG] [Thread-122561] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:02:35.396 [DEBUG] [Thread-122561] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:02:35.397 [DEBUG] [Thread-122561] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:02:35.397 [DEBUG] [Thread-122561] [transport.py] [_log()] Compression: none
2025-11-03T21:02:35.397 [DEBUG] [Thread-122561] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:02:35.428 [DEBUG] [Thread-122561] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:02:35.432 [DEBUG] [Thread-122561] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:02:35.433 [DEBUG] [Thread-122561] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:02:35.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:02:35.437 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:02:35.439 [DEBUG] [Thread-122561] [transport.py] [_log()] userauth is OK
2025-11-03T21:02:35.439 [DEBUG] [Thread-122561] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:02:35.440 [DEBUG] [Thread-122561] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:02:35.440 [DEBUG] [Thread-122561] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:02:35.440 [DEBUG] [Thread-122561] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:02:35.480 [INFO] [Thread-122561] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:02:35.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:02:36.129 [DEBUG] [Thread-122561] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:02:36.129 [DEBUG] [Thread-122561] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:02:36.130 [DEBUG] [Thread-122561] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:02:36.162 [DEBUG] [Thread-122561] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:02:36.162 [DEBUG] [Thread-122561] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:02:36.164 [DEBUG] [Thread-122561] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:02:36.170 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:02:36.171 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:02:36.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:02:36.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:02:36.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:02:36.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:02:36.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:02:36.186 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:02:36.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:02:36.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:02:36.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:02:36.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.793156 -999.00  +19.30  17.02     14   -8.50 1 1 1 1 1     0    0 26.07 -98.71 ZNESW 15.1 17.0 298.8 22.5 19.2 -27.4 19.1 -26.3 18.9 -26.0 19.1 -26.9
2025-11-03T21:02:36.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:02:36.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:02:36.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.793156
2025-11-03T21:02:36.192 [DEBUG] [Thread-122561] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:02:36.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:02:36.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:02:36.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:02:36.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:02:36.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:02:36.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:02:15', tmtdew=33.63, humidity=8.91, cloud=0.0, wind=17.73, temperature=19.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:02:16', seeing=1.11, atlas_timestamp='2025-11-03T19:02:08.678', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, 0.015249999999999986, 0.0182500000000001, 0.05349999999999966, 0.042500000000000426, 0.06475000000000009, -0.018000000000000682, -0.25874999999999915, 0.03599999999999959, 0.04600000000000115, 0.09975000000000023, 0.03449999999999953, 0.13349999999999973, -0.0012500000000006395, -0.005000000000000782, -0.3490000000000002, -0.019249999999999545, 0.0625, 0.16549999999999976, 0.11074999999999946, 0.1659999999999986, -0.1232500000000023, -0.13574999999999804, -0.48274999999999935, -0.17850000000000144, 0.09549999999999947, 0.22475000000000023, 0.16650000000000098, -0.03599999999999959, 0.09500000000000064, 0.1980000000000004, -0.4219999999999988, 0.031749999999998835], zp_timestamp='2025-11-03T19:00:00')
2025-11-03T21:02:36.280 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:02:36.292 [DEBUG] [Thread-122564] [transport.py] [_log()] starting thread (client mode): 0xeda1150
2025-11-03T21:02:36.293 [DEBUG] [Thread-122564] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:02:36.310 [DEBUG] [Thread-122564] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:02:36.310 [INFO] [Thread-122564] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:02:36.322 [DEBUG] [Thread-122564] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:02:36.322 [DEBUG] [Thread-122564] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:02:36.322 [DEBUG] [Thread-122564] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:02:36.322 [DEBUG] [Thread-122564] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:02:36.322 [DEBUG] [Thread-122564] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:02:36.322 [DEBUG] [Thread-122564] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:02:36.322 [DEBUG] [Thread-122564] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:02:36.322 [DEBUG] [Thread-122564] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:02:36.322 [DEBUG] [Thread-122564] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:02:36.322 [DEBUG] [Thread-122564] [transport.py] [_log()] client lang: <none>
2025-11-03T21:02:36.322 [DEBUG] [Thread-122564] [transport.py] [_log()] server lang: <none>
2025-11-03T21:02:36.323 [DEBUG] [Thread-122564] [transport.py] [_log()] kex follows: False
2025-11-03T21:02:36.323 [DEBUG] [Thread-122564] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:02:36.323 [DEBUG] [Thread-122564] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:02:36.323 [DEBUG] [Thread-122564] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:02:36.323 [DEBUG] [Thread-122564] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:02:36.323 [DEBUG] [Thread-122564] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:02:36.323 [DEBUG] [Thread-122564] [transport.py] [_log()] Compression: none
2025-11-03T21:02:36.323 [DEBUG] [Thread-122564] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:02:36.383 [DEBUG] [Thread-122564] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:02:36.383 [DEBUG] [Thread-122564] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:02:36.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:02:36.384 [DEBUG] [Thread-122564] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:02:36.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:02:36.448 [DEBUG] [Thread-122564] [transport.py] [_log()] userauth is OK
2025-11-03T21:02:36.448 [DEBUG] [Thread-122564] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:02:36.449 [DEBUG] [Thread-122564] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:02:36.449 [DEBUG] [Thread-122564] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:02:36.449 [DEBUG] [Thread-122564] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:02:36.468 [INFO] [Thread-122564] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:02:36.468 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:02:36.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:02:37.320 [DEBUG] [Thread-122564] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:02:37.320 [DEBUG] [Thread-122564] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:02:37.370 [DEBUG] [Thread-122564] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:02:37.370 [DEBUG] [Thread-122564] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:02:37.380 [DEBUG] [Thread-122564] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:02:37.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:02:37.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:02:37.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:02:37.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:02:37.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:02:37.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:02:37.425 [DEBUG] [Thread-122564] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:02:40.066 [DEBUG] [Thread-122566 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:02:55.114 [DEBUG] [Thread-122567 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:03:07.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:03:07.440 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:03:07.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:03:08.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 2, 48), 33.49, 9.01, 0.0, 18.16, 19.09, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:03:08.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:02:48
2025-11-03T21:03:08.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:03:08.545 [DEBUG] [Thread-122568] [transport.py] [_log()] starting thread (client mode): 0x11760730
2025-11-03T21:03:08.546 [DEBUG] [Thread-122568] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:03:08.557 [DEBUG] [Thread-122568] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:03:08.557 [INFO] [Thread-122568] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:03:08.559 [DEBUG] [Thread-122568] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:03:08.559 [DEBUG] [Thread-122568] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:03:08.559 [DEBUG] [Thread-122568] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:03:08.559 [DEBUG] [Thread-122568] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:03:08.559 [DEBUG] [Thread-122568] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:03:08.559 [DEBUG] [Thread-122568] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:03:08.559 [DEBUG] [Thread-122568] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:03:08.559 [DEBUG] [Thread-122568] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:03:08.559 [DEBUG] [Thread-122568] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:03:08.559 [DEBUG] [Thread-122568] [transport.py] [_log()] client lang: <none>
2025-11-03T21:03:08.559 [DEBUG] [Thread-122568] [transport.py] [_log()] server lang: <none>
2025-11-03T21:03:08.559 [DEBUG] [Thread-122568] [transport.py] [_log()] kex follows: False
2025-11-03T21:03:08.559 [DEBUG] [Thread-122568] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:03:08.559 [DEBUG] [Thread-122568] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:03:08.559 [DEBUG] [Thread-122568] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:03:08.560 [DEBUG] [Thread-122568] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:03:08.560 [DEBUG] [Thread-122568] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:03:08.560 [DEBUG] [Thread-122568] [transport.py] [_log()] Compression: none
2025-11-03T21:03:08.560 [DEBUG] [Thread-122568] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:03:08.568 [DEBUG] [Thread-122568] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:03:08.569 [DEBUG] [Thread-122568] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:03:08.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:03:08.570 [DEBUG] [Thread-122568] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:03:08.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:03:08.571 [DEBUG] [Thread-122568] [transport.py] [_log()] userauth is OK
2025-11-03T21:03:08.572 [DEBUG] [Thread-122568] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:03:08.572 [DEBUG] [Thread-122568] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:03:08.572 [DEBUG] [Thread-122568] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:03:08.572 [DEBUG] [Thread-122568] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:03:08.601 [INFO] [Thread-122568] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:03:08.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:03:09.146 [DEBUG] [Thread-122568] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:03:09.146 [DEBUG] [Thread-122568] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:03:09.146 [DEBUG] [Thread-122568] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:03:09.187 [DEBUG] [Thread-122568] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:03:09.187 [DEBUG] [Thread-122568] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:03:09.190 [DEBUG] [Thread-122568] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:03:09.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:03:09.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:03:09.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:03:09.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:03:09.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:03:09.209 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:03:09.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:03:09.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:03:09.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:03:09.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.793503 -999.00  +19.30  18.24     14   -8.40 1 1 1 1 1     0    0 25.86 -105.56 ZNESW 14.3 18.2 303.0 22.8 19.2 -27.4 19.1 -26.1 18.9 -26.1 19.1 -27.0
2025-11-03T21:03:09.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:03:09.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:03:09.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.793503
2025-11-03T21:03:09.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:03:09.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:03:09.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:03:09.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:03:09.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:03:09.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:02:48', tmtdew=33.49, humidity=9.01, cloud=0.0, wind=18.16, temperature=19.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:02:48', seeing=1.11, atlas_timestamp='2025-11-03T19:02:38.659', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, 0.015249999999999986, 0.0182500000000001, 0.05349999999999966, 0.042500000000000426, 0.06475000000000009, -0.018000000000000682, -0.25874999999999915, 0.03599999999999959, 0.04600000000000115, 0.09975000000000023, 0.03449999999999953, 0.13349999999999973, -0.0012500000000006395, -0.005000000000000782, -0.3490000000000002, -0.019249999999999545, 0.0625, 0.16549999999999976, 0.11074999999999946, 0.1659999999999986, -0.1232500000000023, -0.13574999999999804, -0.48274999999999935, -0.17850000000000144, 0.09549999999999947, 0.22475000000000023, 0.16650000000000098, -0.03599999999999959, 0.09500000000000064, 0.1980000000000004, -0.4219999999999988, 0.031749999999998835], zp_timestamp='2025-11-03T19:00:00')
2025-11-03T21:03:09.216 [DEBUG] [Thread-122568] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:03:09.292 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:03:09.304 [DEBUG] [Thread-122571] [transport.py] [_log()] starting thread (client mode): 0xedc5630
2025-11-03T21:03:09.304 [DEBUG] [Thread-122571] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:03:09.320 [DEBUG] [Thread-122571] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:03:09.320 [INFO] [Thread-122571] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:03:09.327 [DEBUG] [Thread-122571] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:03:09.327 [DEBUG] [Thread-122571] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:03:09.327 [DEBUG] [Thread-122571] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:03:09.327 [DEBUG] [Thread-122571] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:03:09.327 [DEBUG] [Thread-122571] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:03:09.327 [DEBUG] [Thread-122571] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:03:09.327 [DEBUG] [Thread-122571] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:03:09.327 [DEBUG] [Thread-122571] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:03:09.327 [DEBUG] [Thread-122571] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:03:09.327 [DEBUG] [Thread-122571] [transport.py] [_log()] client lang: <none>
2025-11-03T21:03:09.327 [DEBUG] [Thread-122571] [transport.py] [_log()] server lang: <none>
2025-11-03T21:03:09.327 [DEBUG] [Thread-122571] [transport.py] [_log()] kex follows: False
2025-11-03T21:03:09.327 [DEBUG] [Thread-122571] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:03:09.327 [DEBUG] [Thread-122571] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:03:09.328 [DEBUG] [Thread-122571] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:03:09.328 [DEBUG] [Thread-122571] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:03:09.328 [DEBUG] [Thread-122571] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:03:09.328 [DEBUG] [Thread-122571] [transport.py] [_log()] Compression: none
2025-11-03T21:03:09.328 [DEBUG] [Thread-122571] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:03:09.383 [DEBUG] [Thread-122571] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:03:09.383 [DEBUG] [Thread-122571] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:03:09.383 [DEBUG] [Thread-122571] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:03:09.383 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:03:09.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:03:09.440 [DEBUG] [Thread-122571] [transport.py] [_log()] userauth is OK
2025-11-03T21:03:09.440 [DEBUG] [Thread-122571] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:03:09.440 [DEBUG] [Thread-122571] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:03:09.440 [DEBUG] [Thread-122571] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:03:09.440 [DEBUG] [Thread-122571] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:03:09.454 [INFO] [Thread-122571] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:03:09.454 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:03:09.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:03:10.147 [DEBUG] [Thread-122573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:03:10.312 [DEBUG] [Thread-122571] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:03:10.312 [DEBUG] [Thread-122571] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:03:10.361 [DEBUG] [Thread-122571] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:03:10.361 [DEBUG] [Thread-122571] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:03:10.371 [DEBUG] [Thread-122571] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:03:10.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:03:10.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:03:10.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:03:10.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:03:10.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:03:10.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:03:10.411 [DEBUG] [Thread-122571] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:03:14.933 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:03:19.035 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:03:19.975 [DEBUG] [Thread-122574 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:03:25.198 [DEBUG] [Thread-122575 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:03:36.370 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:03:36.371 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:03:40.227 [DEBUG] [Thread-122576 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:03:40.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:03:40.433 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:03:40.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:03:41.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 3, 20), 33.49, 9.01, 0.0, 17.56, 19.07, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:03:41.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:03:20
2025-11-03T21:03:41.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:03:41.470 [DEBUG] [Thread-122577] [transport.py] [_log()] starting thread (client mode): 0xed8a4d0
2025-11-03T21:03:41.470 [DEBUG] [Thread-122577] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:03:41.496 [DEBUG] [Thread-122577] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:03:41.496 [INFO] [Thread-122577] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:03:41.499 [DEBUG] [Thread-122577] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:03:41.499 [DEBUG] [Thread-122577] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:03:41.500 [DEBUG] [Thread-122577] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:03:41.500 [DEBUG] [Thread-122577] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:03:41.500 [DEBUG] [Thread-122577] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:03:41.500 [DEBUG] [Thread-122577] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:03:41.500 [DEBUG] [Thread-122577] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:03:41.500 [DEBUG] [Thread-122577] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:03:41.500 [DEBUG] [Thread-122577] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:03:41.500 [DEBUG] [Thread-122577] [transport.py] [_log()] client lang: <none>
2025-11-03T21:03:41.500 [DEBUG] [Thread-122577] [transport.py] [_log()] server lang: <none>
2025-11-03T21:03:41.500 [DEBUG] [Thread-122577] [transport.py] [_log()] kex follows: False
2025-11-03T21:03:41.500 [DEBUG] [Thread-122577] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:03:41.500 [DEBUG] [Thread-122577] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:03:41.500 [DEBUG] [Thread-122577] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:03:41.500 [DEBUG] [Thread-122577] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:03:41.500 [DEBUG] [Thread-122577] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:03:41.500 [DEBUG] [Thread-122577] [transport.py] [_log()] Compression: none
2025-11-03T21:03:41.500 [DEBUG] [Thread-122577] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:03:41.520 [DEBUG] [Thread-122577] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:03:41.521 [DEBUG] [Thread-122577] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:03:41.521 [DEBUG] [Thread-122577] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:03:41.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:03:41.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:03:41.524 [DEBUG] [Thread-122577] [transport.py] [_log()] userauth is OK
2025-11-03T21:03:41.524 [DEBUG] [Thread-122577] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:03:41.524 [DEBUG] [Thread-122577] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:03:41.524 [DEBUG] [Thread-122577] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:03:41.524 [DEBUG] [Thread-122577] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:03:41.548 [INFO] [Thread-122577] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:03:41.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:03:42.245 [DEBUG] [Thread-122577] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:03:42.245 [DEBUG] [Thread-122577] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:03:42.245 [DEBUG] [Thread-122577] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:03:42.287 [DEBUG] [Thread-122577] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:03:42.287 [DEBUG] [Thread-122577] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:03:42.289 [DEBUG] [Thread-122577] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:03:42.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:03:42.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:03:42.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:03:42.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:03:42.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:03:42.317 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:03:42.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:03:42.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:03:42.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:03:42.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.793851 -999.00  +19.30  20.52     14   -8.30 1 1 1 1 1     0    0 25.66 -102.81 ZNESW 17.7 20.5 299.2 24.1 19.2 -27.2 19.1 -26.2 18.9 -26.1 19.1 -26.7
2025-11-03T21:03:42.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:03:42.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:03:42.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.793851
2025-11-03T21:03:42.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:03:42.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:03:42.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:03:42.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:03:42.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:03:42.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:03:20', tmtdew=33.49, humidity=9.01, cloud=0.0, wind=17.56, temperature=19.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:03:21', seeing=1.16, atlas_timestamp='2025-11-03T19:03:08.726', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, 0.015249999999999986, 0.0182500000000001, 0.05349999999999966, 0.042500000000000426, 0.06475000000000009, -0.018000000000000682, -0.25874999999999915, 0.03599999999999959, 0.04600000000000115, 0.09975000000000023, 0.03449999999999953, 0.13349999999999973, -0.0012500000000006395, -0.005000000000000782, -0.3490000000000002, -0.019249999999999545, 0.0625, 0.16549999999999976, 0.11074999999999946, 0.1659999999999986, -0.1232500000000023, -0.13574999999999804, -0.48274999999999935, -0.17850000000000144, 0.09549999999999947, 0.22475000000000023, 0.16650000000000098, -0.03599999999999959, 0.09500000000000064, 0.1980000000000004, -0.4219999999999988, 0.031749999999998835], zp_timestamp='2025-11-03T19:00:00')
2025-11-03T21:03:42.318 [DEBUG] [Thread-122577] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:03:42.390 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:03:42.401 [DEBUG] [Thread-122580] [transport.py] [_log()] starting thread (client mode): 0x11799420
2025-11-03T21:03:42.401 [DEBUG] [Thread-122580] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:03:42.416 [DEBUG] [Thread-122580] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:03:42.416 [INFO] [Thread-122580] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:03:42.423 [DEBUG] [Thread-122580] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:03:42.423 [DEBUG] [Thread-122580] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:03:42.423 [DEBUG] [Thread-122580] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:03:42.423 [DEBUG] [Thread-122580] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:03:42.423 [DEBUG] [Thread-122580] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:03:42.423 [DEBUG] [Thread-122580] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:03:42.424 [DEBUG] [Thread-122580] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:03:42.424 [DEBUG] [Thread-122580] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:03:42.424 [DEBUG] [Thread-122580] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:03:42.424 [DEBUG] [Thread-122580] [transport.py] [_log()] client lang: <none>
2025-11-03T21:03:42.424 [DEBUG] [Thread-122580] [transport.py] [_log()] server lang: <none>
2025-11-03T21:03:42.424 [DEBUG] [Thread-122580] [transport.py] [_log()] kex follows: False
2025-11-03T21:03:42.424 [DEBUG] [Thread-122580] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:03:42.424 [DEBUG] [Thread-122580] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:03:42.424 [DEBUG] [Thread-122580] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:03:42.424 [DEBUG] [Thread-122580] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:03:42.424 [DEBUG] [Thread-122580] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:03:42.424 [DEBUG] [Thread-122580] [transport.py] [_log()] Compression: none
2025-11-03T21:03:42.424 [DEBUG] [Thread-122580] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:03:42.485 [DEBUG] [Thread-122580] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:03:42.486 [DEBUG] [Thread-122580] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:03:42.487 [DEBUG] [Thread-122580] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:03:42.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:03:42.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:03:42.541 [DEBUG] [Thread-122580] [transport.py] [_log()] userauth is OK
2025-11-03T21:03:42.541 [DEBUG] [Thread-122580] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:03:42.542 [DEBUG] [Thread-122580] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:03:42.542 [DEBUG] [Thread-122580] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:03:42.542 [DEBUG] [Thread-122580] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:03:42.561 [INFO] [Thread-122580] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:03:42.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:03:42.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:03:43.395 [DEBUG] [Thread-122580] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:03:43.396 [DEBUG] [Thread-122580] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:03:43.447 [DEBUG] [Thread-122580] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:03:43.447 [DEBUG] [Thread-122580] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:03:43.459 [DEBUG] [Thread-122580] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:03:43.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:03:43.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:03:43.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:03:43.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:03:43.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:03:43.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:03:43.518 [DEBUG] [Thread-122580] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:03:55.253 [DEBUG] [Thread-122582 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:04:10.305 [DEBUG] [Thread-122583 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:04:13.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:04:13.536 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:04:13.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:04:14.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 3, 53), 33.38, 9.01, 0.0, 20.2, 19.05, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:04:14.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:03:53
2025-11-03T21:04:14.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:04:14.633 [DEBUG] [Thread-122584] [transport.py] [_log()] starting thread (client mode): 0xed37f10
2025-11-03T21:04:14.633 [DEBUG] [Thread-122584] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:04:14.653 [DEBUG] [Thread-122584] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:04:14.653 [INFO] [Thread-122584] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:04:14.656 [DEBUG] [Thread-122584] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:04:14.656 [DEBUG] [Thread-122584] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:04:14.656 [DEBUG] [Thread-122584] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:04:14.656 [DEBUG] [Thread-122584] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:04:14.656 [DEBUG] [Thread-122584] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:04:14.656 [DEBUG] [Thread-122584] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:04:14.656 [DEBUG] [Thread-122584] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:04:14.656 [DEBUG] [Thread-122584] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:04:14.656 [DEBUG] [Thread-122584] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:04:14.656 [DEBUG] [Thread-122584] [transport.py] [_log()] client lang: <none>
2025-11-03T21:04:14.656 [DEBUG] [Thread-122584] [transport.py] [_log()] server lang: <none>
2025-11-03T21:04:14.656 [DEBUG] [Thread-122584] [transport.py] [_log()] kex follows: False
2025-11-03T21:04:14.656 [DEBUG] [Thread-122584] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:04:14.656 [DEBUG] [Thread-122584] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:04:14.656 [DEBUG] [Thread-122584] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:04:14.656 [DEBUG] [Thread-122584] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:04:14.656 [DEBUG] [Thread-122584] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:04:14.656 [DEBUG] [Thread-122584] [transport.py] [_log()] Compression: none
2025-11-03T21:04:14.656 [DEBUG] [Thread-122584] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:04:14.677 [DEBUG] [Thread-122584] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:04:14.678 [DEBUG] [Thread-122584] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:04:14.678 [DEBUG] [Thread-122584] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:04:14.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:04:14.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:04:14.679 [DEBUG] [Thread-122584] [transport.py] [_log()] userauth is OK
2025-11-03T21:04:14.679 [DEBUG] [Thread-122584] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:04:14.679 [DEBUG] [Thread-122584] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:04:14.679 [DEBUG] [Thread-122584] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:04:14.679 [DEBUG] [Thread-122584] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:04:14.694 [INFO] [Thread-122584] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:04:14.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:04:15.428 [DEBUG] [Thread-122584] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:04:15.429 [DEBUG] [Thread-122584] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:04:15.429 [DEBUG] [Thread-122584] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:04:15.469 [DEBUG] [Thread-122584] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:04:15.469 [DEBUG] [Thread-122584] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:04:15.472 [DEBUG] [Thread-122584] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:04:15.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:04:15.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:04:15.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:04:15.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:04:15.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:04:15.492 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:04:15.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:04:15.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:04:15.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:04:15.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.794198 -999.00  +19.30  19.61     14   -8.40 1 1 1 1 1     0    0 25.47 -111.53 ZNESW 16.1 19.6 303.8 22.4 19.2 -27.3 19.1 -26.1 18.9 -25.9 19.1 -27.0
2025-11-03T21:04:15.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:04:15.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:04:15.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.794198
2025-11-03T21:04:15.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:04:15.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:04:15.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:04:15.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:04:15.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:04:15.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:03:53', tmtdew=33.38, humidity=9.01, cloud=0.0, wind=20.2, temperature=19.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:03:53', seeing=1.16, atlas_timestamp='2025-11-03T19:03:38.707', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, 0.015249999999999986, 0.0182500000000001, 0.05349999999999966, 0.042500000000000426, 0.06475000000000009, -0.018000000000000682, -0.25874999999999915, 0.03599999999999959, 0.04600000000000115, 0.09975000000000023, 0.03449999999999953, 0.13349999999999973, -0.0012500000000006395, -0.005000000000000782, -0.3490000000000002, -0.019249999999999545, 0.0625, 0.16549999999999976, 0.11074999999999946, 0.1659999999999986, -0.1232500000000023, -0.13574999999999804, -0.48274999999999935, -0.17850000000000144, 0.09549999999999947, 0.22475000000000023, 0.16650000000000098, -0.03599999999999959, 0.09500000000000064, 0.1980000000000004, -0.4219999999999988, 0.031749999999998835], zp_timestamp='2025-11-03T19:00:00')
2025-11-03T21:04:15.493 [DEBUG] [Thread-122584] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:04:15.567 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:04:15.583 [DEBUG] [Thread-122587] [transport.py] [_log()] starting thread (client mode): 0x117996c0
2025-11-03T21:04:15.583 [DEBUG] [Thread-122587] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:04:15.600 [DEBUG] [Thread-122587] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:04:15.601 [INFO] [Thread-122587] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:04:15.608 [DEBUG] [Thread-122587] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:04:15.608 [DEBUG] [Thread-122587] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:04:15.608 [DEBUG] [Thread-122587] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:04:15.608 [DEBUG] [Thread-122587] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:04:15.608 [DEBUG] [Thread-122587] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:04:15.608 [DEBUG] [Thread-122587] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:04:15.608 [DEBUG] [Thread-122587] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:04:15.608 [DEBUG] [Thread-122587] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:04:15.608 [DEBUG] [Thread-122587] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:04:15.608 [DEBUG] [Thread-122587] [transport.py] [_log()] client lang: <none>
2025-11-03T21:04:15.608 [DEBUG] [Thread-122587] [transport.py] [_log()] server lang: <none>
2025-11-03T21:04:15.608 [DEBUG] [Thread-122587] [transport.py] [_log()] kex follows: False
2025-11-03T21:04:15.609 [DEBUG] [Thread-122587] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:04:15.609 [DEBUG] [Thread-122587] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:04:15.609 [DEBUG] [Thread-122587] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:04:15.609 [DEBUG] [Thread-122587] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:04:15.609 [DEBUG] [Thread-122587] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:04:15.609 [DEBUG] [Thread-122587] [transport.py] [_log()] Compression: none
2025-11-03T21:04:15.609 [DEBUG] [Thread-122587] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:04:15.668 [DEBUG] [Thread-122587] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:04:15.668 [DEBUG] [Thread-122587] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:04:15.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:04:15.669 [DEBUG] [Thread-122587] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:04:15.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:04:15.727 [DEBUG] [Thread-122587] [transport.py] [_log()] userauth is OK
2025-11-03T21:04:15.727 [DEBUG] [Thread-122587] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:04:15.727 [DEBUG] [Thread-122587] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:04:15.727 [DEBUG] [Thread-122587] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:04:15.727 [DEBUG] [Thread-122587] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:04:15.746 [INFO] [Thread-122587] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:04:15.746 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:04:15.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:04:16.578 [DEBUG] [Thread-122587] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:04:16.578 [DEBUG] [Thread-122587] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:04:16.626 [DEBUG] [Thread-122587] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:04:16.626 [DEBUG] [Thread-122587] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:04:16.635 [DEBUG] [Thread-122587] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:04:16.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:04:16.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:04:16.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:04:16.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:04:16.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:04:16.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:04:16.671 [DEBUG] [Thread-122587] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:04:20.275 [DEBUG] [Thread-122589 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:04:25.330 [DEBUG] [Thread-122590 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:04:36.571 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:04:36.572 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:04:40.388 [DEBUG] [Thread-122591 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:04:43.555 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:04:46.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:04:46.692 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:04:46.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:04:47.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 4, 25), 33.33, 9.04, 0.0, 19.37, 19.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:04:47.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:04:25
2025-11-03T21:04:47.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:04:47.850 [DEBUG] [Thread-122592] [transport.py] [_log()] starting thread (client mode): 0xed358d0
2025-11-03T21:04:47.850 [DEBUG] [Thread-122592] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:04:47.861 [DEBUG] [Thread-122592] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:04:47.861 [INFO] [Thread-122592] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:04:47.864 [DEBUG] [Thread-122592] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:04:47.864 [DEBUG] [Thread-122592] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:04:47.864 [DEBUG] [Thread-122592] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:04:47.864 [DEBUG] [Thread-122592] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:04:47.864 [DEBUG] [Thread-122592] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:04:47.864 [DEBUG] [Thread-122592] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:04:47.864 [DEBUG] [Thread-122592] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:04:47.864 [DEBUG] [Thread-122592] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:04:47.864 [DEBUG] [Thread-122592] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:04:47.864 [DEBUG] [Thread-122592] [transport.py] [_log()] client lang: <none>
2025-11-03T21:04:47.864 [DEBUG] [Thread-122592] [transport.py] [_log()] server lang: <none>
2025-11-03T21:04:47.864 [DEBUG] [Thread-122592] [transport.py] [_log()] kex follows: False
2025-11-03T21:04:47.865 [DEBUG] [Thread-122592] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:04:47.865 [DEBUG] [Thread-122592] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:04:47.865 [DEBUG] [Thread-122592] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:04:47.865 [DEBUG] [Thread-122592] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:04:47.865 [DEBUG] [Thread-122592] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:04:47.865 [DEBUG] [Thread-122592] [transport.py] [_log()] Compression: none
2025-11-03T21:04:47.865 [DEBUG] [Thread-122592] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:04:47.883 [DEBUG] [Thread-122592] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:04:47.884 [DEBUG] [Thread-122592] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:04:47.884 [DEBUG] [Thread-122592] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:04:47.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:04:47.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:04:47.886 [DEBUG] [Thread-122592] [transport.py] [_log()] userauth is OK
2025-11-03T21:04:47.887 [DEBUG] [Thread-122592] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:04:47.887 [DEBUG] [Thread-122592] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:04:47.887 [DEBUG] [Thread-122592] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:04:47.887 [DEBUG] [Thread-122592] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:04:47.911 [INFO] [Thread-122592] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:04:47.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:04:48.577 [DEBUG] [Thread-122592] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:04:48.577 [DEBUG] [Thread-122592] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:04:48.578 [DEBUG] [Thread-122592] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:04:48.618 [DEBUG] [Thread-122592] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:04:48.618 [DEBUG] [Thread-122592] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:04:48.621 [DEBUG] [Thread-122592] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:04:48.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:04:48.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:04:48.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:04:48.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:04:48.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:04:48.650 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:04:48.650 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:04:48.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:04:48.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:04:48.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.794545 -999.00  +19.30  19.48     14   -8.30 1 1 1 1 1     0    0 25.44 -114.92 ZNESW 19.4 19.5 308.8 22.5 19.2 -27.2 19.1 -26.1 18.9 -25.9 19.1 -26.7
2025-11-03T21:04:48.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:04:48.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:04:48.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.794545
2025-11-03T21:04:48.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:04:48.651 [DEBUG] [Thread-122592] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:04:48.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:04:48.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:04:48.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:04:48.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:04:48.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:04:25', tmtdew=33.33, humidity=9.04, cloud=0.0, wind=19.37, temperature=19.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:04:26', seeing=1.19, atlas_timestamp='2025-11-03T19:04:08.688', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, 0.015249999999999986, 0.0182500000000001, 0.05349999999999966, 0.042500000000000426, 0.06475000000000009, -0.018000000000000682, -0.25874999999999915, 0.03599999999999959, 0.04600000000000115, 0.09975000000000023, 0.03449999999999953, 0.13349999999999973, -0.0012500000000006395, -0.005000000000000782, -0.3490000000000002, -0.019249999999999545, 0.0625, 0.16549999999999976, 0.11074999999999946, 0.1659999999999986, -0.1232500000000023, -0.13574999999999804, -0.48274999999999935, -0.17850000000000144, 0.09549999999999947, 0.22475000000000023, 0.16650000000000098, -0.03599999999999959, 0.09500000000000064, 0.1980000000000004, -0.4219999999999988, 0.031749999999998835], zp_timestamp='2025-11-03T19:00:00')
2025-11-03T21:04:48.726 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:04:48.739 [DEBUG] [Thread-122595] [transport.py] [_log()] starting thread (client mode): 0x1174c850
2025-11-03T21:04:48.739 [DEBUG] [Thread-122595] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:04:48.754 [DEBUG] [Thread-122595] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:04:48.754 [INFO] [Thread-122595] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:04:48.761 [DEBUG] [Thread-122595] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:04:48.761 [DEBUG] [Thread-122595] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:04:48.761 [DEBUG] [Thread-122595] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:04:48.761 [DEBUG] [Thread-122595] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:04:48.762 [DEBUG] [Thread-122595] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:04:48.762 [DEBUG] [Thread-122595] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:04:48.762 [DEBUG] [Thread-122595] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:04:48.762 [DEBUG] [Thread-122595] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:04:48.762 [DEBUG] [Thread-122595] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:04:48.762 [DEBUG] [Thread-122595] [transport.py] [_log()] client lang: <none>
2025-11-03T21:04:48.762 [DEBUG] [Thread-122595] [transport.py] [_log()] server lang: <none>
2025-11-03T21:04:48.762 [DEBUG] [Thread-122595] [transport.py] [_log()] kex follows: False
2025-11-03T21:04:48.762 [DEBUG] [Thread-122595] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:04:48.762 [DEBUG] [Thread-122595] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:04:48.762 [DEBUG] [Thread-122595] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:04:48.762 [DEBUG] [Thread-122595] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:04:48.762 [DEBUG] [Thread-122595] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:04:48.762 [DEBUG] [Thread-122595] [transport.py] [_log()] Compression: none
2025-11-03T21:04:48.762 [DEBUG] [Thread-122595] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:04:48.817 [DEBUG] [Thread-122595] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:04:48.817 [DEBUG] [Thread-122595] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:04:48.817 [DEBUG] [Thread-122595] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:04:48.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:04:48.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:04:48.875 [DEBUG] [Thread-122595] [transport.py] [_log()] userauth is OK
2025-11-03T21:04:48.875 [DEBUG] [Thread-122595] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:04:48.875 [DEBUG] [Thread-122595] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:04:48.875 [DEBUG] [Thread-122595] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:04:48.875 [DEBUG] [Thread-122595] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:04:48.890 [INFO] [Thread-122595] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:04:48.890 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:04:48.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:04:49.779 [DEBUG] [Thread-122595] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:04:49.779 [DEBUG] [Thread-122595] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:04:49.827 [DEBUG] [Thread-122595] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:04:49.828 [DEBUG] [Thread-122595] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:04:49.837 [DEBUG] [Thread-122595] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:04:49.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:04:49.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:04:49.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:04:49.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:04:49.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:04:49.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:04:49.872 [DEBUG] [Thread-122595] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:04:50.582 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:04:54.707 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:04:55.417 [DEBUG] [Thread-122597 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:05:10.464 [DEBUG] [Thread-122598 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:05:19.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:05:19.883 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:05:19.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:05:20.490 [DEBUG] [Thread-122599 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:05:20.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 4, 58), 33.34, 9.02, 0.0, 18.72, 18.99, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:05:20.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:04:58
2025-11-03T21:05:20.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:05:21.068 [DEBUG] [Thread-122600] [transport.py] [_log()] starting thread (client mode): 0x11762b60
2025-11-03T21:05:21.068 [DEBUG] [Thread-122600] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:05:21.091 [DEBUG] [Thread-122600] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:05:21.091 [INFO] [Thread-122600] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:05:21.094 [DEBUG] [Thread-122600] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:05:21.094 [DEBUG] [Thread-122600] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:05:21.094 [DEBUG] [Thread-122600] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:05:21.094 [DEBUG] [Thread-122600] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:05:21.094 [DEBUG] [Thread-122600] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:05:21.094 [DEBUG] [Thread-122600] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:05:21.094 [DEBUG] [Thread-122600] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:05:21.094 [DEBUG] [Thread-122600] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:05:21.094 [DEBUG] [Thread-122600] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:05:21.095 [DEBUG] [Thread-122600] [transport.py] [_log()] client lang: <none>
2025-11-03T21:05:21.095 [DEBUG] [Thread-122600] [transport.py] [_log()] server lang: <none>
2025-11-03T21:05:21.095 [DEBUG] [Thread-122600] [transport.py] [_log()] kex follows: False
2025-11-03T21:05:21.095 [DEBUG] [Thread-122600] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:05:21.095 [DEBUG] [Thread-122600] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:05:21.095 [DEBUG] [Thread-122600] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:05:21.095 [DEBUG] [Thread-122600] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:05:21.095 [DEBUG] [Thread-122600] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:05:21.095 [DEBUG] [Thread-122600] [transport.py] [_log()] Compression: none
2025-11-03T21:05:21.096 [DEBUG] [Thread-122600] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:05:21.114 [DEBUG] [Thread-122600] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:05:21.114 [DEBUG] [Thread-122600] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:05:21.115 [DEBUG] [Thread-122600] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:05:21.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:05:21.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:05:21.118 [DEBUG] [Thread-122600] [transport.py] [_log()] userauth is OK
2025-11-03T21:05:21.118 [DEBUG] [Thread-122600] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:05:21.118 [DEBUG] [Thread-122600] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:05:21.118 [DEBUG] [Thread-122600] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:05:21.118 [DEBUG] [Thread-122600] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:05:21.144 [INFO] [Thread-122600] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:05:21.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:05:21.781 [DEBUG] [Thread-122600] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:05:21.782 [DEBUG] [Thread-122600] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:05:21.782 [DEBUG] [Thread-122600] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:05:21.823 [DEBUG] [Thread-122600] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:05:21.824 [DEBUG] [Thread-122600] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:05:21.827 [DEBUG] [Thread-122600] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:05:21.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:05:21.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:05:21.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:05:21.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:05:21.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:05:21.853 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:05:21.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:05:21.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:05:21.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:05:21.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.794893 -999.00  +19.30  19.40     14   -8.50 1 1 1 1 1     0    0 25.09 -122.33 ZNESW 18.1 19.4 298.4 22.9 19.2 -27.2 19.1 -26.1 18.9 -26.2 19.1 -26.8
2025-11-03T21:05:21.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:05:21.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:05:21.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.794893
2025-11-03T21:05:21.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:05:21.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:05:21.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:05:21.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:05:21.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:05:21.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:04:58', tmtdew=33.34, humidity=9.02, cloud=0.0, wind=18.72, temperature=18.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:04:58', seeing=1.05, atlas_timestamp='2025-11-03T19:04:38.755', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, 0.015249999999999986, 0.0182500000000001, 0.05349999999999966, 0.042500000000000426, 0.06475000000000009, -0.018000000000000682, -0.25874999999999915, 0.03599999999999959, 0.04600000000000115, 0.09975000000000023, 0.03449999999999953, 0.13349999999999973, -0.0012500000000006395, -0.005000000000000782, -0.3490000000000002, -0.019249999999999545, 0.0625, 0.16549999999999976, 0.11074999999999946, 0.1659999999999986, -0.1232500000000023, -0.13574999999999804, -0.48274999999999935, -0.17850000000000144, 0.09549999999999947, 0.22475000000000023, 0.16650000000000098, -0.03599999999999959, 0.09500000000000064, 0.1980000000000004, -0.4219999999999988, 0.031749999999998835], zp_timestamp='2025-11-03T19:03:00')
2025-11-03T21:05:21.856 [DEBUG] [Thread-122600] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:05:21.939 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:05:25.498 [DEBUG] [Thread-122603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:05:36.791 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:05:36.807 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:05:40.586 [DEBUG] [Thread-122604 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:05:55.719 [DEBUG] [Thread-122605 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:06:11.255 [DEBUG] [Thread-122606 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:06:17.319 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:06:20.771 [DEBUG] [Thread-122607 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:06:25.292 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:06:26.611 [DEBUG] [Thread-122608 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:06:29.460 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:06:37.024 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:06:37.037 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:06:42.026 [DEBUG] [Thread-122609 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:06:57.394 [DEBUG] [Thread-122610 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:07:12.541 [DEBUG] [Thread-122611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:07:21.090 [DEBUG] [Thread-122612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:07:27.986 [DEBUG] [Thread-122613 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:07:35.650 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T21:07:37.243 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:07:37.245 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:07:43.404 [DEBUG] [Thread-122614 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:07:52.163 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:07:58.497 [DEBUG] [Thread-122615 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:08:00.043 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:08:04.128 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:08:05.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:08:05.692 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:08:05.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:08:06.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 7, 48), 33.25, 9.14, 0.0, 19.8, 18.92, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:08:06.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:07:48
2025-11-03T21:08:07.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:08:07.324 [DEBUG] [Thread-122616] [transport.py] [_log()] starting thread (client mode): 0xed8b6d0
2025-11-03T21:08:07.325 [DEBUG] [Thread-122616] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:08:07.335 [DEBUG] [Thread-122616] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:08:07.335 [INFO] [Thread-122616] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:08:07.340 [DEBUG] [Thread-122616] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:08:07.340 [DEBUG] [Thread-122616] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:08:07.340 [DEBUG] [Thread-122616] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:08:07.340 [DEBUG] [Thread-122616] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:08:07.340 [DEBUG] [Thread-122616] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:08:07.340 [DEBUG] [Thread-122616] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:08:07.340 [DEBUG] [Thread-122616] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:08:07.340 [DEBUG] [Thread-122616] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:08:07.340 [DEBUG] [Thread-122616] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:08:07.340 [DEBUG] [Thread-122616] [transport.py] [_log()] client lang: <none>
2025-11-03T21:08:07.341 [DEBUG] [Thread-122616] [transport.py] [_log()] server lang: <none>
2025-11-03T21:08:07.341 [DEBUG] [Thread-122616] [transport.py] [_log()] kex follows: False
2025-11-03T21:08:07.341 [DEBUG] [Thread-122616] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:08:07.341 [DEBUG] [Thread-122616] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:08:07.342 [DEBUG] [Thread-122616] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:08:07.342 [DEBUG] [Thread-122616] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:08:07.342 [DEBUG] [Thread-122616] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:08:07.342 [DEBUG] [Thread-122616] [transport.py] [_log()] Compression: none
2025-11-03T21:08:07.342 [DEBUG] [Thread-122616] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:08:07.369 [DEBUG] [Thread-122616] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:08:07.373 [DEBUG] [Thread-122616] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:08:07.375 [DEBUG] [Thread-122616] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:08:07.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:08:07.379 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:08:07.381 [DEBUG] [Thread-122616] [transport.py] [_log()] userauth is OK
2025-11-03T21:08:07.381 [DEBUG] [Thread-122616] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:08:07.381 [DEBUG] [Thread-122616] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:08:07.381 [DEBUG] [Thread-122616] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:08:07.381 [DEBUG] [Thread-122616] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:08:07.405 [INFO] [Thread-122616] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:08:07.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:08:08.026 [DEBUG] [Thread-122616] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:08:08.026 [DEBUG] [Thread-122616] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:08:08.026 [DEBUG] [Thread-122616] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:08:08.067 [DEBUG] [Thread-122616] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:08:08.067 [DEBUG] [Thread-122616] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:08:08.070 [DEBUG] [Thread-122616] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:08:08.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:08:08.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:08:08.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:08:08.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:08:08.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:08:08.091 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:08:08.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:08:08.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:08:08.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:08:08.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.796628 -999.00  +19.20  18.88     14   -8.40 1 1 1 1 1     0    0 24.33 -144.18 ZNESW 16.4 18.9 298.2 24.6 19.1 -27.2 19.0 -26.2 18.9 -26.2 19.1 -26.9
2025-11-03T21:08:08.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:08:08.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:08:08.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.796628
2025-11-03T21:08:08.103 [DEBUG] [Thread-122616] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:08:08.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:08:08.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:08:08.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:08:08.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:08:08.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:08:08.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:07:48', tmtdew=33.25, humidity=9.14, cloud=0.0, wind=19.8, temperature=18.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:07:49', seeing=1.33, atlas_timestamp='2025-11-03T19:07:08.659', atlas_cloud=1, atlas_rain=1, zp_data=[0.012750000000000483, 0.0417500000000004, -0.044749999999998735, 0.058499999999998664, 0.059499999999999886, 0.09325000000000117, -0.023000000000001464, -0.1532499999999999, 0.08949999999999925, 0.08150000000000013, 0.0702499999999997, 0.0909999999999993, 0.12400000000000055, 0.08174999999999955, -0.008500000000001506, -0.2400000000000002, 0.03824999999999967, 0.07099999999999973, 0.20399999999999885, 0.10324999999999918, 0.18499999999999872, 0.013749999999998153, -0.09774999999999956, -0.7447499999999998, -0.15100000000000158, 0.18399999999999928, 0.20974999999999966, 0.14750000000000085, 0.067499999999999, 0.18200000000000038, 0.14800000000000146, -0.43099999999999916, 0.16574999999999918], zp_timestamp='2025-11-03T19:06:00')
2025-11-03T21:08:08.189 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:08:08.203 [DEBUG] [Thread-122619] [transport.py] [_log()] starting thread (client mode): 0xedc5390
2025-11-03T21:08:08.203 [DEBUG] [Thread-122619] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:08:08.216 [DEBUG] [Thread-122619] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:08:08.216 [INFO] [Thread-122619] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:08:08.224 [DEBUG] [Thread-122619] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:08:08.224 [DEBUG] [Thread-122619] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:08:08.224 [DEBUG] [Thread-122619] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:08:08.224 [DEBUG] [Thread-122619] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:08:08.224 [DEBUG] [Thread-122619] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:08:08.224 [DEBUG] [Thread-122619] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:08:08.224 [DEBUG] [Thread-122619] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:08:08.224 [DEBUG] [Thread-122619] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:08:08.224 [DEBUG] [Thread-122619] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:08:08.224 [DEBUG] [Thread-122619] [transport.py] [_log()] client lang: <none>
2025-11-03T21:08:08.224 [DEBUG] [Thread-122619] [transport.py] [_log()] server lang: <none>
2025-11-03T21:08:08.224 [DEBUG] [Thread-122619] [transport.py] [_log()] kex follows: False
2025-11-03T21:08:08.225 [DEBUG] [Thread-122619] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:08:08.225 [DEBUG] [Thread-122619] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:08:08.225 [DEBUG] [Thread-122619] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:08:08.225 [DEBUG] [Thread-122619] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:08:08.225 [DEBUG] [Thread-122619] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:08:08.225 [DEBUG] [Thread-122619] [transport.py] [_log()] Compression: none
2025-11-03T21:08:08.225 [DEBUG] [Thread-122619] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:08:08.286 [DEBUG] [Thread-122619] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:08:08.286 [DEBUG] [Thread-122619] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:08:08.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:08:08.286 [DEBUG] [Thread-122619] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:08:08.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:08:08.343 [DEBUG] [Thread-122619] [transport.py] [_log()] userauth is OK
2025-11-03T21:08:08.343 [DEBUG] [Thread-122619] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:08:08.343 [DEBUG] [Thread-122619] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:08:08.343 [DEBUG] [Thread-122619] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:08:08.343 [DEBUG] [Thread-122619] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:08:08.356 [INFO] [Thread-122619] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:08:08.357 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:08:08.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:08:09.181 [DEBUG] [Thread-122619] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:08:09.181 [DEBUG] [Thread-122619] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:08:09.229 [DEBUG] [Thread-122619] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:08:09.230 [DEBUG] [Thread-122619] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:08:09.238 [DEBUG] [Thread-122619] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:08:09.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:08:09.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:08:09.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:08:09.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:08:09.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:08:09.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:08:09.271 [DEBUG] [Thread-122619] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:08:13.749 [DEBUG] [Thread-122621 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:08:21.377 [DEBUG] [Thread-122622 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:08:29.495 [DEBUG] [Thread-122623 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:08:37.464 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:08:37.470 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:08:39.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:08:39.296 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:08:39.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:08:40.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 8, 22), 33.19, 9.19, 0.0, 19.55, 18.94, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:08:40.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:08:22
2025-11-03T21:08:41.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:08:41.356 [DEBUG] [Thread-122624] [transport.py] [_log()] starting thread (client mode): 0x117996c0
2025-11-03T21:08:41.357 [DEBUG] [Thread-122624] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:08:41.357 [DEBUG] [Thread-122624] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:08:41.358 [INFO] [Thread-122624] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:08:41.360 [DEBUG] [Thread-122624] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:08:41.360 [DEBUG] [Thread-122624] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:08:41.360 [DEBUG] [Thread-122624] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:08:41.360 [DEBUG] [Thread-122624] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:08:41.360 [DEBUG] [Thread-122624] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:08:41.360 [DEBUG] [Thread-122624] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:08:41.360 [DEBUG] [Thread-122624] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:08:41.360 [DEBUG] [Thread-122624] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:08:41.360 [DEBUG] [Thread-122624] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:08:41.360 [DEBUG] [Thread-122624] [transport.py] [_log()] client lang: <none>
2025-11-03T21:08:41.360 [DEBUG] [Thread-122624] [transport.py] [_log()] server lang: <none>
2025-11-03T21:08:41.360 [DEBUG] [Thread-122624] [transport.py] [_log()] kex follows: False
2025-11-03T21:08:41.360 [DEBUG] [Thread-122624] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:08:41.361 [DEBUG] [Thread-122624] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:08:41.361 [DEBUG] [Thread-122624] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:08:41.361 [DEBUG] [Thread-122624] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:08:41.361 [DEBUG] [Thread-122624] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:08:41.361 [DEBUG] [Thread-122624] [transport.py] [_log()] Compression: none
2025-11-03T21:08:41.361 [DEBUG] [Thread-122624] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:08:41.385 [DEBUG] [Thread-122624] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:08:41.387 [DEBUG] [Thread-122624] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:08:41.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:08:41.388 [DEBUG] [Thread-122624] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:08:41.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:08:41.390 [DEBUG] [Thread-122624] [transport.py] [_log()] userauth is OK
2025-11-03T21:08:41.390 [DEBUG] [Thread-122624] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:08:41.390 [DEBUG] [Thread-122624] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:08:41.390 [DEBUG] [Thread-122624] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:08:41.390 [DEBUG] [Thread-122624] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:08:41.420 [INFO] [Thread-122624] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:08:41.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:08:42.089 [DEBUG] [Thread-122624] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:08:42.089 [DEBUG] [Thread-122624] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:08:42.090 [DEBUG] [Thread-122624] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:08:42.131 [DEBUG] [Thread-122624] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:08:42.131 [DEBUG] [Thread-122624] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:08:42.134 [DEBUG] [Thread-122624] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:08:42.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:08:42.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:08:42.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:08:42.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:08:42.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:08:42.160 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:08:42.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:08:42.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:08:42.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:08:42.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.797323 -999.00  +19.30  19.66     14   -8.30 1 1 1 1 1     0    0 23.96 -126.03 ZNESW 16.5 19.7 305.0 23.4 19.1 -27.3 19.1 -26.3 18.9 -26.0 19.1 -26.8
2025-11-03T21:08:42.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:08:42.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:08:42.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.797323
2025-11-03T21:08:42.168 [DEBUG] [Thread-122624] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:08:42.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:08:42.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:08:42.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:08:42.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:08:42.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:08:42.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:08:22', tmtdew=33.19, humidity=9.19, cloud=0.0, wind=19.55, temperature=18.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:08:22', seeing=1.24, atlas_timestamp='2025-11-03T19:08:08.707', atlas_cloud=1, atlas_rain=1, zp_data=[0.012750000000000483, 0.0417500000000004, -0.044749999999998735, 0.058499999999998664, 0.059499999999999886, 0.09325000000000117, -0.023000000000001464, -0.1532499999999999, 0.08949999999999925, 0.08150000000000013, 0.0702499999999997, 0.0909999999999993, 0.12400000000000055, 0.08174999999999955, -0.008500000000001506, -0.2400000000000002, 0.03824999999999967, 0.07099999999999973, 0.20399999999999885, 0.10324999999999918, 0.18499999999999872, 0.013749999999998153, -0.09774999999999956, -0.7447499999999998, -0.15100000000000158, 0.18399999999999928, 0.20974999999999966, 0.14750000000000085, 0.067499999999999, 0.18200000000000038, 0.14800000000000146, -0.43099999999999916, 0.16574999999999918], zp_timestamp='2025-11-03T19:06:00')
2025-11-03T21:08:42.261 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:08:42.275 [DEBUG] [Thread-122627] [transport.py] [_log()] starting thread (client mode): 0xedc42e0
2025-11-03T21:08:42.275 [DEBUG] [Thread-122627] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:08:42.293 [DEBUG] [Thread-122627] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:08:42.293 [INFO] [Thread-122627] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:08:42.303 [DEBUG] [Thread-122627] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:08:42.303 [DEBUG] [Thread-122627] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:08:42.303 [DEBUG] [Thread-122627] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:08:42.303 [DEBUG] [Thread-122627] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:08:42.303 [DEBUG] [Thread-122627] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:08:42.303 [DEBUG] [Thread-122627] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:08:42.303 [DEBUG] [Thread-122627] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:08:42.303 [DEBUG] [Thread-122627] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:08:42.303 [DEBUG] [Thread-122627] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:08:42.303 [DEBUG] [Thread-122627] [transport.py] [_log()] client lang: <none>
2025-11-03T21:08:42.303 [DEBUG] [Thread-122627] [transport.py] [_log()] server lang: <none>
2025-11-03T21:08:42.303 [DEBUG] [Thread-122627] [transport.py] [_log()] kex follows: False
2025-11-03T21:08:42.303 [DEBUG] [Thread-122627] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:08:42.303 [DEBUG] [Thread-122627] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:08:42.303 [DEBUG] [Thread-122627] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:08:42.303 [DEBUG] [Thread-122627] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:08:42.303 [DEBUG] [Thread-122627] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:08:42.304 [DEBUG] [Thread-122627] [transport.py] [_log()] Compression: none
2025-11-03T21:08:42.304 [DEBUG] [Thread-122627] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:08:42.366 [DEBUG] [Thread-122627] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:08:42.366 [DEBUG] [Thread-122627] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:08:42.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:08:42.367 [DEBUG] [Thread-122627] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:08:42.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:08:42.427 [DEBUG] [Thread-122627] [transport.py] [_log()] userauth is OK
2025-11-03T21:08:42.427 [DEBUG] [Thread-122627] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:08:42.427 [DEBUG] [Thread-122627] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:08:42.427 [DEBUG] [Thread-122627] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:08:42.427 [DEBUG] [Thread-122627] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:08:42.444 [INFO] [Thread-122627] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:08:42.445 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:08:42.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:08:43.261 [DEBUG] [Thread-122627] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:08:43.261 [DEBUG] [Thread-122627] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:08:43.308 [DEBUG] [Thread-122627] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:08:43.309 [DEBUG] [Thread-122627] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:08:43.317 [DEBUG] [Thread-122627] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:08:43.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:08:43.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:08:43.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:08:43.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:08:43.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:08:43.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:08:43.353 [DEBUG] [Thread-122627] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:08:44.600 [DEBUG] [Thread-122629 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:08:59.824 [DEBUG] [Thread-122630 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:09:13.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:09:13.415 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:09:13.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:09:14.956 [DEBUG] [Thread-122631 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:09:15.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 8, 55), 33.12, 9.2, 0.0, 20.27, 18.91, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:09:15.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:08:55
2025-11-03T21:09:15.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:09:15.801 [DEBUG] [Thread-122632] [transport.py] [_log()] starting thread (client mode): 0x11799420
2025-11-03T21:09:15.802 [DEBUG] [Thread-122632] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:09:15.814 [DEBUG] [Thread-122632] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:09:15.815 [INFO] [Thread-122632] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:09:15.820 [DEBUG] [Thread-122632] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:09:15.820 [DEBUG] [Thread-122632] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:09:15.820 [DEBUG] [Thread-122632] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:09:15.820 [DEBUG] [Thread-122632] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:09:15.820 [DEBUG] [Thread-122632] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:09:15.820 [DEBUG] [Thread-122632] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:09:15.820 [DEBUG] [Thread-122632] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:09:15.820 [DEBUG] [Thread-122632] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:09:15.820 [DEBUG] [Thread-122632] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:09:15.820 [DEBUG] [Thread-122632] [transport.py] [_log()] client lang: <none>
2025-11-03T21:09:15.820 [DEBUG] [Thread-122632] [transport.py] [_log()] server lang: <none>
2025-11-03T21:09:15.820 [DEBUG] [Thread-122632] [transport.py] [_log()] kex follows: False
2025-11-03T21:09:15.820 [DEBUG] [Thread-122632] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:09:15.821 [DEBUG] [Thread-122632] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:09:15.821 [DEBUG] [Thread-122632] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:09:15.821 [DEBUG] [Thread-122632] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:09:15.821 [DEBUG] [Thread-122632] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:09:15.821 [DEBUG] [Thread-122632] [transport.py] [_log()] Compression: none
2025-11-03T21:09:15.821 [DEBUG] [Thread-122632] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:09:15.860 [DEBUG] [Thread-122632] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:09:15.865 [DEBUG] [Thread-122632] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:09:15.867 [DEBUG] [Thread-122632] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:09:15.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:09:15.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:09:15.872 [DEBUG] [Thread-122632] [transport.py] [_log()] userauth is OK
2025-11-03T21:09:15.872 [DEBUG] [Thread-122632] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:09:15.872 [DEBUG] [Thread-122632] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:09:15.873 [DEBUG] [Thread-122632] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:09:15.873 [DEBUG] [Thread-122632] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:09:15.899 [INFO] [Thread-122632] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:09:15.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:09:16.531 [DEBUG] [Thread-122632] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:09:16.531 [DEBUG] [Thread-122632] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:09:16.532 [DEBUG] [Thread-122632] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:09:16.572 [DEBUG] [Thread-122632] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:09:16.573 [DEBUG] [Thread-122632] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:09:16.577 [DEBUG] [Thread-122632] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:09:16.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:09:16.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:09:16.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:09:16.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:09:16.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:09:16.603 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:09:16.603 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:09:16.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:09:16.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:09:16.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.797670 -999.00  +19.30  15.90     14   -8.40 1 1 1 1 1     0    0 24.51 -123.71 ZNESW 16.3 15.9 303.0 21.9 19.1 -27.4 19.1 -26.3 18.9 -26.0 19.1 -26.9
2025-11-03T21:09:16.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:09:16.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:09:16.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.797670
2025-11-03T21:09:16.618 [DEBUG] [Thread-122632] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:09:16.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:09:16.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:09:16.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:09:16.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:09:16.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:09:16.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:08:55', tmtdew=33.12, humidity=9.2, cloud=0.0, wind=20.27, temperature=18.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:08:56', seeing=1.06, atlas_timestamp='2025-11-03T19:08:38.688', atlas_cloud=1, atlas_rain=1, zp_data=[0.012750000000000483, 0.0417500000000004, -0.044749999999998735, 0.058499999999998664, 0.059499999999999886, 0.09325000000000117, -0.023000000000001464, -0.1532499999999999, 0.08949999999999925, 0.08150000000000013, 0.0702499999999997, 0.0909999999999993, 0.12400000000000055, 0.08174999999999955, -0.008500000000001506, -0.2400000000000002, 0.03824999999999967, 0.07099999999999973, 0.20399999999999885, 0.10324999999999918, 0.18499999999999872, 0.013749999999998153, -0.09774999999999956, -0.7447499999999998, -0.15100000000000158, 0.18399999999999928, 0.20974999999999966, 0.14750000000000085, 0.067499999999999, 0.18200000000000038, 0.14800000000000146, -0.43099999999999916, 0.16574999999999918], zp_timestamp='2025-11-03T19:06:00')
2025-11-03T21:09:16.710 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:09:16.724 [DEBUG] [Thread-122635] [transport.py] [_log()] starting thread (client mode): 0xed370d0
2025-11-03T21:09:16.724 [DEBUG] [Thread-122635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:09:16.740 [DEBUG] [Thread-122635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:09:16.740 [INFO] [Thread-122635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:09:16.749 [DEBUG] [Thread-122635] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:09:16.750 [DEBUG] [Thread-122635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:09:16.750 [DEBUG] [Thread-122635] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:09:16.750 [DEBUG] [Thread-122635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:09:16.750 [DEBUG] [Thread-122635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:09:16.750 [DEBUG] [Thread-122635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:09:16.750 [DEBUG] [Thread-122635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:09:16.750 [DEBUG] [Thread-122635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:09:16.750 [DEBUG] [Thread-122635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:09:16.750 [DEBUG] [Thread-122635] [transport.py] [_log()] client lang: <none>
2025-11-03T21:09:16.750 [DEBUG] [Thread-122635] [transport.py] [_log()] server lang: <none>
2025-11-03T21:09:16.750 [DEBUG] [Thread-122635] [transport.py] [_log()] kex follows: False
2025-11-03T21:09:16.750 [DEBUG] [Thread-122635] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:09:16.750 [DEBUG] [Thread-122635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:09:16.750 [DEBUG] [Thread-122635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:09:16.750 [DEBUG] [Thread-122635] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:09:16.750 [DEBUG] [Thread-122635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:09:16.751 [DEBUG] [Thread-122635] [transport.py] [_log()] Compression: none
2025-11-03T21:09:16.751 [DEBUG] [Thread-122635] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:09:16.809 [DEBUG] [Thread-122635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:09:16.810 [DEBUG] [Thread-122635] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:09:16.810 [DEBUG] [Thread-122635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:09:16.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:09:16.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:09:16.869 [DEBUG] [Thread-122635] [transport.py] [_log()] userauth is OK
2025-11-03T21:09:16.869 [DEBUG] [Thread-122635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:09:16.869 [DEBUG] [Thread-122635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:09:16.869 [DEBUG] [Thread-122635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:09:16.869 [DEBUG] [Thread-122635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:09:16.889 [INFO] [Thread-122635] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:09:16.889 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:09:16.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:09:17.731 [DEBUG] [Thread-122635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:09:17.731 [DEBUG] [Thread-122635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:09:17.780 [DEBUG] [Thread-122635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:09:17.780 [DEBUG] [Thread-122635] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:09:17.789 [DEBUG] [Thread-122635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:09:17.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:09:17.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:09:17.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:09:17.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:09:17.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:09:17.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:09:17.826 [DEBUG] [Thread-122635] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:09:21.742 [DEBUG] [Thread-122637 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:09:26.651 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:09:30.084 [DEBUG] [Thread-122638 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:09:37.691 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:09:37.699 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:09:45.313 [DEBUG] [Thread-122639 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:09:47.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:09:47.851 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:09:47.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:09:50.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 9, 30), 33.06, 9.25, 0.0, 19.94, 18.92, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:09:50.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:09:30
2025-11-03T21:09:50.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:09:50.497 [DEBUG] [Thread-122640] [transport.py] [_log()] starting thread (client mode): 0xed884f0
2025-11-03T21:09:50.498 [DEBUG] [Thread-122640] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:09:50.506 [DEBUG] [Thread-122640] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:09:50.506 [INFO] [Thread-122640] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:09:50.514 [DEBUG] [Thread-122640] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:09:50.514 [DEBUG] [Thread-122640] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:09:50.514 [DEBUG] [Thread-122640] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:09:50.514 [DEBUG] [Thread-122640] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:09:50.515 [DEBUG] [Thread-122640] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:09:50.515 [DEBUG] [Thread-122640] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:09:50.515 [DEBUG] [Thread-122640] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:09:50.515 [DEBUG] [Thread-122640] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:09:50.515 [DEBUG] [Thread-122640] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:09:50.515 [DEBUG] [Thread-122640] [transport.py] [_log()] client lang: <none>
2025-11-03T21:09:50.515 [DEBUG] [Thread-122640] [transport.py] [_log()] server lang: <none>
2025-11-03T21:09:50.515 [DEBUG] [Thread-122640] [transport.py] [_log()] kex follows: False
2025-11-03T21:09:50.515 [DEBUG] [Thread-122640] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:09:50.516 [DEBUG] [Thread-122640] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:09:50.517 [DEBUG] [Thread-122640] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:09:50.517 [DEBUG] [Thread-122640] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:09:50.517 [DEBUG] [Thread-122640] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:09:50.517 [DEBUG] [Thread-122640] [transport.py] [_log()] Compression: none
2025-11-03T21:09:50.518 [DEBUG] [Thread-122640] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:09:50.560 [DEBUG] [Thread-122640] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:09:50.567 [DEBUG] [Thread-122640] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:09:50.570 [DEBUG] [Thread-122640] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:09:50.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:09:50.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:09:50.577 [DEBUG] [Thread-122640] [transport.py] [_log()] userauth is OK
2025-11-03T21:09:50.578 [DEBUG] [Thread-122640] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:09:50.578 [DEBUG] [Thread-122640] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:09:50.578 [DEBUG] [Thread-122640] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:09:50.578 [DEBUG] [Thread-122640] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:09:50.611 [INFO] [Thread-122640] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:09:50.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:09:51.258 [DEBUG] [Thread-122640] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:09:51.258 [DEBUG] [Thread-122640] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:09:51.264 [DEBUG] [Thread-122640] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:09:51.299 [DEBUG] [Thread-122640] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:09:51.300 [DEBUG] [Thread-122640] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:09:51.304 [DEBUG] [Thread-122640] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:09:51.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:09:51.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:09:51.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:09:51.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:09:51.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:09:51.330 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:09:51.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:09:51.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:09:51.334 [DEBUG] [Thread-122640] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:09:51.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:09:51.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.798017 -999.00  +19.20  16.86     14   -8.20 1 1 1 1 1     0    0 24.80 -128.26 ZNESW 18.4 16.9 304.4 20.5 19.1 -27.2 19.1 -26.1 18.9 -25.8 19.1 -26.9
2025-11-03T21:09:51.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:09:51.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:09:51.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.798017
2025-11-03T21:09:51.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:09:51.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:09:51.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:09:51.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:09:51.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:09:51.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:09:30', tmtdew=33.06, humidity=9.25, cloud=0.0, wind=19.94, temperature=18.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:09:31', seeing=1.06, atlas_timestamp='2025-11-03T19:09:08.669', atlas_cloud=1, atlas_rain=1, zp_data=[0.012750000000000483, 0.0417500000000004, -0.044749999999998735, 0.058499999999998664, 0.059499999999999886, 0.09325000000000117, -0.023000000000001464, -0.1532499999999999, 0.08949999999999925, 0.08150000000000013, 0.0702499999999997, 0.0909999999999993, 0.12400000000000055, 0.08174999999999955, -0.008500000000001506, -0.2400000000000002, 0.03824999999999967, 0.07099999999999973, 0.20399999999999885, 0.10324999999999918, 0.18499999999999872, 0.013749999999998153, -0.09774999999999956, -0.7447499999999998, -0.15100000000000158, 0.18399999999999928, 0.20974999999999966, 0.14750000000000085, 0.067499999999999, 0.18200000000000038, 0.14800000000000146, -0.43099999999999916, 0.16574999999999918], zp_timestamp='2025-11-03T19:06:00')
2025-11-03T21:09:51.456 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:09:51.468 [DEBUG] [Thread-122643] [transport.py] [_log()] starting thread (client mode): 0xed13c70
2025-11-03T21:09:51.468 [DEBUG] [Thread-122643] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:09:51.482 [DEBUG] [Thread-122643] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:09:51.483 [INFO] [Thread-122643] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:09:51.490 [DEBUG] [Thread-122643] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:09:51.491 [DEBUG] [Thread-122643] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:09:51.491 [DEBUG] [Thread-122643] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:09:51.491 [DEBUG] [Thread-122643] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:09:51.491 [DEBUG] [Thread-122643] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:09:51.491 [DEBUG] [Thread-122643] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:09:51.491 [DEBUG] [Thread-122643] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:09:51.491 [DEBUG] [Thread-122643] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:09:51.491 [DEBUG] [Thread-122643] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:09:51.491 [DEBUG] [Thread-122643] [transport.py] [_log()] client lang: <none>
2025-11-03T21:09:51.491 [DEBUG] [Thread-122643] [transport.py] [_log()] server lang: <none>
2025-11-03T21:09:51.491 [DEBUG] [Thread-122643] [transport.py] [_log()] kex follows: False
2025-11-03T21:09:51.491 [DEBUG] [Thread-122643] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:09:51.491 [DEBUG] [Thread-122643] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:09:51.491 [DEBUG] [Thread-122643] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:09:51.491 [DEBUG] [Thread-122643] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:09:51.491 [DEBUG] [Thread-122643] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:09:51.491 [DEBUG] [Thread-122643] [transport.py] [_log()] Compression: none
2025-11-03T21:09:51.492 [DEBUG] [Thread-122643] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:09:51.548 [DEBUG] [Thread-122643] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:09:51.549 [DEBUG] [Thread-122643] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:09:51.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:09:51.549 [DEBUG] [Thread-122643] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:09:51.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:09:51.604 [DEBUG] [Thread-122643] [transport.py] [_log()] userauth is OK
2025-11-03T21:09:51.604 [DEBUG] [Thread-122643] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:09:51.605 [DEBUG] [Thread-122643] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:09:51.605 [DEBUG] [Thread-122643] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:09:51.605 [DEBUG] [Thread-122643] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:09:51.626 [INFO] [Thread-122643] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:09:51.626 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:09:51.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:09:52.473 [DEBUG] [Thread-122643] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:09:52.473 [DEBUG] [Thread-122643] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:09:52.521 [DEBUG] [Thread-122643] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:09:52.521 [DEBUG] [Thread-122643] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:09:52.530 [DEBUG] [Thread-122643] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:09:52.539 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:09:52.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:09:52.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:09:52.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:09:52.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:09:52.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:09:52.569 [DEBUG] [Thread-122643] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:10:00.405 [DEBUG] [Thread-122645 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:10:15.729 [DEBUG] [Thread-122646 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:10:22.251 [DEBUG] [Thread-122647 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:10:22.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:10:22.571 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:10:22.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:10:24.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 10, 4), 32.98, 9.32, 0.0, 20.49, 18.92, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:10:24.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:10:04
2025-11-03T21:10:24.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:10:24.990 [DEBUG] [Thread-122648] [transport.py] [_log()] starting thread (client mode): 0xed111b0
2025-11-03T21:10:24.991 [DEBUG] [Thread-122648] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:10:24.997 [DEBUG] [Thread-122648] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:10:24.997 [INFO] [Thread-122648] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:10:25.006 [DEBUG] [Thread-122648] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:10:25.007 [DEBUG] [Thread-122648] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:10:25.007 [DEBUG] [Thread-122648] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:10:25.007 [DEBUG] [Thread-122648] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:10:25.007 [DEBUG] [Thread-122648] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:10:25.007 [DEBUG] [Thread-122648] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:10:25.007 [DEBUG] [Thread-122648] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:10:25.007 [DEBUG] [Thread-122648] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:10:25.007 [DEBUG] [Thread-122648] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:10:25.007 [DEBUG] [Thread-122648] [transport.py] [_log()] client lang: <none>
2025-11-03T21:10:25.007 [DEBUG] [Thread-122648] [transport.py] [_log()] server lang: <none>
2025-11-03T21:10:25.007 [DEBUG] [Thread-122648] [transport.py] [_log()] kex follows: False
2025-11-03T21:10:25.007 [DEBUG] [Thread-122648] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:10:25.008 [DEBUG] [Thread-122648] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:10:25.008 [DEBUG] [Thread-122648] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:10:25.008 [DEBUG] [Thread-122648] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:10:25.008 [DEBUG] [Thread-122648] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:10:25.009 [DEBUG] [Thread-122648] [transport.py] [_log()] Compression: none
2025-11-03T21:10:25.009 [DEBUG] [Thread-122648] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:10:25.049 [DEBUG] [Thread-122648] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:10:25.054 [DEBUG] [Thread-122648] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:10:25.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:10:25.056 [DEBUG] [Thread-122648] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:10:25.058 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:10:25.060 [DEBUG] [Thread-122648] [transport.py] [_log()] userauth is OK
2025-11-03T21:10:25.060 [DEBUG] [Thread-122648] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:10:25.060 [DEBUG] [Thread-122648] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:10:25.060 [DEBUG] [Thread-122648] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:10:25.060 [DEBUG] [Thread-122648] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:10:25.081 [INFO] [Thread-122648] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:10:25.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:10:25.731 [DEBUG] [Thread-122648] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:10:25.732 [DEBUG] [Thread-122648] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:10:25.733 [DEBUG] [Thread-122648] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:10:25.773 [DEBUG] [Thread-122648] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:10:25.773 [DEBUG] [Thread-122648] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:10:25.776 [DEBUG] [Thread-122648] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:10:25.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:10:25.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:10:25.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:10:25.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:10:25.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:10:25.803 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:10:25.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:10:25.803 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:10:25.805 [DEBUG] [Thread-122648] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:10:25.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:10:25.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.798364 -999.00  +19.30  19.23     14   -8.30 1 1 1 1 1     0    0 24.54 -137.45 ZNESW 18.2 19.2 302.8 22.0 19.2 -27.2 19.1 -26.1 18.8 -25.9 19.1 -26.6
2025-11-03T21:10:25.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:10:25.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:10:25.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.798364
2025-11-03T21:10:25.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:10:25.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:10:25.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:10:25.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:10:25.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:10:25.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:10:04', tmtdew=32.98, humidity=9.32, cloud=0.0, wind=20.49, temperature=18.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:10:05', seeing=1.03, atlas_timestamp='2025-11-03T19:09:38.650', atlas_cloud=1, atlas_rain=1, zp_data=[0.012750000000000483, 0.0417500000000004, -0.044749999999998735, 0.058499999999998664, 0.059499999999999886, 0.09325000000000117, -0.023000000000001464, -0.1532499999999999, 0.08949999999999925, 0.08150000000000013, 0.0702499999999997, 0.0909999999999993, 0.12400000000000055, 0.08174999999999955, -0.008500000000001506, -0.2400000000000002, 0.03824999999999967, 0.07099999999999973, 0.20399999999999885, 0.10324999999999918, 0.18499999999999872, 0.013749999999998153, -0.09774999999999956, -0.7447499999999998, -0.15100000000000158, 0.18399999999999928, 0.20974999999999966, 0.14750000000000085, 0.067499999999999, 0.18200000000000038, 0.14800000000000146, -0.43099999999999916, 0.16574999999999918], zp_timestamp='2025-11-03T19:06:00')
2025-11-03T21:10:25.916 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:10:25.929 [DEBUG] [Thread-122651] [transport.py] [_log()] starting thread (client mode): 0xed8a590
2025-11-03T21:10:25.929 [DEBUG] [Thread-122651] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:10:25.944 [DEBUG] [Thread-122651] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:10:25.944 [INFO] [Thread-122651] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:10:25.952 [DEBUG] [Thread-122651] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:10:25.952 [DEBUG] [Thread-122651] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:10:25.952 [DEBUG] [Thread-122651] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:10:25.952 [DEBUG] [Thread-122651] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:10:25.952 [DEBUG] [Thread-122651] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:10:25.952 [DEBUG] [Thread-122651] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:10:25.952 [DEBUG] [Thread-122651] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:10:25.952 [DEBUG] [Thread-122651] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:10:25.952 [DEBUG] [Thread-122651] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:10:25.952 [DEBUG] [Thread-122651] [transport.py] [_log()] client lang: <none>
2025-11-03T21:10:25.953 [DEBUG] [Thread-122651] [transport.py] [_log()] server lang: <none>
2025-11-03T21:10:25.953 [DEBUG] [Thread-122651] [transport.py] [_log()] kex follows: False
2025-11-03T21:10:25.953 [DEBUG] [Thread-122651] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:10:25.953 [DEBUG] [Thread-122651] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:10:25.953 [DEBUG] [Thread-122651] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:10:25.953 [DEBUG] [Thread-122651] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:10:25.953 [DEBUG] [Thread-122651] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:10:25.953 [DEBUG] [Thread-122651] [transport.py] [_log()] Compression: none
2025-11-03T21:10:25.953 [DEBUG] [Thread-122651] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:10:26.013 [DEBUG] [Thread-122651] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:10:26.014 [DEBUG] [Thread-122651] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:10:26.014 [DEBUG] [Thread-122651] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:10:26.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:10:26.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:10:26.069 [DEBUG] [Thread-122651] [transport.py] [_log()] userauth is OK
2025-11-03T21:10:26.069 [DEBUG] [Thread-122651] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:10:26.069 [DEBUG] [Thread-122651] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:10:26.070 [DEBUG] [Thread-122651] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:10:26.070 [DEBUG] [Thread-122651] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:10:26.091 [INFO] [Thread-122651] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:10:26.091 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:10:26.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:10:26.896 [DEBUG] [Thread-122651] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:10:26.896 [DEBUG] [Thread-122651] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:10:26.944 [DEBUG] [Thread-122651] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:10:26.944 [DEBUG] [Thread-122651] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:10:26.953 [DEBUG] [Thread-122651] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:10:26.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:10:26.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:10:26.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:10:26.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:10:26.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:10:26.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:10:26.989 [DEBUG] [Thread-122651] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:10:30.855 [DEBUG] [Thread-122653 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:10:37.925 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:10:37.927 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:10:46.111 [DEBUG] [Thread-122654 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:10:57.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:10:57.050 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:10:57.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:10:58.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 10, 38), 32.88, 9.82, 0.0, 18.74, 19.07, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:10:58.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:10:38
2025-11-03T21:10:59.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:10:59.183 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:10:59.299 [DEBUG] [Thread-122655] [transport.py] [_log()] starting thread (client mode): 0xed899f0
2025-11-03T21:10:59.301 [DEBUG] [Thread-122655] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:10:59.309 [DEBUG] [Thread-122655] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:10:59.309 [INFO] [Thread-122655] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:10:59.317 [DEBUG] [Thread-122655] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:10:59.317 [DEBUG] [Thread-122655] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:10:59.317 [DEBUG] [Thread-122655] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:10:59.317 [DEBUG] [Thread-122655] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:10:59.317 [DEBUG] [Thread-122655] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:10:59.318 [DEBUG] [Thread-122655] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:10:59.318 [DEBUG] [Thread-122655] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:10:59.318 [DEBUG] [Thread-122655] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:10:59.318 [DEBUG] [Thread-122655] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:10:59.318 [DEBUG] [Thread-122655] [transport.py] [_log()] client lang: <none>
2025-11-03T21:10:59.318 [DEBUG] [Thread-122655] [transport.py] [_log()] server lang: <none>
2025-11-03T21:10:59.318 [DEBUG] [Thread-122655] [transport.py] [_log()] kex follows: False
2025-11-03T21:10:59.318 [DEBUG] [Thread-122655] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:10:59.319 [DEBUG] [Thread-122655] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:10:59.319 [DEBUG] [Thread-122655] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:10:59.319 [DEBUG] [Thread-122655] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:10:59.319 [DEBUG] [Thread-122655] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:10:59.319 [DEBUG] [Thread-122655] [transport.py] [_log()] Compression: none
2025-11-03T21:10:59.319 [DEBUG] [Thread-122655] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:10:59.361 [DEBUG] [Thread-122655] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:10:59.366 [DEBUG] [Thread-122655] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:10:59.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:10:59.368 [DEBUG] [Thread-122655] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:10:59.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:10:59.371 [DEBUG] [Thread-122655] [transport.py] [_log()] userauth is OK
2025-11-03T21:10:59.371 [DEBUG] [Thread-122655] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:10:59.372 [DEBUG] [Thread-122655] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:10:59.372 [DEBUG] [Thread-122655] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:10:59.372 [DEBUG] [Thread-122655] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:10:59.409 [INFO] [Thread-122655] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:10:59.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:11:00.038 [DEBUG] [Thread-122655] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:11:00.039 [DEBUG] [Thread-122655] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:11:00.040 [DEBUG] [Thread-122655] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:11:00.080 [DEBUG] [Thread-122655] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:11:00.080 [DEBUG] [Thread-122655] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:11:00.083 [DEBUG] [Thread-122655] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:11:00.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:11:00.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:11:00.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:11:00.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:11:00.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:11:00.105 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:11:00.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:11:00.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:11:00.108 [DEBUG] [Thread-122655] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:11:00.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:11:00.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.798711 -999.00  +19.30  18.51     14   -8.20 1 1 1 1 1     0    0 24.88 -117.82 ZNESW 16.7 18.5 292.6 27.0 19.1 -27.1 19.1 -26.0 18.8 -25.9 19.1 -26.5
2025-11-03T21:11:00.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:11:00.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:11:00.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.798711
2025-11-03T21:11:00.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:11:00.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:11:00.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:11:00.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:11:00.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:11:00.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:10:38', tmtdew=32.88, humidity=9.82, cloud=0.0, wind=18.74, temperature=19.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:10:39', seeing=1.1, atlas_timestamp='2025-11-03T19:10:08.630', atlas_cloud=1, atlas_rain=1, zp_data=[0.012750000000000483, 0.0417500000000004, -0.044749999999998735, 0.058499999999998664, 0.059499999999999886, 0.09325000000000117, -0.023000000000001464, -0.1532499999999999, 0.08949999999999925, 0.08150000000000013, 0.0702499999999997, 0.0909999999999993, 0.12400000000000055, 0.08174999999999955, -0.008500000000001506, -0.2400000000000002, 0.03824999999999967, 0.07099999999999973, 0.20399999999999885, 0.10324999999999918, 0.18499999999999872, 0.013749999999998153, -0.09774999999999956, -0.7447499999999998, -0.15100000000000158, 0.18399999999999928, 0.20974999999999966, 0.14750000000000085, 0.067499999999999, 0.18200000000000038, 0.14800000000000146, -0.43099999999999916, 0.16574999999999918], zp_timestamp='2025-11-03T19:06:00')
2025-11-03T21:11:00.228 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:11:00.241 [DEBUG] [Thread-122658] [transport.py] [_log()] starting thread (client mode): 0xedc4190
2025-11-03T21:11:00.241 [DEBUG] [Thread-122658] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:11:00.257 [DEBUG] [Thread-122658] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:11:00.257 [INFO] [Thread-122658] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:11:00.266 [DEBUG] [Thread-122658] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:11:00.266 [DEBUG] [Thread-122658] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:11:00.266 [DEBUG] [Thread-122658] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:11:00.266 [DEBUG] [Thread-122658] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:11:00.266 [DEBUG] [Thread-122658] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:11:00.267 [DEBUG] [Thread-122658] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:11:00.267 [DEBUG] [Thread-122658] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:11:00.267 [DEBUG] [Thread-122658] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:11:00.267 [DEBUG] [Thread-122658] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:11:00.267 [DEBUG] [Thread-122658] [transport.py] [_log()] client lang: <none>
2025-11-03T21:11:00.267 [DEBUG] [Thread-122658] [transport.py] [_log()] server lang: <none>
2025-11-03T21:11:00.267 [DEBUG] [Thread-122658] [transport.py] [_log()] kex follows: False
2025-11-03T21:11:00.267 [DEBUG] [Thread-122658] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:11:00.267 [DEBUG] [Thread-122658] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:11:00.267 [DEBUG] [Thread-122658] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:11:00.268 [DEBUG] [Thread-122658] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:11:00.268 [DEBUG] [Thread-122658] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:11:00.268 [DEBUG] [Thread-122658] [transport.py] [_log()] Compression: none
2025-11-03T21:11:00.268 [DEBUG] [Thread-122658] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:11:00.328 [DEBUG] [Thread-122658] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:11:00.329 [DEBUG] [Thread-122658] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:11:00.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:11:00.330 [DEBUG] [Thread-122658] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:11:00.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:11:00.392 [DEBUG] [Thread-122658] [transport.py] [_log()] userauth is OK
2025-11-03T21:11:00.392 [DEBUG] [Thread-122658] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:11:00.392 [DEBUG] [Thread-122658] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:11:00.392 [DEBUG] [Thread-122658] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:11:00.392 [DEBUG] [Thread-122658] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:11:00.420 [INFO] [Thread-122658] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:11:00.420 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:11:00.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:11:01.253 [DEBUG] [Thread-122658] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:11:01.253 [DEBUG] [Thread-122658] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:11:01.301 [DEBUG] [Thread-122658] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:11:01.301 [DEBUG] [Thread-122658] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:11:01.309 [DEBUG] [Thread-122658] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:11:01.310 [DEBUG] [Thread-122660 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:11:01.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:11:01.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:11:01.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:11:01.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:11:01.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:11:01.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:11:01.346 [DEBUG] [Thread-122658] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:11:02.374 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:11:07.487 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:11:13.965 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:11:16.759 [DEBUG] [Thread-122661 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:11:22.701 [DEBUG] [Thread-122662 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:11:31.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:11:31.417 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:11:31.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:11:31.941 [DEBUG] [Thread-122663 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:11:33.251 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:11:33.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 11, 13), 32.98, 9.75, 0.0, 17.64, 19.15, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:11:33.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:11:13
2025-11-03T21:11:33.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:11:34.152 [DEBUG] [Thread-122664] [transport.py] [_log()] starting thread (client mode): 0xedc6740
2025-11-03T21:11:34.153 [DEBUG] [Thread-122664] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:11:34.154 [DEBUG] [Thread-122664] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:11:34.154 [INFO] [Thread-122664] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:11:34.160 [DEBUG] [Thread-122664] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:11:34.160 [DEBUG] [Thread-122664] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:11:34.160 [DEBUG] [Thread-122664] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:11:34.160 [DEBUG] [Thread-122664] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:11:34.160 [DEBUG] [Thread-122664] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:11:34.160 [DEBUG] [Thread-122664] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:11:34.160 [DEBUG] [Thread-122664] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:11:34.160 [DEBUG] [Thread-122664] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:11:34.160 [DEBUG] [Thread-122664] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:11:34.160 [DEBUG] [Thread-122664] [transport.py] [_log()] client lang: <none>
2025-11-03T21:11:34.160 [DEBUG] [Thread-122664] [transport.py] [_log()] server lang: <none>
2025-11-03T21:11:34.160 [DEBUG] [Thread-122664] [transport.py] [_log()] kex follows: False
2025-11-03T21:11:34.160 [DEBUG] [Thread-122664] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:11:34.161 [DEBUG] [Thread-122664] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:11:34.161 [DEBUG] [Thread-122664] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:11:34.161 [DEBUG] [Thread-122664] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:11:34.161 [DEBUG] [Thread-122664] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:11:34.161 [DEBUG] [Thread-122664] [transport.py] [_log()] Compression: none
2025-11-03T21:11:34.161 [DEBUG] [Thread-122664] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:11:34.198 [DEBUG] [Thread-122664] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:11:34.203 [DEBUG] [Thread-122664] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:11:34.205 [DEBUG] [Thread-122664] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:11:34.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:11:34.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:11:34.211 [DEBUG] [Thread-122664] [transport.py] [_log()] userauth is OK
2025-11-03T21:11:34.211 [DEBUG] [Thread-122664] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:11:34.211 [DEBUG] [Thread-122664] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:11:34.212 [DEBUG] [Thread-122664] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:11:34.212 [DEBUG] [Thread-122664] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:11:34.282 [INFO] [Thread-122664] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:11:34.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:11:35.087 [DEBUG] [Thread-122664] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:11:35.087 [DEBUG] [Thread-122664] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:11:35.089 [DEBUG] [Thread-122664] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:11:35.128 [DEBUG] [Thread-122664] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:11:35.128 [DEBUG] [Thread-122664] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:11:35.131 [DEBUG] [Thread-122664] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:11:35.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:11:35.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:11:35.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:11:35.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:11:35.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:11:35.158 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:11:35.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:11:35.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:11:35.160 [DEBUG] [Thread-122664] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:11:35.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:11:35.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.799059 -999.00  +19.30  17.69     14   -8.10 1 1 1 1 1     0    0 24.82 -114.45 ZNESW 18.6 17.7 299.8 21.7 19.2 -27.0 19.1 -26.1 18.9 -25.7 19.1 -26.8
2025-11-03T21:11:35.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:11:35.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:11:35.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.799059
2025-11-03T21:11:35.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:11:35.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:11:35.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:11:35.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:11:35.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:11:35.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:11:13', tmtdew=32.98, humidity=9.75, cloud=0.0, wind=17.64, temperature=19.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:11:13', seeing=1.18, atlas_timestamp='2025-11-03T19:10:38.698', atlas_cloud=1, atlas_rain=1, zp_data=[0.003750000000000142, -0.03074999999999939, 0.051750000000000185, 0.06949999999999967, 0.0365000000000002, -0.06974999999999909, 0.027999999999998693, -0.18874999999999886, 0.0495000000000001, 0.09299999999999997, 0.0727499999999992, 0.06949999999999967, 0.1479999999999997, 0.06925000000000026, 0.007999999999999119, -0.28200000000000003, -0.011250000000000426, 0.10749999999999993, 0.17799999999999905, 0.13124999999999787, 0.16999999999999815, -0.1492500000000021, -0.059749999999999304, -0.7837499999999995, -0.019000000000000128, 0.1479999999999997, 0.23075000000000045, 0.1750000000000007, 0.08399999999999963, 0.17600000000000193, 0.19400000000000084, -0.9294999999999991, 0.08724999999999916], zp_timestamp='2025-11-03T19:09:00')
2025-11-03T21:11:35.285 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:11:35.299 [DEBUG] [Thread-122667] [transport.py] [_log()] starting thread (client mode): 0x11798bb0
2025-11-03T21:11:35.300 [DEBUG] [Thread-122667] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:11:35.320 [DEBUG] [Thread-122667] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:11:35.320 [INFO] [Thread-122667] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:11:35.328 [DEBUG] [Thread-122667] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:11:35.328 [DEBUG] [Thread-122667] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:11:35.328 [DEBUG] [Thread-122667] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:11:35.328 [DEBUG] [Thread-122667] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:11:35.328 [DEBUG] [Thread-122667] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:11:35.328 [DEBUG] [Thread-122667] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:11:35.328 [DEBUG] [Thread-122667] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:11:35.328 [DEBUG] [Thread-122667] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:11:35.328 [DEBUG] [Thread-122667] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:11:35.328 [DEBUG] [Thread-122667] [transport.py] [_log()] client lang: <none>
2025-11-03T21:11:35.328 [DEBUG] [Thread-122667] [transport.py] [_log()] server lang: <none>
2025-11-03T21:11:35.328 [DEBUG] [Thread-122667] [transport.py] [_log()] kex follows: False
2025-11-03T21:11:35.328 [DEBUG] [Thread-122667] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:11:35.328 [DEBUG] [Thread-122667] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:11:35.328 [DEBUG] [Thread-122667] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:11:35.328 [DEBUG] [Thread-122667] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:11:35.329 [DEBUG] [Thread-122667] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:11:35.329 [DEBUG] [Thread-122667] [transport.py] [_log()] Compression: none
2025-11-03T21:11:35.329 [DEBUG] [Thread-122667] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:11:35.389 [DEBUG] [Thread-122667] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:11:35.389 [DEBUG] [Thread-122667] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:11:35.390 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:11:35.390 [DEBUG] [Thread-122667] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:11:35.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:11:35.452 [DEBUG] [Thread-122667] [transport.py] [_log()] userauth is OK
2025-11-03T21:11:35.452 [DEBUG] [Thread-122667] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:11:35.452 [DEBUG] [Thread-122667] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:11:35.452 [DEBUG] [Thread-122667] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:11:35.452 [DEBUG] [Thread-122667] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:11:35.472 [INFO] [Thread-122667] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:11:35.472 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:11:35.473 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:11:36.322 [DEBUG] [Thread-122667] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:11:36.322 [DEBUG] [Thread-122667] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:11:36.371 [DEBUG] [Thread-122667] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:11:36.371 [DEBUG] [Thread-122667] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:11:36.381 [DEBUG] [Thread-122667] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:11:36.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:11:36.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:11:36.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:11:36.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:11:36.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:11:36.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:11:36.429 [DEBUG] [Thread-122667] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:11:37.748 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:11:38.127 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:11:38.127 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:11:47.075 [DEBUG] [Thread-122669 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:11:57.090 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:12:01.514 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:12:02.323 [DEBUG] [Thread-122670 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:12:06.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:12:06.453 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:12:06.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:12:08.387 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:12:08.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 11, 47), 33.03, 9.7, 0.0, 18.35, 19.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:12:08.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:11:47
2025-11-03T21:12:08.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:12:08.923 [DEBUG] [Thread-122671] [transport.py] [_log()] starting thread (client mode): 0x1179b730
2025-11-03T21:12:08.924 [DEBUG] [Thread-122671] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:12:08.935 [DEBUG] [Thread-122671] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:12:08.936 [INFO] [Thread-122671] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:12:08.945 [DEBUG] [Thread-122671] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:12:08.946 [DEBUG] [Thread-122671] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:12:08.946 [DEBUG] [Thread-122671] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:12:08.946 [DEBUG] [Thread-122671] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:12:08.946 [DEBUG] [Thread-122671] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:12:08.946 [DEBUG] [Thread-122671] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:12:08.946 [DEBUG] [Thread-122671] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:12:08.946 [DEBUG] [Thread-122671] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:12:08.946 [DEBUG] [Thread-122671] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:12:08.947 [DEBUG] [Thread-122671] [transport.py] [_log()] client lang: <none>
2025-11-03T21:12:08.947 [DEBUG] [Thread-122671] [transport.py] [_log()] server lang: <none>
2025-11-03T21:12:08.947 [DEBUG] [Thread-122671] [transport.py] [_log()] kex follows: False
2025-11-03T21:12:08.947 [DEBUG] [Thread-122671] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:12:08.948 [DEBUG] [Thread-122671] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:12:08.948 [DEBUG] [Thread-122671] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:12:08.948 [DEBUG] [Thread-122671] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:12:08.949 [DEBUG] [Thread-122671] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:12:08.949 [DEBUG] [Thread-122671] [transport.py] [_log()] Compression: none
2025-11-03T21:12:08.949 [DEBUG] [Thread-122671] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:12:08.992 [DEBUG] [Thread-122671] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:12:08.998 [DEBUG] [Thread-122671] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:12:08.999 [DEBUG] [Thread-122671] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:12:09.000 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:12:09.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:12:09.004 [DEBUG] [Thread-122671] [transport.py] [_log()] userauth is OK
2025-11-03T21:12:09.005 [DEBUG] [Thread-122671] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:12:09.005 [DEBUG] [Thread-122671] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:12:09.005 [DEBUG] [Thread-122671] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:12:09.005 [DEBUG] [Thread-122671] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:12:09.031 [INFO] [Thread-122671] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:12:09.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:12:09.674 [DEBUG] [Thread-122671] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:12:09.674 [DEBUG] [Thread-122671] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:12:09.675 [DEBUG] [Thread-122671] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:12:09.715 [DEBUG] [Thread-122671] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:12:09.715 [DEBUG] [Thread-122671] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:12:09.719 [DEBUG] [Thread-122671] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:12:09.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:12:09.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:12:09.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:12:09.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:12:09.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:12:09.746 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:12:09.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:12:09.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:12:09.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:12:09.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.799753 -999.00  +19.30  17.24     14   -8.10 1 1 1 1 1     0    0 25.28 -104.61 ZNESW 21.2 17.2 297.9 21.9 19.1 -27.2 19.1 -26.0 18.8 -25.9 19.1 -26.7
2025-11-03T21:12:09.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:12:09.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:12:09.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.799753
2025-11-03T21:12:09.754 [DEBUG] [Thread-122671] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:12:09.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:12:09.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:12:09.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:12:09.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:12:09.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:12:09.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:11:47', tmtdew=33.03, humidity=9.7, cloud=0.0, wind=18.35, temperature=19.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:11:48', seeing=1.18, atlas_timestamp='2025-11-03T19:11:38.659', atlas_cloud=1, atlas_rain=1, zp_data=[0.003750000000000142, -0.03074999999999939, 0.051750000000000185, 0.06949999999999967, 0.0365000000000002, -0.06974999999999909, 0.027999999999998693, -0.18874999999999886, 0.0495000000000001, 0.09299999999999997, 0.0727499999999992, 0.06949999999999967, 0.1479999999999997, 0.06925000000000026, 0.007999999999999119, -0.28200000000000003, -0.011250000000000426, 0.10749999999999993, 0.17799999999999905, 0.13124999999999787, 0.16999999999999815, -0.1492500000000021, -0.059749999999999304, -0.7837499999999995, -0.019000000000000128, 0.1479999999999997, 0.23075000000000045, 0.1750000000000007, 0.08399999999999963, 0.17600000000000193, 0.19400000000000084, -0.9294999999999991, 0.08724999999999916], zp_timestamp='2025-11-03T19:09:00')
2025-11-03T21:12:09.871 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:12:09.886 [DEBUG] [Thread-122674] [transport.py] [_log()] starting thread (client mode): 0xed88ca0
2025-11-03T21:12:09.886 [DEBUG] [Thread-122674] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:12:09.908 [DEBUG] [Thread-122674] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:12:09.909 [INFO] [Thread-122674] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:12:09.921 [DEBUG] [Thread-122674] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:12:09.922 [DEBUG] [Thread-122674] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:12:09.922 [DEBUG] [Thread-122674] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:12:09.922 [DEBUG] [Thread-122674] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:12:09.922 [DEBUG] [Thread-122674] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:12:09.922 [DEBUG] [Thread-122674] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:12:09.922 [DEBUG] [Thread-122674] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:12:09.922 [DEBUG] [Thread-122674] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:12:09.923 [DEBUG] [Thread-122674] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:12:09.923 [DEBUG] [Thread-122674] [transport.py] [_log()] client lang: <none>
2025-11-03T21:12:09.923 [DEBUG] [Thread-122674] [transport.py] [_log()] server lang: <none>
2025-11-03T21:12:09.923 [DEBUG] [Thread-122674] [transport.py] [_log()] kex follows: False
2025-11-03T21:12:09.923 [DEBUG] [Thread-122674] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:12:09.923 [DEBUG] [Thread-122674] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:12:09.923 [DEBUG] [Thread-122674] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:12:09.923 [DEBUG] [Thread-122674] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:12:09.924 [DEBUG] [Thread-122674] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:12:09.924 [DEBUG] [Thread-122674] [transport.py] [_log()] Compression: none
2025-11-03T21:12:09.924 [DEBUG] [Thread-122674] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:12:09.978 [DEBUG] [Thread-122674] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:12:09.978 [DEBUG] [Thread-122674] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:12:09.979 [DEBUG] [Thread-122674] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:12:09.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:12:09.980 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:12:10.034 [DEBUG] [Thread-122674] [transport.py] [_log()] userauth is OK
2025-11-03T21:12:10.034 [DEBUG] [Thread-122674] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:12:10.034 [DEBUG] [Thread-122674] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:12:10.035 [DEBUG] [Thread-122674] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:12:10.035 [DEBUG] [Thread-122674] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:12:10.050 [INFO] [Thread-122674] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:12:10.050 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:12:10.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:12:10.874 [DEBUG] [Thread-122674] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:12:10.875 [DEBUG] [Thread-122674] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:12:10.924 [DEBUG] [Thread-122674] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:12:10.925 [DEBUG] [Thread-122674] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:12:10.937 [DEBUG] [Thread-122674] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:12:10.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:12:10.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:12:10.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:12:10.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:12:10.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:12:10.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:12:10.992 [DEBUG] [Thread-122674] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:12:12.773 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:12:17.446 [DEBUG] [Thread-122676 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:12:23.126 [DEBUG] [Thread-122677 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:12:32.747 [DEBUG] [Thread-122678 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:12:38.333 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:12:38.335 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:12:40.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:12:40.995 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:12:41.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:12:43.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 12, 22), 32.95, 9.77, 0.0, 18.99, 19.07, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:12:43.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:12:22
2025-11-03T21:12:43.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:12:43.569 [DEBUG] [Thread-122679] [transport.py] [_log()] starting thread (client mode): 0xed8aad0
2025-11-03T21:12:43.571 [DEBUG] [Thread-122679] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:12:43.578 [DEBUG] [Thread-122679] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:12:43.578 [INFO] [Thread-122679] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:12:43.585 [DEBUG] [Thread-122679] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:12:43.585 [DEBUG] [Thread-122679] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:12:43.586 [DEBUG] [Thread-122679] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:12:43.586 [DEBUG] [Thread-122679] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:12:43.586 [DEBUG] [Thread-122679] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:12:43.586 [DEBUG] [Thread-122679] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:12:43.586 [DEBUG] [Thread-122679] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:12:43.586 [DEBUG] [Thread-122679] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:12:43.586 [DEBUG] [Thread-122679] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:12:43.586 [DEBUG] [Thread-122679] [transport.py] [_log()] client lang: <none>
2025-11-03T21:12:43.586 [DEBUG] [Thread-122679] [transport.py] [_log()] server lang: <none>
2025-11-03T21:12:43.586 [DEBUG] [Thread-122679] [transport.py] [_log()] kex follows: False
2025-11-03T21:12:43.586 [DEBUG] [Thread-122679] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:12:43.587 [DEBUG] [Thread-122679] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:12:43.587 [DEBUG] [Thread-122679] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:12:43.587 [DEBUG] [Thread-122679] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:12:43.587 [DEBUG] [Thread-122679] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:12:43.587 [DEBUG] [Thread-122679] [transport.py] [_log()] Compression: none
2025-11-03T21:12:43.587 [DEBUG] [Thread-122679] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:12:43.619 [DEBUG] [Thread-122679] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:12:43.624 [DEBUG] [Thread-122679] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:12:43.626 [DEBUG] [Thread-122679] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:12:43.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:12:43.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:12:43.633 [DEBUG] [Thread-122679] [transport.py] [_log()] userauth is OK
2025-11-03T21:12:43.633 [DEBUG] [Thread-122679] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:12:43.633 [DEBUG] [Thread-122679] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:12:43.634 [DEBUG] [Thread-122679] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:12:43.634 [DEBUG] [Thread-122679] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:12:43.670 [INFO] [Thread-122679] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:12:43.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:12:44.311 [DEBUG] [Thread-122679] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:12:44.311 [DEBUG] [Thread-122679] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:12:44.312 [DEBUG] [Thread-122679] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:12:44.352 [DEBUG] [Thread-122679] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:12:44.353 [DEBUG] [Thread-122679] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:12:44.355 [DEBUG] [Thread-122679] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:12:44.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:12:44.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:12:44.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:12:44.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:12:44.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:12:44.378 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:12:44.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:12:44.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:12:44.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:12:44.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.800101 -999.00  +19.30  18.17     14   -8.00 1 1 1 1 1     0    0 24.98 -110.35 ZNESW 20.9 18.2 305.2 22.8 19.1 -27.0 19.1 -26.1 18.9 -25.8 19.1 -26.7
2025-11-03T21:12:44.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:12:44.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:12:44.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.800101
2025-11-03T21:12:44.385 [DEBUG] [Thread-122679] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:12:44.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:12:44.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:12:44.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:12:44.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:12:44.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:12:44.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:12:22', tmtdew=32.95, humidity=9.77, cloud=0.0, wind=18.99, temperature=19.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:12:23', seeing=1.05, atlas_timestamp='2025-11-03T19:12:08.726', atlas_cloud=1, atlas_rain=1, zp_data=[0.003750000000000142, -0.03074999999999939, 0.051750000000000185, 0.06949999999999967, 0.0365000000000002, -0.06974999999999909, 0.027999999999998693, -0.18874999999999886, 0.0495000000000001, 0.09299999999999997, 0.0727499999999992, 0.06949999999999967, 0.1479999999999997, 0.06925000000000026, 0.007999999999999119, -0.28200000000000003, -0.011250000000000426, 0.10749999999999993, 0.17799999999999905, 0.13124999999999787, 0.16999999999999815, -0.1492500000000021, -0.059749999999999304, -0.7837499999999995, -0.019000000000000128, 0.1479999999999997, 0.23075000000000045, 0.1750000000000007, 0.08399999999999963, 0.17600000000000193, 0.19400000000000084, -0.9294999999999991, 0.08724999999999916], zp_timestamp='2025-11-03T19:09:00')
2025-11-03T21:12:44.491 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:12:44.505 [DEBUG] [Thread-122682] [transport.py] [_log()] starting thread (client mode): 0xedc5780
2025-11-03T21:12:44.505 [DEBUG] [Thread-122682] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:12:44.520 [DEBUG] [Thread-122682] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:12:44.520 [INFO] [Thread-122682] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:12:44.528 [DEBUG] [Thread-122682] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:12:44.528 [DEBUG] [Thread-122682] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:12:44.528 [DEBUG] [Thread-122682] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:12:44.528 [DEBUG] [Thread-122682] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:12:44.528 [DEBUG] [Thread-122682] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:12:44.528 [DEBUG] [Thread-122682] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:12:44.529 [DEBUG] [Thread-122682] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:12:44.529 [DEBUG] [Thread-122682] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:12:44.529 [DEBUG] [Thread-122682] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:12:44.529 [DEBUG] [Thread-122682] [transport.py] [_log()] client lang: <none>
2025-11-03T21:12:44.529 [DEBUG] [Thread-122682] [transport.py] [_log()] server lang: <none>
2025-11-03T21:12:44.529 [DEBUG] [Thread-122682] [transport.py] [_log()] kex follows: False
2025-11-03T21:12:44.529 [DEBUG] [Thread-122682] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:12:44.529 [DEBUG] [Thread-122682] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:12:44.529 [DEBUG] [Thread-122682] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:12:44.529 [DEBUG] [Thread-122682] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:12:44.529 [DEBUG] [Thread-122682] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:12:44.530 [DEBUG] [Thread-122682] [transport.py] [_log()] Compression: none
2025-11-03T21:12:44.530 [DEBUG] [Thread-122682] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:12:44.592 [DEBUG] [Thread-122682] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:12:44.592 [DEBUG] [Thread-122682] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:12:44.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:12:44.593 [DEBUG] [Thread-122682] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:12:44.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:12:44.651 [DEBUG] [Thread-122682] [transport.py] [_log()] userauth is OK
2025-11-03T21:12:44.651 [DEBUG] [Thread-122682] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:12:44.651 [DEBUG] [Thread-122682] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:12:44.652 [DEBUG] [Thread-122682] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:12:44.652 [DEBUG] [Thread-122682] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:12:44.671 [INFO] [Thread-122682] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:12:44.671 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:12:44.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:12:45.487 [DEBUG] [Thread-122682] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:12:45.487 [DEBUG] [Thread-122682] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:12:45.537 [DEBUG] [Thread-122682] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:12:45.537 [DEBUG] [Thread-122682] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:12:45.549 [DEBUG] [Thread-122682] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:12:45.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:12:45.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:12:45.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:12:45.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:12:45.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:12:45.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:12:45.590 [DEBUG] [Thread-122682] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:12:47.892 [DEBUG] [Thread-122684 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:13:03.112 [DEBUG] [Thread-122685 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:13:11.777 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:13:14.849 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:13:15.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:13:15.616 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:13:15.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:13:17.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 12, 56), 32.91, 9.75, 0.0, 18.0, 19.02, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:13:17.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:12:56
2025-11-03T21:13:17.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:13:17.835 [DEBUG] [Thread-122686] [transport.py] [_log()] starting thread (client mode): 0x11798430
2025-11-03T21:13:17.837 [DEBUG] [Thread-122686] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:13:17.837 [DEBUG] [Thread-122686] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:13:17.838 [INFO] [Thread-122686] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:13:17.847 [DEBUG] [Thread-122686] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:13:17.847 [DEBUG] [Thread-122686] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:13:17.847 [DEBUG] [Thread-122686] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:13:17.847 [DEBUG] [Thread-122686] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:13:17.847 [DEBUG] [Thread-122686] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:13:17.847 [DEBUG] [Thread-122686] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:13:17.847 [DEBUG] [Thread-122686] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:13:17.848 [DEBUG] [Thread-122686] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:13:17.848 [DEBUG] [Thread-122686] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:13:17.848 [DEBUG] [Thread-122686] [transport.py] [_log()] client lang: <none>
2025-11-03T21:13:17.848 [DEBUG] [Thread-122686] [transport.py] [_log()] server lang: <none>
2025-11-03T21:13:17.848 [DEBUG] [Thread-122686] [transport.py] [_log()] kex follows: False
2025-11-03T21:13:17.848 [DEBUG] [Thread-122686] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:13:17.850 [DEBUG] [Thread-122686] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:13:17.850 [DEBUG] [Thread-122686] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:13:17.850 [DEBUG] [Thread-122686] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:13:17.850 [DEBUG] [Thread-122686] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:13:17.850 [DEBUG] [Thread-122686] [transport.py] [_log()] Compression: none
2025-11-03T21:13:17.850 [DEBUG] [Thread-122686] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:13:17.893 [DEBUG] [Thread-122686] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:13:17.899 [DEBUG] [Thread-122686] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:13:17.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:13:17.903 [DEBUG] [Thread-122686] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:13:17.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:13:17.906 [DEBUG] [Thread-122686] [transport.py] [_log()] userauth is OK
2025-11-03T21:13:17.906 [DEBUG] [Thread-122686] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:13:17.906 [DEBUG] [Thread-122686] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:13:17.906 [DEBUG] [Thread-122686] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:13:17.906 [DEBUG] [Thread-122686] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:13:17.932 [INFO] [Thread-122686] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:13:17.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:13:18.251 [DEBUG] [Thread-122688 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:13:18.559 [DEBUG] [Thread-122686] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:13:18.561 [DEBUG] [Thread-122686] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:13:18.577 [DEBUG] [Thread-122686] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:13:18.602 [DEBUG] [Thread-122686] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:13:18.602 [DEBUG] [Thread-122686] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:13:18.606 [DEBUG] [Thread-122686] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:13:18.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:13:18.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:13:18.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:13:18.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:13:18.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:13:18.633 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:13:18.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:13:18.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:13:18.635 [DEBUG] [Thread-122686] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:13:18.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:13:18.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.800448 -999.00  +19.30  18.13     14   -8.10 1 1 1 1 1     0    0 25.04 -94.10 ZNESW 20.5 18.1 298.0 23.4 19.2 -27.0 19.1 -26.0 18.9 -25.8 19.1 -26.7
2025-11-03T21:13:18.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:13:18.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:13:18.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.800448
2025-11-03T21:13:18.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:13:18.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:13:18.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:13:18.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:13:18.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:13:18.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:12:56', tmtdew=32.91, humidity=9.75, cloud=0.0, wind=18.0, temperature=19.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:12:57', seeing=1.01, atlas_timestamp='2025-11-03T19:12:38.707', atlas_cloud=1, atlas_rain=1, zp_data=[0.003750000000000142, -0.03074999999999939, 0.051750000000000185, 0.06949999999999967, 0.0365000000000002, -0.06974999999999909, 0.027999999999998693, -0.18874999999999886, 0.0495000000000001, 0.09299999999999997, 0.0727499999999992, 0.06949999999999967, 0.1479999999999997, 0.06925000000000026, 0.007999999999999119, -0.28200000000000003, -0.011250000000000426, 0.10749999999999993, 0.17799999999999905, 0.13124999999999787, 0.16999999999999815, -0.1492500000000021, -0.059749999999999304, -0.7837499999999995, -0.019000000000000128, 0.1479999999999997, 0.23075000000000045, 0.1750000000000007, 0.08399999999999963, 0.17600000000000193, 0.19400000000000084, -0.9294999999999991, 0.08724999999999916], zp_timestamp='2025-11-03T19:09:00')
2025-11-03T21:13:18.736 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:13:18.750 [DEBUG] [Thread-122690] [transport.py] [_log()] starting thread (client mode): 0x11762c50
2025-11-03T21:13:18.750 [DEBUG] [Thread-122690] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:13:18.768 [DEBUG] [Thread-122690] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:13:18.768 [INFO] [Thread-122690] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:13:18.777 [DEBUG] [Thread-122690] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:13:18.777 [DEBUG] [Thread-122690] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:13:18.778 [DEBUG] [Thread-122690] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:13:18.778 [DEBUG] [Thread-122690] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:13:18.778 [DEBUG] [Thread-122690] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:13:18.778 [DEBUG] [Thread-122690] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:13:18.778 [DEBUG] [Thread-122690] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:13:18.778 [DEBUG] [Thread-122690] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:13:18.778 [DEBUG] [Thread-122690] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:13:18.778 [DEBUG] [Thread-122690] [transport.py] [_log()] client lang: <none>
2025-11-03T21:13:18.778 [DEBUG] [Thread-122690] [transport.py] [_log()] server lang: <none>
2025-11-03T21:13:18.778 [DEBUG] [Thread-122690] [transport.py] [_log()] kex follows: False
2025-11-03T21:13:18.778 [DEBUG] [Thread-122690] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:13:18.778 [DEBUG] [Thread-122690] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:13:18.778 [DEBUG] [Thread-122690] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:13:18.778 [DEBUG] [Thread-122690] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:13:18.778 [DEBUG] [Thread-122690] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:13:18.778 [DEBUG] [Thread-122690] [transport.py] [_log()] Compression: none
2025-11-03T21:13:18.779 [DEBUG] [Thread-122690] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:13:18.834 [DEBUG] [Thread-122690] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:13:18.835 [DEBUG] [Thread-122690] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:13:18.835 [DEBUG] [Thread-122690] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:13:18.835 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:13:18.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:13:18.892 [DEBUG] [Thread-122690] [transport.py] [_log()] userauth is OK
2025-11-03T21:13:18.892 [DEBUG] [Thread-122690] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:13:18.892 [DEBUG] [Thread-122690] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:13:18.892 [DEBUG] [Thread-122690] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:13:18.892 [DEBUG] [Thread-122690] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:13:18.907 [INFO] [Thread-122690] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:13:18.907 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:13:18.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:13:19.805 [DEBUG] [Thread-122690] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:13:19.805 [DEBUG] [Thread-122690] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:13:19.853 [DEBUG] [Thread-122690] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:13:19.853 [DEBUG] [Thread-122690] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:13:19.862 [DEBUG] [Thread-122690] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:13:19.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:13:19.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:13:19.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:13:19.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:13:19.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:13:19.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:13:19.896 [DEBUG] [Thread-122690] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:13:23.563 [DEBUG] [Thread-122692 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:13:33.362 [DEBUG] [Thread-122693 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:13:38.539 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:13:38.541 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:13:48.540 [DEBUG] [Thread-122694 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:13:49.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:13:49.917 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:13:49.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:13:52.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 13, 31), 32.86, 9.79, 0.0, 17.45, 19.01, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:13:52.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:13:31
2025-11-03T21:13:52.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:13:52.397 [DEBUG] [Thread-122695] [transport.py] [_log()] starting thread (client mode): 0x11798c10
2025-11-03T21:13:52.398 [DEBUG] [Thread-122695] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:13:52.405 [DEBUG] [Thread-122695] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:13:52.405 [INFO] [Thread-122695] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:13:52.414 [DEBUG] [Thread-122695] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:13:52.414 [DEBUG] [Thread-122695] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:13:52.415 [DEBUG] [Thread-122695] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:13:52.415 [DEBUG] [Thread-122695] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:13:52.415 [DEBUG] [Thread-122695] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:13:52.415 [DEBUG] [Thread-122695] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:13:52.415 [DEBUG] [Thread-122695] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:13:52.415 [DEBUG] [Thread-122695] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:13:52.415 [DEBUG] [Thread-122695] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:13:52.415 [DEBUG] [Thread-122695] [transport.py] [_log()] client lang: <none>
2025-11-03T21:13:52.415 [DEBUG] [Thread-122695] [transport.py] [_log()] server lang: <none>
2025-11-03T21:13:52.416 [DEBUG] [Thread-122695] [transport.py] [_log()] kex follows: False
2025-11-03T21:13:52.416 [DEBUG] [Thread-122695] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:13:52.417 [DEBUG] [Thread-122695] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:13:52.417 [DEBUG] [Thread-122695] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:13:52.417 [DEBUG] [Thread-122695] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:13:52.418 [DEBUG] [Thread-122695] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:13:52.418 [DEBUG] [Thread-122695] [transport.py] [_log()] Compression: none
2025-11-03T21:13:52.418 [DEBUG] [Thread-122695] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:13:52.460 [DEBUG] [Thread-122695] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:13:52.468 [DEBUG] [Thread-122695] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:13:52.471 [DEBUG] [Thread-122695] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:13:52.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:13:52.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:13:52.477 [DEBUG] [Thread-122695] [transport.py] [_log()] userauth is OK
2025-11-03T21:13:52.478 [DEBUG] [Thread-122695] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:13:52.478 [DEBUG] [Thread-122695] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:13:52.478 [DEBUG] [Thread-122695] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:13:52.478 [DEBUG] [Thread-122695] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:13:52.518 [INFO] [Thread-122695] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:13:52.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:13:53.150 [DEBUG] [Thread-122695] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:13:53.150 [DEBUG] [Thread-122695] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:13:53.153 [DEBUG] [Thread-122695] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:13:53.191 [DEBUG] [Thread-122695] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:13:53.191 [DEBUG] [Thread-122695] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:13:53.195 [DEBUG] [Thread-122695] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:13:53.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:13:53.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:13:53.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:13:53.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:13:53.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:13:53.223 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:13:53.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:13:53.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:13:53.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:13:53.226 [DEBUG] [Thread-122695] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:13:53.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.800795 -999.00  +19.20  15.21     14   -8.10 1 1 1 1 1     0    0 25.21 -88.55 ZNESW 17.0 15.2 301.4 22.7 19.1 -27.0 19.1 -26.0 18.9 -25.6 19.1 -26.6
2025-11-03T21:13:53.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:13:53.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:13:53.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.800795
2025-11-03T21:13:53.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:13:53.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:13:53.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:13:53.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:13:53.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:13:53.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:13:31', tmtdew=32.86, humidity=9.79, cloud=0.0, wind=17.45, temperature=19.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:13:32', seeing=1.15, atlas_timestamp='2025-11-03T19:13:08.688', atlas_cloud=1, atlas_rain=1, zp_data=[0.003750000000000142, -0.03074999999999939, 0.051750000000000185, 0.06949999999999967, 0.0365000000000002, -0.06974999999999909, 0.027999999999998693, -0.18874999999999886, 0.0495000000000001, 0.09299999999999997, 0.0727499999999992, 0.06949999999999967, 0.1479999999999997, 0.06925000000000026, 0.007999999999999119, -0.28200000000000003, -0.011250000000000426, 0.10749999999999993, 0.17799999999999905, 0.13124999999999787, 0.16999999999999815, -0.1492500000000021, -0.059749999999999304, -0.7837499999999995, -0.019000000000000128, 0.1479999999999997, 0.23075000000000045, 0.1750000000000007, 0.08399999999999963, 0.17600000000000193, 0.19400000000000084, -0.9294999999999991, 0.08724999999999916], zp_timestamp='2025-11-03T19:09:00')
2025-11-03T21:13:53.340 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:13:53.354 [DEBUG] [Thread-122698] [transport.py] [_log()] starting thread (client mode): 0xed8abc0
2025-11-03T21:13:53.354 [DEBUG] [Thread-122698] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:13:53.369 [DEBUG] [Thread-122698] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:13:53.369 [INFO] [Thread-122698] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:13:53.377 [DEBUG] [Thread-122698] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:13:53.377 [DEBUG] [Thread-122698] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:13:53.378 [DEBUG] [Thread-122698] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:13:53.378 [DEBUG] [Thread-122698] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:13:53.378 [DEBUG] [Thread-122698] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:13:53.378 [DEBUG] [Thread-122698] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:13:53.378 [DEBUG] [Thread-122698] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:13:53.378 [DEBUG] [Thread-122698] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:13:53.378 [DEBUG] [Thread-122698] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:13:53.378 [DEBUG] [Thread-122698] [transport.py] [_log()] client lang: <none>
2025-11-03T21:13:53.378 [DEBUG] [Thread-122698] [transport.py] [_log()] server lang: <none>
2025-11-03T21:13:53.379 [DEBUG] [Thread-122698] [transport.py] [_log()] kex follows: False
2025-11-03T21:13:53.379 [DEBUG] [Thread-122698] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:13:53.379 [DEBUG] [Thread-122698] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:13:53.379 [DEBUG] [Thread-122698] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:13:53.380 [DEBUG] [Thread-122698] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:13:53.380 [DEBUG] [Thread-122698] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:13:53.380 [DEBUG] [Thread-122698] [transport.py] [_log()] Compression: none
2025-11-03T21:13:53.380 [DEBUG] [Thread-122698] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:13:53.436 [DEBUG] [Thread-122698] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:13:53.436 [DEBUG] [Thread-122698] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:13:53.437 [DEBUG] [Thread-122698] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:13:53.437 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:13:53.438 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:13:53.493 [DEBUG] [Thread-122698] [transport.py] [_log()] userauth is OK
2025-11-03T21:13:53.493 [DEBUG] [Thread-122698] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:13:53.493 [DEBUG] [Thread-122698] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:13:53.494 [DEBUG] [Thread-122698] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:13:53.494 [DEBUG] [Thread-122698] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:13:53.512 [INFO] [Thread-122698] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:13:53.513 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:13:53.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:13:54.357 [DEBUG] [Thread-122698] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:13:54.358 [DEBUG] [Thread-122698] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:13:54.405 [DEBUG] [Thread-122698] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:13:54.405 [DEBUG] [Thread-122698] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:13:54.415 [DEBUG] [Thread-122698] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:13:54.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:13:54.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:13:54.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:13:54.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:13:54.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:13:54.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:13:54.455 [DEBUG] [Thread-122698] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:14:03.644 [DEBUG] [Thread-122700 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:14:18.919 [DEBUG] [Thread-122701 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:14:24.081 [DEBUG] [Thread-122702 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:14:24.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:14:24.456 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:14:24.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:14:26.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 14, 5), 32.88, 9.79, 0.0, 17.56, 19.06, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:14:26.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:14:05
2025-11-03T21:14:26.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:14:26.960 [DEBUG] [Thread-122703] [transport.py] [_log()] starting thread (client mode): 0x117eb610
2025-11-03T21:14:26.961 [DEBUG] [Thread-122703] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:14:26.962 [DEBUG] [Thread-122703] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:14:26.963 [INFO] [Thread-122703] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:14:26.969 [DEBUG] [Thread-122703] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:14:26.969 [DEBUG] [Thread-122703] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:14:26.969 [DEBUG] [Thread-122703] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:14:26.969 [DEBUG] [Thread-122703] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:14:26.969 [DEBUG] [Thread-122703] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:14:26.969 [DEBUG] [Thread-122703] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:14:26.969 [DEBUG] [Thread-122703] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:14:26.969 [DEBUG] [Thread-122703] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:14:26.969 [DEBUG] [Thread-122703] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:14:26.969 [DEBUG] [Thread-122703] [transport.py] [_log()] client lang: <none>
2025-11-03T21:14:26.970 [DEBUG] [Thread-122703] [transport.py] [_log()] server lang: <none>
2025-11-03T21:14:26.970 [DEBUG] [Thread-122703] [transport.py] [_log()] kex follows: False
2025-11-03T21:14:26.970 [DEBUG] [Thread-122703] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:14:26.970 [DEBUG] [Thread-122703] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:14:26.971 [DEBUG] [Thread-122703] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:14:26.971 [DEBUG] [Thread-122703] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:14:26.971 [DEBUG] [Thread-122703] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:14:26.971 [DEBUG] [Thread-122703] [transport.py] [_log()] Compression: none
2025-11-03T21:14:26.971 [DEBUG] [Thread-122703] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:14:27.012 [DEBUG] [Thread-122703] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:14:27.017 [DEBUG] [Thread-122703] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:14:27.019 [DEBUG] [Thread-122703] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:14:27.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:14:27.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:14:27.025 [DEBUG] [Thread-122703] [transport.py] [_log()] userauth is OK
2025-11-03T21:14:27.026 [DEBUG] [Thread-122703] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:14:27.026 [DEBUG] [Thread-122703] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:14:27.026 [DEBUG] [Thread-122703] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:14:27.026 [DEBUG] [Thread-122703] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:14:27.054 [INFO] [Thread-122703] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:14:27.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:14:27.804 [DEBUG] [Thread-122703] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:14:27.805 [DEBUG] [Thread-122703] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:14:27.806 [DEBUG] [Thread-122703] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:14:27.846 [DEBUG] [Thread-122703] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:14:27.846 [DEBUG] [Thread-122703] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:14:27.849 [DEBUG] [Thread-122703] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:14:27.861 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:14:27.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:14:27.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:14:27.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:14:27.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:14:27.876 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:14:27.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:14:27.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:14:27.878 [DEBUG] [Thread-122703] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:14:27.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:14:27.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.801142 -999.00  +19.20  18.42     14   -8.10 1 1 1 1 1     0    0 25.54 -94.73 ZNESW 16.4 18.4 302.6 22.2 19.1 -26.9 19.1 -25.8 18.9 -25.7 19.1 -26.5
2025-11-03T21:14:27.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:14:27.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:14:27.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.801142
2025-11-03T21:14:27.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:14:27.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:14:27.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:14:27.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:14:27.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:14:27.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:14:05', tmtdew=32.88, humidity=9.79, cloud=0.0, wind=17.56, temperature=19.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:14:06', seeing=1.15, atlas_timestamp='2025-11-03T19:13:38.669', atlas_cloud=1, atlas_rain=1, zp_data=[0.003750000000000142, -0.03074999999999939, 0.051750000000000185, 0.06949999999999967, 0.0365000000000002, -0.06974999999999909, 0.027999999999998693, -0.18874999999999886, 0.0495000000000001, 0.09299999999999997, 0.0727499999999992, 0.06949999999999967, 0.1479999999999997, 0.06925000000000026, 0.007999999999999119, -0.28200000000000003, -0.011250000000000426, 0.10749999999999993, 0.17799999999999905, 0.13124999999999787, 0.16999999999999815, -0.1492500000000021, -0.059749999999999304, -0.7837499999999995, -0.019000000000000128, 0.1479999999999997, 0.23075000000000045, 0.1750000000000007, 0.08399999999999963, 0.17600000000000193, 0.19400000000000084, -0.9294999999999991, 0.08724999999999916], zp_timestamp='2025-11-03T19:12:00')
2025-11-03T21:14:28.001 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:14:28.013 [DEBUG] [Thread-122706] [transport.py] [_log()] starting thread (client mode): 0xed88850
2025-11-03T21:14:28.013 [DEBUG] [Thread-122706] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:14:28.032 [DEBUG] [Thread-122706] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:14:28.032 [INFO] [Thread-122706] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:14:28.041 [DEBUG] [Thread-122706] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:14:28.041 [DEBUG] [Thread-122706] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:14:28.041 [DEBUG] [Thread-122706] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:14:28.041 [DEBUG] [Thread-122706] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:14:28.041 [DEBUG] [Thread-122706] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:14:28.041 [DEBUG] [Thread-122706] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:14:28.041 [DEBUG] [Thread-122706] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:14:28.041 [DEBUG] [Thread-122706] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:14:28.041 [DEBUG] [Thread-122706] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:14:28.041 [DEBUG] [Thread-122706] [transport.py] [_log()] client lang: <none>
2025-11-03T21:14:28.041 [DEBUG] [Thread-122706] [transport.py] [_log()] server lang: <none>
2025-11-03T21:14:28.041 [DEBUG] [Thread-122706] [transport.py] [_log()] kex follows: False
2025-11-03T21:14:28.041 [DEBUG] [Thread-122706] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:14:28.041 [DEBUG] [Thread-122706] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:14:28.041 [DEBUG] [Thread-122706] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:14:28.041 [DEBUG] [Thread-122706] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:14:28.041 [DEBUG] [Thread-122706] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:14:28.042 [DEBUG] [Thread-122706] [transport.py] [_log()] Compression: none
2025-11-03T21:14:28.042 [DEBUG] [Thread-122706] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:14:28.099 [DEBUG] [Thread-122706] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:14:28.100 [DEBUG] [Thread-122706] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:14:28.100 [DEBUG] [Thread-122706] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:14:28.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:14:28.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:14:28.159 [DEBUG] [Thread-122706] [transport.py] [_log()] userauth is OK
2025-11-03T21:14:28.159 [DEBUG] [Thread-122706] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:14:28.159 [DEBUG] [Thread-122706] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:14:28.159 [DEBUG] [Thread-122706] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:14:28.159 [DEBUG] [Thread-122706] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:14:28.179 [INFO] [Thread-122706] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:14:28.179 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:14:28.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:14:29.016 [DEBUG] [Thread-122706] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:14:29.016 [DEBUG] [Thread-122706] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:14:29.065 [DEBUG] [Thread-122706] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:14:29.065 [DEBUG] [Thread-122706] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:14:29.078 [DEBUG] [Thread-122706] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:14:29.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:14:29.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:14:29.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:14:29.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:14:29.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:14:29.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:14:29.119 [DEBUG] [Thread-122706] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:14:34.038 [DEBUG] [Thread-122708 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:14:38.746 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:14:38.748 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:14:49.228 [DEBUG] [Thread-122709 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:14:59.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:14:59.145 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:14:59.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:15:01.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 14, 40), 32.98, 9.69, 0.0, 16.0, 18.94, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:15:01.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:14:40
2025-11-03T21:15:01.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:15:01.779 [DEBUG] [Thread-122710] [transport.py] [_log()] starting thread (client mode): 0xed35660
2025-11-03T21:15:01.780 [DEBUG] [Thread-122710] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:15:01.781 [DEBUG] [Thread-122710] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:15:01.781 [INFO] [Thread-122710] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:15:01.795 [DEBUG] [Thread-122710] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:15:01.795 [DEBUG] [Thread-122710] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:15:01.795 [DEBUG] [Thread-122710] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:15:01.795 [DEBUG] [Thread-122710] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:15:01.795 [DEBUG] [Thread-122710] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:15:01.795 [DEBUG] [Thread-122710] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:15:01.795 [DEBUG] [Thread-122710] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:15:01.795 [DEBUG] [Thread-122710] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:15:01.795 [DEBUG] [Thread-122710] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:15:01.795 [DEBUG] [Thread-122710] [transport.py] [_log()] client lang: <none>
2025-11-03T21:15:01.795 [DEBUG] [Thread-122710] [transport.py] [_log()] server lang: <none>
2025-11-03T21:15:01.795 [DEBUG] [Thread-122710] [transport.py] [_log()] kex follows: False
2025-11-03T21:15:01.795 [DEBUG] [Thread-122710] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:15:01.796 [DEBUG] [Thread-122710] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:15:01.796 [DEBUG] [Thread-122710] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:15:01.796 [DEBUG] [Thread-122710] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:15:01.796 [DEBUG] [Thread-122710] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:15:01.796 [DEBUG] [Thread-122710] [transport.py] [_log()] Compression: none
2025-11-03T21:15:01.796 [DEBUG] [Thread-122710] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:15:01.829 [DEBUG] [Thread-122710] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:15:01.838 [DEBUG] [Thread-122710] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:15:01.840 [DEBUG] [Thread-122710] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:15:01.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:15:01.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:15:01.845 [DEBUG] [Thread-122710] [transport.py] [_log()] userauth is OK
2025-11-03T21:15:01.845 [DEBUG] [Thread-122710] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:15:01.845 [DEBUG] [Thread-122710] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:15:01.845 [DEBUG] [Thread-122710] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:15:01.845 [DEBUG] [Thread-122710] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:15:01.857 [INFO] [Thread-122710] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:15:01.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:15:02.429 [DEBUG] [Thread-122710] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:15:02.429 [DEBUG] [Thread-122710] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:15:02.431 [DEBUG] [Thread-122710] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:15:02.470 [DEBUG] [Thread-122710] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:15:02.471 [DEBUG] [Thread-122710] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:15:02.474 [DEBUG] [Thread-122710] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:15:02.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:15:02.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:15:02.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:15:02.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:15:02.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:15:02.500 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:15:02.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:15:02.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:15:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:15:02.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.801489 -999.00  +19.20  15.49     14   -8.20 1 1 1 1 1     0    0 25.31 -92.37 ZNESW 17.4 15.5 295.6 19.5 19.1 -26.9 19.1 -25.9 18.8 -25.4 19.1 -26.6
2025-11-03T21:15:02.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:15:02.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:15:02.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.801489
2025-11-03T21:15:02.508 [DEBUG] [Thread-122710] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:15:02.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:15:02.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:15:02.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:15:02.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:15:02.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:15:02.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:14:40', tmtdew=32.98, humidity=9.69, cloud=0.0, wind=16.0, temperature=18.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:14:41', seeing=1.04, atlas_timestamp='2025-11-03T19:14:08.650', atlas_cloud=1, atlas_rain=1, zp_data=[0.003750000000000142, -0.03074999999999939, 0.051750000000000185, 0.06949999999999967, 0.0365000000000002, -0.06974999999999909, 0.027999999999998693, -0.18874999999999886, 0.0495000000000001, 0.09299999999999997, 0.0727499999999992, 0.06949999999999967, 0.1479999999999997, 0.06925000000000026, 0.007999999999999119, -0.28200000000000003, -0.011250000000000426, 0.10749999999999993, 0.17799999999999905, 0.13124999999999787, 0.16999999999999815, -0.1492500000000021, -0.059749999999999304, -0.7837499999999995, -0.019000000000000128, 0.1479999999999997, 0.23075000000000045, 0.1750000000000007, 0.08399999999999963, 0.17600000000000193, 0.19400000000000084, -0.9294999999999991, 0.08724999999999916], zp_timestamp='2025-11-03T19:12:00')
2025-11-03T21:15:02.605 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:15:02.618 [DEBUG] [Thread-122713] [transport.py] [_log()] starting thread (client mode): 0x1179a770
2025-11-03T21:15:02.618 [DEBUG] [Thread-122713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:15:02.634 [DEBUG] [Thread-122713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:15:02.634 [INFO] [Thread-122713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:15:02.645 [DEBUG] [Thread-122713] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:15:02.646 [DEBUG] [Thread-122713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:15:02.646 [DEBUG] [Thread-122713] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:15:02.646 [DEBUG] [Thread-122713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:15:02.646 [DEBUG] [Thread-122713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:15:02.646 [DEBUG] [Thread-122713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:15:02.646 [DEBUG] [Thread-122713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:15:02.646 [DEBUG] [Thread-122713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:15:02.646 [DEBUG] [Thread-122713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:15:02.646 [DEBUG] [Thread-122713] [transport.py] [_log()] client lang: <none>
2025-11-03T21:15:02.646 [DEBUG] [Thread-122713] [transport.py] [_log()] server lang: <none>
2025-11-03T21:15:02.646 [DEBUG] [Thread-122713] [transport.py] [_log()] kex follows: False
2025-11-03T21:15:02.646 [DEBUG] [Thread-122713] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:15:02.646 [DEBUG] [Thread-122713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:15:02.646 [DEBUG] [Thread-122713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:15:02.646 [DEBUG] [Thread-122713] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:15:02.646 [DEBUG] [Thread-122713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:15:02.647 [DEBUG] [Thread-122713] [transport.py] [_log()] Compression: none
2025-11-03T21:15:02.647 [DEBUG] [Thread-122713] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:15:02.712 [DEBUG] [Thread-122713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:15:02.713 [DEBUG] [Thread-122713] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:15:02.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:15:02.714 [DEBUG] [Thread-122713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:15:02.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:15:02.770 [DEBUG] [Thread-122713] [transport.py] [_log()] userauth is OK
2025-11-03T21:15:02.770 [DEBUG] [Thread-122713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:15:02.771 [DEBUG] [Thread-122713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:15:02.771 [DEBUG] [Thread-122713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:15:02.771 [DEBUG] [Thread-122713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:15:02.797 [INFO] [Thread-122713] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:15:02.798 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:15:02.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:15:03.639 [DEBUG] [Thread-122713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:15:03.639 [DEBUG] [Thread-122713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:15:03.691 [DEBUG] [Thread-122713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:15:03.691 [DEBUG] [Thread-122713] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:15:03.703 [DEBUG] [Thread-122713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:15:03.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:15:03.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:15:03.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:15:03.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:15:03.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:15:03.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:15:03.749 [DEBUG] [Thread-122713] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:15:04.330 [DEBUG] [Thread-122715 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:15:19.589 [DEBUG] [Thread-122716 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:15:24.572 [DEBUG] [Thread-122717 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:15:33.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:15:33.804 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:15:33.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:15:34.715 [DEBUG] [Thread-122718 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:15:36.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 15, 14), 32.92, 9.74, 0.0, 15.83, 18.97, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:15:36.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:15:14
2025-11-03T21:15:36.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:15:36.442 [DEBUG] [Thread-122719] [transport.py] [_log()] starting thread (client mode): 0x117992a0
2025-11-03T21:15:36.443 [DEBUG] [Thread-122719] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:15:36.452 [DEBUG] [Thread-122719] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:15:36.452 [INFO] [Thread-122719] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:15:36.460 [DEBUG] [Thread-122719] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:15:36.461 [DEBUG] [Thread-122719] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:15:36.461 [DEBUG] [Thread-122719] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:15:36.461 [DEBUG] [Thread-122719] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:15:36.461 [DEBUG] [Thread-122719] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:15:36.461 [DEBUG] [Thread-122719] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:15:36.461 [DEBUG] [Thread-122719] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:15:36.461 [DEBUG] [Thread-122719] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:15:36.461 [DEBUG] [Thread-122719] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:15:36.461 [DEBUG] [Thread-122719] [transport.py] [_log()] client lang: <none>
2025-11-03T21:15:36.461 [DEBUG] [Thread-122719] [transport.py] [_log()] server lang: <none>
2025-11-03T21:15:36.461 [DEBUG] [Thread-122719] [transport.py] [_log()] kex follows: False
2025-11-03T21:15:36.461 [DEBUG] [Thread-122719] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:15:36.462 [DEBUG] [Thread-122719] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:15:36.462 [DEBUG] [Thread-122719] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:15:36.462 [DEBUG] [Thread-122719] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:15:36.462 [DEBUG] [Thread-122719] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:15:36.462 [DEBUG] [Thread-122719] [transport.py] [_log()] Compression: none
2025-11-03T21:15:36.462 [DEBUG] [Thread-122719] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:15:36.502 [DEBUG] [Thread-122719] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:15:36.521 [DEBUG] [Thread-122719] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:15:36.523 [DEBUG] [Thread-122719] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:15:36.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:15:36.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:15:36.535 [DEBUG] [Thread-122719] [transport.py] [_log()] userauth is OK
2025-11-03T21:15:36.536 [DEBUG] [Thread-122719] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:15:36.536 [DEBUG] [Thread-122719] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:15:36.536 [DEBUG] [Thread-122719] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:15:36.536 [DEBUG] [Thread-122719] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:15:36.569 [INFO] [Thread-122719] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:15:36.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:15:37.233 [DEBUG] [Thread-122719] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:15:37.233 [DEBUG] [Thread-122719] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:15:37.237 [DEBUG] [Thread-122719] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:15:37.274 [DEBUG] [Thread-122719] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:15:37.274 [DEBUG] [Thread-122719] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:15:37.277 [DEBUG] [Thread-122719] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:15:37.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:15:37.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:15:37.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:15:37.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:15:37.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:15:37.303 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:15:37.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:15:37.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:15:37.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:15:37.305 [DEBUG] [Thread-122719] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:15:37.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.802184 -999.00  +19.00  13.69     14   -8.20 1 1 1 1 1     0    0 25.41 -94.93 ZNESW 18.4 13.7 298.8 20.1 19.1 -27.0 19.1 -25.8 18.8 -25.6 19.1 -26.2
2025-11-03T21:15:37.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:15:37.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:15:37.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.802184
2025-11-03T21:15:37.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:15:37.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:15:37.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:15:37.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:15:37.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:15:37.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:15:14', tmtdew=32.92, humidity=9.74, cloud=0.0, wind=15.83, temperature=18.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:15:15', seeing=1.04, atlas_timestamp='2025-11-03T19:15:08.698', atlas_cloud=1, atlas_rain=1, zp_data=[0.003750000000000142, -0.03074999999999939, 0.051750000000000185, 0.06949999999999967, 0.0365000000000002, -0.06974999999999909, 0.027999999999998693, -0.18874999999999886, 0.0495000000000001, 0.09299999999999997, 0.0727499999999992, 0.06949999999999967, 0.1479999999999997, 0.06925000000000026, 0.007999999999999119, -0.28200000000000003, -0.011250000000000426, 0.10749999999999993, 0.17799999999999905, 0.13124999999999787, 0.16999999999999815, -0.1492500000000021, -0.059749999999999304, -0.7837499999999995, -0.019000000000000128, 0.1479999999999997, 0.23075000000000045, 0.1750000000000007, 0.08399999999999963, 0.17600000000000193, 0.19400000000000084, -0.9294999999999991, 0.08724999999999916], zp_timestamp='2025-11-03T19:12:00')
2025-11-03T21:15:37.430 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:15:37.444 [DEBUG] [Thread-122722] [transport.py] [_log()] starting thread (client mode): 0x11762440
2025-11-03T21:15:37.444 [DEBUG] [Thread-122722] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:15:37.464 [DEBUG] [Thread-122722] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:15:37.464 [INFO] [Thread-122722] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:15:37.476 [DEBUG] [Thread-122722] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:15:37.476 [DEBUG] [Thread-122722] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:15:37.476 [DEBUG] [Thread-122722] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:15:37.476 [DEBUG] [Thread-122722] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:15:37.477 [DEBUG] [Thread-122722] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:15:37.477 [DEBUG] [Thread-122722] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:15:37.477 [DEBUG] [Thread-122722] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:15:37.477 [DEBUG] [Thread-122722] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:15:37.477 [DEBUG] [Thread-122722] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:15:37.477 [DEBUG] [Thread-122722] [transport.py] [_log()] client lang: <none>
2025-11-03T21:15:37.477 [DEBUG] [Thread-122722] [transport.py] [_log()] server lang: <none>
2025-11-03T21:15:37.477 [DEBUG] [Thread-122722] [transport.py] [_log()] kex follows: False
2025-11-03T21:15:37.477 [DEBUG] [Thread-122722] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:15:37.477 [DEBUG] [Thread-122722] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:15:37.478 [DEBUG] [Thread-122722] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:15:37.478 [DEBUG] [Thread-122722] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:15:37.478 [DEBUG] [Thread-122722] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:15:37.478 [DEBUG] [Thread-122722] [transport.py] [_log()] Compression: none
2025-11-03T21:15:37.478 [DEBUG] [Thread-122722] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:15:37.531 [DEBUG] [Thread-122722] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:15:37.531 [DEBUG] [Thread-122722] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:15:37.531 [DEBUG] [Thread-122722] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:15:37.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:15:37.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:15:37.595 [DEBUG] [Thread-122722] [transport.py] [_log()] userauth is OK
2025-11-03T21:15:37.595 [DEBUG] [Thread-122722] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:15:37.596 [DEBUG] [Thread-122722] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:15:37.596 [DEBUG] [Thread-122722] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:15:37.596 [DEBUG] [Thread-122722] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:15:37.617 [INFO] [Thread-122722] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:15:37.618 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:15:37.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:15:38.457 [DEBUG] [Thread-122722] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:15:38.457 [DEBUG] [Thread-122722] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:15:38.506 [DEBUG] [Thread-122722] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:15:38.506 [DEBUG] [Thread-122722] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:15:38.517 [DEBUG] [Thread-122722] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:15:38.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:15:38.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:15:38.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:15:38.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:15:38.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:15:38.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:15:38.561 [DEBUG] [Thread-122722] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:15:38.949 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:15:38.950 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:15:49.869 [DEBUG] [Thread-122724 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:16:05.110 [DEBUG] [Thread-122725 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:16:08.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:16:08.585 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:16:08.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:16:10.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 15, 48), 32.81, 9.77, 0.0, 15.47, 18.86, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:16:10.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:15:48
2025-11-03T21:16:10.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:16:11.098 [DEBUG] [Thread-122726] [transport.py] [_log()] starting thread (client mode): 0xedc70a0
2025-11-03T21:16:11.099 [DEBUG] [Thread-122726] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:16:11.107 [DEBUG] [Thread-122726] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:16:11.107 [INFO] [Thread-122726] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:16:11.118 [DEBUG] [Thread-122726] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:16:11.118 [DEBUG] [Thread-122726] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:16:11.118 [DEBUG] [Thread-122726] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:16:11.118 [DEBUG] [Thread-122726] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:16:11.118 [DEBUG] [Thread-122726] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:16:11.118 [DEBUG] [Thread-122726] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:16:11.118 [DEBUG] [Thread-122726] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:16:11.118 [DEBUG] [Thread-122726] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:16:11.118 [DEBUG] [Thread-122726] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:16:11.118 [DEBUG] [Thread-122726] [transport.py] [_log()] client lang: <none>
2025-11-03T21:16:11.119 [DEBUG] [Thread-122726] [transport.py] [_log()] server lang: <none>
2025-11-03T21:16:11.119 [DEBUG] [Thread-122726] [transport.py] [_log()] kex follows: False
2025-11-03T21:16:11.119 [DEBUG] [Thread-122726] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:16:11.120 [DEBUG] [Thread-122726] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:16:11.120 [DEBUG] [Thread-122726] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:16:11.120 [DEBUG] [Thread-122726] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:16:11.121 [DEBUG] [Thread-122726] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:16:11.121 [DEBUG] [Thread-122726] [transport.py] [_log()] Compression: none
2025-11-03T21:16:11.121 [DEBUG] [Thread-122726] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:16:11.164 [DEBUG] [Thread-122726] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:16:11.171 [DEBUG] [Thread-122726] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:16:11.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:16:11.174 [DEBUG] [Thread-122726] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:16:11.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:16:11.178 [DEBUG] [Thread-122726] [transport.py] [_log()] userauth is OK
2025-11-03T21:16:11.178 [DEBUG] [Thread-122726] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:16:11.178 [DEBUG] [Thread-122726] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:16:11.178 [DEBUG] [Thread-122726] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:16:11.178 [DEBUG] [Thread-122726] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:16:11.205 [INFO] [Thread-122726] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:16:11.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:16:11.841 [DEBUG] [Thread-122726] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:16:11.841 [DEBUG] [Thread-122726] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:16:11.843 [DEBUG] [Thread-122726] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:16:11.882 [DEBUG] [Thread-122726] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:16:11.882 [DEBUG] [Thread-122726] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:16:11.884 [DEBUG] [Thread-122726] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:16:11.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:16:11.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:16:11.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:16:11.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:16:11.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:16:11.906 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:16:11.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:16:11.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:16:11.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:16:11.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.802531 -999.00  +19.00  15.13     14   -8.20 1 1 1 1 1     0    0 25.31 -94.26 ZNESW 14.6 15.1 307.8 20.3 19.1 -27.0 19.0 -25.9 18.8 -25.5 19.1 -26.6
2025-11-03T21:16:11.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:16:11.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:16:11.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.802531
2025-11-03T21:16:11.914 [DEBUG] [Thread-122726] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:16:11.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:16:11.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:16:11.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:16:11.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:16:11.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:16:11.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:15:48', tmtdew=32.81, humidity=9.77, cloud=0.0, wind=15.47, temperature=18.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:15:49', seeing=1.07, atlas_timestamp='2025-11-03T19:15:38.678', atlas_cloud=1, atlas_rain=1, zp_data=[0.003750000000000142, -0.03074999999999939, 0.051750000000000185, 0.06949999999999967, 0.0365000000000002, -0.06974999999999909, 0.027999999999998693, -0.18874999999999886, 0.0495000000000001, 0.09299999999999997, 0.0727499999999992, 0.06949999999999967, 0.1479999999999997, 0.06925000000000026, 0.007999999999999119, -0.28200000000000003, -0.011250000000000426, 0.10749999999999993, 0.17799999999999905, 0.13124999999999787, 0.16999999999999815, -0.1492500000000021, -0.059749999999999304, -0.7837499999999995, -0.019000000000000128, 0.1479999999999997, 0.23075000000000045, 0.1750000000000007, 0.08399999999999963, 0.17600000000000193, 0.19400000000000084, -0.9294999999999991, 0.08724999999999916], zp_timestamp='2025-11-03T19:12:00')
2025-11-03T21:16:12.037 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:16:12.052 [DEBUG] [Thread-122729] [transport.py] [_log()] starting thread (client mode): 0xed06080
2025-11-03T21:16:12.052 [DEBUG] [Thread-122729] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:16:12.070 [DEBUG] [Thread-122729] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:16:12.070 [INFO] [Thread-122729] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:16:12.080 [DEBUG] [Thread-122729] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:16:12.081 [DEBUG] [Thread-122729] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:16:12.081 [DEBUG] [Thread-122729] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:16:12.081 [DEBUG] [Thread-122729] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:16:12.081 [DEBUG] [Thread-122729] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:16:12.081 [DEBUG] [Thread-122729] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:16:12.081 [DEBUG] [Thread-122729] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:16:12.081 [DEBUG] [Thread-122729] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:16:12.081 [DEBUG] [Thread-122729] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:16:12.081 [DEBUG] [Thread-122729] [transport.py] [_log()] client lang: <none>
2025-11-03T21:16:12.081 [DEBUG] [Thread-122729] [transport.py] [_log()] server lang: <none>
2025-11-03T21:16:12.081 [DEBUG] [Thread-122729] [transport.py] [_log()] kex follows: False
2025-11-03T21:16:12.082 [DEBUG] [Thread-122729] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:16:12.082 [DEBUG] [Thread-122729] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:16:12.082 [DEBUG] [Thread-122729] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:16:12.082 [DEBUG] [Thread-122729] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:16:12.082 [DEBUG] [Thread-122729] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:16:12.082 [DEBUG] [Thread-122729] [transport.py] [_log()] Compression: none
2025-11-03T21:16:12.082 [DEBUG] [Thread-122729] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:16:12.144 [DEBUG] [Thread-122729] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:16:12.145 [DEBUG] [Thread-122729] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:16:12.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:16:12.146 [DEBUG] [Thread-122729] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:16:12.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:16:12.209 [DEBUG] [Thread-122729] [transport.py] [_log()] userauth is OK
2025-11-03T21:16:12.209 [DEBUG] [Thread-122729] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:16:12.209 [DEBUG] [Thread-122729] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:16:12.209 [DEBUG] [Thread-122729] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:16:12.209 [DEBUG] [Thread-122729] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:16:12.233 [INFO] [Thread-122729] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:16:12.233 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:16:12.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:16:13.074 [DEBUG] [Thread-122729] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:16:13.074 [DEBUG] [Thread-122729] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:16:13.122 [DEBUG] [Thread-122729] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:16:13.122 [DEBUG] [Thread-122729] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:16:13.133 [DEBUG] [Thread-122729] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:16:13.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:16:13.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:16:13.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:16:13.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:16:13.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:16:13.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:16:13.175 [DEBUG] [Thread-122729] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:16:20.229 [DEBUG] [Thread-122731 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:16:25.064 [DEBUG] [Thread-122732 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:16:35.404 [DEBUG] [Thread-122733 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:16:39.154 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:16:39.156 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:16:43.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:16:43.201 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:16:43.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:16:45.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 16, 23), 32.89, 9.7, 0.0, 15.69, 18.84, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:16:45.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:16:23
2025-11-03T21:16:45.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:16:45.598 [DEBUG] [Thread-122734] [transport.py] [_log()] starting thread (client mode): 0x1179a950
2025-11-03T21:16:45.600 [DEBUG] [Thread-122734] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:16:45.604 [DEBUG] [Thread-122734] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:16:45.604 [INFO] [Thread-122734] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:16:45.614 [DEBUG] [Thread-122734] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:16:45.615 [DEBUG] [Thread-122734] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:16:45.615 [DEBUG] [Thread-122734] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:16:45.615 [DEBUG] [Thread-122734] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:16:45.615 [DEBUG] [Thread-122734] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:16:45.615 [DEBUG] [Thread-122734] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:16:45.615 [DEBUG] [Thread-122734] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:16:45.615 [DEBUG] [Thread-122734] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:16:45.615 [DEBUG] [Thread-122734] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:16:45.615 [DEBUG] [Thread-122734] [transport.py] [_log()] client lang: <none>
2025-11-03T21:16:45.615 [DEBUG] [Thread-122734] [transport.py] [_log()] server lang: <none>
2025-11-03T21:16:45.615 [DEBUG] [Thread-122734] [transport.py] [_log()] kex follows: False
2025-11-03T21:16:45.616 [DEBUG] [Thread-122734] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:16:45.617 [DEBUG] [Thread-122734] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:16:45.617 [DEBUG] [Thread-122734] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:16:45.617 [DEBUG] [Thread-122734] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:16:45.617 [DEBUG] [Thread-122734] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:16:45.617 [DEBUG] [Thread-122734] [transport.py] [_log()] Compression: none
2025-11-03T21:16:45.617 [DEBUG] [Thread-122734] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:16:45.655 [DEBUG] [Thread-122734] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:16:45.662 [DEBUG] [Thread-122734] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:16:45.664 [DEBUG] [Thread-122734] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:16:45.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:16:45.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:16:45.670 [DEBUG] [Thread-122734] [transport.py] [_log()] userauth is OK
2025-11-03T21:16:45.671 [DEBUG] [Thread-122734] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:16:45.671 [DEBUG] [Thread-122734] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:16:45.671 [DEBUG] [Thread-122734] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:16:45.671 [DEBUG] [Thread-122734] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:16:45.713 [INFO] [Thread-122734] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:16:45.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:16:46.488 [DEBUG] [Thread-122734] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:16:46.488 [DEBUG] [Thread-122734] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:16:46.491 [DEBUG] [Thread-122734] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:16:46.529 [DEBUG] [Thread-122734] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:16:46.529 [DEBUG] [Thread-122734] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:16:46.532 [DEBUG] [Thread-122734] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:16:46.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:16:46.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:16:46.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:16:46.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:16:46.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:16:46.560 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:16:46.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:16:46.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:16:46.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:16:46.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.802878 -999.00  +18.90  12.57     14   -8.30 1 1 1 1 1     0    0 24.96 -89.05 ZNESW 16.6 12.6 309.8 17.3 19.1 -26.9 19.0 -25.8 18.8 -25.7 19.1 -26.6
2025-11-03T21:16:46.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:16:46.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:16:46.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.802878
2025-11-03T21:16:46.568 [DEBUG] [Thread-122734] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:16:46.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:16:46.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:16:46.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:16:46.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:16:46.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:16:46.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:16:23', tmtdew=32.89, humidity=9.7, cloud=0.0, wind=15.69, temperature=18.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:16:24', seeing=1.06, atlas_timestamp='2025-11-03T19:16:08.659', atlas_cloud=1, atlas_rain=1, zp_data=[0.003750000000000142, -0.03074999999999939, 0.051750000000000185, 0.06949999999999967, 0.0365000000000002, -0.06974999999999909, 0.027999999999998693, -0.18874999999999886, 0.0495000000000001, 0.09299999999999997, 0.0727499999999992, 0.06949999999999967, 0.1479999999999997, 0.06925000000000026, 0.007999999999999119, -0.28200000000000003, -0.011250000000000426, 0.10749999999999993, 0.17799999999999905, 0.13124999999999787, 0.16999999999999815, -0.1492500000000021, -0.059749999999999304, -0.7837499999999995, -0.019000000000000128, 0.1479999999999997, 0.23075000000000045, 0.1750000000000007, 0.08399999999999963, 0.17600000000000193, 0.19400000000000084, -0.9294999999999991, 0.08724999999999916], zp_timestamp='2025-11-03T19:12:00')
2025-11-03T21:16:46.671 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:16:46.685 [DEBUG] [Thread-122737] [transport.py] [_log()] starting thread (client mode): 0x117608b0
2025-11-03T21:16:46.685 [DEBUG] [Thread-122737] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:16:46.703 [DEBUG] [Thread-122737] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:16:46.703 [INFO] [Thread-122737] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:16:46.714 [DEBUG] [Thread-122737] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:16:46.714 [DEBUG] [Thread-122737] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:16:46.714 [DEBUG] [Thread-122737] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:16:46.714 [DEBUG] [Thread-122737] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:16:46.714 [DEBUG] [Thread-122737] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:16:46.714 [DEBUG] [Thread-122737] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:16:46.714 [DEBUG] [Thread-122737] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:16:46.714 [DEBUG] [Thread-122737] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:16:46.715 [DEBUG] [Thread-122737] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:16:46.715 [DEBUG] [Thread-122737] [transport.py] [_log()] client lang: <none>
2025-11-03T21:16:46.715 [DEBUG] [Thread-122737] [transport.py] [_log()] server lang: <none>
2025-11-03T21:16:46.715 [DEBUG] [Thread-122737] [transport.py] [_log()] kex follows: False
2025-11-03T21:16:46.715 [DEBUG] [Thread-122737] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:16:46.715 [DEBUG] [Thread-122737] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:16:46.715 [DEBUG] [Thread-122737] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:16:46.715 [DEBUG] [Thread-122737] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:16:46.715 [DEBUG] [Thread-122737] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:16:46.715 [DEBUG] [Thread-122737] [transport.py] [_log()] Compression: none
2025-11-03T21:16:46.715 [DEBUG] [Thread-122737] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:16:46.775 [DEBUG] [Thread-122737] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:16:46.775 [DEBUG] [Thread-122737] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:16:46.776 [DEBUG] [Thread-122737] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:16:46.776 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:16:46.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:16:46.837 [DEBUG] [Thread-122737] [transport.py] [_log()] userauth is OK
2025-11-03T21:16:46.837 [DEBUG] [Thread-122737] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:16:46.837 [DEBUG] [Thread-122737] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:16:46.837 [DEBUG] [Thread-122737] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:16:46.837 [DEBUG] [Thread-122737] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:16:46.861 [INFO] [Thread-122737] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:16:46.861 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:16:46.861 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:16:47.760 [DEBUG] [Thread-122737] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:16:47.760 [DEBUG] [Thread-122737] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:16:47.809 [DEBUG] [Thread-122737] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:16:47.809 [DEBUG] [Thread-122737] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:16:47.818 [DEBUG] [Thread-122737] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:16:47.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:16:47.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:16:47.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:16:47.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:16:47.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:16:47.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:16:47.857 [DEBUG] [Thread-122737] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:16:50.494 [DEBUG] [Thread-122739 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:17:05.659 [DEBUG] [Thread-122740 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:17:17.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:17:17.912 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:17:17.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:17:20.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 16, 57), 32.84, 9.7, 0.0, 17.75, 18.79, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:17:20.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:16:57
2025-11-03T21:17:20.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:17:20.692 [DEBUG] [Thread-122741] [transport.py] [_log()] starting thread (client mode): 0x1174e590
2025-11-03T21:17:20.694 [DEBUG] [Thread-122741] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:17:20.694 [DEBUG] [Thread-122741] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:17:20.694 [INFO] [Thread-122741] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:17:20.698 [DEBUG] [Thread-122741] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:17:20.699 [DEBUG] [Thread-122741] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:17:20.699 [DEBUG] [Thread-122741] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:17:20.699 [DEBUG] [Thread-122741] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:17:20.699 [DEBUG] [Thread-122741] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:17:20.699 [DEBUG] [Thread-122741] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:17:20.699 [DEBUG] [Thread-122741] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:17:20.699 [DEBUG] [Thread-122741] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:17:20.699 [DEBUG] [Thread-122741] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:17:20.699 [DEBUG] [Thread-122741] [transport.py] [_log()] client lang: <none>
2025-11-03T21:17:20.699 [DEBUG] [Thread-122741] [transport.py] [_log()] server lang: <none>
2025-11-03T21:17:20.699 [DEBUG] [Thread-122741] [transport.py] [_log()] kex follows: False
2025-11-03T21:17:20.699 [DEBUG] [Thread-122741] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:17:20.699 [DEBUG] [Thread-122741] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:17:20.700 [DEBUG] [Thread-122741] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:17:20.700 [DEBUG] [Thread-122741] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:17:20.700 [DEBUG] [Thread-122741] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:17:20.700 [DEBUG] [Thread-122741] [transport.py] [_log()] Compression: none
2025-11-03T21:17:20.700 [DEBUG] [Thread-122741] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:17:20.730 [DEBUG] [Thread-122741] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:17:20.732 [DEBUG] [Thread-122741] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:17:20.733 [DEBUG] [Thread-122741] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:17:20.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:17:20.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:17:20.739 [DEBUG] [Thread-122741] [transport.py] [_log()] userauth is OK
2025-11-03T21:17:20.739 [DEBUG] [Thread-122741] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:17:20.740 [DEBUG] [Thread-122741] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:17:20.740 [DEBUG] [Thread-122741] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:17:20.740 [DEBUG] [Thread-122741] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:17:20.757 [INFO] [Thread-122741] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:17:20.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:17:20.768 [DEBUG] [Thread-122743 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:17:21.395 [DEBUG] [Thread-122741] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:17:21.395 [DEBUG] [Thread-122741] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:17:21.395 [DEBUG] [Thread-122741] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:17:21.435 [DEBUG] [Thread-122741] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:17:21.435 [DEBUG] [Thread-122741] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:17:21.438 [DEBUG] [Thread-122741] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:17:21.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:17:21.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:17:21.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:17:21.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:17:21.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:17:21.459 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:17:21.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:17:21.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:17:21.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:17:21.461 [DEBUG] [Thread-122741] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:17:21.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.803226 -999.00  +18.90  12.27     14   -8.30 1 1 1 1 1     0    0 25.75 -87.60 ZNESW 13.8 12.3 304.4 20.2 19.1 -26.9 19.0 -25.8 18.8 -25.7 19.0 -26.6
2025-11-03T21:17:21.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:17:21.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:17:21.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.803226
2025-11-03T21:17:21.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:17:21.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:17:21.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:17:21.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:17:21.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:17:21.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:16:57', tmtdew=32.84, humidity=9.7, cloud=0.0, wind=17.75, temperature=18.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:16:58', seeing=1.12, atlas_timestamp='2025-11-03T19:16:38.726', atlas_cloud=1, atlas_rain=1, zp_data=[0.017250000000000654, 0.04025000000000034, 0.0652500000000007, 0.08749999999999858, 0.09299999999999997, 0.025249999999999773, -0.10400000000000098, -0.1737499999999983, -0.03049999999999997, 0.11149999999999949, 0.10724999999999874, 0.07900000000000063, 0.11500000000000021, 0.04324999999999868, -0.0010000000000012221, -0.5350000000000001, 0.019249999999999545, 0.08799999999999919, 0.1739999999999995, 0.1112499999999983, 0.19399999999999906, -0.07975000000000065, -0.008749999999999147, -0.7792499999999993, 0.0649999999999995, 0.1404999999999994, 0.24975000000000058, 0.12650000000000006, 0.12100000000000044, 0.17900000000000205, 0.18950000000000244, -0.5539999999999985, 0.13174999999999848], zp_timestamp='2025-11-03T19:16:00')
2025-11-03T21:17:21.568 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:17:21.583 [DEBUG] [Thread-122745] [transport.py] [_log()] starting thread (client mode): 0xeda1150
2025-11-03T21:17:21.583 [DEBUG] [Thread-122745] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:17:21.599 [DEBUG] [Thread-122745] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:17:21.600 [INFO] [Thread-122745] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:17:21.607 [DEBUG] [Thread-122745] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:17:21.607 [DEBUG] [Thread-122745] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:17:21.608 [DEBUG] [Thread-122745] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:17:21.608 [DEBUG] [Thread-122745] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:17:21.608 [DEBUG] [Thread-122745] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:17:21.608 [DEBUG] [Thread-122745] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:17:21.608 [DEBUG] [Thread-122745] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:17:21.608 [DEBUG] [Thread-122745] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:17:21.608 [DEBUG] [Thread-122745] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:17:21.608 [DEBUG] [Thread-122745] [transport.py] [_log()] client lang: <none>
2025-11-03T21:17:21.608 [DEBUG] [Thread-122745] [transport.py] [_log()] server lang: <none>
2025-11-03T21:17:21.609 [DEBUG] [Thread-122745] [transport.py] [_log()] kex follows: False
2025-11-03T21:17:21.609 [DEBUG] [Thread-122745] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:17:21.609 [DEBUG] [Thread-122745] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:17:21.609 [DEBUG] [Thread-122745] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:17:21.609 [DEBUG] [Thread-122745] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:17:21.609 [DEBUG] [Thread-122745] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:17:21.609 [DEBUG] [Thread-122745] [transport.py] [_log()] Compression: none
2025-11-03T21:17:21.609 [DEBUG] [Thread-122745] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:17:21.667 [DEBUG] [Thread-122745] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:17:21.668 [DEBUG] [Thread-122745] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:17:21.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:17:21.668 [DEBUG] [Thread-122745] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:17:21.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:17:21.726 [DEBUG] [Thread-122745] [transport.py] [_log()] userauth is OK
2025-11-03T21:17:21.727 [DEBUG] [Thread-122745] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:17:21.727 [DEBUG] [Thread-122745] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:17:21.727 [DEBUG] [Thread-122745] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:17:21.727 [DEBUG] [Thread-122745] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:17:21.749 [INFO] [Thread-122745] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:17:21.749 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:17:21.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:17:22.576 [DEBUG] [Thread-122745] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:17:22.576 [DEBUG] [Thread-122745] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:17:22.624 [DEBUG] [Thread-122745] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:17:22.624 [DEBUG] [Thread-122745] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:17:22.632 [DEBUG] [Thread-122745] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:17:22.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:17:22.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:17:22.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:17:22.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:17:22.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:17:22.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:17:22.666 [DEBUG] [Thread-122745] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:17:25.429 [DEBUG] [Thread-122747 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:17:35.816 [DEBUG] [Thread-122748 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:17:39.360 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:17:39.362 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:17:50.992 [DEBUG] [Thread-122749 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:17:52.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:17:52.692 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:17:52.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:17:54.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 17, 32), 32.78, 9.74, 0.0, 17.47, 18.71, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:17:54.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:17:32
2025-11-03T21:17:55.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:17:55.265 [DEBUG] [Thread-122750] [transport.py] [_log()] starting thread (client mode): 0x11761d50
2025-11-03T21:17:55.267 [DEBUG] [Thread-122750] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:17:55.277 [DEBUG] [Thread-122750] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:17:55.277 [INFO] [Thread-122750] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:17:55.286 [DEBUG] [Thread-122750] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:17:55.286 [DEBUG] [Thread-122750] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:17:55.286 [DEBUG] [Thread-122750] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:17:55.286 [DEBUG] [Thread-122750] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:17:55.286 [DEBUG] [Thread-122750] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:17:55.287 [DEBUG] [Thread-122750] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:17:55.287 [DEBUG] [Thread-122750] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:17:55.287 [DEBUG] [Thread-122750] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:17:55.287 [DEBUG] [Thread-122750] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:17:55.287 [DEBUG] [Thread-122750] [transport.py] [_log()] client lang: <none>
2025-11-03T21:17:55.287 [DEBUG] [Thread-122750] [transport.py] [_log()] server lang: <none>
2025-11-03T21:17:55.287 [DEBUG] [Thread-122750] [transport.py] [_log()] kex follows: False
2025-11-03T21:17:55.287 [DEBUG] [Thread-122750] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:17:55.288 [DEBUG] [Thread-122750] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:17:55.288 [DEBUG] [Thread-122750] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:17:55.288 [DEBUG] [Thread-122750] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:17:55.288 [DEBUG] [Thread-122750] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:17:55.288 [DEBUG] [Thread-122750] [transport.py] [_log()] Compression: none
2025-11-03T21:17:55.289 [DEBUG] [Thread-122750] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:17:55.335 [DEBUG] [Thread-122750] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:17:55.341 [DEBUG] [Thread-122750] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:17:55.343 [DEBUG] [Thread-122750] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:17:55.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:17:55.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:17:55.350 [DEBUG] [Thread-122750] [transport.py] [_log()] userauth is OK
2025-11-03T21:17:55.350 [DEBUG] [Thread-122750] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:17:55.351 [DEBUG] [Thread-122750] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:17:55.351 [DEBUG] [Thread-122750] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:17:55.351 [DEBUG] [Thread-122750] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:17:55.381 [INFO] [Thread-122750] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:17:55.386 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:17:56.016 [DEBUG] [Thread-122750] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:17:56.016 [DEBUG] [Thread-122750] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:17:56.019 [DEBUG] [Thread-122750] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:17:56.058 [DEBUG] [Thread-122750] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:17:56.058 [DEBUG] [Thread-122750] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:17:56.060 [DEBUG] [Thread-122750] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:17:56.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:17:56.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:17:56.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:17:56.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:17:56.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:17:56.078 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:17:56.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:17:56.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:17:56.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:17:56.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.803573 -999.00  +18.80  13.30     14   -8.40 1 1 1 1 1     0    0 25.27 -86.74 ZNESW 13.6 13.3 306.4 16.6 19.1 -26.8 18.9 -25.9 18.8 -25.7 19.0 -26.5
2025-11-03T21:17:56.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:17:56.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:17:56.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.803573
2025-11-03T21:17:56.085 [DEBUG] [Thread-122750] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:17:56.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:17:56.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:17:56.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:17:56.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:17:56.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:17:56.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:17:32', tmtdew=32.78, humidity=9.74, cloud=0.0, wind=17.47, temperature=18.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:17:33', seeing=1.12, atlas_timestamp='2025-11-03T19:17:08.707', atlas_cloud=1, atlas_rain=1, zp_data=[0.017250000000000654, 0.04025000000000034, 0.0652500000000007, 0.08749999999999858, 0.09299999999999997, 0.025249999999999773, -0.10400000000000098, -0.1737499999999983, -0.03049999999999997, 0.11149999999999949, 0.10724999999999874, 0.07900000000000063, 0.11500000000000021, 0.04324999999999868, -0.0010000000000012221, -0.5350000000000001, 0.019249999999999545, 0.08799999999999919, 0.1739999999999995, 0.1112499999999983, 0.19399999999999906, -0.07975000000000065, -0.008749999999999147, -0.7792499999999993, 0.0649999999999995, 0.1404999999999994, 0.24975000000000058, 0.12650000000000006, 0.12100000000000044, 0.17900000000000205, 0.18950000000000244, -0.5539999999999985, 0.13174999999999848], zp_timestamp='2025-11-03T19:16:00')
2025-11-03T21:17:56.191 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:17:56.204 [DEBUG] [Thread-122753] [transport.py] [_log()] starting thread (client mode): 0xedc4250
2025-11-03T21:17:56.204 [DEBUG] [Thread-122753] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:17:56.219 [DEBUG] [Thread-122753] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:17:56.219 [INFO] [Thread-122753] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:17:56.227 [DEBUG] [Thread-122753] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:17:56.227 [DEBUG] [Thread-122753] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:17:56.227 [DEBUG] [Thread-122753] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:17:56.227 [DEBUG] [Thread-122753] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:17:56.227 [DEBUG] [Thread-122753] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:17:56.227 [DEBUG] [Thread-122753] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:17:56.227 [DEBUG] [Thread-122753] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:17:56.228 [DEBUG] [Thread-122753] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:17:56.228 [DEBUG] [Thread-122753] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:17:56.228 [DEBUG] [Thread-122753] [transport.py] [_log()] client lang: <none>
2025-11-03T21:17:56.228 [DEBUG] [Thread-122753] [transport.py] [_log()] server lang: <none>
2025-11-03T21:17:56.228 [DEBUG] [Thread-122753] [transport.py] [_log()] kex follows: False
2025-11-03T21:17:56.228 [DEBUG] [Thread-122753] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:17:56.228 [DEBUG] [Thread-122753] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:17:56.228 [DEBUG] [Thread-122753] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:17:56.229 [DEBUG] [Thread-122753] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:17:56.229 [DEBUG] [Thread-122753] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:17:56.229 [DEBUG] [Thread-122753] [transport.py] [_log()] Compression: none
2025-11-03T21:17:56.229 [DEBUG] [Thread-122753] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:17:56.288 [DEBUG] [Thread-122753] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:17:56.289 [DEBUG] [Thread-122753] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:17:56.289 [DEBUG] [Thread-122753] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:17:56.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:17:56.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:17:56.347 [DEBUG] [Thread-122753] [transport.py] [_log()] userauth is OK
2025-11-03T21:17:56.347 [DEBUG] [Thread-122753] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:17:56.347 [DEBUG] [Thread-122753] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:17:56.347 [DEBUG] [Thread-122753] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:17:56.347 [DEBUG] [Thread-122753] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:17:56.363 [INFO] [Thread-122753] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:17:56.363 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:17:56.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:17:57.217 [DEBUG] [Thread-122753] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:17:57.218 [DEBUG] [Thread-122753] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:17:57.266 [DEBUG] [Thread-122753] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:17:57.267 [DEBUG] [Thread-122753] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:17:57.275 [DEBUG] [Thread-122753] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:17:57.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:17:57.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:17:57.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:17:57.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:17:57.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:17:57.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:17:57.309 [DEBUG] [Thread-122753] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:18:06.061 [DEBUG] [Thread-122755 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:18:21.607 [DEBUG] [Thread-122756 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:18:25.770 [DEBUG] [Thread-122757 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:18:27.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:18:27.334 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:18:27.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:18:28.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 18, 6), 32.77, 9.75, 0.0, 18.1, 18.74, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:18:28.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:18:06
2025-11-03T21:18:28.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:18:28.365 [DEBUG] [Thread-122758] [transport.py] [_log()] starting thread (client mode): 0x117602b0
2025-11-03T21:18:28.366 [DEBUG] [Thread-122758] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:18:28.374 [DEBUG] [Thread-122758] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:18:28.374 [INFO] [Thread-122758] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:18:28.382 [DEBUG] [Thread-122758] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:18:28.383 [DEBUG] [Thread-122758] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:18:28.383 [DEBUG] [Thread-122758] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:18:28.383 [DEBUG] [Thread-122758] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:18:28.383 [DEBUG] [Thread-122758] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:18:28.383 [DEBUG] [Thread-122758] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:18:28.384 [DEBUG] [Thread-122758] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:18:28.384 [DEBUG] [Thread-122758] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:18:28.384 [DEBUG] [Thread-122758] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:18:28.384 [DEBUG] [Thread-122758] [transport.py] [_log()] client lang: <none>
2025-11-03T21:18:28.384 [DEBUG] [Thread-122758] [transport.py] [_log()] server lang: <none>
2025-11-03T21:18:28.384 [DEBUG] [Thread-122758] [transport.py] [_log()] kex follows: False
2025-11-03T21:18:28.384 [DEBUG] [Thread-122758] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:18:28.386 [DEBUG] [Thread-122758] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:18:28.386 [DEBUG] [Thread-122758] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:18:28.386 [DEBUG] [Thread-122758] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:18:28.386 [DEBUG] [Thread-122758] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:18:28.386 [DEBUG] [Thread-122758] [transport.py] [_log()] Compression: none
2025-11-03T21:18:28.387 [DEBUG] [Thread-122758] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:18:28.434 [DEBUG] [Thread-122758] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:18:28.440 [DEBUG] [Thread-122758] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:18:28.443 [DEBUG] [Thread-122758] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:18:28.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:18:28.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:18:28.450 [DEBUG] [Thread-122758] [transport.py] [_log()] userauth is OK
2025-11-03T21:18:28.450 [DEBUG] [Thread-122758] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:18:28.450 [DEBUG] [Thread-122758] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:18:28.450 [DEBUG] [Thread-122758] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:18:28.450 [DEBUG] [Thread-122758] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:18:28.479 [INFO] [Thread-122758] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:18:28.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:18:29.119 [DEBUG] [Thread-122758] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:18:29.119 [DEBUG] [Thread-122758] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:18:29.129 [DEBUG] [Thread-122758] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:18:29.160 [DEBUG] [Thread-122758] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:18:29.160 [DEBUG] [Thread-122758] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:18:29.163 [DEBUG] [Thread-122758] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:18:29.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:18:29.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:18:29.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:18:29.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:18:29.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:18:29.184 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:18:29.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:18:29.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:18:29.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:18:29.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.804267 -999.00  +18.70  15.36     14   -8.60 1 1 1 1 1     0    0 25.48 -81.90 ZNESW 14.3 15.4 307.0 21.3 19.0 -26.9 18.9 -26.0 18.7 -25.5 18.9 -26.5
2025-11-03T21:18:29.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:18:29.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:18:29.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.804267
2025-11-03T21:18:29.191 [DEBUG] [Thread-122758] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:18:29.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:18:29.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:18:29.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:18:29.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:18:29.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:18:29.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:18:06', tmtdew=32.77, humidity=9.75, cloud=0.0, wind=18.1, temperature=18.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:18:06', seeing=1.07, atlas_timestamp='2025-11-03T19:18:08.669', atlas_cloud=1, atlas_rain=1, zp_data=[0.017250000000000654, 0.04025000000000034, 0.0652500000000007, 0.08749999999999858, 0.09299999999999997, 0.025249999999999773, -0.10400000000000098, -0.1737499999999983, -0.03049999999999997, 0.11149999999999949, 0.10724999999999874, 0.07900000000000063, 0.11500000000000021, 0.04324999999999868, -0.0010000000000012221, -0.5350000000000001, 0.019249999999999545, 0.08799999999999919, 0.1739999999999995, 0.1112499999999983, 0.19399999999999906, -0.07975000000000065, -0.008749999999999147, -0.7792499999999993, 0.0649999999999995, 0.1404999999999994, 0.24975000000000058, 0.12650000000000006, 0.12100000000000044, 0.17900000000000205, 0.18950000000000244, -0.5539999999999985, 0.13174999999999848], zp_timestamp='2025-11-03T19:16:00')
2025-11-03T21:18:29.287 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:18:29.300 [DEBUG] [Thread-122761] [transport.py] [_log()] starting thread (client mode): 0xedc4790
2025-11-03T21:18:29.300 [DEBUG] [Thread-122761] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:18:29.315 [DEBUG] [Thread-122761] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:18:29.315 [INFO] [Thread-122761] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:18:29.325 [DEBUG] [Thread-122761] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:18:29.325 [DEBUG] [Thread-122761] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:18:29.325 [DEBUG] [Thread-122761] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:18:29.325 [DEBUG] [Thread-122761] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:18:29.325 [DEBUG] [Thread-122761] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:18:29.325 [DEBUG] [Thread-122761] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:18:29.325 [DEBUG] [Thread-122761] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:18:29.325 [DEBUG] [Thread-122761] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:18:29.325 [DEBUG] [Thread-122761] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:18:29.325 [DEBUG] [Thread-122761] [transport.py] [_log()] client lang: <none>
2025-11-03T21:18:29.325 [DEBUG] [Thread-122761] [transport.py] [_log()] server lang: <none>
2025-11-03T21:18:29.325 [DEBUG] [Thread-122761] [transport.py] [_log()] kex follows: False
2025-11-03T21:18:29.325 [DEBUG] [Thread-122761] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:18:29.325 [DEBUG] [Thread-122761] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:18:29.325 [DEBUG] [Thread-122761] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:18:29.325 [DEBUG] [Thread-122761] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:18:29.325 [DEBUG] [Thread-122761] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:18:29.325 [DEBUG] [Thread-122761] [transport.py] [_log()] Compression: none
2025-11-03T21:18:29.325 [DEBUG] [Thread-122761] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:18:29.386 [DEBUG] [Thread-122761] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:18:29.386 [DEBUG] [Thread-122761] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:18:29.386 [DEBUG] [Thread-122761] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:18:29.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:18:29.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:18:29.446 [DEBUG] [Thread-122761] [transport.py] [_log()] userauth is OK
2025-11-03T21:18:29.446 [DEBUG] [Thread-122761] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:18:29.446 [DEBUG] [Thread-122761] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:18:29.446 [DEBUG] [Thread-122761] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:18:29.446 [DEBUG] [Thread-122761] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:18:29.464 [INFO] [Thread-122761] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:18:29.464 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:18:29.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:18:30.312 [DEBUG] [Thread-122761] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:18:30.312 [DEBUG] [Thread-122761] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:18:30.363 [DEBUG] [Thread-122761] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:18:30.363 [DEBUG] [Thread-122761] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:18:30.372 [DEBUG] [Thread-122761] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:18:30.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:18:30.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:18:30.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:18:30.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:18:30.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:18:30.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:18:30.412 [DEBUG] [Thread-122761] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:18:36.889 [DEBUG] [Thread-122763 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:18:39.565 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:18:39.566 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:18:51.976 [DEBUG] [Thread-122764 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:19:00.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:19:00.434 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:19:00.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:19:01.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 18, 39), 32.81, 9.75, 0.0, 18.32, 18.62, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:19:01.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:18:39
2025-11-03T21:19:01.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:19:01.536 [DEBUG] [Thread-122765] [transport.py] [_log()] starting thread (client mode): 0xeda0be0
2025-11-03T21:19:01.536 [DEBUG] [Thread-122765] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:19:01.556 [DEBUG] [Thread-122765] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:19:01.556 [INFO] [Thread-122765] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:19:01.559 [DEBUG] [Thread-122765] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:19:01.559 [DEBUG] [Thread-122765] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:19:01.559 [DEBUG] [Thread-122765] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:19:01.559 [DEBUG] [Thread-122765] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:19:01.559 [DEBUG] [Thread-122765] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:19:01.559 [DEBUG] [Thread-122765] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:19:01.559 [DEBUG] [Thread-122765] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:19:01.559 [DEBUG] [Thread-122765] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:19:01.559 [DEBUG] [Thread-122765] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:19:01.559 [DEBUG] [Thread-122765] [transport.py] [_log()] client lang: <none>
2025-11-03T21:19:01.559 [DEBUG] [Thread-122765] [transport.py] [_log()] server lang: <none>
2025-11-03T21:19:01.559 [DEBUG] [Thread-122765] [transport.py] [_log()] kex follows: False
2025-11-03T21:19:01.559 [DEBUG] [Thread-122765] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:19:01.559 [DEBUG] [Thread-122765] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:19:01.559 [DEBUG] [Thread-122765] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:19:01.559 [DEBUG] [Thread-122765] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:19:01.559 [DEBUG] [Thread-122765] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:19:01.559 [DEBUG] [Thread-122765] [transport.py] [_log()] Compression: none
2025-11-03T21:19:01.559 [DEBUG] [Thread-122765] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:19:01.571 [DEBUG] [Thread-122765] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:19:01.572 [DEBUG] [Thread-122765] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:19:01.572 [DEBUG] [Thread-122765] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:19:01.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:19:01.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:19:01.613 [DEBUG] [Thread-122765] [transport.py] [_log()] userauth is OK
2025-11-03T21:19:01.613 [DEBUG] [Thread-122765] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:19:01.614 [DEBUG] [Thread-122765] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:19:01.614 [DEBUG] [Thread-122765] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:19:01.614 [DEBUG] [Thread-122765] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:19:01.634 [INFO] [Thread-122765] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:19:01.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:19:02.279 [DEBUG] [Thread-122765] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:19:02.279 [DEBUG] [Thread-122765] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:19:02.279 [DEBUG] [Thread-122765] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:19:02.319 [DEBUG] [Thread-122765] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:19:02.319 [DEBUG] [Thread-122765] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:19:02.321 [DEBUG] [Thread-122765] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:19:02.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:19:02.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:19:02.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:19:02.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:19:02.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:19:02.340 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:19:02.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:19:02.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:19:02.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:19:02.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.804614 -999.00  +18.70  14.73     14   -8.60 1 1 1 1 1     0    0 24.86 -83.73 ZNESW 13.1 14.7 308.0 21.5 19.0 -26.9 18.9 -26.0 18.7 -25.5 19.0 -26.6
2025-11-03T21:19:02.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:19:02.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:19:02.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.804614
2025-11-03T21:19:02.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:19:02.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:19:02.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:19:02.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:19:02.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:19:02.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:18:39', tmtdew=32.81, humidity=9.75, cloud=0.0, wind=18.32, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:18:40', seeing=1.21, atlas_timestamp='2025-11-03T19:18:38.650', atlas_cloud=1, atlas_rain=1, zp_data=[0.017250000000000654, 0.04025000000000034, 0.0652500000000007, 0.08749999999999858, 0.09299999999999997, 0.025249999999999773, -0.10400000000000098, -0.1737499999999983, -0.03049999999999997, 0.11149999999999949, 0.10724999999999874, 0.07900000000000063, 0.11500000000000021, 0.04324999999999868, -0.0010000000000012221, -0.5350000000000001, 0.019249999999999545, 0.08799999999999919, 0.1739999999999995, 0.1112499999999983, 0.19399999999999906, -0.07975000000000065, -0.008749999999999147, -0.7792499999999993, 0.0649999999999995, 0.1404999999999994, 0.24975000000000058, 0.12650000000000006, 0.12100000000000044, 0.17900000000000205, 0.18950000000000244, -0.5539999999999985, 0.13174999999999848], zp_timestamp='2025-11-03T19:16:00')
2025-11-03T21:19:02.342 [DEBUG] [Thread-122765] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:19:02.416 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:19:02.429 [DEBUG] [Thread-122768] [transport.py] [_log()] starting thread (client mode): 0xed88220
2025-11-03T21:19:02.429 [DEBUG] [Thread-122768] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:19:02.445 [DEBUG] [Thread-122768] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:19:02.445 [INFO] [Thread-122768] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:19:02.455 [DEBUG] [Thread-122768] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:19:02.455 [DEBUG] [Thread-122768] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:19:02.455 [DEBUG] [Thread-122768] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:19:02.455 [DEBUG] [Thread-122768] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:19:02.455 [DEBUG] [Thread-122768] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:19:02.455 [DEBUG] [Thread-122768] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:19:02.455 [DEBUG] [Thread-122768] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:19:02.455 [DEBUG] [Thread-122768] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:19:02.455 [DEBUG] [Thread-122768] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:19:02.455 [DEBUG] [Thread-122768] [transport.py] [_log()] client lang: <none>
2025-11-03T21:19:02.455 [DEBUG] [Thread-122768] [transport.py] [_log()] server lang: <none>
2025-11-03T21:19:02.455 [DEBUG] [Thread-122768] [transport.py] [_log()] kex follows: False
2025-11-03T21:19:02.455 [DEBUG] [Thread-122768] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:19:02.455 [DEBUG] [Thread-122768] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:19:02.455 [DEBUG] [Thread-122768] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:19:02.455 [DEBUG] [Thread-122768] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:19:02.455 [DEBUG] [Thread-122768] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:19:02.455 [DEBUG] [Thread-122768] [transport.py] [_log()] Compression: none
2025-11-03T21:19:02.455 [DEBUG] [Thread-122768] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:19:02.510 [DEBUG] [Thread-122768] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:19:02.511 [DEBUG] [Thread-122768] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:19:02.511 [DEBUG] [Thread-122768] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:19:02.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:19:02.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:19:02.567 [DEBUG] [Thread-122768] [transport.py] [_log()] userauth is OK
2025-11-03T21:19:02.567 [DEBUG] [Thread-122768] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:19:02.567 [DEBUG] [Thread-122768] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:19:02.567 [DEBUG] [Thread-122768] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:19:02.567 [DEBUG] [Thread-122768] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:19:02.585 [INFO] [Thread-122768] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:19:02.586 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:19:02.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:19:03.435 [DEBUG] [Thread-122768] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:19:03.435 [DEBUG] [Thread-122768] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:19:03.484 [DEBUG] [Thread-122768] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:19:03.484 [DEBUG] [Thread-122768] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:19:03.492 [DEBUG] [Thread-122768] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:19:03.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:19:03.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:19:03.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:19:03.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:19:03.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:19:03.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:19:03.525 [DEBUG] [Thread-122768] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:19:07.005 [DEBUG] [Thread-122770 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:19:22.038 [DEBUG] [Thread-122771 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:19:25.899 [DEBUG] [Thread-122772 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:19:33.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:19:33.518 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:19:33.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:19:34.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 19, 12), 32.78, 9.77, 0.0, 17.26, 18.57, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:19:34.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:19:12
2025-11-03T21:19:34.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:19:34.629 [DEBUG] [Thread-122773] [transport.py] [_log()] starting thread (client mode): 0x1174d870
2025-11-03T21:19:34.629 [DEBUG] [Thread-122773] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:19:34.650 [DEBUG] [Thread-122773] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:19:34.651 [INFO] [Thread-122773] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:19:34.654 [DEBUG] [Thread-122773] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:19:34.654 [DEBUG] [Thread-122773] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:19:34.654 [DEBUG] [Thread-122773] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:19:34.654 [DEBUG] [Thread-122773] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:19:34.654 [DEBUG] [Thread-122773] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:19:34.654 [DEBUG] [Thread-122773] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:19:34.654 [DEBUG] [Thread-122773] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:19:34.654 [DEBUG] [Thread-122773] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:19:34.654 [DEBUG] [Thread-122773] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:19:34.654 [DEBUG] [Thread-122773] [transport.py] [_log()] client lang: <none>
2025-11-03T21:19:34.654 [DEBUG] [Thread-122773] [transport.py] [_log()] server lang: <none>
2025-11-03T21:19:34.654 [DEBUG] [Thread-122773] [transport.py] [_log()] kex follows: False
2025-11-03T21:19:34.654 [DEBUG] [Thread-122773] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:19:34.654 [DEBUG] [Thread-122773] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:19:34.655 [DEBUG] [Thread-122773] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:19:34.664 [DEBUG] [Thread-122773] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:19:34.664 [DEBUG] [Thread-122773] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:19:34.664 [DEBUG] [Thread-122773] [transport.py] [_log()] Compression: none
2025-11-03T21:19:34.664 [DEBUG] [Thread-122773] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:19:34.683 [DEBUG] [Thread-122773] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:19:34.683 [DEBUG] [Thread-122773] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:19:34.684 [DEBUG] [Thread-122773] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:19:34.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:19:34.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:19:34.687 [DEBUG] [Thread-122773] [transport.py] [_log()] userauth is OK
2025-11-03T21:19:34.687 [DEBUG] [Thread-122773] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:19:34.687 [DEBUG] [Thread-122773] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:19:34.687 [DEBUG] [Thread-122773] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:19:34.687 [DEBUG] [Thread-122773] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:19:34.722 [INFO] [Thread-122773] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:19:34.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:19:35.351 [DEBUG] [Thread-122773] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:19:35.360 [DEBUG] [Thread-122773] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:19:35.361 [DEBUG] [Thread-122773] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:19:35.393 [DEBUG] [Thread-122773] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:19:35.393 [DEBUG] [Thread-122773] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:19:35.396 [DEBUG] [Thread-122773] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:19:35.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:19:35.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:19:35.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:19:35.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:19:35.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:19:35.422 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:19:35.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:19:35.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:19:35.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:19:35.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.804962 -999.00  +18.60  14.38     14   -8.70 1 1 1 1 1     0    0 25.33 -79.93 ZNESW 15.8 14.4 311.4 19.0 19.0 -26.9 18.9 -25.9 18.7 -25.7 18.9 -26.6
2025-11-03T21:19:35.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:19:35.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:19:35.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.804962
2025-11-03T21:19:35.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:19:35.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:19:35.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:19:35.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:19:35.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:19:35.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:19:12', tmtdew=32.78, humidity=9.77, cloud=0.0, wind=17.26, temperature=18.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:19:13', seeing=1.09, atlas_timestamp='2025-11-03T19:19:08.717', atlas_cloud=1, atlas_rain=1, zp_data=[0.017250000000000654, 0.04025000000000034, 0.0652500000000007, 0.08749999999999858, 0.09299999999999997, 0.025249999999999773, -0.10400000000000098, -0.1737499999999983, -0.03049999999999997, 0.11149999999999949, 0.10724999999999874, 0.07900000000000063, 0.11500000000000021, 0.04324999999999868, -0.0010000000000012221, -0.5350000000000001, 0.019249999999999545, 0.08799999999999919, 0.1739999999999995, 0.1112499999999983, 0.19399999999999906, -0.07975000000000065, -0.008749999999999147, -0.7792499999999993, 0.0649999999999995, 0.1404999999999994, 0.24975000000000058, 0.12650000000000006, 0.12100000000000044, 0.17900000000000205, 0.18950000000000244, -0.5539999999999985, 0.13174999999999848], zp_timestamp='2025-11-03T19:16:00')
2025-11-03T21:19:35.426 [DEBUG] [Thread-122773] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:19:35.510 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:19:35.523 [DEBUG] [Thread-122776] [transport.py] [_log()] starting thread (client mode): 0xed348e0
2025-11-03T21:19:35.523 [DEBUG] [Thread-122776] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:19:35.541 [DEBUG] [Thread-122776] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:19:35.541 [INFO] [Thread-122776] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:19:35.548 [DEBUG] [Thread-122776] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:19:35.549 [DEBUG] [Thread-122776] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:19:35.549 [DEBUG] [Thread-122776] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:19:35.549 [DEBUG] [Thread-122776] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:19:35.549 [DEBUG] [Thread-122776] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:19:35.549 [DEBUG] [Thread-122776] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:19:35.549 [DEBUG] [Thread-122776] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:19:35.550 [DEBUG] [Thread-122776] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:19:35.550 [DEBUG] [Thread-122776] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:19:35.550 [DEBUG] [Thread-122776] [transport.py] [_log()] client lang: <none>
2025-11-03T21:19:35.550 [DEBUG] [Thread-122776] [transport.py] [_log()] server lang: <none>
2025-11-03T21:19:35.550 [DEBUG] [Thread-122776] [transport.py] [_log()] kex follows: False
2025-11-03T21:19:35.550 [DEBUG] [Thread-122776] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:19:35.550 [DEBUG] [Thread-122776] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:19:35.550 [DEBUG] [Thread-122776] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:19:35.550 [DEBUG] [Thread-122776] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:19:35.550 [DEBUG] [Thread-122776] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:19:35.551 [DEBUG] [Thread-122776] [transport.py] [_log()] Compression: none
2025-11-03T21:19:35.551 [DEBUG] [Thread-122776] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:19:35.613 [DEBUG] [Thread-122776] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:19:35.614 [DEBUG] [Thread-122776] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:19:35.615 [DEBUG] [Thread-122776] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:19:35.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:19:35.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:19:35.672 [DEBUG] [Thread-122776] [transport.py] [_log()] userauth is OK
2025-11-03T21:19:35.673 [DEBUG] [Thread-122776] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:19:35.673 [DEBUG] [Thread-122776] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:19:35.673 [DEBUG] [Thread-122776] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:19:35.673 [DEBUG] [Thread-122776] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:19:35.702 [INFO] [Thread-122776] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:19:35.702 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:19:35.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:19:36.546 [DEBUG] [Thread-122776] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:19:36.546 [DEBUG] [Thread-122776] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:19:36.594 [DEBUG] [Thread-122776] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:19:36.594 [DEBUG] [Thread-122776] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:19:36.603 [DEBUG] [Thread-122776] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:19:36.613 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:19:36.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:19:36.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:19:36.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:19:36.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:19:36.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:19:36.643 [DEBUG] [Thread-122776] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:19:37.069 [DEBUG] [Thread-122778 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:19:39.768 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:19:39.770 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:19:52.125 [DEBUG] [Thread-122779 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:20:06.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:20:06.651 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:20:06.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:20:07.155 [DEBUG] [Thread-122780 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:20:07.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 19, 44), 32.77, 9.79, 0.0, 18.33, 18.64, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:20:07.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:19:44
2025-11-03T21:20:07.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:20:07.730 [DEBUG] [Thread-122781] [transport.py] [_log()] starting thread (client mode): 0xed366e0
2025-11-03T21:20:07.730 [DEBUG] [Thread-122781] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:20:07.745 [DEBUG] [Thread-122781] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:20:07.745 [INFO] [Thread-122781] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:20:07.749 [DEBUG] [Thread-122781] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:20:07.749 [DEBUG] [Thread-122781] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:20:07.749 [DEBUG] [Thread-122781] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:20:07.749 [DEBUG] [Thread-122781] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:20:07.749 [DEBUG] [Thread-122781] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:20:07.749 [DEBUG] [Thread-122781] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:20:07.749 [DEBUG] [Thread-122781] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:20:07.749 [DEBUG] [Thread-122781] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:20:07.749 [DEBUG] [Thread-122781] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:20:07.749 [DEBUG] [Thread-122781] [transport.py] [_log()] client lang: <none>
2025-11-03T21:20:07.749 [DEBUG] [Thread-122781] [transport.py] [_log()] server lang: <none>
2025-11-03T21:20:07.749 [DEBUG] [Thread-122781] [transport.py] [_log()] kex follows: False
2025-11-03T21:20:07.749 [DEBUG] [Thread-122781] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:20:07.749 [DEBUG] [Thread-122781] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:20:07.749 [DEBUG] [Thread-122781] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:20:07.749 [DEBUG] [Thread-122781] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:20:07.749 [DEBUG] [Thread-122781] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:20:07.749 [DEBUG] [Thread-122781] [transport.py] [_log()] Compression: none
2025-11-03T21:20:07.749 [DEBUG] [Thread-122781] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:20:07.768 [DEBUG] [Thread-122781] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:20:07.770 [DEBUG] [Thread-122781] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:20:07.771 [DEBUG] [Thread-122781] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:20:07.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:20:07.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:20:07.774 [DEBUG] [Thread-122781] [transport.py] [_log()] userauth is OK
2025-11-03T21:20:07.774 [DEBUG] [Thread-122781] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:20:07.774 [DEBUG] [Thread-122781] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:20:07.774 [DEBUG] [Thread-122781] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:20:07.774 [DEBUG] [Thread-122781] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:20:07.805 [INFO] [Thread-122781] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:20:07.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:20:15.128 [DEBUG] [Thread-122781] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:20:15.128 [DEBUG] [Thread-122781] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:20:15.129 [DEBUG] [Thread-122781] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:20:15.169 [DEBUG] [Thread-122781] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:20:15.169 [DEBUG] [Thread-122781] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:20:15.173 [DEBUG] [Thread-122781] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:20:15.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:20:15.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:20:15.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:20:15.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:20:15.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:20:15.227 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:20:15.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:20:15.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:20:15.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:20:15.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.805309 -999.00  +18.60  13.18     14   -8.60 1 1 1 1 1     0    0 25.10 -85.60 ZNESW 12.6 13.2 293.8 18.9 18.9 -26.8 18.9 -25.8 18.6 -25.6 18.9 -26.6
2025-11-03T21:20:15.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:20:15.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:20:15.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.805309
2025-11-03T21:20:15.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:20:15.231 [DEBUG] [Thread-122781] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:20:15.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:20:15.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:20:15.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:20:15.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:20:15.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:19:44', tmtdew=32.77, humidity=9.79, cloud=0.0, wind=18.33, temperature=18.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:19:45', seeing=1.18, atlas_timestamp='2025-11-03T19:19:38.698', atlas_cloud=1, atlas_rain=1, zp_data=[0.017250000000000654, 0.04025000000000034, 0.0652500000000007, 0.08749999999999858, 0.09299999999999997, 0.025249999999999773, -0.10400000000000098, -0.1737499999999983, -0.03049999999999997, 0.11149999999999949, 0.10724999999999874, 0.07900000000000063, 0.11500000000000021, 0.04324999999999868, -0.0010000000000012221, -0.5350000000000001, 0.019249999999999545, 0.08799999999999919, 0.1739999999999995, 0.1112499999999983, 0.19399999999999906, -0.07975000000000065, -0.008749999999999147, -0.7792499999999993, 0.0649999999999995, 0.1404999999999994, 0.24975000000000058, 0.12650000000000006, 0.12100000000000044, 0.17900000000000205, 0.18950000000000244, -0.5539999999999985, 0.13174999999999848], zp_timestamp='2025-11-03T19:16:00')
2025-11-03T21:20:15.325 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:20:15.338 [DEBUG] [Thread-122784] [transport.py] [_log()] starting thread (client mode): 0x1174f100
2025-11-03T21:20:15.338 [DEBUG] [Thread-122784] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:20:15.352 [DEBUG] [Thread-122784] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:20:15.353 [INFO] [Thread-122784] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:20:15.362 [DEBUG] [Thread-122784] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:20:15.362 [DEBUG] [Thread-122784] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:20:15.362 [DEBUG] [Thread-122784] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:20:15.362 [DEBUG] [Thread-122784] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:20:15.362 [DEBUG] [Thread-122784] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:20:15.362 [DEBUG] [Thread-122784] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:20:15.362 [DEBUG] [Thread-122784] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:20:15.363 [DEBUG] [Thread-122784] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:20:15.363 [DEBUG] [Thread-122784] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:20:15.363 [DEBUG] [Thread-122784] [transport.py] [_log()] client lang: <none>
2025-11-03T21:20:15.363 [DEBUG] [Thread-122784] [transport.py] [_log()] server lang: <none>
2025-11-03T21:20:15.363 [DEBUG] [Thread-122784] [transport.py] [_log()] kex follows: False
2025-11-03T21:20:15.363 [DEBUG] [Thread-122784] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:20:15.363 [DEBUG] [Thread-122784] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:20:15.363 [DEBUG] [Thread-122784] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:20:15.364 [DEBUG] [Thread-122784] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:20:15.364 [DEBUG] [Thread-122784] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:20:15.364 [DEBUG] [Thread-122784] [transport.py] [_log()] Compression: none
2025-11-03T21:20:15.364 [DEBUG] [Thread-122784] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:20:15.422 [DEBUG] [Thread-122784] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:20:15.422 [DEBUG] [Thread-122784] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:20:15.423 [DEBUG] [Thread-122784] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:20:15.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:20:15.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:20:15.480 [DEBUG] [Thread-122784] [transport.py] [_log()] userauth is OK
2025-11-03T21:20:15.481 [DEBUG] [Thread-122784] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:20:15.481 [DEBUG] [Thread-122784] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:20:15.481 [DEBUG] [Thread-122784] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:20:15.481 [DEBUG] [Thread-122784] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:20:15.501 [INFO] [Thread-122784] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:20:15.501 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:20:15.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:20:16.339 [DEBUG] [Thread-122784] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:20:16.339 [DEBUG] [Thread-122784] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:20:16.387 [DEBUG] [Thread-122784] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:20:16.387 [DEBUG] [Thread-122784] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:20:16.396 [DEBUG] [Thread-122784] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:20:16.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:20:16.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:20:16.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:20:16.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:20:16.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:20:16.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:20:16.429 [DEBUG] [Thread-122784] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:20:22.185 [DEBUG] [Thread-122786 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:20:26.236 [DEBUG] [Thread-122787 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:20:37.246 [DEBUG] [Thread-122788 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:20:39.974 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:20:39.975 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:20:46.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:20:46.461 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:20:46.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:20:47.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 20, 17), 32.69, 9.85, 0.0, 19.27, 18.66, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:20:47.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:20:17
2025-11-03T21:20:47.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:20:47.544 [DEBUG] [Thread-122789] [transport.py] [_log()] starting thread (client mode): 0xed43250
2025-11-03T21:20:47.545 [DEBUG] [Thread-122789] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:20:47.556 [DEBUG] [Thread-122789] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:20:47.556 [INFO] [Thread-122789] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:20:47.559 [DEBUG] [Thread-122789] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:20:47.559 [DEBUG] [Thread-122789] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:20:47.559 [DEBUG] [Thread-122789] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:20:47.560 [DEBUG] [Thread-122789] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:20:47.560 [DEBUG] [Thread-122789] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:20:47.560 [DEBUG] [Thread-122789] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:20:47.560 [DEBUG] [Thread-122789] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:20:47.560 [DEBUG] [Thread-122789] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:20:47.560 [DEBUG] [Thread-122789] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:20:47.560 [DEBUG] [Thread-122789] [transport.py] [_log()] client lang: <none>
2025-11-03T21:20:47.560 [DEBUG] [Thread-122789] [transport.py] [_log()] server lang: <none>
2025-11-03T21:20:47.560 [DEBUG] [Thread-122789] [transport.py] [_log()] kex follows: False
2025-11-03T21:20:47.560 [DEBUG] [Thread-122789] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:20:47.560 [DEBUG] [Thread-122789] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:20:47.561 [DEBUG] [Thread-122789] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:20:47.561 [DEBUG] [Thread-122789] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:20:47.561 [DEBUG] [Thread-122789] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:20:47.561 [DEBUG] [Thread-122789] [transport.py] [_log()] Compression: none
2025-11-03T21:20:47.561 [DEBUG] [Thread-122789] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:20:47.580 [DEBUG] [Thread-122789] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:20:47.581 [DEBUG] [Thread-122789] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:20:47.581 [DEBUG] [Thread-122789] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:20:47.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:20:47.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:20:47.625 [DEBUG] [Thread-122789] [transport.py] [_log()] userauth is OK
2025-11-03T21:20:47.625 [DEBUG] [Thread-122789] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:20:47.625 [DEBUG] [Thread-122789] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:20:47.625 [DEBUG] [Thread-122789] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:20:47.625 [DEBUG] [Thread-122789] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:20:47.645 [INFO] [Thread-122789] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:20:47.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:20:48.294 [DEBUG] [Thread-122789] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:20:48.294 [DEBUG] [Thread-122789] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:20:48.294 [DEBUG] [Thread-122789] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:20:48.334 [DEBUG] [Thread-122789] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:20:48.334 [DEBUG] [Thread-122789] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:20:48.336 [DEBUG] [Thread-122789] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:20:48.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:20:48.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:20:48.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:20:48.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:20:48.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:20:48.353 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:20:48.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:20:48.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:20:48.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:20:48.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.805656 -999.00  +18.60  15.98     14   -8.70 1 1 1 1 1     0    0 24.92 -85.00 ZNESW 12.7 16.0 303.2 17.8 18.9 -26.9 18.9 -25.9 18.6 -25.6 18.9 -26.5
2025-11-03T21:20:48.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:20:48.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:20:48.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.805656
2025-11-03T21:20:48.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:20:48.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:20:48.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:20:48.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:20:48.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:20:48.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:20:17', tmtdew=32.69, humidity=9.85, cloud=0.0, wind=19.27, temperature=18.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:20:18', seeing=1.18, atlas_timestamp='2025-11-03T19:20:08.678', atlas_cloud=1, atlas_rain=1, zp_data=[0.017250000000000654, 0.04025000000000034, 0.0652500000000007, 0.08749999999999858, 0.09299999999999997, 0.025249999999999773, -0.10400000000000098, -0.1737499999999983, -0.03049999999999997, 0.11149999999999949, 0.10724999999999874, 0.07900000000000063, 0.11500000000000021, 0.04324999999999868, -0.0010000000000012221, -0.5350000000000001, 0.019249999999999545, 0.08799999999999919, 0.1739999999999995, 0.1112499999999983, 0.19399999999999906, -0.07975000000000065, -0.008749999999999147, -0.7792499999999993, 0.0649999999999995, 0.1404999999999994, 0.24975000000000058, 0.12650000000000006, 0.12100000000000044, 0.17900000000000205, 0.18950000000000244, -0.5539999999999985, 0.13174999999999848], zp_timestamp='2025-11-03T19:19:00')
2025-11-03T21:20:48.354 [DEBUG] [Thread-122789] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:20:48.426 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:20:48.440 [DEBUG] [Thread-122792] [transport.py] [_log()] starting thread (client mode): 0xed04490
2025-11-03T21:20:48.440 [DEBUG] [Thread-122792] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:20:48.455 [DEBUG] [Thread-122792] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:20:48.455 [INFO] [Thread-122792] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:20:48.466 [DEBUG] [Thread-122792] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:20:48.466 [DEBUG] [Thread-122792] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:20:48.466 [DEBUG] [Thread-122792] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:20:48.466 [DEBUG] [Thread-122792] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:20:48.466 [DEBUG] [Thread-122792] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:20:48.466 [DEBUG] [Thread-122792] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:20:48.466 [DEBUG] [Thread-122792] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:20:48.466 [DEBUG] [Thread-122792] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:20:48.466 [DEBUG] [Thread-122792] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:20:48.466 [DEBUG] [Thread-122792] [transport.py] [_log()] client lang: <none>
2025-11-03T21:20:48.466 [DEBUG] [Thread-122792] [transport.py] [_log()] server lang: <none>
2025-11-03T21:20:48.466 [DEBUG] [Thread-122792] [transport.py] [_log()] kex follows: False
2025-11-03T21:20:48.466 [DEBUG] [Thread-122792] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:20:48.466 [DEBUG] [Thread-122792] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:20:48.466 [DEBUG] [Thread-122792] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:20:48.466 [DEBUG] [Thread-122792] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:20:48.466 [DEBUG] [Thread-122792] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:20:48.466 [DEBUG] [Thread-122792] [transport.py] [_log()] Compression: none
2025-11-03T21:20:48.466 [DEBUG] [Thread-122792] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:20:48.525 [DEBUG] [Thread-122792] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:20:48.525 [DEBUG] [Thread-122792] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:20:48.525 [DEBUG] [Thread-122792] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:20:48.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:20:48.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:20:48.585 [DEBUG] [Thread-122792] [transport.py] [_log()] userauth is OK
2025-11-03T21:20:48.585 [DEBUG] [Thread-122792] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:20:48.585 [DEBUG] [Thread-122792] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:20:48.585 [DEBUG] [Thread-122792] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:20:48.585 [DEBUG] [Thread-122792] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:20:48.598 [INFO] [Thread-122792] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:20:48.599 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:20:48.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:20:49.439 [DEBUG] [Thread-122792] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:20:49.439 [DEBUG] [Thread-122792] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:20:49.487 [DEBUG] [Thread-122792] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:20:49.488 [DEBUG] [Thread-122792] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:20:49.497 [DEBUG] [Thread-122792] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:20:49.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:20:49.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:20:49.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:20:49.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:20:49.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:20:49.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:20:49.537 [DEBUG] [Thread-122792] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:20:52.274 [DEBUG] [Thread-122794 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:21:07.308 [DEBUG] [Thread-122795 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:21:19.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:21:19.538 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:21:19.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:21:20.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 20, 49), 32.72, 9.82, 0.0, 16.37, 18.61, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:21:20.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:20:49
2025-11-03T21:21:20.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:21:20.613 [DEBUG] [Thread-122796] [transport.py] [_log()] starting thread (client mode): 0xeda08e0
2025-11-03T21:21:20.613 [DEBUG] [Thread-122796] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:21:20.633 [DEBUG] [Thread-122796] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:21:20.633 [INFO] [Thread-122796] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:21:20.636 [DEBUG] [Thread-122796] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:21:20.636 [DEBUG] [Thread-122796] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:21:20.637 [DEBUG] [Thread-122796] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:21:20.637 [DEBUG] [Thread-122796] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:21:20.637 [DEBUG] [Thread-122796] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:21:20.637 [DEBUG] [Thread-122796] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:21:20.637 [DEBUG] [Thread-122796] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:21:20.637 [DEBUG] [Thread-122796] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:21:20.637 [DEBUG] [Thread-122796] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:21:20.637 [DEBUG] [Thread-122796] [transport.py] [_log()] client lang: <none>
2025-11-03T21:21:20.637 [DEBUG] [Thread-122796] [transport.py] [_log()] server lang: <none>
2025-11-03T21:21:20.637 [DEBUG] [Thread-122796] [transport.py] [_log()] kex follows: False
2025-11-03T21:21:20.638 [DEBUG] [Thread-122796] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:21:20.638 [DEBUG] [Thread-122796] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:21:20.638 [DEBUG] [Thread-122796] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:21:20.638 [DEBUG] [Thread-122796] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:21:20.638 [DEBUG] [Thread-122796] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:21:20.638 [DEBUG] [Thread-122796] [transport.py] [_log()] Compression: none
2025-11-03T21:21:20.638 [DEBUG] [Thread-122796] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:21:20.658 [DEBUG] [Thread-122796] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:21:20.658 [DEBUG] [Thread-122796] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:21:20.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:21:20.659 [DEBUG] [Thread-122796] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:21:20.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:21:20.662 [DEBUG] [Thread-122796] [transport.py] [_log()] userauth is OK
2025-11-03T21:21:20.662 [DEBUG] [Thread-122796] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:21:20.662 [DEBUG] [Thread-122796] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:21:20.662 [DEBUG] [Thread-122796] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:21:20.662 [DEBUG] [Thread-122796] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:21:20.685 [INFO] [Thread-122796] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:21:20.686 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:21:21.512 [DEBUG] [Thread-122796] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:21:21.512 [DEBUG] [Thread-122796] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:21:21.512 [DEBUG] [Thread-122796] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:21:21.552 [DEBUG] [Thread-122796] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:21:21.552 [DEBUG] [Thread-122796] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:21:21.555 [DEBUG] [Thread-122796] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:21:21.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:21:21.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:21:21.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:21:21.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:21:21.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:21:21.574 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:21:21.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:21:21.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:21:21.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:21:21.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.806003 -999.00  +18.50  14.37     14   -8.60 1 1 1 1 1     0    0 25.53 -78.20 ZNESW 14.9 14.4 317.8 17.8 18.9 -27.0 18.9 -25.9 18.6 -25.6 18.9 -26.6
2025-11-03T21:21:21.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:21:21.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:21:21.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.806003
2025-11-03T21:21:21.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:21:21.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:21:21.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:21:21.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:21:21.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:21:21.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:20:49', tmtdew=32.72, humidity=9.82, cloud=0.0, wind=16.37, temperature=18.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:20:50', seeing=1.29, atlas_timestamp='2025-11-03T19:20:38.659', atlas_cloud=1, atlas_rain=1, zp_data=[0.017250000000000654, 0.04025000000000034, 0.0652500000000007, 0.08749999999999858, 0.09299999999999997, 0.025249999999999773, -0.10400000000000098, -0.1737499999999983, -0.03049999999999997, 0.11149999999999949, 0.10724999999999874, 0.07900000000000063, 0.11500000000000021, 0.04324999999999868, -0.0010000000000012221, -0.5350000000000001, 0.019249999999999545, 0.08799999999999919, 0.1739999999999995, 0.1112499999999983, 0.19399999999999906, -0.07975000000000065, -0.008749999999999147, -0.7792499999999993, 0.0649999999999995, 0.1404999999999994, 0.24975000000000058, 0.12650000000000006, 0.12100000000000044, 0.17900000000000205, 0.18950000000000244, -0.5539999999999985, 0.13174999999999848], zp_timestamp='2025-11-03T19:19:00')
2025-11-03T21:21:21.576 [DEBUG] [Thread-122796] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:21:21.647 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:21:21.660 [DEBUG] [Thread-122799] [transport.py] [_log()] starting thread (client mode): 0xeda21a0
2025-11-03T21:21:21.660 [DEBUG] [Thread-122799] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:21:21.676 [DEBUG] [Thread-122799] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:21:21.676 [INFO] [Thread-122799] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:21:21.684 [DEBUG] [Thread-122799] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:21:21.684 [DEBUG] [Thread-122799] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:21:21.684 [DEBUG] [Thread-122799] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:21:21.684 [DEBUG] [Thread-122799] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:21:21.684 [DEBUG] [Thread-122799] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:21:21.684 [DEBUG] [Thread-122799] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:21:21.684 [DEBUG] [Thread-122799] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:21:21.684 [DEBUG] [Thread-122799] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:21:21.684 [DEBUG] [Thread-122799] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:21:21.684 [DEBUG] [Thread-122799] [transport.py] [_log()] client lang: <none>
2025-11-03T21:21:21.684 [DEBUG] [Thread-122799] [transport.py] [_log()] server lang: <none>
2025-11-03T21:21:21.684 [DEBUG] [Thread-122799] [transport.py] [_log()] kex follows: False
2025-11-03T21:21:21.684 [DEBUG] [Thread-122799] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:21:21.684 [DEBUG] [Thread-122799] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:21:21.684 [DEBUG] [Thread-122799] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:21:21.684 [DEBUG] [Thread-122799] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:21:21.684 [DEBUG] [Thread-122799] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:21:21.684 [DEBUG] [Thread-122799] [transport.py] [_log()] Compression: none
2025-11-03T21:21:21.684 [DEBUG] [Thread-122799] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:21:21.740 [DEBUG] [Thread-122799] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:21:21.740 [DEBUG] [Thread-122799] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:21:21.740 [DEBUG] [Thread-122799] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:21:21.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:21:21.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:21:21.802 [DEBUG] [Thread-122799] [transport.py] [_log()] userauth is OK
2025-11-03T21:21:21.802 [DEBUG] [Thread-122799] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:21:21.802 [DEBUG] [Thread-122799] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:21:21.802 [DEBUG] [Thread-122799] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:21:21.802 [DEBUG] [Thread-122799] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:21:21.816 [INFO] [Thread-122799] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:21:21.816 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:21:21.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:21:22.345 [DEBUG] [Thread-122801 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:21:22.654 [DEBUG] [Thread-122799] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:21:22.655 [DEBUG] [Thread-122799] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:21:22.704 [DEBUG] [Thread-122799] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:21:22.704 [DEBUG] [Thread-122799] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:21:22.713 [DEBUG] [Thread-122799] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:21:22.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:21:22.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:21:22.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:21:22.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:21:22.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:21:22.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:21:22.756 [DEBUG] [Thread-122799] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:21:27.323 [DEBUG] [Thread-122802 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:21:37.384 [DEBUG] [Thread-122803 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:21:39.385 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:21:40.178 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:21:40.180 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:21:44.406 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:21:47.466 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:21:52.416 [DEBUG] [Thread-122804 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:21:52.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:21:52.779 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:21:52.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:21:53.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 21, 22), 32.65, 9.89, 0.0, 16.16, 18.66, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:21:53.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:21:22
2025-11-03T21:21:53.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:21:53.766 [DEBUG] [Thread-122805] [transport.py] [_log()] starting thread (client mode): 0xed127a0
2025-11-03T21:21:53.767 [DEBUG] [Thread-122805] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:21:53.784 [DEBUG] [Thread-122805] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:21:53.785 [INFO] [Thread-122805] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:21:53.789 [DEBUG] [Thread-122805] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:21:53.789 [DEBUG] [Thread-122805] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:21:53.789 [DEBUG] [Thread-122805] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:21:53.789 [DEBUG] [Thread-122805] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:21:53.789 [DEBUG] [Thread-122805] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:21:53.789 [DEBUG] [Thread-122805] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:21:53.789 [DEBUG] [Thread-122805] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:21:53.789 [DEBUG] [Thread-122805] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:21:53.789 [DEBUG] [Thread-122805] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:21:53.789 [DEBUG] [Thread-122805] [transport.py] [_log()] client lang: <none>
2025-11-03T21:21:53.789 [DEBUG] [Thread-122805] [transport.py] [_log()] server lang: <none>
2025-11-03T21:21:53.789 [DEBUG] [Thread-122805] [transport.py] [_log()] kex follows: False
2025-11-03T21:21:53.789 [DEBUG] [Thread-122805] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:21:53.790 [DEBUG] [Thread-122805] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:21:53.790 [DEBUG] [Thread-122805] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:21:53.790 [DEBUG] [Thread-122805] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:21:53.790 [DEBUG] [Thread-122805] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:21:53.790 [DEBUG] [Thread-122805] [transport.py] [_log()] Compression: none
2025-11-03T21:21:53.790 [DEBUG] [Thread-122805] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:21:53.815 [DEBUG] [Thread-122805] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:21:53.816 [DEBUG] [Thread-122805] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:21:53.817 [DEBUG] [Thread-122805] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:21:53.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:21:53.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:21:53.820 [DEBUG] [Thread-122805] [transport.py] [_log()] userauth is OK
2025-11-03T21:21:53.820 [DEBUG] [Thread-122805] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:21:53.820 [DEBUG] [Thread-122805] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:21:53.820 [DEBUG] [Thread-122805] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:21:53.820 [DEBUG] [Thread-122805] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:21:53.846 [INFO] [Thread-122805] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:21:53.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:21:53.860 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:21:54.499 [DEBUG] [Thread-122805] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:21:54.500 [DEBUG] [Thread-122805] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:21:54.501 [DEBUG] [Thread-122805] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:21:54.541 [DEBUG] [Thread-122805] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:21:54.541 [DEBUG] [Thread-122805] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:21:54.545 [DEBUG] [Thread-122805] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:21:54.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:21:54.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:21:54.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:21:54.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:21:54.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:21:54.569 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:21:54.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:21:54.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:21:54.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:21:54.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.806698 -999.00  +18.60  14.72     15   -8.50 1 1 1 1 1     0    0 25.13 -74.08 ZNESW 15.3 14.7 307.6 21.2 18.9 -26.6 18.9 -25.6 18.6 -25.4 18.9 -26.3
2025-11-03T21:21:54.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:21:54.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:21:54.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.806698
2025-11-03T21:21:54.576 [DEBUG] [Thread-122805] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:21:54.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:21:54.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:21:54.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:21:54.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:21:54.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:21:54.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:21:22', tmtdew=32.65, humidity=9.89, cloud=0.0, wind=16.16, temperature=18.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:21:22', seeing=1.35, atlas_timestamp='2025-11-03T19:21:38.707', atlas_cloud=1, atlas_rain=1, zp_data=[0.017250000000000654, 0.04025000000000034, 0.0652500000000007, 0.08749999999999858, 0.09299999999999997, 0.025249999999999773, -0.10400000000000098, -0.1737499999999983, -0.03049999999999997, 0.11149999999999949, 0.10724999999999874, 0.07900000000000063, 0.11500000000000021, 0.04324999999999868, -0.0010000000000012221, -0.5350000000000001, 0.019249999999999545, 0.08799999999999919, 0.1739999999999995, 0.1112499999999983, 0.19399999999999906, -0.07975000000000065, -0.008749999999999147, -0.7792499999999993, 0.0649999999999995, 0.1404999999999994, 0.24975000000000058, 0.12650000000000006, 0.12100000000000044, 0.17900000000000205, 0.18950000000000244, -0.5539999999999985, 0.13174999999999848], zp_timestamp='2025-11-03T19:19:00')
2025-11-03T21:21:54.666 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:21:54.678 [DEBUG] [Thread-122808] [transport.py] [_log()] starting thread (client mode): 0xed11e40
2025-11-03T21:21:54.678 [DEBUG] [Thread-122808] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:21:54.693 [DEBUG] [Thread-122808] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:21:54.693 [INFO] [Thread-122808] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:21:54.701 [DEBUG] [Thread-122808] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:21:54.701 [DEBUG] [Thread-122808] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:21:54.701 [DEBUG] [Thread-122808] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:21:54.701 [DEBUG] [Thread-122808] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:21:54.701 [DEBUG] [Thread-122808] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:21:54.702 [DEBUG] [Thread-122808] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:21:54.702 [DEBUG] [Thread-122808] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:21:54.702 [DEBUG] [Thread-122808] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:21:54.702 [DEBUG] [Thread-122808] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:21:54.702 [DEBUG] [Thread-122808] [transport.py] [_log()] client lang: <none>
2025-11-03T21:21:54.702 [DEBUG] [Thread-122808] [transport.py] [_log()] server lang: <none>
2025-11-03T21:21:54.702 [DEBUG] [Thread-122808] [transport.py] [_log()] kex follows: False
2025-11-03T21:21:54.702 [DEBUG] [Thread-122808] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:21:54.702 [DEBUG] [Thread-122808] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:21:54.702 [DEBUG] [Thread-122808] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:21:54.702 [DEBUG] [Thread-122808] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:21:54.702 [DEBUG] [Thread-122808] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:21:54.702 [DEBUG] [Thread-122808] [transport.py] [_log()] Compression: none
2025-11-03T21:21:54.702 [DEBUG] [Thread-122808] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:21:54.761 [DEBUG] [Thread-122808] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:21:54.762 [DEBUG] [Thread-122808] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:21:54.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:21:54.763 [DEBUG] [Thread-122808] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:21:54.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:21:54.822 [DEBUG] [Thread-122808] [transport.py] [_log()] userauth is OK
2025-11-03T21:21:54.822 [DEBUG] [Thread-122808] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:21:54.822 [DEBUG] [Thread-122808] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:21:54.822 [DEBUG] [Thread-122808] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:21:54.822 [DEBUG] [Thread-122808] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:21:54.840 [INFO] [Thread-122808] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:21:54.841 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:21:54.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:21:55.662 [DEBUG] [Thread-122808] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:21:55.662 [DEBUG] [Thread-122808] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:21:55.712 [DEBUG] [Thread-122808] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:21:55.712 [DEBUG] [Thread-122808] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:21:55.722 [DEBUG] [Thread-122808] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:21:55.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:21:55.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:21:55.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:21:55.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:21:55.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:21:55.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:21:55.768 [DEBUG] [Thread-122808] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:22:07.461 [DEBUG] [Thread-122810 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:22:22.692 [DEBUG] [Thread-122811 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:22:25.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:22:25.791 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:22:25.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:22:26.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 21, 59), 32.59, 9.9, 0.0, 18.81, 18.67, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:22:26.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:21:59
2025-11-03T21:22:26.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:22:26.808 [DEBUG] [Thread-122812] [transport.py] [_log()] starting thread (client mode): 0x141d9ea0
2025-11-03T21:22:26.809 [DEBUG] [Thread-122812] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:22:26.823 [DEBUG] [Thread-122812] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:22:26.823 [INFO] [Thread-122812] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:22:26.826 [DEBUG] [Thread-122812] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:22:26.826 [DEBUG] [Thread-122812] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:22:26.826 [DEBUG] [Thread-122812] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:22:26.826 [DEBUG] [Thread-122812] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:22:26.826 [DEBUG] [Thread-122812] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:22:26.826 [DEBUG] [Thread-122812] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:22:26.826 [DEBUG] [Thread-122812] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:22:26.826 [DEBUG] [Thread-122812] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:22:26.826 [DEBUG] [Thread-122812] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:22:26.826 [DEBUG] [Thread-122812] [transport.py] [_log()] client lang: <none>
2025-11-03T21:22:26.826 [DEBUG] [Thread-122812] [transport.py] [_log()] server lang: <none>
2025-11-03T21:22:26.826 [DEBUG] [Thread-122812] [transport.py] [_log()] kex follows: False
2025-11-03T21:22:26.826 [DEBUG] [Thread-122812] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:22:26.827 [DEBUG] [Thread-122812] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:22:26.827 [DEBUG] [Thread-122812] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:22:26.827 [DEBUG] [Thread-122812] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:22:26.827 [DEBUG] [Thread-122812] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:22:26.827 [DEBUG] [Thread-122812] [transport.py] [_log()] Compression: none
2025-11-03T21:22:26.827 [DEBUG] [Thread-122812] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:22:26.850 [DEBUG] [Thread-122812] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:22:26.853 [DEBUG] [Thread-122812] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:22:26.854 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:22:26.855 [DEBUG] [Thread-122812] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:22:26.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:22:26.893 [DEBUG] [Thread-122812] [transport.py] [_log()] userauth is OK
2025-11-03T21:22:26.893 [DEBUG] [Thread-122812] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:22:26.894 [DEBUG] [Thread-122812] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:22:26.894 [DEBUG] [Thread-122812] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:22:26.894 [DEBUG] [Thread-122812] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:22:26.925 [INFO] [Thread-122812] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:22:26.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:22:27.562 [DEBUG] [Thread-122812] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:22:27.562 [DEBUG] [Thread-122812] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:22:27.562 [DEBUG] [Thread-122812] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:22:27.571 [DEBUG] [Thread-122814 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:22:27.602 [DEBUG] [Thread-122812] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:22:27.603 [DEBUG] [Thread-122812] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:22:27.605 [DEBUG] [Thread-122812] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:22:27.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:22:27.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:22:27.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:22:27.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:22:27.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:22:27.625 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:22:27.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:22:27.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:22:27.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:22:27.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.807045 -999.00  +18.60  17.03     15   -8.40 1 1 1 1 1     0    0 25.68 -71.85 ZNESW 18.0 17.0 312.6 21.0 18.9 -26.5 18.9 -25.7 18.6 -24.9 18.8 -26.2
2025-11-03T21:22:27.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:22:27.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:22:27.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.807045
2025-11-03T21:22:27.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:22:27.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:22:27.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:22:27.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:22:27.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:22:27.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:21:59', tmtdew=32.59, humidity=9.9, cloud=0.0, wind=18.81, temperature=18.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:22:00', seeing=1.35, atlas_timestamp='2025-11-03T19:22:08.688', atlas_cloud=1, atlas_rain=1, zp_data=[0.017250000000000654, 0.04025000000000034, 0.0652500000000007, 0.08749999999999858, 0.09299999999999997, 0.025249999999999773, -0.10400000000000098, -0.1737499999999983, -0.03049999999999997, 0.11149999999999949, 0.10724999999999874, 0.07900000000000063, 0.11500000000000021, 0.04324999999999868, -0.0010000000000012221, -0.5350000000000001, 0.019249999999999545, 0.08799999999999919, 0.1739999999999995, 0.1112499999999983, 0.19399999999999906, -0.07975000000000065, -0.008749999999999147, -0.7792499999999993, 0.0649999999999995, 0.1404999999999994, 0.24975000000000058, 0.12650000000000006, 0.12100000000000044, 0.17900000000000205, 0.18950000000000244, -0.5539999999999985, 0.13174999999999848], zp_timestamp='2025-11-03T19:19:00')
2025-11-03T21:22:27.632 [DEBUG] [Thread-122812] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:22:27.708 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:22:27.722 [DEBUG] [Thread-122816] [transport.py] [_log()] starting thread (client mode): 0xed43520
2025-11-03T21:22:27.723 [DEBUG] [Thread-122816] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:22:27.738 [DEBUG] [Thread-122816] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:22:27.738 [INFO] [Thread-122816] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:22:27.746 [DEBUG] [Thread-122816] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:22:27.746 [DEBUG] [Thread-122816] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:22:27.746 [DEBUG] [Thread-122816] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:22:27.746 [DEBUG] [Thread-122816] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:22:27.746 [DEBUG] [Thread-122816] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:22:27.746 [DEBUG] [Thread-122816] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:22:27.746 [DEBUG] [Thread-122816] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:22:27.746 [DEBUG] [Thread-122816] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:22:27.746 [DEBUG] [Thread-122816] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:22:27.746 [DEBUG] [Thread-122816] [transport.py] [_log()] client lang: <none>
2025-11-03T21:22:27.746 [DEBUG] [Thread-122816] [transport.py] [_log()] server lang: <none>
2025-11-03T21:22:27.746 [DEBUG] [Thread-122816] [transport.py] [_log()] kex follows: False
2025-11-03T21:22:27.746 [DEBUG] [Thread-122816] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:22:27.746 [DEBUG] [Thread-122816] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:22:27.746 [DEBUG] [Thread-122816] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:22:27.746 [DEBUG] [Thread-122816] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:22:27.747 [DEBUG] [Thread-122816] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:22:27.747 [DEBUG] [Thread-122816] [transport.py] [_log()] Compression: none
2025-11-03T21:22:27.747 [DEBUG] [Thread-122816] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:22:27.804 [DEBUG] [Thread-122816] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:22:27.804 [DEBUG] [Thread-122816] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:22:27.804 [DEBUG] [Thread-122816] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:22:27.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:22:27.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:22:27.862 [DEBUG] [Thread-122816] [transport.py] [_log()] userauth is OK
2025-11-03T21:22:27.862 [DEBUG] [Thread-122816] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:22:27.862 [DEBUG] [Thread-122816] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:22:27.862 [DEBUG] [Thread-122816] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:22:27.863 [DEBUG] [Thread-122816] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:22:27.877 [INFO] [Thread-122816] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:22:27.878 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:22:27.878 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:22:28.749 [DEBUG] [Thread-122816] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:22:28.749 [DEBUG] [Thread-122816] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:22:28.788 [DEBUG] [Thread-122816] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:22:28.788 [DEBUG] [Thread-122816] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:22:28.797 [DEBUG] [Thread-122816] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:22:28.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:22:28.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:22:28.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:22:28.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:22:28.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:22:28.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:22:28.836 [DEBUG] [Thread-122816] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:22:36.870 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:22:37.724 [DEBUG] [Thread-122818 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:22:40.056 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:22:40.387 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:22:40.388 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:22:45.108 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:22:50.500 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:22:52.792 [DEBUG] [Thread-122819 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:22:58.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:22:58.860 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:22:58.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:22:59.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 22, 33), 32.45, 9.89, 0.0, 18.65, 18.66, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:22:59.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:22:33
2025-11-03T21:22:59.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:23:00.135 [DEBUG] [Thread-122820] [transport.py] [_log()] starting thread (client mode): 0x1174fbe0
2025-11-03T21:23:00.135 [DEBUG] [Thread-122820] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:23:00.149 [DEBUG] [Thread-122820] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:23:00.149 [INFO] [Thread-122820] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:23:00.153 [DEBUG] [Thread-122820] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:23:00.153 [DEBUG] [Thread-122820] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:23:00.153 [DEBUG] [Thread-122820] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:23:00.153 [DEBUG] [Thread-122820] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:23:00.153 [DEBUG] [Thread-122820] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:23:00.153 [DEBUG] [Thread-122820] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:23:00.153 [DEBUG] [Thread-122820] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:23:00.153 [DEBUG] [Thread-122820] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:23:00.154 [DEBUG] [Thread-122820] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:23:00.154 [DEBUG] [Thread-122820] [transport.py] [_log()] client lang: <none>
2025-11-03T21:23:00.154 [DEBUG] [Thread-122820] [transport.py] [_log()] server lang: <none>
2025-11-03T21:23:00.154 [DEBUG] [Thread-122820] [transport.py] [_log()] kex follows: False
2025-11-03T21:23:00.154 [DEBUG] [Thread-122820] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:23:00.154 [DEBUG] [Thread-122820] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:23:00.154 [DEBUG] [Thread-122820] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:23:00.155 [DEBUG] [Thread-122820] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:23:00.155 [DEBUG] [Thread-122820] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:23:00.155 [DEBUG] [Thread-122820] [transport.py] [_log()] Compression: none
2025-11-03T21:23:00.155 [DEBUG] [Thread-122820] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:23:00.176 [DEBUG] [Thread-122820] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:23:00.177 [DEBUG] [Thread-122820] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:23:00.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:23:00.178 [DEBUG] [Thread-122820] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:23:00.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:23:00.179 [DEBUG] [Thread-122820] [transport.py] [_log()] userauth is OK
2025-11-03T21:23:00.179 [DEBUG] [Thread-122820] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:23:00.179 [DEBUG] [Thread-122820] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:23:00.180 [DEBUG] [Thread-122820] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:23:00.180 [DEBUG] [Thread-122820] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:23:00.203 [INFO] [Thread-122820] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:23:00.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:23:00.849 [DEBUG] [Thread-122820] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:23:00.849 [DEBUG] [Thread-122820] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:23:00.849 [DEBUG] [Thread-122820] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:23:00.889 [DEBUG] [Thread-122820] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:23:00.889 [DEBUG] [Thread-122820] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:23:00.892 [DEBUG] [Thread-122820] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:23:00.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:23:00.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:23:00.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:23:00.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:23:00.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:23:00.913 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:23:00.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:23:00.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:23:00.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:23:00.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.807392 -999.00  +18.80  22.10     15   -8.10 1 1 1 1 1     0    0 25.63 -68.58 ZNESW 17.0 22.1 297.2 26.2 18.9 -26.6 18.9 -25.5 18.6 -25.0 18.8 -26.0
2025-11-03T21:23:00.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:23:00.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:23:00.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.807392
2025-11-03T21:23:00.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:23:00.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:23:00.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:23:00.915 [DEBUG] [Thread-122820] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:23:00.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:23:00.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:23:00.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:22:33', tmtdew=32.45, humidity=9.89, cloud=0.0, wind=18.65, temperature=18.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:22:33', seeing=1.44, atlas_timestamp='2025-11-03T19:22:38.669', atlas_cloud=1, atlas_rain=1, zp_data=[0.017250000000000654, 0.04025000000000034, 0.0652500000000007, 0.08749999999999858, 0.09299999999999997, 0.025249999999999773, -0.10400000000000098, -0.1737499999999983, -0.03049999999999997, 0.11149999999999949, 0.10724999999999874, 0.07900000000000063, 0.11500000000000021, 0.04324999999999868, -0.0010000000000012221, -0.5350000000000001, 0.019249999999999545, 0.08799999999999919, 0.1739999999999995, 0.1112499999999983, 0.19399999999999906, -0.07975000000000065, -0.008749999999999147, -0.7792499999999993, 0.0649999999999995, 0.1404999999999994, 0.24975000000000058, 0.12650000000000006, 0.12100000000000044, 0.17900000000000205, 0.18950000000000244, -0.5539999999999985, 0.13174999999999848], zp_timestamp='2025-11-03T19:19:00')
2025-11-03T21:23:00.988 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:23:01.000 [DEBUG] [Thread-122823] [transport.py] [_log()] starting thread (client mode): 0x11799a20
2025-11-03T21:23:01.000 [DEBUG] [Thread-122823] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:23:01.015 [DEBUG] [Thread-122823] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:23:01.015 [INFO] [Thread-122823] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:23:01.022 [DEBUG] [Thread-122823] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:23:01.022 [DEBUG] [Thread-122823] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:23:01.022 [DEBUG] [Thread-122823] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:23:01.022 [DEBUG] [Thread-122823] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:23:01.022 [DEBUG] [Thread-122823] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:23:01.022 [DEBUG] [Thread-122823] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:23:01.022 [DEBUG] [Thread-122823] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:23:01.022 [DEBUG] [Thread-122823] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:23:01.022 [DEBUG] [Thread-122823] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:23:01.023 [DEBUG] [Thread-122823] [transport.py] [_log()] client lang: <none>
2025-11-03T21:23:01.023 [DEBUG] [Thread-122823] [transport.py] [_log()] server lang: <none>
2025-11-03T21:23:01.023 [DEBUG] [Thread-122823] [transport.py] [_log()] kex follows: False
2025-11-03T21:23:01.023 [DEBUG] [Thread-122823] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:23:01.023 [DEBUG] [Thread-122823] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:23:01.023 [DEBUG] [Thread-122823] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:23:01.023 [DEBUG] [Thread-122823] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:23:01.023 [DEBUG] [Thread-122823] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:23:01.023 [DEBUG] [Thread-122823] [transport.py] [_log()] Compression: none
2025-11-03T21:23:01.023 [DEBUG] [Thread-122823] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:23:01.080 [DEBUG] [Thread-122823] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:23:01.080 [DEBUG] [Thread-122823] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:23:01.081 [DEBUG] [Thread-122823] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:23:01.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:23:01.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:23:01.138 [DEBUG] [Thread-122823] [transport.py] [_log()] userauth is OK
2025-11-03T21:23:01.138 [DEBUG] [Thread-122823] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:23:01.139 [DEBUG] [Thread-122823] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:23:01.139 [DEBUG] [Thread-122823] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:23:01.139 [DEBUG] [Thread-122823] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:23:01.153 [INFO] [Thread-122823] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:23:01.153 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:23:01.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:23:02.028 [DEBUG] [Thread-122823] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:23:02.028 [DEBUG] [Thread-122823] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:23:02.076 [DEBUG] [Thread-122823] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:23:02.076 [DEBUG] [Thread-122823] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:23:02.085 [DEBUG] [Thread-122823] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:23:02.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:23:02.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:23:02.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:23:02.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:23:02.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:23:02.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:23:02.121 [DEBUG] [Thread-122823] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:23:07.820 [DEBUG] [Thread-122825 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:23:09.861 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:23:14.239 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:23:23.082 [DEBUG] [Thread-122826 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:23:27.864 [DEBUG] [Thread-122827 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:23:32.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:23:32.139 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:23:32.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:23:32.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 23, 5), 32.4, 9.94, 0.0, 17.63, 18.69, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:23:32.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:23:05
2025-11-03T21:23:33.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:23:33.229 [DEBUG] [Thread-122828] [transport.py] [_log()] starting thread (client mode): 0xed42920
2025-11-03T21:23:33.229 [DEBUG] [Thread-122828] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:23:33.247 [DEBUG] [Thread-122828] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:23:33.248 [INFO] [Thread-122828] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:23:33.250 [DEBUG] [Thread-122828] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:23:33.251 [DEBUG] [Thread-122828] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:23:33.251 [DEBUG] [Thread-122828] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:23:33.251 [DEBUG] [Thread-122828] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:23:33.251 [DEBUG] [Thread-122828] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:23:33.251 [DEBUG] [Thread-122828] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:23:33.251 [DEBUG] [Thread-122828] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:23:33.251 [DEBUG] [Thread-122828] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:23:33.251 [DEBUG] [Thread-122828] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:23:33.251 [DEBUG] [Thread-122828] [transport.py] [_log()] client lang: <none>
2025-11-03T21:23:33.251 [DEBUG] [Thread-122828] [transport.py] [_log()] server lang: <none>
2025-11-03T21:23:33.251 [DEBUG] [Thread-122828] [transport.py] [_log()] kex follows: False
2025-11-03T21:23:33.251 [DEBUG] [Thread-122828] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:23:33.251 [DEBUG] [Thread-122828] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:23:33.251 [DEBUG] [Thread-122828] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:23:33.252 [DEBUG] [Thread-122828] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:23:33.252 [DEBUG] [Thread-122828] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:23:33.252 [DEBUG] [Thread-122828] [transport.py] [_log()] Compression: none
2025-11-03T21:23:33.252 [DEBUG] [Thread-122828] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:23:33.277 [DEBUG] [Thread-122828] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:23:33.278 [DEBUG] [Thread-122828] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:23:33.279 [DEBUG] [Thread-122828] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:23:33.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:23:33.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:23:33.281 [DEBUG] [Thread-122828] [transport.py] [_log()] userauth is OK
2025-11-03T21:23:33.281 [DEBUG] [Thread-122828] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:23:33.281 [DEBUG] [Thread-122828] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:23:33.281 [DEBUG] [Thread-122828] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:23:33.281 [DEBUG] [Thread-122828] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:23:33.317 [INFO] [Thread-122828] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:23:33.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:23:33.644 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:23:33.988 [DEBUG] [Thread-122828] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:23:33.988 [DEBUG] [Thread-122828] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:23:33.989 [DEBUG] [Thread-122828] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:23:34.029 [DEBUG] [Thread-122828] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:23:34.030 [DEBUG] [Thread-122828] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:23:34.032 [DEBUG] [Thread-122828] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:23:34.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:23:34.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:23:34.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:23:34.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:23:34.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:23:34.055 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:23:34.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:23:34.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:23:34.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:23:34.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.807739 -999.00  +18.80  14.75     15   -8.20 1 1 1 1 1     0    0 25.58 -64.38 ZNESW 20.8 14.8 300.6 23.7 18.9 -26.6 18.8 -25.6 18.6 -25.0 18.8 -26.1
2025-11-03T21:23:34.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:23:34.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:23:34.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.807739
2025-11-03T21:23:34.062 [DEBUG] [Thread-122828] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:23:34.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:23:34.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:23:34.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:23:34.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:23:34.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:23:34.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:23:05', tmtdew=32.4, humidity=9.94, cloud=0.0, wind=17.63, temperature=18.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:23:06', seeing=1.28, atlas_timestamp='2025-11-03T19:23:08.650', atlas_cloud=1, atlas_rain=1, zp_data=[-0.003750000000000142, 0.08025000000000126, 0.025249999999999773, 0.018499999999999517, 0.03049999999999997, -0.1457499999999996, -0.05799999999999983, -0.10275000000000034, 0.08949999999999925, 0.03700000000000081, 0.09525000000000006, 0.06799999999999962, 0.1615000000000002, 0.06475000000000009, 0.009000000000000341, -0.16999999999999993, -0.08525000000000027, 0.06649999999999956, 0.16449999999999854, 0.11924999999999741, 0.17199999999999882, -0.146250000000002, -0.06374999999999886, -1.0797500000000007, 0.06299999999999883, 0.16999999999999993, 0.20674999999999955, 0.15549999999999997, 0.09299999999999997, 0.12700000000000067, 0.05850000000000222, -0.1899999999999995, 0.02474999999999916], zp_timestamp='2025-11-03T19:22:00')
2025-11-03T21:23:34.153 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:23:34.167 [DEBUG] [Thread-122831] [transport.py] [_log()] starting thread (client mode): 0xed41a80
2025-11-03T21:23:34.167 [DEBUG] [Thread-122831] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:23:34.183 [DEBUG] [Thread-122831] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:23:34.184 [INFO] [Thread-122831] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:23:34.193 [DEBUG] [Thread-122831] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:23:34.193 [DEBUG] [Thread-122831] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:23:34.193 [DEBUG] [Thread-122831] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:23:34.193 [DEBUG] [Thread-122831] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:23:34.193 [DEBUG] [Thread-122831] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:23:34.193 [DEBUG] [Thread-122831] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:23:34.193 [DEBUG] [Thread-122831] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:23:34.193 [DEBUG] [Thread-122831] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:23:34.193 [DEBUG] [Thread-122831] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:23:34.194 [DEBUG] [Thread-122831] [transport.py] [_log()] client lang: <none>
2025-11-03T21:23:34.194 [DEBUG] [Thread-122831] [transport.py] [_log()] server lang: <none>
2025-11-03T21:23:34.194 [DEBUG] [Thread-122831] [transport.py] [_log()] kex follows: False
2025-11-03T21:23:34.194 [DEBUG] [Thread-122831] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:23:34.194 [DEBUG] [Thread-122831] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:23:34.194 [DEBUG] [Thread-122831] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:23:34.194 [DEBUG] [Thread-122831] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:23:34.194 [DEBUG] [Thread-122831] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:23:34.194 [DEBUG] [Thread-122831] [transport.py] [_log()] Compression: none
2025-11-03T21:23:34.194 [DEBUG] [Thread-122831] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:23:34.252 [DEBUG] [Thread-122831] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:23:34.253 [DEBUG] [Thread-122831] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:23:34.253 [DEBUG] [Thread-122831] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:23:34.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:23:34.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:23:34.310 [DEBUG] [Thread-122831] [transport.py] [_log()] userauth is OK
2025-11-03T21:23:34.310 [DEBUG] [Thread-122831] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:23:34.310 [DEBUG] [Thread-122831] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:23:34.310 [DEBUG] [Thread-122831] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:23:34.311 [DEBUG] [Thread-122831] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:23:34.333 [INFO] [Thread-122831] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:23:34.334 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:23:34.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:23:35.181 [DEBUG] [Thread-122831] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:23:35.181 [DEBUG] [Thread-122831] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:23:35.230 [DEBUG] [Thread-122831] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:23:35.230 [DEBUG] [Thread-122831] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:23:35.241 [DEBUG] [Thread-122831] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:23:35.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:23:35.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:23:35.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:23:35.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:23:35.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:23:35.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:23:35.276 [DEBUG] [Thread-122831] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:23:38.004 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:23:38.119 [DEBUG] [Thread-122833 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:23:40.588 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:23:40.589 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:23:44.966 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:23:49.382 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:23:53.343 [DEBUG] [Thread-122834 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:24:05.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:24:05.311 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:24:05.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:24:06.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 23, 39), 32.43, 9.87, 0.0, 18.63, 18.79, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:24:06.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:23:39
2025-11-03T21:24:06.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:24:06.338 [DEBUG] [Thread-122835] [transport.py] [_log()] starting thread (client mode): 0x1174e5c0
2025-11-03T21:24:06.338 [DEBUG] [Thread-122835] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:24:06.351 [DEBUG] [Thread-122835] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:24:06.351 [INFO] [Thread-122835] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:24:06.356 [DEBUG] [Thread-122835] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:24:06.356 [DEBUG] [Thread-122835] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:24:06.356 [DEBUG] [Thread-122835] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:24:06.356 [DEBUG] [Thread-122835] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:24:06.356 [DEBUG] [Thread-122835] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:24:06.356 [DEBUG] [Thread-122835] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:24:06.356 [DEBUG] [Thread-122835] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:24:06.356 [DEBUG] [Thread-122835] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:24:06.356 [DEBUG] [Thread-122835] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:24:06.356 [DEBUG] [Thread-122835] [transport.py] [_log()] client lang: <none>
2025-11-03T21:24:06.356 [DEBUG] [Thread-122835] [transport.py] [_log()] server lang: <none>
2025-11-03T21:24:06.356 [DEBUG] [Thread-122835] [transport.py] [_log()] kex follows: False
2025-11-03T21:24:06.356 [DEBUG] [Thread-122835] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:24:06.357 [DEBUG] [Thread-122835] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:24:06.357 [DEBUG] [Thread-122835] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:24:06.357 [DEBUG] [Thread-122835] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:24:06.357 [DEBUG] [Thread-122835] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:24:06.357 [DEBUG] [Thread-122835] [transport.py] [_log()] Compression: none
2025-11-03T21:24:06.357 [DEBUG] [Thread-122835] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:24:06.380 [DEBUG] [Thread-122835] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:24:06.383 [DEBUG] [Thread-122835] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:24:06.384 [DEBUG] [Thread-122835] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:24:06.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:24:06.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:24:06.387 [DEBUG] [Thread-122835] [transport.py] [_log()] userauth is OK
2025-11-03T21:24:06.387 [DEBUG] [Thread-122835] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:24:06.387 [DEBUG] [Thread-122835] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:24:06.387 [DEBUG] [Thread-122835] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:24:06.387 [DEBUG] [Thread-122835] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:24:06.405 [INFO] [Thread-122835] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:24:06.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:24:07.012 [DEBUG] [Thread-122835] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:24:07.013 [DEBUG] [Thread-122835] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:24:07.023 [DEBUG] [Thread-122835] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:24:07.054 [DEBUG] [Thread-122835] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:24:07.055 [DEBUG] [Thread-122835] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:24:07.058 [DEBUG] [Thread-122835] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:24:07.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:24:07.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:24:07.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:24:07.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:24:07.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:24:07.083 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:24:07.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:24:07.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:24:07.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:24:07.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.808087 -999.00  +18.80  18.19     15   -8.20 1 1 1 1 1     0    0 25.63 -65.28 ZNESW 15.9 18.2 305.4 22.7 18.9 -26.6 18.9 -25.6 18.6 -25.3 18.9 -26.2
2025-11-03T21:24:07.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:24:07.086 [DEBUG] [Thread-122835] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:24:07.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:24:07.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.808087
2025-11-03T21:24:07.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:24:07.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:24:07.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:24:07.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:24:07.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:24:07.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:23:39', tmtdew=32.43, humidity=9.87, cloud=0.0, wind=18.63, temperature=18.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:23:40', seeing=1.47, atlas_timestamp='2025-11-03T19:23:38.717', atlas_cloud=1, atlas_rain=1, zp_data=[-0.003750000000000142, 0.08025000000000126, 0.025249999999999773, 0.018499999999999517, 0.03049999999999997, -0.1457499999999996, -0.05799999999999983, -0.10275000000000034, 0.08949999999999925, 0.03700000000000081, 0.09525000000000006, 0.06799999999999962, 0.1615000000000002, 0.06475000000000009, 0.009000000000000341, -0.16999999999999993, -0.08525000000000027, 0.06649999999999956, 0.16449999999999854, 0.11924999999999741, 0.17199999999999882, -0.146250000000002, -0.06374999999999886, -1.0797500000000007, 0.06299999999999883, 0.16999999999999993, 0.20674999999999955, 0.15549999999999997, 0.09299999999999997, 0.12700000000000067, 0.05850000000000222, -0.1899999999999995, 0.02474999999999916], zp_timestamp='2025-11-03T19:22:00')
2025-11-03T21:24:07.176 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:24:07.191 [DEBUG] [Thread-122838] [transport.py] [_log()] starting thread (client mode): 0xed108b0
2025-11-03T21:24:07.192 [DEBUG] [Thread-122838] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:24:07.209 [DEBUG] [Thread-122838] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:24:07.209 [INFO] [Thread-122838] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:24:07.221 [DEBUG] [Thread-122838] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:24:07.221 [DEBUG] [Thread-122838] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:24:07.221 [DEBUG] [Thread-122838] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:24:07.221 [DEBUG] [Thread-122838] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:24:07.222 [DEBUG] [Thread-122838] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:24:07.222 [DEBUG] [Thread-122838] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:24:07.222 [DEBUG] [Thread-122838] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:24:07.222 [DEBUG] [Thread-122838] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:24:07.222 [DEBUG] [Thread-122838] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:24:07.222 [DEBUG] [Thread-122838] [transport.py] [_log()] client lang: <none>
2025-11-03T21:24:07.222 [DEBUG] [Thread-122838] [transport.py] [_log()] server lang: <none>
2025-11-03T21:24:07.222 [DEBUG] [Thread-122838] [transport.py] [_log()] kex follows: False
2025-11-03T21:24:07.222 [DEBUG] [Thread-122838] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:24:07.222 [DEBUG] [Thread-122838] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:24:07.222 [DEBUG] [Thread-122838] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:24:07.222 [DEBUG] [Thread-122838] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:24:07.222 [DEBUG] [Thread-122838] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:24:07.222 [DEBUG] [Thread-122838] [transport.py] [_log()] Compression: none
2025-11-03T21:24:07.223 [DEBUG] [Thread-122838] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:24:07.276 [DEBUG] [Thread-122838] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:24:07.277 [DEBUG] [Thread-122838] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:24:07.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:24:07.278 [DEBUG] [Thread-122838] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:24:07.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:24:07.333 [DEBUG] [Thread-122838] [transport.py] [_log()] userauth is OK
2025-11-03T21:24:07.333 [DEBUG] [Thread-122838] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:24:07.333 [DEBUG] [Thread-122838] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:24:07.333 [DEBUG] [Thread-122838] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:24:07.333 [DEBUG] [Thread-122838] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:24:07.352 [INFO] [Thread-122838] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:24:07.353 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:24:07.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:24:08.202 [DEBUG] [Thread-122838] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:24:08.202 [DEBUG] [Thread-122838] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:24:08.242 [DEBUG] [Thread-122838] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:24:08.242 [DEBUG] [Thread-122838] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:24:08.251 [DEBUG] [Thread-122838] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:24:08.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:24:08.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:24:08.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:24:08.278 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:24:08.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:24:08.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:24:08.288 [DEBUG] [Thread-122838] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:24:08.527 [DEBUG] [Thread-122840 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:24:23.640 [DEBUG] [Thread-122841 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:24:28.119 [DEBUG] [Thread-122842 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:24:38.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:24:38.308 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:24:38.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:24:38.670 [DEBUG] [Thread-122843 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:24:38.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 24, 12), 32.41, 9.89, 0.0, 19.09, 18.79, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:24:38.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:24:12
2025-11-03T21:24:39.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:24:39.277 [DEBUG] [Thread-122844] [transport.py] [_log()] starting thread (client mode): 0x1174e680
2025-11-03T21:24:39.277 [DEBUG] [Thread-122844] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:24:39.297 [DEBUG] [Thread-122844] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:24:39.297 [INFO] [Thread-122844] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:24:39.300 [DEBUG] [Thread-122844] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:24:39.300 [DEBUG] [Thread-122844] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:24:39.300 [DEBUG] [Thread-122844] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:24:39.300 [DEBUG] [Thread-122844] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:24:39.300 [DEBUG] [Thread-122844] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:24:39.300 [DEBUG] [Thread-122844] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:24:39.300 [DEBUG] [Thread-122844] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:24:39.300 [DEBUG] [Thread-122844] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:24:39.300 [DEBUG] [Thread-122844] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:24:39.300 [DEBUG] [Thread-122844] [transport.py] [_log()] client lang: <none>
2025-11-03T21:24:39.300 [DEBUG] [Thread-122844] [transport.py] [_log()] server lang: <none>
2025-11-03T21:24:39.300 [DEBUG] [Thread-122844] [transport.py] [_log()] kex follows: False
2025-11-03T21:24:39.300 [DEBUG] [Thread-122844] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:24:39.300 [DEBUG] [Thread-122844] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:24:39.300 [DEBUG] [Thread-122844] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:24:39.300 [DEBUG] [Thread-122844] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:24:39.300 [DEBUG] [Thread-122844] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:24:39.300 [DEBUG] [Thread-122844] [transport.py] [_log()] Compression: none
2025-11-03T21:24:39.300 [DEBUG] [Thread-122844] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:24:39.315 [DEBUG] [Thread-122844] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:24:39.315 [DEBUG] [Thread-122844] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:24:39.315 [DEBUG] [Thread-122844] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:24:39.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:24:39.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:24:39.316 [DEBUG] [Thread-122844] [transport.py] [_log()] userauth is OK
2025-11-03T21:24:39.316 [DEBUG] [Thread-122844] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:24:39.316 [DEBUG] [Thread-122844] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:24:39.316 [DEBUG] [Thread-122844] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:24:39.316 [DEBUG] [Thread-122844] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:24:39.326 [INFO] [Thread-122844] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:24:39.326 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:24:39.963 [DEBUG] [Thread-122844] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:24:39.963 [DEBUG] [Thread-122844] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:24:39.963 [DEBUG] [Thread-122844] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:24:39.996 [DEBUG] [Thread-122844] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:24:39.996 [DEBUG] [Thread-122844] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:24:40.000 [DEBUG] [Thread-122844] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:24:40.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:24:40.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:24:40.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:24:40.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:24:40.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:24:40.024 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:24:40.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:24:40.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:24:40.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:24:40.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.808434 -999.00  +18.90  17.20     15   -7.90 1 1 1 1 1     0    0 25.03 -65.80 ZNESW 21.9 17.2 299.6 23.4 18.9 -26.6 18.9 -25.7 18.6 -25.4 18.9 -26.2
2025-11-03T21:24:40.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:24:40.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:24:40.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.808434
2025-11-03T21:24:40.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:24:40.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:24:40.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:24:40.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:24:40.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:24:40.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:24:12', tmtdew=32.41, humidity=9.89, cloud=0.0, wind=19.09, temperature=18.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:24:13', seeing=1.47, atlas_timestamp='2025-11-03T19:24:08.698', atlas_cloud=1, atlas_rain=1, zp_data=[-0.003750000000000142, 0.08025000000000126, 0.025249999999999773, 0.018499999999999517, 0.03049999999999997, -0.1457499999999996, -0.05799999999999983, -0.10275000000000034, 0.08949999999999925, 0.03700000000000081, 0.09525000000000006, 0.06799999999999962, 0.1615000000000002, 0.06475000000000009, 0.009000000000000341, -0.16999999999999993, -0.08525000000000027, 0.06649999999999956, 0.16449999999999854, 0.11924999999999741, 0.17199999999999882, -0.146250000000002, -0.06374999999999886, -1.0797500000000007, 0.06299999999999883, 0.16999999999999993, 0.20674999999999955, 0.15549999999999997, 0.09299999999999997, 0.12700000000000067, 0.05850000000000222, -0.1899999999999995, 0.02474999999999916], zp_timestamp='2025-11-03T19:22:00')
2025-11-03T21:24:40.027 [DEBUG] [Thread-122844] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:24:40.113 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:24:40.125 [DEBUG] [Thread-122847] [transport.py] [_log()] starting thread (client mode): 0xed075b0
2025-11-03T21:24:40.126 [DEBUG] [Thread-122847] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:24:40.141 [DEBUG] [Thread-122847] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:24:40.141 [INFO] [Thread-122847] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:24:40.151 [DEBUG] [Thread-122847] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:24:40.151 [DEBUG] [Thread-122847] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:24:40.151 [DEBUG] [Thread-122847] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:24:40.151 [DEBUG] [Thread-122847] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:24:40.151 [DEBUG] [Thread-122847] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:24:40.151 [DEBUG] [Thread-122847] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:24:40.151 [DEBUG] [Thread-122847] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:24:40.152 [DEBUG] [Thread-122847] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:24:40.152 [DEBUG] [Thread-122847] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:24:40.152 [DEBUG] [Thread-122847] [transport.py] [_log()] client lang: <none>
2025-11-03T21:24:40.152 [DEBUG] [Thread-122847] [transport.py] [_log()] server lang: <none>
2025-11-03T21:24:40.152 [DEBUG] [Thread-122847] [transport.py] [_log()] kex follows: False
2025-11-03T21:24:40.152 [DEBUG] [Thread-122847] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:24:40.152 [DEBUG] [Thread-122847] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:24:40.152 [DEBUG] [Thread-122847] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:24:40.152 [DEBUG] [Thread-122847] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:24:40.152 [DEBUG] [Thread-122847] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:24:40.152 [DEBUG] [Thread-122847] [transport.py] [_log()] Compression: none
2025-11-03T21:24:40.152 [DEBUG] [Thread-122847] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:24:40.217 [DEBUG] [Thread-122847] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:24:40.218 [DEBUG] [Thread-122847] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:24:40.218 [DEBUG] [Thread-122847] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:24:40.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:24:40.220 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:24:40.276 [DEBUG] [Thread-122847] [transport.py] [_log()] userauth is OK
2025-11-03T21:24:40.277 [DEBUG] [Thread-122847] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:24:40.277 [DEBUG] [Thread-122847] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:24:40.277 [DEBUG] [Thread-122847] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:24:40.277 [DEBUG] [Thread-122847] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:24:40.295 [INFO] [Thread-122847] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:24:40.296 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:24:40.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:24:40.800 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:24:40.802 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:24:41.126 [DEBUG] [Thread-122847] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:24:41.126 [DEBUG] [Thread-122847] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:24:41.180 [DEBUG] [Thread-122847] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:24:41.180 [DEBUG] [Thread-122847] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:24:41.191 [DEBUG] [Thread-122847] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:24:41.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:24:41.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:24:41.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:24:41.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:24:41.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:24:41.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:24:41.236 [DEBUG] [Thread-122847] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:24:47.900 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:24:50.996 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:24:53.706 [DEBUG] [Thread-122849 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:25:08.771 [DEBUG] [Thread-122850 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:25:11.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:25:11.256 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:25:11.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:25:11.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 24, 45), 32.17, 10.0, 0.0, 19.46, 18.87, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:25:11.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:24:45
2025-11-03T21:25:12.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:25:12.265 [DEBUG] [Thread-122851] [transport.py] [_log()] starting thread (client mode): 0x1179ad40
2025-11-03T21:25:12.265 [DEBUG] [Thread-122851] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:25:12.284 [DEBUG] [Thread-122851] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:25:12.284 [INFO] [Thread-122851] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:25:12.288 [DEBUG] [Thread-122851] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:25:12.288 [DEBUG] [Thread-122851] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:25:12.288 [DEBUG] [Thread-122851] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:25:12.288 [DEBUG] [Thread-122851] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:25:12.288 [DEBUG] [Thread-122851] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:25:12.288 [DEBUG] [Thread-122851] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:25:12.288 [DEBUG] [Thread-122851] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:25:12.288 [DEBUG] [Thread-122851] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:25:12.288 [DEBUG] [Thread-122851] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:25:12.288 [DEBUG] [Thread-122851] [transport.py] [_log()] client lang: <none>
2025-11-03T21:25:12.288 [DEBUG] [Thread-122851] [transport.py] [_log()] server lang: <none>
2025-11-03T21:25:12.288 [DEBUG] [Thread-122851] [transport.py] [_log()] kex follows: False
2025-11-03T21:25:12.288 [DEBUG] [Thread-122851] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:25:12.288 [DEBUG] [Thread-122851] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:25:12.288 [DEBUG] [Thread-122851] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:25:12.288 [DEBUG] [Thread-122851] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:25:12.288 [DEBUG] [Thread-122851] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:25:12.288 [DEBUG] [Thread-122851] [transport.py] [_log()] Compression: none
2025-11-03T21:25:12.288 [DEBUG] [Thread-122851] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:25:12.304 [DEBUG] [Thread-122851] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:25:12.304 [DEBUG] [Thread-122851] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:25:12.304 [DEBUG] [Thread-122851] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:25:12.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:25:12.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:25:12.305 [DEBUG] [Thread-122851] [transport.py] [_log()] userauth is OK
2025-11-03T21:25:12.305 [DEBUG] [Thread-122851] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:25:12.305 [DEBUG] [Thread-122851] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:25:12.305 [DEBUG] [Thread-122851] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:25:12.305 [DEBUG] [Thread-122851] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:25:12.314 [INFO] [Thread-122851] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:25:12.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:25:16.057 [DEBUG] [Thread-122851] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:25:16.057 [DEBUG] [Thread-122851] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:25:16.057 [DEBUG] [Thread-122851] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:25:16.097 [DEBUG] [Thread-122851] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:25:16.097 [DEBUG] [Thread-122851] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:25:16.100 [DEBUG] [Thread-122851] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:25:16.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:25:16.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:25:16.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:25:16.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:25:16.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:25:16.182 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:25:16.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:25:16.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:25:16.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:25:16.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.808434 -999.00  +18.90  17.20     15   -7.90 1 1 1 1 1     0    0 25.03 -65.80 ZNESW 21.9 17.2 299.6 23.4 18.9 -26.6 18.9 -25.7 18.6 -25.4 18.9 -26.2
2025-11-03T21:25:16.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:25:16.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:25:16.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.808434
2025-11-03T21:25:16.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:25:16.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:25:16.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:25:16.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:25:16.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:25:16.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:24:45', tmtdew=32.17, humidity=10.0, cloud=0.0, wind=19.46, temperature=18.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:24:45', seeing=1.36, atlas_timestamp='2025-11-03T19:24:08.698', atlas_cloud=1, atlas_rain=1, zp_data=[-0.003750000000000142, 0.08025000000000126, 0.025249999999999773, 0.018499999999999517, 0.03049999999999997, -0.1457499999999996, -0.05799999999999983, -0.10275000000000034, 0.08949999999999925, 0.03700000000000081, 0.09525000000000006, 0.06799999999999962, 0.1615000000000002, 0.06475000000000009, 0.009000000000000341, -0.16999999999999993, -0.08525000000000027, 0.06649999999999956, 0.16449999999999854, 0.11924999999999741, 0.17199999999999882, -0.146250000000002, -0.06374999999999886, -1.0797500000000007, 0.06299999999999883, 0.16999999999999993, 0.20674999999999955, 0.15549999999999997, 0.09299999999999997, 0.12700000000000067, 0.05850000000000222, -0.1899999999999995, 0.02474999999999916], zp_timestamp='2025-11-03T19:22:00')
2025-11-03T21:25:16.183 [DEBUG] [Thread-122851] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:25:16.258 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:25:16.275 [DEBUG] [Thread-122854] [transport.py] [_log()] starting thread (client mode): 0x11798430
2025-11-03T21:25:16.276 [DEBUG] [Thread-122854] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:25:16.290 [DEBUG] [Thread-122854] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:25:16.290 [INFO] [Thread-122854] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:25:16.297 [DEBUG] [Thread-122854] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:25:16.297 [DEBUG] [Thread-122854] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:25:16.297 [DEBUG] [Thread-122854] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:25:16.297 [DEBUG] [Thread-122854] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:25:16.297 [DEBUG] [Thread-122854] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:25:16.297 [DEBUG] [Thread-122854] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:25:16.298 [DEBUG] [Thread-122854] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:25:16.298 [DEBUG] [Thread-122854] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:25:16.298 [DEBUG] [Thread-122854] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:25:16.298 [DEBUG] [Thread-122854] [transport.py] [_log()] client lang: <none>
2025-11-03T21:25:16.298 [DEBUG] [Thread-122854] [transport.py] [_log()] server lang: <none>
2025-11-03T21:25:16.298 [DEBUG] [Thread-122854] [transport.py] [_log()] kex follows: False
2025-11-03T21:25:16.298 [DEBUG] [Thread-122854] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:25:16.298 [DEBUG] [Thread-122854] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:25:16.298 [DEBUG] [Thread-122854] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:25:16.298 [DEBUG] [Thread-122854] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:25:16.298 [DEBUG] [Thread-122854] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:25:16.298 [DEBUG] [Thread-122854] [transport.py] [_log()] Compression: none
2025-11-03T21:25:16.298 [DEBUG] [Thread-122854] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:25:16.356 [DEBUG] [Thread-122854] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:25:16.356 [DEBUG] [Thread-122854] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:25:16.356 [DEBUG] [Thread-122854] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:25:16.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:25:16.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:25:16.414 [DEBUG] [Thread-122854] [transport.py] [_log()] userauth is OK
2025-11-03T21:25:16.414 [DEBUG] [Thread-122854] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:25:16.414 [DEBUG] [Thread-122854] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:25:16.414 [DEBUG] [Thread-122854] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:25:16.414 [DEBUG] [Thread-122854] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:25:16.429 [INFO] [Thread-122854] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:25:16.429 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:25:16.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:25:17.322 [DEBUG] [Thread-122854] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:25:17.322 [DEBUG] [Thread-122854] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:25:17.369 [DEBUG] [Thread-122854] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:25:17.369 [DEBUG] [Thread-122854] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:25:17.378 [DEBUG] [Thread-122854] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:25:17.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:25:17.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:25:17.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:25:17.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:25:17.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:25:17.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:25:17.410 [DEBUG] [Thread-122854] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:25:23.816 [DEBUG] [Thread-122856 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:25:29.210 [DEBUG] [Thread-122857 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:25:38.881 [DEBUG] [Thread-122858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:25:41.004 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:25:41.006 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:25:47.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:25:47.425 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:25:47.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:25:48.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 25, 17), 32.07, 10.09, 0.0, 18.97, 18.87, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:25:48.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:25:17
2025-11-03T21:25:48.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:25:48.462 [DEBUG] [Thread-122859] [transport.py] [_log()] starting thread (client mode): 0x117ea3e0
2025-11-03T21:25:48.462 [DEBUG] [Thread-122859] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:25:48.477 [DEBUG] [Thread-122859] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:25:48.477 [INFO] [Thread-122859] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:25:48.480 [DEBUG] [Thread-122859] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:25:48.480 [DEBUG] [Thread-122859] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:25:48.480 [DEBUG] [Thread-122859] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:25:48.480 [DEBUG] [Thread-122859] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:25:48.481 [DEBUG] [Thread-122859] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:25:48.481 [DEBUG] [Thread-122859] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:25:48.481 [DEBUG] [Thread-122859] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:25:48.481 [DEBUG] [Thread-122859] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:25:48.481 [DEBUG] [Thread-122859] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:25:48.481 [DEBUG] [Thread-122859] [transport.py] [_log()] client lang: <none>
2025-11-03T21:25:48.481 [DEBUG] [Thread-122859] [transport.py] [_log()] server lang: <none>
2025-11-03T21:25:48.481 [DEBUG] [Thread-122859] [transport.py] [_log()] kex follows: False
2025-11-03T21:25:48.481 [DEBUG] [Thread-122859] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:25:48.481 [DEBUG] [Thread-122859] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:25:48.481 [DEBUG] [Thread-122859] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:25:48.481 [DEBUG] [Thread-122859] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:25:48.481 [DEBUG] [Thread-122859] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:25:48.481 [DEBUG] [Thread-122859] [transport.py] [_log()] Compression: none
2025-11-03T21:25:48.481 [DEBUG] [Thread-122859] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:25:48.500 [DEBUG] [Thread-122859] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:25:48.501 [DEBUG] [Thread-122859] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:25:48.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:25:48.502 [DEBUG] [Thread-122859] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:25:48.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:25:48.504 [DEBUG] [Thread-122859] [transport.py] [_log()] userauth is OK
2025-11-03T21:25:48.504 [DEBUG] [Thread-122859] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:25:48.504 [DEBUG] [Thread-122859] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:25:48.504 [DEBUG] [Thread-122859] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:25:48.504 [DEBUG] [Thread-122859] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:25:48.521 [INFO] [Thread-122859] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:25:48.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:25:49.166 [DEBUG] [Thread-122859] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:25:49.166 [DEBUG] [Thread-122859] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:25:49.167 [DEBUG] [Thread-122859] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:25:49.208 [DEBUG] [Thread-122859] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:25:49.208 [DEBUG] [Thread-122859] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:25:49.211 [DEBUG] [Thread-122859] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:25:49.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:25:49.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:25:49.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:25:49.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:25:49.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:25:49.232 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:25:49.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:25:49.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:25:49.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:25:49.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.808781 -999.00  +19.00  21.74     15   -7.70 1 1 1 1 1     0    0 25.69 -67.54 ZNESW 20.9 21.7 304.2 25.4 18.9 -26.5 18.9 -25.7 18.6 -25.0 18.9 -26.3
2025-11-03T21:25:49.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:25:49.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:25:49.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.808781
2025-11-03T21:25:49.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:25:49.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:25:49.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:25:49.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:25:49.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:25:49.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:25:17', tmtdew=32.07, humidity=10.09, cloud=0.0, wind=18.97, temperature=18.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:25:18', seeing=1.41, atlas_timestamp='2025-11-03T19:24:38.678', atlas_cloud=1, atlas_rain=1, zp_data=[-0.003750000000000142, 0.08025000000000126, 0.025249999999999773, 0.018499999999999517, 0.03049999999999997, -0.1457499999999996, -0.05799999999999983, -0.10275000000000034, 0.08949999999999925, 0.03700000000000081, 0.09525000000000006, 0.06799999999999962, 0.1615000000000002, 0.06475000000000009, 0.009000000000000341, -0.16999999999999993, -0.08525000000000027, 0.06649999999999956, 0.16449999999999854, 0.11924999999999741, 0.17199999999999882, -0.146250000000002, -0.06374999999999886, -1.0797500000000007, 0.06299999999999883, 0.16999999999999993, 0.20674999999999955, 0.15549999999999997, 0.09299999999999997, 0.12700000000000067, 0.05850000000000222, -0.1899999999999995, 0.02474999999999916], zp_timestamp='2025-11-03T19:22:00')
2025-11-03T21:25:49.236 [DEBUG] [Thread-122859] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:25:49.320 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:25:49.342 [DEBUG] [Thread-122862] [transport.py] [_log()] starting thread (client mode): 0x1179bac0
2025-11-03T21:25:49.342 [DEBUG] [Thread-122862] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:25:49.362 [DEBUG] [Thread-122862] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:25:49.362 [INFO] [Thread-122862] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:25:49.376 [DEBUG] [Thread-122862] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:25:49.376 [DEBUG] [Thread-122862] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:25:49.377 [DEBUG] [Thread-122862] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:25:49.377 [DEBUG] [Thread-122862] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:25:49.377 [DEBUG] [Thread-122862] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:25:49.377 [DEBUG] [Thread-122862] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:25:49.377 [DEBUG] [Thread-122862] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:25:49.377 [DEBUG] [Thread-122862] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:25:49.377 [DEBUG] [Thread-122862] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:25:49.377 [DEBUG] [Thread-122862] [transport.py] [_log()] client lang: <none>
2025-11-03T21:25:49.378 [DEBUG] [Thread-122862] [transport.py] [_log()] server lang: <none>
2025-11-03T21:25:49.378 [DEBUG] [Thread-122862] [transport.py] [_log()] kex follows: False
2025-11-03T21:25:49.378 [DEBUG] [Thread-122862] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:25:49.378 [DEBUG] [Thread-122862] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:25:49.378 [DEBUG] [Thread-122862] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:25:49.378 [DEBUG] [Thread-122862] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:25:49.378 [DEBUG] [Thread-122862] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:25:49.378 [DEBUG] [Thread-122862] [transport.py] [_log()] Compression: none
2025-11-03T21:25:49.378 [DEBUG] [Thread-122862] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:25:49.433 [DEBUG] [Thread-122862] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:25:49.434 [DEBUG] [Thread-122862] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:25:49.434 [DEBUG] [Thread-122862] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:25:49.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:25:49.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:25:49.490 [DEBUG] [Thread-122862] [transport.py] [_log()] userauth is OK
2025-11-03T21:25:49.490 [DEBUG] [Thread-122862] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:25:49.490 [DEBUG] [Thread-122862] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:25:49.490 [DEBUG] [Thread-122862] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:25:49.491 [DEBUG] [Thread-122862] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:25:49.509 [INFO] [Thread-122862] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:25:49.510 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:25:49.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:25:50.356 [DEBUG] [Thread-122862] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:25:50.356 [DEBUG] [Thread-122862] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:25:50.404 [DEBUG] [Thread-122862] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:25:50.404 [DEBUG] [Thread-122862] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:25:50.413 [DEBUG] [Thread-122862] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:25:50.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:25:50.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:25:50.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:25:50.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:25:50.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:25:50.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:25:50.448 [DEBUG] [Thread-122862] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:25:53.912 [DEBUG] [Thread-122864 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:26:08.950 [DEBUG] [Thread-122865 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:26:20.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:26:20.469 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:26:20.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:26:21.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 25, 50), 32.1, 10.02, 0.0, 18.14, 18.94, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:26:21.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:25:50
2025-11-03T21:26:21.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:26:21.589 [DEBUG] [Thread-122866] [transport.py] [_log()] starting thread (client mode): 0xed41ae0
2025-11-03T21:26:21.590 [DEBUG] [Thread-122866] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:26:21.606 [DEBUG] [Thread-122866] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:26:21.606 [INFO] [Thread-122866] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:26:21.609 [DEBUG] [Thread-122866] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:26:21.609 [DEBUG] [Thread-122866] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:26:21.609 [DEBUG] [Thread-122866] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:26:21.609 [DEBUG] [Thread-122866] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:26:21.609 [DEBUG] [Thread-122866] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:26:21.609 [DEBUG] [Thread-122866] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:26:21.610 [DEBUG] [Thread-122866] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:26:21.610 [DEBUG] [Thread-122866] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:26:21.610 [DEBUG] [Thread-122866] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:26:21.610 [DEBUG] [Thread-122866] [transport.py] [_log()] client lang: <none>
2025-11-03T21:26:21.610 [DEBUG] [Thread-122866] [transport.py] [_log()] server lang: <none>
2025-11-03T21:26:21.610 [DEBUG] [Thread-122866] [transport.py] [_log()] kex follows: False
2025-11-03T21:26:21.610 [DEBUG] [Thread-122866] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:26:21.610 [DEBUG] [Thread-122866] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:26:21.611 [DEBUG] [Thread-122866] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:26:21.611 [DEBUG] [Thread-122866] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:26:21.611 [DEBUG] [Thread-122866] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:26:21.611 [DEBUG] [Thread-122866] [transport.py] [_log()] Compression: none
2025-11-03T21:26:21.611 [DEBUG] [Thread-122866] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:26:21.642 [DEBUG] [Thread-122866] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:26:21.646 [DEBUG] [Thread-122866] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:26:21.648 [DEBUG] [Thread-122866] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:26:21.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:26:21.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:26:21.653 [DEBUG] [Thread-122866] [transport.py] [_log()] userauth is OK
2025-11-03T21:26:21.653 [DEBUG] [Thread-122866] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:26:21.653 [DEBUG] [Thread-122866] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:26:21.653 [DEBUG] [Thread-122866] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:26:21.654 [DEBUG] [Thread-122866] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:26:21.679 [INFO] [Thread-122866] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:26:21.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:26:22.435 [DEBUG] [Thread-122866] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:26:22.444 [DEBUG] [Thread-122866] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:26:22.445 [DEBUG] [Thread-122866] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:26:22.477 [DEBUG] [Thread-122866] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:26:22.477 [DEBUG] [Thread-122866] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:26:22.479 [DEBUG] [Thread-122866] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:26:22.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:26:22.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:26:22.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:26:22.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:26:22.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:26:22.498 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:26:22.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:26:22.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:26:22.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:26:22.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.809475 -999.00  +19.20  19.66     15   -7.30 1 1 1 1 1     0    0 25.70 -64.43 ZNESW 17.8 19.7 303.4 23.9 18.9 -26.5 18.9 -25.4 18.7 -24.9 18.9 -26.1
2025-11-03T21:26:22.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:26:22.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:26:22.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.809475
2025-11-03T21:26:22.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:26:22.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:26:22.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:26:22.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:26:22.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:26:22.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:25:50', tmtdew=32.1, humidity=10.02, cloud=0.0, wind=18.14, temperature=18.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:25:51', seeing=1.41, atlas_timestamp='2025-11-03T19:25:38.640', atlas_cloud=1, atlas_rain=1, zp_data=[0.015750000000000597, 0.03325000000000067, 0.006249999999999645, 0.06949999999999967, 0.01750000000000007, -0.008749999999999147, -0.16500000000000092, -0.05874999999999986, -0.03500000000000014, 0.10299999999999976, 0.12124999999999986, 0.09200000000000053, 0.16999999999999993, 0.0832499999999996, -0.03500000000000014, -0.4270000000000014, -0.004749999999999588, 0.045499999999998764, 0.16299999999999848, 0.10374999999999801, 0.19099999999999895, -0.06225000000000058, -0.0022500000000000853, -1.2512500000000006, 0.0519999999999996, 0.1955000000000009, 0.20974999999999966, 0.1800000000000015, 0.09800000000000075, 0.17100000000000115, 0.10300000000000153, -0.5789999999999988, 0.09975000000000023], zp_timestamp='2025-11-03T19:25:00')
2025-11-03T21:26:22.509 [DEBUG] [Thread-122866] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:26:22.583 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:26:22.596 [DEBUG] [Thread-122869] [transport.py] [_log()] starting thread (client mode): 0x1174f280
2025-11-03T21:26:22.596 [DEBUG] [Thread-122869] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:26:22.613 [DEBUG] [Thread-122869] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:26:22.613 [INFO] [Thread-122869] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:26:22.623 [DEBUG] [Thread-122869] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:26:22.623 [DEBUG] [Thread-122869] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:26:22.623 [DEBUG] [Thread-122869] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:26:22.623 [DEBUG] [Thread-122869] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:26:22.624 [DEBUG] [Thread-122869] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:26:22.624 [DEBUG] [Thread-122869] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:26:22.624 [DEBUG] [Thread-122869] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:26:22.624 [DEBUG] [Thread-122869] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:26:22.624 [DEBUG] [Thread-122869] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:26:22.624 [DEBUG] [Thread-122869] [transport.py] [_log()] client lang: <none>
2025-11-03T21:26:22.624 [DEBUG] [Thread-122869] [transport.py] [_log()] server lang: <none>
2025-11-03T21:26:22.624 [DEBUG] [Thread-122869] [transport.py] [_log()] kex follows: False
2025-11-03T21:26:22.624 [DEBUG] [Thread-122869] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:26:22.625 [DEBUG] [Thread-122869] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:26:22.625 [DEBUG] [Thread-122869] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:26:22.625 [DEBUG] [Thread-122869] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:26:22.625 [DEBUG] [Thread-122869] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:26:22.625 [DEBUG] [Thread-122869] [transport.py] [_log()] Compression: none
2025-11-03T21:26:22.625 [DEBUG] [Thread-122869] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:26:22.685 [DEBUG] [Thread-122869] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:26:22.685 [DEBUG] [Thread-122869] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:26:22.686 [DEBUG] [Thread-122869] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:26:22.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:26:22.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:26:22.743 [DEBUG] [Thread-122869] [transport.py] [_log()] userauth is OK
2025-11-03T21:26:22.744 [DEBUG] [Thread-122869] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:26:22.744 [DEBUG] [Thread-122869] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:26:22.744 [DEBUG] [Thread-122869] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:26:22.744 [DEBUG] [Thread-122869] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:26:22.763 [INFO] [Thread-122869] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:26:22.764 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:26:22.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:26:23.574 [DEBUG] [Thread-122869] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:26:23.574 [DEBUG] [Thread-122869] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:26:23.622 [DEBUG] [Thread-122869] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:26:23.622 [DEBUG] [Thread-122869] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:26:23.630 [DEBUG] [Thread-122869] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:26:23.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:26:23.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:26:23.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:26:23.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:26:23.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:26:23.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:26:23.672 [DEBUG] [Thread-122869] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:26:23.985 [DEBUG] [Thread-122871 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:26:29.359 [DEBUG] [Thread-122872 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:26:39.018 [DEBUG] [Thread-122873 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:26:41.208 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:26:41.209 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:26:53.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:26:53.680 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:26:53.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:26:54.045 [DEBUG] [Thread-122874 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:26:54.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 26, 23), 32.06, 10.05, 0.0, 17.31, 18.97, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:26:54.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:26:23
2025-11-03T21:26:54.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:26:54.723 [DEBUG] [Thread-122875] [transport.py] [_log()] starting thread (client mode): 0x11798250
2025-11-03T21:26:54.723 [DEBUG] [Thread-122875] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:26:54.744 [DEBUG] [Thread-122875] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:26:54.744 [INFO] [Thread-122875] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:26:54.747 [DEBUG] [Thread-122875] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:26:54.747 [DEBUG] [Thread-122875] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:26:54.748 [DEBUG] [Thread-122875] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:26:54.748 [DEBUG] [Thread-122875] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:26:54.748 [DEBUG] [Thread-122875] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:26:54.748 [DEBUG] [Thread-122875] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:26:54.748 [DEBUG] [Thread-122875] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:26:54.748 [DEBUG] [Thread-122875] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:26:54.748 [DEBUG] [Thread-122875] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:26:54.748 [DEBUG] [Thread-122875] [transport.py] [_log()] client lang: <none>
2025-11-03T21:26:54.748 [DEBUG] [Thread-122875] [transport.py] [_log()] server lang: <none>
2025-11-03T21:26:54.748 [DEBUG] [Thread-122875] [transport.py] [_log()] kex follows: False
2025-11-03T21:26:54.748 [DEBUG] [Thread-122875] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:26:54.748 [DEBUG] [Thread-122875] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:26:54.748 [DEBUG] [Thread-122875] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:26:54.748 [DEBUG] [Thread-122875] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:26:54.748 [DEBUG] [Thread-122875] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:26:54.748 [DEBUG] [Thread-122875] [transport.py] [_log()] Compression: none
2025-11-03T21:26:54.748 [DEBUG] [Thread-122875] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:26:54.766 [DEBUG] [Thread-122875] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:26:54.767 [DEBUG] [Thread-122875] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:26:54.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:26:54.768 [DEBUG] [Thread-122875] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:26:54.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:26:54.770 [DEBUG] [Thread-122875] [transport.py] [_log()] userauth is OK
2025-11-03T21:26:54.770 [DEBUG] [Thread-122875] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:26:54.770 [DEBUG] [Thread-122875] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:26:54.770 [DEBUG] [Thread-122875] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:26:54.770 [DEBUG] [Thread-122875] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:26:54.793 [INFO] [Thread-122875] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:26:54.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:26:55.412 [DEBUG] [Thread-122875] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:26:55.412 [DEBUG] [Thread-122875] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:26:55.412 [DEBUG] [Thread-122875] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:26:55.453 [DEBUG] [Thread-122875] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:26:55.453 [DEBUG] [Thread-122875] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:26:55.457 [DEBUG] [Thread-122875] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:26:55.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:26:55.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:26:55.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:26:55.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:26:55.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:26:55.480 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:26:55.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:26:55.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:26:55.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:26:55.481 [DEBUG] [Thread-122875] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:26:55.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.809823 -999.00  +19.20  19.99     15   -7.40 1 1 1 1 1     0    0 25.24 -67.85 ZNESW 19.7 20.0 302.6 21.9 19.0 -26.6 18.9 -25.5 18.7 -25.1 18.9 -26.2
2025-11-03T21:26:55.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:26:55.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:26:55.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.809823
2025-11-03T21:26:55.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:26:55.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:26:55.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:26:55.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:26:55.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:26:55.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:26:23', tmtdew=32.06, humidity=10.05, cloud=0.0, wind=17.31, temperature=18.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:26:23', seeing=1.16, atlas_timestamp='2025-11-03T19:26:08.707', atlas_cloud=1, atlas_rain=1, zp_data=[0.015750000000000597, 0.03325000000000067, 0.006249999999999645, 0.06949999999999967, 0.01750000000000007, -0.008749999999999147, -0.16500000000000092, -0.05874999999999986, -0.03500000000000014, 0.10299999999999976, 0.12124999999999986, 0.09200000000000053, 0.16999999999999993, 0.0832499999999996, -0.03500000000000014, -0.4270000000000014, -0.004749999999999588, 0.045499999999998764, 0.16299999999999848, 0.10374999999999801, 0.19099999999999895, -0.06225000000000058, -0.0022500000000000853, -1.2512500000000006, 0.0519999999999996, 0.1955000000000009, 0.20974999999999966, 0.1800000000000015, 0.09800000000000075, 0.17100000000000115, 0.10300000000000153, -0.5789999999999988, 0.09975000000000023], zp_timestamp='2025-11-03T19:25:00')
2025-11-03T21:26:55.572 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:26:55.585 [DEBUG] [Thread-122878] [transport.py] [_log()] starting thread (client mode): 0xed070d0
2025-11-03T21:26:55.585 [DEBUG] [Thread-122878] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:26:55.601 [DEBUG] [Thread-122878] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:26:55.601 [INFO] [Thread-122878] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:26:55.610 [DEBUG] [Thread-122878] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:26:55.611 [DEBUG] [Thread-122878] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:26:55.611 [DEBUG] [Thread-122878] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:26:55.611 [DEBUG] [Thread-122878] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:26:55.611 [DEBUG] [Thread-122878] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:26:55.611 [DEBUG] [Thread-122878] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:26:55.611 [DEBUG] [Thread-122878] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:26:55.611 [DEBUG] [Thread-122878] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:26:55.611 [DEBUG] [Thread-122878] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:26:55.611 [DEBUG] [Thread-122878] [transport.py] [_log()] client lang: <none>
2025-11-03T21:26:55.611 [DEBUG] [Thread-122878] [transport.py] [_log()] server lang: <none>
2025-11-03T21:26:55.611 [DEBUG] [Thread-122878] [transport.py] [_log()] kex follows: False
2025-11-03T21:26:55.611 [DEBUG] [Thread-122878] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:26:55.611 [DEBUG] [Thread-122878] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:26:55.611 [DEBUG] [Thread-122878] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:26:55.611 [DEBUG] [Thread-122878] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:26:55.611 [DEBUG] [Thread-122878] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:26:55.611 [DEBUG] [Thread-122878] [transport.py] [_log()] Compression: none
2025-11-03T21:26:55.611 [DEBUG] [Thread-122878] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:26:55.668 [DEBUG] [Thread-122878] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:26:55.668 [DEBUG] [Thread-122878] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:26:55.669 [DEBUG] [Thread-122878] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:26:55.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:26:55.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:26:55.724 [DEBUG] [Thread-122878] [transport.py] [_log()] userauth is OK
2025-11-03T21:26:55.725 [DEBUG] [Thread-122878] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:26:55.725 [DEBUG] [Thread-122878] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:26:55.725 [DEBUG] [Thread-122878] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:26:55.725 [DEBUG] [Thread-122878] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:26:55.745 [INFO] [Thread-122878] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:26:55.745 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:26:55.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:26:56.537 [DEBUG] [Thread-122878] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:26:56.537 [DEBUG] [Thread-122878] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:26:56.585 [DEBUG] [Thread-122878] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:26:56.585 [DEBUG] [Thread-122878] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:26:56.593 [DEBUG] [Thread-122878] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:26:56.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:26:56.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:26:56.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:26:56.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:26:56.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:26:56.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:26:56.626 [DEBUG] [Thread-122878] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:27:09.075 [DEBUG] [Thread-122880 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:27:24.131 [DEBUG] [Thread-122881 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:27:26.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:27:26.638 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:27:26.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:27:27.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 26, 55), 32.13, 10.04, 0.0, 17.93, 18.94, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:27:27.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:26:55
2025-11-03T21:27:27.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:27:27.694 [DEBUG] [Thread-122882] [transport.py] [_log()] starting thread (client mode): 0x1174e050
2025-11-03T21:27:27.694 [DEBUG] [Thread-122882] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:27:27.713 [DEBUG] [Thread-122882] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:27:27.713 [INFO] [Thread-122882] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:27:27.716 [DEBUG] [Thread-122882] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:27:27.717 [DEBUG] [Thread-122882] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:27:27.717 [DEBUG] [Thread-122882] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:27:27.717 [DEBUG] [Thread-122882] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:27:27.717 [DEBUG] [Thread-122882] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:27:27.717 [DEBUG] [Thread-122882] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:27:27.717 [DEBUG] [Thread-122882] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:27:27.717 [DEBUG] [Thread-122882] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:27:27.717 [DEBUG] [Thread-122882] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:27:27.717 [DEBUG] [Thread-122882] [transport.py] [_log()] client lang: <none>
2025-11-03T21:27:27.717 [DEBUG] [Thread-122882] [transport.py] [_log()] server lang: <none>
2025-11-03T21:27:27.717 [DEBUG] [Thread-122882] [transport.py] [_log()] kex follows: False
2025-11-03T21:27:27.717 [DEBUG] [Thread-122882] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:27:27.717 [DEBUG] [Thread-122882] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:27:27.718 [DEBUG] [Thread-122882] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:27:27.718 [DEBUG] [Thread-122882] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:27:27.718 [DEBUG] [Thread-122882] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:27:27.718 [DEBUG] [Thread-122882] [transport.py] [_log()] Compression: none
2025-11-03T21:27:27.718 [DEBUG] [Thread-122882] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:27:27.736 [DEBUG] [Thread-122882] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:27:27.737 [DEBUG] [Thread-122882] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:27:27.738 [DEBUG] [Thread-122882] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:27:27.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:27:27.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:27:27.740 [DEBUG] [Thread-122882] [transport.py] [_log()] userauth is OK
2025-11-03T21:27:27.740 [DEBUG] [Thread-122882] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:27:27.740 [DEBUG] [Thread-122882] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:27:27.740 [DEBUG] [Thread-122882] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:27:27.741 [DEBUG] [Thread-122882] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:27:27.763 [INFO] [Thread-122882] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:27:27.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:27:28.517 [DEBUG] [Thread-122882] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:27:28.517 [DEBUG] [Thread-122882] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:27:28.517 [DEBUG] [Thread-122882] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:27:28.557 [DEBUG] [Thread-122882] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:27:28.557 [DEBUG] [Thread-122882] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:27:28.559 [DEBUG] [Thread-122882] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:27:28.566 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:27:28.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:27:28.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:27:28.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:27:28.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:27:28.572 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:27:28.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:27:28.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:27:28.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:27:28.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.810170 -999.00  +19.20  20.53     15   -7.50 1 1 1 1 1     0    0 25.61 -63.66 ZNESW 20.5 20.5 305.8 24.1 19.0 -26.6 18.9 -25.5 18.7 -25.2 18.9 -26.0
2025-11-03T21:27:28.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:27:28.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:27:28.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.810170
2025-11-03T21:27:28.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:27:28.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:27:28.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:27:28.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:27:28.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:27:28.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:26:55', tmtdew=32.13, humidity=10.04, cloud=0.0, wind=17.93, temperature=18.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:26:56', seeing=1.19, atlas_timestamp='2025-11-03T19:26:38.688', atlas_cloud=1, atlas_rain=1, zp_data=[0.015750000000000597, 0.03325000000000067, 0.006249999999999645, 0.06949999999999967, 0.01750000000000007, -0.008749999999999147, -0.16500000000000092, -0.05874999999999986, -0.03500000000000014, 0.10299999999999976, 0.12124999999999986, 0.09200000000000053, 0.16999999999999993, 0.0832499999999996, -0.03500000000000014, -0.4270000000000014, -0.004749999999999588, 0.045499999999998764, 0.16299999999999848, 0.10374999999999801, 0.19099999999999895, -0.06225000000000058, -0.0022500000000000853, -1.2512500000000006, 0.0519999999999996, 0.1955000000000009, 0.20974999999999966, 0.1800000000000015, 0.09800000000000075, 0.17100000000000115, 0.10300000000000153, -0.5789999999999988, 0.09975000000000023], zp_timestamp='2025-11-03T19:25:00')
2025-11-03T21:27:28.573 [DEBUG] [Thread-122882] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:27:28.649 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:27:28.661 [DEBUG] [Thread-122885] [transport.py] [_log()] starting thread (client mode): 0x1174cd00
2025-11-03T21:27:28.661 [DEBUG] [Thread-122885] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:27:28.676 [DEBUG] [Thread-122885] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:27:28.676 [INFO] [Thread-122885] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:27:28.684 [DEBUG] [Thread-122885] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:27:28.684 [DEBUG] [Thread-122885] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:27:28.684 [DEBUG] [Thread-122885] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:27:28.684 [DEBUG] [Thread-122885] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:27:28.684 [DEBUG] [Thread-122885] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:27:28.684 [DEBUG] [Thread-122885] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:27:28.684 [DEBUG] [Thread-122885] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:27:28.684 [DEBUG] [Thread-122885] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:27:28.684 [DEBUG] [Thread-122885] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:27:28.684 [DEBUG] [Thread-122885] [transport.py] [_log()] client lang: <none>
2025-11-03T21:27:28.684 [DEBUG] [Thread-122885] [transport.py] [_log()] server lang: <none>
2025-11-03T21:27:28.684 [DEBUG] [Thread-122885] [transport.py] [_log()] kex follows: False
2025-11-03T21:27:28.684 [DEBUG] [Thread-122885] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:27:28.684 [DEBUG] [Thread-122885] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:27:28.684 [DEBUG] [Thread-122885] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:27:28.684 [DEBUG] [Thread-122885] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:27:28.684 [DEBUG] [Thread-122885] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:27:28.684 [DEBUG] [Thread-122885] [transport.py] [_log()] Compression: none
2025-11-03T21:27:28.684 [DEBUG] [Thread-122885] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:27:28.746 [DEBUG] [Thread-122885] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:27:28.746 [DEBUG] [Thread-122885] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:27:28.746 [DEBUG] [Thread-122885] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:27:28.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:27:28.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:27:28.805 [DEBUG] [Thread-122885] [transport.py] [_log()] userauth is OK
2025-11-03T21:27:28.805 [DEBUG] [Thread-122885] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:27:28.805 [DEBUG] [Thread-122885] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:27:28.805 [DEBUG] [Thread-122885] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:27:28.805 [DEBUG] [Thread-122885] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:27:28.820 [INFO] [Thread-122885] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:27:28.820 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:27:28.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:27:29.621 [DEBUG] [Thread-122887 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:27:29.693 [DEBUG] [Thread-122885] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:27:29.693 [DEBUG] [Thread-122885] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:27:29.740 [DEBUG] [Thread-122885] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:27:29.740 [DEBUG] [Thread-122885] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:27:29.749 [DEBUG] [Thread-122885] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:27:29.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:27:29.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:27:29.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:27:29.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:27:29.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:27:29.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:27:29.781 [DEBUG] [Thread-122885] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:27:39.165 [DEBUG] [Thread-122888 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:27:41.420 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:27:41.421 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:27:54.227 [DEBUG] [Thread-122889 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:27:59.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:27:59.803 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:27:59.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:28:00.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 27, 28), 32.05, 10.1, 0.0, 17.82, 18.97, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:28:00.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:27:28
2025-11-03T21:28:00.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:28:00.816 [DEBUG] [Thread-122890] [transport.py] [_log()] starting thread (client mode): 0xedc6b00
2025-11-03T21:28:00.817 [DEBUG] [Thread-122890] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:28:00.837 [DEBUG] [Thread-122890] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:28:00.837 [INFO] [Thread-122890] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:28:00.840 [DEBUG] [Thread-122890] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:28:00.840 [DEBUG] [Thread-122890] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:28:00.840 [DEBUG] [Thread-122890] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:28:00.840 [DEBUG] [Thread-122890] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:28:00.841 [DEBUG] [Thread-122890] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:28:00.841 [DEBUG] [Thread-122890] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:28:00.841 [DEBUG] [Thread-122890] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:28:00.841 [DEBUG] [Thread-122890] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:28:00.841 [DEBUG] [Thread-122890] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:28:00.841 [DEBUG] [Thread-122890] [transport.py] [_log()] client lang: <none>
2025-11-03T21:28:00.841 [DEBUG] [Thread-122890] [transport.py] [_log()] server lang: <none>
2025-11-03T21:28:00.841 [DEBUG] [Thread-122890] [transport.py] [_log()] kex follows: False
2025-11-03T21:28:00.841 [DEBUG] [Thread-122890] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:28:00.842 [DEBUG] [Thread-122890] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:28:00.842 [DEBUG] [Thread-122890] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:28:00.842 [DEBUG] [Thread-122890] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:28:00.842 [DEBUG] [Thread-122890] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:28:00.842 [DEBUG] [Thread-122890] [transport.py] [_log()] Compression: none
2025-11-03T21:28:00.842 [DEBUG] [Thread-122890] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:28:00.852 [DEBUG] [Thread-122890] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:28:00.852 [DEBUG] [Thread-122890] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:28:00.853 [DEBUG] [Thread-122890] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:28:00.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:28:00.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:28:00.854 [DEBUG] [Thread-122890] [transport.py] [_log()] userauth is OK
2025-11-03T21:28:00.855 [DEBUG] [Thread-122890] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:28:00.855 [DEBUG] [Thread-122890] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:28:00.855 [DEBUG] [Thread-122890] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:28:00.855 [DEBUG] [Thread-122890] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:28:00.872 [INFO] [Thread-122890] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:28:00.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:28:01.518 [DEBUG] [Thread-122890] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:28:01.518 [DEBUG] [Thread-122890] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:28:01.518 [DEBUG] [Thread-122890] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:28:01.560 [DEBUG] [Thread-122890] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:28:01.560 [DEBUG] [Thread-122890] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:28:01.562 [DEBUG] [Thread-122890] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:28:01.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:28:01.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:28:01.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:28:01.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:28:01.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:28:01.579 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:28:01.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:28:01.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:28:01.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:28:01.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.810517 -999.00  +19.20  19.68     15   -7.40 1 1 1 1 1     0    0 25.15 -67.74 ZNESW 19.0 19.7 304.2 25.1 19.0 -26.2 18.9 -25.5 18.8 -25.2 19.0 -26.1
2025-11-03T21:28:01.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:28:01.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:28:01.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.810517
2025-11-03T21:28:01.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:28:01.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:28:01.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:28:01.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:28:01.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:28:01.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:27:28', tmtdew=32.05, humidity=10.1, cloud=0.0, wind=17.82, temperature=18.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:27:28', seeing=1.19, atlas_timestamp='2025-11-03T19:27:08.669', atlas_cloud=1, atlas_rain=1, zp_data=[0.015750000000000597, 0.03325000000000067, 0.006249999999999645, 0.06949999999999967, 0.01750000000000007, -0.008749999999999147, -0.16500000000000092, -0.05874999999999986, -0.03500000000000014, 0.10299999999999976, 0.12124999999999986, 0.09200000000000053, 0.16999999999999993, 0.0832499999999996, -0.03500000000000014, -0.4270000000000014, -0.004749999999999588, 0.045499999999998764, 0.16299999999999848, 0.10374999999999801, 0.19099999999999895, -0.06225000000000058, -0.0022500000000000853, -1.2512500000000006, 0.0519999999999996, 0.1955000000000009, 0.20974999999999966, 0.1800000000000015, 0.09800000000000075, 0.17100000000000115, 0.10300000000000153, -0.5789999999999988, 0.09975000000000023], zp_timestamp='2025-11-03T19:25:00')
2025-11-03T21:28:01.580 [DEBUG] [Thread-122890] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:28:01.655 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:28:01.670 [DEBUG] [Thread-122893] [transport.py] [_log()] starting thread (client mode): 0xed04eb0
2025-11-03T21:28:01.670 [DEBUG] [Thread-122893] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:28:01.691 [DEBUG] [Thread-122893] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:28:01.691 [INFO] [Thread-122893] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:28:01.701 [DEBUG] [Thread-122893] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:28:01.701 [DEBUG] [Thread-122893] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:28:01.702 [DEBUG] [Thread-122893] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:28:01.702 [DEBUG] [Thread-122893] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:28:01.702 [DEBUG] [Thread-122893] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:28:01.702 [DEBUG] [Thread-122893] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:28:01.702 [DEBUG] [Thread-122893] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:28:01.702 [DEBUG] [Thread-122893] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:28:01.702 [DEBUG] [Thread-122893] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:28:01.702 [DEBUG] [Thread-122893] [transport.py] [_log()] client lang: <none>
2025-11-03T21:28:01.702 [DEBUG] [Thread-122893] [transport.py] [_log()] server lang: <none>
2025-11-03T21:28:01.702 [DEBUG] [Thread-122893] [transport.py] [_log()] kex follows: False
2025-11-03T21:28:01.702 [DEBUG] [Thread-122893] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:28:01.702 [DEBUG] [Thread-122893] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:28:01.702 [DEBUG] [Thread-122893] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:28:01.702 [DEBUG] [Thread-122893] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:28:01.702 [DEBUG] [Thread-122893] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:28:01.702 [DEBUG] [Thread-122893] [transport.py] [_log()] Compression: none
2025-11-03T21:28:01.702 [DEBUG] [Thread-122893] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:28:01.761 [DEBUG] [Thread-122893] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:28:01.761 [DEBUG] [Thread-122893] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:28:01.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:28:01.761 [DEBUG] [Thread-122893] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:28:01.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:28:01.821 [DEBUG] [Thread-122893] [transport.py] [_log()] userauth is OK
2025-11-03T21:28:01.821 [DEBUG] [Thread-122893] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:28:01.821 [DEBUG] [Thread-122893] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:28:01.821 [DEBUG] [Thread-122893] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:28:01.821 [DEBUG] [Thread-122893] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:28:01.837 [INFO] [Thread-122893] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:28:01.837 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:28:01.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:28:02.722 [DEBUG] [Thread-122893] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:28:02.722 [DEBUG] [Thread-122893] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:28:02.772 [DEBUG] [Thread-122893] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:28:02.772 [DEBUG] [Thread-122893] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:28:02.782 [DEBUG] [Thread-122893] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:28:02.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:28:02.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:28:02.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:28:02.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:28:02.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:28:02.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:28:02.825 [DEBUG] [Thread-122893] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:28:09.265 [DEBUG] [Thread-122895 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:28:24.318 [DEBUG] [Thread-122896 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:28:29.696 [DEBUG] [Thread-122897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:28:32.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:28:32.843 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:28:32.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:28:33.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 28), 32.11, 10.05, 0.0, 19.44, 18.89, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:28:33.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:28:00
2025-11-03T21:28:33.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:28:33.952 [DEBUG] [Thread-122898] [transport.py] [_log()] starting thread (client mode): 0xedc5090
2025-11-03T21:28:33.952 [DEBUG] [Thread-122898] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:28:33.974 [DEBUG] [Thread-122898] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:28:33.974 [INFO] [Thread-122898] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:28:33.978 [DEBUG] [Thread-122898] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:28:33.978 [DEBUG] [Thread-122898] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:28:33.978 [DEBUG] [Thread-122898] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:28:33.978 [DEBUG] [Thread-122898] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:28:33.978 [DEBUG] [Thread-122898] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:28:33.978 [DEBUG] [Thread-122898] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:28:33.978 [DEBUG] [Thread-122898] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:28:33.978 [DEBUG] [Thread-122898] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:28:33.978 [DEBUG] [Thread-122898] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:28:33.978 [DEBUG] [Thread-122898] [transport.py] [_log()] client lang: <none>
2025-11-03T21:28:33.978 [DEBUG] [Thread-122898] [transport.py] [_log()] server lang: <none>
2025-11-03T21:28:33.978 [DEBUG] [Thread-122898] [transport.py] [_log()] kex follows: False
2025-11-03T21:28:33.978 [DEBUG] [Thread-122898] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:28:33.978 [DEBUG] [Thread-122898] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:28:33.979 [DEBUG] [Thread-122898] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:28:33.979 [DEBUG] [Thread-122898] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:28:33.979 [DEBUG] [Thread-122898] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:28:33.979 [DEBUG] [Thread-122898] [transport.py] [_log()] Compression: none
2025-11-03T21:28:33.979 [DEBUG] [Thread-122898] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:28:33.995 [DEBUG] [Thread-122898] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:28:33.995 [DEBUG] [Thread-122898] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:28:33.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:28:33.996 [DEBUG] [Thread-122898] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:28:33.996 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:28:33.996 [DEBUG] [Thread-122898] [transport.py] [_log()] userauth is OK
2025-11-03T21:28:33.996 [DEBUG] [Thread-122898] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:28:33.996 [DEBUG] [Thread-122898] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:28:33.996 [DEBUG] [Thread-122898] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:28:33.996 [DEBUG] [Thread-122898] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:28:34.015 [INFO] [Thread-122898] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:28:34.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:28:34.764 [DEBUG] [Thread-122898] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:28:34.764 [DEBUG] [Thread-122898] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:28:34.764 [DEBUG] [Thread-122898] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:28:34.804 [DEBUG] [Thread-122898] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:28:34.805 [DEBUG] [Thread-122898] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:28:34.806 [DEBUG] [Thread-122898] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:28:34.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:28:34.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:28:34.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:28:34.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:28:34.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:28:34.823 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:28:34.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:28:34.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:28:34.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:28:34.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.811211 -999.00  +19.20  19.74     15   -7.60 1 1 1 1 1     0    0 24.98 -75.07 ZNESW 16.1 19.7 296.8 23.6 19.0 -26.4 19.0 -25.5 18.8 -25.2 19.0 -26.2
2025-11-03T21:28:34.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:28:34.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:28:34.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.811211
2025-11-03T21:28:34.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:28:34.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:28:34.824 [DEBUG] [Thread-122898] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:28:34.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:28:34.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:28:34.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:28:34.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:28:00', tmtdew=32.11, humidity=10.05, cloud=0.0, wind=19.44, temperature=18.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:28:01', seeing=1.28, atlas_timestamp='2025-11-03T19:28:08.630', atlas_cloud=1, atlas_rain=1, zp_data=[0.015750000000000597, 0.03325000000000067, 0.006249999999999645, 0.06949999999999967, 0.01750000000000007, -0.008749999999999147, -0.16500000000000092, -0.05874999999999986, -0.03500000000000014, 0.10299999999999976, 0.12124999999999986, 0.09200000000000053, 0.16999999999999993, 0.0832499999999996, -0.03500000000000014, -0.4270000000000014, -0.004749999999999588, 0.045499999999998764, 0.16299999999999848, 0.10374999999999801, 0.19099999999999895, -0.06225000000000058, -0.0022500000000000853, -1.2512500000000006, 0.0519999999999996, 0.1955000000000009, 0.20974999999999966, 0.1800000000000015, 0.09800000000000075, 0.17100000000000115, 0.10300000000000153, -0.5789999999999988, 0.09975000000000023], zp_timestamp='2025-11-03T19:25:00')
2025-11-03T21:28:34.901 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:28:34.913 [DEBUG] [Thread-122901] [transport.py] [_log()] starting thread (client mode): 0x117608e0
2025-11-03T21:28:34.914 [DEBUG] [Thread-122901] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:28:34.929 [DEBUG] [Thread-122901] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:28:34.930 [INFO] [Thread-122901] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:28:34.938 [DEBUG] [Thread-122901] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:28:34.938 [DEBUG] [Thread-122901] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:28:34.938 [DEBUG] [Thread-122901] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:28:34.938 [DEBUG] [Thread-122901] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:28:34.938 [DEBUG] [Thread-122901] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:28:34.938 [DEBUG] [Thread-122901] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:28:34.938 [DEBUG] [Thread-122901] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:28:34.938 [DEBUG] [Thread-122901] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:28:34.938 [DEBUG] [Thread-122901] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:28:34.938 [DEBUG] [Thread-122901] [transport.py] [_log()] client lang: <none>
2025-11-03T21:28:34.938 [DEBUG] [Thread-122901] [transport.py] [_log()] server lang: <none>
2025-11-03T21:28:34.938 [DEBUG] [Thread-122901] [transport.py] [_log()] kex follows: False
2025-11-03T21:28:34.938 [DEBUG] [Thread-122901] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:28:34.938 [DEBUG] [Thread-122901] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:28:34.938 [DEBUG] [Thread-122901] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:28:34.938 [DEBUG] [Thread-122901] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:28:34.938 [DEBUG] [Thread-122901] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:28:34.938 [DEBUG] [Thread-122901] [transport.py] [_log()] Compression: none
2025-11-03T21:28:34.939 [DEBUG] [Thread-122901] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:28:34.997 [DEBUG] [Thread-122901] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:28:34.998 [DEBUG] [Thread-122901] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:28:34.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:28:34.998 [DEBUG] [Thread-122901] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:28:34.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:28:35.058 [DEBUG] [Thread-122901] [transport.py] [_log()] userauth is OK
2025-11-03T21:28:35.058 [DEBUG] [Thread-122901] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:28:35.058 [DEBUG] [Thread-122901] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:28:35.058 [DEBUG] [Thread-122901] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:28:35.058 [DEBUG] [Thread-122901] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:28:35.072 [INFO] [Thread-122901] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:28:35.073 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:28:35.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:28:35.945 [DEBUG] [Thread-122901] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:28:35.945 [DEBUG] [Thread-122901] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:28:35.996 [DEBUG] [Thread-122901] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:28:35.996 [DEBUG] [Thread-122901] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:28:36.006 [DEBUG] [Thread-122901] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:28:36.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:28:36.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:28:36.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:28:36.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:28:36.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:28:36.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:28:36.051 [DEBUG] [Thread-122901] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:28:39.349 [DEBUG] [Thread-122903 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:28:41.676 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:28:41.677 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:28:54.408 [DEBUG] [Thread-122904 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:29:06.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:29:06.054 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:29:06.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:29:06.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 28, 32), 32.07, 10.04, 0.0, 16.62, 18.88, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:29:06.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:28:32
2025-11-03T21:29:06.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:29:07.085 [DEBUG] [Thread-122905] [transport.py] [_log()] starting thread (client mode): 0xed400d0
2025-11-03T21:29:07.085 [DEBUG] [Thread-122905] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:29:07.096 [DEBUG] [Thread-122905] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:29:07.096 [INFO] [Thread-122905] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:29:07.099 [DEBUG] [Thread-122905] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:29:07.099 [DEBUG] [Thread-122905] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:29:07.099 [DEBUG] [Thread-122905] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:29:07.099 [DEBUG] [Thread-122905] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:29:07.099 [DEBUG] [Thread-122905] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:29:07.099 [DEBUG] [Thread-122905] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:29:07.099 [DEBUG] [Thread-122905] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:29:07.099 [DEBUG] [Thread-122905] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:29:07.099 [DEBUG] [Thread-122905] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:29:07.099 [DEBUG] [Thread-122905] [transport.py] [_log()] client lang: <none>
2025-11-03T21:29:07.100 [DEBUG] [Thread-122905] [transport.py] [_log()] server lang: <none>
2025-11-03T21:29:07.100 [DEBUG] [Thread-122905] [transport.py] [_log()] kex follows: False
2025-11-03T21:29:07.100 [DEBUG] [Thread-122905] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:29:07.100 [DEBUG] [Thread-122905] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:29:07.100 [DEBUG] [Thread-122905] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:29:07.100 [DEBUG] [Thread-122905] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:29:07.100 [DEBUG] [Thread-122905] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:29:07.100 [DEBUG] [Thread-122905] [transport.py] [_log()] Compression: none
2025-11-03T21:29:07.100 [DEBUG] [Thread-122905] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:29:07.117 [DEBUG] [Thread-122905] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:29:07.118 [DEBUG] [Thread-122905] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:29:07.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:29:07.119 [DEBUG] [Thread-122905] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:29:07.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:29:07.121 [DEBUG] [Thread-122905] [transport.py] [_log()] userauth is OK
2025-11-03T21:29:07.121 [DEBUG] [Thread-122905] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:29:07.122 [DEBUG] [Thread-122905] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:29:07.122 [DEBUG] [Thread-122905] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:29:07.122 [DEBUG] [Thread-122905] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:29:07.144 [INFO] [Thread-122905] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:29:07.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:29:07.765 [DEBUG] [Thread-122905] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:29:07.765 [DEBUG] [Thread-122905] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:29:07.765 [DEBUG] [Thread-122905] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:29:07.806 [DEBUG] [Thread-122905] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:29:07.806 [DEBUG] [Thread-122905] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:29:07.808 [DEBUG] [Thread-122905] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:29:07.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:29:07.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:29:07.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:29:07.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:29:07.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:29:07.825 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:29:07.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:29:07.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:29:07.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:29:07.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.811559 -999.00  +19.10  20.86     15   -7.80 1 1 1 1 1     0    0 24.72 -70.49 ZNESW 17.7 20.9 302.6 23.2 19.1 -26.6 18.9 -25.4 18.7 -25.4 19.0 -26.2
2025-11-03T21:29:07.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:29:07.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:29:07.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.811559
2025-11-03T21:29:07.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:29:07.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:29:07.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:29:07.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:29:07.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:29:07.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:28:32', tmtdew=32.07, humidity=10.04, cloud=0.0, wind=16.62, temperature=18.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:28:33', seeing=1.24, atlas_timestamp='2025-11-03T19:28:38.698', atlas_cloud=1, atlas_rain=1, zp_data=[0.015750000000000597, 0.03325000000000067, 0.006249999999999645, 0.06949999999999967, 0.01750000000000007, -0.008749999999999147, -0.16500000000000092, -0.05874999999999986, -0.03500000000000014, 0.10299999999999976, 0.12124999999999986, 0.09200000000000053, 0.16999999999999993, 0.0832499999999996, -0.03500000000000014, -0.4270000000000014, -0.004749999999999588, 0.045499999999998764, 0.16299999999999848, 0.10374999999999801, 0.19099999999999895, -0.06225000000000058, -0.0022500000000000853, -1.2512500000000006, 0.0519999999999996, 0.1955000000000009, 0.20974999999999966, 0.1800000000000015, 0.09800000000000075, 0.17100000000000115, 0.10300000000000153, -0.5789999999999988, 0.09975000000000023], zp_timestamp='2025-11-03T19:25:00')
2025-11-03T21:29:07.826 [DEBUG] [Thread-122905] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:29:07.899 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:29:07.910 [DEBUG] [Thread-122908] [transport.py] [_log()] starting thread (client mode): 0x117eb4c0
2025-11-03T21:29:07.910 [DEBUG] [Thread-122908] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:29:07.925 [DEBUG] [Thread-122908] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:29:07.925 [INFO] [Thread-122908] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:29:07.932 [DEBUG] [Thread-122908] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:29:07.932 [DEBUG] [Thread-122908] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:29:07.932 [DEBUG] [Thread-122908] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:29:07.933 [DEBUG] [Thread-122908] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:29:07.933 [DEBUG] [Thread-122908] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:29:07.933 [DEBUG] [Thread-122908] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:29:07.933 [DEBUG] [Thread-122908] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:29:07.933 [DEBUG] [Thread-122908] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:29:07.933 [DEBUG] [Thread-122908] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:29:07.933 [DEBUG] [Thread-122908] [transport.py] [_log()] client lang: <none>
2025-11-03T21:29:07.933 [DEBUG] [Thread-122908] [transport.py] [_log()] server lang: <none>
2025-11-03T21:29:07.933 [DEBUG] [Thread-122908] [transport.py] [_log()] kex follows: False
2025-11-03T21:29:07.933 [DEBUG] [Thread-122908] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:29:07.933 [DEBUG] [Thread-122908] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:29:07.933 [DEBUG] [Thread-122908] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:29:07.933 [DEBUG] [Thread-122908] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:29:07.933 [DEBUG] [Thread-122908] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:29:07.934 [DEBUG] [Thread-122908] [transport.py] [_log()] Compression: none
2025-11-03T21:29:07.934 [DEBUG] [Thread-122908] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:29:07.991 [DEBUG] [Thread-122908] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:29:07.991 [DEBUG] [Thread-122908] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:29:07.991 [DEBUG] [Thread-122908] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:29:07.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:29:07.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:29:08.052 [DEBUG] [Thread-122908] [transport.py] [_log()] userauth is OK
2025-11-03T21:29:08.052 [DEBUG] [Thread-122908] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:29:08.052 [DEBUG] [Thread-122908] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:29:08.052 [DEBUG] [Thread-122908] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:29:08.052 [DEBUG] [Thread-122908] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:29:08.066 [INFO] [Thread-122908] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:29:08.066 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:29:08.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:29:08.932 [DEBUG] [Thread-122908] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:29:08.932 [DEBUG] [Thread-122908] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:29:08.979 [DEBUG] [Thread-122908] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:29:08.980 [DEBUG] [Thread-122908] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:29:08.988 [DEBUG] [Thread-122908] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:29:08.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:29:08.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:29:09.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:29:09.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:29:09.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:29:09.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:29:09.022 [DEBUG] [Thread-122908] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:29:09.437 [DEBUG] [Thread-122910 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:29:24.473 [DEBUG] [Thread-122911 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:29:30.034 [DEBUG] [Thread-122912 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:29:39.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:29:39.055 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:29:39.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:29:39.517 [DEBUG] [Thread-122913 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:29:39.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 29, 7), 32.04, 10.05, 0.0, 16.39, 18.84, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:29:39.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:29:07
2025-11-03T21:29:39.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:29:40.140 [DEBUG] [Thread-122914] [transport.py] [_log()] starting thread (client mode): 0x117e9f00
2025-11-03T21:29:40.140 [DEBUG] [Thread-122914] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:29:40.161 [DEBUG] [Thread-122914] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:29:40.161 [INFO] [Thread-122914] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:29:40.164 [DEBUG] [Thread-122914] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:29:40.165 [DEBUG] [Thread-122914] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:29:40.165 [DEBUG] [Thread-122914] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:29:40.165 [DEBUG] [Thread-122914] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:29:40.165 [DEBUG] [Thread-122914] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:29:40.165 [DEBUG] [Thread-122914] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:29:40.165 [DEBUG] [Thread-122914] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:29:40.166 [DEBUG] [Thread-122914] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:29:40.166 [DEBUG] [Thread-122914] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:29:40.166 [DEBUG] [Thread-122914] [transport.py] [_log()] client lang: <none>
2025-11-03T21:29:40.166 [DEBUG] [Thread-122914] [transport.py] [_log()] server lang: <none>
2025-11-03T21:29:40.166 [DEBUG] [Thread-122914] [transport.py] [_log()] kex follows: False
2025-11-03T21:29:40.166 [DEBUG] [Thread-122914] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:29:40.166 [DEBUG] [Thread-122914] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:29:40.166 [DEBUG] [Thread-122914] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:29:40.166 [DEBUG] [Thread-122914] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:29:40.167 [DEBUG] [Thread-122914] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:29:40.167 [DEBUG] [Thread-122914] [transport.py] [_log()] Compression: none
2025-11-03T21:29:40.167 [DEBUG] [Thread-122914] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:29:40.192 [DEBUG] [Thread-122914] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:29:40.193 [DEBUG] [Thread-122914] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:29:40.194 [DEBUG] [Thread-122914] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:29:40.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:29:40.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:29:40.196 [DEBUG] [Thread-122914] [transport.py] [_log()] userauth is OK
2025-11-03T21:29:40.196 [DEBUG] [Thread-122914] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:29:40.196 [DEBUG] [Thread-122914] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:29:40.196 [DEBUG] [Thread-122914] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:29:40.196 [DEBUG] [Thread-122914] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:29:40.216 [INFO] [Thread-122914] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:29:40.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:29:40.935 [DEBUG] [Thread-122914] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:29:40.935 [DEBUG] [Thread-122914] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:29:40.935 [DEBUG] [Thread-122914] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:29:40.975 [DEBUG] [Thread-122914] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:29:40.975 [DEBUG] [Thread-122914] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:29:40.978 [DEBUG] [Thread-122914] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:29:40.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:29:40.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:29:40.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:29:40.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:29:40.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:29:40.995 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:29:40.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:29:40.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:29:40.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:29:40.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.811906 -999.00  +19.00  16.23     15   -7.90 1 1 1 1 1     0    0 24.96 -72.20 ZNESW 13.9 16.2 309.2 20.4 19.1 -26.6 18.9 -25.6 18.7 -25.2 19.0 -26.1
2025-11-03T21:29:40.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:29:40.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:29:40.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.811906
2025-11-03T21:29:40.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:29:40.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:29:40.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:29:40.999 [DEBUG] [Thread-122914] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:29:40.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:29:40.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:29:40.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:29:07', tmtdew=32.04, humidity=10.05, cloud=0.0, wind=16.39, temperature=18.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:29:07', seeing=1.24, atlas_timestamp='2025-11-03T19:29:08.678', atlas_cloud=1, atlas_rain=1, zp_data=[0.015750000000000597, 0.03325000000000067, 0.006249999999999645, 0.06949999999999967, 0.01750000000000007, -0.008749999999999147, -0.16500000000000092, -0.05874999999999986, -0.03500000000000014, 0.10299999999999976, 0.12124999999999986, 0.09200000000000053, 0.16999999999999993, 0.0832499999999996, -0.03500000000000014, -0.4270000000000014, -0.004749999999999588, 0.045499999999998764, 0.16299999999999848, 0.10374999999999801, 0.19099999999999895, -0.06225000000000058, -0.0022500000000000853, -1.2512500000000006, 0.0519999999999996, 0.1955000000000009, 0.20974999999999966, 0.1800000000000015, 0.09800000000000075, 0.17100000000000115, 0.10300000000000153, -0.5789999999999988, 0.09975000000000023], zp_timestamp='2025-11-03T19:28:00')
2025-11-03T21:29:41.074 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:29:41.087 [DEBUG] [Thread-122917] [transport.py] [_log()] starting thread (client mode): 0x117999f0
2025-11-03T21:29:41.087 [DEBUG] [Thread-122917] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:29:41.102 [DEBUG] [Thread-122917] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:29:41.102 [INFO] [Thread-122917] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:29:41.109 [DEBUG] [Thread-122917] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:29:41.109 [DEBUG] [Thread-122917] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:29:41.110 [DEBUG] [Thread-122917] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:29:41.110 [DEBUG] [Thread-122917] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:29:41.110 [DEBUG] [Thread-122917] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:29:41.110 [DEBUG] [Thread-122917] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:29:41.110 [DEBUG] [Thread-122917] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:29:41.110 [DEBUG] [Thread-122917] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:29:41.110 [DEBUG] [Thread-122917] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:29:41.110 [DEBUG] [Thread-122917] [transport.py] [_log()] client lang: <none>
2025-11-03T21:29:41.110 [DEBUG] [Thread-122917] [transport.py] [_log()] server lang: <none>
2025-11-03T21:29:41.110 [DEBUG] [Thread-122917] [transport.py] [_log()] kex follows: False
2025-11-03T21:29:41.110 [DEBUG] [Thread-122917] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:29:41.110 [DEBUG] [Thread-122917] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:29:41.110 [DEBUG] [Thread-122917] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:29:41.110 [DEBUG] [Thread-122917] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:29:41.110 [DEBUG] [Thread-122917] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:29:41.110 [DEBUG] [Thread-122917] [transport.py] [_log()] Compression: none
2025-11-03T21:29:41.110 [DEBUG] [Thread-122917] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:29:41.168 [DEBUG] [Thread-122917] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:29:41.168 [DEBUG] [Thread-122917] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:29:41.168 [DEBUG] [Thread-122917] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:29:41.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:29:41.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:29:41.225 [DEBUG] [Thread-122917] [transport.py] [_log()] userauth is OK
2025-11-03T21:29:41.225 [DEBUG] [Thread-122917] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:29:41.225 [DEBUG] [Thread-122917] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:29:41.225 [DEBUG] [Thread-122917] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:29:41.225 [DEBUG] [Thread-122917] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:29:41.240 [INFO] [Thread-122917] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:29:41.240 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:29:41.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:29:41.884 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:29:41.887 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:29:42.059 [DEBUG] [Thread-122917] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:29:42.060 [DEBUG] [Thread-122917] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:29:42.115 [DEBUG] [Thread-122917] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:29:42.116 [DEBUG] [Thread-122917] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:29:42.134 [DEBUG] [Thread-122917] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:29:42.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:29:42.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:29:42.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:29:42.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:29:42.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:29:42.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:29:42.207 [DEBUG] [Thread-122917] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:29:54.544 [DEBUG] [Thread-122919 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:30:09.586 [DEBUG] [Thread-122920 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:30:12.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:30:12.223 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:30:12.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:30:13.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 29, 39), 32.29, 10.07, 0.0, 18.32, 18.84, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:30:13.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:29:39
2025-11-03T21:30:13.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:30:13.327 [DEBUG] [Thread-122921] [transport.py] [_log()] starting thread (client mode): 0xedc7670
2025-11-03T21:30:13.327 [DEBUG] [Thread-122921] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:30:13.349 [DEBUG] [Thread-122921] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:30:13.349 [INFO] [Thread-122921] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:30:13.353 [DEBUG] [Thread-122921] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:30:13.353 [DEBUG] [Thread-122921] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:30:13.353 [DEBUG] [Thread-122921] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:30:13.353 [DEBUG] [Thread-122921] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:30:13.353 [DEBUG] [Thread-122921] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:30:13.354 [DEBUG] [Thread-122921] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:30:13.354 [DEBUG] [Thread-122921] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:30:13.354 [DEBUG] [Thread-122921] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:30:13.354 [DEBUG] [Thread-122921] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:30:13.354 [DEBUG] [Thread-122921] [transport.py] [_log()] client lang: <none>
2025-11-03T21:30:13.354 [DEBUG] [Thread-122921] [transport.py] [_log()] server lang: <none>
2025-11-03T21:30:13.354 [DEBUG] [Thread-122921] [transport.py] [_log()] kex follows: False
2025-11-03T21:30:13.354 [DEBUG] [Thread-122921] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:30:13.354 [DEBUG] [Thread-122921] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:30:13.354 [DEBUG] [Thread-122921] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:30:13.355 [DEBUG] [Thread-122921] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:30:13.355 [DEBUG] [Thread-122921] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:30:13.355 [DEBUG] [Thread-122921] [transport.py] [_log()] Compression: none
2025-11-03T21:30:13.355 [DEBUG] [Thread-122921] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:30:13.373 [DEBUG] [Thread-122921] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:30:13.374 [DEBUG] [Thread-122921] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:30:13.374 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:30:13.374 [DEBUG] [Thread-122921] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:30:13.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:30:13.376 [DEBUG] [Thread-122921] [transport.py] [_log()] userauth is OK
2025-11-03T21:30:13.376 [DEBUG] [Thread-122921] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:30:13.377 [DEBUG] [Thread-122921] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:30:13.377 [DEBUG] [Thread-122921] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:30:13.377 [DEBUG] [Thread-122921] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:30:13.400 [INFO] [Thread-122921] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:30:13.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:30:16.677 [DEBUG] [Thread-122921] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:30:16.677 [DEBUG] [Thread-122921] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:30:16.677 [DEBUG] [Thread-122921] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:30:16.718 [DEBUG] [Thread-122921] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:30:16.718 [DEBUG] [Thread-122921] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:30:16.721 [DEBUG] [Thread-122921] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:30:16.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:30:16.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:30:16.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:30:16.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:30:16.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:30:16.961 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:30:16.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:30:16.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:30:16.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:30:16.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.812253 -999.00  +19.00  18.55     15   -7.90 1 1 1 1 1     0    0 24.80 -66.96 ZNESW 18.4 18.6 307.4 21.7 19.1 -26.7 18.9 -25.6 18.7 -25.3 19.0 -26.3
2025-11-03T21:30:16.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:30:16.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:30:16.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.812253
2025-11-03T21:30:16.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:30:16.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:30:16.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:30:16.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:30:16.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:30:16.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:29:39', tmtdew=32.29, humidity=10.07, cloud=0.0, wind=18.32, temperature=18.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:29:40', seeing=1.16, atlas_timestamp='2025-11-03T19:29:38.659', atlas_cloud=1, atlas_rain=1, zp_data=[0.015750000000000597, 0.03325000000000067, 0.006249999999999645, 0.06949999999999967, 0.01750000000000007, -0.008749999999999147, -0.16500000000000092, -0.05874999999999986, -0.03500000000000014, 0.10299999999999976, 0.12124999999999986, 0.09200000000000053, 0.16999999999999993, 0.0832499999999996, -0.03500000000000014, -0.4270000000000014, -0.004749999999999588, 0.045499999999998764, 0.16299999999999848, 0.10374999999999801, 0.19099999999999895, -0.06225000000000058, -0.0022500000000000853, -1.2512500000000006, 0.0519999999999996, 0.1955000000000009, 0.20974999999999966, 0.1800000000000015, 0.09800000000000075, 0.17100000000000115, 0.10300000000000153, -0.5789999999999988, 0.09975000000000023], zp_timestamp='2025-11-03T19:28:00')
2025-11-03T21:30:16.964 [DEBUG] [Thread-122921] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:30:17.041 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:30:17.055 [DEBUG] [Thread-122924] [transport.py] [_log()] starting thread (client mode): 0xed36f20
2025-11-03T21:30:17.055 [DEBUG] [Thread-122924] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:30:17.070 [DEBUG] [Thread-122924] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:30:17.070 [INFO] [Thread-122924] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:30:17.079 [DEBUG] [Thread-122924] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:30:17.079 [DEBUG] [Thread-122924] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:30:17.079 [DEBUG] [Thread-122924] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:30:17.079 [DEBUG] [Thread-122924] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:30:17.080 [DEBUG] [Thread-122924] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:30:17.080 [DEBUG] [Thread-122924] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:30:17.080 [DEBUG] [Thread-122924] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:30:17.080 [DEBUG] [Thread-122924] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:30:17.080 [DEBUG] [Thread-122924] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:30:17.080 [DEBUG] [Thread-122924] [transport.py] [_log()] client lang: <none>
2025-11-03T21:30:17.080 [DEBUG] [Thread-122924] [transport.py] [_log()] server lang: <none>
2025-11-03T21:30:17.080 [DEBUG] [Thread-122924] [transport.py] [_log()] kex follows: False
2025-11-03T21:30:17.080 [DEBUG] [Thread-122924] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:30:17.080 [DEBUG] [Thread-122924] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:30:17.080 [DEBUG] [Thread-122924] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:30:17.080 [DEBUG] [Thread-122924] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:30:17.080 [DEBUG] [Thread-122924] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:30:17.080 [DEBUG] [Thread-122924] [transport.py] [_log()] Compression: none
2025-11-03T21:30:17.080 [DEBUG] [Thread-122924] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:30:17.142 [DEBUG] [Thread-122924] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:30:17.142 [DEBUG] [Thread-122924] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:30:17.142 [DEBUG] [Thread-122924] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:30:17.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:30:17.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:30:17.199 [DEBUG] [Thread-122924] [transport.py] [_log()] userauth is OK
2025-11-03T21:30:17.199 [DEBUG] [Thread-122924] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:30:17.199 [DEBUG] [Thread-122924] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:30:17.199 [DEBUG] [Thread-122924] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:30:17.199 [DEBUG] [Thread-122924] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:30:17.214 [INFO] [Thread-122924] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:30:17.214 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:30:17.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:30:18.046 [DEBUG] [Thread-122924] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:30:18.047 [DEBUG] [Thread-122924] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:30:18.097 [DEBUG] [Thread-122924] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:30:18.097 [DEBUG] [Thread-122924] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:30:18.111 [DEBUG] [Thread-122924] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:30:18.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:30:18.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:30:18.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:30:18.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:30:18.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:30:18.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:30:18.163 [DEBUG] [Thread-122924] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:30:24.618 [DEBUG] [Thread-122926 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:30:30.343 [DEBUG] [Thread-122927 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:30:39.671 [DEBUG] [Thread-122928 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:30:42.090 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:30:42.091 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:30:48.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:30:48.183 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:30:48.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:30:48.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 30, 15), 32.3, 10.05, 0.0, 18.17, 18.83, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:30:48.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:30:15
2025-11-03T21:30:49.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:30:49.304 [DEBUG] [Thread-122929] [transport.py] [_log()] starting thread (client mode): 0xedc41c0
2025-11-03T21:30:49.304 [DEBUG] [Thread-122929] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:30:49.323 [DEBUG] [Thread-122929] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:30:49.323 [INFO] [Thread-122929] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:30:49.324 [DEBUG] [Thread-122929] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:30:49.324 [DEBUG] [Thread-122929] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:30:49.325 [DEBUG] [Thread-122929] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:30:49.325 [DEBUG] [Thread-122929] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:30:49.325 [DEBUG] [Thread-122929] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:30:49.325 [DEBUG] [Thread-122929] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:30:49.325 [DEBUG] [Thread-122929] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:30:49.325 [DEBUG] [Thread-122929] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:30:49.325 [DEBUG] [Thread-122929] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:30:49.325 [DEBUG] [Thread-122929] [transport.py] [_log()] client lang: <none>
2025-11-03T21:30:49.325 [DEBUG] [Thread-122929] [transport.py] [_log()] server lang: <none>
2025-11-03T21:30:49.325 [DEBUG] [Thread-122929] [transport.py] [_log()] kex follows: False
2025-11-03T21:30:49.325 [DEBUG] [Thread-122929] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:30:49.325 [DEBUG] [Thread-122929] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:30:49.325 [DEBUG] [Thread-122929] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:30:49.325 [DEBUG] [Thread-122929] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:30:49.325 [DEBUG] [Thread-122929] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:30:49.325 [DEBUG] [Thread-122929] [transport.py] [_log()] Compression: none
2025-11-03T21:30:49.325 [DEBUG] [Thread-122929] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:30:49.340 [DEBUG] [Thread-122929] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:30:49.340 [DEBUG] [Thread-122929] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:30:49.341 [DEBUG] [Thread-122929] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:30:49.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:30:49.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:30:49.341 [DEBUG] [Thread-122929] [transport.py] [_log()] userauth is OK
2025-11-03T21:30:49.341 [DEBUG] [Thread-122929] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:30:49.341 [DEBUG] [Thread-122929] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:30:49.341 [DEBUG] [Thread-122929] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:30:49.341 [DEBUG] [Thread-122929] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:30:49.352 [INFO] [Thread-122929] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:30:49.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:30:49.986 [DEBUG] [Thread-122929] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:30:49.986 [DEBUG] [Thread-122929] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:30:49.986 [DEBUG] [Thread-122929] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:30:50.027 [DEBUG] [Thread-122929] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:30:50.027 [DEBUG] [Thread-122929] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:30:50.030 [DEBUG] [Thread-122929] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:30:50.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:30:50.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:30:50.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:30:50.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:30:50.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:30:50.047 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:30:50.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:30:50.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:30:50.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:30:50.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.812600 -999.00  +19.00  15.69     15   -7.90 1 1 1 1 1     0    0 25.46 -64.57 ZNESW 18.1 15.7 302.4 23.1 19.0 -26.6 18.9 -25.5 18.7 -25.3 19.0 -26.2
2025-11-03T21:30:50.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:30:50.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:30:50.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.812600
2025-11-03T21:30:50.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:30:50.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:30:50.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:30:50.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:30:50.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:30:50.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:30:15', tmtdew=32.3, humidity=10.05, cloud=0.0, wind=18.17, temperature=18.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:30:48', seeing=1.15, atlas_timestamp='2025-11-03T19:30:08.640', atlas_cloud=1, atlas_rain=1, zp_data=[0.015750000000000597, 0.03325000000000067, 0.006249999999999645, 0.06949999999999967, 0.01750000000000007, -0.008749999999999147, -0.16500000000000092, -0.05874999999999986, -0.03500000000000014, 0.10299999999999976, 0.12124999999999986, 0.09200000000000053, 0.16999999999999993, 0.0832499999999996, -0.03500000000000014, -0.4270000000000014, -0.004749999999999588, 0.045499999999998764, 0.16299999999999848, 0.10374999999999801, 0.19099999999999895, -0.06225000000000058, -0.0022500000000000853, -1.2512500000000006, 0.0519999999999996, 0.1955000000000009, 0.20974999999999966, 0.1800000000000015, 0.09800000000000075, 0.17100000000000115, 0.10300000000000153, -0.5789999999999988, 0.09975000000000023], zp_timestamp='2025-11-03T19:28:00')
2025-11-03T21:30:50.048 [DEBUG] [Thread-122929] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:30:50.123 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:30:50.135 [DEBUG] [Thread-122932] [transport.py] [_log()] starting thread (client mode): 0xed07670
2025-11-03T21:30:50.135 [DEBUG] [Thread-122932] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:30:50.150 [DEBUG] [Thread-122932] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:30:50.150 [INFO] [Thread-122932] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:30:50.157 [DEBUG] [Thread-122932] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:30:50.158 [DEBUG] [Thread-122932] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:30:50.158 [DEBUG] [Thread-122932] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:30:50.158 [DEBUG] [Thread-122932] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:30:50.158 [DEBUG] [Thread-122932] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:30:50.158 [DEBUG] [Thread-122932] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:30:50.158 [DEBUG] [Thread-122932] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:30:50.158 [DEBUG] [Thread-122932] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:30:50.158 [DEBUG] [Thread-122932] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:30:50.158 [DEBUG] [Thread-122932] [transport.py] [_log()] client lang: <none>
2025-11-03T21:30:50.158 [DEBUG] [Thread-122932] [transport.py] [_log()] server lang: <none>
2025-11-03T21:30:50.158 [DEBUG] [Thread-122932] [transport.py] [_log()] kex follows: False
2025-11-03T21:30:50.158 [DEBUG] [Thread-122932] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:30:50.158 [DEBUG] [Thread-122932] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:30:50.158 [DEBUG] [Thread-122932] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:30:50.158 [DEBUG] [Thread-122932] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:30:50.158 [DEBUG] [Thread-122932] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:30:50.158 [DEBUG] [Thread-122932] [transport.py] [_log()] Compression: none
2025-11-03T21:30:50.158 [DEBUG] [Thread-122932] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:30:50.216 [DEBUG] [Thread-122932] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:30:50.216 [DEBUG] [Thread-122932] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:30:50.216 [DEBUG] [Thread-122932] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:30:50.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:30:50.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:30:50.273 [DEBUG] [Thread-122932] [transport.py] [_log()] userauth is OK
2025-11-03T21:30:50.273 [DEBUG] [Thread-122932] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:30:50.273 [DEBUG] [Thread-122932] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:30:50.273 [DEBUG] [Thread-122932] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:30:50.273 [DEBUG] [Thread-122932] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:30:50.288 [INFO] [Thread-122932] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:30:50.288 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:30:50.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:30:51.148 [DEBUG] [Thread-122932] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:30:51.149 [DEBUG] [Thread-122932] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:30:51.197 [DEBUG] [Thread-122932] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:30:51.197 [DEBUG] [Thread-122932] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:30:51.207 [DEBUG] [Thread-122932] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:30:51.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:30:51.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:30:51.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:30:51.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:30:51.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:30:51.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:30:51.253 [DEBUG] [Thread-122932] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:30:54.700 [DEBUG] [Thread-122934 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:31:09.759 [DEBUG] [Thread-122935 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:31:21.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:31:21.274 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:31:21.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:31:22.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 30, 47), 32.11, 10.04, 0.0, 18.79, 18.74, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:31:22.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:30:47
2025-11-03T21:31:22.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:31:23.060 [DEBUG] [Thread-122936] [transport.py] [_log()] starting thread (client mode): 0x1174d1b0
2025-11-03T21:31:23.060 [DEBUG] [Thread-122936] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:31:23.068 [DEBUG] [Thread-122936] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:31:23.068 [INFO] [Thread-122936] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:31:23.071 [DEBUG] [Thread-122936] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:31:23.071 [DEBUG] [Thread-122936] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:31:23.071 [DEBUG] [Thread-122936] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:31:23.071 [DEBUG] [Thread-122936] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:31:23.071 [DEBUG] [Thread-122936] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:31:23.071 [DEBUG] [Thread-122936] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:31:23.071 [DEBUG] [Thread-122936] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:31:23.071 [DEBUG] [Thread-122936] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:31:23.072 [DEBUG] [Thread-122936] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:31:23.072 [DEBUG] [Thread-122936] [transport.py] [_log()] client lang: <none>
2025-11-03T21:31:23.072 [DEBUG] [Thread-122936] [transport.py] [_log()] server lang: <none>
2025-11-03T21:31:23.072 [DEBUG] [Thread-122936] [transport.py] [_log()] kex follows: False
2025-11-03T21:31:23.072 [DEBUG] [Thread-122936] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:31:23.072 [DEBUG] [Thread-122936] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:31:23.072 [DEBUG] [Thread-122936] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:31:23.072 [DEBUG] [Thread-122936] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:31:23.072 [DEBUG] [Thread-122936] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:31:23.072 [DEBUG] [Thread-122936] [transport.py] [_log()] Compression: none
2025-11-03T21:31:23.072 [DEBUG] [Thread-122936] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:31:23.086 [DEBUG] [Thread-122936] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:31:23.087 [DEBUG] [Thread-122936] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:31:23.087 [DEBUG] [Thread-122936] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:31:23.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:31:23.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:31:23.087 [DEBUG] [Thread-122936] [transport.py] [_log()] userauth is OK
2025-11-03T21:31:23.087 [DEBUG] [Thread-122936] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:31:23.087 [DEBUG] [Thread-122936] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:31:23.087 [DEBUG] [Thread-122936] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:31:23.087 [DEBUG] [Thread-122936] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:31:23.096 [INFO] [Thread-122936] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:31:23.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:31:23.904 [DEBUG] [Thread-122936] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:31:23.904 [DEBUG] [Thread-122936] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:31:23.904 [DEBUG] [Thread-122936] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:31:23.945 [DEBUG] [Thread-122936] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:31:23.945 [DEBUG] [Thread-122936] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:31:23.947 [DEBUG] [Thread-122936] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:31:23.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:31:23.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:31:23.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:31:23.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:31:23.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:31:23.973 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:31:23.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:31:23.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:31:23.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:31:23.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.812948 -999.00  +19.00  14.33     15   -7.90 1 1 1 1 1     0    0 25.56 -62.06 ZNESW 19.0 14.3 307.0 24.4 19.1 -26.6 18.9 -25.5 18.7 -25.1 19.0 -26.2
2025-11-03T21:31:23.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:31:23.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:31:23.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.812948
2025-11-03T21:31:23.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:31:23.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:31:23.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:31:23.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:31:23.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:31:23.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:30:47', tmtdew=32.11, humidity=10.04, cloud=0.0, wind=18.79, temperature=18.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:31:20', seeing=1.15, atlas_timestamp='2025-11-03T19:30:38.707', atlas_cloud=1, atlas_rain=1, zp_data=[0.015750000000000597, 0.03325000000000067, 0.006249999999999645, 0.06949999999999967, 0.01750000000000007, -0.008749999999999147, -0.16500000000000092, -0.05874999999999986, -0.03500000000000014, 0.10299999999999976, 0.12124999999999986, 0.09200000000000053, 0.16999999999999993, 0.0832499999999996, -0.03500000000000014, -0.4270000000000014, -0.004749999999999588, 0.045499999999998764, 0.16299999999999848, 0.10374999999999801, 0.19099999999999895, -0.06225000000000058, -0.0022500000000000853, -1.2512500000000006, 0.0519999999999996, 0.1955000000000009, 0.20974999999999966, 0.1800000000000015, 0.09800000000000075, 0.17100000000000115, 0.10300000000000153, -0.5789999999999988, 0.09975000000000023], zp_timestamp='2025-11-03T19:28:00')
2025-11-03T21:31:23.976 [DEBUG] [Thread-122936] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:31:24.059 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:31:24.071 [DEBUG] [Thread-122939] [transport.py] [_log()] starting thread (client mode): 0xedc44f0
2025-11-03T21:31:24.071 [DEBUG] [Thread-122939] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:31:24.086 [DEBUG] [Thread-122939] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:31:24.087 [INFO] [Thread-122939] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:31:24.094 [DEBUG] [Thread-122939] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:31:24.094 [DEBUG] [Thread-122939] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:31:24.094 [DEBUG] [Thread-122939] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:31:24.094 [DEBUG] [Thread-122939] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:31:24.094 [DEBUG] [Thread-122939] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:31:24.094 [DEBUG] [Thread-122939] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:31:24.094 [DEBUG] [Thread-122939] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:31:24.094 [DEBUG] [Thread-122939] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:31:24.094 [DEBUG] [Thread-122939] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:31:24.094 [DEBUG] [Thread-122939] [transport.py] [_log()] client lang: <none>
2025-11-03T21:31:24.094 [DEBUG] [Thread-122939] [transport.py] [_log()] server lang: <none>
2025-11-03T21:31:24.094 [DEBUG] [Thread-122939] [transport.py] [_log()] kex follows: False
2025-11-03T21:31:24.094 [DEBUG] [Thread-122939] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:31:24.094 [DEBUG] [Thread-122939] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:31:24.094 [DEBUG] [Thread-122939] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:31:24.094 [DEBUG] [Thread-122939] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:31:24.094 [DEBUG] [Thread-122939] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:31:24.094 [DEBUG] [Thread-122939] [transport.py] [_log()] Compression: none
2025-11-03T21:31:24.094 [DEBUG] [Thread-122939] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:31:24.150 [DEBUG] [Thread-122939] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:31:24.150 [DEBUG] [Thread-122939] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:31:24.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:31:24.150 [DEBUG] [Thread-122939] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:31:24.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:31:24.207 [DEBUG] [Thread-122939] [transport.py] [_log()] userauth is OK
2025-11-03T21:31:24.207 [DEBUG] [Thread-122939] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:31:24.207 [DEBUG] [Thread-122939] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:31:24.207 [DEBUG] [Thread-122939] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:31:24.207 [DEBUG] [Thread-122939] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:31:24.221 [INFO] [Thread-122939] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:31:24.221 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:31:24.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:31:24.787 [DEBUG] [Thread-122941 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:31:25.062 [DEBUG] [Thread-122939] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:31:25.062 [DEBUG] [Thread-122939] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:31:25.110 [DEBUG] [Thread-122939] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:31:25.110 [DEBUG] [Thread-122939] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:31:25.119 [DEBUG] [Thread-122939] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:31:25.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:31:25.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:31:25.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:31:25.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:31:25.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:31:25.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:31:25.151 [DEBUG] [Thread-122939] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:31:30.585 [DEBUG] [Thread-122942 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:31:39.832 [DEBUG] [Thread-122943 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:31:42.301 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:31:42.302 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:31:54.867 [DEBUG] [Thread-122944 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:31:55.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:31:55.161 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:31:55.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:31:55.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 31, 19), 32.11, 10.04, 0.0, 19.07, 18.74, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:31:55.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:31:19
2025-11-03T21:31:56.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:31:56.248 [DEBUG] [Thread-122945] [transport.py] [_log()] starting thread (client mode): 0x11762770
2025-11-03T21:31:56.248 [DEBUG] [Thread-122945] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:31:56.268 [DEBUG] [Thread-122945] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:31:56.268 [INFO] [Thread-122945] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:31:56.271 [DEBUG] [Thread-122945] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:31:56.271 [DEBUG] [Thread-122945] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:31:56.271 [DEBUG] [Thread-122945] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:31:56.271 [DEBUG] [Thread-122945] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:31:56.271 [DEBUG] [Thread-122945] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:31:56.271 [DEBUG] [Thread-122945] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:31:56.271 [DEBUG] [Thread-122945] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:31:56.271 [DEBUG] [Thread-122945] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:31:56.271 [DEBUG] [Thread-122945] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:31:56.271 [DEBUG] [Thread-122945] [transport.py] [_log()] client lang: <none>
2025-11-03T21:31:56.271 [DEBUG] [Thread-122945] [transport.py] [_log()] server lang: <none>
2025-11-03T21:31:56.271 [DEBUG] [Thread-122945] [transport.py] [_log()] kex follows: False
2025-11-03T21:31:56.271 [DEBUG] [Thread-122945] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:31:56.271 [DEBUG] [Thread-122945] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:31:56.271 [DEBUG] [Thread-122945] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:31:56.271 [DEBUG] [Thread-122945] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:31:56.271 [DEBUG] [Thread-122945] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:31:56.271 [DEBUG] [Thread-122945] [transport.py] [_log()] Compression: none
2025-11-03T21:31:56.271 [DEBUG] [Thread-122945] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:31:56.288 [DEBUG] [Thread-122945] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:31:56.288 [DEBUG] [Thread-122945] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:31:56.288 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:31:56.288 [DEBUG] [Thread-122945] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:31:56.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:31:56.289 [DEBUG] [Thread-122945] [transport.py] [_log()] userauth is OK
2025-11-03T21:31:56.289 [DEBUG] [Thread-122945] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:31:56.289 [DEBUG] [Thread-122945] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:31:56.289 [DEBUG] [Thread-122945] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:31:56.289 [DEBUG] [Thread-122945] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:31:56.300 [INFO] [Thread-122945] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:31:56.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:31:56.944 [DEBUG] [Thread-122945] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:31:56.944 [DEBUG] [Thread-122945] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:31:56.944 [DEBUG] [Thread-122945] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:31:56.986 [DEBUG] [Thread-122945] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:31:56.986 [DEBUG] [Thread-122945] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:31:56.988 [DEBUG] [Thread-122945] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:31:57.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:31:57.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:31:57.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:31:57.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:31:57.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:31:57.007 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:31:57.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:31:57.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:31:57.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:31:57.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.813642 -999.00  +18.90  18.22     15   -7.70 1 1 1 1 1     0    0 25.45 -54.96 ZNESW 18.8 18.2 296.0 22.4 19.0 -26.6 18.9 -25.4 18.7 -25.2 18.9 -26.2
2025-11-03T21:31:57.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:31:57.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:31:57.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.813642
2025-11-03T21:31:57.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:31:57.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:31:57.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:31:57.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:31:57.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:31:57.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:31:19', tmtdew=32.11, humidity=10.04, cloud=0.0, wind=19.07, temperature=18.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:31:20', seeing=1.15, atlas_timestamp='2025-11-03T19:31:38.669', atlas_cloud=1, atlas_rain=1, zp_data=[0.015750000000000597, 0.03325000000000067, 0.006249999999999645, 0.06949999999999967, 0.01750000000000007, -0.008749999999999147, -0.16500000000000092, -0.05874999999999986, -0.03500000000000014, 0.10299999999999976, 0.12124999999999986, 0.09200000000000053, 0.16999999999999993, 0.0832499999999996, -0.03500000000000014, -0.4270000000000014, -0.004749999999999588, 0.045499999999998764, 0.16299999999999848, 0.10374999999999801, 0.19099999999999895, -0.06225000000000058, -0.0022500000000000853, -1.2512500000000006, 0.0519999999999996, 0.1955000000000009, 0.20974999999999966, 0.1800000000000015, 0.09800000000000075, 0.17100000000000115, 0.10300000000000153, -0.5789999999999988, 0.09975000000000023], zp_timestamp='2025-11-03T19:28:00')
2025-11-03T21:31:57.008 [DEBUG] [Thread-122945] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:31:57.083 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:31:57.095 [DEBUG] [Thread-122948] [transport.py] [_log()] starting thread (client mode): 0xed37700
2025-11-03T21:31:57.095 [DEBUG] [Thread-122948] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:31:57.110 [DEBUG] [Thread-122948] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:31:57.110 [INFO] [Thread-122948] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:31:57.118 [DEBUG] [Thread-122948] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:31:57.119 [DEBUG] [Thread-122948] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:31:57.119 [DEBUG] [Thread-122948] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:31:57.119 [DEBUG] [Thread-122948] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:31:57.119 [DEBUG] [Thread-122948] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:31:57.119 [DEBUG] [Thread-122948] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:31:57.119 [DEBUG] [Thread-122948] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:31:57.119 [DEBUG] [Thread-122948] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:31:57.119 [DEBUG] [Thread-122948] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:31:57.119 [DEBUG] [Thread-122948] [transport.py] [_log()] client lang: <none>
2025-11-03T21:31:57.119 [DEBUG] [Thread-122948] [transport.py] [_log()] server lang: <none>
2025-11-03T21:31:57.119 [DEBUG] [Thread-122948] [transport.py] [_log()] kex follows: False
2025-11-03T21:31:57.119 [DEBUG] [Thread-122948] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:31:57.119 [DEBUG] [Thread-122948] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:31:57.119 [DEBUG] [Thread-122948] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:31:57.119 [DEBUG] [Thread-122948] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:31:57.119 [DEBUG] [Thread-122948] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:31:57.119 [DEBUG] [Thread-122948] [transport.py] [_log()] Compression: none
2025-11-03T21:31:57.119 [DEBUG] [Thread-122948] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:31:57.178 [DEBUG] [Thread-122948] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:31:57.179 [DEBUG] [Thread-122948] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:31:57.179 [DEBUG] [Thread-122948] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:31:57.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:31:57.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:31:57.241 [DEBUG] [Thread-122948] [transport.py] [_log()] userauth is OK
2025-11-03T21:31:57.241 [DEBUG] [Thread-122948] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:31:57.242 [DEBUG] [Thread-122948] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:31:57.242 [DEBUG] [Thread-122948] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:31:57.242 [DEBUG] [Thread-122948] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:31:57.265 [INFO] [Thread-122948] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:31:57.265 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:31:57.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:31:58.090 [DEBUG] [Thread-122948] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:31:58.091 [DEBUG] [Thread-122948] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:31:58.142 [DEBUG] [Thread-122948] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:31:58.143 [DEBUG] [Thread-122948] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:31:58.154 [DEBUG] [Thread-122948] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:31:58.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:31:58.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:31:58.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:31:58.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:31:58.187 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:31:58.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:31:58.198 [DEBUG] [Thread-122948] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:32:09.899 [DEBUG] [Thread-122950 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:32:24.950 [DEBUG] [Thread-122951 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:32:28.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:32:28.218 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:32:28.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:32:29.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 31, 55), 31.95, 10.12, 0.0, 18.97, 18.78, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:32:29.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:31:55
2025-11-03T21:32:29.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:32:29.345 [DEBUG] [Thread-122952] [transport.py] [_log()] starting thread (client mode): 0x141dbc10
2025-11-03T21:32:29.345 [DEBUG] [Thread-122952] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:32:29.361 [DEBUG] [Thread-122952] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:32:29.361 [INFO] [Thread-122952] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:32:29.365 [DEBUG] [Thread-122952] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:32:29.365 [DEBUG] [Thread-122952] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:32:29.365 [DEBUG] [Thread-122952] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:32:29.365 [DEBUG] [Thread-122952] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:32:29.365 [DEBUG] [Thread-122952] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:32:29.365 [DEBUG] [Thread-122952] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:32:29.365 [DEBUG] [Thread-122952] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:32:29.365 [DEBUG] [Thread-122952] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:32:29.365 [DEBUG] [Thread-122952] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:32:29.365 [DEBUG] [Thread-122952] [transport.py] [_log()] client lang: <none>
2025-11-03T21:32:29.365 [DEBUG] [Thread-122952] [transport.py] [_log()] server lang: <none>
2025-11-03T21:32:29.365 [DEBUG] [Thread-122952] [transport.py] [_log()] kex follows: False
2025-11-03T21:32:29.365 [DEBUG] [Thread-122952] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:32:29.366 [DEBUG] [Thread-122952] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:32:29.366 [DEBUG] [Thread-122952] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:32:29.366 [DEBUG] [Thread-122952] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:32:29.366 [DEBUG] [Thread-122952] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:32:29.366 [DEBUG] [Thread-122952] [transport.py] [_log()] Compression: none
2025-11-03T21:32:29.366 [DEBUG] [Thread-122952] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:32:29.388 [DEBUG] [Thread-122952] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:32:29.389 [DEBUG] [Thread-122952] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:32:29.389 [DEBUG] [Thread-122952] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:32:29.390 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:32:29.390 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:32:29.433 [DEBUG] [Thread-122952] [transport.py] [_log()] userauth is OK
2025-11-03T21:32:29.433 [DEBUG] [Thread-122952] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:32:29.433 [DEBUG] [Thread-122952] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:32:29.433 [DEBUG] [Thread-122952] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:32:29.433 [DEBUG] [Thread-122952] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:32:29.454 [INFO] [Thread-122952] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:32:29.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:32:30.091 [DEBUG] [Thread-122952] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:32:30.091 [DEBUG] [Thread-122952] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:32:30.092 [DEBUG] [Thread-122952] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:32:30.132 [DEBUG] [Thread-122952] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:32:30.133 [DEBUG] [Thread-122952] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:32:30.135 [DEBUG] [Thread-122952] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:32:30.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:32:30.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:32:30.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:32:30.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:32:30.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:32:30.154 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:32:30.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:32:30.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:32:30.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:32:30.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.813989 -999.00  +19.00  16.01     15   -7.70 1 1 1 1 1     0    0 25.49 -51.97 ZNESW 16.2 16.0 310.0 20.9 19.1 -26.4 18.9 -25.5 18.7 -25.2 19.0 -26.0
2025-11-03T21:32:30.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:32:30.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:32:30.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.813989
2025-11-03T21:32:30.161 [DEBUG] [Thread-122952] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:32:30.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:32:30.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:32:30.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:32:30.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:32:30.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:32:30.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:31:55', tmtdew=31.95, humidity=10.12, cloud=0.0, wind=18.97, temperature=18.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:31:55', seeing=1.19, atlas_timestamp='2025-11-03T19:32:08.650', atlas_cloud=1, atlas_rain=1, zp_data=[0.008749999999999147, 0.051249999999999574, 0.05125000000000135, 0.06449999999999889, -0.06299999999999883, -0.059749999999999304, -0.07000000000000028, -0.10975000000000001, -0.04350000000000165, 0.10999999999999943, 0.062249999999998806, 0.054999999999999716, 0.15700000000000003, 0.09575000000000067, -0.025000000000000355, -0.3150000000000013, -0.016750000000000043, 0.09249999999999936, 0.16999999999999993, 0.11324999999999896, 0.1739999999999995, -0.13125000000000142, -0.01974999999999838, -1.5672499999999996, 0.036999999999999034, 0.23150000000000048, 0.21075000000000088, 0.15850000000000009, 0.1305000000000014, 0.15500000000000114, 0.1280000000000019, -0.5689999999999991, 0.07574999999999932], zp_timestamp='2025-11-03T19:31:00')
2025-11-03T21:32:30.242 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:32:30.255 [DEBUG] [Thread-122955] [transport.py] [_log()] starting thread (client mode): 0xed12a10
2025-11-03T21:32:30.255 [DEBUG] [Thread-122955] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:32:30.270 [DEBUG] [Thread-122955] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:32:30.270 [INFO] [Thread-122955] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:32:30.277 [DEBUG] [Thread-122955] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:32:30.277 [DEBUG] [Thread-122955] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:32:30.278 [DEBUG] [Thread-122955] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:32:30.278 [DEBUG] [Thread-122955] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:32:30.278 [DEBUG] [Thread-122955] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:32:30.278 [DEBUG] [Thread-122955] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:32:30.278 [DEBUG] [Thread-122955] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:32:30.278 [DEBUG] [Thread-122955] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:32:30.278 [DEBUG] [Thread-122955] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:32:30.278 [DEBUG] [Thread-122955] [transport.py] [_log()] client lang: <none>
2025-11-03T21:32:30.278 [DEBUG] [Thread-122955] [transport.py] [_log()] server lang: <none>
2025-11-03T21:32:30.278 [DEBUG] [Thread-122955] [transport.py] [_log()] kex follows: False
2025-11-03T21:32:30.278 [DEBUG] [Thread-122955] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:32:30.278 [DEBUG] [Thread-122955] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:32:30.278 [DEBUG] [Thread-122955] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:32:30.278 [DEBUG] [Thread-122955] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:32:30.278 [DEBUG] [Thread-122955] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:32:30.278 [DEBUG] [Thread-122955] [transport.py] [_log()] Compression: none
2025-11-03T21:32:30.278 [DEBUG] [Thread-122955] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:32:30.336 [DEBUG] [Thread-122955] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:32:30.336 [DEBUG] [Thread-122955] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:32:30.336 [DEBUG] [Thread-122955] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:32:30.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:32:30.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:32:30.397 [DEBUG] [Thread-122955] [transport.py] [_log()] userauth is OK
2025-11-03T21:32:30.397 [DEBUG] [Thread-122955] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:32:30.397 [DEBUG] [Thread-122955] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:32:30.397 [DEBUG] [Thread-122955] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:32:30.397 [DEBUG] [Thread-122955] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:32:30.411 [INFO] [Thread-122955] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:32:30.411 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:32:30.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:32:30.813 [DEBUG] [Thread-122957 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:32:31.298 [DEBUG] [Thread-122955] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:32:31.298 [DEBUG] [Thread-122955] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:32:31.338 [DEBUG] [Thread-122955] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:32:31.339 [DEBUG] [Thread-122955] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:32:31.348 [DEBUG] [Thread-122955] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:32:31.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:32:31.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:32:31.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:32:31.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:32:31.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:32:31.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:32:31.389 [DEBUG] [Thread-122955] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:32:39.983 [DEBUG] [Thread-122958 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:32:42.505 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:32:42.506 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:32:55.026 [DEBUG] [Thread-122959 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:33:01.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:33:01.384 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:33:01.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:33:03.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 32, 28), 31.91, 10.15, 0.0, 18.33, 18.78, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:33:03.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:32:28
2025-11-03T21:33:03.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:33:04.126 [DEBUG] [Thread-122960] [transport.py] [_log()] starting thread (client mode): 0xed13a90
2025-11-03T21:33:04.126 [DEBUG] [Thread-122960] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:33:04.145 [DEBUG] [Thread-122960] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:33:04.145 [INFO] [Thread-122960] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:33:04.149 [DEBUG] [Thread-122960] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:33:04.149 [DEBUG] [Thread-122960] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:33:04.149 [DEBUG] [Thread-122960] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:33:04.149 [DEBUG] [Thread-122960] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:33:04.149 [DEBUG] [Thread-122960] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:33:04.149 [DEBUG] [Thread-122960] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:33:04.149 [DEBUG] [Thread-122960] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:33:04.149 [DEBUG] [Thread-122960] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:33:04.149 [DEBUG] [Thread-122960] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:33:04.149 [DEBUG] [Thread-122960] [transport.py] [_log()] client lang: <none>
2025-11-03T21:33:04.149 [DEBUG] [Thread-122960] [transport.py] [_log()] server lang: <none>
2025-11-03T21:33:04.149 [DEBUG] [Thread-122960] [transport.py] [_log()] kex follows: False
2025-11-03T21:33:04.149 [DEBUG] [Thread-122960] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:33:04.149 [DEBUG] [Thread-122960] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:33:04.149 [DEBUG] [Thread-122960] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:33:04.149 [DEBUG] [Thread-122960] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:33:04.151 [DEBUG] [Thread-122960] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:33:04.151 [DEBUG] [Thread-122960] [transport.py] [_log()] Compression: none
2025-11-03T21:33:04.151 [DEBUG] [Thread-122960] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:33:04.169 [DEBUG] [Thread-122960] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:33:04.170 [DEBUG] [Thread-122960] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:33:04.170 [DEBUG] [Thread-122960] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:33:04.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:33:04.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:33:04.174 [DEBUG] [Thread-122960] [transport.py] [_log()] userauth is OK
2025-11-03T21:33:04.174 [DEBUG] [Thread-122960] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:33:04.174 [DEBUG] [Thread-122960] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:33:04.174 [DEBUG] [Thread-122960] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:33:04.174 [DEBUG] [Thread-122960] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:33:04.191 [INFO] [Thread-122960] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:33:04.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:33:04.839 [DEBUG] [Thread-122960] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:33:04.839 [DEBUG] [Thread-122960] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:33:04.839 [DEBUG] [Thread-122960] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:33:04.880 [DEBUG] [Thread-122960] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:33:04.880 [DEBUG] [Thread-122960] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:33:04.882 [DEBUG] [Thread-122960] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:33:04.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:33:04.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:33:04.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:33:04.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:33:04.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:33:04.899 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:33:04.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:33:04.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:33:04.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:33:04.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.814336 -999.00  +19.00  15.07     15   -7.80 1 1 1 1 1     0    0 25.59 -49.84 ZNESW 15.6 15.1 310.6 21.1 19.0 -26.6 18.9 -25.6 18.7 -25.3 19.0 -26.3
2025-11-03T21:33:04.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:33:04.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:33:04.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.814336
2025-11-03T21:33:04.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:33:04.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:33:04.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:33:04.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:33:04.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:33:04.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:32:28', tmtdew=31.91, humidity=10.15, cloud=0.0, wind=18.33, temperature=18.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:33:01', seeing=1.21, atlas_timestamp='2025-11-03T19:32:38.630', atlas_cloud=1, atlas_rain=1, zp_data=[0.008749999999999147, 0.051249999999999574, 0.05125000000000135, 0.06449999999999889, -0.06299999999999883, -0.059749999999999304, -0.07000000000000028, -0.10975000000000001, -0.04350000000000165, 0.10999999999999943, 0.062249999999998806, 0.054999999999999716, 0.15700000000000003, 0.09575000000000067, -0.025000000000000355, -0.3150000000000013, -0.016750000000000043, 0.09249999999999936, 0.16999999999999993, 0.11324999999999896, 0.1739999999999995, -0.13125000000000142, -0.01974999999999838, -1.5672499999999996, 0.036999999999999034, 0.23150000000000048, 0.21075000000000088, 0.15850000000000009, 0.1305000000000014, 0.15500000000000114, 0.1280000000000019, -0.5689999999999991, 0.07574999999999932], zp_timestamp='2025-11-03T19:31:00')
2025-11-03T21:33:04.904 [DEBUG] [Thread-122960] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:33:04.978 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:33:04.989 [DEBUG] [Thread-122963] [transport.py] [_log()] starting thread (client mode): 0xed8a590
2025-11-03T21:33:04.990 [DEBUG] [Thread-122963] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:33:05.005 [DEBUG] [Thread-122963] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:33:05.005 [INFO] [Thread-122963] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:33:05.012 [DEBUG] [Thread-122963] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:33:05.012 [DEBUG] [Thread-122963] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:33:05.012 [DEBUG] [Thread-122963] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:33:05.012 [DEBUG] [Thread-122963] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:33:05.012 [DEBUG] [Thread-122963] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:33:05.012 [DEBUG] [Thread-122963] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:33:05.012 [DEBUG] [Thread-122963] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:33:05.012 [DEBUG] [Thread-122963] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:33:05.012 [DEBUG] [Thread-122963] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:33:05.012 [DEBUG] [Thread-122963] [transport.py] [_log()] client lang: <none>
2025-11-03T21:33:05.012 [DEBUG] [Thread-122963] [transport.py] [_log()] server lang: <none>
2025-11-03T21:33:05.012 [DEBUG] [Thread-122963] [transport.py] [_log()] kex follows: False
2025-11-03T21:33:05.012 [DEBUG] [Thread-122963] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:33:05.012 [DEBUG] [Thread-122963] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:33:05.012 [DEBUG] [Thread-122963] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:33:05.013 [DEBUG] [Thread-122963] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:33:05.013 [DEBUG] [Thread-122963] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:33:05.013 [DEBUG] [Thread-122963] [transport.py] [_log()] Compression: none
2025-11-03T21:33:05.013 [DEBUG] [Thread-122963] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:33:05.074 [DEBUG] [Thread-122963] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:33:05.074 [DEBUG] [Thread-122963] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:33:05.074 [DEBUG] [Thread-122963] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:33:05.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:33:05.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:33:05.132 [DEBUG] [Thread-122963] [transport.py] [_log()] userauth is OK
2025-11-03T21:33:05.132 [DEBUG] [Thread-122963] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:33:05.132 [DEBUG] [Thread-122963] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:33:05.132 [DEBUG] [Thread-122963] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:33:05.132 [DEBUG] [Thread-122963] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:33:05.148 [INFO] [Thread-122963] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:33:05.148 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:33:05.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:33:06.010 [DEBUG] [Thread-122963] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:33:06.010 [DEBUG] [Thread-122963] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:33:06.058 [DEBUG] [Thread-122963] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:33:06.058 [DEBUG] [Thread-122963] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:33:06.067 [DEBUG] [Thread-122963] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:33:06.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:33:06.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:33:06.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:33:06.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:33:06.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:33:06.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:33:06.102 [DEBUG] [Thread-122963] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:33:10.060 [DEBUG] [Thread-122965 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:33:15.536 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:33:21.322 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:33:24.445 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:33:25.102 [DEBUG] [Thread-122966 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:33:30.914 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:33:31.134 [DEBUG] [Thread-122967 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:33:36.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:33:36.125 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:33:36.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:33:36.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 32, 28), 31.91, 10.15, 0.0, 18.33, 18.78, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:33:36.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:32:28
2025-11-03T21:33:36.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:33:37.122 [DEBUG] [Thread-122968] [transport.py] [_log()] starting thread (client mode): 0xed11ff0
2025-11-03T21:33:37.122 [DEBUG] [Thread-122968] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:33:37.141 [DEBUG] [Thread-122968] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:33:37.141 [INFO] [Thread-122968] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:33:37.143 [DEBUG] [Thread-122968] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:33:37.143 [DEBUG] [Thread-122968] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:33:37.143 [DEBUG] [Thread-122968] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:33:37.143 [DEBUG] [Thread-122968] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:33:37.143 [DEBUG] [Thread-122968] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:33:37.143 [DEBUG] [Thread-122968] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:33:37.143 [DEBUG] [Thread-122968] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:33:37.143 [DEBUG] [Thread-122968] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:33:37.143 [DEBUG] [Thread-122968] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:33:37.143 [DEBUG] [Thread-122968] [transport.py] [_log()] client lang: <none>
2025-11-03T21:33:37.143 [DEBUG] [Thread-122968] [transport.py] [_log()] server lang: <none>
2025-11-03T21:33:37.143 [DEBUG] [Thread-122968] [transport.py] [_log()] kex follows: False
2025-11-03T21:33:37.143 [DEBUG] [Thread-122968] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:33:37.143 [DEBUG] [Thread-122968] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:33:37.143 [DEBUG] [Thread-122968] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:33:37.143 [DEBUG] [Thread-122968] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:33:37.144 [DEBUG] [Thread-122968] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:33:37.144 [DEBUG] [Thread-122968] [transport.py] [_log()] Compression: none
2025-11-03T21:33:37.144 [DEBUG] [Thread-122968] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:33:37.155 [DEBUG] [Thread-122968] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:33:37.155 [DEBUG] [Thread-122968] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:33:37.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:33:37.156 [DEBUG] [Thread-122968] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:33:37.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:33:37.157 [DEBUG] [Thread-122968] [transport.py] [_log()] userauth is OK
2025-11-03T21:33:37.157 [DEBUG] [Thread-122968] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:33:37.157 [DEBUG] [Thread-122968] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:33:37.157 [DEBUG] [Thread-122968] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:33:37.157 [DEBUG] [Thread-122968] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:33:37.167 [INFO] [Thread-122968] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:33:37.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:33:37.807 [DEBUG] [Thread-122968] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:33:37.807 [DEBUG] [Thread-122968] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:33:37.807 [DEBUG] [Thread-122968] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:33:37.849 [DEBUG] [Thread-122968] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:33:37.849 [DEBUG] [Thread-122968] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:33:37.851 [DEBUG] [Thread-122968] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:33:37.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:33:37.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:33:37.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:33:37.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:33:37.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:33:37.870 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:33:37.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:33:37.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:33:37.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:33:37.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.814684 -999.00  +18.90  12.74     15   -7.70 1 1 1 1 1     0    0 25.47 -47.86 ZNESW 14.9 12.7 307.2 19.7 19.0 -26.4 18.9 -25.5 18.7 -25.4 19.0 -26.2
2025-11-03T21:33:37.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:33:37.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:33:37.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.814684
2025-11-03T21:33:37.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:33:37.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:33:37.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:33:37.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:33:37.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:33:37.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:32:28', tmtdew=31.91, humidity=10.15, cloud=0.0, wind=18.33, temperature=18.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:33:01', seeing=1.21, atlas_timestamp='2025-11-03T19:33:08.698', atlas_cloud=1, atlas_rain=1, zp_data=[0.008749999999999147, 0.051249999999999574, 0.05125000000000135, 0.06449999999999889, -0.06299999999999883, -0.059749999999999304, -0.07000000000000028, -0.10975000000000001, -0.04350000000000165, 0.10999999999999943, 0.062249999999998806, 0.054999999999999716, 0.15700000000000003, 0.09575000000000067, -0.025000000000000355, -0.3150000000000013, -0.016750000000000043, 0.09249999999999936, 0.16999999999999993, 0.11324999999999896, 0.1739999999999995, -0.13125000000000142, -0.01974999999999838, -1.5672499999999996, 0.036999999999999034, 0.23150000000000048, 0.21075000000000088, 0.15850000000000009, 0.1305000000000014, 0.15500000000000114, 0.1280000000000019, -0.5689999999999991, 0.07574999999999932], zp_timestamp='2025-11-03T19:31:00')
2025-11-03T21:33:37.872 [DEBUG] [Thread-122968] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:33:37.947 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:33:37.961 [DEBUG] [Thread-122971] [transport.py] [_log()] starting thread (client mode): 0x11762e90
2025-11-03T21:33:37.961 [DEBUG] [Thread-122971] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:33:37.980 [DEBUG] [Thread-122971] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:33:37.980 [INFO] [Thread-122971] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:33:37.990 [DEBUG] [Thread-122971] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:33:37.990 [DEBUG] [Thread-122971] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:33:37.990 [DEBUG] [Thread-122971] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:33:37.990 [DEBUG] [Thread-122971] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:33:37.990 [DEBUG] [Thread-122971] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:33:37.990 [DEBUG] [Thread-122971] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:33:37.990 [DEBUG] [Thread-122971] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:33:37.990 [DEBUG] [Thread-122971] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:33:37.990 [DEBUG] [Thread-122971] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:33:37.990 [DEBUG] [Thread-122971] [transport.py] [_log()] client lang: <none>
2025-11-03T21:33:37.990 [DEBUG] [Thread-122971] [transport.py] [_log()] server lang: <none>
2025-11-03T21:33:37.990 [DEBUG] [Thread-122971] [transport.py] [_log()] kex follows: False
2025-11-03T21:33:37.990 [DEBUG] [Thread-122971] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:33:37.990 [DEBUG] [Thread-122971] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:33:37.990 [DEBUG] [Thread-122971] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:33:37.990 [DEBUG] [Thread-122971] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:33:37.990 [DEBUG] [Thread-122971] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:33:37.990 [DEBUG] [Thread-122971] [transport.py] [_log()] Compression: none
2025-11-03T21:33:37.990 [DEBUG] [Thread-122971] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:33:38.051 [DEBUG] [Thread-122971] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:33:38.051 [DEBUG] [Thread-122971] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:33:38.052 [DEBUG] [Thread-122971] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:33:38.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:33:38.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:33:38.116 [DEBUG] [Thread-122971] [transport.py] [_log()] userauth is OK
2025-11-03T21:33:38.116 [DEBUG] [Thread-122971] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:33:38.116 [DEBUG] [Thread-122971] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:33:38.116 [DEBUG] [Thread-122971] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:33:38.116 [DEBUG] [Thread-122971] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:33:38.135 [INFO] [Thread-122971] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:33:38.135 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:33:38.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:33:39.021 [DEBUG] [Thread-122971] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:33:39.021 [DEBUG] [Thread-122971] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:33:39.072 [DEBUG] [Thread-122971] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:33:39.072 [DEBUG] [Thread-122971] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:33:39.084 [DEBUG] [Thread-122971] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:33:39.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:33:39.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:33:39.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:33:39.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:33:39.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:33:39.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:33:39.132 [DEBUG] [Thread-122971] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:33:40.136 [DEBUG] [Thread-122973 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:33:42.707 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:33:42.708 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:33:55.213 [DEBUG] [Thread-122974 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:34:09.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:34:09.149 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:34:09.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:34:09.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 33, 35), 31.95, 10.12, 0.0, 15.3, 18.66, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:34:09.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:33:35
2025-11-03T21:34:10.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:34:10.250 [DEBUG] [Thread-122975 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:34:10.325 [DEBUG] [Thread-122976] [transport.py] [_log()] starting thread (client mode): 0xedc60e0
2025-11-03T21:34:10.325 [DEBUG] [Thread-122976] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:34:10.345 [DEBUG] [Thread-122976] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:34:10.345 [INFO] [Thread-122976] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:34:10.349 [DEBUG] [Thread-122976] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:34:10.349 [DEBUG] [Thread-122976] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:34:10.349 [DEBUG] [Thread-122976] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:34:10.349 [DEBUG] [Thread-122976] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:34:10.349 [DEBUG] [Thread-122976] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:34:10.349 [DEBUG] [Thread-122976] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:34:10.349 [DEBUG] [Thread-122976] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:34:10.349 [DEBUG] [Thread-122976] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:34:10.349 [DEBUG] [Thread-122976] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:34:10.349 [DEBUG] [Thread-122976] [transport.py] [_log()] client lang: <none>
2025-11-03T21:34:10.349 [DEBUG] [Thread-122976] [transport.py] [_log()] server lang: <none>
2025-11-03T21:34:10.349 [DEBUG] [Thread-122976] [transport.py] [_log()] kex follows: False
2025-11-03T21:34:10.349 [DEBUG] [Thread-122976] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:34:10.349 [DEBUG] [Thread-122976] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:34:10.349 [DEBUG] [Thread-122976] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:34:10.349 [DEBUG] [Thread-122976] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:34:10.349 [DEBUG] [Thread-122976] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:34:10.349 [DEBUG] [Thread-122976] [transport.py] [_log()] Compression: none
2025-11-03T21:34:10.349 [DEBUG] [Thread-122976] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:34:10.367 [DEBUG] [Thread-122976] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:34:10.368 [DEBUG] [Thread-122976] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:34:10.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:34:10.368 [DEBUG] [Thread-122976] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:34:10.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:34:10.369 [DEBUG] [Thread-122976] [transport.py] [_log()] userauth is OK
2025-11-03T21:34:10.369 [DEBUG] [Thread-122976] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:34:10.369 [DEBUG] [Thread-122976] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:34:10.369 [DEBUG] [Thread-122976] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:34:10.369 [DEBUG] [Thread-122976] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:34:10.381 [INFO] [Thread-122976] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:34:10.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:34:11.024 [DEBUG] [Thread-122976] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:34:11.024 [DEBUG] [Thread-122976] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:34:11.024 [DEBUG] [Thread-122976] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:34:11.064 [DEBUG] [Thread-122976] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:34:11.064 [DEBUG] [Thread-122976] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:34:11.067 [DEBUG] [Thread-122976] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:34:11.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:34:11.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:34:11.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:34:11.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:34:11.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:34:11.085 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:34:11.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:34:11.085 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:34:11.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:34:11.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.815031 -999.00  +18.90  17.09     16   -7.40 1 1 1 1 1     0    0 25.47 -49.68 ZNESW 19.7 17.1 308.6 20.4 19.0 -26.3 18.9 -25.2 18.7 -25.3 19.0 -26.1
2025-11-03T21:34:11.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:34:11.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:34:11.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.815031
2025-11-03T21:34:11.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:34:11.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:34:11.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:34:11.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:34:11.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:34:11.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:33:35', tmtdew=31.95, humidity=10.12, cloud=0.0, wind=15.3, temperature=18.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:34:08', seeing=1.35, atlas_timestamp='2025-11-03T19:33:38.678', atlas_cloud=1, atlas_rain=1, zp_data=[0.008749999999999147, 0.051249999999999574, 0.05125000000000135, 0.06449999999999889, -0.06299999999999883, -0.059749999999999304, -0.07000000000000028, -0.10975000000000001, -0.04350000000000165, 0.10999999999999943, 0.062249999999998806, 0.054999999999999716, 0.15700000000000003, 0.09575000000000067, -0.025000000000000355, -0.3150000000000013, -0.016750000000000043, 0.09249999999999936, 0.16999999999999993, 0.11324999999999896, 0.1739999999999995, -0.13125000000000142, -0.01974999999999838, -1.5672499999999996, 0.036999999999999034, 0.23150000000000048, 0.21075000000000088, 0.15850000000000009, 0.1305000000000014, 0.15500000000000114, 0.1280000000000019, -0.5689999999999991, 0.07574999999999932], zp_timestamp='2025-11-03T19:31:00')
2025-11-03T21:34:11.087 [DEBUG] [Thread-122976] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:34:11.162 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:34:11.173 [DEBUG] [Thread-122979] [transport.py] [_log()] starting thread (client mode): 0xedc65c0
2025-11-03T21:34:11.173 [DEBUG] [Thread-122979] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:34:11.190 [DEBUG] [Thread-122979] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:34:11.190 [INFO] [Thread-122979] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:34:11.198 [DEBUG] [Thread-122979] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:34:11.198 [DEBUG] [Thread-122979] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:34:11.198 [DEBUG] [Thread-122979] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:34:11.198 [DEBUG] [Thread-122979] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:34:11.198 [DEBUG] [Thread-122979] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:34:11.198 [DEBUG] [Thread-122979] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:34:11.198 [DEBUG] [Thread-122979] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:34:11.198 [DEBUG] [Thread-122979] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:34:11.198 [DEBUG] [Thread-122979] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:34:11.198 [DEBUG] [Thread-122979] [transport.py] [_log()] client lang: <none>
2025-11-03T21:34:11.198 [DEBUG] [Thread-122979] [transport.py] [_log()] server lang: <none>
2025-11-03T21:34:11.198 [DEBUG] [Thread-122979] [transport.py] [_log()] kex follows: False
2025-11-03T21:34:11.198 [DEBUG] [Thread-122979] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:34:11.198 [DEBUG] [Thread-122979] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:34:11.198 [DEBUG] [Thread-122979] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:34:11.198 [DEBUG] [Thread-122979] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:34:11.198 [DEBUG] [Thread-122979] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:34:11.198 [DEBUG] [Thread-122979] [transport.py] [_log()] Compression: none
2025-11-03T21:34:11.198 [DEBUG] [Thread-122979] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:34:11.259 [DEBUG] [Thread-122979] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:34:11.260 [DEBUG] [Thread-122979] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:34:11.260 [DEBUG] [Thread-122979] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:34:11.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:34:11.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:34:11.321 [DEBUG] [Thread-122979] [transport.py] [_log()] userauth is OK
2025-11-03T21:34:11.321 [DEBUG] [Thread-122979] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:34:11.321 [DEBUG] [Thread-122979] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:34:11.321 [DEBUG] [Thread-122979] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:34:11.321 [DEBUG] [Thread-122979] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:34:11.337 [INFO] [Thread-122979] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:34:11.337 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:34:11.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:34:12.157 [DEBUG] [Thread-122979] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:34:12.157 [DEBUG] [Thread-122979] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:34:12.207 [DEBUG] [Thread-122979] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:34:12.207 [DEBUG] [Thread-122979] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:34:12.218 [DEBUG] [Thread-122979] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:34:12.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:34:12.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:34:12.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:34:12.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:34:12.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:34:12.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:34:12.258 [DEBUG] [Thread-122979] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:34:25.281 [DEBUG] [Thread-122981 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:34:31.220 [DEBUG] [Thread-122982 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:34:40.335 [DEBUG] [Thread-122983 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:34:42.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:34:42.280 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:34:42.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:34:42.909 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:34:42.910 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:34:43.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 34, 8), 32.03, 10.05, 0.0, 16.16, 18.68, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:34:43.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:34:08
2025-11-03T21:34:43.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:34:43.489 [DEBUG] [Thread-122984] [transport.py] [_log()] starting thread (client mode): 0xed36770
2025-11-03T21:34:43.489 [DEBUG] [Thread-122984] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:34:43.513 [DEBUG] [Thread-122984] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:34:43.513 [INFO] [Thread-122984] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:34:43.515 [DEBUG] [Thread-122984] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:34:43.516 [DEBUG] [Thread-122984] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:34:43.516 [DEBUG] [Thread-122984] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:34:43.516 [DEBUG] [Thread-122984] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:34:43.516 [DEBUG] [Thread-122984] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:34:43.516 [DEBUG] [Thread-122984] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:34:43.516 [DEBUG] [Thread-122984] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:34:43.516 [DEBUG] [Thread-122984] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:34:43.516 [DEBUG] [Thread-122984] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:34:43.516 [DEBUG] [Thread-122984] [transport.py] [_log()] client lang: <none>
2025-11-03T21:34:43.516 [DEBUG] [Thread-122984] [transport.py] [_log()] server lang: <none>
2025-11-03T21:34:43.516 [DEBUG] [Thread-122984] [transport.py] [_log()] kex follows: False
2025-11-03T21:34:43.516 [DEBUG] [Thread-122984] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:34:43.516 [DEBUG] [Thread-122984] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:34:43.516 [DEBUG] [Thread-122984] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:34:43.516 [DEBUG] [Thread-122984] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:34:43.516 [DEBUG] [Thread-122984] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:34:43.516 [DEBUG] [Thread-122984] [transport.py] [_log()] Compression: none
2025-11-03T21:34:43.516 [DEBUG] [Thread-122984] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:34:43.532 [DEBUG] [Thread-122984] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:34:43.532 [DEBUG] [Thread-122984] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:34:43.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:34:43.533 [DEBUG] [Thread-122984] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:34:43.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:34:43.533 [DEBUG] [Thread-122984] [transport.py] [_log()] userauth is OK
2025-11-03T21:34:43.533 [DEBUG] [Thread-122984] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:34:43.533 [DEBUG] [Thread-122984] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:34:43.533 [DEBUG] [Thread-122984] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:34:43.533 [DEBUG] [Thread-122984] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:34:43.543 [INFO] [Thread-122984] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:34:43.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:34:44.141 [DEBUG] [Thread-122984] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:34:44.142 [DEBUG] [Thread-122984] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:34:44.142 [DEBUG] [Thread-122984] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:34:44.182 [DEBUG] [Thread-122984] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:34:44.182 [DEBUG] [Thread-122984] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:34:44.184 [DEBUG] [Thread-122984] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:34:44.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:34:44.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:34:44.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:34:44.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:34:44.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:34:44.202 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:34:44.202 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:34:44.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:34:44.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:34:44.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.815378 -999.00  +19.10  16.67     15   -7.40 1 1 1 1 1     0    0 25.17 -52.46 ZNESW 18.3 16.7 310.8 25.3 19.1 -26.5 18.9 -25.5 18.8 -24.6 19.0 -26.3
2025-11-03T21:34:44.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:34:44.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:34:44.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.815378
2025-11-03T21:34:44.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:34:44.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:34:44.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:34:44.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:34:44.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:34:44.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:34:08', tmtdew=32.03, humidity=10.05, cloud=0.0, wind=16.16, temperature=18.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:34:08', seeing=1.35, atlas_timestamp='2025-11-03T19:34:08.659', atlas_cloud=1, atlas_rain=1, zp_data=[0.008749999999999147, 0.051249999999999574, 0.05125000000000135, 0.06449999999999889, -0.06299999999999883, -0.059749999999999304, -0.07000000000000028, -0.10975000000000001, -0.04350000000000165, 0.10999999999999943, 0.062249999999998806, 0.054999999999999716, 0.15700000000000003, 0.09575000000000067, -0.025000000000000355, -0.3150000000000013, -0.016750000000000043, 0.09249999999999936, 0.16999999999999993, 0.11324999999999896, 0.1739999999999995, -0.13125000000000142, -0.01974999999999838, -1.5672499999999996, 0.036999999999999034, 0.23150000000000048, 0.21075000000000088, 0.15850000000000009, 0.1305000000000014, 0.15500000000000114, 0.1280000000000019, -0.5689999999999991, 0.07574999999999932], zp_timestamp='2025-11-03T19:31:00')
2025-11-03T21:34:44.203 [DEBUG] [Thread-122984] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:34:44.278 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:34:44.291 [DEBUG] [Thread-122987] [transport.py] [_log()] starting thread (client mode): 0x117615d0
2025-11-03T21:34:44.291 [DEBUG] [Thread-122987] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:34:44.307 [DEBUG] [Thread-122987] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:34:44.307 [INFO] [Thread-122987] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:34:44.315 [DEBUG] [Thread-122987] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:34:44.315 [DEBUG] [Thread-122987] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:34:44.315 [DEBUG] [Thread-122987] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:34:44.315 [DEBUG] [Thread-122987] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:34:44.315 [DEBUG] [Thread-122987] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:34:44.315 [DEBUG] [Thread-122987] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:34:44.315 [DEBUG] [Thread-122987] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:34:44.315 [DEBUG] [Thread-122987] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:34:44.315 [DEBUG] [Thread-122987] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:34:44.315 [DEBUG] [Thread-122987] [transport.py] [_log()] client lang: <none>
2025-11-03T21:34:44.315 [DEBUG] [Thread-122987] [transport.py] [_log()] server lang: <none>
2025-11-03T21:34:44.315 [DEBUG] [Thread-122987] [transport.py] [_log()] kex follows: False
2025-11-03T21:34:44.315 [DEBUG] [Thread-122987] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:34:44.315 [DEBUG] [Thread-122987] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:34:44.315 [DEBUG] [Thread-122987] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:34:44.315 [DEBUG] [Thread-122987] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:34:44.315 [DEBUG] [Thread-122987] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:34:44.315 [DEBUG] [Thread-122987] [transport.py] [_log()] Compression: none
2025-11-03T21:34:44.315 [DEBUG] [Thread-122987] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:34:44.370 [DEBUG] [Thread-122987] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:34:44.370 [DEBUG] [Thread-122987] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:34:44.370 [DEBUG] [Thread-122987] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:34:44.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:34:44.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:34:44.428 [DEBUG] [Thread-122987] [transport.py] [_log()] userauth is OK
2025-11-03T21:34:44.428 [DEBUG] [Thread-122987] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:34:44.428 [DEBUG] [Thread-122987] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:34:44.428 [DEBUG] [Thread-122987] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:34:44.428 [DEBUG] [Thread-122987] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:34:44.447 [INFO] [Thread-122987] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:34:44.447 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:34:44.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:34:45.283 [DEBUG] [Thread-122987] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:34:45.284 [DEBUG] [Thread-122987] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:34:45.332 [DEBUG] [Thread-122987] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:34:45.332 [DEBUG] [Thread-122987] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:34:45.340 [DEBUG] [Thread-122987] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:34:45.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:34:45.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:34:45.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:34:45.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:34:45.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:34:45.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:34:45.377 [DEBUG] [Thread-122987] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:34:55.366 [DEBUG] [Thread-122989 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:35:10.419 [DEBUG] [Thread-122990 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:35:15.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:35:15.381 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:35:15.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:35:16.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 34, 41), 31.96, 9.99, 0.0, 15.46, 18.73, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:35:16.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:34:41
2025-11-03T21:35:16.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:35:16.539 [DEBUG] [Thread-122991] [transport.py] [_log()] starting thread (client mode): 0xed8a590
2025-11-03T21:35:16.539 [DEBUG] [Thread-122991] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:35:16.559 [DEBUG] [Thread-122991] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:35:16.559 [INFO] [Thread-122991] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:35:16.562 [DEBUG] [Thread-122991] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:35:16.562 [DEBUG] [Thread-122991] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:35:16.562 [DEBUG] [Thread-122991] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:35:16.563 [DEBUG] [Thread-122991] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:35:16.563 [DEBUG] [Thread-122991] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:35:16.563 [DEBUG] [Thread-122991] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:35:16.563 [DEBUG] [Thread-122991] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:35:16.563 [DEBUG] [Thread-122991] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:35:16.563 [DEBUG] [Thread-122991] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:35:16.563 [DEBUG] [Thread-122991] [transport.py] [_log()] client lang: <none>
2025-11-03T21:35:16.563 [DEBUG] [Thread-122991] [transport.py] [_log()] server lang: <none>
2025-11-03T21:35:16.563 [DEBUG] [Thread-122991] [transport.py] [_log()] kex follows: False
2025-11-03T21:35:16.563 [DEBUG] [Thread-122991] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:35:16.563 [DEBUG] [Thread-122991] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:35:16.563 [DEBUG] [Thread-122991] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:35:16.563 [DEBUG] [Thread-122991] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:35:16.563 [DEBUG] [Thread-122991] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:35:16.563 [DEBUG] [Thread-122991] [transport.py] [_log()] Compression: none
2025-11-03T21:35:16.563 [DEBUG] [Thread-122991] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:35:16.570 [DEBUG] [Thread-122991] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:35:16.570 [DEBUG] [Thread-122991] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:35:16.570 [DEBUG] [Thread-122991] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:35:16.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:35:16.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:35:16.571 [DEBUG] [Thread-122991] [transport.py] [_log()] userauth is OK
2025-11-03T21:35:16.571 [DEBUG] [Thread-122991] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:35:16.571 [DEBUG] [Thread-122991] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:35:16.571 [DEBUG] [Thread-122991] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:35:16.571 [DEBUG] [Thread-122991] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:35:16.581 [INFO] [Thread-122991] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:35:16.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:35:17.190 [DEBUG] [Thread-122991] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:35:17.190 [DEBUG] [Thread-122991] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:35:17.190 [DEBUG] [Thread-122991] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:35:17.231 [DEBUG] [Thread-122991] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:35:17.231 [DEBUG] [Thread-122991] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:35:17.234 [DEBUG] [Thread-122991] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:35:17.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:35:17.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:35:17.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:35:17.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:35:17.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:35:17.253 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:35:17.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:35:17.253 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:35:17.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:35:17.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.816072 -999.00  +18.90  15.24     15   -7.80 1 1 1 1 1     0    0 25.83 -51.99 ZNESW 13.8 15.2 309.6 20.8 19.0 -26.6 18.9 -25.6 18.7 -25.3 18.9 -26.1
2025-11-03T21:35:17.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:35:17.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:35:17.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.816072
2025-11-03T21:35:17.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:35:17.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:35:17.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:35:17.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:35:17.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:35:17.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:34:41', tmtdew=31.96, humidity=9.99, cloud=0.0, wind=15.46, temperature=18.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:35:14', seeing=1.29, atlas_timestamp='2025-11-03T19:35:08.621', atlas_cloud=1, atlas_rain=1, zp_data=[0.008749999999999147, 0.051249999999999574, 0.05125000000000135, 0.06449999999999889, -0.06299999999999883, -0.059749999999999304, -0.07000000000000028, -0.10975000000000001, -0.04350000000000165, 0.10999999999999943, 0.062249999999998806, 0.054999999999999716, 0.15700000000000003, 0.09575000000000067, -0.025000000000000355, -0.3150000000000013, -0.016750000000000043, 0.09249999999999936, 0.16999999999999993, 0.11324999999999896, 0.1739999999999995, -0.13125000000000142, -0.01974999999999838, -1.5672499999999996, 0.036999999999999034, 0.23150000000000048, 0.21075000000000088, 0.15850000000000009, 0.1305000000000014, 0.15500000000000114, 0.1280000000000019, -0.5689999999999991, 0.07574999999999932], zp_timestamp='2025-11-03T19:31:00')
2025-11-03T21:35:17.254 [DEBUG] [Thread-122991] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:35:17.328 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:35:17.339 [DEBUG] [Thread-122994] [transport.py] [_log()] starting thread (client mode): 0x117612d0
2025-11-03T21:35:17.339 [DEBUG] [Thread-122994] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:35:17.354 [DEBUG] [Thread-122994] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:35:17.354 [INFO] [Thread-122994] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:35:17.361 [DEBUG] [Thread-122994] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:35:17.361 [DEBUG] [Thread-122994] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:35:17.361 [DEBUG] [Thread-122994] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:35:17.361 [DEBUG] [Thread-122994] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:35:17.361 [DEBUG] [Thread-122994] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:35:17.362 [DEBUG] [Thread-122994] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:35:17.362 [DEBUG] [Thread-122994] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:35:17.362 [DEBUG] [Thread-122994] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:35:17.362 [DEBUG] [Thread-122994] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:35:17.362 [DEBUG] [Thread-122994] [transport.py] [_log()] client lang: <none>
2025-11-03T21:35:17.362 [DEBUG] [Thread-122994] [transport.py] [_log()] server lang: <none>
2025-11-03T21:35:17.362 [DEBUG] [Thread-122994] [transport.py] [_log()] kex follows: False
2025-11-03T21:35:17.362 [DEBUG] [Thread-122994] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:35:17.362 [DEBUG] [Thread-122994] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:35:17.362 [DEBUG] [Thread-122994] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:35:17.362 [DEBUG] [Thread-122994] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:35:17.362 [DEBUG] [Thread-122994] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:35:17.362 [DEBUG] [Thread-122994] [transport.py] [_log()] Compression: none
2025-11-03T21:35:17.362 [DEBUG] [Thread-122994] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:35:17.418 [DEBUG] [Thread-122994] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:35:17.419 [DEBUG] [Thread-122994] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:35:17.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:35:17.420 [DEBUG] [Thread-122994] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:35:17.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:35:17.477 [DEBUG] [Thread-122994] [transport.py] [_log()] userauth is OK
2025-11-03T21:35:17.477 [DEBUG] [Thread-122994] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:35:17.477 [DEBUG] [Thread-122994] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:35:17.477 [DEBUG] [Thread-122994] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:35:17.477 [DEBUG] [Thread-122994] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:35:17.497 [INFO] [Thread-122994] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:35:17.497 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:35:17.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:35:18.332 [DEBUG] [Thread-122994] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:35:18.333 [DEBUG] [Thread-122994] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:35:18.381 [DEBUG] [Thread-122994] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:35:18.382 [DEBUG] [Thread-122994] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:35:18.392 [DEBUG] [Thread-122994] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:35:18.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:35:18.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:35:18.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:35:18.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:35:18.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:35:18.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:35:18.431 [DEBUG] [Thread-122994] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:35:25.448 [DEBUG] [Thread-122996 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:35:31.549 [DEBUG] [Thread-122997 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:35:40.489 [DEBUG] [Thread-122998 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:35:43.121 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:35:43.123 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:35:48.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:35:48.453 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:35:48.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:35:49.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 35, 14), 31.9, 10.04, 0.0, 15.53, 18.74, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:35:49.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:35:14
2025-11-03T21:35:49.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:35:49.592 [DEBUG] [Thread-122999] [transport.py] [_log()] starting thread (client mode): 0xedc5b40
2025-11-03T21:35:49.592 [DEBUG] [Thread-122999] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:35:49.613 [DEBUG] [Thread-122999] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:35:49.613 [INFO] [Thread-122999] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:35:49.614 [DEBUG] [Thread-122999] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:35:49.615 [DEBUG] [Thread-122999] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:35:49.615 [DEBUG] [Thread-122999] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:35:49.615 [DEBUG] [Thread-122999] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:35:49.615 [DEBUG] [Thread-122999] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:35:49.615 [DEBUG] [Thread-122999] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:35:49.615 [DEBUG] [Thread-122999] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:35:49.615 [DEBUG] [Thread-122999] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:35:49.615 [DEBUG] [Thread-122999] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:35:49.615 [DEBUG] [Thread-122999] [transport.py] [_log()] client lang: <none>
2025-11-03T21:35:49.615 [DEBUG] [Thread-122999] [transport.py] [_log()] server lang: <none>
2025-11-03T21:35:49.615 [DEBUG] [Thread-122999] [transport.py] [_log()] kex follows: False
2025-11-03T21:35:49.615 [DEBUG] [Thread-122999] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:35:49.615 [DEBUG] [Thread-122999] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:35:49.615 [DEBUG] [Thread-122999] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:35:49.615 [DEBUG] [Thread-122999] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:35:49.615 [DEBUG] [Thread-122999] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:35:49.615 [DEBUG] [Thread-122999] [transport.py] [_log()] Compression: none
2025-11-03T21:35:49.615 [DEBUG] [Thread-122999] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:35:49.631 [DEBUG] [Thread-122999] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:35:49.631 [DEBUG] [Thread-122999] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:35:49.631 [DEBUG] [Thread-122999] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:35:49.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:35:49.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:35:49.632 [DEBUG] [Thread-122999] [transport.py] [_log()] userauth is OK
2025-11-03T21:35:49.632 [DEBUG] [Thread-122999] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:35:49.632 [DEBUG] [Thread-122999] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:35:49.632 [DEBUG] [Thread-122999] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:35:49.632 [DEBUG] [Thread-122999] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:35:49.641 [INFO] [Thread-122999] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:35:49.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:35:50.309 [DEBUG] [Thread-122999] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:35:50.309 [DEBUG] [Thread-122999] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:35:50.309 [DEBUG] [Thread-122999] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:35:50.350 [DEBUG] [Thread-122999] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:35:50.350 [DEBUG] [Thread-122999] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:35:50.353 [DEBUG] [Thread-122999] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:35:50.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:35:50.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:35:50.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:35:50.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:35:50.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:35:50.370 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:35:50.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:35:50.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:35:50.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:35:50.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.816072 -999.00  +18.90  15.24     15   -7.80 1 1 1 1 1     0    0 25.83 -51.99 ZNESW 13.8 15.2 309.6 20.8 19.0 -26.6 18.9 -25.6 18.7 -25.3 18.9 -26.1
2025-11-03T21:35:50.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:35:50.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:35:50.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.816072
2025-11-03T21:35:50.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:35:50.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:35:50.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:35:50.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:35:50.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:35:50.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:35:14', tmtdew=31.9, humidity=10.04, cloud=0.0, wind=15.53, temperature=18.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:35:47', seeing=1.27, atlas_timestamp='2025-11-03T19:35:08.621', atlas_cloud=1, atlas_rain=1, zp_data=[0.005749999999999034, 0.026250000000000995, 0.035250000000001336, -0.009500000000000952, 0.0019999999999988916, 0.022750000000002046, -0.11150000000000126, 0.10025000000000084, 0.02099999999999902, 0.07099999999999973, 0.053249999999998465, 0.06600000000000072, 0.125, 0.05824999999999925, 0.010999999999999233, -0.4314999999999998, -0.03825000000000145, -0.0030000000000001137, 0.07850000000000001, 0.06024999999999814, 0.17299999999999827, -0.12425000000000175, -0.08974999999999866, -1.39325, 0.01249999999999929, 0.13750000000000107, 0.1977499999999992, 0.20749999999999957, 0.07099999999999973, 0.136000000000001, 0.10300000000000153, -0.5169999999999995, 0.12174999999999869], zp_timestamp='2025-11-03T19:34:00')
2025-11-03T21:35:50.378 [DEBUG] [Thread-122999] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:35:50.451 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:35:50.465 [DEBUG] [Thread-123002] [transport.py] [_log()] starting thread (client mode): 0x117ea320
2025-11-03T21:35:50.465 [DEBUG] [Thread-123002] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:35:50.482 [DEBUG] [Thread-123002] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:35:50.482 [INFO] [Thread-123002] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:35:50.490 [DEBUG] [Thread-123002] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:35:50.490 [DEBUG] [Thread-123002] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:35:50.490 [DEBUG] [Thread-123002] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:35:50.490 [DEBUG] [Thread-123002] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:35:50.490 [DEBUG] [Thread-123002] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:35:50.490 [DEBUG] [Thread-123002] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:35:50.490 [DEBUG] [Thread-123002] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:35:50.490 [DEBUG] [Thread-123002] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:35:50.490 [DEBUG] [Thread-123002] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:35:50.490 [DEBUG] [Thread-123002] [transport.py] [_log()] client lang: <none>
2025-11-03T21:35:50.490 [DEBUG] [Thread-123002] [transport.py] [_log()] server lang: <none>
2025-11-03T21:35:50.490 [DEBUG] [Thread-123002] [transport.py] [_log()] kex follows: False
2025-11-03T21:35:50.490 [DEBUG] [Thread-123002] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:35:50.490 [DEBUG] [Thread-123002] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:35:50.490 [DEBUG] [Thread-123002] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:35:50.490 [DEBUG] [Thread-123002] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:35:50.490 [DEBUG] [Thread-123002] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:35:50.490 [DEBUG] [Thread-123002] [transport.py] [_log()] Compression: none
2025-11-03T21:35:50.490 [DEBUG] [Thread-123002] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:35:50.556 [DEBUG] [Thread-123002] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:35:50.557 [DEBUG] [Thread-123002] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:35:50.557 [DEBUG] [Thread-123002] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:35:50.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:35:50.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:35:50.623 [DEBUG] [Thread-123002] [transport.py] [_log()] userauth is OK
2025-11-03T21:35:50.623 [DEBUG] [Thread-123002] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:35:50.623 [DEBUG] [Thread-123002] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:35:50.623 [DEBUG] [Thread-123002] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:35:50.623 [DEBUG] [Thread-123002] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:35:50.641 [INFO] [Thread-123002] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:35:50.641 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:35:50.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:35:51.494 [DEBUG] [Thread-123002] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:35:51.494 [DEBUG] [Thread-123002] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:35:51.542 [DEBUG] [Thread-123002] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:35:51.542 [DEBUG] [Thread-123002] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:35:51.552 [DEBUG] [Thread-123002] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:35:51.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:35:51.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:35:51.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:35:51.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:35:51.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:35:51.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:35:51.588 [DEBUG] [Thread-123002] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:35:55.532 [DEBUG] [Thread-123004 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:36:10.581 [DEBUG] [Thread-123005 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:36:21.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:36:21.610 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:36:21.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:36:24.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 35, 46), 31.85, 10.12, 0.0, 15.46, 18.69, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:36:24.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:35:46
2025-11-03T21:36:25.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:36:25.233 [DEBUG] [Thread-123006] [transport.py] [_log()] starting thread (client mode): 0xed37490
2025-11-03T21:36:25.233 [DEBUG] [Thread-123006] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:36:25.256 [DEBUG] [Thread-123006] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:36:25.256 [INFO] [Thread-123006] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:36:25.260 [DEBUG] [Thread-123006] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:36:25.260 [DEBUG] [Thread-123006] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:36:25.261 [DEBUG] [Thread-123006] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:36:25.261 [DEBUG] [Thread-123006] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:36:25.261 [DEBUG] [Thread-123006] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:36:25.261 [DEBUG] [Thread-123006] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:36:25.261 [DEBUG] [Thread-123006] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:36:25.261 [DEBUG] [Thread-123006] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:36:25.261 [DEBUG] [Thread-123006] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:36:25.261 [DEBUG] [Thread-123006] [transport.py] [_log()] client lang: <none>
2025-11-03T21:36:25.261 [DEBUG] [Thread-123006] [transport.py] [_log()] server lang: <none>
2025-11-03T21:36:25.261 [DEBUG] [Thread-123006] [transport.py] [_log()] kex follows: False
2025-11-03T21:36:25.261 [DEBUG] [Thread-123006] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:36:25.262 [DEBUG] [Thread-123006] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:36:25.262 [DEBUG] [Thread-123006] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:36:25.262 [DEBUG] [Thread-123006] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:36:25.262 [DEBUG] [Thread-123006] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:36:25.262 [DEBUG] [Thread-123006] [transport.py] [_log()] Compression: none
2025-11-03T21:36:25.262 [DEBUG] [Thread-123006] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:36:25.280 [DEBUG] [Thread-123006] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:36:25.280 [DEBUG] [Thread-123006] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:36:25.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:36:25.281 [DEBUG] [Thread-123006] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:36:25.282 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:36:25.283 [DEBUG] [Thread-123006] [transport.py] [_log()] userauth is OK
2025-11-03T21:36:25.283 [DEBUG] [Thread-123006] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:36:25.283 [DEBUG] [Thread-123006] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:36:25.283 [DEBUG] [Thread-123006] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:36:25.283 [DEBUG] [Thread-123006] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:36:25.308 [INFO] [Thread-123006] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:36:25.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:36:25.619 [DEBUG] [Thread-123008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:36:25.923 [DEBUG] [Thread-123006] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:36:25.924 [DEBUG] [Thread-123006] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:36:25.924 [DEBUG] [Thread-123006] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:36:25.963 [DEBUG] [Thread-123006] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:36:25.963 [DEBUG] [Thread-123006] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:36:25.966 [DEBUG] [Thread-123006] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:36:25.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:36:25.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:36:25.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:36:25.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:36:25.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:36:25.990 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:36:25.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:36:25.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:36:25.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:36:25.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.816420 -999.00  +18.80  13.73     15   -7.80 1 1 1 1 1     0    0 25.56 -54.92 ZNESW 14.8 13.7 319.0 17.2 19.0 -26.6 18.9 -25.5 18.7 -25.3 19.0 -26.0
2025-11-03T21:36:25.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:36:25.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:36:25.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.816420
2025-11-03T21:36:25.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:36:25.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:36:25.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:36:25.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:36:25.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:36:25.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:35:46', tmtdew=31.85, humidity=10.12, cloud=0.0, wind=15.46, temperature=18.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:36:19', seeing=1.27, atlas_timestamp='2025-11-03T19:35:38.688', atlas_cloud=1, atlas_rain=1, zp_data=[0.005749999999999034, 0.026250000000000995, 0.035250000000001336, -0.009500000000000952, 0.0019999999999988916, 0.022750000000002046, -0.11150000000000126, 0.10025000000000084, 0.02099999999999902, 0.07099999999999973, 0.053249999999998465, 0.06600000000000072, 0.125, 0.05824999999999925, 0.010999999999999233, -0.4314999999999998, -0.03825000000000145, -0.0030000000000001137, 0.07850000000000001, 0.06024999999999814, 0.17299999999999827, -0.12425000000000175, -0.08974999999999866, -1.39325, 0.01249999999999929, 0.13750000000000107, 0.1977499999999992, 0.20749999999999957, 0.07099999999999973, 0.136000000000001, 0.10300000000000153, -0.5169999999999995, 0.12174999999999869], zp_timestamp='2025-11-03T19:34:00')
2025-11-03T21:36:25.993 [DEBUG] [Thread-123006] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:36:26.079 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:36:26.094 [DEBUG] [Thread-123010] [transport.py] [_log()] starting thread (client mode): 0x11761870
2025-11-03T21:36:26.094 [DEBUG] [Thread-123010] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:36:26.115 [DEBUG] [Thread-123010] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:36:26.115 [INFO] [Thread-123010] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:36:26.123 [DEBUG] [Thread-123010] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:36:26.124 [DEBUG] [Thread-123010] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:36:26.124 [DEBUG] [Thread-123010] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:36:26.124 [DEBUG] [Thread-123010] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:36:26.124 [DEBUG] [Thread-123010] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:36:26.124 [DEBUG] [Thread-123010] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:36:26.124 [DEBUG] [Thread-123010] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:36:26.124 [DEBUG] [Thread-123010] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:36:26.124 [DEBUG] [Thread-123010] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:36:26.124 [DEBUG] [Thread-123010] [transport.py] [_log()] client lang: <none>
2025-11-03T21:36:26.124 [DEBUG] [Thread-123010] [transport.py] [_log()] server lang: <none>
2025-11-03T21:36:26.124 [DEBUG] [Thread-123010] [transport.py] [_log()] kex follows: False
2025-11-03T21:36:26.124 [DEBUG] [Thread-123010] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:36:26.124 [DEBUG] [Thread-123010] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:36:26.124 [DEBUG] [Thread-123010] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:36:26.124 [DEBUG] [Thread-123010] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:36:26.124 [DEBUG] [Thread-123010] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:36:26.124 [DEBUG] [Thread-123010] [transport.py] [_log()] Compression: none
2025-11-03T21:36:26.124 [DEBUG] [Thread-123010] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:36:26.189 [DEBUG] [Thread-123010] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:36:26.189 [DEBUG] [Thread-123010] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:36:26.190 [DEBUG] [Thread-123010] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:36:26.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:36:26.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:36:26.244 [DEBUG] [Thread-123010] [transport.py] [_log()] userauth is OK
2025-11-03T21:36:26.244 [DEBUG] [Thread-123010] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:36:26.244 [DEBUG] [Thread-123010] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:36:26.244 [DEBUG] [Thread-123010] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:36:26.244 [DEBUG] [Thread-123010] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:36:26.263 [INFO] [Thread-123010] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:36:26.264 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:36:26.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:36:27.116 [DEBUG] [Thread-123010] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:36:27.116 [DEBUG] [Thread-123010] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:36:27.167 [DEBUG] [Thread-123010] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:36:27.168 [DEBUG] [Thread-123010] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:36:27.177 [DEBUG] [Thread-123010] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:36:27.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:36:27.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:36:27.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:36:27.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:36:27.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:36:27.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:36:27.214 [DEBUG] [Thread-123010] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:36:31.645 [DEBUG] [Thread-123012 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:36:32.861 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:36:36.057 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:36:40.655 [DEBUG] [Thread-123013 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:36:41.091 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:36:43.325 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:36:43.326 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:36:46.487 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:36:55.702 [DEBUG] [Thread-123014 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:36:57.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:36:57.237 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:36:57.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:36:58.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 36, 19), 31.92, 10.07, 0.0, 15.88, 18.71, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:36:58.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:36:19
2025-11-03T21:36:58.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:36:58.346 [DEBUG] [Thread-123015] [transport.py] [_log()] starting thread (client mode): 0xeda1cf0
2025-11-03T21:36:58.347 [DEBUG] [Thread-123015] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:36:58.354 [DEBUG] [Thread-123015] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:36:58.354 [INFO] [Thread-123015] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:36:58.358 [DEBUG] [Thread-123015] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:36:58.358 [DEBUG] [Thread-123015] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:36:58.358 [DEBUG] [Thread-123015] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:36:58.358 [DEBUG] [Thread-123015] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:36:58.358 [DEBUG] [Thread-123015] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:36:58.358 [DEBUG] [Thread-123015] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:36:58.358 [DEBUG] [Thread-123015] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:36:58.358 [DEBUG] [Thread-123015] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:36:58.358 [DEBUG] [Thread-123015] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:36:58.358 [DEBUG] [Thread-123015] [transport.py] [_log()] client lang: <none>
2025-11-03T21:36:58.358 [DEBUG] [Thread-123015] [transport.py] [_log()] server lang: <none>
2025-11-03T21:36:58.358 [DEBUG] [Thread-123015] [transport.py] [_log()] kex follows: False
2025-11-03T21:36:58.358 [DEBUG] [Thread-123015] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:36:58.359 [DEBUG] [Thread-123015] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:36:58.359 [DEBUG] [Thread-123015] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:36:58.359 [DEBUG] [Thread-123015] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:36:58.359 [DEBUG] [Thread-123015] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:36:58.359 [DEBUG] [Thread-123015] [transport.py] [_log()] Compression: none
2025-11-03T21:36:58.359 [DEBUG] [Thread-123015] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:36:58.394 [DEBUG] [Thread-123015] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:36:58.397 [DEBUG] [Thread-123015] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:36:58.399 [DEBUG] [Thread-123015] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:36:58.400 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:36:58.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:36:58.404 [DEBUG] [Thread-123015] [transport.py] [_log()] userauth is OK
2025-11-03T21:36:58.404 [DEBUG] [Thread-123015] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:36:58.405 [DEBUG] [Thread-123015] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:36:58.405 [DEBUG] [Thread-123015] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:36:58.405 [DEBUG] [Thread-123015] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:36:58.431 [INFO] [Thread-123015] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:36:58.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:36:59.088 [DEBUG] [Thread-123015] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:36:59.089 [DEBUG] [Thread-123015] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:36:59.089 [DEBUG] [Thread-123015] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:36:59.130 [DEBUG] [Thread-123015] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:36:59.130 [DEBUG] [Thread-123015] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:36:59.133 [DEBUG] [Thread-123015] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:36:59.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:36:59.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:36:59.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:36:59.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:36:59.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:36:59.161 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:36:59.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:36:59.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:36:59.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:36:59.163 [DEBUG] [Thread-123015] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:36:59.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.816767 -999.00  +18.80  17.87     15   -7.90 1 1 1 1 1     0    0 24.94 -56.93 ZNESW 17.3 17.9 307.8 21.4 18.9 -26.5 18.9 -25.4 18.7 -25.3 18.9 -26.3
2025-11-03T21:36:59.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:36:59.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:36:59.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.816767
2025-11-03T21:36:59.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:36:59.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:36:59.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:36:59.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:36:59.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:36:59.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:36:19', tmtdew=31.92, humidity=10.07, cloud=0.0, wind=15.88, temperature=18.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:36:55', seeing=1.26, atlas_timestamp='2025-11-03T19:36:08.669', atlas_cloud=1, atlas_rain=1, zp_data=[0.005749999999999034, 0.026250000000000995, 0.035250000000001336, -0.009500000000000952, 0.0019999999999988916, 0.022750000000002046, -0.11150000000000126, 0.10025000000000084, 0.02099999999999902, 0.07099999999999973, 0.053249999999998465, 0.06600000000000072, 0.125, 0.05824999999999925, 0.010999999999999233, -0.4314999999999998, -0.03825000000000145, -0.0030000000000001137, 0.07850000000000001, 0.06024999999999814, 0.17299999999999827, -0.12425000000000175, -0.08974999999999866, -1.39325, 0.01249999999999929, 0.13750000000000107, 0.1977499999999992, 0.20749999999999957, 0.07099999999999973, 0.136000000000001, 0.10300000000000153, -0.5169999999999995, 0.12174999999999869], zp_timestamp='2025-11-03T19:34:00')
2025-11-03T21:36:59.275 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:36:59.290 [DEBUG] [Thread-123018] [transport.py] [_log()] starting thread (client mode): 0xeda2740
2025-11-03T21:36:59.290 [DEBUG] [Thread-123018] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:36:59.308 [DEBUG] [Thread-123018] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:36:59.309 [INFO] [Thread-123018] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:36:59.319 [DEBUG] [Thread-123018] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:36:59.319 [DEBUG] [Thread-123018] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:36:59.320 [DEBUG] [Thread-123018] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:36:59.320 [DEBUG] [Thread-123018] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:36:59.320 [DEBUG] [Thread-123018] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:36:59.320 [DEBUG] [Thread-123018] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:36:59.320 [DEBUG] [Thread-123018] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:36:59.320 [DEBUG] [Thread-123018] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:36:59.320 [DEBUG] [Thread-123018] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:36:59.320 [DEBUG] [Thread-123018] [transport.py] [_log()] client lang: <none>
2025-11-03T21:36:59.321 [DEBUG] [Thread-123018] [transport.py] [_log()] server lang: <none>
2025-11-03T21:36:59.321 [DEBUG] [Thread-123018] [transport.py] [_log()] kex follows: False
2025-11-03T21:36:59.321 [DEBUG] [Thread-123018] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:36:59.321 [DEBUG] [Thread-123018] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:36:59.321 [DEBUG] [Thread-123018] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:36:59.321 [DEBUG] [Thread-123018] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:36:59.321 [DEBUG] [Thread-123018] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:36:59.321 [DEBUG] [Thread-123018] [transport.py] [_log()] Compression: none
2025-11-03T21:36:59.321 [DEBUG] [Thread-123018] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:36:59.380 [DEBUG] [Thread-123018] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:36:59.380 [DEBUG] [Thread-123018] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:36:59.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:36:59.381 [DEBUG] [Thread-123018] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:36:59.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:36:59.435 [DEBUG] [Thread-123018] [transport.py] [_log()] userauth is OK
2025-11-03T21:36:59.435 [DEBUG] [Thread-123018] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:36:59.436 [DEBUG] [Thread-123018] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:36:59.436 [DEBUG] [Thread-123018] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:36:59.436 [DEBUG] [Thread-123018] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:36:59.455 [INFO] [Thread-123018] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:36:59.456 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:36:59.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:37:00.285 [DEBUG] [Thread-123018] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:37:00.285 [DEBUG] [Thread-123018] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:37:00.332 [DEBUG] [Thread-123018] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:37:00.333 [DEBUG] [Thread-123018] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:37:00.341 [DEBUG] [Thread-123018] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:37:00.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:37:00.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:37:00.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:37:00.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:37:00.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:37:00.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:37:00.379 [DEBUG] [Thread-123018] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:37:05.843 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:37:10.228 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:37:10.741 [DEBUG] [Thread-123020 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:37:25.782 [DEBUG] [Thread-123021 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:37:29.615 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:37:30.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:37:30.376 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:37:30.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:37:31.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 37, 27), 32.04, 10.0, 0.0, 18.67, 18.66, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:37:31.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:37:27
2025-11-03T21:37:31.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:37:31.954 [DEBUG] [Thread-123022] [transport.py] [_log()] starting thread (client mode): 0xed10610
2025-11-03T21:37:31.957 [DEBUG] [Thread-123022] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:37:31.957 [DEBUG] [Thread-123022] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:37:31.958 [INFO] [Thread-123022] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:37:31.971 [DEBUG] [Thread-123022] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:37:31.971 [DEBUG] [Thread-123022] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:37:31.972 [DEBUG] [Thread-123022] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:37:31.972 [DEBUG] [Thread-123022] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:37:31.972 [DEBUG] [Thread-123022] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:37:31.972 [DEBUG] [Thread-123022] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:37:31.972 [DEBUG] [Thread-123022] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:37:31.972 [DEBUG] [Thread-123022] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:37:31.972 [DEBUG] [Thread-123022] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:37:31.972 [DEBUG] [Thread-123022] [transport.py] [_log()] client lang: <none>
2025-11-03T21:37:31.972 [DEBUG] [Thread-123022] [transport.py] [_log()] server lang: <none>
2025-11-03T21:37:31.973 [DEBUG] [Thread-123022] [transport.py] [_log()] kex follows: False
2025-11-03T21:37:31.973 [DEBUG] [Thread-123022] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:37:31.975 [DEBUG] [Thread-123022] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:37:31.975 [DEBUG] [Thread-123022] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:37:31.976 [DEBUG] [Thread-123022] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:37:31.976 [DEBUG] [Thread-123022] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:37:31.976 [DEBUG] [Thread-123022] [transport.py] [_log()] Compression: none
2025-11-03T21:37:31.976 [DEBUG] [Thread-123022] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:37:32.041 [DEBUG] [Thread-123022] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:37:32.056 [DEBUG] [Thread-123022] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:37:32.057 [DEBUG] [Thread-123022] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:37:32.061 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:37:32.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:37:32.069 [DEBUG] [Thread-123022] [transport.py] [_log()] userauth is OK
2025-11-03T21:37:32.069 [DEBUG] [Thread-123022] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:37:32.069 [DEBUG] [Thread-123022] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:37:32.069 [DEBUG] [Thread-123022] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:37:32.069 [DEBUG] [Thread-123022] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:37:32.100 [INFO] [Thread-123022] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:37:32.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:37:32.732 [DEBUG] [Thread-123022] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:37:32.733 [DEBUG] [Thread-123022] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:37:32.737 [DEBUG] [Thread-123022] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:37:32.773 [DEBUG] [Thread-123022] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:37:32.773 [DEBUG] [Thread-123022] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:37:32.779 [DEBUG] [Thread-123022] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:37:32.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:37:32.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:37:32.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:37:32.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:37:32.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:37:32.828 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:37:32.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:37:32.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:37:32.840 [DEBUG] [Thread-123022] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:37:32.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:37:32.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.817114 -999.00  +18.70  15.85     15   -8.10 1 1 1 1 1     0    0 25.07 -56.50 ZNESW 18.0 15.8 310.4 19.6 18.9 -26.5 18.9 -25.3 18.6 -25.3 18.9 -26.2
2025-11-03T21:37:32.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:37:32.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:37:32.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.817114
2025-11-03T21:37:32.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:37:32.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:37:32.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:37:32.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:37:32.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:37:32.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:37:27', tmtdew=32.04, humidity=10.0, cloud=0.0, wind=18.67, temperature=18.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:37:27', seeing=1.26, atlas_timestamp='2025-11-03T19:36:38.650', atlas_cloud=1, atlas_rain=1, zp_data=[0.005749999999999034, 0.026250000000000995, 0.035250000000001336, -0.009500000000000952, 0.0019999999999988916, 0.022750000000002046, -0.11150000000000126, 0.10025000000000084, 0.02099999999999902, 0.07099999999999973, 0.053249999999998465, 0.06600000000000072, 0.125, 0.05824999999999925, 0.010999999999999233, -0.4314999999999998, -0.03825000000000145, -0.0030000000000001137, 0.07850000000000001, 0.06024999999999814, 0.17299999999999827, -0.12425000000000175, -0.08974999999999866, -1.39325, 0.01249999999999929, 0.13750000000000107, 0.1977499999999992, 0.20749999999999957, 0.07099999999999973, 0.136000000000001, 0.10300000000000153, -0.5169999999999995, 0.12174999999999869], zp_timestamp='2025-11-03T19:34:00')
2025-11-03T21:37:33.028 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:37:33.045 [DEBUG] [Thread-123025] [transport.py] [_log()] starting thread (client mode): 0xed36800
2025-11-03T21:37:33.045 [DEBUG] [Thread-123025] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:37:33.059 [DEBUG] [Thread-123025] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:37:33.059 [INFO] [Thread-123025] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:37:33.068 [DEBUG] [Thread-123025] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:37:33.068 [DEBUG] [Thread-123025] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:37:33.068 [DEBUG] [Thread-123025] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:37:33.068 [DEBUG] [Thread-123025] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:37:33.069 [DEBUG] [Thread-123025] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:37:33.069 [DEBUG] [Thread-123025] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:37:33.069 [DEBUG] [Thread-123025] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:37:33.069 [DEBUG] [Thread-123025] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:37:33.069 [DEBUG] [Thread-123025] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:37:33.069 [DEBUG] [Thread-123025] [transport.py] [_log()] client lang: <none>
2025-11-03T21:37:33.069 [DEBUG] [Thread-123025] [transport.py] [_log()] server lang: <none>
2025-11-03T21:37:33.069 [DEBUG] [Thread-123025] [transport.py] [_log()] kex follows: False
2025-11-03T21:37:33.069 [DEBUG] [Thread-123025] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:37:33.069 [DEBUG] [Thread-123025] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:37:33.069 [DEBUG] [Thread-123025] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:37:33.069 [DEBUG] [Thread-123025] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:37:33.069 [DEBUG] [Thread-123025] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:37:33.069 [DEBUG] [Thread-123025] [transport.py] [_log()] Compression: none
2025-11-03T21:37:33.069 [DEBUG] [Thread-123025] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:37:33.128 [DEBUG] [Thread-123025] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:37:33.128 [DEBUG] [Thread-123025] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:37:33.129 [DEBUG] [Thread-123025] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:37:33.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:37:33.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:37:33.187 [DEBUG] [Thread-123025] [transport.py] [_log()] userauth is OK
2025-11-03T21:37:33.188 [DEBUG] [Thread-123025] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:37:33.188 [DEBUG] [Thread-123025] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:37:33.188 [DEBUG] [Thread-123025] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:37:33.188 [DEBUG] [Thread-123025] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:37:33.209 [INFO] [Thread-123025] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:37:33.209 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:37:33.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:37:33.320 [DEBUG] [Thread-123027 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:37:34.026 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:37:34.112 [DEBUG] [Thread-123025] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:37:34.113 [DEBUG] [Thread-123025] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:37:34.162 [DEBUG] [Thread-123025] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:37:34.163 [DEBUG] [Thread-123025] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:37:34.174 [DEBUG] [Thread-123025] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:37:34.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:37:34.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:37:34.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:37:34.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:37:34.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:37:34.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:37:34.236 [DEBUG] [Thread-123025] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:37:40.718 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:37:40.823 [DEBUG] [Thread-123028 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:37:43.529 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:37:43.529 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:37:45.122 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:37:55.897 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:37:56.003 [DEBUG] [Thread-123029 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:38:00.062 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:38:04.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:38:04.253 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:38:04.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:38:05.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 37, 27), 32.04, 10.0, 0.0, 18.67, 18.66, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:38:05.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:37:27
2025-11-03T21:38:05.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:38:05.492 [DEBUG] [Thread-123030] [transport.py] [_log()] starting thread (client mode): 0x11760b80
2025-11-03T21:38:05.492 [DEBUG] [Thread-123030] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:38:05.509 [DEBUG] [Thread-123030] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:38:05.509 [INFO] [Thread-123030] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:38:05.511 [DEBUG] [Thread-123030] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:38:05.511 [DEBUG] [Thread-123030] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:38:05.511 [DEBUG] [Thread-123030] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:38:05.511 [DEBUG] [Thread-123030] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:38:05.511 [DEBUG] [Thread-123030] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:38:05.511 [DEBUG] [Thread-123030] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:38:05.511 [DEBUG] [Thread-123030] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:38:05.511 [DEBUG] [Thread-123030] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:38:05.511 [DEBUG] [Thread-123030] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:38:05.511 [DEBUG] [Thread-123030] [transport.py] [_log()] client lang: <none>
2025-11-03T21:38:05.511 [DEBUG] [Thread-123030] [transport.py] [_log()] server lang: <none>
2025-11-03T21:38:05.511 [DEBUG] [Thread-123030] [transport.py] [_log()] kex follows: False
2025-11-03T21:38:05.511 [DEBUG] [Thread-123030] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:38:05.512 [DEBUG] [Thread-123030] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:38:05.512 [DEBUG] [Thread-123030] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:38:05.512 [DEBUG] [Thread-123030] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:38:05.512 [DEBUG] [Thread-123030] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:38:05.512 [DEBUG] [Thread-123030] [transport.py] [_log()] Compression: none
2025-11-03T21:38:05.512 [DEBUG] [Thread-123030] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:38:05.535 [DEBUG] [Thread-123030] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:38:05.535 [DEBUG] [Thread-123030] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:38:05.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:38:05.535 [DEBUG] [Thread-123030] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:38:05.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:38:05.536 [DEBUG] [Thread-123030] [transport.py] [_log()] userauth is OK
2025-11-03T21:38:05.536 [DEBUG] [Thread-123030] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:38:05.536 [DEBUG] [Thread-123030] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:38:05.536 [DEBUG] [Thread-123030] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:38:05.536 [DEBUG] [Thread-123030] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:38:05.552 [INFO] [Thread-123030] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:38:05.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:38:06.169 [DEBUG] [Thread-123030] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:38:06.169 [DEBUG] [Thread-123030] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:38:06.170 [DEBUG] [Thread-123030] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:38:06.210 [DEBUG] [Thread-123030] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:38:06.210 [DEBUG] [Thread-123030] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:38:06.213 [DEBUG] [Thread-123030] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:38:06.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:38:06.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:38:06.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:38:06.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:38:06.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:38:06.233 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:38:06.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:38:06.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:38:06.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:38:06.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.817461 -999.00  +18.70  15.57     15   -8.00 1 1 1 1 1     0    0 25.22 -54.23 ZNESW 16.7 15.6 318.4 19.3 18.9 -26.5 18.8 -25.4 18.6 -25.4 18.9 -26.1
2025-11-03T21:38:06.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:38:06.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:38:06.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.817461
2025-11-03T21:38:06.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:38:06.247 [DEBUG] [Thread-123030] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:38:06.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:38:06.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:38:06.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:38:06.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:38:06.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:37:27', tmtdew=32.04, humidity=10.0, cloud=0.0, wind=18.67, temperature=18.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:38:00', seeing=1.17, atlas_timestamp='2025-11-03T19:37:08.630', atlas_cloud=1, atlas_rain=1, zp_data=[0.005749999999999034, 0.026250000000000995, 0.035250000000001336, -0.009500000000000952, 0.0019999999999988916, 0.022750000000002046, -0.11150000000000126, 0.10025000000000084, 0.02099999999999902, 0.07099999999999973, 0.053249999999998465, 0.06600000000000072, 0.125, 0.05824999999999925, 0.010999999999999233, -0.4314999999999998, -0.03825000000000145, -0.0030000000000001137, 0.07850000000000001, 0.06024999999999814, 0.17299999999999827, -0.12425000000000175, -0.08974999999999866, -1.39325, 0.01249999999999929, 0.13750000000000107, 0.1977499999999992, 0.20749999999999957, 0.07099999999999973, 0.136000000000001, 0.10300000000000153, -0.5169999999999995, 0.12174999999999869], zp_timestamp='2025-11-03T19:34:00')
2025-11-03T21:38:06.323 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:38:06.336 [DEBUG] [Thread-123033] [transport.py] [_log()] starting thread (client mode): 0xed10940
2025-11-03T21:38:06.336 [DEBUG] [Thread-123033] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:38:06.350 [DEBUG] [Thread-123033] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:38:06.350 [INFO] [Thread-123033] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:38:06.358 [DEBUG] [Thread-123033] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:38:06.358 [DEBUG] [Thread-123033] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:38:06.358 [DEBUG] [Thread-123033] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:38:06.358 [DEBUG] [Thread-123033] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:38:06.358 [DEBUG] [Thread-123033] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:38:06.358 [DEBUG] [Thread-123033] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:38:06.358 [DEBUG] [Thread-123033] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:38:06.358 [DEBUG] [Thread-123033] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:38:06.358 [DEBUG] [Thread-123033] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:38:06.358 [DEBUG] [Thread-123033] [transport.py] [_log()] client lang: <none>
2025-11-03T21:38:06.358 [DEBUG] [Thread-123033] [transport.py] [_log()] server lang: <none>
2025-11-03T21:38:06.358 [DEBUG] [Thread-123033] [transport.py] [_log()] kex follows: False
2025-11-03T21:38:06.358 [DEBUG] [Thread-123033] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:38:06.358 [DEBUG] [Thread-123033] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:38:06.358 [DEBUG] [Thread-123033] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:38:06.358 [DEBUG] [Thread-123033] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:38:06.358 [DEBUG] [Thread-123033] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:38:06.358 [DEBUG] [Thread-123033] [transport.py] [_log()] Compression: none
2025-11-03T21:38:06.358 [DEBUG] [Thread-123033] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:38:06.416 [DEBUG] [Thread-123033] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:38:06.416 [DEBUG] [Thread-123033] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:38:06.416 [DEBUG] [Thread-123033] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:38:06.416 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:38:06.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:38:06.476 [DEBUG] [Thread-123033] [transport.py] [_log()] userauth is OK
2025-11-03T21:38:06.476 [DEBUG] [Thread-123033] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:38:06.476 [DEBUG] [Thread-123033] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:38:06.476 [DEBUG] [Thread-123033] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:38:06.476 [DEBUG] [Thread-123033] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:38:06.490 [INFO] [Thread-123033] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:38:06.490 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:38:06.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:38:07.329 [DEBUG] [Thread-123033] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:38:07.329 [DEBUG] [Thread-123033] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:38:07.376 [DEBUG] [Thread-123033] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:38:07.376 [DEBUG] [Thread-123033] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:38:07.385 [DEBUG] [Thread-123033] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:38:07.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:38:07.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:38:07.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:38:07.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:38:07.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:38:07.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:38:07.418 [DEBUG] [Thread-123033] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:38:11.033 [DEBUG] [Thread-123035 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:38:26.082 [DEBUG] [Thread-123036 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:38:33.613 [DEBUG] [Thread-123037 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:38:37.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:38:37.440 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:38:37.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:38:38.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 37, 59), 31.92, 10.07, 0.0, 16.04, 18.71, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:38:38.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:37:59
2025-11-03T21:38:38.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:38:38.737 [DEBUG] [Thread-123038] [transport.py] [_log()] starting thread (client mode): 0xed34790
2025-11-03T21:38:38.737 [DEBUG] [Thread-123038] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:38:38.756 [DEBUG] [Thread-123038] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:38:38.756 [INFO] [Thread-123038] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:38:38.759 [DEBUG] [Thread-123038] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:38:38.759 [DEBUG] [Thread-123038] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:38:38.759 [DEBUG] [Thread-123038] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:38:38.759 [DEBUG] [Thread-123038] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:38:38.759 [DEBUG] [Thread-123038] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:38:38.759 [DEBUG] [Thread-123038] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:38:38.759 [DEBUG] [Thread-123038] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:38:38.759 [DEBUG] [Thread-123038] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:38:38.760 [DEBUG] [Thread-123038] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:38:38.760 [DEBUG] [Thread-123038] [transport.py] [_log()] client lang: <none>
2025-11-03T21:38:38.760 [DEBUG] [Thread-123038] [transport.py] [_log()] server lang: <none>
2025-11-03T21:38:38.760 [DEBUG] [Thread-123038] [transport.py] [_log()] kex follows: False
2025-11-03T21:38:38.760 [DEBUG] [Thread-123038] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:38:38.760 [DEBUG] [Thread-123038] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:38:38.760 [DEBUG] [Thread-123038] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:38:38.760 [DEBUG] [Thread-123038] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:38:38.760 [DEBUG] [Thread-123038] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:38:38.760 [DEBUG] [Thread-123038] [transport.py] [_log()] Compression: none
2025-11-03T21:38:38.760 [DEBUG] [Thread-123038] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:38:38.774 [DEBUG] [Thread-123038] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:38:38.774 [DEBUG] [Thread-123038] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:38:38.774 [DEBUG] [Thread-123038] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:38:38.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:38:38.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:38:38.775 [DEBUG] [Thread-123038] [transport.py] [_log()] userauth is OK
2025-11-03T21:38:38.775 [DEBUG] [Thread-123038] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:38:38.775 [DEBUG] [Thread-123038] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:38:38.775 [DEBUG] [Thread-123038] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:38:38.775 [DEBUG] [Thread-123038] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:38:38.785 [INFO] [Thread-123038] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:38:38.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:38:39.402 [DEBUG] [Thread-123038] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:38:39.402 [DEBUG] [Thread-123038] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:38:39.402 [DEBUG] [Thread-123038] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:38:39.442 [DEBUG] [Thread-123038] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:38:39.442 [DEBUG] [Thread-123038] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:38:39.444 [DEBUG] [Thread-123038] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:38:39.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:38:39.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:38:39.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:38:39.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:38:39.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:38:39.455 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:38:39.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:38:39.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:38:39.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:38:39.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.818156 -999.00  +18.70  14.10     15   -8.00 1 1 1 1 1     0    0 25.03 -60.99 ZNESW 16.0 14.1 307.6 19.9 18.9 -26.5 18.8 -25.3 18.6 -25.2 18.8 -25.9
2025-11-03T21:38:39.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:38:39.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:38:39.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.818156
2025-11-03T21:38:39.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:38:39.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:38:39.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:38:39.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:38:39.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:38:39.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:37:59', tmtdew=31.92, humidity=10.07, cloud=0.0, wind=16.04, temperature=18.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:38:35', seeing=1.29, atlas_timestamp='2025-11-03T19:38:08.678', atlas_cloud=1, atlas_rain=1, zp_data=[0.005749999999999034, 0.026250000000000995, 0.035250000000001336, -0.009500000000000952, 0.0019999999999988916, 0.022750000000002046, -0.11150000000000126, 0.10025000000000084, 0.02099999999999902, 0.07099999999999973, 0.053249999999998465, 0.06600000000000072, 0.125, 0.05824999999999925, 0.010999999999999233, -0.4314999999999998, -0.03825000000000145, -0.0030000000000001137, 0.07850000000000001, 0.06024999999999814, 0.17299999999999827, -0.12425000000000175, -0.08974999999999866, -1.39325, 0.01249999999999929, 0.13750000000000107, 0.1977499999999992, 0.20749999999999957, 0.07099999999999973, 0.136000000000001, 0.10300000000000153, -0.5169999999999995, 0.12174999999999869], zp_timestamp='2025-11-03T19:37:00')
2025-11-03T21:38:39.456 [DEBUG] [Thread-123038] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:38:39.532 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:38:39.544 [DEBUG] [Thread-123041] [transport.py] [_log()] starting thread (client mode): 0x11798250
2025-11-03T21:38:39.544 [DEBUG] [Thread-123041] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:38:39.560 [DEBUG] [Thread-123041] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:38:39.560 [INFO] [Thread-123041] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:38:39.567 [DEBUG] [Thread-123041] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:38:39.567 [DEBUG] [Thread-123041] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:38:39.567 [DEBUG] [Thread-123041] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:38:39.567 [DEBUG] [Thread-123041] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:38:39.567 [DEBUG] [Thread-123041] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:38:39.567 [DEBUG] [Thread-123041] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:38:39.567 [DEBUG] [Thread-123041] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:38:39.567 [DEBUG] [Thread-123041] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:38:39.567 [DEBUG] [Thread-123041] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:38:39.568 [DEBUG] [Thread-123041] [transport.py] [_log()] client lang: <none>
2025-11-03T21:38:39.568 [DEBUG] [Thread-123041] [transport.py] [_log()] server lang: <none>
2025-11-03T21:38:39.568 [DEBUG] [Thread-123041] [transport.py] [_log()] kex follows: False
2025-11-03T21:38:39.568 [DEBUG] [Thread-123041] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:38:39.568 [DEBUG] [Thread-123041] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:38:39.568 [DEBUG] [Thread-123041] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:38:39.568 [DEBUG] [Thread-123041] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:38:39.568 [DEBUG] [Thread-123041] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:38:39.568 [DEBUG] [Thread-123041] [transport.py] [_log()] Compression: none
2025-11-03T21:38:39.568 [DEBUG] [Thread-123041] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:38:39.627 [DEBUG] [Thread-123041] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:38:39.627 [DEBUG] [Thread-123041] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:38:39.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:38:39.627 [DEBUG] [Thread-123041] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:38:39.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:38:39.685 [DEBUG] [Thread-123041] [transport.py] [_log()] userauth is OK
2025-11-03T21:38:39.685 [DEBUG] [Thread-123041] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:38:39.685 [DEBUG] [Thread-123041] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:38:39.685 [DEBUG] [Thread-123041] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:38:39.685 [DEBUG] [Thread-123041] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:38:39.700 [INFO] [Thread-123041] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:38:39.701 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:38:39.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:38:40.504 [DEBUG] [Thread-123041] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:38:40.504 [DEBUG] [Thread-123041] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:38:40.552 [DEBUG] [Thread-123041] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:38:40.553 [DEBUG] [Thread-123041] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:38:40.565 [DEBUG] [Thread-123041] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:38:40.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:38:40.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:38:40.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:38:40.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:38:40.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:38:40.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:38:40.602 [DEBUG] [Thread-123041] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:38:41.111 [DEBUG] [Thread-123043 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:38:43.734 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:38:43.735 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:38:56.166 [DEBUG] [Thread-123044 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:39:10.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:39:10.625 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:39:10.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:39:11.201 [DEBUG] [Thread-123045 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:39:11.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 38, 35), 31.82, 10.1, 0.0, 16.37, 18.68, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:39:11.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:38:35
2025-11-03T21:39:11.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:39:12.071 [DEBUG] [Thread-123046] [transport.py] [_log()] starting thread (client mode): 0xed075b0
2025-11-03T21:39:12.071 [DEBUG] [Thread-123046] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:39:12.086 [DEBUG] [Thread-123046] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:39:12.086 [INFO] [Thread-123046] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:39:12.090 [DEBUG] [Thread-123046] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:39:12.090 [DEBUG] [Thread-123046] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:39:12.090 [DEBUG] [Thread-123046] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:39:12.090 [DEBUG] [Thread-123046] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:39:12.090 [DEBUG] [Thread-123046] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:39:12.090 [DEBUG] [Thread-123046] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:39:12.090 [DEBUG] [Thread-123046] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:39:12.090 [DEBUG] [Thread-123046] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:39:12.090 [DEBUG] [Thread-123046] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:39:12.090 [DEBUG] [Thread-123046] [transport.py] [_log()] client lang: <none>
2025-11-03T21:39:12.090 [DEBUG] [Thread-123046] [transport.py] [_log()] server lang: <none>
2025-11-03T21:39:12.090 [DEBUG] [Thread-123046] [transport.py] [_log()] kex follows: False
2025-11-03T21:39:12.090 [DEBUG] [Thread-123046] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:39:12.090 [DEBUG] [Thread-123046] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:39:12.091 [DEBUG] [Thread-123046] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:39:12.091 [DEBUG] [Thread-123046] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:39:12.091 [DEBUG] [Thread-123046] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:39:12.091 [DEBUG] [Thread-123046] [transport.py] [_log()] Compression: none
2025-11-03T21:39:12.091 [DEBUG] [Thread-123046] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:39:12.112 [DEBUG] [Thread-123046] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:39:12.114 [DEBUG] [Thread-123046] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:39:12.114 [DEBUG] [Thread-123046] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:39:12.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:39:12.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:39:12.156 [DEBUG] [Thread-123046] [transport.py] [_log()] userauth is OK
2025-11-03T21:39:12.156 [DEBUG] [Thread-123046] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:39:12.156 [DEBUG] [Thread-123046] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:39:12.156 [DEBUG] [Thread-123046] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:39:12.156 [DEBUG] [Thread-123046] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:39:12.185 [INFO] [Thread-123046] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:39:12.187 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:39:12.815 [DEBUG] [Thread-123046] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:39:12.815 [DEBUG] [Thread-123046] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:39:12.815 [DEBUG] [Thread-123046] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:39:12.856 [DEBUG] [Thread-123046] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:39:12.856 [DEBUG] [Thread-123046] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:39:12.858 [DEBUG] [Thread-123046] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:39:12.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:39:12.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:39:12.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:39:12.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:39:12.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:39:12.877 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:39:12.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:39:12.878 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:39:12.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:39:12.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.818503 -999.00  +18.60  16.30     15   -7.80 1 1 1 1 1     0    0 25.41 -56.58 ZNESW 15.7 16.3 315.4 19.8 18.9 -26.4 18.8 -25.3 18.5 -25.0 18.8 -25.9
2025-11-03T21:39:12.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:39:12.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:39:12.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.818503
2025-11-03T21:39:12.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:39:12.891 [DEBUG] [Thread-123046] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:39:12.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:39:12.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:39:12.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:39:12.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:39:12.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:38:35', tmtdew=31.82, humidity=10.1, cloud=0.0, wind=16.37, temperature=18.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:39:08', seeing=1.29, atlas_timestamp='2025-11-03T19:38:38.659', atlas_cloud=1, atlas_rain=1, zp_data=[0.005749999999999034, 0.026250000000000995, 0.035250000000001336, -0.009500000000000952, 0.0019999999999988916, 0.022750000000002046, -0.11150000000000126, 0.10025000000000084, 0.02099999999999902, 0.07099999999999973, 0.053249999999998465, 0.06600000000000072, 0.125, 0.05824999999999925, 0.010999999999999233, -0.4314999999999998, -0.03825000000000145, -0.0030000000000001137, 0.07850000000000001, 0.06024999999999814, 0.17299999999999827, -0.12425000000000175, -0.08974999999999866, -1.39325, 0.01249999999999929, 0.13750000000000107, 0.1977499999999992, 0.20749999999999957, 0.07099999999999973, 0.136000000000001, 0.10300000000000153, -0.5169999999999995, 0.12174999999999869], zp_timestamp='2025-11-03T19:37:00')
2025-11-03T21:39:12.966 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:39:12.979 [DEBUG] [Thread-123049] [transport.py] [_log()] starting thread (client mode): 0xed35930
2025-11-03T21:39:12.979 [DEBUG] [Thread-123049] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:39:12.995 [DEBUG] [Thread-123049] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:39:12.995 [INFO] [Thread-123049] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:39:13.004 [DEBUG] [Thread-123049] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:39:13.004 [DEBUG] [Thread-123049] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:39:13.004 [DEBUG] [Thread-123049] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:39:13.004 [DEBUG] [Thread-123049] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:39:13.004 [DEBUG] [Thread-123049] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:39:13.004 [DEBUG] [Thread-123049] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:39:13.004 [DEBUG] [Thread-123049] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:39:13.004 [DEBUG] [Thread-123049] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:39:13.004 [DEBUG] [Thread-123049] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:39:13.004 [DEBUG] [Thread-123049] [transport.py] [_log()] client lang: <none>
2025-11-03T21:39:13.004 [DEBUG] [Thread-123049] [transport.py] [_log()] server lang: <none>
2025-11-03T21:39:13.004 [DEBUG] [Thread-123049] [transport.py] [_log()] kex follows: False
2025-11-03T21:39:13.004 [DEBUG] [Thread-123049] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:39:13.004 [DEBUG] [Thread-123049] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:39:13.004 [DEBUG] [Thread-123049] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:39:13.005 [DEBUG] [Thread-123049] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:39:13.005 [DEBUG] [Thread-123049] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:39:13.005 [DEBUG] [Thread-123049] [transport.py] [_log()] Compression: none
2025-11-03T21:39:13.005 [DEBUG] [Thread-123049] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:39:13.063 [DEBUG] [Thread-123049] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:39:13.063 [DEBUG] [Thread-123049] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:39:13.064 [DEBUG] [Thread-123049] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:39:13.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:39:13.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:39:13.121 [DEBUG] [Thread-123049] [transport.py] [_log()] userauth is OK
2025-11-03T21:39:13.122 [DEBUG] [Thread-123049] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:39:13.122 [DEBUG] [Thread-123049] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:39:13.122 [DEBUG] [Thread-123049] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:39:13.122 [DEBUG] [Thread-123049] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:39:13.141 [INFO] [Thread-123049] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:39:13.141 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:39:13.141 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:39:14.000 [DEBUG] [Thread-123049] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:39:14.001 [DEBUG] [Thread-123049] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:39:14.040 [DEBUG] [Thread-123049] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:39:14.040 [DEBUG] [Thread-123049] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:39:14.050 [DEBUG] [Thread-123049] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:39:14.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:39:14.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:39:14.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:39:14.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:39:14.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:39:14.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:39:14.088 [DEBUG] [Thread-123049] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:39:26.243 [DEBUG] [Thread-123051 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:39:33.882 [DEBUG] [Thread-123052 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:39:41.311 [DEBUG] [Thread-123053 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:39:43.938 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:39:43.939 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:39:44.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:39:44.111 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:39:44.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:39:44.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 39, 7), 31.8, 10.12, 0.0, 15.79, 18.69, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:39:44.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:39:07
2025-11-03T21:39:45.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:39:45.194 [DEBUG] [Thread-123054] [transport.py] [_log()] starting thread (client mode): 0x1174df60
2025-11-03T21:39:45.194 [DEBUG] [Thread-123054] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:39:45.211 [DEBUG] [Thread-123054] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:39:45.211 [INFO] [Thread-123054] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:39:45.214 [DEBUG] [Thread-123054] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:39:45.214 [DEBUG] [Thread-123054] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:39:45.215 [DEBUG] [Thread-123054] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:39:45.215 [DEBUG] [Thread-123054] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:39:45.215 [DEBUG] [Thread-123054] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:39:45.215 [DEBUG] [Thread-123054] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:39:45.215 [DEBUG] [Thread-123054] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:39:45.215 [DEBUG] [Thread-123054] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:39:45.215 [DEBUG] [Thread-123054] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:39:45.215 [DEBUG] [Thread-123054] [transport.py] [_log()] client lang: <none>
2025-11-03T21:39:45.215 [DEBUG] [Thread-123054] [transport.py] [_log()] server lang: <none>
2025-11-03T21:39:45.215 [DEBUG] [Thread-123054] [transport.py] [_log()] kex follows: False
2025-11-03T21:39:45.215 [DEBUG] [Thread-123054] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:39:45.215 [DEBUG] [Thread-123054] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:39:45.215 [DEBUG] [Thread-123054] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:39:45.215 [DEBUG] [Thread-123054] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:39:45.215 [DEBUG] [Thread-123054] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:39:45.215 [DEBUG] [Thread-123054] [transport.py] [_log()] Compression: none
2025-11-03T21:39:45.215 [DEBUG] [Thread-123054] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:39:45.232 [DEBUG] [Thread-123054] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:39:45.232 [DEBUG] [Thread-123054] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:39:45.232 [DEBUG] [Thread-123054] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:39:45.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:39:45.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:39:45.233 [DEBUG] [Thread-123054] [transport.py] [_log()] userauth is OK
2025-11-03T21:39:45.233 [DEBUG] [Thread-123054] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:39:45.233 [DEBUG] [Thread-123054] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:39:45.233 [DEBUG] [Thread-123054] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:39:45.233 [DEBUG] [Thread-123054] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:39:45.243 [INFO] [Thread-123054] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:39:45.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:39:45.910 [DEBUG] [Thread-123054] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:39:45.910 [DEBUG] [Thread-123054] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:39:45.910 [DEBUG] [Thread-123054] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:39:45.951 [DEBUG] [Thread-123054] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:39:45.951 [DEBUG] [Thread-123054] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:39:45.953 [DEBUG] [Thread-123054] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:39:45.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:39:45.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:39:45.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:39:45.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:39:45.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:39:45.973 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:39:45.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:39:45.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:39:45.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:39:45.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.818850 -999.00  +18.70  17.10     15   -7.80 1 1 1 1 1     0    0 24.89 -54.52 ZNESW 15.2 17.1 309.0 20.8 18.9 -26.3 18.8 -25.2 18.6 -25.0 18.8 -25.9
2025-11-03T21:39:45.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:39:45.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:39:45.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.818850
2025-11-03T21:39:45.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:39:45.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:39:45.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:39:45.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:39:45.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:39:45.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:39:07', tmtdew=31.8, humidity=10.12, cloud=0.0, wind=15.79, temperature=18.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:39:42', seeing=1.1, atlas_timestamp='2025-11-03T19:39:08.640', atlas_cloud=1, atlas_rain=1, zp_data=[0.005749999999999034, 0.026250000000000995, 0.035250000000001336, -0.009500000000000952, 0.0019999999999988916, 0.022750000000002046, -0.11150000000000126, 0.10025000000000084, 0.02099999999999902, 0.07099999999999973, 0.053249999999998465, 0.06600000000000072, 0.125, 0.05824999999999925, 0.010999999999999233, -0.4314999999999998, -0.03825000000000145, -0.0030000000000001137, 0.07850000000000001, 0.06024999999999814, 0.17299999999999827, -0.12425000000000175, -0.08974999999999866, -1.39325, 0.01249999999999929, 0.13750000000000107, 0.1977499999999992, 0.20749999999999957, 0.07099999999999973, 0.136000000000001, 0.10300000000000153, -0.5169999999999995, 0.12174999999999869], zp_timestamp='2025-11-03T19:37:00')
2025-11-03T21:39:45.975 [DEBUG] [Thread-123054] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:39:46.083 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:39:46.098 [DEBUG] [Thread-123057] [transport.py] [_log()] starting thread (client mode): 0x1174ee60
2025-11-03T21:39:46.098 [DEBUG] [Thread-123057] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:39:46.114 [DEBUG] [Thread-123057] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:39:46.114 [INFO] [Thread-123057] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:39:46.122 [DEBUG] [Thread-123057] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:39:46.123 [DEBUG] [Thread-123057] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:39:46.123 [DEBUG] [Thread-123057] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:39:46.123 [DEBUG] [Thread-123057] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:39:46.123 [DEBUG] [Thread-123057] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:39:46.123 [DEBUG] [Thread-123057] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:39:46.123 [DEBUG] [Thread-123057] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:39:46.123 [DEBUG] [Thread-123057] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:39:46.123 [DEBUG] [Thread-123057] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:39:46.123 [DEBUG] [Thread-123057] [transport.py] [_log()] client lang: <none>
2025-11-03T21:39:46.123 [DEBUG] [Thread-123057] [transport.py] [_log()] server lang: <none>
2025-11-03T21:39:46.123 [DEBUG] [Thread-123057] [transport.py] [_log()] kex follows: False
2025-11-03T21:39:46.123 [DEBUG] [Thread-123057] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:39:46.123 [DEBUG] [Thread-123057] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:39:46.123 [DEBUG] [Thread-123057] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:39:46.123 [DEBUG] [Thread-123057] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:39:46.123 [DEBUG] [Thread-123057] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:39:46.124 [DEBUG] [Thread-123057] [transport.py] [_log()] Compression: none
2025-11-03T21:39:46.124 [DEBUG] [Thread-123057] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:39:46.188 [DEBUG] [Thread-123057] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:39:46.189 [DEBUG] [Thread-123057] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:39:46.189 [DEBUG] [Thread-123057] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:39:46.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:39:46.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:39:46.248 [DEBUG] [Thread-123057] [transport.py] [_log()] userauth is OK
2025-11-03T21:39:46.248 [DEBUG] [Thread-123057] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:39:46.248 [DEBUG] [Thread-123057] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:39:46.248 [DEBUG] [Thread-123057] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:39:46.248 [DEBUG] [Thread-123057] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:39:46.274 [INFO] [Thread-123057] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:39:46.274 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:39:46.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:39:47.136 [DEBUG] [Thread-123057] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:39:47.136 [DEBUG] [Thread-123057] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:39:47.187 [DEBUG] [Thread-123057] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:39:47.187 [DEBUG] [Thread-123057] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:39:47.200 [DEBUG] [Thread-123057] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:39:47.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:39:47.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:39:47.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:39:47.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:39:47.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:39:47.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:39:47.242 [DEBUG] [Thread-123057] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:39:56.349 [DEBUG] [Thread-123059 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:40:11.406 [DEBUG] [Thread-123060 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:40:17.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:40:17.265 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:40:17.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:40:18.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 40, 14), 31.73, 10.64, 0.0, 16.52, 18.68, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:40:18.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:40:14
2025-11-03T21:40:18.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:40:18.338 [DEBUG] [Thread-123061] [transport.py] [_log()] starting thread (client mode): 0xeda2ad0
2025-11-03T21:40:18.338 [DEBUG] [Thread-123061] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:40:18.360 [DEBUG] [Thread-123061] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:40:18.361 [INFO] [Thread-123061] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:40:18.364 [DEBUG] [Thread-123061] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:40:18.364 [DEBUG] [Thread-123061] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:40:18.364 [DEBUG] [Thread-123061] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:40:18.364 [DEBUG] [Thread-123061] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:40:18.364 [DEBUG] [Thread-123061] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:40:18.365 [DEBUG] [Thread-123061] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:40:18.365 [DEBUG] [Thread-123061] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:40:18.365 [DEBUG] [Thread-123061] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:40:18.365 [DEBUG] [Thread-123061] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:40:18.365 [DEBUG] [Thread-123061] [transport.py] [_log()] client lang: <none>
2025-11-03T21:40:18.365 [DEBUG] [Thread-123061] [transport.py] [_log()] server lang: <none>
2025-11-03T21:40:18.365 [DEBUG] [Thread-123061] [transport.py] [_log()] kex follows: False
2025-11-03T21:40:18.365 [DEBUG] [Thread-123061] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:40:18.365 [DEBUG] [Thread-123061] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:40:18.374 [DEBUG] [Thread-123061] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:40:18.374 [DEBUG] [Thread-123061] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:40:18.374 [DEBUG] [Thread-123061] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:40:18.374 [DEBUG] [Thread-123061] [transport.py] [_log()] Compression: none
2025-11-03T21:40:18.374 [DEBUG] [Thread-123061] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:40:18.393 [DEBUG] [Thread-123061] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:40:18.393 [DEBUG] [Thread-123061] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:40:18.394 [DEBUG] [Thread-123061] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:40:18.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:40:18.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:40:18.397 [DEBUG] [Thread-123061] [transport.py] [_log()] userauth is OK
2025-11-03T21:40:18.397 [DEBUG] [Thread-123061] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:40:18.397 [DEBUG] [Thread-123061] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:40:18.397 [DEBUG] [Thread-123061] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:40:18.397 [DEBUG] [Thread-123061] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:40:18.421 [INFO] [Thread-123061] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:40:18.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:40:19.075 [DEBUG] [Thread-123061] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:40:19.075 [DEBUG] [Thread-123061] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:40:19.075 [DEBUG] [Thread-123061] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:40:19.116 [DEBUG] [Thread-123061] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:40:19.116 [DEBUG] [Thread-123061] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:40:19.119 [DEBUG] [Thread-123061] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:40:19.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:40:19.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:40:19.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:40:19.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:40:19.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:40:19.142 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:40:19.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:40:19.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:40:19.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:40:19.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.819198 -999.00  +18.70  16.52     15   -7.90 1 1 1 1 1     0    0 25.40 -57.77 ZNESW 14.5 16.5 310.6 19.6 18.9 -26.3 18.8 -25.2 18.6 -25.0 18.8 -25.9
2025-11-03T21:40:19.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:40:19.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:40:19.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.819198
2025-11-03T21:40:19.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:40:19.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:40:19.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:40:19.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:40:19.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:40:19.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:40:14', tmtdew=31.73, humidity=10.64, cloud=0.0, wind=16.52, temperature=18.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:40:14', seeing=1.1, atlas_timestamp='2025-11-03T19:39:38.707', atlas_cloud=1, atlas_rain=1, zp_data=[0.005749999999999034, 0.026250000000000995, 0.035250000000001336, -0.009500000000000952, 0.0019999999999988916, 0.022750000000002046, -0.11150000000000126, 0.10025000000000084, 0.02099999999999902, 0.07099999999999973, 0.053249999999998465, 0.06600000000000072, 0.125, 0.05824999999999925, 0.010999999999999233, -0.4314999999999998, -0.03825000000000145, -0.0030000000000001137, 0.07850000000000001, 0.06024999999999814, 0.17299999999999827, -0.12425000000000175, -0.08974999999999866, -1.39325, 0.01249999999999929, 0.13750000000000107, 0.1977499999999992, 0.20749999999999957, 0.07099999999999973, 0.136000000000001, 0.10300000000000153, -0.5169999999999995, 0.12174999999999869], zp_timestamp='2025-11-03T19:37:00')
2025-11-03T21:40:19.143 [DEBUG] [Thread-123061] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:40:19.215 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:40:19.229 [DEBUG] [Thread-123064] [transport.py] [_log()] starting thread (client mode): 0xed12a40
2025-11-03T21:40:19.229 [DEBUG] [Thread-123064] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:40:19.245 [DEBUG] [Thread-123064] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:40:19.245 [INFO] [Thread-123064] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:40:19.253 [DEBUG] [Thread-123064] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:40:19.253 [DEBUG] [Thread-123064] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:40:19.253 [DEBUG] [Thread-123064] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:40:19.253 [DEBUG] [Thread-123064] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:40:19.253 [DEBUG] [Thread-123064] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:40:19.253 [DEBUG] [Thread-123064] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:40:19.253 [DEBUG] [Thread-123064] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:40:19.253 [DEBUG] [Thread-123064] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:40:19.253 [DEBUG] [Thread-123064] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:40:19.253 [DEBUG] [Thread-123064] [transport.py] [_log()] client lang: <none>
2025-11-03T21:40:19.253 [DEBUG] [Thread-123064] [transport.py] [_log()] server lang: <none>
2025-11-03T21:40:19.253 [DEBUG] [Thread-123064] [transport.py] [_log()] kex follows: False
2025-11-03T21:40:19.253 [DEBUG] [Thread-123064] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:40:19.253 [DEBUG] [Thread-123064] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:40:19.253 [DEBUG] [Thread-123064] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:40:19.253 [DEBUG] [Thread-123064] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:40:19.253 [DEBUG] [Thread-123064] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:40:19.253 [DEBUG] [Thread-123064] [transport.py] [_log()] Compression: none
2025-11-03T21:40:19.253 [DEBUG] [Thread-123064] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:40:19.309 [DEBUG] [Thread-123064] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:40:19.309 [DEBUG] [Thread-123064] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:40:19.309 [DEBUG] [Thread-123064] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:40:19.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:40:19.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:40:19.366 [DEBUG] [Thread-123064] [transport.py] [_log()] userauth is OK
2025-11-03T21:40:19.366 [DEBUG] [Thread-123064] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:40:19.366 [DEBUG] [Thread-123064] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:40:19.366 [DEBUG] [Thread-123064] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:40:19.366 [DEBUG] [Thread-123064] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:40:19.383 [INFO] [Thread-123064] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:40:19.383 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:40:19.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:40:20.193 [DEBUG] [Thread-123064] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:40:20.193 [DEBUG] [Thread-123064] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:40:20.241 [DEBUG] [Thread-123064] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:40:20.241 [DEBUG] [Thread-123064] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:40:20.251 [DEBUG] [Thread-123064] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:40:20.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:40:20.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:40:20.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:40:20.279 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:40:20.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:40:20.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:40:20.288 [DEBUG] [Thread-123064] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:40:26.435 [DEBUG] [Thread-123066 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:40:33.985 [DEBUG] [Thread-123067 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:40:41.483 [DEBUG] [Thread-123068 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:40:44.142 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:40:44.143 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:40:50.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:40:50.311 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:40:50.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:40:51.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 40, 46), 31.71, 10.24, 0.0, 18.35, 18.63, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:40:51.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:40:46
2025-11-03T21:40:51.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:40:51.975 [DEBUG] [Thread-123069] [transport.py] [_log()] starting thread (client mode): 0xeda2c20
2025-11-03T21:40:51.977 [DEBUG] [Thread-123069] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:40:51.979 [DEBUG] [Thread-123069] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:40:51.979 [INFO] [Thread-123069] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:40:51.991 [DEBUG] [Thread-123069] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:40:51.992 [DEBUG] [Thread-123069] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:40:51.992 [DEBUG] [Thread-123069] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:40:51.992 [DEBUG] [Thread-123069] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:40:51.992 [DEBUG] [Thread-123069] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:40:51.992 [DEBUG] [Thread-123069] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:40:51.992 [DEBUG] [Thread-123069] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:40:51.992 [DEBUG] [Thread-123069] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:40:51.992 [DEBUG] [Thread-123069] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:40:51.992 [DEBUG] [Thread-123069] [transport.py] [_log()] client lang: <none>
2025-11-03T21:40:51.993 [DEBUG] [Thread-123069] [transport.py] [_log()] server lang: <none>
2025-11-03T21:40:51.994 [DEBUG] [Thread-123069] [transport.py] [_log()] kex follows: False
2025-11-03T21:40:51.994 [DEBUG] [Thread-123069] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:40:51.994 [DEBUG] [Thread-123069] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:40:51.995 [DEBUG] [Thread-123069] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:40:51.995 [DEBUG] [Thread-123069] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:40:51.995 [DEBUG] [Thread-123069] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:40:51.995 [DEBUG] [Thread-123069] [transport.py] [_log()] Compression: none
2025-11-03T21:40:51.995 [DEBUG] [Thread-123069] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:40:52.061 [DEBUG] [Thread-123069] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:40:52.083 [DEBUG] [Thread-123069] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:40:52.092 [DEBUG] [Thread-123069] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:40:52.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:40:52.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:40:52.102 [DEBUG] [Thread-123069] [transport.py] [_log()] userauth is OK
2025-11-03T21:40:52.104 [DEBUG] [Thread-123069] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:40:52.104 [DEBUG] [Thread-123069] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:40:52.104 [DEBUG] [Thread-123069] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:40:52.104 [DEBUG] [Thread-123069] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:40:52.135 [INFO] [Thread-123069] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:40:52.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:40:52.799 [DEBUG] [Thread-123069] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:40:52.799 [DEBUG] [Thread-123069] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:40:52.802 [DEBUG] [Thread-123069] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:40:52.843 [DEBUG] [Thread-123069] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:40:52.843 [DEBUG] [Thread-123069] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:40:52.847 [DEBUG] [Thread-123069] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:40:52.861 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:40:52.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:40:52.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:40:52.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:40:52.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:40:52.885 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:40:52.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:40:52.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:40:52.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:40:52.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.819544 -999.00  +18.70  14.78     15   -7.90 1 1 1 1 1     0    0 25.31 -54.31 ZNESW 16.5 14.8 308.6 19.3 18.8 -26.3 18.8 -25.3 18.5 -25.0 18.8 -25.9
2025-11-03T21:40:52.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:40:52.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:40:52.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.819544
2025-11-03T21:40:52.895 [DEBUG] [Thread-123069] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:40:52.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:40:52.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:40:52.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:40:52.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:40:52.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:40:52.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:40:46', tmtdew=31.71, humidity=10.24, cloud=0.0, wind=18.35, temperature=18.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:40:46', seeing=1.1, atlas_timestamp='2025-11-03T19:40:08.602', atlas_cloud=1, atlas_rain=1, zp_data=[0.005749999999999034, 0.026250000000000995, 0.035250000000001336, -0.009500000000000952, 0.0019999999999988916, 0.022750000000002046, -0.11150000000000126, 0.10025000000000084, 0.02099999999999902, 0.07099999999999973, 0.053249999999998465, 0.06600000000000072, 0.125, 0.05824999999999925, 0.010999999999999233, -0.4314999999999998, -0.03825000000000145, -0.0030000000000001137, 0.07850000000000001, 0.06024999999999814, 0.17299999999999827, -0.12425000000000175, -0.08974999999999866, -1.39325, 0.01249999999999929, 0.13750000000000107, 0.1977499999999992, 0.20749999999999957, 0.07099999999999973, 0.136000000000001, 0.10300000000000153, -0.5169999999999995, 0.12174999999999869], zp_timestamp='2025-11-03T19:37:00')
2025-11-03T21:40:53.001 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:40:53.013 [DEBUG] [Thread-123072] [transport.py] [_log()] starting thread (client mode): 0xed34a90
2025-11-03T21:40:53.013 [DEBUG] [Thread-123072] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:40:53.027 [DEBUG] [Thread-123072] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:40:53.027 [INFO] [Thread-123072] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:40:53.035 [DEBUG] [Thread-123072] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:40:53.035 [DEBUG] [Thread-123072] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:40:53.035 [DEBUG] [Thread-123072] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:40:53.035 [DEBUG] [Thread-123072] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:40:53.035 [DEBUG] [Thread-123072] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:40:53.035 [DEBUG] [Thread-123072] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:40:53.035 [DEBUG] [Thread-123072] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:40:53.035 [DEBUG] [Thread-123072] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:40:53.035 [DEBUG] [Thread-123072] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:40:53.035 [DEBUG] [Thread-123072] [transport.py] [_log()] client lang: <none>
2025-11-03T21:40:53.035 [DEBUG] [Thread-123072] [transport.py] [_log()] server lang: <none>
2025-11-03T21:40:53.035 [DEBUG] [Thread-123072] [transport.py] [_log()] kex follows: False
2025-11-03T21:40:53.035 [DEBUG] [Thread-123072] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:40:53.035 [DEBUG] [Thread-123072] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:40:53.035 [DEBUG] [Thread-123072] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:40:53.035 [DEBUG] [Thread-123072] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:40:53.035 [DEBUG] [Thread-123072] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:40:53.035 [DEBUG] [Thread-123072] [transport.py] [_log()] Compression: none
2025-11-03T21:40:53.035 [DEBUG] [Thread-123072] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:40:53.095 [DEBUG] [Thread-123072] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:40:53.096 [DEBUG] [Thread-123072] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:40:53.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:40:53.096 [DEBUG] [Thread-123072] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:40:53.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:40:53.156 [DEBUG] [Thread-123072] [transport.py] [_log()] userauth is OK
2025-11-03T21:40:53.156 [DEBUG] [Thread-123072] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:40:53.156 [DEBUG] [Thread-123072] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:40:53.156 [DEBUG] [Thread-123072] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:40:53.156 [DEBUG] [Thread-123072] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:40:53.176 [INFO] [Thread-123072] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:40:53.177 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:40:53.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:40:54.031 [DEBUG] [Thread-123072] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:40:54.031 [DEBUG] [Thread-123072] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:40:54.080 [DEBUG] [Thread-123072] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:40:54.080 [DEBUG] [Thread-123072] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:40:54.091 [DEBUG] [Thread-123072] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:40:54.101 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:40:54.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:40:54.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:40:54.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:40:54.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:40:54.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:40:54.148 [DEBUG] [Thread-123072] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:40:56.632 [DEBUG] [Thread-123074 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:41:12.089 [DEBUG] [Thread-123075 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:41:23.840 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:41:24.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:41:24.145 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:41:24.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:41:24.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 41, 18), 31.73, 10.22, 0.0, 17.57, 18.63, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:41:24.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:41:18
2025-11-03T21:41:25.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:41:25.261 [DEBUG] [Thread-123076] [transport.py] [_log()] starting thread (client mode): 0x1179bdf0
2025-11-03T21:41:25.261 [DEBUG] [Thread-123076] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:41:25.281 [DEBUG] [Thread-123076] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:41:25.281 [INFO] [Thread-123076] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:41:25.284 [DEBUG] [Thread-123076] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:41:25.284 [DEBUG] [Thread-123076] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:41:25.284 [DEBUG] [Thread-123076] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:41:25.284 [DEBUG] [Thread-123076] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:41:25.284 [DEBUG] [Thread-123076] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:41:25.284 [DEBUG] [Thread-123076] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:41:25.284 [DEBUG] [Thread-123076] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:41:25.284 [DEBUG] [Thread-123076] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:41:25.284 [DEBUG] [Thread-123076] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:41:25.284 [DEBUG] [Thread-123076] [transport.py] [_log()] client lang: <none>
2025-11-03T21:41:25.284 [DEBUG] [Thread-123076] [transport.py] [_log()] server lang: <none>
2025-11-03T21:41:25.284 [DEBUG] [Thread-123076] [transport.py] [_log()] kex follows: False
2025-11-03T21:41:25.284 [DEBUG] [Thread-123076] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:41:25.284 [DEBUG] [Thread-123076] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:41:25.284 [DEBUG] [Thread-123076] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:41:25.284 [DEBUG] [Thread-123076] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:41:25.284 [DEBUG] [Thread-123076] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:41:25.284 [DEBUG] [Thread-123076] [transport.py] [_log()] Compression: none
2025-11-03T21:41:25.284 [DEBUG] [Thread-123076] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:41:25.304 [DEBUG] [Thread-123076] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:41:25.305 [DEBUG] [Thread-123076] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:41:25.305 [DEBUG] [Thread-123076] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:41:25.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:41:25.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:41:25.308 [DEBUG] [Thread-123076] [transport.py] [_log()] userauth is OK
2025-11-03T21:41:25.308 [DEBUG] [Thread-123076] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:41:25.308 [DEBUG] [Thread-123076] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:41:25.308 [DEBUG] [Thread-123076] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:41:25.308 [DEBUG] [Thread-123076] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:41:25.342 [INFO] [Thread-123076] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:41:25.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:41:25.974 [DEBUG] [Thread-123076] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:41:25.974 [DEBUG] [Thread-123076] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:41:25.974 [DEBUG] [Thread-123076] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:41:26.015 [DEBUG] [Thread-123076] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:41:26.015 [DEBUG] [Thread-123076] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:41:26.019 [DEBUG] [Thread-123076] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:41:26.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:41:26.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:41:26.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:41:26.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:41:26.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:41:26.046 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:41:26.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:41:26.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:41:26.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:41:26.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.819892 -999.00  +18.70  14.97     15   -7.90 1 1 1 1 1     0    0 25.38 -51.03 ZNESW 18.0 15.0 308.4 22.1 18.8 -26.1 18.8 -25.2 18.6 -24.9 18.8 -25.8
2025-11-03T21:41:26.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:41:26.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:41:26.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.819892
2025-11-03T21:41:26.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:41:26.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:41:26.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:41:26.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:41:26.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:41:26.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:41:18', tmtdew=31.73, humidity=10.22, cloud=0.0, wind=17.57, temperature=18.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:41:19', seeing=1.07, atlas_timestamp='2025-11-03T19:40:38.669', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019249999999999545, 0.1332500000000003, 0.08425000000000082, 0.05149999999999899, -0.05000000000000071, 0.034250000000000114, -0.053000000000000824, -0.012249999999998096, 0.0495000000000001, 0.05450000000000088, 0.08424999999999905, 0.0909999999999993, 0.18900000000000006, 0.08225000000000016, -0.02500000000000213, -0.8830000000000009, 0.006249999999999645, 0.0045000000000001705, 0.16149999999999842, 0.0677500000000002, 0.16199999999999903, -0.030750000000001165, -0.10774999999999935, -0.6112500000000001, 0.0129999999999999, 0.2240000000000002, 0.20674999999999955, 0.22250000000000014, 0.15799999999999947, 0.22600000000000087, 0.12700000000000067, -0.19899999999999807, 0.17024999999999935], zp_timestamp='2025-11-03T19:40:00')
2025-11-03T21:41:26.053 [DEBUG] [Thread-123076] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:41:26.140 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:41:26.153 [DEBUG] [Thread-123079] [transport.py] [_log()] starting thread (client mode): 0xed06950
2025-11-03T21:41:26.153 [DEBUG] [Thread-123079] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:41:26.168 [DEBUG] [Thread-123079] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:41:26.168 [INFO] [Thread-123079] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:41:26.178 [DEBUG] [Thread-123079] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:41:26.178 [DEBUG] [Thread-123079] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:41:26.178 [DEBUG] [Thread-123079] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:41:26.178 [DEBUG] [Thread-123079] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:41:26.178 [DEBUG] [Thread-123079] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:41:26.178 [DEBUG] [Thread-123079] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:41:26.179 [DEBUG] [Thread-123079] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:41:26.179 [DEBUG] [Thread-123079] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:41:26.179 [DEBUG] [Thread-123079] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:41:26.179 [DEBUG] [Thread-123079] [transport.py] [_log()] client lang: <none>
2025-11-03T21:41:26.179 [DEBUG] [Thread-123079] [transport.py] [_log()] server lang: <none>
2025-11-03T21:41:26.179 [DEBUG] [Thread-123079] [transport.py] [_log()] kex follows: False
2025-11-03T21:41:26.179 [DEBUG] [Thread-123079] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:41:26.179 [DEBUG] [Thread-123079] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:41:26.179 [DEBUG] [Thread-123079] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:41:26.179 [DEBUG] [Thread-123079] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:41:26.179 [DEBUG] [Thread-123079] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:41:26.179 [DEBUG] [Thread-123079] [transport.py] [_log()] Compression: none
2025-11-03T21:41:26.180 [DEBUG] [Thread-123079] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:41:26.239 [DEBUG] [Thread-123079] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:41:26.240 [DEBUG] [Thread-123079] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:41:26.240 [DEBUG] [Thread-123079] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:41:26.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:41:26.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:41:26.301 [DEBUG] [Thread-123079] [transport.py] [_log()] userauth is OK
2025-11-03T21:41:26.302 [DEBUG] [Thread-123079] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:41:26.302 [DEBUG] [Thread-123079] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:41:26.302 [DEBUG] [Thread-123079] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:41:26.302 [DEBUG] [Thread-123079] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:41:26.323 [INFO] [Thread-123079] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:41:26.324 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:41:26.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:41:27.188 [DEBUG] [Thread-123081 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:41:27.199 [DEBUG] [Thread-123079] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:41:27.199 [DEBUG] [Thread-123079] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:41:27.246 [DEBUG] [Thread-123079] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:41:27.246 [DEBUG] [Thread-123079] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:41:27.254 [DEBUG] [Thread-123079] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:41:27.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:41:27.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:41:27.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:41:27.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:41:27.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:41:27.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:41:27.298 [DEBUG] [Thread-123079] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:41:31.071 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:41:35.343 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:41:35.533 [DEBUG] [Thread-123082 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:41:42.243 [DEBUG] [Thread-123083 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:41:44.350 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:41:44.353 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:41:57.276 [DEBUG] [Thread-123084 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:41:57.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:41:57.320 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:41:57.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:41:58.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 41, 51), 31.79, 10.22, 0.0, 18.07, 18.64, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:41:58.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:41:51
2025-11-03T21:41:58.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:41:58.350 [DEBUG] [Thread-123085] [transport.py] [_log()] starting thread (client mode): 0xed40820
2025-11-03T21:41:58.350 [DEBUG] [Thread-123085] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:41:58.379 [DEBUG] [Thread-123085] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:41:58.379 [INFO] [Thread-123085] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:41:58.390 [DEBUG] [Thread-123085] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:41:58.390 [DEBUG] [Thread-123085] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:41:58.390 [DEBUG] [Thread-123085] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:41:58.390 [DEBUG] [Thread-123085] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:41:58.391 [DEBUG] [Thread-123085] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:41:58.391 [DEBUG] [Thread-123085] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:41:58.391 [DEBUG] [Thread-123085] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:41:58.391 [DEBUG] [Thread-123085] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:41:58.391 [DEBUG] [Thread-123085] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:41:58.391 [DEBUG] [Thread-123085] [transport.py] [_log()] client lang: <none>
2025-11-03T21:41:58.391 [DEBUG] [Thread-123085] [transport.py] [_log()] server lang: <none>
2025-11-03T21:41:58.391 [DEBUG] [Thread-123085] [transport.py] [_log()] kex follows: False
2025-11-03T21:41:58.392 [DEBUG] [Thread-123085] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:41:58.392 [DEBUG] [Thread-123085] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:41:58.392 [DEBUG] [Thread-123085] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:41:58.392 [DEBUG] [Thread-123085] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:41:58.392 [DEBUG] [Thread-123085] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:41:58.393 [DEBUG] [Thread-123085] [transport.py] [_log()] Compression: none
2025-11-03T21:41:58.393 [DEBUG] [Thread-123085] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:41:58.403 [DEBUG] [Thread-123085] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:41:58.403 [DEBUG] [Thread-123085] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:41:58.404 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:41:58.404 [DEBUG] [Thread-123085] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:41:58.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:41:58.408 [DEBUG] [Thread-123085] [transport.py] [_log()] userauth is OK
2025-11-03T21:41:58.408 [DEBUG] [Thread-123085] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:41:58.408 [DEBUG] [Thread-123085] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:41:58.408 [DEBUG] [Thread-123085] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:41:58.408 [DEBUG] [Thread-123085] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:41:58.427 [INFO] [Thread-123085] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:41:58.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:41:59.238 [DEBUG] [Thread-123085] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:41:59.238 [DEBUG] [Thread-123085] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:41:59.239 [DEBUG] [Thread-123085] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:41:59.279 [DEBUG] [Thread-123085] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:41:59.279 [DEBUG] [Thread-123085] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:41:59.282 [DEBUG] [Thread-123085] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:41:59.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:41:59.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:41:59.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:41:59.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:41:59.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:41:59.314 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:41:59.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:41:59.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:41:59.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:41:59.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.820586 -999.00  +18.60  14.59     15   -7.90 1 1 1 1 1     0    0 25.30 -45.90 ZNESW 13.9 14.6 315.8 18.4 18.8 -26.4 18.8 -25.3 18.6 -24.7 18.8 -25.9
2025-11-03T21:41:59.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:41:59.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:41:59.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.820586
2025-11-03T21:41:59.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:41:59.316 [DEBUG] [Thread-123085] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:41:59.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:41:59.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:41:59.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:41:59.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:41:59.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:41:51', tmtdew=31.79, humidity=10.22, cloud=0.0, wind=18.07, temperature=18.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:41:52', seeing=1.07, atlas_timestamp='2025-11-03T19:41:38.630', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019249999999999545, 0.1332500000000003, 0.08425000000000082, 0.05149999999999899, -0.05000000000000071, 0.034250000000000114, -0.053000000000000824, -0.012249999999998096, 0.0495000000000001, 0.05450000000000088, 0.08424999999999905, 0.0909999999999993, 0.18900000000000006, 0.08225000000000016, -0.02500000000000213, -0.8830000000000009, 0.006249999999999645, 0.0045000000000001705, 0.16149999999999842, 0.0677500000000002, 0.16199999999999903, -0.030750000000001165, -0.10774999999999935, -0.6112500000000001, 0.0129999999999999, 0.2240000000000002, 0.20674999999999955, 0.22250000000000014, 0.15799999999999947, 0.22600000000000087, 0.12700000000000067, -0.19899999999999807, 0.17024999999999935], zp_timestamp='2025-11-03T19:40:00')
2025-11-03T21:41:59.399 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:41:59.411 [DEBUG] [Thread-123088] [transport.py] [_log()] starting thread (client mode): 0xeda2c20
2025-11-03T21:41:59.411 [DEBUG] [Thread-123088] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:41:59.426 [DEBUG] [Thread-123088] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:41:59.426 [INFO] [Thread-123088] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:41:59.434 [DEBUG] [Thread-123088] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:41:59.434 [DEBUG] [Thread-123088] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:41:59.434 [DEBUG] [Thread-123088] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:41:59.434 [DEBUG] [Thread-123088] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:41:59.434 [DEBUG] [Thread-123088] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:41:59.435 [DEBUG] [Thread-123088] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:41:59.435 [DEBUG] [Thread-123088] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:41:59.435 [DEBUG] [Thread-123088] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:41:59.435 [DEBUG] [Thread-123088] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:41:59.435 [DEBUG] [Thread-123088] [transport.py] [_log()] client lang: <none>
2025-11-03T21:41:59.435 [DEBUG] [Thread-123088] [transport.py] [_log()] server lang: <none>
2025-11-03T21:41:59.435 [DEBUG] [Thread-123088] [transport.py] [_log()] kex follows: False
2025-11-03T21:41:59.435 [DEBUG] [Thread-123088] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:41:59.435 [DEBUG] [Thread-123088] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:41:59.436 [DEBUG] [Thread-123088] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:41:59.436 [DEBUG] [Thread-123088] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:41:59.436 [DEBUG] [Thread-123088] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:41:59.436 [DEBUG] [Thread-123088] [transport.py] [_log()] Compression: none
2025-11-03T21:41:59.436 [DEBUG] [Thread-123088] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:41:59.495 [DEBUG] [Thread-123088] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:41:59.495 [DEBUG] [Thread-123088] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:41:59.496 [DEBUG] [Thread-123088] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:41:59.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:41:59.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:41:59.553 [DEBUG] [Thread-123088] [transport.py] [_log()] userauth is OK
2025-11-03T21:41:59.553 [DEBUG] [Thread-123088] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:41:59.553 [DEBUG] [Thread-123088] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:41:59.553 [DEBUG] [Thread-123088] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:41:59.553 [DEBUG] [Thread-123088] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:41:59.571 [INFO] [Thread-123088] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:41:59.571 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:41:59.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:42:00.419 [DEBUG] [Thread-123088] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:42:00.419 [DEBUG] [Thread-123088] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:42:00.467 [DEBUG] [Thread-123088] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:42:00.467 [DEBUG] [Thread-123088] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:42:00.476 [DEBUG] [Thread-123088] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:42:00.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:42:00.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:42:00.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:42:00.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:42:00.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:42:00.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:42:00.513 [DEBUG] [Thread-123088] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:42:12.311 [DEBUG] [Thread-123090 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:42:27.366 [DEBUG] [Thread-123091 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:42:30.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:42:30.548 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:42:30.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:42:31.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 42, 24), 31.75, 10.25, 0.0, 18.6, 18.66, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:42:31.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:42:24
2025-11-03T21:42:31.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:42:31.611 [DEBUG] [Thread-123092] [transport.py] [_log()] starting thread (client mode): 0xeda3a30
2025-11-03T21:42:31.612 [DEBUG] [Thread-123092] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:42:31.620 [DEBUG] [Thread-123092] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:42:31.621 [INFO] [Thread-123092] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:42:31.624 [DEBUG] [Thread-123092] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:42:31.624 [DEBUG] [Thread-123092] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:42:31.624 [DEBUG] [Thread-123092] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:42:31.624 [DEBUG] [Thread-123092] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:42:31.624 [DEBUG] [Thread-123092] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:42:31.624 [DEBUG] [Thread-123092] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:42:31.624 [DEBUG] [Thread-123092] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:42:31.624 [DEBUG] [Thread-123092] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:42:31.624 [DEBUG] [Thread-123092] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:42:31.624 [DEBUG] [Thread-123092] [transport.py] [_log()] client lang: <none>
2025-11-03T21:42:31.624 [DEBUG] [Thread-123092] [transport.py] [_log()] server lang: <none>
2025-11-03T21:42:31.624 [DEBUG] [Thread-123092] [transport.py] [_log()] kex follows: False
2025-11-03T21:42:31.625 [DEBUG] [Thread-123092] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:42:31.625 [DEBUG] [Thread-123092] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:42:31.625 [DEBUG] [Thread-123092] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:42:31.625 [DEBUG] [Thread-123092] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:42:31.625 [DEBUG] [Thread-123092] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:42:31.625 [DEBUG] [Thread-123092] [transport.py] [_log()] Compression: none
2025-11-03T21:42:31.625 [DEBUG] [Thread-123092] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:42:31.649 [DEBUG] [Thread-123092] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:42:31.649 [DEBUG] [Thread-123092] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:42:31.650 [DEBUG] [Thread-123092] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:42:31.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:42:31.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:42:31.655 [DEBUG] [Thread-123092] [transport.py] [_log()] userauth is OK
2025-11-03T21:42:31.655 [DEBUG] [Thread-123092] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:42:31.655 [DEBUG] [Thread-123092] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:42:31.655 [DEBUG] [Thread-123092] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:42:31.655 [DEBUG] [Thread-123092] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:42:31.680 [INFO] [Thread-123092] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:42:31.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:42:32.298 [DEBUG] [Thread-123092] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:42:32.298 [DEBUG] [Thread-123092] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:42:32.299 [DEBUG] [Thread-123092] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:42:32.339 [DEBUG] [Thread-123092] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:42:32.339 [DEBUG] [Thread-123092] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:42:32.342 [DEBUG] [Thread-123092] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:42:32.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:42:32.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:42:32.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:42:32.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:42:32.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:42:32.364 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:42:32.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:42:32.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:42:32.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:42:32.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.820934 -999.00  +18.70  18.24     15   -7.70 1 1 1 1 1     0    0 25.72 -45.49 ZNESW 15.2 18.2 310.6 22.5 18.8 -26.2 18.7 -25.2 18.5 -24.5 18.7 -25.7
2025-11-03T21:42:32.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:42:32.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:42:32.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.820934
2025-11-03T21:42:32.371 [DEBUG] [Thread-123092] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:42:32.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:42:32.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:42:32.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:42:32.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:42:32.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:42:32.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:42:24', tmtdew=31.75, humidity=10.25, cloud=0.0, wind=18.6, temperature=18.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:42:24', seeing=1.17, atlas_timestamp='2025-11-03T19:42:08.698', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019249999999999545, 0.1332500000000003, 0.08425000000000082, 0.05149999999999899, -0.05000000000000071, 0.034250000000000114, -0.053000000000000824, -0.012249999999998096, 0.0495000000000001, 0.05450000000000088, 0.08424999999999905, 0.0909999999999993, 0.18900000000000006, 0.08225000000000016, -0.02500000000000213, -0.8830000000000009, 0.006249999999999645, 0.0045000000000001705, 0.16149999999999842, 0.0677500000000002, 0.16199999999999903, -0.030750000000001165, -0.10774999999999935, -0.6112500000000001, 0.0129999999999999, 0.2240000000000002, 0.20674999999999955, 0.22250000000000014, 0.15799999999999947, 0.22600000000000087, 0.12700000000000067, -0.19899999999999807, 0.17024999999999935], zp_timestamp='2025-11-03T19:40:00')
2025-11-03T21:42:32.459 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:42:32.472 [DEBUG] [Thread-123095] [transport.py] [_log()] starting thread (client mode): 0xeda0ee0
2025-11-03T21:42:32.472 [DEBUG] [Thread-123095] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:42:32.487 [DEBUG] [Thread-123095] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:42:32.487 [INFO] [Thread-123095] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:42:32.496 [DEBUG] [Thread-123095] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:42:32.496 [DEBUG] [Thread-123095] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:42:32.496 [DEBUG] [Thread-123095] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:42:32.496 [DEBUG] [Thread-123095] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:42:32.496 [DEBUG] [Thread-123095] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:42:32.496 [DEBUG] [Thread-123095] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:42:32.496 [DEBUG] [Thread-123095] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:42:32.496 [DEBUG] [Thread-123095] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:42:32.496 [DEBUG] [Thread-123095] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:42:32.496 [DEBUG] [Thread-123095] [transport.py] [_log()] client lang: <none>
2025-11-03T21:42:32.496 [DEBUG] [Thread-123095] [transport.py] [_log()] server lang: <none>
2025-11-03T21:42:32.497 [DEBUG] [Thread-123095] [transport.py] [_log()] kex follows: False
2025-11-03T21:42:32.497 [DEBUG] [Thread-123095] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:42:32.497 [DEBUG] [Thread-123095] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:42:32.497 [DEBUG] [Thread-123095] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:42:32.497 [DEBUG] [Thread-123095] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:42:32.497 [DEBUG] [Thread-123095] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:42:32.497 [DEBUG] [Thread-123095] [transport.py] [_log()] Compression: none
2025-11-03T21:42:32.497 [DEBUG] [Thread-123095] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:42:32.552 [DEBUG] [Thread-123095] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:42:32.553 [DEBUG] [Thread-123095] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:42:32.554 [DEBUG] [Thread-123095] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:42:32.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:42:32.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:42:32.608 [DEBUG] [Thread-123095] [transport.py] [_log()] userauth is OK
2025-11-03T21:42:32.609 [DEBUG] [Thread-123095] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:42:32.609 [DEBUG] [Thread-123095] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:42:32.609 [DEBUG] [Thread-123095] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:42:32.609 [DEBUG] [Thread-123095] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:42:32.628 [INFO] [Thread-123095] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:42:32.628 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:42:32.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:42:33.467 [DEBUG] [Thread-123095] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:42:33.467 [DEBUG] [Thread-123095] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:42:33.507 [DEBUG] [Thread-123095] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:42:33.507 [DEBUG] [Thread-123095] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:42:33.516 [DEBUG] [Thread-123095] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:42:33.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:42:33.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:42:33.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:42:33.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:42:33.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:42:33.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:42:33.551 [DEBUG] [Thread-123095] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:42:35.850 [DEBUG] [Thread-123097 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:42:42.401 [DEBUG] [Thread-123098 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:42:44.567 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:42:44.568 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:42:57.454 [DEBUG] [Thread-123099 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:43:03.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:43:03.552 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:43:03.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:43:04.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 42, 56), 31.67, 10.27, 0.0, 16.69, 18.63, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:43:04.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:42:56
2025-11-03T21:43:04.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:43:04.559 [DEBUG] [Thread-123100] [transport.py] [_log()] starting thread (client mode): 0xedc7ca0
2025-11-03T21:43:04.559 [DEBUG] [Thread-123100] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:43:04.574 [DEBUG] [Thread-123100] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:43:04.574 [INFO] [Thread-123100] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:43:04.578 [DEBUG] [Thread-123100] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:43:04.578 [DEBUG] [Thread-123100] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:43:04.578 [DEBUG] [Thread-123100] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:43:04.578 [DEBUG] [Thread-123100] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:43:04.578 [DEBUG] [Thread-123100] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:43:04.578 [DEBUG] [Thread-123100] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:43:04.578 [DEBUG] [Thread-123100] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:43:04.578 [DEBUG] [Thread-123100] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:43:04.578 [DEBUG] [Thread-123100] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:43:04.578 [DEBUG] [Thread-123100] [transport.py] [_log()] client lang: <none>
2025-11-03T21:43:04.578 [DEBUG] [Thread-123100] [transport.py] [_log()] server lang: <none>
2025-11-03T21:43:04.578 [DEBUG] [Thread-123100] [transport.py] [_log()] kex follows: False
2025-11-03T21:43:04.578 [DEBUG] [Thread-123100] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:43:04.578 [DEBUG] [Thread-123100] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:43:04.578 [DEBUG] [Thread-123100] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:43:04.578 [DEBUG] [Thread-123100] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:43:04.578 [DEBUG] [Thread-123100] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:43:04.578 [DEBUG] [Thread-123100] [transport.py] [_log()] Compression: none
2025-11-03T21:43:04.578 [DEBUG] [Thread-123100] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:43:04.599 [DEBUG] [Thread-123100] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:43:04.600 [DEBUG] [Thread-123100] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:43:04.600 [DEBUG] [Thread-123100] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:43:04.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:43:04.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:43:04.602 [DEBUG] [Thread-123100] [transport.py] [_log()] userauth is OK
2025-11-03T21:43:04.603 [DEBUG] [Thread-123100] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:43:04.603 [DEBUG] [Thread-123100] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:43:04.603 [DEBUG] [Thread-123100] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:43:04.603 [DEBUG] [Thread-123100] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:43:04.627 [INFO] [Thread-123100] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:43:04.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:43:05.272 [DEBUG] [Thread-123100] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:43:05.281 [DEBUG] [Thread-123100] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:43:05.281 [DEBUG] [Thread-123100] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:43:05.313 [DEBUG] [Thread-123100] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:43:05.313 [DEBUG] [Thread-123100] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:43:05.316 [DEBUG] [Thread-123100] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:43:05.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:43:05.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:43:05.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:43:05.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:43:05.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:43:05.336 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:43:05.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:43:05.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:43:05.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:43:05.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.821281 -999.00  +18.70  16.58     15   -7.60 1 1 1 1 1     0    0 25.18 -46.22 ZNESW 18.4 16.6 300.8 20.7 18.9 -26.2 18.8 -25.3 18.5 -24.8 18.7 -25.8
2025-11-03T21:43:05.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:43:05.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:43:05.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.821281
2025-11-03T21:43:05.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:43:05.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:43:05.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:43:05.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:43:05.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:43:05.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:42:56', tmtdew=31.67, humidity=10.27, cloud=0.0, wind=16.69, temperature=18.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:42:57', seeing=1.36, atlas_timestamp='2025-11-03T19:42:38.678', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019249999999999545, 0.1332500000000003, 0.08425000000000082, 0.05149999999999899, -0.05000000000000071, 0.034250000000000114, -0.053000000000000824, -0.012249999999998096, 0.0495000000000001, 0.05450000000000088, 0.08424999999999905, 0.0909999999999993, 0.18900000000000006, 0.08225000000000016, -0.02500000000000213, -0.8830000000000009, 0.006249999999999645, 0.0045000000000001705, 0.16149999999999842, 0.0677500000000002, 0.16199999999999903, -0.030750000000001165, -0.10774999999999935, -0.6112500000000001, 0.0129999999999999, 0.2240000000000002, 0.20674999999999955, 0.22250000000000014, 0.15799999999999947, 0.22600000000000087, 0.12700000000000067, -0.19899999999999807, 0.17024999999999935], zp_timestamp='2025-11-03T19:40:00')
2025-11-03T21:43:05.340 [DEBUG] [Thread-123100] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:43:05.413 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:43:05.424 [DEBUG] [Thread-123103] [transport.py] [_log()] starting thread (client mode): 0xed41090
2025-11-03T21:43:05.424 [DEBUG] [Thread-123103] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:43:05.440 [DEBUG] [Thread-123103] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:43:05.440 [INFO] [Thread-123103] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:43:05.450 [DEBUG] [Thread-123103] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:43:05.450 [DEBUG] [Thread-123103] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:43:05.450 [DEBUG] [Thread-123103] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:43:05.450 [DEBUG] [Thread-123103] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:43:05.450 [DEBUG] [Thread-123103] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:43:05.450 [DEBUG] [Thread-123103] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:43:05.450 [DEBUG] [Thread-123103] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:43:05.450 [DEBUG] [Thread-123103] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:43:05.450 [DEBUG] [Thread-123103] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:43:05.450 [DEBUG] [Thread-123103] [transport.py] [_log()] client lang: <none>
2025-11-03T21:43:05.450 [DEBUG] [Thread-123103] [transport.py] [_log()] server lang: <none>
2025-11-03T21:43:05.450 [DEBUG] [Thread-123103] [transport.py] [_log()] kex follows: False
2025-11-03T21:43:05.450 [DEBUG] [Thread-123103] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:43:05.450 [DEBUG] [Thread-123103] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:43:05.450 [DEBUG] [Thread-123103] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:43:05.450 [DEBUG] [Thread-123103] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:43:05.450 [DEBUG] [Thread-123103] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:43:05.450 [DEBUG] [Thread-123103] [transport.py] [_log()] Compression: none
2025-11-03T21:43:05.450 [DEBUG] [Thread-123103] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:43:05.510 [DEBUG] [Thread-123103] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:43:05.511 [DEBUG] [Thread-123103] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:43:05.511 [DEBUG] [Thread-123103] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:43:05.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:43:05.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:43:05.568 [DEBUG] [Thread-123103] [transport.py] [_log()] userauth is OK
2025-11-03T21:43:05.568 [DEBUG] [Thread-123103] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:43:05.568 [DEBUG] [Thread-123103] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:43:05.568 [DEBUG] [Thread-123103] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:43:05.568 [DEBUG] [Thread-123103] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:43:05.581 [INFO] [Thread-123103] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:43:05.582 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:43:05.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:43:06.388 [DEBUG] [Thread-123103] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:43:06.406 [DEBUG] [Thread-123103] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:43:06.436 [DEBUG] [Thread-123103] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:43:06.436 [DEBUG] [Thread-123103] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:43:06.448 [DEBUG] [Thread-123103] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:43:06.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:43:06.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:43:06.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:43:06.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:43:06.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:43:06.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:43:06.495 [DEBUG] [Thread-123103] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:43:12.497 [DEBUG] [Thread-123105 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:43:27.577 [DEBUG] [Thread-123106 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:43:36.081 [DEBUG] [Thread-123107 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:43:36.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:43:36.516 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:43:36.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:43:37.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 43, 28), 31.59, 10.35, 0.0, 16.13, 18.69, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:43:37.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:43:28
2025-11-03T21:43:37.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:43:37.568 [DEBUG] [Thread-123108] [transport.py] [_log()] starting thread (client mode): 0xeda1030
2025-11-03T21:43:37.568 [DEBUG] [Thread-123108] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:43:37.593 [DEBUG] [Thread-123108] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:43:37.593 [INFO] [Thread-123108] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:43:37.597 [DEBUG] [Thread-123108] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:43:37.597 [DEBUG] [Thread-123108] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:43:37.597 [DEBUG] [Thread-123108] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:43:37.597 [DEBUG] [Thread-123108] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:43:37.597 [DEBUG] [Thread-123108] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:43:37.597 [DEBUG] [Thread-123108] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:43:37.597 [DEBUG] [Thread-123108] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:43:37.597 [DEBUG] [Thread-123108] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:43:37.597 [DEBUG] [Thread-123108] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:43:37.597 [DEBUG] [Thread-123108] [transport.py] [_log()] client lang: <none>
2025-11-03T21:43:37.597 [DEBUG] [Thread-123108] [transport.py] [_log()] server lang: <none>
2025-11-03T21:43:37.597 [DEBUG] [Thread-123108] [transport.py] [_log()] kex follows: False
2025-11-03T21:43:37.597 [DEBUG] [Thread-123108] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:43:37.597 [DEBUG] [Thread-123108] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:43:37.597 [DEBUG] [Thread-123108] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:43:37.597 [DEBUG] [Thread-123108] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:43:37.597 [DEBUG] [Thread-123108] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:43:37.597 [DEBUG] [Thread-123108] [transport.py] [_log()] Compression: none
2025-11-03T21:43:37.597 [DEBUG] [Thread-123108] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:43:37.605 [DEBUG] [Thread-123108] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:43:37.605 [DEBUG] [Thread-123108] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:43:37.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:43:37.605 [DEBUG] [Thread-123108] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:43:37.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:43:37.606 [DEBUG] [Thread-123108] [transport.py] [_log()] userauth is OK
2025-11-03T21:43:37.606 [DEBUG] [Thread-123108] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:43:37.606 [DEBUG] [Thread-123108] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:43:37.606 [DEBUG] [Thread-123108] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:43:37.606 [DEBUG] [Thread-123108] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:43:37.625 [INFO] [Thread-123108] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:43:37.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:43:38.289 [DEBUG] [Thread-123108] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:43:38.289 [DEBUG] [Thread-123108] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:43:38.289 [DEBUG] [Thread-123108] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:43:38.329 [DEBUG] [Thread-123108] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:43:38.330 [DEBUG] [Thread-123108] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:43:38.332 [DEBUG] [Thread-123108] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:43:38.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:43:38.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:43:38.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:43:38.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:43:38.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:43:38.349 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:43:38.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:43:38.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:43:38.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:43:38.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.821628 -999.00  +18.80  18.99     16   -7.50 1 1 1 1 1     0    0 26.08 -46.79 ZNESW 19.8 19.0 304.0 22.3 18.9 -26.2 18.8 -25.2 18.5 -25.0 18.8 -25.9
2025-11-03T21:43:38.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:43:38.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:43:38.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.821628
2025-11-03T21:43:38.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:43:38.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:43:38.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:43:38.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:43:38.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:43:38.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:43:28', tmtdew=31.59, humidity=10.35, cloud=0.0, wind=16.13, temperature=18.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:43:29', seeing=1.36, atlas_timestamp='2025-11-03T19:43:08.659', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019249999999999545, 0.1332500000000003, 0.08425000000000082, 0.05149999999999899, -0.05000000000000071, 0.034250000000000114, -0.053000000000000824, -0.012249999999998096, 0.0495000000000001, 0.05450000000000088, 0.08424999999999905, 0.0909999999999993, 0.18900000000000006, 0.08225000000000016, -0.02500000000000213, -0.8830000000000009, 0.006249999999999645, 0.0045000000000001705, 0.16149999999999842, 0.0677500000000002, 0.16199999999999903, -0.030750000000001165, -0.10774999999999935, -0.6112500000000001, 0.0129999999999999, 0.2240000000000002, 0.20674999999999955, 0.22250000000000014, 0.15799999999999947, 0.22600000000000087, 0.12700000000000067, -0.19899999999999807, 0.17024999999999935], zp_timestamp='2025-11-03T19:40:00')
2025-11-03T21:43:38.350 [DEBUG] [Thread-123108] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:43:38.426 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:43:38.438 [DEBUG] [Thread-123111] [transport.py] [_log()] starting thread (client mode): 0x11798970
2025-11-03T21:43:38.438 [DEBUG] [Thread-123111] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:43:38.453 [DEBUG] [Thread-123111] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:43:38.454 [INFO] [Thread-123111] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:43:38.461 [DEBUG] [Thread-123111] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:43:38.462 [DEBUG] [Thread-123111] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:43:38.462 [DEBUG] [Thread-123111] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:43:38.462 [DEBUG] [Thread-123111] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:43:38.462 [DEBUG] [Thread-123111] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:43:38.462 [DEBUG] [Thread-123111] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:43:38.462 [DEBUG] [Thread-123111] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:43:38.462 [DEBUG] [Thread-123111] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:43:38.462 [DEBUG] [Thread-123111] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:43:38.462 [DEBUG] [Thread-123111] [transport.py] [_log()] client lang: <none>
2025-11-03T21:43:38.462 [DEBUG] [Thread-123111] [transport.py] [_log()] server lang: <none>
2025-11-03T21:43:38.462 [DEBUG] [Thread-123111] [transport.py] [_log()] kex follows: False
2025-11-03T21:43:38.462 [DEBUG] [Thread-123111] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:43:38.462 [DEBUG] [Thread-123111] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:43:38.462 [DEBUG] [Thread-123111] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:43:38.462 [DEBUG] [Thread-123111] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:43:38.462 [DEBUG] [Thread-123111] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:43:38.462 [DEBUG] [Thread-123111] [transport.py] [_log()] Compression: none
2025-11-03T21:43:38.462 [DEBUG] [Thread-123111] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:43:38.518 [DEBUG] [Thread-123111] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:43:38.519 [DEBUG] [Thread-123111] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:43:38.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:43:38.519 [DEBUG] [Thread-123111] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:43:38.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:43:38.576 [DEBUG] [Thread-123111] [transport.py] [_log()] userauth is OK
2025-11-03T21:43:38.576 [DEBUG] [Thread-123111] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:43:38.576 [DEBUG] [Thread-123111] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:43:38.576 [DEBUG] [Thread-123111] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:43:38.576 [DEBUG] [Thread-123111] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:43:38.590 [INFO] [Thread-123111] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:43:38.590 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:43:38.590 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:43:39.412 [DEBUG] [Thread-123111] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:43:39.412 [DEBUG] [Thread-123111] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:43:39.462 [DEBUG] [Thread-123111] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:43:39.462 [DEBUG] [Thread-123111] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:43:39.470 [DEBUG] [Thread-123111] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:43:39.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:43:39.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:43:39.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:43:39.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:43:39.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:43:39.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:43:39.505 [DEBUG] [Thread-123111] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:43:42.606 [DEBUG] [Thread-123113 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:43:44.770 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:43:44.771 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:43:57.646 [DEBUG] [Thread-123114 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:44:09.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:44:09.526 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:44:09.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:44:10.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 44, 5), 31.7, 10.27, 0.0, 17.27, 18.73, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:44:10.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:44:05
2025-11-03T21:44:10.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:44:10.608 [DEBUG] [Thread-123115] [transport.py] [_log()] starting thread (client mode): 0x11799c30
2025-11-03T21:44:10.608 [DEBUG] [Thread-123115] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:44:10.628 [DEBUG] [Thread-123115] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:44:10.628 [INFO] [Thread-123115] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:44:10.630 [DEBUG] [Thread-123115] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:44:10.630 [DEBUG] [Thread-123115] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:44:10.630 [DEBUG] [Thread-123115] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:44:10.630 [DEBUG] [Thread-123115] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:44:10.630 [DEBUG] [Thread-123115] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:44:10.630 [DEBUG] [Thread-123115] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:44:10.630 [DEBUG] [Thread-123115] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:44:10.631 [DEBUG] [Thread-123115] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:44:10.631 [DEBUG] [Thread-123115] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:44:10.631 [DEBUG] [Thread-123115] [transport.py] [_log()] client lang: <none>
2025-11-03T21:44:10.631 [DEBUG] [Thread-123115] [transport.py] [_log()] server lang: <none>
2025-11-03T21:44:10.631 [DEBUG] [Thread-123115] [transport.py] [_log()] kex follows: False
2025-11-03T21:44:10.631 [DEBUG] [Thread-123115] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:44:10.631 [DEBUG] [Thread-123115] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:44:10.631 [DEBUG] [Thread-123115] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:44:10.631 [DEBUG] [Thread-123115] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:44:10.631 [DEBUG] [Thread-123115] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:44:10.631 [DEBUG] [Thread-123115] [transport.py] [_log()] Compression: none
2025-11-03T21:44:10.631 [DEBUG] [Thread-123115] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:44:10.649 [DEBUG] [Thread-123115] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:44:10.649 [DEBUG] [Thread-123115] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:44:10.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:44:10.650 [DEBUG] [Thread-123115] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:44:10.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:44:10.652 [DEBUG] [Thread-123115] [transport.py] [_log()] userauth is OK
2025-11-03T21:44:10.653 [DEBUG] [Thread-123115] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:44:10.653 [DEBUG] [Thread-123115] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:44:10.653 [DEBUG] [Thread-123115] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:44:10.653 [DEBUG] [Thread-123115] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:44:10.677 [INFO] [Thread-123115] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:44:10.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:44:11.322 [DEBUG] [Thread-123115] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:44:11.323 [DEBUG] [Thread-123115] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:44:11.323 [DEBUG] [Thread-123115] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:44:11.363 [DEBUG] [Thread-123115] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:44:11.364 [DEBUG] [Thread-123115] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:44:11.367 [DEBUG] [Thread-123115] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:44:11.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:44:11.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:44:11.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:44:11.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:44:11.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:44:11.401 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:44:11.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:44:11.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:44:11.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:44:11.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.821975 -999.00  +18.80  19.32     16   -7.40 1 1 1 1 1     0    0 25.03 -42.51 ZNESW 21.1 19.3 306.8 22.3 18.9 -26.0 18.8 -25.2 18.5 -24.8 18.8 -25.8
2025-11-03T21:44:11.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:44:11.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:44:11.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.821975
2025-11-03T21:44:11.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:44:11.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:44:11.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:44:11.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:44:11.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:44:11.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:44:05', tmtdew=31.7, humidity=10.27, cloud=0.0, wind=17.27, temperature=18.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:44:05', seeing=1.18, atlas_timestamp='2025-11-03T19:43:38.640', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019249999999999545, 0.1332500000000003, 0.08425000000000082, 0.05149999999999899, -0.05000000000000071, 0.034250000000000114, -0.053000000000000824, -0.012249999999998096, 0.0495000000000001, 0.05450000000000088, 0.08424999999999905, 0.0909999999999993, 0.18900000000000006, 0.08225000000000016, -0.02500000000000213, -0.8830000000000009, 0.006249999999999645, 0.0045000000000001705, 0.16149999999999842, 0.0677500000000002, 0.16199999999999903, -0.030750000000001165, -0.10774999999999935, -0.6112500000000001, 0.0129999999999999, 0.2240000000000002, 0.20674999999999955, 0.22250000000000014, 0.15799999999999947, 0.22600000000000087, 0.12700000000000067, -0.19899999999999807, 0.17024999999999935], zp_timestamp='2025-11-03T19:40:00')
2025-11-03T21:44:11.405 [DEBUG] [Thread-123115] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:44:11.488 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:44:11.500 [DEBUG] [Thread-123118] [transport.py] [_log()] starting thread (client mode): 0x1174cee0
2025-11-03T21:44:11.500 [DEBUG] [Thread-123118] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:44:11.516 [DEBUG] [Thread-123118] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:44:11.516 [INFO] [Thread-123118] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:44:11.529 [DEBUG] [Thread-123118] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:44:11.529 [DEBUG] [Thread-123118] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:44:11.529 [DEBUG] [Thread-123118] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:44:11.529 [DEBUG] [Thread-123118] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:44:11.530 [DEBUG] [Thread-123118] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:44:11.530 [DEBUG] [Thread-123118] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:44:11.530 [DEBUG] [Thread-123118] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:44:11.530 [DEBUG] [Thread-123118] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:44:11.530 [DEBUG] [Thread-123118] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:44:11.530 [DEBUG] [Thread-123118] [transport.py] [_log()] client lang: <none>
2025-11-03T21:44:11.530 [DEBUG] [Thread-123118] [transport.py] [_log()] server lang: <none>
2025-11-03T21:44:11.530 [DEBUG] [Thread-123118] [transport.py] [_log()] kex follows: False
2025-11-03T21:44:11.530 [DEBUG] [Thread-123118] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:44:11.530 [DEBUG] [Thread-123118] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:44:11.530 [DEBUG] [Thread-123118] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:44:11.530 [DEBUG] [Thread-123118] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:44:11.530 [DEBUG] [Thread-123118] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:44:11.530 [DEBUG] [Thread-123118] [transport.py] [_log()] Compression: none
2025-11-03T21:44:11.531 [DEBUG] [Thread-123118] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:44:11.590 [DEBUG] [Thread-123118] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:44:11.591 [DEBUG] [Thread-123118] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:44:11.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:44:11.592 [DEBUG] [Thread-123118] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:44:11.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:44:11.651 [DEBUG] [Thread-123118] [transport.py] [_log()] userauth is OK
2025-11-03T21:44:11.652 [DEBUG] [Thread-123118] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:44:11.652 [DEBUG] [Thread-123118] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:44:11.652 [DEBUG] [Thread-123118] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:44:11.652 [DEBUG] [Thread-123118] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:44:11.673 [INFO] [Thread-123118] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:44:11.673 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:44:11.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:44:12.508 [DEBUG] [Thread-123118] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:44:12.509 [DEBUG] [Thread-123118] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:44:12.558 [DEBUG] [Thread-123118] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:44:12.558 [DEBUG] [Thread-123118] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:44:12.569 [DEBUG] [Thread-123118] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:44:12.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:44:12.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:44:12.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:44:12.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:44:12.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:44:12.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:44:12.604 [DEBUG] [Thread-123118] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:44:12.679 [DEBUG] [Thread-123120 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:44:27.719 [DEBUG] [Thread-123121 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:44:36.443 [DEBUG] [Thread-123122 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:44:42.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:44:42.617 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:44:42.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:44:42.752 [DEBUG] [Thread-123123 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:44:43.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 44, 37), 31.46, 10.8, 0.0, 18.81, 18.79, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:44:43.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:44:37
2025-11-03T21:44:43.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:44:43.665 [DEBUG] [Thread-123124] [transport.py] [_log()] starting thread (client mode): 0xeda1cf0
2025-11-03T21:44:43.665 [DEBUG] [Thread-123124] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:44:43.685 [DEBUG] [Thread-123124] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:44:43.685 [INFO] [Thread-123124] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:44:43.695 [DEBUG] [Thread-123124] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:44:43.696 [DEBUG] [Thread-123124] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:44:43.696 [DEBUG] [Thread-123124] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:44:43.696 [DEBUG] [Thread-123124] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:44:43.696 [DEBUG] [Thread-123124] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:44:43.696 [DEBUG] [Thread-123124] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:44:43.696 [DEBUG] [Thread-123124] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:44:43.696 [DEBUG] [Thread-123124] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:44:43.696 [DEBUG] [Thread-123124] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:44:43.696 [DEBUG] [Thread-123124] [transport.py] [_log()] client lang: <none>
2025-11-03T21:44:43.696 [DEBUG] [Thread-123124] [transport.py] [_log()] server lang: <none>
2025-11-03T21:44:43.696 [DEBUG] [Thread-123124] [transport.py] [_log()] kex follows: False
2025-11-03T21:44:43.696 [DEBUG] [Thread-123124] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:44:43.696 [DEBUG] [Thread-123124] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:44:43.696 [DEBUG] [Thread-123124] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:44:43.696 [DEBUG] [Thread-123124] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:44:43.696 [DEBUG] [Thread-123124] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:44:43.696 [DEBUG] [Thread-123124] [transport.py] [_log()] Compression: none
2025-11-03T21:44:43.696 [DEBUG] [Thread-123124] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:44:43.716 [DEBUG] [Thread-123124] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:44:43.716 [DEBUG] [Thread-123124] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:44:43.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:44:43.717 [DEBUG] [Thread-123124] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:44:43.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:44:43.720 [DEBUG] [Thread-123124] [transport.py] [_log()] userauth is OK
2025-11-03T21:44:43.720 [DEBUG] [Thread-123124] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:44:43.720 [DEBUG] [Thread-123124] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:44:43.720 [DEBUG] [Thread-123124] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:44:43.720 [DEBUG] [Thread-123124] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:44:43.743 [INFO] [Thread-123124] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:44:43.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:44:44.392 [DEBUG] [Thread-123124] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:44:44.392 [DEBUG] [Thread-123124] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:44:44.392 [DEBUG] [Thread-123124] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:44:44.432 [DEBUG] [Thread-123124] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:44:44.432 [DEBUG] [Thread-123124] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:44:44.435 [DEBUG] [Thread-123124] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:44:44.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:44:44.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:44:44.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:44:44.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:44:44.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:44:44.453 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:44:44.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:44:44.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:44:44.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:44:44.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.822322 -999.00  +19.00  16.83     16   -7.20 1 1 1 1 1     0    0 25.66 -49.80 ZNESW 25.2 16.8 301.4 24.9 18.9 -26.0 18.8 -25.1 18.6 -24.9 18.9 -25.8
2025-11-03T21:44:44.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:44:44.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:44:44.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.822322
2025-11-03T21:44:44.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:44:44.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:44:44.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:44:44.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:44:44.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:44:44.462 [DEBUG] [Thread-123124] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:44:44.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:44:37', tmtdew=31.46, humidity=10.8, cloud=0.0, wind=18.81, temperature=18.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:44:38', seeing=1.18, atlas_timestamp='2025-11-03T19:44:08.621', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019249999999999545, 0.1332500000000003, 0.08425000000000082, 0.05149999999999899, -0.05000000000000071, 0.034250000000000114, -0.053000000000000824, -0.012249999999998096, 0.0495000000000001, 0.05450000000000088, 0.08424999999999905, 0.0909999999999993, 0.18900000000000006, 0.08225000000000016, -0.02500000000000213, -0.8830000000000009, 0.006249999999999645, 0.0045000000000001705, 0.16149999999999842, 0.0677500000000002, 0.16199999999999903, -0.030750000000001165, -0.10774999999999935, -0.6112500000000001, 0.0129999999999999, 0.2240000000000002, 0.20674999999999955, 0.22250000000000014, 0.15799999999999947, 0.22600000000000087, 0.12700000000000067, -0.19899999999999807, 0.17024999999999935], zp_timestamp='2025-11-03T19:42:00')
2025-11-03T21:44:44.534 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:44:44.551 [DEBUG] [Thread-123127] [transport.py] [_log()] starting thread (client mode): 0x1174df60
2025-11-03T21:44:44.551 [DEBUG] [Thread-123127] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:44:44.568 [DEBUG] [Thread-123127] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:44:44.568 [INFO] [Thread-123127] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:44:44.578 [DEBUG] [Thread-123127] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:44:44.578 [DEBUG] [Thread-123127] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:44:44.578 [DEBUG] [Thread-123127] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:44:44.578 [DEBUG] [Thread-123127] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:44:44.578 [DEBUG] [Thread-123127] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:44:44.578 [DEBUG] [Thread-123127] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:44:44.578 [DEBUG] [Thread-123127] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:44:44.578 [DEBUG] [Thread-123127] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:44:44.579 [DEBUG] [Thread-123127] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:44:44.579 [DEBUG] [Thread-123127] [transport.py] [_log()] client lang: <none>
2025-11-03T21:44:44.579 [DEBUG] [Thread-123127] [transport.py] [_log()] server lang: <none>
2025-11-03T21:44:44.579 [DEBUG] [Thread-123127] [transport.py] [_log()] kex follows: False
2025-11-03T21:44:44.579 [DEBUG] [Thread-123127] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:44:44.579 [DEBUG] [Thread-123127] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:44:44.579 [DEBUG] [Thread-123127] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:44:44.579 [DEBUG] [Thread-123127] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:44:44.579 [DEBUG] [Thread-123127] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:44:44.579 [DEBUG] [Thread-123127] [transport.py] [_log()] Compression: none
2025-11-03T21:44:44.579 [DEBUG] [Thread-123127] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:44:44.639 [DEBUG] [Thread-123127] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:44:44.639 [DEBUG] [Thread-123127] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:44:44.639 [DEBUG] [Thread-123127] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:44:44.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:44:44.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:44:44.702 [DEBUG] [Thread-123127] [transport.py] [_log()] userauth is OK
2025-11-03T21:44:44.702 [DEBUG] [Thread-123127] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:44:44.702 [DEBUG] [Thread-123127] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:44:44.702 [DEBUG] [Thread-123127] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:44:44.702 [DEBUG] [Thread-123127] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:44:44.718 [INFO] [Thread-123127] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:44:44.718 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:44:44.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:44:44.974 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:44:44.975 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:44:45.615 [DEBUG] [Thread-123127] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:44:45.616 [DEBUG] [Thread-123127] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:44:45.665 [DEBUG] [Thread-123127] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:44:45.665 [DEBUG] [Thread-123127] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:44:45.679 [DEBUG] [Thread-123127] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:44:45.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:44:45.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:44:45.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:44:45.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:44:45.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:44:45.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:44:45.725 [DEBUG] [Thread-123127] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:44:57.782 [DEBUG] [Thread-123129 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:44:58.262 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:45:06.489 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:45:10.749 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:45:12.814 [DEBUG] [Thread-123130 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:45:15.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:45:15.754 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:45:15.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:45:16.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 45, 10), 31.42, 10.83, 0.0, 19.0, 18.79, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:45:16.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:45:10
2025-11-03T21:45:16.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:45:16.798 [DEBUG] [Thread-123131] [transport.py] [_log()] starting thread (client mode): 0xed13ca0
2025-11-03T21:45:16.799 [DEBUG] [Thread-123131] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:45:16.810 [DEBUG] [Thread-123131] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:45:16.810 [INFO] [Thread-123131] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:45:16.812 [DEBUG] [Thread-123131] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:45:16.812 [DEBUG] [Thread-123131] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:45:16.812 [DEBUG] [Thread-123131] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:45:16.813 [DEBUG] [Thread-123131] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:45:16.813 [DEBUG] [Thread-123131] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:45:16.813 [DEBUG] [Thread-123131] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:45:16.813 [DEBUG] [Thread-123131] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:45:16.813 [DEBUG] [Thread-123131] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:45:16.813 [DEBUG] [Thread-123131] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:45:16.813 [DEBUG] [Thread-123131] [transport.py] [_log()] client lang: <none>
2025-11-03T21:45:16.813 [DEBUG] [Thread-123131] [transport.py] [_log()] server lang: <none>
2025-11-03T21:45:16.813 [DEBUG] [Thread-123131] [transport.py] [_log()] kex follows: False
2025-11-03T21:45:16.813 [DEBUG] [Thread-123131] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:45:16.814 [DEBUG] [Thread-123131] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:45:16.814 [DEBUG] [Thread-123131] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:45:16.814 [DEBUG] [Thread-123131] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:45:16.814 [DEBUG] [Thread-123131] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:45:16.814 [DEBUG] [Thread-123131] [transport.py] [_log()] Compression: none
2025-11-03T21:45:16.814 [DEBUG] [Thread-123131] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:45:16.831 [DEBUG] [Thread-123131] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:45:16.831 [DEBUG] [Thread-123131] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:45:16.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:45:16.833 [DEBUG] [Thread-123131] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:45:16.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:45:16.835 [DEBUG] [Thread-123131] [transport.py] [_log()] userauth is OK
2025-11-03T21:45:16.835 [DEBUG] [Thread-123131] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:45:16.836 [DEBUG] [Thread-123131] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:45:16.836 [DEBUG] [Thread-123131] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:45:16.836 [DEBUG] [Thread-123131] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:45:16.860 [INFO] [Thread-123131] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:45:16.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:45:17.519 [DEBUG] [Thread-123131] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:45:17.519 [DEBUG] [Thread-123131] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:45:17.530 [DEBUG] [Thread-123131] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:45:17.560 [DEBUG] [Thread-123131] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:45:17.560 [DEBUG] [Thread-123131] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:45:17.564 [DEBUG] [Thread-123131] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:45:17.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:45:17.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:45:17.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:45:17.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:45:17.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:45:17.586 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:45:17.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:45:17.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:45:17.588 [DEBUG] [Thread-123131] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:45:17.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:45:17.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.823017 -999.00  +19.20  21.59     16   -7.00 1 1 1 1 1     0    0 25.37 -56.43 ZNESW 18.5 21.6 302.4 25.6 18.9 -26.1 18.8 -25.1 18.6 -24.3 18.8 -25.6
2025-11-03T21:45:17.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:45:17.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:45:17.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.823017
2025-11-03T21:45:17.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:45:17.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:45:17.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:45:17.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:45:17.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:45:17.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:45:10', tmtdew=31.42, humidity=10.83, cloud=0.0, wind=19.0, temperature=18.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:45:11', seeing=1.2, atlas_timestamp='2025-11-03T19:45:08.669', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019249999999999545, 0.1332500000000003, 0.08425000000000082, 0.05149999999999899, -0.05000000000000071, 0.034250000000000114, -0.053000000000000824, -0.012249999999998096, 0.0495000000000001, 0.05450000000000088, 0.08424999999999905, 0.0909999999999993, 0.18900000000000006, 0.08225000000000016, -0.02500000000000213, -0.8830000000000009, 0.006249999999999645, 0.0045000000000001705, 0.16149999999999842, 0.0677500000000002, 0.16199999999999903, -0.030750000000001165, -0.10774999999999935, -0.6112500000000001, 0.0129999999999999, 0.2240000000000002, 0.20674999999999955, 0.22250000000000014, 0.15799999999999947, 0.22600000000000087, 0.12700000000000067, -0.19899999999999807, 0.17024999999999935], zp_timestamp='2025-11-03T19:42:00')
2025-11-03T21:45:17.702 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:45:17.714 [DEBUG] [Thread-123134] [transport.py] [_log()] starting thread (client mode): 0x1179bac0
2025-11-03T21:45:17.714 [DEBUG] [Thread-123134] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:45:17.729 [DEBUG] [Thread-123134] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:45:17.729 [INFO] [Thread-123134] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:45:17.736 [DEBUG] [Thread-123134] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:45:17.736 [DEBUG] [Thread-123134] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:45:17.736 [DEBUG] [Thread-123134] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:45:17.736 [DEBUG] [Thread-123134] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:45:17.736 [DEBUG] [Thread-123134] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:45:17.736 [DEBUG] [Thread-123134] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:45:17.736 [DEBUG] [Thread-123134] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:45:17.736 [DEBUG] [Thread-123134] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:45:17.736 [DEBUG] [Thread-123134] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:45:17.736 [DEBUG] [Thread-123134] [transport.py] [_log()] client lang: <none>
2025-11-03T21:45:17.737 [DEBUG] [Thread-123134] [transport.py] [_log()] server lang: <none>
2025-11-03T21:45:17.737 [DEBUG] [Thread-123134] [transport.py] [_log()] kex follows: False
2025-11-03T21:45:17.737 [DEBUG] [Thread-123134] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:45:17.737 [DEBUG] [Thread-123134] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:45:17.737 [DEBUG] [Thread-123134] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:45:17.737 [DEBUG] [Thread-123134] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:45:17.737 [DEBUG] [Thread-123134] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:45:17.737 [DEBUG] [Thread-123134] [transport.py] [_log()] Compression: none
2025-11-03T21:45:17.737 [DEBUG] [Thread-123134] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:45:17.795 [DEBUG] [Thread-123134] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:45:17.796 [DEBUG] [Thread-123134] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:45:17.796 [DEBUG] [Thread-123134] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:45:17.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:45:17.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:45:17.854 [DEBUG] [Thread-123134] [transport.py] [_log()] userauth is OK
2025-11-03T21:45:17.854 [DEBUG] [Thread-123134] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:45:17.855 [DEBUG] [Thread-123134] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:45:17.855 [DEBUG] [Thread-123134] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:45:17.855 [DEBUG] [Thread-123134] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:45:17.873 [INFO] [Thread-123134] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:45:17.873 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:45:17.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:45:18.700 [DEBUG] [Thread-123134] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:45:18.701 [DEBUG] [Thread-123134] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:45:18.749 [DEBUG] [Thread-123134] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:45:18.749 [DEBUG] [Thread-123134] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:45:18.759 [DEBUG] [Thread-123134] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:45:18.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:45:18.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:45:18.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:45:18.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:45:18.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:45:18.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:45:18.797 [DEBUG] [Thread-123134] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:45:27.866 [DEBUG] [Thread-123136 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:45:36.787 [DEBUG] [Thread-123137 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:45:42.950 [DEBUG] [Thread-123138 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:45:45.178 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:45:45.179 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:45:48.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:45:48.819 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:45:48.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:45:49.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 45, 43), 31.37, 10.85, 0.0, 18.39, 18.98, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:45:49.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:45:43
2025-11-03T21:45:49.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:45:49.759 [DEBUG] [Thread-123139] [transport.py] [_log()] starting thread (client mode): 0x11799090
2025-11-03T21:45:49.760 [DEBUG] [Thread-123139] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:45:49.779 [DEBUG] [Thread-123139] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:45:49.779 [INFO] [Thread-123139] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:45:49.781 [DEBUG] [Thread-123139] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:45:49.781 [DEBUG] [Thread-123139] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:45:49.781 [DEBUG] [Thread-123139] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:45:49.781 [DEBUG] [Thread-123139] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:45:49.781 [DEBUG] [Thread-123139] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:45:49.781 [DEBUG] [Thread-123139] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:45:49.781 [DEBUG] [Thread-123139] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:45:49.781 [DEBUG] [Thread-123139] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:45:49.781 [DEBUG] [Thread-123139] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:45:49.781 [DEBUG] [Thread-123139] [transport.py] [_log()] client lang: <none>
2025-11-03T21:45:49.781 [DEBUG] [Thread-123139] [transport.py] [_log()] server lang: <none>
2025-11-03T21:45:49.781 [DEBUG] [Thread-123139] [transport.py] [_log()] kex follows: False
2025-11-03T21:45:49.781 [DEBUG] [Thread-123139] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:45:49.781 [DEBUG] [Thread-123139] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:45:49.781 [DEBUG] [Thread-123139] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:45:49.781 [DEBUG] [Thread-123139] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:45:49.781 [DEBUG] [Thread-123139] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:45:49.782 [DEBUG] [Thread-123139] [transport.py] [_log()] Compression: none
2025-11-03T21:45:49.782 [DEBUG] [Thread-123139] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:45:49.792 [DEBUG] [Thread-123139] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:45:49.792 [DEBUG] [Thread-123139] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:45:49.792 [DEBUG] [Thread-123139] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:45:49.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:45:49.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:45:49.793 [DEBUG] [Thread-123139] [transport.py] [_log()] userauth is OK
2025-11-03T21:45:49.793 [DEBUG] [Thread-123139] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:45:49.793 [DEBUG] [Thread-123139] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:45:49.793 [DEBUG] [Thread-123139] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:45:49.793 [DEBUG] [Thread-123139] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:45:49.802 [INFO] [Thread-123139] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:45:49.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:45:50.417 [DEBUG] [Thread-123139] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:45:50.417 [DEBUG] [Thread-123139] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:45:50.417 [DEBUG] [Thread-123139] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:45:50.458 [DEBUG] [Thread-123139] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:45:50.458 [DEBUG] [Thread-123139] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:45:50.461 [DEBUG] [Thread-123139] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:45:50.473 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:45:50.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:45:50.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:45:50.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:45:50.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:45:50.477 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:45:50.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:45:50.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:45:50.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:45:50.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.823364 -999.00  +19.20  24.27     16   -6.90 1 1 1 1 1     0    0 24.84 -62.73 ZNESW 20.3 24.3 300.6 26.3 18.9 -26.0 18.9 -25.0 18.6 -24.7 18.9 -25.7
2025-11-03T21:45:50.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:45:50.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:45:50.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.823364
2025-11-03T21:45:50.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:45:50.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:45:50.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:45:50.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:45:50.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:45:50.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:45:43', tmtdew=31.37, humidity=10.85, cloud=0.0, wind=18.39, temperature=18.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:45:44', seeing=1.17, atlas_timestamp='2025-11-03T19:45:38.650', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019249999999999545, 0.1332500000000003, 0.08425000000000082, 0.05149999999999899, -0.05000000000000071, 0.034250000000000114, -0.053000000000000824, -0.012249999999998096, 0.0495000000000001, 0.05450000000000088, 0.08424999999999905, 0.0909999999999993, 0.18900000000000006, 0.08225000000000016, -0.02500000000000213, -0.8830000000000009, 0.006249999999999645, 0.0045000000000001705, 0.16149999999999842, 0.0677500000000002, 0.16199999999999903, -0.030750000000001165, -0.10774999999999935, -0.6112500000000001, 0.0129999999999999, 0.2240000000000002, 0.20674999999999955, 0.22250000000000014, 0.15799999999999947, 0.22600000000000087, 0.12700000000000067, -0.19899999999999807, 0.17024999999999935], zp_timestamp='2025-11-03T19:42:00')
2025-11-03T21:45:50.479 [DEBUG] [Thread-123139] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:45:50.553 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:45:50.567 [DEBUG] [Thread-123142] [transport.py] [_log()] starting thread (client mode): 0x11799930
2025-11-03T21:45:50.568 [DEBUG] [Thread-123142] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:45:50.583 [DEBUG] [Thread-123142] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:45:50.583 [INFO] [Thread-123142] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:45:50.591 [DEBUG] [Thread-123142] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:45:50.591 [DEBUG] [Thread-123142] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:45:50.591 [DEBUG] [Thread-123142] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:45:50.591 [DEBUG] [Thread-123142] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:45:50.591 [DEBUG] [Thread-123142] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:45:50.591 [DEBUG] [Thread-123142] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:45:50.591 [DEBUG] [Thread-123142] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:45:50.591 [DEBUG] [Thread-123142] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:45:50.591 [DEBUG] [Thread-123142] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:45:50.591 [DEBUG] [Thread-123142] [transport.py] [_log()] client lang: <none>
2025-11-03T21:45:50.591 [DEBUG] [Thread-123142] [transport.py] [_log()] server lang: <none>
2025-11-03T21:45:50.591 [DEBUG] [Thread-123142] [transport.py] [_log()] kex follows: False
2025-11-03T21:45:50.591 [DEBUG] [Thread-123142] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:45:50.591 [DEBUG] [Thread-123142] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:45:50.592 [DEBUG] [Thread-123142] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:45:50.592 [DEBUG] [Thread-123142] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:45:50.592 [DEBUG] [Thread-123142] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:45:50.592 [DEBUG] [Thread-123142] [transport.py] [_log()] Compression: none
2025-11-03T21:45:50.592 [DEBUG] [Thread-123142] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:45:50.651 [DEBUG] [Thread-123142] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:45:50.651 [DEBUG] [Thread-123142] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:45:50.651 [DEBUG] [Thread-123142] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:45:50.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:45:50.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:45:50.715 [DEBUG] [Thread-123142] [transport.py] [_log()] userauth is OK
2025-11-03T21:45:50.715 [DEBUG] [Thread-123142] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:45:50.715 [DEBUG] [Thread-123142] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:45:50.715 [DEBUG] [Thread-123142] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:45:50.715 [DEBUG] [Thread-123142] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:45:50.732 [INFO] [Thread-123142] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:45:50.732 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:45:50.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:45:51.548 [DEBUG] [Thread-123142] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:45:51.549 [DEBUG] [Thread-123142] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:45:51.596 [DEBUG] [Thread-123142] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:45:51.596 [DEBUG] [Thread-123142] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:45:51.605 [DEBUG] [Thread-123142] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:45:51.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:45:51.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:45:51.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:45:51.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:45:51.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:45:51.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:45:51.639 [DEBUG] [Thread-123142] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:45:57.984 [DEBUG] [Thread-123144 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:46:13.046 [DEBUG] [Thread-123145 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:46:21.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:46:21.659 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:46:21.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:46:22.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 46, 16), 31.38, 10.83, 0.0, 18.35, 18.91, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:46:22.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:46:16
2025-11-03T21:46:22.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:46:22.749 [DEBUG] [Thread-123146] [transport.py] [_log()] starting thread (client mode): 0x1179bac0
2025-11-03T21:46:22.749 [DEBUG] [Thread-123146] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:46:22.768 [DEBUG] [Thread-123146] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:46:22.768 [INFO] [Thread-123146] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:46:22.771 [DEBUG] [Thread-123146] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:46:22.771 [DEBUG] [Thread-123146] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:46:22.771 [DEBUG] [Thread-123146] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:46:22.771 [DEBUG] [Thread-123146] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:46:22.771 [DEBUG] [Thread-123146] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:46:22.771 [DEBUG] [Thread-123146] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:46:22.772 [DEBUG] [Thread-123146] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:46:22.772 [DEBUG] [Thread-123146] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:46:22.772 [DEBUG] [Thread-123146] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:46:22.772 [DEBUG] [Thread-123146] [transport.py] [_log()] client lang: <none>
2025-11-03T21:46:22.772 [DEBUG] [Thread-123146] [transport.py] [_log()] server lang: <none>
2025-11-03T21:46:22.772 [DEBUG] [Thread-123146] [transport.py] [_log()] kex follows: False
2025-11-03T21:46:22.772 [DEBUG] [Thread-123146] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:46:22.772 [DEBUG] [Thread-123146] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:46:22.772 [DEBUG] [Thread-123146] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:46:22.772 [DEBUG] [Thread-123146] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:46:22.772 [DEBUG] [Thread-123146] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:46:22.773 [DEBUG] [Thread-123146] [transport.py] [_log()] Compression: none
2025-11-03T21:46:22.773 [DEBUG] [Thread-123146] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:46:22.789 [DEBUG] [Thread-123146] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:46:22.789 [DEBUG] [Thread-123146] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:46:22.790 [DEBUG] [Thread-123146] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:46:22.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:46:22.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:46:22.790 [DEBUG] [Thread-123146] [transport.py] [_log()] userauth is OK
2025-11-03T21:46:22.790 [DEBUG] [Thread-123146] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:46:22.790 [DEBUG] [Thread-123146] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:46:22.790 [DEBUG] [Thread-123146] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:46:22.790 [DEBUG] [Thread-123146] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:46:22.799 [INFO] [Thread-123146] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:46:22.799 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:46:23.373 [DEBUG] [Thread-123146] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:46:23.373 [DEBUG] [Thread-123146] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:46:23.374 [DEBUG] [Thread-123146] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:46:23.414 [DEBUG] [Thread-123146] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:46:23.414 [DEBUG] [Thread-123146] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:46:23.416 [DEBUG] [Thread-123146] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:46:23.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:46:23.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:46:23.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:46:23.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:46:23.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:46:23.437 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:46:23.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:46:23.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:46:23.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:46:23.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.823711 -999.00  +19.20  19.75     16   -6.90 1 1 1 1 1     0    0 24.97 -59.41 ZNESW 20.7 19.8 305.2 23.9 18.9 -26.0 18.8 -25.0 18.7 -24.6 18.9 -25.6
2025-11-03T21:46:23.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:46:23.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:46:23.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.823711
2025-11-03T21:46:23.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:46:23.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:46:23.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:46:23.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:46:23.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:46:23.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:46:16', tmtdew=31.38, humidity=10.83, cloud=0.0, wind=18.35, temperature=18.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:46:16', seeing=1.17, atlas_timestamp='2025-11-03T19:46:08.630', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019249999999999545, 0.1332500000000003, 0.08425000000000082, 0.05149999999999899, -0.05000000000000071, 0.034250000000000114, -0.053000000000000824, -0.012249999999998096, 0.0495000000000001, 0.05450000000000088, 0.08424999999999905, 0.0909999999999993, 0.18900000000000006, 0.08225000000000016, -0.02500000000000213, -0.8830000000000009, 0.006249999999999645, 0.0045000000000001705, 0.16149999999999842, 0.0677500000000002, 0.16199999999999903, -0.030750000000001165, -0.10774999999999935, -0.6112500000000001, 0.0129999999999999, 0.2240000000000002, 0.20674999999999955, 0.22250000000000014, 0.15799999999999947, 0.22600000000000087, 0.12700000000000067, -0.19899999999999807, 0.17024999999999935], zp_timestamp='2025-11-03T19:42:00')
2025-11-03T21:46:23.439 [DEBUG] [Thread-123146] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:46:23.512 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:46:23.526 [DEBUG] [Thread-123149] [transport.py] [_log()] starting thread (client mode): 0x1174cf10
2025-11-03T21:46:23.526 [DEBUG] [Thread-123149] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:46:23.543 [DEBUG] [Thread-123149] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:46:23.543 [INFO] [Thread-123149] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:46:23.550 [DEBUG] [Thread-123149] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:46:23.551 [DEBUG] [Thread-123149] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:46:23.551 [DEBUG] [Thread-123149] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:46:23.551 [DEBUG] [Thread-123149] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:46:23.551 [DEBUG] [Thread-123149] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:46:23.551 [DEBUG] [Thread-123149] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:46:23.551 [DEBUG] [Thread-123149] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:46:23.551 [DEBUG] [Thread-123149] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:46:23.551 [DEBUG] [Thread-123149] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:46:23.551 [DEBUG] [Thread-123149] [transport.py] [_log()] client lang: <none>
2025-11-03T21:46:23.551 [DEBUG] [Thread-123149] [transport.py] [_log()] server lang: <none>
2025-11-03T21:46:23.551 [DEBUG] [Thread-123149] [transport.py] [_log()] kex follows: False
2025-11-03T21:46:23.551 [DEBUG] [Thread-123149] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:46:23.551 [DEBUG] [Thread-123149] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:46:23.551 [DEBUG] [Thread-123149] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:46:23.551 [DEBUG] [Thread-123149] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:46:23.551 [DEBUG] [Thread-123149] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:46:23.551 [DEBUG] [Thread-123149] [transport.py] [_log()] Compression: none
2025-11-03T21:46:23.551 [DEBUG] [Thread-123149] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:46:23.611 [DEBUG] [Thread-123149] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:46:23.612 [DEBUG] [Thread-123149] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:46:23.612 [DEBUG] [Thread-123149] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:46:23.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:46:23.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:46:23.669 [DEBUG] [Thread-123149] [transport.py] [_log()] userauth is OK
2025-11-03T21:46:23.669 [DEBUG] [Thread-123149] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:46:23.669 [DEBUG] [Thread-123149] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:46:23.669 [DEBUG] [Thread-123149] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:46:23.669 [DEBUG] [Thread-123149] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:46:23.684 [INFO] [Thread-123149] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:46:23.684 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:46:23.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:46:24.591 [DEBUG] [Thread-123149] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:46:24.591 [DEBUG] [Thread-123149] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:46:24.640 [DEBUG] [Thread-123149] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:46:24.640 [DEBUG] [Thread-123149] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:46:24.650 [DEBUG] [Thread-123149] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:46:24.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:46:24.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:46:24.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:46:24.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:46:24.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:46:24.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:46:24.687 [DEBUG] [Thread-123149] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:46:28.079 [DEBUG] [Thread-123151 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:46:37.011 [DEBUG] [Thread-123152 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:46:43.123 [DEBUG] [Thread-123153 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:46:45.377 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:46:45.378 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:46:54.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:46:54.709 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:46:54.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:46:55.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 46, 48), 31.31, 10.85, 0.0, 19.07, 18.99, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:46:55.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:46:48
2025-11-03T21:46:55.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:46:55.692 [DEBUG] [Thread-123154] [transport.py] [_log()] starting thread (client mode): 0xed066e0
2025-11-03T21:46:55.692 [DEBUG] [Thread-123154] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:46:55.714 [DEBUG] [Thread-123154] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:46:55.714 [INFO] [Thread-123154] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:46:55.718 [DEBUG] [Thread-123154] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:46:55.718 [DEBUG] [Thread-123154] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:46:55.719 [DEBUG] [Thread-123154] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:46:55.719 [DEBUG] [Thread-123154] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:46:55.719 [DEBUG] [Thread-123154] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:46:55.719 [DEBUG] [Thread-123154] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:46:55.719 [DEBUG] [Thread-123154] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:46:55.719 [DEBUG] [Thread-123154] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:46:55.719 [DEBUG] [Thread-123154] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:46:55.719 [DEBUG] [Thread-123154] [transport.py] [_log()] client lang: <none>
2025-11-03T21:46:55.719 [DEBUG] [Thread-123154] [transport.py] [_log()] server lang: <none>
2025-11-03T21:46:55.719 [DEBUG] [Thread-123154] [transport.py] [_log()] kex follows: False
2025-11-03T21:46:55.719 [DEBUG] [Thread-123154] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:46:55.720 [DEBUG] [Thread-123154] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:46:55.720 [DEBUG] [Thread-123154] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:46:55.720 [DEBUG] [Thread-123154] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:46:55.720 [DEBUG] [Thread-123154] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:46:55.720 [DEBUG] [Thread-123154] [transport.py] [_log()] Compression: none
2025-11-03T21:46:55.720 [DEBUG] [Thread-123154] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:46:55.731 [DEBUG] [Thread-123154] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:46:55.732 [DEBUG] [Thread-123154] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:46:55.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:46:55.733 [DEBUG] [Thread-123154] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:46:55.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:46:55.736 [DEBUG] [Thread-123154] [transport.py] [_log()] userauth is OK
2025-11-03T21:46:55.737 [DEBUG] [Thread-123154] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:46:55.737 [DEBUG] [Thread-123154] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:46:55.737 [DEBUG] [Thread-123154] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:46:55.737 [DEBUG] [Thread-123154] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:46:55.771 [INFO] [Thread-123154] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:46:55.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:46:56.420 [DEBUG] [Thread-123154] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:46:56.420 [DEBUG] [Thread-123154] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:46:56.421 [DEBUG] [Thread-123154] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:46:56.461 [DEBUG] [Thread-123154] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:46:56.461 [DEBUG] [Thread-123154] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:46:56.464 [DEBUG] [Thread-123154] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:46:56.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:46:56.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:46:56.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:46:56.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:46:56.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:46:56.487 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:46:56.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:46:56.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:46:56.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:46:56.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.823711 -999.00  +19.20  19.75     16   -6.90 1 1 1 1 1     0    0 24.97 -59.41 ZNESW 20.7 19.8 305.2 23.9 18.9 -26.0 18.8 -25.0 18.7 -24.6 18.9 -25.6
2025-11-03T21:46:56.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:46:56.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:46:56.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.823711
2025-11-03T21:46:56.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:46:56.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:46:56.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:46:56.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:46:56.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:46:56.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:46:48', tmtdew=31.31, humidity=10.85, cloud=0.0, wind=19.07, temperature=18.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:46:49', seeing=1.37, atlas_timestamp='2025-11-03T19:46:08.630', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019249999999999545, 0.1332500000000003, 0.08425000000000082, 0.05149999999999899, -0.05000000000000071, 0.034250000000000114, -0.053000000000000824, -0.012249999999998096, 0.0495000000000001, 0.05450000000000088, 0.08424999999999905, 0.0909999999999993, 0.18900000000000006, 0.08225000000000016, -0.02500000000000213, -0.8830000000000009, 0.006249999999999645, 0.0045000000000001705, 0.16149999999999842, 0.0677500000000002, 0.16199999999999903, -0.030750000000001165, -0.10774999999999935, -0.6112500000000001, 0.0129999999999999, 0.2240000000000002, 0.20674999999999955, 0.22250000000000014, 0.15799999999999947, 0.22600000000000087, 0.12700000000000067, -0.19899999999999807, 0.17024999999999935], zp_timestamp='2025-11-03T19:42:00')
2025-11-03T21:46:56.490 [DEBUG] [Thread-123154] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:46:56.574 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:46:56.587 [DEBUG] [Thread-123157] [transport.py] [_log()] starting thread (client mode): 0x117ea1a0
2025-11-03T21:46:56.588 [DEBUG] [Thread-123157] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:46:56.608 [DEBUG] [Thread-123157] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:46:56.608 [INFO] [Thread-123157] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:46:56.617 [DEBUG] [Thread-123157] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:46:56.618 [DEBUG] [Thread-123157] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:46:56.618 [DEBUG] [Thread-123157] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:46:56.618 [DEBUG] [Thread-123157] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:46:56.618 [DEBUG] [Thread-123157] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:46:56.618 [DEBUG] [Thread-123157] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:46:56.619 [DEBUG] [Thread-123157] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:46:56.619 [DEBUG] [Thread-123157] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:46:56.619 [DEBUG] [Thread-123157] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:46:56.619 [DEBUG] [Thread-123157] [transport.py] [_log()] client lang: <none>
2025-11-03T21:46:56.619 [DEBUG] [Thread-123157] [transport.py] [_log()] server lang: <none>
2025-11-03T21:46:56.619 [DEBUG] [Thread-123157] [transport.py] [_log()] kex follows: False
2025-11-03T21:46:56.619 [DEBUG] [Thread-123157] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:46:56.620 [DEBUG] [Thread-123157] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:46:56.620 [DEBUG] [Thread-123157] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:46:56.620 [DEBUG] [Thread-123157] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:46:56.620 [DEBUG] [Thread-123157] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:46:56.620 [DEBUG] [Thread-123157] [transport.py] [_log()] Compression: none
2025-11-03T21:46:56.620 [DEBUG] [Thread-123157] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:46:56.677 [DEBUG] [Thread-123157] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:46:56.678 [DEBUG] [Thread-123157] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:46:56.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:46:56.680 [DEBUG] [Thread-123157] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:46:56.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:46:56.737 [DEBUG] [Thread-123157] [transport.py] [_log()] userauth is OK
2025-11-03T21:46:56.738 [DEBUG] [Thread-123157] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:46:56.738 [DEBUG] [Thread-123157] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:46:56.739 [DEBUG] [Thread-123157] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:46:56.739 [DEBUG] [Thread-123157] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:46:56.757 [INFO] [Thread-123157] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:46:56.758 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:46:56.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:46:57.588 [DEBUG] [Thread-123157] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:46:57.588 [DEBUG] [Thread-123157] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:46:57.636 [DEBUG] [Thread-123157] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:46:57.636 [DEBUG] [Thread-123157] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:46:57.647 [DEBUG] [Thread-123157] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:46:57.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:46:57.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:46:57.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:46:57.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:46:57.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:46:57.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:46:57.681 [DEBUG] [Thread-123157] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:46:58.156 [DEBUG] [Thread-123159 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:47:13.200 [DEBUG] [Thread-123160 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:47:27.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:47:27.686 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:47:27.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:47:28.231 [DEBUG] [Thread-123161 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:47:28.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 47, 21), 31.36, 10.8, 0.0, 19.88, 18.94, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:47:28.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:47:21
2025-11-03T21:47:28.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:47:28.767 [DEBUG] [Thread-123162] [transport.py] [_log()] starting thread (client mode): 0x117ea470
2025-11-03T21:47:28.768 [DEBUG] [Thread-123162] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:47:28.781 [DEBUG] [Thread-123162] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:47:28.782 [INFO] [Thread-123162] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:47:28.786 [DEBUG] [Thread-123162] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:47:28.786 [DEBUG] [Thread-123162] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:47:28.787 [DEBUG] [Thread-123162] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:47:28.787 [DEBUG] [Thread-123162] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:47:28.787 [DEBUG] [Thread-123162] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:47:28.787 [DEBUG] [Thread-123162] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:47:28.787 [DEBUG] [Thread-123162] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:47:28.787 [DEBUG] [Thread-123162] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:47:28.787 [DEBUG] [Thread-123162] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:47:28.787 [DEBUG] [Thread-123162] [transport.py] [_log()] client lang: <none>
2025-11-03T21:47:28.787 [DEBUG] [Thread-123162] [transport.py] [_log()] server lang: <none>
2025-11-03T21:47:28.787 [DEBUG] [Thread-123162] [transport.py] [_log()] kex follows: False
2025-11-03T21:47:28.787 [DEBUG] [Thread-123162] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:47:28.788 [DEBUG] [Thread-123162] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:47:28.788 [DEBUG] [Thread-123162] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:47:28.788 [DEBUG] [Thread-123162] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:47:28.788 [DEBUG] [Thread-123162] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:47:28.788 [DEBUG] [Thread-123162] [transport.py] [_log()] Compression: none
2025-11-03T21:47:28.788 [DEBUG] [Thread-123162] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:47:28.819 [DEBUG] [Thread-123162] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:47:28.821 [DEBUG] [Thread-123162] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:47:28.822 [DEBUG] [Thread-123162] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:47:28.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:47:28.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:47:28.828 [DEBUG] [Thread-123162] [transport.py] [_log()] userauth is OK
2025-11-03T21:47:28.828 [DEBUG] [Thread-123162] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:47:28.828 [DEBUG] [Thread-123162] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:47:28.828 [DEBUG] [Thread-123162] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:47:28.828 [DEBUG] [Thread-123162] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:47:28.854 [INFO] [Thread-123162] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:47:28.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:47:29.527 [DEBUG] [Thread-123162] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:47:29.527 [DEBUG] [Thread-123162] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:47:29.530 [DEBUG] [Thread-123162] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:47:29.560 [DEBUG] [Thread-123162] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:47:29.560 [DEBUG] [Thread-123162] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:47:29.564 [DEBUG] [Thread-123162] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:47:29.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:47:29.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:47:29.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:47:29.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:47:29.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:47:29.592 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:47:29.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:47:29.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:47:29.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:47:29.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.824059 -999.00  +19.20  17.90     16   -6.90 1 1 1 1 1     0    0 24.67 -57.00 ZNESW 18.1 17.9 297.0 24.1 19.0 -26.1 18.9 -25.1 18.7 -24.7 18.9 -25.7
2025-11-03T21:47:29.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:47:29.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:47:29.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.824059
2025-11-03T21:47:29.601 [DEBUG] [Thread-123162] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:47:29.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:47:29.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:47:29.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:47:29.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:47:29.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:47:29.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:47:21', tmtdew=31.36, humidity=10.8, cloud=0.0, wind=19.88, temperature=18.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:47:21', seeing=1.12, atlas_timestamp='2025-11-03T19:46:38.698', atlas_cloud=1, atlas_rain=1, zp_data=[-0.017250000000000654, 0.0832499999999996, 0.04675000000000118, 0.026499999999998636, -0.06750000000000078, 0.034250000000000114, -0.09849999999999959, 0.006750000000000256, 0.022999999999999687, 0.11599999999999966, 0.12324999999999875, 0.0860000000000003, 0.14349999999999952, 0.06375000000000064, -0.050499999999999545, -0.6050000000000004, -0.06574999999999953, 0.020500000000000185, 0.18399999999999928, 0.1267499999999977, 0.19549999999999912, -0.04925000000000068, -0.15174999999999983, -0.292250000000001, 0.015499999999997627, 0.15450000000000053, 0.17675000000000018, 0.22949999999999982, 0.182500000000001, 0.15600000000000058, 0.17600000000000016, 0.08200000000000074, 0.11774999999999913], zp_timestamp='2025-11-03T19:46:00')
2025-11-03T21:47:29.709 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:47:29.726 [DEBUG] [Thread-123165] [transport.py] [_log()] starting thread (client mode): 0x1174f400
2025-11-03T21:47:29.726 [DEBUG] [Thread-123165] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:47:29.738 [DEBUG] [Thread-123165] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:47:29.738 [INFO] [Thread-123165] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:47:29.747 [DEBUG] [Thread-123165] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:47:29.748 [DEBUG] [Thread-123165] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:47:29.748 [DEBUG] [Thread-123165] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:47:29.748 [DEBUG] [Thread-123165] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:47:29.748 [DEBUG] [Thread-123165] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:47:29.748 [DEBUG] [Thread-123165] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:47:29.748 [DEBUG] [Thread-123165] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:47:29.748 [DEBUG] [Thread-123165] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:47:29.748 [DEBUG] [Thread-123165] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:47:29.748 [DEBUG] [Thread-123165] [transport.py] [_log()] client lang: <none>
2025-11-03T21:47:29.749 [DEBUG] [Thread-123165] [transport.py] [_log()] server lang: <none>
2025-11-03T21:47:29.749 [DEBUG] [Thread-123165] [transport.py] [_log()] kex follows: False
2025-11-03T21:47:29.749 [DEBUG] [Thread-123165] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:47:29.749 [DEBUG] [Thread-123165] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:47:29.749 [DEBUG] [Thread-123165] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:47:29.749 [DEBUG] [Thread-123165] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:47:29.749 [DEBUG] [Thread-123165] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:47:29.749 [DEBUG] [Thread-123165] [transport.py] [_log()] Compression: none
2025-11-03T21:47:29.749 [DEBUG] [Thread-123165] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:47:29.811 [DEBUG] [Thread-123165] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:47:29.812 [DEBUG] [Thread-123165] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:47:29.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:47:29.813 [DEBUG] [Thread-123165] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:47:29.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:47:29.876 [DEBUG] [Thread-123165] [transport.py] [_log()] userauth is OK
2025-11-03T21:47:29.876 [DEBUG] [Thread-123165] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:47:29.876 [DEBUG] [Thread-123165] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:47:29.876 [DEBUG] [Thread-123165] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:47:29.877 [DEBUG] [Thread-123165] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:47:29.904 [INFO] [Thread-123165] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:47:29.905 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:47:29.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:47:30.735 [DEBUG] [Thread-123165] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:47:30.735 [DEBUG] [Thread-123165] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:47:30.776 [DEBUG] [Thread-123165] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:47:30.776 [DEBUG] [Thread-123165] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:47:30.788 [DEBUG] [Thread-123165] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:47:30.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:47:30.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:47:30.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:47:30.815 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:47:30.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:47:30.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:47:30.824 [DEBUG] [Thread-123165] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:47:37.337 [DEBUG] [Thread-123167 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:47:43.264 [DEBUG] [Thread-123168 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:47:45.580 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:47:45.581 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:47:58.363 [DEBUG] [Thread-123169 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:48:00.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:48:00.816 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:48:00.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:48:01.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 47, 53), 31.25, 10.9, 0.0, 16.92, 18.94, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:48:01.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:47:53
2025-11-03T21:48:02.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:48:02.368 [DEBUG] [Thread-123170] [transport.py] [_log()] starting thread (client mode): 0xed04dc0
2025-11-03T21:48:02.368 [DEBUG] [Thread-123170] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:48:02.387 [DEBUG] [Thread-123170] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:48:02.387 [INFO] [Thread-123170] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:48:02.389 [DEBUG] [Thread-123170] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:48:02.389 [DEBUG] [Thread-123170] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:48:02.389 [DEBUG] [Thread-123170] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:48:02.389 [DEBUG] [Thread-123170] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:48:02.389 [DEBUG] [Thread-123170] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:48:02.389 [DEBUG] [Thread-123170] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:48:02.389 [DEBUG] [Thread-123170] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:48:02.389 [DEBUG] [Thread-123170] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:48:02.389 [DEBUG] [Thread-123170] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:48:02.389 [DEBUG] [Thread-123170] [transport.py] [_log()] client lang: <none>
2025-11-03T21:48:02.389 [DEBUG] [Thread-123170] [transport.py] [_log()] server lang: <none>
2025-11-03T21:48:02.389 [DEBUG] [Thread-123170] [transport.py] [_log()] kex follows: False
2025-11-03T21:48:02.389 [DEBUG] [Thread-123170] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:48:02.389 [DEBUG] [Thread-123170] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:48:02.389 [DEBUG] [Thread-123170] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:48:02.389 [DEBUG] [Thread-123170] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:48:02.390 [DEBUG] [Thread-123170] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:48:02.391 [DEBUG] [Thread-123170] [transport.py] [_log()] Compression: none
2025-11-03T21:48:02.391 [DEBUG] [Thread-123170] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:48:02.410 [DEBUG] [Thread-123170] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:48:02.411 [DEBUG] [Thread-123170] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:48:02.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:48:02.412 [DEBUG] [Thread-123170] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:48:02.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:48:02.415 [DEBUG] [Thread-123170] [transport.py] [_log()] userauth is OK
2025-11-03T21:48:02.415 [DEBUG] [Thread-123170] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:48:02.415 [DEBUG] [Thread-123170] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:48:02.416 [DEBUG] [Thread-123170] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:48:02.416 [DEBUG] [Thread-123170] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:48:02.441 [INFO] [Thread-123170] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:48:02.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:48:03.239 [DEBUG] [Thread-123170] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:48:03.239 [DEBUG] [Thread-123170] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:48:03.239 [DEBUG] [Thread-123170] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:48:03.280 [DEBUG] [Thread-123170] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:48:03.280 [DEBUG] [Thread-123170] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:48:03.282 [DEBUG] [Thread-123170] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:48:03.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:48:03.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:48:03.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:48:03.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:48:03.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:48:03.301 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:48:03.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:48:03.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:48:03.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:48:03.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.824406 -999.00  +19.30  22.59     16   -6.80 1 1 1 1 1     0    0 24.72 -57.79 ZNESW 19.6 22.6 302.0 26.8 19.0 -26.0 18.9 -25.1 18.7 -24.5 19.0 -25.8
2025-11-03T21:48:03.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:48:03.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:48:03.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.824406
2025-11-03T21:48:03.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:48:03.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:48:03.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:48:03.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:48:03.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:48:03.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:47:53', tmtdew=31.25, humidity=10.9, cloud=0.0, wind=16.92, temperature=18.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:47:54', seeing=1.12, atlas_timestamp='2025-11-03T19:47:08.678', atlas_cloud=1, atlas_rain=1, zp_data=[-0.017250000000000654, 0.0832499999999996, 0.04675000000000118, 0.026499999999998636, -0.06750000000000078, 0.034250000000000114, -0.09849999999999959, 0.006750000000000256, 0.022999999999999687, 0.11599999999999966, 0.12324999999999875, 0.0860000000000003, 0.14349999999999952, 0.06375000000000064, -0.050499999999999545, -0.6050000000000004, -0.06574999999999953, 0.020500000000000185, 0.18399999999999928, 0.1267499999999977, 0.19549999999999912, -0.04925000000000068, -0.15174999999999983, -0.292250000000001, 0.015499999999997627, 0.15450000000000053, 0.17675000000000018, 0.22949999999999982, 0.182500000000001, 0.15600000000000058, 0.17600000000000016, 0.08200000000000074, 0.11774999999999913], zp_timestamp='2025-11-03T19:46:00')
2025-11-03T21:48:03.303 [DEBUG] [Thread-123170] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:48:03.374 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:48:03.388 [DEBUG] [Thread-123173] [transport.py] [_log()] starting thread (client mode): 0xed341c0
2025-11-03T21:48:03.388 [DEBUG] [Thread-123173] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:48:03.403 [DEBUG] [Thread-123173] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:48:03.403 [INFO] [Thread-123173] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:48:03.412 [DEBUG] [Thread-123173] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:48:03.412 [DEBUG] [Thread-123173] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:48:03.412 [DEBUG] [Thread-123173] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:48:03.412 [DEBUG] [Thread-123173] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:48:03.412 [DEBUG] [Thread-123173] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:48:03.412 [DEBUG] [Thread-123173] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:48:03.412 [DEBUG] [Thread-123173] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:48:03.412 [DEBUG] [Thread-123173] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:48:03.412 [DEBUG] [Thread-123173] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:48:03.412 [DEBUG] [Thread-123173] [transport.py] [_log()] client lang: <none>
2025-11-03T21:48:03.412 [DEBUG] [Thread-123173] [transport.py] [_log()] server lang: <none>
2025-11-03T21:48:03.412 [DEBUG] [Thread-123173] [transport.py] [_log()] kex follows: False
2025-11-03T21:48:03.412 [DEBUG] [Thread-123173] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:48:03.413 [DEBUG] [Thread-123173] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:48:03.413 [DEBUG] [Thread-123173] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:48:03.413 [DEBUG] [Thread-123173] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:48:03.413 [DEBUG] [Thread-123173] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:48:03.413 [DEBUG] [Thread-123173] [transport.py] [_log()] Compression: none
2025-11-03T21:48:03.413 [DEBUG] [Thread-123173] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:48:03.472 [DEBUG] [Thread-123173] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:48:03.472 [DEBUG] [Thread-123173] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:48:03.472 [DEBUG] [Thread-123173] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:48:03.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:48:03.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:48:03.528 [DEBUG] [Thread-123173] [transport.py] [_log()] userauth is OK
2025-11-03T21:48:03.528 [DEBUG] [Thread-123173] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:48:03.528 [DEBUG] [Thread-123173] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:48:03.529 [DEBUG] [Thread-123173] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:48:03.529 [DEBUG] [Thread-123173] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:48:03.547 [INFO] [Thread-123173] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:48:03.547 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:48:03.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:48:04.398 [DEBUG] [Thread-123173] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:48:04.398 [DEBUG] [Thread-123173] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:48:04.445 [DEBUG] [Thread-123173] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:48:04.446 [DEBUG] [Thread-123173] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:48:04.454 [DEBUG] [Thread-123173] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:48:04.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:48:04.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:48:04.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:48:04.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:48:04.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:48:04.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:48:04.492 [DEBUG] [Thread-123173] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:48:13.399 [DEBUG] [Thread-123175 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:48:28.474 [DEBUG] [Thread-123176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:48:33.484 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:48:34.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:48:34.514 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:48:34.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:48:35.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 48, 27), 31.21, 10.93, 0.0, 16.99, 18.94, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:48:35.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:48:27
2025-11-03T21:48:35.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:48:35.568 [DEBUG] [Thread-123177] [transport.py] [_log()] starting thread (client mode): 0xed42710
2025-11-03T21:48:35.568 [DEBUG] [Thread-123177] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:48:35.588 [DEBUG] [Thread-123177] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:48:35.588 [INFO] [Thread-123177] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:48:35.591 [DEBUG] [Thread-123177] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:48:35.592 [DEBUG] [Thread-123177] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:48:35.592 [DEBUG] [Thread-123177] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:48:35.592 [DEBUG] [Thread-123177] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:48:35.592 [DEBUG] [Thread-123177] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:48:35.592 [DEBUG] [Thread-123177] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:48:35.592 [DEBUG] [Thread-123177] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:48:35.592 [DEBUG] [Thread-123177] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:48:35.592 [DEBUG] [Thread-123177] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:48:35.592 [DEBUG] [Thread-123177] [transport.py] [_log()] client lang: <none>
2025-11-03T21:48:35.592 [DEBUG] [Thread-123177] [transport.py] [_log()] server lang: <none>
2025-11-03T21:48:35.592 [DEBUG] [Thread-123177] [transport.py] [_log()] kex follows: False
2025-11-03T21:48:35.592 [DEBUG] [Thread-123177] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:48:35.592 [DEBUG] [Thread-123177] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:48:35.592 [DEBUG] [Thread-123177] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:48:35.592 [DEBUG] [Thread-123177] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:48:35.592 [DEBUG] [Thread-123177] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:48:35.592 [DEBUG] [Thread-123177] [transport.py] [_log()] Compression: none
2025-11-03T21:48:35.592 [DEBUG] [Thread-123177] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:48:35.610 [DEBUG] [Thread-123177] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:48:35.611 [DEBUG] [Thread-123177] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:48:35.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:48:35.612 [DEBUG] [Thread-123177] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:48:35.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:48:35.614 [DEBUG] [Thread-123177] [transport.py] [_log()] userauth is OK
2025-11-03T21:48:35.614 [DEBUG] [Thread-123177] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:48:35.614 [DEBUG] [Thread-123177] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:48:35.614 [DEBUG] [Thread-123177] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:48:35.614 [DEBUG] [Thread-123177] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:48:35.639 [INFO] [Thread-123177] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:48:35.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:48:36.295 [DEBUG] [Thread-123177] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:48:36.296 [DEBUG] [Thread-123177] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:48:36.296 [DEBUG] [Thread-123177] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:48:36.337 [DEBUG] [Thread-123177] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:48:36.337 [DEBUG] [Thread-123177] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:48:36.341 [DEBUG] [Thread-123177] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:48:36.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:48:36.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:48:36.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:48:36.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:48:36.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:48:36.364 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:48:36.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:48:36.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:48:36.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:48:36.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.824753 -999.00  +19.30  16.98     16   -6.70 1 1 1 1 1     0    0 24.53 -56.56 ZNESW 18.0 17.0 303.2 24.6 19.0 -26.0 18.9 -24.9 18.8 -24.6 19.0 -25.8
2025-11-03T21:48:36.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:48:36.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:48:36.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.824753
2025-11-03T21:48:36.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:48:36.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:48:36.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:48:36.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:48:36.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:48:36.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:48:27', tmtdew=31.21, humidity=10.93, cloud=0.0, wind=16.99, temperature=18.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:48:28', seeing=1.11, atlas_timestamp='2025-11-03T19:47:38.659', atlas_cloud=1, atlas_rain=1, zp_data=[-0.017250000000000654, 0.0832499999999996, 0.04675000000000118, 0.026499999999998636, -0.06750000000000078, 0.034250000000000114, -0.09849999999999959, 0.006750000000000256, 0.022999999999999687, 0.11599999999999966, 0.12324999999999875, 0.0860000000000003, 0.14349999999999952, 0.06375000000000064, -0.050499999999999545, -0.6050000000000004, -0.06574999999999953, 0.020500000000000185, 0.18399999999999928, 0.1267499999999977, 0.19549999999999912, -0.04925000000000068, -0.15174999999999983, -0.292250000000001, 0.015499999999997627, 0.15450000000000053, 0.17675000000000018, 0.22949999999999982, 0.182500000000001, 0.15600000000000058, 0.17600000000000016, 0.08200000000000074, 0.11774999999999913], zp_timestamp='2025-11-03T19:46:00')
2025-11-03T21:48:36.367 [DEBUG] [Thread-123177] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:48:36.451 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:48:36.464 [DEBUG] [Thread-123180] [transport.py] [_log()] starting thread (client mode): 0xed42b00
2025-11-03T21:48:36.464 [DEBUG] [Thread-123180] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:48:36.479 [DEBUG] [Thread-123180] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:48:36.479 [INFO] [Thread-123180] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:48:36.490 [DEBUG] [Thread-123180] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:48:36.491 [DEBUG] [Thread-123180] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:48:36.491 [DEBUG] [Thread-123180] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:48:36.491 [DEBUG] [Thread-123180] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:48:36.491 [DEBUG] [Thread-123180] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:48:36.491 [DEBUG] [Thread-123180] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:48:36.491 [DEBUG] [Thread-123180] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:48:36.491 [DEBUG] [Thread-123180] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:48:36.491 [DEBUG] [Thread-123180] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:48:36.491 [DEBUG] [Thread-123180] [transport.py] [_log()] client lang: <none>
2025-11-03T21:48:36.491 [DEBUG] [Thread-123180] [transport.py] [_log()] server lang: <none>
2025-11-03T21:48:36.492 [DEBUG] [Thread-123180] [transport.py] [_log()] kex follows: False
2025-11-03T21:48:36.492 [DEBUG] [Thread-123180] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:48:36.492 [DEBUG] [Thread-123180] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:48:36.492 [DEBUG] [Thread-123180] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:48:36.492 [DEBUG] [Thread-123180] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:48:36.492 [DEBUG] [Thread-123180] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:48:36.492 [DEBUG] [Thread-123180] [transport.py] [_log()] Compression: none
2025-11-03T21:48:36.492 [DEBUG] [Thread-123180] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:48:36.548 [DEBUG] [Thread-123180] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:48:36.548 [DEBUG] [Thread-123180] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:48:36.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:48:36.550 [DEBUG] [Thread-123180] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:48:36.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:48:36.607 [DEBUG] [Thread-123180] [transport.py] [_log()] userauth is OK
2025-11-03T21:48:36.608 [DEBUG] [Thread-123180] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:48:36.609 [DEBUG] [Thread-123180] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:48:36.609 [DEBUG] [Thread-123180] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:48:36.609 [DEBUG] [Thread-123180] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:48:36.632 [INFO] [Thread-123180] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:48:36.632 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:48:36.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:48:37.441 [DEBUG] [Thread-123180] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:48:37.441 [DEBUG] [Thread-123180] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:48:37.490 [DEBUG] [Thread-123180] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:48:37.490 [DEBUG] [Thread-123180] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:48:37.499 [DEBUG] [Thread-123180] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:48:37.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:48:37.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:48:37.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:48:37.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:48:37.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:48:37.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:48:37.531 [DEBUG] [Thread-123180] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:48:37.531 [DEBUG] [Thread-123182 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:48:40.721 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:48:43.504 [DEBUG] [Thread-123183 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:48:44.981 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:48:45.786 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:48:45.787 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:48:58.567 [DEBUG] [Thread-123184 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:49:07.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:49:07.553 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:49:07.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:49:08.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 48, 59), 31.21, 10.9, 0.0, 18.46, 19.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:49:08.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:48:59
2025-11-03T21:49:08.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:49:08.895 [DEBUG] [Thread-123185] [transport.py] [_log()] starting thread (client mode): 0xed43af0
2025-11-03T21:49:08.895 [DEBUG] [Thread-123185] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:49:08.917 [DEBUG] [Thread-123185] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:49:08.917 [INFO] [Thread-123185] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:49:08.918 [DEBUG] [Thread-123185] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:49:08.918 [DEBUG] [Thread-123185] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:49:08.918 [DEBUG] [Thread-123185] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:49:08.918 [DEBUG] [Thread-123185] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:49:08.918 [DEBUG] [Thread-123185] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:49:08.918 [DEBUG] [Thread-123185] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:49:08.918 [DEBUG] [Thread-123185] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:49:08.919 [DEBUG] [Thread-123185] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:49:08.919 [DEBUG] [Thread-123185] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:49:08.919 [DEBUG] [Thread-123185] [transport.py] [_log()] client lang: <none>
2025-11-03T21:49:08.919 [DEBUG] [Thread-123185] [transport.py] [_log()] server lang: <none>
2025-11-03T21:49:08.919 [DEBUG] [Thread-123185] [transport.py] [_log()] kex follows: False
2025-11-03T21:49:08.919 [DEBUG] [Thread-123185] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:49:08.919 [DEBUG] [Thread-123185] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:49:08.919 [DEBUG] [Thread-123185] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:49:08.919 [DEBUG] [Thread-123185] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:49:08.919 [DEBUG] [Thread-123185] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:49:08.919 [DEBUG] [Thread-123185] [transport.py] [_log()] Compression: none
2025-11-03T21:49:08.919 [DEBUG] [Thread-123185] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:49:08.926 [DEBUG] [Thread-123185] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:49:08.926 [DEBUG] [Thread-123185] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:49:08.926 [DEBUG] [Thread-123185] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:49:08.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:49:08.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:49:08.927 [DEBUG] [Thread-123185] [transport.py] [_log()] userauth is OK
2025-11-03T21:49:08.927 [DEBUG] [Thread-123185] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:49:08.927 [DEBUG] [Thread-123185] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:49:08.927 [DEBUG] [Thread-123185] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:49:08.927 [DEBUG] [Thread-123185] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:49:08.936 [INFO] [Thread-123185] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:49:08.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:49:09.772 [DEBUG] [Thread-123185] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:49:09.772 [DEBUG] [Thread-123185] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:49:09.772 [DEBUG] [Thread-123185] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:49:09.813 [DEBUG] [Thread-123185] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:49:09.813 [DEBUG] [Thread-123185] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:49:09.816 [DEBUG] [Thread-123185] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:49:09.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:49:09.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:49:09.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:49:09.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:49:09.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:49:09.832 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:49:09.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:49:09.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:49:09.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:49:09.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.825447 -999.00  +19.30  23.16     16   -6.80 1 1 1 1 1     0    0 25.11 -52.91 ZNESW 21.0 23.2 296.4 25.5 19.1 -26.0 18.9 -25.0 18.8 -24.3 19.1 -25.9
2025-11-03T21:49:09.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:49:09.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:49:09.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.825447
2025-11-03T21:49:09.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:49:09.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:49:09.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:49:09.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:49:09.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:49:09.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:48:59', tmtdew=31.21, humidity=10.9, cloud=0.0, wind=18.46, temperature=19.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:49:00', seeing=1.09, atlas_timestamp='2025-11-03T19:48:38.621', atlas_cloud=1, atlas_rain=1, zp_data=[-0.017250000000000654, 0.0832499999999996, 0.04675000000000118, 0.026499999999998636, -0.06750000000000078, 0.034250000000000114, -0.09849999999999959, 0.006750000000000256, 0.022999999999999687, 0.11599999999999966, 0.12324999999999875, 0.0860000000000003, 0.14349999999999952, 0.06375000000000064, -0.050499999999999545, -0.6050000000000004, -0.06574999999999953, 0.020500000000000185, 0.18399999999999928, 0.1267499999999977, 0.19549999999999912, -0.04925000000000068, -0.15174999999999983, -0.292250000000001, 0.015499999999997627, 0.15450000000000053, 0.17675000000000018, 0.22949999999999982, 0.182500000000001, 0.15600000000000058, 0.17600000000000016, 0.08200000000000074, 0.11774999999999913], zp_timestamp='2025-11-03T19:46:00')
2025-11-03T21:49:09.833 [DEBUG] [Thread-123185] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:49:09.906 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:49:09.918 [DEBUG] [Thread-123188] [transport.py] [_log()] starting thread (client mode): 0x117e81c0
2025-11-03T21:49:09.918 [DEBUG] [Thread-123188] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:49:09.933 [DEBUG] [Thread-123188] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:49:09.933 [INFO] [Thread-123188] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:49:09.942 [DEBUG] [Thread-123188] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:49:09.942 [DEBUG] [Thread-123188] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:49:09.942 [DEBUG] [Thread-123188] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:49:09.942 [DEBUG] [Thread-123188] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:49:09.942 [DEBUG] [Thread-123188] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:49:09.942 [DEBUG] [Thread-123188] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:49:09.942 [DEBUG] [Thread-123188] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:49:09.942 [DEBUG] [Thread-123188] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:49:09.942 [DEBUG] [Thread-123188] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:49:09.942 [DEBUG] [Thread-123188] [transport.py] [_log()] client lang: <none>
2025-11-03T21:49:09.942 [DEBUG] [Thread-123188] [transport.py] [_log()] server lang: <none>
2025-11-03T21:49:09.942 [DEBUG] [Thread-123188] [transport.py] [_log()] kex follows: False
2025-11-03T21:49:09.942 [DEBUG] [Thread-123188] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:49:09.942 [DEBUG] [Thread-123188] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:49:09.942 [DEBUG] [Thread-123188] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:49:09.942 [DEBUG] [Thread-123188] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:49:09.942 [DEBUG] [Thread-123188] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:49:09.942 [DEBUG] [Thread-123188] [transport.py] [_log()] Compression: none
2025-11-03T21:49:09.942 [DEBUG] [Thread-123188] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:49:09.999 [DEBUG] [Thread-123188] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:49:09.999 [DEBUG] [Thread-123188] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:49:09.999 [DEBUG] [Thread-123188] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:49:10.000 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:49:10.000 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:49:10.060 [DEBUG] [Thread-123188] [transport.py] [_log()] userauth is OK
2025-11-03T21:49:10.061 [DEBUG] [Thread-123188] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:49:10.061 [DEBUG] [Thread-123188] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:49:10.061 [DEBUG] [Thread-123188] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:49:10.061 [DEBUG] [Thread-123188] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:49:10.076 [INFO] [Thread-123188] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:49:10.076 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:49:10.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:49:10.916 [DEBUG] [Thread-123188] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:49:10.916 [DEBUG] [Thread-123188] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:49:10.966 [DEBUG] [Thread-123188] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:49:10.966 [DEBUG] [Thread-123188] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:49:10.976 [DEBUG] [Thread-123188] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:49:10.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:49:10.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:49:10.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:49:11.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:49:11.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:49:11.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:49:11.009 [DEBUG] [Thread-123188] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:49:13.600 [DEBUG] [Thread-123190 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:49:28.643 [DEBUG] [Thread-123191 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:49:37.785 [DEBUG] [Thread-123192 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:49:41.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:49:41.032 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:49:41.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:49:41.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 49, 32), 31.15, 10.95, 0.0, 18.0, 19.03, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:49:41.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:49:32
2025-11-03T21:49:41.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:49:42.138 [DEBUG] [Thread-123193] [transport.py] [_log()] starting thread (client mode): 0x11760d30
2025-11-03T21:49:42.138 [DEBUG] [Thread-123193] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:49:42.149 [DEBUG] [Thread-123193] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:49:42.149 [INFO] [Thread-123193] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:49:42.153 [DEBUG] [Thread-123193] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:49:42.153 [DEBUG] [Thread-123193] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:49:42.153 [DEBUG] [Thread-123193] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:49:42.153 [DEBUG] [Thread-123193] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:49:42.153 [DEBUG] [Thread-123193] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:49:42.153 [DEBUG] [Thread-123193] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:49:42.153 [DEBUG] [Thread-123193] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:49:42.153 [DEBUG] [Thread-123193] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:49:42.153 [DEBUG] [Thread-123193] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:49:42.153 [DEBUG] [Thread-123193] [transport.py] [_log()] client lang: <none>
2025-11-03T21:49:42.153 [DEBUG] [Thread-123193] [transport.py] [_log()] server lang: <none>
2025-11-03T21:49:42.153 [DEBUG] [Thread-123193] [transport.py] [_log()] kex follows: False
2025-11-03T21:49:42.154 [DEBUG] [Thread-123193] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:49:42.154 [DEBUG] [Thread-123193] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:49:42.154 [DEBUG] [Thread-123193] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:49:42.154 [DEBUG] [Thread-123193] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:49:42.154 [DEBUG] [Thread-123193] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:49:42.154 [DEBUG] [Thread-123193] [transport.py] [_log()] Compression: none
2025-11-03T21:49:42.154 [DEBUG] [Thread-123193] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:49:42.172 [DEBUG] [Thread-123193] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:49:42.173 [DEBUG] [Thread-123193] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:49:42.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:49:42.174 [DEBUG] [Thread-123193] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:49:42.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:49:42.177 [DEBUG] [Thread-123193] [transport.py] [_log()] userauth is OK
2025-11-03T21:49:42.177 [DEBUG] [Thread-123193] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:49:42.178 [DEBUG] [Thread-123193] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:49:42.178 [DEBUG] [Thread-123193] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:49:42.178 [DEBUG] [Thread-123193] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:49:42.193 [INFO] [Thread-123193] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:49:42.194 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:49:42.768 [DEBUG] [Thread-123193] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:49:42.768 [DEBUG] [Thread-123193] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:49:42.769 [DEBUG] [Thread-123193] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:49:42.809 [DEBUG] [Thread-123193] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:49:42.809 [DEBUG] [Thread-123193] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:49:42.811 [DEBUG] [Thread-123193] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:49:42.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:49:42.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:49:42.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:49:42.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:49:42.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:49:42.830 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:49:42.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:49:42.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:49:42.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:49:42.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.825795 -999.00  +19.40  18.75     16   -6.70 1 1 1 1 1     0    0 24.48 -53.03 ZNESW 17.5 18.8 303.2 27.0 19.1 -25.8 19.0 -25.0 18.8 -24.8 19.1 -25.6
2025-11-03T21:49:42.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:49:42.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:49:42.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.825795
2025-11-03T21:49:42.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:49:42.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:49:42.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:49:42.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:49:42.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:49:42.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:49:32', tmtdew=31.15, humidity=10.95, cloud=0.0, wind=18.0, temperature=19.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:49:33', seeing=1.09, atlas_timestamp='2025-11-03T19:49:08.688', atlas_cloud=1, atlas_rain=1, zp_data=[-0.017250000000000654, 0.0832499999999996, 0.04675000000000118, 0.026499999999998636, -0.06750000000000078, 0.034250000000000114, -0.09849999999999959, 0.006750000000000256, 0.022999999999999687, 0.11599999999999966, 0.12324999999999875, 0.0860000000000003, 0.14349999999999952, 0.06375000000000064, -0.050499999999999545, -0.6050000000000004, -0.06574999999999953, 0.020500000000000185, 0.18399999999999928, 0.1267499999999977, 0.19549999999999912, -0.04925000000000068, -0.15174999999999983, -0.292250000000001, 0.015499999999997627, 0.15450000000000053, 0.17675000000000018, 0.22949999999999982, 0.182500000000001, 0.15600000000000058, 0.17600000000000016, 0.08200000000000074, 0.11774999999999913], zp_timestamp='2025-11-03T19:46:00')
2025-11-03T21:49:42.831 [DEBUG] [Thread-123193] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:49:42.904 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:49:42.915 [DEBUG] [Thread-123196] [transport.py] [_log()] starting thread (client mode): 0x11761120
2025-11-03T21:49:42.916 [DEBUG] [Thread-123196] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:49:42.931 [DEBUG] [Thread-123196] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:49:42.931 [INFO] [Thread-123196] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:49:42.938 [DEBUG] [Thread-123196] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:49:42.939 [DEBUG] [Thread-123196] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:49:42.939 [DEBUG] [Thread-123196] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:49:42.939 [DEBUG] [Thread-123196] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:49:42.939 [DEBUG] [Thread-123196] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:49:42.939 [DEBUG] [Thread-123196] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:49:42.939 [DEBUG] [Thread-123196] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:49:42.939 [DEBUG] [Thread-123196] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:49:42.939 [DEBUG] [Thread-123196] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:49:42.940 [DEBUG] [Thread-123196] [transport.py] [_log()] client lang: <none>
2025-11-03T21:49:42.940 [DEBUG] [Thread-123196] [transport.py] [_log()] server lang: <none>
2025-11-03T21:49:42.940 [DEBUG] [Thread-123196] [transport.py] [_log()] kex follows: False
2025-11-03T21:49:42.940 [DEBUG] [Thread-123196] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:49:42.940 [DEBUG] [Thread-123196] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:49:42.940 [DEBUG] [Thread-123196] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:49:42.940 [DEBUG] [Thread-123196] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:49:42.940 [DEBUG] [Thread-123196] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:49:42.940 [DEBUG] [Thread-123196] [transport.py] [_log()] Compression: none
2025-11-03T21:49:42.940 [DEBUG] [Thread-123196] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:49:43.002 [DEBUG] [Thread-123196] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:49:43.003 [DEBUG] [Thread-123196] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:49:43.012 [DEBUG] [Thread-123196] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:49:43.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:49:43.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:49:43.059 [DEBUG] [Thread-123196] [transport.py] [_log()] userauth is OK
2025-11-03T21:49:43.059 [DEBUG] [Thread-123196] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:49:43.060 [DEBUG] [Thread-123196] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:49:43.060 [DEBUG] [Thread-123196] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:49:43.060 [DEBUG] [Thread-123196] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:49:43.079 [INFO] [Thread-123196] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:49:43.079 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:49:43.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:49:43.686 [DEBUG] [Thread-123198 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:49:43.935 [DEBUG] [Thread-123196] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:49:43.935 [DEBUG] [Thread-123196] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:49:43.984 [DEBUG] [Thread-123196] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:49:43.984 [DEBUG] [Thread-123196] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:49:43.993 [DEBUG] [Thread-123196] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:49:44.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:49:44.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:49:44.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:49:44.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:49:44.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:49:44.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:49:44.031 [DEBUG] [Thread-123196] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:49:45.990 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:49:45.991 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:49:58.731 [DEBUG] [Thread-123199 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:50:13.765 [DEBUG] [Thread-123200 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:50:14.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:50:14.024 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:50:14.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:50:14.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 50, 4), 31.18, 10.92, 0.0, 19.51, 18.99, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:50:14.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:50:04
2025-11-03T21:50:14.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:50:15.134 [DEBUG] [Thread-123201] [transport.py] [_log()] starting thread (client mode): 0x1179a8f0
2025-11-03T21:50:15.134 [DEBUG] [Thread-123201] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:50:15.156 [DEBUG] [Thread-123201] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:50:15.157 [INFO] [Thread-123201] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:50:15.160 [DEBUG] [Thread-123201] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:50:15.161 [DEBUG] [Thread-123201] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:50:15.161 [DEBUG] [Thread-123201] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:50:15.161 [DEBUG] [Thread-123201] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:50:15.161 [DEBUG] [Thread-123201] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:50:15.161 [DEBUG] [Thread-123201] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:50:15.161 [DEBUG] [Thread-123201] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:50:15.161 [DEBUG] [Thread-123201] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:50:15.161 [DEBUG] [Thread-123201] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:50:15.161 [DEBUG] [Thread-123201] [transport.py] [_log()] client lang: <none>
2025-11-03T21:50:15.161 [DEBUG] [Thread-123201] [transport.py] [_log()] server lang: <none>
2025-11-03T21:50:15.161 [DEBUG] [Thread-123201] [transport.py] [_log()] kex follows: False
2025-11-03T21:50:15.161 [DEBUG] [Thread-123201] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:50:15.161 [DEBUG] [Thread-123201] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:50:15.161 [DEBUG] [Thread-123201] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:50:15.161 [DEBUG] [Thread-123201] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:50:15.161 [DEBUG] [Thread-123201] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:50:15.161 [DEBUG] [Thread-123201] [transport.py] [_log()] Compression: none
2025-11-03T21:50:15.161 [DEBUG] [Thread-123201] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:50:15.178 [DEBUG] [Thread-123201] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:50:15.178 [DEBUG] [Thread-123201] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:50:15.179 [DEBUG] [Thread-123201] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:50:15.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:50:15.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:50:15.181 [DEBUG] [Thread-123201] [transport.py] [_log()] userauth is OK
2025-11-03T21:50:15.181 [DEBUG] [Thread-123201] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:50:15.181 [DEBUG] [Thread-123201] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:50:15.181 [DEBUG] [Thread-123201] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:50:15.181 [DEBUG] [Thread-123201] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:50:15.199 [INFO] [Thread-123201] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:50:15.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:50:16.526 [DEBUG] [Thread-123201] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:50:16.527 [DEBUG] [Thread-123201] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:50:16.527 [DEBUG] [Thread-123201] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:50:16.568 [DEBUG] [Thread-123201] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:50:16.568 [DEBUG] [Thread-123201] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:50:16.571 [DEBUG] [Thread-123201] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:50:16.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:50:16.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:50:16.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:50:16.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:50:16.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:50:16.595 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:50:16.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:50:16.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:50:16.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:50:16.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.826142 -999.00  +19.30  18.09     16   -6.70 1 1 1 1 1     0    0 24.78 -53.99 ZNESW 19.0 18.1 304.4 23.0 19.1 -26.0 19.0 -25.0 18.8 -24.5 19.1 -25.6
2025-11-03T21:50:16.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:50:16.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:50:16.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.826142
2025-11-03T21:50:16.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:50:16.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:50:16.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:50:16.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:50:16.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:50:16.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:50:04', tmtdew=31.18, humidity=10.92, cloud=0.0, wind=19.51, temperature=18.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:50:05', seeing=1.16, atlas_timestamp='2025-11-03T19:49:38.669', atlas_cloud=1, atlas_rain=1, zp_data=[-0.017250000000000654, 0.0832499999999996, 0.04675000000000118, 0.026499999999998636, -0.06750000000000078, 0.034250000000000114, -0.09849999999999959, 0.006750000000000256, 0.022999999999999687, 0.11599999999999966, 0.12324999999999875, 0.0860000000000003, 0.14349999999999952, 0.06375000000000064, -0.050499999999999545, -0.6050000000000004, -0.06574999999999953, 0.020500000000000185, 0.18399999999999928, 0.1267499999999977, 0.19549999999999912, -0.04925000000000068, -0.15174999999999983, -0.292250000000001, 0.015499999999997627, 0.15450000000000053, 0.17675000000000018, 0.22949999999999982, 0.182500000000001, 0.15600000000000058, 0.17600000000000016, 0.08200000000000074, 0.11774999999999913], zp_timestamp='2025-11-03T19:46:00')
2025-11-03T21:50:16.600 [DEBUG] [Thread-123201] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:50:16.694 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:50:16.706 [DEBUG] [Thread-123204] [transport.py] [_log()] starting thread (client mode): 0xed40e50
2025-11-03T21:50:16.706 [DEBUG] [Thread-123204] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:50:16.721 [DEBUG] [Thread-123204] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:50:16.721 [INFO] [Thread-123204] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:50:16.731 [DEBUG] [Thread-123204] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:50:16.732 [DEBUG] [Thread-123204] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:50:16.732 [DEBUG] [Thread-123204] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:50:16.732 [DEBUG] [Thread-123204] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:50:16.732 [DEBUG] [Thread-123204] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:50:16.732 [DEBUG] [Thread-123204] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:50:16.732 [DEBUG] [Thread-123204] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:50:16.732 [DEBUG] [Thread-123204] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:50:16.732 [DEBUG] [Thread-123204] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:50:16.732 [DEBUG] [Thread-123204] [transport.py] [_log()] client lang: <none>
2025-11-03T21:50:16.732 [DEBUG] [Thread-123204] [transport.py] [_log()] server lang: <none>
2025-11-03T21:50:16.732 [DEBUG] [Thread-123204] [transport.py] [_log()] kex follows: False
2025-11-03T21:50:16.732 [DEBUG] [Thread-123204] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:50:16.732 [DEBUG] [Thread-123204] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:50:16.733 [DEBUG] [Thread-123204] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:50:16.733 [DEBUG] [Thread-123204] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:50:16.733 [DEBUG] [Thread-123204] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:50:16.733 [DEBUG] [Thread-123204] [transport.py] [_log()] Compression: none
2025-11-03T21:50:16.733 [DEBUG] [Thread-123204] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:50:16.787 [DEBUG] [Thread-123204] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:50:16.787 [DEBUG] [Thread-123204] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:50:16.788 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:50:16.788 [DEBUG] [Thread-123204] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:50:16.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:50:16.848 [DEBUG] [Thread-123204] [transport.py] [_log()] userauth is OK
2025-11-03T21:50:16.848 [DEBUG] [Thread-123204] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:50:16.849 [DEBUG] [Thread-123204] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:50:16.849 [DEBUG] [Thread-123204] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:50:16.849 [DEBUG] [Thread-123204] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:50:16.868 [INFO] [Thread-123204] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:50:16.869 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:50:16.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:50:17.700 [DEBUG] [Thread-123204] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:50:17.700 [DEBUG] [Thread-123204] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:50:17.749 [DEBUG] [Thread-123204] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:50:17.749 [DEBUG] [Thread-123204] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:50:17.759 [DEBUG] [Thread-123204] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:50:17.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:50:17.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:50:17.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:50:17.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:50:17.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:50:17.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:50:17.797 [DEBUG] [Thread-123204] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:50:28.796 [DEBUG] [Thread-123206 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:50:38.041 [DEBUG] [Thread-123207 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:50:43.886 [DEBUG] [Thread-123208 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:50:46.197 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:50:46.198 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:50:47.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:50:47.792 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:50:47.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:50:48.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 50, 37), 31.05, 11.0, 0.0, 18.58, 19.08, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:50:48.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:50:37
2025-11-03T21:50:48.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:50:48.911 [DEBUG] [Thread-123209] [transport.py] [_log()] starting thread (client mode): 0xedc5030
2025-11-03T21:50:48.912 [DEBUG] [Thread-123209] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:50:48.923 [DEBUG] [Thread-123209] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:50:48.923 [INFO] [Thread-123209] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:50:48.926 [DEBUG] [Thread-123209] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:50:48.926 [DEBUG] [Thread-123209] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:50:48.927 [DEBUG] [Thread-123209] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:50:48.927 [DEBUG] [Thread-123209] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:50:48.927 [DEBUG] [Thread-123209] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:50:48.927 [DEBUG] [Thread-123209] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:50:48.927 [DEBUG] [Thread-123209] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:50:48.927 [DEBUG] [Thread-123209] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:50:48.927 [DEBUG] [Thread-123209] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:50:48.927 [DEBUG] [Thread-123209] [transport.py] [_log()] client lang: <none>
2025-11-03T21:50:48.927 [DEBUG] [Thread-123209] [transport.py] [_log()] server lang: <none>
2025-11-03T21:50:48.927 [DEBUG] [Thread-123209] [transport.py] [_log()] kex follows: False
2025-11-03T21:50:48.927 [DEBUG] [Thread-123209] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:50:48.927 [DEBUG] [Thread-123209] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:50:48.927 [DEBUG] [Thread-123209] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:50:48.927 [DEBUG] [Thread-123209] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:50:48.927 [DEBUG] [Thread-123209] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:50:48.927 [DEBUG] [Thread-123209] [transport.py] [_log()] Compression: none
2025-11-03T21:50:48.927 [DEBUG] [Thread-123209] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:50:48.954 [DEBUG] [Thread-123209] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:50:48.955 [DEBUG] [Thread-123209] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:50:48.956 [DEBUG] [Thread-123209] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:50:48.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:50:48.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:50:48.998 [DEBUG] [Thread-123209] [transport.py] [_log()] userauth is OK
2025-11-03T21:50:48.998 [DEBUG] [Thread-123209] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:50:48.998 [DEBUG] [Thread-123209] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:50:48.998 [DEBUG] [Thread-123209] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:50:48.999 [DEBUG] [Thread-123209] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:50:49.037 [INFO] [Thread-123209] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:50:49.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:50:49.661 [DEBUG] [Thread-123209] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:50:49.662 [DEBUG] [Thread-123209] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:50:49.673 [DEBUG] [Thread-123209] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:50:49.703 [DEBUG] [Thread-123209] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:50:49.704 [DEBUG] [Thread-123209] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:50:49.707 [DEBUG] [Thread-123209] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:50:49.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:50:49.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:50:49.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:50:49.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:50:49.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:50:49.736 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:50:49.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:50:49.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:50:49.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:50:49.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.826489 -999.00  +19.30  18.12     16   -6.80 1 1 1 1 1     0    0 25.09 -52.91 ZNESW 16.8 18.1 304.2 22.7 19.1 -26.1 19.0 -25.0 18.9 -24.6 19.1 -25.7
2025-11-03T21:50:49.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:50:49.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:50:49.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.826489
2025-11-03T21:50:49.744 [DEBUG] [Thread-123209] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:50:49.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:50:49.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:50:49.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:50:49.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:50:49.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:50:49.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:50:37', tmtdew=31.05, humidity=11.0, cloud=0.0, wind=18.58, temperature=19.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:50:38', seeing=1.15, atlas_timestamp='2025-11-03T19:50:08.650', atlas_cloud=1, atlas_rain=1, zp_data=[0.05975000000000108, 0.15725000000000122, 0.1302500000000002, 0.011499999999999844, 0.06099999999999994, 0.04625000000000057, 0.024499999999999744, -0.044749999999998735, -0.18850000000000122, 0.19599999999999973, 0.11125000000000007, 0.19200000000000017, 0.21450000000000102, 0.0962499999999995, 0.02099999999999902, -0.6950000000000003, 0.08424999999999905, 0.14649999999999963, 0.19099999999999895, 0.20924999999999905, 0.24999999999999822, 0.0017499999999994742, 0.016250000000001208, -0.3462499999999995, 0.09749999999999837, 0.2550000000000008, 0.30375000000000085, 0.2524999999999995, 0.20650000000000013, 0.2560000000000011, 0.22500000000000142, -0.2544999999999984, 0.19174999999999898], zp_timestamp='2025-11-03T19:48:00')
2025-11-03T21:50:49.849 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:50:49.861 [DEBUG] [Thread-123212] [transport.py] [_log()] starting thread (client mode): 0xedc5390
2025-11-03T21:50:49.861 [DEBUG] [Thread-123212] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:50:49.876 [DEBUG] [Thread-123212] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:50:49.876 [INFO] [Thread-123212] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:50:49.884 [DEBUG] [Thread-123212] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:50:49.884 [DEBUG] [Thread-123212] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:50:49.884 [DEBUG] [Thread-123212] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:50:49.884 [DEBUG] [Thread-123212] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:50:49.884 [DEBUG] [Thread-123212] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:50:49.884 [DEBUG] [Thread-123212] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:50:49.884 [DEBUG] [Thread-123212] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:50:49.884 [DEBUG] [Thread-123212] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:50:49.884 [DEBUG] [Thread-123212] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:50:49.884 [DEBUG] [Thread-123212] [transport.py] [_log()] client lang: <none>
2025-11-03T21:50:49.884 [DEBUG] [Thread-123212] [transport.py] [_log()] server lang: <none>
2025-11-03T21:50:49.884 [DEBUG] [Thread-123212] [transport.py] [_log()] kex follows: False
2025-11-03T21:50:49.884 [DEBUG] [Thread-123212] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:50:49.884 [DEBUG] [Thread-123212] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:50:49.884 [DEBUG] [Thread-123212] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:50:49.884 [DEBUG] [Thread-123212] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:50:49.884 [DEBUG] [Thread-123212] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:50:49.884 [DEBUG] [Thread-123212] [transport.py] [_log()] Compression: none
2025-11-03T21:50:49.884 [DEBUG] [Thread-123212] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:50:49.945 [DEBUG] [Thread-123212] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:50:49.945 [DEBUG] [Thread-123212] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:50:49.945 [DEBUG] [Thread-123212] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:50:49.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:50:49.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:50:50.002 [DEBUG] [Thread-123212] [transport.py] [_log()] userauth is OK
2025-11-03T21:50:50.002 [DEBUG] [Thread-123212] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:50:50.002 [DEBUG] [Thread-123212] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:50:50.002 [DEBUG] [Thread-123212] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:50:50.002 [DEBUG] [Thread-123212] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:50:50.015 [INFO] [Thread-123212] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:50:50.015 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:50:50.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:50:50.901 [DEBUG] [Thread-123212] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:50:50.902 [DEBUG] [Thread-123212] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:50:50.942 [DEBUG] [Thread-123212] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:50:50.942 [DEBUG] [Thread-123212] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:50:50.951 [DEBUG] [Thread-123212] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:50:50.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:50:50.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:50:50.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:50:50.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:50:50.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:50:50.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:50:50.988 [DEBUG] [Thread-123212] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:50:58.920 [DEBUG] [Thread-123214 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:51:13.969 [DEBUG] [Thread-123215 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:51:21.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:51:21.011 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:51:21.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:51:22.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 51, 9), 30.98, 11.05, 0.0, 19.97, 19.03, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:51:22.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:51:09
2025-11-03T21:51:22.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:51:22.615 [DEBUG] [Thread-123216] [transport.py] [_log()] starting thread (client mode): 0x117ead70
2025-11-03T21:51:22.615 [DEBUG] [Thread-123216] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:51:22.635 [DEBUG] [Thread-123216] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:51:22.635 [INFO] [Thread-123216] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:51:22.638 [DEBUG] [Thread-123216] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:51:22.639 [DEBUG] [Thread-123216] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:51:22.639 [DEBUG] [Thread-123216] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:51:22.639 [DEBUG] [Thread-123216] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:51:22.639 [DEBUG] [Thread-123216] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:51:22.639 [DEBUG] [Thread-123216] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:51:22.639 [DEBUG] [Thread-123216] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:51:22.639 [DEBUG] [Thread-123216] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:51:22.639 [DEBUG] [Thread-123216] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:51:22.639 [DEBUG] [Thread-123216] [transport.py] [_log()] client lang: <none>
2025-11-03T21:51:22.639 [DEBUG] [Thread-123216] [transport.py] [_log()] server lang: <none>
2025-11-03T21:51:22.639 [DEBUG] [Thread-123216] [transport.py] [_log()] kex follows: False
2025-11-03T21:51:22.639 [DEBUG] [Thread-123216] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:51:22.639 [DEBUG] [Thread-123216] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:51:22.639 [DEBUG] [Thread-123216] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:51:22.639 [DEBUG] [Thread-123216] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:51:22.639 [DEBUG] [Thread-123216] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:51:22.639 [DEBUG] [Thread-123216] [transport.py] [_log()] Compression: none
2025-11-03T21:51:22.639 [DEBUG] [Thread-123216] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:51:22.656 [DEBUG] [Thread-123216] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:51:22.656 [DEBUG] [Thread-123216] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:51:22.656 [DEBUG] [Thread-123216] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:51:22.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:51:22.657 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:51:22.657 [DEBUG] [Thread-123216] [transport.py] [_log()] userauth is OK
2025-11-03T21:51:22.657 [DEBUG] [Thread-123216] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:51:22.657 [DEBUG] [Thread-123216] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:51:22.657 [DEBUG] [Thread-123216] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:51:22.657 [DEBUG] [Thread-123216] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:51:22.666 [INFO] [Thread-123216] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:51:22.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:51:23.310 [DEBUG] [Thread-123216] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:51:23.310 [DEBUG] [Thread-123216] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:51:23.310 [DEBUG] [Thread-123216] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:51:23.351 [DEBUG] [Thread-123216] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:51:23.351 [DEBUG] [Thread-123216] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:51:23.354 [DEBUG] [Thread-123216] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:51:23.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:51:23.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:51:23.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:51:23.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:51:23.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:51:23.365 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:51:23.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:51:23.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:51:23.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:51:23.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.826836 -999.00  +19.30  17.11     16   -6.70 1 1 1 1 1     0    0 24.78 -52.22 ZNESW 19.1 17.1 304.4 23.1 19.1 -26.1 19.0 -25.0 18.8 -24.6 19.1 -25.6
2025-11-03T21:51:23.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:51:23.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:51:23.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.826836
2025-11-03T21:51:23.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:51:23.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:51:23.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:51:23.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:51:23.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:51:23.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:51:09', tmtdew=30.98, humidity=11.05, cloud=0.0, wind=19.97, temperature=19.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:51:10', seeing=1.05, atlas_timestamp='2025-11-03T19:50:38.630', atlas_cloud=1, atlas_rain=1, zp_data=[0.05975000000000108, 0.15725000000000122, 0.1302500000000002, 0.011499999999999844, 0.06099999999999994, 0.04625000000000057, 0.024499999999999744, -0.044749999999998735, -0.18850000000000122, 0.19599999999999973, 0.11125000000000007, 0.19200000000000017, 0.21450000000000102, 0.0962499999999995, 0.02099999999999902, -0.6950000000000003, 0.08424999999999905, 0.14649999999999963, 0.19099999999999895, 0.20924999999999905, 0.24999999999999822, 0.0017499999999994742, 0.016250000000001208, -0.3462499999999995, 0.09749999999999837, 0.2550000000000008, 0.30375000000000085, 0.2524999999999995, 0.20650000000000013, 0.2560000000000011, 0.22500000000000142, -0.2544999999999984, 0.19174999999999898], zp_timestamp='2025-11-03T19:48:00')
2025-11-03T21:51:23.367 [DEBUG] [Thread-123216] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:51:23.441 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:51:23.453 [DEBUG] [Thread-123219] [transport.py] [_log()] starting thread (client mode): 0x117e80d0
2025-11-03T21:51:23.453 [DEBUG] [Thread-123219] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:51:23.475 [DEBUG] [Thread-123219] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:51:23.475 [INFO] [Thread-123219] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:51:23.490 [DEBUG] [Thread-123219] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:51:23.490 [DEBUG] [Thread-123219] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:51:23.490 [DEBUG] [Thread-123219] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:51:23.490 [DEBUG] [Thread-123219] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:51:23.490 [DEBUG] [Thread-123219] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:51:23.490 [DEBUG] [Thread-123219] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:51:23.490 [DEBUG] [Thread-123219] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:51:23.490 [DEBUG] [Thread-123219] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:51:23.490 [DEBUG] [Thread-123219] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:51:23.490 [DEBUG] [Thread-123219] [transport.py] [_log()] client lang: <none>
2025-11-03T21:51:23.490 [DEBUG] [Thread-123219] [transport.py] [_log()] server lang: <none>
2025-11-03T21:51:23.490 [DEBUG] [Thread-123219] [transport.py] [_log()] kex follows: False
2025-11-03T21:51:23.490 [DEBUG] [Thread-123219] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:51:23.490 [DEBUG] [Thread-123219] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:51:23.490 [DEBUG] [Thread-123219] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:51:23.490 [DEBUG] [Thread-123219] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:51:23.491 [DEBUG] [Thread-123219] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:51:23.491 [DEBUG] [Thread-123219] [transport.py] [_log()] Compression: none
2025-11-03T21:51:23.491 [DEBUG] [Thread-123219] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:51:23.544 [DEBUG] [Thread-123219] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:51:23.544 [DEBUG] [Thread-123219] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:51:23.544 [DEBUG] [Thread-123219] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:51:23.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:51:23.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:51:23.602 [DEBUG] [Thread-123219] [transport.py] [_log()] userauth is OK
2025-11-03T21:51:23.602 [DEBUG] [Thread-123219] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:51:23.602 [DEBUG] [Thread-123219] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:51:23.602 [DEBUG] [Thread-123219] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:51:23.602 [DEBUG] [Thread-123219] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:51:23.616 [INFO] [Thread-123219] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:51:23.616 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:51:23.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:51:24.453 [DEBUG] [Thread-123219] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:51:24.453 [DEBUG] [Thread-123219] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:51:24.501 [DEBUG] [Thread-123219] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:51:24.501 [DEBUG] [Thread-123219] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:51:24.513 [DEBUG] [Thread-123219] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:51:24.522 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:51:24.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:51:24.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:51:24.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:51:24.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:51:24.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:51:24.558 [DEBUG] [Thread-123219] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:51:28.994 [DEBUG] [Thread-123221 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:51:38.343 [DEBUG] [Thread-123222 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:51:44.036 [DEBUG] [Thread-123223 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:51:46.400 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:51:46.402 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:51:54.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:51:54.574 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:51:54.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:51:56.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 51, 42), 30.95, 11.05, 0.0, 17.03, 19.06, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:51:56.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:51:42
2025-11-03T21:51:56.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:51:57.039 [DEBUG] [Thread-123224] [transport.py] [_log()] starting thread (client mode): 0xeda0ee0
2025-11-03T21:51:57.039 [DEBUG] [Thread-123224] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:51:57.059 [DEBUG] [Thread-123224] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:51:57.059 [INFO] [Thread-123224] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:51:57.063 [DEBUG] [Thread-123224] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:51:57.063 [DEBUG] [Thread-123224] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:51:57.063 [DEBUG] [Thread-123224] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:51:57.063 [DEBUG] [Thread-123224] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:51:57.063 [DEBUG] [Thread-123224] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:51:57.063 [DEBUG] [Thread-123224] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:51:57.063 [DEBUG] [Thread-123224] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:51:57.063 [DEBUG] [Thread-123224] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:51:57.063 [DEBUG] [Thread-123224] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:51:57.063 [DEBUG] [Thread-123224] [transport.py] [_log()] client lang: <none>
2025-11-03T21:51:57.063 [DEBUG] [Thread-123224] [transport.py] [_log()] server lang: <none>
2025-11-03T21:51:57.063 [DEBUG] [Thread-123224] [transport.py] [_log()] kex follows: False
2025-11-03T21:51:57.063 [DEBUG] [Thread-123224] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:51:57.063 [DEBUG] [Thread-123224] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:51:57.063 [DEBUG] [Thread-123224] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:51:57.063 [DEBUG] [Thread-123224] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:51:57.063 [DEBUG] [Thread-123224] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:51:57.063 [DEBUG] [Thread-123224] [transport.py] [_log()] Compression: none
2025-11-03T21:51:57.063 [DEBUG] [Thread-123224] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:51:57.077 [DEBUG] [Thread-123224] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:51:57.077 [DEBUG] [Thread-123224] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:51:57.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:51:57.078 [DEBUG] [Thread-123224] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:51:57.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:51:57.080 [DEBUG] [Thread-123224] [transport.py] [_log()] userauth is OK
2025-11-03T21:51:57.081 [DEBUG] [Thread-123224] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:51:57.081 [DEBUG] [Thread-123224] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:51:57.081 [DEBUG] [Thread-123224] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:51:57.081 [DEBUG] [Thread-123224] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:51:57.099 [INFO] [Thread-123224] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:51:57.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:51:57.925 [DEBUG] [Thread-123224] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:51:57.925 [DEBUG] [Thread-123224] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:51:57.925 [DEBUG] [Thread-123224] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:51:57.966 [DEBUG] [Thread-123224] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:51:57.966 [DEBUG] [Thread-123224] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:51:57.969 [DEBUG] [Thread-123224] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:51:57.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:51:57.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:51:57.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:51:57.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:51:57.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:51:57.988 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:51:57.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:51:57.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:51:57.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:51:57.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.827183 -999.00  +19.20  19.12     16   -6.70 1 1 1 1 1     0    0 25.18 -52.57 ZNESW 18.0 19.1 299.0 22.3 19.1 -26.0 19.1 -25.0 18.9 -24.7 19.1 -25.5
2025-11-03T21:51:57.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:51:57.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:51:57.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.827183
2025-11-03T21:51:57.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:51:57.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:51:57.989 [DEBUG] [Thread-123224] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:51:57.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:51:57.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:51:57.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:51:57.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:51:42', tmtdew=30.95, humidity=11.05, cloud=0.0, wind=17.03, temperature=19.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:51:43', seeing=1.05, atlas_timestamp='2025-11-03T19:51:08.611', atlas_cloud=1, atlas_rain=1, zp_data=[0.05975000000000108, 0.15725000000000122, 0.1302500000000002, 0.011499999999999844, 0.06099999999999994, 0.04625000000000057, 0.024499999999999744, -0.044749999999998735, -0.18850000000000122, 0.19599999999999973, 0.11125000000000007, 0.19200000000000017, 0.21450000000000102, 0.0962499999999995, 0.02099999999999902, -0.6950000000000003, 0.08424999999999905, 0.14649999999999963, 0.19099999999999895, 0.20924999999999905, 0.24999999999999822, 0.0017499999999994742, 0.016250000000001208, -0.3462499999999995, 0.09749999999999837, 0.2550000000000008, 0.30375000000000085, 0.2524999999999995, 0.20650000000000013, 0.2560000000000011, 0.22500000000000142, -0.2544999999999984, 0.19174999999999898], zp_timestamp='2025-11-03T19:48:00')
2025-11-03T21:51:58.065 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:51:58.083 [DEBUG] [Thread-123227] [transport.py] [_log()] starting thread (client mode): 0x117e84c0
2025-11-03T21:51:58.083 [DEBUG] [Thread-123227] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:51:58.103 [DEBUG] [Thread-123227] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:51:58.103 [INFO] [Thread-123227] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:51:58.113 [DEBUG] [Thread-123227] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:51:58.113 [DEBUG] [Thread-123227] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:51:58.113 [DEBUG] [Thread-123227] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:51:58.113 [DEBUG] [Thread-123227] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:51:58.113 [DEBUG] [Thread-123227] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:51:58.113 [DEBUG] [Thread-123227] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:51:58.113 [DEBUG] [Thread-123227] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:51:58.113 [DEBUG] [Thread-123227] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:51:58.113 [DEBUG] [Thread-123227] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:51:58.113 [DEBUG] [Thread-123227] [transport.py] [_log()] client lang: <none>
2025-11-03T21:51:58.113 [DEBUG] [Thread-123227] [transport.py] [_log()] server lang: <none>
2025-11-03T21:51:58.113 [DEBUG] [Thread-123227] [transport.py] [_log()] kex follows: False
2025-11-03T21:51:58.113 [DEBUG] [Thread-123227] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:51:58.113 [DEBUG] [Thread-123227] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:51:58.113 [DEBUG] [Thread-123227] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:51:58.113 [DEBUG] [Thread-123227] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:51:58.113 [DEBUG] [Thread-123227] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:51:58.114 [DEBUG] [Thread-123227] [transport.py] [_log()] Compression: none
2025-11-03T21:51:58.114 [DEBUG] [Thread-123227] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:51:58.177 [DEBUG] [Thread-123227] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:51:58.177 [DEBUG] [Thread-123227] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:51:58.177 [DEBUG] [Thread-123227] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:51:58.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:51:58.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:51:58.242 [DEBUG] [Thread-123227] [transport.py] [_log()] userauth is OK
2025-11-03T21:51:58.242 [DEBUG] [Thread-123227] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:51:58.242 [DEBUG] [Thread-123227] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:51:58.242 [DEBUG] [Thread-123227] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:51:58.242 [DEBUG] [Thread-123227] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:51:58.258 [INFO] [Thread-123227] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:51:58.258 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:51:58.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:51:59.066 [DEBUG] [Thread-123227] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:51:59.066 [DEBUG] [Thread-123227] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:51:59.069 [DEBUG] [Thread-123229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:51:59.115 [DEBUG] [Thread-123227] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:51:59.115 [DEBUG] [Thread-123227] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:51:59.123 [DEBUG] [Thread-123227] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:51:59.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:51:59.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:51:59.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:51:59.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:51:59.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:51:59.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:51:59.155 [DEBUG] [Thread-123227] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:52:07.908 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:52:14.116 [DEBUG] [Thread-123230 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:52:29.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:52:29.148 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:52:29.157 [DEBUG] [Thread-123231 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:52:29.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:52:29.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 52, 14), 31.02, 10.98, 0.0, 16.89, 19.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:52:29.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:52:14
2025-11-03T21:52:30.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:52:30.204 [DEBUG] [Thread-123232] [transport.py] [_log()] starting thread (client mode): 0xed04880
2025-11-03T21:52:30.205 [DEBUG] [Thread-123232] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:52:30.226 [DEBUG] [Thread-123232] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:52:30.226 [INFO] [Thread-123232] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:52:30.230 [DEBUG] [Thread-123232] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:52:30.230 [DEBUG] [Thread-123232] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:52:30.230 [DEBUG] [Thread-123232] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:52:30.230 [DEBUG] [Thread-123232] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:52:30.230 [DEBUG] [Thread-123232] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:52:30.230 [DEBUG] [Thread-123232] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:52:30.230 [DEBUG] [Thread-123232] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:52:30.231 [DEBUG] [Thread-123232] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:52:30.231 [DEBUG] [Thread-123232] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:52:30.231 [DEBUG] [Thread-123232] [transport.py] [_log()] client lang: <none>
2025-11-03T21:52:30.231 [DEBUG] [Thread-123232] [transport.py] [_log()] server lang: <none>
2025-11-03T21:52:30.231 [DEBUG] [Thread-123232] [transport.py] [_log()] kex follows: False
2025-11-03T21:52:30.231 [DEBUG] [Thread-123232] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:52:30.231 [DEBUG] [Thread-123232] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:52:30.231 [DEBUG] [Thread-123232] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:52:30.231 [DEBUG] [Thread-123232] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:52:30.232 [DEBUG] [Thread-123232] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:52:30.232 [DEBUG] [Thread-123232] [transport.py] [_log()] Compression: none
2025-11-03T21:52:30.232 [DEBUG] [Thread-123232] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:52:30.249 [DEBUG] [Thread-123232] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:52:30.249 [DEBUG] [Thread-123232] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:52:30.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:52:30.251 [DEBUG] [Thread-123232] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:52:30.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:52:30.255 [DEBUG] [Thread-123232] [transport.py] [_log()] userauth is OK
2025-11-03T21:52:30.255 [DEBUG] [Thread-123232] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:52:30.255 [DEBUG] [Thread-123232] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:52:30.255 [DEBUG] [Thread-123232] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:52:30.255 [DEBUG] [Thread-123232] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:52:30.292 [INFO] [Thread-123232] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:52:30.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:52:30.948 [DEBUG] [Thread-123232] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:52:30.948 [DEBUG] [Thread-123232] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:52:30.948 [DEBUG] [Thread-123232] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:52:30.989 [DEBUG] [Thread-123232] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:52:30.989 [DEBUG] [Thread-123232] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:52:30.992 [DEBUG] [Thread-123232] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:52:31.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:52:31.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:52:31.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:52:31.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:52:31.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:52:31.011 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:52:31.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:52:31.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:52:31.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:52:31.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.827878 -999.00  +19.20  18.30     16   -6.60 1 1 1 1 1     0    0 24.62 -48.03 ZNESW 18.2 18.3 298.4 24.2 19.1 -25.9 19.0 -24.9 18.9 -24.2 19.1 -25.7
2025-11-03T21:52:31.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:52:31.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:52:31.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.827878
2025-11-03T21:52:31.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:52:31.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:52:31.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:52:31.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:52:31.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:52:31.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:52:14', tmtdew=31.02, humidity=10.98, cloud=0.0, wind=16.89, temperature=19.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:52:15', seeing=1.15, atlas_timestamp='2025-11-03T19:52:08.659', atlas_cloud=1, atlas_rain=1, zp_data=[0.05975000000000108, 0.15725000000000122, 0.1302500000000002, 0.011499999999999844, 0.06099999999999994, 0.04625000000000057, 0.024499999999999744, -0.044749999999998735, -0.18850000000000122, 0.19599999999999973, 0.11125000000000007, 0.19200000000000017, 0.21450000000000102, 0.0962499999999995, 0.02099999999999902, -0.6950000000000003, 0.08424999999999905, 0.14649999999999963, 0.19099999999999895, 0.20924999999999905, 0.24999999999999822, 0.0017499999999994742, 0.016250000000001208, -0.3462499999999995, 0.09749999999999837, 0.2550000000000008, 0.30375000000000085, 0.2524999999999995, 0.20650000000000013, 0.2560000000000011, 0.22500000000000142, -0.2544999999999984, 0.19174999999999898], zp_timestamp='2025-11-03T19:48:00')
2025-11-03T21:52:31.012 [DEBUG] [Thread-123232] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:52:31.083 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:52:31.096 [DEBUG] [Thread-123235] [transport.py] [_log()] starting thread (client mode): 0xed07310
2025-11-03T21:52:31.096 [DEBUG] [Thread-123235] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:52:31.111 [DEBUG] [Thread-123235] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:52:31.111 [INFO] [Thread-123235] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:52:31.121 [DEBUG] [Thread-123235] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:52:31.121 [DEBUG] [Thread-123235] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:52:31.121 [DEBUG] [Thread-123235] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:52:31.121 [DEBUG] [Thread-123235] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:52:31.121 [DEBUG] [Thread-123235] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:52:31.121 [DEBUG] [Thread-123235] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:52:31.121 [DEBUG] [Thread-123235] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:52:31.121 [DEBUG] [Thread-123235] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:52:31.121 [DEBUG] [Thread-123235] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:52:31.121 [DEBUG] [Thread-123235] [transport.py] [_log()] client lang: <none>
2025-11-03T21:52:31.121 [DEBUG] [Thread-123235] [transport.py] [_log()] server lang: <none>
2025-11-03T21:52:31.121 [DEBUG] [Thread-123235] [transport.py] [_log()] kex follows: False
2025-11-03T21:52:31.121 [DEBUG] [Thread-123235] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:52:31.121 [DEBUG] [Thread-123235] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:52:31.121 [DEBUG] [Thread-123235] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:52:31.121 [DEBUG] [Thread-123235] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:52:31.121 [DEBUG] [Thread-123235] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:52:31.121 [DEBUG] [Thread-123235] [transport.py] [_log()] Compression: none
2025-11-03T21:52:31.121 [DEBUG] [Thread-123235] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:52:31.183 [DEBUG] [Thread-123235] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:52:31.184 [DEBUG] [Thread-123235] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:52:31.184 [DEBUG] [Thread-123235] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:52:31.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:52:31.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:52:31.244 [DEBUG] [Thread-123235] [transport.py] [_log()] userauth is OK
2025-11-03T21:52:31.244 [DEBUG] [Thread-123235] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:52:31.244 [DEBUG] [Thread-123235] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:52:31.244 [DEBUG] [Thread-123235] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:52:31.244 [DEBUG] [Thread-123235] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:52:31.271 [INFO] [Thread-123235] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:52:31.272 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:52:31.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:52:32.122 [DEBUG] [Thread-123235] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:52:32.122 [DEBUG] [Thread-123235] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:52:32.170 [DEBUG] [Thread-123235] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:52:32.171 [DEBUG] [Thread-123235] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:52:32.179 [DEBUG] [Thread-123235] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:52:32.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:52:32.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:52:32.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:52:32.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:52:32.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:52:32.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:52:32.213 [DEBUG] [Thread-123235] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:52:38.481 [DEBUG] [Thread-123237 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:52:44.184 [DEBUG] [Thread-123238 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:52:46.605 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:52:46.606 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:52:59.237 [DEBUG] [Thread-123239 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:53:02.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:53:02.229 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:53:02.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:53:02.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 52, 47), 30.95, 10.95, 0.0, 19.11, 18.98, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:53:02.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:52:47
2025-11-03T21:53:03.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:53:03.249 [DEBUG] [Thread-123240] [transport.py] [_log()] starting thread (client mode): 0xed89000
2025-11-03T21:53:03.249 [DEBUG] [Thread-123240] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:53:03.271 [DEBUG] [Thread-123240] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:53:03.271 [INFO] [Thread-123240] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:53:03.274 [DEBUG] [Thread-123240] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:53:03.274 [DEBUG] [Thread-123240] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:53:03.274 [DEBUG] [Thread-123240] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:53:03.274 [DEBUG] [Thread-123240] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:53:03.274 [DEBUG] [Thread-123240] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:53:03.275 [DEBUG] [Thread-123240] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:53:03.275 [DEBUG] [Thread-123240] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:53:03.275 [DEBUG] [Thread-123240] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:53:03.275 [DEBUG] [Thread-123240] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:53:03.275 [DEBUG] [Thread-123240] [transport.py] [_log()] client lang: <none>
2025-11-03T21:53:03.275 [DEBUG] [Thread-123240] [transport.py] [_log()] server lang: <none>
2025-11-03T21:53:03.275 [DEBUG] [Thread-123240] [transport.py] [_log()] kex follows: False
2025-11-03T21:53:03.275 [DEBUG] [Thread-123240] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:53:03.275 [DEBUG] [Thread-123240] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:53:03.275 [DEBUG] [Thread-123240] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:53:03.275 [DEBUG] [Thread-123240] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:53:03.275 [DEBUG] [Thread-123240] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:53:03.275 [DEBUG] [Thread-123240] [transport.py] [_log()] Compression: none
2025-11-03T21:53:03.275 [DEBUG] [Thread-123240] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:53:03.293 [DEBUG] [Thread-123240] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:53:03.294 [DEBUG] [Thread-123240] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:53:03.294 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:53:03.295 [DEBUG] [Thread-123240] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:53:03.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:53:03.297 [DEBUG] [Thread-123240] [transport.py] [_log()] userauth is OK
2025-11-03T21:53:03.297 [DEBUG] [Thread-123240] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:53:03.297 [DEBUG] [Thread-123240] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:53:03.297 [DEBUG] [Thread-123240] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:53:03.297 [DEBUG] [Thread-123240] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:53:03.329 [INFO] [Thread-123240] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:53:03.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:53:04.119 [DEBUG] [Thread-123240] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:53:04.127 [DEBUG] [Thread-123240] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:53:04.128 [DEBUG] [Thread-123240] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:53:04.159 [DEBUG] [Thread-123240] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:53:04.160 [DEBUG] [Thread-123240] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:53:04.162 [DEBUG] [Thread-123240] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:53:04.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:53:04.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:53:04.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:53:04.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:53:04.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:53:04.179 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:53:04.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:53:04.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:53:04.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:53:04.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.828225 -999.00  +19.20  15.70     16   -6.80 1 1 1 1 1     0    0 25.10 -46.36 ZNESW 17.9 15.7 299.2 23.7 19.1 -25.9 19.1 -24.9 18.9 -24.6 19.1 -25.7
2025-11-03T21:53:04.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:53:04.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:53:04.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.828225
2025-11-03T21:53:04.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:53:04.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:53:04.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:53:04.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:53:04.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:53:04.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:52:47', tmtdew=30.95, humidity=10.95, cloud=0.0, wind=19.11, temperature=18.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:52:47', seeing=1.15, atlas_timestamp='2025-11-03T19:52:38.640', atlas_cloud=1, atlas_rain=1, zp_data=[0.05975000000000108, 0.15725000000000122, 0.1302500000000002, 0.011499999999999844, 0.06099999999999994, 0.04625000000000057, 0.024499999999999744, -0.044749999999998735, -0.18850000000000122, 0.19599999999999973, 0.11125000000000007, 0.19200000000000017, 0.21450000000000102, 0.0962499999999995, 0.02099999999999902, -0.6950000000000003, 0.08424999999999905, 0.14649999999999963, 0.19099999999999895, 0.20924999999999905, 0.24999999999999822, 0.0017499999999994742, 0.016250000000001208, -0.3462499999999995, 0.09749999999999837, 0.2550000000000008, 0.30375000000000085, 0.2524999999999995, 0.20650000000000013, 0.2560000000000011, 0.22500000000000142, -0.2544999999999984, 0.19174999999999898], zp_timestamp='2025-11-03T19:48:00')
2025-11-03T21:53:04.181 [DEBUG] [Thread-123240] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:53:04.251 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:53:04.262 [DEBUG] [Thread-123243] [transport.py] [_log()] starting thread (client mode): 0xed885e0
2025-11-03T21:53:04.263 [DEBUG] [Thread-123243] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:53:04.278 [DEBUG] [Thread-123243] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:53:04.279 [INFO] [Thread-123243] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:53:04.286 [DEBUG] [Thread-123243] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:53:04.286 [DEBUG] [Thread-123243] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:53:04.286 [DEBUG] [Thread-123243] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:53:04.286 [DEBUG] [Thread-123243] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:53:04.287 [DEBUG] [Thread-123243] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:53:04.287 [DEBUG] [Thread-123243] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:53:04.287 [DEBUG] [Thread-123243] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:53:04.287 [DEBUG] [Thread-123243] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:53:04.287 [DEBUG] [Thread-123243] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:53:04.287 [DEBUG] [Thread-123243] [transport.py] [_log()] client lang: <none>
2025-11-03T21:53:04.287 [DEBUG] [Thread-123243] [transport.py] [_log()] server lang: <none>
2025-11-03T21:53:04.287 [DEBUG] [Thread-123243] [transport.py] [_log()] kex follows: False
2025-11-03T21:53:04.287 [DEBUG] [Thread-123243] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:53:04.287 [DEBUG] [Thread-123243] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:53:04.288 [DEBUG] [Thread-123243] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:53:04.288 [DEBUG] [Thread-123243] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:53:04.288 [DEBUG] [Thread-123243] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:53:04.288 [DEBUG] [Thread-123243] [transport.py] [_log()] Compression: none
2025-11-03T21:53:04.288 [DEBUG] [Thread-123243] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:53:04.346 [DEBUG] [Thread-123243] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:53:04.346 [DEBUG] [Thread-123243] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:53:04.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:53:04.348 [DEBUG] [Thread-123243] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:53:04.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:53:04.402 [DEBUG] [Thread-123243] [transport.py] [_log()] userauth is OK
2025-11-03T21:53:04.402 [DEBUG] [Thread-123243] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:53:04.402 [DEBUG] [Thread-123243] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:53:04.402 [DEBUG] [Thread-123243] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:53:04.402 [DEBUG] [Thread-123243] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:53:04.421 [INFO] [Thread-123243] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:53:04.421 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:53:04.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:53:05.269 [DEBUG] [Thread-123243] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:53:05.269 [DEBUG] [Thread-123243] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:53:05.317 [DEBUG] [Thread-123243] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:53:05.317 [DEBUG] [Thread-123243] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:53:05.326 [DEBUG] [Thread-123243] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:53:05.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:53:05.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:53:05.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:53:05.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:53:05.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:53:05.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:53:05.365 [DEBUG] [Thread-123243] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:53:14.271 [DEBUG] [Thread-123245 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:53:18.497 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:53:21.693 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:53:26.828 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:53:29.310 [DEBUG] [Thread-123246 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:53:33.221 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:53:35.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:53:35.380 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:53:35.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:53:36.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 53, 19), 30.86, 11.03, 0.0, 18.1, 19.03, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:53:36.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:53:19
2025-11-03T21:53:36.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:53:37.239 [DEBUG] [Thread-123247] [transport.py] [_log()] starting thread (client mode): 0xed88dc0
2025-11-03T21:53:37.243 [DEBUG] [Thread-123247] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:53:37.243 [DEBUG] [Thread-123247] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:53:37.243 [INFO] [Thread-123247] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:53:37.252 [DEBUG] [Thread-123247] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:53:37.252 [DEBUG] [Thread-123247] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:53:37.252 [DEBUG] [Thread-123247] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:53:37.252 [DEBUG] [Thread-123247] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:53:37.252 [DEBUG] [Thread-123247] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:53:37.252 [DEBUG] [Thread-123247] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:53:37.253 [DEBUG] [Thread-123247] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:53:37.253 [DEBUG] [Thread-123247] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:53:37.253 [DEBUG] [Thread-123247] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:53:37.253 [DEBUG] [Thread-123247] [transport.py] [_log()] client lang: <none>
2025-11-03T21:53:37.253 [DEBUG] [Thread-123247] [transport.py] [_log()] server lang: <none>
2025-11-03T21:53:37.253 [DEBUG] [Thread-123247] [transport.py] [_log()] kex follows: False
2025-11-03T21:53:37.253 [DEBUG] [Thread-123247] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:53:37.254 [DEBUG] [Thread-123247] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:53:37.254 [DEBUG] [Thread-123247] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:53:37.254 [DEBUG] [Thread-123247] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:53:37.254 [DEBUG] [Thread-123247] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:53:37.254 [DEBUG] [Thread-123247] [transport.py] [_log()] Compression: none
2025-11-03T21:53:37.254 [DEBUG] [Thread-123247] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:53:37.310 [DEBUG] [Thread-123247] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:53:37.313 [DEBUG] [Thread-123247] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:53:37.314 [DEBUG] [Thread-123247] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:53:37.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:53:37.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:53:37.321 [DEBUG] [Thread-123247] [transport.py] [_log()] userauth is OK
2025-11-03T21:53:37.321 [DEBUG] [Thread-123247] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:53:37.322 [DEBUG] [Thread-123247] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:53:37.322 [DEBUG] [Thread-123247] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:53:37.322 [DEBUG] [Thread-123247] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:53:37.346 [INFO] [Thread-123247] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:53:37.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:53:37.962 [DEBUG] [Thread-123247] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:53:37.962 [DEBUG] [Thread-123247] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:53:37.965 [DEBUG] [Thread-123247] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:53:38.003 [DEBUG] [Thread-123247] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:53:38.003 [DEBUG] [Thread-123247] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:53:38.006 [DEBUG] [Thread-123247] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:53:38.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:53:38.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:53:38.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:53:38.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:53:38.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:53:38.038 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:53:38.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:53:38.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:53:38.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:53:38.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.828572 -999.00  +19.20  18.80     16   -6.70 1 1 1 1 1     0    0 25.08 -46.99 ZNESW 21.5 18.8 300.6 24.3 19.1 -26.0 19.0 -24.9 18.8 -24.6 19.1 -25.7
2025-11-03T21:53:38.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:53:38.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:53:38.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.828572
2025-11-03T21:53:38.046 [DEBUG] [Thread-123247] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:53:38.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:53:38.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:53:38.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:53:38.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:53:38.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:53:38.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:53:19', tmtdew=30.86, humidity=11.03, cloud=0.0, wind=18.1, temperature=19.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:53:20', seeing=1.28, atlas_timestamp='2025-11-03T19:53:08.621', atlas_cloud=1, atlas_rain=1, zp_data=[0.05975000000000108, 0.15725000000000122, 0.1302500000000002, 0.011499999999999844, 0.06099999999999994, 0.04625000000000057, 0.024499999999999744, -0.044749999999998735, -0.18850000000000122, 0.19599999999999973, 0.11125000000000007, 0.19200000000000017, 0.21450000000000102, 0.0962499999999995, 0.02099999999999902, -0.6950000000000003, 0.08424999999999905, 0.14649999999999963, 0.19099999999999895, 0.20924999999999905, 0.24999999999999822, 0.0017499999999994742, 0.016250000000001208, -0.3462499999999995, 0.09749999999999837, 0.2550000000000008, 0.30375000000000085, 0.2524999999999995, 0.20650000000000013, 0.2560000000000011, 0.22500000000000142, -0.2544999999999984, 0.19174999999999898], zp_timestamp='2025-11-03T19:51:00')
2025-11-03T21:53:38.264 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:53:38.277 [DEBUG] [Thread-123250] [transport.py] [_log()] starting thread (client mode): 0xed342e0
2025-11-03T21:53:38.277 [DEBUG] [Thread-123250] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:53:38.292 [DEBUG] [Thread-123250] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:53:38.292 [INFO] [Thread-123250] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:53:38.300 [DEBUG] [Thread-123250] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:53:38.300 [DEBUG] [Thread-123250] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:53:38.300 [DEBUG] [Thread-123250] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:53:38.301 [DEBUG] [Thread-123250] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:53:38.301 [DEBUG] [Thread-123250] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:53:38.301 [DEBUG] [Thread-123250] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:53:38.301 [DEBUG] [Thread-123250] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:53:38.301 [DEBUG] [Thread-123250] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:53:38.301 [DEBUG] [Thread-123250] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:53:38.301 [DEBUG] [Thread-123250] [transport.py] [_log()] client lang: <none>
2025-11-03T21:53:38.301 [DEBUG] [Thread-123250] [transport.py] [_log()] server lang: <none>
2025-11-03T21:53:38.301 [DEBUG] [Thread-123250] [transport.py] [_log()] kex follows: False
2025-11-03T21:53:38.301 [DEBUG] [Thread-123250] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:53:38.302 [DEBUG] [Thread-123250] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:53:38.302 [DEBUG] [Thread-123250] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:53:38.302 [DEBUG] [Thread-123250] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:53:38.302 [DEBUG] [Thread-123250] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:53:38.302 [DEBUG] [Thread-123250] [transport.py] [_log()] Compression: none
2025-11-03T21:53:38.302 [DEBUG] [Thread-123250] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:53:38.361 [DEBUG] [Thread-123250] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:53:38.361 [DEBUG] [Thread-123250] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:53:38.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:53:38.362 [DEBUG] [Thread-123250] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:53:38.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:53:38.422 [DEBUG] [Thread-123250] [transport.py] [_log()] userauth is OK
2025-11-03T21:53:38.422 [DEBUG] [Thread-123250] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:53:38.422 [DEBUG] [Thread-123250] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:53:38.422 [DEBUG] [Thread-123250] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:53:38.422 [DEBUG] [Thread-123250] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:53:38.437 [INFO] [Thread-123250] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:53:38.437 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:53:38.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:53:39.240 [DEBUG] [Thread-123252 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:53:39.287 [DEBUG] [Thread-123250] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:53:39.287 [DEBUG] [Thread-123250] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:53:39.342 [DEBUG] [Thread-123250] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:53:39.342 [DEBUG] [Thread-123250] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:53:39.355 [DEBUG] [Thread-123250] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:53:39.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:53:39.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:53:39.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:53:39.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:53:39.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:53:39.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:53:39.398 [DEBUG] [Thread-123250] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:53:44.351 [DEBUG] [Thread-123253 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:53:46.806 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:53:46.806 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:53:51.598 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:53:56.000 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:53:59.440 [DEBUG] [Thread-123254 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:54:09.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:54:09.422 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:54:09.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:54:10.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 53, 52), 30.98, 11.02, 0.0, 19.0, 19.08, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:54:10.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:53:52
2025-11-03T21:54:11.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:54:11.558 [DEBUG] [Thread-123255] [transport.py] [_log()] starting thread (client mode): 0xedc7610
2025-11-03T21:54:11.558 [DEBUG] [Thread-123255] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:54:11.565 [DEBUG] [Thread-123255] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:54:11.565 [INFO] [Thread-123255] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:54:11.575 [DEBUG] [Thread-123255] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:54:11.575 [DEBUG] [Thread-123255] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:54:11.575 [DEBUG] [Thread-123255] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:54:11.575 [DEBUG] [Thread-123255] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:54:11.575 [DEBUG] [Thread-123255] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:54:11.575 [DEBUG] [Thread-123255] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:54:11.575 [DEBUG] [Thread-123255] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:54:11.575 [DEBUG] [Thread-123255] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:54:11.575 [DEBUG] [Thread-123255] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:54:11.575 [DEBUG] [Thread-123255] [transport.py] [_log()] client lang: <none>
2025-11-03T21:54:11.575 [DEBUG] [Thread-123255] [transport.py] [_log()] server lang: <none>
2025-11-03T21:54:11.575 [DEBUG] [Thread-123255] [transport.py] [_log()] kex follows: False
2025-11-03T21:54:11.575 [DEBUG] [Thread-123255] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:54:11.579 [DEBUG] [Thread-123255] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:54:11.579 [DEBUG] [Thread-123255] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:54:11.579 [DEBUG] [Thread-123255] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:54:11.579 [DEBUG] [Thread-123255] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:54:11.579 [DEBUG] [Thread-123255] [transport.py] [_log()] Compression: none
2025-11-03T21:54:11.579 [DEBUG] [Thread-123255] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:54:11.651 [DEBUG] [Thread-123255] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:54:11.668 [DEBUG] [Thread-123255] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:54:11.668 [DEBUG] [Thread-123255] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:54:11.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:54:11.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:54:11.700 [DEBUG] [Thread-123255] [transport.py] [_log()] userauth is OK
2025-11-03T21:54:11.700 [DEBUG] [Thread-123255] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:54:11.700 [DEBUG] [Thread-123255] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:54:11.700 [DEBUG] [Thread-123255] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:54:11.700 [DEBUG] [Thread-123255] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:54:11.727 [INFO] [Thread-123255] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:54:11.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:54:12.308 [DEBUG] [Thread-123255] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:54:12.308 [DEBUG] [Thread-123255] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:54:12.311 [DEBUG] [Thread-123255] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:54:12.349 [DEBUG] [Thread-123255] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:54:12.349 [DEBUG] [Thread-123255] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:54:12.352 [DEBUG] [Thread-123255] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:54:12.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:54:12.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:54:12.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:54:12.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:54:12.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:54:12.379 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:54:12.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:54:12.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:54:12.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:54:12.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.828920 -999.00  +19.20  15.13     16   -6.70 1 1 1 1 1     0    0 24.49 -48.72 ZNESW 17.5 15.1 309.8 24.0 19.2 -26.0 19.1 -25.0 18.9 -24.7 19.1 -25.6
2025-11-03T21:54:12.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:54:12.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:54:12.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.828920
2025-11-03T21:54:12.386 [DEBUG] [Thread-123255] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:54:12.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:54:12.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:54:12.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:54:12.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:54:12.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:54:12.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:53:52', tmtdew=30.98, humidity=11.02, cloud=0.0, wind=19.0, temperature=19.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:53:52', seeing=1.17, atlas_timestamp='2025-11-03T19:53:38.688', atlas_cloud=1, atlas_rain=1, zp_data=[0.05975000000000108, 0.15725000000000122, 0.1302500000000002, 0.011499999999999844, 0.06099999999999994, 0.04625000000000057, 0.024499999999999744, -0.044749999999998735, -0.18850000000000122, 0.19599999999999973, 0.11125000000000007, 0.19200000000000017, 0.21450000000000102, 0.0962499999999995, 0.02099999999999902, -0.6950000000000003, 0.08424999999999905, 0.14649999999999963, 0.19099999999999895, 0.20924999999999905, 0.24999999999999822, 0.0017499999999994742, 0.016250000000001208, -0.3462499999999995, 0.09749999999999837, 0.2550000000000008, 0.30375000000000085, 0.2524999999999995, 0.20650000000000013, 0.2560000000000011, 0.22500000000000142, -0.2544999999999984, 0.19174999999999898], zp_timestamp='2025-11-03T19:51:00')
2025-11-03T21:54:12.538 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:54:12.554 [DEBUG] [Thread-123258] [transport.py] [_log()] starting thread (client mode): 0x11760a90
2025-11-03T21:54:12.554 [DEBUG] [Thread-123258] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:54:12.567 [DEBUG] [Thread-123258] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:54:12.568 [INFO] [Thread-123258] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:54:12.575 [DEBUG] [Thread-123258] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:54:12.575 [DEBUG] [Thread-123258] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:54:12.575 [DEBUG] [Thread-123258] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:54:12.575 [DEBUG] [Thread-123258] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:54:12.575 [DEBUG] [Thread-123258] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:54:12.576 [DEBUG] [Thread-123258] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:54:12.576 [DEBUG] [Thread-123258] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:54:12.576 [DEBUG] [Thread-123258] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:54:12.576 [DEBUG] [Thread-123258] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:54:12.576 [DEBUG] [Thread-123258] [transport.py] [_log()] client lang: <none>
2025-11-03T21:54:12.576 [DEBUG] [Thread-123258] [transport.py] [_log()] server lang: <none>
2025-11-03T21:54:12.576 [DEBUG] [Thread-123258] [transport.py] [_log()] kex follows: False
2025-11-03T21:54:12.576 [DEBUG] [Thread-123258] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:54:12.576 [DEBUG] [Thread-123258] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:54:12.576 [DEBUG] [Thread-123258] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:54:12.576 [DEBUG] [Thread-123258] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:54:12.576 [DEBUG] [Thread-123258] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:54:12.576 [DEBUG] [Thread-123258] [transport.py] [_log()] Compression: none
2025-11-03T21:54:12.576 [DEBUG] [Thread-123258] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:54:12.633 [DEBUG] [Thread-123258] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:54:12.634 [DEBUG] [Thread-123258] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:54:12.636 [DEBUG] [Thread-123258] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:54:12.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:54:12.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:54:12.693 [DEBUG] [Thread-123258] [transport.py] [_log()] userauth is OK
2025-11-03T21:54:12.694 [DEBUG] [Thread-123258] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:54:12.694 [DEBUG] [Thread-123258] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:54:12.694 [DEBUG] [Thread-123258] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:54:12.694 [DEBUG] [Thread-123258] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:54:12.713 [INFO] [Thread-123258] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:54:12.715 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:54:12.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:54:13.568 [DEBUG] [Thread-123258] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:54:13.568 [DEBUG] [Thread-123258] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:54:13.578 [DEBUG] [Thread-123258] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:54:13.578 [DEBUG] [Thread-123258] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:54:13.591 [DEBUG] [Thread-123258] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:54:13.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:54:13.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:54:13.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:54:13.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:54:13.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:54:13.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:54:13.640 [DEBUG] [Thread-123258] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:54:14.477 [DEBUG] [Thread-123260 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:54:15.369 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:54:19.765 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:54:26.467 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:54:29.630 [DEBUG] [Thread-123261 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:54:30.838 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:54:39.506 [DEBUG] [Thread-123262 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:54:41.425 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:54:43.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:54:43.667 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:54:43.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:54:44.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 54, 24), 30.98, 11.02, 0.0, 18.35, 19.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:54:44.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:54:24
2025-11-03T21:54:44.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:54:44.598 [DEBUG] [Thread-123263] [transport.py] [_log()] starting thread (client mode): 0xed137c0
2025-11-03T21:54:44.599 [DEBUG] [Thread-123263] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:54:44.618 [DEBUG] [Thread-123263] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:54:44.618 [INFO] [Thread-123263] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:54:44.621 [DEBUG] [Thread-123263] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:54:44.621 [DEBUG] [Thread-123263] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:54:44.621 [DEBUG] [Thread-123263] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:54:44.621 [DEBUG] [Thread-123263] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:54:44.622 [DEBUG] [Thread-123263] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:54:44.622 [DEBUG] [Thread-123263] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:54:44.622 [DEBUG] [Thread-123263] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:54:44.622 [DEBUG] [Thread-123263] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:54:44.622 [DEBUG] [Thread-123263] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:54:44.622 [DEBUG] [Thread-123263] [transport.py] [_log()] client lang: <none>
2025-11-03T21:54:44.622 [DEBUG] [Thread-123263] [transport.py] [_log()] server lang: <none>
2025-11-03T21:54:44.622 [DEBUG] [Thread-123263] [transport.py] [_log()] kex follows: False
2025-11-03T21:54:44.622 [DEBUG] [Thread-123263] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:54:44.622 [DEBUG] [Thread-123263] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:54:44.622 [DEBUG] [Thread-123263] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:54:44.622 [DEBUG] [Thread-123263] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:54:44.622 [DEBUG] [Thread-123263] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:54:44.623 [DEBUG] [Thread-123263] [transport.py] [_log()] Compression: none
2025-11-03T21:54:44.623 [DEBUG] [Thread-123263] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:54:44.643 [DEBUG] [Thread-123263] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:54:44.644 [DEBUG] [Thread-123263] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:54:44.644 [DEBUG] [Thread-123263] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:54:44.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:54:44.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:54:44.647 [DEBUG] [Thread-123263] [transport.py] [_log()] userauth is OK
2025-11-03T21:54:44.647 [DEBUG] [Thread-123263] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:54:44.647 [DEBUG] [Thread-123263] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:54:44.647 [DEBUG] [Thread-123263] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:54:44.647 [DEBUG] [Thread-123263] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:54:44.661 [DEBUG] [Thread-123265 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:54:44.671 [INFO] [Thread-123263] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:54:44.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:54:45.312 [DEBUG] [Thread-123263] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:54:45.312 [DEBUG] [Thread-123263] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:54:45.313 [DEBUG] [Thread-123263] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:54:45.353 [DEBUG] [Thread-123263] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:54:45.353 [DEBUG] [Thread-123263] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:54:45.356 [DEBUG] [Thread-123263] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:54:45.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:54:45.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:54:45.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:54:45.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:54:45.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:54:45.375 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:54:45.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:54:45.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:54:45.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:54:45.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.829267 -999.00  +19.20  15.67     16   -6.60 1 1 1 1 1     0    0 24.70 -47.25 ZNESW 15.9 15.7 304.4 22.2 19.1 -25.9 19.1 -24.9 18.9 -24.8 19.2 -25.4
2025-11-03T21:54:45.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:54:45.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:54:45.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.829267
2025-11-03T21:54:45.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:54:45.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:54:45.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:54:45.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:54:45.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:54:45.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:54:24', tmtdew=30.98, humidity=11.02, cloud=0.0, wind=18.35, temperature=19.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:54:25', seeing=1.17, atlas_timestamp='2025-11-03T19:54:08.669', atlas_cloud=1, atlas_rain=1, zp_data=[0.05975000000000108, 0.15725000000000122, 0.1302500000000002, 0.011499999999999844, 0.06099999999999994, 0.04625000000000057, 0.024499999999999744, -0.044749999999998735, -0.18850000000000122, 0.19599999999999973, 0.11125000000000007, 0.19200000000000017, 0.21450000000000102, 0.0962499999999995, 0.02099999999999902, -0.6950000000000003, 0.08424999999999905, 0.14649999999999963, 0.19099999999999895, 0.20924999999999905, 0.24999999999999822, 0.0017499999999994742, 0.016250000000001208, -0.3462499999999995, 0.09749999999999837, 0.2550000000000008, 0.30375000000000085, 0.2524999999999995, 0.20650000000000013, 0.2560000000000011, 0.22500000000000142, -0.2544999999999984, 0.19174999999999898], zp_timestamp='2025-11-03T19:51:00')
2025-11-03T21:54:45.378 [DEBUG] [Thread-123263] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:54:45.453 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:54:45.468 [DEBUG] [Thread-123267] [transport.py] [_log()] starting thread (client mode): 0xed89cf0
2025-11-03T21:54:45.468 [DEBUG] [Thread-123267] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:54:45.486 [DEBUG] [Thread-123267] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:54:45.486 [INFO] [Thread-123267] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:54:45.495 [DEBUG] [Thread-123267] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:54:45.495 [DEBUG] [Thread-123267] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:54:45.495 [DEBUG] [Thread-123267] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:54:45.495 [DEBUG] [Thread-123267] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:54:45.495 [DEBUG] [Thread-123267] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:54:45.495 [DEBUG] [Thread-123267] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:54:45.495 [DEBUG] [Thread-123267] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:54:45.495 [DEBUG] [Thread-123267] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:54:45.495 [DEBUG] [Thread-123267] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:54:45.495 [DEBUG] [Thread-123267] [transport.py] [_log()] client lang: <none>
2025-11-03T21:54:45.495 [DEBUG] [Thread-123267] [transport.py] [_log()] server lang: <none>
2025-11-03T21:54:45.495 [DEBUG] [Thread-123267] [transport.py] [_log()] kex follows: False
2025-11-03T21:54:45.495 [DEBUG] [Thread-123267] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:54:45.495 [DEBUG] [Thread-123267] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:54:45.495 [DEBUG] [Thread-123267] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:54:45.495 [DEBUG] [Thread-123267] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:54:45.495 [DEBUG] [Thread-123267] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:54:45.495 [DEBUG] [Thread-123267] [transport.py] [_log()] Compression: none
2025-11-03T21:54:45.495 [DEBUG] [Thread-123267] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:54:45.510 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:54:45.553 [DEBUG] [Thread-123267] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:54:45.553 [DEBUG] [Thread-123267] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:54:45.553 [DEBUG] [Thread-123267] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:54:45.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:54:45.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:54:45.613 [DEBUG] [Thread-123267] [transport.py] [_log()] userauth is OK
2025-11-03T21:54:45.613 [DEBUG] [Thread-123267] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:54:45.613 [DEBUG] [Thread-123267] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:54:45.613 [DEBUG] [Thread-123267] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:54:45.613 [DEBUG] [Thread-123267] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:54:45.631 [INFO] [Thread-123267] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:54:45.631 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:54:45.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:54:46.518 [DEBUG] [Thread-123267] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:54:46.518 [DEBUG] [Thread-123267] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:54:46.568 [DEBUG] [Thread-123267] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:54:46.568 [DEBUG] [Thread-123267] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:54:46.580 [DEBUG] [Thread-123267] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:54:46.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:54:46.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:54:46.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:54:46.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:54:46.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:54:46.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:54:46.623 [DEBUG] [Thread-123267] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:54:47.009 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:54:47.010 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:54:59.694 [DEBUG] [Thread-123269 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:55:14.759 [DEBUG] [Thread-123270 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:55:16.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:55:16.615 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:55:16.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:55:17.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 54, 57), 30.83, 11.05, 0.0, 18.58, 18.98, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:55:17.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:54:57
2025-11-03T21:55:17.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:55:17.640 [DEBUG] [Thread-123271] [transport.py] [_log()] starting thread (client mode): 0xed5d570
2025-11-03T21:55:17.640 [DEBUG] [Thread-123271] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:55:17.659 [DEBUG] [Thread-123271] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:55:17.659 [INFO] [Thread-123271] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:55:17.662 [DEBUG] [Thread-123271] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:55:17.662 [DEBUG] [Thread-123271] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:55:17.663 [DEBUG] [Thread-123271] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:55:17.663 [DEBUG] [Thread-123271] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:55:17.663 [DEBUG] [Thread-123271] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:55:17.663 [DEBUG] [Thread-123271] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:55:17.663 [DEBUG] [Thread-123271] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:55:17.663 [DEBUG] [Thread-123271] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:55:17.663 [DEBUG] [Thread-123271] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:55:17.663 [DEBUG] [Thread-123271] [transport.py] [_log()] client lang: <none>
2025-11-03T21:55:17.663 [DEBUG] [Thread-123271] [transport.py] [_log()] server lang: <none>
2025-11-03T21:55:17.663 [DEBUG] [Thread-123271] [transport.py] [_log()] kex follows: False
2025-11-03T21:55:17.663 [DEBUG] [Thread-123271] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:55:17.663 [DEBUG] [Thread-123271] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:55:17.663 [DEBUG] [Thread-123271] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:55:17.663 [DEBUG] [Thread-123271] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:55:17.663 [DEBUG] [Thread-123271] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:55:17.663 [DEBUG] [Thread-123271] [transport.py] [_log()] Compression: none
2025-11-03T21:55:17.663 [DEBUG] [Thread-123271] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:55:17.678 [DEBUG] [Thread-123271] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:55:17.679 [DEBUG] [Thread-123271] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:55:17.679 [DEBUG] [Thread-123271] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:55:17.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:55:17.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:55:17.680 [DEBUG] [Thread-123271] [transport.py] [_log()] userauth is OK
2025-11-03T21:55:17.680 [DEBUG] [Thread-123271] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:55:17.680 [DEBUG] [Thread-123271] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:55:17.680 [DEBUG] [Thread-123271] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:55:17.680 [DEBUG] [Thread-123271] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:55:17.692 [INFO] [Thread-123271] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:55:17.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:55:18.344 [DEBUG] [Thread-123271] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:55:18.344 [DEBUG] [Thread-123271] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:55:18.344 [DEBUG] [Thread-123271] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:55:18.385 [DEBUG] [Thread-123271] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:55:18.385 [DEBUG] [Thread-123271] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:55:18.387 [DEBUG] [Thread-123271] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:55:18.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:55:18.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:55:18.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:55:18.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:55:18.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:55:18.404 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:55:18.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:55:18.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:55:18.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:55:18.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.829614 -999.00  +19.20  16.73     16   -6.40 1 1 1 1 1     0    0 24.75 -50.35 ZNESW 17.0 16.7 301.8 22.9 19.2 -26.0 19.1 -25.1 18.9 -24.7 19.1 -25.9
2025-11-03T21:55:18.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:55:18.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:55:18.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.829614
2025-11-03T21:55:18.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:55:18.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:55:18.406 [DEBUG] [Thread-123271] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:55:18.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:55:18.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:55:18.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:55:18.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:54:57', tmtdew=30.83, humidity=11.05, cloud=0.0, wind=18.58, temperature=18.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:54:58', seeing=1.31, atlas_timestamp='2025-11-03T19:54:38.650', atlas_cloud=1, atlas_rain=1, zp_data=[0.05975000000000108, 0.15725000000000122, 0.1302500000000002, 0.011499999999999844, 0.06099999999999994, 0.04625000000000057, 0.024499999999999744, -0.044749999999998735, -0.18850000000000122, 0.19599999999999973, 0.11125000000000007, 0.19200000000000017, 0.21450000000000102, 0.0962499999999995, 0.02099999999999902, -0.6950000000000003, 0.08424999999999905, 0.14649999999999963, 0.19099999999999895, 0.20924999999999905, 0.24999999999999822, 0.0017499999999994742, 0.016250000000001208, -0.3462499999999995, 0.09749999999999837, 0.2550000000000008, 0.30375000000000085, 0.2524999999999995, 0.20650000000000013, 0.2560000000000011, 0.22500000000000142, -0.2544999999999984, 0.19174999999999898], zp_timestamp='2025-11-03T19:51:00')
2025-11-03T21:55:18.487 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:55:18.499 [DEBUG] [Thread-123274] [transport.py] [_log()] starting thread (client mode): 0xed12ce0
2025-11-03T21:55:18.499 [DEBUG] [Thread-123274] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:55:18.516 [DEBUG] [Thread-123274] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:55:18.516 [INFO] [Thread-123274] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:55:18.526 [DEBUG] [Thread-123274] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:55:18.526 [DEBUG] [Thread-123274] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:55:18.526 [DEBUG] [Thread-123274] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:55:18.526 [DEBUG] [Thread-123274] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:55:18.526 [DEBUG] [Thread-123274] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:55:18.526 [DEBUG] [Thread-123274] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:55:18.526 [DEBUG] [Thread-123274] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:55:18.526 [DEBUG] [Thread-123274] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:55:18.526 [DEBUG] [Thread-123274] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:55:18.526 [DEBUG] [Thread-123274] [transport.py] [_log()] client lang: <none>
2025-11-03T21:55:18.526 [DEBUG] [Thread-123274] [transport.py] [_log()] server lang: <none>
2025-11-03T21:55:18.526 [DEBUG] [Thread-123274] [transport.py] [_log()] kex follows: False
2025-11-03T21:55:18.526 [DEBUG] [Thread-123274] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:55:18.526 [DEBUG] [Thread-123274] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:55:18.526 [DEBUG] [Thread-123274] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:55:18.527 [DEBUG] [Thread-123274] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:55:18.527 [DEBUG] [Thread-123274] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:55:18.527 [DEBUG] [Thread-123274] [transport.py] [_log()] Compression: none
2025-11-03T21:55:18.527 [DEBUG] [Thread-123274] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:55:18.585 [DEBUG] [Thread-123274] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:55:18.586 [DEBUG] [Thread-123274] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:55:18.586 [DEBUG] [Thread-123274] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:55:18.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:55:18.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:55:18.644 [DEBUG] [Thread-123274] [transport.py] [_log()] userauth is OK
2025-11-03T21:55:18.645 [DEBUG] [Thread-123274] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:55:18.645 [DEBUG] [Thread-123274] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:55:18.645 [DEBUG] [Thread-123274] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:55:18.645 [DEBUG] [Thread-123274] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:55:18.663 [INFO] [Thread-123274] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:55:18.663 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:55:18.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:55:19.534 [DEBUG] [Thread-123274] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:55:19.534 [DEBUG] [Thread-123274] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:55:19.581 [DEBUG] [Thread-123274] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:55:19.581 [DEBUG] [Thread-123274] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:55:19.590 [DEBUG] [Thread-123274] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:55:19.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:55:19.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:55:19.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:55:19.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:55:19.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:55:19.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:55:19.626 [DEBUG] [Thread-123274] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:55:29.792 [DEBUG] [Thread-123276 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:55:39.617 [DEBUG] [Thread-123277 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:55:44.854 [DEBUG] [Thread-123278 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:55:47.212 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:55:47.212 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:55:49.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:55:49.647 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:55:49.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:55:50.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 55, 29), 30.76, 11.12, 0.0, 18.23, 18.99, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:55:50.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:55:29
2025-11-03T21:55:50.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:55:50.719 [DEBUG] [Thread-123279] [transport.py] [_log()] starting thread (client mode): 0xed5e890
2025-11-03T21:55:50.719 [DEBUG] [Thread-123279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:55:50.738 [DEBUG] [Thread-123279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:55:50.738 [INFO] [Thread-123279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:55:50.741 [DEBUG] [Thread-123279] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:55:50.741 [DEBUG] [Thread-123279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:55:50.741 [DEBUG] [Thread-123279] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:55:50.741 [DEBUG] [Thread-123279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:55:50.741 [DEBUG] [Thread-123279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:55:50.742 [DEBUG] [Thread-123279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:55:50.742 [DEBUG] [Thread-123279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:55:50.742 [DEBUG] [Thread-123279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:55:50.742 [DEBUG] [Thread-123279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:55:50.742 [DEBUG] [Thread-123279] [transport.py] [_log()] client lang: <none>
2025-11-03T21:55:50.742 [DEBUG] [Thread-123279] [transport.py] [_log()] server lang: <none>
2025-11-03T21:55:50.742 [DEBUG] [Thread-123279] [transport.py] [_log()] kex follows: False
2025-11-03T21:55:50.742 [DEBUG] [Thread-123279] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:55:50.742 [DEBUG] [Thread-123279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:55:50.742 [DEBUG] [Thread-123279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:55:50.742 [DEBUG] [Thread-123279] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:55:50.751 [DEBUG] [Thread-123279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:55:50.751 [DEBUG] [Thread-123279] [transport.py] [_log()] Compression: none
2025-11-03T21:55:50.751 [DEBUG] [Thread-123279] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:55:50.772 [DEBUG] [Thread-123279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:55:50.773 [DEBUG] [Thread-123279] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:55:50.774 [DEBUG] [Thread-123279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:55:50.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:55:50.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:55:50.776 [DEBUG] [Thread-123279] [transport.py] [_log()] userauth is OK
2025-11-03T21:55:50.776 [DEBUG] [Thread-123279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:55:50.776 [DEBUG] [Thread-123279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:55:50.776 [DEBUG] [Thread-123279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:55:50.777 [DEBUG] [Thread-123279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:55:50.801 [INFO] [Thread-123279] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:55:50.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:55:51.416 [DEBUG] [Thread-123279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:55:51.416 [DEBUG] [Thread-123279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:55:51.416 [DEBUG] [Thread-123279] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:55:51.457 [DEBUG] [Thread-123279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:55:51.457 [DEBUG] [Thread-123279] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:55:51.458 [DEBUG] [Thread-123279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:55:51.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:55:51.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:55:51.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:55:51.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:55:51.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:55:51.482 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:55:51.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:55:51.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:55:51.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:55:51.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.830308 -999.00  +19.20  15.21     16   -6.50 1 1 1 1 1     0    0 24.67 -52.25 ZNESW 17.8 15.2 308.0 23.0 19.2 -26.0 19.1 -24.9 18.9 -24.6 19.1 -25.9
2025-11-03T21:55:51.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:55:51.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:55:51.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.830308
2025-11-03T21:55:51.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:55:51.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:55:51.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:55:51.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:55:51.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:55:51.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:55:29', tmtdew=30.76, humidity=11.12, cloud=0.0, wind=18.23, temperature=18.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:55:30', seeing=1.3, atlas_timestamp='2025-11-03T19:55:38.611', atlas_cloud=1, atlas_rain=1, zp_data=[0.05975000000000108, 0.15725000000000122, 0.1302500000000002, 0.011499999999999844, 0.06099999999999994, 0.04625000000000057, 0.024499999999999744, -0.044749999999998735, -0.18850000000000122, 0.19599999999999973, 0.11125000000000007, 0.19200000000000017, 0.21450000000000102, 0.0962499999999995, 0.02099999999999902, -0.6950000000000003, 0.08424999999999905, 0.14649999999999963, 0.19099999999999895, 0.20924999999999905, 0.24999999999999822, 0.0017499999999994742, 0.016250000000001208, -0.3462499999999995, 0.09749999999999837, 0.2550000000000008, 0.30375000000000085, 0.2524999999999995, 0.20650000000000013, 0.2560000000000011, 0.22500000000000142, -0.2544999999999984, 0.19174999999999898], zp_timestamp='2025-11-03T19:51:00')
2025-11-03T21:55:51.483 [DEBUG] [Thread-123279] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:55:51.557 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:55:51.569 [DEBUG] [Thread-123282] [transport.py] [_log()] starting thread (client mode): 0xed5e3e0
2025-11-03T21:55:51.570 [DEBUG] [Thread-123282] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:55:51.585 [DEBUG] [Thread-123282] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:55:51.585 [INFO] [Thread-123282] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:55:51.602 [DEBUG] [Thread-123282] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:55:51.602 [DEBUG] [Thread-123282] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:55:51.602 [DEBUG] [Thread-123282] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:55:51.602 [DEBUG] [Thread-123282] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:55:51.602 [DEBUG] [Thread-123282] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:55:51.602 [DEBUG] [Thread-123282] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:55:51.602 [DEBUG] [Thread-123282] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:55:51.602 [DEBUG] [Thread-123282] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:55:51.602 [DEBUG] [Thread-123282] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:55:51.602 [DEBUG] [Thread-123282] [transport.py] [_log()] client lang: <none>
2025-11-03T21:55:51.602 [DEBUG] [Thread-123282] [transport.py] [_log()] server lang: <none>
2025-11-03T21:55:51.602 [DEBUG] [Thread-123282] [transport.py] [_log()] kex follows: False
2025-11-03T21:55:51.602 [DEBUG] [Thread-123282] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:55:51.602 [DEBUG] [Thread-123282] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:55:51.602 [DEBUG] [Thread-123282] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:55:51.602 [DEBUG] [Thread-123282] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:55:51.602 [DEBUG] [Thread-123282] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:55:51.602 [DEBUG] [Thread-123282] [transport.py] [_log()] Compression: none
2025-11-03T21:55:51.602 [DEBUG] [Thread-123282] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:55:51.650 [DEBUG] [Thread-123282] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:55:51.650 [DEBUG] [Thread-123282] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:55:51.650 [DEBUG] [Thread-123282] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:55:51.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:55:51.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:55:51.711 [DEBUG] [Thread-123282] [transport.py] [_log()] userauth is OK
2025-11-03T21:55:51.711 [DEBUG] [Thread-123282] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:55:51.711 [DEBUG] [Thread-123282] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:55:51.711 [DEBUG] [Thread-123282] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:55:51.711 [DEBUG] [Thread-123282] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:55:51.725 [INFO] [Thread-123282] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:55:51.725 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:55:51.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:55:52.566 [DEBUG] [Thread-123282] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:55:52.566 [DEBUG] [Thread-123282] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:55:52.614 [DEBUG] [Thread-123282] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:55:52.614 [DEBUG] [Thread-123282] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:55:52.622 [DEBUG] [Thread-123282] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:55:52.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:55:52.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:55:52.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:55:52.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:55:52.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:55:52.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:55:52.665 [DEBUG] [Thread-123282] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:55:59.881 [DEBUG] [Thread-123284 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:56:14.918 [DEBUG] [Thread-123285 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:56:22.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:56:22.688 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:56:22.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:56:23.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 56, 2), 30.79, 11.08, 0.0, 19.11, 18.94, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:56:23.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:56:02
2025-11-03T21:56:23.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:56:23.846 [DEBUG] [Thread-123286] [transport.py] [_log()] starting thread (client mode): 0xedc4e50
2025-11-03T21:56:23.847 [DEBUG] [Thread-123286] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:56:23.859 [DEBUG] [Thread-123286] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:56:23.859 [INFO] [Thread-123286] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:56:23.861 [DEBUG] [Thread-123286] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:56:23.861 [DEBUG] [Thread-123286] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:56:23.861 [DEBUG] [Thread-123286] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:56:23.861 [DEBUG] [Thread-123286] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:56:23.861 [DEBUG] [Thread-123286] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:56:23.861 [DEBUG] [Thread-123286] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:56:23.861 [DEBUG] [Thread-123286] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:56:23.861 [DEBUG] [Thread-123286] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:56:23.861 [DEBUG] [Thread-123286] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:56:23.861 [DEBUG] [Thread-123286] [transport.py] [_log()] client lang: <none>
2025-11-03T21:56:23.861 [DEBUG] [Thread-123286] [transport.py] [_log()] server lang: <none>
2025-11-03T21:56:23.861 [DEBUG] [Thread-123286] [transport.py] [_log()] kex follows: False
2025-11-03T21:56:23.861 [DEBUG] [Thread-123286] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:56:23.861 [DEBUG] [Thread-123286] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:56:23.861 [DEBUG] [Thread-123286] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:56:23.861 [DEBUG] [Thread-123286] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:56:23.861 [DEBUG] [Thread-123286] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:56:23.861 [DEBUG] [Thread-123286] [transport.py] [_log()] Compression: none
2025-11-03T21:56:23.861 [DEBUG] [Thread-123286] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:56:23.874 [DEBUG] [Thread-123286] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:56:23.874 [DEBUG] [Thread-123286] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:56:23.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:56:23.875 [DEBUG] [Thread-123286] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:56:23.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:56:23.876 [DEBUG] [Thread-123286] [transport.py] [_log()] userauth is OK
2025-11-03T21:56:23.876 [DEBUG] [Thread-123286] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:56:23.876 [DEBUG] [Thread-123286] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:56:23.876 [DEBUG] [Thread-123286] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:56:23.876 [DEBUG] [Thread-123286] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:56:23.893 [INFO] [Thread-123286] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:56:23.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:56:24.498 [DEBUG] [Thread-123286] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:56:24.498 [DEBUG] [Thread-123286] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:56:24.499 [DEBUG] [Thread-123286] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:56:24.539 [DEBUG] [Thread-123286] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:56:24.539 [DEBUG] [Thread-123286] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:56:24.542 [DEBUG] [Thread-123286] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:56:24.550 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:56:24.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:56:24.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:56:24.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:56:24.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:56:24.561 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:56:24.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:56:24.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:56:24.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:56:24.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.830656 -999.00  +19.10  15.56     16   -6.60 1 1 1 1 1     0    0 24.56 -50.01 ZNESW 19.4 15.6 306.0 20.8 19.2 -25.9 19.1 -25.0 18.9 -24.7 19.2 -25.8
2025-11-03T21:56:24.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:56:24.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:56:24.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.830656
2025-11-03T21:56:24.567 [DEBUG] [Thread-123286] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:56:24.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:56:24.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:56:24.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:56:24.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:56:24.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:56:24.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:56:02', tmtdew=30.79, humidity=11.08, cloud=0.0, wind=19.11, temperature=18.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:56:02', seeing=1.3, atlas_timestamp='2025-11-03T19:56:08.678', atlas_cloud=1, atlas_rain=1, zp_data=[0.05975000000000108, 0.15725000000000122, 0.1302500000000002, 0.011499999999999844, 0.06099999999999994, 0.04625000000000057, 0.024499999999999744, -0.044749999999998735, -0.18850000000000122, 0.19599999999999973, 0.11125000000000007, 0.19200000000000017, 0.21450000000000102, 0.0962499999999995, 0.02099999999999902, -0.6950000000000003, 0.08424999999999905, 0.14649999999999963, 0.19099999999999895, 0.20924999999999905, 0.24999999999999822, 0.0017499999999994742, 0.016250000000001208, -0.3462499999999995, 0.09749999999999837, 0.2550000000000008, 0.30375000000000085, 0.2524999999999995, 0.20650000000000013, 0.2560000000000011, 0.22500000000000142, -0.2544999999999984, 0.19174999999999898], zp_timestamp='2025-11-03T19:51:00')
2025-11-03T21:56:24.652 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:56:24.666 [DEBUG] [Thread-123289] [transport.py] [_log()] starting thread (client mode): 0xedc5090
2025-11-03T21:56:24.666 [DEBUG] [Thread-123289] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:56:24.680 [DEBUG] [Thread-123289] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:56:24.681 [INFO] [Thread-123289] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:56:24.688 [DEBUG] [Thread-123289] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:56:24.688 [DEBUG] [Thread-123289] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:56:24.689 [DEBUG] [Thread-123289] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:56:24.689 [DEBUG] [Thread-123289] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:56:24.689 [DEBUG] [Thread-123289] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:56:24.689 [DEBUG] [Thread-123289] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:56:24.689 [DEBUG] [Thread-123289] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:56:24.689 [DEBUG] [Thread-123289] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:56:24.689 [DEBUG] [Thread-123289] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:56:24.689 [DEBUG] [Thread-123289] [transport.py] [_log()] client lang: <none>
2025-11-03T21:56:24.689 [DEBUG] [Thread-123289] [transport.py] [_log()] server lang: <none>
2025-11-03T21:56:24.689 [DEBUG] [Thread-123289] [transport.py] [_log()] kex follows: False
2025-11-03T21:56:24.689 [DEBUG] [Thread-123289] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:56:24.689 [DEBUG] [Thread-123289] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:56:24.689 [DEBUG] [Thread-123289] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:56:24.689 [DEBUG] [Thread-123289] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:56:24.689 [DEBUG] [Thread-123289] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:56:24.689 [DEBUG] [Thread-123289] [transport.py] [_log()] Compression: none
2025-11-03T21:56:24.689 [DEBUG] [Thread-123289] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:56:24.750 [DEBUG] [Thread-123289] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:56:24.750 [DEBUG] [Thread-123289] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:56:24.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:56:24.752 [DEBUG] [Thread-123289] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:56:24.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:56:24.811 [DEBUG] [Thread-123289] [transport.py] [_log()] userauth is OK
2025-11-03T21:56:24.811 [DEBUG] [Thread-123289] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:56:24.812 [DEBUG] [Thread-123289] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:56:24.812 [DEBUG] [Thread-123289] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:56:24.812 [DEBUG] [Thread-123289] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:56:24.833 [INFO] [Thread-123289] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:56:24.834 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:56:24.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:56:25.680 [DEBUG] [Thread-123289] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:56:25.680 [DEBUG] [Thread-123289] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:56:25.728 [DEBUG] [Thread-123289] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:56:25.728 [DEBUG] [Thread-123289] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:56:25.737 [DEBUG] [Thread-123289] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:56:25.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:56:25.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:56:25.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:56:25.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:56:25.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:56:25.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:56:25.769 [DEBUG] [Thread-123289] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:56:29.963 [DEBUG] [Thread-123291 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:56:39.833 [DEBUG] [Thread-123292 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:56:45.026 [DEBUG] [Thread-123293 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:56:47.416 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:56:47.416 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:56:55.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:56:55.791 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:56:55.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:56:56.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 56, 37), 30.74, 11.58, 0.0, 17.43, 19.01, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:56:56.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:56:37
2025-11-03T21:56:56.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:56:56.858 [DEBUG] [Thread-123294] [transport.py] [_log()] starting thread (client mode): 0xed5e260
2025-11-03T21:56:56.859 [DEBUG] [Thread-123294] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:56:56.882 [DEBUG] [Thread-123294] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:56:56.882 [INFO] [Thread-123294] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:56:56.883 [DEBUG] [Thread-123294] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:56:56.884 [DEBUG] [Thread-123294] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:56:56.884 [DEBUG] [Thread-123294] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:56:56.884 [DEBUG] [Thread-123294] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:56:56.884 [DEBUG] [Thread-123294] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:56:56.884 [DEBUG] [Thread-123294] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:56:56.884 [DEBUG] [Thread-123294] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:56:56.884 [DEBUG] [Thread-123294] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:56:56.884 [DEBUG] [Thread-123294] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:56:56.884 [DEBUG] [Thread-123294] [transport.py] [_log()] client lang: <none>
2025-11-03T21:56:56.884 [DEBUG] [Thread-123294] [transport.py] [_log()] server lang: <none>
2025-11-03T21:56:56.884 [DEBUG] [Thread-123294] [transport.py] [_log()] kex follows: False
2025-11-03T21:56:56.885 [DEBUG] [Thread-123294] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:56:56.885 [DEBUG] [Thread-123294] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:56:56.885 [DEBUG] [Thread-123294] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:56:56.885 [DEBUG] [Thread-123294] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:56:56.885 [DEBUG] [Thread-123294] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:56:56.885 [DEBUG] [Thread-123294] [transport.py] [_log()] Compression: none
2025-11-03T21:56:56.885 [DEBUG] [Thread-123294] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:56:56.904 [DEBUG] [Thread-123294] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:56:56.904 [DEBUG] [Thread-123294] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:56:56.905 [DEBUG] [Thread-123294] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:56:56.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:56:56.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:56:56.907 [DEBUG] [Thread-123294] [transport.py] [_log()] userauth is OK
2025-11-03T21:56:56.907 [DEBUG] [Thread-123294] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:56:56.907 [DEBUG] [Thread-123294] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:56:56.907 [DEBUG] [Thread-123294] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:56:56.908 [DEBUG] [Thread-123294] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:56:56.924 [INFO] [Thread-123294] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:56:56.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:56:57.530 [DEBUG] [Thread-123294] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:56:57.530 [DEBUG] [Thread-123294] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:56:57.530 [DEBUG] [Thread-123294] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:56:57.571 [DEBUG] [Thread-123294] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:56:57.574 [DEBUG] [Thread-123294] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:56:57.576 [DEBUG] [Thread-123294] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:56:57.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:56:57.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:56:57.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:56:57.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:56:57.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:56:57.599 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:56:57.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:56:57.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:56:57.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:56:57.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.830656 -999.00  +19.10  15.56     16   -6.60 1 1 1 1 1     0    0 24.56 -50.01 ZNESW 19.4 15.6 306.0 20.8 19.2 -25.9 19.1 -25.0 18.9 -24.7 19.2 -25.8
2025-11-03T21:56:57.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:56:57.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:56:57.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.830656
2025-11-03T21:56:57.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:56:57.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:56:57.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:56:57.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:56:57.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:56:57.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:56:37', tmtdew=30.74, humidity=11.58, cloud=0.0, wind=17.43, temperature=19.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:56:37', seeing=1.14, atlas_timestamp='2025-11-03T19:56:08.678', atlas_cloud=1, atlas_rain=1, zp_data=[0.003750000000000142, 0.034250000000000114, 0.03775000000000084, 0.0004999999999988347, 0.03250000000000064, 0.026250000000000995, 0.045999999999999375, -0.1247499999999988, -0.06550000000000011, 0.019000000000000128, 0.09224999999999994, 0.11399999999999899, 0.11149999999999949, 0.05924999999999869, -0.0840000000000014, -1.1100000000000012, -0.023749999999999716, 0.0, 0.17549999999999955, 0.06924999999999848, 0.17449999999999832, 0.007749999999997925, -0.0962499999999995, -0.8852499999999992, 0.03200000000000003, 0.17650000000000077, 0.21274999999999977, 0.2054999999999989, 0.14300000000000068, 0.027000000000001023, -0.017499999999998295, -0.01899999999999835, 0.1717499999999994], zp_timestamp='2025-11-03T19:55:00')
2025-11-03T21:56:57.602 [DEBUG] [Thread-123294] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:56:57.674 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:56:57.688 [DEBUG] [Thread-123297] [transport.py] [_log()] starting thread (client mode): 0xed5f010
2025-11-03T21:56:57.688 [DEBUG] [Thread-123297] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:56:57.705 [DEBUG] [Thread-123297] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:56:57.705 [INFO] [Thread-123297] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:56:57.714 [DEBUG] [Thread-123297] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:56:57.714 [DEBUG] [Thread-123297] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:56:57.714 [DEBUG] [Thread-123297] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:56:57.714 [DEBUG] [Thread-123297] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:56:57.714 [DEBUG] [Thread-123297] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:56:57.714 [DEBUG] [Thread-123297] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:56:57.714 [DEBUG] [Thread-123297] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:56:57.714 [DEBUG] [Thread-123297] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:56:57.714 [DEBUG] [Thread-123297] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:56:57.714 [DEBUG] [Thread-123297] [transport.py] [_log()] client lang: <none>
2025-11-03T21:56:57.714 [DEBUG] [Thread-123297] [transport.py] [_log()] server lang: <none>
2025-11-03T21:56:57.714 [DEBUG] [Thread-123297] [transport.py] [_log()] kex follows: False
2025-11-03T21:56:57.714 [DEBUG] [Thread-123297] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:56:57.714 [DEBUG] [Thread-123297] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:56:57.714 [DEBUG] [Thread-123297] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:56:57.715 [DEBUG] [Thread-123297] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:56:57.715 [DEBUG] [Thread-123297] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:56:57.715 [DEBUG] [Thread-123297] [transport.py] [_log()] Compression: none
2025-11-03T21:56:57.715 [DEBUG] [Thread-123297] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:56:57.775 [DEBUG] [Thread-123297] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:56:57.775 [DEBUG] [Thread-123297] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:56:57.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:56:57.784 [DEBUG] [Thread-123297] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:56:57.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:56:57.836 [DEBUG] [Thread-123297] [transport.py] [_log()] userauth is OK
2025-11-03T21:56:57.836 [DEBUG] [Thread-123297] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:56:57.836 [DEBUG] [Thread-123297] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:56:57.836 [DEBUG] [Thread-123297] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:56:57.836 [DEBUG] [Thread-123297] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:56:57.851 [INFO] [Thread-123297] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:56:57.851 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:56:57.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:56:58.761 [DEBUG] [Thread-123297] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:56:58.761 [DEBUG] [Thread-123297] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:56:58.813 [DEBUG] [Thread-123297] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:56:58.813 [DEBUG] [Thread-123297] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:56:58.822 [DEBUG] [Thread-123297] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:56:58.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:56:58.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:56:58.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:56:58.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:56:58.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:56:58.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:56:58.857 [DEBUG] [Thread-123297] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:57:00.058 [DEBUG] [Thread-123299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:57:15.109 [DEBUG] [Thread-123300 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:57:28.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:57:28.857 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:57:28.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:57:29.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 57, 9), 30.73, 11.6, 0.0, 17.03, 19.03, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:57:29.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:57:09
2025-11-03T21:57:29.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:57:29.955 [DEBUG] [Thread-123301] [transport.py] [_log()] starting thread (client mode): 0xed88b20
2025-11-03T21:57:29.955 [DEBUG] [Thread-123301] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:57:29.975 [DEBUG] [Thread-123301] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:57:29.975 [INFO] [Thread-123301] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:57:29.978 [DEBUG] [Thread-123301] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:57:29.978 [DEBUG] [Thread-123301] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:57:29.978 [DEBUG] [Thread-123301] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:57:29.978 [DEBUG] [Thread-123301] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:57:29.978 [DEBUG] [Thread-123301] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:57:29.978 [DEBUG] [Thread-123301] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:57:29.978 [DEBUG] [Thread-123301] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:57:29.978 [DEBUG] [Thread-123301] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:57:29.979 [DEBUG] [Thread-123301] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:57:29.979 [DEBUG] [Thread-123301] [transport.py] [_log()] client lang: <none>
2025-11-03T21:57:29.979 [DEBUG] [Thread-123301] [transport.py] [_log()] server lang: <none>
2025-11-03T21:57:29.979 [DEBUG] [Thread-123301] [transport.py] [_log()] kex follows: False
2025-11-03T21:57:29.979 [DEBUG] [Thread-123301] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:57:29.979 [DEBUG] [Thread-123301] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:57:29.979 [DEBUG] [Thread-123301] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:57:29.979 [DEBUG] [Thread-123301] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:57:29.979 [DEBUG] [Thread-123301] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:57:29.979 [DEBUG] [Thread-123301] [transport.py] [_log()] Compression: none
2025-11-03T21:57:29.979 [DEBUG] [Thread-123301] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:57:29.996 [DEBUG] [Thread-123301] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:57:29.997 [DEBUG] [Thread-123301] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:57:29.998 [DEBUG] [Thread-123301] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:57:29.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:57:29.999 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:57:30.000 [DEBUG] [Thread-123301] [transport.py] [_log()] userauth is OK
2025-11-03T21:57:30.000 [DEBUG] [Thread-123301] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:57:30.000 [DEBUG] [Thread-123301] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:57:30.000 [DEBUG] [Thread-123301] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:57:30.000 [DEBUG] [Thread-123301] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:57:30.035 [INFO] [Thread-123301] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:57:30.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:57:30.148 [DEBUG] [Thread-123303 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:57:30.665 [DEBUG] [Thread-123301] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:57:30.665 [DEBUG] [Thread-123301] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:57:30.666 [DEBUG] [Thread-123301] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:57:30.706 [DEBUG] [Thread-123301] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:57:30.706 [DEBUG] [Thread-123301] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:57:30.710 [DEBUG] [Thread-123301] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:57:30.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:57:30.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:57:30.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:57:30.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:57:30.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:57:30.734 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:57:30.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:57:30.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:57:30.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:57:30.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.831003 -999.00  +19.20  17.42     16   -6.40 1 1 1 1 1     0    0 24.81 -54.04 ZNESW 17.4 17.4 298.4 24.0 19.2 -25.9 19.1 -24.9 18.9 -24.4 19.1 -25.8
2025-11-03T21:57:30.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:57:30.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:57:30.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.831003
2025-11-03T21:57:30.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:57:30.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:57:30.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:57:30.737 [DEBUG] [Thread-123301] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:57:30.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:57:30.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:57:30.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:57:09', tmtdew=30.73, humidity=11.6, cloud=0.0, wind=17.03, temperature=19.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:57:10', seeing=1.14, atlas_timestamp='2025-11-03T19:56:38.659', atlas_cloud=1, atlas_rain=1, zp_data=[0.003750000000000142, 0.034250000000000114, 0.03775000000000084, 0.0004999999999988347, 0.03250000000000064, 0.026250000000000995, 0.045999999999999375, -0.1247499999999988, -0.06550000000000011, 0.019000000000000128, 0.09224999999999994, 0.11399999999999899, 0.11149999999999949, 0.05924999999999869, -0.0840000000000014, -1.1100000000000012, -0.023749999999999716, 0.0, 0.17549999999999955, 0.06924999999999848, 0.17449999999999832, 0.007749999999997925, -0.0962499999999995, -0.8852499999999992, 0.03200000000000003, 0.17650000000000077, 0.21274999999999977, 0.2054999999999989, 0.14300000000000068, 0.027000000000001023, -0.017499999999998295, -0.01899999999999835, 0.1717499999999994], zp_timestamp='2025-11-03T19:55:00')
2025-11-03T21:57:30.823 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:57:30.842 [DEBUG] [Thread-123305] [transport.py] [_log()] starting thread (client mode): 0xed8b160
2025-11-03T21:57:30.842 [DEBUG] [Thread-123305] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:57:30.865 [DEBUG] [Thread-123305] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:57:30.865 [INFO] [Thread-123305] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:57:30.874 [DEBUG] [Thread-123305] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:57:30.875 [DEBUG] [Thread-123305] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:57:30.875 [DEBUG] [Thread-123305] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:57:30.875 [DEBUG] [Thread-123305] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:57:30.875 [DEBUG] [Thread-123305] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:57:30.875 [DEBUG] [Thread-123305] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:57:30.875 [DEBUG] [Thread-123305] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:57:30.875 [DEBUG] [Thread-123305] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:57:30.875 [DEBUG] [Thread-123305] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:57:30.875 [DEBUG] [Thread-123305] [transport.py] [_log()] client lang: <none>
2025-11-03T21:57:30.875 [DEBUG] [Thread-123305] [transport.py] [_log()] server lang: <none>
2025-11-03T21:57:30.875 [DEBUG] [Thread-123305] [transport.py] [_log()] kex follows: False
2025-11-03T21:57:30.875 [DEBUG] [Thread-123305] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:57:30.875 [DEBUG] [Thread-123305] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:57:30.876 [DEBUG] [Thread-123305] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:57:30.877 [DEBUG] [Thread-123305] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:57:30.877 [DEBUG] [Thread-123305] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:57:30.877 [DEBUG] [Thread-123305] [transport.py] [_log()] Compression: none
2025-11-03T21:57:30.877 [DEBUG] [Thread-123305] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:57:30.939 [DEBUG] [Thread-123305] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:57:30.940 [DEBUG] [Thread-123305] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:57:30.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:57:30.941 [DEBUG] [Thread-123305] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:57:30.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:57:31.000 [DEBUG] [Thread-123305] [transport.py] [_log()] userauth is OK
2025-11-03T21:57:31.000 [DEBUG] [Thread-123305] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:57:31.000 [DEBUG] [Thread-123305] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:57:31.001 [DEBUG] [Thread-123305] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:57:31.001 [DEBUG] [Thread-123305] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:57:31.023 [INFO] [Thread-123305] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:57:31.023 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:57:31.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:57:31.860 [DEBUG] [Thread-123305] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:57:31.860 [DEBUG] [Thread-123305] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:57:31.908 [DEBUG] [Thread-123305] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:57:31.908 [DEBUG] [Thread-123305] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:57:31.917 [DEBUG] [Thread-123305] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:57:31.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:57:31.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:57:31.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:57:31.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:57:31.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:57:31.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:57:31.954 [DEBUG] [Thread-123305] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:57:41.196 [DEBUG] [Thread-123307 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:57:45.185 [DEBUG] [Thread-123308 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:57:47.629 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:57:47.630 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:58:00.237 [DEBUG] [Thread-123309 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:58:01.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:58:01.977 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:58:01.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:58:02.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 57, 47), 30.69, 11.63, 0.0, 18.61, 18.98, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:58:02.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:57:47
2025-11-03T21:58:02.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:58:03.067 [DEBUG] [Thread-123310] [transport.py] [_log()] starting thread (client mode): 0x11761f30
2025-11-03T21:58:03.069 [DEBUG] [Thread-123310] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:58:03.087 [DEBUG] [Thread-123310] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:58:03.088 [INFO] [Thread-123310] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:58:03.094 [DEBUG] [Thread-123310] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:58:03.094 [DEBUG] [Thread-123310] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:58:03.094 [DEBUG] [Thread-123310] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:58:03.094 [DEBUG] [Thread-123310] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:58:03.094 [DEBUG] [Thread-123310] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:58:03.094 [DEBUG] [Thread-123310] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:58:03.094 [DEBUG] [Thread-123310] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:58:03.094 [DEBUG] [Thread-123310] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:58:03.094 [DEBUG] [Thread-123310] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:58:03.094 [DEBUG] [Thread-123310] [transport.py] [_log()] client lang: <none>
2025-11-03T21:58:03.094 [DEBUG] [Thread-123310] [transport.py] [_log()] server lang: <none>
2025-11-03T21:58:03.094 [DEBUG] [Thread-123310] [transport.py] [_log()] kex follows: False
2025-11-03T21:58:03.094 [DEBUG] [Thread-123310] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:58:03.094 [DEBUG] [Thread-123310] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:58:03.094 [DEBUG] [Thread-123310] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:58:03.094 [DEBUG] [Thread-123310] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:58:03.094 [DEBUG] [Thread-123310] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:58:03.094 [DEBUG] [Thread-123310] [transport.py] [_log()] Compression: none
2025-11-03T21:58:03.094 [DEBUG] [Thread-123310] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:58:03.117 [DEBUG] [Thread-123310] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:58:03.117 [DEBUG] [Thread-123310] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:58:03.117 [DEBUG] [Thread-123310] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:58:03.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:58:03.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:58:03.161 [DEBUG] [Thread-123310] [transport.py] [_log()] userauth is OK
2025-11-03T21:58:03.161 [DEBUG] [Thread-123310] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:58:03.162 [DEBUG] [Thread-123310] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:58:03.162 [DEBUG] [Thread-123310] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:58:03.162 [DEBUG] [Thread-123310] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:58:03.193 [INFO] [Thread-123310] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:58:03.194 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:58:03.834 [DEBUG] [Thread-123310] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:58:03.835 [DEBUG] [Thread-123310] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:58:03.835 [DEBUG] [Thread-123310] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:58:03.876 [DEBUG] [Thread-123310] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:58:03.876 [DEBUG] [Thread-123310] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:58:03.878 [DEBUG] [Thread-123310] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:58:03.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:58:03.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:58:03.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:58:03.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:58:03.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:58:03.898 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:58:03.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:58:03.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:58:03.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:58:03.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.831350 -999.00  +19.20  18.16     16   -6.40 1 1 1 1 1     0    0 25.18 -53.71 ZNESW 20.2 18.2 315.8 26.5 19.2 -26.1 19.1 -25.0 18.9 -24.9 19.2 -25.8
2025-11-03T21:58:03.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:58:03.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:58:03.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.831350
2025-11-03T21:58:03.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:58:03.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:58:03.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:58:03.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:58:03.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:58:03.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:57:47', tmtdew=30.69, humidity=11.63, cloud=0.0, wind=18.61, temperature=18.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:57:48', seeing=1.26, atlas_timestamp='2025-11-03T19:57:08.640', atlas_cloud=1, atlas_rain=1, zp_data=[0.003750000000000142, 0.034250000000000114, 0.03775000000000084, 0.0004999999999988347, 0.03250000000000064, 0.026250000000000995, 0.045999999999999375, -0.1247499999999988, -0.06550000000000011, 0.019000000000000128, 0.09224999999999994, 0.11399999999999899, 0.11149999999999949, 0.05924999999999869, -0.0840000000000014, -1.1100000000000012, -0.023749999999999716, 0.0, 0.17549999999999955, 0.06924999999999848, 0.17449999999999832, 0.007749999999997925, -0.0962499999999995, -0.8852499999999992, 0.03200000000000003, 0.17650000000000077, 0.21274999999999977, 0.2054999999999989, 0.14300000000000068, 0.027000000000001023, -0.017499999999998295, -0.01899999999999835, 0.1717499999999994], zp_timestamp='2025-11-03T19:55:00')
2025-11-03T21:58:03.899 [DEBUG] [Thread-123310] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:58:03.974 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:58:03.988 [DEBUG] [Thread-123313] [transport.py] [_log()] starting thread (client mode): 0xed36dd0
2025-11-03T21:58:03.988 [DEBUG] [Thread-123313] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:58:04.003 [DEBUG] [Thread-123313] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:58:04.003 [INFO] [Thread-123313] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:58:04.013 [DEBUG] [Thread-123313] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:58:04.013 [DEBUG] [Thread-123313] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:58:04.013 [DEBUG] [Thread-123313] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:58:04.013 [DEBUG] [Thread-123313] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:58:04.013 [DEBUG] [Thread-123313] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:58:04.013 [DEBUG] [Thread-123313] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:58:04.013 [DEBUG] [Thread-123313] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:58:04.013 [DEBUG] [Thread-123313] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:58:04.013 [DEBUG] [Thread-123313] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:58:04.013 [DEBUG] [Thread-123313] [transport.py] [_log()] client lang: <none>
2025-11-03T21:58:04.013 [DEBUG] [Thread-123313] [transport.py] [_log()] server lang: <none>
2025-11-03T21:58:04.013 [DEBUG] [Thread-123313] [transport.py] [_log()] kex follows: False
2025-11-03T21:58:04.013 [DEBUG] [Thread-123313] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:58:04.013 [DEBUG] [Thread-123313] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:58:04.013 [DEBUG] [Thread-123313] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:58:04.013 [DEBUG] [Thread-123313] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:58:04.013 [DEBUG] [Thread-123313] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:58:04.013 [DEBUG] [Thread-123313] [transport.py] [_log()] Compression: none
2025-11-03T21:58:04.013 [DEBUG] [Thread-123313] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:58:04.072 [DEBUG] [Thread-123313] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:58:04.072 [DEBUG] [Thread-123313] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:58:04.072 [DEBUG] [Thread-123313] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:58:04.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:58:04.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:58:04.135 [DEBUG] [Thread-123313] [transport.py] [_log()] userauth is OK
2025-11-03T21:58:04.135 [DEBUG] [Thread-123313] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:58:04.135 [DEBUG] [Thread-123313] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:58:04.136 [DEBUG] [Thread-123313] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:58:04.136 [DEBUG] [Thread-123313] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:58:04.154 [INFO] [Thread-123313] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:58:04.154 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:58:04.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:58:04.982 [DEBUG] [Thread-123313] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:58:04.982 [DEBUG] [Thread-123313] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:58:05.031 [DEBUG] [Thread-123313] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:58:05.031 [DEBUG] [Thread-123313] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:58:05.041 [DEBUG] [Thread-123313] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:58:05.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:58:05.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:58:05.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:58:05.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:58:05.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:58:05.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:58:05.080 [DEBUG] [Thread-123313] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:58:09.525 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:58:15.267 [DEBUG] [Thread-123315 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:58:17.816 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:58:21.884 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:58:30.320 [DEBUG] [Thread-123316 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:58:35.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:58:35.101 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:58:35.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:58:35.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 58, 20), 30.67, 11.65, 0.0, 19.57, 18.96, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:58:35.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:58:20
2025-11-03T21:58:36.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:58:36.209 [DEBUG] [Thread-123317] [transport.py] [_log()] starting thread (client mode): 0xed11ff0
2025-11-03T21:58:36.209 [DEBUG] [Thread-123317] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:58:36.226 [DEBUG] [Thread-123317] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:58:36.226 [INFO] [Thread-123317] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:58:36.229 [DEBUG] [Thread-123317] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:58:36.229 [DEBUG] [Thread-123317] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:58:36.229 [DEBUG] [Thread-123317] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:58:36.229 [DEBUG] [Thread-123317] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:58:36.229 [DEBUG] [Thread-123317] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:58:36.230 [DEBUG] [Thread-123317] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:58:36.230 [DEBUG] [Thread-123317] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:58:36.230 [DEBUG] [Thread-123317] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:58:36.230 [DEBUG] [Thread-123317] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:58:36.230 [DEBUG] [Thread-123317] [transport.py] [_log()] client lang: <none>
2025-11-03T21:58:36.230 [DEBUG] [Thread-123317] [transport.py] [_log()] server lang: <none>
2025-11-03T21:58:36.230 [DEBUG] [Thread-123317] [transport.py] [_log()] kex follows: False
2025-11-03T21:58:36.230 [DEBUG] [Thread-123317] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:58:36.230 [DEBUG] [Thread-123317] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:58:36.230 [DEBUG] [Thread-123317] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:58:36.231 [DEBUG] [Thread-123317] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:58:36.231 [DEBUG] [Thread-123317] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:58:36.231 [DEBUG] [Thread-123317] [transport.py] [_log()] Compression: none
2025-11-03T21:58:36.231 [DEBUG] [Thread-123317] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:58:36.247 [DEBUG] [Thread-123317] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:58:36.248 [DEBUG] [Thread-123317] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:58:36.248 [DEBUG] [Thread-123317] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:58:36.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:58:36.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:58:36.250 [DEBUG] [Thread-123317] [transport.py] [_log()] userauth is OK
2025-11-03T21:58:36.250 [DEBUG] [Thread-123317] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:58:36.250 [DEBUG] [Thread-123317] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:58:36.250 [DEBUG] [Thread-123317] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:58:36.250 [DEBUG] [Thread-123317] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:58:36.282 [INFO] [Thread-123317] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:58:36.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:58:36.971 [DEBUG] [Thread-123317] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:58:36.971 [DEBUG] [Thread-123317] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:58:36.971 [DEBUG] [Thread-123317] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:58:37.011 [DEBUG] [Thread-123317] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:58:37.011 [DEBUG] [Thread-123317] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:58:37.014 [DEBUG] [Thread-123317] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:58:37.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:58:37.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:58:37.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:58:37.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:58:37.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:58:37.042 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:58:37.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:58:37.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:58:37.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:58:37.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.831697 -999.00  +19.20  17.46     16   -6.50 1 1 1 1 1     0    0 24.22 -55.12 ZNESW 16.2 17.5 315.2 22.0 19.2 -26.1 19.1 -25.1 18.9 -24.8 19.2 -25.6
2025-11-03T21:58:37.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:58:37.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:58:37.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.831697
2025-11-03T21:58:37.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:58:37.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:58:37.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:58:37.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:58:37.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:58:37.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:58:20', tmtdew=30.67, humidity=11.65, cloud=0.0, wind=19.57, temperature=18.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:58:20', seeing=1.26, atlas_timestamp='2025-11-03T19:57:38.621', atlas_cloud=1, atlas_rain=1, zp_data=[0.003750000000000142, 0.034250000000000114, 0.03775000000000084, 0.0004999999999988347, 0.03250000000000064, 0.026250000000000995, 0.045999999999999375, -0.1247499999999988, -0.06550000000000011, 0.019000000000000128, 0.09224999999999994, 0.11399999999999899, 0.11149999999999949, 0.05924999999999869, -0.0840000000000014, -1.1100000000000012, -0.023749999999999716, 0.0, 0.17549999999999955, 0.06924999999999848, 0.17449999999999832, 0.007749999999997925, -0.0962499999999995, -0.8852499999999992, 0.03200000000000003, 0.17650000000000077, 0.21274999999999977, 0.2054999999999989, 0.14300000000000068, 0.027000000000001023, -0.017499999999998295, -0.01899999999999835, 0.1717499999999994], zp_timestamp='2025-11-03T19:55:00')
2025-11-03T21:58:37.044 [DEBUG] [Thread-123317] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:58:37.116 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:58:37.130 [DEBUG] [Thread-123320] [transport.py] [_log()] starting thread (client mode): 0xed89cf0
2025-11-03T21:58:37.130 [DEBUG] [Thread-123320] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:58:37.146 [DEBUG] [Thread-123320] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:58:37.146 [INFO] [Thread-123320] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:58:37.158 [DEBUG] [Thread-123320] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:58:37.158 [DEBUG] [Thread-123320] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:58:37.158 [DEBUG] [Thread-123320] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:58:37.158 [DEBUG] [Thread-123320] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:58:37.158 [DEBUG] [Thread-123320] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:58:37.158 [DEBUG] [Thread-123320] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:58:37.158 [DEBUG] [Thread-123320] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:58:37.158 [DEBUG] [Thread-123320] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:58:37.158 [DEBUG] [Thread-123320] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:58:37.158 [DEBUG] [Thread-123320] [transport.py] [_log()] client lang: <none>
2025-11-03T21:58:37.158 [DEBUG] [Thread-123320] [transport.py] [_log()] server lang: <none>
2025-11-03T21:58:37.159 [DEBUG] [Thread-123320] [transport.py] [_log()] kex follows: False
2025-11-03T21:58:37.159 [DEBUG] [Thread-123320] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:58:37.159 [DEBUG] [Thread-123320] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:58:37.159 [DEBUG] [Thread-123320] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:58:37.159 [DEBUG] [Thread-123320] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:58:37.159 [DEBUG] [Thread-123320] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:58:37.159 [DEBUG] [Thread-123320] [transport.py] [_log()] Compression: none
2025-11-03T21:58:37.159 [DEBUG] [Thread-123320] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:58:37.221 [DEBUG] [Thread-123320] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:58:37.221 [DEBUG] [Thread-123320] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:58:37.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:58:37.221 [DEBUG] [Thread-123320] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:58:37.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:58:37.282 [DEBUG] [Thread-123320] [transport.py] [_log()] userauth is OK
2025-11-03T21:58:37.282 [DEBUG] [Thread-123320] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:58:37.282 [DEBUG] [Thread-123320] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:58:37.282 [DEBUG] [Thread-123320] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:58:37.282 [DEBUG] [Thread-123320] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:58:37.296 [INFO] [Thread-123320] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:58:37.297 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:58:37.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:58:38.126 [DEBUG] [Thread-123320] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:58:38.126 [DEBUG] [Thread-123320] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:58:38.174 [DEBUG] [Thread-123320] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:58:38.174 [DEBUG] [Thread-123320] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:58:38.183 [DEBUG] [Thread-123320] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:58:38.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:58:38.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:58:38.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:58:38.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:58:38.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:58:38.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:58:38.216 [DEBUG] [Thread-123320] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:58:41.457 [DEBUG] [Thread-123322 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:58:45.350 [DEBUG] [Thread-123323 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:58:47.840 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:58:47.842 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:59:00.391 [DEBUG] [Thread-123324 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:59:08.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:59:08.214 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:59:08.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:59:09.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 58, 52), 30.52, 11.75, 0.0, 17.19, 18.99, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:59:09.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:58:52
2025-11-03T21:59:09.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:59:10.135 [DEBUG] [Thread-123325] [transport.py] [_log()] starting thread (client mode): 0x11761bd0
2025-11-03T21:59:10.135 [DEBUG] [Thread-123325] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:59:10.151 [DEBUG] [Thread-123325] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:59:10.151 [INFO] [Thread-123325] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:59:10.152 [DEBUG] [Thread-123325] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:59:10.153 [DEBUG] [Thread-123325] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:59:10.153 [DEBUG] [Thread-123325] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:59:10.153 [DEBUG] [Thread-123325] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:59:10.153 [DEBUG] [Thread-123325] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:59:10.153 [DEBUG] [Thread-123325] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:59:10.153 [DEBUG] [Thread-123325] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:59:10.153 [DEBUG] [Thread-123325] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:59:10.153 [DEBUG] [Thread-123325] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:59:10.153 [DEBUG] [Thread-123325] [transport.py] [_log()] client lang: <none>
2025-11-03T21:59:10.153 [DEBUG] [Thread-123325] [transport.py] [_log()] server lang: <none>
2025-11-03T21:59:10.153 [DEBUG] [Thread-123325] [transport.py] [_log()] kex follows: False
2025-11-03T21:59:10.153 [DEBUG] [Thread-123325] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:59:10.153 [DEBUG] [Thread-123325] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:59:10.153 [DEBUG] [Thread-123325] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:59:10.153 [DEBUG] [Thread-123325] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:59:10.153 [DEBUG] [Thread-123325] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:59:10.153 [DEBUG] [Thread-123325] [transport.py] [_log()] Compression: none
2025-11-03T21:59:10.153 [DEBUG] [Thread-123325] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:59:10.172 [DEBUG] [Thread-123325] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:59:10.172 [DEBUG] [Thread-123325] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:59:10.173 [DEBUG] [Thread-123325] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:59:10.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:59:10.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:59:10.175 [DEBUG] [Thread-123325] [transport.py] [_log()] userauth is OK
2025-11-03T21:59:10.175 [DEBUG] [Thread-123325] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:59:10.175 [DEBUG] [Thread-123325] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:59:10.175 [DEBUG] [Thread-123325] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:59:10.175 [DEBUG] [Thread-123325] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:59:10.199 [INFO] [Thread-123325] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:59:10.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:59:10.849 [DEBUG] [Thread-123325] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:59:10.849 [DEBUG] [Thread-123325] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:59:10.849 [DEBUG] [Thread-123325] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:59:10.889 [DEBUG] [Thread-123325] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:59:10.890 [DEBUG] [Thread-123325] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:59:10.892 [DEBUG] [Thread-123325] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:59:10.904 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:59:10.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:59:10.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:59:10.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:59:10.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:59:10.912 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:59:10.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:59:10.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:59:10.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:59:10.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.832392 -999.00  +19.20  16.19     16   -6.50 1 1 1 1 1     0    0 24.50 -60.00 ZNESW 20.2 16.2 309.8 22.9 19.2 -26.1 19.1 -25.1 18.9 -24.5 19.2 -25.7
2025-11-03T21:59:10.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:59:10.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:59:10.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.832392
2025-11-03T21:59:10.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:59:10.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:59:10.914 [DEBUG] [Thread-123325] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:59:10.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:59:10.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:59:10.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:59:10.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:58:52', tmtdew=30.52, humidity=11.75, cloud=0.0, wind=17.19, temperature=18.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:58:53', seeing=1.34, atlas_timestamp='2025-11-03T19:58:38.669', atlas_cloud=1, atlas_rain=1, zp_data=[0.003750000000000142, 0.034250000000000114, 0.03775000000000084, 0.0004999999999988347, 0.03250000000000064, 0.026250000000000995, 0.045999999999999375, -0.1247499999999988, -0.06550000000000011, 0.019000000000000128, 0.09224999999999994, 0.11399999999999899, 0.11149999999999949, 0.05924999999999869, -0.0840000000000014, -1.1100000000000012, -0.023749999999999716, 0.0, 0.17549999999999955, 0.06924999999999848, 0.17449999999999832, 0.007749999999997925, -0.0962499999999995, -0.8852499999999992, 0.03200000000000003, 0.17650000000000077, 0.21274999999999977, 0.2054999999999989, 0.14300000000000068, 0.027000000000001023, -0.017499999999998295, -0.01899999999999835, 0.1717499999999994], zp_timestamp='2025-11-03T19:55:00')
2025-11-03T21:59:10.988 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:59:11.001 [DEBUG] [Thread-123328] [transport.py] [_log()] starting thread (client mode): 0x117e98d0
2025-11-03T21:59:11.001 [DEBUG] [Thread-123328] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:59:11.016 [DEBUG] [Thread-123328] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:59:11.016 [INFO] [Thread-123328] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:59:11.029 [DEBUG] [Thread-123328] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:59:11.029 [DEBUG] [Thread-123328] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:59:11.029 [DEBUG] [Thread-123328] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:59:11.029 [DEBUG] [Thread-123328] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:59:11.029 [DEBUG] [Thread-123328] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:59:11.029 [DEBUG] [Thread-123328] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:59:11.029 [DEBUG] [Thread-123328] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:59:11.029 [DEBUG] [Thread-123328] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:59:11.029 [DEBUG] [Thread-123328] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:59:11.029 [DEBUG] [Thread-123328] [transport.py] [_log()] client lang: <none>
2025-11-03T21:59:11.029 [DEBUG] [Thread-123328] [transport.py] [_log()] server lang: <none>
2025-11-03T21:59:11.029 [DEBUG] [Thread-123328] [transport.py] [_log()] kex follows: False
2025-11-03T21:59:11.029 [DEBUG] [Thread-123328] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:59:11.029 [DEBUG] [Thread-123328] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:59:11.029 [DEBUG] [Thread-123328] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:59:11.029 [DEBUG] [Thread-123328] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:59:11.029 [DEBUG] [Thread-123328] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:59:11.029 [DEBUG] [Thread-123328] [transport.py] [_log()] Compression: none
2025-11-03T21:59:11.029 [DEBUG] [Thread-123328] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:59:11.087 [DEBUG] [Thread-123328] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:59:11.087 [DEBUG] [Thread-123328] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:59:11.087 [DEBUG] [Thread-123328] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:59:11.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:59:11.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:59:11.143 [DEBUG] [Thread-123328] [transport.py] [_log()] userauth is OK
2025-11-03T21:59:11.143 [DEBUG] [Thread-123328] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:59:11.143 [DEBUG] [Thread-123328] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:59:11.143 [DEBUG] [Thread-123328] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:59:11.143 [DEBUG] [Thread-123328] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:59:11.158 [INFO] [Thread-123328] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:59:11.159 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:59:11.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:59:12.024 [DEBUG] [Thread-123328] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:59:12.024 [DEBUG] [Thread-123328] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:59:12.075 [DEBUG] [Thread-123328] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:59:12.076 [DEBUG] [Thread-123328] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:59:12.089 [DEBUG] [Thread-123328] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:59:12.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:59:12.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:59:12.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:59:12.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:59:12.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:59:12.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:59:12.144 [DEBUG] [Thread-123328] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:59:15.426 [DEBUG] [Thread-123330 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:59:30.461 [DEBUG] [Thread-123331 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:59:41.555 [DEBUG] [Thread-123332 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:59:42.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T21:59:42.136 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T21:59:42.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T21:59:42.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 59, 25), 30.57, 11.72, 0.0, 17.34, 19.04, 0, 0, 0, 2, 0, 0),)
2025-11-03T21:59:42.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:59:25
2025-11-03T21:59:43.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T21:59:43.194 [DEBUG] [Thread-123333] [transport.py] [_log()] starting thread (client mode): 0x117eb4c0
2025-11-03T21:59:43.194 [DEBUG] [Thread-123333] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:59:43.214 [DEBUG] [Thread-123333] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T21:59:43.214 [INFO] [Thread-123333] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T21:59:43.217 [DEBUG] [Thread-123333] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:59:43.217 [DEBUG] [Thread-123333] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T21:59:43.218 [DEBUG] [Thread-123333] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:59:43.218 [DEBUG] [Thread-123333] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:59:43.218 [DEBUG] [Thread-123333] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:59:43.218 [DEBUG] [Thread-123333] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:59:43.218 [DEBUG] [Thread-123333] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:59:43.218 [DEBUG] [Thread-123333] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:59:43.218 [DEBUG] [Thread-123333] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:59:43.218 [DEBUG] [Thread-123333] [transport.py] [_log()] client lang: <none>
2025-11-03T21:59:43.218 [DEBUG] [Thread-123333] [transport.py] [_log()] server lang: <none>
2025-11-03T21:59:43.218 [DEBUG] [Thread-123333] [transport.py] [_log()] kex follows: False
2025-11-03T21:59:43.218 [DEBUG] [Thread-123333] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:59:43.218 [DEBUG] [Thread-123333] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:59:43.218 [DEBUG] [Thread-123333] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:59:43.218 [DEBUG] [Thread-123333] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:59:43.218 [DEBUG] [Thread-123333] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:59:43.218 [DEBUG] [Thread-123333] [transport.py] [_log()] Compression: none
2025-11-03T21:59:43.218 [DEBUG] [Thread-123333] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:59:43.236 [DEBUG] [Thread-123333] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:59:43.237 [DEBUG] [Thread-123333] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:59:43.237 [DEBUG] [Thread-123333] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T21:59:43.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T21:59:43.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:59:43.240 [DEBUG] [Thread-123333] [transport.py] [_log()] userauth is OK
2025-11-03T21:59:43.240 [DEBUG] [Thread-123333] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:59:43.240 [DEBUG] [Thread-123333] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:59:43.240 [DEBUG] [Thread-123333] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T21:59:43.240 [DEBUG] [Thread-123333] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:59:43.262 [INFO] [Thread-123333] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:59:43.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:59:43.872 [DEBUG] [Thread-123333] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:59:43.873 [DEBUG] [Thread-123333] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:59:43.873 [DEBUG] [Thread-123333] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T21:59:43.913 [DEBUG] [Thread-123333] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:59:43.913 [DEBUG] [Thread-123333] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:59:43.917 [DEBUG] [Thread-123333] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:59:43.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:59:43.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T21:59:43.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T21:59:43.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T21:59:43.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:59:43.951 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T21:59:43.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:59:43.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:59:43.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T21:59:43.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.832739 -999.00  +19.30  17.79     16   -6.40 1 1 1 1 1     0    0 24.35 -61.53 ZNESW 18.5 17.8 309.0 25.9 19.2 -25.9 19.1 -25.1 18.9 -24.9 19.2 -25.9
2025-11-03T21:59:43.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T21:59:43.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T21:59:43.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.832739
2025-11-03T21:59:43.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T21:59:43.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T21:59:43.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T21:59:43.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T21:59:43.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T21:59:43.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:59:25', tmtdew=30.57, humidity=11.72, cloud=0.0, wind=17.34, temperature=19.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:59:25', seeing=1.34, atlas_timestamp='2025-11-03T19:59:08.650', atlas_cloud=1, atlas_rain=1, zp_data=[0.003750000000000142, 0.034250000000000114, 0.03775000000000084, 0.0004999999999988347, 0.03250000000000064, 0.026250000000000995, 0.045999999999999375, -0.1247499999999988, -0.06550000000000011, 0.019000000000000128, 0.09224999999999994, 0.11399999999999899, 0.11149999999999949, 0.05924999999999869, -0.0840000000000014, -1.1100000000000012, -0.023749999999999716, 0.0, 0.17549999999999955, 0.06924999999999848, 0.17449999999999832, 0.007749999999997925, -0.0962499999999995, -0.8852499999999992, 0.03200000000000003, 0.17650000000000077, 0.21274999999999977, 0.2054999999999989, 0.14300000000000068, 0.027000000000001023, -0.017499999999998295, -0.01899999999999835, 0.1717499999999994], zp_timestamp='2025-11-03T19:58:00')
2025-11-03T21:59:43.956 [DEBUG] [Thread-123333] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:59:44.038 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T21:59:44.051 [DEBUG] [Thread-123336] [transport.py] [_log()] starting thread (client mode): 0xed5f5e0
2025-11-03T21:59:44.051 [DEBUG] [Thread-123336] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T21:59:44.068 [DEBUG] [Thread-123336] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T21:59:44.068 [INFO] [Thread-123336] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T21:59:44.080 [DEBUG] [Thread-123336] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T21:59:44.080 [DEBUG] [Thread-123336] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T21:59:44.080 [DEBUG] [Thread-123336] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T21:59:44.080 [DEBUG] [Thread-123336] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:59:44.080 [DEBUG] [Thread-123336] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T21:59:44.080 [DEBUG] [Thread-123336] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:59:44.081 [DEBUG] [Thread-123336] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T21:59:44.081 [DEBUG] [Thread-123336] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T21:59:44.081 [DEBUG] [Thread-123336] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T21:59:44.081 [DEBUG] [Thread-123336] [transport.py] [_log()] client lang: <none>
2025-11-03T21:59:44.081 [DEBUG] [Thread-123336] [transport.py] [_log()] server lang: <none>
2025-11-03T21:59:44.081 [DEBUG] [Thread-123336] [transport.py] [_log()] kex follows: False
2025-11-03T21:59:44.081 [DEBUG] [Thread-123336] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T21:59:44.081 [DEBUG] [Thread-123336] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T21:59:44.082 [DEBUG] [Thread-123336] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T21:59:44.082 [DEBUG] [Thread-123336] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T21:59:44.082 [DEBUG] [Thread-123336] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T21:59:44.082 [DEBUG] [Thread-123336] [transport.py] [_log()] Compression: none
2025-11-03T21:59:44.082 [DEBUG] [Thread-123336] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T21:59:44.144 [DEBUG] [Thread-123336] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T21:59:44.145 [DEBUG] [Thread-123336] [transport.py] [_log()] Switch to new keys ...
2025-11-03T21:59:44.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T21:59:44.147 [DEBUG] [Thread-123336] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T21:59:44.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T21:59:44.204 [DEBUG] [Thread-123336] [transport.py] [_log()] userauth is OK
2025-11-03T21:59:44.204 [DEBUG] [Thread-123336] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T21:59:44.204 [DEBUG] [Thread-123336] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T21:59:44.204 [DEBUG] [Thread-123336] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T21:59:44.205 [DEBUG] [Thread-123336] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T21:59:44.227 [INFO] [Thread-123336] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T21:59:44.227 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T21:59:44.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T21:59:45.086 [DEBUG] [Thread-123336] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T21:59:45.086 [DEBUG] [Thread-123336] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T21:59:45.138 [DEBUG] [Thread-123336] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T21:59:45.138 [DEBUG] [Thread-123336] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T21:59:45.154 [DEBUG] [Thread-123336] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T21:59:45.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T21:59:45.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T21:59:45.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T21:59:45.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T21:59:45.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T21:59:45.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T21:59:45.192 [DEBUG] [Thread-123336] [transport.py] [_log()] EOF in transport thread
2025-11-03T21:59:45.496 [DEBUG] [Thread-123338 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:59:48.045 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T21:59:48.046 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:00:00.549 [DEBUG] [Thread-123339 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:00:15.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:00:15.222 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:00:15.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:00:15.592 [DEBUG] [Thread-123340 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:00:17.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 21, 59, 57), 30.58, 11.68, 0.0, 17.45, 18.95, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:00:17.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 21:59:57
2025-11-03T22:00:17.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:00:17.604 [DEBUG] [Thread-123341] [transport.py] [_log()] starting thread (client mode): 0xed5ef80
2025-11-03T22:00:17.608 [DEBUG] [Thread-123341] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:00:17.608 [DEBUG] [Thread-123341] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:00:17.608 [INFO] [Thread-123341] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:00:17.618 [DEBUG] [Thread-123341] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:00:17.619 [DEBUG] [Thread-123341] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:00:17.619 [DEBUG] [Thread-123341] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:00:17.619 [DEBUG] [Thread-123341] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:00:17.620 [DEBUG] [Thread-123341] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:00:17.620 [DEBUG] [Thread-123341] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:00:17.620 [DEBUG] [Thread-123341] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:00:17.620 [DEBUG] [Thread-123341] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:00:17.620 [DEBUG] [Thread-123341] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:00:17.620 [DEBUG] [Thread-123341] [transport.py] [_log()] client lang: <none>
2025-11-03T22:00:17.620 [DEBUG] [Thread-123341] [transport.py] [_log()] server lang: <none>
2025-11-03T22:00:17.620 [DEBUG] [Thread-123341] [transport.py] [_log()] kex follows: False
2025-11-03T22:00:17.620 [DEBUG] [Thread-123341] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:00:17.623 [DEBUG] [Thread-123341] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:00:17.623 [DEBUG] [Thread-123341] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:00:17.623 [DEBUG] [Thread-123341] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:00:17.624 [DEBUG] [Thread-123341] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:00:17.624 [DEBUG] [Thread-123341] [transport.py] [_log()] Compression: none
2025-11-03T22:00:17.624 [DEBUG] [Thread-123341] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:00:17.667 [DEBUG] [Thread-123341] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:00:17.671 [DEBUG] [Thread-123341] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:00:17.674 [DEBUG] [Thread-123341] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:00:17.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:00:17.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:00:17.677 [DEBUG] [Thread-123341] [transport.py] [_log()] userauth is OK
2025-11-03T22:00:17.677 [DEBUG] [Thread-123341] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:00:17.677 [DEBUG] [Thread-123341] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:00:17.677 [DEBUG] [Thread-123341] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:00:17.678 [DEBUG] [Thread-123341] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:00:17.703 [INFO] [Thread-123341] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:00:17.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:00:18.483 [DEBUG] [Thread-123341] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:00:18.483 [DEBUG] [Thread-123341] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:00:18.487 [DEBUG] [Thread-123341] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:00:18.525 [DEBUG] [Thread-123341] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:00:18.525 [DEBUG] [Thread-123341] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:00:18.529 [DEBUG] [Thread-123341] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:00:18.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:00:18.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:00:18.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:00:18.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:00:18.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:00:18.557 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:00:18.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:00:18.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:00:18.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:00:18.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.833086 -999.00  +19.30  16.84     16   -6.40 1 1 1 1 1     0    0 24.15 -62.40 ZNESW 15.2 16.8 299.4 24.7 19.2 -26.1 19.1 -25.1 18.9 -24.9 19.2 -25.9
2025-11-03T22:00:18.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:00:18.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:00:18.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.833086
2025-11-03T22:00:18.565 [DEBUG] [Thread-123341] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:00:18.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:00:18.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:00:18.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:00:18.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:00:18.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:00:18.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T21:59:57', tmtdew=30.58, humidity=11.68, cloud=0.0, wind=17.45, temperature=18.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T21:59:58', seeing=1.27, atlas_timestamp='2025-11-03T19:59:38.630', atlas_cloud=1, atlas_rain=1, zp_data=[0.003750000000000142, 0.034250000000000114, 0.03775000000000084, 0.0004999999999988347, 0.03250000000000064, 0.026250000000000995, 0.045999999999999375, -0.1247499999999988, -0.06550000000000011, 0.019000000000000128, 0.09224999999999994, 0.11399999999999899, 0.11149999999999949, 0.05924999999999869, -0.0840000000000014, -1.1100000000000012, -0.023749999999999716, 0.0, 0.17549999999999955, 0.06924999999999848, 0.17449999999999832, 0.007749999999997925, -0.0962499999999995, -0.8852499999999992, 0.03200000000000003, 0.17650000000000077, 0.21274999999999977, 0.2054999999999989, 0.14300000000000068, 0.027000000000001023, -0.017499999999998295, -0.01899999999999835, 0.1717499999999994], zp_timestamp='2025-11-03T19:58:00')
2025-11-03T22:00:18.685 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:00:18.698 [DEBUG] [Thread-123344] [transport.py] [_log()] starting thread (client mode): 0xed36dd0
2025-11-03T22:00:18.700 [DEBUG] [Thread-123344] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:00:18.712 [DEBUG] [Thread-123344] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:00:18.712 [INFO] [Thread-123344] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:00:18.720 [DEBUG] [Thread-123344] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:00:18.720 [DEBUG] [Thread-123344] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:00:18.720 [DEBUG] [Thread-123344] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:00:18.720 [DEBUG] [Thread-123344] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:00:18.720 [DEBUG] [Thread-123344] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:00:18.720 [DEBUG] [Thread-123344] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:00:18.720 [DEBUG] [Thread-123344] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:00:18.720 [DEBUG] [Thread-123344] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:00:18.721 [DEBUG] [Thread-123344] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:00:18.721 [DEBUG] [Thread-123344] [transport.py] [_log()] client lang: <none>
2025-11-03T22:00:18.721 [DEBUG] [Thread-123344] [transport.py] [_log()] server lang: <none>
2025-11-03T22:00:18.721 [DEBUG] [Thread-123344] [transport.py] [_log()] kex follows: False
2025-11-03T22:00:18.721 [DEBUG] [Thread-123344] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:00:18.721 [DEBUG] [Thread-123344] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:00:18.721 [DEBUG] [Thread-123344] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:00:18.721 [DEBUG] [Thread-123344] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:00:18.722 [DEBUG] [Thread-123344] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:00:18.722 [DEBUG] [Thread-123344] [transport.py] [_log()] Compression: none
2025-11-03T22:00:18.722 [DEBUG] [Thread-123344] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:00:18.780 [DEBUG] [Thread-123344] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:00:18.781 [DEBUG] [Thread-123344] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:00:18.782 [DEBUG] [Thread-123344] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:00:18.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:00:18.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:00:18.841 [DEBUG] [Thread-123344] [transport.py] [_log()] userauth is OK
2025-11-03T22:00:18.841 [DEBUG] [Thread-123344] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:00:18.841 [DEBUG] [Thread-123344] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:00:18.841 [DEBUG] [Thread-123344] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:00:18.841 [DEBUG] [Thread-123344] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:00:18.860 [INFO] [Thread-123344] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:00:18.860 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:00:18.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:00:19.711 [DEBUG] [Thread-123344] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:00:19.711 [DEBUG] [Thread-123344] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:00:19.760 [DEBUG] [Thread-123344] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:00:19.761 [DEBUG] [Thread-123344] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:00:19.770 [DEBUG] [Thread-123344] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:00:19.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:00:19.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:00:19.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:00:19.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:00:19.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:00:19.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:00:19.814 [DEBUG] [Thread-123344] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:00:30.644 [DEBUG] [Thread-123346 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:00:41.821 [DEBUG] [Thread-123347 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:00:45.742 [DEBUG] [Thread-123348 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:00:48.265 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:00:48.267 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:00:49.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:00:49.821 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:00:49.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:00:50.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 0, 30), 30.52, 11.75, 0.0, 17.54, 18.99, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:00:50.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:00:30
2025-11-03T22:00:50.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:00:50.888 [DEBUG] [Thread-123349] [transport.py] [_log()] starting thread (client mode): 0x117ea3b0
2025-11-03T22:00:50.888 [DEBUG] [Thread-123349] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:00:50.903 [DEBUG] [Thread-123349] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:00:50.904 [INFO] [Thread-123349] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:00:50.907 [DEBUG] [Thread-123349] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:00:50.907 [DEBUG] [Thread-123349] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:00:50.907 [DEBUG] [Thread-123349] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:00:50.907 [DEBUG] [Thread-123349] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:00:50.907 [DEBUG] [Thread-123349] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:00:50.907 [DEBUG] [Thread-123349] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:00:50.907 [DEBUG] [Thread-123349] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:00:50.907 [DEBUG] [Thread-123349] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:00:50.907 [DEBUG] [Thread-123349] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:00:50.907 [DEBUG] [Thread-123349] [transport.py] [_log()] client lang: <none>
2025-11-03T22:00:50.907 [DEBUG] [Thread-123349] [transport.py] [_log()] server lang: <none>
2025-11-03T22:00:50.907 [DEBUG] [Thread-123349] [transport.py] [_log()] kex follows: False
2025-11-03T22:00:50.907 [DEBUG] [Thread-123349] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:00:50.907 [DEBUG] [Thread-123349] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:00:50.907 [DEBUG] [Thread-123349] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:00:50.907 [DEBUG] [Thread-123349] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:00:50.907 [DEBUG] [Thread-123349] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:00:50.907 [DEBUG] [Thread-123349] [transport.py] [_log()] Compression: none
2025-11-03T22:00:50.907 [DEBUG] [Thread-123349] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:00:50.926 [DEBUG] [Thread-123349] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:00:50.927 [DEBUG] [Thread-123349] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:00:50.927 [DEBUG] [Thread-123349] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:00:50.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:00:50.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:00:50.970 [DEBUG] [Thread-123349] [transport.py] [_log()] userauth is OK
2025-11-03T22:00:50.970 [DEBUG] [Thread-123349] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:00:50.971 [DEBUG] [Thread-123349] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:00:50.971 [DEBUG] [Thread-123349] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:00:50.971 [DEBUG] [Thread-123349] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:00:51.009 [INFO] [Thread-123349] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:00:51.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:00:52.684 [DEBUG] [Thread-123349] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:00:52.684 [DEBUG] [Thread-123349] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:00:52.685 [DEBUG] [Thread-123349] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:00:52.724 [DEBUG] [Thread-123349] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:00:52.725 [DEBUG] [Thread-123349] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:00:52.728 [DEBUG] [Thread-123349] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:00:52.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:00:52.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:00:52.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:00:52.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:00:52.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:00:52.752 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:00:52.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:00:52.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:00:52.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:00:52.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.833433 -999.00  +19.20  17.52     16   -6.40 1 1 1 1 1     0    0 24.18 -60.23 ZNESW 23.7 17.5 306.2 21.7 19.2 -25.9 19.1 -25.1 18.9 -24.8 19.2 -25.8
2025-11-03T22:00:52.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:00:52.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:00:52.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.833433
2025-11-03T22:00:52.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:00:52.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:00:52.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:00:52.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:00:52.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:00:52.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:00:30', tmtdew=30.52, humidity=11.75, cloud=0.0, wind=17.54, temperature=18.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:00:30', seeing=1.18, atlas_timestamp='2025-11-03T20:00:08.611', atlas_cloud=1, atlas_rain=1, zp_data=[0.003750000000000142, 0.034250000000000114, 0.03775000000000084, 0.0004999999999988347, 0.03250000000000064, 0.026250000000000995, 0.045999999999999375, -0.1247499999999988, -0.06550000000000011, 0.019000000000000128, 0.09224999999999994, 0.11399999999999899, 0.11149999999999949, 0.05924999999999869, -0.0840000000000014, -1.1100000000000012, -0.023749999999999716, 0.0, 0.17549999999999955, 0.06924999999999848, 0.17449999999999832, 0.007749999999997925, -0.0962499999999995, -0.8852499999999992, 0.03200000000000003, 0.17650000000000077, 0.21274999999999977, 0.2054999999999989, 0.14300000000000068, 0.027000000000001023, -0.017499999999998295, -0.01899999999999835, 0.1717499999999994], zp_timestamp='2025-11-03T19:58:00')
2025-11-03T22:00:52.757 [DEBUG] [Thread-123349] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:00:52.840 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:00:52.853 [DEBUG] [Thread-123352] [transport.py] [_log()] starting thread (client mode): 0xeda1030
2025-11-03T22:00:52.853 [DEBUG] [Thread-123352] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:00:52.867 [DEBUG] [Thread-123352] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:00:52.867 [INFO] [Thread-123352] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:00:52.878 [DEBUG] [Thread-123352] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:00:52.878 [DEBUG] [Thread-123352] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:00:52.879 [DEBUG] [Thread-123352] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:00:52.879 [DEBUG] [Thread-123352] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:00:52.879 [DEBUG] [Thread-123352] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:00:52.879 [DEBUG] [Thread-123352] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:00:52.879 [DEBUG] [Thread-123352] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:00:52.879 [DEBUG] [Thread-123352] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:00:52.879 [DEBUG] [Thread-123352] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:00:52.879 [DEBUG] [Thread-123352] [transport.py] [_log()] client lang: <none>
2025-11-03T22:00:52.880 [DEBUG] [Thread-123352] [transport.py] [_log()] server lang: <none>
2025-11-03T22:00:52.880 [DEBUG] [Thread-123352] [transport.py] [_log()] kex follows: False
2025-11-03T22:00:52.880 [DEBUG] [Thread-123352] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:00:52.880 [DEBUG] [Thread-123352] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:00:52.880 [DEBUG] [Thread-123352] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:00:52.880 [DEBUG] [Thread-123352] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:00:52.881 [DEBUG] [Thread-123352] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:00:52.881 [DEBUG] [Thread-123352] [transport.py] [_log()] Compression: none
2025-11-03T22:00:52.881 [DEBUG] [Thread-123352] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:00:52.933 [DEBUG] [Thread-123352] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:00:52.934 [DEBUG] [Thread-123352] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:00:52.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:00:52.935 [DEBUG] [Thread-123352] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:00:52.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:00:52.990 [DEBUG] [Thread-123352] [transport.py] [_log()] userauth is OK
2025-11-03T22:00:52.990 [DEBUG] [Thread-123352] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:00:52.990 [DEBUG] [Thread-123352] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:00:52.991 [DEBUG] [Thread-123352] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:00:52.991 [DEBUG] [Thread-123352] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:00:53.010 [INFO] [Thread-123352] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:00:53.010 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:00:53.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:00:53.822 [DEBUG] [Thread-123352] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:00:53.823 [DEBUG] [Thread-123352] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:00:53.871 [DEBUG] [Thread-123352] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:00:53.871 [DEBUG] [Thread-123352] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:00:53.881 [DEBUG] [Thread-123352] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:00:53.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:00:53.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:00:53.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:00:53.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:00:53.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:00:53.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:00:53.920 [DEBUG] [Thread-123352] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:01:00.774 [DEBUG] [Thread-123354 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:01:15.816 [DEBUG] [Thread-123355 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:01:23.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:01:23.941 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:01:23.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:01:24.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 1, 2), 30.56, 11.72, 0.0, 17.59, 18.99, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:01:24.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:01:02
2025-11-03T22:01:24.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:01:25.069 [DEBUG] [Thread-123356] [transport.py] [_log()] starting thread (client mode): 0xed5d1e0
2025-11-03T22:01:25.069 [DEBUG] [Thread-123356] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:01:25.089 [DEBUG] [Thread-123356] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:01:25.089 [INFO] [Thread-123356] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:01:25.092 [DEBUG] [Thread-123356] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:01:25.092 [DEBUG] [Thread-123356] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:01:25.092 [DEBUG] [Thread-123356] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:01:25.092 [DEBUG] [Thread-123356] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:01:25.092 [DEBUG] [Thread-123356] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:01:25.092 [DEBUG] [Thread-123356] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:01:25.092 [DEBUG] [Thread-123356] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:01:25.092 [DEBUG] [Thread-123356] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:01:25.092 [DEBUG] [Thread-123356] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:01:25.092 [DEBUG] [Thread-123356] [transport.py] [_log()] client lang: <none>
2025-11-03T22:01:25.092 [DEBUG] [Thread-123356] [transport.py] [_log()] server lang: <none>
2025-11-03T22:01:25.092 [DEBUG] [Thread-123356] [transport.py] [_log()] kex follows: False
2025-11-03T22:01:25.092 [DEBUG] [Thread-123356] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:01:25.092 [DEBUG] [Thread-123356] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:01:25.092 [DEBUG] [Thread-123356] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:01:25.092 [DEBUG] [Thread-123356] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:01:25.092 [DEBUG] [Thread-123356] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:01:25.092 [DEBUG] [Thread-123356] [transport.py] [_log()] Compression: none
2025-11-03T22:01:25.092 [DEBUG] [Thread-123356] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:01:25.107 [DEBUG] [Thread-123356] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:01:25.107 [DEBUG] [Thread-123356] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:01:25.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:01:25.107 [DEBUG] [Thread-123356] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:01:25.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:01:25.108 [DEBUG] [Thread-123356] [transport.py] [_log()] userauth is OK
2025-11-03T22:01:25.108 [DEBUG] [Thread-123356] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:01:25.108 [DEBUG] [Thread-123356] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:01:25.108 [DEBUG] [Thread-123356] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:01:25.108 [DEBUG] [Thread-123356] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:01:25.117 [INFO] [Thread-123356] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:01:25.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:01:25.733 [DEBUG] [Thread-123356] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:01:25.733 [DEBUG] [Thread-123356] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:01:25.733 [DEBUG] [Thread-123356] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:01:25.774 [DEBUG] [Thread-123356] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:01:25.774 [DEBUG] [Thread-123356] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:01:25.777 [DEBUG] [Thread-123356] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:01:25.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:01:25.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:01:25.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:01:25.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:01:25.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:01:25.797 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:01:25.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:01:25.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:01:25.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:01:25.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.833781 -999.00  +19.30  22.61     16   -6.30 1 1 1 1 1     0    0 24.41 -60.79 ZNESW 20.8 22.6 300.2 28.0 19.2 -26.2 19.1 -24.9 19.0 -24.5 19.2 -25.8
2025-11-03T22:01:25.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:01:25.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:01:25.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.833781
2025-11-03T22:01:25.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:01:25.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:01:25.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:01:25.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:01:25.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:01:25.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:01:02', tmtdew=30.56, humidity=11.72, cloud=0.0, wind=17.59, temperature=18.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:01:03', seeing=1.36, atlas_timestamp='2025-11-03T20:00:38.678', atlas_cloud=1, atlas_rain=1, zp_data=[0.003750000000000142, 0.034250000000000114, 0.03775000000000084, 0.0004999999999988347, 0.03250000000000064, 0.026250000000000995, 0.045999999999999375, -0.1247499999999988, -0.06550000000000011, 0.019000000000000128, 0.09224999999999994, 0.11399999999999899, 0.11149999999999949, 0.05924999999999869, -0.0840000000000014, -1.1100000000000012, -0.023749999999999716, 0.0, 0.17549999999999955, 0.06924999999999848, 0.17449999999999832, 0.007749999999997925, -0.0962499999999995, -0.8852499999999992, 0.03200000000000003, 0.17650000000000077, 0.21274999999999977, 0.2054999999999989, 0.14300000000000068, 0.027000000000001023, -0.017499999999998295, -0.01899999999999835, 0.1717499999999994], zp_timestamp='2025-11-03T19:58:00')
2025-11-03T22:01:25.798 [DEBUG] [Thread-123356] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:01:25.872 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:01:25.885 [DEBUG] [Thread-123359] [transport.py] [_log()] starting thread (client mode): 0xed34ac0
2025-11-03T22:01:25.885 [DEBUG] [Thread-123359] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:01:25.904 [DEBUG] [Thread-123359] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:01:25.904 [INFO] [Thread-123359] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:01:25.915 [DEBUG] [Thread-123359] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:01:25.915 [DEBUG] [Thread-123359] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:01:25.915 [DEBUG] [Thread-123359] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:01:25.915 [DEBUG] [Thread-123359] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:01:25.915 [DEBUG] [Thread-123359] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:01:25.915 [DEBUG] [Thread-123359] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:01:25.915 [DEBUG] [Thread-123359] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:01:25.915 [DEBUG] [Thread-123359] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:01:25.915 [DEBUG] [Thread-123359] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:01:25.915 [DEBUG] [Thread-123359] [transport.py] [_log()] client lang: <none>
2025-11-03T22:01:25.915 [DEBUG] [Thread-123359] [transport.py] [_log()] server lang: <none>
2025-11-03T22:01:25.915 [DEBUG] [Thread-123359] [transport.py] [_log()] kex follows: False
2025-11-03T22:01:25.915 [DEBUG] [Thread-123359] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:01:25.915 [DEBUG] [Thread-123359] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:01:25.915 [DEBUG] [Thread-123359] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:01:25.915 [DEBUG] [Thread-123359] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:01:25.915 [DEBUG] [Thread-123359] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:01:25.915 [DEBUG] [Thread-123359] [transport.py] [_log()] Compression: none
2025-11-03T22:01:25.915 [DEBUG] [Thread-123359] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:01:25.980 [DEBUG] [Thread-123359] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:01:25.981 [DEBUG] [Thread-123359] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:01:25.981 [DEBUG] [Thread-123359] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:01:25.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:01:25.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:01:26.042 [DEBUG] [Thread-123359] [transport.py] [_log()] userauth is OK
2025-11-03T22:01:26.042 [DEBUG] [Thread-123359] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:01:26.042 [DEBUG] [Thread-123359] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:01:26.042 [DEBUG] [Thread-123359] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:01:26.042 [DEBUG] [Thread-123359] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:01:26.056 [INFO] [Thread-123359] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:01:26.056 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:01:26.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:01:26.960 [DEBUG] [Thread-123359] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:01:26.960 [DEBUG] [Thread-123359] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:01:27.009 [DEBUG] [Thread-123359] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:01:27.009 [DEBUG] [Thread-123359] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:01:27.017 [DEBUG] [Thread-123359] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:01:27.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:01:27.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:01:27.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:01:27.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:01:27.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:01:27.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:01:27.052 [DEBUG] [Thread-123359] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:01:30.848 [DEBUG] [Thread-123361 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:01:42.124 [DEBUG] [Thread-123362 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:01:44.780 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:01:45.897 [DEBUG] [Thread-123363 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:01:48.469 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:01:48.470 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:01:53.084 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:01:57.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:01:57.065 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:01:57.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:01:57.221 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:01:57.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 1, 35), 30.6, 11.73, 0.0, 17.61, 19.09, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:01:57.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:01:35
2025-11-03T22:01:57.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:01:58.128 [DEBUG] [Thread-123364] [transport.py] [_log()] starting thread (client mode): 0xed35cf0
2025-11-03T22:01:58.129 [DEBUG] [Thread-123364] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:01:58.148 [DEBUG] [Thread-123364] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:01:58.148 [INFO] [Thread-123364] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:01:58.151 [DEBUG] [Thread-123364] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:01:58.151 [DEBUG] [Thread-123364] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:01:58.151 [DEBUG] [Thread-123364] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:01:58.151 [DEBUG] [Thread-123364] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:01:58.151 [DEBUG] [Thread-123364] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:01:58.151 [DEBUG] [Thread-123364] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:01:58.151 [DEBUG] [Thread-123364] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:01:58.152 [DEBUG] [Thread-123364] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:01:58.152 [DEBUG] [Thread-123364] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:01:58.152 [DEBUG] [Thread-123364] [transport.py] [_log()] client lang: <none>
2025-11-03T22:01:58.152 [DEBUG] [Thread-123364] [transport.py] [_log()] server lang: <none>
2025-11-03T22:01:58.152 [DEBUG] [Thread-123364] [transport.py] [_log()] kex follows: False
2025-11-03T22:01:58.152 [DEBUG] [Thread-123364] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:01:58.152 [DEBUG] [Thread-123364] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:01:58.152 [DEBUG] [Thread-123364] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:01:58.152 [DEBUG] [Thread-123364] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:01:58.152 [DEBUG] [Thread-123364] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:01:58.152 [DEBUG] [Thread-123364] [transport.py] [_log()] Compression: none
2025-11-03T22:01:58.152 [DEBUG] [Thread-123364] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:01:58.171 [DEBUG] [Thread-123364] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:01:58.171 [DEBUG] [Thread-123364] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:01:58.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:01:58.173 [DEBUG] [Thread-123364] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:01:58.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:01:58.215 [DEBUG] [Thread-123364] [transport.py] [_log()] userauth is OK
2025-11-03T22:01:58.216 [DEBUG] [Thread-123364] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:01:58.216 [DEBUG] [Thread-123364] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:01:58.216 [DEBUG] [Thread-123364] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:01:58.216 [DEBUG] [Thread-123364] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:01:58.241 [INFO] [Thread-123364] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:01:58.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:01:58.938 [DEBUG] [Thread-123364] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:01:58.939 [DEBUG] [Thread-123364] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:01:58.939 [DEBUG] [Thread-123364] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:01:58.980 [DEBUG] [Thread-123364] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:01:58.980 [DEBUG] [Thread-123364] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:01:58.982 [DEBUG] [Thread-123364] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:01:58.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:01:58.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:01:58.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:01:58.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:01:59.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:01:59.003 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:01:59.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:01:59.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:01:59.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:01:59.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.834128 -999.00  +19.30  17.80     16   -6.40 1 1 1 1 1     0    0 24.32 -55.51 ZNESW 19.2 17.8 297.4 22.5 19.2 -26.1 19.1 -25.1 19.0 -24.7 19.2 -25.8
2025-11-03T22:01:59.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:01:59.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:01:59.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.834128
2025-11-03T22:01:59.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:01:59.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:01:59.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:01:59.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:01:59.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:01:59.012 [DEBUG] [Thread-123364] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:01:59.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:01:35', tmtdew=30.6, humidity=11.73, cloud=0.0, wind=17.61, temperature=19.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:01:35', seeing=1.36, atlas_timestamp='2025-11-03T20:01:08.659', atlas_cloud=1, atlas_rain=1, zp_data=[0.003750000000000142, 0.034250000000000114, 0.03775000000000084, 0.0004999999999988347, 0.03250000000000064, 0.026250000000000995, 0.045999999999999375, -0.1247499999999988, -0.06550000000000011, 0.019000000000000128, 0.09224999999999994, 0.11399999999999899, 0.11149999999999949, 0.05924999999999869, -0.0840000000000014, -1.1100000000000012, -0.023749999999999716, 0.0, 0.17549999999999955, 0.06924999999999848, 0.17449999999999832, 0.007749999999997925, -0.0962499999999995, -0.8852499999999992, 0.03200000000000003, 0.17650000000000077, 0.21274999999999977, 0.2054999999999989, 0.14300000000000068, 0.027000000000001023, -0.017499999999998295, -0.01899999999999835, 0.1717499999999994], zp_timestamp='2025-11-03T19:58:00')
2025-11-03T22:01:59.097 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:01:59.111 [DEBUG] [Thread-123367] [transport.py] [_log()] starting thread (client mode): 0x117996c0
2025-11-03T22:01:59.111 [DEBUG] [Thread-123367] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:01:59.129 [DEBUG] [Thread-123367] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:01:59.129 [INFO] [Thread-123367] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:01:59.138 [DEBUG] [Thread-123367] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:01:59.138 [DEBUG] [Thread-123367] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:01:59.138 [DEBUG] [Thread-123367] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:01:59.138 [DEBUG] [Thread-123367] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:01:59.138 [DEBUG] [Thread-123367] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:01:59.138 [DEBUG] [Thread-123367] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:01:59.138 [DEBUG] [Thread-123367] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:01:59.138 [DEBUG] [Thread-123367] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:01:59.138 [DEBUG] [Thread-123367] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:01:59.138 [DEBUG] [Thread-123367] [transport.py] [_log()] client lang: <none>
2025-11-03T22:01:59.138 [DEBUG] [Thread-123367] [transport.py] [_log()] server lang: <none>
2025-11-03T22:01:59.138 [DEBUG] [Thread-123367] [transport.py] [_log()] kex follows: False
2025-11-03T22:01:59.138 [DEBUG] [Thread-123367] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:01:59.138 [DEBUG] [Thread-123367] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:01:59.138 [DEBUG] [Thread-123367] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:01:59.147 [DEBUG] [Thread-123367] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:01:59.147 [DEBUG] [Thread-123367] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:01:59.147 [DEBUG] [Thread-123367] [transport.py] [_log()] Compression: none
2025-11-03T22:01:59.147 [DEBUG] [Thread-123367] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:01:59.201 [DEBUG] [Thread-123367] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:01:59.201 [DEBUG] [Thread-123367] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:01:59.201 [DEBUG] [Thread-123367] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:01:59.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:01:59.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:01:59.258 [DEBUG] [Thread-123367] [transport.py] [_log()] userauth is OK
2025-11-03T22:01:59.258 [DEBUG] [Thread-123367] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:01:59.258 [DEBUG] [Thread-123367] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:01:59.258 [DEBUG] [Thread-123367] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:01:59.258 [DEBUG] [Thread-123367] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:01:59.279 [INFO] [Thread-123367] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:01:59.279 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:01:59.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:02:00.142 [DEBUG] [Thread-123367] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:02:00.143 [DEBUG] [Thread-123367] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:02:00.191 [DEBUG] [Thread-123367] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:02:00.191 [DEBUG] [Thread-123367] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:02:00.200 [DEBUG] [Thread-123367] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:02:00.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:02:00.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:02:00.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:02:00.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:02:00.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:02:00.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:02:00.236 [DEBUG] [Thread-123367] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:02:00.928 [DEBUG] [Thread-123369 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:02:15.964 [DEBUG] [Thread-123370 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:02:30.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:02:30.260 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:02:30.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:02:30.995 [DEBUG] [Thread-123371 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:02:31.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 2, 7), 30.58, 11.75, 0.0, 17.31, 19.11, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:02:31.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:02:07
2025-11-03T22:02:31.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:02:31.365 [DEBUG] [Thread-123372] [transport.py] [_log()] starting thread (client mode): 0x11799420
2025-11-03T22:02:31.365 [DEBUG] [Thread-123372] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:02:31.376 [DEBUG] [Thread-123372] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:02:31.377 [INFO] [Thread-123372] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:02:31.380 [DEBUG] [Thread-123372] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:02:31.380 [DEBUG] [Thread-123372] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:02:31.380 [DEBUG] [Thread-123372] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:02:31.380 [DEBUG] [Thread-123372] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:02:31.380 [DEBUG] [Thread-123372] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:02:31.380 [DEBUG] [Thread-123372] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:02:31.380 [DEBUG] [Thread-123372] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:02:31.380 [DEBUG] [Thread-123372] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:02:31.380 [DEBUG] [Thread-123372] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:02:31.380 [DEBUG] [Thread-123372] [transport.py] [_log()] client lang: <none>
2025-11-03T22:02:31.380 [DEBUG] [Thread-123372] [transport.py] [_log()] server lang: <none>
2025-11-03T22:02:31.380 [DEBUG] [Thread-123372] [transport.py] [_log()] kex follows: False
2025-11-03T22:02:31.380 [DEBUG] [Thread-123372] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:02:31.381 [DEBUG] [Thread-123372] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:02:31.381 [DEBUG] [Thread-123372] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:02:31.381 [DEBUG] [Thread-123372] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:02:31.381 [DEBUG] [Thread-123372] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:02:31.381 [DEBUG] [Thread-123372] [transport.py] [_log()] Compression: none
2025-11-03T22:02:31.381 [DEBUG] [Thread-123372] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:02:31.399 [DEBUG] [Thread-123372] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:02:31.400 [DEBUG] [Thread-123372] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:02:31.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:02:31.401 [DEBUG] [Thread-123372] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:02:31.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:02:31.442 [DEBUG] [Thread-123372] [transport.py] [_log()] userauth is OK
2025-11-03T22:02:31.442 [DEBUG] [Thread-123372] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:02:31.443 [DEBUG] [Thread-123372] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:02:31.443 [DEBUG] [Thread-123372] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:02:31.443 [DEBUG] [Thread-123372] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:02:31.462 [INFO] [Thread-123372] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:02:31.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:02:32.102 [DEBUG] [Thread-123372] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:02:32.102 [DEBUG] [Thread-123372] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:02:32.102 [DEBUG] [Thread-123372] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:02:32.135 [DEBUG] [Thread-123372] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:02:32.135 [DEBUG] [Thread-123372] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:02:32.137 [DEBUG] [Thread-123372] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:02:32.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:02:32.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:02:32.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:02:32.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:02:32.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:02:32.155 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:02:32.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:02:32.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:02:32.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:02:32.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.834822 -999.00  +19.30  19.50     16   -6.40 1 1 1 1 1     0    0 24.04 -60.83 ZNESW 17.8 19.5 298.0 22.6 19.3 -26.1 19.2 -25.2 18.9 -24.8 19.2 -25.6
2025-11-03T22:02:32.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:02:32.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:02:32.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.834822
2025-11-03T22:02:32.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:02:32.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:02:32.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:02:32.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:02:32.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:02:32.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:02:07', tmtdew=30.58, humidity=11.75, cloud=0.0, wind=17.31, temperature=19.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:02:08', seeing=1.17, atlas_timestamp='2025-11-03T20:02:08.621', atlas_cloud=1, atlas_rain=1, zp_data=[0.03074999999999939, 0.07624999999999993, 0.004250000000000753, 0.030999999999998806, 0.058499999999998664, 0.09975000000000023, -0.023999999999999133, -0.004749999999999588, 0.04849999999999888, 0.027499999999999858, 0.12375000000000114, 0.12199999999999989, 0.1504999999999992, 0.06274999999999942, -0.14800000000000146, -1.0790000000000006, 0.062249999999998806, 0.0754999999999999, 0.20849999999999902, 0.11324999999999896, 0.2054999999999989, 0.025749999999998607, -0.23874999999999957, -0.12925000000000075, 0.1120000000000001, 0.19500000000000028, 0.18475000000000108, 0.23150000000000048, 0.17900000000000027, 0.17700000000000138, 0.16900000000000048, -0.049999999999998934, 0.17474999999999952], zp_timestamp='2025-11-03T20:01:00')
2025-11-03T22:02:32.156 [DEBUG] [Thread-123372] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:02:32.228 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:02:32.243 [DEBUG] [Thread-123375] [transport.py] [_log()] starting thread (client mode): 0x11762950
2025-11-03T22:02:32.243 [DEBUG] [Thread-123375] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:02:32.264 [DEBUG] [Thread-123375] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:02:32.264 [INFO] [Thread-123375] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:02:32.277 [DEBUG] [Thread-123375] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:02:32.277 [DEBUG] [Thread-123375] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:02:32.277 [DEBUG] [Thread-123375] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:02:32.277 [DEBUG] [Thread-123375] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:02:32.277 [DEBUG] [Thread-123375] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:02:32.277 [DEBUG] [Thread-123375] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:02:32.277 [DEBUG] [Thread-123375] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:02:32.277 [DEBUG] [Thread-123375] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:02:32.277 [DEBUG] [Thread-123375] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:02:32.277 [DEBUG] [Thread-123375] [transport.py] [_log()] client lang: <none>
2025-11-03T22:02:32.277 [DEBUG] [Thread-123375] [transport.py] [_log()] server lang: <none>
2025-11-03T22:02:32.277 [DEBUG] [Thread-123375] [transport.py] [_log()] kex follows: False
2025-11-03T22:02:32.277 [DEBUG] [Thread-123375] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:02:32.277 [DEBUG] [Thread-123375] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:02:32.277 [DEBUG] [Thread-123375] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:02:32.277 [DEBUG] [Thread-123375] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:02:32.277 [DEBUG] [Thread-123375] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:02:32.277 [DEBUG] [Thread-123375] [transport.py] [_log()] Compression: none
2025-11-03T22:02:32.277 [DEBUG] [Thread-123375] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:02:32.336 [DEBUG] [Thread-123375] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:02:32.336 [DEBUG] [Thread-123375] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:02:32.336 [DEBUG] [Thread-123375] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:02:32.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:02:32.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:02:32.394 [DEBUG] [Thread-123375] [transport.py] [_log()] userauth is OK
2025-11-03T22:02:32.394 [DEBUG] [Thread-123375] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:02:32.394 [DEBUG] [Thread-123375] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:02:32.394 [DEBUG] [Thread-123375] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:02:32.394 [DEBUG] [Thread-123375] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:02:32.408 [INFO] [Thread-123375] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:02:32.408 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:02:32.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:02:33.261 [DEBUG] [Thread-123375] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:02:33.261 [DEBUG] [Thread-123375] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:02:33.313 [DEBUG] [Thread-123375] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:02:33.313 [DEBUG] [Thread-123375] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:02:33.326 [DEBUG] [Thread-123375] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:02:33.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:02:33.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:02:33.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:02:33.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:02:33.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:02:33.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:02:33.378 [DEBUG] [Thread-123375] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:02:42.392 [DEBUG] [Thread-123377 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:02:46.023 [DEBUG] [Thread-123378 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:02:48.671 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:02:48.673 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:03:01.070 [DEBUG] [Thread-123379 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:03:03.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:03:03.396 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:03:03.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:03:04.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 2, 39), 30.48, 11.8, 0.0, 21.79, 19.11, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:03:04.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:02:39
2025-11-03T22:03:04.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:03:04.539 [DEBUG] [Thread-123380] [transport.py] [_log()] starting thread (client mode): 0x1179a320
2025-11-03T22:03:04.539 [DEBUG] [Thread-123380] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:03:04.560 [DEBUG] [Thread-123380] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:03:04.560 [INFO] [Thread-123380] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:03:04.563 [DEBUG] [Thread-123380] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:03:04.563 [DEBUG] [Thread-123380] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:03:04.563 [DEBUG] [Thread-123380] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:03:04.564 [DEBUG] [Thread-123380] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:03:04.564 [DEBUG] [Thread-123380] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:03:04.564 [DEBUG] [Thread-123380] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:03:04.564 [DEBUG] [Thread-123380] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:03:04.564 [DEBUG] [Thread-123380] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:03:04.564 [DEBUG] [Thread-123380] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:03:04.564 [DEBUG] [Thread-123380] [transport.py] [_log()] client lang: <none>
2025-11-03T22:03:04.564 [DEBUG] [Thread-123380] [transport.py] [_log()] server lang: <none>
2025-11-03T22:03:04.564 [DEBUG] [Thread-123380] [transport.py] [_log()] kex follows: False
2025-11-03T22:03:04.564 [DEBUG] [Thread-123380] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:03:04.564 [DEBUG] [Thread-123380] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:03:04.564 [DEBUG] [Thread-123380] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:03:04.573 [DEBUG] [Thread-123380] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:03:04.574 [DEBUG] [Thread-123380] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:03:04.574 [DEBUG] [Thread-123380] [transport.py] [_log()] Compression: none
2025-11-03T22:03:04.574 [DEBUG] [Thread-123380] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:03:04.592 [DEBUG] [Thread-123380] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:03:04.592 [DEBUG] [Thread-123380] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:03:04.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:03:04.593 [DEBUG] [Thread-123380] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:03:04.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:03:04.595 [DEBUG] [Thread-123380] [transport.py] [_log()] userauth is OK
2025-11-03T22:03:04.596 [DEBUG] [Thread-123380] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:03:04.596 [DEBUG] [Thread-123380] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:03:04.596 [DEBUG] [Thread-123380] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:03:04.596 [DEBUG] [Thread-123380] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:03:04.610 [INFO] [Thread-123380] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:03:04.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:03:05.314 [DEBUG] [Thread-123380] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:03:05.314 [DEBUG] [Thread-123380] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:03:05.315 [DEBUG] [Thread-123380] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:03:05.355 [DEBUG] [Thread-123380] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:03:05.356 [DEBUG] [Thread-123380] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:03:05.358 [DEBUG] [Thread-123380] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:03:05.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:03:05.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:03:05.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:03:05.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:03:05.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:03:05.389 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:03:05.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:03:05.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:03:05.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:03:05.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.835170 -999.00  +19.40  20.79     17   -6.10 1 1 1 1 1     0    0 24.30 -59.11 ZNESW 25.5 20.8 306.0 24.2 19.3 -25.9 19.2 -24.9 19.0 -24.2 19.3 -25.8
2025-11-03T22:03:05.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:03:05.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:03:05.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.835170
2025-11-03T22:03:05.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:03:05.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:03:05.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:03:05.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:03:05.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:03:05.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:02:39', tmtdew=30.48, humidity=11.8, cloud=0.0, wind=21.79, temperature=19.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:02:40', seeing=1.17, atlas_timestamp='2025-11-03T20:02:38.688', atlas_cloud=1, atlas_rain=1, zp_data=[0.03074999999999939, 0.07624999999999993, 0.004250000000000753, 0.030999999999998806, 0.058499999999998664, 0.09975000000000023, -0.023999999999999133, -0.004749999999999588, 0.04849999999999888, 0.027499999999999858, 0.12375000000000114, 0.12199999999999989, 0.1504999999999992, 0.06274999999999942, -0.14800000000000146, -1.0790000000000006, 0.062249999999998806, 0.0754999999999999, 0.20849999999999902, 0.11324999999999896, 0.2054999999999989, 0.025749999999998607, -0.23874999999999957, -0.12925000000000075, 0.1120000000000001, 0.19500000000000028, 0.18475000000000108, 0.23150000000000048, 0.17900000000000027, 0.17700000000000138, 0.16900000000000048, -0.049999999999998934, 0.17474999999999952], zp_timestamp='2025-11-03T20:01:00')
2025-11-03T22:03:05.393 [DEBUG] [Thread-123380] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:03:05.462 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:03:05.476 [DEBUG] [Thread-123383] [transport.py] [_log()] starting thread (client mode): 0xed5d0f0
2025-11-03T22:03:05.476 [DEBUG] [Thread-123383] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:03:05.492 [DEBUG] [Thread-123383] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:03:05.492 [INFO] [Thread-123383] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:03:05.501 [DEBUG] [Thread-123383] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:03:05.501 [DEBUG] [Thread-123383] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:03:05.501 [DEBUG] [Thread-123383] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:03:05.501 [DEBUG] [Thread-123383] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:03:05.501 [DEBUG] [Thread-123383] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:03:05.501 [DEBUG] [Thread-123383] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:03:05.501 [DEBUG] [Thread-123383] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:03:05.501 [DEBUG] [Thread-123383] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:03:05.501 [DEBUG] [Thread-123383] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:03:05.501 [DEBUG] [Thread-123383] [transport.py] [_log()] client lang: <none>
2025-11-03T22:03:05.501 [DEBUG] [Thread-123383] [transport.py] [_log()] server lang: <none>
2025-11-03T22:03:05.501 [DEBUG] [Thread-123383] [transport.py] [_log()] kex follows: False
2025-11-03T22:03:05.501 [DEBUG] [Thread-123383] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:03:05.501 [DEBUG] [Thread-123383] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:03:05.501 [DEBUG] [Thread-123383] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:03:05.501 [DEBUG] [Thread-123383] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:03:05.501 [DEBUG] [Thread-123383] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:03:05.501 [DEBUG] [Thread-123383] [transport.py] [_log()] Compression: none
2025-11-03T22:03:05.501 [DEBUG] [Thread-123383] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:03:05.561 [DEBUG] [Thread-123383] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:03:05.561 [DEBUG] [Thread-123383] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:03:05.561 [DEBUG] [Thread-123383] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:03:05.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:03:05.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:03:05.620 [DEBUG] [Thread-123383] [transport.py] [_log()] userauth is OK
2025-11-03T22:03:05.620 [DEBUG] [Thread-123383] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:03:05.620 [DEBUG] [Thread-123383] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:03:05.620 [DEBUG] [Thread-123383] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:03:05.620 [DEBUG] [Thread-123383] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:03:05.634 [INFO] [Thread-123383] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:03:05.634 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:03:05.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:03:06.529 [DEBUG] [Thread-123383] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:03:06.529 [DEBUG] [Thread-123383] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:03:06.579 [DEBUG] [Thread-123383] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:03:06.580 [DEBUG] [Thread-123383] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:03:06.590 [DEBUG] [Thread-123383] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:03:06.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:03:06.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:03:06.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:03:06.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:03:06.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:03:06.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:03:06.639 [DEBUG] [Thread-123383] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:03:16.106 [DEBUG] [Thread-123385 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:03:31.154 [DEBUG] [Thread-123386 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:03:36.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:03:36.661 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:03:36.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:03:37.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 3, 12), 30.51, 11.78, 0.0, 21.1, 19.14, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:03:37.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:03:12
2025-11-03T22:03:37.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:03:37.705 [DEBUG] [Thread-123387] [transport.py] [_log()] starting thread (client mode): 0x11760340
2025-11-03T22:03:37.705 [DEBUG] [Thread-123387] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:03:37.725 [DEBUG] [Thread-123387] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:03:37.725 [INFO] [Thread-123387] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:03:37.728 [DEBUG] [Thread-123387] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:03:37.729 [DEBUG] [Thread-123387] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:03:37.729 [DEBUG] [Thread-123387] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:03:37.729 [DEBUG] [Thread-123387] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:03:37.729 [DEBUG] [Thread-123387] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:03:37.729 [DEBUG] [Thread-123387] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:03:37.729 [DEBUG] [Thread-123387] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:03:37.729 [DEBUG] [Thread-123387] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:03:37.729 [DEBUG] [Thread-123387] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:03:37.729 [DEBUG] [Thread-123387] [transport.py] [_log()] client lang: <none>
2025-11-03T22:03:37.729 [DEBUG] [Thread-123387] [transport.py] [_log()] server lang: <none>
2025-11-03T22:03:37.729 [DEBUG] [Thread-123387] [transport.py] [_log()] kex follows: False
2025-11-03T22:03:37.729 [DEBUG] [Thread-123387] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:03:37.729 [DEBUG] [Thread-123387] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:03:37.730 [DEBUG] [Thread-123387] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:03:37.730 [DEBUG] [Thread-123387] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:03:37.730 [DEBUG] [Thread-123387] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:03:37.730 [DEBUG] [Thread-123387] [transport.py] [_log()] Compression: none
2025-11-03T22:03:37.730 [DEBUG] [Thread-123387] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:03:37.749 [DEBUG] [Thread-123387] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:03:37.750 [DEBUG] [Thread-123387] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:03:37.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:03:37.751 [DEBUG] [Thread-123387] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:03:37.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:03:37.794 [DEBUG] [Thread-123387] [transport.py] [_log()] userauth is OK
2025-11-03T22:03:37.795 [DEBUG] [Thread-123387] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:03:37.795 [DEBUG] [Thread-123387] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:03:37.795 [DEBUG] [Thread-123387] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:03:37.795 [DEBUG] [Thread-123387] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:03:37.821 [INFO] [Thread-123387] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:03:37.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:03:38.464 [DEBUG] [Thread-123387] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:03:38.472 [DEBUG] [Thread-123387] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:03:38.473 [DEBUG] [Thread-123387] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:03:38.504 [DEBUG] [Thread-123387] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:03:38.504 [DEBUG] [Thread-123387] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:03:38.507 [DEBUG] [Thread-123387] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:03:38.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:03:38.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:03:38.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:03:38.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:03:38.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:03:38.526 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:03:38.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:03:38.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:03:38.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:03:38.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.835517 -999.00  +19.50  16.44     16   -6.20 1 1 1 1 1     0    0 24.40 -56.02 ZNESW 18.2 16.4 307.8 27.5 19.3 -26.1 19.2 -25.0 19.0 -24.6 19.3 -25.8
2025-11-03T22:03:38.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:03:38.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:03:38.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.835517
2025-11-03T22:03:38.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:03:38.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:03:38.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:03:38.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:03:38.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:03:38.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:03:12', tmtdew=30.51, humidity=11.78, cloud=0.0, wind=21.1, temperature=19.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:03:12', seeing=1.3, atlas_timestamp='2025-11-03T20:03:08.669', atlas_cloud=1, atlas_rain=1, zp_data=[0.03074999999999939, 0.07624999999999993, 0.004250000000000753, 0.030999999999998806, 0.058499999999998664, 0.09975000000000023, -0.023999999999999133, -0.004749999999999588, 0.04849999999999888, 0.027499999999999858, 0.12375000000000114, 0.12199999999999989, 0.1504999999999992, 0.06274999999999942, -0.14800000000000146, -1.0790000000000006, 0.062249999999998806, 0.0754999999999999, 0.20849999999999902, 0.11324999999999896, 0.2054999999999989, 0.025749999999998607, -0.23874999999999957, -0.12925000000000075, 0.1120000000000001, 0.19500000000000028, 0.18475000000000108, 0.23150000000000048, 0.17900000000000027, 0.17700000000000138, 0.16900000000000048, -0.049999999999998934, 0.17474999999999952], zp_timestamp='2025-11-03T20:01:00')
2025-11-03T22:03:38.528 [DEBUG] [Thread-123387] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:03:38.598 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:03:38.611 [DEBUG] [Thread-123390] [transport.py] [_log()] starting thread (client mode): 0x11763c70
2025-11-03T22:03:38.611 [DEBUG] [Thread-123390] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:03:38.625 [DEBUG] [Thread-123390] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:03:38.625 [INFO] [Thread-123390] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:03:38.634 [DEBUG] [Thread-123390] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:03:38.634 [DEBUG] [Thread-123390] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:03:38.634 [DEBUG] [Thread-123390] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:03:38.634 [DEBUG] [Thread-123390] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:03:38.634 [DEBUG] [Thread-123390] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:03:38.634 [DEBUG] [Thread-123390] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:03:38.635 [DEBUG] [Thread-123390] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:03:38.635 [DEBUG] [Thread-123390] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:03:38.635 [DEBUG] [Thread-123390] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:03:38.635 [DEBUG] [Thread-123390] [transport.py] [_log()] client lang: <none>
2025-11-03T22:03:38.635 [DEBUG] [Thread-123390] [transport.py] [_log()] server lang: <none>
2025-11-03T22:03:38.635 [DEBUG] [Thread-123390] [transport.py] [_log()] kex follows: False
2025-11-03T22:03:38.635 [DEBUG] [Thread-123390] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:03:38.635 [DEBUG] [Thread-123390] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:03:38.635 [DEBUG] [Thread-123390] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:03:38.637 [DEBUG] [Thread-123390] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:03:38.638 [DEBUG] [Thread-123390] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:03:38.638 [DEBUG] [Thread-123390] [transport.py] [_log()] Compression: none
2025-11-03T22:03:38.638 [DEBUG] [Thread-123390] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:03:38.693 [DEBUG] [Thread-123390] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:03:38.693 [DEBUG] [Thread-123390] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:03:38.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:03:38.694 [DEBUG] [Thread-123390] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:03:38.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:03:38.753 [DEBUG] [Thread-123390] [transport.py] [_log()] userauth is OK
2025-11-03T22:03:38.753 [DEBUG] [Thread-123390] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:03:38.754 [DEBUG] [Thread-123390] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:03:38.754 [DEBUG] [Thread-123390] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:03:38.754 [DEBUG] [Thread-123390] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:03:38.772 [INFO] [Thread-123390] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:03:38.773 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:03:38.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:03:39.600 [DEBUG] [Thread-123390] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:03:39.601 [DEBUG] [Thread-123390] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:03:39.650 [DEBUG] [Thread-123390] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:03:39.650 [DEBUG] [Thread-123390] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:03:39.661 [DEBUG] [Thread-123390] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:03:39.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:03:39.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:03:39.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:03:39.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:03:39.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:03:39.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:03:39.705 [DEBUG] [Thread-123390] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:03:42.643 [DEBUG] [Thread-123392 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:03:46.186 [DEBUG] [Thread-123393 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:03:48.883 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:03:48.886 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:04:01.233 [DEBUG] [Thread-123394 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:04:09.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:04:09.718 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:04:09.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:04:11.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 3, 44), 30.53, 11.78, 0.0, 17.08, 19.29, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:04:11.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:03:44
2025-11-03T22:04:11.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:04:11.452 [DEBUG] [Thread-123395] [transport.py] [_log()] starting thread (client mode): 0xeda1db0
2025-11-03T22:04:11.454 [DEBUG] [Thread-123395] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:04:11.470 [DEBUG] [Thread-123395] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:04:11.471 [INFO] [Thread-123395] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:04:11.472 [DEBUG] [Thread-123395] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:04:11.473 [DEBUG] [Thread-123395] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:04:11.473 [DEBUG] [Thread-123395] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:04:11.473 [DEBUG] [Thread-123395] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:04:11.473 [DEBUG] [Thread-123395] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:04:11.473 [DEBUG] [Thread-123395] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:04:11.473 [DEBUG] [Thread-123395] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:04:11.473 [DEBUG] [Thread-123395] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:04:11.473 [DEBUG] [Thread-123395] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:04:11.473 [DEBUG] [Thread-123395] [transport.py] [_log()] client lang: <none>
2025-11-03T22:04:11.473 [DEBUG] [Thread-123395] [transport.py] [_log()] server lang: <none>
2025-11-03T22:04:11.473 [DEBUG] [Thread-123395] [transport.py] [_log()] kex follows: False
2025-11-03T22:04:11.473 [DEBUG] [Thread-123395] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:04:11.473 [DEBUG] [Thread-123395] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:04:11.473 [DEBUG] [Thread-123395] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:04:11.474 [DEBUG] [Thread-123395] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:04:11.474 [DEBUG] [Thread-123395] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:04:11.474 [DEBUG] [Thread-123395] [transport.py] [_log()] Compression: none
2025-11-03T22:04:11.474 [DEBUG] [Thread-123395] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:04:11.504 [DEBUG] [Thread-123395] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:04:11.504 [DEBUG] [Thread-123395] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:04:11.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:04:11.505 [DEBUG] [Thread-123395] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:04:11.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:04:11.507 [DEBUG] [Thread-123395] [transport.py] [_log()] userauth is OK
2025-11-03T22:04:11.507 [DEBUG] [Thread-123395] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:04:11.507 [DEBUG] [Thread-123395] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:04:11.507 [DEBUG] [Thread-123395] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:04:11.507 [DEBUG] [Thread-123395] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:04:11.525 [INFO] [Thread-123395] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:04:11.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:04:12.178 [DEBUG] [Thread-123395] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:04:12.180 [DEBUG] [Thread-123395] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:04:12.182 [DEBUG] [Thread-123395] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:04:12.218 [DEBUG] [Thread-123395] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:04:12.218 [DEBUG] [Thread-123395] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:04:12.222 [DEBUG] [Thread-123395] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:04:12.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:04:12.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:04:12.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:04:12.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:04:12.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:04:12.244 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:04:12.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:04:12.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:04:12.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:04:12.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.835864 -999.00  +19.50  24.13     16   -6.20 1 1 1 1 1     0    0 24.23 -56.21 ZNESW 19.6 24.1 301.6 27.0 19.3 -26.0 19.2 -25.2 19.0 -24.8 19.3 -25.8
2025-11-03T22:04:12.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:04:12.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:04:12.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.835864
2025-11-03T22:04:12.252 [DEBUG] [Thread-123395] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:04:12.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:04:12.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:04:12.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:04:12.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:04:12.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:04:12.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:03:44', tmtdew=30.53, humidity=11.78, cloud=0.0, wind=17.08, temperature=19.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:03:45', seeing=1.27, atlas_timestamp='2025-11-03T20:03:38.650', atlas_cloud=1, atlas_rain=1, zp_data=[0.03074999999999939, 0.07624999999999993, 0.004250000000000753, 0.030999999999998806, 0.058499999999998664, 0.09975000000000023, -0.023999999999999133, -0.004749999999999588, 0.04849999999999888, 0.027499999999999858, 0.12375000000000114, 0.12199999999999989, 0.1504999999999992, 0.06274999999999942, -0.14800000000000146, -1.0790000000000006, 0.062249999999998806, 0.0754999999999999, 0.20849999999999902, 0.11324999999999896, 0.2054999999999989, 0.025749999999998607, -0.23874999999999957, -0.12925000000000075, 0.1120000000000001, 0.19500000000000028, 0.18475000000000108, 0.23150000000000048, 0.17900000000000027, 0.17700000000000138, 0.16900000000000048, -0.049999999999998934, 0.17474999999999952], zp_timestamp='2025-11-03T20:01:00')
2025-11-03T22:04:12.375 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:04:12.387 [DEBUG] [Thread-123398] [transport.py] [_log()] starting thread (client mode): 0x1179a320
2025-11-03T22:04:12.387 [DEBUG] [Thread-123398] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:04:12.402 [DEBUG] [Thread-123398] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:04:12.402 [INFO] [Thread-123398] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:04:12.410 [DEBUG] [Thread-123398] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:04:12.410 [DEBUG] [Thread-123398] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:04:12.410 [DEBUG] [Thread-123398] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:04:12.410 [DEBUG] [Thread-123398] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:04:12.410 [DEBUG] [Thread-123398] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:04:12.410 [DEBUG] [Thread-123398] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:04:12.410 [DEBUG] [Thread-123398] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:04:12.410 [DEBUG] [Thread-123398] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:04:12.410 [DEBUG] [Thread-123398] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:04:12.410 [DEBUG] [Thread-123398] [transport.py] [_log()] client lang: <none>
2025-11-03T22:04:12.410 [DEBUG] [Thread-123398] [transport.py] [_log()] server lang: <none>
2025-11-03T22:04:12.410 [DEBUG] [Thread-123398] [transport.py] [_log()] kex follows: False
2025-11-03T22:04:12.410 [DEBUG] [Thread-123398] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:04:12.410 [DEBUG] [Thread-123398] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:04:12.410 [DEBUG] [Thread-123398] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:04:12.410 [DEBUG] [Thread-123398] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:04:12.412 [DEBUG] [Thread-123398] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:04:12.412 [DEBUG] [Thread-123398] [transport.py] [_log()] Compression: none
2025-11-03T22:04:12.412 [DEBUG] [Thread-123398] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:04:12.467 [DEBUG] [Thread-123398] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:04:12.467 [DEBUG] [Thread-123398] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:04:12.467 [DEBUG] [Thread-123398] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:04:12.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:04:12.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:04:12.525 [DEBUG] [Thread-123398] [transport.py] [_log()] userauth is OK
2025-11-03T22:04:12.525 [DEBUG] [Thread-123398] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:04:12.525 [DEBUG] [Thread-123398] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:04:12.525 [DEBUG] [Thread-123398] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:04:12.525 [DEBUG] [Thread-123398] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:04:12.540 [INFO] [Thread-123398] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:04:12.540 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:04:12.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:04:13.370 [DEBUG] [Thread-123398] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:04:13.370 [DEBUG] [Thread-123398] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:04:13.419 [DEBUG] [Thread-123398] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:04:13.419 [DEBUG] [Thread-123398] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:04:13.428 [DEBUG] [Thread-123398] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:04:13.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:04:13.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:04:13.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:04:13.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:04:13.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:04:13.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:04:13.459 [DEBUG] [Thread-123398] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:04:16.262 [DEBUG] [Thread-123400 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:04:31.316 [DEBUG] [Thread-123401 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:04:42.814 [DEBUG] [Thread-123402 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:04:43.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:04:43.482 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:04:43.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:04:44.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 4, 16), 30.53, 11.77, 0.0, 17.29, 19.21, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:04:44.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:04:16
2025-11-03T22:04:44.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:04:44.669 [DEBUG] [Thread-123403] [transport.py] [_log()] starting thread (client mode): 0x117610c0
2025-11-03T22:04:44.669 [DEBUG] [Thread-123403] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:04:44.685 [DEBUG] [Thread-123403] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:04:44.685 [INFO] [Thread-123403] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:04:44.689 [DEBUG] [Thread-123403] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:04:44.689 [DEBUG] [Thread-123403] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:04:44.689 [DEBUG] [Thread-123403] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:04:44.689 [DEBUG] [Thread-123403] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:04:44.689 [DEBUG] [Thread-123403] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:04:44.689 [DEBUG] [Thread-123403] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:04:44.689 [DEBUG] [Thread-123403] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:04:44.689 [DEBUG] [Thread-123403] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:04:44.689 [DEBUG] [Thread-123403] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:04:44.689 [DEBUG] [Thread-123403] [transport.py] [_log()] client lang: <none>
2025-11-03T22:04:44.689 [DEBUG] [Thread-123403] [transport.py] [_log()] server lang: <none>
2025-11-03T22:04:44.689 [DEBUG] [Thread-123403] [transport.py] [_log()] kex follows: False
2025-11-03T22:04:44.689 [DEBUG] [Thread-123403] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:04:44.689 [DEBUG] [Thread-123403] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:04:44.689 [DEBUG] [Thread-123403] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:04:44.689 [DEBUG] [Thread-123403] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:04:44.689 [DEBUG] [Thread-123403] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:04:44.689 [DEBUG] [Thread-123403] [transport.py] [_log()] Compression: none
2025-11-03T22:04:44.689 [DEBUG] [Thread-123403] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:04:44.704 [DEBUG] [Thread-123403] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:04:44.704 [DEBUG] [Thread-123403] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:04:44.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:04:44.705 [DEBUG] [Thread-123403] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:04:44.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:04:44.706 [DEBUG] [Thread-123403] [transport.py] [_log()] userauth is OK
2025-11-03T22:04:44.706 [DEBUG] [Thread-123403] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:04:44.706 [DEBUG] [Thread-123403] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:04:44.706 [DEBUG] [Thread-123403] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:04:44.706 [DEBUG] [Thread-123403] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:04:44.721 [INFO] [Thread-123403] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:04:44.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:04:45.326 [DEBUG] [Thread-123403] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:04:45.327 [DEBUG] [Thread-123403] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:04:45.327 [DEBUG] [Thread-123403] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:04:45.368 [DEBUG] [Thread-123403] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:04:45.368 [DEBUG] [Thread-123403] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:04:45.370 [DEBUG] [Thread-123403] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:04:45.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:04:45.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:04:45.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:04:45.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:04:45.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:04:45.389 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:04:45.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:04:45.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:04:45.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:04:45.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.836211 -999.00  +19.40  18.27     16   -6.30 1 1 1 1 1     0    0 24.11 -53.69 ZNESW 18.7 18.3 297.4 24.5 19.3 -26.2 19.2 -25.1 19.1 -24.5 19.3 -25.8
2025-11-03T22:04:45.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:04:45.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:04:45.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.836211
2025-11-03T22:04:45.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:04:45.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:04:45.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:04:45.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:04:45.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:04:45.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:04:16', tmtdew=30.53, humidity=11.77, cloud=0.0, wind=17.29, temperature=19.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:04:17', seeing=1.27, atlas_timestamp='2025-11-03T20:04:08.630', atlas_cloud=1, atlas_rain=1, zp_data=[0.03074999999999939, 0.07624999999999993, 0.004250000000000753, 0.030999999999998806, 0.058499999999998664, 0.09975000000000023, -0.023999999999999133, -0.004749999999999588, 0.04849999999999888, 0.027499999999999858, 0.12375000000000114, 0.12199999999999989, 0.1504999999999992, 0.06274999999999942, -0.14800000000000146, -1.0790000000000006, 0.062249999999998806, 0.0754999999999999, 0.20849999999999902, 0.11324999999999896, 0.2054999999999989, 0.025749999999998607, -0.23874999999999957, -0.12925000000000075, 0.1120000000000001, 0.19500000000000028, 0.18475000000000108, 0.23150000000000048, 0.17900000000000027, 0.17700000000000138, 0.16900000000000048, -0.049999999999998934, 0.17474999999999952], zp_timestamp='2025-11-03T20:01:00')
2025-11-03T22:04:45.391 [DEBUG] [Thread-123403] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:04:45.467 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:04:45.481 [DEBUG] [Thread-123406] [transport.py] [_log()] starting thread (client mode): 0xed07220
2025-11-03T22:04:45.481 [DEBUG] [Thread-123406] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:04:45.499 [DEBUG] [Thread-123406] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:04:45.499 [INFO] [Thread-123406] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:04:45.510 [DEBUG] [Thread-123406] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:04:45.510 [DEBUG] [Thread-123406] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:04:45.510 [DEBUG] [Thread-123406] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:04:45.510 [DEBUG] [Thread-123406] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:04:45.510 [DEBUG] [Thread-123406] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:04:45.510 [DEBUG] [Thread-123406] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:04:45.510 [DEBUG] [Thread-123406] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:04:45.510 [DEBUG] [Thread-123406] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:04:45.510 [DEBUG] [Thread-123406] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:04:45.510 [DEBUG] [Thread-123406] [transport.py] [_log()] client lang: <none>
2025-11-03T22:04:45.510 [DEBUG] [Thread-123406] [transport.py] [_log()] server lang: <none>
2025-11-03T22:04:45.510 [DEBUG] [Thread-123406] [transport.py] [_log()] kex follows: False
2025-11-03T22:04:45.510 [DEBUG] [Thread-123406] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:04:45.510 [DEBUG] [Thread-123406] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:04:45.510 [DEBUG] [Thread-123406] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:04:45.510 [DEBUG] [Thread-123406] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:04:45.510 [DEBUG] [Thread-123406] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:04:45.510 [DEBUG] [Thread-123406] [transport.py] [_log()] Compression: none
2025-11-03T22:04:45.510 [DEBUG] [Thread-123406] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:04:45.565 [DEBUG] [Thread-123406] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:04:45.565 [DEBUG] [Thread-123406] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:04:45.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:04:45.566 [DEBUG] [Thread-123406] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:04:45.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:04:45.632 [DEBUG] [Thread-123406] [transport.py] [_log()] userauth is OK
2025-11-03T22:04:45.632 [DEBUG] [Thread-123406] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:04:45.632 [DEBUG] [Thread-123406] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:04:45.633 [DEBUG] [Thread-123406] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:04:45.633 [DEBUG] [Thread-123406] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:04:45.652 [INFO] [Thread-123406] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:04:45.652 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:04:45.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:04:46.350 [DEBUG] [Thread-123408 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:04:46.525 [DEBUG] [Thread-123406] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:04:46.525 [DEBUG] [Thread-123406] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:04:46.579 [DEBUG] [Thread-123406] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:04:46.579 [DEBUG] [Thread-123406] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:04:46.589 [DEBUG] [Thread-123406] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:04:46.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:04:46.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:04:46.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:04:46.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:04:46.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:04:46.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:04:46.622 [DEBUG] [Thread-123406] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:04:49.088 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:04:49.089 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:05:01.391 [DEBUG] [Thread-123409 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:05:16.440 [DEBUG] [Thread-123410 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:05:16.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:05:16.652 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:05:16.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:05:17.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 4, 53), 30.27, 11.91, 0.0, 18.28, 19.16, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:05:17.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:04:53
2025-11-03T22:05:17.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:05:17.745 [DEBUG] [Thread-123411] [transport.py] [_log()] starting thread (client mode): 0x1174f250
2025-11-03T22:05:17.746 [DEBUG] [Thread-123411] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:05:17.762 [DEBUG] [Thread-123411] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:05:17.763 [INFO] [Thread-123411] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:05:17.766 [DEBUG] [Thread-123411] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:05:17.766 [DEBUG] [Thread-123411] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:05:17.766 [DEBUG] [Thread-123411] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:05:17.766 [DEBUG] [Thread-123411] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:05:17.766 [DEBUG] [Thread-123411] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:05:17.766 [DEBUG] [Thread-123411] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:05:17.766 [DEBUG] [Thread-123411] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:05:17.766 [DEBUG] [Thread-123411] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:05:17.766 [DEBUG] [Thread-123411] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:05:17.766 [DEBUG] [Thread-123411] [transport.py] [_log()] client lang: <none>
2025-11-03T22:05:17.766 [DEBUG] [Thread-123411] [transport.py] [_log()] server lang: <none>
2025-11-03T22:05:17.767 [DEBUG] [Thread-123411] [transport.py] [_log()] kex follows: False
2025-11-03T22:05:17.767 [DEBUG] [Thread-123411] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:05:17.767 [DEBUG] [Thread-123411] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:05:17.767 [DEBUG] [Thread-123411] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:05:17.767 [DEBUG] [Thread-123411] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:05:17.767 [DEBUG] [Thread-123411] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:05:17.767 [DEBUG] [Thread-123411] [transport.py] [_log()] Compression: none
2025-11-03T22:05:17.767 [DEBUG] [Thread-123411] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:05:17.785 [DEBUG] [Thread-123411] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:05:17.786 [DEBUG] [Thread-123411] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:05:17.787 [DEBUG] [Thread-123411] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:05:17.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:05:17.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:05:17.788 [DEBUG] [Thread-123411] [transport.py] [_log()] userauth is OK
2025-11-03T22:05:17.788 [DEBUG] [Thread-123411] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:05:17.788 [DEBUG] [Thread-123411] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:05:17.788 [DEBUG] [Thread-123411] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:05:17.788 [DEBUG] [Thread-123411] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:05:17.803 [INFO] [Thread-123411] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:05:17.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:05:18.397 [DEBUG] [Thread-123411] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:05:18.398 [DEBUG] [Thread-123411] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:05:18.400 [DEBUG] [Thread-123411] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:05:18.438 [DEBUG] [Thread-123411] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:05:18.438 [DEBUG] [Thread-123411] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:05:18.444 [DEBUG] [Thread-123411] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:05:18.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:05:18.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:05:18.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:05:18.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:05:18.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:05:18.466 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:05:18.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:05:18.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:05:18.469 [DEBUG] [Thread-123411] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:05:18.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:05:18.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.836558 -999.00  +19.40  19.40     17   -6.20 1 1 1 1 1     0    0 23.92 -53.96 ZNESW 20.3 19.4 307.8 26.0 -999.0 -999.0 19.2 -25.0 19.0 -24.5 19.2 -25.8
2025-11-03T22:05:18.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:05:18.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:05:18.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.836558
2025-11-03T22:05:18.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:05:18.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:05:18.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:05:18.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:05:18.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:05:18.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:04:53', tmtdew=30.27, humidity=11.91, cloud=0.0, wind=18.28, temperature=19.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:04:53', seeing=1.25, atlas_timestamp='2025-11-03T20:04:38.611', atlas_cloud=1, atlas_rain=1, zp_data=[0.03074999999999939, 0.07624999999999993, 0.004250000000000753, 0.030999999999998806, 0.058499999999998664, 0.09975000000000023, -0.023999999999999133, -0.004749999999999588, 0.04849999999999888, 0.027499999999999858, 0.12375000000000114, 0.12199999999999989, 0.1504999999999992, 0.06274999999999942, -0.14800000000000146, -1.0790000000000006, 0.062249999999998806, 0.0754999999999999, 0.20849999999999902, 0.11324999999999896, 0.2054999999999989, 0.025749999999998607, -0.23874999999999957, -0.12925000000000075, 0.1120000000000001, 0.19500000000000028, 0.18475000000000108, 0.23150000000000048, 0.17900000000000027, 0.17700000000000138, 0.16900000000000048, -0.049999999999998934, 0.17474999999999952], zp_timestamp='2025-11-03T20:01:00')
2025-11-03T22:05:18.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:05:18.577 [DEBUG] [Thread-123414] [transport.py] [_log()] starting thread (client mode): 0xed42290
2025-11-03T22:05:18.577 [DEBUG] [Thread-123414] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:05:18.593 [DEBUG] [Thread-123414] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:05:18.593 [INFO] [Thread-123414] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:05:18.604 [DEBUG] [Thread-123414] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:05:18.604 [DEBUG] [Thread-123414] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:05:18.604 [DEBUG] [Thread-123414] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:05:18.604 [DEBUG] [Thread-123414] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:05:18.604 [DEBUG] [Thread-123414] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:05:18.604 [DEBUG] [Thread-123414] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:05:18.604 [DEBUG] [Thread-123414] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:05:18.604 [DEBUG] [Thread-123414] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:05:18.604 [DEBUG] [Thread-123414] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:05:18.605 [DEBUG] [Thread-123414] [transport.py] [_log()] client lang: <none>
2025-11-03T22:05:18.605 [DEBUG] [Thread-123414] [transport.py] [_log()] server lang: <none>
2025-11-03T22:05:18.605 [DEBUG] [Thread-123414] [transport.py] [_log()] kex follows: False
2025-11-03T22:05:18.605 [DEBUG] [Thread-123414] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:05:18.605 [DEBUG] [Thread-123414] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:05:18.605 [DEBUG] [Thread-123414] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:05:18.605 [DEBUG] [Thread-123414] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:05:18.605 [DEBUG] [Thread-123414] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:05:18.605 [DEBUG] [Thread-123414] [transport.py] [_log()] Compression: none
2025-11-03T22:05:18.605 [DEBUG] [Thread-123414] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:05:18.662 [DEBUG] [Thread-123414] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:05:18.662 [DEBUG] [Thread-123414] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:05:18.663 [DEBUG] [Thread-123414] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:05:18.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:05:18.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:05:18.718 [DEBUG] [Thread-123414] [transport.py] [_log()] userauth is OK
2025-11-03T22:05:18.718 [DEBUG] [Thread-123414] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:05:18.718 [DEBUG] [Thread-123414] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:05:18.718 [DEBUG] [Thread-123414] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:05:18.718 [DEBUG] [Thread-123414] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:05:18.737 [INFO] [Thread-123414] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:05:18.738 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:05:18.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:05:19.553 [DEBUG] [Thread-123414] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:05:19.553 [DEBUG] [Thread-123414] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:05:19.600 [DEBUG] [Thread-123414] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:05:19.601 [DEBUG] [Thread-123414] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:05:19.609 [DEBUG] [Thread-123414] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:05:19.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:05:19.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:05:19.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:05:19.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:05:19.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:05:19.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:05:19.645 [DEBUG] [Thread-123414] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:05:20.046 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:05:28.307 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:05:31.481 [DEBUG] [Thread-123416 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:05:32.452 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:05:44.147 [DEBUG] [Thread-123417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:05:46.553 [DEBUG] [Thread-123418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:05:49.292 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:05:49.293 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:05:49.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:05:49.653 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:05:49.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:05:50.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 5, 25), 30.28, 11.91, 0.0, 17.8, 19.23, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:05:50.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:05:25
2025-11-03T22:05:50.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:05:50.754 [DEBUG] [Thread-123419] [transport.py] [_log()] starting thread (client mode): 0xed12dd0
2025-11-03T22:05:50.754 [DEBUG] [Thread-123419] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:05:50.771 [DEBUG] [Thread-123419] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:05:50.771 [INFO] [Thread-123419] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:05:50.773 [DEBUG] [Thread-123419] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:05:50.773 [DEBUG] [Thread-123419] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:05:50.774 [DEBUG] [Thread-123419] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:05:50.774 [DEBUG] [Thread-123419] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:05:50.774 [DEBUG] [Thread-123419] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:05:50.774 [DEBUG] [Thread-123419] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:05:50.774 [DEBUG] [Thread-123419] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:05:50.774 [DEBUG] [Thread-123419] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:05:50.774 [DEBUG] [Thread-123419] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:05:50.774 [DEBUG] [Thread-123419] [transport.py] [_log()] client lang: <none>
2025-11-03T22:05:50.774 [DEBUG] [Thread-123419] [transport.py] [_log()] server lang: <none>
2025-11-03T22:05:50.774 [DEBUG] [Thread-123419] [transport.py] [_log()] kex follows: False
2025-11-03T22:05:50.774 [DEBUG] [Thread-123419] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:05:50.774 [DEBUG] [Thread-123419] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:05:50.774 [DEBUG] [Thread-123419] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:05:50.774 [DEBUG] [Thread-123419] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:05:50.774 [DEBUG] [Thread-123419] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:05:50.774 [DEBUG] [Thread-123419] [transport.py] [_log()] Compression: none
2025-11-03T22:05:50.775 [DEBUG] [Thread-123419] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:05:50.788 [DEBUG] [Thread-123419] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:05:50.788 [DEBUG] [Thread-123419] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:05:50.789 [DEBUG] [Thread-123419] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:05:50.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:05:50.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:05:50.793 [DEBUG] [Thread-123419] [transport.py] [_log()] userauth is OK
2025-11-03T22:05:50.793 [DEBUG] [Thread-123419] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:05:50.793 [DEBUG] [Thread-123419] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:05:50.793 [DEBUG] [Thread-123419] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:05:50.793 [DEBUG] [Thread-123419] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:05:50.812 [INFO] [Thread-123419] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:05:50.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:05:51.407 [DEBUG] [Thread-123419] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:05:51.407 [DEBUG] [Thread-123419] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:05:51.408 [DEBUG] [Thread-123419] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:05:51.440 [DEBUG] [Thread-123419] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:05:51.440 [DEBUG] [Thread-123419] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:05:51.442 [DEBUG] [Thread-123419] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:05:51.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:05:51.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:05:51.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:05:51.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:05:51.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:05:51.471 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:05:51.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:05:51.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:05:51.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:05:51.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.837253 -999.00  +19.50  17.76     16   -6.20 1 1 1 1 1     0    0 24.35 -52.03 ZNESW 20.9 17.8 298.0 25.9 19.3 -26.2 19.2 -25.0 19.1 -24.8 19.3 -25.8
2025-11-03T22:05:51.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:05:51.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:05:51.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.837253
2025-11-03T22:05:51.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:05:51.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:05:51.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:05:51.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:05:51.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:05:51.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:05:25', tmtdew=30.28, humidity=11.91, cloud=0.0, wind=17.8, temperature=19.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:05:26', seeing=1.25, atlas_timestamp='2025-11-03T20:05:38.659', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.07624999999999993, 0.052250000000000796, -0.05600000000000094, 0.053000000000000824, 0.09375, -0.06949999999999967, -0.01875000000000071, 0.017499999999998295, 0.06350000000000122, 0.1432500000000001, 0.057000000000000384, 0.14000000000000057, 0.08225000000000016, -0.1280000000000001, -0.798, 0.09324999999999939, 0.10199999999999854, 0.1789999999999985, 0.12374999999999758, 0.20349999999999824, 0.010749999999998039, -0.06925000000000026, -0.16075000000000017, 0.036999999999999034, 0.1399999999999988, 0.24324999999999974, 0.28850000000000087, 0.21799999999999997, 0.15750000000000242, 0.16500000000000092, 0.08200000000000074, 0.1587499999999995], zp_timestamp='2025-11-03T20:04:00')
2025-11-03T22:05:51.479 [DEBUG] [Thread-123419] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:05:51.551 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:05:51.564 [DEBUG] [Thread-123422] [transport.py] [_log()] starting thread (client mode): 0xed12a10
2025-11-03T22:05:51.564 [DEBUG] [Thread-123422] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:05:51.579 [DEBUG] [Thread-123422] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:05:51.579 [INFO] [Thread-123422] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:05:51.588 [DEBUG] [Thread-123422] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:05:51.588 [DEBUG] [Thread-123422] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:05:51.588 [DEBUG] [Thread-123422] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:05:51.588 [DEBUG] [Thread-123422] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:05:51.588 [DEBUG] [Thread-123422] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:05:51.588 [DEBUG] [Thread-123422] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:05:51.588 [DEBUG] [Thread-123422] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:05:51.588 [DEBUG] [Thread-123422] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:05:51.588 [DEBUG] [Thread-123422] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:05:51.588 [DEBUG] [Thread-123422] [transport.py] [_log()] client lang: <none>
2025-11-03T22:05:51.588 [DEBUG] [Thread-123422] [transport.py] [_log()] server lang: <none>
2025-11-03T22:05:51.588 [DEBUG] [Thread-123422] [transport.py] [_log()] kex follows: False
2025-11-03T22:05:51.588 [DEBUG] [Thread-123422] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:05:51.589 [DEBUG] [Thread-123422] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:05:51.589 [DEBUG] [Thread-123422] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:05:51.589 [DEBUG] [Thread-123422] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:05:51.589 [DEBUG] [Thread-123422] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:05:51.589 [DEBUG] [Thread-123422] [transport.py] [_log()] Compression: none
2025-11-03T22:05:51.589 [DEBUG] [Thread-123422] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:05:51.647 [DEBUG] [Thread-123422] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:05:51.648 [DEBUG] [Thread-123422] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:05:51.649 [DEBUG] [Thread-123422] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:05:51.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:05:51.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:05:51.707 [DEBUG] [Thread-123422] [transport.py] [_log()] userauth is OK
2025-11-03T22:05:51.707 [DEBUG] [Thread-123422] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:05:51.707 [DEBUG] [Thread-123422] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:05:51.707 [DEBUG] [Thread-123422] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:05:51.708 [DEBUG] [Thread-123422] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:05:51.733 [INFO] [Thread-123422] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:05:51.734 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:05:51.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:05:52.641 [DEBUG] [Thread-123422] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:05:52.642 [DEBUG] [Thread-123422] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:05:52.691 [DEBUG] [Thread-123422] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:05:52.691 [DEBUG] [Thread-123422] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:05:52.700 [DEBUG] [Thread-123422] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:05:52.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:05:52.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:05:52.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:05:52.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:05:52.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:05:52.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:05:52.735 [DEBUG] [Thread-123422] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:06:01.589 [DEBUG] [Thread-123424 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:06:16.637 [DEBUG] [Thread-123425 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:06:22.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:06:22.740 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:06:22.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:06:23.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 5, 58), 30.31, 11.93, 0.0, 17.93, 19.23, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:06:23.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:05:58
2025-11-03T22:06:23.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:06:23.863 [DEBUG] [Thread-123426] [transport.py] [_log()] starting thread (client mode): 0xed06ad0
2025-11-03T22:06:23.863 [DEBUG] [Thread-123426] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:06:23.878 [DEBUG] [Thread-123426] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:06:23.878 [INFO] [Thread-123426] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:06:23.882 [DEBUG] [Thread-123426] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:06:23.882 [DEBUG] [Thread-123426] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:06:23.882 [DEBUG] [Thread-123426] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:06:23.882 [DEBUG] [Thread-123426] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:06:23.882 [DEBUG] [Thread-123426] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:06:23.882 [DEBUG] [Thread-123426] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:06:23.882 [DEBUG] [Thread-123426] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:06:23.882 [DEBUG] [Thread-123426] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:06:23.882 [DEBUG] [Thread-123426] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:06:23.883 [DEBUG] [Thread-123426] [transport.py] [_log()] client lang: <none>
2025-11-03T22:06:23.883 [DEBUG] [Thread-123426] [transport.py] [_log()] server lang: <none>
2025-11-03T22:06:23.883 [DEBUG] [Thread-123426] [transport.py] [_log()] kex follows: False
2025-11-03T22:06:23.883 [DEBUG] [Thread-123426] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:06:23.883 [DEBUG] [Thread-123426] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:06:23.884 [DEBUG] [Thread-123426] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:06:23.884 [DEBUG] [Thread-123426] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:06:23.884 [DEBUG] [Thread-123426] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:06:23.884 [DEBUG] [Thread-123426] [transport.py] [_log()] Compression: none
2025-11-03T22:06:23.885 [DEBUG] [Thread-123426] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:06:23.910 [DEBUG] [Thread-123426] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:06:23.914 [DEBUG] [Thread-123426] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:06:23.915 [DEBUG] [Thread-123426] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:06:23.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:06:23.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:06:23.920 [DEBUG] [Thread-123426] [transport.py] [_log()] userauth is OK
2025-11-03T22:06:23.920 [DEBUG] [Thread-123426] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:06:23.920 [DEBUG] [Thread-123426] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:06:23.920 [DEBUG] [Thread-123426] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:06:23.920 [DEBUG] [Thread-123426] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:06:23.946 [INFO] [Thread-123426] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:06:23.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:06:24.575 [DEBUG] [Thread-123426] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:06:24.576 [DEBUG] [Thread-123426] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:06:24.576 [DEBUG] [Thread-123426] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:06:24.617 [DEBUG] [Thread-123426] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:06:24.618 [DEBUG] [Thread-123426] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:06:24.622 [DEBUG] [Thread-123426] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:06:24.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:06:24.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:06:24.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:06:24.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:06:24.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:06:24.642 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:06:24.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:06:24.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:06:24.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:06:24.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.837253 -999.00  +19.50  17.76     16   -6.20 1 1 1 1 1     0    0 24.35 -52.03 ZNESW 20.9 17.8 298.0 25.9 19.3 -26.2 19.2 -25.0 19.1 -24.8 19.3 -25.8
2025-11-03T22:06:24.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:06:24.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:06:24.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.837253
2025-11-03T22:06:24.649 [DEBUG] [Thread-123426] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:06:24.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:06:24.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:06:24.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:06:24.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:06:24.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:06:24.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:05:58', tmtdew=30.31, humidity=11.93, cloud=0.0, wind=17.93, temperature=19.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:05:58', seeing=1.3, atlas_timestamp='2025-11-03T20:05:38.659', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.07624999999999993, 0.052250000000000796, -0.05600000000000094, 0.053000000000000824, 0.09375, -0.06949999999999967, -0.01875000000000071, 0.017499999999998295, 0.06350000000000122, 0.1432500000000001, 0.057000000000000384, 0.14000000000000057, 0.08225000000000016, -0.1280000000000001, -0.798, 0.09324999999999939, 0.10199999999999854, 0.1789999999999985, 0.12374999999999758, 0.20349999999999824, 0.010749999999998039, -0.06925000000000026, -0.16075000000000017, 0.036999999999999034, 0.1399999999999988, 0.24324999999999974, 0.28850000000000087, 0.21799999999999997, 0.15750000000000242, 0.16500000000000092, 0.08200000000000074, 0.1587499999999995], zp_timestamp='2025-11-03T20:04:00')
2025-11-03T22:06:24.730 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:06:24.744 [DEBUG] [Thread-123429] [transport.py] [_log()] starting thread (client mode): 0xed07eb0
2025-11-03T22:06:24.744 [DEBUG] [Thread-123429] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:06:24.758 [DEBUG] [Thread-123429] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:06:24.758 [INFO] [Thread-123429] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:06:24.766 [DEBUG] [Thread-123429] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:06:24.766 [DEBUG] [Thread-123429] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:06:24.767 [DEBUG] [Thread-123429] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:06:24.767 [DEBUG] [Thread-123429] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:06:24.767 [DEBUG] [Thread-123429] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:06:24.767 [DEBUG] [Thread-123429] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:06:24.767 [DEBUG] [Thread-123429] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:06:24.768 [DEBUG] [Thread-123429] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:06:24.768 [DEBUG] [Thread-123429] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:06:24.768 [DEBUG] [Thread-123429] [transport.py] [_log()] client lang: <none>
2025-11-03T22:06:24.768 [DEBUG] [Thread-123429] [transport.py] [_log()] server lang: <none>
2025-11-03T22:06:24.768 [DEBUG] [Thread-123429] [transport.py] [_log()] kex follows: False
2025-11-03T22:06:24.768 [DEBUG] [Thread-123429] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:06:24.768 [DEBUG] [Thread-123429] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:06:24.768 [DEBUG] [Thread-123429] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:06:24.768 [DEBUG] [Thread-123429] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:06:24.768 [DEBUG] [Thread-123429] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:06:24.768 [DEBUG] [Thread-123429] [transport.py] [_log()] Compression: none
2025-11-03T22:06:24.768 [DEBUG] [Thread-123429] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:06:24.835 [DEBUG] [Thread-123429] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:06:24.835 [DEBUG] [Thread-123429] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:06:24.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:06:24.837 [DEBUG] [Thread-123429] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:06:24.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:06:24.891 [DEBUG] [Thread-123429] [transport.py] [_log()] userauth is OK
2025-11-03T22:06:24.891 [DEBUG] [Thread-123429] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:06:24.892 [DEBUG] [Thread-123429] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:06:24.892 [DEBUG] [Thread-123429] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:06:24.892 [DEBUG] [Thread-123429] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:06:24.911 [INFO] [Thread-123429] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:06:24.911 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:06:24.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:06:25.757 [DEBUG] [Thread-123429] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:06:25.757 [DEBUG] [Thread-123429] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:06:25.806 [DEBUG] [Thread-123429] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:06:25.806 [DEBUG] [Thread-123429] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:06:25.814 [DEBUG] [Thread-123429] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:06:25.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:06:25.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:06:25.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:06:25.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:06:25.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:06:25.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:06:25.857 [DEBUG] [Thread-123429] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:06:31.665 [DEBUG] [Thread-123431 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:06:44.433 [DEBUG] [Thread-123432 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:06:46.701 [DEBUG] [Thread-123433 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:06:49.496 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:06:49.498 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:06:55.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:06:55.880 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:06:55.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:06:56.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 6, 30), 30.29, 11.96, 0.0, 18.16, 19.28, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:06:56.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:06:30
2025-11-03T22:06:56.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:06:56.957 [DEBUG] [Thread-123434] [transport.py] [_log()] starting thread (client mode): 0xed13e80
2025-11-03T22:06:56.957 [DEBUG] [Thread-123434] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:06:56.977 [DEBUG] [Thread-123434] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:06:56.978 [INFO] [Thread-123434] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:06:56.988 [DEBUG] [Thread-123434] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:06:56.988 [DEBUG] [Thread-123434] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:06:56.988 [DEBUG] [Thread-123434] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:06:56.988 [DEBUG] [Thread-123434] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:06:56.988 [DEBUG] [Thread-123434] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:06:56.988 [DEBUG] [Thread-123434] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:06:56.988 [DEBUG] [Thread-123434] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:06:56.988 [DEBUG] [Thread-123434] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:06:56.988 [DEBUG] [Thread-123434] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:06:56.988 [DEBUG] [Thread-123434] [transport.py] [_log()] client lang: <none>
2025-11-03T22:06:56.988 [DEBUG] [Thread-123434] [transport.py] [_log()] server lang: <none>
2025-11-03T22:06:56.988 [DEBUG] [Thread-123434] [transport.py] [_log()] kex follows: False
2025-11-03T22:06:56.988 [DEBUG] [Thread-123434] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:06:56.989 [DEBUG] [Thread-123434] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:06:56.989 [DEBUG] [Thread-123434] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:06:56.989 [DEBUG] [Thread-123434] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:06:56.989 [DEBUG] [Thread-123434] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:06:56.989 [DEBUG] [Thread-123434] [transport.py] [_log()] Compression: none
2025-11-03T22:06:56.989 [DEBUG] [Thread-123434] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:06:57.007 [DEBUG] [Thread-123434] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:06:57.008 [DEBUG] [Thread-123434] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:06:57.009 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:06:57.009 [DEBUG] [Thread-123434] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:06:57.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:06:57.011 [DEBUG] [Thread-123434] [transport.py] [_log()] userauth is OK
2025-11-03T22:06:57.012 [DEBUG] [Thread-123434] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:06:57.012 [DEBUG] [Thread-123434] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:06:57.012 [DEBUG] [Thread-123434] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:06:57.012 [DEBUG] [Thread-123434] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:06:57.037 [INFO] [Thread-123434] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:06:57.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:06:57.702 [DEBUG] [Thread-123434] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:06:57.703 [DEBUG] [Thread-123434] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:06:57.703 [DEBUG] [Thread-123434] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:06:57.744 [DEBUG] [Thread-123434] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:06:57.744 [DEBUG] [Thread-123434] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:06:57.748 [DEBUG] [Thread-123434] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:06:57.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:06:57.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:06:57.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:06:57.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:06:57.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:06:57.779 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:06:57.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:06:57.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:06:57.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:06:57.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.837600 -999.00  +19.50  18.80     17   -6.10 1 1 1 1 1     0    0 24.21 -48.13 ZNESW 21.5 18.8 300.2 23.7 19.3 -26.1 19.2 -25.1 19.1 -25.0 19.3 -25.8
2025-11-03T22:06:57.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:06:57.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:06:57.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.837600
2025-11-03T22:06:57.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:06:57.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:06:57.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:06:57.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:06:57.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:06:57.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:06:30', tmtdew=30.29, humidity=11.96, cloud=0.0, wind=18.16, temperature=19.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:06:31', seeing=1.3, atlas_timestamp='2025-11-03T20:06:08.640', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.07624999999999993, 0.052250000000000796, -0.05600000000000094, 0.053000000000000824, 0.09375, -0.06949999999999967, -0.01875000000000071, 0.017499999999998295, 0.06350000000000122, 0.1432500000000001, 0.057000000000000384, 0.14000000000000057, 0.08225000000000016, -0.1280000000000001, -0.798, 0.09324999999999939, 0.10199999999999854, 0.1789999999999985, 0.12374999999999758, 0.20349999999999824, 0.010749999999998039, -0.06925000000000026, -0.16075000000000017, 0.036999999999999034, 0.1399999999999988, 0.24324999999999974, 0.28850000000000087, 0.21799999999999997, 0.15750000000000242, 0.16500000000000092, 0.08200000000000074, 0.1587499999999995], zp_timestamp='2025-11-03T20:04:00')
2025-11-03T22:06:57.782 [DEBUG] [Thread-123434] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:06:57.873 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:06:57.886 [DEBUG] [Thread-123437] [transport.py] [_log()] starting thread (client mode): 0x117992a0
2025-11-03T22:06:57.886 [DEBUG] [Thread-123437] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:06:57.900 [DEBUG] [Thread-123437] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:06:57.900 [INFO] [Thread-123437] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:06:57.910 [DEBUG] [Thread-123437] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:06:57.911 [DEBUG] [Thread-123437] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:06:57.911 [DEBUG] [Thread-123437] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:06:57.911 [DEBUG] [Thread-123437] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:06:57.911 [DEBUG] [Thread-123437] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:06:57.911 [DEBUG] [Thread-123437] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:06:57.911 [DEBUG] [Thread-123437] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:06:57.911 [DEBUG] [Thread-123437] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:06:57.911 [DEBUG] [Thread-123437] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:06:57.911 [DEBUG] [Thread-123437] [transport.py] [_log()] client lang: <none>
2025-11-03T22:06:57.911 [DEBUG] [Thread-123437] [transport.py] [_log()] server lang: <none>
2025-11-03T22:06:57.911 [DEBUG] [Thread-123437] [transport.py] [_log()] kex follows: False
2025-11-03T22:06:57.911 [DEBUG] [Thread-123437] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:06:57.911 [DEBUG] [Thread-123437] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:06:57.911 [DEBUG] [Thread-123437] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:06:57.911 [DEBUG] [Thread-123437] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:06:57.911 [DEBUG] [Thread-123437] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:06:57.911 [DEBUG] [Thread-123437] [transport.py] [_log()] Compression: none
2025-11-03T22:06:57.911 [DEBUG] [Thread-123437] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:06:57.975 [DEBUG] [Thread-123437] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:06:57.976 [DEBUG] [Thread-123437] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:06:57.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:06:57.977 [DEBUG] [Thread-123437] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:06:57.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:06:58.035 [DEBUG] [Thread-123437] [transport.py] [_log()] userauth is OK
2025-11-03T22:06:58.036 [DEBUG] [Thread-123437] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:06:58.036 [DEBUG] [Thread-123437] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:06:58.036 [DEBUG] [Thread-123437] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:06:58.036 [DEBUG] [Thread-123437] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:06:58.055 [INFO] [Thread-123437] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:06:58.055 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:06:58.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:06:58.922 [DEBUG] [Thread-123437] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:06:58.922 [DEBUG] [Thread-123437] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:06:58.969 [DEBUG] [Thread-123437] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:06:58.969 [DEBUG] [Thread-123437] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:06:58.977 [DEBUG] [Thread-123437] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:06:58.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:06:58.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:06:58.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:06:59.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:06:59.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:06:59.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:06:59.009 [DEBUG] [Thread-123437] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:07:01.733 [DEBUG] [Thread-123439 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:07:16.785 [DEBUG] [Thread-123440 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:07:29.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:07:29.031 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:07:29.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:07:29.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 7, 3), 30.33, 11.91, 0.0, 17.66, 19.23, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:07:29.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:07:03
2025-11-03T22:07:29.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:07:30.021 [DEBUG] [Thread-123441] [transport.py] [_log()] starting thread (client mode): 0xed437c0
2025-11-03T22:07:30.021 [DEBUG] [Thread-123441] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:07:30.041 [DEBUG] [Thread-123441] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:07:30.041 [INFO] [Thread-123441] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:07:30.044 [DEBUG] [Thread-123441] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:07:30.044 [DEBUG] [Thread-123441] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:07:30.044 [DEBUG] [Thread-123441] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:07:30.044 [DEBUG] [Thread-123441] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:07:30.044 [DEBUG] [Thread-123441] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:07:30.044 [DEBUG] [Thread-123441] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:07:30.044 [DEBUG] [Thread-123441] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:07:30.044 [DEBUG] [Thread-123441] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:07:30.044 [DEBUG] [Thread-123441] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:07:30.044 [DEBUG] [Thread-123441] [transport.py] [_log()] client lang: <none>
2025-11-03T22:07:30.044 [DEBUG] [Thread-123441] [transport.py] [_log()] server lang: <none>
2025-11-03T22:07:30.044 [DEBUG] [Thread-123441] [transport.py] [_log()] kex follows: False
2025-11-03T22:07:30.044 [DEBUG] [Thread-123441] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:07:30.044 [DEBUG] [Thread-123441] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:07:30.044 [DEBUG] [Thread-123441] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:07:30.044 [DEBUG] [Thread-123441] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:07:30.044 [DEBUG] [Thread-123441] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:07:30.044 [DEBUG] [Thread-123441] [transport.py] [_log()] Compression: none
2025-11-03T22:07:30.044 [DEBUG] [Thread-123441] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:07:30.060 [DEBUG] [Thread-123441] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:07:30.060 [DEBUG] [Thread-123441] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:07:30.060 [DEBUG] [Thread-123441] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:07:30.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:07:30.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:07:30.102 [DEBUG] [Thread-123441] [transport.py] [_log()] userauth is OK
2025-11-03T22:07:30.102 [DEBUG] [Thread-123441] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:07:30.102 [DEBUG] [Thread-123441] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:07:30.102 [DEBUG] [Thread-123441] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:07:30.102 [DEBUG] [Thread-123441] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:07:30.117 [INFO] [Thread-123441] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:07:30.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:07:30.781 [DEBUG] [Thread-123441] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:07:30.781 [DEBUG] [Thread-123441] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:07:30.781 [DEBUG] [Thread-123441] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:07:30.823 [DEBUG] [Thread-123441] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:07:30.823 [DEBUG] [Thread-123441] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:07:30.825 [DEBUG] [Thread-123441] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:07:30.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:07:30.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:07:30.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:07:30.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:07:30.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:07:30.845 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:07:30.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:07:30.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:07:30.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:07:30.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.837947 -999.00  +19.50  19.24     17   -6.10 1 1 1 1 1     0    0 24.65 -45.57 ZNESW 19.7 19.2 300.4 24.1 19.4 -26.1 19.2 -25.0 19.0 -24.6 19.3 -25.7
2025-11-03T22:07:30.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:07:30.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:07:30.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.837947
2025-11-03T22:07:30.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:07:30.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:07:30.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:07:30.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:07:30.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:07:30.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:07:03', tmtdew=30.33, humidity=11.91, cloud=0.0, wind=17.66, temperature=19.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:07:04', seeing=1.3, atlas_timestamp='2025-11-03T20:06:38.621', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.07624999999999993, 0.052250000000000796, -0.05600000000000094, 0.053000000000000824, 0.09375, -0.06949999999999967, -0.01875000000000071, 0.017499999999998295, 0.06350000000000122, 0.1432500000000001, 0.057000000000000384, 0.14000000000000057, 0.08225000000000016, -0.1280000000000001, -0.798, 0.09324999999999939, 0.10199999999999854, 0.1789999999999985, 0.12374999999999758, 0.20349999999999824, 0.010749999999998039, -0.06925000000000026, -0.16075000000000017, 0.036999999999999034, 0.1399999999999988, 0.24324999999999974, 0.28850000000000087, 0.21799999999999997, 0.15750000000000242, 0.16500000000000092, 0.08200000000000074, 0.1587499999999995], zp_timestamp='2025-11-03T20:04:00')
2025-11-03T22:07:30.847 [DEBUG] [Thread-123441] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:07:30.920 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:07:30.933 [DEBUG] [Thread-123444] [transport.py] [_log()] starting thread (client mode): 0xeda3a60
2025-11-03T22:07:30.933 [DEBUG] [Thread-123444] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:07:30.949 [DEBUG] [Thread-123444] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:07:30.949 [INFO] [Thread-123444] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:07:30.957 [DEBUG] [Thread-123444] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:07:30.957 [DEBUG] [Thread-123444] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:07:30.957 [DEBUG] [Thread-123444] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:07:30.957 [DEBUG] [Thread-123444] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:07:30.957 [DEBUG] [Thread-123444] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:07:30.957 [DEBUG] [Thread-123444] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:07:30.957 [DEBUG] [Thread-123444] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:07:30.957 [DEBUG] [Thread-123444] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:07:30.957 [DEBUG] [Thread-123444] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:07:30.957 [DEBUG] [Thread-123444] [transport.py] [_log()] client lang: <none>
2025-11-03T22:07:30.957 [DEBUG] [Thread-123444] [transport.py] [_log()] server lang: <none>
2025-11-03T22:07:30.957 [DEBUG] [Thread-123444] [transport.py] [_log()] kex follows: False
2025-11-03T22:07:30.957 [DEBUG] [Thread-123444] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:07:30.957 [DEBUG] [Thread-123444] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:07:30.957 [DEBUG] [Thread-123444] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:07:30.958 [DEBUG] [Thread-123444] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:07:30.958 [DEBUG] [Thread-123444] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:07:30.958 [DEBUG] [Thread-123444] [transport.py] [_log()] Compression: none
2025-11-03T22:07:30.958 [DEBUG] [Thread-123444] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:07:31.014 [DEBUG] [Thread-123444] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:07:31.014 [DEBUG] [Thread-123444] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:07:31.014 [DEBUG] [Thread-123444] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:07:31.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:07:31.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:07:31.072 [DEBUG] [Thread-123444] [transport.py] [_log()] userauth is OK
2025-11-03T22:07:31.072 [DEBUG] [Thread-123444] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:07:31.072 [DEBUG] [Thread-123444] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:07:31.072 [DEBUG] [Thread-123444] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:07:31.072 [DEBUG] [Thread-123444] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:07:31.089 [INFO] [Thread-123444] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:07:31.089 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:07:31.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:07:31.819 [DEBUG] [Thread-123446 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:07:31.957 [DEBUG] [Thread-123444] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:07:31.957 [DEBUG] [Thread-123444] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:07:32.005 [DEBUG] [Thread-123444] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:07:32.005 [DEBUG] [Thread-123444] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:07:32.014 [DEBUG] [Thread-123444] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:07:32.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:07:32.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:07:32.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:07:32.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:07:32.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:07:32.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:07:32.046 [DEBUG] [Thread-123444] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:07:44.686 [DEBUG] [Thread-123447 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:07:46.858 [DEBUG] [Thread-123448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:07:49.709 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:07:49.710 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:08:01.891 [DEBUG] [Thread-123449 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:08:02.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:08:02.067 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:08:02.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:08:02.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 7, 35), 30.24, 11.96, 0.0, 18.91, 19.26, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:08:02.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:07:35
2025-11-03T22:08:02.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:08:03.026 [DEBUG] [Thread-123450] [transport.py] [_log()] starting thread (client mode): 0xed13a90
2025-11-03T22:08:03.026 [DEBUG] [Thread-123450] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:08:03.048 [DEBUG] [Thread-123450] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:08:03.048 [INFO] [Thread-123450] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:08:03.052 [DEBUG] [Thread-123450] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:08:03.052 [DEBUG] [Thread-123450] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:08:03.052 [DEBUG] [Thread-123450] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:08:03.052 [DEBUG] [Thread-123450] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:08:03.052 [DEBUG] [Thread-123450] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:08:03.052 [DEBUG] [Thread-123450] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:08:03.052 [DEBUG] [Thread-123450] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:08:03.052 [DEBUG] [Thread-123450] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:08:03.052 [DEBUG] [Thread-123450] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:08:03.052 [DEBUG] [Thread-123450] [transport.py] [_log()] client lang: <none>
2025-11-03T22:08:03.052 [DEBUG] [Thread-123450] [transport.py] [_log()] server lang: <none>
2025-11-03T22:08:03.052 [DEBUG] [Thread-123450] [transport.py] [_log()] kex follows: False
2025-11-03T22:08:03.052 [DEBUG] [Thread-123450] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:08:03.052 [DEBUG] [Thread-123450] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:08:03.053 [DEBUG] [Thread-123450] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:08:03.053 [DEBUG] [Thread-123450] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:08:03.053 [DEBUG] [Thread-123450] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:08:03.053 [DEBUG] [Thread-123450] [transport.py] [_log()] Compression: none
2025-11-03T22:08:03.053 [DEBUG] [Thread-123450] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:08:03.073 [DEBUG] [Thread-123450] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:08:03.073 [DEBUG] [Thread-123450] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:08:03.074 [DEBUG] [Thread-123450] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:08:03.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:08:03.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:08:03.118 [DEBUG] [Thread-123450] [transport.py] [_log()] userauth is OK
2025-11-03T22:08:03.118 [DEBUG] [Thread-123450] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:08:03.119 [DEBUG] [Thread-123450] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:08:03.119 [DEBUG] [Thread-123450] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:08:03.119 [DEBUG] [Thread-123450] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:08:03.156 [INFO] [Thread-123450] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:08:03.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:08:03.820 [DEBUG] [Thread-123450] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:08:03.820 [DEBUG] [Thread-123450] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:08:03.821 [DEBUG] [Thread-123450] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:08:03.861 [DEBUG] [Thread-123450] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:08:03.861 [DEBUG] [Thread-123450] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:08:03.863 [DEBUG] [Thread-123450] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:08:03.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:08:03.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:08:03.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:08:03.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:08:03.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:08:03.884 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:08:03.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:08:03.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:08:03.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:08:03.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.838294 -999.00  +19.50  20.29     17   -6.00 1 1 1 1 1     0    0 24.50 -44.65 ZNESW 20.3 20.3 299.6 24.6 19.4 -26.0 19.2 -25.0 19.1 -24.6 19.3 -25.8
2025-11-03T22:08:03.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:08:03.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:08:03.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.838294
2025-11-03T22:08:03.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:08:03.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:08:03.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:08:03.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:08:03.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:08:03.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:07:35', tmtdew=30.24, humidity=11.96, cloud=0.0, wind=18.91, temperature=19.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:07:36', seeing=1.16, atlas_timestamp='2025-11-03T20:07:08.602', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.07624999999999993, 0.052250000000000796, -0.05600000000000094, 0.053000000000000824, 0.09375, -0.06949999999999967, -0.01875000000000071, 0.017499999999998295, 0.06350000000000122, 0.1432500000000001, 0.057000000000000384, 0.14000000000000057, 0.08225000000000016, -0.1280000000000001, -0.798, 0.09324999999999939, 0.10199999999999854, 0.1789999999999985, 0.12374999999999758, 0.20349999999999824, 0.010749999999998039, -0.06925000000000026, -0.16075000000000017, 0.036999999999999034, 0.1399999999999988, 0.24324999999999974, 0.28850000000000087, 0.21799999999999997, 0.15750000000000242, 0.16500000000000092, 0.08200000000000074, 0.1587499999999995], zp_timestamp='2025-11-03T20:04:00')
2025-11-03T22:08:03.886 [DEBUG] [Thread-123450] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:08:03.959 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:08:03.973 [DEBUG] [Thread-123453] [transport.py] [_log()] starting thread (client mode): 0xed10610
2025-11-03T22:08:03.973 [DEBUG] [Thread-123453] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:08:03.990 [DEBUG] [Thread-123453] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:08:03.990 [INFO] [Thread-123453] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:08:03.998 [DEBUG] [Thread-123453] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:08:03.998 [DEBUG] [Thread-123453] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:08:03.998 [DEBUG] [Thread-123453] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:08:03.999 [DEBUG] [Thread-123453] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:08:03.999 [DEBUG] [Thread-123453] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:08:03.999 [DEBUG] [Thread-123453] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:08:03.999 [DEBUG] [Thread-123453] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:08:03.999 [DEBUG] [Thread-123453] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:08:03.999 [DEBUG] [Thread-123453] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:08:03.999 [DEBUG] [Thread-123453] [transport.py] [_log()] client lang: <none>
2025-11-03T22:08:03.999 [DEBUG] [Thread-123453] [transport.py] [_log()] server lang: <none>
2025-11-03T22:08:03.999 [DEBUG] [Thread-123453] [transport.py] [_log()] kex follows: False
2025-11-03T22:08:03.999 [DEBUG] [Thread-123453] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:08:03.999 [DEBUG] [Thread-123453] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:08:03.999 [DEBUG] [Thread-123453] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:08:03.999 [DEBUG] [Thread-123453] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:08:03.999 [DEBUG] [Thread-123453] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:08:03.999 [DEBUG] [Thread-123453] [transport.py] [_log()] Compression: none
2025-11-03T22:08:03.999 [DEBUG] [Thread-123453] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:08:04.055 [DEBUG] [Thread-123453] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:08:04.055 [DEBUG] [Thread-123453] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:08:04.055 [DEBUG] [Thread-123453] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:08:04.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:08:04.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:08:04.116 [DEBUG] [Thread-123453] [transport.py] [_log()] userauth is OK
2025-11-03T22:08:04.116 [DEBUG] [Thread-123453] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:08:04.116 [DEBUG] [Thread-123453] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:08:04.116 [DEBUG] [Thread-123453] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:08:04.116 [DEBUG] [Thread-123453] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:08:04.131 [INFO] [Thread-123453] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:08:04.131 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:08:04.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:08:04.987 [DEBUG] [Thread-123453] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:08:04.987 [DEBUG] [Thread-123453] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:08:05.038 [DEBUG] [Thread-123453] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:08:05.038 [DEBUG] [Thread-123453] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:08:05.050 [DEBUG] [Thread-123453] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:08:05.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:08:05.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:08:05.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:08:05.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:08:05.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:08:05.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:08:05.093 [DEBUG] [Thread-123453] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:08:16.918 [DEBUG] [Thread-123455 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:08:31.971 [DEBUG] [Thread-123456 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:08:35.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:08:35.092 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:08:35.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:08:35.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 8, 8), 30.24, 11.95, 0.0, 20.13, 19.21, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:08:35.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:08:08
2025-11-03T22:08:36.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:08:36.171 [DEBUG] [Thread-123457] [transport.py] [_log()] starting thread (client mode): 0xed42530
2025-11-03T22:08:36.171 [DEBUG] [Thread-123457] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:08:36.191 [DEBUG] [Thread-123457] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:08:36.191 [INFO] [Thread-123457] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:08:36.194 [DEBUG] [Thread-123457] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:08:36.195 [DEBUG] [Thread-123457] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:08:36.195 [DEBUG] [Thread-123457] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:08:36.195 [DEBUG] [Thread-123457] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:08:36.195 [DEBUG] [Thread-123457] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:08:36.195 [DEBUG] [Thread-123457] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:08:36.195 [DEBUG] [Thread-123457] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:08:36.195 [DEBUG] [Thread-123457] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:08:36.195 [DEBUG] [Thread-123457] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:08:36.195 [DEBUG] [Thread-123457] [transport.py] [_log()] client lang: <none>
2025-11-03T22:08:36.195 [DEBUG] [Thread-123457] [transport.py] [_log()] server lang: <none>
2025-11-03T22:08:36.195 [DEBUG] [Thread-123457] [transport.py] [_log()] kex follows: False
2025-11-03T22:08:36.195 [DEBUG] [Thread-123457] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:08:36.195 [DEBUG] [Thread-123457] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:08:36.195 [DEBUG] [Thread-123457] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:08:36.195 [DEBUG] [Thread-123457] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:08:36.195 [DEBUG] [Thread-123457] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:08:36.195 [DEBUG] [Thread-123457] [transport.py] [_log()] Compression: none
2025-11-03T22:08:36.195 [DEBUG] [Thread-123457] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:08:36.212 [DEBUG] [Thread-123457] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:08:36.213 [DEBUG] [Thread-123457] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:08:36.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:08:36.214 [DEBUG] [Thread-123457] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:08:36.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:08:36.216 [DEBUG] [Thread-123457] [transport.py] [_log()] userauth is OK
2025-11-03T22:08:36.216 [DEBUG] [Thread-123457] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:08:36.216 [DEBUG] [Thread-123457] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:08:36.216 [DEBUG] [Thread-123457] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:08:36.216 [DEBUG] [Thread-123457] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:08:36.240 [INFO] [Thread-123457] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:08:36.241 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:08:36.840 [DEBUG] [Thread-123457] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:08:36.840 [DEBUG] [Thread-123457] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:08:36.841 [DEBUG] [Thread-123457] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:08:36.881 [DEBUG] [Thread-123457] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:08:36.881 [DEBUG] [Thread-123457] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:08:36.883 [DEBUG] [Thread-123457] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:08:36.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:08:36.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:08:36.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:08:36.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:08:36.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:08:36.901 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:08:36.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:08:36.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:08:36.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:08:36.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.838989 -999.00  +19.50  20.47     17   -6.00 1 1 1 1 1     0    0 24.84 -44.95 ZNESW 20.1 20.5 305.4 24.4 19.4 -26.2 19.3 -25.1 19.1 -24.9 19.3 -25.8
2025-11-03T22:08:36.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:08:36.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:08:36.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.838989
2025-11-03T22:08:36.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:08:36.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:08:36.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:08:36.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:08:36.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:08:36.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:08:08', tmtdew=30.24, humidity=11.95, cloud=0.0, wind=20.13, temperature=19.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:08:08', seeing=1.14, atlas_timestamp='2025-11-03T20:08:08.650', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.07624999999999993, 0.052250000000000796, -0.05600000000000094, 0.053000000000000824, 0.09375, -0.06949999999999967, -0.01875000000000071, 0.017499999999998295, 0.06350000000000122, 0.1432500000000001, 0.057000000000000384, 0.14000000000000057, 0.08225000000000016, -0.1280000000000001, -0.798, 0.09324999999999939, 0.10199999999999854, 0.1789999999999985, 0.12374999999999758, 0.20349999999999824, 0.010749999999998039, -0.06925000000000026, -0.16075000000000017, 0.036999999999999034, 0.1399999999999988, 0.24324999999999974, 0.28850000000000087, 0.21799999999999997, 0.15750000000000242, 0.16500000000000092, 0.08200000000000074, 0.1587499999999995], zp_timestamp='2025-11-03T20:07:00')
2025-11-03T22:08:36.902 [DEBUG] [Thread-123457] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:08:36.973 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:08:36.990 [DEBUG] [Thread-123460] [transport.py] [_log()] starting thread (client mode): 0xed111b0
2025-11-03T22:08:36.991 [DEBUG] [Thread-123460] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:08:37.009 [DEBUG] [Thread-123460] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:08:37.009 [INFO] [Thread-123460] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:08:37.021 [DEBUG] [Thread-123460] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:08:37.022 [DEBUG] [Thread-123460] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:08:37.022 [DEBUG] [Thread-123460] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:08:37.022 [DEBUG] [Thread-123460] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:08:37.022 [DEBUG] [Thread-123460] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:08:37.022 [DEBUG] [Thread-123460] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:08:37.022 [DEBUG] [Thread-123460] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:08:37.022 [DEBUG] [Thread-123460] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:08:37.022 [DEBUG] [Thread-123460] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:08:37.022 [DEBUG] [Thread-123460] [transport.py] [_log()] client lang: <none>
2025-11-03T22:08:37.022 [DEBUG] [Thread-123460] [transport.py] [_log()] server lang: <none>
2025-11-03T22:08:37.023 [DEBUG] [Thread-123460] [transport.py] [_log()] kex follows: False
2025-11-03T22:08:37.023 [DEBUG] [Thread-123460] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:08:37.023 [DEBUG] [Thread-123460] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:08:37.023 [DEBUG] [Thread-123460] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:08:37.023 [DEBUG] [Thread-123460] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:08:37.023 [DEBUG] [Thread-123460] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:08:37.023 [DEBUG] [Thread-123460] [transport.py] [_log()] Compression: none
2025-11-03T22:08:37.023 [DEBUG] [Thread-123460] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:08:37.075 [DEBUG] [Thread-123460] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:08:37.076 [DEBUG] [Thread-123460] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:08:37.076 [DEBUG] [Thread-123460] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:08:37.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:08:37.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:08:37.132 [DEBUG] [Thread-123460] [transport.py] [_log()] userauth is OK
2025-11-03T22:08:37.132 [DEBUG] [Thread-123460] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:08:37.132 [DEBUG] [Thread-123460] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:08:37.133 [DEBUG] [Thread-123460] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:08:37.133 [DEBUG] [Thread-123460] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:08:37.151 [INFO] [Thread-123460] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:08:37.151 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:08:37.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:08:37.992 [DEBUG] [Thread-123460] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:08:37.993 [DEBUG] [Thread-123460] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:08:38.040 [DEBUG] [Thread-123460] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:08:38.040 [DEBUG] [Thread-123460] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:08:38.050 [DEBUG] [Thread-123460] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:08:38.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:08:38.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:08:38.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:08:38.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:08:38.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:08:38.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:08:38.083 [DEBUG] [Thread-123460] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:08:46.281 [DEBUG] [Thread-123462 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:08:47.017 [DEBUG] [Thread-123463 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:08:49.915 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:08:49.918 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:08:55.350 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:09:02.060 [DEBUG] [Thread-123464 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:09:08.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:09:08.093 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:09:08.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:09:08.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 8, 42), 30.22, 11.98, 0.0, 17.89, 19.24, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:09:08.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:08:42
2025-11-03T22:09:09.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:09:09.198 [DEBUG] [Thread-123465] [transport.py] [_log()] starting thread (client mode): 0xed06140
2025-11-03T22:09:09.198 [DEBUG] [Thread-123465] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:09:09.218 [DEBUG] [Thread-123465] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:09:09.218 [INFO] [Thread-123465] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:09:09.219 [DEBUG] [Thread-123465] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:09:09.219 [DEBUG] [Thread-123465] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:09:09.219 [DEBUG] [Thread-123465] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:09:09.219 [DEBUG] [Thread-123465] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:09:09.219 [DEBUG] [Thread-123465] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:09:09.219 [DEBUG] [Thread-123465] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:09:09.219 [DEBUG] [Thread-123465] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:09:09.219 [DEBUG] [Thread-123465] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:09:09.219 [DEBUG] [Thread-123465] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:09:09.219 [DEBUG] [Thread-123465] [transport.py] [_log()] client lang: <none>
2025-11-03T22:09:09.220 [DEBUG] [Thread-123465] [transport.py] [_log()] server lang: <none>
2025-11-03T22:09:09.220 [DEBUG] [Thread-123465] [transport.py] [_log()] kex follows: False
2025-11-03T22:09:09.220 [DEBUG] [Thread-123465] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:09:09.220 [DEBUG] [Thread-123465] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:09:09.220 [DEBUG] [Thread-123465] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:09:09.220 [DEBUG] [Thread-123465] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:09:09.220 [DEBUG] [Thread-123465] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:09:09.220 [DEBUG] [Thread-123465] [transport.py] [_log()] Compression: none
2025-11-03T22:09:09.220 [DEBUG] [Thread-123465] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:09:09.240 [DEBUG] [Thread-123465] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:09:09.240 [DEBUG] [Thread-123465] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:09:09.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:09:09.242 [DEBUG] [Thread-123465] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:09:09.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:09:09.244 [DEBUG] [Thread-123465] [transport.py] [_log()] userauth is OK
2025-11-03T22:09:09.245 [DEBUG] [Thread-123465] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:09:09.245 [DEBUG] [Thread-123465] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:09:09.245 [DEBUG] [Thread-123465] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:09:09.245 [DEBUG] [Thread-123465] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:09:09.280 [INFO] [Thread-123465] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:09:09.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:09:09.931 [DEBUG] [Thread-123465] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:09:09.931 [DEBUG] [Thread-123465] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:09:09.932 [DEBUG] [Thread-123465] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:09:09.963 [DEBUG] [Thread-123465] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:09:09.964 [DEBUG] [Thread-123465] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:09:09.967 [DEBUG] [Thread-123465] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:09:09.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:09:09.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:09:09.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:09:09.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:09:09.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:09:09.993 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:09:09.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:09:09.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:09:09.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:09:09.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.839336 -999.00  +19.50  24.21     17   -6.00 1 1 1 1 1     0    0 24.68 -42.90 ZNESW 25.5 24.2 298.2 25.8 19.4 -25.9 19.2 -25.1 19.1 -24.7 19.4 -25.7
2025-11-03T22:09:09.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:09:09.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:09:09.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.839336
2025-11-03T22:09:09.996 [DEBUG] [Thread-123465] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:09:09.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:09:10.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:09:10.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:09:10.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:09:10.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:09:10.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:08:42', tmtdew=30.22, humidity=11.98, cloud=0.0, wind=17.89, temperature=19.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:08:43', seeing=1.14, atlas_timestamp='2025-11-03T20:08:38.630', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.07624999999999993, 0.052250000000000796, -0.05600000000000094, 0.053000000000000824, 0.09375, -0.06949999999999967, -0.01875000000000071, 0.017499999999998295, 0.06350000000000122, 0.1432500000000001, 0.057000000000000384, 0.14000000000000057, 0.08225000000000016, -0.1280000000000001, -0.798, 0.09324999999999939, 0.10199999999999854, 0.1789999999999985, 0.12374999999999758, 0.20349999999999824, 0.010749999999998039, -0.06925000000000026, -0.16075000000000017, 0.036999999999999034, 0.1399999999999988, 0.24324999999999974, 0.28850000000000087, 0.21799999999999997, 0.15750000000000242, 0.16500000000000092, 0.08200000000000074, 0.1587499999999995], zp_timestamp='2025-11-03T20:07:00')
2025-11-03T22:09:10.096 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:09:17.100 [DEBUG] [Thread-123468 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:09:32.204 [DEBUG] [Thread-123469 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:09:47.232 [DEBUG] [Thread-123470 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:09:47.426 [DEBUG] [Thread-123471 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:09:50.123 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:09:50.124 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:10:02.263 [DEBUG] [Thread-123472 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:10:17.292 [DEBUG] [Thread-123473 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:10:32.329 [DEBUG] [Thread-123474 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:10:37.574 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:10:40.760 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:10:45.826 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:10:47.356 [DEBUG] [Thread-123475 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:10:48.776 [DEBUG] [Thread-123476 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:10:50.330 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:10:50.333 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:10:52.276 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:11:02.382 [DEBUG] [Thread-123477 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:11:11.579 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:11:16.272 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:11:17.416 [DEBUG] [Thread-123478 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:11:25.417 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-03T22:11:32.444 [DEBUG] [Thread-123479 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:11:36.349 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:11:40.892 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:11:47.472 [DEBUG] [Thread-123480 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:11:47.883 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:11:49.085 [DEBUG] [Thread-123481 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:11:50.545 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:11:50.547 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:11:52.412 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:11:55.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:11:55.463 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:11:55.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:11:56.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 11, 31), 30.18, 12.05, 0.0, 20.48, 19.44, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:11:56.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:11:31
2025-11-03T22:11:56.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:11:56.577 [DEBUG] [Thread-123482] [transport.py] [_log()] starting thread (client mode): 0x11798310
2025-11-03T22:11:56.577 [DEBUG] [Thread-123482] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:11:56.590 [DEBUG] [Thread-123482] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:11:56.590 [INFO] [Thread-123482] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:11:56.597 [DEBUG] [Thread-123482] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:11:56.597 [DEBUG] [Thread-123482] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:11:56.597 [DEBUG] [Thread-123482] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:11:56.597 [DEBUG] [Thread-123482] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:11:56.597 [DEBUG] [Thread-123482] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:11:56.597 [DEBUG] [Thread-123482] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:11:56.597 [DEBUG] [Thread-123482] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:11:56.597 [DEBUG] [Thread-123482] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:11:56.597 [DEBUG] [Thread-123482] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:11:56.597 [DEBUG] [Thread-123482] [transport.py] [_log()] client lang: <none>
2025-11-03T22:11:56.597 [DEBUG] [Thread-123482] [transport.py] [_log()] server lang: <none>
2025-11-03T22:11:56.597 [DEBUG] [Thread-123482] [transport.py] [_log()] kex follows: False
2025-11-03T22:11:56.597 [DEBUG] [Thread-123482] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:11:56.598 [DEBUG] [Thread-123482] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:11:56.598 [DEBUG] [Thread-123482] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:11:56.598 [DEBUG] [Thread-123482] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:11:56.598 [DEBUG] [Thread-123482] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:11:56.598 [DEBUG] [Thread-123482] [transport.py] [_log()] Compression: none
2025-11-03T22:11:56.598 [DEBUG] [Thread-123482] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:11:56.639 [DEBUG] [Thread-123482] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:11:56.644 [DEBUG] [Thread-123482] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:11:56.646 [DEBUG] [Thread-123482] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:11:56.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:11:56.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:11:56.652 [DEBUG] [Thread-123482] [transport.py] [_log()] userauth is OK
2025-11-03T22:11:56.652 [DEBUG] [Thread-123482] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:11:56.652 [DEBUG] [Thread-123482] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:11:56.652 [DEBUG] [Thread-123482] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:11:56.652 [DEBUG] [Thread-123482] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:11:56.691 [INFO] [Thread-123482] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:11:56.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:11:57.324 [DEBUG] [Thread-123482] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:11:57.324 [DEBUG] [Thread-123482] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:11:57.326 [DEBUG] [Thread-123482] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:11:57.357 [DEBUG] [Thread-123482] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:11:57.357 [DEBUG] [Thread-123482] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:11:57.361 [DEBUG] [Thread-123482] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:11:57.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:11:57.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:11:57.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:11:57.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:11:57.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:11:57.389 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:11:57.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:11:57.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:11:57.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:11:57.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.841420 -999.00  +19.70  22.43     17   -5.90 1 1 1 1 1     0    0 24.64 -30.52 ZNESW 20.9 22.4 304.4 27.3 19.4 -26.1 19.4 -25.0 19.1 -24.5 19.4 -25.8
2025-11-03T22:11:57.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:11:57.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:11:57.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.841420
2025-11-03T22:11:57.397 [DEBUG] [Thread-123482] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:11:57.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:11:57.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:11:57.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:11:57.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:11:57.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:11:57.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:11:31', tmtdew=30.18, humidity=12.05, cloud=0.0, wind=20.48, temperature=19.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:11:33', seeing=1.0, atlas_timestamp='2025-11-03T20:11:38.688', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.12325000000000053, 0.0022500000000000853, 0.04049999999999976, 0.08150000000000013, 0.06975000000000087, 0.054999999999999716, -0.28974999999999795, 0.07150000000000034, 0.02149999999999963, 0.1302500000000002, 0.03500000000000014, 0.15499999999999936, 0.028249999999999886, -0.08450000000000024, -0.871500000000001, 0.11875000000000036, 0.05050000000000132, 0.19349999999999845, 0.11224999999999952, 0.14999999999999858, 0.05274999999999963, -0.27674999999999983, -0.01025000000000098, 0.06999999999999851, 0.198500000000001, 0.1617500000000014, 0.3125, 0.27200000000000024, 0.2295000000000016, 0.04400000000000048, -0.023999999999999133, 0.1507499999999986], zp_timestamp='2025-11-03T20:10:00')
2025-11-03T22:11:57.502 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:11:57.520 [DEBUG] [Thread-123485] [transport.py] [_log()] starting thread (client mode): 0x1179bdf0
2025-11-03T22:11:57.520 [DEBUG] [Thread-123485] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:11:57.535 [DEBUG] [Thread-123485] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:11:57.535 [INFO] [Thread-123485] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:11:57.542 [DEBUG] [Thread-123485] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:11:57.542 [DEBUG] [Thread-123485] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:11:57.543 [DEBUG] [Thread-123485] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:11:57.543 [DEBUG] [Thread-123485] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:11:57.543 [DEBUG] [Thread-123485] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:11:57.543 [DEBUG] [Thread-123485] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:11:57.543 [DEBUG] [Thread-123485] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:11:57.543 [DEBUG] [Thread-123485] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:11:57.543 [DEBUG] [Thread-123485] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:11:57.543 [DEBUG] [Thread-123485] [transport.py] [_log()] client lang: <none>
2025-11-03T22:11:57.543 [DEBUG] [Thread-123485] [transport.py] [_log()] server lang: <none>
2025-11-03T22:11:57.543 [DEBUG] [Thread-123485] [transport.py] [_log()] kex follows: False
2025-11-03T22:11:57.543 [DEBUG] [Thread-123485] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:11:57.543 [DEBUG] [Thread-123485] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:11:57.543 [DEBUG] [Thread-123485] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:11:57.543 [DEBUG] [Thread-123485] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:11:57.543 [DEBUG] [Thread-123485] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:11:57.544 [DEBUG] [Thread-123485] [transport.py] [_log()] Compression: none
2025-11-03T22:11:57.544 [DEBUG] [Thread-123485] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:11:57.607 [DEBUG] [Thread-123485] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:11:57.608 [DEBUG] [Thread-123485] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:11:57.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:11:57.609 [DEBUG] [Thread-123485] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:11:57.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:11:57.667 [DEBUG] [Thread-123485] [transport.py] [_log()] userauth is OK
2025-11-03T22:11:57.667 [DEBUG] [Thread-123485] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:11:57.668 [DEBUG] [Thread-123485] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:11:57.668 [DEBUG] [Thread-123485] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:11:57.668 [DEBUG] [Thread-123485] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:11:57.686 [INFO] [Thread-123485] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:11:57.687 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:11:57.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:11:58.549 [DEBUG] [Thread-123485] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:11:58.549 [DEBUG] [Thread-123485] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:11:58.592 [DEBUG] [Thread-123485] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:11:58.592 [DEBUG] [Thread-123485] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:11:58.603 [DEBUG] [Thread-123485] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:11:58.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:11:58.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:11:58.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:11:58.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:11:58.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:11:58.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:11:58.636 [DEBUG] [Thread-123485] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:12:02.511 [DEBUG] [Thread-123487 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:12:17.649 [DEBUG] [Thread-123488 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:12:28.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:12:28.659 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:12:28.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:12:29.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 12, 5), 30.24, 11.98, 0.0, 20.36, 19.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:12:29.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:12:05
2025-11-03T22:12:29.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:12:29.682 [DEBUG] [Thread-123489] [transport.py] [_log()] starting thread (client mode): 0xeda21a0
2025-11-03T22:12:29.682 [DEBUG] [Thread-123489] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:12:29.696 [DEBUG] [Thread-123489] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:12:29.696 [INFO] [Thread-123489] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:12:29.698 [DEBUG] [Thread-123489] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:12:29.698 [DEBUG] [Thread-123489] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:12:29.698 [DEBUG] [Thread-123489] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:12:29.698 [DEBUG] [Thread-123489] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:12:29.698 [DEBUG] [Thread-123489] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:12:29.698 [DEBUG] [Thread-123489] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:12:29.698 [DEBUG] [Thread-123489] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:12:29.698 [DEBUG] [Thread-123489] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:12:29.698 [DEBUG] [Thread-123489] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:12:29.698 [DEBUG] [Thread-123489] [transport.py] [_log()] client lang: <none>
2025-11-03T22:12:29.698 [DEBUG] [Thread-123489] [transport.py] [_log()] server lang: <none>
2025-11-03T22:12:29.698 [DEBUG] [Thread-123489] [transport.py] [_log()] kex follows: False
2025-11-03T22:12:29.699 [DEBUG] [Thread-123489] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:12:29.699 [DEBUG] [Thread-123489] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:12:29.699 [DEBUG] [Thread-123489] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:12:29.699 [DEBUG] [Thread-123489] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:12:29.699 [DEBUG] [Thread-123489] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:12:29.699 [DEBUG] [Thread-123489] [transport.py] [_log()] Compression: none
2025-11-03T22:12:29.699 [DEBUG] [Thread-123489] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:12:29.707 [DEBUG] [Thread-123489] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:12:29.707 [DEBUG] [Thread-123489] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:12:29.708 [DEBUG] [Thread-123489] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:12:29.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:12:29.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:12:29.709 [DEBUG] [Thread-123489] [transport.py] [_log()] userauth is OK
2025-11-03T22:12:29.709 [DEBUG] [Thread-123489] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:12:29.710 [DEBUG] [Thread-123489] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:12:29.710 [DEBUG] [Thread-123489] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:12:29.710 [DEBUG] [Thread-123489] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:12:29.726 [INFO] [Thread-123489] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:12:29.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:12:30.485 [DEBUG] [Thread-123489] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:12:30.485 [DEBUG] [Thread-123489] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:12:30.485 [DEBUG] [Thread-123489] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:12:30.517 [DEBUG] [Thread-123489] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:12:30.517 [DEBUG] [Thread-123489] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:12:30.519 [DEBUG] [Thread-123489] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:12:30.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:12:30.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:12:30.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:12:30.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:12:30.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:12:30.538 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:12:30.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:12:30.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:12:30.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:12:30.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.841767 -999.00  +19.70  21.38     17   -5.80 1 1 1 1 1     0    0 25.17 -28.50 ZNESW 21.7 21.4 304.2 25.4 19.4 -26.0 19.4 -25.1 19.1 -24.6 19.4 -25.8
2025-11-03T22:12:30.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:12:30.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:12:30.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.841767
2025-11-03T22:12:30.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:12:30.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:12:30.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:12:30.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:12:30.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:12:30.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:12:05', tmtdew=30.24, humidity=11.98, cloud=0.0, wind=20.36, temperature=19.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:12:05', seeing=1.1, atlas_timestamp='2025-11-03T20:12:08.669', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.12325000000000053, 0.0022500000000000853, 0.04049999999999976, 0.08150000000000013, 0.06975000000000087, 0.054999999999999716, -0.28974999999999795, 0.07150000000000034, 0.02149999999999963, 0.1302500000000002, 0.03500000000000014, 0.15499999999999936, 0.028249999999999886, -0.08450000000000024, -0.871500000000001, 0.11875000000000036, 0.05050000000000132, 0.19349999999999845, 0.11224999999999952, 0.14999999999999858, 0.05274999999999963, -0.27674999999999983, -0.01025000000000098, 0.06999999999999851, 0.198500000000001, 0.1617500000000014, 0.3125, 0.27200000000000024, 0.2295000000000016, 0.04400000000000048, -0.023999999999999133, 0.1507499999999986], zp_timestamp='2025-11-03T20:10:00')
2025-11-03T22:12:30.540 [DEBUG] [Thread-123489] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:12:30.616 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:12:30.628 [DEBUG] [Thread-123492] [transport.py] [_log()] starting thread (client mode): 0x1174eb60
2025-11-03T22:12:30.628 [DEBUG] [Thread-123492] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:12:30.645 [DEBUG] [Thread-123492] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:12:30.645 [INFO] [Thread-123492] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:12:30.654 [DEBUG] [Thread-123492] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:12:30.654 [DEBUG] [Thread-123492] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:12:30.654 [DEBUG] [Thread-123492] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:12:30.654 [DEBUG] [Thread-123492] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:12:30.654 [DEBUG] [Thread-123492] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:12:30.654 [DEBUG] [Thread-123492] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:12:30.654 [DEBUG] [Thread-123492] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:12:30.654 [DEBUG] [Thread-123492] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:12:30.654 [DEBUG] [Thread-123492] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:12:30.654 [DEBUG] [Thread-123492] [transport.py] [_log()] client lang: <none>
2025-11-03T22:12:30.654 [DEBUG] [Thread-123492] [transport.py] [_log()] server lang: <none>
2025-11-03T22:12:30.654 [DEBUG] [Thread-123492] [transport.py] [_log()] kex follows: False
2025-11-03T22:12:30.654 [DEBUG] [Thread-123492] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:12:30.654 [DEBUG] [Thread-123492] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:12:30.654 [DEBUG] [Thread-123492] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:12:30.654 [DEBUG] [Thread-123492] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:12:30.655 [DEBUG] [Thread-123492] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:12:30.655 [DEBUG] [Thread-123492] [transport.py] [_log()] Compression: none
2025-11-03T22:12:30.655 [DEBUG] [Thread-123492] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:12:30.714 [DEBUG] [Thread-123492] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:12:30.714 [DEBUG] [Thread-123492] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:12:30.715 [DEBUG] [Thread-123492] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:12:30.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:12:30.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:12:30.778 [DEBUG] [Thread-123492] [transport.py] [_log()] userauth is OK
2025-11-03T22:12:30.778 [DEBUG] [Thread-123492] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:12:30.778 [DEBUG] [Thread-123492] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:12:30.778 [DEBUG] [Thread-123492] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:12:30.778 [DEBUG] [Thread-123492] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:12:30.795 [INFO] [Thread-123492] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:12:30.795 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:12:30.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:12:31.627 [DEBUG] [Thread-123492] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:12:31.627 [DEBUG] [Thread-123492] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:12:31.680 [DEBUG] [Thread-123492] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:12:31.680 [DEBUG] [Thread-123492] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:12:31.694 [DEBUG] [Thread-123492] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:12:31.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:12:31.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:12:31.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:12:31.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:12:31.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:12:31.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:12:31.745 [DEBUG] [Thread-123492] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:12:32.679 [DEBUG] [Thread-123494 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:12:47.741 [DEBUG] [Thread-123495 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:12:49.149 [DEBUG] [Thread-123496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:12:50.752 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:12:50.753 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:13:00.041 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:13:01.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:13:01.765 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:13:01.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:13:02.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 12, 37), 30.21, 12.01, 0.0, 17.77, 19.44, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:13:02.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:12:37
2025-11-03T22:13:02.766 [DEBUG] [Thread-123497 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:13:02.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:13:03.067 [DEBUG] [Thread-123498] [transport.py] [_log()] starting thread (client mode): 0x1174ceb0
2025-11-03T22:13:03.067 [DEBUG] [Thread-123498] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:13:03.093 [DEBUG] [Thread-123498] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:13:03.093 [INFO] [Thread-123498] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:13:03.096 [DEBUG] [Thread-123498] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:13:03.097 [DEBUG] [Thread-123498] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:13:03.097 [DEBUG] [Thread-123498] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:13:03.097 [DEBUG] [Thread-123498] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:13:03.097 [DEBUG] [Thread-123498] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:13:03.098 [DEBUG] [Thread-123498] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:13:03.098 [DEBUG] [Thread-123498] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:13:03.098 [DEBUG] [Thread-123498] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:13:03.098 [DEBUG] [Thread-123498] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:13:03.098 [DEBUG] [Thread-123498] [transport.py] [_log()] client lang: <none>
2025-11-03T22:13:03.098 [DEBUG] [Thread-123498] [transport.py] [_log()] server lang: <none>
2025-11-03T22:13:03.098 [DEBUG] [Thread-123498] [transport.py] [_log()] kex follows: False
2025-11-03T22:13:03.098 [DEBUG] [Thread-123498] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:13:03.098 [DEBUG] [Thread-123498] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:13:03.099 [DEBUG] [Thread-123498] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:13:03.099 [DEBUG] [Thread-123498] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:13:03.099 [DEBUG] [Thread-123498] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:13:03.099 [DEBUG] [Thread-123498] [transport.py] [_log()] Compression: none
2025-11-03T22:13:03.099 [DEBUG] [Thread-123498] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:13:03.119 [DEBUG] [Thread-123498] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:13:03.120 [DEBUG] [Thread-123498] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:13:03.120 [DEBUG] [Thread-123498] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:13:03.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:13:03.123 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:13:03.124 [DEBUG] [Thread-123498] [transport.py] [_log()] userauth is OK
2025-11-03T22:13:03.124 [DEBUG] [Thread-123498] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:13:03.124 [DEBUG] [Thread-123498] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:13:03.124 [DEBUG] [Thread-123498] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:13:03.124 [DEBUG] [Thread-123498] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:13:03.149 [INFO] [Thread-123498] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:13:03.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:13:03.772 [DEBUG] [Thread-123498] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:13:03.772 [DEBUG] [Thread-123498] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:13:03.773 [DEBUG] [Thread-123498] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:13:03.813 [DEBUG] [Thread-123498] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:13:03.814 [DEBUG] [Thread-123498] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:13:03.816 [DEBUG] [Thread-123498] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:13:03.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:13:03.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:13:03.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:13:03.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:13:03.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:13:03.837 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:13:03.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:13:03.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:13:03.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:13:03.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.842114 -999.00  +19.60  20.48     17   -5.90 1 1 1 1 1     0    0 25.08 -29.53 ZNESW 18.0 20.5 294.8 27.3 19.4 -26.0 19.4 -25.1 19.1 -24.9 19.4 -25.6
2025-11-03T22:13:03.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:13:03.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:13:03.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.842114
2025-11-03T22:13:03.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:13:03.841 [DEBUG] [Thread-123498] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:13:03.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:13:03.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:13:03.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:13:03.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:13:03.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:12:37', tmtdew=30.21, humidity=12.01, cloud=0.0, wind=17.77, temperature=19.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:12:38', seeing=1.23, atlas_timestamp='2025-11-03T20:12:38.650', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.12325000000000053, 0.0022500000000000853, 0.04049999999999976, 0.08150000000000013, 0.06975000000000087, 0.054999999999999716, -0.28974999999999795, 0.07150000000000034, 0.02149999999999963, 0.1302500000000002, 0.03500000000000014, 0.15499999999999936, 0.028249999999999886, -0.08450000000000024, -0.871500000000001, 0.11875000000000036, 0.05050000000000132, 0.19349999999999845, 0.11224999999999952, 0.14999999999999858, 0.05274999999999963, -0.27674999999999983, -0.01025000000000098, 0.06999999999999851, 0.198500000000001, 0.1617500000000014, 0.3125, 0.27200000000000024, 0.2295000000000016, 0.04400000000000048, -0.023999999999999133, 0.1507499999999986], zp_timestamp='2025-11-03T20:10:00')
2025-11-03T22:13:03.922 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:13:03.934 [DEBUG] [Thread-123501] [transport.py] [_log()] starting thread (client mode): 0xed34490
2025-11-03T22:13:03.934 [DEBUG] [Thread-123501] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:13:03.952 [DEBUG] [Thread-123501] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:13:03.952 [INFO] [Thread-123501] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:13:03.962 [DEBUG] [Thread-123501] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:13:03.962 [DEBUG] [Thread-123501] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:13:03.962 [DEBUG] [Thread-123501] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:13:03.962 [DEBUG] [Thread-123501] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:13:03.963 [DEBUG] [Thread-123501] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:13:03.963 [DEBUG] [Thread-123501] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:13:03.963 [DEBUG] [Thread-123501] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:13:03.963 [DEBUG] [Thread-123501] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:13:03.963 [DEBUG] [Thread-123501] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:13:03.963 [DEBUG] [Thread-123501] [transport.py] [_log()] client lang: <none>
2025-11-03T22:13:03.963 [DEBUG] [Thread-123501] [transport.py] [_log()] server lang: <none>
2025-11-03T22:13:03.963 [DEBUG] [Thread-123501] [transport.py] [_log()] kex follows: False
2025-11-03T22:13:03.963 [DEBUG] [Thread-123501] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:13:03.963 [DEBUG] [Thread-123501] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:13:03.964 [DEBUG] [Thread-123501] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:13:03.964 [DEBUG] [Thread-123501] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:13:03.964 [DEBUG] [Thread-123501] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:13:03.964 [DEBUG] [Thread-123501] [transport.py] [_log()] Compression: none
2025-11-03T22:13:03.964 [DEBUG] [Thread-123501] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:13:04.018 [DEBUG] [Thread-123501] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:13:04.023 [DEBUG] [Thread-123501] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:13:04.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:13:04.025 [DEBUG] [Thread-123501] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:13:04.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:13:04.076 [DEBUG] [Thread-123501] [transport.py] [_log()] userauth is OK
2025-11-03T22:13:04.076 [DEBUG] [Thread-123501] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:13:04.076 [DEBUG] [Thread-123501] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:13:04.076 [DEBUG] [Thread-123501] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:13:04.076 [DEBUG] [Thread-123501] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:13:04.105 [INFO] [Thread-123501] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:13:04.105 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:13:04.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:13:04.140 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:13:04.998 [DEBUG] [Thread-123501] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:13:04.998 [DEBUG] [Thread-123501] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:13:05.053 [DEBUG] [Thread-123501] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:13:05.053 [DEBUG] [Thread-123501] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:13:05.070 [DEBUG] [Thread-123501] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:13:05.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:13:05.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:13:05.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:13:05.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:13:05.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:13:05.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:13:05.121 [DEBUG] [Thread-123501] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:13:17.793 [DEBUG] [Thread-123503 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:13:32.829 [DEBUG] [Thread-123504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:13:35.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:13:35.139 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:13:35.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:13:35.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 13, 10), 30.24, 11.98, 0.0, 18.46, 19.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:13:35.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:13:10
2025-11-03T22:13:36.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:13:36.216 [DEBUG] [Thread-123505] [transport.py] [_log()] starting thread (client mode): 0xed05cf0
2025-11-03T22:13:36.216 [DEBUG] [Thread-123505] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:13:36.226 [DEBUG] [Thread-123505] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:13:36.226 [INFO] [Thread-123505] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:13:36.227 [DEBUG] [Thread-123505] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:13:36.227 [DEBUG] [Thread-123505] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:13:36.227 [DEBUG] [Thread-123505] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:13:36.227 [DEBUG] [Thread-123505] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:13:36.227 [DEBUG] [Thread-123505] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:13:36.227 [DEBUG] [Thread-123505] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:13:36.228 [DEBUG] [Thread-123505] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:13:36.228 [DEBUG] [Thread-123505] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:13:36.228 [DEBUG] [Thread-123505] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:13:36.228 [DEBUG] [Thread-123505] [transport.py] [_log()] client lang: <none>
2025-11-03T22:13:36.228 [DEBUG] [Thread-123505] [transport.py] [_log()] server lang: <none>
2025-11-03T22:13:36.228 [DEBUG] [Thread-123505] [transport.py] [_log()] kex follows: False
2025-11-03T22:13:36.228 [DEBUG] [Thread-123505] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:13:36.228 [DEBUG] [Thread-123505] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:13:36.228 [DEBUG] [Thread-123505] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:13:36.228 [DEBUG] [Thread-123505] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:13:36.228 [DEBUG] [Thread-123505] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:13:36.228 [DEBUG] [Thread-123505] [transport.py] [_log()] Compression: none
2025-11-03T22:13:36.228 [DEBUG] [Thread-123505] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:13:36.235 [DEBUG] [Thread-123505] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:13:36.236 [DEBUG] [Thread-123505] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:13:36.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:13:36.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:13:36.236 [DEBUG] [Thread-123505] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:13:36.236 [DEBUG] [Thread-123505] [transport.py] [_log()] userauth is OK
2025-11-03T22:13:36.236 [DEBUG] [Thread-123505] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:13:36.236 [DEBUG] [Thread-123505] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:13:36.237 [DEBUG] [Thread-123505] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:13:36.237 [DEBUG] [Thread-123505] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:13:36.249 [INFO] [Thread-123505] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:13:36.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:13:36.833 [DEBUG] [Thread-123505] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:13:36.833 [DEBUG] [Thread-123505] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:13:36.833 [DEBUG] [Thread-123505] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:13:36.875 [DEBUG] [Thread-123505] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:13:36.875 [DEBUG] [Thread-123505] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:13:36.877 [DEBUG] [Thread-123505] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:13:36.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:13:36.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:13:36.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:13:36.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:13:36.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:13:36.893 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:13:36.893 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:13:36.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:13:36.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:13:36.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.842461 -999.00  +19.60  18.27     17   -5.80 1 1 1 1 1     0    0 24.84 -26.16 ZNESW 20.6 18.3 297.8 24.3 19.4 -26.1 19.4 -25.1 19.1 -24.9 19.4 -25.8
2025-11-03T22:13:36.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:13:36.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:13:36.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.842461
2025-11-03T22:13:36.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:13:36.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:13:36.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:13:36.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:13:36.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:13:36.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:13:10', tmtdew=30.24, humidity=11.98, cloud=0.0, wind=18.46, temperature=19.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:13:10', seeing=1.23, atlas_timestamp='2025-11-03T20:13:08.630', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.12325000000000053, 0.0022500000000000853, 0.04049999999999976, 0.08150000000000013, 0.06975000000000087, 0.054999999999999716, -0.28974999999999795, 0.07150000000000034, 0.02149999999999963, 0.1302500000000002, 0.03500000000000014, 0.15499999999999936, 0.028249999999999886, -0.08450000000000024, -0.871500000000001, 0.11875000000000036, 0.05050000000000132, 0.19349999999999845, 0.11224999999999952, 0.14999999999999858, 0.05274999999999963, -0.27674999999999983, -0.01025000000000098, 0.06999999999999851, 0.198500000000001, 0.1617500000000014, 0.3125, 0.27200000000000024, 0.2295000000000016, 0.04400000000000048, -0.023999999999999133, 0.1507499999999986], zp_timestamp='2025-11-03T20:10:00')
2025-11-03T22:13:36.894 [DEBUG] [Thread-123505] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:13:36.968 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:13:36.983 [DEBUG] [Thread-123508] [transport.py] [_log()] starting thread (client mode): 0xed058d0
2025-11-03T22:13:36.983 [DEBUG] [Thread-123508] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:13:37.000 [DEBUG] [Thread-123508] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:13:37.000 [INFO] [Thread-123508] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:13:37.009 [DEBUG] [Thread-123508] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:13:37.009 [DEBUG] [Thread-123508] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:13:37.009 [DEBUG] [Thread-123508] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:13:37.009 [DEBUG] [Thread-123508] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:13:37.009 [DEBUG] [Thread-123508] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:13:37.009 [DEBUG] [Thread-123508] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:13:37.009 [DEBUG] [Thread-123508] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:13:37.009 [DEBUG] [Thread-123508] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:13:37.009 [DEBUG] [Thread-123508] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:13:37.009 [DEBUG] [Thread-123508] [transport.py] [_log()] client lang: <none>
2025-11-03T22:13:37.009 [DEBUG] [Thread-123508] [transport.py] [_log()] server lang: <none>
2025-11-03T22:13:37.009 [DEBUG] [Thread-123508] [transport.py] [_log()] kex follows: False
2025-11-03T22:13:37.009 [DEBUG] [Thread-123508] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:13:37.009 [DEBUG] [Thread-123508] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:13:37.009 [DEBUG] [Thread-123508] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:13:37.009 [DEBUG] [Thread-123508] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:13:37.009 [DEBUG] [Thread-123508] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:13:37.009 [DEBUG] [Thread-123508] [transport.py] [_log()] Compression: none
2025-11-03T22:13:37.009 [DEBUG] [Thread-123508] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:13:37.065 [DEBUG] [Thread-123508] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:13:37.065 [DEBUG] [Thread-123508] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:13:37.065 [DEBUG] [Thread-123508] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:13:37.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:13:37.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:13:37.126 [DEBUG] [Thread-123508] [transport.py] [_log()] userauth is OK
2025-11-03T22:13:37.126 [DEBUG] [Thread-123508] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:13:37.126 [DEBUG] [Thread-123508] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:13:37.126 [DEBUG] [Thread-123508] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:13:37.126 [DEBUG] [Thread-123508] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:13:37.141 [INFO] [Thread-123508] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:13:37.141 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:13:37.141 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:13:37.969 [DEBUG] [Thread-123508] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:13:37.969 [DEBUG] [Thread-123508] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:13:38.016 [DEBUG] [Thread-123508] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:13:38.016 [DEBUG] [Thread-123508] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:13:38.025 [DEBUG] [Thread-123508] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:13:38.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:13:38.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:13:38.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:13:38.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:13:38.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:13:38.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:13:38.057 [DEBUG] [Thread-123508] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:13:47.865 [DEBUG] [Thread-123510 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:13:49.413 [DEBUG] [Thread-123511 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:13:50.964 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:13:50.965 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:14:02.902 [DEBUG] [Thread-123512 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:14:08.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:14:08.068 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:14:08.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:14:08.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 13, 45), 30.11, 12.05, 0.0, 20.34, 19.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:14:08.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:13:45
2025-11-03T22:14:08.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:14:09.134 [DEBUG] [Thread-123513] [transport.py] [_log()] starting thread (client mode): 0xed41900
2025-11-03T22:14:09.134 [DEBUG] [Thread-123513] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:14:09.153 [DEBUG] [Thread-123513] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:14:09.153 [INFO] [Thread-123513] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:14:09.156 [DEBUG] [Thread-123513] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:14:09.156 [DEBUG] [Thread-123513] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:14:09.156 [DEBUG] [Thread-123513] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:14:09.156 [DEBUG] [Thread-123513] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:14:09.156 [DEBUG] [Thread-123513] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:14:09.156 [DEBUG] [Thread-123513] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:14:09.156 [DEBUG] [Thread-123513] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:14:09.156 [DEBUG] [Thread-123513] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:14:09.157 [DEBUG] [Thread-123513] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:14:09.157 [DEBUG] [Thread-123513] [transport.py] [_log()] client lang: <none>
2025-11-03T22:14:09.157 [DEBUG] [Thread-123513] [transport.py] [_log()] server lang: <none>
2025-11-03T22:14:09.157 [DEBUG] [Thread-123513] [transport.py] [_log()] kex follows: False
2025-11-03T22:14:09.157 [DEBUG] [Thread-123513] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:14:09.157 [DEBUG] [Thread-123513] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:14:09.157 [DEBUG] [Thread-123513] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:14:09.157 [DEBUG] [Thread-123513] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:14:09.157 [DEBUG] [Thread-123513] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:14:09.157 [DEBUG] [Thread-123513] [transport.py] [_log()] Compression: none
2025-11-03T22:14:09.157 [DEBUG] [Thread-123513] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:14:09.177 [DEBUG] [Thread-123513] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:14:09.177 [DEBUG] [Thread-123513] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:14:09.178 [DEBUG] [Thread-123513] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:14:09.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:14:09.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:14:09.222 [DEBUG] [Thread-123513] [transport.py] [_log()] userauth is OK
2025-11-03T22:14:09.223 [DEBUG] [Thread-123513] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:14:09.223 [DEBUG] [Thread-123513] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:14:09.223 [DEBUG] [Thread-123513] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:14:09.223 [DEBUG] [Thread-123513] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:14:09.244 [INFO] [Thread-123513] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:14:09.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:14:09.887 [DEBUG] [Thread-123513] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:14:09.887 [DEBUG] [Thread-123513] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:14:09.887 [DEBUG] [Thread-123513] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:14:09.918 [DEBUG] [Thread-123513] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:14:09.918 [DEBUG] [Thread-123513] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:14:09.921 [DEBUG] [Thread-123513] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:14:09.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:14:09.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:14:09.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:14:09.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:14:09.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:14:09.941 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:14:09.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:14:09.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:14:09.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:14:09.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.842808 -999.00  +19.60  23.33     17   -5.80 1 1 1 1 1     0    0 25.32 -26.75 ZNESW 20.4 23.3 299.8 27.8 19.4 -26.2 19.4 -25.1 19.2 -24.8 19.4 -25.8
2025-11-03T22:14:09.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:14:09.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:14:09.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.842808
2025-11-03T22:14:09.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:14:09.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:14:09.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:14:09.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:14:09.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:14:09.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:13:45', tmtdew=30.11, humidity=12.05, cloud=0.0, wind=20.34, temperature=19.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:13:46', seeing=1.03, atlas_timestamp='2025-11-03T20:13:38.611', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.12325000000000053, 0.0022500000000000853, 0.04049999999999976, 0.08150000000000013, 0.06975000000000087, 0.054999999999999716, -0.28974999999999795, 0.07150000000000034, 0.02149999999999963, 0.1302500000000002, 0.03500000000000014, 0.15499999999999936, 0.028249999999999886, -0.08450000000000024, -0.871500000000001, 0.11875000000000036, 0.05050000000000132, 0.19349999999999845, 0.11224999999999952, 0.14999999999999858, 0.05274999999999963, -0.27674999999999983, -0.01025000000000098, 0.06999999999999851, 0.198500000000001, 0.1617500000000014, 0.3125, 0.27200000000000024, 0.2295000000000016, 0.04400000000000048, -0.023999999999999133, 0.1507499999999986], zp_timestamp='2025-11-03T20:10:00')
2025-11-03T22:14:09.942 [DEBUG] [Thread-123513] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:14:10.014 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:14:10.025 [DEBUG] [Thread-123516] [transport.py] [_log()] starting thread (client mode): 0x1174ce80
2025-11-03T22:14:10.025 [DEBUG] [Thread-123516] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:14:10.039 [DEBUG] [Thread-123516] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:14:10.039 [INFO] [Thread-123516] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:14:10.047 [DEBUG] [Thread-123516] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:14:10.047 [DEBUG] [Thread-123516] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:14:10.047 [DEBUG] [Thread-123516] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:14:10.047 [DEBUG] [Thread-123516] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:14:10.047 [DEBUG] [Thread-123516] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:14:10.047 [DEBUG] [Thread-123516] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:14:10.047 [DEBUG] [Thread-123516] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:14:10.047 [DEBUG] [Thread-123516] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:14:10.047 [DEBUG] [Thread-123516] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:14:10.047 [DEBUG] [Thread-123516] [transport.py] [_log()] client lang: <none>
2025-11-03T22:14:10.047 [DEBUG] [Thread-123516] [transport.py] [_log()] server lang: <none>
2025-11-03T22:14:10.047 [DEBUG] [Thread-123516] [transport.py] [_log()] kex follows: False
2025-11-03T22:14:10.047 [DEBUG] [Thread-123516] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:14:10.047 [DEBUG] [Thread-123516] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:14:10.047 [DEBUG] [Thread-123516] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:14:10.047 [DEBUG] [Thread-123516] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:14:10.047 [DEBUG] [Thread-123516] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:14:10.047 [DEBUG] [Thread-123516] [transport.py] [_log()] Compression: none
2025-11-03T22:14:10.047 [DEBUG] [Thread-123516] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:14:10.105 [DEBUG] [Thread-123516] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:14:10.105 [DEBUG] [Thread-123516] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:14:10.105 [DEBUG] [Thread-123516] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:14:10.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:14:10.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:14:10.163 [DEBUG] [Thread-123516] [transport.py] [_log()] userauth is OK
2025-11-03T22:14:10.163 [DEBUG] [Thread-123516] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:14:10.163 [DEBUG] [Thread-123516] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:14:10.163 [DEBUG] [Thread-123516] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:14:10.163 [DEBUG] [Thread-123516] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:14:10.177 [INFO] [Thread-123516] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:14:10.177 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:14:10.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:14:11.012 [DEBUG] [Thread-123516] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:14:11.012 [DEBUG] [Thread-123516] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:14:11.061 [DEBUG] [Thread-123516] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:14:11.061 [DEBUG] [Thread-123516] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:14:11.070 [DEBUG] [Thread-123516] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:14:11.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:14:11.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:14:11.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:14:11.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:14:11.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:14:11.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:14:11.105 [DEBUG] [Thread-123516] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:14:17.939 [DEBUG] [Thread-123518 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:14:32.977 [DEBUG] [Thread-123519 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:14:41.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:14:41.127 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:14:41.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:14:41.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 14, 17), 30.08, 12.08, 0.0, 19.0, 19.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:14:41.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:14:17
2025-11-03T22:14:42.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:14:42.197 [DEBUG] [Thread-123520] [transport.py] [_log()] starting thread (client mode): 0xed409a0
2025-11-03T22:14:42.197 [DEBUG] [Thread-123520] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:14:42.217 [DEBUG] [Thread-123520] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:14:42.218 [INFO] [Thread-123520] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:14:42.221 [DEBUG] [Thread-123520] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:14:42.221 [DEBUG] [Thread-123520] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:14:42.221 [DEBUG] [Thread-123520] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:14:42.221 [DEBUG] [Thread-123520] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:14:42.221 [DEBUG] [Thread-123520] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:14:42.221 [DEBUG] [Thread-123520] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:14:42.221 [DEBUG] [Thread-123520] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:14:42.221 [DEBUG] [Thread-123520] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:14:42.221 [DEBUG] [Thread-123520] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:14:42.221 [DEBUG] [Thread-123520] [transport.py] [_log()] client lang: <none>
2025-11-03T22:14:42.221 [DEBUG] [Thread-123520] [transport.py] [_log()] server lang: <none>
2025-11-03T22:14:42.221 [DEBUG] [Thread-123520] [transport.py] [_log()] kex follows: False
2025-11-03T22:14:42.221 [DEBUG] [Thread-123520] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:14:42.221 [DEBUG] [Thread-123520] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:14:42.222 [DEBUG] [Thread-123520] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:14:42.222 [DEBUG] [Thread-123520] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:14:42.222 [DEBUG] [Thread-123520] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:14:42.222 [DEBUG] [Thread-123520] [transport.py] [_log()] Compression: none
2025-11-03T22:14:42.222 [DEBUG] [Thread-123520] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:14:42.251 [DEBUG] [Thread-123520] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:14:42.253 [DEBUG] [Thread-123520] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:14:42.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:14:42.254 [DEBUG] [Thread-123520] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:14:42.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:14:42.256 [DEBUG] [Thread-123520] [transport.py] [_log()] userauth is OK
2025-11-03T22:14:42.256 [DEBUG] [Thread-123520] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:14:42.256 [DEBUG] [Thread-123520] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:14:42.257 [DEBUG] [Thread-123520] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:14:42.257 [DEBUG] [Thread-123520] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:14:42.282 [INFO] [Thread-123520] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:14:42.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:14:42.875 [DEBUG] [Thread-123520] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:14:42.875 [DEBUG] [Thread-123520] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:14:42.875 [DEBUG] [Thread-123520] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:14:42.915 [DEBUG] [Thread-123520] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:14:42.915 [DEBUG] [Thread-123520] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:14:42.918 [DEBUG] [Thread-123520] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:14:42.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:14:42.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:14:42.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:14:42.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:14:42.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:14:42.938 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:14:42.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:14:42.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:14:42.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:14:42.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.843156 -999.00  +19.60  19.35     17   -5.80 1 1 1 1 1     0    0 25.00 -25.38 ZNESW 21.7 19.4 303.2 25.4 19.4 -26.0 19.4 -25.1 19.1 -24.4 19.4 -25.8
2025-11-03T22:14:42.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:14:42.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:14:42.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.843156
2025-11-03T22:14:42.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:14:42.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:14:42.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:14:42.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:14:42.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:14:42.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:14:17', tmtdew=30.08, humidity=12.08, cloud=0.0, wind=19.0, temperature=19.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:14:20', seeing=1.33, atlas_timestamp='2025-11-03T20:14:08.678', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.12325000000000053, 0.0022500000000000853, 0.04049999999999976, 0.08150000000000013, 0.06975000000000087, 0.054999999999999716, -0.28974999999999795, 0.07150000000000034, 0.02149999999999963, 0.1302500000000002, 0.03500000000000014, 0.15499999999999936, 0.028249999999999886, -0.08450000000000024, -0.871500000000001, 0.11875000000000036, 0.05050000000000132, 0.19349999999999845, 0.11224999999999952, 0.14999999999999858, 0.05274999999999963, -0.27674999999999983, -0.01025000000000098, 0.06999999999999851, 0.198500000000001, 0.1617500000000014, 0.3125, 0.27200000000000024, 0.2295000000000016, 0.04400000000000048, -0.023999999999999133, 0.1507499999999986], zp_timestamp='2025-11-03T20:12:00')
2025-11-03T22:14:42.941 [DEBUG] [Thread-123520] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:14:43.013 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:14:43.027 [DEBUG] [Thread-123523] [transport.py] [_log()] starting thread (client mode): 0x1174d1e0
2025-11-03T22:14:43.027 [DEBUG] [Thread-123523] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:14:43.046 [DEBUG] [Thread-123523] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:14:43.046 [INFO] [Thread-123523] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:14:43.054 [DEBUG] [Thread-123523] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:14:43.054 [DEBUG] [Thread-123523] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:14:43.054 [DEBUG] [Thread-123523] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:14:43.054 [DEBUG] [Thread-123523] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:14:43.054 [DEBUG] [Thread-123523] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:14:43.054 [DEBUG] [Thread-123523] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:14:43.055 [DEBUG] [Thread-123523] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:14:43.055 [DEBUG] [Thread-123523] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:14:43.055 [DEBUG] [Thread-123523] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:14:43.055 [DEBUG] [Thread-123523] [transport.py] [_log()] client lang: <none>
2025-11-03T22:14:43.055 [DEBUG] [Thread-123523] [transport.py] [_log()] server lang: <none>
2025-11-03T22:14:43.055 [DEBUG] [Thread-123523] [transport.py] [_log()] kex follows: False
2025-11-03T22:14:43.055 [DEBUG] [Thread-123523] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:14:43.055 [DEBUG] [Thread-123523] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:14:43.055 [DEBUG] [Thread-123523] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:14:43.055 [DEBUG] [Thread-123523] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:14:43.055 [DEBUG] [Thread-123523] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:14:43.055 [DEBUG] [Thread-123523] [transport.py] [_log()] Compression: none
2025-11-03T22:14:43.055 [DEBUG] [Thread-123523] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:14:43.114 [DEBUG] [Thread-123523] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:14:43.114 [DEBUG] [Thread-123523] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:14:43.114 [DEBUG] [Thread-123523] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:14:43.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:14:43.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:14:43.171 [DEBUG] [Thread-123523] [transport.py] [_log()] userauth is OK
2025-11-03T22:14:43.171 [DEBUG] [Thread-123523] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:14:43.171 [DEBUG] [Thread-123523] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:14:43.171 [DEBUG] [Thread-123523] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:14:43.171 [DEBUG] [Thread-123523] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:14:43.185 [INFO] [Thread-123523] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:14:43.185 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:14:43.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:14:44.024 [DEBUG] [Thread-123523] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:14:44.024 [DEBUG] [Thread-123523] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:14:44.074 [DEBUG] [Thread-123523] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:14:44.074 [DEBUG] [Thread-123523] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:14:44.084 [DEBUG] [Thread-123523] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:14:44.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:14:44.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:14:44.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:14:44.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:14:44.116 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:14:44.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:14:44.125 [DEBUG] [Thread-123523] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:14:48.008 [DEBUG] [Thread-123525 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:14:49.719 [DEBUG] [Thread-123526 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:14:51.172 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:14:51.177 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:15:03.053 [DEBUG] [Thread-123527 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:15:14.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:15:14.152 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:15:14.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:15:18.089 [DEBUG] [Thread-123528 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:15:18.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 14, 52), 30.11, 12.1, 0.0, 17.1, 19.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:15:18.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:14:52
2025-11-03T22:15:18.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:15:19.090 [DEBUG] [Thread-123529] [transport.py] [_log()] starting thread (client mode): 0x117e94e0
2025-11-03T22:15:19.094 [DEBUG] [Thread-123529] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:15:19.096 [DEBUG] [Thread-123529] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:15:19.097 [INFO] [Thread-123529] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:15:19.122 [DEBUG] [Thread-123529] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:15:19.123 [DEBUG] [Thread-123529] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:15:19.123 [DEBUG] [Thread-123529] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:15:19.123 [DEBUG] [Thread-123529] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:15:19.123 [DEBUG] [Thread-123529] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:15:19.123 [DEBUG] [Thread-123529] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:15:19.123 [DEBUG] [Thread-123529] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:15:19.123 [DEBUG] [Thread-123529] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:15:19.123 [DEBUG] [Thread-123529] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:15:19.123 [DEBUG] [Thread-123529] [transport.py] [_log()] client lang: <none>
2025-11-03T22:15:19.123 [DEBUG] [Thread-123529] [transport.py] [_log()] server lang: <none>
2025-11-03T22:15:19.124 [DEBUG] [Thread-123529] [transport.py] [_log()] kex follows: False
2025-11-03T22:15:19.124 [DEBUG] [Thread-123529] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:15:19.126 [DEBUG] [Thread-123529] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:15:19.128 [DEBUG] [Thread-123529] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:15:19.128 [DEBUG] [Thread-123529] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:15:19.128 [DEBUG] [Thread-123529] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:15:19.128 [DEBUG] [Thread-123529] [transport.py] [_log()] Compression: none
2025-11-03T22:15:19.128 [DEBUG] [Thread-123529] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:15:19.213 [DEBUG] [Thread-123529] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:15:19.227 [DEBUG] [Thread-123529] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:15:19.231 [DEBUG] [Thread-123529] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:15:19.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:15:19.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:15:19.250 [DEBUG] [Thread-123529] [transport.py] [_log()] userauth is OK
2025-11-03T22:15:19.251 [DEBUG] [Thread-123529] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:15:19.252 [DEBUG] [Thread-123529] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:15:19.252 [DEBUG] [Thread-123529] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:15:19.252 [DEBUG] [Thread-123529] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:15:19.298 [INFO] [Thread-123529] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:15:19.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:15:19.904 [DEBUG] [Thread-123529] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:15:19.904 [DEBUG] [Thread-123529] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:15:19.912 [DEBUG] [Thread-123529] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:15:19.912 [DEBUG] [Thread-123529] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:15:19.912 [DEBUG] [Thread-123529] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:15:19.914 [DEBUG] [Thread-123529] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:15:19.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:15:19.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:15:19.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:15:19.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:15:19.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:15:19.945 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:15:19.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:15:19.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:15:19.952 [DEBUG] [Thread-123529] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:15:19.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:15:19.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.843850 -999.00  +19.60  21.48     17   -5.80 1 1 1 1 1     0    0 24.82 -27.27 ZNESW 19.4 21.5 309.0 24.7 19.4 -26.2 19.4 -25.1 19.2 -24.9 19.4 -25.8
2025-11-03T22:15:19.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:15:19.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:15:19.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.843850
2025-11-03T22:15:20.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:15:20.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:15:20.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:15:20.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:15:20.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:15:20.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:14:52', tmtdew=30.11, humidity=12.1, cloud=0.0, wind=17.1, temperature=19.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:14:52', seeing=1.33, atlas_timestamp='2025-11-03T20:15:08.640', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.12325000000000053, 0.0022500000000000853, 0.04049999999999976, 0.08150000000000013, 0.06975000000000087, 0.054999999999999716, -0.28974999999999795, 0.07150000000000034, 0.02149999999999963, 0.1302500000000002, 0.03500000000000014, 0.15499999999999936, 0.028249999999999886, -0.08450000000000024, -0.871500000000001, 0.11875000000000036, 0.05050000000000132, 0.19349999999999845, 0.11224999999999952, 0.14999999999999858, 0.05274999999999963, -0.27674999999999983, -0.01025000000000098, 0.06999999999999851, 0.198500000000001, 0.1617500000000014, 0.3125, 0.27200000000000024, 0.2295000000000016, 0.04400000000000048, -0.023999999999999133, 0.1507499999999986], zp_timestamp='2025-11-03T20:12:00')
2025-11-03T22:15:20.161 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:15:20.177 [DEBUG] [Thread-123532] [transport.py] [_log()] starting thread (client mode): 0xed886a0
2025-11-03T22:15:20.177 [DEBUG] [Thread-123532] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:15:20.194 [DEBUG] [Thread-123532] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:15:20.194 [INFO] [Thread-123532] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:15:20.202 [DEBUG] [Thread-123532] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:15:20.202 [DEBUG] [Thread-123532] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:15:20.202 [DEBUG] [Thread-123532] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:15:20.203 [DEBUG] [Thread-123532] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:15:20.203 [DEBUG] [Thread-123532] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:15:20.203 [DEBUG] [Thread-123532] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:15:20.203 [DEBUG] [Thread-123532] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:15:20.203 [DEBUG] [Thread-123532] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:15:20.203 [DEBUG] [Thread-123532] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:15:20.203 [DEBUG] [Thread-123532] [transport.py] [_log()] client lang: <none>
2025-11-03T22:15:20.203 [DEBUG] [Thread-123532] [transport.py] [_log()] server lang: <none>
2025-11-03T22:15:20.203 [DEBUG] [Thread-123532] [transport.py] [_log()] kex follows: False
2025-11-03T22:15:20.203 [DEBUG] [Thread-123532] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:15:20.203 [DEBUG] [Thread-123532] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:15:20.204 [DEBUG] [Thread-123532] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:15:20.204 [DEBUG] [Thread-123532] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:15:20.204 [DEBUG] [Thread-123532] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:15:20.204 [DEBUG] [Thread-123532] [transport.py] [_log()] Compression: none
2025-11-03T22:15:20.204 [DEBUG] [Thread-123532] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:15:20.264 [DEBUG] [Thread-123532] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:15:20.265 [DEBUG] [Thread-123532] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:15:20.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:15:20.267 [DEBUG] [Thread-123532] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:15:20.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:15:20.331 [DEBUG] [Thread-123532] [transport.py] [_log()] userauth is OK
2025-11-03T22:15:20.331 [DEBUG] [Thread-123532] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:15:20.331 [DEBUG] [Thread-123532] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:15:20.331 [DEBUG] [Thread-123532] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:15:20.331 [DEBUG] [Thread-123532] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:15:20.354 [INFO] [Thread-123532] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:15:20.354 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:15:20.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:15:21.207 [DEBUG] [Thread-123532] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:15:21.207 [DEBUG] [Thread-123532] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:15:21.254 [DEBUG] [Thread-123532] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:15:21.255 [DEBUG] [Thread-123532] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:15:21.264 [DEBUG] [Thread-123532] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:15:21.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:15:21.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:15:21.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:15:21.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:15:21.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:15:21.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:15:21.314 [DEBUG] [Thread-123532] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:15:33.116 [DEBUG] [Thread-123534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:15:48.165 [DEBUG] [Thread-123535 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:15:50.077 [DEBUG] [Thread-123536 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:15:51.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:15:51.320 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:15:51.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:15:51.380 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:15:51.381 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:15:52.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 15, 25), 30.13, 12.06, 0.0, 18.86, 19.31, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:15:52.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:15:25
2025-11-03T22:15:52.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:15:52.385 [DEBUG] [Thread-123537] [transport.py] [_log()] starting thread (client mode): 0x1174e5c0
2025-11-03T22:15:52.385 [DEBUG] [Thread-123537] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:15:52.399 [DEBUG] [Thread-123537] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:15:52.399 [INFO] [Thread-123537] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:15:52.405 [DEBUG] [Thread-123537] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:15:52.405 [DEBUG] [Thread-123537] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:15:52.405 [DEBUG] [Thread-123537] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:15:52.405 [DEBUG] [Thread-123537] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:15:52.405 [DEBUG] [Thread-123537] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:15:52.405 [DEBUG] [Thread-123537] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:15:52.405 [DEBUG] [Thread-123537] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:15:52.405 [DEBUG] [Thread-123537] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:15:52.406 [DEBUG] [Thread-123537] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:15:52.406 [DEBUG] [Thread-123537] [transport.py] [_log()] client lang: <none>
2025-11-03T22:15:52.406 [DEBUG] [Thread-123537] [transport.py] [_log()] server lang: <none>
2025-11-03T22:15:52.406 [DEBUG] [Thread-123537] [transport.py] [_log()] kex follows: False
2025-11-03T22:15:52.406 [DEBUG] [Thread-123537] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:15:52.407 [DEBUG] [Thread-123537] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:15:52.407 [DEBUG] [Thread-123537] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:15:52.407 [DEBUG] [Thread-123537] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:15:52.407 [DEBUG] [Thread-123537] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:15:52.407 [DEBUG] [Thread-123537] [transport.py] [_log()] Compression: none
2025-11-03T22:15:52.407 [DEBUG] [Thread-123537] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:15:52.444 [DEBUG] [Thread-123537] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:15:52.449 [DEBUG] [Thread-123537] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:15:52.451 [DEBUG] [Thread-123537] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:15:52.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:15:52.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:15:52.456 [DEBUG] [Thread-123537] [transport.py] [_log()] userauth is OK
2025-11-03T22:15:52.457 [DEBUG] [Thread-123537] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:15:52.457 [DEBUG] [Thread-123537] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:15:52.457 [DEBUG] [Thread-123537] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:15:52.457 [DEBUG] [Thread-123537] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:15:52.495 [INFO] [Thread-123537] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:15:52.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:15:53.062 [DEBUG] [Thread-123537] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:15:53.062 [DEBUG] [Thread-123537] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:15:53.064 [DEBUG] [Thread-123537] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:15:53.094 [DEBUG] [Thread-123537] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:15:53.095 [DEBUG] [Thread-123537] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:15:53.099 [DEBUG] [Thread-123537] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:15:53.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:15:53.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:15:53.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:15:53.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:15:53.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:15:53.126 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:15:53.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:15:53.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:15:53.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:15:53.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.843850 -999.00  +19.60  21.48     17   -5.80 1 1 1 1 1     0    0 24.82 -27.27 ZNESW 19.4 21.5 309.0 24.7 19.4 -26.2 19.4 -25.1 19.2 -24.9 19.4 -25.8
2025-11-03T22:15:53.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:15:53.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:15:53.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.843850
2025-11-03T22:15:53.133 [DEBUG] [Thread-123537] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:15:53.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:15:53.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:15:53.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:15:53.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:15:53.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:15:53.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:15:25', tmtdew=30.13, humidity=12.06, cloud=0.0, wind=18.86, temperature=19.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:15:26', seeing=1.07, atlas_timestamp='2025-11-03T20:15:08.640', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.12325000000000053, 0.0022500000000000853, 0.04049999999999976, 0.08150000000000013, 0.06975000000000087, 0.054999999999999716, -0.28974999999999795, 0.07150000000000034, 0.02149999999999963, 0.1302500000000002, 0.03500000000000014, 0.15499999999999936, 0.028249999999999886, -0.08450000000000024, -0.871500000000001, 0.11875000000000036, 0.05050000000000132, 0.19349999999999845, 0.11224999999999952, 0.14999999999999858, 0.05274999999999963, -0.27674999999999983, -0.01025000000000098, 0.06999999999999851, 0.198500000000001, 0.1617500000000014, 0.3125, 0.27200000000000024, 0.2295000000000016, 0.04400000000000048, -0.023999999999999133, 0.1507499999999986], zp_timestamp='2025-11-03T20:12:00')
2025-11-03T22:15:53.223 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:15:53.238 [DEBUG] [Thread-123540] [transport.py] [_log()] starting thread (client mode): 0xed5f3a0
2025-11-03T22:15:53.238 [DEBUG] [Thread-123540] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:15:53.254 [DEBUG] [Thread-123540] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:15:53.254 [INFO] [Thread-123540] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:15:53.262 [DEBUG] [Thread-123540] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:15:53.262 [DEBUG] [Thread-123540] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:15:53.262 [DEBUG] [Thread-123540] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:15:53.262 [DEBUG] [Thread-123540] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:15:53.262 [DEBUG] [Thread-123540] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:15:53.263 [DEBUG] [Thread-123540] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:15:53.263 [DEBUG] [Thread-123540] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:15:53.263 [DEBUG] [Thread-123540] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:15:53.263 [DEBUG] [Thread-123540] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:15:53.263 [DEBUG] [Thread-123540] [transport.py] [_log()] client lang: <none>
2025-11-03T22:15:53.263 [DEBUG] [Thread-123540] [transport.py] [_log()] server lang: <none>
2025-11-03T22:15:53.263 [DEBUG] [Thread-123540] [transport.py] [_log()] kex follows: False
2025-11-03T22:15:53.263 [DEBUG] [Thread-123540] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:15:53.263 [DEBUG] [Thread-123540] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:15:53.263 [DEBUG] [Thread-123540] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:15:53.263 [DEBUG] [Thread-123540] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:15:53.263 [DEBUG] [Thread-123540] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:15:53.263 [DEBUG] [Thread-123540] [transport.py] [_log()] Compression: none
2025-11-03T22:15:53.263 [DEBUG] [Thread-123540] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:15:53.321 [DEBUG] [Thread-123540] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:15:53.322 [DEBUG] [Thread-123540] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:15:53.322 [DEBUG] [Thread-123540] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:15:53.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:15:53.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:15:53.382 [DEBUG] [Thread-123540] [transport.py] [_log()] userauth is OK
2025-11-03T22:15:53.382 [DEBUG] [Thread-123540] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:15:53.382 [DEBUG] [Thread-123540] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:15:53.382 [DEBUG] [Thread-123540] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:15:53.383 [DEBUG] [Thread-123540] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:15:53.406 [INFO] [Thread-123540] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:15:53.407 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:15:53.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:15:54.283 [DEBUG] [Thread-123540] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:15:54.283 [DEBUG] [Thread-123540] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:15:54.322 [DEBUG] [Thread-123540] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:15:54.322 [DEBUG] [Thread-123540] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:15:54.331 [DEBUG] [Thread-123540] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:15:54.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:15:54.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:15:54.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:15:54.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:15:54.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:15:54.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:15:54.371 [DEBUG] [Thread-123540] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:16:03.220 [DEBUG] [Thread-123542 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:16:18.582 [DEBUG] [Thread-123543 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:16:24.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:16:24.396 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:16:24.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:16:25.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 15, 58), 30.08, 12.08, 0.0, 19.41, 19.36, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:16:25.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:15:58
2025-11-03T22:16:25.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:16:25.376 [DEBUG] [Thread-123544] [transport.py] [_log()] starting thread (client mode): 0xed8a590
2025-11-03T22:16:25.376 [DEBUG] [Thread-123544] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:16:25.392 [DEBUG] [Thread-123544] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:16:25.392 [INFO] [Thread-123544] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:16:25.396 [DEBUG] [Thread-123544] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:16:25.396 [DEBUG] [Thread-123544] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:16:25.396 [DEBUG] [Thread-123544] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:16:25.396 [DEBUG] [Thread-123544] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:16:25.396 [DEBUG] [Thread-123544] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:16:25.397 [DEBUG] [Thread-123544] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:16:25.397 [DEBUG] [Thread-123544] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:16:25.397 [DEBUG] [Thread-123544] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:16:25.397 [DEBUG] [Thread-123544] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:16:25.397 [DEBUG] [Thread-123544] [transport.py] [_log()] client lang: <none>
2025-11-03T22:16:25.397 [DEBUG] [Thread-123544] [transport.py] [_log()] server lang: <none>
2025-11-03T22:16:25.397 [DEBUG] [Thread-123544] [transport.py] [_log()] kex follows: False
2025-11-03T22:16:25.397 [DEBUG] [Thread-123544] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:16:25.397 [DEBUG] [Thread-123544] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:16:25.398 [DEBUG] [Thread-123544] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:16:25.398 [DEBUG] [Thread-123544] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:16:25.398 [DEBUG] [Thread-123544] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:16:25.398 [DEBUG] [Thread-123544] [transport.py] [_log()] Compression: none
2025-11-03T22:16:25.398 [DEBUG] [Thread-123544] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:16:25.420 [DEBUG] [Thread-123544] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:16:25.421 [DEBUG] [Thread-123544] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:16:25.421 [DEBUG] [Thread-123544] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:16:25.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:16:25.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:16:25.462 [DEBUG] [Thread-123544] [transport.py] [_log()] userauth is OK
2025-11-03T22:16:25.463 [DEBUG] [Thread-123544] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:16:25.463 [DEBUG] [Thread-123544] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:16:25.463 [DEBUG] [Thread-123544] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:16:25.463 [DEBUG] [Thread-123544] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:16:25.490 [INFO] [Thread-123544] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:16:25.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:16:26.155 [DEBUG] [Thread-123544] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:16:26.155 [DEBUG] [Thread-123544] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:16:26.164 [DEBUG] [Thread-123544] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:16:26.195 [DEBUG] [Thread-123544] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:16:26.196 [DEBUG] [Thread-123544] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:16:26.198 [DEBUG] [Thread-123544] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:16:26.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:16:26.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:16:26.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:16:26.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:16:26.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:16:26.218 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:16:26.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:16:26.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:16:26.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:16:26.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.844197 -999.00  +19.50  18.59     17   -5.80 1 1 1 1 1     0    0 24.91 -27.83 ZNESW 19.7 18.6 303.8 23.9 19.4 -26.2 19.4 -25.1 19.1 -24.9 19.4 -25.9
2025-11-03T22:16:26.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:16:26.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:16:26.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.844197
2025-11-03T22:16:26.224 [DEBUG] [Thread-123544] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:16:26.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:16:26.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:16:26.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:16:26.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:16:26.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:16:26.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:15:58', tmtdew=30.08, humidity=12.08, cloud=0.0, wind=19.41, temperature=19.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:15:59', seeing=1.1, atlas_timestamp='2025-11-03T20:15:38.621', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.12325000000000053, 0.0022500000000000853, 0.04049999999999976, 0.08150000000000013, 0.06975000000000087, 0.054999999999999716, -0.28974999999999795, 0.07150000000000034, 0.02149999999999963, 0.1302500000000002, 0.03500000000000014, 0.15499999999999936, 0.028249999999999886, -0.08450000000000024, -0.871500000000001, 0.11875000000000036, 0.05050000000000132, 0.19349999999999845, 0.11224999999999952, 0.14999999999999858, 0.05274999999999963, -0.27674999999999983, -0.01025000000000098, 0.06999999999999851, 0.198500000000001, 0.1617500000000014, 0.3125, 0.27200000000000024, 0.2295000000000016, 0.04400000000000048, -0.023999999999999133, 0.1507499999999986], zp_timestamp='2025-11-03T20:12:00')
2025-11-03T22:16:26.304 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:16:26.318 [DEBUG] [Thread-123547] [transport.py] [_log()] starting thread (client mode): 0x117e83a0
2025-11-03T22:16:26.318 [DEBUG] [Thread-123547] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:16:26.336 [DEBUG] [Thread-123547] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:16:26.336 [INFO] [Thread-123547] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:16:26.343 [DEBUG] [Thread-123547] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:16:26.344 [DEBUG] [Thread-123547] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:16:26.344 [DEBUG] [Thread-123547] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:16:26.344 [DEBUG] [Thread-123547] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:16:26.344 [DEBUG] [Thread-123547] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:16:26.344 [DEBUG] [Thread-123547] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:16:26.344 [DEBUG] [Thread-123547] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:16:26.344 [DEBUG] [Thread-123547] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:16:26.344 [DEBUG] [Thread-123547] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:16:26.345 [DEBUG] [Thread-123547] [transport.py] [_log()] client lang: <none>
2025-11-03T22:16:26.345 [DEBUG] [Thread-123547] [transport.py] [_log()] server lang: <none>
2025-11-03T22:16:26.345 [DEBUG] [Thread-123547] [transport.py] [_log()] kex follows: False
2025-11-03T22:16:26.345 [DEBUG] [Thread-123547] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:16:26.345 [DEBUG] [Thread-123547] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:16:26.345 [DEBUG] [Thread-123547] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:16:26.345 [DEBUG] [Thread-123547] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:16:26.345 [DEBUG] [Thread-123547] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:16:26.346 [DEBUG] [Thread-123547] [transport.py] [_log()] Compression: none
2025-11-03T22:16:26.346 [DEBUG] [Thread-123547] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:16:26.403 [DEBUG] [Thread-123547] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:16:26.404 [DEBUG] [Thread-123547] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:16:26.404 [DEBUG] [Thread-123547] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:16:26.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:16:26.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:16:26.460 [DEBUG] [Thread-123547] [transport.py] [_log()] userauth is OK
2025-11-03T22:16:26.460 [DEBUG] [Thread-123547] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:16:26.461 [DEBUG] [Thread-123547] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:16:26.461 [DEBUG] [Thread-123547] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:16:26.461 [DEBUG] [Thread-123547] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:16:26.480 [INFO] [Thread-123547] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:16:26.480 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:16:26.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:16:27.341 [DEBUG] [Thread-123547] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:16:27.342 [DEBUG] [Thread-123547] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:16:27.391 [DEBUG] [Thread-123547] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:16:27.391 [DEBUG] [Thread-123547] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:16:27.400 [DEBUG] [Thread-123547] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:16:27.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:16:27.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:16:27.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:16:27.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:16:27.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:16:27.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:16:27.450 [DEBUG] [Thread-123547] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:16:28.016 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:16:33.620 [DEBUG] [Thread-123549 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:16:37.311 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:16:41.404 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:16:48.660 [DEBUG] [Thread-123550 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:16:50.258 [DEBUG] [Thread-123551 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:16:51.593 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:16:51.593 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:16:57.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:16:57.470 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:16:57.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:16:58.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 16, 35), 30.24, 11.93, 0.0, 20.38, 19.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:16:58.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:16:35
2025-11-03T22:16:58.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:16:58.444 [DEBUG] [Thread-123552] [transport.py] [_log()] starting thread (client mode): 0x11762740
2025-11-03T22:16:58.444 [DEBUG] [Thread-123552] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:16:58.463 [DEBUG] [Thread-123552] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:16:58.463 [INFO] [Thread-123552] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:16:58.467 [DEBUG] [Thread-123552] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:16:58.467 [DEBUG] [Thread-123552] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:16:58.467 [DEBUG] [Thread-123552] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:16:58.467 [DEBUG] [Thread-123552] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:16:58.467 [DEBUG] [Thread-123552] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:16:58.467 [DEBUG] [Thread-123552] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:16:58.467 [DEBUG] [Thread-123552] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:16:58.467 [DEBUG] [Thread-123552] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:16:58.467 [DEBUG] [Thread-123552] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:16:58.467 [DEBUG] [Thread-123552] [transport.py] [_log()] client lang: <none>
2025-11-03T22:16:58.467 [DEBUG] [Thread-123552] [transport.py] [_log()] server lang: <none>
2025-11-03T22:16:58.467 [DEBUG] [Thread-123552] [transport.py] [_log()] kex follows: False
2025-11-03T22:16:58.467 [DEBUG] [Thread-123552] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:16:58.467 [DEBUG] [Thread-123552] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:16:58.467 [DEBUG] [Thread-123552] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:16:58.467 [DEBUG] [Thread-123552] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:16:58.467 [DEBUG] [Thread-123552] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:16:58.467 [DEBUG] [Thread-123552] [transport.py] [_log()] Compression: none
2025-11-03T22:16:58.467 [DEBUG] [Thread-123552] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:16:58.482 [DEBUG] [Thread-123552] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:16:58.482 [DEBUG] [Thread-123552] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:16:58.483 [DEBUG] [Thread-123552] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:16:58.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:16:58.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:16:58.483 [DEBUG] [Thread-123552] [transport.py] [_log()] userauth is OK
2025-11-03T22:16:58.484 [DEBUG] [Thread-123552] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:16:58.484 [DEBUG] [Thread-123552] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:16:58.484 [DEBUG] [Thread-123552] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:16:58.484 [DEBUG] [Thread-123552] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:16:58.500 [INFO] [Thread-123552] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:16:58.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:16:59.151 [DEBUG] [Thread-123552] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:16:59.151 [DEBUG] [Thread-123552] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:16:59.151 [DEBUG] [Thread-123552] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:16:59.193 [DEBUG] [Thread-123552] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:16:59.193 [DEBUG] [Thread-123552] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:16:59.195 [DEBUG] [Thread-123552] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:16:59.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:16:59.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:16:59.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:16:59.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:16:59.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:16:59.213 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:16:59.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:16:59.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:16:59.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:16:59.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.844544 -999.00  +19.50  20.46     17   -5.90 1 1 1 1 1     0    0 25.04 -26.91 ZNESW 23.4 20.5 308.2 26.7 19.4 -26.3 19.4 -25.1 19.2 -24.9 19.4 -25.8
2025-11-03T22:16:59.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:16:59.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:16:59.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.844544
2025-11-03T22:16:59.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:16:59.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:16:59.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:16:59.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:16:59.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:16:59.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:16:35', tmtdew=30.24, humidity=11.93, cloud=0.0, wind=20.38, temperature=19.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:16:36', seeing=1.1, atlas_timestamp='2025-11-03T20:16:08.602', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.12325000000000053, 0.0022500000000000853, 0.04049999999999976, 0.08150000000000013, 0.06975000000000087, 0.054999999999999716, -0.28974999999999795, 0.07150000000000034, 0.02149999999999963, 0.1302500000000002, 0.03500000000000014, 0.15499999999999936, 0.028249999999999886, -0.08450000000000024, -0.871500000000001, 0.11875000000000036, 0.05050000000000132, 0.19349999999999845, 0.11224999999999952, 0.14999999999999858, 0.05274999999999963, -0.27674999999999983, -0.01025000000000098, 0.06999999999999851, 0.198500000000001, 0.1617500000000014, 0.3125, 0.27200000000000024, 0.2295000000000016, 0.04400000000000048, -0.023999999999999133, 0.1507499999999986], zp_timestamp='2025-11-03T20:12:00')
2025-11-03T22:16:59.214 [DEBUG] [Thread-123552] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:16:59.288 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:16:59.300 [DEBUG] [Thread-123555] [transport.py] [_log()] starting thread (client mode): 0xed06fb0
2025-11-03T22:16:59.300 [DEBUG] [Thread-123555] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:16:59.314 [DEBUG] [Thread-123555] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:16:59.314 [INFO] [Thread-123555] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:16:59.321 [DEBUG] [Thread-123555] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:16:59.322 [DEBUG] [Thread-123555] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:16:59.322 [DEBUG] [Thread-123555] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:16:59.322 [DEBUG] [Thread-123555] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:16:59.322 [DEBUG] [Thread-123555] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:16:59.322 [DEBUG] [Thread-123555] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:16:59.322 [DEBUG] [Thread-123555] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:16:59.322 [DEBUG] [Thread-123555] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:16:59.322 [DEBUG] [Thread-123555] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:16:59.323 [DEBUG] [Thread-123555] [transport.py] [_log()] client lang: <none>
2025-11-03T22:16:59.323 [DEBUG] [Thread-123555] [transport.py] [_log()] server lang: <none>
2025-11-03T22:16:59.323 [DEBUG] [Thread-123555] [transport.py] [_log()] kex follows: False
2025-11-03T22:16:59.323 [DEBUG] [Thread-123555] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:16:59.323 [DEBUG] [Thread-123555] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:16:59.323 [DEBUG] [Thread-123555] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:16:59.323 [DEBUG] [Thread-123555] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:16:59.323 [DEBUG] [Thread-123555] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:16:59.323 [DEBUG] [Thread-123555] [transport.py] [_log()] Compression: none
2025-11-03T22:16:59.324 [DEBUG] [Thread-123555] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:16:59.379 [DEBUG] [Thread-123555] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:16:59.379 [DEBUG] [Thread-123555] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:16:59.380 [DEBUG] [Thread-123555] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:16:59.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:16:59.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:16:59.435 [DEBUG] [Thread-123555] [transport.py] [_log()] userauth is OK
2025-11-03T22:16:59.436 [DEBUG] [Thread-123555] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:16:59.436 [DEBUG] [Thread-123555] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:16:59.436 [DEBUG] [Thread-123555] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:16:59.436 [DEBUG] [Thread-123555] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:16:59.458 [INFO] [Thread-123555] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:16:59.458 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:16:59.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:17:00.300 [DEBUG] [Thread-123555] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:17:00.300 [DEBUG] [Thread-123555] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:17:00.349 [DEBUG] [Thread-123555] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:17:00.349 [DEBUG] [Thread-123555] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:17:00.359 [DEBUG] [Thread-123555] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:17:00.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:17:00.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:17:00.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:17:00.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:17:00.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:17:00.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:17:00.395 [DEBUG] [Thread-123555] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:17:03.701 [DEBUG] [Thread-123557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:17:18.750 [DEBUG] [Thread-123558 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:17:30.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:17:30.418 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:17:30.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:17:31.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 17, 8), 30.27, 11.9, 0.0, 19.96, 19.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:17:31.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:17:08
2025-11-03T22:17:31.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:17:31.501 [DEBUG] [Thread-123559] [transport.py] [_log()] starting thread (client mode): 0xed8ab30
2025-11-03T22:17:31.502 [DEBUG] [Thread-123559] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:17:31.521 [DEBUG] [Thread-123559] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:17:31.522 [INFO] [Thread-123559] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:17:31.525 [DEBUG] [Thread-123559] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:17:31.525 [DEBUG] [Thread-123559] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:17:31.525 [DEBUG] [Thread-123559] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:17:31.525 [DEBUG] [Thread-123559] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:17:31.525 [DEBUG] [Thread-123559] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:17:31.525 [DEBUG] [Thread-123559] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:17:31.525 [DEBUG] [Thread-123559] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:17:31.525 [DEBUG] [Thread-123559] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:17:31.525 [DEBUG] [Thread-123559] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:17:31.525 [DEBUG] [Thread-123559] [transport.py] [_log()] client lang: <none>
2025-11-03T22:17:31.526 [DEBUG] [Thread-123559] [transport.py] [_log()] server lang: <none>
2025-11-03T22:17:31.526 [DEBUG] [Thread-123559] [transport.py] [_log()] kex follows: False
2025-11-03T22:17:31.526 [DEBUG] [Thread-123559] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:17:31.526 [DEBUG] [Thread-123559] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:17:31.526 [DEBUG] [Thread-123559] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:17:31.527 [DEBUG] [Thread-123559] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:17:31.527 [DEBUG] [Thread-123559] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:17:31.527 [DEBUG] [Thread-123559] [transport.py] [_log()] Compression: none
2025-11-03T22:17:31.527 [DEBUG] [Thread-123559] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:17:31.547 [DEBUG] [Thread-123559] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:17:31.548 [DEBUG] [Thread-123559] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:17:31.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:17:31.549 [DEBUG] [Thread-123559] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:17:31.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:17:31.551 [DEBUG] [Thread-123559] [transport.py] [_log()] userauth is OK
2025-11-03T22:17:31.551 [DEBUG] [Thread-123559] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:17:31.551 [DEBUG] [Thread-123559] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:17:31.551 [DEBUG] [Thread-123559] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:17:31.551 [DEBUG] [Thread-123559] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:17:31.575 [INFO] [Thread-123559] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:17:31.576 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:17:32.191 [DEBUG] [Thread-123559] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:17:32.191 [DEBUG] [Thread-123559] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:17:32.192 [DEBUG] [Thread-123559] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:17:32.232 [DEBUG] [Thread-123559] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:17:32.232 [DEBUG] [Thread-123559] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:17:32.235 [DEBUG] [Thread-123559] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:17:32.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:17:32.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:17:32.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:17:32.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:17:32.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:17:32.257 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:17:32.257 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:17:32.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:17:32.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:17:32.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.844891 -999.00  +19.60  21.69     17   -5.90 1 1 1 1 1     0    0 24.89 -25.63 ZNESW 20.0 21.7 296.4 26.6 19.4 -26.3 19.4 -25.3 19.2 -24.7 19.4 -25.8
2025-11-03T22:17:32.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:17:32.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:17:32.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.844891
2025-11-03T22:17:32.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:17:32.260 [DEBUG] [Thread-123559] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:17:32.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:17:32.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:17:32.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:17:32.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:17:32.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:17:08', tmtdew=30.27, humidity=11.9, cloud=0.0, wind=19.96, temperature=19.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:17:08', seeing=1.27, atlas_timestamp='2025-11-03T20:16:38.582', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.12325000000000053, 0.0022500000000000853, 0.04049999999999976, 0.08150000000000013, 0.06975000000000087, 0.054999999999999716, -0.28974999999999795, 0.07150000000000034, 0.02149999999999963, 0.1302500000000002, 0.03500000000000014, 0.15499999999999936, 0.028249999999999886, -0.08450000000000024, -0.871500000000001, 0.11875000000000036, 0.05050000000000132, 0.19349999999999845, 0.11224999999999952, 0.14999999999999858, 0.05274999999999963, -0.27674999999999983, -0.01025000000000098, 0.06999999999999851, 0.198500000000001, 0.1617500000000014, 0.3125, 0.27200000000000024, 0.2295000000000016, 0.04400000000000048, -0.023999999999999133, 0.1507499999999986], zp_timestamp='2025-11-03T20:12:00')
2025-11-03T22:17:32.357 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:17:32.370 [DEBUG] [Thread-123562] [transport.py] [_log()] starting thread (client mode): 0xed342b0
2025-11-03T22:17:32.370 [DEBUG] [Thread-123562] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:17:32.384 [DEBUG] [Thread-123562] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:17:32.384 [INFO] [Thread-123562] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:17:32.392 [DEBUG] [Thread-123562] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:17:32.392 [DEBUG] [Thread-123562] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:17:32.392 [DEBUG] [Thread-123562] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:17:32.392 [DEBUG] [Thread-123562] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:17:32.392 [DEBUG] [Thread-123562] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:17:32.392 [DEBUG] [Thread-123562] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:17:32.392 [DEBUG] [Thread-123562] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:17:32.392 [DEBUG] [Thread-123562] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:17:32.393 [DEBUG] [Thread-123562] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:17:32.393 [DEBUG] [Thread-123562] [transport.py] [_log()] client lang: <none>
2025-11-03T22:17:32.393 [DEBUG] [Thread-123562] [transport.py] [_log()] server lang: <none>
2025-11-03T22:17:32.393 [DEBUG] [Thread-123562] [transport.py] [_log()] kex follows: False
2025-11-03T22:17:32.393 [DEBUG] [Thread-123562] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:17:32.393 [DEBUG] [Thread-123562] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:17:32.393 [DEBUG] [Thread-123562] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:17:32.393 [DEBUG] [Thread-123562] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:17:32.393 [DEBUG] [Thread-123562] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:17:32.393 [DEBUG] [Thread-123562] [transport.py] [_log()] Compression: none
2025-11-03T22:17:32.393 [DEBUG] [Thread-123562] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:17:32.454 [DEBUG] [Thread-123562] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:17:32.454 [DEBUG] [Thread-123562] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:17:32.455 [DEBUG] [Thread-123562] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:17:32.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:17:32.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:17:32.512 [DEBUG] [Thread-123562] [transport.py] [_log()] userauth is OK
2025-11-03T22:17:32.512 [DEBUG] [Thread-123562] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:17:32.512 [DEBUG] [Thread-123562] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:17:32.513 [DEBUG] [Thread-123562] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:17:32.513 [DEBUG] [Thread-123562] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:17:32.531 [INFO] [Thread-123562] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:17:32.531 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:17:32.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:17:33.374 [DEBUG] [Thread-123562] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:17:33.375 [DEBUG] [Thread-123562] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:17:33.423 [DEBUG] [Thread-123562] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:17:33.423 [DEBUG] [Thread-123562] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:17:33.432 [DEBUG] [Thread-123562] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:17:33.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:17:33.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:17:33.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:17:33.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:17:33.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:17:33.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:17:33.465 [DEBUG] [Thread-123562] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:17:33.785 [DEBUG] [Thread-123564 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:17:48.824 [DEBUG] [Thread-123565 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:17:50.549 [DEBUG] [Thread-123566 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:17:51.804 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:17:51.805 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:18:03.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:18:03.494 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:18:03.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:18:03.856 [DEBUG] [Thread-123567 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:18:04.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 17, 40), 30.31, 11.87, 0.0, 21.81, 19.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:18:04.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:17:40
2025-11-03T22:18:04.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:18:04.583 [DEBUG] [Thread-123568] [transport.py] [_log()] starting thread (client mode): 0xed04c40
2025-11-03T22:18:04.583 [DEBUG] [Thread-123568] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:18:04.601 [DEBUG] [Thread-123568] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:18:04.602 [INFO] [Thread-123568] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:18:04.606 [DEBUG] [Thread-123568] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:18:04.606 [DEBUG] [Thread-123568] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:18:04.606 [DEBUG] [Thread-123568] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:18:04.606 [DEBUG] [Thread-123568] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:18:04.606 [DEBUG] [Thread-123568] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:18:04.606 [DEBUG] [Thread-123568] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:18:04.606 [DEBUG] [Thread-123568] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:18:04.606 [DEBUG] [Thread-123568] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:18:04.606 [DEBUG] [Thread-123568] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:18:04.607 [DEBUG] [Thread-123568] [transport.py] [_log()] client lang: <none>
2025-11-03T22:18:04.607 [DEBUG] [Thread-123568] [transport.py] [_log()] server lang: <none>
2025-11-03T22:18:04.607 [DEBUG] [Thread-123568] [transport.py] [_log()] kex follows: False
2025-11-03T22:18:04.607 [DEBUG] [Thread-123568] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:18:04.607 [DEBUG] [Thread-123568] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:18:04.607 [DEBUG] [Thread-123568] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:18:04.607 [DEBUG] [Thread-123568] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:18:04.608 [DEBUG] [Thread-123568] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:18:04.608 [DEBUG] [Thread-123568] [transport.py] [_log()] Compression: none
2025-11-03T22:18:04.608 [DEBUG] [Thread-123568] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:18:04.632 [DEBUG] [Thread-123568] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:18:04.632 [DEBUG] [Thread-123568] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:18:04.633 [DEBUG] [Thread-123568] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:18:04.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:18:04.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:18:04.635 [DEBUG] [Thread-123568] [transport.py] [_log()] userauth is OK
2025-11-03T22:18:04.636 [DEBUG] [Thread-123568] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:18:04.636 [DEBUG] [Thread-123568] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:18:04.636 [DEBUG] [Thread-123568] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:18:04.636 [DEBUG] [Thread-123568] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:18:04.673 [INFO] [Thread-123568] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:18:04.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:18:05.312 [DEBUG] [Thread-123568] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:18:05.312 [DEBUG] [Thread-123568] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:18:05.312 [DEBUG] [Thread-123568] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:18:05.353 [DEBUG] [Thread-123568] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:18:05.353 [DEBUG] [Thread-123568] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:18:05.355 [DEBUG] [Thread-123568] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:18:05.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:18:05.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:18:05.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:18:05.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:18:05.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:18:05.380 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:18:05.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:18:05.380 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:18:05.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:18:05.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.845239 -999.00  +19.50  19.28     17   -6.00 1 1 1 1 1     0    0 24.96 -28.14 ZNESW 21.7 19.3 303.2 24.2 19.5 -26.3 19.4 -25.2 19.1 -24.8 19.4 -26.0
2025-11-03T22:18:05.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:18:05.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:18:05.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.845239
2025-11-03T22:18:05.386 [DEBUG] [Thread-123568] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:18:05.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:18:05.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:18:05.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:18:05.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:18:05.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:18:05.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:17:40', tmtdew=30.31, humidity=11.87, cloud=0.0, wind=21.81, temperature=19.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:17:41', seeing=1.27, atlas_timestamp='2025-11-03T20:17:08.650', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.05975000000000108, 0.03725000000000023, 0.05249999999999844, 0.06049999999999933, 0.0182500000000001, -0.11400000000000077, -0.35474999999999923, 0.041499999999999204, 0.049500000000001876, 0.1042500000000004, 0.10599999999999987, 0.14199999999999946, 0.027249999999998664, -0.10599999999999987, -0.577, 0.08024999999999949, 0.10449999999999982, 0.17799999999999905, 0.14074999999999882, 0.20099999999999874, 0.03924999999999912, -0.10324999999999918, -0.04625000000000057, 0.0625, 0.21950000000000003, 0.19074999999999953, 0.28250000000000064, 0.27450000000000063, 0.2345000000000006, 0.03300000000000125, 0.06800000000000139, 0.13674999999999926], zp_timestamp='2025-11-03T20:16:00')
2025-11-03T22:18:05.481 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:18:05.495 [DEBUG] [Thread-123571] [transport.py] [_log()] starting thread (client mode): 0x1174f130
2025-11-03T22:18:05.495 [DEBUG] [Thread-123571] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:18:05.512 [DEBUG] [Thread-123571] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:18:05.513 [INFO] [Thread-123571] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:18:05.523 [DEBUG] [Thread-123571] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:18:05.523 [DEBUG] [Thread-123571] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:18:05.523 [DEBUG] [Thread-123571] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:18:05.523 [DEBUG] [Thread-123571] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:18:05.523 [DEBUG] [Thread-123571] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:18:05.523 [DEBUG] [Thread-123571] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:18:05.523 [DEBUG] [Thread-123571] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:18:05.524 [DEBUG] [Thread-123571] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:18:05.524 [DEBUG] [Thread-123571] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:18:05.524 [DEBUG] [Thread-123571] [transport.py] [_log()] client lang: <none>
2025-11-03T22:18:05.524 [DEBUG] [Thread-123571] [transport.py] [_log()] server lang: <none>
2025-11-03T22:18:05.524 [DEBUG] [Thread-123571] [transport.py] [_log()] kex follows: False
2025-11-03T22:18:05.524 [DEBUG] [Thread-123571] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:18:05.524 [DEBUG] [Thread-123571] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:18:05.524 [DEBUG] [Thread-123571] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:18:05.524 [DEBUG] [Thread-123571] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:18:05.524 [DEBUG] [Thread-123571] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:18:05.525 [DEBUG] [Thread-123571] [transport.py] [_log()] Compression: none
2025-11-03T22:18:05.525 [DEBUG] [Thread-123571] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:18:05.581 [DEBUG] [Thread-123571] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:18:05.582 [DEBUG] [Thread-123571] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:18:05.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:18:05.583 [DEBUG] [Thread-123571] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:18:05.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:18:05.641 [DEBUG] [Thread-123571] [transport.py] [_log()] userauth is OK
2025-11-03T22:18:05.641 [DEBUG] [Thread-123571] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:18:05.641 [DEBUG] [Thread-123571] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:18:05.641 [DEBUG] [Thread-123571] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:18:05.641 [DEBUG] [Thread-123571] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:18:05.660 [INFO] [Thread-123571] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:18:05.661 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:18:05.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:18:06.591 [DEBUG] [Thread-123571] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:18:06.591 [DEBUG] [Thread-123571] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:18:06.642 [DEBUG] [Thread-123571] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:18:06.642 [DEBUG] [Thread-123571] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:18:06.653 [DEBUG] [Thread-123571] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:18:06.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:18:06.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:18:06.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:18:06.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:18:06.686 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:18:06.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:18:06.697 [DEBUG] [Thread-123571] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:18:18.880 [DEBUG] [Thread-123573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:18:33.963 [DEBUG] [Thread-123574 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:18:36.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:18:36.703 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:18:36.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:18:37.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 18, 15), 30.38, 11.82, 0.0, 22.11, 19.48, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:18:37.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:18:15
2025-11-03T22:18:37.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:18:37.744 [DEBUG] [Thread-123575] [transport.py] [_log()] starting thread (client mode): 0xedc5270
2025-11-03T22:18:37.745 [DEBUG] [Thread-123575] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:18:37.757 [DEBUG] [Thread-123575] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:18:37.757 [INFO] [Thread-123575] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:18:37.759 [DEBUG] [Thread-123575] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:18:37.759 [DEBUG] [Thread-123575] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:18:37.759 [DEBUG] [Thread-123575] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:18:37.759 [DEBUG] [Thread-123575] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:18:37.759 [DEBUG] [Thread-123575] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:18:37.759 [DEBUG] [Thread-123575] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:18:37.759 [DEBUG] [Thread-123575] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:18:37.759 [DEBUG] [Thread-123575] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:18:37.759 [DEBUG] [Thread-123575] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:18:37.760 [DEBUG] [Thread-123575] [transport.py] [_log()] client lang: <none>
2025-11-03T22:18:37.760 [DEBUG] [Thread-123575] [transport.py] [_log()] server lang: <none>
2025-11-03T22:18:37.760 [DEBUG] [Thread-123575] [transport.py] [_log()] kex follows: False
2025-11-03T22:18:37.760 [DEBUG] [Thread-123575] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:18:37.760 [DEBUG] [Thread-123575] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:18:37.760 [DEBUG] [Thread-123575] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:18:37.760 [DEBUG] [Thread-123575] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:18:37.760 [DEBUG] [Thread-123575] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:18:37.760 [DEBUG] [Thread-123575] [transport.py] [_log()] Compression: none
2025-11-03T22:18:37.760 [DEBUG] [Thread-123575] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:18:37.774 [DEBUG] [Thread-123575] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:18:37.775 [DEBUG] [Thread-123575] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:18:37.776 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:18:37.776 [DEBUG] [Thread-123575] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:18:37.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:18:37.819 [DEBUG] [Thread-123575] [transport.py] [_log()] userauth is OK
2025-11-03T22:18:37.819 [DEBUG] [Thread-123575] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:18:37.819 [DEBUG] [Thread-123575] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:18:37.820 [DEBUG] [Thread-123575] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:18:37.820 [DEBUG] [Thread-123575] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:18:37.847 [INFO] [Thread-123575] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:18:37.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:18:38.523 [DEBUG] [Thread-123575] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:18:38.532 [DEBUG] [Thread-123575] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:18:38.532 [DEBUG] [Thread-123575] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:18:38.565 [DEBUG] [Thread-123575] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:18:38.565 [DEBUG] [Thread-123575] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:18:38.567 [DEBUG] [Thread-123575] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:18:38.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:18:38.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:18:38.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:18:38.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:18:38.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:18:38.587 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:18:38.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:18:38.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:18:38.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:18:38.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.845933 -999.00  +19.60  17.51     17   -6.00 1 1 1 1 1     0    0 24.28 -29.01 ZNESW 22.6 17.5 309.2 26.5 19.5 -26.2 19.4 -25.1 19.1 -24.5 19.4 -25.8
2025-11-03T22:18:38.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:18:38.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:18:38.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.845933
2025-11-03T22:18:38.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:18:38.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:18:38.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:18:38.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:18:38.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:18:38.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:18:15', tmtdew=30.38, humidity=11.82, cloud=0.0, wind=22.11, temperature=19.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:18:16', seeing=1.15, atlas_timestamp='2025-11-03T20:18:08.611', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.05975000000000108, 0.03725000000000023, 0.05249999999999844, 0.06049999999999933, 0.0182500000000001, -0.11400000000000077, -0.35474999999999923, 0.041499999999999204, 0.049500000000001876, 0.1042500000000004, 0.10599999999999987, 0.14199999999999946, 0.027249999999998664, -0.10599999999999987, -0.577, 0.08024999999999949, 0.10449999999999982, 0.17799999999999905, 0.14074999999999882, 0.20099999999999874, 0.03924999999999912, -0.10324999999999918, -0.04625000000000057, 0.0625, 0.21950000000000003, 0.19074999999999953, 0.28250000000000064, 0.27450000000000063, 0.2345000000000006, 0.03300000000000125, 0.06800000000000139, 0.13674999999999926], zp_timestamp='2025-11-03T20:16:00')
2025-11-03T22:18:38.590 [DEBUG] [Thread-123575] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:18:38.663 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:18:38.676 [DEBUG] [Thread-123578] [transport.py] [_log()] starting thread (client mode): 0xedc7b20
2025-11-03T22:18:38.676 [DEBUG] [Thread-123578] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:18:38.694 [DEBUG] [Thread-123578] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:18:38.694 [INFO] [Thread-123578] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:18:38.704 [DEBUG] [Thread-123578] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:18:38.704 [DEBUG] [Thread-123578] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:18:38.704 [DEBUG] [Thread-123578] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:18:38.704 [DEBUG] [Thread-123578] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:18:38.704 [DEBUG] [Thread-123578] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:18:38.704 [DEBUG] [Thread-123578] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:18:38.704 [DEBUG] [Thread-123578] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:18:38.704 [DEBUG] [Thread-123578] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:18:38.704 [DEBUG] [Thread-123578] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:18:38.704 [DEBUG] [Thread-123578] [transport.py] [_log()] client lang: <none>
2025-11-03T22:18:38.704 [DEBUG] [Thread-123578] [transport.py] [_log()] server lang: <none>
2025-11-03T22:18:38.704 [DEBUG] [Thread-123578] [transport.py] [_log()] kex follows: False
2025-11-03T22:18:38.704 [DEBUG] [Thread-123578] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:18:38.704 [DEBUG] [Thread-123578] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:18:38.704 [DEBUG] [Thread-123578] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:18:38.704 [DEBUG] [Thread-123578] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:18:38.704 [DEBUG] [Thread-123578] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:18:38.704 [DEBUG] [Thread-123578] [transport.py] [_log()] Compression: none
2025-11-03T22:18:38.704 [DEBUG] [Thread-123578] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:18:38.763 [DEBUG] [Thread-123578] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:18:38.763 [DEBUG] [Thread-123578] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:18:38.763 [DEBUG] [Thread-123578] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:18:38.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:18:38.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:18:38.824 [DEBUG] [Thread-123578] [transport.py] [_log()] userauth is OK
2025-11-03T22:18:38.824 [DEBUG] [Thread-123578] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:18:38.824 [DEBUG] [Thread-123578] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:18:38.824 [DEBUG] [Thread-123578] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:18:38.824 [DEBUG] [Thread-123578] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:18:38.847 [INFO] [Thread-123578] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:18:38.848 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:18:38.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:18:39.679 [DEBUG] [Thread-123578] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:18:39.679 [DEBUG] [Thread-123578] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:18:39.728 [DEBUG] [Thread-123578] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:18:39.728 [DEBUG] [Thread-123578] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:18:39.736 [DEBUG] [Thread-123578] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:18:39.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:18:39.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:18:39.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:18:39.767 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:18:39.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:18:39.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:18:39.776 [DEBUG] [Thread-123578] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:18:48.996 [DEBUG] [Thread-123580 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:18:50.771 [DEBUG] [Thread-123581 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:18:52.008 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:18:52.009 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:19:04.035 [DEBUG] [Thread-123582 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:19:09.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:19:09.798 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:19:09.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:19:10.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 18, 48), 30.5, 11.75, 0.0, 20.34, 19.43, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:19:10.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:18:48
2025-11-03T22:19:10.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:19:10.869 [DEBUG] [Thread-123583] [transport.py] [_log()] starting thread (client mode): 0xedc6590
2025-11-03T22:19:10.869 [DEBUG] [Thread-123583] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:19:10.881 [DEBUG] [Thread-123583] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:19:10.881 [INFO] [Thread-123583] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:19:10.884 [DEBUG] [Thread-123583] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:19:10.884 [DEBUG] [Thread-123583] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:19:10.884 [DEBUG] [Thread-123583] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:19:10.884 [DEBUG] [Thread-123583] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:19:10.884 [DEBUG] [Thread-123583] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:19:10.884 [DEBUG] [Thread-123583] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:19:10.884 [DEBUG] [Thread-123583] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:19:10.884 [DEBUG] [Thread-123583] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:19:10.884 [DEBUG] [Thread-123583] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:19:10.885 [DEBUG] [Thread-123583] [transport.py] [_log()] client lang: <none>
2025-11-03T22:19:10.885 [DEBUG] [Thread-123583] [transport.py] [_log()] server lang: <none>
2025-11-03T22:19:10.885 [DEBUG] [Thread-123583] [transport.py] [_log()] kex follows: False
2025-11-03T22:19:10.885 [DEBUG] [Thread-123583] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:19:10.885 [DEBUG] [Thread-123583] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:19:10.885 [DEBUG] [Thread-123583] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:19:10.885 [DEBUG] [Thread-123583] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:19:10.885 [DEBUG] [Thread-123583] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:19:10.885 [DEBUG] [Thread-123583] [transport.py] [_log()] Compression: none
2025-11-03T22:19:10.885 [DEBUG] [Thread-123583] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:19:10.903 [DEBUG] [Thread-123583] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:19:10.903 [DEBUG] [Thread-123583] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:19:10.904 [DEBUG] [Thread-123583] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:19:10.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:19:10.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:19:10.946 [DEBUG] [Thread-123583] [transport.py] [_log()] userauth is OK
2025-11-03T22:19:10.946 [DEBUG] [Thread-123583] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:19:10.947 [DEBUG] [Thread-123583] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:19:10.947 [DEBUG] [Thread-123583] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:19:10.947 [DEBUG] [Thread-123583] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:19:10.972 [INFO] [Thread-123583] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:19:10.972 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:19:11.616 [DEBUG] [Thread-123583] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:19:11.617 [DEBUG] [Thread-123583] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:19:11.618 [DEBUG] [Thread-123583] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:19:11.658 [DEBUG] [Thread-123583] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:19:11.658 [DEBUG] [Thread-123583] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:19:11.662 [DEBUG] [Thread-123583] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:19:11.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:19:11.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:19:11.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:19:11.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:19:11.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:19:11.683 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:19:11.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:19:11.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:19:11.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:19:11.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.846280 -999.00  +19.50  19.20     17   -5.90 1 1 1 1 1     0    0 24.79 -27.96 ZNESW 18.4 19.2 303.6 25.0 19.4 -26.2 19.4 -25.1 19.1 -24.4 19.4 -25.7
2025-11-03T22:19:11.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:19:11.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:19:11.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.846280
2025-11-03T22:19:11.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:19:11.685 [DEBUG] [Thread-123583] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:19:11.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:19:11.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:19:11.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:19:11.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:19:11.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:18:48', tmtdew=30.5, humidity=11.75, cloud=0.0, wind=20.34, temperature=19.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:18:48', seeing=1.15, atlas_timestamp='2025-11-03T20:18:38.592', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.05975000000000108, 0.03725000000000023, 0.05249999999999844, 0.06049999999999933, 0.0182500000000001, -0.11400000000000077, -0.35474999999999923, 0.041499999999999204, 0.049500000000001876, 0.1042500000000004, 0.10599999999999987, 0.14199999999999946, 0.027249999999998664, -0.10599999999999987, -0.577, 0.08024999999999949, 0.10449999999999982, 0.17799999999999905, 0.14074999999999882, 0.20099999999999874, 0.03924999999999912, -0.10324999999999918, -0.04625000000000057, 0.0625, 0.21950000000000003, 0.19074999999999953, 0.28250000000000064, 0.27450000000000063, 0.2345000000000006, 0.03300000000000125, 0.06800000000000139, 0.13674999999999926], zp_timestamp='2025-11-03T20:16:00')
2025-11-03T22:19:11.769 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:19:11.784 [DEBUG] [Thread-123586] [transport.py] [_log()] starting thread (client mode): 0xedc5000
2025-11-03T22:19:11.784 [DEBUG] [Thread-123586] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:19:11.801 [DEBUG] [Thread-123586] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:19:11.801 [INFO] [Thread-123586] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:19:11.813 [DEBUG] [Thread-123586] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:19:11.813 [DEBUG] [Thread-123586] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:19:11.813 [DEBUG] [Thread-123586] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:19:11.813 [DEBUG] [Thread-123586] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:19:11.814 [DEBUG] [Thread-123586] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:19:11.814 [DEBUG] [Thread-123586] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:19:11.814 [DEBUG] [Thread-123586] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:19:11.814 [DEBUG] [Thread-123586] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:19:11.814 [DEBUG] [Thread-123586] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:19:11.814 [DEBUG] [Thread-123586] [transport.py] [_log()] client lang: <none>
2025-11-03T22:19:11.814 [DEBUG] [Thread-123586] [transport.py] [_log()] server lang: <none>
2025-11-03T22:19:11.814 [DEBUG] [Thread-123586] [transport.py] [_log()] kex follows: False
2025-11-03T22:19:11.814 [DEBUG] [Thread-123586] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:19:11.814 [DEBUG] [Thread-123586] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:19:11.814 [DEBUG] [Thread-123586] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:19:11.814 [DEBUG] [Thread-123586] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:19:11.814 [DEBUG] [Thread-123586] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:19:11.814 [DEBUG] [Thread-123586] [transport.py] [_log()] Compression: none
2025-11-03T22:19:11.814 [DEBUG] [Thread-123586] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:19:11.869 [DEBUG] [Thread-123586] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:19:11.869 [DEBUG] [Thread-123586] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:19:11.869 [DEBUG] [Thread-123586] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:19:11.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:19:11.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:19:11.928 [DEBUG] [Thread-123586] [transport.py] [_log()] userauth is OK
2025-11-03T22:19:11.928 [DEBUG] [Thread-123586] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:19:11.928 [DEBUG] [Thread-123586] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:19:11.928 [DEBUG] [Thread-123586] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:19:11.928 [DEBUG] [Thread-123586] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:19:11.942 [INFO] [Thread-123586] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:19:11.942 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:19:11.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:19:12.840 [DEBUG] [Thread-123586] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:19:12.841 [DEBUG] [Thread-123586] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:19:12.890 [DEBUG] [Thread-123586] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:19:12.890 [DEBUG] [Thread-123586] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:19:12.899 [DEBUG] [Thread-123586] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:19:12.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:19:12.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:19:12.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:19:12.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:19:12.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:19:12.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:19:12.938 [DEBUG] [Thread-123586] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:19:19.073 [DEBUG] [Thread-123588 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:19:34.109 [DEBUG] [Thread-123589 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:19:42.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:19:42.960 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:19:42.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:19:43.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 19, 20), 30.52, 11.73, 0.0, 19.66, 19.43, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:19:43.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:19:20
2025-11-03T22:19:43.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:19:44.028 [DEBUG] [Thread-123590] [transport.py] [_log()] starting thread (client mode): 0x11762980
2025-11-03T22:19:44.028 [DEBUG] [Thread-123590] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:19:44.049 [DEBUG] [Thread-123590] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:19:44.049 [INFO] [Thread-123590] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:19:44.052 [DEBUG] [Thread-123590] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:19:44.052 [DEBUG] [Thread-123590] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:19:44.052 [DEBUG] [Thread-123590] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:19:44.052 [DEBUG] [Thread-123590] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:19:44.052 [DEBUG] [Thread-123590] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:19:44.052 [DEBUG] [Thread-123590] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:19:44.052 [DEBUG] [Thread-123590] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:19:44.052 [DEBUG] [Thread-123590] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:19:44.052 [DEBUG] [Thread-123590] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:19:44.052 [DEBUG] [Thread-123590] [transport.py] [_log()] client lang: <none>
2025-11-03T22:19:44.052 [DEBUG] [Thread-123590] [transport.py] [_log()] server lang: <none>
2025-11-03T22:19:44.052 [DEBUG] [Thread-123590] [transport.py] [_log()] kex follows: False
2025-11-03T22:19:44.052 [DEBUG] [Thread-123590] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:19:44.052 [DEBUG] [Thread-123590] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:19:44.052 [DEBUG] [Thread-123590] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:19:44.052 [DEBUG] [Thread-123590] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:19:44.052 [DEBUG] [Thread-123590] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:19:44.052 [DEBUG] [Thread-123590] [transport.py] [_log()] Compression: none
2025-11-03T22:19:44.053 [DEBUG] [Thread-123590] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:19:44.069 [DEBUG] [Thread-123590] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:19:44.079 [DEBUG] [Thread-123590] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:19:44.080 [DEBUG] [Thread-123590] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:19:44.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:19:44.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:19:44.083 [DEBUG] [Thread-123590] [transport.py] [_log()] userauth is OK
2025-11-03T22:19:44.083 [DEBUG] [Thread-123590] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:19:44.083 [DEBUG] [Thread-123590] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:19:44.083 [DEBUG] [Thread-123590] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:19:44.083 [DEBUG] [Thread-123590] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:19:44.119 [INFO] [Thread-123590] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:19:44.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:19:44.749 [DEBUG] [Thread-123590] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:19:44.749 [DEBUG] [Thread-123590] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:19:44.749 [DEBUG] [Thread-123590] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:19:44.789 [DEBUG] [Thread-123590] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:19:44.789 [DEBUG] [Thread-123590] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:19:44.792 [DEBUG] [Thread-123590] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:19:44.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:19:44.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:19:44.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:19:44.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:19:44.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:19:44.819 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:19:44.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:19:44.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:19:44.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:19:44.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.846628 -999.00  +19.50  19.81     17   -6.00 1 1 1 1 1     0    0 24.77 -28.03 ZNESW 17.9 19.8 301.8 23.4 19.4 -26.2 19.4 -25.2 19.2 -24.9 19.4 -25.8
2025-11-03T22:19:44.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:19:44.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:19:44.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.846628
2025-11-03T22:19:44.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:19:44.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:19:44.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:19:44.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:19:44.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:19:44.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:19:20', tmtdew=30.52, humidity=11.73, cloud=0.0, wind=19.66, temperature=19.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:19:21', seeing=1.17, atlas_timestamp='2025-11-03T20:19:08.659', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.05975000000000108, 0.03725000000000023, 0.05249999999999844, 0.06049999999999933, 0.0182500000000001, -0.11400000000000077, -0.35474999999999923, 0.041499999999999204, 0.049500000000001876, 0.1042500000000004, 0.10599999999999987, 0.14199999999999946, 0.027249999999998664, -0.10599999999999987, -0.577, 0.08024999999999949, 0.10449999999999982, 0.17799999999999905, 0.14074999999999882, 0.20099999999999874, 0.03924999999999912, -0.10324999999999918, -0.04625000000000057, 0.0625, 0.21950000000000003, 0.19074999999999953, 0.28250000000000064, 0.27450000000000063, 0.2345000000000006, 0.03300000000000125, 0.06800000000000139, 0.13674999999999926], zp_timestamp='2025-11-03T20:16:00')
2025-11-03T22:19:44.820 [DEBUG] [Thread-123590] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:19:44.892 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:19:44.907 [DEBUG] [Thread-123593] [transport.py] [_log()] starting thread (client mode): 0x117606d0
2025-11-03T22:19:44.907 [DEBUG] [Thread-123593] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:19:44.923 [DEBUG] [Thread-123593] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:19:44.923 [INFO] [Thread-123593] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:19:44.931 [DEBUG] [Thread-123593] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:19:44.931 [DEBUG] [Thread-123593] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:19:44.931 [DEBUG] [Thread-123593] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:19:44.931 [DEBUG] [Thread-123593] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:19:44.931 [DEBUG] [Thread-123593] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:19:44.931 [DEBUG] [Thread-123593] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:19:44.931 [DEBUG] [Thread-123593] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:19:44.931 [DEBUG] [Thread-123593] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:19:44.931 [DEBUG] [Thread-123593] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:19:44.932 [DEBUG] [Thread-123593] [transport.py] [_log()] client lang: <none>
2025-11-03T22:19:44.932 [DEBUG] [Thread-123593] [transport.py] [_log()] server lang: <none>
2025-11-03T22:19:44.932 [DEBUG] [Thread-123593] [transport.py] [_log()] kex follows: False
2025-11-03T22:19:44.932 [DEBUG] [Thread-123593] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:19:44.932 [DEBUG] [Thread-123593] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:19:44.932 [DEBUG] [Thread-123593] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:19:44.932 [DEBUG] [Thread-123593] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:19:44.932 [DEBUG] [Thread-123593] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:19:44.932 [DEBUG] [Thread-123593] [transport.py] [_log()] Compression: none
2025-11-03T22:19:44.932 [DEBUG] [Thread-123593] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:19:44.989 [DEBUG] [Thread-123593] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:19:44.990 [DEBUG] [Thread-123593] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:19:44.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:19:44.992 [DEBUG] [Thread-123593] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:19:44.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:19:45.049 [DEBUG] [Thread-123593] [transport.py] [_log()] userauth is OK
2025-11-03T22:19:45.049 [DEBUG] [Thread-123593] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:19:45.050 [DEBUG] [Thread-123593] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:19:45.050 [DEBUG] [Thread-123593] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:19:45.050 [DEBUG] [Thread-123593] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:19:45.070 [INFO] [Thread-123593] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:19:45.071 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:19:45.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:19:45.874 [DEBUG] [Thread-123593] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:19:45.874 [DEBUG] [Thread-123593] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:19:45.927 [DEBUG] [Thread-123593] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:19:45.927 [DEBUG] [Thread-123593] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:19:45.941 [DEBUG] [Thread-123593] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:19:45.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:19:45.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:19:45.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:19:45.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:19:45.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:19:45.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:19:45.992 [DEBUG] [Thread-123593] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:19:49.140 [DEBUG] [Thread-123595 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:19:51.740 [DEBUG] [Thread-123596 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:19:52.230 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:19:52.232 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:20:04.185 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:20:04.190 [DEBUG] [Thread-123597 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:20:11.630 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:20:15.743 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:20:16.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:20:16.011 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:20:16.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:20:16.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 19, 53), 30.5, 11.8, 0.0, 21.37, 19.46, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:20:16.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:19:53
2025-11-03T22:20:16.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:20:17.026 [DEBUG] [Thread-123598] [transport.py] [_log()] starting thread (client mode): 0xed88e50
2025-11-03T22:20:17.026 [DEBUG] [Thread-123598] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:20:17.044 [DEBUG] [Thread-123598] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:20:17.044 [INFO] [Thread-123598] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:20:17.047 [DEBUG] [Thread-123598] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:20:17.047 [DEBUG] [Thread-123598] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:20:17.047 [DEBUG] [Thread-123598] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:20:17.047 [DEBUG] [Thread-123598] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:20:17.048 [DEBUG] [Thread-123598] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:20:17.048 [DEBUG] [Thread-123598] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:20:17.048 [DEBUG] [Thread-123598] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:20:17.048 [DEBUG] [Thread-123598] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:20:17.048 [DEBUG] [Thread-123598] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:20:17.048 [DEBUG] [Thread-123598] [transport.py] [_log()] client lang: <none>
2025-11-03T22:20:17.048 [DEBUG] [Thread-123598] [transport.py] [_log()] server lang: <none>
2025-11-03T22:20:17.048 [DEBUG] [Thread-123598] [transport.py] [_log()] kex follows: False
2025-11-03T22:20:17.048 [DEBUG] [Thread-123598] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:20:17.048 [DEBUG] [Thread-123598] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:20:17.048 [DEBUG] [Thread-123598] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:20:17.048 [DEBUG] [Thread-123598] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:20:17.048 [DEBUG] [Thread-123598] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:20:17.048 [DEBUG] [Thread-123598] [transport.py] [_log()] Compression: none
2025-11-03T22:20:17.048 [DEBUG] [Thread-123598] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:20:17.066 [DEBUG] [Thread-123598] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:20:17.067 [DEBUG] [Thread-123598] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:20:17.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:20:17.069 [DEBUG] [Thread-123598] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:20:17.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:20:17.072 [DEBUG] [Thread-123598] [transport.py] [_log()] userauth is OK
2025-11-03T22:20:17.072 [DEBUG] [Thread-123598] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:20:17.072 [DEBUG] [Thread-123598] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:20:17.072 [DEBUG] [Thread-123598] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:20:17.073 [DEBUG] [Thread-123598] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:20:17.095 [INFO] [Thread-123598] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:20:17.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:20:19.009 [DEBUG] [Thread-123598] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:20:19.009 [DEBUG] [Thread-123598] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:20:19.010 [DEBUG] [Thread-123598] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:20:19.050 [DEBUG] [Thread-123598] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:20:19.050 [DEBUG] [Thread-123598] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:20:19.053 [DEBUG] [Thread-123598] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:20:19.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:20:19.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:20:19.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:20:19.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:20:19.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:20:19.163 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:20:19.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:20:19.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:20:19.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:20:19.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.846975 -999.00  +19.50  18.58     17   -6.00 1 1 1 1 1     0    0 24.89 -25.77 ZNESW 20.6 18.6 307.0 21.6 19.4 -26.2 19.4 -25.1 19.2 -24.9 19.4 -25.9
2025-11-03T22:20:19.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:20:19.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:20:19.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.846975
2025-11-03T22:20:19.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:20:19.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:20:19.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:20:19.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:20:19.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:20:19.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:19:53', tmtdew=30.5, humidity=11.8, cloud=0.0, wind=21.37, temperature=19.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:19:53', seeing=1.17, atlas_timestamp='2025-11-03T20:19:38.640', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.05975000000000108, 0.03725000000000023, 0.05249999999999844, 0.06049999999999933, 0.0182500000000001, -0.11400000000000077, -0.35474999999999923, 0.041499999999999204, 0.049500000000001876, 0.1042500000000004, 0.10599999999999987, 0.14199999999999946, 0.027249999999998664, -0.10599999999999987, -0.577, 0.08024999999999949, 0.10449999999999982, 0.17799999999999905, 0.14074999999999882, 0.20099999999999874, 0.03924999999999912, -0.10324999999999918, -0.04625000000000057, 0.0625, 0.21950000000000003, 0.19074999999999953, 0.28250000000000064, 0.27450000000000063, 0.2345000000000006, 0.03300000000000125, 0.06800000000000139, 0.13674999999999926], zp_timestamp='2025-11-03T20:16:00')
2025-11-03T22:20:19.167 [DEBUG] [Thread-123598] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:20:19.219 [DEBUG] [Thread-123601 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:20:19.253 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:20:19.265 [DEBUG] [Thread-123602] [transport.py] [_log()] starting thread (client mode): 0xeda1030
2025-11-03T22:20:19.265 [DEBUG] [Thread-123602] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:20:19.280 [DEBUG] [Thread-123602] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:20:19.281 [INFO] [Thread-123602] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:20:19.288 [DEBUG] [Thread-123602] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:20:19.288 [DEBUG] [Thread-123602] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:20:19.288 [DEBUG] [Thread-123602] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:20:19.288 [DEBUG] [Thread-123602] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:20:19.288 [DEBUG] [Thread-123602] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:20:19.288 [DEBUG] [Thread-123602] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:20:19.288 [DEBUG] [Thread-123602] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:20:19.288 [DEBUG] [Thread-123602] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:20:19.288 [DEBUG] [Thread-123602] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:20:19.288 [DEBUG] [Thread-123602] [transport.py] [_log()] client lang: <none>
2025-11-03T22:20:19.288 [DEBUG] [Thread-123602] [transport.py] [_log()] server lang: <none>
2025-11-03T22:20:19.289 [DEBUG] [Thread-123602] [transport.py] [_log()] kex follows: False
2025-11-03T22:20:19.289 [DEBUG] [Thread-123602] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:20:19.289 [DEBUG] [Thread-123602] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:20:19.289 [DEBUG] [Thread-123602] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:20:19.289 [DEBUG] [Thread-123602] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:20:19.289 [DEBUG] [Thread-123602] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:20:19.289 [DEBUG] [Thread-123602] [transport.py] [_log()] Compression: none
2025-11-03T22:20:19.289 [DEBUG] [Thread-123602] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:20:19.348 [DEBUG] [Thread-123602] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:20:19.348 [DEBUG] [Thread-123602] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:20:19.348 [DEBUG] [Thread-123602] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:20:19.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:20:19.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:20:19.408 [DEBUG] [Thread-123602] [transport.py] [_log()] userauth is OK
2025-11-03T22:20:19.408 [DEBUG] [Thread-123602] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:20:19.408 [DEBUG] [Thread-123602] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:20:19.408 [DEBUG] [Thread-123602] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:20:19.408 [DEBUG] [Thread-123602] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:20:19.423 [INFO] [Thread-123602] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:20:19.423 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:20:19.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:20:20.273 [DEBUG] [Thread-123602] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:20:20.273 [DEBUG] [Thread-123602] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:20:20.324 [DEBUG] [Thread-123602] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:20:20.324 [DEBUG] [Thread-123602] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:20:20.339 [DEBUG] [Thread-123602] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:20:20.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:20:20.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:20:20.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:20:20.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:20:20.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:20:20.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:20:20.403 [DEBUG] [Thread-123602] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:20:34.281 [DEBUG] [Thread-123604 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:20:49.312 [DEBUG] [Thread-123605 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:20:50.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:20:50.415 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:20:50.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:20:51.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 20, 30), 30.48, 11.82, 0.0, 21.68, 19.48, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:20:51.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:20:30
2025-11-03T22:20:51.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:20:51.622 [DEBUG] [Thread-123606] [transport.py] [_log()] starting thread (client mode): 0xed8ab30
2025-11-03T22:20:51.623 [DEBUG] [Thread-123606] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:20:51.644 [DEBUG] [Thread-123606] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:20:51.644 [INFO] [Thread-123606] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:20:51.647 [DEBUG] [Thread-123606] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:20:51.647 [DEBUG] [Thread-123606] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:20:51.648 [DEBUG] [Thread-123606] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:20:51.648 [DEBUG] [Thread-123606] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:20:51.648 [DEBUG] [Thread-123606] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:20:51.648 [DEBUG] [Thread-123606] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:20:51.648 [DEBUG] [Thread-123606] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:20:51.648 [DEBUG] [Thread-123606] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:20:51.648 [DEBUG] [Thread-123606] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:20:51.648 [DEBUG] [Thread-123606] [transport.py] [_log()] client lang: <none>
2025-11-03T22:20:51.648 [DEBUG] [Thread-123606] [transport.py] [_log()] server lang: <none>
2025-11-03T22:20:51.648 [DEBUG] [Thread-123606] [transport.py] [_log()] kex follows: False
2025-11-03T22:20:51.648 [DEBUG] [Thread-123606] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:20:51.648 [DEBUG] [Thread-123606] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:20:51.648 [DEBUG] [Thread-123606] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:20:51.648 [DEBUG] [Thread-123606] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:20:51.648 [DEBUG] [Thread-123606] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:20:51.648 [DEBUG] [Thread-123606] [transport.py] [_log()] Compression: none
2025-11-03T22:20:51.648 [DEBUG] [Thread-123606] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:20:51.662 [DEBUG] [Thread-123606] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:20:51.663 [DEBUG] [Thread-123606] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:20:51.663 [DEBUG] [Thread-123606] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:20:51.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:20:51.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:20:51.664 [DEBUG] [Thread-123606] [transport.py] [_log()] userauth is OK
2025-11-03T22:20:51.664 [DEBUG] [Thread-123606] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:20:51.664 [DEBUG] [Thread-123606] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:20:51.664 [DEBUG] [Thread-123606] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:20:51.664 [DEBUG] [Thread-123606] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:20:51.679 [INFO] [Thread-123606] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:20:51.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:20:51.971 [DEBUG] [Thread-123608 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:20:52.314 [DEBUG] [Thread-123606] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:20:52.314 [DEBUG] [Thread-123606] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:20:52.314 [DEBUG] [Thread-123606] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:20:52.355 [DEBUG] [Thread-123606] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:20:52.355 [DEBUG] [Thread-123606] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:20:52.357 [DEBUG] [Thread-123606] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:20:52.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:20:52.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:20:52.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:20:52.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:20:52.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:20:52.375 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:20:52.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:20:52.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:20:52.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:20:52.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.847322 -999.00  +19.50  18.97     17   -6.00 1 1 1 1 1     0    0 25.25 -24.16 ZNESW 19.0 19.0 296.2 26.3 19.5 -26.2 19.4 -25.1 19.2 -24.9 19.4 -25.9
2025-11-03T22:20:52.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:20:52.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:20:52.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.847322
2025-11-03T22:20:52.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:20:52.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:20:52.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:20:52.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:20:52.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:20:52.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:20:30', tmtdew=30.48, humidity=11.82, cloud=0.0, wind=21.68, temperature=19.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:20:30', seeing=1.21, atlas_timestamp='2025-11-03T20:20:08.621', atlas_cloud=1, atlas_rain=1, zp_data=[-0.08174999999999955, 0.048250000000001236, 0.026250000000000995, -0.06050000000000111, 0.002500000000001279, 0.027250000000002217, -0.15500000000000114, -0.3777499999999989, -0.036000000000001364, -0.016000000000000014, 0.09424999999999883, 0.08399999999999963, 0.10050000000000026, 0.04174999999999862, -0.14100000000000001, -0.5310000000000006, 0.01624999999999943, 0.09299999999999997, 0.17049999999999876, 0.09324999999999939, 0.13899999999999935, 0.07574999999999932, -0.10274999999999856, -0.5947499999999994, 0.025999999999998025, 0.1385000000000005, 0.17375000000000007, 0.2264999999999997, 0.19549999999999912, -0.09499999999999886, -0.19599999999999795, -0.004999999999999005, 0.08474999999999966], zp_timestamp='2025-11-03T20:18:00')
2025-11-03T22:20:52.376 [DEBUG] [Thread-123606] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:20:52.436 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:20:52.436 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:20:52.451 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:20:52.469 [DEBUG] [Thread-123610] [transport.py] [_log()] starting thread (client mode): 0x117613f0
2025-11-03T22:20:52.469 [DEBUG] [Thread-123610] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:20:52.484 [DEBUG] [Thread-123610] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:20:52.484 [INFO] [Thread-123610] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:20:52.492 [DEBUG] [Thread-123610] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:20:52.492 [DEBUG] [Thread-123610] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:20:52.492 [DEBUG] [Thread-123610] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:20:52.492 [DEBUG] [Thread-123610] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:20:52.492 [DEBUG] [Thread-123610] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:20:52.492 [DEBUG] [Thread-123610] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:20:52.492 [DEBUG] [Thread-123610] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:20:52.492 [DEBUG] [Thread-123610] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:20:52.492 [DEBUG] [Thread-123610] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:20:52.492 [DEBUG] [Thread-123610] [transport.py] [_log()] client lang: <none>
2025-11-03T22:20:52.492 [DEBUG] [Thread-123610] [transport.py] [_log()] server lang: <none>
2025-11-03T22:20:52.492 [DEBUG] [Thread-123610] [transport.py] [_log()] kex follows: False
2025-11-03T22:20:52.492 [DEBUG] [Thread-123610] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:20:52.492 [DEBUG] [Thread-123610] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:20:52.492 [DEBUG] [Thread-123610] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:20:52.492 [DEBUG] [Thread-123610] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:20:52.493 [DEBUG] [Thread-123610] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:20:52.493 [DEBUG] [Thread-123610] [transport.py] [_log()] Compression: none
2025-11-03T22:20:52.493 [DEBUG] [Thread-123610] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:20:52.547 [DEBUG] [Thread-123610] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:20:52.547 [DEBUG] [Thread-123610] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:20:52.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:20:52.548 [DEBUG] [Thread-123610] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:20:52.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:20:52.604 [DEBUG] [Thread-123610] [transport.py] [_log()] userauth is OK
2025-11-03T22:20:52.604 [DEBUG] [Thread-123610] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:20:52.604 [DEBUG] [Thread-123610] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:20:52.604 [DEBUG] [Thread-123610] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:20:52.604 [DEBUG] [Thread-123610] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:20:52.620 [INFO] [Thread-123610] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:20:52.620 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:20:52.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:20:53.448 [DEBUG] [Thread-123610] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:20:53.448 [DEBUG] [Thread-123610] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:20:53.495 [DEBUG] [Thread-123610] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:20:53.495 [DEBUG] [Thread-123610] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:20:53.504 [DEBUG] [Thread-123610] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:20:53.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:20:53.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:20:53.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:20:53.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:20:53.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:20:53.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:20:53.542 [DEBUG] [Thread-123610] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:21:04.354 [DEBUG] [Thread-123612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:21:19.407 [DEBUG] [Thread-123613 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:21:23.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:21:23.543 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:21:23.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:21:24.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 21, 5), 30.49, 11.8, 0.0, 21.97, 19.44, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:21:24.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:21:05
2025-11-03T22:21:24.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:21:24.603 [DEBUG] [Thread-123614] [transport.py] [_log()] starting thread (client mode): 0x117610c0
2025-11-03T22:21:24.603 [DEBUG] [Thread-123614] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:21:24.623 [DEBUG] [Thread-123614] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:21:24.623 [INFO] [Thread-123614] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:21:24.626 [DEBUG] [Thread-123614] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:21:24.626 [DEBUG] [Thread-123614] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:21:24.626 [DEBUG] [Thread-123614] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:21:24.626 [DEBUG] [Thread-123614] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:21:24.626 [DEBUG] [Thread-123614] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:21:24.627 [DEBUG] [Thread-123614] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:21:24.627 [DEBUG] [Thread-123614] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:21:24.627 [DEBUG] [Thread-123614] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:21:24.627 [DEBUG] [Thread-123614] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:21:24.627 [DEBUG] [Thread-123614] [transport.py] [_log()] client lang: <none>
2025-11-03T22:21:24.627 [DEBUG] [Thread-123614] [transport.py] [_log()] server lang: <none>
2025-11-03T22:21:24.627 [DEBUG] [Thread-123614] [transport.py] [_log()] kex follows: False
2025-11-03T22:21:24.627 [DEBUG] [Thread-123614] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:21:24.627 [DEBUG] [Thread-123614] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:21:24.627 [DEBUG] [Thread-123614] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:21:24.628 [DEBUG] [Thread-123614] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:21:24.628 [DEBUG] [Thread-123614] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:21:24.628 [DEBUG] [Thread-123614] [transport.py] [_log()] Compression: none
2025-11-03T22:21:24.628 [DEBUG] [Thread-123614] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:21:24.646 [DEBUG] [Thread-123614] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:21:24.647 [DEBUG] [Thread-123614] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:21:24.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:21:24.648 [DEBUG] [Thread-123614] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:21:24.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:21:24.650 [DEBUG] [Thread-123614] [transport.py] [_log()] userauth is OK
2025-11-03T22:21:24.650 [DEBUG] [Thread-123614] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:21:24.651 [DEBUG] [Thread-123614] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:21:24.651 [DEBUG] [Thread-123614] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:21:24.651 [DEBUG] [Thread-123614] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:21:24.674 [INFO] [Thread-123614] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:21:24.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:21:25.423 [DEBUG] [Thread-123614] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:21:25.423 [DEBUG] [Thread-123614] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:21:25.423 [DEBUG] [Thread-123614] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:21:25.464 [DEBUG] [Thread-123614] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:21:25.464 [DEBUG] [Thread-123614] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:21:25.468 [DEBUG] [Thread-123614] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:21:25.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:21:25.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:21:25.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:21:25.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:21:25.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:21:25.501 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:21:25.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:21:25.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:21:25.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:21:25.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.847669 -999.00  +19.50  19.66     16   -6.20 1 1 1 1 1     0    0 24.70 -21.66 ZNESW 23.8 19.7 313.4 25.9 19.4 -26.0 19.4 -25.1 19.1 -24.9 19.4 -25.8
2025-11-03T22:21:25.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:21:25.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:21:25.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.847669
2025-11-03T22:21:25.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:21:25.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:21:25.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:21:25.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:21:25.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:21:25.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:21:05', tmtdew=30.49, humidity=11.8, cloud=0.0, wind=21.97, temperature=19.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:21:05', seeing=1.21, atlas_timestamp='2025-11-03T20:20:38.602', atlas_cloud=1, atlas_rain=1, zp_data=[-0.08174999999999955, 0.048250000000001236, 0.026250000000000995, -0.06050000000000111, 0.002500000000001279, 0.027250000000002217, -0.15500000000000114, -0.3777499999999989, -0.036000000000001364, -0.016000000000000014, 0.09424999999999883, 0.08399999999999963, 0.10050000000000026, 0.04174999999999862, -0.14100000000000001, -0.5310000000000006, 0.01624999999999943, 0.09299999999999997, 0.17049999999999876, 0.09324999999999939, 0.13899999999999935, 0.07574999999999932, -0.10274999999999856, -0.5947499999999994, 0.025999999999998025, 0.1385000000000005, 0.17375000000000007, 0.2264999999999997, 0.19549999999999912, -0.09499999999999886, -0.19599999999999795, -0.004999999999999005, 0.08474999999999966], zp_timestamp='2025-11-03T20:18:00')
2025-11-03T22:21:25.505 [DEBUG] [Thread-123614] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:21:25.589 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:21:25.603 [DEBUG] [Thread-123617] [transport.py] [_log()] starting thread (client mode): 0xed5df60
2025-11-03T22:21:25.603 [DEBUG] [Thread-123617] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:21:25.621 [DEBUG] [Thread-123617] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:21:25.621 [INFO] [Thread-123617] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:21:25.631 [DEBUG] [Thread-123617] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:21:25.631 [DEBUG] [Thread-123617] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:21:25.631 [DEBUG] [Thread-123617] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:21:25.631 [DEBUG] [Thread-123617] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:21:25.631 [DEBUG] [Thread-123617] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:21:25.631 [DEBUG] [Thread-123617] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:21:25.631 [DEBUG] [Thread-123617] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:21:25.631 [DEBUG] [Thread-123617] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:21:25.632 [DEBUG] [Thread-123617] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:21:25.632 [DEBUG] [Thread-123617] [transport.py] [_log()] client lang: <none>
2025-11-03T22:21:25.632 [DEBUG] [Thread-123617] [transport.py] [_log()] server lang: <none>
2025-11-03T22:21:25.632 [DEBUG] [Thread-123617] [transport.py] [_log()] kex follows: False
2025-11-03T22:21:25.632 [DEBUG] [Thread-123617] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:21:25.632 [DEBUG] [Thread-123617] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:21:25.632 [DEBUG] [Thread-123617] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:21:25.632 [DEBUG] [Thread-123617] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:21:25.632 [DEBUG] [Thread-123617] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:21:25.632 [DEBUG] [Thread-123617] [transport.py] [_log()] Compression: none
2025-11-03T22:21:25.632 [DEBUG] [Thread-123617] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:21:25.703 [DEBUG] [Thread-123617] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:21:25.703 [DEBUG] [Thread-123617] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:21:25.703 [DEBUG] [Thread-123617] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:21:25.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:21:25.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:21:25.762 [DEBUG] [Thread-123617] [transport.py] [_log()] userauth is OK
2025-11-03T22:21:25.762 [DEBUG] [Thread-123617] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:21:25.762 [DEBUG] [Thread-123617] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:21:25.762 [DEBUG] [Thread-123617] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:21:25.763 [DEBUG] [Thread-123617] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:21:25.782 [INFO] [Thread-123617] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:21:25.782 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:21:25.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:21:26.669 [DEBUG] [Thread-123617] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:21:26.669 [DEBUG] [Thread-123617] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:21:26.719 [DEBUG] [Thread-123617] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:21:26.719 [DEBUG] [Thread-123617] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:21:26.729 [DEBUG] [Thread-123617] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:21:26.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:21:26.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:21:26.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:21:26.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:21:26.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:21:26.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:21:26.770 [DEBUG] [Thread-123617] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:21:34.436 [DEBUG] [Thread-123619 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:21:49.478 [DEBUG] [Thread-123620 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:21:52.280 [DEBUG] [Thread-123621 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:21:52.648 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:21:52.650 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:21:56.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:21:56.770 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:21:56.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:21:57.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 21, 38), 30.62, 11.82, 0.0, 19.13, 19.44, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:21:57.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:21:38
2025-11-03T22:21:57.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:21:57.842 [DEBUG] [Thread-123622] [transport.py] [_log()] starting thread (client mode): 0x11762740
2025-11-03T22:21:57.842 [DEBUG] [Thread-123622] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:21:57.859 [DEBUG] [Thread-123622] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:21:57.859 [INFO] [Thread-123622] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:21:57.863 [DEBUG] [Thread-123622] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:21:57.863 [DEBUG] [Thread-123622] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:21:57.863 [DEBUG] [Thread-123622] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:21:57.863 [DEBUG] [Thread-123622] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:21:57.863 [DEBUG] [Thread-123622] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:21:57.863 [DEBUG] [Thread-123622] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:21:57.863 [DEBUG] [Thread-123622] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:21:57.863 [DEBUG] [Thread-123622] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:21:57.863 [DEBUG] [Thread-123622] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:21:57.863 [DEBUG] [Thread-123622] [transport.py] [_log()] client lang: <none>
2025-11-03T22:21:57.863 [DEBUG] [Thread-123622] [transport.py] [_log()] server lang: <none>
2025-11-03T22:21:57.863 [DEBUG] [Thread-123622] [transport.py] [_log()] kex follows: False
2025-11-03T22:21:57.863 [DEBUG] [Thread-123622] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:21:57.863 [DEBUG] [Thread-123622] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:21:57.863 [DEBUG] [Thread-123622] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:21:57.864 [DEBUG] [Thread-123622] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:21:57.864 [DEBUG] [Thread-123622] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:21:57.864 [DEBUG] [Thread-123622] [transport.py] [_log()] Compression: none
2025-11-03T22:21:57.864 [DEBUG] [Thread-123622] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:21:57.885 [DEBUG] [Thread-123622] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:21:57.886 [DEBUG] [Thread-123622] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:21:57.886 [DEBUG] [Thread-123622] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:21:57.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:21:57.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:21:57.889 [DEBUG] [Thread-123622] [transport.py] [_log()] userauth is OK
2025-11-03T22:21:57.889 [DEBUG] [Thread-123622] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:21:57.889 [DEBUG] [Thread-123622] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:21:57.889 [DEBUG] [Thread-123622] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:21:57.889 [DEBUG] [Thread-123622] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:21:57.913 [INFO] [Thread-123622] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:21:57.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:21:58.545 [DEBUG] [Thread-123622] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:21:58.545 [DEBUG] [Thread-123622] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:21:58.545 [DEBUG] [Thread-123622] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:21:58.587 [DEBUG] [Thread-123622] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:21:58.587 [DEBUG] [Thread-123622] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:21:58.589 [DEBUG] [Thread-123622] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:21:58.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:21:58.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:21:58.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:21:58.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:21:58.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:21:58.607 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:21:58.607 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:21:58.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:21:58.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:21:58.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.848364 -999.00  +19.50  18.04     16   -6.30 1 1 1 1 1     0    0 25.11 -17.94 ZNESW 18.9 18.0 303.0 23.8 19.5 -25.9 19.4 -25.1 19.2 -24.8 19.4 -25.8
2025-11-03T22:21:58.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:21:58.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:21:58.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.848364
2025-11-03T22:21:58.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:21:58.609 [DEBUG] [Thread-123622] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:21:58.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:21:58.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:21:58.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:21:58.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:21:58.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:21:38', tmtdew=30.62, humidity=11.82, cloud=0.0, wind=19.13, temperature=19.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:21:38', seeing=1.15, atlas_timestamp='2025-11-03T20:21:38.650', atlas_cloud=1, atlas_rain=1, zp_data=[-0.08174999999999955, 0.048250000000001236, 0.026250000000000995, -0.06050000000000111, 0.002500000000001279, 0.027250000000002217, -0.15500000000000114, -0.3777499999999989, -0.036000000000001364, -0.016000000000000014, 0.09424999999999883, 0.08399999999999963, 0.10050000000000026, 0.04174999999999862, -0.14100000000000001, -0.5310000000000006, 0.01624999999999943, 0.09299999999999997, 0.17049999999999876, 0.09324999999999939, 0.13899999999999935, 0.07574999999999932, -0.10274999999999856, -0.5947499999999994, 0.025999999999998025, 0.1385000000000005, 0.17375000000000007, 0.2264999999999997, 0.19549999999999912, -0.09499999999999886, -0.19599999999999795, -0.004999999999999005, 0.08474999999999966], zp_timestamp='2025-11-03T20:18:00')
2025-11-03T22:21:58.683 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:21:58.695 [DEBUG] [Thread-123625] [transport.py] [_log()] starting thread (client mode): 0xed35960
2025-11-03T22:21:58.696 [DEBUG] [Thread-123625] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:21:58.710 [DEBUG] [Thread-123625] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:21:58.710 [INFO] [Thread-123625] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:21:58.718 [DEBUG] [Thread-123625] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:21:58.718 [DEBUG] [Thread-123625] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:21:58.718 [DEBUG] [Thread-123625] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:21:58.718 [DEBUG] [Thread-123625] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:21:58.718 [DEBUG] [Thread-123625] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:21:58.718 [DEBUG] [Thread-123625] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:21:58.718 [DEBUG] [Thread-123625] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:21:58.718 [DEBUG] [Thread-123625] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:21:58.718 [DEBUG] [Thread-123625] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:21:58.718 [DEBUG] [Thread-123625] [transport.py] [_log()] client lang: <none>
2025-11-03T22:21:58.718 [DEBUG] [Thread-123625] [transport.py] [_log()] server lang: <none>
2025-11-03T22:21:58.718 [DEBUG] [Thread-123625] [transport.py] [_log()] kex follows: False
2025-11-03T22:21:58.718 [DEBUG] [Thread-123625] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:21:58.718 [DEBUG] [Thread-123625] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:21:58.718 [DEBUG] [Thread-123625] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:21:58.718 [DEBUG] [Thread-123625] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:21:58.718 [DEBUG] [Thread-123625] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:21:58.718 [DEBUG] [Thread-123625] [transport.py] [_log()] Compression: none
2025-11-03T22:21:58.718 [DEBUG] [Thread-123625] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:21:58.776 [DEBUG] [Thread-123625] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:21:58.776 [DEBUG] [Thread-123625] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:21:58.776 [DEBUG] [Thread-123625] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:21:58.776 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:21:58.776 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:21:58.838 [DEBUG] [Thread-123625] [transport.py] [_log()] userauth is OK
2025-11-03T22:21:58.838 [DEBUG] [Thread-123625] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:21:58.838 [DEBUG] [Thread-123625] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:21:58.838 [DEBUG] [Thread-123625] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:21:58.838 [DEBUG] [Thread-123625] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:21:58.854 [INFO] [Thread-123625] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:21:58.854 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:21:58.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:21:59.714 [DEBUG] [Thread-123625] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:21:59.714 [DEBUG] [Thread-123625] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:21:59.762 [DEBUG] [Thread-123625] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:21:59.762 [DEBUG] [Thread-123625] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:21:59.772 [DEBUG] [Thread-123625] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:21:59.781 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:21:59.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:21:59.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:21:59.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:21:59.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:21:59.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:21:59.809 [DEBUG] [Thread-123625] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:22:04.523 [DEBUG] [Thread-123627 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:22:19.607 [DEBUG] [Thread-123628 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:22:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:22:29.833 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:22:29.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:22:32.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 22, 10), 30.77, 11.68, 0.0, 20.52, 19.44, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:22:32.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:22:10
2025-11-03T22:22:33.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:22:33.186 [DEBUG] [Thread-123629] [transport.py] [_log()] starting thread (client mode): 0xeda1030
2025-11-03T22:22:33.186 [DEBUG] [Thread-123629] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:22:33.199 [DEBUG] [Thread-123629] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:22:33.199 [INFO] [Thread-123629] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:22:33.207 [DEBUG] [Thread-123629] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:22:33.208 [DEBUG] [Thread-123629] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:22:33.208 [DEBUG] [Thread-123629] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:22:33.208 [DEBUG] [Thread-123629] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:22:33.208 [DEBUG] [Thread-123629] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:22:33.208 [DEBUG] [Thread-123629] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:22:33.208 [DEBUG] [Thread-123629] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:22:33.208 [DEBUG] [Thread-123629] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:22:33.208 [DEBUG] [Thread-123629] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:22:33.208 [DEBUG] [Thread-123629] [transport.py] [_log()] client lang: <none>
2025-11-03T22:22:33.208 [DEBUG] [Thread-123629] [transport.py] [_log()] server lang: <none>
2025-11-03T22:22:33.208 [DEBUG] [Thread-123629] [transport.py] [_log()] kex follows: False
2025-11-03T22:22:33.208 [DEBUG] [Thread-123629] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:22:33.208 [DEBUG] [Thread-123629] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:22:33.208 [DEBUG] [Thread-123629] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:22:33.208 [DEBUG] [Thread-123629] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:22:33.208 [DEBUG] [Thread-123629] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:22:33.208 [DEBUG] [Thread-123629] [transport.py] [_log()] Compression: none
2025-11-03T22:22:33.208 [DEBUG] [Thread-123629] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:22:33.239 [DEBUG] [Thread-123629] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:22:33.243 [DEBUG] [Thread-123629] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:22:33.243 [DEBUG] [Thread-123629] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:22:33.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:22:33.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:22:33.244 [DEBUG] [Thread-123629] [transport.py] [_log()] userauth is OK
2025-11-03T22:22:33.244 [DEBUG] [Thread-123629] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:22:33.245 [DEBUG] [Thread-123629] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:22:33.245 [DEBUG] [Thread-123629] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:22:33.245 [DEBUG] [Thread-123629] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:22:33.261 [INFO] [Thread-123629] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:22:33.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:22:33.916 [DEBUG] [Thread-123629] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:22:33.916 [DEBUG] [Thread-123629] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:22:33.916 [DEBUG] [Thread-123629] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:22:33.956 [DEBUG] [Thread-123629] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:22:33.956 [DEBUG] [Thread-123629] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:22:33.960 [DEBUG] [Thread-123629] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:22:33.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:22:33.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:22:33.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:22:33.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:22:33.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:22:33.986 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:22:33.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:22:33.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:22:33.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:22:33.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.848711 -999.00  +19.50  18.27     16   -6.30 1 1 1 1 1     0    0 24.91 -14.16 ZNESW 18.9 18.3 304.0 22.5 19.5 -26.2 19.4 -25.2 19.2 -25.0 19.4 -25.7
2025-11-03T22:22:33.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:22:33.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:22:33.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.848711
2025-11-03T22:22:33.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:22:33.989 [DEBUG] [Thread-123629] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:22:33.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:22:33.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:22:33.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:22:33.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:22:33.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:22:10', tmtdew=30.77, humidity=11.68, cloud=0.0, wind=20.52, temperature=19.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:22:11', seeing=1.15, atlas_timestamp='2025-11-03T20:22:08.630', atlas_cloud=1, atlas_rain=1, zp_data=[-0.08174999999999955, 0.048250000000001236, 0.026250000000000995, -0.06050000000000111, 0.002500000000001279, 0.027250000000002217, -0.15500000000000114, -0.3777499999999989, -0.036000000000001364, -0.016000000000000014, 0.09424999999999883, 0.08399999999999963, 0.10050000000000026, 0.04174999999999862, -0.14100000000000001, -0.5310000000000006, 0.01624999999999943, 0.09299999999999997, 0.17049999999999876, 0.09324999999999939, 0.13899999999999935, 0.07574999999999932, -0.10274999999999856, -0.5947499999999994, 0.025999999999998025, 0.1385000000000005, 0.17375000000000007, 0.2264999999999997, 0.19549999999999912, -0.09499999999999886, -0.19599999999999795, -0.004999999999999005, 0.08474999999999966], zp_timestamp='2025-11-03T20:18:00')
2025-11-03T22:22:34.076 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:22:34.090 [DEBUG] [Thread-123632] [transport.py] [_log()] starting thread (client mode): 0x11760310
2025-11-03T22:22:34.090 [DEBUG] [Thread-123632] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:22:34.110 [DEBUG] [Thread-123632] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:22:34.110 [INFO] [Thread-123632] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:22:34.119 [DEBUG] [Thread-123632] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:22:34.120 [DEBUG] [Thread-123632] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:22:34.120 [DEBUG] [Thread-123632] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:22:34.120 [DEBUG] [Thread-123632] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:22:34.120 [DEBUG] [Thread-123632] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:22:34.120 [DEBUG] [Thread-123632] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:22:34.120 [DEBUG] [Thread-123632] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:22:34.120 [DEBUG] [Thread-123632] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:22:34.120 [DEBUG] [Thread-123632] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:22:34.120 [DEBUG] [Thread-123632] [transport.py] [_log()] client lang: <none>
2025-11-03T22:22:34.120 [DEBUG] [Thread-123632] [transport.py] [_log()] server lang: <none>
2025-11-03T22:22:34.120 [DEBUG] [Thread-123632] [transport.py] [_log()] kex follows: False
2025-11-03T22:22:34.120 [DEBUG] [Thread-123632] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:22:34.120 [DEBUG] [Thread-123632] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:22:34.121 [DEBUG] [Thread-123632] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:22:34.121 [DEBUG] [Thread-123632] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:22:34.121 [DEBUG] [Thread-123632] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:22:34.121 [DEBUG] [Thread-123632] [transport.py] [_log()] Compression: none
2025-11-03T22:22:34.121 [DEBUG] [Thread-123632] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:22:34.177 [DEBUG] [Thread-123632] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:22:34.178 [DEBUG] [Thread-123632] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:22:34.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:22:34.179 [DEBUG] [Thread-123632] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:22:34.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:22:34.233 [DEBUG] [Thread-123632] [transport.py] [_log()] userauth is OK
2025-11-03T22:22:34.233 [DEBUG] [Thread-123632] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:22:34.233 [DEBUG] [Thread-123632] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:22:34.233 [DEBUG] [Thread-123632] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:22:34.234 [DEBUG] [Thread-123632] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:22:34.259 [INFO] [Thread-123632] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:22:34.259 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:22:34.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:22:34.647 [DEBUG] [Thread-123634 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:22:35.072 [DEBUG] [Thread-123632] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:22:35.072 [DEBUG] [Thread-123632] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:22:35.123 [DEBUG] [Thread-123632] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:22:35.123 [DEBUG] [Thread-123632] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:22:35.133 [DEBUG] [Thread-123632] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:22:35.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:22:35.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:22:35.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:22:35.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:22:35.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:22:35.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:22:35.177 [DEBUG] [Thread-123632] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:22:49.696 [DEBUG] [Thread-123635 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:22:52.510 [DEBUG] [Thread-123636 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:22:52.851 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:22:52.851 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:23:04.724 [DEBUG] [Thread-123637 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:23:05.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:23:05.195 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:23:05.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:23:05.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 22, 43), 31.02, 11.1, 0.0, 20.61, 19.53, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:23:05.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:22:43
2025-11-03T22:23:06.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:23:06.295 [DEBUG] [Thread-123638] [transport.py] [_log()] starting thread (client mode): 0x11761de0
2025-11-03T22:23:06.295 [DEBUG] [Thread-123638] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:23:06.314 [DEBUG] [Thread-123638] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:23:06.314 [INFO] [Thread-123638] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:23:06.317 [DEBUG] [Thread-123638] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:23:06.317 [DEBUG] [Thread-123638] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:23:06.317 [DEBUG] [Thread-123638] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:23:06.317 [DEBUG] [Thread-123638] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:23:06.317 [DEBUG] [Thread-123638] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:23:06.317 [DEBUG] [Thread-123638] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:23:06.317 [DEBUG] [Thread-123638] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:23:06.317 [DEBUG] [Thread-123638] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:23:06.317 [DEBUG] [Thread-123638] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:23:06.317 [DEBUG] [Thread-123638] [transport.py] [_log()] client lang: <none>
2025-11-03T22:23:06.317 [DEBUG] [Thread-123638] [transport.py] [_log()] server lang: <none>
2025-11-03T22:23:06.317 [DEBUG] [Thread-123638] [transport.py] [_log()] kex follows: False
2025-11-03T22:23:06.318 [DEBUG] [Thread-123638] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:23:06.318 [DEBUG] [Thread-123638] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:23:06.318 [DEBUG] [Thread-123638] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:23:06.318 [DEBUG] [Thread-123638] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:23:06.318 [DEBUG] [Thread-123638] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:23:06.318 [DEBUG] [Thread-123638] [transport.py] [_log()] Compression: none
2025-11-03T22:23:06.318 [DEBUG] [Thread-123638] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:23:06.332 [DEBUG] [Thread-123638] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:23:06.333 [DEBUG] [Thread-123638] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:23:06.333 [DEBUG] [Thread-123638] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:23:06.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:23:06.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:23:06.334 [DEBUG] [Thread-123638] [transport.py] [_log()] userauth is OK
2025-11-03T22:23:06.334 [DEBUG] [Thread-123638] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:23:06.334 [DEBUG] [Thread-123638] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:23:06.334 [DEBUG] [Thread-123638] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:23:06.334 [DEBUG] [Thread-123638] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:23:06.346 [INFO] [Thread-123638] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:23:06.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:23:06.947 [DEBUG] [Thread-123638] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:23:06.947 [DEBUG] [Thread-123638] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:23:06.947 [DEBUG] [Thread-123638] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:23:06.988 [DEBUG] [Thread-123638] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:23:06.988 [DEBUG] [Thread-123638] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:23:06.990 [DEBUG] [Thread-123638] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:23:07.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:23:07.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:23:07.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:23:07.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:23:07.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:23:07.009 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:23:07.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:23:07.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:23:07.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:23:07.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.849058 -999.00  +19.50  22.50     16   -6.40 1 1 1 1 1     0    0 25.02 -11.74 ZNESW 16.4 22.5 300.7 25.9 19.5 -26.2 19.4 -25.2 19.2 -24.5 19.4 -25.9
2025-11-03T22:23:07.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:23:07.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:23:07.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.849058
2025-11-03T22:23:07.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:23:07.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:23:07.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:23:07.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:23:07.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:23:07.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:22:43', tmtdew=31.02, humidity=11.1, cloud=0.0, wind=20.61, temperature=19.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:22:43', seeing=1.26, atlas_timestamp='2025-11-03T20:22:38.611', atlas_cloud=1, atlas_rain=1, zp_data=[-0.08174999999999955, 0.048250000000001236, 0.026250000000000995, -0.06050000000000111, 0.002500000000001279, 0.027250000000002217, -0.15500000000000114, -0.3777499999999989, -0.036000000000001364, -0.016000000000000014, 0.09424999999999883, 0.08399999999999963, 0.10050000000000026, 0.04174999999999862, -0.14100000000000001, -0.5310000000000006, 0.01624999999999943, 0.09299999999999997, 0.17049999999999876, 0.09324999999999939, 0.13899999999999935, 0.07574999999999932, -0.10274999999999856, -0.5947499999999994, 0.025999999999998025, 0.1385000000000005, 0.17375000000000007, 0.2264999999999997, 0.19549999999999912, -0.09499999999999886, -0.19599999999999795, -0.004999999999999005, 0.08474999999999966], zp_timestamp='2025-11-03T20:18:00')
2025-11-03T22:23:07.012 [DEBUG] [Thread-123638] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:23:07.090 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:23:07.101 [DEBUG] [Thread-123641] [transport.py] [_log()] starting thread (client mode): 0xed5c7c0
2025-11-03T22:23:07.102 [DEBUG] [Thread-123641] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:23:07.117 [DEBUG] [Thread-123641] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:23:07.118 [INFO] [Thread-123641] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:23:07.127 [DEBUG] [Thread-123641] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:23:07.128 [DEBUG] [Thread-123641] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:23:07.128 [DEBUG] [Thread-123641] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:23:07.128 [DEBUG] [Thread-123641] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:23:07.128 [DEBUG] [Thread-123641] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:23:07.128 [DEBUG] [Thread-123641] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:23:07.128 [DEBUG] [Thread-123641] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:23:07.128 [DEBUG] [Thread-123641] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:23:07.129 [DEBUG] [Thread-123641] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:23:07.129 [DEBUG] [Thread-123641] [transport.py] [_log()] client lang: <none>
2025-11-03T22:23:07.129 [DEBUG] [Thread-123641] [transport.py] [_log()] server lang: <none>
2025-11-03T22:23:07.129 [DEBUG] [Thread-123641] [transport.py] [_log()] kex follows: False
2025-11-03T22:23:07.129 [DEBUG] [Thread-123641] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:23:07.129 [DEBUG] [Thread-123641] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:23:07.129 [DEBUG] [Thread-123641] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:23:07.129 [DEBUG] [Thread-123641] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:23:07.130 [DEBUG] [Thread-123641] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:23:07.130 [DEBUG] [Thread-123641] [transport.py] [_log()] Compression: none
2025-11-03T22:23:07.130 [DEBUG] [Thread-123641] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:23:07.190 [DEBUG] [Thread-123641] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:23:07.191 [DEBUG] [Thread-123641] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:23:07.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:23:07.192 [DEBUG] [Thread-123641] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:23:07.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:23:07.255 [DEBUG] [Thread-123641] [transport.py] [_log()] userauth is OK
2025-11-03T22:23:07.256 [DEBUG] [Thread-123641] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:23:07.256 [DEBUG] [Thread-123641] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:23:07.256 [DEBUG] [Thread-123641] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:23:07.256 [DEBUG] [Thread-123641] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:23:07.280 [INFO] [Thread-123641] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:23:07.280 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:23:07.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:23:08.199 [DEBUG] [Thread-123641] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:23:08.199 [DEBUG] [Thread-123641] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:23:08.240 [DEBUG] [Thread-123641] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:23:08.240 [DEBUG] [Thread-123641] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:23:08.251 [DEBUG] [Thread-123641] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:23:08.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:23:08.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:23:08.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:23:08.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:23:08.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:23:08.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:23:08.291 [DEBUG] [Thread-123641] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:23:19.769 [DEBUG] [Thread-123643 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:23:34.829 [DEBUG] [Thread-123644 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:23:38.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:23:38.312 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:23:38.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:23:38.476 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:23:40.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 23, 15), 31.0, 11.12, 0.0, 20.93, 19.53, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:23:40.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:23:15
2025-11-03T22:23:40.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:23:40.885 [DEBUG] [Thread-123645] [transport.py] [_log()] starting thread (client mode): 0xed5e4d0
2025-11-03T22:23:40.885 [DEBUG] [Thread-123645] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:23:40.901 [DEBUG] [Thread-123645] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:23:40.902 [INFO] [Thread-123645] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:23:40.905 [DEBUG] [Thread-123645] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:23:40.905 [DEBUG] [Thread-123645] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:23:40.905 [DEBUG] [Thread-123645] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:23:40.905 [DEBUG] [Thread-123645] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:23:40.905 [DEBUG] [Thread-123645] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:23:40.905 [DEBUG] [Thread-123645] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:23:40.905 [DEBUG] [Thread-123645] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:23:40.905 [DEBUG] [Thread-123645] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:23:40.905 [DEBUG] [Thread-123645] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:23:40.906 [DEBUG] [Thread-123645] [transport.py] [_log()] client lang: <none>
2025-11-03T22:23:40.906 [DEBUG] [Thread-123645] [transport.py] [_log()] server lang: <none>
2025-11-03T22:23:40.906 [DEBUG] [Thread-123645] [transport.py] [_log()] kex follows: False
2025-11-03T22:23:40.906 [DEBUG] [Thread-123645] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:23:40.906 [DEBUG] [Thread-123645] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:23:40.908 [DEBUG] [Thread-123645] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:23:40.908 [DEBUG] [Thread-123645] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:23:40.908 [DEBUG] [Thread-123645] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:23:40.908 [DEBUG] [Thread-123645] [transport.py] [_log()] Compression: none
2025-11-03T22:23:40.910 [DEBUG] [Thread-123645] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:23:40.927 [DEBUG] [Thread-123645] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:23:40.928 [DEBUG] [Thread-123645] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:23:40.928 [DEBUG] [Thread-123645] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:23:40.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:23:40.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:23:40.930 [DEBUG] [Thread-123645] [transport.py] [_log()] userauth is OK
2025-11-03T22:23:40.931 [DEBUG] [Thread-123645] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:23:40.931 [DEBUG] [Thread-123645] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:23:40.931 [DEBUG] [Thread-123645] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:23:40.931 [DEBUG] [Thread-123645] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:23:40.952 [INFO] [Thread-123645] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:23:40.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:23:41.562 [DEBUG] [Thread-123645] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:23:41.562 [DEBUG] [Thread-123645] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:23:41.562 [DEBUG] [Thread-123645] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:23:41.602 [DEBUG] [Thread-123645] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:23:41.602 [DEBUG] [Thread-123645] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:23:41.605 [DEBUG] [Thread-123645] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:23:41.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:23:41.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:23:41.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:23:41.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:23:41.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:23:41.629 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:23:41.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:23:41.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:23:41.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:23:41.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.849405 -999.00  +19.50  17.95     16   -6.30 1 1 1 1 1     0    0 25.18 -9.53 ZNESW 17.5 17.9 306.4 25.1 19.5 -26.0 19.4 -25.1 19.2 -24.8 19.5 -25.8
2025-11-03T22:23:41.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:23:41.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:23:41.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.849405
2025-11-03T22:23:41.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:23:41.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:23:41.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:23:41.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:23:41.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:23:41.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:23:15', tmtdew=31.0, humidity=11.12, cloud=0.0, wind=20.93, temperature=19.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:23:16', seeing=1.21, atlas_timestamp='2025-11-03T20:23:08.592', atlas_cloud=1, atlas_rain=1, zp_data=[-0.08174999999999955, 0.048250000000001236, 0.026250000000000995, -0.06050000000000111, 0.002500000000001279, 0.027250000000002217, -0.15500000000000114, -0.3777499999999989, -0.036000000000001364, -0.016000000000000014, 0.09424999999999883, 0.08399999999999963, 0.10050000000000026, 0.04174999999999862, -0.14100000000000001, -0.5310000000000006, 0.01624999999999943, 0.09299999999999997, 0.17049999999999876, 0.09324999999999939, 0.13899999999999935, 0.07574999999999932, -0.10274999999999856, -0.5947499999999994, 0.025999999999998025, 0.1385000000000005, 0.17375000000000007, 0.2264999999999997, 0.19549999999999912, -0.09499999999999886, -0.19599999999999795, -0.004999999999999005, 0.08474999999999966], zp_timestamp='2025-11-03T20:22:00')
2025-11-03T22:23:41.632 [DEBUG] [Thread-123645] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:23:41.718 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:23:41.731 [DEBUG] [Thread-123648] [transport.py] [_log()] starting thread (client mode): 0xed070a0
2025-11-03T22:23:41.731 [DEBUG] [Thread-123648] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:23:41.747 [DEBUG] [Thread-123648] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:23:41.747 [INFO] [Thread-123648] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:23:41.756 [DEBUG] [Thread-123648] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:23:41.756 [DEBUG] [Thread-123648] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:23:41.757 [DEBUG] [Thread-123648] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:23:41.757 [DEBUG] [Thread-123648] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:23:41.757 [DEBUG] [Thread-123648] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:23:41.757 [DEBUG] [Thread-123648] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:23:41.757 [DEBUG] [Thread-123648] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:23:41.757 [DEBUG] [Thread-123648] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:23:41.757 [DEBUG] [Thread-123648] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:23:41.757 [DEBUG] [Thread-123648] [transport.py] [_log()] client lang: <none>
2025-11-03T22:23:41.758 [DEBUG] [Thread-123648] [transport.py] [_log()] server lang: <none>
2025-11-03T22:23:41.758 [DEBUG] [Thread-123648] [transport.py] [_log()] kex follows: False
2025-11-03T22:23:41.758 [DEBUG] [Thread-123648] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:23:41.758 [DEBUG] [Thread-123648] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:23:41.758 [DEBUG] [Thread-123648] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:23:41.758 [DEBUG] [Thread-123648] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:23:41.758 [DEBUG] [Thread-123648] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:23:41.758 [DEBUG] [Thread-123648] [transport.py] [_log()] Compression: none
2025-11-03T22:23:41.758 [DEBUG] [Thread-123648] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:23:41.816 [DEBUG] [Thread-123648] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:23:41.817 [DEBUG] [Thread-123648] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:23:41.817 [DEBUG] [Thread-123648] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:23:41.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:23:41.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:23:41.873 [DEBUG] [Thread-123648] [transport.py] [_log()] userauth is OK
2025-11-03T22:23:41.873 [DEBUG] [Thread-123648] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:23:41.873 [DEBUG] [Thread-123648] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:23:41.873 [DEBUG] [Thread-123648] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:23:41.873 [DEBUG] [Thread-123648] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:23:41.892 [INFO] [Thread-123648] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:23:41.892 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:23:41.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:23:42.750 [DEBUG] [Thread-123648] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:23:42.750 [DEBUG] [Thread-123648] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:23:42.800 [DEBUG] [Thread-123648] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:23:42.800 [DEBUG] [Thread-123648] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:23:42.810 [DEBUG] [Thread-123648] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:23:42.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:23:42.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:23:42.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:23:42.838 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:23:42.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:23:42.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:23:42.848 [DEBUG] [Thread-123648] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:23:46.174 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:23:49.852 [DEBUG] [Thread-123650 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:23:50.268 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:23:52.775 [DEBUG] [Thread-123651 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:23:53.065 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:23:53.067 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:24:04.904 [DEBUG] [Thread-123652 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:24:12.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:24:12.869 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:24:12.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:24:13.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 23, 48), 30.99, 11.08, 0.0, 19.9, 19.48, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:24:13.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:23:48
2025-11-03T22:24:14.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:24:14.245 [DEBUG] [Thread-123653] [transport.py] [_log()] starting thread (client mode): 0xeda2740
2025-11-03T22:24:14.245 [DEBUG] [Thread-123653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:24:14.266 [DEBUG] [Thread-123653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:24:14.266 [INFO] [Thread-123653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:24:14.269 [DEBUG] [Thread-123653] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:24:14.269 [DEBUG] [Thread-123653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:24:14.269 [DEBUG] [Thread-123653] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:24:14.269 [DEBUG] [Thread-123653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:24:14.269 [DEBUG] [Thread-123653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:24:14.269 [DEBUG] [Thread-123653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:24:14.270 [DEBUG] [Thread-123653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:24:14.270 [DEBUG] [Thread-123653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:24:14.270 [DEBUG] [Thread-123653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:24:14.270 [DEBUG] [Thread-123653] [transport.py] [_log()] client lang: <none>
2025-11-03T22:24:14.270 [DEBUG] [Thread-123653] [transport.py] [_log()] server lang: <none>
2025-11-03T22:24:14.270 [DEBUG] [Thread-123653] [transport.py] [_log()] kex follows: False
2025-11-03T22:24:14.270 [DEBUG] [Thread-123653] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:24:14.270 [DEBUG] [Thread-123653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:24:14.270 [DEBUG] [Thread-123653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:24:14.270 [DEBUG] [Thread-123653] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:24:14.270 [DEBUG] [Thread-123653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:24:14.270 [DEBUG] [Thread-123653] [transport.py] [_log()] Compression: none
2025-11-03T22:24:14.271 [DEBUG] [Thread-123653] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:24:14.285 [DEBUG] [Thread-123653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:24:14.285 [DEBUG] [Thread-123653] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:24:14.285 [DEBUG] [Thread-123653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:24:14.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:24:14.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:24:14.287 [DEBUG] [Thread-123653] [transport.py] [_log()] userauth is OK
2025-11-03T22:24:14.287 [DEBUG] [Thread-123653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:24:14.287 [DEBUG] [Thread-123653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:24:14.287 [DEBUG] [Thread-123653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:24:14.287 [DEBUG] [Thread-123653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:24:14.305 [INFO] [Thread-123653] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:24:14.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:24:14.988 [DEBUG] [Thread-123653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:24:14.988 [DEBUG] [Thread-123653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:24:14.988 [DEBUG] [Thread-123653] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:24:15.029 [DEBUG] [Thread-123653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:24:15.029 [DEBUG] [Thread-123653] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:24:15.031 [DEBUG] [Thread-123653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:24:15.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:24:15.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:24:15.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:24:15.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:24:15.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:24:15.047 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:24:15.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:24:15.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:24:15.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:24:15.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.849753 -999.00  +19.50  15.44     16   -6.40 1 1 1 1 1     0    0 25.68 -6.57 ZNESW 18.6 15.4 312.2 21.6 19.4 -26.0 19.4 -25.0 19.2 -24.6 19.4 -25.6
2025-11-03T22:24:15.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:24:15.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:24:15.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.849753
2025-11-03T22:24:15.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:24:15.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:24:15.048 [DEBUG] [Thread-123653] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:24:15.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:24:15.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:24:15.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:24:15.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:23:48', tmtdew=30.99, humidity=11.08, cloud=0.0, wind=19.9, temperature=19.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:23:48', seeing=1.14, atlas_timestamp='2025-11-03T20:23:38.659', atlas_cloud=1, atlas_rain=1, zp_data=[-0.08174999999999955, 0.048250000000001236, 0.026250000000000995, -0.06050000000000111, 0.002500000000001279, 0.027250000000002217, -0.15500000000000114, -0.3777499999999989, -0.036000000000001364, -0.016000000000000014, 0.09424999999999883, 0.08399999999999963, 0.10050000000000026, 0.04174999999999862, -0.14100000000000001, -0.5310000000000006, 0.01624999999999943, 0.09299999999999997, 0.17049999999999876, 0.09324999999999939, 0.13899999999999935, 0.07574999999999932, -0.10274999999999856, -0.5947499999999994, 0.025999999999998025, 0.1385000000000005, 0.17375000000000007, 0.2264999999999997, 0.19549999999999912, -0.09499999999999886, -0.19599999999999795, -0.004999999999999005, 0.08474999999999966], zp_timestamp='2025-11-03T20:22:00')
2025-11-03T22:24:15.126 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:24:15.139 [DEBUG] [Thread-123656] [transport.py] [_log()] starting thread (client mode): 0xed5efe0
2025-11-03T22:24:15.139 [DEBUG] [Thread-123656] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:24:15.154 [DEBUG] [Thread-123656] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:24:15.154 [INFO] [Thread-123656] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:24:15.163 [DEBUG] [Thread-123656] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:24:15.163 [DEBUG] [Thread-123656] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:24:15.163 [DEBUG] [Thread-123656] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:24:15.163 [DEBUG] [Thread-123656] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:24:15.163 [DEBUG] [Thread-123656] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:24:15.163 [DEBUG] [Thread-123656] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:24:15.163 [DEBUG] [Thread-123656] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:24:15.163 [DEBUG] [Thread-123656] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:24:15.163 [DEBUG] [Thread-123656] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:24:15.163 [DEBUG] [Thread-123656] [transport.py] [_log()] client lang: <none>
2025-11-03T22:24:15.163 [DEBUG] [Thread-123656] [transport.py] [_log()] server lang: <none>
2025-11-03T22:24:15.163 [DEBUG] [Thread-123656] [transport.py] [_log()] kex follows: False
2025-11-03T22:24:15.163 [DEBUG] [Thread-123656] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:24:15.163 [DEBUG] [Thread-123656] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:24:15.163 [DEBUG] [Thread-123656] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:24:15.163 [DEBUG] [Thread-123656] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:24:15.163 [DEBUG] [Thread-123656] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:24:15.163 [DEBUG] [Thread-123656] [transport.py] [_log()] Compression: none
2025-11-03T22:24:15.163 [DEBUG] [Thread-123656] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:24:15.220 [DEBUG] [Thread-123656] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:24:15.220 [DEBUG] [Thread-123656] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:24:15.220 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:24:15.220 [DEBUG] [Thread-123656] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:24:15.220 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:24:15.281 [DEBUG] [Thread-123656] [transport.py] [_log()] userauth is OK
2025-11-03T22:24:15.281 [DEBUG] [Thread-123656] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:24:15.281 [DEBUG] [Thread-123656] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:24:15.281 [DEBUG] [Thread-123656] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:24:15.281 [DEBUG] [Thread-123656] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:24:15.299 [INFO] [Thread-123656] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:24:15.299 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:24:15.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:24:16.173 [DEBUG] [Thread-123656] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:24:16.173 [DEBUG] [Thread-123656] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:24:16.224 [DEBUG] [Thread-123656] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:24:16.224 [DEBUG] [Thread-123656] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:24:16.234 [DEBUG] [Thread-123656] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:24:16.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:24:16.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:24:16.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:24:16.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:24:16.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:24:16.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:24:16.274 [DEBUG] [Thread-123656] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:24:19.932 [DEBUG] [Thread-123658 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:24:34.973 [DEBUG] [Thread-123659 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:24:46.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:24:46.295 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:24:46.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:24:47.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 24, 20), 30.96, 11.1, 0.0, 20.08, 19.43, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:24:47.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:24:20
2025-11-03T22:24:47.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:24:47.357 [DEBUG] [Thread-123660] [transport.py] [_log()] starting thread (client mode): 0xed12a40
2025-11-03T22:24:47.357 [DEBUG] [Thread-123660] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:24:47.376 [DEBUG] [Thread-123660] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:24:47.376 [INFO] [Thread-123660] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:24:47.379 [DEBUG] [Thread-123660] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:24:47.379 [DEBUG] [Thread-123660] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:24:47.379 [DEBUG] [Thread-123660] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:24:47.379 [DEBUG] [Thread-123660] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:24:47.379 [DEBUG] [Thread-123660] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:24:47.379 [DEBUG] [Thread-123660] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:24:47.379 [DEBUG] [Thread-123660] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:24:47.379 [DEBUG] [Thread-123660] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:24:47.379 [DEBUG] [Thread-123660] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:24:47.379 [DEBUG] [Thread-123660] [transport.py] [_log()] client lang: <none>
2025-11-03T22:24:47.379 [DEBUG] [Thread-123660] [transport.py] [_log()] server lang: <none>
2025-11-03T22:24:47.379 [DEBUG] [Thread-123660] [transport.py] [_log()] kex follows: False
2025-11-03T22:24:47.379 [DEBUG] [Thread-123660] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:24:47.379 [DEBUG] [Thread-123660] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:24:47.379 [DEBUG] [Thread-123660] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:24:47.380 [DEBUG] [Thread-123660] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:24:47.380 [DEBUG] [Thread-123660] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:24:47.380 [DEBUG] [Thread-123660] [transport.py] [_log()] Compression: none
2025-11-03T22:24:47.380 [DEBUG] [Thread-123660] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:24:47.397 [DEBUG] [Thread-123660] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:24:47.397 [DEBUG] [Thread-123660] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:24:47.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:24:47.399 [DEBUG] [Thread-123660] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:24:47.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:24:47.401 [DEBUG] [Thread-123660] [transport.py] [_log()] userauth is OK
2025-11-03T22:24:47.401 [DEBUG] [Thread-123660] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:24:47.401 [DEBUG] [Thread-123660] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:24:47.401 [DEBUG] [Thread-123660] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:24:47.401 [DEBUG] [Thread-123660] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:24:47.426 [INFO] [Thread-123660] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:24:47.426 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:24:48.076 [DEBUG] [Thread-123660] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:24:48.076 [DEBUG] [Thread-123660] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:24:48.077 [DEBUG] [Thread-123660] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:24:48.117 [DEBUG] [Thread-123660] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:24:48.117 [DEBUG] [Thread-123660] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:24:48.121 [DEBUG] [Thread-123660] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:24:48.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:24:48.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:24:48.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:24:48.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:24:48.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:24:48.144 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:24:48.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:24:48.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:24:48.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:24:48.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.850100 -999.00  +19.50  19.66     16   -6.40 1 1 1 1 1     0    0 26.05 -4.24 ZNESW 21.6 19.7 298.4 26.8 19.5 -26.1 19.4 -25.1 19.2 -24.7 19.5 -25.7
2025-11-03T22:24:48.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:24:48.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:24:48.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.850100
2025-11-03T22:24:48.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:24:48.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:24:48.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:24:48.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:24:48.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:24:48.147 [DEBUG] [Thread-123660] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:24:48.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:24:20', tmtdew=30.96, humidity=11.1, cloud=0.0, wind=20.08, temperature=19.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:24:21', seeing=1.14, atlas_timestamp='2025-11-03T20:24:08.640', atlas_cloud=1, atlas_rain=1, zp_data=[-0.08174999999999955, 0.048250000000001236, 0.026250000000000995, -0.06050000000000111, 0.002500000000001279, 0.027250000000002217, -0.15500000000000114, -0.3777499999999989, -0.036000000000001364, -0.016000000000000014, 0.09424999999999883, 0.08399999999999963, 0.10050000000000026, 0.04174999999999862, -0.14100000000000001, -0.5310000000000006, 0.01624999999999943, 0.09299999999999997, 0.17049999999999876, 0.09324999999999939, 0.13899999999999935, 0.07574999999999932, -0.10274999999999856, -0.5947499999999994, 0.025999999999998025, 0.1385000000000005, 0.17375000000000007, 0.2264999999999997, 0.19549999999999912, -0.09499999999999886, -0.19599999999999795, -0.004999999999999005, 0.08474999999999966], zp_timestamp='2025-11-03T20:22:00')
2025-11-03T22:24:48.238 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:24:48.250 [DEBUG] [Thread-123663] [transport.py] [_log()] starting thread (client mode): 0x1179b730
2025-11-03T22:24:48.250 [DEBUG] [Thread-123663] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:24:48.265 [DEBUG] [Thread-123663] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:24:48.265 [INFO] [Thread-123663] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:24:48.273 [DEBUG] [Thread-123663] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:24:48.274 [DEBUG] [Thread-123663] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:24:48.274 [DEBUG] [Thread-123663] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:24:48.274 [DEBUG] [Thread-123663] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:24:48.274 [DEBUG] [Thread-123663] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:24:48.274 [DEBUG] [Thread-123663] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:24:48.274 [DEBUG] [Thread-123663] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:24:48.274 [DEBUG] [Thread-123663] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:24:48.274 [DEBUG] [Thread-123663] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:24:48.274 [DEBUG] [Thread-123663] [transport.py] [_log()] client lang: <none>
2025-11-03T22:24:48.274 [DEBUG] [Thread-123663] [transport.py] [_log()] server lang: <none>
2025-11-03T22:24:48.274 [DEBUG] [Thread-123663] [transport.py] [_log()] kex follows: False
2025-11-03T22:24:48.274 [DEBUG] [Thread-123663] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:24:48.274 [DEBUG] [Thread-123663] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:24:48.274 [DEBUG] [Thread-123663] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:24:48.274 [DEBUG] [Thread-123663] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:24:48.274 [DEBUG] [Thread-123663] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:24:48.274 [DEBUG] [Thread-123663] [transport.py] [_log()] Compression: none
2025-11-03T22:24:48.274 [DEBUG] [Thread-123663] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:24:48.335 [DEBUG] [Thread-123663] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:24:48.335 [DEBUG] [Thread-123663] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:24:48.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:24:48.336 [DEBUG] [Thread-123663] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:24:48.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:24:48.394 [DEBUG] [Thread-123663] [transport.py] [_log()] userauth is OK
2025-11-03T22:24:48.394 [DEBUG] [Thread-123663] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:24:48.394 [DEBUG] [Thread-123663] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:24:48.394 [DEBUG] [Thread-123663] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:24:48.394 [DEBUG] [Thread-123663] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:24:48.408 [INFO] [Thread-123663] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:24:48.408 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:24:48.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:24:49.241 [DEBUG] [Thread-123663] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:24:49.241 [DEBUG] [Thread-123663] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:24:49.292 [DEBUG] [Thread-123663] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:24:49.292 [DEBUG] [Thread-123663] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:24:49.301 [DEBUG] [Thread-123663] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:24:49.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:24:49.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:24:49.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:24:49.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:24:49.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:24:49.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:24:49.340 [DEBUG] [Thread-123663] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:24:50.010 [DEBUG] [Thread-123665 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:24:52.885 [DEBUG] [Thread-123666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:24:53.278 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:24:53.279 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:25:05.057 [DEBUG] [Thread-123667 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:25:19.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:25:19.362 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:25:19.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:25:20.091 [DEBUG] [Thread-123668 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:25:20.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 24, 53), 31.09, 11.17, 0.0, 20.15, 19.49, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:25:20.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:24:53
2025-11-03T22:25:20.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:25:20.434 [DEBUG] [Thread-123669] [transport.py] [_log()] starting thread (client mode): 0xed37820
2025-11-03T22:25:20.434 [DEBUG] [Thread-123669] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:25:20.453 [DEBUG] [Thread-123669] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:25:20.453 [INFO] [Thread-123669] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:25:20.455 [DEBUG] [Thread-123669] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:25:20.455 [DEBUG] [Thread-123669] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:25:20.456 [DEBUG] [Thread-123669] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:25:20.456 [DEBUG] [Thread-123669] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:25:20.456 [DEBUG] [Thread-123669] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:25:20.456 [DEBUG] [Thread-123669] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:25:20.456 [DEBUG] [Thread-123669] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:25:20.456 [DEBUG] [Thread-123669] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:25:20.456 [DEBUG] [Thread-123669] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:25:20.456 [DEBUG] [Thread-123669] [transport.py] [_log()] client lang: <none>
2025-11-03T22:25:20.456 [DEBUG] [Thread-123669] [transport.py] [_log()] server lang: <none>
2025-11-03T22:25:20.456 [DEBUG] [Thread-123669] [transport.py] [_log()] kex follows: False
2025-11-03T22:25:20.456 [DEBUG] [Thread-123669] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:25:20.456 [DEBUG] [Thread-123669] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:25:20.457 [DEBUG] [Thread-123669] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:25:20.457 [DEBUG] [Thread-123669] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:25:20.457 [DEBUG] [Thread-123669] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:25:20.457 [DEBUG] [Thread-123669] [transport.py] [_log()] Compression: none
2025-11-03T22:25:20.457 [DEBUG] [Thread-123669] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:25:20.474 [DEBUG] [Thread-123669] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:25:20.475 [DEBUG] [Thread-123669] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:25:20.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:25:20.476 [DEBUG] [Thread-123669] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:25:20.477 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:25:20.478 [DEBUG] [Thread-123669] [transport.py] [_log()] userauth is OK
2025-11-03T22:25:20.478 [DEBUG] [Thread-123669] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:25:20.478 [DEBUG] [Thread-123669] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:25:20.478 [DEBUG] [Thread-123669] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:25:20.478 [DEBUG] [Thread-123669] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:25:20.501 [INFO] [Thread-123669] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:25:20.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:25:21.131 [DEBUG] [Thread-123669] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:25:21.131 [DEBUG] [Thread-123669] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:25:21.131 [DEBUG] [Thread-123669] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:25:21.172 [DEBUG] [Thread-123669] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:25:21.172 [DEBUG] [Thread-123669] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:25:21.175 [DEBUG] [Thread-123669] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:25:21.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:25:21.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:25:21.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:25:21.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:25:21.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:25:21.193 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:25:21.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:25:21.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:25:21.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:25:21.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.850794 -999.00  +19.60  22.80     16   -6.40 1 1 1 1 1     0    0 25.70 1.24 ZNESW 20.2 22.8 305.2 25.9 19.5 -26.0 19.4 -25.0 19.2 -24.5 19.5 -25.7
2025-11-03T22:25:21.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:25:21.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:25:21.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.850794
2025-11-03T22:25:21.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:25:21.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:25:21.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:25:21.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:25:21.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:25:21.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:24:53', tmtdew=31.09, humidity=11.17, cloud=0.0, wind=20.15, temperature=19.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:24:53', seeing=1.08, atlas_timestamp='2025-11-03T20:25:08.602', atlas_cloud=1, atlas_rain=1, zp_data=[-0.08174999999999955, 0.048250000000001236, 0.026250000000000995, -0.06050000000000111, 0.002500000000001279, 0.027250000000002217, -0.15500000000000114, -0.3777499999999989, -0.036000000000001364, -0.016000000000000014, 0.09424999999999883, 0.08399999999999963, 0.10050000000000026, 0.04174999999999862, -0.14100000000000001, -0.5310000000000006, 0.01624999999999943, 0.09299999999999997, 0.17049999999999876, 0.09324999999999939, 0.13899999999999935, 0.07574999999999932, -0.10274999999999856, -0.5947499999999994, 0.025999999999998025, 0.1385000000000005, 0.17375000000000007, 0.2264999999999997, 0.19549999999999912, -0.09499999999999886, -0.19599999999999795, -0.004999999999999005, 0.08474999999999966], zp_timestamp='2025-11-03T20:22:00')
2025-11-03T22:25:21.194 [DEBUG] [Thread-123669] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:25:21.266 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:25:21.278 [DEBUG] [Thread-123672] [transport.py] [_log()] starting thread (client mode): 0xedc70d0
2025-11-03T22:25:21.278 [DEBUG] [Thread-123672] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:25:21.293 [DEBUG] [Thread-123672] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:25:21.293 [INFO] [Thread-123672] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:25:21.301 [DEBUG] [Thread-123672] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:25:21.301 [DEBUG] [Thread-123672] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:25:21.301 [DEBUG] [Thread-123672] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:25:21.301 [DEBUG] [Thread-123672] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:25:21.301 [DEBUG] [Thread-123672] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:25:21.301 [DEBUG] [Thread-123672] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:25:21.301 [DEBUG] [Thread-123672] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:25:21.301 [DEBUG] [Thread-123672] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:25:21.301 [DEBUG] [Thread-123672] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:25:21.301 [DEBUG] [Thread-123672] [transport.py] [_log()] client lang: <none>
2025-11-03T22:25:21.301 [DEBUG] [Thread-123672] [transport.py] [_log()] server lang: <none>
2025-11-03T22:25:21.301 [DEBUG] [Thread-123672] [transport.py] [_log()] kex follows: False
2025-11-03T22:25:21.301 [DEBUG] [Thread-123672] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:25:21.301 [DEBUG] [Thread-123672] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:25:21.301 [DEBUG] [Thread-123672] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:25:21.301 [DEBUG] [Thread-123672] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:25:21.301 [DEBUG] [Thread-123672] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:25:21.301 [DEBUG] [Thread-123672] [transport.py] [_log()] Compression: none
2025-11-03T22:25:21.301 [DEBUG] [Thread-123672] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:25:21.359 [DEBUG] [Thread-123672] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:25:21.359 [DEBUG] [Thread-123672] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:25:21.359 [DEBUG] [Thread-123672] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:25:21.359 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:25:21.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:25:21.418 [DEBUG] [Thread-123672] [transport.py] [_log()] userauth is OK
2025-11-03T22:25:21.418 [DEBUG] [Thread-123672] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:25:21.418 [DEBUG] [Thread-123672] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:25:21.418 [DEBUG] [Thread-123672] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:25:21.418 [DEBUG] [Thread-123672] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:25:21.432 [INFO] [Thread-123672] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:25:21.432 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:25:21.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:25:22.280 [DEBUG] [Thread-123672] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:25:22.280 [DEBUG] [Thread-123672] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:25:22.328 [DEBUG] [Thread-123672] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:25:22.328 [DEBUG] [Thread-123672] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:25:22.338 [DEBUG] [Thread-123672] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:25:22.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:25:22.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:25:22.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:25:22.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:25:22.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:25:22.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:25:22.380 [DEBUG] [Thread-123672] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:25:35.117 [DEBUG] [Thread-123674 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:25:50.163 [DEBUG] [Thread-123675 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:25:52.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:25:52.400 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:25:52.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:25:53.478 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:25:53.479 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:25:54.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 25, 25), 31.13, 11.13, 0.0, 18.56, 19.54, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:25:54.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:25:25
2025-11-03T22:25:54.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:25:54.403 [DEBUG] [Thread-123676 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:25:54.544 [DEBUG] [Thread-123677] [transport.py] [_log()] starting thread (client mode): 0xed12d40
2025-11-03T22:25:54.544 [DEBUG] [Thread-123677] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:25:54.565 [DEBUG] [Thread-123677] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:25:54.565 [INFO] [Thread-123677] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:25:54.568 [DEBUG] [Thread-123677] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:25:54.568 [DEBUG] [Thread-123677] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:25:54.569 [DEBUG] [Thread-123677] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:25:54.569 [DEBUG] [Thread-123677] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:25:54.569 [DEBUG] [Thread-123677] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:25:54.570 [DEBUG] [Thread-123677] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:25:54.570 [DEBUG] [Thread-123677] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:25:54.570 [DEBUG] [Thread-123677] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:25:54.570 [DEBUG] [Thread-123677] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:25:54.570 [DEBUG] [Thread-123677] [transport.py] [_log()] client lang: <none>
2025-11-03T22:25:54.570 [DEBUG] [Thread-123677] [transport.py] [_log()] server lang: <none>
2025-11-03T22:25:54.570 [DEBUG] [Thread-123677] [transport.py] [_log()] kex follows: False
2025-11-03T22:25:54.571 [DEBUG] [Thread-123677] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:25:54.571 [DEBUG] [Thread-123677] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:25:54.571 [DEBUG] [Thread-123677] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:25:54.571 [DEBUG] [Thread-123677] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:25:54.571 [DEBUG] [Thread-123677] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:25:54.571 [DEBUG] [Thread-123677] [transport.py] [_log()] Compression: none
2025-11-03T22:25:54.571 [DEBUG] [Thread-123677] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:25:54.589 [DEBUG] [Thread-123677] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:25:54.590 [DEBUG] [Thread-123677] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:25:54.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:25:54.592 [DEBUG] [Thread-123677] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:25:54.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:25:54.594 [DEBUG] [Thread-123677] [transport.py] [_log()] userauth is OK
2025-11-03T22:25:54.594 [DEBUG] [Thread-123677] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:25:54.594 [DEBUG] [Thread-123677] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:25:54.594 [DEBUG] [Thread-123677] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:25:54.594 [DEBUG] [Thread-123677] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:25:54.611 [INFO] [Thread-123677] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:25:54.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:25:55.188 [DEBUG] [Thread-123677] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:25:55.188 [DEBUG] [Thread-123677] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:25:55.189 [DEBUG] [Thread-123677] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:25:55.229 [DEBUG] [Thread-123677] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:25:55.229 [DEBUG] [Thread-123677] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:25:55.232 [DEBUG] [Thread-123677] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:25:55.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:25:55.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:25:55.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:25:55.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:25:55.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:25:55.259 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:25:55.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:25:55.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:25:55.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:25:55.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.851142 -999.00  +19.60  23.23     16   -6.40 1 1 1 1 1     0    0 25.31 3.32 ZNESW 19.4 23.2 304.0 26.7 19.5 -26.0 19.4 -25.0 19.3 -24.5 19.4 -25.6
2025-11-03T22:25:55.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:25:55.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:25:55.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.851142
2025-11-03T22:25:55.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:25:55.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:25:55.262 [DEBUG] [Thread-123677] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:25:55.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:25:55.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:25:55.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:25:55.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:25:25', tmtdew=31.13, humidity=11.13, cloud=0.0, wind=18.56, temperature=19.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:25:26', seeing=1.23, atlas_timestamp='2025-11-03T20:25:38.669', atlas_cloud=1, atlas_rain=1, zp_data=[-0.08174999999999955, 0.048250000000001236, 0.026250000000000995, -0.06050000000000111, 0.002500000000001279, 0.027250000000002217, -0.15500000000000114, -0.3777499999999989, -0.036000000000001364, -0.016000000000000014, 0.09424999999999883, 0.08399999999999963, 0.10050000000000026, 0.04174999999999862, -0.14100000000000001, -0.5310000000000006, 0.01624999999999943, 0.09299999999999997, 0.17049999999999876, 0.09324999999999939, 0.13899999999999935, 0.07574999999999932, -0.10274999999999856, -0.5947499999999994, 0.025999999999998025, 0.1385000000000005, 0.17375000000000007, 0.2264999999999997, 0.19549999999999912, -0.09499999999999886, -0.19599999999999795, -0.004999999999999005, 0.08474999999999966], zp_timestamp='2025-11-03T20:22:00')
2025-11-03T22:25:55.348 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:25:55.362 [DEBUG] [Thread-123680] [transport.py] [_log()] starting thread (client mode): 0xed369b0
2025-11-03T22:25:55.363 [DEBUG] [Thread-123680] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:25:55.381 [DEBUG] [Thread-123680] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:25:55.381 [INFO] [Thread-123680] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:25:55.390 [DEBUG] [Thread-123680] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:25:55.390 [DEBUG] [Thread-123680] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:25:55.390 [DEBUG] [Thread-123680] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:25:55.390 [DEBUG] [Thread-123680] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:25:55.391 [DEBUG] [Thread-123680] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:25:55.391 [DEBUG] [Thread-123680] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:25:55.391 [DEBUG] [Thread-123680] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:25:55.391 [DEBUG] [Thread-123680] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:25:55.391 [DEBUG] [Thread-123680] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:25:55.391 [DEBUG] [Thread-123680] [transport.py] [_log()] client lang: <none>
2025-11-03T22:25:55.391 [DEBUG] [Thread-123680] [transport.py] [_log()] server lang: <none>
2025-11-03T22:25:55.391 [DEBUG] [Thread-123680] [transport.py] [_log()] kex follows: False
2025-11-03T22:25:55.391 [DEBUG] [Thread-123680] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:25:55.392 [DEBUG] [Thread-123680] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:25:55.392 [DEBUG] [Thread-123680] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:25:55.392 [DEBUG] [Thread-123680] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:25:55.392 [DEBUG] [Thread-123680] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:25:55.392 [DEBUG] [Thread-123680] [transport.py] [_log()] Compression: none
2025-11-03T22:25:55.392 [DEBUG] [Thread-123680] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:25:55.452 [DEBUG] [Thread-123680] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:25:55.453 [DEBUG] [Thread-123680] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:25:55.454 [DEBUG] [Thread-123680] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:25:55.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:25:55.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:25:55.510 [DEBUG] [Thread-123680] [transport.py] [_log()] userauth is OK
2025-11-03T22:25:55.510 [DEBUG] [Thread-123680] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:25:55.510 [DEBUG] [Thread-123680] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:25:55.510 [DEBUG] [Thread-123680] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:25:55.510 [DEBUG] [Thread-123680] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:25:55.529 [INFO] [Thread-123680] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:25:55.531 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:25:55.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:25:56.382 [DEBUG] [Thread-123680] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:25:56.382 [DEBUG] [Thread-123680] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:25:56.430 [DEBUG] [Thread-123680] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:25:56.430 [DEBUG] [Thread-123680] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:25:56.439 [DEBUG] [Thread-123680] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:25:56.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:25:56.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:25:56.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:25:56.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:25:56.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:25:56.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:25:56.477 [DEBUG] [Thread-123680] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:26:05.195 [DEBUG] [Thread-123682 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:26:20.258 [DEBUG] [Thread-123683 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:26:26.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:26:26.491 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:26:26.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:26:27.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 26, 1), 31.13, 11.13, 0.0, 20.18, 19.53, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:26:27.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:26:01
2025-11-03T22:26:27.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:26:27.554 [DEBUG] [Thread-123684] [transport.py] [_log()] starting thread (client mode): 0x1174d270
2025-11-03T22:26:27.555 [DEBUG] [Thread-123684] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:26:27.573 [DEBUG] [Thread-123684] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:26:27.574 [INFO] [Thread-123684] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:26:27.577 [DEBUG] [Thread-123684] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:26:27.577 [DEBUG] [Thread-123684] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:26:27.577 [DEBUG] [Thread-123684] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:26:27.577 [DEBUG] [Thread-123684] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:26:27.577 [DEBUG] [Thread-123684] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:26:27.577 [DEBUG] [Thread-123684] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:26:27.577 [DEBUG] [Thread-123684] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:26:27.577 [DEBUG] [Thread-123684] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:26:27.577 [DEBUG] [Thread-123684] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:26:27.577 [DEBUG] [Thread-123684] [transport.py] [_log()] client lang: <none>
2025-11-03T22:26:27.577 [DEBUG] [Thread-123684] [transport.py] [_log()] server lang: <none>
2025-11-03T22:26:27.577 [DEBUG] [Thread-123684] [transport.py] [_log()] kex follows: False
2025-11-03T22:26:27.577 [DEBUG] [Thread-123684] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:26:27.577 [DEBUG] [Thread-123684] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:26:27.577 [DEBUG] [Thread-123684] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:26:27.577 [DEBUG] [Thread-123684] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:26:27.577 [DEBUG] [Thread-123684] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:26:27.577 [DEBUG] [Thread-123684] [transport.py] [_log()] Compression: none
2025-11-03T22:26:27.577 [DEBUG] [Thread-123684] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:26:27.594 [DEBUG] [Thread-123684] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:26:27.594 [DEBUG] [Thread-123684] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:26:27.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:26:27.595 [DEBUG] [Thread-123684] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:26:27.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:26:27.597 [DEBUG] [Thread-123684] [transport.py] [_log()] userauth is OK
2025-11-03T22:26:27.598 [DEBUG] [Thread-123684] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:26:27.598 [DEBUG] [Thread-123684] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:26:27.598 [DEBUG] [Thread-123684] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:26:27.598 [DEBUG] [Thread-123684] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:26:27.612 [INFO] [Thread-123684] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:26:27.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:26:28.237 [DEBUG] [Thread-123684] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:26:28.237 [DEBUG] [Thread-123684] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:26:28.247 [DEBUG] [Thread-123684] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:26:28.277 [DEBUG] [Thread-123684] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:26:28.277 [DEBUG] [Thread-123684] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:26:28.281 [DEBUG] [Thread-123684] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:26:28.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:26:28.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:26:28.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:26:28.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:26:28.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:26:28.307 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:26:28.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:26:28.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:26:28.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:26:28.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.851142 -999.00  +19.60  23.23     16   -6.40 1 1 1 1 1     0    0 25.31 3.32 ZNESW 19.4 23.2 304.0 26.7 19.5 -26.0 19.4 -25.0 19.3 -24.5 19.4 -25.6
2025-11-03T22:26:28.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:26:28.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:26:28.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.851142
2025-11-03T22:26:28.314 [DEBUG] [Thread-123684] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:26:28.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:26:28.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:26:28.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:26:28.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:26:28.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:26:28.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:26:01', tmtdew=31.13, humidity=11.13, cloud=0.0, wind=20.18, temperature=19.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:26:02', seeing=1.23, atlas_timestamp='2025-11-03T20:25:38.669', atlas_cloud=1, atlas_rain=1, zp_data=[-0.08174999999999955, 0.048250000000001236, 0.026250000000000995, -0.06050000000000111, 0.002500000000001279, 0.027250000000002217, -0.15500000000000114, -0.3777499999999989, -0.036000000000001364, -0.016000000000000014, 0.09424999999999883, 0.08399999999999963, 0.10050000000000026, 0.04174999999999862, -0.14100000000000001, -0.5310000000000006, 0.01624999999999943, 0.09299999999999997, 0.17049999999999876, 0.09324999999999939, 0.13899999999999935, 0.07574999999999932, -0.10274999999999856, -0.5947499999999994, 0.025999999999998025, 0.1385000000000005, 0.17375000000000007, 0.2264999999999997, 0.19549999999999912, -0.09499999999999886, -0.19599999999999795, -0.004999999999999005, 0.08474999999999966], zp_timestamp='2025-11-03T20:22:00')
2025-11-03T22:26:28.409 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:26:28.422 [DEBUG] [Thread-123687] [transport.py] [_log()] starting thread (client mode): 0x117eb610
2025-11-03T22:26:28.422 [DEBUG] [Thread-123687] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:26:28.437 [DEBUG] [Thread-123687] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:26:28.437 [INFO] [Thread-123687] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:26:28.445 [DEBUG] [Thread-123687] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:26:28.445 [DEBUG] [Thread-123687] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:26:28.445 [DEBUG] [Thread-123687] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:26:28.445 [DEBUG] [Thread-123687] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:26:28.445 [DEBUG] [Thread-123687] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:26:28.445 [DEBUG] [Thread-123687] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:26:28.445 [DEBUG] [Thread-123687] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:26:28.445 [DEBUG] [Thread-123687] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:26:28.446 [DEBUG] [Thread-123687] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:26:28.446 [DEBUG] [Thread-123687] [transport.py] [_log()] client lang: <none>
2025-11-03T22:26:28.446 [DEBUG] [Thread-123687] [transport.py] [_log()] server lang: <none>
2025-11-03T22:26:28.446 [DEBUG] [Thread-123687] [transport.py] [_log()] kex follows: False
2025-11-03T22:26:28.446 [DEBUG] [Thread-123687] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:26:28.446 [DEBUG] [Thread-123687] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:26:28.446 [DEBUG] [Thread-123687] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:26:28.446 [DEBUG] [Thread-123687] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:26:28.446 [DEBUG] [Thread-123687] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:26:28.446 [DEBUG] [Thread-123687] [transport.py] [_log()] Compression: none
2025-11-03T22:26:28.446 [DEBUG] [Thread-123687] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:26:28.511 [DEBUG] [Thread-123687] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:26:28.521 [DEBUG] [Thread-123687] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:26:28.522 [DEBUG] [Thread-123687] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:26:28.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:26:28.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:26:28.570 [DEBUG] [Thread-123687] [transport.py] [_log()] userauth is OK
2025-11-03T22:26:28.571 [DEBUG] [Thread-123687] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:26:28.571 [DEBUG] [Thread-123687] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:26:28.571 [DEBUG] [Thread-123687] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:26:28.571 [DEBUG] [Thread-123687] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:26:28.592 [INFO] [Thread-123687] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:26:28.593 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:26:28.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:26:29.429 [DEBUG] [Thread-123687] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:26:29.429 [DEBUG] [Thread-123687] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:26:29.480 [DEBUG] [Thread-123687] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:26:29.480 [DEBUG] [Thread-123687] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:26:29.490 [DEBUG] [Thread-123687] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:26:29.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:26:29.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:26:29.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:26:29.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:26:29.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:26:29.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:26:29.541 [DEBUG] [Thread-123687] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:26:35.292 [DEBUG] [Thread-123689 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:26:50.344 [DEBUG] [Thread-123690 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:26:53.682 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:26:53.683 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:26:54.522 [DEBUG] [Thread-123691 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:26:59.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:26:59.562 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:26:59.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:27:00.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 26, 35), 31.1, 11.12, 0.0, 19.44, 19.51, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:27:00.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:26:35
2025-11-03T22:27:00.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:27:00.615 [DEBUG] [Thread-123692] [transport.py] [_log()] starting thread (client mode): 0x11799a20
2025-11-03T22:27:00.615 [DEBUG] [Thread-123692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:27:00.634 [DEBUG] [Thread-123692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:27:00.634 [INFO] [Thread-123692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:27:00.637 [DEBUG] [Thread-123692] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:27:00.637 [DEBUG] [Thread-123692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:27:00.637 [DEBUG] [Thread-123692] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:27:00.637 [DEBUG] [Thread-123692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:27:00.637 [DEBUG] [Thread-123692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:27:00.637 [DEBUG] [Thread-123692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:27:00.637 [DEBUG] [Thread-123692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:27:00.637 [DEBUG] [Thread-123692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:27:00.637 [DEBUG] [Thread-123692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:27:00.637 [DEBUG] [Thread-123692] [transport.py] [_log()] client lang: <none>
2025-11-03T22:27:00.637 [DEBUG] [Thread-123692] [transport.py] [_log()] server lang: <none>
2025-11-03T22:27:00.637 [DEBUG] [Thread-123692] [transport.py] [_log()] kex follows: False
2025-11-03T22:27:00.637 [DEBUG] [Thread-123692] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:27:00.637 [DEBUG] [Thread-123692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:27:00.638 [DEBUG] [Thread-123692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:27:00.638 [DEBUG] [Thread-123692] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:27:00.638 [DEBUG] [Thread-123692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:27:00.638 [DEBUG] [Thread-123692] [transport.py] [_log()] Compression: none
2025-11-03T22:27:00.638 [DEBUG] [Thread-123692] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:27:00.655 [DEBUG] [Thread-123692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:27:00.664 [DEBUG] [Thread-123692] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:27:00.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:27:00.665 [DEBUG] [Thread-123692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:27:00.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:27:00.667 [DEBUG] [Thread-123692] [transport.py] [_log()] userauth is OK
2025-11-03T22:27:00.667 [DEBUG] [Thread-123692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:27:00.668 [DEBUG] [Thread-123692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:27:00.668 [DEBUG] [Thread-123692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:27:00.668 [DEBUG] [Thread-123692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:27:00.691 [INFO] [Thread-123692] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:27:00.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:27:01.322 [DEBUG] [Thread-123692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:27:01.322 [DEBUG] [Thread-123692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:27:01.323 [DEBUG] [Thread-123692] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:27:01.363 [DEBUG] [Thread-123692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:27:01.363 [DEBUG] [Thread-123692] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:27:01.367 [DEBUG] [Thread-123692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:27:01.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:27:01.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:27:01.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:27:01.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:27:01.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:27:01.401 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:27:01.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:27:01.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:27:01.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:27:01.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.851489 -999.00  +19.50  19.43     16   -6.40 1 1 1 1 1     0    0 25.92 5.56 ZNESW 18.5 19.4 307.0 24.9 19.5 -25.9 19.4 -25.0 19.2 -24.8 19.5 -25.7
2025-11-03T22:27:01.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:27:01.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:27:01.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.851489
2025-11-03T22:27:01.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:27:01.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:27:01.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:27:01.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:27:01.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:27:01.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:26:35', tmtdew=31.1, humidity=11.12, cloud=0.0, wind=19.44, temperature=19.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:26:36', seeing=1.12, atlas_timestamp='2025-11-03T20:26:08.650', atlas_cloud=1, atlas_rain=1, zp_data=[-0.07525000000000048, 0.05975000000000108, -0.04824999999999946, 0.10199999999999854, 0.01750000000000007, 0.024250000000002103, -0.17300000000000004, -0.07675000000000054, -0.016000000000000014, 0.018000000000000682, 0.08425000000000082, 0.09450000000000003, 0.1169999999999991, -0.0022500000000000853, -0.18100000000000094, -0.43950000000000067, 0.04025000000000034, 0.0389999999999997, 0.118999999999998, 0.10524999999999807, 0.1374999999999993, -0.01025000000000098, -0.13674999999999926, -0.24624999999999986, 0.05299999999999905, 0.12650000000000006, 0.1592500000000001, 0.21850000000000058, 0.2610000000000001, -0.024499999999999744, -0.11949999999999861, -0.0045000000000001705, 0.12174999999999869], zp_timestamp='2025-11-03T20:26:00')
2025-11-03T22:27:01.405 [DEBUG] [Thread-123692] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:27:01.489 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:27:01.501 [DEBUG] [Thread-123695] [transport.py] [_log()] starting thread (client mode): 0x1174edd0
2025-11-03T22:27:01.501 [DEBUG] [Thread-123695] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:27:01.516 [DEBUG] [Thread-123695] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:27:01.516 [INFO] [Thread-123695] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:27:01.527 [DEBUG] [Thread-123695] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:27:01.527 [DEBUG] [Thread-123695] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:27:01.527 [DEBUG] [Thread-123695] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:27:01.527 [DEBUG] [Thread-123695] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:27:01.527 [DEBUG] [Thread-123695] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:27:01.528 [DEBUG] [Thread-123695] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:27:01.528 [DEBUG] [Thread-123695] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:27:01.528 [DEBUG] [Thread-123695] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:27:01.528 [DEBUG] [Thread-123695] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:27:01.528 [DEBUG] [Thread-123695] [transport.py] [_log()] client lang: <none>
2025-11-03T22:27:01.528 [DEBUG] [Thread-123695] [transport.py] [_log()] server lang: <none>
2025-11-03T22:27:01.528 [DEBUG] [Thread-123695] [transport.py] [_log()] kex follows: False
2025-11-03T22:27:01.528 [DEBUG] [Thread-123695] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:27:01.529 [DEBUG] [Thread-123695] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:27:01.529 [DEBUG] [Thread-123695] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:27:01.529 [DEBUG] [Thread-123695] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:27:01.529 [DEBUG] [Thread-123695] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:27:01.529 [DEBUG] [Thread-123695] [transport.py] [_log()] Compression: none
2025-11-03T22:27:01.529 [DEBUG] [Thread-123695] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:27:01.586 [DEBUG] [Thread-123695] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:27:01.587 [DEBUG] [Thread-123695] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:27:01.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:27:01.588 [DEBUG] [Thread-123695] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:27:01.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:27:01.646 [DEBUG] [Thread-123695] [transport.py] [_log()] userauth is OK
2025-11-03T22:27:01.646 [DEBUG] [Thread-123695] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:27:01.646 [DEBUG] [Thread-123695] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:27:01.647 [DEBUG] [Thread-123695] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:27:01.647 [DEBUG] [Thread-123695] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:27:01.666 [INFO] [Thread-123695] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:27:01.667 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:27:01.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:27:02.506 [DEBUG] [Thread-123695] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:27:02.515 [DEBUG] [Thread-123695] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:27:02.555 [DEBUG] [Thread-123695] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:27:02.555 [DEBUG] [Thread-123695] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:27:02.566 [DEBUG] [Thread-123695] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:27:02.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:27:02.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:27:02.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:27:02.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:27:02.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:27:02.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:27:02.608 [DEBUG] [Thread-123695] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:27:05.375 [DEBUG] [Thread-123697 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:27:12.984 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:27:20.422 [DEBUG] [Thread-123698 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:27:21.886 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:27:25.996 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:27:32.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:27:32.629 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:27:32.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:27:33.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 27, 8), 31.05, 11.15, 0.0, 19.96, 19.49, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:27:33.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:27:08
2025-11-03T22:27:33.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:27:33.732 [DEBUG] [Thread-123699] [transport.py] [_log()] starting thread (client mode): 0xed42440
2025-11-03T22:27:33.732 [DEBUG] [Thread-123699] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:27:33.752 [DEBUG] [Thread-123699] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:27:33.752 [INFO] [Thread-123699] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:27:33.755 [DEBUG] [Thread-123699] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:27:33.755 [DEBUG] [Thread-123699] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:27:33.755 [DEBUG] [Thread-123699] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:27:33.755 [DEBUG] [Thread-123699] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:27:33.755 [DEBUG] [Thread-123699] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:27:33.755 [DEBUG] [Thread-123699] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:27:33.755 [DEBUG] [Thread-123699] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:27:33.756 [DEBUG] [Thread-123699] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:27:33.756 [DEBUG] [Thread-123699] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:27:33.756 [DEBUG] [Thread-123699] [transport.py] [_log()] client lang: <none>
2025-11-03T22:27:33.756 [DEBUG] [Thread-123699] [transport.py] [_log()] server lang: <none>
2025-11-03T22:27:33.756 [DEBUG] [Thread-123699] [transport.py] [_log()] kex follows: False
2025-11-03T22:27:33.756 [DEBUG] [Thread-123699] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:27:33.756 [DEBUG] [Thread-123699] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:27:33.756 [DEBUG] [Thread-123699] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:27:33.756 [DEBUG] [Thread-123699] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:27:33.756 [DEBUG] [Thread-123699] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:27:33.756 [DEBUG] [Thread-123699] [transport.py] [_log()] Compression: none
2025-11-03T22:27:33.756 [DEBUG] [Thread-123699] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:27:33.774 [DEBUG] [Thread-123699] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:27:33.774 [DEBUG] [Thread-123699] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:27:33.774 [DEBUG] [Thread-123699] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:27:33.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:27:33.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:27:33.817 [DEBUG] [Thread-123699] [transport.py] [_log()] userauth is OK
2025-11-03T22:27:33.817 [DEBUG] [Thread-123699] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:27:33.817 [DEBUG] [Thread-123699] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:27:33.817 [DEBUG] [Thread-123699] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:27:33.817 [DEBUG] [Thread-123699] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:27:33.832 [INFO] [Thread-123699] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:27:33.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:27:34.489 [DEBUG] [Thread-123699] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:27:34.489 [DEBUG] [Thread-123699] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:27:34.489 [DEBUG] [Thread-123699] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:27:34.530 [DEBUG] [Thread-123699] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:27:34.530 [DEBUG] [Thread-123699] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:27:34.532 [DEBUG] [Thread-123699] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:27:34.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:27:34.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:27:34.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:27:34.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:27:34.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:27:34.559 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:27:34.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:27:34.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:27:34.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:27:34.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.851836 -999.00  +19.60  21.78     16   -6.60 1 1 1 1 1     0    0 25.73 8.44 ZNESW 19.8 21.8 303.0 27.9 19.5 -26.1 19.5 -25.0 19.2 -24.7 19.5 -25.6
2025-11-03T22:27:34.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:27:34.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:27:34.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.851836
2025-11-03T22:27:34.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:27:34.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:27:34.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:27:34.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:27:34.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:27:34.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:27:08', tmtdew=31.05, humidity=11.15, cloud=0.0, wind=19.96, temperature=19.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:27:08', seeing=1.12, atlas_timestamp='2025-11-03T20:26:38.630', atlas_cloud=1, atlas_rain=1, zp_data=[-0.07525000000000048, 0.05975000000000108, -0.04824999999999946, 0.10199999999999854, 0.01750000000000007, 0.024250000000002103, -0.17300000000000004, -0.07675000000000054, -0.016000000000000014, 0.018000000000000682, 0.08425000000000082, 0.09450000000000003, 0.1169999999999991, -0.0022500000000000853, -0.18100000000000094, -0.43950000000000067, 0.04025000000000034, 0.0389999999999997, 0.118999999999998, 0.10524999999999807, 0.1374999999999993, -0.01025000000000098, -0.13674999999999926, -0.24624999999999986, 0.05299999999999905, 0.12650000000000006, 0.1592500000000001, 0.21850000000000058, 0.2610000000000001, -0.024499999999999744, -0.11949999999999861, -0.0045000000000001705, 0.12174999999999869], zp_timestamp='2025-11-03T20:26:00')
2025-11-03T22:27:34.560 [DEBUG] [Thread-123699] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:27:34.634 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:27:34.648 [DEBUG] [Thread-123702] [transport.py] [_log()] starting thread (client mode): 0xed43c10
2025-11-03T22:27:34.648 [DEBUG] [Thread-123702] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:27:34.664 [DEBUG] [Thread-123702] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:27:34.664 [INFO] [Thread-123702] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:27:34.672 [DEBUG] [Thread-123702] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:27:34.672 [DEBUG] [Thread-123702] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:27:34.672 [DEBUG] [Thread-123702] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:27:34.672 [DEBUG] [Thread-123702] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:27:34.672 [DEBUG] [Thread-123702] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:27:34.672 [DEBUG] [Thread-123702] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:27:34.672 [DEBUG] [Thread-123702] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:27:34.672 [DEBUG] [Thread-123702] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:27:34.672 [DEBUG] [Thread-123702] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:27:34.672 [DEBUG] [Thread-123702] [transport.py] [_log()] client lang: <none>
2025-11-03T22:27:34.672 [DEBUG] [Thread-123702] [transport.py] [_log()] server lang: <none>
2025-11-03T22:27:34.672 [DEBUG] [Thread-123702] [transport.py] [_log()] kex follows: False
2025-11-03T22:27:34.672 [DEBUG] [Thread-123702] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:27:34.672 [DEBUG] [Thread-123702] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:27:34.672 [DEBUG] [Thread-123702] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:27:34.672 [DEBUG] [Thread-123702] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:27:34.672 [DEBUG] [Thread-123702] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:27:34.672 [DEBUG] [Thread-123702] [transport.py] [_log()] Compression: none
2025-11-03T22:27:34.672 [DEBUG] [Thread-123702] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:27:34.728 [DEBUG] [Thread-123702] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:27:34.728 [DEBUG] [Thread-123702] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:27:34.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:27:34.728 [DEBUG] [Thread-123702] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:27:34.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:27:34.787 [DEBUG] [Thread-123702] [transport.py] [_log()] userauth is OK
2025-11-03T22:27:34.787 [DEBUG] [Thread-123702] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:27:34.787 [DEBUG] [Thread-123702] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:27:34.787 [DEBUG] [Thread-123702] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:27:34.787 [DEBUG] [Thread-123702] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:27:34.810 [INFO] [Thread-123702] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:27:34.810 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:27:34.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:27:35.453 [DEBUG] [Thread-123704 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:27:35.657 [DEBUG] [Thread-123702] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:27:35.657 [DEBUG] [Thread-123702] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:27:35.707 [DEBUG] [Thread-123702] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:27:35.707 [DEBUG] [Thread-123702] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:27:35.715 [DEBUG] [Thread-123702] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:27:35.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:27:35.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:27:35.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:27:35.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:27:35.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:27:35.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:27:35.750 [DEBUG] [Thread-123702] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:27:50.501 [DEBUG] [Thread-123705 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:27:53.885 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:27:53.886 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:27:54.853 [DEBUG] [Thread-123706 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:28:05.535 [DEBUG] [Thread-123707 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:28:05.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:28:05.771 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:28:05.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:28:06.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 27, 40), 31.08, 11.18, 0.0, 19.99, 19.53, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:28:06.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:27:40
2025-11-03T22:28:06.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:28:07.027 [DEBUG] [Thread-123708] [transport.py] [_log()] starting thread (client mode): 0xedc5630
2025-11-03T22:28:07.027 [DEBUG] [Thread-123708] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:28:07.047 [DEBUG] [Thread-123708] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:28:07.047 [INFO] [Thread-123708] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:28:07.050 [DEBUG] [Thread-123708] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:28:07.050 [DEBUG] [Thread-123708] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:28:07.050 [DEBUG] [Thread-123708] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:28:07.050 [DEBUG] [Thread-123708] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:28:07.050 [DEBUG] [Thread-123708] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:28:07.050 [DEBUG] [Thread-123708] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:28:07.050 [DEBUG] [Thread-123708] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:28:07.050 [DEBUG] [Thread-123708] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:28:07.050 [DEBUG] [Thread-123708] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:28:07.050 [DEBUG] [Thread-123708] [transport.py] [_log()] client lang: <none>
2025-11-03T22:28:07.050 [DEBUG] [Thread-123708] [transport.py] [_log()] server lang: <none>
2025-11-03T22:28:07.050 [DEBUG] [Thread-123708] [transport.py] [_log()] kex follows: False
2025-11-03T22:28:07.050 [DEBUG] [Thread-123708] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:28:07.050 [DEBUG] [Thread-123708] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:28:07.050 [DEBUG] [Thread-123708] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:28:07.050 [DEBUG] [Thread-123708] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:28:07.050 [DEBUG] [Thread-123708] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:28:07.050 [DEBUG] [Thread-123708] [transport.py] [_log()] Compression: none
2025-11-03T22:28:07.050 [DEBUG] [Thread-123708] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:28:07.068 [DEBUG] [Thread-123708] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:28:07.068 [DEBUG] [Thread-123708] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:28:07.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:28:07.070 [DEBUG] [Thread-123708] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:28:07.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:28:07.072 [DEBUG] [Thread-123708] [transport.py] [_log()] userauth is OK
2025-11-03T22:28:07.072 [DEBUG] [Thread-123708] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:28:07.072 [DEBUG] [Thread-123708] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:28:07.072 [DEBUG] [Thread-123708] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:28:07.072 [DEBUG] [Thread-123708] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:28:07.095 [INFO] [Thread-123708] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:28:07.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:28:07.746 [DEBUG] [Thread-123708] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:28:07.746 [DEBUG] [Thread-123708] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:28:07.747 [DEBUG] [Thread-123708] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:28:07.787 [DEBUG] [Thread-123708] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:28:07.787 [DEBUG] [Thread-123708] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:28:07.791 [DEBUG] [Thread-123708] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:28:07.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:28:07.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:28:07.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:28:07.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:28:07.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:28:07.812 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:28:07.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:28:07.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:28:07.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:28:07.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.852530 -999.00  +19.70  19.92     16   -6.60 1 1 1 1 1     0    0 26.48 13.85 ZNESW 20.0 19.9 295.4 27.6 19.6 -26.0 19.4 -24.9 19.3 -24.4 19.5 -25.7
2025-11-03T22:28:07.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:28:07.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:28:07.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.852530
2025-11-03T22:28:07.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:28:07.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:28:07.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:28:07.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:28:07.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:28:07.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:27:40', tmtdew=31.08, humidity=11.18, cloud=0.0, wind=19.99, temperature=19.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:27:41', seeing=1.22, atlas_timestamp='2025-11-03T20:27:38.592', atlas_cloud=1, atlas_rain=1, zp_data=[-0.07525000000000048, 0.05975000000000108, -0.04824999999999946, 0.10199999999999854, 0.01750000000000007, 0.024250000000002103, -0.17300000000000004, -0.07675000000000054, -0.016000000000000014, 0.018000000000000682, 0.08425000000000082, 0.09450000000000003, 0.1169999999999991, -0.0022500000000000853, -0.18100000000000094, -0.43950000000000067, 0.04025000000000034, 0.0389999999999997, 0.118999999999998, 0.10524999999999807, 0.1374999999999993, -0.01025000000000098, -0.13674999999999926, -0.24624999999999986, 0.05299999999999905, 0.12650000000000006, 0.1592500000000001, 0.21850000000000058, 0.2610000000000001, -0.024499999999999744, -0.11949999999999861, -0.0045000000000001705, 0.12174999999999869], zp_timestamp='2025-11-03T20:26:00')
2025-11-03T22:28:07.816 [DEBUG] [Thread-123708] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:28:07.898 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:28:07.911 [DEBUG] [Thread-123711] [transport.py] [_log()] starting thread (client mode): 0xed5e9e0
2025-11-03T22:28:07.911 [DEBUG] [Thread-123711] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:28:07.927 [DEBUG] [Thread-123711] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:28:07.927 [INFO] [Thread-123711] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:28:07.936 [DEBUG] [Thread-123711] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:28:07.936 [DEBUG] [Thread-123711] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:28:07.936 [DEBUG] [Thread-123711] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:28:07.937 [DEBUG] [Thread-123711] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:28:07.937 [DEBUG] [Thread-123711] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:28:07.937 [DEBUG] [Thread-123711] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:28:07.937 [DEBUG] [Thread-123711] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:28:07.937 [DEBUG] [Thread-123711] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:28:07.937 [DEBUG] [Thread-123711] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:28:07.937 [DEBUG] [Thread-123711] [transport.py] [_log()] client lang: <none>
2025-11-03T22:28:07.937 [DEBUG] [Thread-123711] [transport.py] [_log()] server lang: <none>
2025-11-03T22:28:07.937 [DEBUG] [Thread-123711] [transport.py] [_log()] kex follows: False
2025-11-03T22:28:07.937 [DEBUG] [Thread-123711] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:28:07.937 [DEBUG] [Thread-123711] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:28:07.937 [DEBUG] [Thread-123711] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:28:07.937 [DEBUG] [Thread-123711] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:28:07.937 [DEBUG] [Thread-123711] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:28:07.937 [DEBUG] [Thread-123711] [transport.py] [_log()] Compression: none
2025-11-03T22:28:07.938 [DEBUG] [Thread-123711] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:28:07.995 [DEBUG] [Thread-123711] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:28:07.995 [DEBUG] [Thread-123711] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:28:07.996 [DEBUG] [Thread-123711] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:28:07.996 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:28:07.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:28:08.055 [DEBUG] [Thread-123711] [transport.py] [_log()] userauth is OK
2025-11-03T22:28:08.056 [DEBUG] [Thread-123711] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:28:08.056 [DEBUG] [Thread-123711] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:28:08.056 [DEBUG] [Thread-123711] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:28:08.056 [DEBUG] [Thread-123711] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:28:08.081 [INFO] [Thread-123711] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:28:08.081 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:28:08.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:28:08.922 [DEBUG] [Thread-123711] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:28:08.923 [DEBUG] [Thread-123711] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:28:08.970 [DEBUG] [Thread-123711] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:28:08.970 [DEBUG] [Thread-123711] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:28:08.980 [DEBUG] [Thread-123711] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:28:08.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:28:08.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:28:08.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:28:09.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:28:09.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:28:09.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:28:09.017 [DEBUG] [Thread-123711] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:28:20.567 [DEBUG] [Thread-123713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:28:35.627 [DEBUG] [Thread-123714 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:28:39.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:28:39.028 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:28:39.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:28:39.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 28, 13), 31.05, 11.2, 0.0, 18.17, 19.49, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:28:39.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:28:13
2025-11-03T22:28:39.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:28:40.101 [DEBUG] [Thread-123715] [transport.py] [_log()] starting thread (client mode): 0xedc58d0
2025-11-03T22:28:40.101 [DEBUG] [Thread-123715] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:28:40.119 [DEBUG] [Thread-123715] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:28:40.119 [INFO] [Thread-123715] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:28:40.123 [DEBUG] [Thread-123715] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:28:40.123 [DEBUG] [Thread-123715] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:28:40.123 [DEBUG] [Thread-123715] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:28:40.123 [DEBUG] [Thread-123715] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:28:40.123 [DEBUG] [Thread-123715] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:28:40.123 [DEBUG] [Thread-123715] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:28:40.123 [DEBUG] [Thread-123715] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:28:40.123 [DEBUG] [Thread-123715] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:28:40.123 [DEBUG] [Thread-123715] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:28:40.123 [DEBUG] [Thread-123715] [transport.py] [_log()] client lang: <none>
2025-11-03T22:28:40.123 [DEBUG] [Thread-123715] [transport.py] [_log()] server lang: <none>
2025-11-03T22:28:40.123 [DEBUG] [Thread-123715] [transport.py] [_log()] kex follows: False
2025-11-03T22:28:40.123 [DEBUG] [Thread-123715] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:28:40.123 [DEBUG] [Thread-123715] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:28:40.123 [DEBUG] [Thread-123715] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:28:40.123 [DEBUG] [Thread-123715] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:28:40.123 [DEBUG] [Thread-123715] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:28:40.123 [DEBUG] [Thread-123715] [transport.py] [_log()] Compression: none
2025-11-03T22:28:40.123 [DEBUG] [Thread-123715] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:28:40.140 [DEBUG] [Thread-123715] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:28:40.141 [DEBUG] [Thread-123715] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:28:40.141 [DEBUG] [Thread-123715] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:28:40.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:28:40.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:28:40.144 [DEBUG] [Thread-123715] [transport.py] [_log()] userauth is OK
2025-11-03T22:28:40.144 [DEBUG] [Thread-123715] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:28:40.145 [DEBUG] [Thread-123715] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:28:40.145 [DEBUG] [Thread-123715] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:28:40.145 [DEBUG] [Thread-123715] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:28:40.176 [INFO] [Thread-123715] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:28:40.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:28:40.830 [DEBUG] [Thread-123715] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:28:40.830 [DEBUG] [Thread-123715] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:28:40.831 [DEBUG] [Thread-123715] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:28:40.871 [DEBUG] [Thread-123715] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:28:40.871 [DEBUG] [Thread-123715] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:28:40.875 [DEBUG] [Thread-123715] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:28:40.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:28:40.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:28:40.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:28:40.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:28:40.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:28:40.909 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:28:40.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:28:40.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:28:40.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:28:40.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.852878 -999.00  +19.70  22.49     16   -6.50 1 1 1 1 1     0    0 26.09 16.97 ZNESW 22.3 22.5 301.8 23.9 19.5 -26.1 19.4 -25.0 19.3 -24.7 19.5 -25.6
2025-11-03T22:28:40.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:28:40.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:28:40.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.852878
2025-11-03T22:28:40.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:28:40.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:28:40.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:28:40.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:28:40.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:28:40.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:28:13', tmtdew=31.05, humidity=11.2, cloud=0.0, wind=18.17, temperature=19.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:28:13', seeing=1.22, atlas_timestamp='2025-11-03T20:28:08.659', atlas_cloud=1, atlas_rain=1, zp_data=[-0.07525000000000048, 0.05975000000000108, -0.04824999999999946, 0.10199999999999854, 0.01750000000000007, 0.024250000000002103, -0.17300000000000004, -0.07675000000000054, -0.016000000000000014, 0.018000000000000682, 0.08425000000000082, 0.09450000000000003, 0.1169999999999991, -0.0022500000000000853, -0.18100000000000094, -0.43950000000000067, 0.04025000000000034, 0.0389999999999997, 0.118999999999998, 0.10524999999999807, 0.1374999999999993, -0.01025000000000098, -0.13674999999999926, -0.24624999999999986, 0.05299999999999905, 0.12650000000000006, 0.1592500000000001, 0.21850000000000058, 0.2610000000000001, -0.024499999999999744, -0.11949999999999861, -0.0045000000000001705, 0.12174999999999869], zp_timestamp='2025-11-03T20:26:00')
2025-11-03T22:28:40.914 [DEBUG] [Thread-123715] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:28:40.999 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:28:41.012 [DEBUG] [Thread-123718] [transport.py] [_log()] starting thread (client mode): 0xedc6ce0
2025-11-03T22:28:41.012 [DEBUG] [Thread-123718] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:28:41.031 [DEBUG] [Thread-123718] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:28:41.032 [INFO] [Thread-123718] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:28:41.042 [DEBUG] [Thread-123718] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:28:41.043 [DEBUG] [Thread-123718] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:28:41.043 [DEBUG] [Thread-123718] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:28:41.043 [DEBUG] [Thread-123718] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:28:41.043 [DEBUG] [Thread-123718] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:28:41.043 [DEBUG] [Thread-123718] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:28:41.043 [DEBUG] [Thread-123718] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:28:41.043 [DEBUG] [Thread-123718] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:28:41.043 [DEBUG] [Thread-123718] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:28:41.043 [DEBUG] [Thread-123718] [transport.py] [_log()] client lang: <none>
2025-11-03T22:28:41.043 [DEBUG] [Thread-123718] [transport.py] [_log()] server lang: <none>
2025-11-03T22:28:41.043 [DEBUG] [Thread-123718] [transport.py] [_log()] kex follows: False
2025-11-03T22:28:41.043 [DEBUG] [Thread-123718] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:28:41.043 [DEBUG] [Thread-123718] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:28:41.044 [DEBUG] [Thread-123718] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:28:41.044 [DEBUG] [Thread-123718] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:28:41.044 [DEBUG] [Thread-123718] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:28:41.044 [DEBUG] [Thread-123718] [transport.py] [_log()] Compression: none
2025-11-03T22:28:41.044 [DEBUG] [Thread-123718] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:28:41.111 [DEBUG] [Thread-123718] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:28:41.112 [DEBUG] [Thread-123718] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:28:41.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:28:41.113 [DEBUG] [Thread-123718] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:28:41.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:28:41.168 [DEBUG] [Thread-123718] [transport.py] [_log()] userauth is OK
2025-11-03T22:28:41.169 [DEBUG] [Thread-123718] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:28:41.169 [DEBUG] [Thread-123718] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:28:41.169 [DEBUG] [Thread-123718] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:28:41.169 [DEBUG] [Thread-123718] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:28:41.190 [INFO] [Thread-123718] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:28:41.190 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:28:41.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:28:42.010 [DEBUG] [Thread-123718] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:28:42.010 [DEBUG] [Thread-123718] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:28:42.060 [DEBUG] [Thread-123718] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:28:42.061 [DEBUG] [Thread-123718] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:28:42.071 [DEBUG] [Thread-123718] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:28:42.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:28:42.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:28:42.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:28:42.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:28:42.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:28:42.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:28:42.106 [DEBUG] [Thread-123718] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:28:50.661 [DEBUG] [Thread-123720 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:28:54.087 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:28:54.088 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:28:55.108 [DEBUG] [Thread-123721 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:29:05.717 [DEBUG] [Thread-123722 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:29:12.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:29:12.127 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:29:12.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:29:12.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 28, 45), 30.96, 11.32, 0.0, 15.86, 19.43, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:29:12.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:28:45
2025-11-03T22:29:13.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:29:13.167 [DEBUG] [Thread-123723] [transport.py] [_log()] starting thread (client mode): 0xedc41f0
2025-11-03T22:29:13.167 [DEBUG] [Thread-123723] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:29:13.187 [DEBUG] [Thread-123723] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:29:13.187 [INFO] [Thread-123723] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:29:13.188 [DEBUG] [Thread-123723] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:29:13.188 [DEBUG] [Thread-123723] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:29:13.188 [DEBUG] [Thread-123723] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:29:13.188 [DEBUG] [Thread-123723] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:29:13.188 [DEBUG] [Thread-123723] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:29:13.188 [DEBUG] [Thread-123723] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:29:13.188 [DEBUG] [Thread-123723] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:29:13.188 [DEBUG] [Thread-123723] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:29:13.188 [DEBUG] [Thread-123723] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:29:13.188 [DEBUG] [Thread-123723] [transport.py] [_log()] client lang: <none>
2025-11-03T22:29:13.188 [DEBUG] [Thread-123723] [transport.py] [_log()] server lang: <none>
2025-11-03T22:29:13.188 [DEBUG] [Thread-123723] [transport.py] [_log()] kex follows: False
2025-11-03T22:29:13.188 [DEBUG] [Thread-123723] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:29:13.188 [DEBUG] [Thread-123723] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:29:13.188 [DEBUG] [Thread-123723] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:29:13.188 [DEBUG] [Thread-123723] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:29:13.188 [DEBUG] [Thread-123723] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:29:13.188 [DEBUG] [Thread-123723] [transport.py] [_log()] Compression: none
2025-11-03T22:29:13.188 [DEBUG] [Thread-123723] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:29:13.195 [DEBUG] [Thread-123723] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:29:13.196 [DEBUG] [Thread-123723] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:29:13.196 [DEBUG] [Thread-123723] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:29:13.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:29:13.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:29:13.196 [DEBUG] [Thread-123723] [transport.py] [_log()] userauth is OK
2025-11-03T22:29:13.196 [DEBUG] [Thread-123723] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:29:13.196 [DEBUG] [Thread-123723] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:29:13.197 [DEBUG] [Thread-123723] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:29:13.197 [DEBUG] [Thread-123723] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:29:13.206 [INFO] [Thread-123723] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:29:13.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:29:13.824 [DEBUG] [Thread-123723] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:29:13.824 [DEBUG] [Thread-123723] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:29:13.824 [DEBUG] [Thread-123723] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:29:13.866 [DEBUG] [Thread-123723] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:29:13.866 [DEBUG] [Thread-123723] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:29:13.868 [DEBUG] [Thread-123723] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:29:13.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:29:13.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:29:13.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:29:13.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:29:13.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:29:13.891 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:29:13.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:29:13.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:29:13.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:29:13.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.853225 -999.00  +19.60  15.46     16   -6.60 1 1 1 1 1     0    0 26.31 20.33 ZNESW 18.8 15.5 303.4 26.7 19.5 -26.0 19.5 -25.0 19.2 -24.5 19.5 -25.7
2025-11-03T22:29:13.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:29:13.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:29:13.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.853225
2025-11-03T22:29:13.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:29:13.894 [DEBUG] [Thread-123723] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:29:13.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:29:13.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:29:13.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:29:13.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:29:13.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:28:45', tmtdew=30.96, humidity=11.32, cloud=0.0, wind=15.86, temperature=19.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:28:46', seeing=1.21, atlas_timestamp='2025-11-03T20:28:38.640', atlas_cloud=1, atlas_rain=1, zp_data=[-0.07525000000000048, 0.05975000000000108, -0.04824999999999946, 0.10199999999999854, 0.01750000000000007, 0.024250000000002103, -0.17300000000000004, -0.07675000000000054, -0.016000000000000014, 0.018000000000000682, 0.08425000000000082, 0.09450000000000003, 0.1169999999999991, -0.0022500000000000853, -0.18100000000000094, -0.43950000000000067, 0.04025000000000034, 0.0389999999999997, 0.118999999999998, 0.10524999999999807, 0.1374999999999993, -0.01025000000000098, -0.13674999999999926, -0.24624999999999986, 0.05299999999999905, 0.12650000000000006, 0.1592500000000001, 0.21850000000000058, 0.2610000000000001, -0.024499999999999744, -0.11949999999999861, -0.0045000000000001705, 0.12174999999999869], zp_timestamp='2025-11-03T20:26:00')
2025-11-03T22:29:13.980 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:29:13.991 [DEBUG] [Thread-123726] [transport.py] [_log()] starting thread (client mode): 0xed5f130
2025-11-03T22:29:13.992 [DEBUG] [Thread-123726] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:29:14.007 [DEBUG] [Thread-123726] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:29:14.007 [INFO] [Thread-123726] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:29:14.017 [DEBUG] [Thread-123726] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:29:14.018 [DEBUG] [Thread-123726] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:29:14.018 [DEBUG] [Thread-123726] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:29:14.018 [DEBUG] [Thread-123726] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:29:14.018 [DEBUG] [Thread-123726] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:29:14.018 [DEBUG] [Thread-123726] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:29:14.019 [DEBUG] [Thread-123726] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:29:14.019 [DEBUG] [Thread-123726] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:29:14.019 [DEBUG] [Thread-123726] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:29:14.019 [DEBUG] [Thread-123726] [transport.py] [_log()] client lang: <none>
2025-11-03T22:29:14.019 [DEBUG] [Thread-123726] [transport.py] [_log()] server lang: <none>
2025-11-03T22:29:14.019 [DEBUG] [Thread-123726] [transport.py] [_log()] kex follows: False
2025-11-03T22:29:14.019 [DEBUG] [Thread-123726] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:29:14.019 [DEBUG] [Thread-123726] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:29:14.019 [DEBUG] [Thread-123726] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:29:14.020 [DEBUG] [Thread-123726] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:29:14.020 [DEBUG] [Thread-123726] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:29:14.020 [DEBUG] [Thread-123726] [transport.py] [_log()] Compression: none
2025-11-03T22:29:14.020 [DEBUG] [Thread-123726] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:29:14.086 [DEBUG] [Thread-123726] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:29:14.086 [DEBUG] [Thread-123726] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:29:14.087 [DEBUG] [Thread-123726] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:29:14.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:29:14.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:29:14.146 [DEBUG] [Thread-123726] [transport.py] [_log()] userauth is OK
2025-11-03T22:29:14.147 [DEBUG] [Thread-123726] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:29:14.147 [DEBUG] [Thread-123726] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:29:14.147 [DEBUG] [Thread-123726] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:29:14.147 [DEBUG] [Thread-123726] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:29:14.166 [INFO] [Thread-123726] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:29:14.167 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:29:14.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:29:14.995 [DEBUG] [Thread-123726] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:29:14.995 [DEBUG] [Thread-123726] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:29:15.046 [DEBUG] [Thread-123726] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:29:15.046 [DEBUG] [Thread-123726] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:29:15.056 [DEBUG] [Thread-123726] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:29:15.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:29:15.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:29:15.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:29:15.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:29:15.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:29:15.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:29:15.100 [DEBUG] [Thread-123726] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:29:20.744 [DEBUG] [Thread-123728 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:29:35.778 [DEBUG] [Thread-123729 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:29:45.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:29:45.106 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:29:45.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:29:45.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 29, 18), 30.9, 11.38, 0.0, 15.9, 19.46, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:29:45.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:29:18
2025-11-03T22:29:46.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:29:46.218 [DEBUG] [Thread-123730] [transport.py] [_log()] starting thread (client mode): 0x117e97e0
2025-11-03T22:29:46.218 [DEBUG] [Thread-123730] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:29:46.229 [DEBUG] [Thread-123730] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:29:46.229 [INFO] [Thread-123730] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:29:46.231 [DEBUG] [Thread-123730] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:29:46.232 [DEBUG] [Thread-123730] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:29:46.232 [DEBUG] [Thread-123730] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:29:46.232 [DEBUG] [Thread-123730] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:29:46.232 [DEBUG] [Thread-123730] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:29:46.232 [DEBUG] [Thread-123730] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:29:46.232 [DEBUG] [Thread-123730] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:29:46.232 [DEBUG] [Thread-123730] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:29:46.232 [DEBUG] [Thread-123730] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:29:46.232 [DEBUG] [Thread-123730] [transport.py] [_log()] client lang: <none>
2025-11-03T22:29:46.232 [DEBUG] [Thread-123730] [transport.py] [_log()] server lang: <none>
2025-11-03T22:29:46.232 [DEBUG] [Thread-123730] [transport.py] [_log()] kex follows: False
2025-11-03T22:29:46.232 [DEBUG] [Thread-123730] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:29:46.232 [DEBUG] [Thread-123730] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:29:46.232 [DEBUG] [Thread-123730] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:29:46.232 [DEBUG] [Thread-123730] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:29:46.232 [DEBUG] [Thread-123730] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:29:46.232 [DEBUG] [Thread-123730] [transport.py] [_log()] Compression: none
2025-11-03T22:29:46.232 [DEBUG] [Thread-123730] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:29:46.247 [DEBUG] [Thread-123730] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:29:46.247 [DEBUG] [Thread-123730] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:29:46.247 [DEBUG] [Thread-123730] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:29:46.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:29:46.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:29:46.249 [DEBUG] [Thread-123730] [transport.py] [_log()] userauth is OK
2025-11-03T22:29:46.249 [DEBUG] [Thread-123730] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:29:46.249 [DEBUG] [Thread-123730] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:29:46.249 [DEBUG] [Thread-123730] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:29:46.249 [DEBUG] [Thread-123730] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:29:46.272 [INFO] [Thread-123730] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:29:46.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:29:46.930 [DEBUG] [Thread-123730] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:29:46.939 [DEBUG] [Thread-123730] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:29:46.940 [DEBUG] [Thread-123730] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:29:46.971 [DEBUG] [Thread-123730] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:29:46.971 [DEBUG] [Thread-123730] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:29:46.975 [DEBUG] [Thread-123730] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:29:46.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:29:46.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:29:46.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:29:46.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:29:46.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:29:46.999 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:29:46.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:29:46.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:29:47.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:29:47.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.853572 -999.00  +19.60  18.27     16   -6.50 1 1 1 1 1     0    0 26.53 23.04 ZNESW 16.6 18.3 299.1 24.8 19.6 -26.1 19.4 -25.0 19.2 -24.5 19.5 -25.6
2025-11-03T22:29:47.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:29:47.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:29:47.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.853572
2025-11-03T22:29:47.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:29:47.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:29:47.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:29:47.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:29:47.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:29:47.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:29:18', tmtdew=30.9, humidity=11.38, cloud=0.0, wind=15.9, temperature=19.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:29:18', seeing=1.21, atlas_timestamp='2025-11-03T20:29:08.621', atlas_cloud=1, atlas_rain=1, zp_data=[-0.07525000000000048, 0.05975000000000108, -0.04824999999999946, 0.10199999999999854, 0.01750000000000007, 0.024250000000002103, -0.17300000000000004, -0.07675000000000054, -0.016000000000000014, 0.018000000000000682, 0.08425000000000082, 0.09450000000000003, 0.1169999999999991, -0.0022500000000000853, -0.18100000000000094, -0.43950000000000067, 0.04025000000000034, 0.0389999999999997, 0.118999999999998, 0.10524999999999807, 0.1374999999999993, -0.01025000000000098, -0.13674999999999926, -0.24624999999999986, 0.05299999999999905, 0.12650000000000006, 0.1592500000000001, 0.21850000000000058, 0.2610000000000001, -0.024499999999999744, -0.11949999999999861, -0.0045000000000001705, 0.12174999999999869], zp_timestamp='2025-11-03T20:28:00')
2025-11-03T22:29:47.002 [DEBUG] [Thread-123730] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:29:47.090 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:29:47.105 [DEBUG] [Thread-123733] [transport.py] [_log()] starting thread (client mode): 0x1174c850
2025-11-03T22:29:47.105 [DEBUG] [Thread-123733] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:29:47.124 [DEBUG] [Thread-123733] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:29:47.124 [INFO] [Thread-123733] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:29:47.133 [DEBUG] [Thread-123733] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:29:47.134 [DEBUG] [Thread-123733] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:29:47.134 [DEBUG] [Thread-123733] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:29:47.134 [DEBUG] [Thread-123733] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:29:47.134 [DEBUG] [Thread-123733] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:29:47.135 [DEBUG] [Thread-123733] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:29:47.135 [DEBUG] [Thread-123733] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:29:47.135 [DEBUG] [Thread-123733] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:29:47.135 [DEBUG] [Thread-123733] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:29:47.135 [DEBUG] [Thread-123733] [transport.py] [_log()] client lang: <none>
2025-11-03T22:29:47.135 [DEBUG] [Thread-123733] [transport.py] [_log()] server lang: <none>
2025-11-03T22:29:47.135 [DEBUG] [Thread-123733] [transport.py] [_log()] kex follows: False
2025-11-03T22:29:47.135 [DEBUG] [Thread-123733] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:29:47.135 [DEBUG] [Thread-123733] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:29:47.135 [DEBUG] [Thread-123733] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:29:47.135 [DEBUG] [Thread-123733] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:29:47.135 [DEBUG] [Thread-123733] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:29:47.135 [DEBUG] [Thread-123733] [transport.py] [_log()] Compression: none
2025-11-03T22:29:47.135 [DEBUG] [Thread-123733] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:29:47.195 [DEBUG] [Thread-123733] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:29:47.204 [DEBUG] [Thread-123733] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:29:47.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:29:47.206 [DEBUG] [Thread-123733] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:29:47.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:29:47.258 [DEBUG] [Thread-123733] [transport.py] [_log()] userauth is OK
2025-11-03T22:29:47.258 [DEBUG] [Thread-123733] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:29:47.258 [DEBUG] [Thread-123733] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:29:47.259 [DEBUG] [Thread-123733] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:29:47.259 [DEBUG] [Thread-123733] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:29:47.280 [INFO] [Thread-123733] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:29:47.281 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:29:47.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:29:48.136 [DEBUG] [Thread-123733] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:29:48.136 [DEBUG] [Thread-123733] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:29:48.175 [DEBUG] [Thread-123733] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:29:48.175 [DEBUG] [Thread-123733] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:29:48.185 [DEBUG] [Thread-123733] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:29:48.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:29:48.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:29:48.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:29:48.219 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:29:48.219 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:29:48.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:29:48.231 [DEBUG] [Thread-123733] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:29:50.808 [DEBUG] [Thread-123735 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:29:54.297 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:29:54.299 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:29:55.185 [DEBUG] [Thread-123736 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:30:05.860 [DEBUG] [Thread-123737 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:30:18.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:30:18.250 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:30:18.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:30:19.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 29, 53), 30.85, 11.37, 0.0, 18.19, 19.41, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:30:19.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:29:53
2025-11-03T22:30:19.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:30:19.329 [DEBUG] [Thread-123738] [transport.py] [_log()] starting thread (client mode): 0x117619c0
2025-11-03T22:30:19.329 [DEBUG] [Thread-123738] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:30:19.333 [DEBUG] [Thread-123738] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:30:19.334 [INFO] [Thread-123738] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:30:19.336 [DEBUG] [Thread-123738] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:30:19.336 [DEBUG] [Thread-123738] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:30:19.336 [DEBUG] [Thread-123738] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:30:19.336 [DEBUG] [Thread-123738] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:30:19.336 [DEBUG] [Thread-123738] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:30:19.336 [DEBUG] [Thread-123738] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:30:19.336 [DEBUG] [Thread-123738] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:30:19.336 [DEBUG] [Thread-123738] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:30:19.336 [DEBUG] [Thread-123738] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:30:19.336 [DEBUG] [Thread-123738] [transport.py] [_log()] client lang: <none>
2025-11-03T22:30:19.336 [DEBUG] [Thread-123738] [transport.py] [_log()] server lang: <none>
2025-11-03T22:30:19.336 [DEBUG] [Thread-123738] [transport.py] [_log()] kex follows: False
2025-11-03T22:30:19.336 [DEBUG] [Thread-123738] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:30:19.336 [DEBUG] [Thread-123738] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:30:19.336 [DEBUG] [Thread-123738] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:30:19.336 [DEBUG] [Thread-123738] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:30:19.336 [DEBUG] [Thread-123738] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:30:19.336 [DEBUG] [Thread-123738] [transport.py] [_log()] Compression: none
2025-11-03T22:30:19.337 [DEBUG] [Thread-123738] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:30:19.353 [DEBUG] [Thread-123738] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:30:19.353 [DEBUG] [Thread-123738] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:30:19.354 [DEBUG] [Thread-123738] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:30:19.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:30:19.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:30:19.356 [DEBUG] [Thread-123738] [transport.py] [_log()] userauth is OK
2025-11-03T22:30:19.356 [DEBUG] [Thread-123738] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:30:19.356 [DEBUG] [Thread-123738] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:30:19.357 [DEBUG] [Thread-123738] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:30:19.357 [DEBUG] [Thread-123738] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:30:19.381 [INFO] [Thread-123738] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:30:19.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:30:20.015 [DEBUG] [Thread-123738] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:30:20.015 [DEBUG] [Thread-123738] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:30:20.015 [DEBUG] [Thread-123738] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:30:20.056 [DEBUG] [Thread-123738] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:30:20.056 [DEBUG] [Thread-123738] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:30:20.058 [DEBUG] [Thread-123738] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:30:20.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:30:20.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:30:20.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:30:20.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:30:20.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:30:20.086 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:30:20.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:30:20.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:30:20.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:30:20.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.853919 -999.00  +19.60  16.90     16   -6.40 1 1 1 1 1     0    0 26.69 24.22 ZNESW 20.1 16.9 301.0 22.0 19.5 -25.9 19.4 -24.9 19.2 -24.7 19.5 -25.6
2025-11-03T22:30:20.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:30:20.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:30:20.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.853919
2025-11-03T22:30:20.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:30:20.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:30:20.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:30:20.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:30:20.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:30:20.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:29:53', tmtdew=30.85, humidity=11.37, cloud=0.0, wind=18.19, temperature=19.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:29:54', seeing=1.16, atlas_timestamp='2025-11-03T20:29:38.602', atlas_cloud=1, atlas_rain=1, zp_data=[-0.07525000000000048, 0.05975000000000108, -0.04824999999999946, 0.10199999999999854, 0.01750000000000007, 0.024250000000002103, -0.17300000000000004, -0.07675000000000054, -0.016000000000000014, 0.018000000000000682, 0.08425000000000082, 0.09450000000000003, 0.1169999999999991, -0.0022500000000000853, -0.18100000000000094, -0.43950000000000067, 0.04025000000000034, 0.0389999999999997, 0.118999999999998, 0.10524999999999807, 0.1374999999999993, -0.01025000000000098, -0.13674999999999926, -0.24624999999999986, 0.05299999999999905, 0.12650000000000006, 0.1592500000000001, 0.21850000000000058, 0.2610000000000001, -0.024499999999999744, -0.11949999999999861, -0.0045000000000001705, 0.12174999999999869], zp_timestamp='2025-11-03T20:28:00')
2025-11-03T22:30:20.087 [DEBUG] [Thread-123738] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:30:20.158 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:30:20.173 [DEBUG] [Thread-123741] [transport.py] [_log()] starting thread (client mode): 0xed127a0
2025-11-03T22:30:20.173 [DEBUG] [Thread-123741] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:30:20.189 [DEBUG] [Thread-123741] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:30:20.189 [INFO] [Thread-123741] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:30:20.197 [DEBUG] [Thread-123741] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:30:20.197 [DEBUG] [Thread-123741] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:30:20.197 [DEBUG] [Thread-123741] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:30:20.197 [DEBUG] [Thread-123741] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:30:20.197 [DEBUG] [Thread-123741] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:30:20.197 [DEBUG] [Thread-123741] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:30:20.197 [DEBUG] [Thread-123741] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:30:20.197 [DEBUG] [Thread-123741] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:30:20.198 [DEBUG] [Thread-123741] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:30:20.198 [DEBUG] [Thread-123741] [transport.py] [_log()] client lang: <none>
2025-11-03T22:30:20.198 [DEBUG] [Thread-123741] [transport.py] [_log()] server lang: <none>
2025-11-03T22:30:20.198 [DEBUG] [Thread-123741] [transport.py] [_log()] kex follows: False
2025-11-03T22:30:20.198 [DEBUG] [Thread-123741] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:30:20.198 [DEBUG] [Thread-123741] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:30:20.198 [DEBUG] [Thread-123741] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:30:20.198 [DEBUG] [Thread-123741] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:30:20.198 [DEBUG] [Thread-123741] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:30:20.198 [DEBUG] [Thread-123741] [transport.py] [_log()] Compression: none
2025-11-03T22:30:20.198 [DEBUG] [Thread-123741] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:30:20.259 [DEBUG] [Thread-123741] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:30:20.259 [DEBUG] [Thread-123741] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:30:20.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:30:20.259 [DEBUG] [Thread-123741] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:30:20.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:30:20.320 [DEBUG] [Thread-123741] [transport.py] [_log()] userauth is OK
2025-11-03T22:30:20.320 [DEBUG] [Thread-123741] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:30:20.320 [DEBUG] [Thread-123741] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:30:20.320 [DEBUG] [Thread-123741] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:30:20.320 [DEBUG] [Thread-123741] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:30:20.335 [INFO] [Thread-123741] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:30:20.335 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:30:20.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:30:20.900 [DEBUG] [Thread-123743 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:30:21.208 [DEBUG] [Thread-123741] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:30:21.209 [DEBUG] [Thread-123741] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:30:21.257 [DEBUG] [Thread-123741] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:30:21.257 [DEBUG] [Thread-123741] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:30:21.267 [DEBUG] [Thread-123741] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:30:21.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:30:21.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:30:21.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:30:21.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:30:21.298 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:30:21.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:30:21.309 [DEBUG] [Thread-123741] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:30:35.968 [DEBUG] [Thread-123744 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:30:51.003 [DEBUG] [Thread-123745 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:30:51.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:30:51.329 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:30:51.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:30:52.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 30, 26), 30.88, 11.35, 0.0, 18.91, 19.44, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:30:52.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:30:26
2025-11-03T22:30:52.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:30:52.441 [DEBUG] [Thread-123746] [transport.py] [_log()] starting thread (client mode): 0xedb1fc0
2025-11-03T22:30:52.441 [DEBUG] [Thread-123746] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:30:52.460 [DEBUG] [Thread-123746] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:30:52.460 [INFO] [Thread-123746] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:30:52.463 [DEBUG] [Thread-123746] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:30:52.463 [DEBUG] [Thread-123746] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:30:52.463 [DEBUG] [Thread-123746] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:30:52.463 [DEBUG] [Thread-123746] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:30:52.463 [DEBUG] [Thread-123746] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:30:52.463 [DEBUG] [Thread-123746] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:30:52.464 [DEBUG] [Thread-123746] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:30:52.464 [DEBUG] [Thread-123746] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:30:52.464 [DEBUG] [Thread-123746] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:30:52.464 [DEBUG] [Thread-123746] [transport.py] [_log()] client lang: <none>
2025-11-03T22:30:52.464 [DEBUG] [Thread-123746] [transport.py] [_log()] server lang: <none>
2025-11-03T22:30:52.464 [DEBUG] [Thread-123746] [transport.py] [_log()] kex follows: False
2025-11-03T22:30:52.464 [DEBUG] [Thread-123746] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:30:52.464 [DEBUG] [Thread-123746] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:30:52.464 [DEBUG] [Thread-123746] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:30:52.464 [DEBUG] [Thread-123746] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:30:52.464 [DEBUG] [Thread-123746] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:30:52.464 [DEBUG] [Thread-123746] [transport.py] [_log()] Compression: none
2025-11-03T22:30:52.464 [DEBUG] [Thread-123746] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:30:52.479 [DEBUG] [Thread-123746] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:30:52.479 [DEBUG] [Thread-123746] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:30:52.479 [DEBUG] [Thread-123746] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:30:52.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:30:52.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:30:52.480 [DEBUG] [Thread-123746] [transport.py] [_log()] userauth is OK
2025-11-03T22:30:52.480 [DEBUG] [Thread-123746] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:30:52.480 [DEBUG] [Thread-123746] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:30:52.480 [DEBUG] [Thread-123746] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:30:52.480 [DEBUG] [Thread-123746] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:30:52.489 [INFO] [Thread-123746] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:30:52.489 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:30:53.055 [DEBUG] [Thread-123746] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:30:53.055 [DEBUG] [Thread-123746] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:30:53.055 [DEBUG] [Thread-123746] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:30:53.096 [DEBUG] [Thread-123746] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:30:53.096 [DEBUG] [Thread-123746] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:30:53.099 [DEBUG] [Thread-123746] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:30:53.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:30:53.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:30:53.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:30:53.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:30:53.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:30:53.118 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:30:53.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:30:53.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:30:53.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:30:53.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.854614 -999.00  +19.50  17.20     16   -6.40 1 1 1 1 1     0    0 26.21 26.67 ZNESW 19.6 17.2 300.8 27.1 19.5 -25.9 19.4 -24.9 19.2 -24.6 19.5 -25.6
2025-11-03T22:30:53.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:30:53.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:30:53.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.854614
2025-11-03T22:30:53.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:30:53.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:30:53.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:30:53.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:30:53.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:30:53.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:30:26', tmtdew=30.88, humidity=11.35, cloud=0.0, wind=18.91, temperature=19.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:30:27', seeing=1.13, atlas_timestamp='2025-11-03T20:30:38.650', atlas_cloud=1, atlas_rain=1, zp_data=[-0.07525000000000048, 0.05975000000000108, -0.04824999999999946, 0.10199999999999854, 0.01750000000000007, 0.024250000000002103, -0.17300000000000004, -0.07675000000000054, -0.016000000000000014, 0.018000000000000682, 0.08425000000000082, 0.09450000000000003, 0.1169999999999991, -0.0022500000000000853, -0.18100000000000094, -0.43950000000000067, 0.04025000000000034, 0.0389999999999997, 0.118999999999998, 0.10524999999999807, 0.1374999999999993, -0.01025000000000098, -0.13674999999999926, -0.24624999999999986, 0.05299999999999905, 0.12650000000000006, 0.1592500000000001, 0.21850000000000058, 0.2610000000000001, -0.024499999999999744, -0.11949999999999861, -0.0045000000000001705, 0.12174999999999869], zp_timestamp='2025-11-03T20:28:00')
2025-11-03T22:30:53.119 [DEBUG] [Thread-123746] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:30:53.193 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:30:53.206 [DEBUG] [Thread-123749] [transport.py] [_log()] starting thread (client mode): 0xedb3d60
2025-11-03T22:30:53.206 [DEBUG] [Thread-123749] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:30:53.221 [DEBUG] [Thread-123749] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:30:53.221 [INFO] [Thread-123749] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:30:53.229 [DEBUG] [Thread-123749] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:30:53.229 [DEBUG] [Thread-123749] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:30:53.229 [DEBUG] [Thread-123749] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:30:53.229 [DEBUG] [Thread-123749] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:30:53.229 [DEBUG] [Thread-123749] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:30:53.229 [DEBUG] [Thread-123749] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:30:53.229 [DEBUG] [Thread-123749] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:30:53.229 [DEBUG] [Thread-123749] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:30:53.229 [DEBUG] [Thread-123749] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:30:53.229 [DEBUG] [Thread-123749] [transport.py] [_log()] client lang: <none>
2025-11-03T22:30:53.229 [DEBUG] [Thread-123749] [transport.py] [_log()] server lang: <none>
2025-11-03T22:30:53.229 [DEBUG] [Thread-123749] [transport.py] [_log()] kex follows: False
2025-11-03T22:30:53.229 [DEBUG] [Thread-123749] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:30:53.229 [DEBUG] [Thread-123749] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:30:53.229 [DEBUG] [Thread-123749] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:30:53.229 [DEBUG] [Thread-123749] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:30:53.229 [DEBUG] [Thread-123749] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:30:53.229 [DEBUG] [Thread-123749] [transport.py] [_log()] Compression: none
2025-11-03T22:30:53.229 [DEBUG] [Thread-123749] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:30:53.287 [DEBUG] [Thread-123749] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:30:53.287 [DEBUG] [Thread-123749] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:30:53.287 [DEBUG] [Thread-123749] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:30:53.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:30:53.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:30:53.344 [DEBUG] [Thread-123749] [transport.py] [_log()] userauth is OK
2025-11-03T22:30:53.344 [DEBUG] [Thread-123749] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:30:53.344 [DEBUG] [Thread-123749] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:30:53.344 [DEBUG] [Thread-123749] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:30:53.344 [DEBUG] [Thread-123749] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:30:53.358 [INFO] [Thread-123749] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:30:53.358 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:30:53.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:30:54.254 [DEBUG] [Thread-123749] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:30:54.254 [DEBUG] [Thread-123749] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:30:54.303 [DEBUG] [Thread-123749] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:30:54.303 [DEBUG] [Thread-123749] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:30:54.311 [DEBUG] [Thread-123749] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:30:54.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:30:54.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:30:54.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:30:54.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:30:54.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:30:54.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:30:54.343 [DEBUG] [Thread-123749] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:30:54.500 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:30:54.501 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:30:55.437 [DEBUG] [Thread-123751 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:31:06.045 [DEBUG] [Thread-123752 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:31:21.430 [DEBUG] [Thread-123753 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:31:24.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:31:24.352 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:31:24.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:31:25.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 30, 59), 30.83, 11.35, 0.0, 18.76, 19.41, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:31:25.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:30:59
2025-11-03T22:31:25.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:31:25.400 [DEBUG] [Thread-123754] [transport.py] [_log()] starting thread (client mode): 0xedb10c0
2025-11-03T22:31:25.400 [DEBUG] [Thread-123754] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:31:25.419 [DEBUG] [Thread-123754] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:31:25.420 [INFO] [Thread-123754] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:31:25.423 [DEBUG] [Thread-123754] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:31:25.423 [DEBUG] [Thread-123754] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:31:25.423 [DEBUG] [Thread-123754] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:31:25.423 [DEBUG] [Thread-123754] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:31:25.423 [DEBUG] [Thread-123754] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:31:25.423 [DEBUG] [Thread-123754] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:31:25.423 [DEBUG] [Thread-123754] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:31:25.423 [DEBUG] [Thread-123754] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:31:25.423 [DEBUG] [Thread-123754] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:31:25.423 [DEBUG] [Thread-123754] [transport.py] [_log()] client lang: <none>
2025-11-03T22:31:25.423 [DEBUG] [Thread-123754] [transport.py] [_log()] server lang: <none>
2025-11-03T22:31:25.424 [DEBUG] [Thread-123754] [transport.py] [_log()] kex follows: False
2025-11-03T22:31:25.424 [DEBUG] [Thread-123754] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:31:25.424 [DEBUG] [Thread-123754] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:31:25.424 [DEBUG] [Thread-123754] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:31:25.424 [DEBUG] [Thread-123754] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:31:25.424 [DEBUG] [Thread-123754] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:31:25.424 [DEBUG] [Thread-123754] [transport.py] [_log()] Compression: none
2025-11-03T22:31:25.424 [DEBUG] [Thread-123754] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:31:25.442 [DEBUG] [Thread-123754] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:31:25.442 [DEBUG] [Thread-123754] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:31:25.443 [DEBUG] [Thread-123754] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:31:25.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:31:25.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:31:25.486 [DEBUG] [Thread-123754] [transport.py] [_log()] userauth is OK
2025-11-03T22:31:25.486 [DEBUG] [Thread-123754] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:31:25.486 [DEBUG] [Thread-123754] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:31:25.486 [DEBUG] [Thread-123754] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:31:25.487 [DEBUG] [Thread-123754] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:31:25.532 [INFO] [Thread-123754] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:31:25.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:31:26.190 [DEBUG] [Thread-123754] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:31:26.190 [DEBUG] [Thread-123754] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:31:26.190 [DEBUG] [Thread-123754] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:31:26.231 [DEBUG] [Thread-123754] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:31:26.232 [DEBUG] [Thread-123754] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:31:26.234 [DEBUG] [Thread-123754] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:31:26.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:31:26.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:31:26.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:31:26.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:31:26.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:31:26.254 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:31:26.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:31:26.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:31:26.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:31:26.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.854961 -999.00  +19.50  13.68     16   -6.40 1 1 1 1 1     0    0 26.73 29.22 ZNESW 17.1 13.7 313.6 22.1 19.6 -26.1 19.4 -25.2 19.2 -24.6 19.5 -25.6
2025-11-03T22:31:26.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:31:26.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:31:26.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.854961
2025-11-03T22:31:26.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:31:26.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:31:26.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:31:26.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:31:26.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:31:26.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:30:59', tmtdew=30.83, humidity=11.35, cloud=0.0, wind=18.76, temperature=19.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:30:59', seeing=1.13, atlas_timestamp='2025-11-03T20:31:08.630', atlas_cloud=1, atlas_rain=1, zp_data=[-0.07525000000000048, 0.05975000000000108, -0.04824999999999946, 0.10199999999999854, 0.01750000000000007, 0.024250000000002103, -0.17300000000000004, -0.07675000000000054, -0.016000000000000014, 0.018000000000000682, 0.08425000000000082, 0.09450000000000003, 0.1169999999999991, -0.0022500000000000853, -0.18100000000000094, -0.43950000000000067, 0.04025000000000034, 0.0389999999999997, 0.118999999999998, 0.10524999999999807, 0.1374999999999993, -0.01025000000000098, -0.13674999999999926, -0.24624999999999986, 0.05299999999999905, 0.12650000000000006, 0.1592500000000001, 0.21850000000000058, 0.2610000000000001, -0.024499999999999744, -0.11949999999999861, -0.0045000000000001705, 0.12174999999999869], zp_timestamp='2025-11-03T20:28:00')
2025-11-03T22:31:26.255 [DEBUG] [Thread-123754] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:31:26.326 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:31:26.339 [DEBUG] [Thread-123757] [transport.py] [_log()] starting thread (client mode): 0xedb1000
2025-11-03T22:31:26.339 [DEBUG] [Thread-123757] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:31:26.354 [DEBUG] [Thread-123757] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:31:26.354 [INFO] [Thread-123757] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:31:26.366 [DEBUG] [Thread-123757] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:31:26.366 [DEBUG] [Thread-123757] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:31:26.366 [DEBUG] [Thread-123757] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:31:26.366 [DEBUG] [Thread-123757] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:31:26.366 [DEBUG] [Thread-123757] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:31:26.366 [DEBUG] [Thread-123757] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:31:26.366 [DEBUG] [Thread-123757] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:31:26.366 [DEBUG] [Thread-123757] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:31:26.366 [DEBUG] [Thread-123757] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:31:26.366 [DEBUG] [Thread-123757] [transport.py] [_log()] client lang: <none>
2025-11-03T22:31:26.366 [DEBUG] [Thread-123757] [transport.py] [_log()] server lang: <none>
2025-11-03T22:31:26.366 [DEBUG] [Thread-123757] [transport.py] [_log()] kex follows: False
2025-11-03T22:31:26.366 [DEBUG] [Thread-123757] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:31:26.366 [DEBUG] [Thread-123757] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:31:26.366 [DEBUG] [Thread-123757] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:31:26.366 [DEBUG] [Thread-123757] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:31:26.366 [DEBUG] [Thread-123757] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:31:26.366 [DEBUG] [Thread-123757] [transport.py] [_log()] Compression: none
2025-11-03T22:31:26.366 [DEBUG] [Thread-123757] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:31:26.426 [DEBUG] [Thread-123757] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:31:26.426 [DEBUG] [Thread-123757] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:31:26.426 [DEBUG] [Thread-123757] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:31:26.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:31:26.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:31:26.485 [DEBUG] [Thread-123757] [transport.py] [_log()] userauth is OK
2025-11-03T22:31:26.485 [DEBUG] [Thread-123757] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:31:26.485 [DEBUG] [Thread-123757] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:31:26.485 [DEBUG] [Thread-123757] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:31:26.485 [DEBUG] [Thread-123757] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:31:26.499 [INFO] [Thread-123757] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:31:26.499 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:31:26.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:31:27.321 [DEBUG] [Thread-123757] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:31:27.321 [DEBUG] [Thread-123757] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:31:27.369 [DEBUG] [Thread-123757] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:31:27.369 [DEBUG] [Thread-123757] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:31:27.379 [DEBUG] [Thread-123757] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:31:27.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:31:27.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:31:27.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:31:27.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:31:27.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:31:27.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:31:27.417 [DEBUG] [Thread-123757] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:31:36.454 [DEBUG] [Thread-123759 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:31:51.495 [DEBUG] [Thread-123760 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:31:54.722 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:31:54.724 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:31:55.654 [DEBUG] [Thread-123761 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:31:57.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:31:57.421 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:31:57.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:31:58.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 31, 31), 30.89, 11.28, 0.0, 18.95, 19.36, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:31:58.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:31:31
2025-11-03T22:31:58.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:31:58.423 [DEBUG] [Thread-123762] [transport.py] [_log()] starting thread (client mode): 0xedb3760
2025-11-03T22:31:58.423 [DEBUG] [Thread-123762] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:31:58.429 [DEBUG] [Thread-123762] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:31:58.429 [INFO] [Thread-123762] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:31:58.432 [DEBUG] [Thread-123762] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:31:58.433 [DEBUG] [Thread-123762] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:31:58.433 [DEBUG] [Thread-123762] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:31:58.433 [DEBUG] [Thread-123762] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:31:58.433 [DEBUG] [Thread-123762] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:31:58.433 [DEBUG] [Thread-123762] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:31:58.433 [DEBUG] [Thread-123762] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:31:58.433 [DEBUG] [Thread-123762] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:31:58.433 [DEBUG] [Thread-123762] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:31:58.433 [DEBUG] [Thread-123762] [transport.py] [_log()] client lang: <none>
2025-11-03T22:31:58.433 [DEBUG] [Thread-123762] [transport.py] [_log()] server lang: <none>
2025-11-03T22:31:58.433 [DEBUG] [Thread-123762] [transport.py] [_log()] kex follows: False
2025-11-03T22:31:58.433 [DEBUG] [Thread-123762] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:31:58.433 [DEBUG] [Thread-123762] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:31:58.433 [DEBUG] [Thread-123762] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:31:58.433 [DEBUG] [Thread-123762] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:31:58.433 [DEBUG] [Thread-123762] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:31:58.433 [DEBUG] [Thread-123762] [transport.py] [_log()] Compression: none
2025-11-03T22:31:58.433 [DEBUG] [Thread-123762] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:31:58.451 [DEBUG] [Thread-123762] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:31:58.451 [DEBUG] [Thread-123762] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:31:58.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:31:58.452 [DEBUG] [Thread-123762] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:31:58.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:31:58.455 [DEBUG] [Thread-123762] [transport.py] [_log()] userauth is OK
2025-11-03T22:31:58.455 [DEBUG] [Thread-123762] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:31:58.455 [DEBUG] [Thread-123762] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:31:58.455 [DEBUG] [Thread-123762] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:31:58.455 [DEBUG] [Thread-123762] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:31:58.473 [INFO] [Thread-123762] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:31:58.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:31:59.031 [DEBUG] [Thread-123762] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:31:59.031 [DEBUG] [Thread-123762] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:31:59.031 [DEBUG] [Thread-123762] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:31:59.072 [DEBUG] [Thread-123762] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:31:59.072 [DEBUG] [Thread-123762] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:31:59.075 [DEBUG] [Thread-123762] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:31:59.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:31:59.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:31:59.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:31:59.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:31:59.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:31:59.107 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:31:59.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:31:59.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:31:59.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:31:59.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.855308 -999.00  +19.50  17.88     16   -6.40 1 1 1 1 1     0    0 26.51 27.83 ZNESW 17.7 17.9 310.6 21.0 19.5 -26.2 19.4 -25.1 19.2 -24.6 19.5 -25.6
2025-11-03T22:31:59.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:31:59.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:31:59.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.855308
2025-11-03T22:31:59.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:31:59.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:31:59.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:31:59.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:31:59.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:31:59.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:31:31', tmtdew=30.89, humidity=11.28, cloud=0.0, wind=18.95, temperature=19.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:31:32', seeing=1.21, atlas_timestamp='2025-11-03T20:31:38.611', atlas_cloud=1, atlas_rain=1, zp_data=[-0.07525000000000048, 0.05975000000000108, -0.04824999999999946, 0.10199999999999854, 0.01750000000000007, 0.024250000000002103, -0.17300000000000004, -0.07675000000000054, -0.016000000000000014, 0.018000000000000682, 0.08425000000000082, 0.09450000000000003, 0.1169999999999991, -0.0022500000000000853, -0.18100000000000094, -0.43950000000000067, 0.04025000000000034, 0.0389999999999997, 0.118999999999998, 0.10524999999999807, 0.1374999999999993, -0.01025000000000098, -0.13674999999999926, -0.24624999999999986, 0.05299999999999905, 0.12650000000000006, 0.1592500000000001, 0.21850000000000058, 0.2610000000000001, -0.024499999999999744, -0.11949999999999861, -0.0045000000000001705, 0.12174999999999869], zp_timestamp='2025-11-03T20:28:00')
2025-11-03T22:31:59.111 [DEBUG] [Thread-123762] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:31:59.194 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:31:59.206 [DEBUG] [Thread-123765] [transport.py] [_log()] starting thread (client mode): 0xed42b90
2025-11-03T22:31:59.206 [DEBUG] [Thread-123765] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:31:59.220 [DEBUG] [Thread-123765] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:31:59.221 [INFO] [Thread-123765] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:31:59.229 [DEBUG] [Thread-123765] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:31:59.229 [DEBUG] [Thread-123765] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:31:59.229 [DEBUG] [Thread-123765] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:31:59.229 [DEBUG] [Thread-123765] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:31:59.230 [DEBUG] [Thread-123765] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:31:59.230 [DEBUG] [Thread-123765] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:31:59.230 [DEBUG] [Thread-123765] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:31:59.230 [DEBUG] [Thread-123765] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:31:59.230 [DEBUG] [Thread-123765] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:31:59.230 [DEBUG] [Thread-123765] [transport.py] [_log()] client lang: <none>
2025-11-03T22:31:59.230 [DEBUG] [Thread-123765] [transport.py] [_log()] server lang: <none>
2025-11-03T22:31:59.230 [DEBUG] [Thread-123765] [transport.py] [_log()] kex follows: False
2025-11-03T22:31:59.230 [DEBUG] [Thread-123765] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:31:59.231 [DEBUG] [Thread-123765] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:31:59.231 [DEBUG] [Thread-123765] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:31:59.231 [DEBUG] [Thread-123765] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:31:59.231 [DEBUG] [Thread-123765] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:31:59.231 [DEBUG] [Thread-123765] [transport.py] [_log()] Compression: none
2025-11-03T22:31:59.231 [DEBUG] [Thread-123765] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:31:59.289 [DEBUG] [Thread-123765] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:31:59.290 [DEBUG] [Thread-123765] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:31:59.291 [DEBUG] [Thread-123765] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:31:59.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:31:59.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:31:59.345 [DEBUG] [Thread-123765] [transport.py] [_log()] userauth is OK
2025-11-03T22:31:59.346 [DEBUG] [Thread-123765] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:31:59.346 [DEBUG] [Thread-123765] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:31:59.346 [DEBUG] [Thread-123765] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:31:59.346 [DEBUG] [Thread-123765] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:31:59.379 [INFO] [Thread-123765] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:31:59.379 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:31:59.380 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:32:00.195 [DEBUG] [Thread-123765] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:32:00.196 [DEBUG] [Thread-123765] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:32:00.248 [DEBUG] [Thread-123765] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:32:00.249 [DEBUG] [Thread-123765] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:32:00.259 [DEBUG] [Thread-123765] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:32:00.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:32:00.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:32:00.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:32:00.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:32:00.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:32:00.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:32:00.300 [DEBUG] [Thread-123765] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:32:06.527 [DEBUG] [Thread-123767 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:32:21.564 [DEBUG] [Thread-123768 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:32:30.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:32:30.322 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:32:30.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:32:31.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 32, 4), 30.85, 11.33, 0.0, 18.09, 19.41, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:32:31.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:32:04
2025-11-03T22:32:31.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:32:31.398 [DEBUG] [Thread-123769] [transport.py] [_log()] starting thread (client mode): 0xed42c80
2025-11-03T22:32:31.398 [DEBUG] [Thread-123769] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:32:31.406 [DEBUG] [Thread-123769] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:32:31.407 [INFO] [Thread-123769] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:32:31.409 [DEBUG] [Thread-123769] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:32:31.410 [DEBUG] [Thread-123769] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:32:31.410 [DEBUG] [Thread-123769] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:32:31.410 [DEBUG] [Thread-123769] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:32:31.410 [DEBUG] [Thread-123769] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:32:31.410 [DEBUG] [Thread-123769] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:32:31.410 [DEBUG] [Thread-123769] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:32:31.410 [DEBUG] [Thread-123769] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:32:31.410 [DEBUG] [Thread-123769] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:32:31.410 [DEBUG] [Thread-123769] [transport.py] [_log()] client lang: <none>
2025-11-03T22:32:31.410 [DEBUG] [Thread-123769] [transport.py] [_log()] server lang: <none>
2025-11-03T22:32:31.410 [DEBUG] [Thread-123769] [transport.py] [_log()] kex follows: False
2025-11-03T22:32:31.410 [DEBUG] [Thread-123769] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:32:31.410 [DEBUG] [Thread-123769] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:32:31.410 [DEBUG] [Thread-123769] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:32:31.411 [DEBUG] [Thread-123769] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:32:31.411 [DEBUG] [Thread-123769] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:32:31.411 [DEBUG] [Thread-123769] [transport.py] [_log()] Compression: none
2025-11-03T22:32:31.411 [DEBUG] [Thread-123769] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:32:31.428 [DEBUG] [Thread-123769] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:32:31.428 [DEBUG] [Thread-123769] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:32:31.429 [DEBUG] [Thread-123769] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:32:31.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:32:31.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:32:31.432 [DEBUG] [Thread-123769] [transport.py] [_log()] userauth is OK
2025-11-03T22:32:31.432 [DEBUG] [Thread-123769] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:32:31.432 [DEBUG] [Thread-123769] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:32:31.432 [DEBUG] [Thread-123769] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:32:31.432 [DEBUG] [Thread-123769] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:32:31.468 [INFO] [Thread-123769] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:32:31.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:32:32.065 [DEBUG] [Thread-123769] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:32:32.066 [DEBUG] [Thread-123769] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:32:32.067 [DEBUG] [Thread-123769] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:32:32.107 [DEBUG] [Thread-123769] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:32:32.107 [DEBUG] [Thread-123769] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:32:32.108 [DEBUG] [Thread-123769] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:32:32.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:32:32.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:32:32.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:32:32.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:32:32.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:32:32.129 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:32:32.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:32:32.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:32:32.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:32:32.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.855655 -999.00  +19.40  13.71     16   -6.50 1 1 1 1 1     0    0 26.54 28.50 ZNESW 20.9 13.7 302.8 22.2 19.5 -25.9 19.4 -24.9 19.2 -24.5 19.5 -25.6
2025-11-03T22:32:32.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:32:32.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:32:32.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.855655
2025-11-03T22:32:32.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:32:32.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:32:32.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:32:32.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:32:32.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:32:32.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:32:04', tmtdew=30.85, humidity=11.33, cloud=0.0, wind=18.09, temperature=19.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:32:04', seeing=1.21, atlas_timestamp='2025-11-03T20:32:08.592', atlas_cloud=1, atlas_rain=1, zp_data=[-0.07525000000000048, 0.05975000000000108, -0.04824999999999946, 0.10199999999999854, 0.01750000000000007, 0.024250000000002103, -0.17300000000000004, -0.07675000000000054, -0.016000000000000014, 0.018000000000000682, 0.08425000000000082, 0.09450000000000003, 0.1169999999999991, -0.0022500000000000853, -0.18100000000000094, -0.43950000000000067, 0.04025000000000034, 0.0389999999999997, 0.118999999999998, 0.10524999999999807, 0.1374999999999993, -0.01025000000000098, -0.13674999999999926, -0.24624999999999986, 0.05299999999999905, 0.12650000000000006, 0.1592500000000001, 0.21850000000000058, 0.2610000000000001, -0.024499999999999744, -0.11949999999999861, -0.0045000000000001705, 0.12174999999999869], zp_timestamp='2025-11-03T20:28:00')
2025-11-03T22:32:32.130 [DEBUG] [Thread-123769] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:32:32.203 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:32:32.215 [DEBUG] [Thread-123772] [transport.py] [_log()] starting thread (client mode): 0xedb0340
2025-11-03T22:32:32.215 [DEBUG] [Thread-123772] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:32:32.230 [DEBUG] [Thread-123772] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:32:32.231 [INFO] [Thread-123772] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:32:32.240 [DEBUG] [Thread-123772] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:32:32.240 [DEBUG] [Thread-123772] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:32:32.240 [DEBUG] [Thread-123772] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:32:32.240 [DEBUG] [Thread-123772] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:32:32.240 [DEBUG] [Thread-123772] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:32:32.240 [DEBUG] [Thread-123772] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:32:32.240 [DEBUG] [Thread-123772] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:32:32.240 [DEBUG] [Thread-123772] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:32:32.240 [DEBUG] [Thread-123772] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:32:32.240 [DEBUG] [Thread-123772] [transport.py] [_log()] client lang: <none>
2025-11-03T22:32:32.240 [DEBUG] [Thread-123772] [transport.py] [_log()] server lang: <none>
2025-11-03T22:32:32.240 [DEBUG] [Thread-123772] [transport.py] [_log()] kex follows: False
2025-11-03T22:32:32.240 [DEBUG] [Thread-123772] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:32:32.240 [DEBUG] [Thread-123772] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:32:32.240 [DEBUG] [Thread-123772] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:32:32.240 [DEBUG] [Thread-123772] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:32:32.240 [DEBUG] [Thread-123772] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:32:32.240 [DEBUG] [Thread-123772] [transport.py] [_log()] Compression: none
2025-11-03T22:32:32.240 [DEBUG] [Thread-123772] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:32:32.297 [DEBUG] [Thread-123772] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:32:32.297 [DEBUG] [Thread-123772] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:32:32.298 [DEBUG] [Thread-123772] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:32:32.298 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:32:32.298 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:32:32.358 [DEBUG] [Thread-123772] [transport.py] [_log()] userauth is OK
2025-11-03T22:32:32.358 [DEBUG] [Thread-123772] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:32:32.358 [DEBUG] [Thread-123772] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:32:32.358 [DEBUG] [Thread-123772] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:32:32.358 [DEBUG] [Thread-123772] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:32:32.372 [INFO] [Thread-123772] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:32:32.373 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:32:32.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:32:33.198 [DEBUG] [Thread-123772] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:32:33.198 [DEBUG] [Thread-123772] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:32:33.246 [DEBUG] [Thread-123772] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:32:33.246 [DEBUG] [Thread-123772] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:32:33.257 [DEBUG] [Thread-123772] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:32:33.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:32:33.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:32:33.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:32:33.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:32:33.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:32:33.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:32:33.298 [DEBUG] [Thread-123772] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:32:36.596 [DEBUG] [Thread-123774 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:32:49.033 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:32:51.654 [DEBUG] [Thread-123775 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:32:54.925 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:32:54.926 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:32:55.838 [DEBUG] [Thread-123776 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:33:03.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:33:03.321 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:33:03.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:33:04.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 32, 36), 30.91, 11.27, 0.0, 15.54, 19.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:33:04.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:32:36
2025-11-03T22:33:04.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:33:04.348 [DEBUG] [Thread-123777] [transport.py] [_log()] starting thread (client mode): 0xedb0a00
2025-11-03T22:33:04.349 [DEBUG] [Thread-123777] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:33:04.360 [DEBUG] [Thread-123777] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:33:04.360 [INFO] [Thread-123777] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:33:04.362 [DEBUG] [Thread-123777] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:33:04.362 [DEBUG] [Thread-123777] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:33:04.362 [DEBUG] [Thread-123777] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:33:04.362 [DEBUG] [Thread-123777] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:33:04.362 [DEBUG] [Thread-123777] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:33:04.362 [DEBUG] [Thread-123777] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:33:04.362 [DEBUG] [Thread-123777] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:33:04.362 [DEBUG] [Thread-123777] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:33:04.362 [DEBUG] [Thread-123777] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:33:04.362 [DEBUG] [Thread-123777] [transport.py] [_log()] client lang: <none>
2025-11-03T22:33:04.362 [DEBUG] [Thread-123777] [transport.py] [_log()] server lang: <none>
2025-11-03T22:33:04.362 [DEBUG] [Thread-123777] [transport.py] [_log()] kex follows: False
2025-11-03T22:33:04.362 [DEBUG] [Thread-123777] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:33:04.363 [DEBUG] [Thread-123777] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:33:04.363 [DEBUG] [Thread-123777] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:33:04.363 [DEBUG] [Thread-123777] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:33:04.363 [DEBUG] [Thread-123777] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:33:04.363 [DEBUG] [Thread-123777] [transport.py] [_log()] Compression: none
2025-11-03T22:33:04.363 [DEBUG] [Thread-123777] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:33:04.375 [DEBUG] [Thread-123777] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:33:04.376 [DEBUG] [Thread-123777] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:33:04.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:33:04.377 [DEBUG] [Thread-123777] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:33:04.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:33:04.379 [DEBUG] [Thread-123777] [transport.py] [_log()] userauth is OK
2025-11-03T22:33:04.379 [DEBUG] [Thread-123777] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:33:04.379 [DEBUG] [Thread-123777] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:33:04.379 [DEBUG] [Thread-123777] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:33:04.379 [DEBUG] [Thread-123777] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:33:04.399 [INFO] [Thread-123777] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:33:04.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:33:04.978 [DEBUG] [Thread-123777] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:33:04.978 [DEBUG] [Thread-123777] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:33:04.979 [DEBUG] [Thread-123777] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:33:05.019 [DEBUG] [Thread-123777] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:33:05.019 [DEBUG] [Thread-123777] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:33:05.022 [DEBUG] [Thread-123777] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:33:05.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:33:05.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:33:05.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:33:05.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:33:05.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:33:05.046 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:33:05.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:33:05.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:33:05.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:33:05.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.856003 -999.00  +19.40  14.05     16   -6.40 1 1 1 1 1     0    0 26.65 29.17 ZNESW 15.6 14.1 306.6 23.6 19.5 -25.9 19.4 -25.0 19.2 -24.9 19.4 -25.7
2025-11-03T22:33:05.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:33:05.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:33:05.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.856003
2025-11-03T22:33:05.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:33:05.053 [DEBUG] [Thread-123777] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:33:05.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:33:05.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:33:05.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:33:05.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:33:05.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:32:36', tmtdew=30.91, humidity=11.27, cloud=0.0, wind=15.54, temperature=19.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:32:37', seeing=1.17, atlas_timestamp='2025-11-03T20:32:38.659', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019750000000001933, 0.05925000000000047, -0.031749999999998835, -0.0235000000000003, -0.059499999999999886, -0.02424999999999855, -0.1725000000000012, -0.1297499999999996, -0.04150000000000098, -0.009000000000000341, 0.09024999999999928, 0.08999999999999986, 0.08549999999999969, -0.038750000000000284, -0.37150000000000105, -0.40549999999999997, -0.03175000000000061, 0.08450000000000024, 0.1349999999999998, 0.08174999999999955, 0.1039999999999992, 0.09374999999999822, -0.16974999999999874, -0.2632500000000011, 0.0129999999999999, 0.12400000000000055, 0.17875000000000085, 0.16000000000000014, 0.21950000000000003, 0.10200000000000031, 0.030000000000001137, -0.11400000000000077, 0.07424999999999926], zp_timestamp='2025-11-03T20:31:00')
2025-11-03T22:33:05.142 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:33:05.156 [DEBUG] [Thread-123780] [transport.py] [_log()] starting thread (client mode): 0x117ea0b0
2025-11-03T22:33:05.157 [DEBUG] [Thread-123780] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:33:05.175 [DEBUG] [Thread-123780] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:33:05.175 [INFO] [Thread-123780] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:33:05.185 [DEBUG] [Thread-123780] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:33:05.185 [DEBUG] [Thread-123780] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:33:05.186 [DEBUG] [Thread-123780] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:33:05.186 [DEBUG] [Thread-123780] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:33:05.186 [DEBUG] [Thread-123780] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:33:05.186 [DEBUG] [Thread-123780] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:33:05.186 [DEBUG] [Thread-123780] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:33:05.186 [DEBUG] [Thread-123780] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:33:05.186 [DEBUG] [Thread-123780] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:33:05.186 [DEBUG] [Thread-123780] [transport.py] [_log()] client lang: <none>
2025-11-03T22:33:05.187 [DEBUG] [Thread-123780] [transport.py] [_log()] server lang: <none>
2025-11-03T22:33:05.187 [DEBUG] [Thread-123780] [transport.py] [_log()] kex follows: False
2025-11-03T22:33:05.187 [DEBUG] [Thread-123780] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:33:05.187 [DEBUG] [Thread-123780] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:33:05.187 [DEBUG] [Thread-123780] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:33:05.187 [DEBUG] [Thread-123780] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:33:05.187 [DEBUG] [Thread-123780] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:33:05.187 [DEBUG] [Thread-123780] [transport.py] [_log()] Compression: none
2025-11-03T22:33:05.188 [DEBUG] [Thread-123780] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:33:05.251 [DEBUG] [Thread-123780] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:33:05.251 [DEBUG] [Thread-123780] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:33:05.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:33:05.252 [DEBUG] [Thread-123780] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:33:05.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:33:05.317 [DEBUG] [Thread-123780] [transport.py] [_log()] userauth is OK
2025-11-03T22:33:05.317 [DEBUG] [Thread-123780] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:33:05.317 [DEBUG] [Thread-123780] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:33:05.317 [DEBUG] [Thread-123780] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:33:05.317 [DEBUG] [Thread-123780] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:33:05.339 [INFO] [Thread-123780] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:33:05.340 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:33:05.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:33:06.170 [DEBUG] [Thread-123780] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:33:06.170 [DEBUG] [Thread-123780] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:33:06.219 [DEBUG] [Thread-123780] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:33:06.219 [DEBUG] [Thread-123780] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:33:06.230 [DEBUG] [Thread-123780] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:33:06.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:33:06.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:33:06.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:33:06.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:33:06.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:33:06.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:33:06.275 [DEBUG] [Thread-123780] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:33:06.698 [DEBUG] [Thread-123782 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:33:21.748 [DEBUG] [Thread-123783 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:33:36.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:33:36.296 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:33:36.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:33:36.787 [DEBUG] [Thread-123784 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:33:37.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 33, 9), 30.91, 11.27, 0.0, 15.53, 19.36, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:33:37.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:33:09
2025-11-03T22:33:37.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:33:37.444 [DEBUG] [Thread-123785] [transport.py] [_log()] starting thread (client mode): 0x1179a2f0
2025-11-03T22:33:37.444 [DEBUG] [Thread-123785] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:33:37.462 [DEBUG] [Thread-123785] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:33:37.463 [INFO] [Thread-123785] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:33:37.466 [DEBUG] [Thread-123785] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:33:37.466 [DEBUG] [Thread-123785] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:33:37.466 [DEBUG] [Thread-123785] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:33:37.466 [DEBUG] [Thread-123785] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:33:37.466 [DEBUG] [Thread-123785] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:33:37.466 [DEBUG] [Thread-123785] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:33:37.466 [DEBUG] [Thread-123785] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:33:37.466 [DEBUG] [Thread-123785] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:33:37.466 [DEBUG] [Thread-123785] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:33:37.467 [DEBUG] [Thread-123785] [transport.py] [_log()] client lang: <none>
2025-11-03T22:33:37.467 [DEBUG] [Thread-123785] [transport.py] [_log()] server lang: <none>
2025-11-03T22:33:37.467 [DEBUG] [Thread-123785] [transport.py] [_log()] kex follows: False
2025-11-03T22:33:37.467 [DEBUG] [Thread-123785] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:33:37.467 [DEBUG] [Thread-123785] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:33:37.467 [DEBUG] [Thread-123785] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:33:37.467 [DEBUG] [Thread-123785] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:33:37.467 [DEBUG] [Thread-123785] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:33:37.467 [DEBUG] [Thread-123785] [transport.py] [_log()] Compression: none
2025-11-03T22:33:37.467 [DEBUG] [Thread-123785] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:33:37.474 [DEBUG] [Thread-123785] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:33:37.475 [DEBUG] [Thread-123785] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:33:37.475 [DEBUG] [Thread-123785] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:33:37.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:33:37.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:33:37.476 [DEBUG] [Thread-123785] [transport.py] [_log()] userauth is OK
2025-11-03T22:33:37.476 [DEBUG] [Thread-123785] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:33:37.476 [DEBUG] [Thread-123785] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:33:37.476 [DEBUG] [Thread-123785] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:33:37.476 [DEBUG] [Thread-123785] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:33:37.492 [INFO] [Thread-123785] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:33:37.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:33:38.106 [DEBUG] [Thread-123785] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:33:38.106 [DEBUG] [Thread-123785] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:33:38.106 [DEBUG] [Thread-123785] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:33:38.148 [DEBUG] [Thread-123785] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:33:38.148 [DEBUG] [Thread-123785] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:33:38.150 [DEBUG] [Thread-123785] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:33:38.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:33:38.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:33:38.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:33:38.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:33:38.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:33:38.168 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:33:38.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:33:38.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:33:38.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:33:38.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.856350 -999.00  +19.30  11.71     16   -6.60 1 1 1 1 1     0    0 26.87 28.50 ZNESW 18.6 11.7 312.4 16.5 19.4 -26.0 19.4 -25.0 19.1 -24.4 19.4 -25.6
2025-11-03T22:33:38.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:33:38.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:33:38.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.856350
2025-11-03T22:33:38.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:33:38.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:33:38.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:33:38.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:33:38.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:33:38.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:33:09', tmtdew=30.91, humidity=11.27, cloud=0.0, wind=15.53, temperature=19.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:33:09', seeing=1.27, atlas_timestamp='2025-11-03T20:33:08.640', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019750000000001933, 0.05925000000000047, -0.031749999999998835, -0.0235000000000003, -0.059499999999999886, -0.02424999999999855, -0.1725000000000012, -0.1297499999999996, -0.04150000000000098, -0.009000000000000341, 0.09024999999999928, 0.08999999999999986, 0.08549999999999969, -0.038750000000000284, -0.37150000000000105, -0.40549999999999997, -0.03175000000000061, 0.08450000000000024, 0.1349999999999998, 0.08174999999999955, 0.1039999999999992, 0.09374999999999822, -0.16974999999999874, -0.2632500000000011, 0.0129999999999999, 0.12400000000000055, 0.17875000000000085, 0.16000000000000014, 0.21950000000000003, 0.10200000000000031, 0.030000000000001137, -0.11400000000000077, 0.07424999999999926], zp_timestamp='2025-11-03T20:31:00')
2025-11-03T22:33:38.170 [DEBUG] [Thread-123785] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:33:38.245 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:33:38.259 [DEBUG] [Thread-123788] [transport.py] [_log()] starting thread (client mode): 0xedb1ff0
2025-11-03T22:33:38.259 [DEBUG] [Thread-123788] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:33:38.273 [DEBUG] [Thread-123788] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:33:38.273 [INFO] [Thread-123788] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:33:38.280 [DEBUG] [Thread-123788] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:33:38.280 [DEBUG] [Thread-123788] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:33:38.280 [DEBUG] [Thread-123788] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:33:38.280 [DEBUG] [Thread-123788] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:33:38.280 [DEBUG] [Thread-123788] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:33:38.280 [DEBUG] [Thread-123788] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:33:38.280 [DEBUG] [Thread-123788] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:33:38.280 [DEBUG] [Thread-123788] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:33:38.280 [DEBUG] [Thread-123788] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:33:38.280 [DEBUG] [Thread-123788] [transport.py] [_log()] client lang: <none>
2025-11-03T22:33:38.281 [DEBUG] [Thread-123788] [transport.py] [_log()] server lang: <none>
2025-11-03T22:33:38.281 [DEBUG] [Thread-123788] [transport.py] [_log()] kex follows: False
2025-11-03T22:33:38.281 [DEBUG] [Thread-123788] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:33:38.281 [DEBUG] [Thread-123788] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:33:38.281 [DEBUG] [Thread-123788] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:33:38.281 [DEBUG] [Thread-123788] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:33:38.281 [DEBUG] [Thread-123788] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:33:38.281 [DEBUG] [Thread-123788] [transport.py] [_log()] Compression: none
2025-11-03T22:33:38.281 [DEBUG] [Thread-123788] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:33:38.339 [DEBUG] [Thread-123788] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:33:38.339 [DEBUG] [Thread-123788] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:33:38.340 [DEBUG] [Thread-123788] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:33:38.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:33:38.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:33:38.396 [DEBUG] [Thread-123788] [transport.py] [_log()] userauth is OK
2025-11-03T22:33:38.396 [DEBUG] [Thread-123788] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:33:38.396 [DEBUG] [Thread-123788] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:33:38.396 [DEBUG] [Thread-123788] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:33:38.396 [DEBUG] [Thread-123788] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:33:38.413 [INFO] [Thread-123788] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:33:38.413 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:33:38.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:33:39.316 [DEBUG] [Thread-123788] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:33:39.316 [DEBUG] [Thread-123788] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:33:39.363 [DEBUG] [Thread-123788] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:33:39.363 [DEBUG] [Thread-123788] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:33:39.373 [DEBUG] [Thread-123788] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:33:39.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:33:39.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:33:39.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:33:39.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:33:39.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:33:39.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:33:39.410 [DEBUG] [Thread-123788] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:33:44.080 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:33:47.239 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:33:51.816 [DEBUG] [Thread-123790 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:33:52.319 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:33:55.138 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:33:55.139 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:33:57.487 [DEBUG] [Thread-123791 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:33:58.676 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:34:06.870 [DEBUG] [Thread-123792 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:34:09.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:34:09.431 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:34:09.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:34:10.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 33, 41), 30.9, 11.28, 0.0, 18.95, 19.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:34:10.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:33:41
2025-11-03T22:34:10.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:34:10.575 [DEBUG] [Thread-123793] [transport.py] [_log()] starting thread (client mode): 0xed40dc0
2025-11-03T22:34:10.575 [DEBUG] [Thread-123793] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:34:10.595 [DEBUG] [Thread-123793] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:34:10.595 [INFO] [Thread-123793] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:34:10.598 [DEBUG] [Thread-123793] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:34:10.599 [DEBUG] [Thread-123793] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:34:10.599 [DEBUG] [Thread-123793] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:34:10.599 [DEBUG] [Thread-123793] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:34:10.599 [DEBUG] [Thread-123793] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:34:10.599 [DEBUG] [Thread-123793] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:34:10.599 [DEBUG] [Thread-123793] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:34:10.599 [DEBUG] [Thread-123793] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:34:10.599 [DEBUG] [Thread-123793] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:34:10.599 [DEBUG] [Thread-123793] [transport.py] [_log()] client lang: <none>
2025-11-03T22:34:10.599 [DEBUG] [Thread-123793] [transport.py] [_log()] server lang: <none>
2025-11-03T22:34:10.599 [DEBUG] [Thread-123793] [transport.py] [_log()] kex follows: False
2025-11-03T22:34:10.599 [DEBUG] [Thread-123793] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:34:10.600 [DEBUG] [Thread-123793] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:34:10.600 [DEBUG] [Thread-123793] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:34:10.600 [DEBUG] [Thread-123793] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:34:10.600 [DEBUG] [Thread-123793] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:34:10.600 [DEBUG] [Thread-123793] [transport.py] [_log()] Compression: none
2025-11-03T22:34:10.600 [DEBUG] [Thread-123793] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:34:10.619 [DEBUG] [Thread-123793] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:34:10.620 [DEBUG] [Thread-123793] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:34:10.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:34:10.621 [DEBUG] [Thread-123793] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:34:10.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:34:10.623 [DEBUG] [Thread-123793] [transport.py] [_log()] userauth is OK
2025-11-03T22:34:10.623 [DEBUG] [Thread-123793] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:34:10.624 [DEBUG] [Thread-123793] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:34:10.624 [DEBUG] [Thread-123793] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:34:10.624 [DEBUG] [Thread-123793] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:34:10.647 [INFO] [Thread-123793] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:34:10.648 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:34:11.462 [DEBUG] [Thread-123793] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:34:11.463 [DEBUG] [Thread-123793] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:34:11.463 [DEBUG] [Thread-123793] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:34:11.504 [DEBUG] [Thread-123793] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:34:11.504 [DEBUG] [Thread-123793] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:34:11.508 [DEBUG] [Thread-123793] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:34:11.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:34:11.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:34:11.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:34:11.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:34:11.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:34:11.530 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:34:11.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:34:11.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:34:11.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:34:11.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.856350 -999.00  +19.30  11.71     16   -6.60 1 1 1 1 1     0    0 26.87 28.50 ZNESW 18.6 11.7 312.4 16.5 19.4 -26.0 19.4 -25.0 19.1 -24.4 19.4 -25.6
2025-11-03T22:34:11.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:34:11.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:34:11.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.856350
2025-11-03T22:34:11.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:34:11.539 [DEBUG] [Thread-123793] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:34:11.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:34:11.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:34:11.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:34:11.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:34:11.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:33:41', tmtdew=30.9, humidity=11.28, cloud=0.0, wind=18.95, temperature=19.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:33:42', seeing=1.27, atlas_timestamp='2025-11-03T20:33:08.640', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019750000000001933, 0.05925000000000047, -0.031749999999998835, -0.0235000000000003, -0.059499999999999886, -0.02424999999999855, -0.1725000000000012, -0.1297499999999996, -0.04150000000000098, -0.009000000000000341, 0.09024999999999928, 0.08999999999999986, 0.08549999999999969, -0.038750000000000284, -0.37150000000000105, -0.40549999999999997, -0.03175000000000061, 0.08450000000000024, 0.1349999999999998, 0.08174999999999955, 0.1039999999999992, 0.09374999999999822, -0.16974999999999874, -0.2632500000000011, 0.0129999999999999, 0.12400000000000055, 0.17875000000000085, 0.16000000000000014, 0.21950000000000003, 0.10200000000000031, 0.030000000000001137, -0.11400000000000077, 0.07424999999999926], zp_timestamp='2025-11-03T20:31:00')
2025-11-03T22:34:11.625 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:34:11.639 [DEBUG] [Thread-123796] [transport.py] [_log()] starting thread (client mode): 0xed40be0
2025-11-03T22:34:11.639 [DEBUG] [Thread-123796] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:34:11.656 [DEBUG] [Thread-123796] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:34:11.656 [INFO] [Thread-123796] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:34:11.668 [DEBUG] [Thread-123796] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:34:11.668 [DEBUG] [Thread-123796] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:34:11.668 [DEBUG] [Thread-123796] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:34:11.668 [DEBUG] [Thread-123796] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:34:11.669 [DEBUG] [Thread-123796] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:34:11.669 [DEBUG] [Thread-123796] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:34:11.669 [DEBUG] [Thread-123796] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:34:11.669 [DEBUG] [Thread-123796] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:34:11.669 [DEBUG] [Thread-123796] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:34:11.669 [DEBUG] [Thread-123796] [transport.py] [_log()] client lang: <none>
2025-11-03T22:34:11.669 [DEBUG] [Thread-123796] [transport.py] [_log()] server lang: <none>
2025-11-03T22:34:11.669 [DEBUG] [Thread-123796] [transport.py] [_log()] kex follows: False
2025-11-03T22:34:11.670 [DEBUG] [Thread-123796] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:34:11.670 [DEBUG] [Thread-123796] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:34:11.679 [DEBUG] [Thread-123796] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:34:11.680 [DEBUG] [Thread-123796] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:34:11.680 [DEBUG] [Thread-123796] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:34:11.680 [DEBUG] [Thread-123796] [transport.py] [_log()] Compression: none
2025-11-03T22:34:11.680 [DEBUG] [Thread-123796] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:34:11.731 [DEBUG] [Thread-123796] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:34:11.731 [DEBUG] [Thread-123796] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:34:11.731 [DEBUG] [Thread-123796] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:34:11.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:34:11.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:34:11.795 [DEBUG] [Thread-123796] [transport.py] [_log()] userauth is OK
2025-11-03T22:34:11.795 [DEBUG] [Thread-123796] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:34:11.795 [DEBUG] [Thread-123796] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:34:11.795 [DEBUG] [Thread-123796] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:34:11.795 [DEBUG] [Thread-123796] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:34:11.811 [INFO] [Thread-123796] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:34:11.811 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:34:11.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:34:12.626 [DEBUG] [Thread-123796] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:34:12.626 [DEBUG] [Thread-123796] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:34:12.676 [DEBUG] [Thread-123796] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:34:12.676 [DEBUG] [Thread-123796] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:34:12.685 [DEBUG] [Thread-123796] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:34:12.697 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:34:12.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:34:12.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:34:12.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:34:12.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:34:12.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:34:12.738 [DEBUG] [Thread-123796] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:34:17.053 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:34:21.425 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:34:21.899 [DEBUG] [Thread-123798 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:34:36.944 [DEBUG] [Thread-123799 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:34:40.826 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:34:42.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:34:42.757 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:34:42.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:34:45.186 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:34:47.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 34, 13), 30.92, 11.27, 0.0, 18.49, 19.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:34:47.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:34:13
2025-11-03T22:34:47.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:34:47.411 [DEBUG] [Thread-123800] [transport.py] [_log()] starting thread (client mode): 0x117eb7c0
2025-11-03T22:34:47.412 [DEBUG] [Thread-123800] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:34:47.422 [DEBUG] [Thread-123800] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:34:47.422 [INFO] [Thread-123800] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:34:47.425 [DEBUG] [Thread-123800] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:34:47.425 [DEBUG] [Thread-123800] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:34:47.425 [DEBUG] [Thread-123800] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:34:47.426 [DEBUG] [Thread-123800] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:34:47.426 [DEBUG] [Thread-123800] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:34:47.426 [DEBUG] [Thread-123800] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:34:47.426 [DEBUG] [Thread-123800] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:34:47.426 [DEBUG] [Thread-123800] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:34:47.426 [DEBUG] [Thread-123800] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:34:47.426 [DEBUG] [Thread-123800] [transport.py] [_log()] client lang: <none>
2025-11-03T22:34:47.426 [DEBUG] [Thread-123800] [transport.py] [_log()] server lang: <none>
2025-11-03T22:34:47.426 [DEBUG] [Thread-123800] [transport.py] [_log()] kex follows: False
2025-11-03T22:34:47.426 [DEBUG] [Thread-123800] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:34:47.426 [DEBUG] [Thread-123800] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:34:47.426 [DEBUG] [Thread-123800] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:34:47.426 [DEBUG] [Thread-123800] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:34:47.427 [DEBUG] [Thread-123800] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:34:47.427 [DEBUG] [Thread-123800] [transport.py] [_log()] Compression: none
2025-11-03T22:34:47.427 [DEBUG] [Thread-123800] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:34:47.447 [DEBUG] [Thread-123800] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:34:47.449 [DEBUG] [Thread-123800] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:34:47.450 [DEBUG] [Thread-123800] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:34:47.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:34:47.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:34:47.489 [DEBUG] [Thread-123800] [transport.py] [_log()] userauth is OK
2025-11-03T22:34:47.489 [DEBUG] [Thread-123800] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:34:47.489 [DEBUG] [Thread-123800] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:34:47.489 [DEBUG] [Thread-123800] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:34:47.489 [DEBUG] [Thread-123800] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:34:47.501 [INFO] [Thread-123800] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:34:47.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:34:48.079 [DEBUG] [Thread-123800] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:34:48.080 [DEBUG] [Thread-123800] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:34:48.080 [DEBUG] [Thread-123800] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:34:48.120 [DEBUG] [Thread-123800] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:34:48.121 [DEBUG] [Thread-123800] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:34:48.122 [DEBUG] [Thread-123800] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:34:48.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:34:48.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:34:48.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:34:48.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:34:48.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:34:48.138 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:34:48.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:34:48.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:34:48.139 [DEBUG] [Thread-123800] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:34:48.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:34:48.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.857391 -999.00  +19.50  18.21     16   -6.70 1 1 1 1 1     0    0 26.42 30.43 ZNESW 17.7 18.2 303.8 21.7 19.4 -25.9 19.4 -25.1 19.1 -24.6 19.5 -25.6
2025-11-03T22:34:48.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:34:48.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:34:48.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.857391
2025-11-03T22:34:48.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:34:48.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:34:48.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:34:48.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:34:48.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:34:48.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:34:13', tmtdew=30.92, humidity=11.27, cloud=0.0, wind=18.49, temperature=19.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:34:14', seeing=1.05, atlas_timestamp='2025-11-03T20:34:38.582', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019750000000001933, 0.05925000000000047, -0.031749999999998835, -0.0235000000000003, -0.059499999999999886, -0.02424999999999855, -0.1725000000000012, -0.1297499999999996, -0.04150000000000098, -0.009000000000000341, 0.09024999999999928, 0.08999999999999986, 0.08549999999999969, -0.038750000000000284, -0.37150000000000105, -0.40549999999999997, -0.03175000000000061, 0.08450000000000024, 0.1349999999999998, 0.08174999999999955, 0.1039999999999992, 0.09374999999999822, -0.16974999999999874, -0.2632500000000011, 0.0129999999999999, 0.12400000000000055, 0.17875000000000085, 0.16000000000000014, 0.21950000000000003, 0.10200000000000031, 0.030000000000001137, -0.11400000000000077, 0.07424999999999926], zp_timestamp='2025-11-03T20:31:00')
2025-11-03T22:34:48.233 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:34:48.246 [DEBUG] [Thread-123803] [transport.py] [_log()] starting thread (client mode): 0xedc4580
2025-11-03T22:34:48.246 [DEBUG] [Thread-123803] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:34:48.261 [DEBUG] [Thread-123803] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:34:48.261 [INFO] [Thread-123803] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:34:48.269 [DEBUG] [Thread-123803] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:34:48.269 [DEBUG] [Thread-123803] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:34:48.269 [DEBUG] [Thread-123803] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:34:48.269 [DEBUG] [Thread-123803] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:34:48.269 [DEBUG] [Thread-123803] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:34:48.269 [DEBUG] [Thread-123803] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:34:48.269 [DEBUG] [Thread-123803] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:34:48.269 [DEBUG] [Thread-123803] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:34:48.269 [DEBUG] [Thread-123803] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:34:48.269 [DEBUG] [Thread-123803] [transport.py] [_log()] client lang: <none>
2025-11-03T22:34:48.269 [DEBUG] [Thread-123803] [transport.py] [_log()] server lang: <none>
2025-11-03T22:34:48.269 [DEBUG] [Thread-123803] [transport.py] [_log()] kex follows: False
2025-11-03T22:34:48.269 [DEBUG] [Thread-123803] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:34:48.269 [DEBUG] [Thread-123803] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:34:48.269 [DEBUG] [Thread-123803] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:34:48.269 [DEBUG] [Thread-123803] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:34:48.269 [DEBUG] [Thread-123803] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:34:48.269 [DEBUG] [Thread-123803] [transport.py] [_log()] Compression: none
2025-11-03T22:34:48.269 [DEBUG] [Thread-123803] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:34:48.326 [DEBUG] [Thread-123803] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:34:48.327 [DEBUG] [Thread-123803] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:34:48.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:34:48.327 [DEBUG] [Thread-123803] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:34:48.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:34:48.385 [DEBUG] [Thread-123803] [transport.py] [_log()] userauth is OK
2025-11-03T22:34:48.385 [DEBUG] [Thread-123803] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:34:48.385 [DEBUG] [Thread-123803] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:34:48.385 [DEBUG] [Thread-123803] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:34:48.385 [DEBUG] [Thread-123803] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:34:48.400 [INFO] [Thread-123803] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:34:48.400 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:34:48.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:34:49.265 [DEBUG] [Thread-123803] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:34:49.265 [DEBUG] [Thread-123803] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:34:49.312 [DEBUG] [Thread-123803] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:34:49.312 [DEBUG] [Thread-123803] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:34:49.320 [DEBUG] [Thread-123803] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:34:49.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:34:49.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:34:49.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:34:49.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:34:49.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:34:49.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:34:49.353 [DEBUG] [Thread-123803] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:34:51.340 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:34:51.976 [DEBUG] [Thread-123805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:34:55.349 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:34:55.351 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:34:55.725 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:34:59.153 [DEBUG] [Thread-123806 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:35:07.056 [DEBUG] [Thread-123807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:35:19.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:35:19.365 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:35:19.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:35:20.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 34, 46), 31.02, 11.22, 0.0, 18.79, 19.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:35:20.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:34:46
2025-11-03T22:35:20.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:35:20.407 [DEBUG] [Thread-123808] [transport.py] [_log()] starting thread (client mode): 0xed40e20
2025-11-03T22:35:20.407 [DEBUG] [Thread-123808] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:35:20.428 [DEBUG] [Thread-123808] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:35:20.428 [INFO] [Thread-123808] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:35:20.431 [DEBUG] [Thread-123808] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:35:20.431 [DEBUG] [Thread-123808] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:35:20.431 [DEBUG] [Thread-123808] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:35:20.431 [DEBUG] [Thread-123808] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:35:20.431 [DEBUG] [Thread-123808] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:35:20.431 [DEBUG] [Thread-123808] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:35:20.431 [DEBUG] [Thread-123808] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:35:20.431 [DEBUG] [Thread-123808] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:35:20.431 [DEBUG] [Thread-123808] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:35:20.431 [DEBUG] [Thread-123808] [transport.py] [_log()] client lang: <none>
2025-11-03T22:35:20.431 [DEBUG] [Thread-123808] [transport.py] [_log()] server lang: <none>
2025-11-03T22:35:20.431 [DEBUG] [Thread-123808] [transport.py] [_log()] kex follows: False
2025-11-03T22:35:20.431 [DEBUG] [Thread-123808] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:35:20.431 [DEBUG] [Thread-123808] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:35:20.431 [DEBUG] [Thread-123808] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:35:20.431 [DEBUG] [Thread-123808] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:35:20.431 [DEBUG] [Thread-123808] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:35:20.431 [DEBUG] [Thread-123808] [transport.py] [_log()] Compression: none
2025-11-03T22:35:20.431 [DEBUG] [Thread-123808] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:35:20.447 [DEBUG] [Thread-123808] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:35:20.447 [DEBUG] [Thread-123808] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:35:20.447 [DEBUG] [Thread-123808] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:35:20.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:35:20.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:35:20.448 [DEBUG] [Thread-123808] [transport.py] [_log()] userauth is OK
2025-11-03T22:35:20.448 [DEBUG] [Thread-123808] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:35:20.448 [DEBUG] [Thread-123808] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:35:20.448 [DEBUG] [Thread-123808] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:35:20.448 [DEBUG] [Thread-123808] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:35:20.468 [INFO] [Thread-123808] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:35:20.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:35:21.248 [DEBUG] [Thread-123808] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:35:21.248 [DEBUG] [Thread-123808] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:35:21.248 [DEBUG] [Thread-123808] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:35:21.288 [DEBUG] [Thread-123808] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:35:21.288 [DEBUG] [Thread-123808] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:35:21.291 [DEBUG] [Thread-123808] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:35:21.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:35:21.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:35:21.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:35:21.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:35:21.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:35:21.306 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:35:21.306 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:35:21.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:35:21.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:35:21.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.857391 -999.00  +19.50  18.21     16   -6.70 1 1 1 1 1     0    0 26.42 30.43 ZNESW 17.7 18.2 303.8 21.7 19.4 -25.9 19.4 -25.1 19.1 -24.6 19.5 -25.6
2025-11-03T22:35:21.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:35:21.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:35:21.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.857391
2025-11-03T22:35:21.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:35:21.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:35:21.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:35:21.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:35:21.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:35:21.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:34:46', tmtdew=31.02, humidity=11.22, cloud=0.0, wind=18.79, temperature=19.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:34:47', seeing=1.09, atlas_timestamp='2025-11-03T20:34:38.582', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019750000000001933, 0.05925000000000047, -0.031749999999998835, -0.0235000000000003, -0.059499999999999886, -0.02424999999999855, -0.1725000000000012, -0.1297499999999996, -0.04150000000000098, -0.009000000000000341, 0.09024999999999928, 0.08999999999999986, 0.08549999999999969, -0.038750000000000284, -0.37150000000000105, -0.40549999999999997, -0.03175000000000061, 0.08450000000000024, 0.1349999999999998, 0.08174999999999955, 0.1039999999999992, 0.09374999999999822, -0.16974999999999874, -0.2632500000000011, 0.0129999999999999, 0.12400000000000055, 0.17875000000000085, 0.16000000000000014, 0.21950000000000003, 0.10200000000000031, 0.030000000000001137, -0.11400000000000077, 0.07424999999999926], zp_timestamp='2025-11-03T20:31:00')
2025-11-03T22:35:21.308 [DEBUG] [Thread-123808] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:35:21.381 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:35:21.393 [DEBUG] [Thread-123811] [transport.py] [_log()] starting thread (client mode): 0x117ea110
2025-11-03T22:35:21.393 [DEBUG] [Thread-123811] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:35:21.408 [DEBUG] [Thread-123811] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:35:21.408 [INFO] [Thread-123811] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:35:21.415 [DEBUG] [Thread-123811] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:35:21.415 [DEBUG] [Thread-123811] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:35:21.415 [DEBUG] [Thread-123811] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:35:21.415 [DEBUG] [Thread-123811] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:35:21.416 [DEBUG] [Thread-123811] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:35:21.416 [DEBUG] [Thread-123811] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:35:21.416 [DEBUG] [Thread-123811] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:35:21.416 [DEBUG] [Thread-123811] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:35:21.416 [DEBUG] [Thread-123811] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:35:21.416 [DEBUG] [Thread-123811] [transport.py] [_log()] client lang: <none>
2025-11-03T22:35:21.416 [DEBUG] [Thread-123811] [transport.py] [_log()] server lang: <none>
2025-11-03T22:35:21.416 [DEBUG] [Thread-123811] [transport.py] [_log()] kex follows: False
2025-11-03T22:35:21.416 [DEBUG] [Thread-123811] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:35:21.416 [DEBUG] [Thread-123811] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:35:21.416 [DEBUG] [Thread-123811] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:35:21.416 [DEBUG] [Thread-123811] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:35:21.416 [DEBUG] [Thread-123811] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:35:21.416 [DEBUG] [Thread-123811] [transport.py] [_log()] Compression: none
2025-11-03T22:35:21.416 [DEBUG] [Thread-123811] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:35:21.471 [DEBUG] [Thread-123811] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:35:21.471 [DEBUG] [Thread-123811] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:35:21.471 [DEBUG] [Thread-123811] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:35:21.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:35:21.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:35:21.532 [DEBUG] [Thread-123811] [transport.py] [_log()] userauth is OK
2025-11-03T22:35:21.533 [DEBUG] [Thread-123811] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:35:21.533 [DEBUG] [Thread-123811] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:35:21.533 [DEBUG] [Thread-123811] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:35:21.533 [DEBUG] [Thread-123811] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:35:21.546 [INFO] [Thread-123811] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:35:21.546 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:35:21.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:35:22.084 [DEBUG] [Thread-123813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:35:22.374 [DEBUG] [Thread-123811] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:35:22.374 [DEBUG] [Thread-123811] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:35:22.422 [DEBUG] [Thread-123811] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:35:22.423 [DEBUG] [Thread-123811] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:35:22.432 [DEBUG] [Thread-123811] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:35:22.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:35:22.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:35:22.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:35:22.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:35:22.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:35:22.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:35:22.473 [DEBUG] [Thread-123811] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:35:37.127 [DEBUG] [Thread-123814 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:35:52.157 [DEBUG] [Thread-123815 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:35:52.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:35:52.495 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:35:52.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:35:53.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 35, 19), 31.08, 11.17, 0.0, 19.06, 19.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:35:53.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:35:19
2025-11-03T22:35:53.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:35:53.570 [DEBUG] [Thread-123816] [transport.py] [_log()] starting thread (client mode): 0xedc62c0
2025-11-03T22:35:53.571 [DEBUG] [Thread-123816] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:35:53.590 [DEBUG] [Thread-123816] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:35:53.590 [INFO] [Thread-123816] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:35:53.593 [DEBUG] [Thread-123816] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:35:53.593 [DEBUG] [Thread-123816] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:35:53.593 [DEBUG] [Thread-123816] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:35:53.593 [DEBUG] [Thread-123816] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:35:53.593 [DEBUG] [Thread-123816] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:35:53.593 [DEBUG] [Thread-123816] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:35:53.593 [DEBUG] [Thread-123816] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:35:53.593 [DEBUG] [Thread-123816] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:35:53.593 [DEBUG] [Thread-123816] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:35:53.593 [DEBUG] [Thread-123816] [transport.py] [_log()] client lang: <none>
2025-11-03T22:35:53.593 [DEBUG] [Thread-123816] [transport.py] [_log()] server lang: <none>
2025-11-03T22:35:53.593 [DEBUG] [Thread-123816] [transport.py] [_log()] kex follows: False
2025-11-03T22:35:53.593 [DEBUG] [Thread-123816] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:35:53.593 [DEBUG] [Thread-123816] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:35:53.593 [DEBUG] [Thread-123816] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:35:53.593 [DEBUG] [Thread-123816] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:35:53.593 [DEBUG] [Thread-123816] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:35:53.593 [DEBUG] [Thread-123816] [transport.py] [_log()] Compression: none
2025-11-03T22:35:53.593 [DEBUG] [Thread-123816] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:35:53.609 [DEBUG] [Thread-123816] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:35:53.609 [DEBUG] [Thread-123816] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:35:53.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:35:53.609 [DEBUG] [Thread-123816] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:35:53.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:35:53.610 [DEBUG] [Thread-123816] [transport.py] [_log()] userauth is OK
2025-11-03T22:35:53.610 [DEBUG] [Thread-123816] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:35:53.610 [DEBUG] [Thread-123816] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:35:53.610 [DEBUG] [Thread-123816] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:35:53.610 [DEBUG] [Thread-123816] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:35:53.626 [INFO] [Thread-123816] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:35:53.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:35:54.395 [DEBUG] [Thread-123816] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:35:54.395 [DEBUG] [Thread-123816] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:35:54.395 [DEBUG] [Thread-123816] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:35:54.435 [DEBUG] [Thread-123816] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:35:54.435 [DEBUG] [Thread-123816] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:35:54.437 [DEBUG] [Thread-123816] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:35:54.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:35:54.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:35:54.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:35:54.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:35:54.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:35:54.445 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:35:54.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:35:54.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:35:54.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:35:54.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.857738 -999.00  +19.50  16.57     16   -6.70 1 1 1 1 1     0    0 26.99 32.89 ZNESW 20.3 16.6 306.8 20.9 19.4 -25.9 19.4 -24.8 19.2 -24.5 19.4 -25.6
2025-11-03T22:35:54.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:35:54.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:35:54.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.857738
2025-11-03T22:35:54.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:35:54.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:35:54.446 [DEBUG] [Thread-123816] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:35:54.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:35:54.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:35:54.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:35:54.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:35:19', tmtdew=31.08, humidity=11.17, cloud=0.0, wind=19.06, temperature=19.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:35:20', seeing=1.09, atlas_timestamp='2025-11-03T20:35:08.563', atlas_cloud=1, atlas_rain=1, zp_data=[0.01574999999999882, 0.04225000000000101, 0.14074999999999882, 0.04849999999999888, 0.0884999999999998, 0.1042500000000004, -0.1330000000000009, -0.07174999999999976, 0.01649999999999885, 0.07250000000000156, 0.11224999999999952, 0.09249999999999936, 0.07399999999999984, -0.04875000000000007, -0.1960000000000015, -0.21199999999999974, 0.08674999999999855, 0.1274999999999995, 0.17049999999999876, 0.12725000000000009, 0.1869999999999976, 0.09424999999999883, -0.01774999999999949, -0.22724999999999973, 0.1225000000000005, 0.13250000000000028, 0.19175000000000075, 0.25650000000000084, 0.17600000000000016, 0.09200000000000053, -0.015499999999999403, 0.07400000000000162, 0.06824999999999903], zp_timestamp='2025-11-03T20:34:00')
2025-11-03T22:35:54.521 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:35:54.534 [DEBUG] [Thread-123819] [transport.py] [_log()] starting thread (client mode): 0x1174fbe0
2025-11-03T22:35:54.534 [DEBUG] [Thread-123819] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:35:54.548 [DEBUG] [Thread-123819] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:35:54.548 [INFO] [Thread-123819] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:35:54.557 [DEBUG] [Thread-123819] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:35:54.557 [DEBUG] [Thread-123819] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:35:54.557 [DEBUG] [Thread-123819] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:35:54.557 [DEBUG] [Thread-123819] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:35:54.557 [DEBUG] [Thread-123819] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:35:54.557 [DEBUG] [Thread-123819] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:35:54.557 [DEBUG] [Thread-123819] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:35:54.557 [DEBUG] [Thread-123819] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:35:54.557 [DEBUG] [Thread-123819] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:35:54.557 [DEBUG] [Thread-123819] [transport.py] [_log()] client lang: <none>
2025-11-03T22:35:54.557 [DEBUG] [Thread-123819] [transport.py] [_log()] server lang: <none>
2025-11-03T22:35:54.557 [DEBUG] [Thread-123819] [transport.py] [_log()] kex follows: False
2025-11-03T22:35:54.557 [DEBUG] [Thread-123819] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:35:54.557 [DEBUG] [Thread-123819] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:35:54.557 [DEBUG] [Thread-123819] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:35:54.557 [DEBUG] [Thread-123819] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:35:54.557 [DEBUG] [Thread-123819] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:35:54.557 [DEBUG] [Thread-123819] [transport.py] [_log()] Compression: none
2025-11-03T22:35:54.557 [DEBUG] [Thread-123819] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:35:54.612 [DEBUG] [Thread-123819] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:35:54.612 [DEBUG] [Thread-123819] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:35:54.612 [DEBUG] [Thread-123819] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:35:54.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:35:54.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:35:54.671 [DEBUG] [Thread-123819] [transport.py] [_log()] userauth is OK
2025-11-03T22:35:54.671 [DEBUG] [Thread-123819] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:35:54.672 [DEBUG] [Thread-123819] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:35:54.672 [DEBUG] [Thread-123819] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:35:54.672 [DEBUG] [Thread-123819] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:35:54.692 [INFO] [Thread-123819] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:35:54.692 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:35:54.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:35:55.556 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:35:55.559 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:35:55.560 [DEBUG] [Thread-123819] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:35:55.560 [DEBUG] [Thread-123819] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:35:55.613 [DEBUG] [Thread-123819] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:35:55.613 [DEBUG] [Thread-123819] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:35:55.626 [DEBUG] [Thread-123819] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:35:55.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:35:55.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:35:55.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:35:55.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:35:55.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:35:55.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:35:55.674 [DEBUG] [Thread-123819] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:36:00.699 [DEBUG] [Thread-123821 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:36:03.404 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:36:07.199 [DEBUG] [Thread-123822 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:36:07.495 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:36:22.250 [DEBUG] [Thread-123823 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:36:25.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:36:25.692 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:36:25.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:36:26.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 35, 51), 31.15, 11.1, 0.0, 18.67, 19.33, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:36:26.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:35:51
2025-11-03T22:36:26.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:36:26.829 [DEBUG] [Thread-123824] [transport.py] [_log()] starting thread (client mode): 0xedb0e80
2025-11-03T22:36:26.829 [DEBUG] [Thread-123824] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:36:26.849 [DEBUG] [Thread-123824] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:36:26.849 [INFO] [Thread-123824] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:36:26.852 [DEBUG] [Thread-123824] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:36:26.852 [DEBUG] [Thread-123824] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:36:26.852 [DEBUG] [Thread-123824] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:36:26.852 [DEBUG] [Thread-123824] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:36:26.852 [DEBUG] [Thread-123824] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:36:26.852 [DEBUG] [Thread-123824] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:36:26.852 [DEBUG] [Thread-123824] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:36:26.852 [DEBUG] [Thread-123824] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:36:26.852 [DEBUG] [Thread-123824] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:36:26.852 [DEBUG] [Thread-123824] [transport.py] [_log()] client lang: <none>
2025-11-03T22:36:26.852 [DEBUG] [Thread-123824] [transport.py] [_log()] server lang: <none>
2025-11-03T22:36:26.852 [DEBUG] [Thread-123824] [transport.py] [_log()] kex follows: False
2025-11-03T22:36:26.852 [DEBUG] [Thread-123824] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:36:26.853 [DEBUG] [Thread-123824] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:36:26.853 [DEBUG] [Thread-123824] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:36:26.853 [DEBUG] [Thread-123824] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:36:26.853 [DEBUG] [Thread-123824] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:36:26.853 [DEBUG] [Thread-123824] [transport.py] [_log()] Compression: none
2025-11-03T22:36:26.853 [DEBUG] [Thread-123824] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:36:26.869 [DEBUG] [Thread-123824] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:36:26.869 [DEBUG] [Thread-123824] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:36:26.869 [DEBUG] [Thread-123824] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:36:26.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:36:26.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:36:26.870 [DEBUG] [Thread-123824] [transport.py] [_log()] userauth is OK
2025-11-03T22:36:26.870 [DEBUG] [Thread-123824] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:36:26.870 [DEBUG] [Thread-123824] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:36:26.870 [DEBUG] [Thread-123824] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:36:26.870 [DEBUG] [Thread-123824] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:36:26.881 [INFO] [Thread-123824] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:36:26.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:36:27.527 [DEBUG] [Thread-123824] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:36:27.527 [DEBUG] [Thread-123824] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:36:27.527 [DEBUG] [Thread-123824] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:36:27.568 [DEBUG] [Thread-123824] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:36:27.568 [DEBUG] [Thread-123824] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:36:27.570 [DEBUG] [Thread-123824] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:36:27.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:36:27.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:36:27.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:36:27.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:36:27.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:36:27.587 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:36:27.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:36:27.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:36:27.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:36:27.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.858086 -999.00  +19.50  16.79     16   -6.80 1 1 1 1 1     0    0 26.76 34.34 ZNESW 18.2 16.8 305.8 22.4 19.5 -25.9 19.4 -25.0 19.2 -24.6 19.4 -25.5
2025-11-03T22:36:27.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:36:27.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:36:27.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.858086
2025-11-03T22:36:27.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:36:27.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:36:27.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:36:27.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:36:27.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:36:27.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:35:51', tmtdew=31.15, humidity=11.1, cloud=0.0, wind=18.67, temperature=19.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:36:24', seeing=1.07, atlas_timestamp='2025-11-03T20:35:38.630', atlas_cloud=1, atlas_rain=1, zp_data=[0.01574999999999882, 0.04225000000000101, 0.14074999999999882, 0.04849999999999888, 0.0884999999999998, 0.1042500000000004, -0.1330000000000009, -0.07174999999999976, 0.01649999999999885, 0.07250000000000156, 0.11224999999999952, 0.09249999999999936, 0.07399999999999984, -0.04875000000000007, -0.1960000000000015, -0.21199999999999974, 0.08674999999999855, 0.1274999999999995, 0.17049999999999876, 0.12725000000000009, 0.1869999999999976, 0.09424999999999883, -0.01774999999999949, -0.22724999999999973, 0.1225000000000005, 0.13250000000000028, 0.19175000000000075, 0.25650000000000084, 0.17600000000000016, 0.09200000000000053, -0.015499999999999403, 0.07400000000000162, 0.06824999999999903], zp_timestamp='2025-11-03T20:34:00')
2025-11-03T22:36:27.588 [DEBUG] [Thread-123824] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:36:27.662 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:36:27.674 [DEBUG] [Thread-123827] [transport.py] [_log()] starting thread (client mode): 0xedb37c0
2025-11-03T22:36:27.675 [DEBUG] [Thread-123827] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:36:27.690 [DEBUG] [Thread-123827] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:36:27.690 [INFO] [Thread-123827] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:36:27.697 [DEBUG] [Thread-123827] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:36:27.698 [DEBUG] [Thread-123827] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:36:27.698 [DEBUG] [Thread-123827] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:36:27.698 [DEBUG] [Thread-123827] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:36:27.698 [DEBUG] [Thread-123827] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:36:27.698 [DEBUG] [Thread-123827] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:36:27.698 [DEBUG] [Thread-123827] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:36:27.698 [DEBUG] [Thread-123827] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:36:27.698 [DEBUG] [Thread-123827] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:36:27.698 [DEBUG] [Thread-123827] [transport.py] [_log()] client lang: <none>
2025-11-03T22:36:27.698 [DEBUG] [Thread-123827] [transport.py] [_log()] server lang: <none>
2025-11-03T22:36:27.698 [DEBUG] [Thread-123827] [transport.py] [_log()] kex follows: False
2025-11-03T22:36:27.698 [DEBUG] [Thread-123827] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:36:27.698 [DEBUG] [Thread-123827] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:36:27.698 [DEBUG] [Thread-123827] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:36:27.698 [DEBUG] [Thread-123827] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:36:27.698 [DEBUG] [Thread-123827] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:36:27.698 [DEBUG] [Thread-123827] [transport.py] [_log()] Compression: none
2025-11-03T22:36:27.698 [DEBUG] [Thread-123827] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:36:27.755 [DEBUG] [Thread-123827] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:36:27.755 [DEBUG] [Thread-123827] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:36:27.755 [DEBUG] [Thread-123827] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:36:27.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:36:27.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:36:27.812 [DEBUG] [Thread-123827] [transport.py] [_log()] userauth is OK
2025-11-03T22:36:27.812 [DEBUG] [Thread-123827] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:36:27.812 [DEBUG] [Thread-123827] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:36:27.812 [DEBUG] [Thread-123827] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:36:27.812 [DEBUG] [Thread-123827] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:36:27.827 [INFO] [Thread-123827] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:36:27.827 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:36:27.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:36:28.650 [DEBUG] [Thread-123827] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:36:28.650 [DEBUG] [Thread-123827] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:36:28.699 [DEBUG] [Thread-123827] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:36:28.699 [DEBUG] [Thread-123827] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:36:28.708 [DEBUG] [Thread-123827] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:36:28.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:36:28.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:36:28.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:36:28.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:36:28.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:36:28.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:36:28.744 [DEBUG] [Thread-123827] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:36:37.279 [DEBUG] [Thread-123829 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:36:52.344 [DEBUG] [Thread-123830 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:36:55.761 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:36:55.762 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:36:58.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:36:58.765 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:36:58.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:37:00.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 36, 24), 31.2, 11.05, 0.0, 18.35, 19.31, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:37:00.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:36:24
2025-11-03T22:37:00.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:37:01.119 [DEBUG] [Thread-123831] [transport.py] [_log()] starting thread (client mode): 0xed04880
2025-11-03T22:37:01.120 [DEBUG] [Thread-123831] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:37:01.138 [DEBUG] [Thread-123831] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:37:01.138 [INFO] [Thread-123831] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:37:01.140 [DEBUG] [Thread-123831] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:37:01.140 [DEBUG] [Thread-123831] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:37:01.140 [DEBUG] [Thread-123831] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:37:01.140 [DEBUG] [Thread-123831] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:37:01.141 [DEBUG] [Thread-123831] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:37:01.141 [DEBUG] [Thread-123831] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:37:01.141 [DEBUG] [Thread-123831] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:37:01.141 [DEBUG] [Thread-123831] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:37:01.141 [DEBUG] [Thread-123831] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:37:01.141 [DEBUG] [Thread-123831] [transport.py] [_log()] client lang: <none>
2025-11-03T22:37:01.141 [DEBUG] [Thread-123831] [transport.py] [_log()] server lang: <none>
2025-11-03T22:37:01.141 [DEBUG] [Thread-123831] [transport.py] [_log()] kex follows: False
2025-11-03T22:37:01.141 [DEBUG] [Thread-123831] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:37:01.141 [DEBUG] [Thread-123831] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:37:01.141 [DEBUG] [Thread-123831] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:37:01.141 [DEBUG] [Thread-123831] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:37:01.141 [DEBUG] [Thread-123831] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:37:01.141 [DEBUG] [Thread-123831] [transport.py] [_log()] Compression: none
2025-11-03T22:37:01.141 [DEBUG] [Thread-123831] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:37:01.154 [DEBUG] [Thread-123831] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:37:01.155 [DEBUG] [Thread-123831] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:37:01.155 [DEBUG] [Thread-123831] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:37:01.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:37:01.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:37:01.157 [DEBUG] [Thread-123831] [transport.py] [_log()] userauth is OK
2025-11-03T22:37:01.157 [DEBUG] [Thread-123831] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:37:01.157 [DEBUG] [Thread-123831] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:37:01.157 [DEBUG] [Thread-123831] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:37:01.157 [DEBUG] [Thread-123831] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:37:01.170 [INFO] [Thread-123831] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:37:01.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:37:01.817 [DEBUG] [Thread-123831] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:37:01.817 [DEBUG] [Thread-123831] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:37:01.817 [DEBUG] [Thread-123831] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:37:01.859 [DEBUG] [Thread-123831] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:37:01.859 [DEBUG] [Thread-123831] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:37:01.860 [DEBUG] [Thread-123831] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:37:01.867 [DEBUG] [Thread-123833 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:37:01.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:37:01.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:37:01.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:37:01.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:37:01.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:37:01.882 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:37:01.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:37:01.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:37:01.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:37:01.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.858433 -999.00  +19.40  16.80     16   -6.80 1 1 1 1 1     0    0 27.24 35.88 ZNESW 15.2 16.8 300.7 20.5 19.4 -26.0 19.4 -24.9 19.1 -24.2 19.4 -25.5
2025-11-03T22:37:01.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:37:01.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:37:01.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.858433
2025-11-03T22:37:01.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:37:01.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:37:01.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:37:01.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:37:01.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:37:01.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:36:24', tmtdew=31.2, humidity=11.05, cloud=0.0, wind=18.35, temperature=19.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:36:57', seeing=1.14, atlas_timestamp='2025-11-03T20:36:08.611', atlas_cloud=1, atlas_rain=1, zp_data=[0.01574999999999882, 0.04225000000000101, 0.14074999999999882, 0.04849999999999888, 0.0884999999999998, 0.1042500000000004, -0.1330000000000009, -0.07174999999999976, 0.01649999999999885, 0.07250000000000156, 0.11224999999999952, 0.09249999999999936, 0.07399999999999984, -0.04875000000000007, -0.1960000000000015, -0.21199999999999974, 0.08674999999999855, 0.1274999999999995, 0.17049999999999876, 0.12725000000000009, 0.1869999999999976, 0.09424999999999883, -0.01774999999999949, -0.22724999999999973, 0.1225000000000005, 0.13250000000000028, 0.19175000000000075, 0.25650000000000084, 0.17600000000000016, 0.09200000000000053, -0.015499999999999403, 0.07400000000000162, 0.06824999999999903], zp_timestamp='2025-11-03T20:34:00')
2025-11-03T22:37:01.884 [DEBUG] [Thread-123831] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:37:01.961 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:37:01.975 [DEBUG] [Thread-123835] [transport.py] [_log()] starting thread (client mode): 0xedc5d20
2025-11-03T22:37:01.975 [DEBUG] [Thread-123835] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:37:01.993 [DEBUG] [Thread-123835] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:37:01.993 [INFO] [Thread-123835] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:37:02.000 [DEBUG] [Thread-123835] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:37:02.000 [DEBUG] [Thread-123835] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:37:02.000 [DEBUG] [Thread-123835] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:37:02.000 [DEBUG] [Thread-123835] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:37:02.000 [DEBUG] [Thread-123835] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:37:02.000 [DEBUG] [Thread-123835] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:37:02.000 [DEBUG] [Thread-123835] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:37:02.000 [DEBUG] [Thread-123835] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:37:02.001 [DEBUG] [Thread-123835] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:37:02.001 [DEBUG] [Thread-123835] [transport.py] [_log()] client lang: <none>
2025-11-03T22:37:02.001 [DEBUG] [Thread-123835] [transport.py] [_log()] server lang: <none>
2025-11-03T22:37:02.001 [DEBUG] [Thread-123835] [transport.py] [_log()] kex follows: False
2025-11-03T22:37:02.001 [DEBUG] [Thread-123835] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:37:02.001 [DEBUG] [Thread-123835] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:37:02.001 [DEBUG] [Thread-123835] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:37:02.001 [DEBUG] [Thread-123835] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:37:02.001 [DEBUG] [Thread-123835] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:37:02.001 [DEBUG] [Thread-123835] [transport.py] [_log()] Compression: none
2025-11-03T22:37:02.001 [DEBUG] [Thread-123835] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:37:02.088 [DEBUG] [Thread-123835] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:37:02.088 [DEBUG] [Thread-123835] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:37:02.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:37:02.089 [DEBUG] [Thread-123835] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:37:02.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:37:02.144 [DEBUG] [Thread-123835] [transport.py] [_log()] userauth is OK
2025-11-03T22:37:02.144 [DEBUG] [Thread-123835] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:37:02.144 [DEBUG] [Thread-123835] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:37:02.144 [DEBUG] [Thread-123835] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:37:02.144 [DEBUG] [Thread-123835] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:37:02.167 [INFO] [Thread-123835] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:37:02.167 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:37:02.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:37:03.012 [DEBUG] [Thread-123835] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:37:03.012 [DEBUG] [Thread-123835] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:37:03.065 [DEBUG] [Thread-123835] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:37:03.065 [DEBUG] [Thread-123835] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:37:03.075 [DEBUG] [Thread-123835] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:37:03.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:37:03.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:37:03.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:37:03.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:37:03.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:37:03.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:37:03.116 [DEBUG] [Thread-123835] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:37:07.374 [DEBUG] [Thread-123837 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:37:22.411 [DEBUG] [Thread-123838 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:37:33.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:37:33.137 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:37:33.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:37:33.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 36, 56), 31.23, 11.07, 0.0, 17.15, 19.33, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:37:33.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:36:56
2025-11-03T22:37:34.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:37:34.288 [DEBUG] [Thread-123839] [transport.py] [_log()] starting thread (client mode): 0x1174c4c0
2025-11-03T22:37:34.288 [DEBUG] [Thread-123839] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:37:34.309 [DEBUG] [Thread-123839] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:37:34.309 [INFO] [Thread-123839] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:37:34.312 [DEBUG] [Thread-123839] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:37:34.312 [DEBUG] [Thread-123839] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:37:34.312 [DEBUG] [Thread-123839] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:37:34.312 [DEBUG] [Thread-123839] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:37:34.312 [DEBUG] [Thread-123839] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:37:34.312 [DEBUG] [Thread-123839] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:37:34.312 [DEBUG] [Thread-123839] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:37:34.312 [DEBUG] [Thread-123839] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:37:34.312 [DEBUG] [Thread-123839] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:37:34.312 [DEBUG] [Thread-123839] [transport.py] [_log()] client lang: <none>
2025-11-03T22:37:34.312 [DEBUG] [Thread-123839] [transport.py] [_log()] server lang: <none>
2025-11-03T22:37:34.312 [DEBUG] [Thread-123839] [transport.py] [_log()] kex follows: False
2025-11-03T22:37:34.312 [DEBUG] [Thread-123839] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:37:34.312 [DEBUG] [Thread-123839] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:37:34.312 [DEBUG] [Thread-123839] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:37:34.312 [DEBUG] [Thread-123839] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:37:34.312 [DEBUG] [Thread-123839] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:37:34.312 [DEBUG] [Thread-123839] [transport.py] [_log()] Compression: none
2025-11-03T22:37:34.312 [DEBUG] [Thread-123839] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:37:34.328 [DEBUG] [Thread-123839] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:37:34.328 [DEBUG] [Thread-123839] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:37:34.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:37:34.328 [DEBUG] [Thread-123839] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:37:34.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:37:34.329 [DEBUG] [Thread-123839] [transport.py] [_log()] userauth is OK
2025-11-03T22:37:34.329 [DEBUG] [Thread-123839] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:37:34.329 [DEBUG] [Thread-123839] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:37:34.329 [DEBUG] [Thread-123839] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:37:34.329 [DEBUG] [Thread-123839] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:37:34.344 [INFO] [Thread-123839] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:37:34.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:37:35.009 [DEBUG] [Thread-123839] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:37:35.009 [DEBUG] [Thread-123839] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:37:35.010 [DEBUG] [Thread-123839] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:37:35.051 [DEBUG] [Thread-123839] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:37:35.051 [DEBUG] [Thread-123839] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:37:35.053 [DEBUG] [Thread-123839] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:37:35.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:37:35.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:37:35.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:37:35.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:37:35.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:37:35.072 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:37:35.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:37:35.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:37:35.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:37:35.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.858780 -999.00  +19.50  14.57     16   -6.80 1 1 1 1 1     0    0 26.57 38.97 ZNESW 14.8 14.6 309.2 21.3 19.4 -25.8 19.4 -24.8 19.2 -24.6 19.4 -25.5
2025-11-03T22:37:35.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:37:35.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:37:35.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.858780
2025-11-03T22:37:35.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:37:35.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:37:35.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:37:35.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:37:35.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:37:35.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:36:56', tmtdew=31.23, humidity=11.07, cloud=0.0, wind=17.15, temperature=19.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:37:32', seeing=1.14, atlas_timestamp='2025-11-03T20:36:38.592', atlas_cloud=1, atlas_rain=1, zp_data=[0.01574999999999882, 0.04225000000000101, 0.14074999999999882, 0.04849999999999888, 0.0884999999999998, 0.1042500000000004, -0.1330000000000009, -0.07174999999999976, 0.01649999999999885, 0.07250000000000156, 0.11224999999999952, 0.09249999999999936, 0.07399999999999984, -0.04875000000000007, -0.1960000000000015, -0.21199999999999974, 0.08674999999999855, 0.1274999999999995, 0.17049999999999876, 0.12725000000000009, 0.1869999999999976, 0.09424999999999883, -0.01774999999999949, -0.22724999999999973, 0.1225000000000005, 0.13250000000000028, 0.19175000000000075, 0.25650000000000084, 0.17600000000000016, 0.09200000000000053, -0.015499999999999403, 0.07400000000000162, 0.06824999999999903], zp_timestamp='2025-11-03T20:34:00')
2025-11-03T22:37:35.074 [DEBUG] [Thread-123839] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:37:35.150 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:37:35.166 [DEBUG] [Thread-123842] [transport.py] [_log()] starting thread (client mode): 0xed37df0
2025-11-03T22:37:35.166 [DEBUG] [Thread-123842] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:37:35.182 [DEBUG] [Thread-123842] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:37:35.182 [INFO] [Thread-123842] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:37:35.190 [DEBUG] [Thread-123842] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:37:35.190 [DEBUG] [Thread-123842] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:37:35.190 [DEBUG] [Thread-123842] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:37:35.190 [DEBUG] [Thread-123842] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:37:35.190 [DEBUG] [Thread-123842] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:37:35.190 [DEBUG] [Thread-123842] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:37:35.190 [DEBUG] [Thread-123842] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:37:35.190 [DEBUG] [Thread-123842] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:37:35.190 [DEBUG] [Thread-123842] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:37:35.190 [DEBUG] [Thread-123842] [transport.py] [_log()] client lang: <none>
2025-11-03T22:37:35.190 [DEBUG] [Thread-123842] [transport.py] [_log()] server lang: <none>
2025-11-03T22:37:35.190 [DEBUG] [Thread-123842] [transport.py] [_log()] kex follows: False
2025-11-03T22:37:35.190 [DEBUG] [Thread-123842] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:37:35.190 [DEBUG] [Thread-123842] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:37:35.190 [DEBUG] [Thread-123842] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:37:35.190 [DEBUG] [Thread-123842] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:37:35.190 [DEBUG] [Thread-123842] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:37:35.190 [DEBUG] [Thread-123842] [transport.py] [_log()] Compression: none
2025-11-03T22:37:35.190 [DEBUG] [Thread-123842] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:37:35.249 [DEBUG] [Thread-123842] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:37:35.249 [DEBUG] [Thread-123842] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:37:35.249 [DEBUG] [Thread-123842] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:37:35.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:37:35.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:37:35.313 [DEBUG] [Thread-123842] [transport.py] [_log()] userauth is OK
2025-11-03T22:37:35.313 [DEBUG] [Thread-123842] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:37:35.313 [DEBUG] [Thread-123842] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:37:35.313 [DEBUG] [Thread-123842] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:37:35.314 [DEBUG] [Thread-123842] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:37:35.332 [INFO] [Thread-123842] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:37:35.332 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:37:35.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:37:36.167 [DEBUG] [Thread-123842] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:37:36.167 [DEBUG] [Thread-123842] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:37:36.219 [DEBUG] [Thread-123842] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:37:36.219 [DEBUG] [Thread-123842] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:37:36.230 [DEBUG] [Thread-123842] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:37:36.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:37:36.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:37:36.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:37:36.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:37:36.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:37:36.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:37:36.271 [DEBUG] [Thread-123842] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:37:37.442 [DEBUG] [Thread-123844 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:37:52.490 [DEBUG] [Thread-123845 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:37:55.964 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:37:55.965 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:38:01.946 [DEBUG] [Thread-123846 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:38:06.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:38:06.290 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:38:06.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:38:07.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 37, 32), 31.28, 11.02, 0.0, 16.2, 19.29, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:38:07.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:37:32
2025-11-03T22:38:07.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:38:07.406 [DEBUG] [Thread-123847] [transport.py] [_log()] starting thread (client mode): 0xed41cf0
2025-11-03T22:38:07.406 [DEBUG] [Thread-123847] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:38:07.418 [DEBUG] [Thread-123847] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:38:07.418 [INFO] [Thread-123847] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:38:07.419 [DEBUG] [Thread-123847] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:38:07.420 [DEBUG] [Thread-123847] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:38:07.420 [DEBUG] [Thread-123847] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:38:07.420 [DEBUG] [Thread-123847] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:38:07.420 [DEBUG] [Thread-123847] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:38:07.420 [DEBUG] [Thread-123847] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:38:07.420 [DEBUG] [Thread-123847] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:38:07.420 [DEBUG] [Thread-123847] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:38:07.420 [DEBUG] [Thread-123847] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:38:07.420 [DEBUG] [Thread-123847] [transport.py] [_log()] client lang: <none>
2025-11-03T22:38:07.420 [DEBUG] [Thread-123847] [transport.py] [_log()] server lang: <none>
2025-11-03T22:38:07.420 [DEBUG] [Thread-123847] [transport.py] [_log()] kex follows: False
2025-11-03T22:38:07.420 [DEBUG] [Thread-123847] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:38:07.420 [DEBUG] [Thread-123847] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:38:07.420 [DEBUG] [Thread-123847] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:38:07.420 [DEBUG] [Thread-123847] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:38:07.420 [DEBUG] [Thread-123847] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:38:07.420 [DEBUG] [Thread-123847] [transport.py] [_log()] Compression: none
2025-11-03T22:38:07.420 [DEBUG] [Thread-123847] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:38:07.439 [DEBUG] [Thread-123847] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:38:07.439 [DEBUG] [Thread-123847] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:38:07.439 [DEBUG] [Thread-123847] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:38:07.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:38:07.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:38:07.440 [DEBUG] [Thread-123847] [transport.py] [_log()] userauth is OK
2025-11-03T22:38:07.440 [DEBUG] [Thread-123847] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:38:07.440 [DEBUG] [Thread-123847] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:38:07.440 [DEBUG] [Thread-123847] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:38:07.440 [DEBUG] [Thread-123847] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:38:07.456 [INFO] [Thread-123847] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:38:07.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:38:07.520 [DEBUG] [Thread-123849 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:38:08.165 [DEBUG] [Thread-123847] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:38:08.165 [DEBUG] [Thread-123847] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:38:08.166 [DEBUG] [Thread-123847] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:38:08.206 [DEBUG] [Thread-123847] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:38:08.206 [DEBUG] [Thread-123847] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:38:08.209 [DEBUG] [Thread-123847] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:38:08.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:38:08.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:38:08.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:38:08.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:38:08.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:38:08.243 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:38:08.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:38:08.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:38:08.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:38:08.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.859475 -999.00  +19.40  15.88     16   -6.80 1 1 1 1 1     0    0 26.49 38.88 ZNESW 14.4 15.9 304.6 19.4 19.4 -25.9 19.4 -24.8 19.1 -24.8 19.4 -25.6
2025-11-03T22:38:08.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:38:08.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:38:08.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.859475
2025-11-03T22:38:08.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:38:08.245 [DEBUG] [Thread-123847] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:38:08.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:38:08.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:38:08.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:38:08.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:38:08.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:37:32', tmtdew=31.28, humidity=11.02, cloud=0.0, wind=16.2, temperature=19.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:38:05', seeing=1.21, atlas_timestamp='2025-11-03T20:37:38.640', atlas_cloud=1, atlas_rain=1, zp_data=[0.01574999999999882, 0.04225000000000101, 0.14074999999999882, 0.04849999999999888, 0.0884999999999998, 0.1042500000000004, -0.1330000000000009, -0.07174999999999976, 0.01649999999999885, 0.07250000000000156, 0.11224999999999952, 0.09249999999999936, 0.07399999999999984, -0.04875000000000007, -0.1960000000000015, -0.21199999999999974, 0.08674999999999855, 0.1274999999999995, 0.17049999999999876, 0.12725000000000009, 0.1869999999999976, 0.09424999999999883, -0.01774999999999949, -0.22724999999999973, 0.1225000000000005, 0.13250000000000028, 0.19175000000000075, 0.25650000000000084, 0.17600000000000016, 0.09200000000000053, -0.015499999999999403, 0.07400000000000162, 0.06824999999999903], zp_timestamp='2025-11-03T20:34:00')
2025-11-03T22:38:08.328 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:38:08.341 [DEBUG] [Thread-123851] [transport.py] [_log()] starting thread (client mode): 0xedc7a90
2025-11-03T22:38:08.342 [DEBUG] [Thread-123851] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:38:08.360 [DEBUG] [Thread-123851] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:38:08.360 [INFO] [Thread-123851] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:38:08.371 [DEBUG] [Thread-123851] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:38:08.372 [DEBUG] [Thread-123851] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:38:08.372 [DEBUG] [Thread-123851] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:38:08.372 [DEBUG] [Thread-123851] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:38:08.372 [DEBUG] [Thread-123851] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:38:08.372 [DEBUG] [Thread-123851] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:38:08.372 [DEBUG] [Thread-123851] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:38:08.373 [DEBUG] [Thread-123851] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:38:08.373 [DEBUG] [Thread-123851] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:38:08.373 [DEBUG] [Thread-123851] [transport.py] [_log()] client lang: <none>
2025-11-03T22:38:08.373 [DEBUG] [Thread-123851] [transport.py] [_log()] server lang: <none>
2025-11-03T22:38:08.373 [DEBUG] [Thread-123851] [transport.py] [_log()] kex follows: False
2025-11-03T22:38:08.373 [DEBUG] [Thread-123851] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:38:08.373 [DEBUG] [Thread-123851] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:38:08.374 [DEBUG] [Thread-123851] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:38:08.374 [DEBUG] [Thread-123851] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:38:08.374 [DEBUG] [Thread-123851] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:38:08.374 [DEBUG] [Thread-123851] [transport.py] [_log()] Compression: none
2025-11-03T22:38:08.374 [DEBUG] [Thread-123851] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:38:08.438 [DEBUG] [Thread-123851] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:38:08.439 [DEBUG] [Thread-123851] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:38:08.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:38:08.440 [DEBUG] [Thread-123851] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:38:08.442 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:38:08.497 [DEBUG] [Thread-123851] [transport.py] [_log()] userauth is OK
2025-11-03T22:38:08.497 [DEBUG] [Thread-123851] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:38:08.497 [DEBUG] [Thread-123851] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:38:08.498 [DEBUG] [Thread-123851] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:38:08.498 [DEBUG] [Thread-123851] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:38:08.517 [INFO] [Thread-123851] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:38:08.518 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:38:08.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:38:09.346 [DEBUG] [Thread-123851] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:38:09.346 [DEBUG] [Thread-123851] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:38:09.394 [DEBUG] [Thread-123851] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:38:09.394 [DEBUG] [Thread-123851] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:38:09.405 [DEBUG] [Thread-123851] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:38:09.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:38:09.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:38:09.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:38:09.443 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:38:09.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:38:09.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:38:09.451 [DEBUG] [Thread-123851] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:38:22.553 [DEBUG] [Thread-123853 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:38:37.608 [DEBUG] [Thread-123854 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:38:39.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:38:39.474 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:38:39.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:38:40.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 38, 4), 31.3, 11.02, 0.0, 17.15, 19.38, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:38:40.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:38:04
2025-11-03T22:38:40.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:38:40.606 [DEBUG] [Thread-123855] [transport.py] [_log()] starting thread (client mode): 0xedc4e80
2025-11-03T22:38:40.607 [DEBUG] [Thread-123855] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:38:40.616 [DEBUG] [Thread-123855] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:38:40.616 [INFO] [Thread-123855] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:38:40.619 [DEBUG] [Thread-123855] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:38:40.619 [DEBUG] [Thread-123855] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:38:40.619 [DEBUG] [Thread-123855] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:38:40.619 [DEBUG] [Thread-123855] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:38:40.619 [DEBUG] [Thread-123855] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:38:40.619 [DEBUG] [Thread-123855] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:38:40.620 [DEBUG] [Thread-123855] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:38:40.620 [DEBUG] [Thread-123855] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:38:40.620 [DEBUG] [Thread-123855] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:38:40.620 [DEBUG] [Thread-123855] [transport.py] [_log()] client lang: <none>
2025-11-03T22:38:40.620 [DEBUG] [Thread-123855] [transport.py] [_log()] server lang: <none>
2025-11-03T22:38:40.620 [DEBUG] [Thread-123855] [transport.py] [_log()] kex follows: False
2025-11-03T22:38:40.620 [DEBUG] [Thread-123855] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:38:40.620 [DEBUG] [Thread-123855] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:38:40.621 [DEBUG] [Thread-123855] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:38:40.621 [DEBUG] [Thread-123855] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:38:40.621 [DEBUG] [Thread-123855] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:38:40.621 [DEBUG] [Thread-123855] [transport.py] [_log()] Compression: none
2025-11-03T22:38:40.621 [DEBUG] [Thread-123855] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:38:40.649 [DEBUG] [Thread-123855] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:38:40.653 [DEBUG] [Thread-123855] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:38:40.654 [DEBUG] [Thread-123855] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:38:40.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:38:40.657 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:38:40.693 [DEBUG] [Thread-123855] [transport.py] [_log()] userauth is OK
2025-11-03T22:38:40.693 [DEBUG] [Thread-123855] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:38:40.694 [DEBUG] [Thread-123855] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:38:40.694 [DEBUG] [Thread-123855] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:38:40.694 [DEBUG] [Thread-123855] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:38:40.721 [INFO] [Thread-123855] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:38:40.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:38:41.351 [DEBUG] [Thread-123855] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:38:41.351 [DEBUG] [Thread-123855] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:38:41.353 [DEBUG] [Thread-123855] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:38:41.392 [DEBUG] [Thread-123855] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:38:41.393 [DEBUG] [Thread-123855] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:38:41.395 [DEBUG] [Thread-123855] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:38:41.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:38:41.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:38:41.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:38:41.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:38:41.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:38:41.417 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:38:41.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:38:41.417 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:38:41.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:38:41.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.859822 -999.00  +19.30  16.78     16   -6.80 1 1 1 1 1     0    0 27.08 40.83 ZNESW 16.9 16.8 303.2 18.6 19.4 -25.8 19.4 -24.9 19.1 -24.8 19.4 -25.6
2025-11-03T22:38:41.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:38:41.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:38:41.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.859822
2025-11-03T22:38:41.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:38:41.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:38:41.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:38:41.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:38:41.420 [DEBUG] [Thread-123855] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:38:41.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:38:41.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:38:04', tmtdew=31.3, humidity=11.02, cloud=0.0, wind=17.15, temperature=19.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:38:37', seeing=1.19, atlas_timestamp='2025-11-03T20:38:08.621', atlas_cloud=1, atlas_rain=1, zp_data=[0.01574999999999882, 0.04225000000000101, 0.14074999999999882, 0.04849999999999888, 0.0884999999999998, 0.1042500000000004, -0.1330000000000009, -0.07174999999999976, 0.01649999999999885, 0.07250000000000156, 0.11224999999999952, 0.09249999999999936, 0.07399999999999984, -0.04875000000000007, -0.1960000000000015, -0.21199999999999974, 0.08674999999999855, 0.1274999999999995, 0.17049999999999876, 0.12725000000000009, 0.1869999999999976, 0.09424999999999883, -0.01774999999999949, -0.22724999999999973, 0.1225000000000005, 0.13250000000000028, 0.19175000000000075, 0.25650000000000084, 0.17600000000000016, 0.09200000000000053, -0.015499999999999403, 0.07400000000000162, 0.06824999999999903], zp_timestamp='2025-11-03T20:34:00')
2025-11-03T22:38:41.494 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:38:41.506 [DEBUG] [Thread-123858] [transport.py] [_log()] starting thread (client mode): 0xedc41c0
2025-11-03T22:38:41.506 [DEBUG] [Thread-123858] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:38:41.520 [DEBUG] [Thread-123858] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:38:41.520 [INFO] [Thread-123858] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:38:41.528 [DEBUG] [Thread-123858] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:38:41.528 [DEBUG] [Thread-123858] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:38:41.528 [DEBUG] [Thread-123858] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:38:41.529 [DEBUG] [Thread-123858] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:38:41.529 [DEBUG] [Thread-123858] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:38:41.529 [DEBUG] [Thread-123858] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:38:41.529 [DEBUG] [Thread-123858] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:38:41.529 [DEBUG] [Thread-123858] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:38:41.529 [DEBUG] [Thread-123858] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:38:41.529 [DEBUG] [Thread-123858] [transport.py] [_log()] client lang: <none>
2025-11-03T22:38:41.529 [DEBUG] [Thread-123858] [transport.py] [_log()] server lang: <none>
2025-11-03T22:38:41.529 [DEBUG] [Thread-123858] [transport.py] [_log()] kex follows: False
2025-11-03T22:38:41.529 [DEBUG] [Thread-123858] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:38:41.529 [DEBUG] [Thread-123858] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:38:41.529 [DEBUG] [Thread-123858] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:38:41.530 [DEBUG] [Thread-123858] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:38:41.530 [DEBUG] [Thread-123858] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:38:41.530 [DEBUG] [Thread-123858] [transport.py] [_log()] Compression: none
2025-11-03T22:38:41.530 [DEBUG] [Thread-123858] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:38:41.588 [DEBUG] [Thread-123858] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:38:41.589 [DEBUG] [Thread-123858] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:38:41.589 [DEBUG] [Thread-123858] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:38:41.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:38:41.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:38:41.650 [DEBUG] [Thread-123858] [transport.py] [_log()] userauth is OK
2025-11-03T22:38:41.650 [DEBUG] [Thread-123858] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:38:41.650 [DEBUG] [Thread-123858] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:38:41.650 [DEBUG] [Thread-123858] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:38:41.650 [DEBUG] [Thread-123858] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:38:41.675 [INFO] [Thread-123858] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:38:41.675 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:38:41.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:38:42.497 [DEBUG] [Thread-123858] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:38:42.497 [DEBUG] [Thread-123858] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:38:42.544 [DEBUG] [Thread-123858] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:38:42.544 [DEBUG] [Thread-123858] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:38:42.552 [DEBUG] [Thread-123858] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:38:42.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:38:42.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:38:42.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:38:42.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:38:42.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:38:42.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:38:42.589 [DEBUG] [Thread-123858] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:38:52.637 [DEBUG] [Thread-123860 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:38:56.172 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:38:56.175 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:39:03.740 [DEBUG] [Thread-123861 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:39:07.896 [DEBUG] [Thread-123862 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:39:12.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:39:12.603 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:39:12.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:39:13.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 38, 37), 31.4, 10.92, 0.0, 15.6, 19.33, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:39:13.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:38:37
2025-11-03T22:39:13.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:39:13.681 [DEBUG] [Thread-123863] [transport.py] [_log()] starting thread (client mode): 0xed07430
2025-11-03T22:39:13.681 [DEBUG] [Thread-123863] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:39:13.695 [DEBUG] [Thread-123863] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:39:13.695 [INFO] [Thread-123863] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:39:13.700 [DEBUG] [Thread-123863] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:39:13.700 [DEBUG] [Thread-123863] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:39:13.700 [DEBUG] [Thread-123863] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:39:13.700 [DEBUG] [Thread-123863] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:39:13.700 [DEBUG] [Thread-123863] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:39:13.700 [DEBUG] [Thread-123863] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:39:13.700 [DEBUG] [Thread-123863] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:39:13.701 [DEBUG] [Thread-123863] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:39:13.701 [DEBUG] [Thread-123863] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:39:13.701 [DEBUG] [Thread-123863] [transport.py] [_log()] client lang: <none>
2025-11-03T22:39:13.701 [DEBUG] [Thread-123863] [transport.py] [_log()] server lang: <none>
2025-11-03T22:39:13.701 [DEBUG] [Thread-123863] [transport.py] [_log()] kex follows: False
2025-11-03T22:39:13.701 [DEBUG] [Thread-123863] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:39:13.701 [DEBUG] [Thread-123863] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:39:13.701 [DEBUG] [Thread-123863] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:39:13.701 [DEBUG] [Thread-123863] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:39:13.702 [DEBUG] [Thread-123863] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:39:13.702 [DEBUG] [Thread-123863] [transport.py] [_log()] Compression: none
2025-11-03T22:39:13.702 [DEBUG] [Thread-123863] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:39:13.728 [DEBUG] [Thread-123863] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:39:13.733 [DEBUG] [Thread-123863] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:39:13.735 [DEBUG] [Thread-123863] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:39:13.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:39:13.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:39:13.742 [DEBUG] [Thread-123863] [transport.py] [_log()] userauth is OK
2025-11-03T22:39:13.742 [DEBUG] [Thread-123863] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:39:13.742 [DEBUG] [Thread-123863] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:39:13.742 [DEBUG] [Thread-123863] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:39:13.743 [DEBUG] [Thread-123863] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:39:13.768 [INFO] [Thread-123863] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:39:13.772 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:39:14.523 [DEBUG] [Thread-123863] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:39:14.523 [DEBUG] [Thread-123863] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:39:14.535 [DEBUG] [Thread-123863] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:39:14.564 [DEBUG] [Thread-123863] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:39:14.564 [DEBUG] [Thread-123863] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:39:14.568 [DEBUG] [Thread-123863] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:39:14.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:39:14.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:39:14.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:39:14.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:39:14.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:39:14.596 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:39:14.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:39:14.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:39:14.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:39:14.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.860169 -999.00  +19.30  13.77     16   -6.80 1 1 1 1 1     0    0 27.03 39.54 ZNESW 17.0 13.8 308.0 19.1 19.4 -26.0 19.3 -24.9 19.1 -24.5 19.4 -25.6
2025-11-03T22:39:14.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:39:14.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:39:14.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.860169
2025-11-03T22:39:14.604 [DEBUG] [Thread-123863] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:39:14.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:39:14.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:39:14.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:39:14.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:39:14.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:39:14.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:38:37', tmtdew=31.4, humidity=10.92, cloud=0.0, wind=15.6, temperature=19.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:39:10', seeing=1.19, atlas_timestamp='2025-11-03T20:38:38.602', atlas_cloud=1, atlas_rain=1, zp_data=[0.01574999999999882, 0.04225000000000101, 0.14074999999999882, 0.04849999999999888, 0.0884999999999998, 0.1042500000000004, -0.1330000000000009, -0.07174999999999976, 0.01649999999999885, 0.07250000000000156, 0.11224999999999952, 0.09249999999999936, 0.07399999999999984, -0.04875000000000007, -0.1960000000000015, -0.21199999999999974, 0.08674999999999855, 0.1274999999999995, 0.17049999999999876, 0.12725000000000009, 0.1869999999999976, 0.09424999999999883, -0.01774999999999949, -0.22724999999999973, 0.1225000000000005, 0.13250000000000028, 0.19175000000000075, 0.25650000000000084, 0.17600000000000016, 0.09200000000000053, -0.015499999999999403, 0.07400000000000162, 0.06824999999999903], zp_timestamp='2025-11-03T20:37:00')
2025-11-03T22:39:14.701 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:39:14.715 [DEBUG] [Thread-123866] [transport.py] [_log()] starting thread (client mode): 0xed37c10
2025-11-03T22:39:14.716 [DEBUG] [Thread-123866] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:39:14.731 [DEBUG] [Thread-123866] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:39:14.731 [INFO] [Thread-123866] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:39:14.740 [DEBUG] [Thread-123866] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:39:14.740 [DEBUG] [Thread-123866] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:39:14.740 [DEBUG] [Thread-123866] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:39:14.740 [DEBUG] [Thread-123866] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:39:14.741 [DEBUG] [Thread-123866] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:39:14.741 [DEBUG] [Thread-123866] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:39:14.741 [DEBUG] [Thread-123866] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:39:14.741 [DEBUG] [Thread-123866] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:39:14.741 [DEBUG] [Thread-123866] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:39:14.741 [DEBUG] [Thread-123866] [transport.py] [_log()] client lang: <none>
2025-11-03T22:39:14.741 [DEBUG] [Thread-123866] [transport.py] [_log()] server lang: <none>
2025-11-03T22:39:14.741 [DEBUG] [Thread-123866] [transport.py] [_log()] kex follows: False
2025-11-03T22:39:14.741 [DEBUG] [Thread-123866] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:39:14.742 [DEBUG] [Thread-123866] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:39:14.742 [DEBUG] [Thread-123866] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:39:14.742 [DEBUG] [Thread-123866] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:39:14.742 [DEBUG] [Thread-123866] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:39:14.742 [DEBUG] [Thread-123866] [transport.py] [_log()] Compression: none
2025-11-03T22:39:14.742 [DEBUG] [Thread-123866] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:39:14.803 [DEBUG] [Thread-123866] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:39:14.803 [DEBUG] [Thread-123866] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:39:14.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:39:14.804 [DEBUG] [Thread-123866] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:39:14.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:39:14.861 [DEBUG] [Thread-123866] [transport.py] [_log()] userauth is OK
2025-11-03T22:39:14.861 [DEBUG] [Thread-123866] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:39:14.861 [DEBUG] [Thread-123866] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:39:14.861 [DEBUG] [Thread-123866] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:39:14.861 [DEBUG] [Thread-123866] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:39:14.896 [INFO] [Thread-123866] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:39:14.896 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:39:14.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:39:15.732 [DEBUG] [Thread-123866] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:39:15.732 [DEBUG] [Thread-123866] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:39:15.781 [DEBUG] [Thread-123866] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:39:15.781 [DEBUG] [Thread-123866] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:39:15.789 [DEBUG] [Thread-123866] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:39:15.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:39:15.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:39:15.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:39:15.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:39:15.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:39:15.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:39:15.826 [DEBUG] [Thread-123866] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:39:22.935 [DEBUG] [Thread-123868 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:39:31.250 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:39:38.034 [DEBUG] [Thread-123869 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:39:39.750 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:39:43.807 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:39:45.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:39:45.831 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:39:45.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:39:47.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 39, 9), 31.4, 10.93, 0.0, 16.16, 19.39, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:39:47.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:39:09
2025-11-03T22:39:47.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:39:48.230 [DEBUG] [Thread-123870] [transport.py] [_log()] starting thread (client mode): 0xed43790
2025-11-03T22:39:48.232 [DEBUG] [Thread-123870] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:39:48.234 [DEBUG] [Thread-123870] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:39:48.234 [INFO] [Thread-123870] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:39:48.245 [DEBUG] [Thread-123870] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:39:48.245 [DEBUG] [Thread-123870] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:39:48.245 [DEBUG] [Thread-123870] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:39:48.245 [DEBUG] [Thread-123870] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:39:48.245 [DEBUG] [Thread-123870] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:39:48.245 [DEBUG] [Thread-123870] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:39:48.245 [DEBUG] [Thread-123870] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:39:48.245 [DEBUG] [Thread-123870] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:39:48.245 [DEBUG] [Thread-123870] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:39:48.245 [DEBUG] [Thread-123870] [transport.py] [_log()] client lang: <none>
2025-11-03T22:39:48.245 [DEBUG] [Thread-123870] [transport.py] [_log()] server lang: <none>
2025-11-03T22:39:48.247 [DEBUG] [Thread-123870] [transport.py] [_log()] kex follows: False
2025-11-03T22:39:48.247 [DEBUG] [Thread-123870] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:39:48.249 [DEBUG] [Thread-123870] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:39:48.249 [DEBUG] [Thread-123870] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:39:48.249 [DEBUG] [Thread-123870] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:39:48.249 [DEBUG] [Thread-123870] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:39:48.249 [DEBUG] [Thread-123870] [transport.py] [_log()] Compression: none
2025-11-03T22:39:48.249 [DEBUG] [Thread-123870] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:39:48.303 [DEBUG] [Thread-123870] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:39:48.322 [DEBUG] [Thread-123870] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:39:48.324 [DEBUG] [Thread-123870] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:39:48.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:39:48.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:39:48.327 [DEBUG] [Thread-123870] [transport.py] [_log()] userauth is OK
2025-11-03T22:39:48.327 [DEBUG] [Thread-123870] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:39:48.327 [DEBUG] [Thread-123870] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:39:48.327 [DEBUG] [Thread-123870] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:39:48.327 [DEBUG] [Thread-123870] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:39:48.354 [INFO] [Thread-123870] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:39:48.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:39:48.998 [DEBUG] [Thread-123870] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:39:48.998 [DEBUG] [Thread-123870] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:39:48.998 [DEBUG] [Thread-123870] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:39:49.039 [DEBUG] [Thread-123870] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:39:49.039 [DEBUG] [Thread-123870] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:39:49.042 [DEBUG] [Thread-123870] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:39:49.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:39:49.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:39:49.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:39:49.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:39:49.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:39:49.061 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:39:49.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:39:49.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:39:49.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:39:49.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.860516 -999.00  +19.30  15.15     16   -6.70 1 1 1 1 1     0    0 27.04 39.39 ZNESW 12.9 15.2 306.6 21.9 19.4 -25.9 19.4 -24.8 19.1 -24.5 19.4 -25.5
2025-11-03T22:39:49.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:39:49.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:39:49.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.860516
2025-11-03T22:39:49.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:39:49.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:39:49.063 [DEBUG] [Thread-123870] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:39:49.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:39:49.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:39:49.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:39:49.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:39:09', tmtdew=31.4, humidity=10.93, cloud=0.0, wind=16.16, temperature=19.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:39:43', seeing=1.01, atlas_timestamp='2025-11-03T20:39:08.582', atlas_cloud=1, atlas_rain=1, zp_data=[0.01574999999999882, 0.04225000000000101, 0.14074999999999882, 0.04849999999999888, 0.0884999999999998, 0.1042500000000004, -0.1330000000000009, -0.07174999999999976, 0.01649999999999885, 0.07250000000000156, 0.11224999999999952, 0.09249999999999936, 0.07399999999999984, -0.04875000000000007, -0.1960000000000015, -0.21199999999999974, 0.08674999999999855, 0.1274999999999995, 0.17049999999999876, 0.12725000000000009, 0.1869999999999976, 0.09424999999999883, -0.01774999999999949, -0.22724999999999973, 0.1225000000000005, 0.13250000000000028, 0.19175000000000075, 0.25650000000000084, 0.17600000000000016, 0.09200000000000053, -0.015499999999999403, 0.07400000000000162, 0.06824999999999903], zp_timestamp='2025-11-03T20:37:00')
2025-11-03T22:39:49.138 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:39:49.152 [DEBUG] [Thread-123873] [transport.py] [_log()] starting thread (client mode): 0xed34970
2025-11-03T22:39:49.152 [DEBUG] [Thread-123873] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:39:49.167 [DEBUG] [Thread-123873] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:39:49.167 [INFO] [Thread-123873] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:39:49.175 [DEBUG] [Thread-123873] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:39:49.175 [DEBUG] [Thread-123873] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:39:49.175 [DEBUG] [Thread-123873] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:39:49.175 [DEBUG] [Thread-123873] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:39:49.175 [DEBUG] [Thread-123873] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:39:49.175 [DEBUG] [Thread-123873] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:39:49.175 [DEBUG] [Thread-123873] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:39:49.175 [DEBUG] [Thread-123873] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:39:49.175 [DEBUG] [Thread-123873] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:39:49.175 [DEBUG] [Thread-123873] [transport.py] [_log()] client lang: <none>
2025-11-03T22:39:49.175 [DEBUG] [Thread-123873] [transport.py] [_log()] server lang: <none>
2025-11-03T22:39:49.175 [DEBUG] [Thread-123873] [transport.py] [_log()] kex follows: False
2025-11-03T22:39:49.176 [DEBUG] [Thread-123873] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:39:49.176 [DEBUG] [Thread-123873] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:39:49.176 [DEBUG] [Thread-123873] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:39:49.176 [DEBUG] [Thread-123873] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:39:49.176 [DEBUG] [Thread-123873] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:39:49.176 [DEBUG] [Thread-123873] [transport.py] [_log()] Compression: none
2025-11-03T22:39:49.176 [DEBUG] [Thread-123873] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:39:49.231 [DEBUG] [Thread-123873] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:39:49.231 [DEBUG] [Thread-123873] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:39:49.231 [DEBUG] [Thread-123873] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:39:49.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:39:49.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:39:49.289 [DEBUG] [Thread-123873] [transport.py] [_log()] userauth is OK
2025-11-03T22:39:49.289 [DEBUG] [Thread-123873] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:39:49.289 [DEBUG] [Thread-123873] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:39:49.289 [DEBUG] [Thread-123873] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:39:49.289 [DEBUG] [Thread-123873] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:39:49.304 [INFO] [Thread-123873] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:39:49.304 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:39:49.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:39:50.122 [DEBUG] [Thread-123873] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:39:50.122 [DEBUG] [Thread-123873] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:39:50.170 [DEBUG] [Thread-123873] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:39:50.170 [DEBUG] [Thread-123873] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:39:50.179 [DEBUG] [Thread-123873] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:39:50.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:39:50.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:39:50.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:39:50.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:39:50.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:39:50.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:39:50.214 [DEBUG] [Thread-123873] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:39:53.064 [DEBUG] [Thread-123875 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:39:56.386 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:39:56.388 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:40:04.016 [DEBUG] [Thread-123876 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:40:08.103 [DEBUG] [Thread-123877 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:40:20.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:40:20.235 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:40:20.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:40:21.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 39, 42), 31.34, 10.98, 0.0, 14.64, 19.34, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:40:21.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:39:42
2025-11-03T22:40:21.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:40:21.389 [DEBUG] [Thread-123878] [transport.py] [_log()] starting thread (client mode): 0xed5e0e0
2025-11-03T22:40:21.389 [DEBUG] [Thread-123878] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:40:21.410 [DEBUG] [Thread-123878] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:40:21.410 [INFO] [Thread-123878] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:40:21.413 [DEBUG] [Thread-123878] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:40:21.413 [DEBUG] [Thread-123878] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:40:21.414 [DEBUG] [Thread-123878] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:40:21.414 [DEBUG] [Thread-123878] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:40:21.414 [DEBUG] [Thread-123878] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:40:21.414 [DEBUG] [Thread-123878] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:40:21.414 [DEBUG] [Thread-123878] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:40:21.414 [DEBUG] [Thread-123878] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:40:21.414 [DEBUG] [Thread-123878] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:40:21.414 [DEBUG] [Thread-123878] [transport.py] [_log()] client lang: <none>
2025-11-03T22:40:21.414 [DEBUG] [Thread-123878] [transport.py] [_log()] server lang: <none>
2025-11-03T22:40:21.414 [DEBUG] [Thread-123878] [transport.py] [_log()] kex follows: False
2025-11-03T22:40:21.414 [DEBUG] [Thread-123878] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:40:21.414 [DEBUG] [Thread-123878] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:40:21.414 [DEBUG] [Thread-123878] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:40:21.414 [DEBUG] [Thread-123878] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:40:21.414 [DEBUG] [Thread-123878] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:40:21.414 [DEBUG] [Thread-123878] [transport.py] [_log()] Compression: none
2025-11-03T22:40:21.414 [DEBUG] [Thread-123878] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:40:21.430 [DEBUG] [Thread-123878] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:40:21.430 [DEBUG] [Thread-123878] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:40:21.430 [DEBUG] [Thread-123878] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:40:21.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:40:21.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:40:21.431 [DEBUG] [Thread-123878] [transport.py] [_log()] userauth is OK
2025-11-03T22:40:21.431 [DEBUG] [Thread-123878] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:40:21.431 [DEBUG] [Thread-123878] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:40:21.431 [DEBUG] [Thread-123878] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:40:21.431 [DEBUG] [Thread-123878] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:40:21.446 [INFO] [Thread-123878] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:40:21.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:40:22.880 [DEBUG] [Thread-123878] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:40:22.880 [DEBUG] [Thread-123878] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:40:22.881 [DEBUG] [Thread-123878] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:40:22.921 [DEBUG] [Thread-123878] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:40:22.922 [DEBUG] [Thread-123878] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:40:22.924 [DEBUG] [Thread-123878] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:40:22.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:40:22.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:40:22.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:40:22.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:40:22.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:40:22.949 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:40:22.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:40:22.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:40:22.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:40:22.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.860864 -999.00  +19.30  15.64     16   -6.80 1 1 1 1 1     0    0 26.97 39.87 ZNESW 14.1 15.6 297.4 20.8 19.4 -25.8 19.4 -24.8 19.1 -24.6 19.4 -25.5
2025-11-03T22:40:22.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:40:22.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:40:22.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.860864
2025-11-03T22:40:22.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:40:22.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:40:22.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:40:22.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:40:22.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:40:22.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:39:42', tmtdew=31.34, humidity=10.98, cloud=0.0, wind=14.64, temperature=19.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:40:19', seeing=1.16, atlas_timestamp='2025-11-03T20:39:38.650', atlas_cloud=1, atlas_rain=1, zp_data=[0.01574999999999882, 0.04225000000000101, 0.14074999999999882, 0.04849999999999888, 0.0884999999999998, 0.1042500000000004, -0.1330000000000009, -0.07174999999999976, 0.01649999999999885, 0.07250000000000156, 0.11224999999999952, 0.09249999999999936, 0.07399999999999984, -0.04875000000000007, -0.1960000000000015, -0.21199999999999974, 0.08674999999999855, 0.1274999999999995, 0.17049999999999876, 0.12725000000000009, 0.1869999999999976, 0.09424999999999883, -0.01774999999999949, -0.22724999999999973, 0.1225000000000005, 0.13250000000000028, 0.19175000000000075, 0.25650000000000084, 0.17600000000000016, 0.09200000000000053, -0.015499999999999403, 0.07400000000000162, 0.06824999999999903], zp_timestamp='2025-11-03T20:37:00')
2025-11-03T22:40:22.953 [DEBUG] [Thread-123878] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:40:23.037 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:40:23.049 [DEBUG] [Thread-123881] [transport.py] [_log()] starting thread (client mode): 0xed885e0
2025-11-03T22:40:23.050 [DEBUG] [Thread-123881] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:40:23.066 [DEBUG] [Thread-123881] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:40:23.066 [INFO] [Thread-123881] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:40:23.075 [DEBUG] [Thread-123881] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:40:23.075 [DEBUG] [Thread-123881] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:40:23.075 [DEBUG] [Thread-123881] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:40:23.075 [DEBUG] [Thread-123881] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:40:23.075 [DEBUG] [Thread-123881] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:40:23.076 [DEBUG] [Thread-123881] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:40:23.076 [DEBUG] [Thread-123881] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:40:23.076 [DEBUG] [Thread-123881] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:40:23.076 [DEBUG] [Thread-123881] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:40:23.076 [DEBUG] [Thread-123881] [transport.py] [_log()] client lang: <none>
2025-11-03T22:40:23.076 [DEBUG] [Thread-123881] [transport.py] [_log()] server lang: <none>
2025-11-03T22:40:23.076 [DEBUG] [Thread-123881] [transport.py] [_log()] kex follows: False
2025-11-03T22:40:23.076 [DEBUG] [Thread-123881] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:40:23.076 [DEBUG] [Thread-123881] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:40:23.076 [DEBUG] [Thread-123881] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:40:23.076 [DEBUG] [Thread-123881] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:40:23.076 [DEBUG] [Thread-123881] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:40:23.076 [DEBUG] [Thread-123881] [transport.py] [_log()] Compression: none
2025-11-03T22:40:23.076 [DEBUG] [Thread-123881] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:40:23.134 [DEBUG] [Thread-123881] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:40:23.134 [DEBUG] [Thread-123881] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:40:23.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:40:23.135 [DEBUG] [Thread-123881] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:40:23.147 [DEBUG] [Thread-123883 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:40:23.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:40:23.194 [DEBUG] [Thread-123881] [transport.py] [_log()] userauth is OK
2025-11-03T22:40:23.194 [DEBUG] [Thread-123881] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:40:23.194 [DEBUG] [Thread-123881] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:40:23.194 [DEBUG] [Thread-123881] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:40:23.194 [DEBUG] [Thread-123881] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:40:23.215 [INFO] [Thread-123881] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:40:23.216 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:40:23.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:40:24.094 [DEBUG] [Thread-123881] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:40:24.094 [DEBUG] [Thread-123881] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:40:24.141 [DEBUG] [Thread-123881] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:40:24.141 [DEBUG] [Thread-123881] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:40:24.150 [DEBUG] [Thread-123881] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:40:24.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:40:24.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:40:24.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:40:24.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:40:24.175 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:40:24.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:40:24.183 [DEBUG] [Thread-123881] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:40:38.202 [DEBUG] [Thread-123884 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:40:53.232 [DEBUG] [Thread-123885 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:40:54.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:40:54.205 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:40:54.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:40:54.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 40, 19), 31.36, 10.95, 0.0, 14.96, 19.28, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:40:54.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:40:19
2025-11-03T22:40:55.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:40:55.270 [DEBUG] [Thread-123886] [transport.py] [_log()] starting thread (client mode): 0xed37040
2025-11-03T22:40:55.270 [DEBUG] [Thread-123886] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:40:55.281 [DEBUG] [Thread-123886] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:40:55.281 [INFO] [Thread-123886] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:40:55.283 [DEBUG] [Thread-123886] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:40:55.283 [DEBUG] [Thread-123886] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:40:55.283 [DEBUG] [Thread-123886] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:40:55.283 [DEBUG] [Thread-123886] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:40:55.283 [DEBUG] [Thread-123886] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:40:55.283 [DEBUG] [Thread-123886] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:40:55.283 [DEBUG] [Thread-123886] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:40:55.283 [DEBUG] [Thread-123886] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:40:55.283 [DEBUG] [Thread-123886] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:40:55.283 [DEBUG] [Thread-123886] [transport.py] [_log()] client lang: <none>
2025-11-03T22:40:55.283 [DEBUG] [Thread-123886] [transport.py] [_log()] server lang: <none>
2025-11-03T22:40:55.283 [DEBUG] [Thread-123886] [transport.py] [_log()] kex follows: False
2025-11-03T22:40:55.283 [DEBUG] [Thread-123886] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:40:55.283 [DEBUG] [Thread-123886] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:40:55.283 [DEBUG] [Thread-123886] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:40:55.285 [DEBUG] [Thread-123886] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:40:55.285 [DEBUG] [Thread-123886] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:40:55.285 [DEBUG] [Thread-123886] [transport.py] [_log()] Compression: none
2025-11-03T22:40:55.285 [DEBUG] [Thread-123886] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:40:55.295 [DEBUG] [Thread-123886] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:40:55.296 [DEBUG] [Thread-123886] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:40:55.296 [DEBUG] [Thread-123886] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:40:55.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:40:55.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:40:55.298 [DEBUG] [Thread-123886] [transport.py] [_log()] userauth is OK
2025-11-03T22:40:55.298 [DEBUG] [Thread-123886] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:40:55.298 [DEBUG] [Thread-123886] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:40:55.298 [DEBUG] [Thread-123886] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:40:55.298 [DEBUG] [Thread-123886] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:40:55.310 [INFO] [Thread-123886] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:40:55.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:40:55.938 [DEBUG] [Thread-123886] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:40:55.938 [DEBUG] [Thread-123886] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:40:55.939 [DEBUG] [Thread-123886] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:40:55.970 [DEBUG] [Thread-123886] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:40:55.970 [DEBUG] [Thread-123886] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:40:55.973 [DEBUG] [Thread-123886] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:40:55.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:40:55.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:40:55.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:40:55.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:40:56.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:40:56.005 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:40:56.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:40:56.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:40:56.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:40:56.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.861558 -999.00  +19.30  14.29     16   -6.80 1 1 1 1 1     0    0 27.51 39.71 ZNESW 18.6 14.3 304.8 21.3 19.4 -25.8 19.3 -24.8 19.1 -24.3 19.4 -25.3
2025-11-03T22:40:56.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:40:56.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:40:56.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.861558
2025-11-03T22:40:56.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:40:56.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:40:56.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:40:56.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:40:56.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:40:56.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:40:19', tmtdew=31.36, humidity=10.95, cloud=0.0, wind=14.96, temperature=19.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:40:52', seeing=1.16, atlas_timestamp='2025-11-03T20:40:38.611', atlas_cloud=1, atlas_rain=1, zp_data=[0.01574999999999882, 0.04225000000000101, 0.14074999999999882, 0.04849999999999888, 0.0884999999999998, 0.1042500000000004, -0.1330000000000009, -0.07174999999999976, 0.01649999999999885, 0.07250000000000156, 0.11224999999999952, 0.09249999999999936, 0.07399999999999984, -0.04875000000000007, -0.1960000000000015, -0.21199999999999974, 0.08674999999999855, 0.1274999999999995, 0.17049999999999876, 0.12725000000000009, 0.1869999999999976, 0.09424999999999883, -0.01774999999999949, -0.22724999999999973, 0.1225000000000005, 0.13250000000000028, 0.19175000000000075, 0.25650000000000084, 0.17600000000000016, 0.09200000000000053, -0.015499999999999403, 0.07400000000000162, 0.06824999999999903], zp_timestamp='2025-11-03T20:37:00')
2025-11-03T22:40:56.008 [DEBUG] [Thread-123886] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:40:56.088 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:40:56.101 [DEBUG] [Thread-123889] [transport.py] [_log()] starting thread (client mode): 0xed8a350
2025-11-03T22:40:56.101 [DEBUG] [Thread-123889] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:40:56.115 [DEBUG] [Thread-123889] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:40:56.115 [INFO] [Thread-123889] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:40:56.123 [DEBUG] [Thread-123889] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:40:56.123 [DEBUG] [Thread-123889] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:40:56.123 [DEBUG] [Thread-123889] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:40:56.123 [DEBUG] [Thread-123889] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:40:56.123 [DEBUG] [Thread-123889] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:40:56.123 [DEBUG] [Thread-123889] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:40:56.123 [DEBUG] [Thread-123889] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:40:56.123 [DEBUG] [Thread-123889] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:40:56.123 [DEBUG] [Thread-123889] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:40:56.124 [DEBUG] [Thread-123889] [transport.py] [_log()] client lang: <none>
2025-11-03T22:40:56.124 [DEBUG] [Thread-123889] [transport.py] [_log()] server lang: <none>
2025-11-03T22:40:56.124 [DEBUG] [Thread-123889] [transport.py] [_log()] kex follows: False
2025-11-03T22:40:56.124 [DEBUG] [Thread-123889] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:40:56.124 [DEBUG] [Thread-123889] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:40:56.124 [DEBUG] [Thread-123889] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:40:56.124 [DEBUG] [Thread-123889] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:40:56.124 [DEBUG] [Thread-123889] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:40:56.124 [DEBUG] [Thread-123889] [transport.py] [_log()] Compression: none
2025-11-03T22:40:56.124 [DEBUG] [Thread-123889] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:40:56.180 [DEBUG] [Thread-123889] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:40:56.181 [DEBUG] [Thread-123889] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:40:56.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:40:56.182 [DEBUG] [Thread-123889] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:40:56.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:40:56.237 [DEBUG] [Thread-123889] [transport.py] [_log()] userauth is OK
2025-11-03T22:40:56.238 [DEBUG] [Thread-123889] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:40:56.238 [DEBUG] [Thread-123889] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:40:56.238 [DEBUG] [Thread-123889] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:40:56.239 [DEBUG] [Thread-123889] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:40:56.258 [INFO] [Thread-123889] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:40:56.259 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:40:56.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:40:56.590 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:40:56.592 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:40:57.110 [DEBUG] [Thread-123889] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:40:57.110 [DEBUG] [Thread-123889] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:40:57.156 [DEBUG] [Thread-123889] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:40:57.156 [DEBUG] [Thread-123889] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:40:57.165 [DEBUG] [Thread-123889] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:40:57.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:40:57.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:40:57.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:40:57.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:40:57.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:40:57.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:40:57.197 [DEBUG] [Thread-123889] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:41:05.444 [DEBUG] [Thread-123891 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:41:08.258 [DEBUG] [Thread-123892 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:41:23.367 [DEBUG] [Thread-123893 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:41:27.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:41:27.230 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:41:27.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:41:27.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 41, 23), 31.35, 10.97, 0.0, 15.77, 19.36, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:41:27.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:41:23
2025-11-03T22:41:28.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:41:28.342 [DEBUG] [Thread-123894] [transport.py] [_log()] starting thread (client mode): 0xed10e50
2025-11-03T22:41:28.343 [DEBUG] [Thread-123894] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:41:28.355 [DEBUG] [Thread-123894] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:41:28.355 [INFO] [Thread-123894] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:41:28.359 [DEBUG] [Thread-123894] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:41:28.359 [DEBUG] [Thread-123894] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:41:28.360 [DEBUG] [Thread-123894] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:41:28.360 [DEBUG] [Thread-123894] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:41:28.360 [DEBUG] [Thread-123894] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:41:28.360 [DEBUG] [Thread-123894] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:41:28.360 [DEBUG] [Thread-123894] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:41:28.360 [DEBUG] [Thread-123894] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:41:28.360 [DEBUG] [Thread-123894] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:41:28.360 [DEBUG] [Thread-123894] [transport.py] [_log()] client lang: <none>
2025-11-03T22:41:28.360 [DEBUG] [Thread-123894] [transport.py] [_log()] server lang: <none>
2025-11-03T22:41:28.360 [DEBUG] [Thread-123894] [transport.py] [_log()] kex follows: False
2025-11-03T22:41:28.360 [DEBUG] [Thread-123894] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:41:28.361 [DEBUG] [Thread-123894] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:41:28.361 [DEBUG] [Thread-123894] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:41:28.361 [DEBUG] [Thread-123894] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:41:28.361 [DEBUG] [Thread-123894] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:41:28.361 [DEBUG] [Thread-123894] [transport.py] [_log()] Compression: none
2025-11-03T22:41:28.361 [DEBUG] [Thread-123894] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:41:28.387 [DEBUG] [Thread-123894] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:41:28.390 [DEBUG] [Thread-123894] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:41:28.392 [DEBUG] [Thread-123894] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:41:28.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:41:28.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:41:28.429 [DEBUG] [Thread-123894] [transport.py] [_log()] userauth is OK
2025-11-03T22:41:28.429 [DEBUG] [Thread-123894] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:41:28.430 [DEBUG] [Thread-123894] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:41:28.430 [DEBUG] [Thread-123894] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:41:28.430 [DEBUG] [Thread-123894] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:41:28.450 [INFO] [Thread-123894] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:41:28.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:41:29.018 [DEBUG] [Thread-123894] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:41:29.018 [DEBUG] [Thread-123894] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:41:29.028 [DEBUG] [Thread-123894] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:41:29.059 [DEBUG] [Thread-123894] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:41:29.059 [DEBUG] [Thread-123894] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:41:29.065 [DEBUG] [Thread-123894] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:41:29.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:41:29.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:41:29.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:41:29.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:41:29.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:41:29.089 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:41:29.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:41:29.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:41:29.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:41:29.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.861905 -999.00  +19.30  13.47     16   -6.80 1 1 1 1 1     0    0 27.07 42.23 ZNESW 14.0 13.5 314.0 19.6 19.4 -25.9 19.3 -24.8 19.1 -24.6 19.4 -25.5
2025-11-03T22:41:29.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:41:29.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:41:29.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.861905
2025-11-03T22:41:29.098 [DEBUG] [Thread-123894] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:41:29.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:41:29.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:41:29.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:41:29.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:41:29.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:41:29.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:41:23', tmtdew=31.35, humidity=10.97, cloud=0.0, wind=15.77, temperature=19.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:41:24', seeing=1.21, atlas_timestamp='2025-11-03T20:41:08.592', atlas_cloud=1, atlas_rain=1, zp_data=[0.01574999999999882, 0.04225000000000101, 0.14074999999999882, 0.04849999999999888, 0.0884999999999998, 0.1042500000000004, -0.1330000000000009, -0.07174999999999976, 0.01649999999999885, 0.07250000000000156, 0.11224999999999952, 0.09249999999999936, 0.07399999999999984, -0.04875000000000007, -0.1960000000000015, -0.21199999999999974, 0.08674999999999855, 0.1274999999999995, 0.17049999999999876, 0.12725000000000009, 0.1869999999999976, 0.09424999999999883, -0.01774999999999949, -0.22724999999999973, 0.1225000000000005, 0.13250000000000028, 0.19175000000000075, 0.25650000000000084, 0.17600000000000016, 0.09200000000000053, -0.015499999999999403, 0.07400000000000162, 0.06824999999999903], zp_timestamp='2025-11-03T20:37:00')
2025-11-03T22:41:29.201 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:41:29.214 [DEBUG] [Thread-123897] [transport.py] [_log()] starting thread (client mode): 0x11761270
2025-11-03T22:41:29.214 [DEBUG] [Thread-123897] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:41:29.229 [DEBUG] [Thread-123897] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:41:29.229 [INFO] [Thread-123897] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:41:29.237 [DEBUG] [Thread-123897] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:41:29.237 [DEBUG] [Thread-123897] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:41:29.238 [DEBUG] [Thread-123897] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:41:29.238 [DEBUG] [Thread-123897] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:41:29.238 [DEBUG] [Thread-123897] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:41:29.238 [DEBUG] [Thread-123897] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:41:29.238 [DEBUG] [Thread-123897] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:41:29.238 [DEBUG] [Thread-123897] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:41:29.238 [DEBUG] [Thread-123897] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:41:29.238 [DEBUG] [Thread-123897] [transport.py] [_log()] client lang: <none>
2025-11-03T22:41:29.238 [DEBUG] [Thread-123897] [transport.py] [_log()] server lang: <none>
2025-11-03T22:41:29.238 [DEBUG] [Thread-123897] [transport.py] [_log()] kex follows: False
2025-11-03T22:41:29.238 [DEBUG] [Thread-123897] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:41:29.238 [DEBUG] [Thread-123897] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:41:29.238 [DEBUG] [Thread-123897] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:41:29.238 [DEBUG] [Thread-123897] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:41:29.238 [DEBUG] [Thread-123897] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:41:29.238 [DEBUG] [Thread-123897] [transport.py] [_log()] Compression: none
2025-11-03T22:41:29.238 [DEBUG] [Thread-123897] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:41:29.298 [DEBUG] [Thread-123897] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:41:29.299 [DEBUG] [Thread-123897] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:41:29.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:41:29.300 [DEBUG] [Thread-123897] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:41:29.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:41:29.356 [DEBUG] [Thread-123897] [transport.py] [_log()] userauth is OK
2025-11-03T22:41:29.357 [DEBUG] [Thread-123897] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:41:29.357 [DEBUG] [Thread-123897] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:41:29.357 [DEBUG] [Thread-123897] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:41:29.357 [DEBUG] [Thread-123897] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:41:29.381 [INFO] [Thread-123897] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:41:29.381 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:41:29.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:41:30.217 [DEBUG] [Thread-123897] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:41:30.217 [DEBUG] [Thread-123897] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:41:30.268 [DEBUG] [Thread-123897] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:41:30.268 [DEBUG] [Thread-123897] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:41:30.280 [DEBUG] [Thread-123897] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:41:30.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:41:30.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:41:30.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:41:30.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:41:30.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:41:30.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:41:30.333 [DEBUG] [Thread-123897] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:41:38.432 [DEBUG] [Thread-123899 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:41:53.537 [DEBUG] [Thread-123900 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:41:56.795 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:41:56.796 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:42:00.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:42:00.324 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:42:00.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:42:01.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 41, 23), 31.35, 10.97, 0.0, 15.77, 19.36, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:42:01.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:41:23
2025-11-03T22:42:01.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:42:01.416 [DEBUG] [Thread-123901] [transport.py] [_log()] starting thread (client mode): 0xed5cf10
2025-11-03T22:42:01.416 [DEBUG] [Thread-123901] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:42:01.438 [DEBUG] [Thread-123901] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:42:01.438 [INFO] [Thread-123901] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:42:01.441 [DEBUG] [Thread-123901] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:42:01.441 [DEBUG] [Thread-123901] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:42:01.441 [DEBUG] [Thread-123901] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:42:01.441 [DEBUG] [Thread-123901] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:42:01.441 [DEBUG] [Thread-123901] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:42:01.441 [DEBUG] [Thread-123901] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:42:01.442 [DEBUG] [Thread-123901] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:42:01.442 [DEBUG] [Thread-123901] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:42:01.442 [DEBUG] [Thread-123901] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:42:01.442 [DEBUG] [Thread-123901] [transport.py] [_log()] client lang: <none>
2025-11-03T22:42:01.442 [DEBUG] [Thread-123901] [transport.py] [_log()] server lang: <none>
2025-11-03T22:42:01.442 [DEBUG] [Thread-123901] [transport.py] [_log()] kex follows: False
2025-11-03T22:42:01.442 [DEBUG] [Thread-123901] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:42:01.442 [DEBUG] [Thread-123901] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:42:01.442 [DEBUG] [Thread-123901] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:42:01.442 [DEBUG] [Thread-123901] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:42:01.442 [DEBUG] [Thread-123901] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:42:01.442 [DEBUG] [Thread-123901] [transport.py] [_log()] Compression: none
2025-11-03T22:42:01.442 [DEBUG] [Thread-123901] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:42:01.457 [DEBUG] [Thread-123901] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:42:01.457 [DEBUG] [Thread-123901] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:42:01.457 [DEBUG] [Thread-123901] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:42:01.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:42:01.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:42:01.458 [DEBUG] [Thread-123901] [transport.py] [_log()] userauth is OK
2025-11-03T22:42:01.458 [DEBUG] [Thread-123901] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:42:01.458 [DEBUG] [Thread-123901] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:42:01.458 [DEBUG] [Thread-123901] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:42:01.458 [DEBUG] [Thread-123901] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:42:01.468 [INFO] [Thread-123901] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:42:01.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:42:02.127 [DEBUG] [Thread-123901] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:42:02.127 [DEBUG] [Thread-123901] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:42:02.127 [DEBUG] [Thread-123901] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:42:02.168 [DEBUG] [Thread-123901] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:42:02.168 [DEBUG] [Thread-123901] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:42:02.170 [DEBUG] [Thread-123901] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:42:02.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:42:02.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:42:02.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:42:02.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:42:02.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:42:02.189 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:42:02.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:42:02.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:42:02.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:42:02.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.862252 -999.00  +19.30  16.57     16   -6.80 1 1 1 1 1     0    0 27.38 46.11 ZNESW 14.7 16.6 308.6 18.8 19.4 -25.8 19.3 -24.9 19.1 -24.2 19.4 -25.3
2025-11-03T22:42:02.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:42:02.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:42:02.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.862252
2025-11-03T22:42:02.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:42:02.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:42:02.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:42:02.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:42:02.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:42:02.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:41:23', tmtdew=31.35, humidity=10.97, cloud=0.0, wind=15.77, temperature=19.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:41:57', seeing=1.21, atlas_timestamp='2025-11-03T20:41:38.573', atlas_cloud=1, atlas_rain=1, zp_data=[0.013249999999999318, 0.04225000000000101, 0.1067499999999999, 0.010999999999999233, 0.0035000000000007248, 0.034250000000000114, -0.16800000000000104, -0.22524999999999906, 0.0019999999999988916, -0.07099999999999973, 0.10524999999999984, 0.04600000000000115, 0.04899999999999949, 0.012249999999999872, -0.22550000000000026, -0.29850000000000065, 0.10074999999999967, 0.1225000000000005, 0.11350000000000016, 0.07674999999999876, 0.16949999999999932, 0.0962499999999995, -0.31325000000000003, -0.38925000000000054, 0.06349999999999945, 0.13049999999999962, 0.19475000000000087, 0.21199999999999974, 0.20199999999999996, 0.12200000000000166, -0.20199999999999818, -0.03999999999999915, 0.07074999999999854], zp_timestamp='2025-11-03T20:40:00')
2025-11-03T22:42:02.191 [DEBUG] [Thread-123901] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:42:02.266 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:42:02.277 [DEBUG] [Thread-123904] [transport.py] [_log()] starting thread (client mode): 0xed5f730
2025-11-03T22:42:02.278 [DEBUG] [Thread-123904] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:42:02.292 [DEBUG] [Thread-123904] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:42:02.292 [INFO] [Thread-123904] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:42:02.301 [DEBUG] [Thread-123904] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:42:02.301 [DEBUG] [Thread-123904] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:42:02.301 [DEBUG] [Thread-123904] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:42:02.301 [DEBUG] [Thread-123904] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:42:02.301 [DEBUG] [Thread-123904] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:42:02.301 [DEBUG] [Thread-123904] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:42:02.301 [DEBUG] [Thread-123904] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:42:02.301 [DEBUG] [Thread-123904] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:42:02.301 [DEBUG] [Thread-123904] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:42:02.301 [DEBUG] [Thread-123904] [transport.py] [_log()] client lang: <none>
2025-11-03T22:42:02.301 [DEBUG] [Thread-123904] [transport.py] [_log()] server lang: <none>
2025-11-03T22:42:02.301 [DEBUG] [Thread-123904] [transport.py] [_log()] kex follows: False
2025-11-03T22:42:02.301 [DEBUG] [Thread-123904] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:42:02.301 [DEBUG] [Thread-123904] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:42:02.301 [DEBUG] [Thread-123904] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:42:02.301 [DEBUG] [Thread-123904] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:42:02.301 [DEBUG] [Thread-123904] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:42:02.301 [DEBUG] [Thread-123904] [transport.py] [_log()] Compression: none
2025-11-03T22:42:02.301 [DEBUG] [Thread-123904] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:42:02.360 [DEBUG] [Thread-123904] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:42:02.360 [DEBUG] [Thread-123904] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:42:02.360 [DEBUG] [Thread-123904] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:42:02.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:42:02.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:42:02.427 [DEBUG] [Thread-123904] [transport.py] [_log()] userauth is OK
2025-11-03T22:42:02.427 [DEBUG] [Thread-123904] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:42:02.427 [DEBUG] [Thread-123904] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:42:02.427 [DEBUG] [Thread-123904] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:42:02.427 [DEBUG] [Thread-123904] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:42:02.443 [INFO] [Thread-123904] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:42:02.444 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:42:02.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:42:03.285 [DEBUG] [Thread-123904] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:42:03.285 [DEBUG] [Thread-123904] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:42:03.334 [DEBUG] [Thread-123904] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:42:03.335 [DEBUG] [Thread-123904] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:42:03.345 [DEBUG] [Thread-123904] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:42:03.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:42:03.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:42:03.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:42:03.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:42:03.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:42:03.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:42:03.384 [DEBUG] [Thread-123904] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:42:05.800 [DEBUG] [Thread-123906 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:42:08.564 [DEBUG] [Thread-123907 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:42:23.625 [DEBUG] [Thread-123908 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:42:33.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:42:33.408 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:42:33.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:42:35.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 41, 56), 31.23, 10.98, 0.0, 15.62, 19.28, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:42:35.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:41:56
2025-11-03T22:42:35.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:42:35.856 [DEBUG] [Thread-123909] [transport.py] [_log()] starting thread (client mode): 0xeda3a60
2025-11-03T22:42:35.866 [DEBUG] [Thread-123909] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:42:35.868 [DEBUG] [Thread-123909] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:42:35.868 [INFO] [Thread-123909] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:42:35.888 [DEBUG] [Thread-123909] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:42:35.888 [DEBUG] [Thread-123909] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:42:35.889 [DEBUG] [Thread-123909] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:42:35.889 [DEBUG] [Thread-123909] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:42:35.889 [DEBUG] [Thread-123909] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:42:35.889 [DEBUG] [Thread-123909] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:42:35.889 [DEBUG] [Thread-123909] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:42:35.889 [DEBUG] [Thread-123909] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:42:35.889 [DEBUG] [Thread-123909] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:42:35.889 [DEBUG] [Thread-123909] [transport.py] [_log()] client lang: <none>
2025-11-03T22:42:35.889 [DEBUG] [Thread-123909] [transport.py] [_log()] server lang: <none>
2025-11-03T22:42:35.889 [DEBUG] [Thread-123909] [transport.py] [_log()] kex follows: False
2025-11-03T22:42:35.889 [DEBUG] [Thread-123909] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:42:35.889 [DEBUG] [Thread-123909] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:42:35.889 [DEBUG] [Thread-123909] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:42:35.889 [DEBUG] [Thread-123909] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:42:35.890 [DEBUG] [Thread-123909] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:42:35.890 [DEBUG] [Thread-123909] [transport.py] [_log()] Compression: none
2025-11-03T22:42:35.890 [DEBUG] [Thread-123909] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:42:35.951 [DEBUG] [Thread-123909] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:42:35.967 [DEBUG] [Thread-123909] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:42:35.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:42:35.982 [DEBUG] [Thread-123909] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:42:35.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:42:36.001 [DEBUG] [Thread-123909] [transport.py] [_log()] userauth is OK
2025-11-03T22:42:36.001 [DEBUG] [Thread-123909] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:42:36.001 [DEBUG] [Thread-123909] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:42:36.001 [DEBUG] [Thread-123909] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:42:36.001 [DEBUG] [Thread-123909] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:42:36.049 [INFO] [Thread-123909] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:42:36.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:42:36.699 [DEBUG] [Thread-123909] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:42:36.699 [DEBUG] [Thread-123909] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:42:36.706 [DEBUG] [Thread-123909] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:42:36.742 [DEBUG] [Thread-123909] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:42:36.742 [DEBUG] [Thread-123909] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:42:36.748 [DEBUG] [Thread-123909] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:42:36.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:42:36.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:42:36.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:42:36.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:42:36.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:42:36.803 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:42:36.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:42:36.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:42:36.811 [DEBUG] [Thread-123909] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:42:36.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:42:36.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.862600 -999.00  +19.20  13.05     16   -6.80 1 1 1 1 1     0    0 27.23 41.78 ZNESW 17.3 13.1 308.2 20.5 19.4 -25.9 19.3 -24.9 19.1 -24.5 19.4 -25.5
2025-11-03T22:42:36.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:42:36.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:42:36.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.862600
2025-11-03T22:42:36.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:42:36.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:42:36.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:42:36.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:42:36.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:42:36.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:41:56', tmtdew=31.23, humidity=10.98, cloud=0.0, wind=15.62, temperature=19.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:42:30', seeing=1.08, atlas_timestamp='2025-11-03T20:42:08.640', atlas_cloud=1, atlas_rain=1, zp_data=[0.013249999999999318, 0.04225000000000101, 0.1067499999999999, 0.010999999999999233, 0.0035000000000007248, 0.034250000000000114, -0.16800000000000104, -0.22524999999999906, 0.0019999999999988916, -0.07099999999999973, 0.10524999999999984, 0.04600000000000115, 0.04899999999999949, 0.012249999999999872, -0.22550000000000026, -0.29850000000000065, 0.10074999999999967, 0.1225000000000005, 0.11350000000000016, 0.07674999999999876, 0.16949999999999932, 0.0962499999999995, -0.31325000000000003, -0.38925000000000054, 0.06349999999999945, 0.13049999999999962, 0.19475000000000087, 0.21199999999999974, 0.20199999999999996, 0.12200000000000166, -0.20199999999999818, -0.03999999999999915, 0.07074999999999854], zp_timestamp='2025-11-03T20:40:00')
2025-11-03T22:42:36.953 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:42:36.967 [DEBUG] [Thread-123912] [transport.py] [_log()] starting thread (client mode): 0xeda3b50
2025-11-03T22:42:36.967 [DEBUG] [Thread-123912] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:42:36.985 [DEBUG] [Thread-123912] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:42:36.986 [INFO] [Thread-123912] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:42:36.995 [DEBUG] [Thread-123912] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:42:36.996 [DEBUG] [Thread-123912] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:42:36.996 [DEBUG] [Thread-123912] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:42:36.996 [DEBUG] [Thread-123912] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:42:36.996 [DEBUG] [Thread-123912] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:42:36.996 [DEBUG] [Thread-123912] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:42:36.996 [DEBUG] [Thread-123912] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:42:36.996 [DEBUG] [Thread-123912] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:42:36.996 [DEBUG] [Thread-123912] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:42:36.997 [DEBUG] [Thread-123912] [transport.py] [_log()] client lang: <none>
2025-11-03T22:42:36.997 [DEBUG] [Thread-123912] [transport.py] [_log()] server lang: <none>
2025-11-03T22:42:36.997 [DEBUG] [Thread-123912] [transport.py] [_log()] kex follows: False
2025-11-03T22:42:36.997 [DEBUG] [Thread-123912] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:42:36.997 [DEBUG] [Thread-123912] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:42:36.998 [DEBUG] [Thread-123912] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:42:36.998 [DEBUG] [Thread-123912] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:42:36.998 [DEBUG] [Thread-123912] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:42:36.998 [DEBUG] [Thread-123912] [transport.py] [_log()] Compression: none
2025-11-03T22:42:36.998 [DEBUG] [Thread-123912] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:42:37.054 [DEBUG] [Thread-123912] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:42:37.054 [DEBUG] [Thread-123912] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:42:37.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:42:37.055 [DEBUG] [Thread-123912] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:42:37.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:42:37.113 [DEBUG] [Thread-123912] [transport.py] [_log()] userauth is OK
2025-11-03T22:42:37.113 [DEBUG] [Thread-123912] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:42:37.113 [DEBUG] [Thread-123912] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:42:37.114 [DEBUG] [Thread-123912] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:42:37.114 [DEBUG] [Thread-123912] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:42:37.135 [INFO] [Thread-123912] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:42:37.136 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:42:37.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:42:38.014 [DEBUG] [Thread-123912] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:42:38.014 [DEBUG] [Thread-123912] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:42:38.064 [DEBUG] [Thread-123912] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:42:38.064 [DEBUG] [Thread-123912] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:42:38.076 [DEBUG] [Thread-123912] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:42:38.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:42:38.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:42:38.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:42:38.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:42:38.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:42:38.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:42:38.130 [DEBUG] [Thread-123912] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:42:38.660 [DEBUG] [Thread-123914 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:42:53.712 [DEBUG] [Thread-123915 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:42:57.008 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:42:57.010 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:43:06.005 [DEBUG] [Thread-123916 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:43:06.501 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:43:08.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:43:08.157 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:43:08.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:43:08.742 [DEBUG] [Thread-123917 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:43:08.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 43, 3), 31.14, 11.05, 0.0, 15.9, 19.21, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:43:08.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:43:03
2025-11-03T22:43:09.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:43:09.197 [DEBUG] [Thread-123918] [transport.py] [_log()] starting thread (client mode): 0xeda2b00
2025-11-03T22:43:09.197 [DEBUG] [Thread-123918] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:43:09.216 [DEBUG] [Thread-123918] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:43:09.217 [INFO] [Thread-123918] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:43:09.220 [DEBUG] [Thread-123918] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:43:09.221 [DEBUG] [Thread-123918] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:43:09.221 [DEBUG] [Thread-123918] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:43:09.221 [DEBUG] [Thread-123918] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:43:09.221 [DEBUG] [Thread-123918] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:43:09.221 [DEBUG] [Thread-123918] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:43:09.221 [DEBUG] [Thread-123918] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:43:09.221 [DEBUG] [Thread-123918] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:43:09.221 [DEBUG] [Thread-123918] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:43:09.221 [DEBUG] [Thread-123918] [transport.py] [_log()] client lang: <none>
2025-11-03T22:43:09.221 [DEBUG] [Thread-123918] [transport.py] [_log()] server lang: <none>
2025-11-03T22:43:09.221 [DEBUG] [Thread-123918] [transport.py] [_log()] kex follows: False
2025-11-03T22:43:09.221 [DEBUG] [Thread-123918] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:43:09.221 [DEBUG] [Thread-123918] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:43:09.221 [DEBUG] [Thread-123918] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:43:09.221 [DEBUG] [Thread-123918] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:43:09.221 [DEBUG] [Thread-123918] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:43:09.221 [DEBUG] [Thread-123918] [transport.py] [_log()] Compression: none
2025-11-03T22:43:09.221 [DEBUG] [Thread-123918] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:43:09.239 [DEBUG] [Thread-123918] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:43:09.240 [DEBUG] [Thread-123918] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:43:09.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:43:09.241 [DEBUG] [Thread-123918] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:43:09.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:43:09.243 [DEBUG] [Thread-123918] [transport.py] [_log()] userauth is OK
2025-11-03T22:43:09.243 [DEBUG] [Thread-123918] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:43:09.243 [DEBUG] [Thread-123918] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:43:09.244 [DEBUG] [Thread-123918] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:43:09.244 [DEBUG] [Thread-123918] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:43:09.269 [INFO] [Thread-123918] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:43:09.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:43:09.878 [DEBUG] [Thread-123918] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:43:09.878 [DEBUG] [Thread-123918] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:43:09.879 [DEBUG] [Thread-123918] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:43:09.919 [DEBUG] [Thread-123918] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:43:09.919 [DEBUG] [Thread-123918] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:43:09.923 [DEBUG] [Thread-123918] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:43:09.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:43:09.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:43:09.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:43:09.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:43:09.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:43:09.947 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:43:09.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:43:09.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:43:09.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:43:09.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.862947 -999.00  +19.20  14.64     16   -6.90 1 1 1 1 1     0    0 27.32 40.43 ZNESW 13.1 14.6 311.8 21.2 19.4 -25.9 19.3 -24.9 19.1 -24.6 19.4 -25.6
2025-11-03T22:43:09.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:43:09.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:43:09.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.862947
2025-11-03T22:43:09.956 [DEBUG] [Thread-123918] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:43:09.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:43:09.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:43:09.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:43:09.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:43:09.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:43:09.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:43:03', tmtdew=31.14, humidity=11.05, cloud=0.0, wind=15.9, temperature=19.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:43:04', seeing=1.21, atlas_timestamp='2025-11-03T20:42:38.621', atlas_cloud=1, atlas_rain=1, zp_data=[0.013249999999999318, 0.04225000000000101, 0.1067499999999999, 0.010999999999999233, 0.0035000000000007248, 0.034250000000000114, -0.16800000000000104, -0.22524999999999906, 0.0019999999999988916, -0.07099999999999973, 0.10524999999999984, 0.04600000000000115, 0.04899999999999949, 0.012249999999999872, -0.22550000000000026, -0.29850000000000065, 0.10074999999999967, 0.1225000000000005, 0.11350000000000016, 0.07674999999999876, 0.16949999999999932, 0.0962499999999995, -0.31325000000000003, -0.38925000000000054, 0.06349999999999945, 0.13049999999999962, 0.19475000000000087, 0.21199999999999974, 0.20199999999999996, 0.12200000000000166, -0.20199999999999818, -0.03999999999999915, 0.07074999999999854], zp_timestamp='2025-11-03T20:40:00')
2025-11-03T22:43:10.043 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:43:10.056 [DEBUG] [Thread-123921] [transport.py] [_log()] starting thread (client mode): 0xed36530
2025-11-03T22:43:10.056 [DEBUG] [Thread-123921] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:43:10.071 [DEBUG] [Thread-123921] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:43:10.071 [INFO] [Thread-123921] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:43:10.080 [DEBUG] [Thread-123921] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:43:10.080 [DEBUG] [Thread-123921] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:43:10.080 [DEBUG] [Thread-123921] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:43:10.080 [DEBUG] [Thread-123921] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:43:10.080 [DEBUG] [Thread-123921] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:43:10.080 [DEBUG] [Thread-123921] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:43:10.080 [DEBUG] [Thread-123921] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:43:10.081 [DEBUG] [Thread-123921] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:43:10.081 [DEBUG] [Thread-123921] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:43:10.081 [DEBUG] [Thread-123921] [transport.py] [_log()] client lang: <none>
2025-11-03T22:43:10.081 [DEBUG] [Thread-123921] [transport.py] [_log()] server lang: <none>
2025-11-03T22:43:10.081 [DEBUG] [Thread-123921] [transport.py] [_log()] kex follows: False
2025-11-03T22:43:10.081 [DEBUG] [Thread-123921] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:43:10.081 [DEBUG] [Thread-123921] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:43:10.081 [DEBUG] [Thread-123921] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:43:10.081 [DEBUG] [Thread-123921] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:43:10.081 [DEBUG] [Thread-123921] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:43:10.081 [DEBUG] [Thread-123921] [transport.py] [_log()] Compression: none
2025-11-03T22:43:10.081 [DEBUG] [Thread-123921] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:43:10.135 [DEBUG] [Thread-123921] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:43:10.135 [DEBUG] [Thread-123921] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:43:10.136 [DEBUG] [Thread-123921] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:43:10.136 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:43:10.136 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:43:10.192 [DEBUG] [Thread-123921] [transport.py] [_log()] userauth is OK
2025-11-03T22:43:10.192 [DEBUG] [Thread-123921] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:43:10.192 [DEBUG] [Thread-123921] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:43:10.192 [DEBUG] [Thread-123921] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:43:10.192 [DEBUG] [Thread-123921] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:43:10.206 [INFO] [Thread-123921] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:43:10.207 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:43:10.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:43:11.037 [DEBUG] [Thread-123921] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:43:11.037 [DEBUG] [Thread-123921] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:43:11.085 [DEBUG] [Thread-123921] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:43:11.086 [DEBUG] [Thread-123921] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:43:11.096 [DEBUG] [Thread-123921] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:43:11.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:43:11.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:43:11.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:43:11.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:43:11.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:43:11.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:43:11.144 [DEBUG] [Thread-123921] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:43:14.524 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:43:18.577 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:43:23.771 [DEBUG] [Thread-123923 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:43:38.807 [DEBUG] [Thread-123924 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:43:41.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:43:41.165 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:43:41.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:43:41.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 43, 36), 31.15, 11.05, 0.0, 16.11, 19.26, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:43:41.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:43:36
2025-11-03T22:43:42.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:43:42.187 [DEBUG] [Thread-123925] [transport.py] [_log()] starting thread (client mode): 0x11762980
2025-11-03T22:43:42.187 [DEBUG] [Thread-123925] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:43:42.207 [DEBUG] [Thread-123925] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:43:42.207 [INFO] [Thread-123925] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:43:42.210 [DEBUG] [Thread-123925] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:43:42.211 [DEBUG] [Thread-123925] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:43:42.211 [DEBUG] [Thread-123925] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:43:42.211 [DEBUG] [Thread-123925] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:43:42.211 [DEBUG] [Thread-123925] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:43:42.211 [DEBUG] [Thread-123925] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:43:42.211 [DEBUG] [Thread-123925] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:43:42.211 [DEBUG] [Thread-123925] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:43:42.211 [DEBUG] [Thread-123925] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:43:42.211 [DEBUG] [Thread-123925] [transport.py] [_log()] client lang: <none>
2025-11-03T22:43:42.211 [DEBUG] [Thread-123925] [transport.py] [_log()] server lang: <none>
2025-11-03T22:43:42.211 [DEBUG] [Thread-123925] [transport.py] [_log()] kex follows: False
2025-11-03T22:43:42.211 [DEBUG] [Thread-123925] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:43:42.211 [DEBUG] [Thread-123925] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:43:42.212 [DEBUG] [Thread-123925] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:43:42.220 [DEBUG] [Thread-123925] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:43:42.220 [DEBUG] [Thread-123925] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:43:42.221 [DEBUG] [Thread-123925] [transport.py] [_log()] Compression: none
2025-11-03T22:43:42.221 [DEBUG] [Thread-123925] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:43:42.239 [DEBUG] [Thread-123925] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:43:42.240 [DEBUG] [Thread-123925] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:43:42.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:43:42.241 [DEBUG] [Thread-123925] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:43:42.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:43:42.243 [DEBUG] [Thread-123925] [transport.py] [_log()] userauth is OK
2025-11-03T22:43:42.244 [DEBUG] [Thread-123925] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:43:42.244 [DEBUG] [Thread-123925] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:43:42.244 [DEBUG] [Thread-123925] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:43:42.244 [DEBUG] [Thread-123925] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:43:42.268 [INFO] [Thread-123925] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:43:42.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:43:42.914 [DEBUG] [Thread-123925] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:43:42.915 [DEBUG] [Thread-123925] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:43:42.915 [DEBUG] [Thread-123925] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:43:42.956 [DEBUG] [Thread-123925] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:43:42.956 [DEBUG] [Thread-123925] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:43:42.959 [DEBUG] [Thread-123925] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:43:42.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:43:42.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:43:42.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:43:42.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:43:42.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:43:42.983 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:43:42.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:43:42.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:43:42.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:43:42.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.863294 -999.00  +19.30  17.16     16   -6.90 1 1 1 1 1     0    0 27.40 39.01 ZNESW 14.5 17.2 299.0 20.0 19.4 -25.6 19.3 -24.7 19.1 -24.4 19.4 -25.5
2025-11-03T22:43:42.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:43:42.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:43:42.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.863294
2025-11-03T22:43:42.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:43:42.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:43:42.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:43:42.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:43:42.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:43:42.986 [DEBUG] [Thread-123925] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:43:42.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:43:36', tmtdew=31.15, humidity=11.05, cloud=0.0, wind=16.11, temperature=19.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:43:37', seeing=1.21, atlas_timestamp='2025-11-03T20:43:08.602', atlas_cloud=1, atlas_rain=1, zp_data=[0.013249999999999318, 0.04225000000000101, 0.1067499999999999, 0.010999999999999233, 0.0035000000000007248, 0.034250000000000114, -0.16800000000000104, -0.22524999999999906, 0.0019999999999988916, -0.07099999999999973, 0.10524999999999984, 0.04600000000000115, 0.04899999999999949, 0.012249999999999872, -0.22550000000000026, -0.29850000000000065, 0.10074999999999967, 0.1225000000000005, 0.11350000000000016, 0.07674999999999876, 0.16949999999999932, 0.0962499999999995, -0.31325000000000003, -0.38925000000000054, 0.06349999999999945, 0.13049999999999962, 0.19475000000000087, 0.21199999999999974, 0.20199999999999996, 0.12200000000000166, -0.20199999999999818, -0.03999999999999915, 0.07074999999999854], zp_timestamp='2025-11-03T20:40:00')
2025-11-03T22:43:43.067 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:43:43.083 [DEBUG] [Thread-123928] [transport.py] [_log()] starting thread (client mode): 0xeda3550
2025-11-03T22:43:43.083 [DEBUG] [Thread-123928] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:43:43.103 [DEBUG] [Thread-123928] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:43:43.103 [INFO] [Thread-123928] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:43:43.119 [DEBUG] [Thread-123928] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:43:43.120 [DEBUG] [Thread-123928] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:43:43.120 [DEBUG] [Thread-123928] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:43:43.120 [DEBUG] [Thread-123928] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:43:43.120 [DEBUG] [Thread-123928] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:43:43.120 [DEBUG] [Thread-123928] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:43:43.120 [DEBUG] [Thread-123928] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:43:43.120 [DEBUG] [Thread-123928] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:43:43.120 [DEBUG] [Thread-123928] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:43:43.120 [DEBUG] [Thread-123928] [transport.py] [_log()] client lang: <none>
2025-11-03T22:43:43.120 [DEBUG] [Thread-123928] [transport.py] [_log()] server lang: <none>
2025-11-03T22:43:43.120 [DEBUG] [Thread-123928] [transport.py] [_log()] kex follows: False
2025-11-03T22:43:43.120 [DEBUG] [Thread-123928] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:43:43.120 [DEBUG] [Thread-123928] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:43:43.121 [DEBUG] [Thread-123928] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:43:43.121 [DEBUG] [Thread-123928] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:43:43.121 [DEBUG] [Thread-123928] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:43:43.121 [DEBUG] [Thread-123928] [transport.py] [_log()] Compression: none
2025-11-03T22:43:43.121 [DEBUG] [Thread-123928] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:43:43.181 [DEBUG] [Thread-123928] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:43:43.181 [DEBUG] [Thread-123928] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:43:43.182 [DEBUG] [Thread-123928] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:43:43.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:43:43.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:43:43.237 [DEBUG] [Thread-123928] [transport.py] [_log()] userauth is OK
2025-11-03T22:43:43.237 [DEBUG] [Thread-123928] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:43:43.237 [DEBUG] [Thread-123928] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:43:43.237 [DEBUG] [Thread-123928] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:43:43.237 [DEBUG] [Thread-123928] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:43:43.257 [INFO] [Thread-123928] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:43:43.257 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:43:43.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:43:44.072 [DEBUG] [Thread-123928] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:43:44.072 [DEBUG] [Thread-123928] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:43:44.120 [DEBUG] [Thread-123928] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:43:44.120 [DEBUG] [Thread-123928] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:43:44.130 [DEBUG] [Thread-123928] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:43:44.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:43:44.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:43:44.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:43:44.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:43:44.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:43:44.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:43:44.176 [DEBUG] [Thread-123928] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:43:53.838 [DEBUG] [Thread-123930 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:43:57.234 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:43:57.235 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:44:06.254 [DEBUG] [Thread-123931 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:44:08.881 [DEBUG] [Thread-123932 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:44:14.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:44:14.180 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:44:14.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:44:15.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 44, 8), 31.07, 11.12, 0.0, 15.37, 19.23, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:44:15.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:44:08
2025-11-03T22:44:16.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:44:16.305 [DEBUG] [Thread-123933] [transport.py] [_log()] starting thread (client mode): 0xed5cfd0
2025-11-03T22:44:16.305 [DEBUG] [Thread-123933] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:44:16.319 [DEBUG] [Thread-123933] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:44:16.319 [INFO] [Thread-123933] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:44:16.323 [DEBUG] [Thread-123933] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:44:16.323 [DEBUG] [Thread-123933] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:44:16.323 [DEBUG] [Thread-123933] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:44:16.323 [DEBUG] [Thread-123933] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:44:16.323 [DEBUG] [Thread-123933] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:44:16.323 [DEBUG] [Thread-123933] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:44:16.323 [DEBUG] [Thread-123933] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:44:16.323 [DEBUG] [Thread-123933] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:44:16.323 [DEBUG] [Thread-123933] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:44:16.323 [DEBUG] [Thread-123933] [transport.py] [_log()] client lang: <none>
2025-11-03T22:44:16.323 [DEBUG] [Thread-123933] [transport.py] [_log()] server lang: <none>
2025-11-03T22:44:16.323 [DEBUG] [Thread-123933] [transport.py] [_log()] kex follows: False
2025-11-03T22:44:16.323 [DEBUG] [Thread-123933] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:44:16.323 [DEBUG] [Thread-123933] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:44:16.323 [DEBUG] [Thread-123933] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:44:16.325 [DEBUG] [Thread-123933] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:44:16.325 [DEBUG] [Thread-123933] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:44:16.325 [DEBUG] [Thread-123933] [transport.py] [_log()] Compression: none
2025-11-03T22:44:16.325 [DEBUG] [Thread-123933] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:44:16.345 [DEBUG] [Thread-123933] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:44:16.346 [DEBUG] [Thread-123933] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:44:16.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:44:16.347 [DEBUG] [Thread-123933] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:44:16.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:44:16.389 [DEBUG] [Thread-123933] [transport.py] [_log()] userauth is OK
2025-11-03T22:44:16.389 [DEBUG] [Thread-123933] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:44:16.390 [DEBUG] [Thread-123933] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:44:16.390 [DEBUG] [Thread-123933] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:44:16.390 [DEBUG] [Thread-123933] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:44:16.412 [INFO] [Thread-123933] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:44:16.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:44:17.056 [DEBUG] [Thread-123933] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:44:17.056 [DEBUG] [Thread-123933] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:44:17.056 [DEBUG] [Thread-123933] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:44:17.098 [DEBUG] [Thread-123933] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:44:17.098 [DEBUG] [Thread-123933] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:44:17.100 [DEBUG] [Thread-123933] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:44:17.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:44:17.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:44:17.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:44:17.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:44:17.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:44:17.120 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:44:17.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:44:17.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:44:17.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:44:17.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.863989 -999.00  +19.20  14.80     16   -6.80 1 1 1 1 1     0    0 27.12 34.28 ZNESW 16.1 14.8 303.9 20.4 19.4 -25.8 19.3 -24.8 19.1 -24.6 19.3 -25.4
2025-11-03T22:44:17.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:44:17.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:44:17.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.863989
2025-11-03T22:44:17.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:44:17.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:44:17.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:44:17.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:44:17.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:44:17.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:44:08', tmtdew=31.07, humidity=11.12, cloud=0.0, wind=15.37, temperature=19.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:44:09', seeing=1.02, atlas_timestamp='2025-11-03T20:44:08.650', atlas_cloud=1, atlas_rain=1, zp_data=[0.013249999999999318, 0.04225000000000101, 0.1067499999999999, 0.010999999999999233, 0.0035000000000007248, 0.034250000000000114, -0.16800000000000104, -0.22524999999999906, 0.0019999999999988916, -0.07099999999999973, 0.10524999999999984, 0.04600000000000115, 0.04899999999999949, 0.012249999999999872, -0.22550000000000026, -0.29850000000000065, 0.10074999999999967, 0.1225000000000005, 0.11350000000000016, 0.07674999999999876, 0.16949999999999932, 0.0962499999999995, -0.31325000000000003, -0.38925000000000054, 0.06349999999999945, 0.13049999999999962, 0.19475000000000087, 0.21199999999999974, 0.20199999999999996, 0.12200000000000166, -0.20199999999999818, -0.03999999999999915, 0.07074999999999854], zp_timestamp='2025-11-03T20:40:00')
2025-11-03T22:44:17.124 [DEBUG] [Thread-123933] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:44:17.196 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:44:17.212 [DEBUG] [Thread-123936] [transport.py] [_log()] starting thread (client mode): 0x1174c7f0
2025-11-03T22:44:17.212 [DEBUG] [Thread-123936] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:44:17.230 [DEBUG] [Thread-123936] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:44:17.230 [INFO] [Thread-123936] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:44:17.239 [DEBUG] [Thread-123936] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:44:17.240 [DEBUG] [Thread-123936] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:44:17.240 [DEBUG] [Thread-123936] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:44:17.240 [DEBUG] [Thread-123936] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:44:17.240 [DEBUG] [Thread-123936] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:44:17.241 [DEBUG] [Thread-123936] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:44:17.241 [DEBUG] [Thread-123936] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:44:17.241 [DEBUG] [Thread-123936] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:44:17.241 [DEBUG] [Thread-123936] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:44:17.241 [DEBUG] [Thread-123936] [transport.py] [_log()] client lang: <none>
2025-11-03T22:44:17.241 [DEBUG] [Thread-123936] [transport.py] [_log()] server lang: <none>
2025-11-03T22:44:17.241 [DEBUG] [Thread-123936] [transport.py] [_log()] kex follows: False
2025-11-03T22:44:17.241 [DEBUG] [Thread-123936] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:44:17.241 [DEBUG] [Thread-123936] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:44:17.241 [DEBUG] [Thread-123936] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:44:17.241 [DEBUG] [Thread-123936] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:44:17.241 [DEBUG] [Thread-123936] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:44:17.241 [DEBUG] [Thread-123936] [transport.py] [_log()] Compression: none
2025-11-03T22:44:17.241 [DEBUG] [Thread-123936] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:44:17.307 [DEBUG] [Thread-123936] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:44:17.308 [DEBUG] [Thread-123936] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:44:17.309 [DEBUG] [Thread-123936] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:44:17.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:44:17.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:44:17.373 [DEBUG] [Thread-123936] [transport.py] [_log()] userauth is OK
2025-11-03T22:44:17.373 [DEBUG] [Thread-123936] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:44:17.373 [DEBUG] [Thread-123936] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:44:17.373 [DEBUG] [Thread-123936] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:44:17.373 [DEBUG] [Thread-123936] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:44:17.395 [INFO] [Thread-123936] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:44:17.395 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:44:17.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:44:18.261 [DEBUG] [Thread-123936] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:44:18.261 [DEBUG] [Thread-123936] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:44:18.310 [DEBUG] [Thread-123936] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:44:18.310 [DEBUG] [Thread-123936] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:44:18.321 [DEBUG] [Thread-123936] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:44:18.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:44:18.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:44:18.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:44:18.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:44:18.361 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:44:18.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:44:18.369 [DEBUG] [Thread-123936] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:44:23.912 [DEBUG] [Thread-123938 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:44:38.967 [DEBUG] [Thread-123939 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:44:48.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:44:48.366 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:44:48.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:44:49.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 44, 41), 31.02, 11.15, 0.0, 16.04, 19.18, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:44:49.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:44:41
2025-11-03T22:44:49.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:44:49.706 [DEBUG] [Thread-123940] [transport.py] [_log()] starting thread (client mode): 0xed5d750
2025-11-03T22:44:49.706 [DEBUG] [Thread-123940] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:44:49.719 [DEBUG] [Thread-123940] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:44:49.719 [INFO] [Thread-123940] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:44:49.722 [DEBUG] [Thread-123940] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:44:49.722 [DEBUG] [Thread-123940] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:44:49.723 [DEBUG] [Thread-123940] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:44:49.723 [DEBUG] [Thread-123940] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:44:49.723 [DEBUG] [Thread-123940] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:44:49.723 [DEBUG] [Thread-123940] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:44:49.723 [DEBUG] [Thread-123940] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:44:49.724 [DEBUG] [Thread-123940] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:44:49.724 [DEBUG] [Thread-123940] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:44:49.724 [DEBUG] [Thread-123940] [transport.py] [_log()] client lang: <none>
2025-11-03T22:44:49.724 [DEBUG] [Thread-123940] [transport.py] [_log()] server lang: <none>
2025-11-03T22:44:49.724 [DEBUG] [Thread-123940] [transport.py] [_log()] kex follows: False
2025-11-03T22:44:49.724 [DEBUG] [Thread-123940] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:44:49.724 [DEBUG] [Thread-123940] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:44:49.724 [DEBUG] [Thread-123940] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:44:49.724 [DEBUG] [Thread-123940] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:44:49.724 [DEBUG] [Thread-123940] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:44:49.724 [DEBUG] [Thread-123940] [transport.py] [_log()] Compression: none
2025-11-03T22:44:49.724 [DEBUG] [Thread-123940] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:44:49.732 [DEBUG] [Thread-123940] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:44:49.733 [DEBUG] [Thread-123940] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:44:49.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:44:49.733 [DEBUG] [Thread-123940] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:44:49.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:44:49.736 [DEBUG] [Thread-123940] [transport.py] [_log()] userauth is OK
2025-11-03T22:44:49.736 [DEBUG] [Thread-123940] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:44:49.736 [DEBUG] [Thread-123940] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:44:49.736 [DEBUG] [Thread-123940] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:44:49.736 [DEBUG] [Thread-123940] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:44:49.754 [INFO] [Thread-123940] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:44:49.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:44:50.384 [DEBUG] [Thread-123940] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:44:50.384 [DEBUG] [Thread-123940] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:44:50.385 [DEBUG] [Thread-123940] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:44:50.425 [DEBUG] [Thread-123940] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:44:50.425 [DEBUG] [Thread-123940] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:44:50.428 [DEBUG] [Thread-123940] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:44:50.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:44:50.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:44:50.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:44:50.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:44:50.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:44:50.443 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:44:50.443 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:44:50.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:44:50.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:44:50.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.864336 -999.00  +19.30  15.74     16   -6.80 1 1 1 1 1     0    0 26.38 33.45 ZNESW 17.0 15.7 301.4 20.3 19.4 -25.8 19.3 -24.6 19.1 -24.5 19.3 -25.4
2025-11-03T22:44:50.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:44:50.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:44:50.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.864336
2025-11-03T22:44:50.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:44:50.446 [DEBUG] [Thread-123940] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:44:50.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:44:50.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:44:50.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:44:50.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:44:50.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:44:41', tmtdew=31.02, humidity=11.15, cloud=0.0, wind=16.04, temperature=19.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:44:41', seeing=1.02, atlas_timestamp='2025-11-03T20:44:38.630', atlas_cloud=1, atlas_rain=1, zp_data=[0.013249999999999318, 0.04225000000000101, 0.1067499999999999, 0.010999999999999233, 0.0035000000000007248, 0.034250000000000114, -0.16800000000000104, -0.22524999999999906, 0.0019999999999988916, -0.07099999999999973, 0.10524999999999984, 0.04600000000000115, 0.04899999999999949, 0.012249999999999872, -0.22550000000000026, -0.29850000000000065, 0.10074999999999967, 0.1225000000000005, 0.11350000000000016, 0.07674999999999876, 0.16949999999999932, 0.0962499999999995, -0.31325000000000003, -0.38925000000000054, 0.06349999999999945, 0.13049999999999962, 0.19475000000000087, 0.21199999999999974, 0.20199999999999996, 0.12200000000000166, -0.20199999999999818, -0.03999999999999915, 0.07074999999999854], zp_timestamp='2025-11-03T20:43:00')
2025-11-03T22:44:50.523 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:44:50.537 [DEBUG] [Thread-123943] [transport.py] [_log()] starting thread (client mode): 0xed5da80
2025-11-03T22:44:50.537 [DEBUG] [Thread-123943] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:44:50.551 [DEBUG] [Thread-123943] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:44:50.551 [INFO] [Thread-123943] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:44:50.559 [DEBUG] [Thread-123943] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:44:50.559 [DEBUG] [Thread-123943] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:44:50.559 [DEBUG] [Thread-123943] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:44:50.559 [DEBUG] [Thread-123943] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:44:50.559 [DEBUG] [Thread-123943] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:44:50.559 [DEBUG] [Thread-123943] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:44:50.559 [DEBUG] [Thread-123943] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:44:50.559 [DEBUG] [Thread-123943] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:44:50.559 [DEBUG] [Thread-123943] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:44:50.559 [DEBUG] [Thread-123943] [transport.py] [_log()] client lang: <none>
2025-11-03T22:44:50.559 [DEBUG] [Thread-123943] [transport.py] [_log()] server lang: <none>
2025-11-03T22:44:50.559 [DEBUG] [Thread-123943] [transport.py] [_log()] kex follows: False
2025-11-03T22:44:50.559 [DEBUG] [Thread-123943] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:44:50.559 [DEBUG] [Thread-123943] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:44:50.559 [DEBUG] [Thread-123943] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:44:50.561 [DEBUG] [Thread-123943] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:44:50.561 [DEBUG] [Thread-123943] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:44:50.561 [DEBUG] [Thread-123943] [transport.py] [_log()] Compression: none
2025-11-03T22:44:50.561 [DEBUG] [Thread-123943] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:44:50.619 [DEBUG] [Thread-123943] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:44:50.619 [DEBUG] [Thread-123943] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:44:50.619 [DEBUG] [Thread-123943] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:44:50.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:44:50.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:44:50.676 [DEBUG] [Thread-123943] [transport.py] [_log()] userauth is OK
2025-11-03T22:44:50.676 [DEBUG] [Thread-123943] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:44:50.676 [DEBUG] [Thread-123943] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:44:50.676 [DEBUG] [Thread-123943] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:44:50.676 [DEBUG] [Thread-123943] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:44:50.691 [INFO] [Thread-123943] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:44:50.691 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:44:50.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:44:51.586 [DEBUG] [Thread-123943] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:44:51.586 [DEBUG] [Thread-123943] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:44:51.633 [DEBUG] [Thread-123943] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:44:51.633 [DEBUG] [Thread-123943] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:44:51.641 [DEBUG] [Thread-123943] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:44:51.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:44:51.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:44:51.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:44:51.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:44:51.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:44:51.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:44:51.673 [DEBUG] [Thread-123943] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:44:53.998 [DEBUG] [Thread-123945 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:44:57.436 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:44:57.436 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:45:06.502 [DEBUG] [Thread-123946 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:45:09.036 [DEBUG] [Thread-123947 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:45:21.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:45:21.696 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:45:21.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:45:22.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 45, 16), 31.0, 11.17, 0.0, 15.86, 19.18, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:45:22.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:45:16
2025-11-03T22:45:22.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:45:22.914 [DEBUG] [Thread-123948] [transport.py] [_log()] starting thread (client mode): 0xed37c10
2025-11-03T22:45:22.914 [DEBUG] [Thread-123948] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:45:22.934 [DEBUG] [Thread-123948] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:45:22.934 [INFO] [Thread-123948] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:45:22.944 [DEBUG] [Thread-123948] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:45:22.945 [DEBUG] [Thread-123948] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:45:22.945 [DEBUG] [Thread-123948] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:45:22.945 [DEBUG] [Thread-123948] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:45:22.945 [DEBUG] [Thread-123948] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:45:22.945 [DEBUG] [Thread-123948] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:45:22.945 [DEBUG] [Thread-123948] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:45:22.945 [DEBUG] [Thread-123948] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:45:22.945 [DEBUG] [Thread-123948] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:45:22.945 [DEBUG] [Thread-123948] [transport.py] [_log()] client lang: <none>
2025-11-03T22:45:22.945 [DEBUG] [Thread-123948] [transport.py] [_log()] server lang: <none>
2025-11-03T22:45:22.945 [DEBUG] [Thread-123948] [transport.py] [_log()] kex follows: False
2025-11-03T22:45:22.945 [DEBUG] [Thread-123948] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:45:22.945 [DEBUG] [Thread-123948] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:45:22.945 [DEBUG] [Thread-123948] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:45:22.945 [DEBUG] [Thread-123948] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:45:22.946 [DEBUG] [Thread-123948] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:45:22.946 [DEBUG] [Thread-123948] [transport.py] [_log()] Compression: none
2025-11-03T22:45:22.946 [DEBUG] [Thread-123948] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:45:22.956 [DEBUG] [Thread-123948] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:45:22.957 [DEBUG] [Thread-123948] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:45:22.958 [DEBUG] [Thread-123948] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:45:22.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:45:22.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:45:22.960 [DEBUG] [Thread-123948] [transport.py] [_log()] userauth is OK
2025-11-03T22:45:22.960 [DEBUG] [Thread-123948] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:45:22.960 [DEBUG] [Thread-123948] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:45:22.960 [DEBUG] [Thread-123948] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:45:22.960 [DEBUG] [Thread-123948] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:45:22.995 [INFO] [Thread-123948] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:45:22.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:45:24.087 [DEBUG] [Thread-123950 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:45:24.171 [DEBUG] [Thread-123948] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:45:24.171 [DEBUG] [Thread-123948] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:45:24.172 [DEBUG] [Thread-123948] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:45:24.212 [DEBUG] [Thread-123948] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:45:24.212 [DEBUG] [Thread-123948] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:45:24.215 [DEBUG] [Thread-123948] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:45:24.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:45:24.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:45:24.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:45:24.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:45:24.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:45:24.308 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:45:24.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:45:24.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:45:24.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:45:24.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.864336 -999.00  +19.30  15.74     16   -6.80 1 1 1 1 1     0    0 26.38 33.45 ZNESW 17.0 15.7 301.4 20.3 19.4 -25.8 19.3 -24.6 19.1 -24.5 19.3 -25.4
2025-11-03T22:45:24.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:45:24.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:45:24.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.864336
2025-11-03T22:45:24.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:45:24.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:45:24.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:45:24.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:45:24.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:45:24.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:45:16', tmtdew=31.0, humidity=11.17, cloud=0.0, wind=15.86, temperature=19.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:45:16', seeing=1.02, atlas_timestamp='2025-11-03T20:44:38.630', atlas_cloud=1, atlas_rain=1, zp_data=[0.013249999999999318, 0.04225000000000101, 0.1067499999999999, 0.010999999999999233, 0.0035000000000007248, 0.034250000000000114, -0.16800000000000104, -0.22524999999999906, 0.0019999999999988916, -0.07099999999999973, 0.10524999999999984, 0.04600000000000115, 0.04899999999999949, 0.012249999999999872, -0.22550000000000026, -0.29850000000000065, 0.10074999999999967, 0.1225000000000005, 0.11350000000000016, 0.07674999999999876, 0.16949999999999932, 0.0962499999999995, -0.31325000000000003, -0.38925000000000054, 0.06349999999999945, 0.13049999999999962, 0.19475000000000087, 0.21199999999999974, 0.20199999999999996, 0.12200000000000166, -0.20199999999999818, -0.03999999999999915, 0.07074999999999854], zp_timestamp='2025-11-03T20:43:00')
2025-11-03T22:45:24.313 [DEBUG] [Thread-123948] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:45:24.396 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:45:24.408 [DEBUG] [Thread-123952] [transport.py] [_log()] starting thread (client mode): 0x11763220
2025-11-03T22:45:24.408 [DEBUG] [Thread-123952] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:45:24.424 [DEBUG] [Thread-123952] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:45:24.424 [INFO] [Thread-123952] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:45:24.432 [DEBUG] [Thread-123952] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:45:24.432 [DEBUG] [Thread-123952] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:45:24.432 [DEBUG] [Thread-123952] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:45:24.432 [DEBUG] [Thread-123952] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:45:24.432 [DEBUG] [Thread-123952] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:45:24.432 [DEBUG] [Thread-123952] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:45:24.432 [DEBUG] [Thread-123952] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:45:24.432 [DEBUG] [Thread-123952] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:45:24.432 [DEBUG] [Thread-123952] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:45:24.432 [DEBUG] [Thread-123952] [transport.py] [_log()] client lang: <none>
2025-11-03T22:45:24.432 [DEBUG] [Thread-123952] [transport.py] [_log()] server lang: <none>
2025-11-03T22:45:24.432 [DEBUG] [Thread-123952] [transport.py] [_log()] kex follows: False
2025-11-03T22:45:24.432 [DEBUG] [Thread-123952] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:45:24.432 [DEBUG] [Thread-123952] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:45:24.432 [DEBUG] [Thread-123952] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:45:24.432 [DEBUG] [Thread-123952] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:45:24.433 [DEBUG] [Thread-123952] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:45:24.433 [DEBUG] [Thread-123952] [transport.py] [_log()] Compression: none
2025-11-03T22:45:24.433 [DEBUG] [Thread-123952] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:45:24.493 [DEBUG] [Thread-123952] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:45:24.494 [DEBUG] [Thread-123952] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:45:24.494 [DEBUG] [Thread-123952] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:45:24.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:45:24.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:45:24.555 [DEBUG] [Thread-123952] [transport.py] [_log()] userauth is OK
2025-11-03T22:45:24.555 [DEBUG] [Thread-123952] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:45:24.555 [DEBUG] [Thread-123952] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:45:24.555 [DEBUG] [Thread-123952] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:45:24.555 [DEBUG] [Thread-123952] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:45:24.575 [INFO] [Thread-123952] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:45:24.576 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:45:24.576 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:45:25.398 [DEBUG] [Thread-123952] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:45:25.398 [DEBUG] [Thread-123952] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:45:25.447 [DEBUG] [Thread-123952] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:45:25.447 [DEBUG] [Thread-123952] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:45:25.457 [DEBUG] [Thread-123952] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:45:25.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:45:25.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:45:25.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:45:25.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:45:25.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:45:25.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:45:25.496 [DEBUG] [Thread-123952] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:45:39.119 [DEBUG] [Thread-123954 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:45:54.163 [DEBUG] [Thread-123955 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:45:55.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:45:55.557 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:45:55.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:45:57.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 45, 48), 30.93, 11.22, 0.0, 15.93, 19.11, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:45:57.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:45:48
2025-11-03T22:45:57.654 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:45:57.659 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:45:57.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:45:58.055 [DEBUG] [Thread-123956] [transport.py] [_log()] starting thread (client mode): 0x1174e020
2025-11-03T22:45:58.056 [DEBUG] [Thread-123956] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:45:58.069 [DEBUG] [Thread-123956] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:45:58.069 [INFO] [Thread-123956] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:45:58.074 [DEBUG] [Thread-123956] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:45:58.074 [DEBUG] [Thread-123956] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:45:58.075 [DEBUG] [Thread-123956] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:45:58.075 [DEBUG] [Thread-123956] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:45:58.075 [DEBUG] [Thread-123956] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:45:58.075 [DEBUG] [Thread-123956] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:45:58.075 [DEBUG] [Thread-123956] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:45:58.075 [DEBUG] [Thread-123956] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:45:58.075 [DEBUG] [Thread-123956] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:45:58.075 [DEBUG] [Thread-123956] [transport.py] [_log()] client lang: <none>
2025-11-03T22:45:58.075 [DEBUG] [Thread-123956] [transport.py] [_log()] server lang: <none>
2025-11-03T22:45:58.076 [DEBUG] [Thread-123956] [transport.py] [_log()] kex follows: False
2025-11-03T22:45:58.076 [DEBUG] [Thread-123956] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:45:58.077 [DEBUG] [Thread-123956] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:45:58.077 [DEBUG] [Thread-123956] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:45:58.077 [DEBUG] [Thread-123956] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:45:58.078 [DEBUG] [Thread-123956] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:45:58.078 [DEBUG] [Thread-123956] [transport.py] [_log()] Compression: none
2025-11-03T22:45:58.078 [DEBUG] [Thread-123956] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:45:58.119 [DEBUG] [Thread-123956] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:45:58.124 [DEBUG] [Thread-123956] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:45:58.126 [DEBUG] [Thread-123956] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:45:58.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:45:58.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:45:58.132 [DEBUG] [Thread-123956] [transport.py] [_log()] userauth is OK
2025-11-03T22:45:58.132 [DEBUG] [Thread-123956] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:45:58.132 [DEBUG] [Thread-123956] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:45:58.132 [DEBUG] [Thread-123956] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:45:58.132 [DEBUG] [Thread-123956] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:45:58.159 [INFO] [Thread-123956] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:45:58.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:45:58.749 [DEBUG] [Thread-123956] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:45:58.749 [DEBUG] [Thread-123956] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:45:58.760 [DEBUG] [Thread-123956] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:45:58.790 [DEBUG] [Thread-123956] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:45:58.790 [DEBUG] [Thread-123956] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:45:58.794 [DEBUG] [Thread-123956] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:45:58.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:45:58.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:45:58.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:45:58.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:45:58.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:45:58.817 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:45:58.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:45:58.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:45:58.819 [DEBUG] [Thread-123956] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:45:58.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:45:58.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.864683 -999.00  +19.20  13.66     16   -6.70 1 1 1 1 1     0    0 26.48 30.81 ZNESW 15.2 13.7 302.8 20.1 19.4 -25.8 19.2 -24.8 19.1 -24.2 19.3 -25.2
2025-11-03T22:45:58.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:45:58.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:45:58.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.864683
2025-11-03T22:45:58.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:45:58.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:45:58.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:45:58.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:45:58.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:45:58.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:45:48', tmtdew=30.93, humidity=11.22, cloud=0.0, wind=15.93, temperature=19.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:45:49', seeing=1.02, atlas_timestamp='2025-11-03T20:45:08.611', atlas_cloud=1, atlas_rain=1, zp_data=[0.013249999999999318, 0.04225000000000101, 0.1067499999999999, 0.010999999999999233, 0.0035000000000007248, 0.034250000000000114, -0.16800000000000104, -0.22524999999999906, 0.0019999999999988916, -0.07099999999999973, 0.10524999999999984, 0.04600000000000115, 0.04899999999999949, 0.012249999999999872, -0.22550000000000026, -0.29850000000000065, 0.10074999999999967, 0.1225000000000005, 0.11350000000000016, 0.07674999999999876, 0.16949999999999932, 0.0962499999999995, -0.31325000000000003, -0.38925000000000054, 0.06349999999999945, 0.13049999999999962, 0.19475000000000087, 0.21199999999999974, 0.20199999999999996, 0.12200000000000166, -0.20199999999999818, -0.03999999999999915, 0.07074999999999854], zp_timestamp='2025-11-03T20:43:00')
2025-11-03T22:45:58.927 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:45:58.940 [DEBUG] [Thread-123959] [transport.py] [_log()] starting thread (client mode): 0xedc7880
2025-11-03T22:45:58.941 [DEBUG] [Thread-123959] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:45:58.956 [DEBUG] [Thread-123959] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:45:58.956 [INFO] [Thread-123959] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:45:58.965 [DEBUG] [Thread-123959] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:45:58.966 [DEBUG] [Thread-123959] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:45:58.966 [DEBUG] [Thread-123959] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:45:58.966 [DEBUG] [Thread-123959] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:45:58.966 [DEBUG] [Thread-123959] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:45:58.966 [DEBUG] [Thread-123959] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:45:58.966 [DEBUG] [Thread-123959] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:45:58.966 [DEBUG] [Thread-123959] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:45:58.966 [DEBUG] [Thread-123959] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:45:58.966 [DEBUG] [Thread-123959] [transport.py] [_log()] client lang: <none>
2025-11-03T22:45:58.966 [DEBUG] [Thread-123959] [transport.py] [_log()] server lang: <none>
2025-11-03T22:45:58.966 [DEBUG] [Thread-123959] [transport.py] [_log()] kex follows: False
2025-11-03T22:45:58.966 [DEBUG] [Thread-123959] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:45:58.966 [DEBUG] [Thread-123959] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:45:58.966 [DEBUG] [Thread-123959] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:45:58.966 [DEBUG] [Thread-123959] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:45:58.966 [DEBUG] [Thread-123959] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:45:58.966 [DEBUG] [Thread-123959] [transport.py] [_log()] Compression: none
2025-11-03T22:45:58.966 [DEBUG] [Thread-123959] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:45:59.027 [DEBUG] [Thread-123959] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:45:59.027 [DEBUG] [Thread-123959] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:45:59.027 [DEBUG] [Thread-123959] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:45:59.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:45:59.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:45:59.090 [DEBUG] [Thread-123959] [transport.py] [_log()] userauth is OK
2025-11-03T22:45:59.090 [DEBUG] [Thread-123959] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:45:59.090 [DEBUG] [Thread-123959] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:45:59.090 [DEBUG] [Thread-123959] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:45:59.090 [DEBUG] [Thread-123959] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:45:59.105 [INFO] [Thread-123959] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:45:59.105 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:45:59.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:45:59.930 [DEBUG] [Thread-123959] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:45:59.930 [DEBUG] [Thread-123959] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:45:59.980 [DEBUG] [Thread-123959] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:45:59.980 [DEBUG] [Thread-123959] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:45:59.992 [DEBUG] [Thread-123959] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:46:00.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:46:00.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:46:00.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:46:00.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:46:00.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:46:00.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:46:00.042 [DEBUG] [Thread-123959] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:46:06.779 [DEBUG] [Thread-123961 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:46:09.197 [DEBUG] [Thread-123962 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:46:24.278 [DEBUG] [Thread-123963 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:46:30.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:46:30.073 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:46:30.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:46:30.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 46, 23), 30.94, 11.2, 0.0, 15.65, 19.08, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:46:30.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:46:23
2025-11-03T22:46:30.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:46:31.166 [DEBUG] [Thread-123964] [transport.py] [_log()] starting thread (client mode): 0xed34ac0
2025-11-03T22:46:31.167 [DEBUG] [Thread-123964] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:46:31.180 [DEBUG] [Thread-123964] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:46:31.180 [INFO] [Thread-123964] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:46:31.184 [DEBUG] [Thread-123964] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:46:31.184 [DEBUG] [Thread-123964] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:46:31.184 [DEBUG] [Thread-123964] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:46:31.184 [DEBUG] [Thread-123964] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:46:31.184 [DEBUG] [Thread-123964] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:46:31.184 [DEBUG] [Thread-123964] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:46:31.184 [DEBUG] [Thread-123964] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:46:31.184 [DEBUG] [Thread-123964] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:46:31.184 [DEBUG] [Thread-123964] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:46:31.184 [DEBUG] [Thread-123964] [transport.py] [_log()] client lang: <none>
2025-11-03T22:46:31.184 [DEBUG] [Thread-123964] [transport.py] [_log()] server lang: <none>
2025-11-03T22:46:31.184 [DEBUG] [Thread-123964] [transport.py] [_log()] kex follows: False
2025-11-03T22:46:31.184 [DEBUG] [Thread-123964] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:46:31.184 [DEBUG] [Thread-123964] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:46:31.184 [DEBUG] [Thread-123964] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:46:31.185 [DEBUG] [Thread-123964] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:46:31.185 [DEBUG] [Thread-123964] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:46:31.185 [DEBUG] [Thread-123964] [transport.py] [_log()] Compression: none
2025-11-03T22:46:31.185 [DEBUG] [Thread-123964] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:46:31.211 [DEBUG] [Thread-123964] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:46:31.214 [DEBUG] [Thread-123964] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:46:31.216 [DEBUG] [Thread-123964] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:46:31.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:46:31.218 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:46:31.221 [DEBUG] [Thread-123964] [transport.py] [_log()] userauth is OK
2025-11-03T22:46:31.221 [DEBUG] [Thread-123964] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:46:31.221 [DEBUG] [Thread-123964] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:46:31.221 [DEBUG] [Thread-123964] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:46:31.221 [DEBUG] [Thread-123964] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:46:31.247 [INFO] [Thread-123964] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:46:31.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:46:31.873 [DEBUG] [Thread-123964] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:46:31.873 [DEBUG] [Thread-123964] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:46:31.883 [DEBUG] [Thread-123964] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:46:31.914 [DEBUG] [Thread-123964] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:46:31.914 [DEBUG] [Thread-123964] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:46:31.918 [DEBUG] [Thread-123964] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:46:31.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:46:31.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:46:31.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:46:31.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:46:31.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:46:31.945 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:46:31.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:46:31.945 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:46:31.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:46:31.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.865030 -999.00  +19.20  14.87     16   -6.80 1 1 1 1 1     0    0 27.04 26.60 ZNESW 14.1 14.9 310.0 19.1 19.4 -25.7 19.2 -24.8 19.1 -24.4 19.3 -25.4
2025-11-03T22:46:31.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:46:31.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:46:31.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.865030
2025-11-03T22:46:31.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:46:31.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:46:31.953 [DEBUG] [Thread-123964] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:46:31.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:46:31.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:46:31.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:46:31.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:46:23', tmtdew=30.94, humidity=11.2, cloud=0.0, wind=15.65, temperature=19.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:46:24', seeing=1.02, atlas_timestamp='2025-11-03T20:45:38.592', atlas_cloud=1, atlas_rain=1, zp_data=[0.013249999999999318, 0.04225000000000101, 0.1067499999999999, 0.010999999999999233, 0.0035000000000007248, 0.034250000000000114, -0.16800000000000104, -0.22524999999999906, 0.0019999999999988916, -0.07099999999999973, 0.10524999999999984, 0.04600000000000115, 0.04899999999999949, 0.012249999999999872, -0.22550000000000026, -0.29850000000000065, 0.10074999999999967, 0.1225000000000005, 0.11350000000000016, 0.07674999999999876, 0.16949999999999932, 0.0962499999999995, -0.31325000000000003, -0.38925000000000054, 0.06349999999999945, 0.13049999999999962, 0.19475000000000087, 0.21199999999999974, 0.20199999999999996, 0.12200000000000166, -0.20199999999999818, -0.03999999999999915, 0.07074999999999854], zp_timestamp='2025-11-03T20:43:00')
2025-11-03T22:46:32.037 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:46:32.049 [DEBUG] [Thread-123967] [transport.py] [_log()] starting thread (client mode): 0x1174caf0
2025-11-03T22:46:32.049 [DEBUG] [Thread-123967] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:46:32.063 [DEBUG] [Thread-123967] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:46:32.064 [INFO] [Thread-123967] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:46:32.071 [DEBUG] [Thread-123967] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:46:32.071 [DEBUG] [Thread-123967] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:46:32.072 [DEBUG] [Thread-123967] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:46:32.072 [DEBUG] [Thread-123967] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:46:32.072 [DEBUG] [Thread-123967] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:46:32.072 [DEBUG] [Thread-123967] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:46:32.072 [DEBUG] [Thread-123967] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:46:32.072 [DEBUG] [Thread-123967] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:46:32.072 [DEBUG] [Thread-123967] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:46:32.072 [DEBUG] [Thread-123967] [transport.py] [_log()] client lang: <none>
2025-11-03T22:46:32.072 [DEBUG] [Thread-123967] [transport.py] [_log()] server lang: <none>
2025-11-03T22:46:32.073 [DEBUG] [Thread-123967] [transport.py] [_log()] kex follows: False
2025-11-03T22:46:32.073 [DEBUG] [Thread-123967] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:46:32.073 [DEBUG] [Thread-123967] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:46:32.073 [DEBUG] [Thread-123967] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:46:32.073 [DEBUG] [Thread-123967] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:46:32.074 [DEBUG] [Thread-123967] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:46:32.074 [DEBUG] [Thread-123967] [transport.py] [_log()] Compression: none
2025-11-03T22:46:32.074 [DEBUG] [Thread-123967] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:46:32.130 [DEBUG] [Thread-123967] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:46:32.131 [DEBUG] [Thread-123967] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:46:32.131 [DEBUG] [Thread-123967] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:46:32.132 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:46:32.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:46:32.188 [DEBUG] [Thread-123967] [transport.py] [_log()] userauth is OK
2025-11-03T22:46:32.189 [DEBUG] [Thread-123967] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:46:32.189 [DEBUG] [Thread-123967] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:46:32.190 [DEBUG] [Thread-123967] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:46:32.190 [DEBUG] [Thread-123967] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:46:32.214 [INFO] [Thread-123967] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:46:32.215 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:46:32.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:46:33.060 [DEBUG] [Thread-123967] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:46:33.061 [DEBUG] [Thread-123967] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:46:33.110 [DEBUG] [Thread-123967] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:46:33.110 [DEBUG] [Thread-123967] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:46:33.121 [DEBUG] [Thread-123967] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:46:33.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:46:33.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:46:33.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:46:33.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:46:33.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:46:33.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:46:33.164 [DEBUG] [Thread-123967] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:46:39.310 [DEBUG] [Thread-123969 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:46:41.410 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:46:50.700 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:46:54.362 [DEBUG] [Thread-123970 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:46:54.783 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:46:57.861 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:46:57.862 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:47:03.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:47:03.191 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:47:03.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:47:03.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 46, 56), 30.91, 11.23, 0.0, 16.04, 19.11, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:47:03.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:46:56
2025-11-03T22:47:04.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:47:04.215 [DEBUG] [Thread-123971] [transport.py] [_log()] starting thread (client mode): 0x1174f250
2025-11-03T22:47:04.215 [DEBUG] [Thread-123971] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:47:04.233 [DEBUG] [Thread-123971] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:47:04.233 [INFO] [Thread-123971] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:47:04.236 [DEBUG] [Thread-123971] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:47:04.236 [DEBUG] [Thread-123971] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:47:04.237 [DEBUG] [Thread-123971] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:47:04.237 [DEBUG] [Thread-123971] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:47:04.237 [DEBUG] [Thread-123971] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:47:04.237 [DEBUG] [Thread-123971] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:47:04.237 [DEBUG] [Thread-123971] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:47:04.237 [DEBUG] [Thread-123971] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:47:04.237 [DEBUG] [Thread-123971] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:47:04.237 [DEBUG] [Thread-123971] [transport.py] [_log()] client lang: <none>
2025-11-03T22:47:04.237 [DEBUG] [Thread-123971] [transport.py] [_log()] server lang: <none>
2025-11-03T22:47:04.237 [DEBUG] [Thread-123971] [transport.py] [_log()] kex follows: False
2025-11-03T22:47:04.237 [DEBUG] [Thread-123971] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:47:04.237 [DEBUG] [Thread-123971] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:47:04.237 [DEBUG] [Thread-123971] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:47:04.237 [DEBUG] [Thread-123971] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:47:04.237 [DEBUG] [Thread-123971] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:47:04.237 [DEBUG] [Thread-123971] [transport.py] [_log()] Compression: none
2025-11-03T22:47:04.237 [DEBUG] [Thread-123971] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:47:04.255 [DEBUG] [Thread-123971] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:47:04.256 [DEBUG] [Thread-123971] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:47:04.256 [DEBUG] [Thread-123971] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:47:04.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:47:04.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:47:04.258 [DEBUG] [Thread-123971] [transport.py] [_log()] userauth is OK
2025-11-03T22:47:04.258 [DEBUG] [Thread-123971] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:47:04.259 [DEBUG] [Thread-123971] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:47:04.259 [DEBUG] [Thread-123971] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:47:04.259 [DEBUG] [Thread-123971] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:47:04.283 [INFO] [Thread-123971] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:47:04.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:47:04.907 [DEBUG] [Thread-123971] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:47:04.908 [DEBUG] [Thread-123971] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:47:04.908 [DEBUG] [Thread-123971] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:47:04.949 [DEBUG] [Thread-123971] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:47:04.949 [DEBUG] [Thread-123971] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:47:04.953 [DEBUG] [Thread-123971] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:47:04.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:47:04.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:47:04.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:47:04.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:47:04.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:47:04.985 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:47:04.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:47:04.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:47:04.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:47:04.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.865377 -999.00  +19.20  13.52     16   -6.80 1 1 1 1 1     0    0 26.80 23.94 ZNESW 16.6 13.5 309.8 16.8 19.4 -25.8 19.3 -24.8 19.1 -24.4 19.3 -25.4
2025-11-03T22:47:04.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:47:04.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:47:04.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.865377
2025-11-03T22:47:04.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:47:04.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:47:04.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:47:04.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:47:04.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:47:04.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:46:56', tmtdew=30.91, humidity=11.23, cloud=0.0, wind=16.04, temperature=19.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:46:56', seeing=1.02, atlas_timestamp='2025-11-03T20:46:08.573', atlas_cloud=1, atlas_rain=1, zp_data=[0.013249999999999318, 0.04225000000000101, 0.1067499999999999, 0.010999999999999233, 0.0035000000000007248, 0.034250000000000114, -0.16800000000000104, -0.22524999999999906, 0.0019999999999988916, -0.07099999999999973, 0.10524999999999984, 0.04600000000000115, 0.04899999999999949, 0.012249999999999872, -0.22550000000000026, -0.29850000000000065, 0.10074999999999967, 0.1225000000000005, 0.11350000000000016, 0.07674999999999876, 0.16949999999999932, 0.0962499999999995, -0.31325000000000003, -0.38925000000000054, 0.06349999999999945, 0.13049999999999962, 0.19475000000000087, 0.21199999999999974, 0.20199999999999996, 0.12200000000000166, -0.20199999999999818, -0.03999999999999915, 0.07074999999999854], zp_timestamp='2025-11-03T20:43:00')
2025-11-03T22:47:04.989 [DEBUG] [Thread-123971] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:47:05.071 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:47:05.085 [DEBUG] [Thread-123974] [transport.py] [_log()] starting thread (client mode): 0x1174cee0
2025-11-03T22:47:05.085 [DEBUG] [Thread-123974] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:47:05.100 [DEBUG] [Thread-123974] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:47:05.100 [INFO] [Thread-123974] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:47:05.108 [DEBUG] [Thread-123974] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:47:05.109 [DEBUG] [Thread-123974] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:47:05.109 [DEBUG] [Thread-123974] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:47:05.109 [DEBUG] [Thread-123974] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:47:05.109 [DEBUG] [Thread-123974] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:47:05.109 [DEBUG] [Thread-123974] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:47:05.109 [DEBUG] [Thread-123974] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:47:05.109 [DEBUG] [Thread-123974] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:47:05.109 [DEBUG] [Thread-123974] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:47:05.109 [DEBUG] [Thread-123974] [transport.py] [_log()] client lang: <none>
2025-11-03T22:47:05.109 [DEBUG] [Thread-123974] [transport.py] [_log()] server lang: <none>
2025-11-03T22:47:05.109 [DEBUG] [Thread-123974] [transport.py] [_log()] kex follows: False
2025-11-03T22:47:05.109 [DEBUG] [Thread-123974] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:47:05.109 [DEBUG] [Thread-123974] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:47:05.109 [DEBUG] [Thread-123974] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:47:05.109 [DEBUG] [Thread-123974] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:47:05.110 [DEBUG] [Thread-123974] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:47:05.110 [DEBUG] [Thread-123974] [transport.py] [_log()] Compression: none
2025-11-03T22:47:05.110 [DEBUG] [Thread-123974] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:47:05.170 [DEBUG] [Thread-123974] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:47:05.170 [DEBUG] [Thread-123974] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:47:05.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:47:05.181 [DEBUG] [Thread-123974] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:47:05.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:47:05.235 [DEBUG] [Thread-123974] [transport.py] [_log()] userauth is OK
2025-11-03T22:47:05.236 [DEBUG] [Thread-123974] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:47:05.237 [DEBUG] [Thread-123974] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:47:05.237 [DEBUG] [Thread-123974] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:47:05.237 [DEBUG] [Thread-123974] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:47:05.263 [INFO] [Thread-123974] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:47:05.264 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:47:05.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:47:06.102 [DEBUG] [Thread-123974] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:47:06.103 [DEBUG] [Thread-123974] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:47:06.149 [DEBUG] [Thread-123974] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:47:06.149 [DEBUG] [Thread-123974] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:47:06.158 [DEBUG] [Thread-123974] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:47:06.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:47:06.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:47:06.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:47:06.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:47:06.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:47:06.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:47:06.193 [DEBUG] [Thread-123974] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:47:07.055 [DEBUG] [Thread-123976 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:47:09.392 [DEBUG] [Thread-123977 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:47:24.461 [DEBUG] [Thread-123978 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:47:36.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:47:36.214 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:47:36.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:47:36.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 47, 28), 30.88, 11.27, 0.0, 15.3, 19.13, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:47:36.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:47:28
2025-11-03T22:47:37.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:47:37.283 [DEBUG] [Thread-123979] [transport.py] [_log()] starting thread (client mode): 0xed37df0
2025-11-03T22:47:37.284 [DEBUG] [Thread-123979] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:47:37.297 [DEBUG] [Thread-123979] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:47:37.297 [INFO] [Thread-123979] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:47:37.301 [DEBUG] [Thread-123979] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:47:37.301 [DEBUG] [Thread-123979] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:47:37.302 [DEBUG] [Thread-123979] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:47:37.302 [DEBUG] [Thread-123979] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:47:37.302 [DEBUG] [Thread-123979] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:47:37.302 [DEBUG] [Thread-123979] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:47:37.302 [DEBUG] [Thread-123979] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:47:37.302 [DEBUG] [Thread-123979] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:47:37.302 [DEBUG] [Thread-123979] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:47:37.302 [DEBUG] [Thread-123979] [transport.py] [_log()] client lang: <none>
2025-11-03T22:47:37.302 [DEBUG] [Thread-123979] [transport.py] [_log()] server lang: <none>
2025-11-03T22:47:37.302 [DEBUG] [Thread-123979] [transport.py] [_log()] kex follows: False
2025-11-03T22:47:37.302 [DEBUG] [Thread-123979] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:47:37.303 [DEBUG] [Thread-123979] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:47:37.303 [DEBUG] [Thread-123979] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:47:37.304 [DEBUG] [Thread-123979] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:47:37.304 [DEBUG] [Thread-123979] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:47:37.304 [DEBUG] [Thread-123979] [transport.py] [_log()] Compression: none
2025-11-03T22:47:37.304 [DEBUG] [Thread-123979] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:47:37.333 [DEBUG] [Thread-123979] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:47:37.337 [DEBUG] [Thread-123979] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:47:37.339 [DEBUG] [Thread-123979] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:47:37.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:47:37.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:47:37.343 [DEBUG] [Thread-123979] [transport.py] [_log()] userauth is OK
2025-11-03T22:47:37.343 [DEBUG] [Thread-123979] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:47:37.343 [DEBUG] [Thread-123979] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:47:37.343 [DEBUG] [Thread-123979] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:47:37.343 [DEBUG] [Thread-123979] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:47:37.360 [INFO] [Thread-123979] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:47:37.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:47:38.029 [DEBUG] [Thread-123979] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:47:38.029 [DEBUG] [Thread-123979] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:47:38.031 [DEBUG] [Thread-123979] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:47:38.072 [DEBUG] [Thread-123979] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:47:38.072 [DEBUG] [Thread-123979] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:47:38.077 [DEBUG] [Thread-123979] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:47:38.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:47:38.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:47:38.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:47:38.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:47:38.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:47:38.114 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:47:38.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:47:38.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:47:38.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:47:38.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.866072 -999.00  +19.10  13.33     16   -6.70 1 1 1 1 1     0    0 26.64 19.40 ZNESW 16.1 13.3 310.3 15.2 19.4 -25.8 19.2 -24.7 19.1 -24.6 19.3 -25.5
2025-11-03T22:47:38.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:47:38.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:47:38.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.866072
2025-11-03T22:47:38.128 [DEBUG] [Thread-123979] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:47:38.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:47:38.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:47:38.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:47:38.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:47:38.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:47:38.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:47:28', tmtdew=30.88, humidity=11.27, cloud=0.0, wind=15.3, temperature=19.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:47:29', seeing=1.0, atlas_timestamp='2025-11-03T20:47:08.621', atlas_cloud=1, atlas_rain=1, zp_data=[0.013249999999999318, 0.04225000000000101, 0.1067499999999999, 0.010999999999999233, 0.0035000000000007248, 0.034250000000000114, -0.16800000000000104, -0.22524999999999906, 0.0019999999999988916, -0.07099999999999973, 0.10524999999999984, 0.04600000000000115, 0.04899999999999949, 0.012249999999999872, -0.22550000000000026, -0.29850000000000065, 0.10074999999999967, 0.1225000000000005, 0.11350000000000016, 0.07674999999999876, 0.16949999999999932, 0.0962499999999995, -0.31325000000000003, -0.38925000000000054, 0.06349999999999945, 0.13049999999999962, 0.19475000000000087, 0.21199999999999974, 0.20199999999999996, 0.12200000000000166, -0.20199999999999818, -0.03999999999999915, 0.07074999999999854], zp_timestamp='2025-11-03T20:43:00')
2025-11-03T22:47:38.245 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:47:38.260 [DEBUG] [Thread-123982] [transport.py] [_log()] starting thread (client mode): 0xed35cc0
2025-11-03T22:47:38.260 [DEBUG] [Thread-123982] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:47:38.275 [DEBUG] [Thread-123982] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:47:38.275 [INFO] [Thread-123982] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:47:38.284 [DEBUG] [Thread-123982] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:47:38.284 [DEBUG] [Thread-123982] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:47:38.284 [DEBUG] [Thread-123982] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:47:38.284 [DEBUG] [Thread-123982] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:47:38.284 [DEBUG] [Thread-123982] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:47:38.284 [DEBUG] [Thread-123982] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:47:38.284 [DEBUG] [Thread-123982] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:47:38.284 [DEBUG] [Thread-123982] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:47:38.284 [DEBUG] [Thread-123982] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:47:38.284 [DEBUG] [Thread-123982] [transport.py] [_log()] client lang: <none>
2025-11-03T22:47:38.284 [DEBUG] [Thread-123982] [transport.py] [_log()] server lang: <none>
2025-11-03T22:47:38.284 [DEBUG] [Thread-123982] [transport.py] [_log()] kex follows: False
2025-11-03T22:47:38.284 [DEBUG] [Thread-123982] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:47:38.284 [DEBUG] [Thread-123982] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:47:38.284 [DEBUG] [Thread-123982] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:47:38.284 [DEBUG] [Thread-123982] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:47:38.284 [DEBUG] [Thread-123982] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:47:38.284 [DEBUG] [Thread-123982] [transport.py] [_log()] Compression: none
2025-11-03T22:47:38.284 [DEBUG] [Thread-123982] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:47:38.344 [DEBUG] [Thread-123982] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:47:38.344 [DEBUG] [Thread-123982] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:47:38.344 [DEBUG] [Thread-123982] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:47:38.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:47:38.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:47:38.407 [DEBUG] [Thread-123982] [transport.py] [_log()] userauth is OK
2025-11-03T22:47:38.407 [DEBUG] [Thread-123982] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:47:38.407 [DEBUG] [Thread-123982] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:47:38.407 [DEBUG] [Thread-123982] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:47:38.407 [DEBUG] [Thread-123982] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:47:38.424 [INFO] [Thread-123982] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:47:38.426 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:47:38.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:47:39.290 [DEBUG] [Thread-123982] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:47:39.290 [DEBUG] [Thread-123982] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:47:39.338 [DEBUG] [Thread-123982] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:47:39.338 [DEBUG] [Thread-123982] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:47:39.348 [DEBUG] [Thread-123982] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:47:39.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:47:39.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:47:39.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:47:39.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:47:39.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:47:39.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:47:39.386 [DEBUG] [Thread-123982] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:47:39.494 [DEBUG] [Thread-123984 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:47:54.553 [DEBUG] [Thread-123985 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:47:58.063 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:47:58.063 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:48:07.368 [DEBUG] [Thread-123986 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:48:09.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:48:09.409 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:48:09.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:48:09.585 [DEBUG] [Thread-123987 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:48:10.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 48, 1), 30.8, 11.33, 0.0, 15.56, 19.08, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:48:10.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:48:01
2025-11-03T22:48:10.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:48:10.543 [DEBUG] [Thread-123988] [transport.py] [_log()] starting thread (client mode): 0xed370a0
2025-11-03T22:48:10.543 [DEBUG] [Thread-123988] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:48:10.565 [DEBUG] [Thread-123988] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:48:10.565 [INFO] [Thread-123988] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:48:10.568 [DEBUG] [Thread-123988] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:48:10.568 [DEBUG] [Thread-123988] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:48:10.568 [DEBUG] [Thread-123988] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:48:10.568 [DEBUG] [Thread-123988] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:48:10.569 [DEBUG] [Thread-123988] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:48:10.569 [DEBUG] [Thread-123988] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:48:10.569 [DEBUG] [Thread-123988] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:48:10.569 [DEBUG] [Thread-123988] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:48:10.569 [DEBUG] [Thread-123988] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:48:10.569 [DEBUG] [Thread-123988] [transport.py] [_log()] client lang: <none>
2025-11-03T22:48:10.569 [DEBUG] [Thread-123988] [transport.py] [_log()] server lang: <none>
2025-11-03T22:48:10.569 [DEBUG] [Thread-123988] [transport.py] [_log()] kex follows: False
2025-11-03T22:48:10.569 [DEBUG] [Thread-123988] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:48:10.569 [DEBUG] [Thread-123988] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:48:10.569 [DEBUG] [Thread-123988] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:48:10.569 [DEBUG] [Thread-123988] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:48:10.569 [DEBUG] [Thread-123988] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:48:10.569 [DEBUG] [Thread-123988] [transport.py] [_log()] Compression: none
2025-11-03T22:48:10.569 [DEBUG] [Thread-123988] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:48:10.587 [DEBUG] [Thread-123988] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:48:10.587 [DEBUG] [Thread-123988] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:48:10.587 [DEBUG] [Thread-123988] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:48:10.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:48:10.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:48:10.588 [DEBUG] [Thread-123988] [transport.py] [_log()] userauth is OK
2025-11-03T22:48:10.588 [DEBUG] [Thread-123988] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:48:10.588 [DEBUG] [Thread-123988] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:48:10.588 [DEBUG] [Thread-123988] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:48:10.588 [DEBUG] [Thread-123988] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:48:10.615 [INFO] [Thread-123988] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:48:10.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:48:11.261 [DEBUG] [Thread-123988] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:48:11.261 [DEBUG] [Thread-123988] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:48:11.261 [DEBUG] [Thread-123988] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:48:11.302 [DEBUG] [Thread-123988] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:48:11.302 [DEBUG] [Thread-123988] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:48:11.304 [DEBUG] [Thread-123988] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:48:11.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:48:11.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:48:11.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:48:11.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:48:11.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:48:11.322 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:48:11.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:48:11.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:48:11.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:48:11.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.866419 -999.00  +19.10  13.62     16   -6.70 1 1 1 1 1     0    0 26.83 17.34 ZNESW 16.5 13.6 307.0 18.3 19.3 -25.7 19.2 -24.7 19.0 -24.2 19.3 -25.5
2025-11-03T22:48:11.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:48:11.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:48:11.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.866419
2025-11-03T22:48:11.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:48:11.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:48:11.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:48:11.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:48:11.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:48:11.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:48:01', tmtdew=30.8, humidity=11.33, cloud=0.0, wind=15.56, temperature=19.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:48:02', seeing=1.03, atlas_timestamp='2025-11-03T20:47:38.602', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.039750000000001506, 0.14825000000000088, 0.022499999999999076, 0.07949999999999946, -0.05224999999999902, -0.2220000000000013, -0.1427499999999995, 0.04049999999999976, 0.03550000000000075, 0.1592500000000001, 0.0909999999999993, 0.06400000000000006, -0.010749999999999815, -0.24600000000000044, -0.27449999999999974, 0.03924999999999912, 0.11849999999999916, 0.19449999999999967, 0.13174999999999848, 0.21499999999999986, 0.08274999999999899, -0.3772500000000001, 0.007749999999999702, 0.09450000000000003, 0.18050000000000033, 0.24924999999999997, 0.2524999999999995, 0.24600000000000044, 0.1255000000000006, -0.6399999999999988, 0.015000000000000568, 0.1427499999999995], zp_timestamp='2025-11-03T20:47:00')
2025-11-03T22:48:11.323 [DEBUG] [Thread-123988] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:48:11.398 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:48:11.413 [DEBUG] [Thread-123991] [transport.py] [_log()] starting thread (client mode): 0xedc5b40
2025-11-03T22:48:11.413 [DEBUG] [Thread-123991] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:48:11.431 [DEBUG] [Thread-123991] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:48:11.431 [INFO] [Thread-123991] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:48:11.441 [DEBUG] [Thread-123991] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:48:11.441 [DEBUG] [Thread-123991] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:48:11.442 [DEBUG] [Thread-123991] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:48:11.442 [DEBUG] [Thread-123991] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:48:11.442 [DEBUG] [Thread-123991] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:48:11.442 [DEBUG] [Thread-123991] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:48:11.442 [DEBUG] [Thread-123991] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:48:11.442 [DEBUG] [Thread-123991] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:48:11.442 [DEBUG] [Thread-123991] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:48:11.442 [DEBUG] [Thread-123991] [transport.py] [_log()] client lang: <none>
2025-11-03T22:48:11.442 [DEBUG] [Thread-123991] [transport.py] [_log()] server lang: <none>
2025-11-03T22:48:11.442 [DEBUG] [Thread-123991] [transport.py] [_log()] kex follows: False
2025-11-03T22:48:11.442 [DEBUG] [Thread-123991] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:48:11.442 [DEBUG] [Thread-123991] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:48:11.442 [DEBUG] [Thread-123991] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:48:11.442 [DEBUG] [Thread-123991] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:48:11.442 [DEBUG] [Thread-123991] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:48:11.442 [DEBUG] [Thread-123991] [transport.py] [_log()] Compression: none
2025-11-03T22:48:11.442 [DEBUG] [Thread-123991] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:48:11.500 [DEBUG] [Thread-123991] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:48:11.500 [DEBUG] [Thread-123991] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:48:11.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:48:11.500 [DEBUG] [Thread-123991] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:48:11.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:48:11.556 [DEBUG] [Thread-123991] [transport.py] [_log()] userauth is OK
2025-11-03T22:48:11.556 [DEBUG] [Thread-123991] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:48:11.556 [DEBUG] [Thread-123991] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:48:11.556 [DEBUG] [Thread-123991] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:48:11.556 [DEBUG] [Thread-123991] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:48:11.570 [INFO] [Thread-123991] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:48:11.570 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:48:11.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:48:12.420 [DEBUG] [Thread-123991] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:48:12.420 [DEBUG] [Thread-123991] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:48:12.470 [DEBUG] [Thread-123991] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:48:12.470 [DEBUG] [Thread-123991] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:48:12.479 [DEBUG] [Thread-123991] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:48:12.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:48:12.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:48:12.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:48:12.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:48:12.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:48:12.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:48:12.517 [DEBUG] [Thread-123991] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:48:24.614 [DEBUG] [Thread-123993 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:48:39.693 [DEBUG] [Thread-123994 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:48:42.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:48:42.538 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:48:42.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:48:43.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 48, 34), 30.83, 11.3, 0.0, 17.64, 19.06, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:48:43.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:48:34
2025-11-03T22:48:43.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:48:43.604 [DEBUG] [Thread-123995] [transport.py] [_log()] starting thread (client mode): 0x117e84c0
2025-11-03T22:48:43.604 [DEBUG] [Thread-123995] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:48:43.617 [DEBUG] [Thread-123995] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:48:43.617 [INFO] [Thread-123995] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:48:43.621 [DEBUG] [Thread-123995] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:48:43.621 [DEBUG] [Thread-123995] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:48:43.621 [DEBUG] [Thread-123995] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:48:43.621 [DEBUG] [Thread-123995] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:48:43.621 [DEBUG] [Thread-123995] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:48:43.621 [DEBUG] [Thread-123995] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:48:43.621 [DEBUG] [Thread-123995] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:48:43.621 [DEBUG] [Thread-123995] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:48:43.621 [DEBUG] [Thread-123995] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:48:43.621 [DEBUG] [Thread-123995] [transport.py] [_log()] client lang: <none>
2025-11-03T22:48:43.621 [DEBUG] [Thread-123995] [transport.py] [_log()] server lang: <none>
2025-11-03T22:48:43.621 [DEBUG] [Thread-123995] [transport.py] [_log()] kex follows: False
2025-11-03T22:48:43.621 [DEBUG] [Thread-123995] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:48:43.621 [DEBUG] [Thread-123995] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:48:43.621 [DEBUG] [Thread-123995] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:48:43.622 [DEBUG] [Thread-123995] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:48:43.622 [DEBUG] [Thread-123995] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:48:43.622 [DEBUG] [Thread-123995] [transport.py] [_log()] Compression: none
2025-11-03T22:48:43.622 [DEBUG] [Thread-123995] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:48:43.638 [DEBUG] [Thread-123995] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:48:43.639 [DEBUG] [Thread-123995] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:48:43.640 [DEBUG] [Thread-123995] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:48:43.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:48:43.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:48:43.642 [DEBUG] [Thread-123995] [transport.py] [_log()] userauth is OK
2025-11-03T22:48:43.642 [DEBUG] [Thread-123995] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:48:43.642 [DEBUG] [Thread-123995] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:48:43.643 [DEBUG] [Thread-123995] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:48:43.643 [DEBUG] [Thread-123995] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:48:43.666 [INFO] [Thread-123995] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:48:43.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:48:44.293 [DEBUG] [Thread-123995] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:48:44.294 [DEBUG] [Thread-123995] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:48:44.294 [DEBUG] [Thread-123995] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:48:44.335 [DEBUG] [Thread-123995] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:48:44.335 [DEBUG] [Thread-123995] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:48:44.339 [DEBUG] [Thread-123995] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:48:44.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:48:44.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:48:44.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:48:44.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:48:44.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:48:44.364 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:48:44.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:48:44.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:48:44.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:48:44.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.866766 -999.00  +19.10  13.36     16   -6.80 1 1 1 1 1     0    0 26.60 14.38 ZNESW 16.8 13.4 295.0 17.9 19.3 -25.8 19.2 -24.7 19.1 -24.6 19.2 -25.5
2025-11-03T22:48:44.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:48:44.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:48:44.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.866766
2025-11-03T22:48:44.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:48:44.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:48:44.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:48:44.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:48:44.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:48:44.373 [DEBUG] [Thread-123995] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:48:44.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:48:34', tmtdew=30.83, humidity=11.3, cloud=0.0, wind=17.64, temperature=19.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:48:34', seeing=1.03, atlas_timestamp='2025-11-03T20:48:08.582', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.039750000000001506, 0.14825000000000088, 0.022499999999999076, 0.07949999999999946, -0.05224999999999902, -0.2220000000000013, -0.1427499999999995, 0.04049999999999976, 0.03550000000000075, 0.1592500000000001, 0.0909999999999993, 0.06400000000000006, -0.010749999999999815, -0.24600000000000044, -0.27449999999999974, 0.03924999999999912, 0.11849999999999916, 0.19449999999999967, 0.13174999999999848, 0.21499999999999986, 0.08274999999999899, -0.3772500000000001, 0.007749999999999702, 0.09450000000000003, 0.18050000000000033, 0.24924999999999997, 0.2524999999999995, 0.24600000000000044, 0.1255000000000006, -0.6399999999999988, 0.015000000000000568, 0.1427499999999995], zp_timestamp='2025-11-03T20:47:00')
2025-11-03T22:48:44.458 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:48:44.472 [DEBUG] [Thread-123998] [transport.py] [_log()] starting thread (client mode): 0xed43790
2025-11-03T22:48:44.472 [DEBUG] [Thread-123998] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:48:44.487 [DEBUG] [Thread-123998] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:48:44.487 [INFO] [Thread-123998] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:48:44.496 [DEBUG] [Thread-123998] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:48:44.496 [DEBUG] [Thread-123998] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:48:44.496 [DEBUG] [Thread-123998] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:48:44.496 [DEBUG] [Thread-123998] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:48:44.496 [DEBUG] [Thread-123998] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:48:44.496 [DEBUG] [Thread-123998] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:48:44.496 [DEBUG] [Thread-123998] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:48:44.496 [DEBUG] [Thread-123998] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:48:44.496 [DEBUG] [Thread-123998] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:48:44.496 [DEBUG] [Thread-123998] [transport.py] [_log()] client lang: <none>
2025-11-03T22:48:44.496 [DEBUG] [Thread-123998] [transport.py] [_log()] server lang: <none>
2025-11-03T22:48:44.496 [DEBUG] [Thread-123998] [transport.py] [_log()] kex follows: False
2025-11-03T22:48:44.496 [DEBUG] [Thread-123998] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:48:44.496 [DEBUG] [Thread-123998] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:48:44.496 [DEBUG] [Thread-123998] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:48:44.496 [DEBUG] [Thread-123998] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:48:44.496 [DEBUG] [Thread-123998] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:48:44.496 [DEBUG] [Thread-123998] [transport.py] [_log()] Compression: none
2025-11-03T22:48:44.496 [DEBUG] [Thread-123998] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:48:44.557 [DEBUG] [Thread-123998] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:48:44.557 [DEBUG] [Thread-123998] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:48:44.566 [DEBUG] [Thread-123998] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:48:44.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:48:44.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:48:44.620 [DEBUG] [Thread-123998] [transport.py] [_log()] userauth is OK
2025-11-03T22:48:44.620 [DEBUG] [Thread-123998] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:48:44.620 [DEBUG] [Thread-123998] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:48:44.620 [DEBUG] [Thread-123998] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:48:44.620 [DEBUG] [Thread-123998] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:48:44.634 [INFO] [Thread-123998] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:48:44.634 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:48:44.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:48:45.451 [DEBUG] [Thread-123998] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:48:45.451 [DEBUG] [Thread-123998] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:48:45.500 [DEBUG] [Thread-123998] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:48:45.500 [DEBUG] [Thread-123998] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:48:45.510 [DEBUG] [Thread-123998] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:48:45.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:48:45.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:48:45.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:48:45.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:48:45.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:48:45.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:48:45.548 [DEBUG] [Thread-123998] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:48:54.724 [DEBUG] [Thread-124000 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:48:58.265 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:48:58.267 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:49:07.635 [DEBUG] [Thread-124001 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:49:09.761 [DEBUG] [Thread-124002 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:49:15.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:49:15.569 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:49:15.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:49:17.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 49, 6), 30.82, 11.32, 0.0, 17.29, 19.1, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:49:17.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:49:06
2025-11-03T22:49:17.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:49:18.092 [DEBUG] [Thread-124003] [transport.py] [_log()] starting thread (client mode): 0xed37310
2025-11-03T22:49:18.092 [DEBUG] [Thread-124003] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:49:18.113 [DEBUG] [Thread-124003] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:49:18.114 [INFO] [Thread-124003] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:49:18.116 [DEBUG] [Thread-124003] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:49:18.116 [DEBUG] [Thread-124003] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:49:18.116 [DEBUG] [Thread-124003] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:49:18.116 [DEBUG] [Thread-124003] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:49:18.116 [DEBUG] [Thread-124003] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:49:18.116 [DEBUG] [Thread-124003] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:49:18.116 [DEBUG] [Thread-124003] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:49:18.116 [DEBUG] [Thread-124003] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:49:18.116 [DEBUG] [Thread-124003] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:49:18.116 [DEBUG] [Thread-124003] [transport.py] [_log()] client lang: <none>
2025-11-03T22:49:18.116 [DEBUG] [Thread-124003] [transport.py] [_log()] server lang: <none>
2025-11-03T22:49:18.116 [DEBUG] [Thread-124003] [transport.py] [_log()] kex follows: False
2025-11-03T22:49:18.116 [DEBUG] [Thread-124003] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:49:18.116 [DEBUG] [Thread-124003] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:49:18.116 [DEBUG] [Thread-124003] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:49:18.116 [DEBUG] [Thread-124003] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:49:18.116 [DEBUG] [Thread-124003] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:49:18.116 [DEBUG] [Thread-124003] [transport.py] [_log()] Compression: none
2025-11-03T22:49:18.116 [DEBUG] [Thread-124003] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:49:18.135 [DEBUG] [Thread-124003] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:49:18.135 [DEBUG] [Thread-124003] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:49:18.135 [DEBUG] [Thread-124003] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:49:18.136 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:49:18.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:49:18.140 [DEBUG] [Thread-124003] [transport.py] [_log()] userauth is OK
2025-11-03T22:49:18.140 [DEBUG] [Thread-124003] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:49:18.140 [DEBUG] [Thread-124003] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:49:18.140 [DEBUG] [Thread-124003] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:49:18.140 [DEBUG] [Thread-124003] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:49:18.161 [INFO] [Thread-124003] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:49:18.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:49:18.787 [DEBUG] [Thread-124003] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:49:18.789 [DEBUG] [Thread-124003] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:49:18.789 [DEBUG] [Thread-124003] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:49:18.828 [DEBUG] [Thread-124003] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:49:18.828 [DEBUG] [Thread-124003] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:49:18.831 [DEBUG] [Thread-124003] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:49:18.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:49:18.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:49:18.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:49:18.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:49:18.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:49:18.851 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:49:18.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:49:18.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:49:18.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:49:18.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.867113 -999.00  +19.10  13.70     16   -6.70 1 1 1 1 1     0    0 26.81 12.04 ZNESW 13.5 13.7 318.0 20.0 19.3 -25.7 19.2 -24.8 19.0 -24.4 19.2 -25.3
2025-11-03T22:49:18.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:49:18.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:49:18.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.867113
2025-11-03T22:49:18.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:49:18.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:49:18.854 [DEBUG] [Thread-124003] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:49:18.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:49:18.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:49:18.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:49:18.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:49:06', tmtdew=30.82, humidity=11.32, cloud=0.0, wind=17.29, temperature=19.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:49:07', seeing=1.05, atlas_timestamp='2025-11-03T20:48:38.563', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.039750000000001506, 0.14825000000000088, 0.022499999999999076, 0.07949999999999946, -0.05224999999999902, -0.2220000000000013, -0.1427499999999995, 0.04049999999999976, 0.03550000000000075, 0.1592500000000001, 0.0909999999999993, 0.06400000000000006, -0.010749999999999815, -0.24600000000000044, -0.27449999999999974, 0.03924999999999912, 0.11849999999999916, 0.19449999999999967, 0.13174999999999848, 0.21499999999999986, 0.08274999999999899, -0.3772500000000001, 0.007749999999999702, 0.09450000000000003, 0.18050000000000033, 0.24924999999999997, 0.2524999999999995, 0.24600000000000044, 0.1255000000000006, -0.6399999999999988, 0.015000000000000568, 0.1427499999999995], zp_timestamp='2025-11-03T20:47:00')
2025-11-03T22:49:18.947 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:49:18.959 [DEBUG] [Thread-124006] [transport.py] [_log()] starting thread (client mode): 0xedc6440
2025-11-03T22:49:18.959 [DEBUG] [Thread-124006] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:49:18.973 [DEBUG] [Thread-124006] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:49:18.973 [INFO] [Thread-124006] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:49:18.981 [DEBUG] [Thread-124006] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:49:18.981 [DEBUG] [Thread-124006] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:49:18.981 [DEBUG] [Thread-124006] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:49:18.981 [DEBUG] [Thread-124006] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:49:18.981 [DEBUG] [Thread-124006] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:49:18.981 [DEBUG] [Thread-124006] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:49:18.981 [DEBUG] [Thread-124006] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:49:18.981 [DEBUG] [Thread-124006] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:49:18.981 [DEBUG] [Thread-124006] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:49:18.981 [DEBUG] [Thread-124006] [transport.py] [_log()] client lang: <none>
2025-11-03T22:49:18.981 [DEBUG] [Thread-124006] [transport.py] [_log()] server lang: <none>
2025-11-03T22:49:18.981 [DEBUG] [Thread-124006] [transport.py] [_log()] kex follows: False
2025-11-03T22:49:18.981 [DEBUG] [Thread-124006] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:49:18.981 [DEBUG] [Thread-124006] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:49:18.981 [DEBUG] [Thread-124006] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:49:18.981 [DEBUG] [Thread-124006] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:49:18.982 [DEBUG] [Thread-124006] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:49:18.982 [DEBUG] [Thread-124006] [transport.py] [_log()] Compression: none
2025-11-03T22:49:18.982 [DEBUG] [Thread-124006] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:49:19.039 [DEBUG] [Thread-124006] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:49:19.040 [DEBUG] [Thread-124006] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:49:19.040 [DEBUG] [Thread-124006] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:49:19.041 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:49:19.041 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:49:19.096 [DEBUG] [Thread-124006] [transport.py] [_log()] userauth is OK
2025-11-03T22:49:19.097 [DEBUG] [Thread-124006] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:49:19.097 [DEBUG] [Thread-124006] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:49:19.097 [DEBUG] [Thread-124006] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:49:19.097 [DEBUG] [Thread-124006] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:49:19.115 [INFO] [Thread-124006] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:49:19.115 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:49:19.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:49:19.930 [DEBUG] [Thread-124006] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:49:19.931 [DEBUG] [Thread-124006] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:49:19.980 [DEBUG] [Thread-124006] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:49:19.981 [DEBUG] [Thread-124006] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:49:19.991 [DEBUG] [Thread-124006] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:49:20.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:49:20.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:49:20.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:49:20.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:49:20.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:49:20.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:49:20.035 [DEBUG] [Thread-124006] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:49:24.787 [DEBUG] [Thread-124008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:49:39.845 [DEBUG] [Thread-124009 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:49:50.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:49:50.066 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:49:50.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:49:50.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 49, 42), 30.91, 11.33, 0.0, 15.81, 19.16, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:49:50.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:49:42
2025-11-03T22:49:50.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:49:51.069 [DEBUG] [Thread-124010] [transport.py] [_log()] starting thread (client mode): 0xedc5750
2025-11-03T22:49:51.069 [DEBUG] [Thread-124010] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:49:51.083 [DEBUG] [Thread-124010] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:49:51.084 [INFO] [Thread-124010] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:49:51.087 [DEBUG] [Thread-124010] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:49:51.087 [DEBUG] [Thread-124010] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:49:51.087 [DEBUG] [Thread-124010] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:49:51.087 [DEBUG] [Thread-124010] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:49:51.087 [DEBUG] [Thread-124010] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:49:51.087 [DEBUG] [Thread-124010] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:49:51.087 [DEBUG] [Thread-124010] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:49:51.087 [DEBUG] [Thread-124010] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:49:51.087 [DEBUG] [Thread-124010] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:49:51.087 [DEBUG] [Thread-124010] [transport.py] [_log()] client lang: <none>
2025-11-03T22:49:51.087 [DEBUG] [Thread-124010] [transport.py] [_log()] server lang: <none>
2025-11-03T22:49:51.087 [DEBUG] [Thread-124010] [transport.py] [_log()] kex follows: False
2025-11-03T22:49:51.088 [DEBUG] [Thread-124010] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:49:51.088 [DEBUG] [Thread-124010] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:49:51.088 [DEBUG] [Thread-124010] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:49:51.088 [DEBUG] [Thread-124010] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:49:51.088 [DEBUG] [Thread-124010] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:49:51.088 [DEBUG] [Thread-124010] [transport.py] [_log()] Compression: none
2025-11-03T22:49:51.088 [DEBUG] [Thread-124010] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:49:51.111 [DEBUG] [Thread-124010] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:49:51.115 [DEBUG] [Thread-124010] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:49:51.118 [DEBUG] [Thread-124010] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:49:51.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:49:51.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:49:51.153 [DEBUG] [Thread-124010] [transport.py] [_log()] userauth is OK
2025-11-03T22:49:51.154 [DEBUG] [Thread-124010] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:49:51.154 [DEBUG] [Thread-124010] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:49:51.154 [DEBUG] [Thread-124010] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:49:51.154 [DEBUG] [Thread-124010] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:49:51.194 [INFO] [Thread-124010] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:49:51.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:49:51.852 [DEBUG] [Thread-124010] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:49:51.852 [DEBUG] [Thread-124010] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:49:51.862 [DEBUG] [Thread-124010] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:49:51.893 [DEBUG] [Thread-124010] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:49:51.893 [DEBUG] [Thread-124010] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:49:51.896 [DEBUG] [Thread-124010] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:49:51.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:49:51.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:49:51.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:49:51.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:49:51.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:49:51.917 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:49:51.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:49:51.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:49:51.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:49:51.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.867461 -999.00  +19.10  13.83     16   -6.80 1 1 1 1 1     0    0 26.67 9.79 ZNESW 17.8 13.8 310.8 19.9 19.3 -25.7 19.2 -24.9 19.0 -24.4 19.2 -25.4
2025-11-03T22:49:51.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:49:51.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:49:51.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.867461
2025-11-03T22:49:51.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:49:51.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:49:51.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:49:51.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:49:51.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:49:51.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:49:42', tmtdew=30.91, humidity=11.33, cloud=0.0, wind=15.81, temperature=19.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:49:43', seeing=1.05, atlas_timestamp='2025-11-03T20:49:08.630', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.039750000000001506, 0.14825000000000088, 0.022499999999999076, 0.07949999999999946, -0.05224999999999902, -0.2220000000000013, -0.1427499999999995, 0.04049999999999976, 0.03550000000000075, 0.1592500000000001, 0.0909999999999993, 0.06400000000000006, -0.010749999999999815, -0.24600000000000044, -0.27449999999999974, 0.03924999999999912, 0.11849999999999916, 0.19449999999999967, 0.13174999999999848, 0.21499999999999986, 0.08274999999999899, -0.3772500000000001, 0.007749999999999702, 0.09450000000000003, 0.18050000000000033, 0.24924999999999997, 0.2524999999999995, 0.24600000000000044, 0.1255000000000006, -0.6399999999999988, 0.015000000000000568, 0.1427499999999995], zp_timestamp='2025-11-03T20:47:00')
2025-11-03T22:49:51.928 [DEBUG] [Thread-124010] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:49:51.999 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:49:52.013 [DEBUG] [Thread-124013] [transport.py] [_log()] starting thread (client mode): 0x11763f10
2025-11-03T22:49:52.013 [DEBUG] [Thread-124013] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:49:52.027 [DEBUG] [Thread-124013] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:49:52.027 [INFO] [Thread-124013] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:49:52.035 [DEBUG] [Thread-124013] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:49:52.035 [DEBUG] [Thread-124013] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:49:52.035 [DEBUG] [Thread-124013] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:49:52.035 [DEBUG] [Thread-124013] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:49:52.035 [DEBUG] [Thread-124013] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:49:52.035 [DEBUG] [Thread-124013] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:49:52.035 [DEBUG] [Thread-124013] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:49:52.035 [DEBUG] [Thread-124013] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:49:52.035 [DEBUG] [Thread-124013] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:49:52.036 [DEBUG] [Thread-124013] [transport.py] [_log()] client lang: <none>
2025-11-03T22:49:52.036 [DEBUG] [Thread-124013] [transport.py] [_log()] server lang: <none>
2025-11-03T22:49:52.036 [DEBUG] [Thread-124013] [transport.py] [_log()] kex follows: False
2025-11-03T22:49:52.036 [DEBUG] [Thread-124013] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:49:52.036 [DEBUG] [Thread-124013] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:49:52.036 [DEBUG] [Thread-124013] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:49:52.036 [DEBUG] [Thread-124013] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:49:52.036 [DEBUG] [Thread-124013] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:49:52.036 [DEBUG] [Thread-124013] [transport.py] [_log()] Compression: none
2025-11-03T22:49:52.036 [DEBUG] [Thread-124013] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:49:52.097 [DEBUG] [Thread-124013] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:49:52.098 [DEBUG] [Thread-124013] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:49:52.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:49:52.099 [DEBUG] [Thread-124013] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:49:52.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:49:52.156 [DEBUG] [Thread-124013] [transport.py] [_log()] userauth is OK
2025-11-03T22:49:52.157 [DEBUG] [Thread-124013] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:49:52.157 [DEBUG] [Thread-124013] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:49:52.157 [DEBUG] [Thread-124013] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:49:52.157 [DEBUG] [Thread-124013] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:49:52.176 [INFO] [Thread-124013] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:49:52.176 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:49:52.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:49:52.992 [DEBUG] [Thread-124013] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:49:52.992 [DEBUG] [Thread-124013] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:49:53.041 [DEBUG] [Thread-124013] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:49:53.041 [DEBUG] [Thread-124013] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:49:53.049 [DEBUG] [Thread-124013] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:49:53.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:49:53.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:49:53.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:49:53.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:49:53.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:49:53.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:49:53.093 [DEBUG] [Thread-124013] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:49:54.879 [DEBUG] [Thread-124015 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:49:58.485 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:49:58.486 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:50:07.889 [DEBUG] [Thread-124016 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:50:09.972 [DEBUG] [Thread-124017 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:50:17.602 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:50:23.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:50:23.118 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:50:23.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:50:23.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 50, 14), 30.88, 11.35, 0.0, 15.77, 19.13, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:50:23.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:50:14
2025-11-03T22:50:24.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:50:24.180 [DEBUG] [Thread-124018] [transport.py] [_log()] starting thread (client mode): 0xed5d5a0
2025-11-03T22:50:24.181 [DEBUG] [Thread-124018] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:50:24.199 [DEBUG] [Thread-124018] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:50:24.199 [INFO] [Thread-124018] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:50:24.203 [DEBUG] [Thread-124018] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:50:24.203 [DEBUG] [Thread-124018] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:50:24.203 [DEBUG] [Thread-124018] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:50:24.203 [DEBUG] [Thread-124018] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:50:24.203 [DEBUG] [Thread-124018] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:50:24.203 [DEBUG] [Thread-124018] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:50:24.203 [DEBUG] [Thread-124018] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:50:24.203 [DEBUG] [Thread-124018] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:50:24.203 [DEBUG] [Thread-124018] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:50:24.203 [DEBUG] [Thread-124018] [transport.py] [_log()] client lang: <none>
2025-11-03T22:50:24.203 [DEBUG] [Thread-124018] [transport.py] [_log()] server lang: <none>
2025-11-03T22:50:24.203 [DEBUG] [Thread-124018] [transport.py] [_log()] kex follows: False
2025-11-03T22:50:24.203 [DEBUG] [Thread-124018] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:50:24.203 [DEBUG] [Thread-124018] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:50:24.204 [DEBUG] [Thread-124018] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:50:24.204 [DEBUG] [Thread-124018] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:50:24.204 [DEBUG] [Thread-124018] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:50:24.204 [DEBUG] [Thread-124018] [transport.py] [_log()] Compression: none
2025-11-03T22:50:24.204 [DEBUG] [Thread-124018] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:50:24.225 [DEBUG] [Thread-124018] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:50:24.230 [DEBUG] [Thread-124018] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:50:24.232 [DEBUG] [Thread-124018] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:50:24.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:50:24.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:50:24.238 [DEBUG] [Thread-124018] [transport.py] [_log()] userauth is OK
2025-11-03T22:50:24.238 [DEBUG] [Thread-124018] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:50:24.238 [DEBUG] [Thread-124018] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:50:24.239 [DEBUG] [Thread-124018] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:50:24.239 [DEBUG] [Thread-124018] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:50:24.264 [INFO] [Thread-124018] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:50:24.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:50:24.902 [DEBUG] [Thread-124018] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:50:24.911 [DEBUG] [Thread-124018] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:50:24.912 [DEBUG] [Thread-124018] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:50:24.943 [DEBUG] [Thread-124018] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:50:24.943 [DEBUG] [Thread-124018] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:50:24.947 [DEBUG] [Thread-124018] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:50:24.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:50:24.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:50:24.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:50:24.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:50:24.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:50:24.976 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:50:24.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:50:24.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:50:24.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:50:24.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.867808 -999.00  +19.10  13.13     16   -6.80 1 1 1 1 1     0    0 26.06 7.28 ZNESW 13.0 13.1 299.8 20.3 19.3 -25.7 19.2 -24.7 19.0 -24.6 19.3 -25.3
2025-11-03T22:50:24.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:50:24.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:50:24.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.867808
2025-11-03T22:50:24.983 [DEBUG] [Thread-124018] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:50:24.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:50:24.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:50:24.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:50:24.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:50:24.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:50:24.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:50:14', tmtdew=30.88, humidity=11.35, cloud=0.0, wind=15.77, temperature=19.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:50:15', seeing=1.0, atlas_timestamp='2025-11-03T20:49:38.611', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.039750000000001506, 0.14825000000000088, 0.022499999999999076, 0.07949999999999946, -0.05224999999999902, -0.2220000000000013, -0.1427499999999995, 0.04049999999999976, 0.03550000000000075, 0.1592500000000001, 0.0909999999999993, 0.06400000000000006, -0.010749999999999815, -0.24600000000000044, -0.27449999999999974, 0.03924999999999912, 0.11849999999999916, 0.19449999999999967, 0.13174999999999848, 0.21499999999999986, 0.08274999999999899, -0.3772500000000001, 0.007749999999999702, 0.09450000000000003, 0.18050000000000033, 0.24924999999999997, 0.2524999999999995, 0.24600000000000044, 0.1255000000000006, -0.6399999999999988, 0.015000000000000568, 0.1427499999999995], zp_timestamp='2025-11-03T20:47:00')
2025-11-03T22:50:24.999 [DEBUG] [Thread-124021 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:50:25.078 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:50:25.090 [DEBUG] [Thread-124022] [transport.py] [_log()] starting thread (client mode): 0xed37280
2025-11-03T22:50:25.090 [DEBUG] [Thread-124022] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:50:25.105 [DEBUG] [Thread-124022] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:50:25.105 [INFO] [Thread-124022] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:50:25.112 [DEBUG] [Thread-124022] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:50:25.113 [DEBUG] [Thread-124022] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:50:25.113 [DEBUG] [Thread-124022] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:50:25.113 [DEBUG] [Thread-124022] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:50:25.113 [DEBUG] [Thread-124022] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:50:25.113 [DEBUG] [Thread-124022] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:50:25.113 [DEBUG] [Thread-124022] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:50:25.113 [DEBUG] [Thread-124022] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:50:25.113 [DEBUG] [Thread-124022] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:50:25.113 [DEBUG] [Thread-124022] [transport.py] [_log()] client lang: <none>
2025-11-03T22:50:25.113 [DEBUG] [Thread-124022] [transport.py] [_log()] server lang: <none>
2025-11-03T22:50:25.113 [DEBUG] [Thread-124022] [transport.py] [_log()] kex follows: False
2025-11-03T22:50:25.113 [DEBUG] [Thread-124022] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:50:25.113 [DEBUG] [Thread-124022] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:50:25.113 [DEBUG] [Thread-124022] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:50:25.113 [DEBUG] [Thread-124022] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:50:25.113 [DEBUG] [Thread-124022] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:50:25.114 [DEBUG] [Thread-124022] [transport.py] [_log()] Compression: none
2025-11-03T22:50:25.114 [DEBUG] [Thread-124022] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:50:25.172 [DEBUG] [Thread-124022] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:50:25.173 [DEBUG] [Thread-124022] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:50:25.174 [DEBUG] [Thread-124022] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:50:25.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:50:25.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:50:25.233 [DEBUG] [Thread-124022] [transport.py] [_log()] userauth is OK
2025-11-03T22:50:25.233 [DEBUG] [Thread-124022] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:50:25.233 [DEBUG] [Thread-124022] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:50:25.233 [DEBUG] [Thread-124022] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:50:25.233 [DEBUG] [Thread-124022] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:50:25.260 [INFO] [Thread-124022] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:50:25.261 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:50:25.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:50:26.158 [DEBUG] [Thread-124022] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:50:26.159 [DEBUG] [Thread-124022] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:50:26.198 [DEBUG] [Thread-124022] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:50:26.198 [DEBUG] [Thread-124022] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:50:26.208 [DEBUG] [Thread-124022] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:50:26.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:50:26.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:50:26.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:50:26.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:50:26.241 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:50:26.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:50:26.250 [DEBUG] [Thread-124022] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:50:28.875 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:50:32.975 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:50:40.053 [DEBUG] [Thread-124024 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:50:55.082 [DEBUG] [Thread-124025 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:50:56.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:50:56.272 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:50:56.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:50:56.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 50, 49), 30.75, 11.37, 0.0, 16.29, 19.03, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:50:56.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:50:49
2025-11-03T22:50:57.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:50:57.199 [DEBUG] [Thread-124026] [transport.py] [_log()] starting thread (client mode): 0x11763f10
2025-11-03T22:50:57.199 [DEBUG] [Thread-124026] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:50:57.217 [DEBUG] [Thread-124026] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:50:57.218 [INFO] [Thread-124026] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:50:57.221 [DEBUG] [Thread-124026] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:50:57.221 [DEBUG] [Thread-124026] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:50:57.221 [DEBUG] [Thread-124026] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:50:57.221 [DEBUG] [Thread-124026] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:50:57.221 [DEBUG] [Thread-124026] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:50:57.221 [DEBUG] [Thread-124026] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:50:57.221 [DEBUG] [Thread-124026] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:50:57.221 [DEBUG] [Thread-124026] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:50:57.221 [DEBUG] [Thread-124026] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:50:57.221 [DEBUG] [Thread-124026] [transport.py] [_log()] client lang: <none>
2025-11-03T22:50:57.221 [DEBUG] [Thread-124026] [transport.py] [_log()] server lang: <none>
2025-11-03T22:50:57.221 [DEBUG] [Thread-124026] [transport.py] [_log()] kex follows: False
2025-11-03T22:50:57.221 [DEBUG] [Thread-124026] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:50:57.221 [DEBUG] [Thread-124026] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:50:57.221 [DEBUG] [Thread-124026] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:50:57.221 [DEBUG] [Thread-124026] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:50:57.221 [DEBUG] [Thread-124026] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:50:57.221 [DEBUG] [Thread-124026] [transport.py] [_log()] Compression: none
2025-11-03T22:50:57.221 [DEBUG] [Thread-124026] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:50:57.236 [DEBUG] [Thread-124026] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:50:57.236 [DEBUG] [Thread-124026] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:50:57.236 [DEBUG] [Thread-124026] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:50:57.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:50:57.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:50:57.237 [DEBUG] [Thread-124026] [transport.py] [_log()] userauth is OK
2025-11-03T22:50:57.237 [DEBUG] [Thread-124026] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:50:57.237 [DEBUG] [Thread-124026] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:50:57.237 [DEBUG] [Thread-124026] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:50:57.237 [DEBUG] [Thread-124026] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:50:57.254 [INFO] [Thread-124026] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:50:57.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:50:57.892 [DEBUG] [Thread-124026] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:50:57.892 [DEBUG] [Thread-124026] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:50:57.892 [DEBUG] [Thread-124026] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:50:57.932 [DEBUG] [Thread-124026] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:50:57.932 [DEBUG] [Thread-124026] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:50:57.934 [DEBUG] [Thread-124026] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:50:57.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:50:57.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:50:57.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:50:57.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:50:57.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:50:57.952 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:50:57.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:50:57.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:50:57.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:50:57.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.868502 -999.00  +19.10  14.00     16   -6.80 1 1 1 1 1     0    0 25.89 2.09 ZNESW 15.0 14.0 308.4 20.9 19.3 -25.6 19.2 -24.7 19.0 -24.6 19.2 -25.4
2025-11-03T22:50:57.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:50:57.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:50:57.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.868502
2025-11-03T22:50:57.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:50:57.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:50:57.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:50:57.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:50:57.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:50:57.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:50:49', tmtdew=30.75, humidity=11.37, cloud=0.0, wind=16.29, temperature=19.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:50:49', seeing=1.0, atlas_timestamp='2025-11-03T20:50:38.573', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006750000000000256, 0.04224999999999923, 0.09375, -0.03850000000000087, 0.01699999999999946, 0.04625000000000057, -0.21000000000000085, -0.19374999999999964, 0.005499999999999616, 0.02149999999999963, 0.10125000000000028, 0.1070000000000011, 0.030999999999998806, -0.00575000000000081, -0.5045000000000002, -0.6560000000000006, 0.02325000000000088, 0.08549999999999969, 0.16499999999999915, 0.11224999999999952, 0.1609999999999996, 0.09474999999999945, -0.45974999999999966, -0.05925000000000047, 0.08099999999999952, 0.12650000000000006, 0.18274999999999864, 0.20250000000000057, 0.17650000000000077, 0.04800000000000182, -0.06550000000000011, -0.0004999999999988347, 0.09574999999999889], zp_timestamp='2025-11-03T20:49:00')
2025-11-03T22:50:57.953 [DEBUG] [Thread-124026] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:50:58.026 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:50:58.038 [DEBUG] [Thread-124029] [transport.py] [_log()] starting thread (client mode): 0xed5f4c0
2025-11-03T22:50:58.038 [DEBUG] [Thread-124029] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:50:58.053 [DEBUG] [Thread-124029] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:50:58.053 [INFO] [Thread-124029] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:50:58.062 [DEBUG] [Thread-124029] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:50:58.062 [DEBUG] [Thread-124029] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:50:58.062 [DEBUG] [Thread-124029] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:50:58.062 [DEBUG] [Thread-124029] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:50:58.062 [DEBUG] [Thread-124029] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:50:58.062 [DEBUG] [Thread-124029] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:50:58.062 [DEBUG] [Thread-124029] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:50:58.062 [DEBUG] [Thread-124029] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:50:58.062 [DEBUG] [Thread-124029] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:50:58.062 [DEBUG] [Thread-124029] [transport.py] [_log()] client lang: <none>
2025-11-03T22:50:58.062 [DEBUG] [Thread-124029] [transport.py] [_log()] server lang: <none>
2025-11-03T22:50:58.062 [DEBUG] [Thread-124029] [transport.py] [_log()] kex follows: False
2025-11-03T22:50:58.062 [DEBUG] [Thread-124029] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:50:58.062 [DEBUG] [Thread-124029] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:50:58.062 [DEBUG] [Thread-124029] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:50:58.062 [DEBUG] [Thread-124029] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:50:58.062 [DEBUG] [Thread-124029] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:50:58.062 [DEBUG] [Thread-124029] [transport.py] [_log()] Compression: none
2025-11-03T22:50:58.062 [DEBUG] [Thread-124029] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:50:58.118 [DEBUG] [Thread-124029] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:50:58.119 [DEBUG] [Thread-124029] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:50:58.119 [DEBUG] [Thread-124029] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:50:58.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:50:58.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:50:58.176 [DEBUG] [Thread-124029] [transport.py] [_log()] userauth is OK
2025-11-03T22:50:58.176 [DEBUG] [Thread-124029] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:50:58.176 [DEBUG] [Thread-124029] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:50:58.176 [DEBUG] [Thread-124029] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:50:58.176 [DEBUG] [Thread-124029] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:50:58.193 [INFO] [Thread-124029] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:50:58.194 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:50:58.194 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:50:58.692 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:50:58.692 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:50:59.029 [DEBUG] [Thread-124029] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:50:59.030 [DEBUG] [Thread-124029] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:50:59.078 [DEBUG] [Thread-124029] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:50:59.078 [DEBUG] [Thread-124029] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:50:59.087 [DEBUG] [Thread-124029] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:50:59.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:50:59.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:50:59.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:50:59.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:50:59.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:50:59.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:50:59.121 [DEBUG] [Thread-124029] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:51:08.012 [DEBUG] [Thread-124031 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:51:10.113 [DEBUG] [Thread-124032 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:51:25.167 [DEBUG] [Thread-124033 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:51:29.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:51:29.141 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:51:29.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:51:29.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 51, 21), 30.7, 11.41, 0.0, 15.26, 19.05, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:51:29.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:51:21
2025-11-03T22:51:30.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:51:30.248 [DEBUG] [Thread-124034] [transport.py] [_log()] starting thread (client mode): 0x1174f580
2025-11-03T22:51:30.248 [DEBUG] [Thread-124034] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:51:30.268 [DEBUG] [Thread-124034] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:51:30.268 [INFO] [Thread-124034] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:51:30.271 [DEBUG] [Thread-124034] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:51:30.271 [DEBUG] [Thread-124034] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:51:30.272 [DEBUG] [Thread-124034] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:51:30.272 [DEBUG] [Thread-124034] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:51:30.272 [DEBUG] [Thread-124034] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:51:30.272 [DEBUG] [Thread-124034] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:51:30.272 [DEBUG] [Thread-124034] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:51:30.272 [DEBUG] [Thread-124034] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:51:30.272 [DEBUG] [Thread-124034] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:51:30.272 [DEBUG] [Thread-124034] [transport.py] [_log()] client lang: <none>
2025-11-03T22:51:30.272 [DEBUG] [Thread-124034] [transport.py] [_log()] server lang: <none>
2025-11-03T22:51:30.273 [DEBUG] [Thread-124034] [transport.py] [_log()] kex follows: False
2025-11-03T22:51:30.273 [DEBUG] [Thread-124034] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:51:30.273 [DEBUG] [Thread-124034] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:51:30.273 [DEBUG] [Thread-124034] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:51:30.273 [DEBUG] [Thread-124034] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:51:30.273 [DEBUG] [Thread-124034] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:51:30.274 [DEBUG] [Thread-124034] [transport.py] [_log()] Compression: none
2025-11-03T22:51:30.274 [DEBUG] [Thread-124034] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:51:30.288 [DEBUG] [Thread-124034] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:51:30.289 [DEBUG] [Thread-124034] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:51:30.290 [DEBUG] [Thread-124034] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:51:30.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:51:30.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:51:30.291 [DEBUG] [Thread-124034] [transport.py] [_log()] userauth is OK
2025-11-03T22:51:30.292 [DEBUG] [Thread-124034] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:51:30.292 [DEBUG] [Thread-124034] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:51:30.292 [DEBUG] [Thread-124034] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:51:30.292 [DEBUG] [Thread-124034] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:51:30.315 [INFO] [Thread-124034] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:51:30.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:51:30.997 [DEBUG] [Thread-124034] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:51:30.997 [DEBUG] [Thread-124034] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:51:30.997 [DEBUG] [Thread-124034] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:51:31.037 [DEBUG] [Thread-124034] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:51:31.037 [DEBUG] [Thread-124034] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:51:31.039 [DEBUG] [Thread-124034] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:51:31.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:51:31.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:51:31.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:51:31.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:51:31.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:51:31.056 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:51:31.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:51:31.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:51:31.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:51:31.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.868850 -999.00  +19.10  14.77     16   -6.80 1 1 1 1 1     0    0 26.09 -0.07 ZNESW 15.8 14.8 303.6 18.3 19.3 -25.6 19.2 -24.7 19.0 -24.3 19.2 -25.2
2025-11-03T22:51:31.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:51:31.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:51:31.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.868850
2025-11-03T22:51:31.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:51:31.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:51:31.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:51:31.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:51:31.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:51:31.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:51:21', tmtdew=30.7, humidity=11.41, cloud=0.0, wind=15.26, temperature=19.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:51:22', seeing=0.88, atlas_timestamp='2025-11-03T20:51:08.640', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006750000000000256, 0.04224999999999923, 0.09375, -0.03850000000000087, 0.01699999999999946, 0.04625000000000057, -0.21000000000000085, -0.19374999999999964, 0.005499999999999616, 0.02149999999999963, 0.10125000000000028, 0.1070000000000011, 0.030999999999998806, -0.00575000000000081, -0.5045000000000002, -0.6560000000000006, 0.02325000000000088, 0.08549999999999969, 0.16499999999999915, 0.11224999999999952, 0.1609999999999996, 0.09474999999999945, -0.45974999999999966, -0.05925000000000047, 0.08099999999999952, 0.12650000000000006, 0.18274999999999864, 0.20250000000000057, 0.17650000000000077, 0.04800000000000182, -0.06550000000000011, -0.0004999999999988347, 0.09574999999999889], zp_timestamp='2025-11-03T20:49:00')
2025-11-03T22:51:31.057 [DEBUG] [Thread-124034] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:51:31.135 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:51:31.147 [DEBUG] [Thread-124037] [transport.py] [_log()] starting thread (client mode): 0x1174cf10
2025-11-03T22:51:31.147 [DEBUG] [Thread-124037] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:51:31.162 [DEBUG] [Thread-124037] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:51:31.162 [INFO] [Thread-124037] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:51:31.169 [DEBUG] [Thread-124037] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:51:31.169 [DEBUG] [Thread-124037] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:51:31.169 [DEBUG] [Thread-124037] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:51:31.169 [DEBUG] [Thread-124037] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:51:31.169 [DEBUG] [Thread-124037] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:51:31.169 [DEBUG] [Thread-124037] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:51:31.170 [DEBUG] [Thread-124037] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:51:31.170 [DEBUG] [Thread-124037] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:51:31.170 [DEBUG] [Thread-124037] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:51:31.170 [DEBUG] [Thread-124037] [transport.py] [_log()] client lang: <none>
2025-11-03T22:51:31.170 [DEBUG] [Thread-124037] [transport.py] [_log()] server lang: <none>
2025-11-03T22:51:31.170 [DEBUG] [Thread-124037] [transport.py] [_log()] kex follows: False
2025-11-03T22:51:31.170 [DEBUG] [Thread-124037] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:51:31.170 [DEBUG] [Thread-124037] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:51:31.170 [DEBUG] [Thread-124037] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:51:31.170 [DEBUG] [Thread-124037] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:51:31.170 [DEBUG] [Thread-124037] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:51:31.170 [DEBUG] [Thread-124037] [transport.py] [_log()] Compression: none
2025-11-03T22:51:31.170 [DEBUG] [Thread-124037] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:51:31.227 [DEBUG] [Thread-124037] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:51:31.227 [DEBUG] [Thread-124037] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:51:31.227 [DEBUG] [Thread-124037] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:51:31.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:51:31.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:51:31.284 [DEBUG] [Thread-124037] [transport.py] [_log()] userauth is OK
2025-11-03T22:51:31.284 [DEBUG] [Thread-124037] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:51:31.284 [DEBUG] [Thread-124037] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:51:31.284 [DEBUG] [Thread-124037] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:51:31.284 [DEBUG] [Thread-124037] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:51:31.298 [INFO] [Thread-124037] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:51:31.298 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:51:31.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:51:32.149 [DEBUG] [Thread-124037] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:51:32.150 [DEBUG] [Thread-124037] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:51:32.197 [DEBUG] [Thread-124037] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:51:32.197 [DEBUG] [Thread-124037] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:51:32.206 [DEBUG] [Thread-124037] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:51:32.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:51:32.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:51:32.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:51:32.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:51:32.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:51:32.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:51:32.239 [DEBUG] [Thread-124037] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:51:40.208 [DEBUG] [Thread-124039 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:51:55.286 [DEBUG] [Thread-124040 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:51:58.902 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:51:58.905 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:52:02.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:52:02.238 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:52:02.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:52:03.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 51, 54), 30.77, 11.4, 0.0, 18.65, 19.1, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:52:03.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:51:54
2025-11-03T22:52:04.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:52:04.513 [DEBUG] [Thread-124041] [transport.py] [_log()] starting thread (client mode): 0xed36770
2025-11-03T22:52:04.514 [DEBUG] [Thread-124041] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:52:04.530 [DEBUG] [Thread-124041] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:52:04.530 [INFO] [Thread-124041] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:52:04.535 [DEBUG] [Thread-124041] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:52:04.535 [DEBUG] [Thread-124041] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:52:04.535 [DEBUG] [Thread-124041] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:52:04.535 [DEBUG] [Thread-124041] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:52:04.535 [DEBUG] [Thread-124041] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:52:04.535 [DEBUG] [Thread-124041] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:52:04.536 [DEBUG] [Thread-124041] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:52:04.536 [DEBUG] [Thread-124041] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:52:04.536 [DEBUG] [Thread-124041] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:52:04.536 [DEBUG] [Thread-124041] [transport.py] [_log()] client lang: <none>
2025-11-03T22:52:04.536 [DEBUG] [Thread-124041] [transport.py] [_log()] server lang: <none>
2025-11-03T22:52:04.536 [DEBUG] [Thread-124041] [transport.py] [_log()] kex follows: False
2025-11-03T22:52:04.537 [DEBUG] [Thread-124041] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:52:04.537 [DEBUG] [Thread-124041] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:52:04.537 [DEBUG] [Thread-124041] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:52:04.537 [DEBUG] [Thread-124041] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:52:04.537 [DEBUG] [Thread-124041] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:52:04.537 [DEBUG] [Thread-124041] [transport.py] [_log()] Compression: none
2025-11-03T22:52:04.537 [DEBUG] [Thread-124041] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:52:04.566 [DEBUG] [Thread-124041] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:52:04.569 [DEBUG] [Thread-124041] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:52:04.570 [DEBUG] [Thread-124041] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:52:04.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:52:04.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:52:04.575 [DEBUG] [Thread-124041] [transport.py] [_log()] userauth is OK
2025-11-03T22:52:04.575 [DEBUG] [Thread-124041] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:52:04.575 [DEBUG] [Thread-124041] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:52:04.575 [DEBUG] [Thread-124041] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:52:04.576 [DEBUG] [Thread-124041] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:52:04.601 [INFO] [Thread-124041] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:52:04.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:52:05.212 [DEBUG] [Thread-124041] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:52:05.212 [DEBUG] [Thread-124041] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:52:05.212 [DEBUG] [Thread-124041] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:52:05.252 [DEBUG] [Thread-124041] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:52:05.253 [DEBUG] [Thread-124041] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:52:05.255 [DEBUG] [Thread-124041] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:52:05.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:52:05.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:52:05.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:52:05.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:52:05.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:52:05.275 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:52:05.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:52:05.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:52:05.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:52:05.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.869197 -999.00  +19.10  11.30     16   -6.80 1 1 1 1 1     0    0 26.34 -2.12 ZNESW 15.2 11.3 313.2 17.6 19.3 -25.8 19.2 -24.6 19.0 -24.3 19.2 -25.4
2025-11-03T22:52:05.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:52:05.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:52:05.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.869197
2025-11-03T22:52:05.282 [DEBUG] [Thread-124041] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:52:05.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:52:05.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:52:05.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:52:05.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:52:05.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:52:05.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:51:54', tmtdew=30.77, humidity=11.4, cloud=0.0, wind=18.65, temperature=19.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:51:54', seeing=0.88, atlas_timestamp='2025-11-03T20:51:38.621', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006750000000000256, 0.04224999999999923, 0.09375, -0.03850000000000087, 0.01699999999999946, 0.04625000000000057, -0.21000000000000085, -0.19374999999999964, 0.005499999999999616, 0.02149999999999963, 0.10125000000000028, 0.1070000000000011, 0.030999999999998806, -0.00575000000000081, -0.5045000000000002, -0.6560000000000006, 0.02325000000000088, 0.08549999999999969, 0.16499999999999915, 0.11224999999999952, 0.1609999999999996, 0.09474999999999945, -0.45974999999999966, -0.05925000000000047, 0.08099999999999952, 0.12650000000000006, 0.18274999999999864, 0.20250000000000057, 0.17650000000000077, 0.04800000000000182, -0.06550000000000011, -0.0004999999999988347, 0.09574999999999889], zp_timestamp='2025-11-03T20:49:00')
2025-11-03T22:52:05.362 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:52:05.373 [DEBUG] [Thread-124044] [transport.py] [_log()] starting thread (client mode): 0x1174e650
2025-11-03T22:52:05.373 [DEBUG] [Thread-124044] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:52:05.387 [DEBUG] [Thread-124044] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:52:05.387 [INFO] [Thread-124044] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:52:05.395 [DEBUG] [Thread-124044] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:52:05.395 [DEBUG] [Thread-124044] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:52:05.395 [DEBUG] [Thread-124044] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:52:05.395 [DEBUG] [Thread-124044] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:52:05.395 [DEBUG] [Thread-124044] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:52:05.395 [DEBUG] [Thread-124044] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:52:05.395 [DEBUG] [Thread-124044] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:52:05.395 [DEBUG] [Thread-124044] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:52:05.395 [DEBUG] [Thread-124044] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:52:05.395 [DEBUG] [Thread-124044] [transport.py] [_log()] client lang: <none>
2025-11-03T22:52:05.395 [DEBUG] [Thread-124044] [transport.py] [_log()] server lang: <none>
2025-11-03T22:52:05.395 [DEBUG] [Thread-124044] [transport.py] [_log()] kex follows: False
2025-11-03T22:52:05.395 [DEBUG] [Thread-124044] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:52:05.395 [DEBUG] [Thread-124044] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:52:05.395 [DEBUG] [Thread-124044] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:52:05.395 [DEBUG] [Thread-124044] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:52:05.395 [DEBUG] [Thread-124044] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:52:05.396 [DEBUG] [Thread-124044] [transport.py] [_log()] Compression: none
2025-11-03T22:52:05.396 [DEBUG] [Thread-124044] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:52:05.459 [DEBUG] [Thread-124044] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:52:05.460 [DEBUG] [Thread-124044] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:52:05.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:52:05.461 [DEBUG] [Thread-124044] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:52:05.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:52:05.516 [DEBUG] [Thread-124044] [transport.py] [_log()] userauth is OK
2025-11-03T22:52:05.517 [DEBUG] [Thread-124044] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:52:05.517 [DEBUG] [Thread-124044] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:52:05.517 [DEBUG] [Thread-124044] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:52:05.517 [DEBUG] [Thread-124044] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:52:05.536 [INFO] [Thread-124044] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:52:05.537 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:52:05.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:52:06.346 [DEBUG] [Thread-124044] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:52:06.347 [DEBUG] [Thread-124044] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:52:06.396 [DEBUG] [Thread-124044] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:52:06.397 [DEBUG] [Thread-124044] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:52:06.409 [DEBUG] [Thread-124044] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:52:06.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:52:06.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:52:06.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:52:06.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:52:06.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:52:06.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:52:06.455 [DEBUG] [Thread-124044] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:52:08.407 [DEBUG] [Thread-124046 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:52:10.314 [DEBUG] [Thread-124047 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:52:25.352 [DEBUG] [Thread-124048 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:52:36.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:52:36.458 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:52:36.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:52:37.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 52, 29), 30.77, 11.4, 0.0, 16.76, 19.08, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:52:37.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:52:29
2025-11-03T22:52:37.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:52:37.574 [DEBUG] [Thread-124049] [transport.py] [_log()] starting thread (client mode): 0xed5ff70
2025-11-03T22:52:37.575 [DEBUG] [Thread-124049] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:52:37.576 [DEBUG] [Thread-124049] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:52:37.576 [INFO] [Thread-124049] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:52:37.579 [DEBUG] [Thread-124049] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:52:37.579 [DEBUG] [Thread-124049] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:52:37.579 [DEBUG] [Thread-124049] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:52:37.580 [DEBUG] [Thread-124049] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:52:37.580 [DEBUG] [Thread-124049] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:52:37.580 [DEBUG] [Thread-124049] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:52:37.580 [DEBUG] [Thread-124049] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:52:37.580 [DEBUG] [Thread-124049] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:52:37.580 [DEBUG] [Thread-124049] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:52:37.580 [DEBUG] [Thread-124049] [transport.py] [_log()] client lang: <none>
2025-11-03T22:52:37.580 [DEBUG] [Thread-124049] [transport.py] [_log()] server lang: <none>
2025-11-03T22:52:37.580 [DEBUG] [Thread-124049] [transport.py] [_log()] kex follows: False
2025-11-03T22:52:37.580 [DEBUG] [Thread-124049] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:52:37.581 [DEBUG] [Thread-124049] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:52:37.581 [DEBUG] [Thread-124049] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:52:37.581 [DEBUG] [Thread-124049] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:52:37.581 [DEBUG] [Thread-124049] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:52:37.581 [DEBUG] [Thread-124049] [transport.py] [_log()] Compression: none
2025-11-03T22:52:37.581 [DEBUG] [Thread-124049] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:52:37.607 [DEBUG] [Thread-124049] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:52:37.610 [DEBUG] [Thread-124049] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:52:37.611 [DEBUG] [Thread-124049] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:52:37.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:52:37.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:52:37.616 [DEBUG] [Thread-124049] [transport.py] [_log()] userauth is OK
2025-11-03T22:52:37.616 [DEBUG] [Thread-124049] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:52:37.616 [DEBUG] [Thread-124049] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:52:37.616 [DEBUG] [Thread-124049] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:52:37.616 [DEBUG] [Thread-124049] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:52:37.642 [INFO] [Thread-124049] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:52:37.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:52:38.234 [DEBUG] [Thread-124049] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:52:38.235 [DEBUG] [Thread-124049] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:52:38.236 [DEBUG] [Thread-124049] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:52:38.276 [DEBUG] [Thread-124049] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:52:38.276 [DEBUG] [Thread-124049] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:52:38.281 [DEBUG] [Thread-124049] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:52:38.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:52:38.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:52:38.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:52:38.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:52:38.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:52:38.316 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:52:38.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:52:38.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:52:38.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:52:38.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.869544 -999.00  +19.00  14.15     16   -6.80 1 1 1 1 1     0    0 25.65 -3.39 ZNESW 15.2 14.2 305.8 19.3 19.3 -25.7 19.2 -24.8 19.0 -24.6 19.2 -25.5
2025-11-03T22:52:38.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:52:38.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:52:38.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.869544
2025-11-03T22:52:38.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:52:38.321 [DEBUG] [Thread-124049] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:52:38.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:52:38.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:52:38.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:52:38.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:52:38.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:52:29', tmtdew=30.77, humidity=11.4, cloud=0.0, wind=16.76, temperature=19.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:52:29', seeing=1.03, atlas_timestamp='2025-11-03T20:52:08.602', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006750000000000256, 0.04224999999999923, 0.09375, -0.03850000000000087, 0.01699999999999946, 0.04625000000000057, -0.21000000000000085, -0.19374999999999964, 0.005499999999999616, 0.02149999999999963, 0.10125000000000028, 0.1070000000000011, 0.030999999999998806, -0.00575000000000081, -0.5045000000000002, -0.6560000000000006, 0.02325000000000088, 0.08549999999999969, 0.16499999999999915, 0.11224999999999952, 0.1609999999999996, 0.09474999999999945, -0.45974999999999966, -0.05925000000000047, 0.08099999999999952, 0.12650000000000006, 0.18274999999999864, 0.20250000000000057, 0.17650000000000077, 0.04800000000000182, -0.06550000000000011, -0.0004999999999988347, 0.09574999999999889], zp_timestamp='2025-11-03T20:49:00')
2025-11-03T22:52:38.409 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:52:38.423 [DEBUG] [Thread-124052] [transport.py] [_log()] starting thread (client mode): 0xedb1180
2025-11-03T22:52:38.423 [DEBUG] [Thread-124052] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:52:38.441 [DEBUG] [Thread-124052] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:52:38.441 [INFO] [Thread-124052] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:52:38.450 [DEBUG] [Thread-124052] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:52:38.450 [DEBUG] [Thread-124052] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:52:38.450 [DEBUG] [Thread-124052] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:52:38.450 [DEBUG] [Thread-124052] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:52:38.450 [DEBUG] [Thread-124052] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:52:38.450 [DEBUG] [Thread-124052] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:52:38.450 [DEBUG] [Thread-124052] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:52:38.450 [DEBUG] [Thread-124052] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:52:38.450 [DEBUG] [Thread-124052] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:52:38.450 [DEBUG] [Thread-124052] [transport.py] [_log()] client lang: <none>
2025-11-03T22:52:38.450 [DEBUG] [Thread-124052] [transport.py] [_log()] server lang: <none>
2025-11-03T22:52:38.450 [DEBUG] [Thread-124052] [transport.py] [_log()] kex follows: False
2025-11-03T22:52:38.450 [DEBUG] [Thread-124052] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:52:38.450 [DEBUG] [Thread-124052] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:52:38.450 [DEBUG] [Thread-124052] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:52:38.450 [DEBUG] [Thread-124052] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:52:38.450 [DEBUG] [Thread-124052] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:52:38.450 [DEBUG] [Thread-124052] [transport.py] [_log()] Compression: none
2025-11-03T22:52:38.450 [DEBUG] [Thread-124052] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:52:38.509 [DEBUG] [Thread-124052] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:52:38.509 [DEBUG] [Thread-124052] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:52:38.510 [DEBUG] [Thread-124052] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:52:38.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:52:38.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:52:38.570 [DEBUG] [Thread-124052] [transport.py] [_log()] userauth is OK
2025-11-03T22:52:38.570 [DEBUG] [Thread-124052] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:52:38.571 [DEBUG] [Thread-124052] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:52:38.571 [DEBUG] [Thread-124052] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:52:38.571 [DEBUG] [Thread-124052] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:52:38.597 [INFO] [Thread-124052] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:52:38.597 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:52:38.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:52:39.423 [DEBUG] [Thread-124052] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:52:39.423 [DEBUG] [Thread-124052] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:52:39.472 [DEBUG] [Thread-124052] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:52:39.472 [DEBUG] [Thread-124052] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:52:39.485 [DEBUG] [Thread-124052] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:52:39.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:52:39.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:52:39.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:52:39.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:52:39.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:52:39.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:52:39.534 [DEBUG] [Thread-124052] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:52:40.384 [DEBUG] [Thread-124054 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:52:55.434 [DEBUG] [Thread-124055 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:52:59.114 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:52:59.117 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:53:09.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:53:09.568 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:53:09.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:53:09.735 [DEBUG] [Thread-124056 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:53:10.465 [DEBUG] [Thread-124057 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:53:12.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 53, 1), 30.77, 11.4, 0.0, 17.4, 19.11, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:53:12.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:53:01
2025-11-03T22:53:12.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:53:12.627 [DEBUG] [Thread-124058] [transport.py] [_log()] starting thread (client mode): 0xedb0e80
2025-11-03T22:53:12.634 [DEBUG] [Thread-124058] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:53:12.637 [DEBUG] [Thread-124058] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:53:12.639 [INFO] [Thread-124058] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:53:12.675 [DEBUG] [Thread-124058] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:53:12.677 [DEBUG] [Thread-124058] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:53:12.677 [DEBUG] [Thread-124058] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:53:12.677 [DEBUG] [Thread-124058] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:53:12.677 [DEBUG] [Thread-124058] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:53:12.677 [DEBUG] [Thread-124058] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:53:12.677 [DEBUG] [Thread-124058] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:53:12.677 [DEBUG] [Thread-124058] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:53:12.677 [DEBUG] [Thread-124058] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:53:12.677 [DEBUG] [Thread-124058] [transport.py] [_log()] client lang: <none>
2025-11-03T22:53:12.677 [DEBUG] [Thread-124058] [transport.py] [_log()] server lang: <none>
2025-11-03T22:53:12.677 [DEBUG] [Thread-124058] [transport.py] [_log()] kex follows: False
2025-11-03T22:53:12.677 [DEBUG] [Thread-124058] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:53:12.679 [DEBUG] [Thread-124058] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:53:12.679 [DEBUG] [Thread-124058] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:53:12.679 [DEBUG] [Thread-124058] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:53:12.679 [DEBUG] [Thread-124058] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:53:12.679 [DEBUG] [Thread-124058] [transport.py] [_log()] Compression: none
2025-11-03T22:53:12.679 [DEBUG] [Thread-124058] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:53:12.748 [DEBUG] [Thread-124058] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:53:12.764 [DEBUG] [Thread-124058] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:53:12.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:53:12.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:53:12.794 [DEBUG] [Thread-124058] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:53:12.798 [DEBUG] [Thread-124058] [transport.py] [_log()] userauth is OK
2025-11-03T22:53:12.798 [DEBUG] [Thread-124058] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:53:12.800 [DEBUG] [Thread-124058] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:53:12.800 [DEBUG] [Thread-124058] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:53:12.800 [DEBUG] [Thread-124058] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:53:12.858 [INFO] [Thread-124058] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:53:12.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:53:13.468 [DEBUG] [Thread-124058] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:53:13.468 [DEBUG] [Thread-124058] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:53:13.468 [DEBUG] [Thread-124058] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:53:13.509 [DEBUG] [Thread-124058] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:53:13.509 [DEBUG] [Thread-124058] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:53:13.520 [DEBUG] [Thread-124058] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:53:13.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:53:13.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:53:13.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:53:13.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:53:13.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:53:13.539 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:53:13.539 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:53:13.539 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:53:13.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:53:13.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.869891 -999.00  +19.00  11.71     16   -6.70 1 1 1 1 1     0    0 26.09 -5.16 ZNESW 13.9 11.7 309.2 19.2 19.2 -25.6 19.1 -24.7 18.9 -24.2 19.2 -25.3
2025-11-03T22:53:13.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:53:13.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:53:13.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.869891
2025-11-03T22:53:13.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:53:13.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:53:13.547 [DEBUG] [Thread-124058] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:53:13.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:53:13.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:53:13.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:53:13.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:53:01', tmtdew=30.77, humidity=11.4, cloud=0.0, wind=17.4, temperature=19.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:53:02', seeing=1.07, atlas_timestamp='2025-11-03T20:52:38.582', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006750000000000256, 0.04224999999999923, 0.09375, -0.03850000000000087, 0.01699999999999946, 0.04625000000000057, -0.21000000000000085, -0.19374999999999964, 0.005499999999999616, 0.02149999999999963, 0.10125000000000028, 0.1070000000000011, 0.030999999999998806, -0.00575000000000081, -0.5045000000000002, -0.6560000000000006, 0.02325000000000088, 0.08549999999999969, 0.16499999999999915, 0.11224999999999952, 0.1609999999999996, 0.09474999999999945, -0.45974999999999966, -0.05925000000000047, 0.08099999999999952, 0.12650000000000006, 0.18274999999999864, 0.20250000000000057, 0.17650000000000077, 0.04800000000000182, -0.06550000000000011, -0.0004999999999988347, 0.09574999999999889], zp_timestamp='2025-11-03T20:49:00')
2025-11-03T22:53:13.620 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:53:13.631 [DEBUG] [Thread-124061] [transport.py] [_log()] starting thread (client mode): 0xedb3ee0
2025-11-03T22:53:13.631 [DEBUG] [Thread-124061] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:53:13.646 [DEBUG] [Thread-124061] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:53:13.646 [INFO] [Thread-124061] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:53:13.654 [DEBUG] [Thread-124061] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:53:13.654 [DEBUG] [Thread-124061] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:53:13.654 [DEBUG] [Thread-124061] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:53:13.654 [DEBUG] [Thread-124061] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:53:13.654 [DEBUG] [Thread-124061] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:53:13.654 [DEBUG] [Thread-124061] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:53:13.654 [DEBUG] [Thread-124061] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:53:13.654 [DEBUG] [Thread-124061] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:53:13.654 [DEBUG] [Thread-124061] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:53:13.654 [DEBUG] [Thread-124061] [transport.py] [_log()] client lang: <none>
2025-11-03T22:53:13.654 [DEBUG] [Thread-124061] [transport.py] [_log()] server lang: <none>
2025-11-03T22:53:13.654 [DEBUG] [Thread-124061] [transport.py] [_log()] kex follows: False
2025-11-03T22:53:13.654 [DEBUG] [Thread-124061] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:53:13.654 [DEBUG] [Thread-124061] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:53:13.654 [DEBUG] [Thread-124061] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:53:13.654 [DEBUG] [Thread-124061] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:53:13.654 [DEBUG] [Thread-124061] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:53:13.654 [DEBUG] [Thread-124061] [transport.py] [_log()] Compression: none
2025-11-03T22:53:13.654 [DEBUG] [Thread-124061] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:53:13.710 [DEBUG] [Thread-124061] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:53:13.710 [DEBUG] [Thread-124061] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:53:13.710 [DEBUG] [Thread-124061] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:53:13.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:53:13.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:53:13.768 [DEBUG] [Thread-124061] [transport.py] [_log()] userauth is OK
2025-11-03T22:53:13.768 [DEBUG] [Thread-124061] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:53:13.768 [DEBUG] [Thread-124061] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:53:13.768 [DEBUG] [Thread-124061] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:53:13.768 [DEBUG] [Thread-124061] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:53:13.781 [INFO] [Thread-124061] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:53:13.781 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:53:13.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:53:14.572 [DEBUG] [Thread-124061] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:53:14.572 [DEBUG] [Thread-124061] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:53:14.620 [DEBUG] [Thread-124061] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:53:14.620 [DEBUG] [Thread-124061] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:53:14.629 [DEBUG] [Thread-124061] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:53:14.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:53:14.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:53:14.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:53:14.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:53:14.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:53:14.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:53:14.689 [DEBUG] [Thread-124061] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:53:25.502 [DEBUG] [Thread-124063 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:53:40.630 [DEBUG] [Thread-124064 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:53:44.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:53:44.701 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:53:44.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:53:45.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 53, 34), 30.65, 11.41, 0.0, 15.47, 19.05, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:53:45.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:53:34
2025-11-03T22:53:45.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:53:45.681 [DEBUG] [Thread-124065] [transport.py] [_log()] starting thread (client mode): 0xedb3e50
2025-11-03T22:53:45.681 [DEBUG] [Thread-124065] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:53:45.697 [DEBUG] [Thread-124065] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:53:45.697 [INFO] [Thread-124065] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:53:45.701 [DEBUG] [Thread-124065] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:53:45.701 [DEBUG] [Thread-124065] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:53:45.701 [DEBUG] [Thread-124065] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:53:45.701 [DEBUG] [Thread-124065] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:53:45.701 [DEBUG] [Thread-124065] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:53:45.701 [DEBUG] [Thread-124065] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:53:45.701 [DEBUG] [Thread-124065] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:53:45.701 [DEBUG] [Thread-124065] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:53:45.701 [DEBUG] [Thread-124065] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:53:45.701 [DEBUG] [Thread-124065] [transport.py] [_log()] client lang: <none>
2025-11-03T22:53:45.701 [DEBUG] [Thread-124065] [transport.py] [_log()] server lang: <none>
2025-11-03T22:53:45.701 [DEBUG] [Thread-124065] [transport.py] [_log()] kex follows: False
2025-11-03T22:53:45.701 [DEBUG] [Thread-124065] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:53:45.701 [DEBUG] [Thread-124065] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:53:45.701 [DEBUG] [Thread-124065] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:53:45.701 [DEBUG] [Thread-124065] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:53:45.701 [DEBUG] [Thread-124065] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:53:45.701 [DEBUG] [Thread-124065] [transport.py] [_log()] Compression: none
2025-11-03T22:53:45.701 [DEBUG] [Thread-124065] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:53:45.717 [DEBUG] [Thread-124065] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:53:45.717 [DEBUG] [Thread-124065] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:53:45.717 [DEBUG] [Thread-124065] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:53:45.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:53:45.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:53:45.718 [DEBUG] [Thread-124065] [transport.py] [_log()] userauth is OK
2025-11-03T22:53:45.718 [DEBUG] [Thread-124065] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:53:45.718 [DEBUG] [Thread-124065] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:53:45.718 [DEBUG] [Thread-124065] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:53:45.718 [DEBUG] [Thread-124065] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:53:45.728 [INFO] [Thread-124065] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:53:45.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:53:46.327 [DEBUG] [Thread-124065] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:53:46.328 [DEBUG] [Thread-124065] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:53:46.328 [DEBUG] [Thread-124065] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:53:46.367 [DEBUG] [Thread-124065] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:53:46.368 [DEBUG] [Thread-124065] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:53:46.371 [DEBUG] [Thread-124065] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:53:46.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:53:46.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:53:46.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:53:46.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:53:46.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:53:46.391 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:53:46.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:53:46.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:53:46.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:53:46.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.870586 -999.00  +19.00  14.36     16   -6.70 1 1 1 1 1     0    0 25.76 -9.73 ZNESW 11.7 14.4 318.8 16.9 19.3 -25.7 19.2 -24.8 18.9 -24.3 19.2 -25.4
2025-11-03T22:53:46.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:53:46.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:53:46.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.870586
2025-11-03T22:53:46.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:53:46.394 [DEBUG] [Thread-124065] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:53:46.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:53:46.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:53:46.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:53:46.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:53:46.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:53:34', tmtdew=30.65, humidity=11.41, cloud=0.0, wind=15.47, temperature=19.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:53:35', seeing=1.07, atlas_timestamp='2025-11-03T20:53:38.630', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006750000000000256, 0.04224999999999923, 0.09375, -0.03850000000000087, 0.01699999999999946, 0.04625000000000057, -0.21000000000000085, -0.19374999999999964, 0.005499999999999616, 0.02149999999999963, 0.10125000000000028, 0.1070000000000011, 0.030999999999998806, -0.00575000000000081, -0.5045000000000002, -0.6560000000000006, 0.02325000000000088, 0.08549999999999969, 0.16499999999999915, 0.11224999999999952, 0.1609999999999996, 0.09474999999999945, -0.45974999999999966, -0.05925000000000047, 0.08099999999999952, 0.12650000000000006, 0.18274999999999864, 0.20250000000000057, 0.17650000000000077, 0.04800000000000182, -0.06550000000000011, -0.0004999999999988347, 0.09574999999999889], zp_timestamp='2025-11-03T20:49:00')
2025-11-03T22:53:46.477 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:53:46.491 [DEBUG] [Thread-124068] [transport.py] [_log()] starting thread (client mode): 0xedb1420
2025-11-03T22:53:46.491 [DEBUG] [Thread-124068] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:53:46.507 [DEBUG] [Thread-124068] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:53:46.507 [INFO] [Thread-124068] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:53:46.517 [DEBUG] [Thread-124068] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:53:46.517 [DEBUG] [Thread-124068] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:53:46.517 [DEBUG] [Thread-124068] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:53:46.517 [DEBUG] [Thread-124068] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:53:46.517 [DEBUG] [Thread-124068] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:53:46.517 [DEBUG] [Thread-124068] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:53:46.517 [DEBUG] [Thread-124068] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:53:46.517 [DEBUG] [Thread-124068] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:53:46.518 [DEBUG] [Thread-124068] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:53:46.518 [DEBUG] [Thread-124068] [transport.py] [_log()] client lang: <none>
2025-11-03T22:53:46.518 [DEBUG] [Thread-124068] [transport.py] [_log()] server lang: <none>
2025-11-03T22:53:46.518 [DEBUG] [Thread-124068] [transport.py] [_log()] kex follows: False
2025-11-03T22:53:46.518 [DEBUG] [Thread-124068] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:53:46.518 [DEBUG] [Thread-124068] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:53:46.518 [DEBUG] [Thread-124068] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:53:46.518 [DEBUG] [Thread-124068] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:53:46.518 [DEBUG] [Thread-124068] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:53:46.518 [DEBUG] [Thread-124068] [transport.py] [_log()] Compression: none
2025-11-03T22:53:46.518 [DEBUG] [Thread-124068] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:53:46.581 [DEBUG] [Thread-124068] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:53:46.582 [DEBUG] [Thread-124068] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:53:46.582 [DEBUG] [Thread-124068] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:53:46.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:53:46.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:53:46.641 [DEBUG] [Thread-124068] [transport.py] [_log()] userauth is OK
2025-11-03T22:53:46.641 [DEBUG] [Thread-124068] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:53:46.641 [DEBUG] [Thread-124068] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:53:46.641 [DEBUG] [Thread-124068] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:53:46.642 [DEBUG] [Thread-124068] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:53:46.661 [INFO] [Thread-124068] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:53:46.661 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:53:46.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:53:47.525 [DEBUG] [Thread-124068] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:53:47.525 [DEBUG] [Thread-124068] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:53:47.573 [DEBUG] [Thread-124068] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:53:47.573 [DEBUG] [Thread-124068] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:53:47.582 [DEBUG] [Thread-124068] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:53:47.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:53:47.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:53:47.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:53:47.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:53:47.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:53:47.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:53:47.613 [DEBUG] [Thread-124068] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:53:55.672 [DEBUG] [Thread-124070 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:53:59.328 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:53:59.329 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:54:09.973 [DEBUG] [Thread-124071 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:54:10.712 [DEBUG] [Thread-124072 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:54:17.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:54:17.631 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:54:17.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:54:18.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 54, 7), 30.57, 11.48, 0.0, 15.53, 18.98, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:54:18.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:54:07
2025-11-03T22:54:18.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:54:19.136 [DEBUG] [Thread-124073] [transport.py] [_log()] starting thread (client mode): 0xeda27a0
2025-11-03T22:54:19.142 [DEBUG] [Thread-124073] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:54:19.147 [DEBUG] [Thread-124073] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:54:19.148 [INFO] [Thread-124073] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:54:19.163 [DEBUG] [Thread-124073] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:54:19.164 [DEBUG] [Thread-124073] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:54:19.164 [DEBUG] [Thread-124073] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:54:19.164 [DEBUG] [Thread-124073] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:54:19.164 [DEBUG] [Thread-124073] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:54:19.164 [DEBUG] [Thread-124073] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:54:19.164 [DEBUG] [Thread-124073] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:54:19.164 [DEBUG] [Thread-124073] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:54:19.165 [DEBUG] [Thread-124073] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:54:19.165 [DEBUG] [Thread-124073] [transport.py] [_log()] client lang: <none>
2025-11-03T22:54:19.165 [DEBUG] [Thread-124073] [transport.py] [_log()] server lang: <none>
2025-11-03T22:54:19.165 [DEBUG] [Thread-124073] [transport.py] [_log()] kex follows: False
2025-11-03T22:54:19.165 [DEBUG] [Thread-124073] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:54:19.166 [DEBUG] [Thread-124073] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:54:19.166 [DEBUG] [Thread-124073] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:54:19.166 [DEBUG] [Thread-124073] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:54:19.166 [DEBUG] [Thread-124073] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:54:19.166 [DEBUG] [Thread-124073] [transport.py] [_log()] Compression: none
2025-11-03T22:54:19.166 [DEBUG] [Thread-124073] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:54:19.206 [DEBUG] [Thread-124073] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:54:19.220 [DEBUG] [Thread-124073] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:54:19.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:54:19.232 [DEBUG] [Thread-124073] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:54:19.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:54:19.238 [DEBUG] [Thread-124073] [transport.py] [_log()] userauth is OK
2025-11-03T22:54:19.238 [DEBUG] [Thread-124073] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:54:19.238 [DEBUG] [Thread-124073] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:54:19.238 [DEBUG] [Thread-124073] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:54:19.238 [DEBUG] [Thread-124073] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:54:19.268 [INFO] [Thread-124073] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:54:19.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:54:19.934 [DEBUG] [Thread-124073] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:54:19.934 [DEBUG] [Thread-124073] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:54:19.935 [DEBUG] [Thread-124073] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:54:19.935 [DEBUG] [Thread-124073] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:54:19.935 [DEBUG] [Thread-124073] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:54:19.937 [DEBUG] [Thread-124073] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:54:19.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:54:19.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:54:19.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:54:19.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:54:19.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:54:19.955 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:54:19.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:54:19.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:54:19.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:54:19.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.870933 -999.00  +19.00  15.09     16   -6.70 1 1 1 1 1     0    0 25.74 -11.99 ZNESW 14.5 15.1 312.7 17.0 19.2 -25.8 19.2 -24.8 18.9 -24.3 19.1 -25.3
2025-11-03T22:54:19.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:54:19.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:54:19.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.870933
2025-11-03T22:54:19.964 [DEBUG] [Thread-124073] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:54:19.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:54:20.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:54:20.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:54:20.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:54:20.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:54:20.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:54:07', tmtdew=30.57, humidity=11.48, cloud=0.0, wind=15.53, temperature=18.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:54:07', seeing=1.07, atlas_timestamp='2025-11-03T20:54:08.611', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006750000000000256, 0.04224999999999923, 0.09375, -0.03850000000000087, 0.01699999999999946, 0.04625000000000057, -0.21000000000000085, -0.19374999999999964, 0.005499999999999616, 0.02149999999999963, 0.10125000000000028, 0.1070000000000011, 0.030999999999998806, -0.00575000000000081, -0.5045000000000002, -0.6560000000000006, 0.02325000000000088, 0.08549999999999969, 0.16499999999999915, 0.11224999999999952, 0.1609999999999996, 0.09474999999999945, -0.45974999999999966, -0.05925000000000047, 0.08099999999999952, 0.12650000000000006, 0.18274999999999864, 0.20250000000000057, 0.17650000000000077, 0.04800000000000182, -0.06550000000000011, -0.0004999999999988347, 0.09574999999999889], zp_timestamp='2025-11-03T20:52:00')
2025-11-03T22:54:20.107 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:54:20.121 [DEBUG] [Thread-124076] [transport.py] [_log()] starting thread (client mode): 0xeda3d00
2025-11-03T22:54:20.121 [DEBUG] [Thread-124076] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:54:20.140 [DEBUG] [Thread-124076] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:54:20.140 [INFO] [Thread-124076] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:54:20.153 [DEBUG] [Thread-124076] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:54:20.153 [DEBUG] [Thread-124076] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:54:20.153 [DEBUG] [Thread-124076] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:54:20.153 [DEBUG] [Thread-124076] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:54:20.153 [DEBUG] [Thread-124076] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:54:20.153 [DEBUG] [Thread-124076] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:54:20.153 [DEBUG] [Thread-124076] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:54:20.153 [DEBUG] [Thread-124076] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:54:20.154 [DEBUG] [Thread-124076] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:54:20.154 [DEBUG] [Thread-124076] [transport.py] [_log()] client lang: <none>
2025-11-03T22:54:20.154 [DEBUG] [Thread-124076] [transport.py] [_log()] server lang: <none>
2025-11-03T22:54:20.154 [DEBUG] [Thread-124076] [transport.py] [_log()] kex follows: False
2025-11-03T22:54:20.154 [DEBUG] [Thread-124076] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:54:20.154 [DEBUG] [Thread-124076] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:54:20.154 [DEBUG] [Thread-124076] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:54:20.154 [DEBUG] [Thread-124076] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:54:20.154 [DEBUG] [Thread-124076] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:54:20.154 [DEBUG] [Thread-124076] [transport.py] [_log()] Compression: none
2025-11-03T22:54:20.154 [DEBUG] [Thread-124076] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:54:20.217 [DEBUG] [Thread-124076] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:54:20.217 [DEBUG] [Thread-124076] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:54:20.218 [DEBUG] [Thread-124076] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:54:20.218 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:54:20.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:54:20.276 [DEBUG] [Thread-124076] [transport.py] [_log()] userauth is OK
2025-11-03T22:54:20.276 [DEBUG] [Thread-124076] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:54:20.276 [DEBUG] [Thread-124076] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:54:20.276 [DEBUG] [Thread-124076] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:54:20.276 [DEBUG] [Thread-124076] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:54:20.302 [INFO] [Thread-124076] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:54:20.303 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:54:20.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:54:21.172 [DEBUG] [Thread-124076] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:54:21.172 [DEBUG] [Thread-124076] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:54:21.220 [DEBUG] [Thread-124076] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:54:21.220 [DEBUG] [Thread-124076] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:54:21.230 [DEBUG] [Thread-124076] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:54:21.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:54:21.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:54:21.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:54:21.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:54:21.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:54:21.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:54:21.283 [DEBUG] [Thread-124076] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:54:25.743 [DEBUG] [Thread-124078 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:54:41.068 [DEBUG] [Thread-124079 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:54:51.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:54:51.285 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:54:51.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:54:52.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 54, 39), 30.52, 11.48, 0.0, 15.72, 18.95, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:54:52.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:54:39
2025-11-03T22:54:52.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:54:52.368 [DEBUG] [Thread-124080] [transport.py] [_log()] starting thread (client mode): 0xed40700
2025-11-03T22:54:52.368 [DEBUG] [Thread-124080] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:54:52.389 [DEBUG] [Thread-124080] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:54:52.389 [INFO] [Thread-124080] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:54:52.399 [DEBUG] [Thread-124080] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:54:52.399 [DEBUG] [Thread-124080] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:54:52.399 [DEBUG] [Thread-124080] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:54:52.400 [DEBUG] [Thread-124080] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:54:52.400 [DEBUG] [Thread-124080] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:54:52.400 [DEBUG] [Thread-124080] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:54:52.400 [DEBUG] [Thread-124080] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:54:52.400 [DEBUG] [Thread-124080] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:54:52.400 [DEBUG] [Thread-124080] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:54:52.401 [DEBUG] [Thread-124080] [transport.py] [_log()] client lang: <none>
2025-11-03T22:54:52.401 [DEBUG] [Thread-124080] [transport.py] [_log()] server lang: <none>
2025-11-03T22:54:52.401 [DEBUG] [Thread-124080] [transport.py] [_log()] kex follows: False
2025-11-03T22:54:52.401 [DEBUG] [Thread-124080] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:54:52.401 [DEBUG] [Thread-124080] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:54:52.401 [DEBUG] [Thread-124080] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:54:52.401 [DEBUG] [Thread-124080] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:54:52.402 [DEBUG] [Thread-124080] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:54:52.402 [DEBUG] [Thread-124080] [transport.py] [_log()] Compression: none
2025-11-03T22:54:52.402 [DEBUG] [Thread-124080] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:54:52.417 [DEBUG] [Thread-124080] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:54:52.418 [DEBUG] [Thread-124080] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:54:52.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:54:52.419 [DEBUG] [Thread-124080] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:54:52.420 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:54:52.421 [DEBUG] [Thread-124080] [transport.py] [_log()] userauth is OK
2025-11-03T22:54:52.421 [DEBUG] [Thread-124080] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:54:52.422 [DEBUG] [Thread-124080] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:54:52.422 [DEBUG] [Thread-124080] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:54:52.422 [DEBUG] [Thread-124080] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:54:52.458 [INFO] [Thread-124080] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:54:52.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:54:53.038 [DEBUG] [Thread-124080] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:54:53.038 [DEBUG] [Thread-124080] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:54:53.038 [DEBUG] [Thread-124080] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:54:53.078 [DEBUG] [Thread-124080] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:54:53.078 [DEBUG] [Thread-124080] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:54:53.081 [DEBUG] [Thread-124080] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:54:53.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:54:53.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:54:53.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:54:53.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:54:53.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:54:53.098 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:54:53.098 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:54:53.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:54:53.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:54:53.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.871280 -999.00  +19.00  13.01     16   -6.60 1 1 1 1 1     0    0 25.41 -12.94 ZNESW 12.7 13.0 311.2 17.0 19.2 -25.7 19.1 -24.6 18.9 -24.2 19.1 -25.2
2025-11-03T22:54:53.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:54:53.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:54:53.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.871280
2025-11-03T22:54:53.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:54:53.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:54:53.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:54:53.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:54:53.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:54:53.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:54:39', tmtdew=30.52, humidity=11.48, cloud=0.0, wind=15.72, temperature=18.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:54:40', seeing=1.05, atlas_timestamp='2025-11-03T20:54:38.592', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006750000000000256, 0.04224999999999923, 0.09375, -0.03850000000000087, 0.01699999999999946, 0.04625000000000057, -0.21000000000000085, -0.19374999999999964, 0.005499999999999616, 0.02149999999999963, 0.10125000000000028, 0.1070000000000011, 0.030999999999998806, -0.00575000000000081, -0.5045000000000002, -0.6560000000000006, 0.02325000000000088, 0.08549999999999969, 0.16499999999999915, 0.11224999999999952, 0.1609999999999996, 0.09474999999999945, -0.45974999999999966, -0.05925000000000047, 0.08099999999999952, 0.12650000000000006, 0.18274999999999864, 0.20250000000000057, 0.17650000000000077, 0.04800000000000182, -0.06550000000000011, -0.0004999999999988347, 0.09574999999999889], zp_timestamp='2025-11-03T20:52:00')
2025-11-03T22:54:53.099 [DEBUG] [Thread-124080] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:54:53.172 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:54:53.185 [DEBUG] [Thread-124083] [transport.py] [_log()] starting thread (client mode): 0xed40a00
2025-11-03T22:54:53.185 [DEBUG] [Thread-124083] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:54:53.199 [DEBUG] [Thread-124083] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:54:53.199 [INFO] [Thread-124083] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:54:53.206 [DEBUG] [Thread-124083] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:54:53.206 [DEBUG] [Thread-124083] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:54:53.206 [DEBUG] [Thread-124083] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:54:53.206 [DEBUG] [Thread-124083] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:54:53.206 [DEBUG] [Thread-124083] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:54:53.206 [DEBUG] [Thread-124083] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:54:53.206 [DEBUG] [Thread-124083] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:54:53.206 [DEBUG] [Thread-124083] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:54:53.206 [DEBUG] [Thread-124083] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:54:53.206 [DEBUG] [Thread-124083] [transport.py] [_log()] client lang: <none>
2025-11-03T22:54:53.206 [DEBUG] [Thread-124083] [transport.py] [_log()] server lang: <none>
2025-11-03T22:54:53.207 [DEBUG] [Thread-124083] [transport.py] [_log()] kex follows: False
2025-11-03T22:54:53.207 [DEBUG] [Thread-124083] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:54:53.207 [DEBUG] [Thread-124083] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:54:53.207 [DEBUG] [Thread-124083] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:54:53.207 [DEBUG] [Thread-124083] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:54:53.207 [DEBUG] [Thread-124083] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:54:53.207 [DEBUG] [Thread-124083] [transport.py] [_log()] Compression: none
2025-11-03T22:54:53.207 [DEBUG] [Thread-124083] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:54:53.269 [DEBUG] [Thread-124083] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:54:53.270 [DEBUG] [Thread-124083] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:54:53.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:54:53.271 [DEBUG] [Thread-124083] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:54:53.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:54:53.332 [DEBUG] [Thread-124083] [transport.py] [_log()] userauth is OK
2025-11-03T22:54:53.332 [DEBUG] [Thread-124083] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:54:53.332 [DEBUG] [Thread-124083] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:54:53.332 [DEBUG] [Thread-124083] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:54:53.332 [DEBUG] [Thread-124083] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:54:53.346 [INFO] [Thread-124083] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:54:53.346 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:54:53.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:54:54.130 [DEBUG] [Thread-124083] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:54:54.130 [DEBUG] [Thread-124083] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:54:54.178 [DEBUG] [Thread-124083] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:54:54.179 [DEBUG] [Thread-124083] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:54:54.187 [DEBUG] [Thread-124083] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:54:54.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:54:54.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:54:54.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:54:54.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:54:54.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:54:54.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:54:54.221 [DEBUG] [Thread-124083] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:54:56.096 [DEBUG] [Thread-124085 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:54:59.531 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:54:59.532 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:55:10.248 [DEBUG] [Thread-124086 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:55:11.145 [DEBUG] [Thread-124087 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:55:24.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:55:24.247 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:55:24.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:55:25.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 55, 12), 30.56, 11.45, 0.0, 15.46, 18.95, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:55:25.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:55:12
2025-11-03T22:55:25.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:55:25.354 [DEBUG] [Thread-124088] [transport.py] [_log()] starting thread (client mode): 0xed40e20
2025-11-03T22:55:25.354 [DEBUG] [Thread-124088] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:55:25.361 [DEBUG] [Thread-124088] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:55:25.361 [INFO] [Thread-124088] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:55:25.364 [DEBUG] [Thread-124088] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:55:25.365 [DEBUG] [Thread-124088] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:55:25.365 [DEBUG] [Thread-124088] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:55:25.365 [DEBUG] [Thread-124088] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:55:25.365 [DEBUG] [Thread-124088] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:55:25.365 [DEBUG] [Thread-124088] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:55:25.365 [DEBUG] [Thread-124088] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:55:25.365 [DEBUG] [Thread-124088] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:55:25.365 [DEBUG] [Thread-124088] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:55:25.365 [DEBUG] [Thread-124088] [transport.py] [_log()] client lang: <none>
2025-11-03T22:55:25.365 [DEBUG] [Thread-124088] [transport.py] [_log()] server lang: <none>
2025-11-03T22:55:25.365 [DEBUG] [Thread-124088] [transport.py] [_log()] kex follows: False
2025-11-03T22:55:25.365 [DEBUG] [Thread-124088] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:55:25.365 [DEBUG] [Thread-124088] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:55:25.365 [DEBUG] [Thread-124088] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:55:25.365 [DEBUG] [Thread-124088] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:55:25.365 [DEBUG] [Thread-124088] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:55:25.365 [DEBUG] [Thread-124088] [transport.py] [_log()] Compression: none
2025-11-03T22:55:25.365 [DEBUG] [Thread-124088] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:55:25.384 [DEBUG] [Thread-124088] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:55:25.386 [DEBUG] [Thread-124088] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:55:25.387 [DEBUG] [Thread-124088] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:55:25.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:55:25.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:55:25.428 [DEBUG] [Thread-124088] [transport.py] [_log()] userauth is OK
2025-11-03T22:55:25.428 [DEBUG] [Thread-124088] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:55:25.428 [DEBUG] [Thread-124088] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:55:25.428 [DEBUG] [Thread-124088] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:55:25.428 [DEBUG] [Thread-124088] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:55:25.446 [INFO] [Thread-124088] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:55:25.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:55:26.081 [DEBUG] [Thread-124088] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:55:26.082 [DEBUG] [Thread-124088] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:55:26.083 [DEBUG] [Thread-124088] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:55:26.123 [DEBUG] [Thread-124088] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:55:26.123 [DEBUG] [Thread-124088] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:55:26.127 [DEBUG] [Thread-124088] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:55:26.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:55:26.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:55:26.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:55:26.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:55:26.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:55:26.154 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:55:26.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:55:26.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:55:26.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:55:26.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.871280 -999.00  +19.00  13.01     16   -6.60 1 1 1 1 1     0    0 25.41 -12.94 ZNESW 12.7 13.0 311.2 17.0 19.2 -25.7 19.1 -24.6 18.9 -24.2 19.1 -25.2
2025-11-03T22:55:26.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:55:26.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:55:26.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.871280
2025-11-03T22:55:26.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:55:26.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:55:26.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:55:26.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:55:26.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:55:26.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:55:12', tmtdew=30.56, humidity=11.45, cloud=0.0, wind=15.46, temperature=18.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:55:12', seeing=1.05, atlas_timestamp='2025-11-03T20:54:38.592', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006750000000000256, 0.04224999999999923, 0.09375, -0.03850000000000087, 0.01699999999999946, 0.04625000000000057, -0.21000000000000085, -0.19374999999999964, 0.005499999999999616, 0.02149999999999963, 0.10125000000000028, 0.1070000000000011, 0.030999999999998806, -0.00575000000000081, -0.5045000000000002, -0.6560000000000006, 0.02325000000000088, 0.08549999999999969, 0.16499999999999915, 0.11224999999999952, 0.1609999999999996, 0.09474999999999945, -0.45974999999999966, -0.05925000000000047, 0.08099999999999952, 0.12650000000000006, 0.18274999999999864, 0.20250000000000057, 0.17650000000000077, 0.04800000000000182, -0.06550000000000011, -0.0004999999999988347, 0.09574999999999889], zp_timestamp='2025-11-03T20:52:00')
2025-11-03T22:55:26.165 [DEBUG] [Thread-124088] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:55:26.180 [DEBUG] [Thread-124091 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:55:26.250 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:55:26.261 [DEBUG] [Thread-124092] [transport.py] [_log()] starting thread (client mode): 0xedb1e40
2025-11-03T22:55:26.261 [DEBUG] [Thread-124092] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:55:26.279 [DEBUG] [Thread-124092] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:55:26.279 [INFO] [Thread-124092] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:55:26.288 [DEBUG] [Thread-124092] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:55:26.288 [DEBUG] [Thread-124092] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:55:26.288 [DEBUG] [Thread-124092] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:55:26.289 [DEBUG] [Thread-124092] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:55:26.289 [DEBUG] [Thread-124092] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:55:26.289 [DEBUG] [Thread-124092] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:55:26.289 [DEBUG] [Thread-124092] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:55:26.289 [DEBUG] [Thread-124092] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:55:26.289 [DEBUG] [Thread-124092] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:55:26.289 [DEBUG] [Thread-124092] [transport.py] [_log()] client lang: <none>
2025-11-03T22:55:26.289 [DEBUG] [Thread-124092] [transport.py] [_log()] server lang: <none>
2025-11-03T22:55:26.289 [DEBUG] [Thread-124092] [transport.py] [_log()] kex follows: False
2025-11-03T22:55:26.289 [DEBUG] [Thread-124092] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:55:26.289 [DEBUG] [Thread-124092] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:55:26.289 [DEBUG] [Thread-124092] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:55:26.290 [DEBUG] [Thread-124092] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:55:26.290 [DEBUG] [Thread-124092] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:55:26.290 [DEBUG] [Thread-124092] [transport.py] [_log()] Compression: none
2025-11-03T22:55:26.290 [DEBUG] [Thread-124092] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:55:26.353 [DEBUG] [Thread-124092] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:55:26.354 [DEBUG] [Thread-124092] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:55:26.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:55:26.355 [DEBUG] [Thread-124092] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:55:26.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:55:26.412 [DEBUG] [Thread-124092] [transport.py] [_log()] userauth is OK
2025-11-03T22:55:26.412 [DEBUG] [Thread-124092] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:55:26.413 [DEBUG] [Thread-124092] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:55:26.413 [DEBUG] [Thread-124092] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:55:26.413 [DEBUG] [Thread-124092] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:55:26.433 [INFO] [Thread-124092] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:55:26.433 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:55:26.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:55:27.267 [DEBUG] [Thread-124092] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:55:27.267 [DEBUG] [Thread-124092] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:55:27.315 [DEBUG] [Thread-124092] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:55:27.316 [DEBUG] [Thread-124092] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:55:27.326 [DEBUG] [Thread-124092] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:55:27.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:55:27.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:55:27.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:55:27.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:55:27.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:55:27.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:55:27.367 [DEBUG] [Thread-124092] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:55:41.222 [DEBUG] [Thread-124094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:55:56.045 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:55:56.262 [DEBUG] [Thread-124095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:55:57.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:55:57.391 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:55:57.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:55:59.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 55, 44), 30.58, 11.41, 0.0, 17.33, 18.95, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:55:59.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:55:44
2025-11-03T22:55:59.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:55:59.516 [DEBUG] [Thread-124096] [transport.py] [_log()] starting thread (client mode): 0xedb3310
2025-11-03T22:55:59.518 [DEBUG] [Thread-124096] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:55:59.536 [DEBUG] [Thread-124096] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:55:59.536 [INFO] [Thread-124096] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:55:59.547 [DEBUG] [Thread-124096] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:55:59.548 [DEBUG] [Thread-124096] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:55:59.548 [DEBUG] [Thread-124096] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:55:59.548 [DEBUG] [Thread-124096] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:55:59.548 [DEBUG] [Thread-124096] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:55:59.549 [DEBUG] [Thread-124096] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:55:59.549 [DEBUG] [Thread-124096] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:55:59.549 [DEBUG] [Thread-124096] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:55:59.549 [DEBUG] [Thread-124096] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:55:59.549 [DEBUG] [Thread-124096] [transport.py] [_log()] client lang: <none>
2025-11-03T22:55:59.549 [DEBUG] [Thread-124096] [transport.py] [_log()] server lang: <none>
2025-11-03T22:55:59.549 [DEBUG] [Thread-124096] [transport.py] [_log()] kex follows: False
2025-11-03T22:55:59.549 [DEBUG] [Thread-124096] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:55:59.549 [DEBUG] [Thread-124096] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:55:59.549 [DEBUG] [Thread-124096] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:55:59.549 [DEBUG] [Thread-124096] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:55:59.549 [DEBUG] [Thread-124096] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:55:59.549 [DEBUG] [Thread-124096] [transport.py] [_log()] Compression: none
2025-11-03T22:55:59.549 [DEBUG] [Thread-124096] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:55:59.564 [DEBUG] [Thread-124096] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:55:59.565 [DEBUG] [Thread-124096] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:55:59.566 [DEBUG] [Thread-124096] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:55:59.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:55:59.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:55:59.573 [DEBUG] [Thread-124096] [transport.py] [_log()] userauth is OK
2025-11-03T22:55:59.573 [DEBUG] [Thread-124096] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:55:59.573 [DEBUG] [Thread-124096] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:55:59.574 [DEBUG] [Thread-124096] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:55:59.574 [DEBUG] [Thread-124096] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:55:59.599 [INFO] [Thread-124096] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:55:59.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:55:59.762 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:55:59.764 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:56:00.407 [DEBUG] [Thread-124096] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:56:00.407 [DEBUG] [Thread-124096] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:56:00.407 [DEBUG] [Thread-124096] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:56:00.448 [DEBUG] [Thread-124096] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:56:00.448 [DEBUG] [Thread-124096] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:56:00.451 [DEBUG] [Thread-124096] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:56:00.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:56:00.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:56:00.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:56:00.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:56:00.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:56:00.470 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:56:00.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:56:00.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:56:00.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:56:00.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.871627 -999.00  +19.00  12.43     16   -6.60 1 1 1 1 1     0    0 25.50 -14.83 ZNESW 14.3 12.4 307.8 17.8 19.2 -25.6 19.1 -24.7 18.9 -24.4 19.1 -25.4
2025-11-03T22:56:00.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:56:00.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:56:00.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.871627
2025-11-03T22:56:00.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:56:00.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:56:00.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:56:00.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:56:00.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:56:00.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:55:44', tmtdew=30.58, humidity=11.41, cloud=0.0, wind=17.33, temperature=18.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:55:45', seeing=1.26, atlas_timestamp='2025-11-03T20:55:08.573', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006750000000000256, 0.04224999999999923, 0.09375, -0.03850000000000087, 0.01699999999999946, 0.04625000000000057, -0.21000000000000085, -0.19374999999999964, 0.005499999999999616, 0.02149999999999963, 0.10125000000000028, 0.1070000000000011, 0.030999999999998806, -0.00575000000000081, -0.5045000000000002, -0.6560000000000006, 0.02325000000000088, 0.08549999999999969, 0.16499999999999915, 0.11224999999999952, 0.1609999999999996, 0.09474999999999945, -0.45974999999999966, -0.05925000000000047, 0.08099999999999952, 0.12650000000000006, 0.18274999999999864, 0.20250000000000057, 0.17650000000000077, 0.04800000000000182, -0.06550000000000011, -0.0004999999999988347, 0.09574999999999889], zp_timestamp='2025-11-03T20:52:00')
2025-11-03T22:56:00.471 [DEBUG] [Thread-124096] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:56:00.544 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:56:00.557 [DEBUG] [Thread-124099] [transport.py] [_log()] starting thread (client mode): 0xed41b10
2025-11-03T22:56:00.557 [DEBUG] [Thread-124099] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:56:00.573 [DEBUG] [Thread-124099] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:56:00.573 [INFO] [Thread-124099] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:56:00.583 [DEBUG] [Thread-124099] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:56:00.583 [DEBUG] [Thread-124099] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:56:00.583 [DEBUG] [Thread-124099] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:56:00.583 [DEBUG] [Thread-124099] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:56:00.583 [DEBUG] [Thread-124099] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:56:00.583 [DEBUG] [Thread-124099] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:56:00.583 [DEBUG] [Thread-124099] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:56:00.583 [DEBUG] [Thread-124099] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:56:00.583 [DEBUG] [Thread-124099] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:56:00.583 [DEBUG] [Thread-124099] [transport.py] [_log()] client lang: <none>
2025-11-03T22:56:00.583 [DEBUG] [Thread-124099] [transport.py] [_log()] server lang: <none>
2025-11-03T22:56:00.583 [DEBUG] [Thread-124099] [transport.py] [_log()] kex follows: False
2025-11-03T22:56:00.584 [DEBUG] [Thread-124099] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:56:00.584 [DEBUG] [Thread-124099] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:56:00.584 [DEBUG] [Thread-124099] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:56:00.584 [DEBUG] [Thread-124099] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:56:00.584 [DEBUG] [Thread-124099] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:56:00.584 [DEBUG] [Thread-124099] [transport.py] [_log()] Compression: none
2025-11-03T22:56:00.584 [DEBUG] [Thread-124099] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:56:00.639 [DEBUG] [Thread-124099] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:56:00.639 [DEBUG] [Thread-124099] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:56:00.639 [DEBUG] [Thread-124099] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:56:00.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:56:00.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:56:00.696 [DEBUG] [Thread-124099] [transport.py] [_log()] userauth is OK
2025-11-03T22:56:00.696 [DEBUG] [Thread-124099] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:56:00.696 [DEBUG] [Thread-124099] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:56:00.696 [DEBUG] [Thread-124099] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:56:00.696 [DEBUG] [Thread-124099] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:56:00.710 [INFO] [Thread-124099] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:56:00.710 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:56:00.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:56:01.561 [DEBUG] [Thread-124099] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:56:01.562 [DEBUG] [Thread-124099] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:56:01.611 [DEBUG] [Thread-124099] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:56:01.612 [DEBUG] [Thread-124099] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:56:01.624 [DEBUG] [Thread-124099] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:56:01.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:56:01.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:56:01.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:56:01.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:56:01.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:56:01.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:56:01.671 [DEBUG] [Thread-124099] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:56:10.470 [DEBUG] [Thread-124101 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:56:11.299 [DEBUG] [Thread-124102 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:56:26.385 [DEBUG] [Thread-124103 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:56:31.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:56:31.689 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:56:31.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:56:32.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 56, 16), 30.52, 11.48, 0.0, 16.89, 19.0, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:56:32.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:56:16
2025-11-03T22:56:32.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:56:32.692 [DEBUG] [Thread-124104] [transport.py] [_log()] starting thread (client mode): 0x117eb0d0
2025-11-03T22:56:32.693 [DEBUG] [Thread-124104] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:56:32.705 [DEBUG] [Thread-124104] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:56:32.705 [INFO] [Thread-124104] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:56:32.710 [DEBUG] [Thread-124104] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:56:32.710 [DEBUG] [Thread-124104] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:56:32.710 [DEBUG] [Thread-124104] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:56:32.710 [DEBUG] [Thread-124104] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:56:32.711 [DEBUG] [Thread-124104] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:56:32.711 [DEBUG] [Thread-124104] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:56:32.711 [DEBUG] [Thread-124104] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:56:32.711 [DEBUG] [Thread-124104] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:56:32.711 [DEBUG] [Thread-124104] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:56:32.711 [DEBUG] [Thread-124104] [transport.py] [_log()] client lang: <none>
2025-11-03T22:56:32.711 [DEBUG] [Thread-124104] [transport.py] [_log()] server lang: <none>
2025-11-03T22:56:32.711 [DEBUG] [Thread-124104] [transport.py] [_log()] kex follows: False
2025-11-03T22:56:32.711 [DEBUG] [Thread-124104] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:56:32.712 [DEBUG] [Thread-124104] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:56:32.712 [DEBUG] [Thread-124104] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:56:32.712 [DEBUG] [Thread-124104] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:56:32.712 [DEBUG] [Thread-124104] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:56:32.712 [DEBUG] [Thread-124104] [transport.py] [_log()] Compression: none
2025-11-03T22:56:32.712 [DEBUG] [Thread-124104] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:56:32.740 [DEBUG] [Thread-124104] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:56:32.743 [DEBUG] [Thread-124104] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:56:32.745 [DEBUG] [Thread-124104] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:56:32.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:56:32.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:56:32.750 [DEBUG] [Thread-124104] [transport.py] [_log()] userauth is OK
2025-11-03T22:56:32.750 [DEBUG] [Thread-124104] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:56:32.750 [DEBUG] [Thread-124104] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:56:32.750 [DEBUG] [Thread-124104] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:56:32.750 [DEBUG] [Thread-124104] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:56:32.789 [INFO] [Thread-124104] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:56:32.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:56:33.432 [DEBUG] [Thread-124104] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:56:33.433 [DEBUG] [Thread-124104] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:56:33.433 [DEBUG] [Thread-124104] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:56:33.474 [DEBUG] [Thread-124104] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:56:33.474 [DEBUG] [Thread-124104] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:56:33.477 [DEBUG] [Thread-124104] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:56:33.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:56:33.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:56:33.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:56:33.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:56:33.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:56:33.498 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:56:33.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:56:33.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:56:33.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:56:33.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.871975 -999.00  +19.00  15.03     16   -6.60 1 1 1 1 1     0    0 26.06 -16.79 ZNESW 15.4 15.0 311.6 19.3 19.1 -25.6 19.1 -24.7 18.9 -24.3 19.1 -25.2
2025-11-03T22:56:33.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:56:33.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:56:33.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.871975
2025-11-03T22:56:33.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:56:33.503 [DEBUG] [Thread-124104] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:56:33.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:56:33.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:56:33.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:56:33.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:56:33.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:56:16', tmtdew=30.52, humidity=11.48, cloud=0.0, wind=16.89, temperature=19.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:56:17', seeing=1.15, atlas_timestamp='2025-11-03T20:55:38.640', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006750000000000256, 0.04224999999999923, 0.09375, -0.03850000000000087, 0.01699999999999946, 0.04625000000000057, -0.21000000000000085, -0.19374999999999964, 0.005499999999999616, 0.02149999999999963, 0.10125000000000028, 0.1070000000000011, 0.030999999999998806, -0.00575000000000081, -0.5045000000000002, -0.6560000000000006, 0.02325000000000088, 0.08549999999999969, 0.16499999999999915, 0.11224999999999952, 0.1609999999999996, 0.09474999999999945, -0.45974999999999966, -0.05925000000000047, 0.08099999999999952, 0.12650000000000006, 0.18274999999999864, 0.20250000000000057, 0.17650000000000077, 0.04800000000000182, -0.06550000000000011, -0.0004999999999988347, 0.09574999999999889], zp_timestamp='2025-11-03T20:52:00')
2025-11-03T22:56:33.579 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:56:33.592 [DEBUG] [Thread-124107] [transport.py] [_log()] starting thread (client mode): 0xed06ec0
2025-11-03T22:56:33.592 [DEBUG] [Thread-124107] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:56:33.608 [DEBUG] [Thread-124107] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:56:33.608 [INFO] [Thread-124107] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:56:33.618 [DEBUG] [Thread-124107] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:56:33.619 [DEBUG] [Thread-124107] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:56:33.619 [DEBUG] [Thread-124107] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:56:33.619 [DEBUG] [Thread-124107] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:56:33.619 [DEBUG] [Thread-124107] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:56:33.619 [DEBUG] [Thread-124107] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:56:33.619 [DEBUG] [Thread-124107] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:56:33.619 [DEBUG] [Thread-124107] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:56:33.620 [DEBUG] [Thread-124107] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:56:33.620 [DEBUG] [Thread-124107] [transport.py] [_log()] client lang: <none>
2025-11-03T22:56:33.620 [DEBUG] [Thread-124107] [transport.py] [_log()] server lang: <none>
2025-11-03T22:56:33.620 [DEBUG] [Thread-124107] [transport.py] [_log()] kex follows: False
2025-11-03T22:56:33.620 [DEBUG] [Thread-124107] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:56:33.620 [DEBUG] [Thread-124107] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:56:33.620 [DEBUG] [Thread-124107] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:56:33.621 [DEBUG] [Thread-124107] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:56:33.621 [DEBUG] [Thread-124107] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:56:33.621 [DEBUG] [Thread-124107] [transport.py] [_log()] Compression: none
2025-11-03T22:56:33.621 [DEBUG] [Thread-124107] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:56:33.679 [DEBUG] [Thread-124107] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:56:33.679 [DEBUG] [Thread-124107] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:56:33.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:56:33.681 [DEBUG] [Thread-124107] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:56:33.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:56:33.737 [DEBUG] [Thread-124107] [transport.py] [_log()] userauth is OK
2025-11-03T22:56:33.737 [DEBUG] [Thread-124107] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:56:33.737 [DEBUG] [Thread-124107] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:56:33.737 [DEBUG] [Thread-124107] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:56:33.738 [DEBUG] [Thread-124107] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:56:33.756 [INFO] [Thread-124107] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:56:33.757 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:56:33.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:56:34.600 [DEBUG] [Thread-124107] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:56:34.600 [DEBUG] [Thread-124107] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:56:34.641 [DEBUG] [Thread-124107] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:56:34.641 [DEBUG] [Thread-124107] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:56:34.650 [DEBUG] [Thread-124107] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:56:34.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:56:34.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:56:34.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:56:34.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:56:34.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:56:34.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:56:34.689 [DEBUG] [Thread-124107] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:56:41.436 [DEBUG] [Thread-124109 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:56:56.556 [DEBUG] [Thread-124110 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:56:59.966 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:56:59.966 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:57:04.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:57:04.710 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:57:04.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:57:05.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 56, 52), 30.28, 11.68, 0.0, 14.15, 19.03, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:57:05.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:56:52
2025-11-03T22:57:05.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:57:05.810 [DEBUG] [Thread-124111] [transport.py] [_log()] starting thread (client mode): 0xedb2da0
2025-11-03T22:57:05.811 [DEBUG] [Thread-124111] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:57:05.811 [DEBUG] [Thread-124111] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:57:05.811 [INFO] [Thread-124111] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:57:05.816 [DEBUG] [Thread-124111] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:57:05.816 [DEBUG] [Thread-124111] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:57:05.816 [DEBUG] [Thread-124111] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:57:05.816 [DEBUG] [Thread-124111] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:57:05.817 [DEBUG] [Thread-124111] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:57:05.817 [DEBUG] [Thread-124111] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:57:05.817 [DEBUG] [Thread-124111] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:57:05.817 [DEBUG] [Thread-124111] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:57:05.817 [DEBUG] [Thread-124111] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:57:05.817 [DEBUG] [Thread-124111] [transport.py] [_log()] client lang: <none>
2025-11-03T22:57:05.817 [DEBUG] [Thread-124111] [transport.py] [_log()] server lang: <none>
2025-11-03T22:57:05.817 [DEBUG] [Thread-124111] [transport.py] [_log()] kex follows: False
2025-11-03T22:57:05.817 [DEBUG] [Thread-124111] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:57:05.817 [DEBUG] [Thread-124111] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:57:05.817 [DEBUG] [Thread-124111] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:57:05.817 [DEBUG] [Thread-124111] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:57:05.817 [DEBUG] [Thread-124111] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:57:05.817 [DEBUG] [Thread-124111] [transport.py] [_log()] Compression: none
2025-11-03T22:57:05.818 [DEBUG] [Thread-124111] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:57:05.836 [DEBUG] [Thread-124111] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:57:05.837 [DEBUG] [Thread-124111] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:57:05.837 [DEBUG] [Thread-124111] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:57:05.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:57:05.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:57:05.840 [DEBUG] [Thread-124111] [transport.py] [_log()] userauth is OK
2025-11-03T22:57:05.840 [DEBUG] [Thread-124111] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:57:05.840 [DEBUG] [Thread-124111] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:57:05.840 [DEBUG] [Thread-124111] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:57:05.841 [DEBUG] [Thread-124111] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:57:05.864 [INFO] [Thread-124111] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:57:05.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:57:06.633 [DEBUG] [Thread-124111] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:57:06.633 [DEBUG] [Thread-124111] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:57:06.633 [DEBUG] [Thread-124111] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:57:06.673 [DEBUG] [Thread-124111] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:57:06.673 [DEBUG] [Thread-124111] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:57:06.676 [DEBUG] [Thread-124111] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:57:06.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:57:06.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:57:06.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:57:06.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:57:06.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:57:06.698 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:57:06.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:57:06.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:57:06.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:57:06.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.872322 -999.00  +19.00  16.41     16   -6.60 1 1 1 1 1     0    0 25.45 -17.55 ZNESW 16.1 16.4 314.6 20.8 19.1 -25.7 19.1 -24.8 18.9 -24.5 19.1 -25.4
2025-11-03T22:57:06.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:57:06.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:57:06.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.872322
2025-11-03T22:57:06.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:57:06.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:57:06.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:57:06.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:57:06.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:57:06.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:56:52', tmtdew=30.28, humidity=11.68, cloud=0.0, wind=14.15, temperature=19.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:56:53', seeing=1.15, atlas_timestamp='2025-11-03T20:56:08.621', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, 0.13424999999999976, 0.02725000000000044, 0.022499999999999076, 0.0365000000000002, -0.09974999999999845, -0.5370000000000008, -0.08225000000000016, 0.11299999999999955, 0.06700000000000017, 0.14124999999999943, 0.11999999999999922, 0.17199999999999882, 0.06475000000000009, -0.18100000000000094, -0.23000000000000043, 0.0467499999999994, 0.1615000000000002, 0.20650000000000013, 0.16424999999999912, 0.21149999999999736, 0.14224999999999888, -0.6287499999999984, -0.13724999999999987, 0.14100000000000001, 0.23799999999999955, 0.2787500000000005, 0.25, 0.29000000000000004, 0.06800000000000139, 0.1615000000000002, 0.10850000000000115, 0.1327499999999997], zp_timestamp='2025-11-03T20:55:00')
2025-11-03T22:57:06.700 [DEBUG] [Thread-124111] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:57:06.772 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:57:06.784 [DEBUG] [Thread-124114] [transport.py] [_log()] starting thread (client mode): 0x117eaf80
2025-11-03T22:57:06.784 [DEBUG] [Thread-124114] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:57:06.798 [DEBUG] [Thread-124114] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:57:06.798 [INFO] [Thread-124114] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:57:06.805 [DEBUG] [Thread-124114] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:57:06.805 [DEBUG] [Thread-124114] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:57:06.805 [DEBUG] [Thread-124114] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:57:06.805 [DEBUG] [Thread-124114] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:57:06.805 [DEBUG] [Thread-124114] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:57:06.805 [DEBUG] [Thread-124114] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:57:06.805 [DEBUG] [Thread-124114] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:57:06.805 [DEBUG] [Thread-124114] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:57:06.805 [DEBUG] [Thread-124114] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:57:06.805 [DEBUG] [Thread-124114] [transport.py] [_log()] client lang: <none>
2025-11-03T22:57:06.805 [DEBUG] [Thread-124114] [transport.py] [_log()] server lang: <none>
2025-11-03T22:57:06.805 [DEBUG] [Thread-124114] [transport.py] [_log()] kex follows: False
2025-11-03T22:57:06.806 [DEBUG] [Thread-124114] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:57:06.806 [DEBUG] [Thread-124114] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:57:06.806 [DEBUG] [Thread-124114] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:57:06.806 [DEBUG] [Thread-124114] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:57:06.806 [DEBUG] [Thread-124114] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:57:06.806 [DEBUG] [Thread-124114] [transport.py] [_log()] Compression: none
2025-11-03T22:57:06.806 [DEBUG] [Thread-124114] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:57:06.862 [DEBUG] [Thread-124114] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:57:06.863 [DEBUG] [Thread-124114] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:57:06.863 [DEBUG] [Thread-124114] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:57:06.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:57:06.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:57:06.920 [DEBUG] [Thread-124114] [transport.py] [_log()] userauth is OK
2025-11-03T22:57:06.920 [DEBUG] [Thread-124114] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:57:06.920 [DEBUG] [Thread-124114] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:57:06.920 [DEBUG] [Thread-124114] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:57:06.920 [DEBUG] [Thread-124114] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:57:06.937 [INFO] [Thread-124114] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:57:06.937 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:57:06.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:57:07.757 [DEBUG] [Thread-124114] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:57:07.757 [DEBUG] [Thread-124114] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:57:07.805 [DEBUG] [Thread-124114] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:57:07.805 [DEBUG] [Thread-124114] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:57:07.814 [DEBUG] [Thread-124114] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:57:07.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:57:07.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:57:07.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:57:07.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:57:07.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:57:07.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:57:07.849 [DEBUG] [Thread-124114] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:57:11.589 [DEBUG] [Thread-124116 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:57:12.204 [DEBUG] [Thread-124117 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:57:26.696 [DEBUG] [Thread-124118 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:57:37.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:57:37.871 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:57:37.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:57:38.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 57, 24), 30.5, 11.45, 0.0, 13.94, 18.9, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:57:38.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:57:24
2025-11-03T22:57:38.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:57:39.126 [DEBUG] [Thread-124119] [transport.py] [_log()] starting thread (client mode): 0x11762590
2025-11-03T22:57:39.127 [DEBUG] [Thread-124119] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:57:39.143 [DEBUG] [Thread-124119] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:57:39.144 [INFO] [Thread-124119] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:57:39.147 [DEBUG] [Thread-124119] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:57:39.147 [DEBUG] [Thread-124119] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:57:39.147 [DEBUG] [Thread-124119] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:57:39.147 [DEBUG] [Thread-124119] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:57:39.147 [DEBUG] [Thread-124119] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:57:39.147 [DEBUG] [Thread-124119] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:57:39.147 [DEBUG] [Thread-124119] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:57:39.147 [DEBUG] [Thread-124119] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:57:39.147 [DEBUG] [Thread-124119] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:57:39.147 [DEBUG] [Thread-124119] [transport.py] [_log()] client lang: <none>
2025-11-03T22:57:39.147 [DEBUG] [Thread-124119] [transport.py] [_log()] server lang: <none>
2025-11-03T22:57:39.147 [DEBUG] [Thread-124119] [transport.py] [_log()] kex follows: False
2025-11-03T22:57:39.147 [DEBUG] [Thread-124119] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:57:39.147 [DEBUG] [Thread-124119] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:57:39.147 [DEBUG] [Thread-124119] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:57:39.147 [DEBUG] [Thread-124119] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:57:39.147 [DEBUG] [Thread-124119] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:57:39.147 [DEBUG] [Thread-124119] [transport.py] [_log()] Compression: none
2025-11-03T22:57:39.147 [DEBUG] [Thread-124119] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:57:39.163 [DEBUG] [Thread-124119] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:57:39.165 [DEBUG] [Thread-124119] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:57:39.165 [DEBUG] [Thread-124119] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:57:39.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:57:39.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:57:39.204 [DEBUG] [Thread-124119] [transport.py] [_log()] userauth is OK
2025-11-03T22:57:39.204 [DEBUG] [Thread-124119] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:57:39.204 [DEBUG] [Thread-124119] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:57:39.204 [DEBUG] [Thread-124119] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:57:39.204 [DEBUG] [Thread-124119] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:57:39.220 [INFO] [Thread-124119] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:57:39.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:57:39.860 [DEBUG] [Thread-124119] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:57:39.860 [DEBUG] [Thread-124119] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:57:39.860 [DEBUG] [Thread-124119] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:57:39.902 [DEBUG] [Thread-124119] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:57:39.902 [DEBUG] [Thread-124119] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:57:39.904 [DEBUG] [Thread-124119] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:57:39.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:57:39.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:57:39.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:57:39.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:57:39.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:57:39.921 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:57:39.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:57:39.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:57:39.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:57:39.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.873016 -999.00  +19.00  15.78     16   -6.60 1 1 1 1 1     0    0 25.82 -21.42 ZNESW 17.0 15.8 316.8 17.9 19.1 -25.6 19.1 -24.6 18.8 -24.4 19.1 -25.2
2025-11-03T22:57:39.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:57:39.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:57:39.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.873016
2025-11-03T22:57:39.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:57:39.923 [DEBUG] [Thread-124119] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:57:39.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:57:39.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:57:39.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:57:39.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:57:39.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:57:24', tmtdew=30.5, humidity=11.45, cloud=0.0, wind=13.94, temperature=18.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:57:25', seeing=1.04, atlas_timestamp='2025-11-03T20:57:08.582', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, 0.13424999999999976, 0.02725000000000044, 0.022499999999999076, 0.0365000000000002, -0.09974999999999845, -0.5370000000000008, -0.08225000000000016, 0.11299999999999955, 0.06700000000000017, 0.14124999999999943, 0.11999999999999922, 0.17199999999999882, 0.06475000000000009, -0.18100000000000094, -0.23000000000000043, 0.0467499999999994, 0.1615000000000002, 0.20650000000000013, 0.16424999999999912, 0.21149999999999736, 0.14224999999999888, -0.6287499999999984, -0.13724999999999987, 0.14100000000000001, 0.23799999999999955, 0.2787500000000005, 0.25, 0.29000000000000004, 0.06800000000000139, 0.1615000000000002, 0.10850000000000115, 0.1327499999999997], zp_timestamp='2025-11-03T20:55:00')
2025-11-03T22:57:39.999 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:57:40.011 [DEBUG] [Thread-124122] [transport.py] [_log()] starting thread (client mode): 0xed06530
2025-11-03T22:57:40.011 [DEBUG] [Thread-124122] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:57:40.025 [DEBUG] [Thread-124122] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:57:40.025 [INFO] [Thread-124122] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:57:40.033 [DEBUG] [Thread-124122] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:57:40.033 [DEBUG] [Thread-124122] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:57:40.033 [DEBUG] [Thread-124122] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:57:40.033 [DEBUG] [Thread-124122] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:57:40.033 [DEBUG] [Thread-124122] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:57:40.033 [DEBUG] [Thread-124122] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:57:40.033 [DEBUG] [Thread-124122] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:57:40.033 [DEBUG] [Thread-124122] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:57:40.033 [DEBUG] [Thread-124122] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:57:40.034 [DEBUG] [Thread-124122] [transport.py] [_log()] client lang: <none>
2025-11-03T22:57:40.034 [DEBUG] [Thread-124122] [transport.py] [_log()] server lang: <none>
2025-11-03T22:57:40.034 [DEBUG] [Thread-124122] [transport.py] [_log()] kex follows: False
2025-11-03T22:57:40.034 [DEBUG] [Thread-124122] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:57:40.034 [DEBUG] [Thread-124122] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:57:40.034 [DEBUG] [Thread-124122] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:57:40.034 [DEBUG] [Thread-124122] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:57:40.034 [DEBUG] [Thread-124122] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:57:40.034 [DEBUG] [Thread-124122] [transport.py] [_log()] Compression: none
2025-11-03T22:57:40.034 [DEBUG] [Thread-124122] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:57:40.091 [DEBUG] [Thread-124122] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:57:40.091 [DEBUG] [Thread-124122] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:57:40.091 [DEBUG] [Thread-124122] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:57:40.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:57:40.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:57:40.148 [DEBUG] [Thread-124122] [transport.py] [_log()] userauth is OK
2025-11-03T22:57:40.148 [DEBUG] [Thread-124122] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:57:40.148 [DEBUG] [Thread-124122] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:57:40.148 [DEBUG] [Thread-124122] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:57:40.148 [DEBUG] [Thread-124122] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:57:40.161 [INFO] [Thread-124122] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:57:40.162 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:57:40.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:57:41.009 [DEBUG] [Thread-124122] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:57:41.009 [DEBUG] [Thread-124122] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:57:41.057 [DEBUG] [Thread-124122] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:57:41.057 [DEBUG] [Thread-124122] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:57:41.065 [DEBUG] [Thread-124122] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:57:41.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:57:41.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:57:41.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:57:41.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:57:41.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:57:41.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:57:41.098 [DEBUG] [Thread-124122] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:57:41.723 [DEBUG] [Thread-124124 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:57:56.765 [DEBUG] [Thread-124125 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:58:00.169 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:58:00.170 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:58:10.352 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:58:11.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:58:11.120 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:58:11.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:58:11.806 [DEBUG] [Thread-124126 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:58:13.501 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:58:13.716 [DEBUG] [Thread-124127 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:58:14.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 57, 57), 30.49, 11.45, 0.0, 15.24, 18.86, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:58:14.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:57:57
2025-11-03T22:58:14.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:58:14.639 [DEBUG] [Thread-124128] [transport.py] [_log()] starting thread (client mode): 0xedc5a50
2025-11-03T22:58:14.643 [DEBUG] [Thread-124128] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:58:14.644 [DEBUG] [Thread-124128] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:58:14.644 [INFO] [Thread-124128] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:58:14.651 [DEBUG] [Thread-124128] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:58:14.652 [DEBUG] [Thread-124128] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:58:14.652 [DEBUG] [Thread-124128] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:58:14.652 [DEBUG] [Thread-124128] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:58:14.652 [DEBUG] [Thread-124128] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:58:14.652 [DEBUG] [Thread-124128] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:58:14.652 [DEBUG] [Thread-124128] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:58:14.652 [DEBUG] [Thread-124128] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:58:14.652 [DEBUG] [Thread-124128] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:58:14.652 [DEBUG] [Thread-124128] [transport.py] [_log()] client lang: <none>
2025-11-03T22:58:14.652 [DEBUG] [Thread-124128] [transport.py] [_log()] server lang: <none>
2025-11-03T22:58:14.652 [DEBUG] [Thread-124128] [transport.py] [_log()] kex follows: False
2025-11-03T22:58:14.652 [DEBUG] [Thread-124128] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:58:14.653 [DEBUG] [Thread-124128] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:58:14.653 [DEBUG] [Thread-124128] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:58:14.654 [DEBUG] [Thread-124128] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:58:14.654 [DEBUG] [Thread-124128] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:58:14.654 [DEBUG] [Thread-124128] [transport.py] [_log()] Compression: none
2025-11-03T22:58:14.654 [DEBUG] [Thread-124128] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:58:14.703 [DEBUG] [Thread-124128] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:58:14.714 [DEBUG] [Thread-124128] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:58:14.719 [DEBUG] [Thread-124128] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:58:14.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:58:14.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:58:14.738 [DEBUG] [Thread-124128] [transport.py] [_log()] userauth is OK
2025-11-03T22:58:14.738 [DEBUG] [Thread-124128] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:58:14.738 [DEBUG] [Thread-124128] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:58:14.738 [DEBUG] [Thread-124128] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:58:14.739 [DEBUG] [Thread-124128] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:58:14.781 [INFO] [Thread-124128] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:58:14.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:58:15.417 [DEBUG] [Thread-124128] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:58:15.417 [DEBUG] [Thread-124128] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:58:15.423 [DEBUG] [Thread-124128] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:58:15.469 [DEBUG] [Thread-124128] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:58:15.469 [DEBUG] [Thread-124128] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:58:15.473 [DEBUG] [Thread-124128] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:58:15.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:58:15.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:58:15.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:58:15.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:58:15.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:58:15.510 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:58:15.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:58:15.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:58:15.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:58:15.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.873363 -999.00  +19.00  17.96     16   -6.60 1 1 1 1 1     0    0 25.44 -20.19 ZNESW 17.1 18.0 313.6 19.3 19.1 -25.6 19.1 -24.7 18.8 -24.4 19.1 -25.2
2025-11-03T22:58:15.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:58:15.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:58:15.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.873363
2025-11-03T22:58:15.531 [DEBUG] [Thread-124128] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:58:15.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:58:15.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:58:15.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:58:15.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:58:15.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:58:15.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:57:57', tmtdew=30.49, humidity=11.45, cloud=0.0, wind=15.24, temperature=18.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:57:58', seeing=1.11, atlas_timestamp='2025-11-03T20:57:38.563', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, 0.13424999999999976, 0.02725000000000044, 0.022499999999999076, 0.0365000000000002, -0.09974999999999845, -0.5370000000000008, -0.08225000000000016, 0.11299999999999955, 0.06700000000000017, 0.14124999999999943, 0.11999999999999922, 0.17199999999999882, 0.06475000000000009, -0.18100000000000094, -0.23000000000000043, 0.0467499999999994, 0.1615000000000002, 0.20650000000000013, 0.16424999999999912, 0.21149999999999736, 0.14224999999999888, -0.6287499999999984, -0.13724999999999987, 0.14100000000000001, 0.23799999999999955, 0.2787500000000005, 0.25, 0.29000000000000004, 0.06800000000000139, 0.1615000000000002, 0.10850000000000115, 0.1327499999999997], zp_timestamp='2025-11-03T20:55:00')
2025-11-03T22:58:15.625 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:58:15.637 [DEBUG] [Thread-124131] [transport.py] [_log()] starting thread (client mode): 0xedc61a0
2025-11-03T22:58:15.637 [DEBUG] [Thread-124131] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:58:15.652 [DEBUG] [Thread-124131] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:58:15.652 [INFO] [Thread-124131] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:58:15.659 [DEBUG] [Thread-124131] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:58:15.659 [DEBUG] [Thread-124131] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:58:15.659 [DEBUG] [Thread-124131] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:58:15.659 [DEBUG] [Thread-124131] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:58:15.659 [DEBUG] [Thread-124131] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:58:15.659 [DEBUG] [Thread-124131] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:58:15.659 [DEBUG] [Thread-124131] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:58:15.659 [DEBUG] [Thread-124131] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:58:15.659 [DEBUG] [Thread-124131] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:58:15.660 [DEBUG] [Thread-124131] [transport.py] [_log()] client lang: <none>
2025-11-03T22:58:15.660 [DEBUG] [Thread-124131] [transport.py] [_log()] server lang: <none>
2025-11-03T22:58:15.660 [DEBUG] [Thread-124131] [transport.py] [_log()] kex follows: False
2025-11-03T22:58:15.660 [DEBUG] [Thread-124131] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:58:15.660 [DEBUG] [Thread-124131] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:58:15.660 [DEBUG] [Thread-124131] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:58:15.660 [DEBUG] [Thread-124131] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:58:15.660 [DEBUG] [Thread-124131] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:58:15.660 [DEBUG] [Thread-124131] [transport.py] [_log()] Compression: none
2025-11-03T22:58:15.660 [DEBUG] [Thread-124131] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:58:15.719 [DEBUG] [Thread-124131] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:58:15.719 [DEBUG] [Thread-124131] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:58:15.719 [DEBUG] [Thread-124131] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:58:15.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:58:15.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:58:15.776 [DEBUG] [Thread-124131] [transport.py] [_log()] userauth is OK
2025-11-03T22:58:15.776 [DEBUG] [Thread-124131] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:58:15.776 [DEBUG] [Thread-124131] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:58:15.776 [DEBUG] [Thread-124131] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:58:15.776 [DEBUG] [Thread-124131] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:58:15.790 [INFO] [Thread-124131] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:58:15.790 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:58:15.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:58:16.645 [DEBUG] [Thread-124131] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:58:16.645 [DEBUG] [Thread-124131] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:58:16.692 [DEBUG] [Thread-124131] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:58:16.693 [DEBUG] [Thread-124131] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:58:16.702 [DEBUG] [Thread-124131] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:58:16.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:58:16.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:58:16.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:58:16.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:58:16.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:58:16.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:58:16.746 [DEBUG] [Thread-124131] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:58:18.544 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:58:24.922 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:58:26.837 [DEBUG] [Thread-124133 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:58:41.916 [DEBUG] [Thread-124134 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:58:43.296 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:58:46.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:58:46.781 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:58:46.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:58:47.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 58, 29), 30.44, 11.5, 0.0, 16.27, 18.9, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:58:47.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:58:29
2025-11-03T22:58:47.719 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:58:47.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:58:47.904 [DEBUG] [Thread-124135] [transport.py] [_log()] starting thread (client mode): 0xedb13c0
2025-11-03T22:58:47.904 [DEBUG] [Thread-124135] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:58:47.918 [DEBUG] [Thread-124135] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:58:47.919 [INFO] [Thread-124135] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:58:47.922 [DEBUG] [Thread-124135] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:58:47.923 [DEBUG] [Thread-124135] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:58:47.923 [DEBUG] [Thread-124135] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:58:47.923 [DEBUG] [Thread-124135] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:58:47.923 [DEBUG] [Thread-124135] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:58:47.923 [DEBUG] [Thread-124135] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:58:47.923 [DEBUG] [Thread-124135] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:58:47.923 [DEBUG] [Thread-124135] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:58:47.923 [DEBUG] [Thread-124135] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:58:47.923 [DEBUG] [Thread-124135] [transport.py] [_log()] client lang: <none>
2025-11-03T22:58:47.923 [DEBUG] [Thread-124135] [transport.py] [_log()] server lang: <none>
2025-11-03T22:58:47.923 [DEBUG] [Thread-124135] [transport.py] [_log()] kex follows: False
2025-11-03T22:58:47.923 [DEBUG] [Thread-124135] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:58:47.924 [DEBUG] [Thread-124135] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:58:47.924 [DEBUG] [Thread-124135] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:58:47.925 [DEBUG] [Thread-124135] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:58:47.925 [DEBUG] [Thread-124135] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:58:47.925 [DEBUG] [Thread-124135] [transport.py] [_log()] Compression: none
2025-11-03T22:58:47.925 [DEBUG] [Thread-124135] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:58:47.959 [DEBUG] [Thread-124135] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:58:47.965 [DEBUG] [Thread-124135] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:58:47.967 [DEBUG] [Thread-124135] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:58:47.969 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:58:47.970 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:58:47.973 [DEBUG] [Thread-124135] [transport.py] [_log()] userauth is OK
2025-11-03T22:58:47.973 [DEBUG] [Thread-124135] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:58:47.973 [DEBUG] [Thread-124135] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:58:47.973 [DEBUG] [Thread-124135] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:58:47.973 [DEBUG] [Thread-124135] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:58:47.999 [INFO] [Thread-124135] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:58:48.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:58:48.640 [DEBUG] [Thread-124135] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:58:48.641 [DEBUG] [Thread-124135] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:58:48.642 [DEBUG] [Thread-124135] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:58:48.682 [DEBUG] [Thread-124135] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:58:48.683 [DEBUG] [Thread-124135] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:58:48.687 [DEBUG] [Thread-124135] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:58:48.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:58:48.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:58:48.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:58:48.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:58:48.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:58:48.715 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:58:48.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:58:48.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:58:48.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:58:48.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.873711 -999.00  +19.00  14.71     16   -6.60 1 1 1 1 1     0    0 25.33 -22.93 ZNESW 15.2 14.7 309.8 19.1 19.1 -25.6 19.0 -24.5 -999.0 -999.0 19.1 -25.2
2025-11-03T22:58:48.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:58:48.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:58:48.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.873711
2025-11-03T22:58:48.723 [DEBUG] [Thread-124135] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:58:48.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:58:48.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:58:48.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:58:48.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:58:48.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:58:48.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:58:29', tmtdew=30.44, humidity=11.5, cloud=0.0, wind=16.27, temperature=18.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:58:30', seeing=1.11, atlas_timestamp='2025-11-03T20:58:08.630', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, 0.13424999999999976, 0.02725000000000044, 0.022499999999999076, 0.0365000000000002, -0.09974999999999845, -0.5370000000000008, -0.08225000000000016, 0.11299999999999955, 0.06700000000000017, 0.14124999999999943, 0.11999999999999922, 0.17199999999999882, 0.06475000000000009, -0.18100000000000094, -0.23000000000000043, 0.0467499999999994, 0.1615000000000002, 0.20650000000000013, 0.16424999999999912, 0.21149999999999736, 0.14224999999999888, -0.6287499999999984, -0.13724999999999987, 0.14100000000000001, 0.23799999999999955, 0.2787500000000005, 0.25, 0.29000000000000004, 0.06800000000000139, 0.1615000000000002, 0.10850000000000115, 0.1327499999999997], zp_timestamp='2025-11-03T20:55:00')
2025-11-03T22:58:48.820 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:58:48.834 [DEBUG] [Thread-124138] [transport.py] [_log()] starting thread (client mode): 0xedb24a0
2025-11-03T22:58:48.834 [DEBUG] [Thread-124138] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:58:48.851 [DEBUG] [Thread-124138] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:58:48.851 [INFO] [Thread-124138] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:58:48.860 [DEBUG] [Thread-124138] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:58:48.861 [DEBUG] [Thread-124138] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:58:48.861 [DEBUG] [Thread-124138] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:58:48.861 [DEBUG] [Thread-124138] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:58:48.861 [DEBUG] [Thread-124138] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:58:48.861 [DEBUG] [Thread-124138] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:58:48.861 [DEBUG] [Thread-124138] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:58:48.861 [DEBUG] [Thread-124138] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:58:48.861 [DEBUG] [Thread-124138] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:58:48.861 [DEBUG] [Thread-124138] [transport.py] [_log()] client lang: <none>
2025-11-03T22:58:48.861 [DEBUG] [Thread-124138] [transport.py] [_log()] server lang: <none>
2025-11-03T22:58:48.862 [DEBUG] [Thread-124138] [transport.py] [_log()] kex follows: False
2025-11-03T22:58:48.862 [DEBUG] [Thread-124138] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:58:48.862 [DEBUG] [Thread-124138] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:58:48.862 [DEBUG] [Thread-124138] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:58:48.862 [DEBUG] [Thread-124138] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:58:48.862 [DEBUG] [Thread-124138] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:58:48.862 [DEBUG] [Thread-124138] [transport.py] [_log()] Compression: none
2025-11-03T22:58:48.862 [DEBUG] [Thread-124138] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:58:48.918 [DEBUG] [Thread-124138] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:58:48.918 [DEBUG] [Thread-124138] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:58:48.919 [DEBUG] [Thread-124138] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:58:48.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:58:48.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:58:48.978 [DEBUG] [Thread-124138] [transport.py] [_log()] userauth is OK
2025-11-03T22:58:48.978 [DEBUG] [Thread-124138] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:58:48.978 [DEBUG] [Thread-124138] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:58:48.979 [DEBUG] [Thread-124138] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:58:48.979 [DEBUG] [Thread-124138] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:58:49.004 [INFO] [Thread-124138] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:58:49.005 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:58:49.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:58:49.896 [DEBUG] [Thread-124138] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:58:49.896 [DEBUG] [Thread-124138] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:58:49.937 [DEBUG] [Thread-124138] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:58:49.937 [DEBUG] [Thread-124138] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:58:49.946 [DEBUG] [Thread-124138] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:58:49.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:58:49.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:58:49.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:58:49.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:58:49.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:58:49.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:58:49.988 [DEBUG] [Thread-124138] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:58:56.955 [DEBUG] [Thread-124140 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:59:00.373 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:59:00.374 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:59:07.047 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:59:11.424 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:59:12.012 [DEBUG] [Thread-124141 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:59:14.563 [DEBUG] [Thread-124142 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:59:17.559 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:59:19.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:59:19.997 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:59:20.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:59:20.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 59, 2), 30.51, 11.43, 0.0, 14.57, 18.9, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:59:20.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:59:02
2025-11-03T22:59:20.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:59:21.016 [DEBUG] [Thread-124143] [transport.py] [_log()] starting thread (client mode): 0xeda08e0
2025-11-03T22:59:21.017 [DEBUG] [Thread-124143] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:59:21.031 [DEBUG] [Thread-124143] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:59:21.031 [INFO] [Thread-124143] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:59:21.035 [DEBUG] [Thread-124143] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:59:21.035 [DEBUG] [Thread-124143] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:59:21.035 [DEBUG] [Thread-124143] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:59:21.035 [DEBUG] [Thread-124143] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:59:21.035 [DEBUG] [Thread-124143] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:59:21.035 [DEBUG] [Thread-124143] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:59:21.035 [DEBUG] [Thread-124143] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:59:21.035 [DEBUG] [Thread-124143] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:59:21.035 [DEBUG] [Thread-124143] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:59:21.035 [DEBUG] [Thread-124143] [transport.py] [_log()] client lang: <none>
2025-11-03T22:59:21.035 [DEBUG] [Thread-124143] [transport.py] [_log()] server lang: <none>
2025-11-03T22:59:21.036 [DEBUG] [Thread-124143] [transport.py] [_log()] kex follows: False
2025-11-03T22:59:21.036 [DEBUG] [Thread-124143] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:59:21.036 [DEBUG] [Thread-124143] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:59:21.036 [DEBUG] [Thread-124143] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:59:21.036 [DEBUG] [Thread-124143] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:59:21.036 [DEBUG] [Thread-124143] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:59:21.036 [DEBUG] [Thread-124143] [transport.py] [_log()] Compression: none
2025-11-03T22:59:21.036 [DEBUG] [Thread-124143] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:59:21.055 [DEBUG] [Thread-124143] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:59:21.058 [DEBUG] [Thread-124143] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:59:21.059 [DEBUG] [Thread-124143] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:59:21.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:59:21.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:59:21.064 [DEBUG] [Thread-124143] [transport.py] [_log()] userauth is OK
2025-11-03T22:59:21.064 [DEBUG] [Thread-124143] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:59:21.064 [DEBUG] [Thread-124143] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:59:21.064 [DEBUG] [Thread-124143] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:59:21.064 [DEBUG] [Thread-124143] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:59:21.091 [INFO] [Thread-124143] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:59:21.093 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:59:21.709 [DEBUG] [Thread-124143] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:59:21.709 [DEBUG] [Thread-124143] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:59:21.718 [DEBUG] [Thread-124143] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:59:21.750 [DEBUG] [Thread-124143] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:59:21.750 [DEBUG] [Thread-124143] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:59:21.752 [DEBUG] [Thread-124143] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:59:21.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:59:21.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:59:21.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:59:21.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:59:21.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:59:21.773 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:59:21.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:59:21.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:59:21.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:59:21.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.874058 -999.00  +19.00  17.37     16   -6.60 1 1 1 1 1     0    0 25.54 -21.70 ZNESW 16.1 17.4 312.8 20.0 19.1 -25.5 19.0 -24.6 18.8 -24.3 19.0 -25.3
2025-11-03T22:59:21.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:59:21.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:59:21.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.874058
2025-11-03T22:59:21.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:59:21.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:59:21.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:59:21.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:59:21.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:59:21.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:59:02', tmtdew=30.51, humidity=11.43, cloud=0.0, wind=14.57, temperature=18.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:59:03', seeing=1.07, atlas_timestamp='2025-11-03T20:58:38.611', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, 0.13424999999999976, 0.02725000000000044, 0.022499999999999076, 0.0365000000000002, -0.09974999999999845, -0.5370000000000008, -0.08225000000000016, 0.11299999999999955, 0.06700000000000017, 0.14124999999999943, 0.11999999999999922, 0.17199999999999882, 0.06475000000000009, -0.18100000000000094, -0.23000000000000043, 0.0467499999999994, 0.1615000000000002, 0.20650000000000013, 0.16424999999999912, 0.21149999999999736, 0.14224999999999888, -0.6287499999999984, -0.13724999999999987, 0.14100000000000001, 0.23799999999999955, 0.2787500000000005, 0.25, 0.29000000000000004, 0.06800000000000139, 0.1615000000000002, 0.10850000000000115, 0.1327499999999997], zp_timestamp='2025-11-03T20:55:00')
2025-11-03T22:59:21.778 [DEBUG] [Thread-124143] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:59:21.850 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:59:21.863 [DEBUG] [Thread-124146] [transport.py] [_log()] starting thread (client mode): 0x11762c80
2025-11-03T22:59:21.863 [DEBUG] [Thread-124146] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:59:21.883 [DEBUG] [Thread-124146] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:59:21.883 [INFO] [Thread-124146] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:59:21.895 [DEBUG] [Thread-124146] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:59:21.895 [DEBUG] [Thread-124146] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:59:21.895 [DEBUG] [Thread-124146] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:59:21.895 [DEBUG] [Thread-124146] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:59:21.896 [DEBUG] [Thread-124146] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:59:21.896 [DEBUG] [Thread-124146] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:59:21.896 [DEBUG] [Thread-124146] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:59:21.896 [DEBUG] [Thread-124146] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:59:21.896 [DEBUG] [Thread-124146] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:59:21.896 [DEBUG] [Thread-124146] [transport.py] [_log()] client lang: <none>
2025-11-03T22:59:21.896 [DEBUG] [Thread-124146] [transport.py] [_log()] server lang: <none>
2025-11-03T22:59:21.896 [DEBUG] [Thread-124146] [transport.py] [_log()] kex follows: False
2025-11-03T22:59:21.896 [DEBUG] [Thread-124146] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:59:21.896 [DEBUG] [Thread-124146] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:59:21.896 [DEBUG] [Thread-124146] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:59:21.896 [DEBUG] [Thread-124146] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:59:21.896 [DEBUG] [Thread-124146] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:59:21.896 [DEBUG] [Thread-124146] [transport.py] [_log()] Compression: none
2025-11-03T22:59:21.896 [DEBUG] [Thread-124146] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:59:21.949 [DEBUG] [Thread-124146] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:59:21.949 [DEBUG] [Thread-124146] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:59:21.949 [DEBUG] [Thread-124146] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:59:21.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:59:21.950 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:59:21.973 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:59:22.016 [DEBUG] [Thread-124146] [transport.py] [_log()] userauth is OK
2025-11-03T22:59:22.016 [DEBUG] [Thread-124146] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:59:22.016 [DEBUG] [Thread-124146] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:59:22.016 [DEBUG] [Thread-124146] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:59:22.016 [DEBUG] [Thread-124146] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:59:22.030 [INFO] [Thread-124146] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:59:22.030 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:59:22.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:59:22.879 [DEBUG] [Thread-124146] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:59:22.879 [DEBUG] [Thread-124146] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:59:22.927 [DEBUG] [Thread-124146] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:59:22.928 [DEBUG] [Thread-124146] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:59:22.937 [DEBUG] [Thread-124146] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:59:22.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:59:22.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:59:22.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:59:22.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:59:22.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:59:22.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:59:22.985 [DEBUG] [Thread-124146] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:59:27.047 [DEBUG] [Thread-124148 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:59:32.667 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:59:36.746 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:59:42.112 [DEBUG] [Thread-124149 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T22:59:53.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T22:59:53.007 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T22:59:53.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T22:59:53.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 22, 59, 34), 30.42, 11.48, 0.0, 14.8, 18.9, 0, 0, 0, 2, 0, 0),)
2025-11-03T22:59:53.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 22:59:34
2025-11-03T22:59:53.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T22:59:54.020 [DEBUG] [Thread-124150] [transport.py] [_log()] starting thread (client mode): 0x1179ba60
2025-11-03T22:59:54.021 [DEBUG] [Thread-124150] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:59:54.036 [DEBUG] [Thread-124150] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T22:59:54.037 [INFO] [Thread-124150] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T22:59:54.040 [DEBUG] [Thread-124150] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:59:54.040 [DEBUG] [Thread-124150] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T22:59:54.040 [DEBUG] [Thread-124150] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:59:54.040 [DEBUG] [Thread-124150] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:59:54.040 [DEBUG] [Thread-124150] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:59:54.040 [DEBUG] [Thread-124150] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:59:54.040 [DEBUG] [Thread-124150] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:59:54.040 [DEBUG] [Thread-124150] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:59:54.040 [DEBUG] [Thread-124150] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:59:54.040 [DEBUG] [Thread-124150] [transport.py] [_log()] client lang: <none>
2025-11-03T22:59:54.040 [DEBUG] [Thread-124150] [transport.py] [_log()] server lang: <none>
2025-11-03T22:59:54.040 [DEBUG] [Thread-124150] [transport.py] [_log()] kex follows: False
2025-11-03T22:59:54.040 [DEBUG] [Thread-124150] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:59:54.040 [DEBUG] [Thread-124150] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:59:54.040 [DEBUG] [Thread-124150] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:59:54.040 [DEBUG] [Thread-124150] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:59:54.040 [DEBUG] [Thread-124150] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:59:54.040 [DEBUG] [Thread-124150] [transport.py] [_log()] Compression: none
2025-11-03T22:59:54.040 [DEBUG] [Thread-124150] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:59:54.057 [DEBUG] [Thread-124150] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:59:54.057 [DEBUG] [Thread-124150] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:59:54.058 [DEBUG] [Thread-124150] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T22:59:54.058 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T22:59:54.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:59:54.060 [DEBUG] [Thread-124150] [transport.py] [_log()] userauth is OK
2025-11-03T22:59:54.060 [DEBUG] [Thread-124150] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:59:54.060 [DEBUG] [Thread-124150] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:59:54.060 [DEBUG] [Thread-124150] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T22:59:54.060 [DEBUG] [Thread-124150] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:59:54.074 [INFO] [Thread-124150] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:59:54.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:59:54.717 [DEBUG] [Thread-124150] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:59:54.717 [DEBUG] [Thread-124150] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:59:54.717 [DEBUG] [Thread-124150] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T22:59:54.758 [DEBUG] [Thread-124150] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:59:54.758 [DEBUG] [Thread-124150] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:59:54.761 [DEBUG] [Thread-124150] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:59:54.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:59:54.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T22:59:54.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T22:59:54.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T22:59:54.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:59:54.784 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T22:59:54.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:59:54.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:59:54.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T22:59:54.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.874405 -999.00  +18.90  13.62     16   -6.60 1 1 1 1 1     0    0 25.26 -24.01 ZNESW 16.3 13.6 308.0 19.1 19.1 -25.5 19.0 -24.6 18.8 -24.3 19.0 -25.0
2025-11-03T22:59:54.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T22:59:54.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T22:59:54.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.874405
2025-11-03T22:59:54.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T22:59:54.786 [DEBUG] [Thread-124150] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:59:54.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T22:59:54.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T22:59:54.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T22:59:54.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T22:59:54.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T22:59:34', tmtdew=30.42, humidity=11.48, cloud=0.0, wind=14.8, temperature=18.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T22:59:36', seeing=1.23, atlas_timestamp='2025-11-03T20:59:08.592', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, 0.13424999999999976, 0.02725000000000044, 0.022499999999999076, 0.0365000000000002, -0.09974999999999845, -0.5370000000000008, -0.08225000000000016, 0.11299999999999955, 0.06700000000000017, 0.14124999999999943, 0.11999999999999922, 0.17199999999999882, 0.06475000000000009, -0.18100000000000094, -0.23000000000000043, 0.0467499999999994, 0.1615000000000002, 0.20650000000000013, 0.16424999999999912, 0.21149999999999736, 0.14224999999999888, -0.6287499999999984, -0.13724999999999987, 0.14100000000000001, 0.23799999999999955, 0.2787500000000005, 0.25, 0.29000000000000004, 0.06800000000000139, 0.1615000000000002, 0.10850000000000115, 0.1327499999999997], zp_timestamp='2025-11-03T20:55:00')
2025-11-03T22:59:54.872 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T22:59:54.887 [DEBUG] [Thread-124153] [transport.py] [_log()] starting thread (client mode): 0xed36770
2025-11-03T22:59:54.887 [DEBUG] [Thread-124153] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T22:59:54.905 [DEBUG] [Thread-124153] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T22:59:54.905 [INFO] [Thread-124153] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T22:59:54.916 [DEBUG] [Thread-124153] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T22:59:54.917 [DEBUG] [Thread-124153] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T22:59:54.917 [DEBUG] [Thread-124153] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T22:59:54.917 [DEBUG] [Thread-124153] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:59:54.917 [DEBUG] [Thread-124153] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T22:59:54.917 [DEBUG] [Thread-124153] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:59:54.917 [DEBUG] [Thread-124153] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T22:59:54.917 [DEBUG] [Thread-124153] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T22:59:54.917 [DEBUG] [Thread-124153] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T22:59:54.917 [DEBUG] [Thread-124153] [transport.py] [_log()] client lang: <none>
2025-11-03T22:59:54.917 [DEBUG] [Thread-124153] [transport.py] [_log()] server lang: <none>
2025-11-03T22:59:54.917 [DEBUG] [Thread-124153] [transport.py] [_log()] kex follows: False
2025-11-03T22:59:54.917 [DEBUG] [Thread-124153] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T22:59:54.917 [DEBUG] [Thread-124153] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T22:59:54.918 [DEBUG] [Thread-124153] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T22:59:54.918 [DEBUG] [Thread-124153] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T22:59:54.918 [DEBUG] [Thread-124153] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T22:59:54.918 [DEBUG] [Thread-124153] [transport.py] [_log()] Compression: none
2025-11-03T22:59:54.918 [DEBUG] [Thread-124153] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T22:59:54.978 [DEBUG] [Thread-124153] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T22:59:54.978 [DEBUG] [Thread-124153] [transport.py] [_log()] Switch to new keys ...
2025-11-03T22:59:54.979 [DEBUG] [Thread-124153] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T22:59:54.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T22:59:54.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T22:59:55.037 [DEBUG] [Thread-124153] [transport.py] [_log()] userauth is OK
2025-11-03T22:59:55.037 [DEBUG] [Thread-124153] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T22:59:55.037 [DEBUG] [Thread-124153] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T22:59:55.037 [DEBUG] [Thread-124153] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T22:59:55.037 [DEBUG] [Thread-124153] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T22:59:55.052 [INFO] [Thread-124153] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T22:59:55.052 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T22:59:55.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T22:59:55.879 [DEBUG] [Thread-124153] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T22:59:55.879 [DEBUG] [Thread-124153] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T22:59:55.930 [DEBUG] [Thread-124153] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T22:59:55.930 [DEBUG] [Thread-124153] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T22:59:55.944 [DEBUG] [Thread-124153] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T22:59:55.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T22:59:55.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T22:59:55.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T22:59:55.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T22:59:55.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T22:59:55.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T22:59:55.994 [DEBUG] [Thread-124153] [transport.py] [_log()] EOF in transport thread
2025-11-03T22:59:57.139 [DEBUG] [Thread-124155 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:00:00.578 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:00:00.580 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:00:11.159 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:00:12.188 [DEBUG] [Thread-124156 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:00:14.852 [DEBUG] [Thread-124157 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:00:19.077 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:00:23.171 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:00:26.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:00:26.007 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:00:26.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:00:26.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 0, 7), 30.41, 11.48, 0.0, 15.65, 18.85, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:00:26.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:00:07
2025-11-03T23:00:26.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:00:26.948 [DEBUG] [Thread-124158] [transport.py] [_log()] starting thread (client mode): 0x1174f850
2025-11-03T23:00:26.949 [DEBUG] [Thread-124158] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:00:26.967 [DEBUG] [Thread-124158] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:00:26.967 [INFO] [Thread-124158] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:00:26.970 [DEBUG] [Thread-124158] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:00:26.970 [DEBUG] [Thread-124158] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:00:26.970 [DEBUG] [Thread-124158] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:00:26.970 [DEBUG] [Thread-124158] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:00:26.970 [DEBUG] [Thread-124158] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:00:26.970 [DEBUG] [Thread-124158] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:00:26.970 [DEBUG] [Thread-124158] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:00:26.971 [DEBUG] [Thread-124158] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:00:26.971 [DEBUG] [Thread-124158] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:00:26.971 [DEBUG] [Thread-124158] [transport.py] [_log()] client lang: <none>
2025-11-03T23:00:26.971 [DEBUG] [Thread-124158] [transport.py] [_log()] server lang: <none>
2025-11-03T23:00:26.971 [DEBUG] [Thread-124158] [transport.py] [_log()] kex follows: False
2025-11-03T23:00:26.971 [DEBUG] [Thread-124158] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:00:26.971 [DEBUG] [Thread-124158] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:00:26.971 [DEBUG] [Thread-124158] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:00:26.971 [DEBUG] [Thread-124158] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:00:26.971 [DEBUG] [Thread-124158] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:00:26.971 [DEBUG] [Thread-124158] [transport.py] [_log()] Compression: none
2025-11-03T23:00:26.971 [DEBUG] [Thread-124158] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:00:26.987 [DEBUG] [Thread-124158] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:00:26.987 [DEBUG] [Thread-124158] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:00:26.987 [DEBUG] [Thread-124158] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:00:26.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:00:26.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:00:26.988 [DEBUG] [Thread-124158] [transport.py] [_log()] userauth is OK
2025-11-03T23:00:26.988 [DEBUG] [Thread-124158] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:00:26.988 [DEBUG] [Thread-124158] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:00:26.988 [DEBUG] [Thread-124158] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:00:26.988 [DEBUG] [Thread-124158] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:00:27.004 [INFO] [Thread-124158] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:00:27.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:00:27.227 [DEBUG] [Thread-124160 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:00:27.632 [DEBUG] [Thread-124158] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:00:27.632 [DEBUG] [Thread-124158] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:00:27.632 [DEBUG] [Thread-124158] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:00:27.673 [DEBUG] [Thread-124158] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:00:27.673 [DEBUG] [Thread-124158] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:00:27.676 [DEBUG] [Thread-124158] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:00:27.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:00:27.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:00:27.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:00:27.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:00:27.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:00:27.696 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:00:27.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:00:27.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:00:27.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:00:27.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.874752 -999.00  +18.90  15.67     16   -6.70 1 1 1 1 1     0    0 25.21 -22.98 ZNESW 15.9 15.7 312.2 18.8 19.1 -25.6 19.0 -24.5 18.7 -24.2 19.0 -25.1
2025-11-03T23:00:27.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:00:27.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:00:27.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.874752
2025-11-03T23:00:27.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:00:27.700 [DEBUG] [Thread-124158] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:00:27.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:00:27.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:00:27.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:00:27.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:00:27.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:00:07', tmtdew=30.41, humidity=11.48, cloud=0.0, wind=15.65, temperature=18.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:00:08', seeing=1.23, atlas_timestamp='2025-11-03T20:59:38.573', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, 0.13424999999999976, 0.02725000000000044, 0.022499999999999076, 0.0365000000000002, -0.09974999999999845, -0.5370000000000008, -0.08225000000000016, 0.11299999999999955, 0.06700000000000017, 0.14124999999999943, 0.11999999999999922, 0.17199999999999882, 0.06475000000000009, -0.18100000000000094, -0.23000000000000043, 0.0467499999999994, 0.1615000000000002, 0.20650000000000013, 0.16424999999999912, 0.21149999999999736, 0.14224999999999888, -0.6287499999999984, -0.13724999999999987, 0.14100000000000001, 0.23799999999999955, 0.2787500000000005, 0.25, 0.29000000000000004, 0.06800000000000139, 0.1615000000000002, 0.10850000000000115, 0.1327499999999997], zp_timestamp='2025-11-03T20:58:00')
2025-11-03T23:00:27.777 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:00:27.789 [DEBUG] [Thread-124162] [transport.py] [_log()] starting thread (client mode): 0x1174c580
2025-11-03T23:00:27.789 [DEBUG] [Thread-124162] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:00:27.804 [DEBUG] [Thread-124162] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:00:27.804 [INFO] [Thread-124162] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:00:27.812 [DEBUG] [Thread-124162] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:00:27.812 [DEBUG] [Thread-124162] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:00:27.812 [DEBUG] [Thread-124162] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:00:27.812 [DEBUG] [Thread-124162] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:00:27.812 [DEBUG] [Thread-124162] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:00:27.812 [DEBUG] [Thread-124162] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:00:27.812 [DEBUG] [Thread-124162] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:00:27.812 [DEBUG] [Thread-124162] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:00:27.812 [DEBUG] [Thread-124162] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:00:27.812 [DEBUG] [Thread-124162] [transport.py] [_log()] client lang: <none>
2025-11-03T23:00:27.812 [DEBUG] [Thread-124162] [transport.py] [_log()] server lang: <none>
2025-11-03T23:00:27.812 [DEBUG] [Thread-124162] [transport.py] [_log()] kex follows: False
2025-11-03T23:00:27.812 [DEBUG] [Thread-124162] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:00:27.812 [DEBUG] [Thread-124162] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:00:27.812 [DEBUG] [Thread-124162] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:00:27.812 [DEBUG] [Thread-124162] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:00:27.812 [DEBUG] [Thread-124162] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:00:27.812 [DEBUG] [Thread-124162] [transport.py] [_log()] Compression: none
2025-11-03T23:00:27.812 [DEBUG] [Thread-124162] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:00:27.872 [DEBUG] [Thread-124162] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:00:27.872 [DEBUG] [Thread-124162] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:00:27.873 [DEBUG] [Thread-124162] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:00:27.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:00:27.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:00:27.937 [DEBUG] [Thread-124162] [transport.py] [_log()] userauth is OK
2025-11-03T23:00:27.937 [DEBUG] [Thread-124162] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:00:27.937 [DEBUG] [Thread-124162] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:00:27.937 [DEBUG] [Thread-124162] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:00:27.937 [DEBUG] [Thread-124162] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:00:27.957 [INFO] [Thread-124162] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:00:27.957 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:00:27.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:00:28.801 [DEBUG] [Thread-124162] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:00:28.801 [DEBUG] [Thread-124162] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:00:28.850 [DEBUG] [Thread-124162] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:00:28.850 [DEBUG] [Thread-124162] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:00:28.859 [DEBUG] [Thread-124162] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:00:28.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:00:28.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:00:28.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:00:28.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:00:28.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:00:28.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:00:28.904 [DEBUG] [Thread-124162] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:00:42.258 [DEBUG] [Thread-124164 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:00:55.589 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:00:57.390 [DEBUG] [Thread-124165 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:00:58.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:00:58.926 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:00:58.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:01:00.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 0, 44), 30.44, 11.48, 0.0, 16.48, 18.81, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:01:00.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:00:44
2025-11-03T23:01:00.781 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:01:00.782 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:01:00.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:01:00.965 [DEBUG] [Thread-124166] [transport.py] [_log()] starting thread (client mode): 0xed411e0
2025-11-03T23:01:00.965 [DEBUG] [Thread-124166] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:01:00.975 [DEBUG] [Thread-124166] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:01:00.975 [INFO] [Thread-124166] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:01:00.979 [DEBUG] [Thread-124166] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:01:00.979 [DEBUG] [Thread-124166] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:01:00.979 [DEBUG] [Thread-124166] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:01:00.979 [DEBUG] [Thread-124166] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:01:00.979 [DEBUG] [Thread-124166] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:01:00.979 [DEBUG] [Thread-124166] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:01:00.979 [DEBUG] [Thread-124166] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:01:00.979 [DEBUG] [Thread-124166] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:01:00.979 [DEBUG] [Thread-124166] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:01:00.979 [DEBUG] [Thread-124166] [transport.py] [_log()] client lang: <none>
2025-11-03T23:01:00.979 [DEBUG] [Thread-124166] [transport.py] [_log()] server lang: <none>
2025-11-03T23:01:00.979 [DEBUG] [Thread-124166] [transport.py] [_log()] kex follows: False
2025-11-03T23:01:00.979 [DEBUG] [Thread-124166] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:01:00.979 [DEBUG] [Thread-124166] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:01:00.979 [DEBUG] [Thread-124166] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:01:00.979 [DEBUG] [Thread-124166] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:01:00.979 [DEBUG] [Thread-124166] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:01:00.979 [DEBUG] [Thread-124166] [transport.py] [_log()] Compression: none
2025-11-03T23:01:00.979 [DEBUG] [Thread-124166] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:01:00.994 [DEBUG] [Thread-124166] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:01:00.994 [DEBUG] [Thread-124166] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:01:00.994 [DEBUG] [Thread-124166] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:01:00.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:01:00.996 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:01:01.037 [DEBUG] [Thread-124166] [transport.py] [_log()] userauth is OK
2025-11-03T23:01:01.037 [DEBUG] [Thread-124166] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:01:01.037 [DEBUG] [Thread-124166] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:01:01.037 [DEBUG] [Thread-124166] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:01:01.038 [DEBUG] [Thread-124166] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:01:01.055 [INFO] [Thread-124166] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:01:01.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:01:01.680 [DEBUG] [Thread-124166] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:01:01.681 [DEBUG] [Thread-124166] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:01:01.681 [DEBUG] [Thread-124166] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:01:01.721 [DEBUG] [Thread-124166] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:01:01.721 [DEBUG] [Thread-124166] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:01:01.725 [DEBUG] [Thread-124166] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:01:01.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:01:01.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:01:01.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:01:01.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:01:01.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:01:01.750 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:01:01.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:01:01.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:01:01.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:01:01.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.875447 -999.00  +18.90  15.77     16   -6.70 1 1 1 1 1     0    0 25.21 -25.92 ZNESW 16.1 15.8 307.2 18.9 19.0 -25.6 18.9 -24.5 18.7 -24.2 19.0 -25.1
2025-11-03T23:01:01.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:01:01.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:01:01.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.875447
2025-11-03T23:01:01.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:01:01.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:01:01.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:01:01.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:01:01.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:01:01.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:00:44', tmtdew=30.44, humidity=11.48, cloud=0.0, wind=16.48, temperature=18.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:00:44', seeing=1.13, atlas_timestamp='2025-11-03T21:00:38.621', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, 0.13424999999999976, 0.02725000000000044, 0.022499999999999076, 0.0365000000000002, -0.09974999999999845, -0.5370000000000008, -0.08225000000000016, 0.11299999999999955, 0.06700000000000017, 0.14124999999999943, 0.11999999999999922, 0.17199999999999882, 0.06475000000000009, -0.18100000000000094, -0.23000000000000043, 0.0467499999999994, 0.1615000000000002, 0.20650000000000013, 0.16424999999999912, 0.21149999999999736, 0.14224999999999888, -0.6287499999999984, -0.13724999999999987, 0.14100000000000001, 0.23799999999999955, 0.2787500000000005, 0.25, 0.29000000000000004, 0.06800000000000139, 0.1615000000000002, 0.10850000000000115, 0.1327499999999997], zp_timestamp='2025-11-03T20:58:00')
2025-11-03T23:01:01.754 [DEBUG] [Thread-124166] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:01:01.856 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:01:01.873 [DEBUG] [Thread-124169] [transport.py] [_log()] starting thread (client mode): 0xeda08e0
2025-11-03T23:01:01.873 [DEBUG] [Thread-124169] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:01:01.891 [DEBUG] [Thread-124169] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:01:01.891 [INFO] [Thread-124169] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:01:01.902 [DEBUG] [Thread-124169] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:01:01.902 [DEBUG] [Thread-124169] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:01:01.903 [DEBUG] [Thread-124169] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:01:01.903 [DEBUG] [Thread-124169] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:01:01.903 [DEBUG] [Thread-124169] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:01:01.903 [DEBUG] [Thread-124169] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:01:01.903 [DEBUG] [Thread-124169] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:01:01.903 [DEBUG] [Thread-124169] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:01:01.903 [DEBUG] [Thread-124169] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:01:01.903 [DEBUG] [Thread-124169] [transport.py] [_log()] client lang: <none>
2025-11-03T23:01:01.903 [DEBUG] [Thread-124169] [transport.py] [_log()] server lang: <none>
2025-11-03T23:01:01.903 [DEBUG] [Thread-124169] [transport.py] [_log()] kex follows: False
2025-11-03T23:01:01.903 [DEBUG] [Thread-124169] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:01:01.903 [DEBUG] [Thread-124169] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:01:01.903 [DEBUG] [Thread-124169] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:01:01.903 [DEBUG] [Thread-124169] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:01:01.903 [DEBUG] [Thread-124169] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:01:01.903 [DEBUG] [Thread-124169] [transport.py] [_log()] Compression: none
2025-11-03T23:01:01.903 [DEBUG] [Thread-124169] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:01:01.966 [DEBUG] [Thread-124169] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:01:01.967 [DEBUG] [Thread-124169] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:01:01.967 [DEBUG] [Thread-124169] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:01:01.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:01:01.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:01:02.029 [DEBUG] [Thread-124169] [transport.py] [_log()] userauth is OK
2025-11-03T23:01:02.030 [DEBUG] [Thread-124169] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:01:02.030 [DEBUG] [Thread-124169] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:01:02.030 [DEBUG] [Thread-124169] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:01:02.030 [DEBUG] [Thread-124169] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:01:02.055 [INFO] [Thread-124169] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:01:02.055 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:01:02.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:01:02.891 [DEBUG] [Thread-124169] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:01:02.891 [DEBUG] [Thread-124169] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:01:02.939 [DEBUG] [Thread-124169] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:01:02.939 [DEBUG] [Thread-124169] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:01:02.948 [DEBUG] [Thread-124169] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:01:02.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:01:02.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:01:02.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:01:02.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:01:02.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:01:02.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:01:02.981 [DEBUG] [Thread-124169] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:01:03.581 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:01:07.639 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:01:12.426 [DEBUG] [Thread-124171 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:01:15.111 [DEBUG] [Thread-124172 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:01:27.466 [DEBUG] [Thread-124173 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:01:32.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:01:32.990 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:01:33.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:01:33.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 1, 16), 30.38, 11.55, 0.0, 15.56, 18.83, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:01:33.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:01:16
2025-11-03T23:01:33.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:01:34.016 [DEBUG] [Thread-124174] [transport.py] [_log()] starting thread (client mode): 0x1174fe80
2025-11-03T23:01:34.016 [DEBUG] [Thread-124174] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:01:34.036 [DEBUG] [Thread-124174] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:01:34.036 [INFO] [Thread-124174] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:01:34.047 [DEBUG] [Thread-124174] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:01:34.047 [DEBUG] [Thread-124174] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:01:34.047 [DEBUG] [Thread-124174] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:01:34.047 [DEBUG] [Thread-124174] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:01:34.048 [DEBUG] [Thread-124174] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:01:34.048 [DEBUG] [Thread-124174] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:01:34.048 [DEBUG] [Thread-124174] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:01:34.048 [DEBUG] [Thread-124174] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:01:34.048 [DEBUG] [Thread-124174] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:01:34.048 [DEBUG] [Thread-124174] [transport.py] [_log()] client lang: <none>
2025-11-03T23:01:34.048 [DEBUG] [Thread-124174] [transport.py] [_log()] server lang: <none>
2025-11-03T23:01:34.048 [DEBUG] [Thread-124174] [transport.py] [_log()] kex follows: False
2025-11-03T23:01:34.048 [DEBUG] [Thread-124174] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:01:34.049 [DEBUG] [Thread-124174] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:01:34.049 [DEBUG] [Thread-124174] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:01:34.049 [DEBUG] [Thread-124174] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:01:34.049 [DEBUG] [Thread-124174] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:01:34.049 [DEBUG] [Thread-124174] [transport.py] [_log()] Compression: none
2025-11-03T23:01:34.049 [DEBUG] [Thread-124174] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:01:34.069 [DEBUG] [Thread-124174] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:01:34.070 [DEBUG] [Thread-124174] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:01:34.071 [DEBUG] [Thread-124174] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:01:34.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:01:34.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:01:34.074 [DEBUG] [Thread-124174] [transport.py] [_log()] userauth is OK
2025-11-03T23:01:34.074 [DEBUG] [Thread-124174] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:01:34.074 [DEBUG] [Thread-124174] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:01:34.074 [DEBUG] [Thread-124174] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:01:34.075 [DEBUG] [Thread-124174] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:01:34.100 [INFO] [Thread-124174] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:01:34.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:01:34.752 [DEBUG] [Thread-124174] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:01:34.753 [DEBUG] [Thread-124174] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:01:34.753 [DEBUG] [Thread-124174] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:01:34.793 [DEBUG] [Thread-124174] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:01:34.793 [DEBUG] [Thread-124174] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:01:34.796 [DEBUG] [Thread-124174] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:01:34.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:01:34.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:01:34.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:01:34.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:01:34.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:01:34.822 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:01:34.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:01:34.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:01:34.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:01:34.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.875794 -999.00  +18.80  14.08     16   -6.70 1 1 1 1 1     0    0 25.09 -28.54 ZNESW 14.7 14.1 310.0 18.0 19.0 -25.5 18.9 -24.5 18.7 -24.1 18.9 -25.1
2025-11-03T23:01:34.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:01:34.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:01:34.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.875794
2025-11-03T23:01:34.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:01:34.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:01:34.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:01:34.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:01:34.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:01:34.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:01:16', tmtdew=30.38, humidity=11.55, cloud=0.0, wind=15.56, temperature=18.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:01:17', seeing=1.13, atlas_timestamp='2025-11-03T21:01:08.602', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, 0.13424999999999976, 0.02725000000000044, 0.022499999999999076, 0.0365000000000002, -0.09974999999999845, -0.5370000000000008, -0.08225000000000016, 0.11299999999999955, 0.06700000000000017, 0.14124999999999943, 0.11999999999999922, 0.17199999999999882, 0.06475000000000009, -0.18100000000000094, -0.23000000000000043, 0.0467499999999994, 0.1615000000000002, 0.20650000000000013, 0.16424999999999912, 0.21149999999999736, 0.14224999999999888, -0.6287499999999984, -0.13724999999999987, 0.14100000000000001, 0.23799999999999955, 0.2787500000000005, 0.25, 0.29000000000000004, 0.06800000000000139, 0.1615000000000002, 0.10850000000000115, 0.1327499999999997], zp_timestamp='2025-11-03T20:58:00')
2025-11-03T23:01:34.823 [DEBUG] [Thread-124174] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:01:34.896 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:01:34.912 [DEBUG] [Thread-124177] [transport.py] [_log()] starting thread (client mode): 0xed37100
2025-11-03T23:01:34.912 [DEBUG] [Thread-124177] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:01:34.927 [DEBUG] [Thread-124177] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:01:34.927 [INFO] [Thread-124177] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:01:34.936 [DEBUG] [Thread-124177] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:01:34.936 [DEBUG] [Thread-124177] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:01:34.936 [DEBUG] [Thread-124177] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:01:34.936 [DEBUG] [Thread-124177] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:01:34.936 [DEBUG] [Thread-124177] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:01:34.936 [DEBUG] [Thread-124177] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:01:34.936 [DEBUG] [Thread-124177] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:01:34.936 [DEBUG] [Thread-124177] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:01:34.936 [DEBUG] [Thread-124177] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:01:34.936 [DEBUG] [Thread-124177] [transport.py] [_log()] client lang: <none>
2025-11-03T23:01:34.936 [DEBUG] [Thread-124177] [transport.py] [_log()] server lang: <none>
2025-11-03T23:01:34.936 [DEBUG] [Thread-124177] [transport.py] [_log()] kex follows: False
2025-11-03T23:01:34.936 [DEBUG] [Thread-124177] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:01:34.936 [DEBUG] [Thread-124177] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:01:34.936 [DEBUG] [Thread-124177] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:01:34.936 [DEBUG] [Thread-124177] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:01:34.936 [DEBUG] [Thread-124177] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:01:34.936 [DEBUG] [Thread-124177] [transport.py] [_log()] Compression: none
2025-11-03T23:01:34.936 [DEBUG] [Thread-124177] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:01:34.991 [DEBUG] [Thread-124177] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:01:34.992 [DEBUG] [Thread-124177] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:01:34.992 [DEBUG] [Thread-124177] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:01:34.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:01:34.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:01:35.058 [DEBUG] [Thread-124177] [transport.py] [_log()] userauth is OK
2025-11-03T23:01:35.058 [DEBUG] [Thread-124177] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:01:35.058 [DEBUG] [Thread-124177] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:01:35.058 [DEBUG] [Thread-124177] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:01:35.058 [DEBUG] [Thread-124177] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:01:35.073 [INFO] [Thread-124177] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:01:35.073 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:01:35.074 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:01:35.905 [DEBUG] [Thread-124177] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:01:35.905 [DEBUG] [Thread-124177] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:01:35.953 [DEBUG] [Thread-124177] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:01:35.954 [DEBUG] [Thread-124177] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:01:35.963 [DEBUG] [Thread-124177] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:01:35.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:01:35.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:01:35.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:01:35.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:01:35.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:01:35.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:01:36.006 [DEBUG] [Thread-124177] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:01:40.210 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:01:42.503 [DEBUG] [Thread-124179 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:01:47.029 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:01:51.144 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:01:57.561 [DEBUG] [Thread-124180 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:02:00.984 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:02:00.985 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:02:06.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:02:06.003 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:02:06.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:02:06.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 1, 48), 30.45, 11.48, 0.0, 17.27, 18.86, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:02:06.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:01:48
2025-11-03T23:02:06.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:02:07.006 [DEBUG] [Thread-124181] [transport.py] [_log()] starting thread (client mode): 0x1174c3d0
2025-11-03T23:02:07.006 [DEBUG] [Thread-124181] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:02:07.026 [DEBUG] [Thread-124181] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:02:07.026 [INFO] [Thread-124181] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:02:07.029 [DEBUG] [Thread-124181] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:02:07.029 [DEBUG] [Thread-124181] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:02:07.029 [DEBUG] [Thread-124181] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:02:07.029 [DEBUG] [Thread-124181] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:02:07.029 [DEBUG] [Thread-124181] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:02:07.030 [DEBUG] [Thread-124181] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:02:07.030 [DEBUG] [Thread-124181] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:02:07.030 [DEBUG] [Thread-124181] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:02:07.030 [DEBUG] [Thread-124181] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:02:07.030 [DEBUG] [Thread-124181] [transport.py] [_log()] client lang: <none>
2025-11-03T23:02:07.030 [DEBUG] [Thread-124181] [transport.py] [_log()] server lang: <none>
2025-11-03T23:02:07.030 [DEBUG] [Thread-124181] [transport.py] [_log()] kex follows: False
2025-11-03T23:02:07.030 [DEBUG] [Thread-124181] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:02:07.030 [DEBUG] [Thread-124181] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:02:07.031 [DEBUG] [Thread-124181] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:02:07.031 [DEBUG] [Thread-124181] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:02:07.031 [DEBUG] [Thread-124181] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:02:07.031 [DEBUG] [Thread-124181] [transport.py] [_log()] Compression: none
2025-11-03T23:02:07.031 [DEBUG] [Thread-124181] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:02:07.055 [DEBUG] [Thread-124181] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:02:07.056 [DEBUG] [Thread-124181] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:02:07.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:02:07.057 [DEBUG] [Thread-124181] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:02:07.058 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:02:07.059 [DEBUG] [Thread-124181] [transport.py] [_log()] userauth is OK
2025-11-03T23:02:07.060 [DEBUG] [Thread-124181] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:02:07.060 [DEBUG] [Thread-124181] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:02:07.060 [DEBUG] [Thread-124181] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:02:07.060 [DEBUG] [Thread-124181] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:02:07.083 [INFO] [Thread-124181] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:02:07.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:02:07.744 [DEBUG] [Thread-124181] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:02:07.744 [DEBUG] [Thread-124181] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:02:07.744 [DEBUG] [Thread-124181] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:02:07.784 [DEBUG] [Thread-124181] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:02:07.784 [DEBUG] [Thread-124181] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:02:07.787 [DEBUG] [Thread-124181] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:02:07.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:02:07.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:02:07.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:02:07.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:02:07.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:02:07.811 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:02:07.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:02:07.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:02:07.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:02:07.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.876141 -999.00  +18.80  13.90     17   -6.70 1 1 1 1 1     0    0 25.26 -30.51 ZNESW 15.2 13.9 312.2 15.7 19.0 -25.5 18.9 -24.4 18.6 -24.1 18.9 -25.2
2025-11-03T23:02:07.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:02:07.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:02:07.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.876141
2025-11-03T23:02:07.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:02:07.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:02:07.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:02:07.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:02:07.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:02:07.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:01:48', tmtdew=30.45, humidity=11.48, cloud=0.0, wind=17.27, temperature=18.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:01:50', seeing=1.13, atlas_timestamp='2025-11-03T21:01:38.582', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, 0.13424999999999976, 0.02725000000000044, 0.022499999999999076, 0.0365000000000002, -0.09974999999999845, -0.5370000000000008, -0.08225000000000016, 0.11299999999999955, 0.06700000000000017, 0.14124999999999943, 0.11999999999999922, 0.17199999999999882, 0.06475000000000009, -0.18100000000000094, -0.23000000000000043, 0.0467499999999994, 0.1615000000000002, 0.20650000000000013, 0.16424999999999912, 0.21149999999999736, 0.14224999999999888, -0.6287499999999984, -0.13724999999999987, 0.14100000000000001, 0.23799999999999955, 0.2787500000000005, 0.25, 0.29000000000000004, 0.06800000000000139, 0.1615000000000002, 0.10850000000000115, 0.1327499999999997], zp_timestamp='2025-11-03T20:58:00')
2025-11-03T23:02:07.813 [DEBUG] [Thread-124181] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:02:07.887 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:02:07.899 [DEBUG] [Thread-124184] [transport.py] [_log()] starting thread (client mode): 0x1174e830
2025-11-03T23:02:07.899 [DEBUG] [Thread-124184] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:02:07.914 [DEBUG] [Thread-124184] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:02:07.914 [INFO] [Thread-124184] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:02:07.922 [DEBUG] [Thread-124184] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:02:07.922 [DEBUG] [Thread-124184] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:02:07.922 [DEBUG] [Thread-124184] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:02:07.922 [DEBUG] [Thread-124184] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:02:07.922 [DEBUG] [Thread-124184] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:02:07.922 [DEBUG] [Thread-124184] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:02:07.922 [DEBUG] [Thread-124184] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:02:07.922 [DEBUG] [Thread-124184] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:02:07.922 [DEBUG] [Thread-124184] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:02:07.922 [DEBUG] [Thread-124184] [transport.py] [_log()] client lang: <none>
2025-11-03T23:02:07.922 [DEBUG] [Thread-124184] [transport.py] [_log()] server lang: <none>
2025-11-03T23:02:07.922 [DEBUG] [Thread-124184] [transport.py] [_log()] kex follows: False
2025-11-03T23:02:07.922 [DEBUG] [Thread-124184] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:02:07.922 [DEBUG] [Thread-124184] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:02:07.922 [DEBUG] [Thread-124184] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:02:07.922 [DEBUG] [Thread-124184] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:02:07.923 [DEBUG] [Thread-124184] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:02:07.923 [DEBUG] [Thread-124184] [transport.py] [_log()] Compression: none
2025-11-03T23:02:07.923 [DEBUG] [Thread-124184] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:02:07.979 [DEBUG] [Thread-124184] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:02:07.979 [DEBUG] [Thread-124184] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:02:07.979 [DEBUG] [Thread-124184] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:02:07.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:02:07.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:02:08.037 [DEBUG] [Thread-124184] [transport.py] [_log()] userauth is OK
2025-11-03T23:02:08.037 [DEBUG] [Thread-124184] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:02:08.037 [DEBUG] [Thread-124184] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:02:08.037 [DEBUG] [Thread-124184] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:02:08.037 [DEBUG] [Thread-124184] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:02:08.051 [INFO] [Thread-124184] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:02:08.051 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:02:08.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:02:08.872 [DEBUG] [Thread-124184] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:02:08.872 [DEBUG] [Thread-124184] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:02:08.922 [DEBUG] [Thread-124184] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:02:08.922 [DEBUG] [Thread-124184] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:02:08.932 [DEBUG] [Thread-124184] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:02:08.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:02:08.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:02:08.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:02:08.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:02:08.972 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:02:08.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:02:08.982 [DEBUG] [Thread-124184] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:02:12.597 [DEBUG] [Thread-124186 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:02:16.616 [DEBUG] [Thread-124187 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:02:23.579 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:02:27.661 [DEBUG] [Thread-124188 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:02:30.597 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:02:34.700 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:02:39.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:02:39.006 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:02:39.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:02:39.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 2, 22), 30.46, 11.48, 0.0, 17.33, 18.88, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:02:39.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:02:22
2025-11-03T23:02:39.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:02:39.997 [DEBUG] [Thread-124189] [transport.py] [_log()] starting thread (client mode): 0xed057e0
2025-11-03T23:02:39.997 [DEBUG] [Thread-124189] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:02:40.015 [DEBUG] [Thread-124189] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:02:40.015 [INFO] [Thread-124189] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:02:40.019 [DEBUG] [Thread-124189] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:02:40.019 [DEBUG] [Thread-124189] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:02:40.019 [DEBUG] [Thread-124189] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:02:40.019 [DEBUG] [Thread-124189] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:02:40.019 [DEBUG] [Thread-124189] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:02:40.019 [DEBUG] [Thread-124189] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:02:40.019 [DEBUG] [Thread-124189] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:02:40.020 [DEBUG] [Thread-124189] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:02:40.020 [DEBUG] [Thread-124189] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:02:40.020 [DEBUG] [Thread-124189] [transport.py] [_log()] client lang: <none>
2025-11-03T23:02:40.020 [DEBUG] [Thread-124189] [transport.py] [_log()] server lang: <none>
2025-11-03T23:02:40.020 [DEBUG] [Thread-124189] [transport.py] [_log()] kex follows: False
2025-11-03T23:02:40.020 [DEBUG] [Thread-124189] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:02:40.020 [DEBUG] [Thread-124189] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:02:40.021 [DEBUG] [Thread-124189] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:02:40.021 [DEBUG] [Thread-124189] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:02:40.021 [DEBUG] [Thread-124189] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:02:40.021 [DEBUG] [Thread-124189] [transport.py] [_log()] Compression: none
2025-11-03T23:02:40.021 [DEBUG] [Thread-124189] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:02:40.051 [DEBUG] [Thread-124189] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:02:40.056 [DEBUG] [Thread-124189] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:02:40.058 [DEBUG] [Thread-124189] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:02:40.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:02:40.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:02:40.061 [DEBUG] [Thread-124189] [transport.py] [_log()] userauth is OK
2025-11-03T23:02:40.062 [DEBUG] [Thread-124189] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:02:40.062 [DEBUG] [Thread-124189] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:02:40.062 [DEBUG] [Thread-124189] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:02:40.062 [DEBUG] [Thread-124189] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:02:40.088 [INFO] [Thread-124189] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:02:40.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:02:40.693 [DEBUG] [Thread-124189] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:02:40.693 [DEBUG] [Thread-124189] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:02:40.693 [DEBUG] [Thread-124189] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:02:40.734 [DEBUG] [Thread-124189] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:02:40.734 [DEBUG] [Thread-124189] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:02:40.737 [DEBUG] [Thread-124189] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:02:40.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:02:40.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:02:40.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:02:40.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:02:40.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:02:40.756 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:02:40.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:02:40.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:02:40.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:02:40.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.876488 -999.00  +18.80  13.58     17   -6.70 1 1 1 1 1     0    0 24.48 -32.78 ZNESW 14.5 13.6 313.0 19.0 18.9 -25.3 18.9 -24.4 18.6 -23.9 18.9 -24.8
2025-11-03T23:02:40.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:02:40.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:02:40.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.876488
2025-11-03T23:02:40.763 [DEBUG] [Thread-124189] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:02:40.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:02:40.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:02:40.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:02:40.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:02:40.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:02:40.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:02:22', tmtdew=30.46, humidity=11.48, cloud=0.0, wind=17.33, temperature=18.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:02:22', seeing=1.13, atlas_timestamp='2025-11-03T21:02:08.563', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, 0.13424999999999976, 0.02725000000000044, 0.022499999999999076, 0.0365000000000002, -0.09974999999999845, -0.5370000000000008, -0.08225000000000016, 0.11299999999999955, 0.06700000000000017, 0.14124999999999943, 0.11999999999999922, 0.17199999999999882, 0.06475000000000009, -0.18100000000000094, -0.23000000000000043, 0.0467499999999994, 0.1615000000000002, 0.20650000000000013, 0.16424999999999912, 0.21149999999999736, 0.14224999999999888, -0.6287499999999984, -0.13724999999999987, 0.14100000000000001, 0.23799999999999955, 0.2787500000000005, 0.25, 0.29000000000000004, 0.06800000000000139, 0.1615000000000002, 0.10850000000000115, 0.1327499999999997], zp_timestamp='2025-11-03T20:58:00')
2025-11-03T23:02:40.846 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:02:40.858 [DEBUG] [Thread-124192] [transport.py] [_log()] starting thread (client mode): 0xed05ff0
2025-11-03T23:02:40.858 [DEBUG] [Thread-124192] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:02:40.872 [DEBUG] [Thread-124192] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:02:40.872 [INFO] [Thread-124192] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:02:40.879 [DEBUG] [Thread-124192] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:02:40.880 [DEBUG] [Thread-124192] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:02:40.880 [DEBUG] [Thread-124192] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:02:40.880 [DEBUG] [Thread-124192] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:02:40.880 [DEBUG] [Thread-124192] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:02:40.880 [DEBUG] [Thread-124192] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:02:40.880 [DEBUG] [Thread-124192] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:02:40.880 [DEBUG] [Thread-124192] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:02:40.880 [DEBUG] [Thread-124192] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:02:40.880 [DEBUG] [Thread-124192] [transport.py] [_log()] client lang: <none>
2025-11-03T23:02:40.880 [DEBUG] [Thread-124192] [transport.py] [_log()] server lang: <none>
2025-11-03T23:02:40.880 [DEBUG] [Thread-124192] [transport.py] [_log()] kex follows: False
2025-11-03T23:02:40.880 [DEBUG] [Thread-124192] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:02:40.880 [DEBUG] [Thread-124192] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:02:40.880 [DEBUG] [Thread-124192] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:02:40.880 [DEBUG] [Thread-124192] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:02:40.880 [DEBUG] [Thread-124192] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:02:40.880 [DEBUG] [Thread-124192] [transport.py] [_log()] Compression: none
2025-11-03T23:02:40.880 [DEBUG] [Thread-124192] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:02:40.938 [DEBUG] [Thread-124192] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:02:40.938 [DEBUG] [Thread-124192] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:02:40.938 [DEBUG] [Thread-124192] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:02:40.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:02:40.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:02:41.010 [DEBUG] [Thread-124192] [transport.py] [_log()] userauth is OK
2025-11-03T23:02:41.010 [DEBUG] [Thread-124192] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:02:41.010 [DEBUG] [Thread-124192] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:02:41.010 [DEBUG] [Thread-124192] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:02:41.010 [DEBUG] [Thread-124192] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:02:41.027 [INFO] [Thread-124192] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:02:41.027 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:02:41.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:02:41.871 [DEBUG] [Thread-124192] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:02:41.871 [DEBUG] [Thread-124192] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:02:41.910 [DEBUG] [Thread-124192] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:02:41.911 [DEBUG] [Thread-124192] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:02:41.921 [DEBUG] [Thread-124192] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:02:41.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:02:41.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:02:41.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:02:41.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:02:41.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:02:41.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:02:41.963 [DEBUG] [Thread-124192] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:02:42.690 [DEBUG] [Thread-124194 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:02:57.762 [DEBUG] [Thread-124195 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:03:01.196 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:03:01.200 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:03:07.159 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:03:11.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:03:11.985 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:03:11.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:03:12.794 [DEBUG] [Thread-124196 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:03:15.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 2, 54), 30.42, 11.51, 0.0, 15.62, 18.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:03:15.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:02:54
2025-11-03T23:03:15.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:03:15.641 [DEBUG] [Thread-124197] [transport.py] [_log()] starting thread (client mode): 0xed06530
2025-11-03T23:03:15.641 [DEBUG] [Thread-124197] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:03:15.652 [DEBUG] [Thread-124197] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:03:15.652 [INFO] [Thread-124197] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:03:15.654 [DEBUG] [Thread-124197] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:03:15.654 [DEBUG] [Thread-124197] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:03:15.654 [DEBUG] [Thread-124197] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:03:15.654 [DEBUG] [Thread-124197] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:03:15.654 [DEBUG] [Thread-124197] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:03:15.654 [DEBUG] [Thread-124197] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:03:15.654 [DEBUG] [Thread-124197] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:03:15.654 [DEBUG] [Thread-124197] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:03:15.654 [DEBUG] [Thread-124197] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:03:15.654 [DEBUG] [Thread-124197] [transport.py] [_log()] client lang: <none>
2025-11-03T23:03:15.654 [DEBUG] [Thread-124197] [transport.py] [_log()] server lang: <none>
2025-11-03T23:03:15.654 [DEBUG] [Thread-124197] [transport.py] [_log()] kex follows: False
2025-11-03T23:03:15.654 [DEBUG] [Thread-124197] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:03:15.654 [DEBUG] [Thread-124197] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:03:15.654 [DEBUG] [Thread-124197] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:03:15.654 [DEBUG] [Thread-124197] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:03:15.654 [DEBUG] [Thread-124197] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:03:15.654 [DEBUG] [Thread-124197] [transport.py] [_log()] Compression: none
2025-11-03T23:03:15.654 [DEBUG] [Thread-124197] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:03:15.663 [DEBUG] [Thread-124197] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:03:15.663 [DEBUG] [Thread-124197] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:03:15.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:03:15.663 [DEBUG] [Thread-124197] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:03:15.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:03:15.664 [DEBUG] [Thread-124197] [transport.py] [_log()] userauth is OK
2025-11-03T23:03:15.664 [DEBUG] [Thread-124197] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:03:15.664 [DEBUG] [Thread-124197] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:03:15.664 [DEBUG] [Thread-124197] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:03:15.664 [DEBUG] [Thread-124197] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:03:15.690 [INFO] [Thread-124197] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:03:15.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:03:16.291 [DEBUG] [Thread-124197] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:03:16.291 [DEBUG] [Thread-124197] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:03:16.291 [DEBUG] [Thread-124197] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:03:16.331 [DEBUG] [Thread-124197] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:03:16.331 [DEBUG] [Thread-124197] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:03:16.333 [DEBUG] [Thread-124197] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:03:16.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:03:16.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:03:16.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:03:16.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:03:16.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:03:16.350 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:03:16.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:03:16.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:03:16.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:03:16.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.877183 -999.00  +18.80  13.54     16   -6.80 1 1 1 1 1     0    0 24.49 -40.58 ZNESW 12.6 13.5 305.0 18.6 19.0 -25.4 18.9 -24.3 18.6 -24.0 18.9 -24.9
2025-11-03T23:03:16.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:03:16.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:03:16.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.877183
2025-11-03T23:03:16.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:03:16.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:03:16.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:03:16.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:03:16.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:03:16.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:02:54', tmtdew=30.42, humidity=11.51, cloud=0.0, wind=15.62, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:02:55', seeing=1.17, atlas_timestamp='2025-11-03T21:03:08.611', atlas_cloud=1, atlas_rain=1, zp_data=[-0.030250000000000554, 0.02275000000000027, 0.058750000000001634, -0.007500000000000284, 0.03849999999999909, -0.04324999999999868, -0.2640000000000011, -0.16274999999999906, 0.05149999999999899, 0.04800000000000004, 0.04374999999999929, 0.036999999999999034, 0.10549999999999926, 0.03324999999999889, -0.19849999999999923, -0.29350000000000165, -0.029749999999999943, 0.08050000000000068, 0.16299999999999848, 0.09724999999999895, 0.19599999999999795, 0.061749999999998195, -0.11874999999999858, -0.11224999999999952, 0.1120000000000001, 0.1645000000000003, 0.19074999999999953, 0.18650000000000055, 0.18950000000000067, 0.10300000000000153, 0.0555000000000021, 0.03300000000000125, 0.09274999999999878], zp_timestamp='2025-11-03T21:01:00')
2025-11-03T23:03:16.352 [DEBUG] [Thread-124197] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:03:16.428 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:03:16.439 [DEBUG] [Thread-124200] [transport.py] [_log()] starting thread (client mode): 0xedb0310
2025-11-03T23:03:16.439 [DEBUG] [Thread-124200] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:03:16.455 [DEBUG] [Thread-124200] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:03:16.455 [INFO] [Thread-124200] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:03:16.463 [DEBUG] [Thread-124200] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:03:16.463 [DEBUG] [Thread-124200] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:03:16.463 [DEBUG] [Thread-124200] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:03:16.463 [DEBUG] [Thread-124200] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:03:16.463 [DEBUG] [Thread-124200] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:03:16.463 [DEBUG] [Thread-124200] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:03:16.463 [DEBUG] [Thread-124200] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:03:16.463 [DEBUG] [Thread-124200] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:03:16.463 [DEBUG] [Thread-124200] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:03:16.463 [DEBUG] [Thread-124200] [transport.py] [_log()] client lang: <none>
2025-11-03T23:03:16.463 [DEBUG] [Thread-124200] [transport.py] [_log()] server lang: <none>
2025-11-03T23:03:16.463 [DEBUG] [Thread-124200] [transport.py] [_log()] kex follows: False
2025-11-03T23:03:16.463 [DEBUG] [Thread-124200] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:03:16.463 [DEBUG] [Thread-124200] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:03:16.463 [DEBUG] [Thread-124200] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:03:16.463 [DEBUG] [Thread-124200] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:03:16.463 [DEBUG] [Thread-124200] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:03:16.463 [DEBUG] [Thread-124200] [transport.py] [_log()] Compression: none
2025-11-03T23:03:16.463 [DEBUG] [Thread-124200] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:03:16.519 [DEBUG] [Thread-124200] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:03:16.520 [DEBUG] [Thread-124200] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:03:16.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:03:16.520 [DEBUG] [Thread-124200] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:03:16.521 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:03:16.576 [DEBUG] [Thread-124200] [transport.py] [_log()] userauth is OK
2025-11-03T23:03:16.577 [DEBUG] [Thread-124200] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:03:16.577 [DEBUG] [Thread-124200] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:03:16.577 [DEBUG] [Thread-124200] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:03:16.577 [DEBUG] [Thread-124200] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:03:16.594 [INFO] [Thread-124200] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:03:16.594 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:03:16.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:03:16.917 [DEBUG] [Thread-124202 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:03:17.433 [DEBUG] [Thread-124200] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:03:17.433 [DEBUG] [Thread-124200] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:03:17.480 [DEBUG] [Thread-124200] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:03:17.480 [DEBUG] [Thread-124200] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:03:17.489 [DEBUG] [Thread-124200] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:03:17.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:03:17.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:03:17.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:03:17.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:03:17.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:03:17.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:03:17.522 [DEBUG] [Thread-124200] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:03:27.824 [DEBUG] [Thread-124203 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:03:42.952 [DEBUG] [Thread-124204 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:03:47.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:03:47.546 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:03:47.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:03:48.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 3, 27), 30.44, 11.51, 0.0, 16.67, 18.91, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:03:48.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:03:27
2025-11-03T23:03:48.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:03:48.671 [DEBUG] [Thread-124205] [transport.py] [_log()] starting thread (client mode): 0xed5fac0
2025-11-03T23:03:48.672 [DEBUG] [Thread-124205] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:03:48.672 [DEBUG] [Thread-124205] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:03:48.672 [INFO] [Thread-124205] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:03:48.676 [DEBUG] [Thread-124205] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:03:48.676 [DEBUG] [Thread-124205] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:03:48.676 [DEBUG] [Thread-124205] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:03:48.676 [DEBUG] [Thread-124205] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:03:48.676 [DEBUG] [Thread-124205] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:03:48.676 [DEBUG] [Thread-124205] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:03:48.676 [DEBUG] [Thread-124205] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:03:48.676 [DEBUG] [Thread-124205] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:03:48.676 [DEBUG] [Thread-124205] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:03:48.676 [DEBUG] [Thread-124205] [transport.py] [_log()] client lang: <none>
2025-11-03T23:03:48.676 [DEBUG] [Thread-124205] [transport.py] [_log()] server lang: <none>
2025-11-03T23:03:48.676 [DEBUG] [Thread-124205] [transport.py] [_log()] kex follows: False
2025-11-03T23:03:48.677 [DEBUG] [Thread-124205] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:03:48.677 [DEBUG] [Thread-124205] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:03:48.677 [DEBUG] [Thread-124205] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:03:48.677 [DEBUG] [Thread-124205] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:03:48.677 [DEBUG] [Thread-124205] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:03:48.677 [DEBUG] [Thread-124205] [transport.py] [_log()] Compression: none
2025-11-03T23:03:48.678 [DEBUG] [Thread-124205] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:03:48.711 [DEBUG] [Thread-124205] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:03:48.716 [DEBUG] [Thread-124205] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:03:48.718 [DEBUG] [Thread-124205] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:03:48.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:03:48.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:03:48.723 [DEBUG] [Thread-124205] [transport.py] [_log()] userauth is OK
2025-11-03T23:03:48.723 [DEBUG] [Thread-124205] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:03:48.724 [DEBUG] [Thread-124205] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:03:48.724 [DEBUG] [Thread-124205] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:03:48.724 [DEBUG] [Thread-124205] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:03:48.765 [INFO] [Thread-124205] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:03:48.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:03:49.406 [DEBUG] [Thread-124205] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:03:49.406 [DEBUG] [Thread-124205] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:03:49.416 [DEBUG] [Thread-124205] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:03:49.447 [DEBUG] [Thread-124205] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:03:49.447 [DEBUG] [Thread-124205] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:03:49.449 [DEBUG] [Thread-124205] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:03:49.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:03:49.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:03:49.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:03:49.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:03:49.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:03:49.470 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:03:49.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:03:49.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:03:49.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:03:49.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.877530 -999.00  +18.80  14.90     16   -6.80 1 1 1 1 1     0    0 24.02 -43.25 ZNESW 13.6 14.9 307.4 17.0 18.9 -25.4 18.9 -24.3 18.6 -24.0 18.9 -24.7
2025-11-03T23:03:49.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:03:49.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:03:49.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.877530
2025-11-03T23:03:49.477 [DEBUG] [Thread-124205] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:03:49.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:03:49.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:03:49.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:03:49.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:03:49.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:03:49.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:03:27', tmtdew=30.44, humidity=11.51, cloud=0.0, wind=16.67, temperature=18.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:03:28', seeing=1.13, atlas_timestamp='2025-11-03T21:03:38.592', atlas_cloud=1, atlas_rain=1, zp_data=[-0.030250000000000554, 0.02275000000000027, 0.058750000000001634, -0.007500000000000284, 0.03849999999999909, -0.04324999999999868, -0.2640000000000011, -0.16274999999999906, 0.05149999999999899, 0.04800000000000004, 0.04374999999999929, 0.036999999999999034, 0.10549999999999926, 0.03324999999999889, -0.19849999999999923, -0.29350000000000165, -0.029749999999999943, 0.08050000000000068, 0.16299999999999848, 0.09724999999999895, 0.19599999999999795, 0.061749999999998195, -0.11874999999999858, -0.11224999999999952, 0.1120000000000001, 0.1645000000000003, 0.19074999999999953, 0.18650000000000055, 0.18950000000000067, 0.10300000000000153, 0.0555000000000021, 0.03300000000000125, 0.09274999999999878], zp_timestamp='2025-11-03T21:01:00')
2025-11-03T23:03:49.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:03:49.573 [DEBUG] [Thread-124208] [transport.py] [_log()] starting thread (client mode): 0xed5f160
2025-11-03T23:03:49.573 [DEBUG] [Thread-124208] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:03:49.588 [DEBUG] [Thread-124208] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:03:49.588 [INFO] [Thread-124208] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:03:49.598 [DEBUG] [Thread-124208] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:03:49.598 [DEBUG] [Thread-124208] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:03:49.598 [DEBUG] [Thread-124208] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:03:49.598 [DEBUG] [Thread-124208] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:03:49.598 [DEBUG] [Thread-124208] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:03:49.598 [DEBUG] [Thread-124208] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:03:49.598 [DEBUG] [Thread-124208] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:03:49.598 [DEBUG] [Thread-124208] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:03:49.598 [DEBUG] [Thread-124208] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:03:49.598 [DEBUG] [Thread-124208] [transport.py] [_log()] client lang: <none>
2025-11-03T23:03:49.598 [DEBUG] [Thread-124208] [transport.py] [_log()] server lang: <none>
2025-11-03T23:03:49.598 [DEBUG] [Thread-124208] [transport.py] [_log()] kex follows: False
2025-11-03T23:03:49.598 [DEBUG] [Thread-124208] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:03:49.598 [DEBUG] [Thread-124208] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:03:49.598 [DEBUG] [Thread-124208] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:03:49.598 [DEBUG] [Thread-124208] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:03:49.598 [DEBUG] [Thread-124208] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:03:49.598 [DEBUG] [Thread-124208] [transport.py] [_log()] Compression: none
2025-11-03T23:03:49.598 [DEBUG] [Thread-124208] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:03:49.660 [DEBUG] [Thread-124208] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:03:49.661 [DEBUG] [Thread-124208] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:03:49.661 [DEBUG] [Thread-124208] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:03:49.661 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:03:49.661 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:03:49.718 [DEBUG] [Thread-124208] [transport.py] [_log()] userauth is OK
2025-11-03T23:03:49.719 [DEBUG] [Thread-124208] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:03:49.719 [DEBUG] [Thread-124208] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:03:49.719 [DEBUG] [Thread-124208] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:03:49.719 [DEBUG] [Thread-124208] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:03:49.737 [INFO] [Thread-124208] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:03:49.738 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:03:49.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:03:50.636 [DEBUG] [Thread-124208] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:03:50.636 [DEBUG] [Thread-124208] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:03:50.677 [DEBUG] [Thread-124208] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:03:50.677 [DEBUG] [Thread-124208] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:03:50.686 [DEBUG] [Thread-124208] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:03:50.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:03:50.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:03:50.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:03:50.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:03:50.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:03:50.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:03:50.722 [DEBUG] [Thread-124208] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:03:57.977 [DEBUG] [Thread-124210 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:04:01.412 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:04:01.413 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:04:13.015 [DEBUG] [Thread-124211 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:04:18.366 [DEBUG] [Thread-124212 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:04:20.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:04:20.738 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:04:20.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:04:21.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 3, 27), 30.44, 11.51, 0.0, 16.67, 18.91, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:04:21.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:03:27
2025-11-03T23:04:21.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:04:21.795 [DEBUG] [Thread-124213] [transport.py] [_log()] starting thread (client mode): 0xed5d210
2025-11-03T23:04:21.795 [DEBUG] [Thread-124213] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:04:21.817 [DEBUG] [Thread-124213] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:04:21.817 [INFO] [Thread-124213] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:04:21.820 [DEBUG] [Thread-124213] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:04:21.821 [DEBUG] [Thread-124213] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:04:21.821 [DEBUG] [Thread-124213] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:04:21.821 [DEBUG] [Thread-124213] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:04:21.821 [DEBUG] [Thread-124213] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:04:21.821 [DEBUG] [Thread-124213] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:04:21.821 [DEBUG] [Thread-124213] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:04:21.821 [DEBUG] [Thread-124213] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:04:21.821 [DEBUG] [Thread-124213] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:04:21.821 [DEBUG] [Thread-124213] [transport.py] [_log()] client lang: <none>
2025-11-03T23:04:21.821 [DEBUG] [Thread-124213] [transport.py] [_log()] server lang: <none>
2025-11-03T23:04:21.821 [DEBUG] [Thread-124213] [transport.py] [_log()] kex follows: False
2025-11-03T23:04:21.821 [DEBUG] [Thread-124213] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:04:21.821 [DEBUG] [Thread-124213] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:04:21.821 [DEBUG] [Thread-124213] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:04:21.821 [DEBUG] [Thread-124213] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:04:21.822 [DEBUG] [Thread-124213] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:04:21.822 [DEBUG] [Thread-124213] [transport.py] [_log()] Compression: none
2025-11-03T23:04:21.822 [DEBUG] [Thread-124213] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:04:21.839 [DEBUG] [Thread-124213] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:04:21.839 [DEBUG] [Thread-124213] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:04:21.840 [DEBUG] [Thread-124213] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:04:21.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:04:21.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:04:21.842 [DEBUG] [Thread-124213] [transport.py] [_log()] userauth is OK
2025-11-03T23:04:21.842 [DEBUG] [Thread-124213] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:04:21.842 [DEBUG] [Thread-124213] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:04:21.843 [DEBUG] [Thread-124213] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:04:21.843 [DEBUG] [Thread-124213] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:04:21.878 [INFO] [Thread-124213] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:04:21.878 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:04:22.524 [DEBUG] [Thread-124213] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:04:22.524 [DEBUG] [Thread-124213] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:04:22.525 [DEBUG] [Thread-124213] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:04:22.565 [DEBUG] [Thread-124213] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:04:22.565 [DEBUG] [Thread-124213] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:04:22.569 [DEBUG] [Thread-124213] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:04:22.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:04:22.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:04:22.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:04:22.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:04:22.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:04:22.591 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:04:22.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:04:22.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:04:22.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:04:22.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.877877 -999.00  +18.80  14.66     16   -6.70 1 1 1 1 1     0    0 24.98 -42.46 ZNESW 10.9 14.7 316.4 19.1 19.0 -25.4 18.9 -24.3 18.6 -24.0 18.9 -25.1
2025-11-03T23:04:22.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:04:22.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:04:22.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.877877
2025-11-03T23:04:22.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:04:22.594 [DEBUG] [Thread-124213] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:04:22.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:04:22.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:04:22.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:04:22.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:04:22.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:03:27', tmtdew=30.44, humidity=11.51, cloud=0.0, wind=16.67, temperature=18.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:04:00', seeing=1.13, atlas_timestamp='2025-11-03T21:04:08.573', atlas_cloud=1, atlas_rain=1, zp_data=[-0.030250000000000554, 0.02275000000000027, 0.058750000000001634, -0.007500000000000284, 0.03849999999999909, -0.04324999999999868, -0.2640000000000011, -0.16274999999999906, 0.05149999999999899, 0.04800000000000004, 0.04374999999999929, 0.036999999999999034, 0.10549999999999926, 0.03324999999999889, -0.19849999999999923, -0.29350000000000165, -0.029749999999999943, 0.08050000000000068, 0.16299999999999848, 0.09724999999999895, 0.19599999999999795, 0.061749999999998195, -0.11874999999999858, -0.11224999999999952, 0.1120000000000001, 0.1645000000000003, 0.19074999999999953, 0.18650000000000055, 0.18950000000000067, 0.10300000000000153, 0.0555000000000021, 0.03300000000000125, 0.09274999999999878], zp_timestamp='2025-11-03T21:01:00')
2025-11-03T23:04:22.680 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:04:22.692 [DEBUG] [Thread-124216] [transport.py] [_log()] starting thread (client mode): 0xed344c0
2025-11-03T23:04:22.692 [DEBUG] [Thread-124216] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:04:22.709 [DEBUG] [Thread-124216] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:04:22.709 [INFO] [Thread-124216] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:04:22.716 [DEBUG] [Thread-124216] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:04:22.716 [DEBUG] [Thread-124216] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:04:22.716 [DEBUG] [Thread-124216] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:04:22.716 [DEBUG] [Thread-124216] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:04:22.716 [DEBUG] [Thread-124216] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:04:22.716 [DEBUG] [Thread-124216] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:04:22.717 [DEBUG] [Thread-124216] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:04:22.717 [DEBUG] [Thread-124216] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:04:22.717 [DEBUG] [Thread-124216] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:04:22.717 [DEBUG] [Thread-124216] [transport.py] [_log()] client lang: <none>
2025-11-03T23:04:22.717 [DEBUG] [Thread-124216] [transport.py] [_log()] server lang: <none>
2025-11-03T23:04:22.717 [DEBUG] [Thread-124216] [transport.py] [_log()] kex follows: False
2025-11-03T23:04:22.717 [DEBUG] [Thread-124216] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:04:22.717 [DEBUG] [Thread-124216] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:04:22.717 [DEBUG] [Thread-124216] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:04:22.717 [DEBUG] [Thread-124216] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:04:22.717 [DEBUG] [Thread-124216] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:04:22.717 [DEBUG] [Thread-124216] [transport.py] [_log()] Compression: none
2025-11-03T23:04:22.717 [DEBUG] [Thread-124216] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:04:22.776 [DEBUG] [Thread-124216] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:04:22.776 [DEBUG] [Thread-124216] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:04:22.777 [DEBUG] [Thread-124216] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:04:22.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:04:22.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:04:22.833 [DEBUG] [Thread-124216] [transport.py] [_log()] userauth is OK
2025-11-03T23:04:22.833 [DEBUG] [Thread-124216] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:04:22.833 [DEBUG] [Thread-124216] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:04:22.833 [DEBUG] [Thread-124216] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:04:22.833 [DEBUG] [Thread-124216] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:04:22.851 [INFO] [Thread-124216] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:04:22.852 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:04:22.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:04:23.698 [DEBUG] [Thread-124216] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:04:23.698 [DEBUG] [Thread-124216] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:04:23.746 [DEBUG] [Thread-124216] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:04:23.746 [DEBUG] [Thread-124216] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:04:23.755 [DEBUG] [Thread-124216] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:04:23.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:04:23.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:04:23.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:04:23.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:04:23.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:04:23.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:04:23.787 [DEBUG] [Thread-124216] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:04:28.044 [DEBUG] [Thread-124218 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:04:43.089 [DEBUG] [Thread-124219 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:04:53.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:04:53.810 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:04:53.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:04:55.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 4, 32), 30.43, 11.51, 0.0, 18.56, 18.9, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:04:55.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:04:32
2025-11-03T23:04:55.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:04:56.088 [DEBUG] [Thread-124220] [transport.py] [_log()] starting thread (client mode): 0xed37a60
2025-11-03T23:04:56.088 [DEBUG] [Thread-124220] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:04:56.108 [DEBUG] [Thread-124220] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:04:56.108 [INFO] [Thread-124220] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:04:56.111 [DEBUG] [Thread-124220] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:04:56.111 [DEBUG] [Thread-124220] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:04:56.111 [DEBUG] [Thread-124220] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:04:56.111 [DEBUG] [Thread-124220] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:04:56.111 [DEBUG] [Thread-124220] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:04:56.111 [DEBUG] [Thread-124220] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:04:56.112 [DEBUG] [Thread-124220] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:04:56.112 [DEBUG] [Thread-124220] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:04:56.112 [DEBUG] [Thread-124220] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:04:56.112 [DEBUG] [Thread-124220] [transport.py] [_log()] client lang: <none>
2025-11-03T23:04:56.112 [DEBUG] [Thread-124220] [transport.py] [_log()] server lang: <none>
2025-11-03T23:04:56.112 [DEBUG] [Thread-124220] [transport.py] [_log()] kex follows: False
2025-11-03T23:04:56.112 [DEBUG] [Thread-124220] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:04:56.112 [DEBUG] [Thread-124220] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:04:56.112 [DEBUG] [Thread-124220] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:04:56.112 [DEBUG] [Thread-124220] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:04:56.112 [DEBUG] [Thread-124220] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:04:56.112 [DEBUG] [Thread-124220] [transport.py] [_log()] Compression: none
2025-11-03T23:04:56.112 [DEBUG] [Thread-124220] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:04:56.131 [DEBUG] [Thread-124220] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:04:56.132 [DEBUG] [Thread-124220] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:04:56.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:04:56.133 [DEBUG] [Thread-124220] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:04:56.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:04:56.135 [DEBUG] [Thread-124220] [transport.py] [_log()] userauth is OK
2025-11-03T23:04:56.135 [DEBUG] [Thread-124220] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:04:56.135 [DEBUG] [Thread-124220] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:04:56.136 [DEBUG] [Thread-124220] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:04:56.136 [DEBUG] [Thread-124220] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:04:56.160 [INFO] [Thread-124220] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:04:56.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:04:56.893 [DEBUG] [Thread-124220] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:04:56.893 [DEBUG] [Thread-124220] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:04:56.894 [DEBUG] [Thread-124220] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:04:56.934 [DEBUG] [Thread-124220] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:04:56.934 [DEBUG] [Thread-124220] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:04:56.936 [DEBUG] [Thread-124220] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:04:56.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:04:56.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:04:56.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:04:56.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:04:56.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:04:56.951 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:04:56.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:04:56.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:04:56.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:04:56.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.877877 -999.00  +18.80  14.66     16   -6.70 1 1 1 1 1     0    0 24.98 -42.46 ZNESW 10.9 14.7 316.4 19.1 19.0 -25.4 18.9 -24.3 18.6 -24.0 18.9 -25.1
2025-11-03T23:04:56.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:04:56.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:04:56.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.877877
2025-11-03T23:04:56.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:04:56.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:04:56.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:04:56.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:04:56.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:04:56.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:04:32', tmtdew=30.43, humidity=11.51, cloud=0.0, wind=18.56, temperature=18.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:04:32', seeing=1.07, atlas_timestamp='2025-11-03T21:04:08.573', atlas_cloud=1, atlas_rain=1, zp_data=[-0.030250000000000554, 0.02275000000000027, 0.058750000000001634, -0.007500000000000284, 0.03849999999999909, -0.04324999999999868, -0.2640000000000011, -0.16274999999999906, 0.05149999999999899, 0.04800000000000004, 0.04374999999999929, 0.036999999999999034, 0.10549999999999926, 0.03324999999999889, -0.19849999999999923, -0.29350000000000165, -0.029749999999999943, 0.08050000000000068, 0.16299999999999848, 0.09724999999999895, 0.19599999999999795, 0.061749999999998195, -0.11874999999999858, -0.11224999999999952, 0.1120000000000001, 0.1645000000000003, 0.19074999999999953, 0.18650000000000055, 0.18950000000000067, 0.10300000000000153, 0.0555000000000021, 0.03300000000000125, 0.09274999999999878], zp_timestamp='2025-11-03T21:01:00')
2025-11-03T23:04:56.952 [DEBUG] [Thread-124220] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:04:57.025 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:04:57.040 [DEBUG] [Thread-124223] [transport.py] [_log()] starting thread (client mode): 0xed5fc10
2025-11-03T23:04:57.041 [DEBUG] [Thread-124223] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:04:57.058 [DEBUG] [Thread-124223] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:04:57.059 [INFO] [Thread-124223] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:04:57.068 [DEBUG] [Thread-124223] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:04:57.068 [DEBUG] [Thread-124223] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:04:57.068 [DEBUG] [Thread-124223] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:04:57.068 [DEBUG] [Thread-124223] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:04:57.068 [DEBUG] [Thread-124223] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:04:57.068 [DEBUG] [Thread-124223] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:04:57.068 [DEBUG] [Thread-124223] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:04:57.068 [DEBUG] [Thread-124223] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:04:57.068 [DEBUG] [Thread-124223] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:04:57.068 [DEBUG] [Thread-124223] [transport.py] [_log()] client lang: <none>
2025-11-03T23:04:57.068 [DEBUG] [Thread-124223] [transport.py] [_log()] server lang: <none>
2025-11-03T23:04:57.068 [DEBUG] [Thread-124223] [transport.py] [_log()] kex follows: False
2025-11-03T23:04:57.068 [DEBUG] [Thread-124223] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:04:57.068 [DEBUG] [Thread-124223] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:04:57.068 [DEBUG] [Thread-124223] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:04:57.068 [DEBUG] [Thread-124223] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:04:57.068 [DEBUG] [Thread-124223] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:04:57.068 [DEBUG] [Thread-124223] [transport.py] [_log()] Compression: none
2025-11-03T23:04:57.068 [DEBUG] [Thread-124223] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:04:57.124 [DEBUG] [Thread-124223] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:04:57.124 [DEBUG] [Thread-124223] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:04:57.124 [DEBUG] [Thread-124223] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:04:57.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:04:57.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:04:57.188 [DEBUG] [Thread-124223] [transport.py] [_log()] userauth is OK
2025-11-03T23:04:57.188 [DEBUG] [Thread-124223] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:04:57.188 [DEBUG] [Thread-124223] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:04:57.188 [DEBUG] [Thread-124223] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:04:57.188 [DEBUG] [Thread-124223] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:04:57.205 [INFO] [Thread-124223] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:04:57.205 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:04:57.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:04:58.074 [DEBUG] [Thread-124223] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:04:58.074 [DEBUG] [Thread-124223] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:04:58.122 [DEBUG] [Thread-124223] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:04:58.122 [DEBUG] [Thread-124223] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:04:58.129 [DEBUG] [Thread-124225 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:04:58.139 [DEBUG] [Thread-124223] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:04:58.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:04:58.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:04:58.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:04:58.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:04:58.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:04:58.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:04:58.175 [DEBUG] [Thread-124223] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:05:01.618 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:05:01.618 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:05:13.190 [DEBUG] [Thread-124226 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:05:18.567 [DEBUG] [Thread-124227 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:05:28.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:05:28.197 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:05:28.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:05:28.227 [DEBUG] [Thread-124228 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:05:28.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 5, 4), 30.49, 11.46, 0.0, 17.77, 18.95, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:05:28.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:05:04
2025-11-03T23:05:29.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:05:29.268 [DEBUG] [Thread-124229] [transport.py] [_log()] starting thread (client mode): 0xed36a10
2025-11-03T23:05:29.269 [DEBUG] [Thread-124229] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:05:29.288 [DEBUG] [Thread-124229] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:05:29.288 [INFO] [Thread-124229] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:05:29.291 [DEBUG] [Thread-124229] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:05:29.292 [DEBUG] [Thread-124229] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:05:29.292 [DEBUG] [Thread-124229] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:05:29.292 [DEBUG] [Thread-124229] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:05:29.292 [DEBUG] [Thread-124229] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:05:29.292 [DEBUG] [Thread-124229] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:05:29.292 [DEBUG] [Thread-124229] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:05:29.292 [DEBUG] [Thread-124229] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:05:29.292 [DEBUG] [Thread-124229] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:05:29.292 [DEBUG] [Thread-124229] [transport.py] [_log()] client lang: <none>
2025-11-03T23:05:29.292 [DEBUG] [Thread-124229] [transport.py] [_log()] server lang: <none>
2025-11-03T23:05:29.292 [DEBUG] [Thread-124229] [transport.py] [_log()] kex follows: False
2025-11-03T23:05:29.292 [DEBUG] [Thread-124229] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:05:29.293 [DEBUG] [Thread-124229] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:05:29.293 [DEBUG] [Thread-124229] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:05:29.293 [DEBUG] [Thread-124229] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:05:29.293 [DEBUG] [Thread-124229] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:05:29.293 [DEBUG] [Thread-124229] [transport.py] [_log()] Compression: none
2025-11-03T23:05:29.293 [DEBUG] [Thread-124229] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:05:29.320 [DEBUG] [Thread-124229] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:05:29.324 [DEBUG] [Thread-124229] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:05:29.324 [DEBUG] [Thread-124229] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:05:29.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:05:29.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:05:29.366 [DEBUG] [Thread-124229] [transport.py] [_log()] userauth is OK
2025-11-03T23:05:29.366 [DEBUG] [Thread-124229] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:05:29.366 [DEBUG] [Thread-124229] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:05:29.366 [DEBUG] [Thread-124229] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:05:29.367 [DEBUG] [Thread-124229] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:05:29.393 [INFO] [Thread-124229] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:05:29.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:05:30.999 [DEBUG] [Thread-124229] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:05:31.000 [DEBUG] [Thread-124229] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:05:31.000 [DEBUG] [Thread-124229] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:05:31.050 [DEBUG] [Thread-124229] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:05:31.050 [DEBUG] [Thread-124229] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:05:31.053 [DEBUG] [Thread-124229] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:05:31.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:05:31.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:05:31.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:05:31.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:05:31.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:05:31.078 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:05:31.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:05:31.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:05:31.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:05:31.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.878224 -999.00  +18.80  13.10     17   -6.70 1 1 1 1 1     0    0 24.67 -45.82 ZNESW 14.1 13.1 308.2 17.6 18.9 -25.5 18.9 -24.5 18.6 -24.0 18.8 -25.0
2025-11-03T23:05:31.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:05:31.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:05:31.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.878224
2025-11-03T23:05:31.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:05:31.082 [DEBUG] [Thread-124229] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:05:31.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:05:31.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:05:31.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:05:31.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:05:31.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:05:04', tmtdew=30.49, humidity=11.46, cloud=0.0, wind=17.77, temperature=18.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:05:05', seeing=1.07, atlas_timestamp='2025-11-03T21:04:38.554', atlas_cloud=1, atlas_rain=1, zp_data=[-0.030250000000000554, 0.02275000000000027, 0.058750000000001634, -0.007500000000000284, 0.03849999999999909, -0.04324999999999868, -0.2640000000000011, -0.16274999999999906, 0.05149999999999899, 0.04800000000000004, 0.04374999999999929, 0.036999999999999034, 0.10549999999999926, 0.03324999999999889, -0.19849999999999923, -0.29350000000000165, -0.029749999999999943, 0.08050000000000068, 0.16299999999999848, 0.09724999999999895, 0.19599999999999795, 0.061749999999998195, -0.11874999999999858, -0.11224999999999952, 0.1120000000000001, 0.1645000000000003, 0.19074999999999953, 0.18650000000000055, 0.18950000000000067, 0.10300000000000153, 0.0555000000000021, 0.03300000000000125, 0.09274999999999878], zp_timestamp='2025-11-03T21:01:00')
2025-11-03T23:05:31.175 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:05:31.189 [DEBUG] [Thread-124232] [transport.py] [_log()] starting thread (client mode): 0xedc5750
2025-11-03T23:05:31.189 [DEBUG] [Thread-124232] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:05:31.203 [DEBUG] [Thread-124232] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:05:31.203 [INFO] [Thread-124232] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:05:31.214 [DEBUG] [Thread-124232] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:05:31.215 [DEBUG] [Thread-124232] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:05:31.215 [DEBUG] [Thread-124232] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:05:31.215 [DEBUG] [Thread-124232] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:05:31.215 [DEBUG] [Thread-124232] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:05:31.216 [DEBUG] [Thread-124232] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:05:31.216 [DEBUG] [Thread-124232] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:05:31.216 [DEBUG] [Thread-124232] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:05:31.216 [DEBUG] [Thread-124232] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:05:31.216 [DEBUG] [Thread-124232] [transport.py] [_log()] client lang: <none>
2025-11-03T23:05:31.216 [DEBUG] [Thread-124232] [transport.py] [_log()] server lang: <none>
2025-11-03T23:05:31.216 [DEBUG] [Thread-124232] [transport.py] [_log()] kex follows: False
2025-11-03T23:05:31.216 [DEBUG] [Thread-124232] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:05:31.216 [DEBUG] [Thread-124232] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:05:31.216 [DEBUG] [Thread-124232] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:05:31.217 [DEBUG] [Thread-124232] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:05:31.217 [DEBUG] [Thread-124232] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:05:31.218 [DEBUG] [Thread-124232] [transport.py] [_log()] Compression: none
2025-11-03T23:05:31.218 [DEBUG] [Thread-124232] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:05:31.285 [DEBUG] [Thread-124232] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:05:31.286 [DEBUG] [Thread-124232] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:05:31.287 [DEBUG] [Thread-124232] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:05:31.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:05:31.288 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:05:31.345 [DEBUG] [Thread-124232] [transport.py] [_log()] userauth is OK
2025-11-03T23:05:31.345 [DEBUG] [Thread-124232] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:05:31.346 [DEBUG] [Thread-124232] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:05:31.346 [DEBUG] [Thread-124232] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:05:31.346 [DEBUG] [Thread-124232] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:05:31.365 [INFO] [Thread-124232] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:05:31.365 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:05:31.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:05:32.220 [DEBUG] [Thread-124232] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:05:32.221 [DEBUG] [Thread-124232] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:05:32.262 [DEBUG] [Thread-124232] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:05:32.262 [DEBUG] [Thread-124232] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:05:32.274 [DEBUG] [Thread-124232] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:05:32.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:05:32.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:05:32.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:05:32.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:05:32.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:05:32.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:05:32.324 [DEBUG] [Thread-124232] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:05:43.267 [DEBUG] [Thread-124234 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:05:58.370 [DEBUG] [Thread-124235 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:06:01.832 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:06:01.836 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:06:02.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:06:02.356 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:06:02.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:06:03.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 5, 37), 30.43, 11.48, 0.0, 17.38, 18.93, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:06:03.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:05:37
2025-11-03T23:06:03.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:06:03.917 [DEBUG] [Thread-124236] [transport.py] [_log()] starting thread (client mode): 0x1174f850
2025-11-03T23:06:03.917 [DEBUG] [Thread-124236] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:06:03.924 [DEBUG] [Thread-124236] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:06:03.924 [INFO] [Thread-124236] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:06:03.928 [DEBUG] [Thread-124236] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:06:03.928 [DEBUG] [Thread-124236] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:06:03.928 [DEBUG] [Thread-124236] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:06:03.928 [DEBUG] [Thread-124236] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:06:03.928 [DEBUG] [Thread-124236] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:06:03.928 [DEBUG] [Thread-124236] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:06:03.928 [DEBUG] [Thread-124236] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:06:03.928 [DEBUG] [Thread-124236] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:06:03.928 [DEBUG] [Thread-124236] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:06:03.928 [DEBUG] [Thread-124236] [transport.py] [_log()] client lang: <none>
2025-11-03T23:06:03.928 [DEBUG] [Thread-124236] [transport.py] [_log()] server lang: <none>
2025-11-03T23:06:03.928 [DEBUG] [Thread-124236] [transport.py] [_log()] kex follows: False
2025-11-03T23:06:03.928 [DEBUG] [Thread-124236] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:06:03.928 [DEBUG] [Thread-124236] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:06:03.928 [DEBUG] [Thread-124236] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:06:03.928 [DEBUG] [Thread-124236] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:06:03.928 [DEBUG] [Thread-124236] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:06:03.928 [DEBUG] [Thread-124236] [transport.py] [_log()] Compression: none
2025-11-03T23:06:03.928 [DEBUG] [Thread-124236] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:06:03.954 [DEBUG] [Thread-124236] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:06:03.957 [DEBUG] [Thread-124236] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:06:03.959 [DEBUG] [Thread-124236] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:06:03.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:06:03.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:06:03.998 [DEBUG] [Thread-124236] [transport.py] [_log()] userauth is OK
2025-11-03T23:06:03.998 [DEBUG] [Thread-124236] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:06:03.998 [DEBUG] [Thread-124236] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:06:03.998 [DEBUG] [Thread-124236] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:06:03.998 [DEBUG] [Thread-124236] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:06:04.028 [INFO] [Thread-124236] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:06:04.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:06:04.665 [DEBUG] [Thread-124236] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:06:04.665 [DEBUG] [Thread-124236] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:06:04.668 [DEBUG] [Thread-124236] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:06:04.707 [DEBUG] [Thread-124236] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:06:04.707 [DEBUG] [Thread-124236] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:06:04.713 [DEBUG] [Thread-124236] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:06:04.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:06:04.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:06:04.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:06:04.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:06:04.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:06:04.755 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:06:04.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:06:04.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:06:04.765 [DEBUG] [Thread-124236] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:06:04.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:06:04.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.878571 -999.00  +18.70  12.90     17   -6.70 1 1 1 1 1     0    0 24.36 -48.69 ZNESW 13.3 12.9 317.4 17.0 18.9 -25.3 18.8 -24.5 18.6 -23.9 18.8 -24.8
2025-11-03T23:06:04.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:06:04.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:06:04.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.878571
2025-11-03T23:06:04.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:06:04.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:06:04.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:06:04.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:06:04.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:06:04.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:05:37', tmtdew=30.43, humidity=11.48, cloud=0.0, wind=17.38, temperature=18.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:05:38', seeing=1.25, atlas_timestamp='2025-11-03T21:05:08.534', atlas_cloud=1, atlas_rain=1, zp_data=[-0.06325000000000003, 0.01025000000000098, 0.10224999999999973, 0.0045000000000001705, -0.13949999999999996, -0.18324999999999925, -0.5860000000000003, -0.12824999999999953, -0.0065000000000008384, -0.07399999999999984, 0.047750000000000625, 0.09600000000000009, 0.08399999999999963, -0.06175000000000175, -0.4245000000000001, -0.4090000000000007, 0.012750000000000483, 0.06199999999999939, 0.18399999999999928, 0.11324999999999896, 0.1374999999999993, -0.009250000000001535, -0.4607499999999991, -0.1122500000000013, 0.04299999999999926, 0.13750000000000107, 0.20725000000000016, 0.18849999999999945, 0.13199999999999967, 0.05600000000000094, 0.1280000000000019, 0.007500000000000284, 0.04974999999999952], zp_timestamp='2025-11-03T21:04:00')
2025-11-03T23:06:04.878 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:06:04.892 [DEBUG] [Thread-124239] [transport.py] [_log()] starting thread (client mode): 0x1174f580
2025-11-03T23:06:04.892 [DEBUG] [Thread-124239] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:06:04.905 [DEBUG] [Thread-124239] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:06:04.905 [INFO] [Thread-124239] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:06:04.913 [DEBUG] [Thread-124239] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:06:04.914 [DEBUG] [Thread-124239] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:06:04.914 [DEBUG] [Thread-124239] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:06:04.914 [DEBUG] [Thread-124239] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:06:04.914 [DEBUG] [Thread-124239] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:06:04.914 [DEBUG] [Thread-124239] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:06:04.914 [DEBUG] [Thread-124239] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:06:04.914 [DEBUG] [Thread-124239] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:06:04.914 [DEBUG] [Thread-124239] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:06:04.915 [DEBUG] [Thread-124239] [transport.py] [_log()] client lang: <none>
2025-11-03T23:06:04.915 [DEBUG] [Thread-124239] [transport.py] [_log()] server lang: <none>
2025-11-03T23:06:04.915 [DEBUG] [Thread-124239] [transport.py] [_log()] kex follows: False
2025-11-03T23:06:04.915 [DEBUG] [Thread-124239] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:06:04.915 [DEBUG] [Thread-124239] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:06:04.915 [DEBUG] [Thread-124239] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:06:04.915 [DEBUG] [Thread-124239] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:06:04.915 [DEBUG] [Thread-124239] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:06:04.916 [DEBUG] [Thread-124239] [transport.py] [_log()] Compression: none
2025-11-03T23:06:04.916 [DEBUG] [Thread-124239] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:06:04.976 [DEBUG] [Thread-124239] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:06:04.977 [DEBUG] [Thread-124239] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:06:04.977 [DEBUG] [Thread-124239] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:06:04.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:06:04.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:06:05.037 [DEBUG] [Thread-124239] [transport.py] [_log()] userauth is OK
2025-11-03T23:06:05.037 [DEBUG] [Thread-124239] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:06:05.037 [DEBUG] [Thread-124239] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:06:05.037 [DEBUG] [Thread-124239] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:06:05.037 [DEBUG] [Thread-124239] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:06:05.053 [INFO] [Thread-124239] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:06:05.053 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:06:05.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:06:05.967 [DEBUG] [Thread-124239] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:06:05.967 [DEBUG] [Thread-124239] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:06:06.015 [DEBUG] [Thread-124239] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:06:06.016 [DEBUG] [Thread-124239] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:06:06.025 [DEBUG] [Thread-124239] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:06:06.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:06:06.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:06:06.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:06:06.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:06:06.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:06:06.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:06:06.076 [DEBUG] [Thread-124239] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:06:13.399 [DEBUG] [Thread-124241 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:06:19.791 [DEBUG] [Thread-124242 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:06:28.448 [DEBUG] [Thread-124243 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:06:36.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:06:36.082 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:06:36.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:06:36.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 6, 10), 30.41, 11.48, 0.0, 18.46, 18.86, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:06:36.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:06:10
2025-11-03T23:06:36.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:06:37.063 [DEBUG] [Thread-124244] [transport.py] [_log()] starting thread (client mode): 0x11761d50
2025-11-03T23:06:37.064 [DEBUG] [Thread-124244] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:06:37.076 [DEBUG] [Thread-124244] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:06:37.076 [INFO] [Thread-124244] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:06:37.079 [DEBUG] [Thread-124244] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:06:37.079 [DEBUG] [Thread-124244] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:06:37.079 [DEBUG] [Thread-124244] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:06:37.079 [DEBUG] [Thread-124244] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:06:37.079 [DEBUG] [Thread-124244] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:06:37.079 [DEBUG] [Thread-124244] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:06:37.079 [DEBUG] [Thread-124244] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:06:37.079 [DEBUG] [Thread-124244] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:06:37.079 [DEBUG] [Thread-124244] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:06:37.079 [DEBUG] [Thread-124244] [transport.py] [_log()] client lang: <none>
2025-11-03T23:06:37.079 [DEBUG] [Thread-124244] [transport.py] [_log()] server lang: <none>
2025-11-03T23:06:37.079 [DEBUG] [Thread-124244] [transport.py] [_log()] kex follows: False
2025-11-03T23:06:37.079 [DEBUG] [Thread-124244] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:06:37.080 [DEBUG] [Thread-124244] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:06:37.080 [DEBUG] [Thread-124244] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:06:37.080 [DEBUG] [Thread-124244] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:06:37.080 [DEBUG] [Thread-124244] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:06:37.080 [DEBUG] [Thread-124244] [transport.py] [_log()] Compression: none
2025-11-03T23:06:37.080 [DEBUG] [Thread-124244] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:06:37.100 [DEBUG] [Thread-124244] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:06:37.101 [DEBUG] [Thread-124244] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:06:37.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:06:37.103 [DEBUG] [Thread-124244] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:06:37.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:06:37.141 [DEBUG] [Thread-124244] [transport.py] [_log()] userauth is OK
2025-11-03T23:06:37.142 [DEBUG] [Thread-124244] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:06:37.142 [DEBUG] [Thread-124244] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:06:37.142 [DEBUG] [Thread-124244] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:06:37.142 [DEBUG] [Thread-124244] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:06:37.158 [INFO] [Thread-124244] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:06:37.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:06:37.836 [DEBUG] [Thread-124244] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:06:37.836 [DEBUG] [Thread-124244] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:06:37.836 [DEBUG] [Thread-124244] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:06:37.878 [DEBUG] [Thread-124244] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:06:37.878 [DEBUG] [Thread-124244] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:06:37.880 [DEBUG] [Thread-124244] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:06:37.893 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:06:37.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:06:37.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:06:37.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:06:37.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:06:37.900 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:06:37.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:06:37.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:06:37.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:06:37.901 [DEBUG] [Thread-124244] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:06:37.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.878919 -999.00  +18.70  11.89     17   -6.70 1 1 1 1 1     0    0 24.59 -51.98 ZNESW 13.6 11.9 320.0 17.6 18.9 -25.2 18.9 -24.4 18.6 -24.1 18.9 -24.9
2025-11-03T23:06:37.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:06:37.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:06:37.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.878919
2025-11-03T23:06:37.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:06:37.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:06:37.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:06:37.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:06:37.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:06:37.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:06:10', tmtdew=30.41, humidity=11.48, cloud=0.0, wind=18.46, temperature=18.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:06:10', seeing=1.25, atlas_timestamp='2025-11-03T21:05:38.602', atlas_cloud=1, atlas_rain=1, zp_data=[-0.06325000000000003, 0.01025000000000098, 0.10224999999999973, 0.0045000000000001705, -0.13949999999999996, -0.18324999999999925, -0.5860000000000003, -0.12824999999999953, -0.0065000000000008384, -0.07399999999999984, 0.047750000000000625, 0.09600000000000009, 0.08399999999999963, -0.06175000000000175, -0.4245000000000001, -0.4090000000000007, 0.012750000000000483, 0.06199999999999939, 0.18399999999999928, 0.11324999999999896, 0.1374999999999993, -0.009250000000001535, -0.4607499999999991, -0.1122500000000013, 0.04299999999999926, 0.13750000000000107, 0.20725000000000016, 0.18849999999999945, 0.13199999999999967, 0.05600000000000094, 0.1280000000000019, 0.007500000000000284, 0.04974999999999952], zp_timestamp='2025-11-03T21:04:00')
2025-11-03T23:06:37.980 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:06:37.992 [DEBUG] [Thread-124247] [transport.py] [_log()] starting thread (client mode): 0xeda3550
2025-11-03T23:06:37.992 [DEBUG] [Thread-124247] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:06:38.006 [DEBUG] [Thread-124247] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:06:38.006 [INFO] [Thread-124247] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:06:38.014 [DEBUG] [Thread-124247] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:06:38.014 [DEBUG] [Thread-124247] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:06:38.014 [DEBUG] [Thread-124247] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:06:38.014 [DEBUG] [Thread-124247] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:06:38.014 [DEBUG] [Thread-124247] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:06:38.014 [DEBUG] [Thread-124247] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:06:38.014 [DEBUG] [Thread-124247] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:06:38.014 [DEBUG] [Thread-124247] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:06:38.014 [DEBUG] [Thread-124247] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:06:38.014 [DEBUG] [Thread-124247] [transport.py] [_log()] client lang: <none>
2025-11-03T23:06:38.014 [DEBUG] [Thread-124247] [transport.py] [_log()] server lang: <none>
2025-11-03T23:06:38.014 [DEBUG] [Thread-124247] [transport.py] [_log()] kex follows: False
2025-11-03T23:06:38.014 [DEBUG] [Thread-124247] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:06:38.014 [DEBUG] [Thread-124247] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:06:38.015 [DEBUG] [Thread-124247] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:06:38.015 [DEBUG] [Thread-124247] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:06:38.015 [DEBUG] [Thread-124247] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:06:38.015 [DEBUG] [Thread-124247] [transport.py] [_log()] Compression: none
2025-11-03T23:06:38.015 [DEBUG] [Thread-124247] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:06:38.072 [DEBUG] [Thread-124247] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:06:38.072 [DEBUG] [Thread-124247] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:06:38.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:06:38.072 [DEBUG] [Thread-124247] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:06:38.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:06:38.129 [DEBUG] [Thread-124247] [transport.py] [_log()] userauth is OK
2025-11-03T23:06:38.129 [DEBUG] [Thread-124247] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:06:38.130 [DEBUG] [Thread-124247] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:06:38.130 [DEBUG] [Thread-124247] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:06:38.130 [DEBUG] [Thread-124247] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:06:38.145 [INFO] [Thread-124247] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:06:38.146 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:06:38.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:06:39.020 [DEBUG] [Thread-124247] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:06:39.020 [DEBUG] [Thread-124247] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:06:39.068 [DEBUG] [Thread-124247] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:06:39.068 [DEBUG] [Thread-124247] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:06:39.076 [DEBUG] [Thread-124247] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:06:39.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:06:39.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:06:39.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:06:39.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:06:39.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:06:39.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:06:39.109 [DEBUG] [Thread-124247] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:06:39.303 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:06:42.499 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:06:43.473 [DEBUG] [Thread-124249 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:06:47.569 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:06:53.946 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:06:58.535 [DEBUG] [Thread-124250 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:07:02.037 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:07:02.037 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:07:09.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:07:09.118 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:07:09.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:07:11.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 6, 46), 30.36, 11.5, 0.0, 15.42, 18.98, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:07:11.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:06:46
2025-11-03T23:07:12.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:07:12.316 [DEBUG] [Thread-124251] [transport.py] [_log()] starting thread (client mode): 0xed5de10
2025-11-03T23:07:12.318 [DEBUG] [Thread-124251] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:07:12.318 [DEBUG] [Thread-124251] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:07:12.318 [INFO] [Thread-124251] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:07:12.333 [DEBUG] [Thread-124251] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:07:12.333 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:07:12.335 [DEBUG] [Thread-124251] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:07:12.336 [DEBUG] [Thread-124251] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:07:12.336 [DEBUG] [Thread-124251] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:07:12.336 [DEBUG] [Thread-124251] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:07:12.336 [DEBUG] [Thread-124251] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:07:12.337 [DEBUG] [Thread-124251] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:07:12.337 [DEBUG] [Thread-124251] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:07:12.337 [DEBUG] [Thread-124251] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:07:12.337 [DEBUG] [Thread-124251] [transport.py] [_log()] client lang: <none>
2025-11-03T23:07:12.337 [DEBUG] [Thread-124251] [transport.py] [_log()] server lang: <none>
2025-11-03T23:07:12.338 [DEBUG] [Thread-124251] [transport.py] [_log()] kex follows: False
2025-11-03T23:07:12.338 [DEBUG] [Thread-124251] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:07:12.339 [DEBUG] [Thread-124251] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:07:12.340 [DEBUG] [Thread-124251] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:07:12.341 [DEBUG] [Thread-124251] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:07:12.341 [DEBUG] [Thread-124251] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:07:12.341 [DEBUG] [Thread-124251] [transport.py] [_log()] Compression: none
2025-11-03T23:07:12.341 [DEBUG] [Thread-124251] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:07:12.395 [DEBUG] [Thread-124251] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:07:12.410 [DEBUG] [Thread-124251] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:07:12.416 [DEBUG] [Thread-124251] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:07:12.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:07:12.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:07:12.431 [DEBUG] [Thread-124251] [transport.py] [_log()] userauth is OK
2025-11-03T23:07:12.431 [DEBUG] [Thread-124251] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:07:12.431 [DEBUG] [Thread-124251] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:07:12.432 [DEBUG] [Thread-124251] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:07:12.432 [DEBUG] [Thread-124251] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:07:12.470 [INFO] [Thread-124251] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:07:12.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:07:13.129 [DEBUG] [Thread-124251] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:07:13.129 [DEBUG] [Thread-124251] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:07:13.130 [DEBUG] [Thread-124251] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:07:13.170 [DEBUG] [Thread-124251] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:07:13.170 [DEBUG] [Thread-124251] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:07:13.176 [DEBUG] [Thread-124251] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:07:13.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:07:13.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:07:13.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:07:13.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:07:13.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:07:13.215 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:07:13.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:07:13.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:07:13.220 [DEBUG] [Thread-124251] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:07:13.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:07:13.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.879613 -999.00  +18.70  13.97     17   -6.70 1 1 1 1 1     0    0 23.74 -52.33 ZNESW 13.7 14.0 309.8 18.3 18.9 -25.3 18.9 -24.4 18.6 -23.9 18.9 -24.9
2025-11-03T23:07:13.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:07:13.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:07:13.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.879613
2025-11-03T23:07:13.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:07:13.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:07:13.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:07:13.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:07:13.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:07:13.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:06:46', tmtdew=30.36, humidity=11.5, cloud=0.0, wind=15.42, temperature=18.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:06:46', seeing=1.18, atlas_timestamp='2025-11-03T21:06:38.563', atlas_cloud=1, atlas_rain=1, zp_data=[-0.06325000000000003, 0.01025000000000098, 0.10224999999999973, 0.0045000000000001705, -0.13949999999999996, -0.18324999999999925, -0.5860000000000003, -0.12824999999999953, -0.0065000000000008384, -0.07399999999999984, 0.047750000000000625, 0.09600000000000009, 0.08399999999999963, -0.06175000000000175, -0.4245000000000001, -0.4090000000000007, 0.012750000000000483, 0.06199999999999939, 0.18399999999999928, 0.11324999999999896, 0.1374999999999993, -0.009250000000001535, -0.4607499999999991, -0.1122500000000013, 0.04299999999999926, 0.13750000000000107, 0.20725000000000016, 0.18849999999999945, 0.13199999999999967, 0.05600000000000094, 0.1280000000000019, 0.007500000000000284, 0.04974999999999952], zp_timestamp='2025-11-03T21:04:00')
2025-11-03T23:07:13.333 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:07:13.349 [DEBUG] [Thread-124254] [transport.py] [_log()] starting thread (client mode): 0xed36980
2025-11-03T23:07:13.349 [DEBUG] [Thread-124254] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:07:13.367 [DEBUG] [Thread-124254] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:07:13.367 [INFO] [Thread-124254] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:07:13.376 [DEBUG] [Thread-124254] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:07:13.376 [DEBUG] [Thread-124254] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:07:13.376 [DEBUG] [Thread-124254] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:07:13.377 [DEBUG] [Thread-124254] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:07:13.377 [DEBUG] [Thread-124254] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:07:13.377 [DEBUG] [Thread-124254] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:07:13.377 [DEBUG] [Thread-124254] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:07:13.377 [DEBUG] [Thread-124254] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:07:13.377 [DEBUG] [Thread-124254] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:07:13.377 [DEBUG] [Thread-124254] [transport.py] [_log()] client lang: <none>
2025-11-03T23:07:13.377 [DEBUG] [Thread-124254] [transport.py] [_log()] server lang: <none>
2025-11-03T23:07:13.377 [DEBUG] [Thread-124254] [transport.py] [_log()] kex follows: False
2025-11-03T23:07:13.378 [DEBUG] [Thread-124254] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:07:13.378 [DEBUG] [Thread-124254] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:07:13.378 [DEBUG] [Thread-124254] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:07:13.378 [DEBUG] [Thread-124254] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:07:13.378 [DEBUG] [Thread-124254] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:07:13.378 [DEBUG] [Thread-124254] [transport.py] [_log()] Compression: none
2025-11-03T23:07:13.378 [DEBUG] [Thread-124254] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:07:13.441 [DEBUG] [Thread-124254] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:07:13.441 [DEBUG] [Thread-124254] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:07:13.443 [DEBUG] [Thread-124254] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:07:13.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:07:13.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:07:13.501 [DEBUG] [Thread-124254] [transport.py] [_log()] userauth is OK
2025-11-03T23:07:13.501 [DEBUG] [Thread-124254] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:07:13.501 [DEBUG] [Thread-124254] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:07:13.501 [DEBUG] [Thread-124254] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:07:13.502 [DEBUG] [Thread-124254] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:07:13.523 [INFO] [Thread-124254] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:07:13.524 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:07:13.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:07:13.568 [DEBUG] [Thread-124256 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:07:14.332 [DEBUG] [Thread-124254] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:07:14.332 [DEBUG] [Thread-124254] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:07:14.384 [DEBUG] [Thread-124254] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:07:14.385 [DEBUG] [Thread-124254] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:07:14.399 [DEBUG] [Thread-124254] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:07:14.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:07:14.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:07:14.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:07:14.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:07:14.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:07:14.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:07:14.458 [DEBUG] [Thread-124254] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:07:16.723 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:07:20.114 [DEBUG] [Thread-124257 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:07:28.821 [DEBUG] [Thread-124258 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:07:36.103 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:07:40.505 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:07:43.861 [DEBUG] [Thread-124259 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:07:44.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:07:44.486 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:07:44.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:07:46.623 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:07:46.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 7, 18), 30.38, 11.48, 0.0, 15.37, 19.0, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:07:46.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:07:18
2025-11-03T23:07:46.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:07:47.343 [DEBUG] [Thread-124260] [transport.py] [_log()] starting thread (client mode): 0x117999f0
2025-11-03T23:07:47.349 [DEBUG] [Thread-124260] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:07:47.351 [DEBUG] [Thread-124260] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:07:47.351 [INFO] [Thread-124260] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:07:47.378 [DEBUG] [Thread-124260] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:07:47.380 [DEBUG] [Thread-124260] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:07:47.380 [DEBUG] [Thread-124260] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:07:47.380 [DEBUG] [Thread-124260] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:07:47.380 [DEBUG] [Thread-124260] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:07:47.380 [DEBUG] [Thread-124260] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:07:47.380 [DEBUG] [Thread-124260] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:07:47.380 [DEBUG] [Thread-124260] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:07:47.380 [DEBUG] [Thread-124260] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:07:47.380 [DEBUG] [Thread-124260] [transport.py] [_log()] client lang: <none>
2025-11-03T23:07:47.380 [DEBUG] [Thread-124260] [transport.py] [_log()] server lang: <none>
2025-11-03T23:07:47.382 [DEBUG] [Thread-124260] [transport.py] [_log()] kex follows: False
2025-11-03T23:07:47.382 [DEBUG] [Thread-124260] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:07:47.386 [DEBUG] [Thread-124260] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:07:47.386 [DEBUG] [Thread-124260] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:07:47.386 [DEBUG] [Thread-124260] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:07:47.386 [DEBUG] [Thread-124260] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:07:47.386 [DEBUG] [Thread-124260] [transport.py] [_log()] Compression: none
2025-11-03T23:07:47.386 [DEBUG] [Thread-124260] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:07:47.495 [DEBUG] [Thread-124260] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:07:47.521 [DEBUG] [Thread-124260] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:07:47.530 [DEBUG] [Thread-124260] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:07:47.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:07:47.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:07:47.540 [DEBUG] [Thread-124260] [transport.py] [_log()] userauth is OK
2025-11-03T23:07:47.541 [DEBUG] [Thread-124260] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:07:47.543 [DEBUG] [Thread-124260] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:07:47.543 [DEBUG] [Thread-124260] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:07:47.543 [DEBUG] [Thread-124260] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:07:47.585 [INFO] [Thread-124260] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:07:47.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:07:48.224 [DEBUG] [Thread-124260] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:07:48.224 [DEBUG] [Thread-124260] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:07:48.228 [DEBUG] [Thread-124260] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:07:48.266 [DEBUG] [Thread-124260] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:07:48.266 [DEBUG] [Thread-124260] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:07:48.268 [DEBUG] [Thread-124260] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:07:48.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:07:48.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:07:48.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:07:48.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:07:48.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:07:48.309 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:07:48.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:07:48.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:07:48.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:07:48.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.879961 -999.00  +18.80  14.65     17   -6.60 1 1 1 1 1     0    0 23.96 -54.56 ZNESW 14.0 14.7 296.0 18.9 18.9 -25.2 18.8 -24.2 18.6 -24.0 18.9 -24.7
2025-11-03T23:07:48.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:07:48.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:07:48.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.879961
2025-11-03T23:07:48.322 [DEBUG] [Thread-124260] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:07:48.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:07:48.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:07:48.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:07:48.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:07:48.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:07:48.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:07:18', tmtdew=30.38, humidity=11.48, cloud=0.0, wind=15.37, temperature=19.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:07:19', seeing=1.2, atlas_timestamp='2025-11-03T21:07:08.630', atlas_cloud=1, atlas_rain=1, zp_data=[-0.06325000000000003, 0.01025000000000098, 0.10224999999999973, 0.0045000000000001705, -0.13949999999999996, -0.18324999999999925, -0.5860000000000003, -0.12824999999999953, -0.0065000000000008384, -0.07399999999999984, 0.047750000000000625, 0.09600000000000009, 0.08399999999999963, -0.06175000000000175, -0.4245000000000001, -0.4090000000000007, 0.012750000000000483, 0.06199999999999939, 0.18399999999999928, 0.11324999999999896, 0.1374999999999993, -0.009250000000001535, -0.4607499999999991, -0.1122500000000013, 0.04299999999999926, 0.13750000000000107, 0.20725000000000016, 0.18849999999999945, 0.13199999999999967, 0.05600000000000094, 0.1280000000000019, 0.007500000000000284, 0.04974999999999952], zp_timestamp='2025-11-03T21:04:00')
2025-11-03T23:07:48.481 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:07:48.496 [DEBUG] [Thread-124263] [transport.py] [_log()] starting thread (client mode): 0xedc42e0
2025-11-03T23:07:48.496 [DEBUG] [Thread-124263] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:07:48.513 [DEBUG] [Thread-124263] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:07:48.513 [INFO] [Thread-124263] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:07:48.521 [DEBUG] [Thread-124263] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:07:48.521 [DEBUG] [Thread-124263] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:07:48.521 [DEBUG] [Thread-124263] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:07:48.521 [DEBUG] [Thread-124263] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:07:48.521 [DEBUG] [Thread-124263] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:07:48.521 [DEBUG] [Thread-124263] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:07:48.521 [DEBUG] [Thread-124263] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:07:48.521 [DEBUG] [Thread-124263] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:07:48.521 [DEBUG] [Thread-124263] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:07:48.521 [DEBUG] [Thread-124263] [transport.py] [_log()] client lang: <none>
2025-11-03T23:07:48.521 [DEBUG] [Thread-124263] [transport.py] [_log()] server lang: <none>
2025-11-03T23:07:48.521 [DEBUG] [Thread-124263] [transport.py] [_log()] kex follows: False
2025-11-03T23:07:48.521 [DEBUG] [Thread-124263] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:07:48.521 [DEBUG] [Thread-124263] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:07:48.521 [DEBUG] [Thread-124263] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:07:48.521 [DEBUG] [Thread-124263] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:07:48.521 [DEBUG] [Thread-124263] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:07:48.522 [DEBUG] [Thread-124263] [transport.py] [_log()] Compression: none
2025-11-03T23:07:48.522 [DEBUG] [Thread-124263] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:07:48.581 [DEBUG] [Thread-124263] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:07:48.581 [DEBUG] [Thread-124263] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:07:48.583 [DEBUG] [Thread-124263] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:07:48.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:07:48.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:07:48.641 [DEBUG] [Thread-124263] [transport.py] [_log()] userauth is OK
2025-11-03T23:07:48.641 [DEBUG] [Thread-124263] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:07:48.641 [DEBUG] [Thread-124263] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:07:48.641 [DEBUG] [Thread-124263] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:07:48.641 [DEBUG] [Thread-124263] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:07:48.656 [INFO] [Thread-124263] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:07:48.657 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:07:48.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:07:49.484 [DEBUG] [Thread-124263] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:07:49.484 [DEBUG] [Thread-124263] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:07:49.533 [DEBUG] [Thread-124263] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:07:49.533 [DEBUG] [Thread-124263] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:07:49.541 [DEBUG] [Thread-124263] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:07:49.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:07:49.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:07:49.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:07:49.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:07:49.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:07:49.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:07:49.589 [DEBUG] [Thread-124263] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:07:51.014 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:07:58.998 [DEBUG] [Thread-124265 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:08:02.244 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:08:02.247 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:08:14.568 [DEBUG] [Thread-124266 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:08:19.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:08:19.617 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:08:19.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:08:21.013 [DEBUG] [Thread-124267 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:08:21.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 7, 51), 30.43, 11.48, 0.0, 16.83, 18.96, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:08:21.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:07:51
2025-11-03T23:08:21.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:08:21.664 [DEBUG] [Thread-124268] [transport.py] [_log()] starting thread (client mode): 0xedc4fa0
2025-11-03T23:08:21.665 [DEBUG] [Thread-124268] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:08:21.677 [DEBUG] [Thread-124268] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:08:21.677 [INFO] [Thread-124268] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:08:21.683 [DEBUG] [Thread-124268] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:08:21.683 [DEBUG] [Thread-124268] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:08:21.683 [DEBUG] [Thread-124268] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:08:21.683 [DEBUG] [Thread-124268] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:08:21.683 [DEBUG] [Thread-124268] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:08:21.683 [DEBUG] [Thread-124268] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:08:21.683 [DEBUG] [Thread-124268] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:08:21.683 [DEBUG] [Thread-124268] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:08:21.683 [DEBUG] [Thread-124268] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:08:21.684 [DEBUG] [Thread-124268] [transport.py] [_log()] client lang: <none>
2025-11-03T23:08:21.684 [DEBUG] [Thread-124268] [transport.py] [_log()] server lang: <none>
2025-11-03T23:08:21.684 [DEBUG] [Thread-124268] [transport.py] [_log()] kex follows: False
2025-11-03T23:08:21.684 [DEBUG] [Thread-124268] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:08:21.685 [DEBUG] [Thread-124268] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:08:21.685 [DEBUG] [Thread-124268] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:08:21.685 [DEBUG] [Thread-124268] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:08:21.685 [DEBUG] [Thread-124268] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:08:21.685 [DEBUG] [Thread-124268] [transport.py] [_log()] Compression: none
2025-11-03T23:08:21.685 [DEBUG] [Thread-124268] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:08:21.721 [DEBUG] [Thread-124268] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:08:21.727 [DEBUG] [Thread-124268] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:08:21.729 [DEBUG] [Thread-124268] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:08:21.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:08:21.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:08:21.734 [DEBUG] [Thread-124268] [transport.py] [_log()] userauth is OK
2025-11-03T23:08:21.734 [DEBUG] [Thread-124268] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:08:21.734 [DEBUG] [Thread-124268] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:08:21.734 [DEBUG] [Thread-124268] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:08:21.735 [DEBUG] [Thread-124268] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:08:21.761 [INFO] [Thread-124268] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:08:21.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:08:22.566 [DEBUG] [Thread-124268] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:08:22.566 [DEBUG] [Thread-124268] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:08:22.568 [DEBUG] [Thread-124268] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:08:22.608 [DEBUG] [Thread-124268] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:08:22.608 [DEBUG] [Thread-124268] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:08:22.610 [DEBUG] [Thread-124268] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:08:22.623 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:08:22.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:08:22.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:08:22.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:08:22.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:08:22.633 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:08:22.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:08:22.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:08:22.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:08:22.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.880308 -999.00  +18.90  16.47     17   -6.60 1 1 1 1 1     0    0 23.58 -50.20 ZNESW 18.6 16.5 310.2 21.9 18.9 -25.2 18.9 -24.1 18.6 -23.4 18.8 -24.9
2025-11-03T23:08:22.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:08:22.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:08:22.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.880308
2025-11-03T23:08:22.640 [DEBUG] [Thread-124268] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:08:22.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:08:22.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:08:22.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:08:22.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:08:22.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:08:22.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:07:51', tmtdew=30.43, humidity=11.48, cloud=0.0, wind=16.83, temperature=18.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:07:52', seeing=1.2, atlas_timestamp='2025-11-03T21:07:38.611', atlas_cloud=1, atlas_rain=1, zp_data=[-0.06325000000000003, 0.01025000000000098, 0.10224999999999973, 0.0045000000000001705, -0.13949999999999996, -0.18324999999999925, -0.5860000000000003, -0.12824999999999953, -0.0065000000000008384, -0.07399999999999984, 0.047750000000000625, 0.09600000000000009, 0.08399999999999963, -0.06175000000000175, -0.4245000000000001, -0.4090000000000007, 0.012750000000000483, 0.06199999999999939, 0.18399999999999928, 0.11324999999999896, 0.1374999999999993, -0.009250000000001535, -0.4607499999999991, -0.1122500000000013, 0.04299999999999926, 0.13750000000000107, 0.20725000000000016, 0.18849999999999945, 0.13199999999999967, 0.05600000000000094, 0.1280000000000019, 0.007500000000000284, 0.04974999999999952], zp_timestamp='2025-11-03T21:04:00')
2025-11-03T23:08:22.729 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:08:22.741 [DEBUG] [Thread-124271] [transport.py] [_log()] starting thread (client mode): 0xed056c0
2025-11-03T23:08:22.742 [DEBUG] [Thread-124271] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:08:22.757 [DEBUG] [Thread-124271] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:08:22.757 [INFO] [Thread-124271] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:08:22.764 [DEBUG] [Thread-124271] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:08:22.765 [DEBUG] [Thread-124271] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:08:22.765 [DEBUG] [Thread-124271] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:08:22.765 [DEBUG] [Thread-124271] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:08:22.765 [DEBUG] [Thread-124271] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:08:22.765 [DEBUG] [Thread-124271] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:08:22.765 [DEBUG] [Thread-124271] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:08:22.765 [DEBUG] [Thread-124271] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:08:22.765 [DEBUG] [Thread-124271] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:08:22.765 [DEBUG] [Thread-124271] [transport.py] [_log()] client lang: <none>
2025-11-03T23:08:22.765 [DEBUG] [Thread-124271] [transport.py] [_log()] server lang: <none>
2025-11-03T23:08:22.765 [DEBUG] [Thread-124271] [transport.py] [_log()] kex follows: False
2025-11-03T23:08:22.765 [DEBUG] [Thread-124271] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:08:22.765 [DEBUG] [Thread-124271] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:08:22.765 [DEBUG] [Thread-124271] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:08:22.765 [DEBUG] [Thread-124271] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:08:22.765 [DEBUG] [Thread-124271] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:08:22.765 [DEBUG] [Thread-124271] [transport.py] [_log()] Compression: none
2025-11-03T23:08:22.765 [DEBUG] [Thread-124271] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:08:22.824 [DEBUG] [Thread-124271] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:08:22.824 [DEBUG] [Thread-124271] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:08:22.824 [DEBUG] [Thread-124271] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:08:22.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:08:22.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:08:22.885 [DEBUG] [Thread-124271] [transport.py] [_log()] userauth is OK
2025-11-03T23:08:22.885 [DEBUG] [Thread-124271] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:08:22.885 [DEBUG] [Thread-124271] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:08:22.885 [DEBUG] [Thread-124271] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:08:22.885 [DEBUG] [Thread-124271] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:08:22.899 [INFO] [Thread-124271] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:08:22.899 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:08:22.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:08:23.741 [DEBUG] [Thread-124271] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:08:23.741 [DEBUG] [Thread-124271] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:08:23.781 [DEBUG] [Thread-124271] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:08:23.782 [DEBUG] [Thread-124271] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:08:23.793 [DEBUG] [Thread-124271] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:08:23.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:08:23.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:08:23.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:08:23.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:08:23.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:08:23.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:08:23.832 [DEBUG] [Thread-124271] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:08:29.602 [DEBUG] [Thread-124273 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:08:44.680 [DEBUG] [Thread-124274 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:08:53.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:08:53.857 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:08:53.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:08:54.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 8, 24), 30.38, 11.51, 0.0, 18.58, 18.93, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:08:54.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:08:24
2025-11-03T23:08:54.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:08:54.948 [DEBUG] [Thread-124275] [transport.py] [_log()] starting thread (client mode): 0xeda2bf0
2025-11-03T23:08:54.949 [DEBUG] [Thread-124275] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:08:54.967 [DEBUG] [Thread-124275] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:08:54.967 [INFO] [Thread-124275] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:08:54.974 [DEBUG] [Thread-124275] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:08:54.975 [DEBUG] [Thread-124275] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:08:54.975 [DEBUG] [Thread-124275] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:08:54.975 [DEBUG] [Thread-124275] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:08:54.975 [DEBUG] [Thread-124275] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:08:54.975 [DEBUG] [Thread-124275] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:08:54.975 [DEBUG] [Thread-124275] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:08:54.976 [DEBUG] [Thread-124275] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:08:54.976 [DEBUG] [Thread-124275] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:08:54.976 [DEBUG] [Thread-124275] [transport.py] [_log()] client lang: <none>
2025-11-03T23:08:54.976 [DEBUG] [Thread-124275] [transport.py] [_log()] server lang: <none>
2025-11-03T23:08:54.976 [DEBUG] [Thread-124275] [transport.py] [_log()] kex follows: False
2025-11-03T23:08:54.976 [DEBUG] [Thread-124275] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:08:54.977 [DEBUG] [Thread-124275] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:08:54.977 [DEBUG] [Thread-124275] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:08:54.977 [DEBUG] [Thread-124275] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:08:54.977 [DEBUG] [Thread-124275] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:08:54.977 [DEBUG] [Thread-124275] [transport.py] [_log()] Compression: none
2025-11-03T23:08:54.977 [DEBUG] [Thread-124275] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:08:55.012 [DEBUG] [Thread-124275] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:08:55.018 [DEBUG] [Thread-124275] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:08:55.020 [DEBUG] [Thread-124275] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:08:55.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:08:55.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:08:55.025 [DEBUG] [Thread-124275] [transport.py] [_log()] userauth is OK
2025-11-03T23:08:55.025 [DEBUG] [Thread-124275] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:08:55.025 [DEBUG] [Thread-124275] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:08:55.025 [DEBUG] [Thread-124275] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:08:55.026 [DEBUG] [Thread-124275] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:08:55.054 [INFO] [Thread-124275] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:08:55.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:08:55.104 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:08:55.700 [DEBUG] [Thread-124275] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:08:55.700 [DEBUG] [Thread-124275] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:08:55.709 [DEBUG] [Thread-124275] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:08:55.742 [DEBUG] [Thread-124275] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:08:55.742 [DEBUG] [Thread-124275] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:08:55.744 [DEBUG] [Thread-124275] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:08:55.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:08:55.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:08:55.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:08:55.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:08:55.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:08:55.768 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:08:55.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:08:55.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:08:55.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:08:55.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.880655 -999.00  +19.00  15.49     16   -6.60 1 1 1 1 1     0    0 24.04 -48.77 ZNESW 13.7 15.5 302.2 22.7 18.9 -25.2 18.8 -24.1 18.6 -23.8 18.8 -24.8
2025-11-03T23:08:55.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:08:55.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:08:55.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.880655
2025-11-03T23:08:55.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:08:55.783 [DEBUG] [Thread-124275] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:08:55.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:08:55.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:08:55.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:08:55.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:08:55.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:08:24', tmtdew=30.38, humidity=11.51, cloud=0.0, wind=18.58, temperature=18.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:08:24', seeing=1.2, atlas_timestamp='2025-11-03T21:08:08.592', atlas_cloud=1, atlas_rain=1, zp_data=[-0.06325000000000003, 0.01025000000000098, 0.10224999999999973, 0.0045000000000001705, -0.13949999999999996, -0.18324999999999925, -0.5860000000000003, -0.12824999999999953, -0.0065000000000008384, -0.07399999999999984, 0.047750000000000625, 0.09600000000000009, 0.08399999999999963, -0.06175000000000175, -0.4245000000000001, -0.4090000000000007, 0.012750000000000483, 0.06199999999999939, 0.18399999999999928, 0.11324999999999896, 0.1374999999999993, -0.009250000000001535, -0.4607499999999991, -0.1122500000000013, 0.04299999999999926, 0.13750000000000107, 0.20725000000000016, 0.18849999999999945, 0.13199999999999967, 0.05600000000000094, 0.1280000000000019, 0.007500000000000284, 0.04974999999999952], zp_timestamp='2025-11-03T21:04:00')
2025-11-03T23:08:55.859 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:08:55.872 [DEBUG] [Thread-124278] [transport.py] [_log()] starting thread (client mode): 0xedc54b0
2025-11-03T23:08:55.872 [DEBUG] [Thread-124278] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:08:55.888 [DEBUG] [Thread-124278] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:08:55.888 [INFO] [Thread-124278] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:08:55.895 [DEBUG] [Thread-124278] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:08:55.895 [DEBUG] [Thread-124278] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:08:55.895 [DEBUG] [Thread-124278] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:08:55.895 [DEBUG] [Thread-124278] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:08:55.895 [DEBUG] [Thread-124278] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:08:55.896 [DEBUG] [Thread-124278] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:08:55.896 [DEBUG] [Thread-124278] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:08:55.896 [DEBUG] [Thread-124278] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:08:55.896 [DEBUG] [Thread-124278] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:08:55.896 [DEBUG] [Thread-124278] [transport.py] [_log()] client lang: <none>
2025-11-03T23:08:55.896 [DEBUG] [Thread-124278] [transport.py] [_log()] server lang: <none>
2025-11-03T23:08:55.896 [DEBUG] [Thread-124278] [transport.py] [_log()] kex follows: False
2025-11-03T23:08:55.896 [DEBUG] [Thread-124278] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:08:55.896 [DEBUG] [Thread-124278] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:08:55.896 [DEBUG] [Thread-124278] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:08:55.896 [DEBUG] [Thread-124278] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:08:55.896 [DEBUG] [Thread-124278] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:08:55.896 [DEBUG] [Thread-124278] [transport.py] [_log()] Compression: none
2025-11-03T23:08:55.896 [DEBUG] [Thread-124278] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:08:55.961 [DEBUG] [Thread-124278] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:08:55.961 [DEBUG] [Thread-124278] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:08:55.961 [DEBUG] [Thread-124278] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:08:55.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:08:55.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:08:56.018 [DEBUG] [Thread-124278] [transport.py] [_log()] userauth is OK
2025-11-03T23:08:56.018 [DEBUG] [Thread-124278] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:08:56.018 [DEBUG] [Thread-124278] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:08:56.018 [DEBUG] [Thread-124278] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:08:56.018 [DEBUG] [Thread-124278] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:08:56.034 [INFO] [Thread-124278] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:08:56.034 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:08:56.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:08:56.898 [DEBUG] [Thread-124278] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:08:56.898 [DEBUG] [Thread-124278] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:08:56.946 [DEBUG] [Thread-124278] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:08:56.947 [DEBUG] [Thread-124278] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:08:56.957 [DEBUG] [Thread-124278] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:08:56.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:08:56.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:08:56.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:08:56.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:08:56.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:08:56.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:08:56.997 [DEBUG] [Thread-124278] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:08:59.196 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:08:59.711 [DEBUG] [Thread-124280 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:09:02.453 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:09:02.455 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:09:14.817 [DEBUG] [Thread-124281 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:09:21.417 [DEBUG] [Thread-124282 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:09:27.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:09:27.022 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:09:27.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:09:27.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 8, 56), 30.32, 11.53, 0.0, 17.8, 18.95, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:09:27.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:08:56
2025-11-03T23:09:27.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:09:28.118 [DEBUG] [Thread-124283] [transport.py] [_log()] starting thread (client mode): 0x117ea3b0
2025-11-03T23:09:28.119 [DEBUG] [Thread-124283] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:09:28.124 [DEBUG] [Thread-124283] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:09:28.124 [INFO] [Thread-124283] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:09:28.127 [DEBUG] [Thread-124283] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:09:28.127 [DEBUG] [Thread-124283] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:09:28.127 [DEBUG] [Thread-124283] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:09:28.127 [DEBUG] [Thread-124283] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:09:28.127 [DEBUG] [Thread-124283] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:09:28.127 [DEBUG] [Thread-124283] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:09:28.127 [DEBUG] [Thread-124283] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:09:28.127 [DEBUG] [Thread-124283] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:09:28.127 [DEBUG] [Thread-124283] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:09:28.127 [DEBUG] [Thread-124283] [transport.py] [_log()] client lang: <none>
2025-11-03T23:09:28.127 [DEBUG] [Thread-124283] [transport.py] [_log()] server lang: <none>
2025-11-03T23:09:28.128 [DEBUG] [Thread-124283] [transport.py] [_log()] kex follows: False
2025-11-03T23:09:28.128 [DEBUG] [Thread-124283] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:09:28.128 [DEBUG] [Thread-124283] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:09:28.128 [DEBUG] [Thread-124283] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:09:28.128 [DEBUG] [Thread-124283] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:09:28.128 [DEBUG] [Thread-124283] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:09:28.129 [DEBUG] [Thread-124283] [transport.py] [_log()] Compression: none
2025-11-03T23:09:28.129 [DEBUG] [Thread-124283] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:09:28.152 [DEBUG] [Thread-124283] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:09:28.156 [DEBUG] [Thread-124283] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:09:28.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:09:28.158 [DEBUG] [Thread-124283] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:09:28.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:09:28.159 [DEBUG] [Thread-124283] [transport.py] [_log()] userauth is OK
2025-11-03T23:09:28.159 [DEBUG] [Thread-124283] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:09:28.160 [DEBUG] [Thread-124283] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:09:28.160 [DEBUG] [Thread-124283] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:09:28.160 [DEBUG] [Thread-124283] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:09:28.177 [INFO] [Thread-124283] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:09:28.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:09:28.963 [DEBUG] [Thread-124283] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:09:28.963 [DEBUG] [Thread-124283] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:09:28.963 [DEBUG] [Thread-124283] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:09:29.003 [DEBUG] [Thread-124283] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:09:29.003 [DEBUG] [Thread-124283] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:09:29.006 [DEBUG] [Thread-124283] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:09:29.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:09:29.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:09:29.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:09:29.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:09:29.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:09:29.026 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:09:29.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:09:29.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:09:29.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:09:29.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.881002 -999.00  +18.90  12.57     16   -6.60 1 1 1 1 1     0    0 24.60 -44.71 ZNESW 13.6 12.6 302.0 18.2 18.9 -25.3 18.9 -24.1 18.6 -23.9 18.9 -24.6
2025-11-03T23:09:29.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:09:29.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:09:29.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.881002
2025-11-03T23:09:29.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:09:29.034 [DEBUG] [Thread-124283] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:09:29.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:09:29.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:09:29.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:09:29.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:09:29.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:08:56', tmtdew=30.32, humidity=11.53, cloud=0.0, wind=17.8, temperature=18.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:08:59', seeing=1.2, atlas_timestamp='2025-11-03T21:08:38.573', atlas_cloud=1, atlas_rain=1, zp_data=[-0.06325000000000003, 0.01025000000000098, 0.10224999999999973, 0.0045000000000001705, -0.13949999999999996, -0.18324999999999925, -0.5860000000000003, -0.12824999999999953, -0.0065000000000008384, -0.07399999999999984, 0.047750000000000625, 0.09600000000000009, 0.08399999999999963, -0.06175000000000175, -0.4245000000000001, -0.4090000000000007, 0.012750000000000483, 0.06199999999999939, 0.18399999999999928, 0.11324999999999896, 0.1374999999999993, -0.009250000000001535, -0.4607499999999991, -0.1122500000000013, 0.04299999999999926, 0.13750000000000107, 0.20725000000000016, 0.18849999999999945, 0.13199999999999967, 0.05600000000000094, 0.1280000000000019, 0.007500000000000284, 0.04974999999999952], zp_timestamp='2025-11-03T21:07:00')
2025-11-03T23:09:29.109 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:09:29.125 [DEBUG] [Thread-124286] [transport.py] [_log()] starting thread (client mode): 0xeda3d30
2025-11-03T23:09:29.126 [DEBUG] [Thread-124286] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:09:29.144 [DEBUG] [Thread-124286] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:09:29.144 [INFO] [Thread-124286] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:09:29.154 [DEBUG] [Thread-124286] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:09:29.154 [DEBUG] [Thread-124286] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:09:29.154 [DEBUG] [Thread-124286] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:09:29.154 [DEBUG] [Thread-124286] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:09:29.154 [DEBUG] [Thread-124286] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:09:29.154 [DEBUG] [Thread-124286] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:09:29.154 [DEBUG] [Thread-124286] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:09:29.154 [DEBUG] [Thread-124286] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:09:29.154 [DEBUG] [Thread-124286] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:09:29.154 [DEBUG] [Thread-124286] [transport.py] [_log()] client lang: <none>
2025-11-03T23:09:29.154 [DEBUG] [Thread-124286] [transport.py] [_log()] server lang: <none>
2025-11-03T23:09:29.154 [DEBUG] [Thread-124286] [transport.py] [_log()] kex follows: False
2025-11-03T23:09:29.154 [DEBUG] [Thread-124286] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:09:29.154 [DEBUG] [Thread-124286] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:09:29.154 [DEBUG] [Thread-124286] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:09:29.154 [DEBUG] [Thread-124286] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:09:29.154 [DEBUG] [Thread-124286] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:09:29.154 [DEBUG] [Thread-124286] [transport.py] [_log()] Compression: none
2025-11-03T23:09:29.154 [DEBUG] [Thread-124286] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:09:29.211 [DEBUG] [Thread-124286] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:09:29.211 [DEBUG] [Thread-124286] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:09:29.212 [DEBUG] [Thread-124286] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:09:29.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:09:29.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:09:29.269 [DEBUG] [Thread-124286] [transport.py] [_log()] userauth is OK
2025-11-03T23:09:29.269 [DEBUG] [Thread-124286] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:09:29.269 [DEBUG] [Thread-124286] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:09:29.269 [DEBUG] [Thread-124286] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:09:29.269 [DEBUG] [Thread-124286] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:09:29.283 [INFO] [Thread-124286] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:09:29.283 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:09:29.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:09:29.846 [DEBUG] [Thread-124288 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:09:30.179 [DEBUG] [Thread-124286] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:09:30.179 [DEBUG] [Thread-124286] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:09:30.227 [DEBUG] [Thread-124286] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:09:30.227 [DEBUG] [Thread-124286] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:09:30.240 [DEBUG] [Thread-124286] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:09:30.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:09:30.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:09:30.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:09:30.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:09:30.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:09:30.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:09:30.281 [DEBUG] [Thread-124286] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:09:44.895 [DEBUG] [Thread-124289 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:09:59.931 [DEBUG] [Thread-124290 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:10:00.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:10:00.304 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:10:00.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:10:01.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 9, 35), 30.38, 11.53, 0.0, 17.13, 19.03, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:10:01.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:09:35
2025-11-03T23:10:01.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:10:01.354 [DEBUG] [Thread-124291] [transport.py] [_log()] starting thread (client mode): 0xed5d390
2025-11-03T23:10:01.354 [DEBUG] [Thread-124291] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:10:01.378 [DEBUG] [Thread-124291] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:10:01.378 [INFO] [Thread-124291] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:10:01.379 [DEBUG] [Thread-124291] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:10:01.380 [DEBUG] [Thread-124291] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:10:01.380 [DEBUG] [Thread-124291] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:10:01.380 [DEBUG] [Thread-124291] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:10:01.380 [DEBUG] [Thread-124291] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:10:01.380 [DEBUG] [Thread-124291] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:10:01.380 [DEBUG] [Thread-124291] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:10:01.380 [DEBUG] [Thread-124291] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:10:01.380 [DEBUG] [Thread-124291] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:10:01.380 [DEBUG] [Thread-124291] [transport.py] [_log()] client lang: <none>
2025-11-03T23:10:01.380 [DEBUG] [Thread-124291] [transport.py] [_log()] server lang: <none>
2025-11-03T23:10:01.380 [DEBUG] [Thread-124291] [transport.py] [_log()] kex follows: False
2025-11-03T23:10:01.380 [DEBUG] [Thread-124291] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:10:01.380 [DEBUG] [Thread-124291] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:10:01.380 [DEBUG] [Thread-124291] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:10:01.380 [DEBUG] [Thread-124291] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:10:01.380 [DEBUG] [Thread-124291] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:10:01.380 [DEBUG] [Thread-124291] [transport.py] [_log()] Compression: none
2025-11-03T23:10:01.380 [DEBUG] [Thread-124291] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:10:01.392 [DEBUG] [Thread-124291] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:10:01.392 [DEBUG] [Thread-124291] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:10:01.393 [DEBUG] [Thread-124291] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:10:01.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:10:01.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:10:01.395 [DEBUG] [Thread-124291] [transport.py] [_log()] userauth is OK
2025-11-03T23:10:01.395 [DEBUG] [Thread-124291] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:10:01.395 [DEBUG] [Thread-124291] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:10:01.395 [DEBUG] [Thread-124291] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:10:01.395 [DEBUG] [Thread-124291] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:10:01.414 [INFO] [Thread-124291] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:10:01.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:10:02.025 [DEBUG] [Thread-124291] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:10:02.033 [DEBUG] [Thread-124291] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:10:02.033 [DEBUG] [Thread-124291] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:10:02.065 [DEBUG] [Thread-124291] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:10:02.065 [DEBUG] [Thread-124291] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:10:02.068 [DEBUG] [Thread-124291] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:10:02.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:10:02.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:10:02.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:10:02.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:10:02.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:10:02.086 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:10:02.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:10:02.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:10:02.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:10:02.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.881349 -999.00  +18.90  17.11     17   -6.60 1 1 1 1 1     0    0 24.80 -44.19 ZNESW 15.6 17.1 307.4 21.8 18.9 -25.1 18.9 -24.4 18.6 -23.9 18.9 -24.9
2025-11-03T23:10:02.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:10:02.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:10:02.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.881349
2025-11-03T23:10:02.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:10:02.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:10:02.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:10:02.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:10:02.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:10:02.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:09:35', tmtdew=30.38, humidity=11.53, cloud=0.0, wind=17.13, temperature=19.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:09:36', seeing=1.2, atlas_timestamp='2025-11-03T21:09:08.554', atlas_cloud=1, atlas_rain=1, zp_data=[-0.06325000000000003, 0.01025000000000098, 0.10224999999999973, 0.0045000000000001705, -0.13949999999999996, -0.18324999999999925, -0.5860000000000003, -0.12824999999999953, -0.0065000000000008384, -0.07399999999999984, 0.047750000000000625, 0.09600000000000009, 0.08399999999999963, -0.06175000000000175, -0.4245000000000001, -0.4090000000000007, 0.012750000000000483, 0.06199999999999939, 0.18399999999999928, 0.11324999999999896, 0.1374999999999993, -0.009250000000001535, -0.4607499999999991, -0.1122500000000013, 0.04299999999999926, 0.13750000000000107, 0.20725000000000016, 0.18849999999999945, 0.13199999999999967, 0.05600000000000094, 0.1280000000000019, 0.007500000000000284, 0.04974999999999952], zp_timestamp='2025-11-03T21:07:00')
2025-11-03T23:10:02.087 [DEBUG] [Thread-124291] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:10:02.160 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:10:02.172 [DEBUG] [Thread-124294] [transport.py] [_log()] starting thread (client mode): 0xed5c580
2025-11-03T23:10:02.172 [DEBUG] [Thread-124294] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:10:02.187 [DEBUG] [Thread-124294] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:10:02.187 [INFO] [Thread-124294] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:10:02.195 [DEBUG] [Thread-124294] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:10:02.195 [DEBUG] [Thread-124294] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:10:02.195 [DEBUG] [Thread-124294] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:10:02.195 [DEBUG] [Thread-124294] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:10:02.195 [DEBUG] [Thread-124294] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:10:02.195 [DEBUG] [Thread-124294] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:10:02.195 [DEBUG] [Thread-124294] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:10:02.195 [DEBUG] [Thread-124294] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:10:02.195 [DEBUG] [Thread-124294] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:10:02.195 [DEBUG] [Thread-124294] [transport.py] [_log()] client lang: <none>
2025-11-03T23:10:02.195 [DEBUG] [Thread-124294] [transport.py] [_log()] server lang: <none>
2025-11-03T23:10:02.195 [DEBUG] [Thread-124294] [transport.py] [_log()] kex follows: False
2025-11-03T23:10:02.195 [DEBUG] [Thread-124294] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:10:02.195 [DEBUG] [Thread-124294] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:10:02.195 [DEBUG] [Thread-124294] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:10:02.195 [DEBUG] [Thread-124294] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:10:02.195 [DEBUG] [Thread-124294] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:10:02.195 [DEBUG] [Thread-124294] [transport.py] [_log()] Compression: none
2025-11-03T23:10:02.195 [DEBUG] [Thread-124294] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:10:02.251 [DEBUG] [Thread-124294] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:10:02.252 [DEBUG] [Thread-124294] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:10:02.252 [DEBUG] [Thread-124294] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:10:02.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:10:02.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:10:02.309 [DEBUG] [Thread-124294] [transport.py] [_log()] userauth is OK
2025-11-03T23:10:02.309 [DEBUG] [Thread-124294] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:10:02.309 [DEBUG] [Thread-124294] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:10:02.309 [DEBUG] [Thread-124294] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:10:02.309 [DEBUG] [Thread-124294] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:10:02.324 [INFO] [Thread-124294] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:10:02.324 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:10:02.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:10:02.705 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:10:02.706 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:10:03.163 [DEBUG] [Thread-124294] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:10:03.163 [DEBUG] [Thread-124294] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:10:03.211 [DEBUG] [Thread-124294] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:10:03.211 [DEBUG] [Thread-124294] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:10:03.219 [DEBUG] [Thread-124294] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:10:03.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:10:03.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:10:03.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:10:03.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:10:03.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:10:03.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:10:03.257 [DEBUG] [Thread-124294] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:10:14.962 [DEBUG] [Thread-124296 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:10:21.623 [DEBUG] [Thread-124297 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:10:30.024 [DEBUG] [Thread-124298 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:10:33.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:10:33.248 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:10:33.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:10:33.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 10, 7), 30.37, 11.53, 0.0, 17.89, 19.01, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:10:33.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:10:07
2025-11-03T23:10:34.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:10:34.292 [DEBUG] [Thread-124299] [transport.py] [_log()] starting thread (client mode): 0xedc6cb0
2025-11-03T23:10:34.292 [DEBUG] [Thread-124299] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:10:34.316 [DEBUG] [Thread-124299] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:10:34.316 [INFO] [Thread-124299] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:10:34.319 [DEBUG] [Thread-124299] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:10:34.320 [DEBUG] [Thread-124299] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:10:34.320 [DEBUG] [Thread-124299] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:10:34.320 [DEBUG] [Thread-124299] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:10:34.320 [DEBUG] [Thread-124299] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:10:34.320 [DEBUG] [Thread-124299] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:10:34.320 [DEBUG] [Thread-124299] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:10:34.320 [DEBUG] [Thread-124299] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:10:34.320 [DEBUG] [Thread-124299] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:10:34.320 [DEBUG] [Thread-124299] [transport.py] [_log()] client lang: <none>
2025-11-03T23:10:34.320 [DEBUG] [Thread-124299] [transport.py] [_log()] server lang: <none>
2025-11-03T23:10:34.320 [DEBUG] [Thread-124299] [transport.py] [_log()] kex follows: False
2025-11-03T23:10:34.320 [DEBUG] [Thread-124299] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:10:34.321 [DEBUG] [Thread-124299] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:10:34.321 [DEBUG] [Thread-124299] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:10:34.321 [DEBUG] [Thread-124299] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:10:34.321 [DEBUG] [Thread-124299] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:10:34.321 [DEBUG] [Thread-124299] [transport.py] [_log()] Compression: none
2025-11-03T23:10:34.321 [DEBUG] [Thread-124299] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:10:34.341 [DEBUG] [Thread-124299] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:10:34.342 [DEBUG] [Thread-124299] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:10:34.342 [DEBUG] [Thread-124299] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:10:34.342 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:10:34.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:10:34.344 [DEBUG] [Thread-124299] [transport.py] [_log()] userauth is OK
2025-11-03T23:10:34.344 [DEBUG] [Thread-124299] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:10:34.345 [DEBUG] [Thread-124299] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:10:34.345 [DEBUG] [Thread-124299] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:10:34.345 [DEBUG] [Thread-124299] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:10:34.368 [INFO] [Thread-124299] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:10:34.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:10:35.025 [DEBUG] [Thread-124299] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:10:35.025 [DEBUG] [Thread-124299] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:10:35.025 [DEBUG] [Thread-124299] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:10:35.067 [DEBUG] [Thread-124299] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:10:35.067 [DEBUG] [Thread-124299] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:10:35.070 [DEBUG] [Thread-124299] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:10:35.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:10:35.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:10:35.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:10:35.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:10:35.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:10:35.093 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:10:35.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:10:35.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:10:35.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:10:35.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.882044 -999.00  +19.00  14.36     17   -6.50 1 1 1 1 1     0    0 24.91 -35.45 ZNESW 14.9 14.4 312.6 17.8 19.0 -25.2 18.9 -24.1 18.6 -24.0 18.9 -24.9
2025-11-03T23:10:35.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:10:35.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:10:35.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.882044
2025-11-03T23:10:35.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:10:35.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:10:35.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:10:35.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:10:35.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:10:35.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:10:07', tmtdew=30.37, humidity=11.53, cloud=0.0, wind=17.89, temperature=19.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:10:08', seeing=1.0, atlas_timestamp='2025-11-03T21:10:08.602', atlas_cloud=1, atlas_rain=1, zp_data=[-0.06325000000000003, 0.01025000000000098, 0.10224999999999973, 0.0045000000000001705, -0.13949999999999996, -0.18324999999999925, -0.5860000000000003, -0.12824999999999953, -0.0065000000000008384, -0.07399999999999984, 0.047750000000000625, 0.09600000000000009, 0.08399999999999963, -0.06175000000000175, -0.4245000000000001, -0.4090000000000007, 0.012750000000000483, 0.06199999999999939, 0.18399999999999928, 0.11324999999999896, 0.1374999999999993, -0.009250000000001535, -0.4607499999999991, -0.1122500000000013, 0.04299999999999926, 0.13750000000000107, 0.20725000000000016, 0.18849999999999945, 0.13199999999999967, 0.05600000000000094, 0.1280000000000019, 0.007500000000000284, 0.04974999999999952], zp_timestamp='2025-11-03T21:07:00')
2025-11-03T23:10:35.098 [DEBUG] [Thread-124299] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:10:35.181 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:10:35.193 [DEBUG] [Thread-124302] [transport.py] [_log()] starting thread (client mode): 0xeda1510
2025-11-03T23:10:35.194 [DEBUG] [Thread-124302] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:10:35.209 [DEBUG] [Thread-124302] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:10:35.209 [INFO] [Thread-124302] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:10:35.216 [DEBUG] [Thread-124302] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:10:35.217 [DEBUG] [Thread-124302] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:10:35.217 [DEBUG] [Thread-124302] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:10:35.217 [DEBUG] [Thread-124302] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:10:35.217 [DEBUG] [Thread-124302] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:10:35.217 [DEBUG] [Thread-124302] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:10:35.217 [DEBUG] [Thread-124302] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:10:35.217 [DEBUG] [Thread-124302] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:10:35.217 [DEBUG] [Thread-124302] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:10:35.217 [DEBUG] [Thread-124302] [transport.py] [_log()] client lang: <none>
2025-11-03T23:10:35.217 [DEBUG] [Thread-124302] [transport.py] [_log()] server lang: <none>
2025-11-03T23:10:35.217 [DEBUG] [Thread-124302] [transport.py] [_log()] kex follows: False
2025-11-03T23:10:35.218 [DEBUG] [Thread-124302] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:10:35.218 [DEBUG] [Thread-124302] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:10:35.218 [DEBUG] [Thread-124302] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:10:35.218 [DEBUG] [Thread-124302] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:10:35.218 [DEBUG] [Thread-124302] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:10:35.218 [DEBUG] [Thread-124302] [transport.py] [_log()] Compression: none
2025-11-03T23:10:35.218 [DEBUG] [Thread-124302] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:10:35.279 [DEBUG] [Thread-124302] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:10:35.280 [DEBUG] [Thread-124302] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:10:35.280 [DEBUG] [Thread-124302] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:10:35.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:10:35.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:10:35.302 [DEBUG] [Thread-124302] [transport.py] [_log()] userauth is OK
2025-11-03T23:10:35.303 [DEBUG] [Thread-124302] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:10:35.303 [DEBUG] [Thread-124302] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:10:35.303 [DEBUG] [Thread-124302] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:10:35.303 [DEBUG] [Thread-124302] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:10:35.321 [INFO] [Thread-124302] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:10:35.321 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:10:35.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:10:36.170 [DEBUG] [Thread-124302] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:10:36.170 [DEBUG] [Thread-124302] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:10:36.221 [DEBUG] [Thread-124302] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:10:36.221 [DEBUG] [Thread-124302] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:10:36.234 [DEBUG] [Thread-124302] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:10:36.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:10:36.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:10:36.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:10:36.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:10:36.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:10:36.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:10:36.282 [DEBUG] [Thread-124302] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:10:45.057 [DEBUG] [Thread-124304 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:11:00.106 [DEBUG] [Thread-124305 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:11:02.911 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:11:02.912 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:11:06.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:11:06.296 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:11:06.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:11:07.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 10, 40), 30.44, 11.48, 0.0, 16.09, 19.06, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:11:07.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:10:40
2025-11-03T23:11:07.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:11:08.064 [DEBUG] [Thread-124306] [transport.py] [_log()] starting thread (client mode): 0xed05330
2025-11-03T23:11:08.064 [DEBUG] [Thread-124306] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:11:08.083 [DEBUG] [Thread-124306] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:11:08.083 [INFO] [Thread-124306] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:11:08.088 [DEBUG] [Thread-124306] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:11:08.088 [DEBUG] [Thread-124306] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:11:08.088 [DEBUG] [Thread-124306] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:11:08.088 [DEBUG] [Thread-124306] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:11:08.088 [DEBUG] [Thread-124306] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:11:08.088 [DEBUG] [Thread-124306] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:11:08.088 [DEBUG] [Thread-124306] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:11:08.088 [DEBUG] [Thread-124306] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:11:08.088 [DEBUG] [Thread-124306] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:11:08.088 [DEBUG] [Thread-124306] [transport.py] [_log()] client lang: <none>
2025-11-03T23:11:08.088 [DEBUG] [Thread-124306] [transport.py] [_log()] server lang: <none>
2025-11-03T23:11:08.088 [DEBUG] [Thread-124306] [transport.py] [_log()] kex follows: False
2025-11-03T23:11:08.088 [DEBUG] [Thread-124306] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:11:08.088 [DEBUG] [Thread-124306] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:11:08.088 [DEBUG] [Thread-124306] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:11:08.089 [DEBUG] [Thread-124306] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:11:08.090 [DEBUG] [Thread-124306] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:11:08.090 [DEBUG] [Thread-124306] [transport.py] [_log()] Compression: none
2025-11-03T23:11:08.090 [DEBUG] [Thread-124306] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:11:08.110 [DEBUG] [Thread-124306] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:11:08.110 [DEBUG] [Thread-124306] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:11:08.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:11:08.111 [DEBUG] [Thread-124306] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:11:08.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:11:08.115 [DEBUG] [Thread-124306] [transport.py] [_log()] userauth is OK
2025-11-03T23:11:08.115 [DEBUG] [Thread-124306] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:11:08.115 [DEBUG] [Thread-124306] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:11:08.115 [DEBUG] [Thread-124306] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:11:08.115 [DEBUG] [Thread-124306] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:11:08.137 [INFO] [Thread-124306] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:11:08.141 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:11:09.151 [DEBUG] [Thread-124306] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:11:09.152 [DEBUG] [Thread-124306] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:11:09.152 [DEBUG] [Thread-124306] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:11:09.192 [DEBUG] [Thread-124306] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:11:09.192 [DEBUG] [Thread-124306] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:11:09.194 [DEBUG] [Thread-124306] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:11:09.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:11:09.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:11:09.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:11:09.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:11:09.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:11:09.213 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:11:09.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:11:09.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:11:09.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:11:09.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.882391 -999.00  +18.90  16.38     17   -6.60 1 1 1 1 1     0    0 24.40 -35.60 ZNESW 16.7 16.4 317.0 18.8 18.9 -25.2 18.9 -24.2 18.7 -23.6 18.9 -24.9
2025-11-03T23:11:09.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:11:09.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:11:09.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.882391
2025-11-03T23:11:09.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:11:09.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:11:09.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:11:09.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:11:09.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:11:09.222 [DEBUG] [Thread-124306] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:11:09.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:10:40', tmtdew=30.44, humidity=11.48, cloud=0.0, wind=16.09, temperature=19.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:10:40', seeing=1.0, atlas_timestamp='2025-11-03T21:10:38.582', atlas_cloud=1, atlas_rain=1, zp_data=[-0.06325000000000003, 0.01025000000000098, 0.10224999999999973, 0.0045000000000001705, -0.13949999999999996, -0.18324999999999925, -0.5860000000000003, -0.12824999999999953, -0.0065000000000008384, -0.07399999999999984, 0.047750000000000625, 0.09600000000000009, 0.08399999999999963, -0.06175000000000175, -0.4245000000000001, -0.4090000000000007, 0.012750000000000483, 0.06199999999999939, 0.18399999999999928, 0.11324999999999896, 0.1374999999999993, -0.009250000000001535, -0.4607499999999991, -0.1122500000000013, 0.04299999999999926, 0.13750000000000107, 0.20725000000000016, 0.18849999999999945, 0.13199999999999967, 0.05600000000000094, 0.1280000000000019, 0.007500000000000284, 0.04974999999999952], zp_timestamp='2025-11-03T21:07:00')
2025-11-03T23:11:09.295 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:11:09.307 [DEBUG] [Thread-124309] [transport.py] [_log()] starting thread (client mode): 0xeda1f30
2025-11-03T23:11:09.307 [DEBUG] [Thread-124309] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:11:09.322 [DEBUG] [Thread-124309] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:11:09.322 [INFO] [Thread-124309] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:11:09.329 [DEBUG] [Thread-124309] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:11:09.329 [DEBUG] [Thread-124309] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:11:09.329 [DEBUG] [Thread-124309] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:11:09.329 [DEBUG] [Thread-124309] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:11:09.329 [DEBUG] [Thread-124309] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:11:09.329 [DEBUG] [Thread-124309] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:11:09.329 [DEBUG] [Thread-124309] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:11:09.329 [DEBUG] [Thread-124309] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:11:09.329 [DEBUG] [Thread-124309] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:11:09.329 [DEBUG] [Thread-124309] [transport.py] [_log()] client lang: <none>
2025-11-03T23:11:09.329 [DEBUG] [Thread-124309] [transport.py] [_log()] server lang: <none>
2025-11-03T23:11:09.329 [DEBUG] [Thread-124309] [transport.py] [_log()] kex follows: False
2025-11-03T23:11:09.329 [DEBUG] [Thread-124309] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:11:09.329 [DEBUG] [Thread-124309] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:11:09.329 [DEBUG] [Thread-124309] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:11:09.329 [DEBUG] [Thread-124309] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:11:09.329 [DEBUG] [Thread-124309] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:11:09.329 [DEBUG] [Thread-124309] [transport.py] [_log()] Compression: none
2025-11-03T23:11:09.329 [DEBUG] [Thread-124309] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:11:09.387 [DEBUG] [Thread-124309] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:11:09.387 [DEBUG] [Thread-124309] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:11:09.387 [DEBUG] [Thread-124309] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:11:09.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:11:09.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:11:09.445 [DEBUG] [Thread-124309] [transport.py] [_log()] userauth is OK
2025-11-03T23:11:09.445 [DEBUG] [Thread-124309] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:11:09.445 [DEBUG] [Thread-124309] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:11:09.445 [DEBUG] [Thread-124309] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:11:09.445 [DEBUG] [Thread-124309] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:11:09.458 [INFO] [Thread-124309] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:11:09.459 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:11:09.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:11:10.289 [DEBUG] [Thread-124309] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:11:10.289 [DEBUG] [Thread-124309] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:11:10.337 [DEBUG] [Thread-124309] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:11:10.337 [DEBUG] [Thread-124309] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:11:10.346 [DEBUG] [Thread-124309] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:11:10.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:11:10.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:11:10.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:11:10.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:11:10.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:11:10.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:11:10.381 [DEBUG] [Thread-124309] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:11:15.148 [DEBUG] [Thread-124311 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:11:21.999 [DEBUG] [Thread-124312 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:11:30.196 [DEBUG] [Thread-124313 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:11:40.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:11:40.398 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:11:40.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:11:41.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 11, 17), 30.41, 11.5, 0.0, 15.23, 19.03, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:11:41.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:11:17
2025-11-03T23:11:41.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:11:41.451 [DEBUG] [Thread-124314] [transport.py] [_log()] starting thread (client mode): 0xed044f0
2025-11-03T23:11:41.451 [DEBUG] [Thread-124314] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:11:41.470 [DEBUG] [Thread-124314] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:11:41.470 [INFO] [Thread-124314] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:11:41.473 [DEBUG] [Thread-124314] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:11:41.473 [DEBUG] [Thread-124314] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:11:41.473 [DEBUG] [Thread-124314] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:11:41.473 [DEBUG] [Thread-124314] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:11:41.473 [DEBUG] [Thread-124314] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:11:41.473 [DEBUG] [Thread-124314] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:11:41.473 [DEBUG] [Thread-124314] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:11:41.473 [DEBUG] [Thread-124314] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:11:41.473 [DEBUG] [Thread-124314] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:11:41.474 [DEBUG] [Thread-124314] [transport.py] [_log()] client lang: <none>
2025-11-03T23:11:41.474 [DEBUG] [Thread-124314] [transport.py] [_log()] server lang: <none>
2025-11-03T23:11:41.474 [DEBUG] [Thread-124314] [transport.py] [_log()] kex follows: False
2025-11-03T23:11:41.474 [DEBUG] [Thread-124314] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:11:41.474 [DEBUG] [Thread-124314] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:11:41.474 [DEBUG] [Thread-124314] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:11:41.474 [DEBUG] [Thread-124314] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:11:41.474 [DEBUG] [Thread-124314] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:11:41.474 [DEBUG] [Thread-124314] [transport.py] [_log()] Compression: none
2025-11-03T23:11:41.474 [DEBUG] [Thread-124314] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:11:41.497 [DEBUG] [Thread-124314] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:11:41.498 [DEBUG] [Thread-124314] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:11:41.499 [DEBUG] [Thread-124314] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:11:41.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:11:41.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:11:41.502 [DEBUG] [Thread-124314] [transport.py] [_log()] userauth is OK
2025-11-03T23:11:41.502 [DEBUG] [Thread-124314] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:11:41.502 [DEBUG] [Thread-124314] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:11:41.502 [DEBUG] [Thread-124314] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:11:41.502 [DEBUG] [Thread-124314] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:11:41.526 [INFO] [Thread-124314] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:11:41.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:11:42.177 [DEBUG] [Thread-124314] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:11:42.177 [DEBUG] [Thread-124314] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:11:42.186 [DEBUG] [Thread-124314] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:11:42.219 [DEBUG] [Thread-124314] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:11:42.219 [DEBUG] [Thread-124314] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:11:42.221 [DEBUG] [Thread-124314] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:11:42.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:11:42.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:11:42.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:11:42.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:11:42.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:11:42.242 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:11:42.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:11:42.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:11:42.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:11:42.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.882738 -999.00  +18.90  14.39     17   -6.50 1 1 1 1 1     0    0 24.98 -35.48 ZNESW 13.7 14.4 297.0 18.0 19.0 -25.2 18.9 -24.2 18.7 -23.9 18.9 -24.8
2025-11-03T23:11:42.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:11:42.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:11:42.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.882738
2025-11-03T23:11:42.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:11:42.248 [DEBUG] [Thread-124314] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:11:42.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:11:42.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:11:42.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:11:42.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:11:42.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:11:17', tmtdew=30.41, humidity=11.5, cloud=0.0, wind=15.23, temperature=19.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:11:18', seeing=0.94, atlas_timestamp='2025-11-03T21:11:08.563', atlas_cloud=1, atlas_rain=1, zp_data=[-0.06325000000000003, 0.01025000000000098, 0.10224999999999973, 0.0045000000000001705, -0.13949999999999996, -0.18324999999999925, -0.5860000000000003, -0.12824999999999953, -0.0065000000000008384, -0.07399999999999984, 0.047750000000000625, 0.09600000000000009, 0.08399999999999963, -0.06175000000000175, -0.4245000000000001, -0.4090000000000007, 0.012750000000000483, 0.06199999999999939, 0.18399999999999928, 0.11324999999999896, 0.1374999999999993, -0.009250000000001535, -0.4607499999999991, -0.1122500000000013, 0.04299999999999926, 0.13750000000000107, 0.20725000000000016, 0.18849999999999945, 0.13199999999999967, 0.05600000000000094, 0.1280000000000019, 0.007500000000000284, 0.04974999999999952], zp_timestamp='2025-11-03T21:07:00')
2025-11-03T23:11:42.325 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:11:42.338 [DEBUG] [Thread-124317] [transport.py] [_log()] starting thread (client mode): 0xedc5c00
2025-11-03T23:11:42.338 [DEBUG] [Thread-124317] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:11:42.354 [DEBUG] [Thread-124317] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:11:42.354 [INFO] [Thread-124317] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:11:42.362 [DEBUG] [Thread-124317] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:11:42.363 [DEBUG] [Thread-124317] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:11:42.363 [DEBUG] [Thread-124317] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:11:42.363 [DEBUG] [Thread-124317] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:11:42.363 [DEBUG] [Thread-124317] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:11:42.363 [DEBUG] [Thread-124317] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:11:42.363 [DEBUG] [Thread-124317] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:11:42.364 [DEBUG] [Thread-124317] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:11:42.364 [DEBUG] [Thread-124317] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:11:42.364 [DEBUG] [Thread-124317] [transport.py] [_log()] client lang: <none>
2025-11-03T23:11:42.364 [DEBUG] [Thread-124317] [transport.py] [_log()] server lang: <none>
2025-11-03T23:11:42.364 [DEBUG] [Thread-124317] [transport.py] [_log()] kex follows: False
2025-11-03T23:11:42.364 [DEBUG] [Thread-124317] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:11:42.364 [DEBUG] [Thread-124317] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:11:42.364 [DEBUG] [Thread-124317] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:11:42.365 [DEBUG] [Thread-124317] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:11:42.365 [DEBUG] [Thread-124317] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:11:42.365 [DEBUG] [Thread-124317] [transport.py] [_log()] Compression: none
2025-11-03T23:11:42.365 [DEBUG] [Thread-124317] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:11:42.422 [DEBUG] [Thread-124317] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:11:42.422 [DEBUG] [Thread-124317] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:11:42.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:11:42.424 [DEBUG] [Thread-124317] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:11:42.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:11:42.481 [DEBUG] [Thread-124317] [transport.py] [_log()] userauth is OK
2025-11-03T23:11:42.482 [DEBUG] [Thread-124317] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:11:42.482 [DEBUG] [Thread-124317] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:11:42.482 [DEBUG] [Thread-124317] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:11:42.482 [DEBUG] [Thread-124317] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:11:42.502 [INFO] [Thread-124317] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:11:42.503 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:11:42.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:11:43.341 [DEBUG] [Thread-124317] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:11:43.342 [DEBUG] [Thread-124317] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:11:43.390 [DEBUG] [Thread-124317] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:11:43.390 [DEBUG] [Thread-124317] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:11:43.400 [DEBUG] [Thread-124317] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:11:43.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:11:43.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:11:43.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:11:43.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:11:43.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:11:43.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:11:43.437 [DEBUG] [Thread-124317] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:11:45.239 [DEBUG] [Thread-124319 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:12:00.307 [DEBUG] [Thread-124320 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:12:03.116 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:12:03.119 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:12:13.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:12:13.442 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:12:13.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:12:14.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 11, 50), 30.26, 12.05, 0.0, 15.72, 18.96, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:12:14.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:11:50
2025-11-03T23:12:14.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:12:14.522 [DEBUG] [Thread-124321] [transport.py] [_log()] starting thread (client mode): 0xed04880
2025-11-03T23:12:14.522 [DEBUG] [Thread-124321] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:12:14.523 [DEBUG] [Thread-124321] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:12:14.524 [INFO] [Thread-124321] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:12:14.527 [DEBUG] [Thread-124321] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:12:14.527 [DEBUG] [Thread-124321] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:12:14.527 [DEBUG] [Thread-124321] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:12:14.527 [DEBUG] [Thread-124321] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:12:14.527 [DEBUG] [Thread-124321] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:12:14.527 [DEBUG] [Thread-124321] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:12:14.527 [DEBUG] [Thread-124321] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:12:14.527 [DEBUG] [Thread-124321] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:12:14.527 [DEBUG] [Thread-124321] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:12:14.527 [DEBUG] [Thread-124321] [transport.py] [_log()] client lang: <none>
2025-11-03T23:12:14.527 [DEBUG] [Thread-124321] [transport.py] [_log()] server lang: <none>
2025-11-03T23:12:14.528 [DEBUG] [Thread-124321] [transport.py] [_log()] kex follows: False
2025-11-03T23:12:14.528 [DEBUG] [Thread-124321] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:12:14.528 [DEBUG] [Thread-124321] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:12:14.528 [DEBUG] [Thread-124321] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:12:14.528 [DEBUG] [Thread-124321] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:12:14.529 [DEBUG] [Thread-124321] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:12:14.529 [DEBUG] [Thread-124321] [transport.py] [_log()] Compression: none
2025-11-03T23:12:14.529 [DEBUG] [Thread-124321] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:12:14.561 [DEBUG] [Thread-124321] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:12:14.564 [DEBUG] [Thread-124321] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:12:14.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:12:14.567 [DEBUG] [Thread-124321] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:12:14.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:12:14.569 [DEBUG] [Thread-124321] [transport.py] [_log()] userauth is OK
2025-11-03T23:12:14.569 [DEBUG] [Thread-124321] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:12:14.569 [DEBUG] [Thread-124321] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:12:14.569 [DEBUG] [Thread-124321] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:12:14.569 [DEBUG] [Thread-124321] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:12:14.587 [INFO] [Thread-124321] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:12:14.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:12:15.187 [DEBUG] [Thread-124321] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:12:15.187 [DEBUG] [Thread-124321] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:12:15.188 [DEBUG] [Thread-124321] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:12:15.228 [DEBUG] [Thread-124321] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:12:15.229 [DEBUG] [Thread-124321] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:12:15.231 [DEBUG] [Thread-124321] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:12:15.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:12:15.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:12:15.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:12:15.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:12:15.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:12:15.251 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:12:15.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:12:15.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:12:15.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:12:15.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.883086 -999.00  +18.90  13.00     17   -6.60 1 1 1 1 1     0    0 24.80 -32.65 ZNESW 12.8 13.0 310.8 18.5 19.0 -25.2 18.9 -24.1 18.7 -23.9 19.0 -24.8
2025-11-03T23:12:15.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:12:15.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:12:15.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.883086
2025-11-03T23:12:15.257 [DEBUG] [Thread-124321] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:12:15.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:12:15.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:12:15.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:12:15.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:12:15.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:12:15.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:11:50', tmtdew=30.26, humidity=12.05, cloud=0.0, wind=15.72, temperature=18.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:11:51', seeing=0.96, atlas_timestamp='2025-11-03T21:11:38.630', atlas_cloud=1, atlas_rain=1, zp_data=[-0.052250000000000796, -0.0417500000000004, 0.06925000000000026, -0.0070000000000014495, 0.06550000000000011, -0.1222499999999993, -0.10599999999999987, -0.16274999999999906, 0.053999999999998494, -0.10599999999999987, 0.07324999999999982, 0.04400000000000048, 0.06349999999999945, -0.003249999999999531, -0.3910000000000018, -0.2810000000000006, -0.0547500000000003, 0.10749999999999993, 0.1349999999999998, 0.04224999999999923, 0.13349999999999795, 0.07724999999999937, -0.675749999999999, -0.31625000000000014, 0.06999999999999851, 0.15000000000000036, 0.161249999999999, 0.16650000000000098, 0.198500000000001, 0.10300000000000153, 0.17900000000000027, -0.0004999999999988347, 0.034250000000000114], zp_timestamp='2025-11-03T21:10:00')
2025-11-03T23:12:15.336 [DEBUG] [Thread-124324 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:12:15.339 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:12:15.351 [DEBUG] [Thread-124325] [transport.py] [_log()] starting thread (client mode): 0xed057b0
2025-11-03T23:12:15.351 [DEBUG] [Thread-124325] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:12:15.365 [DEBUG] [Thread-124325] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:12:15.365 [INFO] [Thread-124325] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:12:15.377 [DEBUG] [Thread-124325] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:12:15.377 [DEBUG] [Thread-124325] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:12:15.378 [DEBUG] [Thread-124325] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:12:15.378 [DEBUG] [Thread-124325] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:12:15.378 [DEBUG] [Thread-124325] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:12:15.378 [DEBUG] [Thread-124325] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:12:15.378 [DEBUG] [Thread-124325] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:12:15.378 [DEBUG] [Thread-124325] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:12:15.378 [DEBUG] [Thread-124325] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:12:15.378 [DEBUG] [Thread-124325] [transport.py] [_log()] client lang: <none>
2025-11-03T23:12:15.378 [DEBUG] [Thread-124325] [transport.py] [_log()] server lang: <none>
2025-11-03T23:12:15.378 [DEBUG] [Thread-124325] [transport.py] [_log()] kex follows: False
2025-11-03T23:12:15.378 [DEBUG] [Thread-124325] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:12:15.378 [DEBUG] [Thread-124325] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:12:15.378 [DEBUG] [Thread-124325] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:12:15.378 [DEBUG] [Thread-124325] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:12:15.378 [DEBUG] [Thread-124325] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:12:15.378 [DEBUG] [Thread-124325] [transport.py] [_log()] Compression: none
2025-11-03T23:12:15.378 [DEBUG] [Thread-124325] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:12:15.439 [DEBUG] [Thread-124325] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:12:15.440 [DEBUG] [Thread-124325] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:12:15.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:12:15.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:12:15.440 [DEBUG] [Thread-124325] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:12:15.505 [DEBUG] [Thread-124325] [transport.py] [_log()] userauth is OK
2025-11-03T23:12:15.505 [DEBUG] [Thread-124325] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:12:15.505 [DEBUG] [Thread-124325] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:12:15.505 [DEBUG] [Thread-124325] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:12:15.505 [DEBUG] [Thread-124325] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:12:15.523 [INFO] [Thread-124325] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:12:15.524 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:12:15.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:12:16.363 [DEBUG] [Thread-124325] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:12:16.363 [DEBUG] [Thread-124325] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:12:16.411 [DEBUG] [Thread-124325] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:12:16.411 [DEBUG] [Thread-124325] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:12:16.420 [DEBUG] [Thread-124325] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:12:16.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:12:16.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:12:16.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:12:16.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:12:16.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:12:16.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:12:16.453 [DEBUG] [Thread-124325] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:12:22.383 [DEBUG] [Thread-124327 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:12:22.935 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:12:30.271 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:12:30.406 [DEBUG] [Thread-124328 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:12:34.374 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:12:45.440 [DEBUG] [Thread-124329 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:12:46.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:12:46.463 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:12:46.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:12:47.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 12, 23), 30.29, 12.0, 0.0, 14.89, 18.88, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:12:47.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:12:23
2025-11-03T23:12:47.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:12:47.530 [DEBUG] [Thread-124330] [transport.py] [_log()] starting thread (client mode): 0xed362c0
2025-11-03T23:12:47.530 [DEBUG] [Thread-124330] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:12:47.551 [DEBUG] [Thread-124330] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:12:47.551 [INFO] [Thread-124330] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:12:47.554 [DEBUG] [Thread-124330] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:12:47.554 [DEBUG] [Thread-124330] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:12:47.554 [DEBUG] [Thread-124330] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:12:47.554 [DEBUG] [Thread-124330] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:12:47.554 [DEBUG] [Thread-124330] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:12:47.554 [DEBUG] [Thread-124330] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:12:47.554 [DEBUG] [Thread-124330] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:12:47.554 [DEBUG] [Thread-124330] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:12:47.554 [DEBUG] [Thread-124330] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:12:47.554 [DEBUG] [Thread-124330] [transport.py] [_log()] client lang: <none>
2025-11-03T23:12:47.554 [DEBUG] [Thread-124330] [transport.py] [_log()] server lang: <none>
2025-11-03T23:12:47.554 [DEBUG] [Thread-124330] [transport.py] [_log()] kex follows: False
2025-11-03T23:12:47.554 [DEBUG] [Thread-124330] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:12:47.555 [DEBUG] [Thread-124330] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:12:47.555 [DEBUG] [Thread-124330] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:12:47.555 [DEBUG] [Thread-124330] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:12:47.555 [DEBUG] [Thread-124330] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:12:47.555 [DEBUG] [Thread-124330] [transport.py] [_log()] Compression: none
2025-11-03T23:12:47.555 [DEBUG] [Thread-124330] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:12:47.571 [DEBUG] [Thread-124330] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:12:47.571 [DEBUG] [Thread-124330] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:12:47.572 [DEBUG] [Thread-124330] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:12:47.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:12:47.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:12:47.574 [DEBUG] [Thread-124330] [transport.py] [_log()] userauth is OK
2025-11-03T23:12:47.574 [DEBUG] [Thread-124330] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:12:47.575 [DEBUG] [Thread-124330] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:12:47.575 [DEBUG] [Thread-124330] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:12:47.575 [DEBUG] [Thread-124330] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:12:47.599 [INFO] [Thread-124330] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:12:47.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:12:48.244 [DEBUG] [Thread-124330] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:12:48.244 [DEBUG] [Thread-124330] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:12:48.244 [DEBUG] [Thread-124330] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:12:48.285 [DEBUG] [Thread-124330] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:12:48.285 [DEBUG] [Thread-124330] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:12:48.287 [DEBUG] [Thread-124330] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:12:48.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:12:48.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:12:48.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:12:48.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:12:48.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:12:48.305 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:12:48.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:12:48.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:12:48.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:12:48.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.883433 -999.00  +18.80  12.21     17   -6.50 1 1 1 1 1     0    0 24.61 -33.43 ZNESW 13.7 12.2 311.6 18.7 19.0 -25.3 18.9 -24.3 18.6 -23.9 18.9 -24.8
2025-11-03T23:12:48.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:12:48.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:12:48.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.883433
2025-11-03T23:12:48.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:12:48.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:12:48.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:12:48.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:12:48.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:12:48.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:12:23', tmtdew=30.29, humidity=12.0, cloud=0.0, wind=14.89, temperature=18.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:12:23', seeing=0.96, atlas_timestamp='2025-11-03T21:12:08.611', atlas_cloud=1, atlas_rain=1, zp_data=[-0.052250000000000796, -0.0417500000000004, 0.06925000000000026, -0.0070000000000014495, 0.06550000000000011, -0.1222499999999993, -0.10599999999999987, -0.16274999999999906, 0.053999999999998494, -0.10599999999999987, 0.07324999999999982, 0.04400000000000048, 0.06349999999999945, -0.003249999999999531, -0.3910000000000018, -0.2810000000000006, -0.0547500000000003, 0.10749999999999993, 0.1349999999999998, 0.04224999999999923, 0.13349999999999795, 0.07724999999999937, -0.675749999999999, -0.31625000000000014, 0.06999999999999851, 0.15000000000000036, 0.161249999999999, 0.16650000000000098, 0.198500000000001, 0.10300000000000153, 0.17900000000000027, -0.0004999999999988347, 0.034250000000000114], zp_timestamp='2025-11-03T21:10:00')
2025-11-03T23:12:48.306 [DEBUG] [Thread-124330] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:12:48.379 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:12:48.391 [DEBUG] [Thread-124333] [transport.py] [_log()] starting thread (client mode): 0xed40fd0
2025-11-03T23:12:48.391 [DEBUG] [Thread-124333] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:12:48.407 [DEBUG] [Thread-124333] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:12:48.407 [INFO] [Thread-124333] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:12:48.416 [DEBUG] [Thread-124333] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:12:48.416 [DEBUG] [Thread-124333] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:12:48.416 [DEBUG] [Thread-124333] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:12:48.416 [DEBUG] [Thread-124333] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:12:48.416 [DEBUG] [Thread-124333] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:12:48.416 [DEBUG] [Thread-124333] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:12:48.416 [DEBUG] [Thread-124333] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:12:48.416 [DEBUG] [Thread-124333] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:12:48.416 [DEBUG] [Thread-124333] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:12:48.416 [DEBUG] [Thread-124333] [transport.py] [_log()] client lang: <none>
2025-11-03T23:12:48.416 [DEBUG] [Thread-124333] [transport.py] [_log()] server lang: <none>
2025-11-03T23:12:48.416 [DEBUG] [Thread-124333] [transport.py] [_log()] kex follows: False
2025-11-03T23:12:48.416 [DEBUG] [Thread-124333] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:12:48.416 [DEBUG] [Thread-124333] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:12:48.416 [DEBUG] [Thread-124333] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:12:48.416 [DEBUG] [Thread-124333] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:12:48.416 [DEBUG] [Thread-124333] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:12:48.416 [DEBUG] [Thread-124333] [transport.py] [_log()] Compression: none
2025-11-03T23:12:48.416 [DEBUG] [Thread-124333] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:12:48.473 [DEBUG] [Thread-124333] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:12:48.473 [DEBUG] [Thread-124333] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:12:48.473 [DEBUG] [Thread-124333] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:12:48.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:12:48.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:12:48.530 [DEBUG] [Thread-124333] [transport.py] [_log()] userauth is OK
2025-11-03T23:12:48.530 [DEBUG] [Thread-124333] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:12:48.530 [DEBUG] [Thread-124333] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:12:48.530 [DEBUG] [Thread-124333] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:12:48.530 [DEBUG] [Thread-124333] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:12:48.544 [INFO] [Thread-124333] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:12:48.544 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:12:48.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:12:49.389 [DEBUG] [Thread-124333] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:12:49.389 [DEBUG] [Thread-124333] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:12:49.437 [DEBUG] [Thread-124333] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:12:49.437 [DEBUG] [Thread-124333] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:12:49.446 [DEBUG] [Thread-124333] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:12:49.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:12:49.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:12:49.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:12:49.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:12:49.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:12:49.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:12:49.479 [DEBUG] [Thread-124333] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:13:00.470 [DEBUG] [Thread-124335 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:13:03.330 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:13:03.331 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:13:15.569 [DEBUG] [Thread-124336 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:13:19.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:13:19.501 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:13:19.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:13:23.261 [DEBUG] [Thread-124337 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:13:24.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 12, 55), 30.22, 12.08, 0.0, 15.79, 18.95, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:13:24.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:12:55
2025-11-03T23:13:24.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:13:24.893 [DEBUG] [Thread-124338] [transport.py] [_log()] starting thread (client mode): 0xed5dff0
2025-11-03T23:13:24.893 [DEBUG] [Thread-124338] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:13:24.913 [DEBUG] [Thread-124338] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:13:24.913 [INFO] [Thread-124338] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:13:24.916 [DEBUG] [Thread-124338] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:13:24.916 [DEBUG] [Thread-124338] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:13:24.916 [DEBUG] [Thread-124338] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:13:24.916 [DEBUG] [Thread-124338] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:13:24.916 [DEBUG] [Thread-124338] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:13:24.916 [DEBUG] [Thread-124338] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:13:24.916 [DEBUG] [Thread-124338] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:13:24.916 [DEBUG] [Thread-124338] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:13:24.916 [DEBUG] [Thread-124338] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:13:24.916 [DEBUG] [Thread-124338] [transport.py] [_log()] client lang: <none>
2025-11-03T23:13:24.916 [DEBUG] [Thread-124338] [transport.py] [_log()] server lang: <none>
2025-11-03T23:13:24.916 [DEBUG] [Thread-124338] [transport.py] [_log()] kex follows: False
2025-11-03T23:13:24.916 [DEBUG] [Thread-124338] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:13:24.916 [DEBUG] [Thread-124338] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:13:24.916 [DEBUG] [Thread-124338] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:13:24.916 [DEBUG] [Thread-124338] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:13:24.916 [DEBUG] [Thread-124338] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:13:24.916 [DEBUG] [Thread-124338] [transport.py] [_log()] Compression: none
2025-11-03T23:13:24.916 [DEBUG] [Thread-124338] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:13:24.934 [DEBUG] [Thread-124338] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:13:24.935 [DEBUG] [Thread-124338] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:13:24.936 [DEBUG] [Thread-124338] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:13:24.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:13:24.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:13:24.978 [DEBUG] [Thread-124338] [transport.py] [_log()] userauth is OK
2025-11-03T23:13:24.978 [DEBUG] [Thread-124338] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:13:24.979 [DEBUG] [Thread-124338] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:13:24.979 [DEBUG] [Thread-124338] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:13:24.979 [DEBUG] [Thread-124338] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:13:25.010 [INFO] [Thread-124338] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:13:25.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:13:25.629 [DEBUG] [Thread-124338] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:13:25.629 [DEBUG] [Thread-124338] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:13:25.629 [DEBUG] [Thread-124338] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:13:25.670 [DEBUG] [Thread-124338] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:13:25.670 [DEBUG] [Thread-124338] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:13:25.674 [DEBUG] [Thread-124338] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:13:25.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:13:25.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:13:25.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:13:25.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:13:25.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:13:25.700 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:13:25.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:13:25.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:13:25.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:13:25.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.884127 -999.00  +19.00  14.19     17   -6.50 1 1 1 1 1     0    0 24.71 -28.27 ZNESW 15.7 14.2 310.8 20.6 19.0 -25.2 18.9 -24.2 18.7 -24.0 18.9 -24.9
2025-11-03T23:13:25.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:13:25.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:13:25.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.884127
2025-11-03T23:13:25.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:13:25.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:13:25.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:13:25.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:13:25.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:13:25.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:12:55', tmtdew=30.22, humidity=12.08, cloud=0.0, wind=15.79, temperature=18.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:12:56', seeing=1.22, atlas_timestamp='2025-11-03T21:13:08.573', atlas_cloud=1, atlas_rain=1, zp_data=[-0.052250000000000796, -0.0417500000000004, 0.06925000000000026, -0.0070000000000014495, 0.06550000000000011, -0.1222499999999993, -0.10599999999999987, -0.16274999999999906, 0.053999999999998494, -0.10599999999999987, 0.07324999999999982, 0.04400000000000048, 0.06349999999999945, -0.003249999999999531, -0.3910000000000018, -0.2810000000000006, -0.0547500000000003, 0.10749999999999993, 0.1349999999999998, 0.04224999999999923, 0.13349999999999795, 0.07724999999999937, -0.675749999999999, -0.31625000000000014, 0.06999999999999851, 0.15000000000000036, 0.161249999999999, 0.16650000000000098, 0.198500000000001, 0.10300000000000153, 0.17900000000000027, -0.0004999999999988347, 0.034250000000000114], zp_timestamp='2025-11-03T21:10:00')
2025-11-03T23:13:25.703 [DEBUG] [Thread-124338] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:13:25.786 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:13:25.801 [DEBUG] [Thread-124341] [transport.py] [_log()] starting thread (client mode): 0xedb3850
2025-11-03T23:13:25.801 [DEBUG] [Thread-124341] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:13:25.817 [DEBUG] [Thread-124341] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:13:25.817 [INFO] [Thread-124341] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:13:25.825 [DEBUG] [Thread-124341] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:13:25.825 [DEBUG] [Thread-124341] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:13:25.825 [DEBUG] [Thread-124341] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:13:25.825 [DEBUG] [Thread-124341] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:13:25.825 [DEBUG] [Thread-124341] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:13:25.825 [DEBUG] [Thread-124341] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:13:25.826 [DEBUG] [Thread-124341] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:13:25.826 [DEBUG] [Thread-124341] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:13:25.826 [DEBUG] [Thread-124341] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:13:25.826 [DEBUG] [Thread-124341] [transport.py] [_log()] client lang: <none>
2025-11-03T23:13:25.826 [DEBUG] [Thread-124341] [transport.py] [_log()] server lang: <none>
2025-11-03T23:13:25.826 [DEBUG] [Thread-124341] [transport.py] [_log()] kex follows: False
2025-11-03T23:13:25.826 [DEBUG] [Thread-124341] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:13:25.826 [DEBUG] [Thread-124341] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:13:25.826 [DEBUG] [Thread-124341] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:13:25.826 [DEBUG] [Thread-124341] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:13:25.826 [DEBUG] [Thread-124341] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:13:25.826 [DEBUG] [Thread-124341] [transport.py] [_log()] Compression: none
2025-11-03T23:13:25.826 [DEBUG] [Thread-124341] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:13:25.885 [DEBUG] [Thread-124341] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:13:25.886 [DEBUG] [Thread-124341] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:13:25.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:13:25.887 [DEBUG] [Thread-124341] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:13:25.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:13:25.942 [DEBUG] [Thread-124341] [transport.py] [_log()] userauth is OK
2025-11-03T23:13:25.943 [DEBUG] [Thread-124341] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:13:25.943 [DEBUG] [Thread-124341] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:13:25.943 [DEBUG] [Thread-124341] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:13:25.943 [DEBUG] [Thread-124341] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:13:25.962 [INFO] [Thread-124341] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:13:25.962 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:13:25.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:13:26.803 [DEBUG] [Thread-124341] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:13:26.803 [DEBUG] [Thread-124341] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:13:26.855 [DEBUG] [Thread-124341] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:13:26.855 [DEBUG] [Thread-124341] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:13:26.866 [DEBUG] [Thread-124341] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:13:26.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:13:26.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:13:26.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:13:26.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:13:26.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:13:26.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:13:26.904 [DEBUG] [Thread-124341] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:13:30.602 [DEBUG] [Thread-124343 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:13:45.637 [DEBUG] [Thread-124344 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:13:56.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:13:56.910 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:13:56.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:13:57.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 13, 27), 30.24, 12.06, 0.0, 15.86, 18.95, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:13:57.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:13:27
2025-11-03T23:13:57.885 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:13:57.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:13:58.073 [DEBUG] [Thread-124345] [transport.py] [_log()] starting thread (client mode): 0xed056c0
2025-11-03T23:13:58.074 [DEBUG] [Thread-124345] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:13:58.083 [DEBUG] [Thread-124345] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:13:58.084 [INFO] [Thread-124345] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:13:58.089 [DEBUG] [Thread-124345] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:13:58.089 [DEBUG] [Thread-124345] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:13:58.089 [DEBUG] [Thread-124345] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:13:58.089 [DEBUG] [Thread-124345] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:13:58.089 [DEBUG] [Thread-124345] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:13:58.090 [DEBUG] [Thread-124345] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:13:58.090 [DEBUG] [Thread-124345] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:13:58.090 [DEBUG] [Thread-124345] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:13:58.090 [DEBUG] [Thread-124345] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:13:58.090 [DEBUG] [Thread-124345] [transport.py] [_log()] client lang: <none>
2025-11-03T23:13:58.090 [DEBUG] [Thread-124345] [transport.py] [_log()] server lang: <none>
2025-11-03T23:13:58.090 [DEBUG] [Thread-124345] [transport.py] [_log()] kex follows: False
2025-11-03T23:13:58.090 [DEBUG] [Thread-124345] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:13:58.091 [DEBUG] [Thread-124345] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:13:58.091 [DEBUG] [Thread-124345] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:13:58.091 [DEBUG] [Thread-124345] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:13:58.091 [DEBUG] [Thread-124345] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:13:58.091 [DEBUG] [Thread-124345] [transport.py] [_log()] Compression: none
2025-11-03T23:13:58.092 [DEBUG] [Thread-124345] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:13:58.134 [DEBUG] [Thread-124345] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:13:58.140 [DEBUG] [Thread-124345] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:13:58.142 [DEBUG] [Thread-124345] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:13:58.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:13:58.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:13:58.147 [DEBUG] [Thread-124345] [transport.py] [_log()] userauth is OK
2025-11-03T23:13:58.147 [DEBUG] [Thread-124345] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:13:58.147 [DEBUG] [Thread-124345] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:13:58.147 [DEBUG] [Thread-124345] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:13:58.147 [DEBUG] [Thread-124345] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:13:58.186 [INFO] [Thread-124345] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:13:58.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:13:58.834 [DEBUG] [Thread-124345] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:13:58.834 [DEBUG] [Thread-124345] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:13:58.843 [DEBUG] [Thread-124345] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:13:58.874 [DEBUG] [Thread-124345] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:13:58.874 [DEBUG] [Thread-124345] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:13:58.877 [DEBUG] [Thread-124345] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:13:58.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:13:58.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:13:58.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:13:58.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:13:58.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:13:58.896 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:13:58.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:13:58.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:13:58.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:13:58.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.884474 -999.00  +19.00  15.26     17   -6.50 1 1 1 1 1     0    0 24.56 -27.55 ZNESW 13.4 15.3 311.2 20.6 19.0 -25.3 18.9 -24.1 18.7 -23.5 18.9 -24.9
2025-11-03T23:13:58.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:13:58.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:13:58.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.884474
2025-11-03T23:13:58.897 [DEBUG] [Thread-124345] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:13:58.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:13:58.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:13:58.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:13:58.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:13:58.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:13:58.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:13:27', tmtdew=30.24, humidity=12.06, cloud=0.0, wind=15.86, temperature=18.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:13:28', seeing=1.22, atlas_timestamp='2025-11-03T21:13:38.554', atlas_cloud=1, atlas_rain=1, zp_data=[-0.052250000000000796, -0.0417500000000004, 0.06925000000000026, -0.0070000000000014495, 0.06550000000000011, -0.1222499999999993, -0.10599999999999987, -0.16274999999999906, 0.053999999999998494, -0.10599999999999987, 0.07324999999999982, 0.04400000000000048, 0.06349999999999945, -0.003249999999999531, -0.3910000000000018, -0.2810000000000006, -0.0547500000000003, 0.10749999999999993, 0.1349999999999998, 0.04224999999999923, 0.13349999999999795, 0.07724999999999937, -0.675749999999999, -0.31625000000000014, 0.06999999999999851, 0.15000000000000036, 0.161249999999999, 0.16650000000000098, 0.198500000000001, 0.10300000000000153, 0.17900000000000027, -0.0004999999999988347, 0.034250000000000114], zp_timestamp='2025-11-03T21:10:00')
2025-11-03T23:13:58.978 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:13:58.991 [DEBUG] [Thread-124348] [transport.py] [_log()] starting thread (client mode): 0xed05870
2025-11-03T23:13:58.992 [DEBUG] [Thread-124348] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:13:59.008 [DEBUG] [Thread-124348] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:13:59.008 [INFO] [Thread-124348] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:13:59.015 [DEBUG] [Thread-124348] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:13:59.015 [DEBUG] [Thread-124348] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:13:59.015 [DEBUG] [Thread-124348] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:13:59.015 [DEBUG] [Thread-124348] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:13:59.015 [DEBUG] [Thread-124348] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:13:59.015 [DEBUG] [Thread-124348] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:13:59.015 [DEBUG] [Thread-124348] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:13:59.015 [DEBUG] [Thread-124348] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:13:59.015 [DEBUG] [Thread-124348] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:13:59.015 [DEBUG] [Thread-124348] [transport.py] [_log()] client lang: <none>
2025-11-03T23:13:59.015 [DEBUG] [Thread-124348] [transport.py] [_log()] server lang: <none>
2025-11-03T23:13:59.015 [DEBUG] [Thread-124348] [transport.py] [_log()] kex follows: False
2025-11-03T23:13:59.015 [DEBUG] [Thread-124348] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:13:59.015 [DEBUG] [Thread-124348] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:13:59.015 [DEBUG] [Thread-124348] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:13:59.015 [DEBUG] [Thread-124348] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:13:59.015 [DEBUG] [Thread-124348] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:13:59.015 [DEBUG] [Thread-124348] [transport.py] [_log()] Compression: none
2025-11-03T23:13:59.015 [DEBUG] [Thread-124348] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:13:59.071 [DEBUG] [Thread-124348] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:13:59.072 [DEBUG] [Thread-124348] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:13:59.072 [DEBUG] [Thread-124348] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:13:59.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:13:59.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:13:59.129 [DEBUG] [Thread-124348] [transport.py] [_log()] userauth is OK
2025-11-03T23:13:59.129 [DEBUG] [Thread-124348] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:13:59.129 [DEBUG] [Thread-124348] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:13:59.129 [DEBUG] [Thread-124348] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:13:59.129 [DEBUG] [Thread-124348] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:13:59.142 [INFO] [Thread-124348] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:13:59.143 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:13:59.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:13:59.968 [DEBUG] [Thread-124348] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:13:59.969 [DEBUG] [Thread-124348] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:14:00.018 [DEBUG] [Thread-124348] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:14:00.018 [DEBUG] [Thread-124348] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:14:00.027 [DEBUG] [Thread-124348] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:14:00.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:14:00.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:14:00.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:14:00.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:14:00.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:14:00.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:14:00.064 [DEBUG] [Thread-124348] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:14:00.669 [DEBUG] [Thread-124350 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:14:03.534 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:14:03.535 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:14:04.932 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:14:09.044 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:14:15.720 [DEBUG] [Thread-124351 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:14:24.944 [DEBUG] [Thread-124352 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:14:30.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:14:30.067 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:14:30.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:14:30.744 [DEBUG] [Thread-124353 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:14:30.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 14), 30.2, 12.05, 0.0, 15.32, 18.9, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:14:30.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:14:00
2025-11-03T23:14:30.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:14:31.125 [DEBUG] [Thread-124354] [transport.py] [_log()] starting thread (client mode): 0x1174e830
2025-11-03T23:14:31.126 [DEBUG] [Thread-124354] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:14:31.145 [DEBUG] [Thread-124354] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:14:31.145 [INFO] [Thread-124354] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:14:31.148 [DEBUG] [Thread-124354] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:14:31.148 [DEBUG] [Thread-124354] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:14:31.148 [DEBUG] [Thread-124354] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:14:31.148 [DEBUG] [Thread-124354] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:14:31.148 [DEBUG] [Thread-124354] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:14:31.148 [DEBUG] [Thread-124354] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:14:31.148 [DEBUG] [Thread-124354] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:14:31.148 [DEBUG] [Thread-124354] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:14:31.149 [DEBUG] [Thread-124354] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:14:31.149 [DEBUG] [Thread-124354] [transport.py] [_log()] client lang: <none>
2025-11-03T23:14:31.149 [DEBUG] [Thread-124354] [transport.py] [_log()] server lang: <none>
2025-11-03T23:14:31.149 [DEBUG] [Thread-124354] [transport.py] [_log()] kex follows: False
2025-11-03T23:14:31.149 [DEBUG] [Thread-124354] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:14:31.149 [DEBUG] [Thread-124354] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:14:31.149 [DEBUG] [Thread-124354] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:14:31.149 [DEBUG] [Thread-124354] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:14:31.149 [DEBUG] [Thread-124354] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:14:31.149 [DEBUG] [Thread-124354] [transport.py] [_log()] Compression: none
2025-11-03T23:14:31.149 [DEBUG] [Thread-124354] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:14:31.167 [DEBUG] [Thread-124354] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:14:31.169 [DEBUG] [Thread-124354] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:14:31.169 [DEBUG] [Thread-124354] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:14:31.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:14:31.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:14:31.210 [DEBUG] [Thread-124354] [transport.py] [_log()] userauth is OK
2025-11-03T23:14:31.210 [DEBUG] [Thread-124354] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:14:31.210 [DEBUG] [Thread-124354] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:14:31.210 [DEBUG] [Thread-124354] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:14:31.210 [DEBUG] [Thread-124354] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:14:31.237 [INFO] [Thread-124354] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:14:31.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:14:31.902 [DEBUG] [Thread-124354] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:14:31.911 [DEBUG] [Thread-124354] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:14:31.911 [DEBUG] [Thread-124354] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:14:31.944 [DEBUG] [Thread-124354] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:14:31.944 [DEBUG] [Thread-124354] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:14:31.948 [DEBUG] [Thread-124354] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:14:31.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:14:31.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:14:31.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:14:31.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:14:31.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:14:31.969 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:14:31.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:14:31.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:14:31.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:14:31.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.884822 -999.00  +18.90  16.25     17   -6.50 1 1 1 1 1     0    0 24.77 -27.74 ZNESW 15.3 16.2 308.0 17.9 18.9 -25.2 18.9 -24.3 18.7 -23.9 18.9 -24.8
2025-11-03T23:14:31.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:14:31.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:14:31.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.884822
2025-11-03T23:14:31.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:14:31.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:14:31.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:14:31.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:14:31.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:14:31.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:14:00', tmtdew=30.2, humidity=12.05, cloud=0.0, wind=15.32, temperature=18.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:14:01', seeing=1.14, atlas_timestamp='2025-11-03T21:14:08.621', atlas_cloud=1, atlas_rain=1, zp_data=[-0.052250000000000796, -0.0417500000000004, 0.06925000000000026, -0.0070000000000014495, 0.06550000000000011, -0.1222499999999993, -0.10599999999999987, -0.16274999999999906, 0.053999999999998494, -0.10599999999999987, 0.07324999999999982, 0.04400000000000048, 0.06349999999999945, -0.003249999999999531, -0.3910000000000018, -0.2810000000000006, -0.0547500000000003, 0.10749999999999993, 0.1349999999999998, 0.04224999999999923, 0.13349999999999795, 0.07724999999999937, -0.675749999999999, -0.31625000000000014, 0.06999999999999851, 0.15000000000000036, 0.161249999999999, 0.16650000000000098, 0.198500000000001, 0.10300000000000153, 0.17900000000000027, -0.0004999999999988347, 0.034250000000000114], zp_timestamp='2025-11-03T21:10:00')
2025-11-03T23:14:31.977 [DEBUG] [Thread-124354] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:14:32.061 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:14:32.073 [DEBUG] [Thread-124357] [transport.py] [_log()] starting thread (client mode): 0x1174d3c0
2025-11-03T23:14:32.073 [DEBUG] [Thread-124357] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:14:32.089 [DEBUG] [Thread-124357] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:14:32.089 [INFO] [Thread-124357] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:14:32.099 [DEBUG] [Thread-124357] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:14:32.100 [DEBUG] [Thread-124357] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:14:32.100 [DEBUG] [Thread-124357] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:14:32.100 [DEBUG] [Thread-124357] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:14:32.100 [DEBUG] [Thread-124357] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:14:32.100 [DEBUG] [Thread-124357] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:14:32.100 [DEBUG] [Thread-124357] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:14:32.100 [DEBUG] [Thread-124357] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:14:32.100 [DEBUG] [Thread-124357] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:14:32.100 [DEBUG] [Thread-124357] [transport.py] [_log()] client lang: <none>
2025-11-03T23:14:32.100 [DEBUG] [Thread-124357] [transport.py] [_log()] server lang: <none>
2025-11-03T23:14:32.100 [DEBUG] [Thread-124357] [transport.py] [_log()] kex follows: False
2025-11-03T23:14:32.100 [DEBUG] [Thread-124357] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:14:32.100 [DEBUG] [Thread-124357] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:14:32.101 [DEBUG] [Thread-124357] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:14:32.101 [DEBUG] [Thread-124357] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:14:32.101 [DEBUG] [Thread-124357] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:14:32.101 [DEBUG] [Thread-124357] [transport.py] [_log()] Compression: none
2025-11-03T23:14:32.101 [DEBUG] [Thread-124357] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:14:32.166 [DEBUG] [Thread-124357] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:14:32.166 [DEBUG] [Thread-124357] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:14:32.167 [DEBUG] [Thread-124357] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:14:32.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:14:32.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:14:32.225 [DEBUG] [Thread-124357] [transport.py] [_log()] userauth is OK
2025-11-03T23:14:32.226 [DEBUG] [Thread-124357] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:14:32.226 [DEBUG] [Thread-124357] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:14:32.226 [DEBUG] [Thread-124357] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:14:32.226 [DEBUG] [Thread-124357] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:14:32.245 [INFO] [Thread-124357] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:14:32.245 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:14:32.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:14:33.136 [DEBUG] [Thread-124357] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:14:33.137 [DEBUG] [Thread-124357] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:14:33.178 [DEBUG] [Thread-124357] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:14:33.179 [DEBUG] [Thread-124357] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:14:33.188 [DEBUG] [Thread-124357] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:14:33.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:14:33.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:14:33.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:14:33.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:14:33.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:14:33.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:14:33.222 [DEBUG] [Thread-124357] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:14:45.772 [DEBUG] [Thread-124359 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:15:00.821 [DEBUG] [Thread-124360 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:15:03.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:15:03.216 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:15:03.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:15:03.734 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:15:03.735 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:15:03.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 14, 33), 30.22, 12.03, 0.0, 15.3, 18.91, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:15:03.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:14:33
2025-11-03T23:15:04.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:15:04.216 [DEBUG] [Thread-124361] [transport.py] [_log()] starting thread (client mode): 0xedb2740
2025-11-03T23:15:04.216 [DEBUG] [Thread-124361] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:15:04.237 [DEBUG] [Thread-124361] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:15:04.237 [INFO] [Thread-124361] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:15:04.240 [DEBUG] [Thread-124361] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:15:04.241 [DEBUG] [Thread-124361] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:15:04.241 [DEBUG] [Thread-124361] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:15:04.241 [DEBUG] [Thread-124361] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:15:04.241 [DEBUG] [Thread-124361] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:15:04.241 [DEBUG] [Thread-124361] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:15:04.241 [DEBUG] [Thread-124361] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:15:04.241 [DEBUG] [Thread-124361] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:15:04.241 [DEBUG] [Thread-124361] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:15:04.241 [DEBUG] [Thread-124361] [transport.py] [_log()] client lang: <none>
2025-11-03T23:15:04.241 [DEBUG] [Thread-124361] [transport.py] [_log()] server lang: <none>
2025-11-03T23:15:04.241 [DEBUG] [Thread-124361] [transport.py] [_log()] kex follows: False
2025-11-03T23:15:04.241 [DEBUG] [Thread-124361] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:15:04.241 [DEBUG] [Thread-124361] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:15:04.241 [DEBUG] [Thread-124361] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:15:04.241 [DEBUG] [Thread-124361] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:15:04.241 [DEBUG] [Thread-124361] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:15:04.241 [DEBUG] [Thread-124361] [transport.py] [_log()] Compression: none
2025-11-03T23:15:04.241 [DEBUG] [Thread-124361] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:15:04.260 [DEBUG] [Thread-124361] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:15:04.260 [DEBUG] [Thread-124361] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:15:04.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:15:04.261 [DEBUG] [Thread-124361] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:15:04.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:15:04.262 [DEBUG] [Thread-124361] [transport.py] [_log()] userauth is OK
2025-11-03T23:15:04.262 [DEBUG] [Thread-124361] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:15:04.262 [DEBUG] [Thread-124361] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:15:04.262 [DEBUG] [Thread-124361] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:15:04.262 [DEBUG] [Thread-124361] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:15:04.282 [INFO] [Thread-124361] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:15:04.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:15:10.018 [DEBUG] [Thread-124361] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:15:10.018 [DEBUG] [Thread-124361] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:15:10.020 [DEBUG] [Thread-124361] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:15:10.058 [DEBUG] [Thread-124361] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:15:10.059 [DEBUG] [Thread-124361] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:15:10.064 [DEBUG] [Thread-124361] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:15:10.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:15:10.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:15:10.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:15:10.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:15:10.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:15:10.198 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:15:10.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:15:10.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:15:10.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:15:10.208 [DEBUG] [Thread-124361] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:15:10.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.885169 -999.00  +18.90  12.96     17   -6.50 1 1 1 1 1     0    0 25.07 -27.35 ZNESW 14.4 13.0 312.8 18.7 18.9 -25.1 18.9 -24.1 18.7 -23.8 18.9 -24.8
2025-11-03T23:15:10.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:15:10.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:15:10.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.885169
2025-11-03T23:15:10.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:15:10.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:15:10.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:15:10.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:15:10.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:15:10.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:14:33', tmtdew=30.22, humidity=12.03, cloud=0.0, wind=15.3, temperature=18.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:14:33', seeing=1.14, atlas_timestamp='2025-11-03T21:14:38.602', atlas_cloud=1, atlas_rain=1, zp_data=[-0.052250000000000796, -0.0417500000000004, 0.06925000000000026, -0.0070000000000014495, 0.06550000000000011, -0.1222499999999993, -0.10599999999999987, -0.16274999999999906, 0.053999999999998494, -0.10599999999999987, 0.07324999999999982, 0.04400000000000048, 0.06349999999999945, -0.003249999999999531, -0.3910000000000018, -0.2810000000000006, -0.0547500000000003, 0.10749999999999993, 0.1349999999999998, 0.04224999999999923, 0.13349999999999795, 0.07724999999999937, -0.675749999999999, -0.31625000000000014, 0.06999999999999851, 0.15000000000000036, 0.161249999999999, 0.16650000000000098, 0.198500000000001, 0.10300000000000153, 0.17900000000000027, -0.0004999999999988347, 0.034250000000000114], zp_timestamp='2025-11-03T21:14:00')
2025-11-03T23:15:10.362 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:15:10.374 [DEBUG] [Thread-124364] [transport.py] [_log()] starting thread (client mode): 0xedb0dc0
2025-11-03T23:15:10.374 [DEBUG] [Thread-124364] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:15:10.388 [DEBUG] [Thread-124364] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:15:10.388 [INFO] [Thread-124364] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:15:10.396 [DEBUG] [Thread-124364] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:15:10.397 [DEBUG] [Thread-124364] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:15:10.397 [DEBUG] [Thread-124364] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:15:10.397 [DEBUG] [Thread-124364] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:15:10.397 [DEBUG] [Thread-124364] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:15:10.397 [DEBUG] [Thread-124364] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:15:10.397 [DEBUG] [Thread-124364] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:15:10.397 [DEBUG] [Thread-124364] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:15:10.397 [DEBUG] [Thread-124364] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:15:10.397 [DEBUG] [Thread-124364] [transport.py] [_log()] client lang: <none>
2025-11-03T23:15:10.397 [DEBUG] [Thread-124364] [transport.py] [_log()] server lang: <none>
2025-11-03T23:15:10.398 [DEBUG] [Thread-124364] [transport.py] [_log()] kex follows: False
2025-11-03T23:15:10.398 [DEBUG] [Thread-124364] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:15:10.398 [DEBUG] [Thread-124364] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:15:10.398 [DEBUG] [Thread-124364] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:15:10.398 [DEBUG] [Thread-124364] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:15:10.398 [DEBUG] [Thread-124364] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:15:10.398 [DEBUG] [Thread-124364] [transport.py] [_log()] Compression: none
2025-11-03T23:15:10.398 [DEBUG] [Thread-124364] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:15:10.460 [DEBUG] [Thread-124364] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:15:10.461 [DEBUG] [Thread-124364] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:15:10.461 [DEBUG] [Thread-124364] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:15:10.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:15:10.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:15:10.518 [DEBUG] [Thread-124364] [transport.py] [_log()] userauth is OK
2025-11-03T23:15:10.518 [DEBUG] [Thread-124364] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:15:10.518 [DEBUG] [Thread-124364] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:15:10.519 [DEBUG] [Thread-124364] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:15:10.519 [DEBUG] [Thread-124364] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:15:10.540 [INFO] [Thread-124364] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:15:10.540 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:15:10.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:15:11.360 [DEBUG] [Thread-124364] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:15:11.360 [DEBUG] [Thread-124364] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:15:11.409 [DEBUG] [Thread-124364] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:15:11.409 [DEBUG] [Thread-124364] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:15:11.417 [DEBUG] [Thread-124364] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:15:11.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:15:11.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:15:11.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:15:11.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:15:11.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:15:11.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:15:11.455 [DEBUG] [Thread-124364] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:15:15.864 [DEBUG] [Thread-124366 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:15:25.255 [DEBUG] [Thread-124367 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:15:30.979 [DEBUG] [Thread-124368 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:15:31.552 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:15:39.723 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:15:41.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:15:41.478 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:15:41.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:15:42.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 15, 5), 30.21, 12.05, 0.0, 16.3, 18.91, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:15:42.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:15:05
2025-11-03T23:15:42.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:15:42.617 [DEBUG] [Thread-124369] [transport.py] [_log()] starting thread (client mode): 0xedb2da0
2025-11-03T23:15:42.617 [DEBUG] [Thread-124369] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:15:42.636 [DEBUG] [Thread-124369] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:15:42.636 [INFO] [Thread-124369] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:15:42.639 [DEBUG] [Thread-124369] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:15:42.639 [DEBUG] [Thread-124369] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:15:42.640 [DEBUG] [Thread-124369] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:15:42.640 [DEBUG] [Thread-124369] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:15:42.640 [DEBUG] [Thread-124369] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:15:42.640 [DEBUG] [Thread-124369] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:15:42.640 [DEBUG] [Thread-124369] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:15:42.640 [DEBUG] [Thread-124369] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:15:42.640 [DEBUG] [Thread-124369] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:15:42.640 [DEBUG] [Thread-124369] [transport.py] [_log()] client lang: <none>
2025-11-03T23:15:42.640 [DEBUG] [Thread-124369] [transport.py] [_log()] server lang: <none>
2025-11-03T23:15:42.640 [DEBUG] [Thread-124369] [transport.py] [_log()] kex follows: False
2025-11-03T23:15:42.640 [DEBUG] [Thread-124369] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:15:42.640 [DEBUG] [Thread-124369] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:15:42.640 [DEBUG] [Thread-124369] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:15:42.640 [DEBUG] [Thread-124369] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:15:42.640 [DEBUG] [Thread-124369] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:15:42.640 [DEBUG] [Thread-124369] [transport.py] [_log()] Compression: none
2025-11-03T23:15:42.640 [DEBUG] [Thread-124369] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:15:42.655 [DEBUG] [Thread-124369] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:15:42.655 [DEBUG] [Thread-124369] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:15:42.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:15:42.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:15:42.656 [DEBUG] [Thread-124369] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:15:42.657 [DEBUG] [Thread-124369] [transport.py] [_log()] userauth is OK
2025-11-03T23:15:42.657 [DEBUG] [Thread-124369] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:15:42.657 [DEBUG] [Thread-124369] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:15:42.657 [DEBUG] [Thread-124369] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:15:42.657 [DEBUG] [Thread-124369] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:15:42.672 [INFO] [Thread-124369] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:15:42.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:15:43.311 [DEBUG] [Thread-124369] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:15:43.311 [DEBUG] [Thread-124369] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:15:43.311 [DEBUG] [Thread-124369] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:15:43.352 [DEBUG] [Thread-124369] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:15:43.352 [DEBUG] [Thread-124369] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:15:43.354 [DEBUG] [Thread-124369] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:15:43.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:15:43.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:15:43.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:15:43.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:15:43.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:15:43.372 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:15:43.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:15:43.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:15:43.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:15:43.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.885516 -999.00  +18.80  12.32     17   -6.50 1 1 1 1 1     0    0 24.70 -27.19 ZNESW 14.0 12.3 318.1 18.0 18.9 -25.3 18.9 -24.4 18.6 -23.9 18.9 -24.8
2025-11-03T23:15:43.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:15:43.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:15:43.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.885516
2025-11-03T23:15:43.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:15:43.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:15:43.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:15:43.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:15:43.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:15:43.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:15:05', tmtdew=30.21, humidity=12.05, cloud=0.0, wind=16.3, temperature=18.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:15:06', seeing=1.0, atlas_timestamp='2025-11-03T21:15:08.582', atlas_cloud=1, atlas_rain=1, zp_data=[-0.052250000000000796, -0.0417500000000004, 0.06925000000000026, -0.0070000000000014495, 0.06550000000000011, -0.1222499999999993, -0.10599999999999987, -0.16274999999999906, 0.053999999999998494, -0.10599999999999987, 0.07324999999999982, 0.04400000000000048, 0.06349999999999945, -0.003249999999999531, -0.3910000000000018, -0.2810000000000006, -0.0547500000000003, 0.10749999999999993, 0.1349999999999998, 0.04224999999999923, 0.13349999999999795, 0.07724999999999937, -0.675749999999999, -0.31625000000000014, 0.06999999999999851, 0.15000000000000036, 0.161249999999999, 0.16650000000000098, 0.198500000000001, 0.10300000000000153, 0.17900000000000027, -0.0004999999999988347, 0.034250000000000114], zp_timestamp='2025-11-03T21:14:00')
2025-11-03T23:15:43.373 [DEBUG] [Thread-124369] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:15:43.447 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:15:43.465 [DEBUG] [Thread-124372] [transport.py] [_log()] starting thread (client mode): 0xeda2740
2025-11-03T23:15:43.465 [DEBUG] [Thread-124372] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:15:43.485 [DEBUG] [Thread-124372] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:15:43.485 [INFO] [Thread-124372] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:15:43.494 [DEBUG] [Thread-124372] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:15:43.494 [DEBUG] [Thread-124372] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:15:43.494 [DEBUG] [Thread-124372] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:15:43.494 [DEBUG] [Thread-124372] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:15:43.494 [DEBUG] [Thread-124372] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:15:43.494 [DEBUG] [Thread-124372] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:15:43.494 [DEBUG] [Thread-124372] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:15:43.494 [DEBUG] [Thread-124372] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:15:43.494 [DEBUG] [Thread-124372] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:15:43.494 [DEBUG] [Thread-124372] [transport.py] [_log()] client lang: <none>
2025-11-03T23:15:43.494 [DEBUG] [Thread-124372] [transport.py] [_log()] server lang: <none>
2025-11-03T23:15:43.494 [DEBUG] [Thread-124372] [transport.py] [_log()] kex follows: False
2025-11-03T23:15:43.495 [DEBUG] [Thread-124372] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:15:43.495 [DEBUG] [Thread-124372] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:15:43.495 [DEBUG] [Thread-124372] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:15:43.495 [DEBUG] [Thread-124372] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:15:43.495 [DEBUG] [Thread-124372] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:15:43.495 [DEBUG] [Thread-124372] [transport.py] [_log()] Compression: none
2025-11-03T23:15:43.495 [DEBUG] [Thread-124372] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:15:43.562 [DEBUG] [Thread-124372] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:15:43.562 [DEBUG] [Thread-124372] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:15:43.562 [DEBUG] [Thread-124372] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:15:43.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:15:43.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:15:43.627 [DEBUG] [Thread-124372] [transport.py] [_log()] userauth is OK
2025-11-03T23:15:43.627 [DEBUG] [Thread-124372] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:15:43.627 [DEBUG] [Thread-124372] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:15:43.627 [DEBUG] [Thread-124372] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:15:43.627 [DEBUG] [Thread-124372] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:15:43.647 [INFO] [Thread-124372] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:15:43.647 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:15:43.648 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:15:43.817 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:15:44.511 [DEBUG] [Thread-124372] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:15:44.511 [DEBUG] [Thread-124372] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:15:44.564 [DEBUG] [Thread-124372] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:15:44.564 [DEBUG] [Thread-124372] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:15:44.576 [DEBUG] [Thread-124372] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:15:44.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:15:44.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:15:44.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:15:44.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:15:44.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:15:44.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:15:44.633 [DEBUG] [Thread-124372] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:15:46.009 [DEBUG] [Thread-124374 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:16:01.056 [DEBUG] [Thread-124375 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:16:03.946 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:16:03.947 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:16:14.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:16:14.651 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:16:14.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:16:15.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 15, 42), 30.14, 12.06, 0.0, 15.28, 18.9, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:16:15.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:15:42
2025-11-03T23:16:15.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:16:15.930 [DEBUG] [Thread-124376] [transport.py] [_log()] starting thread (client mode): 0xed42710
2025-11-03T23:16:15.930 [DEBUG] [Thread-124376] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:16:15.951 [DEBUG] [Thread-124376] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:16:15.951 [INFO] [Thread-124376] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:16:15.954 [DEBUG] [Thread-124376] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:16:15.954 [DEBUG] [Thread-124376] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:16:15.954 [DEBUG] [Thread-124376] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:16:15.954 [DEBUG] [Thread-124376] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:16:15.954 [DEBUG] [Thread-124376] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:16:15.954 [DEBUG] [Thread-124376] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:16:15.954 [DEBUG] [Thread-124376] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:16:15.954 [DEBUG] [Thread-124376] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:16:15.955 [DEBUG] [Thread-124376] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:16:15.955 [DEBUG] [Thread-124376] [transport.py] [_log()] client lang: <none>
2025-11-03T23:16:15.955 [DEBUG] [Thread-124376] [transport.py] [_log()] server lang: <none>
2025-11-03T23:16:15.955 [DEBUG] [Thread-124376] [transport.py] [_log()] kex follows: False
2025-11-03T23:16:15.955 [DEBUG] [Thread-124376] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:16:15.955 [DEBUG] [Thread-124376] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:16:15.955 [DEBUG] [Thread-124376] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:16:15.955 [DEBUG] [Thread-124376] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:16:15.955 [DEBUG] [Thread-124376] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:16:15.955 [DEBUG] [Thread-124376] [transport.py] [_log()] Compression: none
2025-11-03T23:16:15.955 [DEBUG] [Thread-124376] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:16:15.973 [DEBUG] [Thread-124376] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:16:15.974 [DEBUG] [Thread-124376] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:16:15.974 [DEBUG] [Thread-124376] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:16:15.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:16:15.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:16:15.976 [DEBUG] [Thread-124376] [transport.py] [_log()] userauth is OK
2025-11-03T23:16:15.976 [DEBUG] [Thread-124376] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:16:15.976 [DEBUG] [Thread-124376] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:16:15.976 [DEBUG] [Thread-124376] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:16:15.976 [DEBUG] [Thread-124376] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:16:16.004 [INFO] [Thread-124376] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:16:16.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:16:16.095 [DEBUG] [Thread-124378 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:16:16.675 [DEBUG] [Thread-124376] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:16:16.675 [DEBUG] [Thread-124376] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:16:16.676 [DEBUG] [Thread-124376] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:16:16.717 [DEBUG] [Thread-124376] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:16:16.717 [DEBUG] [Thread-124376] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:16:16.719 [DEBUG] [Thread-124376] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:16:16.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:16:16.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:16:16.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:16:16.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:16:16.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:16:16.737 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:16:16.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:16:16.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:16:16.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:16:16.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.885863 -999.00  +18.80  14.42     17   -6.40 1 1 1 1 1     0    0 24.77 -29.54 ZNESW 14.8 14.4 306.2 17.5 18.9 -25.1 18.9 -24.2 18.6 -23.8 18.9 -24.8
2025-11-03T23:16:16.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:16:16.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:16:16.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.885863
2025-11-03T23:16:16.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:16:16.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:16:16.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:16:16.743 [DEBUG] [Thread-124376] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:16:16.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:16:16.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:16:16.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:15:42', tmtdew=30.14, humidity=12.06, cloud=0.0, wind=15.28, temperature=18.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:15:43', seeing=1.12, atlas_timestamp='2025-11-03T21:15:38.563', atlas_cloud=1, atlas_rain=1, zp_data=[-0.052250000000000796, -0.0417500000000004, 0.06925000000000026, -0.0070000000000014495, 0.06550000000000011, -0.1222499999999993, -0.10599999999999987, -0.16274999999999906, 0.053999999999998494, -0.10599999999999987, 0.07324999999999982, 0.04400000000000048, 0.06349999999999945, -0.003249999999999531, -0.3910000000000018, -0.2810000000000006, -0.0547500000000003, 0.10749999999999993, 0.1349999999999998, 0.04224999999999923, 0.13349999999999795, 0.07724999999999937, -0.675749999999999, -0.31625000000000014, 0.06999999999999851, 0.15000000000000036, 0.161249999999999, 0.16650000000000098, 0.198500000000001, 0.10300000000000153, 0.17900000000000027, -0.0004999999999988347, 0.034250000000000114], zp_timestamp='2025-11-03T21:14:00')
2025-11-03T23:16:16.819 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:16:16.830 [DEBUG] [Thread-124380] [transport.py] [_log()] starting thread (client mode): 0xed42c80
2025-11-03T23:16:16.830 [DEBUG] [Thread-124380] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:16:16.851 [DEBUG] [Thread-124380] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:16:16.851 [INFO] [Thread-124380] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:16:16.859 [DEBUG] [Thread-124380] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:16:16.859 [DEBUG] [Thread-124380] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:16:16.859 [DEBUG] [Thread-124380] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:16:16.859 [DEBUG] [Thread-124380] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:16:16.859 [DEBUG] [Thread-124380] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:16:16.859 [DEBUG] [Thread-124380] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:16:16.859 [DEBUG] [Thread-124380] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:16:16.859 [DEBUG] [Thread-124380] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:16:16.859 [DEBUG] [Thread-124380] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:16:16.859 [DEBUG] [Thread-124380] [transport.py] [_log()] client lang: <none>
2025-11-03T23:16:16.859 [DEBUG] [Thread-124380] [transport.py] [_log()] server lang: <none>
2025-11-03T23:16:16.859 [DEBUG] [Thread-124380] [transport.py] [_log()] kex follows: False
2025-11-03T23:16:16.859 [DEBUG] [Thread-124380] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:16:16.859 [DEBUG] [Thread-124380] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:16:16.859 [DEBUG] [Thread-124380] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:16:16.859 [DEBUG] [Thread-124380] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:16:16.859 [DEBUG] [Thread-124380] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:16:16.859 [DEBUG] [Thread-124380] [transport.py] [_log()] Compression: none
2025-11-03T23:16:16.859 [DEBUG] [Thread-124380] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:16:16.919 [DEBUG] [Thread-124380] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:16:16.919 [DEBUG] [Thread-124380] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:16:16.919 [DEBUG] [Thread-124380] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:16:16.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:16:16.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:16:16.987 [DEBUG] [Thread-124380] [transport.py] [_log()] userauth is OK
2025-11-03T23:16:16.987 [DEBUG] [Thread-124380] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:16:16.987 [DEBUG] [Thread-124380] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:16:16.987 [DEBUG] [Thread-124380] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:16:16.987 [DEBUG] [Thread-124380] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:16:17.003 [INFO] [Thread-124380] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:16:17.004 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:16:17.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:16:17.874 [DEBUG] [Thread-124380] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:16:17.874 [DEBUG] [Thread-124380] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:16:17.922 [DEBUG] [Thread-124380] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:16:17.922 [DEBUG] [Thread-124380] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:16:17.934 [DEBUG] [Thread-124380] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:16:17.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:16:17.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:16:17.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:16:17.968 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:16:17.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:16:17.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:16:17.980 [DEBUG] [Thread-124380] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:16:26.925 [DEBUG] [Thread-124382 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:16:31.124 [DEBUG] [Thread-124383 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:16:46.218 [DEBUG] [Thread-124384 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:16:47.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:16:47.979 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:16:47.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:16:48.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 16, 14), 30.09, 12.1, 0.0, 15.56, 18.86, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:16:48.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:16:14
2025-11-03T23:16:48.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:16:49.130 [DEBUG] [Thread-124385] [transport.py] [_log()] starting thread (client mode): 0xedb0df0
2025-11-03T23:16:49.130 [DEBUG] [Thread-124385] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:16:49.146 [DEBUG] [Thread-124385] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:16:49.146 [INFO] [Thread-124385] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:16:49.149 [DEBUG] [Thread-124385] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:16:49.149 [DEBUG] [Thread-124385] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:16:49.149 [DEBUG] [Thread-124385] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:16:49.149 [DEBUG] [Thread-124385] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:16:49.149 [DEBUG] [Thread-124385] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:16:49.149 [DEBUG] [Thread-124385] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:16:49.149 [DEBUG] [Thread-124385] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:16:49.149 [DEBUG] [Thread-124385] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:16:49.149 [DEBUG] [Thread-124385] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:16:49.149 [DEBUG] [Thread-124385] [transport.py] [_log()] client lang: <none>
2025-11-03T23:16:49.149 [DEBUG] [Thread-124385] [transport.py] [_log()] server lang: <none>
2025-11-03T23:16:49.149 [DEBUG] [Thread-124385] [transport.py] [_log()] kex follows: False
2025-11-03T23:16:49.149 [DEBUG] [Thread-124385] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:16:49.150 [DEBUG] [Thread-124385] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:16:49.150 [DEBUG] [Thread-124385] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:16:49.150 [DEBUG] [Thread-124385] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:16:49.150 [DEBUG] [Thread-124385] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:16:49.150 [DEBUG] [Thread-124385] [transport.py] [_log()] Compression: none
2025-11-03T23:16:49.150 [DEBUG] [Thread-124385] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:16:49.176 [DEBUG] [Thread-124385] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:16:49.178 [DEBUG] [Thread-124385] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:16:49.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:16:49.180 [DEBUG] [Thread-124385] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:16:49.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:16:49.182 [DEBUG] [Thread-124385] [transport.py] [_log()] userauth is OK
2025-11-03T23:16:49.182 [DEBUG] [Thread-124385] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:16:49.182 [DEBUG] [Thread-124385] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:16:49.182 [DEBUG] [Thread-124385] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:16:49.182 [DEBUG] [Thread-124385] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:16:49.214 [INFO] [Thread-124385] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:16:49.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:16:49.843 [DEBUG] [Thread-124385] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:16:49.843 [DEBUG] [Thread-124385] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:16:49.844 [DEBUG] [Thread-124385] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:16:49.884 [DEBUG] [Thread-124385] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:16:49.884 [DEBUG] [Thread-124385] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:16:49.886 [DEBUG] [Thread-124385] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:16:49.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:16:49.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:16:49.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:16:49.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:16:49.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:16:49.905 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:16:49.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:16:49.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:16:49.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:16:49.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.886558 -999.00  +18.80  13.19     17   -6.40 1 1 1 1 1     0    0 24.58 -28.93 ZNESW 14.9 13.2 311.8 17.2 18.9 -25.1 18.9 -24.3 18.7 -23.8 18.9 -24.8
2025-11-03T23:16:49.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:16:49.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:16:49.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.886558
2025-11-03T23:16:49.912 [DEBUG] [Thread-124385] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:16:49.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:16:49.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:16:49.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:16:49.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:16:49.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:16:49.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:16:14', tmtdew=30.09, humidity=12.1, cloud=0.0, wind=15.56, temperature=18.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:16:15', seeing=1.02, atlas_timestamp='2025-11-03T21:16:38.611', atlas_cloud=1, atlas_rain=1, zp_data=[-0.052250000000000796, -0.0417500000000004, 0.06925000000000026, -0.0070000000000014495, 0.06550000000000011, -0.1222499999999993, -0.10599999999999987, -0.16274999999999906, 0.053999999999998494, -0.10599999999999987, 0.07324999999999982, 0.04400000000000048, 0.06349999999999945, -0.003249999999999531, -0.3910000000000018, -0.2810000000000006, -0.0547500000000003, 0.10749999999999993, 0.1349999999999998, 0.04224999999999923, 0.13349999999999795, 0.07724999999999937, -0.675749999999999, -0.31625000000000014, 0.06999999999999851, 0.15000000000000036, 0.161249999999999, 0.16650000000000098, 0.198500000000001, 0.10300000000000153, 0.17900000000000027, -0.0004999999999988347, 0.034250000000000114], zp_timestamp='2025-11-03T21:14:00')
2025-11-03T23:16:49.998 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:16:50.015 [DEBUG] [Thread-124388] [transport.py] [_log()] starting thread (client mode): 0xed437c0
2025-11-03T23:16:50.015 [DEBUG] [Thread-124388] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:16:50.034 [DEBUG] [Thread-124388] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:16:50.034 [INFO] [Thread-124388] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:16:50.043 [DEBUG] [Thread-124388] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:16:50.043 [DEBUG] [Thread-124388] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:16:50.043 [DEBUG] [Thread-124388] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:16:50.043 [DEBUG] [Thread-124388] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:16:50.043 [DEBUG] [Thread-124388] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:16:50.043 [DEBUG] [Thread-124388] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:16:50.043 [DEBUG] [Thread-124388] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:16:50.043 [DEBUG] [Thread-124388] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:16:50.043 [DEBUG] [Thread-124388] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:16:50.043 [DEBUG] [Thread-124388] [transport.py] [_log()] client lang: <none>
2025-11-03T23:16:50.043 [DEBUG] [Thread-124388] [transport.py] [_log()] server lang: <none>
2025-11-03T23:16:50.043 [DEBUG] [Thread-124388] [transport.py] [_log()] kex follows: False
2025-11-03T23:16:50.043 [DEBUG] [Thread-124388] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:16:50.043 [DEBUG] [Thread-124388] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:16:50.043 [DEBUG] [Thread-124388] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:16:50.043 [DEBUG] [Thread-124388] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:16:50.043 [DEBUG] [Thread-124388] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:16:50.043 [DEBUG] [Thread-124388] [transport.py] [_log()] Compression: none
2025-11-03T23:16:50.043 [DEBUG] [Thread-124388] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:16:50.104 [DEBUG] [Thread-124388] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:16:50.104 [DEBUG] [Thread-124388] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:16:50.105 [DEBUG] [Thread-124388] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:16:50.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:16:50.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:16:50.163 [DEBUG] [Thread-124388] [transport.py] [_log()] userauth is OK
2025-11-03T23:16:50.163 [DEBUG] [Thread-124388] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:16:50.163 [DEBUG] [Thread-124388] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:16:50.163 [DEBUG] [Thread-124388] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:16:50.163 [DEBUG] [Thread-124388] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:16:50.179 [INFO] [Thread-124388] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:16:50.179 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:16:50.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:16:51.087 [DEBUG] [Thread-124388] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:16:51.087 [DEBUG] [Thread-124388] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:16:51.137 [DEBUG] [Thread-124388] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:16:51.138 [DEBUG] [Thread-124388] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:16:51.150 [DEBUG] [Thread-124388] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:16:51.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:16:51.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:16:51.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:16:51.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:16:51.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:16:51.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:16:51.201 [DEBUG] [Thread-124388] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:17:01.253 [DEBUG] [Thread-124390 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:17:04.170 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:17:04.172 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:17:06.355 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:17:14.368 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:17:16.310 [DEBUG] [Thread-124391 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:17:18.426 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:17:21.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:17:21.221 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:17:21.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:17:22.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 16, 47), 30.01, 12.13, 0.0, 13.62, 18.83, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:17:22.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:16:47
2025-11-03T23:17:22.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:17:22.390 [DEBUG] [Thread-124392] [transport.py] [_log()] starting thread (client mode): 0xeda0790
2025-11-03T23:17:22.390 [DEBUG] [Thread-124392] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:17:22.410 [DEBUG] [Thread-124392] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:17:22.410 [INFO] [Thread-124392] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:17:22.413 [DEBUG] [Thread-124392] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:17:22.413 [DEBUG] [Thread-124392] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:17:22.414 [DEBUG] [Thread-124392] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:17:22.414 [DEBUG] [Thread-124392] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:17:22.414 [DEBUG] [Thread-124392] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:17:22.414 [DEBUG] [Thread-124392] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:17:22.414 [DEBUG] [Thread-124392] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:17:22.414 [DEBUG] [Thread-124392] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:17:22.414 [DEBUG] [Thread-124392] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:17:22.414 [DEBUG] [Thread-124392] [transport.py] [_log()] client lang: <none>
2025-11-03T23:17:22.414 [DEBUG] [Thread-124392] [transport.py] [_log()] server lang: <none>
2025-11-03T23:17:22.414 [DEBUG] [Thread-124392] [transport.py] [_log()] kex follows: False
2025-11-03T23:17:22.414 [DEBUG] [Thread-124392] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:17:22.414 [DEBUG] [Thread-124392] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:17:22.414 [DEBUG] [Thread-124392] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:17:22.414 [DEBUG] [Thread-124392] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:17:22.415 [DEBUG] [Thread-124392] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:17:22.415 [DEBUG] [Thread-124392] [transport.py] [_log()] Compression: none
2025-11-03T23:17:22.415 [DEBUG] [Thread-124392] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:17:22.430 [DEBUG] [Thread-124392] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:17:22.431 [DEBUG] [Thread-124392] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:17:22.431 [DEBUG] [Thread-124392] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:17:22.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:17:22.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:17:22.432 [DEBUG] [Thread-124392] [transport.py] [_log()] userauth is OK
2025-11-03T23:17:22.432 [DEBUG] [Thread-124392] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:17:22.432 [DEBUG] [Thread-124392] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:17:22.432 [DEBUG] [Thread-124392] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:17:22.432 [DEBUG] [Thread-124392] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:17:22.444 [INFO] [Thread-124392] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:17:22.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:17:23.084 [DEBUG] [Thread-124392] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:17:23.084 [DEBUG] [Thread-124392] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:17:23.084 [DEBUG] [Thread-124392] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:17:23.125 [DEBUG] [Thread-124392] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:17:23.125 [DEBUG] [Thread-124392] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:17:23.128 [DEBUG] [Thread-124392] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:17:23.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:17:23.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:17:23.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:17:23.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:17:23.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:17:23.145 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:17:23.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:17:23.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:17:23.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:17:23.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.886905 -999.00  +18.80  14.34     17   -6.40 1 1 1 1 1     0    0 24.51 -32.39 ZNESW 13.6 14.3 302.2 17.6 18.9 -25.1 18.9 -24.1 18.6 -23.7 18.9 -24.8
2025-11-03T23:17:23.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:17:23.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:17:23.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.886905
2025-11-03T23:17:23.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:17:23.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:17:23.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:17:23.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:17:23.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:17:23.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:16:47', tmtdew=30.01, humidity=12.13, cloud=0.0, wind=13.62, temperature=18.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:17:20', seeing=1.08, atlas_timestamp='2025-11-03T21:17:08.592', atlas_cloud=1, atlas_rain=1, zp_data=[-0.052250000000000796, -0.0417500000000004, 0.06925000000000026, -0.0070000000000014495, 0.06550000000000011, -0.1222499999999993, -0.10599999999999987, -0.16274999999999906, 0.053999999999998494, -0.10599999999999987, 0.07324999999999982, 0.04400000000000048, 0.06349999999999945, -0.003249999999999531, -0.3910000000000018, -0.2810000000000006, -0.0547500000000003, 0.10749999999999993, 0.1349999999999998, 0.04224999999999923, 0.13349999999999795, 0.07724999999999937, -0.675749999999999, -0.31625000000000014, 0.06999999999999851, 0.15000000000000036, 0.161249999999999, 0.16650000000000098, 0.198500000000001, 0.10300000000000153, 0.17900000000000027, -0.0004999999999988347, 0.034250000000000114], zp_timestamp='2025-11-03T21:14:00')
2025-11-03T23:17:23.146 [DEBUG] [Thread-124392] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:17:23.221 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:17:23.234 [DEBUG] [Thread-124395] [transport.py] [_log()] starting thread (client mode): 0xeda1510
2025-11-03T23:17:23.234 [DEBUG] [Thread-124395] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:17:23.251 [DEBUG] [Thread-124395] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:17:23.251 [INFO] [Thread-124395] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:17:23.260 [DEBUG] [Thread-124395] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:17:23.260 [DEBUG] [Thread-124395] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:17:23.260 [DEBUG] [Thread-124395] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:17:23.260 [DEBUG] [Thread-124395] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:17:23.260 [DEBUG] [Thread-124395] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:17:23.261 [DEBUG] [Thread-124395] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:17:23.261 [DEBUG] [Thread-124395] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:17:23.261 [DEBUG] [Thread-124395] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:17:23.261 [DEBUG] [Thread-124395] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:17:23.261 [DEBUG] [Thread-124395] [transport.py] [_log()] client lang: <none>
2025-11-03T23:17:23.261 [DEBUG] [Thread-124395] [transport.py] [_log()] server lang: <none>
2025-11-03T23:17:23.261 [DEBUG] [Thread-124395] [transport.py] [_log()] kex follows: False
2025-11-03T23:17:23.261 [DEBUG] [Thread-124395] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:17:23.262 [DEBUG] [Thread-124395] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:17:23.262 [DEBUG] [Thread-124395] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:17:23.262 [DEBUG] [Thread-124395] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:17:23.262 [DEBUG] [Thread-124395] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:17:23.262 [DEBUG] [Thread-124395] [transport.py] [_log()] Compression: none
2025-11-03T23:17:23.262 [DEBUG] [Thread-124395] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:17:23.325 [DEBUG] [Thread-124395] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:17:23.326 [DEBUG] [Thread-124395] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:17:23.327 [DEBUG] [Thread-124395] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:17:23.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:17:23.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:17:23.387 [DEBUG] [Thread-124395] [transport.py] [_log()] userauth is OK
2025-11-03T23:17:23.387 [DEBUG] [Thread-124395] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:17:23.388 [DEBUG] [Thread-124395] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:17:23.388 [DEBUG] [Thread-124395] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:17:23.388 [DEBUG] [Thread-124395] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:17:23.411 [INFO] [Thread-124395] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:17:23.412 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:17:23.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:17:24.249 [DEBUG] [Thread-124395] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:17:24.259 [DEBUG] [Thread-124395] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:17:24.302 [DEBUG] [Thread-124395] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:17:24.302 [DEBUG] [Thread-124395] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:17:24.315 [DEBUG] [Thread-124395] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:17:24.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:17:24.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:17:24.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:17:24.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:17:24.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:17:24.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:17:24.366 [DEBUG] [Thread-124395] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:17:27.172 [DEBUG] [Thread-124397 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:17:31.338 [DEBUG] [Thread-124398 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:17:46.392 [DEBUG] [Thread-124399 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:17:54.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:17:54.385 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:17:54.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:17:55.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 17, 20), 29.99, 12.15, 0.0, 13.29, 18.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:17:55.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:17:20
2025-11-03T23:17:56.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:17:56.550 [DEBUG] [Thread-124400] [transport.py] [_log()] starting thread (client mode): 0xeda27a0
2025-11-03T23:17:56.551 [DEBUG] [Thread-124400] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:17:56.552 [DEBUG] [Thread-124400] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:17:56.553 [INFO] [Thread-124400] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:17:56.567 [DEBUG] [Thread-124400] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:17:56.567 [DEBUG] [Thread-124400] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:17:56.567 [DEBUG] [Thread-124400] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:17:56.567 [DEBUG] [Thread-124400] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:17:56.567 [DEBUG] [Thread-124400] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:17:56.567 [DEBUG] [Thread-124400] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:17:56.567 [DEBUG] [Thread-124400] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:17:56.567 [DEBUG] [Thread-124400] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:17:56.567 [DEBUG] [Thread-124400] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:17:56.567 [DEBUG] [Thread-124400] [transport.py] [_log()] client lang: <none>
2025-11-03T23:17:56.567 [DEBUG] [Thread-124400] [transport.py] [_log()] server lang: <none>
2025-11-03T23:17:56.568 [DEBUG] [Thread-124400] [transport.py] [_log()] kex follows: False
2025-11-03T23:17:56.568 [DEBUG] [Thread-124400] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:17:56.572 [DEBUG] [Thread-124400] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:17:56.572 [DEBUG] [Thread-124400] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:17:56.572 [DEBUG] [Thread-124400] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:17:56.572 [DEBUG] [Thread-124400] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:17:56.572 [DEBUG] [Thread-124400] [transport.py] [_log()] Compression: none
2025-11-03T23:17:56.572 [DEBUG] [Thread-124400] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:17:56.670 [DEBUG] [Thread-124400] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:17:56.689 [DEBUG] [Thread-124400] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:17:56.696 [DEBUG] [Thread-124400] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:17:56.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:17:56.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:17:56.718 [DEBUG] [Thread-124400] [transport.py] [_log()] userauth is OK
2025-11-03T23:17:56.719 [DEBUG] [Thread-124400] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:17:56.720 [DEBUG] [Thread-124400] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:17:56.720 [DEBUG] [Thread-124400] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:17:56.720 [DEBUG] [Thread-124400] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:17:56.768 [INFO] [Thread-124400] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:17:56.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:17:57.420 [DEBUG] [Thread-124400] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:17:57.420 [DEBUG] [Thread-124400] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:17:57.423 [DEBUG] [Thread-124400] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:17:57.461 [DEBUG] [Thread-124400] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:17:57.461 [DEBUG] [Thread-124400] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:17:57.467 [DEBUG] [Thread-124400] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:17:57.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:17:57.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:17:57.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:17:57.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:17:57.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:17:57.504 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:17:57.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:17:57.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:17:57.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:17:57.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.887252 -999.00  +18.80  15.10     17   -6.40 1 1 1 1 1     0    0 24.78 -33.50 ZNESW 18.7 15.1 307.2 18.9 19.0 -25.2 18.9 -24.1 18.6 -23.8 18.9 -24.8
2025-11-03T23:17:57.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:17:57.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:17:57.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.887252
2025-11-03T23:17:57.516 [DEBUG] [Thread-124400] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:17:57.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:17:57.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:17:57.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:17:57.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:17:57.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:17:57.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:17:20', tmtdew=29.99, humidity=12.15, cloud=0.0, wind=13.29, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:17:53', seeing=1.08, atlas_timestamp='2025-11-03T21:17:38.573', atlas_cloud=1, atlas_rain=1, zp_data=[-0.052250000000000796, -0.0417500000000004, 0.06925000000000026, -0.0070000000000014495, 0.06550000000000011, -0.1222499999999993, -0.10599999999999987, -0.16274999999999906, 0.053999999999998494, -0.10599999999999987, 0.07324999999999982, 0.04400000000000048, 0.06349999999999945, -0.003249999999999531, -0.3910000000000018, -0.2810000000000006, -0.0547500000000003, 0.10749999999999993, 0.1349999999999998, 0.04224999999999923, 0.13349999999999795, 0.07724999999999937, -0.675749999999999, -0.31625000000000014, 0.06999999999999851, 0.15000000000000036, 0.161249999999999, 0.16650000000000098, 0.198500000000001, 0.10300000000000153, 0.17900000000000027, -0.0004999999999988347, 0.034250000000000114], zp_timestamp='2025-11-03T21:14:00')
2025-11-03T23:17:57.721 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:17:57.735 [DEBUG] [Thread-124403] [transport.py] [_log()] starting thread (client mode): 0xedb01c0
2025-11-03T23:17:57.736 [DEBUG] [Thread-124403] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:17:57.750 [DEBUG] [Thread-124403] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:17:57.750 [INFO] [Thread-124403] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:17:57.758 [DEBUG] [Thread-124403] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:17:57.758 [DEBUG] [Thread-124403] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:17:57.758 [DEBUG] [Thread-124403] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:17:57.758 [DEBUG] [Thread-124403] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:17:57.758 [DEBUG] [Thread-124403] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:17:57.758 [DEBUG] [Thread-124403] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:17:57.758 [DEBUG] [Thread-124403] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:17:57.758 [DEBUG] [Thread-124403] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:17:57.758 [DEBUG] [Thread-124403] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:17:57.758 [DEBUG] [Thread-124403] [transport.py] [_log()] client lang: <none>
2025-11-03T23:17:57.758 [DEBUG] [Thread-124403] [transport.py] [_log()] server lang: <none>
2025-11-03T23:17:57.758 [DEBUG] [Thread-124403] [transport.py] [_log()] kex follows: False
2025-11-03T23:17:57.758 [DEBUG] [Thread-124403] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:17:57.758 [DEBUG] [Thread-124403] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:17:57.758 [DEBUG] [Thread-124403] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:17:57.758 [DEBUG] [Thread-124403] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:17:57.758 [DEBUG] [Thread-124403] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:17:57.758 [DEBUG] [Thread-124403] [transport.py] [_log()] Compression: none
2025-11-03T23:17:57.758 [DEBUG] [Thread-124403] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:17:57.818 [DEBUG] [Thread-124403] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:17:57.818 [DEBUG] [Thread-124403] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:17:57.819 [DEBUG] [Thread-124403] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:17:57.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:17:57.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:17:57.879 [DEBUG] [Thread-124403] [transport.py] [_log()] userauth is OK
2025-11-03T23:17:57.880 [DEBUG] [Thread-124403] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:17:57.880 [DEBUG] [Thread-124403] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:17:57.880 [DEBUG] [Thread-124403] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:17:57.880 [DEBUG] [Thread-124403] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:17:57.900 [INFO] [Thread-124403] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:17:57.900 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:17:57.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:17:58.749 [DEBUG] [Thread-124403] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:17:58.749 [DEBUG] [Thread-124403] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:17:58.797 [DEBUG] [Thread-124403] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:17:58.797 [DEBUG] [Thread-124403] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:17:58.805 [DEBUG] [Thread-124403] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:17:58.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:17:58.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:17:58.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:17:58.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:17:58.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:17:58.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:17:58.848 [DEBUG] [Thread-124403] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:18:01.564 [DEBUG] [Thread-124405 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:18:04.372 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:18:04.373 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:18:17.143 [DEBUG] [Thread-124406 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:18:27.434 [DEBUG] [Thread-124407 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:18:28.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:18:28.870 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:18:28.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:18:29.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 17, 52), 30.03, 12.1, 0.0, 15.39, 18.75, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:18:29.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:17:52
2025-11-03T23:18:29.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:18:29.980 [DEBUG] [Thread-124408] [transport.py] [_log()] starting thread (client mode): 0xedb3100
2025-11-03T23:18:29.981 [DEBUG] [Thread-124408] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:18:30.004 [DEBUG] [Thread-124408] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:18:30.004 [INFO] [Thread-124408] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:18:30.006 [DEBUG] [Thread-124408] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:18:30.006 [DEBUG] [Thread-124408] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:18:30.006 [DEBUG] [Thread-124408] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:18:30.006 [DEBUG] [Thread-124408] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:18:30.006 [DEBUG] [Thread-124408] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:18:30.006 [DEBUG] [Thread-124408] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:18:30.006 [DEBUG] [Thread-124408] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:18:30.006 [DEBUG] [Thread-124408] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:18:30.006 [DEBUG] [Thread-124408] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:18:30.006 [DEBUG] [Thread-124408] [transport.py] [_log()] client lang: <none>
2025-11-03T23:18:30.006 [DEBUG] [Thread-124408] [transport.py] [_log()] server lang: <none>
2025-11-03T23:18:30.006 [DEBUG] [Thread-124408] [transport.py] [_log()] kex follows: False
2025-11-03T23:18:30.006 [DEBUG] [Thread-124408] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:18:30.006 [DEBUG] [Thread-124408] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:18:30.006 [DEBUG] [Thread-124408] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:18:30.007 [DEBUG] [Thread-124408] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:18:30.007 [DEBUG] [Thread-124408] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:18:30.007 [DEBUG] [Thread-124408] [transport.py] [_log()] Compression: none
2025-11-03T23:18:30.007 [DEBUG] [Thread-124408] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:18:30.019 [DEBUG] [Thread-124408] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:18:30.020 [DEBUG] [Thread-124408] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:18:30.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:18:30.020 [DEBUG] [Thread-124408] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:18:30.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:18:30.062 [DEBUG] [Thread-124408] [transport.py] [_log()] userauth is OK
2025-11-03T23:18:30.062 [DEBUG] [Thread-124408] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:18:30.062 [DEBUG] [Thread-124408] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:18:30.062 [DEBUG] [Thread-124408] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:18:30.062 [DEBUG] [Thread-124408] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:18:30.082 [INFO] [Thread-124408] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:18:30.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:18:30.679 [DEBUG] [Thread-124408] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:18:30.679 [DEBUG] [Thread-124408] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:18:30.680 [DEBUG] [Thread-124408] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:18:30.720 [DEBUG] [Thread-124408] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:18:30.721 [DEBUG] [Thread-124408] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:18:30.723 [DEBUG] [Thread-124408] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:18:30.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:18:30.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:18:30.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:18:30.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:18:30.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:18:30.735 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:18:30.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:18:30.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:18:30.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:18:30.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.887599 -999.00  +18.90  12.17     17   -6.50 1 1 1 1 1     0    0 24.38 -31.91 ZNESW 12.5 12.2 301.1 20.1 18.9 -24.9 18.9 -24.3 18.6 -23.8 18.9 -24.7
2025-11-03T23:18:30.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:18:30.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:18:30.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.887599
2025-11-03T23:18:30.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:18:30.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:18:30.736 [DEBUG] [Thread-124408] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:18:30.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:18:30.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:18:30.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:18:30.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:17:52', tmtdew=30.03, humidity=12.1, cloud=0.0, wind=15.39, temperature=18.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:18:27', seeing=1.01, atlas_timestamp='2025-11-03T21:18:08.554', atlas_cloud=1, atlas_rain=1, zp_data=[-0.055749999999999744, 0.028750000000000497, -0.0007500000000000284, -0.1255000000000006, 0.05550000000000033, -0.08824999999999861, -0.15000000000000036, -0.03725000000000023, 0.0365000000000002, -0.022999999999999687, 0.08225000000000016, 0.03850000000000087, 0.12849999999999895, -0.11675000000000146, -0.7540000000000013, -0.22000000000000064, -0.07675000000000054, 0.0495000000000001, 0.14599999999999902, 0.07974999999999888, 0.10699999999999932, 0.05474999999999852, -0.739749999999999, -0.18324999999999925, 0.08199999999999896, 0.1255000000000006, 0.19875000000000043, 0.19100000000000072, 0.22300000000000075, 0.08300000000000196, 0.07000000000000028, 0.03550000000000075, 0.09774999999999956], zp_timestamp='2025-11-03T21:16:00')
2025-11-03T23:18:30.816 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:18:30.829 [DEBUG] [Thread-124411] [transport.py] [_log()] starting thread (client mode): 0xed43eb0
2025-11-03T23:18:30.830 [DEBUG] [Thread-124411] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:18:30.844 [DEBUG] [Thread-124411] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:18:30.845 [INFO] [Thread-124411] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:18:30.853 [DEBUG] [Thread-124411] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:18:30.853 [DEBUG] [Thread-124411] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:18:30.853 [DEBUG] [Thread-124411] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:18:30.853 [DEBUG] [Thread-124411] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:18:30.853 [DEBUG] [Thread-124411] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:18:30.853 [DEBUG] [Thread-124411] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:18:30.853 [DEBUG] [Thread-124411] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:18:30.853 [DEBUG] [Thread-124411] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:18:30.853 [DEBUG] [Thread-124411] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:18:30.853 [DEBUG] [Thread-124411] [transport.py] [_log()] client lang: <none>
2025-11-03T23:18:30.853 [DEBUG] [Thread-124411] [transport.py] [_log()] server lang: <none>
2025-11-03T23:18:30.853 [DEBUG] [Thread-124411] [transport.py] [_log()] kex follows: False
2025-11-03T23:18:30.853 [DEBUG] [Thread-124411] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:18:30.853 [DEBUG] [Thread-124411] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:18:30.853 [DEBUG] [Thread-124411] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:18:30.854 [DEBUG] [Thread-124411] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:18:30.854 [DEBUG] [Thread-124411] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:18:30.854 [DEBUG] [Thread-124411] [transport.py] [_log()] Compression: none
2025-11-03T23:18:30.854 [DEBUG] [Thread-124411] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:18:30.912 [DEBUG] [Thread-124411] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:18:30.912 [DEBUG] [Thread-124411] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:18:30.912 [DEBUG] [Thread-124411] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:18:30.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:18:30.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:18:30.969 [DEBUG] [Thread-124411] [transport.py] [_log()] userauth is OK
2025-11-03T23:18:30.969 [DEBUG] [Thread-124411] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:18:30.969 [DEBUG] [Thread-124411] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:18:30.969 [DEBUG] [Thread-124411] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:18:30.969 [DEBUG] [Thread-124411] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:18:30.983 [INFO] [Thread-124411] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:18:30.983 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:18:30.983 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:18:31.857 [DEBUG] [Thread-124411] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:18:31.857 [DEBUG] [Thread-124411] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:18:31.905 [DEBUG] [Thread-124411] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:18:31.905 [DEBUG] [Thread-124411] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:18:31.914 [DEBUG] [Thread-124411] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:18:31.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:18:31.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:18:31.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:18:31.940 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:18:31.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:18:31.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:18:31.948 [DEBUG] [Thread-124411] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:18:32.177 [DEBUG] [Thread-124413 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:18:40.915 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:18:47.239 [DEBUG] [Thread-124414 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:19:01.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:19:01.957 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:19:01.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:19:02.268 [DEBUG] [Thread-124415 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:19:02.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 18, 27), 29.96, 12.16, 0.0, 15.51, 18.75, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:19:02.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:18:27
2025-11-03T23:19:02.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:19:03.101 [DEBUG] [Thread-124416] [transport.py] [_log()] starting thread (client mode): 0xed426b0
2025-11-03T23:19:03.101 [DEBUG] [Thread-124416] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:19:03.116 [DEBUG] [Thread-124416] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:19:03.117 [INFO] [Thread-124416] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:19:03.118 [DEBUG] [Thread-124416] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:19:03.118 [DEBUG] [Thread-124416] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:19:03.119 [DEBUG] [Thread-124416] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:19:03.119 [DEBUG] [Thread-124416] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:19:03.119 [DEBUG] [Thread-124416] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:19:03.119 [DEBUG] [Thread-124416] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:19:03.119 [DEBUG] [Thread-124416] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:19:03.119 [DEBUG] [Thread-124416] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:19:03.119 [DEBUG] [Thread-124416] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:19:03.119 [DEBUG] [Thread-124416] [transport.py] [_log()] client lang: <none>
2025-11-03T23:19:03.119 [DEBUG] [Thread-124416] [transport.py] [_log()] server lang: <none>
2025-11-03T23:19:03.119 [DEBUG] [Thread-124416] [transport.py] [_log()] kex follows: False
2025-11-03T23:19:03.119 [DEBUG] [Thread-124416] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:19:03.119 [DEBUG] [Thread-124416] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:19:03.119 [DEBUG] [Thread-124416] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:19:03.119 [DEBUG] [Thread-124416] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:19:03.119 [DEBUG] [Thread-124416] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:19:03.119 [DEBUG] [Thread-124416] [transport.py] [_log()] Compression: none
2025-11-03T23:19:03.119 [DEBUG] [Thread-124416] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:19:03.135 [DEBUG] [Thread-124416] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:19:03.136 [DEBUG] [Thread-124416] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:19:03.137 [DEBUG] [Thread-124416] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:19:03.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:19:03.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:19:03.139 [DEBUG] [Thread-124416] [transport.py] [_log()] userauth is OK
2025-11-03T23:19:03.140 [DEBUG] [Thread-124416] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:19:03.140 [DEBUG] [Thread-124416] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:19:03.140 [DEBUG] [Thread-124416] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:19:03.140 [DEBUG] [Thread-124416] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:19:03.165 [INFO] [Thread-124416] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:19:03.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:19:03.769 [DEBUG] [Thread-124416] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:19:03.769 [DEBUG] [Thread-124416] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:19:03.770 [DEBUG] [Thread-124416] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:19:03.810 [DEBUG] [Thread-124416] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:19:03.810 [DEBUG] [Thread-124416] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:19:03.814 [DEBUG] [Thread-124416] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:19:03.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:19:03.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:19:03.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:19:03.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:19:03.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:19:03.837 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:19:03.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:19:03.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:19:03.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:19:03.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.887947 -999.00  +18.80  15.31     17   -6.40 1 1 1 1 1     0    0 24.44 -31.49 ZNESW 14.6 15.3 312.6 18.5 18.9 -25.3 18.8 -24.1 18.6 -23.7 18.9 -24.8
2025-11-03T23:19:03.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:19:03.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:19:03.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.887947
2025-11-03T23:19:03.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:19:03.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:19:03.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:19:03.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:19:03.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:19:03.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:18:27', tmtdew=29.96, humidity=12.16, cloud=0.0, wind=15.51, temperature=18.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:19:00', seeing=1.01, atlas_timestamp='2025-11-03T21:18:38.621', atlas_cloud=1, atlas_rain=1, zp_data=[-0.055749999999999744, 0.028750000000000497, -0.0007500000000000284, -0.1255000000000006, 0.05550000000000033, -0.08824999999999861, -0.15000000000000036, -0.03725000000000023, 0.0365000000000002, -0.022999999999999687, 0.08225000000000016, 0.03850000000000087, 0.12849999999999895, -0.11675000000000146, -0.7540000000000013, -0.22000000000000064, -0.07675000000000054, 0.0495000000000001, 0.14599999999999902, 0.07974999999999888, 0.10699999999999932, 0.05474999999999852, -0.739749999999999, -0.18324999999999925, 0.08199999999999896, 0.1255000000000006, 0.19875000000000043, 0.19100000000000072, 0.22300000000000075, 0.08300000000000196, 0.07000000000000028, 0.03550000000000075, 0.09774999999999956], zp_timestamp='2025-11-03T21:16:00')
2025-11-03T23:19:03.838 [DEBUG] [Thread-124416] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:19:03.911 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:19:03.922 [DEBUG] [Thread-124419] [transport.py] [_log()] starting thread (client mode): 0xed42380
2025-11-03T23:19:03.922 [DEBUG] [Thread-124419] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:19:03.937 [DEBUG] [Thread-124419] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:19:03.937 [INFO] [Thread-124419] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:19:03.944 [DEBUG] [Thread-124419] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:19:03.945 [DEBUG] [Thread-124419] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:19:03.945 [DEBUG] [Thread-124419] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:19:03.945 [DEBUG] [Thread-124419] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:19:03.945 [DEBUG] [Thread-124419] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:19:03.945 [DEBUG] [Thread-124419] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:19:03.945 [DEBUG] [Thread-124419] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:19:03.945 [DEBUG] [Thread-124419] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:19:03.945 [DEBUG] [Thread-124419] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:19:03.945 [DEBUG] [Thread-124419] [transport.py] [_log()] client lang: <none>
2025-11-03T23:19:03.945 [DEBUG] [Thread-124419] [transport.py] [_log()] server lang: <none>
2025-11-03T23:19:03.945 [DEBUG] [Thread-124419] [transport.py] [_log()] kex follows: False
2025-11-03T23:19:03.945 [DEBUG] [Thread-124419] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:19:03.946 [DEBUG] [Thread-124419] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:19:03.946 [DEBUG] [Thread-124419] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:19:03.946 [DEBUG] [Thread-124419] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:19:03.946 [DEBUG] [Thread-124419] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:19:03.946 [DEBUG] [Thread-124419] [transport.py] [_log()] Compression: none
2025-11-03T23:19:03.946 [DEBUG] [Thread-124419] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:19:04.000 [DEBUG] [Thread-124419] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:19:04.000 [DEBUG] [Thread-124419] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:19:04.001 [DEBUG] [Thread-124419] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:19:04.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:19:04.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:19:04.057 [DEBUG] [Thread-124419] [transport.py] [_log()] userauth is OK
2025-11-03T23:19:04.057 [DEBUG] [Thread-124419] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:19:04.066 [DEBUG] [Thread-124419] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:19:04.067 [DEBUG] [Thread-124419] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:19:04.067 [DEBUG] [Thread-124419] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:19:04.090 [INFO] [Thread-124419] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:19:04.091 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:19:04.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:19:04.576 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:19:04.577 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:19:04.906 [DEBUG] [Thread-124419] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:19:04.914 [DEBUG] [Thread-124419] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:19:04.953 [DEBUG] [Thread-124419] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:19:04.953 [DEBUG] [Thread-124419] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:19:04.962 [DEBUG] [Thread-124419] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:19:04.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:19:04.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:19:04.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:19:04.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:19:04.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:19:04.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:19:04.994 [DEBUG] [Thread-124419] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:19:17.299 [DEBUG] [Thread-124421 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:19:27.681 [DEBUG] [Thread-124422 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:19:32.363 [DEBUG] [Thread-124423 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:19:34.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:19:34.999 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:19:35.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:19:37.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 18, 59), 29.88, 12.2, 0.0, 15.37, 18.76, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:19:37.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:18:59
2025-11-03T23:19:37.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:19:37.567 [DEBUG] [Thread-124424] [transport.py] [_log()] starting thread (client mode): 0xedb2740
2025-11-03T23:19:37.567 [DEBUG] [Thread-124424] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:19:37.586 [DEBUG] [Thread-124424] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:19:37.586 [INFO] [Thread-124424] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:19:37.590 [DEBUG] [Thread-124424] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:19:37.590 [DEBUG] [Thread-124424] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:19:37.590 [DEBUG] [Thread-124424] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:19:37.590 [DEBUG] [Thread-124424] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:19:37.590 [DEBUG] [Thread-124424] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:19:37.590 [DEBUG] [Thread-124424] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:19:37.590 [DEBUG] [Thread-124424] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:19:37.590 [DEBUG] [Thread-124424] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:19:37.590 [DEBUG] [Thread-124424] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:19:37.590 [DEBUG] [Thread-124424] [transport.py] [_log()] client lang: <none>
2025-11-03T23:19:37.590 [DEBUG] [Thread-124424] [transport.py] [_log()] server lang: <none>
2025-11-03T23:19:37.590 [DEBUG] [Thread-124424] [transport.py] [_log()] kex follows: False
2025-11-03T23:19:37.590 [DEBUG] [Thread-124424] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:19:37.591 [DEBUG] [Thread-124424] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:19:37.591 [DEBUG] [Thread-124424] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:19:37.591 [DEBUG] [Thread-124424] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:19:37.591 [DEBUG] [Thread-124424] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:19:37.592 [DEBUG] [Thread-124424] [transport.py] [_log()] Compression: none
2025-11-03T23:19:37.592 [DEBUG] [Thread-124424] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:19:37.609 [DEBUG] [Thread-124424] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:19:37.609 [DEBUG] [Thread-124424] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:19:37.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:19:37.609 [DEBUG] [Thread-124424] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:19:37.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:19:37.610 [DEBUG] [Thread-124424] [transport.py] [_log()] userauth is OK
2025-11-03T23:19:37.610 [DEBUG] [Thread-124424] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:19:37.611 [DEBUG] [Thread-124424] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:19:37.611 [DEBUG] [Thread-124424] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:19:37.611 [DEBUG] [Thread-124424] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:19:37.621 [INFO] [Thread-124424] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:19:37.623 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:19:38.209 [DEBUG] [Thread-124424] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:19:38.209 [DEBUG] [Thread-124424] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:19:38.210 [DEBUG] [Thread-124424] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:19:38.250 [DEBUG] [Thread-124424] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:19:38.250 [DEBUG] [Thread-124424] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:19:38.252 [DEBUG] [Thread-124424] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:19:38.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:19:38.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:19:38.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:19:38.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:19:38.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:19:38.276 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:19:38.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:19:38.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:19:38.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:19:38.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.888294 -999.00  +18.80  13.00     17   -6.40 1 1 1 1 1     0    0 24.32 -29.66 ZNESW 13.8 13.0 308.0 19.9 18.9 -25.3 18.9 -24.3 18.7 -24.0 18.9 -24.9
2025-11-03T23:19:38.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:19:38.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:19:38.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.888294
2025-11-03T23:19:38.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:19:38.279 [DEBUG] [Thread-124424] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:19:38.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:19:38.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:19:38.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:19:38.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:19:38.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:18:59', tmtdew=29.88, humidity=12.2, cloud=0.0, wind=15.37, temperature=18.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:19:33', seeing=1.08, atlas_timestamp='2025-11-03T21:19:08.602', atlas_cloud=1, atlas_rain=1, zp_data=[-0.055749999999999744, 0.028750000000000497, -0.0007500000000000284, -0.1255000000000006, 0.05550000000000033, -0.08824999999999861, -0.15000000000000036, -0.03725000000000023, 0.0365000000000002, -0.022999999999999687, 0.08225000000000016, 0.03850000000000087, 0.12849999999999895, -0.11675000000000146, -0.7540000000000013, -0.22000000000000064, -0.07675000000000054, 0.0495000000000001, 0.14599999999999902, 0.07974999999999888, 0.10699999999999932, 0.05474999999999852, -0.739749999999999, -0.18324999999999925, 0.08199999999999896, 0.1255000000000006, 0.19875000000000043, 0.19100000000000072, 0.22300000000000075, 0.08300000000000196, 0.07000000000000028, 0.03550000000000075, 0.09774999999999956], zp_timestamp='2025-11-03T21:16:00')
2025-11-03T23:19:38.362 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:19:38.376 [DEBUG] [Thread-124427] [transport.py] [_log()] starting thread (client mode): 0xed044f0
2025-11-03T23:19:38.376 [DEBUG] [Thread-124427] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:19:38.397 [DEBUG] [Thread-124427] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:19:38.397 [INFO] [Thread-124427] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:19:38.407 [DEBUG] [Thread-124427] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:19:38.408 [DEBUG] [Thread-124427] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:19:38.408 [DEBUG] [Thread-124427] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:19:38.408 [DEBUG] [Thread-124427] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:19:38.408 [DEBUG] [Thread-124427] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:19:38.408 [DEBUG] [Thread-124427] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:19:38.408 [DEBUG] [Thread-124427] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:19:38.408 [DEBUG] [Thread-124427] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:19:38.408 [DEBUG] [Thread-124427] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:19:38.408 [DEBUG] [Thread-124427] [transport.py] [_log()] client lang: <none>
2025-11-03T23:19:38.408 [DEBUG] [Thread-124427] [transport.py] [_log()] server lang: <none>
2025-11-03T23:19:38.408 [DEBUG] [Thread-124427] [transport.py] [_log()] kex follows: False
2025-11-03T23:19:38.408 [DEBUG] [Thread-124427] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:19:38.408 [DEBUG] [Thread-124427] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:19:38.409 [DEBUG] [Thread-124427] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:19:38.409 [DEBUG] [Thread-124427] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:19:38.409 [DEBUG] [Thread-124427] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:19:38.409 [DEBUG] [Thread-124427] [transport.py] [_log()] Compression: none
2025-11-03T23:19:38.409 [DEBUG] [Thread-124427] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:19:38.466 [DEBUG] [Thread-124427] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:19:38.466 [DEBUG] [Thread-124427] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:19:38.467 [DEBUG] [Thread-124427] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:19:38.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:19:38.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:19:38.526 [DEBUG] [Thread-124427] [transport.py] [_log()] userauth is OK
2025-11-03T23:19:38.526 [DEBUG] [Thread-124427] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:19:38.526 [DEBUG] [Thread-124427] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:19:38.526 [DEBUG] [Thread-124427] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:19:38.526 [DEBUG] [Thread-124427] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:19:38.546 [INFO] [Thread-124427] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:19:38.546 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:19:38.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:19:39.401 [DEBUG] [Thread-124427] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:19:39.401 [DEBUG] [Thread-124427] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:19:39.449 [DEBUG] [Thread-124427] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:19:39.449 [DEBUG] [Thread-124427] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:19:39.459 [DEBUG] [Thread-124427] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:19:39.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:19:39.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:19:39.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:19:39.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:19:39.489 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:19:39.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:19:39.498 [DEBUG] [Thread-124427] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:19:47.395 [DEBUG] [Thread-124429 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:20:02.442 [DEBUG] [Thread-124430 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:20:04.778 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:20:04.779 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:20:09.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:20:09.520 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:20:09.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:20:11.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 19, 32), 29.91, 12.16, 0.0, 15.69, 18.75, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:20:11.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:19:32
2025-11-03T23:20:11.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:20:12.054 [DEBUG] [Thread-124431] [transport.py] [_log()] starting thread (client mode): 0xed5f220
2025-11-03T23:20:12.054 [DEBUG] [Thread-124431] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:20:12.075 [DEBUG] [Thread-124431] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:20:12.075 [INFO] [Thread-124431] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:20:12.078 [DEBUG] [Thread-124431] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:20:12.078 [DEBUG] [Thread-124431] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:20:12.079 [DEBUG] [Thread-124431] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:20:12.079 [DEBUG] [Thread-124431] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:20:12.079 [DEBUG] [Thread-124431] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:20:12.079 [DEBUG] [Thread-124431] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:20:12.079 [DEBUG] [Thread-124431] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:20:12.079 [DEBUG] [Thread-124431] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:20:12.079 [DEBUG] [Thread-124431] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:20:12.079 [DEBUG] [Thread-124431] [transport.py] [_log()] client lang: <none>
2025-11-03T23:20:12.079 [DEBUG] [Thread-124431] [transport.py] [_log()] server lang: <none>
2025-11-03T23:20:12.079 [DEBUG] [Thread-124431] [transport.py] [_log()] kex follows: False
2025-11-03T23:20:12.079 [DEBUG] [Thread-124431] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:20:12.079 [DEBUG] [Thread-124431] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:20:12.079 [DEBUG] [Thread-124431] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:20:12.079 [DEBUG] [Thread-124431] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:20:12.079 [DEBUG] [Thread-124431] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:20:12.079 [DEBUG] [Thread-124431] [transport.py] [_log()] Compression: none
2025-11-03T23:20:12.079 [DEBUG] [Thread-124431] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:20:12.097 [DEBUG] [Thread-124431] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:20:12.097 [DEBUG] [Thread-124431] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:20:12.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:20:12.099 [DEBUG] [Thread-124431] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:20:12.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:20:12.102 [DEBUG] [Thread-124431] [transport.py] [_log()] userauth is OK
2025-11-03T23:20:12.102 [DEBUG] [Thread-124431] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:20:12.102 [DEBUG] [Thread-124431] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:20:12.102 [DEBUG] [Thread-124431] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:20:12.102 [DEBUG] [Thread-124431] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:20:12.123 [INFO] [Thread-124431] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:20:12.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:20:16.252 [DEBUG] [Thread-124431] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:20:16.252 [DEBUG] [Thread-124431] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:20:16.252 [DEBUG] [Thread-124431] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:20:16.292 [DEBUG] [Thread-124431] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:20:16.292 [DEBUG] [Thread-124431] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:20:16.295 [DEBUG] [Thread-124431] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:20:16.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:20:16.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:20:16.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:20:16.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:20:16.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:20:16.323 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:20:16.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:20:16.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:20:16.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:20:16.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.888294 -999.00  +18.80  13.00     17   -6.40 1 1 1 1 1     0    0 24.32 -29.66 ZNESW 13.8 13.0 308.0 19.9 18.9 -25.3 18.9 -24.3 18.7 -24.0 18.9 -24.9
2025-11-03T23:20:16.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:20:16.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:20:16.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.888294
2025-11-03T23:20:16.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:20:16.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:20:16.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:20:16.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:20:16.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:20:16.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:19:32', tmtdew=29.91, humidity=12.16, cloud=0.0, wind=15.69, temperature=18.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:20:07', seeing=0.99, atlas_timestamp='2025-11-03T21:19:08.602', atlas_cloud=1, atlas_rain=1, zp_data=[-0.055749999999999744, 0.028750000000000497, -0.0007500000000000284, -0.1255000000000006, 0.05550000000000033, -0.08824999999999861, -0.15000000000000036, -0.03725000000000023, 0.0365000000000002, -0.022999999999999687, 0.08225000000000016, 0.03850000000000087, 0.12849999999999895, -0.11675000000000146, -0.7540000000000013, -0.22000000000000064, -0.07675000000000054, 0.0495000000000001, 0.14599999999999902, 0.07974999999999888, 0.10699999999999932, 0.05474999999999852, -0.739749999999999, -0.18324999999999925, 0.08199999999999896, 0.1255000000000006, 0.19875000000000043, 0.19100000000000072, 0.22300000000000075, 0.08300000000000196, 0.07000000000000028, 0.03550000000000075, 0.09774999999999956], zp_timestamp='2025-11-03T21:16:00')
2025-11-03T23:20:16.325 [DEBUG] [Thread-124431] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:20:16.397 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:20:16.410 [DEBUG] [Thread-124434] [transport.py] [_log()] starting thread (client mode): 0xed5e9e0
2025-11-03T23:20:16.410 [DEBUG] [Thread-124434] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:20:16.425 [DEBUG] [Thread-124434] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:20:16.425 [INFO] [Thread-124434] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:20:16.434 [DEBUG] [Thread-124434] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:20:16.434 [DEBUG] [Thread-124434] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:20:16.434 [DEBUG] [Thread-124434] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:20:16.434 [DEBUG] [Thread-124434] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:20:16.434 [DEBUG] [Thread-124434] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:20:16.434 [DEBUG] [Thread-124434] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:20:16.434 [DEBUG] [Thread-124434] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:20:16.434 [DEBUG] [Thread-124434] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:20:16.434 [DEBUG] [Thread-124434] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:20:16.434 [DEBUG] [Thread-124434] [transport.py] [_log()] client lang: <none>
2025-11-03T23:20:16.434 [DEBUG] [Thread-124434] [transport.py] [_log()] server lang: <none>
2025-11-03T23:20:16.434 [DEBUG] [Thread-124434] [transport.py] [_log()] kex follows: False
2025-11-03T23:20:16.434 [DEBUG] [Thread-124434] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:20:16.434 [DEBUG] [Thread-124434] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:20:16.434 [DEBUG] [Thread-124434] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:20:16.434 [DEBUG] [Thread-124434] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:20:16.434 [DEBUG] [Thread-124434] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:20:16.434 [DEBUG] [Thread-124434] [transport.py] [_log()] Compression: none
2025-11-03T23:20:16.434 [DEBUG] [Thread-124434] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:20:16.492 [DEBUG] [Thread-124434] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:20:16.492 [DEBUG] [Thread-124434] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:20:16.492 [DEBUG] [Thread-124434] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:20:16.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:20:16.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:20:16.549 [DEBUG] [Thread-124434] [transport.py] [_log()] userauth is OK
2025-11-03T23:20:16.549 [DEBUG] [Thread-124434] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:20:16.549 [DEBUG] [Thread-124434] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:20:16.549 [DEBUG] [Thread-124434] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:20:16.549 [DEBUG] [Thread-124434] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:20:16.564 [INFO] [Thread-124434] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:20:16.564 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:20:16.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:20:17.431 [DEBUG] [Thread-124434] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:20:17.440 [DEBUG] [Thread-124434] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:20:17.471 [DEBUG] [Thread-124436 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:20:17.480 [DEBUG] [Thread-124434] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:20:17.481 [DEBUG] [Thread-124434] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:20:17.492 [DEBUG] [Thread-124434] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:20:17.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:20:17.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:20:17.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:20:17.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:20:17.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:20:17.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:20:17.536 [DEBUG] [Thread-124434] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:20:27.830 [DEBUG] [Thread-124437 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:20:32.520 [DEBUG] [Thread-124438 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:20:47.546 [DEBUG] [Thread-124439 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:20:47.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:20:47.556 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:20:47.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:20:48.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 20, 42), 29.89, 12.2, 0.0, 15.79, 18.78, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:20:48.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:20:42
2025-11-03T23:20:48.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:20:48.605 [DEBUG] [Thread-124440] [transport.py] [_log()] starting thread (client mode): 0x11760310
2025-11-03T23:20:48.605 [DEBUG] [Thread-124440] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:20:48.624 [DEBUG] [Thread-124440] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:20:48.624 [INFO] [Thread-124440] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:20:48.627 [DEBUG] [Thread-124440] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:20:48.628 [DEBUG] [Thread-124440] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:20:48.628 [DEBUG] [Thread-124440] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:20:48.628 [DEBUG] [Thread-124440] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:20:48.628 [DEBUG] [Thread-124440] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:20:48.628 [DEBUG] [Thread-124440] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:20:48.628 [DEBUG] [Thread-124440] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:20:48.628 [DEBUG] [Thread-124440] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:20:48.628 [DEBUG] [Thread-124440] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:20:48.628 [DEBUG] [Thread-124440] [transport.py] [_log()] client lang: <none>
2025-11-03T23:20:48.628 [DEBUG] [Thread-124440] [transport.py] [_log()] server lang: <none>
2025-11-03T23:20:48.628 [DEBUG] [Thread-124440] [transport.py] [_log()] kex follows: False
2025-11-03T23:20:48.628 [DEBUG] [Thread-124440] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:20:48.628 [DEBUG] [Thread-124440] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:20:48.629 [DEBUG] [Thread-124440] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:20:48.629 [DEBUG] [Thread-124440] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:20:48.629 [DEBUG] [Thread-124440] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:20:48.629 [DEBUG] [Thread-124440] [transport.py] [_log()] Compression: none
2025-11-03T23:20:48.629 [DEBUG] [Thread-124440] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:20:48.646 [DEBUG] [Thread-124440] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:20:48.647 [DEBUG] [Thread-124440] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:20:48.648 [DEBUG] [Thread-124440] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:20:48.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:20:48.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:20:48.690 [DEBUG] [Thread-124440] [transport.py] [_log()] userauth is OK
2025-11-03T23:20:48.691 [DEBUG] [Thread-124440] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:20:48.691 [DEBUG] [Thread-124440] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:20:48.691 [DEBUG] [Thread-124440] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:20:48.691 [DEBUG] [Thread-124440] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:20:48.723 [INFO] [Thread-124440] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:20:48.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:20:49.369 [DEBUG] [Thread-124440] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:20:49.370 [DEBUG] [Thread-124440] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:20:49.370 [DEBUG] [Thread-124440] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:20:49.411 [DEBUG] [Thread-124440] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:20:49.411 [DEBUG] [Thread-124440] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:20:49.414 [DEBUG] [Thread-124440] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:20:49.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:20:49.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:20:49.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:20:49.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:20:49.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:20:49.451 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:20:49.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:20:49.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:20:49.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:20:49.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.888988 -999.00  +18.80  13.64     17   -6.40 1 1 1 1 1     0    0 24.47 -30.30 ZNESW 14.8 13.6 303.6 20.7 18.9 -25.1 18.9 -24.2 18.6 -23.9 18.9 -24.6
2025-11-03T23:20:49.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:20:49.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:20:49.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.888988
2025-11-03T23:20:49.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:20:49.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:20:49.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:20:49.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:20:49.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:20:49.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:20:42', tmtdew=29.89, humidity=12.2, cloud=0.0, wind=15.79, temperature=18.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:20:42', seeing=0.99, atlas_timestamp='2025-11-03T21:20:08.563', atlas_cloud=1, atlas_rain=1, zp_data=[-0.055749999999999744, 0.028750000000000497, -0.0007500000000000284, -0.1255000000000006, 0.05550000000000033, -0.08824999999999861, -0.15000000000000036, -0.03725000000000023, 0.0365000000000002, -0.022999999999999687, 0.08225000000000016, 0.03850000000000087, 0.12849999999999895, -0.11675000000000146, -0.7540000000000013, -0.22000000000000064, -0.07675000000000054, 0.0495000000000001, 0.14599999999999902, 0.07974999999999888, 0.10699999999999932, 0.05474999999999852, -0.739749999999999, -0.18324999999999925, 0.08199999999999896, 0.1255000000000006, 0.19875000000000043, 0.19100000000000072, 0.22300000000000075, 0.08300000000000196, 0.07000000000000028, 0.03550000000000075, 0.09774999999999956], zp_timestamp='2025-11-03T21:16:00')
2025-11-03T23:20:49.455 [DEBUG] [Thread-124440] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:20:49.544 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:20:49.557 [DEBUG] [Thread-124443] [transport.py] [_log()] starting thread (client mode): 0x11762c50
2025-11-03T23:20:49.557 [DEBUG] [Thread-124443] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:20:49.572 [DEBUG] [Thread-124443] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:20:49.572 [INFO] [Thread-124443] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:20:49.580 [DEBUG] [Thread-124443] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:20:49.580 [DEBUG] [Thread-124443] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:20:49.580 [DEBUG] [Thread-124443] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:20:49.580 [DEBUG] [Thread-124443] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:20:49.580 [DEBUG] [Thread-124443] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:20:49.580 [DEBUG] [Thread-124443] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:20:49.580 [DEBUG] [Thread-124443] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:20:49.580 [DEBUG] [Thread-124443] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:20:49.581 [DEBUG] [Thread-124443] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:20:49.581 [DEBUG] [Thread-124443] [transport.py] [_log()] client lang: <none>
2025-11-03T23:20:49.581 [DEBUG] [Thread-124443] [transport.py] [_log()] server lang: <none>
2025-11-03T23:20:49.581 [DEBUG] [Thread-124443] [transport.py] [_log()] kex follows: False
2025-11-03T23:20:49.581 [DEBUG] [Thread-124443] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:20:49.581 [DEBUG] [Thread-124443] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:20:49.581 [DEBUG] [Thread-124443] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:20:49.581 [DEBUG] [Thread-124443] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:20:49.581 [DEBUG] [Thread-124443] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:20:49.581 [DEBUG] [Thread-124443] [transport.py] [_log()] Compression: none
2025-11-03T23:20:49.581 [DEBUG] [Thread-124443] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:20:49.642 [DEBUG] [Thread-124443] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:20:49.643 [DEBUG] [Thread-124443] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:20:49.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:20:49.644 [DEBUG] [Thread-124443] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:20:49.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:20:49.701 [DEBUG] [Thread-124443] [transport.py] [_log()] userauth is OK
2025-11-03T23:20:49.702 [DEBUG] [Thread-124443] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:20:49.702 [DEBUG] [Thread-124443] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:20:49.702 [DEBUG] [Thread-124443] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:20:49.702 [DEBUG] [Thread-124443] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:20:49.723 [INFO] [Thread-124443] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:20:49.723 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:20:49.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:20:50.596 [DEBUG] [Thread-124443] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:20:50.597 [DEBUG] [Thread-124443] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:20:50.644 [DEBUG] [Thread-124443] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:20:50.644 [DEBUG] [Thread-124443] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:20:50.653 [DEBUG] [Thread-124443] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:20:50.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:20:50.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:20:50.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:20:50.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:20:50.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:20:50.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:20:50.685 [DEBUG] [Thread-124443] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:21:02.595 [DEBUG] [Thread-124445 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:21:04.980 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:21:04.981 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:21:17.630 [DEBUG] [Thread-124446 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:21:20.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:21:20.682 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:21:20.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:21:21.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 21, 14), 29.92, 12.15, 0.0, 15.81, 18.7, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:21:21.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:21:14
2025-11-03T23:21:21.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:21:21.772 [DEBUG] [Thread-124447] [transport.py] [_log()] starting thread (client mode): 0xed40790
2025-11-03T23:21:21.772 [DEBUG] [Thread-124447] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:21:21.783 [DEBUG] [Thread-124447] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:21:21.783 [INFO] [Thread-124447] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:21:21.786 [DEBUG] [Thread-124447] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:21:21.786 [DEBUG] [Thread-124447] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:21:21.787 [DEBUG] [Thread-124447] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:21:21.787 [DEBUG] [Thread-124447] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:21:21.787 [DEBUG] [Thread-124447] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:21:21.787 [DEBUG] [Thread-124447] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:21:21.787 [DEBUG] [Thread-124447] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:21:21.787 [DEBUG] [Thread-124447] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:21:21.787 [DEBUG] [Thread-124447] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:21:21.787 [DEBUG] [Thread-124447] [transport.py] [_log()] client lang: <none>
2025-11-03T23:21:21.787 [DEBUG] [Thread-124447] [transport.py] [_log()] server lang: <none>
2025-11-03T23:21:21.787 [DEBUG] [Thread-124447] [transport.py] [_log()] kex follows: False
2025-11-03T23:21:21.787 [DEBUG] [Thread-124447] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:21:21.787 [DEBUG] [Thread-124447] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:21:21.788 [DEBUG] [Thread-124447] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:21:21.788 [DEBUG] [Thread-124447] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:21:21.788 [DEBUG] [Thread-124447] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:21:21.789 [DEBUG] [Thread-124447] [transport.py] [_log()] Compression: none
2025-11-03T23:21:21.789 [DEBUG] [Thread-124447] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:21:21.810 [DEBUG] [Thread-124447] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:21:21.811 [DEBUG] [Thread-124447] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:21:21.812 [DEBUG] [Thread-124447] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:21:21.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:21:21.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:21:21.814 [DEBUG] [Thread-124447] [transport.py] [_log()] userauth is OK
2025-11-03T23:21:21.814 [DEBUG] [Thread-124447] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:21:21.814 [DEBUG] [Thread-124447] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:21:21.814 [DEBUG] [Thread-124447] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:21:21.814 [DEBUG] [Thread-124447] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:21:21.838 [INFO] [Thread-124447] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:21:21.839 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:21:22.623 [DEBUG] [Thread-124447] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:21:22.623 [DEBUG] [Thread-124447] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:21:22.624 [DEBUG] [Thread-124447] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:21:22.665 [DEBUG] [Thread-124447] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:21:22.666 [DEBUG] [Thread-124447] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:21:22.669 [DEBUG] [Thread-124447] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:21:22.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:21:22.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:21:22.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:21:22.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:21:22.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:21:22.694 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:21:22.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:21:22.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:21:22.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:21:22.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.889335 -999.00  +18.80  14.70     17   -6.40 1 1 1 1 1     0    0 24.66 -31.95 ZNESW 13.5 14.7 306.8 17.2 18.9 -25.2 18.9 -24.2 18.6 -24.0 18.9 -24.6
2025-11-03T23:21:22.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:21:22.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:21:22.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.889335
2025-11-03T23:21:22.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:21:22.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:21:22.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:21:22.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:21:22.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:21:22.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:21:14', tmtdew=29.92, humidity=12.15, cloud=0.0, wind=15.81, temperature=18.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:21:15', seeing=1.05, atlas_timestamp='2025-11-03T21:20:38.544', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03125, 0.011250000000000426, 0.07925000000000004, -0.0365000000000002, -0.01249999999999929, -0.08474999999999966, -0.09249999999999936, -0.004749999999999588, 0.0779999999999994, 0.019000000000000128, 0.025249999999999773, 0.045499999999998764, 0.1349999999999998, 0.006249999999999645, -1.0470000000000006, -0.16000000000000014, 0.03924999999999912, 0.08649999999999913, 0.1745000000000001, 0.05524999999999913, 0.13349999999999795, 0.08674999999999855, -1.1012499999999985, -0.2647499999999994, 0.07049999999999912, 0.16350000000000087, 0.19024999999999892, 0.20750000000000135, 0.22300000000000075, -0.013999999999999346, -0.13149999999999906, 0.06900000000000084, 0.04774999999999885], zp_timestamp='2025-11-03T21:19:00')
2025-11-03T23:21:22.695 [DEBUG] [Thread-124447] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:21:22.767 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:21:22.783 [DEBUG] [Thread-124450] [transport.py] [_log()] starting thread (client mode): 0xed5f040
2025-11-03T23:21:22.783 [DEBUG] [Thread-124450] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:21:22.798 [DEBUG] [Thread-124450] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:21:22.799 [INFO] [Thread-124450] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:21:22.807 [DEBUG] [Thread-124450] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:21:22.808 [DEBUG] [Thread-124450] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:21:22.808 [DEBUG] [Thread-124450] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:21:22.808 [DEBUG] [Thread-124450] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:21:22.808 [DEBUG] [Thread-124450] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:21:22.808 [DEBUG] [Thread-124450] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:21:22.808 [DEBUG] [Thread-124450] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:21:22.808 [DEBUG] [Thread-124450] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:21:22.808 [DEBUG] [Thread-124450] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:21:22.808 [DEBUG] [Thread-124450] [transport.py] [_log()] client lang: <none>
2025-11-03T23:21:22.808 [DEBUG] [Thread-124450] [transport.py] [_log()] server lang: <none>
2025-11-03T23:21:22.808 [DEBUG] [Thread-124450] [transport.py] [_log()] kex follows: False
2025-11-03T23:21:22.808 [DEBUG] [Thread-124450] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:21:22.808 [DEBUG] [Thread-124450] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:21:22.809 [DEBUG] [Thread-124450] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:21:22.809 [DEBUG] [Thread-124450] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:21:22.809 [DEBUG] [Thread-124450] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:21:22.809 [DEBUG] [Thread-124450] [transport.py] [_log()] Compression: none
2025-11-03T23:21:22.809 [DEBUG] [Thread-124450] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:21:22.866 [DEBUG] [Thread-124450] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:21:22.867 [DEBUG] [Thread-124450] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:21:22.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:21:22.868 [DEBUG] [Thread-124450] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:21:22.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:21:22.926 [DEBUG] [Thread-124450] [transport.py] [_log()] userauth is OK
2025-11-03T23:21:22.926 [DEBUG] [Thread-124450] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:21:22.926 [DEBUG] [Thread-124450] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:21:22.927 [DEBUG] [Thread-124450] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:21:22.927 [DEBUG] [Thread-124450] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:21:22.949 [INFO] [Thread-124450] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:21:22.949 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:21:22.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:21:23.782 [DEBUG] [Thread-124450] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:21:23.782 [DEBUG] [Thread-124450] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:21:23.831 [DEBUG] [Thread-124450] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:21:23.831 [DEBUG] [Thread-124450] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:21:23.840 [DEBUG] [Thread-124450] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:21:23.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:21:23.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:21:23.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:21:23.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:21:23.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:21:23.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:21:23.884 [DEBUG] [Thread-124450] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:21:28.189 [DEBUG] [Thread-124452 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:21:32.658 [DEBUG] [Thread-124453 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:21:47.724 [DEBUG] [Thread-124454 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:21:53.572 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:21:53.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:21:53.905 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:21:53.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:21:54.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 21, 48), 29.84, 12.23, 0.0, 16.04, 18.71, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:21:54.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:21:48
2025-11-03T23:21:54.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:21:54.905 [DEBUG] [Thread-124455] [transport.py] [_log()] starting thread (client mode): 0x11798550
2025-11-03T23:21:54.905 [DEBUG] [Thread-124455] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:21:54.926 [DEBUG] [Thread-124455] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:21:54.927 [INFO] [Thread-124455] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:21:54.930 [DEBUG] [Thread-124455] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:21:54.930 [DEBUG] [Thread-124455] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:21:54.930 [DEBUG] [Thread-124455] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:21:54.930 [DEBUG] [Thread-124455] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:21:54.930 [DEBUG] [Thread-124455] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:21:54.930 [DEBUG] [Thread-124455] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:21:54.930 [DEBUG] [Thread-124455] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:21:54.930 [DEBUG] [Thread-124455] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:21:54.930 [DEBUG] [Thread-124455] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:21:54.930 [DEBUG] [Thread-124455] [transport.py] [_log()] client lang: <none>
2025-11-03T23:21:54.930 [DEBUG] [Thread-124455] [transport.py] [_log()] server lang: <none>
2025-11-03T23:21:54.930 [DEBUG] [Thread-124455] [transport.py] [_log()] kex follows: False
2025-11-03T23:21:54.930 [DEBUG] [Thread-124455] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:21:54.930 [DEBUG] [Thread-124455] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:21:54.930 [DEBUG] [Thread-124455] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:21:54.930 [DEBUG] [Thread-124455] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:21:54.930 [DEBUG] [Thread-124455] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:21:54.930 [DEBUG] [Thread-124455] [transport.py] [_log()] Compression: none
2025-11-03T23:21:54.930 [DEBUG] [Thread-124455] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:21:54.947 [DEBUG] [Thread-124455] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:21:54.947 [DEBUG] [Thread-124455] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:21:54.947 [DEBUG] [Thread-124455] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:21:54.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:21:54.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:21:54.948 [DEBUG] [Thread-124455] [transport.py] [_log()] userauth is OK
2025-11-03T23:21:54.948 [DEBUG] [Thread-124455] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:21:54.948 [DEBUG] [Thread-124455] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:21:54.948 [DEBUG] [Thread-124455] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:21:54.948 [DEBUG] [Thread-124455] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:21:54.958 [INFO] [Thread-124455] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:21:54.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:21:55.586 [DEBUG] [Thread-124455] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:21:55.586 [DEBUG] [Thread-124455] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:21:55.586 [DEBUG] [Thread-124455] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:21:55.626 [DEBUG] [Thread-124455] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:21:55.626 [DEBUG] [Thread-124455] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:21:55.629 [DEBUG] [Thread-124455] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:21:55.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:21:55.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:21:55.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:21:55.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:21:55.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:21:55.649 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:21:55.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:21:55.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:21:55.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:21:55.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.889683 -999.00  +18.80  13.51     17   -6.40 1 1 1 1 1     0    0 24.62 -27.73 ZNESW 13.0 13.5 308.0 18.9 18.9 -25.2 18.9 -24.2 18.6 -24.1 18.9 -24.7
2025-11-03T23:21:55.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:21:55.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:21:55.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.889683
2025-11-03T23:21:55.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:21:55.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:21:55.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:21:55.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:21:55.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:21:55.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:21:48', tmtdew=29.84, humidity=12.23, cloud=0.0, wind=16.04, temperature=18.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:21:49', seeing=1.05, atlas_timestamp='2025-11-03T21:21:08.611', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03125, 0.011250000000000426, 0.07925000000000004, -0.0365000000000002, -0.01249999999999929, -0.08474999999999966, -0.09249999999999936, -0.004749999999999588, 0.0779999999999994, 0.019000000000000128, 0.025249999999999773, 0.045499999999998764, 0.1349999999999998, 0.006249999999999645, -1.0470000000000006, -0.16000000000000014, 0.03924999999999912, 0.08649999999999913, 0.1745000000000001, 0.05524999999999913, 0.13349999999999795, 0.08674999999999855, -1.1012499999999985, -0.2647499999999994, 0.07049999999999912, 0.16350000000000087, 0.19024999999999892, 0.20750000000000135, 0.22300000000000075, -0.013999999999999346, -0.13149999999999906, 0.06900000000000084, 0.04774999999999885], zp_timestamp='2025-11-03T21:19:00')
2025-11-03T23:21:55.650 [DEBUG] [Thread-124455] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:21:55.725 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:21:55.737 [DEBUG] [Thread-124458] [transport.py] [_log()] starting thread (client mode): 0xed426b0
2025-11-03T23:21:55.737 [DEBUG] [Thread-124458] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:21:55.752 [DEBUG] [Thread-124458] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:21:55.753 [INFO] [Thread-124458] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:21:55.760 [DEBUG] [Thread-124458] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:21:55.760 [DEBUG] [Thread-124458] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:21:55.760 [DEBUG] [Thread-124458] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:21:55.760 [DEBUG] [Thread-124458] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:21:55.760 [DEBUG] [Thread-124458] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:21:55.760 [DEBUG] [Thread-124458] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:21:55.760 [DEBUG] [Thread-124458] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:21:55.760 [DEBUG] [Thread-124458] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:21:55.760 [DEBUG] [Thread-124458] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:21:55.760 [DEBUG] [Thread-124458] [transport.py] [_log()] client lang: <none>
2025-11-03T23:21:55.760 [DEBUG] [Thread-124458] [transport.py] [_log()] server lang: <none>
2025-11-03T23:21:55.761 [DEBUG] [Thread-124458] [transport.py] [_log()] kex follows: False
2025-11-03T23:21:55.761 [DEBUG] [Thread-124458] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:21:55.761 [DEBUG] [Thread-124458] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:21:55.761 [DEBUG] [Thread-124458] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:21:55.761 [DEBUG] [Thread-124458] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:21:55.761 [DEBUG] [Thread-124458] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:21:55.761 [DEBUG] [Thread-124458] [transport.py] [_log()] Compression: none
2025-11-03T23:21:55.761 [DEBUG] [Thread-124458] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:21:55.815 [DEBUG] [Thread-124458] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:21:55.816 [DEBUG] [Thread-124458] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:21:55.816 [DEBUG] [Thread-124458] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:21:55.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:21:55.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:21:55.875 [DEBUG] [Thread-124458] [transport.py] [_log()] userauth is OK
2025-11-03T23:21:55.876 [DEBUG] [Thread-124458] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:21:55.876 [DEBUG] [Thread-124458] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:21:55.876 [DEBUG] [Thread-124458] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:21:55.876 [DEBUG] [Thread-124458] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:21:55.890 [INFO] [Thread-124458] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:21:55.890 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:21:55.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:21:56.732 [DEBUG] [Thread-124458] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:21:56.732 [DEBUG] [Thread-124458] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:21:56.779 [DEBUG] [Thread-124458] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:21:56.779 [DEBUG] [Thread-124458] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:21:56.788 [DEBUG] [Thread-124458] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:21:56.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:21:56.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:21:56.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:21:56.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:21:56.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:21:56.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:21:56.821 [DEBUG] [Thread-124458] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:21:56.880 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:22:01.967 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:22:02.753 [DEBUG] [Thread-124460 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:22:05.198 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:22:05.199 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:22:08.625 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:22:17.944 [DEBUG] [Thread-124461 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:22:26.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:22:26.852 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:22:26.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:22:27.726 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:22:29.003 [DEBUG] [Thread-124462 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:22:29.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 22, 21), 29.83, 12.23, 0.0, 15.23, 18.68, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:22:29.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:22:21
2025-11-03T23:22:29.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:22:29.895 [DEBUG] [Thread-124463] [transport.py] [_log()] starting thread (client mode): 0xed070d0
2025-11-03T23:22:29.897 [DEBUG] [Thread-124463] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:22:29.899 [DEBUG] [Thread-124463] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:22:29.901 [INFO] [Thread-124463] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:22:29.914 [DEBUG] [Thread-124463] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:22:29.915 [DEBUG] [Thread-124463] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:22:29.915 [DEBUG] [Thread-124463] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:22:29.915 [DEBUG] [Thread-124463] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:22:29.915 [DEBUG] [Thread-124463] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:22:29.915 [DEBUG] [Thread-124463] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:22:29.915 [DEBUG] [Thread-124463] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:22:29.916 [DEBUG] [Thread-124463] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:22:29.916 [DEBUG] [Thread-124463] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:22:29.916 [DEBUG] [Thread-124463] [transport.py] [_log()] client lang: <none>
2025-11-03T23:22:29.916 [DEBUG] [Thread-124463] [transport.py] [_log()] server lang: <none>
2025-11-03T23:22:29.917 [DEBUG] [Thread-124463] [transport.py] [_log()] kex follows: False
2025-11-03T23:22:29.917 [DEBUG] [Thread-124463] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:22:29.921 [DEBUG] [Thread-124463] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:22:29.923 [DEBUG] [Thread-124463] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:22:29.925 [DEBUG] [Thread-124463] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:22:29.925 [DEBUG] [Thread-124463] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:22:29.925 [DEBUG] [Thread-124463] [transport.py] [_log()] Compression: none
2025-11-03T23:22:29.925 [DEBUG] [Thread-124463] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:22:30.035 [DEBUG] [Thread-124463] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:22:30.044 [DEBUG] [Thread-124463] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:22:30.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:22:30.053 [DEBUG] [Thread-124463] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:22:30.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:22:30.062 [DEBUG] [Thread-124463] [transport.py] [_log()] userauth is OK
2025-11-03T23:22:30.062 [DEBUG] [Thread-124463] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:22:30.064 [DEBUG] [Thread-124463] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:22:30.064 [DEBUG] [Thread-124463] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:22:30.064 [DEBUG] [Thread-124463] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:22:30.108 [INFO] [Thread-124463] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:22:30.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:22:30.754 [DEBUG] [Thread-124463] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:22:30.754 [DEBUG] [Thread-124463] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:22:30.756 [DEBUG] [Thread-124463] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:22:30.794 [DEBUG] [Thread-124463] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:22:30.794 [DEBUG] [Thread-124463] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:22:30.797 [DEBUG] [Thread-124463] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:22:30.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:22:30.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:22:30.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:22:30.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:22:30.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:22:30.835 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:22:30.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:22:30.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:22:30.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:22:30.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.890030 -999.00  +18.80  14.32     17   -6.40 1 1 1 1 1     0    0 24.93 -28.86 ZNESW 13.3 14.3 314.4 17.2 18.9 -25.2 18.8 -24.0 18.6 -23.8 18.8 -25.0
2025-11-03T23:22:30.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:22:30.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:22:30.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.890030
2025-11-03T23:22:30.841 [DEBUG] [Thread-124463] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:22:30.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:22:30.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:22:30.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:22:30.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:22:30.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:22:30.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:22:21', tmtdew=29.83, humidity=12.23, cloud=0.0, wind=15.23, temperature=18.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:22:21', seeing=1.05, atlas_timestamp='2025-11-03T21:21:38.592', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03125, 0.011250000000000426, 0.07925000000000004, -0.0365000000000002, -0.01249999999999929, -0.08474999999999966, -0.09249999999999936, -0.004749999999999588, 0.0779999999999994, 0.019000000000000128, 0.025249999999999773, 0.045499999999998764, 0.1349999999999998, 0.006249999999999645, -1.0470000000000006, -0.16000000000000014, 0.03924999999999912, 0.08649999999999913, 0.1745000000000001, 0.05524999999999913, 0.13349999999999795, 0.08674999999999855, -1.1012499999999985, -0.2647499999999994, 0.07049999999999912, 0.16350000000000087, 0.19024999999999892, 0.20750000000000135, 0.22300000000000075, -0.013999999999999346, -0.13149999999999906, 0.06900000000000084, 0.04774999999999885], zp_timestamp='2025-11-03T21:19:00')
2025-11-03T23:22:31.013 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:22:31.025 [DEBUG] [Thread-124466] [transport.py] [_log()] starting thread (client mode): 0x1174ed10
2025-11-03T23:22:31.025 [DEBUG] [Thread-124466] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:22:31.039 [DEBUG] [Thread-124466] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:22:31.039 [INFO] [Thread-124466] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:22:31.047 [DEBUG] [Thread-124466] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:22:31.047 [DEBUG] [Thread-124466] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:22:31.047 [DEBUG] [Thread-124466] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:22:31.047 [DEBUG] [Thread-124466] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:22:31.047 [DEBUG] [Thread-124466] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:22:31.047 [DEBUG] [Thread-124466] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:22:31.047 [DEBUG] [Thread-124466] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:22:31.047 [DEBUG] [Thread-124466] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:22:31.047 [DEBUG] [Thread-124466] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:22:31.047 [DEBUG] [Thread-124466] [transport.py] [_log()] client lang: <none>
2025-11-03T23:22:31.047 [DEBUG] [Thread-124466] [transport.py] [_log()] server lang: <none>
2025-11-03T23:22:31.047 [DEBUG] [Thread-124466] [transport.py] [_log()] kex follows: False
2025-11-03T23:22:31.047 [DEBUG] [Thread-124466] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:22:31.047 [DEBUG] [Thread-124466] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:22:31.047 [DEBUG] [Thread-124466] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:22:31.047 [DEBUG] [Thread-124466] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:22:31.047 [DEBUG] [Thread-124466] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:22:31.047 [DEBUG] [Thread-124466] [transport.py] [_log()] Compression: none
2025-11-03T23:22:31.047 [DEBUG] [Thread-124466] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:22:31.104 [DEBUG] [Thread-124466] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:22:31.104 [DEBUG] [Thread-124466] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:22:31.104 [DEBUG] [Thread-124466] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:22:31.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:22:31.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:22:31.161 [DEBUG] [Thread-124466] [transport.py] [_log()] userauth is OK
2025-11-03T23:22:31.161 [DEBUG] [Thread-124466] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:22:31.161 [DEBUG] [Thread-124466] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:22:31.161 [DEBUG] [Thread-124466] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:22:31.161 [DEBUG] [Thread-124466] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:22:31.175 [INFO] [Thread-124466] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:22:31.175 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:22:31.175 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:22:32.068 [DEBUG] [Thread-124466] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:22:32.068 [DEBUG] [Thread-124466] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:22:32.116 [DEBUG] [Thread-124466] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:22:32.116 [DEBUG] [Thread-124466] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:22:32.127 [DEBUG] [Thread-124466] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:22:32.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:22:32.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:22:32.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:22:32.159 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:22:32.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:22:32.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:22:32.170 [DEBUG] [Thread-124466] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:22:32.387 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:22:32.979 [DEBUG] [Thread-124468 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:22:48.253 [DEBUG] [Thread-124469 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:22:52.500 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:22:56.849 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:23:02.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:23:02.202 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:23:02.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:23:03.015 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:23:03.287 [DEBUG] [Thread-124470 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:23:03.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 22, 54), 29.82, 12.3, 0.0, 13.69, 18.75, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:23:03.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:22:54
2025-11-03T23:23:04.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:23:04.589 [DEBUG] [Thread-124471] [transport.py] [_log()] starting thread (client mode): 0xed07b20
2025-11-03T23:23:04.601 [DEBUG] [Thread-124471] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:23:04.606 [DEBUG] [Thread-124471] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:23:04.607 [INFO] [Thread-124471] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:23:04.640 [DEBUG] [Thread-124471] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:23:04.642 [DEBUG] [Thread-124471] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:23:04.642 [DEBUG] [Thread-124471] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:23:04.642 [DEBUG] [Thread-124471] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:23:04.642 [DEBUG] [Thread-124471] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:23:04.642 [DEBUG] [Thread-124471] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:23:04.642 [DEBUG] [Thread-124471] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:23:04.642 [DEBUG] [Thread-124471] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:23:04.642 [DEBUG] [Thread-124471] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:23:04.643 [DEBUG] [Thread-124471] [transport.py] [_log()] client lang: <none>
2025-11-03T23:23:04.643 [DEBUG] [Thread-124471] [transport.py] [_log()] server lang: <none>
2025-11-03T23:23:04.644 [DEBUG] [Thread-124471] [transport.py] [_log()] kex follows: False
2025-11-03T23:23:04.644 [DEBUG] [Thread-124471] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:23:04.650 [DEBUG] [Thread-124471] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:23:04.650 [DEBUG] [Thread-124471] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:23:04.652 [DEBUG] [Thread-124471] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:23:04.652 [DEBUG] [Thread-124471] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:23:04.652 [DEBUG] [Thread-124471] [transport.py] [_log()] Compression: none
2025-11-03T23:23:04.652 [DEBUG] [Thread-124471] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:23:04.801 [DEBUG] [Thread-124471] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:23:04.824 [DEBUG] [Thread-124471] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:23:04.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:23:04.854 [DEBUG] [Thread-124471] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:23:04.854 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:23:04.869 [DEBUG] [Thread-124471] [transport.py] [_log()] userauth is OK
2025-11-03T23:23:04.869 [DEBUG] [Thread-124471] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:23:04.870 [DEBUG] [Thread-124471] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:23:04.870 [DEBUG] [Thread-124471] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:23:04.870 [DEBUG] [Thread-124471] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:23:04.928 [INFO] [Thread-124471] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:23:04.956 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:23:05.403 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:23:05.407 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:23:05.582 [DEBUG] [Thread-124471] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:23:05.582 [DEBUG] [Thread-124471] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:23:05.585 [DEBUG] [Thread-124471] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:23:05.624 [DEBUG] [Thread-124471] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:23:05.624 [DEBUG] [Thread-124471] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:23:05.630 [DEBUG] [Thread-124471] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:23:05.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:23:05.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:23:05.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:23:05.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:23:05.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:23:05.677 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:23:05.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:23:05.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:23:05.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:23:05.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.890377 -999.00  +18.70  12.91     17   -6.40 1 1 1 1 1     0    0 24.43 -26.95 ZNESW 12.2 12.9 312.0 14.7 18.9 -25.3 18.8 -24.1 18.6 -23.8 18.9 -24.9
2025-11-03T23:23:05.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:23:05.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:23:05.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.890377
2025-11-03T23:23:05.684 [DEBUG] [Thread-124471] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:23:05.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:23:05.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:23:05.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:23:05.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:23:05.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:23:05.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:22:54', tmtdew=29.82, humidity=12.3, cloud=0.0, wind=13.69, temperature=18.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:22:54', seeing=1.05, atlas_timestamp='2025-11-03T21:22:08.573', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03125, 0.011250000000000426, 0.07925000000000004, -0.0365000000000002, -0.01249999999999929, -0.08474999999999966, -0.09249999999999936, -0.004749999999999588, 0.0779999999999994, 0.019000000000000128, 0.025249999999999773, 0.045499999999998764, 0.1349999999999998, 0.006249999999999645, -1.0470000000000006, -0.16000000000000014, 0.03924999999999912, 0.08649999999999913, 0.1745000000000001, 0.05524999999999913, 0.13349999999999795, 0.08674999999999855, -1.1012499999999985, -0.2647499999999994, 0.07049999999999912, 0.16350000000000087, 0.19024999999999892, 0.20750000000000135, 0.22300000000000075, -0.013999999999999346, -0.13149999999999906, 0.06900000000000084, 0.04774999999999885], zp_timestamp='2025-11-03T21:19:00')
2025-11-03T23:23:05.863 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:23:05.875 [DEBUG] [Thread-124474] [transport.py] [_log()] starting thread (client mode): 0xed5e260
2025-11-03T23:23:05.876 [DEBUG] [Thread-124474] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:23:05.890 [DEBUG] [Thread-124474] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:23:05.890 [INFO] [Thread-124474] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:23:05.901 [DEBUG] [Thread-124474] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:23:05.901 [DEBUG] [Thread-124474] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:23:05.901 [DEBUG] [Thread-124474] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:23:05.901 [DEBUG] [Thread-124474] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:23:05.901 [DEBUG] [Thread-124474] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:23:05.901 [DEBUG] [Thread-124474] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:23:05.901 [DEBUG] [Thread-124474] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:23:05.901 [DEBUG] [Thread-124474] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:23:05.901 [DEBUG] [Thread-124474] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:23:05.901 [DEBUG] [Thread-124474] [transport.py] [_log()] client lang: <none>
2025-11-03T23:23:05.901 [DEBUG] [Thread-124474] [transport.py] [_log()] server lang: <none>
2025-11-03T23:23:05.901 [DEBUG] [Thread-124474] [transport.py] [_log()] kex follows: False
2025-11-03T23:23:05.901 [DEBUG] [Thread-124474] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:23:05.901 [DEBUG] [Thread-124474] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:23:05.901 [DEBUG] [Thread-124474] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:23:05.902 [DEBUG] [Thread-124474] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:23:05.902 [DEBUG] [Thread-124474] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:23:05.902 [DEBUG] [Thread-124474] [transport.py] [_log()] Compression: none
2025-11-03T23:23:05.902 [DEBUG] [Thread-124474] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:23:05.959 [DEBUG] [Thread-124474] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:23:05.959 [DEBUG] [Thread-124474] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:23:05.959 [DEBUG] [Thread-124474] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:23:05.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:23:05.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:23:06.017 [DEBUG] [Thread-124474] [transport.py] [_log()] userauth is OK
2025-11-03T23:23:06.017 [DEBUG] [Thread-124474] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:23:06.017 [DEBUG] [Thread-124474] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:23:06.017 [DEBUG] [Thread-124474] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:23:06.017 [DEBUG] [Thread-124474] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:23:06.031 [INFO] [Thread-124474] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:23:06.032 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:23:06.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:23:06.888 [DEBUG] [Thread-124474] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:23:06.888 [DEBUG] [Thread-124474] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:23:06.935 [DEBUG] [Thread-124474] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:23:06.936 [DEBUG] [Thread-124474] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:23:06.948 [DEBUG] [Thread-124474] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:23:06.958 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:23:06.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:23:06.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:23:06.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:23:06.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:23:06.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:23:07.004 [DEBUG] [Thread-124474] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:23:07.417 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:23:18.317 [DEBUG] [Thread-124476 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:23:29.305 [DEBUG] [Thread-124477 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:23:33.437 [DEBUG] [Thread-124478 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:23:37.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:23:37.028 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:23:37.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:23:37.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 23, 26), 29.87, 12.25, 0.0, 13.66, 18.76, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:23:37.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:23:26
2025-11-03T23:23:37.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:23:38.097 [DEBUG] [Thread-124479] [transport.py] [_log()] starting thread (client mode): 0xed5fe20
2025-11-03T23:23:38.098 [DEBUG] [Thread-124479] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:23:38.110 [DEBUG] [Thread-124479] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:23:38.110 [INFO] [Thread-124479] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:23:38.113 [DEBUG] [Thread-124479] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:23:38.113 [DEBUG] [Thread-124479] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:23:38.113 [DEBUG] [Thread-124479] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:23:38.113 [DEBUG] [Thread-124479] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:23:38.113 [DEBUG] [Thread-124479] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:23:38.113 [DEBUG] [Thread-124479] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:23:38.113 [DEBUG] [Thread-124479] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:23:38.113 [DEBUG] [Thread-124479] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:23:38.113 [DEBUG] [Thread-124479] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:23:38.113 [DEBUG] [Thread-124479] [transport.py] [_log()] client lang: <none>
2025-11-03T23:23:38.113 [DEBUG] [Thread-124479] [transport.py] [_log()] server lang: <none>
2025-11-03T23:23:38.113 [DEBUG] [Thread-124479] [transport.py] [_log()] kex follows: False
2025-11-03T23:23:38.113 [DEBUG] [Thread-124479] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:23:38.114 [DEBUG] [Thread-124479] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:23:38.114 [DEBUG] [Thread-124479] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:23:38.114 [DEBUG] [Thread-124479] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:23:38.114 [DEBUG] [Thread-124479] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:23:38.114 [DEBUG] [Thread-124479] [transport.py] [_log()] Compression: none
2025-11-03T23:23:38.114 [DEBUG] [Thread-124479] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:23:38.134 [DEBUG] [Thread-124479] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:23:38.136 [DEBUG] [Thread-124479] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:23:38.136 [DEBUG] [Thread-124479] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:23:38.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:23:38.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:23:38.139 [DEBUG] [Thread-124479] [transport.py] [_log()] userauth is OK
2025-11-03T23:23:38.139 [DEBUG] [Thread-124479] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:23:38.139 [DEBUG] [Thread-124479] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:23:38.139 [DEBUG] [Thread-124479] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:23:38.139 [DEBUG] [Thread-124479] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:23:38.149 [INFO] [Thread-124479] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:23:38.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:23:38.727 [DEBUG] [Thread-124479] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:23:38.728 [DEBUG] [Thread-124479] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:23:38.737 [DEBUG] [Thread-124479] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:23:38.769 [DEBUG] [Thread-124479] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:23:38.769 [DEBUG] [Thread-124479] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:23:38.773 [DEBUG] [Thread-124479] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:23:38.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:23:38.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:23:38.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:23:38.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:23:38.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:23:38.801 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:23:38.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:23:38.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:23:38.804 [DEBUG] [Thread-124479] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:23:38.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:23:38.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.891071 -999.00  +18.70  12.56     17   -6.40 1 1 1 1 1     0    0 25.12 -26.36 ZNESW 15.2 12.6 306.8 16.2 18.9 -25.0 18.8 -24.2 18.6 -24.0 18.9 -24.7
2025-11-03T23:23:38.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:23:38.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:23:38.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.891071
2025-11-03T23:23:38.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:23:38.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:23:38.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:23:38.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:23:38.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:23:38.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:23:26', tmtdew=29.87, humidity=12.25, cloud=0.0, wind=13.66, temperature=18.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:23:27', seeing=1.05, atlas_timestamp='2025-11-03T21:23:08.534', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03125, 0.011250000000000426, 0.07925000000000004, -0.0365000000000002, -0.01249999999999929, -0.08474999999999966, -0.09249999999999936, -0.004749999999999588, 0.0779999999999994, 0.019000000000000128, 0.025249999999999773, 0.045499999999998764, 0.1349999999999998, 0.006249999999999645, -1.0470000000000006, -0.16000000000000014, 0.03924999999999912, 0.08649999999999913, 0.1745000000000001, 0.05524999999999913, 0.13349999999999795, 0.08674999999999855, -1.1012499999999985, -0.2647499999999994, 0.07049999999999912, 0.16350000000000087, 0.19024999999999892, 0.20750000000000135, 0.22300000000000075, -0.013999999999999346, -0.13149999999999906, 0.06900000000000084, 0.04774999999999885], zp_timestamp='2025-11-03T21:19:00')
2025-11-03T23:23:38.904 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:23:38.917 [DEBUG] [Thread-124482] [transport.py] [_log()] starting thread (client mode): 0xedb0640
2025-11-03T23:23:38.917 [DEBUG] [Thread-124482] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:23:38.933 [DEBUG] [Thread-124482] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:23:38.933 [INFO] [Thread-124482] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:23:38.941 [DEBUG] [Thread-124482] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:23:38.941 [DEBUG] [Thread-124482] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:23:38.941 [DEBUG] [Thread-124482] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:23:38.941 [DEBUG] [Thread-124482] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:23:38.941 [DEBUG] [Thread-124482] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:23:38.941 [DEBUG] [Thread-124482] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:23:38.941 [DEBUG] [Thread-124482] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:23:38.941 [DEBUG] [Thread-124482] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:23:38.941 [DEBUG] [Thread-124482] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:23:38.941 [DEBUG] [Thread-124482] [transport.py] [_log()] client lang: <none>
2025-11-03T23:23:38.941 [DEBUG] [Thread-124482] [transport.py] [_log()] server lang: <none>
2025-11-03T23:23:38.941 [DEBUG] [Thread-124482] [transport.py] [_log()] kex follows: False
2025-11-03T23:23:38.941 [DEBUG] [Thread-124482] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:23:38.941 [DEBUG] [Thread-124482] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:23:38.942 [DEBUG] [Thread-124482] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:23:38.942 [DEBUG] [Thread-124482] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:23:38.942 [DEBUG] [Thread-124482] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:23:38.942 [DEBUG] [Thread-124482] [transport.py] [_log()] Compression: none
2025-11-03T23:23:38.942 [DEBUG] [Thread-124482] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:23:39.001 [DEBUG] [Thread-124482] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:23:39.002 [DEBUG] [Thread-124482] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:23:39.002 [DEBUG] [Thread-124482] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:23:39.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:23:39.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:23:39.061 [DEBUG] [Thread-124482] [transport.py] [_log()] userauth is OK
2025-11-03T23:23:39.061 [DEBUG] [Thread-124482] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:23:39.061 [DEBUG] [Thread-124482] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:23:39.061 [DEBUG] [Thread-124482] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:23:39.061 [DEBUG] [Thread-124482] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:23:39.077 [INFO] [Thread-124482] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:23:39.077 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:23:39.077 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:23:39.974 [DEBUG] [Thread-124482] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:23:39.974 [DEBUG] [Thread-124482] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:23:40.023 [DEBUG] [Thread-124482] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:23:40.023 [DEBUG] [Thread-124482] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:23:40.035 [DEBUG] [Thread-124482] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:23:40.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:23:40.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:23:40.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:23:40.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:23:40.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:23:40.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:23:40.076 [DEBUG] [Thread-124482] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:23:48.487 [DEBUG] [Thread-124484 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:24:03.561 [DEBUG] [Thread-124485 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:24:05.608 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:24:05.609 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:24:10.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:24:10.099 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:24:10.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:24:12.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 23, 58), 29.85, 12.28, 0.0, 13.48, 18.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:24:12.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:23:58
2025-11-03T23:24:12.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:24:12.955 [DEBUG] [Thread-124486] [transport.py] [_log()] starting thread (client mode): 0xedc6140
2025-11-03T23:24:12.956 [DEBUG] [Thread-124486] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:24:12.961 [DEBUG] [Thread-124486] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:24:12.962 [INFO] [Thread-124486] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:24:12.968 [DEBUG] [Thread-124486] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:24:12.968 [DEBUG] [Thread-124486] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:24:12.968 [DEBUG] [Thread-124486] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:24:12.968 [DEBUG] [Thread-124486] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:24:12.968 [DEBUG] [Thread-124486] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:24:12.968 [DEBUG] [Thread-124486] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:24:12.968 [DEBUG] [Thread-124486] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:24:12.968 [DEBUG] [Thread-124486] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:24:12.968 [DEBUG] [Thread-124486] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:24:12.968 [DEBUG] [Thread-124486] [transport.py] [_log()] client lang: <none>
2025-11-03T23:24:12.968 [DEBUG] [Thread-124486] [transport.py] [_log()] server lang: <none>
2025-11-03T23:24:12.969 [DEBUG] [Thread-124486] [transport.py] [_log()] kex follows: False
2025-11-03T23:24:12.969 [DEBUG] [Thread-124486] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:24:12.971 [DEBUG] [Thread-124486] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:24:12.971 [DEBUG] [Thread-124486] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:24:12.971 [DEBUG] [Thread-124486] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:24:12.971 [DEBUG] [Thread-124486] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:24:12.971 [DEBUG] [Thread-124486] [transport.py] [_log()] Compression: none
2025-11-03T23:24:12.971 [DEBUG] [Thread-124486] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:24:13.067 [DEBUG] [Thread-124486] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:24:13.082 [DEBUG] [Thread-124486] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:24:13.083 [DEBUG] [Thread-124486] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:24:13.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:24:13.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:24:13.102 [DEBUG] [Thread-124486] [transport.py] [_log()] userauth is OK
2025-11-03T23:24:13.102 [DEBUG] [Thread-124486] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:24:13.103 [DEBUG] [Thread-124486] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:24:13.103 [DEBUG] [Thread-124486] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:24:13.104 [DEBUG] [Thread-124486] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:24:13.141 [INFO] [Thread-124486] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:24:13.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:24:13.939 [DEBUG] [Thread-124486] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:24:13.940 [DEBUG] [Thread-124486] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:24:13.940 [DEBUG] [Thread-124486] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:24:13.979 [DEBUG] [Thread-124486] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:24:13.980 [DEBUG] [Thread-124486] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:24:13.982 [DEBUG] [Thread-124486] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:24:13.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:24:13.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:24:13.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:24:13.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:24:14.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:24:14.003 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:24:14.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:24:14.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:24:14.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:24:14.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.891419 -999.00  +18.70  15.72     17   -6.30 1 1 1 1 1     0    0 24.80 -26.47 ZNESW 13.4 15.7 303.0 18.5 18.9 -24.9 18.9 -24.1 18.6 -23.8 18.9 -24.7
2025-11-03T23:24:14.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:24:14.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:24:14.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.891419
2025-11-03T23:24:14.009 [DEBUG] [Thread-124486] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:24:14.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:24:14.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:24:14.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:24:14.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:24:14.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:24:14.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:23:58', tmtdew=29.85, humidity=12.28, cloud=0.0, wind=13.48, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:23:59', seeing=1.05, atlas_timestamp='2025-11-03T21:23:38.602', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03125, 0.011250000000000426, 0.07925000000000004, -0.0365000000000002, -0.01249999999999929, -0.08474999999999966, -0.09249999999999936, -0.004749999999999588, 0.0779999999999994, 0.019000000000000128, 0.025249999999999773, 0.045499999999998764, 0.1349999999999998, 0.006249999999999645, -1.0470000000000006, -0.16000000000000014, 0.03924999999999912, 0.08649999999999913, 0.1745000000000001, 0.05524999999999913, 0.13349999999999795, 0.08674999999999855, -1.1012499999999985, -0.2647499999999994, 0.07049999999999912, 0.16350000000000087, 0.19024999999999892, 0.20750000000000135, 0.22300000000000075, -0.013999999999999346, -0.13149999999999906, 0.06900000000000084, 0.04774999999999885], zp_timestamp='2025-11-03T21:23:00')
2025-11-03T23:24:14.129 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:24:14.144 [DEBUG] [Thread-124489] [transport.py] [_log()] starting thread (client mode): 0xedc7be0
2025-11-03T23:24:14.145 [DEBUG] [Thread-124489] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:24:14.162 [DEBUG] [Thread-124489] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:24:14.162 [INFO] [Thread-124489] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:24:14.171 [DEBUG] [Thread-124489] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:24:14.171 [DEBUG] [Thread-124489] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:24:14.172 [DEBUG] [Thread-124489] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:24:14.172 [DEBUG] [Thread-124489] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:24:14.172 [DEBUG] [Thread-124489] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:24:14.172 [DEBUG] [Thread-124489] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:24:14.172 [DEBUG] [Thread-124489] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:24:14.172 [DEBUG] [Thread-124489] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:24:14.172 [DEBUG] [Thread-124489] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:24:14.172 [DEBUG] [Thread-124489] [transport.py] [_log()] client lang: <none>
2025-11-03T23:24:14.172 [DEBUG] [Thread-124489] [transport.py] [_log()] server lang: <none>
2025-11-03T23:24:14.172 [DEBUG] [Thread-124489] [transport.py] [_log()] kex follows: False
2025-11-03T23:24:14.172 [DEBUG] [Thread-124489] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:24:14.172 [DEBUG] [Thread-124489] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:24:14.172 [DEBUG] [Thread-124489] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:24:14.172 [DEBUG] [Thread-124489] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:24:14.172 [DEBUG] [Thread-124489] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:24:14.172 [DEBUG] [Thread-124489] [transport.py] [_log()] Compression: none
2025-11-03T23:24:14.172 [DEBUG] [Thread-124489] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:24:14.232 [DEBUG] [Thread-124489] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:24:14.232 [DEBUG] [Thread-124489] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:24:14.232 [DEBUG] [Thread-124489] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:24:14.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:24:14.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:24:14.291 [DEBUG] [Thread-124489] [transport.py] [_log()] userauth is OK
2025-11-03T23:24:14.291 [DEBUG] [Thread-124489] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:24:14.291 [DEBUG] [Thread-124489] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:24:14.291 [DEBUG] [Thread-124489] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:24:14.291 [DEBUG] [Thread-124489] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:24:14.306 [INFO] [Thread-124489] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:24:14.306 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:24:14.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:24:14.996 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:24:15.156 [DEBUG] [Thread-124489] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:24:15.157 [DEBUG] [Thread-124489] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:24:15.205 [DEBUG] [Thread-124489] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:24:15.206 [DEBUG] [Thread-124489] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:24:15.215 [DEBUG] [Thread-124489] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:24:15.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:24:15.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:24:15.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:24:15.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:24:15.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:24:15.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:24:15.260 [DEBUG] [Thread-124489] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:24:18.591 [DEBUG] [Thread-124491 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:24:19.083 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:24:29.982 [DEBUG] [Thread-124492 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:24:33.672 [DEBUG] [Thread-124493 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:24:45.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:24:45.276 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:24:45.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:24:46.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 24, 31), 29.94, 12.2, 0.0, 13.62, 18.85, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:24:46.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:24:31
2025-11-03T23:24:46.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:24:46.449 [DEBUG] [Thread-124494] [transport.py] [_log()] starting thread (client mode): 0xed06d70
2025-11-03T23:24:46.449 [DEBUG] [Thread-124494] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:24:46.470 [DEBUG] [Thread-124494] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:24:46.470 [INFO] [Thread-124494] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:24:46.473 [DEBUG] [Thread-124494] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:24:46.473 [DEBUG] [Thread-124494] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:24:46.473 [DEBUG] [Thread-124494] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:24:46.473 [DEBUG] [Thread-124494] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:24:46.473 [DEBUG] [Thread-124494] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:24:46.473 [DEBUG] [Thread-124494] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:24:46.473 [DEBUG] [Thread-124494] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:24:46.473 [DEBUG] [Thread-124494] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:24:46.474 [DEBUG] [Thread-124494] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:24:46.474 [DEBUG] [Thread-124494] [transport.py] [_log()] client lang: <none>
2025-11-03T23:24:46.474 [DEBUG] [Thread-124494] [transport.py] [_log()] server lang: <none>
2025-11-03T23:24:46.474 [DEBUG] [Thread-124494] [transport.py] [_log()] kex follows: False
2025-11-03T23:24:46.474 [DEBUG] [Thread-124494] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:24:46.474 [DEBUG] [Thread-124494] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:24:46.474 [DEBUG] [Thread-124494] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:24:46.474 [DEBUG] [Thread-124494] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:24:46.474 [DEBUG] [Thread-124494] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:24:46.474 [DEBUG] [Thread-124494] [transport.py] [_log()] Compression: none
2025-11-03T23:24:46.474 [DEBUG] [Thread-124494] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:24:46.489 [DEBUG] [Thread-124494] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:24:46.489 [DEBUG] [Thread-124494] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:24:46.490 [DEBUG] [Thread-124494] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:24:46.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:24:46.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:24:46.491 [DEBUG] [Thread-124494] [transport.py] [_log()] userauth is OK
2025-11-03T23:24:46.491 [DEBUG] [Thread-124494] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:24:46.491 [DEBUG] [Thread-124494] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:24:46.491 [DEBUG] [Thread-124494] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:24:46.491 [DEBUG] [Thread-124494] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:24:46.501 [INFO] [Thread-124494] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:24:46.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:24:47.141 [DEBUG] [Thread-124494] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:24:47.141 [DEBUG] [Thread-124494] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:24:47.141 [DEBUG] [Thread-124494] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:24:47.181 [DEBUG] [Thread-124494] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:24:47.181 [DEBUG] [Thread-124494] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:24:47.184 [DEBUG] [Thread-124494] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:24:47.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:24:47.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:24:47.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:24:47.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:24:47.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:24:47.202 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:24:47.202 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:24:47.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:24:47.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:24:47.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.891766 -999.00  +18.80  12.59     17   -6.30 1 1 1 1 1     0    0 24.75 -24.32 ZNESW 16.3 12.6 306.2 18.0 18.9 -25.0 18.8 -24.1 18.6 -23.7 18.9 -24.8
2025-11-03T23:24:47.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:24:47.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:24:47.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.891766
2025-11-03T23:24:47.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:24:47.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:24:47.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:24:47.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:24:47.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:24:47.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:24:31', tmtdew=29.94, humidity=12.2, cloud=0.0, wind=13.62, temperature=18.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:24:32', seeing=1.05, atlas_timestamp='2025-11-03T21:24:08.582', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03125, 0.011250000000000426, 0.07925000000000004, -0.0365000000000002, -0.01249999999999929, -0.08474999999999966, -0.09249999999999936, -0.004749999999999588, 0.0779999999999994, 0.019000000000000128, 0.025249999999999773, 0.045499999999998764, 0.1349999999999998, 0.006249999999999645, -1.0470000000000006, -0.16000000000000014, 0.03924999999999912, 0.08649999999999913, 0.1745000000000001, 0.05524999999999913, 0.13349999999999795, 0.08674999999999855, -1.1012499999999985, -0.2647499999999994, 0.07049999999999912, 0.16350000000000087, 0.19024999999999892, 0.20750000000000135, 0.22300000000000075, -0.013999999999999346, -0.13149999999999906, 0.06900000000000084, 0.04774999999999885], zp_timestamp='2025-11-03T21:23:00')
2025-11-03T23:24:47.204 [DEBUG] [Thread-124494] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:24:47.279 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:24:47.291 [DEBUG] [Thread-124497] [transport.py] [_log()] starting thread (client mode): 0xed5dba0
2025-11-03T23:24:47.291 [DEBUG] [Thread-124497] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:24:47.304 [DEBUG] [Thread-124497] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:24:47.305 [INFO] [Thread-124497] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:24:47.313 [DEBUG] [Thread-124497] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:24:47.313 [DEBUG] [Thread-124497] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:24:47.313 [DEBUG] [Thread-124497] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:24:47.313 [DEBUG] [Thread-124497] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:24:47.313 [DEBUG] [Thread-124497] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:24:47.313 [DEBUG] [Thread-124497] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:24:47.313 [DEBUG] [Thread-124497] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:24:47.313 [DEBUG] [Thread-124497] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:24:47.313 [DEBUG] [Thread-124497] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:24:47.313 [DEBUG] [Thread-124497] [transport.py] [_log()] client lang: <none>
2025-11-03T23:24:47.313 [DEBUG] [Thread-124497] [transport.py] [_log()] server lang: <none>
2025-11-03T23:24:47.313 [DEBUG] [Thread-124497] [transport.py] [_log()] kex follows: False
2025-11-03T23:24:47.313 [DEBUG] [Thread-124497] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:24:47.313 [DEBUG] [Thread-124497] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:24:47.313 [DEBUG] [Thread-124497] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:24:47.314 [DEBUG] [Thread-124497] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:24:47.314 [DEBUG] [Thread-124497] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:24:47.314 [DEBUG] [Thread-124497] [transport.py] [_log()] Compression: none
2025-11-03T23:24:47.314 [DEBUG] [Thread-124497] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:24:47.373 [DEBUG] [Thread-124497] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:24:47.374 [DEBUG] [Thread-124497] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:24:47.374 [DEBUG] [Thread-124497] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:24:47.374 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:24:47.374 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:24:47.434 [DEBUG] [Thread-124497] [transport.py] [_log()] userauth is OK
2025-11-03T23:24:47.434 [DEBUG] [Thread-124497] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:24:47.434 [DEBUG] [Thread-124497] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:24:47.434 [DEBUG] [Thread-124497] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:24:47.434 [DEBUG] [Thread-124497] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:24:47.449 [INFO] [Thread-124497] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:24:47.449 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:24:47.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:24:48.279 [DEBUG] [Thread-124497] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:24:48.279 [DEBUG] [Thread-124497] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:24:48.328 [DEBUG] [Thread-124497] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:24:48.328 [DEBUG] [Thread-124497] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:24:48.337 [DEBUG] [Thread-124497] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:24:48.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:24:48.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:24:48.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:24:48.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:24:48.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:24:48.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:24:48.373 [DEBUG] [Thread-124497] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:24:48.695 [DEBUG] [Thread-124499 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:25:03.751 [DEBUG] [Thread-124500 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:25:05.833 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:25:05.834 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:25:18.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:25:18.369 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:25:18.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:25:18.793 [DEBUG] [Thread-124501 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:25:19.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 25, 7), 29.95, 12.18, 0.0, 13.59, 18.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:25:19.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:25:07
2025-11-03T23:25:19.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:25:19.727 [DEBUG] [Thread-124502] [transport.py] [_log()] starting thread (client mode): 0xed5f130
2025-11-03T23:25:19.728 [DEBUG] [Thread-124502] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:25:19.742 [DEBUG] [Thread-124502] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:25:19.742 [INFO] [Thread-124502] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:25:19.746 [DEBUG] [Thread-124502] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:25:19.746 [DEBUG] [Thread-124502] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:25:19.746 [DEBUG] [Thread-124502] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:25:19.747 [DEBUG] [Thread-124502] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:25:19.747 [DEBUG] [Thread-124502] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:25:19.747 [DEBUG] [Thread-124502] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:25:19.747 [DEBUG] [Thread-124502] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:25:19.747 [DEBUG] [Thread-124502] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:25:19.747 [DEBUG] [Thread-124502] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:25:19.747 [DEBUG] [Thread-124502] [transport.py] [_log()] client lang: <none>
2025-11-03T23:25:19.747 [DEBUG] [Thread-124502] [transport.py] [_log()] server lang: <none>
2025-11-03T23:25:19.747 [DEBUG] [Thread-124502] [transport.py] [_log()] kex follows: False
2025-11-03T23:25:19.747 [DEBUG] [Thread-124502] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:25:19.748 [DEBUG] [Thread-124502] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:25:19.748 [DEBUG] [Thread-124502] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:25:19.749 [DEBUG] [Thread-124502] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:25:19.749 [DEBUG] [Thread-124502] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:25:19.749 [DEBUG] [Thread-124502] [transport.py] [_log()] Compression: none
2025-11-03T23:25:19.749 [DEBUG] [Thread-124502] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:25:19.787 [DEBUG] [Thread-124502] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:25:19.792 [DEBUG] [Thread-124502] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:25:19.793 [DEBUG] [Thread-124502] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:25:19.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:25:19.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:25:19.800 [DEBUG] [Thread-124502] [transport.py] [_log()] userauth is OK
2025-11-03T23:25:19.800 [DEBUG] [Thread-124502] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:25:19.800 [DEBUG] [Thread-124502] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:25:19.800 [DEBUG] [Thread-124502] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:25:19.800 [DEBUG] [Thread-124502] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:25:19.828 [INFO] [Thread-124502] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:25:19.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:25:20.501 [DEBUG] [Thread-124502] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:25:20.502 [DEBUG] [Thread-124502] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:25:20.503 [DEBUG] [Thread-124502] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:25:20.543 [DEBUG] [Thread-124502] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:25:20.543 [DEBUG] [Thread-124502] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:25:20.547 [DEBUG] [Thread-124502] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:25:20.562 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:25:20.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:25:20.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:25:20.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:25:20.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:25:20.577 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:25:20.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:25:20.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:25:20.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:25:20.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.892113 -999.00  +18.80  14.18     17   -6.40 1 1 1 1 1     0    0 25.17 -24.93 ZNESW 11.2 14.2 311.0 19.9 18.9 -25.3 18.8 -24.0 18.6 -23.8 18.8 -24.8
2025-11-03T23:25:20.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:25:20.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:25:20.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.892113
2025-11-03T23:25:20.586 [DEBUG] [Thread-124502] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:25:20.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:25:20.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:25:20.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:25:20.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:25:20.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:25:20.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:25:07', tmtdew=29.95, humidity=12.18, cloud=0.0, wind=13.59, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:24:38.563', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03125, 0.011250000000000426, 0.07925000000000004, -0.0365000000000002, -0.01249999999999929, -0.08474999999999966, -0.09249999999999936, -0.004749999999999588, 0.0779999999999994, 0.019000000000000128, 0.025249999999999773, 0.045499999999998764, 0.1349999999999998, 0.006249999999999645, -1.0470000000000006, -0.16000000000000014, 0.03924999999999912, 0.08649999999999913, 0.1745000000000001, 0.05524999999999913, 0.13349999999999795, 0.08674999999999855, -1.1012499999999985, -0.2647499999999994, 0.07049999999999912, 0.16350000000000087, 0.19024999999999892, 0.20750000000000135, 0.22300000000000075, -0.013999999999999346, -0.13149999999999906, 0.06900000000000084, 0.04774999999999885], zp_timestamp='2025-11-03T21:23:00')
2025-11-03T23:25:20.681 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:25:20.693 [DEBUG] [Thread-124505] [transport.py] [_log()] starting thread (client mode): 0xed5f5e0
2025-11-03T23:25:20.693 [DEBUG] [Thread-124505] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:25:20.709 [DEBUG] [Thread-124505] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:25:20.709 [INFO] [Thread-124505] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:25:20.717 [DEBUG] [Thread-124505] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:25:20.717 [DEBUG] [Thread-124505] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:25:20.717 [DEBUG] [Thread-124505] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:25:20.717 [DEBUG] [Thread-124505] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:25:20.717 [DEBUG] [Thread-124505] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:25:20.718 [DEBUG] [Thread-124505] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:25:20.718 [DEBUG] [Thread-124505] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:25:20.718 [DEBUG] [Thread-124505] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:25:20.718 [DEBUG] [Thread-124505] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:25:20.718 [DEBUG] [Thread-124505] [transport.py] [_log()] client lang: <none>
2025-11-03T23:25:20.718 [DEBUG] [Thread-124505] [transport.py] [_log()] server lang: <none>
2025-11-03T23:25:20.718 [DEBUG] [Thread-124505] [transport.py] [_log()] kex follows: False
2025-11-03T23:25:20.718 [DEBUG] [Thread-124505] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:25:20.719 [DEBUG] [Thread-124505] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:25:20.719 [DEBUG] [Thread-124505] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:25:20.719 [DEBUG] [Thread-124505] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:25:20.719 [DEBUG] [Thread-124505] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:25:20.719 [DEBUG] [Thread-124505] [transport.py] [_log()] Compression: none
2025-11-03T23:25:20.719 [DEBUG] [Thread-124505] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:25:20.785 [DEBUG] [Thread-124505] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:25:20.786 [DEBUG] [Thread-124505] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:25:20.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:25:20.787 [DEBUG] [Thread-124505] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:25:20.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:25:20.845 [DEBUG] [Thread-124505] [transport.py] [_log()] userauth is OK
2025-11-03T23:25:20.845 [DEBUG] [Thread-124505] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:25:20.845 [DEBUG] [Thread-124505] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:25:20.845 [DEBUG] [Thread-124505] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:25:20.845 [DEBUG] [Thread-124505] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:25:20.869 [INFO] [Thread-124505] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:25:20.870 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:25:20.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:25:21.768 [DEBUG] [Thread-124505] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:25:21.769 [DEBUG] [Thread-124505] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:25:21.807 [DEBUG] [Thread-124505] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:25:21.807 [DEBUG] [Thread-124505] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:25:21.818 [DEBUG] [Thread-124505] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:25:21.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:25:21.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:25:21.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:25:21.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:25:21.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:25:21.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:25:21.855 [DEBUG] [Thread-124505] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:25:30.338 [DEBUG] [Thread-124507 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:25:33.820 [DEBUG] [Thread-124508 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:25:48.897 [DEBUG] [Thread-124509 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:25:51.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:25:51.877 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:25:51.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:25:52.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 25, 40), 29.86, 12.21, 0.0, 15.81, 18.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:25:52.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:25:40
2025-11-03T23:25:52.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:25:52.980 [DEBUG] [Thread-124510] [transport.py] [_log()] starting thread (client mode): 0xed34940
2025-11-03T23:25:52.980 [DEBUG] [Thread-124510] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:25:53.002 [DEBUG] [Thread-124510] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:25:53.002 [INFO] [Thread-124510] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:25:53.006 [DEBUG] [Thread-124510] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:25:53.006 [DEBUG] [Thread-124510] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:25:53.006 [DEBUG] [Thread-124510] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:25:53.006 [DEBUG] [Thread-124510] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:25:53.006 [DEBUG] [Thread-124510] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:25:53.006 [DEBUG] [Thread-124510] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:25:53.006 [DEBUG] [Thread-124510] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:25:53.007 [DEBUG] [Thread-124510] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:25:53.007 [DEBUG] [Thread-124510] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:25:53.007 [DEBUG] [Thread-124510] [transport.py] [_log()] client lang: <none>
2025-11-03T23:25:53.007 [DEBUG] [Thread-124510] [transport.py] [_log()] server lang: <none>
2025-11-03T23:25:53.007 [DEBUG] [Thread-124510] [transport.py] [_log()] kex follows: False
2025-11-03T23:25:53.007 [DEBUG] [Thread-124510] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:25:53.007 [DEBUG] [Thread-124510] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:25:53.007 [DEBUG] [Thread-124510] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:25:53.007 [DEBUG] [Thread-124510] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:25:53.007 [DEBUG] [Thread-124510] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:25:53.008 [DEBUG] [Thread-124510] [transport.py] [_log()] Compression: none
2025-11-03T23:25:53.008 [DEBUG] [Thread-124510] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:25:53.026 [DEBUG] [Thread-124510] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:25:53.027 [DEBUG] [Thread-124510] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:25:53.027 [DEBUG] [Thread-124510] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:25:53.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:25:53.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:25:53.030 [DEBUG] [Thread-124510] [transport.py] [_log()] userauth is OK
2025-11-03T23:25:53.030 [DEBUG] [Thread-124510] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:25:53.030 [DEBUG] [Thread-124510] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:25:53.031 [DEBUG] [Thread-124510] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:25:53.031 [DEBUG] [Thread-124510] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:25:53.065 [INFO] [Thread-124510] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:25:53.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:25:53.692 [DEBUG] [Thread-124510] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:25:53.701 [DEBUG] [Thread-124510] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:25:53.702 [DEBUG] [Thread-124510] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:25:53.734 [DEBUG] [Thread-124510] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:25:53.734 [DEBUG] [Thread-124510] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:25:53.737 [DEBUG] [Thread-124510] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:25:53.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:25:53.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:25:53.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:25:53.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:25:53.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:25:53.759 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:25:53.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:25:53.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:25:53.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:25:53.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.892460 -999.00  +18.80  16.15     17   -6.40 1 1 1 1 1     0    0 24.24 -22.92 ZNESW 12.7 16.1 304.2 18.4 18.9 -25.1 18.8 -24.1 18.6 -23.9 18.9 -24.7
2025-11-03T23:25:53.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:25:53.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:25:53.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.892460
2025-11-03T23:25:53.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:25:53.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:25:53.761 [DEBUG] [Thread-124510] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:25:53.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:25:53.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:25:53.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:25:53.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:25:40', tmtdew=29.86, humidity=12.21, cloud=0.0, wind=15.81, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:25:08.544', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03125, 0.011250000000000426, 0.07925000000000004, -0.0365000000000002, -0.01249999999999929, -0.08474999999999966, -0.09249999999999936, -0.004749999999999588, 0.0779999999999994, 0.019000000000000128, 0.025249999999999773, 0.045499999999998764, 0.1349999999999998, 0.006249999999999645, -1.0470000000000006, -0.16000000000000014, 0.03924999999999912, 0.08649999999999913, 0.1745000000000001, 0.05524999999999913, 0.13349999999999795, 0.08674999999999855, -1.1012499999999985, -0.2647499999999994, 0.07049999999999912, 0.16350000000000087, 0.19024999999999892, 0.20750000000000135, 0.22300000000000075, -0.013999999999999346, -0.13149999999999906, 0.06900000000000084, 0.04774999999999885], zp_timestamp='2025-11-03T21:23:00')
2025-11-03T23:25:53.847 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:25:53.860 [DEBUG] [Thread-124513] [transport.py] [_log()] starting thread (client mode): 0xedc6da0
2025-11-03T23:25:53.860 [DEBUG] [Thread-124513] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:25:53.874 [DEBUG] [Thread-124513] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:25:53.874 [INFO] [Thread-124513] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:25:53.885 [DEBUG] [Thread-124513] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:25:53.885 [DEBUG] [Thread-124513] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:25:53.885 [DEBUG] [Thread-124513] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:25:53.885 [DEBUG] [Thread-124513] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:25:53.885 [DEBUG] [Thread-124513] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:25:53.885 [DEBUG] [Thread-124513] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:25:53.885 [DEBUG] [Thread-124513] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:25:53.885 [DEBUG] [Thread-124513] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:25:53.885 [DEBUG] [Thread-124513] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:25:53.886 [DEBUG] [Thread-124513] [transport.py] [_log()] client lang: <none>
2025-11-03T23:25:53.886 [DEBUG] [Thread-124513] [transport.py] [_log()] server lang: <none>
2025-11-03T23:25:53.886 [DEBUG] [Thread-124513] [transport.py] [_log()] kex follows: False
2025-11-03T23:25:53.886 [DEBUG] [Thread-124513] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:25:53.886 [DEBUG] [Thread-124513] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:25:53.886 [DEBUG] [Thread-124513] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:25:53.886 [DEBUG] [Thread-124513] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:25:53.886 [DEBUG] [Thread-124513] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:25:53.886 [DEBUG] [Thread-124513] [transport.py] [_log()] Compression: none
2025-11-03T23:25:53.886 [DEBUG] [Thread-124513] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:25:53.949 [DEBUG] [Thread-124513] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:25:53.950 [DEBUG] [Thread-124513] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:25:53.950 [DEBUG] [Thread-124513] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:25:53.950 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:25:53.951 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:25:54.005 [DEBUG] [Thread-124513] [transport.py] [_log()] userauth is OK
2025-11-03T23:25:54.005 [DEBUG] [Thread-124513] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:25:54.005 [DEBUG] [Thread-124513] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:25:54.005 [DEBUG] [Thread-124513] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:25:54.005 [DEBUG] [Thread-124513] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:25:54.023 [INFO] [Thread-124513] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:25:54.023 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:25:54.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:25:54.916 [DEBUG] [Thread-124513] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:25:54.916 [DEBUG] [Thread-124513] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:25:54.968 [DEBUG] [Thread-124513] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:25:54.968 [DEBUG] [Thread-124513] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:25:54.980 [DEBUG] [Thread-124513] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:25:54.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:25:54.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:25:55.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:25:55.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:25:55.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:25:55.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:25:55.026 [DEBUG] [Thread-124513] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:26:03.929 [DEBUG] [Thread-124515 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:26:06.035 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:26:06.036 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:26:18.966 [DEBUG] [Thread-124516 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:26:25.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:26:25.047 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:26:25.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:26:25.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 26, 14), 29.91, 12.16, 0.0, 15.62, 18.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:26:25.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:26:14
2025-11-03T23:26:26.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:26:26.253 [DEBUG] [Thread-124517] [transport.py] [_log()] starting thread (client mode): 0xedc6230
2025-11-03T23:26:26.254 [DEBUG] [Thread-124517] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:26:26.255 [DEBUG] [Thread-124517] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:26:26.255 [INFO] [Thread-124517] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:26:26.258 [DEBUG] [Thread-124517] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:26:26.258 [DEBUG] [Thread-124517] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:26:26.258 [DEBUG] [Thread-124517] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:26:26.258 [DEBUG] [Thread-124517] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:26:26.258 [DEBUG] [Thread-124517] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:26:26.258 [DEBUG] [Thread-124517] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:26:26.259 [DEBUG] [Thread-124517] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:26:26.259 [DEBUG] [Thread-124517] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:26:26.259 [DEBUG] [Thread-124517] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:26:26.259 [DEBUG] [Thread-124517] [transport.py] [_log()] client lang: <none>
2025-11-03T23:26:26.259 [DEBUG] [Thread-124517] [transport.py] [_log()] server lang: <none>
2025-11-03T23:26:26.259 [DEBUG] [Thread-124517] [transport.py] [_log()] kex follows: False
2025-11-03T23:26:26.259 [DEBUG] [Thread-124517] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:26:26.260 [DEBUG] [Thread-124517] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:26:26.260 [DEBUG] [Thread-124517] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:26:26.260 [DEBUG] [Thread-124517] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:26:26.260 [DEBUG] [Thread-124517] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:26:26.260 [DEBUG] [Thread-124517] [transport.py] [_log()] Compression: none
2025-11-03T23:26:26.260 [DEBUG] [Thread-124517] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:26:26.298 [DEBUG] [Thread-124517] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:26:26.302 [DEBUG] [Thread-124517] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:26:26.304 [DEBUG] [Thread-124517] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:26:26.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:26:26.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:26:26.309 [DEBUG] [Thread-124517] [transport.py] [_log()] userauth is OK
2025-11-03T23:26:26.309 [DEBUG] [Thread-124517] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:26:26.309 [DEBUG] [Thread-124517] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:26:26.309 [DEBUG] [Thread-124517] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:26:26.310 [DEBUG] [Thread-124517] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:26:26.347 [INFO] [Thread-124517] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:26:26.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:26:26.992 [DEBUG] [Thread-124517] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:26:26.992 [DEBUG] [Thread-124517] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:26:26.994 [DEBUG] [Thread-124517] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:26:27.034 [DEBUG] [Thread-124517] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:26:27.034 [DEBUG] [Thread-124517] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:26:27.037 [DEBUG] [Thread-124517] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:26:27.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:26:27.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:26:27.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:26:27.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:26:27.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:26:27.060 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:26:27.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:26:27.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:26:27.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:26:27.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.892808 -999.00  +18.80  12.54     17   -6.40 1 1 1 1 1     0    0 24.69 -24.24 ZNESW 16.6 12.5 305.8 17.2 18.9 -25.1 18.8 -24.0 18.6 -23.7 18.8 -24.7
2025-11-03T23:26:27.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:26:27.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:26:27.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.892808
2025-11-03T23:26:27.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:26:27.072 [DEBUG] [Thread-124517] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:26:27.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:26:27.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:26:27.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:26:27.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:26:27.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:26:14', tmtdew=29.91, humidity=12.16, cloud=0.0, wind=15.62, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:25:38.611', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03125, 0.011250000000000426, 0.07925000000000004, -0.0365000000000002, -0.01249999999999929, -0.08474999999999966, -0.09249999999999936, -0.004749999999999588, 0.0779999999999994, 0.019000000000000128, 0.025249999999999773, 0.045499999999998764, 0.1349999999999998, 0.006249999999999645, -1.0470000000000006, -0.16000000000000014, 0.03924999999999912, 0.08649999999999913, 0.1745000000000001, 0.05524999999999913, 0.13349999999999795, 0.08674999999999855, -1.1012499999999985, -0.2647499999999994, 0.07049999999999912, 0.16350000000000087, 0.19024999999999892, 0.20750000000000135, 0.22300000000000075, -0.013999999999999346, -0.13149999999999906, 0.06900000000000084, 0.04774999999999885], zp_timestamp='2025-11-03T21:23:00')
2025-11-03T23:26:27.163 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:26:27.176 [DEBUG] [Thread-124520] [transport.py] [_log()] starting thread (client mode): 0xed348e0
2025-11-03T23:26:27.176 [DEBUG] [Thread-124520] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:26:27.191 [DEBUG] [Thread-124520] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:26:27.191 [INFO] [Thread-124520] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:26:27.201 [DEBUG] [Thread-124520] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:26:27.201 [DEBUG] [Thread-124520] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:26:27.201 [DEBUG] [Thread-124520] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:26:27.201 [DEBUG] [Thread-124520] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:26:27.202 [DEBUG] [Thread-124520] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:26:27.202 [DEBUG] [Thread-124520] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:26:27.202 [DEBUG] [Thread-124520] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:26:27.202 [DEBUG] [Thread-124520] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:26:27.202 [DEBUG] [Thread-124520] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:26:27.202 [DEBUG] [Thread-124520] [transport.py] [_log()] client lang: <none>
2025-11-03T23:26:27.202 [DEBUG] [Thread-124520] [transport.py] [_log()] server lang: <none>
2025-11-03T23:26:27.202 [DEBUG] [Thread-124520] [transport.py] [_log()] kex follows: False
2025-11-03T23:26:27.202 [DEBUG] [Thread-124520] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:26:27.202 [DEBUG] [Thread-124520] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:26:27.202 [DEBUG] [Thread-124520] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:26:27.202 [DEBUG] [Thread-124520] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:26:27.202 [DEBUG] [Thread-124520] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:26:27.202 [DEBUG] [Thread-124520] [transport.py] [_log()] Compression: none
2025-11-03T23:26:27.202 [DEBUG] [Thread-124520] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:26:27.260 [DEBUG] [Thread-124520] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:26:27.261 [DEBUG] [Thread-124520] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:26:27.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:26:27.262 [DEBUG] [Thread-124520] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:26:27.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:26:27.318 [DEBUG] [Thread-124520] [transport.py] [_log()] userauth is OK
2025-11-03T23:26:27.319 [DEBUG] [Thread-124520] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:26:27.319 [DEBUG] [Thread-124520] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:26:27.319 [DEBUG] [Thread-124520] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:26:27.319 [DEBUG] [Thread-124520] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:26:27.338 [INFO] [Thread-124520] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:26:27.338 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:26:27.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:26:28.199 [DEBUG] [Thread-124520] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:26:28.199 [DEBUG] [Thread-124520] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:26:28.238 [DEBUG] [Thread-124520] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:26:28.238 [DEBUG] [Thread-124520] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:26:28.247 [DEBUG] [Thread-124520] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:26:28.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:26:28.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:26:28.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:26:28.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:26:28.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:26:28.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:26:28.281 [DEBUG] [Thread-124520] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:26:30.685 [DEBUG] [Thread-124522 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:26:34.019 [DEBUG] [Thread-124523 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:26:49.078 [DEBUG] [Thread-124524 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:26:58.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:26:58.294 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:26:58.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:27:00.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 26, 46), 29.91, 12.23, 0.0, 17.33, 18.85, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:27:00.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:26:46
2025-11-03T23:27:00.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:27:00.355 [DEBUG] [Thread-124525] [transport.py] [_log()] starting thread (client mode): 0x1174f100
2025-11-03T23:27:00.355 [DEBUG] [Thread-124525] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:27:00.376 [DEBUG] [Thread-124525] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:27:00.376 [INFO] [Thread-124525] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:27:00.378 [DEBUG] [Thread-124525] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:27:00.378 [DEBUG] [Thread-124525] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:27:00.378 [DEBUG] [Thread-124525] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:27:00.378 [DEBUG] [Thread-124525] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:27:00.379 [DEBUG] [Thread-124525] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:27:00.379 [DEBUG] [Thread-124525] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:27:00.379 [DEBUG] [Thread-124525] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:27:00.379 [DEBUG] [Thread-124525] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:27:00.379 [DEBUG] [Thread-124525] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:27:00.379 [DEBUG] [Thread-124525] [transport.py] [_log()] client lang: <none>
2025-11-03T23:27:00.379 [DEBUG] [Thread-124525] [transport.py] [_log()] server lang: <none>
2025-11-03T23:27:00.379 [DEBUG] [Thread-124525] [transport.py] [_log()] kex follows: False
2025-11-03T23:27:00.379 [DEBUG] [Thread-124525] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:27:00.379 [DEBUG] [Thread-124525] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:27:00.379 [DEBUG] [Thread-124525] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:27:00.379 [DEBUG] [Thread-124525] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:27:00.379 [DEBUG] [Thread-124525] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:27:00.380 [DEBUG] [Thread-124525] [transport.py] [_log()] Compression: none
2025-11-03T23:27:00.380 [DEBUG] [Thread-124525] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:27:00.401 [DEBUG] [Thread-124525] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:27:00.404 [DEBUG] [Thread-124525] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:27:00.406 [DEBUG] [Thread-124525] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:27:00.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:27:00.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:27:00.408 [DEBUG] [Thread-124525] [transport.py] [_log()] userauth is OK
2025-11-03T23:27:00.408 [DEBUG] [Thread-124525] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:27:00.408 [DEBUG] [Thread-124525] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:27:00.408 [DEBUG] [Thread-124525] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:27:00.408 [DEBUG] [Thread-124525] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:27:00.423 [INFO] [Thread-124525] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:27:00.424 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:27:01.171 [DEBUG] [Thread-124525] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:27:01.171 [DEBUG] [Thread-124525] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:27:01.173 [DEBUG] [Thread-124525] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:27:01.212 [DEBUG] [Thread-124525] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:27:01.212 [DEBUG] [Thread-124525] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:27:01.215 [DEBUG] [Thread-124525] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:27:01.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:27:01.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:27:01.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:27:01.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:27:01.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:27:01.235 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:27:01.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:27:01.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:27:01.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:27:01.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.893502 -999.00  +18.70  11.48     17   -6.30 1 1 1 1 1     0    0 24.67 -25.09 ZNESW 13.7 11.5 310.0 16.6 18.9 -25.0 18.8 -24.0 18.6 -23.7 18.8 -24.6
2025-11-03T23:27:01.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:27:01.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:27:01.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.893502
2025-11-03T23:27:01.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:27:01.240 [DEBUG] [Thread-124525] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:27:01.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:27:01.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:27:01.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:27:01.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:27:01.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:26:46', tmtdew=29.91, humidity=12.23, cloud=0.0, wind=17.33, temperature=18.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:26:38.573', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03125, 0.011250000000000426, 0.07925000000000004, -0.0365000000000002, -0.01249999999999929, -0.08474999999999966, -0.09249999999999936, -0.004749999999999588, 0.0779999999999994, 0.019000000000000128, 0.025249999999999773, 0.045499999999998764, 0.1349999999999998, 0.006249999999999645, -1.0470000000000006, -0.16000000000000014, 0.03924999999999912, 0.08649999999999913, 0.1745000000000001, 0.05524999999999913, 0.13349999999999795, 0.08674999999999855, -1.1012499999999985, -0.2647499999999994, 0.07049999999999912, 0.16350000000000087, 0.19024999999999892, 0.20750000000000135, 0.22300000000000075, -0.013999999999999346, -0.13149999999999906, 0.06900000000000084, 0.04774999999999885], zp_timestamp='2025-11-03T21:23:00')
2025-11-03T23:27:01.320 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:27:01.331 [DEBUG] [Thread-124528] [transport.py] [_log()] starting thread (client mode): 0xedc6da0
2025-11-03T23:27:01.332 [DEBUG] [Thread-124528] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:27:01.351 [DEBUG] [Thread-124528] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:27:01.351 [INFO] [Thread-124528] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:27:01.358 [DEBUG] [Thread-124528] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:27:01.358 [DEBUG] [Thread-124528] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:27:01.359 [DEBUG] [Thread-124528] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:27:01.359 [DEBUG] [Thread-124528] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:27:01.359 [DEBUG] [Thread-124528] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:27:01.359 [DEBUG] [Thread-124528] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:27:01.359 [DEBUG] [Thread-124528] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:27:01.359 [DEBUG] [Thread-124528] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:27:01.359 [DEBUG] [Thread-124528] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:27:01.359 [DEBUG] [Thread-124528] [transport.py] [_log()] client lang: <none>
2025-11-03T23:27:01.359 [DEBUG] [Thread-124528] [transport.py] [_log()] server lang: <none>
2025-11-03T23:27:01.359 [DEBUG] [Thread-124528] [transport.py] [_log()] kex follows: False
2025-11-03T23:27:01.359 [DEBUG] [Thread-124528] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:27:01.359 [DEBUG] [Thread-124528] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:27:01.359 [DEBUG] [Thread-124528] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:27:01.359 [DEBUG] [Thread-124528] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:27:01.359 [DEBUG] [Thread-124528] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:27:01.359 [DEBUG] [Thread-124528] [transport.py] [_log()] Compression: none
2025-11-03T23:27:01.360 [DEBUG] [Thread-124528] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:27:01.428 [DEBUG] [Thread-124528] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:27:01.429 [DEBUG] [Thread-124528] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:27:01.429 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:27:01.430 [DEBUG] [Thread-124528] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:27:01.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:27:01.486 [DEBUG] [Thread-124528] [transport.py] [_log()] userauth is OK
2025-11-03T23:27:01.487 [DEBUG] [Thread-124528] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:27:01.487 [DEBUG] [Thread-124528] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:27:01.487 [DEBUG] [Thread-124528] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:27:01.487 [DEBUG] [Thread-124528] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:27:01.505 [INFO] [Thread-124528] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:27:01.506 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:27:01.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:27:02.377 [DEBUG] [Thread-124528] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:27:02.377 [DEBUG] [Thread-124528] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:27:02.417 [DEBUG] [Thread-124528] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:27:02.417 [DEBUG] [Thread-124528] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:27:02.425 [DEBUG] [Thread-124528] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:27:02.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:27:02.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:27:02.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:27:02.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:27:02.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:27:02.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:27:02.459 [DEBUG] [Thread-124528] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:27:04.121 [DEBUG] [Thread-124530 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:27:06.238 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:27:06.239 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:27:19.239 [DEBUG] [Thread-124531 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:27:32.307 [DEBUG] [Thread-124532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:27:32.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:27:32.477 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:27:32.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:27:34.270 [DEBUG] [Thread-124533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:27:34.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 27, 20), 29.95, 12.18, 0.0, 18.02, 18.81, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:27:34.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:27:20
2025-11-03T23:27:34.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:27:35.088 [DEBUG] [Thread-124534] [transport.py] [_log()] starting thread (client mode): 0xedc6ce0
2025-11-03T23:27:35.091 [DEBUG] [Thread-124534] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:27:35.091 [DEBUG] [Thread-124534] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:27:35.091 [INFO] [Thread-124534] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:27:35.096 [DEBUG] [Thread-124534] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:27:35.097 [DEBUG] [Thread-124534] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:27:35.097 [DEBUG] [Thread-124534] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:27:35.097 [DEBUG] [Thread-124534] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:27:35.097 [DEBUG] [Thread-124534] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:27:35.097 [DEBUG] [Thread-124534] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:27:35.097 [DEBUG] [Thread-124534] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:27:35.097 [DEBUG] [Thread-124534] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:27:35.097 [DEBUG] [Thread-124534] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:27:35.097 [DEBUG] [Thread-124534] [transport.py] [_log()] client lang: <none>
2025-11-03T23:27:35.097 [DEBUG] [Thread-124534] [transport.py] [_log()] server lang: <none>
2025-11-03T23:27:35.097 [DEBUG] [Thread-124534] [transport.py] [_log()] kex follows: False
2025-11-03T23:27:35.097 [DEBUG] [Thread-124534] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:27:35.098 [DEBUG] [Thread-124534] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:27:35.098 [DEBUG] [Thread-124534] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:27:35.098 [DEBUG] [Thread-124534] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:27:35.098 [DEBUG] [Thread-124534] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:27:35.098 [DEBUG] [Thread-124534] [transport.py] [_log()] Compression: none
2025-11-03T23:27:35.098 [DEBUG] [Thread-124534] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:27:35.127 [DEBUG] [Thread-124534] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:27:35.129 [DEBUG] [Thread-124534] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:27:35.130 [DEBUG] [Thread-124534] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:27:35.132 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:27:35.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:27:35.135 [DEBUG] [Thread-124534] [transport.py] [_log()] userauth is OK
2025-11-03T23:27:35.136 [DEBUG] [Thread-124534] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:27:35.136 [DEBUG] [Thread-124534] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:27:35.136 [DEBUG] [Thread-124534] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:27:35.136 [DEBUG] [Thread-124534] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:27:35.174 [INFO] [Thread-124534] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:27:35.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:27:35.803 [DEBUG] [Thread-124534] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:27:35.803 [DEBUG] [Thread-124534] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:27:35.813 [DEBUG] [Thread-124534] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:27:35.844 [DEBUG] [Thread-124534] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:27:35.844 [DEBUG] [Thread-124534] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:27:35.847 [DEBUG] [Thread-124534] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:27:35.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:27:35.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:27:35.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:27:35.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:27:35.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:27:35.866 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:27:35.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:27:35.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:27:35.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:27:35.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.893849 -999.00  +18.80  13.67     17   -6.30 1 1 1 1 1     0    0 24.79 -26.76 ZNESW 15.8 13.7 301.4 18.0 18.9 -24.9 18.8 -23.9 18.6 -23.8 18.8 -24.5
2025-11-03T23:27:35.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:27:35.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:27:35.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.893849
2025-11-03T23:27:35.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:27:35.871 [DEBUG] [Thread-124534] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:27:35.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:27:35.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:27:35.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:27:35.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:27:35.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:27:20', tmtdew=29.95, humidity=12.18, cloud=0.0, wind=18.02, temperature=18.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:27:08.554', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01025000000000098, 0.02775000000000105, 0.1332500000000003, 0.08949999999999925, -0.10099999999999909, -0.015750000000000597, -0.16999999999999993, -0.09774999999999956, 0.03449999999999953, 0.03750000000000142, 0.1172500000000003, 0.05599999999999916, 0.12199999999999989, 0.034250000000000114, -0.918000000000001, -0.0810000000000013, 0.06874999999999964, 0.061500000000000554, 0.2029999999999994, 0.13124999999999964, 0.1529999999999987, 0.07124999999999915, -0.7297499999999992, 0.015750000000000597, 0.1039999999999992, 0.20350000000000001, 0.1957500000000003, 0.22049999999999947, 0.25900000000000034, 0.12100000000000222, -0.0779999999999994, 0.12950000000000017, 0.08724999999999916], zp_timestamp='2025-11-03T21:26:00')
2025-11-03T23:27:35.947 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:27:35.960 [DEBUG] [Thread-124537] [transport.py] [_log()] starting thread (client mode): 0xedc58d0
2025-11-03T23:27:35.961 [DEBUG] [Thread-124537] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:27:35.975 [DEBUG] [Thread-124537] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:27:35.975 [INFO] [Thread-124537] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:27:35.983 [DEBUG] [Thread-124537] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:27:35.983 [DEBUG] [Thread-124537] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:27:35.983 [DEBUG] [Thread-124537] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:27:35.983 [DEBUG] [Thread-124537] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:27:35.983 [DEBUG] [Thread-124537] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:27:35.983 [DEBUG] [Thread-124537] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:27:35.983 [DEBUG] [Thread-124537] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:27:35.983 [DEBUG] [Thread-124537] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:27:35.983 [DEBUG] [Thread-124537] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:27:35.983 [DEBUG] [Thread-124537] [transport.py] [_log()] client lang: <none>
2025-11-03T23:27:35.983 [DEBUG] [Thread-124537] [transport.py] [_log()] server lang: <none>
2025-11-03T23:27:35.983 [DEBUG] [Thread-124537] [transport.py] [_log()] kex follows: False
2025-11-03T23:27:35.983 [DEBUG] [Thread-124537] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:27:35.983 [DEBUG] [Thread-124537] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:27:35.983 [DEBUG] [Thread-124537] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:27:35.983 [DEBUG] [Thread-124537] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:27:35.983 [DEBUG] [Thread-124537] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:27:35.983 [DEBUG] [Thread-124537] [transport.py] [_log()] Compression: none
2025-11-03T23:27:35.983 [DEBUG] [Thread-124537] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:27:36.040 [DEBUG] [Thread-124537] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:27:36.040 [DEBUG] [Thread-124537] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:27:36.040 [DEBUG] [Thread-124537] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:27:36.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:27:36.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:27:36.097 [DEBUG] [Thread-124537] [transport.py] [_log()] userauth is OK
2025-11-03T23:27:36.097 [DEBUG] [Thread-124537] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:27:36.097 [DEBUG] [Thread-124537] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:27:36.097 [DEBUG] [Thread-124537] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:27:36.097 [DEBUG] [Thread-124537] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:27:36.111 [INFO] [Thread-124537] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:27:36.111 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:27:36.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:27:36.937 [DEBUG] [Thread-124537] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:27:36.937 [DEBUG] [Thread-124537] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:27:36.985 [DEBUG] [Thread-124537] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:27:36.985 [DEBUG] [Thread-124537] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:27:36.994 [DEBUG] [Thread-124537] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:27:37.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:27:37.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:27:37.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:27:37.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:27:37.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:27:37.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:27:37.034 [DEBUG] [Thread-124537] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:27:42.901 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:27:49.312 [DEBUG] [Thread-124539 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:27:50.335 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:27:54.448 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:28:04.442 [DEBUG] [Thread-124540 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:28:06.443 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:28:06.444 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:28:07.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:28:07.056 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:28:07.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:28:07.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 27, 53), 29.94, 12.16, 0.0, 17.24, 18.91, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:28:07.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:27:53
2025-11-03T23:28:07.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:28:08.150 [DEBUG] [Thread-124541] [transport.py] [_log()] starting thread (client mode): 0x1174c3d0
2025-11-03T23:28:08.150 [DEBUG] [Thread-124541] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:28:08.168 [DEBUG] [Thread-124541] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:28:08.168 [INFO] [Thread-124541] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:28:08.170 [DEBUG] [Thread-124541] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:28:08.170 [DEBUG] [Thread-124541] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:28:08.170 [DEBUG] [Thread-124541] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:28:08.170 [DEBUG] [Thread-124541] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:28:08.170 [DEBUG] [Thread-124541] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:28:08.170 [DEBUG] [Thread-124541] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:28:08.170 [DEBUG] [Thread-124541] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:28:08.170 [DEBUG] [Thread-124541] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:28:08.170 [DEBUG] [Thread-124541] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:28:08.170 [DEBUG] [Thread-124541] [transport.py] [_log()] client lang: <none>
2025-11-03T23:28:08.170 [DEBUG] [Thread-124541] [transport.py] [_log()] server lang: <none>
2025-11-03T23:28:08.170 [DEBUG] [Thread-124541] [transport.py] [_log()] kex follows: False
2025-11-03T23:28:08.171 [DEBUG] [Thread-124541] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:28:08.171 [DEBUG] [Thread-124541] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:28:08.171 [DEBUG] [Thread-124541] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:28:08.171 [DEBUG] [Thread-124541] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:28:08.171 [DEBUG] [Thread-124541] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:28:08.171 [DEBUG] [Thread-124541] [transport.py] [_log()] Compression: none
2025-11-03T23:28:08.171 [DEBUG] [Thread-124541] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:28:08.187 [DEBUG] [Thread-124541] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:28:08.188 [DEBUG] [Thread-124541] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:28:08.189 [DEBUG] [Thread-124541] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:28:08.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:28:08.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:28:08.234 [DEBUG] [Thread-124541] [transport.py] [_log()] userauth is OK
2025-11-03T23:28:08.234 [DEBUG] [Thread-124541] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:28:08.234 [DEBUG] [Thread-124541] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:28:08.234 [DEBUG] [Thread-124541] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:28:08.234 [DEBUG] [Thread-124541] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:28:08.249 [INFO] [Thread-124541] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:28:08.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:28:08.881 [DEBUG] [Thread-124541] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:28:08.882 [DEBUG] [Thread-124541] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:28:08.882 [DEBUG] [Thread-124541] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:28:08.923 [DEBUG] [Thread-124541] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:28:08.923 [DEBUG] [Thread-124541] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:28:08.925 [DEBUG] [Thread-124541] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:28:08.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:28:08.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:28:08.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:28:08.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:28:08.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:28:08.937 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:28:08.937 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:28:08.937 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:28:08.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:28:08.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.894196 -999.00  +18.80  12.51     17   -6.40 1 1 1 1 1     0    0 25.04 -24.08 ZNESW 12.1 12.5 306.8 18.4 18.9 -25.2 18.8 -24.0 18.6 -23.9 18.8 -24.8
2025-11-03T23:28:08.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:28:08.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:28:08.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.894196
2025-11-03T23:28:08.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:28:08.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:28:08.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:28:08.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:28:08.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:28:08.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:27:53', tmtdew=29.94, humidity=12.16, cloud=0.0, wind=17.24, temperature=18.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:27:38.534', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01025000000000098, 0.02775000000000105, 0.1332500000000003, 0.08949999999999925, -0.10099999999999909, -0.015750000000000597, -0.16999999999999993, -0.09774999999999956, 0.03449999999999953, 0.03750000000000142, 0.1172500000000003, 0.05599999999999916, 0.12199999999999989, 0.034250000000000114, -0.918000000000001, -0.0810000000000013, 0.06874999999999964, 0.061500000000000554, 0.2029999999999994, 0.13124999999999964, 0.1529999999999987, 0.07124999999999915, -0.7297499999999992, 0.015750000000000597, 0.1039999999999992, 0.20350000000000001, 0.1957500000000003, 0.22049999999999947, 0.25900000000000034, 0.12100000000000222, -0.0779999999999994, 0.12950000000000017, 0.08724999999999916], zp_timestamp='2025-11-03T21:26:00')
2025-11-03T23:28:08.938 [DEBUG] [Thread-124541] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:28:09.013 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:28:09.024 [DEBUG] [Thread-124544] [transport.py] [_log()] starting thread (client mode): 0xed07c10
2025-11-03T23:28:09.024 [DEBUG] [Thread-124544] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:28:09.040 [DEBUG] [Thread-124544] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:28:09.040 [INFO] [Thread-124544] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:28:09.048 [DEBUG] [Thread-124544] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:28:09.048 [DEBUG] [Thread-124544] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:28:09.048 [DEBUG] [Thread-124544] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:28:09.048 [DEBUG] [Thread-124544] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:28:09.048 [DEBUG] [Thread-124544] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:28:09.048 [DEBUG] [Thread-124544] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:28:09.048 [DEBUG] [Thread-124544] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:28:09.048 [DEBUG] [Thread-124544] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:28:09.048 [DEBUG] [Thread-124544] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:28:09.048 [DEBUG] [Thread-124544] [transport.py] [_log()] client lang: <none>
2025-11-03T23:28:09.048 [DEBUG] [Thread-124544] [transport.py] [_log()] server lang: <none>
2025-11-03T23:28:09.048 [DEBUG] [Thread-124544] [transport.py] [_log()] kex follows: False
2025-11-03T23:28:09.048 [DEBUG] [Thread-124544] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:28:09.048 [DEBUG] [Thread-124544] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:28:09.048 [DEBUG] [Thread-124544] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:28:09.048 [DEBUG] [Thread-124544] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:28:09.048 [DEBUG] [Thread-124544] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:28:09.048 [DEBUG] [Thread-124544] [transport.py] [_log()] Compression: none
2025-11-03T23:28:09.048 [DEBUG] [Thread-124544] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:28:09.108 [DEBUG] [Thread-124544] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:28:09.108 [DEBUG] [Thread-124544] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:28:09.108 [DEBUG] [Thread-124544] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:28:09.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:28:09.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:28:09.174 [DEBUG] [Thread-124544] [transport.py] [_log()] userauth is OK
2025-11-03T23:28:09.174 [DEBUG] [Thread-124544] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:28:09.174 [DEBUG] [Thread-124544] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:28:09.174 [DEBUG] [Thread-124544] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:28:09.174 [DEBUG] [Thread-124544] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:28:09.189 [INFO] [Thread-124544] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:28:09.189 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:28:09.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:28:10.044 [DEBUG] [Thread-124544] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:28:10.044 [DEBUG] [Thread-124544] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:28:10.092 [DEBUG] [Thread-124544] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:28:10.092 [DEBUG] [Thread-124544] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:28:10.101 [DEBUG] [Thread-124544] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:28:10.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:28:10.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:28:10.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:28:10.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:28:10.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:28:10.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:28:10.135 [DEBUG] [Thread-124544] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:28:19.472 [DEBUG] [Thread-124546 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:28:32.622 [DEBUG] [Thread-124547 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:28:34.551 [DEBUG] [Thread-124548 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:28:40.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:28:40.142 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:28:40.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:28:40.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 28, 28), 29.93, 12.16, 0.0, 17.27, 18.88, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:28:40.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:28:28
2025-11-03T23:28:41.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:28:41.232 [DEBUG] [Thread-124549] [transport.py] [_log()] starting thread (client mode): 0xedc7370
2025-11-03T23:28:41.232 [DEBUG] [Thread-124549] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:28:41.244 [DEBUG] [Thread-124549] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:28:41.244 [INFO] [Thread-124549] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:28:41.247 [DEBUG] [Thread-124549] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:28:41.248 [DEBUG] [Thread-124549] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:28:41.248 [DEBUG] [Thread-124549] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:28:41.248 [DEBUG] [Thread-124549] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:28:41.248 [DEBUG] [Thread-124549] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:28:41.248 [DEBUG] [Thread-124549] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:28:41.248 [DEBUG] [Thread-124549] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:28:41.248 [DEBUG] [Thread-124549] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:28:41.248 [DEBUG] [Thread-124549] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:28:41.248 [DEBUG] [Thread-124549] [transport.py] [_log()] client lang: <none>
2025-11-03T23:28:41.248 [DEBUG] [Thread-124549] [transport.py] [_log()] server lang: <none>
2025-11-03T23:28:41.248 [DEBUG] [Thread-124549] [transport.py] [_log()] kex follows: False
2025-11-03T23:28:41.248 [DEBUG] [Thread-124549] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:28:41.248 [DEBUG] [Thread-124549] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:28:41.248 [DEBUG] [Thread-124549] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:28:41.248 [DEBUG] [Thread-124549] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:28:41.248 [DEBUG] [Thread-124549] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:28:41.248 [DEBUG] [Thread-124549] [transport.py] [_log()] Compression: none
2025-11-03T23:28:41.248 [DEBUG] [Thread-124549] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:28:41.265 [DEBUG] [Thread-124549] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:28:41.265 [DEBUG] [Thread-124549] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:28:41.266 [DEBUG] [Thread-124549] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:28:41.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:28:41.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:28:41.310 [DEBUG] [Thread-124549] [transport.py] [_log()] userauth is OK
2025-11-03T23:28:41.310 [DEBUG] [Thread-124549] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:28:41.311 [DEBUG] [Thread-124549] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:28:41.311 [DEBUG] [Thread-124549] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:28:41.311 [DEBUG] [Thread-124549] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:28:41.333 [INFO] [Thread-124549] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:28:41.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:28:41.992 [DEBUG] [Thread-124549] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:28:41.992 [DEBUG] [Thread-124549] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:28:41.992 [DEBUG] [Thread-124549] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:28:42.032 [DEBUG] [Thread-124549] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:28:42.032 [DEBUG] [Thread-124549] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:28:42.035 [DEBUG] [Thread-124549] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:28:42.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:28:42.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:28:42.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:28:42.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:28:42.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:28:42.054 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:28:42.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:28:42.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:28:42.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:28:42.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.894544 -999.00  +18.80  13.96     17   -6.30 1 1 1 1 1     0    0 24.68 -22.85 ZNESW 14.1 14.0 314.4 16.2 18.9 -25.0 18.8 -24.1 18.6 -23.9 18.9 -24.7
2025-11-03T23:28:42.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:28:42.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:28:42.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.894544
2025-11-03T23:28:42.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:28:42.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:28:42.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:28:42.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:28:42.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:28:42.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:28:28', tmtdew=29.93, humidity=12.16, cloud=0.0, wind=17.27, temperature=18.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:28:08.602', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01025000000000098, 0.02775000000000105, 0.1332500000000003, 0.08949999999999925, -0.10099999999999909, -0.015750000000000597, -0.16999999999999993, -0.09774999999999956, 0.03449999999999953, 0.03750000000000142, 0.1172500000000003, 0.05599999999999916, 0.12199999999999989, 0.034250000000000114, -0.918000000000001, -0.0810000000000013, 0.06874999999999964, 0.061500000000000554, 0.2029999999999994, 0.13124999999999964, 0.1529999999999987, 0.07124999999999915, -0.7297499999999992, 0.015750000000000597, 0.1039999999999992, 0.20350000000000001, 0.1957500000000003, 0.22049999999999947, 0.25900000000000034, 0.12100000000000222, -0.0779999999999994, 0.12950000000000017, 0.08724999999999916], zp_timestamp='2025-11-03T21:26:00')
2025-11-03T23:28:42.055 [DEBUG] [Thread-124549] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:28:42.127 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:28:42.148 [DEBUG] [Thread-124552] [transport.py] [_log()] starting thread (client mode): 0xed34dc0
2025-11-03T23:28:42.148 [DEBUG] [Thread-124552] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:28:42.171 [DEBUG] [Thread-124552] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:28:42.171 [INFO] [Thread-124552] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:28:42.182 [DEBUG] [Thread-124552] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:28:42.182 [DEBUG] [Thread-124552] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:28:42.182 [DEBUG] [Thread-124552] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:28:42.182 [DEBUG] [Thread-124552] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:28:42.182 [DEBUG] [Thread-124552] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:28:42.182 [DEBUG] [Thread-124552] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:28:42.182 [DEBUG] [Thread-124552] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:28:42.182 [DEBUG] [Thread-124552] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:28:42.182 [DEBUG] [Thread-124552] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:28:42.182 [DEBUG] [Thread-124552] [transport.py] [_log()] client lang: <none>
2025-11-03T23:28:42.182 [DEBUG] [Thread-124552] [transport.py] [_log()] server lang: <none>
2025-11-03T23:28:42.182 [DEBUG] [Thread-124552] [transport.py] [_log()] kex follows: False
2025-11-03T23:28:42.182 [DEBUG] [Thread-124552] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:28:42.182 [DEBUG] [Thread-124552] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:28:42.182 [DEBUG] [Thread-124552] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:28:42.182 [DEBUG] [Thread-124552] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:28:42.182 [DEBUG] [Thread-124552] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:28:42.183 [DEBUG] [Thread-124552] [transport.py] [_log()] Compression: none
2025-11-03T23:28:42.183 [DEBUG] [Thread-124552] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:28:42.246 [DEBUG] [Thread-124552] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:28:42.246 [DEBUG] [Thread-124552] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:28:42.246 [DEBUG] [Thread-124552] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:28:42.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:28:42.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:28:42.311 [DEBUG] [Thread-124552] [transport.py] [_log()] userauth is OK
2025-11-03T23:28:42.311 [DEBUG] [Thread-124552] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:28:42.311 [DEBUG] [Thread-124552] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:28:42.311 [DEBUG] [Thread-124552] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:28:42.311 [DEBUG] [Thread-124552] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:28:42.326 [INFO] [Thread-124552] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:28:42.335 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:28:42.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:28:43.158 [DEBUG] [Thread-124552] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:28:43.159 [DEBUG] [Thread-124552] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:28:43.206 [DEBUG] [Thread-124552] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:28:43.206 [DEBUG] [Thread-124552] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:28:43.216 [DEBUG] [Thread-124552] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:28:43.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:28:43.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:28:43.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:28:43.257 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:28:43.257 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:28:43.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:28:43.265 [DEBUG] [Thread-124552] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:28:49.576 [DEBUG] [Thread-124554 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:29:04.767 [DEBUG] [Thread-124555 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:29:06.649 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:29:06.655 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:29:13.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:29:13.289 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:29:13.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:29:15.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 29), 29.94, 12.15, 0.0, 17.33, 18.85, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:29:15.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:29:00
2025-11-03T23:29:15.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:29:15.914 [DEBUG] [Thread-124556] [transport.py] [_log()] starting thread (client mode): 0xedc6d70
2025-11-03T23:29:15.920 [DEBUG] [Thread-124556] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:29:15.922 [DEBUG] [Thread-124556] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:29:15.924 [INFO] [Thread-124556] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:29:15.937 [DEBUG] [Thread-124556] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:29:15.938 [DEBUG] [Thread-124556] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:29:15.938 [DEBUG] [Thread-124556] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:29:15.938 [DEBUG] [Thread-124556] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:29:15.938 [DEBUG] [Thread-124556] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:29:15.938 [DEBUG] [Thread-124556] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:29:15.938 [DEBUG] [Thread-124556] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:29:15.938 [DEBUG] [Thread-124556] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:29:15.938 [DEBUG] [Thread-124556] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:29:15.938 [DEBUG] [Thread-124556] [transport.py] [_log()] client lang: <none>
2025-11-03T23:29:15.938 [DEBUG] [Thread-124556] [transport.py] [_log()] server lang: <none>
2025-11-03T23:29:15.938 [DEBUG] [Thread-124556] [transport.py] [_log()] kex follows: False
2025-11-03T23:29:15.938 [DEBUG] [Thread-124556] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:29:15.940 [DEBUG] [Thread-124556] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:29:15.940 [DEBUG] [Thread-124556] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:29:15.940 [DEBUG] [Thread-124556] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:29:15.940 [DEBUG] [Thread-124556] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:29:15.940 [DEBUG] [Thread-124556] [transport.py] [_log()] Compression: none
2025-11-03T23:29:15.940 [DEBUG] [Thread-124556] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:29:16.008 [DEBUG] [Thread-124556] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:29:16.025 [DEBUG] [Thread-124556] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:29:16.029 [DEBUG] [Thread-124556] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:29:16.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:29:16.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:29:16.046 [DEBUG] [Thread-124556] [transport.py] [_log()] userauth is OK
2025-11-03T23:29:16.047 [DEBUG] [Thread-124556] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:29:16.048 [DEBUG] [Thread-124556] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:29:16.048 [DEBUG] [Thread-124556] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:29:16.048 [DEBUG] [Thread-124556] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:29:16.102 [INFO] [Thread-124556] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:29:16.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:29:16.736 [DEBUG] [Thread-124556] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:29:16.737 [DEBUG] [Thread-124556] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:29:16.747 [DEBUG] [Thread-124556] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:29:16.778 [DEBUG] [Thread-124556] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:29:16.779 [DEBUG] [Thread-124556] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:29:16.782 [DEBUG] [Thread-124556] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:29:16.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:29:16.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:29:16.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:29:16.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:29:16.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:29:16.811 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:29:16.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:29:16.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:29:16.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:29:16.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.894891 -999.00  +18.80  14.64     17   -6.30 1 1 1 1 1     0    0 24.63 -23.36 ZNESW 13.9 14.6 303.8 17.0 18.9 -25.1 18.8 -24.0 18.6 -23.9 18.9 -24.7
2025-11-03T23:29:16.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:29:16.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:29:16.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.894891
2025-11-03T23:29:16.819 [DEBUG] [Thread-124556] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:29:16.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:29:16.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:29:16.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:29:16.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:29:16.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:29:16.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:29:00', tmtdew=29.94, humidity=12.15, cloud=0.0, wind=17.33, temperature=18.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:28:38.582', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01025000000000098, 0.02775000000000105, 0.1332500000000003, 0.08949999999999925, -0.10099999999999909, -0.015750000000000597, -0.16999999999999993, -0.09774999999999956, 0.03449999999999953, 0.03750000000000142, 0.1172500000000003, 0.05599999999999916, 0.12199999999999989, 0.034250000000000114, -0.918000000000001, -0.0810000000000013, 0.06874999999999964, 0.061500000000000554, 0.2029999999999994, 0.13124999999999964, 0.1529999999999987, 0.07124999999999915, -0.7297499999999992, 0.015750000000000597, 0.1039999999999992, 0.20350000000000001, 0.1957500000000003, 0.22049999999999947, 0.25900000000000034, 0.12100000000000222, -0.0779999999999994, 0.12950000000000017, 0.08724999999999916], zp_timestamp='2025-11-03T21:26:00')
2025-11-03T23:29:16.936 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:29:16.949 [DEBUG] [Thread-124559] [transport.py] [_log()] starting thread (client mode): 0xedc5000
2025-11-03T23:29:16.949 [DEBUG] [Thread-124559] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:29:16.969 [DEBUG] [Thread-124559] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:29:16.969 [INFO] [Thread-124559] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:29:16.977 [DEBUG] [Thread-124559] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:29:16.977 [DEBUG] [Thread-124559] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:29:16.977 [DEBUG] [Thread-124559] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:29:16.977 [DEBUG] [Thread-124559] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:29:16.977 [DEBUG] [Thread-124559] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:29:16.977 [DEBUG] [Thread-124559] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:29:16.977 [DEBUG] [Thread-124559] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:29:16.977 [DEBUG] [Thread-124559] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:29:16.977 [DEBUG] [Thread-124559] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:29:16.977 [DEBUG] [Thread-124559] [transport.py] [_log()] client lang: <none>
2025-11-03T23:29:16.977 [DEBUG] [Thread-124559] [transport.py] [_log()] server lang: <none>
2025-11-03T23:29:16.978 [DEBUG] [Thread-124559] [transport.py] [_log()] kex follows: False
2025-11-03T23:29:16.978 [DEBUG] [Thread-124559] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:29:16.978 [DEBUG] [Thread-124559] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:29:16.978 [DEBUG] [Thread-124559] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:29:16.978 [DEBUG] [Thread-124559] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:29:16.979 [DEBUG] [Thread-124559] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:29:16.979 [DEBUG] [Thread-124559] [transport.py] [_log()] Compression: none
2025-11-03T23:29:16.979 [DEBUG] [Thread-124559] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:29:17.038 [DEBUG] [Thread-124559] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:29:17.039 [DEBUG] [Thread-124559] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:29:17.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:29:17.040 [DEBUG] [Thread-124559] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:29:17.041 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:29:17.097 [DEBUG] [Thread-124559] [transport.py] [_log()] userauth is OK
2025-11-03T23:29:17.097 [DEBUG] [Thread-124559] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:29:17.098 [DEBUG] [Thread-124559] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:29:17.098 [DEBUG] [Thread-124559] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:29:17.098 [DEBUG] [Thread-124559] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:29:17.117 [INFO] [Thread-124559] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:29:17.118 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:29:17.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:29:17.989 [DEBUG] [Thread-124559] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:29:17.989 [DEBUG] [Thread-124559] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:29:18.038 [DEBUG] [Thread-124559] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:29:18.038 [DEBUG] [Thread-124559] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:29:18.047 [DEBUG] [Thread-124559] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:29:18.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:29:18.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:29:18.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:29:18.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:29:18.077 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:29:18.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:29:18.090 [DEBUG] [Thread-124559] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:29:19.808 [DEBUG] [Thread-124561 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:29:32.919 [DEBUG] [Thread-124562 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:29:34.845 [DEBUG] [Thread-124563 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:29:48.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:29:48.117 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:29:48.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:29:48.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 29, 33), 29.86, 12.18, 0.0, 17.24, 18.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:29:48.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:29:33
2025-11-03T23:29:49.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:29:49.169 [DEBUG] [Thread-124564] [transport.py] [_log()] starting thread (client mode): 0x117612d0
2025-11-03T23:29:49.169 [DEBUG] [Thread-124564] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:29:49.190 [DEBUG] [Thread-124564] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:29:49.190 [INFO] [Thread-124564] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:29:49.193 [DEBUG] [Thread-124564] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:29:49.193 [DEBUG] [Thread-124564] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:29:49.193 [DEBUG] [Thread-124564] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:29:49.194 [DEBUG] [Thread-124564] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:29:49.194 [DEBUG] [Thread-124564] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:29:49.194 [DEBUG] [Thread-124564] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:29:49.194 [DEBUG] [Thread-124564] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:29:49.194 [DEBUG] [Thread-124564] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:29:49.194 [DEBUG] [Thread-124564] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:29:49.194 [DEBUG] [Thread-124564] [transport.py] [_log()] client lang: <none>
2025-11-03T23:29:49.194 [DEBUG] [Thread-124564] [transport.py] [_log()] server lang: <none>
2025-11-03T23:29:49.194 [DEBUG] [Thread-124564] [transport.py] [_log()] kex follows: False
2025-11-03T23:29:49.194 [DEBUG] [Thread-124564] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:29:49.194 [DEBUG] [Thread-124564] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:29:49.195 [DEBUG] [Thread-124564] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:29:49.195 [DEBUG] [Thread-124564] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:29:49.195 [DEBUG] [Thread-124564] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:29:49.195 [DEBUG] [Thread-124564] [transport.py] [_log()] Compression: none
2025-11-03T23:29:49.195 [DEBUG] [Thread-124564] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:29:49.211 [DEBUG] [Thread-124564] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:29:49.211 [DEBUG] [Thread-124564] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:29:49.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:29:49.212 [DEBUG] [Thread-124564] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:29:49.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:29:49.215 [DEBUG] [Thread-124564] [transport.py] [_log()] userauth is OK
2025-11-03T23:29:49.215 [DEBUG] [Thread-124564] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:29:49.215 [DEBUG] [Thread-124564] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:29:49.215 [DEBUG] [Thread-124564] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:29:49.215 [DEBUG] [Thread-124564] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:29:49.251 [INFO] [Thread-124564] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:29:49.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:29:49.881 [DEBUG] [Thread-124566 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:29:49.902 [DEBUG] [Thread-124564] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:29:49.902 [DEBUG] [Thread-124564] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:29:49.902 [DEBUG] [Thread-124564] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:29:49.944 [DEBUG] [Thread-124564] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:29:49.944 [DEBUG] [Thread-124564] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:29:49.947 [DEBUG] [Thread-124564] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:29:49.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:29:49.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:29:49.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:29:49.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:29:49.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:29:49.975 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:29:49.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:29:49.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:29:49.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:29:49.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.895238 -999.00  +18.80  15.65     17   -6.30 1 1 1 1 1     0    0 24.31 -23.65 ZNESW 11.6 15.7 301.1 17.5 18.9 -25.0 18.8 -24.0 18.6 -23.8 18.8 -24.7
2025-11-03T23:29:49.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:29:49.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:29:49.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.895238
2025-11-03T23:29:49.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:29:49.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:29:49.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:29:49.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:29:49.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:29:49.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:29:33', tmtdew=29.86, humidity=12.18, cloud=0.0, wind=17.24, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:29:08.563', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01025000000000098, 0.02775000000000105, 0.1332500000000003, 0.08949999999999925, -0.10099999999999909, -0.015750000000000597, -0.16999999999999993, -0.09774999999999956, 0.03449999999999953, 0.03750000000000142, 0.1172500000000003, 0.05599999999999916, 0.12199999999999989, 0.034250000000000114, -0.918000000000001, -0.0810000000000013, 0.06874999999999964, 0.061500000000000554, 0.2029999999999994, 0.13124999999999964, 0.1529999999999987, 0.07124999999999915, -0.7297499999999992, 0.015750000000000597, 0.1039999999999992, 0.20350000000000001, 0.1957500000000003, 0.22049999999999947, 0.25900000000000034, 0.12100000000000222, -0.0779999999999994, 0.12950000000000017, 0.08724999999999916], zp_timestamp='2025-11-03T21:26:00')
2025-11-03T23:29:49.979 [DEBUG] [Thread-124564] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:29:50.063 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:29:50.076 [DEBUG] [Thread-124568] [transport.py] [_log()] starting thread (client mode): 0xed07d60
2025-11-03T23:29:50.076 [DEBUG] [Thread-124568] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:29:50.091 [DEBUG] [Thread-124568] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:29:50.091 [INFO] [Thread-124568] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:29:50.098 [DEBUG] [Thread-124568] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:29:50.099 [DEBUG] [Thread-124568] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:29:50.099 [DEBUG] [Thread-124568] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:29:50.099 [DEBUG] [Thread-124568] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:29:50.099 [DEBUG] [Thread-124568] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:29:50.099 [DEBUG] [Thread-124568] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:29:50.099 [DEBUG] [Thread-124568] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:29:50.099 [DEBUG] [Thread-124568] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:29:50.099 [DEBUG] [Thread-124568] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:29:50.099 [DEBUG] [Thread-124568] [transport.py] [_log()] client lang: <none>
2025-11-03T23:29:50.099 [DEBUG] [Thread-124568] [transport.py] [_log()] server lang: <none>
2025-11-03T23:29:50.099 [DEBUG] [Thread-124568] [transport.py] [_log()] kex follows: False
2025-11-03T23:29:50.099 [DEBUG] [Thread-124568] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:29:50.099 [DEBUG] [Thread-124568] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:29:50.099 [DEBUG] [Thread-124568] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:29:50.099 [DEBUG] [Thread-124568] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:29:50.100 [DEBUG] [Thread-124568] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:29:50.100 [DEBUG] [Thread-124568] [transport.py] [_log()] Compression: none
2025-11-03T23:29:50.100 [DEBUG] [Thread-124568] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:29:50.161 [DEBUG] [Thread-124568] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:29:50.162 [DEBUG] [Thread-124568] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:29:50.163 [DEBUG] [Thread-124568] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:29:50.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:29:50.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:29:50.217 [DEBUG] [Thread-124568] [transport.py] [_log()] userauth is OK
2025-11-03T23:29:50.218 [DEBUG] [Thread-124568] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:29:50.218 [DEBUG] [Thread-124568] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:29:50.218 [DEBUG] [Thread-124568] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:29:50.218 [DEBUG] [Thread-124568] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:29:50.237 [INFO] [Thread-124568] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:29:50.238 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:29:50.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:29:51.116 [DEBUG] [Thread-124568] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:29:51.116 [DEBUG] [Thread-124568] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:29:51.165 [DEBUG] [Thread-124568] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:29:51.165 [DEBUG] [Thread-124568] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:29:51.173 [DEBUG] [Thread-124568] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:29:51.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:29:51.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:29:51.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:29:51.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:29:51.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:29:51.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:29:51.215 [DEBUG] [Thread-124568] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:30:04.921 [DEBUG] [Thread-124570 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:30:06.858 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:30:06.858 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:30:19.998 [DEBUG] [Thread-124571 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:30:21.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:30:21.257 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:30:21.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:30:23.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 30, 5), 29.81, 12.23, 0.0, 16.48, 18.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:30:23.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:30:05
2025-11-03T23:30:24.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:30:24.563 [DEBUG] [Thread-124572] [transport.py] [_log()] starting thread (client mode): 0xed07670
2025-11-03T23:30:24.569 [DEBUG] [Thread-124572] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:30:24.571 [DEBUG] [Thread-124572] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:30:24.573 [INFO] [Thread-124572] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:30:24.596 [DEBUG] [Thread-124572] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:30:24.597 [DEBUG] [Thread-124572] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:30:24.597 [DEBUG] [Thread-124572] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:30:24.597 [DEBUG] [Thread-124572] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:30:24.597 [DEBUG] [Thread-124572] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:30:24.597 [DEBUG] [Thread-124572] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:30:24.597 [DEBUG] [Thread-124572] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:30:24.597 [DEBUG] [Thread-124572] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:30:24.597 [DEBUG] [Thread-124572] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:30:24.597 [DEBUG] [Thread-124572] [transport.py] [_log()] client lang: <none>
2025-11-03T23:30:24.597 [DEBUG] [Thread-124572] [transport.py] [_log()] server lang: <none>
2025-11-03T23:30:24.598 [DEBUG] [Thread-124572] [transport.py] [_log()] kex follows: False
2025-11-03T23:30:24.598 [DEBUG] [Thread-124572] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:30:24.602 [DEBUG] [Thread-124572] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:30:24.602 [DEBUG] [Thread-124572] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:30:24.602 [DEBUG] [Thread-124572] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:30:24.604 [DEBUG] [Thread-124572] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:30:24.604 [DEBUG] [Thread-124572] [transport.py] [_log()] Compression: none
2025-11-03T23:30:24.604 [DEBUG] [Thread-124572] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:30:24.687 [DEBUG] [Thread-124572] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:30:24.711 [DEBUG] [Thread-124572] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:30:24.719 [DEBUG] [Thread-124572] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:30:24.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:30:24.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:30:24.744 [DEBUG] [Thread-124572] [transport.py] [_log()] userauth is OK
2025-11-03T23:30:24.745 [DEBUG] [Thread-124572] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:30:24.746 [DEBUG] [Thread-124572] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:30:24.746 [DEBUG] [Thread-124572] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:30:24.746 [DEBUG] [Thread-124572] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:30:24.800 [INFO] [Thread-124572] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:30:24.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:30:25.452 [DEBUG] [Thread-124572] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:30:25.452 [DEBUG] [Thread-124572] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:30:25.461 [DEBUG] [Thread-124572] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:30:25.493 [DEBUG] [Thread-124572] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:30:25.493 [DEBUG] [Thread-124572] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:30:25.495 [DEBUG] [Thread-124572] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:30:25.509 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:30:25.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:30:25.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:30:25.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:30:25.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:30:25.519 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:30:25.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:30:25.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:30:25.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:30:25.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.895932 -999.00  +18.90  16.20     17   -6.20 1 1 1 1 1     0    0 25.04 -21.71 ZNESW 16.9 16.2 302.4 19.4 18.9 -25.0 18.8 -23.8 18.6 -23.6 18.9 -24.8
2025-11-03T23:30:25.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:30:25.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:30:25.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.895932
2025-11-03T23:30:25.527 [DEBUG] [Thread-124572] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:30:25.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:30:25.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:30:25.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:30:25.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:30:25.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:30:25.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:30:05', tmtdew=29.81, humidity=12.23, cloud=0.0, wind=16.48, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:30:08.525', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01025000000000098, 0.02775000000000105, 0.1332500000000003, 0.08949999999999925, -0.10099999999999909, -0.015750000000000597, -0.16999999999999993, -0.09774999999999956, 0.03449999999999953, 0.03750000000000142, 0.1172500000000003, 0.05599999999999916, 0.12199999999999989, 0.034250000000000114, -0.918000000000001, -0.0810000000000013, 0.06874999999999964, 0.061500000000000554, 0.2029999999999994, 0.13124999999999964, 0.1529999999999987, 0.07124999999999915, -0.7297499999999992, 0.015750000000000597, 0.1039999999999992, 0.20350000000000001, 0.1957500000000003, 0.22049999999999947, 0.25900000000000034, 0.12100000000000222, -0.0779999999999994, 0.12950000000000017, 0.08724999999999916], zp_timestamp='2025-11-03T21:28:00')
2025-11-03T23:30:25.620 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:30:25.632 [DEBUG] [Thread-124575] [transport.py] [_log()] starting thread (client mode): 0xed359f0
2025-11-03T23:30:25.632 [DEBUG] [Thread-124575] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:30:25.647 [DEBUG] [Thread-124575] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:30:25.647 [INFO] [Thread-124575] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:30:25.655 [DEBUG] [Thread-124575] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:30:25.656 [DEBUG] [Thread-124575] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:30:25.656 [DEBUG] [Thread-124575] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:30:25.656 [DEBUG] [Thread-124575] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:30:25.656 [DEBUG] [Thread-124575] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:30:25.656 [DEBUG] [Thread-124575] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:30:25.656 [DEBUG] [Thread-124575] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:30:25.656 [DEBUG] [Thread-124575] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:30:25.656 [DEBUG] [Thread-124575] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:30:25.656 [DEBUG] [Thread-124575] [transport.py] [_log()] client lang: <none>
2025-11-03T23:30:25.656 [DEBUG] [Thread-124575] [transport.py] [_log()] server lang: <none>
2025-11-03T23:30:25.656 [DEBUG] [Thread-124575] [transport.py] [_log()] kex follows: False
2025-11-03T23:30:25.656 [DEBUG] [Thread-124575] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:30:25.656 [DEBUG] [Thread-124575] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:30:25.656 [DEBUG] [Thread-124575] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:30:25.656 [DEBUG] [Thread-124575] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:30:25.656 [DEBUG] [Thread-124575] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:30:25.656 [DEBUG] [Thread-124575] [transport.py] [_log()] Compression: none
2025-11-03T23:30:25.656 [DEBUG] [Thread-124575] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:30:25.711 [DEBUG] [Thread-124575] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:30:25.712 [DEBUG] [Thread-124575] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:30:25.712 [DEBUG] [Thread-124575] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:30:25.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:30:25.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:30:25.769 [DEBUG] [Thread-124575] [transport.py] [_log()] userauth is OK
2025-11-03T23:30:25.769 [DEBUG] [Thread-124575] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:30:25.769 [DEBUG] [Thread-124575] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:30:25.769 [DEBUG] [Thread-124575] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:30:25.769 [DEBUG] [Thread-124575] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:30:25.784 [INFO] [Thread-124575] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:30:25.784 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:30:25.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:30:26.621 [DEBUG] [Thread-124575] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:30:26.621 [DEBUG] [Thread-124575] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:30:26.660 [DEBUG] [Thread-124575] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:30:26.661 [DEBUG] [Thread-124575] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:30:26.671 [DEBUG] [Thread-124575] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:30:26.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:30:26.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:30:26.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:30:26.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:30:26.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:30:26.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:30:26.718 [DEBUG] [Thread-124575] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:30:33.288 [DEBUG] [Thread-124577 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:30:35.031 [DEBUG] [Thread-124578 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:30:50.085 [DEBUG] [Thread-124579 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:30:56.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:30:56.736 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:30:56.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:30:57.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 30, 38), 29.75, 12.23, 0.0, 17.1, 18.78, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:30:57.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:30:38
2025-11-03T23:30:57.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:30:57.828 [DEBUG] [Thread-124580] [transport.py] [_log()] starting thread (client mode): 0xed37dc0
2025-11-03T23:30:57.828 [DEBUG] [Thread-124580] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:30:57.847 [DEBUG] [Thread-124580] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:30:57.847 [INFO] [Thread-124580] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:30:57.850 [DEBUG] [Thread-124580] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:30:57.850 [DEBUG] [Thread-124580] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:30:57.850 [DEBUG] [Thread-124580] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:30:57.850 [DEBUG] [Thread-124580] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:30:57.850 [DEBUG] [Thread-124580] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:30:57.850 [DEBUG] [Thread-124580] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:30:57.850 [DEBUG] [Thread-124580] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:30:57.850 [DEBUG] [Thread-124580] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:30:57.850 [DEBUG] [Thread-124580] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:30:57.850 [DEBUG] [Thread-124580] [transport.py] [_log()] client lang: <none>
2025-11-03T23:30:57.850 [DEBUG] [Thread-124580] [transport.py] [_log()] server lang: <none>
2025-11-03T23:30:57.850 [DEBUG] [Thread-124580] [transport.py] [_log()] kex follows: False
2025-11-03T23:30:57.851 [DEBUG] [Thread-124580] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:30:57.851 [DEBUG] [Thread-124580] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:30:57.851 [DEBUG] [Thread-124580] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:30:57.851 [DEBUG] [Thread-124580] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:30:57.851 [DEBUG] [Thread-124580] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:30:57.851 [DEBUG] [Thread-124580] [transport.py] [_log()] Compression: none
2025-11-03T23:30:57.851 [DEBUG] [Thread-124580] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:30:57.866 [DEBUG] [Thread-124580] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:30:57.867 [DEBUG] [Thread-124580] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:30:57.867 [DEBUG] [Thread-124580] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:30:57.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:30:57.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:30:57.870 [DEBUG] [Thread-124580] [transport.py] [_log()] userauth is OK
2025-11-03T23:30:57.870 [DEBUG] [Thread-124580] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:30:57.871 [DEBUG] [Thread-124580] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:30:57.871 [DEBUG] [Thread-124580] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:30:57.871 [DEBUG] [Thread-124580] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:30:57.888 [INFO] [Thread-124580] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:30:57.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:30:58.491 [DEBUG] [Thread-124580] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:30:58.491 [DEBUG] [Thread-124580] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:30:58.492 [DEBUG] [Thread-124580] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:30:58.532 [DEBUG] [Thread-124580] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:30:58.532 [DEBUG] [Thread-124580] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:30:58.535 [DEBUG] [Thread-124580] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:30:58.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:30:58.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:30:58.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:30:58.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:30:58.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:30:58.563 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:30:58.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:30:58.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:30:58.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:30:58.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.896280 -999.00  +19.00  18.28     17   -6.20 1 1 1 1 1     0    0 24.30 -19.40 ZNESW 16.6 18.3 310.2 20.6 18.9 -25.0 18.9 -23.9 18.6 -23.5 18.9 -24.7
2025-11-03T23:30:58.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:30:58.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:30:58.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.896280
2025-11-03T23:30:58.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:30:58.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:30:58.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:30:58.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:30:58.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:30:58.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:30:38', tmtdew=29.75, humidity=12.23, cloud=0.0, wind=17.1, temperature=18.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:30:38.592', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01025000000000098, 0.02775000000000105, 0.1332500000000003, 0.08949999999999925, -0.10099999999999909, -0.015750000000000597, -0.16999999999999993, -0.09774999999999956, 0.03449999999999953, 0.03750000000000142, 0.1172500000000003, 0.05599999999999916, 0.12199999999999989, 0.034250000000000114, -0.918000000000001, -0.0810000000000013, 0.06874999999999964, 0.061500000000000554, 0.2029999999999994, 0.13124999999999964, 0.1529999999999987, 0.07124999999999915, -0.7297499999999992, 0.015750000000000597, 0.1039999999999992, 0.20350000000000001, 0.1957500000000003, 0.22049999999999947, 0.25900000000000034, 0.12100000000000222, -0.0779999999999994, 0.12950000000000017, 0.08724999999999916], zp_timestamp='2025-11-03T21:28:00')
2025-11-03T23:30:58.564 [DEBUG] [Thread-124580] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:30:58.635 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:30:58.649 [DEBUG] [Thread-124583] [transport.py] [_log()] starting thread (client mode): 0x11761870
2025-11-03T23:30:58.649 [DEBUG] [Thread-124583] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:30:58.665 [DEBUG] [Thread-124583] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:30:58.665 [INFO] [Thread-124583] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:30:58.673 [DEBUG] [Thread-124583] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:30:58.673 [DEBUG] [Thread-124583] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:30:58.673 [DEBUG] [Thread-124583] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:30:58.673 [DEBUG] [Thread-124583] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:30:58.673 [DEBUG] [Thread-124583] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:30:58.673 [DEBUG] [Thread-124583] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:30:58.673 [DEBUG] [Thread-124583] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:30:58.673 [DEBUG] [Thread-124583] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:30:58.673 [DEBUG] [Thread-124583] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:30:58.673 [DEBUG] [Thread-124583] [transport.py] [_log()] client lang: <none>
2025-11-03T23:30:58.673 [DEBUG] [Thread-124583] [transport.py] [_log()] server lang: <none>
2025-11-03T23:30:58.673 [DEBUG] [Thread-124583] [transport.py] [_log()] kex follows: False
2025-11-03T23:30:58.673 [DEBUG] [Thread-124583] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:30:58.673 [DEBUG] [Thread-124583] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:30:58.673 [DEBUG] [Thread-124583] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:30:58.673 [DEBUG] [Thread-124583] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:30:58.673 [DEBUG] [Thread-124583] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:30:58.673 [DEBUG] [Thread-124583] [transport.py] [_log()] Compression: none
2025-11-03T23:30:58.673 [DEBUG] [Thread-124583] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:30:58.733 [DEBUG] [Thread-124583] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:30:58.733 [DEBUG] [Thread-124583] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:30:58.733 [DEBUG] [Thread-124583] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:30:58.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:30:58.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:30:58.789 [DEBUG] [Thread-124583] [transport.py] [_log()] userauth is OK
2025-11-03T23:30:58.789 [DEBUG] [Thread-124583] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:30:58.789 [DEBUG] [Thread-124583] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:30:58.789 [DEBUG] [Thread-124583] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:30:58.789 [DEBUG] [Thread-124583] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:30:58.803 [INFO] [Thread-124583] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:30:58.803 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:30:58.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:30:59.674 [DEBUG] [Thread-124583] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:30:59.675 [DEBUG] [Thread-124583] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:30:59.723 [DEBUG] [Thread-124583] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:30:59.724 [DEBUG] [Thread-124583] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:30:59.733 [DEBUG] [Thread-124583] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:30:59.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:30:59.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:30:59.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:30:59.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:30:59.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:30:59.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:30:59.779 [DEBUG] [Thread-124583] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:31:05.116 [DEBUG] [Thread-124585 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:31:07.071 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:31:07.072 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:31:20.170 [DEBUG] [Thread-124586 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:31:29.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:31:29.800 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:31:29.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:31:30.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 31, 11), 29.73, 12.25, 0.0, 17.54, 18.76, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:31:30.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:31:11
2025-11-03T23:31:30.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:31:31.149 [DEBUG] [Thread-124587] [transport.py] [_log()] starting thread (client mode): 0xed35cf0
2025-11-03T23:31:31.149 [DEBUG] [Thread-124587] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:31:31.170 [DEBUG] [Thread-124587] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:31:31.170 [INFO] [Thread-124587] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:31:31.173 [DEBUG] [Thread-124587] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:31:31.173 [DEBUG] [Thread-124587] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:31:31.174 [DEBUG] [Thread-124587] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:31:31.174 [DEBUG] [Thread-124587] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:31:31.174 [DEBUG] [Thread-124587] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:31:31.174 [DEBUG] [Thread-124587] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:31:31.174 [DEBUG] [Thread-124587] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:31:31.174 [DEBUG] [Thread-124587] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:31:31.174 [DEBUG] [Thread-124587] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:31:31.174 [DEBUG] [Thread-124587] [transport.py] [_log()] client lang: <none>
2025-11-03T23:31:31.174 [DEBUG] [Thread-124587] [transport.py] [_log()] server lang: <none>
2025-11-03T23:31:31.174 [DEBUG] [Thread-124587] [transport.py] [_log()] kex follows: False
2025-11-03T23:31:31.174 [DEBUG] [Thread-124587] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:31:31.174 [DEBUG] [Thread-124587] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:31:31.174 [DEBUG] [Thread-124587] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:31:31.174 [DEBUG] [Thread-124587] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:31:31.174 [DEBUG] [Thread-124587] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:31:31.174 [DEBUG] [Thread-124587] [transport.py] [_log()] Compression: none
2025-11-03T23:31:31.174 [DEBUG] [Thread-124587] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:31:31.190 [DEBUG] [Thread-124587] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:31:31.190 [DEBUG] [Thread-124587] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:31:31.190 [DEBUG] [Thread-124587] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:31:31.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:31:31.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:31:31.191 [DEBUG] [Thread-124587] [transport.py] [_log()] userauth is OK
2025-11-03T23:31:31.191 [DEBUG] [Thread-124587] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:31:31.191 [DEBUG] [Thread-124587] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:31:31.191 [DEBUG] [Thread-124587] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:31:31.191 [DEBUG] [Thread-124587] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:31:31.200 [INFO] [Thread-124587] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:31:31.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:31:31.861 [DEBUG] [Thread-124587] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:31:31.861 [DEBUG] [Thread-124587] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:31:31.861 [DEBUG] [Thread-124587] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:31:31.901 [DEBUG] [Thread-124587] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:31:31.902 [DEBUG] [Thread-124587] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:31:31.904 [DEBUG] [Thread-124587] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:31:31.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:31:31.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:31:31.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:31:31.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:31:31.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:31:31.924 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:31:31.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:31:31.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:31:31.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:31:31.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.896627 -999.00  +19.00  14.59     17   -6.20 1 1 1 1 1     0    0 24.80 -20.50 ZNESW 16.5 14.6 306.0 19.3 18.9 -24.9 18.9 -24.1 18.6 -23.6 18.9 -24.6
2025-11-03T23:31:31.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:31:31.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:31:31.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.896627
2025-11-03T23:31:31.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:31:31.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:31:31.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:31:31.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:31:31.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:31:31.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:31:11', tmtdew=29.73, humidity=12.25, cloud=0.0, wind=17.54, temperature=18.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:31:08.573', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01025000000000098, 0.02775000000000105, 0.1332500000000003, 0.08949999999999925, -0.10099999999999909, -0.015750000000000597, -0.16999999999999993, -0.09774999999999956, 0.03449999999999953, 0.03750000000000142, 0.1172500000000003, 0.05599999999999916, 0.12199999999999989, 0.034250000000000114, -0.918000000000001, -0.0810000000000013, 0.06874999999999964, 0.061500000000000554, 0.2029999999999994, 0.13124999999999964, 0.1529999999999987, 0.07124999999999915, -0.7297499999999992, 0.015750000000000597, 0.1039999999999992, 0.20350000000000001, 0.1957500000000003, 0.22049999999999947, 0.25900000000000034, 0.12100000000000222, -0.0779999999999994, 0.12950000000000017, 0.08724999999999916], zp_timestamp='2025-11-03T21:28:00')
2025-11-03T23:31:31.925 [DEBUG] [Thread-124587] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:31:32.002 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:31:32.022 [DEBUG] [Thread-124590] [transport.py] [_log()] starting thread (client mode): 0xedb2860
2025-11-03T23:31:32.022 [DEBUG] [Thread-124590] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:31:32.041 [DEBUG] [Thread-124590] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:31:32.041 [INFO] [Thread-124590] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:31:32.053 [DEBUG] [Thread-124590] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:31:32.053 [DEBUG] [Thread-124590] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:31:32.053 [DEBUG] [Thread-124590] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:31:32.054 [DEBUG] [Thread-124590] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:31:32.054 [DEBUG] [Thread-124590] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:31:32.054 [DEBUG] [Thread-124590] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:31:32.054 [DEBUG] [Thread-124590] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:31:32.054 [DEBUG] [Thread-124590] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:31:32.054 [DEBUG] [Thread-124590] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:31:32.054 [DEBUG] [Thread-124590] [transport.py] [_log()] client lang: <none>
2025-11-03T23:31:32.054 [DEBUG] [Thread-124590] [transport.py] [_log()] server lang: <none>
2025-11-03T23:31:32.054 [DEBUG] [Thread-124590] [transport.py] [_log()] kex follows: False
2025-11-03T23:31:32.054 [DEBUG] [Thread-124590] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:31:32.054 [DEBUG] [Thread-124590] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:31:32.054 [DEBUG] [Thread-124590] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:31:32.054 [DEBUG] [Thread-124590] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:31:32.054 [DEBUG] [Thread-124590] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:31:32.054 [DEBUG] [Thread-124590] [transport.py] [_log()] Compression: none
2025-11-03T23:31:32.054 [DEBUG] [Thread-124590] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:31:32.114 [DEBUG] [Thread-124590] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:31:32.114 [DEBUG] [Thread-124590] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:31:32.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:31:32.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:31:32.114 [DEBUG] [Thread-124590] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:31:32.180 [DEBUG] [Thread-124590] [transport.py] [_log()] userauth is OK
2025-11-03T23:31:32.180 [DEBUG] [Thread-124590] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:31:32.180 [DEBUG] [Thread-124590] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:31:32.180 [DEBUG] [Thread-124590] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:31:32.180 [DEBUG] [Thread-124590] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:31:32.204 [INFO] [Thread-124590] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:31:32.205 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:31:32.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:31:33.069 [DEBUG] [Thread-124590] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:31:33.070 [DEBUG] [Thread-124590] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:31:33.118 [DEBUG] [Thread-124590] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:31:33.118 [DEBUG] [Thread-124590] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:31:33.127 [DEBUG] [Thread-124590] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:31:33.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:31:33.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:31:33.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:31:33.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:31:33.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:31:33.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:31:33.164 [DEBUG] [Thread-124590] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:31:34.667 [DEBUG] [Thread-124592 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:31:35.200 [DEBUG] [Thread-124593 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:31:50.244 [DEBUG] [Thread-124594 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:32:03.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:32:03.186 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:32:03.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:32:03.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 31, 43), 29.68, 12.3, 0.0, 17.61, 18.76, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:32:03.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:31:43
2025-11-03T23:32:04.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:32:04.273 [DEBUG] [Thread-124595] [transport.py] [_log()] starting thread (client mode): 0xed5e710
2025-11-03T23:32:04.273 [DEBUG] [Thread-124595] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:32:04.282 [DEBUG] [Thread-124595] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:32:04.283 [INFO] [Thread-124595] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:32:04.284 [DEBUG] [Thread-124595] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:32:04.284 [DEBUG] [Thread-124595] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:32:04.284 [DEBUG] [Thread-124595] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:32:04.284 [DEBUG] [Thread-124595] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:32:04.284 [DEBUG] [Thread-124595] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:32:04.285 [DEBUG] [Thread-124595] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:32:04.285 [DEBUG] [Thread-124595] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:32:04.285 [DEBUG] [Thread-124595] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:32:04.285 [DEBUG] [Thread-124595] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:32:04.285 [DEBUG] [Thread-124595] [transport.py] [_log()] client lang: <none>
2025-11-03T23:32:04.285 [DEBUG] [Thread-124595] [transport.py] [_log()] server lang: <none>
2025-11-03T23:32:04.285 [DEBUG] [Thread-124595] [transport.py] [_log()] kex follows: False
2025-11-03T23:32:04.285 [DEBUG] [Thread-124595] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:32:04.285 [DEBUG] [Thread-124595] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:32:04.285 [DEBUG] [Thread-124595] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:32:04.285 [DEBUG] [Thread-124595] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:32:04.285 [DEBUG] [Thread-124595] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:32:04.285 [DEBUG] [Thread-124595] [transport.py] [_log()] Compression: none
2025-11-03T23:32:04.285 [DEBUG] [Thread-124595] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:32:04.304 [DEBUG] [Thread-124595] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:32:04.304 [DEBUG] [Thread-124595] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:32:04.305 [DEBUG] [Thread-124595] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:32:04.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:32:04.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:32:04.307 [DEBUG] [Thread-124595] [transport.py] [_log()] userauth is OK
2025-11-03T23:32:04.307 [DEBUG] [Thread-124595] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:32:04.307 [DEBUG] [Thread-124595] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:32:04.307 [DEBUG] [Thread-124595] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:32:04.307 [DEBUG] [Thread-124595] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:32:04.331 [INFO] [Thread-124595] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:32:04.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:32:04.985 [DEBUG] [Thread-124595] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:32:04.985 [DEBUG] [Thread-124595] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:32:04.985 [DEBUG] [Thread-124595] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:32:05.026 [DEBUG] [Thread-124595] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:32:05.026 [DEBUG] [Thread-124595] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:32:05.029 [DEBUG] [Thread-124595] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:32:05.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:32:05.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:32:05.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:32:05.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:32:05.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:32:05.047 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:32:05.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:32:05.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:32:05.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:32:05.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.896974 -999.00  +19.00  17.91     17   -6.20 1 1 1 1 1     0    0 24.43 -20.59 ZNESW 17.1 17.9 302.4 21.7 18.9 -25.0 18.9 -24.1 18.6 -23.8 18.9 -24.6
2025-11-03T23:32:05.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:32:05.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:32:05.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.896974
2025-11-03T23:32:05.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:32:05.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:32:05.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:32:05.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:32:05.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:32:05.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:31:43', tmtdew=29.68, humidity=12.3, cloud=0.0, wind=17.61, temperature=18.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:31:38.554', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01025000000000098, 0.02775000000000105, 0.1332500000000003, 0.08949999999999925, -0.10099999999999909, -0.015750000000000597, -0.16999999999999993, -0.09774999999999956, 0.03449999999999953, 0.03750000000000142, 0.1172500000000003, 0.05599999999999916, 0.12199999999999989, 0.034250000000000114, -0.918000000000001, -0.0810000000000013, 0.06874999999999964, 0.061500000000000554, 0.2029999999999994, 0.13124999999999964, 0.1529999999999987, 0.07124999999999915, -0.7297499999999992, 0.015750000000000597, 0.1039999999999992, 0.20350000000000001, 0.1957500000000003, 0.22049999999999947, 0.25900000000000034, 0.12100000000000222, -0.0779999999999994, 0.12950000000000017, 0.08724999999999916], zp_timestamp='2025-11-03T21:28:00')
2025-11-03T23:32:05.048 [DEBUG] [Thread-124595] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:32:05.122 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:32:05.133 [DEBUG] [Thread-124598] [transport.py] [_log()] starting thread (client mode): 0x1174cac0
2025-11-03T23:32:05.135 [DEBUG] [Thread-124598] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:32:05.149 [DEBUG] [Thread-124598] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:32:05.149 [INFO] [Thread-124598] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:32:05.158 [DEBUG] [Thread-124598] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:32:05.158 [DEBUG] [Thread-124598] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:32:05.158 [DEBUG] [Thread-124598] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:32:05.158 [DEBUG] [Thread-124598] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:32:05.158 [DEBUG] [Thread-124598] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:32:05.158 [DEBUG] [Thread-124598] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:32:05.158 [DEBUG] [Thread-124598] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:32:05.158 [DEBUG] [Thread-124598] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:32:05.158 [DEBUG] [Thread-124598] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:32:05.158 [DEBUG] [Thread-124598] [transport.py] [_log()] client lang: <none>
2025-11-03T23:32:05.158 [DEBUG] [Thread-124598] [transport.py] [_log()] server lang: <none>
2025-11-03T23:32:05.158 [DEBUG] [Thread-124598] [transport.py] [_log()] kex follows: False
2025-11-03T23:32:05.158 [DEBUG] [Thread-124598] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:32:05.158 [DEBUG] [Thread-124598] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:32:05.158 [DEBUG] [Thread-124598] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:32:05.158 [DEBUG] [Thread-124598] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:32:05.158 [DEBUG] [Thread-124598] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:32:05.158 [DEBUG] [Thread-124598] [transport.py] [_log()] Compression: none
2025-11-03T23:32:05.158 [DEBUG] [Thread-124598] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:32:05.222 [DEBUG] [Thread-124598] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:32:05.222 [DEBUG] [Thread-124598] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:32:05.222 [DEBUG] [Thread-124598] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:32:05.222 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:32:05.222 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:32:05.282 [DEBUG] [Thread-124598] [transport.py] [_log()] userauth is OK
2025-11-03T23:32:05.282 [DEBUG] [Thread-124598] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:32:05.282 [DEBUG] [Thread-124598] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:32:05.282 [DEBUG] [Thread-124598] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:32:05.282 [DEBUG] [Thread-124600 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:32:05.282 [DEBUG] [Thread-124598] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:32:05.299 [INFO] [Thread-124598] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:32:05.299 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:32:05.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:32:06.140 [DEBUG] [Thread-124598] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:32:06.141 [DEBUG] [Thread-124598] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:32:06.189 [DEBUG] [Thread-124598] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:32:06.190 [DEBUG] [Thread-124598] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:32:06.199 [DEBUG] [Thread-124598] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:32:06.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:32:06.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:32:06.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:32:06.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:32:06.241 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:32:06.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:32:06.251 [DEBUG] [Thread-124598] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:32:07.273 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:32:07.274 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:32:20.315 [DEBUG] [Thread-124601 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:32:34.945 [DEBUG] [Thread-124602 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:32:35.353 [DEBUG] [Thread-124603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:32:36.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:32:36.272 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:32:36.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:32:37.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 32, 16), 29.71, 12.28, 0.0, 17.61, 18.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:32:37.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:32:16
2025-11-03T23:32:37.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:32:37.362 [DEBUG] [Thread-124604] [transport.py] [_log()] starting thread (client mode): 0xedb0160
2025-11-03T23:32:37.363 [DEBUG] [Thread-124604] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:32:37.383 [DEBUG] [Thread-124604] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:32:37.383 [INFO] [Thread-124604] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:32:37.387 [DEBUG] [Thread-124604] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:32:37.387 [DEBUG] [Thread-124604] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:32:37.387 [DEBUG] [Thread-124604] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:32:37.387 [DEBUG] [Thread-124604] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:32:37.387 [DEBUG] [Thread-124604] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:32:37.387 [DEBUG] [Thread-124604] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:32:37.387 [DEBUG] [Thread-124604] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:32:37.388 [DEBUG] [Thread-124604] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:32:37.388 [DEBUG] [Thread-124604] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:32:37.388 [DEBUG] [Thread-124604] [transport.py] [_log()] client lang: <none>
2025-11-03T23:32:37.388 [DEBUG] [Thread-124604] [transport.py] [_log()] server lang: <none>
2025-11-03T23:32:37.388 [DEBUG] [Thread-124604] [transport.py] [_log()] kex follows: False
2025-11-03T23:32:37.388 [DEBUG] [Thread-124604] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:32:37.388 [DEBUG] [Thread-124604] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:32:37.388 [DEBUG] [Thread-124604] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:32:37.388 [DEBUG] [Thread-124604] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:32:37.389 [DEBUG] [Thread-124604] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:32:37.389 [DEBUG] [Thread-124604] [transport.py] [_log()] Compression: none
2025-11-03T23:32:37.389 [DEBUG] [Thread-124604] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:32:37.409 [DEBUG] [Thread-124604] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:32:37.410 [DEBUG] [Thread-124604] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:32:37.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:32:37.412 [DEBUG] [Thread-124604] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:32:37.412 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:32:37.414 [DEBUG] [Thread-124604] [transport.py] [_log()] userauth is OK
2025-11-03T23:32:37.414 [DEBUG] [Thread-124604] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:32:37.414 [DEBUG] [Thread-124604] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:32:37.414 [DEBUG] [Thread-124604] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:32:37.414 [DEBUG] [Thread-124604] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:32:37.437 [INFO] [Thread-124604] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:32:37.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:32:38.048 [DEBUG] [Thread-124604] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:32:38.048 [DEBUG] [Thread-124604] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:32:38.048 [DEBUG] [Thread-124604] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:32:38.081 [DEBUG] [Thread-124604] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:32:38.081 [DEBUG] [Thread-124604] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:32:38.083 [DEBUG] [Thread-124604] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:32:38.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:32:38.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:32:38.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:32:38.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:32:38.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:32:38.094 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:32:38.094 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:32:38.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:32:38.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:32:38.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.897321 -999.00  +19.00  15.66     17   -6.20 1 1 1 1 1     0    0 24.34 -19.33 ZNESW 16.8 15.7 311.8 19.4 19.0 -25.2 18.9 -24.0 18.7 -23.5 18.9 -24.8
2025-11-03T23:32:38.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:32:38.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:32:38.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.897321
2025-11-03T23:32:38.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:32:38.105 [DEBUG] [Thread-124604] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:32:38.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:32:38.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:32:38.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:32:38.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:32:38.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:32:16', tmtdew=29.71, humidity=12.28, cloud=0.0, wind=17.61, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:32:08.534', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01025000000000098, 0.02775000000000105, 0.1332500000000003, 0.08949999999999925, -0.10099999999999909, -0.015750000000000597, -0.16999999999999993, -0.09774999999999956, 0.03449999999999953, 0.03750000000000142, 0.1172500000000003, 0.05599999999999916, 0.12199999999999989, 0.034250000000000114, -0.918000000000001, -0.0810000000000013, 0.06874999999999964, 0.061500000000000554, 0.2029999999999994, 0.13124999999999964, 0.1529999999999987, 0.07124999999999915, -0.7297499999999992, 0.015750000000000597, 0.1039999999999992, 0.20350000000000001, 0.1957500000000003, 0.22049999999999947, 0.25900000000000034, 0.12100000000000222, -0.0779999999999994, 0.12950000000000017, 0.08724999999999916], zp_timestamp='2025-11-03T21:28:00')
2025-11-03T23:32:38.179 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:32:38.191 [DEBUG] [Thread-124607] [transport.py] [_log()] starting thread (client mode): 0xedb30d0
2025-11-03T23:32:38.191 [DEBUG] [Thread-124607] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:32:38.205 [DEBUG] [Thread-124607] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:32:38.205 [INFO] [Thread-124607] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:32:38.213 [DEBUG] [Thread-124607] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:32:38.213 [DEBUG] [Thread-124607] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:32:38.213 [DEBUG] [Thread-124607] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:32:38.213 [DEBUG] [Thread-124607] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:32:38.213 [DEBUG] [Thread-124607] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:32:38.213 [DEBUG] [Thread-124607] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:32:38.213 [DEBUG] [Thread-124607] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:32:38.213 [DEBUG] [Thread-124607] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:32:38.213 [DEBUG] [Thread-124607] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:32:38.213 [DEBUG] [Thread-124607] [transport.py] [_log()] client lang: <none>
2025-11-03T23:32:38.213 [DEBUG] [Thread-124607] [transport.py] [_log()] server lang: <none>
2025-11-03T23:32:38.213 [DEBUG] [Thread-124607] [transport.py] [_log()] kex follows: False
2025-11-03T23:32:38.213 [DEBUG] [Thread-124607] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:32:38.213 [DEBUG] [Thread-124607] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:32:38.213 [DEBUG] [Thread-124607] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:32:38.213 [DEBUG] [Thread-124607] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:32:38.213 [DEBUG] [Thread-124607] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:32:38.213 [DEBUG] [Thread-124607] [transport.py] [_log()] Compression: none
2025-11-03T23:32:38.213 [DEBUG] [Thread-124607] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:32:38.273 [DEBUG] [Thread-124607] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:32:38.273 [DEBUG] [Thread-124607] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:32:38.273 [DEBUG] [Thread-124607] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:32:38.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:32:38.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:32:38.330 [DEBUG] [Thread-124607] [transport.py] [_log()] userauth is OK
2025-11-03T23:32:38.330 [DEBUG] [Thread-124607] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:32:38.330 [DEBUG] [Thread-124607] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:32:38.330 [DEBUG] [Thread-124607] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:32:38.330 [DEBUG] [Thread-124607] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:32:38.345 [INFO] [Thread-124607] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:32:38.345 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:32:38.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:32:39.209 [DEBUG] [Thread-124607] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:32:39.210 [DEBUG] [Thread-124607] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:32:39.257 [DEBUG] [Thread-124607] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:32:39.258 [DEBUG] [Thread-124607] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:32:39.276 [DEBUG] [Thread-124607] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:32:39.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:32:39.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:32:39.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:32:39.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:32:39.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:32:39.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:32:39.319 [DEBUG] [Thread-124607] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:32:50.381 [DEBUG] [Thread-124609 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:33:05.452 [DEBUG] [Thread-124610 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:33:07.477 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:33:07.483 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:33:09.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:33:09.314 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:33:09.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:33:10.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 32, 48), 29.69, 12.3, 0.0, 18.0, 18.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:33:10.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:32:48
2025-11-03T23:33:10.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:33:11.233 [DEBUG] [Thread-124611] [transport.py] [_log()] starting thread (client mode): 0xed5f040
2025-11-03T23:33:11.236 [DEBUG] [Thread-124611] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:33:11.238 [DEBUG] [Thread-124611] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:33:11.240 [INFO] [Thread-124611] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:33:11.266 [DEBUG] [Thread-124611] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:33:11.267 [DEBUG] [Thread-124611] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:33:11.267 [DEBUG] [Thread-124611] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:33:11.267 [DEBUG] [Thread-124611] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:33:11.267 [DEBUG] [Thread-124611] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:33:11.268 [DEBUG] [Thread-124611] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:33:11.268 [DEBUG] [Thread-124611] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:33:11.268 [DEBUG] [Thread-124611] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:33:11.268 [DEBUG] [Thread-124611] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:33:11.268 [DEBUG] [Thread-124611] [transport.py] [_log()] client lang: <none>
2025-11-03T23:33:11.268 [DEBUG] [Thread-124611] [transport.py] [_log()] server lang: <none>
2025-11-03T23:33:11.268 [DEBUG] [Thread-124611] [transport.py] [_log()] kex follows: False
2025-11-03T23:33:11.268 [DEBUG] [Thread-124611] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:33:11.269 [DEBUG] [Thread-124611] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:33:11.269 [DEBUG] [Thread-124611] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:33:11.269 [DEBUG] [Thread-124611] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:33:11.271 [DEBUG] [Thread-124611] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:33:11.271 [DEBUG] [Thread-124611] [transport.py] [_log()] Compression: none
2025-11-03T23:33:11.273 [DEBUG] [Thread-124611] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:33:11.397 [DEBUG] [Thread-124611] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:33:11.416 [DEBUG] [Thread-124611] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:33:11.420 [DEBUG] [Thread-124611] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:33:11.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:33:11.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:33:11.430 [DEBUG] [Thread-124611] [transport.py] [_log()] userauth is OK
2025-11-03T23:33:11.430 [DEBUG] [Thread-124611] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:33:11.430 [DEBUG] [Thread-124611] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:33:11.430 [DEBUG] [Thread-124611] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:33:11.430 [DEBUG] [Thread-124611] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:33:11.467 [INFO] [Thread-124611] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:33:11.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:33:12.107 [DEBUG] [Thread-124611] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:33:12.107 [DEBUG] [Thread-124611] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:33:12.112 [DEBUG] [Thread-124611] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:33:12.149 [DEBUG] [Thread-124611] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:33:12.149 [DEBUG] [Thread-124611] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:33:12.154 [DEBUG] [Thread-124611] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:33:12.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:33:12.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:33:12.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:33:12.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:33:12.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:33:12.195 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:33:12.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:33:12.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:33:12.199 [DEBUG] [Thread-124611] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:33:12.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:33:12.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.898016 -999.00  +19.00  15.05     17   -6.20 1 1 1 1 1     0    0 24.78 -18.04 ZNESW 16.2 15.1 303.8 18.4 19.0 -25.2 18.9 -24.1 18.7 -23.8 18.9 -24.6
2025-11-03T23:33:12.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:33:12.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:33:12.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.898016
2025-11-03T23:33:12.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:33:12.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:33:12.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:33:12.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:33:12.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:33:12.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:32:48', tmtdew=29.69, humidity=12.3, cloud=0.0, wind=18.0, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:33:08.582', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01025000000000098, 0.02775000000000105, 0.1332500000000003, 0.08949999999999925, -0.10099999999999909, -0.015750000000000597, -0.16999999999999993, -0.09774999999999956, 0.03449999999999953, 0.03750000000000142, 0.1172500000000003, 0.05599999999999916, 0.12199999999999989, 0.034250000000000114, -0.918000000000001, -0.0810000000000013, 0.06874999999999964, 0.061500000000000554, 0.2029999999999994, 0.13124999999999964, 0.1529999999999987, 0.07124999999999915, -0.7297499999999992, 0.015750000000000597, 0.1039999999999992, 0.20350000000000001, 0.1957500000000003, 0.22049999999999947, 0.25900000000000034, 0.12100000000000222, -0.0779999999999994, 0.12950000000000017, 0.08724999999999916], zp_timestamp='2025-11-03T21:28:00')
2025-11-03T23:33:12.416 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:33:12.428 [DEBUG] [Thread-124614] [transport.py] [_log()] starting thread (client mode): 0xedc6cb0
2025-11-03T23:33:12.428 [DEBUG] [Thread-124614] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:33:12.443 [DEBUG] [Thread-124614] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:33:12.443 [INFO] [Thread-124614] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:33:12.456 [DEBUG] [Thread-124614] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:33:12.456 [DEBUG] [Thread-124614] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:33:12.456 [DEBUG] [Thread-124614] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:33:12.456 [DEBUG] [Thread-124614] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:33:12.456 [DEBUG] [Thread-124614] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:33:12.456 [DEBUG] [Thread-124614] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:33:12.456 [DEBUG] [Thread-124614] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:33:12.456 [DEBUG] [Thread-124614] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:33:12.456 [DEBUG] [Thread-124614] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:33:12.456 [DEBUG] [Thread-124614] [transport.py] [_log()] client lang: <none>
2025-11-03T23:33:12.456 [DEBUG] [Thread-124614] [transport.py] [_log()] server lang: <none>
2025-11-03T23:33:12.456 [DEBUG] [Thread-124614] [transport.py] [_log()] kex follows: False
2025-11-03T23:33:12.456 [DEBUG] [Thread-124614] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:33:12.456 [DEBUG] [Thread-124614] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:33:12.456 [DEBUG] [Thread-124614] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:33:12.456 [DEBUG] [Thread-124614] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:33:12.456 [DEBUG] [Thread-124614] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:33:12.456 [DEBUG] [Thread-124614] [transport.py] [_log()] Compression: none
2025-11-03T23:33:12.456 [DEBUG] [Thread-124614] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:33:12.515 [DEBUG] [Thread-124614] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:33:12.515 [DEBUG] [Thread-124614] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:33:12.515 [DEBUG] [Thread-124614] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:33:12.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:33:12.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:33:12.579 [DEBUG] [Thread-124614] [transport.py] [_log()] userauth is OK
2025-11-03T23:33:12.579 [DEBUG] [Thread-124614] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:33:12.579 [DEBUG] [Thread-124614] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:33:12.579 [DEBUG] [Thread-124614] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:33:12.579 [DEBUG] [Thread-124614] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:33:12.598 [INFO] [Thread-124614] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:33:12.598 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:33:12.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:33:13.448 [DEBUG] [Thread-124614] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:33:13.448 [DEBUG] [Thread-124614] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:33:13.495 [DEBUG] [Thread-124614] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:33:13.496 [DEBUG] [Thread-124614] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:33:13.506 [DEBUG] [Thread-124614] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:33:13.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:33:13.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:33:13.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:33:13.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:33:13.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:33:13.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:33:13.553 [DEBUG] [Thread-124614] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:33:17.291 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:33:20.485 [DEBUG] [Thread-124616 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:33:25.399 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:33:29.512 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:33:35.236 [DEBUG] [Thread-124617 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:33:35.606 [DEBUG] [Thread-124618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:33:43.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:33:43.553 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:33:43.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:33:44.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 33, 21), 29.72, 12.26, 0.0, 17.31, 18.78, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:33:44.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:33:21
2025-11-03T23:33:44.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:33:44.489 [DEBUG] [Thread-124619] [transport.py] [_log()] starting thread (client mode): 0xed07730
2025-11-03T23:33:44.489 [DEBUG] [Thread-124619] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:33:44.503 [DEBUG] [Thread-124619] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:33:44.503 [INFO] [Thread-124619] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:33:44.506 [DEBUG] [Thread-124619] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:33:44.506 [DEBUG] [Thread-124619] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:33:44.506 [DEBUG] [Thread-124619] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:33:44.506 [DEBUG] [Thread-124619] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:33:44.506 [DEBUG] [Thread-124619] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:33:44.506 [DEBUG] [Thread-124619] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:33:44.506 [DEBUG] [Thread-124619] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:33:44.506 [DEBUG] [Thread-124619] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:33:44.506 [DEBUG] [Thread-124619] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:33:44.506 [DEBUG] [Thread-124619] [transport.py] [_log()] client lang: <none>
2025-11-03T23:33:44.506 [DEBUG] [Thread-124619] [transport.py] [_log()] server lang: <none>
2025-11-03T23:33:44.507 [DEBUG] [Thread-124619] [transport.py] [_log()] kex follows: False
2025-11-03T23:33:44.507 [DEBUG] [Thread-124619] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:33:44.507 [DEBUG] [Thread-124619] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:33:44.507 [DEBUG] [Thread-124619] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:33:44.507 [DEBUG] [Thread-124619] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:33:44.507 [DEBUG] [Thread-124619] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:33:44.507 [DEBUG] [Thread-124619] [transport.py] [_log()] Compression: none
2025-11-03T23:33:44.507 [DEBUG] [Thread-124619] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:33:44.522 [DEBUG] [Thread-124619] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:33:44.522 [DEBUG] [Thread-124619] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:33:44.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:33:44.523 [DEBUG] [Thread-124619] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:33:44.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:33:44.523 [DEBUG] [Thread-124619] [transport.py] [_log()] userauth is OK
2025-11-03T23:33:44.523 [DEBUG] [Thread-124619] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:33:44.523 [DEBUG] [Thread-124619] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:33:44.523 [DEBUG] [Thread-124619] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:33:44.523 [DEBUG] [Thread-124619] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:33:44.533 [INFO] [Thread-124619] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:33:44.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:33:45.121 [DEBUG] [Thread-124619] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:33:45.121 [DEBUG] [Thread-124619] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:33:45.121 [DEBUG] [Thread-124619] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:33:45.162 [DEBUG] [Thread-124619] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:33:45.162 [DEBUG] [Thread-124619] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:33:45.164 [DEBUG] [Thread-124619] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:33:45.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:33:45.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:33:45.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:33:45.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:33:45.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:33:45.186 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:33:45.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:33:45.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:33:45.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:33:45.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.898363 -999.00  +19.00  15.46     17   -6.20 1 1 1 1 1     0    0 25.10 -17.51 ZNESW 13.9 15.5 303.4 20.2 19.0 -25.1 18.9 -24.1 18.7 -23.8 18.9 -24.8
2025-11-03T23:33:45.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:33:45.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:33:45.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.898363
2025-11-03T23:33:45.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:33:45.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:33:45.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:33:45.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:33:45.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:33:45.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:33:21', tmtdew=29.72, humidity=12.26, cloud=0.0, wind=17.31, temperature=18.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:33:38.563', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019750000000000156, 0.04875000000000007, 0.088750000000001, 0.07900000000000063, 0.034000000000000696, -0.06374999999999886, -0.21899999999999942, -0.062249999999998806, 0.08899999999999864, 0.06650000000000134, 0.08024999999999949, 0.038000000000000256, 0.06400000000000006, 0.07724999999999937, -0.907, -0.24200000000000088, 0.0702499999999997, 0.04049999999999976, 0.19699999999999918, 0.07674999999999876, 0.12249999999999872, 0.11724999999999852, -0.6337499999999991, 0.056250000000000355, 0.10549999999999926, 0.20250000000000057, 0.1847499999999993, 0.2129999999999992, 0.2730000000000006, 0.16100000000000136, -0.677999999999999, 0.057500000000000995, 0.031749999999998835], zp_timestamp='2025-11-03T21:31:00')
2025-11-03T23:33:45.187 [DEBUG] [Thread-124619] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:33:45.261 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:33:45.273 [DEBUG] [Thread-124622] [transport.py] [_log()] starting thread (client mode): 0x11761570
2025-11-03T23:33:45.273 [DEBUG] [Thread-124622] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:33:45.288 [DEBUG] [Thread-124622] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:33:45.288 [INFO] [Thread-124622] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:33:45.296 [DEBUG] [Thread-124622] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:33:45.296 [DEBUG] [Thread-124622] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:33:45.296 [DEBUG] [Thread-124622] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:33:45.296 [DEBUG] [Thread-124622] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:33:45.296 [DEBUG] [Thread-124622] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:33:45.296 [DEBUG] [Thread-124622] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:33:45.296 [DEBUG] [Thread-124622] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:33:45.296 [DEBUG] [Thread-124622] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:33:45.296 [DEBUG] [Thread-124622] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:33:45.296 [DEBUG] [Thread-124622] [transport.py] [_log()] client lang: <none>
2025-11-03T23:33:45.296 [DEBUG] [Thread-124622] [transport.py] [_log()] server lang: <none>
2025-11-03T23:33:45.296 [DEBUG] [Thread-124622] [transport.py] [_log()] kex follows: False
2025-11-03T23:33:45.296 [DEBUG] [Thread-124622] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:33:45.296 [DEBUG] [Thread-124622] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:33:45.296 [DEBUG] [Thread-124622] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:33:45.296 [DEBUG] [Thread-124622] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:33:45.296 [DEBUG] [Thread-124622] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:33:45.296 [DEBUG] [Thread-124622] [transport.py] [_log()] Compression: none
2025-11-03T23:33:45.297 [DEBUG] [Thread-124622] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:33:45.352 [DEBUG] [Thread-124622] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:33:45.352 [DEBUG] [Thread-124622] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:33:45.352 [DEBUG] [Thread-124622] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:33:45.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:33:45.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:33:45.410 [DEBUG] [Thread-124622] [transport.py] [_log()] userauth is OK
2025-11-03T23:33:45.410 [DEBUG] [Thread-124622] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:33:45.410 [DEBUG] [Thread-124622] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:33:45.410 [DEBUG] [Thread-124622] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:33:45.410 [DEBUG] [Thread-124622] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:33:45.427 [INFO] [Thread-124622] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:33:45.428 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:33:45.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:33:46.305 [DEBUG] [Thread-124622] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:33:46.305 [DEBUG] [Thread-124622] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:33:46.353 [DEBUG] [Thread-124622] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:33:46.353 [DEBUG] [Thread-124622] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:33:46.361 [DEBUG] [Thread-124622] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:33:46.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:33:46.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:33:46.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:33:46.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:33:46.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:33:46.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:33:46.395 [DEBUG] [Thread-124622] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:33:50.651 [DEBUG] [Thread-124624 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:34:05.725 [DEBUG] [Thread-124625 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:34:07.695 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:34:07.696 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:34:16.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:34:16.405 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:34:16.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:34:17.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 33, 53), 29.74, 12.25, 0.0, 16.14, 18.78, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:34:17.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:33:53
2025-11-03T23:34:17.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:34:17.511 [DEBUG] [Thread-124626] [transport.py] [_log()] starting thread (client mode): 0xedc4fa0
2025-11-03T23:34:17.511 [DEBUG] [Thread-124626] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:34:17.531 [DEBUG] [Thread-124626] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:34:17.531 [INFO] [Thread-124626] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:34:17.534 [DEBUG] [Thread-124626] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:34:17.534 [DEBUG] [Thread-124626] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:34:17.534 [DEBUG] [Thread-124626] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:34:17.534 [DEBUG] [Thread-124626] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:34:17.534 [DEBUG] [Thread-124626] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:34:17.534 [DEBUG] [Thread-124626] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:34:17.534 [DEBUG] [Thread-124626] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:34:17.534 [DEBUG] [Thread-124626] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:34:17.534 [DEBUG] [Thread-124626] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:34:17.534 [DEBUG] [Thread-124626] [transport.py] [_log()] client lang: <none>
2025-11-03T23:34:17.534 [DEBUG] [Thread-124626] [transport.py] [_log()] server lang: <none>
2025-11-03T23:34:17.534 [DEBUG] [Thread-124626] [transport.py] [_log()] kex follows: False
2025-11-03T23:34:17.534 [DEBUG] [Thread-124626] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:34:17.534 [DEBUG] [Thread-124626] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:34:17.535 [DEBUG] [Thread-124626] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:34:17.535 [DEBUG] [Thread-124626] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:34:17.535 [DEBUG] [Thread-124626] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:34:17.535 [DEBUG] [Thread-124626] [transport.py] [_log()] Compression: none
2025-11-03T23:34:17.535 [DEBUG] [Thread-124626] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:34:17.560 [DEBUG] [Thread-124626] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:34:17.560 [DEBUG] [Thread-124626] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:34:17.561 [DEBUG] [Thread-124626] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:34:17.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:34:17.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:34:17.563 [DEBUG] [Thread-124626] [transport.py] [_log()] userauth is OK
2025-11-03T23:34:17.563 [DEBUG] [Thread-124626] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:34:17.563 [DEBUG] [Thread-124626] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:34:17.563 [DEBUG] [Thread-124626] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:34:17.563 [DEBUG] [Thread-124626] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:34:17.588 [INFO] [Thread-124626] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:34:17.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:34:18.254 [DEBUG] [Thread-124626] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:34:18.254 [DEBUG] [Thread-124626] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:34:18.255 [DEBUG] [Thread-124626] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:34:18.295 [DEBUG] [Thread-124626] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:34:18.295 [DEBUG] [Thread-124626] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:34:18.300 [DEBUG] [Thread-124626] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:34:18.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:34:18.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:34:18.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:34:18.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:34:18.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:34:18.338 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:34:18.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:34:18.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:34:18.347 [DEBUG] [Thread-124626] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:34:18.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:34:18.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.898363 -999.00  +19.00  15.46     17   -6.20 1 1 1 1 1     0    0 25.10 -17.51 ZNESW 13.9 15.5 303.4 20.2 19.0 -25.1 18.9 -24.1 18.7 -23.8 18.9 -24.8
2025-11-03T23:34:18.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:34:18.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:34:18.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.898363
2025-11-03T23:34:18.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:34:18.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:34:18.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:34:18.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:34:18.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:34:18.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:33:53', tmtdew=29.74, humidity=12.25, cloud=0.0, wind=16.14, temperature=18.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:33:38.563', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019750000000000156, 0.04875000000000007, 0.088750000000001, 0.07900000000000063, 0.034000000000000696, -0.06374999999999886, -0.21899999999999942, -0.062249999999998806, 0.08899999999999864, 0.06650000000000134, 0.08024999999999949, 0.038000000000000256, 0.06400000000000006, 0.07724999999999937, -0.907, -0.24200000000000088, 0.0702499999999997, 0.04049999999999976, 0.19699999999999918, 0.07674999999999876, 0.12249999999999872, 0.11724999999999852, -0.6337499999999991, 0.056250000000000355, 0.10549999999999926, 0.20250000000000057, 0.1847499999999993, 0.2129999999999992, 0.2730000000000006, 0.16100000000000136, -0.677999999999999, 0.057500000000000995, 0.031749999999998835], zp_timestamp='2025-11-03T21:31:00')
2025-11-03T23:34:18.523 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:34:18.536 [DEBUG] [Thread-124629] [transport.py] [_log()] starting thread (client mode): 0xed42860
2025-11-03T23:34:18.536 [DEBUG] [Thread-124629] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:34:18.551 [DEBUG] [Thread-124629] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:34:18.551 [INFO] [Thread-124629] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:34:18.559 [DEBUG] [Thread-124629] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:34:18.559 [DEBUG] [Thread-124629] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:34:18.559 [DEBUG] [Thread-124629] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:34:18.559 [DEBUG] [Thread-124629] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:34:18.559 [DEBUG] [Thread-124629] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:34:18.559 [DEBUG] [Thread-124629] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:34:18.559 [DEBUG] [Thread-124629] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:34:18.560 [DEBUG] [Thread-124629] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:34:18.560 [DEBUG] [Thread-124629] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:34:18.560 [DEBUG] [Thread-124629] [transport.py] [_log()] client lang: <none>
2025-11-03T23:34:18.560 [DEBUG] [Thread-124629] [transport.py] [_log()] server lang: <none>
2025-11-03T23:34:18.560 [DEBUG] [Thread-124629] [transport.py] [_log()] kex follows: False
2025-11-03T23:34:18.560 [DEBUG] [Thread-124629] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:34:18.560 [DEBUG] [Thread-124629] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:34:18.560 [DEBUG] [Thread-124629] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:34:18.560 [DEBUG] [Thread-124629] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:34:18.560 [DEBUG] [Thread-124629] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:34:18.560 [DEBUG] [Thread-124629] [transport.py] [_log()] Compression: none
2025-11-03T23:34:18.560 [DEBUG] [Thread-124629] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:34:18.616 [DEBUG] [Thread-124629] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:34:18.616 [DEBUG] [Thread-124629] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:34:18.617 [DEBUG] [Thread-124629] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:34:18.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:34:18.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:34:18.673 [DEBUG] [Thread-124629] [transport.py] [_log()] userauth is OK
2025-11-03T23:34:18.673 [DEBUG] [Thread-124629] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:34:18.673 [DEBUG] [Thread-124629] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:34:18.673 [DEBUG] [Thread-124629] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:34:18.673 [DEBUG] [Thread-124629] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:34:18.696 [INFO] [Thread-124629] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:34:18.696 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:34:18.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:34:19.559 [DEBUG] [Thread-124629] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:34:19.560 [DEBUG] [Thread-124629] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:34:19.606 [DEBUG] [Thread-124629] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:34:19.606 [DEBUG] [Thread-124629] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:34:19.615 [DEBUG] [Thread-124629] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:34:19.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:34:19.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:34:19.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:34:19.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:34:19.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:34:19.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:34:19.665 [DEBUG] [Thread-124629] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:34:20.765 [DEBUG] [Thread-124631 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:34:35.607 [DEBUG] [Thread-124632 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:34:36.027 [DEBUG] [Thread-124633 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:34:49.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:34:49.689 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:34:49.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:34:50.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 34, 26), 29.74, 12.25, 0.0, 15.84, 18.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:34:50.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:34:26
2025-11-03T23:34:50.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:34:50.790 [DEBUG] [Thread-124634] [transport.py] [_log()] starting thread (client mode): 0xeda1f30
2025-11-03T23:34:50.790 [DEBUG] [Thread-124634] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:34:50.808 [DEBUG] [Thread-124634] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:34:50.808 [INFO] [Thread-124634] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:34:50.809 [DEBUG] [Thread-124634] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:34:50.809 [DEBUG] [Thread-124634] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:34:50.809 [DEBUG] [Thread-124634] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:34:50.809 [DEBUG] [Thread-124634] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:34:50.809 [DEBUG] [Thread-124634] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:34:50.809 [DEBUG] [Thread-124634] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:34:50.809 [DEBUG] [Thread-124634] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:34:50.809 [DEBUG] [Thread-124634] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:34:50.809 [DEBUG] [Thread-124634] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:34:50.809 [DEBUG] [Thread-124634] [transport.py] [_log()] client lang: <none>
2025-11-03T23:34:50.809 [DEBUG] [Thread-124634] [transport.py] [_log()] server lang: <none>
2025-11-03T23:34:50.809 [DEBUG] [Thread-124634] [transport.py] [_log()] kex follows: False
2025-11-03T23:34:50.809 [DEBUG] [Thread-124634] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:34:50.809 [DEBUG] [Thread-124634] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:34:50.809 [DEBUG] [Thread-124634] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:34:50.809 [DEBUG] [Thread-124634] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:34:50.809 [DEBUG] [Thread-124634] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:34:50.809 [DEBUG] [Thread-124634] [transport.py] [_log()] Compression: none
2025-11-03T23:34:50.809 [DEBUG] [Thread-124634] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:34:50.823 [DEBUG] [Thread-124634] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:34:50.823 [DEBUG] [Thread-124634] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:34:50.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:34:50.824 [DEBUG] [Thread-124634] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:34:50.825 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:34:50.826 [DEBUG] [Thread-124634] [transport.py] [_log()] userauth is OK
2025-11-03T23:34:50.827 [DEBUG] [Thread-124634] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:34:50.827 [DEBUG] [Thread-124634] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:34:50.827 [DEBUG] [Thread-124634] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:34:50.827 [DEBUG] [Thread-124634] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:34:50.845 [INFO] [Thread-124634] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:34:50.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:34:51.069 [DEBUG] [Thread-124636 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:34:51.480 [DEBUG] [Thread-124634] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:34:51.480 [DEBUG] [Thread-124634] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:34:51.480 [DEBUG] [Thread-124634] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:34:51.520 [DEBUG] [Thread-124634] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:34:51.520 [DEBUG] [Thread-124634] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:34:51.522 [DEBUG] [Thread-124634] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:34:51.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:34:51.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:34:51.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:34:51.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:34:51.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:34:51.549 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:34:51.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:34:51.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:34:51.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:34:51.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.898711 -999.00  +19.00  16.58     17   -6.20 1 1 1 1 1     0    0 24.45 -17.09 ZNESW 16.9 16.6 300.8 19.3 18.9 -25.1 18.9 -24.0 18.7 -23.7 18.9 -24.7
2025-11-03T23:34:51.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:34:51.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:34:51.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.898711
2025-11-03T23:34:51.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:34:51.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:34:51.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:34:51.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:34:51.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:34:51.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:34:26', tmtdew=29.74, humidity=12.25, cloud=0.0, wind=15.84, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:34:08.630', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019750000000000156, 0.04875000000000007, 0.088750000000001, 0.07900000000000063, 0.034000000000000696, -0.06374999999999886, -0.21899999999999942, -0.062249999999998806, 0.08899999999999864, 0.06650000000000134, 0.08024999999999949, 0.038000000000000256, 0.06400000000000006, 0.07724999999999937, -0.907, -0.24200000000000088, 0.0702499999999997, 0.04049999999999976, 0.19699999999999918, 0.07674999999999876, 0.12249999999999872, 0.11724999999999852, -0.6337499999999991, 0.056250000000000355, 0.10549999999999926, 0.20250000000000057, 0.1847499999999993, 0.2129999999999992, 0.2730000000000006, 0.16100000000000136, -0.677999999999999, 0.057500000000000995, 0.031749999999998835], zp_timestamp='2025-11-03T21:31:00')
2025-11-03T23:34:51.550 [DEBUG] [Thread-124634] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:34:51.626 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:34:51.638 [DEBUG] [Thread-124638] [transport.py] [_log()] starting thread (client mode): 0xedc7d60
2025-11-03T23:34:51.638 [DEBUG] [Thread-124638] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:34:51.654 [DEBUG] [Thread-124638] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:34:51.654 [INFO] [Thread-124638] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:34:51.662 [DEBUG] [Thread-124638] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:34:51.662 [DEBUG] [Thread-124638] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:34:51.662 [DEBUG] [Thread-124638] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:34:51.662 [DEBUG] [Thread-124638] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:34:51.662 [DEBUG] [Thread-124638] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:34:51.662 [DEBUG] [Thread-124638] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:34:51.662 [DEBUG] [Thread-124638] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:34:51.662 [DEBUG] [Thread-124638] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:34:51.662 [DEBUG] [Thread-124638] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:34:51.662 [DEBUG] [Thread-124638] [transport.py] [_log()] client lang: <none>
2025-11-03T23:34:51.662 [DEBUG] [Thread-124638] [transport.py] [_log()] server lang: <none>
2025-11-03T23:34:51.662 [DEBUG] [Thread-124638] [transport.py] [_log()] kex follows: False
2025-11-03T23:34:51.662 [DEBUG] [Thread-124638] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:34:51.662 [DEBUG] [Thread-124638] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:34:51.662 [DEBUG] [Thread-124638] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:34:51.662 [DEBUG] [Thread-124638] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:34:51.662 [DEBUG] [Thread-124638] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:34:51.662 [DEBUG] [Thread-124638] [transport.py] [_log()] Compression: none
2025-11-03T23:34:51.662 [DEBUG] [Thread-124638] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:34:51.727 [DEBUG] [Thread-124638] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:34:51.727 [DEBUG] [Thread-124638] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:34:51.727 [DEBUG] [Thread-124638] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:34:51.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:34:51.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:34:51.788 [DEBUG] [Thread-124638] [transport.py] [_log()] userauth is OK
2025-11-03T23:34:51.788 [DEBUG] [Thread-124638] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:34:51.788 [DEBUG] [Thread-124638] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:34:51.788 [DEBUG] [Thread-124638] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:34:51.788 [DEBUG] [Thread-124638] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:34:51.808 [INFO] [Thread-124638] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:34:51.809 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:34:51.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:34:52.658 [DEBUG] [Thread-124638] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:34:52.659 [DEBUG] [Thread-124638] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:34:52.707 [DEBUG] [Thread-124638] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:34:52.707 [DEBUG] [Thread-124638] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:34:52.717 [DEBUG] [Thread-124638] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:34:52.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:34:52.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:34:52.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:34:52.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:34:52.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:34:52.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:34:52.756 [DEBUG] [Thread-124638] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:35:06.096 [DEBUG] [Thread-124640 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:35:07.899 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:35:07.900 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:35:21.146 [DEBUG] [Thread-124641 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:35:22.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:35:22.778 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:35:22.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:35:23.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 34, 58), 29.76, 12.23, 0.0, 17.7, 18.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:35:23.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:34:58
2025-11-03T23:35:23.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:35:23.870 [DEBUG] [Thread-124642] [transport.py] [_log()] starting thread (client mode): 0x117ea350
2025-11-03T23:35:23.870 [DEBUG] [Thread-124642] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:35:23.880 [DEBUG] [Thread-124642] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:35:23.881 [INFO] [Thread-124642] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:35:23.882 [DEBUG] [Thread-124642] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:35:23.882 [DEBUG] [Thread-124642] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:35:23.882 [DEBUG] [Thread-124642] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:35:23.882 [DEBUG] [Thread-124642] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:35:23.882 [DEBUG] [Thread-124642] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:35:23.883 [DEBUG] [Thread-124642] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:35:23.883 [DEBUG] [Thread-124642] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:35:23.883 [DEBUG] [Thread-124642] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:35:23.883 [DEBUG] [Thread-124642] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:35:23.883 [DEBUG] [Thread-124642] [transport.py] [_log()] client lang: <none>
2025-11-03T23:35:23.883 [DEBUG] [Thread-124642] [transport.py] [_log()] server lang: <none>
2025-11-03T23:35:23.883 [DEBUG] [Thread-124642] [transport.py] [_log()] kex follows: False
2025-11-03T23:35:23.883 [DEBUG] [Thread-124642] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:35:23.883 [DEBUG] [Thread-124642] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:35:23.883 [DEBUG] [Thread-124642] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:35:23.883 [DEBUG] [Thread-124642] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:35:23.883 [DEBUG] [Thread-124642] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:35:23.883 [DEBUG] [Thread-124642] [transport.py] [_log()] Compression: none
2025-11-03T23:35:23.883 [DEBUG] [Thread-124642] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:35:23.896 [DEBUG] [Thread-124642] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:35:23.897 [DEBUG] [Thread-124642] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:35:23.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:35:23.899 [DEBUG] [Thread-124642] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:35:23.900 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:35:23.901 [DEBUG] [Thread-124642] [transport.py] [_log()] userauth is OK
2025-11-03T23:35:23.902 [DEBUG] [Thread-124642] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:35:23.902 [DEBUG] [Thread-124642] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:35:23.902 [DEBUG] [Thread-124642] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:35:23.902 [DEBUG] [Thread-124642] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:35:23.927 [INFO] [Thread-124642] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:35:23.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:35:25.719 [DEBUG] [Thread-124642] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:35:25.719 [DEBUG] [Thread-124642] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:35:25.720 [DEBUG] [Thread-124642] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:35:25.760 [DEBUG] [Thread-124642] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:35:25.760 [DEBUG] [Thread-124642] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:35:25.764 [DEBUG] [Thread-124642] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:35:25.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:35:25.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:35:25.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:35:25.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:35:25.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:35:25.798 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:35:25.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:35:25.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:35:25.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:35:25.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.899058 -999.00  +19.00  15.55     17   -6.20 1 1 1 1 1     0    0 24.48 -16.84 ZNESW 18.0 15.6 306.8 19.4 19.0 -25.2 18.9 -24.1 18.7 -23.7 18.9 -24.7
2025-11-03T23:35:25.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:35:25.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:35:25.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.899058
2025-11-03T23:35:25.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:35:25.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:35:25.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:35:25.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:35:25.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:35:25.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:34:58', tmtdew=29.76, humidity=12.23, cloud=0.0, wind=17.7, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:34:38.611', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019750000000000156, 0.04875000000000007, 0.088750000000001, 0.07900000000000063, 0.034000000000000696, -0.06374999999999886, -0.21899999999999942, -0.062249999999998806, 0.08899999999999864, 0.06650000000000134, 0.08024999999999949, 0.038000000000000256, 0.06400000000000006, 0.07724999999999937, -0.907, -0.24200000000000088, 0.0702499999999997, 0.04049999999999976, 0.19699999999999918, 0.07674999999999876, 0.12249999999999872, 0.11724999999999852, -0.6337499999999991, 0.056250000000000355, 0.10549999999999926, 0.20250000000000057, 0.1847499999999993, 0.2129999999999992, 0.2730000000000006, 0.16100000000000136, -0.677999999999999, 0.057500000000000995, 0.031749999999998835], zp_timestamp='2025-11-03T21:31:00')
2025-11-03T23:35:25.802 [DEBUG] [Thread-124642] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:35:25.893 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:35:25.905 [DEBUG] [Thread-124645] [transport.py] [_log()] starting thread (client mode): 0xed35960
2025-11-03T23:35:25.905 [DEBUG] [Thread-124645] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:35:25.920 [DEBUG] [Thread-124645] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:35:25.920 [INFO] [Thread-124645] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:35:25.928 [DEBUG] [Thread-124645] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:35:25.929 [DEBUG] [Thread-124645] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:35:25.929 [DEBUG] [Thread-124645] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:35:25.929 [DEBUG] [Thread-124645] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:35:25.929 [DEBUG] [Thread-124645] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:35:25.929 [DEBUG] [Thread-124645] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:35:25.929 [DEBUG] [Thread-124645] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:35:25.929 [DEBUG] [Thread-124645] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:35:25.930 [DEBUG] [Thread-124645] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:35:25.930 [DEBUG] [Thread-124645] [transport.py] [_log()] client lang: <none>
2025-11-03T23:35:25.930 [DEBUG] [Thread-124645] [transport.py] [_log()] server lang: <none>
2025-11-03T23:35:25.930 [DEBUG] [Thread-124645] [transport.py] [_log()] kex follows: False
2025-11-03T23:35:25.930 [DEBUG] [Thread-124645] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:35:25.930 [DEBUG] [Thread-124645] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:35:25.930 [DEBUG] [Thread-124645] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:35:25.939 [DEBUG] [Thread-124645] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:35:25.940 [DEBUG] [Thread-124645] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:35:25.940 [DEBUG] [Thread-124645] [transport.py] [_log()] Compression: none
2025-11-03T23:35:25.940 [DEBUG] [Thread-124645] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:35:25.991 [DEBUG] [Thread-124645] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:35:25.992 [DEBUG] [Thread-124645] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:35:25.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:35:25.993 [DEBUG] [Thread-124645] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:35:25.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:35:26.049 [DEBUG] [Thread-124645] [transport.py] [_log()] userauth is OK
2025-11-03T23:35:26.049 [DEBUG] [Thread-124645] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:35:26.050 [DEBUG] [Thread-124645] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:35:26.050 [DEBUG] [Thread-124645] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:35:26.050 [DEBUG] [Thread-124645] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:35:26.074 [INFO] [Thread-124645] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:35:26.074 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:35:26.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:35:26.917 [DEBUG] [Thread-124645] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:35:26.917 [DEBUG] [Thread-124645] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:35:26.966 [DEBUG] [Thread-124645] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:35:26.966 [DEBUG] [Thread-124645] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:35:26.977 [DEBUG] [Thread-124645] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:35:26.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:35:26.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:35:26.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:35:27.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:35:27.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:35:27.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:35:27.014 [DEBUG] [Thread-124645] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:35:36.173 [DEBUG] [Thread-124647 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:35:37.182 [DEBUG] [Thread-124648 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:35:51.222 [DEBUG] [Thread-124649 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:35:57.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:35:57.036 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:35:57.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:35:57.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 35, 31), 29.73, 12.26, 0.0, 17.63, 18.83, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:35:57.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:35:31
2025-11-03T23:35:57.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:35:58.060 [DEBUG] [Thread-124650] [transport.py] [_log()] starting thread (client mode): 0x11761570
2025-11-03T23:35:58.060 [DEBUG] [Thread-124650] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:35:58.083 [DEBUG] [Thread-124650] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:35:58.084 [INFO] [Thread-124650] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:35:58.087 [DEBUG] [Thread-124650] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:35:58.087 [DEBUG] [Thread-124650] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:35:58.087 [DEBUG] [Thread-124650] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:35:58.087 [DEBUG] [Thread-124650] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:35:58.087 [DEBUG] [Thread-124650] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:35:58.087 [DEBUG] [Thread-124650] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:35:58.087 [DEBUG] [Thread-124650] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:35:58.087 [DEBUG] [Thread-124650] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:35:58.087 [DEBUG] [Thread-124650] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:35:58.087 [DEBUG] [Thread-124650] [transport.py] [_log()] client lang: <none>
2025-11-03T23:35:58.087 [DEBUG] [Thread-124650] [transport.py] [_log()] server lang: <none>
2025-11-03T23:35:58.088 [DEBUG] [Thread-124650] [transport.py] [_log()] kex follows: False
2025-11-03T23:35:58.088 [DEBUG] [Thread-124650] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:35:58.088 [DEBUG] [Thread-124650] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:35:58.088 [DEBUG] [Thread-124650] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:35:58.088 [DEBUG] [Thread-124650] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:35:58.088 [DEBUG] [Thread-124650] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:35:58.088 [DEBUG] [Thread-124650] [transport.py] [_log()] Compression: none
2025-11-03T23:35:58.088 [DEBUG] [Thread-124650] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:35:58.110 [DEBUG] [Thread-124650] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:35:58.111 [DEBUG] [Thread-124650] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:35:58.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:35:58.112 [DEBUG] [Thread-124650] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:35:58.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:35:58.123 [DEBUG] [Thread-124650] [transport.py] [_log()] userauth is OK
2025-11-03T23:35:58.123 [DEBUG] [Thread-124650] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:35:58.123 [DEBUG] [Thread-124650] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:35:58.123 [DEBUG] [Thread-124650] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:35:58.123 [DEBUG] [Thread-124650] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:35:58.161 [INFO] [Thread-124650] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:35:58.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:35:58.768 [DEBUG] [Thread-124650] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:35:58.769 [DEBUG] [Thread-124650] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:35:58.769 [DEBUG] [Thread-124650] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:35:58.809 [DEBUG] [Thread-124650] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:35:58.809 [DEBUG] [Thread-124650] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:35:58.812 [DEBUG] [Thread-124650] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:35:58.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:35:58.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:35:58.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:35:58.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:35:58.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:35:58.842 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:35:58.842 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:35:58.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:35:58.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:35:58.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.899404 -999.00  +19.00  14.42     17   -6.20 1 1 1 1 1     0    0 24.13 -17.62 ZNESW 18.5 14.4 299.4 19.2 19.0 -25.2 18.9 -24.1 18.7 -23.9 19.0 -24.7
2025-11-03T23:35:58.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:35:58.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:35:58.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.899404
2025-11-03T23:35:58.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:35:58.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:35:58.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:35:58.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:35:58.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:35:58.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:35:31', tmtdew=29.73, humidity=12.26, cloud=0.0, wind=17.63, temperature=18.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:35:08.506', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019750000000000156, 0.04875000000000007, 0.088750000000001, 0.07900000000000063, 0.034000000000000696, -0.06374999999999886, -0.21899999999999942, -0.062249999999998806, 0.08899999999999864, 0.06650000000000134, 0.08024999999999949, 0.038000000000000256, 0.06400000000000006, 0.07724999999999937, -0.907, -0.24200000000000088, 0.0702499999999997, 0.04049999999999976, 0.19699999999999918, 0.07674999999999876, 0.12249999999999872, 0.11724999999999852, -0.6337499999999991, 0.056250000000000355, 0.10549999999999926, 0.20250000000000057, 0.1847499999999993, 0.2129999999999992, 0.2730000000000006, 0.16100000000000136, -0.677999999999999, 0.057500000000000995, 0.031749999999998835], zp_timestamp='2025-11-03T21:31:00')
2025-11-03T23:35:58.843 [DEBUG] [Thread-124650] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:35:58.915 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:35:58.931 [DEBUG] [Thread-124653] [transport.py] [_log()] starting thread (client mode): 0xed34a00
2025-11-03T23:35:58.931 [DEBUG] [Thread-124653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:35:58.948 [DEBUG] [Thread-124653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:35:58.949 [INFO] [Thread-124653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:35:58.958 [DEBUG] [Thread-124653] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:35:58.958 [DEBUG] [Thread-124653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:35:58.958 [DEBUG] [Thread-124653] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:35:58.958 [DEBUG] [Thread-124653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:35:58.958 [DEBUG] [Thread-124653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:35:58.958 [DEBUG] [Thread-124653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:35:58.958 [DEBUG] [Thread-124653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:35:58.958 [DEBUG] [Thread-124653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:35:58.958 [DEBUG] [Thread-124653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:35:58.958 [DEBUG] [Thread-124653] [transport.py] [_log()] client lang: <none>
2025-11-03T23:35:58.958 [DEBUG] [Thread-124653] [transport.py] [_log()] server lang: <none>
2025-11-03T23:35:58.958 [DEBUG] [Thread-124653] [transport.py] [_log()] kex follows: False
2025-11-03T23:35:58.958 [DEBUG] [Thread-124653] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:35:58.958 [DEBUG] [Thread-124653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:35:58.958 [DEBUG] [Thread-124653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:35:58.959 [DEBUG] [Thread-124653] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:35:58.959 [DEBUG] [Thread-124653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:35:58.959 [DEBUG] [Thread-124653] [transport.py] [_log()] Compression: none
2025-11-03T23:35:58.959 [DEBUG] [Thread-124653] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:35:59.026 [DEBUG] [Thread-124653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:35:59.026 [DEBUG] [Thread-124653] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:35:59.027 [DEBUG] [Thread-124653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:35:59.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:35:59.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:35:59.085 [DEBUG] [Thread-124653] [transport.py] [_log()] userauth is OK
2025-11-03T23:35:59.086 [DEBUG] [Thread-124653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:35:59.086 [DEBUG] [Thread-124653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:35:59.086 [DEBUG] [Thread-124653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:35:59.086 [DEBUG] [Thread-124653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:35:59.106 [INFO] [Thread-124653] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:35:59.107 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:35:59.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:35:59.968 [DEBUG] [Thread-124653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:35:59.969 [DEBUG] [Thread-124653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:36:00.018 [DEBUG] [Thread-124653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:36:00.018 [DEBUG] [Thread-124653] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:36:00.030 [DEBUG] [Thread-124653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:36:00.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:36:00.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:36:00.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:36:00.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:36:00.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:36:00.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:36:00.070 [DEBUG] [Thread-124653] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:36:06.249 [DEBUG] [Thread-124655 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:36:08.108 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:36:08.109 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:36:21.299 [DEBUG] [Thread-124656 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:36:30.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:36:30.094 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:36:30.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:36:30.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 36, 3), 29.76, 12.23, 0.0, 17.8, 18.8, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:36:30.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:36:03
2025-11-03T23:36:30.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:36:31.085 [DEBUG] [Thread-124657] [transport.py] [_log()] starting thread (client mode): 0x1174d1b0
2025-11-03T23:36:31.086 [DEBUG] [Thread-124657] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:36:31.096 [DEBUG] [Thread-124657] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:36:31.096 [INFO] [Thread-124657] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:36:31.100 [DEBUG] [Thread-124657] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:36:31.100 [DEBUG] [Thread-124657] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:36:31.100 [DEBUG] [Thread-124657] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:36:31.100 [DEBUG] [Thread-124657] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:36:31.100 [DEBUG] [Thread-124657] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:36:31.100 [DEBUG] [Thread-124657] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:36:31.100 [DEBUG] [Thread-124657] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:36:31.100 [DEBUG] [Thread-124657] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:36:31.100 [DEBUG] [Thread-124657] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:36:31.100 [DEBUG] [Thread-124657] [transport.py] [_log()] client lang: <none>
2025-11-03T23:36:31.100 [DEBUG] [Thread-124657] [transport.py] [_log()] server lang: <none>
2025-11-03T23:36:31.100 [DEBUG] [Thread-124657] [transport.py] [_log()] kex follows: False
2025-11-03T23:36:31.100 [DEBUG] [Thread-124657] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:36:31.100 [DEBUG] [Thread-124657] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:36:31.100 [DEBUG] [Thread-124657] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:36:31.100 [DEBUG] [Thread-124657] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:36:31.100 [DEBUG] [Thread-124657] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:36:31.100 [DEBUG] [Thread-124657] [transport.py] [_log()] Compression: none
2025-11-03T23:36:31.100 [DEBUG] [Thread-124657] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:36:31.131 [DEBUG] [Thread-124657] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:36:31.136 [DEBUG] [Thread-124657] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:36:31.138 [DEBUG] [Thread-124657] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:36:31.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:36:31.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:36:31.141 [DEBUG] [Thread-124657] [transport.py] [_log()] userauth is OK
2025-11-03T23:36:31.141 [DEBUG] [Thread-124657] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:36:31.141 [DEBUG] [Thread-124657] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:36:31.141 [DEBUG] [Thread-124657] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:36:31.141 [DEBUG] [Thread-124657] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:36:31.174 [INFO] [Thread-124657] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:36:31.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:36:31.827 [DEBUG] [Thread-124657] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:36:31.827 [DEBUG] [Thread-124657] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:36:31.829 [DEBUG] [Thread-124657] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:36:31.869 [DEBUG] [Thread-124657] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:36:31.869 [DEBUG] [Thread-124657] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:36:31.871 [DEBUG] [Thread-124657] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:36:31.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:36:31.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:36:31.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:36:31.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:36:31.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:36:31.892 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:36:31.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:36:31.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:36:31.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:36:31.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.899752 -999.00  +19.00  16.74     17   -6.20 1 1 1 1 1     0    0 24.02 -16.44 ZNESW 15.3 16.7 305.8 22.4 19.0 -25.1 18.9 -24.2 18.6 -23.7 19.0 -24.8
2025-11-03T23:36:31.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:36:31.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:36:31.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.899752
2025-11-03T23:36:31.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:36:31.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:36:31.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:36:31.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:36:31.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:36:31.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:36:03', tmtdew=29.76, humidity=12.23, cloud=0.0, wind=17.8, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:35:38.573', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.008250000000000313, 0.06125000000000114, -0.0010000000000012221, -0.04800000000000004, -0.025749999999998607, -0.3819999999999997, -0.044749999999998735, 0.09450000000000003, 0.0070000000000014495, 0.09975000000000023, 0.054499999999999105, 0.058499999999998664, -0.010749999999999815, -0.6110000000000007, -0.3680000000000003, -0.0017500000000012506, 0.08949999999999925, 0.18249999999999922, 0.12324999999999875, 0.134999999999998, 0.10874999999999879, -1.520249999999999, 0.04875000000000007, 0.11650000000000027, 0.19350000000000023, 0.1927500000000002, 0.24050000000000082, 0.21199999999999974, 0.14500000000000135, -0.24099999999999966, 0.05450000000000088, 0.10374999999999801], zp_timestamp='2025-11-03T21:34:00')
2025-11-03T23:36:31.903 [DEBUG] [Thread-124657] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:36:31.978 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:36:31.992 [DEBUG] [Thread-124660] [transport.py] [_log()] starting thread (client mode): 0xed42f20
2025-11-03T23:36:31.992 [DEBUG] [Thread-124660] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:36:32.007 [DEBUG] [Thread-124660] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:36:32.007 [INFO] [Thread-124660] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:36:32.017 [DEBUG] [Thread-124660] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:36:32.017 [DEBUG] [Thread-124660] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:36:32.017 [DEBUG] [Thread-124660] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:36:32.017 [DEBUG] [Thread-124660] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:36:32.017 [DEBUG] [Thread-124660] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:36:32.017 [DEBUG] [Thread-124660] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:36:32.017 [DEBUG] [Thread-124660] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:36:32.017 [DEBUG] [Thread-124660] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:36:32.017 [DEBUG] [Thread-124660] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:36:32.018 [DEBUG] [Thread-124660] [transport.py] [_log()] client lang: <none>
2025-11-03T23:36:32.018 [DEBUG] [Thread-124660] [transport.py] [_log()] server lang: <none>
2025-11-03T23:36:32.018 [DEBUG] [Thread-124660] [transport.py] [_log()] kex follows: False
2025-11-03T23:36:32.018 [DEBUG] [Thread-124660] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:36:32.018 [DEBUG] [Thread-124660] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:36:32.018 [DEBUG] [Thread-124660] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:36:32.018 [DEBUG] [Thread-124660] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:36:32.018 [DEBUG] [Thread-124660] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:36:32.018 [DEBUG] [Thread-124660] [transport.py] [_log()] Compression: none
2025-11-03T23:36:32.018 [DEBUG] [Thread-124660] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:36:32.076 [DEBUG] [Thread-124660] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:36:32.076 [DEBUG] [Thread-124660] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:36:32.076 [DEBUG] [Thread-124660] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:36:32.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:36:32.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:36:32.148 [DEBUG] [Thread-124660] [transport.py] [_log()] userauth is OK
2025-11-03T23:36:32.148 [DEBUG] [Thread-124660] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:36:32.148 [DEBUG] [Thread-124660] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:36:32.148 [DEBUG] [Thread-124660] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:36:32.148 [DEBUG] [Thread-124660] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:36:32.168 [INFO] [Thread-124660] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:36:32.168 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:36:32.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:36:33.006 [DEBUG] [Thread-124660] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:36:33.006 [DEBUG] [Thread-124660] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:36:33.055 [DEBUG] [Thread-124660] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:36:33.055 [DEBUG] [Thread-124660] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:36:33.064 [DEBUG] [Thread-124660] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:36:33.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:36:33.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:36:33.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:36:33.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:36:33.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:36:33.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:36:33.099 [DEBUG] [Thread-124660] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:36:36.329 [DEBUG] [Thread-124662 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:36:37.491 [DEBUG] [Thread-124663 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:36:51.396 [DEBUG] [Thread-124664 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:36:52.522 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:37:00.806 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:37:03.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:37:03.092 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:37:03.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:37:03.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 36, 36), 29.65, 12.28, 0.0, 17.89, 18.78, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:37:03.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:36:36
2025-11-03T23:37:03.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:37:04.145 [DEBUG] [Thread-124665] [transport.py] [_log()] starting thread (client mode): 0xedb04c0
2025-11-03T23:37:04.145 [DEBUG] [Thread-124665] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:37:04.165 [DEBUG] [Thread-124665] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:37:04.165 [INFO] [Thread-124665] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:37:04.168 [DEBUG] [Thread-124665] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:37:04.168 [DEBUG] [Thread-124665] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:37:04.168 [DEBUG] [Thread-124665] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:37:04.168 [DEBUG] [Thread-124665] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:37:04.168 [DEBUG] [Thread-124665] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:37:04.169 [DEBUG] [Thread-124665] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:37:04.169 [DEBUG] [Thread-124665] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:37:04.169 [DEBUG] [Thread-124665] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:37:04.169 [DEBUG] [Thread-124665] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:37:04.169 [DEBUG] [Thread-124665] [transport.py] [_log()] client lang: <none>
2025-11-03T23:37:04.169 [DEBUG] [Thread-124665] [transport.py] [_log()] server lang: <none>
2025-11-03T23:37:04.169 [DEBUG] [Thread-124665] [transport.py] [_log()] kex follows: False
2025-11-03T23:37:04.169 [DEBUG] [Thread-124665] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:37:04.169 [DEBUG] [Thread-124665] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:37:04.169 [DEBUG] [Thread-124665] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:37:04.170 [DEBUG] [Thread-124665] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:37:04.170 [DEBUG] [Thread-124665] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:37:04.170 [DEBUG] [Thread-124665] [transport.py] [_log()] Compression: none
2025-11-03T23:37:04.170 [DEBUG] [Thread-124665] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:37:04.188 [DEBUG] [Thread-124665] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:37:04.189 [DEBUG] [Thread-124665] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:37:04.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:37:04.191 [DEBUG] [Thread-124665] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:37:04.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:37:04.193 [DEBUG] [Thread-124665] [transport.py] [_log()] userauth is OK
2025-11-03T23:37:04.194 [DEBUG] [Thread-124665] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:37:04.194 [DEBUG] [Thread-124665] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:37:04.194 [DEBUG] [Thread-124665] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:37:04.194 [DEBUG] [Thread-124665] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:37:04.218 [INFO] [Thread-124665] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:37:04.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:37:04.839 [DEBUG] [Thread-124665] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:37:04.840 [DEBUG] [Thread-124665] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:37:04.840 [DEBUG] [Thread-124665] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:37:04.880 [DEBUG] [Thread-124665] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:37:04.880 [DEBUG] [Thread-124665] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:37:04.883 [DEBUG] [Thread-124665] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:37:04.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:37:04.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:37:04.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:37:04.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:37:04.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:37:04.904 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:37:04.904 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:37:04.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:37:04.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:37:04.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.900099 -999.00  +19.00  16.19     17   -6.10 1 1 1 1 1     0    0 24.74 -17.02 ZNESW 16.9 16.2 299.6 21.3 19.0 -25.2 18.9 -24.2 18.6 -23.8 19.0 -24.7
2025-11-03T23:37:04.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:37:04.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:37:04.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.900099
2025-11-03T23:37:04.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:37:04.906 [DEBUG] [Thread-124665] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:37:04.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:37:04.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:37:04.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:37:04.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:37:04.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:36:36', tmtdew=29.65, humidity=12.28, cloud=0.0, wind=17.89, temperature=18.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:36:08.554', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.008250000000000313, 0.06125000000000114, -0.0010000000000012221, -0.04800000000000004, -0.025749999999998607, -0.3819999999999997, -0.044749999999998735, 0.09450000000000003, 0.0070000000000014495, 0.09975000000000023, 0.054499999999999105, 0.058499999999998664, -0.010749999999999815, -0.6110000000000007, -0.3680000000000003, -0.0017500000000012506, 0.08949999999999925, 0.18249999999999922, 0.12324999999999875, 0.134999999999998, 0.10874999999999879, -1.520249999999999, 0.04875000000000007, 0.11650000000000027, 0.19350000000000023, 0.1927500000000002, 0.24050000000000082, 0.21199999999999974, 0.14500000000000135, -0.24099999999999966, 0.05450000000000088, 0.10374999999999801], zp_timestamp='2025-11-03T21:34:00')
2025-11-03T23:37:04.920 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:37:04.991 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:37:05.004 [DEBUG] [Thread-124668] [transport.py] [_log()] starting thread (client mode): 0x117ea110
2025-11-03T23:37:05.004 [DEBUG] [Thread-124668] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:37:05.018 [DEBUG] [Thread-124668] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:37:05.018 [INFO] [Thread-124668] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:37:05.027 [DEBUG] [Thread-124668] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:37:05.027 [DEBUG] [Thread-124668] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:37:05.027 [DEBUG] [Thread-124668] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:37:05.027 [DEBUG] [Thread-124668] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:37:05.027 [DEBUG] [Thread-124668] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:37:05.027 [DEBUG] [Thread-124668] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:37:05.027 [DEBUG] [Thread-124668] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:37:05.027 [DEBUG] [Thread-124668] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:37:05.027 [DEBUG] [Thread-124668] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:37:05.027 [DEBUG] [Thread-124668] [transport.py] [_log()] client lang: <none>
2025-11-03T23:37:05.028 [DEBUG] [Thread-124668] [transport.py] [_log()] server lang: <none>
2025-11-03T23:37:05.028 [DEBUG] [Thread-124668] [transport.py] [_log()] kex follows: False
2025-11-03T23:37:05.028 [DEBUG] [Thread-124668] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:37:05.028 [DEBUG] [Thread-124668] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:37:05.028 [DEBUG] [Thread-124668] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:37:05.029 [DEBUG] [Thread-124668] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:37:05.029 [DEBUG] [Thread-124668] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:37:05.029 [DEBUG] [Thread-124668] [transport.py] [_log()] Compression: none
2025-11-03T23:37:05.029 [DEBUG] [Thread-124668] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:37:05.084 [DEBUG] [Thread-124668] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:37:05.084 [DEBUG] [Thread-124668] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:37:05.084 [DEBUG] [Thread-124668] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:37:05.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:37:05.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:37:05.144 [DEBUG] [Thread-124668] [transport.py] [_log()] userauth is OK
2025-11-03T23:37:05.144 [DEBUG] [Thread-124668] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:37:05.144 [DEBUG] [Thread-124668] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:37:05.144 [DEBUG] [Thread-124668] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:37:05.144 [DEBUG] [Thread-124668] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:37:05.162 [INFO] [Thread-124668] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:37:05.163 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:37:05.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:37:06.004 [DEBUG] [Thread-124668] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:37:06.004 [DEBUG] [Thread-124668] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:37:06.052 [DEBUG] [Thread-124668] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:37:06.052 [DEBUG] [Thread-124668] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:37:06.061 [DEBUG] [Thread-124668] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:37:06.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:37:06.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:37:06.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:37:06.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:37:06.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:37:06.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:37:06.097 [DEBUG] [Thread-124668] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:37:06.440 [DEBUG] [Thread-124670 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:37:08.315 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:37:08.318 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:37:21.803 [DEBUG] [Thread-124671 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:37:36.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:37:36.118 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:37:36.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:37:36.849 [DEBUG] [Thread-124672 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:37:36.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 37, 8), 29.62, 12.31, 0.0, 17.63, 18.78, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:37:36.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:37:08
2025-11-03T23:37:37.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:37:37.176 [DEBUG] [Thread-124673] [transport.py] [_log()] starting thread (client mode): 0x117eaad0
2025-11-03T23:37:37.176 [DEBUG] [Thread-124673] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:37:37.180 [DEBUG] [Thread-124673] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:37:37.180 [INFO] [Thread-124673] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:37:37.183 [DEBUG] [Thread-124673] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:37:37.183 [DEBUG] [Thread-124673] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:37:37.183 [DEBUG] [Thread-124673] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:37:37.183 [DEBUG] [Thread-124673] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:37:37.183 [DEBUG] [Thread-124673] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:37:37.183 [DEBUG] [Thread-124673] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:37:37.183 [DEBUG] [Thread-124673] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:37:37.183 [DEBUG] [Thread-124673] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:37:37.183 [DEBUG] [Thread-124673] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:37:37.183 [DEBUG] [Thread-124673] [transport.py] [_log()] client lang: <none>
2025-11-03T23:37:37.183 [DEBUG] [Thread-124673] [transport.py] [_log()] server lang: <none>
2025-11-03T23:37:37.183 [DEBUG] [Thread-124673] [transport.py] [_log()] kex follows: False
2025-11-03T23:37:37.183 [DEBUG] [Thread-124673] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:37:37.183 [DEBUG] [Thread-124673] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:37:37.183 [DEBUG] [Thread-124673] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:37:37.183 [DEBUG] [Thread-124673] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:37:37.183 [DEBUG] [Thread-124673] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:37:37.183 [DEBUG] [Thread-124673] [transport.py] [_log()] Compression: none
2025-11-03T23:37:37.183 [DEBUG] [Thread-124673] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:37:37.199 [DEBUG] [Thread-124673] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:37:37.199 [DEBUG] [Thread-124673] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:37:37.199 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:37:37.200 [DEBUG] [Thread-124673] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:37:37.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:37:37.246 [DEBUG] [Thread-124673] [transport.py] [_log()] userauth is OK
2025-11-03T23:37:37.246 [DEBUG] [Thread-124673] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:37:37.246 [DEBUG] [Thread-124673] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:37:37.246 [DEBUG] [Thread-124673] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:37:37.246 [DEBUG] [Thread-124673] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:37:37.266 [INFO] [Thread-124673] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:37:37.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:37:37.867 [DEBUG] [Thread-124675 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:37:37.891 [DEBUG] [Thread-124673] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:37:37.891 [DEBUG] [Thread-124673] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:37:37.891 [DEBUG] [Thread-124673] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:37:37.932 [DEBUG] [Thread-124673] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:37:37.932 [DEBUG] [Thread-124673] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:37:37.936 [DEBUG] [Thread-124673] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:37:37.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:37:37.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:37:37.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:37:37.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:37:37.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:37:37.960 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:37:37.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:37:37.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:37:37.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:37:37.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.900794 -999.00  +19.00  16.43     17   -6.20 1 1 1 1 1     0    0 24.41 -20.31 ZNESW 18.3 16.4 298.0 21.3 18.9 -25.1 18.9 -24.1 18.7 -25.6 18.9 -24.9
2025-11-03T23:37:37.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:37:37.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:37:37.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.900794
2025-11-03T23:37:37.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:37:37.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:37:37.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:37:37.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:37:37.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:37:37.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:37:08', tmtdew=29.62, humidity=12.31, cloud=0.0, wind=17.63, temperature=18.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:37:08.602', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.008250000000000313, 0.06125000000000114, -0.0010000000000012221, -0.04800000000000004, -0.025749999999998607, -0.3819999999999997, -0.044749999999998735, 0.09450000000000003, 0.0070000000000014495, 0.09975000000000023, 0.054499999999999105, 0.058499999999998664, -0.010749999999999815, -0.6110000000000007, -0.3680000000000003, -0.0017500000000012506, 0.08949999999999925, 0.18249999999999922, 0.12324999999999875, 0.134999999999998, 0.10874999999999879, -1.520249999999999, 0.04875000000000007, 0.11650000000000027, 0.19350000000000023, 0.1927500000000002, 0.24050000000000082, 0.21199999999999974, 0.14500000000000135, -0.24099999999999966, 0.05450000000000088, 0.10374999999999801], zp_timestamp='2025-11-03T21:34:00')
2025-11-03T23:37:37.964 [DEBUG] [Thread-124673] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:37:38.040 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:37:38.057 [DEBUG] [Thread-124677] [transport.py] [_log()] starting thread (client mode): 0xed369b0
2025-11-03T23:37:38.057 [DEBUG] [Thread-124677] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:37:38.074 [DEBUG] [Thread-124677] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:37:38.074 [INFO] [Thread-124677] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:37:38.084 [DEBUG] [Thread-124677] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:37:38.085 [DEBUG] [Thread-124677] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:37:38.085 [DEBUG] [Thread-124677] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:37:38.085 [DEBUG] [Thread-124677] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:37:38.085 [DEBUG] [Thread-124677] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:37:38.085 [DEBUG] [Thread-124677] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:37:38.085 [DEBUG] [Thread-124677] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:37:38.085 [DEBUG] [Thread-124677] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:37:38.085 [DEBUG] [Thread-124677] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:37:38.085 [DEBUG] [Thread-124677] [transport.py] [_log()] client lang: <none>
2025-11-03T23:37:38.085 [DEBUG] [Thread-124677] [transport.py] [_log()] server lang: <none>
2025-11-03T23:37:38.085 [DEBUG] [Thread-124677] [transport.py] [_log()] kex follows: False
2025-11-03T23:37:38.085 [DEBUG] [Thread-124677] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:37:38.085 [DEBUG] [Thread-124677] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:37:38.085 [DEBUG] [Thread-124677] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:37:38.085 [DEBUG] [Thread-124677] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:37:38.086 [DEBUG] [Thread-124677] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:37:38.086 [DEBUG] [Thread-124677] [transport.py] [_log()] Compression: none
2025-11-03T23:37:38.086 [DEBUG] [Thread-124677] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:37:38.146 [DEBUG] [Thread-124677] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:37:38.146 [DEBUG] [Thread-124677] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:37:38.147 [DEBUG] [Thread-124677] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:37:38.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:37:38.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:37:38.212 [DEBUG] [Thread-124677] [transport.py] [_log()] userauth is OK
2025-11-03T23:37:38.212 [DEBUG] [Thread-124677] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:37:38.212 [DEBUG] [Thread-124677] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:37:38.212 [DEBUG] [Thread-124677] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:37:38.212 [DEBUG] [Thread-124677] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:37:38.239 [INFO] [Thread-124677] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:37:38.239 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:37:38.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:37:39.109 [DEBUG] [Thread-124677] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:37:39.109 [DEBUG] [Thread-124677] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:37:39.149 [DEBUG] [Thread-124677] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:37:39.149 [DEBUG] [Thread-124677] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:37:39.159 [DEBUG] [Thread-124677] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:37:39.169 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:37:39.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:37:39.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:37:39.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:37:39.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:37:39.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:37:39.198 [DEBUG] [Thread-124677] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:37:51.879 [DEBUG] [Thread-124679 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:38:06.924 [DEBUG] [Thread-124680 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:38:08.519 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:38:08.520 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:38:09.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:38:09.219 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:38:09.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:38:11.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 37, 43), 29.59, 12.33, 0.0, 15.83, 18.71, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:38:11.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:37:43
2025-11-03T23:38:11.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:38:12.039 [DEBUG] [Thread-124681] [transport.py] [_log()] starting thread (client mode): 0xed180a0
2025-11-03T23:38:12.039 [DEBUG] [Thread-124681] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:38:12.059 [DEBUG] [Thread-124681] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:38:12.059 [INFO] [Thread-124681] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:38:12.062 [DEBUG] [Thread-124681] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:38:12.062 [DEBUG] [Thread-124681] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:38:12.062 [DEBUG] [Thread-124681] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:38:12.062 [DEBUG] [Thread-124681] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:38:12.062 [DEBUG] [Thread-124681] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:38:12.062 [DEBUG] [Thread-124681] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:38:12.062 [DEBUG] [Thread-124681] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:38:12.062 [DEBUG] [Thread-124681] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:38:12.063 [DEBUG] [Thread-124681] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:38:12.063 [DEBUG] [Thread-124681] [transport.py] [_log()] client lang: <none>
2025-11-03T23:38:12.063 [DEBUG] [Thread-124681] [transport.py] [_log()] server lang: <none>
2025-11-03T23:38:12.063 [DEBUG] [Thread-124681] [transport.py] [_log()] kex follows: False
2025-11-03T23:38:12.063 [DEBUG] [Thread-124681] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:38:12.063 [DEBUG] [Thread-124681] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:38:12.063 [DEBUG] [Thread-124681] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:38:12.063 [DEBUG] [Thread-124681] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:38:12.063 [DEBUG] [Thread-124681] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:38:12.063 [DEBUG] [Thread-124681] [transport.py] [_log()] Compression: none
2025-11-03T23:38:12.063 [DEBUG] [Thread-124681] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:38:12.082 [DEBUG] [Thread-124681] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:38:12.082 [DEBUG] [Thread-124681] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:38:12.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:38:12.083 [DEBUG] [Thread-124681] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:38:12.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:38:12.085 [DEBUG] [Thread-124681] [transport.py] [_log()] userauth is OK
2025-11-03T23:38:12.085 [DEBUG] [Thread-124681] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:38:12.085 [DEBUG] [Thread-124681] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:38:12.085 [DEBUG] [Thread-124681] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:38:12.085 [DEBUG] [Thread-124681] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:38:12.109 [INFO] [Thread-124681] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:38:12.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:38:12.759 [DEBUG] [Thread-124681] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:38:12.760 [DEBUG] [Thread-124681] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:38:12.760 [DEBUG] [Thread-124681] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:38:12.800 [DEBUG] [Thread-124681] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:38:12.800 [DEBUG] [Thread-124681] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:38:12.803 [DEBUG] [Thread-124681] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:38:12.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:38:12.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:38:12.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:38:12.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:38:12.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:38:12.821 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:38:12.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:38:12.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:38:12.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:38:12.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.901141 -999.00  +19.00  17.87     17   -6.10 1 1 1 1 1     0    0 24.65 -21.98 ZNESW 18.0 17.9 302.6 20.2 19.0 -25.2 18.9 -24.2 18.7 -23.8 18.9 -24.7
2025-11-03T23:38:12.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:38:12.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:38:12.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.901141
2025-11-03T23:38:12.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:38:12.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:38:12.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:38:12.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:38:12.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:38:12.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:37:43', tmtdew=29.59, humidity=12.33, cloud=0.0, wind=15.83, temperature=18.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:37:38.582', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.008250000000000313, 0.06125000000000114, -0.0010000000000012221, -0.04800000000000004, -0.025749999999998607, -0.3819999999999997, -0.044749999999998735, 0.09450000000000003, 0.0070000000000014495, 0.09975000000000023, 0.054499999999999105, 0.058499999999998664, -0.010749999999999815, -0.6110000000000007, -0.3680000000000003, -0.0017500000000012506, 0.08949999999999925, 0.18249999999999922, 0.12324999999999875, 0.134999999999998, 0.10874999999999879, -1.520249999999999, 0.04875000000000007, 0.11650000000000027, 0.19350000000000023, 0.1927500000000002, 0.24050000000000082, 0.21199999999999974, 0.14500000000000135, -0.24099999999999966, 0.05450000000000088, 0.10374999999999801], zp_timestamp='2025-11-03T21:34:00')
2025-11-03T23:38:12.822 [DEBUG] [Thread-124681] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:38:12.894 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:38:12.906 [DEBUG] [Thread-124684] [transport.py] [_log()] starting thread (client mode): 0xed1b010
2025-11-03T23:38:12.906 [DEBUG] [Thread-124684] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:38:12.921 [DEBUG] [Thread-124684] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:38:12.921 [INFO] [Thread-124684] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:38:12.929 [DEBUG] [Thread-124684] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:38:12.929 [DEBUG] [Thread-124684] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:38:12.929 [DEBUG] [Thread-124684] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:38:12.929 [DEBUG] [Thread-124684] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:38:12.929 [DEBUG] [Thread-124684] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:38:12.929 [DEBUG] [Thread-124684] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:38:12.929 [DEBUG] [Thread-124684] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:38:12.929 [DEBUG] [Thread-124684] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:38:12.929 [DEBUG] [Thread-124684] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:38:12.929 [DEBUG] [Thread-124684] [transport.py] [_log()] client lang: <none>
2025-11-03T23:38:12.929 [DEBUG] [Thread-124684] [transport.py] [_log()] server lang: <none>
2025-11-03T23:38:12.929 [DEBUG] [Thread-124684] [transport.py] [_log()] kex follows: False
2025-11-03T23:38:12.929 [DEBUG] [Thread-124684] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:38:12.929 [DEBUG] [Thread-124684] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:38:12.929 [DEBUG] [Thread-124684] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:38:12.929 [DEBUG] [Thread-124684] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:38:12.929 [DEBUG] [Thread-124684] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:38:12.929 [DEBUG] [Thread-124684] [transport.py] [_log()] Compression: none
2025-11-03T23:38:12.929 [DEBUG] [Thread-124684] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:38:12.988 [DEBUG] [Thread-124684] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:38:12.988 [DEBUG] [Thread-124684] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:38:12.988 [DEBUG] [Thread-124684] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:38:12.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:38:12.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:38:13.044 [DEBUG] [Thread-124684] [transport.py] [_log()] userauth is OK
2025-11-03T23:38:13.045 [DEBUG] [Thread-124684] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:38:13.045 [DEBUG] [Thread-124684] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:38:13.045 [DEBUG] [Thread-124684] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:38:13.045 [DEBUG] [Thread-124684] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:38:13.059 [INFO] [Thread-124684] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:38:13.059 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:38:13.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:38:13.852 [DEBUG] [Thread-124684] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:38:13.852 [DEBUG] [Thread-124684] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:38:13.900 [DEBUG] [Thread-124684] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:38:13.900 [DEBUG] [Thread-124684] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:38:13.910 [DEBUG] [Thread-124684] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:38:13.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:38:13.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:38:13.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:38:13.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:38:13.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:38:13.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:38:13.948 [DEBUG] [Thread-124684] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:38:21.956 [DEBUG] [Thread-124686 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:38:31.704 [DEBUG] [Thread-124687 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:38:37.010 [DEBUG] [Thread-124688 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:38:38.159 [DEBUG] [Thread-124689 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:38:43.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:38:43.971 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:38:43.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:38:44.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 38, 15), 29.56, 12.36, 0.0, 16.02, 18.73, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:38:44.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:38:15
2025-11-03T23:38:44.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:38:45.008 [DEBUG] [Thread-124690] [transport.py] [_log()] starting thread (client mode): 0xed19f30
2025-11-03T23:38:45.008 [DEBUG] [Thread-124690] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:38:45.029 [DEBUG] [Thread-124690] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:38:45.029 [INFO] [Thread-124690] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:38:45.032 [DEBUG] [Thread-124690] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:38:45.033 [DEBUG] [Thread-124690] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:38:45.033 [DEBUG] [Thread-124690] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:38:45.033 [DEBUG] [Thread-124690] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:38:45.033 [DEBUG] [Thread-124690] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:38:45.033 [DEBUG] [Thread-124690] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:38:45.033 [DEBUG] [Thread-124690] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:38:45.033 [DEBUG] [Thread-124690] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:38:45.033 [DEBUG] [Thread-124690] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:38:45.033 [DEBUG] [Thread-124690] [transport.py] [_log()] client lang: <none>
2025-11-03T23:38:45.033 [DEBUG] [Thread-124690] [transport.py] [_log()] server lang: <none>
2025-11-03T23:38:45.033 [DEBUG] [Thread-124690] [transport.py] [_log()] kex follows: False
2025-11-03T23:38:45.033 [DEBUG] [Thread-124690] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:38:45.033 [DEBUG] [Thread-124690] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:38:45.033 [DEBUG] [Thread-124690] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:38:45.033 [DEBUG] [Thread-124690] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:38:45.033 [DEBUG] [Thread-124690] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:38:45.033 [DEBUG] [Thread-124690] [transport.py] [_log()] Compression: none
2025-11-03T23:38:45.033 [DEBUG] [Thread-124690] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:38:45.050 [DEBUG] [Thread-124690] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:38:45.050 [DEBUG] [Thread-124690] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:38:45.051 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:38:45.052 [DEBUG] [Thread-124690] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:38:45.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:38:45.053 [DEBUG] [Thread-124690] [transport.py] [_log()] userauth is OK
2025-11-03T23:38:45.054 [DEBUG] [Thread-124690] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:38:45.054 [DEBUG] [Thread-124690] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:38:45.054 [DEBUG] [Thread-124690] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:38:45.054 [DEBUG] [Thread-124690] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:38:45.078 [INFO] [Thread-124690] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:38:45.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:38:45.720 [DEBUG] [Thread-124690] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:38:45.720 [DEBUG] [Thread-124690] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:38:45.720 [DEBUG] [Thread-124690] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:38:45.761 [DEBUG] [Thread-124690] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:38:45.761 [DEBUG] [Thread-124690] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:38:45.764 [DEBUG] [Thread-124690] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:38:45.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:38:45.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:38:45.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:38:45.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:38:45.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:38:45.783 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:38:45.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:38:45.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:38:45.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:38:45.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.901488 -999.00  +19.00  16.17     17   -6.20 1 1 1 1 1     0    0 24.35 -20.59 ZNESW 18.1 16.2 304.0 21.5 19.0 -25.2 18.9 -24.2 18.6 -23.8 18.9 -25.0
2025-11-03T23:38:45.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:38:45.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:38:45.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.901488
2025-11-03T23:38:45.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:38:45.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:38:45.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:38:45.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:38:45.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:38:45.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:38:15', tmtdew=29.56, humidity=12.36, cloud=0.0, wind=16.02, temperature=18.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:38:08.563', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.008250000000000313, 0.06125000000000114, -0.0010000000000012221, -0.04800000000000004, -0.025749999999998607, -0.3819999999999997, -0.044749999999998735, 0.09450000000000003, 0.0070000000000014495, 0.09975000000000023, 0.054499999999999105, 0.058499999999998664, -0.010749999999999815, -0.6110000000000007, -0.3680000000000003, -0.0017500000000012506, 0.08949999999999925, 0.18249999999999922, 0.12324999999999875, 0.134999999999998, 0.10874999999999879, -1.520249999999999, 0.04875000000000007, 0.11650000000000027, 0.19350000000000023, 0.1927500000000002, 0.24050000000000082, 0.21199999999999974, 0.14500000000000135, -0.24099999999999966, 0.05450000000000088, 0.10374999999999801], zp_timestamp='2025-11-03T21:34:00')
2025-11-03T23:38:45.784 [DEBUG] [Thread-124690] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:38:45.858 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:38:45.871 [DEBUG] [Thread-124693] [transport.py] [_log()] starting thread (client mode): 0xed1a410
2025-11-03T23:38:45.872 [DEBUG] [Thread-124693] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:38:45.890 [DEBUG] [Thread-124693] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:38:45.890 [INFO] [Thread-124693] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:38:45.898 [DEBUG] [Thread-124693] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:38:45.898 [DEBUG] [Thread-124693] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:38:45.899 [DEBUG] [Thread-124693] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:38:45.899 [DEBUG] [Thread-124693] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:38:45.899 [DEBUG] [Thread-124693] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:38:45.899 [DEBUG] [Thread-124693] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:38:45.899 [DEBUG] [Thread-124693] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:38:45.899 [DEBUG] [Thread-124693] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:38:45.899 [DEBUG] [Thread-124693] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:38:45.899 [DEBUG] [Thread-124693] [transport.py] [_log()] client lang: <none>
2025-11-03T23:38:45.899 [DEBUG] [Thread-124693] [transport.py] [_log()] server lang: <none>
2025-11-03T23:38:45.899 [DEBUG] [Thread-124693] [transport.py] [_log()] kex follows: False
2025-11-03T23:38:45.899 [DEBUG] [Thread-124693] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:38:45.899 [DEBUG] [Thread-124693] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:38:45.899 [DEBUG] [Thread-124693] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:38:45.899 [DEBUG] [Thread-124693] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:38:45.899 [DEBUG] [Thread-124693] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:38:45.900 [DEBUG] [Thread-124693] [transport.py] [_log()] Compression: none
2025-11-03T23:38:45.900 [DEBUG] [Thread-124693] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:38:45.958 [DEBUG] [Thread-124693] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:38:45.958 [DEBUG] [Thread-124693] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:38:45.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:38:45.958 [DEBUG] [Thread-124693] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:38:45.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:38:46.019 [DEBUG] [Thread-124693] [transport.py] [_log()] userauth is OK
2025-11-03T23:38:46.020 [DEBUG] [Thread-124693] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:38:46.020 [DEBUG] [Thread-124693] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:38:46.020 [DEBUG] [Thread-124693] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:38:46.020 [DEBUG] [Thread-124693] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:38:46.042 [INFO] [Thread-124693] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:38:46.042 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:38:46.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:38:46.916 [DEBUG] [Thread-124693] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:38:46.916 [DEBUG] [Thread-124693] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:38:46.965 [DEBUG] [Thread-124693] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:38:46.965 [DEBUG] [Thread-124693] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:38:46.973 [DEBUG] [Thread-124693] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:38:46.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:38:46.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:38:46.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:38:46.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:38:46.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:38:46.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:38:47.005 [DEBUG] [Thread-124693] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:38:52.038 [DEBUG] [Thread-124695 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:39:07.388 [DEBUG] [Thread-124696 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:39:08.731 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:39:08.732 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:39:17.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:39:17.038 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:39:17.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:39:17.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 38, 49), 29.5, 12.36, 0.0, 18.56, 18.63, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:39:17.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:38:49
2025-11-03T23:39:18.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:39:18.377 [DEBUG] [Thread-124697] [transport.py] [_log()] starting thread (client mode): 0xed1bc10
2025-11-03T23:39:18.383 [DEBUG] [Thread-124697] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:39:18.385 [DEBUG] [Thread-124697] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:39:18.385 [INFO] [Thread-124697] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:39:18.403 [DEBUG] [Thread-124697] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:39:18.403 [DEBUG] [Thread-124697] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:39:18.403 [DEBUG] [Thread-124697] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:39:18.403 [DEBUG] [Thread-124697] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:39:18.403 [DEBUG] [Thread-124697] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:39:18.403 [DEBUG] [Thread-124697] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:39:18.403 [DEBUG] [Thread-124697] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:39:18.403 [DEBUG] [Thread-124697] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:39:18.403 [DEBUG] [Thread-124697] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:39:18.403 [DEBUG] [Thread-124697] [transport.py] [_log()] client lang: <none>
2025-11-03T23:39:18.403 [DEBUG] [Thread-124697] [transport.py] [_log()] server lang: <none>
2025-11-03T23:39:18.403 [DEBUG] [Thread-124697] [transport.py] [_log()] kex follows: False
2025-11-03T23:39:18.403 [DEBUG] [Thread-124697] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:39:18.404 [DEBUG] [Thread-124697] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:39:18.404 [DEBUG] [Thread-124697] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:39:18.405 [DEBUG] [Thread-124697] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:39:18.405 [DEBUG] [Thread-124697] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:39:18.405 [DEBUG] [Thread-124697] [transport.py] [_log()] Compression: none
2025-11-03T23:39:18.405 [DEBUG] [Thread-124697] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:39:18.487 [DEBUG] [Thread-124697] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:39:18.511 [DEBUG] [Thread-124697] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:39:18.516 [DEBUG] [Thread-124697] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:39:18.521 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:39:18.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:39:18.534 [DEBUG] [Thread-124697] [transport.py] [_log()] userauth is OK
2025-11-03T23:39:18.534 [DEBUG] [Thread-124697] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:39:18.536 [DEBUG] [Thread-124697] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:39:18.536 [DEBUG] [Thread-124697] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:39:18.536 [DEBUG] [Thread-124697] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:39:18.595 [INFO] [Thread-124697] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:39:18.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:39:19.213 [DEBUG] [Thread-124697] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:39:19.213 [DEBUG] [Thread-124697] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:39:19.219 [DEBUG] [Thread-124697] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:39:19.253 [DEBUG] [Thread-124697] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:39:19.253 [DEBUG] [Thread-124697] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:39:19.257 [DEBUG] [Thread-124697] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:39:19.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:39:19.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:39:19.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:39:19.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:39:19.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:39:19.292 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:39:19.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:39:19.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:39:19.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:39:19.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.901835 -999.00  +19.00  14.48     17   -6.10 1 1 1 1 1     0    0 25.12 -19.18 ZNESW 17.3 14.5 300.2 21.2 19.0 -25.2 18.9 -24.1 18.7 -23.8 18.9 -24.9
2025-11-03T23:39:19.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:39:19.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:39:19.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.901835
2025-11-03T23:39:19.301 [DEBUG] [Thread-124697] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:39:19.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:39:19.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:39:19.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:39:19.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:39:19.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:39:19.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:38:49', tmtdew=29.5, humidity=12.36, cloud=0.0, wind=18.56, temperature=18.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:38:38.544', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.008250000000000313, 0.06125000000000114, -0.0010000000000012221, -0.04800000000000004, -0.025749999999998607, -0.3819999999999997, -0.044749999999998735, 0.09450000000000003, 0.0070000000000014495, 0.09975000000000023, 0.054499999999999105, 0.058499999999998664, -0.010749999999999815, -0.6110000000000007, -0.3680000000000003, -0.0017500000000012506, 0.08949999999999925, 0.18249999999999922, 0.12324999999999875, 0.134999999999998, 0.10874999999999879, -1.520249999999999, 0.04875000000000007, 0.11650000000000027, 0.19350000000000023, 0.1927500000000002, 0.24050000000000082, 0.21199999999999974, 0.14500000000000135, -0.24099999999999966, 0.05450000000000088, 0.10374999999999801], zp_timestamp='2025-11-03T21:38:00')
2025-11-03T23:39:19.452 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:39:19.466 [DEBUG] [Thread-124700] [transport.py] [_log()] starting thread (client mode): 0xed42440
2025-11-03T23:39:19.466 [DEBUG] [Thread-124700] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:39:19.480 [DEBUG] [Thread-124700] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:39:19.480 [INFO] [Thread-124700] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:39:19.488 [DEBUG] [Thread-124700] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:39:19.488 [DEBUG] [Thread-124700] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:39:19.489 [DEBUG] [Thread-124700] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:39:19.489 [DEBUG] [Thread-124700] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:39:19.489 [DEBUG] [Thread-124700] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:39:19.489 [DEBUG] [Thread-124700] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:39:19.489 [DEBUG] [Thread-124700] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:39:19.489 [DEBUG] [Thread-124700] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:39:19.489 [DEBUG] [Thread-124700] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:39:19.489 [DEBUG] [Thread-124700] [transport.py] [_log()] client lang: <none>
2025-11-03T23:39:19.489 [DEBUG] [Thread-124700] [transport.py] [_log()] server lang: <none>
2025-11-03T23:39:19.489 [DEBUG] [Thread-124700] [transport.py] [_log()] kex follows: False
2025-11-03T23:39:19.489 [DEBUG] [Thread-124700] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:39:19.489 [DEBUG] [Thread-124700] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:39:19.490 [DEBUG] [Thread-124700] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:39:19.490 [DEBUG] [Thread-124700] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:39:19.490 [DEBUG] [Thread-124700] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:39:19.490 [DEBUG] [Thread-124700] [transport.py] [_log()] Compression: none
2025-11-03T23:39:19.490 [DEBUG] [Thread-124700] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:39:19.547 [DEBUG] [Thread-124700] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:39:19.547 [DEBUG] [Thread-124700] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:39:19.547 [DEBUG] [Thread-124700] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:39:19.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:39:19.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:39:19.606 [DEBUG] [Thread-124700] [transport.py] [_log()] userauth is OK
2025-11-03T23:39:19.606 [DEBUG] [Thread-124700] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:39:19.606 [DEBUG] [Thread-124700] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:39:19.606 [DEBUG] [Thread-124700] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:39:19.606 [DEBUG] [Thread-124700] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:39:19.630 [INFO] [Thread-124700] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:39:19.631 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:39:19.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:39:20.451 [DEBUG] [Thread-124700] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:39:20.451 [DEBUG] [Thread-124700] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:39:20.501 [DEBUG] [Thread-124700] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:39:20.501 [DEBUG] [Thread-124700] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:39:20.509 [DEBUG] [Thread-124700] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:39:20.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:39:20.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:39:20.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:39:20.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:39:20.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:39:20.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:39:20.553 [DEBUG] [Thread-124700] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:39:22.414 [DEBUG] [Thread-124702 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:39:37.673 [DEBUG] [Thread-124703 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:39:38.540 [DEBUG] [Thread-124704 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:39:50.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:39:50.575 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:39:50.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:39:51.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 39, 25), 29.49, 12.38, 0.0, 18.03, 18.68, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:39:51.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:39:25
2025-11-03T23:39:51.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:39:51.652 [DEBUG] [Thread-124705] [transport.py] [_log()] starting thread (client mode): 0xed1bf10
2025-11-03T23:39:51.652 [DEBUG] [Thread-124705] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:39:51.672 [DEBUG] [Thread-124705] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:39:51.672 [INFO] [Thread-124705] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:39:51.675 [DEBUG] [Thread-124705] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:39:51.675 [DEBUG] [Thread-124705] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:39:51.676 [DEBUG] [Thread-124705] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:39:51.676 [DEBUG] [Thread-124705] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:39:51.676 [DEBUG] [Thread-124705] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:39:51.676 [DEBUG] [Thread-124705] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:39:51.676 [DEBUG] [Thread-124705] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:39:51.676 [DEBUG] [Thread-124705] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:39:51.676 [DEBUG] [Thread-124705] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:39:51.676 [DEBUG] [Thread-124705] [transport.py] [_log()] client lang: <none>
2025-11-03T23:39:51.676 [DEBUG] [Thread-124705] [transport.py] [_log()] server lang: <none>
2025-11-03T23:39:51.676 [DEBUG] [Thread-124705] [transport.py] [_log()] kex follows: False
2025-11-03T23:39:51.676 [DEBUG] [Thread-124705] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:39:51.676 [DEBUG] [Thread-124705] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:39:51.677 [DEBUG] [Thread-124705] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:39:51.677 [DEBUG] [Thread-124705] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:39:51.677 [DEBUG] [Thread-124705] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:39:51.678 [DEBUG] [Thread-124705] [transport.py] [_log()] Compression: none
2025-11-03T23:39:51.678 [DEBUG] [Thread-124705] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:39:51.700 [DEBUG] [Thread-124705] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:39:51.701 [DEBUG] [Thread-124705] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:39:51.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:39:51.702 [DEBUG] [Thread-124705] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:39:51.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:39:51.746 [DEBUG] [Thread-124705] [transport.py] [_log()] userauth is OK
2025-11-03T23:39:51.746 [DEBUG] [Thread-124705] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:39:51.746 [DEBUG] [Thread-124705] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:39:51.747 [DEBUG] [Thread-124705] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:39:51.747 [DEBUG] [Thread-124705] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:39:51.779 [INFO] [Thread-124705] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:39:51.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:39:52.410 [DEBUG] [Thread-124705] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:39:52.410 [DEBUG] [Thread-124705] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:39:52.410 [DEBUG] [Thread-124705] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:39:52.451 [DEBUG] [Thread-124705] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:39:52.451 [DEBUG] [Thread-124705] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:39:52.453 [DEBUG] [Thread-124705] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:39:52.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:39:52.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:39:52.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:39:52.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:39:52.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:39:52.471 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:39:52.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:39:52.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:39:52.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:39:52.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.902182 -999.00  +19.00  17.19     17   -6.10 1 1 1 1 1     0    0 24.72 -20.07 ZNESW 18.3 17.2 301.2 20.3 19.0 -25.0 18.9 -24.1 18.6 -23.8 19.0 -24.7
2025-11-03T23:39:52.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:39:52.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:39:52.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.902182
2025-11-03T23:39:52.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:39:52.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:39:52.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:39:52.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:39:52.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:39:52.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:39:25', tmtdew=29.49, humidity=12.38, cloud=0.0, wind=18.03, temperature=18.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:39:08.525', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.008250000000000313, 0.06125000000000114, -0.0010000000000012221, -0.04800000000000004, -0.025749999999998607, -0.3819999999999997, -0.044749999999998735, 0.09450000000000003, 0.0070000000000014495, 0.09975000000000023, 0.054499999999999105, 0.058499999999998664, -0.010749999999999815, -0.6110000000000007, -0.3680000000000003, -0.0017500000000012506, 0.08949999999999925, 0.18249999999999922, 0.12324999999999875, 0.134999999999998, 0.10874999999999879, -1.520249999999999, 0.04875000000000007, 0.11650000000000027, 0.19350000000000023, 0.1927500000000002, 0.24050000000000082, 0.21199999999999974, 0.14500000000000135, -0.24099999999999966, 0.05450000000000088, 0.10374999999999801], zp_timestamp='2025-11-03T21:38:00')
2025-11-03T23:39:52.472 [DEBUG] [Thread-124705] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:39:52.549 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:39:52.561 [DEBUG] [Thread-124708] [transport.py] [_log()] starting thread (client mode): 0xed18a30
2025-11-03T23:39:52.562 [DEBUG] [Thread-124708] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:39:52.581 [DEBUG] [Thread-124708] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:39:52.581 [INFO] [Thread-124708] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:39:52.589 [DEBUG] [Thread-124708] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:39:52.589 [DEBUG] [Thread-124708] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:39:52.589 [DEBUG] [Thread-124708] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:39:52.589 [DEBUG] [Thread-124708] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:39:52.589 [DEBUG] [Thread-124708] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:39:52.589 [DEBUG] [Thread-124708] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:39:52.589 [DEBUG] [Thread-124708] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:39:52.589 [DEBUG] [Thread-124708] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:39:52.589 [DEBUG] [Thread-124708] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:39:52.589 [DEBUG] [Thread-124708] [transport.py] [_log()] client lang: <none>
2025-11-03T23:39:52.589 [DEBUG] [Thread-124708] [transport.py] [_log()] server lang: <none>
2025-11-03T23:39:52.589 [DEBUG] [Thread-124708] [transport.py] [_log()] kex follows: False
2025-11-03T23:39:52.589 [DEBUG] [Thread-124708] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:39:52.589 [DEBUG] [Thread-124708] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:39:52.589 [DEBUG] [Thread-124708] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:39:52.590 [DEBUG] [Thread-124708] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:39:52.590 [DEBUG] [Thread-124708] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:39:52.590 [DEBUG] [Thread-124708] [transport.py] [_log()] Compression: none
2025-11-03T23:39:52.590 [DEBUG] [Thread-124708] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:39:52.648 [DEBUG] [Thread-124708] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:39:52.648 [DEBUG] [Thread-124708] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:39:52.648 [DEBUG] [Thread-124708] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:39:52.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:39:52.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:39:52.705 [DEBUG] [Thread-124708] [transport.py] [_log()] userauth is OK
2025-11-03T23:39:52.706 [DEBUG] [Thread-124708] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:39:52.706 [DEBUG] [Thread-124708] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:39:52.706 [DEBUG] [Thread-124708] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:39:52.706 [DEBUG] [Thread-124708] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:39:52.709 [DEBUG] [Thread-124710 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:39:52.719 [INFO] [Thread-124708] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:39:52.719 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:39:52.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:39:53.542 [DEBUG] [Thread-124708] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:39:53.542 [DEBUG] [Thread-124708] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:39:53.593 [DEBUG] [Thread-124708] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:39:53.593 [DEBUG] [Thread-124708] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:39:53.605 [DEBUG] [Thread-124708] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:39:53.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:39:53.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:39:53.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:39:53.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:39:53.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:39:53.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:39:53.649 [DEBUG] [Thread-124708] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:40:07.750 [DEBUG] [Thread-124711 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:40:08.946 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:40:08.947 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:40:22.788 [DEBUG] [Thread-124712 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:40:23.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:40:23.671 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:40:23.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:40:24.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 39, 59), 29.45, 12.41, 0.0, 17.79, 18.63, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:40:24.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:39:59
2025-11-03T23:40:24.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:40:24.852 [DEBUG] [Thread-124713] [transport.py] [_log()] starting thread (client mode): 0x117e8ee0
2025-11-03T23:40:24.852 [DEBUG] [Thread-124713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:40:24.869 [DEBUG] [Thread-124713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:40:24.870 [INFO] [Thread-124713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:40:24.873 [DEBUG] [Thread-124713] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:40:24.873 [DEBUG] [Thread-124713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:40:24.873 [DEBUG] [Thread-124713] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:40:24.873 [DEBUG] [Thread-124713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:40:24.873 [DEBUG] [Thread-124713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:40:24.873 [DEBUG] [Thread-124713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:40:24.873 [DEBUG] [Thread-124713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:40:24.873 [DEBUG] [Thread-124713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:40:24.873 [DEBUG] [Thread-124713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:40:24.873 [DEBUG] [Thread-124713] [transport.py] [_log()] client lang: <none>
2025-11-03T23:40:24.873 [DEBUG] [Thread-124713] [transport.py] [_log()] server lang: <none>
2025-11-03T23:40:24.873 [DEBUG] [Thread-124713] [transport.py] [_log()] kex follows: False
2025-11-03T23:40:24.873 [DEBUG] [Thread-124713] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:40:24.873 [DEBUG] [Thread-124713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:40:24.873 [DEBUG] [Thread-124713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:40:24.873 [DEBUG] [Thread-124713] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:40:24.873 [DEBUG] [Thread-124713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:40:24.875 [DEBUG] [Thread-124713] [transport.py] [_log()] Compression: none
2025-11-03T23:40:24.875 [DEBUG] [Thread-124713] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:40:24.892 [DEBUG] [Thread-124713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:40:24.893 [DEBUG] [Thread-124713] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:40:24.893 [DEBUG] [Thread-124713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:40:24.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:40:24.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:40:24.895 [DEBUG] [Thread-124713] [transport.py] [_log()] userauth is OK
2025-11-03T23:40:24.895 [DEBUG] [Thread-124713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:40:24.896 [DEBUG] [Thread-124713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:40:24.896 [DEBUG] [Thread-124713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:40:24.896 [DEBUG] [Thread-124713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:40:24.913 [INFO] [Thread-124713] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:40:24.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:40:25.558 [DEBUG] [Thread-124713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:40:25.558 [DEBUG] [Thread-124713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:40:25.558 [DEBUG] [Thread-124713] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:40:25.599 [DEBUG] [Thread-124713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:40:25.599 [DEBUG] [Thread-124713] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:40:25.602 [DEBUG] [Thread-124713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:40:25.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:40:25.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:40:25.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:40:25.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:40:25.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:40:25.620 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:40:25.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:40:25.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:40:25.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:40:25.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.902530 -999.00  +19.00  20.52     17   -6.10 1 1 1 1 1     0    0 24.74 -18.52 ZNESW 20.5 20.5 302.0 23.3 19.0 -25.1 18.9 -24.0 18.7 -23.9 19.0 -24.7
2025-11-03T23:40:25.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:40:25.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:40:25.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.902530
2025-11-03T23:40:25.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:40:25.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:40:25.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:40:25.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:40:25.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:40:25.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:39:59', tmtdew=29.45, humidity=12.41, cloud=0.0, wind=17.79, temperature=18.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:39:38.592', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.008250000000000313, 0.06125000000000114, -0.0010000000000012221, -0.04800000000000004, -0.025749999999998607, -0.3819999999999997, -0.044749999999998735, 0.09450000000000003, 0.0070000000000014495, 0.09975000000000023, 0.054499999999999105, 0.058499999999998664, -0.010749999999999815, -0.6110000000000007, -0.3680000000000003, -0.0017500000000012506, 0.08949999999999925, 0.18249999999999922, 0.12324999999999875, 0.134999999999998, 0.10874999999999879, -1.520249999999999, 0.04875000000000007, 0.11650000000000027, 0.19350000000000023, 0.1927500000000002, 0.24050000000000082, 0.21199999999999974, 0.14500000000000135, -0.24099999999999966, 0.05450000000000088, 0.10374999999999801], zp_timestamp='2025-11-03T21:38:00')
2025-11-03T23:40:25.621 [DEBUG] [Thread-124713] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:40:25.692 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:40:25.704 [DEBUG] [Thread-124716] [transport.py] [_log()] starting thread (client mode): 0x117ebb50
2025-11-03T23:40:25.704 [DEBUG] [Thread-124716] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:40:25.719 [DEBUG] [Thread-124716] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:40:25.719 [INFO] [Thread-124716] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:40:25.727 [DEBUG] [Thread-124716] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:40:25.727 [DEBUG] [Thread-124716] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:40:25.727 [DEBUG] [Thread-124716] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:40:25.727 [DEBUG] [Thread-124716] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:40:25.728 [DEBUG] [Thread-124716] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:40:25.728 [DEBUG] [Thread-124716] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:40:25.728 [DEBUG] [Thread-124716] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:40:25.728 [DEBUG] [Thread-124716] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:40:25.728 [DEBUG] [Thread-124716] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:40:25.728 [DEBUG] [Thread-124716] [transport.py] [_log()] client lang: <none>
2025-11-03T23:40:25.728 [DEBUG] [Thread-124716] [transport.py] [_log()] server lang: <none>
2025-11-03T23:40:25.728 [DEBUG] [Thread-124716] [transport.py] [_log()] kex follows: False
2025-11-03T23:40:25.728 [DEBUG] [Thread-124716] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:40:25.728 [DEBUG] [Thread-124716] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:40:25.728 [DEBUG] [Thread-124716] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:40:25.728 [DEBUG] [Thread-124716] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:40:25.728 [DEBUG] [Thread-124716] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:40:25.728 [DEBUG] [Thread-124716] [transport.py] [_log()] Compression: none
2025-11-03T23:40:25.728 [DEBUG] [Thread-124716] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:40:25.787 [DEBUG] [Thread-124716] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:40:25.787 [DEBUG] [Thread-124716] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:40:25.787 [DEBUG] [Thread-124716] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:40:25.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:40:25.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:40:25.845 [DEBUG] [Thread-124716] [transport.py] [_log()] userauth is OK
2025-11-03T23:40:25.845 [DEBUG] [Thread-124716] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:40:25.845 [DEBUG] [Thread-124716] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:40:25.845 [DEBUG] [Thread-124716] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:40:25.845 [DEBUG] [Thread-124716] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:40:25.860 [INFO] [Thread-124716] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:40:25.860 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:40:25.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:40:26.685 [DEBUG] [Thread-124716] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:40:26.685 [DEBUG] [Thread-124716] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:40:26.734 [DEBUG] [Thread-124716] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:40:26.735 [DEBUG] [Thread-124716] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:40:26.746 [DEBUG] [Thread-124716] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:40:26.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:40:26.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:40:26.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:40:26.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:40:26.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:40:26.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:40:26.788 [DEBUG] [Thread-124716] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:40:27.816 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:40:37.827 [DEBUG] [Thread-124718 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:40:39.132 [DEBUG] [Thread-124719 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:40:52.860 [DEBUG] [Thread-124720 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:40:56.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:40:56.797 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:40:56.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:40:57.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 40, 31), 29.44, 12.43, 0.0, 18.26, 18.66, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:40:57.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:40:31
2025-11-03T23:40:57.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:40:57.896 [DEBUG] [Thread-124721] [transport.py] [_log()] starting thread (client mode): 0xed1b340
2025-11-03T23:40:57.896 [DEBUG] [Thread-124721] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:40:57.910 [DEBUG] [Thread-124721] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:40:57.911 [INFO] [Thread-124721] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:40:57.913 [DEBUG] [Thread-124721] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:40:57.914 [DEBUG] [Thread-124721] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:40:57.914 [DEBUG] [Thread-124721] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:40:57.914 [DEBUG] [Thread-124721] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:40:57.914 [DEBUG] [Thread-124721] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:40:57.914 [DEBUG] [Thread-124721] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:40:57.914 [DEBUG] [Thread-124721] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:40:57.914 [DEBUG] [Thread-124721] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:40:57.914 [DEBUG] [Thread-124721] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:40:57.914 [DEBUG] [Thread-124721] [transport.py] [_log()] client lang: <none>
2025-11-03T23:40:57.914 [DEBUG] [Thread-124721] [transport.py] [_log()] server lang: <none>
2025-11-03T23:40:57.914 [DEBUG] [Thread-124721] [transport.py] [_log()] kex follows: False
2025-11-03T23:40:57.914 [DEBUG] [Thread-124721] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:40:57.914 [DEBUG] [Thread-124721] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:40:57.914 [DEBUG] [Thread-124721] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:40:57.914 [DEBUG] [Thread-124721] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:40:57.914 [DEBUG] [Thread-124721] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:40:57.914 [DEBUG] [Thread-124721] [transport.py] [_log()] Compression: none
2025-11-03T23:40:57.914 [DEBUG] [Thread-124721] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:40:57.931 [DEBUG] [Thread-124721] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:40:57.931 [DEBUG] [Thread-124721] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:40:57.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:40:57.932 [DEBUG] [Thread-124721] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:40:57.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:40:57.934 [DEBUG] [Thread-124721] [transport.py] [_log()] userauth is OK
2025-11-03T23:40:57.934 [DEBUG] [Thread-124721] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:40:57.934 [DEBUG] [Thread-124721] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:40:57.934 [DEBUG] [Thread-124721] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:40:57.935 [DEBUG] [Thread-124721] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:40:57.952 [INFO] [Thread-124721] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:40:57.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:40:58.618 [DEBUG] [Thread-124721] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:40:58.618 [DEBUG] [Thread-124721] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:40:58.618 [DEBUG] [Thread-124721] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:40:58.658 [DEBUG] [Thread-124721] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:40:58.658 [DEBUG] [Thread-124721] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:40:58.661 [DEBUG] [Thread-124721] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:40:58.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:40:58.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:40:58.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:40:58.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:40:58.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:40:58.688 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:40:58.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:40:58.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:40:58.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:40:58.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.903224 -999.00  +19.00  16.07     17   -6.10 1 1 1 1 1     0    0 25.05 -14.74 ZNESW 19.5 16.1 302.6 19.8 19.0 -25.2 18.9 -24.1 18.7 -23.9 18.9 -24.7
2025-11-03T23:40:58.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:40:58.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:40:58.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.903224
2025-11-03T23:40:58.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:40:58.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:40:58.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:40:58.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:40:58.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:40:58.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:40:31', tmtdew=29.44, humidity=12.43, cloud=0.0, wind=18.26, temperature=18.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:40:38.554', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.008250000000000313, 0.06125000000000114, -0.0010000000000012221, -0.04800000000000004, -0.025749999999998607, -0.3819999999999997, -0.044749999999998735, 0.09450000000000003, 0.0070000000000014495, 0.09975000000000023, 0.054499999999999105, 0.058499999999998664, -0.010749999999999815, -0.6110000000000007, -0.3680000000000003, -0.0017500000000012506, 0.08949999999999925, 0.18249999999999922, 0.12324999999999875, 0.134999999999998, 0.10874999999999879, -1.520249999999999, 0.04875000000000007, 0.11650000000000027, 0.19350000000000023, 0.1927500000000002, 0.24050000000000082, 0.21199999999999974, 0.14500000000000135, -0.24099999999999966, 0.05450000000000088, 0.10374999999999801], zp_timestamp='2025-11-03T21:38:00')
2025-11-03T23:40:58.690 [DEBUG] [Thread-124721] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:40:58.761 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:40:58.781 [DEBUG] [Thread-124724] [transport.py] [_log()] starting thread (client mode): 0xed41c60
2025-11-03T23:40:58.781 [DEBUG] [Thread-124724] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:40:58.804 [DEBUG] [Thread-124724] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:40:58.804 [INFO] [Thread-124724] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:40:58.817 [DEBUG] [Thread-124724] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:40:58.817 [DEBUG] [Thread-124724] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:40:58.817 [DEBUG] [Thread-124724] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:40:58.817 [DEBUG] [Thread-124724] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:40:58.817 [DEBUG] [Thread-124724] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:40:58.817 [DEBUG] [Thread-124724] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:40:58.817 [DEBUG] [Thread-124724] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:40:58.817 [DEBUG] [Thread-124724] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:40:58.817 [DEBUG] [Thread-124724] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:40:58.817 [DEBUG] [Thread-124724] [transport.py] [_log()] client lang: <none>
2025-11-03T23:40:58.817 [DEBUG] [Thread-124724] [transport.py] [_log()] server lang: <none>
2025-11-03T23:40:58.817 [DEBUG] [Thread-124724] [transport.py] [_log()] kex follows: False
2025-11-03T23:40:58.817 [DEBUG] [Thread-124724] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:40:58.817 [DEBUG] [Thread-124724] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:40:58.817 [DEBUG] [Thread-124724] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:40:58.817 [DEBUG] [Thread-124724] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:40:58.817 [DEBUG] [Thread-124724] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:40:58.817 [DEBUG] [Thread-124724] [transport.py] [_log()] Compression: none
2025-11-03T23:40:58.817 [DEBUG] [Thread-124724] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:40:58.880 [DEBUG] [Thread-124724] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:40:58.880 [DEBUG] [Thread-124724] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:40:58.880 [DEBUG] [Thread-124724] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:40:58.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:40:58.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:40:58.936 [DEBUG] [Thread-124724] [transport.py] [_log()] userauth is OK
2025-11-03T23:40:58.936 [DEBUG] [Thread-124724] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:40:58.936 [DEBUG] [Thread-124724] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:40:58.936 [DEBUG] [Thread-124724] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:40:58.936 [DEBUG] [Thread-124724] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:40:58.952 [INFO] [Thread-124724] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:40:58.952 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:40:58.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:40:59.856 [DEBUG] [Thread-124724] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:40:59.856 [DEBUG] [Thread-124724] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:40:59.905 [DEBUG] [Thread-124724] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:40:59.905 [DEBUG] [Thread-124724] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:40:59.916 [DEBUG] [Thread-124724] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:40:59.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:40:59.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:40:59.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:40:59.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:40:59.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:40:59.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:40:59.958 [DEBUG] [Thread-124724] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:41:07.889 [DEBUG] [Thread-124726 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:41:09.153 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:41:09.154 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:41:22.929 [DEBUG] [Thread-124727 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:41:29.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:41:29.959 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:41:29.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:41:30.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 41, 7), 29.46, 12.41, 0.0, 18.37, 18.66, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:41:30.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:41:07
2025-11-03T23:41:30.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:41:31.000 [DEBUG] [Thread-124728] [transport.py] [_log()] starting thread (client mode): 0xed405e0
2025-11-03T23:41:31.000 [DEBUG] [Thread-124728] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:41:31.020 [DEBUG] [Thread-124728] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:41:31.020 [INFO] [Thread-124728] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:41:31.022 [DEBUG] [Thread-124728] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:41:31.022 [DEBUG] [Thread-124728] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:41:31.022 [DEBUG] [Thread-124728] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:41:31.022 [DEBUG] [Thread-124728] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:41:31.022 [DEBUG] [Thread-124728] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:41:31.022 [DEBUG] [Thread-124728] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:41:31.022 [DEBUG] [Thread-124728] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:41:31.022 [DEBUG] [Thread-124728] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:41:31.022 [DEBUG] [Thread-124728] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:41:31.022 [DEBUG] [Thread-124728] [transport.py] [_log()] client lang: <none>
2025-11-03T23:41:31.022 [DEBUG] [Thread-124728] [transport.py] [_log()] server lang: <none>
2025-11-03T23:41:31.022 [DEBUG] [Thread-124728] [transport.py] [_log()] kex follows: False
2025-11-03T23:41:31.022 [DEBUG] [Thread-124728] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:41:31.022 [DEBUG] [Thread-124728] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:41:31.022 [DEBUG] [Thread-124728] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:41:31.022 [DEBUG] [Thread-124728] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:41:31.022 [DEBUG] [Thread-124728] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:41:31.022 [DEBUG] [Thread-124728] [transport.py] [_log()] Compression: none
2025-11-03T23:41:31.022 [DEBUG] [Thread-124728] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:41:31.041 [DEBUG] [Thread-124728] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:41:31.043 [DEBUG] [Thread-124728] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:41:31.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:41:31.044 [DEBUG] [Thread-124728] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:41:31.045 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:41:31.046 [DEBUG] [Thread-124728] [transport.py] [_log()] userauth is OK
2025-11-03T23:41:31.046 [DEBUG] [Thread-124728] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:41:31.046 [DEBUG] [Thread-124728] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:41:31.047 [DEBUG] [Thread-124728] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:41:31.047 [DEBUG] [Thread-124728] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:41:31.064 [INFO] [Thread-124728] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:41:31.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:41:31.674 [DEBUG] [Thread-124728] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:41:31.675 [DEBUG] [Thread-124728] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:41:31.675 [DEBUG] [Thread-124728] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:41:31.714 [DEBUG] [Thread-124728] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:41:31.715 [DEBUG] [Thread-124728] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:41:31.717 [DEBUG] [Thread-124728] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:41:31.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:41:31.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:41:31.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:41:31.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:41:31.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:41:31.740 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:41:31.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:41:31.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:41:31.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:41:31.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.903571 -999.00  +19.10  16.64     17   -6.10 1 1 1 1 1     0    0 24.91 -13.01 ZNESW 15.1 16.6 306.8 21.0 19.0 -25.2 18.9 -24.1 18.7 -23.4 19.0 -24.8
2025-11-03T23:41:31.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:41:31.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:41:31.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.903571
2025-11-03T23:41:31.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:41:31.746 [DEBUG] [Thread-124728] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:41:31.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:41:31.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:41:31.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:41:31.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:41:31.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:41:07', tmtdew=29.46, humidity=12.41, cloud=0.0, wind=18.37, temperature=18.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:41:08.534', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.008250000000000313, 0.06125000000000114, -0.0010000000000012221, -0.04800000000000004, -0.025749999999998607, -0.3819999999999997, -0.044749999999998735, 0.09450000000000003, 0.0070000000000014495, 0.09975000000000023, 0.054499999999999105, 0.058499999999998664, -0.010749999999999815, -0.6110000000000007, -0.3680000000000003, -0.0017500000000012506, 0.08949999999999925, 0.18249999999999922, 0.12324999999999875, 0.134999999999998, 0.10874999999999879, -1.520249999999999, 0.04875000000000007, 0.11650000000000027, 0.19350000000000023, 0.1927500000000002, 0.24050000000000082, 0.21199999999999974, 0.14500000000000135, -0.24099999999999966, 0.05450000000000088, 0.10374999999999801], zp_timestamp='2025-11-03T21:38:00')
2025-11-03T23:41:31.845 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:41:31.856 [DEBUG] [Thread-124731] [transport.py] [_log()] starting thread (client mode): 0xed40a00
2025-11-03T23:41:31.856 [DEBUG] [Thread-124731] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:41:31.871 [DEBUG] [Thread-124731] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:41:31.871 [INFO] [Thread-124731] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:41:31.879 [DEBUG] [Thread-124731] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:41:31.879 [DEBUG] [Thread-124731] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:41:31.879 [DEBUG] [Thread-124731] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:41:31.879 [DEBUG] [Thread-124731] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:41:31.879 [DEBUG] [Thread-124731] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:41:31.879 [DEBUG] [Thread-124731] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:41:31.879 [DEBUG] [Thread-124731] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:41:31.879 [DEBUG] [Thread-124731] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:41:31.879 [DEBUG] [Thread-124731] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:41:31.880 [DEBUG] [Thread-124731] [transport.py] [_log()] client lang: <none>
2025-11-03T23:41:31.880 [DEBUG] [Thread-124731] [transport.py] [_log()] server lang: <none>
2025-11-03T23:41:31.880 [DEBUG] [Thread-124731] [transport.py] [_log()] kex follows: False
2025-11-03T23:41:31.880 [DEBUG] [Thread-124731] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:41:31.880 [DEBUG] [Thread-124731] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:41:31.880 [DEBUG] [Thread-124731] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:41:31.880 [DEBUG] [Thread-124731] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:41:31.880 [DEBUG] [Thread-124731] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:41:31.880 [DEBUG] [Thread-124731] [transport.py] [_log()] Compression: none
2025-11-03T23:41:31.880 [DEBUG] [Thread-124731] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:41:31.941 [DEBUG] [Thread-124731] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:41:31.942 [DEBUG] [Thread-124731] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:41:31.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:41:31.943 [DEBUG] [Thread-124731] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:41:31.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:41:32.001 [DEBUG] [Thread-124731] [transport.py] [_log()] userauth is OK
2025-11-03T23:41:32.001 [DEBUG] [Thread-124731] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:41:32.001 [DEBUG] [Thread-124731] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:41:32.002 [DEBUG] [Thread-124731] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:41:32.002 [DEBUG] [Thread-124731] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:41:32.020 [INFO] [Thread-124731] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:41:32.021 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:41:32.021 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:41:32.868 [DEBUG] [Thread-124731] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:41:32.868 [DEBUG] [Thread-124731] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:41:32.916 [DEBUG] [Thread-124731] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:41:32.917 [DEBUG] [Thread-124731] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:41:32.927 [DEBUG] [Thread-124731] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:41:32.937 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:41:32.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:41:32.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:41:32.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:41:32.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:41:32.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:41:32.979 [DEBUG] [Thread-124731] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:41:37.958 [DEBUG] [Thread-124733 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:41:39.517 [DEBUG] [Thread-124734 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:41:53.000 [DEBUG] [Thread-124735 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:42:02.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:42:02.999 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:42:03.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:42:03.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 41, 42), 29.49, 12.43, 0.0, 18.03, 18.7, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:42:03.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:41:42
2025-11-03T23:42:03.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:42:03.982 [DEBUG] [Thread-124736] [transport.py] [_log()] starting thread (client mode): 0xed192a0
2025-11-03T23:42:03.982 [DEBUG] [Thread-124736] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:42:03.993 [DEBUG] [Thread-124736] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:42:03.993 [INFO] [Thread-124736] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:42:03.994 [DEBUG] [Thread-124736] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:42:03.994 [DEBUG] [Thread-124736] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:42:03.994 [DEBUG] [Thread-124736] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:42:03.994 [DEBUG] [Thread-124736] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:42:03.994 [DEBUG] [Thread-124736] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:42:03.994 [DEBUG] [Thread-124736] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:42:03.994 [DEBUG] [Thread-124736] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:42:03.994 [DEBUG] [Thread-124736] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:42:03.994 [DEBUG] [Thread-124736] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:42:03.994 [DEBUG] [Thread-124736] [transport.py] [_log()] client lang: <none>
2025-11-03T23:42:03.994 [DEBUG] [Thread-124736] [transport.py] [_log()] server lang: <none>
2025-11-03T23:42:03.994 [DEBUG] [Thread-124736] [transport.py] [_log()] kex follows: False
2025-11-03T23:42:03.994 [DEBUG] [Thread-124736] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:42:03.994 [DEBUG] [Thread-124736] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:42:03.994 [DEBUG] [Thread-124736] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:42:03.994 [DEBUG] [Thread-124736] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:42:03.994 [DEBUG] [Thread-124736] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:42:03.994 [DEBUG] [Thread-124736] [transport.py] [_log()] Compression: none
2025-11-03T23:42:03.994 [DEBUG] [Thread-124736] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:42:04.003 [DEBUG] [Thread-124736] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:42:04.003 [DEBUG] [Thread-124736] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:42:04.003 [DEBUG] [Thread-124736] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:42:04.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:42:04.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:42:04.004 [DEBUG] [Thread-124736] [transport.py] [_log()] userauth is OK
2025-11-03T23:42:04.004 [DEBUG] [Thread-124736] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:42:04.004 [DEBUG] [Thread-124736] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:42:04.004 [DEBUG] [Thread-124736] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:42:04.004 [DEBUG] [Thread-124736] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:42:04.014 [INFO] [Thread-124736] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:42:04.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:42:04.654 [DEBUG] [Thread-124736] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:42:04.654 [DEBUG] [Thread-124736] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:42:04.654 [DEBUG] [Thread-124736] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:42:04.696 [DEBUG] [Thread-124736] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:42:04.696 [DEBUG] [Thread-124736] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:42:04.698 [DEBUG] [Thread-124736] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:42:04.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:42:04.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:42:04.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:42:04.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:42:04.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:42:04.713 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:42:04.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:42:04.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:42:04.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:42:04.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.903919 -999.00  +19.00  17.28     17   -6.10 1 1 1 1 1     0    0 24.95 -14.01 ZNESW 16.9 17.3 300.0 21.1 19.0 -25.1 18.9 -24.1 18.7 -23.6 19.0 -24.8
2025-11-03T23:42:04.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:42:04.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:42:04.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.903919
2025-11-03T23:42:04.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:42:04.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:42:04.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:42:04.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:42:04.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:42:04.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:41:42', tmtdew=29.49, humidity=12.43, cloud=0.0, wind=18.03, temperature=18.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:41:38.602', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.008250000000000313, 0.06125000000000114, -0.0010000000000012221, -0.04800000000000004, -0.025749999999998607, -0.3819999999999997, -0.044749999999998735, 0.09450000000000003, 0.0070000000000014495, 0.09975000000000023, 0.054499999999999105, 0.058499999999998664, -0.010749999999999815, -0.6110000000000007, -0.3680000000000003, -0.0017500000000012506, 0.08949999999999925, 0.18249999999999922, 0.12324999999999875, 0.134999999999998, 0.10874999999999879, -1.520249999999999, 0.04875000000000007, 0.11650000000000027, 0.19350000000000023, 0.1927500000000002, 0.24050000000000082, 0.21199999999999974, 0.14500000000000135, -0.24099999999999966, 0.05450000000000088, 0.10374999999999801], zp_timestamp='2025-11-03T21:38:00')
2025-11-03T23:42:04.714 [DEBUG] [Thread-124736] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:42:04.789 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:42:04.801 [DEBUG] [Thread-124739] [transport.py] [_log()] starting thread (client mode): 0x11761de0
2025-11-03T23:42:04.801 [DEBUG] [Thread-124739] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:42:04.816 [DEBUG] [Thread-124739] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:42:04.816 [INFO] [Thread-124739] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:42:04.824 [DEBUG] [Thread-124739] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:42:04.824 [DEBUG] [Thread-124739] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:42:04.824 [DEBUG] [Thread-124739] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:42:04.824 [DEBUG] [Thread-124739] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:42:04.824 [DEBUG] [Thread-124739] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:42:04.824 [DEBUG] [Thread-124739] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:42:04.824 [DEBUG] [Thread-124739] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:42:04.824 [DEBUG] [Thread-124739] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:42:04.824 [DEBUG] [Thread-124739] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:42:04.824 [DEBUG] [Thread-124739] [transport.py] [_log()] client lang: <none>
2025-11-03T23:42:04.824 [DEBUG] [Thread-124739] [transport.py] [_log()] server lang: <none>
2025-11-03T23:42:04.824 [DEBUG] [Thread-124739] [transport.py] [_log()] kex follows: False
2025-11-03T23:42:04.824 [DEBUG] [Thread-124739] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:42:04.824 [DEBUG] [Thread-124739] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:42:04.824 [DEBUG] [Thread-124739] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:42:04.824 [DEBUG] [Thread-124739] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:42:04.824 [DEBUG] [Thread-124739] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:42:04.824 [DEBUG] [Thread-124739] [transport.py] [_log()] Compression: none
2025-11-03T23:42:04.824 [DEBUG] [Thread-124739] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:42:04.889 [DEBUG] [Thread-124739] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:42:04.889 [DEBUG] [Thread-124739] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:42:04.889 [DEBUG] [Thread-124739] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:42:04.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:42:04.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:42:04.948 [DEBUG] [Thread-124739] [transport.py] [_log()] userauth is OK
2025-11-03T23:42:04.948 [DEBUG] [Thread-124739] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:42:04.949 [DEBUG] [Thread-124739] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:42:04.949 [DEBUG] [Thread-124739] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:42:04.949 [DEBUG] [Thread-124739] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:42:04.963 [INFO] [Thread-124739] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:42:04.963 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:42:04.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:42:05.883 [DEBUG] [Thread-124739] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:42:05.883 [DEBUG] [Thread-124739] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:42:05.933 [DEBUG] [Thread-124739] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:42:05.933 [DEBUG] [Thread-124739] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:42:05.944 [DEBUG] [Thread-124739] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:42:05.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:42:05.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:42:05.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:42:05.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:42:05.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:42:05.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:42:05.989 [DEBUG] [Thread-124739] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:42:08.039 [DEBUG] [Thread-124741 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:42:09.362 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:42:09.364 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:42:23.156 [DEBUG] [Thread-124742 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:42:36.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:42:36.009 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:42:36.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:42:36.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 42, 15), 29.46, 12.46, 0.0, 18.1, 18.73, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:42:36.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:42:15
2025-11-03T23:42:36.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:42:37.067 [DEBUG] [Thread-124743] [transport.py] [_log()] starting thread (client mode): 0xed43b20
2025-11-03T23:42:37.067 [DEBUG] [Thread-124743] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:42:37.079 [DEBUG] [Thread-124743] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:42:37.080 [INFO] [Thread-124743] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:42:37.089 [DEBUG] [Thread-124743] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:42:37.089 [DEBUG] [Thread-124743] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:42:37.089 [DEBUG] [Thread-124743] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:42:37.089 [DEBUG] [Thread-124743] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:42:37.089 [DEBUG] [Thread-124743] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:42:37.089 [DEBUG] [Thread-124743] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:42:37.089 [DEBUG] [Thread-124743] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:42:37.089 [DEBUG] [Thread-124743] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:42:37.089 [DEBUG] [Thread-124743] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:42:37.089 [DEBUG] [Thread-124743] [transport.py] [_log()] client lang: <none>
2025-11-03T23:42:37.089 [DEBUG] [Thread-124743] [transport.py] [_log()] server lang: <none>
2025-11-03T23:42:37.089 [DEBUG] [Thread-124743] [transport.py] [_log()] kex follows: False
2025-11-03T23:42:37.089 [DEBUG] [Thread-124743] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:42:37.089 [DEBUG] [Thread-124743] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:42:37.089 [DEBUG] [Thread-124743] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:42:37.089 [DEBUG] [Thread-124743] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:42:37.089 [DEBUG] [Thread-124743] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:42:37.089 [DEBUG] [Thread-124743] [transport.py] [_log()] Compression: none
2025-11-03T23:42:37.089 [DEBUG] [Thread-124743] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:42:37.099 [DEBUG] [Thread-124743] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:42:37.100 [DEBUG] [Thread-124743] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:42:37.100 [DEBUG] [Thread-124743] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:42:37.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:42:37.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:42:37.104 [DEBUG] [Thread-124743] [transport.py] [_log()] userauth is OK
2025-11-03T23:42:37.104 [DEBUG] [Thread-124743] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:42:37.104 [DEBUG] [Thread-124743] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:42:37.104 [DEBUG] [Thread-124743] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:42:37.104 [DEBUG] [Thread-124743] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:42:37.123 [INFO] [Thread-124743] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:42:37.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:42:37.686 [DEBUG] [Thread-124743] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:42:37.686 [DEBUG] [Thread-124743] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:42:37.686 [DEBUG] [Thread-124743] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:42:37.727 [DEBUG] [Thread-124743] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:42:37.727 [DEBUG] [Thread-124743] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:42:37.729 [DEBUG] [Thread-124743] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:42:37.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:42:37.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:42:37.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:42:37.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:42:37.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:42:37.750 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:42:37.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:42:37.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:42:37.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:42:37.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.904266 -999.00  +19.00  17.36     17   -6.10 1 1 1 1 1     0    0 24.58 -12.92 ZNESW 17.8 17.4 307.8 20.7 19.0 -25.3 18.9 -24.2 18.7 -23.8 19.0 -24.9
2025-11-03T23:42:37.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:42:37.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:42:37.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.904266
2025-11-03T23:42:37.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:42:37.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:42:37.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:42:37.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:42:37.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:42:37.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:42:15', tmtdew=29.46, humidity=12.46, cloud=0.0, wind=18.1, temperature=18.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:42:08.582', atlas_cloud=1, atlas_rain=1, zp_data=[-0.028249999999999886, -0.02275000000000027, 0.06325000000000003, 0.037499999999999645, -0.07900000000000063, -0.04174999999999862, -0.30900000000000105, -0.2647499999999994, 0.12199999999999989, -0.026999999999999247, 0.03974999999999973, 0.03200000000000003, 0.018000000000000682, 0.06475000000000009, -0.9235000000000007, -0.3230000000000004, 0.021250000000000213, 0.07350000000000101, 0.12399999999999878, 0.053749999999999076, 0.18299999999999805, 0.045249999999999346, -0.7547499999999996, -0.006249999999999645, 0.027999999999998693, 0.15750000000000064, 0.16474999999999973, 0.1875, 0.22799999999999976, 0.1509999999999998, -0.3089999999999993, 0.045000000000001705, 0.08674999999999855], zp_timestamp='2025-11-03T21:41:00')
2025-11-03T23:42:37.752 [DEBUG] [Thread-124743] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:42:37.824 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:42:37.838 [DEBUG] [Thread-124746] [transport.py] [_log()] starting thread (client mode): 0xed421d0
2025-11-03T23:42:37.838 [DEBUG] [Thread-124746] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:42:37.853 [DEBUG] [Thread-124746] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:42:37.854 [INFO] [Thread-124746] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:42:37.861 [DEBUG] [Thread-124746] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:42:37.861 [DEBUG] [Thread-124746] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:42:37.861 [DEBUG] [Thread-124746] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:42:37.861 [DEBUG] [Thread-124746] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:42:37.861 [DEBUG] [Thread-124746] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:42:37.861 [DEBUG] [Thread-124746] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:42:37.861 [DEBUG] [Thread-124746] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:42:37.861 [DEBUG] [Thread-124746] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:42:37.861 [DEBUG] [Thread-124746] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:42:37.861 [DEBUG] [Thread-124746] [transport.py] [_log()] client lang: <none>
2025-11-03T23:42:37.861 [DEBUG] [Thread-124746] [transport.py] [_log()] server lang: <none>
2025-11-03T23:42:37.861 [DEBUG] [Thread-124746] [transport.py] [_log()] kex follows: False
2025-11-03T23:42:37.861 [DEBUG] [Thread-124746] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:42:37.861 [DEBUG] [Thread-124746] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:42:37.861 [DEBUG] [Thread-124746] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:42:37.861 [DEBUG] [Thread-124746] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:42:37.861 [DEBUG] [Thread-124746] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:42:37.861 [DEBUG] [Thread-124746] [transport.py] [_log()] Compression: none
2025-11-03T23:42:37.861 [DEBUG] [Thread-124746] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:42:37.918 [DEBUG] [Thread-124746] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:42:37.918 [DEBUG] [Thread-124746] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:42:37.918 [DEBUG] [Thread-124746] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:42:37.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:42:37.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:42:37.976 [DEBUG] [Thread-124746] [transport.py] [_log()] userauth is OK
2025-11-03T23:42:37.976 [DEBUG] [Thread-124746] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:42:37.976 [DEBUG] [Thread-124746] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:42:37.976 [DEBUG] [Thread-124746] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:42:37.976 [DEBUG] [Thread-124746] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:42:37.990 [INFO] [Thread-124746] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:42:37.999 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:42:37.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:42:38.193 [DEBUG] [Thread-124748 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:42:38.867 [DEBUG] [Thread-124746] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:42:38.868 [DEBUG] [Thread-124746] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:42:38.915 [DEBUG] [Thread-124746] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:42:38.915 [DEBUG] [Thread-124746] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:42:38.925 [DEBUG] [Thread-124746] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:42:38.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:42:38.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:42:38.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:42:38.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:42:38.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:42:38.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:42:38.981 [DEBUG] [Thread-124746] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:42:39.812 [DEBUG] [Thread-124749 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:42:53.240 [DEBUG] [Thread-124750 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:43:08.280 [DEBUG] [Thread-124751 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:43:08.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:43:08.972 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:43:08.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:43:09.575 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:43:09.576 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:43:09.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 42, 47), 29.43, 12.43, 0.0, 19.87, 18.61, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:43:09.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:42:47
2025-11-03T23:43:10.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:43:10.613 [DEBUG] [Thread-124752] [transport.py] [_log()] starting thread (client mode): 0xed5f040
2025-11-03T23:43:10.618 [DEBUG] [Thread-124752] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:43:10.619 [DEBUG] [Thread-124752] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:43:10.619 [INFO] [Thread-124752] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:43:10.626 [DEBUG] [Thread-124752] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:43:10.627 [DEBUG] [Thread-124752] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:43:10.627 [DEBUG] [Thread-124752] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:43:10.627 [DEBUG] [Thread-124752] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:43:10.627 [DEBUG] [Thread-124752] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:43:10.627 [DEBUG] [Thread-124752] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:43:10.627 [DEBUG] [Thread-124752] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:43:10.627 [DEBUG] [Thread-124752] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:43:10.627 [DEBUG] [Thread-124752] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:43:10.627 [DEBUG] [Thread-124752] [transport.py] [_log()] client lang: <none>
2025-11-03T23:43:10.627 [DEBUG] [Thread-124752] [transport.py] [_log()] server lang: <none>
2025-11-03T23:43:10.627 [DEBUG] [Thread-124752] [transport.py] [_log()] kex follows: False
2025-11-03T23:43:10.627 [DEBUG] [Thread-124752] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:43:10.627 [DEBUG] [Thread-124752] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:43:10.627 [DEBUG] [Thread-124752] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:43:10.627 [DEBUG] [Thread-124752] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:43:10.628 [DEBUG] [Thread-124752] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:43:10.628 [DEBUG] [Thread-124752] [transport.py] [_log()] Compression: none
2025-11-03T23:43:10.628 [DEBUG] [Thread-124752] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:43:10.693 [DEBUG] [Thread-124752] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:43:10.699 [DEBUG] [Thread-124752] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:43:10.702 [DEBUG] [Thread-124752] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:43:10.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:43:10.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:43:10.708 [DEBUG] [Thread-124752] [transport.py] [_log()] userauth is OK
2025-11-03T23:43:10.708 [DEBUG] [Thread-124752] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:43:10.708 [DEBUG] [Thread-124752] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:43:10.708 [DEBUG] [Thread-124752] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:43:10.708 [DEBUG] [Thread-124752] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:43:10.730 [INFO] [Thread-124752] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:43:10.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:43:11.401 [DEBUG] [Thread-124752] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:43:11.401 [DEBUG] [Thread-124752] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:43:11.403 [DEBUG] [Thread-124752] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:43:11.442 [DEBUG] [Thread-124752] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:43:11.443 [DEBUG] [Thread-124752] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:43:11.446 [DEBUG] [Thread-124752] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:43:11.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:43:11.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:43:11.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:43:11.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:43:11.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:43:11.477 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:43:11.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:43:11.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:43:11.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:43:11.481 [DEBUG] [Thread-124752] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:43:11.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.904266 -999.00  +19.00  17.36     17   -6.10 1 1 1 1 1     0    0 24.58 -12.92 ZNESW 17.8 17.4 307.8 20.7 19.0 -25.3 18.9 -24.2 18.7 -23.8 19.0 -24.9
2025-11-03T23:43:11.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:43:11.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:43:11.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.904266
2025-11-03T23:43:11.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:43:11.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:43:11.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:43:11.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:43:11.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:43:11.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:42:47', tmtdew=29.43, humidity=12.43, cloud=0.0, wind=19.87, temperature=18.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:42:08.582', atlas_cloud=1, atlas_rain=1, zp_data=[-0.028249999999999886, -0.02275000000000027, 0.06325000000000003, 0.037499999999999645, -0.07900000000000063, -0.04174999999999862, -0.30900000000000105, -0.2647499999999994, 0.12199999999999989, -0.026999999999999247, 0.03974999999999973, 0.03200000000000003, 0.018000000000000682, 0.06475000000000009, -0.9235000000000007, -0.3230000000000004, 0.021250000000000213, 0.07350000000000101, 0.12399999999999878, 0.053749999999999076, 0.18299999999999805, 0.045249999999999346, -0.7547499999999996, -0.006249999999999645, 0.027999999999998693, 0.15750000000000064, 0.16474999999999973, 0.1875, 0.22799999999999976, 0.1509999999999998, -0.3089999999999993, 0.045000000000001705, 0.08674999999999855], zp_timestamp='2025-11-03T21:41:00')
2025-11-03T23:43:11.602 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:43:11.614 [DEBUG] [Thread-124755] [transport.py] [_log()] starting thread (client mode): 0xed40760
2025-11-03T23:43:11.615 [DEBUG] [Thread-124755] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:43:11.633 [DEBUG] [Thread-124755] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:43:11.633 [INFO] [Thread-124755] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:43:11.641 [DEBUG] [Thread-124755] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:43:11.641 [DEBUG] [Thread-124755] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:43:11.641 [DEBUG] [Thread-124755] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:43:11.641 [DEBUG] [Thread-124755] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:43:11.642 [DEBUG] [Thread-124755] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:43:11.642 [DEBUG] [Thread-124755] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:43:11.642 [DEBUG] [Thread-124755] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:43:11.642 [DEBUG] [Thread-124755] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:43:11.642 [DEBUG] [Thread-124755] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:43:11.642 [DEBUG] [Thread-124755] [transport.py] [_log()] client lang: <none>
2025-11-03T23:43:11.642 [DEBUG] [Thread-124755] [transport.py] [_log()] server lang: <none>
2025-11-03T23:43:11.642 [DEBUG] [Thread-124755] [transport.py] [_log()] kex follows: False
2025-11-03T23:43:11.642 [DEBUG] [Thread-124755] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:43:11.643 [DEBUG] [Thread-124755] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:43:11.643 [DEBUG] [Thread-124755] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:43:11.643 [DEBUG] [Thread-124755] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:43:11.643 [DEBUG] [Thread-124755] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:43:11.644 [DEBUG] [Thread-124755] [transport.py] [_log()] Compression: none
2025-11-03T23:43:11.644 [DEBUG] [Thread-124755] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:43:11.700 [DEBUG] [Thread-124755] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:43:11.701 [DEBUG] [Thread-124755] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:43:11.702 [DEBUG] [Thread-124755] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:43:11.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:43:11.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:43:11.759 [DEBUG] [Thread-124755] [transport.py] [_log()] userauth is OK
2025-11-03T23:43:11.759 [DEBUG] [Thread-124755] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:43:11.760 [DEBUG] [Thread-124755] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:43:11.760 [DEBUG] [Thread-124755] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:43:11.760 [DEBUG] [Thread-124755] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:43:11.783 [INFO] [Thread-124755] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:43:11.784 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:43:11.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:43:12.629 [DEBUG] [Thread-124755] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:43:12.629 [DEBUG] [Thread-124755] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:43:12.677 [DEBUG] [Thread-124755] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:43:12.677 [DEBUG] [Thread-124755] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:43:12.686 [DEBUG] [Thread-124755] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:43:12.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:43:12.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:43:12.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:43:12.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:43:12.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:43:12.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:43:12.722 [DEBUG] [Thread-124755] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:43:23.317 [DEBUG] [Thread-124757 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:43:38.623 [DEBUG] [Thread-124758 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:43:41.177 [DEBUG] [Thread-124759 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:43:42.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:43:42.746 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:43:42.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:43:45.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 43, 20), 29.42, 12.45, 0.0, 20.29, 18.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:43:45.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:43:20
2025-11-03T23:43:45.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:43:45.711 [DEBUG] [Thread-124760] [transport.py] [_log()] starting thread (client mode): 0xed193c0
2025-11-03T23:43:45.711 [DEBUG] [Thread-124760] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:43:45.730 [DEBUG] [Thread-124760] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:43:45.730 [INFO] [Thread-124760] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:43:45.732 [DEBUG] [Thread-124760] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:43:45.732 [DEBUG] [Thread-124760] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:43:45.732 [DEBUG] [Thread-124760] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:43:45.732 [DEBUG] [Thread-124760] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:43:45.732 [DEBUG] [Thread-124760] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:43:45.732 [DEBUG] [Thread-124760] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:43:45.732 [DEBUG] [Thread-124760] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:43:45.732 [DEBUG] [Thread-124760] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:43:45.732 [DEBUG] [Thread-124760] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:43:45.732 [DEBUG] [Thread-124760] [transport.py] [_log()] client lang: <none>
2025-11-03T23:43:45.732 [DEBUG] [Thread-124760] [transport.py] [_log()] server lang: <none>
2025-11-03T23:43:45.732 [DEBUG] [Thread-124760] [transport.py] [_log()] kex follows: False
2025-11-03T23:43:45.732 [DEBUG] [Thread-124760] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:43:45.732 [DEBUG] [Thread-124760] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:43:45.732 [DEBUG] [Thread-124760] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:43:45.733 [DEBUG] [Thread-124760] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:43:45.733 [DEBUG] [Thread-124760] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:43:45.733 [DEBUG] [Thread-124760] [transport.py] [_log()] Compression: none
2025-11-03T23:43:45.733 [DEBUG] [Thread-124760] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:43:45.750 [DEBUG] [Thread-124760] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:43:45.751 [DEBUG] [Thread-124760] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:43:45.751 [DEBUG] [Thread-124760] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:43:45.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:43:45.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:43:45.753 [DEBUG] [Thread-124760] [transport.py] [_log()] userauth is OK
2025-11-03T23:43:45.753 [DEBUG] [Thread-124760] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:43:45.753 [DEBUG] [Thread-124760] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:43:45.754 [DEBUG] [Thread-124760] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:43:45.754 [DEBUG] [Thread-124760] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:43:45.777 [INFO] [Thread-124760] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:43:45.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:43:46.392 [DEBUG] [Thread-124760] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:43:46.393 [DEBUG] [Thread-124760] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:43:46.393 [DEBUG] [Thread-124760] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:43:46.433 [DEBUG] [Thread-124760] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:43:46.433 [DEBUG] [Thread-124760] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:43:46.435 [DEBUG] [Thread-124760] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:43:46.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:43:46.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:43:46.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:43:46.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:43:46.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:43:46.452 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:43:46.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:43:46.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:43:46.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:43:46.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.904960 -999.00  +19.00  17.06     17   -6.10 1 1 1 1 1     0    0 24.90 -12.11 ZNESW 15.9 17.1 301.8 21.1 18.9 -25.2 18.9 -24.2 18.6 -23.9 19.0 -24.9
2025-11-03T23:43:46.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:43:46.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:43:46.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.904960
2025-11-03T23:43:46.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:43:46.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:43:46.454 [DEBUG] [Thread-124760] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:43:46.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:43:46.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:43:46.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:43:46.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:43:20', tmtdew=29.42, humidity=12.45, cloud=0.0, wind=20.29, temperature=18.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:43:08.544', atlas_cloud=1, atlas_rain=1, zp_data=[-0.028249999999999886, -0.02275000000000027, 0.06325000000000003, 0.037499999999999645, -0.07900000000000063, -0.04174999999999862, -0.30900000000000105, -0.2647499999999994, 0.12199999999999989, -0.026999999999999247, 0.03974999999999973, 0.03200000000000003, 0.018000000000000682, 0.06475000000000009, -0.9235000000000007, -0.3230000000000004, 0.021250000000000213, 0.07350000000000101, 0.12399999999999878, 0.053749999999999076, 0.18299999999999805, 0.045249999999999346, -0.7547499999999996, -0.006249999999999645, 0.027999999999998693, 0.15750000000000064, 0.16474999999999973, 0.1875, 0.22799999999999976, 0.1509999999999998, -0.3089999999999993, 0.045000000000001705, 0.08674999999999855], zp_timestamp='2025-11-03T21:41:00')
2025-11-03T23:43:46.545 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:43:46.557 [DEBUG] [Thread-124763] [transport.py] [_log()] starting thread (client mode): 0xed5ce50
2025-11-03T23:43:46.557 [DEBUG] [Thread-124763] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:43:46.572 [DEBUG] [Thread-124763] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:43:46.572 [INFO] [Thread-124763] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:43:46.579 [DEBUG] [Thread-124763] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:43:46.580 [DEBUG] [Thread-124763] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:43:46.580 [DEBUG] [Thread-124763] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:43:46.580 [DEBUG] [Thread-124763] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:43:46.580 [DEBUG] [Thread-124763] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:43:46.580 [DEBUG] [Thread-124763] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:43:46.580 [DEBUG] [Thread-124763] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:43:46.580 [DEBUG] [Thread-124763] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:43:46.580 [DEBUG] [Thread-124763] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:43:46.580 [DEBUG] [Thread-124763] [transport.py] [_log()] client lang: <none>
2025-11-03T23:43:46.580 [DEBUG] [Thread-124763] [transport.py] [_log()] server lang: <none>
2025-11-03T23:43:46.580 [DEBUG] [Thread-124763] [transport.py] [_log()] kex follows: False
2025-11-03T23:43:46.580 [DEBUG] [Thread-124763] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:43:46.580 [DEBUG] [Thread-124763] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:43:46.580 [DEBUG] [Thread-124763] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:43:46.580 [DEBUG] [Thread-124763] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:43:46.580 [DEBUG] [Thread-124763] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:43:46.580 [DEBUG] [Thread-124763] [transport.py] [_log()] Compression: none
2025-11-03T23:43:46.580 [DEBUG] [Thread-124763] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:43:46.642 [DEBUG] [Thread-124763] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:43:46.643 [DEBUG] [Thread-124763] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:43:46.643 [DEBUG] [Thread-124763] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:43:46.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:43:46.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:43:46.704 [DEBUG] [Thread-124763] [transport.py] [_log()] userauth is OK
2025-11-03T23:43:46.704 [DEBUG] [Thread-124763] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:43:46.705 [DEBUG] [Thread-124763] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:43:46.705 [DEBUG] [Thread-124763] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:43:46.705 [DEBUG] [Thread-124763] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:43:46.728 [INFO] [Thread-124763] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:43:46.729 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:43:46.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:43:47.584 [DEBUG] [Thread-124763] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:43:47.584 [DEBUG] [Thread-124763] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:43:47.632 [DEBUG] [Thread-124763] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:43:47.632 [DEBUG] [Thread-124763] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:43:47.641 [DEBUG] [Thread-124763] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:43:47.650 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:43:47.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:43:47.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:43:47.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:43:47.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:43:47.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:43:47.676 [DEBUG] [Thread-124763] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:43:53.663 [DEBUG] [Thread-124765 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:44:08.708 [DEBUG] [Thread-124766 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:44:09.777 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:44:09.778 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:44:17.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:44:17.703 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:44:17.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:44:19.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 43, 54), 29.43, 12.43, 0.0, 20.03, 18.63, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:44:19.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:43:54
2025-11-03T23:44:19.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:44:20.249 [DEBUG] [Thread-124767] [transport.py] [_log()] starting thread (client mode): 0x117eb400
2025-11-03T23:44:20.254 [DEBUG] [Thread-124767] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:44:20.256 [DEBUG] [Thread-124767] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:44:20.258 [INFO] [Thread-124767] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:44:20.280 [DEBUG] [Thread-124767] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:44:20.281 [DEBUG] [Thread-124767] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:44:20.281 [DEBUG] [Thread-124767] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:44:20.281 [DEBUG] [Thread-124767] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:44:20.281 [DEBUG] [Thread-124767] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:44:20.281 [DEBUG] [Thread-124767] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:44:20.281 [DEBUG] [Thread-124767] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:44:20.281 [DEBUG] [Thread-124767] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:44:20.281 [DEBUG] [Thread-124767] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:44:20.281 [DEBUG] [Thread-124767] [transport.py] [_log()] client lang: <none>
2025-11-03T23:44:20.281 [DEBUG] [Thread-124767] [transport.py] [_log()] server lang: <none>
2025-11-03T23:44:20.281 [DEBUG] [Thread-124767] [transport.py] [_log()] kex follows: False
2025-11-03T23:44:20.281 [DEBUG] [Thread-124767] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:44:20.283 [DEBUG] [Thread-124767] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:44:20.285 [DEBUG] [Thread-124767] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:44:20.285 [DEBUG] [Thread-124767] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:44:20.285 [DEBUG] [Thread-124767] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:44:20.285 [DEBUG] [Thread-124767] [transport.py] [_log()] Compression: none
2025-11-03T23:44:20.285 [DEBUG] [Thread-124767] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:44:20.400 [DEBUG] [Thread-124767] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:44:20.422 [DEBUG] [Thread-124767] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:44:20.427 [DEBUG] [Thread-124767] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:44:20.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:44:20.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:44:20.448 [DEBUG] [Thread-124767] [transport.py] [_log()] userauth is OK
2025-11-03T23:44:20.449 [DEBUG] [Thread-124767] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:44:20.450 [DEBUG] [Thread-124767] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:44:20.450 [DEBUG] [Thread-124767] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:44:20.450 [DEBUG] [Thread-124767] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:44:20.503 [INFO] [Thread-124767] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:44:20.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:44:21.166 [DEBUG] [Thread-124767] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:44:21.168 [DEBUG] [Thread-124767] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:44:21.169 [DEBUG] [Thread-124767] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:44:21.207 [DEBUG] [Thread-124767] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:44:21.207 [DEBUG] [Thread-124767] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:44:21.229 [DEBUG] [Thread-124767] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:44:21.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:44:21.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:44:21.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:44:21.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:44:21.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:44:21.258 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:44:21.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:44:21.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:44:21.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:44:21.267 [DEBUG] [Thread-124767] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:44:21.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.905307 -999.00  +19.00  13.55     17   -6.10 1 1 1 1 1     0    0 24.83 -9.46 ZNESW 15.6 13.6 302.0 18.7 19.0 -25.3 18.9 -24.3 18.6 -23.6 19.0 -24.9
2025-11-03T23:44:21.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:44:21.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:44:21.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.905307
2025-11-03T23:44:21.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:44:21.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:44:21.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:44:21.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:44:21.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:44:21.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:43:54', tmtdew=29.43, humidity=12.43, cloud=0.0, wind=20.03, temperature=18.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:43:38.525', atlas_cloud=1, atlas_rain=1, zp_data=[-0.028249999999999886, -0.02275000000000027, 0.06325000000000003, 0.037499999999999645, -0.07900000000000063, -0.04174999999999862, -0.30900000000000105, -0.2647499999999994, 0.12199999999999989, -0.026999999999999247, 0.03974999999999973, 0.03200000000000003, 0.018000000000000682, 0.06475000000000009, -0.9235000000000007, -0.3230000000000004, 0.021250000000000213, 0.07350000000000101, 0.12399999999999878, 0.053749999999999076, 0.18299999999999805, 0.045249999999999346, -0.7547499999999996, -0.006249999999999645, 0.027999999999998693, 0.15750000000000064, 0.16474999999999973, 0.1875, 0.22799999999999976, 0.1509999999999998, -0.3089999999999993, 0.045000000000001705, 0.08674999999999855], zp_timestamp='2025-11-03T21:41:00')
2025-11-03T23:44:21.447 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:44:21.461 [DEBUG] [Thread-124770] [transport.py] [_log()] starting thread (client mode): 0x11761870
2025-11-03T23:44:21.461 [DEBUG] [Thread-124770] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:44:21.477 [DEBUG] [Thread-124770] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:44:21.477 [INFO] [Thread-124770] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:44:21.486 [DEBUG] [Thread-124770] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:44:21.486 [DEBUG] [Thread-124770] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:44:21.486 [DEBUG] [Thread-124770] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:44:21.486 [DEBUG] [Thread-124770] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:44:21.486 [DEBUG] [Thread-124770] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:44:21.486 [DEBUG] [Thread-124770] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:44:21.486 [DEBUG] [Thread-124770] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:44:21.486 [DEBUG] [Thread-124770] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:44:21.486 [DEBUG] [Thread-124770] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:44:21.486 [DEBUG] [Thread-124770] [transport.py] [_log()] client lang: <none>
2025-11-03T23:44:21.486 [DEBUG] [Thread-124770] [transport.py] [_log()] server lang: <none>
2025-11-03T23:44:21.486 [DEBUG] [Thread-124770] [transport.py] [_log()] kex follows: False
2025-11-03T23:44:21.486 [DEBUG] [Thread-124770] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:44:21.486 [DEBUG] [Thread-124770] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:44:21.486 [DEBUG] [Thread-124770] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:44:21.486 [DEBUG] [Thread-124770] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:44:21.486 [DEBUG] [Thread-124770] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:44:21.486 [DEBUG] [Thread-124770] [transport.py] [_log()] Compression: none
2025-11-03T23:44:21.486 [DEBUG] [Thread-124770] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:44:21.543 [DEBUG] [Thread-124770] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:44:21.543 [DEBUG] [Thread-124770] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:44:21.543 [DEBUG] [Thread-124770] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:44:21.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:44:21.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:44:21.600 [DEBUG] [Thread-124770] [transport.py] [_log()] userauth is OK
2025-11-03T23:44:21.600 [DEBUG] [Thread-124770] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:44:21.600 [DEBUG] [Thread-124770] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:44:21.600 [DEBUG] [Thread-124770] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:44:21.600 [DEBUG] [Thread-124770] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:44:21.616 [INFO] [Thread-124770] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:44:21.616 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:44:21.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:44:22.464 [DEBUG] [Thread-124770] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:44:22.465 [DEBUG] [Thread-124770] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:44:22.512 [DEBUG] [Thread-124770] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:44:22.512 [DEBUG] [Thread-124770] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:44:22.522 [DEBUG] [Thread-124770] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:44:22.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:44:22.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:44:22.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:44:22.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:44:22.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:44:22.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:44:22.583 [DEBUG] [Thread-124770] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:44:23.750 [DEBUG] [Thread-124772 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:44:38.792 [DEBUG] [Thread-124773 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:44:41.541 [DEBUG] [Thread-124774 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:44:43.949 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:44:47.144 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:44:52.216 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:44:52.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:44:52.604 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:44:52.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:44:53.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 44, 27), 29.45, 12.41, 0.0, 20.1, 18.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:44:53.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:44:27
2025-11-03T23:44:53.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:44:53.670 [DEBUG] [Thread-124775] [transport.py] [_log()] starting thread (client mode): 0xed1bf10
2025-11-03T23:44:53.670 [DEBUG] [Thread-124775] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:44:53.689 [DEBUG] [Thread-124775] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:44:53.689 [INFO] [Thread-124775] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:44:53.692 [DEBUG] [Thread-124775] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:44:53.692 [DEBUG] [Thread-124775] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:44:53.692 [DEBUG] [Thread-124775] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:44:53.692 [DEBUG] [Thread-124775] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:44:53.692 [DEBUG] [Thread-124775] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:44:53.692 [DEBUG] [Thread-124775] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:44:53.692 [DEBUG] [Thread-124775] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:44:53.692 [DEBUG] [Thread-124775] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:44:53.692 [DEBUG] [Thread-124775] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:44:53.692 [DEBUG] [Thread-124775] [transport.py] [_log()] client lang: <none>
2025-11-03T23:44:53.692 [DEBUG] [Thread-124775] [transport.py] [_log()] server lang: <none>
2025-11-03T23:44:53.692 [DEBUG] [Thread-124775] [transport.py] [_log()] kex follows: False
2025-11-03T23:44:53.692 [DEBUG] [Thread-124775] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:44:53.692 [DEBUG] [Thread-124775] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:44:53.693 [DEBUG] [Thread-124775] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:44:53.693 [DEBUG] [Thread-124775] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:44:53.693 [DEBUG] [Thread-124775] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:44:53.693 [DEBUG] [Thread-124775] [transport.py] [_log()] Compression: none
2025-11-03T23:44:53.693 [DEBUG] [Thread-124775] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:44:53.711 [DEBUG] [Thread-124775] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:44:53.711 [DEBUG] [Thread-124775] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:44:53.711 [DEBUG] [Thread-124775] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:44:53.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:44:53.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:44:53.714 [DEBUG] [Thread-124775] [transport.py] [_log()] userauth is OK
2025-11-03T23:44:53.714 [DEBUG] [Thread-124775] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:44:53.714 [DEBUG] [Thread-124775] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:44:53.714 [DEBUG] [Thread-124775] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:44:53.714 [DEBUG] [Thread-124775] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:44:53.732 [INFO] [Thread-124775] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:44:53.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:44:53.822 [DEBUG] [Thread-124777 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:44:54.537 [DEBUG] [Thread-124775] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:44:54.537 [DEBUG] [Thread-124775] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:44:54.538 [DEBUG] [Thread-124775] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:44:54.578 [DEBUG] [Thread-124775] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:44:54.578 [DEBUG] [Thread-124775] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:44:54.581 [DEBUG] [Thread-124775] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:44:54.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:44:54.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:44:54.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:44:54.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:44:54.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:44:54.598 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:44:54.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:44:54.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:44:54.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:44:54.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.905655 -999.00  +19.00  17.99     17   -6.10 1 1 1 1 1     0    0 24.57 -8.19 ZNESW 14.6 18.0 299.2 19.3 19.0 -25.2 18.9 -24.3 18.7 -23.9 19.0 -24.8
2025-11-03T23:44:54.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:44:54.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:44:54.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.905655
2025-11-03T23:44:54.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:44:54.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:44:54.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:44:54.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:44:54.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:44:54.607 [DEBUG] [Thread-124775] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:44:54.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:44:27', tmtdew=29.45, humidity=12.41, cloud=0.0, wind=20.1, temperature=18.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:44:08.592', atlas_cloud=1, atlas_rain=1, zp_data=[-0.028249999999999886, -0.02275000000000027, 0.06325000000000003, 0.037499999999999645, -0.07900000000000063, -0.04174999999999862, -0.30900000000000105, -0.2647499999999994, 0.12199999999999989, -0.026999999999999247, 0.03974999999999973, 0.03200000000000003, 0.018000000000000682, 0.06475000000000009, -0.9235000000000007, -0.3230000000000004, 0.021250000000000213, 0.07350000000000101, 0.12399999999999878, 0.053749999999999076, 0.18299999999999805, 0.045249999999999346, -0.7547499999999996, -0.006249999999999645, 0.027999999999998693, 0.15750000000000064, 0.16474999999999973, 0.1875, 0.22799999999999976, 0.1509999999999998, -0.3089999999999993, 0.045000000000001705, 0.08674999999999855], zp_timestamp='2025-11-03T21:41:00')
2025-11-03T23:44:54.691 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:44:54.703 [DEBUG] [Thread-124779] [transport.py] [_log()] starting thread (client mode): 0xed5fe80
2025-11-03T23:44:54.703 [DEBUG] [Thread-124779] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:44:54.718 [DEBUG] [Thread-124779] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:44:54.718 [INFO] [Thread-124779] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:44:54.726 [DEBUG] [Thread-124779] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:44:54.726 [DEBUG] [Thread-124779] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:44:54.726 [DEBUG] [Thread-124779] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:44:54.726 [DEBUG] [Thread-124779] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:44:54.726 [DEBUG] [Thread-124779] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:44:54.726 [DEBUG] [Thread-124779] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:44:54.727 [DEBUG] [Thread-124779] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:44:54.727 [DEBUG] [Thread-124779] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:44:54.727 [DEBUG] [Thread-124779] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:44:54.727 [DEBUG] [Thread-124779] [transport.py] [_log()] client lang: <none>
2025-11-03T23:44:54.727 [DEBUG] [Thread-124779] [transport.py] [_log()] server lang: <none>
2025-11-03T23:44:54.727 [DEBUG] [Thread-124779] [transport.py] [_log()] kex follows: False
2025-11-03T23:44:54.727 [DEBUG] [Thread-124779] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:44:54.727 [DEBUG] [Thread-124779] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:44:54.727 [DEBUG] [Thread-124779] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:44:54.727 [DEBUG] [Thread-124779] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:44:54.727 [DEBUG] [Thread-124779] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:44:54.727 [DEBUG] [Thread-124779] [transport.py] [_log()] Compression: none
2025-11-03T23:44:54.727 [DEBUG] [Thread-124779] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:44:54.784 [DEBUG] [Thread-124779] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:44:54.785 [DEBUG] [Thread-124779] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:44:54.786 [DEBUG] [Thread-124779] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:44:54.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:44:54.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:44:54.840 [DEBUG] [Thread-124779] [transport.py] [_log()] userauth is OK
2025-11-03T23:44:54.840 [DEBUG] [Thread-124779] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:44:54.840 [DEBUG] [Thread-124779] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:44:54.840 [DEBUG] [Thread-124779] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:44:54.840 [DEBUG] [Thread-124779] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:44:54.853 [INFO] [Thread-124779] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:44:54.854 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:44:54.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:44:55.691 [DEBUG] [Thread-124779] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:44:55.691 [DEBUG] [Thread-124779] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:44:55.740 [DEBUG] [Thread-124779] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:44:55.740 [DEBUG] [Thread-124779] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:44:55.749 [DEBUG] [Thread-124779] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:44:55.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:44:55.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:44:55.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:44:55.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:44:55.775 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:44:55.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:44:55.784 [DEBUG] [Thread-124779] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:44:58.592 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:45:08.878 [DEBUG] [Thread-124781 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:45:09.981 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:45:09.983 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:45:16.993 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:45:21.387 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:45:23.983 [DEBUG] [Thread-124782 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:45:25.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:45:25.819 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:45:25.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:45:27.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 45, 1), 29.45, 12.41, 0.0, 19.94, 18.63, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:45:27.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:45:01
2025-11-03T23:45:27.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:45:28.105 [DEBUG] [Thread-124783] [transport.py] [_log()] starting thread (client mode): 0xed07b20
2025-11-03T23:45:28.106 [DEBUG] [Thread-124783] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:45:28.113 [DEBUG] [Thread-124783] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:45:28.113 [INFO] [Thread-124783] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:45:28.117 [DEBUG] [Thread-124783] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:45:28.117 [DEBUG] [Thread-124783] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:45:28.117 [DEBUG] [Thread-124783] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:45:28.117 [DEBUG] [Thread-124783] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:45:28.117 [DEBUG] [Thread-124783] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:45:28.118 [DEBUG] [Thread-124783] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:45:28.118 [DEBUG] [Thread-124783] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:45:28.118 [DEBUG] [Thread-124783] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:45:28.118 [DEBUG] [Thread-124783] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:45:28.118 [DEBUG] [Thread-124783] [transport.py] [_log()] client lang: <none>
2025-11-03T23:45:28.118 [DEBUG] [Thread-124783] [transport.py] [_log()] server lang: <none>
2025-11-03T23:45:28.118 [DEBUG] [Thread-124783] [transport.py] [_log()] kex follows: False
2025-11-03T23:45:28.118 [DEBUG] [Thread-124783] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:45:28.118 [DEBUG] [Thread-124783] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:45:28.119 [DEBUG] [Thread-124783] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:45:28.119 [DEBUG] [Thread-124783] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:45:28.119 [DEBUG] [Thread-124783] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:45:28.119 [DEBUG] [Thread-124783] [transport.py] [_log()] Compression: none
2025-11-03T23:45:28.119 [DEBUG] [Thread-124783] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:45:28.151 [DEBUG] [Thread-124783] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:45:28.155 [DEBUG] [Thread-124783] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:45:28.156 [DEBUG] [Thread-124783] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:45:28.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:45:28.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:45:28.160 [DEBUG] [Thread-124783] [transport.py] [_log()] userauth is OK
2025-11-03T23:45:28.160 [DEBUG] [Thread-124783] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:45:28.160 [DEBUG] [Thread-124783] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:45:28.160 [DEBUG] [Thread-124783] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:45:28.160 [DEBUG] [Thread-124783] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:45:28.177 [INFO] [Thread-124783] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:45:28.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:45:29.985 [DEBUG] [Thread-124783] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:45:29.985 [DEBUG] [Thread-124783] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:45:29.986 [DEBUG] [Thread-124783] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:45:30.026 [DEBUG] [Thread-124783] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:45:30.027 [DEBUG] [Thread-124783] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:45:30.029 [DEBUG] [Thread-124783] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:45:30.037 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:45:30.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:45:30.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:45:30.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:45:30.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:45:30.044 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:45:30.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:45:30.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:45:30.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:45:30.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.906002 -999.00  +18.90  13.46     17   -6.10 1 1 1 1 1     0    0 24.87 -7.47 ZNESW 17.0 13.5 308.2 19.0 19.0 -25.3 18.9 -24.1 18.6 -23.8 18.9 -24.9
2025-11-03T23:45:30.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:45:30.046 [DEBUG] [Thread-124783] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:45:30.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:45:30.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.906002
2025-11-03T23:45:30.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:45:30.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:45:30.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:45:30.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:45:30.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:45:30.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:45:01', tmtdew=29.45, humidity=12.41, cloud=0.0, wind=19.94, temperature=18.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:44:38.573', atlas_cloud=1, atlas_rain=1, zp_data=[0.011749999999999261, -0.021749999999999048, 0.06425000000000125, -0.03850000000000087, 0.05000000000000071, -0.00024999999999941735, -0.29800000000000004, -0.07124999999999915, 0.07449999999999868, 0.036000000000001364, 0.11674999999999969, 0.057000000000000384, 0.04899999999999949, 0.05674999999999919, -0.9240000000000013, -0.23150000000000048, 0.07424999999999926, 0.09949999999999903, 0.17799999999999905, 0.13824999999999932, 0.13100000000000023, 0.07774999999999821, -0.12074999999999925, 0.010749999999999815, 0.05799999999999983, 0.16849999999999987, 0.16075000000000017, 0.2524999999999995, 0.274, 0.15900000000000247, -0.18649999999999878, 0.06950000000000145, 0.06625000000000014], zp_timestamp='2025-11-03T21:44:00')
2025-11-03T23:45:30.146 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:45:30.163 [DEBUG] [Thread-124786] [transport.py] [_log()] starting thread (client mode): 0xedb2fe0
2025-11-03T23:45:30.163 [DEBUG] [Thread-124786] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:45:30.179 [DEBUG] [Thread-124786] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:45:30.179 [INFO] [Thread-124786] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:45:30.188 [DEBUG] [Thread-124786] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:45:30.188 [DEBUG] [Thread-124786] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:45:30.188 [DEBUG] [Thread-124786] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:45:30.188 [DEBUG] [Thread-124786] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:45:30.188 [DEBUG] [Thread-124786] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:45:30.188 [DEBUG] [Thread-124786] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:45:30.188 [DEBUG] [Thread-124786] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:45:30.188 [DEBUG] [Thread-124786] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:45:30.188 [DEBUG] [Thread-124786] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:45:30.188 [DEBUG] [Thread-124786] [transport.py] [_log()] client lang: <none>
2025-11-03T23:45:30.188 [DEBUG] [Thread-124786] [transport.py] [_log()] server lang: <none>
2025-11-03T23:45:30.188 [DEBUG] [Thread-124786] [transport.py] [_log()] kex follows: False
2025-11-03T23:45:30.188 [DEBUG] [Thread-124786] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:45:30.188 [DEBUG] [Thread-124786] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:45:30.188 [DEBUG] [Thread-124786] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:45:30.189 [DEBUG] [Thread-124786] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:45:30.189 [DEBUG] [Thread-124786] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:45:30.189 [DEBUG] [Thread-124786] [transport.py] [_log()] Compression: none
2025-11-03T23:45:30.189 [DEBUG] [Thread-124786] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:45:30.247 [DEBUG] [Thread-124786] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:45:30.248 [DEBUG] [Thread-124786] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:45:30.248 [DEBUG] [Thread-124786] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:45:30.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:45:30.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:45:30.307 [DEBUG] [Thread-124786] [transport.py] [_log()] userauth is OK
2025-11-03T23:45:30.308 [DEBUG] [Thread-124786] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:45:30.308 [DEBUG] [Thread-124786] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:45:30.308 [DEBUG] [Thread-124786] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:45:30.308 [DEBUG] [Thread-124786] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:45:30.322 [INFO] [Thread-124786] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:45:30.322 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:45:30.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:45:31.141 [DEBUG] [Thread-124786] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:45:31.141 [DEBUG] [Thread-124786] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:45:31.188 [DEBUG] [Thread-124786] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:45:31.188 [DEBUG] [Thread-124786] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:45:31.197 [DEBUG] [Thread-124786] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:45:31.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:45:31.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:45:31.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:45:31.224 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:45:31.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:45:31.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:45:31.232 [DEBUG] [Thread-124786] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:45:39.050 [DEBUG] [Thread-124788 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:45:40.750 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:45:41.893 [DEBUG] [Thread-124789 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:45:45.151 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:45:51.283 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:45:54.177 [DEBUG] [Thread-124790 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:45:55.678 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:46:01.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:46:01.252 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:46:01.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:46:02.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 45, 34), 29.37, 12.45, 0.0, 17.73, 18.66, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:46:02.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:45:34
2025-11-03T23:46:02.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:46:02.724 [DEBUG] [Thread-124791] [transport.py] [_log()] starting thread (client mode): 0xedb15d0
2025-11-03T23:46:02.725 [DEBUG] [Thread-124791] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:46:02.736 [DEBUG] [Thread-124791] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:46:02.736 [INFO] [Thread-124791] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:46:02.739 [DEBUG] [Thread-124791] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:46:02.739 [DEBUG] [Thread-124791] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:46:02.740 [DEBUG] [Thread-124791] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:46:02.740 [DEBUG] [Thread-124791] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:46:02.740 [DEBUG] [Thread-124791] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:46:02.740 [DEBUG] [Thread-124791] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:46:02.740 [DEBUG] [Thread-124791] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:46:02.740 [DEBUG] [Thread-124791] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:46:02.740 [DEBUG] [Thread-124791] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:46:02.740 [DEBUG] [Thread-124791] [transport.py] [_log()] client lang: <none>
2025-11-03T23:46:02.740 [DEBUG] [Thread-124791] [transport.py] [_log()] server lang: <none>
2025-11-03T23:46:02.740 [DEBUG] [Thread-124791] [transport.py] [_log()] kex follows: False
2025-11-03T23:46:02.740 [DEBUG] [Thread-124791] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:46:02.741 [DEBUG] [Thread-124791] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:46:02.741 [DEBUG] [Thread-124791] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:46:02.741 [DEBUG] [Thread-124791] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:46:02.741 [DEBUG] [Thread-124791] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:46:02.742 [DEBUG] [Thread-124791] [transport.py] [_log()] Compression: none
2025-11-03T23:46:02.742 [DEBUG] [Thread-124791] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:46:02.768 [DEBUG] [Thread-124791] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:46:02.771 [DEBUG] [Thread-124791] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:46:02.773 [DEBUG] [Thread-124791] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:46:02.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:46:02.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:46:02.777 [DEBUG] [Thread-124791] [transport.py] [_log()] userauth is OK
2025-11-03T23:46:02.777 [DEBUG] [Thread-124791] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:46:02.777 [DEBUG] [Thread-124791] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:46:02.777 [DEBUG] [Thread-124791] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:46:02.777 [DEBUG] [Thread-124791] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:46:02.803 [INFO] [Thread-124791] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:46:02.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:46:03.427 [DEBUG] [Thread-124791] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:46:03.428 [DEBUG] [Thread-124791] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:46:03.438 [DEBUG] [Thread-124791] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:46:03.469 [DEBUG] [Thread-124791] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:46:03.469 [DEBUG] [Thread-124791] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:46:03.473 [DEBUG] [Thread-124791] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:46:03.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:46:03.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:46:03.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:46:03.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:46:03.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:46:03.499 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:46:03.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:46:03.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:46:03.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:46:03.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.906349 -999.00  +18.90  18.32     17   -6.10 1 1 1 1 1     0    0 24.88 -7.31 ZNESW 18.4 18.3 302.2 21.4 19.0 -25.2 18.9 -24.1 18.7 -23.9 18.9 -24.8
2025-11-03T23:46:03.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:46:03.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:46:03.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.906349
2025-11-03T23:46:03.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:46:03.506 [DEBUG] [Thread-124791] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:46:03.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:46:03.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:46:03.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:46:03.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:46:03.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:45:34', tmtdew=29.37, humidity=12.45, cloud=0.0, wind=17.73, temperature=18.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:45:08.554', atlas_cloud=1, atlas_rain=1, zp_data=[0.011749999999999261, -0.021749999999999048, 0.06425000000000125, -0.03850000000000087, 0.05000000000000071, -0.00024999999999941735, -0.29800000000000004, -0.07124999999999915, 0.07449999999999868, 0.036000000000001364, 0.11674999999999969, 0.057000000000000384, 0.04899999999999949, 0.05674999999999919, -0.9240000000000013, -0.23150000000000048, 0.07424999999999926, 0.09949999999999903, 0.17799999999999905, 0.13824999999999932, 0.13100000000000023, 0.07774999999999821, -0.12074999999999925, 0.010749999999999815, 0.05799999999999983, 0.16849999999999987, 0.16075000000000017, 0.2524999999999995, 0.274, 0.15900000000000247, -0.18649999999999878, 0.06950000000000145, 0.06625000000000014], zp_timestamp='2025-11-03T21:44:00')
2025-11-03T23:46:03.605 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:46:03.618 [DEBUG] [Thread-124794] [transport.py] [_log()] starting thread (client mode): 0xed18520
2025-11-03T23:46:03.618 [DEBUG] [Thread-124794] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:46:03.634 [DEBUG] [Thread-124794] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:46:03.634 [INFO] [Thread-124794] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:46:03.641 [DEBUG] [Thread-124794] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:46:03.641 [DEBUG] [Thread-124794] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:46:03.641 [DEBUG] [Thread-124794] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:46:03.641 [DEBUG] [Thread-124794] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:46:03.641 [DEBUG] [Thread-124794] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:46:03.641 [DEBUG] [Thread-124794] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:46:03.641 [DEBUG] [Thread-124794] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:46:03.641 [DEBUG] [Thread-124794] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:46:03.641 [DEBUG] [Thread-124794] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:46:03.641 [DEBUG] [Thread-124794] [transport.py] [_log()] client lang: <none>
2025-11-03T23:46:03.642 [DEBUG] [Thread-124794] [transport.py] [_log()] server lang: <none>
2025-11-03T23:46:03.642 [DEBUG] [Thread-124794] [transport.py] [_log()] kex follows: False
2025-11-03T23:46:03.642 [DEBUG] [Thread-124794] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:46:03.642 [DEBUG] [Thread-124794] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:46:03.642 [DEBUG] [Thread-124794] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:46:03.642 [DEBUG] [Thread-124794] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:46:03.642 [DEBUG] [Thread-124794] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:46:03.642 [DEBUG] [Thread-124794] [transport.py] [_log()] Compression: none
2025-11-03T23:46:03.642 [DEBUG] [Thread-124794] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:46:03.704 [DEBUG] [Thread-124794] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:46:03.704 [DEBUG] [Thread-124794] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:46:03.704 [DEBUG] [Thread-124794] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:46:03.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:46:03.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:46:03.767 [DEBUG] [Thread-124794] [transport.py] [_log()] userauth is OK
2025-11-03T23:46:03.767 [DEBUG] [Thread-124794] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:46:03.767 [DEBUG] [Thread-124794] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:46:03.767 [DEBUG] [Thread-124794] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:46:03.767 [DEBUG] [Thread-124794] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:46:03.784 [INFO] [Thread-124794] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:46:03.784 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:46:03.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:46:04.640 [DEBUG] [Thread-124794] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:46:04.640 [DEBUG] [Thread-124794] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:46:04.688 [DEBUG] [Thread-124794] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:46:04.688 [DEBUG] [Thread-124794] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:46:04.698 [DEBUG] [Thread-124794] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:46:04.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:46:04.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:46:04.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:46:04.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:46:04.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:46:04.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:46:04.741 [DEBUG] [Thread-124794] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:46:09.210 [DEBUG] [Thread-124796 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:46:10.189 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:46:10.190 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:46:24.299 [DEBUG] [Thread-124797 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:46:34.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:46:34.753 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:46:34.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:46:35.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 46, 7), 29.36, 12.46, 0.0, 17.77, 18.66, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:46:35.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:46:07
2025-11-03T23:46:35.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:46:35.829 [DEBUG] [Thread-124798] [transport.py] [_log()] starting thread (client mode): 0xedb0670
2025-11-03T23:46:35.829 [DEBUG] [Thread-124798] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:46:35.840 [DEBUG] [Thread-124798] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:46:35.840 [INFO] [Thread-124798] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:46:35.843 [DEBUG] [Thread-124798] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:46:35.843 [DEBUG] [Thread-124798] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:46:35.843 [DEBUG] [Thread-124798] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:46:35.843 [DEBUG] [Thread-124798] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:46:35.843 [DEBUG] [Thread-124798] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:46:35.843 [DEBUG] [Thread-124798] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:46:35.844 [DEBUG] [Thread-124798] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:46:35.844 [DEBUG] [Thread-124798] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:46:35.844 [DEBUG] [Thread-124798] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:46:35.844 [DEBUG] [Thread-124798] [transport.py] [_log()] client lang: <none>
2025-11-03T23:46:35.844 [DEBUG] [Thread-124798] [transport.py] [_log()] server lang: <none>
2025-11-03T23:46:35.844 [DEBUG] [Thread-124798] [transport.py] [_log()] kex follows: False
2025-11-03T23:46:35.844 [DEBUG] [Thread-124798] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:46:35.844 [DEBUG] [Thread-124798] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:46:35.844 [DEBUG] [Thread-124798] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:46:35.844 [DEBUG] [Thread-124798] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:46:35.844 [DEBUG] [Thread-124798] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:46:35.844 [DEBUG] [Thread-124798] [transport.py] [_log()] Compression: none
2025-11-03T23:46:35.845 [DEBUG] [Thread-124798] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:46:35.854 [DEBUG] [Thread-124798] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:46:35.855 [DEBUG] [Thread-124798] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:46:35.855 [DEBUG] [Thread-124798] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:46:35.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:46:35.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:46:35.897 [DEBUG] [Thread-124798] [transport.py] [_log()] userauth is OK
2025-11-03T23:46:35.897 [DEBUG] [Thread-124798] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:46:35.898 [DEBUG] [Thread-124798] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:46:35.898 [DEBUG] [Thread-124798] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:46:35.898 [DEBUG] [Thread-124798] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:46:35.921 [INFO] [Thread-124798] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:46:35.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:46:36.592 [DEBUG] [Thread-124798] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:46:36.592 [DEBUG] [Thread-124798] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:46:36.593 [DEBUG] [Thread-124798] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:46:36.633 [DEBUG] [Thread-124798] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:46:36.633 [DEBUG] [Thread-124798] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:46:36.636 [DEBUG] [Thread-124798] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:46:36.650 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:46:36.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:46:36.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:46:36.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:46:36.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:46:36.664 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:46:36.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:46:36.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:46:36.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:46:36.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.906696 -999.00  +18.90  13.21     17   -6.10 1 1 1 1 1     0    0 25.18 -6.39 ZNESW 17.4 13.2 304.0 20.6 18.9 -25.3 18.9 -24.2 18.6 -23.6 18.9 -24.6
2025-11-03T23:46:36.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:46:36.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:46:36.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.906696
2025-11-03T23:46:36.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:46:36.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:46:36.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:46:36.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:46:36.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:46:36.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:46:07', tmtdew=29.36, humidity=12.46, cloud=0.0, wind=17.77, temperature=18.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:45:38.534', atlas_cloud=1, atlas_rain=1, zp_data=[0.011749999999999261, -0.021749999999999048, 0.06425000000000125, -0.03850000000000087, 0.05000000000000071, -0.00024999999999941735, -0.29800000000000004, -0.07124999999999915, 0.07449999999999868, 0.036000000000001364, 0.11674999999999969, 0.057000000000000384, 0.04899999999999949, 0.05674999999999919, -0.9240000000000013, -0.23150000000000048, 0.07424999999999926, 0.09949999999999903, 0.17799999999999905, 0.13824999999999932, 0.13100000000000023, 0.07774999999999821, -0.12074999999999925, 0.010749999999999815, 0.05799999999999983, 0.16849999999999987, 0.16075000000000017, 0.2524999999999995, 0.274, 0.15900000000000247, -0.18649999999999878, 0.06950000000000145, 0.06625000000000014], zp_timestamp='2025-11-03T21:44:00')
2025-11-03T23:46:36.668 [DEBUG] [Thread-124798] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:46:36.765 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:46:36.777 [DEBUG] [Thread-124801] [transport.py] [_log()] starting thread (client mode): 0xed5d930
2025-11-03T23:46:36.777 [DEBUG] [Thread-124801] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:46:36.795 [DEBUG] [Thread-124801] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:46:36.795 [INFO] [Thread-124801] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:46:36.803 [DEBUG] [Thread-124801] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:46:36.804 [DEBUG] [Thread-124801] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:46:36.804 [DEBUG] [Thread-124801] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:46:36.804 [DEBUG] [Thread-124801] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:46:36.804 [DEBUG] [Thread-124801] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:46:36.804 [DEBUG] [Thread-124801] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:46:36.804 [DEBUG] [Thread-124801] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:46:36.804 [DEBUG] [Thread-124801] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:46:36.805 [DEBUG] [Thread-124801] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:46:36.805 [DEBUG] [Thread-124801] [transport.py] [_log()] client lang: <none>
2025-11-03T23:46:36.805 [DEBUG] [Thread-124801] [transport.py] [_log()] server lang: <none>
2025-11-03T23:46:36.805 [DEBUG] [Thread-124801] [transport.py] [_log()] kex follows: False
2025-11-03T23:46:36.805 [DEBUG] [Thread-124801] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:46:36.805 [DEBUG] [Thread-124801] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:46:36.805 [DEBUG] [Thread-124801] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:46:36.805 [DEBUG] [Thread-124801] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:46:36.805 [DEBUG] [Thread-124801] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:46:36.806 [DEBUG] [Thread-124801] [transport.py] [_log()] Compression: none
2025-11-03T23:46:36.806 [DEBUG] [Thread-124801] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:46:36.867 [DEBUG] [Thread-124801] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:46:36.868 [DEBUG] [Thread-124801] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:46:36.868 [DEBUG] [Thread-124801] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:46:36.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:46:36.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:46:36.925 [DEBUG] [Thread-124801] [transport.py] [_log()] userauth is OK
2025-11-03T23:46:36.925 [DEBUG] [Thread-124801] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:46:36.925 [DEBUG] [Thread-124801] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:46:36.925 [DEBUG] [Thread-124801] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:46:36.925 [DEBUG] [Thread-124801] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:46:36.945 [INFO] [Thread-124801] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:46:36.946 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:46:36.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:46:37.807 [DEBUG] [Thread-124801] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:46:37.807 [DEBUG] [Thread-124801] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:46:37.846 [DEBUG] [Thread-124801] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:46:37.847 [DEBUG] [Thread-124801] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:46:37.857 [DEBUG] [Thread-124801] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:46:37.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:46:37.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:46:37.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:46:37.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:46:37.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:46:37.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:46:37.895 [DEBUG] [Thread-124801] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:46:39.336 [DEBUG] [Thread-124803 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:46:42.268 [DEBUG] [Thread-124804 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:46:54.382 [DEBUG] [Thread-124805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:46:58.757 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:47:01.799 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:47:07.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:47:07.916 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:47:07.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:47:08.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 46, 41), 29.45, 12.41, 0.0, 17.75, 18.61, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:47:08.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:46:41
2025-11-03T23:47:08.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:47:08.999 [DEBUG] [Thread-124806] [transport.py] [_log()] starting thread (client mode): 0xed5fc10
2025-11-03T23:47:08.999 [DEBUG] [Thread-124806] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:47:09.021 [DEBUG] [Thread-124806] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:47:09.022 [INFO] [Thread-124806] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:47:09.025 [DEBUG] [Thread-124806] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:47:09.025 [DEBUG] [Thread-124806] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:47:09.025 [DEBUG] [Thread-124806] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:47:09.025 [DEBUG] [Thread-124806] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:47:09.026 [DEBUG] [Thread-124806] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:47:09.026 [DEBUG] [Thread-124806] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:47:09.026 [DEBUG] [Thread-124806] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:47:09.026 [DEBUG] [Thread-124806] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:47:09.026 [DEBUG] [Thread-124806] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:47:09.026 [DEBUG] [Thread-124806] [transport.py] [_log()] client lang: <none>
2025-11-03T23:47:09.026 [DEBUG] [Thread-124806] [transport.py] [_log()] server lang: <none>
2025-11-03T23:47:09.027 [DEBUG] [Thread-124806] [transport.py] [_log()] kex follows: False
2025-11-03T23:47:09.027 [DEBUG] [Thread-124806] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:47:09.027 [DEBUG] [Thread-124806] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:47:09.027 [DEBUG] [Thread-124806] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:47:09.027 [DEBUG] [Thread-124806] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:47:09.027 [DEBUG] [Thread-124806] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:47:09.027 [DEBUG] [Thread-124806] [transport.py] [_log()] Compression: none
2025-11-03T23:47:09.027 [DEBUG] [Thread-124806] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:47:09.046 [DEBUG] [Thread-124806] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:47:09.046 [DEBUG] [Thread-124806] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:47:09.047 [DEBUG] [Thread-124806] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:47:09.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:47:09.048 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:47:09.049 [DEBUG] [Thread-124806] [transport.py] [_log()] userauth is OK
2025-11-03T23:47:09.049 [DEBUG] [Thread-124806] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:47:09.049 [DEBUG] [Thread-124806] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:47:09.049 [DEBUG] [Thread-124806] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:47:09.049 [DEBUG] [Thread-124806] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:47:09.073 [INFO] [Thread-124806] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:47:09.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:47:09.425 [DEBUG] [Thread-124808 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:47:09.720 [DEBUG] [Thread-124806] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:47:09.720 [DEBUG] [Thread-124806] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:47:09.720 [DEBUG] [Thread-124806] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:47:09.761 [DEBUG] [Thread-124806] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:47:09.762 [DEBUG] [Thread-124806] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:47:09.763 [DEBUG] [Thread-124806] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:47:09.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:47:09.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:47:09.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:47:09.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:47:09.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:47:09.782 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:47:09.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:47:09.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:47:09.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:47:09.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.907391 -999.00  +19.00  14.65     17   -6.10 1 1 1 1 1     0    0 24.77 -5.85 ZNESW 15.5 14.7 307.8 21.1 19.0 -25.2 18.9 -24.1 18.7 -23.8 18.9 -24.7
2025-11-03T23:47:09.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:47:09.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:47:09.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.907391
2025-11-03T23:47:09.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:47:09.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:47:09.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:47:09.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:47:09.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:47:09.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:46:41', tmtdew=29.45, humidity=12.41, cloud=0.0, wind=17.75, temperature=18.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:46:38.582', atlas_cloud=1, atlas_rain=1, zp_data=[0.011749999999999261, -0.021749999999999048, 0.06425000000000125, -0.03850000000000087, 0.05000000000000071, -0.00024999999999941735, -0.29800000000000004, -0.07124999999999915, 0.07449999999999868, 0.036000000000001364, 0.11674999999999969, 0.057000000000000384, 0.04899999999999949, 0.05674999999999919, -0.9240000000000013, -0.23150000000000048, 0.07424999999999926, 0.09949999999999903, 0.17799999999999905, 0.13824999999999932, 0.13100000000000023, 0.07774999999999821, -0.12074999999999925, 0.010749999999999815, 0.05799999999999983, 0.16849999999999987, 0.16075000000000017, 0.2524999999999995, 0.274, 0.15900000000000247, -0.18649999999999878, 0.06950000000000145, 0.06625000000000014], zp_timestamp='2025-11-03T21:44:00')
2025-11-03T23:47:09.783 [DEBUG] [Thread-124806] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:47:09.855 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:47:09.868 [DEBUG] [Thread-124810] [transport.py] [_log()] starting thread (client mode): 0xedb3760
2025-11-03T23:47:09.868 [DEBUG] [Thread-124810] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:47:09.884 [DEBUG] [Thread-124810] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:47:09.884 [INFO] [Thread-124810] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:47:09.894 [DEBUG] [Thread-124810] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:47:09.894 [DEBUG] [Thread-124810] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:47:09.894 [DEBUG] [Thread-124810] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:47:09.894 [DEBUG] [Thread-124810] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:47:09.894 [DEBUG] [Thread-124810] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:47:09.894 [DEBUG] [Thread-124810] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:47:09.894 [DEBUG] [Thread-124810] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:47:09.894 [DEBUG] [Thread-124810] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:47:09.894 [DEBUG] [Thread-124810] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:47:09.894 [DEBUG] [Thread-124810] [transport.py] [_log()] client lang: <none>
2025-11-03T23:47:09.894 [DEBUG] [Thread-124810] [transport.py] [_log()] server lang: <none>
2025-11-03T23:47:09.894 [DEBUG] [Thread-124810] [transport.py] [_log()] kex follows: False
2025-11-03T23:47:09.894 [DEBUG] [Thread-124810] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:47:09.894 [DEBUG] [Thread-124810] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:47:09.894 [DEBUG] [Thread-124810] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:47:09.894 [DEBUG] [Thread-124810] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:47:09.894 [DEBUG] [Thread-124810] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:47:09.894 [DEBUG] [Thread-124810] [transport.py] [_log()] Compression: none
2025-11-03T23:47:09.894 [DEBUG] [Thread-124810] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:47:09.953 [DEBUG] [Thread-124810] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:47:09.953 [DEBUG] [Thread-124810] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:47:09.953 [DEBUG] [Thread-124810] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:47:09.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:47:09.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:47:10.018 [DEBUG] [Thread-124810] [transport.py] [_log()] userauth is OK
2025-11-03T23:47:10.018 [DEBUG] [Thread-124810] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:47:10.018 [DEBUG] [Thread-124810] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:47:10.018 [DEBUG] [Thread-124810] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:47:10.018 [DEBUG] [Thread-124810] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:47:10.033 [INFO] [Thread-124810] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:47:10.033 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:47:10.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:47:10.400 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:47:10.401 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:47:10.871 [DEBUG] [Thread-124810] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:47:10.871 [DEBUG] [Thread-124810] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:47:10.919 [DEBUG] [Thread-124810] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:47:10.920 [DEBUG] [Thread-124810] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:47:10.929 [DEBUG] [Thread-124810] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:47:10.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:47:10.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:47:10.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:47:10.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:47:10.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:47:10.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:47:10.973 [DEBUG] [Thread-124810] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:47:24.468 [DEBUG] [Thread-124812 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:47:39.531 [DEBUG] [Thread-124813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:47:40.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:47:41.003 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:47:41.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:47:41.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 47, 14), 29.39, 12.48, 0.0, 18.07, 18.63, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:47:41.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:47:14
2025-11-03T23:47:41.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:47:42.038 [DEBUG] [Thread-124814] [transport.py] [_log()] starting thread (client mode): 0x1174de10
2025-11-03T23:47:42.039 [DEBUG] [Thread-124814] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:47:42.058 [DEBUG] [Thread-124814] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:47:42.058 [INFO] [Thread-124814] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:47:42.062 [DEBUG] [Thread-124814] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:47:42.062 [DEBUG] [Thread-124814] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:47:42.062 [DEBUG] [Thread-124814] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:47:42.062 [DEBUG] [Thread-124814] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:47:42.062 [DEBUG] [Thread-124814] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:47:42.063 [DEBUG] [Thread-124814] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:47:42.063 [DEBUG] [Thread-124814] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:47:42.063 [DEBUG] [Thread-124814] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:47:42.063 [DEBUG] [Thread-124814] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:47:42.063 [DEBUG] [Thread-124814] [transport.py] [_log()] client lang: <none>
2025-11-03T23:47:42.063 [DEBUG] [Thread-124814] [transport.py] [_log()] server lang: <none>
2025-11-03T23:47:42.063 [DEBUG] [Thread-124814] [transport.py] [_log()] kex follows: False
2025-11-03T23:47:42.063 [DEBUG] [Thread-124814] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:47:42.063 [DEBUG] [Thread-124814] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:47:42.063 [DEBUG] [Thread-124814] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:47:42.063 [DEBUG] [Thread-124814] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:47:42.064 [DEBUG] [Thread-124814] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:47:42.064 [DEBUG] [Thread-124814] [transport.py] [_log()] Compression: none
2025-11-03T23:47:42.064 [DEBUG] [Thread-124814] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:47:42.084 [DEBUG] [Thread-124814] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:47:42.084 [DEBUG] [Thread-124814] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:47:42.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:47:42.085 [DEBUG] [Thread-124814] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:47:42.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:47:42.088 [DEBUG] [Thread-124814] [transport.py] [_log()] userauth is OK
2025-11-03T23:47:42.088 [DEBUG] [Thread-124814] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:47:42.088 [DEBUG] [Thread-124814] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:47:42.089 [DEBUG] [Thread-124814] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:47:42.089 [DEBUG] [Thread-124814] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:47:42.111 [INFO] [Thread-124814] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:47:42.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:47:42.593 [DEBUG] [Thread-124816 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:47:42.752 [DEBUG] [Thread-124814] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:47:42.753 [DEBUG] [Thread-124814] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:47:42.753 [DEBUG] [Thread-124814] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:47:42.794 [DEBUG] [Thread-124814] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:47:42.794 [DEBUG] [Thread-124814] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:47:42.798 [DEBUG] [Thread-124814] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:47:42.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:47:42.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:47:42.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:47:42.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:47:42.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:47:42.822 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:47:42.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:47:42.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:47:42.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:47:42.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.907738 -999.00  +18.90  15.67     17   -6.10 1 1 1 1 1     0    0 24.86 -5.68 ZNESW 18.6 15.7 294.4 18.8 19.0 -25.0 18.9 -24.2 18.7 -23.7 19.0 -24.9
2025-11-03T23:47:42.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:47:42.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:47:42.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.907738
2025-11-03T23:47:42.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:47:42.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:47:42.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:47:42.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:47:42.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:47:42.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:47:14', tmtdew=29.39, humidity=12.48, cloud=0.0, wind=18.07, temperature=18.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:47:08.563', atlas_cloud=1, atlas_rain=1, zp_data=[0.011749999999999261, -0.021749999999999048, 0.06425000000000125, -0.03850000000000087, 0.05000000000000071, -0.00024999999999941735, -0.29800000000000004, -0.07124999999999915, 0.07449999999999868, 0.036000000000001364, 0.11674999999999969, 0.057000000000000384, 0.04899999999999949, 0.05674999999999919, -0.9240000000000013, -0.23150000000000048, 0.07424999999999926, 0.09949999999999903, 0.17799999999999905, 0.13824999999999932, 0.13100000000000023, 0.07774999999999821, -0.12074999999999925, 0.010749999999999815, 0.05799999999999983, 0.16849999999999987, 0.16075000000000017, 0.2524999999999995, 0.274, 0.15900000000000247, -0.18649999999999878, 0.06950000000000145, 0.06625000000000014], zp_timestamp='2025-11-03T21:44:00')
2025-11-03T23:47:42.825 [DEBUG] [Thread-124814] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:47:42.908 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:47:42.921 [DEBUG] [Thread-124818] [transport.py] [_log()] starting thread (client mode): 0xedc60e0
2025-11-03T23:47:42.921 [DEBUG] [Thread-124818] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:47:42.936 [DEBUG] [Thread-124818] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:47:42.936 [INFO] [Thread-124818] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:47:42.944 [DEBUG] [Thread-124818] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:47:42.944 [DEBUG] [Thread-124818] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:47:42.944 [DEBUG] [Thread-124818] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:47:42.944 [DEBUG] [Thread-124818] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:47:42.945 [DEBUG] [Thread-124818] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:47:42.945 [DEBUG] [Thread-124818] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:47:42.945 [DEBUG] [Thread-124818] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:47:42.945 [DEBUG] [Thread-124818] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:47:42.945 [DEBUG] [Thread-124818] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:47:42.945 [DEBUG] [Thread-124818] [transport.py] [_log()] client lang: <none>
2025-11-03T23:47:42.945 [DEBUG] [Thread-124818] [transport.py] [_log()] server lang: <none>
2025-11-03T23:47:42.945 [DEBUG] [Thread-124818] [transport.py] [_log()] kex follows: False
2025-11-03T23:47:42.945 [DEBUG] [Thread-124818] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:47:42.945 [DEBUG] [Thread-124818] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:47:42.945 [DEBUG] [Thread-124818] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:47:42.945 [DEBUG] [Thread-124818] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:47:42.945 [DEBUG] [Thread-124818] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:47:42.945 [DEBUG] [Thread-124818] [transport.py] [_log()] Compression: none
2025-11-03T23:47:42.945 [DEBUG] [Thread-124818] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:47:43.007 [DEBUG] [Thread-124818] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:47:43.008 [DEBUG] [Thread-124818] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:47:43.008 [DEBUG] [Thread-124818] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:47:43.009 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:47:43.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:47:43.069 [DEBUG] [Thread-124818] [transport.py] [_log()] userauth is OK
2025-11-03T23:47:43.069 [DEBUG] [Thread-124818] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:47:43.069 [DEBUG] [Thread-124818] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:47:43.069 [DEBUG] [Thread-124818] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:47:43.069 [DEBUG] [Thread-124818] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:47:43.088 [INFO] [Thread-124818] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:47:43.089 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:47:43.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:47:43.917 [DEBUG] [Thread-124818] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:47:43.917 [DEBUG] [Thread-124818] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:47:43.966 [DEBUG] [Thread-124818] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:47:43.966 [DEBUG] [Thread-124818] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:47:43.975 [DEBUG] [Thread-124818] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:47:43.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:47:43.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:47:43.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:47:44.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:47:44.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:47:44.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:47:44.010 [DEBUG] [Thread-124818] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:47:54.565 [DEBUG] [Thread-124820 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:48:09.623 [DEBUG] [Thread-124821 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:48:10.601 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:48:10.602 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:48:14.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:48:14.007 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:48:14.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:48:14.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 47, 46), 29.37, 12.43, 0.0, 19.52, 18.58, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:48:14.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:47:46
2025-11-03T23:48:14.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:48:15.097 [DEBUG] [Thread-124822] [transport.py] [_log()] starting thread (client mode): 0xed5c400
2025-11-03T23:48:15.097 [DEBUG] [Thread-124822] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:48:15.116 [DEBUG] [Thread-124822] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:48:15.116 [INFO] [Thread-124822] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:48:15.119 [DEBUG] [Thread-124822] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:48:15.119 [DEBUG] [Thread-124822] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:48:15.119 [DEBUG] [Thread-124822] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:48:15.119 [DEBUG] [Thread-124822] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:48:15.119 [DEBUG] [Thread-124822] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:48:15.119 [DEBUG] [Thread-124822] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:48:15.119 [DEBUG] [Thread-124822] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:48:15.119 [DEBUG] [Thread-124822] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:48:15.119 [DEBUG] [Thread-124822] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:48:15.119 [DEBUG] [Thread-124822] [transport.py] [_log()] client lang: <none>
2025-11-03T23:48:15.119 [DEBUG] [Thread-124822] [transport.py] [_log()] server lang: <none>
2025-11-03T23:48:15.119 [DEBUG] [Thread-124822] [transport.py] [_log()] kex follows: False
2025-11-03T23:48:15.119 [DEBUG] [Thread-124822] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:48:15.119 [DEBUG] [Thread-124822] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:48:15.119 [DEBUG] [Thread-124822] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:48:15.120 [DEBUG] [Thread-124822] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:48:15.120 [DEBUG] [Thread-124822] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:48:15.120 [DEBUG] [Thread-124822] [transport.py] [_log()] Compression: none
2025-11-03T23:48:15.120 [DEBUG] [Thread-124822] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:48:15.135 [DEBUG] [Thread-124822] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:48:15.135 [DEBUG] [Thread-124822] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:48:15.135 [DEBUG] [Thread-124822] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:48:15.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:48:15.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:48:15.136 [DEBUG] [Thread-124822] [transport.py] [_log()] userauth is OK
2025-11-03T23:48:15.136 [DEBUG] [Thread-124822] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:48:15.136 [DEBUG] [Thread-124822] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:48:15.136 [DEBUG] [Thread-124822] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:48:15.136 [DEBUG] [Thread-124822] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:48:15.152 [INFO] [Thread-124822] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:48:15.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:48:15.779 [DEBUG] [Thread-124822] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:48:15.789 [DEBUG] [Thread-124822] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:48:15.790 [DEBUG] [Thread-124822] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:48:15.820 [DEBUG] [Thread-124822] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:48:15.821 [DEBUG] [Thread-124822] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:48:15.824 [DEBUG] [Thread-124822] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:48:15.836 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:48:15.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:48:15.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:48:15.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:48:15.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:48:15.847 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:48:15.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:48:15.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:48:15.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:48:15.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.908085 -999.00  +18.90  13.04     17   -6.10 1 1 1 1 1     0    0 24.78 -6.93 ZNESW 16.6 13.0 305.0 23.0 19.0 -25.0 18.9 -24.1 18.7 -23.9 19.0 -24.9
2025-11-03T23:48:15.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:48:15.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:48:15.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.908085
2025-11-03T23:48:15.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:48:15.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:48:15.850 [DEBUG] [Thread-124822] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:48:15.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:48:15.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:48:15.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:48:15.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:47:46', tmtdew=29.37, humidity=12.43, cloud=0.0, wind=19.52, temperature=18.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:47:38.544', atlas_cloud=1, atlas_rain=1, zp_data=[0.011749999999999261, -0.021749999999999048, 0.06425000000000125, -0.03850000000000087, 0.05000000000000071, -0.00024999999999941735, -0.29800000000000004, -0.07124999999999915, 0.07449999999999868, 0.036000000000001364, 0.11674999999999969, 0.057000000000000384, 0.04899999999999949, 0.05674999999999919, -0.9240000000000013, -0.23150000000000048, 0.07424999999999926, 0.09949999999999903, 0.17799999999999905, 0.13824999999999932, 0.13100000000000023, 0.07774999999999821, -0.12074999999999925, 0.010749999999999815, 0.05799999999999983, 0.16849999999999987, 0.16075000000000017, 0.2524999999999995, 0.274, 0.15900000000000247, -0.18649999999999878, 0.06950000000000145, 0.06625000000000014], zp_timestamp='2025-11-03T21:44:00')
2025-11-03T23:48:15.936 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:48:15.950 [DEBUG] [Thread-124825] [transport.py] [_log()] starting thread (client mode): 0x1174e680
2025-11-03T23:48:15.950 [DEBUG] [Thread-124825] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:48:15.966 [DEBUG] [Thread-124825] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:48:15.966 [INFO] [Thread-124825] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:48:15.977 [DEBUG] [Thread-124825] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:48:15.977 [DEBUG] [Thread-124825] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:48:15.977 [DEBUG] [Thread-124825] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:48:15.977 [DEBUG] [Thread-124825] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:48:15.977 [DEBUG] [Thread-124825] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:48:15.977 [DEBUG] [Thread-124825] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:48:15.978 [DEBUG] [Thread-124825] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:48:15.978 [DEBUG] [Thread-124825] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:48:15.978 [DEBUG] [Thread-124825] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:48:15.978 [DEBUG] [Thread-124825] [transport.py] [_log()] client lang: <none>
2025-11-03T23:48:15.978 [DEBUG] [Thread-124825] [transport.py] [_log()] server lang: <none>
2025-11-03T23:48:15.978 [DEBUG] [Thread-124825] [transport.py] [_log()] kex follows: False
2025-11-03T23:48:15.978 [DEBUG] [Thread-124825] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:48:15.978 [DEBUG] [Thread-124825] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:48:15.978 [DEBUG] [Thread-124825] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:48:15.978 [DEBUG] [Thread-124825] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:48:15.978 [DEBUG] [Thread-124825] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:48:15.978 [DEBUG] [Thread-124825] [transport.py] [_log()] Compression: none
2025-11-03T23:48:15.978 [DEBUG] [Thread-124825] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:48:16.036 [DEBUG] [Thread-124825] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:48:16.037 [DEBUG] [Thread-124825] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:48:16.038 [DEBUG] [Thread-124825] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:48:16.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:48:16.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:48:16.097 [DEBUG] [Thread-124825] [transport.py] [_log()] userauth is OK
2025-11-03T23:48:16.098 [DEBUG] [Thread-124825] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:48:16.098 [DEBUG] [Thread-124825] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:48:16.098 [DEBUG] [Thread-124825] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:48:16.098 [DEBUG] [Thread-124825] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:48:16.119 [INFO] [Thread-124825] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:48:16.119 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:48:16.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:48:16.973 [DEBUG] [Thread-124825] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:48:16.974 [DEBUG] [Thread-124825] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:48:17.024 [DEBUG] [Thread-124825] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:48:17.024 [DEBUG] [Thread-124825] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:48:17.036 [DEBUG] [Thread-124825] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:48:17.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:48:17.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:48:17.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:48:17.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:48:17.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:48:17.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:48:17.075 [DEBUG] [Thread-124825] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:48:24.648 [DEBUG] [Thread-124827 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:48:39.690 [DEBUG] [Thread-124828 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:48:43.807 [DEBUG] [Thread-124829 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:48:47.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:48:47.097 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:48:47.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:48:47.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 48, 18), 29.35, 12.46, 0.0, 19.73, 18.63, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:48:47.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:48:18
2025-11-03T23:48:48.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:48:48.242 [DEBUG] [Thread-124830] [transport.py] [_log()] starting thread (client mode): 0xed042e0
2025-11-03T23:48:48.243 [DEBUG] [Thread-124830] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:48:48.243 [DEBUG] [Thread-124830] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:48:48.243 [INFO] [Thread-124830] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:48:48.247 [DEBUG] [Thread-124830] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:48:48.247 [DEBUG] [Thread-124830] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:48:48.247 [DEBUG] [Thread-124830] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:48:48.247 [DEBUG] [Thread-124830] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:48:48.247 [DEBUG] [Thread-124830] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:48:48.247 [DEBUG] [Thread-124830] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:48:48.247 [DEBUG] [Thread-124830] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:48:48.247 [DEBUG] [Thread-124830] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:48:48.247 [DEBUG] [Thread-124830] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:48:48.247 [DEBUG] [Thread-124830] [transport.py] [_log()] client lang: <none>
2025-11-03T23:48:48.247 [DEBUG] [Thread-124830] [transport.py] [_log()] server lang: <none>
2025-11-03T23:48:48.247 [DEBUG] [Thread-124830] [transport.py] [_log()] kex follows: False
2025-11-03T23:48:48.247 [DEBUG] [Thread-124830] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:48:48.248 [DEBUG] [Thread-124830] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:48:48.248 [DEBUG] [Thread-124830] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:48:48.248 [DEBUG] [Thread-124830] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:48:48.248 [DEBUG] [Thread-124830] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:48:48.248 [DEBUG] [Thread-124830] [transport.py] [_log()] Compression: none
2025-11-03T23:48:48.248 [DEBUG] [Thread-124830] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:48:48.277 [DEBUG] [Thread-124830] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:48:48.281 [DEBUG] [Thread-124830] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:48:48.282 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:48:48.284 [DEBUG] [Thread-124830] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:48:48.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:48:48.286 [DEBUG] [Thread-124830] [transport.py] [_log()] userauth is OK
2025-11-03T23:48:48.287 [DEBUG] [Thread-124830] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:48:48.287 [DEBUG] [Thread-124830] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:48:48.287 [DEBUG] [Thread-124830] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:48:48.287 [DEBUG] [Thread-124830] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:48:48.313 [INFO] [Thread-124830] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:48:48.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:48:48.940 [DEBUG] [Thread-124830] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:48:48.940 [DEBUG] [Thread-124830] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:48:48.951 [DEBUG] [Thread-124830] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:48:48.982 [DEBUG] [Thread-124830] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:48:48.982 [DEBUG] [Thread-124830] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:48:48.986 [DEBUG] [Thread-124830] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:48:48.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:48:48.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:48:49.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:48:49.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:48:49.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:48:49.010 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:48:49.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:48:49.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:48:49.014 [DEBUG] [Thread-124830] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:48:49.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:48:49.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.908432 -999.00  +18.90  16.96     17   -6.10 1 1 1 1 1     0    0 24.93 -6.09 ZNESW 14.7 17.0 302.0 21.0 19.0 -25.2 18.9 -24.3 18.6 -24.0 19.0 -24.9
2025-11-03T23:48:49.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:48:49.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:48:49.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.908432
2025-11-03T23:48:49.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:48:49.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:48:49.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:48:49.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:48:49.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:48:49.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:48:18', tmtdew=29.35, humidity=12.46, cloud=0.0, wind=19.73, temperature=18.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:48:08.525', atlas_cloud=1, atlas_rain=1, zp_data=[0.011749999999999261, -0.021749999999999048, 0.06425000000000125, -0.03850000000000087, 0.05000000000000071, -0.00024999999999941735, -0.29800000000000004, -0.07124999999999915, 0.07449999999999868, 0.036000000000001364, 0.11674999999999969, 0.057000000000000384, 0.04899999999999949, 0.05674999999999919, -0.9240000000000013, -0.23150000000000048, 0.07424999999999926, 0.09949999999999903, 0.17799999999999905, 0.13824999999999932, 0.13100000000000023, 0.07774999999999821, -0.12074999999999925, 0.010749999999999815, 0.05799999999999983, 0.16849999999999987, 0.16075000000000017, 0.2524999999999995, 0.274, 0.15900000000000247, -0.18649999999999878, 0.06950000000000145, 0.06625000000000014], zp_timestamp='2025-11-03T21:47:00')
2025-11-03T23:48:49.119 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:48:49.131 [DEBUG] [Thread-124833] [transport.py] [_log()] starting thread (client mode): 0xedc51b0
2025-11-03T23:48:49.131 [DEBUG] [Thread-124833] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:48:49.148 [DEBUG] [Thread-124833] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:48:49.148 [INFO] [Thread-124833] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:48:49.156 [DEBUG] [Thread-124833] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:48:49.157 [DEBUG] [Thread-124833] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:48:49.157 [DEBUG] [Thread-124833] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:48:49.157 [DEBUG] [Thread-124833] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:48:49.157 [DEBUG] [Thread-124833] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:48:49.157 [DEBUG] [Thread-124833] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:48:49.157 [DEBUG] [Thread-124833] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:48:49.157 [DEBUG] [Thread-124833] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:48:49.157 [DEBUG] [Thread-124833] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:48:49.157 [DEBUG] [Thread-124833] [transport.py] [_log()] client lang: <none>
2025-11-03T23:48:49.157 [DEBUG] [Thread-124833] [transport.py] [_log()] server lang: <none>
2025-11-03T23:48:49.157 [DEBUG] [Thread-124833] [transport.py] [_log()] kex follows: False
2025-11-03T23:48:49.157 [DEBUG] [Thread-124833] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:48:49.157 [DEBUG] [Thread-124833] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:48:49.157 [DEBUG] [Thread-124833] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:48:49.157 [DEBUG] [Thread-124833] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:48:49.157 [DEBUG] [Thread-124833] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:48:49.157 [DEBUG] [Thread-124833] [transport.py] [_log()] Compression: none
2025-11-03T23:48:49.157 [DEBUG] [Thread-124833] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:48:49.215 [DEBUG] [Thread-124833] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:48:49.215 [DEBUG] [Thread-124833] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:48:49.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:48:49.215 [DEBUG] [Thread-124833] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:48:49.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:48:49.275 [DEBUG] [Thread-124833] [transport.py] [_log()] userauth is OK
2025-11-03T23:48:49.275 [DEBUG] [Thread-124833] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:48:49.275 [DEBUG] [Thread-124833] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:48:49.275 [DEBUG] [Thread-124833] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:48:49.275 [DEBUG] [Thread-124833] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:48:49.289 [INFO] [Thread-124833] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:48:49.289 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:48:49.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:48:50.134 [DEBUG] [Thread-124833] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:48:50.134 [DEBUG] [Thread-124833] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:48:50.183 [DEBUG] [Thread-124833] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:48:50.183 [DEBUG] [Thread-124833] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:48:50.192 [DEBUG] [Thread-124833] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:48:50.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:48:50.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:48:50.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:48:50.219 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:48:50.219 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:48:50.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:48:50.227 [DEBUG] [Thread-124833] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:48:54.720 [DEBUG] [Thread-124835 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:49:09.770 [DEBUG] [Thread-124836 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:49:10.813 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:49:10.815 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:49:20.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:49:20.258 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:49:20.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:49:21.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 48, 54), 29.35, 12.46, 0.0, 18.32, 18.63, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:49:21.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:48:54
2025-11-03T23:49:21.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:49:21.410 [DEBUG] [Thread-124837] [transport.py] [_log()] starting thread (client mode): 0x1174c490
2025-11-03T23:49:21.410 [DEBUG] [Thread-124837] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:49:21.430 [DEBUG] [Thread-124837] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:49:21.430 [INFO] [Thread-124837] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:49:21.433 [DEBUG] [Thread-124837] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:49:21.433 [DEBUG] [Thread-124837] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:49:21.433 [DEBUG] [Thread-124837] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:49:21.434 [DEBUG] [Thread-124837] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:49:21.434 [DEBUG] [Thread-124837] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:49:21.434 [DEBUG] [Thread-124837] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:49:21.434 [DEBUG] [Thread-124837] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:49:21.434 [DEBUG] [Thread-124837] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:49:21.434 [DEBUG] [Thread-124837] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:49:21.434 [DEBUG] [Thread-124837] [transport.py] [_log()] client lang: <none>
2025-11-03T23:49:21.434 [DEBUG] [Thread-124837] [transport.py] [_log()] server lang: <none>
2025-11-03T23:49:21.434 [DEBUG] [Thread-124837] [transport.py] [_log()] kex follows: False
2025-11-03T23:49:21.434 [DEBUG] [Thread-124837] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:49:21.434 [DEBUG] [Thread-124837] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:49:21.434 [DEBUG] [Thread-124837] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:49:21.434 [DEBUG] [Thread-124837] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:49:21.434 [DEBUG] [Thread-124837] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:49:21.434 [DEBUG] [Thread-124837] [transport.py] [_log()] Compression: none
2025-11-03T23:49:21.434 [DEBUG] [Thread-124837] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:49:21.451 [DEBUG] [Thread-124837] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:49:21.452 [DEBUG] [Thread-124837] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:49:21.452 [DEBUG] [Thread-124837] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:49:21.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:49:21.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:49:21.454 [DEBUG] [Thread-124837] [transport.py] [_log()] userauth is OK
2025-11-03T23:49:21.455 [DEBUG] [Thread-124837] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:49:21.455 [DEBUG] [Thread-124837] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:49:21.455 [DEBUG] [Thread-124837] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:49:21.455 [DEBUG] [Thread-124837] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:49:21.480 [INFO] [Thread-124837] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:49:21.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:49:22.139 [DEBUG] [Thread-124837] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:49:22.139 [DEBUG] [Thread-124837] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:49:22.140 [DEBUG] [Thread-124837] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:49:22.180 [DEBUG] [Thread-124837] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:49:22.180 [DEBUG] [Thread-124837] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:49:22.183 [DEBUG] [Thread-124837] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:49:22.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:49:22.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:49:22.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:49:22.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:49:22.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:49:22.205 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:49:22.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:49:22.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:49:22.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:49:22.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.908780 -999.00  +18.90  16.63     17   -6.10 1 1 1 1 1     0    0 24.89 -5.56 ZNESW 15.2 16.6 308.8 20.9 18.9 -25.2 18.9 -24.3 18.6 -23.9 18.9 -25.0
2025-11-03T23:49:22.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:49:22.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:49:22.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.908780
2025-11-03T23:49:22.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:49:22.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:49:22.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:49:22.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:49:22.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:49:22.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:48:54', tmtdew=29.35, humidity=12.46, cloud=0.0, wind=18.32, temperature=18.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:48:38.592', atlas_cloud=1, atlas_rain=1, zp_data=[0.011749999999999261, -0.021749999999999048, 0.06425000000000125, -0.03850000000000087, 0.05000000000000071, -0.00024999999999941735, -0.29800000000000004, -0.07124999999999915, 0.07449999999999868, 0.036000000000001364, 0.11674999999999969, 0.057000000000000384, 0.04899999999999949, 0.05674999999999919, -0.9240000000000013, -0.23150000000000048, 0.07424999999999926, 0.09949999999999903, 0.17799999999999905, 0.13824999999999932, 0.13100000000000023, 0.07774999999999821, -0.12074999999999925, 0.010749999999999815, 0.05799999999999983, 0.16849999999999987, 0.16075000000000017, 0.2524999999999995, 0.274, 0.15900000000000247, -0.18649999999999878, 0.06950000000000145, 0.06625000000000014], zp_timestamp='2025-11-03T21:47:00')
2025-11-03T23:49:22.208 [DEBUG] [Thread-124837] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:49:22.306 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:49:22.316 [DEBUG] [Thread-124840] [transport.py] [_log()] starting thread (client mode): 0xed04a30
2025-11-03T23:49:22.316 [DEBUG] [Thread-124840] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:49:22.332 [DEBUG] [Thread-124840] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:49:22.332 [INFO] [Thread-124840] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:49:22.340 [DEBUG] [Thread-124840] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:49:22.340 [DEBUG] [Thread-124840] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:49:22.340 [DEBUG] [Thread-124840] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:49:22.340 [DEBUG] [Thread-124840] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:49:22.340 [DEBUG] [Thread-124840] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:49:22.340 [DEBUG] [Thread-124840] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:49:22.340 [DEBUG] [Thread-124840] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:49:22.340 [DEBUG] [Thread-124840] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:49:22.340 [DEBUG] [Thread-124840] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:49:22.340 [DEBUG] [Thread-124840] [transport.py] [_log()] client lang: <none>
2025-11-03T23:49:22.340 [DEBUG] [Thread-124840] [transport.py] [_log()] server lang: <none>
2025-11-03T23:49:22.340 [DEBUG] [Thread-124840] [transport.py] [_log()] kex follows: False
2025-11-03T23:49:22.340 [DEBUG] [Thread-124840] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:49:22.340 [DEBUG] [Thread-124840] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:49:22.341 [DEBUG] [Thread-124840] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:49:22.341 [DEBUG] [Thread-124840] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:49:22.341 [DEBUG] [Thread-124840] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:49:22.341 [DEBUG] [Thread-124840] [transport.py] [_log()] Compression: none
2025-11-03T23:49:22.341 [DEBUG] [Thread-124840] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:49:22.399 [DEBUG] [Thread-124840] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:49:22.400 [DEBUG] [Thread-124840] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:49:22.400 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:49:22.401 [DEBUG] [Thread-124840] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:49:22.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:49:22.456 [DEBUG] [Thread-124840] [transport.py] [_log()] userauth is OK
2025-11-03T23:49:22.456 [DEBUG] [Thread-124840] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:49:22.456 [DEBUG] [Thread-124840] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:49:22.457 [DEBUG] [Thread-124840] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:49:22.457 [DEBUG] [Thread-124840] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:49:22.476 [INFO] [Thread-124840] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:49:22.476 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:49:22.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:49:23.317 [DEBUG] [Thread-124840] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:49:23.317 [DEBUG] [Thread-124840] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:49:23.366 [DEBUG] [Thread-124840] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:49:23.366 [DEBUG] [Thread-124840] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:49:23.374 [DEBUG] [Thread-124840] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:49:23.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:49:23.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:49:23.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:49:23.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:49:23.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:49:23.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:49:23.410 [DEBUG] [Thread-124840] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:49:24.797 [DEBUG] [Thread-124842 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:49:39.830 [DEBUG] [Thread-124843 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:49:44.039 [DEBUG] [Thread-124844 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:49:53.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:49:53.406 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:49:53.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:49:54.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 49, 27), 29.38, 12.43, 0.0, 18.14, 18.63, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:49:54.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:49:27
2025-11-03T23:49:54.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:49:54.511 [DEBUG] [Thread-124845] [transport.py] [_log()] starting thread (client mode): 0xed05030
2025-11-03T23:49:54.511 [DEBUG] [Thread-124845] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:49:54.530 [DEBUG] [Thread-124845] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:49:54.530 [INFO] [Thread-124845] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:49:54.533 [DEBUG] [Thread-124845] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:49:54.533 [DEBUG] [Thread-124845] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:49:54.533 [DEBUG] [Thread-124845] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:49:54.533 [DEBUG] [Thread-124845] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:49:54.533 [DEBUG] [Thread-124845] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:49:54.533 [DEBUG] [Thread-124845] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:49:54.533 [DEBUG] [Thread-124845] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:49:54.533 [DEBUG] [Thread-124845] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:49:54.533 [DEBUG] [Thread-124845] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:49:54.533 [DEBUG] [Thread-124845] [transport.py] [_log()] client lang: <none>
2025-11-03T23:49:54.533 [DEBUG] [Thread-124845] [transport.py] [_log()] server lang: <none>
2025-11-03T23:49:54.533 [DEBUG] [Thread-124845] [transport.py] [_log()] kex follows: False
2025-11-03T23:49:54.533 [DEBUG] [Thread-124845] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:49:54.533 [DEBUG] [Thread-124845] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:49:54.533 [DEBUG] [Thread-124845] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:49:54.534 [DEBUG] [Thread-124845] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:49:54.534 [DEBUG] [Thread-124845] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:49:54.534 [DEBUG] [Thread-124845] [transport.py] [_log()] Compression: none
2025-11-03T23:49:54.534 [DEBUG] [Thread-124845] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:49:54.551 [DEBUG] [Thread-124845] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:49:54.551 [DEBUG] [Thread-124845] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:49:54.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:49:54.552 [DEBUG] [Thread-124845] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:49:54.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:49:54.554 [DEBUG] [Thread-124845] [transport.py] [_log()] userauth is OK
2025-11-03T23:49:54.555 [DEBUG] [Thread-124845] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:49:54.555 [DEBUG] [Thread-124845] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:49:54.555 [DEBUG] [Thread-124845] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:49:54.555 [DEBUG] [Thread-124845] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:49:54.579 [INFO] [Thread-124845] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:49:54.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:49:54.874 [DEBUG] [Thread-124847 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:49:55.235 [DEBUG] [Thread-124845] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:49:55.235 [DEBUG] [Thread-124845] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:49:55.235 [DEBUG] [Thread-124845] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:49:55.276 [DEBUG] [Thread-124845] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:49:55.276 [DEBUG] [Thread-124845] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:49:55.279 [DEBUG] [Thread-124845] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:49:55.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:49:55.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:49:55.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:49:55.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:49:55.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:49:55.301 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:49:55.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:49:55.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:49:55.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:49:55.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.909127 -999.00  +18.90  16.73     17   -6.10 1 1 1 1 1     0    0 25.04 -6.17 ZNESW 17.5 16.7 300.6 20.4 19.0 -25.1 18.9 -24.0 18.7 -23.7 18.9 -24.9
2025-11-03T23:49:55.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:49:55.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:49:55.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.909127
2025-11-03T23:49:55.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:49:55.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:49:55.302 [DEBUG] [Thread-124845] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:49:55.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:49:55.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:49:55.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:49:55.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:49:27', tmtdew=29.38, humidity=12.43, cloud=0.0, wind=18.14, temperature=18.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:49:08.573', atlas_cloud=1, atlas_rain=1, zp_data=[0.011749999999999261, -0.021749999999999048, 0.06425000000000125, -0.03850000000000087, 0.05000000000000071, -0.00024999999999941735, -0.29800000000000004, -0.07124999999999915, 0.07449999999999868, 0.036000000000001364, 0.11674999999999969, 0.057000000000000384, 0.04899999999999949, 0.05674999999999919, -0.9240000000000013, -0.23150000000000048, 0.07424999999999926, 0.09949999999999903, 0.17799999999999905, 0.13824999999999932, 0.13100000000000023, 0.07774999999999821, -0.12074999999999925, 0.010749999999999815, 0.05799999999999983, 0.16849999999999987, 0.16075000000000017, 0.2524999999999995, 0.274, 0.15900000000000247, -0.18649999999999878, 0.06950000000000145, 0.06625000000000014], zp_timestamp='2025-11-03T21:47:00')
2025-11-03T23:49:55.376 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:49:55.387 [DEBUG] [Thread-124849] [transport.py] [_log()] starting thread (client mode): 0x1174df00
2025-11-03T23:49:55.388 [DEBUG] [Thread-124849] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:49:55.402 [DEBUG] [Thread-124849] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:49:55.402 [INFO] [Thread-124849] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:49:55.409 [DEBUG] [Thread-124849] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:49:55.409 [DEBUG] [Thread-124849] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:49:55.409 [DEBUG] [Thread-124849] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:49:55.409 [DEBUG] [Thread-124849] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:49:55.409 [DEBUG] [Thread-124849] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:49:55.409 [DEBUG] [Thread-124849] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:49:55.409 [DEBUG] [Thread-124849] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:49:55.409 [DEBUG] [Thread-124849] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:49:55.409 [DEBUG] [Thread-124849] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:49:55.410 [DEBUG] [Thread-124849] [transport.py] [_log()] client lang: <none>
2025-11-03T23:49:55.410 [DEBUG] [Thread-124849] [transport.py] [_log()] server lang: <none>
2025-11-03T23:49:55.410 [DEBUG] [Thread-124849] [transport.py] [_log()] kex follows: False
2025-11-03T23:49:55.410 [DEBUG] [Thread-124849] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:49:55.410 [DEBUG] [Thread-124849] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:49:55.410 [DEBUG] [Thread-124849] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:49:55.410 [DEBUG] [Thread-124849] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:49:55.410 [DEBUG] [Thread-124849] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:49:55.410 [DEBUG] [Thread-124849] [transport.py] [_log()] Compression: none
2025-11-03T23:49:55.410 [DEBUG] [Thread-124849] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:49:55.467 [DEBUG] [Thread-124849] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:49:55.467 [DEBUG] [Thread-124849] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:49:55.467 [DEBUG] [Thread-124849] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:49:55.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:49:55.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:49:55.525 [DEBUG] [Thread-124849] [transport.py] [_log()] userauth is OK
2025-11-03T23:49:55.525 [DEBUG] [Thread-124849] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:49:55.525 [DEBUG] [Thread-124849] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:49:55.525 [DEBUG] [Thread-124849] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:49:55.525 [DEBUG] [Thread-124849] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:49:55.539 [INFO] [Thread-124849] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:49:55.539 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:49:55.539 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:49:56.350 [DEBUG] [Thread-124849] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:49:56.350 [DEBUG] [Thread-124849] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:49:56.398 [DEBUG] [Thread-124849] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:49:56.398 [DEBUG] [Thread-124849] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:49:56.408 [DEBUG] [Thread-124849] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:49:56.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:49:56.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:49:56.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:49:56.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:49:56.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:49:56.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:49:56.448 [DEBUG] [Thread-124849] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:50:09.921 [DEBUG] [Thread-124851 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:50:11.016 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:50:11.017 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:50:24.992 [DEBUG] [Thread-124852 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:50:26.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:50:26.470 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:50:26.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:50:27.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 49, 59), 29.43, 12.43, 0.0, 19.71, 18.68, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:50:27.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:49:59
2025-11-03T23:50:27.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:50:27.541 [DEBUG] [Thread-124853] [transport.py] [_log()] starting thread (client mode): 0x1174d030
2025-11-03T23:50:27.542 [DEBUG] [Thread-124853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:50:27.560 [DEBUG] [Thread-124853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:50:27.561 [INFO] [Thread-124853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:50:27.564 [DEBUG] [Thread-124853] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:50:27.564 [DEBUG] [Thread-124853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:50:27.564 [DEBUG] [Thread-124853] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:50:27.564 [DEBUG] [Thread-124853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:50:27.564 [DEBUG] [Thread-124853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:50:27.564 [DEBUG] [Thread-124853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:50:27.564 [DEBUG] [Thread-124853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:50:27.564 [DEBUG] [Thread-124853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:50:27.564 [DEBUG] [Thread-124853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:50:27.564 [DEBUG] [Thread-124853] [transport.py] [_log()] client lang: <none>
2025-11-03T23:50:27.564 [DEBUG] [Thread-124853] [transport.py] [_log()] server lang: <none>
2025-11-03T23:50:27.564 [DEBUG] [Thread-124853] [transport.py] [_log()] kex follows: False
2025-11-03T23:50:27.564 [DEBUG] [Thread-124853] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:50:27.565 [DEBUG] [Thread-124853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:50:27.565 [DEBUG] [Thread-124853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:50:27.565 [DEBUG] [Thread-124853] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:50:27.565 [DEBUG] [Thread-124853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:50:27.565 [DEBUG] [Thread-124853] [transport.py] [_log()] Compression: none
2025-11-03T23:50:27.565 [DEBUG] [Thread-124853] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:50:27.585 [DEBUG] [Thread-124853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:50:27.586 [DEBUG] [Thread-124853] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:50:27.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:50:27.588 [DEBUG] [Thread-124853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:50:27.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:50:27.590 [DEBUG] [Thread-124853] [transport.py] [_log()] userauth is OK
2025-11-03T23:50:27.590 [DEBUG] [Thread-124853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:50:27.590 [DEBUG] [Thread-124853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:50:27.590 [DEBUG] [Thread-124853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:50:27.590 [DEBUG] [Thread-124853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:50:27.627 [INFO] [Thread-124853] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:50:27.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:50:28.232 [DEBUG] [Thread-124853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:50:28.232 [DEBUG] [Thread-124853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:50:28.241 [DEBUG] [Thread-124853] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:50:28.273 [DEBUG] [Thread-124853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:50:28.274 [DEBUG] [Thread-124853] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:50:28.276 [DEBUG] [Thread-124853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:50:28.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:50:28.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:50:28.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:50:28.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:50:28.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:50:28.294 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:50:28.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:50:28.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:50:28.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:50:28.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.909822 -999.00  +19.00  13.87     17   -6.10 1 1 1 1 1     0    0 24.70 -5.64 ZNESW 14.8 13.9 306.4 20.6 19.0 -25.2 18.9 -24.0 18.6 -23.8 18.9 -24.8
2025-11-03T23:50:28.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:50:28.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:50:28.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.909822
2025-11-03T23:50:28.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:50:28.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:50:28.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:50:28.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:50:28.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:50:28.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:49:59', tmtdew=29.43, humidity=12.43, cloud=0.0, wind=19.71, temperature=18.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:50:08.621', atlas_cloud=1, atlas_rain=1, zp_data=[0.011749999999999261, -0.021749999999999048, 0.06425000000000125, -0.03850000000000087, 0.05000000000000071, -0.00024999999999941735, -0.29800000000000004, -0.07124999999999915, 0.07449999999999868, 0.036000000000001364, 0.11674999999999969, 0.057000000000000384, 0.04899999999999949, 0.05674999999999919, -0.9240000000000013, -0.23150000000000048, 0.07424999999999926, 0.09949999999999903, 0.17799999999999905, 0.13824999999999932, 0.13100000000000023, 0.07774999999999821, -0.12074999999999925, 0.010749999999999815, 0.05799999999999983, 0.16849999999999987, 0.16075000000000017, 0.2524999999999995, 0.274, 0.15900000000000247, -0.18649999999999878, 0.06950000000000145, 0.06625000000000014], zp_timestamp='2025-11-03T21:47:00')
2025-11-03T23:50:28.296 [DEBUG] [Thread-124853] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:50:28.369 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:50:28.382 [DEBUG] [Thread-124856] [transport.py] [_log()] starting thread (client mode): 0xedc4e20
2025-11-03T23:50:28.383 [DEBUG] [Thread-124856] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:50:28.402 [DEBUG] [Thread-124856] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:50:28.402 [INFO] [Thread-124856] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:50:28.415 [DEBUG] [Thread-124856] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:50:28.415 [DEBUG] [Thread-124856] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:50:28.415 [DEBUG] [Thread-124856] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:50:28.415 [DEBUG] [Thread-124856] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:50:28.415 [DEBUG] [Thread-124856] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:50:28.415 [DEBUG] [Thread-124856] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:50:28.415 [DEBUG] [Thread-124856] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:50:28.415 [DEBUG] [Thread-124856] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:50:28.415 [DEBUG] [Thread-124856] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:50:28.415 [DEBUG] [Thread-124856] [transport.py] [_log()] client lang: <none>
2025-11-03T23:50:28.415 [DEBUG] [Thread-124856] [transport.py] [_log()] server lang: <none>
2025-11-03T23:50:28.415 [DEBUG] [Thread-124856] [transport.py] [_log()] kex follows: False
2025-11-03T23:50:28.415 [DEBUG] [Thread-124856] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:50:28.415 [DEBUG] [Thread-124856] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:50:28.415 [DEBUG] [Thread-124856] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:50:28.415 [DEBUG] [Thread-124856] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:50:28.415 [DEBUG] [Thread-124856] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:50:28.415 [DEBUG] [Thread-124856] [transport.py] [_log()] Compression: none
2025-11-03T23:50:28.415 [DEBUG] [Thread-124856] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:50:28.477 [DEBUG] [Thread-124856] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:50:28.477 [DEBUG] [Thread-124856] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:50:28.477 [DEBUG] [Thread-124856] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:50:28.477 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:50:28.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:50:28.543 [DEBUG] [Thread-124856] [transport.py] [_log()] userauth is OK
2025-11-03T23:50:28.543 [DEBUG] [Thread-124856] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:50:28.543 [DEBUG] [Thread-124856] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:50:28.543 [DEBUG] [Thread-124856] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:50:28.543 [DEBUG] [Thread-124856] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:50:28.559 [INFO] [Thread-124856] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:50:28.559 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:50:28.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:50:29.453 [DEBUG] [Thread-124856] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:50:29.453 [DEBUG] [Thread-124856] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:50:29.502 [DEBUG] [Thread-124856] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:50:29.503 [DEBUG] [Thread-124856] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:50:29.516 [DEBUG] [Thread-124856] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:50:29.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:50:29.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:50:29.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:50:29.553 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:50:29.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:50:29.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:50:29.564 [DEBUG] [Thread-124856] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:50:40.036 [DEBUG] [Thread-124858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:50:44.383 [DEBUG] [Thread-124859 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:50:55.085 [DEBUG] [Thread-124860 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:50:59.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:50:59.570 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:50:59.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:51:00.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 50, 35), 29.39, 12.43, 0.0, 20.13, 18.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:51:00.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:50:35
2025-11-03T23:51:00.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:51:00.670 [DEBUG] [Thread-124861] [transport.py] [_log()] starting thread (client mode): 0xedb38b0
2025-11-03T23:51:00.670 [DEBUG] [Thread-124861] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:51:00.684 [DEBUG] [Thread-124861] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:51:00.684 [INFO] [Thread-124861] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:51:00.687 [DEBUG] [Thread-124861] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:51:00.688 [DEBUG] [Thread-124861] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:51:00.688 [DEBUG] [Thread-124861] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:51:00.688 [DEBUG] [Thread-124861] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:51:00.688 [DEBUG] [Thread-124861] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:51:00.688 [DEBUG] [Thread-124861] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:51:00.688 [DEBUG] [Thread-124861] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:51:00.688 [DEBUG] [Thread-124861] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:51:00.688 [DEBUG] [Thread-124861] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:51:00.688 [DEBUG] [Thread-124861] [transport.py] [_log()] client lang: <none>
2025-11-03T23:51:00.688 [DEBUG] [Thread-124861] [transport.py] [_log()] server lang: <none>
2025-11-03T23:51:00.688 [DEBUG] [Thread-124861] [transport.py] [_log()] kex follows: False
2025-11-03T23:51:00.688 [DEBUG] [Thread-124861] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:51:00.688 [DEBUG] [Thread-124861] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:51:00.688 [DEBUG] [Thread-124861] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:51:00.689 [DEBUG] [Thread-124861] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:51:00.689 [DEBUG] [Thread-124861] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:51:00.689 [DEBUG] [Thread-124861] [transport.py] [_log()] Compression: none
2025-11-03T23:51:00.689 [DEBUG] [Thread-124861] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:51:00.717 [DEBUG] [Thread-124861] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:51:00.722 [DEBUG] [Thread-124861] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:51:00.724 [DEBUG] [Thread-124861] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:51:00.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:51:00.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:51:00.729 [DEBUG] [Thread-124861] [transport.py] [_log()] userauth is OK
2025-11-03T23:51:00.729 [DEBUG] [Thread-124861] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:51:00.729 [DEBUG] [Thread-124861] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:51:00.729 [DEBUG] [Thread-124861] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:51:00.729 [DEBUG] [Thread-124861] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:51:00.768 [INFO] [Thread-124861] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:51:00.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:51:01.407 [DEBUG] [Thread-124861] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:51:01.408 [DEBUG] [Thread-124861] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:51:01.417 [DEBUG] [Thread-124861] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:51:01.449 [DEBUG] [Thread-124861] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:51:01.449 [DEBUG] [Thread-124861] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:51:01.451 [DEBUG] [Thread-124861] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:51:01.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:51:01.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:51:01.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:51:01.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:51:01.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:51:01.473 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:51:01.473 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:51:01.473 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:51:01.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:51:01.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.910168 -999.00  +19.00  19.67     17   -6.10 1 1 1 1 1     0    0 25.00 -5.79 ZNESW 19.7 19.7 301.6 23.3 18.9 -25.3 18.9 -24.2 18.7 -23.9 18.9 -24.7
2025-11-03T23:51:01.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:51:01.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:51:01.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.910168
2025-11-03T23:51:01.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:51:01.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:51:01.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:51:01.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:51:01.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:51:01.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:50:35', tmtdew=29.39, humidity=12.43, cloud=0.0, wind=20.13, temperature=18.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:50:38.515', atlas_cloud=1, atlas_rain=1, zp_data=[0.011749999999999261, -0.021749999999999048, 0.06425000000000125, -0.03850000000000087, 0.05000000000000071, -0.00024999999999941735, -0.29800000000000004, -0.07124999999999915, 0.07449999999999868, 0.036000000000001364, 0.11674999999999969, 0.057000000000000384, 0.04899999999999949, 0.05674999999999919, -0.9240000000000013, -0.23150000000000048, 0.07424999999999926, 0.09949999999999903, 0.17799999999999905, 0.13824999999999932, 0.13100000000000023, 0.07774999999999821, -0.12074999999999925, 0.010749999999999815, 0.05799999999999983, 0.16849999999999987, 0.16075000000000017, 0.2524999999999995, 0.274, 0.15900000000000247, -0.18649999999999878, 0.06950000000000145, 0.06625000000000014], zp_timestamp='2025-11-03T21:47:00')
2025-11-03T23:51:01.483 [DEBUG] [Thread-124861] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:51:01.556 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:51:01.570 [DEBUG] [Thread-124864] [transport.py] [_log()] starting thread (client mode): 0xedb1c60
2025-11-03T23:51:01.570 [DEBUG] [Thread-124864] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:51:01.585 [DEBUG] [Thread-124864] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:51:01.585 [INFO] [Thread-124864] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:51:01.594 [DEBUG] [Thread-124864] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:51:01.594 [DEBUG] [Thread-124864] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:51:01.595 [DEBUG] [Thread-124864] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:51:01.595 [DEBUG] [Thread-124864] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:51:01.595 [DEBUG] [Thread-124864] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:51:01.595 [DEBUG] [Thread-124864] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:51:01.595 [DEBUG] [Thread-124864] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:51:01.595 [DEBUG] [Thread-124864] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:51:01.595 [DEBUG] [Thread-124864] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:51:01.595 [DEBUG] [Thread-124864] [transport.py] [_log()] client lang: <none>
2025-11-03T23:51:01.596 [DEBUG] [Thread-124864] [transport.py] [_log()] server lang: <none>
2025-11-03T23:51:01.596 [DEBUG] [Thread-124864] [transport.py] [_log()] kex follows: False
2025-11-03T23:51:01.596 [DEBUG] [Thread-124864] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:51:01.596 [DEBUG] [Thread-124864] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:51:01.597 [DEBUG] [Thread-124864] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:51:01.597 [DEBUG] [Thread-124864] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:51:01.597 [DEBUG] [Thread-124864] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:51:01.597 [DEBUG] [Thread-124864] [transport.py] [_log()] Compression: none
2025-11-03T23:51:01.597 [DEBUG] [Thread-124864] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:51:01.657 [DEBUG] [Thread-124864] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:51:01.658 [DEBUG] [Thread-124864] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:51:01.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:51:01.660 [DEBUG] [Thread-124864] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:51:01.662 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:51:01.719 [DEBUG] [Thread-124864] [transport.py] [_log()] userauth is OK
2025-11-03T23:51:01.720 [DEBUG] [Thread-124864] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:51:01.720 [DEBUG] [Thread-124864] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:51:01.720 [DEBUG] [Thread-124864] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:51:01.720 [DEBUG] [Thread-124864] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:51:01.734 [INFO] [Thread-124864] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:51:01.734 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:51:01.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:51:02.677 [DEBUG] [Thread-124864] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:51:02.677 [DEBUG] [Thread-124864] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:51:02.716 [DEBUG] [Thread-124864] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:51:02.716 [DEBUG] [Thread-124864] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:51:02.725 [DEBUG] [Thread-124864] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:51:02.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:51:02.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:51:02.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:51:02.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:51:02.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:51:02.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:51:02.761 [DEBUG] [Thread-124864] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:51:10.111 [DEBUG] [Thread-124866 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:51:11.222 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:51:11.226 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:51:25.199 [DEBUG] [Thread-124867 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:51:32.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:51:32.782 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:51:32.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:51:33.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 51, 7), 29.37, 12.45, 0.0, 20.12, 18.65, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:51:33.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:51:07
2025-11-03T23:51:33.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:51:33.906 [DEBUG] [Thread-124868] [transport.py] [_log()] starting thread (client mode): 0xedb2140
2025-11-03T23:51:33.907 [DEBUG] [Thread-124868] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:51:33.913 [DEBUG] [Thread-124868] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:51:33.913 [INFO] [Thread-124868] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:51:33.915 [DEBUG] [Thread-124868] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:51:33.915 [DEBUG] [Thread-124868] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:51:33.915 [DEBUG] [Thread-124868] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:51:33.915 [DEBUG] [Thread-124868] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:51:33.915 [DEBUG] [Thread-124868] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:51:33.915 [DEBUG] [Thread-124868] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:51:33.915 [DEBUG] [Thread-124868] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:51:33.915 [DEBUG] [Thread-124868] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:51:33.915 [DEBUG] [Thread-124868] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:51:33.915 [DEBUG] [Thread-124868] [transport.py] [_log()] client lang: <none>
2025-11-03T23:51:33.915 [DEBUG] [Thread-124868] [transport.py] [_log()] server lang: <none>
2025-11-03T23:51:33.915 [DEBUG] [Thread-124868] [transport.py] [_log()] kex follows: False
2025-11-03T23:51:33.915 [DEBUG] [Thread-124868] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:51:33.916 [DEBUG] [Thread-124868] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:51:33.916 [DEBUG] [Thread-124868] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:51:33.916 [DEBUG] [Thread-124868] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:51:33.916 [DEBUG] [Thread-124868] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:51:33.916 [DEBUG] [Thread-124868] [transport.py] [_log()] Compression: none
2025-11-03T23:51:33.916 [DEBUG] [Thread-124868] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:51:33.932 [DEBUG] [Thread-124868] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:51:33.934 [DEBUG] [Thread-124868] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:51:33.935 [DEBUG] [Thread-124868] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:51:33.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:51:33.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:51:33.937 [DEBUG] [Thread-124868] [transport.py] [_log()] userauth is OK
2025-11-03T23:51:33.937 [DEBUG] [Thread-124868] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:51:33.937 [DEBUG] [Thread-124868] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:51:33.937 [DEBUG] [Thread-124868] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:51:33.937 [DEBUG] [Thread-124868] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:51:33.948 [INFO] [Thread-124868] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:51:33.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:51:34.529 [DEBUG] [Thread-124868] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:51:34.529 [DEBUG] [Thread-124868] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:51:34.529 [DEBUG] [Thread-124868] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:51:34.569 [DEBUG] [Thread-124868] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:51:34.570 [DEBUG] [Thread-124868] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:51:34.572 [DEBUG] [Thread-124868] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:51:34.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:51:34.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:51:34.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:51:34.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:51:34.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:51:34.587 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:51:34.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:51:34.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:51:34.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:51:34.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.910516 -999.00  +19.00  16.40     17   -6.00 1 1 1 1 1     0    0 24.52 -5.43 ZNESW 18.0 16.4 299.0 21.6 18.9 -25.0 18.9 -24.0 18.7 -23.6 18.9 -24.7
2025-11-03T23:51:34.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:51:34.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:51:34.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.910516
2025-11-03T23:51:34.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:51:34.592 [DEBUG] [Thread-124868] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:51:34.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:51:34.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:51:34.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:51:34.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:51:34.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:51:07', tmtdew=29.37, humidity=12.45, cloud=0.0, wind=20.12, temperature=18.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:51:08.582', atlas_cloud=1, atlas_rain=1, zp_data=[0.06475000000000009, -0.049249999999998906, 0.16825000000000045, 0.13649999999999984, -0.022499999999999076, 0.06825000000000081, -0.16350000000000087, 0.009250000000001535, 0.10849999999999937, 0.10500000000000043, 0.08374999999999844, 0.0519999999999996, 0.1355000000000004, 0.0012499999999988631, -0.5120000000000005, -0.09050000000000047, 0.0702499999999997, 0.11599999999999966, 0.19049999999999834, 0.1322499999999991, 0.17849999999999966, 0.09424999999999883, -0.26374999999999993, 0.015750000000000597, 0.061500000000000554, 0.2419999999999991, 0.21175000000000033, 0.2245000000000008, 0.2940000000000005, 0.2240000000000002, -0.1559999999999988, 0.10450000000000159, 0.14374999999999893], zp_timestamp='2025-11-03T21:49:00')
2025-11-03T23:51:34.670 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:51:34.685 [DEBUG] [Thread-124871] [transport.py] [_log()] starting thread (client mode): 0x11763e50
2025-11-03T23:51:34.685 [DEBUG] [Thread-124871] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:51:34.708 [DEBUG] [Thread-124871] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:51:34.708 [INFO] [Thread-124871] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:51:34.720 [DEBUG] [Thread-124871] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:51:34.720 [DEBUG] [Thread-124871] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:51:34.720 [DEBUG] [Thread-124871] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:51:34.720 [DEBUG] [Thread-124871] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:51:34.720 [DEBUG] [Thread-124871] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:51:34.720 [DEBUG] [Thread-124871] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:51:34.720 [DEBUG] [Thread-124871] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:51:34.720 [DEBUG] [Thread-124871] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:51:34.720 [DEBUG] [Thread-124871] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:51:34.720 [DEBUG] [Thread-124871] [transport.py] [_log()] client lang: <none>
2025-11-03T23:51:34.720 [DEBUG] [Thread-124871] [transport.py] [_log()] server lang: <none>
2025-11-03T23:51:34.720 [DEBUG] [Thread-124871] [transport.py] [_log()] kex follows: False
2025-11-03T23:51:34.720 [DEBUG] [Thread-124871] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:51:34.720 [DEBUG] [Thread-124871] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:51:34.720 [DEBUG] [Thread-124871] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:51:34.720 [DEBUG] [Thread-124871] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:51:34.720 [DEBUG] [Thread-124871] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:51:34.720 [DEBUG] [Thread-124871] [transport.py] [_log()] Compression: none
2025-11-03T23:51:34.720 [DEBUG] [Thread-124871] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:51:34.779 [DEBUG] [Thread-124871] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:51:34.779 [DEBUG] [Thread-124871] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:51:34.779 [DEBUG] [Thread-124871] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:51:34.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:51:34.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:51:34.836 [DEBUG] [Thread-124871] [transport.py] [_log()] userauth is OK
2025-11-03T23:51:34.836 [DEBUG] [Thread-124871] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:51:34.836 [DEBUG] [Thread-124871] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:51:34.836 [DEBUG] [Thread-124871] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:51:34.836 [DEBUG] [Thread-124871] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:51:34.851 [INFO] [Thread-124871] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:51:34.851 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:51:34.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:51:35.671 [DEBUG] [Thread-124871] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:51:35.671 [DEBUG] [Thread-124871] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:51:35.719 [DEBUG] [Thread-124871] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:51:35.719 [DEBUG] [Thread-124871] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:51:35.728 [DEBUG] [Thread-124871] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:51:35.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:51:35.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:51:35.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:51:35.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:51:35.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:51:35.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:51:35.762 [DEBUG] [Thread-124871] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:51:40.227 [DEBUG] [Thread-124873 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:51:45.788 [DEBUG] [Thread-124874 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:51:55.287 [DEBUG] [Thread-124875 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:52:05.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:52:05.795 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:52:05.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:52:06.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 51, 40), 29.31, 12.49, 0.0, 19.64, 18.6, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:52:06.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:51:40
2025-11-03T23:52:06.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:52:06.995 [DEBUG] [Thread-124876] [transport.py] [_log()] starting thread (client mode): 0xedb3d30
2025-11-03T23:52:06.995 [DEBUG] [Thread-124876] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:52:07.015 [DEBUG] [Thread-124876] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:52:07.015 [INFO] [Thread-124876] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:52:07.018 [DEBUG] [Thread-124876] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:52:07.018 [DEBUG] [Thread-124876] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:52:07.018 [DEBUG] [Thread-124876] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:52:07.018 [DEBUG] [Thread-124876] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:52:07.019 [DEBUG] [Thread-124876] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:52:07.019 [DEBUG] [Thread-124876] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:52:07.019 [DEBUG] [Thread-124876] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:52:07.019 [DEBUG] [Thread-124876] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:52:07.019 [DEBUG] [Thread-124876] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:52:07.019 [DEBUG] [Thread-124876] [transport.py] [_log()] client lang: <none>
2025-11-03T23:52:07.019 [DEBUG] [Thread-124876] [transport.py] [_log()] server lang: <none>
2025-11-03T23:52:07.019 [DEBUG] [Thread-124876] [transport.py] [_log()] kex follows: False
2025-11-03T23:52:07.019 [DEBUG] [Thread-124876] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:52:07.019 [DEBUG] [Thread-124876] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:52:07.019 [DEBUG] [Thread-124876] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:52:07.020 [DEBUG] [Thread-124876] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:52:07.020 [DEBUG] [Thread-124876] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:52:07.020 [DEBUG] [Thread-124876] [transport.py] [_log()] Compression: none
2025-11-03T23:52:07.020 [DEBUG] [Thread-124876] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:52:07.039 [DEBUG] [Thread-124876] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:52:07.040 [DEBUG] [Thread-124876] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:52:07.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:52:07.041 [DEBUG] [Thread-124876] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:52:07.041 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:52:07.043 [DEBUG] [Thread-124876] [transport.py] [_log()] userauth is OK
2025-11-03T23:52:07.043 [DEBUG] [Thread-124876] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:52:07.043 [DEBUG] [Thread-124876] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:52:07.043 [DEBUG] [Thread-124876] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:52:07.043 [DEBUG] [Thread-124876] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:52:07.060 [INFO] [Thread-124876] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:52:07.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:52:07.697 [DEBUG] [Thread-124876] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:52:07.697 [DEBUG] [Thread-124876] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:52:07.697 [DEBUG] [Thread-124876] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:52:07.738 [DEBUG] [Thread-124876] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:52:07.738 [DEBUG] [Thread-124876] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:52:07.740 [DEBUG] [Thread-124876] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:52:07.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:52:07.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:52:07.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:52:07.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:52:07.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:52:07.759 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:52:07.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:52:07.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:52:07.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:52:07.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.910863 -999.00  +19.00  16.47     17   -6.00 1 1 1 1 1     0    0 25.05 -5.99 ZNESW 17.1 16.5 299.2 20.6 19.0 -25.2 18.9 -24.0 18.7 -23.8 19.0 -24.7
2025-11-03T23:52:07.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:52:07.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:52:07.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.910863
2025-11-03T23:52:07.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:52:07.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:52:07.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:52:07.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:52:07.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:52:07.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:51:40', tmtdew=29.31, humidity=12.49, cloud=0.0, wind=19.64, temperature=18.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:51:38.563', atlas_cloud=1, atlas_rain=1, zp_data=[0.06475000000000009, -0.049249999999998906, 0.16825000000000045, 0.13649999999999984, -0.022499999999999076, 0.06825000000000081, -0.16350000000000087, 0.009250000000001535, 0.10849999999999937, 0.10500000000000043, 0.08374999999999844, 0.0519999999999996, 0.1355000000000004, 0.0012499999999988631, -0.5120000000000005, -0.09050000000000047, 0.0702499999999997, 0.11599999999999966, 0.19049999999999834, 0.1322499999999991, 0.17849999999999966, 0.09424999999999883, -0.26374999999999993, 0.015750000000000597, 0.061500000000000554, 0.2419999999999991, 0.21175000000000033, 0.2245000000000008, 0.2940000000000005, 0.2240000000000002, -0.1559999999999988, 0.10450000000000159, 0.14374999999999893], zp_timestamp='2025-11-03T21:49:00')
2025-11-03T23:52:07.760 [DEBUG] [Thread-124876] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:52:07.834 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:52:07.847 [DEBUG] [Thread-124879] [transport.py] [_log()] starting thread (client mode): 0xedb2530
2025-11-03T23:52:07.847 [DEBUG] [Thread-124879] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:52:07.862 [DEBUG] [Thread-124879] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:52:07.862 [INFO] [Thread-124879] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:52:07.870 [DEBUG] [Thread-124879] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:52:07.870 [DEBUG] [Thread-124879] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:52:07.870 [DEBUG] [Thread-124879] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:52:07.870 [DEBUG] [Thread-124879] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:52:07.871 [DEBUG] [Thread-124879] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:52:07.871 [DEBUG] [Thread-124879] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:52:07.871 [DEBUG] [Thread-124879] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:52:07.871 [DEBUG] [Thread-124879] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:52:07.871 [DEBUG] [Thread-124879] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:52:07.871 [DEBUG] [Thread-124879] [transport.py] [_log()] client lang: <none>
2025-11-03T23:52:07.871 [DEBUG] [Thread-124879] [transport.py] [_log()] server lang: <none>
2025-11-03T23:52:07.871 [DEBUG] [Thread-124879] [transport.py] [_log()] kex follows: False
2025-11-03T23:52:07.871 [DEBUG] [Thread-124879] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:52:07.871 [DEBUG] [Thread-124879] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:52:07.871 [DEBUG] [Thread-124879] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:52:07.871 [DEBUG] [Thread-124879] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:52:07.871 [DEBUG] [Thread-124879] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:52:07.871 [DEBUG] [Thread-124879] [transport.py] [_log()] Compression: none
2025-11-03T23:52:07.871 [DEBUG] [Thread-124879] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:52:07.932 [DEBUG] [Thread-124879] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:52:07.932 [DEBUG] [Thread-124879] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:52:07.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:52:07.933 [DEBUG] [Thread-124879] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:52:07.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:52:07.998 [DEBUG] [Thread-124879] [transport.py] [_log()] userauth is OK
2025-11-03T23:52:07.998 [DEBUG] [Thread-124879] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:52:07.999 [DEBUG] [Thread-124879] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:52:07.999 [DEBUG] [Thread-124879] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:52:07.999 [DEBUG] [Thread-124879] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:52:08.024 [INFO] [Thread-124879] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:52:08.025 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:52:08.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:52:08.857 [DEBUG] [Thread-124879] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:52:08.857 [DEBUG] [Thread-124879] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:52:08.906 [DEBUG] [Thread-124879] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:52:08.906 [DEBUG] [Thread-124879] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:52:08.916 [DEBUG] [Thread-124879] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:52:08.925 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:52:08.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:52:08.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:52:08.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:52:08.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:52:08.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:52:08.952 [DEBUG] [Thread-124879] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:52:10.319 [DEBUG] [Thread-124881 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:52:11.431 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:52:11.432 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:52:25.356 [DEBUG] [Thread-124882 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:52:38.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:52:38.955 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:52:38.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:52:39.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 52, 16), 29.33, 12.48, 0.0, 19.18, 18.61, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:52:39.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:52:16
2025-11-03T23:52:39.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:52:40.038 [DEBUG] [Thread-124883] [transport.py] [_log()] starting thread (client mode): 0xedc6cb0
2025-11-03T23:52:40.038 [DEBUG] [Thread-124883] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:52:40.055 [DEBUG] [Thread-124883] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:52:40.055 [INFO] [Thread-124883] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:52:40.058 [DEBUG] [Thread-124883] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:52:40.058 [DEBUG] [Thread-124883] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:52:40.058 [DEBUG] [Thread-124883] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:52:40.058 [DEBUG] [Thread-124883] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:52:40.058 [DEBUG] [Thread-124883] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:52:40.058 [DEBUG] [Thread-124883] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:52:40.058 [DEBUG] [Thread-124883] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:52:40.058 [DEBUG] [Thread-124883] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:52:40.058 [DEBUG] [Thread-124883] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:52:40.058 [DEBUG] [Thread-124883] [transport.py] [_log()] client lang: <none>
2025-11-03T23:52:40.058 [DEBUG] [Thread-124883] [transport.py] [_log()] server lang: <none>
2025-11-03T23:52:40.058 [DEBUG] [Thread-124883] [transport.py] [_log()] kex follows: False
2025-11-03T23:52:40.059 [DEBUG] [Thread-124883] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:52:40.059 [DEBUG] [Thread-124883] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:52:40.059 [DEBUG] [Thread-124883] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:52:40.059 [DEBUG] [Thread-124883] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:52:40.059 [DEBUG] [Thread-124883] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:52:40.059 [DEBUG] [Thread-124883] [transport.py] [_log()] Compression: none
2025-11-03T23:52:40.059 [DEBUG] [Thread-124883] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:52:40.078 [DEBUG] [Thread-124883] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:52:40.080 [DEBUG] [Thread-124883] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:52:40.080 [DEBUG] [Thread-124883] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:52:40.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:52:40.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:52:40.120 [DEBUG] [Thread-124883] [transport.py] [_log()] userauth is OK
2025-11-03T23:52:40.120 [DEBUG] [Thread-124883] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:52:40.120 [DEBUG] [Thread-124883] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:52:40.121 [DEBUG] [Thread-124883] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:52:40.121 [DEBUG] [Thread-124883] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:52:40.147 [INFO] [Thread-124883] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:52:40.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:52:40.403 [DEBUG] [Thread-124885 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:52:40.807 [DEBUG] [Thread-124883] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:52:40.807 [DEBUG] [Thread-124883] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:52:40.807 [DEBUG] [Thread-124883] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:52:40.848 [DEBUG] [Thread-124883] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:52:40.848 [DEBUG] [Thread-124883] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:52:40.852 [DEBUG] [Thread-124883] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:52:40.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:52:40.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:52:40.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:52:40.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:52:40.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:52:40.881 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:52:40.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:52:40.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:52:40.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:52:40.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.911210 -999.00  +19.00  18.40     17   -6.10 1 1 1 1 1     0    0 24.99 -5.92 ZNESW 17.9 18.4 307.0 20.5 19.0 -25.0 18.9 -24.1 18.7 -23.9 18.9 -24.8
2025-11-03T23:52:40.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:52:40.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:52:40.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.911210
2025-11-03T23:52:40.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:52:40.885 [DEBUG] [Thread-124883] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:52:40.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:52:40.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:52:40.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:52:40.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:52:40.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:52:16', tmtdew=29.33, humidity=12.48, cloud=0.0, wind=19.18, temperature=18.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:52:08.544', atlas_cloud=1, atlas_rain=1, zp_data=[0.06475000000000009, -0.049249999999998906, 0.16825000000000045, 0.13649999999999984, -0.022499999999999076, 0.06825000000000081, -0.16350000000000087, 0.009250000000001535, 0.10849999999999937, 0.10500000000000043, 0.08374999999999844, 0.0519999999999996, 0.1355000000000004, 0.0012499999999988631, -0.5120000000000005, -0.09050000000000047, 0.0702499999999997, 0.11599999999999966, 0.19049999999999834, 0.1322499999999991, 0.17849999999999966, 0.09424999999999883, -0.26374999999999993, 0.015750000000000597, 0.061500000000000554, 0.2419999999999991, 0.21175000000000033, 0.2245000000000008, 0.2940000000000005, 0.2240000000000002, -0.1559999999999988, 0.10450000000000159, 0.14374999999999893], zp_timestamp='2025-11-03T21:49:00')
2025-11-03T23:52:40.971 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:52:40.984 [DEBUG] [Thread-124887] [transport.py] [_log()] starting thread (client mode): 0xedb24a0
2025-11-03T23:52:40.985 [DEBUG] [Thread-124887] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:52:41.000 [DEBUG] [Thread-124887] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:52:41.000 [INFO] [Thread-124887] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:52:41.010 [DEBUG] [Thread-124887] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:52:41.010 [DEBUG] [Thread-124887] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:52:41.010 [DEBUG] [Thread-124887] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:52:41.010 [DEBUG] [Thread-124887] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:52:41.010 [DEBUG] [Thread-124887] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:52:41.010 [DEBUG] [Thread-124887] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:52:41.010 [DEBUG] [Thread-124887] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:52:41.010 [DEBUG] [Thread-124887] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:52:41.010 [DEBUG] [Thread-124887] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:52:41.010 [DEBUG] [Thread-124887] [transport.py] [_log()] client lang: <none>
2025-11-03T23:52:41.010 [DEBUG] [Thread-124887] [transport.py] [_log()] server lang: <none>
2025-11-03T23:52:41.010 [DEBUG] [Thread-124887] [transport.py] [_log()] kex follows: False
2025-11-03T23:52:41.011 [DEBUG] [Thread-124887] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:52:41.011 [DEBUG] [Thread-124887] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:52:41.011 [DEBUG] [Thread-124887] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:52:41.011 [DEBUG] [Thread-124887] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:52:41.011 [DEBUG] [Thread-124887] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:52:41.011 [DEBUG] [Thread-124887] [transport.py] [_log()] Compression: none
2025-11-03T23:52:41.011 [DEBUG] [Thread-124887] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:52:41.069 [DEBUG] [Thread-124887] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:52:41.070 [DEBUG] [Thread-124887] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:52:41.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:52:41.071 [DEBUG] [Thread-124887] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:52:41.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:52:41.132 [DEBUG] [Thread-124887] [transport.py] [_log()] userauth is OK
2025-11-03T23:52:41.132 [DEBUG] [Thread-124887] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:52:41.132 [DEBUG] [Thread-124887] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:52:41.132 [DEBUG] [Thread-124887] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:52:41.132 [DEBUG] [Thread-124887] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:52:41.156 [INFO] [Thread-124887] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:52:41.165 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:52:41.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:52:41.993 [DEBUG] [Thread-124887] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:52:41.993 [DEBUG] [Thread-124887] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:52:42.043 [DEBUG] [Thread-124887] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:52:42.043 [DEBUG] [Thread-124887] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:52:42.053 [DEBUG] [Thread-124887] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:52:42.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:52:42.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:52:42.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:52:42.099 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:52:42.099 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:52:42.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:52:42.110 [DEBUG] [Thread-124887] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:52:46.097 [DEBUG] [Thread-124889 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:52:55.437 [DEBUG] [Thread-124890 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:53:10.539 [DEBUG] [Thread-124891 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:53:11.642 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:53:11.643 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:53:12.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:53:12.106 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:53:12.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:53:12.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 52, 51), 29.31, 12.49, 0.0, 18.0, 18.56, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:53:12.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:52:51
2025-11-03T23:53:13.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:53:13.237 [DEBUG] [Thread-124892] [transport.py] [_log()] starting thread (client mode): 0x11762770
2025-11-03T23:53:13.238 [DEBUG] [Thread-124892] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:53:13.253 [DEBUG] [Thread-124892] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:53:13.253 [INFO] [Thread-124892] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:53:13.256 [DEBUG] [Thread-124892] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:53:13.256 [DEBUG] [Thread-124892] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:53:13.256 [DEBUG] [Thread-124892] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:53:13.256 [DEBUG] [Thread-124892] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:53:13.256 [DEBUG] [Thread-124892] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:53:13.256 [DEBUG] [Thread-124892] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:53:13.256 [DEBUG] [Thread-124892] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:53:13.256 [DEBUG] [Thread-124892] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:53:13.256 [DEBUG] [Thread-124892] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:53:13.256 [DEBUG] [Thread-124892] [transport.py] [_log()] client lang: <none>
2025-11-03T23:53:13.257 [DEBUG] [Thread-124892] [transport.py] [_log()] server lang: <none>
2025-11-03T23:53:13.257 [DEBUG] [Thread-124892] [transport.py] [_log()] kex follows: False
2025-11-03T23:53:13.257 [DEBUG] [Thread-124892] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:53:13.257 [DEBUG] [Thread-124892] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:53:13.257 [DEBUG] [Thread-124892] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:53:13.257 [DEBUG] [Thread-124892] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:53:13.257 [DEBUG] [Thread-124892] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:53:13.257 [DEBUG] [Thread-124892] [transport.py] [_log()] Compression: none
2025-11-03T23:53:13.257 [DEBUG] [Thread-124892] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:53:13.281 [DEBUG] [Thread-124892] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:53:13.283 [DEBUG] [Thread-124892] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:53:13.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:53:13.284 [DEBUG] [Thread-124892] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:53:13.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:53:13.286 [DEBUG] [Thread-124892] [transport.py] [_log()] userauth is OK
2025-11-03T23:53:13.286 [DEBUG] [Thread-124892] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:53:13.286 [DEBUG] [Thread-124892] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:53:13.286 [DEBUG] [Thread-124892] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:53:13.286 [DEBUG] [Thread-124892] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:53:13.298 [INFO] [Thread-124892] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:53:13.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:53:13.909 [DEBUG] [Thread-124892] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:53:13.909 [DEBUG] [Thread-124892] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:53:13.918 [DEBUG] [Thread-124892] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:53:13.951 [DEBUG] [Thread-124892] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:53:13.951 [DEBUG] [Thread-124892] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:53:13.953 [DEBUG] [Thread-124892] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:53:13.958 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:53:13.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:53:13.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:53:13.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:53:13.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:53:13.965 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:53:13.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:53:13.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:53:13.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:53:13.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.911904 -999.00  +19.00  18.04     17   -6.10 1 1 1 1 1     0    0 25.10 -5.96 ZNESW 17.8 18.0 305.0 19.6 19.0 -25.3 18.9 -24.2 18.7 -23.9 18.9 -24.8
2025-11-03T23:53:13.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:53:13.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:53:13.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.911904
2025-11-03T23:53:13.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:53:13.971 [DEBUG] [Thread-124892] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:53:13.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:53:13.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:53:13.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:53:13.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:53:13.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:52:51', tmtdew=29.31, humidity=12.49, cloud=0.0, wind=18.0, temperature=18.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:53:08.506', atlas_cloud=1, atlas_rain=1, zp_data=[0.06475000000000009, -0.049249999999998906, 0.16825000000000045, 0.13649999999999984, -0.022499999999999076, 0.06825000000000081, -0.16350000000000087, 0.009250000000001535, 0.10849999999999937, 0.10500000000000043, 0.08374999999999844, 0.0519999999999996, 0.1355000000000004, 0.0012499999999988631, -0.5120000000000005, -0.09050000000000047, 0.0702499999999997, 0.11599999999999966, 0.19049999999999834, 0.1322499999999991, 0.17849999999999966, 0.09424999999999883, -0.26374999999999993, 0.015750000000000597, 0.061500000000000554, 0.2419999999999991, 0.21175000000000033, 0.2245000000000008, 0.2940000000000005, 0.2240000000000002, -0.1559999999999988, 0.10450000000000159, 0.14374999999999893], zp_timestamp='2025-11-03T21:49:00')
2025-11-03T23:53:14.050 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:53:14.063 [DEBUG] [Thread-124895] [transport.py] [_log()] starting thread (client mode): 0xed5fc10
2025-11-03T23:53:14.063 [DEBUG] [Thread-124895] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:53:14.081 [DEBUG] [Thread-124895] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:53:14.081 [INFO] [Thread-124895] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:53:14.090 [DEBUG] [Thread-124895] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:53:14.090 [DEBUG] [Thread-124895] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:53:14.090 [DEBUG] [Thread-124895] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:53:14.090 [DEBUG] [Thread-124895] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:53:14.090 [DEBUG] [Thread-124895] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:53:14.090 [DEBUG] [Thread-124895] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:53:14.090 [DEBUG] [Thread-124895] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:53:14.090 [DEBUG] [Thread-124895] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:53:14.090 [DEBUG] [Thread-124895] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:53:14.090 [DEBUG] [Thread-124895] [transport.py] [_log()] client lang: <none>
2025-11-03T23:53:14.090 [DEBUG] [Thread-124895] [transport.py] [_log()] server lang: <none>
2025-11-03T23:53:14.090 [DEBUG] [Thread-124895] [transport.py] [_log()] kex follows: False
2025-11-03T23:53:14.090 [DEBUG] [Thread-124895] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:53:14.090 [DEBUG] [Thread-124895] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:53:14.090 [DEBUG] [Thread-124895] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:53:14.090 [DEBUG] [Thread-124895] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:53:14.090 [DEBUG] [Thread-124895] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:53:14.090 [DEBUG] [Thread-124895] [transport.py] [_log()] Compression: none
2025-11-03T23:53:14.090 [DEBUG] [Thread-124895] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:53:14.147 [DEBUG] [Thread-124895] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:53:14.147 [DEBUG] [Thread-124895] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:53:14.147 [DEBUG] [Thread-124895] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:53:14.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:53:14.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:53:14.204 [DEBUG] [Thread-124895] [transport.py] [_log()] userauth is OK
2025-11-03T23:53:14.204 [DEBUG] [Thread-124895] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:53:14.204 [DEBUG] [Thread-124895] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:53:14.204 [DEBUG] [Thread-124895] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:53:14.204 [DEBUG] [Thread-124895] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:53:14.218 [INFO] [Thread-124895] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:53:14.218 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:53:14.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:53:15.101 [DEBUG] [Thread-124895] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:53:15.102 [DEBUG] [Thread-124895] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:53:15.141 [DEBUG] [Thread-124895] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:53:15.141 [DEBUG] [Thread-124895] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:53:15.151 [DEBUG] [Thread-124895] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:53:15.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:53:15.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:53:15.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:53:15.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:53:15.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:53:15.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:53:15.192 [DEBUG] [Thread-124895] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:53:25.572 [DEBUG] [Thread-124897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:53:40.606 [DEBUG] [Thread-124898 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:53:45.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:53:45.191 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:53:45.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:53:46.743 [DEBUG] [Thread-124899 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:53:46.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 53, 24), 29.3, 12.51, 0.0, 18.02, 18.6, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:53:46.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:53:24
2025-11-03T23:53:46.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:53:47.075 [DEBUG] [Thread-124900] [transport.py] [_log()] starting thread (client mode): 0xedc7340
2025-11-03T23:53:47.075 [DEBUG] [Thread-124900] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:53:47.091 [DEBUG] [Thread-124900] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:53:47.091 [INFO] [Thread-124900] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:53:47.094 [DEBUG] [Thread-124900] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:53:47.094 [DEBUG] [Thread-124900] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:53:47.094 [DEBUG] [Thread-124900] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:53:47.094 [DEBUG] [Thread-124900] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:53:47.094 [DEBUG] [Thread-124900] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:53:47.094 [DEBUG] [Thread-124900] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:53:47.094 [DEBUG] [Thread-124900] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:53:47.094 [DEBUG] [Thread-124900] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:53:47.094 [DEBUG] [Thread-124900] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:53:47.094 [DEBUG] [Thread-124900] [transport.py] [_log()] client lang: <none>
2025-11-03T23:53:47.094 [DEBUG] [Thread-124900] [transport.py] [_log()] server lang: <none>
2025-11-03T23:53:47.094 [DEBUG] [Thread-124900] [transport.py] [_log()] kex follows: False
2025-11-03T23:53:47.094 [DEBUG] [Thread-124900] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:53:47.095 [DEBUG] [Thread-124900] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:53:47.095 [DEBUG] [Thread-124900] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:53:47.095 [DEBUG] [Thread-124900] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:53:47.095 [DEBUG] [Thread-124900] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:53:47.095 [DEBUG] [Thread-124900] [transport.py] [_log()] Compression: none
2025-11-03T23:53:47.095 [DEBUG] [Thread-124900] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:53:47.114 [DEBUG] [Thread-124900] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:53:47.114 [DEBUG] [Thread-124900] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:53:47.114 [DEBUG] [Thread-124900] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:53:47.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:53:47.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:53:47.156 [DEBUG] [Thread-124900] [transport.py] [_log()] userauth is OK
2025-11-03T23:53:47.156 [DEBUG] [Thread-124900] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:53:47.156 [DEBUG] [Thread-124900] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:53:47.156 [DEBUG] [Thread-124900] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:53:47.156 [DEBUG] [Thread-124900] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:53:47.176 [INFO] [Thread-124900] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:53:47.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:53:47.761 [DEBUG] [Thread-124900] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:53:47.761 [DEBUG] [Thread-124900] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:53:47.761 [DEBUG] [Thread-124900] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:53:47.802 [DEBUG] [Thread-124900] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:53:47.802 [DEBUG] [Thread-124900] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:53:47.805 [DEBUG] [Thread-124900] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:53:47.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:53:47.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:53:47.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:53:47.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:53:47.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:53:47.822 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:53:47.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:53:47.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:53:47.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:53:47.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.912252 -999.00  +19.00  18.51     17   -6.10 1 1 1 1 1     0    0 24.67 -6.22 ZNESW 18.5 18.5 300.2 22.0 18.9 -25.1 18.9 -24.0 18.6 -24.0 18.9 -24.8
2025-11-03T23:53:47.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:53:47.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:53:47.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.912252
2025-11-03T23:53:47.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:53:47.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:53:47.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:53:47.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:53:47.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:53:47.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:53:24', tmtdew=29.3, humidity=12.51, cloud=0.0, wind=18.02, temperature=18.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:53:38.573', atlas_cloud=1, atlas_rain=1, zp_data=[0.06475000000000009, -0.049249999999998906, 0.16825000000000045, 0.13649999999999984, -0.022499999999999076, 0.06825000000000081, -0.16350000000000087, 0.009250000000001535, 0.10849999999999937, 0.10500000000000043, 0.08374999999999844, 0.0519999999999996, 0.1355000000000004, 0.0012499999999988631, -0.5120000000000005, -0.09050000000000047, 0.0702499999999997, 0.11599999999999966, 0.19049999999999834, 0.1322499999999991, 0.17849999999999966, 0.09424999999999883, -0.26374999999999993, 0.015750000000000597, 0.061500000000000554, 0.2419999999999991, 0.21175000000000033, 0.2245000000000008, 0.2940000000000005, 0.2240000000000002, -0.1559999999999988, 0.10450000000000159, 0.14374999999999893], zp_timestamp='2025-11-03T21:49:00')
2025-11-03T23:53:47.824 [DEBUG] [Thread-124900] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:53:47.899 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:53:47.911 [DEBUG] [Thread-124903] [transport.py] [_log()] starting thread (client mode): 0xedb0dc0
2025-11-03T23:53:47.911 [DEBUG] [Thread-124903] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:53:47.925 [DEBUG] [Thread-124903] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:53:47.925 [INFO] [Thread-124903] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:53:47.933 [DEBUG] [Thread-124903] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:53:47.933 [DEBUG] [Thread-124903] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:53:47.933 [DEBUG] [Thread-124903] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:53:47.933 [DEBUG] [Thread-124903] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:53:47.933 [DEBUG] [Thread-124903] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:53:47.933 [DEBUG] [Thread-124903] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:53:47.933 [DEBUG] [Thread-124903] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:53:47.933 [DEBUG] [Thread-124903] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:53:47.933 [DEBUG] [Thread-124903] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:53:47.933 [DEBUG] [Thread-124903] [transport.py] [_log()] client lang: <none>
2025-11-03T23:53:47.933 [DEBUG] [Thread-124903] [transport.py] [_log()] server lang: <none>
2025-11-03T23:53:47.933 [DEBUG] [Thread-124903] [transport.py] [_log()] kex follows: False
2025-11-03T23:53:47.933 [DEBUG] [Thread-124903] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:53:47.933 [DEBUG] [Thread-124903] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:53:47.933 [DEBUG] [Thread-124903] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:53:47.933 [DEBUG] [Thread-124903] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:53:47.933 [DEBUG] [Thread-124903] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:53:47.933 [DEBUG] [Thread-124903] [transport.py] [_log()] Compression: none
2025-11-03T23:53:47.933 [DEBUG] [Thread-124903] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:53:47.990 [DEBUG] [Thread-124903] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:53:47.990 [DEBUG] [Thread-124903] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:53:47.990 [DEBUG] [Thread-124903] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:53:47.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:53:47.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:53:48.047 [DEBUG] [Thread-124903] [transport.py] [_log()] userauth is OK
2025-11-03T23:53:48.047 [DEBUG] [Thread-124903] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:53:48.048 [DEBUG] [Thread-124903] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:53:48.048 [DEBUG] [Thread-124903] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:53:48.048 [DEBUG] [Thread-124903] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:53:48.064 [INFO] [Thread-124903] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:53:48.065 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:53:48.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:53:48.945 [DEBUG] [Thread-124903] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:53:48.945 [DEBUG] [Thread-124903] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:53:48.993 [DEBUG] [Thread-124903] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:53:48.993 [DEBUG] [Thread-124903] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:53:49.002 [DEBUG] [Thread-124903] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:53:49.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:53:49.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:53:49.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:53:49.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:53:49.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:53:49.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:53:49.044 [DEBUG] [Thread-124903] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:53:55.644 [DEBUG] [Thread-124905 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:54:10.697 [DEBUG] [Thread-124906 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:54:11.853 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:54:11.855 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:54:19.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:54:19.066 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:54:19.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:54:19.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 53, 56), 29.31, 12.49, 0.0, 18.24, 18.56, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:54:19.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:53:56
2025-11-03T23:54:20.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:54:20.246 [DEBUG] [Thread-124907] [transport.py] [_log()] starting thread (client mode): 0x117e9f00
2025-11-03T23:54:20.246 [DEBUG] [Thread-124907] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:54:20.263 [DEBUG] [Thread-124907] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:54:20.263 [INFO] [Thread-124907] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:54:20.267 [DEBUG] [Thread-124907] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:54:20.267 [DEBUG] [Thread-124907] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:54:20.267 [DEBUG] [Thread-124907] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:54:20.267 [DEBUG] [Thread-124907] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:54:20.267 [DEBUG] [Thread-124907] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:54:20.267 [DEBUG] [Thread-124907] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:54:20.267 [DEBUG] [Thread-124907] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:54:20.267 [DEBUG] [Thread-124907] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:54:20.267 [DEBUG] [Thread-124907] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:54:20.267 [DEBUG] [Thread-124907] [transport.py] [_log()] client lang: <none>
2025-11-03T23:54:20.267 [DEBUG] [Thread-124907] [transport.py] [_log()] server lang: <none>
2025-11-03T23:54:20.267 [DEBUG] [Thread-124907] [transport.py] [_log()] kex follows: False
2025-11-03T23:54:20.267 [DEBUG] [Thread-124907] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:54:20.267 [DEBUG] [Thread-124907] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:54:20.267 [DEBUG] [Thread-124907] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:54:20.267 [DEBUG] [Thread-124907] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:54:20.267 [DEBUG] [Thread-124907] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:54:20.268 [DEBUG] [Thread-124907] [transport.py] [_log()] Compression: none
2025-11-03T23:54:20.268 [DEBUG] [Thread-124907] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:54:20.287 [DEBUG] [Thread-124907] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:54:20.288 [DEBUG] [Thread-124907] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:54:20.289 [DEBUG] [Thread-124907] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:54:20.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:54:20.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:54:20.328 [DEBUG] [Thread-124907] [transport.py] [_log()] userauth is OK
2025-11-03T23:54:20.328 [DEBUG] [Thread-124907] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:54:20.329 [DEBUG] [Thread-124907] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:54:20.329 [DEBUG] [Thread-124907] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:54:20.329 [DEBUG] [Thread-124907] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:54:20.354 [INFO] [Thread-124907] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:54:20.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:54:20.947 [DEBUG] [Thread-124907] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:54:20.947 [DEBUG] [Thread-124907] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:54:20.957 [DEBUG] [Thread-124907] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:54:20.988 [DEBUG] [Thread-124907] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:54:20.989 [DEBUG] [Thread-124907] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:54:20.993 [DEBUG] [Thread-124907] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:54:21.006 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:54:21.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:54:21.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:54:21.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:54:21.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:54:21.020 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:54:21.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:54:21.021 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:54:21.022 [DEBUG] [Thread-124907] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:54:21.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:54:21.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.912599 -999.00  +19.00  13.23     17   -6.10 1 1 1 1 1     0    0 24.52 -6.85 ZNESW 17.4 13.2 297.2 21.2 18.9 -25.1 18.9 -24.2 18.6 -23.9 18.9 -24.8
2025-11-03T23:54:21.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:54:21.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:54:21.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.912599
2025-11-03T23:54:21.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:54:21.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:54:21.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:54:21.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:54:21.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:54:21.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:53:56', tmtdew=29.31, humidity=12.49, cloud=0.0, wind=18.24, temperature=18.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:54:08.554', atlas_cloud=1, atlas_rain=1, zp_data=[0.06475000000000009, -0.049249999999998906, 0.16825000000000045, 0.13649999999999984, -0.022499999999999076, 0.06825000000000081, -0.16350000000000087, 0.009250000000001535, 0.10849999999999937, 0.10500000000000043, 0.08374999999999844, 0.0519999999999996, 0.1355000000000004, 0.0012499999999988631, -0.5120000000000005, -0.09050000000000047, 0.0702499999999997, 0.11599999999999966, 0.19049999999999834, 0.1322499999999991, 0.17849999999999966, 0.09424999999999883, -0.26374999999999993, 0.015750000000000597, 0.061500000000000554, 0.2419999999999991, 0.21175000000000033, 0.2245000000000008, 0.2940000000000005, 0.2240000000000002, -0.1559999999999988, 0.10450000000000159, 0.14374999999999893], zp_timestamp='2025-11-03T21:49:00')
2025-11-03T23:54:21.110 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:54:21.124 [DEBUG] [Thread-124910] [transport.py] [_log()] starting thread (client mode): 0x117e9ba0
2025-11-03T23:54:21.124 [DEBUG] [Thread-124910] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:54:21.144 [DEBUG] [Thread-124910] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:54:21.144 [INFO] [Thread-124910] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:54:21.155 [DEBUG] [Thread-124910] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:54:21.155 [DEBUG] [Thread-124910] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:54:21.155 [DEBUG] [Thread-124910] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:54:21.155 [DEBUG] [Thread-124910] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:54:21.155 [DEBUG] [Thread-124910] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:54:21.155 [DEBUG] [Thread-124910] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:54:21.156 [DEBUG] [Thread-124910] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:54:21.156 [DEBUG] [Thread-124910] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:54:21.156 [DEBUG] [Thread-124910] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:54:21.156 [DEBUG] [Thread-124910] [transport.py] [_log()] client lang: <none>
2025-11-03T23:54:21.156 [DEBUG] [Thread-124910] [transport.py] [_log()] server lang: <none>
2025-11-03T23:54:21.156 [DEBUG] [Thread-124910] [transport.py] [_log()] kex follows: False
2025-11-03T23:54:21.156 [DEBUG] [Thread-124910] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:54:21.156 [DEBUG] [Thread-124910] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:54:21.156 [DEBUG] [Thread-124910] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:54:21.156 [DEBUG] [Thread-124910] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:54:21.156 [DEBUG] [Thread-124910] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:54:21.156 [DEBUG] [Thread-124910] [transport.py] [_log()] Compression: none
2025-11-03T23:54:21.156 [DEBUG] [Thread-124910] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:54:21.216 [DEBUG] [Thread-124910] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:54:21.216 [DEBUG] [Thread-124910] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:54:21.216 [DEBUG] [Thread-124910] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:54:21.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:54:21.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:54:21.278 [DEBUG] [Thread-124910] [transport.py] [_log()] userauth is OK
2025-11-03T23:54:21.278 [DEBUG] [Thread-124910] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:54:21.278 [DEBUG] [Thread-124910] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:54:21.278 [DEBUG] [Thread-124910] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:54:21.278 [DEBUG] [Thread-124910] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:54:21.294 [INFO] [Thread-124910] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:54:21.294 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:54:21.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:54:22.166 [DEBUG] [Thread-124910] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:54:22.167 [DEBUG] [Thread-124910] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:54:22.215 [DEBUG] [Thread-124910] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:54:22.215 [DEBUG] [Thread-124910] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:54:22.226 [DEBUG] [Thread-124910] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:54:22.237 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:54:22.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:54:22.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:54:22.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:54:22.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:54:22.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:54:22.276 [DEBUG] [Thread-124910] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:54:25.726 [DEBUG] [Thread-124912 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:54:40.791 [DEBUG] [Thread-124913 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:54:47.091 [DEBUG] [Thread-124914 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:54:52.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:54:52.295 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:54:52.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:54:54.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 54, 29), 29.28, 12.53, 0.0, 18.16, 18.6, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:54:54.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:54:29
2025-11-03T23:54:54.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:54:54.576 [DEBUG] [Thread-124915] [transport.py] [_log()] starting thread (client mode): 0x11762fb0
2025-11-03T23:54:54.576 [DEBUG] [Thread-124915] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:54:54.596 [DEBUG] [Thread-124915] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:54:54.596 [INFO] [Thread-124915] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:54:54.599 [DEBUG] [Thread-124915] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:54:54.599 [DEBUG] [Thread-124915] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:54:54.599 [DEBUG] [Thread-124915] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:54:54.599 [DEBUG] [Thread-124915] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:54:54.599 [DEBUG] [Thread-124915] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:54:54.599 [DEBUG] [Thread-124915] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:54:54.599 [DEBUG] [Thread-124915] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:54:54.599 [DEBUG] [Thread-124915] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:54:54.599 [DEBUG] [Thread-124915] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:54:54.599 [DEBUG] [Thread-124915] [transport.py] [_log()] client lang: <none>
2025-11-03T23:54:54.599 [DEBUG] [Thread-124915] [transport.py] [_log()] server lang: <none>
2025-11-03T23:54:54.599 [DEBUG] [Thread-124915] [transport.py] [_log()] kex follows: False
2025-11-03T23:54:54.599 [DEBUG] [Thread-124915] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:54:54.600 [DEBUG] [Thread-124915] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:54:54.600 [DEBUG] [Thread-124915] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:54:54.600 [DEBUG] [Thread-124915] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:54:54.600 [DEBUG] [Thread-124915] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:54:54.600 [DEBUG] [Thread-124915] [transport.py] [_log()] Compression: none
2025-11-03T23:54:54.600 [DEBUG] [Thread-124915] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:54:54.616 [DEBUG] [Thread-124915] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:54:54.617 [DEBUG] [Thread-124915] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:54:54.617 [DEBUG] [Thread-124915] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:54:54.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:54:54.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:54:54.619 [DEBUG] [Thread-124915] [transport.py] [_log()] userauth is OK
2025-11-03T23:54:54.619 [DEBUG] [Thread-124915] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:54:54.619 [DEBUG] [Thread-124915] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:54:54.620 [DEBUG] [Thread-124915] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:54:54.620 [DEBUG] [Thread-124915] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:54:54.638 [INFO] [Thread-124915] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:54:54.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:54:55.236 [DEBUG] [Thread-124915] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:54:55.237 [DEBUG] [Thread-124915] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:54:55.238 [DEBUG] [Thread-124915] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:54:55.277 [DEBUG] [Thread-124915] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:54:55.277 [DEBUG] [Thread-124915] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:54:55.280 [DEBUG] [Thread-124915] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:54:55.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:54:55.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:54:55.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:54:55.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:54:55.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:54:55.298 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:54:55.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:54:55.298 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:54:55.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:54:55.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.912946 -999.00  +19.00  19.55     17   -6.10 1 1 1 1 1     0    0 24.89 -7.20 ZNESW 18.0 19.6 300.6 22.0 18.9 -25.0 18.9 -24.3 18.6 -23.7 18.9 -24.7
2025-11-03T23:54:55.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:54:55.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:54:55.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.912946
2025-11-03T23:54:55.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:54:55.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:54:55.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:54:55.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:54:55.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:54:55.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:54:29', tmtdew=29.28, humidity=12.53, cloud=0.0, wind=18.16, temperature=18.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:54:38.534', atlas_cloud=1, atlas_rain=1, zp_data=[0.06475000000000009, -0.049249999999998906, 0.16825000000000045, 0.13649999999999984, -0.022499999999999076, 0.06825000000000081, -0.16350000000000087, 0.009250000000001535, 0.10849999999999937, 0.10500000000000043, 0.08374999999999844, 0.0519999999999996, 0.1355000000000004, 0.0012499999999988631, -0.5120000000000005, -0.09050000000000047, 0.0702499999999997, 0.11599999999999966, 0.19049999999999834, 0.1322499999999991, 0.17849999999999966, 0.09424999999999883, -0.26374999999999993, 0.015750000000000597, 0.061500000000000554, 0.2419999999999991, 0.21175000000000033, 0.2245000000000008, 0.2940000000000005, 0.2240000000000002, -0.1559999999999988, 0.10450000000000159, 0.14374999999999893], zp_timestamp='2025-11-03T21:53:00')
2025-11-03T23:54:55.301 [DEBUG] [Thread-124915] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:54:55.374 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:54:55.386 [DEBUG] [Thread-124918] [transport.py] [_log()] starting thread (client mode): 0x11761c60
2025-11-03T23:54:55.386 [DEBUG] [Thread-124918] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:54:55.401 [DEBUG] [Thread-124918] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:54:55.401 [INFO] [Thread-124918] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:54:55.409 [DEBUG] [Thread-124918] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:54:55.409 [DEBUG] [Thread-124918] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:54:55.409 [DEBUG] [Thread-124918] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:54:55.409 [DEBUG] [Thread-124918] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:54:55.409 [DEBUG] [Thread-124918] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:54:55.409 [DEBUG] [Thread-124918] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:54:55.409 [DEBUG] [Thread-124918] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:54:55.409 [DEBUG] [Thread-124918] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:54:55.409 [DEBUG] [Thread-124918] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:54:55.409 [DEBUG] [Thread-124918] [transport.py] [_log()] client lang: <none>
2025-11-03T23:54:55.409 [DEBUG] [Thread-124918] [transport.py] [_log()] server lang: <none>
2025-11-03T23:54:55.409 [DEBUG] [Thread-124918] [transport.py] [_log()] kex follows: False
2025-11-03T23:54:55.409 [DEBUG] [Thread-124918] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:54:55.409 [DEBUG] [Thread-124918] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:54:55.409 [DEBUG] [Thread-124918] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:54:55.409 [DEBUG] [Thread-124918] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:54:55.409 [DEBUG] [Thread-124918] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:54:55.409 [DEBUG] [Thread-124918] [transport.py] [_log()] Compression: none
2025-11-03T23:54:55.409 [DEBUG] [Thread-124918] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:54:55.466 [DEBUG] [Thread-124918] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:54:55.466 [DEBUG] [Thread-124918] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:54:55.466 [DEBUG] [Thread-124918] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:54:55.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:54:55.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:54:55.523 [DEBUG] [Thread-124918] [transport.py] [_log()] userauth is OK
2025-11-03T23:54:55.523 [DEBUG] [Thread-124918] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:54:55.523 [DEBUG] [Thread-124918] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:54:55.523 [DEBUG] [Thread-124918] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:54:55.523 [DEBUG] [Thread-124918] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:54:55.539 [INFO] [Thread-124918] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:54:55.539 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:54:55.539 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:54:55.820 [DEBUG] [Thread-124920 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:54:56.387 [DEBUG] [Thread-124918] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:54:56.387 [DEBUG] [Thread-124918] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:54:56.435 [DEBUG] [Thread-124918] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:54:56.435 [DEBUG] [Thread-124918] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:54:56.445 [DEBUG] [Thread-124918] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:54:56.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:54:56.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:54:56.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:54:56.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:54:56.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:54:56.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:54:56.489 [DEBUG] [Thread-124918] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:55:10.857 [DEBUG] [Thread-124921 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:55:12.058 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:55:12.060 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:55:25.892 [DEBUG] [Thread-124922 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:55:26.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:55:26.487 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:55:26.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:55:28.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 55, 4), 29.32, 12.5, 0.0, 18.21, 18.63, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:55:28.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:55:04
2025-11-03T23:55:29.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:55:29.385 [DEBUG] [Thread-124923] [transport.py] [_log()] starting thread (client mode): 0x117eba60
2025-11-03T23:55:29.385 [DEBUG] [Thread-124923] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:55:29.397 [DEBUG] [Thread-124923] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:55:29.397 [INFO] [Thread-124923] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:55:29.399 [DEBUG] [Thread-124923] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:55:29.399 [DEBUG] [Thread-124923] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:55:29.399 [DEBUG] [Thread-124923] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:55:29.399 [DEBUG] [Thread-124923] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:55:29.399 [DEBUG] [Thread-124923] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:55:29.399 [DEBUG] [Thread-124923] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:55:29.399 [DEBUG] [Thread-124923] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:55:29.399 [DEBUG] [Thread-124923] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:55:29.399 [DEBUG] [Thread-124923] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:55:29.399 [DEBUG] [Thread-124923] [transport.py] [_log()] client lang: <none>
2025-11-03T23:55:29.399 [DEBUG] [Thread-124923] [transport.py] [_log()] server lang: <none>
2025-11-03T23:55:29.399 [DEBUG] [Thread-124923] [transport.py] [_log()] kex follows: False
2025-11-03T23:55:29.399 [DEBUG] [Thread-124923] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:55:29.399 [DEBUG] [Thread-124923] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:55:29.399 [DEBUG] [Thread-124923] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:55:29.399 [DEBUG] [Thread-124923] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:55:29.399 [DEBUG] [Thread-124923] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:55:29.399 [DEBUG] [Thread-124923] [transport.py] [_log()] Compression: none
2025-11-03T23:55:29.399 [DEBUG] [Thread-124923] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:55:29.406 [DEBUG] [Thread-124923] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:55:29.407 [DEBUG] [Thread-124923] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:55:29.407 [DEBUG] [Thread-124923] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:55:29.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:55:29.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:55:29.407 [DEBUG] [Thread-124923] [transport.py] [_log()] userauth is OK
2025-11-03T23:55:29.407 [DEBUG] [Thread-124923] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:55:29.407 [DEBUG] [Thread-124923] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:55:29.407 [DEBUG] [Thread-124923] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:55:29.407 [DEBUG] [Thread-124923] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:55:29.417 [INFO] [Thread-124923] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:55:29.417 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:55:29.993 [DEBUG] [Thread-124923] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:55:29.993 [DEBUG] [Thread-124923] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:55:29.994 [DEBUG] [Thread-124923] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:55:30.034 [DEBUG] [Thread-124923] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:55:30.034 [DEBUG] [Thread-124923] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:55:30.044 [DEBUG] [Thread-124923] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:55:30.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:55:30.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:55:30.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:55:30.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:55:30.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:55:30.067 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:55:30.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:55:30.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:55:30.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:55:30.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.913293 -999.00  +19.00  17.70     17   -6.10 1 1 1 1 1     0    0 24.63 -7.15 ZNESW 19.5 17.7 301.8 21.6 18.9 -25.1 18.8 -24.1 18.6 -23.8 18.9 -24.6
2025-11-03T23:55:30.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:55:30.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:55:30.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.913293
2025-11-03T23:55:30.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:55:30.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:55:30.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:55:30.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:55:30.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:55:30.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:55:04', tmtdew=29.32, humidity=12.5, cloud=0.0, wind=18.21, temperature=18.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:55:08.515', atlas_cloud=1, atlas_rain=1, zp_data=[0.06475000000000009, -0.049249999999998906, 0.16825000000000045, 0.13649999999999984, -0.022499999999999076, 0.06825000000000081, -0.16350000000000087, 0.009250000000001535, 0.10849999999999937, 0.10500000000000043, 0.08374999999999844, 0.0519999999999996, 0.1355000000000004, 0.0012499999999988631, -0.5120000000000005, -0.09050000000000047, 0.0702499999999997, 0.11599999999999966, 0.19049999999999834, 0.1322499999999991, 0.17849999999999966, 0.09424999999999883, -0.26374999999999993, 0.015750000000000597, 0.061500000000000554, 0.2419999999999991, 0.21175000000000033, 0.2245000000000008, 0.2940000000000005, 0.2240000000000002, -0.1559999999999988, 0.10450000000000159, 0.14374999999999893], zp_timestamp='2025-11-03T21:53:00')
2025-11-03T23:55:30.070 [DEBUG] [Thread-124923] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:55:30.157 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:55:30.169 [DEBUG] [Thread-124926] [transport.py] [_log()] starting thread (client mode): 0xed5e260
2025-11-03T23:55:30.169 [DEBUG] [Thread-124926] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:55:30.184 [DEBUG] [Thread-124926] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:55:30.184 [INFO] [Thread-124926] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:55:30.192 [DEBUG] [Thread-124926] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:55:30.193 [DEBUG] [Thread-124926] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:55:30.193 [DEBUG] [Thread-124926] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:55:30.193 [DEBUG] [Thread-124926] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:55:30.193 [DEBUG] [Thread-124926] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:55:30.193 [DEBUG] [Thread-124926] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:55:30.193 [DEBUG] [Thread-124926] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:55:30.193 [DEBUG] [Thread-124926] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:55:30.193 [DEBUG] [Thread-124926] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:55:30.194 [DEBUG] [Thread-124926] [transport.py] [_log()] client lang: <none>
2025-11-03T23:55:30.194 [DEBUG] [Thread-124926] [transport.py] [_log()] server lang: <none>
2025-11-03T23:55:30.194 [DEBUG] [Thread-124926] [transport.py] [_log()] kex follows: False
2025-11-03T23:55:30.194 [DEBUG] [Thread-124926] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:55:30.194 [DEBUG] [Thread-124926] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:55:30.194 [DEBUG] [Thread-124926] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:55:30.194 [DEBUG] [Thread-124926] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:55:30.195 [DEBUG] [Thread-124926] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:55:30.195 [DEBUG] [Thread-124926] [transport.py] [_log()] Compression: none
2025-11-03T23:55:30.195 [DEBUG] [Thread-124926] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:55:30.253 [DEBUG] [Thread-124926] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:55:30.253 [DEBUG] [Thread-124926] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:55:30.254 [DEBUG] [Thread-124926] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:55:30.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:55:30.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:55:30.312 [DEBUG] [Thread-124926] [transport.py] [_log()] userauth is OK
2025-11-03T23:55:30.312 [DEBUG] [Thread-124926] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:55:30.312 [DEBUG] [Thread-124926] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:55:30.312 [DEBUG] [Thread-124926] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:55:30.312 [DEBUG] [Thread-124926] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:55:30.331 [INFO] [Thread-124926] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:55:30.332 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:55:30.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:55:31.211 [DEBUG] [Thread-124926] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:55:31.211 [DEBUG] [Thread-124926] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:55:31.259 [DEBUG] [Thread-124926] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:55:31.259 [DEBUG] [Thread-124926] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:55:31.270 [DEBUG] [Thread-124926] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:55:31.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:55:31.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:55:31.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:55:31.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:55:31.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:55:31.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:55:31.312 [DEBUG] [Thread-124926] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:55:40.927 [DEBUG] [Thread-124928 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:55:47.233 [DEBUG] [Thread-124929 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:55:55.986 [DEBUG] [Thread-124930 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:56:01.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:56:01.341 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:56:01.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:56:02.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 55, 37), 29.34, 12.48, 0.0, 18.49, 18.63, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:56:02.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:55:37
2025-11-03T23:56:02.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:56:02.417 [DEBUG] [Thread-124931] [transport.py] [_log()] starting thread (client mode): 0x11761840
2025-11-03T23:56:02.418 [DEBUG] [Thread-124931] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:56:02.439 [DEBUG] [Thread-124931] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:56:02.439 [INFO] [Thread-124931] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:56:02.442 [DEBUG] [Thread-124931] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:56:02.442 [DEBUG] [Thread-124931] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:56:02.443 [DEBUG] [Thread-124931] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:56:02.443 [DEBUG] [Thread-124931] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:56:02.443 [DEBUG] [Thread-124931] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:56:02.443 [DEBUG] [Thread-124931] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:56:02.443 [DEBUG] [Thread-124931] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:56:02.443 [DEBUG] [Thread-124931] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:56:02.443 [DEBUG] [Thread-124931] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:56:02.443 [DEBUG] [Thread-124931] [transport.py] [_log()] client lang: <none>
2025-11-03T23:56:02.443 [DEBUG] [Thread-124931] [transport.py] [_log()] server lang: <none>
2025-11-03T23:56:02.443 [DEBUG] [Thread-124931] [transport.py] [_log()] kex follows: False
2025-11-03T23:56:02.443 [DEBUG] [Thread-124931] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:56:02.443 [DEBUG] [Thread-124931] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:56:02.443 [DEBUG] [Thread-124931] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:56:02.443 [DEBUG] [Thread-124931] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:56:02.443 [DEBUG] [Thread-124931] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:56:02.443 [DEBUG] [Thread-124931] [transport.py] [_log()] Compression: none
2025-11-03T23:56:02.444 [DEBUG] [Thread-124931] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:56:02.463 [DEBUG] [Thread-124931] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:56:02.464 [DEBUG] [Thread-124931] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:56:02.465 [DEBUG] [Thread-124931] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:56:02.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:56:02.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:56:02.467 [DEBUG] [Thread-124931] [transport.py] [_log()] userauth is OK
2025-11-03T23:56:02.467 [DEBUG] [Thread-124931] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:56:02.467 [DEBUG] [Thread-124931] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:56:02.468 [DEBUG] [Thread-124931] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:56:02.468 [DEBUG] [Thread-124931] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:56:02.493 [INFO] [Thread-124931] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:56:02.495 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:56:03.144 [DEBUG] [Thread-124931] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:56:03.144 [DEBUG] [Thread-124931] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:56:03.144 [DEBUG] [Thread-124931] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:56:03.185 [DEBUG] [Thread-124931] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:56:03.185 [DEBUG] [Thread-124931] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:56:03.189 [DEBUG] [Thread-124931] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:56:03.202 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:56:03.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:56:03.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:56:03.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:56:03.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:56:03.217 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:56:03.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:56:03.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:56:03.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:56:03.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.913293 -999.00  +19.00  17.70     17   -6.10 1 1 1 1 1     0    0 24.63 -7.15 ZNESW 19.5 17.7 301.8 21.6 18.9 -25.1 18.8 -24.1 18.6 -23.8 18.9 -24.6
2025-11-03T23:56:03.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:56:03.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:56:03.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.913293
2025-11-03T23:56:03.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:56:03.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:56:03.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:56:03.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:56:03.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:56:03.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:55:37', tmtdew=29.34, humidity=12.48, cloud=0.0, wind=18.49, temperature=18.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:55:08.515', atlas_cloud=1, atlas_rain=1, zp_data=[0.06475000000000009, -0.049249999999998906, 0.16825000000000045, 0.13649999999999984, -0.022499999999999076, 0.06825000000000081, -0.16350000000000087, 0.009250000000001535, 0.10849999999999937, 0.10500000000000043, 0.08374999999999844, 0.0519999999999996, 0.1355000000000004, 0.0012499999999988631, -0.5120000000000005, -0.09050000000000047, 0.0702499999999997, 0.11599999999999966, 0.19049999999999834, 0.1322499999999991, 0.17849999999999966, 0.09424999999999883, -0.26374999999999993, 0.015750000000000597, 0.061500000000000554, 0.2419999999999991, 0.21175000000000033, 0.2245000000000008, 0.2940000000000005, 0.2240000000000002, -0.1559999999999988, 0.10450000000000159, 0.14374999999999893], zp_timestamp='2025-11-03T21:53:00')
2025-11-03T23:56:03.220 [DEBUG] [Thread-124931] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:56:03.293 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:56:03.305 [DEBUG] [Thread-124934] [transport.py] [_log()] starting thread (client mode): 0x11760af0
2025-11-03T23:56:03.305 [DEBUG] [Thread-124934] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:56:03.321 [DEBUG] [Thread-124934] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:56:03.321 [INFO] [Thread-124934] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:56:03.329 [DEBUG] [Thread-124934] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:56:03.329 [DEBUG] [Thread-124934] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:56:03.329 [DEBUG] [Thread-124934] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:56:03.329 [DEBUG] [Thread-124934] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:56:03.329 [DEBUG] [Thread-124934] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:56:03.329 [DEBUG] [Thread-124934] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:56:03.329 [DEBUG] [Thread-124934] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:56:03.329 [DEBUG] [Thread-124934] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:56:03.329 [DEBUG] [Thread-124934] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:56:03.329 [DEBUG] [Thread-124934] [transport.py] [_log()] client lang: <none>
2025-11-03T23:56:03.329 [DEBUG] [Thread-124934] [transport.py] [_log()] server lang: <none>
2025-11-03T23:56:03.329 [DEBUG] [Thread-124934] [transport.py] [_log()] kex follows: False
2025-11-03T23:56:03.329 [DEBUG] [Thread-124934] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:56:03.329 [DEBUG] [Thread-124934] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:56:03.329 [DEBUG] [Thread-124934] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:56:03.329 [DEBUG] [Thread-124934] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:56:03.329 [DEBUG] [Thread-124934] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:56:03.329 [DEBUG] [Thread-124934] [transport.py] [_log()] Compression: none
2025-11-03T23:56:03.329 [DEBUG] [Thread-124934] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:56:03.387 [DEBUG] [Thread-124934] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:56:03.388 [DEBUG] [Thread-124934] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:56:03.388 [DEBUG] [Thread-124934] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:56:03.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:56:03.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:56:03.449 [DEBUG] [Thread-124934] [transport.py] [_log()] userauth is OK
2025-11-03T23:56:03.449 [DEBUG] [Thread-124934] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:56:03.449 [DEBUG] [Thread-124934] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:56:03.449 [DEBUG] [Thread-124934] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:56:03.449 [DEBUG] [Thread-124934] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:56:03.466 [INFO] [Thread-124934] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:56:03.466 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:56:03.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:56:04.336 [DEBUG] [Thread-124934] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:56:04.336 [DEBUG] [Thread-124934] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:56:04.389 [DEBUG] [Thread-124934] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:56:04.390 [DEBUG] [Thread-124934] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:56:04.402 [DEBUG] [Thread-124934] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:56:04.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:56:04.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:56:04.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:56:04.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:56:04.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:56:04.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:56:04.438 [DEBUG] [Thread-124934] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:56:11.021 [DEBUG] [Thread-124936 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:56:12.260 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:56:12.261 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:56:26.058 [DEBUG] [Thread-124937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:56:34.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:56:34.461 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:56:34.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:56:35.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 56, 9), 29.28, 12.53, 0.0, 18.35, 18.6, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:56:35.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:56:09
2025-11-03T23:56:35.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:56:35.514 [DEBUG] [Thread-124938] [transport.py] [_log()] starting thread (client mode): 0xed5cf10
2025-11-03T23:56:35.514 [DEBUG] [Thread-124938] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:56:35.534 [DEBUG] [Thread-124938] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:56:35.535 [INFO] [Thread-124938] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:56:35.537 [DEBUG] [Thread-124938] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:56:35.537 [DEBUG] [Thread-124938] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:56:35.538 [DEBUG] [Thread-124938] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:56:35.538 [DEBUG] [Thread-124938] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:56:35.538 [DEBUG] [Thread-124938] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:56:35.538 [DEBUG] [Thread-124938] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:56:35.538 [DEBUG] [Thread-124938] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:56:35.538 [DEBUG] [Thread-124938] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:56:35.538 [DEBUG] [Thread-124938] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:56:35.538 [DEBUG] [Thread-124938] [transport.py] [_log()] client lang: <none>
2025-11-03T23:56:35.538 [DEBUG] [Thread-124938] [transport.py] [_log()] server lang: <none>
2025-11-03T23:56:35.538 [DEBUG] [Thread-124938] [transport.py] [_log()] kex follows: False
2025-11-03T23:56:35.538 [DEBUG] [Thread-124938] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:56:35.538 [DEBUG] [Thread-124938] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:56:35.538 [DEBUG] [Thread-124938] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:56:35.547 [DEBUG] [Thread-124938] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:56:35.548 [DEBUG] [Thread-124938] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:56:35.548 [DEBUG] [Thread-124938] [transport.py] [_log()] Compression: none
2025-11-03T23:56:35.548 [DEBUG] [Thread-124938] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:56:35.565 [DEBUG] [Thread-124938] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:56:35.566 [DEBUG] [Thread-124938] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:56:35.566 [DEBUG] [Thread-124938] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:56:35.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:56:35.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:56:35.568 [DEBUG] [Thread-124938] [transport.py] [_log()] userauth is OK
2025-11-03T23:56:35.569 [DEBUG] [Thread-124938] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:56:35.569 [DEBUG] [Thread-124938] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:56:35.569 [DEBUG] [Thread-124938] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:56:35.569 [DEBUG] [Thread-124938] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:56:35.592 [INFO] [Thread-124938] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:56:35.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:56:36.193 [DEBUG] [Thread-124938] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:56:36.193 [DEBUG] [Thread-124938] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:56:36.193 [DEBUG] [Thread-124938] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:56:36.234 [DEBUG] [Thread-124938] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:56:36.234 [DEBUG] [Thread-124938] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:56:36.237 [DEBUG] [Thread-124938] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:56:36.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:56:36.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:56:36.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:56:36.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:56:36.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:56:36.255 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:56:36.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:56:36.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:56:36.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:56:36.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.913641 -999.00  +19.00  18.48     17   -6.10 1 1 1 1 1     0    0 24.79 -6.60 ZNESW 16.8 18.5 301.0 23.5 18.9 -25.3 18.9 -24.1 18.6 -23.8 18.9 -24.8
2025-11-03T23:56:36.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:56:36.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:56:36.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.913641
2025-11-03T23:56:36.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:56:36.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:56:36.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:56:36.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:56:36.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:56:36.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:56:09', tmtdew=29.28, humidity=12.53, cloud=0.0, wind=18.35, temperature=18.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:55:38.582', atlas_cloud=1, atlas_rain=1, zp_data=[0.06475000000000009, -0.049249999999998906, 0.16825000000000045, 0.13649999999999984, -0.022499999999999076, 0.06825000000000081, -0.16350000000000087, 0.009250000000001535, 0.10849999999999937, 0.10500000000000043, 0.08374999999999844, 0.0519999999999996, 0.1355000000000004, 0.0012499999999988631, -0.5120000000000005, -0.09050000000000047, 0.0702499999999997, 0.11599999999999966, 0.19049999999999834, 0.1322499999999991, 0.17849999999999966, 0.09424999999999883, -0.26374999999999993, 0.015750000000000597, 0.061500000000000554, 0.2419999999999991, 0.21175000000000033, 0.2245000000000008, 0.2940000000000005, 0.2240000000000002, -0.1559999999999988, 0.10450000000000159, 0.14374999999999893], zp_timestamp='2025-11-03T21:53:00')
2025-11-03T23:56:36.256 [DEBUG] [Thread-124938] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:56:36.331 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:56:36.343 [DEBUG] [Thread-124941] [transport.py] [_log()] starting thread (client mode): 0xed5ed40
2025-11-03T23:56:36.343 [DEBUG] [Thread-124941] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:56:36.363 [DEBUG] [Thread-124941] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:56:36.363 [INFO] [Thread-124941] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:56:36.377 [DEBUG] [Thread-124941] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:56:36.377 [DEBUG] [Thread-124941] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:56:36.377 [DEBUG] [Thread-124941] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:56:36.377 [DEBUG] [Thread-124941] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:56:36.377 [DEBUG] [Thread-124941] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:56:36.377 [DEBUG] [Thread-124941] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:56:36.377 [DEBUG] [Thread-124941] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:56:36.377 [DEBUG] [Thread-124941] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:56:36.378 [DEBUG] [Thread-124941] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:56:36.378 [DEBUG] [Thread-124941] [transport.py] [_log()] client lang: <none>
2025-11-03T23:56:36.378 [DEBUG] [Thread-124941] [transport.py] [_log()] server lang: <none>
2025-11-03T23:56:36.378 [DEBUG] [Thread-124941] [transport.py] [_log()] kex follows: False
2025-11-03T23:56:36.378 [DEBUG] [Thread-124941] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:56:36.378 [DEBUG] [Thread-124941] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:56:36.378 [DEBUG] [Thread-124941] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:56:36.378 [DEBUG] [Thread-124941] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:56:36.378 [DEBUG] [Thread-124941] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:56:36.378 [DEBUG] [Thread-124941] [transport.py] [_log()] Compression: none
2025-11-03T23:56:36.378 [DEBUG] [Thread-124941] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:56:36.431 [DEBUG] [Thread-124941] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:56:36.431 [DEBUG] [Thread-124941] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:56:36.431 [DEBUG] [Thread-124941] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:56:36.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:56:36.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:56:36.489 [DEBUG] [Thread-124941] [transport.py] [_log()] userauth is OK
2025-11-03T23:56:36.489 [DEBUG] [Thread-124941] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:56:36.489 [DEBUG] [Thread-124941] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:56:36.489 [DEBUG] [Thread-124941] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:56:36.489 [DEBUG] [Thread-124941] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:56:36.505 [INFO] [Thread-124941] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:56:36.506 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:56:36.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:56:37.357 [DEBUG] [Thread-124941] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:56:37.358 [DEBUG] [Thread-124941] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:56:37.406 [DEBUG] [Thread-124941] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:56:37.406 [DEBUG] [Thread-124941] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:56:37.415 [DEBUG] [Thread-124941] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:56:37.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:56:37.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:56:37.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:56:37.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:56:37.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:56:37.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:56:37.447 [DEBUG] [Thread-124941] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:56:41.088 [DEBUG] [Thread-124943 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:56:48.941 [DEBUG] [Thread-124944 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:56:56.133 [DEBUG] [Thread-124945 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:57:07.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:57:07.469 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:57:07.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:57:08.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 56, 42), 29.19, 12.51, 0.0, 22.09, 18.53, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:57:08.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:56:42
2025-11-03T23:57:08.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:57:08.590 [DEBUG] [Thread-124946] [transport.py] [_log()] starting thread (client mode): 0x117eb610
2025-11-03T23:57:08.590 [DEBUG] [Thread-124946] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:57:08.609 [DEBUG] [Thread-124946] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:57:08.609 [INFO] [Thread-124946] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:57:08.612 [DEBUG] [Thread-124946] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:57:08.612 [DEBUG] [Thread-124946] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:57:08.612 [DEBUG] [Thread-124946] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:57:08.612 [DEBUG] [Thread-124946] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:57:08.612 [DEBUG] [Thread-124946] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:57:08.612 [DEBUG] [Thread-124946] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:57:08.612 [DEBUG] [Thread-124946] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:57:08.612 [DEBUG] [Thread-124946] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:57:08.612 [DEBUG] [Thread-124946] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:57:08.612 [DEBUG] [Thread-124946] [transport.py] [_log()] client lang: <none>
2025-11-03T23:57:08.612 [DEBUG] [Thread-124946] [transport.py] [_log()] server lang: <none>
2025-11-03T23:57:08.612 [DEBUG] [Thread-124946] [transport.py] [_log()] kex follows: False
2025-11-03T23:57:08.612 [DEBUG] [Thread-124946] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:57:08.612 [DEBUG] [Thread-124946] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:57:08.612 [DEBUG] [Thread-124946] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:57:08.612 [DEBUG] [Thread-124946] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:57:08.613 [DEBUG] [Thread-124946] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:57:08.613 [DEBUG] [Thread-124946] [transport.py] [_log()] Compression: none
2025-11-03T23:57:08.613 [DEBUG] [Thread-124946] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:57:08.627 [DEBUG] [Thread-124946] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:57:08.627 [DEBUG] [Thread-124946] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:57:08.627 [DEBUG] [Thread-124946] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:57:08.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:57:08.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:57:08.628 [DEBUG] [Thread-124946] [transport.py] [_log()] userauth is OK
2025-11-03T23:57:08.628 [DEBUG] [Thread-124946] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:57:08.628 [DEBUG] [Thread-124946] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:57:08.628 [DEBUG] [Thread-124946] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:57:08.628 [DEBUG] [Thread-124946] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:57:08.638 [INFO] [Thread-124946] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:57:08.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:57:09.307 [DEBUG] [Thread-124946] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:57:09.307 [DEBUG] [Thread-124946] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:57:09.307 [DEBUG] [Thread-124946] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:57:09.349 [DEBUG] [Thread-124946] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:57:09.349 [DEBUG] [Thread-124946] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:57:09.352 [DEBUG] [Thread-124946] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:57:09.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:57:09.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:57:09.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:57:09.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:57:09.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:57:09.371 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:57:09.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:57:09.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:57:09.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:57:09.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.914335 -999.00  +19.00  18.71     17   -6.10 1 1 1 1 1     0    0 25.00 -5.47 ZNESW 18.4 18.7 303.4 21.3 18.9 -25.2 18.9 -24.1 18.6 -24.0 18.9 -24.8
2025-11-03T23:57:09.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:57:09.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:57:09.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.914335
2025-11-03T23:57:09.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:57:09.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:57:09.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:57:09.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:57:09.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:57:09.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:56:42', tmtdew=29.19, humidity=12.51, cloud=0.0, wind=22.09, temperature=18.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:56:38.544', atlas_cloud=1, atlas_rain=1, zp_data=[0.06475000000000009, -0.049249999999998906, 0.16825000000000045, 0.13649999999999984, -0.022499999999999076, 0.06825000000000081, -0.16350000000000087, 0.009250000000001535, 0.10849999999999937, 0.10500000000000043, 0.08374999999999844, 0.0519999999999996, 0.1355000000000004, 0.0012499999999988631, -0.5120000000000005, -0.09050000000000047, 0.0702499999999997, 0.11599999999999966, 0.19049999999999834, 0.1322499999999991, 0.17849999999999966, 0.09424999999999883, -0.26374999999999993, 0.015750000000000597, 0.061500000000000554, 0.2419999999999991, 0.21175000000000033, 0.2245000000000008, 0.2940000000000005, 0.2240000000000002, -0.1559999999999988, 0.10450000000000159, 0.14374999999999893], zp_timestamp='2025-11-03T21:53:00')
2025-11-03T23:57:09.372 [DEBUG] [Thread-124946] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:57:09.447 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:57:09.459 [DEBUG] [Thread-124949] [transport.py] [_log()] starting thread (client mode): 0xedb19c0
2025-11-03T23:57:09.459 [DEBUG] [Thread-124949] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:57:09.476 [DEBUG] [Thread-124949] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:57:09.476 [INFO] [Thread-124949] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:57:09.484 [DEBUG] [Thread-124949] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:57:09.484 [DEBUG] [Thread-124949] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:57:09.484 [DEBUG] [Thread-124949] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:57:09.484 [DEBUG] [Thread-124949] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:57:09.484 [DEBUG] [Thread-124949] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:57:09.484 [DEBUG] [Thread-124949] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:57:09.484 [DEBUG] [Thread-124949] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:57:09.484 [DEBUG] [Thread-124949] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:57:09.484 [DEBUG] [Thread-124949] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:57:09.484 [DEBUG] [Thread-124949] [transport.py] [_log()] client lang: <none>
2025-11-03T23:57:09.484 [DEBUG] [Thread-124949] [transport.py] [_log()] server lang: <none>
2025-11-03T23:57:09.484 [DEBUG] [Thread-124949] [transport.py] [_log()] kex follows: False
2025-11-03T23:57:09.484 [DEBUG] [Thread-124949] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:57:09.484 [DEBUG] [Thread-124949] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:57:09.484 [DEBUG] [Thread-124949] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:57:09.484 [DEBUG] [Thread-124949] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:57:09.484 [DEBUG] [Thread-124949] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:57:09.484 [DEBUG] [Thread-124949] [transport.py] [_log()] Compression: none
2025-11-03T23:57:09.484 [DEBUG] [Thread-124949] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:57:09.543 [DEBUG] [Thread-124949] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:57:09.543 [DEBUG] [Thread-124949] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:57:09.543 [DEBUG] [Thread-124949] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:57:09.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:57:09.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:57:09.599 [DEBUG] [Thread-124949] [transport.py] [_log()] userauth is OK
2025-11-03T23:57:09.599 [DEBUG] [Thread-124949] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:57:09.599 [DEBUG] [Thread-124949] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:57:09.599 [DEBUG] [Thread-124949] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:57:09.599 [DEBUG] [Thread-124949] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:57:09.613 [INFO] [Thread-124949] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:57:09.613 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:57:09.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:57:10.458 [DEBUG] [Thread-124949] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:57:10.459 [DEBUG] [Thread-124949] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:57:10.507 [DEBUG] [Thread-124949] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:57:10.508 [DEBUG] [Thread-124949] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:57:10.517 [DEBUG] [Thread-124949] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:57:10.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:57:10.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:57:10.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:57:10.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:57:10.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:57:10.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:57:10.554 [DEBUG] [Thread-124949] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:57:11.161 [DEBUG] [Thread-124951 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:57:12.473 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:57:12.474 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:57:26.216 [DEBUG] [Thread-124952 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:57:40.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:57:40.577 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:57:40.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:57:41.246 [DEBUG] [Thread-124953 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:57:41.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 57, 14), 29.16, 12.54, 0.0, 22.11, 18.52, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:57:41.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:57:14
2025-11-03T23:57:41.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:57:41.640 [DEBUG] [Thread-124954] [transport.py] [_log()] starting thread (client mode): 0xed5f190
2025-11-03T23:57:41.641 [DEBUG] [Thread-124954] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:57:41.660 [DEBUG] [Thread-124954] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:57:41.660 [INFO] [Thread-124954] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:57:41.664 [DEBUG] [Thread-124954] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:57:41.664 [DEBUG] [Thread-124954] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:57:41.664 [DEBUG] [Thread-124954] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:57:41.665 [DEBUG] [Thread-124954] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:57:41.665 [DEBUG] [Thread-124954] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:57:41.665 [DEBUG] [Thread-124954] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:57:41.665 [DEBUG] [Thread-124954] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:57:41.665 [DEBUG] [Thread-124954] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:57:41.665 [DEBUG] [Thread-124954] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:57:41.665 [DEBUG] [Thread-124954] [transport.py] [_log()] client lang: <none>
2025-11-03T23:57:41.665 [DEBUG] [Thread-124954] [transport.py] [_log()] server lang: <none>
2025-11-03T23:57:41.665 [DEBUG] [Thread-124954] [transport.py] [_log()] kex follows: False
2025-11-03T23:57:41.665 [DEBUG] [Thread-124954] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:57:41.666 [DEBUG] [Thread-124954] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:57:41.666 [DEBUG] [Thread-124954] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:57:41.666 [DEBUG] [Thread-124954] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:57:41.666 [DEBUG] [Thread-124954] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:57:41.666 [DEBUG] [Thread-124954] [transport.py] [_log()] Compression: none
2025-11-03T23:57:41.666 [DEBUG] [Thread-124954] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:57:41.692 [DEBUG] [Thread-124954] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:57:41.694 [DEBUG] [Thread-124954] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:57:41.695 [DEBUG] [Thread-124954] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:57:41.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:57:41.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:57:41.699 [DEBUG] [Thread-124954] [transport.py] [_log()] userauth is OK
2025-11-03T23:57:41.699 [DEBUG] [Thread-124954] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:57:41.699 [DEBUG] [Thread-124954] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:57:41.699 [DEBUG] [Thread-124954] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:57:41.700 [DEBUG] [Thread-124954] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:57:41.732 [INFO] [Thread-124954] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:57:41.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:57:42.361 [DEBUG] [Thread-124954] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:57:42.361 [DEBUG] [Thread-124954] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:57:42.370 [DEBUG] [Thread-124954] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:57:42.401 [DEBUG] [Thread-124954] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:57:42.402 [DEBUG] [Thread-124954] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:57:42.404 [DEBUG] [Thread-124954] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:57:42.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:57:42.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:57:42.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:57:42.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:57:42.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:57:42.426 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:57:42.426 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:57:42.426 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:57:42.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:57:42.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.914682 -999.00  +19.00  18.93     17   -6.10 1 1 1 1 1     0    0 24.48 -5.93 ZNESW 16.7 18.9 301.0 21.0 18.9 -25.2 18.9 -24.2 18.6 -23.8 18.9 -24.8
2025-11-03T23:57:42.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:57:42.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:57:42.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.914682
2025-11-03T23:57:42.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:57:42.436 [DEBUG] [Thread-124954] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:57:42.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:57:42.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:57:42.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:57:42.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:57:42.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:57:14', tmtdew=29.16, humidity=12.54, cloud=0.0, wind=22.11, temperature=18.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:57:08.525', atlas_cloud=1, atlas_rain=1, zp_data=[0.016750000000000043, -0.004749999999999588, 0.1172500000000003, 0.006999999999999673, 0.033500000000000085, -0.07225000000000037, -0.20700000000000074, -0.02474999999999916, 0.050499999999999545, 0.031500000000001194, 0.09325000000000117, 0.0730000000000004, 0.10350000000000037, 0.07225000000000037, -0.548, -0.11050000000000182, 0.07925000000000004, 0.0495000000000001, 0.13199999999999967, 0.14924999999999855, 0.11399999999999899, 0.008249999999998536, -1.0247499999999992, 0.06874999999999964, 0.058999999999999275, 0.1775000000000002, 0.20274999999999999, 0.18549999999999933, 0.266, 0.15800000000000125, -0.1869999999999994, 0.12600000000000122, 0.12874999999999837], zp_timestamp='2025-11-03T21:55:00')
2025-11-03T23:57:42.509 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:57:42.521 [DEBUG] [Thread-124957] [transport.py] [_log()] starting thread (client mode): 0xed41cf0
2025-11-03T23:57:42.522 [DEBUG] [Thread-124957] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:57:42.536 [DEBUG] [Thread-124957] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:57:42.536 [INFO] [Thread-124957] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:57:42.544 [DEBUG] [Thread-124957] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:57:42.544 [DEBUG] [Thread-124957] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:57:42.544 [DEBUG] [Thread-124957] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:57:42.544 [DEBUG] [Thread-124957] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:57:42.544 [DEBUG] [Thread-124957] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:57:42.544 [DEBUG] [Thread-124957] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:57:42.544 [DEBUG] [Thread-124957] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:57:42.544 [DEBUG] [Thread-124957] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:57:42.544 [DEBUG] [Thread-124957] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:57:42.544 [DEBUG] [Thread-124957] [transport.py] [_log()] client lang: <none>
2025-11-03T23:57:42.544 [DEBUG] [Thread-124957] [transport.py] [_log()] server lang: <none>
2025-11-03T23:57:42.544 [DEBUG] [Thread-124957] [transport.py] [_log()] kex follows: False
2025-11-03T23:57:42.544 [DEBUG] [Thread-124957] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:57:42.544 [DEBUG] [Thread-124957] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:57:42.545 [DEBUG] [Thread-124957] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:57:42.545 [DEBUG] [Thread-124957] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:57:42.545 [DEBUG] [Thread-124957] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:57:42.545 [DEBUG] [Thread-124957] [transport.py] [_log()] Compression: none
2025-11-03T23:57:42.545 [DEBUG] [Thread-124957] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:57:42.601 [DEBUG] [Thread-124957] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:57:42.602 [DEBUG] [Thread-124957] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:57:42.602 [DEBUG] [Thread-124957] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:57:42.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:57:42.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:57:42.659 [DEBUG] [Thread-124957] [transport.py] [_log()] userauth is OK
2025-11-03T23:57:42.659 [DEBUG] [Thread-124957] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:57:42.659 [DEBUG] [Thread-124957] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:57:42.659 [DEBUG] [Thread-124957] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:57:42.659 [DEBUG] [Thread-124957] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:57:42.674 [INFO] [Thread-124957] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:57:42.675 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:57:42.676 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:57:43.522 [DEBUG] [Thread-124957] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:57:43.522 [DEBUG] [Thread-124957] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:57:43.574 [DEBUG] [Thread-124957] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:57:43.574 [DEBUG] [Thread-124957] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:57:43.584 [DEBUG] [Thread-124957] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:57:43.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:57:43.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:57:43.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:57:43.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:57:43.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:57:43.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:57:43.623 [DEBUG] [Thread-124957] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:57:49.271 [DEBUG] [Thread-124959 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:57:56.390 [DEBUG] [Thread-124960 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:58:12.001 [DEBUG] [Thread-124961 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:58:12.686 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:58:12.688 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:58:13.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:58:13.643 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:58:13.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:58:14.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 57, 46), 29.24, 12.5, 0.0, 20.12, 18.5, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:58:14.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:57:46
2025-11-03T23:58:14.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:58:14.742 [DEBUG] [Thread-124962] [transport.py] [_log()] starting thread (client mode): 0xed5eec0
2025-11-03T23:58:14.742 [DEBUG] [Thread-124962] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:58:14.759 [DEBUG] [Thread-124962] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:58:14.760 [INFO] [Thread-124962] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:58:14.763 [DEBUG] [Thread-124962] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:58:14.763 [DEBUG] [Thread-124962] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:58:14.763 [DEBUG] [Thread-124962] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:58:14.763 [DEBUG] [Thread-124962] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:58:14.763 [DEBUG] [Thread-124962] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:58:14.763 [DEBUG] [Thread-124962] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:58:14.763 [DEBUG] [Thread-124962] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:58:14.763 [DEBUG] [Thread-124962] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:58:14.763 [DEBUG] [Thread-124962] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:58:14.763 [DEBUG] [Thread-124962] [transport.py] [_log()] client lang: <none>
2025-11-03T23:58:14.763 [DEBUG] [Thread-124962] [transport.py] [_log()] server lang: <none>
2025-11-03T23:58:14.763 [DEBUG] [Thread-124962] [transport.py] [_log()] kex follows: False
2025-11-03T23:58:14.763 [DEBUG] [Thread-124962] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:58:14.764 [DEBUG] [Thread-124962] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:58:14.764 [DEBUG] [Thread-124962] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:58:14.764 [DEBUG] [Thread-124962] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:58:14.764 [DEBUG] [Thread-124962] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:58:14.764 [DEBUG] [Thread-124962] [transport.py] [_log()] Compression: none
2025-11-03T23:58:14.764 [DEBUG] [Thread-124962] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:58:14.801 [DEBUG] [Thread-124962] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:58:14.806 [DEBUG] [Thread-124962] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:58:14.807 [DEBUG] [Thread-124962] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:58:14.809 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:58:14.811 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:58:14.813 [DEBUG] [Thread-124962] [transport.py] [_log()] userauth is OK
2025-11-03T23:58:14.813 [DEBUG] [Thread-124962] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:58:14.813 [DEBUG] [Thread-124962] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:58:14.813 [DEBUG] [Thread-124962] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:58:14.814 [DEBUG] [Thread-124962] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:58:14.841 [INFO] [Thread-124962] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:58:14.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:58:15.480 [DEBUG] [Thread-124962] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:58:15.480 [DEBUG] [Thread-124962] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:58:15.489 [DEBUG] [Thread-124962] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:58:15.521 [DEBUG] [Thread-124962] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:58:15.521 [DEBUG] [Thread-124962] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:58:15.524 [DEBUG] [Thread-124962] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:58:15.536 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:58:15.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:58:15.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:58:15.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:58:15.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:58:15.544 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:58:15.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:58:15.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:58:15.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:58:15.545 [DEBUG] [Thread-124962] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:58:15.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.915029 -999.00  +19.00  18.44     17   -6.10 1 1 1 1 1     0    0 24.26 -5.59 ZNESW 16.9 18.4 299.4 21.2 18.9 -25.1 18.9 -24.2 18.6 -23.7 18.9 -24.7
2025-11-03T23:58:15.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:58:15.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:58:15.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.915029
2025-11-03T23:58:15.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:58:15.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:58:15.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:58:15.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:58:15.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:58:15.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:57:46', tmtdew=29.24, humidity=12.5, cloud=0.0, wind=20.12, temperature=18.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:57:38.506', atlas_cloud=1, atlas_rain=1, zp_data=[0.016750000000000043, -0.004749999999999588, 0.1172500000000003, 0.006999999999999673, 0.033500000000000085, -0.07225000000000037, -0.20700000000000074, -0.02474999999999916, 0.050499999999999545, 0.031500000000001194, 0.09325000000000117, 0.0730000000000004, 0.10350000000000037, 0.07225000000000037, -0.548, -0.11050000000000182, 0.07925000000000004, 0.0495000000000001, 0.13199999999999967, 0.14924999999999855, 0.11399999999999899, 0.008249999999998536, -1.0247499999999992, 0.06874999999999964, 0.058999999999999275, 0.1775000000000002, 0.20274999999999999, 0.18549999999999933, 0.266, 0.15800000000000125, -0.1869999999999994, 0.12600000000000122, 0.12874999999999837], zp_timestamp='2025-11-03T21:55:00')
2025-11-03T23:58:15.640 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:58:15.652 [DEBUG] [Thread-124965] [transport.py] [_log()] starting thread (client mode): 0xed43d60
2025-11-03T23:58:15.653 [DEBUG] [Thread-124965] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:58:15.672 [DEBUG] [Thread-124965] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:58:15.673 [INFO] [Thread-124965] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:58:15.680 [DEBUG] [Thread-124965] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:58:15.680 [DEBUG] [Thread-124965] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:58:15.680 [DEBUG] [Thread-124965] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:58:15.680 [DEBUG] [Thread-124965] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:58:15.680 [DEBUG] [Thread-124965] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:58:15.680 [DEBUG] [Thread-124965] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:58:15.680 [DEBUG] [Thread-124965] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:58:15.681 [DEBUG] [Thread-124965] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:58:15.681 [DEBUG] [Thread-124965] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:58:15.681 [DEBUG] [Thread-124965] [transport.py] [_log()] client lang: <none>
2025-11-03T23:58:15.681 [DEBUG] [Thread-124965] [transport.py] [_log()] server lang: <none>
2025-11-03T23:58:15.681 [DEBUG] [Thread-124965] [transport.py] [_log()] kex follows: False
2025-11-03T23:58:15.681 [DEBUG] [Thread-124965] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:58:15.681 [DEBUG] [Thread-124965] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:58:15.681 [DEBUG] [Thread-124965] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:58:15.681 [DEBUG] [Thread-124965] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:58:15.681 [DEBUG] [Thread-124965] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:58:15.682 [DEBUG] [Thread-124965] [transport.py] [_log()] Compression: none
2025-11-03T23:58:15.682 [DEBUG] [Thread-124965] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:58:15.748 [DEBUG] [Thread-124965] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:58:15.749 [DEBUG] [Thread-124965] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:58:15.750 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:58:15.750 [DEBUG] [Thread-124965] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:58:15.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:58:15.808 [DEBUG] [Thread-124965] [transport.py] [_log()] userauth is OK
2025-11-03T23:58:15.808 [DEBUG] [Thread-124965] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:58:15.809 [DEBUG] [Thread-124965] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:58:15.809 [DEBUG] [Thread-124965] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:58:15.809 [DEBUG] [Thread-124965] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:58:15.828 [INFO] [Thread-124965] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:58:15.829 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:58:15.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:58:16.695 [DEBUG] [Thread-124965] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:58:16.695 [DEBUG] [Thread-124965] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:58:16.734 [DEBUG] [Thread-124965] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:58:16.734 [DEBUG] [Thread-124965] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:58:16.742 [DEBUG] [Thread-124965] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:58:16.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:58:16.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:58:16.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:58:16.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:58:16.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:58:16.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:58:16.776 [DEBUG] [Thread-124965] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:58:27.030 [DEBUG] [Thread-124967 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:58:42.096 [DEBUG] [Thread-124968 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:58:46.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:58:46.800 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:58:46.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:58:47.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 58, 19), 29.19, 12.56, 0.0, 20.41, 18.55, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:58:47.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:58:19
2025-11-03T23:58:47.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:58:47.890 [DEBUG] [Thread-124969] [transport.py] [_log()] starting thread (client mode): 0xedc6140
2025-11-03T23:58:47.890 [DEBUG] [Thread-124969] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:58:47.908 [DEBUG] [Thread-124969] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:58:47.908 [INFO] [Thread-124969] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:58:47.911 [DEBUG] [Thread-124969] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:58:47.911 [DEBUG] [Thread-124969] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:58:47.911 [DEBUG] [Thread-124969] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:58:47.912 [DEBUG] [Thread-124969] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:58:47.912 [DEBUG] [Thread-124969] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:58:47.912 [DEBUG] [Thread-124969] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:58:47.912 [DEBUG] [Thread-124969] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:58:47.912 [DEBUG] [Thread-124969] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:58:47.912 [DEBUG] [Thread-124969] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:58:47.912 [DEBUG] [Thread-124969] [transport.py] [_log()] client lang: <none>
2025-11-03T23:58:47.912 [DEBUG] [Thread-124969] [transport.py] [_log()] server lang: <none>
2025-11-03T23:58:47.912 [DEBUG] [Thread-124969] [transport.py] [_log()] kex follows: False
2025-11-03T23:58:47.912 [DEBUG] [Thread-124969] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:58:47.913 [DEBUG] [Thread-124969] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:58:47.914 [DEBUG] [Thread-124969] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:58:47.914 [DEBUG] [Thread-124969] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:58:47.914 [DEBUG] [Thread-124969] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:58:47.914 [DEBUG] [Thread-124969] [transport.py] [_log()] Compression: none
2025-11-03T23:58:47.914 [DEBUG] [Thread-124969] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:58:47.944 [DEBUG] [Thread-124969] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:58:47.949 [DEBUG] [Thread-124969] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:58:47.950 [DEBUG] [Thread-124969] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:58:47.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:58:47.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:58:47.990 [DEBUG] [Thread-124969] [transport.py] [_log()] userauth is OK
2025-11-03T23:58:47.990 [DEBUG] [Thread-124969] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:58:47.991 [DEBUG] [Thread-124969] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:58:47.991 [DEBUG] [Thread-124969] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:58:47.991 [DEBUG] [Thread-124969] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:58:48.031 [INFO] [Thread-124969] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:58:48.037 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:58:48.675 [DEBUG] [Thread-124969] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:58:48.676 [DEBUG] [Thread-124969] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:58:48.685 [DEBUG] [Thread-124969] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:58:48.717 [DEBUG] [Thread-124969] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:58:48.717 [DEBUG] [Thread-124969] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:58:48.720 [DEBUG] [Thread-124969] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:58:48.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:58:48.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:58:48.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:58:48.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:58:48.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:58:48.742 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:58:48.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:58:48.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:58:48.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:58:48.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.915377 -999.00  +19.00  16.37     17   -6.10 1 1 1 1 1     0    0 24.82 -5.25 ZNESW 17.3 16.4 299.0 22.6 18.9 -25.1 18.8 -24.1 18.6 -23.8 18.9 -24.7
2025-11-03T23:58:48.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:58:48.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:58:48.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.915377
2025-11-03T23:58:48.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:58:48.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:58:48.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:58:48.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:58:48.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:58:48.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:58:19', tmtdew=29.19, humidity=12.56, cloud=0.0, wind=20.41, temperature=18.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:58:08.573', atlas_cloud=1, atlas_rain=1, zp_data=[0.016750000000000043, -0.004749999999999588, 0.1172500000000003, 0.006999999999999673, 0.033500000000000085, -0.07225000000000037, -0.20700000000000074, -0.02474999999999916, 0.050499999999999545, 0.031500000000001194, 0.09325000000000117, 0.0730000000000004, 0.10350000000000037, 0.07225000000000037, -0.548, -0.11050000000000182, 0.07925000000000004, 0.0495000000000001, 0.13199999999999967, 0.14924999999999855, 0.11399999999999899, 0.008249999999998536, -1.0247499999999992, 0.06874999999999964, 0.058999999999999275, 0.1775000000000002, 0.20274999999999999, 0.18549999999999933, 0.266, 0.15800000000000125, -0.1869999999999994, 0.12600000000000122, 0.12874999999999837], zp_timestamp='2025-11-03T21:55:00')
2025-11-03T23:58:48.750 [DEBUG] [Thread-124969] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:58:48.822 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:58:48.837 [DEBUG] [Thread-124972] [transport.py] [_log()] starting thread (client mode): 0xedb15d0
2025-11-03T23:58:48.837 [DEBUG] [Thread-124972] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:58:48.855 [DEBUG] [Thread-124972] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:58:48.855 [INFO] [Thread-124972] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:58:48.864 [DEBUG] [Thread-124972] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:58:48.864 [DEBUG] [Thread-124972] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:58:48.864 [DEBUG] [Thread-124972] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:58:48.864 [DEBUG] [Thread-124972] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:58:48.864 [DEBUG] [Thread-124972] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:58:48.864 [DEBUG] [Thread-124972] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:58:48.864 [DEBUG] [Thread-124972] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:58:48.865 [DEBUG] [Thread-124972] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:58:48.865 [DEBUG] [Thread-124972] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:58:48.865 [DEBUG] [Thread-124972] [transport.py] [_log()] client lang: <none>
2025-11-03T23:58:48.865 [DEBUG] [Thread-124972] [transport.py] [_log()] server lang: <none>
2025-11-03T23:58:48.865 [DEBUG] [Thread-124972] [transport.py] [_log()] kex follows: False
2025-11-03T23:58:48.865 [DEBUG] [Thread-124972] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:58:48.865 [DEBUG] [Thread-124972] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:58:48.865 [DEBUG] [Thread-124972] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:58:48.865 [DEBUG] [Thread-124972] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:58:48.865 [DEBUG] [Thread-124972] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:58:48.865 [DEBUG] [Thread-124972] [transport.py] [_log()] Compression: none
2025-11-03T23:58:48.865 [DEBUG] [Thread-124972] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:58:48.926 [DEBUG] [Thread-124972] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:58:48.926 [DEBUG] [Thread-124972] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:58:48.926 [DEBUG] [Thread-124972] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:58:48.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:58:48.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:58:48.984 [DEBUG] [Thread-124972] [transport.py] [_log()] userauth is OK
2025-11-03T23:58:48.984 [DEBUG] [Thread-124972] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:58:48.984 [DEBUG] [Thread-124972] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:58:48.984 [DEBUG] [Thread-124972] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:58:48.984 [DEBUG] [Thread-124972] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:58:48.998 [INFO] [Thread-124972] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:58:48.999 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:58:48.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:58:49.626 [DEBUG] [Thread-124974 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:58:49.946 [DEBUG] [Thread-124972] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:58:49.946 [DEBUG] [Thread-124972] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:58:49.986 [DEBUG] [Thread-124972] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:58:49.987 [DEBUG] [Thread-124972] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:58:49.995 [DEBUG] [Thread-124972] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:58:50.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:58:50.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:58:50.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:58:50.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:58:50.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:58:50.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:58:50.031 [DEBUG] [Thread-124972] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:58:57.124 [DEBUG] [Thread-124975 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:59:12.180 [DEBUG] [Thread-124976 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:59:12.890 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:59:12.891 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:59:20.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:59:20.055 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:59:20.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:59:21.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 58, 51), 29.23, 12.51, 0.0, 20.31, 18.5, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:59:21.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:58:51
2025-11-03T23:59:21.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:59:21.812 [DEBUG] [Thread-124977] [transport.py] [_log()] starting thread (client mode): 0xedb2e30
2025-11-03T23:59:21.814 [DEBUG] [Thread-124977] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:59:21.822 [DEBUG] [Thread-124977] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:59:21.822 [INFO] [Thread-124977] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:59:21.834 [DEBUG] [Thread-124977] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:59:21.835 [DEBUG] [Thread-124977] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:59:21.835 [DEBUG] [Thread-124977] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:59:21.835 [DEBUG] [Thread-124977] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:59:21.835 [DEBUG] [Thread-124977] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:59:21.835 [DEBUG] [Thread-124977] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:59:21.835 [DEBUG] [Thread-124977] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:59:21.835 [DEBUG] [Thread-124977] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:59:21.835 [DEBUG] [Thread-124977] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:59:21.835 [DEBUG] [Thread-124977] [transport.py] [_log()] client lang: <none>
2025-11-03T23:59:21.835 [DEBUG] [Thread-124977] [transport.py] [_log()] server lang: <none>
2025-11-03T23:59:21.835 [DEBUG] [Thread-124977] [transport.py] [_log()] kex follows: False
2025-11-03T23:59:21.835 [DEBUG] [Thread-124977] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:59:21.842 [DEBUG] [Thread-124977] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:59:21.842 [DEBUG] [Thread-124977] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:59:21.842 [DEBUG] [Thread-124977] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:59:21.842 [DEBUG] [Thread-124977] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:59:21.842 [DEBUG] [Thread-124977] [transport.py] [_log()] Compression: none
2025-11-03T23:59:21.842 [DEBUG] [Thread-124977] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:59:21.917 [DEBUG] [Thread-124977] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:59:21.934 [DEBUG] [Thread-124977] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:59:21.938 [DEBUG] [Thread-124977] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:59:21.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:59:21.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:59:21.957 [DEBUG] [Thread-124977] [transport.py] [_log()] userauth is OK
2025-11-03T23:59:21.957 [DEBUG] [Thread-124977] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:59:21.958 [DEBUG] [Thread-124977] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:59:21.958 [DEBUG] [Thread-124977] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:59:21.958 [DEBUG] [Thread-124977] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:59:21.988 [INFO] [Thread-124977] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:59:21.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:59:22.761 [DEBUG] [Thread-124977] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:59:22.761 [DEBUG] [Thread-124977] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:59:22.762 [DEBUG] [Thread-124977] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:59:22.802 [DEBUG] [Thread-124977] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:59:22.802 [DEBUG] [Thread-124977] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:59:22.806 [DEBUG] [Thread-124977] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:59:22.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:59:22.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:59:22.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:59:22.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:59:22.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:59:22.830 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:59:22.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:59:22.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:59:22.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:59:22.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.915724 -999.00  +19.00  17.91     17   -6.10 1 1 1 1 1     0    0 25.38 -5.09 ZNESW 17.7 17.9 305.6 20.8 18.9 -25.2 18.9 -24.1 18.6 -23.8 18.9 -24.9
2025-11-03T23:59:22.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:59:22.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:59:22.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.915724
2025-11-03T23:59:22.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:59:22.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:59:22.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:59:22.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:59:22.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:59:22.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:58:51', tmtdew=29.23, humidity=12.51, cloud=0.0, wind=20.31, temperature=18.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:58:38.554', atlas_cloud=1, atlas_rain=1, zp_data=[0.016750000000000043, -0.004749999999999588, 0.1172500000000003, 0.006999999999999673, 0.033500000000000085, -0.07225000000000037, -0.20700000000000074, -0.02474999999999916, 0.050499999999999545, 0.031500000000001194, 0.09325000000000117, 0.0730000000000004, 0.10350000000000037, 0.07225000000000037, -0.548, -0.11050000000000182, 0.07925000000000004, 0.0495000000000001, 0.13199999999999967, 0.14924999999999855, 0.11399999999999899, 0.008249999999998536, -1.0247499999999992, 0.06874999999999964, 0.058999999999999275, 0.1775000000000002, 0.20274999999999999, 0.18549999999999933, 0.266, 0.15800000000000125, -0.1869999999999994, 0.12600000000000122, 0.12874999999999837], zp_timestamp='2025-11-03T21:55:00')
2025-11-03T23:59:22.840 [DEBUG] [Thread-124977] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:59:22.929 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:59:22.942 [DEBUG] [Thread-124980] [transport.py] [_log()] starting thread (client mode): 0xed1a6e0
2025-11-03T23:59:22.942 [DEBUG] [Thread-124980] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:59:22.957 [DEBUG] [Thread-124980] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:59:22.957 [INFO] [Thread-124980] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:59:22.968 [DEBUG] [Thread-124980] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:59:22.969 [DEBUG] [Thread-124980] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:59:22.969 [DEBUG] [Thread-124980] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:59:22.969 [DEBUG] [Thread-124980] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:59:22.969 [DEBUG] [Thread-124980] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:59:22.969 [DEBUG] [Thread-124980] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:59:22.969 [DEBUG] [Thread-124980] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:59:22.969 [DEBUG] [Thread-124980] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:59:22.969 [DEBUG] [Thread-124980] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:59:22.970 [DEBUG] [Thread-124980] [transport.py] [_log()] client lang: <none>
2025-11-03T23:59:22.970 [DEBUG] [Thread-124980] [transport.py] [_log()] server lang: <none>
2025-11-03T23:59:22.970 [DEBUG] [Thread-124980] [transport.py] [_log()] kex follows: False
2025-11-03T23:59:22.970 [DEBUG] [Thread-124980] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:59:22.970 [DEBUG] [Thread-124980] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:59:22.970 [DEBUG] [Thread-124980] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:59:22.970 [DEBUG] [Thread-124980] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:59:22.971 [DEBUG] [Thread-124980] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:59:22.971 [DEBUG] [Thread-124980] [transport.py] [_log()] Compression: none
2025-11-03T23:59:22.971 [DEBUG] [Thread-124980] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:59:23.024 [DEBUG] [Thread-124980] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:59:23.025 [DEBUG] [Thread-124980] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:59:23.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:59:23.026 [DEBUG] [Thread-124980] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:59:23.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:59:23.084 [DEBUG] [Thread-124980] [transport.py] [_log()] userauth is OK
2025-11-03T23:59:23.084 [DEBUG] [Thread-124980] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:59:23.084 [DEBUG] [Thread-124980] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:59:23.085 [DEBUG] [Thread-124980] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:59:23.085 [DEBUG] [Thread-124980] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:59:23.109 [INFO] [Thread-124980] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:59:23.111 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:59:23.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:59:23.952 [DEBUG] [Thread-124980] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:59:23.953 [DEBUG] [Thread-124980] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:59:24.004 [DEBUG] [Thread-124980] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:59:24.004 [DEBUG] [Thread-124980] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:59:24.014 [DEBUG] [Thread-124980] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:59:24.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:59:24.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:59:24.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:59:24.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:59:24.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:59:24.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:59:24.064 [DEBUG] [Thread-124980] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:59:27.214 [DEBUG] [Thread-124982 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:59:42.280 [DEBUG] [Thread-124983 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:59:49.883 [DEBUG] [Thread-124984 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-03T23:59:54.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-03T23:59:54.083 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-03T23:59:54.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-03T23:59:54.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 59, 24), 29.18, 12.56, 0.0, 20.26, 18.5, 0, 0, 0, 2, 0, 0),)
2025-11-03T23:59:54.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:59:24
2025-11-03T23:59:54.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-03T23:59:55.089 [DEBUG] [Thread-124985] [transport.py] [_log()] starting thread (client mode): 0xedc5de0
2025-11-03T23:59:55.089 [DEBUG] [Thread-124985] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:59:55.096 [DEBUG] [Thread-124985] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-03T23:59:55.096 [INFO] [Thread-124985] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-03T23:59:55.099 [DEBUG] [Thread-124985] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:59:55.099 [DEBUG] [Thread-124985] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-03T23:59:55.099 [DEBUG] [Thread-124985] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:59:55.099 [DEBUG] [Thread-124985] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:59:55.099 [DEBUG] [Thread-124985] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:59:55.099 [DEBUG] [Thread-124985] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:59:55.099 [DEBUG] [Thread-124985] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:59:55.099 [DEBUG] [Thread-124985] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:59:55.099 [DEBUG] [Thread-124985] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:59:55.099 [DEBUG] [Thread-124985] [transport.py] [_log()] client lang: <none>
2025-11-03T23:59:55.099 [DEBUG] [Thread-124985] [transport.py] [_log()] server lang: <none>
2025-11-03T23:59:55.099 [DEBUG] [Thread-124985] [transport.py] [_log()] kex follows: False
2025-11-03T23:59:55.099 [DEBUG] [Thread-124985] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:59:55.099 [DEBUG] [Thread-124985] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:59:55.099 [DEBUG] [Thread-124985] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:59:55.099 [DEBUG] [Thread-124985] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:59:55.099 [DEBUG] [Thread-124985] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:59:55.099 [DEBUG] [Thread-124985] [transport.py] [_log()] Compression: none
2025-11-03T23:59:55.099 [DEBUG] [Thread-124985] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:59:55.116 [DEBUG] [Thread-124985] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:59:55.116 [DEBUG] [Thread-124985] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:59:55.117 [DEBUG] [Thread-124985] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-03T23:59:55.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-03T23:59:55.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:59:55.161 [DEBUG] [Thread-124985] [transport.py] [_log()] userauth is OK
2025-11-03T23:59:55.161 [DEBUG] [Thread-124985] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:59:55.161 [DEBUG] [Thread-124985] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:59:55.161 [DEBUG] [Thread-124985] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-03T23:59:55.162 [DEBUG] [Thread-124985] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:59:55.182 [INFO] [Thread-124985] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:59:55.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:59:55.876 [DEBUG] [Thread-124985] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:59:55.876 [DEBUG] [Thread-124985] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:59:55.876 [DEBUG] [Thread-124985] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-03T23:59:55.917 [DEBUG] [Thread-124985] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:59:55.917 [DEBUG] [Thread-124985] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:59:55.921 [DEBUG] [Thread-124985] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:59:55.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:59:55.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-03T23:59:55.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-03T23:59:55.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-03T23:59:55.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:59:55.944 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-03T23:59:55.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:59:55.945 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:59:55.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-03T23:59:55.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.916071 -999.00  +19.00  17.82     17   -6.10 1 1 1 1 1     0    0 25.50 -5.27 ZNESW 18.8 17.8 300.6 21.0 18.9 -25.1 18.8 -23.9 18.6 -23.5 18.9 -24.6
2025-11-03T23:59:55.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-03T23:59:55.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-03T23:59:55.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.916071
2025-11-03T23:59:55.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-03T23:59:55.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-03T23:59:55.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-03T23:59:55.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-03T23:59:55.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-03T23:59:55.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:59:24', tmtdew=29.18, humidity=12.56, cloud=0.0, wind=20.26, temperature=18.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T21:59:08.534', atlas_cloud=1, atlas_rain=1, zp_data=[0.016750000000000043, -0.004749999999999588, 0.1172500000000003, 0.006999999999999673, 0.033500000000000085, -0.07225000000000037, -0.20700000000000074, -0.02474999999999916, 0.050499999999999545, 0.031500000000001194, 0.09325000000000117, 0.0730000000000004, 0.10350000000000037, 0.07225000000000037, -0.548, -0.11050000000000182, 0.07925000000000004, 0.0495000000000001, 0.13199999999999967, 0.14924999999999855, 0.11399999999999899, 0.008249999999998536, -1.0247499999999992, 0.06874999999999964, 0.058999999999999275, 0.1775000000000002, 0.20274999999999999, 0.18549999999999933, 0.266, 0.15800000000000125, -0.1869999999999994, 0.12600000000000122, 0.12874999999999837], zp_timestamp='2025-11-03T21:55:00')
2025-11-03T23:59:55.948 [DEBUG] [Thread-124985] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:59:56.033 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-03T23:59:56.045 [DEBUG] [Thread-124988] [transport.py] [_log()] starting thread (client mode): 0xed1a980
2025-11-03T23:59:56.045 [DEBUG] [Thread-124988] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-03T23:59:56.060 [DEBUG] [Thread-124988] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-03T23:59:56.060 [INFO] [Thread-124988] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-03T23:59:56.067 [DEBUG] [Thread-124988] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-03T23:59:56.068 [DEBUG] [Thread-124988] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-03T23:59:56.068 [DEBUG] [Thread-124988] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-03T23:59:56.068 [DEBUG] [Thread-124988] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:59:56.068 [DEBUG] [Thread-124988] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-03T23:59:56.068 [DEBUG] [Thread-124988] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:59:56.068 [DEBUG] [Thread-124988] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-03T23:59:56.068 [DEBUG] [Thread-124988] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-03T23:59:56.068 [DEBUG] [Thread-124988] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-03T23:59:56.068 [DEBUG] [Thread-124988] [transport.py] [_log()] client lang: <none>
2025-11-03T23:59:56.068 [DEBUG] [Thread-124988] [transport.py] [_log()] server lang: <none>
2025-11-03T23:59:56.068 [DEBUG] [Thread-124988] [transport.py] [_log()] kex follows: False
2025-11-03T23:59:56.068 [DEBUG] [Thread-124988] [transport.py] [_log()] === Key exchange agreements ===
2025-11-03T23:59:56.068 [DEBUG] [Thread-124988] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-03T23:59:56.068 [DEBUG] [Thread-124988] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-03T23:59:56.068 [DEBUG] [Thread-124988] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-03T23:59:56.068 [DEBUG] [Thread-124988] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-03T23:59:56.068 [DEBUG] [Thread-124988] [transport.py] [_log()] Compression: none
2025-11-03T23:59:56.068 [DEBUG] [Thread-124988] [transport.py] [_log()] === End of kex handshake ===
2025-11-03T23:59:56.126 [DEBUG] [Thread-124988] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-03T23:59:56.126 [DEBUG] [Thread-124988] [transport.py] [_log()] Switch to new keys ...
2025-11-03T23:59:56.126 [DEBUG] [Thread-124988] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-03T23:59:56.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-03T23:59:56.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-03T23:59:56.183 [DEBUG] [Thread-124988] [transport.py] [_log()] userauth is OK
2025-11-03T23:59:56.183 [DEBUG] [Thread-124988] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-03T23:59:56.183 [DEBUG] [Thread-124988] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-03T23:59:56.183 [DEBUG] [Thread-124988] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-03T23:59:56.183 [DEBUG] [Thread-124988] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-03T23:59:56.198 [INFO] [Thread-124988] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-03T23:59:56.198 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-03T23:59:56.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-03T23:59:57.040 [DEBUG] [Thread-124988] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-03T23:59:57.040 [DEBUG] [Thread-124988] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-03T23:59:57.089 [DEBUG] [Thread-124988] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-03T23:59:57.089 [DEBUG] [Thread-124988] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-03T23:59:57.102 [DEBUG] [Thread-124988] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-03T23:59:57.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-03T23:59:57.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-03T23:59:57.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-03T23:59:57.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-03T23:59:57.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-03T23:59:57.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-03T23:59:57.144 [DEBUG] [Thread-124988] [transport.py] [_log()] EOF in transport thread
2025-11-03T23:59:57.306 [DEBUG] [Thread-124990 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:00:12.353 [DEBUG] [Thread-124991 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:00:13.100 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:00:13.101 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:00:27.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:00:27.142 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:00:27.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:00:27.383 [DEBUG] [Thread-124992 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:00:27.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 3, 23, 59, 56), 29.29, 12.54, 0.0, 20.26, 18.53, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:00:27.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-03 23:59:56
2025-11-04T00:00:27.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:00:28.175 [DEBUG] [Thread-124993] [transport.py] [_log()] starting thread (client mode): 0xed19120
2025-11-04T00:00:28.175 [DEBUG] [Thread-124993] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:00:28.191 [DEBUG] [Thread-124993] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:00:28.191 [INFO] [Thread-124993] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:00:28.195 [DEBUG] [Thread-124993] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:00:28.195 [DEBUG] [Thread-124993] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:00:28.195 [DEBUG] [Thread-124993] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:00:28.195 [DEBUG] [Thread-124993] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:00:28.195 [DEBUG] [Thread-124993] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:00:28.195 [DEBUG] [Thread-124993] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:00:28.195 [DEBUG] [Thread-124993] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:00:28.195 [DEBUG] [Thread-124993] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:00:28.195 [DEBUG] [Thread-124993] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:00:28.195 [DEBUG] [Thread-124993] [transport.py] [_log()] client lang: <none>
2025-11-04T00:00:28.195 [DEBUG] [Thread-124993] [transport.py] [_log()] server lang: <none>
2025-11-04T00:00:28.195 [DEBUG] [Thread-124993] [transport.py] [_log()] kex follows: False
2025-11-04T00:00:28.195 [DEBUG] [Thread-124993] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:00:28.196 [DEBUG] [Thread-124993] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:00:28.196 [DEBUG] [Thread-124993] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:00:28.196 [DEBUG] [Thread-124993] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:00:28.196 [DEBUG] [Thread-124993] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:00:28.196 [DEBUG] [Thread-124993] [transport.py] [_log()] Compression: none
2025-11-04T00:00:28.196 [DEBUG] [Thread-124993] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:00:28.224 [DEBUG] [Thread-124993] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:00:28.228 [DEBUG] [Thread-124993] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:00:28.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:00:28.231 [DEBUG] [Thread-124993] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:00:28.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:00:28.269 [DEBUG] [Thread-124993] [transport.py] [_log()] userauth is OK
2025-11-04T00:00:28.269 [DEBUG] [Thread-124993] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:00:28.269 [DEBUG] [Thread-124993] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:00:28.269 [DEBUG] [Thread-124993] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:00:28.269 [DEBUG] [Thread-124993] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:00:28.287 [INFO] [Thread-124993] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:00:28.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:00:28.941 [DEBUG] [Thread-124993] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:00:28.941 [DEBUG] [Thread-124993] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:00:28.951 [DEBUG] [Thread-124993] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:00:28.983 [DEBUG] [Thread-124993] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:00:28.983 [DEBUG] [Thread-124993] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:00:28.986 [DEBUG] [Thread-124993] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:00:28.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:00:28.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:00:29.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:00:29.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:00:29.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:00:29.008 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:00:29.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:00:29.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:00:29.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:00:29.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.916765 -999.00  +19.00  17.50     17   -6.00 1 1 1 1 1     0    0 24.74 -6.14 ZNESW 14.9 17.5 301.7 21.7 18.9 -25.0 18.8 -24.1 18.6 -23.6 18.9 -24.8
2025-11-04T00:00:29.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:00:29.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:00:29.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.916765
2025-11-04T00:00:29.015 [DEBUG] [Thread-124993] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:00:29.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:00:29.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:00:29.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:00:29.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:00:29.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:00:29.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-03T23:59:56', tmtdew=29.29, humidity=12.54, cloud=0.0, wind=20.26, temperature=18.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:00:08.496', atlas_cloud=1, atlas_rain=1, zp_data=[0.02874999999999872, -0.021749999999999048, 0.1172500000000003, 0.12449999999999939, 0.09950000000000081, 0.08525000000000027, -0.22949999999999982, 0.12424999999999997, 0.11949999999999861, 0.06700000000000017, 0.1042500000000004, 0.09600000000000009, 0.08650000000000091, 0.08525000000000027, -0.7420000000000009, -0.05900000000000105, 0.10174999999999912, 0.06999999999999851, 0.1739999999999995, 0.1402499999999982, 0.15099999999999802, 0.0417500000000004, -0.5977499999999996, 0.04574999999999996, 0.1120000000000001, 0.1974999999999998, 0.19875000000000043, 0.2560000000000002, 0.27249999999999996, 0.17300000000000182, -0.4559999999999995, 0.0884999999999998, 0.12674999999999947], zp_timestamp='2025-11-03T21:59:00')
2025-11-04T00:00:29.104 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:00:29.116 [DEBUG] [Thread-124996] [transport.py] [_log()] starting thread (client mode): 0xed18070
2025-11-04T00:00:29.116 [DEBUG] [Thread-124996] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:00:29.131 [DEBUG] [Thread-124996] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:00:29.131 [INFO] [Thread-124996] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:00:29.139 [DEBUG] [Thread-124996] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:00:29.139 [DEBUG] [Thread-124996] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:00:29.139 [DEBUG] [Thread-124996] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:00:29.139 [DEBUG] [Thread-124996] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:00:29.139 [DEBUG] [Thread-124996] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:00:29.139 [DEBUG] [Thread-124996] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:00:29.139 [DEBUG] [Thread-124996] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:00:29.139 [DEBUG] [Thread-124996] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:00:29.139 [DEBUG] [Thread-124996] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:00:29.139 [DEBUG] [Thread-124996] [transport.py] [_log()] client lang: <none>
2025-11-04T00:00:29.139 [DEBUG] [Thread-124996] [transport.py] [_log()] server lang: <none>
2025-11-04T00:00:29.139 [DEBUG] [Thread-124996] [transport.py] [_log()] kex follows: False
2025-11-04T00:00:29.139 [DEBUG] [Thread-124996] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:00:29.139 [DEBUG] [Thread-124996] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:00:29.139 [DEBUG] [Thread-124996] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:00:29.140 [DEBUG] [Thread-124996] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:00:29.140 [DEBUG] [Thread-124996] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:00:29.140 [DEBUG] [Thread-124996] [transport.py] [_log()] Compression: none
2025-11-04T00:00:29.140 [DEBUG] [Thread-124996] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:00:29.198 [DEBUG] [Thread-124996] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:00:29.198 [DEBUG] [Thread-124996] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:00:29.198 [DEBUG] [Thread-124996] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:00:29.199 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:00:29.199 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:00:29.255 [DEBUG] [Thread-124996] [transport.py] [_log()] userauth is OK
2025-11-04T00:00:29.256 [DEBUG] [Thread-124996] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:00:29.256 [DEBUG] [Thread-124996] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:00:29.256 [DEBUG] [Thread-124996] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:00:29.256 [DEBUG] [Thread-124996] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:00:29.275 [INFO] [Thread-124996] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:00:29.275 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:00:29.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:00:30.080 [DEBUG] [Thread-124996] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:00:30.080 [DEBUG] [Thread-124996] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:00:30.132 [DEBUG] [Thread-124996] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:00:30.132 [DEBUG] [Thread-124996] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:00:30.144 [DEBUG] [Thread-124996] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:00:30.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:00:30.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:00:30.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:00:30.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:00:30.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:00:30.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:00:30.190 [DEBUG] [Thread-124996] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:00:42.416 [DEBUG] [Thread-124998 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:00:51.315 [DEBUG] [Thread-124999 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:00:57.760 [DEBUG] [Thread-125000 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:01:00.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:01:00.199 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:01:00.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:01:02.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 0, 29), 29.26, 12.58, 0.0, 20.38, 18.53, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:01:02.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:00:29
2025-11-04T00:01:02.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:01:02.903 [DEBUG] [Thread-125001] [transport.py] [_log()] starting thread (client mode): 0xed1be20
2025-11-04T00:01:02.903 [DEBUG] [Thread-125001] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:01:02.921 [DEBUG] [Thread-125001] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:01:02.921 [INFO] [Thread-125001] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:01:02.924 [DEBUG] [Thread-125001] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:01:02.924 [DEBUG] [Thread-125001] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:01:02.924 [DEBUG] [Thread-125001] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:01:02.924 [DEBUG] [Thread-125001] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:01:02.924 [DEBUG] [Thread-125001] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:01:02.924 [DEBUG] [Thread-125001] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:01:02.924 [DEBUG] [Thread-125001] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:01:02.924 [DEBUG] [Thread-125001] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:01:02.924 [DEBUG] [Thread-125001] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:01:02.924 [DEBUG] [Thread-125001] [transport.py] [_log()] client lang: <none>
2025-11-04T00:01:02.924 [DEBUG] [Thread-125001] [transport.py] [_log()] server lang: <none>
2025-11-04T00:01:02.924 [DEBUG] [Thread-125001] [transport.py] [_log()] kex follows: False
2025-11-04T00:01:02.924 [DEBUG] [Thread-125001] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:01:02.924 [DEBUG] [Thread-125001] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:01:02.924 [DEBUG] [Thread-125001] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:01:02.924 [DEBUG] [Thread-125001] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:01:02.924 [DEBUG] [Thread-125001] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:01:02.924 [DEBUG] [Thread-125001] [transport.py] [_log()] Compression: none
2025-11-04T00:01:02.924 [DEBUG] [Thread-125001] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:01:02.942 [DEBUG] [Thread-125001] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:01:02.942 [DEBUG] [Thread-125001] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:01:02.942 [DEBUG] [Thread-125001] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:01:02.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:01:02.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:01:02.943 [DEBUG] [Thread-125001] [transport.py] [_log()] userauth is OK
2025-11-04T00:01:02.943 [DEBUG] [Thread-125001] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:01:02.943 [DEBUG] [Thread-125001] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:01:02.943 [DEBUG] [Thread-125001] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:01:02.943 [DEBUG] [Thread-125001] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:01:02.952 [INFO] [Thread-125001] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:01:02.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:01:03.583 [DEBUG] [Thread-125001] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:01:03.583 [DEBUG] [Thread-125001] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:01:03.583 [DEBUG] [Thread-125001] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:01:03.624 [DEBUG] [Thread-125001] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:01:03.624 [DEBUG] [Thread-125001] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:01:03.626 [DEBUG] [Thread-125001] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:01:03.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:01:03.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:01:03.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:01:03.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:01:03.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:01:03.638 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:01:03.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:01:03.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:01:03.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:01:03.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.917113 -999.00  +19.00  17.11     17   -6.00 1 1 1 1 1     0    0 24.68 -6.70 ZNESW 16.6 17.1 293.6 20.2 18.9 -25.1 18.8 -24.0 18.6 -23.7 18.9 -24.7
2025-11-04T00:01:03.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:01:03.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:01:03.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.917113
2025-11-04T00:01:03.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:01:03.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:01:03.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:01:03.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:01:03.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:01:03.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:00:29', tmtdew=29.26, humidity=12.58, cloud=0.0, wind=20.38, temperature=18.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:00:38.563', atlas_cloud=1, atlas_rain=1, zp_data=[0.02874999999999872, -0.021749999999999048, 0.1172500000000003, 0.12449999999999939, 0.09950000000000081, 0.08525000000000027, -0.22949999999999982, 0.12424999999999997, 0.11949999999999861, 0.06700000000000017, 0.1042500000000004, 0.09600000000000009, 0.08650000000000091, 0.08525000000000027, -0.7420000000000009, -0.05900000000000105, 0.10174999999999912, 0.06999999999999851, 0.1739999999999995, 0.1402499999999982, 0.15099999999999802, 0.0417500000000004, -0.5977499999999996, 0.04574999999999996, 0.1120000000000001, 0.1974999999999998, 0.19875000000000043, 0.2560000000000002, 0.27249999999999996, 0.17300000000000182, -0.4559999999999995, 0.0884999999999998, 0.12674999999999947], zp_timestamp='2025-11-03T21:59:00')
2025-11-04T00:01:03.639 [DEBUG] [Thread-125001] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:01:03.714 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:01:03.726 [DEBUG] [Thread-125004] [transport.py] [_log()] starting thread (client mode): 0xed19fc0
2025-11-04T00:01:03.726 [DEBUG] [Thread-125004] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:01:03.741 [DEBUG] [Thread-125004] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:01:03.741 [INFO] [Thread-125004] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:01:03.749 [DEBUG] [Thread-125004] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:01:03.749 [DEBUG] [Thread-125004] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:01:03.749 [DEBUG] [Thread-125004] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:01:03.749 [DEBUG] [Thread-125004] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:01:03.749 [DEBUG] [Thread-125004] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:01:03.749 [DEBUG] [Thread-125004] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:01:03.749 [DEBUG] [Thread-125004] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:01:03.749 [DEBUG] [Thread-125004] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:01:03.749 [DEBUG] [Thread-125004] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:01:03.749 [DEBUG] [Thread-125004] [transport.py] [_log()] client lang: <none>
2025-11-04T00:01:03.749 [DEBUG] [Thread-125004] [transport.py] [_log()] server lang: <none>
2025-11-04T00:01:03.749 [DEBUG] [Thread-125004] [transport.py] [_log()] kex follows: False
2025-11-04T00:01:03.749 [DEBUG] [Thread-125004] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:01:03.749 [DEBUG] [Thread-125004] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:01:03.749 [DEBUG] [Thread-125004] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:01:03.749 [DEBUG] [Thread-125004] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:01:03.749 [DEBUG] [Thread-125004] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:01:03.749 [DEBUG] [Thread-125004] [transport.py] [_log()] Compression: none
2025-11-04T00:01:03.749 [DEBUG] [Thread-125004] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:01:03.812 [DEBUG] [Thread-125004] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:01:03.812 [DEBUG] [Thread-125004] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:01:03.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:01:03.813 [DEBUG] [Thread-125004] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:01:03.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:01:03.872 [DEBUG] [Thread-125004] [transport.py] [_log()] userauth is OK
2025-11-04T00:01:03.872 [DEBUG] [Thread-125004] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:01:03.872 [DEBUG] [Thread-125004] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:01:03.872 [DEBUG] [Thread-125004] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:01:03.872 [DEBUG] [Thread-125004] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:01:03.891 [INFO] [Thread-125004] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:01:03.892 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:01:03.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:01:04.804 [DEBUG] [Thread-125004] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:01:04.804 [DEBUG] [Thread-125004] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:01:04.853 [DEBUG] [Thread-125004] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:01:04.854 [DEBUG] [Thread-125004] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:01:04.863 [DEBUG] [Thread-125004] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:01:04.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:01:04.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:01:04.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:01:04.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:01:04.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:01:04.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:01:04.899 [DEBUG] [Thread-125004] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:01:12.792 [DEBUG] [Thread-125006 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:01:13.313 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:01:13.314 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:01:27.891 [DEBUG] [Thread-125007 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:01:34.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:01:34.924 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:01:34.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:01:38.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 1, 1), 29.24, 12.61, 0.0, 20.41, 18.58, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:01:38.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:01:01
2025-11-04T00:01:38.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:01:39.089 [DEBUG] [Thread-125008] [transport.py] [_log()] starting thread (client mode): 0xed1ae60
2025-11-04T00:01:39.089 [DEBUG] [Thread-125008] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:01:39.107 [DEBUG] [Thread-125008] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:01:39.107 [INFO] [Thread-125008] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:01:39.110 [DEBUG] [Thread-125008] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:01:39.110 [DEBUG] [Thread-125008] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:01:39.110 [DEBUG] [Thread-125008] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:01:39.110 [DEBUG] [Thread-125008] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:01:39.110 [DEBUG] [Thread-125008] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:01:39.110 [DEBUG] [Thread-125008] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:01:39.110 [DEBUG] [Thread-125008] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:01:39.110 [DEBUG] [Thread-125008] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:01:39.110 [DEBUG] [Thread-125008] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:01:39.110 [DEBUG] [Thread-125008] [transport.py] [_log()] client lang: <none>
2025-11-04T00:01:39.110 [DEBUG] [Thread-125008] [transport.py] [_log()] server lang: <none>
2025-11-04T00:01:39.110 [DEBUG] [Thread-125008] [transport.py] [_log()] kex follows: False
2025-11-04T00:01:39.110 [DEBUG] [Thread-125008] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:01:39.110 [DEBUG] [Thread-125008] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:01:39.111 [DEBUG] [Thread-125008] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:01:39.111 [DEBUG] [Thread-125008] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:01:39.111 [DEBUG] [Thread-125008] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:01:39.111 [DEBUG] [Thread-125008] [transport.py] [_log()] Compression: none
2025-11-04T00:01:39.111 [DEBUG] [Thread-125008] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:01:39.129 [DEBUG] [Thread-125008] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:01:39.130 [DEBUG] [Thread-125008] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:01:39.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:01:39.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:01:39.131 [DEBUG] [Thread-125008] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:01:39.172 [DEBUG] [Thread-125008] [transport.py] [_log()] userauth is OK
2025-11-04T00:01:39.172 [DEBUG] [Thread-125008] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:01:39.172 [DEBUG] [Thread-125008] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:01:39.173 [DEBUG] [Thread-125008] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:01:39.173 [DEBUG] [Thread-125008] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:01:39.188 [INFO] [Thread-125008] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:01:39.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:01:39.810 [DEBUG] [Thread-125008] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:01:39.810 [DEBUG] [Thread-125008] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:01:39.810 [DEBUG] [Thread-125008] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:01:39.850 [DEBUG] [Thread-125008] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:01:39.850 [DEBUG] [Thread-125008] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:01:39.853 [DEBUG] [Thread-125008] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:01:39.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:01:39.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:01:39.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:01:39.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:01:39.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:01:39.871 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:01:39.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:01:39.871 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:01:39.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:01:39.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.917460 -999.00  +19.10  19.18     17   -6.00 1 1 1 1 1     0    0 24.69 -6.70 ZNESW 17.6 19.2 295.0 20.8 18.9 -25.0 18.8 -23.9 18.6 -23.3 18.9 -24.9
2025-11-04T00:01:39.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:01:39.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:01:39.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.917460
2025-11-04T00:01:39.877 [DEBUG] [Thread-125008] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:01:39.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:01:39.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:01:39.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:01:39.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:01:39.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:01:39.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:01:01', tmtdew=29.24, humidity=12.61, cloud=0.0, wind=20.41, temperature=18.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:01:08.544', atlas_cloud=1, atlas_rain=1, zp_data=[0.02874999999999872, -0.021749999999999048, 0.1172500000000003, 0.12449999999999939, 0.09950000000000081, 0.08525000000000027, -0.22949999999999982, 0.12424999999999997, 0.11949999999999861, 0.06700000000000017, 0.1042500000000004, 0.09600000000000009, 0.08650000000000091, 0.08525000000000027, -0.7420000000000009, -0.05900000000000105, 0.10174999999999912, 0.06999999999999851, 0.1739999999999995, 0.1402499999999982, 0.15099999999999802, 0.0417500000000004, -0.5977499999999996, 0.04574999999999996, 0.1120000000000001, 0.1974999999999998, 0.19875000000000043, 0.2560000000000002, 0.27249999999999996, 0.17300000000000182, -0.4559999999999995, 0.0884999999999998, 0.12674999999999947], zp_timestamp='2025-11-03T21:59:00')
2025-11-04T00:01:39.962 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:01:39.977 [DEBUG] [Thread-125011] [transport.py] [_log()] starting thread (client mode): 0x117e9510
2025-11-04T00:01:39.977 [DEBUG] [Thread-125011] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:01:39.992 [DEBUG] [Thread-125011] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:01:39.992 [INFO] [Thread-125011] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:01:40.001 [DEBUG] [Thread-125011] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:01:40.001 [DEBUG] [Thread-125011] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:01:40.001 [DEBUG] [Thread-125011] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:01:40.001 [DEBUG] [Thread-125011] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:01:40.001 [DEBUG] [Thread-125011] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:01:40.001 [DEBUG] [Thread-125011] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:01:40.001 [DEBUG] [Thread-125011] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:01:40.001 [DEBUG] [Thread-125011] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:01:40.001 [DEBUG] [Thread-125011] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:01:40.001 [DEBUG] [Thread-125011] [transport.py] [_log()] client lang: <none>
2025-11-04T00:01:40.001 [DEBUG] [Thread-125011] [transport.py] [_log()] server lang: <none>
2025-11-04T00:01:40.001 [DEBUG] [Thread-125011] [transport.py] [_log()] kex follows: False
2025-11-04T00:01:40.001 [DEBUG] [Thread-125011] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:01:40.001 [DEBUG] [Thread-125011] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:01:40.001 [DEBUG] [Thread-125011] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:01:40.002 [DEBUG] [Thread-125011] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:01:40.002 [DEBUG] [Thread-125011] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:01:40.002 [DEBUG] [Thread-125011] [transport.py] [_log()] Compression: none
2025-11-04T00:01:40.002 [DEBUG] [Thread-125011] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:01:40.059 [DEBUG] [Thread-125011] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:01:40.059 [DEBUG] [Thread-125011] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:01:40.059 [DEBUG] [Thread-125011] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:01:40.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:01:40.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:01:40.128 [DEBUG] [Thread-125011] [transport.py] [_log()] userauth is OK
2025-11-04T00:01:40.128 [DEBUG] [Thread-125011] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:01:40.128 [DEBUG] [Thread-125011] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:01:40.128 [DEBUG] [Thread-125011] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:01:40.128 [DEBUG] [Thread-125011] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:01:40.144 [INFO] [Thread-125011] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:01:40.144 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:01:40.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:01:40.967 [DEBUG] [Thread-125011] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:01:40.967 [DEBUG] [Thread-125011] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:01:41.017 [DEBUG] [Thread-125011] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:01:41.017 [DEBUG] [Thread-125011] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:01:41.027 [DEBUG] [Thread-125011] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:01:41.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:01:41.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:01:41.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:01:41.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:01:41.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:01:41.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:01:41.065 [DEBUG] [Thread-125011] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:01:42.918 [DEBUG] [Thread-125013 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:01:51.581 [DEBUG] [Thread-125014 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:01:58.077 [DEBUG] [Thread-125015 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:02:11.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:02:11.079 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:02:11.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:02:11.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 1, 35), 29.21, 12.58, 0.0, 20.61, 18.55, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:02:11.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:01:35
2025-11-04T00:02:12.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:02:12.250 [DEBUG] [Thread-125016] [transport.py] [_log()] starting thread (client mode): 0xed40520
2025-11-04T00:02:12.250 [DEBUG] [Thread-125016] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:02:12.267 [DEBUG] [Thread-125016] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:02:12.267 [INFO] [Thread-125016] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:02:12.269 [DEBUG] [Thread-125016] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:02:12.270 [DEBUG] [Thread-125016] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:02:12.270 [DEBUG] [Thread-125016] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:02:12.270 [DEBUG] [Thread-125016] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:02:12.270 [DEBUG] [Thread-125016] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:02:12.270 [DEBUG] [Thread-125016] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:02:12.270 [DEBUG] [Thread-125016] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:02:12.270 [DEBUG] [Thread-125016] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:02:12.270 [DEBUG] [Thread-125016] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:02:12.270 [DEBUG] [Thread-125016] [transport.py] [_log()] client lang: <none>
2025-11-04T00:02:12.270 [DEBUG] [Thread-125016] [transport.py] [_log()] server lang: <none>
2025-11-04T00:02:12.270 [DEBUG] [Thread-125016] [transport.py] [_log()] kex follows: False
2025-11-04T00:02:12.270 [DEBUG] [Thread-125016] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:02:12.271 [DEBUG] [Thread-125016] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:02:12.271 [DEBUG] [Thread-125016] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:02:12.271 [DEBUG] [Thread-125016] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:02:12.271 [DEBUG] [Thread-125016] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:02:12.271 [DEBUG] [Thread-125016] [transport.py] [_log()] Compression: none
2025-11-04T00:02:12.271 [DEBUG] [Thread-125016] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:02:12.290 [DEBUG] [Thread-125016] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:02:12.294 [DEBUG] [Thread-125016] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:02:12.295 [DEBUG] [Thread-125016] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:02:12.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:02:12.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:02:12.297 [DEBUG] [Thread-125016] [transport.py] [_log()] userauth is OK
2025-11-04T00:02:12.297 [DEBUG] [Thread-125016] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:02:12.297 [DEBUG] [Thread-125016] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:02:12.297 [DEBUG] [Thread-125016] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:02:12.297 [DEBUG] [Thread-125016] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:02:12.307 [INFO] [Thread-125016] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:02:12.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:02:12.949 [DEBUG] [Thread-125016] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:02:12.949 [DEBUG] [Thread-125016] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:02:12.950 [DEBUG] [Thread-125016] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:02:12.991 [DEBUG] [Thread-125016] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:02:12.991 [DEBUG] [Thread-125016] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:02:12.993 [DEBUG] [Thread-125016] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:02:13.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:02:13.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:02:13.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:02:13.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:02:13.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:02:13.014 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:02:13.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:02:13.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:02:13.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:02:13.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.917807 -999.00  +19.10  17.37     17   -6.00 1 1 1 1 1     0    0 25.27 -6.11 ZNESW 18.2 17.4 304.0 20.6 18.9 -24.9 18.9 -24.0 18.6 -23.5 18.9 -24.5
2025-11-04T00:02:13.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:02:13.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:02:13.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.917807
2025-11-04T00:02:13.022 [DEBUG] [Thread-125016] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:02:13.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:02:13.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:02:13.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:02:13.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:02:13.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:02:13.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:01:35', tmtdew=29.21, humidity=12.58, cloud=0.0, wind=20.61, temperature=18.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:01:38.525', atlas_cloud=1, atlas_rain=1, zp_data=[0.02874999999999872, -0.021749999999999048, 0.1172500000000003, 0.12449999999999939, 0.09950000000000081, 0.08525000000000027, -0.22949999999999982, 0.12424999999999997, 0.11949999999999861, 0.06700000000000017, 0.1042500000000004, 0.09600000000000009, 0.08650000000000091, 0.08525000000000027, -0.7420000000000009, -0.05900000000000105, 0.10174999999999912, 0.06999999999999851, 0.1739999999999995, 0.1402499999999982, 0.15099999999999802, 0.0417500000000004, -0.5977499999999996, 0.04574999999999996, 0.1120000000000001, 0.1974999999999998, 0.19875000000000043, 0.2560000000000002, 0.27249999999999996, 0.17300000000000182, -0.4559999999999995, 0.0884999999999998, 0.12674999999999947], zp_timestamp='2025-11-03T21:59:00')
2025-11-04T00:02:13.106 [DEBUG] [Thread-125019 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:02:13.110 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:02:13.122 [DEBUG] [Thread-125020] [transport.py] [_log()] starting thread (client mode): 0xedc6b90
2025-11-04T00:02:13.122 [DEBUG] [Thread-125020] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:02:13.136 [DEBUG] [Thread-125020] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:02:13.136 [INFO] [Thread-125020] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:02:13.144 [DEBUG] [Thread-125020] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:02:13.144 [DEBUG] [Thread-125020] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:02:13.144 [DEBUG] [Thread-125020] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:02:13.144 [DEBUG] [Thread-125020] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:02:13.144 [DEBUG] [Thread-125020] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:02:13.144 [DEBUG] [Thread-125020] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:02:13.144 [DEBUG] [Thread-125020] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:02:13.144 [DEBUG] [Thread-125020] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:02:13.144 [DEBUG] [Thread-125020] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:02:13.144 [DEBUG] [Thread-125020] [transport.py] [_log()] client lang: <none>
2025-11-04T00:02:13.144 [DEBUG] [Thread-125020] [transport.py] [_log()] server lang: <none>
2025-11-04T00:02:13.144 [DEBUG] [Thread-125020] [transport.py] [_log()] kex follows: False
2025-11-04T00:02:13.144 [DEBUG] [Thread-125020] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:02:13.144 [DEBUG] [Thread-125020] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:02:13.144 [DEBUG] [Thread-125020] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:02:13.144 [DEBUG] [Thread-125020] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:02:13.144 [DEBUG] [Thread-125020] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:02:13.144 [DEBUG] [Thread-125020] [transport.py] [_log()] Compression: none
2025-11-04T00:02:13.144 [DEBUG] [Thread-125020] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:02:13.202 [DEBUG] [Thread-125020] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:02:13.202 [DEBUG] [Thread-125020] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:02:13.202 [DEBUG] [Thread-125020] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:02:13.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:02:13.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:02:13.259 [DEBUG] [Thread-125020] [transport.py] [_log()] userauth is OK
2025-11-04T00:02:13.259 [DEBUG] [Thread-125020] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:02:13.260 [DEBUG] [Thread-125020] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:02:13.260 [DEBUG] [Thread-125020] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:02:13.260 [DEBUG] [Thread-125020] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:02:13.278 [INFO] [Thread-125020] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:02:13.279 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:02:13.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:02:13.518 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:02:13.519 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:02:14.116 [DEBUG] [Thread-125020] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:02:14.116 [DEBUG] [Thread-125020] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:02:14.166 [DEBUG] [Thread-125020] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:02:14.167 [DEBUG] [Thread-125020] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:02:14.179 [DEBUG] [Thread-125020] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:02:14.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:02:14.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:02:14.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:02:14.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:02:14.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:02:14.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:02:14.229 [DEBUG] [Thread-125020] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:02:28.171 [DEBUG] [Thread-125022 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:02:43.202 [DEBUG] [Thread-125023 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:02:44.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:02:44.249 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:02:44.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:02:45.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 2, 10), 29.19, 12.59, 0.0, 20.34, 18.52, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:02:45.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:02:10
2025-11-04T00:02:46.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:02:46.740 [DEBUG] [Thread-125024] [transport.py] [_log()] starting thread (client mode): 0xed1af50
2025-11-04T00:02:46.746 [DEBUG] [Thread-125024] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:02:46.748 [DEBUG] [Thread-125024] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:02:46.749 [INFO] [Thread-125024] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:02:46.769 [DEBUG] [Thread-125024] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:02:46.769 [DEBUG] [Thread-125024] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:02:46.769 [DEBUG] [Thread-125024] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:02:46.769 [DEBUG] [Thread-125024] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:02:46.769 [DEBUG] [Thread-125024] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:02:46.769 [DEBUG] [Thread-125024] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:02:46.769 [DEBUG] [Thread-125024] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:02:46.769 [DEBUG] [Thread-125024] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:02:46.769 [DEBUG] [Thread-125024] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:02:46.769 [DEBUG] [Thread-125024] [transport.py] [_log()] client lang: <none>
2025-11-04T00:02:46.769 [DEBUG] [Thread-125024] [transport.py] [_log()] server lang: <none>
2025-11-04T00:02:46.769 [DEBUG] [Thread-125024] [transport.py] [_log()] kex follows: False
2025-11-04T00:02:46.769 [DEBUG] [Thread-125024] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:02:46.773 [DEBUG] [Thread-125024] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:02:46.775 [DEBUG] [Thread-125024] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:02:46.775 [DEBUG] [Thread-125024] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:02:46.775 [DEBUG] [Thread-125024] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:02:46.775 [DEBUG] [Thread-125024] [transport.py] [_log()] Compression: none
2025-11-04T00:02:46.775 [DEBUG] [Thread-125024] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:02:46.857 [DEBUG] [Thread-125024] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:02:46.879 [DEBUG] [Thread-125024] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:02:46.892 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:02:46.901 [DEBUG] [Thread-125024] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:02:46.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:02:46.908 [DEBUG] [Thread-125024] [transport.py] [_log()] userauth is OK
2025-11-04T00:02:46.909 [DEBUG] [Thread-125024] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:02:46.910 [DEBUG] [Thread-125024] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:02:46.910 [DEBUG] [Thread-125024] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:02:46.910 [DEBUG] [Thread-125024] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:02:46.966 [INFO] [Thread-125024] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:02:46.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:02:47.614 [DEBUG] [Thread-125024] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:02:47.614 [DEBUG] [Thread-125024] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:02:47.615 [DEBUG] [Thread-125024] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:02:47.654 [DEBUG] [Thread-125024] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:02:47.655 [DEBUG] [Thread-125024] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:02:47.657 [DEBUG] [Thread-125024] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:02:47.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:02:47.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:02:47.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:02:47.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:02:47.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:02:47.696 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:02:47.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:02:47.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:02:47.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:02:47.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.918154 -999.00  +19.10  17.78     17   -6.00 1 1 1 1 1     0    0 25.20 -5.68 ZNESW 15.5 17.8 300.0 20.7 18.9 -24.9 18.9 -24.0 18.6 -23.8 18.9 -24.6
2025-11-04T00:02:47.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:02:47.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:02:47.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.918154
2025-11-04T00:02:47.705 [DEBUG] [Thread-125024] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:02:47.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:02:47.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:02:47.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:02:47.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:02:47.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:02:47.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:02:10', tmtdew=29.19, humidity=12.59, cloud=0.0, wind=20.34, temperature=18.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:02:08.506', atlas_cloud=1, atlas_rain=1, zp_data=[0.02874999999999872, -0.021749999999999048, 0.1172500000000003, 0.12449999999999939, 0.09950000000000081, 0.08525000000000027, -0.22949999999999982, 0.12424999999999997, 0.11949999999999861, 0.06700000000000017, 0.1042500000000004, 0.09600000000000009, 0.08650000000000091, 0.08525000000000027, -0.7420000000000009, -0.05900000000000105, 0.10174999999999912, 0.06999999999999851, 0.1739999999999995, 0.1402499999999982, 0.15099999999999802, 0.0417500000000004, -0.5977499999999996, 0.04574999999999996, 0.1120000000000001, 0.1974999999999998, 0.19875000000000043, 0.2560000000000002, 0.27249999999999996, 0.17300000000000182, -0.4559999999999995, 0.0884999999999998, 0.12674999999999947], zp_timestamp='2025-11-03T21:59:00')
2025-11-04T00:02:47.851 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:02:47.865 [DEBUG] [Thread-125027] [transport.py] [_log()] starting thread (client mode): 0xed5c5e0
2025-11-04T00:02:47.865 [DEBUG] [Thread-125027] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:02:47.879 [DEBUG] [Thread-125027] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:02:47.879 [INFO] [Thread-125027] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:02:47.886 [DEBUG] [Thread-125027] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:02:47.886 [DEBUG] [Thread-125027] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:02:47.886 [DEBUG] [Thread-125027] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:02:47.886 [DEBUG] [Thread-125027] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:02:47.886 [DEBUG] [Thread-125027] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:02:47.886 [DEBUG] [Thread-125027] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:02:47.887 [DEBUG] [Thread-125027] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:02:47.887 [DEBUG] [Thread-125027] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:02:47.887 [DEBUG] [Thread-125027] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:02:47.887 [DEBUG] [Thread-125027] [transport.py] [_log()] client lang: <none>
2025-11-04T00:02:47.887 [DEBUG] [Thread-125027] [transport.py] [_log()] server lang: <none>
2025-11-04T00:02:47.887 [DEBUG] [Thread-125027] [transport.py] [_log()] kex follows: False
2025-11-04T00:02:47.887 [DEBUG] [Thread-125027] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:02:47.887 [DEBUG] [Thread-125027] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:02:47.887 [DEBUG] [Thread-125027] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:02:47.887 [DEBUG] [Thread-125027] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:02:47.887 [DEBUG] [Thread-125027] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:02:47.887 [DEBUG] [Thread-125027] [transport.py] [_log()] Compression: none
2025-11-04T00:02:47.887 [DEBUG] [Thread-125027] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:02:47.949 [DEBUG] [Thread-125027] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:02:47.950 [DEBUG] [Thread-125027] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:02:47.950 [DEBUG] [Thread-125027] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:02:47.951 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:02:47.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:02:48.007 [DEBUG] [Thread-125027] [transport.py] [_log()] userauth is OK
2025-11-04T00:02:48.007 [DEBUG] [Thread-125027] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:02:48.008 [DEBUG] [Thread-125027] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:02:48.008 [DEBUG] [Thread-125027] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:02:48.008 [DEBUG] [Thread-125027] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:02:48.028 [INFO] [Thread-125027] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:02:48.029 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:02:48.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:02:48.902 [DEBUG] [Thread-125027] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:02:48.902 [DEBUG] [Thread-125027] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:02:48.948 [DEBUG] [Thread-125027] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:02:48.948 [DEBUG] [Thread-125027] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:02:48.957 [DEBUG] [Thread-125027] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:02:48.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:02:48.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:02:48.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:02:49.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:02:49.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:02:49.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:02:49.014 [DEBUG] [Thread-125027] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:02:53.126 [DEBUG] [Thread-125029 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:02:58.237 [DEBUG] [Thread-125030 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:03:13.371 [DEBUG] [Thread-125031 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:03:13.720 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:03:13.721 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:03:19.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:03:19.037 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:03:19.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:03:19.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 2, 42), 29.24, 12.59, 0.0, 18.58, 18.55, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:03:19.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:02:42
2025-11-04T00:03:20.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:03:20.243 [DEBUG] [Thread-125032] [transport.py] [_log()] starting thread (client mode): 0xed18820
2025-11-04T00:03:20.244 [DEBUG] [Thread-125032] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:03:20.257 [DEBUG] [Thread-125032] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:03:20.257 [INFO] [Thread-125032] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:03:20.261 [DEBUG] [Thread-125032] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:03:20.261 [DEBUG] [Thread-125032] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:03:20.261 [DEBUG] [Thread-125032] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:03:20.261 [DEBUG] [Thread-125032] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:03:20.261 [DEBUG] [Thread-125032] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:03:20.261 [DEBUG] [Thread-125032] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:03:20.261 [DEBUG] [Thread-125032] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:03:20.261 [DEBUG] [Thread-125032] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:03:20.261 [DEBUG] [Thread-125032] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:03:20.261 [DEBUG] [Thread-125032] [transport.py] [_log()] client lang: <none>
2025-11-04T00:03:20.261 [DEBUG] [Thread-125032] [transport.py] [_log()] server lang: <none>
2025-11-04T00:03:20.261 [DEBUG] [Thread-125032] [transport.py] [_log()] kex follows: False
2025-11-04T00:03:20.261 [DEBUG] [Thread-125032] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:03:20.262 [DEBUG] [Thread-125032] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:03:20.262 [DEBUG] [Thread-125032] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:03:20.262 [DEBUG] [Thread-125032] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:03:20.262 [DEBUG] [Thread-125032] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:03:20.262 [DEBUG] [Thread-125032] [transport.py] [_log()] Compression: none
2025-11-04T00:03:20.262 [DEBUG] [Thread-125032] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:03:20.293 [DEBUG] [Thread-125032] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:03:20.296 [DEBUG] [Thread-125032] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:03:20.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:03:20.299 [DEBUG] [Thread-125032] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:03:20.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:03:20.301 [DEBUG] [Thread-125032] [transport.py] [_log()] userauth is OK
2025-11-04T00:03:20.301 [DEBUG] [Thread-125032] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:03:20.302 [DEBUG] [Thread-125032] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:03:20.302 [DEBUG] [Thread-125032] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:03:20.302 [DEBUG] [Thread-125032] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:03:20.331 [INFO] [Thread-125032] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:03:20.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:03:20.961 [DEBUG] [Thread-125032] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:03:20.961 [DEBUG] [Thread-125032] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:03:20.963 [DEBUG] [Thread-125032] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:03:21.003 [DEBUG] [Thread-125032] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:03:21.003 [DEBUG] [Thread-125032] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:03:21.006 [DEBUG] [Thread-125032] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:03:21.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:03:21.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:03:21.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:03:21.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:03:21.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:03:21.027 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:03:21.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:03:21.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:03:21.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:03:21.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.918849 -999.00  +19.10  15.24     17   -6.00 1 1 1 1 1     0    0 25.09 -4.26 ZNESW 17.2 15.2 304.6 23.9 18.9 -25.0 18.9 -24.0 18.6 -23.9 18.9 -24.4
2025-11-04T00:03:21.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:03:21.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:03:21.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.918849
2025-11-04T00:03:21.035 [DEBUG] [Thread-125032] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:03:21.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:03:21.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:03:21.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:03:21.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:03:21.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:03:21.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:02:42', tmtdew=29.24, humidity=12.59, cloud=0.0, wind=18.58, temperature=18.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:03:08.554', atlas_cloud=1, atlas_rain=1, zp_data=[0.02874999999999872, -0.021749999999999048, 0.1172500000000003, 0.12449999999999939, 0.09950000000000081, 0.08525000000000027, -0.22949999999999982, 0.12424999999999997, 0.11949999999999861, 0.06700000000000017, 0.1042500000000004, 0.09600000000000009, 0.08650000000000091, 0.08525000000000027, -0.7420000000000009, -0.05900000000000105, 0.10174999999999912, 0.06999999999999851, 0.1739999999999995, 0.1402499999999982, 0.15099999999999802, 0.0417500000000004, -0.5977499999999996, 0.04574999999999996, 0.1120000000000001, 0.1974999999999998, 0.19875000000000043, 0.2560000000000002, 0.27249999999999996, 0.17300000000000182, -0.4559999999999995, 0.0884999999999998, 0.12674999999999947], zp_timestamp='2025-11-03T21:59:00')
2025-11-04T00:03:21.122 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:03:21.137 [DEBUG] [Thread-125035] [transport.py] [_log()] starting thread (client mode): 0xed19c90
2025-11-04T00:03:21.137 [DEBUG] [Thread-125035] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:03:21.154 [DEBUG] [Thread-125035] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:03:21.154 [INFO] [Thread-125035] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:03:21.162 [DEBUG] [Thread-125035] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:03:21.162 [DEBUG] [Thread-125035] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:03:21.162 [DEBUG] [Thread-125035] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:03:21.162 [DEBUG] [Thread-125035] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:03:21.162 [DEBUG] [Thread-125035] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:03:21.162 [DEBUG] [Thread-125035] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:03:21.162 [DEBUG] [Thread-125035] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:03:21.162 [DEBUG] [Thread-125035] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:03:21.162 [DEBUG] [Thread-125035] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:03:21.162 [DEBUG] [Thread-125035] [transport.py] [_log()] client lang: <none>
2025-11-04T00:03:21.162 [DEBUG] [Thread-125035] [transport.py] [_log()] server lang: <none>
2025-11-04T00:03:21.162 [DEBUG] [Thread-125035] [transport.py] [_log()] kex follows: False
2025-11-04T00:03:21.162 [DEBUG] [Thread-125035] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:03:21.162 [DEBUG] [Thread-125035] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:03:21.163 [DEBUG] [Thread-125035] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:03:21.163 [DEBUG] [Thread-125035] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:03:21.163 [DEBUG] [Thread-125035] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:03:21.163 [DEBUG] [Thread-125035] [transport.py] [_log()] Compression: none
2025-11-04T00:03:21.163 [DEBUG] [Thread-125035] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:03:21.219 [DEBUG] [Thread-125035] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:03:21.220 [DEBUG] [Thread-125035] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:03:21.220 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:03:21.221 [DEBUG] [Thread-125035] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:03:21.222 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:03:21.275 [DEBUG] [Thread-125035] [transport.py] [_log()] userauth is OK
2025-11-04T00:03:21.276 [DEBUG] [Thread-125035] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:03:21.276 [DEBUG] [Thread-125035] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:03:21.276 [DEBUG] [Thread-125035] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:03:21.276 [DEBUG] [Thread-125035] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:03:21.295 [INFO] [Thread-125035] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:03:21.296 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:03:21.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:03:22.136 [DEBUG] [Thread-125035] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:03:22.137 [DEBUG] [Thread-125035] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:03:22.185 [DEBUG] [Thread-125035] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:03:22.185 [DEBUG] [Thread-125035] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:03:22.194 [DEBUG] [Thread-125035] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:03:22.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:03:22.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:03:22.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:03:22.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:03:22.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:03:22.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:03:22.235 [DEBUG] [Thread-125035] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:03:28.402 [DEBUG] [Thread-125037 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:03:43.535 [DEBUG] [Thread-125038 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:03:52.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:03:52.258 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:03:52.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:03:53.452 [DEBUG] [Thread-125039 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:03:53.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 3, 18), 29.18, 12.66, 0.0, 18.67, 18.57, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:03:53.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:03:18
2025-11-04T00:03:53.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:03:54.222 [DEBUG] [Thread-125040] [transport.py] [_log()] starting thread (client mode): 0x117eb940
2025-11-04T00:03:54.228 [DEBUG] [Thread-125040] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:03:54.230 [DEBUG] [Thread-125040] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:03:54.232 [INFO] [Thread-125040] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:03:54.249 [DEBUG] [Thread-125040] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:03:54.251 [DEBUG] [Thread-125040] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:03:54.251 [DEBUG] [Thread-125040] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:03:54.251 [DEBUG] [Thread-125040] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:03:54.251 [DEBUG] [Thread-125040] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:03:54.251 [DEBUG] [Thread-125040] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:03:54.251 [DEBUG] [Thread-125040] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:03:54.251 [DEBUG] [Thread-125040] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:03:54.251 [DEBUG] [Thread-125040] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:03:54.251 [DEBUG] [Thread-125040] [transport.py] [_log()] client lang: <none>
2025-11-04T00:03:54.251 [DEBUG] [Thread-125040] [transport.py] [_log()] server lang: <none>
2025-11-04T00:03:54.253 [DEBUG] [Thread-125040] [transport.py] [_log()] kex follows: False
2025-11-04T00:03:54.253 [DEBUG] [Thread-125040] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:03:54.259 [DEBUG] [Thread-125040] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:03:54.259 [DEBUG] [Thread-125040] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:03:54.259 [DEBUG] [Thread-125040] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:03:54.259 [DEBUG] [Thread-125040] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:03:54.261 [DEBUG] [Thread-125040] [transport.py] [_log()] Compression: none
2025-11-04T00:03:54.261 [DEBUG] [Thread-125040] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:03:54.336 [DEBUG] [Thread-125040] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:03:54.358 [DEBUG] [Thread-125040] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:03:54.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:03:54.370 [DEBUG] [Thread-125040] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:03:54.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:03:54.383 [DEBUG] [Thread-125040] [transport.py] [_log()] userauth is OK
2025-11-04T00:03:54.383 [DEBUG] [Thread-125040] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:03:54.384 [DEBUG] [Thread-125040] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:03:54.384 [DEBUG] [Thread-125040] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:03:54.384 [DEBUG] [Thread-125040] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:03:54.420 [INFO] [Thread-125040] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:03:54.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:03:55.026 [DEBUG] [Thread-125040] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:03:55.026 [DEBUG] [Thread-125040] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:03:55.031 [DEBUG] [Thread-125040] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:03:55.067 [DEBUG] [Thread-125040] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:03:55.067 [DEBUG] [Thread-125040] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:03:55.074 [DEBUG] [Thread-125040] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:03:55.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:03:55.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:03:55.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:03:55.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:03:55.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:03:55.096 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:03:55.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:03:55.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:03:55.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:03:55.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.919196 -999.00  +19.10  17.35     17   -6.00 1 1 1 1 1     0    0 24.38 -3.51 ZNESW 18.1 17.4 303.2 21.4 18.9 -24.9 18.9 -24.0 18.6 -23.6 18.9 -24.7
2025-11-04T00:03:55.108 [DEBUG] [Thread-125040] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:03:55.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:03:55.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:03:55.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.919196
2025-11-04T00:03:55.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:03:55.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:03:55.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:03:55.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:03:55.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:03:55.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:03:18', tmtdew=29.18, humidity=12.66, cloud=0.0, wind=18.67, temperature=18.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:03:38.534', atlas_cloud=1, atlas_rain=1, zp_data=[0.02874999999999872, -0.021749999999999048, 0.1172500000000003, 0.12449999999999939, 0.09950000000000081, 0.08525000000000027, -0.22949999999999982, 0.12424999999999997, 0.11949999999999861, 0.06700000000000017, 0.1042500000000004, 0.09600000000000009, 0.08650000000000091, 0.08525000000000027, -0.7420000000000009, -0.05900000000000105, 0.10174999999999912, 0.06999999999999851, 0.1739999999999995, 0.1402499999999982, 0.15099999999999802, 0.0417500000000004, -0.5977499999999996, 0.04574999999999996, 0.1120000000000001, 0.1974999999999998, 0.19875000000000043, 0.2560000000000002, 0.27249999999999996, 0.17300000000000182, -0.4559999999999995, 0.0884999999999998, 0.12674999999999947], zp_timestamp='2025-11-03T22:02:00')
2025-11-04T00:03:55.296 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:03:55.309 [DEBUG] [Thread-125043] [transport.py] [_log()] starting thread (client mode): 0xed439a0
2025-11-04T00:03:55.310 [DEBUG] [Thread-125043] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:03:55.326 [DEBUG] [Thread-125043] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:03:55.326 [INFO] [Thread-125043] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:03:55.334 [DEBUG] [Thread-125043] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:03:55.334 [DEBUG] [Thread-125043] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:03:55.334 [DEBUG] [Thread-125043] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:03:55.334 [DEBUG] [Thread-125043] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:03:55.334 [DEBUG] [Thread-125043] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:03:55.334 [DEBUG] [Thread-125043] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:03:55.334 [DEBUG] [Thread-125043] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:03:55.334 [DEBUG] [Thread-125043] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:03:55.334 [DEBUG] [Thread-125043] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:03:55.334 [DEBUG] [Thread-125043] [transport.py] [_log()] client lang: <none>
2025-11-04T00:03:55.334 [DEBUG] [Thread-125043] [transport.py] [_log()] server lang: <none>
2025-11-04T00:03:55.334 [DEBUG] [Thread-125043] [transport.py] [_log()] kex follows: False
2025-11-04T00:03:55.334 [DEBUG] [Thread-125043] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:03:55.334 [DEBUG] [Thread-125043] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:03:55.334 [DEBUG] [Thread-125043] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:03:55.334 [DEBUG] [Thread-125043] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:03:55.334 [DEBUG] [Thread-125043] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:03:55.335 [DEBUG] [Thread-125043] [transport.py] [_log()] Compression: none
2025-11-04T00:03:55.335 [DEBUG] [Thread-125043] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:03:55.391 [DEBUG] [Thread-125043] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:03:55.392 [DEBUG] [Thread-125043] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:03:55.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:03:55.393 [DEBUG] [Thread-125043] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:03:55.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:03:55.453 [DEBUG] [Thread-125043] [transport.py] [_log()] userauth is OK
2025-11-04T00:03:55.454 [DEBUG] [Thread-125043] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:03:55.454 [DEBUG] [Thread-125043] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:03:55.454 [DEBUG] [Thread-125043] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:03:55.454 [DEBUG] [Thread-125043] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:03:55.477 [INFO] [Thread-125043] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:03:55.477 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:03:55.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:03:56.343 [DEBUG] [Thread-125043] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:03:56.344 [DEBUG] [Thread-125043] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:03:56.394 [DEBUG] [Thread-125043] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:03:56.394 [DEBUG] [Thread-125043] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:03:56.407 [DEBUG] [Thread-125043] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:03:56.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:03:56.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:03:56.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:03:56.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:03:56.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:03:56.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:03:56.459 [DEBUG] [Thread-125043] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:03:58.567 [DEBUG] [Thread-125045 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:04:13.739 [DEBUG] [Thread-125046 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:04:13.999 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:04:13.999 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:04:26.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:04:26.480 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:04:26.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:04:27.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 3, 50), 29.29, 12.61, 0.0, 18.65, 18.63, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:04:27.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:03:50
2025-11-04T00:04:27.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:04:27.709 [DEBUG] [Thread-125047] [transport.py] [_log()] starting thread (client mode): 0xed5cb20
2025-11-04T00:04:27.709 [DEBUG] [Thread-125047] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:04:27.723 [DEBUG] [Thread-125047] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:04:27.723 [INFO] [Thread-125047] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:04:27.727 [DEBUG] [Thread-125047] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:04:27.727 [DEBUG] [Thread-125047] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:04:27.727 [DEBUG] [Thread-125047] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:04:27.727 [DEBUG] [Thread-125047] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:04:27.727 [DEBUG] [Thread-125047] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:04:27.727 [DEBUG] [Thread-125047] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:04:27.727 [DEBUG] [Thread-125047] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:04:27.727 [DEBUG] [Thread-125047] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:04:27.727 [DEBUG] [Thread-125047] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:04:27.727 [DEBUG] [Thread-125047] [transport.py] [_log()] client lang: <none>
2025-11-04T00:04:27.727 [DEBUG] [Thread-125047] [transport.py] [_log()] server lang: <none>
2025-11-04T00:04:27.728 [DEBUG] [Thread-125047] [transport.py] [_log()] kex follows: False
2025-11-04T00:04:27.728 [DEBUG] [Thread-125047] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:04:27.728 [DEBUG] [Thread-125047] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:04:27.728 [DEBUG] [Thread-125047] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:04:27.728 [DEBUG] [Thread-125047] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:04:27.728 [DEBUG] [Thread-125047] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:04:27.728 [DEBUG] [Thread-125047] [transport.py] [_log()] Compression: none
2025-11-04T00:04:27.728 [DEBUG] [Thread-125047] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:04:27.752 [DEBUG] [Thread-125047] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:04:27.754 [DEBUG] [Thread-125047] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:04:27.755 [DEBUG] [Thread-125047] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:04:27.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:04:27.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:04:27.796 [DEBUG] [Thread-125047] [transport.py] [_log()] userauth is OK
2025-11-04T00:04:27.796 [DEBUG] [Thread-125047] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:04:27.796 [DEBUG] [Thread-125047] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:04:27.796 [DEBUG] [Thread-125047] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:04:27.796 [DEBUG] [Thread-125047] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:04:27.825 [INFO] [Thread-125047] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:04:27.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:04:28.501 [DEBUG] [Thread-125047] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:04:28.502 [DEBUG] [Thread-125047] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:04:28.502 [DEBUG] [Thread-125047] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:04:28.543 [DEBUG] [Thread-125047] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:04:28.543 [DEBUG] [Thread-125047] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:04:28.545 [DEBUG] [Thread-125047] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:04:28.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:04:28.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:04:28.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:04:28.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:04:28.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:04:28.565 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:04:28.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:04:28.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:04:28.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:04:28.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.919543 -999.00  +19.20  18.78     17   -5.90 1 1 1 1 1     0    0 24.91 -2.46 ZNESW 18.1 18.8 304.6 20.5 18.9 -25.0 18.9 -24.0 18.7 -23.8 18.9 -24.5
2025-11-04T00:04:28.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:04:28.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:04:28.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.919543
2025-11-04T00:04:28.572 [DEBUG] [Thread-125047] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:04:28.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:04:28.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:04:28.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:04:28.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:04:28.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:04:28.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:03:50', tmtdew=29.29, humidity=12.61, cloud=0.0, wind=18.65, temperature=18.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:04:08.515', atlas_cloud=1, atlas_rain=1, zp_data=[0.02874999999999872, -0.021749999999999048, 0.1172500000000003, 0.12449999999999939, 0.09950000000000081, 0.08525000000000027, -0.22949999999999982, 0.12424999999999997, 0.11949999999999861, 0.06700000000000017, 0.1042500000000004, 0.09600000000000009, 0.08650000000000091, 0.08525000000000027, -0.7420000000000009, -0.05900000000000105, 0.10174999999999912, 0.06999999999999851, 0.1739999999999995, 0.1402499999999982, 0.15099999999999802, 0.0417500000000004, -0.5977499999999996, 0.04574999999999996, 0.1120000000000001, 0.1974999999999998, 0.19875000000000043, 0.2560000000000002, 0.27249999999999996, 0.17300000000000182, -0.4559999999999995, 0.0884999999999998, 0.12674999999999947], zp_timestamp='2025-11-03T22:02:00')
2025-11-04T00:04:28.651 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:04:28.663 [DEBUG] [Thread-125050] [transport.py] [_log()] starting thread (client mode): 0x11762ec0
2025-11-04T00:04:28.663 [DEBUG] [Thread-125050] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:04:28.679 [DEBUG] [Thread-125050] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:04:28.679 [INFO] [Thread-125050] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:04:28.686 [DEBUG] [Thread-125050] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:04:28.686 [DEBUG] [Thread-125050] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:04:28.686 [DEBUG] [Thread-125050] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:04:28.686 [DEBUG] [Thread-125050] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:04:28.686 [DEBUG] [Thread-125050] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:04:28.686 [DEBUG] [Thread-125050] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:04:28.686 [DEBUG] [Thread-125050] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:04:28.686 [DEBUG] [Thread-125050] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:04:28.686 [DEBUG] [Thread-125050] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:04:28.686 [DEBUG] [Thread-125050] [transport.py] [_log()] client lang: <none>
2025-11-04T00:04:28.686 [DEBUG] [Thread-125050] [transport.py] [_log()] server lang: <none>
2025-11-04T00:04:28.686 [DEBUG] [Thread-125050] [transport.py] [_log()] kex follows: False
2025-11-04T00:04:28.686 [DEBUG] [Thread-125050] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:04:28.686 [DEBUG] [Thread-125050] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:04:28.686 [DEBUG] [Thread-125050] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:04:28.686 [DEBUG] [Thread-125050] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:04:28.686 [DEBUG] [Thread-125050] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:04:28.687 [DEBUG] [Thread-125050] [transport.py] [_log()] Compression: none
2025-11-04T00:04:28.687 [DEBUG] [Thread-125050] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:04:28.741 [DEBUG] [Thread-125050] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:04:28.741 [DEBUG] [Thread-125050] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:04:28.742 [DEBUG] [Thread-125050] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:04:28.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:04:28.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:04:28.766 [DEBUG] [Thread-125052 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:04:28.799 [DEBUG] [Thread-125050] [transport.py] [_log()] userauth is OK
2025-11-04T00:04:28.799 [DEBUG] [Thread-125050] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:04:28.799 [DEBUG] [Thread-125050] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:04:28.799 [DEBUG] [Thread-125050] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:04:28.799 [DEBUG] [Thread-125050] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:04:28.813 [INFO] [Thread-125050] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:04:28.814 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:04:28.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:04:29.688 [DEBUG] [Thread-125050] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:04:29.689 [DEBUG] [Thread-125050] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:04:29.737 [DEBUG] [Thread-125050] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:04:29.737 [DEBUG] [Thread-125050] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:04:29.746 [DEBUG] [Thread-125050] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:04:29.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:04:29.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:04:29.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:04:29.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:04:29.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:04:29.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:04:29.791 [DEBUG] [Thread-125050] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:04:43.843 [DEBUG] [Thread-125053 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:04:53.809 [DEBUG] [Thread-125054 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:04:58.878 [DEBUG] [Thread-125055 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:04:59.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:04:59.814 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:04:59.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:05:00.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 4, 26), 29.3, 12.59, 0.0, 18.33, 18.62, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:05:00.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:04:26
2025-11-04T00:05:01.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:05:01.283 [DEBUG] [Thread-125056] [transport.py] [_log()] starting thread (client mode): 0xed5f6d0
2025-11-04T00:05:01.283 [DEBUG] [Thread-125056] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:05:01.301 [DEBUG] [Thread-125056] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:05:01.302 [INFO] [Thread-125056] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:05:01.303 [DEBUG] [Thread-125056] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:05:01.303 [DEBUG] [Thread-125056] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:05:01.303 [DEBUG] [Thread-125056] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:05:01.303 [DEBUG] [Thread-125056] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:05:01.303 [DEBUG] [Thread-125056] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:05:01.303 [DEBUG] [Thread-125056] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:05:01.303 [DEBUG] [Thread-125056] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:05:01.303 [DEBUG] [Thread-125056] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:05:01.304 [DEBUG] [Thread-125056] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:05:01.304 [DEBUG] [Thread-125056] [transport.py] [_log()] client lang: <none>
2025-11-04T00:05:01.304 [DEBUG] [Thread-125056] [transport.py] [_log()] server lang: <none>
2025-11-04T00:05:01.304 [DEBUG] [Thread-125056] [transport.py] [_log()] kex follows: False
2025-11-04T00:05:01.304 [DEBUG] [Thread-125056] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:05:01.304 [DEBUG] [Thread-125056] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:05:01.304 [DEBUG] [Thread-125056] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:05:01.304 [DEBUG] [Thread-125056] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:05:01.304 [DEBUG] [Thread-125056] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:05:01.304 [DEBUG] [Thread-125056] [transport.py] [_log()] Compression: none
2025-11-04T00:05:01.304 [DEBUG] [Thread-125056] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:05:01.315 [DEBUG] [Thread-125056] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:05:01.316 [DEBUG] [Thread-125056] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:05:01.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:05:01.317 [DEBUG] [Thread-125056] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:05:01.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:05:01.319 [DEBUG] [Thread-125056] [transport.py] [_log()] userauth is OK
2025-11-04T00:05:01.319 [DEBUG] [Thread-125056] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:05:01.319 [DEBUG] [Thread-125056] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:05:01.319 [DEBUG] [Thread-125056] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:05:01.319 [DEBUG] [Thread-125056] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:05:01.337 [INFO] [Thread-125056] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:05:01.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:05:01.915 [DEBUG] [Thread-125056] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:05:01.915 [DEBUG] [Thread-125056] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:05:01.916 [DEBUG] [Thread-125056] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:05:01.958 [DEBUG] [Thread-125056] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:05:01.958 [DEBUG] [Thread-125056] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:05:01.960 [DEBUG] [Thread-125056] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:05:01.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:05:01.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:05:01.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:05:01.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:05:01.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:05:01.978 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:05:01.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:05:01.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:05:01.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:05:01.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.919891 -999.00  +19.20  19.99     17   -6.00 1 1 1 1 1     0    0 25.12 -1.46 ZNESW 17.7 20.0 304.0 23.6 18.9 -25.1 18.9 -24.0 18.6 -23.7 18.9 -24.7
2025-11-04T00:05:01.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:05:01.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:05:01.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.919891
2025-11-04T00:05:01.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:05:01.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:05:01.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:05:01.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:05:01.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:05:01.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:04:26', tmtdew=29.3, humidity=12.59, cloud=0.0, wind=18.33, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:04:38.582', atlas_cloud=1, atlas_rain=1, zp_data=[0.02874999999999872, -0.021749999999999048, 0.1172500000000003, 0.12449999999999939, 0.09950000000000081, 0.08525000000000027, -0.22949999999999982, 0.12424999999999997, 0.11949999999999861, 0.06700000000000017, 0.1042500000000004, 0.09600000000000009, 0.08650000000000091, 0.08525000000000027, -0.7420000000000009, -0.05900000000000105, 0.10174999999999912, 0.06999999999999851, 0.1739999999999995, 0.1402499999999982, 0.15099999999999802, 0.0417500000000004, -0.5977499999999996, 0.04574999999999996, 0.1120000000000001, 0.1974999999999998, 0.19875000000000043, 0.2560000000000002, 0.27249999999999996, 0.17300000000000182, -0.4559999999999995, 0.0884999999999998, 0.12674999999999947], zp_timestamp='2025-11-03T22:02:00')
2025-11-04T00:05:01.981 [DEBUG] [Thread-125056] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:05:02.059 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:05:02.070 [DEBUG] [Thread-125059] [transport.py] [_log()] starting thread (client mode): 0xed5e8f0
2025-11-04T00:05:02.070 [DEBUG] [Thread-125059] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:05:02.086 [DEBUG] [Thread-125059] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:05:02.087 [INFO] [Thread-125059] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:05:02.095 [DEBUG] [Thread-125059] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:05:02.095 [DEBUG] [Thread-125059] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:05:02.095 [DEBUG] [Thread-125059] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:05:02.095 [DEBUG] [Thread-125059] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:05:02.095 [DEBUG] [Thread-125059] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:05:02.095 [DEBUG] [Thread-125059] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:05:02.095 [DEBUG] [Thread-125059] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:05:02.095 [DEBUG] [Thread-125059] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:05:02.096 [DEBUG] [Thread-125059] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:05:02.096 [DEBUG] [Thread-125059] [transport.py] [_log()] client lang: <none>
2025-11-04T00:05:02.096 [DEBUG] [Thread-125059] [transport.py] [_log()] server lang: <none>
2025-11-04T00:05:02.096 [DEBUG] [Thread-125059] [transport.py] [_log()] kex follows: False
2025-11-04T00:05:02.096 [DEBUG] [Thread-125059] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:05:02.096 [DEBUG] [Thread-125059] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:05:02.096 [DEBUG] [Thread-125059] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:05:02.098 [DEBUG] [Thread-125059] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:05:02.098 [DEBUG] [Thread-125059] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:05:02.098 [DEBUG] [Thread-125059] [transport.py] [_log()] Compression: none
2025-11-04T00:05:02.098 [DEBUG] [Thread-125059] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:05:02.154 [DEBUG] [Thread-125059] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:05:02.155 [DEBUG] [Thread-125059] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:05:02.155 [DEBUG] [Thread-125059] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:05:02.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:05:02.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:05:02.211 [DEBUG] [Thread-125059] [transport.py] [_log()] userauth is OK
2025-11-04T00:05:02.212 [DEBUG] [Thread-125059] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:05:02.212 [DEBUG] [Thread-125059] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:05:02.212 [DEBUG] [Thread-125059] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:05:02.212 [DEBUG] [Thread-125059] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:05:02.232 [INFO] [Thread-125059] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:05:02.233 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:05:02.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:05:03.098 [DEBUG] [Thread-125059] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:05:03.100 [DEBUG] [Thread-125059] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:05:03.146 [DEBUG] [Thread-125059] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:05:03.146 [DEBUG] [Thread-125059] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:05:03.156 [DEBUG] [Thread-125059] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:05:03.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:05:03.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:05:03.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:05:03.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:05:03.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:05:03.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:05:03.190 [DEBUG] [Thread-125059] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:05:13.911 [DEBUG] [Thread-125061 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:05:14.204 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:05:14.214 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:05:28.978 [DEBUG] [Thread-125062 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:05:33.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:05:33.212 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:05:33.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:05:33.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 4, 59), 29.29, 12.61, 0.0, 16.67, 18.65, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:05:33.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:04:59
2025-11-04T00:05:34.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:05:34.229 [DEBUG] [Thread-125063] [transport.py] [_log()] starting thread (client mode): 0xed5f070
2025-11-04T00:05:34.229 [DEBUG] [Thread-125063] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:05:34.246 [DEBUG] [Thread-125063] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:05:34.246 [INFO] [Thread-125063] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:05:34.248 [DEBUG] [Thread-125063] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:05:34.248 [DEBUG] [Thread-125063] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:05:34.248 [DEBUG] [Thread-125063] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:05:34.248 [DEBUG] [Thread-125063] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:05:34.248 [DEBUG] [Thread-125063] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:05:34.248 [DEBUG] [Thread-125063] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:05:34.248 [DEBUG] [Thread-125063] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:05:34.248 [DEBUG] [Thread-125063] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:05:34.248 [DEBUG] [Thread-125063] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:05:34.248 [DEBUG] [Thread-125063] [transport.py] [_log()] client lang: <none>
2025-11-04T00:05:34.248 [DEBUG] [Thread-125063] [transport.py] [_log()] server lang: <none>
2025-11-04T00:05:34.248 [DEBUG] [Thread-125063] [transport.py] [_log()] kex follows: False
2025-11-04T00:05:34.248 [DEBUG] [Thread-125063] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:05:34.248 [DEBUG] [Thread-125063] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:05:34.248 [DEBUG] [Thread-125063] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:05:34.248 [DEBUG] [Thread-125063] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:05:34.248 [DEBUG] [Thread-125063] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:05:34.248 [DEBUG] [Thread-125063] [transport.py] [_log()] Compression: none
2025-11-04T00:05:34.248 [DEBUG] [Thread-125063] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:05:34.256 [DEBUG] [Thread-125063] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:05:34.256 [DEBUG] [Thread-125063] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:05:34.256 [DEBUG] [Thread-125063] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:05:34.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:05:34.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:05:34.257 [DEBUG] [Thread-125063] [transport.py] [_log()] userauth is OK
2025-11-04T00:05:34.257 [DEBUG] [Thread-125063] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:05:34.257 [DEBUG] [Thread-125063] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:05:34.257 [DEBUG] [Thread-125063] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:05:34.257 [DEBUG] [Thread-125063] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:05:34.267 [INFO] [Thread-125063] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:05:34.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:05:34.836 [DEBUG] [Thread-125063] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:05:34.836 [DEBUG] [Thread-125063] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:05:34.836 [DEBUG] [Thread-125063] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:05:34.876 [DEBUG] [Thread-125063] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:05:34.876 [DEBUG] [Thread-125063] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:05:34.878 [DEBUG] [Thread-125063] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:05:34.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:05:34.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:05:34.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:05:34.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:05:34.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:05:34.901 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:05:34.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:05:34.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:05:34.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:05:34.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.920237 -999.00  +19.20  17.00     17   -6.00 1 1 1 1 1     0    0 24.56 -0.70 ZNESW 18.2 17.0 304.0 21.4 18.9 -25.0 18.9 -24.1 18.7 -23.7 18.9 -24.9
2025-11-04T00:05:34.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:05:34.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:05:34.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.920237
2025-11-04T00:05:34.909 [DEBUG] [Thread-125063] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:05:34.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:05:34.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:05:34.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:05:34.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:05:34.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:05:34.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:04:59', tmtdew=29.29, humidity=12.61, cloud=0.0, wind=16.67, temperature=18.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:05:08.477', atlas_cloud=1, atlas_rain=1, zp_data=[0.02874999999999872, -0.021749999999999048, 0.1172500000000003, 0.12449999999999939, 0.09950000000000081, 0.08525000000000027, -0.22949999999999982, 0.12424999999999997, 0.11949999999999861, 0.06700000000000017, 0.1042500000000004, 0.09600000000000009, 0.08650000000000091, 0.08525000000000027, -0.7420000000000009, -0.05900000000000105, 0.10174999999999912, 0.06999999999999851, 0.1739999999999995, 0.1402499999999982, 0.15099999999999802, 0.0417500000000004, -0.5977499999999996, 0.04574999999999996, 0.1120000000000001, 0.1974999999999998, 0.19875000000000043, 0.2560000000000002, 0.27249999999999996, 0.17300000000000182, -0.4559999999999995, 0.0884999999999998, 0.12674999999999947], zp_timestamp='2025-11-03T22:02:00')
2025-11-04T00:05:34.982 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:05:34.994 [DEBUG] [Thread-125066] [transport.py] [_log()] starting thread (client mode): 0xed5c220
2025-11-04T00:05:34.994 [DEBUG] [Thread-125066] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:05:35.008 [DEBUG] [Thread-125066] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:05:35.008 [INFO] [Thread-125066] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:05:35.017 [DEBUG] [Thread-125066] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:05:35.017 [DEBUG] [Thread-125066] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:05:35.017 [DEBUG] [Thread-125066] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:05:35.017 [DEBUG] [Thread-125066] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:05:35.017 [DEBUG] [Thread-125066] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:05:35.017 [DEBUG] [Thread-125066] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:05:35.017 [DEBUG] [Thread-125066] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:05:35.017 [DEBUG] [Thread-125066] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:05:35.017 [DEBUG] [Thread-125066] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:05:35.017 [DEBUG] [Thread-125066] [transport.py] [_log()] client lang: <none>
2025-11-04T00:05:35.017 [DEBUG] [Thread-125066] [transport.py] [_log()] server lang: <none>
2025-11-04T00:05:35.017 [DEBUG] [Thread-125066] [transport.py] [_log()] kex follows: False
2025-11-04T00:05:35.017 [DEBUG] [Thread-125066] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:05:35.017 [DEBUG] [Thread-125066] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:05:35.017 [DEBUG] [Thread-125066] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:05:35.017 [DEBUG] [Thread-125066] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:05:35.017 [DEBUG] [Thread-125066] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:05:35.017 [DEBUG] [Thread-125066] [transport.py] [_log()] Compression: none
2025-11-04T00:05:35.017 [DEBUG] [Thread-125066] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:05:35.081 [DEBUG] [Thread-125066] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:05:35.081 [DEBUG] [Thread-125066] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:05:35.081 [DEBUG] [Thread-125066] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:05:35.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:05:35.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:05:35.144 [DEBUG] [Thread-125066] [transport.py] [_log()] userauth is OK
2025-11-04T00:05:35.144 [DEBUG] [Thread-125066] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:05:35.144 [DEBUG] [Thread-125066] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:05:35.144 [DEBUG] [Thread-125066] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:05:35.144 [DEBUG] [Thread-125066] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:05:35.159 [INFO] [Thread-125066] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:05:35.159 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:05:35.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:05:36.004 [DEBUG] [Thread-125066] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:05:36.004 [DEBUG] [Thread-125066] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:05:36.053 [DEBUG] [Thread-125066] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:05:36.053 [DEBUG] [Thread-125066] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:05:36.062 [DEBUG] [Thread-125066] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:05:36.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:05:36.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:05:36.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:05:36.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:05:36.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:05:36.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:05:36.097 [DEBUG] [Thread-125066] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:05:44.020 [DEBUG] [Thread-125068 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:05:54.100 [DEBUG] [Thread-125069 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:05:59.068 [DEBUG] [Thread-125070 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:06:06.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:06:06.120 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:06:06.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:06:06.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 5, 34), 29.33, 12.61, 0.0, 16.73, 18.62, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:06:06.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:05:34
2025-11-04T00:06:07.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:06:07.163 [DEBUG] [Thread-125071] [transport.py] [_log()] starting thread (client mode): 0x117e9cf0
2025-11-04T00:06:07.163 [DEBUG] [Thread-125071] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:06:07.183 [DEBUG] [Thread-125071] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:06:07.183 [INFO] [Thread-125071] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:06:07.193 [DEBUG] [Thread-125071] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:06:07.193 [DEBUG] [Thread-125071] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:06:07.193 [DEBUG] [Thread-125071] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:06:07.193 [DEBUG] [Thread-125071] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:06:07.193 [DEBUG] [Thread-125071] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:06:07.193 [DEBUG] [Thread-125071] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:06:07.193 [DEBUG] [Thread-125071] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:06:07.194 [DEBUG] [Thread-125071] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:06:07.194 [DEBUG] [Thread-125071] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:06:07.194 [DEBUG] [Thread-125071] [transport.py] [_log()] client lang: <none>
2025-11-04T00:06:07.194 [DEBUG] [Thread-125071] [transport.py] [_log()] server lang: <none>
2025-11-04T00:06:07.194 [DEBUG] [Thread-125071] [transport.py] [_log()] kex follows: False
2025-11-04T00:06:07.194 [DEBUG] [Thread-125071] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:06:07.194 [DEBUG] [Thread-125071] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:06:07.194 [DEBUG] [Thread-125071] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:06:07.194 [DEBUG] [Thread-125071] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:06:07.195 [DEBUG] [Thread-125071] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:06:07.195 [DEBUG] [Thread-125071] [transport.py] [_log()] Compression: none
2025-11-04T00:06:07.195 [DEBUG] [Thread-125071] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:06:07.208 [DEBUG] [Thread-125071] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:06:07.209 [DEBUG] [Thread-125071] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:06:07.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:06:07.210 [DEBUG] [Thread-125071] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:06:07.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:06:07.212 [DEBUG] [Thread-125071] [transport.py] [_log()] userauth is OK
2025-11-04T00:06:07.212 [DEBUG] [Thread-125071] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:06:07.212 [DEBUG] [Thread-125071] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:06:07.212 [DEBUG] [Thread-125071] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:06:07.213 [DEBUG] [Thread-125071] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:06:07.235 [INFO] [Thread-125071] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:06:07.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:06:07.851 [DEBUG] [Thread-125071] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:06:07.851 [DEBUG] [Thread-125071] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:06:07.851 [DEBUG] [Thread-125071] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:06:07.891 [DEBUG] [Thread-125071] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:06:07.891 [DEBUG] [Thread-125071] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:06:07.893 [DEBUG] [Thread-125071] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:06:07.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:06:07.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:06:07.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:06:07.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:06:07.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:06:07.905 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:06:07.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:06:07.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:06:07.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:06:07.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.920585 -999.00  +19.10  15.88     17   -5.90 1 1 1 1 1     0    0 25.26 -0.07 ZNESW 19.6 15.9 301.6 22.3 18.9 -24.9 18.9 -24.0 18.7 -23.8 18.9 -24.6
2025-11-04T00:06:07.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:06:07.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:06:07.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.920585
2025-11-04T00:06:07.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:06:07.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:06:07.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:06:07.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:06:07.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:06:07.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:05:34', tmtdew=29.33, humidity=12.61, cloud=0.0, wind=16.73, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:05:38.544', atlas_cloud=1, atlas_rain=1, zp_data=[0.02874999999999872, -0.021749999999999048, 0.1172500000000003, 0.12449999999999939, 0.09950000000000081, 0.08525000000000027, -0.22949999999999982, 0.12424999999999997, 0.11949999999999861, 0.06700000000000017, 0.1042500000000004, 0.09600000000000009, 0.08650000000000091, 0.08525000000000027, -0.7420000000000009, -0.05900000000000105, 0.10174999999999912, 0.06999999999999851, 0.1739999999999995, 0.1402499999999982, 0.15099999999999802, 0.0417500000000004, -0.5977499999999996, 0.04574999999999996, 0.1120000000000001, 0.1974999999999998, 0.19875000000000043, 0.2560000000000002, 0.27249999999999996, 0.17300000000000182, -0.4559999999999995, 0.0884999999999998, 0.12674999999999947], zp_timestamp='2025-11-03T22:02:00')
2025-11-04T00:06:07.906 [DEBUG] [Thread-125071] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:06:07.980 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:06:07.992 [DEBUG] [Thread-125074] [transport.py] [_log()] starting thread (client mode): 0x11762b30
2025-11-04T00:06:07.992 [DEBUG] [Thread-125074] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:06:08.008 [DEBUG] [Thread-125074] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:06:08.008 [INFO] [Thread-125074] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:06:08.016 [DEBUG] [Thread-125074] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:06:08.016 [DEBUG] [Thread-125074] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:06:08.016 [DEBUG] [Thread-125074] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:06:08.016 [DEBUG] [Thread-125074] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:06:08.016 [DEBUG] [Thread-125074] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:06:08.016 [DEBUG] [Thread-125074] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:06:08.016 [DEBUG] [Thread-125074] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:06:08.016 [DEBUG] [Thread-125074] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:06:08.016 [DEBUG] [Thread-125074] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:06:08.016 [DEBUG] [Thread-125074] [transport.py] [_log()] client lang: <none>
2025-11-04T00:06:08.016 [DEBUG] [Thread-125074] [transport.py] [_log()] server lang: <none>
2025-11-04T00:06:08.016 [DEBUG] [Thread-125074] [transport.py] [_log()] kex follows: False
2025-11-04T00:06:08.016 [DEBUG] [Thread-125074] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:06:08.016 [DEBUG] [Thread-125074] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:06:08.016 [DEBUG] [Thread-125074] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:06:08.016 [DEBUG] [Thread-125074] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:06:08.016 [DEBUG] [Thread-125074] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:06:08.016 [DEBUG] [Thread-125074] [transport.py] [_log()] Compression: none
2025-11-04T00:06:08.016 [DEBUG] [Thread-125074] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:06:08.076 [DEBUG] [Thread-125074] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:06:08.076 [DEBUG] [Thread-125074] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:06:08.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:06:08.077 [DEBUG] [Thread-125074] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:06:08.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:06:08.135 [DEBUG] [Thread-125074] [transport.py] [_log()] userauth is OK
2025-11-04T00:06:08.135 [DEBUG] [Thread-125074] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:06:08.135 [DEBUG] [Thread-125074] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:06:08.135 [DEBUG] [Thread-125074] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:06:08.135 [DEBUG] [Thread-125074] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:06:08.149 [INFO] [Thread-125074] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:06:08.150 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:06:08.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:06:08.988 [DEBUG] [Thread-125074] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:06:08.988 [DEBUG] [Thread-125074] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:06:09.036 [DEBUG] [Thread-125074] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:06:09.036 [DEBUG] [Thread-125074] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:06:09.044 [DEBUG] [Thread-125074] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:06:09.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:06:09.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:06:09.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:06:09.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:06:09.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:06:09.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:06:09.076 [DEBUG] [Thread-125074] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:06:14.096 [DEBUG] [Thread-125076 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:06:14.418 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:06:14.420 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:06:29.156 [DEBUG] [Thread-125077 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:06:39.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:06:39.071 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:06:39.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:06:40.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 6, 7), 29.35, 12.61, 0.0, 16.85, 18.68, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:06:40.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:06:07
2025-11-04T00:06:40.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:06:40.920 [DEBUG] [Thread-125078] [transport.py] [_log()] starting thread (client mode): 0x11763e50
2025-11-04T00:06:40.920 [DEBUG] [Thread-125078] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:06:40.942 [DEBUG] [Thread-125078] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:06:40.942 [INFO] [Thread-125078] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:06:40.945 [DEBUG] [Thread-125078] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:06:40.945 [DEBUG] [Thread-125078] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:06:40.945 [DEBUG] [Thread-125078] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:06:40.945 [DEBUG] [Thread-125078] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:06:40.945 [DEBUG] [Thread-125078] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:06:40.945 [DEBUG] [Thread-125078] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:06:40.945 [DEBUG] [Thread-125078] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:06:40.945 [DEBUG] [Thread-125078] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:06:40.945 [DEBUG] [Thread-125078] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:06:40.945 [DEBUG] [Thread-125078] [transport.py] [_log()] client lang: <none>
2025-11-04T00:06:40.945 [DEBUG] [Thread-125078] [transport.py] [_log()] server lang: <none>
2025-11-04T00:06:40.946 [DEBUG] [Thread-125078] [transport.py] [_log()] kex follows: False
2025-11-04T00:06:40.946 [DEBUG] [Thread-125078] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:06:40.946 [DEBUG] [Thread-125078] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:06:40.946 [DEBUG] [Thread-125078] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:06:40.946 [DEBUG] [Thread-125078] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:06:40.946 [DEBUG] [Thread-125078] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:06:40.946 [DEBUG] [Thread-125078] [transport.py] [_log()] Compression: none
2025-11-04T00:06:40.946 [DEBUG] [Thread-125078] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:06:40.961 [DEBUG] [Thread-125078] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:06:40.961 [DEBUG] [Thread-125078] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:06:40.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:06:40.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:06:40.961 [DEBUG] [Thread-125078] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:06:40.962 [DEBUG] [Thread-125078] [transport.py] [_log()] userauth is OK
2025-11-04T00:06:40.962 [DEBUG] [Thread-125078] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:06:40.962 [DEBUG] [Thread-125078] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:06:40.962 [DEBUG] [Thread-125078] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:06:40.962 [DEBUG] [Thread-125078] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:06:40.977 [INFO] [Thread-125078] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:06:40.977 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:06:41.540 [DEBUG] [Thread-125078] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:06:41.540 [DEBUG] [Thread-125078] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:06:41.540 [DEBUG] [Thread-125078] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:06:41.581 [DEBUG] [Thread-125078] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:06:41.581 [DEBUG] [Thread-125078] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:06:41.583 [DEBUG] [Thread-125078] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:06:41.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:06:41.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:06:41.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:06:41.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:06:41.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:06:41.602 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:06:41.602 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:06:41.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:06:41.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:06:41.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.921279 -999.00  +19.10  18.09     17   -6.00 1 1 1 1 1     0    0 25.05 0.30 ZNESW 15.4 18.1 300.8 21.7 18.9 -25.0 18.9 -24.0 18.6 -23.9 18.9 -24.8
2025-11-04T00:06:41.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:06:41.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:06:41.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.921279
2025-11-04T00:06:41.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:06:41.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:06:41.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:06:41.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:06:41.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:06:41.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:06:07', tmtdew=29.35, humidity=12.61, cloud=0.0, wind=16.85, temperature=18.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:06:38.506', atlas_cloud=1, atlas_rain=1, zp_data=[0.004749999999999588, -0.10975000000000001, 0.12124999999999986, 0.04699999999999882, 0.06500000000000128, 0.03225000000000122, -0.19899999999999984, 0.024250000000000327, 0.07649999999999935, 0.10699999999999932, 0.13874999999999993, 0.02200000000000024, 0.15499999999999936, -0.06375000000000064, -0.5850000000000009, -0.09600000000000009, 0.05424999999999969, 0.08649999999999913, 0.16000000000000014, 0.11924999999999919, 0.0694999999999979, 0.04124999999999801, -0.6237499999999976, 0.027749999999999275, 0.06799999999999962, 0.1899999999999995, 0.20475000000000065, 0.26750000000000007, 0.30400000000000027, 0.21500000000000163, -0.2679999999999989, 0.09200000000000053, 0.14124999999999943], zp_timestamp='2025-11-03T22:05:00')
2025-11-04T00:06:41.603 [DEBUG] [Thread-125078] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:06:41.678 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:06:41.690 [DEBUG] [Thread-125081] [transport.py] [_log()] starting thread (client mode): 0xed1a890
2025-11-04T00:06:41.690 [DEBUG] [Thread-125081] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:06:41.709 [DEBUG] [Thread-125081] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:06:41.709 [INFO] [Thread-125081] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:06:41.718 [DEBUG] [Thread-125081] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:06:41.718 [DEBUG] [Thread-125081] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:06:41.718 [DEBUG] [Thread-125081] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:06:41.718 [DEBUG] [Thread-125081] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:06:41.718 [DEBUG] [Thread-125081] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:06:41.718 [DEBUG] [Thread-125081] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:06:41.718 [DEBUG] [Thread-125081] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:06:41.718 [DEBUG] [Thread-125081] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:06:41.718 [DEBUG] [Thread-125081] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:06:41.718 [DEBUG] [Thread-125081] [transport.py] [_log()] client lang: <none>
2025-11-04T00:06:41.718 [DEBUG] [Thread-125081] [transport.py] [_log()] server lang: <none>
2025-11-04T00:06:41.718 [DEBUG] [Thread-125081] [transport.py] [_log()] kex follows: False
2025-11-04T00:06:41.718 [DEBUG] [Thread-125081] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:06:41.718 [DEBUG] [Thread-125081] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:06:41.718 [DEBUG] [Thread-125081] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:06:41.719 [DEBUG] [Thread-125081] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:06:41.719 [DEBUG] [Thread-125081] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:06:41.719 [DEBUG] [Thread-125081] [transport.py] [_log()] Compression: none
2025-11-04T00:06:41.719 [DEBUG] [Thread-125081] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:06:41.775 [DEBUG] [Thread-125081] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:06:41.775 [DEBUG] [Thread-125081] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:06:41.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:06:41.775 [DEBUG] [Thread-125081] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:06:41.776 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:06:41.832 [DEBUG] [Thread-125081] [transport.py] [_log()] userauth is OK
2025-11-04T00:06:41.832 [DEBUG] [Thread-125081] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:06:41.832 [DEBUG] [Thread-125081] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:06:41.832 [DEBUG] [Thread-125081] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:06:41.832 [DEBUG] [Thread-125081] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:06:41.847 [INFO] [Thread-125081] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:06:41.847 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:06:41.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:06:42.756 [DEBUG] [Thread-125081] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:06:42.756 [DEBUG] [Thread-125081] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:06:42.808 [DEBUG] [Thread-125081] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:06:42.808 [DEBUG] [Thread-125081] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:06:42.820 [DEBUG] [Thread-125081] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:06:42.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:06:42.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:06:42.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:06:42.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:06:42.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:06:42.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:06:42.879 [DEBUG] [Thread-125081] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:06:44.187 [DEBUG] [Thread-125083 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:06:55.443 [DEBUG] [Thread-125084 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:06:59.228 [DEBUG] [Thread-125085 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:07:02.577 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:07:08.426 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:07:11.486 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:07:12.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:07:12.893 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:07:12.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:07:13.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 6, 39), 29.28, 12.58, 0.0, 16.71, 18.63, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:07:13.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:06:39
2025-11-04T00:07:14.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:07:14.190 [DEBUG] [Thread-125086] [transport.py] [_log()] starting thread (client mode): 0xed1a920
2025-11-04T00:07:14.190 [DEBUG] [Thread-125086] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:07:14.208 [DEBUG] [Thread-125086] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:07:14.208 [INFO] [Thread-125086] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:07:14.210 [DEBUG] [Thread-125086] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:07:14.210 [DEBUG] [Thread-125086] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:07:14.210 [DEBUG] [Thread-125086] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:07:14.210 [DEBUG] [Thread-125086] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:07:14.210 [DEBUG] [Thread-125086] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:07:14.210 [DEBUG] [Thread-125086] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:07:14.210 [DEBUG] [Thread-125086] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:07:14.210 [DEBUG] [Thread-125086] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:07:14.210 [DEBUG] [Thread-125086] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:07:14.210 [DEBUG] [Thread-125086] [transport.py] [_log()] client lang: <none>
2025-11-04T00:07:14.210 [DEBUG] [Thread-125086] [transport.py] [_log()] server lang: <none>
2025-11-04T00:07:14.210 [DEBUG] [Thread-125086] [transport.py] [_log()] kex follows: False
2025-11-04T00:07:14.210 [DEBUG] [Thread-125086] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:07:14.210 [DEBUG] [Thread-125086] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:07:14.210 [DEBUG] [Thread-125086] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:07:14.210 [DEBUG] [Thread-125086] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:07:14.210 [DEBUG] [Thread-125086] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:07:14.210 [DEBUG] [Thread-125086] [transport.py] [_log()] Compression: none
2025-11-04T00:07:14.211 [DEBUG] [Thread-125086] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:07:14.225 [DEBUG] [Thread-125086] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:07:14.227 [DEBUG] [Thread-125086] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:07:14.227 [DEBUG] [Thread-125086] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:07:14.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:07:14.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:07:14.229 [DEBUG] [Thread-125086] [transport.py] [_log()] userauth is OK
2025-11-04T00:07:14.230 [DEBUG] [Thread-125086] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:07:14.230 [DEBUG] [Thread-125086] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:07:14.230 [DEBUG] [Thread-125086] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:07:14.230 [DEBUG] [Thread-125086] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:07:14.258 [INFO] [Thread-125086] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:07:14.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:07:14.263 [DEBUG] [Thread-125088 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:07:14.623 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:07:14.624 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:07:14.827 [DEBUG] [Thread-125086] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:07:14.827 [DEBUG] [Thread-125086] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:07:14.827 [DEBUG] [Thread-125086] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:07:14.867 [DEBUG] [Thread-125086] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:07:14.867 [DEBUG] [Thread-125086] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:07:14.872 [DEBUG] [Thread-125086] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:07:14.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:07:14.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:07:14.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:07:14.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:07:14.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:07:14.889 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:07:14.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:07:14.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:07:14.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:07:14.891 [DEBUG] [Thread-125086] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:07:14.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.921279 -999.00  +19.10  18.09     17   -6.00 1 1 1 1 1     0    0 25.05 0.30 ZNESW 15.4 18.1 300.8 21.7 18.9 -25.0 18.9 -24.0 18.6 -23.9 18.9 -24.8
2025-11-04T00:07:14.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:07:14.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:07:14.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.921279
2025-11-04T00:07:14.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:07:14.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:07:14.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:07:14.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:07:14.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:07:14.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:06:39', tmtdew=29.28, humidity=12.58, cloud=0.0, wind=16.71, temperature=18.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:06:38.506', atlas_cloud=1, atlas_rain=1, zp_data=[0.004749999999999588, -0.10975000000000001, 0.12124999999999986, 0.04699999999999882, 0.06500000000000128, 0.03225000000000122, -0.19899999999999984, 0.024250000000000327, 0.07649999999999935, 0.10699999999999932, 0.13874999999999993, 0.02200000000000024, 0.15499999999999936, -0.06375000000000064, -0.5850000000000009, -0.09600000000000009, 0.05424999999999969, 0.08649999999999913, 0.16000000000000014, 0.11924999999999919, 0.0694999999999979, 0.04124999999999801, -0.6237499999999976, 0.027749999999999275, 0.06799999999999962, 0.1899999999999995, 0.20475000000000065, 0.26750000000000007, 0.30400000000000027, 0.21500000000000163, -0.2679999999999989, 0.09200000000000053, 0.14124999999999943], zp_timestamp='2025-11-03T22:05:00')
2025-11-04T00:07:14.973 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:07:14.987 [DEBUG] [Thread-125090] [transport.py] [_log()] starting thread (client mode): 0x1174ce80
2025-11-04T00:07:14.987 [DEBUG] [Thread-125090] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:07:15.002 [DEBUG] [Thread-125090] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:07:15.002 [INFO] [Thread-125090] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:07:15.009 [DEBUG] [Thread-125090] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:07:15.009 [DEBUG] [Thread-125090] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:07:15.009 [DEBUG] [Thread-125090] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:07:15.009 [DEBUG] [Thread-125090] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:07:15.009 [DEBUG] [Thread-125090] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:07:15.009 [DEBUG] [Thread-125090] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:07:15.009 [DEBUG] [Thread-125090] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:07:15.009 [DEBUG] [Thread-125090] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:07:15.009 [DEBUG] [Thread-125090] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:07:15.009 [DEBUG] [Thread-125090] [transport.py] [_log()] client lang: <none>
2025-11-04T00:07:15.009 [DEBUG] [Thread-125090] [transport.py] [_log()] server lang: <none>
2025-11-04T00:07:15.009 [DEBUG] [Thread-125090] [transport.py] [_log()] kex follows: False
2025-11-04T00:07:15.009 [DEBUG] [Thread-125090] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:07:15.009 [DEBUG] [Thread-125090] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:07:15.009 [DEBUG] [Thread-125090] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:07:15.009 [DEBUG] [Thread-125090] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:07:15.010 [DEBUG] [Thread-125090] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:07:15.010 [DEBUG] [Thread-125090] [transport.py] [_log()] Compression: none
2025-11-04T00:07:15.010 [DEBUG] [Thread-125090] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:07:15.069 [DEBUG] [Thread-125090] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:07:15.069 [DEBUG] [Thread-125090] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:07:15.069 [DEBUG] [Thread-125090] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:07:15.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:07:15.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:07:15.126 [DEBUG] [Thread-125090] [transport.py] [_log()] userauth is OK
2025-11-04T00:07:15.127 [DEBUG] [Thread-125090] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:07:15.127 [DEBUG] [Thread-125090] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:07:15.127 [DEBUG] [Thread-125090] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:07:15.127 [DEBUG] [Thread-125090] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:07:15.142 [INFO] [Thread-125090] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:07:15.142 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:07:15.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:07:16.024 [DEBUG] [Thread-125090] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:07:16.024 [DEBUG] [Thread-125090] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:07:16.074 [DEBUG] [Thread-125090] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:07:16.074 [DEBUG] [Thread-125090] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:07:16.085 [DEBUG] [Thread-125090] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:07:16.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:07:16.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:07:16.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:07:16.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:07:16.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:07:16.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:07:16.133 [DEBUG] [Thread-125090] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:07:16.870 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:07:29.295 [DEBUG] [Thread-125092 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:07:44.423 [DEBUG] [Thread-125093 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:07:46.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:07:46.153 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:07:46.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:07:47.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 7, 12), 29.26, 12.59, 0.0, 16.3, 18.63, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:07:47.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:07:12
2025-11-04T00:07:47.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:07:47.879 [DEBUG] [Thread-125094] [transport.py] [_log()] starting thread (client mode): 0xed1b310
2025-11-04T00:07:47.879 [DEBUG] [Thread-125094] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:07:47.900 [DEBUG] [Thread-125094] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:07:47.900 [INFO] [Thread-125094] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:07:47.903 [DEBUG] [Thread-125094] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:07:47.903 [DEBUG] [Thread-125094] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:07:47.903 [DEBUG] [Thread-125094] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:07:47.903 [DEBUG] [Thread-125094] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:07:47.903 [DEBUG] [Thread-125094] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:07:47.903 [DEBUG] [Thread-125094] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:07:47.903 [DEBUG] [Thread-125094] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:07:47.903 [DEBUG] [Thread-125094] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:07:47.903 [DEBUG] [Thread-125094] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:07:47.903 [DEBUG] [Thread-125094] [transport.py] [_log()] client lang: <none>
2025-11-04T00:07:47.903 [DEBUG] [Thread-125094] [transport.py] [_log()] server lang: <none>
2025-11-04T00:07:47.903 [DEBUG] [Thread-125094] [transport.py] [_log()] kex follows: False
2025-11-04T00:07:47.903 [DEBUG] [Thread-125094] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:07:47.903 [DEBUG] [Thread-125094] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:07:47.903 [DEBUG] [Thread-125094] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:07:47.903 [DEBUG] [Thread-125094] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:07:47.905 [DEBUG] [Thread-125094] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:07:47.905 [DEBUG] [Thread-125094] [transport.py] [_log()] Compression: none
2025-11-04T00:07:47.905 [DEBUG] [Thread-125094] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:07:47.920 [DEBUG] [Thread-125094] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:07:47.920 [DEBUG] [Thread-125094] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:07:47.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:07:47.920 [DEBUG] [Thread-125094] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:07:47.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:07:47.921 [DEBUG] [Thread-125094] [transport.py] [_log()] userauth is OK
2025-11-04T00:07:47.921 [DEBUG] [Thread-125094] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:07:47.921 [DEBUG] [Thread-125094] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:07:47.921 [DEBUG] [Thread-125094] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:07:47.921 [DEBUG] [Thread-125094] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:07:47.936 [INFO] [Thread-125094] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:07:47.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:07:48.691 [DEBUG] [Thread-125094] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:07:48.692 [DEBUG] [Thread-125094] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:07:48.692 [DEBUG] [Thread-125094] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:07:48.732 [DEBUG] [Thread-125094] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:07:48.732 [DEBUG] [Thread-125094] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:07:48.734 [DEBUG] [Thread-125094] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:07:48.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:07:48.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:07:48.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:07:48.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:07:48.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:07:48.746 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:07:48.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:07:48.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:07:48.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:07:48.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.921627 -999.00  +19.10  18.35     17   -6.00 1 1 1 1 1     0    0 24.97 0.47 ZNESW 17.2 18.4 298.8 23.2 18.9 -25.0 18.9 -24.0 18.6 -23.8 18.9 -24.7
2025-11-04T00:07:48.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:07:48.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:07:48.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.921627
2025-11-04T00:07:48.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:07:48.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:07:48.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:07:48.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:07:48.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:07:48.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:07:12', tmtdew=29.26, humidity=12.59, cloud=0.0, wind=16.3, temperature=18.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:07:08.573', atlas_cloud=1, atlas_rain=1, zp_data=[0.004749999999999588, -0.10975000000000001, 0.12124999999999986, 0.04699999999999882, 0.06500000000000128, 0.03225000000000122, -0.19899999999999984, 0.024250000000000327, 0.07649999999999935, 0.10699999999999932, 0.13874999999999993, 0.02200000000000024, 0.15499999999999936, -0.06375000000000064, -0.5850000000000009, -0.09600000000000009, 0.05424999999999969, 0.08649999999999913, 0.16000000000000014, 0.11924999999999919, 0.0694999999999979, 0.04124999999999801, -0.6237499999999976, 0.027749999999999275, 0.06799999999999962, 0.1899999999999995, 0.20475000000000065, 0.26750000000000007, 0.30400000000000027, 0.21500000000000163, -0.2679999999999989, 0.09200000000000053, 0.14124999999999943], zp_timestamp='2025-11-03T22:05:00')
2025-11-04T00:07:48.748 [DEBUG] [Thread-125094] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:07:48.827 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:07:48.840 [DEBUG] [Thread-125097] [transport.py] [_log()] starting thread (client mode): 0xed5d3f0
2025-11-04T00:07:48.840 [DEBUG] [Thread-125097] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:07:48.860 [DEBUG] [Thread-125097] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:07:48.860 [INFO] [Thread-125097] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:07:48.872 [DEBUG] [Thread-125097] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:07:48.872 [DEBUG] [Thread-125097] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:07:48.873 [DEBUG] [Thread-125097] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:07:48.873 [DEBUG] [Thread-125097] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:07:48.873 [DEBUG] [Thread-125097] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:07:48.873 [DEBUG] [Thread-125097] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:07:48.873 [DEBUG] [Thread-125097] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:07:48.873 [DEBUG] [Thread-125097] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:07:48.873 [DEBUG] [Thread-125097] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:07:48.873 [DEBUG] [Thread-125097] [transport.py] [_log()] client lang: <none>
2025-11-04T00:07:48.873 [DEBUG] [Thread-125097] [transport.py] [_log()] server lang: <none>
2025-11-04T00:07:48.873 [DEBUG] [Thread-125097] [transport.py] [_log()] kex follows: False
2025-11-04T00:07:48.873 [DEBUG] [Thread-125097] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:07:48.873 [DEBUG] [Thread-125097] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:07:48.873 [DEBUG] [Thread-125097] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:07:48.873 [DEBUG] [Thread-125097] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:07:48.873 [DEBUG] [Thread-125097] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:07:48.873 [DEBUG] [Thread-125097] [transport.py] [_log()] Compression: none
2025-11-04T00:07:48.873 [DEBUG] [Thread-125097] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:07:48.926 [DEBUG] [Thread-125097] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:07:48.926 [DEBUG] [Thread-125097] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:07:48.926 [DEBUG] [Thread-125097] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:07:48.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:07:48.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:07:48.983 [DEBUG] [Thread-125097] [transport.py] [_log()] userauth is OK
2025-11-04T00:07:48.983 [DEBUG] [Thread-125097] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:07:48.983 [DEBUG] [Thread-125097] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:07:48.983 [DEBUG] [Thread-125097] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:07:48.984 [DEBUG] [Thread-125097] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:07:49.000 [INFO] [Thread-125097] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:07:49.002 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:07:49.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:07:49.880 [DEBUG] [Thread-125097] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:07:49.880 [DEBUG] [Thread-125097] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:07:49.929 [DEBUG] [Thread-125097] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:07:49.929 [DEBUG] [Thread-125097] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:07:49.939 [DEBUG] [Thread-125097] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:07:49.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:07:49.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:07:49.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:07:49.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:07:49.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:07:49.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:07:49.979 [DEBUG] [Thread-125097] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:07:57.075 [DEBUG] [Thread-125099 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:07:59.457 [DEBUG] [Thread-125100 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:08:14.521 [DEBUG] [Thread-125101 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:08:14.828 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:08:14.830 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:08:20.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:08:20.006 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:08:20.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:08:21.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 7, 44), 29.18, 12.58, 0.0, 14.49, 18.58, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:08:21.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:07:44
2025-11-04T00:08:22.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:08:22.667 [DEBUG] [Thread-125102] [transport.py] [_log()] starting thread (client mode): 0x117eba30
2025-11-04T00:08:22.676 [DEBUG] [Thread-125102] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:08:22.678 [DEBUG] [Thread-125102] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:08:22.679 [INFO] [Thread-125102] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:08:22.694 [DEBUG] [Thread-125102] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:08:22.695 [DEBUG] [Thread-125102] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:08:22.695 [DEBUG] [Thread-125102] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:08:22.695 [DEBUG] [Thread-125102] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:08:22.695 [DEBUG] [Thread-125102] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:08:22.695 [DEBUG] [Thread-125102] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:08:22.695 [DEBUG] [Thread-125102] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:08:22.695 [DEBUG] [Thread-125102] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:08:22.695 [DEBUG] [Thread-125102] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:08:22.695 [DEBUG] [Thread-125102] [transport.py] [_log()] client lang: <none>
2025-11-04T00:08:22.695 [DEBUG] [Thread-125102] [transport.py] [_log()] server lang: <none>
2025-11-04T00:08:22.695 [DEBUG] [Thread-125102] [transport.py] [_log()] kex follows: False
2025-11-04T00:08:22.695 [DEBUG] [Thread-125102] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:08:22.696 [DEBUG] [Thread-125102] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:08:22.696 [DEBUG] [Thread-125102] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:08:22.696 [DEBUG] [Thread-125102] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:08:22.697 [DEBUG] [Thread-125102] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:08:22.697 [DEBUG] [Thread-125102] [transport.py] [_log()] Compression: none
2025-11-04T00:08:22.697 [DEBUG] [Thread-125102] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:08:22.772 [DEBUG] [Thread-125102] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:08:22.791 [DEBUG] [Thread-125102] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:08:22.795 [DEBUG] [Thread-125102] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:08:22.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:08:22.800 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:08:22.804 [DEBUG] [Thread-125102] [transport.py] [_log()] userauth is OK
2025-11-04T00:08:22.804 [DEBUG] [Thread-125102] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:08:22.804 [DEBUG] [Thread-125102] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:08:22.804 [DEBUG] [Thread-125102] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:08:22.804 [DEBUG] [Thread-125102] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:08:22.834 [INFO] [Thread-125102] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:08:22.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:08:23.454 [DEBUG] [Thread-125102] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:08:23.454 [DEBUG] [Thread-125102] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:08:23.457 [DEBUG] [Thread-125102] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:08:23.495 [DEBUG] [Thread-125102] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:08:23.495 [DEBUG] [Thread-125102] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:08:23.499 [DEBUG] [Thread-125102] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:08:23.514 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:08:23.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:08:23.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:08:23.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:08:23.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:08:23.534 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:08:23.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:08:23.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:08:23.545 [DEBUG] [Thread-125102] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:08:23.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:08:23.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.921974 -999.00  +19.10  17.37     17   -6.00 1 1 1 1 1     0    0 25.04 0.65 ZNESW 16.4 17.4 297.2 20.1 18.9 -25.1 18.9 -23.9 18.7 -23.5 18.9 -24.9
2025-11-04T00:08:23.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:08:23.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:08:23.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.921974
2025-11-04T00:08:23.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:08:23.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:08:23.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:08:23.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:08:23.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:08:23.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:07:44', tmtdew=29.18, humidity=12.58, cloud=0.0, wind=14.49, temperature=18.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:07:38.554', atlas_cloud=1, atlas_rain=1, zp_data=[0.004749999999999588, -0.10975000000000001, 0.12124999999999986, 0.04699999999999882, 0.06500000000000128, 0.03225000000000122, -0.19899999999999984, 0.024250000000000327, 0.07649999999999935, 0.10699999999999932, 0.13874999999999993, 0.02200000000000024, 0.15499999999999936, -0.06375000000000064, -0.5850000000000009, -0.09600000000000009, 0.05424999999999969, 0.08649999999999913, 0.16000000000000014, 0.11924999999999919, 0.0694999999999979, 0.04124999999999801, -0.6237499999999976, 0.027749999999999275, 0.06799999999999962, 0.1899999999999995, 0.20475000000000065, 0.26750000000000007, 0.30400000000000027, 0.21500000000000163, -0.2679999999999989, 0.09200000000000053, 0.14124999999999943], zp_timestamp='2025-11-03T22:05:00')
2025-11-04T00:08:23.767 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:08:23.779 [DEBUG] [Thread-125105] [transport.py] [_log()] starting thread (client mode): 0xed05c60
2025-11-04T00:08:23.779 [DEBUG] [Thread-125105] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:08:23.795 [DEBUG] [Thread-125105] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:08:23.795 [INFO] [Thread-125105] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:08:23.804 [DEBUG] [Thread-125105] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:08:23.804 [DEBUG] [Thread-125105] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:08:23.804 [DEBUG] [Thread-125105] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:08:23.804 [DEBUG] [Thread-125105] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:08:23.804 [DEBUG] [Thread-125105] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:08:23.804 [DEBUG] [Thread-125105] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:08:23.804 [DEBUG] [Thread-125105] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:08:23.804 [DEBUG] [Thread-125105] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:08:23.804 [DEBUG] [Thread-125105] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:08:23.804 [DEBUG] [Thread-125105] [transport.py] [_log()] client lang: <none>
2025-11-04T00:08:23.804 [DEBUG] [Thread-125105] [transport.py] [_log()] server lang: <none>
2025-11-04T00:08:23.804 [DEBUG] [Thread-125105] [transport.py] [_log()] kex follows: False
2025-11-04T00:08:23.804 [DEBUG] [Thread-125105] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:08:23.804 [DEBUG] [Thread-125105] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:08:23.804 [DEBUG] [Thread-125105] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:08:23.804 [DEBUG] [Thread-125105] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:08:23.804 [DEBUG] [Thread-125105] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:08:23.804 [DEBUG] [Thread-125105] [transport.py] [_log()] Compression: none
2025-11-04T00:08:23.804 [DEBUG] [Thread-125105] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:08:23.862 [DEBUG] [Thread-125105] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:08:23.862 [DEBUG] [Thread-125105] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:08:23.862 [DEBUG] [Thread-125105] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:08:23.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:08:23.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:08:23.919 [DEBUG] [Thread-125105] [transport.py] [_log()] userauth is OK
2025-11-04T00:08:23.919 [DEBUG] [Thread-125105] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:08:23.919 [DEBUG] [Thread-125105] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:08:23.919 [DEBUG] [Thread-125105] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:08:23.919 [DEBUG] [Thread-125105] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:08:23.938 [INFO] [Thread-125105] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:08:23.942 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:08:23.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:08:24.797 [DEBUG] [Thread-125105] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:08:24.797 [DEBUG] [Thread-125105] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:08:24.845 [DEBUG] [Thread-125105] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:08:24.845 [DEBUG] [Thread-125105] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:08:24.856 [DEBUG] [Thread-125105] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:08:24.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:08:24.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:08:24.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:08:24.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:08:24.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:08:24.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:08:24.901 [DEBUG] [Thread-125105] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:08:29.576 [DEBUG] [Thread-125107 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:08:44.746 [DEBUG] [Thread-125108 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:08:54.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:08:54.932 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:08:54.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:08:55.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 8, 19), 29.18, 12.58, 0.0, 14.33, 18.6, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:08:55.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:08:19
2025-11-04T00:08:55.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:08:56.080 [DEBUG] [Thread-125109] [transport.py] [_log()] starting thread (client mode): 0xed04be0
2025-11-04T00:08:56.080 [DEBUG] [Thread-125109] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:08:56.100 [DEBUG] [Thread-125109] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:08:56.100 [INFO] [Thread-125109] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:08:56.103 [DEBUG] [Thread-125109] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:08:56.103 [DEBUG] [Thread-125109] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:08:56.104 [DEBUG] [Thread-125109] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:08:56.104 [DEBUG] [Thread-125109] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:08:56.104 [DEBUG] [Thread-125109] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:08:56.104 [DEBUG] [Thread-125109] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:08:56.104 [DEBUG] [Thread-125109] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:08:56.104 [DEBUG] [Thread-125109] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:08:56.104 [DEBUG] [Thread-125109] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:08:56.104 [DEBUG] [Thread-125109] [transport.py] [_log()] client lang: <none>
2025-11-04T00:08:56.104 [DEBUG] [Thread-125109] [transport.py] [_log()] server lang: <none>
2025-11-04T00:08:56.104 [DEBUG] [Thread-125109] [transport.py] [_log()] kex follows: False
2025-11-04T00:08:56.105 [DEBUG] [Thread-125109] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:08:56.105 [DEBUG] [Thread-125109] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:08:56.105 [DEBUG] [Thread-125109] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:08:56.105 [DEBUG] [Thread-125109] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:08:56.105 [DEBUG] [Thread-125109] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:08:56.105 [DEBUG] [Thread-125109] [transport.py] [_log()] Compression: none
2025-11-04T00:08:56.105 [DEBUG] [Thread-125109] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:08:56.126 [DEBUG] [Thread-125109] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:08:56.126 [DEBUG] [Thread-125109] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:08:56.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:08:56.127 [DEBUG] [Thread-125109] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:08:56.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:08:56.130 [DEBUG] [Thread-125109] [transport.py] [_log()] userauth is OK
2025-11-04T00:08:56.130 [DEBUG] [Thread-125109] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:08:56.130 [DEBUG] [Thread-125109] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:08:56.130 [DEBUG] [Thread-125109] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:08:56.130 [DEBUG] [Thread-125109] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:08:56.155 [INFO] [Thread-125109] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:08:56.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:08:56.824 [DEBUG] [Thread-125109] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:08:56.825 [DEBUG] [Thread-125109] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:08:56.825 [DEBUG] [Thread-125109] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:08:56.865 [DEBUG] [Thread-125109] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:08:56.865 [DEBUG] [Thread-125109] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:08:56.868 [DEBUG] [Thread-125109] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:08:56.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:08:56.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:08:56.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:08:56.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:08:56.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:08:56.885 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:08:56.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:08:56.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:08:56.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:08:56.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.922321 -999.00  +19.10  16.35     17   -6.00 1 1 1 1 1     0    0 25.21 0.62 ZNESW 17.1 16.4 298.8 19.4 18.9 -24.9 18.9 -24.1 18.7 -23.6 18.9 -24.7
2025-11-04T00:08:56.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:08:56.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:08:56.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.922321
2025-11-04T00:08:56.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:08:56.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:08:56.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:08:56.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:08:56.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:08:56.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:08:19', tmtdew=29.18, humidity=12.58, cloud=0.0, wind=14.33, temperature=18.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:08:08.534', atlas_cloud=1, atlas_rain=1, zp_data=[0.004749999999999588, -0.10975000000000001, 0.12124999999999986, 0.04699999999999882, 0.06500000000000128, 0.03225000000000122, -0.19899999999999984, 0.024250000000000327, 0.07649999999999935, 0.10699999999999932, 0.13874999999999993, 0.02200000000000024, 0.15499999999999936, -0.06375000000000064, -0.5850000000000009, -0.09600000000000009, 0.05424999999999969, 0.08649999999999913, 0.16000000000000014, 0.11924999999999919, 0.0694999999999979, 0.04124999999999801, -0.6237499999999976, 0.027749999999999275, 0.06799999999999962, 0.1899999999999995, 0.20475000000000065, 0.26750000000000007, 0.30400000000000027, 0.21500000000000163, -0.2679999999999989, 0.09200000000000053, 0.14124999999999943], zp_timestamp='2025-11-03T22:05:00')
2025-11-04T00:08:56.887 [DEBUG] [Thread-125109] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:08:56.965 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:08:56.977 [DEBUG] [Thread-125112] [transport.py] [_log()] starting thread (client mode): 0xed07310
2025-11-04T00:08:56.977 [DEBUG] [Thread-125112] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:08:56.993 [DEBUG] [Thread-125112] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:08:56.993 [INFO] [Thread-125112] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:08:57.001 [DEBUG] [Thread-125112] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:08:57.001 [DEBUG] [Thread-125112] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:08:57.001 [DEBUG] [Thread-125112] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:08:57.001 [DEBUG] [Thread-125112] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:08:57.001 [DEBUG] [Thread-125112] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:08:57.001 [DEBUG] [Thread-125112] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:08:57.001 [DEBUG] [Thread-125112] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:08:57.001 [DEBUG] [Thread-125112] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:08:57.001 [DEBUG] [Thread-125112] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:08:57.001 [DEBUG] [Thread-125112] [transport.py] [_log()] client lang: <none>
2025-11-04T00:08:57.001 [DEBUG] [Thread-125112] [transport.py] [_log()] server lang: <none>
2025-11-04T00:08:57.001 [DEBUG] [Thread-125112] [transport.py] [_log()] kex follows: False
2025-11-04T00:08:57.001 [DEBUG] [Thread-125112] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:08:57.001 [DEBUG] [Thread-125112] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:08:57.001 [DEBUG] [Thread-125112] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:08:57.001 [DEBUG] [Thread-125112] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:08:57.001 [DEBUG] [Thread-125112] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:08:57.001 [DEBUG] [Thread-125112] [transport.py] [_log()] Compression: none
2025-11-04T00:08:57.001 [DEBUG] [Thread-125112] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:08:57.058 [DEBUG] [Thread-125112] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:08:57.058 [DEBUG] [Thread-125112] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:08:57.058 [DEBUG] [Thread-125112] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:08:57.058 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:08:57.058 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:08:57.115 [DEBUG] [Thread-125112] [transport.py] [_log()] userauth is OK
2025-11-04T00:08:57.115 [DEBUG] [Thread-125112] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:08:57.115 [DEBUG] [Thread-125112] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:08:57.115 [DEBUG] [Thread-125112] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:08:57.115 [DEBUG] [Thread-125112] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:08:57.129 [INFO] [Thread-125112] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:08:57.129 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:08:57.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:08:57.370 [DEBUG] [Thread-125114 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:08:58.033 [DEBUG] [Thread-125112] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:08:58.033 [DEBUG] [Thread-125112] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:08:58.081 [DEBUG] [Thread-125112] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:08:58.081 [DEBUG] [Thread-125112] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:08:58.090 [DEBUG] [Thread-125112] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:08:58.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:08:58.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:08:58.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:08:58.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:08:58.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:08:58.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:08:58.122 [DEBUG] [Thread-125112] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:08:59.782 [DEBUG] [Thread-125115 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:09:14.837 [DEBUG] [Thread-125116 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:09:15.031 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:09:15.032 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:09:28.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:09:28.144 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:09:28.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:09:28.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 8, 56), 29.19, 12.56, 0.0, 14.47, 18.55, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:09:28.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:08:56
2025-11-04T00:09:28.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:09:29.155 [DEBUG] [Thread-125117] [transport.py] [_log()] starting thread (client mode): 0xed1b370
2025-11-04T00:09:29.156 [DEBUG] [Thread-125117] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:09:29.174 [DEBUG] [Thread-125117] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:09:29.174 [INFO] [Thread-125117] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:09:29.179 [DEBUG] [Thread-125117] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:09:29.179 [DEBUG] [Thread-125117] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:09:29.180 [DEBUG] [Thread-125117] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:09:29.180 [DEBUG] [Thread-125117] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:09:29.180 [DEBUG] [Thread-125117] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:09:29.180 [DEBUG] [Thread-125117] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:09:29.180 [DEBUG] [Thread-125117] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:09:29.180 [DEBUG] [Thread-125117] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:09:29.180 [DEBUG] [Thread-125117] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:09:29.180 [DEBUG] [Thread-125117] [transport.py] [_log()] client lang: <none>
2025-11-04T00:09:29.180 [DEBUG] [Thread-125117] [transport.py] [_log()] server lang: <none>
2025-11-04T00:09:29.180 [DEBUG] [Thread-125117] [transport.py] [_log()] kex follows: False
2025-11-04T00:09:29.180 [DEBUG] [Thread-125117] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:09:29.180 [DEBUG] [Thread-125117] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:09:29.181 [DEBUG] [Thread-125117] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:09:29.181 [DEBUG] [Thread-125117] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:09:29.181 [DEBUG] [Thread-125117] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:09:29.181 [DEBUG] [Thread-125117] [transport.py] [_log()] Compression: none
2025-11-04T00:09:29.181 [DEBUG] [Thread-125117] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:09:29.216 [DEBUG] [Thread-125117] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:09:29.220 [DEBUG] [Thread-125117] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:09:29.221 [DEBUG] [Thread-125117] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:09:29.222 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:09:29.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:09:29.225 [DEBUG] [Thread-125117] [transport.py] [_log()] userauth is OK
2025-11-04T00:09:29.225 [DEBUG] [Thread-125117] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:09:29.225 [DEBUG] [Thread-125117] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:09:29.225 [DEBUG] [Thread-125117] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:09:29.225 [DEBUG] [Thread-125117] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:09:29.259 [INFO] [Thread-125117] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:09:29.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:09:29.871 [DEBUG] [Thread-125119 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:09:29.905 [DEBUG] [Thread-125117] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:09:29.905 [DEBUG] [Thread-125117] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:09:29.906 [DEBUG] [Thread-125117] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:09:29.947 [DEBUG] [Thread-125117] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:09:29.947 [DEBUG] [Thread-125117] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:09:29.950 [DEBUG] [Thread-125117] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:09:29.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:09:29.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:09:29.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:09:29.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:09:29.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:09:29.971 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:09:29.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:09:29.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:09:29.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:09:29.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.922668 -999.00  +19.10  16.86     17   -6.00 1 1 1 1 1     0    0 24.78 0.84 ZNESW 19.5 16.9 300.2 22.2 18.9 -25.1 18.9 -23.9 18.6 -23.7 18.9 -24.5
2025-11-04T00:09:29.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:09:29.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:09:29.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.922668
2025-11-04T00:09:29.978 [DEBUG] [Thread-125117] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:09:29.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:09:29.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:09:29.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:09:29.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:09:29.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:09:29.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:08:56', tmtdew=29.19, humidity=12.56, cloud=0.0, wind=14.47, temperature=18.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:08:38.515', atlas_cloud=1, atlas_rain=1, zp_data=[0.004749999999999588, -0.10975000000000001, 0.12124999999999986, 0.04699999999999882, 0.06500000000000128, 0.03225000000000122, -0.19899999999999984, 0.024250000000000327, 0.07649999999999935, 0.10699999999999932, 0.13874999999999993, 0.02200000000000024, 0.15499999999999936, -0.06375000000000064, -0.5850000000000009, -0.09600000000000009, 0.05424999999999969, 0.08649999999999913, 0.16000000000000014, 0.11924999999999919, 0.0694999999999979, 0.04124999999999801, -0.6237499999999976, 0.027749999999999275, 0.06799999999999962, 0.1899999999999995, 0.20475000000000065, 0.26750000000000007, 0.30400000000000027, 0.21500000000000163, -0.2679999999999989, 0.09200000000000053, 0.14124999999999943], zp_timestamp='2025-11-03T22:05:00')
2025-11-04T00:09:30.072 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:09:30.083 [DEBUG] [Thread-125121] [transport.py] [_log()] starting thread (client mode): 0x117ebc70
2025-11-04T00:09:30.084 [DEBUG] [Thread-125121] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:09:30.102 [DEBUG] [Thread-125121] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:09:30.102 [INFO] [Thread-125121] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:09:30.112 [DEBUG] [Thread-125121] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:09:30.112 [DEBUG] [Thread-125121] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:09:30.112 [DEBUG] [Thread-125121] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:09:30.112 [DEBUG] [Thread-125121] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:09:30.112 [DEBUG] [Thread-125121] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:09:30.112 [DEBUG] [Thread-125121] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:09:30.112 [DEBUG] [Thread-125121] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:09:30.112 [DEBUG] [Thread-125121] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:09:30.112 [DEBUG] [Thread-125121] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:09:30.112 [DEBUG] [Thread-125121] [transport.py] [_log()] client lang: <none>
2025-11-04T00:09:30.112 [DEBUG] [Thread-125121] [transport.py] [_log()] server lang: <none>
2025-11-04T00:09:30.112 [DEBUG] [Thread-125121] [transport.py] [_log()] kex follows: False
2025-11-04T00:09:30.112 [DEBUG] [Thread-125121] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:09:30.112 [DEBUG] [Thread-125121] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:09:30.112 [DEBUG] [Thread-125121] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:09:30.112 [DEBUG] [Thread-125121] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:09:30.112 [DEBUG] [Thread-125121] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:09:30.112 [DEBUG] [Thread-125121] [transport.py] [_log()] Compression: none
2025-11-04T00:09:30.113 [DEBUG] [Thread-125121] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:09:30.166 [DEBUG] [Thread-125121] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:09:30.167 [DEBUG] [Thread-125121] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:09:30.167 [DEBUG] [Thread-125121] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:09:30.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:09:30.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:09:30.224 [DEBUG] [Thread-125121] [transport.py] [_log()] userauth is OK
2025-11-04T00:09:30.224 [DEBUG] [Thread-125121] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:09:30.224 [DEBUG] [Thread-125121] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:09:30.224 [DEBUG] [Thread-125121] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:09:30.224 [DEBUG] [Thread-125121] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:09:30.238 [INFO] [Thread-125121] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:09:30.238 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:09:30.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:09:31.100 [DEBUG] [Thread-125121] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:09:31.100 [DEBUG] [Thread-125121] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:09:31.154 [DEBUG] [Thread-125121] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:09:31.154 [DEBUG] [Thread-125121] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:09:31.165 [DEBUG] [Thread-125121] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:09:31.177 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:09:31.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:09:31.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:09:31.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:09:31.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:09:31.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:09:31.209 [DEBUG] [Thread-125121] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:09:44.928 [DEBUG] [Thread-125123 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:09:58.947 [DEBUG] [Thread-125124 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:10:00.043 [DEBUG] [Thread-125125 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:10:01.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:10:01.213 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:10:01.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:10:03.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 9, 28), 29.14, 12.61, 0.0, 14.43, 18.55, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:10:03.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:09:28
2025-11-04T00:10:03.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:10:03.671 [DEBUG] [Thread-125126] [transport.py] [_log()] starting thread (client mode): 0xed04160
2025-11-04T00:10:03.671 [DEBUG] [Thread-125126] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:10:03.691 [DEBUG] [Thread-125126] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:10:03.691 [INFO] [Thread-125126] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:10:03.695 [DEBUG] [Thread-125126] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:10:03.695 [DEBUG] [Thread-125126] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:10:03.695 [DEBUG] [Thread-125126] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:10:03.695 [DEBUG] [Thread-125126] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:10:03.695 [DEBUG] [Thread-125126] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:10:03.695 [DEBUG] [Thread-125126] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:10:03.695 [DEBUG] [Thread-125126] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:10:03.695 [DEBUG] [Thread-125126] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:10:03.695 [DEBUG] [Thread-125126] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:10:03.695 [DEBUG] [Thread-125126] [transport.py] [_log()] client lang: <none>
2025-11-04T00:10:03.695 [DEBUG] [Thread-125126] [transport.py] [_log()] server lang: <none>
2025-11-04T00:10:03.695 [DEBUG] [Thread-125126] [transport.py] [_log()] kex follows: False
2025-11-04T00:10:03.695 [DEBUG] [Thread-125126] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:10:03.695 [DEBUG] [Thread-125126] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:10:03.695 [DEBUG] [Thread-125126] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:10:03.696 [DEBUG] [Thread-125126] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:10:03.696 [DEBUG] [Thread-125126] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:10:03.696 [DEBUG] [Thread-125126] [transport.py] [_log()] Compression: none
2025-11-04T00:10:03.696 [DEBUG] [Thread-125126] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:10:03.711 [DEBUG] [Thread-125126] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:10:03.712 [DEBUG] [Thread-125126] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:10:03.712 [DEBUG] [Thread-125126] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:10:03.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:10:03.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:10:03.756 [DEBUG] [Thread-125126] [transport.py] [_log()] userauth is OK
2025-11-04T00:10:03.756 [DEBUG] [Thread-125126] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:10:03.756 [DEBUG] [Thread-125126] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:10:03.756 [DEBUG] [Thread-125126] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:10:03.756 [DEBUG] [Thread-125126] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:10:03.771 [INFO] [Thread-125126] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:10:03.772 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:10:15.072 [DEBUG] [Thread-125128 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:10:15.235 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:10:15.237 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:10:30.103 [DEBUG] [Thread-125129 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:10:45.130 [DEBUG] [Thread-125130 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:10:45.552 [DEBUG] [Thread-125126] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:10:45.552 [DEBUG] [Thread-125126] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:10:45.552 [DEBUG] [Thread-125126] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:10:45.593 [DEBUG] [Thread-125126] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:10:45.593 [DEBUG] [Thread-125126] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:10:45.596 [DEBUG] [Thread-125126] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:10:45.607 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:10:45.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:10:45.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:10:45.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:10:47.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:10:47.249 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:10:47.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:10:47.249 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:10:47.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:10:47.254 [DEBUG] [Thread-125126] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:10:47.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.923015 -999.00  +19.10  17.51     17   -6.00 1 1 1 1 1     0    0 25.52 0.92 ZNESW 19.4 17.5 301.0 21.7 18.9 -25.0 18.9 -24.1 18.6 -23.8 18.9 -24.7
2025-11-04T00:10:47.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:10:47.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:10:47.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.923015
2025-11-04T00:10:47.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:10:47.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:10:47.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:10:47.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:10:47.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:10:47.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:09:28', tmtdew=29.14, humidity=12.61, cloud=0.0, wind=14.43, temperature=18.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:09:08.496', atlas_cloud=1, atlas_rain=1, zp_data=[0.004749999999999588, -0.10975000000000001, 0.12124999999999986, 0.04699999999999882, 0.06500000000000128, 0.03225000000000122, -0.19899999999999984, 0.024250000000000327, 0.07649999999999935, 0.10699999999999932, 0.13874999999999993, 0.02200000000000024, 0.15499999999999936, -0.06375000000000064, -0.5850000000000009, -0.09600000000000009, 0.05424999999999969, 0.08649999999999913, 0.16000000000000014, 0.11924999999999919, 0.0694999999999979, 0.04124999999999801, -0.6237499999999976, 0.027749999999999275, 0.06799999999999962, 0.1899999999999995, 0.20475000000000065, 0.26750000000000007, 0.30400000000000027, 0.21500000000000163, -0.2679999999999989, 0.09200000000000053, 0.14124999999999943], zp_timestamp='2025-11-03T22:08:00')
2025-11-04T00:10:47.376 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:10:47.393 [DEBUG] [Thread-125132] [transport.py] [_log()] starting thread (client mode): 0xed43e80
2025-11-04T00:10:47.393 [DEBUG] [Thread-125132] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:10:47.406 [DEBUG] [Thread-125132] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:10:47.406 [INFO] [Thread-125132] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:10:47.415 [DEBUG] [Thread-125132] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:10:47.415 [DEBUG] [Thread-125132] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:10:47.415 [DEBUG] [Thread-125132] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:10:47.415 [DEBUG] [Thread-125132] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:10:47.415 [DEBUG] [Thread-125132] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:10:47.415 [DEBUG] [Thread-125132] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:10:47.415 [DEBUG] [Thread-125132] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:10:47.415 [DEBUG] [Thread-125132] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:10:47.415 [DEBUG] [Thread-125132] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:10:47.415 [DEBUG] [Thread-125132] [transport.py] [_log()] client lang: <none>
2025-11-04T00:10:47.415 [DEBUG] [Thread-125132] [transport.py] [_log()] server lang: <none>
2025-11-04T00:10:47.415 [DEBUG] [Thread-125132] [transport.py] [_log()] kex follows: False
2025-11-04T00:10:47.415 [DEBUG] [Thread-125132] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:10:47.416 [DEBUG] [Thread-125132] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:10:47.416 [DEBUG] [Thread-125132] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:10:47.416 [DEBUG] [Thread-125132] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:10:47.416 [DEBUG] [Thread-125132] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:10:47.416 [DEBUG] [Thread-125132] [transport.py] [_log()] Compression: none
2025-11-04T00:10:47.416 [DEBUG] [Thread-125132] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:10:47.478 [DEBUG] [Thread-125132] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:10:47.482 [DEBUG] [Thread-125132] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:10:47.482 [DEBUG] [Thread-125132] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:10:47.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:10:47.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:10:47.542 [DEBUG] [Thread-125132] [transport.py] [_log()] userauth is OK
2025-11-04T00:10:47.542 [DEBUG] [Thread-125132] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:10:47.543 [DEBUG] [Thread-125132] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:10:47.543 [DEBUG] [Thread-125132] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:10:47.543 [DEBUG] [Thread-125132] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:10:47.562 [INFO] [Thread-125132] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:10:47.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:10:47.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:10:48.425 [DEBUG] [Thread-125132] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:10:48.425 [DEBUG] [Thread-125132] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:10:48.473 [DEBUG] [Thread-125132] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:10:48.473 [DEBUG] [Thread-125132] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:10:48.481 [DEBUG] [Thread-125132] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:10:48.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:10:48.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:10:48.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:10:48.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:10:48.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:10:48.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:10:48.515 [DEBUG] [Thread-125132] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:10:59.286 [DEBUG] [Thread-125134 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:11:00.156 [DEBUG] [Thread-125135 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:11:15.269 [DEBUG] [Thread-125136 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:11:15.438 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:11:15.439 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:11:18.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:11:18.540 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:11:18.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:11:19.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 11, 7), 29.03, 12.61, 0.0, 16.25, 18.4, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:11:19.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:11:07
2025-11-04T00:11:19.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:11:19.721 [DEBUG] [Thread-125137] [transport.py] [_log()] starting thread (client mode): 0x11761b70
2025-11-04T00:11:19.722 [DEBUG] [Thread-125137] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:11:19.736 [DEBUG] [Thread-125137] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:11:19.736 [INFO] [Thread-125137] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:11:19.741 [DEBUG] [Thread-125137] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:11:19.741 [DEBUG] [Thread-125137] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:11:19.741 [DEBUG] [Thread-125137] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:11:19.741 [DEBUG] [Thread-125137] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:11:19.741 [DEBUG] [Thread-125137] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:11:19.741 [DEBUG] [Thread-125137] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:11:19.741 [DEBUG] [Thread-125137] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:11:19.741 [DEBUG] [Thread-125137] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:11:19.741 [DEBUG] [Thread-125137] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:11:19.741 [DEBUG] [Thread-125137] [transport.py] [_log()] client lang: <none>
2025-11-04T00:11:19.742 [DEBUG] [Thread-125137] [transport.py] [_log()] server lang: <none>
2025-11-04T00:11:19.742 [DEBUG] [Thread-125137] [transport.py] [_log()] kex follows: False
2025-11-04T00:11:19.742 [DEBUG] [Thread-125137] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:11:19.743 [DEBUG] [Thread-125137] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:11:19.743 [DEBUG] [Thread-125137] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:11:19.743 [DEBUG] [Thread-125137] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:11:19.743 [DEBUG] [Thread-125137] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:11:19.743 [DEBUG] [Thread-125137] [transport.py] [_log()] Compression: none
2025-11-04T00:11:19.744 [DEBUG] [Thread-125137] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:11:19.774 [DEBUG] [Thread-125137] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:11:19.777 [DEBUG] [Thread-125137] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:11:19.780 [DEBUG] [Thread-125137] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:11:19.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:11:19.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:11:19.786 [DEBUG] [Thread-125137] [transport.py] [_log()] userauth is OK
2025-11-04T00:11:19.786 [DEBUG] [Thread-125137] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:11:19.786 [DEBUG] [Thread-125137] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:11:19.786 [DEBUG] [Thread-125137] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:11:19.786 [DEBUG] [Thread-125137] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:11:19.824 [INFO] [Thread-125137] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:11:19.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:11:20.485 [DEBUG] [Thread-125137] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:11:20.486 [DEBUG] [Thread-125137] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:11:20.490 [DEBUG] [Thread-125137] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:11:20.527 [DEBUG] [Thread-125137] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:11:20.527 [DEBUG] [Thread-125137] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:11:20.531 [DEBUG] [Thread-125137] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:11:20.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:11:20.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:11:20.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:11:20.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:11:20.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:11:20.567 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:11:20.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:11:20.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:11:20.576 [DEBUG] [Thread-125137] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:11:20.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:11:20.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.923710 -999.00  +19.00  17.08     17   -6.00 1 1 1 1 1     0    0 24.80 1.50 ZNESW 16.7 17.1 302.2 20.3 18.9 -25.0 18.9 -24.1 18.6 -23.8 18.9 -24.7
2025-11-04T00:11:20.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:11:20.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:11:20.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.923710
2025-11-04T00:11:20.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:11:20.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:11:20.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:11:20.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:11:20.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:11:20.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:11:07', tmtdew=29.03, humidity=12.61, cloud=0.0, wind=16.25, temperature=18.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:10:08.544', atlas_cloud=1, atlas_rain=1, zp_data=[0.004749999999999588, -0.10975000000000001, 0.12124999999999986, 0.04699999999999882, 0.06500000000000128, 0.03225000000000122, -0.19899999999999984, 0.024250000000000327, 0.07649999999999935, 0.10699999999999932, 0.13874999999999993, 0.02200000000000024, 0.15499999999999936, -0.06375000000000064, -0.5850000000000009, -0.09600000000000009, 0.05424999999999969, 0.08649999999999913, 0.16000000000000014, 0.11924999999999919, 0.0694999999999979, 0.04124999999999801, -0.6237499999999976, 0.027749999999999275, 0.06799999999999962, 0.1899999999999995, 0.20475000000000065, 0.26750000000000007, 0.30400000000000027, 0.21500000000000163, -0.2679999999999989, 0.09200000000000053, 0.14124999999999943], zp_timestamp='2025-11-03T22:08:00')
2025-11-04T00:11:20.681 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:11:20.694 [DEBUG] [Thread-125140] [transport.py] [_log()] starting thread (client mode): 0xed06d70
2025-11-04T00:11:20.694 [DEBUG] [Thread-125140] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:11:20.709 [DEBUG] [Thread-125140] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:11:20.709 [INFO] [Thread-125140] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:11:20.717 [DEBUG] [Thread-125140] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:11:20.717 [DEBUG] [Thread-125140] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:11:20.717 [DEBUG] [Thread-125140] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:11:20.717 [DEBUG] [Thread-125140] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:11:20.717 [DEBUG] [Thread-125140] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:11:20.717 [DEBUG] [Thread-125140] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:11:20.717 [DEBUG] [Thread-125140] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:11:20.717 [DEBUG] [Thread-125140] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:11:20.717 [DEBUG] [Thread-125140] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:11:20.717 [DEBUG] [Thread-125140] [transport.py] [_log()] client lang: <none>
2025-11-04T00:11:20.717 [DEBUG] [Thread-125140] [transport.py] [_log()] server lang: <none>
2025-11-04T00:11:20.717 [DEBUG] [Thread-125140] [transport.py] [_log()] kex follows: False
2025-11-04T00:11:20.717 [DEBUG] [Thread-125140] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:11:20.717 [DEBUG] [Thread-125140] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:11:20.717 [DEBUG] [Thread-125140] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:11:20.717 [DEBUG] [Thread-125140] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:11:20.717 [DEBUG] [Thread-125140] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:11:20.717 [DEBUG] [Thread-125140] [transport.py] [_log()] Compression: none
2025-11-04T00:11:20.717 [DEBUG] [Thread-125140] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:11:20.774 [DEBUG] [Thread-125140] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:11:20.775 [DEBUG] [Thread-125140] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:11:20.775 [DEBUG] [Thread-125140] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:11:20.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:11:20.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:11:20.837 [DEBUG] [Thread-125140] [transport.py] [_log()] userauth is OK
2025-11-04T00:11:20.838 [DEBUG] [Thread-125140] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:11:20.838 [DEBUG] [Thread-125140] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:11:20.838 [DEBUG] [Thread-125140] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:11:20.838 [DEBUG] [Thread-125140] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:11:20.859 [INFO] [Thread-125140] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:11:20.860 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:11:20.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:11:21.723 [DEBUG] [Thread-125140] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:11:21.724 [DEBUG] [Thread-125140] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:11:21.772 [DEBUG] [Thread-125140] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:11:21.772 [DEBUG] [Thread-125140] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:11:21.782 [DEBUG] [Thread-125140] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:11:21.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:11:21.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:11:21.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:11:21.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:11:21.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:11:21.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:11:21.827 [DEBUG] [Thread-125140] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:11:30.295 [DEBUG] [Thread-125142 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:11:45.335 [DEBUG] [Thread-125143 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:11:51.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:11:51.847 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:11:51.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:11:52.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 11, 43), 29.08, 12.63, 0.0, 16.07, 18.52, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:11:52.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:11:43
2025-11-04T00:11:52.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:11:52.914 [DEBUG] [Thread-125144] [transport.py] [_log()] starting thread (client mode): 0x11760580
2025-11-04T00:11:52.914 [DEBUG] [Thread-125144] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:11:52.922 [DEBUG] [Thread-125144] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:11:52.922 [INFO] [Thread-125144] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:11:52.925 [DEBUG] [Thread-125144] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:11:52.925 [DEBUG] [Thread-125144] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:11:52.925 [DEBUG] [Thread-125144] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:11:52.925 [DEBUG] [Thread-125144] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:11:52.925 [DEBUG] [Thread-125144] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:11:52.926 [DEBUG] [Thread-125144] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:11:52.926 [DEBUG] [Thread-125144] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:11:52.926 [DEBUG] [Thread-125144] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:11:52.926 [DEBUG] [Thread-125144] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:11:52.926 [DEBUG] [Thread-125144] [transport.py] [_log()] client lang: <none>
2025-11-04T00:11:52.926 [DEBUG] [Thread-125144] [transport.py] [_log()] server lang: <none>
2025-11-04T00:11:52.926 [DEBUG] [Thread-125144] [transport.py] [_log()] kex follows: False
2025-11-04T00:11:52.926 [DEBUG] [Thread-125144] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:11:52.926 [DEBUG] [Thread-125144] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:11:52.926 [DEBUG] [Thread-125144] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:11:52.926 [DEBUG] [Thread-125144] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:11:52.927 [DEBUG] [Thread-125144] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:11:52.927 [DEBUG] [Thread-125144] [transport.py] [_log()] Compression: none
2025-11-04T00:11:52.927 [DEBUG] [Thread-125144] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:11:52.954 [DEBUG] [Thread-125144] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:11:52.956 [DEBUG] [Thread-125144] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:11:52.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:11:52.957 [DEBUG] [Thread-125144] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:11:52.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:11:52.997 [DEBUG] [Thread-125144] [transport.py] [_log()] userauth is OK
2025-11-04T00:11:52.998 [DEBUG] [Thread-125144] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:11:52.998 [DEBUG] [Thread-125144] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:11:52.998 [DEBUG] [Thread-125144] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:11:52.998 [DEBUG] [Thread-125144] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:11:53.025 [INFO] [Thread-125144] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:11:53.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:11:53.818 [DEBUG] [Thread-125144] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:11:53.819 [DEBUG] [Thread-125144] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:11:53.828 [DEBUG] [Thread-125144] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:11:53.859 [DEBUG] [Thread-125144] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:11:53.859 [DEBUG] [Thread-125144] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:11:53.863 [DEBUG] [Thread-125144] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:11:53.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:11:53.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:11:53.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:11:53.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:11:53.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:11:53.886 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:11:53.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:11:53.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:11:53.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:11:53.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.924404 -999.00  +19.10  17.53     17   -6.00 1 1 1 1 1     0    0 25.26 1.99 ZNESW 19.0 17.5 300.4 21.8 18.9 -25.0 18.8 -24.0 18.6 -23.8 18.9 -24.8
2025-11-04T00:11:53.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:11:53.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:11:53.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.924404
2025-11-04T00:11:53.893 [DEBUG] [Thread-125144] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:11:53.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:11:53.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:11:53.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:11:53.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:11:53.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:11:53.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:11:43', tmtdew=29.08, humidity=12.63, cloud=0.0, wind=16.07, temperature=18.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:11:08.506', atlas_cloud=1, atlas_rain=1, zp_data=[0.004749999999999588, -0.10975000000000001, 0.12124999999999986, 0.04699999999999882, 0.06500000000000128, 0.03225000000000122, -0.19899999999999984, 0.024250000000000327, 0.07649999999999935, 0.10699999999999932, 0.13874999999999993, 0.02200000000000024, 0.15499999999999936, -0.06375000000000064, -0.5850000000000009, -0.09600000000000009, 0.05424999999999969, 0.08649999999999913, 0.16000000000000014, 0.11924999999999919, 0.0694999999999979, 0.04124999999999801, -0.6237499999999976, 0.027749999999999275, 0.06799999999999962, 0.1899999999999995, 0.20475000000000065, 0.26750000000000007, 0.30400000000000027, 0.21500000000000163, -0.2679999999999989, 0.09200000000000053, 0.14124999999999943], zp_timestamp='2025-11-03T22:08:00')
2025-11-04T00:11:53.987 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:11:54.000 [DEBUG] [Thread-125147] [transport.py] [_log()] starting thread (client mode): 0xed04850
2025-11-04T00:11:54.001 [DEBUG] [Thread-125147] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:11:54.019 [DEBUG] [Thread-125147] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:11:54.019 [INFO] [Thread-125147] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:11:54.027 [DEBUG] [Thread-125147] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:11:54.027 [DEBUG] [Thread-125147] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:11:54.027 [DEBUG] [Thread-125147] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:11:54.027 [DEBUG] [Thread-125147] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:11:54.028 [DEBUG] [Thread-125147] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:11:54.028 [DEBUG] [Thread-125147] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:11:54.028 [DEBUG] [Thread-125147] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:11:54.028 [DEBUG] [Thread-125147] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:11:54.028 [DEBUG] [Thread-125147] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:11:54.028 [DEBUG] [Thread-125147] [transport.py] [_log()] client lang: <none>
2025-11-04T00:11:54.028 [DEBUG] [Thread-125147] [transport.py] [_log()] server lang: <none>
2025-11-04T00:11:54.028 [DEBUG] [Thread-125147] [transport.py] [_log()] kex follows: False
2025-11-04T00:11:54.028 [DEBUG] [Thread-125147] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:11:54.028 [DEBUG] [Thread-125147] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:11:54.028 [DEBUG] [Thread-125147] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:11:54.028 [DEBUG] [Thread-125147] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:11:54.028 [DEBUG] [Thread-125147] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:11:54.028 [DEBUG] [Thread-125147] [transport.py] [_log()] Compression: none
2025-11-04T00:11:54.028 [DEBUG] [Thread-125147] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:11:54.087 [DEBUG] [Thread-125147] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:11:54.087 [DEBUG] [Thread-125147] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:11:54.087 [DEBUG] [Thread-125147] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:11:54.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:11:54.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:11:54.143 [DEBUG] [Thread-125147] [transport.py] [_log()] userauth is OK
2025-11-04T00:11:54.143 [DEBUG] [Thread-125147] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:11:54.143 [DEBUG] [Thread-125147] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:11:54.143 [DEBUG] [Thread-125147] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:11:54.143 [DEBUG] [Thread-125147] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:11:54.157 [INFO] [Thread-125147] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:11:54.157 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:11:54.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:11:54.985 [DEBUG] [Thread-125147] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:11:54.985 [DEBUG] [Thread-125147] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:11:55.033 [DEBUG] [Thread-125147] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:11:55.033 [DEBUG] [Thread-125147] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:11:55.044 [DEBUG] [Thread-125147] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:11:55.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:11:55.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:11:55.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:11:55.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:11:55.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:11:55.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:11:55.081 [DEBUG] [Thread-125147] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:11:59.554 [DEBUG] [Thread-125149 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:12:00.367 [DEBUG] [Thread-125150 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:12:15.414 [DEBUG] [Thread-125151 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:12:15.641 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:12:15.642 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:12:25.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:12:25.106 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:12:25.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:12:26.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 12, 15), 29.17, 12.54, 0.0, 16.2, 18.58, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:12:26.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:12:15
2025-11-04T00:12:27.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:12:27.275 [DEBUG] [Thread-125152] [transport.py] [_log()] starting thread (client mode): 0x1174fd60
2025-11-04T00:12:27.275 [DEBUG] [Thread-125152] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:12:27.286 [DEBUG] [Thread-125152] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:12:27.286 [INFO] [Thread-125152] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:12:27.291 [DEBUG] [Thread-125152] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:12:27.291 [DEBUG] [Thread-125152] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:12:27.292 [DEBUG] [Thread-125152] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:12:27.292 [DEBUG] [Thread-125152] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:12:27.292 [DEBUG] [Thread-125152] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:12:27.292 [DEBUG] [Thread-125152] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:12:27.292 [DEBUG] [Thread-125152] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:12:27.292 [DEBUG] [Thread-125152] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:12:27.292 [DEBUG] [Thread-125152] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:12:27.292 [DEBUG] [Thread-125152] [transport.py] [_log()] client lang: <none>
2025-11-04T00:12:27.293 [DEBUG] [Thread-125152] [transport.py] [_log()] server lang: <none>
2025-11-04T00:12:27.293 [DEBUG] [Thread-125152] [transport.py] [_log()] kex follows: False
2025-11-04T00:12:27.293 [DEBUG] [Thread-125152] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:12:27.293 [DEBUG] [Thread-125152] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:12:27.293 [DEBUG] [Thread-125152] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:12:27.293 [DEBUG] [Thread-125152] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:12:27.293 [DEBUG] [Thread-125152] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:12:27.293 [DEBUG] [Thread-125152] [transport.py] [_log()] Compression: none
2025-11-04T00:12:27.293 [DEBUG] [Thread-125152] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:12:27.319 [DEBUG] [Thread-125152] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:12:27.320 [DEBUG] [Thread-125152] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:12:27.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:12:27.322 [DEBUG] [Thread-125152] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:12:27.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:12:27.324 [DEBUG] [Thread-125152] [transport.py] [_log()] userauth is OK
2025-11-04T00:12:27.324 [DEBUG] [Thread-125152] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:12:27.324 [DEBUG] [Thread-125152] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:12:27.324 [DEBUG] [Thread-125152] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:12:27.324 [DEBUG] [Thread-125152] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:12:27.349 [INFO] [Thread-125152] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:12:27.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:12:28.009 [DEBUG] [Thread-125152] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:12:28.009 [DEBUG] [Thread-125152] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:12:28.012 [DEBUG] [Thread-125152] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:12:28.050 [DEBUG] [Thread-125152] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:12:28.050 [DEBUG] [Thread-125152] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:12:28.053 [DEBUG] [Thread-125152] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:12:28.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:12:28.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:12:28.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:12:28.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:12:28.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:12:28.075 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:12:28.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:12:28.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:12:28.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:12:28.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.924752 -999.00  +19.10  17.90     17   -6.00 1 1 1 1 1     0    0 25.22 2.23 ZNESW 19.1 17.9 303.4 20.8 18.9 -25.0 18.9 -24.0 18.6 -23.6 18.9 -24.7
2025-11-04T00:12:28.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:12:28.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:12:28.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.924752
2025-11-04T00:12:28.085 [DEBUG] [Thread-125152] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:12:28.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:12:28.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:12:28.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:12:28.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:12:28.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:12:28.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:12:15', tmtdew=29.17, humidity=12.54, cloud=0.0, wind=16.2, temperature=18.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:11:38.573', atlas_cloud=1, atlas_rain=1, zp_data=[0.004749999999999588, -0.10975000000000001, 0.12124999999999986, 0.04699999999999882, 0.06500000000000128, 0.03225000000000122, -0.19899999999999984, 0.024250000000000327, 0.07649999999999935, 0.10699999999999932, 0.13874999999999993, 0.02200000000000024, 0.15499999999999936, -0.06375000000000064, -0.5850000000000009, -0.09600000000000009, 0.05424999999999969, 0.08649999999999913, 0.16000000000000014, 0.11924999999999919, 0.0694999999999979, 0.04124999999999801, -0.6237499999999976, 0.027749999999999275, 0.06799999999999962, 0.1899999999999995, 0.20475000000000065, 0.26750000000000007, 0.30400000000000027, 0.21500000000000163, -0.2679999999999989, 0.09200000000000053, 0.14124999999999943], zp_timestamp='2025-11-03T22:08:00')
2025-11-04T00:12:28.271 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:12:28.283 [DEBUG] [Thread-125155] [transport.py] [_log()] starting thread (client mode): 0x1174fca0
2025-11-04T00:12:28.283 [DEBUG] [Thread-125155] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:12:28.300 [DEBUG] [Thread-125155] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:12:28.300 [INFO] [Thread-125155] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:12:28.308 [DEBUG] [Thread-125155] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:12:28.308 [DEBUG] [Thread-125155] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:12:28.309 [DEBUG] [Thread-125155] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:12:28.309 [DEBUG] [Thread-125155] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:12:28.309 [DEBUG] [Thread-125155] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:12:28.309 [DEBUG] [Thread-125155] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:12:28.309 [DEBUG] [Thread-125155] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:12:28.309 [DEBUG] [Thread-125155] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:12:28.309 [DEBUG] [Thread-125155] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:12:28.309 [DEBUG] [Thread-125155] [transport.py] [_log()] client lang: <none>
2025-11-04T00:12:28.309 [DEBUG] [Thread-125155] [transport.py] [_log()] server lang: <none>
2025-11-04T00:12:28.309 [DEBUG] [Thread-125155] [transport.py] [_log()] kex follows: False
2025-11-04T00:12:28.309 [DEBUG] [Thread-125155] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:12:28.309 [DEBUG] [Thread-125155] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:12:28.309 [DEBUG] [Thread-125155] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:12:28.309 [DEBUG] [Thread-125155] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:12:28.309 [DEBUG] [Thread-125155] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:12:28.309 [DEBUG] [Thread-125155] [transport.py] [_log()] Compression: none
2025-11-04T00:12:28.309 [DEBUG] [Thread-125155] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:12:28.366 [DEBUG] [Thread-125155] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:12:28.367 [DEBUG] [Thread-125155] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:12:28.367 [DEBUG] [Thread-125155] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:12:28.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:12:28.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:12:28.428 [DEBUG] [Thread-125155] [transport.py] [_log()] userauth is OK
2025-11-04T00:12:28.429 [DEBUG] [Thread-125155] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:12:28.429 [DEBUG] [Thread-125155] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:12:28.429 [DEBUG] [Thread-125155] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:12:28.429 [DEBUG] [Thread-125155] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:12:28.449 [INFO] [Thread-125155] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:12:28.450 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:12:28.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:12:29.330 [DEBUG] [Thread-125155] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:12:29.331 [DEBUG] [Thread-125155] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:12:29.378 [DEBUG] [Thread-125155] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:12:29.379 [DEBUG] [Thread-125155] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:12:29.389 [DEBUG] [Thread-125155] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:12:29.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:12:29.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:12:29.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:12:29.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:12:29.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:12:29.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:12:29.447 [DEBUG] [Thread-125155] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:12:30.446 [DEBUG] [Thread-125157 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:12:45.648 [DEBUG] [Thread-125158 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:12:59.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:12:59.445 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:12:59.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:12:59.711 [DEBUG] [Thread-125159 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:13:00.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 12, 48), 29.11, 12.64, 0.0, 15.81, 18.52, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:13:00.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:12:48
2025-11-04T00:13:00.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:13:00.533 [DEBUG] [Thread-125160] [transport.py] [_log()] starting thread (client mode): 0x1174c490
2025-11-04T00:13:00.533 [DEBUG] [Thread-125160] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:13:00.545 [DEBUG] [Thread-125160] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:13:00.545 [INFO] [Thread-125160] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:13:00.546 [DEBUG] [Thread-125160] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:13:00.546 [DEBUG] [Thread-125160] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:13:00.546 [DEBUG] [Thread-125160] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:13:00.546 [DEBUG] [Thread-125160] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:13:00.547 [DEBUG] [Thread-125160] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:13:00.547 [DEBUG] [Thread-125160] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:13:00.547 [DEBUG] [Thread-125160] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:13:00.547 [DEBUG] [Thread-125160] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:13:00.547 [DEBUG] [Thread-125160] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:13:00.547 [DEBUG] [Thread-125160] [transport.py] [_log()] client lang: <none>
2025-11-04T00:13:00.547 [DEBUG] [Thread-125160] [transport.py] [_log()] server lang: <none>
2025-11-04T00:13:00.547 [DEBUG] [Thread-125160] [transport.py] [_log()] kex follows: False
2025-11-04T00:13:00.547 [DEBUG] [Thread-125160] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:13:00.547 [DEBUG] [Thread-125160] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:13:00.547 [DEBUG] [Thread-125160] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:13:00.547 [DEBUG] [Thread-125160] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:13:00.548 [DEBUG] [Thread-125160] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:13:00.548 [DEBUG] [Thread-125160] [transport.py] [_log()] Compression: none
2025-11-04T00:13:00.548 [DEBUG] [Thread-125160] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:13:00.560 [DEBUG] [Thread-125160] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:13:00.561 [DEBUG] [Thread-125160] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:13:00.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:13:00.562 [DEBUG] [Thread-125160] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:13:00.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:13:00.564 [DEBUG] [Thread-125160] [transport.py] [_log()] userauth is OK
2025-11-04T00:13:00.564 [DEBUG] [Thread-125160] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:13:00.564 [DEBUG] [Thread-125160] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:13:00.564 [DEBUG] [Thread-125160] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:13:00.564 [DEBUG] [Thread-125160] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:13:00.579 [INFO] [Thread-125160] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:13:00.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:13:00.684 [DEBUG] [Thread-125162 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:13:01.212 [DEBUG] [Thread-125160] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:13:01.212 [DEBUG] [Thread-125160] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:13:01.212 [DEBUG] [Thread-125160] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:13:01.252 [DEBUG] [Thread-125160] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:13:01.252 [DEBUG] [Thread-125160] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:13:01.254 [DEBUG] [Thread-125160] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:13:01.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:13:01.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:13:01.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:13:01.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:13:01.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:13:01.272 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:13:01.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:13:01.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:13:01.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:13:01.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.925099 -999.00  +19.10  16.62     17   -6.00 1 1 1 1 1     0    0 25.39 2.47 ZNESW 16.4 16.6 302.0 20.2 19.0 -25.0 18.9 -24.1 18.6 -23.8 18.9 -24.7
2025-11-04T00:13:01.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:13:01.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:13:01.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.925099
2025-11-04T00:13:01.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:13:01.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:13:01.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:13:01.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:13:01.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:13:01.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:12:48', tmtdew=29.11, humidity=12.64, cloud=0.0, wind=15.81, temperature=18.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:12:08.554', atlas_cloud=1, atlas_rain=1, zp_data=[0.004749999999999588, -0.05025000000000013, 0.07525000000000048, 0.07599999999999874, 0.03850000000000087, 0.04225000000000101, -0.125, -0.10125000000000028, 0.12099999999999866, 0.0990000000000002, 0.14475000000000016, 0.08900000000000041, 0.12150000000000105, -0.0807500000000001, -0.38400000000000034, -0.04300000000000104, 0.10575000000000045, 0.09950000000000081, 0.13699999999999868, 0.1737499999999983, 0.09599999999999831, 0.01974999999999838, -0.32975000000000065, 0.12575000000000003, 0.0779999999999994, 0.15750000000000064, 0.20074999999999932, 0.2735000000000003, 0.30299999999999994, 0.11500000000000021, -0.17799999999999905, 0.07800000000000118, 0.11874999999999858], zp_timestamp='2025-11-03T22:10:00')
2025-11-04T00:13:01.273 [DEBUG] [Thread-125160] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:13:01.346 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:13:01.358 [DEBUG] [Thread-125164] [transport.py] [_log()] starting thread (client mode): 0x1174fd60
2025-11-04T00:13:01.358 [DEBUG] [Thread-125164] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:13:01.373 [DEBUG] [Thread-125164] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:13:01.373 [INFO] [Thread-125164] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:13:01.380 [DEBUG] [Thread-125164] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:13:01.381 [DEBUG] [Thread-125164] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:13:01.381 [DEBUG] [Thread-125164] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:13:01.381 [DEBUG] [Thread-125164] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:13:01.381 [DEBUG] [Thread-125164] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:13:01.381 [DEBUG] [Thread-125164] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:13:01.381 [DEBUG] [Thread-125164] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:13:01.381 [DEBUG] [Thread-125164] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:13:01.381 [DEBUG] [Thread-125164] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:13:01.381 [DEBUG] [Thread-125164] [transport.py] [_log()] client lang: <none>
2025-11-04T00:13:01.381 [DEBUG] [Thread-125164] [transport.py] [_log()] server lang: <none>
2025-11-04T00:13:01.381 [DEBUG] [Thread-125164] [transport.py] [_log()] kex follows: False
2025-11-04T00:13:01.381 [DEBUG] [Thread-125164] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:13:01.381 [DEBUG] [Thread-125164] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:13:01.382 [DEBUG] [Thread-125164] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:13:01.382 [DEBUG] [Thread-125164] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:13:01.382 [DEBUG] [Thread-125164] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:13:01.382 [DEBUG] [Thread-125164] [transport.py] [_log()] Compression: none
2025-11-04T00:13:01.382 [DEBUG] [Thread-125164] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:13:01.440 [DEBUG] [Thread-125164] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:13:01.440 [DEBUG] [Thread-125164] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:13:01.440 [DEBUG] [Thread-125164] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:13:01.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:13:01.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:13:01.503 [DEBUG] [Thread-125164] [transport.py] [_log()] userauth is OK
2025-11-04T00:13:01.503 [DEBUG] [Thread-125164] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:13:01.503 [DEBUG] [Thread-125164] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:13:01.503 [DEBUG] [Thread-125164] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:13:01.503 [DEBUG] [Thread-125164] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:13:01.518 [INFO] [Thread-125164] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:13:01.519 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:13:01.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:13:02.398 [DEBUG] [Thread-125164] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:13:02.398 [DEBUG] [Thread-125164] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:13:02.445 [DEBUG] [Thread-125164] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:13:02.445 [DEBUG] [Thread-125164] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:13:02.454 [DEBUG] [Thread-125164] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:13:02.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:13:02.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:13:02.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:13:02.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:13:02.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:13:02.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:13:02.487 [DEBUG] [Thread-125164] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:13:15.724 [DEBUG] [Thread-125166 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:13:15.845 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:13:15.847 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:13:30.776 [DEBUG] [Thread-125167 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:13:32.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:13:32.519 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:13:32.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:13:34.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 13, 20), 29.14, 12.59, 0.0, 15.93, 18.43, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:13:34.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:13:20
2025-11-04T00:13:34.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:13:34.940 [DEBUG] [Thread-125168] [transport.py] [_log()] starting thread (client mode): 0xedb0160
2025-11-04T00:13:34.940 [DEBUG] [Thread-125168] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:13:34.957 [DEBUG] [Thread-125168] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:13:34.957 [INFO] [Thread-125168] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:13:34.960 [DEBUG] [Thread-125168] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:13:34.960 [DEBUG] [Thread-125168] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:13:34.960 [DEBUG] [Thread-125168] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:13:34.960 [DEBUG] [Thread-125168] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:13:34.960 [DEBUG] [Thread-125168] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:13:34.960 [DEBUG] [Thread-125168] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:13:34.960 [DEBUG] [Thread-125168] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:13:34.960 [DEBUG] [Thread-125168] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:13:34.960 [DEBUG] [Thread-125168] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:13:34.961 [DEBUG] [Thread-125168] [transport.py] [_log()] client lang: <none>
2025-11-04T00:13:34.961 [DEBUG] [Thread-125168] [transport.py] [_log()] server lang: <none>
2025-11-04T00:13:34.961 [DEBUG] [Thread-125168] [transport.py] [_log()] kex follows: False
2025-11-04T00:13:34.961 [DEBUG] [Thread-125168] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:13:34.961 [DEBUG] [Thread-125168] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:13:34.961 [DEBUG] [Thread-125168] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:13:34.961 [DEBUG] [Thread-125168] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:13:34.961 [DEBUG] [Thread-125168] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:13:34.961 [DEBUG] [Thread-125168] [transport.py] [_log()] Compression: none
2025-11-04T00:13:34.961 [DEBUG] [Thread-125168] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:13:34.989 [DEBUG] [Thread-125168] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:13:34.992 [DEBUG] [Thread-125168] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:13:34.993 [DEBUG] [Thread-125168] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:13:34.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:13:34.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:13:34.995 [DEBUG] [Thread-125168] [transport.py] [_log()] userauth is OK
2025-11-04T00:13:34.995 [DEBUG] [Thread-125168] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:13:34.995 [DEBUG] [Thread-125168] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:13:34.995 [DEBUG] [Thread-125168] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:13:34.995 [DEBUG] [Thread-125168] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:13:35.013 [INFO] [Thread-125168] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:13:35.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:13:35.671 [DEBUG] [Thread-125168] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:13:35.671 [DEBUG] [Thread-125168] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:13:35.672 [DEBUG] [Thread-125168] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:13:35.712 [DEBUG] [Thread-125168] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:13:35.712 [DEBUG] [Thread-125168] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:13:35.715 [DEBUG] [Thread-125168] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:13:35.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:13:35.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:13:35.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:13:35.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:13:35.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:13:35.734 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:13:35.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:13:35.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:13:35.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:13:35.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.925793 -999.00  +19.00  15.00     17   -6.00 1 1 1 1 1     0    0 25.36 2.25 ZNESW 15.0 15.0 300.4 19.4 18.9 -24.9 18.9 -24.0 18.6 -23.6 18.9 -24.6
2025-11-04T00:13:35.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:13:35.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:13:35.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.925793
2025-11-04T00:13:35.741 [DEBUG] [Thread-125168] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:13:35.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:13:35.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:13:35.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:13:35.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:13:35.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:13:35.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:13:20', tmtdew=29.14, humidity=12.59, cloud=0.0, wind=15.93, temperature=18.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:13:08.515', atlas_cloud=1, atlas_rain=1, zp_data=[0.004749999999999588, -0.05025000000000013, 0.07525000000000048, 0.07599999999999874, 0.03850000000000087, 0.04225000000000101, -0.125, -0.10125000000000028, 0.12099999999999866, 0.0990000000000002, 0.14475000000000016, 0.08900000000000041, 0.12150000000000105, -0.0807500000000001, -0.38400000000000034, -0.04300000000000104, 0.10575000000000045, 0.09950000000000081, 0.13699999999999868, 0.1737499999999983, 0.09599999999999831, 0.01974999999999838, -0.32975000000000065, 0.12575000000000003, 0.0779999999999994, 0.15750000000000064, 0.20074999999999932, 0.2735000000000003, 0.30299999999999994, 0.11500000000000021, -0.17799999999999905, 0.07800000000000118, 0.11874999999999858], zp_timestamp='2025-11-03T22:10:00')
2025-11-04T00:13:35.824 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:13:35.840 [DEBUG] [Thread-125171] [transport.py] [_log()] starting thread (client mode): 0xed40700
2025-11-04T00:13:35.840 [DEBUG] [Thread-125171] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:13:35.859 [DEBUG] [Thread-125171] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:13:35.860 [INFO] [Thread-125171] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:13:35.871 [DEBUG] [Thread-125171] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:13:35.871 [DEBUG] [Thread-125171] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:13:35.871 [DEBUG] [Thread-125171] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:13:35.871 [DEBUG] [Thread-125171] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:13:35.871 [DEBUG] [Thread-125171] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:13:35.871 [DEBUG] [Thread-125171] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:13:35.871 [DEBUG] [Thread-125171] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:13:35.871 [DEBUG] [Thread-125171] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:13:35.871 [DEBUG] [Thread-125171] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:13:35.871 [DEBUG] [Thread-125171] [transport.py] [_log()] client lang: <none>
2025-11-04T00:13:35.871 [DEBUG] [Thread-125171] [transport.py] [_log()] server lang: <none>
2025-11-04T00:13:35.871 [DEBUG] [Thread-125171] [transport.py] [_log()] kex follows: False
2025-11-04T00:13:35.872 [DEBUG] [Thread-125171] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:13:35.872 [DEBUG] [Thread-125171] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:13:35.872 [DEBUG] [Thread-125171] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:13:35.872 [DEBUG] [Thread-125171] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:13:35.872 [DEBUG] [Thread-125171] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:13:35.872 [DEBUG] [Thread-125171] [transport.py] [_log()] Compression: none
2025-11-04T00:13:35.872 [DEBUG] [Thread-125171] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:13:35.928 [DEBUG] [Thread-125171] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:13:35.928 [DEBUG] [Thread-125171] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:13:35.928 [DEBUG] [Thread-125171] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:13:35.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:13:35.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:13:35.990 [DEBUG] [Thread-125171] [transport.py] [_log()] userauth is OK
2025-11-04T00:13:35.990 [DEBUG] [Thread-125171] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:13:35.990 [DEBUG] [Thread-125171] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:13:35.990 [DEBUG] [Thread-125171] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:13:35.990 [DEBUG] [Thread-125171] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:13:36.008 [INFO] [Thread-125171] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:13:36.008 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:13:36.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:13:36.878 [DEBUG] [Thread-125171] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:13:36.878 [DEBUG] [Thread-125171] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:13:36.929 [DEBUG] [Thread-125171] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:13:36.929 [DEBUG] [Thread-125171] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:13:36.938 [DEBUG] [Thread-125171] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:13:36.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:13:36.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:13:36.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:13:36.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:13:36.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:13:36.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:13:36.970 [DEBUG] [Thread-125171] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:13:45.805 [DEBUG] [Thread-125173 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:13:59.996 [DEBUG] [Thread-125174 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:14:00.848 [DEBUG] [Thread-125175 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:14:07.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:14:07.002 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:14:07.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:14:07.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 13, 53), 29.09, 12.61, 0.0, 15.76, 18.5, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:14:07.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:13:53
2025-11-04T00:14:08.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:14:08.308 [DEBUG] [Thread-125176] [transport.py] [_log()] starting thread (client mode): 0x1174f460
2025-11-04T00:14:08.309 [DEBUG] [Thread-125176] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:14:08.325 [DEBUG] [Thread-125176] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:14:08.325 [INFO] [Thread-125176] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:14:08.328 [DEBUG] [Thread-125176] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:14:08.328 [DEBUG] [Thread-125176] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:14:08.328 [DEBUG] [Thread-125176] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:14:08.328 [DEBUG] [Thread-125176] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:14:08.329 [DEBUG] [Thread-125176] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:14:08.329 [DEBUG] [Thread-125176] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:14:08.329 [DEBUG] [Thread-125176] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:14:08.329 [DEBUG] [Thread-125176] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:14:08.329 [DEBUG] [Thread-125176] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:14:08.329 [DEBUG] [Thread-125176] [transport.py] [_log()] client lang: <none>
2025-11-04T00:14:08.329 [DEBUG] [Thread-125176] [transport.py] [_log()] server lang: <none>
2025-11-04T00:14:08.329 [DEBUG] [Thread-125176] [transport.py] [_log()] kex follows: False
2025-11-04T00:14:08.330 [DEBUG] [Thread-125176] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:14:08.330 [DEBUG] [Thread-125176] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:14:08.330 [DEBUG] [Thread-125176] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:14:08.330 [DEBUG] [Thread-125176] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:14:08.331 [DEBUG] [Thread-125176] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:14:08.331 [DEBUG] [Thread-125176] [transport.py] [_log()] Compression: none
2025-11-04T00:14:08.331 [DEBUG] [Thread-125176] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:14:08.363 [DEBUG] [Thread-125176] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:14:08.365 [DEBUG] [Thread-125176] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:14:08.365 [DEBUG] [Thread-125176] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:14:08.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:14:08.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:14:08.405 [DEBUG] [Thread-125176] [transport.py] [_log()] userauth is OK
2025-11-04T00:14:08.405 [DEBUG] [Thread-125176] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:14:08.405 [DEBUG] [Thread-125176] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:14:08.405 [DEBUG] [Thread-125176] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:14:08.405 [DEBUG] [Thread-125176] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:14:08.432 [INFO] [Thread-125176] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:14:08.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:14:09.086 [DEBUG] [Thread-125176] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:14:09.086 [DEBUG] [Thread-125176] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:14:09.087 [DEBUG] [Thread-125176] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:14:09.127 [DEBUG] [Thread-125176] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:14:09.127 [DEBUG] [Thread-125176] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:14:09.129 [DEBUG] [Thread-125176] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:14:09.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:14:09.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:14:09.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:14:09.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:14:09.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:14:09.150 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:14:09.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:14:09.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:14:09.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:14:09.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.926140 -999.00  +19.00  17.21     17   -6.00 1 1 1 1 1     0    0 25.17 2.20 ZNESW 15.7 17.2 297.8 18.6 18.9 -25.0 18.9 -23.9 18.6 -23.5 18.9 -24.7
2025-11-04T00:14:09.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:14:09.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:14:09.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.926140
2025-11-04T00:14:09.156 [DEBUG] [Thread-125176] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:14:09.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:14:09.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:14:09.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:14:09.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:14:09.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:14:09.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:13:53', tmtdew=29.09, humidity=12.61, cloud=0.0, wind=15.76, temperature=18.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:13:38.496', atlas_cloud=1, atlas_rain=1, zp_data=[0.004749999999999588, -0.05025000000000013, 0.07525000000000048, 0.07599999999999874, 0.03850000000000087, 0.04225000000000101, -0.125, -0.10125000000000028, 0.12099999999999866, 0.0990000000000002, 0.14475000000000016, 0.08900000000000041, 0.12150000000000105, -0.0807500000000001, -0.38400000000000034, -0.04300000000000104, 0.10575000000000045, 0.09950000000000081, 0.13699999999999868, 0.1737499999999983, 0.09599999999999831, 0.01974999999999838, -0.32975000000000065, 0.12575000000000003, 0.0779999999999994, 0.15750000000000064, 0.20074999999999932, 0.2735000000000003, 0.30299999999999994, 0.11500000000000021, -0.17799999999999905, 0.07800000000000118, 0.11874999999999858], zp_timestamp='2025-11-03T22:10:00')
2025-11-04T00:14:09.247 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:14:09.258 [DEBUG] [Thread-125179] [transport.py] [_log()] starting thread (client mode): 0x1174d1b0
2025-11-04T00:14:09.258 [DEBUG] [Thread-125179] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:14:09.274 [DEBUG] [Thread-125179] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:14:09.274 [INFO] [Thread-125179] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:14:09.282 [DEBUG] [Thread-125179] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:14:09.282 [DEBUG] [Thread-125179] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:14:09.282 [DEBUG] [Thread-125179] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:14:09.282 [DEBUG] [Thread-125179] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:14:09.282 [DEBUG] [Thread-125179] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:14:09.282 [DEBUG] [Thread-125179] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:14:09.282 [DEBUG] [Thread-125179] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:14:09.282 [DEBUG] [Thread-125179] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:14:09.282 [DEBUG] [Thread-125179] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:14:09.282 [DEBUG] [Thread-125179] [transport.py] [_log()] client lang: <none>
2025-11-04T00:14:09.282 [DEBUG] [Thread-125179] [transport.py] [_log()] server lang: <none>
2025-11-04T00:14:09.282 [DEBUG] [Thread-125179] [transport.py] [_log()] kex follows: False
2025-11-04T00:14:09.282 [DEBUG] [Thread-125179] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:14:09.282 [DEBUG] [Thread-125179] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:14:09.282 [DEBUG] [Thread-125179] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:14:09.282 [DEBUG] [Thread-125179] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:14:09.282 [DEBUG] [Thread-125179] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:14:09.282 [DEBUG] [Thread-125179] [transport.py] [_log()] Compression: none
2025-11-04T00:14:09.282 [DEBUG] [Thread-125179] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:14:09.337 [DEBUG] [Thread-125179] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:14:09.338 [DEBUG] [Thread-125179] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:14:09.338 [DEBUG] [Thread-125179] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:14:09.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:14:09.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:14:09.395 [DEBUG] [Thread-125179] [transport.py] [_log()] userauth is OK
2025-11-04T00:14:09.395 [DEBUG] [Thread-125179] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:14:09.395 [DEBUG] [Thread-125179] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:14:09.395 [DEBUG] [Thread-125179] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:14:09.396 [DEBUG] [Thread-125179] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:14:09.413 [INFO] [Thread-125179] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:14:09.414 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:14:09.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:14:10.289 [DEBUG] [Thread-125179] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:14:10.289 [DEBUG] [Thread-125179] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:14:10.336 [DEBUG] [Thread-125179] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:14:10.337 [DEBUG] [Thread-125179] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:14:10.346 [DEBUG] [Thread-125179] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:14:10.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:14:10.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:14:10.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:14:10.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:14:10.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:14:10.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:14:10.387 [DEBUG] [Thread-125179] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:14:15.894 [DEBUG] [Thread-125181 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:14:16.050 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:14:16.051 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:14:30.995 [DEBUG] [Thread-125182 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:14:40.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:14:40.411 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:14:40.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:14:41.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 14, 26), 29.05, 12.64, 0.0, 15.51, 18.47, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:14:41.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:14:26
2025-11-04T00:14:41.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:14:41.498 [DEBUG] [Thread-125183] [transport.py] [_log()] starting thread (client mode): 0xedb16c0
2025-11-04T00:14:41.498 [DEBUG] [Thread-125183] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:14:41.512 [DEBUG] [Thread-125183] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:14:41.512 [INFO] [Thread-125183] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:14:41.515 [DEBUG] [Thread-125183] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:14:41.515 [DEBUG] [Thread-125183] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:14:41.515 [DEBUG] [Thread-125183] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:14:41.515 [DEBUG] [Thread-125183] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:14:41.516 [DEBUG] [Thread-125183] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:14:41.516 [DEBUG] [Thread-125183] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:14:41.516 [DEBUG] [Thread-125183] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:14:41.516 [DEBUG] [Thread-125183] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:14:41.516 [DEBUG] [Thread-125183] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:14:41.516 [DEBUG] [Thread-125183] [transport.py] [_log()] client lang: <none>
2025-11-04T00:14:41.516 [DEBUG] [Thread-125183] [transport.py] [_log()] server lang: <none>
2025-11-04T00:14:41.516 [DEBUG] [Thread-125183] [transport.py] [_log()] kex follows: False
2025-11-04T00:14:41.516 [DEBUG] [Thread-125183] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:14:41.516 [DEBUG] [Thread-125183] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:14:41.516 [DEBUG] [Thread-125183] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:14:41.516 [DEBUG] [Thread-125183] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:14:41.516 [DEBUG] [Thread-125183] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:14:41.516 [DEBUG] [Thread-125183] [transport.py] [_log()] Compression: none
2025-11-04T00:14:41.516 [DEBUG] [Thread-125183] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:14:41.538 [DEBUG] [Thread-125183] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:14:41.539 [DEBUG] [Thread-125183] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:14:41.539 [DEBUG] [Thread-125183] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:14:41.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:14:41.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:14:41.541 [DEBUG] [Thread-125183] [transport.py] [_log()] userauth is OK
2025-11-04T00:14:41.541 [DEBUG] [Thread-125183] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:14:41.541 [DEBUG] [Thread-125183] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:14:41.541 [DEBUG] [Thread-125183] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:14:41.541 [DEBUG] [Thread-125183] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:14:41.552 [INFO] [Thread-125183] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:14:41.552 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:14:42.178 [DEBUG] [Thread-125183] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:14:42.178 [DEBUG] [Thread-125183] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:14:42.182 [DEBUG] [Thread-125183] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:14:42.218 [DEBUG] [Thread-125183] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:14:42.218 [DEBUG] [Thread-125183] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:14:42.221 [DEBUG] [Thread-125183] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:14:42.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:14:42.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:14:42.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:14:42.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:14:42.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:14:42.247 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:14:42.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:14:42.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:14:42.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:14:42.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.926488 -999.00  +19.00  14.90     17   -6.00 1 1 1 1 1     0    0 24.75 1.73 ZNESW 14.7 14.9 299.8 19.0 18.9 -25.0 18.9 -24.0 18.6 -23.5 18.9 -24.7
2025-11-04T00:14:42.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:14:42.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:14:42.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.926488
2025-11-04T00:14:42.256 [DEBUG] [Thread-125183] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:14:42.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:14:42.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:14:42.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:14:42.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:14:42.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:14:42.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:14:26', tmtdew=29.05, humidity=12.64, cloud=0.0, wind=15.51, temperature=18.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:14:08.563', atlas_cloud=1, atlas_rain=1, zp_data=[0.004749999999999588, -0.05025000000000013, 0.07525000000000048, 0.07599999999999874, 0.03850000000000087, 0.04225000000000101, -0.125, -0.10125000000000028, 0.12099999999999866, 0.0990000000000002, 0.14475000000000016, 0.08900000000000041, 0.12150000000000105, -0.0807500000000001, -0.38400000000000034, -0.04300000000000104, 0.10575000000000045, 0.09950000000000081, 0.13699999999999868, 0.1737499999999983, 0.09599999999999831, 0.01974999999999838, -0.32975000000000065, 0.12575000000000003, 0.0779999999999994, 0.15750000000000064, 0.20074999999999932, 0.2735000000000003, 0.30299999999999994, 0.11500000000000021, -0.17799999999999905, 0.07800000000000118, 0.11874999999999858], zp_timestamp='2025-11-03T22:10:00')
2025-11-04T00:14:42.374 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:14:42.387 [DEBUG] [Thread-125186] [transport.py] [_log()] starting thread (client mode): 0x117608e0
2025-11-04T00:14:42.389 [DEBUG] [Thread-125186] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:14:42.402 [DEBUG] [Thread-125186] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:14:42.403 [INFO] [Thread-125186] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:14:42.411 [DEBUG] [Thread-125186] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:14:42.411 [DEBUG] [Thread-125186] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:14:42.411 [DEBUG] [Thread-125186] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:14:42.412 [DEBUG] [Thread-125186] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:14:42.412 [DEBUG] [Thread-125186] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:14:42.412 [DEBUG] [Thread-125186] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:14:42.412 [DEBUG] [Thread-125186] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:14:42.412 [DEBUG] [Thread-125186] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:14:42.412 [DEBUG] [Thread-125186] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:14:42.412 [DEBUG] [Thread-125186] [transport.py] [_log()] client lang: <none>
2025-11-04T00:14:42.412 [DEBUG] [Thread-125186] [transport.py] [_log()] server lang: <none>
2025-11-04T00:14:42.412 [DEBUG] [Thread-125186] [transport.py] [_log()] kex follows: False
2025-11-04T00:14:42.412 [DEBUG] [Thread-125186] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:14:42.412 [DEBUG] [Thread-125186] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:14:42.412 [DEBUG] [Thread-125186] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:14:42.412 [DEBUG] [Thread-125186] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:14:42.412 [DEBUG] [Thread-125186] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:14:42.412 [DEBUG] [Thread-125186] [transport.py] [_log()] Compression: none
2025-11-04T00:14:42.412 [DEBUG] [Thread-125186] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:14:42.478 [DEBUG] [Thread-125186] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:14:42.479 [DEBUG] [Thread-125186] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:14:42.480 [DEBUG] [Thread-125186] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:14:42.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:14:42.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:14:42.538 [DEBUG] [Thread-125186] [transport.py] [_log()] userauth is OK
2025-11-04T00:14:42.539 [DEBUG] [Thread-125186] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:14:42.539 [DEBUG] [Thread-125186] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:14:42.539 [DEBUG] [Thread-125186] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:14:42.539 [DEBUG] [Thread-125186] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:14:42.560 [INFO] [Thread-125186] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:14:42.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:14:42.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:14:43.420 [DEBUG] [Thread-125186] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:14:43.420 [DEBUG] [Thread-125186] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:14:43.468 [DEBUG] [Thread-125186] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:14:43.468 [DEBUG] [Thread-125186] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:14:43.477 [DEBUG] [Thread-125186] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:14:43.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:14:43.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:14:43.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:14:43.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:14:43.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:14:43.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:14:43.539 [DEBUG] [Thread-125186] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:14:46.028 [DEBUG] [Thread-125188 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:15:00.289 [DEBUG] [Thread-125189 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:15:01.075 [DEBUG] [Thread-125190 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:15:13.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:15:13.577 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:15:13.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:15:14.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 14, 59), 29.07, 12.63, 0.0, 15.79, 18.5, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:15:14.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:14:59
2025-11-04T00:15:14.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:15:14.754 [DEBUG] [Thread-125191] [transport.py] [_log()] starting thread (client mode): 0xedb3ac0
2025-11-04T00:15:14.755 [DEBUG] [Thread-125191] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:15:14.762 [DEBUG] [Thread-125191] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:15:14.762 [INFO] [Thread-125191] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:15:14.767 [DEBUG] [Thread-125191] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:15:14.767 [DEBUG] [Thread-125191] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:15:14.767 [DEBUG] [Thread-125191] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:15:14.767 [DEBUG] [Thread-125191] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:15:14.767 [DEBUG] [Thread-125191] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:15:14.767 [DEBUG] [Thread-125191] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:15:14.767 [DEBUG] [Thread-125191] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:15:14.767 [DEBUG] [Thread-125191] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:15:14.767 [DEBUG] [Thread-125191] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:15:14.767 [DEBUG] [Thread-125191] [transport.py] [_log()] client lang: <none>
2025-11-04T00:15:14.767 [DEBUG] [Thread-125191] [transport.py] [_log()] server lang: <none>
2025-11-04T00:15:14.767 [DEBUG] [Thread-125191] [transport.py] [_log()] kex follows: False
2025-11-04T00:15:14.767 [DEBUG] [Thread-125191] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:15:14.768 [DEBUG] [Thread-125191] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:15:14.768 [DEBUG] [Thread-125191] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:15:14.768 [DEBUG] [Thread-125191] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:15:14.768 [DEBUG] [Thread-125191] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:15:14.768 [DEBUG] [Thread-125191] [transport.py] [_log()] Compression: none
2025-11-04T00:15:14.768 [DEBUG] [Thread-125191] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:15:14.806 [DEBUG] [Thread-125191] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:15:14.811 [DEBUG] [Thread-125191] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:15:14.813 [DEBUG] [Thread-125191] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:15:14.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:15:14.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:15:14.819 [DEBUG] [Thread-125191] [transport.py] [_log()] userauth is OK
2025-11-04T00:15:14.819 [DEBUG] [Thread-125191] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:15:14.819 [DEBUG] [Thread-125191] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:15:14.819 [DEBUG] [Thread-125191] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:15:14.819 [DEBUG] [Thread-125191] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:15:14.859 [INFO] [Thread-125191] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:15:14.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:15:15.524 [DEBUG] [Thread-125191] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:15:15.525 [DEBUG] [Thread-125191] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:15:15.526 [DEBUG] [Thread-125191] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:15:15.565 [DEBUG] [Thread-125191] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:15:15.566 [DEBUG] [Thread-125191] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:15:15.568 [DEBUG] [Thread-125191] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:15:15.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:15:15.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:15:15.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:15:15.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:15:15.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:15:15.591 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:15:15.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:15:15.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:15:15.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:15:15.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.926835 -999.00  +18.90  14.70     17   -6.10 1 1 1 1 1     0    0 25.31 1.20 ZNESW 14.4 14.7 303.2 18.8 18.9 -25.1 18.9 -24.0 18.7 -23.5 18.9 -24.6
2025-11-04T00:15:15.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:15:15.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:15:15.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.926835
2025-11-04T00:15:15.598 [DEBUG] [Thread-125191] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:15:15.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:15:15.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:15:15.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:15:15.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:15:15.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:15:15.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:14:59', tmtdew=29.07, humidity=12.63, cloud=0.0, wind=15.79, temperature=18.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:14:38.544', atlas_cloud=1, atlas_rain=1, zp_data=[0.004749999999999588, -0.05025000000000013, 0.07525000000000048, 0.07599999999999874, 0.03850000000000087, 0.04225000000000101, -0.125, -0.10125000000000028, 0.12099999999999866, 0.0990000000000002, 0.14475000000000016, 0.08900000000000041, 0.12150000000000105, -0.0807500000000001, -0.38400000000000034, -0.04300000000000104, 0.10575000000000045, 0.09950000000000081, 0.13699999999999868, 0.1737499999999983, 0.09599999999999831, 0.01974999999999838, -0.32975000000000065, 0.12575000000000003, 0.0779999999999994, 0.15750000000000064, 0.20074999999999932, 0.2735000000000003, 0.30299999999999994, 0.11500000000000021, -0.17799999999999905, 0.07800000000000118, 0.11874999999999858], zp_timestamp='2025-11-03T22:10:00')
2025-11-04T00:15:15.692 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:15:15.704 [DEBUG] [Thread-125194] [transport.py] [_log()] starting thread (client mode): 0xedb27d0
2025-11-04T00:15:15.704 [DEBUG] [Thread-125194] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:15:15.719 [DEBUG] [Thread-125194] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:15:15.719 [INFO] [Thread-125194] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:15:15.726 [DEBUG] [Thread-125194] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:15:15.726 [DEBUG] [Thread-125194] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:15:15.726 [DEBUG] [Thread-125194] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:15:15.726 [DEBUG] [Thread-125194] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:15:15.726 [DEBUG] [Thread-125194] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:15:15.726 [DEBUG] [Thread-125194] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:15:15.726 [DEBUG] [Thread-125194] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:15:15.726 [DEBUG] [Thread-125194] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:15:15.726 [DEBUG] [Thread-125194] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:15:15.726 [DEBUG] [Thread-125194] [transport.py] [_log()] client lang: <none>
2025-11-04T00:15:15.726 [DEBUG] [Thread-125194] [transport.py] [_log()] server lang: <none>
2025-11-04T00:15:15.726 [DEBUG] [Thread-125194] [transport.py] [_log()] kex follows: False
2025-11-04T00:15:15.726 [DEBUG] [Thread-125194] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:15:15.726 [DEBUG] [Thread-125194] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:15:15.726 [DEBUG] [Thread-125194] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:15:15.726 [DEBUG] [Thread-125194] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:15:15.727 [DEBUG] [Thread-125194] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:15:15.727 [DEBUG] [Thread-125194] [transport.py] [_log()] Compression: none
2025-11-04T00:15:15.727 [DEBUG] [Thread-125194] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:15:15.790 [DEBUG] [Thread-125194] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:15:15.790 [DEBUG] [Thread-125194] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:15:15.790 [DEBUG] [Thread-125194] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:15:15.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:15:15.791 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:15:15.847 [DEBUG] [Thread-125194] [transport.py] [_log()] userauth is OK
2025-11-04T00:15:15.847 [DEBUG] [Thread-125194] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:15:15.847 [DEBUG] [Thread-125194] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:15:15.847 [DEBUG] [Thread-125194] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:15:15.848 [DEBUG] [Thread-125194] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:15:15.868 [INFO] [Thread-125194] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:15:15.869 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:15:15.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:15:16.130 [DEBUG] [Thread-125196 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:15:16.253 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:15:16.255 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:15:16.734 [DEBUG] [Thread-125194] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:15:16.734 [DEBUG] [Thread-125194] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:15:16.783 [DEBUG] [Thread-125194] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:15:16.783 [DEBUG] [Thread-125194] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:15:16.792 [DEBUG] [Thread-125194] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:15:16.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:15:16.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:15:16.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:15:16.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:15:16.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:15:16.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:15:16.827 [DEBUG] [Thread-125194] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:15:31.293 [DEBUG] [Thread-125197 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:15:46.324 [DEBUG] [Thread-125198 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:15:46.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:15:46.850 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:15:46.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:15:47.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 15, 32), 29.05, 12.64, 0.0, 13.71, 18.47, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:15:47.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:15:32
2025-11-04T00:15:47.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:15:48.057 [DEBUG] [Thread-125199] [transport.py] [_log()] starting thread (client mode): 0xed426e0
2025-11-04T00:15:48.061 [DEBUG] [Thread-125199] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:15:48.064 [DEBUG] [Thread-125199] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:15:48.065 [INFO] [Thread-125199] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:15:48.074 [DEBUG] [Thread-125199] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:15:48.074 [DEBUG] [Thread-125199] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:15:48.075 [DEBUG] [Thread-125199] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:15:48.075 [DEBUG] [Thread-125199] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:15:48.075 [DEBUG] [Thread-125199] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:15:48.075 [DEBUG] [Thread-125199] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:15:48.075 [DEBUG] [Thread-125199] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:15:48.075 [DEBUG] [Thread-125199] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:15:48.075 [DEBUG] [Thread-125199] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:15:48.075 [DEBUG] [Thread-125199] [transport.py] [_log()] client lang: <none>
2025-11-04T00:15:48.075 [DEBUG] [Thread-125199] [transport.py] [_log()] server lang: <none>
2025-11-04T00:15:48.075 [DEBUG] [Thread-125199] [transport.py] [_log()] kex follows: False
2025-11-04T00:15:48.075 [DEBUG] [Thread-125199] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:15:48.077 [DEBUG] [Thread-125199] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:15:48.077 [DEBUG] [Thread-125199] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:15:48.077 [DEBUG] [Thread-125199] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:15:48.078 [DEBUG] [Thread-125199] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:15:48.078 [DEBUG] [Thread-125199] [transport.py] [_log()] Compression: none
2025-11-04T00:15:48.078 [DEBUG] [Thread-125199] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:15:48.124 [DEBUG] [Thread-125199] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:15:48.139 [DEBUG] [Thread-125199] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:15:48.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:15:48.143 [DEBUG] [Thread-125199] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:15:48.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:15:48.145 [DEBUG] [Thread-125199] [transport.py] [_log()] userauth is OK
2025-11-04T00:15:48.145 [DEBUG] [Thread-125199] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:15:48.146 [DEBUG] [Thread-125199] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:15:48.146 [DEBUG] [Thread-125199] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:15:48.147 [DEBUG] [Thread-125199] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:15:48.182 [INFO] [Thread-125199] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:15:48.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:15:48.822 [DEBUG] [Thread-125199] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:15:48.822 [DEBUG] [Thread-125199] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:15:48.824 [DEBUG] [Thread-125199] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:15:48.863 [DEBUG] [Thread-125199] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:15:48.864 [DEBUG] [Thread-125199] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:15:48.866 [DEBUG] [Thread-125199] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:15:48.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:15:48.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:15:48.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:15:48.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:15:48.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:15:48.896 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:15:48.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:15:48.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:15:48.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:15:48.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.927182 -999.00  +18.90  13.36     17   -6.10 1 1 1 1 1     0    0 25.03 0.81 ZNESW 12.3 13.4 306.4 17.5 18.9 -25.0 18.9 -24.0 18.6 -23.3 18.9 -24.5
2025-11-04T00:15:48.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:15:48.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:15:48.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.927182
2025-11-04T00:15:48.905 [DEBUG] [Thread-125199] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:15:48.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:15:48.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:15:48.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:15:48.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:15:48.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:15:48.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:15:32', tmtdew=29.05, humidity=12.64, cloud=0.0, wind=13.71, temperature=18.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:15:08.525', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02325000000000088, -0.03924999999999912, 0.13975000000000115, 0.07000000000000028, 0.14250000000000007, -0.03324999999999889, -0.009000000000000341, -0.005749999999999034, 0.009000000000000341, 0.07600000000000051, 0.12025000000000041, -0.054499999999999105, 0.08499999999999908, -0.2557500000000008, -0.28800000000000026, -0.07500000000000107, 0.06874999999999964, 0.08050000000000068, 0.16499999999999915, 0.0852499999999985, 0.043499999999998096, 0.06374999999999886, -0.3947499999999984, 0.055749999999999744, 0.05699999999999861, 0.18399999999999928, 0.18374999999999986, 0.22850000000000037, 0.2549999999999999, 0.21800000000000175, -0.3199999999999985, 0.11650000000000027, 0.13974999999999937], zp_timestamp='2025-11-03T22:14:00')
2025-11-04T00:15:49.067 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:15:49.080 [DEBUG] [Thread-125202] [transport.py] [_log()] starting thread (client mode): 0xed42260
2025-11-04T00:15:49.080 [DEBUG] [Thread-125202] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:15:49.096 [DEBUG] [Thread-125202] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:15:49.096 [INFO] [Thread-125202] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:15:49.103 [DEBUG] [Thread-125202] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:15:49.104 [DEBUG] [Thread-125202] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:15:49.104 [DEBUG] [Thread-125202] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:15:49.104 [DEBUG] [Thread-125202] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:15:49.104 [DEBUG] [Thread-125202] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:15:49.104 [DEBUG] [Thread-125202] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:15:49.104 [DEBUG] [Thread-125202] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:15:49.104 [DEBUG] [Thread-125202] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:15:49.104 [DEBUG] [Thread-125202] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:15:49.104 [DEBUG] [Thread-125202] [transport.py] [_log()] client lang: <none>
2025-11-04T00:15:49.104 [DEBUG] [Thread-125202] [transport.py] [_log()] server lang: <none>
2025-11-04T00:15:49.104 [DEBUG] [Thread-125202] [transport.py] [_log()] kex follows: False
2025-11-04T00:15:49.104 [DEBUG] [Thread-125202] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:15:49.104 [DEBUG] [Thread-125202] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:15:49.104 [DEBUG] [Thread-125202] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:15:49.106 [DEBUG] [Thread-125202] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:15:49.106 [DEBUG] [Thread-125202] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:15:49.106 [DEBUG] [Thread-125202] [transport.py] [_log()] Compression: none
2025-11-04T00:15:49.106 [DEBUG] [Thread-125202] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:15:49.164 [DEBUG] [Thread-125202] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:15:49.165 [DEBUG] [Thread-125202] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:15:49.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:15:49.166 [DEBUG] [Thread-125202] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:15:49.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:15:49.223 [DEBUG] [Thread-125202] [transport.py] [_log()] userauth is OK
2025-11-04T00:15:49.223 [DEBUG] [Thread-125202] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:15:49.223 [DEBUG] [Thread-125202] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:15:49.223 [DEBUG] [Thread-125202] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:15:49.223 [DEBUG] [Thread-125202] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:15:49.241 [INFO] [Thread-125202] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:15:49.241 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:15:49.241 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:15:50.113 [DEBUG] [Thread-125202] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:15:50.113 [DEBUG] [Thread-125202] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:15:50.163 [DEBUG] [Thread-125202] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:15:50.163 [DEBUG] [Thread-125202] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:15:50.173 [DEBUG] [Thread-125202] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:15:50.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:15:50.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:15:50.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:15:50.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:15:50.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:15:50.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:15:50.219 [DEBUG] [Thread-125202] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:16:01.359 [DEBUG] [Thread-125204 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:16:01.868 [DEBUG] [Thread-125205 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:16:16.454 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:16:16.455 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:16:16.757 [DEBUG] [Thread-125206 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:16:19.272 [DEBUG] [Thread-124687 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:16:20.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:16:20.243 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:16:20.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:16:21.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 16, 9), 29.09, 12.59, 0.0, 13.76, 18.4, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:16:21.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:16:09
2025-11-04T00:16:21.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:16:21.460 [DEBUG] [Thread-125207] [transport.py] [_log()] starting thread (client mode): 0x11762980
2025-11-04T00:16:21.460 [DEBUG] [Thread-125207] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:16:21.475 [DEBUG] [Thread-125207] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:16:21.475 [INFO] [Thread-125207] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:16:21.478 [DEBUG] [Thread-125207] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:16:21.479 [DEBUG] [Thread-125207] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:16:21.479 [DEBUG] [Thread-125207] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:16:21.479 [DEBUG] [Thread-125207] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:16:21.479 [DEBUG] [Thread-125207] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:16:21.479 [DEBUG] [Thread-125207] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:16:21.479 [DEBUG] [Thread-125207] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:16:21.479 [DEBUG] [Thread-125207] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:16:21.479 [DEBUG] [Thread-125207] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:16:21.480 [DEBUG] [Thread-125207] [transport.py] [_log()] client lang: <none>
2025-11-04T00:16:21.480 [DEBUG] [Thread-125207] [transport.py] [_log()] server lang: <none>
2025-11-04T00:16:21.480 [DEBUG] [Thread-125207] [transport.py] [_log()] kex follows: False
2025-11-04T00:16:21.480 [DEBUG] [Thread-125207] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:16:21.480 [DEBUG] [Thread-125207] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:16:21.480 [DEBUG] [Thread-125207] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:16:21.480 [DEBUG] [Thread-125207] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:16:21.481 [DEBUG] [Thread-125207] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:16:21.481 [DEBUG] [Thread-125207] [transport.py] [_log()] Compression: none
2025-11-04T00:16:21.481 [DEBUG] [Thread-125207] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:16:21.502 [DEBUG] [Thread-125207] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:16:21.503 [DEBUG] [Thread-125207] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:16:21.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:16:21.504 [DEBUG] [Thread-125207] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:16:21.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:16:21.544 [DEBUG] [Thread-125207] [transport.py] [_log()] userauth is OK
2025-11-04T00:16:21.545 [DEBUG] [Thread-125207] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:16:21.545 [DEBUG] [Thread-125207] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:16:21.545 [DEBUG] [Thread-125207] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:16:21.545 [DEBUG] [Thread-125207] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:16:21.582 [INFO] [Thread-125207] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:16:21.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:16:22.223 [DEBUG] [Thread-125207] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:16:22.224 [DEBUG] [Thread-125207] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:16:22.224 [DEBUG] [Thread-125207] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:16:22.265 [DEBUG] [Thread-125207] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:16:22.265 [DEBUG] [Thread-125207] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:16:22.268 [DEBUG] [Thread-125207] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:16:22.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:16:22.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:16:22.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:16:22.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:16:22.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:16:22.290 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:16:22.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:16:22.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:16:22.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:16:22.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.927529 -999.00  +18.80  15.45     17   -6.10 1 1 1 1 1     0    0 24.94 -0.50 ZNESW 13.4 15.4 303.8 18.4 18.9 -25.0 18.9 -24.0 18.6 -23.7 18.9 -24.7
2025-11-04T00:16:22.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:16:22.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:16:22.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.927529
2025-11-04T00:16:22.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:16:22.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:16:22.300 [DEBUG] [Thread-125207] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:16:22.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:16:22.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:16:22.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:16:22.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:16:09', tmtdew=29.09, humidity=12.59, cloud=0.0, wind=13.76, temperature=18.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:15:38.506', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02325000000000088, -0.03924999999999912, 0.13975000000000115, 0.07000000000000028, 0.14250000000000007, -0.03324999999999889, -0.009000000000000341, -0.005749999999999034, 0.009000000000000341, 0.07600000000000051, 0.12025000000000041, -0.054499999999999105, 0.08499999999999908, -0.2557500000000008, -0.28800000000000026, -0.07500000000000107, 0.06874999999999964, 0.08050000000000068, 0.16499999999999915, 0.0852499999999985, 0.043499999999998096, 0.06374999999999886, -0.3947499999999984, 0.055749999999999744, 0.05699999999999861, 0.18399999999999928, 0.18374999999999986, 0.22850000000000037, 0.2549999999999999, 0.21800000000000175, -0.3199999999999985, 0.11650000000000027, 0.13974999999999937], zp_timestamp='2025-11-03T22:14:00')
2025-11-04T00:16:22.374 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:16:22.390 [DEBUG] [Thread-125210] [transport.py] [_log()] starting thread (client mode): 0xed5c100
2025-11-04T00:16:22.390 [DEBUG] [Thread-125210] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:16:22.409 [DEBUG] [Thread-125210] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:16:22.409 [INFO] [Thread-125210] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:16:22.418 [DEBUG] [Thread-125210] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:16:22.418 [DEBUG] [Thread-125210] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:16:22.418 [DEBUG] [Thread-125210] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:16:22.418 [DEBUG] [Thread-125210] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:16:22.418 [DEBUG] [Thread-125210] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:16:22.418 [DEBUG] [Thread-125210] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:16:22.418 [DEBUG] [Thread-125210] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:16:22.418 [DEBUG] [Thread-125210] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:16:22.418 [DEBUG] [Thread-125210] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:16:22.418 [DEBUG] [Thread-125210] [transport.py] [_log()] client lang: <none>
2025-11-04T00:16:22.418 [DEBUG] [Thread-125210] [transport.py] [_log()] server lang: <none>
2025-11-04T00:16:22.418 [DEBUG] [Thread-125210] [transport.py] [_log()] kex follows: False
2025-11-04T00:16:22.419 [DEBUG] [Thread-125210] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:16:22.419 [DEBUG] [Thread-125210] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:16:22.419 [DEBUG] [Thread-125210] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:16:22.419 [DEBUG] [Thread-125210] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:16:22.419 [DEBUG] [Thread-125210] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:16:22.419 [DEBUG] [Thread-125210] [transport.py] [_log()] Compression: none
2025-11-04T00:16:22.419 [DEBUG] [Thread-125210] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:16:22.476 [DEBUG] [Thread-125210] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:16:22.477 [DEBUG] [Thread-125210] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:16:22.477 [DEBUG] [Thread-125210] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:16:22.477 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:16:22.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:16:22.535 [DEBUG] [Thread-125210] [transport.py] [_log()] userauth is OK
2025-11-04T00:16:22.535 [DEBUG] [Thread-125210] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:16:22.535 [DEBUG] [Thread-125210] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:16:22.536 [DEBUG] [Thread-125210] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:16:22.536 [DEBUG] [Thread-125210] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:16:22.554 [INFO] [Thread-125210] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:16:22.554 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:16:22.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:16:23.445 [DEBUG] [Thread-125210] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:16:23.445 [DEBUG] [Thread-125210] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:16:23.490 [DEBUG] [Thread-125210] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:16:23.491 [DEBUG] [Thread-125210] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:16:23.505 [DEBUG] [Thread-125210] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:16:23.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:16:23.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:16:23.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:16:23.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:16:23.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:16:23.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:16:23.550 [DEBUG] [Thread-125210] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:16:31.903 [DEBUG] [Thread-125212 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:16:47.302 [DEBUG] [Thread-125213 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:16:53.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:16:53.554 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:16:53.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:16:55.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 16, 42), 29.09, 12.61, 0.0, 15.6, 18.5, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:16:55.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:16:42
2025-11-04T00:16:56.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:16:56.205 [DEBUG] [Thread-125214] [transport.py] [_log()] starting thread (client mode): 0x1174c340
2025-11-04T00:16:56.205 [DEBUG] [Thread-125214] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:16:56.226 [DEBUG] [Thread-125214] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:16:56.226 [INFO] [Thread-125214] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:16:56.231 [DEBUG] [Thread-125214] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:16:56.231 [DEBUG] [Thread-125214] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:16:56.231 [DEBUG] [Thread-125214] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:16:56.231 [DEBUG] [Thread-125214] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:16:56.232 [DEBUG] [Thread-125214] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:16:56.232 [DEBUG] [Thread-125214] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:16:56.232 [DEBUG] [Thread-125214] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:16:56.232 [DEBUG] [Thread-125214] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:16:56.232 [DEBUG] [Thread-125214] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:16:56.232 [DEBUG] [Thread-125214] [transport.py] [_log()] client lang: <none>
2025-11-04T00:16:56.232 [DEBUG] [Thread-125214] [transport.py] [_log()] server lang: <none>
2025-11-04T00:16:56.232 [DEBUG] [Thread-125214] [transport.py] [_log()] kex follows: False
2025-11-04T00:16:56.232 [DEBUG] [Thread-125214] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:16:56.232 [DEBUG] [Thread-125214] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:16:56.233 [DEBUG] [Thread-125214] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:16:56.233 [DEBUG] [Thread-125214] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:16:56.233 [DEBUG] [Thread-125214] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:16:56.233 [DEBUG] [Thread-125214] [transport.py] [_log()] Compression: none
2025-11-04T00:16:56.233 [DEBUG] [Thread-125214] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:16:56.249 [DEBUG] [Thread-125214] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:16:56.249 [DEBUG] [Thread-125214] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:16:56.250 [DEBUG] [Thread-125214] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:16:56.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:16:56.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:16:56.252 [DEBUG] [Thread-125214] [transport.py] [_log()] userauth is OK
2025-11-04T00:16:56.252 [DEBUG] [Thread-125214] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:16:56.252 [DEBUG] [Thread-125214] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:16:56.253 [DEBUG] [Thread-125214] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:16:56.253 [DEBUG] [Thread-125214] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:16:56.271 [INFO] [Thread-125214] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:16:56.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:16:56.891 [DEBUG] [Thread-125214] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:16:56.893 [DEBUG] [Thread-125214] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:16:56.893 [DEBUG] [Thread-125214] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:16:56.932 [DEBUG] [Thread-125214] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:16:56.932 [DEBUG] [Thread-125214] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:16:56.934 [DEBUG] [Thread-125214] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:16:56.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:16:56.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:16:56.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:16:56.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:16:56.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:16:56.955 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:16:56.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:16:56.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:16:56.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:16:56.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.928224 -999.00  +18.80  14.05     17   -6.10 1 1 1 1 1     0    0 25.14 -2.17 ZNESW 11.3 14.1 301.8 18.0 18.9 -24.9 18.9 -24.1 18.6 -23.8 18.9 -24.7
2025-11-04T00:16:56.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:16:56.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:16:56.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.928224
2025-11-04T00:16:56.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:16:56.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:16:56.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:16:56.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:16:56.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:16:56.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:16:42', tmtdew=29.09, humidity=12.61, cloud=0.0, wind=15.6, temperature=18.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:16:38.554', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02325000000000088, -0.03924999999999912, 0.13975000000000115, 0.07000000000000028, 0.14250000000000007, -0.03324999999999889, -0.009000000000000341, -0.005749999999999034, 0.009000000000000341, 0.07600000000000051, 0.12025000000000041, -0.054499999999999105, 0.08499999999999908, -0.2557500000000008, -0.28800000000000026, -0.07500000000000107, 0.06874999999999964, 0.08050000000000068, 0.16499999999999915, 0.0852499999999985, 0.043499999999998096, 0.06374999999999886, -0.3947499999999984, 0.055749999999999744, 0.05699999999999861, 0.18399999999999928, 0.18374999999999986, 0.22850000000000037, 0.2549999999999999, 0.21800000000000175, -0.3199999999999985, 0.11650000000000027, 0.13974999999999937], zp_timestamp='2025-11-03T22:14:00')
2025-11-04T00:16:56.956 [DEBUG] [Thread-125214] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:16:57.029 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:16:57.041 [DEBUG] [Thread-125217] [transport.py] [_log()] starting thread (client mode): 0xed42260
2025-11-04T00:16:57.041 [DEBUG] [Thread-125217] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:16:57.056 [DEBUG] [Thread-125217] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:16:57.056 [INFO] [Thread-125217] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:16:57.064 [DEBUG] [Thread-125217] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:16:57.064 [DEBUG] [Thread-125217] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:16:57.064 [DEBUG] [Thread-125217] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:16:57.064 [DEBUG] [Thread-125217] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:16:57.064 [DEBUG] [Thread-125217] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:16:57.064 [DEBUG] [Thread-125217] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:16:57.064 [DEBUG] [Thread-125217] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:16:57.064 [DEBUG] [Thread-125217] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:16:57.064 [DEBUG] [Thread-125217] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:16:57.064 [DEBUG] [Thread-125217] [transport.py] [_log()] client lang: <none>
2025-11-04T00:16:57.064 [DEBUG] [Thread-125217] [transport.py] [_log()] server lang: <none>
2025-11-04T00:16:57.064 [DEBUG] [Thread-125217] [transport.py] [_log()] kex follows: False
2025-11-04T00:16:57.064 [DEBUG] [Thread-125217] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:16:57.064 [DEBUG] [Thread-125217] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:16:57.064 [DEBUG] [Thread-125217] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:16:57.064 [DEBUG] [Thread-125217] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:16:57.064 [DEBUG] [Thread-125217] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:16:57.065 [DEBUG] [Thread-125217] [transport.py] [_log()] Compression: none
2025-11-04T00:16:57.065 [DEBUG] [Thread-125217] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:16:57.124 [DEBUG] [Thread-125217] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:16:57.124 [DEBUG] [Thread-125217] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:16:57.124 [DEBUG] [Thread-125217] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:16:57.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:16:57.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:16:57.183 [DEBUG] [Thread-125217] [transport.py] [_log()] userauth is OK
2025-11-04T00:16:57.183 [DEBUG] [Thread-125217] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:16:57.183 [DEBUG] [Thread-125217] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:16:57.183 [DEBUG] [Thread-125217] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:16:57.183 [DEBUG] [Thread-125217] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:16:57.197 [INFO] [Thread-125217] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:16:57.197 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:16:57.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:16:58.037 [DEBUG] [Thread-125217] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:16:58.038 [DEBUG] [Thread-125217] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:16:58.088 [DEBUG] [Thread-125217] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:16:58.088 [DEBUG] [Thread-125217] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:16:58.103 [DEBUG] [Thread-125217] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:16:58.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:16:58.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:16:58.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:16:58.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:16:58.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:16:58.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:16:58.140 [DEBUG] [Thread-125217] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:17:02.224 [DEBUG] [Thread-125219 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:17:02.338 [DEBUG] [Thread-125220 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:17:16.657 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:17:16.658 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:17:17.381 [DEBUG] [Thread-125221 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:17:28.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:17:28.165 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:17:28.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:17:29.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 17, 15), 29.12, 12.58, 0.0, 15.6, 18.48, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:17:29.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:17:15
2025-11-04T00:17:29.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:17:29.503 [DEBUG] [Thread-125222] [transport.py] [_log()] starting thread (client mode): 0x11762350
2025-11-04T00:17:29.504 [DEBUG] [Thread-125222] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:17:29.509 [DEBUG] [Thread-125222] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:17:29.509 [INFO] [Thread-125222] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:17:29.512 [DEBUG] [Thread-125222] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:17:29.512 [DEBUG] [Thread-125222] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:17:29.512 [DEBUG] [Thread-125222] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:17:29.512 [DEBUG] [Thread-125222] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:17:29.513 [DEBUG] [Thread-125222] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:17:29.513 [DEBUG] [Thread-125222] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:17:29.513 [DEBUG] [Thread-125222] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:17:29.513 [DEBUG] [Thread-125222] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:17:29.513 [DEBUG] [Thread-125222] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:17:29.513 [DEBUG] [Thread-125222] [transport.py] [_log()] client lang: <none>
2025-11-04T00:17:29.513 [DEBUG] [Thread-125222] [transport.py] [_log()] server lang: <none>
2025-11-04T00:17:29.513 [DEBUG] [Thread-125222] [transport.py] [_log()] kex follows: False
2025-11-04T00:17:29.513 [DEBUG] [Thread-125222] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:17:29.514 [DEBUG] [Thread-125222] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:17:29.514 [DEBUG] [Thread-125222] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:17:29.514 [DEBUG] [Thread-125222] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:17:29.514 [DEBUG] [Thread-125222] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:17:29.514 [DEBUG] [Thread-125222] [transport.py] [_log()] Compression: none
2025-11-04T00:17:29.514 [DEBUG] [Thread-125222] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:17:29.547 [DEBUG] [Thread-125222] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:17:29.551 [DEBUG] [Thread-125222] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:17:29.553 [DEBUG] [Thread-125222] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:17:29.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:17:29.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:17:29.590 [DEBUG] [Thread-125222] [transport.py] [_log()] userauth is OK
2025-11-04T00:17:29.591 [DEBUG] [Thread-125222] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:17:29.591 [DEBUG] [Thread-125222] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:17:29.591 [DEBUG] [Thread-125222] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:17:29.591 [DEBUG] [Thread-125222] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:17:29.618 [INFO] [Thread-125222] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:17:29.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:17:30.268 [DEBUG] [Thread-125222] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:17:30.268 [DEBUG] [Thread-125222] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:17:30.277 [DEBUG] [Thread-125222] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:17:30.309 [DEBUG] [Thread-125222] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:17:30.309 [DEBUG] [Thread-125222] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:17:30.312 [DEBUG] [Thread-125222] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:17:30.324 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:17:30.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:17:30.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:17:30.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:17:30.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:17:30.333 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:17:30.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:17:30.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:17:30.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:17:30.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.928571 -999.00  +18.70  11.89     17   -6.10 1 1 1 1 1     0    0 24.36 -3.76 ZNESW 12.7 11.9 307.6 17.6 18.9 -24.9 18.8 -24.0 18.6 -23.5 18.9 -24.7
2025-11-04T00:17:30.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:17:30.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:17:30.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.928571
2025-11-04T00:17:30.341 [DEBUG] [Thread-125222] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:17:30.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:17:30.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:17:30.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:17:30.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:17:30.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:17:30.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:17:15', tmtdew=29.12, humidity=12.58, cloud=0.0, wind=15.6, temperature=18.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:17:08.534', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02325000000000088, -0.03924999999999912, 0.13975000000000115, 0.07000000000000028, 0.14250000000000007, -0.03324999999999889, -0.009000000000000341, -0.005749999999999034, 0.009000000000000341, 0.07600000000000051, 0.12025000000000041, -0.054499999999999105, 0.08499999999999908, -0.2557500000000008, -0.28800000000000026, -0.07500000000000107, 0.06874999999999964, 0.08050000000000068, 0.16499999999999915, 0.0852499999999985, 0.043499999999998096, 0.06374999999999886, -0.3947499999999984, 0.055749999999999744, 0.05699999999999861, 0.18399999999999928, 0.18374999999999986, 0.22850000000000037, 0.2549999999999999, 0.21800000000000175, -0.3199999999999985, 0.11650000000000027, 0.13974999999999937], zp_timestamp='2025-11-03T22:14:00')
2025-11-04T00:17:30.418 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:17:30.429 [DEBUG] [Thread-125225] [transport.py] [_log()] starting thread (client mode): 0x117eb520
2025-11-04T00:17:30.429 [DEBUG] [Thread-125225] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:17:30.443 [DEBUG] [Thread-125225] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:17:30.443 [INFO] [Thread-125225] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:17:30.451 [DEBUG] [Thread-125225] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:17:30.452 [DEBUG] [Thread-125225] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:17:30.452 [DEBUG] [Thread-125225] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:17:30.452 [DEBUG] [Thread-125225] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:17:30.452 [DEBUG] [Thread-125225] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:17:30.452 [DEBUG] [Thread-125225] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:17:30.452 [DEBUG] [Thread-125225] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:17:30.453 [DEBUG] [Thread-125225] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:17:30.453 [DEBUG] [Thread-125225] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:17:30.453 [DEBUG] [Thread-125225] [transport.py] [_log()] client lang: <none>
2025-11-04T00:17:30.453 [DEBUG] [Thread-125225] [transport.py] [_log()] server lang: <none>
2025-11-04T00:17:30.453 [DEBUG] [Thread-125225] [transport.py] [_log()] kex follows: False
2025-11-04T00:17:30.453 [DEBUG] [Thread-125225] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:17:30.453 [DEBUG] [Thread-125225] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:17:30.453 [DEBUG] [Thread-125225] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:17:30.453 [DEBUG] [Thread-125225] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:17:30.453 [DEBUG] [Thread-125225] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:17:30.453 [DEBUG] [Thread-125225] [transport.py] [_log()] Compression: none
2025-11-04T00:17:30.453 [DEBUG] [Thread-125225] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:17:30.512 [DEBUG] [Thread-125225] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:17:30.513 [DEBUG] [Thread-125225] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:17:30.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:17:30.514 [DEBUG] [Thread-125225] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:17:30.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:17:30.572 [DEBUG] [Thread-125225] [transport.py] [_log()] userauth is OK
2025-11-04T00:17:30.572 [DEBUG] [Thread-125225] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:17:30.573 [DEBUG] [Thread-125225] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:17:30.573 [DEBUG] [Thread-125225] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:17:30.573 [DEBUG] [Thread-125225] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:17:30.592 [INFO] [Thread-125225] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:17:30.593 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:17:30.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:17:31.455 [DEBUG] [Thread-125225] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:17:31.456 [DEBUG] [Thread-125225] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:17:31.495 [DEBUG] [Thread-125225] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:17:31.495 [DEBUG] [Thread-125225] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:17:31.503 [DEBUG] [Thread-125225] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:17:31.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:17:31.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:17:31.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:17:31.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:17:31.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:17:31.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:17:31.537 [DEBUG] [Thread-125225] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:17:32.415 [DEBUG] [Thread-125227 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:17:47.526 [DEBUG] [Thread-125228 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:18:01.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:18:01.594 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:18:01.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:18:02.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 17, 47), 29.06, 12.64, 0.0, 13.57, 18.48, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:18:02.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:17:47
2025-11-04T00:18:02.527 [DEBUG] [Thread-125229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:18:02.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:18:02.569 [DEBUG] [Thread-125230 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:18:02.745 [DEBUG] [Thread-125231] [transport.py] [_log()] starting thread (client mode): 0x1174df00
2025-11-04T00:18:02.746 [DEBUG] [Thread-125231] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:18:02.758 [DEBUG] [Thread-125231] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:18:02.759 [INFO] [Thread-125231] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:18:02.763 [DEBUG] [Thread-125231] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:18:02.764 [DEBUG] [Thread-125231] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:18:02.764 [DEBUG] [Thread-125231] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:18:02.764 [DEBUG] [Thread-125231] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:18:02.764 [DEBUG] [Thread-125231] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:18:02.764 [DEBUG] [Thread-125231] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:18:02.764 [DEBUG] [Thread-125231] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:18:02.764 [DEBUG] [Thread-125231] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:18:02.764 [DEBUG] [Thread-125231] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:18:02.764 [DEBUG] [Thread-125231] [transport.py] [_log()] client lang: <none>
2025-11-04T00:18:02.765 [DEBUG] [Thread-125231] [transport.py] [_log()] server lang: <none>
2025-11-04T00:18:02.765 [DEBUG] [Thread-125231] [transport.py] [_log()] kex follows: False
2025-11-04T00:18:02.765 [DEBUG] [Thread-125231] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:18:02.766 [DEBUG] [Thread-125231] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:18:02.766 [DEBUG] [Thread-125231] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:18:02.766 [DEBUG] [Thread-125231] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:18:02.766 [DEBUG] [Thread-125231] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:18:02.766 [DEBUG] [Thread-125231] [transport.py] [_log()] Compression: none
2025-11-04T00:18:02.766 [DEBUG] [Thread-125231] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:18:02.807 [DEBUG] [Thread-125231] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:18:02.813 [DEBUG] [Thread-125231] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:18:02.815 [DEBUG] [Thread-125231] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:18:02.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:18:02.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:18:02.821 [DEBUG] [Thread-125231] [transport.py] [_log()] userauth is OK
2025-11-04T00:18:02.821 [DEBUG] [Thread-125231] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:18:02.821 [DEBUG] [Thread-125231] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:18:02.821 [DEBUG] [Thread-125231] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:18:02.821 [DEBUG] [Thread-125231] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:18:02.848 [INFO] [Thread-125231] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:18:02.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:18:03.457 [DEBUG] [Thread-125231] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:18:03.467 [DEBUG] [Thread-125231] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:18:03.469 [DEBUG] [Thread-125231] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:18:03.499 [DEBUG] [Thread-125231] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:18:03.499 [DEBUG] [Thread-125231] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:18:03.503 [DEBUG] [Thread-125231] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:18:03.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:18:03.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:18:03.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:18:03.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:18:03.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:18:03.528 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:18:03.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:18:03.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:18:03.531 [DEBUG] [Thread-125231] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:18:03.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:18:03.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.928918 -999.00  +18.70  11.93     17   -6.10 1 1 1 1 1     0    0 25.32 -5.14 ZNESW 14.6 11.9 309.2 15.8 18.9 -25.0 18.9 -24.0 18.6 -23.7 18.9 -24.7
2025-11-04T00:18:03.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:18:03.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:18:03.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.928918
2025-11-04T00:18:03.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:18:03.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:18:03.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:18:03.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:18:03.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:18:03.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:17:47', tmtdew=29.06, humidity=12.64, cloud=0.0, wind=13.57, temperature=18.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:17:38.515', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02325000000000088, -0.03924999999999912, 0.13975000000000115, 0.07000000000000028, 0.14250000000000007, -0.03324999999999889, -0.009000000000000341, -0.005749999999999034, 0.009000000000000341, 0.07600000000000051, 0.12025000000000041, -0.054499999999999105, 0.08499999999999908, -0.2557500000000008, -0.28800000000000026, -0.07500000000000107, 0.06874999999999964, 0.08050000000000068, 0.16499999999999915, 0.0852499999999985, 0.043499999999998096, 0.06374999999999886, -0.3947499999999984, 0.055749999999999744, 0.05699999999999861, 0.18399999999999928, 0.18374999999999986, 0.22850000000000037, 0.2549999999999999, 0.21800000000000175, -0.3199999999999985, 0.11650000000000027, 0.13974999999999937], zp_timestamp='2025-11-03T22:14:00')
2025-11-04T00:18:03.635 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:18:16.860 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:18:16.861 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:18:17.606 [DEBUG] [Thread-125234 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:18:32.676 [DEBUG] [Thread-125235 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:18:47.711 [DEBUG] [Thread-125236 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:19:02.743 [DEBUG] [Thread-125237 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:19:03.798 [DEBUG] [Thread-125238 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:19:17.063 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:19:17.064 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:19:17.771 [DEBUG] [Thread-125239 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:19:32.798 [DEBUG] [Thread-125240 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:19:47.835 [DEBUG] [Thread-125241 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:20:02.973 [DEBUG] [Thread-125242 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:20:05.518 [DEBUG] [Thread-125243 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:20:17.275 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:20:17.277 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:20:18.058 [DEBUG] [Thread-125244 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:20:18.660 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-04T00:20:33.091 [DEBUG] [Thread-125245 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:20:37.251 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:20:40.446 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:20:45.489 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:20:48.126 [DEBUG] [Thread-125246 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:20:48.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:20:48.702 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:20:48.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:20:49.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 20, 41), 28.97, 12.68, 0.0, 17.2, 18.42, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:20:49.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:20:41
2025-11-04T00:20:50.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:20:50.540 [DEBUG] [Thread-125247] [transport.py] [_log()] starting thread (client mode): 0x1174f5e0
2025-11-04T00:20:50.547 [DEBUG] [Thread-125247] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:20:50.550 [DEBUG] [Thread-125247] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:20:50.552 [INFO] [Thread-125247] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:20:50.642 [DEBUG] [Thread-125247] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:20:50.643 [DEBUG] [Thread-125247] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:20:50.643 [DEBUG] [Thread-125247] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:20:50.643 [DEBUG] [Thread-125247] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:20:50.644 [DEBUG] [Thread-125247] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:20:50.644 [DEBUG] [Thread-125247] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:20:50.644 [DEBUG] [Thread-125247] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:20:50.644 [DEBUG] [Thread-125247] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:20:50.644 [DEBUG] [Thread-125247] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:20:50.644 [DEBUG] [Thread-125247] [transport.py] [_log()] client lang: <none>
2025-11-04T00:20:50.644 [DEBUG] [Thread-125247] [transport.py] [_log()] server lang: <none>
2025-11-04T00:20:50.645 [DEBUG] [Thread-125247] [transport.py] [_log()] kex follows: False
2025-11-04T00:20:50.645 [DEBUG] [Thread-125247] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:20:50.649 [DEBUG] [Thread-125247] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:20:50.651 [DEBUG] [Thread-125247] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:20:50.651 [DEBUG] [Thread-125247] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:20:50.651 [DEBUG] [Thread-125247] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:20:50.653 [DEBUG] [Thread-125247] [transport.py] [_log()] Compression: none
2025-11-04T00:20:50.653 [DEBUG] [Thread-125247] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:20:50.774 [DEBUG] [Thread-125247] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:20:50.794 [DEBUG] [Thread-125247] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:20:50.805 [DEBUG] [Thread-125247] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:20:50.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:20:50.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:20:50.825 [DEBUG] [Thread-125247] [transport.py] [_log()] userauth is OK
2025-11-04T00:20:50.826 [DEBUG] [Thread-125247] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:20:50.827 [DEBUG] [Thread-125247] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:20:50.827 [DEBUG] [Thread-125247] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:20:50.827 [DEBUG] [Thread-125247] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:20:50.863 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:20:50.873 [INFO] [Thread-125247] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:20:50.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:20:51.466 [DEBUG] [Thread-125247] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:20:51.468 [DEBUG] [Thread-125247] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:20:51.471 [DEBUG] [Thread-125247] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:20:51.509 [DEBUG] [Thread-125247] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:20:51.510 [DEBUG] [Thread-125247] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:20:51.515 [DEBUG] [Thread-125247] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:20:51.536 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:20:51.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:20:51.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:20:51.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:20:51.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:20:51.567 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:20:51.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:20:51.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:20:51.578 [DEBUG] [Thread-125247] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:20:51.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:20:51.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.931001 -999.00  +18.50  12.23     18   -6.10 1 1 1 1 1     0    0 24.36 -15.42 ZNESW 13.8 12.2 305.2 14.4 18.9 -25.1 18.8 -24.0 18.6 -23.7 18.8 -24.6
2025-11-04T00:20:51.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:20:51.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:20:51.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.931001
2025-11-04T00:20:51.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:20:51.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:20:51.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:20:51.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:20:51.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:20:51.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:20:41', tmtdew=28.97, humidity=12.68, cloud=0.0, wind=17.2, temperature=18.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:20:38.486', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02325000000000088, -0.03924999999999912, 0.13975000000000115, 0.07000000000000028, 0.14250000000000007, -0.03324999999999889, -0.009000000000000341, -0.005749999999999034, 0.009000000000000341, 0.07600000000000051, 0.12025000000000041, -0.054499999999999105, 0.08499999999999908, -0.2557500000000008, -0.28800000000000026, -0.07500000000000107, 0.06874999999999964, 0.08050000000000068, 0.16499999999999915, 0.0852499999999985, 0.043499999999998096, 0.06374999999999886, -0.3947499999999984, 0.055749999999999744, 0.05699999999999861, 0.18399999999999928, 0.18374999999999986, 0.22850000000000037, 0.2549999999999999, 0.21800000000000175, -0.3199999999999985, 0.11650000000000027, 0.13974999999999937], zp_timestamp='2025-11-03T22:18:00')
2025-11-04T00:20:51.833 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:20:51.846 [DEBUG] [Thread-125250] [transport.py] [_log()] starting thread (client mode): 0xed40970
2025-11-04T00:20:51.846 [DEBUG] [Thread-125250] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:20:51.859 [DEBUG] [Thread-125250] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:20:51.860 [INFO] [Thread-125250] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:20:51.867 [DEBUG] [Thread-125250] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:20:51.867 [DEBUG] [Thread-125250] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:20:51.867 [DEBUG] [Thread-125250] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:20:51.867 [DEBUG] [Thread-125250] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:20:51.867 [DEBUG] [Thread-125250] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:20:51.868 [DEBUG] [Thread-125250] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:20:51.868 [DEBUG] [Thread-125250] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:20:51.868 [DEBUG] [Thread-125250] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:20:51.868 [DEBUG] [Thread-125250] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:20:51.868 [DEBUG] [Thread-125250] [transport.py] [_log()] client lang: <none>
2025-11-04T00:20:51.868 [DEBUG] [Thread-125250] [transport.py] [_log()] server lang: <none>
2025-11-04T00:20:51.868 [DEBUG] [Thread-125250] [transport.py] [_log()] kex follows: False
2025-11-04T00:20:51.868 [DEBUG] [Thread-125250] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:20:51.868 [DEBUG] [Thread-125250] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:20:51.869 [DEBUG] [Thread-125250] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:20:51.869 [DEBUG] [Thread-125250] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:20:51.869 [DEBUG] [Thread-125250] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:20:51.869 [DEBUG] [Thread-125250] [transport.py] [_log()] Compression: none
2025-11-04T00:20:51.869 [DEBUG] [Thread-125250] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:20:51.929 [DEBUG] [Thread-125250] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:20:51.930 [DEBUG] [Thread-125250] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:20:51.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:20:51.931 [DEBUG] [Thread-125250] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:20:51.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:20:51.989 [DEBUG] [Thread-125250] [transport.py] [_log()] userauth is OK
2025-11-04T00:20:51.989 [DEBUG] [Thread-125250] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:20:51.989 [DEBUG] [Thread-125250] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:20:51.989 [DEBUG] [Thread-125250] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:20:51.989 [DEBUG] [Thread-125250] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:20:52.008 [INFO] [Thread-125250] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:20:52.009 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:20:52.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:20:52.899 [DEBUG] [Thread-125250] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:20:52.899 [DEBUG] [Thread-125250] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:20:52.946 [DEBUG] [Thread-125250] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:20:52.946 [DEBUG] [Thread-125250] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:20:52.956 [DEBUG] [Thread-125250] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:20:52.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:20:52.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:20:52.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:20:53.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:20:53.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:20:53.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:20:53.016 [DEBUG] [Thread-125250] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:21:03.170 [DEBUG] [Thread-125252 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:21:05.905 [DEBUG] [Thread-125253 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:21:10.234 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:21:14.624 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:21:17.479 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:21:17.480 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:21:18.300 [DEBUG] [Thread-125254 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:21:23.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:21:23.040 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:21:23.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:21:23.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 21, 14), 28.98, 12.66, 0.0, 16.83, 18.38, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:21:23.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:21:14
2025-11-04T00:21:23.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:21:24.157 [DEBUG] [Thread-125255] [transport.py] [_log()] starting thread (client mode): 0x1174dae0
2025-11-04T00:21:24.158 [DEBUG] [Thread-125255] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:21:24.170 [DEBUG] [Thread-125255] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:21:24.170 [INFO] [Thread-125255] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:21:24.176 [DEBUG] [Thread-125255] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:21:24.176 [DEBUG] [Thread-125255] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:21:24.176 [DEBUG] [Thread-125255] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:21:24.176 [DEBUG] [Thread-125255] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:21:24.176 [DEBUG] [Thread-125255] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:21:24.176 [DEBUG] [Thread-125255] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:21:24.177 [DEBUG] [Thread-125255] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:21:24.177 [DEBUG] [Thread-125255] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:21:24.177 [DEBUG] [Thread-125255] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:21:24.177 [DEBUG] [Thread-125255] [transport.py] [_log()] client lang: <none>
2025-11-04T00:21:24.177 [DEBUG] [Thread-125255] [transport.py] [_log()] server lang: <none>
2025-11-04T00:21:24.177 [DEBUG] [Thread-125255] [transport.py] [_log()] kex follows: False
2025-11-04T00:21:24.177 [DEBUG] [Thread-125255] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:21:24.178 [DEBUG] [Thread-125255] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:21:24.178 [DEBUG] [Thread-125255] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:21:24.179 [DEBUG] [Thread-125255] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:21:24.179 [DEBUG] [Thread-125255] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:21:24.179 [DEBUG] [Thread-125255] [transport.py] [_log()] Compression: none
2025-11-04T00:21:24.179 [DEBUG] [Thread-125255] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:21:24.220 [DEBUG] [Thread-125255] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:21:24.225 [DEBUG] [Thread-125255] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:21:24.227 [DEBUG] [Thread-125255] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:21:24.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:21:24.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:21:24.231 [DEBUG] [Thread-125255] [transport.py] [_log()] userauth is OK
2025-11-04T00:21:24.231 [DEBUG] [Thread-125255] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:21:24.231 [DEBUG] [Thread-125255] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:21:24.231 [DEBUG] [Thread-125255] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:21:24.231 [DEBUG] [Thread-125255] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:21:24.265 [INFO] [Thread-125255] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:21:24.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:21:24.926 [DEBUG] [Thread-125255] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:21:24.927 [DEBUG] [Thread-125255] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:21:24.937 [DEBUG] [Thread-125255] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:21:24.968 [DEBUG] [Thread-125255] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:21:24.968 [DEBUG] [Thread-125255] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:21:24.971 [DEBUG] [Thread-125255] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:21:24.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:21:24.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:21:24.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:21:24.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:21:24.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:21:24.992 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:21:24.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:21:24.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:21:24.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:21:24.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.931001 -999.00  +18.50  12.23     18   -6.10 1 1 1 1 1     0    0 24.36 -15.42 ZNESW 13.8 12.2 305.2 14.4 18.9 -25.1 18.8 -24.0 18.6 -23.7 18.8 -24.6
2025-11-04T00:21:24.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:21:24.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:21:24.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.931001
2025-11-04T00:21:24.999 [DEBUG] [Thread-125255] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:21:25.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:21:25.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:21:25.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:21:25.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:21:25.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:21:25.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:21:14', tmtdew=28.98, humidity=12.66, cloud=0.0, wind=16.83, temperature=18.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:20:38.486', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02325000000000088, -0.03924999999999912, 0.13975000000000115, 0.07000000000000028, 0.14250000000000007, -0.03324999999999889, -0.009000000000000341, -0.005749999999999034, 0.009000000000000341, 0.07600000000000051, 0.12025000000000041, -0.054499999999999105, 0.08499999999999908, -0.2557500000000008, -0.28800000000000026, -0.07500000000000107, 0.06874999999999964, 0.08050000000000068, 0.16499999999999915, 0.0852499999999985, 0.043499999999998096, 0.06374999999999886, -0.3947499999999984, 0.055749999999999744, 0.05699999999999861, 0.18399999999999928, 0.18374999999999986, 0.22850000000000037, 0.2549999999999999, 0.21800000000000175, -0.3199999999999985, 0.11650000000000027, 0.13974999999999937], zp_timestamp='2025-11-03T22:18:00')
2025-11-04T00:21:25.081 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:21:25.092 [DEBUG] [Thread-125258] [transport.py] [_log()] starting thread (client mode): 0x11763f10
2025-11-04T00:21:25.092 [DEBUG] [Thread-125258] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:21:25.107 [DEBUG] [Thread-125258] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:21:25.108 [INFO] [Thread-125258] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:21:25.117 [DEBUG] [Thread-125258] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:21:25.117 [DEBUG] [Thread-125258] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:21:25.117 [DEBUG] [Thread-125258] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:21:25.117 [DEBUG] [Thread-125258] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:21:25.117 [DEBUG] [Thread-125258] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:21:25.117 [DEBUG] [Thread-125258] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:21:25.117 [DEBUG] [Thread-125258] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:21:25.117 [DEBUG] [Thread-125258] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:21:25.117 [DEBUG] [Thread-125258] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:21:25.117 [DEBUG] [Thread-125258] [transport.py] [_log()] client lang: <none>
2025-11-04T00:21:25.117 [DEBUG] [Thread-125258] [transport.py] [_log()] server lang: <none>
2025-11-04T00:21:25.117 [DEBUG] [Thread-125258] [transport.py] [_log()] kex follows: False
2025-11-04T00:21:25.117 [DEBUG] [Thread-125258] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:21:25.117 [DEBUG] [Thread-125258] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:21:25.117 [DEBUG] [Thread-125258] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:21:25.117 [DEBUG] [Thread-125258] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:21:25.117 [DEBUG] [Thread-125258] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:21:25.117 [DEBUG] [Thread-125258] [transport.py] [_log()] Compression: none
2025-11-04T00:21:25.117 [DEBUG] [Thread-125258] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:21:25.180 [DEBUG] [Thread-125258] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:21:25.180 [DEBUG] [Thread-125258] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:21:25.180 [DEBUG] [Thread-125258] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:21:25.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:21:25.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:21:25.245 [DEBUG] [Thread-125258] [transport.py] [_log()] userauth is OK
2025-11-04T00:21:25.245 [DEBUG] [Thread-125258] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:21:25.245 [DEBUG] [Thread-125258] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:21:25.245 [DEBUG] [Thread-125258] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:21:25.245 [DEBUG] [Thread-125258] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:21:25.260 [INFO] [Thread-125258] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:21:25.269 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:21:25.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:21:26.097 [DEBUG] [Thread-125258] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:21:26.097 [DEBUG] [Thread-125258] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:21:26.145 [DEBUG] [Thread-125258] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:21:26.145 [DEBUG] [Thread-125258] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:21:26.156 [DEBUG] [Thread-125258] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:21:26.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:21:26.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:21:26.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:21:26.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:21:26.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:21:26.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:21:26.227 [DEBUG] [Thread-125258] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:21:33.329 [DEBUG] [Thread-125260 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:21:34.011 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:21:38.388 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:21:45.337 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:21:48.508 [DEBUG] [Thread-125261 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:21:49.723 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:21:56.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:21:56.255 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:21:56.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:21:59.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 21, 47), 28.96, 12.68, 0.0, 15.05, 18.38, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:21:59.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:21:47
2025-11-04T00:21:59.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:21:59.753 [DEBUG] [Thread-125262] [transport.py] [_log()] starting thread (client mode): 0x117618d0
2025-11-04T00:21:59.754 [DEBUG] [Thread-125262] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:21:59.759 [DEBUG] [Thread-125262] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:21:59.759 [INFO] [Thread-125262] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:21:59.763 [DEBUG] [Thread-125262] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:21:59.763 [DEBUG] [Thread-125262] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:21:59.763 [DEBUG] [Thread-125262] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:21:59.763 [DEBUG] [Thread-125262] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:21:59.763 [DEBUG] [Thread-125262] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:21:59.763 [DEBUG] [Thread-125262] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:21:59.763 [DEBUG] [Thread-125262] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:21:59.763 [DEBUG] [Thread-125262] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:21:59.763 [DEBUG] [Thread-125262] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:21:59.763 [DEBUG] [Thread-125262] [transport.py] [_log()] client lang: <none>
2025-11-04T00:21:59.763 [DEBUG] [Thread-125262] [transport.py] [_log()] server lang: <none>
2025-11-04T00:21:59.763 [DEBUG] [Thread-125262] [transport.py] [_log()] kex follows: False
2025-11-04T00:21:59.763 [DEBUG] [Thread-125262] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:21:59.764 [DEBUG] [Thread-125262] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:21:59.764 [DEBUG] [Thread-125262] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:21:59.764 [DEBUG] [Thread-125262] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:21:59.764 [DEBUG] [Thread-125262] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:21:59.764 [DEBUG] [Thread-125262] [transport.py] [_log()] Compression: none
2025-11-04T00:21:59.764 [DEBUG] [Thread-125262] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:21:59.790 [DEBUG] [Thread-125262] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:21:59.793 [DEBUG] [Thread-125262] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:21:59.794 [DEBUG] [Thread-125262] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:21:59.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:21:59.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:21:59.832 [DEBUG] [Thread-125262] [transport.py] [_log()] userauth is OK
2025-11-04T00:21:59.832 [DEBUG] [Thread-125262] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:21:59.833 [DEBUG] [Thread-125262] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:21:59.833 [DEBUG] [Thread-125262] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:21:59.833 [DEBUG] [Thread-125262] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:21:59.851 [INFO] [Thread-125262] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:21:59.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:22:00.624 [DEBUG] [Thread-125262] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:22:00.625 [DEBUG] [Thread-125262] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:22:00.625 [DEBUG] [Thread-125262] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:22:00.666 [DEBUG] [Thread-125262] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:22:00.666 [DEBUG] [Thread-125262] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:22:00.668 [DEBUG] [Thread-125262] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:22:00.680 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:22:00.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:22:00.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:22:00.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:22:00.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:22:00.688 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:22:00.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:22:00.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:22:00.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:22:00.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.931349 -999.00  +18.50  11.70     18   -6.10 1 1 1 1 1     0    0 24.31 -15.30 ZNESW 14.2 11.7 309.5 16.1 18.9 -24.9 18.8 -24.0 18.6 -23.3 18.8 -24.6
2025-11-04T00:22:00.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:22:00.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:22:00.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.931349
2025-11-04T00:22:00.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:22:00.694 [DEBUG] [Thread-125262] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:22:00.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:22:00.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:22:00.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:22:00.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:22:00.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:21:47', tmtdew=28.96, humidity=12.68, cloud=0.0, wind=15.05, temperature=18.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-03T23:25:08', seeing=1.05, atlas_timestamp='2025-11-03T22:21:08.554', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.03974999999999973, 0.1152500000000014, 0.06649999999999956, -0.01249999999999929, -0.0037499999999983658, -0.10850000000000115, 0.019750000000000156, -0.013500000000000512, 0.06700000000000017, 0.14124999999999943, 0.028999999999999915, 0.1349999999999998, -0.22025000000000183, -0.12600000000000122, 0.014999999999998792, 0.10224999999999973, 0.07049999999999912, 0.16350000000000087, 0.15174999999999983, 0.1319999999999979, -0.008250000000002089, -0.332749999999999, 0.015750000000000597, 0.04499999999999993, 0.1429999999999989, 0.18625000000000114, 0.2215000000000007, 0.2965, 0.2500000000000018, -0.07099999999999973, 0.09700000000000131, 0.13674999999999926], zp_timestamp='2025-11-03T22:20:00')
2025-11-04T00:22:00.773 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:22:00.786 [DEBUG] [Thread-125265] [transport.py] [_log()] starting thread (client mode): 0x11763490
2025-11-04T00:22:00.786 [DEBUG] [Thread-125265] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:22:00.804 [DEBUG] [Thread-125265] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:22:00.804 [INFO] [Thread-125265] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:22:00.812 [DEBUG] [Thread-125265] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:22:00.812 [DEBUG] [Thread-125265] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:22:00.812 [DEBUG] [Thread-125265] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:22:00.812 [DEBUG] [Thread-125265] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:22:00.812 [DEBUG] [Thread-125265] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:22:00.812 [DEBUG] [Thread-125265] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:22:00.813 [DEBUG] [Thread-125265] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:22:00.813 [DEBUG] [Thread-125265] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:22:00.813 [DEBUG] [Thread-125265] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:22:00.813 [DEBUG] [Thread-125265] [transport.py] [_log()] client lang: <none>
2025-11-04T00:22:00.813 [DEBUG] [Thread-125265] [transport.py] [_log()] server lang: <none>
2025-11-04T00:22:00.813 [DEBUG] [Thread-125265] [transport.py] [_log()] kex follows: False
2025-11-04T00:22:00.813 [DEBUG] [Thread-125265] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:22:00.813 [DEBUG] [Thread-125265] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:22:00.813 [DEBUG] [Thread-125265] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:22:00.813 [DEBUG] [Thread-125265] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:22:00.813 [DEBUG] [Thread-125265] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:22:00.813 [DEBUG] [Thread-125265] [transport.py] [_log()] Compression: none
2025-11-04T00:22:00.813 [DEBUG] [Thread-125265] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:22:00.871 [DEBUG] [Thread-125265] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:22:00.871 [DEBUG] [Thread-125265] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:22:00.871 [DEBUG] [Thread-125265] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:22:00.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:22:00.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:22:00.929 [DEBUG] [Thread-125265] [transport.py] [_log()] userauth is OK
2025-11-04T00:22:00.929 [DEBUG] [Thread-125265] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:22:00.929 [DEBUG] [Thread-125265] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:22:00.929 [DEBUG] [Thread-125265] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:22:00.929 [DEBUG] [Thread-125265] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:22:00.943 [INFO] [Thread-125265] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:22:00.943 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:22:00.943 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:22:01.799 [DEBUG] [Thread-125265] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:22:01.799 [DEBUG] [Thread-125265] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:22:01.848 [DEBUG] [Thread-125265] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:22:01.848 [DEBUG] [Thread-125265] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:22:01.856 [DEBUG] [Thread-125265] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:22:01.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:22:01.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:22:01.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:22:01.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:22:01.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:22:01.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:22:01.890 [DEBUG] [Thread-125265] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:22:03.533 [DEBUG] [Thread-125267 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:22:06.247 [DEBUG] [Thread-125268 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:22:17.690 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:22:17.692 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:22:18.605 [DEBUG] [Thread-125269 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:22:31.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:22:31.922 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:22:31.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:22:32.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 22, 20), 28.96, 12.68, 0.0, 14.61, 18.38, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:22:32.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:22:20
2025-11-04T00:22:32.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:22:33.012 [DEBUG] [Thread-125270] [transport.py] [_log()] starting thread (client mode): 0xed18e50
2025-11-04T00:22:33.013 [DEBUG] [Thread-125270] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:22:33.029 [DEBUG] [Thread-125270] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:22:33.029 [INFO] [Thread-125270] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:22:33.032 [DEBUG] [Thread-125270] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:22:33.033 [DEBUG] [Thread-125270] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:22:33.033 [DEBUG] [Thread-125270] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:22:33.033 [DEBUG] [Thread-125270] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:22:33.033 [DEBUG] [Thread-125270] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:22:33.033 [DEBUG] [Thread-125270] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:22:33.033 [DEBUG] [Thread-125270] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:22:33.033 [DEBUG] [Thread-125270] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:22:33.033 [DEBUG] [Thread-125270] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:22:33.033 [DEBUG] [Thread-125270] [transport.py] [_log()] client lang: <none>
2025-11-04T00:22:33.033 [DEBUG] [Thread-125270] [transport.py] [_log()] server lang: <none>
2025-11-04T00:22:33.033 [DEBUG] [Thread-125270] [transport.py] [_log()] kex follows: False
2025-11-04T00:22:33.033 [DEBUG] [Thread-125270] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:22:33.034 [DEBUG] [Thread-125270] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:22:33.034 [DEBUG] [Thread-125270] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:22:33.035 [DEBUG] [Thread-125270] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:22:33.035 [DEBUG] [Thread-125270] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:22:33.035 [DEBUG] [Thread-125270] [transport.py] [_log()] Compression: none
2025-11-04T00:22:33.035 [DEBUG] [Thread-125270] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:22:33.064 [DEBUG] [Thread-125270] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:22:33.067 [DEBUG] [Thread-125270] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:22:33.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:22:33.069 [DEBUG] [Thread-125270] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:22:33.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:22:33.109 [DEBUG] [Thread-125270] [transport.py] [_log()] userauth is OK
2025-11-04T00:22:33.110 [DEBUG] [Thread-125270] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:22:33.110 [DEBUG] [Thread-125270] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:22:33.110 [DEBUG] [Thread-125270] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:22:33.110 [DEBUG] [Thread-125270] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:22:33.139 [INFO] [Thread-125270] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:22:33.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:22:33.640 [DEBUG] [Thread-125272 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:22:33.786 [DEBUG] [Thread-125270] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:22:33.795 [DEBUG] [Thread-125270] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:22:33.795 [DEBUG] [Thread-125270] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:22:33.828 [DEBUG] [Thread-125270] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:22:33.828 [DEBUG] [Thread-125270] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:22:33.830 [DEBUG] [Thread-125270] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:22:33.842 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:22:33.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:22:33.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:22:33.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:22:33.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:22:33.850 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:22:33.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:22:33.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:22:33.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:22:33.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.931696 -999.00  +18.50  12.62     18   -6.10 1 1 1 1 1     0    0 24.44 -17.83 ZNESW 13.4 12.6 306.4 16.8 18.9 -25.0 18.8 -24.0 18.5 -23.6 18.8 -24.6
2025-11-04T00:22:33.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:22:33.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:22:33.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.931696
2025-11-04T00:22:33.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:22:33.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:22:33.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:22:33.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:22:33.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:22:33.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:22:20', tmtdew=28.96, humidity=12.68, cloud=0.0, wind=14.61, temperature=18.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:22:20', seeing=0.94, atlas_timestamp='2025-11-03T22:21:38.534', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.03974999999999973, 0.1152500000000014, 0.06649999999999956, -0.01249999999999929, -0.0037499999999983658, -0.10850000000000115, 0.019750000000000156, -0.013500000000000512, 0.06700000000000017, 0.14124999999999943, 0.028999999999999915, 0.1349999999999998, -0.22025000000000183, -0.12600000000000122, 0.014999999999998792, 0.10224999999999973, 0.07049999999999912, 0.16350000000000087, 0.15174999999999983, 0.1319999999999979, -0.008250000000002089, -0.332749999999999, 0.015750000000000597, 0.04499999999999993, 0.1429999999999989, 0.18625000000000114, 0.2215000000000007, 0.2965, 0.2500000000000018, -0.07099999999999973, 0.09700000000000131, 0.13674999999999926], zp_timestamp='2025-11-03T22:20:00')
2025-11-04T00:22:33.852 [DEBUG] [Thread-125270] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:22:33.924 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:22:33.938 [DEBUG] [Thread-125274] [transport.py] [_log()] starting thread (client mode): 0x117ead70
2025-11-04T00:22:33.938 [DEBUG] [Thread-125274] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:22:33.954 [DEBUG] [Thread-125274] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:22:33.955 [INFO] [Thread-125274] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:22:33.962 [DEBUG] [Thread-125274] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:22:33.963 [DEBUG] [Thread-125274] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:22:33.963 [DEBUG] [Thread-125274] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:22:33.963 [DEBUG] [Thread-125274] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:22:33.963 [DEBUG] [Thread-125274] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:22:33.963 [DEBUG] [Thread-125274] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:22:33.963 [DEBUG] [Thread-125274] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:22:33.963 [DEBUG] [Thread-125274] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:22:33.963 [DEBUG] [Thread-125274] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:22:33.963 [DEBUG] [Thread-125274] [transport.py] [_log()] client lang: <none>
2025-11-04T00:22:33.963 [DEBUG] [Thread-125274] [transport.py] [_log()] server lang: <none>
2025-11-04T00:22:33.963 [DEBUG] [Thread-125274] [transport.py] [_log()] kex follows: False
2025-11-04T00:22:33.963 [DEBUG] [Thread-125274] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:22:33.963 [DEBUG] [Thread-125274] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:22:33.964 [DEBUG] [Thread-125274] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:22:33.964 [DEBUG] [Thread-125274] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:22:33.964 [DEBUG] [Thread-125274] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:22:33.964 [DEBUG] [Thread-125274] [transport.py] [_log()] Compression: none
2025-11-04T00:22:33.964 [DEBUG] [Thread-125274] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:22:34.021 [DEBUG] [Thread-125274] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:22:34.022 [DEBUG] [Thread-125274] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:22:34.022 [DEBUG] [Thread-125274] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:22:34.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:22:34.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:22:34.079 [DEBUG] [Thread-125274] [transport.py] [_log()] userauth is OK
2025-11-04T00:22:34.080 [DEBUG] [Thread-125274] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:22:34.080 [DEBUG] [Thread-125274] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:22:34.080 [DEBUG] [Thread-125274] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:22:34.080 [DEBUG] [Thread-125274] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:22:34.105 [INFO] [Thread-125274] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:22:34.114 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:22:34.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:22:34.948 [DEBUG] [Thread-125274] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:22:34.948 [DEBUG] [Thread-125274] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:22:34.999 [DEBUG] [Thread-125274] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:22:34.999 [DEBUG] [Thread-125274] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:22:35.011 [DEBUG] [Thread-125274] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:22:35.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:22:35.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:22:35.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:22:35.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:22:35.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:22:35.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:22:35.068 [DEBUG] [Thread-125274] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:22:48.669 [DEBUG] [Thread-125276 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:22:53.105 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:22:56.165 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:23:03.766 [DEBUG] [Thread-125277 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:23:05.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:23:05.088 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:23:05.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:23:07.317 [DEBUG] [Thread-125278 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:23:08.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 22, 52), 28.98, 12.71, 0.0, 13.18, 18.42, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:23:08.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:22:52
2025-11-04T00:23:09.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:23:09.380 [DEBUG] [Thread-125279] [transport.py] [_log()] starting thread (client mode): 0xed426e0
2025-11-04T00:23:09.380 [DEBUG] [Thread-125279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:23:09.392 [DEBUG] [Thread-125279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:23:09.392 [INFO] [Thread-125279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:23:09.395 [DEBUG] [Thread-125279] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:23:09.395 [DEBUG] [Thread-125279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:23:09.395 [DEBUG] [Thread-125279] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:23:09.396 [DEBUG] [Thread-125279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:23:09.396 [DEBUG] [Thread-125279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:23:09.396 [DEBUG] [Thread-125279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:23:09.396 [DEBUG] [Thread-125279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:23:09.396 [DEBUG] [Thread-125279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:23:09.396 [DEBUG] [Thread-125279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:23:09.396 [DEBUG] [Thread-125279] [transport.py] [_log()] client lang: <none>
2025-11-04T00:23:09.396 [DEBUG] [Thread-125279] [transport.py] [_log()] server lang: <none>
2025-11-04T00:23:09.397 [DEBUG] [Thread-125279] [transport.py] [_log()] kex follows: False
2025-11-04T00:23:09.398 [DEBUG] [Thread-125279] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:23:09.402 [DEBUG] [Thread-125279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:23:09.402 [DEBUG] [Thread-125279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:23:09.402 [DEBUG] [Thread-125279] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:23:09.402 [DEBUG] [Thread-125279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:23:09.402 [DEBUG] [Thread-125279] [transport.py] [_log()] Compression: none
2025-11-04T00:23:09.402 [DEBUG] [Thread-125279] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:23:09.456 [DEBUG] [Thread-125279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:23:09.484 [DEBUG] [Thread-125279] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:23:09.485 [DEBUG] [Thread-125279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:23:09.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:23:09.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:23:09.489 [DEBUG] [Thread-125279] [transport.py] [_log()] userauth is OK
2025-11-04T00:23:09.489 [DEBUG] [Thread-125279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:23:09.489 [DEBUG] [Thread-125279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:23:09.489 [DEBUG] [Thread-125279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:23:09.489 [DEBUG] [Thread-125279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:23:09.522 [INFO] [Thread-125279] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:23:09.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:23:10.174 [DEBUG] [Thread-125279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:23:10.175 [DEBUG] [Thread-125279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:23:10.177 [DEBUG] [Thread-125279] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:23:10.215 [DEBUG] [Thread-125279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:23:10.216 [DEBUG] [Thread-125279] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:23:10.219 [DEBUG] [Thread-125279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:23:10.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:23:10.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:23:10.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:23:10.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:23:10.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:23:10.241 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:23:10.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:23:10.241 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:23:10.244 [DEBUG] [Thread-125279] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:23:10.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:23:10.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.932043 -999.00  +18.50  13.42     18   -6.10 1 1 1 1 1     0    0 24.34 -21.78 ZNESW 11.2 13.4 304.0 15.4 18.9 -25.0 18.7 -24.0 18.5 -23.6 18.8 -24.6
2025-11-04T00:23:10.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:23:10.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:23:10.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.932043
2025-11-04T00:23:10.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:23:10.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:23:10.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:23:10.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:23:10.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:23:10.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:22:52', tmtdew=28.98, humidity=12.71, cloud=0.0, wind=13.18, temperature=18.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:22:53', seeing=0.89, atlas_timestamp='2025-11-03T22:22:08.515', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.03974999999999973, 0.1152500000000014, 0.06649999999999956, -0.01249999999999929, -0.0037499999999983658, -0.10850000000000115, 0.019750000000000156, -0.013500000000000512, 0.06700000000000017, 0.14124999999999943, 0.028999999999999915, 0.1349999999999998, -0.22025000000000183, -0.12600000000000122, 0.014999999999998792, 0.10224999999999973, 0.07049999999999912, 0.16350000000000087, 0.15174999999999983, 0.1319999999999979, -0.008250000000002089, -0.332749999999999, 0.015750000000000597, 0.04499999999999993, 0.1429999999999989, 0.18625000000000114, 0.2215000000000007, 0.2965, 0.2500000000000018, -0.07099999999999973, 0.09700000000000131, 0.13674999999999926], zp_timestamp='2025-11-03T22:20:00')
2025-11-04T00:23:10.449 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:23:10.462 [DEBUG] [Thread-125282] [transport.py] [_log()] starting thread (client mode): 0x1174cd60
2025-11-04T00:23:10.462 [DEBUG] [Thread-125282] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:23:10.477 [DEBUG] [Thread-125282] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:23:10.477 [INFO] [Thread-125282] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:23:10.485 [DEBUG] [Thread-125282] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:23:10.485 [DEBUG] [Thread-125282] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:23:10.485 [DEBUG] [Thread-125282] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:23:10.485 [DEBUG] [Thread-125282] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:23:10.485 [DEBUG] [Thread-125282] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:23:10.485 [DEBUG] [Thread-125282] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:23:10.485 [DEBUG] [Thread-125282] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:23:10.485 [DEBUG] [Thread-125282] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:23:10.485 [DEBUG] [Thread-125282] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:23:10.485 [DEBUG] [Thread-125282] [transport.py] [_log()] client lang: <none>
2025-11-04T00:23:10.485 [DEBUG] [Thread-125282] [transport.py] [_log()] server lang: <none>
2025-11-04T00:23:10.485 [DEBUG] [Thread-125282] [transport.py] [_log()] kex follows: False
2025-11-04T00:23:10.485 [DEBUG] [Thread-125282] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:23:10.485 [DEBUG] [Thread-125282] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:23:10.485 [DEBUG] [Thread-125282] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:23:10.486 [DEBUG] [Thread-125282] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:23:10.487 [DEBUG] [Thread-125282] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:23:10.487 [DEBUG] [Thread-125282] [transport.py] [_log()] Compression: none
2025-11-04T00:23:10.487 [DEBUG] [Thread-125282] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:23:10.543 [DEBUG] [Thread-125282] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:23:10.543 [DEBUG] [Thread-125282] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:23:10.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:23:10.544 [DEBUG] [Thread-125282] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:23:10.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:23:10.601 [DEBUG] [Thread-125282] [transport.py] [_log()] userauth is OK
2025-11-04T00:23:10.601 [DEBUG] [Thread-125282] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:23:10.601 [DEBUG] [Thread-125282] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:23:10.601 [DEBUG] [Thread-125282] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:23:10.601 [DEBUG] [Thread-125282] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:23:10.615 [INFO] [Thread-125282] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:23:10.615 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:23:10.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:23:11.447 [DEBUG] [Thread-125282] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:23:11.448 [DEBUG] [Thread-125282] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:23:11.495 [DEBUG] [Thread-125282] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:23:11.495 [DEBUG] [Thread-125282] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:23:11.504 [DEBUG] [Thread-125282] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:23:11.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:23:11.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:23:11.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:23:11.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:23:11.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:23:11.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:23:11.536 [DEBUG] [Thread-125282] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:23:17.894 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:23:17.895 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:23:18.799 [DEBUG] [Thread-125284 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:23:33.835 [DEBUG] [Thread-125285 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:23:41.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:23:41.559 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:23:41.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:23:42.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 23, 27), 28.96, 12.71, 0.0, 13.23, 18.33, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:23:42.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:23:27
2025-11-04T00:23:42.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:23:42.602 [DEBUG] [Thread-125286] [transport.py] [_log()] starting thread (client mode): 0x1174f250
2025-11-04T00:23:42.602 [DEBUG] [Thread-125286] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:23:42.621 [DEBUG] [Thread-125286] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:23:42.621 [INFO] [Thread-125286] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:23:42.626 [DEBUG] [Thread-125286] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:23:42.626 [DEBUG] [Thread-125286] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:23:42.626 [DEBUG] [Thread-125286] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:23:42.626 [DEBUG] [Thread-125286] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:23:42.626 [DEBUG] [Thread-125286] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:23:42.626 [DEBUG] [Thread-125286] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:23:42.626 [DEBUG] [Thread-125286] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:23:42.626 [DEBUG] [Thread-125286] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:23:42.626 [DEBUG] [Thread-125286] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:23:42.626 [DEBUG] [Thread-125286] [transport.py] [_log()] client lang: <none>
2025-11-04T00:23:42.626 [DEBUG] [Thread-125286] [transport.py] [_log()] server lang: <none>
2025-11-04T00:23:42.626 [DEBUG] [Thread-125286] [transport.py] [_log()] kex follows: False
2025-11-04T00:23:42.626 [DEBUG] [Thread-125286] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:23:42.627 [DEBUG] [Thread-125286] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:23:42.627 [DEBUG] [Thread-125286] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:23:42.627 [DEBUG] [Thread-125286] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:23:42.627 [DEBUG] [Thread-125286] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:23:42.627 [DEBUG] [Thread-125286] [transport.py] [_log()] Compression: none
2025-11-04T00:23:42.627 [DEBUG] [Thread-125286] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:23:42.647 [DEBUG] [Thread-125286] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:23:42.647 [DEBUG] [Thread-125286] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:23:42.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:23:42.648 [DEBUG] [Thread-125286] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:23:42.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:23:42.651 [DEBUG] [Thread-125286] [transport.py] [_log()] userauth is OK
2025-11-04T00:23:42.651 [DEBUG] [Thread-125286] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:23:42.651 [DEBUG] [Thread-125286] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:23:42.652 [DEBUG] [Thread-125286] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:23:42.652 [DEBUG] [Thread-125286] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:23:42.672 [INFO] [Thread-125286] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:23:42.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:23:43.310 [DEBUG] [Thread-125286] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:23:43.310 [DEBUG] [Thread-125286] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:23:43.311 [DEBUG] [Thread-125286] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:23:43.351 [DEBUG] [Thread-125286] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:23:43.351 [DEBUG] [Thread-125286] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:23:43.354 [DEBUG] [Thread-125286] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:23:43.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:23:43.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:23:43.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:23:43.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:23:43.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:23:43.373 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:23:43.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:23:43.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:23:43.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:23:43.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.932738 -999.00  +18.40  12.90     18   -6.10 1 1 1 1 1     0    0 23.79 -23.56 ZNESW 13.2 12.9 314.6 15.0 18.8 -25.0 18.7 -24.0 18.5 -23.8 18.8 -24.6
2025-11-04T00:23:43.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:23:43.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:23:43.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.932738
2025-11-04T00:23:43.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:23:43.375 [DEBUG] [Thread-125286] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:23:43.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:23:43.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:23:43.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:23:43.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:23:43.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:23:27', tmtdew=28.96, humidity=12.71, cloud=0.0, wind=13.23, temperature=18.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:23:28', seeing=0.89, atlas_timestamp='2025-11-03T22:23:08.563', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.03974999999999973, 0.1152500000000014, 0.06649999999999956, -0.01249999999999929, -0.0037499999999983658, -0.10850000000000115, 0.019750000000000156, -0.013500000000000512, 0.06700000000000017, 0.14124999999999943, 0.028999999999999915, 0.1349999999999998, -0.22025000000000183, -0.12600000000000122, 0.014999999999998792, 0.10224999999999973, 0.07049999999999912, 0.16350000000000087, 0.15174999999999983, 0.1319999999999979, -0.008250000000002089, -0.332749999999999, 0.015750000000000597, 0.04499999999999993, 0.1429999999999989, 0.18625000000000114, 0.2215000000000007, 0.2965, 0.2500000000000018, -0.07099999999999973, 0.09700000000000131, 0.13674999999999926], zp_timestamp='2025-11-03T22:20:00')
2025-11-04T00:23:43.466 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:23:43.480 [DEBUG] [Thread-125289] [transport.py] [_log()] starting thread (client mode): 0x11763490
2025-11-04T00:23:43.481 [DEBUG] [Thread-125289] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:23:43.498 [DEBUG] [Thread-125289] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:23:43.499 [INFO] [Thread-125289] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:23:43.507 [DEBUG] [Thread-125289] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:23:43.507 [DEBUG] [Thread-125289] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:23:43.507 [DEBUG] [Thread-125289] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:23:43.507 [DEBUG] [Thread-125289] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:23:43.507 [DEBUG] [Thread-125289] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:23:43.507 [DEBUG] [Thread-125289] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:23:43.507 [DEBUG] [Thread-125289] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:23:43.507 [DEBUG] [Thread-125289] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:23:43.507 [DEBUG] [Thread-125289] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:23:43.507 [DEBUG] [Thread-125289] [transport.py] [_log()] client lang: <none>
2025-11-04T00:23:43.507 [DEBUG] [Thread-125289] [transport.py] [_log()] server lang: <none>
2025-11-04T00:23:43.507 [DEBUG] [Thread-125289] [transport.py] [_log()] kex follows: False
2025-11-04T00:23:43.507 [DEBUG] [Thread-125289] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:23:43.507 [DEBUG] [Thread-125289] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:23:43.507 [DEBUG] [Thread-125289] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:23:43.507 [DEBUG] [Thread-125289] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:23:43.507 [DEBUG] [Thread-125289] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:23:43.507 [DEBUG] [Thread-125289] [transport.py] [_log()] Compression: none
2025-11-04T00:23:43.507 [DEBUG] [Thread-125289] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:23:43.565 [DEBUG] [Thread-125289] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:23:43.565 [DEBUG] [Thread-125289] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:23:43.565 [DEBUG] [Thread-125289] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:23:43.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:23:43.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:23:43.623 [DEBUG] [Thread-125289] [transport.py] [_log()] userauth is OK
2025-11-04T00:23:43.624 [DEBUG] [Thread-125289] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:23:43.624 [DEBUG] [Thread-125289] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:23:43.624 [DEBUG] [Thread-125289] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:23:43.624 [DEBUG] [Thread-125289] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:23:43.638 [INFO] [Thread-125289] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:23:43.638 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:23:43.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:23:44.482 [DEBUG] [Thread-125289] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:23:44.483 [DEBUG] [Thread-125289] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:23:44.532 [DEBUG] [Thread-125289] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:23:44.532 [DEBUG] [Thread-125289] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:23:44.543 [DEBUG] [Thread-125289] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:23:44.555 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:23:44.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:23:44.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:23:44.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:23:44.576 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:23:44.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:23:44.586 [DEBUG] [Thread-125289] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:23:48.873 [DEBUG] [Thread-125291 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:24:03.932 [DEBUG] [Thread-125292 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:24:08.624 [DEBUG] [Thread-125293 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:24:14.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:24:14.594 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:24:14.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:24:15.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 23, 27), 28.96, 12.71, 0.0, 13.23, 18.33, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:24:15.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:23:27
2025-11-04T00:24:15.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:24:15.696 [DEBUG] [Thread-125294] [transport.py] [_log()] starting thread (client mode): 0x1174d780
2025-11-04T00:24:15.697 [DEBUG] [Thread-125294] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:24:15.710 [DEBUG] [Thread-125294] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:24:15.710 [INFO] [Thread-125294] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:24:15.715 [DEBUG] [Thread-125294] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:24:15.715 [DEBUG] [Thread-125294] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:24:15.715 [DEBUG] [Thread-125294] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:24:15.715 [DEBUG] [Thread-125294] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:24:15.715 [DEBUG] [Thread-125294] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:24:15.715 [DEBUG] [Thread-125294] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:24:15.715 [DEBUG] [Thread-125294] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:24:15.715 [DEBUG] [Thread-125294] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:24:15.715 [DEBUG] [Thread-125294] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:24:15.715 [DEBUG] [Thread-125294] [transport.py] [_log()] client lang: <none>
2025-11-04T00:24:15.715 [DEBUG] [Thread-125294] [transport.py] [_log()] server lang: <none>
2025-11-04T00:24:15.715 [DEBUG] [Thread-125294] [transport.py] [_log()] kex follows: False
2025-11-04T00:24:15.715 [DEBUG] [Thread-125294] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:24:15.716 [DEBUG] [Thread-125294] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:24:15.716 [DEBUG] [Thread-125294] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:24:15.716 [DEBUG] [Thread-125294] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:24:15.717 [DEBUG] [Thread-125294] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:24:15.717 [DEBUG] [Thread-125294] [transport.py] [_log()] Compression: none
2025-11-04T00:24:15.717 [DEBUG] [Thread-125294] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:24:15.754 [DEBUG] [Thread-125294] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:24:15.761 [DEBUG] [Thread-125294] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:24:15.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:24:15.765 [DEBUG] [Thread-125294] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:24:15.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:24:15.768 [DEBUG] [Thread-125294] [transport.py] [_log()] userauth is OK
2025-11-04T00:24:15.768 [DEBUG] [Thread-125294] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:24:15.769 [DEBUG] [Thread-125294] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:24:15.769 [DEBUG] [Thread-125294] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:24:15.769 [DEBUG] [Thread-125294] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:24:15.791 [INFO] [Thread-125294] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:24:15.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:24:16.447 [DEBUG] [Thread-125294] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:24:16.448 [DEBUG] [Thread-125294] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:24:16.450 [DEBUG] [Thread-125294] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:24:16.489 [DEBUG] [Thread-125294] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:24:16.489 [DEBUG] [Thread-125294] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:24:16.493 [DEBUG] [Thread-125294] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:24:16.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:24:16.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:24:16.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:24:16.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:24:16.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:24:16.519 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:24:16.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:24:16.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:24:16.522 [DEBUG] [Thread-125294] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:24:16.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:24:16.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.933085 -999.00  +18.40  11.68     18   -6.10 1 1 1 1 1     0    0 24.08 -26.35 ZNESW 12.5 11.7 305.6 14.8 18.8 -24.9 18.7 -24.0 18.5 -23.6 18.8 -24.6
2025-11-04T00:24:16.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:24:16.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:24:16.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.933085
2025-11-04T00:24:16.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:24:16.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:24:16.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:24:16.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:24:16.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:24:16.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:23:27', tmtdew=28.96, humidity=12.71, cloud=0.0, wind=13.23, temperature=18.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:24:01', seeing=1.01, atlas_timestamp='2025-11-03T22:23:38.544', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.03974999999999973, 0.1152500000000014, 0.06649999999999956, -0.01249999999999929, -0.0037499999999983658, -0.10850000000000115, 0.019750000000000156, -0.013500000000000512, 0.06700000000000017, 0.14124999999999943, 0.028999999999999915, 0.1349999999999998, -0.22025000000000183, -0.12600000000000122, 0.014999999999998792, 0.10224999999999973, 0.07049999999999912, 0.16350000000000087, 0.15174999999999983, 0.1319999999999979, -0.008250000000002089, -0.332749999999999, 0.015750000000000597, 0.04499999999999993, 0.1429999999999989, 0.18625000000000114, 0.2215000000000007, 0.2965, 0.2500000000000018, -0.07099999999999973, 0.09700000000000131, 0.13674999999999926], zp_timestamp='2025-11-03T22:20:00')
2025-11-04T00:24:16.631 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:24:16.647 [DEBUG] [Thread-125297] [transport.py] [_log()] starting thread (client mode): 0xed18970
2025-11-04T00:24:16.647 [DEBUG] [Thread-125297] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:24:16.663 [DEBUG] [Thread-125297] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:24:16.663 [INFO] [Thread-125297] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:24:16.673 [DEBUG] [Thread-125297] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:24:16.674 [DEBUG] [Thread-125297] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:24:16.674 [DEBUG] [Thread-125297] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:24:16.674 [DEBUG] [Thread-125297] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:24:16.674 [DEBUG] [Thread-125297] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:24:16.674 [DEBUG] [Thread-125297] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:24:16.674 [DEBUG] [Thread-125297] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:24:16.674 [DEBUG] [Thread-125297] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:24:16.674 [DEBUG] [Thread-125297] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:24:16.675 [DEBUG] [Thread-125297] [transport.py] [_log()] client lang: <none>
2025-11-04T00:24:16.675 [DEBUG] [Thread-125297] [transport.py] [_log()] server lang: <none>
2025-11-04T00:24:16.675 [DEBUG] [Thread-125297] [transport.py] [_log()] kex follows: False
2025-11-04T00:24:16.675 [DEBUG] [Thread-125297] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:24:16.675 [DEBUG] [Thread-125297] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:24:16.675 [DEBUG] [Thread-125297] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:24:16.675 [DEBUG] [Thread-125297] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:24:16.675 [DEBUG] [Thread-125297] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:24:16.676 [DEBUG] [Thread-125297] [transport.py] [_log()] Compression: none
2025-11-04T00:24:16.676 [DEBUG] [Thread-125297] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:24:16.731 [DEBUG] [Thread-125297] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:24:16.731 [DEBUG] [Thread-125297] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:24:16.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:24:16.733 [DEBUG] [Thread-125297] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:24:16.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:24:16.792 [DEBUG] [Thread-125297] [transport.py] [_log()] userauth is OK
2025-11-04T00:24:16.793 [DEBUG] [Thread-125297] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:24:16.793 [DEBUG] [Thread-125297] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:24:16.793 [DEBUG] [Thread-125297] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:24:16.793 [DEBUG] [Thread-125297] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:24:16.812 [INFO] [Thread-125297] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:24:16.813 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:24:16.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:24:17.680 [DEBUG] [Thread-125297] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:24:17.681 [DEBUG] [Thread-125297] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:24:17.730 [DEBUG] [Thread-125297] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:24:17.731 [DEBUG] [Thread-125297] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:24:17.743 [DEBUG] [Thread-125297] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:24:17.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:24:17.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:24:17.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:24:17.781 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:24:17.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:24:17.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:24:17.792 [DEBUG] [Thread-125297] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:24:18.097 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:24:18.098 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:24:18.959 [DEBUG] [Thread-125299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:24:34.038 [DEBUG] [Thread-125300 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:24:47.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:24:47.813 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:24:47.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:24:48.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 24, 36), 28.9, 13.23, 0.0, 14.96, 18.3, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:24:48.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:24:36
2025-11-04T00:24:48.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:24:48.826 [DEBUG] [Thread-125301] [transport.py] [_log()] starting thread (client mode): 0xed1bd30
2025-11-04T00:24:48.826 [DEBUG] [Thread-125301] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:24:48.846 [DEBUG] [Thread-125301] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:24:48.846 [INFO] [Thread-125301] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:24:48.849 [DEBUG] [Thread-125301] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:24:48.850 [DEBUG] [Thread-125301] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:24:48.850 [DEBUG] [Thread-125301] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:24:48.850 [DEBUG] [Thread-125301] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:24:48.850 [DEBUG] [Thread-125301] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:24:48.850 [DEBUG] [Thread-125301] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:24:48.850 [DEBUG] [Thread-125301] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:24:48.850 [DEBUG] [Thread-125301] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:24:48.850 [DEBUG] [Thread-125301] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:24:48.850 [DEBUG] [Thread-125301] [transport.py] [_log()] client lang: <none>
2025-11-04T00:24:48.850 [DEBUG] [Thread-125301] [transport.py] [_log()] server lang: <none>
2025-11-04T00:24:48.850 [DEBUG] [Thread-125301] [transport.py] [_log()] kex follows: False
2025-11-04T00:24:48.850 [DEBUG] [Thread-125301] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:24:48.850 [DEBUG] [Thread-125301] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:24:48.850 [DEBUG] [Thread-125301] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:24:48.850 [DEBUG] [Thread-125301] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:24:48.850 [DEBUG] [Thread-125301] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:24:48.850 [DEBUG] [Thread-125301] [transport.py] [_log()] Compression: none
2025-11-04T00:24:48.850 [DEBUG] [Thread-125301] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:24:48.865 [DEBUG] [Thread-125301] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:24:48.865 [DEBUG] [Thread-125301] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:24:48.866 [DEBUG] [Thread-125301] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:24:48.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:24:48.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:24:48.866 [DEBUG] [Thread-125301] [transport.py] [_log()] userauth is OK
2025-11-04T00:24:48.866 [DEBUG] [Thread-125301] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:24:48.866 [DEBUG] [Thread-125301] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:24:48.866 [DEBUG] [Thread-125301] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:24:48.866 [DEBUG] [Thread-125301] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:24:48.883 [INFO] [Thread-125301] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:24:48.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:24:49.067 [DEBUG] [Thread-125303 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:24:49.526 [DEBUG] [Thread-125301] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:24:49.527 [DEBUG] [Thread-125301] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:24:49.527 [DEBUG] [Thread-125301] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:24:49.568 [DEBUG] [Thread-125301] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:24:49.569 [DEBUG] [Thread-125301] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:24:49.571 [DEBUG] [Thread-125301] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:24:49.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:24:49.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:24:49.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:24:49.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:24:49.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:24:49.591 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:24:49.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:24:49.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:24:49.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:24:49.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.933432 -999.00  +18.40  12.46     18   -6.10 1 1 1 1 1     0    0 24.46 -28.87 ZNESW 13.5 12.5 310.4 15.3 18.8 -24.9 18.7 -23.9 18.5 -23.6 18.8 -24.6
2025-11-04T00:24:49.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:24:49.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:24:49.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.933432
2025-11-04T00:24:49.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:24:49.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:24:49.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:24:49.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:24:49.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:24:49.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:24:36', tmtdew=28.9, humidity=13.23, cloud=0.0, wind=14.96, temperature=18.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:24:37', seeing=0.93, atlas_timestamp='2025-11-03T22:24:08.525', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.03974999999999973, 0.1152500000000014, 0.06649999999999956, -0.01249999999999929, -0.0037499999999983658, -0.10850000000000115, 0.019750000000000156, -0.013500000000000512, 0.06700000000000017, 0.14124999999999943, 0.028999999999999915, 0.1349999999999998, -0.22025000000000183, -0.12600000000000122, 0.014999999999998792, 0.10224999999999973, 0.07049999999999912, 0.16350000000000087, 0.15174999999999983, 0.1319999999999979, -0.008250000000002089, -0.332749999999999, 0.015750000000000597, 0.04499999999999993, 0.1429999999999989, 0.18625000000000114, 0.2215000000000007, 0.2965, 0.2500000000000018, -0.07099999999999973, 0.09700000000000131, 0.13674999999999926], zp_timestamp='2025-11-03T22:24:00')
2025-11-04T00:24:49.592 [DEBUG] [Thread-125301] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:24:49.670 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:24:49.684 [DEBUG] [Thread-125305] [transport.py] [_log()] starting thread (client mode): 0x117e9ae0
2025-11-04T00:24:49.684 [DEBUG] [Thread-125305] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:24:49.700 [DEBUG] [Thread-125305] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:24:49.700 [INFO] [Thread-125305] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:24:49.709 [DEBUG] [Thread-125305] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:24:49.709 [DEBUG] [Thread-125305] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:24:49.709 [DEBUG] [Thread-125305] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:24:49.709 [DEBUG] [Thread-125305] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:24:49.709 [DEBUG] [Thread-125305] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:24:49.710 [DEBUG] [Thread-125305] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:24:49.710 [DEBUG] [Thread-125305] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:24:49.710 [DEBUG] [Thread-125305] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:24:49.710 [DEBUG] [Thread-125305] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:24:49.710 [DEBUG] [Thread-125305] [transport.py] [_log()] client lang: <none>
2025-11-04T00:24:49.710 [DEBUG] [Thread-125305] [transport.py] [_log()] server lang: <none>
2025-11-04T00:24:49.710 [DEBUG] [Thread-125305] [transport.py] [_log()] kex follows: False
2025-11-04T00:24:49.710 [DEBUG] [Thread-125305] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:24:49.710 [DEBUG] [Thread-125305] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:24:49.710 [DEBUG] [Thread-125305] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:24:49.710 [DEBUG] [Thread-125305] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:24:49.710 [DEBUG] [Thread-125305] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:24:49.710 [DEBUG] [Thread-125305] [transport.py] [_log()] Compression: none
2025-11-04T00:24:49.710 [DEBUG] [Thread-125305] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:24:49.773 [DEBUG] [Thread-125305] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:24:49.774 [DEBUG] [Thread-125305] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:24:49.774 [DEBUG] [Thread-125305] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:24:49.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:24:49.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:24:49.834 [DEBUG] [Thread-125305] [transport.py] [_log()] userauth is OK
2025-11-04T00:24:49.834 [DEBUG] [Thread-125305] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:24:49.834 [DEBUG] [Thread-125305] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:24:49.834 [DEBUG] [Thread-125305] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:24:49.834 [DEBUG] [Thread-125305] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:24:49.849 [INFO] [Thread-125305] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:24:49.849 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:24:49.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:24:50.680 [DEBUG] [Thread-125305] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:24:50.680 [DEBUG] [Thread-125305] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:24:50.731 [DEBUG] [Thread-125305] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:24:50.731 [DEBUG] [Thread-125305] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:24:50.741 [DEBUG] [Thread-125305] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:24:50.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:24:50.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:24:50.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:24:50.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:24:50.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:24:50.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:24:50.780 [DEBUG] [Thread-125305] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:25:04.099 [DEBUG] [Thread-125307 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:25:08.859 [DEBUG] [Thread-125308 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:25:18.304 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:25:18.306 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:25:19.194 [DEBUG] [Thread-125309 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:25:20.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:25:20.801 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:25:20.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:25:21.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 25, 9), 28.87, 13.26, 0.0, 14.82, 18.3, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:25:21.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:25:09
2025-11-04T00:25:21.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:25:21.880 [DEBUG] [Thread-125310] [transport.py] [_log()] starting thread (client mode): 0x11763340
2025-11-04T00:25:21.881 [DEBUG] [Thread-125310] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:25:21.894 [DEBUG] [Thread-125310] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:25:21.894 [INFO] [Thread-125310] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:25:21.897 [DEBUG] [Thread-125310] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:25:21.898 [DEBUG] [Thread-125310] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:25:21.898 [DEBUG] [Thread-125310] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:25:21.898 [DEBUG] [Thread-125310] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:25:21.898 [DEBUG] [Thread-125310] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:25:21.898 [DEBUG] [Thread-125310] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:25:21.898 [DEBUG] [Thread-125310] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:25:21.898 [DEBUG] [Thread-125310] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:25:21.898 [DEBUG] [Thread-125310] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:25:21.898 [DEBUG] [Thread-125310] [transport.py] [_log()] client lang: <none>
2025-11-04T00:25:21.898 [DEBUG] [Thread-125310] [transport.py] [_log()] server lang: <none>
2025-11-04T00:25:21.898 [DEBUG] [Thread-125310] [transport.py] [_log()] kex follows: False
2025-11-04T00:25:21.898 [DEBUG] [Thread-125310] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:25:21.899 [DEBUG] [Thread-125310] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:25:21.899 [DEBUG] [Thread-125310] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:25:21.900 [DEBUG] [Thread-125310] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:25:21.900 [DEBUG] [Thread-125310] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:25:21.900 [DEBUG] [Thread-125310] [transport.py] [_log()] Compression: none
2025-11-04T00:25:21.900 [DEBUG] [Thread-125310] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:25:21.932 [DEBUG] [Thread-125310] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:25:21.935 [DEBUG] [Thread-125310] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:25:21.936 [DEBUG] [Thread-125310] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:25:21.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:25:21.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:25:21.973 [DEBUG] [Thread-125310] [transport.py] [_log()] userauth is OK
2025-11-04T00:25:21.973 [DEBUG] [Thread-125310] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:25:21.974 [DEBUG] [Thread-125310] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:25:21.974 [DEBUG] [Thread-125310] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:25:21.974 [DEBUG] [Thread-125310] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:25:22.015 [INFO] [Thread-125310] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:25:22.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:25:22.799 [DEBUG] [Thread-125310] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:25:22.799 [DEBUG] [Thread-125310] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:25:22.800 [DEBUG] [Thread-125310] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:25:22.841 [DEBUG] [Thread-125310] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:25:22.841 [DEBUG] [Thread-125310] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:25:22.843 [DEBUG] [Thread-125310] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:25:22.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:25:22.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:25:22.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:25:22.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:25:22.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:25:22.867 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:25:22.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:25:22.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:25:22.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:25:22.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.933779 -999.00  +18.40  14.49     18   -6.10 1 1 1 1 1     0    0 23.90 -30.53 ZNESW 13.1 14.5 298.4 17.0 18.8 -24.9 18.6 -24.0 18.5 -23.5 18.7 -24.7
2025-11-04T00:25:22.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:25:22.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:25:22.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.933779
2025-11-04T00:25:22.874 [DEBUG] [Thread-125310] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:25:22.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:25:22.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:25:22.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:25:22.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:25:22.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:25:22.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:25:09', tmtdew=28.87, humidity=13.26, cloud=0.0, wind=14.82, temperature=18.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:25:09', seeing=0.93, atlas_timestamp='2025-11-03T22:24:38.506', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.03974999999999973, 0.1152500000000014, 0.06649999999999956, -0.01249999999999929, -0.0037499999999983658, -0.10850000000000115, 0.019750000000000156, -0.013500000000000512, 0.06700000000000017, 0.14124999999999943, 0.028999999999999915, 0.1349999999999998, -0.22025000000000183, -0.12600000000000122, 0.014999999999998792, 0.10224999999999973, 0.07049999999999912, 0.16350000000000087, 0.15174999999999983, 0.1319999999999979, -0.008250000000002089, -0.332749999999999, 0.015750000000000597, 0.04499999999999993, 0.1429999999999989, 0.18625000000000114, 0.2215000000000007, 0.2965, 0.2500000000000018, -0.07099999999999973, 0.09700000000000131, 0.13674999999999926], zp_timestamp='2025-11-03T22:24:00')
2025-11-04T00:25:22.953 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:25:22.964 [DEBUG] [Thread-125313] [transport.py] [_log()] starting thread (client mode): 0xed18790
2025-11-04T00:25:22.964 [DEBUG] [Thread-125313] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:25:22.980 [DEBUG] [Thread-125313] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:25:22.980 [INFO] [Thread-125313] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:25:22.989 [DEBUG] [Thread-125313] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:25:22.989 [DEBUG] [Thread-125313] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:25:22.989 [DEBUG] [Thread-125313] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:25:22.989 [DEBUG] [Thread-125313] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:25:22.989 [DEBUG] [Thread-125313] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:25:22.989 [DEBUG] [Thread-125313] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:25:22.990 [DEBUG] [Thread-125313] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:25:22.990 [DEBUG] [Thread-125313] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:25:22.990 [DEBUG] [Thread-125313] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:25:22.990 [DEBUG] [Thread-125313] [transport.py] [_log()] client lang: <none>
2025-11-04T00:25:22.990 [DEBUG] [Thread-125313] [transport.py] [_log()] server lang: <none>
2025-11-04T00:25:22.990 [DEBUG] [Thread-125313] [transport.py] [_log()] kex follows: False
2025-11-04T00:25:22.990 [DEBUG] [Thread-125313] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:25:22.990 [DEBUG] [Thread-125313] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:25:22.990 [DEBUG] [Thread-125313] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:25:22.990 [DEBUG] [Thread-125313] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:25:22.990 [DEBUG] [Thread-125313] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:25:22.990 [DEBUG] [Thread-125313] [transport.py] [_log()] Compression: none
2025-11-04T00:25:22.990 [DEBUG] [Thread-125313] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:25:23.053 [DEBUG] [Thread-125313] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:25:23.053 [DEBUG] [Thread-125313] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:25:23.053 [DEBUG] [Thread-125313] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:25:23.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:25:23.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:25:23.111 [DEBUG] [Thread-125313] [transport.py] [_log()] userauth is OK
2025-11-04T00:25:23.111 [DEBUG] [Thread-125313] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:25:23.111 [DEBUG] [Thread-125313] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:25:23.111 [DEBUG] [Thread-125313] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:25:23.111 [DEBUG] [Thread-125313] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:25:23.128 [INFO] [Thread-125313] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:25:23.133 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:25:23.141 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:25:23.996 [DEBUG] [Thread-125313] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:25:23.997 [DEBUG] [Thread-125313] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:25:24.049 [DEBUG] [Thread-125313] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:25:24.049 [DEBUG] [Thread-125313] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:25:24.064 [DEBUG] [Thread-125313] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:25:24.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:25:24.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:25:24.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:25:24.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:25:24.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:25:24.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:25:24.121 [DEBUG] [Thread-125313] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:25:34.223 [DEBUG] [Thread-125315 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:25:49.325 [DEBUG] [Thread-125316 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:25:54.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:25:54.145 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:25:54.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:25:55.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 25, 44), 28.88, 13.24, 0.0, 13.25, 18.28, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:25:55.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:25:44
2025-11-04T00:25:55.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:25:55.376 [DEBUG] [Thread-125317] [transport.py] [_log()] starting thread (client mode): 0x11762fe0
2025-11-04T00:25:55.377 [DEBUG] [Thread-125317] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:25:55.386 [DEBUG] [Thread-125317] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:25:55.386 [INFO] [Thread-125317] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:25:55.390 [DEBUG] [Thread-125317] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:25:55.390 [DEBUG] [Thread-125317] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:25:55.390 [DEBUG] [Thread-125317] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:25:55.390 [DEBUG] [Thread-125317] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:25:55.390 [DEBUG] [Thread-125317] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:25:55.390 [DEBUG] [Thread-125317] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:25:55.390 [DEBUG] [Thread-125317] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:25:55.390 [DEBUG] [Thread-125317] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:25:55.391 [DEBUG] [Thread-125317] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:25:55.391 [DEBUG] [Thread-125317] [transport.py] [_log()] client lang: <none>
2025-11-04T00:25:55.391 [DEBUG] [Thread-125317] [transport.py] [_log()] server lang: <none>
2025-11-04T00:25:55.391 [DEBUG] [Thread-125317] [transport.py] [_log()] kex follows: False
2025-11-04T00:25:55.391 [DEBUG] [Thread-125317] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:25:55.392 [DEBUG] [Thread-125317] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:25:55.392 [DEBUG] [Thread-125317] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:25:55.392 [DEBUG] [Thread-125317] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:25:55.392 [DEBUG] [Thread-125317] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:25:55.392 [DEBUG] [Thread-125317] [transport.py] [_log()] Compression: none
2025-11-04T00:25:55.392 [DEBUG] [Thread-125317] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:25:55.423 [DEBUG] [Thread-125317] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:25:55.429 [DEBUG] [Thread-125317] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:25:55.431 [DEBUG] [Thread-125317] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:25:55.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:25:55.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:25:55.435 [DEBUG] [Thread-125317] [transport.py] [_log()] userauth is OK
2025-11-04T00:25:55.435 [DEBUG] [Thread-125317] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:25:55.435 [DEBUG] [Thread-125317] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:25:55.436 [DEBUG] [Thread-125317] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:25:55.436 [DEBUG] [Thread-125317] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:25:55.462 [INFO] [Thread-125317] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:25:55.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:25:56.106 [DEBUG] [Thread-125317] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:25:56.106 [DEBUG] [Thread-125317] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:25:56.106 [DEBUG] [Thread-125317] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:25:56.147 [DEBUG] [Thread-125317] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:25:56.147 [DEBUG] [Thread-125317] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:25:56.150 [DEBUG] [Thread-125317] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:25:56.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:25:56.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:25:56.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:25:56.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:25:56.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:25:56.171 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:25:56.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:25:56.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:25:56.174 [DEBUG] [Thread-125317] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:25:56.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:25:56.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.934126 -999.00  +18.40  11.89     18   -6.10 1 1 1 1 1     0    0 23.81 -29.55 ZNESW 12.7 11.9 307.6 14.9 18.8 -24.9 18.7 -23.9 18.4 -23.6 18.7 -24.6
2025-11-04T00:25:56.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:25:56.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:25:56.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.934126
2025-11-04T00:25:56.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:25:56.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:25:56.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:25:56.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:25:56.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:25:56.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:25:44', tmtdew=28.88, humidity=13.24, cloud=0.0, wind=13.25, temperature=18.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:25:45', seeing=1.16, atlas_timestamp='2025-11-03T22:25:08.486', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.03974999999999973, 0.1152500000000014, 0.06649999999999956, -0.01249999999999929, -0.0037499999999983658, -0.10850000000000115, 0.019750000000000156, -0.013500000000000512, 0.06700000000000017, 0.14124999999999943, 0.028999999999999915, 0.1349999999999998, -0.22025000000000183, -0.12600000000000122, 0.014999999999998792, 0.10224999999999973, 0.07049999999999912, 0.16350000000000087, 0.15174999999999983, 0.1319999999999979, -0.008250000000002089, -0.332749999999999, 0.015750000000000597, 0.04499999999999993, 0.1429999999999989, 0.18625000000000114, 0.2215000000000007, 0.2965, 0.2500000000000018, -0.07099999999999973, 0.09700000000000131, 0.13674999999999926], zp_timestamp='2025-11-03T22:24:00')
2025-11-04T00:25:56.278 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:25:56.290 [DEBUG] [Thread-125320] [transport.py] [_log()] starting thread (client mode): 0x117617e0
2025-11-04T00:25:56.290 [DEBUG] [Thread-125320] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:25:56.309 [DEBUG] [Thread-125320] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:25:56.309 [INFO] [Thread-125320] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:25:56.317 [DEBUG] [Thread-125320] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:25:56.317 [DEBUG] [Thread-125320] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:25:56.317 [DEBUG] [Thread-125320] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:25:56.317 [DEBUG] [Thread-125320] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:25:56.317 [DEBUG] [Thread-125320] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:25:56.317 [DEBUG] [Thread-125320] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:25:56.318 [DEBUG] [Thread-125320] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:25:56.318 [DEBUG] [Thread-125320] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:25:56.318 [DEBUG] [Thread-125320] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:25:56.318 [DEBUG] [Thread-125320] [transport.py] [_log()] client lang: <none>
2025-11-04T00:25:56.318 [DEBUG] [Thread-125320] [transport.py] [_log()] server lang: <none>
2025-11-04T00:25:56.318 [DEBUG] [Thread-125320] [transport.py] [_log()] kex follows: False
2025-11-04T00:25:56.318 [DEBUG] [Thread-125320] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:25:56.318 [DEBUG] [Thread-125320] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:25:56.318 [DEBUG] [Thread-125320] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:25:56.318 [DEBUG] [Thread-125320] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:25:56.318 [DEBUG] [Thread-125320] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:25:56.318 [DEBUG] [Thread-125320] [transport.py] [_log()] Compression: none
2025-11-04T00:25:56.318 [DEBUG] [Thread-125320] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:25:56.377 [DEBUG] [Thread-125320] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:25:56.377 [DEBUG] [Thread-125320] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:25:56.378 [DEBUG] [Thread-125320] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:25:56.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:25:56.379 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:25:56.434 [DEBUG] [Thread-125320] [transport.py] [_log()] userauth is OK
2025-11-04T00:25:56.435 [DEBUG] [Thread-125320] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:25:56.435 [DEBUG] [Thread-125320] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:25:56.435 [DEBUG] [Thread-125320] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:25:56.435 [DEBUG] [Thread-125320] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:25:56.457 [INFO] [Thread-125320] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:25:56.458 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:25:56.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:25:57.326 [DEBUG] [Thread-125320] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:25:57.326 [DEBUG] [Thread-125320] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:25:57.374 [DEBUG] [Thread-125320] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:25:57.374 [DEBUG] [Thread-125320] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:25:57.382 [DEBUG] [Thread-125320] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:25:57.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:25:57.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:25:57.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:25:57.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:25:57.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:25:57.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:25:57.424 [DEBUG] [Thread-125320] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:26:04.354 [DEBUG] [Thread-125322 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:26:09.132 [DEBUG] [Thread-125323 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:26:18.511 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:26:18.516 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:26:19.424 [DEBUG] [Thread-125324 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:26:27.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:26:27.458 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:26:27.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:26:29.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 26, 17), 28.83, 13.29, 0.0, 12.99, 18.28, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:26:29.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:26:17
2025-11-04T00:26:29.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:26:29.844 [DEBUG] [Thread-125325] [transport.py] [_log()] starting thread (client mode): 0x11763340
2025-11-04T00:26:29.852 [DEBUG] [Thread-125325] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:26:29.854 [DEBUG] [Thread-125325] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:26:29.855 [INFO] [Thread-125325] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:26:29.877 [DEBUG] [Thread-125325] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:26:29.877 [DEBUG] [Thread-125325] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:26:29.877 [DEBUG] [Thread-125325] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:26:29.877 [DEBUG] [Thread-125325] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:26:29.877 [DEBUG] [Thread-125325] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:26:29.877 [DEBUG] [Thread-125325] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:26:29.877 [DEBUG] [Thread-125325] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:26:29.877 [DEBUG] [Thread-125325] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:26:29.877 [DEBUG] [Thread-125325] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:26:29.877 [DEBUG] [Thread-125325] [transport.py] [_log()] client lang: <none>
2025-11-04T00:26:29.877 [DEBUG] [Thread-125325] [transport.py] [_log()] server lang: <none>
2025-11-04T00:26:29.878 [DEBUG] [Thread-125325] [transport.py] [_log()] kex follows: False
2025-11-04T00:26:29.878 [DEBUG] [Thread-125325] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:26:29.879 [DEBUG] [Thread-125325] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:26:29.879 [DEBUG] [Thread-125325] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:26:29.880 [DEBUG] [Thread-125325] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:26:29.880 [DEBUG] [Thread-125325] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:26:29.880 [DEBUG] [Thread-125325] [transport.py] [_log()] Compression: none
2025-11-04T00:26:29.880 [DEBUG] [Thread-125325] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:26:29.969 [DEBUG] [Thread-125325] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:26:29.994 [DEBUG] [Thread-125325] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:26:30.001 [DEBUG] [Thread-125325] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:26:30.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:26:30.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:26:30.015 [DEBUG] [Thread-125325] [transport.py] [_log()] userauth is OK
2025-11-04T00:26:30.015 [DEBUG] [Thread-125325] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:26:30.015 [DEBUG] [Thread-125325] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:26:30.015 [DEBUG] [Thread-125325] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:26:30.015 [DEBUG] [Thread-125325] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:26:30.047 [INFO] [Thread-125325] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:26:30.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:26:30.683 [DEBUG] [Thread-125325] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:26:30.684 [DEBUG] [Thread-125325] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:26:30.685 [DEBUG] [Thread-125325] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:26:30.726 [DEBUG] [Thread-125325] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:26:30.727 [DEBUG] [Thread-125325] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:26:30.732 [DEBUG] [Thread-125325] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:26:30.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:26:30.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:26:30.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:26:30.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:26:30.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:26:30.777 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:26:30.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:26:30.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:26:30.788 [DEBUG] [Thread-125325] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:26:30.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:26:30.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.934474 -999.00  +18.40  11.73     18   -6.10 1 1 1 1 1     0    0 23.73 -33.76 ZNESW 12.2 11.7 310.0 17.5 18.8 -24.9 18.7 -24.0 18.4 -23.7 18.7 -24.5
2025-11-04T00:26:30.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:26:30.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:26:30.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.934474
2025-11-04T00:26:30.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:26:30.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:26:30.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:26:30.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:26:30.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:26:30.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:26:17', tmtdew=28.83, humidity=13.29, cloud=0.0, wind=12.99, temperature=18.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:26:18', seeing=1.16, atlas_timestamp='2025-11-03T22:25:38.554', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.03974999999999973, 0.1152500000000014, 0.06649999999999956, -0.01249999999999929, -0.0037499999999983658, -0.10850000000000115, 0.019750000000000156, -0.013500000000000512, 0.06700000000000017, 0.14124999999999943, 0.028999999999999915, 0.1349999999999998, -0.22025000000000183, -0.12600000000000122, 0.014999999999998792, 0.10224999999999973, 0.07049999999999912, 0.16350000000000087, 0.15174999999999983, 0.1319999999999979, -0.008250000000002089, -0.332749999999999, 0.015750000000000597, 0.04499999999999993, 0.1429999999999989, 0.18625000000000114, 0.2215000000000007, 0.2965, 0.2500000000000018, -0.07099999999999973, 0.09700000000000131, 0.13674999999999926], zp_timestamp='2025-11-03T22:24:00')
2025-11-04T00:26:30.968 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:26:30.982 [DEBUG] [Thread-125328] [transport.py] [_log()] starting thread (client mode): 0xed069e0
2025-11-04T00:26:30.984 [DEBUG] [Thread-125328] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:26:30.996 [DEBUG] [Thread-125328] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:26:30.997 [INFO] [Thread-125328] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:26:31.005 [DEBUG] [Thread-125328] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:26:31.005 [DEBUG] [Thread-125328] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:26:31.005 [DEBUG] [Thread-125328] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:26:31.005 [DEBUG] [Thread-125328] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:26:31.005 [DEBUG] [Thread-125328] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:26:31.005 [DEBUG] [Thread-125328] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:26:31.005 [DEBUG] [Thread-125328] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:26:31.006 [DEBUG] [Thread-125328] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:26:31.006 [DEBUG] [Thread-125328] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:26:31.006 [DEBUG] [Thread-125328] [transport.py] [_log()] client lang: <none>
2025-11-04T00:26:31.006 [DEBUG] [Thread-125328] [transport.py] [_log()] server lang: <none>
2025-11-04T00:26:31.006 [DEBUG] [Thread-125328] [transport.py] [_log()] kex follows: False
2025-11-04T00:26:31.006 [DEBUG] [Thread-125328] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:26:31.006 [DEBUG] [Thread-125328] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:26:31.006 [DEBUG] [Thread-125328] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:26:31.007 [DEBUG] [Thread-125328] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:26:31.007 [DEBUG] [Thread-125328] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:26:31.007 [DEBUG] [Thread-125328] [transport.py] [_log()] Compression: none
2025-11-04T00:26:31.007 [DEBUG] [Thread-125328] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:26:31.062 [DEBUG] [Thread-125328] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:26:31.062 [DEBUG] [Thread-125328] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:26:31.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:26:31.064 [DEBUG] [Thread-125328] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:26:31.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:26:31.118 [DEBUG] [Thread-125328] [transport.py] [_log()] userauth is OK
2025-11-04T00:26:31.119 [DEBUG] [Thread-125328] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:26:31.120 [DEBUG] [Thread-125328] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:26:31.121 [DEBUG] [Thread-125328] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:26:31.121 [DEBUG] [Thread-125328] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:26:31.140 [INFO] [Thread-125328] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:26:31.140 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:26:31.141 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:26:32.020 [DEBUG] [Thread-125328] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:26:32.020 [DEBUG] [Thread-125328] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:26:32.071 [DEBUG] [Thread-125328] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:26:32.072 [DEBUG] [Thread-125328] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:26:32.086 [DEBUG] [Thread-125328] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:26:32.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:26:32.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:26:32.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:26:32.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:26:32.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:26:32.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:26:32.135 [DEBUG] [Thread-125328] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:26:34.459 [DEBUG] [Thread-125330 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:26:49.693 [DEBUG] [Thread-125331 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:27:02.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:27:02.162 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:27:02.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:27:02.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 26, 54), 28.81, 13.28, 0.0, 13.23, 18.27, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:27:02.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:26:54
2025-11-04T00:27:03.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:27:03.281 [DEBUG] [Thread-125332] [transport.py] [_log()] starting thread (client mode): 0xed070d0
2025-11-04T00:27:03.282 [DEBUG] [Thread-125332] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:27:03.293 [DEBUG] [Thread-125332] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:27:03.293 [INFO] [Thread-125332] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:27:03.299 [DEBUG] [Thread-125332] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:27:03.299 [DEBUG] [Thread-125332] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:27:03.299 [DEBUG] [Thread-125332] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:27:03.299 [DEBUG] [Thread-125332] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:27:03.299 [DEBUG] [Thread-125332] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:27:03.299 [DEBUG] [Thread-125332] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:27:03.299 [DEBUG] [Thread-125332] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:27:03.299 [DEBUG] [Thread-125332] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:27:03.299 [DEBUG] [Thread-125332] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:27:03.300 [DEBUG] [Thread-125332] [transport.py] [_log()] client lang: <none>
2025-11-04T00:27:03.300 [DEBUG] [Thread-125332] [transport.py] [_log()] server lang: <none>
2025-11-04T00:27:03.300 [DEBUG] [Thread-125332] [transport.py] [_log()] kex follows: False
2025-11-04T00:27:03.300 [DEBUG] [Thread-125332] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:27:03.301 [DEBUG] [Thread-125332] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:27:03.301 [DEBUG] [Thread-125332] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:27:03.301 [DEBUG] [Thread-125332] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:27:03.301 [DEBUG] [Thread-125332] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:27:03.301 [DEBUG] [Thread-125332] [transport.py] [_log()] Compression: none
2025-11-04T00:27:03.302 [DEBUG] [Thread-125332] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:27:03.337 [DEBUG] [Thread-125332] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:27:03.342 [DEBUG] [Thread-125332] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:27:03.344 [DEBUG] [Thread-125332] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:27:03.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:27:03.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:27:03.350 [DEBUG] [Thread-125332] [transport.py] [_log()] userauth is OK
2025-11-04T00:27:03.350 [DEBUG] [Thread-125332] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:27:03.350 [DEBUG] [Thread-125332] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:27:03.350 [DEBUG] [Thread-125332] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:27:03.351 [DEBUG] [Thread-125332] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:27:03.377 [INFO] [Thread-125332] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:27:03.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:27:04.030 [DEBUG] [Thread-125332] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:27:04.030 [DEBUG] [Thread-125332] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:27:04.039 [DEBUG] [Thread-125332] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:27:04.072 [DEBUG] [Thread-125332] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:27:04.072 [DEBUG] [Thread-125332] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:27:04.078 [DEBUG] [Thread-125332] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:27:04.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:27:04.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:27:04.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:27:04.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:27:04.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:27:04.116 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:27:04.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:27:04.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:27:04.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:27:04.125 [DEBUG] [Thread-125332] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:27:04.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.935168 -999.00  +18.40  13.70     18   -6.10 1 1 1 1 1     0    0 24.15 -38.07 ZNESW 13.4 13.7 312.4 16.2 18.7 -24.9 18.7 -23.9 18.4 -23.7 18.7 -24.6
2025-11-04T00:27:04.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:27:04.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:27:04.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.935168
2025-11-04T00:27:04.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:27:04.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:27:04.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:27:04.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:27:04.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:27:04.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:26:54', tmtdew=28.81, humidity=13.28, cloud=0.0, wind=13.23, temperature=18.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:26:54', seeing=1.08, atlas_timestamp='2025-11-03T22:26:38.515', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.03974999999999973, 0.1152500000000014, 0.06649999999999956, -0.01249999999999929, -0.0037499999999983658, -0.10850000000000115, 0.019750000000000156, -0.013500000000000512, 0.06700000000000017, 0.14124999999999943, 0.028999999999999915, 0.1349999999999998, -0.22025000000000183, -0.12600000000000122, 0.014999999999998792, 0.10224999999999973, 0.07049999999999912, 0.16350000000000087, 0.15174999999999983, 0.1319999999999979, -0.008250000000002089, -0.332749999999999, 0.015750000000000597, 0.04499999999999993, 0.1429999999999989, 0.18625000000000114, 0.2215000000000007, 0.2965, 0.2500000000000018, -0.07099999999999973, 0.09700000000000131, 0.13674999999999926], zp_timestamp='2025-11-03T22:24:00')
2025-11-04T00:27:04.366 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:27:04.382 [DEBUG] [Thread-125335] [transport.py] [_log()] starting thread (client mode): 0xed07430
2025-11-04T00:27:04.382 [DEBUG] [Thread-125335] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:27:04.399 [DEBUG] [Thread-125335] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:27:04.399 [INFO] [Thread-125335] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:27:04.414 [DEBUG] [Thread-125335] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:27:04.414 [DEBUG] [Thread-125335] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:27:04.414 [DEBUG] [Thread-125335] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:27:04.414 [DEBUG] [Thread-125335] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:27:04.414 [DEBUG] [Thread-125335] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:27:04.415 [DEBUG] [Thread-125335] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:27:04.415 [DEBUG] [Thread-125335] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:27:04.415 [DEBUG] [Thread-125335] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:27:04.415 [DEBUG] [Thread-125335] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:27:04.415 [DEBUG] [Thread-125335] [transport.py] [_log()] client lang: <none>
2025-11-04T00:27:04.415 [DEBUG] [Thread-125335] [transport.py] [_log()] server lang: <none>
2025-11-04T00:27:04.415 [DEBUG] [Thread-125335] [transport.py] [_log()] kex follows: False
2025-11-04T00:27:04.415 [DEBUG] [Thread-125335] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:27:04.415 [DEBUG] [Thread-125335] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:27:04.415 [DEBUG] [Thread-125335] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:27:04.416 [DEBUG] [Thread-125335] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:27:04.416 [DEBUG] [Thread-125335] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:27:04.416 [DEBUG] [Thread-125335] [transport.py] [_log()] Compression: none
2025-11-04T00:27:04.416 [DEBUG] [Thread-125335] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:27:04.472 [DEBUG] [Thread-125335] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:27:04.473 [DEBUG] [Thread-125335] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:27:04.474 [DEBUG] [Thread-125335] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:27:04.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:27:04.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:27:04.537 [DEBUG] [Thread-125335] [transport.py] [_log()] userauth is OK
2025-11-04T00:27:04.537 [DEBUG] [Thread-125335] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:27:04.538 [DEBUG] [Thread-125335] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:27:04.538 [DEBUG] [Thread-125335] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:27:04.538 [DEBUG] [Thread-125335] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:27:04.560 [INFO] [Thread-125335] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:27:04.561 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:27:04.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:27:04.738 [DEBUG] [Thread-125337 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:27:05.423 [DEBUG] [Thread-125335] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:27:05.423 [DEBUG] [Thread-125335] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:27:05.478 [DEBUG] [Thread-125335] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:27:05.479 [DEBUG] [Thread-125335] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:27:05.488 [DEBUG] [Thread-125335] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:27:05.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:27:05.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:27:05.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:27:05.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:27:05.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:27:05.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:27:05.539 [DEBUG] [Thread-125335] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:27:10.810 [DEBUG] [Thread-125338 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:27:18.718 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:27:18.720 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:27:20.103 [DEBUG] [Thread-125339 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:27:35.129 [DEBUG] [Thread-125340 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:27:35.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:27:35.533 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:27:35.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:27:36.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 27, 26), 28.82, 13.26, 0.0, 13.18, 18.23, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:27:36.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:27:26
2025-11-04T00:27:36.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:27:36.556 [DEBUG] [Thread-125341] [transport.py] [_log()] starting thread (client mode): 0x11762ec0
2025-11-04T00:27:36.556 [DEBUG] [Thread-125341] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:27:36.566 [DEBUG] [Thread-125341] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:27:36.566 [INFO] [Thread-125341] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:27:36.570 [DEBUG] [Thread-125341] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:27:36.570 [DEBUG] [Thread-125341] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:27:36.570 [DEBUG] [Thread-125341] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:27:36.570 [DEBUG] [Thread-125341] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:27:36.570 [DEBUG] [Thread-125341] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:27:36.570 [DEBUG] [Thread-125341] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:27:36.570 [DEBUG] [Thread-125341] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:27:36.570 [DEBUG] [Thread-125341] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:27:36.570 [DEBUG] [Thread-125341] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:27:36.570 [DEBUG] [Thread-125341] [transport.py] [_log()] client lang: <none>
2025-11-04T00:27:36.570 [DEBUG] [Thread-125341] [transport.py] [_log()] server lang: <none>
2025-11-04T00:27:36.570 [DEBUG] [Thread-125341] [transport.py] [_log()] kex follows: False
2025-11-04T00:27:36.570 [DEBUG] [Thread-125341] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:27:36.570 [DEBUG] [Thread-125341] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:27:36.570 [DEBUG] [Thread-125341] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:27:36.571 [DEBUG] [Thread-125341] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:27:36.571 [DEBUG] [Thread-125341] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:27:36.571 [DEBUG] [Thread-125341] [transport.py] [_log()] Compression: none
2025-11-04T00:27:36.571 [DEBUG] [Thread-125341] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:27:36.587 [DEBUG] [Thread-125341] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:27:36.587 [DEBUG] [Thread-125341] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:27:36.588 [DEBUG] [Thread-125341] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:27:36.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:27:36.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:27:36.590 [DEBUG] [Thread-125341] [transport.py] [_log()] userauth is OK
2025-11-04T00:27:36.590 [DEBUG] [Thread-125341] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:27:36.590 [DEBUG] [Thread-125341] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:27:36.590 [DEBUG] [Thread-125341] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:27:36.591 [DEBUG] [Thread-125341] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:27:36.625 [INFO] [Thread-125341] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:27:36.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:27:37.211 [DEBUG] [Thread-125341] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:27:37.211 [DEBUG] [Thread-125341] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:27:37.212 [DEBUG] [Thread-125341] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:27:37.252 [DEBUG] [Thread-125341] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:27:37.252 [DEBUG] [Thread-125341] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:27:37.256 [DEBUG] [Thread-125341] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:27:37.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:27:37.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:27:37.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:27:37.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:27:37.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:27:37.277 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:27:37.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:27:37.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:27:37.286 [DEBUG] [Thread-125341] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:27:37.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:27:37.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.935515 -999.00  +18.40  13.04     18   -6.10 1 1 1 1 1     0    0 23.36 -34.12 ZNESW 11.4 13.0 309.0 15.3 18.7 -24.9 18.6 -23.9 18.4 -23.7 18.7 -24.7
2025-11-04T00:27:37.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:27:37.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:27:37.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.935515
2025-11-04T00:27:37.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:27:37.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:27:37.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:27:37.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:27:37.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:27:37.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:27:26', tmtdew=28.82, humidity=13.26, cloud=0.0, wind=13.18, temperature=18.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:27:27', seeing=1.08, atlas_timestamp='2025-11-03T22:27:08.496', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.03974999999999973, 0.1152500000000014, 0.06649999999999956, -0.01249999999999929, -0.0037499999999983658, -0.10850000000000115, 0.019750000000000156, -0.013500000000000512, 0.06700000000000017, 0.14124999999999943, 0.028999999999999915, 0.1349999999999998, -0.22025000000000183, -0.12600000000000122, 0.014999999999998792, 0.10224999999999973, 0.07049999999999912, 0.16350000000000087, 0.15174999999999983, 0.1319999999999979, -0.008250000000002089, -0.332749999999999, 0.015750000000000597, 0.04499999999999993, 0.1429999999999989, 0.18625000000000114, 0.2215000000000007, 0.2965, 0.2500000000000018, -0.07099999999999973, 0.09700000000000131, 0.13674999999999926], zp_timestamp='2025-11-03T22:24:00')
2025-11-04T00:27:37.373 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:27:37.386 [DEBUG] [Thread-125344] [transport.py] [_log()] starting thread (client mode): 0x117eb0d0
2025-11-04T00:27:37.386 [DEBUG] [Thread-125344] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:27:37.402 [DEBUG] [Thread-125344] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:27:37.402 [INFO] [Thread-125344] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:27:37.412 [DEBUG] [Thread-125344] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:27:37.413 [DEBUG] [Thread-125344] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:27:37.413 [DEBUG] [Thread-125344] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:27:37.413 [DEBUG] [Thread-125344] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:27:37.413 [DEBUG] [Thread-125344] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:27:37.413 [DEBUG] [Thread-125344] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:27:37.413 [DEBUG] [Thread-125344] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:27:37.413 [DEBUG] [Thread-125344] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:27:37.413 [DEBUG] [Thread-125344] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:27:37.413 [DEBUG] [Thread-125344] [transport.py] [_log()] client lang: <none>
2025-11-04T00:27:37.413 [DEBUG] [Thread-125344] [transport.py] [_log()] server lang: <none>
2025-11-04T00:27:37.413 [DEBUG] [Thread-125344] [transport.py] [_log()] kex follows: False
2025-11-04T00:27:37.413 [DEBUG] [Thread-125344] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:27:37.413 [DEBUG] [Thread-125344] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:27:37.414 [DEBUG] [Thread-125344] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:27:37.414 [DEBUG] [Thread-125344] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:27:37.414 [DEBUG] [Thread-125344] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:27:37.414 [DEBUG] [Thread-125344] [transport.py] [_log()] Compression: none
2025-11-04T00:27:37.414 [DEBUG] [Thread-125344] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:27:37.478 [DEBUG] [Thread-125344] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:27:37.478 [DEBUG] [Thread-125344] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:27:37.479 [DEBUG] [Thread-125344] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:27:37.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:27:37.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:27:37.533 [DEBUG] [Thread-125344] [transport.py] [_log()] userauth is OK
2025-11-04T00:27:37.533 [DEBUG] [Thread-125344] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:27:37.534 [DEBUG] [Thread-125344] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:27:37.534 [DEBUG] [Thread-125344] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:27:37.534 [DEBUG] [Thread-125344] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:27:37.549 [INFO] [Thread-125344] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:27:37.549 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:27:37.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:27:38.393 [DEBUG] [Thread-125344] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:27:38.393 [DEBUG] [Thread-125344] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:27:38.442 [DEBUG] [Thread-125344] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:27:38.442 [DEBUG] [Thread-125344] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:27:38.452 [DEBUG] [Thread-125344] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:27:38.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:27:38.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:27:38.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:27:38.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:27:38.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:27:38.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:27:38.503 [DEBUG] [Thread-125344] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:27:50.160 [DEBUG] [Thread-125346 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:28:05.451 [DEBUG] [Thread-125347 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:28:08.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:28:08.527 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:28:08.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:28:09.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 28, 1), 28.85, 13.23, 0.0, 13.13, 18.27, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:28:09.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:28:01
2025-11-04T00:28:09.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:28:09.785 [DEBUG] [Thread-125348] [transport.py] [_log()] starting thread (client mode): 0xed18e50
2025-11-04T00:28:09.786 [DEBUG] [Thread-125348] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:28:09.796 [DEBUG] [Thread-125348] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:28:09.796 [INFO] [Thread-125348] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:28:09.801 [DEBUG] [Thread-125348] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:28:09.801 [DEBUG] [Thread-125348] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:28:09.801 [DEBUG] [Thread-125348] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:28:09.801 [DEBUG] [Thread-125348] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:28:09.801 [DEBUG] [Thread-125348] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:28:09.801 [DEBUG] [Thread-125348] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:28:09.801 [DEBUG] [Thread-125348] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:28:09.801 [DEBUG] [Thread-125348] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:28:09.801 [DEBUG] [Thread-125348] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:28:09.801 [DEBUG] [Thread-125348] [transport.py] [_log()] client lang: <none>
2025-11-04T00:28:09.801 [DEBUG] [Thread-125348] [transport.py] [_log()] server lang: <none>
2025-11-04T00:28:09.801 [DEBUG] [Thread-125348] [transport.py] [_log()] kex follows: False
2025-11-04T00:28:09.801 [DEBUG] [Thread-125348] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:28:09.802 [DEBUG] [Thread-125348] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:28:09.802 [DEBUG] [Thread-125348] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:28:09.802 [DEBUG] [Thread-125348] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:28:09.802 [DEBUG] [Thread-125348] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:28:09.802 [DEBUG] [Thread-125348] [transport.py] [_log()] Compression: none
2025-11-04T00:28:09.802 [DEBUG] [Thread-125348] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:28:09.833 [DEBUG] [Thread-125348] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:28:09.838 [DEBUG] [Thread-125348] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:28:09.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:28:09.841 [DEBUG] [Thread-125348] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:28:09.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:28:09.843 [DEBUG] [Thread-125348] [transport.py] [_log()] userauth is OK
2025-11-04T00:28:09.843 [DEBUG] [Thread-125348] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:28:09.843 [DEBUG] [Thread-125348] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:28:09.843 [DEBUG] [Thread-125348] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:28:09.843 [DEBUG] [Thread-125348] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:28:09.862 [INFO] [Thread-125348] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:28:09.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:28:10.529 [DEBUG] [Thread-125348] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:28:10.530 [DEBUG] [Thread-125348] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:28:10.530 [DEBUG] [Thread-125348] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:28:10.571 [DEBUG] [Thread-125348] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:28:10.571 [DEBUG] [Thread-125348] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:28:10.573 [DEBUG] [Thread-125348] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:28:10.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:28:10.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:28:10.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:28:10.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:28:10.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:28:10.595 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:28:10.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:28:10.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:28:10.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:28:10.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.935863 -999.00  +18.30  11.43     18   -6.10 1 1 1 1 1     0    0 23.53 -32.49 ZNESW 12.8 11.4 310.8 15.3 18.7 -24.9 18.6 -24.0 18.4 -23.5 18.7 -24.4
2025-11-04T00:28:10.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:28:10.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:28:10.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.935863
2025-11-04T00:28:10.603 [DEBUG] [Thread-125348] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:28:10.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:28:10.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:28:10.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:28:10.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:28:10.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:28:10.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:28:01', tmtdew=28.85, humidity=13.23, cloud=0.0, wind=13.13, temperature=18.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:28:01', seeing=1.05, atlas_timestamp='2025-11-03T22:27:38.563', atlas_cloud=1, atlas_rain=1, zp_data=[0.07174999999999976, 0.03625000000000078, 0.10625000000000107, 0.06449999999999889, -0.05550000000000033, -0.08674999999999855, 0.05599999999999916, 0.017250000000000654, -0.022999999999999687, 0.06099999999999994, 0.08974999999999866, 0.04499999999999993, 0.12099999999999866, -0.4712499999999995, -0.5140000000000011, -0.10400000000000098, 0.06874999999999964, 0.04399999999999871, 0.13949999999999996, 0.16324999999999967, 0.1319999999999979, 0.1117499999999989, -0.16274999999999906, 0.05274999999999963, 0.054999999999999716, 0.1775000000000002, 0.19875000000000043, 0.25150000000000006, 0.33700000000000063, 0.1800000000000015, -0.04249999999999865, 0.053000000000000824, 0.1092499999999994], zp_timestamp='2025-11-03T22:26:00')
2025-11-04T00:28:10.698 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:28:10.715 [DEBUG] [Thread-125351] [transport.py] [_log()] starting thread (client mode): 0xed18430
2025-11-04T00:28:10.715 [DEBUG] [Thread-125351] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:28:10.733 [DEBUG] [Thread-125351] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:28:10.733 [INFO] [Thread-125351] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:28:10.744 [DEBUG] [Thread-125351] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:28:10.744 [DEBUG] [Thread-125351] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:28:10.744 [DEBUG] [Thread-125351] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:28:10.744 [DEBUG] [Thread-125351] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:28:10.744 [DEBUG] [Thread-125351] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:28:10.744 [DEBUG] [Thread-125351] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:28:10.744 [DEBUG] [Thread-125351] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:28:10.744 [DEBUG] [Thread-125351] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:28:10.744 [DEBUG] [Thread-125351] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:28:10.744 [DEBUG] [Thread-125351] [transport.py] [_log()] client lang: <none>
2025-11-04T00:28:10.744 [DEBUG] [Thread-125351] [transport.py] [_log()] server lang: <none>
2025-11-04T00:28:10.744 [DEBUG] [Thread-125351] [transport.py] [_log()] kex follows: False
2025-11-04T00:28:10.744 [DEBUG] [Thread-125351] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:28:10.744 [DEBUG] [Thread-125351] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:28:10.744 [DEBUG] [Thread-125351] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:28:10.744 [DEBUG] [Thread-125351] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:28:10.744 [DEBUG] [Thread-125351] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:28:10.744 [DEBUG] [Thread-125351] [transport.py] [_log()] Compression: none
2025-11-04T00:28:10.744 [DEBUG] [Thread-125351] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:28:10.802 [DEBUG] [Thread-125351] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:28:10.803 [DEBUG] [Thread-125351] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:28:10.803 [DEBUG] [Thread-125351] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:28:10.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:28:10.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:28:10.861 [DEBUG] [Thread-125351] [transport.py] [_log()] userauth is OK
2025-11-04T00:28:10.861 [DEBUG] [Thread-125351] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:28:10.861 [DEBUG] [Thread-125351] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:28:10.862 [DEBUG] [Thread-125351] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:28:10.862 [DEBUG] [Thread-125351] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:28:10.877 [INFO] [Thread-125351] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:28:10.877 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:28:10.878 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:28:11.093 [DEBUG] [Thread-125353 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:28:11.718 [DEBUG] [Thread-125351] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:28:11.718 [DEBUG] [Thread-125351] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:28:11.770 [DEBUG] [Thread-125351] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:28:11.770 [DEBUG] [Thread-125351] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:28:11.782 [DEBUG] [Thread-125351] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:28:11.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:28:11.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:28:11.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:28:11.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:28:11.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:28:11.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:28:11.830 [DEBUG] [Thread-125351] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:28:18.928 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:28:18.936 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:28:20.539 [DEBUG] [Thread-125354 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:28:35.954 [DEBUG] [Thread-125355 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:28:41.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:28:41.836 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:28:41.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:28:43.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 28, 34), 28.87, 13.19, 0.0, 15.05, 18.22, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:28:43.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:28:34
2025-11-04T00:28:43.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:28:43.998 [DEBUG] [Thread-125356] [transport.py] [_log()] starting thread (client mode): 0x117615d0
2025-11-04T00:28:43.998 [DEBUG] [Thread-125356] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:28:44.018 [DEBUG] [Thread-125356] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:28:44.018 [INFO] [Thread-125356] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:28:44.021 [DEBUG] [Thread-125356] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:28:44.021 [DEBUG] [Thread-125356] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:28:44.021 [DEBUG] [Thread-125356] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:28:44.021 [DEBUG] [Thread-125356] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:28:44.021 [DEBUG] [Thread-125356] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:28:44.021 [DEBUG] [Thread-125356] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:28:44.021 [DEBUG] [Thread-125356] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:28:44.021 [DEBUG] [Thread-125356] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:28:44.021 [DEBUG] [Thread-125356] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:28:44.021 [DEBUG] [Thread-125356] [transport.py] [_log()] client lang: <none>
2025-11-04T00:28:44.021 [DEBUG] [Thread-125356] [transport.py] [_log()] server lang: <none>
2025-11-04T00:28:44.021 [DEBUG] [Thread-125356] [transport.py] [_log()] kex follows: False
2025-11-04T00:28:44.021 [DEBUG] [Thread-125356] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:28:44.021 [DEBUG] [Thread-125356] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:28:44.022 [DEBUG] [Thread-125356] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:28:44.022 [DEBUG] [Thread-125356] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:28:44.022 [DEBUG] [Thread-125356] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:28:44.022 [DEBUG] [Thread-125356] [transport.py] [_log()] Compression: none
2025-11-04T00:28:44.022 [DEBUG] [Thread-125356] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:28:44.040 [DEBUG] [Thread-125356] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:28:44.041 [DEBUG] [Thread-125356] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:28:44.041 [DEBUG] [Thread-125356] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:28:44.041 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:28:44.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:28:44.043 [DEBUG] [Thread-125356] [transport.py] [_log()] userauth is OK
2025-11-04T00:28:44.043 [DEBUG] [Thread-125356] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:28:44.043 [DEBUG] [Thread-125356] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:28:44.044 [DEBUG] [Thread-125356] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:28:44.044 [DEBUG] [Thread-125356] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:28:44.069 [INFO] [Thread-125356] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:28:44.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:28:44.879 [DEBUG] [Thread-125356] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:28:44.879 [DEBUG] [Thread-125356] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:28:44.879 [DEBUG] [Thread-125356] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:28:44.919 [DEBUG] [Thread-125356] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:28:44.920 [DEBUG] [Thread-125356] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:28:44.922 [DEBUG] [Thread-125356] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:28:44.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:28:44.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:28:44.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:28:44.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:28:44.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:28:44.941 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:28:44.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:28:44.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:28:44.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:28:44.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.936210 -999.00  +18.30  12.87     18   -6.10 1 1 1 1 1     0    0 23.75 -32.15 ZNESW 15.7 12.9 307.4 15.4 18.7 -25.0 18.6 -23.9 18.4 -23.5 18.7 -24.4
2025-11-04T00:28:44.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:28:44.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:28:44.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.936210
2025-11-04T00:28:44.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:28:44.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:28:44.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:28:44.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:28:44.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:28:44.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:28:34', tmtdew=28.87, humidity=13.19, cloud=0.0, wind=15.05, temperature=18.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:28:34', seeing=1.07, atlas_timestamp='2025-11-03T22:28:08.544', atlas_cloud=1, atlas_rain=1, zp_data=[0.07174999999999976, 0.03625000000000078, 0.10625000000000107, 0.06449999999999889, -0.05550000000000033, -0.08674999999999855, 0.05599999999999916, 0.017250000000000654, -0.022999999999999687, 0.06099999999999994, 0.08974999999999866, 0.04499999999999993, 0.12099999999999866, -0.4712499999999995, -0.5140000000000011, -0.10400000000000098, 0.06874999999999964, 0.04399999999999871, 0.13949999999999996, 0.16324999999999967, 0.1319999999999979, 0.1117499999999989, -0.16274999999999906, 0.05274999999999963, 0.054999999999999716, 0.1775000000000002, 0.19875000000000043, 0.25150000000000006, 0.33700000000000063, 0.1800000000000015, -0.04249999999999865, 0.053000000000000824, 0.1092499999999994], zp_timestamp='2025-11-03T22:26:00')
2025-11-04T00:28:44.942 [DEBUG] [Thread-125356] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:28:45.015 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:28:45.028 [DEBUG] [Thread-125359] [transport.py] [_log()] starting thread (client mode): 0x11760d30
2025-11-04T00:28:45.028 [DEBUG] [Thread-125359] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:28:45.047 [DEBUG] [Thread-125359] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:28:45.047 [INFO] [Thread-125359] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:28:45.057 [DEBUG] [Thread-125359] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:28:45.058 [DEBUG] [Thread-125359] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:28:45.058 [DEBUG] [Thread-125359] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:28:45.058 [DEBUG] [Thread-125359] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:28:45.058 [DEBUG] [Thread-125359] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:28:45.058 [DEBUG] [Thread-125359] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:28:45.058 [DEBUG] [Thread-125359] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:28:45.058 [DEBUG] [Thread-125359] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:28:45.058 [DEBUG] [Thread-125359] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:28:45.058 [DEBUG] [Thread-125359] [transport.py] [_log()] client lang: <none>
2025-11-04T00:28:45.058 [DEBUG] [Thread-125359] [transport.py] [_log()] server lang: <none>
2025-11-04T00:28:45.058 [DEBUG] [Thread-125359] [transport.py] [_log()] kex follows: False
2025-11-04T00:28:45.058 [DEBUG] [Thread-125359] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:28:45.058 [DEBUG] [Thread-125359] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:28:45.058 [DEBUG] [Thread-125359] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:28:45.058 [DEBUG] [Thread-125359] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:28:45.058 [DEBUG] [Thread-125359] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:28:45.058 [DEBUG] [Thread-125359] [transport.py] [_log()] Compression: none
2025-11-04T00:28:45.058 [DEBUG] [Thread-125359] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:28:45.116 [DEBUG] [Thread-125359] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:28:45.116 [DEBUG] [Thread-125359] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:28:45.116 [DEBUG] [Thread-125359] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:28:45.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:28:45.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:28:45.182 [DEBUG] [Thread-125359] [transport.py] [_log()] userauth is OK
2025-11-04T00:28:45.182 [DEBUG] [Thread-125359] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:28:45.182 [DEBUG] [Thread-125359] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:28:45.183 [DEBUG] [Thread-125359] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:28:45.183 [DEBUG] [Thread-125359] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:28:45.211 [INFO] [Thread-125359] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:28:45.213 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:28:45.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:28:46.058 [DEBUG] [Thread-125359] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:28:46.058 [DEBUG] [Thread-125359] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:28:46.106 [DEBUG] [Thread-125359] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:28:46.106 [DEBUG] [Thread-125359] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:28:46.115 [DEBUG] [Thread-125359] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:28:46.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:28:46.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:28:46.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:28:46.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:28:46.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:28:46.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:28:46.152 [DEBUG] [Thread-125359] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:28:50.979 [DEBUG] [Thread-125361 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:29:06.014 [DEBUG] [Thread-125362 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:29:11.364 [DEBUG] [Thread-125363 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:29:16.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:29:16.177 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:29:16.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:29:17.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 29, 6), 28.85, 13.23, 0.0, 14.87, 18.25, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:29:17.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:29:06
2025-11-04T00:29:17.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:29:17.385 [DEBUG] [Thread-125364] [transport.py] [_log()] starting thread (client mode): 0x11763790
2025-11-04T00:29:17.386 [DEBUG] [Thread-125364] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:29:17.397 [DEBUG] [Thread-125364] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:29:17.397 [INFO] [Thread-125364] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:29:17.402 [DEBUG] [Thread-125364] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:29:17.402 [DEBUG] [Thread-125364] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:29:17.402 [DEBUG] [Thread-125364] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:29:17.402 [DEBUG] [Thread-125364] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:29:17.402 [DEBUG] [Thread-125364] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:29:17.402 [DEBUG] [Thread-125364] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:29:17.402 [DEBUG] [Thread-125364] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:29:17.402 [DEBUG] [Thread-125364] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:29:17.403 [DEBUG] [Thread-125364] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:29:17.403 [DEBUG] [Thread-125364] [transport.py] [_log()] client lang: <none>
2025-11-04T00:29:17.403 [DEBUG] [Thread-125364] [transport.py] [_log()] server lang: <none>
2025-11-04T00:29:17.403 [DEBUG] [Thread-125364] [transport.py] [_log()] kex follows: False
2025-11-04T00:29:17.403 [DEBUG] [Thread-125364] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:29:17.404 [DEBUG] [Thread-125364] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:29:17.404 [DEBUG] [Thread-125364] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:29:17.404 [DEBUG] [Thread-125364] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:29:17.404 [DEBUG] [Thread-125364] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:29:17.404 [DEBUG] [Thread-125364] [transport.py] [_log()] Compression: none
2025-11-04T00:29:17.405 [DEBUG] [Thread-125364] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:29:17.442 [DEBUG] [Thread-125364] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:29:17.447 [DEBUG] [Thread-125364] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:29:17.449 [DEBUG] [Thread-125364] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:29:17.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:29:17.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:29:17.456 [DEBUG] [Thread-125364] [transport.py] [_log()] userauth is OK
2025-11-04T00:29:17.457 [DEBUG] [Thread-125364] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:29:17.457 [DEBUG] [Thread-125364] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:29:17.457 [DEBUG] [Thread-125364] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:29:17.457 [DEBUG] [Thread-125364] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:29:17.497 [INFO] [Thread-125364] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:29:17.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:29:18.120 [DEBUG] [Thread-125364] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:29:18.121 [DEBUG] [Thread-125364] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:29:18.121 [DEBUG] [Thread-125364] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:29:18.162 [DEBUG] [Thread-125364] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:29:18.162 [DEBUG] [Thread-125364] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:29:18.165 [DEBUG] [Thread-125364] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:29:18.178 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:29:18.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:29:18.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:29:18.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:29:18.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:29:18.188 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:29:18.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:29:18.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:29:18.200 [DEBUG] [Thread-125364] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:29:18.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:29:18.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.936557 -999.00  +18.30  12.32     18   -6.10 1 1 1 1 1     0    0 23.59 -36.12 ZNESW 12.4 12.3 314.0 18.0 18.7 -24.9 18.6 -23.7 18.4 -23.6 18.6 -24.5
2025-11-04T00:29:18.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:29:18.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:29:18.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.936557
2025-11-04T00:29:18.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:29:18.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:29:18.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:29:18.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:29:18.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:29:18.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:29:06', tmtdew=28.85, humidity=13.23, cloud=0.0, wind=14.87, temperature=18.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:29:07', seeing=1.07, atlas_timestamp='2025-11-03T22:28:38.525', atlas_cloud=1, atlas_rain=1, zp_data=[0.07174999999999976, 0.03625000000000078, 0.10625000000000107, 0.06449999999999889, -0.05550000000000033, -0.08674999999999855, 0.05599999999999916, 0.017250000000000654, -0.022999999999999687, 0.06099999999999994, 0.08974999999999866, 0.04499999999999993, 0.12099999999999866, -0.4712499999999995, -0.5140000000000011, -0.10400000000000098, 0.06874999999999964, 0.04399999999999871, 0.13949999999999996, 0.16324999999999967, 0.1319999999999979, 0.1117499999999989, -0.16274999999999906, 0.05274999999999963, 0.054999999999999716, 0.1775000000000002, 0.19875000000000043, 0.25150000000000006, 0.33700000000000063, 0.1800000000000015, -0.04249999999999865, 0.053000000000000824, 0.1092499999999994], zp_timestamp='2025-11-03T22:26:00')
2025-11-04T00:29:18.409 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:29:18.424 [DEBUG] [Thread-125367] [transport.py] [_log()] starting thread (client mode): 0x117eb0d0
2025-11-04T00:29:18.424 [DEBUG] [Thread-125367] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:29:18.440 [DEBUG] [Thread-125367] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:29:18.440 [INFO] [Thread-125367] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:29:18.450 [DEBUG] [Thread-125367] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:29:18.450 [DEBUG] [Thread-125367] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:29:18.451 [DEBUG] [Thread-125367] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:29:18.451 [DEBUG] [Thread-125367] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:29:18.451 [DEBUG] [Thread-125367] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:29:18.451 [DEBUG] [Thread-125367] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:29:18.451 [DEBUG] [Thread-125367] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:29:18.451 [DEBUG] [Thread-125367] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:29:18.451 [DEBUG] [Thread-125367] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:29:18.451 [DEBUG] [Thread-125367] [transport.py] [_log()] client lang: <none>
2025-11-04T00:29:18.451 [DEBUG] [Thread-125367] [transport.py] [_log()] server lang: <none>
2025-11-04T00:29:18.451 [DEBUG] [Thread-125367] [transport.py] [_log()] kex follows: False
2025-11-04T00:29:18.451 [DEBUG] [Thread-125367] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:29:18.451 [DEBUG] [Thread-125367] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:29:18.451 [DEBUG] [Thread-125367] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:29:18.451 [DEBUG] [Thread-125367] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:29:18.453 [DEBUG] [Thread-125367] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:29:18.453 [DEBUG] [Thread-125367] [transport.py] [_log()] Compression: none
2025-11-04T00:29:18.453 [DEBUG] [Thread-125367] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:29:18.510 [DEBUG] [Thread-125367] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:29:18.511 [DEBUG] [Thread-125367] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:29:18.511 [DEBUG] [Thread-125367] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:29:18.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:29:18.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:29:18.573 [DEBUG] [Thread-125367] [transport.py] [_log()] userauth is OK
2025-11-04T00:29:18.573 [DEBUG] [Thread-125367] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:29:18.574 [DEBUG] [Thread-125367] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:29:18.574 [DEBUG] [Thread-125367] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:29:18.574 [DEBUG] [Thread-125367] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:29:18.597 [INFO] [Thread-125367] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:29:18.597 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:29:18.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:29:19.141 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:29:19.145 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:29:19.473 [DEBUG] [Thread-125367] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:29:19.473 [DEBUG] [Thread-125367] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:29:19.522 [DEBUG] [Thread-125367] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:29:19.522 [DEBUG] [Thread-125367] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:29:19.532 [DEBUG] [Thread-125367] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:29:19.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:29:19.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:29:19.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:29:19.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:29:19.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:29:19.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:29:19.590 [DEBUG] [Thread-125367] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:29:21.041 [DEBUG] [Thread-125369 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:29:36.081 [DEBUG] [Thread-125370 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:29:49.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:29:49.622 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:29:49.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:29:50.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 29, 39), 28.83, 13.24, 0.0, 15.05, 18.23, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:29:50.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:29:39
2025-11-04T00:29:50.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:29:50.622 [DEBUG] [Thread-125371] [transport.py] [_log()] starting thread (client mode): 0xed5c3a0
2025-11-04T00:29:50.622 [DEBUG] [Thread-125371] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:29:50.638 [DEBUG] [Thread-125371] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:29:50.638 [INFO] [Thread-125371] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:29:50.641 [DEBUG] [Thread-125371] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:29:50.641 [DEBUG] [Thread-125371] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:29:50.641 [DEBUG] [Thread-125371] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:29:50.641 [DEBUG] [Thread-125371] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:29:50.641 [DEBUG] [Thread-125371] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:29:50.641 [DEBUG] [Thread-125371] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:29:50.641 [DEBUG] [Thread-125371] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:29:50.641 [DEBUG] [Thread-125371] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:29:50.641 [DEBUG] [Thread-125371] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:29:50.641 [DEBUG] [Thread-125371] [transport.py] [_log()] client lang: <none>
2025-11-04T00:29:50.641 [DEBUG] [Thread-125371] [transport.py] [_log()] server lang: <none>
2025-11-04T00:29:50.641 [DEBUG] [Thread-125371] [transport.py] [_log()] kex follows: False
2025-11-04T00:29:50.641 [DEBUG] [Thread-125371] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:29:50.641 [DEBUG] [Thread-125371] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:29:50.641 [DEBUG] [Thread-125371] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:29:50.641 [DEBUG] [Thread-125371] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:29:50.641 [DEBUG] [Thread-125371] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:29:50.641 [DEBUG] [Thread-125371] [transport.py] [_log()] Compression: none
2025-11-04T00:29:50.641 [DEBUG] [Thread-125371] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:29:50.660 [DEBUG] [Thread-125371] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:29:50.662 [DEBUG] [Thread-125371] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:29:50.663 [DEBUG] [Thread-125371] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:29:50.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:29:50.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:29:50.665 [DEBUG] [Thread-125371] [transport.py] [_log()] userauth is OK
2025-11-04T00:29:50.665 [DEBUG] [Thread-125371] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:29:50.665 [DEBUG] [Thread-125371] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:29:50.665 [DEBUG] [Thread-125371] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:29:50.665 [DEBUG] [Thread-125371] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:29:50.680 [INFO] [Thread-125371] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:29:50.680 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:29:51.107 [DEBUG] [Thread-125373 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:29:51.483 [DEBUG] [Thread-125371] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:29:51.484 [DEBUG] [Thread-125371] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:29:51.494 [DEBUG] [Thread-125371] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:29:51.525 [DEBUG] [Thread-125371] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:29:51.525 [DEBUG] [Thread-125371] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:29:51.529 [DEBUG] [Thread-125371] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:29:51.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:29:51.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:29:51.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:29:51.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:29:51.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:29:51.553 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:29:51.553 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:29:51.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:29:51.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:29:51.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.936904 -999.00  +18.30  11.60     18   -6.10 1 1 1 1 1     0    0 24.00 -38.62 ZNESW 13.6 11.6 314.0 14.1 18.6 -25.0 18.6 -24.0 18.4 -23.6 18.6 -24.4
2025-11-04T00:29:51.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:29:51.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:29:51.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.936904
2025-11-04T00:29:51.561 [DEBUG] [Thread-125371] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:29:51.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:29:51.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:29:51.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:29:51.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:29:51.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:29:51.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:29:39', tmtdew=28.83, humidity=13.24, cloud=0.0, wind=15.05, temperature=18.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:29:40', seeing=1.04, atlas_timestamp='2025-11-03T22:29:08.506', atlas_cloud=1, atlas_rain=1, zp_data=[0.07174999999999976, 0.03625000000000078, 0.10625000000000107, 0.06449999999999889, -0.05550000000000033, -0.08674999999999855, 0.05599999999999916, 0.017250000000000654, -0.022999999999999687, 0.06099999999999994, 0.08974999999999866, 0.04499999999999993, 0.12099999999999866, -0.4712499999999995, -0.5140000000000011, -0.10400000000000098, 0.06874999999999964, 0.04399999999999871, 0.13949999999999996, 0.16324999999999967, 0.1319999999999979, 0.1117499999999989, -0.16274999999999906, 0.05274999999999963, 0.054999999999999716, 0.1775000000000002, 0.19875000000000043, 0.25150000000000006, 0.33700000000000063, 0.1800000000000015, -0.04249999999999865, 0.053000000000000824, 0.1092499999999994], zp_timestamp='2025-11-03T22:26:00')
2025-11-04T00:29:51.654 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:29:51.667 [DEBUG] [Thread-125375] [transport.py] [_log()] starting thread (client mode): 0x11760340
2025-11-04T00:29:51.667 [DEBUG] [Thread-125375] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:29:51.683 [DEBUG] [Thread-125375] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:29:51.683 [INFO] [Thread-125375] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:29:51.691 [DEBUG] [Thread-125375] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:29:51.692 [DEBUG] [Thread-125375] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:29:51.692 [DEBUG] [Thread-125375] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:29:51.692 [DEBUG] [Thread-125375] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:29:51.692 [DEBUG] [Thread-125375] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:29:51.692 [DEBUG] [Thread-125375] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:29:51.692 [DEBUG] [Thread-125375] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:29:51.692 [DEBUG] [Thread-125375] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:29:51.693 [DEBUG] [Thread-125375] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:29:51.693 [DEBUG] [Thread-125375] [transport.py] [_log()] client lang: <none>
2025-11-04T00:29:51.693 [DEBUG] [Thread-125375] [transport.py] [_log()] server lang: <none>
2025-11-04T00:29:51.693 [DEBUG] [Thread-125375] [transport.py] [_log()] kex follows: False
2025-11-04T00:29:51.693 [DEBUG] [Thread-125375] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:29:51.693 [DEBUG] [Thread-125375] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:29:51.693 [DEBUG] [Thread-125375] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:29:51.694 [DEBUG] [Thread-125375] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:29:51.694 [DEBUG] [Thread-125375] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:29:51.694 [DEBUG] [Thread-125375] [transport.py] [_log()] Compression: none
2025-11-04T00:29:51.694 [DEBUG] [Thread-125375] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:29:51.751 [DEBUG] [Thread-125375] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:29:51.752 [DEBUG] [Thread-125375] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:29:51.753 [DEBUG] [Thread-125375] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:29:51.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:29:51.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:29:51.813 [DEBUG] [Thread-125375] [transport.py] [_log()] userauth is OK
2025-11-04T00:29:51.813 [DEBUG] [Thread-125375] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:29:51.813 [DEBUG] [Thread-125375] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:29:51.813 [DEBUG] [Thread-125375] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:29:51.813 [DEBUG] [Thread-125375] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:29:51.827 [INFO] [Thread-125375] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:29:51.827 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:29:51.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:29:52.673 [DEBUG] [Thread-125375] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:29:52.673 [DEBUG] [Thread-125375] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:29:52.713 [DEBUG] [Thread-125375] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:29:52.713 [DEBUG] [Thread-125375] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:29:52.721 [DEBUG] [Thread-125375] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:29:52.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:29:52.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:29:52.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:29:52.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:29:52.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:29:52.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:29:52.756 [DEBUG] [Thread-125375] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:30:06.136 [DEBUG] [Thread-125377 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:30:11.641 [DEBUG] [Thread-125378 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:30:19.366 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:30:19.376 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:30:21.237 [DEBUG] [Thread-125379 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:30:22.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:30:22.773 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:30:22.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:30:23.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 30, 11), 28.83, 13.24, 0.0, 14.31, 18.25, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:30:23.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:30:11
2025-11-04T00:30:23.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:30:23.829 [DEBUG] [Thread-125380] [transport.py] [_log()] starting thread (client mode): 0xedb2e00
2025-11-04T00:30:23.829 [DEBUG] [Thread-125380] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:30:23.830 [DEBUG] [Thread-125380] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:30:23.830 [INFO] [Thread-125380] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:30:23.834 [DEBUG] [Thread-125380] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:30:23.834 [DEBUG] [Thread-125380] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:30:23.834 [DEBUG] [Thread-125380] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:30:23.834 [DEBUG] [Thread-125380] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:30:23.834 [DEBUG] [Thread-125380] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:30:23.834 [DEBUG] [Thread-125380] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:30:23.834 [DEBUG] [Thread-125380] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:30:23.834 [DEBUG] [Thread-125380] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:30:23.834 [DEBUG] [Thread-125380] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:30:23.834 [DEBUG] [Thread-125380] [transport.py] [_log()] client lang: <none>
2025-11-04T00:30:23.834 [DEBUG] [Thread-125380] [transport.py] [_log()] server lang: <none>
2025-11-04T00:30:23.834 [DEBUG] [Thread-125380] [transport.py] [_log()] kex follows: False
2025-11-04T00:30:23.834 [DEBUG] [Thread-125380] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:30:23.835 [DEBUG] [Thread-125380] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:30:23.835 [DEBUG] [Thread-125380] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:30:23.835 [DEBUG] [Thread-125380] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:30:23.835 [DEBUG] [Thread-125380] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:30:23.835 [DEBUG] [Thread-125380] [transport.py] [_log()] Compression: none
2025-11-04T00:30:23.835 [DEBUG] [Thread-125380] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:30:23.870 [DEBUG] [Thread-125380] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:30:23.875 [DEBUG] [Thread-125380] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:30:23.877 [DEBUG] [Thread-125380] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:30:23.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:30:23.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:30:23.882 [DEBUG] [Thread-125380] [transport.py] [_log()] userauth is OK
2025-11-04T00:30:23.883 [DEBUG] [Thread-125380] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:30:23.883 [DEBUG] [Thread-125380] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:30:23.883 [DEBUG] [Thread-125380] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:30:23.883 [DEBUG] [Thread-125380] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:30:23.921 [INFO] [Thread-125380] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:30:23.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:30:24.552 [DEBUG] [Thread-125380] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:30:24.553 [DEBUG] [Thread-125380] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:30:24.554 [DEBUG] [Thread-125380] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:30:24.595 [DEBUG] [Thread-125380] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:30:24.595 [DEBUG] [Thread-125380] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:30:24.599 [DEBUG] [Thread-125380] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:30:24.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:30:24.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:30:24.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:30:24.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:30:24.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:30:24.623 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:30:24.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:30:24.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:30:24.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:30:24.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.937598 -999.00  +18.30  13.62     18   -6.20 1 1 1 1 1     0    0 23.50 -39.77 ZNESW 12.0 13.6 306.8 15.3 18.6 -24.8 18.6 -23.9 18.4 -23.7 18.6 -24.4
2025-11-04T00:30:24.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:30:24.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:30:24.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.937598
2025-11-04T00:30:24.632 [DEBUG] [Thread-125380] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:30:24.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:30:24.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:30:24.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:30:24.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:30:24.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:30:24.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:30:11', tmtdew=28.83, humidity=13.24, cloud=0.0, wind=14.31, temperature=18.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:30:12', seeing=1.04, atlas_timestamp='2025-11-03T22:30:08.467', atlas_cloud=1, atlas_rain=1, zp_data=[0.07174999999999976, 0.03625000000000078, 0.10625000000000107, 0.06449999999999889, -0.05550000000000033, -0.08674999999999855, 0.05599999999999916, 0.017250000000000654, -0.022999999999999687, 0.06099999999999994, 0.08974999999999866, 0.04499999999999993, 0.12099999999999866, -0.4712499999999995, -0.5140000000000011, -0.10400000000000098, 0.06874999999999964, 0.04399999999999871, 0.13949999999999996, 0.16324999999999967, 0.1319999999999979, 0.1117499999999989, -0.16274999999999906, 0.05274999999999963, 0.054999999999999716, 0.1775000000000002, 0.19875000000000043, 0.25150000000000006, 0.33700000000000063, 0.1800000000000015, -0.04249999999999865, 0.053000000000000824, 0.1092499999999994], zp_timestamp='2025-11-03T22:26:00')
2025-11-04T00:30:24.738 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:30:24.755 [DEBUG] [Thread-125383] [transport.py] [_log()] starting thread (client mode): 0xed18e20
2025-11-04T00:30:24.755 [DEBUG] [Thread-125383] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:30:24.772 [DEBUG] [Thread-125383] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:30:24.772 [INFO] [Thread-125383] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:30:24.781 [DEBUG] [Thread-125383] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:30:24.782 [DEBUG] [Thread-125383] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:30:24.782 [DEBUG] [Thread-125383] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:30:24.782 [DEBUG] [Thread-125383] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:30:24.782 [DEBUG] [Thread-125383] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:30:24.782 [DEBUG] [Thread-125383] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:30:24.782 [DEBUG] [Thread-125383] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:30:24.783 [DEBUG] [Thread-125383] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:30:24.783 [DEBUG] [Thread-125383] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:30:24.783 [DEBUG] [Thread-125383] [transport.py] [_log()] client lang: <none>
2025-11-04T00:30:24.783 [DEBUG] [Thread-125383] [transport.py] [_log()] server lang: <none>
2025-11-04T00:30:24.783 [DEBUG] [Thread-125383] [transport.py] [_log()] kex follows: False
2025-11-04T00:30:24.783 [DEBUG] [Thread-125383] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:30:24.783 [DEBUG] [Thread-125383] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:30:24.784 [DEBUG] [Thread-125383] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:30:24.784 [DEBUG] [Thread-125383] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:30:24.784 [DEBUG] [Thread-125383] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:30:24.785 [DEBUG] [Thread-125383] [transport.py] [_log()] Compression: none
2025-11-04T00:30:24.785 [DEBUG] [Thread-125383] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:30:24.850 [DEBUG] [Thread-125383] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:30:24.850 [DEBUG] [Thread-125383] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:30:24.851 [DEBUG] [Thread-125383] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:30:24.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:30:24.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:30:24.912 [DEBUG] [Thread-125383] [transport.py] [_log()] userauth is OK
2025-11-04T00:30:24.912 [DEBUG] [Thread-125383] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:30:24.912 [DEBUG] [Thread-125383] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:30:24.912 [DEBUG] [Thread-125383] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:30:24.912 [DEBUG] [Thread-125383] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:30:24.939 [INFO] [Thread-125383] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:30:24.940 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:30:24.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:30:25.824 [DEBUG] [Thread-125383] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:30:25.824 [DEBUG] [Thread-125383] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:30:25.863 [DEBUG] [Thread-125383] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:30:25.863 [DEBUG] [Thread-125383] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:30:25.872 [DEBUG] [Thread-125383] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:30:25.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:30:25.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:30:25.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:30:25.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:30:25.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:30:25.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:30:25.908 [DEBUG] [Thread-125383] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:30:36.277 [DEBUG] [Thread-125385 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:30:51.613 [DEBUG] [Thread-125386 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:30:55.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:30:55.937 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:30:55.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:30:57.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 30, 44), 28.88, 13.23, 0.0, 12.44, 18.15, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:30:57.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:30:44
2025-11-04T00:30:57.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:30:58.132 [DEBUG] [Thread-125387] [transport.py] [_log()] starting thread (client mode): 0xed5df00
2025-11-04T00:30:58.133 [DEBUG] [Thread-125387] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:30:58.148 [DEBUG] [Thread-125387] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:30:58.148 [INFO] [Thread-125387] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:30:58.151 [DEBUG] [Thread-125387] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:30:58.151 [DEBUG] [Thread-125387] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:30:58.151 [DEBUG] [Thread-125387] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:30:58.151 [DEBUG] [Thread-125387] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:30:58.151 [DEBUG] [Thread-125387] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:30:58.151 [DEBUG] [Thread-125387] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:30:58.151 [DEBUG] [Thread-125387] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:30:58.151 [DEBUG] [Thread-125387] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:30:58.151 [DEBUG] [Thread-125387] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:30:58.151 [DEBUG] [Thread-125387] [transport.py] [_log()] client lang: <none>
2025-11-04T00:30:58.151 [DEBUG] [Thread-125387] [transport.py] [_log()] server lang: <none>
2025-11-04T00:30:58.152 [DEBUG] [Thread-125387] [transport.py] [_log()] kex follows: False
2025-11-04T00:30:58.152 [DEBUG] [Thread-125387] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:30:58.152 [DEBUG] [Thread-125387] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:30:58.152 [DEBUG] [Thread-125387] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:30:58.152 [DEBUG] [Thread-125387] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:30:58.152 [DEBUG] [Thread-125387] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:30:58.152 [DEBUG] [Thread-125387] [transport.py] [_log()] Compression: none
2025-11-04T00:30:58.152 [DEBUG] [Thread-125387] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:30:58.180 [DEBUG] [Thread-125387] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:30:58.184 [DEBUG] [Thread-125387] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:30:58.185 [DEBUG] [Thread-125387] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:30:58.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:30:58.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:30:58.188 [DEBUG] [Thread-125387] [transport.py] [_log()] userauth is OK
2025-11-04T00:30:58.188 [DEBUG] [Thread-125387] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:30:58.189 [DEBUG] [Thread-125387] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:30:58.189 [DEBUG] [Thread-125387] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:30:58.189 [DEBUG] [Thread-125387] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:30:58.218 [INFO] [Thread-125387] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:30:58.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:30:58.856 [DEBUG] [Thread-125387] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:30:58.856 [DEBUG] [Thread-125387] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:30:58.856 [DEBUG] [Thread-125387] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:30:58.897 [DEBUG] [Thread-125387] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:30:58.897 [DEBUG] [Thread-125387] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:30:58.899 [DEBUG] [Thread-125387] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:30:58.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:30:58.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:30:58.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:30:58.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:30:58.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:30:58.919 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:30:58.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:30:58.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:30:58.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:30:58.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.937946 -999.00  +18.30  12.08     18   -6.20 1 1 1 1 1     0    0 23.76 -41.07 ZNESW 11.2 12.1 305.8 15.4 18.7 -24.8 18.6 -23.9 18.3 -23.5 18.6 -24.5
2025-11-04T00:30:58.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:30:58.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:30:58.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.937946
2025-11-04T00:30:58.927 [DEBUG] [Thread-125387] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:30:58.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:30:58.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:30:58.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:30:58.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:30:58.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:30:58.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:30:44', tmtdew=28.88, humidity=13.23, cloud=0.0, wind=12.44, temperature=18.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:30:45', seeing=1.0, atlas_timestamp='2025-11-03T22:30:38.534', atlas_cloud=1, atlas_rain=1, zp_data=[0.0547500000000003, -0.0017499999999994742, 0.11325000000000074, 0.12149999999999928, 0.09350000000000058, 0.03175000000000239, -0.030500000000001748, 0.07125000000000092, 0.12149999999999928, 0.10899999999999999, 0.14975000000000094, 0.02200000000000024, 0.0730000000000004, -0.1277500000000007, -0.23000000000000043, 0.036999999999999034, 0.06325000000000003, 0.0754999999999999, 0.1819999999999986, 0.1712499999999988, 0.1404999999999994, 0.16924999999999812, -0.06674999999999898, 0.09024999999999928, 0.10049999999999848, 0.19299999999999962, 0.24375000000000036, 0.24150000000000027, 0.30350000000000055, 0.27200000000000113, 0.02400000000000091, 0.12850000000000072, 0.08624999999999972], zp_timestamp='2025-11-03T22:29:00')
2025-11-04T00:30:59.013 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:30:59.024 [DEBUG] [Thread-125390] [transport.py] [_log()] starting thread (client mode): 0xed5fe80
2025-11-04T00:30:59.024 [DEBUG] [Thread-125390] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:30:59.039 [DEBUG] [Thread-125390] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:30:59.039 [INFO] [Thread-125390] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:30:59.047 [DEBUG] [Thread-125390] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:30:59.047 [DEBUG] [Thread-125390] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:30:59.047 [DEBUG] [Thread-125390] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:30:59.047 [DEBUG] [Thread-125390] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:30:59.047 [DEBUG] [Thread-125390] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:30:59.047 [DEBUG] [Thread-125390] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:30:59.047 [DEBUG] [Thread-125390] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:30:59.047 [DEBUG] [Thread-125390] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:30:59.047 [DEBUG] [Thread-125390] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:30:59.047 [DEBUG] [Thread-125390] [transport.py] [_log()] client lang: <none>
2025-11-04T00:30:59.047 [DEBUG] [Thread-125390] [transport.py] [_log()] server lang: <none>
2025-11-04T00:30:59.047 [DEBUG] [Thread-125390] [transport.py] [_log()] kex follows: False
2025-11-04T00:30:59.047 [DEBUG] [Thread-125390] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:30:59.047 [DEBUG] [Thread-125390] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:30:59.047 [DEBUG] [Thread-125390] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:30:59.047 [DEBUG] [Thread-125390] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:30:59.047 [DEBUG] [Thread-125390] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:30:59.047 [DEBUG] [Thread-125390] [transport.py] [_log()] Compression: none
2025-11-04T00:30:59.047 [DEBUG] [Thread-125390] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:30:59.105 [DEBUG] [Thread-125390] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:30:59.105 [DEBUG] [Thread-125390] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:30:59.106 [DEBUG] [Thread-125390] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:30:59.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:30:59.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:30:59.161 [DEBUG] [Thread-125390] [transport.py] [_log()] userauth is OK
2025-11-04T00:30:59.161 [DEBUG] [Thread-125390] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:30:59.162 [DEBUG] [Thread-125390] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:30:59.162 [DEBUG] [Thread-125390] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:30:59.162 [DEBUG] [Thread-125390] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:30:59.177 [INFO] [Thread-125390] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:30:59.178 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:30:59.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:31:00.031 [DEBUG] [Thread-125390] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:31:00.031 [DEBUG] [Thread-125390] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:31:00.080 [DEBUG] [Thread-125390] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:31:00.080 [DEBUG] [Thread-125390] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:31:00.089 [DEBUG] [Thread-125390] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:31:00.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:31:00.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:31:00.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:31:00.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:31:00.116 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:31:00.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:31:00.125 [DEBUG] [Thread-125390] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:31:06.656 [DEBUG] [Thread-125392 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:31:11.916 [DEBUG] [Thread-125393 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:31:19.580 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:31:19.581 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:31:21.755 [DEBUG] [Thread-125394 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:31:30.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:31:30.151 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:31:30.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:31:31.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 31, 18), 28.83, 13.29, 0.0, 12.58, 18.22, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:31:31.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:31:18
2025-11-04T00:31:32.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:31:32.381 [DEBUG] [Thread-125395] [transport.py] [_log()] starting thread (client mode): 0xed426e0
2025-11-04T00:31:32.381 [DEBUG] [Thread-125395] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:31:32.386 [DEBUG] [Thread-125395] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:31:32.387 [INFO] [Thread-125395] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:31:32.393 [DEBUG] [Thread-125395] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:31:32.393 [DEBUG] [Thread-125395] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:31:32.393 [DEBUG] [Thread-125395] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:31:32.393 [DEBUG] [Thread-125395] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:31:32.393 [DEBUG] [Thread-125395] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:31:32.393 [DEBUG] [Thread-125395] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:31:32.393 [DEBUG] [Thread-125395] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:31:32.393 [DEBUG] [Thread-125395] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:31:32.393 [DEBUG] [Thread-125395] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:31:32.393 [DEBUG] [Thread-125395] [transport.py] [_log()] client lang: <none>
2025-11-04T00:31:32.393 [DEBUG] [Thread-125395] [transport.py] [_log()] server lang: <none>
2025-11-04T00:31:32.393 [DEBUG] [Thread-125395] [transport.py] [_log()] kex follows: False
2025-11-04T00:31:32.393 [DEBUG] [Thread-125395] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:31:32.395 [DEBUG] [Thread-125395] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:31:32.395 [DEBUG] [Thread-125395] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:31:32.395 [DEBUG] [Thread-125395] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:31:32.395 [DEBUG] [Thread-125395] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:31:32.395 [DEBUG] [Thread-125395] [transport.py] [_log()] Compression: none
2025-11-04T00:31:32.395 [DEBUG] [Thread-125395] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:31:32.465 [DEBUG] [Thread-125395] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:31:32.486 [DEBUG] [Thread-125395] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:31:32.486 [DEBUG] [Thread-125395] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:31:32.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:31:32.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:31:32.498 [DEBUG] [Thread-125395] [transport.py] [_log()] userauth is OK
2025-11-04T00:31:32.498 [DEBUG] [Thread-125395] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:31:32.500 [DEBUG] [Thread-125395] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:31:32.500 [DEBUG] [Thread-125395] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:31:32.500 [DEBUG] [Thread-125395] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:31:32.537 [INFO] [Thread-125395] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:31:32.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:31:33.133 [DEBUG] [Thread-125395] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:31:33.134 [DEBUG] [Thread-125395] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:31:33.134 [DEBUG] [Thread-125395] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:31:33.175 [DEBUG] [Thread-125395] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:31:33.175 [DEBUG] [Thread-125395] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:31:33.178 [DEBUG] [Thread-125395] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:31:33.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:31:33.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:31:33.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:31:33.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:31:33.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:31:33.209 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:31:33.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:31:33.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:31:33.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:31:33.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.938293 -999.00  +18.20  11.38     18   -6.20 1 1 1 1 1     0    0 23.61 -42.63 ZNESW 13.2 11.4 311.4 13.4 18.6 -24.8 18.6 -23.8 18.4 -23.5 18.6 -24.3
2025-11-04T00:31:33.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:31:33.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:31:33.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.938293
2025-11-04T00:31:33.216 [DEBUG] [Thread-125395] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:31:33.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:31:33.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:31:33.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:31:33.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:31:33.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:31:33.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:31:18', tmtdew=28.83, humidity=13.29, cloud=0.0, wind=12.58, temperature=18.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:31:18', seeing=1.0, atlas_timestamp='2025-11-03T22:31:08.515', atlas_cloud=1, atlas_rain=1, zp_data=[0.0547500000000003, -0.0017499999999994742, 0.11325000000000074, 0.12149999999999928, 0.09350000000000058, 0.03175000000000239, -0.030500000000001748, 0.07125000000000092, 0.12149999999999928, 0.10899999999999999, 0.14975000000000094, 0.02200000000000024, 0.0730000000000004, -0.1277500000000007, -0.23000000000000043, 0.036999999999999034, 0.06325000000000003, 0.0754999999999999, 0.1819999999999986, 0.1712499999999988, 0.1404999999999994, 0.16924999999999812, -0.06674999999999898, 0.09024999999999928, 0.10049999999999848, 0.19299999999999962, 0.24375000000000036, 0.24150000000000027, 0.30350000000000055, 0.27200000000000113, 0.02400000000000091, 0.12850000000000072, 0.08624999999999972], zp_timestamp='2025-11-03T22:29:00')
2025-11-04T00:31:33.305 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:31:33.318 [DEBUG] [Thread-125398] [transport.py] [_log()] starting thread (client mode): 0xed5cf10
2025-11-04T00:31:33.318 [DEBUG] [Thread-125398] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:31:33.336 [DEBUG] [Thread-125398] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:31:33.337 [INFO] [Thread-125398] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:31:33.346 [DEBUG] [Thread-125398] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:31:33.346 [DEBUG] [Thread-125398] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:31:33.346 [DEBUG] [Thread-125398] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:31:33.346 [DEBUG] [Thread-125398] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:31:33.346 [DEBUG] [Thread-125398] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:31:33.347 [DEBUG] [Thread-125398] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:31:33.347 [DEBUG] [Thread-125398] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:31:33.347 [DEBUG] [Thread-125398] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:31:33.347 [DEBUG] [Thread-125398] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:31:33.347 [DEBUG] [Thread-125398] [transport.py] [_log()] client lang: <none>
2025-11-04T00:31:33.347 [DEBUG] [Thread-125398] [transport.py] [_log()] server lang: <none>
2025-11-04T00:31:33.347 [DEBUG] [Thread-125398] [transport.py] [_log()] kex follows: False
2025-11-04T00:31:33.347 [DEBUG] [Thread-125398] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:31:33.347 [DEBUG] [Thread-125398] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:31:33.347 [DEBUG] [Thread-125398] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:31:33.347 [DEBUG] [Thread-125398] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:31:33.347 [DEBUG] [Thread-125398] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:31:33.347 [DEBUG] [Thread-125398] [transport.py] [_log()] Compression: none
2025-11-04T00:31:33.347 [DEBUG] [Thread-125398] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:31:33.406 [DEBUG] [Thread-125398] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:31:33.408 [DEBUG] [Thread-125398] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:31:33.409 [DEBUG] [Thread-125398] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:31:33.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:31:33.410 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:31:33.466 [DEBUG] [Thread-125398] [transport.py] [_log()] userauth is OK
2025-11-04T00:31:33.466 [DEBUG] [Thread-125398] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:31:33.466 [DEBUG] [Thread-125398] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:31:33.466 [DEBUG] [Thread-125398] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:31:33.466 [DEBUG] [Thread-125398] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:31:33.484 [INFO] [Thread-125398] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:31:33.484 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:31:33.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:31:34.409 [DEBUG] [Thread-125398] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:31:34.409 [DEBUG] [Thread-125398] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:31:34.459 [DEBUG] [Thread-125398] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:31:34.459 [DEBUG] [Thread-125398] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:31:34.470 [DEBUG] [Thread-125398] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:31:34.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:31:34.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:31:34.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:31:34.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:31:34.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:31:34.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:31:34.508 [DEBUG] [Thread-125398] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:31:36.787 [DEBUG] [Thread-125400 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:31:51.833 [DEBUG] [Thread-125401 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:32:04.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:32:04.530 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:32:04.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:32:05.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 31, 50), 28.77, 13.29, 0.0, 14.06, 18.15, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:32:05.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:31:50
2025-11-04T00:32:05.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:32:05.597 [DEBUG] [Thread-125402] [transport.py] [_log()] starting thread (client mode): 0x11760d30
2025-11-04T00:32:05.597 [DEBUG] [Thread-125402] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:32:05.615 [DEBUG] [Thread-125402] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:32:05.615 [INFO] [Thread-125402] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:32:05.620 [DEBUG] [Thread-125402] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:32:05.620 [DEBUG] [Thread-125402] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:32:05.620 [DEBUG] [Thread-125402] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:32:05.620 [DEBUG] [Thread-125402] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:32:05.620 [DEBUG] [Thread-125402] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:32:05.620 [DEBUG] [Thread-125402] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:32:05.620 [DEBUG] [Thread-125402] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:32:05.620 [DEBUG] [Thread-125402] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:32:05.620 [DEBUG] [Thread-125402] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:32:05.620 [DEBUG] [Thread-125402] [transport.py] [_log()] client lang: <none>
2025-11-04T00:32:05.620 [DEBUG] [Thread-125402] [transport.py] [_log()] server lang: <none>
2025-11-04T00:32:05.620 [DEBUG] [Thread-125402] [transport.py] [_log()] kex follows: False
2025-11-04T00:32:05.620 [DEBUG] [Thread-125402] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:32:05.622 [DEBUG] [Thread-125402] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:32:05.622 [DEBUG] [Thread-125402] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:32:05.622 [DEBUG] [Thread-125402] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:32:05.622 [DEBUG] [Thread-125402] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:32:05.622 [DEBUG] [Thread-125402] [transport.py] [_log()] Compression: none
2025-11-04T00:32:05.624 [DEBUG] [Thread-125402] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:32:05.640 [DEBUG] [Thread-125402] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:32:05.640 [DEBUG] [Thread-125402] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:32:05.641 [DEBUG] [Thread-125402] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:32:05.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:32:05.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:32:05.643 [DEBUG] [Thread-125402] [transport.py] [_log()] userauth is OK
2025-11-04T00:32:05.643 [DEBUG] [Thread-125402] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:32:05.643 [DEBUG] [Thread-125402] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:32:05.643 [DEBUG] [Thread-125402] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:32:05.643 [DEBUG] [Thread-125402] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:32:05.667 [INFO] [Thread-125402] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:32:05.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:32:06.317 [DEBUG] [Thread-125402] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:32:06.317 [DEBUG] [Thread-125402] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:32:06.317 [DEBUG] [Thread-125402] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:32:06.357 [DEBUG] [Thread-125402] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:32:06.357 [DEBUG] [Thread-125402] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:32:06.360 [DEBUG] [Thread-125402] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:32:06.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:32:06.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:32:06.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:32:06.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:32:06.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:32:06.379 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:32:06.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:32:06.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:32:06.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:32:06.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.938640 -999.00  +18.20  12.93     18   -6.20 1 1 1 1 1     0    0 23.24 -41.18 ZNESW 11.7 12.9 307.0 15.6 18.6 -24.9 18.6 -23.8 18.3 -23.3 18.5 -24.5
2025-11-04T00:32:06.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:32:06.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:32:06.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.938640
2025-11-04T00:32:06.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:32:06.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:32:06.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:32:06.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:32:06.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:32:06.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:31:50', tmtdew=28.77, humidity=13.29, cloud=0.0, wind=14.06, temperature=18.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:31:51', seeing=1.07, atlas_timestamp='2025-11-03T22:31:38.496', atlas_cloud=1, atlas_rain=1, zp_data=[0.0547500000000003, -0.0017499999999994742, 0.11325000000000074, 0.12149999999999928, 0.09350000000000058, 0.03175000000000239, -0.030500000000001748, 0.07125000000000092, 0.12149999999999928, 0.10899999999999999, 0.14975000000000094, 0.02200000000000024, 0.0730000000000004, -0.1277500000000007, -0.23000000000000043, 0.036999999999999034, 0.06325000000000003, 0.0754999999999999, 0.1819999999999986, 0.1712499999999988, 0.1404999999999994, 0.16924999999999812, -0.06674999999999898, 0.09024999999999928, 0.10049999999999848, 0.19299999999999962, 0.24375000000000036, 0.24150000000000027, 0.30350000000000055, 0.27200000000000113, 0.02400000000000091, 0.12850000000000072, 0.08624999999999972], zp_timestamp='2025-11-03T22:29:00')
2025-11-04T00:32:06.382 [DEBUG] [Thread-125402] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:32:06.460 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:32:06.471 [DEBUG] [Thread-125405] [transport.py] [_log()] starting thread (client mode): 0x11762b60
2025-11-04T00:32:06.471 [DEBUG] [Thread-125405] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:32:06.487 [DEBUG] [Thread-125405] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:32:06.487 [INFO] [Thread-125405] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:32:06.495 [DEBUG] [Thread-125405] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:32:06.495 [DEBUG] [Thread-125405] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:32:06.495 [DEBUG] [Thread-125405] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:32:06.496 [DEBUG] [Thread-125405] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:32:06.496 [DEBUG] [Thread-125405] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:32:06.496 [DEBUG] [Thread-125405] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:32:06.496 [DEBUG] [Thread-125405] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:32:06.496 [DEBUG] [Thread-125405] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:32:06.496 [DEBUG] [Thread-125405] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:32:06.496 [DEBUG] [Thread-125405] [transport.py] [_log()] client lang: <none>
2025-11-04T00:32:06.496 [DEBUG] [Thread-125405] [transport.py] [_log()] server lang: <none>
2025-11-04T00:32:06.496 [DEBUG] [Thread-125405] [transport.py] [_log()] kex follows: False
2025-11-04T00:32:06.497 [DEBUG] [Thread-125405] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:32:06.497 [DEBUG] [Thread-125405] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:32:06.497 [DEBUG] [Thread-125405] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:32:06.497 [DEBUG] [Thread-125405] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:32:06.497 [DEBUG] [Thread-125405] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:32:06.497 [DEBUG] [Thread-125405] [transport.py] [_log()] Compression: none
2025-11-04T00:32:06.497 [DEBUG] [Thread-125405] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:32:06.559 [DEBUG] [Thread-125405] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:32:06.562 [DEBUG] [Thread-125405] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:32:06.563 [DEBUG] [Thread-125405] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:32:06.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:32:06.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:32:06.619 [DEBUG] [Thread-125405] [transport.py] [_log()] userauth is OK
2025-11-04T00:32:06.620 [DEBUG] [Thread-125405] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:32:06.620 [DEBUG] [Thread-125405] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:32:06.620 [DEBUG] [Thread-125405] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:32:06.620 [DEBUG] [Thread-125405] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:32:06.646 [INFO] [Thread-125405] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:32:06.647 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:32:06.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:32:06.861 [DEBUG] [Thread-125407 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:32:07.516 [DEBUG] [Thread-125405] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:32:07.516 [DEBUG] [Thread-125405] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:32:07.565 [DEBUG] [Thread-125405] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:32:07.566 [DEBUG] [Thread-125405] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:32:07.576 [DEBUG] [Thread-125405] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:32:07.585 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:32:07.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:32:07.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:32:07.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:32:07.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:32:07.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:32:07.620 [DEBUG] [Thread-125405] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:32:12.165 [DEBUG] [Thread-125408 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:32:19.785 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:32:19.791 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:32:21.900 [DEBUG] [Thread-125409 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:32:36.940 [DEBUG] [Thread-125410 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:32:37.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:32:37.642 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:32:37.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:32:38.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 32, 23), 28.75, 13.31, 0.0, 14.2, 18.13, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:32:38.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:32:23
2025-11-04T00:32:38.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:32:38.739 [DEBUG] [Thread-125411] [transport.py] [_log()] starting thread (client mode): 0x11761f30
2025-11-04T00:32:38.740 [DEBUG] [Thread-125411] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:32:38.752 [DEBUG] [Thread-125411] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:32:38.753 [INFO] [Thread-125411] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:32:38.757 [DEBUG] [Thread-125411] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:32:38.757 [DEBUG] [Thread-125411] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:32:38.757 [DEBUG] [Thread-125411] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:32:38.757 [DEBUG] [Thread-125411] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:32:38.757 [DEBUG] [Thread-125411] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:32:38.757 [DEBUG] [Thread-125411] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:32:38.757 [DEBUG] [Thread-125411] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:32:38.758 [DEBUG] [Thread-125411] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:32:38.758 [DEBUG] [Thread-125411] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:32:38.758 [DEBUG] [Thread-125411] [transport.py] [_log()] client lang: <none>
2025-11-04T00:32:38.758 [DEBUG] [Thread-125411] [transport.py] [_log()] server lang: <none>
2025-11-04T00:32:38.758 [DEBUG] [Thread-125411] [transport.py] [_log()] kex follows: False
2025-11-04T00:32:38.758 [DEBUG] [Thread-125411] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:32:38.758 [DEBUG] [Thread-125411] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:32:38.758 [DEBUG] [Thread-125411] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:32:38.759 [DEBUG] [Thread-125411] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:32:38.759 [DEBUG] [Thread-125411] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:32:38.759 [DEBUG] [Thread-125411] [transport.py] [_log()] Compression: none
2025-11-04T00:32:38.759 [DEBUG] [Thread-125411] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:32:38.792 [DEBUG] [Thread-125411] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:32:38.798 [DEBUG] [Thread-125411] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:32:38.800 [DEBUG] [Thread-125411] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:32:38.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:32:38.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:32:38.804 [DEBUG] [Thread-125411] [transport.py] [_log()] userauth is OK
2025-11-04T00:32:38.805 [DEBUG] [Thread-125411] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:32:38.805 [DEBUG] [Thread-125411] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:32:38.805 [DEBUG] [Thread-125411] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:32:38.805 [DEBUG] [Thread-125411] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:32:38.831 [INFO] [Thread-125411] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:32:38.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:32:39.444 [DEBUG] [Thread-125411] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:32:39.445 [DEBUG] [Thread-125411] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:32:39.455 [DEBUG] [Thread-125411] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:32:39.486 [DEBUG] [Thread-125411] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:32:39.486 [DEBUG] [Thread-125411] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:32:39.490 [DEBUG] [Thread-125411] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:32:39.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:32:39.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:32:39.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:32:39.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:32:39.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:32:39.514 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:32:39.514 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:32:39.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:32:39.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:32:39.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.938988 -999.00  +18.30  14.84     18   -6.10 1 1 1 1 1     0    0 23.88 -43.97 ZNESW 13.6 14.8 318.0 16.7 18.6 -24.9 18.5 -23.8 18.2 -23.3 18.6 -24.4
2025-11-04T00:32:39.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:32:39.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:32:39.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.938988
2025-11-04T00:32:39.522 [DEBUG] [Thread-125411] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:32:39.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:32:39.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:32:39.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:32:39.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:32:39.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:32:39.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:32:23', tmtdew=28.75, humidity=13.31, cloud=0.0, wind=14.2, temperature=18.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:32:23', seeing=0.98, atlas_timestamp='2025-11-03T22:32:08.563', atlas_cloud=1, atlas_rain=1, zp_data=[0.0547500000000003, -0.0017499999999994742, 0.11325000000000074, 0.12149999999999928, 0.09350000000000058, 0.03175000000000239, -0.030500000000001748, 0.07125000000000092, 0.12149999999999928, 0.10899999999999999, 0.14975000000000094, 0.02200000000000024, 0.0730000000000004, -0.1277500000000007, -0.23000000000000043, 0.036999999999999034, 0.06325000000000003, 0.0754999999999999, 0.1819999999999986, 0.1712499999999988, 0.1404999999999994, 0.16924999999999812, -0.06674999999999898, 0.09024999999999928, 0.10049999999999848, 0.19299999999999962, 0.24375000000000036, 0.24150000000000027, 0.30350000000000055, 0.27200000000000113, 0.02400000000000091, 0.12850000000000072, 0.08624999999999972], zp_timestamp='2025-11-03T22:29:00')
2025-11-04T00:32:39.628 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:32:39.642 [DEBUG] [Thread-125414] [transport.py] [_log()] starting thread (client mode): 0xedb3c10
2025-11-04T00:32:39.642 [DEBUG] [Thread-125414] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:32:39.657 [DEBUG] [Thread-125414] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:32:39.657 [INFO] [Thread-125414] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:32:39.665 [DEBUG] [Thread-125414] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:32:39.665 [DEBUG] [Thread-125414] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:32:39.665 [DEBUG] [Thread-125414] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:32:39.665 [DEBUG] [Thread-125414] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:32:39.665 [DEBUG] [Thread-125414] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:32:39.665 [DEBUG] [Thread-125414] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:32:39.665 [DEBUG] [Thread-125414] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:32:39.665 [DEBUG] [Thread-125414] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:32:39.665 [DEBUG] [Thread-125414] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:32:39.666 [DEBUG] [Thread-125414] [transport.py] [_log()] client lang: <none>
2025-11-04T00:32:39.666 [DEBUG] [Thread-125414] [transport.py] [_log()] server lang: <none>
2025-11-04T00:32:39.666 [DEBUG] [Thread-125414] [transport.py] [_log()] kex follows: False
2025-11-04T00:32:39.666 [DEBUG] [Thread-125414] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:32:39.666 [DEBUG] [Thread-125414] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:32:39.666 [DEBUG] [Thread-125414] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:32:39.666 [DEBUG] [Thread-125414] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:32:39.666 [DEBUG] [Thread-125414] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:32:39.666 [DEBUG] [Thread-125414] [transport.py] [_log()] Compression: none
2025-11-04T00:32:39.666 [DEBUG] [Thread-125414] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:32:39.727 [DEBUG] [Thread-125414] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:32:39.728 [DEBUG] [Thread-125414] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:32:39.729 [DEBUG] [Thread-125414] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:32:39.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:32:39.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:32:39.795 [DEBUG] [Thread-125414] [transport.py] [_log()] userauth is OK
2025-11-04T00:32:39.795 [DEBUG] [Thread-125414] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:32:39.796 [DEBUG] [Thread-125414] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:32:39.796 [DEBUG] [Thread-125414] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:32:39.796 [DEBUG] [Thread-125414] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:32:39.824 [INFO] [Thread-125414] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:32:39.824 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:32:39.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:32:40.664 [DEBUG] [Thread-125414] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:32:40.664 [DEBUG] [Thread-125414] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:32:40.712 [DEBUG] [Thread-125414] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:32:40.712 [DEBUG] [Thread-125414] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:32:40.723 [DEBUG] [Thread-125414] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:32:40.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:32:40.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:32:40.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:32:40.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:32:40.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:32:40.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:32:40.764 [DEBUG] [Thread-125414] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:32:51.985 [DEBUG] [Thread-125416 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:33:07.058 [DEBUG] [Thread-125417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:33:10.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:33:10.759 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:33:10.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:33:12.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 32, 55), 28.8, 13.31, 0.0, 14.66, 18.15, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:33:12.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:32:55
2025-11-04T00:33:12.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:33:12.766 [DEBUG] [Thread-125418] [transport.py] [_log()] starting thread (client mode): 0xedb3700
2025-11-04T00:33:12.766 [DEBUG] [Thread-125418] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:33:12.782 [DEBUG] [Thread-125418] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:33:12.782 [INFO] [Thread-125418] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:33:12.784 [DEBUG] [Thread-125418] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:33:12.784 [DEBUG] [Thread-125418] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:33:12.784 [DEBUG] [Thread-125418] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:33:12.784 [DEBUG] [Thread-125418] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:33:12.784 [DEBUG] [Thread-125418] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:33:12.784 [DEBUG] [Thread-125418] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:33:12.784 [DEBUG] [Thread-125418] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:33:12.784 [DEBUG] [Thread-125418] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:33:12.784 [DEBUG] [Thread-125418] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:33:12.784 [DEBUG] [Thread-125418] [transport.py] [_log()] client lang: <none>
2025-11-04T00:33:12.784 [DEBUG] [Thread-125418] [transport.py] [_log()] server lang: <none>
2025-11-04T00:33:12.784 [DEBUG] [Thread-125418] [transport.py] [_log()] kex follows: False
2025-11-04T00:33:12.784 [DEBUG] [Thread-125418] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:33:12.784 [DEBUG] [Thread-125418] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:33:12.784 [DEBUG] [Thread-125418] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:33:12.784 [DEBUG] [Thread-125418] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:33:12.784 [DEBUG] [Thread-125418] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:33:12.784 [DEBUG] [Thread-125418] [transport.py] [_log()] Compression: none
2025-11-04T00:33:12.784 [DEBUG] [Thread-125418] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:33:12.794 [DEBUG] [Thread-125420 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:33:12.797 [DEBUG] [Thread-125418] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:33:12.797 [DEBUG] [Thread-125418] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:33:12.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:33:12.797 [DEBUG] [Thread-125418] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:33:12.798 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:33:12.798 [DEBUG] [Thread-125418] [transport.py] [_log()] userauth is OK
2025-11-04T00:33:12.798 [DEBUG] [Thread-125418] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:33:12.798 [DEBUG] [Thread-125418] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:33:12.798 [DEBUG] [Thread-125418] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:33:12.798 [DEBUG] [Thread-125418] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:33:12.808 [INFO] [Thread-125418] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:33:12.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:33:13.436 [DEBUG] [Thread-125418] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:33:13.437 [DEBUG] [Thread-125418] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:33:13.437 [DEBUG] [Thread-125418] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:33:13.479 [DEBUG] [Thread-125418] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:33:13.479 [DEBUG] [Thread-125418] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:33:13.481 [DEBUG] [Thread-125418] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:33:13.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:33:13.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:33:13.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:33:13.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:33:13.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:33:13.500 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:33:13.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:33:13.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:33:13.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:33:13.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.939335 -999.00  +18.30  12.92     18   -6.10 1 1 1 1 1     0    0 23.10 -44.36 ZNESW 13.4 12.9 307.8 16.6 18.6 -24.7 18.5 -23.8 18.3 -23.3 18.6 -24.4
2025-11-04T00:33:13.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:33:13.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:33:13.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.939335
2025-11-04T00:33:13.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:33:13.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:33:13.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:33:13.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:33:13.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:33:13.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:32:55', tmtdew=28.8, humidity=13.31, cloud=0.0, wind=14.66, temperature=18.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:32:56', seeing=0.98, atlas_timestamp='2025-11-03T22:32:38.544', atlas_cloud=1, atlas_rain=1, zp_data=[0.0547500000000003, -0.0017499999999994742, 0.11325000000000074, 0.12149999999999928, 0.09350000000000058, 0.03175000000000239, -0.030500000000001748, 0.07125000000000092, 0.12149999999999928, 0.10899999999999999, 0.14975000000000094, 0.02200000000000024, 0.0730000000000004, -0.1277500000000007, -0.23000000000000043, 0.036999999999999034, 0.06325000000000003, 0.0754999999999999, 0.1819999999999986, 0.1712499999999988, 0.1404999999999994, 0.16924999999999812, -0.06674999999999898, 0.09024999999999928, 0.10049999999999848, 0.19299999999999962, 0.24375000000000036, 0.24150000000000027, 0.30350000000000055, 0.27200000000000113, 0.02400000000000091, 0.12850000000000072, 0.08624999999999972], zp_timestamp='2025-11-03T22:29:00')
2025-11-04T00:33:13.501 [DEBUG] [Thread-125418] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:33:13.574 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:33:13.586 [DEBUG] [Thread-125422] [transport.py] [_log()] starting thread (client mode): 0x1174f400
2025-11-04T00:33:13.586 [DEBUG] [Thread-125422] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:33:13.601 [DEBUG] [Thread-125422] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:33:13.602 [INFO] [Thread-125422] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:33:13.611 [DEBUG] [Thread-125422] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:33:13.612 [DEBUG] [Thread-125422] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:33:13.612 [DEBUG] [Thread-125422] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:33:13.612 [DEBUG] [Thread-125422] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:33:13.612 [DEBUG] [Thread-125422] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:33:13.612 [DEBUG] [Thread-125422] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:33:13.612 [DEBUG] [Thread-125422] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:33:13.613 [DEBUG] [Thread-125422] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:33:13.613 [DEBUG] [Thread-125422] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:33:13.613 [DEBUG] [Thread-125422] [transport.py] [_log()] client lang: <none>
2025-11-04T00:33:13.613 [DEBUG] [Thread-125422] [transport.py] [_log()] server lang: <none>
2025-11-04T00:33:13.613 [DEBUG] [Thread-125422] [transport.py] [_log()] kex follows: False
2025-11-04T00:33:13.613 [DEBUG] [Thread-125422] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:33:13.613 [DEBUG] [Thread-125422] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:33:13.613 [DEBUG] [Thread-125422] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:33:13.613 [DEBUG] [Thread-125422] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:33:13.613 [DEBUG] [Thread-125422] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:33:13.613 [DEBUG] [Thread-125422] [transport.py] [_log()] Compression: none
2025-11-04T00:33:13.613 [DEBUG] [Thread-125422] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:33:13.670 [DEBUG] [Thread-125422] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:33:13.671 [DEBUG] [Thread-125422] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:33:13.671 [DEBUG] [Thread-125422] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:33:13.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:33:13.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:33:13.732 [DEBUG] [Thread-125422] [transport.py] [_log()] userauth is OK
2025-11-04T00:33:13.732 [DEBUG] [Thread-125422] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:33:13.733 [DEBUG] [Thread-125422] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:33:13.733 [DEBUG] [Thread-125422] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:33:13.733 [DEBUG] [Thread-125422] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:33:13.753 [INFO] [Thread-125422] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:33:13.754 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:33:13.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:33:14.651 [DEBUG] [Thread-125422] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:33:14.651 [DEBUG] [Thread-125422] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:33:14.699 [DEBUG] [Thread-125422] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:33:14.700 [DEBUG] [Thread-125422] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:33:14.709 [DEBUG] [Thread-125422] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:33:14.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:33:14.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:33:14.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:33:14.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:33:14.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:33:14.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:33:14.746 [DEBUG] [Thread-125422] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:33:19.923 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:33:19.995 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:33:19.998 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:33:22.088 [DEBUG] [Thread-125424 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:33:37.131 [DEBUG] [Thread-125425 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:33:44.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:33:44.742 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:33:44.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:33:45.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 33, 28), 28.8, 13.31, 0.0, 14.84, 18.15, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:33:45.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:33:28
2025-11-04T00:33:45.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:33:45.716 [DEBUG] [Thread-125426] [transport.py] [_log()] starting thread (client mode): 0xed5f220
2025-11-04T00:33:45.716 [DEBUG] [Thread-125426] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:33:45.731 [DEBUG] [Thread-125426] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:33:45.731 [INFO] [Thread-125426] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:33:45.735 [DEBUG] [Thread-125426] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:33:45.735 [DEBUG] [Thread-125426] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:33:45.735 [DEBUG] [Thread-125426] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:33:45.735 [DEBUG] [Thread-125426] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:33:45.735 [DEBUG] [Thread-125426] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:33:45.735 [DEBUG] [Thread-125426] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:33:45.735 [DEBUG] [Thread-125426] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:33:45.735 [DEBUG] [Thread-125426] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:33:45.735 [DEBUG] [Thread-125426] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:33:45.735 [DEBUG] [Thread-125426] [transport.py] [_log()] client lang: <none>
2025-11-04T00:33:45.735 [DEBUG] [Thread-125426] [transport.py] [_log()] server lang: <none>
2025-11-04T00:33:45.735 [DEBUG] [Thread-125426] [transport.py] [_log()] kex follows: False
2025-11-04T00:33:45.735 [DEBUG] [Thread-125426] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:33:45.735 [DEBUG] [Thread-125426] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:33:45.735 [DEBUG] [Thread-125426] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:33:45.736 [DEBUG] [Thread-125426] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:33:45.736 [DEBUG] [Thread-125426] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:33:45.736 [DEBUG] [Thread-125426] [transport.py] [_log()] Compression: none
2025-11-04T00:33:45.736 [DEBUG] [Thread-125426] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:33:45.757 [DEBUG] [Thread-125426] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:33:45.757 [DEBUG] [Thread-125426] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:33:45.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:33:45.758 [DEBUG] [Thread-125426] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:33:45.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:33:45.805 [DEBUG] [Thread-125426] [transport.py] [_log()] userauth is OK
2025-11-04T00:33:45.805 [DEBUG] [Thread-125426] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:33:45.805 [DEBUG] [Thread-125426] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:33:45.805 [DEBUG] [Thread-125426] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:33:45.805 [DEBUG] [Thread-125426] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:33:45.825 [INFO] [Thread-125426] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:33:45.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:33:46.471 [DEBUG] [Thread-125426] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:33:46.472 [DEBUG] [Thread-125426] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:33:46.473 [DEBUG] [Thread-125426] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:33:46.514 [DEBUG] [Thread-125426] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:33:46.514 [DEBUG] [Thread-125426] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:33:46.517 [DEBUG] [Thread-125426] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:33:46.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:33:46.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:33:46.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:33:46.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:33:46.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:33:46.541 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:33:46.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:33:46.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:33:46.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:33:46.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.940029 -999.00  +18.30  13.20     18   -6.10 1 1 1 1 1     0    0 23.05 -46.70 ZNESW 13.6 13.2 311.8 15.7 18.6 -24.8 18.5 -23.7 18.2 -23.3 18.5 -24.5
2025-11-04T00:33:46.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:33:46.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:33:46.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.940029
2025-11-04T00:33:46.548 [DEBUG] [Thread-125426] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:33:46.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:33:46.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:33:46.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:33:46.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:33:46.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:33:46.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:33:28', tmtdew=28.8, humidity=13.31, cloud=0.0, wind=14.84, temperature=18.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:33:28', seeing=0.94, atlas_timestamp='2025-11-03T22:33:38.506', atlas_cloud=1, atlas_rain=1, zp_data=[0.0547500000000003, -0.0017499999999994742, 0.11325000000000074, 0.12149999999999928, 0.09350000000000058, 0.03175000000000239, -0.030500000000001748, 0.07125000000000092, 0.12149999999999928, 0.10899999999999999, 0.14975000000000094, 0.02200000000000024, 0.0730000000000004, -0.1277500000000007, -0.23000000000000043, 0.036999999999999034, 0.06325000000000003, 0.0754999999999999, 0.1819999999999986, 0.1712499999999988, 0.1404999999999994, 0.16924999999999812, -0.06674999999999898, 0.09024999999999928, 0.10049999999999848, 0.19299999999999962, 0.24375000000000036, 0.24150000000000027, 0.30350000000000055, 0.27200000000000113, 0.02400000000000091, 0.12850000000000072, 0.08624999999999972], zp_timestamp='2025-11-03T22:29:00')
2025-11-04T00:33:46.630 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:33:46.646 [DEBUG] [Thread-125429] [transport.py] [_log()] starting thread (client mode): 0x1174dc90
2025-11-04T00:33:46.646 [DEBUG] [Thread-125429] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:33:46.666 [DEBUG] [Thread-125429] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:33:46.666 [INFO] [Thread-125429] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:33:46.677 [DEBUG] [Thread-125429] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:33:46.677 [DEBUG] [Thread-125429] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:33:46.677 [DEBUG] [Thread-125429] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:33:46.677 [DEBUG] [Thread-125429] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:33:46.677 [DEBUG] [Thread-125429] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:33:46.677 [DEBUG] [Thread-125429] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:33:46.677 [DEBUG] [Thread-125429] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:33:46.677 [DEBUG] [Thread-125429] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:33:46.677 [DEBUG] [Thread-125429] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:33:46.677 [DEBUG] [Thread-125429] [transport.py] [_log()] client lang: <none>
2025-11-04T00:33:46.677 [DEBUG] [Thread-125429] [transport.py] [_log()] server lang: <none>
2025-11-04T00:33:46.677 [DEBUG] [Thread-125429] [transport.py] [_log()] kex follows: False
2025-11-04T00:33:46.677 [DEBUG] [Thread-125429] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:33:46.677 [DEBUG] [Thread-125429] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:33:46.677 [DEBUG] [Thread-125429] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:33:46.677 [DEBUG] [Thread-125429] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:33:46.677 [DEBUG] [Thread-125429] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:33:46.677 [DEBUG] [Thread-125429] [transport.py] [_log()] Compression: none
2025-11-04T00:33:46.677 [DEBUG] [Thread-125429] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:33:46.733 [DEBUG] [Thread-125429] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:33:46.734 [DEBUG] [Thread-125429] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:33:46.734 [DEBUG] [Thread-125429] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:33:46.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:33:46.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:33:46.792 [DEBUG] [Thread-125429] [transport.py] [_log()] userauth is OK
2025-11-04T00:33:46.792 [DEBUG] [Thread-125429] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:33:46.792 [DEBUG] [Thread-125429] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:33:46.792 [DEBUG] [Thread-125429] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:33:46.792 [DEBUG] [Thread-125429] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:33:46.809 [INFO] [Thread-125429] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:33:46.810 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:33:46.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:33:47.697 [DEBUG] [Thread-125429] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:33:47.697 [DEBUG] [Thread-125429] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:33:47.746 [DEBUG] [Thread-125429] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:33:47.746 [DEBUG] [Thread-125429] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:33:47.754 [DEBUG] [Thread-125429] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:33:47.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:33:47.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:33:47.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:33:47.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:33:47.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:33:47.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:33:47.788 [DEBUG] [Thread-125429] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:33:52.160 [DEBUG] [Thread-125431 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:34:07.217 [DEBUG] [Thread-125432 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:34:14.271 [DEBUG] [Thread-125433 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:34:17.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:34:17.821 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:34:17.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:34:20.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 34, 1), 28.77, 13.34, 0.0, 14.8, 18.15, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:34:20.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:34:01
2025-11-04T00:34:20.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:34:20.200 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:34:20.201 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:34:20.327 [DEBUG] [Thread-125434] [transport.py] [_log()] starting thread (client mode): 0xed43e50
2025-11-04T00:34:20.328 [DEBUG] [Thread-125434] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:34:20.342 [DEBUG] [Thread-125434] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:34:20.343 [INFO] [Thread-125434] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:34:20.346 [DEBUG] [Thread-125434] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:34:20.346 [DEBUG] [Thread-125434] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:34:20.346 [DEBUG] [Thread-125434] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:34:20.346 [DEBUG] [Thread-125434] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:34:20.347 [DEBUG] [Thread-125434] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:34:20.347 [DEBUG] [Thread-125434] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:34:20.347 [DEBUG] [Thread-125434] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:34:20.347 [DEBUG] [Thread-125434] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:34:20.347 [DEBUG] [Thread-125434] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:34:20.347 [DEBUG] [Thread-125434] [transport.py] [_log()] client lang: <none>
2025-11-04T00:34:20.347 [DEBUG] [Thread-125434] [transport.py] [_log()] server lang: <none>
2025-11-04T00:34:20.347 [DEBUG] [Thread-125434] [transport.py] [_log()] kex follows: False
2025-11-04T00:34:20.347 [DEBUG] [Thread-125434] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:34:20.348 [DEBUG] [Thread-125434] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:34:20.348 [DEBUG] [Thread-125434] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:34:20.348 [DEBUG] [Thread-125434] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:34:20.348 [DEBUG] [Thread-125434] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:34:20.348 [DEBUG] [Thread-125434] [transport.py] [_log()] Compression: none
2025-11-04T00:34:20.348 [DEBUG] [Thread-125434] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:34:20.383 [DEBUG] [Thread-125434] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:34:20.389 [DEBUG] [Thread-125434] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:34:20.391 [DEBUG] [Thread-125434] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:34:20.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:34:20.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:34:20.397 [DEBUG] [Thread-125434] [transport.py] [_log()] userauth is OK
2025-11-04T00:34:20.397 [DEBUG] [Thread-125434] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:34:20.397 [DEBUG] [Thread-125434] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:34:20.398 [DEBUG] [Thread-125434] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:34:20.398 [DEBUG] [Thread-125434] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:34:20.425 [INFO] [Thread-125434] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:34:20.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:34:21.085 [DEBUG] [Thread-125434] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:34:21.085 [DEBUG] [Thread-125434] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:34:21.086 [DEBUG] [Thread-125434] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:34:21.126 [DEBUG] [Thread-125434] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:34:21.126 [DEBUG] [Thread-125434] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:34:21.128 [DEBUG] [Thread-125434] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:34:21.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:34:21.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:34:21.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:34:21.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:34:21.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:34:21.147 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:34:21.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:34:21.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:34:21.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:34:21.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.940376 -999.00  +18.40  14.63     18   -6.00 1 1 1 1 1     0    0 23.32 -47.65 ZNESW 13.9 14.6 310.0 16.7 18.6 -24.8 18.5 -23.7 18.2 -23.6 18.5 -24.4
2025-11-04T00:34:21.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:34:21.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:34:21.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.940376
2025-11-04T00:34:21.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:34:21.158 [DEBUG] [Thread-125434] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:34:21.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:34:21.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:34:21.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:34:21.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:34:21.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:34:01', tmtdew=28.77, humidity=13.34, cloud=0.0, wind=14.8, temperature=18.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:34:01', seeing=0.94, atlas_timestamp='2025-11-03T22:34:08.486', atlas_cloud=1, atlas_rain=1, zp_data=[0.0547500000000003, -0.0017499999999994742, 0.11325000000000074, 0.12149999999999928, 0.09350000000000058, 0.03175000000000239, -0.030500000000001748, 0.07125000000000092, 0.12149999999999928, 0.10899999999999999, 0.14975000000000094, 0.02200000000000024, 0.0730000000000004, -0.1277500000000007, -0.23000000000000043, 0.036999999999999034, 0.06325000000000003, 0.0754999999999999, 0.1819999999999986, 0.1712499999999988, 0.1404999999999994, 0.16924999999999812, -0.06674999999999898, 0.09024999999999928, 0.10049999999999848, 0.19299999999999962, 0.24375000000000036, 0.24150000000000027, 0.30350000000000055, 0.27200000000000113, 0.02400000000000091, 0.12850000000000072, 0.08624999999999972], zp_timestamp='2025-11-03T22:32:00')
2025-11-04T00:34:21.240 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:34:21.254 [DEBUG] [Thread-125437] [transport.py] [_log()] starting thread (client mode): 0x117615a0
2025-11-04T00:34:21.254 [DEBUG] [Thread-125437] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:34:21.270 [DEBUG] [Thread-125437] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:34:21.270 [INFO] [Thread-125437] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:34:21.279 [DEBUG] [Thread-125437] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:34:21.279 [DEBUG] [Thread-125437] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:34:21.279 [DEBUG] [Thread-125437] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:34:21.279 [DEBUG] [Thread-125437] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:34:21.279 [DEBUG] [Thread-125437] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:34:21.279 [DEBUG] [Thread-125437] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:34:21.279 [DEBUG] [Thread-125437] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:34:21.279 [DEBUG] [Thread-125437] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:34:21.279 [DEBUG] [Thread-125437] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:34:21.279 [DEBUG] [Thread-125437] [transport.py] [_log()] client lang: <none>
2025-11-04T00:34:21.279 [DEBUG] [Thread-125437] [transport.py] [_log()] server lang: <none>
2025-11-04T00:34:21.279 [DEBUG] [Thread-125437] [transport.py] [_log()] kex follows: False
2025-11-04T00:34:21.279 [DEBUG] [Thread-125437] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:34:21.279 [DEBUG] [Thread-125437] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:34:21.279 [DEBUG] [Thread-125437] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:34:21.279 [DEBUG] [Thread-125437] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:34:21.279 [DEBUG] [Thread-125437] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:34:21.279 [DEBUG] [Thread-125437] [transport.py] [_log()] Compression: none
2025-11-04T00:34:21.279 [DEBUG] [Thread-125437] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:34:21.339 [DEBUG] [Thread-125437] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:34:21.339 [DEBUG] [Thread-125437] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:34:21.339 [DEBUG] [Thread-125437] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:34:21.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:34:21.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:34:21.399 [DEBUG] [Thread-125437] [transport.py] [_log()] userauth is OK
2025-11-04T00:34:21.399 [DEBUG] [Thread-125437] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:34:21.399 [DEBUG] [Thread-125437] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:34:21.399 [DEBUG] [Thread-125437] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:34:21.399 [DEBUG] [Thread-125437] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:34:21.422 [INFO] [Thread-125437] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:34:21.422 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:34:21.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:34:22.251 [DEBUG] [Thread-125439 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:34:22.279 [DEBUG] [Thread-125437] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:34:22.279 [DEBUG] [Thread-125437] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:34:22.329 [DEBUG] [Thread-125437] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:34:22.329 [DEBUG] [Thread-125437] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:34:22.339 [DEBUG] [Thread-125437] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:34:22.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:34:22.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:34:22.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:34:22.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:34:22.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:34:22.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:34:22.384 [DEBUG] [Thread-125437] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:34:37.335 [DEBUG] [Thread-125440 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:34:52.381 [DEBUG] [Thread-125441 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:34:52.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:34:52.404 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:34:52.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:34:53.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 34, 34), 28.83, 12.76, 0.0, 14.42, 18.12, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:34:53.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:34:34
2025-11-04T00:34:53.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:34:53.502 [DEBUG] [Thread-125442] [transport.py] [_log()] starting thread (client mode): 0x11762440
2025-11-04T00:34:53.503 [DEBUG] [Thread-125442] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:34:53.514 [DEBUG] [Thread-125442] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:34:53.514 [INFO] [Thread-125442] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:34:53.519 [DEBUG] [Thread-125442] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:34:53.519 [DEBUG] [Thread-125442] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:34:53.519 [DEBUG] [Thread-125442] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:34:53.519 [DEBUG] [Thread-125442] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:34:53.519 [DEBUG] [Thread-125442] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:34:53.519 [DEBUG] [Thread-125442] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:34:53.519 [DEBUG] [Thread-125442] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:34:53.519 [DEBUG] [Thread-125442] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:34:53.519 [DEBUG] [Thread-125442] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:34:53.519 [DEBUG] [Thread-125442] [transport.py] [_log()] client lang: <none>
2025-11-04T00:34:53.520 [DEBUG] [Thread-125442] [transport.py] [_log()] server lang: <none>
2025-11-04T00:34:53.520 [DEBUG] [Thread-125442] [transport.py] [_log()] kex follows: False
2025-11-04T00:34:53.520 [DEBUG] [Thread-125442] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:34:53.521 [DEBUG] [Thread-125442] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:34:53.521 [DEBUG] [Thread-125442] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:34:53.521 [DEBUG] [Thread-125442] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:34:53.521 [DEBUG] [Thread-125442] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:34:53.521 [DEBUG] [Thread-125442] [transport.py] [_log()] Compression: none
2025-11-04T00:34:53.521 [DEBUG] [Thread-125442] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:34:53.548 [DEBUG] [Thread-125442] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:34:53.553 [DEBUG] [Thread-125442] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:34:53.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:34:53.557 [DEBUG] [Thread-125442] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:34:53.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:34:53.559 [DEBUG] [Thread-125442] [transport.py] [_log()] userauth is OK
2025-11-04T00:34:53.559 [DEBUG] [Thread-125442] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:34:53.559 [DEBUG] [Thread-125442] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:34:53.559 [DEBUG] [Thread-125442] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:34:53.559 [DEBUG] [Thread-125442] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:34:53.591 [INFO] [Thread-125442] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:34:53.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:34:54.176 [DEBUG] [Thread-125442] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:34:54.176 [DEBUG] [Thread-125442] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:34:54.185 [DEBUG] [Thread-125442] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:34:54.218 [DEBUG] [Thread-125442] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:34:54.218 [DEBUG] [Thread-125442] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:34:54.220 [DEBUG] [Thread-125442] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:34:54.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:34:54.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:34:54.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:34:54.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:34:54.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:34:54.242 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:34:54.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:34:54.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:34:54.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:34:54.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.940724 -999.00  +18.40  14.85     18   -6.10 1 1 1 1 1     0    0 23.13 -47.02 ZNESW 14.1 14.8 314.6 16.9 18.6 -24.7 18.4 -23.8 18.2 -23.4 18.5 -24.3
2025-11-04T00:34:54.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:34:54.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:34:54.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.940724
2025-11-04T00:34:54.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:34:54.255 [DEBUG] [Thread-125442] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:34:54.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:34:54.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:34:54.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:34:54.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:34:54.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:34:34', tmtdew=28.83, humidity=12.76, cloud=0.0, wind=14.42, temperature=18.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:34:34', seeing=1.16, atlas_timestamp='2025-11-03T22:34:38.554', atlas_cloud=1, atlas_rain=1, zp_data=[0.0547500000000003, -0.0017499999999994742, 0.11325000000000074, 0.12149999999999928, 0.09350000000000058, 0.03175000000000239, -0.030500000000001748, 0.07125000000000092, 0.12149999999999928, 0.10899999999999999, 0.14975000000000094, 0.02200000000000024, 0.0730000000000004, -0.1277500000000007, -0.23000000000000043, 0.036999999999999034, 0.06325000000000003, 0.0754999999999999, 0.1819999999999986, 0.1712499999999988, 0.1404999999999994, 0.16924999999999812, -0.06674999999999898, 0.09024999999999928, 0.10049999999999848, 0.19299999999999962, 0.24375000000000036, 0.24150000000000027, 0.30350000000000055, 0.27200000000000113, 0.02400000000000091, 0.12850000000000072, 0.08624999999999972], zp_timestamp='2025-11-03T22:32:00')
2025-11-04T00:34:54.336 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:34:54.347 [DEBUG] [Thread-125445] [transport.py] [_log()] starting thread (client mode): 0xed5e350
2025-11-04T00:34:54.348 [DEBUG] [Thread-125445] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:34:54.363 [DEBUG] [Thread-125445] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:34:54.363 [INFO] [Thread-125445] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:34:54.370 [DEBUG] [Thread-125445] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:34:54.370 [DEBUG] [Thread-125445] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:34:54.370 [DEBUG] [Thread-125445] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:34:54.370 [DEBUG] [Thread-125445] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:34:54.370 [DEBUG] [Thread-125445] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:34:54.370 [DEBUG] [Thread-125445] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:34:54.370 [DEBUG] [Thread-125445] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:34:54.370 [DEBUG] [Thread-125445] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:34:54.370 [DEBUG] [Thread-125445] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:34:54.370 [DEBUG] [Thread-125445] [transport.py] [_log()] client lang: <none>
2025-11-04T00:34:54.370 [DEBUG] [Thread-125445] [transport.py] [_log()] server lang: <none>
2025-11-04T00:34:54.370 [DEBUG] [Thread-125445] [transport.py] [_log()] kex follows: False
2025-11-04T00:34:54.370 [DEBUG] [Thread-125445] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:34:54.370 [DEBUG] [Thread-125445] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:34:54.370 [DEBUG] [Thread-125445] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:34:54.370 [DEBUG] [Thread-125445] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:34:54.370 [DEBUG] [Thread-125445] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:34:54.370 [DEBUG] [Thread-125445] [transport.py] [_log()] Compression: none
2025-11-04T00:34:54.370 [DEBUG] [Thread-125445] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:34:54.429 [DEBUG] [Thread-125445] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:34:54.429 [DEBUG] [Thread-125445] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:34:54.429 [DEBUG] [Thread-125445] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:34:54.429 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:34:54.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:34:54.492 [DEBUG] [Thread-125445] [transport.py] [_log()] userauth is OK
2025-11-04T00:34:54.492 [DEBUG] [Thread-125445] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:34:54.492 [DEBUG] [Thread-125445] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:34:54.492 [DEBUG] [Thread-125445] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:34:54.492 [DEBUG] [Thread-125445] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:34:54.508 [INFO] [Thread-125445] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:34:54.508 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:34:54.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:34:55.421 [DEBUG] [Thread-125445] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:34:55.421 [DEBUG] [Thread-125445] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:34:55.474 [DEBUG] [Thread-125445] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:34:55.474 [DEBUG] [Thread-125445] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:34:55.485 [DEBUG] [Thread-125445] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:34:55.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:34:55.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:34:55.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:34:55.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:34:55.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:34:55.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:34:55.525 [DEBUG] [Thread-125445] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:35:07.411 [DEBUG] [Thread-125447 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:35:14.644 [DEBUG] [Thread-125448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:35:20.404 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:35:20.406 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:35:22.704 [DEBUG] [Thread-125449 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:35:25.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:35:25.558 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:35:25.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:35:26.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 35, 6), 28.76, 12.86, 0.0, 14.27, 18.22, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:35:26.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:35:06
2025-11-04T00:35:26.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:35:26.904 [DEBUG] [Thread-125450] [transport.py] [_log()] starting thread (client mode): 0x1174e350
2025-11-04T00:35:26.904 [DEBUG] [Thread-125450] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:35:26.913 [DEBUG] [Thread-125450] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:35:26.913 [INFO] [Thread-125450] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:35:26.915 [DEBUG] [Thread-125450] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:35:26.915 [DEBUG] [Thread-125450] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:35:26.915 [DEBUG] [Thread-125450] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:35:26.915 [DEBUG] [Thread-125450] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:35:26.915 [DEBUG] [Thread-125450] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:35:26.915 [DEBUG] [Thread-125450] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:35:26.915 [DEBUG] [Thread-125450] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:35:26.915 [DEBUG] [Thread-125450] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:35:26.915 [DEBUG] [Thread-125450] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:35:26.915 [DEBUG] [Thread-125450] [transport.py] [_log()] client lang: <none>
2025-11-04T00:35:26.915 [DEBUG] [Thread-125450] [transport.py] [_log()] server lang: <none>
2025-11-04T00:35:26.915 [DEBUG] [Thread-125450] [transport.py] [_log()] kex follows: False
2025-11-04T00:35:26.915 [DEBUG] [Thread-125450] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:35:26.915 [DEBUG] [Thread-125450] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:35:26.915 [DEBUG] [Thread-125450] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:35:26.915 [DEBUG] [Thread-125450] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:35:26.916 [DEBUG] [Thread-125450] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:35:26.916 [DEBUG] [Thread-125450] [transport.py] [_log()] Compression: none
2025-11-04T00:35:26.916 [DEBUG] [Thread-125450] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:35:26.930 [DEBUG] [Thread-125450] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:35:26.930 [DEBUG] [Thread-125450] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:35:26.931 [DEBUG] [Thread-125450] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:35:26.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:35:26.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:35:26.931 [DEBUG] [Thread-125450] [transport.py] [_log()] userauth is OK
2025-11-04T00:35:26.932 [DEBUG] [Thread-125450] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:35:26.932 [DEBUG] [Thread-125450] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:35:26.932 [DEBUG] [Thread-125450] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:35:26.932 [DEBUG] [Thread-125450] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:35:26.941 [INFO] [Thread-125450] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:35:26.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:35:28.731 [DEBUG] [Thread-125450] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:35:28.740 [DEBUG] [Thread-125450] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:35:28.740 [DEBUG] [Thread-125450] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:35:28.772 [DEBUG] [Thread-125450] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:35:28.772 [DEBUG] [Thread-125450] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:35:28.776 [DEBUG] [Thread-125450] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:35:28.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:35:28.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:35:28.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:35:28.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:35:28.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:35:28.802 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:35:28.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:35:28.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:35:28.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:35:28.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.940724 -999.00  +18.40  14.85     18   -6.10 1 1 1 1 1     0    0 23.13 -47.02 ZNESW 14.1 14.8 314.6 16.9 18.6 -24.7 18.4 -23.8 18.2 -23.4 18.5 -24.3
2025-11-04T00:35:28.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:35:28.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:35:28.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.940724
2025-11-04T00:35:28.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:35:28.809 [DEBUG] [Thread-125450] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:35:28.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:35:28.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:35:28.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:35:28.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:35:28.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:35:06', tmtdew=28.76, humidity=12.86, cloud=0.0, wind=14.27, temperature=18.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:35:07', seeing=1.11, atlas_timestamp='2025-11-03T22:34:38.554', atlas_cloud=1, atlas_rain=1, zp_data=[0.0547500000000003, -0.0017499999999994742, 0.11325000000000074, 0.12149999999999928, 0.09350000000000058, 0.03175000000000239, -0.030500000000001748, 0.07125000000000092, 0.12149999999999928, 0.10899999999999999, 0.14975000000000094, 0.02200000000000024, 0.0730000000000004, -0.1277500000000007, -0.23000000000000043, 0.036999999999999034, 0.06325000000000003, 0.0754999999999999, 0.1819999999999986, 0.1712499999999988, 0.1404999999999994, 0.16924999999999812, -0.06674999999999898, 0.09024999999999928, 0.10049999999999848, 0.19299999999999962, 0.24375000000000036, 0.24150000000000027, 0.30350000000000055, 0.27200000000000113, 0.02400000000000091, 0.12850000000000072, 0.08624999999999972], zp_timestamp='2025-11-03T22:32:00')
2025-11-04T00:35:28.905 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:35:28.922 [DEBUG] [Thread-125453] [transport.py] [_log()] starting thread (client mode): 0xed1a080
2025-11-04T00:35:28.922 [DEBUG] [Thread-125453] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:35:28.938 [DEBUG] [Thread-125453] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:35:28.938 [INFO] [Thread-125453] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:35:28.947 [DEBUG] [Thread-125453] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:35:28.948 [DEBUG] [Thread-125453] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:35:28.948 [DEBUG] [Thread-125453] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:35:28.948 [DEBUG] [Thread-125453] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:35:28.948 [DEBUG] [Thread-125453] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:35:28.948 [DEBUG] [Thread-125453] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:35:28.948 [DEBUG] [Thread-125453] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:35:28.948 [DEBUG] [Thread-125453] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:35:28.948 [DEBUG] [Thread-125453] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:35:28.948 [DEBUG] [Thread-125453] [transport.py] [_log()] client lang: <none>
2025-11-04T00:35:28.948 [DEBUG] [Thread-125453] [transport.py] [_log()] server lang: <none>
2025-11-04T00:35:28.948 [DEBUG] [Thread-125453] [transport.py] [_log()] kex follows: False
2025-11-04T00:35:28.948 [DEBUG] [Thread-125453] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:35:28.948 [DEBUG] [Thread-125453] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:35:28.949 [DEBUG] [Thread-125453] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:35:28.949 [DEBUG] [Thread-125453] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:35:28.949 [DEBUG] [Thread-125453] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:35:28.949 [DEBUG] [Thread-125453] [transport.py] [_log()] Compression: none
2025-11-04T00:35:28.949 [DEBUG] [Thread-125453] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:35:29.007 [DEBUG] [Thread-125453] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:35:29.008 [DEBUG] [Thread-125453] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:35:29.008 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:35:29.009 [DEBUG] [Thread-125453] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:35:29.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:35:29.066 [DEBUG] [Thread-125453] [transport.py] [_log()] userauth is OK
2025-11-04T00:35:29.067 [DEBUG] [Thread-125453] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:35:29.067 [DEBUG] [Thread-125453] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:35:29.067 [DEBUG] [Thread-125453] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:35:29.067 [DEBUG] [Thread-125453] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:35:29.085 [INFO] [Thread-125453] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:35:29.086 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:35:29.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:35:29.977 [DEBUG] [Thread-125453] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:35:29.977 [DEBUG] [Thread-125453] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:35:30.017 [DEBUG] [Thread-125453] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:35:30.017 [DEBUG] [Thread-125453] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:35:30.026 [DEBUG] [Thread-125453] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:35:30.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:35:30.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:35:30.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:35:30.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:35:30.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:35:30.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:35:30.062 [DEBUG] [Thread-125453] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:35:37.740 [DEBUG] [Thread-125455 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:35:52.799 [DEBUG] [Thread-125456 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:36:00.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:36:00.078 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:36:00.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:36:00.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 35, 41), 28.83, 12.83, 0.0, 14.56, 18.17, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:36:00.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:35:41
2025-11-04T00:36:00.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:36:01.124 [DEBUG] [Thread-125457] [transport.py] [_log()] starting thread (client mode): 0xed18970
2025-11-04T00:36:01.125 [DEBUG] [Thread-125457] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:36:01.143 [DEBUG] [Thread-125457] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:36:01.143 [INFO] [Thread-125457] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:36:01.146 [DEBUG] [Thread-125457] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:36:01.147 [DEBUG] [Thread-125457] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:36:01.147 [DEBUG] [Thread-125457] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:36:01.147 [DEBUG] [Thread-125457] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:36:01.147 [DEBUG] [Thread-125457] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:36:01.147 [DEBUG] [Thread-125457] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:36:01.147 [DEBUG] [Thread-125457] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:36:01.147 [DEBUG] [Thread-125457] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:36:01.147 [DEBUG] [Thread-125457] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:36:01.147 [DEBUG] [Thread-125457] [transport.py] [_log()] client lang: <none>
2025-11-04T00:36:01.147 [DEBUG] [Thread-125457] [transport.py] [_log()] server lang: <none>
2025-11-04T00:36:01.147 [DEBUG] [Thread-125457] [transport.py] [_log()] kex follows: False
2025-11-04T00:36:01.147 [DEBUG] [Thread-125457] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:36:01.147 [DEBUG] [Thread-125457] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:36:01.147 [DEBUG] [Thread-125457] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:36:01.147 [DEBUG] [Thread-125457] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:36:01.148 [DEBUG] [Thread-125457] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:36:01.148 [DEBUG] [Thread-125457] [transport.py] [_log()] Compression: none
2025-11-04T00:36:01.148 [DEBUG] [Thread-125457] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:36:01.168 [DEBUG] [Thread-125457] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:36:01.169 [DEBUG] [Thread-125457] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:36:01.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:36:01.171 [DEBUG] [Thread-125457] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:36:01.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:36:01.212 [DEBUG] [Thread-125457] [transport.py] [_log()] userauth is OK
2025-11-04T00:36:01.212 [DEBUG] [Thread-125457] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:36:01.212 [DEBUG] [Thread-125457] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:36:01.212 [DEBUG] [Thread-125457] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:36:01.212 [DEBUG] [Thread-125457] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:36:01.241 [INFO] [Thread-125457] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:36:01.241 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:36:01.901 [DEBUG] [Thread-125457] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:36:01.902 [DEBUG] [Thread-125457] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:36:01.904 [DEBUG] [Thread-125457] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:36:01.942 [DEBUG] [Thread-125457] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:36:01.943 [DEBUG] [Thread-125457] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:36:01.947 [DEBUG] [Thread-125457] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:36:01.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:36:01.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:36:01.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:36:01.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:36:01.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:36:01.976 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:36:01.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:36:01.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:36:01.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:36:01.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.941071 -999.00  +18.40  13.46     18   -6.10 1 1 1 1 1     0    0 23.90 -48.55 ZNESW 16.0 13.5 313.6 17.0 18.5 -24.7 18.4 -23.7 18.2 -23.5 18.5 -24.5
2025-11-04T00:36:01.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:36:01.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:36:01.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.941071
2025-11-04T00:36:01.984 [DEBUG] [Thread-125457] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:36:01.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:36:02.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:36:02.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:36:02.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:36:02.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:36:02.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:35:41', tmtdew=28.83, humidity=12.83, cloud=0.0, wind=14.56, temperature=18.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:35:42', seeing=1.11, atlas_timestamp='2025-11-03T22:35:08.534', atlas_cloud=1, atlas_rain=1, zp_data=[0.0547500000000003, -0.0017499999999994742, 0.11325000000000074, 0.12149999999999928, 0.09350000000000058, 0.03175000000000239, -0.030500000000001748, 0.07125000000000092, 0.12149999999999928, 0.10899999999999999, 0.14975000000000094, 0.02200000000000024, 0.0730000000000004, -0.1277500000000007, -0.23000000000000043, 0.036999999999999034, 0.06325000000000003, 0.0754999999999999, 0.1819999999999986, 0.1712499999999988, 0.1404999999999994, 0.16924999999999812, -0.06674999999999898, 0.09024999999999928, 0.10049999999999848, 0.19299999999999962, 0.24375000000000036, 0.24150000000000027, 0.30350000000000055, 0.27200000000000113, 0.02400000000000091, 0.12850000000000072, 0.08624999999999972], zp_timestamp='2025-11-03T22:32:00')
2025-11-04T00:36:02.095 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:36:02.106 [DEBUG] [Thread-125460] [transport.py] [_log()] starting thread (client mode): 0xed66890
2025-11-04T00:36:02.106 [DEBUG] [Thread-125460] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:36:02.123 [DEBUG] [Thread-125460] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:36:02.123 [INFO] [Thread-125460] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:36:02.131 [DEBUG] [Thread-125460] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:36:02.131 [DEBUG] [Thread-125460] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:36:02.132 [DEBUG] [Thread-125460] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:36:02.132 [DEBUG] [Thread-125460] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:36:02.132 [DEBUG] [Thread-125460] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:36:02.132 [DEBUG] [Thread-125460] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:36:02.132 [DEBUG] [Thread-125460] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:36:02.132 [DEBUG] [Thread-125460] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:36:02.132 [DEBUG] [Thread-125460] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:36:02.132 [DEBUG] [Thread-125460] [transport.py] [_log()] client lang: <none>
2025-11-04T00:36:02.132 [DEBUG] [Thread-125460] [transport.py] [_log()] server lang: <none>
2025-11-04T00:36:02.132 [DEBUG] [Thread-125460] [transport.py] [_log()] kex follows: False
2025-11-04T00:36:02.132 [DEBUG] [Thread-125460] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:36:02.132 [DEBUG] [Thread-125460] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:36:02.133 [DEBUG] [Thread-125460] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:36:02.133 [DEBUG] [Thread-125460] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:36:02.133 [DEBUG] [Thread-125460] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:36:02.133 [DEBUG] [Thread-125460] [transport.py] [_log()] Compression: none
2025-11-04T00:36:02.133 [DEBUG] [Thread-125460] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:36:02.193 [DEBUG] [Thread-125460] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:36:02.194 [DEBUG] [Thread-125460] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:36:02.194 [DEBUG] [Thread-125460] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:36:02.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:36:02.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:36:02.257 [DEBUG] [Thread-125460] [transport.py] [_log()] userauth is OK
2025-11-04T00:36:02.257 [DEBUG] [Thread-125460] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:36:02.257 [DEBUG] [Thread-125460] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:36:02.257 [DEBUG] [Thread-125460] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:36:02.257 [DEBUG] [Thread-125460] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:36:02.278 [INFO] [Thread-125460] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:36:02.279 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:36:02.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:36:03.191 [DEBUG] [Thread-125460] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:36:03.192 [DEBUG] [Thread-125460] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:36:03.231 [DEBUG] [Thread-125460] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:36:03.231 [DEBUG] [Thread-125460] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:36:03.240 [DEBUG] [Thread-125460] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:36:03.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:36:03.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:36:03.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:36:03.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:36:03.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:36:03.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:36:03.279 [DEBUG] [Thread-125460] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:36:07.827 [DEBUG] [Thread-125462 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:36:15.761 [DEBUG] [Thread-125463 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:36:20.606 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:36:20.608 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:36:22.900 [DEBUG] [Thread-125464 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:36:33.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:36:33.301 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:36:33.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:36:34.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 36, 14), 28.8, 12.86, 0.0, 14.31, 18.18, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:36:34.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:36:14
2025-11-04T00:36:34.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:36:34.367 [DEBUG] [Thread-125465] [transport.py] [_log()] starting thread (client mode): 0x11761120
2025-11-04T00:36:34.367 [DEBUG] [Thread-125465] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:36:34.387 [DEBUG] [Thread-125465] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:36:34.387 [INFO] [Thread-125465] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:36:34.390 [DEBUG] [Thread-125465] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:36:34.390 [DEBUG] [Thread-125465] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:36:34.390 [DEBUG] [Thread-125465] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:36:34.391 [DEBUG] [Thread-125465] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:36:34.391 [DEBUG] [Thread-125465] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:36:34.391 [DEBUG] [Thread-125465] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:36:34.391 [DEBUG] [Thread-125465] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:36:34.391 [DEBUG] [Thread-125465] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:36:34.391 [DEBUG] [Thread-125465] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:36:34.391 [DEBUG] [Thread-125465] [transport.py] [_log()] client lang: <none>
2025-11-04T00:36:34.391 [DEBUG] [Thread-125465] [transport.py] [_log()] server lang: <none>
2025-11-04T00:36:34.391 [DEBUG] [Thread-125465] [transport.py] [_log()] kex follows: False
2025-11-04T00:36:34.391 [DEBUG] [Thread-125465] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:36:34.391 [DEBUG] [Thread-125465] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:36:34.392 [DEBUG] [Thread-125465] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:36:34.392 [DEBUG] [Thread-125465] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:36:34.392 [DEBUG] [Thread-125465] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:36:34.392 [DEBUG] [Thread-125465] [transport.py] [_log()] Compression: none
2025-11-04T00:36:34.392 [DEBUG] [Thread-125465] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:36:34.412 [DEBUG] [Thread-125465] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:36:34.413 [DEBUG] [Thread-125465] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:36:34.413 [DEBUG] [Thread-125465] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:36:34.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:36:34.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:36:34.456 [DEBUG] [Thread-125465] [transport.py] [_log()] userauth is OK
2025-11-04T00:36:34.456 [DEBUG] [Thread-125465] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:36:34.456 [DEBUG] [Thread-125465] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:36:34.456 [DEBUG] [Thread-125465] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:36:34.456 [DEBUG] [Thread-125465] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:36:34.492 [INFO] [Thread-125465] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:36:34.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:36:35.207 [DEBUG] [Thread-125465] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:36:35.207 [DEBUG] [Thread-125465] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:36:35.207 [DEBUG] [Thread-125465] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:36:35.248 [DEBUG] [Thread-125465] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:36:35.248 [DEBUG] [Thread-125465] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:36:35.250 [DEBUG] [Thread-125465] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:36:35.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:36:35.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:36:35.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:36:35.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:36:35.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:36:35.268 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:36:35.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:36:35.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:36:35.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:36:35.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.941418 -999.00  +18.40  15.13     18   -6.10 1 1 1 1 1     0    0 23.18 -44.74 ZNESW 14.8 15.1 313.8 17.8 18.5 -24.7 18.4 -23.7 18.2 -23.4 18.4 -24.3
2025-11-04T00:36:35.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:36:35.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:36:35.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.941418
2025-11-04T00:36:35.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:36:35.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:36:35.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:36:35.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:36:35.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:36:35.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:36:14', tmtdew=28.8, humidity=12.86, cloud=0.0, wind=14.31, temperature=18.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:36:15', seeing=1.16, atlas_timestamp='2025-11-03T22:35:38.515', atlas_cloud=1, atlas_rain=1, zp_data=[0.0547500000000003, -0.0017499999999994742, 0.11325000000000074, 0.12149999999999928, 0.09350000000000058, 0.03175000000000239, -0.030500000000001748, 0.07125000000000092, 0.12149999999999928, 0.10899999999999999, 0.14975000000000094, 0.02200000000000024, 0.0730000000000004, -0.1277500000000007, -0.23000000000000043, 0.036999999999999034, 0.06325000000000003, 0.0754999999999999, 0.1819999999999986, 0.1712499999999988, 0.1404999999999994, 0.16924999999999812, -0.06674999999999898, 0.09024999999999928, 0.10049999999999848, 0.19299999999999962, 0.24375000000000036, 0.24150000000000027, 0.30350000000000055, 0.27200000000000113, 0.02400000000000091, 0.12850000000000072, 0.08624999999999972], zp_timestamp='2025-11-03T22:32:00')
2025-11-04T00:36:35.269 [DEBUG] [Thread-125465] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:36:35.343 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:36:35.364 [DEBUG] [Thread-125468] [transport.py] [_log()] starting thread (client mode): 0x1174f100
2025-11-04T00:36:35.364 [DEBUG] [Thread-125468] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:36:35.379 [DEBUG] [Thread-125468] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:36:35.379 [INFO] [Thread-125468] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:36:35.389 [DEBUG] [Thread-125468] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:36:35.389 [DEBUG] [Thread-125468] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:36:35.389 [DEBUG] [Thread-125468] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:36:35.389 [DEBUG] [Thread-125468] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:36:35.389 [DEBUG] [Thread-125468] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:36:35.389 [DEBUG] [Thread-125468] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:36:35.389 [DEBUG] [Thread-125468] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:36:35.389 [DEBUG] [Thread-125468] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:36:35.389 [DEBUG] [Thread-125468] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:36:35.389 [DEBUG] [Thread-125468] [transport.py] [_log()] client lang: <none>
2025-11-04T00:36:35.389 [DEBUG] [Thread-125468] [transport.py] [_log()] server lang: <none>
2025-11-04T00:36:35.389 [DEBUG] [Thread-125468] [transport.py] [_log()] kex follows: False
2025-11-04T00:36:35.389 [DEBUG] [Thread-125468] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:36:35.389 [DEBUG] [Thread-125468] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:36:35.389 [DEBUG] [Thread-125468] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:36:35.389 [DEBUG] [Thread-125468] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:36:35.389 [DEBUG] [Thread-125468] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:36:35.389 [DEBUG] [Thread-125468] [transport.py] [_log()] Compression: none
2025-11-04T00:36:35.389 [DEBUG] [Thread-125468] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:36:35.447 [DEBUG] [Thread-125468] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:36:35.447 [DEBUG] [Thread-125468] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:36:35.447 [DEBUG] [Thread-125468] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:36:35.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:36:35.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:36:35.506 [DEBUG] [Thread-125468] [transport.py] [_log()] userauth is OK
2025-11-04T00:36:35.506 [DEBUG] [Thread-125468] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:36:35.506 [DEBUG] [Thread-125468] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:36:35.506 [DEBUG] [Thread-125468] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:36:35.506 [DEBUG] [Thread-125468] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:36:35.522 [INFO] [Thread-125468] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:36:35.522 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:36:35.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:36:36.370 [DEBUG] [Thread-125468] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:36:36.370 [DEBUG] [Thread-125468] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:36:36.421 [DEBUG] [Thread-125468] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:36:36.421 [DEBUG] [Thread-125468] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:36:36.435 [DEBUG] [Thread-125468] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:36:36.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:36:36.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:36:36.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:36:36.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:36:36.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:36:36.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:36:36.477 [DEBUG] [Thread-125468] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:36:37.926 [DEBUG] [Thread-125470 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:36:52.975 [DEBUG] [Thread-125471 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:37:06.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:37:06.553 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:37:06.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:37:08.058 [DEBUG] [Thread-125472 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:37:09.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 36, 49), 28.81, 12.86, 0.0, 14.31, 18.23, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:37:09.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:36:49
2025-11-04T00:37:09.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:37:10.219 [DEBUG] [Thread-125473] [transport.py] [_log()] starting thread (client mode): 0xed070d0
2025-11-04T00:37:10.229 [DEBUG] [Thread-125473] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:37:10.230 [DEBUG] [Thread-125473] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:37:10.231 [INFO] [Thread-125473] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:37:10.260 [DEBUG] [Thread-125473] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:37:10.260 [DEBUG] [Thread-125473] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:37:10.260 [DEBUG] [Thread-125473] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:37:10.261 [DEBUG] [Thread-125473] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:37:10.261 [DEBUG] [Thread-125473] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:37:10.261 [DEBUG] [Thread-125473] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:37:10.261 [DEBUG] [Thread-125473] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:37:10.261 [DEBUG] [Thread-125473] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:37:10.261 [DEBUG] [Thread-125473] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:37:10.261 [DEBUG] [Thread-125473] [transport.py] [_log()] client lang: <none>
2025-11-04T00:37:10.261 [DEBUG] [Thread-125473] [transport.py] [_log()] server lang: <none>
2025-11-04T00:37:10.262 [DEBUG] [Thread-125473] [transport.py] [_log()] kex follows: False
2025-11-04T00:37:10.262 [DEBUG] [Thread-125473] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:37:10.268 [DEBUG] [Thread-125473] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:37:10.268 [DEBUG] [Thread-125473] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:37:10.268 [DEBUG] [Thread-125473] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:37:10.268 [DEBUG] [Thread-125473] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:37:10.268 [DEBUG] [Thread-125473] [transport.py] [_log()] Compression: none
2025-11-04T00:37:10.268 [DEBUG] [Thread-125473] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:37:10.394 [DEBUG] [Thread-125473] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:37:10.419 [DEBUG] [Thread-125473] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:37:10.423 [DEBUG] [Thread-125473] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:37:10.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:37:10.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:37:10.445 [DEBUG] [Thread-125473] [transport.py] [_log()] userauth is OK
2025-11-04T00:37:10.446 [DEBUG] [Thread-125473] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:37:10.447 [DEBUG] [Thread-125473] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:37:10.447 [DEBUG] [Thread-125473] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:37:10.447 [DEBUG] [Thread-125473] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:37:10.494 [INFO] [Thread-125473] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:37:10.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:37:11.120 [DEBUG] [Thread-125473] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:37:11.120 [DEBUG] [Thread-125473] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:37:11.130 [DEBUG] [Thread-125473] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:37:11.163 [DEBUG] [Thread-125473] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:37:11.163 [DEBUG] [Thread-125473] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:37:11.168 [DEBUG] [Thread-125473] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:37:11.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:37:11.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:37:11.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:37:11.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:37:11.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:37:11.206 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:37:11.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:37:11.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:37:11.218 [DEBUG] [Thread-125473] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:37:11.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:37:11.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.942113 -999.00  +18.50  17.73     18   -6.00 1 1 1 1 1     0    0 23.51 -44.92 ZNESW 16.2 17.7 312.6 20.0 18.5 -24.7 18.4 -23.7 18.2 -23.3 18.4 -24.3
2025-11-04T00:37:11.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:37:11.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:37:11.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.942113
2025-11-04T00:37:11.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:37:11.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:37:11.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:37:11.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:37:11.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:37:11.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:36:49', tmtdew=28.81, humidity=12.86, cloud=0.0, wind=14.31, temperature=18.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:36:50', seeing=1.21, atlas_timestamp='2025-11-03T22:36:38.563', atlas_cloud=1, atlas_rain=1, zp_data=[0.0467499999999994, 0.02224999999999966, 0.06975000000000087, 0.09299999999999997, 0.10650000000000048, -0.010749999999999815, -0.12650000000000006, 0.01925000000000132, 0.06049999999999933, 0.0519999999999996, 0.1112499999999983, 0.03250000000000064, 0.11749999999999972, 0.05325000000000024, -0.2480000000000011, 0.03849999999999909, 0.10474999999999923, 0.10449999999999982, 0.15450000000000053, 0.1712499999999988, 0.16499999999999915, 0.03774999999999906, -0.03474999999999895, 0.024750000000000938, 0.10599999999999987, 0.1974999999999998, 0.1957500000000003, 0.22250000000000014, 0.23150000000000048, 0.269000000000001, 0.08700000000000152, 0.13950000000000173, 0.08074999999999832], zp_timestamp='2025-11-03T22:36:00')
2025-11-04T00:37:11.472 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:37:11.487 [DEBUG] [Thread-125476] [transport.py] [_log()] starting thread (client mode): 0xed67d00
2025-11-04T00:37:11.488 [DEBUG] [Thread-125476] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:37:11.498 [DEBUG] [Thread-125476] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:37:11.499 [INFO] [Thread-125476] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:37:11.506 [DEBUG] [Thread-125476] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:37:11.507 [DEBUG] [Thread-125476] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:37:11.507 [DEBUG] [Thread-125476] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:37:11.507 [DEBUG] [Thread-125476] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:37:11.507 [DEBUG] [Thread-125476] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:37:11.507 [DEBUG] [Thread-125476] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:37:11.507 [DEBUG] [Thread-125476] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:37:11.507 [DEBUG] [Thread-125476] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:37:11.507 [DEBUG] [Thread-125476] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:37:11.507 [DEBUG] [Thread-125476] [transport.py] [_log()] client lang: <none>
2025-11-04T00:37:11.507 [DEBUG] [Thread-125476] [transport.py] [_log()] server lang: <none>
2025-11-04T00:37:11.507 [DEBUG] [Thread-125476] [transport.py] [_log()] kex follows: False
2025-11-04T00:37:11.507 [DEBUG] [Thread-125476] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:37:11.507 [DEBUG] [Thread-125476] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:37:11.507 [DEBUG] [Thread-125476] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:37:11.507 [DEBUG] [Thread-125476] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:37:11.508 [DEBUG] [Thread-125476] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:37:11.508 [DEBUG] [Thread-125476] [transport.py] [_log()] Compression: none
2025-11-04T00:37:11.508 [DEBUG] [Thread-125476] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:37:11.565 [DEBUG] [Thread-125476] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:37:11.566 [DEBUG] [Thread-125476] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:37:11.566 [DEBUG] [Thread-125476] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:37:11.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:37:11.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:37:11.623 [DEBUG] [Thread-125476] [transport.py] [_log()] userauth is OK
2025-11-04T00:37:11.623 [DEBUG] [Thread-125476] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:37:11.624 [DEBUG] [Thread-125476] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:37:11.624 [DEBUG] [Thread-125476] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:37:11.624 [DEBUG] [Thread-125476] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:37:11.638 [INFO] [Thread-125476] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:37:11.638 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:37:11.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:37:12.479 [DEBUG] [Thread-125476] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:37:12.479 [DEBUG] [Thread-125476] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:37:12.530 [DEBUG] [Thread-125476] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:37:12.530 [DEBUG] [Thread-125476] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:37:12.541 [DEBUG] [Thread-125476] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:37:12.553 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:37:12.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:37:12.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:37:12.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:37:12.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:37:12.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:37:12.609 [DEBUG] [Thread-125476] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:37:16.092 [DEBUG] [Thread-125478 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:37:20.814 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:37:20.818 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:37:23.098 [DEBUG] [Thread-125479 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:37:38.598 [DEBUG] [Thread-125480 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:37:42.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:37:42.629 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:37:42.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:37:43.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 37, 28), 28.85, 12.83, 0.0, 14.56, 18.25, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:37:43.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:37:28
2025-11-04T00:37:43.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:37:43.691 [DEBUG] [Thread-125481] [transport.py] [_log()] starting thread (client mode): 0xed66380
2025-11-04T00:37:43.691 [DEBUG] [Thread-125481] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:37:43.711 [DEBUG] [Thread-125481] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:37:43.711 [INFO] [Thread-125481] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:37:43.715 [DEBUG] [Thread-125481] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:37:43.715 [DEBUG] [Thread-125481] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:37:43.715 [DEBUG] [Thread-125481] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:37:43.715 [DEBUG] [Thread-125481] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:37:43.715 [DEBUG] [Thread-125481] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:37:43.715 [DEBUG] [Thread-125481] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:37:43.715 [DEBUG] [Thread-125481] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:37:43.715 [DEBUG] [Thread-125481] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:37:43.715 [DEBUG] [Thread-125481] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:37:43.715 [DEBUG] [Thread-125481] [transport.py] [_log()] client lang: <none>
2025-11-04T00:37:43.715 [DEBUG] [Thread-125481] [transport.py] [_log()] server lang: <none>
2025-11-04T00:37:43.715 [DEBUG] [Thread-125481] [transport.py] [_log()] kex follows: False
2025-11-04T00:37:43.715 [DEBUG] [Thread-125481] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:37:43.715 [DEBUG] [Thread-125481] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:37:43.715 [DEBUG] [Thread-125481] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:37:43.716 [DEBUG] [Thread-125481] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:37:43.716 [DEBUG] [Thread-125481] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:37:43.716 [DEBUG] [Thread-125481] [transport.py] [_log()] Compression: none
2025-11-04T00:37:43.716 [DEBUG] [Thread-125481] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:37:43.732 [DEBUG] [Thread-125481] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:37:43.733 [DEBUG] [Thread-125481] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:37:43.733 [DEBUG] [Thread-125481] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:37:43.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:37:43.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:37:43.734 [DEBUG] [Thread-125481] [transport.py] [_log()] userauth is OK
2025-11-04T00:37:43.734 [DEBUG] [Thread-125481] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:37:43.734 [DEBUG] [Thread-125481] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:37:43.734 [DEBUG] [Thread-125481] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:37:43.734 [DEBUG] [Thread-125481] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:37:43.750 [INFO] [Thread-125481] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:37:43.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:37:44.400 [DEBUG] [Thread-125481] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:37:44.400 [DEBUG] [Thread-125481] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:37:44.400 [DEBUG] [Thread-125481] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:37:44.442 [DEBUG] [Thread-125481] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:37:44.442 [DEBUG] [Thread-125481] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:37:44.444 [DEBUG] [Thread-125481] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:37:44.455 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:37:44.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:37:44.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:37:44.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:37:44.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:37:44.463 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:37:44.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:37:44.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:37:44.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:37:44.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.942460 -999.00  +18.50  17.12     18   -6.00 1 1 1 1 1     0    0 23.53 -41.23 ZNESW 18.2 17.1 315.8 19.7 18.5 -24.7 18.4 -23.6 18.2 -23.3 18.5 -24.3
2025-11-04T00:37:44.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:37:44.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:37:44.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.942460
2025-11-04T00:37:44.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:37:44.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:37:44.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:37:44.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:37:44.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:37:44.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:37:28', tmtdew=28.85, humidity=12.83, cloud=0.0, wind=14.56, temperature=18.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:37:30', seeing=1.05, atlas_timestamp='2025-11-03T22:37:08.544', atlas_cloud=1, atlas_rain=1, zp_data=[0.0467499999999994, 0.02224999999999966, 0.06975000000000087, 0.09299999999999997, 0.10650000000000048, -0.010749999999999815, -0.12650000000000006, 0.01925000000000132, 0.06049999999999933, 0.0519999999999996, 0.1112499999999983, 0.03250000000000064, 0.11749999999999972, 0.05325000000000024, -0.2480000000000011, 0.03849999999999909, 0.10474999999999923, 0.10449999999999982, 0.15450000000000053, 0.1712499999999988, 0.16499999999999915, 0.03774999999999906, -0.03474999999999895, 0.024750000000000938, 0.10599999999999987, 0.1974999999999998, 0.1957500000000003, 0.22250000000000014, 0.23150000000000048, 0.269000000000001, 0.08700000000000152, 0.13950000000000173, 0.08074999999999832], zp_timestamp='2025-11-03T22:36:00')
2025-11-04T00:37:44.464 [DEBUG] [Thread-125481] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:37:44.536 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:37:44.550 [DEBUG] [Thread-125484] [transport.py] [_log()] starting thread (client mode): 0x1174fe80
2025-11-04T00:37:44.551 [DEBUG] [Thread-125484] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:37:44.567 [DEBUG] [Thread-125484] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:37:44.567 [INFO] [Thread-125484] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:37:44.575 [DEBUG] [Thread-125484] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:37:44.575 [DEBUG] [Thread-125484] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:37:44.575 [DEBUG] [Thread-125484] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:37:44.575 [DEBUG] [Thread-125484] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:37:44.575 [DEBUG] [Thread-125484] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:37:44.575 [DEBUG] [Thread-125484] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:37:44.575 [DEBUG] [Thread-125484] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:37:44.575 [DEBUG] [Thread-125484] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:37:44.575 [DEBUG] [Thread-125484] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:37:44.575 [DEBUG] [Thread-125484] [transport.py] [_log()] client lang: <none>
2025-11-04T00:37:44.575 [DEBUG] [Thread-125484] [transport.py] [_log()] server lang: <none>
2025-11-04T00:37:44.575 [DEBUG] [Thread-125484] [transport.py] [_log()] kex follows: False
2025-11-04T00:37:44.575 [DEBUG] [Thread-125484] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:37:44.575 [DEBUG] [Thread-125484] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:37:44.575 [DEBUG] [Thread-125484] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:37:44.575 [DEBUG] [Thread-125484] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:37:44.575 [DEBUG] [Thread-125484] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:37:44.575 [DEBUG] [Thread-125484] [transport.py] [_log()] Compression: none
2025-11-04T00:37:44.575 [DEBUG] [Thread-125484] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:37:44.633 [DEBUG] [Thread-125484] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:37:44.633 [DEBUG] [Thread-125484] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:37:44.633 [DEBUG] [Thread-125484] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:37:44.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:37:44.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:37:44.690 [DEBUG] [Thread-125484] [transport.py] [_log()] userauth is OK
2025-11-04T00:37:44.690 [DEBUG] [Thread-125484] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:37:44.690 [DEBUG] [Thread-125484] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:37:44.690 [DEBUG] [Thread-125484] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:37:44.690 [DEBUG] [Thread-125484] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:37:44.704 [INFO] [Thread-125484] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:37:44.704 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:37:44.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:37:45.549 [DEBUG] [Thread-125484] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:37:45.550 [DEBUG] [Thread-125484] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:37:45.598 [DEBUG] [Thread-125484] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:37:45.598 [DEBUG] [Thread-125484] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:37:45.607 [DEBUG] [Thread-125484] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:37:45.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:37:45.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:37:45.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:37:45.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:37:45.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:37:45.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:37:45.642 [DEBUG] [Thread-125484] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:37:53.625 [DEBUG] [Thread-125486 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:38:08.668 [DEBUG] [Thread-125487 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:38:15.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:38:15.675 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:38:15.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:38:16.360 [DEBUG] [Thread-125488 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:38:16.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 38, 4), 28.88, 12.79, 0.0, 14.91, 18.25, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:38:16.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:38:04
2025-11-04T00:38:16.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:38:16.944 [DEBUG] [Thread-125489] [transport.py] [_log()] starting thread (client mode): 0xed075b0
2025-11-04T00:38:16.945 [DEBUG] [Thread-125489] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:38:16.960 [DEBUG] [Thread-125489] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:38:16.960 [INFO] [Thread-125489] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:38:16.965 [DEBUG] [Thread-125489] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:38:16.965 [DEBUG] [Thread-125489] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:38:16.965 [DEBUG] [Thread-125489] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:38:16.965 [DEBUG] [Thread-125489] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:38:16.965 [DEBUG] [Thread-125489] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:38:16.965 [DEBUG] [Thread-125489] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:38:16.965 [DEBUG] [Thread-125489] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:38:16.965 [DEBUG] [Thread-125489] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:38:16.965 [DEBUG] [Thread-125489] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:38:16.965 [DEBUG] [Thread-125489] [transport.py] [_log()] client lang: <none>
2025-11-04T00:38:16.965 [DEBUG] [Thread-125489] [transport.py] [_log()] server lang: <none>
2025-11-04T00:38:16.966 [DEBUG] [Thread-125489] [transport.py] [_log()] kex follows: False
2025-11-04T00:38:16.966 [DEBUG] [Thread-125489] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:38:16.966 [DEBUG] [Thread-125489] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:38:16.967 [DEBUG] [Thread-125489] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:38:16.967 [DEBUG] [Thread-125489] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:38:16.967 [DEBUG] [Thread-125489] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:38:16.967 [DEBUG] [Thread-125489] [transport.py] [_log()] Compression: none
2025-11-04T00:38:16.967 [DEBUG] [Thread-125489] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:38:17.001 [DEBUG] [Thread-125489] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:38:17.006 [DEBUG] [Thread-125489] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:38:17.008 [DEBUG] [Thread-125489] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:38:17.009 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:38:17.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:38:17.013 [DEBUG] [Thread-125489] [transport.py] [_log()] userauth is OK
2025-11-04T00:38:17.013 [DEBUG] [Thread-125489] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:38:17.014 [DEBUG] [Thread-125489] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:38:17.014 [DEBUG] [Thread-125489] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:38:17.014 [DEBUG] [Thread-125489] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:38:17.056 [INFO] [Thread-125489] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:38:17.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:38:17.706 [DEBUG] [Thread-125489] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:38:17.707 [DEBUG] [Thread-125489] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:38:17.709 [DEBUG] [Thread-125489] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:38:17.750 [DEBUG] [Thread-125489] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:38:17.750 [DEBUG] [Thread-125489] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:38:17.758 [DEBUG] [Thread-125489] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:38:17.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:38:17.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:38:17.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:38:17.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:38:17.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:38:17.806 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:38:17.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:38:17.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:38:17.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:38:17.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.942807 -999.00  +18.50  17.86     18   -6.10 1 1 1 1 1     0    0 23.85 -43.03 ZNESW 13.4 17.9 315.6 19.6 18.5 -24.6 18.4 -23.7 18.2 -23.3 18.4 -24.1
2025-11-04T00:38:17.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:38:17.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:38:17.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.942807
2025-11-04T00:38:17.832 [DEBUG] [Thread-125489] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:38:17.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:38:17.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:38:17.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:38:17.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:38:17.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:38:17.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:38:04', tmtdew=28.88, humidity=12.79, cloud=0.0, wind=14.91, temperature=18.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:38:04', seeing=1.05, atlas_timestamp='2025-11-03T22:37:38.525', atlas_cloud=1, atlas_rain=1, zp_data=[0.0467499999999994, 0.02224999999999966, 0.06975000000000087, 0.09299999999999997, 0.10650000000000048, -0.010749999999999815, -0.12650000000000006, 0.01925000000000132, 0.06049999999999933, 0.0519999999999996, 0.1112499999999983, 0.03250000000000064, 0.11749999999999972, 0.05325000000000024, -0.2480000000000011, 0.03849999999999909, 0.10474999999999923, 0.10449999999999982, 0.15450000000000053, 0.1712499999999988, 0.16499999999999915, 0.03774999999999906, -0.03474999999999895, 0.024750000000000938, 0.10599999999999987, 0.1974999999999998, 0.1957500000000003, 0.22250000000000014, 0.23150000000000048, 0.269000000000001, 0.08700000000000152, 0.13950000000000173, 0.08074999999999832], zp_timestamp='2025-11-03T22:36:00')
2025-11-04T00:38:18.011 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:38:18.023 [DEBUG] [Thread-125492] [transport.py] [_log()] starting thread (client mode): 0x1174f280
2025-11-04T00:38:18.023 [DEBUG] [Thread-125492] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:38:18.037 [DEBUG] [Thread-125492] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:38:18.038 [INFO] [Thread-125492] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:38:18.046 [DEBUG] [Thread-125492] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:38:18.048 [DEBUG] [Thread-125492] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:38:18.048 [DEBUG] [Thread-125492] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:38:18.048 [DEBUG] [Thread-125492] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:38:18.048 [DEBUG] [Thread-125492] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:38:18.048 [DEBUG] [Thread-125492] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:38:18.048 [DEBUG] [Thread-125492] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:38:18.048 [DEBUG] [Thread-125492] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:38:18.050 [DEBUG] [Thread-125492] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:38:18.050 [DEBUG] [Thread-125492] [transport.py] [_log()] client lang: <none>
2025-11-04T00:38:18.050 [DEBUG] [Thread-125492] [transport.py] [_log()] server lang: <none>
2025-11-04T00:38:18.050 [DEBUG] [Thread-125492] [transport.py] [_log()] kex follows: False
2025-11-04T00:38:18.050 [DEBUG] [Thread-125492] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:38:18.050 [DEBUG] [Thread-125492] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:38:18.050 [DEBUG] [Thread-125492] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:38:18.051 [DEBUG] [Thread-125492] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:38:18.051 [DEBUG] [Thread-125492] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:38:18.051 [DEBUG] [Thread-125492] [transport.py] [_log()] Compression: none
2025-11-04T00:38:18.051 [DEBUG] [Thread-125492] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:38:18.106 [DEBUG] [Thread-125492] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:38:18.107 [DEBUG] [Thread-125492] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:38:18.107 [DEBUG] [Thread-125492] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:38:18.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:38:18.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:38:18.162 [DEBUG] [Thread-125492] [transport.py] [_log()] userauth is OK
2025-11-04T00:38:18.162 [DEBUG] [Thread-125492] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:38:18.162 [DEBUG] [Thread-125492] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:38:18.162 [DEBUG] [Thread-125492] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:38:18.163 [DEBUG] [Thread-125492] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:38:18.182 [INFO] [Thread-125492] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:38:18.183 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:38:18.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:38:19.051 [DEBUG] [Thread-125492] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:38:19.053 [DEBUG] [Thread-125492] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:38:19.098 [DEBUG] [Thread-125492] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:38:19.098 [DEBUG] [Thread-125492] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:38:19.106 [DEBUG] [Thread-125492] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:38:19.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:38:19.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:38:19.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:38:19.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:38:19.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:38:19.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:38:19.151 [DEBUG] [Thread-125492] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:38:21.066 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:38:21.067 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:38:23.697 [DEBUG] [Thread-125494 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:38:38.749 [DEBUG] [Thread-125495 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:38:49.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:38:49.176 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:38:49.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:38:49.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 38, 36), 28.87, 13.26, 0.0, 15.19, 18.23, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:38:49.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:38:36
2025-11-04T00:38:50.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:38:50.299 [DEBUG] [Thread-125496] [transport.py] [_log()] starting thread (client mode): 0xed67160
2025-11-04T00:38:50.300 [DEBUG] [Thread-125496] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:38:50.311 [DEBUG] [Thread-125496] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:38:50.311 [INFO] [Thread-125496] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:38:50.314 [DEBUG] [Thread-125496] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:38:50.314 [DEBUG] [Thread-125496] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:38:50.314 [DEBUG] [Thread-125496] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:38:50.314 [DEBUG] [Thread-125496] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:38:50.314 [DEBUG] [Thread-125496] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:38:50.314 [DEBUG] [Thread-125496] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:38:50.315 [DEBUG] [Thread-125496] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:38:50.315 [DEBUG] [Thread-125496] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:38:50.315 [DEBUG] [Thread-125496] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:38:50.315 [DEBUG] [Thread-125496] [transport.py] [_log()] client lang: <none>
2025-11-04T00:38:50.315 [DEBUG] [Thread-125496] [transport.py] [_log()] server lang: <none>
2025-11-04T00:38:50.315 [DEBUG] [Thread-125496] [transport.py] [_log()] kex follows: False
2025-11-04T00:38:50.315 [DEBUG] [Thread-125496] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:38:50.315 [DEBUG] [Thread-125496] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:38:50.315 [DEBUG] [Thread-125496] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:38:50.315 [DEBUG] [Thread-125496] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:38:50.315 [DEBUG] [Thread-125496] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:38:50.315 [DEBUG] [Thread-125496] [transport.py] [_log()] Compression: none
2025-11-04T00:38:50.316 [DEBUG] [Thread-125496] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:38:50.341 [DEBUG] [Thread-125496] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:38:50.342 [DEBUG] [Thread-125496] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:38:50.344 [DEBUG] [Thread-125496] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:38:50.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:38:50.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:38:50.384 [DEBUG] [Thread-125496] [transport.py] [_log()] userauth is OK
2025-11-04T00:38:50.385 [DEBUG] [Thread-125496] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:38:50.385 [DEBUG] [Thread-125496] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:38:50.385 [DEBUG] [Thread-125496] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:38:50.385 [DEBUG] [Thread-125496] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:38:50.412 [INFO] [Thread-125496] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:38:50.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:38:51.081 [DEBUG] [Thread-125496] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:38:51.082 [DEBUG] [Thread-125496] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:38:51.084 [DEBUG] [Thread-125496] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:38:51.122 [DEBUG] [Thread-125496] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:38:51.123 [DEBUG] [Thread-125496] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:38:51.126 [DEBUG] [Thread-125496] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:38:51.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:38:51.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:38:51.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:38:51.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:38:51.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:38:51.150 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:38:51.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:38:51.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:38:51.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:38:51.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.943154 -999.00  +18.50  18.93     18   -6.10 1 1 1 1 1     0    0 23.86 -42.60 ZNESW 14.9 18.9 317.8 20.7 18.5 -24.6 18.4 -23.5 18.2 -23.3 18.4 -24.2
2025-11-04T00:38:51.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:38:51.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:38:51.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.943154
2025-11-04T00:38:51.158 [DEBUG] [Thread-125496] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:38:51.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:38:51.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:38:51.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:38:51.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:38:51.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:38:51.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:38:36', tmtdew=28.87, humidity=13.26, cloud=0.0, wind=15.19, temperature=18.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:38:37', seeing=1.16, atlas_timestamp='2025-11-03T22:38:08.506', atlas_cloud=1, atlas_rain=1, zp_data=[0.0467499999999994, 0.02224999999999966, 0.06975000000000087, 0.09299999999999997, 0.10650000000000048, -0.010749999999999815, -0.12650000000000006, 0.01925000000000132, 0.06049999999999933, 0.0519999999999996, 0.1112499999999983, 0.03250000000000064, 0.11749999999999972, 0.05325000000000024, -0.2480000000000011, 0.03849999999999909, 0.10474999999999923, 0.10449999999999982, 0.15450000000000053, 0.1712499999999988, 0.16499999999999915, 0.03774999999999906, -0.03474999999999895, 0.024750000000000938, 0.10599999999999987, 0.1974999999999998, 0.1957500000000003, 0.22250000000000014, 0.23150000000000048, 0.269000000000001, 0.08700000000000152, 0.13950000000000173, 0.08074999999999832], zp_timestamp='2025-11-03T22:36:00')
2025-11-04T00:38:51.243 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:38:51.256 [DEBUG] [Thread-125499] [transport.py] [_log()] starting thread (client mode): 0xed670d0
2025-11-04T00:38:51.257 [DEBUG] [Thread-125499] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:38:51.272 [DEBUG] [Thread-125499] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:38:51.272 [INFO] [Thread-125499] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:38:51.280 [DEBUG] [Thread-125499] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:38:51.280 [DEBUG] [Thread-125499] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:38:51.280 [DEBUG] [Thread-125499] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:38:51.280 [DEBUG] [Thread-125499] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:38:51.280 [DEBUG] [Thread-125499] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:38:51.280 [DEBUG] [Thread-125499] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:38:51.280 [DEBUG] [Thread-125499] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:38:51.280 [DEBUG] [Thread-125499] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:38:51.280 [DEBUG] [Thread-125499] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:38:51.280 [DEBUG] [Thread-125499] [transport.py] [_log()] client lang: <none>
2025-11-04T00:38:51.280 [DEBUG] [Thread-125499] [transport.py] [_log()] server lang: <none>
2025-11-04T00:38:51.280 [DEBUG] [Thread-125499] [transport.py] [_log()] kex follows: False
2025-11-04T00:38:51.280 [DEBUG] [Thread-125499] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:38:51.280 [DEBUG] [Thread-125499] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:38:51.280 [DEBUG] [Thread-125499] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:38:51.280 [DEBUG] [Thread-125499] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:38:51.280 [DEBUG] [Thread-125499] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:38:51.280 [DEBUG] [Thread-125499] [transport.py] [_log()] Compression: none
2025-11-04T00:38:51.280 [DEBUG] [Thread-125499] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:38:51.343 [DEBUG] [Thread-125499] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:38:51.343 [DEBUG] [Thread-125499] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:38:51.343 [DEBUG] [Thread-125499] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:38:51.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:38:51.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:38:51.402 [DEBUG] [Thread-125499] [transport.py] [_log()] userauth is OK
2025-11-04T00:38:51.402 [DEBUG] [Thread-125499] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:38:51.402 [DEBUG] [Thread-125499] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:38:51.402 [DEBUG] [Thread-125499] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:38:51.402 [DEBUG] [Thread-125499] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:38:51.425 [INFO] [Thread-125499] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:38:51.425 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:38:51.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:38:52.268 [DEBUG] [Thread-125499] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:38:52.268 [DEBUG] [Thread-125499] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:38:52.316 [DEBUG] [Thread-125499] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:38:52.316 [DEBUG] [Thread-125499] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:38:52.325 [DEBUG] [Thread-125499] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:38:52.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:38:52.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:38:52.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:38:52.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:38:52.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:38:52.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:38:52.378 [DEBUG] [Thread-125499] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:38:53.784 [DEBUG] [Thread-125501 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:39:08.870 [DEBUG] [Thread-125502 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:39:16.679 [DEBUG] [Thread-125503 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:39:21.273 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:39:21.277 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:39:22.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:39:22.396 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:39:22.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:39:24.036 [DEBUG] [Thread-125504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:39:25.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 39, 10), 28.95, 13.18, 0.0, 14.1, 18.28, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:39:25.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:39:10
2025-11-04T00:39:25.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:39:25.735 [DEBUG] [Thread-125505] [transport.py] [_log()] starting thread (client mode): 0xed676d0
2025-11-04T00:39:25.741 [DEBUG] [Thread-125505] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:39:25.743 [DEBUG] [Thread-125505] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:39:25.743 [INFO] [Thread-125505] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:39:25.766 [DEBUG] [Thread-125505] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:39:25.766 [DEBUG] [Thread-125505] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:39:25.766 [DEBUG] [Thread-125505] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:39:25.766 [DEBUG] [Thread-125505] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:39:25.766 [DEBUG] [Thread-125505] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:39:25.766 [DEBUG] [Thread-125505] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:39:25.766 [DEBUG] [Thread-125505] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:39:25.766 [DEBUG] [Thread-125505] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:39:25.766 [DEBUG] [Thread-125505] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:39:25.766 [DEBUG] [Thread-125505] [transport.py] [_log()] client lang: <none>
2025-11-04T00:39:25.766 [DEBUG] [Thread-125505] [transport.py] [_log()] server lang: <none>
2025-11-04T00:39:25.766 [DEBUG] [Thread-125505] [transport.py] [_log()] kex follows: False
2025-11-04T00:39:25.766 [DEBUG] [Thread-125505] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:39:25.767 [DEBUG] [Thread-125505] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:39:25.767 [DEBUG] [Thread-125505] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:39:25.767 [DEBUG] [Thread-125505] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:39:25.767 [DEBUG] [Thread-125505] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:39:25.767 [DEBUG] [Thread-125505] [transport.py] [_log()] Compression: none
2025-11-04T00:39:25.767 [DEBUG] [Thread-125505] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:39:25.839 [DEBUG] [Thread-125505] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:39:25.848 [DEBUG] [Thread-125505] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:39:25.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:39:25.854 [DEBUG] [Thread-125505] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:39:25.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:39:25.858 [DEBUG] [Thread-125505] [transport.py] [_log()] userauth is OK
2025-11-04T00:39:25.858 [DEBUG] [Thread-125505] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:39:25.858 [DEBUG] [Thread-125505] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:39:25.858 [DEBUG] [Thread-125505] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:39:25.858 [DEBUG] [Thread-125505] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:39:25.904 [INFO] [Thread-125505] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:39:25.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:39:26.728 [DEBUG] [Thread-125505] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:39:26.728 [DEBUG] [Thread-125505] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:39:26.733 [DEBUG] [Thread-125505] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:39:26.768 [DEBUG] [Thread-125505] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:39:26.769 [DEBUG] [Thread-125505] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:39:26.774 [DEBUG] [Thread-125505] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:39:26.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:39:26.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:39:26.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:39:26.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:39:26.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:39:26.830 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:39:26.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:39:26.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:39:26.841 [DEBUG] [Thread-125505] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:39:26.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:39:26.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.943501 -999.00  +18.50  16.16     18   -6.10 1 1 1 1 1     0    0 23.14 -41.58 ZNESW 18.2 16.2 313.4 20.4 18.5 -24.6 18.4 -23.6 18.1 -23.4 18.4 -24.2
2025-11-04T00:39:26.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:39:26.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:39:26.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.943501
2025-11-04T00:39:26.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:39:26.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:39:26.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:39:26.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:39:26.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:39:26.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:39:10', tmtdew=28.95, humidity=13.18, cloud=0.0, wind=14.1, temperature=18.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:39:11', seeing=1.16, atlas_timestamp='2025-11-03T22:38:38.486', atlas_cloud=1, atlas_rain=1, zp_data=[0.0467499999999994, 0.02224999999999966, 0.06975000000000087, 0.09299999999999997, 0.10650000000000048, -0.010749999999999815, -0.12650000000000006, 0.01925000000000132, 0.06049999999999933, 0.0519999999999996, 0.1112499999999983, 0.03250000000000064, 0.11749999999999972, 0.05325000000000024, -0.2480000000000011, 0.03849999999999909, 0.10474999999999923, 0.10449999999999982, 0.15450000000000053, 0.1712499999999988, 0.16499999999999915, 0.03774999999999906, -0.03474999999999895, 0.024750000000000938, 0.10599999999999987, 0.1974999999999998, 0.1957500000000003, 0.22250000000000014, 0.23150000000000048, 0.269000000000001, 0.08700000000000152, 0.13950000000000173, 0.08074999999999832], zp_timestamp='2025-11-03T22:36:00')
2025-11-04T00:39:27.041 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:39:27.056 [DEBUG] [Thread-125508] [transport.py] [_log()] starting thread (client mode): 0x1174f580
2025-11-04T00:39:27.056 [DEBUG] [Thread-125508] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:39:27.069 [DEBUG] [Thread-125508] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:39:27.069 [INFO] [Thread-125508] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:39:27.077 [DEBUG] [Thread-125508] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:39:27.078 [DEBUG] [Thread-125508] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:39:27.078 [DEBUG] [Thread-125508] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:39:27.078 [DEBUG] [Thread-125508] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:39:27.078 [DEBUG] [Thread-125508] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:39:27.078 [DEBUG] [Thread-125508] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:39:27.078 [DEBUG] [Thread-125508] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:39:27.078 [DEBUG] [Thread-125508] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:39:27.078 [DEBUG] [Thread-125508] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:39:27.078 [DEBUG] [Thread-125508] [transport.py] [_log()] client lang: <none>
2025-11-04T00:39:27.078 [DEBUG] [Thread-125508] [transport.py] [_log()] server lang: <none>
2025-11-04T00:39:27.078 [DEBUG] [Thread-125508] [transport.py] [_log()] kex follows: False
2025-11-04T00:39:27.078 [DEBUG] [Thread-125508] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:39:27.078 [DEBUG] [Thread-125508] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:39:27.078 [DEBUG] [Thread-125508] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:39:27.078 [DEBUG] [Thread-125508] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:39:27.078 [DEBUG] [Thread-125508] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:39:27.078 [DEBUG] [Thread-125508] [transport.py] [_log()] Compression: none
2025-11-04T00:39:27.078 [DEBUG] [Thread-125508] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:39:27.133 [DEBUG] [Thread-125508] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:39:27.133 [DEBUG] [Thread-125508] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:39:27.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:39:27.134 [DEBUG] [Thread-125508] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:39:27.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:39:27.190 [DEBUG] [Thread-125508] [transport.py] [_log()] userauth is OK
2025-11-04T00:39:27.190 [DEBUG] [Thread-125508] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:39:27.190 [DEBUG] [Thread-125508] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:39:27.190 [DEBUG] [Thread-125508] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:39:27.190 [DEBUG] [Thread-125508] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:39:27.204 [INFO] [Thread-125508] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:39:27.205 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:39:27.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:39:28.077 [DEBUG] [Thread-125508] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:39:28.077 [DEBUG] [Thread-125508] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:39:28.126 [DEBUG] [Thread-125508] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:39:28.126 [DEBUG] [Thread-125508] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:39:28.135 [DEBUG] [Thread-125508] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:39:28.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:39:28.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:39:28.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:39:28.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:39:28.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:39:28.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:39:28.177 [DEBUG] [Thread-125508] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:39:39.116 [DEBUG] [Thread-125510 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:39:54.223 [DEBUG] [Thread-125511 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:39:58.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:39:58.200 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:39:58.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:39:58.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 39, 43), 28.88, 13.21, 0.0, 16.94, 18.27, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:39:58.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:39:43
2025-11-04T00:39:59.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:39:59.252 [DEBUG] [Thread-125512] [transport.py] [_log()] starting thread (client mode): 0x1174ee00
2025-11-04T00:39:59.252 [DEBUG] [Thread-125512] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:39:59.273 [DEBUG] [Thread-125512] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:39:59.274 [INFO] [Thread-125512] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:39:59.277 [DEBUG] [Thread-125512] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:39:59.277 [DEBUG] [Thread-125512] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:39:59.277 [DEBUG] [Thread-125512] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:39:59.277 [DEBUG] [Thread-125512] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:39:59.277 [DEBUG] [Thread-125512] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:39:59.277 [DEBUG] [Thread-125512] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:39:59.277 [DEBUG] [Thread-125512] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:39:59.277 [DEBUG] [Thread-125512] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:39:59.277 [DEBUG] [Thread-125512] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:39:59.277 [DEBUG] [Thread-125512] [transport.py] [_log()] client lang: <none>
2025-11-04T00:39:59.277 [DEBUG] [Thread-125512] [transport.py] [_log()] server lang: <none>
2025-11-04T00:39:59.277 [DEBUG] [Thread-125512] [transport.py] [_log()] kex follows: False
2025-11-04T00:39:59.277 [DEBUG] [Thread-125512] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:39:59.277 [DEBUG] [Thread-125512] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:39:59.277 [DEBUG] [Thread-125512] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:39:59.286 [DEBUG] [Thread-125512] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:39:59.287 [DEBUG] [Thread-125512] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:39:59.287 [DEBUG] [Thread-125512] [transport.py] [_log()] Compression: none
2025-11-04T00:39:59.287 [DEBUG] [Thread-125512] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:39:59.306 [DEBUG] [Thread-125512] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:39:59.307 [DEBUG] [Thread-125512] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:39:59.307 [DEBUG] [Thread-125512] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:39:59.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:39:59.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:39:59.309 [DEBUG] [Thread-125512] [transport.py] [_log()] userauth is OK
2025-11-04T00:39:59.310 [DEBUG] [Thread-125512] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:39:59.310 [DEBUG] [Thread-125512] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:39:59.310 [DEBUG] [Thread-125512] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:39:59.310 [DEBUG] [Thread-125512] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:39:59.335 [INFO] [Thread-125512] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:39:59.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:39:59.963 [DEBUG] [Thread-125512] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:39:59.963 [DEBUG] [Thread-125512] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:39:59.963 [DEBUG] [Thread-125512] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:40:00.003 [DEBUG] [Thread-125512] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:40:00.003 [DEBUG] [Thread-125512] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:40:00.006 [DEBUG] [Thread-125512] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:40:00.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:40:00.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:40:00.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:40:00.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:40:00.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:40:00.022 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:40:00.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:40:00.022 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:40:00.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:40:00.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.943849 -999.00  +18.50  14.83     18   -6.10 1 1 1 1 1     0    0 23.33 -41.15 ZNESW 15.7 14.8 308.8 20.2 18.5 -24.7 18.4 -23.7 18.2 -23.4 18.5 -24.3
2025-11-04T00:40:00.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:40:00.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:40:00.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.943849
2025-11-04T00:40:00.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:40:00.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:40:00.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:40:00.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:40:00.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:40:00.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:39:43', tmtdew=28.88, humidity=13.21, cloud=0.0, wind=16.94, temperature=18.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:39:44', seeing=1.13, atlas_timestamp='2025-11-03T22:39:08.554', atlas_cloud=1, atlas_rain=1, zp_data=[0.0467499999999994, 0.02224999999999966, 0.06975000000000087, 0.09299999999999997, 0.10650000000000048, -0.010749999999999815, -0.12650000000000006, 0.01925000000000132, 0.06049999999999933, 0.0519999999999996, 0.1112499999999983, 0.03250000000000064, 0.11749999999999972, 0.05325000000000024, -0.2480000000000011, 0.03849999999999909, 0.10474999999999923, 0.10449999999999982, 0.15450000000000053, 0.1712499999999988, 0.16499999999999915, 0.03774999999999906, -0.03474999999999895, 0.024750000000000938, 0.10599999999999987, 0.1974999999999998, 0.1957500000000003, 0.22250000000000014, 0.23150000000000048, 0.269000000000001, 0.08700000000000152, 0.13950000000000173, 0.08074999999999832], zp_timestamp='2025-11-03T22:38:00')
2025-11-04T00:40:00.023 [DEBUG] [Thread-125512] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:40:00.097 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:40:00.109 [DEBUG] [Thread-125515] [transport.py] [_log()] starting thread (client mode): 0xed66f20
2025-11-04T00:40:00.109 [DEBUG] [Thread-125515] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:40:00.124 [DEBUG] [Thread-125515] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:40:00.125 [INFO] [Thread-125515] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:40:00.133 [DEBUG] [Thread-125515] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:40:00.133 [DEBUG] [Thread-125515] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:40:00.134 [DEBUG] [Thread-125515] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:40:00.134 [DEBUG] [Thread-125515] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:40:00.134 [DEBUG] [Thread-125515] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:40:00.134 [DEBUG] [Thread-125515] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:40:00.134 [DEBUG] [Thread-125515] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:40:00.134 [DEBUG] [Thread-125515] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:40:00.134 [DEBUG] [Thread-125515] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:40:00.134 [DEBUG] [Thread-125515] [transport.py] [_log()] client lang: <none>
2025-11-04T00:40:00.134 [DEBUG] [Thread-125515] [transport.py] [_log()] server lang: <none>
2025-11-04T00:40:00.134 [DEBUG] [Thread-125515] [transport.py] [_log()] kex follows: False
2025-11-04T00:40:00.134 [DEBUG] [Thread-125515] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:40:00.134 [DEBUG] [Thread-125515] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:40:00.134 [DEBUG] [Thread-125515] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:40:00.134 [DEBUG] [Thread-125515] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:40:00.134 [DEBUG] [Thread-125515] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:40:00.134 [DEBUG] [Thread-125515] [transport.py] [_log()] Compression: none
2025-11-04T00:40:00.134 [DEBUG] [Thread-125515] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:40:00.191 [DEBUG] [Thread-125515] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:40:00.191 [DEBUG] [Thread-125515] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:40:00.192 [DEBUG] [Thread-125515] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:40:00.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:40:00.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:40:00.253 [DEBUG] [Thread-125515] [transport.py] [_log()] userauth is OK
2025-11-04T00:40:00.253 [DEBUG] [Thread-125515] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:40:00.253 [DEBUG] [Thread-125515] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:40:00.253 [DEBUG] [Thread-125515] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:40:00.254 [DEBUG] [Thread-125515] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:40:00.276 [INFO] [Thread-125515] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:40:00.276 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:40:00.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:40:01.114 [DEBUG] [Thread-125515] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:40:01.114 [DEBUG] [Thread-125515] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:40:01.162 [DEBUG] [Thread-125515] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:40:01.162 [DEBUG] [Thread-125515] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:40:01.173 [DEBUG] [Thread-125515] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:40:01.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:40:01.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:40:01.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:40:01.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:40:01.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:40:01.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:40:01.212 [DEBUG] [Thread-125515] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:40:09.254 [DEBUG] [Thread-125517 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:40:16.912 [DEBUG] [Thread-125518 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:40:21.493 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:40:21.502 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:40:24.291 [DEBUG] [Thread-125519 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:40:31.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:40:31.239 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:40:31.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:40:33.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 40, 16), 28.92, 13.16, 0.0, 17.22, 18.22, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:40:33.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:40:16
2025-11-04T00:40:33.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:40:33.536 [DEBUG] [Thread-125520] [transport.py] [_log()] starting thread (client mode): 0x1174cee0
2025-11-04T00:40:33.537 [DEBUG] [Thread-125520] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:40:33.549 [DEBUG] [Thread-125520] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:40:33.549 [INFO] [Thread-125520] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:40:33.553 [DEBUG] [Thread-125520] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:40:33.553 [DEBUG] [Thread-125520] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:40:33.553 [DEBUG] [Thread-125520] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:40:33.553 [DEBUG] [Thread-125520] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:40:33.553 [DEBUG] [Thread-125520] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:40:33.553 [DEBUG] [Thread-125520] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:40:33.553 [DEBUG] [Thread-125520] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:40:33.553 [DEBUG] [Thread-125520] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:40:33.553 [DEBUG] [Thread-125520] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:40:33.553 [DEBUG] [Thread-125520] [transport.py] [_log()] client lang: <none>
2025-11-04T00:40:33.553 [DEBUG] [Thread-125520] [transport.py] [_log()] server lang: <none>
2025-11-04T00:40:33.553 [DEBUG] [Thread-125520] [transport.py] [_log()] kex follows: False
2025-11-04T00:40:33.553 [DEBUG] [Thread-125520] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:40:33.554 [DEBUG] [Thread-125520] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:40:33.554 [DEBUG] [Thread-125520] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:40:33.554 [DEBUG] [Thread-125520] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:40:33.554 [DEBUG] [Thread-125520] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:40:33.554 [DEBUG] [Thread-125520] [transport.py] [_log()] Compression: none
2025-11-04T00:40:33.554 [DEBUG] [Thread-125520] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:40:33.590 [DEBUG] [Thread-125520] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:40:33.596 [DEBUG] [Thread-125520] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:40:33.598 [DEBUG] [Thread-125520] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:40:33.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:40:33.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:40:33.603 [DEBUG] [Thread-125520] [transport.py] [_log()] userauth is OK
2025-11-04T00:40:33.604 [DEBUG] [Thread-125520] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:40:33.604 [DEBUG] [Thread-125520] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:40:33.604 [DEBUG] [Thread-125520] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:40:33.604 [DEBUG] [Thread-125520] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:40:33.643 [INFO] [Thread-125520] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:40:33.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:40:34.287 [DEBUG] [Thread-125520] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:40:34.288 [DEBUG] [Thread-125520] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:40:34.298 [DEBUG] [Thread-125520] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:40:34.330 [DEBUG] [Thread-125520] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:40:34.330 [DEBUG] [Thread-125520] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:40:34.336 [DEBUG] [Thread-125520] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:40:34.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:40:34.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:40:34.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:40:34.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:40:34.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:40:34.381 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:40:34.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:40:34.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:40:34.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:40:34.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.944543 -999.00  +18.50  17.35     18   -6.10 1 1 1 1 1     0    0 23.34 -35.74 ZNESW 17.2 17.4 312.0 19.6 18.5 -24.7 18.4 -23.6 18.2 -23.4 18.4 -24.2
2025-11-04T00:40:34.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:40:34.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:40:34.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.944543
2025-11-04T00:40:34.393 [DEBUG] [Thread-125520] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:40:34.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:40:34.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:40:34.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:40:34.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:40:34.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:40:34.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:40:16', tmtdew=28.92, humidity=13.16, cloud=0.0, wind=17.22, temperature=18.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:40:16', seeing=1.16, atlas_timestamp='2025-11-03T22:40:08.515', atlas_cloud=1, atlas_rain=1, zp_data=[0.0467499999999994, 0.02224999999999966, 0.06975000000000087, 0.09299999999999997, 0.10650000000000048, -0.010749999999999815, -0.12650000000000006, 0.01925000000000132, 0.06049999999999933, 0.0519999999999996, 0.1112499999999983, 0.03250000000000064, 0.11749999999999972, 0.05325000000000024, -0.2480000000000011, 0.03849999999999909, 0.10474999999999923, 0.10449999999999982, 0.15450000000000053, 0.1712499999999988, 0.16499999999999915, 0.03774999999999906, -0.03474999999999895, 0.024750000000000938, 0.10599999999999987, 0.1974999999999998, 0.1957500000000003, 0.22250000000000014, 0.23150000000000048, 0.269000000000001, 0.08700000000000152, 0.13950000000000173, 0.08074999999999832], zp_timestamp='2025-11-03T22:38:00')
2025-11-04T00:40:34.596 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:40:34.609 [DEBUG] [Thread-125523] [transport.py] [_log()] starting thread (client mode): 0xed41ed0
2025-11-04T00:40:34.609 [DEBUG] [Thread-125523] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:40:34.624 [DEBUG] [Thread-125523] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:40:34.624 [INFO] [Thread-125523] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:40:34.633 [DEBUG] [Thread-125523] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:40:34.633 [DEBUG] [Thread-125523] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:40:34.633 [DEBUG] [Thread-125523] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:40:34.634 [DEBUG] [Thread-125523] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:40:34.634 [DEBUG] [Thread-125523] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:40:34.634 [DEBUG] [Thread-125523] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:40:34.634 [DEBUG] [Thread-125523] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:40:34.634 [DEBUG] [Thread-125523] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:40:34.634 [DEBUG] [Thread-125523] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:40:34.634 [DEBUG] [Thread-125523] [transport.py] [_log()] client lang: <none>
2025-11-04T00:40:34.634 [DEBUG] [Thread-125523] [transport.py] [_log()] server lang: <none>
2025-11-04T00:40:34.634 [DEBUG] [Thread-125523] [transport.py] [_log()] kex follows: False
2025-11-04T00:40:34.634 [DEBUG] [Thread-125523] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:40:34.634 [DEBUG] [Thread-125523] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:40:34.634 [DEBUG] [Thread-125523] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:40:34.634 [DEBUG] [Thread-125523] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:40:34.634 [DEBUG] [Thread-125523] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:40:34.634 [DEBUG] [Thread-125523] [transport.py] [_log()] Compression: none
2025-11-04T00:40:34.634 [DEBUG] [Thread-125523] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:40:34.691 [DEBUG] [Thread-125523] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:40:34.692 [DEBUG] [Thread-125523] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:40:34.693 [DEBUG] [Thread-125523] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:40:34.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:40:34.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:40:34.752 [DEBUG] [Thread-125523] [transport.py] [_log()] userauth is OK
2025-11-04T00:40:34.752 [DEBUG] [Thread-125523] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:40:34.752 [DEBUG] [Thread-125523] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:40:34.753 [DEBUG] [Thread-125523] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:40:34.753 [DEBUG] [Thread-125523] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:40:34.772 [INFO] [Thread-125523] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:40:34.772 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:40:34.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:40:35.653 [DEBUG] [Thread-125523] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:40:35.653 [DEBUG] [Thread-125523] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:40:35.701 [DEBUG] [Thread-125523] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:40:35.701 [DEBUG] [Thread-125523] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:40:35.709 [DEBUG] [Thread-125523] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:40:35.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:40:35.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:40:35.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:40:35.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:40:35.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:40:35.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:40:35.743 [DEBUG] [Thread-125523] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:40:39.327 [DEBUG] [Thread-125525 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:40:54.380 [DEBUG] [Thread-125526 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:41:05.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:41:05.769 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:41:05.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:41:06.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 40, 50), 28.96, 13.18, 0.0, 15.81, 18.33, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:41:06.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:40:50
2025-11-04T00:41:06.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:41:06.963 [DEBUG] [Thread-125527] [transport.py] [_log()] starting thread (client mode): 0xedb23e0
2025-11-04T00:41:06.964 [DEBUG] [Thread-125527] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:41:06.974 [DEBUG] [Thread-125527] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:41:06.975 [INFO] [Thread-125527] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:41:06.981 [DEBUG] [Thread-125527] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:41:06.981 [DEBUG] [Thread-125527] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:41:06.981 [DEBUG] [Thread-125527] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:41:06.981 [DEBUG] [Thread-125527] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:41:06.981 [DEBUG] [Thread-125527] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:41:06.982 [DEBUG] [Thread-125527] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:41:06.982 [DEBUG] [Thread-125527] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:41:06.982 [DEBUG] [Thread-125527] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:41:06.982 [DEBUG] [Thread-125527] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:41:06.982 [DEBUG] [Thread-125527] [transport.py] [_log()] client lang: <none>
2025-11-04T00:41:06.982 [DEBUG] [Thread-125527] [transport.py] [_log()] server lang: <none>
2025-11-04T00:41:06.982 [DEBUG] [Thread-125527] [transport.py] [_log()] kex follows: False
2025-11-04T00:41:06.982 [DEBUG] [Thread-125527] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:41:06.983 [DEBUG] [Thread-125527] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:41:06.983 [DEBUG] [Thread-125527] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:41:06.984 [DEBUG] [Thread-125527] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:41:06.984 [DEBUG] [Thread-125527] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:41:06.984 [DEBUG] [Thread-125527] [transport.py] [_log()] Compression: none
2025-11-04T00:41:06.984 [DEBUG] [Thread-125527] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:41:07.027 [DEBUG] [Thread-125527] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:41:07.033 [DEBUG] [Thread-125527] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:41:07.035 [DEBUG] [Thread-125527] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:41:07.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:41:07.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:41:07.039 [DEBUG] [Thread-125527] [transport.py] [_log()] userauth is OK
2025-11-04T00:41:07.039 [DEBUG] [Thread-125527] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:41:07.039 [DEBUG] [Thread-125527] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:41:07.039 [DEBUG] [Thread-125527] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:41:07.039 [DEBUG] [Thread-125527] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:41:07.059 [INFO] [Thread-125527] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:41:07.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:41:08.191 [DEBUG] [Thread-125527] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:41:08.192 [DEBUG] [Thread-125527] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:41:08.192 [DEBUG] [Thread-125527] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:41:08.224 [DEBUG] [Thread-125527] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:41:08.224 [DEBUG] [Thread-125527] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:41:08.227 [DEBUG] [Thread-125527] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:41:08.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:41:08.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:41:08.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:41:08.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:41:08.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:41:08.248 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:41:08.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:41:08.249 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:41:08.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:41:08.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.944890 -999.00  +18.60  17.20     18   -6.10 1 1 1 1 1     0    0 23.30 -33.68 ZNESW 18.1 17.2 309.8 23.1 18.5 -24.7 18.4 -23.6 18.2 -23.3 18.4 -24.0
2025-11-04T00:41:08.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:41:08.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:41:08.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.944890
2025-11-04T00:41:08.256 [DEBUG] [Thread-125527] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:41:08.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:41:08.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:41:08.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:41:08.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:41:08.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:41:08.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:40:50', tmtdew=28.96, humidity=13.18, cloud=0.0, wind=15.81, temperature=18.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:40:50', seeing=1.16, atlas_timestamp='2025-11-03T22:40:38.496', atlas_cloud=1, atlas_rain=1, zp_data=[0.0467499999999994, 0.02224999999999966, 0.06975000000000087, 0.09299999999999997, 0.10650000000000048, -0.010749999999999815, -0.12650000000000006, 0.01925000000000132, 0.06049999999999933, 0.0519999999999996, 0.1112499999999983, 0.03250000000000064, 0.11749999999999972, 0.05325000000000024, -0.2480000000000011, 0.03849999999999909, 0.10474999999999923, 0.10449999999999982, 0.15450000000000053, 0.1712499999999988, 0.16499999999999915, 0.03774999999999906, -0.03474999999999895, 0.024750000000000938, 0.10599999999999987, 0.1974999999999998, 0.1957500000000003, 0.22250000000000014, 0.23150000000000048, 0.269000000000001, 0.08700000000000152, 0.13950000000000173, 0.08074999999999832], zp_timestamp='2025-11-03T22:38:00')
2025-11-04T00:41:08.347 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:41:08.360 [DEBUG] [Thread-125530] [transport.py] [_log()] starting thread (client mode): 0xedb01c0
2025-11-04T00:41:08.360 [DEBUG] [Thread-125530] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:41:08.379 [DEBUG] [Thread-125530] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:41:08.379 [INFO] [Thread-125530] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:41:08.388 [DEBUG] [Thread-125530] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:41:08.389 [DEBUG] [Thread-125530] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:41:08.389 [DEBUG] [Thread-125530] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:41:08.389 [DEBUG] [Thread-125530] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:41:08.389 [DEBUG] [Thread-125530] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:41:08.389 [DEBUG] [Thread-125530] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:41:08.389 [DEBUG] [Thread-125530] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:41:08.389 [DEBUG] [Thread-125530] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:41:08.389 [DEBUG] [Thread-125530] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:41:08.389 [DEBUG] [Thread-125530] [transport.py] [_log()] client lang: <none>
2025-11-04T00:41:08.389 [DEBUG] [Thread-125530] [transport.py] [_log()] server lang: <none>
2025-11-04T00:41:08.389 [DEBUG] [Thread-125530] [transport.py] [_log()] kex follows: False
2025-11-04T00:41:08.389 [DEBUG] [Thread-125530] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:41:08.389 [DEBUG] [Thread-125530] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:41:08.389 [DEBUG] [Thread-125530] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:41:08.389 [DEBUG] [Thread-125530] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:41:08.390 [DEBUG] [Thread-125530] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:41:08.390 [DEBUG] [Thread-125530] [transport.py] [_log()] Compression: none
2025-11-04T00:41:08.390 [DEBUG] [Thread-125530] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:41:08.447 [DEBUG] [Thread-125530] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:41:08.447 [DEBUG] [Thread-125530] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:41:08.448 [DEBUG] [Thread-125530] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:41:08.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:41:08.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:41:08.509 [DEBUG] [Thread-125530] [transport.py] [_log()] userauth is OK
2025-11-04T00:41:08.509 [DEBUG] [Thread-125530] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:41:08.509 [DEBUG] [Thread-125530] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:41:08.509 [DEBUG] [Thread-125530] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:41:08.509 [DEBUG] [Thread-125530] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:41:08.528 [INFO] [Thread-125530] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:41:08.529 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:41:08.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:41:09.412 [DEBUG] [Thread-125530] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:41:09.412 [DEBUG] [Thread-125530] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:41:09.431 [DEBUG] [Thread-125532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:41:09.451 [DEBUG] [Thread-125530] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:41:09.451 [DEBUG] [Thread-125530] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:41:09.459 [DEBUG] [Thread-125530] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:41:09.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:41:09.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:41:09.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:41:09.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:41:09.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:41:09.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:41:09.496 [DEBUG] [Thread-125530] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:41:17.205 [DEBUG] [Thread-125533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:41:21.710 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:41:21.714 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:41:24.548 [DEBUG] [Thread-125534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:41:39.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:41:39.529 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:41:39.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:41:39.579 [DEBUG] [Thread-125535 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:41:40.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 41, 22), 28.99, 13.14, 0.0, 16.71, 18.3, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:41:40.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:41:22
2025-11-04T00:41:40.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:41:40.599 [DEBUG] [Thread-125536] [transport.py] [_log()] starting thread (client mode): 0x117635b0
2025-11-04T00:41:40.600 [DEBUG] [Thread-125536] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:41:40.605 [DEBUG] [Thread-125536] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:41:40.606 [INFO] [Thread-125536] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:41:40.609 [DEBUG] [Thread-125536] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:41:40.609 [DEBUG] [Thread-125536] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:41:40.609 [DEBUG] [Thread-125536] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:41:40.609 [DEBUG] [Thread-125536] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:41:40.609 [DEBUG] [Thread-125536] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:41:40.609 [DEBUG] [Thread-125536] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:41:40.609 [DEBUG] [Thread-125536] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:41:40.610 [DEBUG] [Thread-125536] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:41:40.610 [DEBUG] [Thread-125536] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:41:40.610 [DEBUG] [Thread-125536] [transport.py] [_log()] client lang: <none>
2025-11-04T00:41:40.610 [DEBUG] [Thread-125536] [transport.py] [_log()] server lang: <none>
2025-11-04T00:41:40.610 [DEBUG] [Thread-125536] [transport.py] [_log()] kex follows: False
2025-11-04T00:41:40.610 [DEBUG] [Thread-125536] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:41:40.610 [DEBUG] [Thread-125536] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:41:40.610 [DEBUG] [Thread-125536] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:41:40.611 [DEBUG] [Thread-125536] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:41:40.611 [DEBUG] [Thread-125536] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:41:40.611 [DEBUG] [Thread-125536] [transport.py] [_log()] Compression: none
2025-11-04T00:41:40.611 [DEBUG] [Thread-125536] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:41:40.642 [DEBUG] [Thread-125536] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:41:40.644 [DEBUG] [Thread-125536] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:41:40.645 [DEBUG] [Thread-125536] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:41:40.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:41:40.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:41:40.650 [DEBUG] [Thread-125536] [transport.py] [_log()] userauth is OK
2025-11-04T00:41:40.650 [DEBUG] [Thread-125536] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:41:40.650 [DEBUG] [Thread-125536] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:41:40.650 [DEBUG] [Thread-125536] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:41:40.650 [DEBUG] [Thread-125536] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:41:40.675 [INFO] [Thread-125536] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:41:40.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:41:41.296 [DEBUG] [Thread-125536] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:41:41.296 [DEBUG] [Thread-125536] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:41:41.298 [DEBUG] [Thread-125536] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:41:41.338 [DEBUG] [Thread-125536] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:41:41.338 [DEBUG] [Thread-125536] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:41:41.342 [DEBUG] [Thread-125536] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:41:41.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:41:41.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:41:41.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:41:41.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:41:41.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:41:41.369 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:41:41.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:41:41.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:41:41.373 [DEBUG] [Thread-125536] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:41:41.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:41:41.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.945237 -999.00  +18.60  16.09     18   -6.10 1 1 1 1 1     0    0 23.46 -30.86 ZNESW 16.6 16.1 316.4 20.2 18.5 -24.6 18.4 -23.6 18.2 -23.3 18.4 -24.1
2025-11-04T00:41:41.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:41:41.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:41:41.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.945237
2025-11-04T00:41:41.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:41:41.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:41:41.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:41:41.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:41:41.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:41:41.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:41:22', tmtdew=28.99, humidity=13.14, cloud=0.0, wind=16.71, temperature=18.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:41:25', seeing=1.17, atlas_timestamp='2025-11-03T22:41:08.477', atlas_cloud=1, atlas_rain=1, zp_data=[0.0467499999999994, 0.02224999999999966, 0.06975000000000087, 0.09299999999999997, 0.10650000000000048, -0.010749999999999815, -0.12650000000000006, 0.01925000000000132, 0.06049999999999933, 0.0519999999999996, 0.1112499999999983, 0.03250000000000064, 0.11749999999999972, 0.05325000000000024, -0.2480000000000011, 0.03849999999999909, 0.10474999999999923, 0.10449999999999982, 0.15450000000000053, 0.1712499999999988, 0.16499999999999915, 0.03774999999999906, -0.03474999999999895, 0.024750000000000938, 0.10599999999999987, 0.1974999999999998, 0.1957500000000003, 0.22250000000000014, 0.23150000000000048, 0.269000000000001, 0.08700000000000152, 0.13950000000000173, 0.08074999999999832], zp_timestamp='2025-11-03T22:38:00')
2025-11-04T00:41:41.480 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:41:41.498 [DEBUG] [Thread-125539] [transport.py] [_log()] starting thread (client mode): 0x11762950
2025-11-04T00:41:41.499 [DEBUG] [Thread-125539] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:41:41.519 [DEBUG] [Thread-125539] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:41:41.520 [INFO] [Thread-125539] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:41:41.531 [DEBUG] [Thread-125539] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:41:41.532 [DEBUG] [Thread-125539] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:41:41.532 [DEBUG] [Thread-125539] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:41:41.532 [DEBUG] [Thread-125539] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:41:41.532 [DEBUG] [Thread-125539] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:41:41.532 [DEBUG] [Thread-125539] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:41:41.532 [DEBUG] [Thread-125539] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:41:41.532 [DEBUG] [Thread-125539] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:41:41.532 [DEBUG] [Thread-125539] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:41:41.532 [DEBUG] [Thread-125539] [transport.py] [_log()] client lang: <none>
2025-11-04T00:41:41.532 [DEBUG] [Thread-125539] [transport.py] [_log()] server lang: <none>
2025-11-04T00:41:41.532 [DEBUG] [Thread-125539] [transport.py] [_log()] kex follows: False
2025-11-04T00:41:41.532 [DEBUG] [Thread-125539] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:41:41.532 [DEBUG] [Thread-125539] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:41:41.533 [DEBUG] [Thread-125539] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:41:41.533 [DEBUG] [Thread-125539] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:41:41.533 [DEBUG] [Thread-125539] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:41:41.533 [DEBUG] [Thread-125539] [transport.py] [_log()] Compression: none
2025-11-04T00:41:41.533 [DEBUG] [Thread-125539] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:41:41.592 [DEBUG] [Thread-125539] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:41:41.592 [DEBUG] [Thread-125539] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:41:41.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:41:41.593 [DEBUG] [Thread-125539] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:41:41.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:41:41.654 [DEBUG] [Thread-125539] [transport.py] [_log()] userauth is OK
2025-11-04T00:41:41.655 [DEBUG] [Thread-125539] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:41:41.655 [DEBUG] [Thread-125539] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:41:41.655 [DEBUG] [Thread-125539] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:41:41.655 [DEBUG] [Thread-125539] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:41:41.692 [INFO] [Thread-125539] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:41:41.693 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:41:41.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:41:42.538 [DEBUG] [Thread-125539] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:41:42.538 [DEBUG] [Thread-125539] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:41:42.577 [DEBUG] [Thread-125539] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:41:42.577 [DEBUG] [Thread-125539] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:41:42.587 [DEBUG] [Thread-125539] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:41:42.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:41:42.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:41:42.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:41:42.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:41:42.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:41:42.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:41:42.626 [DEBUG] [Thread-125539] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:41:54.608 [DEBUG] [Thread-125541 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:42:09.710 [DEBUG] [Thread-125542 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:42:12.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:42:12.637 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:42:12.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:42:13.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 41, 59), 28.97, 13.16, 0.0, 18.05, 18.3, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:42:13.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:41:59
2025-11-04T00:42:13.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:42:13.636 [DEBUG] [Thread-125543] [transport.py] [_log()] starting thread (client mode): 0x11762e90
2025-11-04T00:42:13.636 [DEBUG] [Thread-125543] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:42:13.651 [DEBUG] [Thread-125543] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:42:13.651 [INFO] [Thread-125543] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:42:13.654 [DEBUG] [Thread-125543] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:42:13.654 [DEBUG] [Thread-125543] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:42:13.654 [DEBUG] [Thread-125543] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:42:13.654 [DEBUG] [Thread-125543] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:42:13.654 [DEBUG] [Thread-125543] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:42:13.654 [DEBUG] [Thread-125543] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:42:13.654 [DEBUG] [Thread-125543] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:42:13.654 [DEBUG] [Thread-125543] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:42:13.654 [DEBUG] [Thread-125543] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:42:13.654 [DEBUG] [Thread-125543] [transport.py] [_log()] client lang: <none>
2025-11-04T00:42:13.654 [DEBUG] [Thread-125543] [transport.py] [_log()] server lang: <none>
2025-11-04T00:42:13.654 [DEBUG] [Thread-125543] [transport.py] [_log()] kex follows: False
2025-11-04T00:42:13.654 [DEBUG] [Thread-125543] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:42:13.654 [DEBUG] [Thread-125543] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:42:13.654 [DEBUG] [Thread-125543] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:42:13.654 [DEBUG] [Thread-125543] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:42:13.654 [DEBUG] [Thread-125543] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:42:13.654 [DEBUG] [Thread-125543] [transport.py] [_log()] Compression: none
2025-11-04T00:42:13.654 [DEBUG] [Thread-125543] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:42:13.670 [DEBUG] [Thread-125543] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:42:13.673 [DEBUG] [Thread-125543] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:42:13.674 [DEBUG] [Thread-125543] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:42:13.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:42:13.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:42:13.712 [DEBUG] [Thread-125543] [transport.py] [_log()] userauth is OK
2025-11-04T00:42:13.712 [DEBUG] [Thread-125543] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:42:13.712 [DEBUG] [Thread-125543] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:42:13.712 [DEBUG] [Thread-125543] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:42:13.712 [DEBUG] [Thread-125543] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:42:13.729 [INFO] [Thread-125543] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:42:13.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:42:14.370 [DEBUG] [Thread-125543] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:42:14.371 [DEBUG] [Thread-125543] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:42:14.371 [DEBUG] [Thread-125543] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:42:14.412 [DEBUG] [Thread-125543] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:42:14.412 [DEBUG] [Thread-125543] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:42:14.415 [DEBUG] [Thread-125543] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:42:14.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:42:14.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:42:14.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:42:14.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:42:14.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:42:14.437 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:42:14.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:42:14.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:42:14.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:42:14.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.945585 -999.00  +18.50  14.82     18   -6.10 1 1 1 1 1     0    0 23.84 -28.72 ZNESW 16.4 14.8 314.0 20.8 18.5 -24.6 18.4 -23.6 18.2 -23.4 18.4 -24.2
2025-11-04T00:42:14.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:42:14.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:42:14.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.945585
2025-11-04T00:42:14.445 [DEBUG] [Thread-125543] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:42:14.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:42:14.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:42:14.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:42:14.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:42:14.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:42:14.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:41:59', tmtdew=28.97, humidity=13.16, cloud=0.0, wind=18.05, temperature=18.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:41:59', seeing=1.13, atlas_timestamp='2025-11-03T22:41:38.544', atlas_cloud=1, atlas_rain=1, zp_data=[0.0467499999999994, 0.02224999999999966, 0.06975000000000087, 0.09299999999999997, 0.10650000000000048, -0.010749999999999815, -0.12650000000000006, 0.01925000000000132, 0.06049999999999933, 0.0519999999999996, 0.1112499999999983, 0.03250000000000064, 0.11749999999999972, 0.05325000000000024, -0.2480000000000011, 0.03849999999999909, 0.10474999999999923, 0.10449999999999982, 0.15450000000000053, 0.1712499999999988, 0.16499999999999915, 0.03774999999999906, -0.03474999999999895, 0.024750000000000938, 0.10599999999999987, 0.1974999999999998, 0.1957500000000003, 0.22250000000000014, 0.23150000000000048, 0.269000000000001, 0.08700000000000152, 0.13950000000000173, 0.08074999999999832], zp_timestamp='2025-11-03T22:38:00')
2025-11-04T00:42:14.534 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:42:14.549 [DEBUG] [Thread-125546] [transport.py] [_log()] starting thread (client mode): 0xed43b20
2025-11-04T00:42:14.549 [DEBUG] [Thread-125546] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:42:14.566 [DEBUG] [Thread-125546] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:42:14.566 [INFO] [Thread-125546] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:42:14.576 [DEBUG] [Thread-125546] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:42:14.576 [DEBUG] [Thread-125546] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:42:14.576 [DEBUG] [Thread-125546] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:42:14.576 [DEBUG] [Thread-125546] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:42:14.576 [DEBUG] [Thread-125546] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:42:14.576 [DEBUG] [Thread-125546] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:42:14.576 [DEBUG] [Thread-125546] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:42:14.576 [DEBUG] [Thread-125546] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:42:14.577 [DEBUG] [Thread-125546] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:42:14.577 [DEBUG] [Thread-125546] [transport.py] [_log()] client lang: <none>
2025-11-04T00:42:14.577 [DEBUG] [Thread-125546] [transport.py] [_log()] server lang: <none>
2025-11-04T00:42:14.577 [DEBUG] [Thread-125546] [transport.py] [_log()] kex follows: False
2025-11-04T00:42:14.577 [DEBUG] [Thread-125546] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:42:14.577 [DEBUG] [Thread-125546] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:42:14.577 [DEBUG] [Thread-125546] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:42:14.577 [DEBUG] [Thread-125546] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:42:14.577 [DEBUG] [Thread-125546] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:42:14.577 [DEBUG] [Thread-125546] [transport.py] [_log()] Compression: none
2025-11-04T00:42:14.577 [DEBUG] [Thread-125546] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:42:14.640 [DEBUG] [Thread-125546] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:42:14.640 [DEBUG] [Thread-125546] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:42:14.641 [DEBUG] [Thread-125546] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:42:14.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:42:14.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:42:14.700 [DEBUG] [Thread-125546] [transport.py] [_log()] userauth is OK
2025-11-04T00:42:14.700 [DEBUG] [Thread-125546] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:42:14.700 [DEBUG] [Thread-125546] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:42:14.700 [DEBUG] [Thread-125546] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:42:14.700 [DEBUG] [Thread-125546] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:42:14.714 [INFO] [Thread-125546] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:42:14.714 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:42:14.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:42:15.551 [DEBUG] [Thread-125546] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:42:15.553 [DEBUG] [Thread-125546] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:42:15.601 [DEBUG] [Thread-125546] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:42:15.601 [DEBUG] [Thread-125546] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:42:15.611 [DEBUG] [Thread-125546] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:42:15.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:42:15.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:42:15.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:42:15.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:42:15.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:42:15.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:42:15.657 [DEBUG] [Thread-125546] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:42:18.818 [DEBUG] [Thread-125548 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:42:21.942 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:42:21.945 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:42:24.743 [DEBUG] [Thread-125549 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:42:39.988 [DEBUG] [Thread-125550 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:42:45.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:42:45.678 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:42:45.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:42:46.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 42, 31), 29.04, 13.11, 0.0, 19.13, 18.38, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:42:46.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:42:31
2025-11-04T00:42:46.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:42:46.758 [DEBUG] [Thread-125551] [transport.py] [_log()] starting thread (client mode): 0xedb1840
2025-11-04T00:42:46.758 [DEBUG] [Thread-125551] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:42:46.778 [DEBUG] [Thread-125551] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:42:46.778 [INFO] [Thread-125551] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:42:46.781 [DEBUG] [Thread-125551] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:42:46.781 [DEBUG] [Thread-125551] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:42:46.781 [DEBUG] [Thread-125551] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:42:46.781 [DEBUG] [Thread-125551] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:42:46.781 [DEBUG] [Thread-125551] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:42:46.781 [DEBUG] [Thread-125551] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:42:46.781 [DEBUG] [Thread-125551] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:42:46.781 [DEBUG] [Thread-125551] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:42:46.781 [DEBUG] [Thread-125551] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:42:46.781 [DEBUG] [Thread-125551] [transport.py] [_log()] client lang: <none>
2025-11-04T00:42:46.781 [DEBUG] [Thread-125551] [transport.py] [_log()] server lang: <none>
2025-11-04T00:42:46.781 [DEBUG] [Thread-125551] [transport.py] [_log()] kex follows: False
2025-11-04T00:42:46.781 [DEBUG] [Thread-125551] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:42:46.782 [DEBUG] [Thread-125551] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:42:46.782 [DEBUG] [Thread-125551] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:42:46.782 [DEBUG] [Thread-125551] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:42:46.782 [DEBUG] [Thread-125551] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:42:46.782 [DEBUG] [Thread-125551] [transport.py] [_log()] Compression: none
2025-11-04T00:42:46.782 [DEBUG] [Thread-125551] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:42:46.803 [DEBUG] [Thread-125551] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:42:46.804 [DEBUG] [Thread-125551] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:42:46.805 [DEBUG] [Thread-125551] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:42:46.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:42:46.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:42:46.807 [DEBUG] [Thread-125551] [transport.py] [_log()] userauth is OK
2025-11-04T00:42:46.807 [DEBUG] [Thread-125551] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:42:46.807 [DEBUG] [Thread-125551] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:42:46.807 [DEBUG] [Thread-125551] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:42:46.807 [DEBUG] [Thread-125551] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:42:46.843 [INFO] [Thread-125551] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:42:46.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:42:47.492 [DEBUG] [Thread-125551] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:42:47.492 [DEBUG] [Thread-125551] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:42:47.492 [DEBUG] [Thread-125551] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:42:47.533 [DEBUG] [Thread-125551] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:42:47.533 [DEBUG] [Thread-125551] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:42:47.536 [DEBUG] [Thread-125551] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:42:47.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:42:47.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:42:47.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:42:47.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:42:47.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:42:47.564 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:42:47.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:42:47.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:42:47.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:42:47.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.945932 -999.00  +18.50  17.02     18   -6.10 1 1 1 1 1     0    0 23.69 -25.84 ZNESW 17.3 17.0 312.8 20.6 18.4 -24.5 18.4 -23.5 18.1 -23.5 18.5 -24.3
2025-11-04T00:42:47.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:42:47.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:42:47.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.945932
2025-11-04T00:42:47.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:42:47.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:42:47.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:42:47.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:42:47.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:42:47.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:42:31', tmtdew=29.04, humidity=13.11, cloud=0.0, wind=19.13, temperature=18.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:42:33', seeing=1.13, atlas_timestamp='2025-11-03T22:42:08.525', atlas_cloud=1, atlas_rain=1, zp_data=[0.0467499999999994, 0.02224999999999966, 0.06975000000000087, 0.09299999999999997, 0.10650000000000048, -0.010749999999999815, -0.12650000000000006, 0.01925000000000132, 0.06049999999999933, 0.0519999999999996, 0.1112499999999983, 0.03250000000000064, 0.11749999999999972, 0.05325000000000024, -0.2480000000000011, 0.03849999999999909, 0.10474999999999923, 0.10449999999999982, 0.15450000000000053, 0.1712499999999988, 0.16499999999999915, 0.03774999999999906, -0.03474999999999895, 0.024750000000000938, 0.10599999999999987, 0.1974999999999998, 0.1957500000000003, 0.22250000000000014, 0.23150000000000048, 0.269000000000001, 0.08700000000000152, 0.13950000000000173, 0.08074999999999832], zp_timestamp='2025-11-03T22:38:00')
2025-11-04T00:42:47.565 [DEBUG] [Thread-125551] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:42:47.637 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:42:47.650 [DEBUG] [Thread-125554] [transport.py] [_log()] starting thread (client mode): 0xed43f10
2025-11-04T00:42:47.650 [DEBUG] [Thread-125554] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:42:47.664 [DEBUG] [Thread-125554] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:42:47.665 [INFO] [Thread-125554] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:42:47.672 [DEBUG] [Thread-125554] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:42:47.672 [DEBUG] [Thread-125554] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:42:47.672 [DEBUG] [Thread-125554] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:42:47.672 [DEBUG] [Thread-125554] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:42:47.672 [DEBUG] [Thread-125554] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:42:47.672 [DEBUG] [Thread-125554] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:42:47.672 [DEBUG] [Thread-125554] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:42:47.672 [DEBUG] [Thread-125554] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:42:47.672 [DEBUG] [Thread-125554] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:42:47.672 [DEBUG] [Thread-125554] [transport.py] [_log()] client lang: <none>
2025-11-04T00:42:47.672 [DEBUG] [Thread-125554] [transport.py] [_log()] server lang: <none>
2025-11-04T00:42:47.672 [DEBUG] [Thread-125554] [transport.py] [_log()] kex follows: False
2025-11-04T00:42:47.672 [DEBUG] [Thread-125554] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:42:47.672 [DEBUG] [Thread-125554] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:42:47.672 [DEBUG] [Thread-125554] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:42:47.672 [DEBUG] [Thread-125554] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:42:47.672 [DEBUG] [Thread-125554] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:42:47.672 [DEBUG] [Thread-125554] [transport.py] [_log()] Compression: none
2025-11-04T00:42:47.672 [DEBUG] [Thread-125554] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:42:47.731 [DEBUG] [Thread-125554] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:42:47.731 [DEBUG] [Thread-125554] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:42:47.731 [DEBUG] [Thread-125554] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:42:47.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:42:47.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:42:47.793 [DEBUG] [Thread-125554] [transport.py] [_log()] userauth is OK
2025-11-04T00:42:47.794 [DEBUG] [Thread-125554] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:42:47.794 [DEBUG] [Thread-125554] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:42:47.794 [DEBUG] [Thread-125554] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:42:47.794 [DEBUG] [Thread-125554] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:42:47.808 [INFO] [Thread-125554] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:42:47.808 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:42:47.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:42:48.720 [DEBUG] [Thread-125554] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:42:48.721 [DEBUG] [Thread-125554] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:42:48.770 [DEBUG] [Thread-125554] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:42:48.770 [DEBUG] [Thread-125554] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:42:48.780 [DEBUG] [Thread-125554] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:42:48.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:42:48.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:42:48.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:42:48.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:42:48.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:42:48.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:42:48.822 [DEBUG] [Thread-125554] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:42:55.016 [DEBUG] [Thread-125556 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:43:10.050 [DEBUG] [Thread-125557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:43:18.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:43:18.829 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:43:18.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:43:20.495 [DEBUG] [Thread-125558 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:43:21.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 43, 7), 29.08, 13.06, 0.0, 18.26, 18.35, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:43:21.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:43:07
2025-11-04T00:43:21.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:43:21.960 [DEBUG] [Thread-125559] [transport.py] [_log()] starting thread (client mode): 0xedb1ab0
2025-11-04T00:43:21.966 [DEBUG] [Thread-125559] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:43:21.969 [DEBUG] [Thread-125559] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:43:21.972 [INFO] [Thread-125559] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:43:22.011 [DEBUG] [Thread-125559] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:43:22.012 [DEBUG] [Thread-125559] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:43:22.012 [DEBUG] [Thread-125559] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:43:22.012 [DEBUG] [Thread-125559] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:43:22.012 [DEBUG] [Thread-125559] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:43:22.012 [DEBUG] [Thread-125559] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:43:22.012 [DEBUG] [Thread-125559] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:43:22.012 [DEBUG] [Thread-125559] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:43:22.012 [DEBUG] [Thread-125559] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:43:22.012 [DEBUG] [Thread-125559] [transport.py] [_log()] client lang: <none>
2025-11-04T00:43:22.012 [DEBUG] [Thread-125559] [transport.py] [_log()] server lang: <none>
2025-11-04T00:43:22.013 [DEBUG] [Thread-125559] [transport.py] [_log()] kex follows: False
2025-11-04T00:43:22.013 [DEBUG] [Thread-125559] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:43:22.018 [DEBUG] [Thread-125559] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:43:22.019 [DEBUG] [Thread-125559] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:43:22.020 [DEBUG] [Thread-125559] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:43:22.020 [DEBUG] [Thread-125559] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:43:22.021 [DEBUG] [Thread-125559] [transport.py] [_log()] Compression: none
2025-11-04T00:43:22.021 [DEBUG] [Thread-125559] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:43:22.158 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:43:22.173 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:43:22.175 [DEBUG] [Thread-125559] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:43:22.208 [DEBUG] [Thread-125559] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:43:22.216 [DEBUG] [Thread-125559] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:43:22.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:43:22.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:43:22.241 [DEBUG] [Thread-125559] [transport.py] [_log()] userauth is OK
2025-11-04T00:43:22.243 [DEBUG] [Thread-125559] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:43:22.243 [DEBUG] [Thread-125559] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:43:22.243 [DEBUG] [Thread-125559] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:43:22.243 [DEBUG] [Thread-125559] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:43:22.278 [INFO] [Thread-125559] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:43:22.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:43:22.931 [DEBUG] [Thread-125559] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:43:22.932 [DEBUG] [Thread-125559] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:43:22.940 [DEBUG] [Thread-125559] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:43:22.942 [DEBUG] [Thread-125559] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:43:22.942 [DEBUG] [Thread-125559] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:43:22.948 [DEBUG] [Thread-125559] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:43:22.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:43:22.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:43:22.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:43:22.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:43:22.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:43:22.993 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:43:22.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:43:22.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:43:23.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:43:23.005 [DEBUG] [Thread-125559] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:43:23.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.946626 -999.00  +18.50  15.63     18   -6.10 1 1 1 1 1     0    0 23.59 -18.43 ZNESW 19.9 15.6 314.0 18.2 18.4 -24.6 18.4 -23.5 18.1 -23.5 18.4 -24.2
2025-11-04T00:43:23.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:43:23.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:43:23.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.946626
2025-11-04T00:43:23.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:43:23.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:43:23.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:43:23.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:43:23.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:43:23.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:43:07', tmtdew=29.08, humidity=13.06, cloud=0.0, wind=18.26, temperature=18.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:43:08', seeing=1.11, atlas_timestamp='2025-11-03T22:43:08.486', atlas_cloud=1, atlas_rain=1, zp_data=[-0.05025000000000013, -0.053749999999999076, 0.04625000000000057, -0.033500000000000085, 0.04550000000000054, -0.06475000000000009, -0.15700000000000003, -0.1407500000000006, -0.015000000000000568, 0.08249999999999957, 0.09124999999999872, -0.011499999999999844, 0.06599999999999895, 0.00024999999999941735, -0.12700000000000067, 0.0039999999999995595, 0.05024999999999835, 0.06550000000000011, 0.14199999999999946, 0.14924999999999855, 0.11749999999999972, 0.04174999999999862, -0.20174999999999876, 0.02674999999999983, 0.008999999999998565, 0.1534999999999993, 0.1772500000000008, 0.136000000000001, 0.2320000000000002, 0.31700000000000106, 0.002000000000000668, 0.08700000000000152, 0.06774999999999842], zp_timestamp='2025-11-03T22:41:00')
2025-11-04T00:43:23.270 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:43:23.287 [DEBUG] [Thread-125562] [transport.py] [_log()] starting thread (client mode): 0x117ea140
2025-11-04T00:43:23.287 [DEBUG] [Thread-125562] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:43:23.304 [DEBUG] [Thread-125562] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:43:23.305 [INFO] [Thread-125562] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:43:23.315 [DEBUG] [Thread-125562] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:43:23.315 [DEBUG] [Thread-125562] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:43:23.315 [DEBUG] [Thread-125562] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:43:23.315 [DEBUG] [Thread-125562] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:43:23.315 [DEBUG] [Thread-125562] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:43:23.315 [DEBUG] [Thread-125562] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:43:23.315 [DEBUG] [Thread-125562] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:43:23.315 [DEBUG] [Thread-125562] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:43:23.315 [DEBUG] [Thread-125562] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:43:23.315 [DEBUG] [Thread-125562] [transport.py] [_log()] client lang: <none>
2025-11-04T00:43:23.315 [DEBUG] [Thread-125562] [transport.py] [_log()] server lang: <none>
2025-11-04T00:43:23.316 [DEBUG] [Thread-125562] [transport.py] [_log()] kex follows: False
2025-11-04T00:43:23.316 [DEBUG] [Thread-125562] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:43:23.316 [DEBUG] [Thread-125562] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:43:23.316 [DEBUG] [Thread-125562] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:43:23.316 [DEBUG] [Thread-125562] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:43:23.316 [DEBUG] [Thread-125562] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:43:23.316 [DEBUG] [Thread-125562] [transport.py] [_log()] Compression: none
2025-11-04T00:43:23.316 [DEBUG] [Thread-125562] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:43:23.380 [DEBUG] [Thread-125562] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:43:23.380 [DEBUG] [Thread-125562] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:43:23.381 [DEBUG] [Thread-125562] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:43:23.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:43:23.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:43:23.440 [DEBUG] [Thread-125562] [transport.py] [_log()] userauth is OK
2025-11-04T00:43:23.441 [DEBUG] [Thread-125562] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:43:23.442 [DEBUG] [Thread-125562] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:43:23.443 [DEBUG] [Thread-125562] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:43:23.443 [DEBUG] [Thread-125562] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:43:23.460 [INFO] [Thread-125562] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:43:23.460 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:43:23.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:43:24.310 [DEBUG] [Thread-125562] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:43:24.311 [DEBUG] [Thread-125562] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:43:24.359 [DEBUG] [Thread-125562] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:43:24.359 [DEBUG] [Thread-125562] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:43:24.371 [DEBUG] [Thread-125562] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:43:24.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:43:24.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:43:24.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:43:24.426 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:43:24.426 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:43:24.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:43:24.438 [DEBUG] [Thread-125562] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:43:25.081 [DEBUG] [Thread-125564 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:43:40.525 [DEBUG] [Thread-125565 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:43:42.723 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:43:48.346 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:43:51.415 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:43:54.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:43:54.457 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:43:54.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:43:55.555 [DEBUG] [Thread-125566 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:43:56.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 43, 40), 29.05, 13.09, 0.0, 15.1, 18.37, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:43:56.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:43:40
2025-11-04T00:43:56.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:43:56.497 [DEBUG] [Thread-125567] [transport.py] [_log()] starting thread (client mode): 0xedb1540
2025-11-04T00:43:56.497 [DEBUG] [Thread-125567] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:43:56.517 [DEBUG] [Thread-125567] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:43:56.518 [INFO] [Thread-125567] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:43:56.521 [DEBUG] [Thread-125567] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:43:56.521 [DEBUG] [Thread-125567] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:43:56.521 [DEBUG] [Thread-125567] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:43:56.521 [DEBUG] [Thread-125567] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:43:56.521 [DEBUG] [Thread-125567] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:43:56.521 [DEBUG] [Thread-125567] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:43:56.522 [DEBUG] [Thread-125567] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:43:56.522 [DEBUG] [Thread-125567] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:43:56.522 [DEBUG] [Thread-125567] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:43:56.522 [DEBUG] [Thread-125567] [transport.py] [_log()] client lang: <none>
2025-11-04T00:43:56.523 [DEBUG] [Thread-125567] [transport.py] [_log()] server lang: <none>
2025-11-04T00:43:56.523 [DEBUG] [Thread-125567] [transport.py] [_log()] kex follows: False
2025-11-04T00:43:56.523 [DEBUG] [Thread-125567] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:43:56.523 [DEBUG] [Thread-125567] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:43:56.523 [DEBUG] [Thread-125567] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:43:56.523 [DEBUG] [Thread-125567] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:43:56.523 [DEBUG] [Thread-125567] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:43:56.523 [DEBUG] [Thread-125567] [transport.py] [_log()] Compression: none
2025-11-04T00:43:56.523 [DEBUG] [Thread-125567] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:43:56.543 [DEBUG] [Thread-125567] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:43:56.544 [DEBUG] [Thread-125567] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:43:56.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:43:56.545 [DEBUG] [Thread-125567] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:43:56.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:43:56.549 [DEBUG] [Thread-125567] [transport.py] [_log()] userauth is OK
2025-11-04T00:43:56.549 [DEBUG] [Thread-125567] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:43:56.549 [DEBUG] [Thread-125567] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:43:56.549 [DEBUG] [Thread-125567] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:43:56.549 [DEBUG] [Thread-125567] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:43:56.584 [INFO] [Thread-125567] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:43:56.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:43:57.259 [DEBUG] [Thread-125567] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:43:57.259 [DEBUG] [Thread-125567] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:43:57.259 [DEBUG] [Thread-125567] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:43:57.300 [DEBUG] [Thread-125567] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:43:57.300 [DEBUG] [Thread-125567] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:43:57.303 [DEBUG] [Thread-125567] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:43:57.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:43:57.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:43:57.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:43:57.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:43:57.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:43:57.322 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:43:57.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:43:57.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:43:57.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:43:57.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.946973 -999.00  +18.50  16.06     18   -6.10 1 1 1 1 1     0    0 24.05 -14.63 ZNESW 15.6 16.1 309.4 20.8 18.5 -24.7 18.4 -23.7 18.2 -23.4 18.4 -24.4
2025-11-04T00:43:57.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:43:57.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:43:57.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.946973
2025-11-04T00:43:57.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:43:57.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:43:57.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:43:57.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:43:57.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:43:57.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:43:40', tmtdew=29.05, humidity=13.09, cloud=0.0, wind=15.1, temperature=18.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:43:41', seeing=1.11, atlas_timestamp='2025-11-03T22:43:38.467', atlas_cloud=1, atlas_rain=1, zp_data=[-0.05025000000000013, -0.053749999999999076, 0.04625000000000057, -0.033500000000000085, 0.04550000000000054, -0.06475000000000009, -0.15700000000000003, -0.1407500000000006, -0.015000000000000568, 0.08249999999999957, 0.09124999999999872, -0.011499999999999844, 0.06599999999999895, 0.00024999999999941735, -0.12700000000000067, 0.0039999999999995595, 0.05024999999999835, 0.06550000000000011, 0.14199999999999946, 0.14924999999999855, 0.11749999999999972, 0.04174999999999862, -0.20174999999999876, 0.02674999999999983, 0.008999999999998565, 0.1534999999999993, 0.1772500000000008, 0.136000000000001, 0.2320000000000002, 0.31700000000000106, 0.002000000000000668, 0.08700000000000152, 0.06774999999999842], zp_timestamp='2025-11-03T22:41:00')
2025-11-04T00:43:57.323 [DEBUG] [Thread-125567] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:43:57.395 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:43:57.408 [DEBUG] [Thread-125570] [transport.py] [_log()] starting thread (client mode): 0xed5c7c0
2025-11-04T00:43:57.408 [DEBUG] [Thread-125570] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:43:57.423 [DEBUG] [Thread-125570] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:43:57.423 [INFO] [Thread-125570] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:43:57.431 [DEBUG] [Thread-125570] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:43:57.432 [DEBUG] [Thread-125570] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:43:57.432 [DEBUG] [Thread-125570] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:43:57.432 [DEBUG] [Thread-125570] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:43:57.432 [DEBUG] [Thread-125570] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:43:57.432 [DEBUG] [Thread-125570] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:43:57.432 [DEBUG] [Thread-125570] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:43:57.432 [DEBUG] [Thread-125570] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:43:57.432 [DEBUG] [Thread-125570] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:43:57.432 [DEBUG] [Thread-125570] [transport.py] [_log()] client lang: <none>
2025-11-04T00:43:57.433 [DEBUG] [Thread-125570] [transport.py] [_log()] server lang: <none>
2025-11-04T00:43:57.433 [DEBUG] [Thread-125570] [transport.py] [_log()] kex follows: False
2025-11-04T00:43:57.433 [DEBUG] [Thread-125570] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:43:57.433 [DEBUG] [Thread-125570] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:43:57.433 [DEBUG] [Thread-125570] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:43:57.433 [DEBUG] [Thread-125570] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:43:57.433 [DEBUG] [Thread-125570] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:43:57.433 [DEBUG] [Thread-125570] [transport.py] [_log()] Compression: none
2025-11-04T00:43:57.433 [DEBUG] [Thread-125570] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:43:57.491 [DEBUG] [Thread-125570] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:43:57.492 [DEBUG] [Thread-125570] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:43:57.492 [DEBUG] [Thread-125570] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:43:57.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:43:57.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:43:57.552 [DEBUG] [Thread-125570] [transport.py] [_log()] userauth is OK
2025-11-04T00:43:57.552 [DEBUG] [Thread-125570] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:43:57.552 [DEBUG] [Thread-125570] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:43:57.552 [DEBUG] [Thread-125570] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:43:57.552 [DEBUG] [Thread-125570] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:43:57.575 [INFO] [Thread-125570] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:43:57.577 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:43:57.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:43:57.828 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:43:58.406 [DEBUG] [Thread-125570] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:43:58.406 [DEBUG] [Thread-125570] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:43:58.454 [DEBUG] [Thread-125570] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:43:58.454 [DEBUG] [Thread-125570] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:43:58.462 [DEBUG] [Thread-125570] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:43:58.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:43:58.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:43:58.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:43:58.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:43:58.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:43:58.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:43:58.497 [DEBUG] [Thread-125570] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:44:10.582 [DEBUG] [Thread-125572 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:44:22.063 [DEBUG] [Thread-125573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:44:22.382 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:44:22.388 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:44:25.650 [DEBUG] [Thread-125574 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:44:28.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:44:28.508 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:44:28.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:44:29.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 44, 13), 29.05, 13.08, 0.0, 15.26, 18.3, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:44:29.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:44:13
2025-11-04T00:44:29.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:44:29.771 [DEBUG] [Thread-125575] [transport.py] [_log()] starting thread (client mode): 0xed5d0c0
2025-11-04T00:44:29.772 [DEBUG] [Thread-125575] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:44:29.776 [DEBUG] [Thread-125575] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:44:29.776 [INFO] [Thread-125575] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:44:29.779 [DEBUG] [Thread-125575] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:44:29.779 [DEBUG] [Thread-125575] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:44:29.779 [DEBUG] [Thread-125575] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:44:29.779 [DEBUG] [Thread-125575] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:44:29.779 [DEBUG] [Thread-125575] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:44:29.779 [DEBUG] [Thread-125575] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:44:29.779 [DEBUG] [Thread-125575] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:44:29.779 [DEBUG] [Thread-125575] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:44:29.780 [DEBUG] [Thread-125575] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:44:29.780 [DEBUG] [Thread-125575] [transport.py] [_log()] client lang: <none>
2025-11-04T00:44:29.780 [DEBUG] [Thread-125575] [transport.py] [_log()] server lang: <none>
2025-11-04T00:44:29.780 [DEBUG] [Thread-125575] [transport.py] [_log()] kex follows: False
2025-11-04T00:44:29.780 [DEBUG] [Thread-125575] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:44:29.780 [DEBUG] [Thread-125575] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:44:29.780 [DEBUG] [Thread-125575] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:44:29.780 [DEBUG] [Thread-125575] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:44:29.780 [DEBUG] [Thread-125575] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:44:29.780 [DEBUG] [Thread-125575] [transport.py] [_log()] Compression: none
2025-11-04T00:44:29.780 [DEBUG] [Thread-125575] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:44:29.816 [DEBUG] [Thread-125575] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:44:29.820 [DEBUG] [Thread-125575] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:44:29.822 [DEBUG] [Thread-125575] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:44:29.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:44:29.825 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:44:29.827 [DEBUG] [Thread-125575] [transport.py] [_log()] userauth is OK
2025-11-04T00:44:29.828 [DEBUG] [Thread-125575] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:44:29.828 [DEBUG] [Thread-125575] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:44:29.828 [DEBUG] [Thread-125575] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:44:29.828 [DEBUG] [Thread-125575] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:44:29.856 [INFO] [Thread-125575] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:44:29.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:44:30.491 [DEBUG] [Thread-125575] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:44:30.491 [DEBUG] [Thread-125575] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:44:30.502 [DEBUG] [Thread-125575] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:44:30.533 [DEBUG] [Thread-125575] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:44:30.533 [DEBUG] [Thread-125575] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:44:30.537 [DEBUG] [Thread-125575] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:44:30.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:44:30.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:44:30.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:44:30.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:44:30.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:44:30.563 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:44:30.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:44:30.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:44:30.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:44:30.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.947321 -999.00  +18.40  15.34     18   -6.20 1 1 1 1 1     0    0 24.50 -12.18 ZNESW 18.3 15.3 310.0 18.2 18.4 -24.5 18.4 -23.6 18.1 -23.4 18.4 -24.2
2025-11-04T00:44:30.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:44:30.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:44:30.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.947321
2025-11-04T00:44:30.572 [DEBUG] [Thread-125575] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:44:30.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:44:30.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:44:30.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:44:30.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:44:30.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:44:30.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:44:13', tmtdew=29.05, humidity=13.08, cloud=0.0, wind=15.26, temperature=18.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:44:13', seeing=1.11, atlas_timestamp='2025-11-03T22:44:08.534', atlas_cloud=1, atlas_rain=1, zp_data=[-0.05025000000000013, -0.053749999999999076, 0.04625000000000057, -0.033500000000000085, 0.04550000000000054, -0.06475000000000009, -0.15700000000000003, -0.1407500000000006, -0.015000000000000568, 0.08249999999999957, 0.09124999999999872, -0.011499999999999844, 0.06599999999999895, 0.00024999999999941735, -0.12700000000000067, 0.0039999999999995595, 0.05024999999999835, 0.06550000000000011, 0.14199999999999946, 0.14924999999999855, 0.11749999999999972, 0.04174999999999862, -0.20174999999999876, 0.02674999999999983, 0.008999999999998565, 0.1534999999999993, 0.1772500000000008, 0.136000000000001, 0.2320000000000002, 0.31700000000000106, 0.002000000000000668, 0.08700000000000152, 0.06774999999999842], zp_timestamp='2025-11-03T22:41:00')
2025-11-04T00:44:30.679 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:44:30.691 [DEBUG] [Thread-125578] [transport.py] [_log()] starting thread (client mode): 0xed675e0
2025-11-04T00:44:30.691 [DEBUG] [Thread-125578] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:44:30.705 [DEBUG] [Thread-125578] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:44:30.706 [INFO] [Thread-125578] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:44:30.713 [DEBUG] [Thread-125578] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:44:30.713 [DEBUG] [Thread-125578] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:44:30.713 [DEBUG] [Thread-125578] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:44:30.713 [DEBUG] [Thread-125578] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:44:30.713 [DEBUG] [Thread-125578] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:44:30.713 [DEBUG] [Thread-125578] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:44:30.713 [DEBUG] [Thread-125578] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:44:30.713 [DEBUG] [Thread-125578] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:44:30.713 [DEBUG] [Thread-125578] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:44:30.713 [DEBUG] [Thread-125578] [transport.py] [_log()] client lang: <none>
2025-11-04T00:44:30.713 [DEBUG] [Thread-125578] [transport.py] [_log()] server lang: <none>
2025-11-04T00:44:30.713 [DEBUG] [Thread-125578] [transport.py] [_log()] kex follows: False
2025-11-04T00:44:30.713 [DEBUG] [Thread-125578] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:44:30.713 [DEBUG] [Thread-125578] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:44:30.713 [DEBUG] [Thread-125578] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:44:30.714 [DEBUG] [Thread-125578] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:44:30.714 [DEBUG] [Thread-125578] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:44:30.714 [DEBUG] [Thread-125578] [transport.py] [_log()] Compression: none
2025-11-04T00:44:30.714 [DEBUG] [Thread-125578] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:44:30.769 [DEBUG] [Thread-125578] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:44:30.769 [DEBUG] [Thread-125578] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:44:30.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:44:30.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:44:30.770 [DEBUG] [Thread-125578] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:44:30.827 [DEBUG] [Thread-125578] [transport.py] [_log()] userauth is OK
2025-11-04T00:44:30.827 [DEBUG] [Thread-125578] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:44:30.827 [DEBUG] [Thread-125578] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:44:30.827 [DEBUG] [Thread-125578] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:44:30.827 [DEBUG] [Thread-125578] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:44:30.842 [INFO] [Thread-125578] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:44:30.842 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:44:30.843 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:44:31.713 [DEBUG] [Thread-125578] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:44:31.714 [DEBUG] [Thread-125578] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:44:31.754 [DEBUG] [Thread-125578] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:44:31.754 [DEBUG] [Thread-125578] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:44:31.764 [DEBUG] [Thread-125578] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:44:31.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:44:31.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:44:31.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:44:31.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:44:31.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:44:31.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:44:31.805 [DEBUG] [Thread-125578] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:44:40.685 [DEBUG] [Thread-125580 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:44:55.752 [DEBUG] [Thread-125581 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:45:01.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:45:01.828 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:45:01.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:45:02.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 44, 45), 28.91, 13.18, 0.0, 14.01, 18.27, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:45:02.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:44:45
2025-11-04T00:45:02.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:45:02.937 [DEBUG] [Thread-125582] [transport.py] [_log()] starting thread (client mode): 0xed5f160
2025-11-04T00:45:02.938 [DEBUG] [Thread-125582] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:45:02.953 [DEBUG] [Thread-125582] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:45:02.953 [INFO] [Thread-125582] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:45:02.957 [DEBUG] [Thread-125582] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:45:02.957 [DEBUG] [Thread-125582] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:45:02.957 [DEBUG] [Thread-125582] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:45:02.957 [DEBUG] [Thread-125582] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:45:02.957 [DEBUG] [Thread-125582] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:45:02.957 [DEBUG] [Thread-125582] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:45:02.957 [DEBUG] [Thread-125582] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:45:02.957 [DEBUG] [Thread-125582] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:45:02.957 [DEBUG] [Thread-125582] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:45:02.957 [DEBUG] [Thread-125582] [transport.py] [_log()] client lang: <none>
2025-11-04T00:45:02.957 [DEBUG] [Thread-125582] [transport.py] [_log()] server lang: <none>
2025-11-04T00:45:02.957 [DEBUG] [Thread-125582] [transport.py] [_log()] kex follows: False
2025-11-04T00:45:02.957 [DEBUG] [Thread-125582] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:45:02.957 [DEBUG] [Thread-125582] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:45:02.957 [DEBUG] [Thread-125582] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:45:02.957 [DEBUG] [Thread-125582] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:45:02.957 [DEBUG] [Thread-125582] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:45:02.957 [DEBUG] [Thread-125582] [transport.py] [_log()] Compression: none
2025-11-04T00:45:02.957 [DEBUG] [Thread-125582] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:45:02.974 [DEBUG] [Thread-125582] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:45:02.975 [DEBUG] [Thread-125582] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:45:02.975 [DEBUG] [Thread-125582] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:45:02.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:45:02.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:45:02.976 [DEBUG] [Thread-125582] [transport.py] [_log()] userauth is OK
2025-11-04T00:45:02.976 [DEBUG] [Thread-125582] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:45:02.977 [DEBUG] [Thread-125582] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:45:02.977 [DEBUG] [Thread-125582] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:45:02.977 [DEBUG] [Thread-125582] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:45:02.992 [INFO] [Thread-125582] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:45:02.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:45:03.902 [DEBUG] [Thread-125582] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:45:03.902 [DEBUG] [Thread-125582] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:45:03.903 [DEBUG] [Thread-125582] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:45:03.942 [DEBUG] [Thread-125582] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:45:03.942 [DEBUG] [Thread-125582] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:45:03.945 [DEBUG] [Thread-125582] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:45:03.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:45:03.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:45:03.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:45:03.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:45:03.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:45:03.993 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:45:03.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:45:03.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:45:03.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:45:03.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.947668 -999.00  +18.50  14.18     18   -6.20 1 1 1 1 1     0    0 24.29 -9.79 ZNESW 16.1 14.2 312.2 21.5 18.5 -24.6 18.4 -23.6 18.1 -23.2 18.4 -24.2
2025-11-04T00:45:03.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:45:03.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:45:03.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.947668
2025-11-04T00:45:04.000 [DEBUG] [Thread-125582] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:45:04.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:45:04.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:45:04.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:45:04.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:45:04.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:45:04.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:44:45', tmtdew=28.91, humidity=13.18, cloud=0.0, wind=14.01, temperature=18.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:44:46', seeing=1.17, atlas_timestamp='2025-11-03T22:44:38.515', atlas_cloud=1, atlas_rain=1, zp_data=[-0.05025000000000013, -0.053749999999999076, 0.04625000000000057, -0.033500000000000085, 0.04550000000000054, -0.06475000000000009, -0.15700000000000003, -0.1407500000000006, -0.015000000000000568, 0.08249999999999957, 0.09124999999999872, -0.011499999999999844, 0.06599999999999895, 0.00024999999999941735, -0.12700000000000067, 0.0039999999999995595, 0.05024999999999835, 0.06550000000000011, 0.14199999999999946, 0.14924999999999855, 0.11749999999999972, 0.04174999999999862, -0.20174999999999876, 0.02674999999999983, 0.008999999999998565, 0.1534999999999993, 0.1772500000000008, 0.136000000000001, 0.2320000000000002, 0.31700000000000106, 0.002000000000000668, 0.08700000000000152, 0.06774999999999842], zp_timestamp='2025-11-03T22:41:00')
2025-11-04T00:45:04.089 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:45:04.102 [DEBUG] [Thread-125585] [transport.py] [_log()] starting thread (client mode): 0xed5fee0
2025-11-04T00:45:04.103 [DEBUG] [Thread-125585] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:45:04.119 [DEBUG] [Thread-125585] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:45:04.119 [INFO] [Thread-125585] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:45:04.127 [DEBUG] [Thread-125585] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:45:04.127 [DEBUG] [Thread-125585] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:45:04.127 [DEBUG] [Thread-125585] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:45:04.127 [DEBUG] [Thread-125585] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:45:04.127 [DEBUG] [Thread-125585] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:45:04.127 [DEBUG] [Thread-125585] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:45:04.127 [DEBUG] [Thread-125585] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:45:04.127 [DEBUG] [Thread-125585] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:45:04.127 [DEBUG] [Thread-125585] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:45:04.127 [DEBUG] [Thread-125585] [transport.py] [_log()] client lang: <none>
2025-11-04T00:45:04.127 [DEBUG] [Thread-125585] [transport.py] [_log()] server lang: <none>
2025-11-04T00:45:04.127 [DEBUG] [Thread-125585] [transport.py] [_log()] kex follows: False
2025-11-04T00:45:04.127 [DEBUG] [Thread-125585] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:45:04.127 [DEBUG] [Thread-125585] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:45:04.127 [DEBUG] [Thread-125585] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:45:04.127 [DEBUG] [Thread-125585] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:45:04.127 [DEBUG] [Thread-125585] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:45:04.127 [DEBUG] [Thread-125585] [transport.py] [_log()] Compression: none
2025-11-04T00:45:04.127 [DEBUG] [Thread-125585] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:45:04.185 [DEBUG] [Thread-125585] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:45:04.185 [DEBUG] [Thread-125585] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:45:04.185 [DEBUG] [Thread-125585] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:45:04.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:45:04.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:45:04.242 [DEBUG] [Thread-125585] [transport.py] [_log()] userauth is OK
2025-11-04T00:45:04.242 [DEBUG] [Thread-125585] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:45:04.242 [DEBUG] [Thread-125585] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:45:04.242 [DEBUG] [Thread-125585] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:45:04.242 [DEBUG] [Thread-125585] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:45:04.256 [INFO] [Thread-125585] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:45:04.256 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:45:04.257 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:45:05.119 [DEBUG] [Thread-125585] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:45:05.119 [DEBUG] [Thread-125585] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:45:05.167 [DEBUG] [Thread-125585] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:45:05.167 [DEBUG] [Thread-125585] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:45:05.176 [DEBUG] [Thread-125585] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:45:05.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:45:05.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:45:05.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:45:05.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:45:05.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:45:05.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:45:05.213 [DEBUG] [Thread-125585] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:45:10.787 [DEBUG] [Thread-125587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:45:22.592 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:45:22.596 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:45:23.547 [DEBUG] [Thread-125588 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:45:25.980 [DEBUG] [Thread-125589 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:45:35.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:45:35.236 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:45:35.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:45:36.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 45, 18), 28.95, 13.13, 0.0, 14.73, 18.22, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:45:36.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:45:18
2025-11-04T00:45:36.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:45:36.488 [DEBUG] [Thread-125590] [transport.py] [_log()] starting thread (client mode): 0x11761b70
2025-11-04T00:45:36.489 [DEBUG] [Thread-125590] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:45:36.498 [DEBUG] [Thread-125590] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:45:36.498 [INFO] [Thread-125590] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:45:36.502 [DEBUG] [Thread-125590] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:45:36.503 [DEBUG] [Thread-125590] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:45:36.503 [DEBUG] [Thread-125590] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:45:36.503 [DEBUG] [Thread-125590] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:45:36.503 [DEBUG] [Thread-125590] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:45:36.503 [DEBUG] [Thread-125590] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:45:36.503 [DEBUG] [Thread-125590] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:45:36.503 [DEBUG] [Thread-125590] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:45:36.503 [DEBUG] [Thread-125590] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:45:36.503 [DEBUG] [Thread-125590] [transport.py] [_log()] client lang: <none>
2025-11-04T00:45:36.503 [DEBUG] [Thread-125590] [transport.py] [_log()] server lang: <none>
2025-11-04T00:45:36.503 [DEBUG] [Thread-125590] [transport.py] [_log()] kex follows: False
2025-11-04T00:45:36.503 [DEBUG] [Thread-125590] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:45:36.504 [DEBUG] [Thread-125590] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:45:36.504 [DEBUG] [Thread-125590] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:45:36.504 [DEBUG] [Thread-125590] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:45:36.504 [DEBUG] [Thread-125590] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:45:36.504 [DEBUG] [Thread-125590] [transport.py] [_log()] Compression: none
2025-11-04T00:45:36.504 [DEBUG] [Thread-125590] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:45:36.526 [DEBUG] [Thread-125590] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:45:36.532 [DEBUG] [Thread-125590] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:45:36.534 [DEBUG] [Thread-125590] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:45:36.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:45:36.537 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:45:36.539 [DEBUG] [Thread-125590] [transport.py] [_log()] userauth is OK
2025-11-04T00:45:36.539 [DEBUG] [Thread-125590] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:45:36.539 [DEBUG] [Thread-125590] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:45:36.540 [DEBUG] [Thread-125590] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:45:36.540 [DEBUG] [Thread-125590] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:45:36.566 [INFO] [Thread-125590] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:45:36.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:45:37.109 [DEBUG] [Thread-125590] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:45:37.109 [DEBUG] [Thread-125590] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:45:37.119 [DEBUG] [Thread-125590] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:45:37.150 [DEBUG] [Thread-125590] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:45:37.150 [DEBUG] [Thread-125590] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:45:37.152 [DEBUG] [Thread-125590] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:45:37.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:45:37.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:45:37.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:45:37.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:45:37.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:45:37.168 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:45:37.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:45:37.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:45:37.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:45:37.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.948015 -999.00  +18.50  17.44     18   -6.10 1 1 1 1 1     0    0 24.14 -7.51 ZNESW 17.7 17.4 312.2 21.3 18.5 -24.6 18.4 -23.5 18.1 -23.3 18.4 -24.2
2025-11-04T00:45:37.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:45:37.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:45:37.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.948015
2025-11-04T00:45:37.175 [DEBUG] [Thread-125590] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:45:37.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:45:37.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:45:37.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:45:37.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:45:37.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:45:37.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:45:18', tmtdew=28.95, humidity=13.13, cloud=0.0, wind=14.73, temperature=18.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:45:19', seeing=1.14, atlas_timestamp='2025-11-03T22:45:08.496', atlas_cloud=1, atlas_rain=1, zp_data=[-0.05025000000000013, -0.053749999999999076, 0.04625000000000057, -0.033500000000000085, 0.04550000000000054, -0.06475000000000009, -0.15700000000000003, -0.1407500000000006, -0.015000000000000568, 0.08249999999999957, 0.09124999999999872, -0.011499999999999844, 0.06599999999999895, 0.00024999999999941735, -0.12700000000000067, 0.0039999999999995595, 0.05024999999999835, 0.06550000000000011, 0.14199999999999946, 0.14924999999999855, 0.11749999999999972, 0.04174999999999862, -0.20174999999999876, 0.02674999999999983, 0.008999999999998565, 0.1534999999999993, 0.1772500000000008, 0.136000000000001, 0.2320000000000002, 0.31700000000000106, 0.002000000000000668, 0.08700000000000152, 0.06774999999999842], zp_timestamp='2025-11-03T22:41:00')
2025-11-04T00:45:37.258 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:45:37.273 [DEBUG] [Thread-125593] [transport.py] [_log()] starting thread (client mode): 0xed5dc00
2025-11-04T00:45:37.274 [DEBUG] [Thread-125593] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:45:37.291 [DEBUG] [Thread-125593] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:45:37.291 [INFO] [Thread-125593] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:45:37.306 [DEBUG] [Thread-125593] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:45:37.306 [DEBUG] [Thread-125593] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:45:37.306 [DEBUG] [Thread-125593] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:45:37.306 [DEBUG] [Thread-125593] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:45:37.306 [DEBUG] [Thread-125593] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:45:37.306 [DEBUG] [Thread-125593] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:45:37.306 [DEBUG] [Thread-125593] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:45:37.306 [DEBUG] [Thread-125593] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:45:37.306 [DEBUG] [Thread-125593] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:45:37.306 [DEBUG] [Thread-125593] [transport.py] [_log()] client lang: <none>
2025-11-04T00:45:37.306 [DEBUG] [Thread-125593] [transport.py] [_log()] server lang: <none>
2025-11-04T00:45:37.306 [DEBUG] [Thread-125593] [transport.py] [_log()] kex follows: False
2025-11-04T00:45:37.306 [DEBUG] [Thread-125593] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:45:37.306 [DEBUG] [Thread-125593] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:45:37.306 [DEBUG] [Thread-125593] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:45:37.306 [DEBUG] [Thread-125593] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:45:37.306 [DEBUG] [Thread-125593] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:45:37.306 [DEBUG] [Thread-125593] [transport.py] [_log()] Compression: none
2025-11-04T00:45:37.306 [DEBUG] [Thread-125593] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:45:37.364 [DEBUG] [Thread-125593] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:45:37.364 [DEBUG] [Thread-125593] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:45:37.364 [DEBUG] [Thread-125593] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:45:37.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:45:37.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:45:37.429 [DEBUG] [Thread-125593] [transport.py] [_log()] userauth is OK
2025-11-04T00:45:37.429 [DEBUG] [Thread-125593] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:45:37.429 [DEBUG] [Thread-125593] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:45:37.429 [DEBUG] [Thread-125593] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:45:37.429 [DEBUG] [Thread-125593] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:45:37.445 [INFO] [Thread-125593] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:45:37.446 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:45:37.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:45:38.283 [DEBUG] [Thread-125593] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:45:38.283 [DEBUG] [Thread-125593] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:45:38.331 [DEBUG] [Thread-125593] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:45:38.331 [DEBUG] [Thread-125593] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:45:38.340 [DEBUG] [Thread-125593] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:45:38.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:45:38.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:45:38.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:45:38.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:45:38.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:45:38.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:45:38.375 [DEBUG] [Thread-125593] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:45:41.051 [DEBUG] [Thread-125595 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:45:56.116 [DEBUG] [Thread-125596 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:46:08.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:46:08.409 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:46:08.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:46:09.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 45, 54), 28.86, 13.23, 0.0, 15.37, 18.23, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:46:09.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:45:54
2025-11-04T00:46:09.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:46:09.731 [DEBUG] [Thread-125597] [transport.py] [_log()] starting thread (client mode): 0x117eb6a0
2025-11-04T00:46:09.732 [DEBUG] [Thread-125597] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:46:09.743 [DEBUG] [Thread-125597] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:46:09.744 [INFO] [Thread-125597] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:46:09.750 [DEBUG] [Thread-125597] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:46:09.751 [DEBUG] [Thread-125597] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:46:09.751 [DEBUG] [Thread-125597] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:46:09.751 [DEBUG] [Thread-125597] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:46:09.751 [DEBUG] [Thread-125597] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:46:09.751 [DEBUG] [Thread-125597] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:46:09.751 [DEBUG] [Thread-125597] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:46:09.751 [DEBUG] [Thread-125597] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:46:09.751 [DEBUG] [Thread-125597] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:46:09.751 [DEBUG] [Thread-125597] [transport.py] [_log()] client lang: <none>
2025-11-04T00:46:09.751 [DEBUG] [Thread-125597] [transport.py] [_log()] server lang: <none>
2025-11-04T00:46:09.752 [DEBUG] [Thread-125597] [transport.py] [_log()] kex follows: False
2025-11-04T00:46:09.752 [DEBUG] [Thread-125597] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:46:09.753 [DEBUG] [Thread-125597] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:46:09.753 [DEBUG] [Thread-125597] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:46:09.753 [DEBUG] [Thread-125597] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:46:09.753 [DEBUG] [Thread-125597] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:46:09.753 [DEBUG] [Thread-125597] [transport.py] [_log()] Compression: none
2025-11-04T00:46:09.754 [DEBUG] [Thread-125597] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:46:09.790 [DEBUG] [Thread-125597] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:46:09.796 [DEBUG] [Thread-125597] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:46:09.798 [DEBUG] [Thread-125597] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:46:09.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:46:09.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:46:09.805 [DEBUG] [Thread-125597] [transport.py] [_log()] userauth is OK
2025-11-04T00:46:09.805 [DEBUG] [Thread-125597] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:46:09.805 [DEBUG] [Thread-125597] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:46:09.806 [DEBUG] [Thread-125597] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:46:09.806 [DEBUG] [Thread-125597] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:46:09.823 [INFO] [Thread-125597] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:46:09.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:46:10.473 [DEBUG] [Thread-125597] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:46:10.474 [DEBUG] [Thread-125597] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:46:10.485 [DEBUG] [Thread-125597] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:46:10.515 [DEBUG] [Thread-125597] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:46:10.515 [DEBUG] [Thread-125597] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:46:10.519 [DEBUG] [Thread-125597] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:46:10.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:46:10.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:46:10.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:46:10.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:46:10.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:46:10.544 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:46:10.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:46:10.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:46:10.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:46:10.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.948362 -999.00  +18.50  16.01     18   -6.10 1 1 1 1 1     0    0 24.48 -5.20 ZNESW 17.6 16.0 315.8 20.1 18.4 -24.6 18.4 -23.6 18.1 -23.3 18.4 -24.2
2025-11-04T00:46:10.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:46:10.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:46:10.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.948362
2025-11-04T00:46:10.552 [DEBUG] [Thread-125597] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:46:10.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:46:10.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:46:10.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:46:10.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:46:10.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:46:10.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:45:54', tmtdew=28.86, humidity=13.23, cloud=0.0, wind=15.37, temperature=18.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:45:55', seeing=1.18, atlas_timestamp='2025-11-03T22:45:38.477', atlas_cloud=1, atlas_rain=1, zp_data=[0.03774999999999906, 0.03725000000000023, 0.07125000000000092, 0.09149999999999991, 0.10999999999999943, 0.05125000000000135, -0.11500000000000021, -0.018249999999998323, 0.034499999999997755, 0.06899999999999906, 0.1147500000000008, 0.03550000000000075, 0.09200000000000053, -0.2372500000000013, -0.1379999999999999, 0.041499999999999204, 0.08924999999999983, 0.09750000000000014, 0.15699999999999825, 0.13324999999999854, 0.14899999999999913, 0.07374999999999865, -0.04374999999999929, 0.04574999999999996, 0.08499999999999908, 0.15949999999999953, 0.17275000000000063, 0.21899999999999942, 0.31950000000000056, 0.053000000000000824, -0.0649999999999995, 0.0840000000000014, 0.06274999999999942], zp_timestamp='2025-11-03T22:44:00')
2025-11-04T00:46:10.661 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:46:10.674 [DEBUG] [Thread-125600] [transport.py] [_log()] starting thread (client mode): 0x117e9570
2025-11-04T00:46:10.674 [DEBUG] [Thread-125600] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:46:10.690 [DEBUG] [Thread-125600] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:46:10.690 [INFO] [Thread-125600] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:46:10.698 [DEBUG] [Thread-125600] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:46:10.698 [DEBUG] [Thread-125600] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:46:10.698 [DEBUG] [Thread-125600] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:46:10.699 [DEBUG] [Thread-125600] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:46:10.699 [DEBUG] [Thread-125600] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:46:10.699 [DEBUG] [Thread-125600] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:46:10.699 [DEBUG] [Thread-125600] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:46:10.699 [DEBUG] [Thread-125600] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:46:10.699 [DEBUG] [Thread-125600] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:46:10.699 [DEBUG] [Thread-125600] [transport.py] [_log()] client lang: <none>
2025-11-04T00:46:10.699 [DEBUG] [Thread-125600] [transport.py] [_log()] server lang: <none>
2025-11-04T00:46:10.699 [DEBUG] [Thread-125600] [transport.py] [_log()] kex follows: False
2025-11-04T00:46:10.699 [DEBUG] [Thread-125600] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:46:10.699 [DEBUG] [Thread-125600] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:46:10.699 [DEBUG] [Thread-125600] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:46:10.699 [DEBUG] [Thread-125600] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:46:10.699 [DEBUG] [Thread-125600] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:46:10.699 [DEBUG] [Thread-125600] [transport.py] [_log()] Compression: none
2025-11-04T00:46:10.699 [DEBUG] [Thread-125600] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:46:10.760 [DEBUG] [Thread-125600] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:46:10.761 [DEBUG] [Thread-125600] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:46:10.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:46:10.762 [DEBUG] [Thread-125600] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:46:10.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:46:10.819 [DEBUG] [Thread-125600] [transport.py] [_log()] userauth is OK
2025-11-04T00:46:10.819 [DEBUG] [Thread-125600] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:46:10.819 [DEBUG] [Thread-125600] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:46:10.819 [DEBUG] [Thread-125600] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:46:10.820 [DEBUG] [Thread-125600] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:46:10.838 [INFO] [Thread-125600] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:46:10.839 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:46:10.839 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:46:11.143 [DEBUG] [Thread-125602 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:46:11.675 [DEBUG] [Thread-125600] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:46:11.675 [DEBUG] [Thread-125600] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:46:11.723 [DEBUG] [Thread-125600] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:46:11.724 [DEBUG] [Thread-125600] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:46:11.732 [DEBUG] [Thread-125600] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:46:11.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:46:11.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:46:11.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:46:11.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:46:11.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:46:11.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:46:11.770 [DEBUG] [Thread-125600] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:46:22.803 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:46:22.806 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:46:25.168 [DEBUG] [Thread-125603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:46:26.243 [DEBUG] [Thread-125604 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:46:41.279 [DEBUG] [Thread-125605 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:46:41.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:46:41.775 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:46:41.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:46:42.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 46, 27), 28.94, 13.14, 0.0, 15.7, 18.25, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:46:42.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:46:27
2025-11-04T00:46:42.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:46:42.777 [DEBUG] [Thread-125606] [transport.py] [_log()] starting thread (client mode): 0x11763220
2025-11-04T00:46:42.777 [DEBUG] [Thread-125606] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:46:42.796 [DEBUG] [Thread-125606] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:46:42.797 [INFO] [Thread-125606] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:46:42.800 [DEBUG] [Thread-125606] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:46:42.800 [DEBUG] [Thread-125606] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:46:42.800 [DEBUG] [Thread-125606] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:46:42.800 [DEBUG] [Thread-125606] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:46:42.800 [DEBUG] [Thread-125606] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:46:42.800 [DEBUG] [Thread-125606] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:46:42.800 [DEBUG] [Thread-125606] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:46:42.800 [DEBUG] [Thread-125606] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:46:42.800 [DEBUG] [Thread-125606] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:46:42.800 [DEBUG] [Thread-125606] [transport.py] [_log()] client lang: <none>
2025-11-04T00:46:42.800 [DEBUG] [Thread-125606] [transport.py] [_log()] server lang: <none>
2025-11-04T00:46:42.800 [DEBUG] [Thread-125606] [transport.py] [_log()] kex follows: False
2025-11-04T00:46:42.800 [DEBUG] [Thread-125606] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:46:42.800 [DEBUG] [Thread-125606] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:46:42.801 [DEBUG] [Thread-125606] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:46:42.801 [DEBUG] [Thread-125606] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:46:42.801 [DEBUG] [Thread-125606] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:46:42.801 [DEBUG] [Thread-125606] [transport.py] [_log()] Compression: none
2025-11-04T00:46:42.801 [DEBUG] [Thread-125606] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:46:42.821 [DEBUG] [Thread-125606] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:46:42.822 [DEBUG] [Thread-125606] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:46:42.822 [DEBUG] [Thread-125606] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:46:42.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:46:42.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:46:42.826 [DEBUG] [Thread-125606] [transport.py] [_log()] userauth is OK
2025-11-04T00:46:42.827 [DEBUG] [Thread-125606] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:46:42.827 [DEBUG] [Thread-125606] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:46:42.827 [DEBUG] [Thread-125606] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:46:42.827 [DEBUG] [Thread-125606] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:46:42.845 [INFO] [Thread-125606] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:46:42.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:46:43.416 [DEBUG] [Thread-125606] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:46:43.417 [DEBUG] [Thread-125606] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:46:43.426 [DEBUG] [Thread-125606] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:46:43.457 [DEBUG] [Thread-125606] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:46:43.457 [DEBUG] [Thread-125606] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:46:43.461 [DEBUG] [Thread-125606] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:46:43.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:46:43.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:46:43.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:46:43.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:46:43.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:46:43.485 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:46:43.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:46:43.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:46:43.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:46:43.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.949057 -999.00  +18.50  17.30     18   -6.20 1 1 1 1 1     0    0 24.59 -0.93 ZNESW 16.9 17.3 309.6 20.6 18.4 -24.6 18.4 -23.7 18.1 -23.4 18.4 -24.2
2025-11-04T00:46:43.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:46:43.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:46:43.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.949057
2025-11-04T00:46:43.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:46:43.493 [DEBUG] [Thread-125606] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:46:43.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:46:43.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:46:43.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:46:43.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:46:43.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:46:27', tmtdew=28.94, humidity=13.14, cloud=0.0, wind=15.7, temperature=18.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:46:28', seeing=1.18, atlas_timestamp='2025-11-03T22:46:38.525', atlas_cloud=1, atlas_rain=1, zp_data=[0.03774999999999906, 0.03725000000000023, 0.07125000000000092, 0.09149999999999991, 0.10999999999999943, 0.05125000000000135, -0.11500000000000021, -0.018249999999998323, 0.034499999999997755, 0.06899999999999906, 0.1147500000000008, 0.03550000000000075, 0.09200000000000053, -0.2372500000000013, -0.1379999999999999, 0.041499999999999204, 0.08924999999999983, 0.09750000000000014, 0.15699999999999825, 0.13324999999999854, 0.14899999999999913, 0.07374999999999865, -0.04374999999999929, 0.04574999999999996, 0.08499999999999908, 0.15949999999999953, 0.17275000000000063, 0.21899999999999942, 0.31950000000000056, 0.053000000000000824, -0.0649999999999995, 0.0840000000000014, 0.06274999999999942], zp_timestamp='2025-11-03T22:44:00')
2025-11-04T00:46:43.567 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:46:43.580 [DEBUG] [Thread-125609] [transport.py] [_log()] starting thread (client mode): 0x11762e90
2025-11-04T00:46:43.580 [DEBUG] [Thread-125609] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:46:43.597 [DEBUG] [Thread-125609] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:46:43.597 [INFO] [Thread-125609] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:46:43.604 [DEBUG] [Thread-125609] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:46:43.604 [DEBUG] [Thread-125609] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:46:43.604 [DEBUG] [Thread-125609] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:46:43.604 [DEBUG] [Thread-125609] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:46:43.604 [DEBUG] [Thread-125609] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:46:43.604 [DEBUG] [Thread-125609] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:46:43.604 [DEBUG] [Thread-125609] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:46:43.604 [DEBUG] [Thread-125609] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:46:43.604 [DEBUG] [Thread-125609] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:46:43.604 [DEBUG] [Thread-125609] [transport.py] [_log()] client lang: <none>
2025-11-04T00:46:43.604 [DEBUG] [Thread-125609] [transport.py] [_log()] server lang: <none>
2025-11-04T00:46:43.604 [DEBUG] [Thread-125609] [transport.py] [_log()] kex follows: False
2025-11-04T00:46:43.604 [DEBUG] [Thread-125609] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:46:43.604 [DEBUG] [Thread-125609] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:46:43.604 [DEBUG] [Thread-125609] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:46:43.604 [DEBUG] [Thread-125609] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:46:43.604 [DEBUG] [Thread-125609] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:46:43.604 [DEBUG] [Thread-125609] [transport.py] [_log()] Compression: none
2025-11-04T00:46:43.605 [DEBUG] [Thread-125609] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:46:43.672 [DEBUG] [Thread-125609] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:46:43.672 [DEBUG] [Thread-125609] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:46:43.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:46:43.673 [DEBUG] [Thread-125609] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:46:43.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:46:43.735 [DEBUG] [Thread-125609] [transport.py] [_log()] userauth is OK
2025-11-04T00:46:43.735 [DEBUG] [Thread-125609] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:46:43.735 [DEBUG] [Thread-125609] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:46:43.735 [DEBUG] [Thread-125609] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:46:43.735 [DEBUG] [Thread-125609] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:46:43.756 [INFO] [Thread-125609] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:46:43.756 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:46:43.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:46:44.674 [DEBUG] [Thread-125609] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:46:44.674 [DEBUG] [Thread-125609] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:46:44.722 [DEBUG] [Thread-125609] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:46:44.722 [DEBUG] [Thread-125609] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:46:44.731 [DEBUG] [Thread-125609] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:46:44.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:46:44.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:46:44.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:46:44.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:46:44.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:46:44.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:46:44.766 [DEBUG] [Thread-125609] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:46:56.311 [DEBUG] [Thread-125611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:47:11.660 [DEBUG] [Thread-125612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:47:14.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:47:14.784 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:47:14.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:47:15.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 46, 27), 28.94, 13.14, 0.0, 17.5, 18.25, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:47:15.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:46:27
2025-11-04T00:47:15.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:47:15.862 [DEBUG] [Thread-125613] [transport.py] [_log()] starting thread (client mode): 0x11761d50
2025-11-04T00:47:15.862 [DEBUG] [Thread-125613] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:47:15.876 [DEBUG] [Thread-125613] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:47:15.877 [INFO] [Thread-125613] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:47:15.880 [DEBUG] [Thread-125613] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:47:15.880 [DEBUG] [Thread-125613] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:47:15.880 [DEBUG] [Thread-125613] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:47:15.880 [DEBUG] [Thread-125613] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:47:15.880 [DEBUG] [Thread-125613] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:47:15.880 [DEBUG] [Thread-125613] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:47:15.880 [DEBUG] [Thread-125613] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:47:15.880 [DEBUG] [Thread-125613] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:47:15.880 [DEBUG] [Thread-125613] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:47:15.880 [DEBUG] [Thread-125613] [transport.py] [_log()] client lang: <none>
2025-11-04T00:47:15.880 [DEBUG] [Thread-125613] [transport.py] [_log()] server lang: <none>
2025-11-04T00:47:15.880 [DEBUG] [Thread-125613] [transport.py] [_log()] kex follows: False
2025-11-04T00:47:15.880 [DEBUG] [Thread-125613] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:47:15.880 [DEBUG] [Thread-125613] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:47:15.880 [DEBUG] [Thread-125613] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:47:15.880 [DEBUG] [Thread-125613] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:47:15.880 [DEBUG] [Thread-125613] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:47:15.880 [DEBUG] [Thread-125613] [transport.py] [_log()] Compression: none
2025-11-04T00:47:15.880 [DEBUG] [Thread-125613] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:47:15.906 [DEBUG] [Thread-125613] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:47:15.907 [DEBUG] [Thread-125613] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:47:15.908 [DEBUG] [Thread-125613] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:47:15.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:47:15.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:47:15.910 [DEBUG] [Thread-125613] [transport.py] [_log()] userauth is OK
2025-11-04T00:47:15.910 [DEBUG] [Thread-125613] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:47:15.910 [DEBUG] [Thread-125613] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:47:15.910 [DEBUG] [Thread-125613] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:47:15.910 [DEBUG] [Thread-125613] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:47:15.934 [INFO] [Thread-125613] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:47:15.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:47:16.544 [DEBUG] [Thread-125613] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:47:16.544 [DEBUG] [Thread-125613] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:47:16.544 [DEBUG] [Thread-125613] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:47:16.585 [DEBUG] [Thread-125613] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:47:16.585 [DEBUG] [Thread-125613] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:47:16.588 [DEBUG] [Thread-125613] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:47:16.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:47:16.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:47:16.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:47:16.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:47:16.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:47:16.610 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:47:16.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:47:16.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:47:16.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:47:16.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.949404 -999.00  +18.40  15.23     18   -6.20 1 1 1 1 1     0    0 24.76 0.62 ZNESW 14.3 15.2 310.2 18.8 18.4 -24.7 18.3 -23.6 18.1 -23.4 18.4 -24.4
2025-11-04T00:47:16.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:47:16.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:47:16.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.949404
2025-11-04T00:47:16.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:47:16.620 [DEBUG] [Thread-125613] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:47:16.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:47:16.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:47:16.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:47:16.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:47:16.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:46:27', tmtdew=28.94, humidity=13.14, cloud=0.0, wind=17.5, temperature=18.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:47:00', seeing=1.17, atlas_timestamp='2025-11-03T22:47:08.506', atlas_cloud=1, atlas_rain=1, zp_data=[0.03774999999999906, 0.03725000000000023, 0.07125000000000092, 0.09149999999999991, 0.10999999999999943, 0.05125000000000135, -0.11500000000000021, -0.018249999999998323, 0.034499999999997755, 0.06899999999999906, 0.1147500000000008, 0.03550000000000075, 0.09200000000000053, -0.2372500000000013, -0.1379999999999999, 0.041499999999999204, 0.08924999999999983, 0.09750000000000014, 0.15699999999999825, 0.13324999999999854, 0.14899999999999913, 0.07374999999999865, -0.04374999999999929, 0.04574999999999996, 0.08499999999999908, 0.15949999999999953, 0.17275000000000063, 0.21899999999999942, 0.31950000000000056, 0.053000000000000824, -0.0649999999999995, 0.0840000000000014, 0.06274999999999942], zp_timestamp='2025-11-03T22:44:00')
2025-11-04T00:47:16.704 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:47:16.716 [DEBUG] [Thread-125616] [transport.py] [_log()] starting thread (client mode): 0xed43e80
2025-11-04T00:47:16.717 [DEBUG] [Thread-125616] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:47:16.735 [DEBUG] [Thread-125616] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:47:16.735 [INFO] [Thread-125616] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:47:16.744 [DEBUG] [Thread-125616] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:47:16.744 [DEBUG] [Thread-125616] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:47:16.744 [DEBUG] [Thread-125616] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:47:16.744 [DEBUG] [Thread-125616] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:47:16.744 [DEBUG] [Thread-125616] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:47:16.744 [DEBUG] [Thread-125616] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:47:16.744 [DEBUG] [Thread-125616] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:47:16.744 [DEBUG] [Thread-125616] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:47:16.744 [DEBUG] [Thread-125616] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:47:16.745 [DEBUG] [Thread-125616] [transport.py] [_log()] client lang: <none>
2025-11-04T00:47:16.745 [DEBUG] [Thread-125616] [transport.py] [_log()] server lang: <none>
2025-11-04T00:47:16.745 [DEBUG] [Thread-125616] [transport.py] [_log()] kex follows: False
2025-11-04T00:47:16.745 [DEBUG] [Thread-125616] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:47:16.745 [DEBUG] [Thread-125616] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:47:16.745 [DEBUG] [Thread-125616] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:47:16.745 [DEBUG] [Thread-125616] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:47:16.745 [DEBUG] [Thread-125616] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:47:16.745 [DEBUG] [Thread-125616] [transport.py] [_log()] Compression: none
2025-11-04T00:47:16.745 [DEBUG] [Thread-125616] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:47:16.803 [DEBUG] [Thread-125616] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:47:16.803 [DEBUG] [Thread-125616] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:47:16.804 [DEBUG] [Thread-125616] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:47:16.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:47:16.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:47:16.864 [DEBUG] [Thread-125616] [transport.py] [_log()] userauth is OK
2025-11-04T00:47:16.864 [DEBUG] [Thread-125616] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:47:16.864 [DEBUG] [Thread-125616] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:47:16.864 [DEBUG] [Thread-125616] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:47:16.864 [DEBUG] [Thread-125616] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:47:16.889 [INFO] [Thread-125616] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:47:16.889 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:47:16.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:47:17.747 [DEBUG] [Thread-125616] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:47:17.747 [DEBUG] [Thread-125616] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:47:17.795 [DEBUG] [Thread-125616] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:47:17.795 [DEBUG] [Thread-125616] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:47:17.807 [DEBUG] [Thread-125616] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:47:17.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:47:17.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:47:17.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:47:17.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:47:17.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:47:17.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:47:17.849 [DEBUG] [Thread-125616] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:47:23.011 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:47:23.012 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:47:25.525 [DEBUG] [Thread-125618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:47:26.700 [DEBUG] [Thread-125619 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:47:41.793 [DEBUG] [Thread-125620 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:47:47.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:47:47.868 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:47:47.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:47:48.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 47, 36), 28.91, 13.16, 0.0, 16.27, 18.13, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:47:48.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:47:36
2025-11-04T00:47:48.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:47:48.801 [DEBUG] [Thread-125621] [transport.py] [_log()] starting thread (client mode): 0xed1b1c0
2025-11-04T00:47:48.801 [DEBUG] [Thread-125621] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:47:48.822 [DEBUG] [Thread-125621] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:47:48.822 [INFO] [Thread-125621] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:47:48.824 [DEBUG] [Thread-125621] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:47:48.824 [DEBUG] [Thread-125621] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:47:48.824 [DEBUG] [Thread-125621] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:47:48.824 [DEBUG] [Thread-125621] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:47:48.824 [DEBUG] [Thread-125621] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:47:48.824 [DEBUG] [Thread-125621] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:47:48.824 [DEBUG] [Thread-125621] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:47:48.824 [DEBUG] [Thread-125621] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:47:48.824 [DEBUG] [Thread-125621] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:47:48.824 [DEBUG] [Thread-125621] [transport.py] [_log()] client lang: <none>
2025-11-04T00:47:48.824 [DEBUG] [Thread-125621] [transport.py] [_log()] server lang: <none>
2025-11-04T00:47:48.824 [DEBUG] [Thread-125621] [transport.py] [_log()] kex follows: False
2025-11-04T00:47:48.824 [DEBUG] [Thread-125621] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:47:48.824 [DEBUG] [Thread-125621] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:47:48.824 [DEBUG] [Thread-125621] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:47:48.824 [DEBUG] [Thread-125621] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:47:48.824 [DEBUG] [Thread-125621] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:47:48.824 [DEBUG] [Thread-125621] [transport.py] [_log()] Compression: none
2025-11-04T00:47:48.824 [DEBUG] [Thread-125621] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:47:48.839 [DEBUG] [Thread-125621] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:47:48.839 [DEBUG] [Thread-125621] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:47:48.840 [DEBUG] [Thread-125621] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:47:48.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:47:48.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:47:48.840 [DEBUG] [Thread-125621] [transport.py] [_log()] userauth is OK
2025-11-04T00:47:48.840 [DEBUG] [Thread-125621] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:47:48.840 [DEBUG] [Thread-125621] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:47:48.840 [DEBUG] [Thread-125621] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:47:48.840 [DEBUG] [Thread-125621] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:47:48.849 [INFO] [Thread-125621] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:47:48.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:47:49.574 [DEBUG] [Thread-125621] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:47:49.574 [DEBUG] [Thread-125621] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:47:49.574 [DEBUG] [Thread-125621] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:47:49.614 [DEBUG] [Thread-125621] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:47:49.614 [DEBUG] [Thread-125621] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:47:49.616 [DEBUG] [Thread-125621] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:47:49.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:47:49.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:47:49.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:47:49.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:47:49.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:47:49.631 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:47:49.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:47:49.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:47:49.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:47:49.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.949751 -999.00  +18.20  12.20     18   -6.30 1 1 1 1 1     0    0 24.64 1.48 ZNESW 13.8 12.2 305.8 16.9 18.4 -24.7 18.3 -23.6 18.1 -23.3 18.3 -24.2
2025-11-04T00:47:49.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:47:49.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:47:49.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.949751
2025-11-04T00:47:49.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:47:49.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:47:49.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:47:49.636 [DEBUG] [Thread-125621] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:47:49.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:47:49.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:47:49.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:47:36', tmtdew=28.91, humidity=13.16, cloud=0.0, wind=16.27, temperature=18.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:47:37', seeing=1.17, atlas_timestamp='2025-11-03T22:47:38.486', atlas_cloud=1, atlas_rain=1, zp_data=[0.03774999999999906, 0.03725000000000023, 0.07125000000000092, 0.09149999999999991, 0.10999999999999943, 0.05125000000000135, -0.11500000000000021, -0.018249999999998323, 0.034499999999997755, 0.06899999999999906, 0.1147500000000008, 0.03550000000000075, 0.09200000000000053, -0.2372500000000013, -0.1379999999999999, 0.041499999999999204, 0.08924999999999983, 0.09750000000000014, 0.15699999999999825, 0.13324999999999854, 0.14899999999999913, 0.07374999999999865, -0.04374999999999929, 0.04574999999999996, 0.08499999999999908, 0.15949999999999953, 0.17275000000000063, 0.21899999999999942, 0.31950000000000056, 0.053000000000000824, -0.0649999999999995, 0.0840000000000014, 0.06274999999999942], zp_timestamp='2025-11-03T22:44:00')
2025-11-04T00:47:49.711 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:47:49.726 [DEBUG] [Thread-125624] [transport.py] [_log()] starting thread (client mode): 0xed5e9e0
2025-11-04T00:47:49.726 [DEBUG] [Thread-125624] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:47:49.740 [DEBUG] [Thread-125624] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:47:49.740 [INFO] [Thread-125624] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:47:49.748 [DEBUG] [Thread-125624] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:47:49.749 [DEBUG] [Thread-125624] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:47:49.749 [DEBUG] [Thread-125624] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:47:49.749 [DEBUG] [Thread-125624] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:47:49.749 [DEBUG] [Thread-125624] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:47:49.749 [DEBUG] [Thread-125624] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:47:49.749 [DEBUG] [Thread-125624] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:47:49.749 [DEBUG] [Thread-125624] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:47:49.749 [DEBUG] [Thread-125624] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:47:49.749 [DEBUG] [Thread-125624] [transport.py] [_log()] client lang: <none>
2025-11-04T00:47:49.749 [DEBUG] [Thread-125624] [transport.py] [_log()] server lang: <none>
2025-11-04T00:47:49.749 [DEBUG] [Thread-125624] [transport.py] [_log()] kex follows: False
2025-11-04T00:47:49.749 [DEBUG] [Thread-125624] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:47:49.749 [DEBUG] [Thread-125624] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:47:49.749 [DEBUG] [Thread-125624] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:47:49.749 [DEBUG] [Thread-125624] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:47:49.749 [DEBUG] [Thread-125624] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:47:49.749 [DEBUG] [Thread-125624] [transport.py] [_log()] Compression: none
2025-11-04T00:47:49.749 [DEBUG] [Thread-125624] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:47:49.810 [DEBUG] [Thread-125624] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:47:49.810 [DEBUG] [Thread-125624] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:47:49.810 [DEBUG] [Thread-125624] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:47:49.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:47:49.811 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:47:49.869 [DEBUG] [Thread-125624] [transport.py] [_log()] userauth is OK
2025-11-04T00:47:49.869 [DEBUG] [Thread-125624] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:47:49.869 [DEBUG] [Thread-125624] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:47:49.869 [DEBUG] [Thread-125624] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:47:49.869 [DEBUG] [Thread-125624] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:47:49.885 [INFO] [Thread-125624] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:47:49.885 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:47:49.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:47:50.730 [DEBUG] [Thread-125624] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:47:50.730 [DEBUG] [Thread-125624] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:47:50.781 [DEBUG] [Thread-125624] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:47:50.781 [DEBUG] [Thread-125624] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:47:50.792 [DEBUG] [Thread-125624] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:47:50.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:47:50.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:47:50.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:47:50.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:47:50.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:47:50.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:47:50.830 [DEBUG] [Thread-125624] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:47:56.828 [DEBUG] [Thread-125626 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:48:11.923 [DEBUG] [Thread-125627 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:48:20.387 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:48:20.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:48:20.836 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:48:20.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:48:21.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 48, 10), 28.99, 13.09, 0.0, 15.69, 18.22, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:48:21.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:48:10
2025-11-04T00:48:21.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:48:22.087 [DEBUG] [Thread-125628] [transport.py] [_log()] starting thread (client mode): 0x11762e90
2025-11-04T00:48:22.088 [DEBUG] [Thread-125628] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:48:22.102 [DEBUG] [Thread-125628] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:48:22.103 [INFO] [Thread-125628] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:48:22.106 [DEBUG] [Thread-125628] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:48:22.106 [DEBUG] [Thread-125628] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:48:22.106 [DEBUG] [Thread-125628] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:48:22.106 [DEBUG] [Thread-125628] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:48:22.107 [DEBUG] [Thread-125628] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:48:22.107 [DEBUG] [Thread-125628] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:48:22.107 [DEBUG] [Thread-125628] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:48:22.107 [DEBUG] [Thread-125628] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:48:22.107 [DEBUG] [Thread-125628] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:48:22.107 [DEBUG] [Thread-125628] [transport.py] [_log()] client lang: <none>
2025-11-04T00:48:22.107 [DEBUG] [Thread-125628] [transport.py] [_log()] server lang: <none>
2025-11-04T00:48:22.107 [DEBUG] [Thread-125628] [transport.py] [_log()] kex follows: False
2025-11-04T00:48:22.107 [DEBUG] [Thread-125628] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:48:22.108 [DEBUG] [Thread-125628] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:48:22.108 [DEBUG] [Thread-125628] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:48:22.108 [DEBUG] [Thread-125628] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:48:22.108 [DEBUG] [Thread-125628] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:48:22.108 [DEBUG] [Thread-125628] [transport.py] [_log()] Compression: none
2025-11-04T00:48:22.108 [DEBUG] [Thread-125628] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:48:22.142 [DEBUG] [Thread-125628] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:48:22.145 [DEBUG] [Thread-125628] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:48:22.146 [DEBUG] [Thread-125628] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:48:22.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:48:22.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:48:22.186 [DEBUG] [Thread-125628] [transport.py] [_log()] userauth is OK
2025-11-04T00:48:22.186 [DEBUG] [Thread-125628] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:48:22.186 [DEBUG] [Thread-125628] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:48:22.186 [DEBUG] [Thread-125628] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:48:22.187 [DEBUG] [Thread-125628] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:48:22.214 [INFO] [Thread-125628] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:48:22.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:48:22.854 [DEBUG] [Thread-125628] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:48:22.854 [DEBUG] [Thread-125628] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:48:22.855 [DEBUG] [Thread-125628] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:48:22.895 [DEBUG] [Thread-125628] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:48:22.895 [DEBUG] [Thread-125628] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:48:22.898 [DEBUG] [Thread-125628] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:48:22.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:48:22.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:48:22.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:48:22.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:48:22.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:48:22.918 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:48:22.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:48:22.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:48:22.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:48:22.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.949751 -999.00  +18.20  12.20     18   -6.30 1 1 1 1 1     0    0 24.64 1.48 ZNESW 13.8 12.2 305.8 16.9 18.4 -24.7 18.3 -23.6 18.1 -23.3 18.3 -24.2
2025-11-04T00:48:22.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:48:22.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:48:22.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.949751
2025-11-04T00:48:22.925 [DEBUG] [Thread-125628] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:48:22.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:48:22.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:48:22.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:48:22.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:48:22.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:48:22.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:48:10', tmtdew=28.99, humidity=13.09, cloud=0.0, wind=15.69, temperature=18.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:48:11', seeing=1.11, atlas_timestamp='2025-11-03T22:47:38.486', atlas_cloud=1, atlas_rain=1, zp_data=[0.03774999999999906, 0.03725000000000023, 0.07125000000000092, 0.09149999999999991, 0.10999999999999943, 0.05125000000000135, -0.11500000000000021, -0.018249999999998323, 0.034499999999997755, 0.06899999999999906, 0.1147500000000008, 0.03550000000000075, 0.09200000000000053, -0.2372500000000013, -0.1379999999999999, 0.041499999999999204, 0.08924999999999983, 0.09750000000000014, 0.15699999999999825, 0.13324999999999854, 0.14899999999999913, 0.07374999999999865, -0.04374999999999929, 0.04574999999999996, 0.08499999999999908, 0.15949999999999953, 0.17275000000000063, 0.21899999999999942, 0.31950000000000056, 0.053000000000000824, -0.0649999999999995, 0.0840000000000014, 0.06274999999999942], zp_timestamp='2025-11-03T22:44:00')
2025-11-04T00:48:23.017 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:48:23.223 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:48:23.225 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:48:23.582 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:48:25.777 [DEBUG] [Thread-125631 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:48:26.953 [DEBUG] [Thread-125632 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:48:28.664 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:48:34.036 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:48:42.034 [DEBUG] [Thread-125633 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:48:53.406 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:48:57.069 [DEBUG] [Thread-125634 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:48:57.757 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:49:12.099 [DEBUG] [Thread-125635 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:49:17.207 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:49:21.559 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:49:23.437 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:49:23.441 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:49:27.300 [DEBUG] [Thread-125636 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:49:27.369 [DEBUG] [Thread-125637 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:49:28.541 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:49:32.939 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:49:42.534 [DEBUG] [Thread-125638 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:49:57.565 [DEBUG] [Thread-125639 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:50:12.601 [DEBUG] [Thread-125640 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:50:23.652 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:50:23.653 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:50:27.587 [DEBUG] [Thread-125641 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:50:27.636 [DEBUG] [Thread-125642 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:50:37.294 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-04T00:50:41.390 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:50:42.668 [DEBUG] [Thread-125643 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:50:45.492 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:50:57.703 [DEBUG] [Thread-125644 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:51:07.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:51:07.323 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:51:07.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:51:08.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 50, 32), 29.16, 13.0, 0.0, 16.9, 18.37, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:51:08.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:50:32
2025-11-04T00:51:08.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:51:08.510 [DEBUG] [Thread-125645] [transport.py] [_log()] starting thread (client mode): 0x11760460
2025-11-04T00:51:08.511 [DEBUG] [Thread-125645] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:51:08.516 [DEBUG] [Thread-125645] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:51:08.516 [INFO] [Thread-125645] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:51:08.521 [DEBUG] [Thread-125645] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:51:08.522 [DEBUG] [Thread-125645] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:51:08.522 [DEBUG] [Thread-125645] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:51:08.522 [DEBUG] [Thread-125645] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:51:08.522 [DEBUG] [Thread-125645] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:51:08.522 [DEBUG] [Thread-125645] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:51:08.522 [DEBUG] [Thread-125645] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:51:08.522 [DEBUG] [Thread-125645] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:51:08.522 [DEBUG] [Thread-125645] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:51:08.522 [DEBUG] [Thread-125645] [transport.py] [_log()] client lang: <none>
2025-11-04T00:51:08.522 [DEBUG] [Thread-125645] [transport.py] [_log()] server lang: <none>
2025-11-04T00:51:08.522 [DEBUG] [Thread-125645] [transport.py] [_log()] kex follows: False
2025-11-04T00:51:08.522 [DEBUG] [Thread-125645] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:51:08.523 [DEBUG] [Thread-125645] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:51:08.523 [DEBUG] [Thread-125645] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:51:08.523 [DEBUG] [Thread-125645] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:51:08.523 [DEBUG] [Thread-125645] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:51:08.523 [DEBUG] [Thread-125645] [transport.py] [_log()] Compression: none
2025-11-04T00:51:08.523 [DEBUG] [Thread-125645] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:51:08.560 [DEBUG] [Thread-125645] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:51:08.565 [DEBUG] [Thread-125645] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:51:08.567 [DEBUG] [Thread-125645] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:51:08.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:51:08.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:51:08.570 [DEBUG] [Thread-125645] [transport.py] [_log()] userauth is OK
2025-11-04T00:51:08.571 [DEBUG] [Thread-125645] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:51:08.571 [DEBUG] [Thread-125645] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:51:08.571 [DEBUG] [Thread-125645] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:51:08.571 [DEBUG] [Thread-125645] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:51:08.593 [INFO] [Thread-125645] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:51:08.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:51:09.401 [DEBUG] [Thread-125645] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:51:09.401 [DEBUG] [Thread-125645] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:51:09.402 [DEBUG] [Thread-125645] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:51:09.443 [DEBUG] [Thread-125645] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:51:09.443 [DEBUG] [Thread-125645] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:51:09.445 [DEBUG] [Thread-125645] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:51:09.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:51:09.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:51:09.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:51:09.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:51:09.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:51:09.467 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:51:09.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:51:09.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:51:09.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:51:09.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.951835 -999.00  +18.20  13.85     18   -6.30 1 1 1 1 1     0    0 24.55 2.65 ZNESW 13.1 13.8 309.4 20.8 18.4 -24.5 18.3 -23.4 18.1 -23.1 18.3 -24.1
2025-11-04T00:51:09.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:51:09.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:51:09.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.951835
2025-11-04T00:51:09.474 [DEBUG] [Thread-125645] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:51:09.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:51:09.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:51:09.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:51:09.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:51:09.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:51:09.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:50:32', tmtdew=29.16, humidity=13.0, cloud=0.0, wind=16.9, temperature=18.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:51:05', seeing=1.03, atlas_timestamp='2025-11-03T22:50:38.544', atlas_cloud=1, atlas_rain=1, zp_data=[0.03774999999999906, 0.03725000000000023, 0.07125000000000092, 0.09149999999999991, 0.10999999999999943, 0.05125000000000135, -0.11500000000000021, -0.018249999999998323, 0.034499999999997755, 0.06899999999999906, 0.1147500000000008, 0.03550000000000075, 0.09200000000000053, -0.2372500000000013, -0.1379999999999999, 0.041499999999999204, 0.08924999999999983, 0.09750000000000014, 0.15699999999999825, 0.13324999999999854, 0.14899999999999913, 0.07374999999999865, -0.04374999999999929, 0.04574999999999996, 0.08499999999999908, 0.15949999999999953, 0.17275000000000063, 0.21899999999999942, 0.31950000000000056, 0.053000000000000824, -0.0649999999999995, 0.0840000000000014, 0.06274999999999942], zp_timestamp='2025-11-03T22:47:00')
2025-11-04T00:51:09.568 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:51:09.583 [DEBUG] [Thread-125648] [transport.py] [_log()] starting thread (client mode): 0xed19f90
2025-11-04T00:51:09.584 [DEBUG] [Thread-125648] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:51:09.598 [DEBUG] [Thread-125648] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:51:09.598 [INFO] [Thread-125648] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:51:09.607 [DEBUG] [Thread-125648] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:51:09.607 [DEBUG] [Thread-125648] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:51:09.607 [DEBUG] [Thread-125648] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:51:09.607 [DEBUG] [Thread-125648] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:51:09.607 [DEBUG] [Thread-125648] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:51:09.607 [DEBUG] [Thread-125648] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:51:09.607 [DEBUG] [Thread-125648] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:51:09.607 [DEBUG] [Thread-125648] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:51:09.607 [DEBUG] [Thread-125648] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:51:09.607 [DEBUG] [Thread-125648] [transport.py] [_log()] client lang: <none>
2025-11-04T00:51:09.607 [DEBUG] [Thread-125648] [transport.py] [_log()] server lang: <none>
2025-11-04T00:51:09.607 [DEBUG] [Thread-125648] [transport.py] [_log()] kex follows: False
2025-11-04T00:51:09.607 [DEBUG] [Thread-125648] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:51:09.607 [DEBUG] [Thread-125648] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:51:09.607 [DEBUG] [Thread-125648] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:51:09.607 [DEBUG] [Thread-125648] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:51:09.607 [DEBUG] [Thread-125648] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:51:09.607 [DEBUG] [Thread-125648] [transport.py] [_log()] Compression: none
2025-11-04T00:51:09.607 [DEBUG] [Thread-125648] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:51:09.665 [DEBUG] [Thread-125648] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:51:09.666 [DEBUG] [Thread-125648] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:51:09.666 [DEBUG] [Thread-125648] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:51:09.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:51:09.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:51:09.722 [DEBUG] [Thread-125648] [transport.py] [_log()] userauth is OK
2025-11-04T00:51:09.722 [DEBUG] [Thread-125648] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:51:09.723 [DEBUG] [Thread-125648] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:51:09.723 [DEBUG] [Thread-125648] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:51:09.723 [DEBUG] [Thread-125648] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:51:09.738 [INFO] [Thread-125648] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:51:09.738 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:51:09.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:51:10.641 [DEBUG] [Thread-125648] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:51:10.641 [DEBUG] [Thread-125648] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:51:10.691 [DEBUG] [Thread-125648] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:51:10.691 [DEBUG] [Thread-125648] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:51:10.700 [DEBUG] [Thread-125648] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:51:10.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:51:10.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:51:10.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:51:10.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:51:10.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:51:10.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:51:10.738 [DEBUG] [Thread-125648] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:51:12.742 [DEBUG] [Thread-125650 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:51:23.859 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:51:23.864 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:51:27.863 [DEBUG] [Thread-125651 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:51:29.011 [DEBUG] [Thread-125652 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:51:40.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:51:40.760 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:51:40.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:51:41.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 51, 5), 29.16, 12.98, 0.0, 16.25, 18.32, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:51:41.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:51:05
2025-11-04T00:51:41.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:51:41.817 [DEBUG] [Thread-125653] [transport.py] [_log()] starting thread (client mode): 0xed066e0
2025-11-04T00:51:41.817 [DEBUG] [Thread-125653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:51:41.835 [DEBUG] [Thread-125653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:51:41.836 [INFO] [Thread-125653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:51:41.839 [DEBUG] [Thread-125653] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:51:41.839 [DEBUG] [Thread-125653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:51:41.839 [DEBUG] [Thread-125653] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:51:41.839 [DEBUG] [Thread-125653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:51:41.839 [DEBUG] [Thread-125653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:51:41.839 [DEBUG] [Thread-125653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:51:41.839 [DEBUG] [Thread-125653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:51:41.839 [DEBUG] [Thread-125653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:51:41.839 [DEBUG] [Thread-125653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:51:41.839 [DEBUG] [Thread-125653] [transport.py] [_log()] client lang: <none>
2025-11-04T00:51:41.839 [DEBUG] [Thread-125653] [transport.py] [_log()] server lang: <none>
2025-11-04T00:51:41.839 [DEBUG] [Thread-125653] [transport.py] [_log()] kex follows: False
2025-11-04T00:51:41.839 [DEBUG] [Thread-125653] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:51:41.839 [DEBUG] [Thread-125653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:51:41.839 [DEBUG] [Thread-125653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:51:41.839 [DEBUG] [Thread-125653] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:51:41.839 [DEBUG] [Thread-125653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:51:41.839 [DEBUG] [Thread-125653] [transport.py] [_log()] Compression: none
2025-11-04T00:51:41.839 [DEBUG] [Thread-125653] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:51:41.859 [DEBUG] [Thread-125653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:51:41.859 [DEBUG] [Thread-125653] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:51:41.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:51:41.860 [DEBUG] [Thread-125653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:51:41.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:51:41.862 [DEBUG] [Thread-125653] [transport.py] [_log()] userauth is OK
2025-11-04T00:51:41.862 [DEBUG] [Thread-125653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:51:41.862 [DEBUG] [Thread-125653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:51:41.863 [DEBUG] [Thread-125653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:51:41.863 [DEBUG] [Thread-125653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:51:41.882 [INFO] [Thread-125653] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:51:41.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:51:42.528 [DEBUG] [Thread-125653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:51:42.528 [DEBUG] [Thread-125653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:51:42.528 [DEBUG] [Thread-125653] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:51:42.570 [DEBUG] [Thread-125653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:51:42.570 [DEBUG] [Thread-125653] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:51:42.572 [DEBUG] [Thread-125653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:51:42.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:51:42.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:51:42.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:51:42.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:51:42.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:51:42.598 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:51:42.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:51:42.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:51:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:51:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.952182 -999.00  +18.20  15.39     18   -6.20 1 1 1 1 1     0    0 24.46 2.85 ZNESW 18.3 15.4 314.4 17.0 18.4 -24.6 18.3 -23.4 18.1 -23.2 18.3 -24.1
2025-11-04T00:51:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:51:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:51:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.952182
2025-11-04T00:51:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:51:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:51:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:51:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:51:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:51:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:51:05', tmtdew=29.16, humidity=12.98, cloud=0.0, wind=16.25, temperature=18.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:51:38', seeing=1.14, atlas_timestamp='2025-11-03T22:51:08.525', atlas_cloud=1, atlas_rain=1, zp_data=[0.03774999999999906, 0.03725000000000023, 0.07125000000000092, 0.09149999999999991, 0.10999999999999943, 0.05125000000000135, -0.11500000000000021, -0.018249999999998323, 0.034499999999997755, 0.06899999999999906, 0.1147500000000008, 0.03550000000000075, 0.09200000000000053, -0.2372500000000013, -0.1379999999999999, 0.041499999999999204, 0.08924999999999983, 0.09750000000000014, 0.15699999999999825, 0.13324999999999854, 0.14899999999999913, 0.07374999999999865, -0.04374999999999929, 0.04574999999999996, 0.08499999999999908, 0.15949999999999953, 0.17275000000000063, 0.21899999999999942, 0.31950000000000056, 0.053000000000000824, -0.0649999999999995, 0.0840000000000014, 0.06274999999999942], zp_timestamp='2025-11-03T22:47:00')
2025-11-04T00:51:42.600 [DEBUG] [Thread-125653] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:51:42.672 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:51:42.684 [DEBUG] [Thread-125656] [transport.py] [_log()] starting thread (client mode): 0x11761b70
2025-11-04T00:51:42.684 [DEBUG] [Thread-125656] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:51:42.700 [DEBUG] [Thread-125656] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:51:42.700 [INFO] [Thread-125656] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:51:42.708 [DEBUG] [Thread-125656] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:51:42.709 [DEBUG] [Thread-125656] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:51:42.709 [DEBUG] [Thread-125656] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:51:42.709 [DEBUG] [Thread-125656] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:51:42.709 [DEBUG] [Thread-125656] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:51:42.709 [DEBUG] [Thread-125656] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:51:42.709 [DEBUG] [Thread-125656] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:51:42.709 [DEBUG] [Thread-125656] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:51:42.709 [DEBUG] [Thread-125656] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:51:42.709 [DEBUG] [Thread-125656] [transport.py] [_log()] client lang: <none>
2025-11-04T00:51:42.709 [DEBUG] [Thread-125656] [transport.py] [_log()] server lang: <none>
2025-11-04T00:51:42.709 [DEBUG] [Thread-125656] [transport.py] [_log()] kex follows: False
2025-11-04T00:51:42.709 [DEBUG] [Thread-125656] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:51:42.709 [DEBUG] [Thread-125656] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:51:42.709 [DEBUG] [Thread-125656] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:51:42.709 [DEBUG] [Thread-125656] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:51:42.709 [DEBUG] [Thread-125656] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:51:42.709 [DEBUG] [Thread-125656] [transport.py] [_log()] Compression: none
2025-11-04T00:51:42.709 [DEBUG] [Thread-125656] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:51:42.765 [DEBUG] [Thread-125656] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:51:42.766 [DEBUG] [Thread-125656] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:51:42.766 [DEBUG] [Thread-125656] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:51:42.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:51:42.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:51:42.822 [DEBUG] [Thread-125656] [transport.py] [_log()] userauth is OK
2025-11-04T00:51:42.822 [DEBUG] [Thread-125656] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:51:42.822 [DEBUG] [Thread-125656] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:51:42.823 [DEBUG] [Thread-125656] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:51:42.823 [DEBUG] [Thread-125656] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:51:42.836 [INFO] [Thread-125656] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:51:42.836 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:51:42.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:51:42.895 [DEBUG] [Thread-125658 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:51:43.696 [DEBUG] [Thread-125656] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:51:43.696 [DEBUG] [Thread-125656] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:51:43.744 [DEBUG] [Thread-125656] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:51:43.744 [DEBUG] [Thread-125656] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:51:43.754 [DEBUG] [Thread-125656] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:51:43.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:51:43.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:51:43.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:51:43.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:51:43.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:51:43.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:51:43.787 [DEBUG] [Thread-125656] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:51:57.936 [DEBUG] [Thread-125659 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:52:10.037 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:52:12.972 [DEBUG] [Thread-125660 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:52:13.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:52:13.811 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:52:13.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:52:14.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 51, 37), 19.38, 41.72, 0.0, 15.16, 12.08, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:52:14.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:51:37
2025-11-04T00:52:14.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:52:14.900 [DEBUG] [Thread-125661] [transport.py] [_log()] starting thread (client mode): 0xed07430
2025-11-04T00:52:14.901 [DEBUG] [Thread-125661] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:52:14.913 [DEBUG] [Thread-125661] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:52:14.913 [INFO] [Thread-125661] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:52:14.917 [DEBUG] [Thread-125661] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:52:14.917 [DEBUG] [Thread-125661] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:52:14.917 [DEBUG] [Thread-125661] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:52:14.917 [DEBUG] [Thread-125661] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:52:14.917 [DEBUG] [Thread-125661] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:52:14.917 [DEBUG] [Thread-125661] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:52:14.917 [DEBUG] [Thread-125661] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:52:14.917 [DEBUG] [Thread-125661] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:52:14.917 [DEBUG] [Thread-125661] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:52:14.917 [DEBUG] [Thread-125661] [transport.py] [_log()] client lang: <none>
2025-11-04T00:52:14.917 [DEBUG] [Thread-125661] [transport.py] [_log()] server lang: <none>
2025-11-04T00:52:14.917 [DEBUG] [Thread-125661] [transport.py] [_log()] kex follows: False
2025-11-04T00:52:14.917 [DEBUG] [Thread-125661] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:52:14.918 [DEBUG] [Thread-125661] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:52:14.918 [DEBUG] [Thread-125661] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:52:14.918 [DEBUG] [Thread-125661] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:52:14.918 [DEBUG] [Thread-125661] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:52:14.918 [DEBUG] [Thread-125661] [transport.py] [_log()] Compression: none
2025-11-04T00:52:14.918 [DEBUG] [Thread-125661] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:52:14.945 [DEBUG] [Thread-125661] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:52:14.947 [DEBUG] [Thread-125661] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:52:14.948 [DEBUG] [Thread-125661] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:52:14.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:52:14.950 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:52:14.952 [DEBUG] [Thread-125661] [transport.py] [_log()] userauth is OK
2025-11-04T00:52:14.952 [DEBUG] [Thread-125661] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:52:14.952 [DEBUG] [Thread-125661] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:52:14.952 [DEBUG] [Thread-125661] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:52:14.952 [DEBUG] [Thread-125661] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:52:14.970 [INFO] [Thread-125661] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:52:14.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:52:15.739 [DEBUG] [Thread-125661] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:52:15.739 [DEBUG] [Thread-125661] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:52:15.741 [DEBUG] [Thread-125661] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:52:15.780 [DEBUG] [Thread-125661] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:52:15.780 [DEBUG] [Thread-125661] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:52:15.783 [DEBUG] [Thread-125661] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:52:15.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:52:15.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:52:15.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:52:15.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:52:15.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:52:15.802 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:52:15.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:52:15.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:52:15.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:52:15.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.952529 -999.00  +18.30  15.99     18   -6.20 1 1 1 1 1     0    0 24.42 3.00 ZNESW 16.0 16.0 308.0 19.3 18.4 -24.5 18.2 -23.4 18.0 -23.2 18.3 -24.3
2025-11-04T00:52:15.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:52:15.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:52:15.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.952529
2025-11-04T00:52:15.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:52:15.813 [DEBUG] [Thread-125661] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:52:15.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:52:15.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:52:15.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:52:15.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:52:15.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:51:37', tmtdew=19.38, humidity=41.72, cloud=0.0, wind=15.16, temperature=12.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:52:11', seeing=1.14, atlas_timestamp='2025-11-03T22:51:38.506', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03775000000000084, 0.06974999999999909, -0.003750000000000142, 0.07850000000000001, 0.07150000000000034, 0.015249999999999986, 0.013999999999999346, 0.01425000000000054, 0.10849999999999937, 0.10999999999999943, 0.1432500000000001, 0.0, 0.17099999999999937, 0.10324999999999918, -0.0070000000000014495, 0.04100000000000037, 0.09024999999999928, 0.07899999999999885, 0.18099999999999916, 0.14724999999999966, 0.18399999999999928, 0.23524999999999885, -0.08374999999999844, 0.06475000000000009, 0.07349999999999923, 0.17549999999999955, 0.21775000000000055, 0.1750000000000007, 0.3689999999999998, 0.10600000000000165, 0.12300000000000111, 0.09950000000000081, 0.13574999999999982], zp_timestamp='2025-11-03T22:50:00')
2025-11-04T00:52:15.904 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:52:15.916 [DEBUG] [Thread-125664] [transport.py] [_log()] starting thread (client mode): 0xed1ae90
2025-11-04T00:52:15.916 [DEBUG] [Thread-125664] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:52:15.931 [DEBUG] [Thread-125664] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:52:15.931 [INFO] [Thread-125664] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:52:15.939 [DEBUG] [Thread-125664] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:52:15.939 [DEBUG] [Thread-125664] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:52:15.939 [DEBUG] [Thread-125664] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:52:15.939 [DEBUG] [Thread-125664] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:52:15.939 [DEBUG] [Thread-125664] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:52:15.939 [DEBUG] [Thread-125664] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:52:15.939 [DEBUG] [Thread-125664] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:52:15.939 [DEBUG] [Thread-125664] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:52:15.939 [DEBUG] [Thread-125664] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:52:15.939 [DEBUG] [Thread-125664] [transport.py] [_log()] client lang: <none>
2025-11-04T00:52:15.939 [DEBUG] [Thread-125664] [transport.py] [_log()] server lang: <none>
2025-11-04T00:52:15.939 [DEBUG] [Thread-125664] [transport.py] [_log()] kex follows: False
2025-11-04T00:52:15.939 [DEBUG] [Thread-125664] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:52:15.939 [DEBUG] [Thread-125664] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:52:15.939 [DEBUG] [Thread-125664] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:52:15.939 [DEBUG] [Thread-125664] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:52:15.939 [DEBUG] [Thread-125664] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:52:15.939 [DEBUG] [Thread-125664] [transport.py] [_log()] Compression: none
2025-11-04T00:52:15.939 [DEBUG] [Thread-125664] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:52:15.998 [DEBUG] [Thread-125664] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:52:15.999 [DEBUG] [Thread-125664] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:52:15.999 [DEBUG] [Thread-125664] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:52:15.999 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:52:16.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:52:16.054 [DEBUG] [Thread-125664] [transport.py] [_log()] userauth is OK
2025-11-04T00:52:16.055 [DEBUG] [Thread-125664] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:52:16.055 [DEBUG] [Thread-125664] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:52:16.055 [DEBUG] [Thread-125664] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:52:16.055 [DEBUG] [Thread-125664] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:52:16.074 [INFO] [Thread-125664] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:52:16.075 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:52:16.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:52:16.955 [DEBUG] [Thread-125664] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:52:16.955 [DEBUG] [Thread-125664] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:52:17.002 [DEBUG] [Thread-125664] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:52:17.002 [DEBUG] [Thread-125664] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:52:17.012 [DEBUG] [Thread-125664] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:52:17.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:52:17.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:52:17.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:52:17.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:52:17.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:52:17.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:52:17.047 [DEBUG] [Thread-125664] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:52:17.066 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:52:21.145 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:52:24.068 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:52:24.071 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:52:28.004 [DEBUG] [Thread-125666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:52:30.367 [DEBUG] [Thread-125667 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:52:43.390 [DEBUG] [Thread-125668 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:52:47.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:52:47.070 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:52:47.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:52:47.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 52, 43), 19.31, 42.06, 0.0, 17.89, 12.04, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:52:47.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:52:43
2025-11-04T00:52:47.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:52:48.107 [DEBUG] [Thread-125669] [transport.py] [_log()] starting thread (client mode): 0xed1bee0
2025-11-04T00:52:48.108 [DEBUG] [Thread-125669] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:52:48.126 [DEBUG] [Thread-125669] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:52:48.126 [INFO] [Thread-125669] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:52:48.129 [DEBUG] [Thread-125669] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:52:48.130 [DEBUG] [Thread-125669] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:52:48.130 [DEBUG] [Thread-125669] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:52:48.130 [DEBUG] [Thread-125669] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:52:48.130 [DEBUG] [Thread-125669] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:52:48.130 [DEBUG] [Thread-125669] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:52:48.130 [DEBUG] [Thread-125669] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:52:48.131 [DEBUG] [Thread-125669] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:52:48.131 [DEBUG] [Thread-125669] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:52:48.131 [DEBUG] [Thread-125669] [transport.py] [_log()] client lang: <none>
2025-11-04T00:52:48.131 [DEBUG] [Thread-125669] [transport.py] [_log()] server lang: <none>
2025-11-04T00:52:48.131 [DEBUG] [Thread-125669] [transport.py] [_log()] kex follows: False
2025-11-04T00:52:48.131 [DEBUG] [Thread-125669] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:52:48.131 [DEBUG] [Thread-125669] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:52:48.131 [DEBUG] [Thread-125669] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:52:48.132 [DEBUG] [Thread-125669] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:52:48.132 [DEBUG] [Thread-125669] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:52:48.132 [DEBUG] [Thread-125669] [transport.py] [_log()] Compression: none
2025-11-04T00:52:48.132 [DEBUG] [Thread-125669] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:52:48.147 [DEBUG] [Thread-125669] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:52:48.148 [DEBUG] [Thread-125669] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:52:48.149 [DEBUG] [Thread-125669] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:52:48.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:52:48.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:52:48.193 [DEBUG] [Thread-125669] [transport.py] [_log()] userauth is OK
2025-11-04T00:52:48.193 [DEBUG] [Thread-125669] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:52:48.193 [DEBUG] [Thread-125669] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:52:48.193 [DEBUG] [Thread-125669] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:52:48.193 [DEBUG] [Thread-125669] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:52:48.233 [INFO] [Thread-125669] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:52:48.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:52:48.842 [DEBUG] [Thread-125669] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:52:48.842 [DEBUG] [Thread-125669] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:52:48.852 [DEBUG] [Thread-125669] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:52:48.883 [DEBUG] [Thread-125669] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:52:48.883 [DEBUG] [Thread-125669] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:52:48.885 [DEBUG] [Thread-125669] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:52:48.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:52:48.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:52:48.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:52:48.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:52:48.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:52:48.905 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:52:48.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:52:48.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:52:48.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:52:48.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.952876 -999.00  +18.20  17.52     18   -6.30 1 1 1 1 1     0    0 24.88 3.26 ZNESW 16.9 17.5 310.2 19.9 18.4 -24.4 18.2 -23.4 18.0 -23.1 18.3 -24.0
2025-11-04T00:52:48.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:52:48.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:52:48.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.952876
2025-11-04T00:52:48.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:52:48.911 [DEBUG] [Thread-125669] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:52:48.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:52:48.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:52:48.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:52:48.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:52:48.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:52:43', tmtdew=19.31, humidity=42.06, cloud=0.0, wind=17.89, temperature=12.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:52:44', seeing=1.03, atlas_timestamp='2025-11-03T22:52:08.486', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03775000000000084, 0.06974999999999909, -0.003750000000000142, 0.07850000000000001, 0.07150000000000034, 0.015249999999999986, 0.013999999999999346, 0.01425000000000054, 0.10849999999999937, 0.10999999999999943, 0.1432500000000001, 0.0, 0.17099999999999937, 0.10324999999999918, -0.0070000000000014495, 0.04100000000000037, 0.09024999999999928, 0.07899999999999885, 0.18099999999999916, 0.14724999999999966, 0.18399999999999928, 0.23524999999999885, -0.08374999999999844, 0.06475000000000009, 0.07349999999999923, 0.17549999999999955, 0.21775000000000055, 0.1750000000000007, 0.3689999999999998, 0.10600000000000165, 0.12300000000000111, 0.09950000000000081, 0.13574999999999982], zp_timestamp='2025-11-03T22:50:00')
2025-11-04T00:52:48.989 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:52:49.004 [DEBUG] [Thread-125672] [transport.py] [_log()] starting thread (client mode): 0xed18760
2025-11-04T00:52:49.004 [DEBUG] [Thread-125672] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:52:49.021 [DEBUG] [Thread-125672] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:52:49.021 [INFO] [Thread-125672] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:52:49.032 [DEBUG] [Thread-125672] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:52:49.032 [DEBUG] [Thread-125672] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:52:49.032 [DEBUG] [Thread-125672] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:52:49.032 [DEBUG] [Thread-125672] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:52:49.032 [DEBUG] [Thread-125672] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:52:49.032 [DEBUG] [Thread-125672] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:52:49.032 [DEBUG] [Thread-125672] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:52:49.032 [DEBUG] [Thread-125672] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:52:49.032 [DEBUG] [Thread-125672] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:52:49.032 [DEBUG] [Thread-125672] [transport.py] [_log()] client lang: <none>
2025-11-04T00:52:49.032 [DEBUG] [Thread-125672] [transport.py] [_log()] server lang: <none>
2025-11-04T00:52:49.032 [DEBUG] [Thread-125672] [transport.py] [_log()] kex follows: False
2025-11-04T00:52:49.032 [DEBUG] [Thread-125672] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:52:49.032 [DEBUG] [Thread-125672] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:52:49.032 [DEBUG] [Thread-125672] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:52:49.032 [DEBUG] [Thread-125672] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:52:49.032 [DEBUG] [Thread-125672] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:52:49.032 [DEBUG] [Thread-125672] [transport.py] [_log()] Compression: none
2025-11-04T00:52:49.032 [DEBUG] [Thread-125672] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:52:49.088 [DEBUG] [Thread-125672] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:52:49.089 [DEBUG] [Thread-125672] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:52:49.089 [DEBUG] [Thread-125672] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:52:49.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:52:49.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:52:49.145 [DEBUG] [Thread-125672] [transport.py] [_log()] userauth is OK
2025-11-04T00:52:49.145 [DEBUG] [Thread-125672] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:52:49.145 [DEBUG] [Thread-125672] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:52:49.145 [DEBUG] [Thread-125672] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:52:49.145 [DEBUG] [Thread-125672] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:52:49.169 [INFO] [Thread-125672] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:52:49.169 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:52:49.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:52:50.015 [DEBUG] [Thread-125672] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:52:50.015 [DEBUG] [Thread-125672] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:52:50.062 [DEBUG] [Thread-125672] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:52:50.063 [DEBUG] [Thread-125672] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:52:50.072 [DEBUG] [Thread-125672] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:52:50.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:52:50.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:52:50.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:52:50.099 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:52:50.099 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:52:50.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:52:50.107 [DEBUG] [Thread-125672] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:52:58.431 [DEBUG] [Thread-125674 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:53:13.488 [DEBUG] [Thread-125675 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:53:20.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:53:20.107 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:53:20.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:53:21.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 53, 16), 19.33, 42.03, 0.0, 17.4, 12.02, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:53:21.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:53:16
2025-11-04T00:53:22.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:53:22.386 [DEBUG] [Thread-125676] [transport.py] [_log()] starting thread (client mode): 0xed1b190
2025-11-04T00:53:22.388 [DEBUG] [Thread-125676] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:53:22.390 [DEBUG] [Thread-125676] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:53:22.390 [INFO] [Thread-125676] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:53:22.409 [DEBUG] [Thread-125676] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:53:22.409 [DEBUG] [Thread-125676] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:53:22.409 [DEBUG] [Thread-125676] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:53:22.409 [DEBUG] [Thread-125676] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:53:22.409 [DEBUG] [Thread-125676] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:53:22.409 [DEBUG] [Thread-125676] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:53:22.409 [DEBUG] [Thread-125676] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:53:22.409 [DEBUG] [Thread-125676] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:53:22.409 [DEBUG] [Thread-125676] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:53:22.409 [DEBUG] [Thread-125676] [transport.py] [_log()] client lang: <none>
2025-11-04T00:53:22.409 [DEBUG] [Thread-125676] [transport.py] [_log()] server lang: <none>
2025-11-04T00:53:22.410 [DEBUG] [Thread-125676] [transport.py] [_log()] kex follows: False
2025-11-04T00:53:22.410 [DEBUG] [Thread-125676] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:53:22.414 [DEBUG] [Thread-125676] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:53:22.414 [DEBUG] [Thread-125676] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:53:22.414 [DEBUG] [Thread-125676] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:53:22.414 [DEBUG] [Thread-125676] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:53:22.414 [DEBUG] [Thread-125676] [transport.py] [_log()] Compression: none
2025-11-04T00:53:22.414 [DEBUG] [Thread-125676] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:53:22.490 [DEBUG] [Thread-125676] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:53:22.498 [DEBUG] [Thread-125676] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:53:22.502 [DEBUG] [Thread-125676] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:53:22.507 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:53:22.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:53:22.519 [DEBUG] [Thread-125676] [transport.py] [_log()] userauth is OK
2025-11-04T00:53:22.519 [DEBUG] [Thread-125676] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:53:22.520 [DEBUG] [Thread-125676] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:53:22.521 [DEBUG] [Thread-125676] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:53:22.521 [DEBUG] [Thread-125676] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:53:22.555 [INFO] [Thread-125676] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:53:22.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:53:23.196 [DEBUG] [Thread-125676] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:53:23.198 [DEBUG] [Thread-125676] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:53:23.199 [DEBUG] [Thread-125676] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:53:23.237 [DEBUG] [Thread-125676] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:53:23.237 [DEBUG] [Thread-125676] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:53:23.241 [DEBUG] [Thread-125676] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:53:23.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:53:23.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:53:23.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:53:23.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:53:23.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:53:23.270 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:53:23.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:53:23.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:53:23.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:53:23.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.953223 -999.00  +18.20  16.38     18   -6.20 1 1 1 1 1     0    0 25.27 3.41 ZNESW 15.9 16.4 305.0 18.6 18.3 -24.5 18.2 -23.5 18.1 -23.1 18.3 -24.2
2025-11-04T00:53:23.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:53:23.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:53:23.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.953223
2025-11-04T00:53:23.281 [DEBUG] [Thread-125676] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:53:23.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:53:23.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:53:23.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:53:23.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:53:23.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:53:23.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:53:16', tmtdew=19.33, humidity=42.03, cloud=0.0, wind=17.4, temperature=12.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:53:16', seeing=1.03, atlas_timestamp='2025-11-03T22:52:38.467', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03775000000000084, 0.06974999999999909, -0.003750000000000142, 0.07850000000000001, 0.07150000000000034, 0.015249999999999986, 0.013999999999999346, 0.01425000000000054, 0.10849999999999937, 0.10999999999999943, 0.1432500000000001, 0.0, 0.17099999999999937, 0.10324999999999918, -0.0070000000000014495, 0.04100000000000037, 0.09024999999999928, 0.07899999999999885, 0.18099999999999916, 0.14724999999999966, 0.18399999999999928, 0.23524999999999885, -0.08374999999999844, 0.06475000000000009, 0.07349999999999923, 0.17549999999999955, 0.21775000000000055, 0.1750000000000007, 0.3689999999999998, 0.10600000000000165, 0.12300000000000111, 0.09950000000000081, 0.13574999999999982], zp_timestamp='2025-11-03T22:50:00')
2025-11-04T00:53:23.427 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:53:23.443 [DEBUG] [Thread-125679] [transport.py] [_log()] starting thread (client mode): 0xed409a0
2025-11-04T00:53:23.444 [DEBUG] [Thread-125679] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:53:23.460 [DEBUG] [Thread-125679] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:53:23.460 [INFO] [Thread-125679] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:53:23.468 [DEBUG] [Thread-125679] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:53:23.469 [DEBUG] [Thread-125679] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:53:23.469 [DEBUG] [Thread-125679] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:53:23.469 [DEBUG] [Thread-125679] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:53:23.469 [DEBUG] [Thread-125679] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:53:23.469 [DEBUG] [Thread-125679] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:53:23.469 [DEBUG] [Thread-125679] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:53:23.469 [DEBUG] [Thread-125679] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:53:23.469 [DEBUG] [Thread-125679] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:53:23.469 [DEBUG] [Thread-125679] [transport.py] [_log()] client lang: <none>
2025-11-04T00:53:23.469 [DEBUG] [Thread-125679] [transport.py] [_log()] server lang: <none>
2025-11-04T00:53:23.469 [DEBUG] [Thread-125679] [transport.py] [_log()] kex follows: False
2025-11-04T00:53:23.469 [DEBUG] [Thread-125679] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:53:23.469 [DEBUG] [Thread-125679] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:53:23.469 [DEBUG] [Thread-125679] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:53:23.471 [DEBUG] [Thread-125679] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:53:23.471 [DEBUG] [Thread-125679] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:53:23.473 [DEBUG] [Thread-125679] [transport.py] [_log()] Compression: none
2025-11-04T00:53:23.473 [DEBUG] [Thread-125679] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:53:23.533 [DEBUG] [Thread-125679] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:53:23.534 [DEBUG] [Thread-125679] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:53:23.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:53:23.539 [DEBUG] [Thread-125679] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:53:23.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:53:23.596 [DEBUG] [Thread-125679] [transport.py] [_log()] userauth is OK
2025-11-04T00:53:23.596 [DEBUG] [Thread-125679] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:53:23.596 [DEBUG] [Thread-125679] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:53:23.597 [DEBUG] [Thread-125679] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:53:23.597 [DEBUG] [Thread-125679] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:53:23.617 [INFO] [Thread-125679] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:53:23.617 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:53:23.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:53:24.275 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:53:24.281 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:53:24.482 [DEBUG] [Thread-125679] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:53:24.482 [DEBUG] [Thread-125679] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:53:24.530 [DEBUG] [Thread-125679] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:53:24.530 [DEBUG] [Thread-125679] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:53:24.539 [DEBUG] [Thread-125679] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:53:24.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:53:24.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:53:24.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:53:24.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:53:24.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:53:24.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:53:24.579 [DEBUG] [Thread-125679] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:53:28.520 [DEBUG] [Thread-125681 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:53:31.649 [DEBUG] [Thread-125682 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:53:43.682 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:53:43.744 [DEBUG] [Thread-125683 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:53:51.750 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:53:54.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:53:54.604 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:53:54.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:53:55.863 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:53:56.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 53, 16), 19.33, 42.03, 0.0, 17.4, 12.02, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:53:56.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:53:16
2025-11-04T00:53:57.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:53:57.858 [DEBUG] [Thread-125684] [transport.py] [_log()] starting thread (client mode): 0x11762c80
2025-11-04T00:53:57.862 [DEBUG] [Thread-125684] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:53:57.864 [DEBUG] [Thread-125684] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:53:57.865 [INFO] [Thread-125684] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:53:57.875 [DEBUG] [Thread-125684] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:53:57.875 [DEBUG] [Thread-125684] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:53:57.875 [DEBUG] [Thread-125684] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:53:57.875 [DEBUG] [Thread-125684] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:53:57.875 [DEBUG] [Thread-125684] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:53:57.875 [DEBUG] [Thread-125684] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:53:57.875 [DEBUG] [Thread-125684] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:53:57.875 [DEBUG] [Thread-125684] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:53:57.875 [DEBUG] [Thread-125684] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:53:57.875 [DEBUG] [Thread-125684] [transport.py] [_log()] client lang: <none>
2025-11-04T00:53:57.875 [DEBUG] [Thread-125684] [transport.py] [_log()] server lang: <none>
2025-11-04T00:53:57.875 [DEBUG] [Thread-125684] [transport.py] [_log()] kex follows: False
2025-11-04T00:53:57.875 [DEBUG] [Thread-125684] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:53:57.875 [DEBUG] [Thread-125684] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:53:57.875 [DEBUG] [Thread-125684] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:53:57.875 [DEBUG] [Thread-125684] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:53:57.877 [DEBUG] [Thread-125684] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:53:57.877 [DEBUG] [Thread-125684] [transport.py] [_log()] Compression: none
2025-11-04T00:53:57.877 [DEBUG] [Thread-125684] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:53:57.954 [DEBUG] [Thread-125684] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:53:57.975 [DEBUG] [Thread-125684] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:53:57.981 [DEBUG] [Thread-125684] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:53:57.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:53:57.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:53:57.995 [DEBUG] [Thread-125684] [transport.py] [_log()] userauth is OK
2025-11-04T00:53:57.995 [DEBUG] [Thread-125684] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:53:57.995 [DEBUG] [Thread-125684] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:53:57.995 [DEBUG] [Thread-125684] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:53:57.995 [DEBUG] [Thread-125684] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:53:58.042 [INFO] [Thread-125684] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:53:58.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:53:58.696 [DEBUG] [Thread-125684] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:53:58.696 [DEBUG] [Thread-125684] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:53:58.696 [DEBUG] [Thread-125684] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:53:58.736 [DEBUG] [Thread-125684] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:53:58.736 [DEBUG] [Thread-125684] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:53:58.738 [DEBUG] [Thread-125684] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:53:58.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:53:58.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:53:58.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:53:58.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:53:58.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:53:58.760 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:53:58.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:53:58.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:53:58.762 [DEBUG] [Thread-125684] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:53:58.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:53:58.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.953918 -999.00  +18.10  13.76     18   -6.30 1 1 1 1 1     0    0 24.98 2.75 ZNESW 12.3 13.8 309.6 19.0 18.3 -24.5 18.2 -23.4 18.0 -23.2 18.3 -24.2
2025-11-04T00:53:58.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:53:58.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:53:58.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.953918
2025-11-04T00:53:58.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:53:58.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:53:58.774 [DEBUG] [Thread-125687 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:53:58.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:53:58.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:53:58.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:53:58.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:53:16', tmtdew=19.33, humidity=42.03, cloud=0.0, wind=17.4, temperature=12.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:53:49', seeing=1.11, atlas_timestamp='2025-11-03T22:53:38.515', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03775000000000084, 0.06974999999999909, -0.003750000000000142, 0.07850000000000001, 0.07150000000000034, 0.015249999999999986, 0.013999999999999346, 0.01425000000000054, 0.10849999999999937, 0.10999999999999943, 0.1432500000000001, 0.0, 0.17099999999999937, 0.10324999999999918, -0.0070000000000014495, 0.04100000000000037, 0.09024999999999928, 0.07899999999999885, 0.18099999999999916, 0.14724999999999966, 0.18399999999999928, 0.23524999999999885, -0.08374999999999844, 0.06475000000000009, 0.07349999999999923, 0.17549999999999955, 0.21775000000000055, 0.1750000000000007, 0.3689999999999998, 0.10600000000000165, 0.12300000000000111, 0.09950000000000081, 0.13574999999999982], zp_timestamp='2025-11-03T22:50:00')
2025-11-04T00:53:58.851 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:53:58.863 [DEBUG] [Thread-125688] [transport.py] [_log()] starting thread (client mode): 0xed5ce50
2025-11-04T00:53:58.863 [DEBUG] [Thread-125688] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:53:58.878 [DEBUG] [Thread-125688] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:53:58.878 [INFO] [Thread-125688] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:53:58.887 [DEBUG] [Thread-125688] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:53:58.887 [DEBUG] [Thread-125688] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:53:58.887 [DEBUG] [Thread-125688] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:53:58.887 [DEBUG] [Thread-125688] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:53:58.887 [DEBUG] [Thread-125688] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:53:58.887 [DEBUG] [Thread-125688] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:53:58.887 [DEBUG] [Thread-125688] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:53:58.887 [DEBUG] [Thread-125688] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:53:58.887 [DEBUG] [Thread-125688] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:53:58.887 [DEBUG] [Thread-125688] [transport.py] [_log()] client lang: <none>
2025-11-04T00:53:58.887 [DEBUG] [Thread-125688] [transport.py] [_log()] server lang: <none>
2025-11-04T00:53:58.887 [DEBUG] [Thread-125688] [transport.py] [_log()] kex follows: False
2025-11-04T00:53:58.887 [DEBUG] [Thread-125688] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:53:58.887 [DEBUG] [Thread-125688] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:53:58.887 [DEBUG] [Thread-125688] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:53:58.887 [DEBUG] [Thread-125688] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:53:58.887 [DEBUG] [Thread-125688] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:53:58.887 [DEBUG] [Thread-125688] [transport.py] [_log()] Compression: none
2025-11-04T00:53:58.887 [DEBUG] [Thread-125688] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:53:58.945 [DEBUG] [Thread-125688] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:53:58.945 [DEBUG] [Thread-125688] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:53:58.945 [DEBUG] [Thread-125688] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:53:58.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:53:58.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:53:59.007 [DEBUG] [Thread-125688] [transport.py] [_log()] userauth is OK
2025-11-04T00:53:59.007 [DEBUG] [Thread-125688] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:53:59.007 [DEBUG] [Thread-125688] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:53:59.007 [DEBUG] [Thread-125688] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:53:59.007 [DEBUG] [Thread-125688] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:53:59.024 [INFO] [Thread-125688] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:53:59.024 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:53:59.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:53:59.872 [DEBUG] [Thread-125688] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:53:59.872 [DEBUG] [Thread-125688] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:53:59.921 [DEBUG] [Thread-125688] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:53:59.921 [DEBUG] [Thread-125688] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:53:59.930 [DEBUG] [Thread-125688] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:53:59.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:53:59.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:53:59.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:53:59.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:53:59.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:53:59.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:53:59.963 [DEBUG] [Thread-125688] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:54:13.812 [DEBUG] [Thread-125690 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:54:24.484 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:54:24.485 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:54:28.913 [DEBUG] [Thread-125691 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:54:29.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:54:29.967 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:54:29.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:54:30.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 53, 48), 19.34, 42.05, 0.0, 19.09, 12.04, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:54:30.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:53:48
2025-11-04T00:54:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:54:31.175 [DEBUG] [Thread-125692] [transport.py] [_log()] starting thread (client mode): 0xed049a0
2025-11-04T00:54:31.175 [DEBUG] [Thread-125692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:54:31.195 [DEBUG] [Thread-125692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:54:31.195 [INFO] [Thread-125692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:54:31.198 [DEBUG] [Thread-125692] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:54:31.198 [DEBUG] [Thread-125692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:54:31.198 [DEBUG] [Thread-125692] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:54:31.198 [DEBUG] [Thread-125692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:54:31.198 [DEBUG] [Thread-125692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:54:31.198 [DEBUG] [Thread-125692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:54:31.198 [DEBUG] [Thread-125692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:54:31.198 [DEBUG] [Thread-125692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:54:31.198 [DEBUG] [Thread-125692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:54:31.198 [DEBUG] [Thread-125692] [transport.py] [_log()] client lang: <none>
2025-11-04T00:54:31.198 [DEBUG] [Thread-125692] [transport.py] [_log()] server lang: <none>
2025-11-04T00:54:31.198 [DEBUG] [Thread-125692] [transport.py] [_log()] kex follows: False
2025-11-04T00:54:31.198 [DEBUG] [Thread-125692] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:54:31.198 [DEBUG] [Thread-125692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:54:31.198 [DEBUG] [Thread-125692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:54:31.198 [DEBUG] [Thread-125692] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:54:31.198 [DEBUG] [Thread-125692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:54:31.198 [DEBUG] [Thread-125692] [transport.py] [_log()] Compression: none
2025-11-04T00:54:31.199 [DEBUG] [Thread-125692] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:54:31.215 [DEBUG] [Thread-125692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:54:31.215 [DEBUG] [Thread-125692] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:54:31.215 [DEBUG] [Thread-125692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:54:31.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:54:31.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:54:31.256 [DEBUG] [Thread-125692] [transport.py] [_log()] userauth is OK
2025-11-04T00:54:31.256 [DEBUG] [Thread-125692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:54:31.256 [DEBUG] [Thread-125692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:54:31.256 [DEBUG] [Thread-125692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:54:31.256 [DEBUG] [Thread-125692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:54:31.283 [INFO] [Thread-125692] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:54:31.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:54:31.925 [DEBUG] [Thread-125692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:54:31.925 [DEBUG] [Thread-125692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:54:31.925 [DEBUG] [Thread-125692] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:54:31.966 [DEBUG] [Thread-125692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:54:31.966 [DEBUG] [Thread-125692] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:54:31.968 [DEBUG] [Thread-125692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:54:31.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:54:31.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:54:31.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:54:31.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:54:31.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:54:31.987 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:54:31.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:54:31.987 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:54:31.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:54:31.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.954265 -999.00  +18.10  14.48     18   -6.30 1 1 1 1 1     0    0 24.21 2.26 ZNESW 14.3 14.5 310.0 18.3 18.3 -24.5 18.3 -23.4 18.0 -23.2 18.2 -24.0
2025-11-04T00:54:31.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:54:31.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:54:31.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.954265
2025-11-04T00:54:31.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:54:31.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:54:31.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:54:31.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:54:31.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:54:31.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:53:48', tmtdew=19.34, humidity=42.05, cloud=0.0, wind=19.09, temperature=12.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:54:28', seeing=1.04, atlas_timestamp='2025-11-03T22:54:08.496', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03775000000000084, 0.06974999999999909, -0.003750000000000142, 0.07850000000000001, 0.07150000000000034, 0.015249999999999986, 0.013999999999999346, 0.01425000000000054, 0.10849999999999937, 0.10999999999999943, 0.1432500000000001, 0.0, 0.17099999999999937, 0.10324999999999918, -0.0070000000000014495, 0.04100000000000037, 0.09024999999999928, 0.07899999999999885, 0.18099999999999916, 0.14724999999999966, 0.18399999999999928, 0.23524999999999885, -0.08374999999999844, 0.06475000000000009, 0.07349999999999923, 0.17549999999999955, 0.21775000000000055, 0.1750000000000007, 0.3689999999999998, 0.10600000000000165, 0.12300000000000111, 0.09950000000000081, 0.13574999999999982], zp_timestamp='2025-11-03T22:50:00')
2025-11-04T00:54:31.989 [DEBUG] [Thread-125692] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:54:31.989 [DEBUG] [Thread-125695 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:54:32.060 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:54:32.074 [DEBUG] [Thread-125696] [transport.py] [_log()] starting thread (client mode): 0x11762740
2025-11-04T00:54:32.074 [DEBUG] [Thread-125696] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:54:32.092 [DEBUG] [Thread-125696] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:54:32.092 [INFO] [Thread-125696] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:54:32.104 [DEBUG] [Thread-125696] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:54:32.104 [DEBUG] [Thread-125696] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:54:32.104 [DEBUG] [Thread-125696] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:54:32.104 [DEBUG] [Thread-125696] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:54:32.104 [DEBUG] [Thread-125696] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:54:32.104 [DEBUG] [Thread-125696] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:54:32.104 [DEBUG] [Thread-125696] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:54:32.104 [DEBUG] [Thread-125696] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:54:32.104 [DEBUG] [Thread-125696] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:54:32.105 [DEBUG] [Thread-125696] [transport.py] [_log()] client lang: <none>
2025-11-04T00:54:32.105 [DEBUG] [Thread-125696] [transport.py] [_log()] server lang: <none>
2025-11-04T00:54:32.105 [DEBUG] [Thread-125696] [transport.py] [_log()] kex follows: False
2025-11-04T00:54:32.105 [DEBUG] [Thread-125696] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:54:32.105 [DEBUG] [Thread-125696] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:54:32.105 [DEBUG] [Thread-125696] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:54:32.105 [DEBUG] [Thread-125696] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:54:32.105 [DEBUG] [Thread-125696] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:54:32.105 [DEBUG] [Thread-125696] [transport.py] [_log()] Compression: none
2025-11-04T00:54:32.105 [DEBUG] [Thread-125696] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:54:32.166 [DEBUG] [Thread-125696] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:54:32.167 [DEBUG] [Thread-125696] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:54:32.168 [DEBUG] [Thread-125696] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:54:32.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:54:32.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:54:32.229 [DEBUG] [Thread-125696] [transport.py] [_log()] userauth is OK
2025-11-04T00:54:32.230 [DEBUG] [Thread-125696] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:54:32.230 [DEBUG] [Thread-125696] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:54:32.230 [DEBUG] [Thread-125696] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:54:32.230 [DEBUG] [Thread-125696] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:54:32.262 [INFO] [Thread-125696] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:54:32.263 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:54:32.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:54:33.126 [DEBUG] [Thread-125696] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:54:33.126 [DEBUG] [Thread-125696] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:54:33.178 [DEBUG] [Thread-125696] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:54:33.178 [DEBUG] [Thread-125696] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:54:33.188 [DEBUG] [Thread-125696] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:54:33.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:54:33.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:54:33.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:54:33.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:54:33.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:54:33.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:54:33.221 [DEBUG] [Thread-125696] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:54:43.939 [DEBUG] [Thread-125698 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:54:58.985 [DEBUG] [Thread-125699 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:55:03.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:55:03.243 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:55:03.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:55:07.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 54, 28), 19.35, 42.04, 0.0, 18.24, 12.03, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:55:07.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:54:28
2025-11-04T00:55:07.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:55:07.572 [DEBUG] [Thread-125700] [transport.py] [_log()] starting thread (client mode): 0xed1a290
2025-11-04T00:55:07.573 [DEBUG] [Thread-125700] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:55:07.587 [DEBUG] [Thread-125700] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:55:07.588 [INFO] [Thread-125700] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:55:07.590 [DEBUG] [Thread-125700] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:55:07.590 [DEBUG] [Thread-125700] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:55:07.591 [DEBUG] [Thread-125700] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:55:07.591 [DEBUG] [Thread-125700] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:55:07.591 [DEBUG] [Thread-125700] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:55:07.591 [DEBUG] [Thread-125700] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:55:07.591 [DEBUG] [Thread-125700] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:55:07.591 [DEBUG] [Thread-125700] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:55:07.591 [DEBUG] [Thread-125700] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:55:07.591 [DEBUG] [Thread-125700] [transport.py] [_log()] client lang: <none>
2025-11-04T00:55:07.591 [DEBUG] [Thread-125700] [transport.py] [_log()] server lang: <none>
2025-11-04T00:55:07.591 [DEBUG] [Thread-125700] [transport.py] [_log()] kex follows: False
2025-11-04T00:55:07.591 [DEBUG] [Thread-125700] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:55:07.592 [DEBUG] [Thread-125700] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:55:07.592 [DEBUG] [Thread-125700] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:55:07.592 [DEBUG] [Thread-125700] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:55:07.592 [DEBUG] [Thread-125700] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:55:07.592 [DEBUG] [Thread-125700] [transport.py] [_log()] Compression: none
2025-11-04T00:55:07.592 [DEBUG] [Thread-125700] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:55:07.612 [DEBUG] [Thread-125700] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:55:07.615 [DEBUG] [Thread-125700] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:55:07.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:55:07.616 [DEBUG] [Thread-125700] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:55:07.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:55:07.656 [DEBUG] [Thread-125700] [transport.py] [_log()] userauth is OK
2025-11-04T00:55:07.656 [DEBUG] [Thread-125700] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:55:07.656 [DEBUG] [Thread-125700] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:55:07.656 [DEBUG] [Thread-125700] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:55:07.656 [DEBUG] [Thread-125700] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:55:07.674 [INFO] [Thread-125700] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:55:07.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:55:10.380 [DEBUG] [Thread-125700] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:55:10.380 [DEBUG] [Thread-125700] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:55:10.381 [DEBUG] [Thread-125700] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:55:10.421 [DEBUG] [Thread-125700] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:55:10.422 [DEBUG] [Thread-125700] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:55:10.425 [DEBUG] [Thread-125700] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:55:10.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:55:10.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:55:10.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:55:10.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:55:10.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:55:10.478 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:55:10.478 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:55:10.478 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:55:10.482 [DEBUG] [Thread-125700] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:55:10.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:55:10.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.954612 -999.00  +18.10  18.34     18   -6.30 1 1 1 1 1     0    0 24.38 1.42 ZNESW 17.0 18.3 305.8 20.7 18.3 -24.4 18.2 -23.4 18.0 -23.2 18.2 -24.0
2025-11-04T00:55:10.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:55:10.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:55:10.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.954612
2025-11-04T00:55:10.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:55:10.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:55:10.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:55:10.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:55:10.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:55:10.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:54:28', tmtdew=19.35, humidity=42.04, cloud=0.0, wind=18.24, temperature=12.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:55:02', seeing=1.04, atlas_timestamp='2025-11-03T22:54:38.477', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03775000000000084, 0.06974999999999909, -0.003750000000000142, 0.07850000000000001, 0.07150000000000034, 0.015249999999999986, 0.013999999999999346, 0.01425000000000054, 0.10849999999999937, 0.10999999999999943, 0.1432500000000001, 0.0, 0.17099999999999937, 0.10324999999999918, -0.0070000000000014495, 0.04100000000000037, 0.09024999999999928, 0.07899999999999885, 0.18099999999999916, 0.14724999999999966, 0.18399999999999928, 0.23524999999999885, -0.08374999999999844, 0.06475000000000009, 0.07349999999999923, 0.17549999999999955, 0.21775000000000055, 0.1750000000000007, 0.3689999999999998, 0.10600000000000165, 0.12300000000000111, 0.09950000000000081, 0.13574999999999982], zp_timestamp='2025-11-03T22:53:00')
2025-11-04T00:55:10.581 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:55:10.595 [DEBUG] [Thread-125703] [transport.py] [_log()] starting thread (client mode): 0xed5f670
2025-11-04T00:55:10.595 [DEBUG] [Thread-125703] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:55:10.608 [DEBUG] [Thread-125703] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:55:10.609 [INFO] [Thread-125703] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:55:10.617 [DEBUG] [Thread-125703] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:55:10.617 [DEBUG] [Thread-125703] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:55:10.617 [DEBUG] [Thread-125703] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:55:10.618 [DEBUG] [Thread-125703] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:55:10.618 [DEBUG] [Thread-125703] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:55:10.618 [DEBUG] [Thread-125703] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:55:10.618 [DEBUG] [Thread-125703] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:55:10.618 [DEBUG] [Thread-125703] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:55:10.618 [DEBUG] [Thread-125703] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:55:10.618 [DEBUG] [Thread-125703] [transport.py] [_log()] client lang: <none>
2025-11-04T00:55:10.619 [DEBUG] [Thread-125703] [transport.py] [_log()] server lang: <none>
2025-11-04T00:55:10.619 [DEBUG] [Thread-125703] [transport.py] [_log()] kex follows: False
2025-11-04T00:55:10.619 [DEBUG] [Thread-125703] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:55:10.619 [DEBUG] [Thread-125703] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:55:10.619 [DEBUG] [Thread-125703] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:55:10.619 [DEBUG] [Thread-125703] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:55:10.620 [DEBUG] [Thread-125703] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:55:10.620 [DEBUG] [Thread-125703] [transport.py] [_log()] Compression: none
2025-11-04T00:55:10.620 [DEBUG] [Thread-125703] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:55:10.678 [DEBUG] [Thread-125703] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:55:10.679 [DEBUG] [Thread-125703] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:55:10.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:55:10.680 [DEBUG] [Thread-125703] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:55:10.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:55:10.733 [DEBUG] [Thread-125703] [transport.py] [_log()] userauth is OK
2025-11-04T00:55:10.734 [DEBUG] [Thread-125703] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:55:10.734 [DEBUG] [Thread-125703] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:55:10.734 [DEBUG] [Thread-125703] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:55:10.734 [DEBUG] [Thread-125703] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:55:10.752 [INFO] [Thread-125703] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:55:10.753 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:55:10.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:55:11.602 [DEBUG] [Thread-125703] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:55:11.603 [DEBUG] [Thread-125703] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:55:11.651 [DEBUG] [Thread-125703] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:55:11.651 [DEBUG] [Thread-125703] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:55:11.660 [DEBUG] [Thread-125703] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:55:11.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:55:11.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:55:11.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:55:11.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:55:11.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:55:11.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:55:11.699 [DEBUG] [Thread-125703] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:55:14.019 [DEBUG] [Thread-125705 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:55:18.433 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:55:24.687 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:55:24.688 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:55:29.070 [DEBUG] [Thread-125706 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:55:32.320 [DEBUG] [Thread-125707 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:55:41.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:55:41.710 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:55:41.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:55:42.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 55, 38), 19.31, 42.04, 0.0, 16.62, 11.98, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:55:42.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:55:38
2025-11-04T00:55:42.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:55:42.806 [DEBUG] [Thread-125708] [transport.py] [_log()] starting thread (client mode): 0x117e9f00
2025-11-04T00:55:42.807 [DEBUG] [Thread-125708] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:55:42.819 [DEBUG] [Thread-125708] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:55:42.819 [INFO] [Thread-125708] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:55:42.822 [DEBUG] [Thread-125708] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:55:42.822 [DEBUG] [Thread-125708] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:55:42.823 [DEBUG] [Thread-125708] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:55:42.823 [DEBUG] [Thread-125708] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:55:42.823 [DEBUG] [Thread-125708] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:55:42.823 [DEBUG] [Thread-125708] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:55:42.823 [DEBUG] [Thread-125708] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:55:42.823 [DEBUG] [Thread-125708] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:55:42.823 [DEBUG] [Thread-125708] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:55:42.823 [DEBUG] [Thread-125708] [transport.py] [_log()] client lang: <none>
2025-11-04T00:55:42.823 [DEBUG] [Thread-125708] [transport.py] [_log()] server lang: <none>
2025-11-04T00:55:42.823 [DEBUG] [Thread-125708] [transport.py] [_log()] kex follows: False
2025-11-04T00:55:42.823 [DEBUG] [Thread-125708] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:55:42.824 [DEBUG] [Thread-125708] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:55:42.824 [DEBUG] [Thread-125708] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:55:42.824 [DEBUG] [Thread-125708] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:55:42.824 [DEBUG] [Thread-125708] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:55:42.824 [DEBUG] [Thread-125708] [transport.py] [_log()] Compression: none
2025-11-04T00:55:42.824 [DEBUG] [Thread-125708] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:55:42.857 [DEBUG] [Thread-125708] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:55:42.862 [DEBUG] [Thread-125708] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:55:42.864 [DEBUG] [Thread-125708] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:55:42.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:55:42.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:55:42.871 [DEBUG] [Thread-125708] [transport.py] [_log()] userauth is OK
2025-11-04T00:55:42.871 [DEBUG] [Thread-125708] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:55:42.871 [DEBUG] [Thread-125708] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:55:42.871 [DEBUG] [Thread-125708] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:55:42.871 [DEBUG] [Thread-125708] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:55:42.910 [INFO] [Thread-125708] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:55:42.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:55:43.565 [DEBUG] [Thread-125708] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:55:43.566 [DEBUG] [Thread-125708] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:55:43.575 [DEBUG] [Thread-125708] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:55:43.606 [DEBUG] [Thread-125708] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:55:43.607 [DEBUG] [Thread-125708] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:55:43.611 [DEBUG] [Thread-125708] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:55:43.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:55:43.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:55:43.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:55:43.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:55:43.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:55:43.638 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:55:43.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:55:43.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:55:43.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:55:43.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.954959 -999.00  +18.10  15.21     18   -6.30 1 1 1 1 1     0    0 24.95 0.88 ZNESW 16.6 15.2 309.0 19.6 18.3 -24.3 18.2 -23.4 18.0 -23.1 18.2 -24.1
2025-11-04T00:55:43.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:55:43.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:55:43.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.954959
2025-11-04T00:55:43.645 [DEBUG] [Thread-125708] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:55:43.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:55:43.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:55:43.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:55:43.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:55:43.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:55:43.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:55:38', tmtdew=19.31, humidity=42.04, cloud=0.0, wind=16.62, temperature=11.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:55:38', seeing=1.13, atlas_timestamp='2025-11-03T22:55:08.458', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03775000000000084, 0.06974999999999909, -0.003750000000000142, 0.07850000000000001, 0.07150000000000034, 0.015249999999999986, 0.013999999999999346, 0.01425000000000054, 0.10849999999999937, 0.10999999999999943, 0.1432500000000001, 0.0, 0.17099999999999937, 0.10324999999999918, -0.0070000000000014495, 0.04100000000000037, 0.09024999999999928, 0.07899999999999885, 0.18099999999999916, 0.14724999999999966, 0.18399999999999928, 0.23524999999999885, -0.08374999999999844, 0.06475000000000009, 0.07349999999999923, 0.17549999999999955, 0.21775000000000055, 0.1750000000000007, 0.3689999999999998, 0.10600000000000165, 0.12300000000000111, 0.09950000000000081, 0.13574999999999982], zp_timestamp='2025-11-03T22:53:00')
2025-11-04T00:55:43.723 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:55:43.738 [DEBUG] [Thread-125711] [transport.py] [_log()] starting thread (client mode): 0x117e9f30
2025-11-04T00:55:43.738 [DEBUG] [Thread-125711] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:55:43.755 [DEBUG] [Thread-125711] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:55:43.755 [INFO] [Thread-125711] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:55:43.764 [DEBUG] [Thread-125711] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:55:43.764 [DEBUG] [Thread-125711] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:55:43.764 [DEBUG] [Thread-125711] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:55:43.764 [DEBUG] [Thread-125711] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:55:43.764 [DEBUG] [Thread-125711] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:55:43.764 [DEBUG] [Thread-125711] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:55:43.764 [DEBUG] [Thread-125711] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:55:43.764 [DEBUG] [Thread-125711] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:55:43.764 [DEBUG] [Thread-125711] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:55:43.764 [DEBUG] [Thread-125711] [transport.py] [_log()] client lang: <none>
2025-11-04T00:55:43.764 [DEBUG] [Thread-125711] [transport.py] [_log()] server lang: <none>
2025-11-04T00:55:43.764 [DEBUG] [Thread-125711] [transport.py] [_log()] kex follows: False
2025-11-04T00:55:43.764 [DEBUG] [Thread-125711] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:55:43.764 [DEBUG] [Thread-125711] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:55:43.764 [DEBUG] [Thread-125711] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:55:43.764 [DEBUG] [Thread-125711] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:55:43.765 [DEBUG] [Thread-125711] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:55:43.765 [DEBUG] [Thread-125711] [transport.py] [_log()] Compression: none
2025-11-04T00:55:43.765 [DEBUG] [Thread-125711] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:55:43.821 [DEBUG] [Thread-125711] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:55:43.822 [DEBUG] [Thread-125711] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:55:43.822 [DEBUG] [Thread-125711] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:55:43.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:55:43.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:55:43.890 [DEBUG] [Thread-125711] [transport.py] [_log()] userauth is OK
2025-11-04T00:55:43.890 [DEBUG] [Thread-125711] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:55:43.890 [DEBUG] [Thread-125711] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:55:43.890 [DEBUG] [Thread-125711] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:55:43.890 [DEBUG] [Thread-125711] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:55:43.906 [INFO] [Thread-125711] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:55:43.906 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:55:43.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:55:44.107 [DEBUG] [Thread-125713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:55:44.798 [DEBUG] [Thread-125711] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:55:44.798 [DEBUG] [Thread-125711] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:55:44.837 [DEBUG] [Thread-125711] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:55:44.837 [DEBUG] [Thread-125711] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:55:44.847 [DEBUG] [Thread-125711] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:55:44.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:55:44.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:55:44.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:55:44.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:55:44.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:55:44.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:55:44.886 [DEBUG] [Thread-125711] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:55:59.178 [DEBUG] [Thread-125714 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:56:14.216 [DEBUG] [Thread-125715 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:56:14.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:56:14.912 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:56:14.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:56:15.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 56, 10), 19.29, 42.06, 0.0, 16.2, 11.99, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:56:15.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:56:10
2025-11-04T00:56:15.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:56:16.100 [DEBUG] [Thread-125716] [transport.py] [_log()] starting thread (client mode): 0x117ebb20
2025-11-04T00:56:16.101 [DEBUG] [Thread-125716] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:56:16.112 [DEBUG] [Thread-125716] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:56:16.112 [INFO] [Thread-125716] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:56:16.117 [DEBUG] [Thread-125716] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:56:16.117 [DEBUG] [Thread-125716] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:56:16.117 [DEBUG] [Thread-125716] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:56:16.117 [DEBUG] [Thread-125716] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:56:16.117 [DEBUG] [Thread-125716] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:56:16.117 [DEBUG] [Thread-125716] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:56:16.117 [DEBUG] [Thread-125716] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:56:16.117 [DEBUG] [Thread-125716] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:56:16.117 [DEBUG] [Thread-125716] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:56:16.118 [DEBUG] [Thread-125716] [transport.py] [_log()] client lang: <none>
2025-11-04T00:56:16.118 [DEBUG] [Thread-125716] [transport.py] [_log()] server lang: <none>
2025-11-04T00:56:16.118 [DEBUG] [Thread-125716] [transport.py] [_log()] kex follows: False
2025-11-04T00:56:16.118 [DEBUG] [Thread-125716] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:56:16.118 [DEBUG] [Thread-125716] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:56:16.118 [DEBUG] [Thread-125716] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:56:16.118 [DEBUG] [Thread-125716] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:56:16.118 [DEBUG] [Thread-125716] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:56:16.118 [DEBUG] [Thread-125716] [transport.py] [_log()] Compression: none
2025-11-04T00:56:16.119 [DEBUG] [Thread-125716] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:56:16.154 [DEBUG] [Thread-125716] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:56:16.160 [DEBUG] [Thread-125716] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:56:16.163 [DEBUG] [Thread-125716] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:56:16.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:56:16.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:56:16.169 [DEBUG] [Thread-125716] [transport.py] [_log()] userauth is OK
2025-11-04T00:56:16.169 [DEBUG] [Thread-125716] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:56:16.170 [DEBUG] [Thread-125716] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:56:16.170 [DEBUG] [Thread-125716] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:56:16.170 [DEBUG] [Thread-125716] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:56:16.198 [INFO] [Thread-125716] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:56:16.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:56:16.767 [DEBUG] [Thread-125716] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:56:16.768 [DEBUG] [Thread-125716] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:56:16.771 [DEBUG] [Thread-125716] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:56:16.808 [DEBUG] [Thread-125716] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:56:16.809 [DEBUG] [Thread-125716] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:56:16.812 [DEBUG] [Thread-125716] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:56:16.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:56:16.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:56:16.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:56:16.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:56:16.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:56:16.840 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:56:16.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:56:16.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:56:16.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:56:16.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.955307 -999.00  +18.10  18.09     18   -6.30 1 1 1 1 1     0    0 24.85 0.61 ZNESW 19.1 18.1 305.3 22.6 18.3 -24.2 18.2 -23.2 18.0 -23.2 18.2 -23.9
2025-11-04T00:56:16.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:56:16.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:56:16.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.955307
2025-11-04T00:56:16.849 [DEBUG] [Thread-125716] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:56:16.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:56:16.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:56:16.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:56:16.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:56:16.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:56:16.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:56:10', tmtdew=19.29, humidity=42.06, cloud=0.0, wind=16.2, temperature=11.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:56:11', seeing=1.06, atlas_timestamp='2025-11-03T22:55:38.525', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03775000000000084, 0.06974999999999909, -0.003750000000000142, 0.07850000000000001, 0.07150000000000034, 0.015249999999999986, 0.013999999999999346, 0.01425000000000054, 0.10849999999999937, 0.10999999999999943, 0.1432500000000001, 0.0, 0.17099999999999937, 0.10324999999999918, -0.0070000000000014495, 0.04100000000000037, 0.09024999999999928, 0.07899999999999885, 0.18099999999999916, 0.14724999999999966, 0.18399999999999928, 0.23524999999999885, -0.08374999999999844, 0.06475000000000009, 0.07349999999999923, 0.17549999999999955, 0.21775000000000055, 0.1750000000000007, 0.3689999999999998, 0.10600000000000165, 0.12300000000000111, 0.09950000000000081, 0.13574999999999982], zp_timestamp='2025-11-03T22:53:00')
2025-11-04T00:56:16.962 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:56:16.974 [DEBUG] [Thread-125719] [transport.py] [_log()] starting thread (client mode): 0xed5f3a0
2025-11-04T00:56:16.974 [DEBUG] [Thread-125719] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:56:16.988 [DEBUG] [Thread-125719] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:56:16.989 [INFO] [Thread-125719] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:56:16.996 [DEBUG] [Thread-125719] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:56:16.996 [DEBUG] [Thread-125719] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:56:16.996 [DEBUG] [Thread-125719] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:56:16.996 [DEBUG] [Thread-125719] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:56:16.997 [DEBUG] [Thread-125719] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:56:16.997 [DEBUG] [Thread-125719] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:56:16.997 [DEBUG] [Thread-125719] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:56:16.997 [DEBUG] [Thread-125719] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:56:16.997 [DEBUG] [Thread-125719] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:56:16.997 [DEBUG] [Thread-125719] [transport.py] [_log()] client lang: <none>
2025-11-04T00:56:16.997 [DEBUG] [Thread-125719] [transport.py] [_log()] server lang: <none>
2025-11-04T00:56:16.997 [DEBUG] [Thread-125719] [transport.py] [_log()] kex follows: False
2025-11-04T00:56:16.997 [DEBUG] [Thread-125719] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:56:16.997 [DEBUG] [Thread-125719] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:56:16.997 [DEBUG] [Thread-125719] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:56:16.997 [DEBUG] [Thread-125719] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:56:16.997 [DEBUG] [Thread-125719] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:56:16.997 [DEBUG] [Thread-125719] [transport.py] [_log()] Compression: none
2025-11-04T00:56:16.997 [DEBUG] [Thread-125719] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:56:17.057 [DEBUG] [Thread-125719] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:56:17.058 [DEBUG] [Thread-125719] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:56:17.058 [DEBUG] [Thread-125719] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:56:17.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:56:17.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:56:17.113 [DEBUG] [Thread-125719] [transport.py] [_log()] userauth is OK
2025-11-04T00:56:17.114 [DEBUG] [Thread-125719] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:56:17.114 [DEBUG] [Thread-125719] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:56:17.114 [DEBUG] [Thread-125719] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:56:17.114 [DEBUG] [Thread-125719] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:56:17.133 [INFO] [Thread-125719] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:56:17.134 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:56:17.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:56:17.990 [DEBUG] [Thread-125719] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:56:17.990 [DEBUG] [Thread-125719] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:56:18.039 [DEBUG] [Thread-125719] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:56:18.039 [DEBUG] [Thread-125719] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:56:18.048 [DEBUG] [Thread-125719] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:56:18.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:56:18.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:56:18.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:56:18.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:56:18.077 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:56:18.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:56:18.086 [DEBUG] [Thread-125719] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:56:24.900 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:56:24.901 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:56:29.261 [DEBUG] [Thread-125721 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:56:32.680 [DEBUG] [Thread-125722 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:56:44.369 [DEBUG] [Thread-125723 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:56:48.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:56:48.107 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:56:48.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:56:48.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 56, 43), 19.25, 42.06, 0.0, 16.25, 11.92, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:56:48.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:56:43
2025-11-04T00:56:49.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:56:49.169 [DEBUG] [Thread-125724] [transport.py] [_log()] starting thread (client mode): 0xed5dc30
2025-11-04T00:56:49.169 [DEBUG] [Thread-125724] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:56:49.190 [DEBUG] [Thread-125724] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:56:49.190 [INFO] [Thread-125724] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:56:49.192 [DEBUG] [Thread-125724] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:56:49.192 [DEBUG] [Thread-125724] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:56:49.192 [DEBUG] [Thread-125724] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:56:49.192 [DEBUG] [Thread-125724] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:56:49.192 [DEBUG] [Thread-125724] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:56:49.192 [DEBUG] [Thread-125724] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:56:49.192 [DEBUG] [Thread-125724] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:56:49.192 [DEBUG] [Thread-125724] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:56:49.192 [DEBUG] [Thread-125724] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:56:49.192 [DEBUG] [Thread-125724] [transport.py] [_log()] client lang: <none>
2025-11-04T00:56:49.192 [DEBUG] [Thread-125724] [transport.py] [_log()] server lang: <none>
2025-11-04T00:56:49.192 [DEBUG] [Thread-125724] [transport.py] [_log()] kex follows: False
2025-11-04T00:56:49.192 [DEBUG] [Thread-125724] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:56:49.192 [DEBUG] [Thread-125724] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:56:49.192 [DEBUG] [Thread-125724] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:56:49.192 [DEBUG] [Thread-125724] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:56:49.192 [DEBUG] [Thread-125724] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:56:49.192 [DEBUG] [Thread-125724] [transport.py] [_log()] Compression: none
2025-11-04T00:56:49.193 [DEBUG] [Thread-125724] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:56:49.209 [DEBUG] [Thread-125724] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:56:49.209 [DEBUG] [Thread-125724] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:56:49.209 [DEBUG] [Thread-125724] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:56:49.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:56:49.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:56:49.210 [DEBUG] [Thread-125724] [transport.py] [_log()] userauth is OK
2025-11-04T00:56:49.210 [DEBUG] [Thread-125724] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:56:49.210 [DEBUG] [Thread-125724] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:56:49.210 [DEBUG] [Thread-125724] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:56:49.210 [DEBUG] [Thread-125724] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:56:49.237 [INFO] [Thread-125724] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:56:49.237 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:56:49.866 [DEBUG] [Thread-125724] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:56:49.873 [DEBUG] [Thread-125724] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:56:49.874 [DEBUG] [Thread-125724] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:56:49.907 [DEBUG] [Thread-125724] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:56:49.907 [DEBUG] [Thread-125724] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:56:49.911 [DEBUG] [Thread-125724] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:56:49.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:56:49.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:56:49.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:56:49.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:56:49.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:56:49.938 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:56:49.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:56:49.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:56:49.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:56:49.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.955654 -999.00  +18.20  13.55     18   -6.30 1 1 1 1 1     0    0 24.58 0.57 ZNESW 14.9 13.6 306.2 22.5 18.3 -24.4 18.2 -23.5 18.0 -22.8 18.3 -24.2
2025-11-04T00:56:49.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:56:49.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:56:49.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.955654
2025-11-04T00:56:49.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:56:49.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:56:49.942 [DEBUG] [Thread-125724] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:56:49.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:56:49.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:56:49.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:56:49.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:56:43', tmtdew=19.25, humidity=42.06, cloud=0.0, wind=16.25, temperature=11.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:56:43', seeing=1.06, atlas_timestamp='2025-11-03T22:56:08.506', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03775000000000084, 0.06974999999999909, -0.003750000000000142, 0.07850000000000001, 0.07150000000000034, 0.015249999999999986, 0.013999999999999346, 0.01425000000000054, 0.10849999999999937, 0.10999999999999943, 0.1432500000000001, 0.0, 0.17099999999999937, 0.10324999999999918, -0.0070000000000014495, 0.04100000000000037, 0.09024999999999928, 0.07899999999999885, 0.18099999999999916, 0.14724999999999966, 0.18399999999999928, 0.23524999999999885, -0.08374999999999844, 0.06475000000000009, 0.07349999999999923, 0.17549999999999955, 0.21775000000000055, 0.1750000000000007, 0.3689999999999998, 0.10600000000000165, 0.12300000000000111, 0.09950000000000081, 0.13574999999999982], zp_timestamp='2025-11-03T22:53:00')
2025-11-04T00:56:50.026 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:56:50.040 [DEBUG] [Thread-125727] [transport.py] [_log()] starting thread (client mode): 0xed65990
2025-11-04T00:56:50.040 [DEBUG] [Thread-125727] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:56:50.055 [DEBUG] [Thread-125727] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:56:50.055 [INFO] [Thread-125727] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:56:50.064 [DEBUG] [Thread-125727] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:56:50.064 [DEBUG] [Thread-125727] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:56:50.064 [DEBUG] [Thread-125727] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:56:50.064 [DEBUG] [Thread-125727] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:56:50.064 [DEBUG] [Thread-125727] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:56:50.064 [DEBUG] [Thread-125727] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:56:50.064 [DEBUG] [Thread-125727] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:56:50.064 [DEBUG] [Thread-125727] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:56:50.064 [DEBUG] [Thread-125727] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:56:50.064 [DEBUG] [Thread-125727] [transport.py] [_log()] client lang: <none>
2025-11-04T00:56:50.064 [DEBUG] [Thread-125727] [transport.py] [_log()] server lang: <none>
2025-11-04T00:56:50.064 [DEBUG] [Thread-125727] [transport.py] [_log()] kex follows: False
2025-11-04T00:56:50.064 [DEBUG] [Thread-125727] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:56:50.064 [DEBUG] [Thread-125727] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:56:50.064 [DEBUG] [Thread-125727] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:56:50.064 [DEBUG] [Thread-125727] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:56:50.064 [DEBUG] [Thread-125727] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:56:50.064 [DEBUG] [Thread-125727] [transport.py] [_log()] Compression: none
2025-11-04T00:56:50.064 [DEBUG] [Thread-125727] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:56:50.121 [DEBUG] [Thread-125727] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:56:50.121 [DEBUG] [Thread-125727] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:56:50.121 [DEBUG] [Thread-125727] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:56:50.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:56:50.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:56:50.182 [DEBUG] [Thread-125727] [transport.py] [_log()] userauth is OK
2025-11-04T00:56:50.182 [DEBUG] [Thread-125727] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:56:50.182 [DEBUG] [Thread-125727] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:56:50.182 [DEBUG] [Thread-125727] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:56:50.182 [DEBUG] [Thread-125727] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:56:50.196 [INFO] [Thread-125727] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:56:50.197 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:56:50.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:56:51.025 [DEBUG] [Thread-125727] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:56:51.026 [DEBUG] [Thread-125727] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:56:51.073 [DEBUG] [Thread-125727] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:56:51.074 [DEBUG] [Thread-125727] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:56:51.083 [DEBUG] [Thread-125727] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:56:51.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:56:51.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:56:51.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:56:51.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:56:51.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:56:51.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:56:51.133 [DEBUG] [Thread-125727] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:56:59.407 [DEBUG] [Thread-125729 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:57:05.326 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:57:14.465 [DEBUG] [Thread-125730 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:57:21.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:57:21.129 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:57:21.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:57:22.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 57, 15), 19.23, 42.1, 0.0, 17.2, 11.93, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:57:22.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:57:15
2025-11-04T00:57:22.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:57:22.350 [DEBUG] [Thread-125731] [transport.py] [_log()] starting thread (client mode): 0xed652d0
2025-11-04T00:57:22.351 [DEBUG] [Thread-125731] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:57:22.370 [DEBUG] [Thread-125731] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:57:22.370 [INFO] [Thread-125731] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:57:22.371 [DEBUG] [Thread-125731] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:57:22.371 [DEBUG] [Thread-125731] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:57:22.371 [DEBUG] [Thread-125731] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:57:22.371 [DEBUG] [Thread-125731] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:57:22.371 [DEBUG] [Thread-125731] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:57:22.371 [DEBUG] [Thread-125731] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:57:22.371 [DEBUG] [Thread-125731] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:57:22.371 [DEBUG] [Thread-125731] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:57:22.371 [DEBUG] [Thread-125731] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:57:22.371 [DEBUG] [Thread-125731] [transport.py] [_log()] client lang: <none>
2025-11-04T00:57:22.372 [DEBUG] [Thread-125731] [transport.py] [_log()] server lang: <none>
2025-11-04T00:57:22.372 [DEBUG] [Thread-125731] [transport.py] [_log()] kex follows: False
2025-11-04T00:57:22.372 [DEBUG] [Thread-125731] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:57:22.372 [DEBUG] [Thread-125731] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:57:22.372 [DEBUG] [Thread-125731] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:57:22.372 [DEBUG] [Thread-125731] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:57:22.372 [DEBUG] [Thread-125731] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:57:22.372 [DEBUG] [Thread-125731] [transport.py] [_log()] Compression: none
2025-11-04T00:57:22.372 [DEBUG] [Thread-125731] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:57:22.379 [DEBUG] [Thread-125731] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:57:22.379 [DEBUG] [Thread-125731] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:57:22.379 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:57:22.380 [DEBUG] [Thread-125731] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:57:22.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:57:22.381 [DEBUG] [Thread-125731] [transport.py] [_log()] userauth is OK
2025-11-04T00:57:22.381 [DEBUG] [Thread-125731] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:57:22.381 [DEBUG] [Thread-125731] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:57:22.381 [DEBUG] [Thread-125731] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:57:22.381 [DEBUG] [Thread-125731] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:57:22.396 [INFO] [Thread-125731] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:57:22.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:57:22.994 [DEBUG] [Thread-125731] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:57:22.994 [DEBUG] [Thread-125731] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:57:22.994 [DEBUG] [Thread-125731] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:57:23.035 [DEBUG] [Thread-125731] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:57:23.035 [DEBUG] [Thread-125731] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:57:23.038 [DEBUG] [Thread-125731] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:57:23.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:57:23.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:57:23.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:57:23.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:57:23.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:57:23.049 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:57:23.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:57:23.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:57:23.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:57:23.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.956348 -999.00  +18.10  19.44     18   -6.30 1 1 1 1 1     0    0 23.93 -0.32 ZNESW 17.5 19.4 301.0 24.1 18.3 -24.2 18.2 -23.3 18.0 -23.3 18.3 -23.8
2025-11-04T00:57:23.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:57:23.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:57:23.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.956348
2025-11-04T00:57:23.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:57:23.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:57:23.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:57:23.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:57:23.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:57:23.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:57:15', tmtdew=19.23, humidity=42.1, cloud=0.0, wind=17.2, temperature=11.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:57:16', seeing=1.13, atlas_timestamp='2025-11-03T22:57:08.467', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03775000000000084, 0.06974999999999909, -0.003750000000000142, 0.07850000000000001, 0.07150000000000034, 0.015249999999999986, 0.013999999999999346, 0.01425000000000054, 0.10849999999999937, 0.10999999999999943, 0.1432500000000001, 0.0, 0.17099999999999937, 0.10324999999999918, -0.0070000000000014495, 0.04100000000000037, 0.09024999999999928, 0.07899999999999885, 0.18099999999999916, 0.14724999999999966, 0.18399999999999928, 0.23524999999999885, -0.08374999999999844, 0.06475000000000009, 0.07349999999999923, 0.17549999999999955, 0.21775000000000055, 0.1750000000000007, 0.3689999999999998, 0.10600000000000165, 0.12300000000000111, 0.09950000000000081, 0.13574999999999982], zp_timestamp='2025-11-03T22:53:00')
2025-11-04T00:57:23.050 [DEBUG] [Thread-125731] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:57:23.130 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:57:23.141 [DEBUG] [Thread-125734] [transport.py] [_log()] starting thread (client mode): 0xed1aef0
2025-11-04T00:57:23.141 [DEBUG] [Thread-125734] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:57:23.155 [DEBUG] [Thread-125734] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:57:23.155 [INFO] [Thread-125734] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:57:23.163 [DEBUG] [Thread-125734] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:57:23.163 [DEBUG] [Thread-125734] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:57:23.163 [DEBUG] [Thread-125734] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:57:23.163 [DEBUG] [Thread-125734] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:57:23.163 [DEBUG] [Thread-125734] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:57:23.163 [DEBUG] [Thread-125734] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:57:23.163 [DEBUG] [Thread-125734] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:57:23.163 [DEBUG] [Thread-125734] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:57:23.163 [DEBUG] [Thread-125734] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:57:23.163 [DEBUG] [Thread-125734] [transport.py] [_log()] client lang: <none>
2025-11-04T00:57:23.163 [DEBUG] [Thread-125734] [transport.py] [_log()] server lang: <none>
2025-11-04T00:57:23.163 [DEBUG] [Thread-125734] [transport.py] [_log()] kex follows: False
2025-11-04T00:57:23.163 [DEBUG] [Thread-125734] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:57:23.163 [DEBUG] [Thread-125734] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:57:23.163 [DEBUG] [Thread-125734] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:57:23.163 [DEBUG] [Thread-125734] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:57:23.163 [DEBUG] [Thread-125734] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:57:23.163 [DEBUG] [Thread-125734] [transport.py] [_log()] Compression: none
2025-11-04T00:57:23.164 [DEBUG] [Thread-125734] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:57:23.219 [DEBUG] [Thread-125734] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:57:23.219 [DEBUG] [Thread-125734] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:57:23.219 [DEBUG] [Thread-125734] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:57:23.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:57:23.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:57:23.280 [DEBUG] [Thread-125734] [transport.py] [_log()] userauth is OK
2025-11-04T00:57:23.280 [DEBUG] [Thread-125734] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:57:23.280 [DEBUG] [Thread-125734] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:57:23.280 [DEBUG] [Thread-125734] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:57:23.280 [DEBUG] [Thread-125734] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:57:23.294 [INFO] [Thread-125734] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:57:23.294 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:57:23.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:57:24.156 [DEBUG] [Thread-125734] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:57:24.156 [DEBUG] [Thread-125734] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:57:24.204 [DEBUG] [Thread-125734] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:57:24.204 [DEBUG] [Thread-125734] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:57:24.212 [DEBUG] [Thread-125734] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:57:24.220 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:57:24.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:57:24.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:57:24.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:57:24.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:57:24.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:57:24.245 [DEBUG] [Thread-125734] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:57:25.104 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:57:25.105 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:57:29.502 [DEBUG] [Thread-125736 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:57:33.020 [DEBUG] [Thread-125737 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:57:44.543 [DEBUG] [Thread-125738 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:57:54.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:57:54.277 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:57:54.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:57:55.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 57, 48), 19.25, 42.07, 0.0, 19.41, 11.97, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:57:55.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:57:48
2025-11-04T00:57:55.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:57:55.476 [DEBUG] [Thread-125739] [transport.py] [_log()] starting thread (client mode): 0xed67460
2025-11-04T00:57:55.477 [DEBUG] [Thread-125739] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:57:55.492 [DEBUG] [Thread-125739] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:57:55.492 [INFO] [Thread-125739] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:57:55.496 [DEBUG] [Thread-125739] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:57:55.496 [DEBUG] [Thread-125739] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:57:55.496 [DEBUG] [Thread-125739] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:57:55.496 [DEBUG] [Thread-125739] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:57:55.496 [DEBUG] [Thread-125739] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:57:55.496 [DEBUG] [Thread-125739] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:57:55.496 [DEBUG] [Thread-125739] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:57:55.496 [DEBUG] [Thread-125739] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:57:55.496 [DEBUG] [Thread-125739] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:57:55.497 [DEBUG] [Thread-125739] [transport.py] [_log()] client lang: <none>
2025-11-04T00:57:55.497 [DEBUG] [Thread-125739] [transport.py] [_log()] server lang: <none>
2025-11-04T00:57:55.497 [DEBUG] [Thread-125739] [transport.py] [_log()] kex follows: False
2025-11-04T00:57:55.497 [DEBUG] [Thread-125739] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:57:55.497 [DEBUG] [Thread-125739] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:57:55.497 [DEBUG] [Thread-125739] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:57:55.497 [DEBUG] [Thread-125739] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:57:55.497 [DEBUG] [Thread-125739] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:57:55.498 [DEBUG] [Thread-125739] [transport.py] [_log()] Compression: none
2025-11-04T00:57:55.498 [DEBUG] [Thread-125739] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:57:55.523 [DEBUG] [Thread-125739] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:57:55.528 [DEBUG] [Thread-125739] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:57:55.529 [DEBUG] [Thread-125739] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:57:55.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:57:55.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:57:55.532 [DEBUG] [Thread-125739] [transport.py] [_log()] userauth is OK
2025-11-04T00:57:55.532 [DEBUG] [Thread-125739] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:57:55.532 [DEBUG] [Thread-125739] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:57:55.532 [DEBUG] [Thread-125739] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:57:55.532 [DEBUG] [Thread-125739] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:57:55.551 [INFO] [Thread-125739] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:57:55.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:57:56.199 [DEBUG] [Thread-125739] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:57:56.208 [DEBUG] [Thread-125739] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:57:56.209 [DEBUG] [Thread-125739] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:57:56.241 [DEBUG] [Thread-125739] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:57:56.241 [DEBUG] [Thread-125739] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:57:56.244 [DEBUG] [Thread-125739] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:57:56.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:57:56.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:57:56.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:57:56.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:57:56.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:57:56.265 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:57:56.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:57:56.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:57:56.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:57:56.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.956696 -999.00  +18.10  15.36     18   -6.30 1 1 1 1 1     0    0 24.79 -1.40 ZNESW 14.6 15.4 306.6 20.9 18.2 -24.3 18.2 -23.4 18.0 -23.1 18.3 -23.9
2025-11-04T00:57:56.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:57:56.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:57:56.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.956696
2025-11-04T00:57:56.272 [DEBUG] [Thread-125739] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:57:56.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:57:56.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:57:56.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:57:56.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:57:56.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:57:56.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:57:48', tmtdew=19.25, humidity=42.07, cloud=0.0, wind=19.41, temperature=11.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:57:49', seeing=1.13, atlas_timestamp='2025-11-03T22:57:38.534', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03775000000000084, 0.06974999999999909, -0.003750000000000142, 0.07850000000000001, 0.07150000000000034, 0.015249999999999986, 0.013999999999999346, 0.01425000000000054, 0.10849999999999937, 0.10999999999999943, 0.1432500000000001, 0.0, 0.17099999999999937, 0.10324999999999918, -0.0070000000000014495, 0.04100000000000037, 0.09024999999999928, 0.07899999999999885, 0.18099999999999916, 0.14724999999999966, 0.18399999999999928, 0.23524999999999885, -0.08374999999999844, 0.06475000000000009, 0.07349999999999923, 0.17549999999999955, 0.21775000000000055, 0.1750000000000007, 0.3689999999999998, 0.10600000000000165, 0.12300000000000111, 0.09950000000000081, 0.13574999999999982], zp_timestamp='2025-11-03T22:53:00')
2025-11-04T00:57:56.355 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:57:56.370 [DEBUG] [Thread-125742] [transport.py] [_log()] starting thread (client mode): 0xed43b80
2025-11-04T00:57:56.370 [DEBUG] [Thread-125742] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:57:56.384 [DEBUG] [Thread-125742] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:57:56.384 [INFO] [Thread-125742] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:57:56.392 [DEBUG] [Thread-125742] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:57:56.392 [DEBUG] [Thread-125742] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:57:56.392 [DEBUG] [Thread-125742] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:57:56.392 [DEBUG] [Thread-125742] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:57:56.392 [DEBUG] [Thread-125742] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:57:56.392 [DEBUG] [Thread-125742] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:57:56.392 [DEBUG] [Thread-125742] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:57:56.392 [DEBUG] [Thread-125742] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:57:56.393 [DEBUG] [Thread-125742] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:57:56.393 [DEBUG] [Thread-125742] [transport.py] [_log()] client lang: <none>
2025-11-04T00:57:56.393 [DEBUG] [Thread-125742] [transport.py] [_log()] server lang: <none>
2025-11-04T00:57:56.393 [DEBUG] [Thread-125742] [transport.py] [_log()] kex follows: False
2025-11-04T00:57:56.393 [DEBUG] [Thread-125742] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:57:56.393 [DEBUG] [Thread-125742] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:57:56.393 [DEBUG] [Thread-125742] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:57:56.393 [DEBUG] [Thread-125742] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:57:56.393 [DEBUG] [Thread-125742] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:57:56.393 [DEBUG] [Thread-125742] [transport.py] [_log()] Compression: none
2025-11-04T00:57:56.393 [DEBUG] [Thread-125742] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:57:56.449 [DEBUG] [Thread-125742] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:57:56.449 [DEBUG] [Thread-125742] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:57:56.449 [DEBUG] [Thread-125742] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:57:56.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:57:56.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:57:56.511 [DEBUG] [Thread-125742] [transport.py] [_log()] userauth is OK
2025-11-04T00:57:56.511 [DEBUG] [Thread-125742] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:57:56.511 [DEBUG] [Thread-125742] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:57:56.511 [DEBUG] [Thread-125742] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:57:56.511 [DEBUG] [Thread-125742] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:57:56.527 [INFO] [Thread-125742] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:57:56.527 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:57:56.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:57:57.352 [DEBUG] [Thread-125742] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:57:57.352 [DEBUG] [Thread-125742] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:57:57.403 [DEBUG] [Thread-125742] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:57:57.403 [DEBUG] [Thread-125742] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:57:57.415 [DEBUG] [Thread-125742] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:57:57.426 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:57:57.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:57:57.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:57:57.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:57:57.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:57:57.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:57:57.459 [DEBUG] [Thread-125742] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:57:59.577 [DEBUG] [Thread-125744 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:58:01.095 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:58:14.623 [DEBUG] [Thread-125745 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:58:25.316 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:58:25.317 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:58:27.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:58:27.482 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:58:27.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:58:28.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 58, 21), 19.26, 42.06, 0.0, 18.07, 11.93, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:58:28.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:58:21
2025-11-04T00:58:28.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:58:28.606 [DEBUG] [Thread-125746] [transport.py] [_log()] starting thread (client mode): 0xed5dbd0
2025-11-04T00:58:28.607 [DEBUG] [Thread-125746] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:58:28.618 [DEBUG] [Thread-125746] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:58:28.618 [INFO] [Thread-125746] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:58:28.622 [DEBUG] [Thread-125746] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:58:28.622 [DEBUG] [Thread-125746] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:58:28.623 [DEBUG] [Thread-125746] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:58:28.623 [DEBUG] [Thread-125746] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:58:28.623 [DEBUG] [Thread-125746] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:58:28.623 [DEBUG] [Thread-125746] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:58:28.623 [DEBUG] [Thread-125746] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:58:28.623 [DEBUG] [Thread-125746] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:58:28.623 [DEBUG] [Thread-125746] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:58:28.623 [DEBUG] [Thread-125746] [transport.py] [_log()] client lang: <none>
2025-11-04T00:58:28.623 [DEBUG] [Thread-125746] [transport.py] [_log()] server lang: <none>
2025-11-04T00:58:28.623 [DEBUG] [Thread-125746] [transport.py] [_log()] kex follows: False
2025-11-04T00:58:28.623 [DEBUG] [Thread-125746] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:58:28.623 [DEBUG] [Thread-125746] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:58:28.624 [DEBUG] [Thread-125746] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:58:28.624 [DEBUG] [Thread-125746] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:58:28.624 [DEBUG] [Thread-125746] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:58:28.624 [DEBUG] [Thread-125746] [transport.py] [_log()] Compression: none
2025-11-04T00:58:28.624 [DEBUG] [Thread-125746] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:58:28.657 [DEBUG] [Thread-125746] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:58:28.662 [DEBUG] [Thread-125746] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:58:28.664 [DEBUG] [Thread-125746] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:58:28.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:58:28.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:58:28.670 [DEBUG] [Thread-125746] [transport.py] [_log()] userauth is OK
2025-11-04T00:58:28.671 [DEBUG] [Thread-125746] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:58:28.671 [DEBUG] [Thread-125746] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:58:28.671 [DEBUG] [Thread-125746] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:58:28.671 [DEBUG] [Thread-125746] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:58:28.699 [INFO] [Thread-125746] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:58:28.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:58:29.336 [DEBUG] [Thread-125746] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:58:29.336 [DEBUG] [Thread-125746] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:58:29.345 [DEBUG] [Thread-125746] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:58:29.377 [DEBUG] [Thread-125746] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:58:29.377 [DEBUG] [Thread-125746] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:58:29.380 [DEBUG] [Thread-125746] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:58:29.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:58:29.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:58:29.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:58:29.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:58:29.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:58:29.403 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:58:29.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:58:29.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:58:29.405 [DEBUG] [Thread-125746] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:58:29.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:58:29.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.957043 -999.00  +18.00  16.37     18   -6.40 1 1 1 1 1     0    0 24.75 -2.55 ZNESW 17.9 16.4 303.8 20.4 18.2 -24.3 18.2 -23.3 18.0 -23.1 18.3 -23.9
2025-11-04T00:58:29.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:58:29.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:58:29.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.957043
2025-11-04T00:58:29.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:58:29.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:58:29.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:58:29.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:58:29.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:58:29.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:58:21', tmtdew=19.26, humidity=42.06, cloud=0.0, wind=18.07, temperature=11.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:58:21', seeing=1.06, atlas_timestamp='2025-11-03T22:58:08.515', atlas_cloud=1, atlas_rain=1, zp_data=[0.03575000000000017, 0.09175000000000111, 0.05025000000000013, 0.042500000000000426, 0.0835000000000008, -0.0467499999999994, 0.026999999999999247, 0.02775000000000105, 0.1280000000000001, 0.10749999999999993, 0.13775000000000048, 0.06799999999999962, 0.1504999999999992, -0.024250000000000327, -0.16000000000000014, 0.08399999999999963, 0.07424999999999926, 0.13349999999999973, 0.15899999999999892, 0.16324999999999967, 0.118999999999998, 0.1582499999999989, -0.11025000000000063, 0.0022500000000000853, 0.08299999999999841, 0.21700000000000053, 0.21475000000000044, 0.19799999999999862, 0.3334999999999999, 0.11300000000000132, 0.10900000000000176, 0.1590000000000007, 0.12274999999999991], zp_timestamp='2025-11-03T22:57:00')
2025-11-04T00:58:29.498 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:58:29.512 [DEBUG] [Thread-125749] [transport.py] [_log()] starting thread (client mode): 0xed64cd0
2025-11-04T00:58:29.513 [DEBUG] [Thread-125749] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:58:29.530 [DEBUG] [Thread-125749] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:58:29.530 [INFO] [Thread-125749] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:58:29.542 [DEBUG] [Thread-125749] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:58:29.542 [DEBUG] [Thread-125749] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:58:29.542 [DEBUG] [Thread-125749] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:58:29.542 [DEBUG] [Thread-125749] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:58:29.542 [DEBUG] [Thread-125749] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:58:29.542 [DEBUG] [Thread-125749] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:58:29.542 [DEBUG] [Thread-125749] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:58:29.542 [DEBUG] [Thread-125749] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:58:29.542 [DEBUG] [Thread-125749] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:58:29.542 [DEBUG] [Thread-125749] [transport.py] [_log()] client lang: <none>
2025-11-04T00:58:29.542 [DEBUG] [Thread-125749] [transport.py] [_log()] server lang: <none>
2025-11-04T00:58:29.542 [DEBUG] [Thread-125749] [transport.py] [_log()] kex follows: False
2025-11-04T00:58:29.542 [DEBUG] [Thread-125749] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:58:29.542 [DEBUG] [Thread-125749] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:58:29.542 [DEBUG] [Thread-125749] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:58:29.542 [DEBUG] [Thread-125749] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:58:29.542 [DEBUG] [Thread-125749] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:58:29.542 [DEBUG] [Thread-125749] [transport.py] [_log()] Compression: none
2025-11-04T00:58:29.542 [DEBUG] [Thread-125749] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:58:29.600 [DEBUG] [Thread-125749] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:58:29.600 [DEBUG] [Thread-125749] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:58:29.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:58:29.600 [DEBUG] [Thread-125749] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:58:29.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:58:29.651 [DEBUG] [Thread-125751 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:58:29.656 [DEBUG] [Thread-125749] [transport.py] [_log()] userauth is OK
2025-11-04T00:58:29.656 [DEBUG] [Thread-125749] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:58:29.656 [DEBUG] [Thread-125749] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:58:29.656 [DEBUG] [Thread-125749] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:58:29.656 [DEBUG] [Thread-125749] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:58:29.670 [INFO] [Thread-125749] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:58:29.670 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:58:29.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:58:30.553 [DEBUG] [Thread-125749] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:58:30.553 [DEBUG] [Thread-125749] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:58:30.599 [DEBUG] [Thread-125749] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:58:30.600 [DEBUG] [Thread-125749] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:58:30.612 [DEBUG] [Thread-125749] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:58:30.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:58:30.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:58:30.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:58:30.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:58:30.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:58:30.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:58:30.667 [DEBUG] [Thread-125749] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:58:33.357 [DEBUG] [Thread-125752 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:58:44.737 [DEBUG] [Thread-125753 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:58:59.774 [DEBUG] [Thread-125754 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:59:00.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:59:00.681 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:59:00.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:59:01.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 58, 53), 19.22, 42.1, 0.0, 16.57, 11.92, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:59:01.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:58:53
2025-11-04T00:59:01.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:59:01.781 [DEBUG] [Thread-125755] [transport.py] [_log()] starting thread (client mode): 0xedb0a30
2025-11-04T00:59:01.782 [DEBUG] [Thread-125755] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:59:01.797 [DEBUG] [Thread-125755] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:59:01.797 [INFO] [Thread-125755] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:59:01.801 [DEBUG] [Thread-125755] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:59:01.802 [DEBUG] [Thread-125755] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:59:01.802 [DEBUG] [Thread-125755] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:59:01.802 [DEBUG] [Thread-125755] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:59:01.802 [DEBUG] [Thread-125755] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:59:01.802 [DEBUG] [Thread-125755] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:59:01.802 [DEBUG] [Thread-125755] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:59:01.802 [DEBUG] [Thread-125755] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:59:01.802 [DEBUG] [Thread-125755] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:59:01.802 [DEBUG] [Thread-125755] [transport.py] [_log()] client lang: <none>
2025-11-04T00:59:01.802 [DEBUG] [Thread-125755] [transport.py] [_log()] server lang: <none>
2025-11-04T00:59:01.802 [DEBUG] [Thread-125755] [transport.py] [_log()] kex follows: False
2025-11-04T00:59:01.802 [DEBUG] [Thread-125755] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:59:01.802 [DEBUG] [Thread-125755] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:59:01.802 [DEBUG] [Thread-125755] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:59:01.802 [DEBUG] [Thread-125755] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:59:01.802 [DEBUG] [Thread-125755] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:59:01.802 [DEBUG] [Thread-125755] [transport.py] [_log()] Compression: none
2025-11-04T00:59:01.802 [DEBUG] [Thread-125755] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:59:01.822 [DEBUG] [Thread-125755] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:59:01.826 [DEBUG] [Thread-125755] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:59:01.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:59:01.830 [DEBUG] [Thread-125755] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:59:01.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:59:01.836 [DEBUG] [Thread-125755] [transport.py] [_log()] userauth is OK
2025-11-04T00:59:01.836 [DEBUG] [Thread-125755] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:59:01.836 [DEBUG] [Thread-125755] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:59:01.836 [DEBUG] [Thread-125755] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:59:01.837 [DEBUG] [Thread-125755] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:59:01.863 [INFO] [Thread-125755] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:59:01.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:59:02.438 [DEBUG] [Thread-125755] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:59:02.438 [DEBUG] [Thread-125755] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:59:02.438 [DEBUG] [Thread-125755] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:59:02.479 [DEBUG] [Thread-125755] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:59:02.479 [DEBUG] [Thread-125755] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:59:02.482 [DEBUG] [Thread-125755] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:59:02.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:59:02.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:59:02.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:59:02.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:59:02.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:59:02.501 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:59:02.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:59:02.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:59:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:59:02.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.957390 -999.00  +18.00  16.44     18   -6.30 1 1 1 1 1     0    0 24.47 -3.91 ZNESW 15.6 16.4 311.0 21.0 18.3 -24.5 18.2 -23.5 18.0 -22.9 18.2 -24.0
2025-11-04T00:59:02.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:59:02.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:59:02.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.957390
2025-11-04T00:59:02.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:59:02.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:59:02.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:59:02.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:59:02.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:59:02.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:58:53', tmtdew=19.22, humidity=42.1, cloud=0.0, wind=16.57, temperature=11.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:58:54', seeing=1.16, atlas_timestamp='2025-11-03T22:58:38.496', atlas_cloud=1, atlas_rain=1, zp_data=[0.03575000000000017, 0.09175000000000111, 0.05025000000000013, 0.042500000000000426, 0.0835000000000008, -0.0467499999999994, 0.026999999999999247, 0.02775000000000105, 0.1280000000000001, 0.10749999999999993, 0.13775000000000048, 0.06799999999999962, 0.1504999999999992, -0.024250000000000327, -0.16000000000000014, 0.08399999999999963, 0.07424999999999926, 0.13349999999999973, 0.15899999999999892, 0.16324999999999967, 0.118999999999998, 0.1582499999999989, -0.11025000000000063, 0.0022500000000000853, 0.08299999999999841, 0.21700000000000053, 0.21475000000000044, 0.19799999999999862, 0.3334999999999999, 0.11300000000000132, 0.10900000000000176, 0.1590000000000007, 0.12274999999999991], zp_timestamp='2025-11-03T22:57:00')
2025-11-04T00:59:02.510 [DEBUG] [Thread-125755] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:59:02.583 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:59:02.597 [DEBUG] [Thread-125758] [transport.py] [_log()] starting thread (client mode): 0x1174e050
2025-11-04T00:59:02.597 [DEBUG] [Thread-125758] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:59:02.611 [DEBUG] [Thread-125758] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:59:02.611 [INFO] [Thread-125758] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:59:02.620 [DEBUG] [Thread-125758] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:59:02.620 [DEBUG] [Thread-125758] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:59:02.620 [DEBUG] [Thread-125758] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:59:02.620 [DEBUG] [Thread-125758] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:59:02.620 [DEBUG] [Thread-125758] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:59:02.620 [DEBUG] [Thread-125758] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:59:02.620 [DEBUG] [Thread-125758] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:59:02.620 [DEBUG] [Thread-125758] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:59:02.620 [DEBUG] [Thread-125758] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:59:02.620 [DEBUG] [Thread-125758] [transport.py] [_log()] client lang: <none>
2025-11-04T00:59:02.621 [DEBUG] [Thread-125758] [transport.py] [_log()] server lang: <none>
2025-11-04T00:59:02.621 [DEBUG] [Thread-125758] [transport.py] [_log()] kex follows: False
2025-11-04T00:59:02.621 [DEBUG] [Thread-125758] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:59:02.621 [DEBUG] [Thread-125758] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:59:02.621 [DEBUG] [Thread-125758] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:59:02.621 [DEBUG] [Thread-125758] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:59:02.621 [DEBUG] [Thread-125758] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:59:02.621 [DEBUG] [Thread-125758] [transport.py] [_log()] Compression: none
2025-11-04T00:59:02.621 [DEBUG] [Thread-125758] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:59:02.680 [DEBUG] [Thread-125758] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:59:02.680 [DEBUG] [Thread-125758] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:59:02.680 [DEBUG] [Thread-125758] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:59:02.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:59:02.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:59:02.740 [DEBUG] [Thread-125758] [transport.py] [_log()] userauth is OK
2025-11-04T00:59:02.740 [DEBUG] [Thread-125758] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:59:02.740 [DEBUG] [Thread-125758] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:59:02.740 [DEBUG] [Thread-125758] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:59:02.740 [DEBUG] [Thread-125758] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:59:02.754 [INFO] [Thread-125758] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:59:02.754 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:59:02.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:59:03.640 [DEBUG] [Thread-125758] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:59:03.640 [DEBUG] [Thread-125758] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:59:03.682 [DEBUG] [Thread-125758] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:59:03.682 [DEBUG] [Thread-125758] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:59:03.696 [DEBUG] [Thread-125758] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:59:03.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:59:03.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:59:03.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:59:03.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:59:03.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:59:03.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:59:03.743 [DEBUG] [Thread-125758] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:59:14.811 [DEBUG] [Thread-125760 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:59:23.565 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:59:25.519 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:59:25.520 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:59:29.889 [DEBUG] [Thread-125761 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:59:33.626 [DEBUG] [Thread-125762 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:59:33.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T00:59:33.764 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T00:59:33.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T00:59:34.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 59, 26), 19.23, 42.09, 0.0, 16.39, 11.89, 0, 0, 0, 2, 0, 0),)
2025-11-04T00:59:34.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:59:26
2025-11-04T00:59:34.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T00:59:34.822 [DEBUG] [Thread-125763] [transport.py] [_log()] starting thread (client mode): 0xedb2e30
2025-11-04T00:59:34.822 [DEBUG] [Thread-125763] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:59:34.847 [DEBUG] [Thread-125763] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T00:59:34.848 [INFO] [Thread-125763] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T00:59:34.851 [DEBUG] [Thread-125763] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:59:34.851 [DEBUG] [Thread-125763] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T00:59:34.851 [DEBUG] [Thread-125763] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:59:34.851 [DEBUG] [Thread-125763] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:59:34.851 [DEBUG] [Thread-125763] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:59:34.851 [DEBUG] [Thread-125763] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:59:34.851 [DEBUG] [Thread-125763] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:59:34.851 [DEBUG] [Thread-125763] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:59:34.851 [DEBUG] [Thread-125763] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:59:34.851 [DEBUG] [Thread-125763] [transport.py] [_log()] client lang: <none>
2025-11-04T00:59:34.851 [DEBUG] [Thread-125763] [transport.py] [_log()] server lang: <none>
2025-11-04T00:59:34.851 [DEBUG] [Thread-125763] [transport.py] [_log()] kex follows: False
2025-11-04T00:59:34.852 [DEBUG] [Thread-125763] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:59:34.852 [DEBUG] [Thread-125763] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:59:34.852 [DEBUG] [Thread-125763] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:59:34.853 [DEBUG] [Thread-125763] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:59:34.854 [DEBUG] [Thread-125763] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:59:34.854 [DEBUG] [Thread-125763] [transport.py] [_log()] Compression: none
2025-11-04T00:59:34.854 [DEBUG] [Thread-125763] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:59:34.872 [DEBUG] [Thread-125763] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:59:34.872 [DEBUG] [Thread-125763] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:59:34.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T00:59:34.873 [DEBUG] [Thread-125763] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T00:59:34.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:59:34.876 [DEBUG] [Thread-125763] [transport.py] [_log()] userauth is OK
2025-11-04T00:59:34.876 [DEBUG] [Thread-125763] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:59:34.876 [DEBUG] [Thread-125763] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:59:34.876 [DEBUG] [Thread-125763] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T00:59:34.876 [DEBUG] [Thread-125763] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:59:34.895 [INFO] [Thread-125763] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:59:34.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:59:35.511 [DEBUG] [Thread-125763] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:59:35.511 [DEBUG] [Thread-125763] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:59:35.511 [DEBUG] [Thread-125763] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T00:59:35.553 [DEBUG] [Thread-125763] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:59:35.553 [DEBUG] [Thread-125763] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:59:35.555 [DEBUG] [Thread-125763] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:59:35.566 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:59:35.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T00:59:35.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T00:59:35.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T00:59:35.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:59:35.572 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T00:59:35.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:59:35.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:59:35.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T00:59:35.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.957737 -999.00  +18.00  13.80     18   -6.30 1 1 1 1 1     0    0 24.82 -5.60 ZNESW 16.5 13.8 310.2 25.0 18.3 -24.5 18.2 -23.4 18.0 -22.8 18.2 -23.9
2025-11-04T00:59:35.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T00:59:35.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T00:59:35.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.957737
2025-11-04T00:59:35.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T00:59:35.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T00:59:35.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T00:59:35.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T00:59:35.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T00:59:35.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:59:26', tmtdew=19.23, humidity=42.09, cloud=0.0, wind=16.39, temperature=11.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:59:26', seeing=1.16, atlas_timestamp='2025-11-03T22:59:08.477', atlas_cloud=1, atlas_rain=1, zp_data=[0.03575000000000017, 0.09175000000000111, 0.05025000000000013, 0.042500000000000426, 0.0835000000000008, -0.0467499999999994, 0.026999999999999247, 0.02775000000000105, 0.1280000000000001, 0.10749999999999993, 0.13775000000000048, 0.06799999999999962, 0.1504999999999992, -0.024250000000000327, -0.16000000000000014, 0.08399999999999963, 0.07424999999999926, 0.13349999999999973, 0.15899999999999892, 0.16324999999999967, 0.118999999999998, 0.1582499999999989, -0.11025000000000063, 0.0022500000000000853, 0.08299999999999841, 0.21700000000000053, 0.21475000000000044, 0.19799999999999862, 0.3334999999999999, 0.11300000000000132, 0.10900000000000176, 0.1590000000000007, 0.12274999999999991], zp_timestamp='2025-11-03T22:57:00')
2025-11-04T00:59:35.573 [DEBUG] [Thread-125763] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:59:35.646 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T00:59:35.662 [DEBUG] [Thread-125766] [transport.py] [_log()] starting thread (client mode): 0xedb2d40
2025-11-04T00:59:35.662 [DEBUG] [Thread-125766] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T00:59:35.681 [DEBUG] [Thread-125766] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T00:59:35.681 [INFO] [Thread-125766] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T00:59:35.691 [DEBUG] [Thread-125766] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T00:59:35.691 [DEBUG] [Thread-125766] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T00:59:35.691 [DEBUG] [Thread-125766] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T00:59:35.691 [DEBUG] [Thread-125766] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:59:35.691 [DEBUG] [Thread-125766] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T00:59:35.691 [DEBUG] [Thread-125766] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:59:35.691 [DEBUG] [Thread-125766] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T00:59:35.691 [DEBUG] [Thread-125766] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T00:59:35.691 [DEBUG] [Thread-125766] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T00:59:35.691 [DEBUG] [Thread-125766] [transport.py] [_log()] client lang: <none>
2025-11-04T00:59:35.691 [DEBUG] [Thread-125766] [transport.py] [_log()] server lang: <none>
2025-11-04T00:59:35.691 [DEBUG] [Thread-125766] [transport.py] [_log()] kex follows: False
2025-11-04T00:59:35.691 [DEBUG] [Thread-125766] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T00:59:35.691 [DEBUG] [Thread-125766] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T00:59:35.691 [DEBUG] [Thread-125766] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T00:59:35.691 [DEBUG] [Thread-125766] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T00:59:35.691 [DEBUG] [Thread-125766] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T00:59:35.691 [DEBUG] [Thread-125766] [transport.py] [_log()] Compression: none
2025-11-04T00:59:35.691 [DEBUG] [Thread-125766] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T00:59:35.754 [DEBUG] [Thread-125766] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T00:59:35.754 [DEBUG] [Thread-125766] [transport.py] [_log()] Switch to new keys ...
2025-11-04T00:59:35.754 [DEBUG] [Thread-125766] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T00:59:35.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T00:59:35.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T00:59:35.815 [DEBUG] [Thread-125766] [transport.py] [_log()] userauth is OK
2025-11-04T00:59:35.815 [DEBUG] [Thread-125766] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T00:59:35.815 [DEBUG] [Thread-125766] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T00:59:35.815 [DEBUG] [Thread-125766] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T00:59:35.815 [DEBUG] [Thread-125766] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T00:59:35.830 [INFO] [Thread-125766] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T00:59:35.830 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T00:59:35.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T00:59:36.676 [DEBUG] [Thread-125766] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T00:59:36.686 [DEBUG] [Thread-125766] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T00:59:36.726 [DEBUG] [Thread-125766] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T00:59:36.726 [DEBUG] [Thread-125766] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T00:59:36.739 [DEBUG] [Thread-125766] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T00:59:36.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T00:59:36.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T00:59:36.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T00:59:36.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T00:59:36.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T00:59:36.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T00:59:36.791 [DEBUG] [Thread-125766] [transport.py] [_log()] EOF in transport thread
2025-11-04T00:59:44.922 [DEBUG] [Thread-125768 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T00:59:59.970 [DEBUG] [Thread-125769 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:00:06.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:00:06.811 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:00:06.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:00:07.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 0, 59, 58), 19.17, 42.12, 0.0, 19.73, 11.91, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:00:07.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 00:59:58
2025-11-04T01:00:07.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:00:07.840 [DEBUG] [Thread-125770] [transport.py] [_log()] starting thread (client mode): 0xedb09a0
2025-11-04T01:00:07.840 [DEBUG] [Thread-125770] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:00:07.854 [DEBUG] [Thread-125770] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:00:07.854 [INFO] [Thread-125770] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:00:07.857 [DEBUG] [Thread-125770] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:00:07.857 [DEBUG] [Thread-125770] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:00:07.857 [DEBUG] [Thread-125770] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:00:07.857 [DEBUG] [Thread-125770] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:00:07.857 [DEBUG] [Thread-125770] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:00:07.857 [DEBUG] [Thread-125770] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:00:07.858 [DEBUG] [Thread-125770] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:00:07.858 [DEBUG] [Thread-125770] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:00:07.858 [DEBUG] [Thread-125770] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:00:07.858 [DEBUG] [Thread-125770] [transport.py] [_log()] client lang: <none>
2025-11-04T01:00:07.858 [DEBUG] [Thread-125770] [transport.py] [_log()] server lang: <none>
2025-11-04T01:00:07.858 [DEBUG] [Thread-125770] [transport.py] [_log()] kex follows: False
2025-11-04T01:00:07.858 [DEBUG] [Thread-125770] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:00:07.858 [DEBUG] [Thread-125770] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:00:07.858 [DEBUG] [Thread-125770] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:00:07.858 [DEBUG] [Thread-125770] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:00:07.858 [DEBUG] [Thread-125770] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:00:07.858 [DEBUG] [Thread-125770] [transport.py] [_log()] Compression: none
2025-11-04T01:00:07.858 [DEBUG] [Thread-125770] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:00:07.878 [DEBUG] [Thread-125770] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:00:07.878 [DEBUG] [Thread-125770] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:00:07.879 [DEBUG] [Thread-125770] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:00:07.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:00:07.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:00:07.880 [DEBUG] [Thread-125770] [transport.py] [_log()] userauth is OK
2025-11-04T01:00:07.880 [DEBUG] [Thread-125770] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:00:07.880 [DEBUG] [Thread-125770] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:00:07.880 [DEBUG] [Thread-125770] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:00:07.880 [DEBUG] [Thread-125770] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:00:07.890 [INFO] [Thread-125770] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:00:07.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:00:15.011 [DEBUG] [Thread-125772 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:00:19.623 [DEBUG] [Thread-125770] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:00:19.624 [DEBUG] [Thread-125770] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:00:19.633 [DEBUG] [Thread-125770] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:00:19.664 [DEBUG] [Thread-125770] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:00:19.664 [DEBUG] [Thread-125770] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:00:19.666 [DEBUG] [Thread-125770] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:00:19.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:00:19.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:00:19.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:00:19.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:00:19.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:00:19.825 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:00:19.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:00:19.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:00:19.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:00:19.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.957737 -999.00  +18.00  13.80     18   -6.30 1 1 1 1 1     0    0 24.82 -5.60 ZNESW 16.5 13.8 310.2 25.0 18.3 -24.5 18.2 -23.4 18.0 -22.8 18.2 -23.9
2025-11-04T01:00:19.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:00:19.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:00:19.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.957737
2025-11-04T01:00:19.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:00:19.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:00:19.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:00:19.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:00:19.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:00:19.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T00:59:58', tmtdew=19.17, humidity=42.12, cloud=0.0, wind=19.73, temperature=11.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T00:59:59', seeing=1.07, atlas_timestamp='2025-11-03T22:59:08.477', atlas_cloud=1, atlas_rain=1, zp_data=[0.03575000000000017, 0.09175000000000111, 0.05025000000000013, 0.042500000000000426, 0.0835000000000008, -0.0467499999999994, 0.026999999999999247, 0.02775000000000105, 0.1280000000000001, 0.10749999999999993, 0.13775000000000048, 0.06799999999999962, 0.1504999999999992, -0.024250000000000327, -0.16000000000000014, 0.08399999999999963, 0.07424999999999926, 0.13349999999999973, 0.15899999999999892, 0.16324999999999967, 0.118999999999998, 0.1582499999999989, -0.11025000000000063, 0.0022500000000000853, 0.08299999999999841, 0.21700000000000053, 0.21475000000000044, 0.19799999999999862, 0.3334999999999999, 0.11300000000000132, 0.10900000000000176, 0.1590000000000007, 0.12274999999999991], zp_timestamp='2025-11-03T22:57:00')
2025-11-04T01:00:19.835 [DEBUG] [Thread-125770] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:00:19.908 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:00:19.924 [DEBUG] [Thread-125774] [transport.py] [_log()] starting thread (client mode): 0xed5eb00
2025-11-04T01:00:19.924 [DEBUG] [Thread-125774] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:00:19.940 [DEBUG] [Thread-125774] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:00:19.940 [INFO] [Thread-125774] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:00:19.947 [DEBUG] [Thread-125774] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:00:19.948 [DEBUG] [Thread-125774] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:00:19.948 [DEBUG] [Thread-125774] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:00:19.948 [DEBUG] [Thread-125774] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:00:19.948 [DEBUG] [Thread-125774] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:00:19.948 [DEBUG] [Thread-125774] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:00:19.948 [DEBUG] [Thread-125774] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:00:19.948 [DEBUG] [Thread-125774] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:00:19.948 [DEBUG] [Thread-125774] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:00:19.948 [DEBUG] [Thread-125774] [transport.py] [_log()] client lang: <none>
2025-11-04T01:00:19.948 [DEBUG] [Thread-125774] [transport.py] [_log()] server lang: <none>
2025-11-04T01:00:19.948 [DEBUG] [Thread-125774] [transport.py] [_log()] kex follows: False
2025-11-04T01:00:19.948 [DEBUG] [Thread-125774] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:00:19.948 [DEBUG] [Thread-125774] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:00:19.948 [DEBUG] [Thread-125774] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:00:19.948 [DEBUG] [Thread-125774] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:00:19.948 [DEBUG] [Thread-125774] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:00:19.948 [DEBUG] [Thread-125774] [transport.py] [_log()] Compression: none
2025-11-04T01:00:19.948 [DEBUG] [Thread-125774] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:00:20.005 [DEBUG] [Thread-125774] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:00:20.005 [DEBUG] [Thread-125774] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:00:20.005 [DEBUG] [Thread-125774] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:00:20.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:00:20.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:00:20.065 [DEBUG] [Thread-125774] [transport.py] [_log()] userauth is OK
2025-11-04T01:00:20.065 [DEBUG] [Thread-125774] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:00:20.065 [DEBUG] [Thread-125774] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:00:20.065 [DEBUG] [Thread-125774] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:00:20.065 [DEBUG] [Thread-125774] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:00:20.081 [INFO] [Thread-125774] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:00:20.081 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:00:20.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:00:20.932 [DEBUG] [Thread-125774] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:00:20.932 [DEBUG] [Thread-125774] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:00:20.972 [DEBUG] [Thread-125774] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:00:20.972 [DEBUG] [Thread-125774] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:00:20.982 [DEBUG] [Thread-125774] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:00:20.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:00:20.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:00:20.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:00:21.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:00:21.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:00:21.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:00:21.017 [DEBUG] [Thread-125774] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:00:25.732 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:00:25.733 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:00:30.059 [DEBUG] [Thread-125776 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:00:33.903 [DEBUG] [Thread-125777 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:00:45.188 [DEBUG] [Thread-125778 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:00:51.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:00:51.048 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:00:51.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:00:51.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 0, 31), 19.18, 42.11, 0.0, 18.76, 11.92, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:00:51.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:00:31
2025-11-04T01:00:51.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:00:52.060 [DEBUG] [Thread-125779] [transport.py] [_log()] starting thread (client mode): 0xedb18a0
2025-11-04T01:00:52.060 [DEBUG] [Thread-125779] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:00:52.080 [DEBUG] [Thread-125779] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:00:52.080 [INFO] [Thread-125779] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:00:52.084 [DEBUG] [Thread-125779] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:00:52.084 [DEBUG] [Thread-125779] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:00:52.084 [DEBUG] [Thread-125779] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:00:52.084 [DEBUG] [Thread-125779] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:00:52.084 [DEBUG] [Thread-125779] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:00:52.084 [DEBUG] [Thread-125779] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:00:52.084 [DEBUG] [Thread-125779] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:00:52.084 [DEBUG] [Thread-125779] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:00:52.084 [DEBUG] [Thread-125779] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:00:52.084 [DEBUG] [Thread-125779] [transport.py] [_log()] client lang: <none>
2025-11-04T01:00:52.085 [DEBUG] [Thread-125779] [transport.py] [_log()] server lang: <none>
2025-11-04T01:00:52.085 [DEBUG] [Thread-125779] [transport.py] [_log()] kex follows: False
2025-11-04T01:00:52.085 [DEBUG] [Thread-125779] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:00:52.085 [DEBUG] [Thread-125779] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:00:52.085 [DEBUG] [Thread-125779] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:00:52.085 [DEBUG] [Thread-125779] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:00:52.085 [DEBUG] [Thread-125779] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:00:52.085 [DEBUG] [Thread-125779] [transport.py] [_log()] Compression: none
2025-11-04T01:00:52.085 [DEBUG] [Thread-125779] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:00:52.104 [DEBUG] [Thread-125779] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:00:52.104 [DEBUG] [Thread-125779] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:00:52.105 [DEBUG] [Thread-125779] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:00:52.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:00:52.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:00:52.107 [DEBUG] [Thread-125779] [transport.py] [_log()] userauth is OK
2025-11-04T01:00:52.107 [DEBUG] [Thread-125779] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:00:52.107 [DEBUG] [Thread-125779] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:00:52.108 [DEBUG] [Thread-125779] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:00:52.108 [DEBUG] [Thread-125779] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:00:52.142 [INFO] [Thread-125779] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:00:52.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:00:52.795 [DEBUG] [Thread-125779] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:00:52.796 [DEBUG] [Thread-125779] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:00:52.796 [DEBUG] [Thread-125779] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:00:52.837 [DEBUG] [Thread-125779] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:00:52.837 [DEBUG] [Thread-125779] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:00:52.840 [DEBUG] [Thread-125779] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:00:52.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:00:52.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:00:52.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:00:52.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:00:52.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:00:52.876 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:00:52.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:00:52.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:00:52.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:00:52.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.958084 -999.00  +17.90  15.47     18   -6.40 1 1 1 1 1     0    0 24.13 -6.72 ZNESW 14.8 15.5 303.6 18.8 18.3 -24.4 18.2 -23.4 18.0 -23.1 18.2 -24.0
2025-11-04T01:00:52.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:00:52.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:00:52.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.958084
2025-11-04T01:00:52.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:00:52.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:00:52.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:00:52.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:00:52.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:00:52.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:00:31', tmtdew=19.18, humidity=42.11, cloud=0.0, wind=18.76, temperature=11.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:00:31', seeing=1.07, atlas_timestamp='2025-11-03T22:59:38.458', atlas_cloud=1, atlas_rain=1, zp_data=[0.03575000000000017, 0.09175000000000111, 0.05025000000000013, 0.042500000000000426, 0.0835000000000008, -0.0467499999999994, 0.026999999999999247, 0.02775000000000105, 0.1280000000000001, 0.10749999999999993, 0.13775000000000048, 0.06799999999999962, 0.1504999999999992, -0.024250000000000327, -0.16000000000000014, 0.08399999999999963, 0.07424999999999926, 0.13349999999999973, 0.15899999999999892, 0.16324999999999967, 0.118999999999998, 0.1582499999999989, -0.11025000000000063, 0.0022500000000000853, 0.08299999999999841, 0.21700000000000053, 0.21475000000000044, 0.19799999999999862, 0.3334999999999999, 0.11300000000000132, 0.10900000000000176, 0.1590000000000007, 0.12274999999999991], zp_timestamp='2025-11-03T22:57:00')
2025-11-04T01:00:52.881 [DEBUG] [Thread-125779] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:00:52.965 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:00:52.980 [DEBUG] [Thread-125782] [transport.py] [_log()] starting thread (client mode): 0xedb3130
2025-11-04T01:00:52.981 [DEBUG] [Thread-125782] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:00:52.997 [DEBUG] [Thread-125782] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:00:52.997 [INFO] [Thread-125782] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:00:53.007 [DEBUG] [Thread-125782] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:00:53.007 [DEBUG] [Thread-125782] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:00:53.007 [DEBUG] [Thread-125782] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:00:53.007 [DEBUG] [Thread-125782] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:00:53.007 [DEBUG] [Thread-125782] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:00:53.007 [DEBUG] [Thread-125782] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:00:53.007 [DEBUG] [Thread-125782] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:00:53.008 [DEBUG] [Thread-125782] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:00:53.008 [DEBUG] [Thread-125782] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:00:53.008 [DEBUG] [Thread-125782] [transport.py] [_log()] client lang: <none>
2025-11-04T01:00:53.008 [DEBUG] [Thread-125782] [transport.py] [_log()] server lang: <none>
2025-11-04T01:00:53.008 [DEBUG] [Thread-125782] [transport.py] [_log()] kex follows: False
2025-11-04T01:00:53.008 [DEBUG] [Thread-125782] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:00:53.008 [DEBUG] [Thread-125782] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:00:53.008 [DEBUG] [Thread-125782] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:00:53.008 [DEBUG] [Thread-125782] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:00:53.008 [DEBUG] [Thread-125782] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:00:53.008 [DEBUG] [Thread-125782] [transport.py] [_log()] Compression: none
2025-11-04T01:00:53.008 [DEBUG] [Thread-125782] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:00:53.071 [DEBUG] [Thread-125782] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:00:53.072 [DEBUG] [Thread-125782] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:00:53.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:00:53.073 [DEBUG] [Thread-125782] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:00:53.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:00:53.136 [DEBUG] [Thread-125782] [transport.py] [_log()] userauth is OK
2025-11-04T01:00:53.136 [DEBUG] [Thread-125782] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:00:53.136 [DEBUG] [Thread-125782] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:00:53.136 [DEBUG] [Thread-125782] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:00:53.136 [DEBUG] [Thread-125782] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:00:53.150 [INFO] [Thread-125782] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:00:53.150 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:00:53.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:00:53.982 [DEBUG] [Thread-125782] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:00:53.982 [DEBUG] [Thread-125782] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:00:54.034 [DEBUG] [Thread-125782] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:00:54.034 [DEBUG] [Thread-125782] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:00:54.047 [DEBUG] [Thread-125782] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:00:54.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:00:54.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:00:54.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:00:54.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:00:54.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:00:54.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:00:54.091 [DEBUG] [Thread-125782] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:01:00.218 [DEBUG] [Thread-125784 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:01:15.268 [DEBUG] [Thread-125785 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:01:24.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:01:24.099 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:01:24.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:01:24.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 1, 3), 19.18, 42.1, 0.0, 18.42, 11.89, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:01:24.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:01:03
2025-11-04T01:01:25.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:01:25.312 [DEBUG] [Thread-125786] [transport.py] [_log()] starting thread (client mode): 0xedb1720
2025-11-04T01:01:25.312 [DEBUG] [Thread-125786] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:01:25.330 [DEBUG] [Thread-125786] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:01:25.330 [INFO] [Thread-125786] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:01:25.333 [DEBUG] [Thread-125786] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:01:25.333 [DEBUG] [Thread-125786] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:01:25.333 [DEBUG] [Thread-125786] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:01:25.333 [DEBUG] [Thread-125786] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:01:25.333 [DEBUG] [Thread-125786] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:01:25.333 [DEBUG] [Thread-125786] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:01:25.333 [DEBUG] [Thread-125786] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:01:25.333 [DEBUG] [Thread-125786] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:01:25.333 [DEBUG] [Thread-125786] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:01:25.333 [DEBUG] [Thread-125786] [transport.py] [_log()] client lang: <none>
2025-11-04T01:01:25.333 [DEBUG] [Thread-125786] [transport.py] [_log()] server lang: <none>
2025-11-04T01:01:25.334 [DEBUG] [Thread-125786] [transport.py] [_log()] kex follows: False
2025-11-04T01:01:25.334 [DEBUG] [Thread-125786] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:01:25.334 [DEBUG] [Thread-125786] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:01:25.334 [DEBUG] [Thread-125786] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:01:25.334 [DEBUG] [Thread-125786] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:01:25.334 [DEBUG] [Thread-125786] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:01:25.334 [DEBUG] [Thread-125786] [transport.py] [_log()] Compression: none
2025-11-04T01:01:25.334 [DEBUG] [Thread-125786] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:01:25.353 [DEBUG] [Thread-125786] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:01:25.354 [DEBUG] [Thread-125786] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:01:25.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:01:25.355 [DEBUG] [Thread-125786] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:01:25.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:01:25.396 [DEBUG] [Thread-125786] [transport.py] [_log()] userauth is OK
2025-11-04T01:01:25.396 [DEBUG] [Thread-125786] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:01:25.396 [DEBUG] [Thread-125786] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:01:25.396 [DEBUG] [Thread-125786] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:01:25.396 [DEBUG] [Thread-125786] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:01:25.413 [INFO] [Thread-125786] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:01:25.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:01:25.936 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:01:25.937 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:01:26.222 [DEBUG] [Thread-125786] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:01:26.222 [DEBUG] [Thread-125786] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:01:26.222 [DEBUG] [Thread-125786] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:01:26.264 [DEBUG] [Thread-125786] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:01:26.264 [DEBUG] [Thread-125786] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:01:26.266 [DEBUG] [Thread-125786] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:01:26.278 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:01:26.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:01:26.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:01:26.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:01:26.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:01:26.286 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:01:26.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:01:26.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:01:26.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:01:26.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.958779 -999.00  +18.00  20.87     18   -6.30 1 1 1 1 1     0    0 23.96 -10.01 ZNESW 18.9 20.9 309.8 21.3 18.2 -24.4 18.2 -23.4 17.9 -22.7 18.2 -23.9
2025-11-04T01:01:26.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:01:26.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:01:26.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.958779
2025-11-04T01:01:26.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:01:26.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:01:26.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:01:26.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:01:26.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:01:26.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:01:03', tmtdew=19.18, humidity=42.1, cloud=0.0, wind=18.42, temperature=11.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:01:04', seeing=1.15, atlas_timestamp='2025-11-03T23:00:38.506', atlas_cloud=1, atlas_rain=1, zp_data=[0.004249999999998977, 0.0007500000000000284, 0.07125000000000092, 0.06850000000000023, 0.0045000000000001705, -0.1297499999999996, -0.04800000000000004, -0.057749999999998636, 0.07649999999999935, 0.046499999999999986, 0.11175000000000068, 0.012500000000001066, 0.07399999999999984, -0.008250000000000313, -0.03450000000000131, 0.04449999999999932, 0.04974999999999952, 0.13699999999999868, 0.19799999999999862, 0.15674999999999883, 0.17549999999999955, 0.15524999999999878, 0.05825000000000102, 0.003750000000000142, 0.009999999999999787, 0.1695000000000011, 0.19725000000000037, 0.1899999999999995, 0.24650000000000016, 0.04400000000000048, 0.12049999999999983, 0.09000000000000163, 0.05224999999999902], zp_timestamp='2025-11-03T22:59:00')
2025-11-04T01:01:26.295 [DEBUG] [Thread-125786] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:01:26.370 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:01:26.382 [DEBUG] [Thread-125789] [transport.py] [_log()] starting thread (client mode): 0xedb1ae0
2025-11-04T01:01:26.382 [DEBUG] [Thread-125789] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:01:26.398 [DEBUG] [Thread-125789] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:01:26.398 [INFO] [Thread-125789] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:01:26.408 [DEBUG] [Thread-125789] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:01:26.408 [DEBUG] [Thread-125789] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:01:26.408 [DEBUG] [Thread-125789] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:01:26.408 [DEBUG] [Thread-125789] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:01:26.408 [DEBUG] [Thread-125789] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:01:26.408 [DEBUG] [Thread-125789] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:01:26.408 [DEBUG] [Thread-125789] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:01:26.408 [DEBUG] [Thread-125789] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:01:26.408 [DEBUG] [Thread-125789] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:01:26.408 [DEBUG] [Thread-125789] [transport.py] [_log()] client lang: <none>
2025-11-04T01:01:26.408 [DEBUG] [Thread-125789] [transport.py] [_log()] server lang: <none>
2025-11-04T01:01:26.408 [DEBUG] [Thread-125789] [transport.py] [_log()] kex follows: False
2025-11-04T01:01:26.408 [DEBUG] [Thread-125789] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:01:26.408 [DEBUG] [Thread-125789] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:01:26.408 [DEBUG] [Thread-125789] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:01:26.408 [DEBUG] [Thread-125789] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:01:26.408 [DEBUG] [Thread-125789] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:01:26.408 [DEBUG] [Thread-125789] [transport.py] [_log()] Compression: none
2025-11-04T01:01:26.408 [DEBUG] [Thread-125789] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:01:26.468 [DEBUG] [Thread-125789] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:01:26.468 [DEBUG] [Thread-125789] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:01:26.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:01:26.468 [DEBUG] [Thread-125789] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:01:26.469 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:01:26.528 [DEBUG] [Thread-125789] [transport.py] [_log()] userauth is OK
2025-11-04T01:01:26.528 [DEBUG] [Thread-125789] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:01:26.528 [DEBUG] [Thread-125789] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:01:26.528 [DEBUG] [Thread-125789] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:01:26.528 [DEBUG] [Thread-125789] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:01:26.542 [INFO] [Thread-125789] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:01:26.543 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:01:26.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:01:27.393 [DEBUG] [Thread-125789] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:01:27.393 [DEBUG] [Thread-125789] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:01:27.442 [DEBUG] [Thread-125789] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:01:27.442 [DEBUG] [Thread-125789] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:01:27.453 [DEBUG] [Thread-125789] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:01:27.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:01:27.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:01:27.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:01:27.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:01:27.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:01:27.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:01:27.490 [DEBUG] [Thread-125789] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:01:29.525 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:01:30.299 [DEBUG] [Thread-125791 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:01:32.833 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:01:34.087 [DEBUG] [Thread-125792 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:01:37.860 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:01:44.238 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:01:45.361 [DEBUG] [Thread-125793 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:01:57.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:01:57.496 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:01:57.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:01:58.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 1, 36), 19.16, 42.12, 0.0, 19.02, 11.84, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:01:58.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:01:36
2025-11-04T01:01:58.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:01:58.639 [DEBUG] [Thread-125794] [transport.py] [_log()] starting thread (client mode): 0xedb10f0
2025-11-04T01:01:58.639 [DEBUG] [Thread-125794] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:01:58.657 [DEBUG] [Thread-125794] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:01:58.657 [INFO] [Thread-125794] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:01:58.661 [DEBUG] [Thread-125794] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:01:58.661 [DEBUG] [Thread-125794] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:01:58.661 [DEBUG] [Thread-125794] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:01:58.661 [DEBUG] [Thread-125794] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:01:58.661 [DEBUG] [Thread-125794] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:01:58.661 [DEBUG] [Thread-125794] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:01:58.661 [DEBUG] [Thread-125794] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:01:58.661 [DEBUG] [Thread-125794] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:01:58.661 [DEBUG] [Thread-125794] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:01:58.661 [DEBUG] [Thread-125794] [transport.py] [_log()] client lang: <none>
2025-11-04T01:01:58.661 [DEBUG] [Thread-125794] [transport.py] [_log()] server lang: <none>
2025-11-04T01:01:58.661 [DEBUG] [Thread-125794] [transport.py] [_log()] kex follows: False
2025-11-04T01:01:58.662 [DEBUG] [Thread-125794] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:01:58.662 [DEBUG] [Thread-125794] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:01:58.662 [DEBUG] [Thread-125794] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:01:58.662 [DEBUG] [Thread-125794] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:01:58.662 [DEBUG] [Thread-125794] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:01:58.662 [DEBUG] [Thread-125794] [transport.py] [_log()] Compression: none
2025-11-04T01:01:58.662 [DEBUG] [Thread-125794] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:01:58.682 [DEBUG] [Thread-125794] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:01:58.684 [DEBUG] [Thread-125794] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:01:58.685 [DEBUG] [Thread-125794] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:01:58.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:01:58.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:01:58.725 [DEBUG] [Thread-125794] [transport.py] [_log()] userauth is OK
2025-11-04T01:01:58.725 [DEBUG] [Thread-125794] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:01:58.725 [DEBUG] [Thread-125794] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:01:58.725 [DEBUG] [Thread-125794] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:01:58.726 [DEBUG] [Thread-125794] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:01:58.748 [INFO] [Thread-125794] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:01:58.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:01:59.427 [DEBUG] [Thread-125794] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:01:59.428 [DEBUG] [Thread-125794] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:01:59.428 [DEBUG] [Thread-125794] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:01:59.469 [DEBUG] [Thread-125794] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:01:59.469 [DEBUG] [Thread-125794] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:01:59.481 [DEBUG] [Thread-125794] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:01:59.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:01:59.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:01:59.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:01:59.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:01:59.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:01:59.510 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:01:59.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:01:59.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:01:59.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:01:59.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.959126 -999.00  +18.00  19.66     18   -6.30 1 1 1 1 1     0    0 24.36 -9.80 ZNESW 20.7 19.7 303.0 24.1 18.3 -24.2 18.2 -23.3 18.0 -22.7 18.3 -24.0
2025-11-04T01:01:59.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:01:59.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:01:59.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.959126
2025-11-04T01:01:59.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:01:59.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:01:59.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:01:59.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:01:59.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:01:59.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:01:36', tmtdew=19.16, humidity=42.12, cloud=0.0, wind=19.02, temperature=11.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:01:36', seeing=1.15, atlas_timestamp='2025-11-03T23:01:08.486', atlas_cloud=1, atlas_rain=1, zp_data=[0.004249999999998977, 0.0007500000000000284, 0.07125000000000092, 0.06850000000000023, 0.0045000000000001705, -0.1297499999999996, -0.04800000000000004, -0.057749999999998636, 0.07649999999999935, 0.046499999999999986, 0.11175000000000068, 0.012500000000001066, 0.07399999999999984, -0.008250000000000313, -0.03450000000000131, 0.04449999999999932, 0.04974999999999952, 0.13699999999999868, 0.19799999999999862, 0.15674999999999883, 0.17549999999999955, 0.15524999999999878, 0.05825000000000102, 0.003750000000000142, 0.009999999999999787, 0.1695000000000011, 0.19725000000000037, 0.1899999999999995, 0.24650000000000016, 0.04400000000000048, 0.12049999999999983, 0.09000000000000163, 0.05224999999999902], zp_timestamp='2025-11-03T22:59:00')
2025-11-04T01:01:59.518 [DEBUG] [Thread-125794] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:01:59.601 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:01:59.614 [DEBUG] [Thread-125797] [transport.py] [_log()] starting thread (client mode): 0x11762740
2025-11-04T01:01:59.615 [DEBUG] [Thread-125797] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:01:59.629 [DEBUG] [Thread-125797] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:01:59.630 [INFO] [Thread-125797] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:01:59.637 [DEBUG] [Thread-125797] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:01:59.638 [DEBUG] [Thread-125797] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:01:59.638 [DEBUG] [Thread-125797] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:01:59.638 [DEBUG] [Thread-125797] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:01:59.638 [DEBUG] [Thread-125797] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:01:59.638 [DEBUG] [Thread-125797] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:01:59.638 [DEBUG] [Thread-125797] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:01:59.639 [DEBUG] [Thread-125797] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:01:59.639 [DEBUG] [Thread-125797] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:01:59.639 [DEBUG] [Thread-125797] [transport.py] [_log()] client lang: <none>
2025-11-04T01:01:59.639 [DEBUG] [Thread-125797] [transport.py] [_log()] server lang: <none>
2025-11-04T01:01:59.639 [DEBUG] [Thread-125797] [transport.py] [_log()] kex follows: False
2025-11-04T01:01:59.639 [DEBUG] [Thread-125797] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:01:59.639 [DEBUG] [Thread-125797] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:01:59.639 [DEBUG] [Thread-125797] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:01:59.639 [DEBUG] [Thread-125797] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:01:59.639 [DEBUG] [Thread-125797] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:01:59.639 [DEBUG] [Thread-125797] [transport.py] [_log()] Compression: none
2025-11-04T01:01:59.639 [DEBUG] [Thread-125797] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:01:59.696 [DEBUG] [Thread-125797] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:01:59.697 [DEBUG] [Thread-125797] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:01:59.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:01:59.698 [DEBUG] [Thread-125797] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:01:59.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:01:59.758 [DEBUG] [Thread-125797] [transport.py] [_log()] userauth is OK
2025-11-04T01:01:59.758 [DEBUG] [Thread-125797] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:01:59.758 [DEBUG] [Thread-125797] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:01:59.758 [DEBUG] [Thread-125797] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:01:59.758 [DEBUG] [Thread-125797] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:01:59.777 [INFO] [Thread-125797] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:01:59.778 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:01:59.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:02:00.395 [DEBUG] [Thread-125799 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:02:00.633 [DEBUG] [Thread-125797] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:02:00.633 [DEBUG] [Thread-125797] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:02:00.685 [DEBUG] [Thread-125797] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:02:00.685 [DEBUG] [Thread-125797] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:02:00.694 [DEBUG] [Thread-125797] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:02:00.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:02:00.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:02:00.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:02:00.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:02:00.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:02:00.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:02:00.735 [DEBUG] [Thread-125797] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:02:02.617 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:02:06.996 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:02:15.487 [DEBUG] [Thread-125800 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:02:26.138 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:02:26.139 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:02:26.370 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:02:30.526 [DEBUG] [Thread-125801 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:02:30.745 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:02:30.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:02:30.759 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:02:30.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:02:31.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 2, 8), 19.16, 42.12, 0.0, 19.02, 11.83, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:02:31.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:02:08
2025-11-04T01:02:31.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:02:31.996 [DEBUG] [Thread-125802] [transport.py] [_log()] starting thread (client mode): 0x11762ec0
2025-11-04T01:02:31.997 [DEBUG] [Thread-125802] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:02:32.012 [DEBUG] [Thread-125802] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:02:32.012 [INFO] [Thread-125802] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:02:32.015 [DEBUG] [Thread-125802] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:02:32.015 [DEBUG] [Thread-125802] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:02:32.015 [DEBUG] [Thread-125802] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:02:32.016 [DEBUG] [Thread-125802] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:02:32.016 [DEBUG] [Thread-125802] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:02:32.016 [DEBUG] [Thread-125802] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:02:32.016 [DEBUG] [Thread-125802] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:02:32.016 [DEBUG] [Thread-125802] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:02:32.016 [DEBUG] [Thread-125802] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:02:32.016 [DEBUG] [Thread-125802] [transport.py] [_log()] client lang: <none>
2025-11-04T01:02:32.016 [DEBUG] [Thread-125802] [transport.py] [_log()] server lang: <none>
2025-11-04T01:02:32.016 [DEBUG] [Thread-125802] [transport.py] [_log()] kex follows: False
2025-11-04T01:02:32.016 [DEBUG] [Thread-125802] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:02:32.017 [DEBUG] [Thread-125802] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:02:32.017 [DEBUG] [Thread-125802] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:02:32.017 [DEBUG] [Thread-125802] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:02:32.017 [DEBUG] [Thread-125802] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:02:32.018 [DEBUG] [Thread-125802] [transport.py] [_log()] Compression: none
2025-11-04T01:02:32.018 [DEBUG] [Thread-125802] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:02:32.059 [DEBUG] [Thread-125802] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:02:32.064 [DEBUG] [Thread-125802] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:02:32.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:02:32.066 [DEBUG] [Thread-125802] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:02:32.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:02:32.070 [DEBUG] [Thread-125802] [transport.py] [_log()] userauth is OK
2025-11-04T01:02:32.071 [DEBUG] [Thread-125802] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:02:32.071 [DEBUG] [Thread-125802] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:02:32.071 [DEBUG] [Thread-125802] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:02:32.071 [DEBUG] [Thread-125802] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:02:32.102 [INFO] [Thread-125802] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:02:32.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:02:32.905 [DEBUG] [Thread-125802] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:02:32.905 [DEBUG] [Thread-125802] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:02:32.915 [DEBUG] [Thread-125802] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:02:32.947 [DEBUG] [Thread-125802] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:02:32.947 [DEBUG] [Thread-125802] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:02:32.949 [DEBUG] [Thread-125802] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:02:32.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:02:32.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:02:32.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:02:32.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:02:32.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:02:32.971 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:02:32.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:02:32.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:02:32.973 [DEBUG] [Thread-125802] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:02:32.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:02:32.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.959473 -999.00  +18.00  18.53     18   -6.30 1 1 1 1 1     0    0 24.33 -11.00 ZNESW 18.9 18.5 311.6 22.0 18.3 -24.3 18.2 -23.2 17.9 -23.0 18.2 -23.9
2025-11-04T01:02:32.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:02:32.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:02:32.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.959473
2025-11-04T01:02:32.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:02:32.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:02:32.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:02:32.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:02:32.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:02:33.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:02:08', tmtdew=19.16, humidity=42.12, cloud=0.0, wind=19.02, temperature=11.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:02:09', seeing=1.14, atlas_timestamp='2025-11-03T23:01:38.467', atlas_cloud=1, atlas_rain=1, zp_data=[0.004249999999998977, 0.0007500000000000284, 0.07125000000000092, 0.06850000000000023, 0.0045000000000001705, -0.1297499999999996, -0.04800000000000004, -0.057749999999998636, 0.07649999999999935, 0.046499999999999986, 0.11175000000000068, 0.012500000000001066, 0.07399999999999984, -0.008250000000000313, -0.03450000000000131, 0.04449999999999932, 0.04974999999999952, 0.13699999999999868, 0.19799999999999862, 0.15674999999999883, 0.17549999999999955, 0.15524999999999878, 0.05825000000000102, 0.003750000000000142, 0.009999999999999787, 0.1695000000000011, 0.19725000000000037, 0.1899999999999995, 0.24650000000000016, 0.04400000000000048, 0.12049999999999983, 0.09000000000000163, 0.05224999999999902], zp_timestamp='2025-11-03T22:59:00')
2025-11-04T01:02:33.080 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:02:33.094 [DEBUG] [Thread-125805] [transport.py] [_log()] starting thread (client mode): 0x8199a50
2025-11-04T01:02:33.094 [DEBUG] [Thread-125805] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:02:33.108 [DEBUG] [Thread-125805] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:02:33.108 [INFO] [Thread-125805] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:02:33.115 [DEBUG] [Thread-125805] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:02:33.116 [DEBUG] [Thread-125805] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:02:33.116 [DEBUG] [Thread-125805] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:02:33.116 [DEBUG] [Thread-125805] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:02:33.116 [DEBUG] [Thread-125805] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:02:33.116 [DEBUG] [Thread-125805] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:02:33.116 [DEBUG] [Thread-125805] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:02:33.116 [DEBUG] [Thread-125805] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:02:33.116 [DEBUG] [Thread-125805] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:02:33.116 [DEBUG] [Thread-125805] [transport.py] [_log()] client lang: <none>
2025-11-04T01:02:33.116 [DEBUG] [Thread-125805] [transport.py] [_log()] server lang: <none>
2025-11-04T01:02:33.116 [DEBUG] [Thread-125805] [transport.py] [_log()] kex follows: False
2025-11-04T01:02:33.116 [DEBUG] [Thread-125805] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:02:33.116 [DEBUG] [Thread-125805] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:02:33.116 [DEBUG] [Thread-125805] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:02:33.116 [DEBUG] [Thread-125805] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:02:33.116 [DEBUG] [Thread-125805] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:02:33.116 [DEBUG] [Thread-125805] [transport.py] [_log()] Compression: none
2025-11-04T01:02:33.116 [DEBUG] [Thread-125805] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:02:33.178 [DEBUG] [Thread-125805] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:02:33.178 [DEBUG] [Thread-125805] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:02:33.178 [DEBUG] [Thread-125805] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:02:33.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:02:33.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:02:33.236 [DEBUG] [Thread-125805] [transport.py] [_log()] userauth is OK
2025-11-04T01:02:33.236 [DEBUG] [Thread-125805] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:02:33.236 [DEBUG] [Thread-125805] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:02:33.236 [DEBUG] [Thread-125805] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:02:33.236 [DEBUG] [Thread-125805] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:02:33.259 [INFO] [Thread-125805] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:02:33.259 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:02:33.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:02:34.091 [DEBUG] [Thread-125805] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:02:34.091 [DEBUG] [Thread-125805] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:02:34.139 [DEBUG] [Thread-125805] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:02:34.140 [DEBUG] [Thread-125805] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:02:34.150 [DEBUG] [Thread-125805] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:02:34.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:02:34.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:02:34.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:02:34.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:02:34.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:02:34.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:02:34.192 [DEBUG] [Thread-125805] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:02:34.370 [DEBUG] [Thread-125807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:02:37.497 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:02:41.877 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:02:45.558 [DEBUG] [Thread-125808 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:03:00.683 [DEBUG] [Thread-125809 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:03:04.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:03:04.219 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:03:04.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:03:05.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 2, 41), 19.13, 42.15, 0.0, 17.31, 11.89, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:03:05.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:02:41
2025-11-04T01:03:05.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:03:05.773 [DEBUG] [Thread-125810] [transport.py] [_log()] starting thread (client mode): 0x819ab30
2025-11-04T01:03:05.774 [DEBUG] [Thread-125810] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:03:05.774 [DEBUG] [Thread-125810] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:03:05.774 [INFO] [Thread-125810] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:03:05.779 [DEBUG] [Thread-125810] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:03:05.779 [DEBUG] [Thread-125810] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:03:05.779 [DEBUG] [Thread-125810] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:03:05.779 [DEBUG] [Thread-125810] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:03:05.779 [DEBUG] [Thread-125810] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:03:05.779 [DEBUG] [Thread-125810] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:03:05.780 [DEBUG] [Thread-125810] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:03:05.780 [DEBUG] [Thread-125810] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:03:05.780 [DEBUG] [Thread-125810] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:03:05.780 [DEBUG] [Thread-125810] [transport.py] [_log()] client lang: <none>
2025-11-04T01:03:05.780 [DEBUG] [Thread-125810] [transport.py] [_log()] server lang: <none>
2025-11-04T01:03:05.780 [DEBUG] [Thread-125810] [transport.py] [_log()] kex follows: False
2025-11-04T01:03:05.780 [DEBUG] [Thread-125810] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:03:05.781 [DEBUG] [Thread-125810] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:03:05.781 [DEBUG] [Thread-125810] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:03:05.781 [DEBUG] [Thread-125810] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:03:05.781 [DEBUG] [Thread-125810] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:03:05.781 [DEBUG] [Thread-125810] [transport.py] [_log()] Compression: none
2025-11-04T01:03:05.781 [DEBUG] [Thread-125810] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:03:05.806 [DEBUG] [Thread-125810] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:03:05.806 [DEBUG] [Thread-125810] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:03:05.807 [DEBUG] [Thread-125810] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:03:05.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:03:05.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:03:05.808 [DEBUG] [Thread-125810] [transport.py] [_log()] userauth is OK
2025-11-04T01:03:05.808 [DEBUG] [Thread-125810] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:03:05.808 [DEBUG] [Thread-125810] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:03:05.808 [DEBUG] [Thread-125810] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:03:05.808 [DEBUG] [Thread-125810] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:03:05.824 [INFO] [Thread-125810] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:03:05.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:03:06.463 [DEBUG] [Thread-125810] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:03:06.464 [DEBUG] [Thread-125810] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:03:06.465 [DEBUG] [Thread-125810] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:03:06.505 [DEBUG] [Thread-125810] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:03:06.505 [DEBUG] [Thread-125810] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:03:06.509 [DEBUG] [Thread-125810] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:03:06.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:03:06.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:03:06.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:03:06.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:03:06.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:03:06.539 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:03:06.539 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:03:06.539 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:03:06.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:03:06.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.960168 -999.00  +18.00  17.29     18   -6.30 1 1 1 1 1     0    0 24.27 -14.03 ZNESW 16.9 17.3 306.2 21.1 18.2 -24.3 18.2 -23.3 18.0 -23.0 18.2 -24.0
2025-11-04T01:03:06.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:03:06.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:03:06.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.960168
2025-11-04T01:03:06.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:03:06.541 [DEBUG] [Thread-125810] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:03:06.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:03:06.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:03:06.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:03:06.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:03:06.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:02:41', tmtdew=19.13, humidity=42.15, cloud=0.0, wind=17.31, temperature=11.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:02:41', seeing=1.14, atlas_timestamp='2025-11-03T23:02:38.515', atlas_cloud=1, atlas_rain=1, zp_data=[0.004249999999998977, 0.0007500000000000284, 0.07125000000000092, 0.06850000000000023, 0.0045000000000001705, -0.1297499999999996, -0.04800000000000004, -0.057749999999998636, 0.07649999999999935, 0.046499999999999986, 0.11175000000000068, 0.012500000000001066, 0.07399999999999984, -0.008250000000000313, -0.03450000000000131, 0.04449999999999932, 0.04974999999999952, 0.13699999999999868, 0.19799999999999862, 0.15674999999999883, 0.17549999999999955, 0.15524999999999878, 0.05825000000000102, 0.003750000000000142, 0.009999999999999787, 0.1695000000000011, 0.19725000000000037, 0.1899999999999995, 0.24650000000000016, 0.04400000000000048, 0.12049999999999983, 0.09000000000000163, 0.05224999999999902], zp_timestamp='2025-11-03T22:59:00')
2025-11-04T01:03:06.615 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:03:06.626 [DEBUG] [Thread-125813] [transport.py] [_log()] starting thread (client mode): 0x117bf460
2025-11-04T01:03:06.627 [DEBUG] [Thread-125813] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:03:06.642 [DEBUG] [Thread-125813] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:03:06.642 [INFO] [Thread-125813] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:03:06.649 [DEBUG] [Thread-125813] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:03:06.650 [DEBUG] [Thread-125813] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:03:06.650 [DEBUG] [Thread-125813] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:03:06.650 [DEBUG] [Thread-125813] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:03:06.650 [DEBUG] [Thread-125813] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:03:06.650 [DEBUG] [Thread-125813] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:03:06.650 [DEBUG] [Thread-125813] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:03:06.650 [DEBUG] [Thread-125813] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:03:06.650 [DEBUG] [Thread-125813] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:03:06.650 [DEBUG] [Thread-125813] [transport.py] [_log()] client lang: <none>
2025-11-04T01:03:06.650 [DEBUG] [Thread-125813] [transport.py] [_log()] server lang: <none>
2025-11-04T01:03:06.650 [DEBUG] [Thread-125813] [transport.py] [_log()] kex follows: False
2025-11-04T01:03:06.650 [DEBUG] [Thread-125813] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:03:06.650 [DEBUG] [Thread-125813] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:03:06.650 [DEBUG] [Thread-125813] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:03:06.650 [DEBUG] [Thread-125813] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:03:06.650 [DEBUG] [Thread-125813] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:03:06.650 [DEBUG] [Thread-125813] [transport.py] [_log()] Compression: none
2025-11-04T01:03:06.650 [DEBUG] [Thread-125813] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:03:06.712 [DEBUG] [Thread-125813] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:03:06.713 [DEBUG] [Thread-125813] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:03:06.713 [DEBUG] [Thread-125813] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:03:06.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:03:06.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:03:06.772 [DEBUG] [Thread-125813] [transport.py] [_log()] userauth is OK
2025-11-04T01:03:06.773 [DEBUG] [Thread-125813] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:03:06.773 [DEBUG] [Thread-125813] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:03:06.773 [DEBUG] [Thread-125813] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:03:06.773 [DEBUG] [Thread-125813] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:03:06.793 [INFO] [Thread-125813] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:03:06.794 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:03:06.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:03:07.625 [DEBUG] [Thread-125813] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:03:07.625 [DEBUG] [Thread-125813] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:03:07.674 [DEBUG] [Thread-125813] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:03:07.674 [DEBUG] [Thread-125813] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:03:07.683 [DEBUG] [Thread-125813] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:03:07.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:03:07.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:03:07.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:03:07.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:03:07.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:03:07.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:03:07.720 [DEBUG] [Thread-125813] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:03:15.743 [DEBUG] [Thread-125815 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:03:26.341 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:03:26.342 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:03:30.827 [DEBUG] [Thread-125816 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:03:34.700 [DEBUG] [Thread-125817 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:03:37.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:03:37.753 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:03:37.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:03:38.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 3, 14), 19.14, 42.14, 0.0, 17.54, 11.88, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:03:38.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:03:14
2025-11-04T01:03:38.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:03:38.833 [DEBUG] [Thread-125818] [transport.py] [_log()] starting thread (client mode): 0x117bf880
2025-11-04T01:03:38.833 [DEBUG] [Thread-125818] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:03:38.849 [DEBUG] [Thread-125818] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:03:38.849 [INFO] [Thread-125818] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:03:38.852 [DEBUG] [Thread-125818] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:03:38.852 [DEBUG] [Thread-125818] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:03:38.852 [DEBUG] [Thread-125818] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:03:38.853 [DEBUG] [Thread-125818] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:03:38.853 [DEBUG] [Thread-125818] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:03:38.853 [DEBUG] [Thread-125818] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:03:38.853 [DEBUG] [Thread-125818] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:03:38.853 [DEBUG] [Thread-125818] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:03:38.853 [DEBUG] [Thread-125818] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:03:38.853 [DEBUG] [Thread-125818] [transport.py] [_log()] client lang: <none>
2025-11-04T01:03:38.853 [DEBUG] [Thread-125818] [transport.py] [_log()] server lang: <none>
2025-11-04T01:03:38.853 [DEBUG] [Thread-125818] [transport.py] [_log()] kex follows: False
2025-11-04T01:03:38.853 [DEBUG] [Thread-125818] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:03:38.853 [DEBUG] [Thread-125818] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:03:38.853 [DEBUG] [Thread-125818] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:03:38.855 [DEBUG] [Thread-125818] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:03:38.855 [DEBUG] [Thread-125818] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:03:38.855 [DEBUG] [Thread-125818] [transport.py] [_log()] Compression: none
2025-11-04T01:03:38.855 [DEBUG] [Thread-125818] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:03:38.886 [DEBUG] [Thread-125818] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:03:38.889 [DEBUG] [Thread-125818] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:03:38.890 [DEBUG] [Thread-125818] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:03:38.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:03:38.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:03:38.894 [DEBUG] [Thread-125818] [transport.py] [_log()] userauth is OK
2025-11-04T01:03:38.894 [DEBUG] [Thread-125818] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:03:38.894 [DEBUG] [Thread-125818] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:03:38.894 [DEBUG] [Thread-125818] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:03:38.894 [DEBUG] [Thread-125818] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:03:38.918 [INFO] [Thread-125818] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:03:38.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:03:39.611 [DEBUG] [Thread-125818] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:03:39.611 [DEBUG] [Thread-125818] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:03:39.622 [DEBUG] [Thread-125818] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:03:39.652 [DEBUG] [Thread-125818] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:03:39.652 [DEBUG] [Thread-125818] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:03:39.656 [DEBUG] [Thread-125818] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:03:39.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:03:39.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:03:39.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:03:39.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:03:39.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:03:39.682 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:03:39.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:03:39.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:03:39.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:03:39.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.960515 -999.00  +18.00  17.06     18   -6.30 1 1 1 1 1     0    0 23.98 -14.89 ZNESW 17.9 17.1 304.8 25.9 18.3 -24.4 18.2 -23.3 18.0 -23.1 18.2 -24.0
2025-11-04T01:03:39.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:03:39.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:03:39.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.960515
2025-11-04T01:03:39.691 [DEBUG] [Thread-125818] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:03:39.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:03:39.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:03:39.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:03:39.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:03:39.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:03:39.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:03:14', tmtdew=19.14, humidity=42.14, cloud=0.0, wind=17.54, temperature=11.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:03:14', seeing=1.0, atlas_timestamp='2025-11-03T23:03:08.496', atlas_cloud=1, atlas_rain=1, zp_data=[0.004249999999998977, 0.0007500000000000284, 0.07125000000000092, 0.06850000000000023, 0.0045000000000001705, -0.1297499999999996, -0.04800000000000004, -0.057749999999998636, 0.07649999999999935, 0.046499999999999986, 0.11175000000000068, 0.012500000000001066, 0.07399999999999984, -0.008250000000000313, -0.03450000000000131, 0.04449999999999932, 0.04974999999999952, 0.13699999999999868, 0.19799999999999862, 0.15674999999999883, 0.17549999999999955, 0.15524999999999878, 0.05825000000000102, 0.003750000000000142, 0.009999999999999787, 0.1695000000000011, 0.19725000000000037, 0.1899999999999995, 0.24650000000000016, 0.04400000000000048, 0.12049999999999983, 0.09000000000000163, 0.05224999999999902], zp_timestamp='2025-11-03T22:59:00')
2025-11-04T01:03:39.786 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:03:39.801 [DEBUG] [Thread-125821] [transport.py] [_log()] starting thread (client mode): 0x117bfa00
2025-11-04T01:03:39.801 [DEBUG] [Thread-125821] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:03:39.818 [DEBUG] [Thread-125821] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:03:39.818 [INFO] [Thread-125821] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:03:39.828 [DEBUG] [Thread-125821] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:03:39.828 [DEBUG] [Thread-125821] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:03:39.828 [DEBUG] [Thread-125821] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:03:39.828 [DEBUG] [Thread-125821] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:03:39.828 [DEBUG] [Thread-125821] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:03:39.828 [DEBUG] [Thread-125821] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:03:39.828 [DEBUG] [Thread-125821] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:03:39.828 [DEBUG] [Thread-125821] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:03:39.828 [DEBUG] [Thread-125821] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:03:39.828 [DEBUG] [Thread-125821] [transport.py] [_log()] client lang: <none>
2025-11-04T01:03:39.828 [DEBUG] [Thread-125821] [transport.py] [_log()] server lang: <none>
2025-11-04T01:03:39.828 [DEBUG] [Thread-125821] [transport.py] [_log()] kex follows: False
2025-11-04T01:03:39.829 [DEBUG] [Thread-125821] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:03:39.829 [DEBUG] [Thread-125821] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:03:39.829 [DEBUG] [Thread-125821] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:03:39.829 [DEBUG] [Thread-125821] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:03:39.829 [DEBUG] [Thread-125821] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:03:39.829 [DEBUG] [Thread-125821] [transport.py] [_log()] Compression: none
2025-11-04T01:03:39.829 [DEBUG] [Thread-125821] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:03:39.888 [DEBUG] [Thread-125821] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:03:39.889 [DEBUG] [Thread-125821] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:03:39.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:03:39.890 [DEBUG] [Thread-125821] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:03:39.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:03:39.944 [DEBUG] [Thread-125821] [transport.py] [_log()] userauth is OK
2025-11-04T01:03:39.944 [DEBUG] [Thread-125821] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:03:39.945 [DEBUG] [Thread-125821] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:03:39.945 [DEBUG] [Thread-125821] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:03:39.945 [DEBUG] [Thread-125821] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:03:39.962 [INFO] [Thread-125821] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:03:39.963 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:03:39.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:03:40.782 [DEBUG] [Thread-125821] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:03:40.791 [DEBUG] [Thread-125821] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:03:40.830 [DEBUG] [Thread-125821] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:03:40.830 [DEBUG] [Thread-125821] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:03:40.838 [DEBUG] [Thread-125821] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:03:40.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:03:40.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:03:40.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:03:40.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:03:40.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:03:40.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:03:40.872 [DEBUG] [Thread-125821] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:03:44.937 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:03:45.858 [DEBUG] [Thread-125823 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:03:47.979 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:04:00.897 [DEBUG] [Thread-125824 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:04:10.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:04:10.896 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:04:10.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:04:11.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 3, 46), 19.12, 42.2, 0.0, 17.47, 11.86, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:04:11.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:03:46
2025-11-04T01:04:11.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:04:11.990 [DEBUG] [Thread-125825] [transport.py] [_log()] starting thread (client mode): 0x117bd4e0
2025-11-04T01:04:11.991 [DEBUG] [Thread-125825] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:04:12.003 [DEBUG] [Thread-125825] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:04:12.004 [INFO] [Thread-125825] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:04:12.007 [DEBUG] [Thread-125825] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:04:12.007 [DEBUG] [Thread-125825] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:04:12.007 [DEBUG] [Thread-125825] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:04:12.007 [DEBUG] [Thread-125825] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:04:12.007 [DEBUG] [Thread-125825] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:04:12.007 [DEBUG] [Thread-125825] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:04:12.007 [DEBUG] [Thread-125825] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:04:12.007 [DEBUG] [Thread-125825] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:04:12.007 [DEBUG] [Thread-125825] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:04:12.007 [DEBUG] [Thread-125825] [transport.py] [_log()] client lang: <none>
2025-11-04T01:04:12.007 [DEBUG] [Thread-125825] [transport.py] [_log()] server lang: <none>
2025-11-04T01:04:12.007 [DEBUG] [Thread-125825] [transport.py] [_log()] kex follows: False
2025-11-04T01:04:12.007 [DEBUG] [Thread-125825] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:04:12.008 [DEBUG] [Thread-125825] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:04:12.008 [DEBUG] [Thread-125825] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:04:12.008 [DEBUG] [Thread-125825] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:04:12.008 [DEBUG] [Thread-125825] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:04:12.008 [DEBUG] [Thread-125825] [transport.py] [_log()] Compression: none
2025-11-04T01:04:12.008 [DEBUG] [Thread-125825] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:04:12.035 [DEBUG] [Thread-125825] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:04:12.039 [DEBUG] [Thread-125825] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:04:12.040 [DEBUG] [Thread-125825] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:04:12.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:04:12.041 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:04:12.043 [DEBUG] [Thread-125825] [transport.py] [_log()] userauth is OK
2025-11-04T01:04:12.043 [DEBUG] [Thread-125825] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:04:12.043 [DEBUG] [Thread-125825] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:04:12.043 [DEBUG] [Thread-125825] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:04:12.043 [DEBUG] [Thread-125825] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:04:12.066 [INFO] [Thread-125825] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:04:12.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:04:12.727 [DEBUG] [Thread-125825] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:04:12.728 [DEBUG] [Thread-125825] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:04:12.729 [DEBUG] [Thread-125825] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:04:12.769 [DEBUG] [Thread-125825] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:04:12.770 [DEBUG] [Thread-125825] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:04:12.773 [DEBUG] [Thread-125825] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:04:12.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:04:12.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:04:12.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:04:12.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:04:12.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:04:12.801 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:04:12.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:04:12.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:04:12.804 [DEBUG] [Thread-125825] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:04:12.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:04:12.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.960862 -999.00  +18.00  18.19     18   -6.30 1 1 1 1 1     0    0 24.09 -15.49 ZNESW 17.3 18.2 302.4 20.4 18.3 -24.3 18.2 -23.2 17.9 -23.0 18.2 -24.0
2025-11-04T01:04:12.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:04:12.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:04:12.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.960862
2025-11-04T01:04:12.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:04:12.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:04:12.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:04:12.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:04:12.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:04:12.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:03:46', tmtdew=19.12, humidity=42.2, cloud=0.0, wind=17.47, temperature=11.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:03:47', seeing=1.0, atlas_timestamp='2025-11-03T23:03:38.477', atlas_cloud=1, atlas_rain=1, zp_data=[0.004249999999998977, 0.0007500000000000284, 0.07125000000000092, 0.06850000000000023, 0.0045000000000001705, -0.1297499999999996, -0.04800000000000004, -0.057749999999998636, 0.07649999999999935, 0.046499999999999986, 0.11175000000000068, 0.012500000000001066, 0.07399999999999984, -0.008250000000000313, -0.03450000000000131, 0.04449999999999932, 0.04974999999999952, 0.13699999999999868, 0.19799999999999862, 0.15674999999999883, 0.17549999999999955, 0.15524999999999878, 0.05825000000000102, 0.003750000000000142, 0.009999999999999787, 0.1695000000000011, 0.19725000000000037, 0.1899999999999995, 0.24650000000000016, 0.04400000000000048, 0.12049999999999983, 0.09000000000000163, 0.05224999999999902], zp_timestamp='2025-11-03T23:03:00')
2025-11-04T01:04:12.918 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:04:12.930 [DEBUG] [Thread-125828] [transport.py] [_log()] starting thread (client mode): 0x117bde40
2025-11-04T01:04:12.930 [DEBUG] [Thread-125828] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:04:12.944 [DEBUG] [Thread-125828] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:04:12.944 [INFO] [Thread-125828] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:04:12.952 [DEBUG] [Thread-125828] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:04:12.952 [DEBUG] [Thread-125828] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:04:12.953 [DEBUG] [Thread-125828] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:04:12.953 [DEBUG] [Thread-125828] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:04:12.953 [DEBUG] [Thread-125828] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:04:12.953 [DEBUG] [Thread-125828] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:04:12.953 [DEBUG] [Thread-125828] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:04:12.953 [DEBUG] [Thread-125828] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:04:12.953 [DEBUG] [Thread-125828] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:04:12.953 [DEBUG] [Thread-125828] [transport.py] [_log()] client lang: <none>
2025-11-04T01:04:12.953 [DEBUG] [Thread-125828] [transport.py] [_log()] server lang: <none>
2025-11-04T01:04:12.953 [DEBUG] [Thread-125828] [transport.py] [_log()] kex follows: False
2025-11-04T01:04:12.953 [DEBUG] [Thread-125828] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:04:12.953 [DEBUG] [Thread-125828] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:04:12.953 [DEBUG] [Thread-125828] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:04:12.953 [DEBUG] [Thread-125828] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:04:12.954 [DEBUG] [Thread-125828] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:04:12.954 [DEBUG] [Thread-125828] [transport.py] [_log()] Compression: none
2025-11-04T01:04:12.954 [DEBUG] [Thread-125828] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:04:13.012 [DEBUG] [Thread-125828] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:04:13.013 [DEBUG] [Thread-125828] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:04:13.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:04:13.014 [DEBUG] [Thread-125828] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:04:13.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:04:13.072 [DEBUG] [Thread-125828] [transport.py] [_log()] userauth is OK
2025-11-04T01:04:13.072 [DEBUG] [Thread-125828] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:04:13.073 [DEBUG] [Thread-125828] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:04:13.073 [DEBUG] [Thread-125828] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:04:13.073 [DEBUG] [Thread-125828] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:04:13.097 [INFO] [Thread-125828] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:04:13.098 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:04:13.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:04:13.933 [DEBUG] [Thread-125828] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:04:13.933 [DEBUG] [Thread-125828] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:04:13.981 [DEBUG] [Thread-125828] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:04:13.981 [DEBUG] [Thread-125828] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:04:13.990 [DEBUG] [Thread-125828] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:04:14.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:04:14.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:04:14.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:04:14.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:04:14.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:04:14.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:04:14.034 [DEBUG] [Thread-125828] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:04:15.938 [DEBUG] [Thread-125830 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:04:26.545 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:04:26.546 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:04:31.051 [DEBUG] [Thread-125831 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:04:35.063 [DEBUG] [Thread-125832 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:04:44.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:04:44.057 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:04:44.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:04:44.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 4, 19), 19.14, 42.16, 0.0, 17.73, 11.85, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:04:44.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:04:19
2025-11-04T01:04:45.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:04:45.225 [DEBUG] [Thread-125833] [transport.py] [_log()] starting thread (client mode): 0x117bc760
2025-11-04T01:04:45.225 [DEBUG] [Thread-125833] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:04:45.250 [DEBUG] [Thread-125833] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:04:45.250 [INFO] [Thread-125833] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:04:45.253 [DEBUG] [Thread-125833] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:04:45.253 [DEBUG] [Thread-125833] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:04:45.253 [DEBUG] [Thread-125833] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:04:45.253 [DEBUG] [Thread-125833] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:04:45.253 [DEBUG] [Thread-125833] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:04:45.253 [DEBUG] [Thread-125833] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:04:45.253 [DEBUG] [Thread-125833] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:04:45.253 [DEBUG] [Thread-125833] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:04:45.253 [DEBUG] [Thread-125833] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:04:45.253 [DEBUG] [Thread-125833] [transport.py] [_log()] client lang: <none>
2025-11-04T01:04:45.253 [DEBUG] [Thread-125833] [transport.py] [_log()] server lang: <none>
2025-11-04T01:04:45.253 [DEBUG] [Thread-125833] [transport.py] [_log()] kex follows: False
2025-11-04T01:04:45.253 [DEBUG] [Thread-125833] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:04:45.253 [DEBUG] [Thread-125833] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:04:45.253 [DEBUG] [Thread-125833] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:04:45.254 [DEBUG] [Thread-125833] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:04:45.254 [DEBUG] [Thread-125833] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:04:45.254 [DEBUG] [Thread-125833] [transport.py] [_log()] Compression: none
2025-11-04T01:04:45.254 [DEBUG] [Thread-125833] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:04:45.270 [DEBUG] [Thread-125833] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:04:45.270 [DEBUG] [Thread-125833] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:04:45.270 [DEBUG] [Thread-125833] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:04:45.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:04:45.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:04:45.271 [DEBUG] [Thread-125833] [transport.py] [_log()] userauth is OK
2025-11-04T01:04:45.271 [DEBUG] [Thread-125833] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:04:45.271 [DEBUG] [Thread-125833] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:04:45.271 [DEBUG] [Thread-125833] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:04:45.271 [DEBUG] [Thread-125833] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:04:45.280 [INFO] [Thread-125833] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:04:45.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:04:45.842 [DEBUG] [Thread-125833] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:04:45.842 [DEBUG] [Thread-125833] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:04:45.842 [DEBUG] [Thread-125833] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:04:45.883 [DEBUG] [Thread-125833] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:04:45.884 [DEBUG] [Thread-125833] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:04:45.886 [DEBUG] [Thread-125833] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:04:45.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:04:45.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:04:45.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:04:45.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:04:45.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:04:45.903 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:04:45.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:04:45.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:04:45.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:04:45.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.961209 -999.00  +17.90  16.42     18   -6.30 1 1 1 1 1     0    0 23.72 -16.28 ZNESW 17.6 16.4 306.0 22.9 18.2 -24.3 18.1 -23.3 18.0 -22.8 18.2 -24.0
2025-11-04T01:04:45.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:04:45.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:04:45.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.961209
2025-11-04T01:04:45.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:04:45.904 [DEBUG] [Thread-125833] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:04:45.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:04:45.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:04:45.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:04:45.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:04:45.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:04:19', tmtdew=19.14, humidity=42.16, cloud=0.0, wind=17.73, temperature=11.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:04:19', seeing=1.05, atlas_timestamp='2025-11-03T23:04:08.458', atlas_cloud=1, atlas_rain=1, zp_data=[0.004249999999998977, 0.0007500000000000284, 0.07125000000000092, 0.06850000000000023, 0.0045000000000001705, -0.1297499999999996, -0.04800000000000004, -0.057749999999998636, 0.07649999999999935, 0.046499999999999986, 0.11175000000000068, 0.012500000000001066, 0.07399999999999984, -0.008250000000000313, -0.03450000000000131, 0.04449999999999932, 0.04974999999999952, 0.13699999999999868, 0.19799999999999862, 0.15674999999999883, 0.17549999999999955, 0.15524999999999878, 0.05825000000000102, 0.003750000000000142, 0.009999999999999787, 0.1695000000000011, 0.19725000000000037, 0.1899999999999995, 0.24650000000000016, 0.04400000000000048, 0.12049999999999983, 0.09000000000000163, 0.05224999999999902], zp_timestamp='2025-11-03T23:03:00')
2025-11-04T01:04:45.986 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:04:45.998 [DEBUG] [Thread-125836] [transport.py] [_log()] starting thread (client mode): 0x117be1a0
2025-11-04T01:04:45.998 [DEBUG] [Thread-125836] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:04:46.013 [DEBUG] [Thread-125836] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:04:46.013 [INFO] [Thread-125836] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:04:46.020 [DEBUG] [Thread-125836] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:04:46.020 [DEBUG] [Thread-125836] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:04:46.020 [DEBUG] [Thread-125836] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:04:46.020 [DEBUG] [Thread-125836] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:04:46.020 [DEBUG] [Thread-125836] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:04:46.020 [DEBUG] [Thread-125836] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:04:46.020 [DEBUG] [Thread-125836] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:04:46.020 [DEBUG] [Thread-125836] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:04:46.020 [DEBUG] [Thread-125836] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:04:46.020 [DEBUG] [Thread-125836] [transport.py] [_log()] client lang: <none>
2025-11-04T01:04:46.020 [DEBUG] [Thread-125836] [transport.py] [_log()] server lang: <none>
2025-11-04T01:04:46.020 [DEBUG] [Thread-125836] [transport.py] [_log()] kex follows: False
2025-11-04T01:04:46.020 [DEBUG] [Thread-125836] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:04:46.020 [DEBUG] [Thread-125836] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:04:46.021 [DEBUG] [Thread-125836] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:04:46.021 [DEBUG] [Thread-125836] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:04:46.021 [DEBUG] [Thread-125836] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:04:46.021 [DEBUG] [Thread-125836] [transport.py] [_log()] Compression: none
2025-11-04T01:04:46.021 [DEBUG] [Thread-125836] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:04:46.078 [DEBUG] [Thread-125836] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:04:46.078 [DEBUG] [Thread-125836] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:04:46.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:04:46.079 [DEBUG] [Thread-125836] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:04:46.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:04:46.084 [DEBUG] [Thread-125838 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:04:46.138 [DEBUG] [Thread-125836] [transport.py] [_log()] userauth is OK
2025-11-04T01:04:46.138 [DEBUG] [Thread-125836] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:04:46.138 [DEBUG] [Thread-125836] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:04:46.138 [DEBUG] [Thread-125836] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:04:46.138 [DEBUG] [Thread-125836] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:04:46.155 [INFO] [Thread-125836] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:04:46.155 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:04:46.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:04:47.010 [DEBUG] [Thread-125836] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:04:47.010 [DEBUG] [Thread-125836] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:04:47.057 [DEBUG] [Thread-125836] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:04:47.057 [DEBUG] [Thread-125836] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:04:47.065 [DEBUG] [Thread-125836] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:04:47.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:04:47.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:04:47.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:04:47.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:04:47.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:04:47.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:04:47.098 [DEBUG] [Thread-125836] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:05:01.123 [DEBUG] [Thread-125839 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:05:16.159 [DEBUG] [Thread-125840 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:05:17.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:05:17.121 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:05:17.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:05:17.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 4, 52), 19.01, 42.2, 0.0, 19.2, 11.78, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:05:17.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:04:52
2025-11-04T01:05:18.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:05:18.209 [DEBUG] [Thread-125841] [transport.py] [_log()] starting thread (client mode): 0x117bdba0
2025-11-04T01:05:18.210 [DEBUG] [Thread-125841] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:05:18.232 [DEBUG] [Thread-125841] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:05:18.232 [INFO] [Thread-125841] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:05:18.235 [DEBUG] [Thread-125841] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:05:18.235 [DEBUG] [Thread-125841] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:05:18.236 [DEBUG] [Thread-125841] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:05:18.236 [DEBUG] [Thread-125841] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:05:18.236 [DEBUG] [Thread-125841] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:05:18.236 [DEBUG] [Thread-125841] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:05:18.236 [DEBUG] [Thread-125841] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:05:18.236 [DEBUG] [Thread-125841] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:05:18.236 [DEBUG] [Thread-125841] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:05:18.236 [DEBUG] [Thread-125841] [transport.py] [_log()] client lang: <none>
2025-11-04T01:05:18.236 [DEBUG] [Thread-125841] [transport.py] [_log()] server lang: <none>
2025-11-04T01:05:18.236 [DEBUG] [Thread-125841] [transport.py] [_log()] kex follows: False
2025-11-04T01:05:18.236 [DEBUG] [Thread-125841] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:05:18.236 [DEBUG] [Thread-125841] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:05:18.236 [DEBUG] [Thread-125841] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:05:18.236 [DEBUG] [Thread-125841] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:05:18.236 [DEBUG] [Thread-125841] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:05:18.236 [DEBUG] [Thread-125841] [transport.py] [_log()] Compression: none
2025-11-04T01:05:18.236 [DEBUG] [Thread-125841] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:05:18.265 [DEBUG] [Thread-125841] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:05:18.269 [DEBUG] [Thread-125841] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:05:18.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:05:18.270 [DEBUG] [Thread-125841] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:05:18.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:05:18.273 [DEBUG] [Thread-125841] [transport.py] [_log()] userauth is OK
2025-11-04T01:05:18.273 [DEBUG] [Thread-125841] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:05:18.273 [DEBUG] [Thread-125841] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:05:18.274 [DEBUG] [Thread-125841] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:05:18.274 [DEBUG] [Thread-125841] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:05:18.299 [INFO] [Thread-125841] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:05:18.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:05:18.916 [DEBUG] [Thread-125841] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:05:18.916 [DEBUG] [Thread-125841] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:05:18.917 [DEBUG] [Thread-125841] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:05:18.958 [DEBUG] [Thread-125841] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:05:18.958 [DEBUG] [Thread-125841] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:05:18.960 [DEBUG] [Thread-125841] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:05:18.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:05:18.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:05:18.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:05:18.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:05:18.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:05:18.984 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:05:18.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:05:18.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:05:18.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:05:18.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.961557 -999.00  +17.90  18.57     18   -6.30 1 1 1 1 1     0    0 23.95 -15.92 ZNESW 17.3 18.6 309.0 22.6 18.2 -24.3 18.1 -23.3 17.9 -22.8 18.2 -23.9
2025-11-04T01:05:18.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:05:18.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:05:18.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.961557
2025-11-04T01:05:18.992 [DEBUG] [Thread-125841] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:05:18.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:05:19.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:05:19.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:05:19.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:05:19.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:05:19.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:04:52', tmtdew=19.01, humidity=42.2, cloud=0.0, wind=19.2, temperature=11.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:04:52', seeing=1.1, atlas_timestamp='2025-11-03T23:04:38.525', atlas_cloud=1, atlas_rain=1, zp_data=[0.004249999999998977, 0.0007500000000000284, 0.07125000000000092, 0.06850000000000023, 0.0045000000000001705, -0.1297499999999996, -0.04800000000000004, -0.057749999999998636, 0.07649999999999935, 0.046499999999999986, 0.11175000000000068, 0.012500000000001066, 0.07399999999999984, -0.008250000000000313, -0.03450000000000131, 0.04449999999999932, 0.04974999999999952, 0.13699999999999868, 0.19799999999999862, 0.15674999999999883, 0.17549999999999955, 0.15524999999999878, 0.05825000000000102, 0.003750000000000142, 0.009999999999999787, 0.1695000000000011, 0.19725000000000037, 0.1899999999999995, 0.24650000000000016, 0.04400000000000048, 0.12049999999999983, 0.09000000000000163, 0.05224999999999902], zp_timestamp='2025-11-03T23:03:00')
2025-11-04T01:05:19.083 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:05:19.096 [DEBUG] [Thread-125844] [transport.py] [_log()] starting thread (client mode): 0x117bc640
2025-11-04T01:05:19.096 [DEBUG] [Thread-125844] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:05:19.114 [DEBUG] [Thread-125844] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:05:19.115 [INFO] [Thread-125844] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:05:19.126 [DEBUG] [Thread-125844] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:05:19.126 [DEBUG] [Thread-125844] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:05:19.126 [DEBUG] [Thread-125844] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:05:19.126 [DEBUG] [Thread-125844] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:05:19.126 [DEBUG] [Thread-125844] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:05:19.126 [DEBUG] [Thread-125844] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:05:19.126 [DEBUG] [Thread-125844] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:05:19.126 [DEBUG] [Thread-125844] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:05:19.126 [DEBUG] [Thread-125844] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:05:19.126 [DEBUG] [Thread-125844] [transport.py] [_log()] client lang: <none>
2025-11-04T01:05:19.126 [DEBUG] [Thread-125844] [transport.py] [_log()] server lang: <none>
2025-11-04T01:05:19.126 [DEBUG] [Thread-125844] [transport.py] [_log()] kex follows: False
2025-11-04T01:05:19.126 [DEBUG] [Thread-125844] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:05:19.127 [DEBUG] [Thread-125844] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:05:19.127 [DEBUG] [Thread-125844] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:05:19.127 [DEBUG] [Thread-125844] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:05:19.127 [DEBUG] [Thread-125844] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:05:19.127 [DEBUG] [Thread-125844] [transport.py] [_log()] Compression: none
2025-11-04T01:05:19.128 [DEBUG] [Thread-125844] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:05:19.199 [DEBUG] [Thread-125844] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:05:19.200 [DEBUG] [Thread-125844] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:05:19.201 [DEBUG] [Thread-125844] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:05:19.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:05:19.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:05:19.265 [DEBUG] [Thread-125844] [transport.py] [_log()] userauth is OK
2025-11-04T01:05:19.265 [DEBUG] [Thread-125844] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:05:19.266 [DEBUG] [Thread-125844] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:05:19.266 [DEBUG] [Thread-125844] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:05:19.266 [DEBUG] [Thread-125844] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:05:19.290 [INFO] [Thread-125844] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:05:19.291 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:05:19.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:05:20.115 [DEBUG] [Thread-125844] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:05:20.115 [DEBUG] [Thread-125844] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:05:20.163 [DEBUG] [Thread-125844] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:05:20.163 [DEBUG] [Thread-125844] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:05:20.172 [DEBUG] [Thread-125844] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:05:20.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:05:20.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:05:20.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:05:20.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:05:20.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:05:20.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:05:20.215 [DEBUG] [Thread-125844] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:05:26.748 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:05:26.749 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:05:31.205 [DEBUG] [Thread-125846 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:05:35.438 [DEBUG] [Thread-125847 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:05:46.287 [DEBUG] [Thread-125848 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:05:50.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:05:50.239 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:05:50.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:05:51.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 5, 24), 19.02, 42.2, 0.0, 18.93, 11.8, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:05:51.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:05:24
2025-11-04T01:05:51.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:05:51.342 [DEBUG] [Thread-125849] [transport.py] [_log()] starting thread (client mode): 0x819aa10
2025-11-04T01:05:51.342 [DEBUG] [Thread-125849] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:05:51.361 [DEBUG] [Thread-125849] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:05:51.362 [INFO] [Thread-125849] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:05:51.365 [DEBUG] [Thread-125849] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:05:51.365 [DEBUG] [Thread-125849] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:05:51.365 [DEBUG] [Thread-125849] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:05:51.365 [DEBUG] [Thread-125849] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:05:51.365 [DEBUG] [Thread-125849] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:05:51.365 [DEBUG] [Thread-125849] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:05:51.366 [DEBUG] [Thread-125849] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:05:51.366 [DEBUG] [Thread-125849] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:05:51.366 [DEBUG] [Thread-125849] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:05:51.366 [DEBUG] [Thread-125849] [transport.py] [_log()] client lang: <none>
2025-11-04T01:05:51.366 [DEBUG] [Thread-125849] [transport.py] [_log()] server lang: <none>
2025-11-04T01:05:51.366 [DEBUG] [Thread-125849] [transport.py] [_log()] kex follows: False
2025-11-04T01:05:51.366 [DEBUG] [Thread-125849] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:05:51.366 [DEBUG] [Thread-125849] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:05:51.367 [DEBUG] [Thread-125849] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:05:51.367 [DEBUG] [Thread-125849] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:05:51.367 [DEBUG] [Thread-125849] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:05:51.367 [DEBUG] [Thread-125849] [transport.py] [_log()] Compression: none
2025-11-04T01:05:51.367 [DEBUG] [Thread-125849] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:05:51.398 [DEBUG] [Thread-125849] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:05:51.401 [DEBUG] [Thread-125849] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:05:51.402 [DEBUG] [Thread-125849] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:05:51.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:05:51.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:05:51.405 [DEBUG] [Thread-125849] [transport.py] [_log()] userauth is OK
2025-11-04T01:05:51.405 [DEBUG] [Thread-125849] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:05:51.405 [DEBUG] [Thread-125849] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:05:51.405 [DEBUG] [Thread-125849] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:05:51.405 [DEBUG] [Thread-125849] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:05:51.431 [INFO] [Thread-125849] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:05:51.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:05:52.062 [DEBUG] [Thread-125849] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:05:52.062 [DEBUG] [Thread-125849] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:05:52.072 [DEBUG] [Thread-125849] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:05:52.103 [DEBUG] [Thread-125849] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:05:52.104 [DEBUG] [Thread-125849] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:05:52.107 [DEBUG] [Thread-125849] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:05:52.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:05:52.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:05:52.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:05:52.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:05:52.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:05:52.132 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:05:52.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:05:52.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:05:52.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:05:52.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.962251 -999.00  +17.90  15.37     18   -6.30 1 1 1 1 1     0    0 24.38 -17.01 ZNESW 15.9 15.4 306.6 23.1 18.2 -24.2 18.1 -23.3 17.9 -22.9 18.2 -23.8
2025-11-04T01:05:52.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:05:52.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:05:52.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.962251
2025-11-04T01:05:52.140 [DEBUG] [Thread-125849] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:05:52.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:05:52.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:05:52.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:05:52.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:05:52.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:05:52.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:05:24', tmtdew=19.02, humidity=42.2, cloud=0.0, wind=18.93, temperature=11.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:05:25', seeing=1.18, atlas_timestamp='2025-11-03T23:05:38.486', atlas_cloud=1, atlas_rain=1, zp_data=[0.004249999999998977, 0.0007500000000000284, 0.07125000000000092, 0.06850000000000023, 0.0045000000000001705, -0.1297499999999996, -0.04800000000000004, -0.057749999999998636, 0.07649999999999935, 0.046499999999999986, 0.11175000000000068, 0.012500000000001066, 0.07399999999999984, -0.008250000000000313, -0.03450000000000131, 0.04449999999999932, 0.04974999999999952, 0.13699999999999868, 0.19799999999999862, 0.15674999999999883, 0.17549999999999955, 0.15524999999999878, 0.05825000000000102, 0.003750000000000142, 0.009999999999999787, 0.1695000000000011, 0.19725000000000037, 0.1899999999999995, 0.24650000000000016, 0.04400000000000048, 0.12049999999999983, 0.09000000000000163, 0.05224999999999902], zp_timestamp='2025-11-03T23:03:00')
2025-11-04T01:05:52.228 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:05:52.242 [DEBUG] [Thread-125852] [transport.py] [_log()] starting thread (client mode): 0x819a9b0
2025-11-04T01:05:52.242 [DEBUG] [Thread-125852] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:05:52.259 [DEBUG] [Thread-125852] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:05:52.259 [INFO] [Thread-125852] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:05:52.268 [DEBUG] [Thread-125852] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:05:52.268 [DEBUG] [Thread-125852] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:05:52.268 [DEBUG] [Thread-125852] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:05:52.268 [DEBUG] [Thread-125852] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:05:52.268 [DEBUG] [Thread-125852] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:05:52.268 [DEBUG] [Thread-125852] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:05:52.268 [DEBUG] [Thread-125852] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:05:52.268 [DEBUG] [Thread-125852] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:05:52.269 [DEBUG] [Thread-125852] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:05:52.269 [DEBUG] [Thread-125852] [transport.py] [_log()] client lang: <none>
2025-11-04T01:05:52.269 [DEBUG] [Thread-125852] [transport.py] [_log()] server lang: <none>
2025-11-04T01:05:52.269 [DEBUG] [Thread-125852] [transport.py] [_log()] kex follows: False
2025-11-04T01:05:52.269 [DEBUG] [Thread-125852] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:05:52.269 [DEBUG] [Thread-125852] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:05:52.278 [DEBUG] [Thread-125852] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:05:52.278 [DEBUG] [Thread-125852] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:05:52.279 [DEBUG] [Thread-125852] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:05:52.279 [DEBUG] [Thread-125852] [transport.py] [_log()] Compression: none
2025-11-04T01:05:52.279 [DEBUG] [Thread-125852] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:05:52.328 [DEBUG] [Thread-125852] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:05:52.328 [DEBUG] [Thread-125852] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:05:52.329 [DEBUG] [Thread-125852] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:05:52.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:05:52.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:05:52.384 [DEBUG] [Thread-125852] [transport.py] [_log()] userauth is OK
2025-11-04T01:05:52.384 [DEBUG] [Thread-125852] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:05:52.384 [DEBUG] [Thread-125852] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:05:52.384 [DEBUG] [Thread-125852] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:05:52.384 [DEBUG] [Thread-125852] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:05:52.404 [INFO] [Thread-125852] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:05:52.405 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:05:52.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:05:53.241 [DEBUG] [Thread-125852] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:05:53.241 [DEBUG] [Thread-125852] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:05:53.288 [DEBUG] [Thread-125852] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:05:53.288 [DEBUG] [Thread-125852] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:05:53.297 [DEBUG] [Thread-125852] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:05:53.306 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:05:53.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:05:53.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:05:53.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:05:53.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:05:53.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:05:53.331 [DEBUG] [Thread-125852] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:06:01.318 [DEBUG] [Thread-125854 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:06:16.383 [DEBUG] [Thread-125855 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:06:23.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:06:23.367 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:06:23.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:06:24.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 5, 57), 19.02, 42.18, 0.0, 15.03, 11.78, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:06:24.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:05:57
2025-11-04T01:06:24.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:06:24.741 [DEBUG] [Thread-125856] [transport.py] [_log()] starting thread (client mode): 0x819b640
2025-11-04T01:06:24.742 [DEBUG] [Thread-125856] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:06:24.758 [DEBUG] [Thread-125856] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:06:24.758 [INFO] [Thread-125856] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:06:24.762 [DEBUG] [Thread-125856] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:06:24.762 [DEBUG] [Thread-125856] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:06:24.762 [DEBUG] [Thread-125856] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:06:24.762 [DEBUG] [Thread-125856] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:06:24.762 [DEBUG] [Thread-125856] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:06:24.763 [DEBUG] [Thread-125856] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:06:24.763 [DEBUG] [Thread-125856] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:06:24.763 [DEBUG] [Thread-125856] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:06:24.763 [DEBUG] [Thread-125856] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:06:24.763 [DEBUG] [Thread-125856] [transport.py] [_log()] client lang: <none>
2025-11-04T01:06:24.763 [DEBUG] [Thread-125856] [transport.py] [_log()] server lang: <none>
2025-11-04T01:06:24.763 [DEBUG] [Thread-125856] [transport.py] [_log()] kex follows: False
2025-11-04T01:06:24.763 [DEBUG] [Thread-125856] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:06:24.764 [DEBUG] [Thread-125856] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:06:24.764 [DEBUG] [Thread-125856] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:06:24.764 [DEBUG] [Thread-125856] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:06:24.764 [DEBUG] [Thread-125856] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:06:24.764 [DEBUG] [Thread-125856] [transport.py] [_log()] Compression: none
2025-11-04T01:06:24.765 [DEBUG] [Thread-125856] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:06:24.797 [DEBUG] [Thread-125856] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:06:24.800 [DEBUG] [Thread-125856] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:06:24.802 [DEBUG] [Thread-125856] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:06:24.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:06:24.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:06:24.807 [DEBUG] [Thread-125856] [transport.py] [_log()] userauth is OK
2025-11-04T01:06:24.807 [DEBUG] [Thread-125856] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:06:24.807 [DEBUG] [Thread-125856] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:06:24.807 [DEBUG] [Thread-125856] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:06:24.807 [DEBUG] [Thread-125856] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:06:24.835 [INFO] [Thread-125856] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:06:24.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:06:25.477 [DEBUG] [Thread-125856] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:06:25.477 [DEBUG] [Thread-125856] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:06:25.487 [DEBUG] [Thread-125856] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:06:25.519 [DEBUG] [Thread-125856] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:06:25.519 [DEBUG] [Thread-125856] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:06:25.521 [DEBUG] [Thread-125856] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:06:25.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:06:25.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:06:25.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:06:25.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:06:25.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:06:25.540 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:06:25.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:06:25.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:06:25.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:06:25.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.962598 -999.00  +17.90  16.26     18   -6.20 1 1 1 1 1     0    0 23.52 -18.90 ZNESW 17.8 16.3 305.0 19.5 18.2 -24.3 18.1 -23.3 17.9 -23.0 18.2 -24.0
2025-11-04T01:06:25.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:06:25.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:06:25.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.962598
2025-11-04T01:06:25.547 [DEBUG] [Thread-125856] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:06:25.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:06:25.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:06:25.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:06:25.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:06:25.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:06:25.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:05:57', tmtdew=19.02, humidity=42.18, cloud=0.0, wind=15.03, temperature=11.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:05:57', seeing=1.18, atlas_timestamp='2025-11-03T23:06:08.467', atlas_cloud=1, atlas_rain=1, zp_data=[0.004249999999998977, 0.0007500000000000284, 0.07125000000000092, 0.06850000000000023, 0.0045000000000001705, -0.1297499999999996, -0.04800000000000004, -0.057749999999998636, 0.07649999999999935, 0.046499999999999986, 0.11175000000000068, 0.012500000000001066, 0.07399999999999984, -0.008250000000000313, -0.03450000000000131, 0.04449999999999932, 0.04974999999999952, 0.13699999999999868, 0.19799999999999862, 0.15674999999999883, 0.17549999999999955, 0.15524999999999878, 0.05825000000000102, 0.003750000000000142, 0.009999999999999787, 0.1695000000000011, 0.19725000000000037, 0.1899999999999995, 0.24650000000000016, 0.04400000000000048, 0.12049999999999983, 0.09000000000000163, 0.05224999999999902], zp_timestamp='2025-11-03T23:03:00')
2025-11-04T01:06:25.629 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:06:25.641 [DEBUG] [Thread-125859] [transport.py] [_log()] starting thread (client mode): 0x819b730
2025-11-04T01:06:25.641 [DEBUG] [Thread-125859] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:06:25.657 [DEBUG] [Thread-125859] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:06:25.657 [INFO] [Thread-125859] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:06:25.666 [DEBUG] [Thread-125859] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:06:25.666 [DEBUG] [Thread-125859] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:06:25.666 [DEBUG] [Thread-125859] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:06:25.666 [DEBUG] [Thread-125859] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:06:25.666 [DEBUG] [Thread-125859] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:06:25.666 [DEBUG] [Thread-125859] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:06:25.666 [DEBUG] [Thread-125859] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:06:25.666 [DEBUG] [Thread-125859] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:06:25.666 [DEBUG] [Thread-125859] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:06:25.666 [DEBUG] [Thread-125859] [transport.py] [_log()] client lang: <none>
2025-11-04T01:06:25.666 [DEBUG] [Thread-125859] [transport.py] [_log()] server lang: <none>
2025-11-04T01:06:25.666 [DEBUG] [Thread-125859] [transport.py] [_log()] kex follows: False
2025-11-04T01:06:25.666 [DEBUG] [Thread-125859] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:06:25.666 [DEBUG] [Thread-125859] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:06:25.666 [DEBUG] [Thread-125859] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:06:25.666 [DEBUG] [Thread-125859] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:06:25.666 [DEBUG] [Thread-125859] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:06:25.666 [DEBUG] [Thread-125859] [transport.py] [_log()] Compression: none
2025-11-04T01:06:25.666 [DEBUG] [Thread-125859] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:06:25.722 [DEBUG] [Thread-125859] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:06:25.722 [DEBUG] [Thread-125859] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:06:25.722 [DEBUG] [Thread-125859] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:06:25.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:06:25.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:06:25.782 [DEBUG] [Thread-125859] [transport.py] [_log()] userauth is OK
2025-11-04T01:06:25.782 [DEBUG] [Thread-125859] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:06:25.782 [DEBUG] [Thread-125859] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:06:25.782 [DEBUG] [Thread-125859] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:06:25.783 [DEBUG] [Thread-125859] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:06:25.800 [INFO] [Thread-125859] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:06:25.800 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:06:25.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:06:26.654 [DEBUG] [Thread-125859] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:06:26.654 [DEBUG] [Thread-125859] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:06:26.702 [DEBUG] [Thread-125859] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:06:26.702 [DEBUG] [Thread-125859] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:06:26.711 [DEBUG] [Thread-125859] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:06:26.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:06:26.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:06:26.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:06:26.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:06:26.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:06:26.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:06:26.754 [DEBUG] [Thread-125859] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:06:26.958 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:06:26.959 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:06:31.416 [DEBUG] [Thread-125861 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:06:35.799 [DEBUG] [Thread-125862 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:06:46.471 [DEBUG] [Thread-125863 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:06:56.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:06:56.773 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:06:56.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:06:57.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 6, 29), 28.5, 13.31, 0.0, 15.37, 17.83, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:06:57.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:06:29
2025-11-04T01:06:57.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:06:57.937 [DEBUG] [Thread-125864] [transport.py] [_log()] starting thread (client mode): 0x117bf0d0
2025-11-04T01:06:57.938 [DEBUG] [Thread-125864] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:06:57.950 [DEBUG] [Thread-125864] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:06:57.950 [INFO] [Thread-125864] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:06:57.954 [DEBUG] [Thread-125864] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:06:57.954 [DEBUG] [Thread-125864] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:06:57.954 [DEBUG] [Thread-125864] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:06:57.954 [DEBUG] [Thread-125864] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:06:57.954 [DEBUG] [Thread-125864] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:06:57.954 [DEBUG] [Thread-125864] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:06:57.955 [DEBUG] [Thread-125864] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:06:57.955 [DEBUG] [Thread-125864] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:06:57.955 [DEBUG] [Thread-125864] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:06:57.955 [DEBUG] [Thread-125864] [transport.py] [_log()] client lang: <none>
2025-11-04T01:06:57.955 [DEBUG] [Thread-125864] [transport.py] [_log()] server lang: <none>
2025-11-04T01:06:57.955 [DEBUG] [Thread-125864] [transport.py] [_log()] kex follows: False
2025-11-04T01:06:57.955 [DEBUG] [Thread-125864] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:06:57.955 [DEBUG] [Thread-125864] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:06:57.956 [DEBUG] [Thread-125864] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:06:57.956 [DEBUG] [Thread-125864] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:06:57.956 [DEBUG] [Thread-125864] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:06:57.956 [DEBUG] [Thread-125864] [transport.py] [_log()] Compression: none
2025-11-04T01:06:57.956 [DEBUG] [Thread-125864] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:06:57.986 [DEBUG] [Thread-125864] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:06:57.990 [DEBUG] [Thread-125864] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:06:57.992 [DEBUG] [Thread-125864] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:06:57.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:06:57.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:06:57.997 [DEBUG] [Thread-125864] [transport.py] [_log()] userauth is OK
2025-11-04T01:06:57.998 [DEBUG] [Thread-125864] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:06:57.998 [DEBUG] [Thread-125864] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:06:57.998 [DEBUG] [Thread-125864] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:06:57.998 [DEBUG] [Thread-125864] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:06:58.024 [INFO] [Thread-125864] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:06:58.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:06:58.675 [DEBUG] [Thread-125864] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:06:58.675 [DEBUG] [Thread-125864] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:06:58.676 [DEBUG] [Thread-125864] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:06:58.717 [DEBUG] [Thread-125864] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:06:58.717 [DEBUG] [Thread-125864] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:06:58.720 [DEBUG] [Thread-125864] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:06:58.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:06:58.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:06:58.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:06:58.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:06:58.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:06:58.744 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:06:58.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:06:58.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:06:58.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:06:58.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.962945 -999.00  +17.90  17.11     18   -6.20 1 1 1 1 1     0    0 23.99 -19.20 ZNESW 20.1 17.1 303.4 21.9 18.2 -24.3 18.1 -23.3 17.9 -23.0 18.2 -23.8
2025-11-04T01:06:58.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:06:58.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:06:58.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.962945
2025-11-04T01:06:58.751 [DEBUG] [Thread-125864] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:06:58.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:06:58.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:06:58.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:06:58.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:06:58.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:06:58.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:06:29', tmtdew=28.5, humidity=13.31, cloud=0.0, wind=15.37, temperature=17.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:06:30', seeing=1.09, atlas_timestamp='2025-11-03T23:06:38.448', atlas_cloud=1, atlas_rain=1, zp_data=[0.004249999999998977, 0.0007500000000000284, 0.07125000000000092, 0.06850000000000023, 0.0045000000000001705, -0.1297499999999996, -0.04800000000000004, -0.057749999999998636, 0.07649999999999935, 0.046499999999999986, 0.11175000000000068, 0.012500000000001066, 0.07399999999999984, -0.008250000000000313, -0.03450000000000131, 0.04449999999999932, 0.04974999999999952, 0.13699999999999868, 0.19799999999999862, 0.15674999999999883, 0.17549999999999955, 0.15524999999999878, 0.05825000000000102, 0.003750000000000142, 0.009999999999999787, 0.1695000000000011, 0.19725000000000037, 0.1899999999999995, 0.24650000000000016, 0.04400000000000048, 0.12049999999999983, 0.09000000000000163, 0.05224999999999902], zp_timestamp='2025-11-03T23:03:00')
2025-11-04T01:06:58.831 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:06:58.851 [DEBUG] [Thread-125867] [transport.py] [_log()] starting thread (client mode): 0x117bdbd0
2025-11-04T01:06:58.851 [DEBUG] [Thread-125867] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:06:58.871 [DEBUG] [Thread-125867] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:06:58.871 [INFO] [Thread-125867] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:06:58.886 [DEBUG] [Thread-125867] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:06:58.886 [DEBUG] [Thread-125867] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:06:58.886 [DEBUG] [Thread-125867] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:06:58.886 [DEBUG] [Thread-125867] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:06:58.886 [DEBUG] [Thread-125867] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:06:58.886 [DEBUG] [Thread-125867] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:06:58.886 [DEBUG] [Thread-125867] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:06:58.886 [DEBUG] [Thread-125867] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:06:58.886 [DEBUG] [Thread-125867] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:06:58.887 [DEBUG] [Thread-125867] [transport.py] [_log()] client lang: <none>
2025-11-04T01:06:58.887 [DEBUG] [Thread-125867] [transport.py] [_log()] server lang: <none>
2025-11-04T01:06:58.887 [DEBUG] [Thread-125867] [transport.py] [_log()] kex follows: False
2025-11-04T01:06:58.887 [DEBUG] [Thread-125867] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:06:58.887 [DEBUG] [Thread-125867] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:06:58.887 [DEBUG] [Thread-125867] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:06:58.887 [DEBUG] [Thread-125867] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:06:58.887 [DEBUG] [Thread-125867] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:06:58.887 [DEBUG] [Thread-125867] [transport.py] [_log()] Compression: none
2025-11-04T01:06:58.887 [DEBUG] [Thread-125867] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:06:58.955 [DEBUG] [Thread-125867] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:06:58.956 [DEBUG] [Thread-125867] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:06:58.957 [DEBUG] [Thread-125867] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:06:58.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:06:58.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:06:59.034 [DEBUG] [Thread-125867] [transport.py] [_log()] userauth is OK
2025-11-04T01:06:59.035 [DEBUG] [Thread-125867] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:06:59.035 [DEBUG] [Thread-125867] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:06:59.035 [DEBUG] [Thread-125867] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:06:59.035 [DEBUG] [Thread-125867] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:06:59.069 [INFO] [Thread-125867] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:06:59.069 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:06:59.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:06:59.916 [DEBUG] [Thread-125867] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:06:59.916 [DEBUG] [Thread-125867] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:06:59.955 [DEBUG] [Thread-125867] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:06:59.955 [DEBUG] [Thread-125867] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:06:59.964 [DEBUG] [Thread-125867] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:06:59.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:06:59.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:06:59.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:06:59.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:06:59.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:06:59.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:06:59.998 [DEBUG] [Thread-125867] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:07:01.504 [DEBUG] [Thread-125869 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:07:16.592 [DEBUG] [Thread-125870 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:07:24.386 [DEBUG] [Thread-124687 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:07:27.163 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:07:27.164 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:07:30.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:07:30.021 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:07:30.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:07:30.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 7, 2), 28.46, 13.34, 0.0, 15.77, 17.82, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:07:30.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:07:02
2025-11-04T01:07:30.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:07:31.127 [DEBUG] [Thread-125871] [transport.py] [_log()] starting thread (client mode): 0x8199d80
2025-11-04T01:07:31.128 [DEBUG] [Thread-125871] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:07:31.143 [DEBUG] [Thread-125871] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:07:31.143 [INFO] [Thread-125871] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:07:31.147 [DEBUG] [Thread-125871] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:07:31.147 [DEBUG] [Thread-125871] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:07:31.147 [DEBUG] [Thread-125871] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:07:31.147 [DEBUG] [Thread-125871] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:07:31.147 [DEBUG] [Thread-125871] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:07:31.147 [DEBUG] [Thread-125871] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:07:31.147 [DEBUG] [Thread-125871] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:07:31.147 [DEBUG] [Thread-125871] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:07:31.147 [DEBUG] [Thread-125871] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:07:31.147 [DEBUG] [Thread-125871] [transport.py] [_log()] client lang: <none>
2025-11-04T01:07:31.147 [DEBUG] [Thread-125871] [transport.py] [_log()] server lang: <none>
2025-11-04T01:07:31.147 [DEBUG] [Thread-125871] [transport.py] [_log()] kex follows: False
2025-11-04T01:07:31.147 [DEBUG] [Thread-125871] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:07:31.148 [DEBUG] [Thread-125871] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:07:31.148 [DEBUG] [Thread-125871] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:07:31.148 [DEBUG] [Thread-125871] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:07:31.148 [DEBUG] [Thread-125871] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:07:31.148 [DEBUG] [Thread-125871] [transport.py] [_log()] Compression: none
2025-11-04T01:07:31.148 [DEBUG] [Thread-125871] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:07:31.166 [DEBUG] [Thread-125871] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:07:31.167 [DEBUG] [Thread-125871] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:07:31.167 [DEBUG] [Thread-125871] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:07:31.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:07:31.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:07:31.170 [DEBUG] [Thread-125871] [transport.py] [_log()] userauth is OK
2025-11-04T01:07:31.170 [DEBUG] [Thread-125871] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:07:31.170 [DEBUG] [Thread-125871] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:07:31.170 [DEBUG] [Thread-125871] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:07:31.170 [DEBUG] [Thread-125871] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:07:31.185 [INFO] [Thread-125871] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:07:31.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:07:31.631 [DEBUG] [Thread-125873 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:07:31.842 [DEBUG] [Thread-125871] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:07:31.842 [DEBUG] [Thread-125871] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:07:31.844 [DEBUG] [Thread-125871] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:07:31.883 [DEBUG] [Thread-125871] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:07:31.883 [DEBUG] [Thread-125871] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:07:31.886 [DEBUG] [Thread-125871] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:07:31.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:07:31.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:07:31.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:07:31.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:07:31.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:07:31.913 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:07:31.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:07:31.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:07:31.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:07:31.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.963293 -999.00  +17.90  20.17     18   -6.20 1 1 1 1 1     0    0 24.22 -19.69 ZNESW 17.6 20.2 297.0 26.2 18.2 -24.3 18.1 -23.3 17.9 -22.7 18.2 -23.9
2025-11-04T01:07:31.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:07:31.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:07:31.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.963293
2025-11-04T01:07:31.921 [DEBUG] [Thread-125871] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:07:31.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:07:31.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:07:31.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:07:31.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:07:31.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:07:31.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:07:02', tmtdew=28.46, humidity=13.34, cloud=0.0, wind=15.77, temperature=17.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:07:03', seeing=1.09, atlas_timestamp='2025-11-03T23:07:08.515', atlas_cloud=1, atlas_rain=1, zp_data=[0.01425000000000054, 0.05925000000000047, 0.08175000000000132, 0.08749999999999858, 0.05150000000000077, 0.03675000000000139, 0.04100000000000037, -0.018749999999998934, 0.05149999999999899, 0.08150000000000013, 0.14424999999999955, 0.05649999999999977, 0.2115000000000009, -0.16875000000000107, -0.07000000000000028, 0.08999999999999986, 0.08774999999999977, 0.1479999999999997, 0.16949999999999932, 0.16924999999999812, 0.14599999999999724, 0.15974999999999895, 0.06225000000000236, 0.025750000000000384, 0.06400000000000006, 0.22550000000000026, 0.1587499999999995, 0.1725000000000012, 0.2999999999999998, 0.11350000000000193, 0.11800000000000033, 0.12300000000000111, 0.10275000000000034], zp_timestamp='2025-11-03T23:06:00')
2025-11-04T01:07:32.019 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:07:32.034 [DEBUG] [Thread-125875] [transport.py] [_log()] starting thread (client mode): 0x8199540
2025-11-04T01:07:32.034 [DEBUG] [Thread-125875] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:07:32.051 [DEBUG] [Thread-125875] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:07:32.051 [INFO] [Thread-125875] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:07:32.060 [DEBUG] [Thread-125875] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:07:32.060 [DEBUG] [Thread-125875] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:07:32.061 [DEBUG] [Thread-125875] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:07:32.061 [DEBUG] [Thread-125875] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:07:32.061 [DEBUG] [Thread-125875] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:07:32.061 [DEBUG] [Thread-125875] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:07:32.061 [DEBUG] [Thread-125875] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:07:32.061 [DEBUG] [Thread-125875] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:07:32.061 [DEBUG] [Thread-125875] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:07:32.061 [DEBUG] [Thread-125875] [transport.py] [_log()] client lang: <none>
2025-11-04T01:07:32.061 [DEBUG] [Thread-125875] [transport.py] [_log()] server lang: <none>
2025-11-04T01:07:32.061 [DEBUG] [Thread-125875] [transport.py] [_log()] kex follows: False
2025-11-04T01:07:32.061 [DEBUG] [Thread-125875] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:07:32.061 [DEBUG] [Thread-125875] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:07:32.061 [DEBUG] [Thread-125875] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:07:32.061 [DEBUG] [Thread-125875] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:07:32.061 [DEBUG] [Thread-125875] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:07:32.061 [DEBUG] [Thread-125875] [transport.py] [_log()] Compression: none
2025-11-04T01:07:32.061 [DEBUG] [Thread-125875] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:07:32.118 [DEBUG] [Thread-125875] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:07:32.118 [DEBUG] [Thread-125875] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:07:32.118 [DEBUG] [Thread-125875] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:07:32.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:07:32.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:07:32.175 [DEBUG] [Thread-125875] [transport.py] [_log()] userauth is OK
2025-11-04T01:07:32.175 [DEBUG] [Thread-125875] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:07:32.175 [DEBUG] [Thread-125875] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:07:32.175 [DEBUG] [Thread-125875] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:07:32.175 [DEBUG] [Thread-125875] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:07:32.189 [INFO] [Thread-125875] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:07:32.189 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:07:32.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:07:33.013 [DEBUG] [Thread-125875] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:07:33.013 [DEBUG] [Thread-125875] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:07:33.061 [DEBUG] [Thread-125875] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:07:33.061 [DEBUG] [Thread-125875] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:07:33.070 [DEBUG] [Thread-125875] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:07:33.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:07:33.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:07:33.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:07:33.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:07:33.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:07:33.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:07:33.112 [DEBUG] [Thread-125875] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:07:36.074 [DEBUG] [Thread-125877 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:07:46.665 [DEBUG] [Thread-125878 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:08:01.803 [DEBUG] [Thread-125879 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:08:03.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:08:03.117 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:08:03.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:08:04.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 7, 35), 28.41, 13.34, 0.0, 18.99, 17.75, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:08:04.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:07:35
2025-11-04T01:08:04.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:08:04.330 [DEBUG] [Thread-125880] [transport.py] [_log()] starting thread (client mode): 0xed05090
2025-11-04T01:08:04.330 [DEBUG] [Thread-125880] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:08:04.344 [DEBUG] [Thread-125880] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:08:04.344 [INFO] [Thread-125880] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:08:04.348 [DEBUG] [Thread-125880] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:08:04.348 [DEBUG] [Thread-125880] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:08:04.348 [DEBUG] [Thread-125880] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:08:04.348 [DEBUG] [Thread-125880] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:08:04.348 [DEBUG] [Thread-125880] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:08:04.348 [DEBUG] [Thread-125880] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:08:04.348 [DEBUG] [Thread-125880] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:08:04.348 [DEBUG] [Thread-125880] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:08:04.348 [DEBUG] [Thread-125880] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:08:04.348 [DEBUG] [Thread-125880] [transport.py] [_log()] client lang: <none>
2025-11-04T01:08:04.348 [DEBUG] [Thread-125880] [transport.py] [_log()] server lang: <none>
2025-11-04T01:08:04.348 [DEBUG] [Thread-125880] [transport.py] [_log()] kex follows: False
2025-11-04T01:08:04.348 [DEBUG] [Thread-125880] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:08:04.348 [DEBUG] [Thread-125880] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:08:04.348 [DEBUG] [Thread-125880] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:08:04.348 [DEBUG] [Thread-125880] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:08:04.348 [DEBUG] [Thread-125880] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:08:04.349 [DEBUG] [Thread-125880] [transport.py] [_log()] Compression: none
2025-11-04T01:08:04.349 [DEBUG] [Thread-125880] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:08:04.361 [DEBUG] [Thread-125880] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:08:04.362 [DEBUG] [Thread-125880] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:08:04.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:08:04.364 [DEBUG] [Thread-125880] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:08:04.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:08:04.366 [DEBUG] [Thread-125880] [transport.py] [_log()] userauth is OK
2025-11-04T01:08:04.366 [DEBUG] [Thread-125880] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:08:04.366 [DEBUG] [Thread-125880] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:08:04.366 [DEBUG] [Thread-125880] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:08:04.366 [DEBUG] [Thread-125880] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:08:04.397 [INFO] [Thread-125880] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:08:04.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:08:05.064 [DEBUG] [Thread-125880] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:08:05.064 [DEBUG] [Thread-125880] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:08:05.064 [DEBUG] [Thread-125880] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:08:05.105 [DEBUG] [Thread-125880] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:08:05.105 [DEBUG] [Thread-125880] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:08:05.106 [DEBUG] [Thread-125880] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:08:05.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:08:05.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:08:05.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:08:05.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:08:05.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:08:05.126 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:08:05.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:08:05.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:08:05.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:08:05.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.963640 -999.00  +17.90  18.58     18   -6.20 1 1 1 1 1     0    0 23.74 -18.94 ZNESW 18.3 18.6 303.6 21.2 18.2 -24.1 18.1 -23.2 17.9 -23.0 18.2 -23.8
2025-11-04T01:08:05.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:08:05.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:08:05.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.963640
2025-11-04T01:08:05.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:08:05.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:08:05.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:08:05.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:08:05.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:08:05.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:07:35', tmtdew=28.41, humidity=13.34, cloud=0.0, wind=18.99, temperature=17.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:07:36', seeing=1.11, atlas_timestamp='2025-11-03T23:07:38.496', atlas_cloud=1, atlas_rain=1, zp_data=[0.01425000000000054, 0.05925000000000047, 0.08175000000000132, 0.08749999999999858, 0.05150000000000077, 0.03675000000000139, 0.04100000000000037, -0.018749999999998934, 0.05149999999999899, 0.08150000000000013, 0.14424999999999955, 0.05649999999999977, 0.2115000000000009, -0.16875000000000107, -0.07000000000000028, 0.08999999999999986, 0.08774999999999977, 0.1479999999999997, 0.16949999999999932, 0.16924999999999812, 0.14599999999999724, 0.15974999999999895, 0.06225000000000236, 0.025750000000000384, 0.06400000000000006, 0.22550000000000026, 0.1587499999999995, 0.1725000000000012, 0.2999999999999998, 0.11350000000000193, 0.11800000000000033, 0.12300000000000111, 0.10275000000000034], zp_timestamp='2025-11-03T23:06:00')
2025-11-04T01:08:05.128 [DEBUG] [Thread-125880] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:08:05.201 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:08:05.213 [DEBUG] [Thread-125883] [transport.py] [_log()] starting thread (client mode): 0x8199390
2025-11-04T01:08:05.213 [DEBUG] [Thread-125883] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:08:05.228 [DEBUG] [Thread-125883] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:08:05.228 [INFO] [Thread-125883] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:08:05.236 [DEBUG] [Thread-125883] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:08:05.236 [DEBUG] [Thread-125883] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:08:05.236 [DEBUG] [Thread-125883] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:08:05.236 [DEBUG] [Thread-125883] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:08:05.236 [DEBUG] [Thread-125883] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:08:05.236 [DEBUG] [Thread-125883] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:08:05.236 [DEBUG] [Thread-125883] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:08:05.236 [DEBUG] [Thread-125883] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:08:05.236 [DEBUG] [Thread-125883] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:08:05.236 [DEBUG] [Thread-125883] [transport.py] [_log()] client lang: <none>
2025-11-04T01:08:05.237 [DEBUG] [Thread-125883] [transport.py] [_log()] server lang: <none>
2025-11-04T01:08:05.237 [DEBUG] [Thread-125883] [transport.py] [_log()] kex follows: False
2025-11-04T01:08:05.237 [DEBUG] [Thread-125883] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:08:05.237 [DEBUG] [Thread-125883] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:08:05.237 [DEBUG] [Thread-125883] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:08:05.237 [DEBUG] [Thread-125883] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:08:05.237 [DEBUG] [Thread-125883] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:08:05.237 [DEBUG] [Thread-125883] [transport.py] [_log()] Compression: none
2025-11-04T01:08:05.237 [DEBUG] [Thread-125883] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:08:05.293 [DEBUG] [Thread-125883] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:08:05.293 [DEBUG] [Thread-125883] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:08:05.294 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:08:05.294 [DEBUG] [Thread-125883] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:08:05.294 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:08:05.351 [DEBUG] [Thread-125883] [transport.py] [_log()] userauth is OK
2025-11-04T01:08:05.351 [DEBUG] [Thread-125883] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:08:05.351 [DEBUG] [Thread-125883] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:08:05.351 [DEBUG] [Thread-125883] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:08:05.351 [DEBUG] [Thread-125883] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:08:05.365 [INFO] [Thread-125883] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:08:05.365 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:08:05.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:08:06.173 [DEBUG] [Thread-125883] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:08:06.173 [DEBUG] [Thread-125883] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:08:06.222 [DEBUG] [Thread-125883] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:08:06.222 [DEBUG] [Thread-125883] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:08:06.231 [DEBUG] [Thread-125883] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:08:06.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:08:06.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:08:06.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:08:06.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:08:06.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:08:06.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:08:06.267 [DEBUG] [Thread-125883] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:08:16.840 [DEBUG] [Thread-125885 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:08:27.399 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:08:27.400 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:08:31.894 [DEBUG] [Thread-125886 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:08:36.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:08:36.288 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:08:36.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:08:36.338 [DEBUG] [Thread-125887 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:08:37.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 8, 7), 28.41, 13.36, 0.0, 19.37, 17.82, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:08:37.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:08:07
2025-11-04T01:08:37.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:08:37.421 [DEBUG] [Thread-125888] [transport.py] [_log()] starting thread (client mode): 0x8198880
2025-11-04T01:08:37.422 [DEBUG] [Thread-125888] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:08:37.440 [DEBUG] [Thread-125888] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:08:37.440 [INFO] [Thread-125888] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:08:37.442 [DEBUG] [Thread-125888] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:08:37.442 [DEBUG] [Thread-125888] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:08:37.442 [DEBUG] [Thread-125888] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:08:37.442 [DEBUG] [Thread-125888] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:08:37.442 [DEBUG] [Thread-125888] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:08:37.442 [DEBUG] [Thread-125888] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:08:37.442 [DEBUG] [Thread-125888] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:08:37.442 [DEBUG] [Thread-125888] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:08:37.443 [DEBUG] [Thread-125888] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:08:37.443 [DEBUG] [Thread-125888] [transport.py] [_log()] client lang: <none>
2025-11-04T01:08:37.443 [DEBUG] [Thread-125888] [transport.py] [_log()] server lang: <none>
2025-11-04T01:08:37.443 [DEBUG] [Thread-125888] [transport.py] [_log()] kex follows: False
2025-11-04T01:08:37.443 [DEBUG] [Thread-125888] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:08:37.444 [DEBUG] [Thread-125888] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:08:37.444 [DEBUG] [Thread-125888] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:08:37.444 [DEBUG] [Thread-125888] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:08:37.444 [DEBUG] [Thread-125888] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:08:37.444 [DEBUG] [Thread-125888] [transport.py] [_log()] Compression: none
2025-11-04T01:08:37.444 [DEBUG] [Thread-125888] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:08:37.468 [DEBUG] [Thread-125888] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:08:37.474 [DEBUG] [Thread-125888] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:08:37.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:08:37.477 [DEBUG] [Thread-125888] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:08:37.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:08:37.479 [DEBUG] [Thread-125888] [transport.py] [_log()] userauth is OK
2025-11-04T01:08:37.480 [DEBUG] [Thread-125888] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:08:37.480 [DEBUG] [Thread-125888] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:08:37.480 [DEBUG] [Thread-125888] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:08:37.480 [DEBUG] [Thread-125888] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:08:37.506 [INFO] [Thread-125888] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:08:37.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:08:38.088 [DEBUG] [Thread-125888] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:08:38.088 [DEBUG] [Thread-125888] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:08:38.098 [DEBUG] [Thread-125888] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:08:38.130 [DEBUG] [Thread-125888] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:08:38.130 [DEBUG] [Thread-125888] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:08:38.132 [DEBUG] [Thread-125888] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:08:38.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:08:38.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:08:38.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:08:38.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:08:38.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:08:38.151 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:08:38.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:08:38.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:08:38.152 [DEBUG] [Thread-125888] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:08:38.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:08:38.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.963987 -999.00  +17.90  18.01     18   -6.20 1 1 1 1 1     0    0 23.73 -19.49 ZNESW 18.4 18.0 303.8 23.4 18.2 -24.2 18.1 -23.3 17.9 -23.1 18.1 -23.8
2025-11-04T01:08:38.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:08:38.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:08:38.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.963987
2025-11-04T01:08:38.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:08:38.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:08:38.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:08:38.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:08:38.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:08:38.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:08:07', tmtdew=28.41, humidity=13.36, cloud=0.0, wind=19.37, temperature=17.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:08:08', seeing=1.11, atlas_timestamp='2025-11-03T23:08:08.477', atlas_cloud=1, atlas_rain=1, zp_data=[0.01425000000000054, 0.05925000000000047, 0.08175000000000132, 0.08749999999999858, 0.05150000000000077, 0.03675000000000139, 0.04100000000000037, -0.018749999999998934, 0.05149999999999899, 0.08150000000000013, 0.14424999999999955, 0.05649999999999977, 0.2115000000000009, -0.16875000000000107, -0.07000000000000028, 0.08999999999999986, 0.08774999999999977, 0.1479999999999997, 0.16949999999999932, 0.16924999999999812, 0.14599999999999724, 0.15974999999999895, 0.06225000000000236, 0.025750000000000384, 0.06400000000000006, 0.22550000000000026, 0.1587499999999995, 0.1725000000000012, 0.2999999999999998, 0.11350000000000193, 0.11800000000000033, 0.12300000000000111, 0.10275000000000034], zp_timestamp='2025-11-03T23:06:00')
2025-11-04T01:08:38.231 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:08:38.244 [DEBUG] [Thread-125891] [transport.py] [_log()] starting thread (client mode): 0x819b6a0
2025-11-04T01:08:38.244 [DEBUG] [Thread-125891] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:08:38.259 [DEBUG] [Thread-125891] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:08:38.259 [INFO] [Thread-125891] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:08:38.268 [DEBUG] [Thread-125891] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:08:38.268 [DEBUG] [Thread-125891] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:08:38.268 [DEBUG] [Thread-125891] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:08:38.268 [DEBUG] [Thread-125891] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:08:38.268 [DEBUG] [Thread-125891] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:08:38.268 [DEBUG] [Thread-125891] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:08:38.268 [DEBUG] [Thread-125891] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:08:38.268 [DEBUG] [Thread-125891] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:08:38.268 [DEBUG] [Thread-125891] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:08:38.268 [DEBUG] [Thread-125891] [transport.py] [_log()] client lang: <none>
2025-11-04T01:08:38.268 [DEBUG] [Thread-125891] [transport.py] [_log()] server lang: <none>
2025-11-04T01:08:38.268 [DEBUG] [Thread-125891] [transport.py] [_log()] kex follows: False
2025-11-04T01:08:38.269 [DEBUG] [Thread-125891] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:08:38.269 [DEBUG] [Thread-125891] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:08:38.269 [DEBUG] [Thread-125891] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:08:38.269 [DEBUG] [Thread-125891] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:08:38.269 [DEBUG] [Thread-125891] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:08:38.269 [DEBUG] [Thread-125891] [transport.py] [_log()] Compression: none
2025-11-04T01:08:38.269 [DEBUG] [Thread-125891] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:08:38.326 [DEBUG] [Thread-125891] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:08:38.327 [DEBUG] [Thread-125891] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:08:38.327 [DEBUG] [Thread-125891] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:08:38.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:08:38.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:08:38.383 [DEBUG] [Thread-125891] [transport.py] [_log()] userauth is OK
2025-11-04T01:08:38.383 [DEBUG] [Thread-125891] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:08:38.383 [DEBUG] [Thread-125891] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:08:38.383 [DEBUG] [Thread-125891] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:08:38.383 [DEBUG] [Thread-125891] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:08:38.403 [INFO] [Thread-125891] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:08:38.404 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:08:38.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:08:39.280 [DEBUG] [Thread-125891] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:08:39.281 [DEBUG] [Thread-125891] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:08:39.328 [DEBUG] [Thread-125891] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:08:39.328 [DEBUG] [Thread-125891] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:08:39.337 [DEBUG] [Thread-125891] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:08:39.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:08:39.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:08:39.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:08:39.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:08:39.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:08:39.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:08:39.370 [DEBUG] [Thread-125891] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:08:46.927 [DEBUG] [Thread-125893 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:09:02.018 [DEBUG] [Thread-125894 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:09:09.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:09:09.375 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:09:09.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:09:10.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 8, 40), 28.44, 13.31, 0.0, 19.27, 17.75, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:09:10.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:08:40
2025-11-04T01:09:10.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:09:11.020 [DEBUG] [Thread-125895] [transport.py] [_log()] starting thread (client mode): 0x117bf0d0
2025-11-04T01:09:11.021 [DEBUG] [Thread-125895] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:09:11.035 [DEBUG] [Thread-125895] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:09:11.035 [INFO] [Thread-125895] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:09:11.039 [DEBUG] [Thread-125895] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:09:11.039 [DEBUG] [Thread-125895] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:09:11.039 [DEBUG] [Thread-125895] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:09:11.039 [DEBUG] [Thread-125895] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:09:11.039 [DEBUG] [Thread-125895] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:09:11.039 [DEBUG] [Thread-125895] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:09:11.039 [DEBUG] [Thread-125895] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:09:11.040 [DEBUG] [Thread-125895] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:09:11.040 [DEBUG] [Thread-125895] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:09:11.040 [DEBUG] [Thread-125895] [transport.py] [_log()] client lang: <none>
2025-11-04T01:09:11.040 [DEBUG] [Thread-125895] [transport.py] [_log()] server lang: <none>
2025-11-04T01:09:11.040 [DEBUG] [Thread-125895] [transport.py] [_log()] kex follows: False
2025-11-04T01:09:11.040 [DEBUG] [Thread-125895] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:09:11.041 [DEBUG] [Thread-125895] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:09:11.041 [DEBUG] [Thread-125895] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:09:11.041 [DEBUG] [Thread-125895] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:09:11.041 [DEBUG] [Thread-125895] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:09:11.041 [DEBUG] [Thread-125895] [transport.py] [_log()] Compression: none
2025-11-04T01:09:11.041 [DEBUG] [Thread-125895] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:09:11.072 [DEBUG] [Thread-125895] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:09:11.076 [DEBUG] [Thread-125895] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:09:11.078 [DEBUG] [Thread-125895] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:09:11.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:09:11.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:09:11.082 [DEBUG] [Thread-125895] [transport.py] [_log()] userauth is OK
2025-11-04T01:09:11.083 [DEBUG] [Thread-125895] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:09:11.083 [DEBUG] [Thread-125895] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:09:11.083 [DEBUG] [Thread-125895] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:09:11.083 [DEBUG] [Thread-125895] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:09:11.109 [INFO] [Thread-125895] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:09:11.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:09:11.857 [DEBUG] [Thread-125895] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:09:11.857 [DEBUG] [Thread-125895] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:09:11.867 [DEBUG] [Thread-125895] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:09:11.899 [DEBUG] [Thread-125895] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:09:11.899 [DEBUG] [Thread-125895] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:09:11.901 [DEBUG] [Thread-125895] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:09:11.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:09:11.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:09:11.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:09:11.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:09:11.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:09:11.922 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:09:11.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:09:11.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:09:11.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:09:11.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.963987 -999.00  +17.90  18.01     18   -6.20 1 1 1 1 1     0    0 23.73 -19.49 ZNESW 18.4 18.0 303.8 23.4 18.2 -24.2 18.1 -23.3 17.9 -23.1 18.1 -23.8
2025-11-04T01:09:11.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:09:11.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:09:11.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.963987
2025-11-04T01:09:11.929 [DEBUG] [Thread-125895] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:09:11.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:09:11.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:09:11.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:09:11.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:09:11.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:09:11.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:08:40', tmtdew=28.44, humidity=13.31, cloud=0.0, wind=19.27, temperature=17.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:08:41', seeing=1.18, atlas_timestamp='2025-11-03T23:08:08.477', atlas_cloud=1, atlas_rain=1, zp_data=[0.01425000000000054, 0.05925000000000047, 0.08175000000000132, 0.08749999999999858, 0.05150000000000077, 0.03675000000000139, 0.04100000000000037, -0.018749999999998934, 0.05149999999999899, 0.08150000000000013, 0.14424999999999955, 0.05649999999999977, 0.2115000000000009, -0.16875000000000107, -0.07000000000000028, 0.08999999999999986, 0.08774999999999977, 0.1479999999999997, 0.16949999999999932, 0.16924999999999812, 0.14599999999999724, 0.15974999999999895, 0.06225000000000236, 0.025750000000000384, 0.06400000000000006, 0.22550000000000026, 0.1587499999999995, 0.1725000000000012, 0.2999999999999998, 0.11350000000000193, 0.11800000000000033, 0.12300000000000111, 0.10275000000000034], zp_timestamp='2025-11-03T23:06:00')
2025-11-04T01:09:12.007 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:09:12.021 [DEBUG] [Thread-125898] [transport.py] [_log()] starting thread (client mode): 0x8199c30
2025-11-04T01:09:12.021 [DEBUG] [Thread-125898] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:09:12.038 [DEBUG] [Thread-125898] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:09:12.038 [INFO] [Thread-125898] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:09:12.049 [DEBUG] [Thread-125898] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:09:12.049 [DEBUG] [Thread-125898] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:09:12.049 [DEBUG] [Thread-125898] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:09:12.049 [DEBUG] [Thread-125898] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:09:12.049 [DEBUG] [Thread-125898] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:09:12.049 [DEBUG] [Thread-125898] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:09:12.049 [DEBUG] [Thread-125898] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:09:12.049 [DEBUG] [Thread-125898] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:09:12.049 [DEBUG] [Thread-125898] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:09:12.049 [DEBUG] [Thread-125898] [transport.py] [_log()] client lang: <none>
2025-11-04T01:09:12.049 [DEBUG] [Thread-125898] [transport.py] [_log()] server lang: <none>
2025-11-04T01:09:12.049 [DEBUG] [Thread-125898] [transport.py] [_log()] kex follows: False
2025-11-04T01:09:12.049 [DEBUG] [Thread-125898] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:09:12.049 [DEBUG] [Thread-125898] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:09:12.049 [DEBUG] [Thread-125898] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:09:12.049 [DEBUG] [Thread-125898] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:09:12.049 [DEBUG] [Thread-125898] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:09:12.049 [DEBUG] [Thread-125898] [transport.py] [_log()] Compression: none
2025-11-04T01:09:12.049 [DEBUG] [Thread-125898] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:09:12.107 [DEBUG] [Thread-125898] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:09:12.107 [DEBUG] [Thread-125898] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:09:12.108 [DEBUG] [Thread-125898] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:09:12.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:09:12.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:09:12.163 [DEBUG] [Thread-125898] [transport.py] [_log()] userauth is OK
2025-11-04T01:09:12.163 [DEBUG] [Thread-125898] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:09:12.163 [DEBUG] [Thread-125898] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:09:12.163 [DEBUG] [Thread-125898] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:09:12.163 [DEBUG] [Thread-125898] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:09:12.178 [INFO] [Thread-125898] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:09:12.178 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:09:12.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:09:13.037 [DEBUG] [Thread-125898] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:09:13.038 [DEBUG] [Thread-125898] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:09:13.086 [DEBUG] [Thread-125898] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:09:13.087 [DEBUG] [Thread-125898] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:09:13.096 [DEBUG] [Thread-125898] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:09:13.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:09:13.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:09:13.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:09:13.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:09:13.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:09:13.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:09:13.148 [DEBUG] [Thread-125898] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:09:17.054 [DEBUG] [Thread-125900 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:09:27.604 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:09:27.605 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:09:32.159 [DEBUG] [Thread-125901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:09:36.650 [DEBUG] [Thread-125902 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:09:43.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:09:43.170 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:09:43.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:09:43.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 9, 13), 28.43, 13.33, 0.0, 18.99, 17.78, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:09:43.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:09:13
2025-11-04T01:09:44.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:09:44.230 [DEBUG] [Thread-125903] [transport.py] [_log()] starting thread (client mode): 0xed04d90
2025-11-04T01:09:44.230 [DEBUG] [Thread-125903] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:09:44.251 [DEBUG] [Thread-125903] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:09:44.251 [INFO] [Thread-125903] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:09:44.254 [DEBUG] [Thread-125903] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:09:44.254 [DEBUG] [Thread-125903] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:09:44.255 [DEBUG] [Thread-125903] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:09:44.255 [DEBUG] [Thread-125903] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:09:44.255 [DEBUG] [Thread-125903] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:09:44.255 [DEBUG] [Thread-125903] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:09:44.255 [DEBUG] [Thread-125903] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:09:44.255 [DEBUG] [Thread-125903] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:09:44.255 [DEBUG] [Thread-125903] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:09:44.255 [DEBUG] [Thread-125903] [transport.py] [_log()] client lang: <none>
2025-11-04T01:09:44.255 [DEBUG] [Thread-125903] [transport.py] [_log()] server lang: <none>
2025-11-04T01:09:44.255 [DEBUG] [Thread-125903] [transport.py] [_log()] kex follows: False
2025-11-04T01:09:44.255 [DEBUG] [Thread-125903] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:09:44.255 [DEBUG] [Thread-125903] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:09:44.255 [DEBUG] [Thread-125903] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:09:44.255 [DEBUG] [Thread-125903] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:09:44.256 [DEBUG] [Thread-125903] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:09:44.256 [DEBUG] [Thread-125903] [transport.py] [_log()] Compression: none
2025-11-04T01:09:44.256 [DEBUG] [Thread-125903] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:09:44.277 [DEBUG] [Thread-125903] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:09:44.278 [DEBUG] [Thread-125903] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:09:44.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:09:44.279 [DEBUG] [Thread-125903] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:09:44.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:09:44.281 [DEBUG] [Thread-125903] [transport.py] [_log()] userauth is OK
2025-11-04T01:09:44.281 [DEBUG] [Thread-125903] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:09:44.281 [DEBUG] [Thread-125903] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:09:44.281 [DEBUG] [Thread-125903] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:09:44.281 [DEBUG] [Thread-125903] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:09:44.317 [INFO] [Thread-125903] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:09:44.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:09:44.985 [DEBUG] [Thread-125903] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:09:44.985 [DEBUG] [Thread-125903] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:09:44.986 [DEBUG] [Thread-125903] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:09:45.026 [DEBUG] [Thread-125903] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:09:45.026 [DEBUG] [Thread-125903] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:09:45.028 [DEBUG] [Thread-125903] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:09:45.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:09:45.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:09:45.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:09:45.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:09:45.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:09:45.047 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:09:45.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:09:45.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:09:45.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:09:45.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.964682 -999.00  +17.90  16.23     18   -6.20 1 1 1 1 1     0    0 23.89 -21.20 ZNESW 19.2 16.2 309.1 23.2 18.2 -24.3 18.1 -23.4 17.9 -22.9 18.1 -23.9
2025-11-04T01:09:45.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:09:45.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:09:45.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.964682
2025-11-04T01:09:45.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:09:45.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:09:45.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:09:45.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:09:45.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:09:45.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:09:13', tmtdew=28.43, humidity=13.33, cloud=0.0, wind=18.99, temperature=17.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:09:13', seeing=1.24, atlas_timestamp='2025-11-03T23:09:08.525', atlas_cloud=1, atlas_rain=1, zp_data=[0.01425000000000054, 0.05925000000000047, 0.08175000000000132, 0.08749999999999858, 0.05150000000000077, 0.03675000000000139, 0.04100000000000037, -0.018749999999998934, 0.05149999999999899, 0.08150000000000013, 0.14424999999999955, 0.05649999999999977, 0.2115000000000009, -0.16875000000000107, -0.07000000000000028, 0.08999999999999986, 0.08774999999999977, 0.1479999999999997, 0.16949999999999932, 0.16924999999999812, 0.14599999999999724, 0.15974999999999895, 0.06225000000000236, 0.025750000000000384, 0.06400000000000006, 0.22550000000000026, 0.1587499999999995, 0.1725000000000012, 0.2999999999999998, 0.11350000000000193, 0.11800000000000033, 0.12300000000000111, 0.10275000000000034], zp_timestamp='2025-11-03T23:06:00')
2025-11-04T01:09:45.049 [DEBUG] [Thread-125903] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:09:45.120 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:09:45.132 [DEBUG] [Thread-125906] [transport.py] [_log()] starting thread (client mode): 0xed04490
2025-11-04T01:09:45.132 [DEBUG] [Thread-125906] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:09:45.147 [DEBUG] [Thread-125906] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:09:45.147 [INFO] [Thread-125906] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:09:45.155 [DEBUG] [Thread-125906] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:09:45.155 [DEBUG] [Thread-125906] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:09:45.155 [DEBUG] [Thread-125906] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:09:45.155 [DEBUG] [Thread-125906] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:09:45.155 [DEBUG] [Thread-125906] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:09:45.155 [DEBUG] [Thread-125906] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:09:45.155 [DEBUG] [Thread-125906] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:09:45.155 [DEBUG] [Thread-125906] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:09:45.155 [DEBUG] [Thread-125906] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:09:45.155 [DEBUG] [Thread-125906] [transport.py] [_log()] client lang: <none>
2025-11-04T01:09:45.155 [DEBUG] [Thread-125906] [transport.py] [_log()] server lang: <none>
2025-11-04T01:09:45.155 [DEBUG] [Thread-125906] [transport.py] [_log()] kex follows: False
2025-11-04T01:09:45.155 [DEBUG] [Thread-125906] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:09:45.155 [DEBUG] [Thread-125906] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:09:45.155 [DEBUG] [Thread-125906] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:09:45.156 [DEBUG] [Thread-125906] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:09:45.156 [DEBUG] [Thread-125906] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:09:45.156 [DEBUG] [Thread-125906] [transport.py] [_log()] Compression: none
2025-11-04T01:09:45.156 [DEBUG] [Thread-125906] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:09:45.215 [DEBUG] [Thread-125906] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:09:45.215 [DEBUG] [Thread-125906] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:09:45.216 [DEBUG] [Thread-125906] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:09:45.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:09:45.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:09:45.272 [DEBUG] [Thread-125906] [transport.py] [_log()] userauth is OK
2025-11-04T01:09:45.272 [DEBUG] [Thread-125906] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:09:45.272 [DEBUG] [Thread-125906] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:09:45.273 [DEBUG] [Thread-125906] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:09:45.273 [DEBUG] [Thread-125906] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:09:45.293 [INFO] [Thread-125906] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:09:45.293 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:09:45.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:09:46.133 [DEBUG] [Thread-125906] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:09:46.133 [DEBUG] [Thread-125906] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:09:46.180 [DEBUG] [Thread-125906] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:09:46.180 [DEBUG] [Thread-125906] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:09:46.189 [DEBUG] [Thread-125906] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:09:46.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:09:46.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:09:46.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:09:46.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:09:46.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:09:46.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:09:46.223 [DEBUG] [Thread-125906] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:09:47.184 [DEBUG] [Thread-125908 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:10:02.254 [DEBUG] [Thread-125909 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:10:16.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:10:16.257 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:10:16.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:10:16.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 9, 45), 28.31, 13.39, 0.0, 17.7, 17.74, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:10:16.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:09:45
2025-11-04T01:10:17.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:10:17.285 [DEBUG] [Thread-125910] [transport.py] [_log()] starting thread (client mode): 0xed05c00
2025-11-04T01:10:17.285 [DEBUG] [Thread-125910] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:10:17.289 [DEBUG] [Thread-125911 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:10:17.303 [DEBUG] [Thread-125910] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:10:17.303 [INFO] [Thread-125910] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:10:17.306 [DEBUG] [Thread-125910] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:10:17.307 [DEBUG] [Thread-125910] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:10:17.307 [DEBUG] [Thread-125910] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:10:17.307 [DEBUG] [Thread-125910] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:10:17.307 [DEBUG] [Thread-125910] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:10:17.307 [DEBUG] [Thread-125910] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:10:17.307 [DEBUG] [Thread-125910] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:10:17.307 [DEBUG] [Thread-125910] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:10:17.307 [DEBUG] [Thread-125910] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:10:17.307 [DEBUG] [Thread-125910] [transport.py] [_log()] client lang: <none>
2025-11-04T01:10:17.307 [DEBUG] [Thread-125910] [transport.py] [_log()] server lang: <none>
2025-11-04T01:10:17.307 [DEBUG] [Thread-125910] [transport.py] [_log()] kex follows: False
2025-11-04T01:10:17.307 [DEBUG] [Thread-125910] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:10:17.308 [DEBUG] [Thread-125910] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:10:17.308 [DEBUG] [Thread-125910] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:10:17.308 [DEBUG] [Thread-125910] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:10:17.308 [DEBUG] [Thread-125910] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:10:17.308 [DEBUG] [Thread-125910] [transport.py] [_log()] Compression: none
2025-11-04T01:10:17.308 [DEBUG] [Thread-125910] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:10:17.346 [DEBUG] [Thread-125910] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:10:17.350 [DEBUG] [Thread-125910] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:10:17.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:10:17.352 [DEBUG] [Thread-125910] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:10:17.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:10:17.390 [DEBUG] [Thread-125910] [transport.py] [_log()] userauth is OK
2025-11-04T01:10:17.390 [DEBUG] [Thread-125910] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:10:17.391 [DEBUG] [Thread-125910] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:10:17.391 [DEBUG] [Thread-125910] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:10:17.391 [DEBUG] [Thread-125910] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:10:17.431 [INFO] [Thread-125910] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:10:17.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:10:18.110 [DEBUG] [Thread-125910] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:10:18.110 [DEBUG] [Thread-125910] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:10:18.111 [DEBUG] [Thread-125910] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:10:18.152 [DEBUG] [Thread-125910] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:10:18.152 [DEBUG] [Thread-125910] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:10:18.154 [DEBUG] [Thread-125910] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:10:18.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:10:18.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:10:18.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:10:18.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:10:18.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:10:18.173 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:10:18.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:10:18.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:10:18.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:10:18.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.965029 -999.00  +17.90  15.68     18   -6.20 1 1 1 1 1     0    0 23.47 -20.94 ZNESW 18.0 15.7 309.2 21.2 18.2 -24.2 18.1 -23.3 17.9 -22.8 18.1 -23.9
2025-11-04T01:10:18.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:10:18.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:10:18.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.965029
2025-11-04T01:10:18.180 [DEBUG] [Thread-125910] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:10:18.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:10:18.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:10:18.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:10:18.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:10:18.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:10:18.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:09:45', tmtdew=28.31, humidity=13.39, cloud=0.0, wind=17.7, temperature=17.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:09:46', seeing=1.24, atlas_timestamp='2025-11-03T23:09:38.506', atlas_cloud=1, atlas_rain=1, zp_data=[0.01425000000000054, 0.05925000000000047, 0.08175000000000132, 0.08749999999999858, 0.05150000000000077, 0.03675000000000139, 0.04100000000000037, -0.018749999999998934, 0.05149999999999899, 0.08150000000000013, 0.14424999999999955, 0.05649999999999977, 0.2115000000000009, -0.16875000000000107, -0.07000000000000028, 0.08999999999999986, 0.08774999999999977, 0.1479999999999997, 0.16949999999999932, 0.16924999999999812, 0.14599999999999724, 0.15974999999999895, 0.06225000000000236, 0.025750000000000384, 0.06400000000000006, 0.22550000000000026, 0.1587499999999995, 0.1725000000000012, 0.2999999999999998, 0.11350000000000193, 0.11800000000000033, 0.12300000000000111, 0.10275000000000034], zp_timestamp='2025-11-03T23:09:00')
2025-11-04T01:10:18.261 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:10:18.276 [DEBUG] [Thread-125914] [transport.py] [_log()] starting thread (client mode): 0xed05ae0
2025-11-04T01:10:18.276 [DEBUG] [Thread-125914] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:10:18.296 [DEBUG] [Thread-125914] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:10:18.296 [INFO] [Thread-125914] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:10:18.308 [DEBUG] [Thread-125914] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:10:18.308 [DEBUG] [Thread-125914] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:10:18.308 [DEBUG] [Thread-125914] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:10:18.309 [DEBUG] [Thread-125914] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:10:18.309 [DEBUG] [Thread-125914] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:10:18.309 [DEBUG] [Thread-125914] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:10:18.309 [DEBUG] [Thread-125914] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:10:18.309 [DEBUG] [Thread-125914] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:10:18.309 [DEBUG] [Thread-125914] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:10:18.309 [DEBUG] [Thread-125914] [transport.py] [_log()] client lang: <none>
2025-11-04T01:10:18.309 [DEBUG] [Thread-125914] [transport.py] [_log()] server lang: <none>
2025-11-04T01:10:18.309 [DEBUG] [Thread-125914] [transport.py] [_log()] kex follows: False
2025-11-04T01:10:18.310 [DEBUG] [Thread-125914] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:10:18.310 [DEBUG] [Thread-125914] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:10:18.310 [DEBUG] [Thread-125914] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:10:18.310 [DEBUG] [Thread-125914] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:10:18.310 [DEBUG] [Thread-125914] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:10:18.310 [DEBUG] [Thread-125914] [transport.py] [_log()] Compression: none
2025-11-04T01:10:18.310 [DEBUG] [Thread-125914] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:10:18.371 [DEBUG] [Thread-125914] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:10:18.372 [DEBUG] [Thread-125914] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:10:18.372 [DEBUG] [Thread-125914] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:10:18.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:10:18.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:10:18.438 [DEBUG] [Thread-125914] [transport.py] [_log()] userauth is OK
2025-11-04T01:10:18.439 [DEBUG] [Thread-125914] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:10:18.439 [DEBUG] [Thread-125914] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:10:18.439 [DEBUG] [Thread-125914] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:10:18.439 [DEBUG] [Thread-125914] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:10:18.464 [INFO] [Thread-125914] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:10:18.464 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:10:18.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:10:19.313 [DEBUG] [Thread-125914] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:10:19.313 [DEBUG] [Thread-125914] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:10:19.362 [DEBUG] [Thread-125914] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:10:19.362 [DEBUG] [Thread-125914] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:10:19.372 [DEBUG] [Thread-125914] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:10:19.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:10:19.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:10:19.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:10:19.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:10:19.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:10:19.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:10:19.408 [DEBUG] [Thread-125914] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:10:27.817 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:10:27.819 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:10:32.347 [DEBUG] [Thread-125916 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:10:36.911 [DEBUG] [Thread-125917 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:10:47.460 [DEBUG] [Thread-125918 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:10:49.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:10:49.432 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:10:49.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:10:50.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 10, 18), 28.35, 13.36, 0.0, 17.8, 17.77, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:10:50.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:10:18
2025-11-04T01:10:50.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:10:50.473 [DEBUG] [Thread-125919] [transport.py] [_log()] starting thread (client mode): 0x117be920
2025-11-04T01:10:50.474 [DEBUG] [Thread-125919] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:10:50.489 [DEBUG] [Thread-125919] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:10:50.489 [INFO] [Thread-125919] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:10:50.492 [DEBUG] [Thread-125919] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:10:50.492 [DEBUG] [Thread-125919] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:10:50.492 [DEBUG] [Thread-125919] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:10:50.492 [DEBUG] [Thread-125919] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:10:50.492 [DEBUG] [Thread-125919] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:10:50.492 [DEBUG] [Thread-125919] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:10:50.493 [DEBUG] [Thread-125919] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:10:50.493 [DEBUG] [Thread-125919] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:10:50.493 [DEBUG] [Thread-125919] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:10:50.493 [DEBUG] [Thread-125919] [transport.py] [_log()] client lang: <none>
2025-11-04T01:10:50.493 [DEBUG] [Thread-125919] [transport.py] [_log()] server lang: <none>
2025-11-04T01:10:50.493 [DEBUG] [Thread-125919] [transport.py] [_log()] kex follows: False
2025-11-04T01:10:50.493 [DEBUG] [Thread-125919] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:10:50.493 [DEBUG] [Thread-125919] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:10:50.493 [DEBUG] [Thread-125919] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:10:50.493 [DEBUG] [Thread-125919] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:10:50.493 [DEBUG] [Thread-125919] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:10:50.493 [DEBUG] [Thread-125919] [transport.py] [_log()] Compression: none
2025-11-04T01:10:50.493 [DEBUG] [Thread-125919] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:10:50.520 [DEBUG] [Thread-125919] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:10:50.523 [DEBUG] [Thread-125919] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:10:50.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:10:50.525 [DEBUG] [Thread-125919] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:10:50.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:10:50.564 [DEBUG] [Thread-125919] [transport.py] [_log()] userauth is OK
2025-11-04T01:10:50.565 [DEBUG] [Thread-125919] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:10:50.565 [DEBUG] [Thread-125919] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:10:50.565 [DEBUG] [Thread-125919] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:10:50.565 [DEBUG] [Thread-125919] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:10:50.596 [INFO] [Thread-125919] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:10:50.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:10:51.205 [DEBUG] [Thread-125919] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:10:51.205 [DEBUG] [Thread-125919] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:10:51.206 [DEBUG] [Thread-125919] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:10:51.246 [DEBUG] [Thread-125919] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:10:51.246 [DEBUG] [Thread-125919] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:10:51.248 [DEBUG] [Thread-125919] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:10:51.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:10:51.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:10:51.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:10:51.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:10:51.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:10:51.268 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:10:51.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:10:51.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:10:51.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:10:51.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.965376 -999.00  +17.90  16.83     18   -6.30 1 1 1 1 1     0    0 23.53 -22.56 ZNESW 19.1 16.8 306.6 20.7 18.2 -24.3 18.1 -23.4 17.9 -23.0 18.2 -23.9
2025-11-04T01:10:51.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:10:51.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:10:51.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.965376
2025-11-04T01:10:51.275 [DEBUG] [Thread-125919] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:10:51.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:10:51.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:10:51.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:10:51.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:10:51.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:10:51.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:10:18', tmtdew=28.35, humidity=13.36, cloud=0.0, wind=17.8, temperature=17.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:10:18', seeing=1.15, atlas_timestamp='2025-11-03T23:10:08.486', atlas_cloud=1, atlas_rain=1, zp_data=[0.01425000000000054, 0.05925000000000047, 0.08175000000000132, 0.08749999999999858, 0.05150000000000077, 0.03675000000000139, 0.04100000000000037, -0.018749999999998934, 0.05149999999999899, 0.08150000000000013, 0.14424999999999955, 0.05649999999999977, 0.2115000000000009, -0.16875000000000107, -0.07000000000000028, 0.08999999999999986, 0.08774999999999977, 0.1479999999999997, 0.16949999999999932, 0.16924999999999812, 0.14599999999999724, 0.15974999999999895, 0.06225000000000236, 0.025750000000000384, 0.06400000000000006, 0.22550000000000026, 0.1587499999999995, 0.1725000000000012, 0.2999999999999998, 0.11350000000000193, 0.11800000000000033, 0.12300000000000111, 0.10275000000000034], zp_timestamp='2025-11-03T23:09:00')
2025-11-04T01:10:51.362 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:10:51.374 [DEBUG] [Thread-125922] [transport.py] [_log()] starting thread (client mode): 0x81984c0
2025-11-04T01:10:51.374 [DEBUG] [Thread-125922] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:10:51.389 [DEBUG] [Thread-125922] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:10:51.389 [INFO] [Thread-125922] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:10:51.397 [DEBUG] [Thread-125922] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:10:51.397 [DEBUG] [Thread-125922] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:10:51.397 [DEBUG] [Thread-125922] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:10:51.397 [DEBUG] [Thread-125922] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:10:51.397 [DEBUG] [Thread-125922] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:10:51.397 [DEBUG] [Thread-125922] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:10:51.397 [DEBUG] [Thread-125922] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:10:51.397 [DEBUG] [Thread-125922] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:10:51.397 [DEBUG] [Thread-125922] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:10:51.397 [DEBUG] [Thread-125922] [transport.py] [_log()] client lang: <none>
2025-11-04T01:10:51.397 [DEBUG] [Thread-125922] [transport.py] [_log()] server lang: <none>
2025-11-04T01:10:51.397 [DEBUG] [Thread-125922] [transport.py] [_log()] kex follows: False
2025-11-04T01:10:51.397 [DEBUG] [Thread-125922] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:10:51.397 [DEBUG] [Thread-125922] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:10:51.397 [DEBUG] [Thread-125922] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:10:51.397 [DEBUG] [Thread-125922] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:10:51.397 [DEBUG] [Thread-125922] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:10:51.397 [DEBUG] [Thread-125922] [transport.py] [_log()] Compression: none
2025-11-04T01:10:51.397 [DEBUG] [Thread-125922] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:10:51.457 [DEBUG] [Thread-125922] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:10:51.457 [DEBUG] [Thread-125922] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:10:51.458 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:10:51.458 [DEBUG] [Thread-125922] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:10:51.458 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:10:51.516 [DEBUG] [Thread-125922] [transport.py] [_log()] userauth is OK
2025-11-04T01:10:51.516 [DEBUG] [Thread-125922] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:10:51.516 [DEBUG] [Thread-125922] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:10:51.516 [DEBUG] [Thread-125922] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:10:51.516 [DEBUG] [Thread-125922] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:10:51.534 [INFO] [Thread-125922] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:10:51.535 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:10:51.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:10:52.368 [DEBUG] [Thread-125922] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:10:52.368 [DEBUG] [Thread-125922] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:10:52.421 [DEBUG] [Thread-125922] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:10:52.421 [DEBUG] [Thread-125922] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:10:52.430 [DEBUG] [Thread-125922] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:10:52.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:10:52.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:10:52.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:10:52.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:10:52.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:10:52.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:10:52.466 [DEBUG] [Thread-125922] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:11:02.499 [DEBUG] [Thread-125924 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:11:17.604 [DEBUG] [Thread-125925 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:11:22.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:11:22.469 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:11:22.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:11:23.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 10, 50), 28.35, 13.36, 0.0, 16.25, 17.77, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:11:23.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:10:50
2025-11-04T01:11:23.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:11:23.743 [DEBUG] [Thread-125926] [transport.py] [_log()] starting thread (client mode): 0xed046d0
2025-11-04T01:11:23.744 [DEBUG] [Thread-125926] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:11:23.761 [DEBUG] [Thread-125926] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:11:23.761 [INFO] [Thread-125926] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:11:23.764 [DEBUG] [Thread-125926] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:11:23.764 [DEBUG] [Thread-125926] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:11:23.764 [DEBUG] [Thread-125926] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:11:23.764 [DEBUG] [Thread-125926] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:11:23.764 [DEBUG] [Thread-125926] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:11:23.764 [DEBUG] [Thread-125926] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:11:23.764 [DEBUG] [Thread-125926] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:11:23.765 [DEBUG] [Thread-125926] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:11:23.765 [DEBUG] [Thread-125926] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:11:23.765 [DEBUG] [Thread-125926] [transport.py] [_log()] client lang: <none>
2025-11-04T01:11:23.765 [DEBUG] [Thread-125926] [transport.py] [_log()] server lang: <none>
2025-11-04T01:11:23.765 [DEBUG] [Thread-125926] [transport.py] [_log()] kex follows: False
2025-11-04T01:11:23.765 [DEBUG] [Thread-125926] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:11:23.765 [DEBUG] [Thread-125926] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:11:23.765 [DEBUG] [Thread-125926] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:11:23.765 [DEBUG] [Thread-125926] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:11:23.765 [DEBUG] [Thread-125926] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:11:23.765 [DEBUG] [Thread-125926] [transport.py] [_log()] Compression: none
2025-11-04T01:11:23.765 [DEBUG] [Thread-125926] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:11:23.788 [DEBUG] [Thread-125926] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:11:23.790 [DEBUG] [Thread-125926] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:11:23.791 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:11:23.792 [DEBUG] [Thread-125926] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:11:23.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:11:23.794 [DEBUG] [Thread-125926] [transport.py] [_log()] userauth is OK
2025-11-04T01:11:23.794 [DEBUG] [Thread-125926] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:11:23.794 [DEBUG] [Thread-125926] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:11:23.794 [DEBUG] [Thread-125926] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:11:23.794 [DEBUG] [Thread-125926] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:11:23.819 [INFO] [Thread-125926] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:11:23.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:11:24.461 [DEBUG] [Thread-125926] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:11:24.461 [DEBUG] [Thread-125926] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:11:24.461 [DEBUG] [Thread-125926] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:11:24.503 [DEBUG] [Thread-125926] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:11:24.503 [DEBUG] [Thread-125926] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:11:24.505 [DEBUG] [Thread-125926] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:11:24.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:11:24.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:11:24.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:11:24.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:11:24.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:11:24.525 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:11:24.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:11:24.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:11:24.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:11:24.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.965723 -999.00  +17.80  16.14     18   -6.30 1 1 1 1 1     0    0 23.65 -23.65 ZNESW 15.9 16.1 308.2 22.6 18.1 -24.2 18.1 -23.3 17.9 -23.0 18.1 -23.7
2025-11-04T01:11:24.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:11:24.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:11:24.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.965723
2025-11-04T01:11:24.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:11:24.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:11:24.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:11:24.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:11:24.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:11:24.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:10:50', tmtdew=28.35, humidity=13.36, cloud=0.0, wind=16.25, temperature=17.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:10:51', seeing=0.99, atlas_timestamp='2025-11-03T23:10:38.467', atlas_cloud=1, atlas_rain=1, zp_data=[0.01425000000000054, 0.05925000000000047, 0.08175000000000132, 0.08749999999999858, 0.05150000000000077, 0.03675000000000139, 0.04100000000000037, -0.018749999999998934, 0.05149999999999899, 0.08150000000000013, 0.14424999999999955, 0.05649999999999977, 0.2115000000000009, -0.16875000000000107, -0.07000000000000028, 0.08999999999999986, 0.08774999999999977, 0.1479999999999997, 0.16949999999999932, 0.16924999999999812, 0.14599999999999724, 0.15974999999999895, 0.06225000000000236, 0.025750000000000384, 0.06400000000000006, 0.22550000000000026, 0.1587499999999995, 0.1725000000000012, 0.2999999999999998, 0.11350000000000193, 0.11800000000000033, 0.12300000000000111, 0.10275000000000034], zp_timestamp='2025-11-03T23:09:00')
2025-11-04T01:11:24.526 [DEBUG] [Thread-125926] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:11:24.614 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:11:24.625 [DEBUG] [Thread-125929] [transport.py] [_log()] starting thread (client mode): 0xed07100
2025-11-04T01:11:24.625 [DEBUG] [Thread-125929] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:11:24.641 [DEBUG] [Thread-125929] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:11:24.641 [INFO] [Thread-125929] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:11:24.649 [DEBUG] [Thread-125929] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:11:24.649 [DEBUG] [Thread-125929] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:11:24.649 [DEBUG] [Thread-125929] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:11:24.649 [DEBUG] [Thread-125929] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:11:24.649 [DEBUG] [Thread-125929] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:11:24.649 [DEBUG] [Thread-125929] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:11:24.649 [DEBUG] [Thread-125929] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:11:24.649 [DEBUG] [Thread-125929] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:11:24.649 [DEBUG] [Thread-125929] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:11:24.649 [DEBUG] [Thread-125929] [transport.py] [_log()] client lang: <none>
2025-11-04T01:11:24.649 [DEBUG] [Thread-125929] [transport.py] [_log()] server lang: <none>
2025-11-04T01:11:24.649 [DEBUG] [Thread-125929] [transport.py] [_log()] kex follows: False
2025-11-04T01:11:24.649 [DEBUG] [Thread-125929] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:11:24.649 [DEBUG] [Thread-125929] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:11:24.649 [DEBUG] [Thread-125929] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:11:24.649 [DEBUG] [Thread-125929] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:11:24.649 [DEBUG] [Thread-125929] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:11:24.649 [DEBUG] [Thread-125929] [transport.py] [_log()] Compression: none
2025-11-04T01:11:24.649 [DEBUG] [Thread-125929] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:11:24.706 [DEBUG] [Thread-125929] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:11:24.707 [DEBUG] [Thread-125929] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:11:24.707 [DEBUG] [Thread-125929] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:11:24.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:11:24.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:11:24.763 [DEBUG] [Thread-125929] [transport.py] [_log()] userauth is OK
2025-11-04T01:11:24.763 [DEBUG] [Thread-125929] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:11:24.763 [DEBUG] [Thread-125929] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:11:24.763 [DEBUG] [Thread-125929] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:11:24.764 [DEBUG] [Thread-125929] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:11:24.778 [INFO] [Thread-125929] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:11:24.779 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:11:24.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:11:25.635 [DEBUG] [Thread-125929] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:11:25.635 [DEBUG] [Thread-125929] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:11:25.686 [DEBUG] [Thread-125929] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:11:25.686 [DEBUG] [Thread-125929] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:11:25.699 [DEBUG] [Thread-125929] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:11:25.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:11:25.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:11:25.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:11:25.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:11:25.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:11:25.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:11:25.736 [DEBUG] [Thread-125929] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:11:28.022 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:11:28.023 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:11:32.632 [DEBUG] [Thread-125931 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:11:37.206 [DEBUG] [Thread-125932 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:11:47.681 [DEBUG] [Thread-125933 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:11:55.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:11:55.757 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:11:55.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:11:56.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 11, 23), 28.33, 13.39, 0.0, 17.5, 17.8, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:11:56.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:11:23
2025-11-04T01:11:57.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:11:57.195 [DEBUG] [Thread-125934] [transport.py] [_log()] starting thread (client mode): 0x8199f90
2025-11-04T01:11:57.196 [DEBUG] [Thread-125934] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:11:57.214 [DEBUG] [Thread-125934] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:11:57.214 [INFO] [Thread-125934] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:11:57.217 [DEBUG] [Thread-125934] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:11:57.217 [DEBUG] [Thread-125934] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:11:57.217 [DEBUG] [Thread-125934] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:11:57.218 [DEBUG] [Thread-125934] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:11:57.218 [DEBUG] [Thread-125934] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:11:57.218 [DEBUG] [Thread-125934] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:11:57.218 [DEBUG] [Thread-125934] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:11:57.218 [DEBUG] [Thread-125934] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:11:57.218 [DEBUG] [Thread-125934] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:11:57.218 [DEBUG] [Thread-125934] [transport.py] [_log()] client lang: <none>
2025-11-04T01:11:57.218 [DEBUG] [Thread-125934] [transport.py] [_log()] server lang: <none>
2025-11-04T01:11:57.218 [DEBUG] [Thread-125934] [transport.py] [_log()] kex follows: False
2025-11-04T01:11:57.218 [DEBUG] [Thread-125934] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:11:57.218 [DEBUG] [Thread-125934] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:11:57.218 [DEBUG] [Thread-125934] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:11:57.218 [DEBUG] [Thread-125934] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:11:57.218 [DEBUG] [Thread-125934] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:11:57.218 [DEBUG] [Thread-125934] [transport.py] [_log()] Compression: none
2025-11-04T01:11:57.218 [DEBUG] [Thread-125934] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:11:57.244 [DEBUG] [Thread-125934] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:11:57.247 [DEBUG] [Thread-125934] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:11:57.248 [DEBUG] [Thread-125934] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:11:57.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:11:57.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:11:57.288 [DEBUG] [Thread-125934] [transport.py] [_log()] userauth is OK
2025-11-04T01:11:57.289 [DEBUG] [Thread-125934] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:11:57.289 [DEBUG] [Thread-125934] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:11:57.289 [DEBUG] [Thread-125934] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:11:57.289 [DEBUG] [Thread-125934] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:11:57.306 [INFO] [Thread-125934] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:11:57.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:11:57.964 [DEBUG] [Thread-125934] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:11:57.964 [DEBUG] [Thread-125934] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:11:57.965 [DEBUG] [Thread-125934] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:11:58.005 [DEBUG] [Thread-125934] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:11:58.005 [DEBUG] [Thread-125934] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:11:58.007 [DEBUG] [Thread-125934] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:11:58.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:11:58.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:11:58.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:11:58.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:11:58.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:11:58.026 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:11:58.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:11:58.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:11:58.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:11:58.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.966070 -999.00  +17.80  17.93     18   -6.30 1 1 1 1 1     0    0 23.70 -22.70 ZNESW 14.5 17.9 297.4 20.6 18.2 -24.2 18.1 -23.2 17.9 -22.9 18.1 -23.7
2025-11-04T01:11:58.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:11:58.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:11:58.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.966070
2025-11-04T01:11:58.033 [DEBUG] [Thread-125934] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:11:58.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:11:58.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:11:58.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:11:58.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:11:58.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:11:58.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:11:23', tmtdew=28.33, humidity=13.39, cloud=0.0, wind=17.5, temperature=17.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:11:23', seeing=0.99, atlas_timestamp='2025-11-03T23:11:08.448', atlas_cloud=1, atlas_rain=1, zp_data=[0.01425000000000054, 0.05925000000000047, 0.08175000000000132, 0.08749999999999858, 0.05150000000000077, 0.03675000000000139, 0.04100000000000037, -0.018749999999998934, 0.05149999999999899, 0.08150000000000013, 0.14424999999999955, 0.05649999999999977, 0.2115000000000009, -0.16875000000000107, -0.07000000000000028, 0.08999999999999986, 0.08774999999999977, 0.1479999999999997, 0.16949999999999932, 0.16924999999999812, 0.14599999999999724, 0.15974999999999895, 0.06225000000000236, 0.025750000000000384, 0.06400000000000006, 0.22550000000000026, 0.1587499999999995, 0.1725000000000012, 0.2999999999999998, 0.11350000000000193, 0.11800000000000033, 0.12300000000000111, 0.10275000000000034], zp_timestamp='2025-11-03T23:09:00')
2025-11-04T01:11:58.121 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:11:58.137 [DEBUG] [Thread-125937] [transport.py] [_log()] starting thread (client mode): 0xed057b0
2025-11-04T01:11:58.137 [DEBUG] [Thread-125937] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:11:58.155 [DEBUG] [Thread-125937] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:11:58.155 [INFO] [Thread-125937] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:11:58.166 [DEBUG] [Thread-125937] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:11:58.166 [DEBUG] [Thread-125937] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:11:58.166 [DEBUG] [Thread-125937] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:11:58.166 [DEBUG] [Thread-125937] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:11:58.166 [DEBUG] [Thread-125937] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:11:58.166 [DEBUG] [Thread-125937] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:11:58.166 [DEBUG] [Thread-125937] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:11:58.166 [DEBUG] [Thread-125937] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:11:58.166 [DEBUG] [Thread-125937] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:11:58.166 [DEBUG] [Thread-125937] [transport.py] [_log()] client lang: <none>
2025-11-04T01:11:58.166 [DEBUG] [Thread-125937] [transport.py] [_log()] server lang: <none>
2025-11-04T01:11:58.166 [DEBUG] [Thread-125937] [transport.py] [_log()] kex follows: False
2025-11-04T01:11:58.166 [DEBUG] [Thread-125937] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:11:58.166 [DEBUG] [Thread-125937] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:11:58.166 [DEBUG] [Thread-125937] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:11:58.166 [DEBUG] [Thread-125937] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:11:58.166 [DEBUG] [Thread-125937] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:11:58.166 [DEBUG] [Thread-125937] [transport.py] [_log()] Compression: none
2025-11-04T01:11:58.166 [DEBUG] [Thread-125937] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:11:58.226 [DEBUG] [Thread-125937] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:11:58.226 [DEBUG] [Thread-125937] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:11:58.226 [DEBUG] [Thread-125937] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:11:58.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:11:58.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:11:58.293 [DEBUG] [Thread-125937] [transport.py] [_log()] userauth is OK
2025-11-04T01:11:58.293 [DEBUG] [Thread-125937] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:11:58.293 [DEBUG] [Thread-125937] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:11:58.293 [DEBUG] [Thread-125937] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:11:58.293 [DEBUG] [Thread-125937] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:11:58.314 [INFO] [Thread-125937] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:11:58.314 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:11:58.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:11:59.152 [DEBUG] [Thread-125937] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:11:59.153 [DEBUG] [Thread-125937] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:11:59.194 [DEBUG] [Thread-125937] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:11:59.195 [DEBUG] [Thread-125937] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:11:59.209 [DEBUG] [Thread-125937] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:11:59.220 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:11:59.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:11:59.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:11:59.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:11:59.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:11:59.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:11:59.253 [DEBUG] [Thread-125937] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:12:02.711 [DEBUG] [Thread-125939 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:12:17.747 [DEBUG] [Thread-125940 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:12:28.224 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:12:28.226 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:12:29.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:12:29.272 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:12:29.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:12:30.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 11, 56), 28.34, 13.38, 0.0, 16.44, 17.79, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:12:30.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:11:56
2025-11-04T01:12:30.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:12:30.412 [DEBUG] [Thread-125941] [transport.py] [_log()] starting thread (client mode): 0xed07670
2025-11-04T01:12:30.413 [DEBUG] [Thread-125941] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:12:30.432 [DEBUG] [Thread-125941] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:12:30.432 [INFO] [Thread-125941] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:12:30.435 [DEBUG] [Thread-125941] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:12:30.435 [DEBUG] [Thread-125941] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:12:30.435 [DEBUG] [Thread-125941] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:12:30.435 [DEBUG] [Thread-125941] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:12:30.435 [DEBUG] [Thread-125941] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:12:30.435 [DEBUG] [Thread-125941] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:12:30.435 [DEBUG] [Thread-125941] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:12:30.435 [DEBUG] [Thread-125941] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:12:30.435 [DEBUG] [Thread-125941] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:12:30.435 [DEBUG] [Thread-125941] [transport.py] [_log()] client lang: <none>
2025-11-04T01:12:30.435 [DEBUG] [Thread-125941] [transport.py] [_log()] server lang: <none>
2025-11-04T01:12:30.435 [DEBUG] [Thread-125941] [transport.py] [_log()] kex follows: False
2025-11-04T01:12:30.435 [DEBUG] [Thread-125941] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:12:30.435 [DEBUG] [Thread-125941] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:12:30.435 [DEBUG] [Thread-125941] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:12:30.435 [DEBUG] [Thread-125941] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:12:30.435 [DEBUG] [Thread-125941] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:12:30.436 [DEBUG] [Thread-125941] [transport.py] [_log()] Compression: none
2025-11-04T01:12:30.436 [DEBUG] [Thread-125941] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:12:30.454 [DEBUG] [Thread-125941] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:12:30.454 [DEBUG] [Thread-125941] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:12:30.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:12:30.455 [DEBUG] [Thread-125941] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:12:30.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:12:30.456 [DEBUG] [Thread-125941] [transport.py] [_log()] userauth is OK
2025-11-04T01:12:30.456 [DEBUG] [Thread-125941] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:12:30.456 [DEBUG] [Thread-125941] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:12:30.456 [DEBUG] [Thread-125941] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:12:30.456 [DEBUG] [Thread-125941] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:12:30.465 [INFO] [Thread-125941] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:12:30.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:12:31.134 [DEBUG] [Thread-125941] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:12:31.135 [DEBUG] [Thread-125941] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:12:31.135 [DEBUG] [Thread-125941] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:12:31.175 [DEBUG] [Thread-125941] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:12:31.175 [DEBUG] [Thread-125941] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:12:31.177 [DEBUG] [Thread-125941] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:12:31.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:12:31.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:12:31.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:12:31.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:12:31.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:12:31.196 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:12:31.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:12:31.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:12:31.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:12:31.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.966418 -999.00  +17.80  18.85     18   -6.30 1 1 1 1 1     0    0 23.69 -23.53 ZNESW 19.2 18.9 308.4 24.3 18.2 -24.3 18.1 -23.3 17.9 -22.6 18.1 -23.9
2025-11-04T01:12:31.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:12:31.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:12:31.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.966418
2025-11-04T01:12:31.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:12:31.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:12:31.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:12:31.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:12:31.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:12:31.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:11:56', tmtdew=28.34, humidity=13.38, cloud=0.0, wind=16.44, temperature=17.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:12:29', seeing=1.08, atlas_timestamp='2025-11-03T23:11:38.515', atlas_cloud=1, atlas_rain=1, zp_data=[0.01425000000000054, 0.05925000000000047, 0.08175000000000132, 0.08749999999999858, 0.05150000000000077, 0.03675000000000139, 0.04100000000000037, -0.018749999999998934, 0.05149999999999899, 0.08150000000000013, 0.14424999999999955, 0.05649999999999977, 0.2115000000000009, -0.16875000000000107, -0.07000000000000028, 0.08999999999999986, 0.08774999999999977, 0.1479999999999997, 0.16949999999999932, 0.16924999999999812, 0.14599999999999724, 0.15974999999999895, 0.06225000000000236, 0.025750000000000384, 0.06400000000000006, 0.22550000000000026, 0.1587499999999995, 0.1725000000000012, 0.2999999999999998, 0.11350000000000193, 0.11800000000000033, 0.12300000000000111, 0.10275000000000034], zp_timestamp='2025-11-03T23:09:00')
2025-11-04T01:12:31.197 [DEBUG] [Thread-125941] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:12:31.272 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:12:31.283 [DEBUG] [Thread-125944] [transport.py] [_log()] starting thread (client mode): 0xed05570
2025-11-04T01:12:31.283 [DEBUG] [Thread-125944] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:12:31.298 [DEBUG] [Thread-125944] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:12:31.298 [INFO] [Thread-125944] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:12:31.305 [DEBUG] [Thread-125944] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:12:31.305 [DEBUG] [Thread-125944] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:12:31.305 [DEBUG] [Thread-125944] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:12:31.305 [DEBUG] [Thread-125944] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:12:31.305 [DEBUG] [Thread-125944] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:12:31.305 [DEBUG] [Thread-125944] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:12:31.305 [DEBUG] [Thread-125944] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:12:31.305 [DEBUG] [Thread-125944] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:12:31.305 [DEBUG] [Thread-125944] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:12:31.305 [DEBUG] [Thread-125944] [transport.py] [_log()] client lang: <none>
2025-11-04T01:12:31.305 [DEBUG] [Thread-125944] [transport.py] [_log()] server lang: <none>
2025-11-04T01:12:31.305 [DEBUG] [Thread-125944] [transport.py] [_log()] kex follows: False
2025-11-04T01:12:31.305 [DEBUG] [Thread-125944] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:12:31.306 [DEBUG] [Thread-125944] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:12:31.306 [DEBUG] [Thread-125944] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:12:31.306 [DEBUG] [Thread-125944] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:12:31.306 [DEBUG] [Thread-125944] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:12:31.306 [DEBUG] [Thread-125944] [transport.py] [_log()] Compression: none
2025-11-04T01:12:31.306 [DEBUG] [Thread-125944] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:12:31.362 [DEBUG] [Thread-125944] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:12:31.363 [DEBUG] [Thread-125944] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:12:31.363 [DEBUG] [Thread-125944] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:12:31.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:12:31.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:12:31.419 [DEBUG] [Thread-125944] [transport.py] [_log()] userauth is OK
2025-11-04T01:12:31.420 [DEBUG] [Thread-125944] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:12:31.420 [DEBUG] [Thread-125944] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:12:31.420 [DEBUG] [Thread-125944] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:12:31.420 [DEBUG] [Thread-125944] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:12:31.439 [INFO] [Thread-125944] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:12:31.439 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:12:31.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:12:32.347 [DEBUG] [Thread-125944] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:12:32.347 [DEBUG] [Thread-125944] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:12:32.396 [DEBUG] [Thread-125944] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:12:32.396 [DEBUG] [Thread-125944] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:12:32.406 [DEBUG] [Thread-125944] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:12:32.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:12:32.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:12:32.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:12:32.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:12:32.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:12:32.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:12:32.444 [DEBUG] [Thread-125944] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:12:32.782 [DEBUG] [Thread-125946 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:12:37.467 [DEBUG] [Thread-125947 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:12:47.829 [DEBUG] [Thread-125948 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:13:02.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:13:02.465 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:13:02.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:13:02.853 [DEBUG] [Thread-125949 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:13:03.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 12, 28), 28.38, 13.33, 0.0, 17.41, 17.77, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:13:03.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:12:28
2025-11-04T01:13:03.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:13:03.686 [DEBUG] [Thread-125950] [transport.py] [_log()] starting thread (client mode): 0xed075b0
2025-11-04T01:13:03.687 [DEBUG] [Thread-125950] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:13:03.703 [DEBUG] [Thread-125950] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:13:03.703 [INFO] [Thread-125950] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:13:03.707 [DEBUG] [Thread-125950] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:13:03.707 [DEBUG] [Thread-125950] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:13:03.707 [DEBUG] [Thread-125950] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:13:03.707 [DEBUG] [Thread-125950] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:13:03.707 [DEBUG] [Thread-125950] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:13:03.707 [DEBUG] [Thread-125950] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:13:03.707 [DEBUG] [Thread-125950] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:13:03.707 [DEBUG] [Thread-125950] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:13:03.707 [DEBUG] [Thread-125950] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:13:03.707 [DEBUG] [Thread-125950] [transport.py] [_log()] client lang: <none>
2025-11-04T01:13:03.707 [DEBUG] [Thread-125950] [transport.py] [_log()] server lang: <none>
2025-11-04T01:13:03.707 [DEBUG] [Thread-125950] [transport.py] [_log()] kex follows: False
2025-11-04T01:13:03.707 [DEBUG] [Thread-125950] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:13:03.707 [DEBUG] [Thread-125950] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:13:03.707 [DEBUG] [Thread-125950] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:13:03.707 [DEBUG] [Thread-125950] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:13:03.707 [DEBUG] [Thread-125950] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:13:03.707 [DEBUG] [Thread-125950] [transport.py] [_log()] Compression: none
2025-11-04T01:13:03.707 [DEBUG] [Thread-125950] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:13:03.732 [DEBUG] [Thread-125950] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:13:03.736 [DEBUG] [Thread-125950] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:13:03.737 [DEBUG] [Thread-125950] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:13:03.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:13:03.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:13:03.776 [DEBUG] [Thread-125950] [transport.py] [_log()] userauth is OK
2025-11-04T01:13:03.776 [DEBUG] [Thread-125950] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:13:03.776 [DEBUG] [Thread-125950] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:13:03.777 [DEBUG] [Thread-125950] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:13:03.777 [DEBUG] [Thread-125950] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:13:03.794 [INFO] [Thread-125950] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:13:03.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:13:04.441 [DEBUG] [Thread-125950] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:13:04.441 [DEBUG] [Thread-125950] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:13:04.442 [DEBUG] [Thread-125950] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:13:04.482 [DEBUG] [Thread-125950] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:13:04.482 [DEBUG] [Thread-125950] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:13:04.484 [DEBUG] [Thread-125950] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:13:04.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:13:04.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:13:04.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:13:04.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:13:04.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:13:04.503 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:13:04.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:13:04.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:13:04.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:13:04.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.967112 -999.00  +17.80  15.54     18   -6.30 1 1 1 1 1     0    0 23.37 -24.28 ZNESW 15.4 15.5 307.4 20.0 18.2 -24.2 18.0 -23.3 17.9 -23.0 18.1 -23.9
2025-11-04T01:13:04.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:13:04.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:13:04.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.967112
2025-11-04T01:13:04.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:13:04.518 [DEBUG] [Thread-125950] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:13:04.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:13:04.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:13:04.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:13:04.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:13:04.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:12:28', tmtdew=28.38, humidity=13.33, cloud=0.0, wind=17.41, temperature=17.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:13:01', seeing=1.09, atlas_timestamp='2025-11-03T23:12:38.477', atlas_cloud=1, atlas_rain=1, zp_data=[0.01425000000000054, 0.05925000000000047, 0.08175000000000132, 0.08749999999999858, 0.05150000000000077, 0.03675000000000139, 0.04100000000000037, -0.018749999999998934, 0.05149999999999899, 0.08150000000000013, 0.14424999999999955, 0.05649999999999977, 0.2115000000000009, -0.16875000000000107, -0.07000000000000028, 0.08999999999999986, 0.08774999999999977, 0.1479999999999997, 0.16949999999999932, 0.16924999999999812, 0.14599999999999724, 0.15974999999999895, 0.06225000000000236, 0.025750000000000384, 0.06400000000000006, 0.22550000000000026, 0.1587499999999995, 0.1725000000000012, 0.2999999999999998, 0.11350000000000193, 0.11800000000000033, 0.12300000000000111, 0.10275000000000034], zp_timestamp='2025-11-03T23:09:00')
2025-11-04T01:13:04.594 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:13:04.606 [DEBUG] [Thread-125953] [transport.py] [_log()] starting thread (client mode): 0xed06620
2025-11-04T01:13:04.606 [DEBUG] [Thread-125953] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:13:04.621 [DEBUG] [Thread-125953] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:13:04.621 [INFO] [Thread-125953] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:13:04.630 [DEBUG] [Thread-125953] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:13:04.630 [DEBUG] [Thread-125953] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:13:04.631 [DEBUG] [Thread-125953] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:13:04.631 [DEBUG] [Thread-125953] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:13:04.631 [DEBUG] [Thread-125953] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:13:04.631 [DEBUG] [Thread-125953] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:13:04.631 [DEBUG] [Thread-125953] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:13:04.631 [DEBUG] [Thread-125953] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:13:04.631 [DEBUG] [Thread-125953] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:13:04.631 [DEBUG] [Thread-125953] [transport.py] [_log()] client lang: <none>
2025-11-04T01:13:04.631 [DEBUG] [Thread-125953] [transport.py] [_log()] server lang: <none>
2025-11-04T01:13:04.632 [DEBUG] [Thread-125953] [transport.py] [_log()] kex follows: False
2025-11-04T01:13:04.632 [DEBUG] [Thread-125953] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:13:04.632 [DEBUG] [Thread-125953] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:13:04.632 [DEBUG] [Thread-125953] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:13:04.632 [DEBUG] [Thread-125953] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:13:04.632 [DEBUG] [Thread-125953] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:13:04.633 [DEBUG] [Thread-125953] [transport.py] [_log()] Compression: none
2025-11-04T01:13:04.633 [DEBUG] [Thread-125953] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:13:04.687 [DEBUG] [Thread-125953] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:13:04.687 [DEBUG] [Thread-125953] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:13:04.687 [DEBUG] [Thread-125953] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:13:04.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:13:04.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:13:04.749 [DEBUG] [Thread-125953] [transport.py] [_log()] userauth is OK
2025-11-04T01:13:04.750 [DEBUG] [Thread-125953] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:13:04.750 [DEBUG] [Thread-125953] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:13:04.750 [DEBUG] [Thread-125953] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:13:04.750 [DEBUG] [Thread-125953] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:13:04.773 [INFO] [Thread-125953] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:13:04.773 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:13:04.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:13:05.632 [DEBUG] [Thread-125953] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:13:05.632 [DEBUG] [Thread-125953] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:13:05.681 [DEBUG] [Thread-125953] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:13:05.681 [DEBUG] [Thread-125953] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:13:05.691 [DEBUG] [Thread-125953] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:13:05.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:13:05.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:13:05.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:13:05.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:13:05.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:13:05.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:13:05.730 [DEBUG] [Thread-125953] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:13:17.882 [DEBUG] [Thread-125955 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:13:28.428 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:13:28.428 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:13:32.971 [DEBUG] [Thread-125956 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:13:35.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:13:35.750 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:13:35.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:13:36.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 13), 28.33, 13.38, 0.0, 16.85, 17.74, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:13:36.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:13:00
2025-11-04T01:13:36.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:13:36.886 [DEBUG] [Thread-125957] [transport.py] [_log()] starting thread (client mode): 0xed04730
2025-11-04T01:13:36.887 [DEBUG] [Thread-125957] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:13:36.900 [DEBUG] [Thread-125957] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:13:36.901 [INFO] [Thread-125957] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:13:36.904 [DEBUG] [Thread-125957] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:13:36.904 [DEBUG] [Thread-125957] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:13:36.904 [DEBUG] [Thread-125957] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:13:36.904 [DEBUG] [Thread-125957] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:13:36.904 [DEBUG] [Thread-125957] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:13:36.904 [DEBUG] [Thread-125957] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:13:36.904 [DEBUG] [Thread-125957] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:13:36.905 [DEBUG] [Thread-125957] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:13:36.905 [DEBUG] [Thread-125957] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:13:36.905 [DEBUG] [Thread-125957] [transport.py] [_log()] client lang: <none>
2025-11-04T01:13:36.905 [DEBUG] [Thread-125957] [transport.py] [_log()] server lang: <none>
2025-11-04T01:13:36.905 [DEBUG] [Thread-125957] [transport.py] [_log()] kex follows: False
2025-11-04T01:13:36.905 [DEBUG] [Thread-125957] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:13:36.905 [DEBUG] [Thread-125957] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:13:36.905 [DEBUG] [Thread-125957] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:13:36.906 [DEBUG] [Thread-125957] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:13:36.906 [DEBUG] [Thread-125957] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:13:36.906 [DEBUG] [Thread-125957] [transport.py] [_log()] Compression: none
2025-11-04T01:13:36.907 [DEBUG] [Thread-125957] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:13:36.933 [DEBUG] [Thread-125957] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:13:36.937 [DEBUG] [Thread-125957] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:13:36.938 [DEBUG] [Thread-125957] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:13:36.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:13:36.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:13:36.943 [DEBUG] [Thread-125957] [transport.py] [_log()] userauth is OK
2025-11-04T01:13:36.943 [DEBUG] [Thread-125957] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:13:36.943 [DEBUG] [Thread-125957] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:13:36.943 [DEBUG] [Thread-125957] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:13:36.943 [DEBUG] [Thread-125957] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:13:36.969 [INFO] [Thread-125957] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:13:36.972 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:13:37.651 [DEBUG] [Thread-125957] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:13:37.651 [DEBUG] [Thread-125957] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:13:37.653 [DEBUG] [Thread-125957] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:13:37.691 [DEBUG] [Thread-125957] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:13:37.692 [DEBUG] [Thread-125957] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:13:37.695 [DEBUG] [Thread-125957] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:13:37.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:13:37.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:13:37.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:13:37.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:13:37.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:13:37.720 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:13:37.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:13:37.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:13:37.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:13:37.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.967459 -999.00  +17.80  18.71     18   -6.20 1 1 1 1 1     0    0 23.19 -26.65 ZNESW 17.8 18.7 306.4 22.0 18.2 -24.2 18.1 -23.2 17.9 -23.0 18.1 -23.9
2025-11-04T01:13:37.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:13:37.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:13:37.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.967459
2025-11-04T01:13:37.727 [DEBUG] [Thread-125957] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:13:37.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:13:37.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:13:37.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:13:37.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:13:37.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:13:37.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:13:00', tmtdew=28.33, humidity=13.38, cloud=0.0, wind=16.85, temperature=17.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:13:34', seeing=1.02, atlas_timestamp='2025-11-03T23:13:08.458', atlas_cloud=1, atlas_rain=1, zp_data=[0.15274999999999928, 0.19625000000000092, 0.1532499999999999, 0.23749999999999893, 0.20350000000000001, 0.18625000000000114, 0.18149999999999977, 0.1412500000000012, 0.23049999999999926, 0.23900000000000077, 0.3122499999999988, 0.24349999999999916, 0.3349999999999991, 0.07374999999999865, 0.14599999999999902, 0.19899999999999984, 0.22824999999999918, 0.2835000000000001, 0.333499999999999, 0.30774999999999864, 0.2884999999999991, -0.17575000000000074, 0.23625000000000007, 0.19374999999999964, 0.20500000000000007, 0.35550000000000104, 0.2737499999999997, 0.3285, 0.4660000000000002, 0.4010000000000007, 0.3490000000000011, 0.2640000000000011, 0.23024999999999807], zp_timestamp='2025-11-03T23:12:00')
2025-11-04T01:13:37.817 [DEBUG] [Thread-125960 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:13:37.825 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:13:37.839 [DEBUG] [Thread-125961] [transport.py] [_log()] starting thread (client mode): 0xed05a50
2025-11-04T01:13:37.839 [DEBUG] [Thread-125961] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:13:37.857 [DEBUG] [Thread-125961] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:13:37.857 [INFO] [Thread-125961] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:13:37.868 [DEBUG] [Thread-125961] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:13:37.869 [DEBUG] [Thread-125961] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:13:37.869 [DEBUG] [Thread-125961] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:13:37.869 [DEBUG] [Thread-125961] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:13:37.870 [DEBUG] [Thread-125961] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:13:37.870 [DEBUG] [Thread-125961] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:13:37.870 [DEBUG] [Thread-125961] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:13:37.870 [DEBUG] [Thread-125961] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:13:37.870 [DEBUG] [Thread-125961] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:13:37.870 [DEBUG] [Thread-125961] [transport.py] [_log()] client lang: <none>
2025-11-04T01:13:37.870 [DEBUG] [Thread-125961] [transport.py] [_log()] server lang: <none>
2025-11-04T01:13:37.870 [DEBUG] [Thread-125961] [transport.py] [_log()] kex follows: False
2025-11-04T01:13:37.870 [DEBUG] [Thread-125961] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:13:37.870 [DEBUG] [Thread-125961] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:13:37.870 [DEBUG] [Thread-125961] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:13:37.870 [DEBUG] [Thread-125961] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:13:37.870 [DEBUG] [Thread-125961] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:13:37.870 [DEBUG] [Thread-125961] [transport.py] [_log()] Compression: none
2025-11-04T01:13:37.870 [DEBUG] [Thread-125961] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:13:37.928 [DEBUG] [Thread-125961] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:13:37.929 [DEBUG] [Thread-125961] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:13:37.930 [DEBUG] [Thread-125961] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:13:37.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:13:37.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:13:37.991 [DEBUG] [Thread-125961] [transport.py] [_log()] userauth is OK
2025-11-04T01:13:37.991 [DEBUG] [Thread-125961] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:13:37.991 [DEBUG] [Thread-125961] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:13:37.991 [DEBUG] [Thread-125961] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:13:37.991 [DEBUG] [Thread-125961] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:13:38.009 [INFO] [Thread-125961] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:13:38.009 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:13:38.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:13:38.842 [DEBUG] [Thread-125961] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:13:38.842 [DEBUG] [Thread-125961] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:13:38.898 [DEBUG] [Thread-125961] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:13:38.898 [DEBUG] [Thread-125961] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:13:38.906 [DEBUG] [Thread-125961] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:13:38.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:13:38.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:13:38.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:13:38.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:13:38.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:13:38.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:13:38.940 [DEBUG] [Thread-125961] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:13:48.000 [DEBUG] [Thread-125963 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:14:03.066 [DEBUG] [Thread-125964 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:14:08.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:14:08.963 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:14:08.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:14:09.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 13, 33), 28.31, 13.39, 0.0, 18.67, 17.74, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:14:09.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:13:33
2025-11-04T01:14:09.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:14:10.118 [DEBUG] [Thread-125965] [transport.py] [_log()] starting thread (client mode): 0xed043a0
2025-11-04T01:14:10.119 [DEBUG] [Thread-125965] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:14:10.130 [DEBUG] [Thread-125965] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:14:10.130 [INFO] [Thread-125965] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:14:10.135 [DEBUG] [Thread-125965] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:14:10.135 [DEBUG] [Thread-125965] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:14:10.135 [DEBUG] [Thread-125965] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:14:10.135 [DEBUG] [Thread-125965] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:14:10.135 [DEBUG] [Thread-125965] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:14:10.135 [DEBUG] [Thread-125965] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:14:10.135 [DEBUG] [Thread-125965] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:14:10.135 [DEBUG] [Thread-125965] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:14:10.135 [DEBUG] [Thread-125965] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:14:10.135 [DEBUG] [Thread-125965] [transport.py] [_log()] client lang: <none>
2025-11-04T01:14:10.135 [DEBUG] [Thread-125965] [transport.py] [_log()] server lang: <none>
2025-11-04T01:14:10.135 [DEBUG] [Thread-125965] [transport.py] [_log()] kex follows: False
2025-11-04T01:14:10.135 [DEBUG] [Thread-125965] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:14:10.136 [DEBUG] [Thread-125965] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:14:10.136 [DEBUG] [Thread-125965] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:14:10.136 [DEBUG] [Thread-125965] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:14:10.136 [DEBUG] [Thread-125965] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:14:10.136 [DEBUG] [Thread-125965] [transport.py] [_log()] Compression: none
2025-11-04T01:14:10.136 [DEBUG] [Thread-125965] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:14:10.156 [DEBUG] [Thread-125965] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:14:10.161 [DEBUG] [Thread-125965] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:14:10.163 [DEBUG] [Thread-125965] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:14:10.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:14:10.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:14:10.166 [DEBUG] [Thread-125965] [transport.py] [_log()] userauth is OK
2025-11-04T01:14:10.166 [DEBUG] [Thread-125965] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:14:10.166 [DEBUG] [Thread-125965] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:14:10.166 [DEBUG] [Thread-125965] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:14:10.166 [DEBUG] [Thread-125965] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:14:10.187 [INFO] [Thread-125965] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:14:10.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:14:10.842 [DEBUG] [Thread-125965] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:14:10.843 [DEBUG] [Thread-125965] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:14:10.844 [DEBUG] [Thread-125965] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:14:10.884 [DEBUG] [Thread-125965] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:14:10.885 [DEBUG] [Thread-125965] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:14:10.887 [DEBUG] [Thread-125965] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:14:10.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:14:10.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:14:10.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:14:10.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:14:10.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:14:10.911 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:14:10.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:14:10.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:14:10.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:14:10.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.967807 -999.00  +17.80  18.52     18   -6.20 1 1 1 1 1     0    0 23.82 -25.07 ZNESW 18.5 18.5 308.8 22.4 18.2 -24.2 18.1 -23.2 17.8 -22.8 18.1 -23.8
2025-11-04T01:14:10.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:14:10.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:14:10.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.967807
2025-11-04T01:14:10.924 [DEBUG] [Thread-125965] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:14:10.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:14:10.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:14:10.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:14:10.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:14:10.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:14:10.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:13:33', tmtdew=28.31, humidity=13.39, cloud=0.0, wind=18.67, temperature=17.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:14:07', seeing=1.02, atlas_timestamp='2025-11-03T23:13:38.525', atlas_cloud=1, atlas_rain=1, zp_data=[0.15274999999999928, 0.19625000000000092, 0.1532499999999999, 0.23749999999999893, 0.20350000000000001, 0.18625000000000114, 0.18149999999999977, 0.1412500000000012, 0.23049999999999926, 0.23900000000000077, 0.3122499999999988, 0.24349999999999916, 0.3349999999999991, 0.07374999999999865, 0.14599999999999902, 0.19899999999999984, 0.22824999999999918, 0.2835000000000001, 0.333499999999999, 0.30774999999999864, 0.2884999999999991, -0.17575000000000074, 0.23625000000000007, 0.19374999999999964, 0.20500000000000007, 0.35550000000000104, 0.2737499999999997, 0.3285, 0.4660000000000002, 0.4010000000000007, 0.3490000000000011, 0.2640000000000011, 0.23024999999999807], zp_timestamp='2025-11-03T23:12:00')
2025-11-04T01:14:11.011 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:14:11.024 [DEBUG] [Thread-125968] [transport.py] [_log()] starting thread (client mode): 0xed05db0
2025-11-04T01:14:11.024 [DEBUG] [Thread-125968] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:14:11.039 [DEBUG] [Thread-125968] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:14:11.039 [INFO] [Thread-125968] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:14:11.046 [DEBUG] [Thread-125968] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:14:11.046 [DEBUG] [Thread-125968] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:14:11.046 [DEBUG] [Thread-125968] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:14:11.046 [DEBUG] [Thread-125968] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:14:11.046 [DEBUG] [Thread-125968] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:14:11.046 [DEBUG] [Thread-125968] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:14:11.046 [DEBUG] [Thread-125968] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:14:11.046 [DEBUG] [Thread-125968] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:14:11.047 [DEBUG] [Thread-125968] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:14:11.047 [DEBUG] [Thread-125968] [transport.py] [_log()] client lang: <none>
2025-11-04T01:14:11.047 [DEBUG] [Thread-125968] [transport.py] [_log()] server lang: <none>
2025-11-04T01:14:11.047 [DEBUG] [Thread-125968] [transport.py] [_log()] kex follows: False
2025-11-04T01:14:11.047 [DEBUG] [Thread-125968] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:14:11.047 [DEBUG] [Thread-125968] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:14:11.047 [DEBUG] [Thread-125968] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:14:11.047 [DEBUG] [Thread-125968] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:14:11.047 [DEBUG] [Thread-125968] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:14:11.047 [DEBUG] [Thread-125968] [transport.py] [_log()] Compression: none
2025-11-04T01:14:11.047 [DEBUG] [Thread-125968] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:14:11.105 [DEBUG] [Thread-125968] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:14:11.106 [DEBUG] [Thread-125968] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:14:11.106 [DEBUG] [Thread-125968] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:14:11.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:14:11.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:14:11.162 [DEBUG] [Thread-125968] [transport.py] [_log()] userauth is OK
2025-11-04T01:14:11.162 [DEBUG] [Thread-125968] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:14:11.163 [DEBUG] [Thread-125968] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:14:11.163 [DEBUG] [Thread-125968] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:14:11.163 [DEBUG] [Thread-125968] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:14:11.180 [INFO] [Thread-125968] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:14:11.180 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:14:11.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:14:12.018 [DEBUG] [Thread-125968] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:14:12.018 [DEBUG] [Thread-125968] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:14:12.067 [DEBUG] [Thread-125968] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:14:12.067 [DEBUG] [Thread-125968] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:14:12.076 [DEBUG] [Thread-125968] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:14:12.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:14:12.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:14:12.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:14:12.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:14:12.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:14:12.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:14:12.110 [DEBUG] [Thread-125968] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:14:18.109 [DEBUG] [Thread-125970 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:14:28.640 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:14:28.641 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:14:33.233 [DEBUG] [Thread-125971 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:14:38.092 [DEBUG] [Thread-125972 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:14:42.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:14:42.132 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:14:42.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:14:42.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 14, 6), 28.26, 13.44, 0.0, 19.18, 17.72, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:14:42.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:14:06
2025-11-04T01:14:43.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:14:43.220 [DEBUG] [Thread-125973] [transport.py] [_log()] starting thread (client mode): 0xed04400
2025-11-04T01:14:43.220 [DEBUG] [Thread-125973] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:14:43.238 [DEBUG] [Thread-125973] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:14:43.238 [INFO] [Thread-125973] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:14:43.241 [DEBUG] [Thread-125973] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:14:43.242 [DEBUG] [Thread-125973] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:14:43.242 [DEBUG] [Thread-125973] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:14:43.242 [DEBUG] [Thread-125973] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:14:43.242 [DEBUG] [Thread-125973] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:14:43.242 [DEBUG] [Thread-125973] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:14:43.242 [DEBUG] [Thread-125973] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:14:43.242 [DEBUG] [Thread-125973] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:14:43.242 [DEBUG] [Thread-125973] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:14:43.242 [DEBUG] [Thread-125973] [transport.py] [_log()] client lang: <none>
2025-11-04T01:14:43.242 [DEBUG] [Thread-125973] [transport.py] [_log()] server lang: <none>
2025-11-04T01:14:43.242 [DEBUG] [Thread-125973] [transport.py] [_log()] kex follows: False
2025-11-04T01:14:43.242 [DEBUG] [Thread-125973] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:14:43.242 [DEBUG] [Thread-125973] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:14:43.243 [DEBUG] [Thread-125973] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:14:43.243 [DEBUG] [Thread-125973] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:14:43.244 [DEBUG] [Thread-125973] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:14:43.244 [DEBUG] [Thread-125973] [transport.py] [_log()] Compression: none
2025-11-04T01:14:43.244 [DEBUG] [Thread-125973] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:14:43.263 [DEBUG] [Thread-125973] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:14:43.264 [DEBUG] [Thread-125973] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:14:43.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:14:43.265 [DEBUG] [Thread-125973] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:14:43.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:14:43.267 [DEBUG] [Thread-125973] [transport.py] [_log()] userauth is OK
2025-11-04T01:14:43.267 [DEBUG] [Thread-125973] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:14:43.267 [DEBUG] [Thread-125973] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:14:43.267 [DEBUG] [Thread-125973] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:14:43.267 [DEBUG] [Thread-125973] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:14:43.303 [INFO] [Thread-125973] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:14:43.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:14:43.947 [DEBUG] [Thread-125973] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:14:43.947 [DEBUG] [Thread-125973] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:14:43.948 [DEBUG] [Thread-125973] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:14:43.987 [DEBUG] [Thread-125973] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:14:43.987 [DEBUG] [Thread-125973] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:14:43.990 [DEBUG] [Thread-125973] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:14:44.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:14:44.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:14:44.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:14:44.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:14:44.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:14:44.007 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:14:44.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:14:44.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:14:44.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:14:44.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.968154 -999.00  +17.80  16.14     18   -6.20 1 1 1 1 1     0    0 23.52 -24.71 ZNESW 15.1 16.1 321.2 19.6 18.1 -24.4 18.1 -23.3 17.9 -22.7 18.1 -23.8
2025-11-04T01:14:44.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:14:44.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:14:44.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.968154
2025-11-04T01:14:44.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:14:44.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:14:44.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:14:44.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:14:44.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:14:44.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:14:06', tmtdew=28.26, humidity=13.44, cloud=0.0, wind=19.18, temperature=17.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:14:40', seeing=1.04, atlas_timestamp='2025-11-03T23:14:08.506', atlas_cloud=1, atlas_rain=1, zp_data=[0.15274999999999928, 0.19625000000000092, 0.1532499999999999, 0.23749999999999893, 0.20350000000000001, 0.18625000000000114, 0.18149999999999977, 0.1412500000000012, 0.23049999999999926, 0.23900000000000077, 0.3122499999999988, 0.24349999999999916, 0.3349999999999991, 0.07374999999999865, 0.14599999999999902, 0.19899999999999984, 0.22824999999999918, 0.2835000000000001, 0.333499999999999, 0.30774999999999864, 0.2884999999999991, -0.17575000000000074, 0.23625000000000007, 0.19374999999999964, 0.20500000000000007, 0.35550000000000104, 0.2737499999999997, 0.3285, 0.4660000000000002, 0.4010000000000007, 0.3490000000000011, 0.2640000000000011, 0.23024999999999807], zp_timestamp='2025-11-03T23:12:00')
2025-11-04T01:14:44.008 [DEBUG] [Thread-125973] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:14:44.081 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:14:44.097 [DEBUG] [Thread-125976] [transport.py] [_log()] starting thread (client mode): 0xed06110
2025-11-04T01:14:44.097 [DEBUG] [Thread-125976] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:14:44.113 [DEBUG] [Thread-125976] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:14:44.113 [INFO] [Thread-125976] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:14:44.124 [DEBUG] [Thread-125976] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:14:44.124 [DEBUG] [Thread-125976] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:14:44.124 [DEBUG] [Thread-125976] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:14:44.124 [DEBUG] [Thread-125976] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:14:44.124 [DEBUG] [Thread-125976] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:14:44.125 [DEBUG] [Thread-125976] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:14:44.125 [DEBUG] [Thread-125976] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:14:44.125 [DEBUG] [Thread-125976] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:14:44.125 [DEBUG] [Thread-125976] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:14:44.125 [DEBUG] [Thread-125976] [transport.py] [_log()] client lang: <none>
2025-11-04T01:14:44.125 [DEBUG] [Thread-125976] [transport.py] [_log()] server lang: <none>
2025-11-04T01:14:44.125 [DEBUG] [Thread-125976] [transport.py] [_log()] kex follows: False
2025-11-04T01:14:44.125 [DEBUG] [Thread-125976] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:14:44.125 [DEBUG] [Thread-125976] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:14:44.125 [DEBUG] [Thread-125976] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:14:44.125 [DEBUG] [Thread-125976] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:14:44.125 [DEBUG] [Thread-125976] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:14:44.125 [DEBUG] [Thread-125976] [transport.py] [_log()] Compression: none
2025-11-04T01:14:44.125 [DEBUG] [Thread-125976] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:14:44.182 [DEBUG] [Thread-125976] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:14:44.182 [DEBUG] [Thread-125976] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:14:44.182 [DEBUG] [Thread-125976] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:14:44.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:14:44.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:14:44.243 [DEBUG] [Thread-125976] [transport.py] [_log()] userauth is OK
2025-11-04T01:14:44.243 [DEBUG] [Thread-125976] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:14:44.243 [DEBUG] [Thread-125976] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:14:44.243 [DEBUG] [Thread-125976] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:14:44.243 [DEBUG] [Thread-125976] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:14:44.257 [INFO] [Thread-125976] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:14:44.257 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:14:44.257 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:14:45.102 [DEBUG] [Thread-125976] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:14:45.102 [DEBUG] [Thread-125976] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:14:45.154 [DEBUG] [Thread-125976] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:14:45.154 [DEBUG] [Thread-125976] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:14:45.167 [DEBUG] [Thread-125976] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:14:45.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:14:45.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:14:45.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:14:45.202 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:14:45.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:14:45.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:14:45.211 [DEBUG] [Thread-125976] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:14:48.264 [DEBUG] [Thread-125978 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:15:03.302 [DEBUG] [Thread-125979 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:15:15.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:15:15.247 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:15:15.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:15:16.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 14, 39), 28.25, 13.46, 0.0, 18.23, 17.79, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:15:16.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:14:39
2025-11-04T01:15:16.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:15:16.424 [DEBUG] [Thread-125980] [transport.py] [_log()] starting thread (client mode): 0xed04bb0
2025-11-04T01:15:16.425 [DEBUG] [Thread-125980] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:15:16.435 [DEBUG] [Thread-125980] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:15:16.435 [INFO] [Thread-125980] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:15:16.439 [DEBUG] [Thread-125980] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:15:16.439 [DEBUG] [Thread-125980] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:15:16.439 [DEBUG] [Thread-125980] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:15:16.439 [DEBUG] [Thread-125980] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:15:16.440 [DEBUG] [Thread-125980] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:15:16.440 [DEBUG] [Thread-125980] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:15:16.440 [DEBUG] [Thread-125980] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:15:16.440 [DEBUG] [Thread-125980] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:15:16.440 [DEBUG] [Thread-125980] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:15:16.440 [DEBUG] [Thread-125980] [transport.py] [_log()] client lang: <none>
2025-11-04T01:15:16.440 [DEBUG] [Thread-125980] [transport.py] [_log()] server lang: <none>
2025-11-04T01:15:16.440 [DEBUG] [Thread-125980] [transport.py] [_log()] kex follows: False
2025-11-04T01:15:16.440 [DEBUG] [Thread-125980] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:15:16.441 [DEBUG] [Thread-125980] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:15:16.441 [DEBUG] [Thread-125980] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:15:16.442 [DEBUG] [Thread-125980] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:15:16.442 [DEBUG] [Thread-125980] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:15:16.442 [DEBUG] [Thread-125980] [transport.py] [_log()] Compression: none
2025-11-04T01:15:16.442 [DEBUG] [Thread-125980] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:15:16.476 [DEBUG] [Thread-125980] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:15:16.480 [DEBUG] [Thread-125980] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:15:16.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:15:16.483 [DEBUG] [Thread-125980] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:15:16.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:15:16.487 [DEBUG] [Thread-125980] [transport.py] [_log()] userauth is OK
2025-11-04T01:15:16.487 [DEBUG] [Thread-125980] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:15:16.487 [DEBUG] [Thread-125980] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:15:16.487 [DEBUG] [Thread-125980] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:15:16.487 [DEBUG] [Thread-125980] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:15:16.526 [INFO] [Thread-125980] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:15:16.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:15:17.152 [DEBUG] [Thread-125980] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:15:17.153 [DEBUG] [Thread-125980] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:15:17.153 [DEBUG] [Thread-125980] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:15:17.194 [DEBUG] [Thread-125980] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:15:17.194 [DEBUG] [Thread-125980] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:15:17.195 [DEBUG] [Thread-125980] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:15:17.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:15:17.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:15:17.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:15:17.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:15:17.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:15:17.218 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:15:17.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:15:17.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:15:17.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:15:17.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.968501 -999.00  +17.60  15.56     19   -6.20 1 1 1 1 1     0    0 23.49 -26.03 ZNESW 14.2 15.6 304.0 18.2 18.1 -24.3 18.0 -23.2 17.8 -22.9 18.1 -23.8
2025-11-04T01:15:17.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:15:17.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:15:17.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.968501
2025-11-04T01:15:17.225 [DEBUG] [Thread-125980] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:15:17.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:15:17.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:15:17.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:15:17.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:15:17.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:15:17.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:14:39', tmtdew=28.25, humidity=13.46, cloud=0.0, wind=18.23, temperature=17.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:15:12', seeing=1.17, atlas_timestamp='2025-11-03T23:14:38.486', atlas_cloud=1, atlas_rain=1, zp_data=[0.15274999999999928, 0.19625000000000092, 0.1532499999999999, 0.23749999999999893, 0.20350000000000001, 0.18625000000000114, 0.18149999999999977, 0.1412500000000012, 0.23049999999999926, 0.23900000000000077, 0.3122499999999988, 0.24349999999999916, 0.3349999999999991, 0.07374999999999865, 0.14599999999999902, 0.19899999999999984, 0.22824999999999918, 0.2835000000000001, 0.333499999999999, 0.30774999999999864, 0.2884999999999991, -0.17575000000000074, 0.23625000000000007, 0.19374999999999964, 0.20500000000000007, 0.35550000000000104, 0.2737499999999997, 0.3285, 0.4660000000000002, 0.4010000000000007, 0.3490000000000011, 0.2640000000000011, 0.23024999999999807], zp_timestamp='2025-11-03T23:12:00')
2025-11-04T01:15:17.328 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:15:17.340 [DEBUG] [Thread-125983] [transport.py] [_log()] starting thread (client mode): 0xed07970
2025-11-04T01:15:17.340 [DEBUG] [Thread-125983] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:15:17.356 [DEBUG] [Thread-125983] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:15:17.356 [INFO] [Thread-125983] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:15:17.365 [DEBUG] [Thread-125983] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:15:17.365 [DEBUG] [Thread-125983] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:15:17.365 [DEBUG] [Thread-125983] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:15:17.365 [DEBUG] [Thread-125983] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:15:17.365 [DEBUG] [Thread-125983] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:15:17.366 [DEBUG] [Thread-125983] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:15:17.366 [DEBUG] [Thread-125983] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:15:17.366 [DEBUG] [Thread-125983] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:15:17.366 [DEBUG] [Thread-125983] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:15:17.366 [DEBUG] [Thread-125983] [transport.py] [_log()] client lang: <none>
2025-11-04T01:15:17.366 [DEBUG] [Thread-125983] [transport.py] [_log()] server lang: <none>
2025-11-04T01:15:17.366 [DEBUG] [Thread-125983] [transport.py] [_log()] kex follows: False
2025-11-04T01:15:17.366 [DEBUG] [Thread-125983] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:15:17.367 [DEBUG] [Thread-125983] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:15:17.367 [DEBUG] [Thread-125983] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:15:17.367 [DEBUG] [Thread-125983] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:15:17.367 [DEBUG] [Thread-125983] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:15:17.367 [DEBUG] [Thread-125983] [transport.py] [_log()] Compression: none
2025-11-04T01:15:17.367 [DEBUG] [Thread-125983] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:15:17.424 [DEBUG] [Thread-125983] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:15:17.424 [DEBUG] [Thread-125983] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:15:17.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:15:17.425 [DEBUG] [Thread-125983] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:15:17.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:15:17.487 [DEBUG] [Thread-125983] [transport.py] [_log()] userauth is OK
2025-11-04T01:15:17.487 [DEBUG] [Thread-125983] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:15:17.487 [DEBUG] [Thread-125983] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:15:17.487 [DEBUG] [Thread-125983] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:15:17.488 [DEBUG] [Thread-125983] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:15:17.511 [INFO] [Thread-125983] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:15:17.511 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:15:17.512 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:15:18.354 [DEBUG] [Thread-125983] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:15:18.354 [DEBUG] [Thread-125983] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:15:18.365 [DEBUG] [Thread-125985 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:15:18.406 [DEBUG] [Thread-125983] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:15:18.406 [DEBUG] [Thread-125983] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:15:18.419 [DEBUG] [Thread-125983] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:15:18.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:15:18.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:15:18.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:15:18.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:15:18.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:15:18.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:15:18.474 [DEBUG] [Thread-125983] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:15:28.843 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:15:28.844 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:15:33.500 [DEBUG] [Thread-125986 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:15:38.471 [DEBUG] [Thread-125987 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:15:48.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:15:48.476 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:15:48.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:15:48.534 [DEBUG] [Thread-125988 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:15:49.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 15, 44), 28.22, 13.48, 0.0, 16.8, 17.67, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:15:49.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:15:44
2025-11-04T01:15:49.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:15:49.565 [DEBUG] [Thread-125989] [transport.py] [_log()] starting thread (client mode): 0xed04ca0
2025-11-04T01:15:49.565 [DEBUG] [Thread-125989] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:15:49.584 [DEBUG] [Thread-125989] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:15:49.584 [INFO] [Thread-125989] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:15:49.587 [DEBUG] [Thread-125989] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:15:49.588 [DEBUG] [Thread-125989] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:15:49.588 [DEBUG] [Thread-125989] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:15:49.588 [DEBUG] [Thread-125989] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:15:49.588 [DEBUG] [Thread-125989] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:15:49.588 [DEBUG] [Thread-125989] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:15:49.588 [DEBUG] [Thread-125989] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:15:49.588 [DEBUG] [Thread-125989] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:15:49.588 [DEBUG] [Thread-125989] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:15:49.588 [DEBUG] [Thread-125989] [transport.py] [_log()] client lang: <none>
2025-11-04T01:15:49.588 [DEBUG] [Thread-125989] [transport.py] [_log()] server lang: <none>
2025-11-04T01:15:49.589 [DEBUG] [Thread-125989] [transport.py] [_log()] kex follows: False
2025-11-04T01:15:49.589 [DEBUG] [Thread-125989] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:15:49.589 [DEBUG] [Thread-125989] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:15:49.589 [DEBUG] [Thread-125989] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:15:49.590 [DEBUG] [Thread-125989] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:15:49.590 [DEBUG] [Thread-125989] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:15:49.590 [DEBUG] [Thread-125989] [transport.py] [_log()] Compression: none
2025-11-04T01:15:49.590 [DEBUG] [Thread-125989] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:15:49.623 [DEBUG] [Thread-125989] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:15:49.626 [DEBUG] [Thread-125989] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:15:49.628 [DEBUG] [Thread-125989] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:15:49.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:15:49.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:15:49.631 [DEBUG] [Thread-125989] [transport.py] [_log()] userauth is OK
2025-11-04T01:15:49.631 [DEBUG] [Thread-125989] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:15:49.632 [DEBUG] [Thread-125989] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:15:49.632 [DEBUG] [Thread-125989] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:15:49.632 [DEBUG] [Thread-125989] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:15:49.657 [INFO] [Thread-125989] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:15:49.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:15:50.308 [DEBUG] [Thread-125989] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:15:50.308 [DEBUG] [Thread-125989] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:15:50.318 [DEBUG] [Thread-125989] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:15:50.350 [DEBUG] [Thread-125989] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:15:50.350 [DEBUG] [Thread-125989] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:15:50.353 [DEBUG] [Thread-125989] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:15:50.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:15:50.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:15:50.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:15:50.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:15:50.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:15:50.373 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:15:50.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:15:50.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:15:50.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:15:50.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.969195 -999.00  +17.60  19.09     19   -6.20 1 1 1 1 1     0    0 23.20 -25.50 ZNESW 15.1 19.1 306.4 21.2 18.1 -24.3 18.0 -23.2 17.8 -23.0 18.1 -23.9
2025-11-04T01:15:50.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:15:50.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:15:50.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.969195
2025-11-04T01:15:50.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:15:50.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:15:50.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:15:50.378 [DEBUG] [Thread-125989] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:15:50.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:15:50.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:15:50.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:15:44', tmtdew=28.22, humidity=13.48, cloud=0.0, wind=16.8, temperature=17.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:15:45', seeing=1.17, atlas_timestamp='2025-11-03T23:15:38.448', atlas_cloud=1, atlas_rain=1, zp_data=[0.15274999999999928, 0.19625000000000092, 0.1532499999999999, 0.23749999999999893, 0.20350000000000001, 0.18625000000000114, 0.18149999999999977, 0.1412500000000012, 0.23049999999999926, 0.23900000000000077, 0.3122499999999988, 0.24349999999999916, 0.3349999999999991, 0.07374999999999865, 0.14599999999999902, 0.19899999999999984, 0.22824999999999918, 0.2835000000000001, 0.333499999999999, 0.30774999999999864, 0.2884999999999991, -0.17575000000000074, 0.23625000000000007, 0.19374999999999964, 0.20500000000000007, 0.35550000000000104, 0.2737499999999997, 0.3285, 0.4660000000000002, 0.4010000000000007, 0.3490000000000011, 0.2640000000000011, 0.23024999999999807], zp_timestamp='2025-11-03T23:12:00')
2025-11-04T01:15:50.450 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:15:50.467 [DEBUG] [Thread-125992] [transport.py] [_log()] starting thread (client mode): 0xed066e0
2025-11-04T01:15:50.467 [DEBUG] [Thread-125992] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:15:50.483 [DEBUG] [Thread-125992] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:15:50.483 [INFO] [Thread-125992] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:15:50.491 [DEBUG] [Thread-125992] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:15:50.491 [DEBUG] [Thread-125992] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:15:50.491 [DEBUG] [Thread-125992] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:15:50.492 [DEBUG] [Thread-125992] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:15:50.492 [DEBUG] [Thread-125992] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:15:50.492 [DEBUG] [Thread-125992] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:15:50.492 [DEBUG] [Thread-125992] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:15:50.492 [DEBUG] [Thread-125992] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:15:50.492 [DEBUG] [Thread-125992] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:15:50.492 [DEBUG] [Thread-125992] [transport.py] [_log()] client lang: <none>
2025-11-04T01:15:50.492 [DEBUG] [Thread-125992] [transport.py] [_log()] server lang: <none>
2025-11-04T01:15:50.492 [DEBUG] [Thread-125992] [transport.py] [_log()] kex follows: False
2025-11-04T01:15:50.492 [DEBUG] [Thread-125992] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:15:50.492 [DEBUG] [Thread-125992] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:15:50.492 [DEBUG] [Thread-125992] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:15:50.492 [DEBUG] [Thread-125992] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:15:50.492 [DEBUG] [Thread-125992] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:15:50.492 [DEBUG] [Thread-125992] [transport.py] [_log()] Compression: none
2025-11-04T01:15:50.493 [DEBUG] [Thread-125992] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:15:50.555 [DEBUG] [Thread-125992] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:15:50.556 [DEBUG] [Thread-125992] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:15:50.557 [DEBUG] [Thread-125992] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:15:50.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:15:50.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:15:50.611 [DEBUG] [Thread-125992] [transport.py] [_log()] userauth is OK
2025-11-04T01:15:50.612 [DEBUG] [Thread-125992] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:15:50.612 [DEBUG] [Thread-125992] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:15:50.612 [DEBUG] [Thread-125992] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:15:50.612 [DEBUG] [Thread-125992] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:15:50.638 [INFO] [Thread-125992] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:15:50.638 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:15:50.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:15:51.454 [DEBUG] [Thread-125992] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:15:51.454 [DEBUG] [Thread-125992] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:15:51.501 [DEBUG] [Thread-125992] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:15:51.501 [DEBUG] [Thread-125992] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:15:51.509 [DEBUG] [Thread-125992] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:15:51.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:15:51.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:15:51.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:15:51.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:15:51.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:15:51.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:15:51.552 [DEBUG] [Thread-125992] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:16:03.562 [DEBUG] [Thread-125994 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:16:18.666 [DEBUG] [Thread-125995 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:16:21.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:16:21.579 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:16:21.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:16:22.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 16, 17), 28.18, 13.53, 0.0, 16.36, 17.7, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:16:22.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:16:17
2025-11-04T01:16:22.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:16:22.676 [DEBUG] [Thread-125996] [transport.py] [_log()] starting thread (client mode): 0xed04e20
2025-11-04T01:16:22.677 [DEBUG] [Thread-125996] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:16:22.688 [DEBUG] [Thread-125996] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:16:22.688 [INFO] [Thread-125996] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:16:22.694 [DEBUG] [Thread-125996] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:16:22.694 [DEBUG] [Thread-125996] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:16:22.694 [DEBUG] [Thread-125996] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:16:22.694 [DEBUG] [Thread-125996] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:16:22.695 [DEBUG] [Thread-125996] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:16:22.695 [DEBUG] [Thread-125996] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:16:22.695 [DEBUG] [Thread-125996] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:16:22.695 [DEBUG] [Thread-125996] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:16:22.695 [DEBUG] [Thread-125996] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:16:22.695 [DEBUG] [Thread-125996] [transport.py] [_log()] client lang: <none>
2025-11-04T01:16:22.695 [DEBUG] [Thread-125996] [transport.py] [_log()] server lang: <none>
2025-11-04T01:16:22.695 [DEBUG] [Thread-125996] [transport.py] [_log()] kex follows: False
2025-11-04T01:16:22.695 [DEBUG] [Thread-125996] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:16:22.696 [DEBUG] [Thread-125996] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:16:22.696 [DEBUG] [Thread-125996] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:16:22.697 [DEBUG] [Thread-125996] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:16:22.697 [DEBUG] [Thread-125996] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:16:22.697 [DEBUG] [Thread-125996] [transport.py] [_log()] Compression: none
2025-11-04T01:16:22.697 [DEBUG] [Thread-125996] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:16:22.737 [DEBUG] [Thread-125996] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:16:22.743 [DEBUG] [Thread-125996] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:16:22.745 [DEBUG] [Thread-125996] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:16:22.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:16:22.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:16:22.750 [DEBUG] [Thread-125996] [transport.py] [_log()] userauth is OK
2025-11-04T01:16:22.750 [DEBUG] [Thread-125996] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:16:22.750 [DEBUG] [Thread-125996] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:16:22.751 [DEBUG] [Thread-125996] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:16:22.751 [DEBUG] [Thread-125996] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:16:22.777 [INFO] [Thread-125996] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:16:22.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:16:23.377 [DEBUG] [Thread-125996] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:16:23.378 [DEBUG] [Thread-125996] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:16:23.389 [DEBUG] [Thread-125996] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:16:23.418 [DEBUG] [Thread-125996] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:16:23.419 [DEBUG] [Thread-125996] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:16:23.423 [DEBUG] [Thread-125996] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:16:23.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:16:23.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:16:23.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:16:23.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:16:23.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:16:23.452 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:16:23.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:16:23.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:16:23.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:16:23.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.969543 -999.00  +17.60  15.27     19   -6.20 1 1 1 1 1     0    0 23.76 -25.62 ZNESW 16.8 15.3 315.8 18.7 18.1 -24.2 17.9 -23.2 17.7 -22.9 18.0 -23.8
2025-11-04T01:16:23.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:16:23.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:16:23.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.969543
2025-11-04T01:16:23.461 [DEBUG] [Thread-125996] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:16:23.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:16:23.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:16:23.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:16:23.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:16:23.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:16:23.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:16:17', tmtdew=28.18, humidity=13.53, cloud=0.0, wind=16.36, temperature=17.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:16:18', seeing=1.1, atlas_timestamp='2025-11-03T23:16:08.515', atlas_cloud=1, atlas_rain=1, zp_data=[0.0677500000000002, 0.1542500000000011, 0.03524999999999956, 0.13949999999999996, 0.08050000000000068, 0.07125000000000092, 0.04399999999999871, -0.060249999999999915, 0.09399999999999942, 0.09500000000000064, 0.13124999999999964, 0.05550000000000033, 0.1899999999999995, -0.09275000000000055, -0.09100000000000108, 0.03549999999999898, 0.11625000000000085, 0.16050000000000075, 0.15899999999999892, 0.1872499999999988, 0.2079999999999984, 0.19374999999999787, 0.021250000000000213, 0.06675000000000075, 0.08499999999999908, 0.2554999999999996, 0.16275000000000084, 0.22900000000000098, 0.30100000000000016, 0.3570000000000011, 0.19100000000000072, 0.136000000000001, 0.15424999999999756], zp_timestamp='2025-11-03T23:15:00')
2025-11-04T01:16:23.567 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:16:23.578 [DEBUG] [Thread-125999] [transport.py] [_log()] starting thread (client mode): 0xed060e0
2025-11-04T01:16:23.579 [DEBUG] [Thread-125999] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:16:23.593 [DEBUG] [Thread-125999] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:16:23.594 [INFO] [Thread-125999] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:16:23.601 [DEBUG] [Thread-125999] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:16:23.601 [DEBUG] [Thread-125999] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:16:23.601 [DEBUG] [Thread-125999] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:16:23.601 [DEBUG] [Thread-125999] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:16:23.602 [DEBUG] [Thread-125999] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:16:23.602 [DEBUG] [Thread-125999] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:16:23.602 [DEBUG] [Thread-125999] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:16:23.602 [DEBUG] [Thread-125999] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:16:23.602 [DEBUG] [Thread-125999] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:16:23.602 [DEBUG] [Thread-125999] [transport.py] [_log()] client lang: <none>
2025-11-04T01:16:23.602 [DEBUG] [Thread-125999] [transport.py] [_log()] server lang: <none>
2025-11-04T01:16:23.602 [DEBUG] [Thread-125999] [transport.py] [_log()] kex follows: False
2025-11-04T01:16:23.602 [DEBUG] [Thread-125999] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:16:23.603 [DEBUG] [Thread-125999] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:16:23.603 [DEBUG] [Thread-125999] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:16:23.603 [DEBUG] [Thread-125999] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:16:23.603 [DEBUG] [Thread-125999] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:16:23.603 [DEBUG] [Thread-125999] [transport.py] [_log()] Compression: none
2025-11-04T01:16:23.604 [DEBUG] [Thread-125999] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:16:23.657 [DEBUG] [Thread-125999] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:16:23.657 [DEBUG] [Thread-125999] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:16:23.658 [DEBUG] [Thread-125999] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:16:23.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:16:23.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:16:23.715 [DEBUG] [Thread-125999] [transport.py] [_log()] userauth is OK
2025-11-04T01:16:23.715 [DEBUG] [Thread-125999] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:16:23.716 [DEBUG] [Thread-125999] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:16:23.716 [DEBUG] [Thread-125999] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:16:23.716 [DEBUG] [Thread-125999] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:16:23.739 [INFO] [Thread-125999] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:16:23.740 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:16:23.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:16:24.589 [DEBUG] [Thread-125999] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:16:24.589 [DEBUG] [Thread-125999] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:16:24.637 [DEBUG] [Thread-125999] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:16:24.637 [DEBUG] [Thread-125999] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:16:24.646 [DEBUG] [Thread-125999] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:16:24.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:16:24.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:16:24.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:16:24.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:16:24.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:16:24.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:16:24.682 [DEBUG] [Thread-125999] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:16:29.056 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:16:29.057 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:16:33.705 [DEBUG] [Thread-126001 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:16:38.810 [DEBUG] [Thread-126002 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:16:48.776 [DEBUG] [Thread-126003 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:16:54.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:16:54.682 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:16:54.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:16:55.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 16, 50), 28.12, 13.53, 0.0, 18.67, 17.6, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:16:55.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:16:50
2025-11-04T01:16:55.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:16:55.742 [DEBUG] [Thread-126004] [transport.py] [_log()] starting thread (client mode): 0xed06980
2025-11-04T01:16:55.742 [DEBUG] [Thread-126004] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:16:55.761 [DEBUG] [Thread-126004] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:16:55.761 [INFO] [Thread-126004] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:16:55.764 [DEBUG] [Thread-126004] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:16:55.764 [DEBUG] [Thread-126004] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:16:55.764 [DEBUG] [Thread-126004] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:16:55.764 [DEBUG] [Thread-126004] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:16:55.764 [DEBUG] [Thread-126004] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:16:55.764 [DEBUG] [Thread-126004] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:16:55.764 [DEBUG] [Thread-126004] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:16:55.764 [DEBUG] [Thread-126004] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:16:55.764 [DEBUG] [Thread-126004] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:16:55.764 [DEBUG] [Thread-126004] [transport.py] [_log()] client lang: <none>
2025-11-04T01:16:55.764 [DEBUG] [Thread-126004] [transport.py] [_log()] server lang: <none>
2025-11-04T01:16:55.764 [DEBUG] [Thread-126004] [transport.py] [_log()] kex follows: False
2025-11-04T01:16:55.764 [DEBUG] [Thread-126004] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:16:55.764 [DEBUG] [Thread-126004] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:16:55.764 [DEBUG] [Thread-126004] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:16:55.764 [DEBUG] [Thread-126004] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:16:55.764 [DEBUG] [Thread-126004] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:16:55.764 [DEBUG] [Thread-126004] [transport.py] [_log()] Compression: none
2025-11-04T01:16:55.764 [DEBUG] [Thread-126004] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:16:55.776 [DEBUG] [Thread-126004] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:16:55.776 [DEBUG] [Thread-126004] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:16:55.777 [DEBUG] [Thread-126004] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:16:55.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:16:55.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:16:55.779 [DEBUG] [Thread-126004] [transport.py] [_log()] userauth is OK
2025-11-04T01:16:55.779 [DEBUG] [Thread-126004] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:16:55.779 [DEBUG] [Thread-126004] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:16:55.779 [DEBUG] [Thread-126004] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:16:55.780 [DEBUG] [Thread-126004] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:16:55.816 [INFO] [Thread-126004] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:16:55.817 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:16:56.462 [DEBUG] [Thread-126004] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:16:56.462 [DEBUG] [Thread-126004] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:16:56.462 [DEBUG] [Thread-126004] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:16:56.505 [DEBUG] [Thread-126004] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:16:56.505 [DEBUG] [Thread-126004] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:16:56.507 [DEBUG] [Thread-126004] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:16:56.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:16:56.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:16:56.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:16:56.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:16:56.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:16:56.527 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:16:56.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:16:56.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:16:56.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:16:56.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.969890 -999.00  +17.60  16.11     19   -6.20 1 1 1 1 1     0    0 23.60 -23.77 ZNESW 17.7 16.1 310.0 19.9 18.0 -24.3 17.9 -23.2 17.7 -23.0 17.9 -23.8
2025-11-04T01:16:56.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:16:56.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:16:56.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.969890
2025-11-04T01:16:56.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:16:56.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:16:56.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:16:56.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:16:56.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:16:56.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:16:50', tmtdew=28.12, humidity=13.53, cloud=0.0, wind=18.67, temperature=17.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:16:50', seeing=1.1, atlas_timestamp='2025-11-03T23:16:38.496', atlas_cloud=1, atlas_rain=1, zp_data=[0.0677500000000002, 0.1542500000000011, 0.03524999999999956, 0.13949999999999996, 0.08050000000000068, 0.07125000000000092, 0.04399999999999871, -0.060249999999999915, 0.09399999999999942, 0.09500000000000064, 0.13124999999999964, 0.05550000000000033, 0.1899999999999995, -0.09275000000000055, -0.09100000000000108, 0.03549999999999898, 0.11625000000000085, 0.16050000000000075, 0.15899999999999892, 0.1872499999999988, 0.2079999999999984, 0.19374999999999787, 0.021250000000000213, 0.06675000000000075, 0.08499999999999908, 0.2554999999999996, 0.16275000000000084, 0.22900000000000098, 0.30100000000000016, 0.3570000000000011, 0.19100000000000072, 0.136000000000001, 0.15424999999999756], zp_timestamp='2025-11-03T23:15:00')
2025-11-04T01:16:56.528 [DEBUG] [Thread-126004] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:16:56.601 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:16:56.614 [DEBUG] [Thread-126007] [transport.py] [_log()] starting thread (client mode): 0xed04970
2025-11-04T01:16:56.614 [DEBUG] [Thread-126007] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:16:56.631 [DEBUG] [Thread-126007] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:16:56.631 [INFO] [Thread-126007] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:16:56.641 [DEBUG] [Thread-126007] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:16:56.641 [DEBUG] [Thread-126007] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:16:56.642 [DEBUG] [Thread-126007] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:16:56.642 [DEBUG] [Thread-126007] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:16:56.642 [DEBUG] [Thread-126007] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:16:56.642 [DEBUG] [Thread-126007] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:16:56.642 [DEBUG] [Thread-126007] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:16:56.642 [DEBUG] [Thread-126007] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:16:56.642 [DEBUG] [Thread-126007] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:16:56.642 [DEBUG] [Thread-126007] [transport.py] [_log()] client lang: <none>
2025-11-04T01:16:56.642 [DEBUG] [Thread-126007] [transport.py] [_log()] server lang: <none>
2025-11-04T01:16:56.642 [DEBUG] [Thread-126007] [transport.py] [_log()] kex follows: False
2025-11-04T01:16:56.642 [DEBUG] [Thread-126007] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:16:56.642 [DEBUG] [Thread-126007] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:16:56.642 [DEBUG] [Thread-126007] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:16:56.642 [DEBUG] [Thread-126007] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:16:56.642 [DEBUG] [Thread-126007] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:16:56.642 [DEBUG] [Thread-126007] [transport.py] [_log()] Compression: none
2025-11-04T01:16:56.642 [DEBUG] [Thread-126007] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:16:56.697 [DEBUG] [Thread-126007] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:16:56.706 [DEBUG] [Thread-126007] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:16:56.706 [DEBUG] [Thread-126007] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:16:56.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:16:56.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:16:56.755 [DEBUG] [Thread-126007] [transport.py] [_log()] userauth is OK
2025-11-04T01:16:56.755 [DEBUG] [Thread-126007] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:16:56.755 [DEBUG] [Thread-126007] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:16:56.755 [DEBUG] [Thread-126007] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:16:56.755 [DEBUG] [Thread-126007] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:16:56.770 [INFO] [Thread-126007] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:16:56.770 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:16:56.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:16:57.604 [DEBUG] [Thread-126007] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:16:57.605 [DEBUG] [Thread-126007] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:16:57.654 [DEBUG] [Thread-126007] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:16:57.654 [DEBUG] [Thread-126007] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:16:57.663 [DEBUG] [Thread-126007] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:16:57.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:16:57.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:16:57.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:16:57.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:16:57.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:16:57.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:16:57.701 [DEBUG] [Thread-126007] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:17:03.807 [DEBUG] [Thread-126009 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:17:18.857 [DEBUG] [Thread-126010 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:17:27.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:17:27.715 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:17:27.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:17:28.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 17, 22), 28.11, 13.53, 0.0, 18.35, 17.52, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:17:28.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:17:22
2025-11-04T01:17:28.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:17:28.953 [DEBUG] [Thread-126011] [transport.py] [_log()] starting thread (client mode): 0xed064a0
2025-11-04T01:17:28.954 [DEBUG] [Thread-126011] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:17:28.966 [DEBUG] [Thread-126011] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:17:28.966 [INFO] [Thread-126011] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:17:28.969 [DEBUG] [Thread-126011] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:17:28.970 [DEBUG] [Thread-126011] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:17:28.970 [DEBUG] [Thread-126011] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:17:28.970 [DEBUG] [Thread-126011] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:17:28.970 [DEBUG] [Thread-126011] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:17:28.970 [DEBUG] [Thread-126011] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:17:28.970 [DEBUG] [Thread-126011] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:17:28.970 [DEBUG] [Thread-126011] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:17:28.970 [DEBUG] [Thread-126011] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:17:28.970 [DEBUG] [Thread-126011] [transport.py] [_log()] client lang: <none>
2025-11-04T01:17:28.970 [DEBUG] [Thread-126011] [transport.py] [_log()] server lang: <none>
2025-11-04T01:17:28.970 [DEBUG] [Thread-126011] [transport.py] [_log()] kex follows: False
2025-11-04T01:17:28.970 [DEBUG] [Thread-126011] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:17:28.970 [DEBUG] [Thread-126011] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:17:28.970 [DEBUG] [Thread-126011] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:17:28.971 [DEBUG] [Thread-126011] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:17:28.971 [DEBUG] [Thread-126011] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:17:28.971 [DEBUG] [Thread-126011] [transport.py] [_log()] Compression: none
2025-11-04T01:17:28.971 [DEBUG] [Thread-126011] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:17:28.999 [DEBUG] [Thread-126011] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:17:29.002 [DEBUG] [Thread-126011] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:17:29.004 [DEBUG] [Thread-126011] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:17:29.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:17:29.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:17:29.008 [DEBUG] [Thread-126011] [transport.py] [_log()] userauth is OK
2025-11-04T01:17:29.008 [DEBUG] [Thread-126011] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:17:29.008 [DEBUG] [Thread-126011] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:17:29.008 [DEBUG] [Thread-126011] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:17:29.008 [DEBUG] [Thread-126011] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:17:29.029 [INFO] [Thread-126011] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:17:29.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:17:29.259 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:17:29.260 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:17:29.681 [DEBUG] [Thread-126011] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:17:29.681 [DEBUG] [Thread-126011] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:17:29.682 [DEBUG] [Thread-126011] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:17:29.723 [DEBUG] [Thread-126011] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:17:29.723 [DEBUG] [Thread-126011] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:17:29.726 [DEBUG] [Thread-126011] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:17:29.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:17:29.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:17:29.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:17:29.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:17:29.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:17:29.747 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:17:29.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:17:29.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:17:29.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:17:29.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.970237 -999.00  +17.60  16.05     19   -6.10 1 1 1 1 1     0    0 23.37 -25.51 ZNESW 15.1 16.1 307.2 19.6 18.0 -24.2 17.9 -23.0 17.7 -22.9 17.9 -23.7
2025-11-04T01:17:29.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:17:29.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:17:29.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.970237
2025-11-04T01:17:29.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:17:29.766 [DEBUG] [Thread-126011] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:17:29.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:17:29.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:17:29.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:17:29.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:17:29.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:17:22', tmtdew=28.11, humidity=13.53, cloud=0.0, wind=18.35, temperature=17.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:17:23', seeing=1.1, atlas_timestamp='2025-11-03T23:17:08.477', atlas_cloud=1, atlas_rain=1, zp_data=[0.0677500000000002, 0.1542500000000011, 0.03524999999999956, 0.13949999999999996, 0.08050000000000068, 0.07125000000000092, 0.04399999999999871, -0.060249999999999915, 0.09399999999999942, 0.09500000000000064, 0.13124999999999964, 0.05550000000000033, 0.1899999999999995, -0.09275000000000055, -0.09100000000000108, 0.03549999999999898, 0.11625000000000085, 0.16050000000000075, 0.15899999999999892, 0.1872499999999988, 0.2079999999999984, 0.19374999999999787, 0.021250000000000213, 0.06675000000000075, 0.08499999999999908, 0.2554999999999996, 0.16275000000000084, 0.22900000000000098, 0.30100000000000016, 0.3570000000000011, 0.19100000000000072, 0.136000000000001, 0.15424999999999756], zp_timestamp='2025-11-03T23:15:00')
2025-11-04T01:17:29.843 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:17:29.856 [DEBUG] [Thread-126014] [transport.py] [_log()] starting thread (client mode): 0x819b430
2025-11-04T01:17:29.856 [DEBUG] [Thread-126014] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:17:29.877 [DEBUG] [Thread-126014] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:17:29.877 [INFO] [Thread-126014] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:17:29.889 [DEBUG] [Thread-126014] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:17:29.889 [DEBUG] [Thread-126014] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:17:29.889 [DEBUG] [Thread-126014] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:17:29.889 [DEBUG] [Thread-126014] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:17:29.889 [DEBUG] [Thread-126014] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:17:29.889 [DEBUG] [Thread-126014] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:17:29.889 [DEBUG] [Thread-126014] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:17:29.889 [DEBUG] [Thread-126014] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:17:29.889 [DEBUG] [Thread-126014] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:17:29.889 [DEBUG] [Thread-126014] [transport.py] [_log()] client lang: <none>
2025-11-04T01:17:29.889 [DEBUG] [Thread-126014] [transport.py] [_log()] server lang: <none>
2025-11-04T01:17:29.889 [DEBUG] [Thread-126014] [transport.py] [_log()] kex follows: False
2025-11-04T01:17:29.889 [DEBUG] [Thread-126014] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:17:29.889 [DEBUG] [Thread-126014] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:17:29.889 [DEBUG] [Thread-126014] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:17:29.889 [DEBUG] [Thread-126014] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:17:29.889 [DEBUG] [Thread-126014] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:17:29.889 [DEBUG] [Thread-126014] [transport.py] [_log()] Compression: none
2025-11-04T01:17:29.889 [DEBUG] [Thread-126014] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:17:29.947 [DEBUG] [Thread-126014] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:17:29.947 [DEBUG] [Thread-126014] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:17:29.947 [DEBUG] [Thread-126014] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:17:29.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:17:29.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:17:30.011 [DEBUG] [Thread-126014] [transport.py] [_log()] userauth is OK
2025-11-04T01:17:30.011 [DEBUG] [Thread-126014] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:17:30.011 [DEBUG] [Thread-126014] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:17:30.011 [DEBUG] [Thread-126014] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:17:30.011 [DEBUG] [Thread-126014] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:17:30.027 [INFO] [Thread-126014] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:17:30.027 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:17:30.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:17:30.868 [DEBUG] [Thread-126014] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:17:30.868 [DEBUG] [Thread-126014] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:17:30.916 [DEBUG] [Thread-126014] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:17:30.917 [DEBUG] [Thread-126014] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:17:30.925 [DEBUG] [Thread-126014] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:17:30.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:17:30.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:17:30.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:17:30.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:17:30.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:17:30.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:17:30.960 [DEBUG] [Thread-126014] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:17:33.888 [DEBUG] [Thread-126016 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:17:38.990 [DEBUG] [Thread-126017 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:17:48.949 [DEBUG] [Thread-126018 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:18:00.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:18:00.985 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:18:01.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:18:01.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 17, 55), 27.97, 13.58, 0.0, 14.73, 17.57, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:18:01.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:17:55
2025-11-04T01:18:01.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:18:02.169 [DEBUG] [Thread-126019] [transport.py] [_log()] starting thread (client mode): 0x819a050
2025-11-04T01:18:02.169 [DEBUG] [Thread-126019] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:18:02.188 [DEBUG] [Thread-126019] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:18:02.188 [INFO] [Thread-126019] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:18:02.191 [DEBUG] [Thread-126019] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:18:02.191 [DEBUG] [Thread-126019] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:18:02.191 [DEBUG] [Thread-126019] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:18:02.191 [DEBUG] [Thread-126019] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:18:02.191 [DEBUG] [Thread-126019] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:18:02.191 [DEBUG] [Thread-126019] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:18:02.192 [DEBUG] [Thread-126019] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:18:02.192 [DEBUG] [Thread-126019] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:18:02.192 [DEBUG] [Thread-126019] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:18:02.192 [DEBUG] [Thread-126019] [transport.py] [_log()] client lang: <none>
2025-11-04T01:18:02.192 [DEBUG] [Thread-126019] [transport.py] [_log()] server lang: <none>
2025-11-04T01:18:02.192 [DEBUG] [Thread-126019] [transport.py] [_log()] kex follows: False
2025-11-04T01:18:02.192 [DEBUG] [Thread-126019] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:18:02.192 [DEBUG] [Thread-126019] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:18:02.192 [DEBUG] [Thread-126019] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:18:02.192 [DEBUG] [Thread-126019] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:18:02.193 [DEBUG] [Thread-126019] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:18:02.193 [DEBUG] [Thread-126019] [transport.py] [_log()] Compression: none
2025-11-04T01:18:02.193 [DEBUG] [Thread-126019] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:18:02.218 [DEBUG] [Thread-126019] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:18:02.220 [DEBUG] [Thread-126019] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:18:02.221 [DEBUG] [Thread-126019] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:18:02.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:18:02.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:18:02.225 [DEBUG] [Thread-126019] [transport.py] [_log()] userauth is OK
2025-11-04T01:18:02.225 [DEBUG] [Thread-126019] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:18:02.225 [DEBUG] [Thread-126019] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:18:02.225 [DEBUG] [Thread-126019] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:18:02.225 [DEBUG] [Thread-126019] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:18:02.246 [INFO] [Thread-126019] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:18:02.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:18:02.860 [DEBUG] [Thread-126019] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:18:02.861 [DEBUG] [Thread-126019] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:18:02.870 [DEBUG] [Thread-126019] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:18:02.901 [DEBUG] [Thread-126019] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:18:02.902 [DEBUG] [Thread-126019] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:18:02.904 [DEBUG] [Thread-126019] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:18:02.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:18:02.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:18:02.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:18:02.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:18:02.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:18:02.924 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:18:02.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:18:02.925 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:18:02.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:18:02.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.970584 -999.00  +17.60  16.54     19   -6.10 1 1 1 1 1     0    0 23.38 -28.70 ZNESW 17.8 16.5 316.4 18.3 18.0 -24.1 17.9 -23.3 17.7 -22.8 17.9 -23.8
2025-11-04T01:18:02.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:18:02.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:18:02.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.970584
2025-11-04T01:18:02.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:18:02.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:18:02.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:18:02.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:18:02.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:18:02.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:17:55', tmtdew=27.97, humidity=13.58, cloud=0.0, wind=14.73, temperature=17.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:17:56', seeing=1.06, atlas_timestamp='2025-11-03T23:17:38.458', atlas_cloud=1, atlas_rain=1, zp_data=[0.0677500000000002, 0.1542500000000011, 0.03524999999999956, 0.13949999999999996, 0.08050000000000068, 0.07125000000000092, 0.04399999999999871, -0.060249999999999915, 0.09399999999999942, 0.09500000000000064, 0.13124999999999964, 0.05550000000000033, 0.1899999999999995, -0.09275000000000055, -0.09100000000000108, 0.03549999999999898, 0.11625000000000085, 0.16050000000000075, 0.15899999999999892, 0.1872499999999988, 0.2079999999999984, 0.19374999999999787, 0.021250000000000213, 0.06675000000000075, 0.08499999999999908, 0.2554999999999996, 0.16275000000000084, 0.22900000000000098, 0.30100000000000016, 0.3570000000000011, 0.19100000000000072, 0.136000000000001, 0.15424999999999756], zp_timestamp='2025-11-03T23:15:00')
2025-11-04T01:18:02.926 [DEBUG] [Thread-126019] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:18:02.998 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:18:03.013 [DEBUG] [Thread-126022] [transport.py] [_log()] starting thread (client mode): 0x819bc70
2025-11-04T01:18:03.013 [DEBUG] [Thread-126022] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:18:03.032 [DEBUG] [Thread-126022] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:18:03.032 [INFO] [Thread-126022] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:18:03.041 [DEBUG] [Thread-126022] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:18:03.041 [DEBUG] [Thread-126022] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:18:03.041 [DEBUG] [Thread-126022] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:18:03.041 [DEBUG] [Thread-126022] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:18:03.041 [DEBUG] [Thread-126022] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:18:03.041 [DEBUG] [Thread-126022] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:18:03.041 [DEBUG] [Thread-126022] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:18:03.041 [DEBUG] [Thread-126022] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:18:03.041 [DEBUG] [Thread-126022] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:18:03.041 [DEBUG] [Thread-126022] [transport.py] [_log()] client lang: <none>
2025-11-04T01:18:03.041 [DEBUG] [Thread-126022] [transport.py] [_log()] server lang: <none>
2025-11-04T01:18:03.041 [DEBUG] [Thread-126022] [transport.py] [_log()] kex follows: False
2025-11-04T01:18:03.041 [DEBUG] [Thread-126022] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:18:03.041 [DEBUG] [Thread-126022] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:18:03.041 [DEBUG] [Thread-126022] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:18:03.041 [DEBUG] [Thread-126022] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:18:03.041 [DEBUG] [Thread-126022] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:18:03.041 [DEBUG] [Thread-126022] [transport.py] [_log()] Compression: none
2025-11-04T01:18:03.041 [DEBUG] [Thread-126022] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:18:03.100 [DEBUG] [Thread-126022] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:18:03.101 [DEBUG] [Thread-126022] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:18:03.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:18:03.102 [DEBUG] [Thread-126022] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:18:03.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:18:03.165 [DEBUG] [Thread-126022] [transport.py] [_log()] userauth is OK
2025-11-04T01:18:03.165 [DEBUG] [Thread-126022] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:18:03.165 [DEBUG] [Thread-126022] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:18:03.165 [DEBUG] [Thread-126022] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:18:03.165 [DEBUG] [Thread-126022] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:18:03.181 [INFO] [Thread-126022] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:18:03.181 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:18:03.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:18:03.987 [DEBUG] [Thread-126024 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:18:04.016 [DEBUG] [Thread-126022] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:18:04.016 [DEBUG] [Thread-126022] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:18:04.066 [DEBUG] [Thread-126022] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:18:04.066 [DEBUG] [Thread-126022] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:18:04.076 [DEBUG] [Thread-126022] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:18:04.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:18:04.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:18:04.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:18:04.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:18:04.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:18:04.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:18:04.117 [DEBUG] [Thread-126022] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:18:19.089 [DEBUG] [Thread-126025 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:18:29.461 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:18:29.462 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:18:34.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:18:34.140 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:18:34.149 [DEBUG] [Thread-126026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:18:34.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:18:34.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 18, 28), 27.95, 13.61, 0.0, 14.34, 17.6, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:18:34.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:18:28
2025-11-04T01:18:35.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:18:35.271 [DEBUG] [Thread-126027] [transport.py] [_log()] starting thread (client mode): 0xed06e90
2025-11-04T01:18:35.272 [DEBUG] [Thread-126027] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:18:35.278 [DEBUG] [Thread-126027] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:18:35.278 [INFO] [Thread-126027] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:18:35.282 [DEBUG] [Thread-126027] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:18:35.282 [DEBUG] [Thread-126027] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:18:35.282 [DEBUG] [Thread-126027] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:18:35.282 [DEBUG] [Thread-126027] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:18:35.282 [DEBUG] [Thread-126027] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:18:35.282 [DEBUG] [Thread-126027] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:18:35.282 [DEBUG] [Thread-126027] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:18:35.282 [DEBUG] [Thread-126027] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:18:35.282 [DEBUG] [Thread-126027] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:18:35.282 [DEBUG] [Thread-126027] [transport.py] [_log()] client lang: <none>
2025-11-04T01:18:35.282 [DEBUG] [Thread-126027] [transport.py] [_log()] server lang: <none>
2025-11-04T01:18:35.282 [DEBUG] [Thread-126027] [transport.py] [_log()] kex follows: False
2025-11-04T01:18:35.282 [DEBUG] [Thread-126027] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:18:35.283 [DEBUG] [Thread-126027] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:18:35.283 [DEBUG] [Thread-126027] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:18:35.283 [DEBUG] [Thread-126027] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:18:35.283 [DEBUG] [Thread-126027] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:18:35.283 [DEBUG] [Thread-126027] [transport.py] [_log()] Compression: none
2025-11-04T01:18:35.283 [DEBUG] [Thread-126027] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:18:35.310 [DEBUG] [Thread-126027] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:18:35.314 [DEBUG] [Thread-126027] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:18:35.316 [DEBUG] [Thread-126027] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:18:35.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:18:35.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:18:35.320 [DEBUG] [Thread-126027] [transport.py] [_log()] userauth is OK
2025-11-04T01:18:35.320 [DEBUG] [Thread-126027] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:18:35.320 [DEBUG] [Thread-126027] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:18:35.320 [DEBUG] [Thread-126027] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:18:35.320 [DEBUG] [Thread-126027] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:18:35.337 [INFO] [Thread-126027] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:18:35.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:18:35.913 [DEBUG] [Thread-126027] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:18:35.923 [DEBUG] [Thread-126027] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:18:35.925 [DEBUG] [Thread-126027] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:18:35.955 [DEBUG] [Thread-126027] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:18:35.955 [DEBUG] [Thread-126027] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:18:35.957 [DEBUG] [Thread-126027] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:18:35.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:18:35.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:18:35.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:18:35.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:18:35.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:18:35.981 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:18:35.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:18:35.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:18:35.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:18:35.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.970931 -999.00  +17.60  16.06     19   -6.10 1 1 1 1 1     0    0 23.43 -28.98 ZNESW 17.3 16.1 310.2 19.3 18.0 -24.2 17.9 -23.2 17.7 -22.9 17.9 -23.8
2025-11-04T01:18:35.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:18:35.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:18:35.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.970931
2025-11-04T01:18:35.989 [DEBUG] [Thread-126027] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:18:35.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:18:36.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:18:36.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:18:36.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:18:36.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:18:36.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:18:28', tmtdew=27.95, humidity=13.61, cloud=0.0, wind=14.34, temperature=17.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:18:28', seeing=1.09, atlas_timestamp='2025-11-03T23:18:08.438', atlas_cloud=1, atlas_rain=1, zp_data=[0.0677500000000002, 0.1542500000000011, 0.03524999999999956, 0.13949999999999996, 0.08050000000000068, 0.07125000000000092, 0.04399999999999871, -0.060249999999999915, 0.09399999999999942, 0.09500000000000064, 0.13124999999999964, 0.05550000000000033, 0.1899999999999995, -0.09275000000000055, -0.09100000000000108, 0.03549999999999898, 0.11625000000000085, 0.16050000000000075, 0.15899999999999892, 0.1872499999999988, 0.2079999999999984, 0.19374999999999787, 0.021250000000000213, 0.06675000000000075, 0.08499999999999908, 0.2554999999999996, 0.16275000000000084, 0.22900000000000098, 0.30100000000000016, 0.3570000000000011, 0.19100000000000072, 0.136000000000001, 0.15424999999999756], zp_timestamp='2025-11-03T23:15:00')
2025-11-04T01:18:36.077 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:18:36.090 [DEBUG] [Thread-126030] [transport.py] [_log()] starting thread (client mode): 0x819ada0
2025-11-04T01:18:36.090 [DEBUG] [Thread-126030] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:18:36.106 [DEBUG] [Thread-126030] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:18:36.106 [INFO] [Thread-126030] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:18:36.113 [DEBUG] [Thread-126030] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:18:36.113 [DEBUG] [Thread-126030] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:18:36.113 [DEBUG] [Thread-126030] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:18:36.113 [DEBUG] [Thread-126030] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:18:36.113 [DEBUG] [Thread-126030] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:18:36.113 [DEBUG] [Thread-126030] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:18:36.114 [DEBUG] [Thread-126030] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:18:36.114 [DEBUG] [Thread-126030] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:18:36.114 [DEBUG] [Thread-126030] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:18:36.114 [DEBUG] [Thread-126030] [transport.py] [_log()] client lang: <none>
2025-11-04T01:18:36.114 [DEBUG] [Thread-126030] [transport.py] [_log()] server lang: <none>
2025-11-04T01:18:36.114 [DEBUG] [Thread-126030] [transport.py] [_log()] kex follows: False
2025-11-04T01:18:36.114 [DEBUG] [Thread-126030] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:18:36.114 [DEBUG] [Thread-126030] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:18:36.114 [DEBUG] [Thread-126030] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:18:36.114 [DEBUG] [Thread-126030] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:18:36.114 [DEBUG] [Thread-126030] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:18:36.114 [DEBUG] [Thread-126030] [transport.py] [_log()] Compression: none
2025-11-04T01:18:36.114 [DEBUG] [Thread-126030] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:18:36.174 [DEBUG] [Thread-126030] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:18:36.174 [DEBUG] [Thread-126030] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:18:36.174 [DEBUG] [Thread-126030] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:18:36.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:18:36.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:18:36.233 [DEBUG] [Thread-126030] [transport.py] [_log()] userauth is OK
2025-11-04T01:18:36.233 [DEBUG] [Thread-126030] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:18:36.233 [DEBUG] [Thread-126030] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:18:36.233 [DEBUG] [Thread-126030] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:18:36.233 [DEBUG] [Thread-126030] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:18:36.249 [INFO] [Thread-126030] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:18:36.250 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:18:36.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:18:37.100 [DEBUG] [Thread-126030] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:18:37.100 [DEBUG] [Thread-126030] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:18:37.140 [DEBUG] [Thread-126030] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:18:37.140 [DEBUG] [Thread-126030] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:18:37.151 [DEBUG] [Thread-126030] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:18:37.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:18:37.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:18:37.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:18:37.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:18:37.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:18:37.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:18:37.195 [DEBUG] [Thread-126030] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:18:39.282 [DEBUG] [Thread-126032 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:18:49.182 [DEBUG] [Thread-126033 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:19:04.309 [DEBUG] [Thread-126034 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:19:07.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:19:07.217 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:19:07.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:19:07.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 19), 27.95, 14.09, 0.0, 18.53, 17.54, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:19:07.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:19:00
2025-11-04T01:19:08.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:19:08.299 [DEBUG] [Thread-126035] [transport.py] [_log()] starting thread (client mode): 0xed07280
2025-11-04T01:19:08.300 [DEBUG] [Thread-126035] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:19:08.313 [DEBUG] [Thread-126035] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:19:08.314 [INFO] [Thread-126035] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:19:08.316 [DEBUG] [Thread-126035] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:19:08.316 [DEBUG] [Thread-126035] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:19:08.316 [DEBUG] [Thread-126035] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:19:08.316 [DEBUG] [Thread-126035] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:19:08.316 [DEBUG] [Thread-126035] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:19:08.316 [DEBUG] [Thread-126035] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:19:08.317 [DEBUG] [Thread-126035] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:19:08.317 [DEBUG] [Thread-126035] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:19:08.317 [DEBUG] [Thread-126035] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:19:08.317 [DEBUG] [Thread-126035] [transport.py] [_log()] client lang: <none>
2025-11-04T01:19:08.317 [DEBUG] [Thread-126035] [transport.py] [_log()] server lang: <none>
2025-11-04T01:19:08.317 [DEBUG] [Thread-126035] [transport.py] [_log()] kex follows: False
2025-11-04T01:19:08.317 [DEBUG] [Thread-126035] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:19:08.317 [DEBUG] [Thread-126035] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:19:08.317 [DEBUG] [Thread-126035] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:19:08.317 [DEBUG] [Thread-126035] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:19:08.317 [DEBUG] [Thread-126035] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:19:08.318 [DEBUG] [Thread-126035] [transport.py] [_log()] Compression: none
2025-11-04T01:19:08.318 [DEBUG] [Thread-126035] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:19:08.344 [DEBUG] [Thread-126035] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:19:08.347 [DEBUG] [Thread-126035] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:19:08.349 [DEBUG] [Thread-126035] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:19:08.350 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:19:08.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:19:08.353 [DEBUG] [Thread-126035] [transport.py] [_log()] userauth is OK
2025-11-04T01:19:08.354 [DEBUG] [Thread-126035] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:19:08.354 [DEBUG] [Thread-126035] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:19:08.354 [DEBUG] [Thread-126035] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:19:08.354 [DEBUG] [Thread-126035] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:19:08.389 [INFO] [Thread-126035] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:19:08.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:19:09.012 [DEBUG] [Thread-126035] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:19:09.012 [DEBUG] [Thread-126035] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:19:09.012 [DEBUG] [Thread-126035] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:19:09.053 [DEBUG] [Thread-126035] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:19:09.053 [DEBUG] [Thread-126035] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:19:09.055 [DEBUG] [Thread-126035] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:19:09.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:19:09.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:19:09.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:19:09.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:19:09.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:19:09.074 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:19:09.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:19:09.074 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:19:09.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:19:09.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.970931 -999.00  +17.60  16.06     19   -6.10 1 1 1 1 1     0    0 23.43 -28.98 ZNESW 17.3 16.1 310.2 19.3 18.0 -24.2 17.9 -23.2 17.7 -22.9 17.9 -23.8
2025-11-04T01:19:09.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:19:09.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:19:09.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.970931
2025-11-04T01:19:09.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:19:09.078 [DEBUG] [Thread-126035] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:19:09.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:19:09.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:19:09.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:19:09.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:19:09.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:19:00', tmtdew=27.95, humidity=14.09, cloud=0.0, wind=18.53, temperature=17.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:19:01', seeing=1.09, atlas_timestamp='2025-11-03T23:18:08.438', atlas_cloud=1, atlas_rain=1, zp_data=[0.0677500000000002, 0.1542500000000011, 0.03524999999999956, 0.13949999999999996, 0.08050000000000068, 0.07125000000000092, 0.04399999999999871, -0.060249999999999915, 0.09399999999999942, 0.09500000000000064, 0.13124999999999964, 0.05550000000000033, 0.1899999999999995, -0.09275000000000055, -0.09100000000000108, 0.03549999999999898, 0.11625000000000085, 0.16050000000000075, 0.15899999999999892, 0.1872499999999988, 0.2079999999999984, 0.19374999999999787, 0.021250000000000213, 0.06675000000000075, 0.08499999999999908, 0.2554999999999996, 0.16275000000000084, 0.22900000000000098, 0.30100000000000016, 0.3570000000000011, 0.19100000000000072, 0.136000000000001, 0.15424999999999756], zp_timestamp='2025-11-03T23:15:00')
2025-11-04T01:19:09.154 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:19:09.166 [DEBUG] [Thread-126038] [transport.py] [_log()] starting thread (client mode): 0x819b0a0
2025-11-04T01:19:09.166 [DEBUG] [Thread-126038] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:19:09.184 [DEBUG] [Thread-126038] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:19:09.184 [INFO] [Thread-126038] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:19:09.194 [DEBUG] [Thread-126038] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:19:09.194 [DEBUG] [Thread-126038] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:19:09.194 [DEBUG] [Thread-126038] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:19:09.194 [DEBUG] [Thread-126038] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:19:09.194 [DEBUG] [Thread-126038] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:19:09.194 [DEBUG] [Thread-126038] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:19:09.194 [DEBUG] [Thread-126038] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:19:09.194 [DEBUG] [Thread-126038] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:19:09.194 [DEBUG] [Thread-126038] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:19:09.194 [DEBUG] [Thread-126038] [transport.py] [_log()] client lang: <none>
2025-11-04T01:19:09.194 [DEBUG] [Thread-126038] [transport.py] [_log()] server lang: <none>
2025-11-04T01:19:09.194 [DEBUG] [Thread-126038] [transport.py] [_log()] kex follows: False
2025-11-04T01:19:09.194 [DEBUG] [Thread-126038] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:19:09.194 [DEBUG] [Thread-126038] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:19:09.194 [DEBUG] [Thread-126038] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:19:09.194 [DEBUG] [Thread-126038] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:19:09.194 [DEBUG] [Thread-126038] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:19:09.194 [DEBUG] [Thread-126038] [transport.py] [_log()] Compression: none
2025-11-04T01:19:09.194 [DEBUG] [Thread-126038] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:19:09.253 [DEBUG] [Thread-126038] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:19:09.253 [DEBUG] [Thread-126038] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:19:09.253 [DEBUG] [Thread-126038] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:19:09.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:19:09.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:19:09.311 [DEBUG] [Thread-126038] [transport.py] [_log()] userauth is OK
2025-11-04T01:19:09.311 [DEBUG] [Thread-126038] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:19:09.311 [DEBUG] [Thread-126038] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:19:09.311 [DEBUG] [Thread-126038] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:19:09.311 [DEBUG] [Thread-126038] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:19:09.326 [INFO] [Thread-126038] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:19:09.326 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:19:09.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:19:10.207 [DEBUG] [Thread-126038] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:19:10.207 [DEBUG] [Thread-126038] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:19:10.255 [DEBUG] [Thread-126038] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:19:10.255 [DEBUG] [Thread-126038] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:19:10.265 [DEBUG] [Thread-126038] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:19:10.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:19:10.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:19:10.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:19:10.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:19:10.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:19:10.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:19:10.312 [DEBUG] [Thread-126038] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:19:19.370 [DEBUG] [Thread-126040 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:19:29.665 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:19:29.666 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:19:34.449 [DEBUG] [Thread-126041 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:19:39.624 [DEBUG] [Thread-126042 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:19:40.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:19:40.339 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:19:40.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:19:41.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 19, 33), 27.86, 14.14, 0.0, 18.28, 17.57, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:19:41.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:19:33
2025-11-04T01:19:41.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:19:41.419 [DEBUG] [Thread-126043] [transport.py] [_log()] starting thread (client mode): 0x8198d00
2025-11-04T01:19:41.420 [DEBUG] [Thread-126043] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:19:41.433 [DEBUG] [Thread-126043] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:19:41.433 [INFO] [Thread-126043] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:19:41.441 [DEBUG] [Thread-126043] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:19:41.442 [DEBUG] [Thread-126043] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:19:41.442 [DEBUG] [Thread-126043] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:19:41.442 [DEBUG] [Thread-126043] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:19:41.442 [DEBUG] [Thread-126043] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:19:41.442 [DEBUG] [Thread-126043] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:19:41.442 [DEBUG] [Thread-126043] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:19:41.442 [DEBUG] [Thread-126043] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:19:41.442 [DEBUG] [Thread-126043] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:19:41.443 [DEBUG] [Thread-126043] [transport.py] [_log()] client lang: <none>
2025-11-04T01:19:41.443 [DEBUG] [Thread-126043] [transport.py] [_log()] server lang: <none>
2025-11-04T01:19:41.443 [DEBUG] [Thread-126043] [transport.py] [_log()] kex follows: False
2025-11-04T01:19:41.443 [DEBUG] [Thread-126043] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:19:41.443 [DEBUG] [Thread-126043] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:19:41.443 [DEBUG] [Thread-126043] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:19:41.444 [DEBUG] [Thread-126043] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:19:41.444 [DEBUG] [Thread-126043] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:19:41.444 [DEBUG] [Thread-126043] [transport.py] [_log()] Compression: none
2025-11-04T01:19:41.444 [DEBUG] [Thread-126043] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:19:41.474 [DEBUG] [Thread-126043] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:19:41.476 [DEBUG] [Thread-126043] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:19:41.478 [DEBUG] [Thread-126043] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:19:41.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:19:41.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:19:41.483 [DEBUG] [Thread-126043] [transport.py] [_log()] userauth is OK
2025-11-04T01:19:41.483 [DEBUG] [Thread-126043] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:19:41.483 [DEBUG] [Thread-126043] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:19:41.483 [DEBUG] [Thread-126043] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:19:41.483 [DEBUG] [Thread-126043] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:19:41.509 [INFO] [Thread-126043] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:19:41.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:19:42.273 [DEBUG] [Thread-126043] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:19:42.274 [DEBUG] [Thread-126043] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:19:42.276 [DEBUG] [Thread-126043] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:19:42.314 [DEBUG] [Thread-126043] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:19:42.314 [DEBUG] [Thread-126043] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:19:42.317 [DEBUG] [Thread-126043] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:19:42.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:19:42.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:19:42.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:19:42.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:19:42.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:19:42.343 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:19:42.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:19:42.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:19:42.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:19:42.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.971626 -999.00  +17.60  20.54     19   -6.00 1 1 1 1 1     0    0 23.06 -32.25 ZNESW 18.1 20.5 314.0 22.9 17.9 -24.2 17.9 -23.2 17.6 -22.8 17.9 -23.7
2025-11-04T01:19:42.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:19:42.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:19:42.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.971626
2025-11-04T01:19:42.351 [DEBUG] [Thread-126043] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:19:42.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:19:42.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:19:42.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:19:42.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:19:42.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:19:42.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:19:33', tmtdew=27.86, humidity=14.14, cloud=0.0, wind=18.28, temperature=17.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:19:34', seeing=1.2, atlas_timestamp='2025-11-03T23:19:08.486', atlas_cloud=1, atlas_rain=1, zp_data=[0.0677500000000002, 0.1542500000000011, 0.03524999999999956, 0.13949999999999996, 0.08050000000000068, 0.07125000000000092, 0.04399999999999871, -0.060249999999999915, 0.09399999999999942, 0.09500000000000064, 0.13124999999999964, 0.05550000000000033, 0.1899999999999995, -0.09275000000000055, -0.09100000000000108, 0.03549999999999898, 0.11625000000000085, 0.16050000000000075, 0.15899999999999892, 0.1872499999999988, 0.2079999999999984, 0.19374999999999787, 0.021250000000000213, 0.06675000000000075, 0.08499999999999908, 0.2554999999999996, 0.16275000000000084, 0.22900000000000098, 0.30100000000000016, 0.3570000000000011, 0.19100000000000072, 0.136000000000001, 0.15424999999999756], zp_timestamp='2025-11-03T23:18:00')
2025-11-04T01:19:42.460 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:19:42.472 [DEBUG] [Thread-126046] [transport.py] [_log()] starting thread (client mode): 0xed073a0
2025-11-04T01:19:42.472 [DEBUG] [Thread-126046] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:19:42.489 [DEBUG] [Thread-126046] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:19:42.489 [INFO] [Thread-126046] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:19:42.499 [DEBUG] [Thread-126046] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:19:42.499 [DEBUG] [Thread-126046] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:19:42.499 [DEBUG] [Thread-126046] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:19:42.499 [DEBUG] [Thread-126046] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:19:42.499 [DEBUG] [Thread-126046] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:19:42.499 [DEBUG] [Thread-126046] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:19:42.499 [DEBUG] [Thread-126046] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:19:42.499 [DEBUG] [Thread-126046] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:19:42.499 [DEBUG] [Thread-126046] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:19:42.499 [DEBUG] [Thread-126046] [transport.py] [_log()] client lang: <none>
2025-11-04T01:19:42.499 [DEBUG] [Thread-126046] [transport.py] [_log()] server lang: <none>
2025-11-04T01:19:42.499 [DEBUG] [Thread-126046] [transport.py] [_log()] kex follows: False
2025-11-04T01:19:42.499 [DEBUG] [Thread-126046] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:19:42.499 [DEBUG] [Thread-126046] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:19:42.499 [DEBUG] [Thread-126046] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:19:42.499 [DEBUG] [Thread-126046] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:19:42.499 [DEBUG] [Thread-126046] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:19:42.499 [DEBUG] [Thread-126046] [transport.py] [_log()] Compression: none
2025-11-04T01:19:42.499 [DEBUG] [Thread-126046] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:19:42.553 [DEBUG] [Thread-126046] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:19:42.553 [DEBUG] [Thread-126046] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:19:42.553 [DEBUG] [Thread-126046] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:19:42.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:19:42.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:19:42.612 [DEBUG] [Thread-126046] [transport.py] [_log()] userauth is OK
2025-11-04T01:19:42.612 [DEBUG] [Thread-126046] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:19:42.612 [DEBUG] [Thread-126046] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:19:42.612 [DEBUG] [Thread-126046] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:19:42.612 [DEBUG] [Thread-126046] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:19:42.628 [INFO] [Thread-126046] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:19:42.628 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:19:42.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:19:43.480 [DEBUG] [Thread-126046] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:19:43.481 [DEBUG] [Thread-126046] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:19:43.520 [DEBUG] [Thread-126046] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:19:43.520 [DEBUG] [Thread-126046] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:19:43.530 [DEBUG] [Thread-126046] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:19:43.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:19:43.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:19:43.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:19:43.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:19:43.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:19:43.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:19:43.569 [DEBUG] [Thread-126046] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:19:49.487 [DEBUG] [Thread-126048 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:20:04.587 [DEBUG] [Thread-126049 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:20:13.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:20:13.593 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:20:13.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:20:14.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 20, 5), 27.83, 14.17, 0.0, 18.51, 17.52, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:20:14.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:20:05
2025-11-04T01:20:14.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:20:14.624 [DEBUG] [Thread-126050] [transport.py] [_log()] starting thread (client mode): 0xed06890
2025-11-04T01:20:14.625 [DEBUG] [Thread-126050] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:20:14.638 [DEBUG] [Thread-126050] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:20:14.638 [INFO] [Thread-126050] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:20:14.643 [DEBUG] [Thread-126050] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:20:14.643 [DEBUG] [Thread-126050] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:20:14.643 [DEBUG] [Thread-126050] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:20:14.643 [DEBUG] [Thread-126050] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:20:14.643 [DEBUG] [Thread-126050] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:20:14.643 [DEBUG] [Thread-126050] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:20:14.643 [DEBUG] [Thread-126050] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:20:14.643 [DEBUG] [Thread-126050] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:20:14.643 [DEBUG] [Thread-126050] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:20:14.643 [DEBUG] [Thread-126050] [transport.py] [_log()] client lang: <none>
2025-11-04T01:20:14.643 [DEBUG] [Thread-126050] [transport.py] [_log()] server lang: <none>
2025-11-04T01:20:14.643 [DEBUG] [Thread-126050] [transport.py] [_log()] kex follows: False
2025-11-04T01:20:14.643 [DEBUG] [Thread-126050] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:20:14.644 [DEBUG] [Thread-126050] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:20:14.644 [DEBUG] [Thread-126050] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:20:14.644 [DEBUG] [Thread-126050] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:20:14.644 [DEBUG] [Thread-126050] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:20:14.644 [DEBUG] [Thread-126050] [transport.py] [_log()] Compression: none
2025-11-04T01:20:14.644 [DEBUG] [Thread-126050] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:20:14.670 [DEBUG] [Thread-126050] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:20:14.675 [DEBUG] [Thread-126050] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:20:14.676 [DEBUG] [Thread-126050] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:20:14.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:20:14.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:20:14.679 [DEBUG] [Thread-126050] [transport.py] [_log()] userauth is OK
2025-11-04T01:20:14.679 [DEBUG] [Thread-126050] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:20:14.679 [DEBUG] [Thread-126050] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:20:14.679 [DEBUG] [Thread-126050] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:20:14.679 [DEBUG] [Thread-126050] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:20:14.696 [INFO] [Thread-126050] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:20:14.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:20:16.072 [DEBUG] [Thread-126050] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:20:16.073 [DEBUG] [Thread-126050] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:20:16.074 [DEBUG] [Thread-126050] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:20:16.113 [DEBUG] [Thread-126050] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:20:16.113 [DEBUG] [Thread-126050] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:20:16.117 [DEBUG] [Thread-126050] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:20:16.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:20:16.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:20:16.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:20:16.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:20:16.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:20:16.232 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:20:16.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:20:16.232 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:20:16.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:20:16.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.971973 -999.00  +17.70  17.65     19   -6.00 1 1 1 1 1     0    0 23.16 -35.95 ZNESW 17.9 17.6 312.2 22.0 17.9 -24.1 17.9 -23.2 17.6 -22.9 17.9 -23.8
2025-11-04T01:20:16.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:20:16.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:20:16.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.971973
2025-11-04T01:20:16.241 [DEBUG] [Thread-126050] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:20:16.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:20:16.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:20:16.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:20:16.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:20:16.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:20:16.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:20:05', tmtdew=27.83, humidity=14.17, cloud=0.0, wind=18.51, temperature=17.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:20:06', seeing=1.05, atlas_timestamp='2025-11-03T23:19:38.467', atlas_cloud=1, atlas_rain=1, zp_data=[0.0677500000000002, 0.1542500000000011, 0.03524999999999956, 0.13949999999999996, 0.08050000000000068, 0.07125000000000092, 0.04399999999999871, -0.060249999999999915, 0.09399999999999942, 0.09500000000000064, 0.13124999999999964, 0.05550000000000033, 0.1899999999999995, -0.09275000000000055, -0.09100000000000108, 0.03549999999999898, 0.11625000000000085, 0.16050000000000075, 0.15899999999999892, 0.1872499999999988, 0.2079999999999984, 0.19374999999999787, 0.021250000000000213, 0.06675000000000075, 0.08499999999999908, 0.2554999999999996, 0.16275000000000084, 0.22900000000000098, 0.30100000000000016, 0.3570000000000011, 0.19100000000000072, 0.136000000000001, 0.15424999999999756], zp_timestamp='2025-11-03T23:18:00')
2025-11-04T01:20:16.343 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:20:16.355 [DEBUG] [Thread-126053] [transport.py] [_log()] starting thread (client mode): 0x117bd570
2025-11-04T01:20:16.355 [DEBUG] [Thread-126053] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:20:16.371 [DEBUG] [Thread-126053] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:20:16.371 [INFO] [Thread-126053] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:20:16.379 [DEBUG] [Thread-126053] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:20:16.379 [DEBUG] [Thread-126053] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:20:16.380 [DEBUG] [Thread-126053] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:20:16.380 [DEBUG] [Thread-126053] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:20:16.380 [DEBUG] [Thread-126053] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:20:16.380 [DEBUG] [Thread-126053] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:20:16.380 [DEBUG] [Thread-126053] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:20:16.380 [DEBUG] [Thread-126053] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:20:16.380 [DEBUG] [Thread-126053] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:20:16.380 [DEBUG] [Thread-126053] [transport.py] [_log()] client lang: <none>
2025-11-04T01:20:16.380 [DEBUG] [Thread-126053] [transport.py] [_log()] server lang: <none>
2025-11-04T01:20:16.380 [DEBUG] [Thread-126053] [transport.py] [_log()] kex follows: False
2025-11-04T01:20:16.380 [DEBUG] [Thread-126053] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:20:16.380 [DEBUG] [Thread-126053] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:20:16.380 [DEBUG] [Thread-126053] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:20:16.380 [DEBUG] [Thread-126053] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:20:16.381 [DEBUG] [Thread-126053] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:20:16.381 [DEBUG] [Thread-126053] [transport.py] [_log()] Compression: none
2025-11-04T01:20:16.381 [DEBUG] [Thread-126053] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:20:16.440 [DEBUG] [Thread-126053] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:20:16.441 [DEBUG] [Thread-126053] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:20:16.442 [DEBUG] [Thread-126053] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:20:16.442 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:20:16.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:20:16.499 [DEBUG] [Thread-126053] [transport.py] [_log()] userauth is OK
2025-11-04T01:20:16.499 [DEBUG] [Thread-126053] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:20:16.500 [DEBUG] [Thread-126053] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:20:16.500 [DEBUG] [Thread-126053] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:20:16.500 [DEBUG] [Thread-126053] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:20:16.519 [INFO] [Thread-126053] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:20:16.520 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:20:16.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:20:17.359 [DEBUG] [Thread-126053] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:20:17.360 [DEBUG] [Thread-126053] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:20:17.407 [DEBUG] [Thread-126053] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:20:17.408 [DEBUG] [Thread-126053] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:20:17.417 [DEBUG] [Thread-126053] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:20:17.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:20:17.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:20:17.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:20:17.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:20:17.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:20:17.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:20:17.462 [DEBUG] [Thread-126053] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:20:19.624 [DEBUG] [Thread-126055 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:20:29.878 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:20:29.880 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:20:34.755 [DEBUG] [Thread-126056 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:20:39.919 [DEBUG] [Thread-126057 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:20:47.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:20:47.493 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:20:47.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:20:48.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 20, 38), 27.78, 14.17, 0.0, 16.27, 17.52, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:20:48.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:20:38
2025-11-04T01:20:48.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:20:48.655 [DEBUG] [Thread-126058] [transport.py] [_log()] starting thread (client mode): 0x117bcd90
2025-11-04T01:20:48.656 [DEBUG] [Thread-126058] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:20:48.674 [DEBUG] [Thread-126058] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:20:48.674 [INFO] [Thread-126058] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:20:48.677 [DEBUG] [Thread-126058] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:20:48.677 [DEBUG] [Thread-126058] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:20:48.677 [DEBUG] [Thread-126058] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:20:48.677 [DEBUG] [Thread-126058] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:20:48.677 [DEBUG] [Thread-126058] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:20:48.677 [DEBUG] [Thread-126058] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:20:48.677 [DEBUG] [Thread-126058] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:20:48.677 [DEBUG] [Thread-126058] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:20:48.677 [DEBUG] [Thread-126058] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:20:48.677 [DEBUG] [Thread-126058] [transport.py] [_log()] client lang: <none>
2025-11-04T01:20:48.677 [DEBUG] [Thread-126058] [transport.py] [_log()] server lang: <none>
2025-11-04T01:20:48.677 [DEBUG] [Thread-126058] [transport.py] [_log()] kex follows: False
2025-11-04T01:20:48.677 [DEBUG] [Thread-126058] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:20:48.678 [DEBUG] [Thread-126058] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:20:48.678 [DEBUG] [Thread-126058] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:20:48.678 [DEBUG] [Thread-126058] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:20:48.678 [DEBUG] [Thread-126058] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:20:48.678 [DEBUG] [Thread-126058] [transport.py] [_log()] Compression: none
2025-11-04T01:20:48.678 [DEBUG] [Thread-126058] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:20:48.704 [DEBUG] [Thread-126058] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:20:48.705 [DEBUG] [Thread-126058] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:20:48.706 [DEBUG] [Thread-126058] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:20:48.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:20:48.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:20:48.708 [DEBUG] [Thread-126058] [transport.py] [_log()] userauth is OK
2025-11-04T01:20:48.708 [DEBUG] [Thread-126058] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:20:48.708 [DEBUG] [Thread-126058] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:20:48.708 [DEBUG] [Thread-126058] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:20:48.708 [DEBUG] [Thread-126058] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:20:48.746 [INFO] [Thread-126058] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:20:48.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:20:49.387 [DEBUG] [Thread-126058] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:20:49.387 [DEBUG] [Thread-126058] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:20:49.388 [DEBUG] [Thread-126058] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:20:49.429 [DEBUG] [Thread-126058] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:20:49.429 [DEBUG] [Thread-126058] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:20:49.431 [DEBUG] [Thread-126058] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:20:49.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:20:49.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:20:49.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:20:49.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:20:49.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:20:49.449 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:20:49.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:20:49.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:20:49.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:20:49.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.972320 -999.00  +17.60  15.76     19   -6.00 1 1 1 1 1     0    0 22.70 -36.59 ZNESW 18.8 15.8 309.0 21.6 17.9 -24.2 17.8 -23.1 17.6 -22.8 17.9 -23.7
2025-11-04T01:20:49.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:20:49.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:20:49.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.972320
2025-11-04T01:20:49.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:20:49.453 [DEBUG] [Thread-126058] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:20:49.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:20:49.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:20:49.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:20:49.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:20:49.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:20:38', tmtdew=27.78, humidity=14.17, cloud=0.0, wind=16.27, temperature=17.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:20:39', seeing=1.05, atlas_timestamp='2025-11-03T23:20:08.448', atlas_cloud=1, atlas_rain=1, zp_data=[0.0677500000000002, 0.1542500000000011, 0.03524999999999956, 0.13949999999999996, 0.08050000000000068, 0.07125000000000092, 0.04399999999999871, -0.060249999999999915, 0.09399999999999942, 0.09500000000000064, 0.13124999999999964, 0.05550000000000033, 0.1899999999999995, -0.09275000000000055, -0.09100000000000108, 0.03549999999999898, 0.11625000000000085, 0.16050000000000075, 0.15899999999999892, 0.1872499999999988, 0.2079999999999984, 0.19374999999999787, 0.021250000000000213, 0.06675000000000075, 0.08499999999999908, 0.2554999999999996, 0.16275000000000084, 0.22900000000000098, 0.30100000000000016, 0.3570000000000011, 0.19100000000000072, 0.136000000000001, 0.15424999999999756], zp_timestamp='2025-11-03T23:18:00')
2025-11-04T01:20:49.531 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:20:49.545 [DEBUG] [Thread-126061] [transport.py] [_log()] starting thread (client mode): 0x117be860
2025-11-04T01:20:49.545 [DEBUG] [Thread-126061] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:20:49.562 [DEBUG] [Thread-126061] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:20:49.562 [INFO] [Thread-126061] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:20:49.572 [DEBUG] [Thread-126061] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:20:49.572 [DEBUG] [Thread-126061] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:20:49.572 [DEBUG] [Thread-126061] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:20:49.572 [DEBUG] [Thread-126061] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:20:49.572 [DEBUG] [Thread-126061] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:20:49.572 [DEBUG] [Thread-126061] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:20:49.572 [DEBUG] [Thread-126061] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:20:49.572 [DEBUG] [Thread-126061] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:20:49.572 [DEBUG] [Thread-126061] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:20:49.572 [DEBUG] [Thread-126061] [transport.py] [_log()] client lang: <none>
2025-11-04T01:20:49.572 [DEBUG] [Thread-126061] [transport.py] [_log()] server lang: <none>
2025-11-04T01:20:49.572 [DEBUG] [Thread-126061] [transport.py] [_log()] kex follows: False
2025-11-04T01:20:49.572 [DEBUG] [Thread-126061] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:20:49.572 [DEBUG] [Thread-126061] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:20:49.572 [DEBUG] [Thread-126061] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:20:49.573 [DEBUG] [Thread-126061] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:20:49.573 [DEBUG] [Thread-126061] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:20:49.573 [DEBUG] [Thread-126061] [transport.py] [_log()] Compression: none
2025-11-04T01:20:49.573 [DEBUG] [Thread-126061] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:20:49.634 [DEBUG] [Thread-126061] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:20:49.635 [DEBUG] [Thread-126061] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:20:49.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:20:49.635 [DEBUG] [Thread-126061] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:20:49.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:20:49.695 [DEBUG] [Thread-126061] [transport.py] [_log()] userauth is OK
2025-11-04T01:20:49.695 [DEBUG] [Thread-126061] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:20:49.695 [DEBUG] [Thread-126061] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:20:49.695 [DEBUG] [Thread-126061] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:20:49.695 [DEBUG] [Thread-126061] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:20:49.710 [INFO] [Thread-126061] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:20:49.710 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:20:49.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:20:49.790 [DEBUG] [Thread-126063 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:20:50.530 [DEBUG] [Thread-126061] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:20:50.530 [DEBUG] [Thread-126061] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:20:50.580 [DEBUG] [Thread-126061] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:20:50.580 [DEBUG] [Thread-126061] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:20:50.592 [DEBUG] [Thread-126061] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:20:50.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:20:50.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:20:50.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:20:50.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:20:50.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:20:50.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:20:50.636 [DEBUG] [Thread-126061] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:21:04.841 [DEBUG] [Thread-126064 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:21:19.887 [DEBUG] [Thread-126065 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:21:20.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:21:20.668 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:21:20.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:21:21.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 21, 11), 27.81, 14.14, 0.0, 16.34, 17.54, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:21:21.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:21:11
2025-11-04T01:21:21.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:21:21.858 [DEBUG] [Thread-126066] [transport.py] [_log()] starting thread (client mode): 0xed06890
2025-11-04T01:21:21.858 [DEBUG] [Thread-126066] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:21:21.863 [DEBUG] [Thread-126066] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:21:21.863 [INFO] [Thread-126066] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:21:21.867 [DEBUG] [Thread-126066] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:21:21.867 [DEBUG] [Thread-126066] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:21:21.867 [DEBUG] [Thread-126066] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:21:21.867 [DEBUG] [Thread-126066] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:21:21.867 [DEBUG] [Thread-126066] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:21:21.867 [DEBUG] [Thread-126066] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:21:21.867 [DEBUG] [Thread-126066] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:21:21.868 [DEBUG] [Thread-126066] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:21:21.868 [DEBUG] [Thread-126066] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:21:21.868 [DEBUG] [Thread-126066] [transport.py] [_log()] client lang: <none>
2025-11-04T01:21:21.868 [DEBUG] [Thread-126066] [transport.py] [_log()] server lang: <none>
2025-11-04T01:21:21.868 [DEBUG] [Thread-126066] [transport.py] [_log()] kex follows: False
2025-11-04T01:21:21.868 [DEBUG] [Thread-126066] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:21:21.868 [DEBUG] [Thread-126066] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:21:21.868 [DEBUG] [Thread-126066] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:21:21.869 [DEBUG] [Thread-126066] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:21:21.869 [DEBUG] [Thread-126066] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:21:21.869 [DEBUG] [Thread-126066] [transport.py] [_log()] Compression: none
2025-11-04T01:21:21.869 [DEBUG] [Thread-126066] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:21:21.895 [DEBUG] [Thread-126066] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:21:21.900 [DEBUG] [Thread-126066] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:21:21.902 [DEBUG] [Thread-126066] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:21:21.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:21:21.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:21:21.908 [DEBUG] [Thread-126066] [transport.py] [_log()] userauth is OK
2025-11-04T01:21:21.908 [DEBUG] [Thread-126066] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:21:21.908 [DEBUG] [Thread-126066] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:21:21.908 [DEBUG] [Thread-126066] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:21:21.908 [DEBUG] [Thread-126066] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:21:21.933 [INFO] [Thread-126066] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:21:21.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:21:22.536 [DEBUG] [Thread-126066] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:21:22.536 [DEBUG] [Thread-126066] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:21:22.537 [DEBUG] [Thread-126066] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:21:22.577 [DEBUG] [Thread-126066] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:21:22.577 [DEBUG] [Thread-126066] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:21:22.580 [DEBUG] [Thread-126066] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:21:22.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:21:22.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:21:22.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:21:22.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:21:22.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:21:22.605 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:21:22.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:21:22.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:21:22.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:21:22.608 [DEBUG] [Thread-126066] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:21:22.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.972668 -999.00  +17.60  18.04     19   -6.00 1 1 1 1 1     0    0 23.07 -36.80 ZNESW 18.5 18.0 307.0 20.6 17.9 -24.0 17.8 -23.1 17.6 -22.8 17.8 -23.8
2025-11-04T01:21:22.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:21:22.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:21:22.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.972668
2025-11-04T01:21:22.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:21:22.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:21:22.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:21:22.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:21:22.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:21:22.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:21:11', tmtdew=27.81, humidity=14.14, cloud=0.0, wind=16.34, temperature=17.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:21:12', seeing=1.19, atlas_timestamp='2025-11-03T23:20:38.515', atlas_cloud=1, atlas_rain=1, zp_data=[0.0677500000000002, 0.1542500000000011, 0.03524999999999956, 0.13949999999999996, 0.08050000000000068, 0.07125000000000092, 0.04399999999999871, -0.060249999999999915, 0.09399999999999942, 0.09500000000000064, 0.13124999999999964, 0.05550000000000033, 0.1899999999999995, -0.09275000000000055, -0.09100000000000108, 0.03549999999999898, 0.11625000000000085, 0.16050000000000075, 0.15899999999999892, 0.1872499999999988, 0.2079999999999984, 0.19374999999999787, 0.021250000000000213, 0.06675000000000075, 0.08499999999999908, 0.2554999999999996, 0.16275000000000084, 0.22900000000000098, 0.30100000000000016, 0.3570000000000011, 0.19100000000000072, 0.136000000000001, 0.15424999999999756], zp_timestamp='2025-11-03T23:18:00')
2025-11-04T01:21:22.710 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:21:22.726 [DEBUG] [Thread-126069] [transport.py] [_log()] starting thread (client mode): 0x117bd060
2025-11-04T01:21:22.726 [DEBUG] [Thread-126069] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:21:22.745 [DEBUG] [Thread-126069] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:21:22.745 [INFO] [Thread-126069] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:21:22.756 [DEBUG] [Thread-126069] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:21:22.757 [DEBUG] [Thread-126069] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:21:22.757 [DEBUG] [Thread-126069] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:21:22.757 [DEBUG] [Thread-126069] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:21:22.757 [DEBUG] [Thread-126069] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:21:22.757 [DEBUG] [Thread-126069] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:21:22.757 [DEBUG] [Thread-126069] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:21:22.757 [DEBUG] [Thread-126069] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:21:22.757 [DEBUG] [Thread-126069] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:21:22.757 [DEBUG] [Thread-126069] [transport.py] [_log()] client lang: <none>
2025-11-04T01:21:22.757 [DEBUG] [Thread-126069] [transport.py] [_log()] server lang: <none>
2025-11-04T01:21:22.757 [DEBUG] [Thread-126069] [transport.py] [_log()] kex follows: False
2025-11-04T01:21:22.757 [DEBUG] [Thread-126069] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:21:22.757 [DEBUG] [Thread-126069] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:21:22.757 [DEBUG] [Thread-126069] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:21:22.757 [DEBUG] [Thread-126069] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:21:22.758 [DEBUG] [Thread-126069] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:21:22.758 [DEBUG] [Thread-126069] [transport.py] [_log()] Compression: none
2025-11-04T01:21:22.758 [DEBUG] [Thread-126069] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:21:22.819 [DEBUG] [Thread-126069] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:21:22.820 [DEBUG] [Thread-126069] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:21:22.821 [DEBUG] [Thread-126069] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:21:22.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:21:22.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:21:22.874 [DEBUG] [Thread-126069] [transport.py] [_log()] userauth is OK
2025-11-04T01:21:22.875 [DEBUG] [Thread-126069] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:21:22.875 [DEBUG] [Thread-126069] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:21:22.875 [DEBUG] [Thread-126069] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:21:22.875 [DEBUG] [Thread-126069] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:21:22.898 [INFO] [Thread-126069] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:21:22.899 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:21:22.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:21:23.762 [DEBUG] [Thread-126069] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:21:23.762 [DEBUG] [Thread-126069] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:21:23.800 [DEBUG] [Thread-126069] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:21:23.801 [DEBUG] [Thread-126069] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:21:23.809 [DEBUG] [Thread-126069] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:21:23.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:21:23.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:21:23.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:21:23.836 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:21:23.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:21:23.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:21:23.845 [DEBUG] [Thread-126069] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:21:30.082 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:21:30.083 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:21:34.915 [DEBUG] [Thread-126071 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:21:40.189 [DEBUG] [Thread-126072 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:21:50.010 [DEBUG] [Thread-126073 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:21:53.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:21:53.848 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:21:53.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:21:54.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 21, 44), 27.75, 14.19, 0.0, 18.35, 17.42, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:21:54.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:21:44
2025-11-04T01:21:55.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:21:55.265 [DEBUG] [Thread-126074] [transport.py] [_log()] starting thread (client mode): 0x819bca0
2025-11-04T01:21:55.266 [DEBUG] [Thread-126074] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:21:55.280 [DEBUG] [Thread-126074] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:21:55.281 [INFO] [Thread-126074] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:21:55.284 [DEBUG] [Thread-126074] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:21:55.284 [DEBUG] [Thread-126074] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:21:55.284 [DEBUG] [Thread-126074] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:21:55.284 [DEBUG] [Thread-126074] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:21:55.284 [DEBUG] [Thread-126074] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:21:55.284 [DEBUG] [Thread-126074] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:21:55.284 [DEBUG] [Thread-126074] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:21:55.284 [DEBUG] [Thread-126074] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:21:55.284 [DEBUG] [Thread-126074] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:21:55.284 [DEBUG] [Thread-126074] [transport.py] [_log()] client lang: <none>
2025-11-04T01:21:55.285 [DEBUG] [Thread-126074] [transport.py] [_log()] server lang: <none>
2025-11-04T01:21:55.285 [DEBUG] [Thread-126074] [transport.py] [_log()] kex follows: False
2025-11-04T01:21:55.285 [DEBUG] [Thread-126074] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:21:55.285 [DEBUG] [Thread-126074] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:21:55.286 [DEBUG] [Thread-126074] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:21:55.286 [DEBUG] [Thread-126074] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:21:55.286 [DEBUG] [Thread-126074] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:21:55.286 [DEBUG] [Thread-126074] [transport.py] [_log()] Compression: none
2025-11-04T01:21:55.286 [DEBUG] [Thread-126074] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:21:55.317 [DEBUG] [Thread-126074] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:21:55.319 [DEBUG] [Thread-126074] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:21:55.319 [DEBUG] [Thread-126074] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:21:55.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:21:55.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:21:55.321 [DEBUG] [Thread-126074] [transport.py] [_log()] userauth is OK
2025-11-04T01:21:55.321 [DEBUG] [Thread-126074] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:21:55.321 [DEBUG] [Thread-126074] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:21:55.321 [DEBUG] [Thread-126074] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:21:55.321 [DEBUG] [Thread-126074] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:21:55.338 [INFO] [Thread-126074] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:21:55.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:21:55.976 [DEBUG] [Thread-126074] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:21:55.977 [DEBUG] [Thread-126074] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:21:55.978 [DEBUG] [Thread-126074] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:21:56.017 [DEBUG] [Thread-126074] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:21:56.017 [DEBUG] [Thread-126074] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:21:56.021 [DEBUG] [Thread-126074] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:21:56.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:21:56.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:21:56.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:21:56.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:21:56.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:21:56.047 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:21:56.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:21:56.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:21:56.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:21:56.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.973015 -999.00  +17.60  17.88     19   -6.00 1 1 1 1 1     0    0 23.37 -36.31 ZNESW 18.4 17.9 313.0 20.7 17.9 -24.2 17.8 -23.2 17.6 -22.7 17.8 -23.8
2025-11-04T01:21:56.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:21:56.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:21:56.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.973015
2025-11-04T01:21:56.054 [DEBUG] [Thread-126074] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:21:56.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:21:56.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:21:56.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:21:56.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:21:56.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:21:56.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:21:44', tmtdew=27.75, humidity=14.19, cloud=0.0, wind=18.35, temperature=17.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:21:44', seeing=1.19, atlas_timestamp='2025-11-03T23:21:08.496', atlas_cloud=1, atlas_rain=1, zp_data=[0.0677500000000002, 0.1542500000000011, 0.03524999999999956, 0.13949999999999996, 0.08050000000000068, 0.07125000000000092, 0.04399999999999871, -0.060249999999999915, 0.09399999999999942, 0.09500000000000064, 0.13124999999999964, 0.05550000000000033, 0.1899999999999995, -0.09275000000000055, -0.09100000000000108, 0.03549999999999898, 0.11625000000000085, 0.16050000000000075, 0.15899999999999892, 0.1872499999999988, 0.2079999999999984, 0.19374999999999787, 0.021250000000000213, 0.06675000000000075, 0.08499999999999908, 0.2554999999999996, 0.16275000000000084, 0.22900000000000098, 0.30100000000000016, 0.3570000000000011, 0.19100000000000072, 0.136000000000001, 0.15424999999999756], zp_timestamp='2025-11-03T23:18:00')
2025-11-04T01:21:56.142 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:21:56.153 [DEBUG] [Thread-126077] [transport.py] [_log()] starting thread (client mode): 0x117bf550
2025-11-04T01:21:56.154 [DEBUG] [Thread-126077] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:21:56.168 [DEBUG] [Thread-126077] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:21:56.168 [INFO] [Thread-126077] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:21:56.176 [DEBUG] [Thread-126077] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:21:56.176 [DEBUG] [Thread-126077] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:21:56.176 [DEBUG] [Thread-126077] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:21:56.176 [DEBUG] [Thread-126077] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:21:56.177 [DEBUG] [Thread-126077] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:21:56.177 [DEBUG] [Thread-126077] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:21:56.177 [DEBUG] [Thread-126077] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:21:56.177 [DEBUG] [Thread-126077] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:21:56.177 [DEBUG] [Thread-126077] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:21:56.177 [DEBUG] [Thread-126077] [transport.py] [_log()] client lang: <none>
2025-11-04T01:21:56.177 [DEBUG] [Thread-126077] [transport.py] [_log()] server lang: <none>
2025-11-04T01:21:56.177 [DEBUG] [Thread-126077] [transport.py] [_log()] kex follows: False
2025-11-04T01:21:56.177 [DEBUG] [Thread-126077] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:21:56.177 [DEBUG] [Thread-126077] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:21:56.178 [DEBUG] [Thread-126077] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:21:56.178 [DEBUG] [Thread-126077] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:21:56.178 [DEBUG] [Thread-126077] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:21:56.178 [DEBUG] [Thread-126077] [transport.py] [_log()] Compression: none
2025-11-04T01:21:56.178 [DEBUG] [Thread-126077] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:21:56.235 [DEBUG] [Thread-126077] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:21:56.235 [DEBUG] [Thread-126077] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:21:56.236 [DEBUG] [Thread-126077] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:21:56.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:21:56.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:21:56.291 [DEBUG] [Thread-126077] [transport.py] [_log()] userauth is OK
2025-11-04T01:21:56.291 [DEBUG] [Thread-126077] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:21:56.292 [DEBUG] [Thread-126077] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:21:56.292 [DEBUG] [Thread-126077] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:21:56.292 [DEBUG] [Thread-126077] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:21:56.310 [INFO] [Thread-126077] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:21:56.310 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:21:56.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:21:57.165 [DEBUG] [Thread-126077] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:21:57.166 [DEBUG] [Thread-126077] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:21:57.205 [DEBUG] [Thread-126077] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:21:57.205 [DEBUG] [Thread-126077] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:21:57.214 [DEBUG] [Thread-126077] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:21:57.224 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:21:57.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:21:57.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:21:57.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:21:57.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:21:57.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:21:57.254 [DEBUG] [Thread-126077] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:22:05.068 [DEBUG] [Thread-126079 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:22:20.218 [DEBUG] [Thread-126080 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:22:27.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:22:27.287 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:22:27.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:22:28.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 22, 16), 27.82, 14.11, 0.0, 18.35, 17.4, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:22:28.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:22:16
2025-11-04T01:22:28.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:22:28.390 [DEBUG] [Thread-126081] [transport.py] [_log()] starting thread (client mode): 0x117bcbe0
2025-11-04T01:22:28.390 [DEBUG] [Thread-126081] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:22:28.404 [DEBUG] [Thread-126081] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:22:28.404 [INFO] [Thread-126081] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:22:28.410 [DEBUG] [Thread-126081] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:22:28.411 [DEBUG] [Thread-126081] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:22:28.411 [DEBUG] [Thread-126081] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:22:28.411 [DEBUG] [Thread-126081] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:22:28.411 [DEBUG] [Thread-126081] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:22:28.411 [DEBUG] [Thread-126081] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:22:28.411 [DEBUG] [Thread-126081] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:22:28.411 [DEBUG] [Thread-126081] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:22:28.411 [DEBUG] [Thread-126081] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:22:28.411 [DEBUG] [Thread-126081] [transport.py] [_log()] client lang: <none>
2025-11-04T01:22:28.412 [DEBUG] [Thread-126081] [transport.py] [_log()] server lang: <none>
2025-11-04T01:22:28.412 [DEBUG] [Thread-126081] [transport.py] [_log()] kex follows: False
2025-11-04T01:22:28.412 [DEBUG] [Thread-126081] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:22:28.413 [DEBUG] [Thread-126081] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:22:28.413 [DEBUG] [Thread-126081] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:22:28.413 [DEBUG] [Thread-126081] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:22:28.413 [DEBUG] [Thread-126081] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:22:28.413 [DEBUG] [Thread-126081] [transport.py] [_log()] Compression: none
2025-11-04T01:22:28.413 [DEBUG] [Thread-126081] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:22:28.437 [DEBUG] [Thread-126081] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:22:28.440 [DEBUG] [Thread-126081] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:22:28.441 [DEBUG] [Thread-126081] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:22:28.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:22:28.442 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:22:28.444 [DEBUG] [Thread-126081] [transport.py] [_log()] userauth is OK
2025-11-04T01:22:28.444 [DEBUG] [Thread-126081] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:22:28.444 [DEBUG] [Thread-126081] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:22:28.444 [DEBUG] [Thread-126081] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:22:28.444 [DEBUG] [Thread-126081] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:22:28.468 [INFO] [Thread-126081] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:22:28.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:22:29.081 [DEBUG] [Thread-126081] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:22:29.082 [DEBUG] [Thread-126081] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:22:29.091 [DEBUG] [Thread-126081] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:22:29.122 [DEBUG] [Thread-126081] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:22:29.122 [DEBUG] [Thread-126081] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:22:29.125 [DEBUG] [Thread-126081] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:22:29.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:22:29.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:22:29.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:22:29.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:22:29.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:22:29.145 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:22:29.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:22:29.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:22:29.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:22:29.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.973362 -999.00  +17.60  17.84     19   -6.00 1 1 1 1 1     0    0 22.90 -35.09 ZNESW 18.7 17.8 312.4 20.5 17.9 -23.9 17.9 -23.1 17.5 -22.8 17.8 -23.6
2025-11-04T01:22:29.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:22:29.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:22:29.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.973362
2025-11-04T01:22:29.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:22:29.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:22:29.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:22:29.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:22:29.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:22:29.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:22:16', tmtdew=27.82, humidity=14.11, cloud=0.0, wind=18.35, temperature=17.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:22:17', seeing=1.1, atlas_timestamp='2025-11-03T23:21:38.477', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004750000000001364, 0.07475000000000165, 0.0007500000000018048, 0.11399999999999899, 0.013500000000000512, 0.012250000000001648, 0.04100000000000037, -0.007749999999999702, 0.09750000000000014, 0.07600000000000051, 0.12524999999999942, 0.08099999999999952, 0.1429999999999989, 0.00024999999999941735, -0.17600000000000016, -0.017000000000001236, 0.03575000000000017, 0.10699999999999932, 0.16249999999999964, 0.1532499999999981, 0.12199999999999811, 0.0747499999999981, -0.02874999999999872, 0.06225000000000058, 0.08750000000000036, 0.1485000000000003, 0.11575000000000024, 0.2110000000000003, 0.20500000000000007, -0.10299999999999976, 0.13750000000000107, 0.07500000000000107, 0.10774999999999935], zp_timestamp='2025-11-03T23:20:00')
2025-11-04T01:22:29.153 [DEBUG] [Thread-126081] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:22:29.225 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:22:29.237 [DEBUG] [Thread-126084] [transport.py] [_log()] starting thread (client mode): 0x117bf160
2025-11-04T01:22:29.238 [DEBUG] [Thread-126084] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:22:29.254 [DEBUG] [Thread-126084] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:22:29.254 [INFO] [Thread-126084] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:22:29.262 [DEBUG] [Thread-126084] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:22:29.263 [DEBUG] [Thread-126084] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:22:29.263 [DEBUG] [Thread-126084] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:22:29.263 [DEBUG] [Thread-126084] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:22:29.263 [DEBUG] [Thread-126084] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:22:29.263 [DEBUG] [Thread-126084] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:22:29.263 [DEBUG] [Thread-126084] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:22:29.263 [DEBUG] [Thread-126084] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:22:29.263 [DEBUG] [Thread-126084] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:22:29.263 [DEBUG] [Thread-126084] [transport.py] [_log()] client lang: <none>
2025-11-04T01:22:29.263 [DEBUG] [Thread-126084] [transport.py] [_log()] server lang: <none>
2025-11-04T01:22:29.263 [DEBUG] [Thread-126084] [transport.py] [_log()] kex follows: False
2025-11-04T01:22:29.263 [DEBUG] [Thread-126084] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:22:29.263 [DEBUG] [Thread-126084] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:22:29.263 [DEBUG] [Thread-126084] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:22:29.263 [DEBUG] [Thread-126084] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:22:29.263 [DEBUG] [Thread-126084] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:22:29.264 [DEBUG] [Thread-126084] [transport.py] [_log()] Compression: none
2025-11-04T01:22:29.264 [DEBUG] [Thread-126084] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:22:29.331 [DEBUG] [Thread-126084] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:22:29.332 [DEBUG] [Thread-126084] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:22:29.332 [DEBUG] [Thread-126084] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:22:29.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:22:29.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:22:29.391 [DEBUG] [Thread-126084] [transport.py] [_log()] userauth is OK
2025-11-04T01:22:29.391 [DEBUG] [Thread-126084] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:22:29.391 [DEBUG] [Thread-126084] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:22:29.391 [DEBUG] [Thread-126084] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:22:29.391 [DEBUG] [Thread-126084] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:22:29.416 [INFO] [Thread-126084] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:22:29.417 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:22:29.417 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:22:30.287 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:22:30.289 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:22:30.322 [DEBUG] [Thread-126084] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:22:30.322 [DEBUG] [Thread-126084] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:22:30.369 [DEBUG] [Thread-126084] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:22:30.369 [DEBUG] [Thread-126084] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:22:30.379 [DEBUG] [Thread-126084] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:22:30.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:22:30.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:22:30.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:22:30.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:22:30.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:22:30.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:22:30.420 [DEBUG] [Thread-126084] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:22:35.290 [DEBUG] [Thread-126086 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:22:40.517 [DEBUG] [Thread-126087 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:22:50.380 [DEBUG] [Thread-126088 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:23:00.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:23:00.446 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:23:00.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:23:01.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 22, 49), 27.61, 14.34, 0.0, 16.69, 17.44, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:23:01.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:22:49
2025-11-04T01:23:01.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:23:01.531 [DEBUG] [Thread-126089] [transport.py] [_log()] starting thread (client mode): 0x819b7c0
2025-11-04T01:23:01.532 [DEBUG] [Thread-126089] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:23:01.545 [DEBUG] [Thread-126089] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:23:01.545 [INFO] [Thread-126089] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:23:01.549 [DEBUG] [Thread-126089] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:23:01.550 [DEBUG] [Thread-126089] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:23:01.550 [DEBUG] [Thread-126089] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:23:01.550 [DEBUG] [Thread-126089] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:23:01.550 [DEBUG] [Thread-126089] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:23:01.550 [DEBUG] [Thread-126089] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:23:01.550 [DEBUG] [Thread-126089] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:23:01.550 [DEBUG] [Thread-126089] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:23:01.550 [DEBUG] [Thread-126089] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:23:01.550 [DEBUG] [Thread-126089] [transport.py] [_log()] client lang: <none>
2025-11-04T01:23:01.550 [DEBUG] [Thread-126089] [transport.py] [_log()] server lang: <none>
2025-11-04T01:23:01.550 [DEBUG] [Thread-126089] [transport.py] [_log()] kex follows: False
2025-11-04T01:23:01.550 [DEBUG] [Thread-126089] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:23:01.550 [DEBUG] [Thread-126089] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:23:01.551 [DEBUG] [Thread-126089] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:23:01.551 [DEBUG] [Thread-126089] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:23:01.551 [DEBUG] [Thread-126089] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:23:01.551 [DEBUG] [Thread-126089] [transport.py] [_log()] Compression: none
2025-11-04T01:23:01.551 [DEBUG] [Thread-126089] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:23:01.589 [DEBUG] [Thread-126089] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:23:01.593 [DEBUG] [Thread-126089] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:23:01.595 [DEBUG] [Thread-126089] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:23:01.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:23:01.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:23:01.600 [DEBUG] [Thread-126089] [transport.py] [_log()] userauth is OK
2025-11-04T01:23:01.600 [DEBUG] [Thread-126089] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:23:01.601 [DEBUG] [Thread-126089] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:23:01.601 [DEBUG] [Thread-126089] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:23:01.601 [DEBUG] [Thread-126089] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:23:01.639 [INFO] [Thread-126089] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:23:01.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:23:02.282 [DEBUG] [Thread-126089] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:23:02.282 [DEBUG] [Thread-126089] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:23:02.291 [DEBUG] [Thread-126089] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:23:02.323 [DEBUG] [Thread-126089] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:23:02.323 [DEBUG] [Thread-126089] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:23:02.325 [DEBUG] [Thread-126089] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:23:02.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:23:02.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:23:02.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:23:02.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:23:02.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:23:02.345 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:23:02.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:23:02.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:23:02.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:23:02.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.974056 -999.00  +17.60  17.46     19   -6.00 1 1 1 1 1     0    0 22.69 -40.83 ZNESW 19.2 17.5 315.0 20.8 17.8 -24.3 17.7 -23.0 17.5 -22.8 17.8 -23.8
2025-11-04T01:23:02.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:23:02.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:23:02.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.974056
2025-11-04T01:23:02.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:23:02.362 [DEBUG] [Thread-126089] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:23:02.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:23:02.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:23:02.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:23:02.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:23:02.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:22:49', tmtdew=27.61, humidity=14.34, cloud=0.0, wind=16.69, temperature=17.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:22:49', seeing=1.1, atlas_timestamp='2025-11-03T23:22:38.438', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004750000000001364, 0.07475000000000165, 0.0007500000000018048, 0.11399999999999899, 0.013500000000000512, 0.012250000000001648, 0.04100000000000037, -0.007749999999999702, 0.09750000000000014, 0.07600000000000051, 0.12524999999999942, 0.08099999999999952, 0.1429999999999989, 0.00024999999999941735, -0.17600000000000016, -0.017000000000001236, 0.03575000000000017, 0.10699999999999932, 0.16249999999999964, 0.1532499999999981, 0.12199999999999811, 0.0747499999999981, -0.02874999999999872, 0.06225000000000058, 0.08750000000000036, 0.1485000000000003, 0.11575000000000024, 0.2110000000000003, 0.20500000000000007, -0.10299999999999976, 0.13750000000000107, 0.07500000000000107, 0.10774999999999935], zp_timestamp='2025-11-03T23:20:00')
2025-11-04T01:23:02.438 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:23:02.452 [DEBUG] [Thread-126092] [transport.py] [_log()] starting thread (client mode): 0x819b3a0
2025-11-04T01:23:02.452 [DEBUG] [Thread-126092] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:23:02.466 [DEBUG] [Thread-126092] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:23:02.466 [INFO] [Thread-126092] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:23:02.474 [DEBUG] [Thread-126092] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:23:02.474 [DEBUG] [Thread-126092] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:23:02.474 [DEBUG] [Thread-126092] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:23:02.474 [DEBUG] [Thread-126092] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:23:02.474 [DEBUG] [Thread-126092] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:23:02.474 [DEBUG] [Thread-126092] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:23:02.474 [DEBUG] [Thread-126092] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:23:02.474 [DEBUG] [Thread-126092] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:23:02.474 [DEBUG] [Thread-126092] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:23:02.474 [DEBUG] [Thread-126092] [transport.py] [_log()] client lang: <none>
2025-11-04T01:23:02.474 [DEBUG] [Thread-126092] [transport.py] [_log()] server lang: <none>
2025-11-04T01:23:02.474 [DEBUG] [Thread-126092] [transport.py] [_log()] kex follows: False
2025-11-04T01:23:02.474 [DEBUG] [Thread-126092] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:23:02.474 [DEBUG] [Thread-126092] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:23:02.474 [DEBUG] [Thread-126092] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:23:02.474 [DEBUG] [Thread-126092] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:23:02.474 [DEBUG] [Thread-126092] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:23:02.474 [DEBUG] [Thread-126092] [transport.py] [_log()] Compression: none
2025-11-04T01:23:02.474 [DEBUG] [Thread-126092] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:23:02.529 [DEBUG] [Thread-126092] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:23:02.529 [DEBUG] [Thread-126092] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:23:02.529 [DEBUG] [Thread-126092] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:23:02.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:23:02.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:23:02.586 [DEBUG] [Thread-126092] [transport.py] [_log()] userauth is OK
2025-11-04T01:23:02.586 [DEBUG] [Thread-126092] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:23:02.587 [DEBUG] [Thread-126092] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:23:02.587 [DEBUG] [Thread-126092] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:23:02.587 [DEBUG] [Thread-126092] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:23:02.600 [INFO] [Thread-126092] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:23:02.601 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:23:02.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:23:03.451 [DEBUG] [Thread-126092] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:23:03.451 [DEBUG] [Thread-126092] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:23:03.499 [DEBUG] [Thread-126092] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:23:03.500 [DEBUG] [Thread-126092] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:23:03.511 [DEBUG] [Thread-126092] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:23:03.522 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:23:03.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:23:03.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:23:03.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:23:03.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:23:03.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:23:03.560 [DEBUG] [Thread-126092] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:23:05.410 [DEBUG] [Thread-126094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:23:20.501 [DEBUG] [Thread-126095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:23:30.494 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:23:30.494 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:23:33.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:23:33.580 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:23:33.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:23:34.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 23, 21), 27.75, 14.19, 0.0, 17.17, 17.47, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:23:34.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:23:21
2025-11-04T01:23:34.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:23:34.532 [DEBUG] [Thread-126096] [transport.py] [_log()] starting thread (client mode): 0x819b160
2025-11-04T01:23:34.532 [DEBUG] [Thread-126096] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:23:34.552 [DEBUG] [Thread-126096] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:23:34.552 [INFO] [Thread-126096] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:23:34.555 [DEBUG] [Thread-126096] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:23:34.555 [DEBUG] [Thread-126096] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:23:34.555 [DEBUG] [Thread-126096] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:23:34.555 [DEBUG] [Thread-126096] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:23:34.555 [DEBUG] [Thread-126096] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:23:34.555 [DEBUG] [Thread-126096] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:23:34.555 [DEBUG] [Thread-126096] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:23:34.555 [DEBUG] [Thread-126096] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:23:34.555 [DEBUG] [Thread-126096] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:23:34.555 [DEBUG] [Thread-126096] [transport.py] [_log()] client lang: <none>
2025-11-04T01:23:34.555 [DEBUG] [Thread-126096] [transport.py] [_log()] server lang: <none>
2025-11-04T01:23:34.555 [DEBUG] [Thread-126096] [transport.py] [_log()] kex follows: False
2025-11-04T01:23:34.555 [DEBUG] [Thread-126096] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:23:34.555 [DEBUG] [Thread-126096] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:23:34.555 [DEBUG] [Thread-126096] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:23:34.555 [DEBUG] [Thread-126096] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:23:34.555 [DEBUG] [Thread-126096] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:23:34.555 [DEBUG] [Thread-126096] [transport.py] [_log()] Compression: none
2025-11-04T01:23:34.555 [DEBUG] [Thread-126096] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:23:34.572 [DEBUG] [Thread-126096] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:23:34.572 [DEBUG] [Thread-126096] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:23:34.572 [DEBUG] [Thread-126096] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:23:34.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:23:34.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:23:34.573 [DEBUG] [Thread-126096] [transport.py] [_log()] userauth is OK
2025-11-04T01:23:34.573 [DEBUG] [Thread-126096] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:23:34.573 [DEBUG] [Thread-126096] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:23:34.573 [DEBUG] [Thread-126096] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:23:34.573 [DEBUG] [Thread-126096] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:23:34.600 [INFO] [Thread-126096] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:23:34.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:23:35.322 [DEBUG] [Thread-126096] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:23:35.322 [DEBUG] [Thread-126096] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:23:35.322 [DEBUG] [Thread-126096] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:23:35.362 [DEBUG] [Thread-126096] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:23:35.362 [DEBUG] [Thread-126096] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:23:35.364 [DEBUG] [Thread-126096] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:23:35.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:23:35.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:23:35.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:23:35.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:23:35.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:23:35.381 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:23:35.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:23:35.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:23:35.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:23:35.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.974404 -999.00  +17.60  19.14     19   -5.90 1 1 1 1 1     0    0 22.60 -44.65 ZNESW 16.6 19.1 311.2 21.9 17.8 -24.1 17.8 -23.1 17.5 -22.8 17.7 -23.7
2025-11-04T01:23:35.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:23:35.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:23:35.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.974404
2025-11-04T01:23:35.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:23:35.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:23:35.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:23:35.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:23:35.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:23:35.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:23:21', tmtdew=27.75, humidity=14.19, cloud=0.0, wind=17.17, temperature=17.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:23:22', seeing=1.1, atlas_timestamp='2025-11-03T23:23:08.506', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004750000000001364, 0.07475000000000165, 0.0007500000000018048, 0.11399999999999899, 0.013500000000000512, 0.012250000000001648, 0.04100000000000037, -0.007749999999999702, 0.09750000000000014, 0.07600000000000051, 0.12524999999999942, 0.08099999999999952, 0.1429999999999989, 0.00024999999999941735, -0.17600000000000016, -0.017000000000001236, 0.03575000000000017, 0.10699999999999932, 0.16249999999999964, 0.1532499999999981, 0.12199999999999811, 0.0747499999999981, -0.02874999999999872, 0.06225000000000058, 0.08750000000000036, 0.1485000000000003, 0.11575000000000024, 0.2110000000000003, 0.20500000000000007, -0.10299999999999976, 0.13750000000000107, 0.07500000000000107, 0.10774999999999935], zp_timestamp='2025-11-03T23:20:00')
2025-11-04T01:23:35.382 [DEBUG] [Thread-126096] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:23:35.457 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:23:35.471 [DEBUG] [Thread-126099] [transport.py] [_log()] starting thread (client mode): 0x8199b40
2025-11-04T01:23:35.472 [DEBUG] [Thread-126099] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:23:35.488 [DEBUG] [Thread-126099] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:23:35.488 [INFO] [Thread-126099] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:23:35.501 [DEBUG] [Thread-126099] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:23:35.501 [DEBUG] [Thread-126099] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:23:35.501 [DEBUG] [Thread-126099] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:23:35.501 [DEBUG] [Thread-126099] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:23:35.501 [DEBUG] [Thread-126099] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:23:35.501 [DEBUG] [Thread-126099] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:23:35.501 [DEBUG] [Thread-126099] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:23:35.501 [DEBUG] [Thread-126099] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:23:35.501 [DEBUG] [Thread-126099] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:23:35.501 [DEBUG] [Thread-126099] [transport.py] [_log()] client lang: <none>
2025-11-04T01:23:35.501 [DEBUG] [Thread-126099] [transport.py] [_log()] server lang: <none>
2025-11-04T01:23:35.501 [DEBUG] [Thread-126099] [transport.py] [_log()] kex follows: False
2025-11-04T01:23:35.501 [DEBUG] [Thread-126099] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:23:35.501 [DEBUG] [Thread-126099] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:23:35.501 [DEBUG] [Thread-126099] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:23:35.501 [DEBUG] [Thread-126099] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:23:35.501 [DEBUG] [Thread-126099] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:23:35.501 [DEBUG] [Thread-126099] [transport.py] [_log()] Compression: none
2025-11-04T01:23:35.501 [DEBUG] [Thread-126099] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:23:35.528 [DEBUG] [Thread-126101 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:23:35.558 [DEBUG] [Thread-126099] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:23:35.558 [DEBUG] [Thread-126099] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:23:35.559 [DEBUG] [Thread-126099] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:23:35.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:23:35.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:23:35.614 [DEBUG] [Thread-126099] [transport.py] [_log()] userauth is OK
2025-11-04T01:23:35.615 [DEBUG] [Thread-126099] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:23:35.615 [DEBUG] [Thread-126099] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:23:35.615 [DEBUG] [Thread-126099] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:23:35.615 [DEBUG] [Thread-126099] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:23:35.634 [INFO] [Thread-126099] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:23:35.635 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:23:35.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:23:36.469 [DEBUG] [Thread-126099] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:23:36.469 [DEBUG] [Thread-126099] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:23:36.516 [DEBUG] [Thread-126099] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:23:36.516 [DEBUG] [Thread-126099] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:23:36.525 [DEBUG] [Thread-126099] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:23:36.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:23:36.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:23:36.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:23:36.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:23:36.552 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:23:36.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:23:36.562 [DEBUG] [Thread-126099] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:23:40.876 [DEBUG] [Thread-126102 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:23:50.585 [DEBUG] [Thread-126103 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:24:05.664 [DEBUG] [Thread-126104 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:24:06.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:24:06.571 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:24:06.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:24:07.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 23, 54), 27.69, 14.21, 0.0, 16.34, 17.42, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:24:07.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:23:54
2025-11-04T01:24:07.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:24:07.800 [DEBUG] [Thread-126105] [transport.py] [_log()] starting thread (client mode): 0xed36b30
2025-11-04T01:24:07.801 [DEBUG] [Thread-126105] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:24:07.813 [DEBUG] [Thread-126105] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:24:07.814 [INFO] [Thread-126105] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:24:07.820 [DEBUG] [Thread-126105] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:24:07.820 [DEBUG] [Thread-126105] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:24:07.820 [DEBUG] [Thread-126105] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:24:07.820 [DEBUG] [Thread-126105] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:24:07.820 [DEBUG] [Thread-126105] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:24:07.820 [DEBUG] [Thread-126105] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:24:07.820 [DEBUG] [Thread-126105] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:24:07.820 [DEBUG] [Thread-126105] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:24:07.820 [DEBUG] [Thread-126105] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:24:07.821 [DEBUG] [Thread-126105] [transport.py] [_log()] client lang: <none>
2025-11-04T01:24:07.821 [DEBUG] [Thread-126105] [transport.py] [_log()] server lang: <none>
2025-11-04T01:24:07.821 [DEBUG] [Thread-126105] [transport.py] [_log()] kex follows: False
2025-11-04T01:24:07.821 [DEBUG] [Thread-126105] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:24:07.822 [DEBUG] [Thread-126105] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:24:07.822 [DEBUG] [Thread-126105] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:24:07.822 [DEBUG] [Thread-126105] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:24:07.822 [DEBUG] [Thread-126105] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:24:07.823 [DEBUG] [Thread-126105] [transport.py] [_log()] Compression: none
2025-11-04T01:24:07.823 [DEBUG] [Thread-126105] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:24:07.854 [DEBUG] [Thread-126105] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:24:07.860 [DEBUG] [Thread-126105] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:24:07.862 [DEBUG] [Thread-126105] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:24:07.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:24:07.865 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:24:07.867 [DEBUG] [Thread-126105] [transport.py] [_log()] userauth is OK
2025-11-04T01:24:07.868 [DEBUG] [Thread-126105] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:24:07.868 [DEBUG] [Thread-126105] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:24:07.868 [DEBUG] [Thread-126105] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:24:07.868 [DEBUG] [Thread-126105] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:24:07.905 [INFO] [Thread-126105] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:24:07.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:24:08.578 [DEBUG] [Thread-126105] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:24:08.587 [DEBUG] [Thread-126105] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:24:08.587 [DEBUG] [Thread-126105] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:24:08.618 [DEBUG] [Thread-126105] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:24:08.618 [DEBUG] [Thread-126105] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:24:08.621 [DEBUG] [Thread-126105] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:24:08.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:24:08.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:24:08.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:24:08.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:24:08.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:24:08.638 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:24:08.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:24:08.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:24:08.639 [DEBUG] [Thread-126105] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:24:08.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:24:08.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.974751 -999.00  +17.50  15.85     19   -6.00 1 1 1 1 1     0    0 22.52 -48.10 ZNESW 16.4 15.8 315.8 19.5 17.8 -24.1 17.7 -23.0 17.4 -22.8 17.7 -23.7
2025-11-04T01:24:08.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:24:08.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:24:08.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.974751
2025-11-04T01:24:08.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:24:08.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:24:08.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:24:08.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:24:08.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:24:08.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:23:54', tmtdew=27.69, humidity=14.21, cloud=0.0, wind=16.34, temperature=17.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:23:54', seeing=1.16, atlas_timestamp='2025-11-03T23:23:38.486', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004750000000001364, 0.07475000000000165, 0.0007500000000018048, 0.11399999999999899, 0.013500000000000512, 0.012250000000001648, 0.04100000000000037, -0.007749999999999702, 0.09750000000000014, 0.07600000000000051, 0.12524999999999942, 0.08099999999999952, 0.1429999999999989, 0.00024999999999941735, -0.17600000000000016, -0.017000000000001236, 0.03575000000000017, 0.10699999999999932, 0.16249999999999964, 0.1532499999999981, 0.12199999999999811, 0.0747499999999981, -0.02874999999999872, 0.06225000000000058, 0.08750000000000036, 0.1485000000000003, 0.11575000000000024, 0.2110000000000003, 0.20500000000000007, -0.10299999999999976, 0.13750000000000107, 0.07500000000000107, 0.10774999999999935], zp_timestamp='2025-11-03T23:20:00')
2025-11-04T01:24:08.739 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:24:08.752 [DEBUG] [Thread-126108] [transport.py] [_log()] starting thread (client mode): 0xed34a30
2025-11-04T01:24:08.752 [DEBUG] [Thread-126108] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:24:08.767 [DEBUG] [Thread-126108] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:24:08.767 [INFO] [Thread-126108] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:24:08.776 [DEBUG] [Thread-126108] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:24:08.776 [DEBUG] [Thread-126108] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:24:08.776 [DEBUG] [Thread-126108] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:24:08.776 [DEBUG] [Thread-126108] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:24:08.776 [DEBUG] [Thread-126108] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:24:08.776 [DEBUG] [Thread-126108] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:24:08.776 [DEBUG] [Thread-126108] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:24:08.776 [DEBUG] [Thread-126108] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:24:08.776 [DEBUG] [Thread-126108] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:24:08.776 [DEBUG] [Thread-126108] [transport.py] [_log()] client lang: <none>
2025-11-04T01:24:08.776 [DEBUG] [Thread-126108] [transport.py] [_log()] server lang: <none>
2025-11-04T01:24:08.776 [DEBUG] [Thread-126108] [transport.py] [_log()] kex follows: False
2025-11-04T01:24:08.776 [DEBUG] [Thread-126108] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:24:08.776 [DEBUG] [Thread-126108] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:24:08.776 [DEBUG] [Thread-126108] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:24:08.776 [DEBUG] [Thread-126108] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:24:08.776 [DEBUG] [Thread-126108] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:24:08.776 [DEBUG] [Thread-126108] [transport.py] [_log()] Compression: none
2025-11-04T01:24:08.776 [DEBUG] [Thread-126108] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:24:08.838 [DEBUG] [Thread-126108] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:24:08.838 [DEBUG] [Thread-126108] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:24:08.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:24:08.838 [DEBUG] [Thread-126108] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:24:08.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:24:08.895 [DEBUG] [Thread-126108] [transport.py] [_log()] userauth is OK
2025-11-04T01:24:08.895 [DEBUG] [Thread-126108] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:24:08.895 [DEBUG] [Thread-126108] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:24:08.895 [DEBUG] [Thread-126108] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:24:08.895 [DEBUG] [Thread-126108] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:24:08.912 [INFO] [Thread-126108] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:24:08.912 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:24:08.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:24:09.758 [DEBUG] [Thread-126108] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:24:09.759 [DEBUG] [Thread-126108] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:24:09.807 [DEBUG] [Thread-126108] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:24:09.807 [DEBUG] [Thread-126108] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:24:09.815 [DEBUG] [Thread-126108] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:24:09.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:24:09.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:24:09.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:24:09.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:24:09.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:24:09.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:24:09.849 [DEBUG] [Thread-126108] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:24:20.722 [DEBUG] [Thread-126110 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:24:30.698 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:24:30.700 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:24:35.837 [DEBUG] [Thread-126111 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:24:39.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:24:39.881 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:24:39.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:24:40.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 24, 27), 27.69, 14.22, 0.0, 16.53, 17.49, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:24:40.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:24:27
2025-11-04T01:24:40.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:24:41.076 [DEBUG] [Thread-126112] [transport.py] [_log()] starting thread (client mode): 0xed07850
2025-11-04T01:24:41.076 [DEBUG] [Thread-126112] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:24:41.096 [DEBUG] [Thread-126112] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:24:41.096 [INFO] [Thread-126112] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:24:41.098 [DEBUG] [Thread-126112] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:24:41.098 [DEBUG] [Thread-126112] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:24:41.098 [DEBUG] [Thread-126112] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:24:41.098 [DEBUG] [Thread-126112] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:24:41.098 [DEBUG] [Thread-126112] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:24:41.098 [DEBUG] [Thread-126112] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:24:41.098 [DEBUG] [Thread-126112] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:24:41.098 [DEBUG] [Thread-126112] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:24:41.098 [DEBUG] [Thread-126112] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:24:41.098 [DEBUG] [Thread-126112] [transport.py] [_log()] client lang: <none>
2025-11-04T01:24:41.098 [DEBUG] [Thread-126112] [transport.py] [_log()] server lang: <none>
2025-11-04T01:24:41.098 [DEBUG] [Thread-126112] [transport.py] [_log()] kex follows: False
2025-11-04T01:24:41.098 [DEBUG] [Thread-126112] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:24:41.098 [DEBUG] [Thread-126112] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:24:41.098 [DEBUG] [Thread-126112] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:24:41.098 [DEBUG] [Thread-126112] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:24:41.099 [DEBUG] [Thread-126112] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:24:41.099 [DEBUG] [Thread-126112] [transport.py] [_log()] Compression: none
2025-11-04T01:24:41.099 [DEBUG] [Thread-126112] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:24:41.111 [DEBUG] [Thread-126112] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:24:41.112 [DEBUG] [Thread-126112] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:24:41.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:24:41.112 [DEBUG] [Thread-126112] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:24:41.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:24:41.113 [DEBUG] [Thread-126112] [transport.py] [_log()] userauth is OK
2025-11-04T01:24:41.113 [DEBUG] [Thread-126112] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:24:41.113 [DEBUG] [Thread-126112] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:24:41.113 [DEBUG] [Thread-126112] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:24:41.113 [DEBUG] [Thread-126112] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:24:41.122 [INFO] [Thread-126112] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:24:41.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:24:41.164 [DEBUG] [Thread-126114 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:24:41.788 [DEBUG] [Thread-126112] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:24:41.788 [DEBUG] [Thread-126112] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:24:41.788 [DEBUG] [Thread-126112] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:24:41.829 [DEBUG] [Thread-126112] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:24:41.829 [DEBUG] [Thread-126112] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:24:41.831 [DEBUG] [Thread-126112] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:24:41.843 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:24:41.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:24:41.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:24:41.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:24:41.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:24:41.850 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:24:41.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:24:41.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:24:41.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:24:41.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.975098 -999.00  +17.50  18.09     19   -6.00 1 1 1 1 1     0    0 22.39 -45.90 ZNESW 15.9 18.1 313.0 20.9 17.8 -24.1 17.8 -23.1 17.5 -22.7 17.7 -23.7
2025-11-04T01:24:41.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:24:41.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:24:41.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.975098
2025-11-04T01:24:41.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:24:41.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:24:41.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:24:41.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:24:41.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:24:41.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:24:27', tmtdew=27.69, humidity=14.22, cloud=0.0, wind=16.53, temperature=17.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:24:27', seeing=1.11, atlas_timestamp='2025-11-03T23:24:08.467', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004750000000001364, 0.07475000000000165, 0.0007500000000018048, 0.11399999999999899, 0.013500000000000512, 0.012250000000001648, 0.04100000000000037, -0.007749999999999702, 0.09750000000000014, 0.07600000000000051, 0.12524999999999942, 0.08099999999999952, 0.1429999999999989, 0.00024999999999941735, -0.17600000000000016, -0.017000000000001236, 0.03575000000000017, 0.10699999999999932, 0.16249999999999964, 0.1532499999999981, 0.12199999999999811, 0.0747499999999981, -0.02874999999999872, 0.06225000000000058, 0.08750000000000036, 0.1485000000000003, 0.11575000000000024, 0.2110000000000003, 0.20500000000000007, -0.10299999999999976, 0.13750000000000107, 0.07500000000000107, 0.10774999999999935], zp_timestamp='2025-11-03T23:20:00')
2025-11-04T01:24:41.851 [DEBUG] [Thread-126112] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:24:41.924 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:24:41.937 [DEBUG] [Thread-126116] [transport.py] [_log()] starting thread (client mode): 0xed05e40
2025-11-04T01:24:41.937 [DEBUG] [Thread-126116] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:24:41.952 [DEBUG] [Thread-126116] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:24:41.952 [INFO] [Thread-126116] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:24:41.960 [DEBUG] [Thread-126116] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:24:41.960 [DEBUG] [Thread-126116] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:24:41.960 [DEBUG] [Thread-126116] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:24:41.960 [DEBUG] [Thread-126116] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:24:41.960 [DEBUG] [Thread-126116] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:24:41.960 [DEBUG] [Thread-126116] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:24:41.960 [DEBUG] [Thread-126116] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:24:41.960 [DEBUG] [Thread-126116] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:24:41.960 [DEBUG] [Thread-126116] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:24:41.961 [DEBUG] [Thread-126116] [transport.py] [_log()] client lang: <none>
2025-11-04T01:24:41.961 [DEBUG] [Thread-126116] [transport.py] [_log()] server lang: <none>
2025-11-04T01:24:41.961 [DEBUG] [Thread-126116] [transport.py] [_log()] kex follows: False
2025-11-04T01:24:41.961 [DEBUG] [Thread-126116] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:24:41.961 [DEBUG] [Thread-126116] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:24:41.961 [DEBUG] [Thread-126116] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:24:41.961 [DEBUG] [Thread-126116] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:24:41.961 [DEBUG] [Thread-126116] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:24:41.961 [DEBUG] [Thread-126116] [transport.py] [_log()] Compression: none
2025-11-04T01:24:41.961 [DEBUG] [Thread-126116] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:24:42.019 [DEBUG] [Thread-126116] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:24:42.020 [DEBUG] [Thread-126116] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:24:42.021 [DEBUG] [Thread-126116] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:24:42.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:24:42.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:24:42.082 [DEBUG] [Thread-126116] [transport.py] [_log()] userauth is OK
2025-11-04T01:24:42.083 [DEBUG] [Thread-126116] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:24:42.083 [DEBUG] [Thread-126116] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:24:42.083 [DEBUG] [Thread-126116] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:24:42.083 [DEBUG] [Thread-126116] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:24:42.104 [INFO] [Thread-126116] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:24:42.105 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:24:42.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:24:42.970 [DEBUG] [Thread-126116] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:24:42.970 [DEBUG] [Thread-126116] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:24:43.018 [DEBUG] [Thread-126116] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:24:43.018 [DEBUG] [Thread-126116] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:24:43.028 [DEBUG] [Thread-126116] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:24:43.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:24:43.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:24:43.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:24:43.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:24:43.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:24:43.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:24:43.076 [DEBUG] [Thread-126116] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:24:50.864 [DEBUG] [Thread-126118 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:25:05.905 [DEBUG] [Thread-126119 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:25:13.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:25:13.099 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:25:13.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:25:14.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 24, 59), 27.66, 14.19, 0.0, 18.6, 17.4, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:25:14.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:24:59
2025-11-04T01:25:14.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:25:14.342 [DEBUG] [Thread-126120] [transport.py] [_log()] starting thread (client mode): 0xed06fb0
2025-11-04T01:25:14.343 [DEBUG] [Thread-126120] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:25:14.357 [DEBUG] [Thread-126120] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:25:14.357 [INFO] [Thread-126120] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:25:14.365 [DEBUG] [Thread-126120] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:25:14.365 [DEBUG] [Thread-126120] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:25:14.366 [DEBUG] [Thread-126120] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:25:14.366 [DEBUG] [Thread-126120] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:25:14.366 [DEBUG] [Thread-126120] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:25:14.366 [DEBUG] [Thread-126120] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:25:14.366 [DEBUG] [Thread-126120] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:25:14.366 [DEBUG] [Thread-126120] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:25:14.366 [DEBUG] [Thread-126120] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:25:14.366 [DEBUG] [Thread-126120] [transport.py] [_log()] client lang: <none>
2025-11-04T01:25:14.366 [DEBUG] [Thread-126120] [transport.py] [_log()] server lang: <none>
2025-11-04T01:25:14.366 [DEBUG] [Thread-126120] [transport.py] [_log()] kex follows: False
2025-11-04T01:25:14.366 [DEBUG] [Thread-126120] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:25:14.366 [DEBUG] [Thread-126120] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:25:14.366 [DEBUG] [Thread-126120] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:25:14.366 [DEBUG] [Thread-126120] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:25:14.367 [DEBUG] [Thread-126120] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:25:14.367 [DEBUG] [Thread-126120] [transport.py] [_log()] Compression: none
2025-11-04T01:25:14.367 [DEBUG] [Thread-126120] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:25:14.401 [DEBUG] [Thread-126120] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:25:14.405 [DEBUG] [Thread-126120] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:25:14.406 [DEBUG] [Thread-126120] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:25:14.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:25:14.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:25:14.409 [DEBUG] [Thread-126120] [transport.py] [_log()] userauth is OK
2025-11-04T01:25:14.410 [DEBUG] [Thread-126120] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:25:14.410 [DEBUG] [Thread-126120] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:25:14.410 [DEBUG] [Thread-126120] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:25:14.410 [DEBUG] [Thread-126120] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:25:14.449 [INFO] [Thread-126120] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:25:14.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:25:15.099 [DEBUG] [Thread-126120] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:25:15.099 [DEBUG] [Thread-126120] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:25:15.109 [DEBUG] [Thread-126120] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:25:15.141 [DEBUG] [Thread-126120] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:25:15.141 [DEBUG] [Thread-126120] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:25:15.143 [DEBUG] [Thread-126120] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:25:15.157 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:25:15.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:25:15.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:25:15.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:25:15.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:25:15.163 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:25:15.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:25:15.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:25:15.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:25:15.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.975445 -999.00  +17.50  16.34     19   -6.00 1 1 1 1 1     0    0 22.66 -48.65 ZNESW 18.0 16.3 312.2 20.1 17.8 -24.1 17.8 -22.9 17.4 -22.8 17.7 -23.6
2025-11-04T01:25:15.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:25:15.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:25:15.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.975445
2025-11-04T01:25:15.171 [DEBUG] [Thread-126120] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:25:15.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:25:15.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:25:15.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:25:15.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:25:15.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:25:15.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:24:59', tmtdew=27.66, humidity=14.19, cloud=0.0, wind=18.6, temperature=17.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:25:00', seeing=1.11, atlas_timestamp='2025-11-03T23:24:38.448', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004750000000001364, 0.07475000000000165, 0.0007500000000018048, 0.11399999999999899, 0.013500000000000512, 0.012250000000001648, 0.04100000000000037, -0.007749999999999702, 0.09750000000000014, 0.07600000000000051, 0.12524999999999942, 0.08099999999999952, 0.1429999999999989, 0.00024999999999941735, -0.17600000000000016, -0.017000000000001236, 0.03575000000000017, 0.10699999999999932, 0.16249999999999964, 0.1532499999999981, 0.12199999999999811, 0.0747499999999981, -0.02874999999999872, 0.06225000000000058, 0.08750000000000036, 0.1485000000000003, 0.11575000000000024, 0.2110000000000003, 0.20500000000000007, -0.10299999999999976, 0.13750000000000107, 0.07500000000000107, 0.10774999999999935], zp_timestamp='2025-11-03T23:24:00')
2025-11-04T01:25:15.254 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:25:15.266 [DEBUG] [Thread-126123] [transport.py] [_log()] starting thread (client mode): 0xed05c00
2025-11-04T01:25:15.266 [DEBUG] [Thread-126123] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:25:15.281 [DEBUG] [Thread-126123] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:25:15.281 [INFO] [Thread-126123] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:25:15.289 [DEBUG] [Thread-126123] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:25:15.289 [DEBUG] [Thread-126123] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:25:15.289 [DEBUG] [Thread-126123] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:25:15.289 [DEBUG] [Thread-126123] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:25:15.289 [DEBUG] [Thread-126123] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:25:15.289 [DEBUG] [Thread-126123] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:25:15.289 [DEBUG] [Thread-126123] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:25:15.289 [DEBUG] [Thread-126123] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:25:15.289 [DEBUG] [Thread-126123] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:25:15.289 [DEBUG] [Thread-126123] [transport.py] [_log()] client lang: <none>
2025-11-04T01:25:15.289 [DEBUG] [Thread-126123] [transport.py] [_log()] server lang: <none>
2025-11-04T01:25:15.289 [DEBUG] [Thread-126123] [transport.py] [_log()] kex follows: False
2025-11-04T01:25:15.289 [DEBUG] [Thread-126123] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:25:15.289 [DEBUG] [Thread-126123] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:25:15.289 [DEBUG] [Thread-126123] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:25:15.289 [DEBUG] [Thread-126123] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:25:15.289 [DEBUG] [Thread-126123] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:25:15.289 [DEBUG] [Thread-126123] [transport.py] [_log()] Compression: none
2025-11-04T01:25:15.289 [DEBUG] [Thread-126123] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:25:15.350 [DEBUG] [Thread-126123] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:25:15.350 [DEBUG] [Thread-126123] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:25:15.350 [DEBUG] [Thread-126123] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:25:15.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:25:15.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:25:15.408 [DEBUG] [Thread-126123] [transport.py] [_log()] userauth is OK
2025-11-04T01:25:15.408 [DEBUG] [Thread-126123] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:25:15.408 [DEBUG] [Thread-126123] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:25:15.408 [DEBUG] [Thread-126123] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:25:15.408 [DEBUG] [Thread-126123] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:25:15.421 [INFO] [Thread-126123] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:25:15.422 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:25:15.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:25:16.283 [DEBUG] [Thread-126123] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:25:16.283 [DEBUG] [Thread-126123] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:25:16.322 [DEBUG] [Thread-126123] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:25:16.323 [DEBUG] [Thread-126123] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:25:16.332 [DEBUG] [Thread-126123] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:25:16.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:25:16.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:25:16.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:25:16.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:25:16.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:25:16.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:25:16.373 [DEBUG] [Thread-126123] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:25:20.951 [DEBUG] [Thread-126125 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:25:30.903 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:25:30.904 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:25:36.054 [DEBUG] [Thread-126126 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:25:41.522 [DEBUG] [Thread-126127 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:25:46.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:25:46.397 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:25:46.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:25:47.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 25, 32), 27.65, 14.21, 0.0, 18.23, 17.45, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:25:47.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:25:32
2025-11-04T01:25:47.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:25:47.469 [DEBUG] [Thread-126128] [transport.py] [_log()] starting thread (client mode): 0xed047f0
2025-11-04T01:25:47.469 [DEBUG] [Thread-126128] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:25:47.481 [DEBUG] [Thread-126128] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:25:47.481 [INFO] [Thread-126128] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:25:47.485 [DEBUG] [Thread-126128] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:25:47.485 [DEBUG] [Thread-126128] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:25:47.485 [DEBUG] [Thread-126128] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:25:47.485 [DEBUG] [Thread-126128] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:25:47.485 [DEBUG] [Thread-126128] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:25:47.485 [DEBUG] [Thread-126128] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:25:47.485 [DEBUG] [Thread-126128] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:25:47.485 [DEBUG] [Thread-126128] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:25:47.485 [DEBUG] [Thread-126128] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:25:47.485 [DEBUG] [Thread-126128] [transport.py] [_log()] client lang: <none>
2025-11-04T01:25:47.485 [DEBUG] [Thread-126128] [transport.py] [_log()] server lang: <none>
2025-11-04T01:25:47.485 [DEBUG] [Thread-126128] [transport.py] [_log()] kex follows: False
2025-11-04T01:25:47.485 [DEBUG] [Thread-126128] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:25:47.485 [DEBUG] [Thread-126128] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:25:47.486 [DEBUG] [Thread-126128] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:25:47.486 [DEBUG] [Thread-126128] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:25:47.486 [DEBUG] [Thread-126128] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:25:47.486 [DEBUG] [Thread-126128] [transport.py] [_log()] Compression: none
2025-11-04T01:25:47.486 [DEBUG] [Thread-126128] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:25:47.516 [DEBUG] [Thread-126128] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:25:47.520 [DEBUG] [Thread-126128] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:25:47.522 [DEBUG] [Thread-126128] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:25:47.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:25:47.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:25:47.528 [DEBUG] [Thread-126128] [transport.py] [_log()] userauth is OK
2025-11-04T01:25:47.528 [DEBUG] [Thread-126128] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:25:47.528 [DEBUG] [Thread-126128] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:25:47.528 [DEBUG] [Thread-126128] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:25:47.528 [DEBUG] [Thread-126128] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:25:47.566 [INFO] [Thread-126128] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:25:47.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:25:48.219 [DEBUG] [Thread-126128] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:25:48.219 [DEBUG] [Thread-126128] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:25:48.219 [DEBUG] [Thread-126128] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:25:48.259 [DEBUG] [Thread-126128] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:25:48.259 [DEBUG] [Thread-126128] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:25:48.262 [DEBUG] [Thread-126128] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:25:48.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:25:48.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:25:48.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:25:48.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:25:48.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:25:48.280 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:25:48.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:25:48.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:25:48.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:25:48.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.976140 -999.00  +17.50  17.80     19   -6.10 1 1 1 1 1     0    0 22.33 -50.44 ZNESW 15.2 17.8 311.4 20.4 17.8 -24.1 17.7 -23.0 17.4 -22.7 17.7 -23.6
2025-11-04T01:25:48.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:25:48.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:25:48.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.976140
2025-11-04T01:25:48.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:25:48.286 [DEBUG] [Thread-126128] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:25:48.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:25:48.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:25:48.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:25:48.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:25:48.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:25:32', tmtdew=27.65, humidity=14.21, cloud=0.0, wind=18.23, temperature=17.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:25:32', seeing=1.18, atlas_timestamp='2025-11-03T23:25:38.496', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004750000000001364, 0.07475000000000165, 0.0007500000000018048, 0.11399999999999899, 0.013500000000000512, 0.012250000000001648, 0.04100000000000037, -0.007749999999999702, 0.09750000000000014, 0.07600000000000051, 0.12524999999999942, 0.08099999999999952, 0.1429999999999989, 0.00024999999999941735, -0.17600000000000016, -0.017000000000001236, 0.03575000000000017, 0.10699999999999932, 0.16249999999999964, 0.1532499999999981, 0.12199999999999811, 0.0747499999999981, -0.02874999999999872, 0.06225000000000058, 0.08750000000000036, 0.1485000000000003, 0.11575000000000024, 0.2110000000000003, 0.20500000000000007, -0.10299999999999976, 0.13750000000000107, 0.07500000000000107, 0.10774999999999935], zp_timestamp='2025-11-03T23:24:00')
2025-11-04T01:25:48.372 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:25:48.386 [DEBUG] [Thread-126131] [transport.py] [_log()] starting thread (client mode): 0x8198790
2025-11-04T01:25:48.386 [DEBUG] [Thread-126131] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:25:48.402 [DEBUG] [Thread-126131] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:25:48.402 [INFO] [Thread-126131] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:25:48.411 [DEBUG] [Thread-126131] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:25:48.412 [DEBUG] [Thread-126131] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:25:48.412 [DEBUG] [Thread-126131] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:25:48.412 [DEBUG] [Thread-126131] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:25:48.412 [DEBUG] [Thread-126131] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:25:48.412 [DEBUG] [Thread-126131] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:25:48.412 [DEBUG] [Thread-126131] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:25:48.412 [DEBUG] [Thread-126131] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:25:48.412 [DEBUG] [Thread-126131] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:25:48.412 [DEBUG] [Thread-126131] [transport.py] [_log()] client lang: <none>
2025-11-04T01:25:48.413 [DEBUG] [Thread-126131] [transport.py] [_log()] server lang: <none>
2025-11-04T01:25:48.413 [DEBUG] [Thread-126131] [transport.py] [_log()] kex follows: False
2025-11-04T01:25:48.413 [DEBUG] [Thread-126131] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:25:48.413 [DEBUG] [Thread-126131] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:25:48.413 [DEBUG] [Thread-126131] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:25:48.413 [DEBUG] [Thread-126131] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:25:48.413 [DEBUG] [Thread-126131] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:25:48.413 [DEBUG] [Thread-126131] [transport.py] [_log()] Compression: none
2025-11-04T01:25:48.413 [DEBUG] [Thread-126131] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:25:48.471 [DEBUG] [Thread-126131] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:25:48.471 [DEBUG] [Thread-126131] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:25:48.472 [DEBUG] [Thread-126131] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:25:48.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:25:48.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:25:48.526 [DEBUG] [Thread-126131] [transport.py] [_log()] userauth is OK
2025-11-04T01:25:48.527 [DEBUG] [Thread-126131] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:25:48.527 [DEBUG] [Thread-126131] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:25:48.527 [DEBUG] [Thread-126131] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:25:48.527 [DEBUG] [Thread-126131] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:25:48.550 [INFO] [Thread-126131] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:25:48.550 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:25:48.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:25:49.424 [DEBUG] [Thread-126131] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:25:49.424 [DEBUG] [Thread-126131] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:25:49.472 [DEBUG] [Thread-126131] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:25:49.472 [DEBUG] [Thread-126131] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:25:49.482 [DEBUG] [Thread-126131] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:25:49.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:25:49.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:25:49.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:25:49.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:25:49.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:25:49.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:25:49.518 [DEBUG] [Thread-126131] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:25:51.088 [DEBUG] [Thread-126133 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:26:06.148 [DEBUG] [Thread-126134 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:26:19.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:26:19.555 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:26:19.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:26:20.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 26, 4), 27.67, 14.17, 0.0, 18.51, 17.4, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:26:20.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:26:04
2025-11-04T01:26:20.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:26:20.691 [DEBUG] [Thread-126135] [transport.py] [_log()] starting thread (client mode): 0x819bb20
2025-11-04T01:26:20.692 [DEBUG] [Thread-126135] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:26:20.704 [DEBUG] [Thread-126135] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:26:20.704 [INFO] [Thread-126135] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:26:20.709 [DEBUG] [Thread-126135] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:26:20.710 [DEBUG] [Thread-126135] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:26:20.710 [DEBUG] [Thread-126135] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:26:20.710 [DEBUG] [Thread-126135] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:26:20.710 [DEBUG] [Thread-126135] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:26:20.710 [DEBUG] [Thread-126135] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:26:20.710 [DEBUG] [Thread-126135] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:26:20.710 [DEBUG] [Thread-126135] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:26:20.710 [DEBUG] [Thread-126135] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:26:20.710 [DEBUG] [Thread-126135] [transport.py] [_log()] client lang: <none>
2025-11-04T01:26:20.710 [DEBUG] [Thread-126135] [transport.py] [_log()] server lang: <none>
2025-11-04T01:26:20.710 [DEBUG] [Thread-126135] [transport.py] [_log()] kex follows: False
2025-11-04T01:26:20.710 [DEBUG] [Thread-126135] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:26:20.711 [DEBUG] [Thread-126135] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:26:20.711 [DEBUG] [Thread-126135] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:26:20.711 [DEBUG] [Thread-126135] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:26:20.712 [DEBUG] [Thread-126135] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:26:20.712 [DEBUG] [Thread-126135] [transport.py] [_log()] Compression: none
2025-11-04T01:26:20.712 [DEBUG] [Thread-126135] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:26:20.736 [DEBUG] [Thread-126135] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:26:20.740 [DEBUG] [Thread-126135] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:26:20.743 [DEBUG] [Thread-126135] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:26:20.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:26:20.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:26:20.747 [DEBUG] [Thread-126135] [transport.py] [_log()] userauth is OK
2025-11-04T01:26:20.748 [DEBUG] [Thread-126135] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:26:20.748 [DEBUG] [Thread-126135] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:26:20.748 [DEBUG] [Thread-126135] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:26:20.748 [DEBUG] [Thread-126135] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:26:20.774 [INFO] [Thread-126135] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:26:20.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:26:21.180 [DEBUG] [Thread-126137 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:26:21.323 [DEBUG] [Thread-126135] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:26:21.324 [DEBUG] [Thread-126135] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:26:21.325 [DEBUG] [Thread-126135] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:26:21.365 [DEBUG] [Thread-126135] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:26:21.365 [DEBUG] [Thread-126135] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:26:21.369 [DEBUG] [Thread-126135] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:26:21.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:26:21.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:26:21.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:26:21.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:26:21.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:26:21.396 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:26:21.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:26:21.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:26:21.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:26:21.398 [DEBUG] [Thread-126135] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:26:21.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.976487 -999.00  +17.40  18.25     19   -6.10 1 1 1 1 1     0    0 22.17 -53.50 ZNESW 16.3 18.2 315.8 18.9 17.8 -24.2 17.7 -23.0 17.4 -22.7 17.7 -23.7
2025-11-04T01:26:21.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:26:21.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:26:21.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.976487
2025-11-04T01:26:21.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:26:21.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:26:21.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:26:21.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:26:21.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:26:21.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:26:04', tmtdew=27.67, humidity=14.17, cloud=0.0, wind=18.51, temperature=17.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:26:05', seeing=1.24, atlas_timestamp='2025-11-03T23:26:08.477', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004750000000001364, 0.07475000000000165, 0.0007500000000018048, 0.11399999999999899, 0.013500000000000512, 0.012250000000001648, 0.04100000000000037, -0.007749999999999702, 0.09750000000000014, 0.07600000000000051, 0.12524999999999942, 0.08099999999999952, 0.1429999999999989, 0.00024999999999941735, -0.17600000000000016, -0.017000000000001236, 0.03575000000000017, 0.10699999999999932, 0.16249999999999964, 0.1532499999999981, 0.12199999999999811, 0.0747499999999981, -0.02874999999999872, 0.06225000000000058, 0.08750000000000036, 0.1485000000000003, 0.11575000000000024, 0.2110000000000003, 0.20500000000000007, -0.10299999999999976, 0.13750000000000107, 0.07500000000000107, 0.10774999999999935], zp_timestamp='2025-11-03T23:24:00')
2025-11-04T01:26:21.509 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:26:21.523 [DEBUG] [Thread-126139] [transport.py] [_log()] starting thread (client mode): 0x819ae60
2025-11-04T01:26:21.524 [DEBUG] [Thread-126139] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:26:21.539 [DEBUG] [Thread-126139] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:26:21.539 [INFO] [Thread-126139] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:26:21.549 [DEBUG] [Thread-126139] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:26:21.549 [DEBUG] [Thread-126139] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:26:21.549 [DEBUG] [Thread-126139] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:26:21.549 [DEBUG] [Thread-126139] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:26:21.549 [DEBUG] [Thread-126139] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:26:21.549 [DEBUG] [Thread-126139] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:26:21.549 [DEBUG] [Thread-126139] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:26:21.549 [DEBUG] [Thread-126139] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:26:21.549 [DEBUG] [Thread-126139] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:26:21.549 [DEBUG] [Thread-126139] [transport.py] [_log()] client lang: <none>
2025-11-04T01:26:21.549 [DEBUG] [Thread-126139] [transport.py] [_log()] server lang: <none>
2025-11-04T01:26:21.549 [DEBUG] [Thread-126139] [transport.py] [_log()] kex follows: False
2025-11-04T01:26:21.549 [DEBUG] [Thread-126139] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:26:21.549 [DEBUG] [Thread-126139] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:26:21.549 [DEBUG] [Thread-126139] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:26:21.550 [DEBUG] [Thread-126139] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:26:21.550 [DEBUG] [Thread-126139] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:26:21.550 [DEBUG] [Thread-126139] [transport.py] [_log()] Compression: none
2025-11-04T01:26:21.550 [DEBUG] [Thread-126139] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:26:21.606 [DEBUG] [Thread-126139] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:26:21.606 [DEBUG] [Thread-126139] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:26:21.606 [DEBUG] [Thread-126139] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:26:21.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:26:21.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:26:21.663 [DEBUG] [Thread-126139] [transport.py] [_log()] userauth is OK
2025-11-04T01:26:21.663 [DEBUG] [Thread-126139] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:26:21.663 [DEBUG] [Thread-126139] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:26:21.663 [DEBUG] [Thread-126139] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:26:21.663 [DEBUG] [Thread-126139] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:26:21.679 [INFO] [Thread-126139] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:26:21.679 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:26:21.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:26:22.525 [DEBUG] [Thread-126139] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:26:22.525 [DEBUG] [Thread-126139] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:26:22.574 [DEBUG] [Thread-126139] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:26:22.574 [DEBUG] [Thread-126139] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:26:22.584 [DEBUG] [Thread-126139] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:26:22.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:26:22.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:26:22.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:26:22.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:26:22.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:26:22.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:26:22.630 [DEBUG] [Thread-126139] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:26:31.106 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:26:31.107 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:26:36.212 [DEBUG] [Thread-126141 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:26:41.881 [DEBUG] [Thread-126142 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:26:51.285 [DEBUG] [Thread-126143 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:26:52.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:26:52.654 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:26:52.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:26:53.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 26, 37), 27.63, 14.16, 0.0, 18.1, 17.34, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:26:53.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:26:37
2025-11-04T01:26:53.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:26:53.670 [DEBUG] [Thread-126144] [transport.py] [_log()] starting thread (client mode): 0x8198c10
2025-11-04T01:26:53.671 [DEBUG] [Thread-126144] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:26:53.677 [DEBUG] [Thread-126144] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:26:53.678 [INFO] [Thread-126144] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:26:53.681 [DEBUG] [Thread-126144] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:26:53.681 [DEBUG] [Thread-126144] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:26:53.681 [DEBUG] [Thread-126144] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:26:53.681 [DEBUG] [Thread-126144] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:26:53.681 [DEBUG] [Thread-126144] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:26:53.681 [DEBUG] [Thread-126144] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:26:53.681 [DEBUG] [Thread-126144] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:26:53.681 [DEBUG] [Thread-126144] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:26:53.681 [DEBUG] [Thread-126144] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:26:53.681 [DEBUG] [Thread-126144] [transport.py] [_log()] client lang: <none>
2025-11-04T01:26:53.681 [DEBUG] [Thread-126144] [transport.py] [_log()] server lang: <none>
2025-11-04T01:26:53.681 [DEBUG] [Thread-126144] [transport.py] [_log()] kex follows: False
2025-11-04T01:26:53.681 [DEBUG] [Thread-126144] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:26:53.682 [DEBUG] [Thread-126144] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:26:53.682 [DEBUG] [Thread-126144] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:26:53.682 [DEBUG] [Thread-126144] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:26:53.682 [DEBUG] [Thread-126144] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:26:53.682 [DEBUG] [Thread-126144] [transport.py] [_log()] Compression: none
2025-11-04T01:26:53.682 [DEBUG] [Thread-126144] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:26:53.711 [DEBUG] [Thread-126144] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:26:53.714 [DEBUG] [Thread-126144] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:26:53.716 [DEBUG] [Thread-126144] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:26:53.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:26:53.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:26:53.719 [DEBUG] [Thread-126144] [transport.py] [_log()] userauth is OK
2025-11-04T01:26:53.720 [DEBUG] [Thread-126144] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:26:53.720 [DEBUG] [Thread-126144] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:26:53.720 [DEBUG] [Thread-126144] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:26:53.720 [DEBUG] [Thread-126144] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:26:53.736 [INFO] [Thread-126144] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:26:53.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:26:54.329 [DEBUG] [Thread-126144] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:26:54.329 [DEBUG] [Thread-126144] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:26:54.329 [DEBUG] [Thread-126144] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:26:54.369 [DEBUG] [Thread-126144] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:26:54.369 [DEBUG] [Thread-126144] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:26:54.371 [DEBUG] [Thread-126144] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:26:54.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:26:54.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:26:54.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:26:54.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:26:54.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:26:54.384 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:26:54.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:26:54.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:26:54.386 [DEBUG] [Thread-126144] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:26:54.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:26:54.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.976834 -999.00  +17.30  14.77     19   -6.10 1 1 1 1 1     0    0 22.31 -56.44 ZNESW 16.0 14.8 313.2 18.3 17.8 -24.1 17.7 -23.0 17.4 -22.7 17.7 -23.5
2025-11-04T01:26:54.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:26:54.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:26:54.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.976834
2025-11-04T01:26:54.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:26:54.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:26:54.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:26:54.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:26:54.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:26:54.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:26:37', tmtdew=27.63, humidity=14.16, cloud=0.0, wind=18.1, temperature=17.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:26:37', seeing=1.24, atlas_timestamp='2025-11-03T23:26:38.458', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004750000000001364, 0.07475000000000165, 0.0007500000000018048, 0.11399999999999899, 0.013500000000000512, 0.012250000000001648, 0.04100000000000037, -0.007749999999999702, 0.09750000000000014, 0.07600000000000051, 0.12524999999999942, 0.08099999999999952, 0.1429999999999989, 0.00024999999999941735, -0.17600000000000016, -0.017000000000001236, 0.03575000000000017, 0.10699999999999932, 0.16249999999999964, 0.1532499999999981, 0.12199999999999811, 0.0747499999999981, -0.02874999999999872, 0.06225000000000058, 0.08750000000000036, 0.1485000000000003, 0.11575000000000024, 0.2110000000000003, 0.20500000000000007, -0.10299999999999976, 0.13750000000000107, 0.07500000000000107, 0.10774999999999935], zp_timestamp='2025-11-03T23:24:00')
2025-11-04T01:26:54.483 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:26:54.496 [DEBUG] [Thread-126147] [transport.py] [_log()] starting thread (client mode): 0xed06a70
2025-11-04T01:26:54.497 [DEBUG] [Thread-126147] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:26:54.512 [DEBUG] [Thread-126147] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:26:54.512 [INFO] [Thread-126147] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:26:54.520 [DEBUG] [Thread-126147] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:26:54.520 [DEBUG] [Thread-126147] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:26:54.520 [DEBUG] [Thread-126147] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:26:54.520 [DEBUG] [Thread-126147] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:26:54.520 [DEBUG] [Thread-126147] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:26:54.520 [DEBUG] [Thread-126147] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:26:54.520 [DEBUG] [Thread-126147] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:26:54.520 [DEBUG] [Thread-126147] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:26:54.520 [DEBUG] [Thread-126147] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:26:54.520 [DEBUG] [Thread-126147] [transport.py] [_log()] client lang: <none>
2025-11-04T01:26:54.520 [DEBUG] [Thread-126147] [transport.py] [_log()] server lang: <none>
2025-11-04T01:26:54.520 [DEBUG] [Thread-126147] [transport.py] [_log()] kex follows: False
2025-11-04T01:26:54.520 [DEBUG] [Thread-126147] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:26:54.520 [DEBUG] [Thread-126147] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:26:54.520 [DEBUG] [Thread-126147] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:26:54.520 [DEBUG] [Thread-126147] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:26:54.521 [DEBUG] [Thread-126147] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:26:54.521 [DEBUG] [Thread-126147] [transport.py] [_log()] Compression: none
2025-11-04T01:26:54.521 [DEBUG] [Thread-126147] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:26:54.578 [DEBUG] [Thread-126147] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:26:54.579 [DEBUG] [Thread-126147] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:26:54.579 [DEBUG] [Thread-126147] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:26:54.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:26:54.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:26:54.641 [DEBUG] [Thread-126147] [transport.py] [_log()] userauth is OK
2025-11-04T01:26:54.641 [DEBUG] [Thread-126147] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:26:54.641 [DEBUG] [Thread-126147] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:26:54.641 [DEBUG] [Thread-126147] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:26:54.641 [DEBUG] [Thread-126147] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:26:54.658 [INFO] [Thread-126147] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:26:54.658 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:26:54.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:26:55.527 [DEBUG] [Thread-126147] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:26:55.528 [DEBUG] [Thread-126147] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:26:55.567 [DEBUG] [Thread-126147] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:26:55.567 [DEBUG] [Thread-126147] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:26:55.577 [DEBUG] [Thread-126147] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:26:55.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:26:55.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:26:55.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:26:55.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:26:55.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:26:55.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:26:55.618 [DEBUG] [Thread-126147] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:27:06.317 [DEBUG] [Thread-126149 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:27:21.402 [DEBUG] [Thread-126150 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:27:25.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:27:25.634 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:27:25.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:27:26.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 27, 9), 27.61, 14.17, 0.0, 18.53, 17.29, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:27:26.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:27:09
2025-11-04T01:27:26.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:27:26.897 [DEBUG] [Thread-126151] [transport.py] [_log()] starting thread (client mode): 0xed052d0
2025-11-04T01:27:26.897 [DEBUG] [Thread-126151] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:27:26.916 [DEBUG] [Thread-126151] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:27:26.916 [INFO] [Thread-126151] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:27:26.919 [DEBUG] [Thread-126151] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:27:26.919 [DEBUG] [Thread-126151] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:27:26.919 [DEBUG] [Thread-126151] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:27:26.919 [DEBUG] [Thread-126151] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:27:26.919 [DEBUG] [Thread-126151] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:27:26.919 [DEBUG] [Thread-126151] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:27:26.919 [DEBUG] [Thread-126151] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:27:26.919 [DEBUG] [Thread-126151] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:27:26.919 [DEBUG] [Thread-126151] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:27:26.920 [DEBUG] [Thread-126151] [transport.py] [_log()] client lang: <none>
2025-11-04T01:27:26.920 [DEBUG] [Thread-126151] [transport.py] [_log()] server lang: <none>
2025-11-04T01:27:26.920 [DEBUG] [Thread-126151] [transport.py] [_log()] kex follows: False
2025-11-04T01:27:26.920 [DEBUG] [Thread-126151] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:27:26.920 [DEBUG] [Thread-126151] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:27:26.920 [DEBUG] [Thread-126151] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:27:26.920 [DEBUG] [Thread-126151] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:27:26.920 [DEBUG] [Thread-126151] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:27:26.920 [DEBUG] [Thread-126151] [transport.py] [_log()] Compression: none
2025-11-04T01:27:26.920 [DEBUG] [Thread-126151] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:27:26.938 [DEBUG] [Thread-126151] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:27:26.938 [DEBUG] [Thread-126151] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:27:26.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:27:26.939 [DEBUG] [Thread-126151] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:27:26.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:27:26.941 [DEBUG] [Thread-126151] [transport.py] [_log()] userauth is OK
2025-11-04T01:27:26.941 [DEBUG] [Thread-126151] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:27:26.941 [DEBUG] [Thread-126151] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:27:26.941 [DEBUG] [Thread-126151] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:27:26.941 [DEBUG] [Thread-126151] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:27:26.956 [INFO] [Thread-126151] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:27:26.956 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:27:27.585 [DEBUG] [Thread-126151] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:27:27.585 [DEBUG] [Thread-126151] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:27:27.587 [DEBUG] [Thread-126151] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:27:27.626 [DEBUG] [Thread-126151] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:27:27.627 [DEBUG] [Thread-126151] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:27:27.631 [DEBUG] [Thread-126151] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:27:27.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:27:27.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:27:27.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:27:27.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:27:27.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:27:27.652 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:27:27.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:27:27.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:27:27.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:27:27.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.977181 -999.00  +17.30  15.54     19   -6.00 1 1 1 1 1     0    0 22.44 -61.91 ZNESW 15.5 15.5 316.6 20.3 17.7 -24.1 17.6 -22.9 17.4 -22.7 17.6 -23.5
2025-11-04T01:27:27.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:27:27.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:27:27.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.977181
2025-11-04T01:27:27.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:27:27.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:27:27.657 [DEBUG] [Thread-126151] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:27:27.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:27:27.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:27:27.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:27:27.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:27:09', tmtdew=27.61, humidity=14.17, cloud=0.0, wind=18.53, temperature=17.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:27:10', seeing=1.23, atlas_timestamp='2025-11-03T23:27:08.438', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004750000000001364, 0.07475000000000165, 0.0007500000000018048, 0.11399999999999899, 0.013500000000000512, 0.012250000000001648, 0.04100000000000037, -0.007749999999999702, 0.09750000000000014, 0.07600000000000051, 0.12524999999999942, 0.08099999999999952, 0.1429999999999989, 0.00024999999999941735, -0.17600000000000016, -0.017000000000001236, 0.03575000000000017, 0.10699999999999932, 0.16249999999999964, 0.1532499999999981, 0.12199999999999811, 0.0747499999999981, -0.02874999999999872, 0.06225000000000058, 0.08750000000000036, 0.1485000000000003, 0.11575000000000024, 0.2110000000000003, 0.20500000000000007, -0.10299999999999976, 0.13750000000000107, 0.07500000000000107, 0.10774999999999935], zp_timestamp='2025-11-03T23:24:00')
2025-11-04T01:27:27.741 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:27:27.752 [DEBUG] [Thread-126154] [transport.py] [_log()] starting thread (client mode): 0x819a740
2025-11-04T01:27:27.752 [DEBUG] [Thread-126154] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:27:27.768 [DEBUG] [Thread-126154] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:27:27.768 [INFO] [Thread-126154] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:27:27.778 [DEBUG] [Thread-126154] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:27:27.778 [DEBUG] [Thread-126154] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:27:27.778 [DEBUG] [Thread-126154] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:27:27.778 [DEBUG] [Thread-126154] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:27:27.778 [DEBUG] [Thread-126154] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:27:27.778 [DEBUG] [Thread-126154] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:27:27.778 [DEBUG] [Thread-126154] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:27:27.779 [DEBUG] [Thread-126154] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:27:27.779 [DEBUG] [Thread-126154] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:27:27.779 [DEBUG] [Thread-126154] [transport.py] [_log()] client lang: <none>
2025-11-04T01:27:27.779 [DEBUG] [Thread-126154] [transport.py] [_log()] server lang: <none>
2025-11-04T01:27:27.779 [DEBUG] [Thread-126154] [transport.py] [_log()] kex follows: False
2025-11-04T01:27:27.779 [DEBUG] [Thread-126154] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:27:27.779 [DEBUG] [Thread-126154] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:27:27.779 [DEBUG] [Thread-126154] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:27:27.779 [DEBUG] [Thread-126154] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:27:27.779 [DEBUG] [Thread-126154] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:27:27.779 [DEBUG] [Thread-126154] [transport.py] [_log()] Compression: none
2025-11-04T01:27:27.779 [DEBUG] [Thread-126154] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:27:27.850 [DEBUG] [Thread-126154] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:27:27.850 [DEBUG] [Thread-126154] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:27:27.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:27:27.851 [DEBUG] [Thread-126154] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:27:27.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:27:27.910 [DEBUG] [Thread-126154] [transport.py] [_log()] userauth is OK
2025-11-04T01:27:27.910 [DEBUG] [Thread-126154] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:27:27.910 [DEBUG] [Thread-126154] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:27:27.911 [DEBUG] [Thread-126154] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:27:27.911 [DEBUG] [Thread-126154] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:27:27.929 [INFO] [Thread-126154] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:27:27.930 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:27:27.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:27:28.865 [DEBUG] [Thread-126154] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:27:28.865 [DEBUG] [Thread-126154] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:27:28.912 [DEBUG] [Thread-126154] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:27:28.912 [DEBUG] [Thread-126154] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:27:28.921 [DEBUG] [Thread-126154] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:27:28.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:27:28.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:27:28.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:27:28.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:27:28.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:27:28.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:27:28.958 [DEBUG] [Thread-126154] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:27:31.308 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:27:31.309 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:27:36.436 [DEBUG] [Thread-126156 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:27:42.157 [DEBUG] [Thread-126157 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:27:51.501 [DEBUG] [Thread-126158 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:27:58.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:27:58.989 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:27:59.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:27:59.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 27, 42), 27.57, 14.22, 0.0, 17.5, 17.32, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:27:59.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:27:42
2025-11-04T01:28:00.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:28:00.218 [DEBUG] [Thread-126159] [transport.py] [_log()] starting thread (client mode): 0xed042b0
2025-11-04T01:28:00.218 [DEBUG] [Thread-126159] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:28:00.237 [DEBUG] [Thread-126159] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:28:00.237 [INFO] [Thread-126159] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:28:00.240 [DEBUG] [Thread-126159] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:28:00.241 [DEBUG] [Thread-126159] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:28:00.241 [DEBUG] [Thread-126159] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:28:00.241 [DEBUG] [Thread-126159] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:28:00.241 [DEBUG] [Thread-126159] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:28:00.241 [DEBUG] [Thread-126159] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:28:00.241 [DEBUG] [Thread-126159] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:28:00.241 [DEBUG] [Thread-126159] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:28:00.241 [DEBUG] [Thread-126159] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:28:00.241 [DEBUG] [Thread-126159] [transport.py] [_log()] client lang: <none>
2025-11-04T01:28:00.241 [DEBUG] [Thread-126159] [transport.py] [_log()] server lang: <none>
2025-11-04T01:28:00.241 [DEBUG] [Thread-126159] [transport.py] [_log()] kex follows: False
2025-11-04T01:28:00.242 [DEBUG] [Thread-126159] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:28:00.242 [DEBUG] [Thread-126159] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:28:00.242 [DEBUG] [Thread-126159] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:28:00.242 [DEBUG] [Thread-126159] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:28:00.242 [DEBUG] [Thread-126159] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:28:00.243 [DEBUG] [Thread-126159] [transport.py] [_log()] Compression: none
2025-11-04T01:28:00.243 [DEBUG] [Thread-126159] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:28:00.259 [DEBUG] [Thread-126159] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:28:00.260 [DEBUG] [Thread-126159] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:28:00.261 [DEBUG] [Thread-126159] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:28:00.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:28:00.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:28:00.263 [DEBUG] [Thread-126159] [transport.py] [_log()] userauth is OK
2025-11-04T01:28:00.263 [DEBUG] [Thread-126159] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:28:00.263 [DEBUG] [Thread-126159] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:28:00.263 [DEBUG] [Thread-126159] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:28:00.263 [DEBUG] [Thread-126159] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:28:00.298 [INFO] [Thread-126159] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:28:00.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:28:00.942 [DEBUG] [Thread-126159] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:28:00.942 [DEBUG] [Thread-126159] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:28:00.942 [DEBUG] [Thread-126159] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:28:00.982 [DEBUG] [Thread-126159] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:28:00.982 [DEBUG] [Thread-126159] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:28:00.984 [DEBUG] [Thread-126159] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:28:00.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:28:00.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:28:00.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:28:00.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:28:01.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:28:01.002 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:28:01.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:28:01.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:28:01.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:28:01.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.977181 -999.00  +17.30  15.54     19   -6.00 1 1 1 1 1     0    0 22.44 -61.91 ZNESW 15.5 15.5 316.6 20.3 17.7 -24.1 17.6 -22.9 17.4 -22.7 17.6 -23.5
2025-11-04T01:28:01.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:28:01.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:28:01.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.977181
2025-11-04T01:28:01.009 [DEBUG] [Thread-126159] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:28:01.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:28:01.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:28:01.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:28:01.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:28:01.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:28:01.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:27:42', tmtdew=27.57, humidity=14.22, cloud=0.0, wind=17.5, temperature=17.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:27:43', seeing=1.23, atlas_timestamp='2025-11-03T23:27:08.438', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004750000000001364, 0.07475000000000165, 0.0007500000000018048, 0.11399999999999899, 0.013500000000000512, 0.012250000000001648, 0.04100000000000037, -0.007749999999999702, 0.09750000000000014, 0.07600000000000051, 0.12524999999999942, 0.08099999999999952, 0.1429999999999989, 0.00024999999999941735, -0.17600000000000016, -0.017000000000001236, 0.03575000000000017, 0.10699999999999932, 0.16249999999999964, 0.1532499999999981, 0.12199999999999811, 0.0747499999999981, -0.02874999999999872, 0.06225000000000058, 0.08750000000000036, 0.1485000000000003, 0.11575000000000024, 0.2110000000000003, 0.20500000000000007, -0.10299999999999976, 0.13750000000000107, 0.07500000000000107, 0.10774999999999935], zp_timestamp='2025-11-03T23:24:00')
2025-11-04T01:28:01.092 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:28:01.103 [DEBUG] [Thread-126162] [transport.py] [_log()] starting thread (client mode): 0x8199b40
2025-11-04T01:28:01.104 [DEBUG] [Thread-126162] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:28:01.119 [DEBUG] [Thread-126162] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:28:01.119 [INFO] [Thread-126162] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:28:01.127 [DEBUG] [Thread-126162] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:28:01.127 [DEBUG] [Thread-126162] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:28:01.127 [DEBUG] [Thread-126162] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:28:01.127 [DEBUG] [Thread-126162] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:28:01.127 [DEBUG] [Thread-126162] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:28:01.128 [DEBUG] [Thread-126162] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:28:01.128 [DEBUG] [Thread-126162] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:28:01.128 [DEBUG] [Thread-126162] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:28:01.128 [DEBUG] [Thread-126162] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:28:01.128 [DEBUG] [Thread-126162] [transport.py] [_log()] client lang: <none>
2025-11-04T01:28:01.128 [DEBUG] [Thread-126162] [transport.py] [_log()] server lang: <none>
2025-11-04T01:28:01.128 [DEBUG] [Thread-126162] [transport.py] [_log()] kex follows: False
2025-11-04T01:28:01.128 [DEBUG] [Thread-126162] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:28:01.128 [DEBUG] [Thread-126162] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:28:01.128 [DEBUG] [Thread-126162] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:28:01.128 [DEBUG] [Thread-126162] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:28:01.128 [DEBUG] [Thread-126162] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:28:01.128 [DEBUG] [Thread-126162] [transport.py] [_log()] Compression: none
2025-11-04T01:28:01.128 [DEBUG] [Thread-126162] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:28:01.185 [DEBUG] [Thread-126162] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:28:01.185 [DEBUG] [Thread-126162] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:28:01.186 [DEBUG] [Thread-126162] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:28:01.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:28:01.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:28:01.243 [DEBUG] [Thread-126162] [transport.py] [_log()] userauth is OK
2025-11-04T01:28:01.244 [DEBUG] [Thread-126162] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:28:01.244 [DEBUG] [Thread-126162] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:28:01.244 [DEBUG] [Thread-126162] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:28:01.244 [DEBUG] [Thread-126162] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:28:01.264 [INFO] [Thread-126162] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:28:01.264 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:28:01.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:28:02.116 [DEBUG] [Thread-126162] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:28:02.116 [DEBUG] [Thread-126162] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:28:02.165 [DEBUG] [Thread-126162] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:28:02.165 [DEBUG] [Thread-126162] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:28:02.174 [DEBUG] [Thread-126162] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:28:02.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:28:02.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:28:02.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:28:02.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:28:02.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:28:02.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:28:02.208 [DEBUG] [Thread-126162] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:28:06.535 [DEBUG] [Thread-126164 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:28:21.629 [DEBUG] [Thread-126165 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:28:31.522 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:28:31.524 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:28:32.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:28:32.218 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:28:32.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:28:33.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 28, 14), 27.53, 14.27, 0.0, 18.0, 17.34, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:28:33.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:28:14
2025-11-04T01:28:33.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:28:33.393 [DEBUG] [Thread-126166] [transport.py] [_log()] starting thread (client mode): 0x819b1c0
2025-11-04T01:28:33.394 [DEBUG] [Thread-126166] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:28:33.406 [DEBUG] [Thread-126166] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:28:33.407 [INFO] [Thread-126166] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:28:33.411 [DEBUG] [Thread-126166] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:28:33.411 [DEBUG] [Thread-126166] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:28:33.411 [DEBUG] [Thread-126166] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:28:33.411 [DEBUG] [Thread-126166] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:28:33.411 [DEBUG] [Thread-126166] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:28:33.411 [DEBUG] [Thread-126166] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:28:33.411 [DEBUG] [Thread-126166] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:28:33.411 [DEBUG] [Thread-126166] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:28:33.411 [DEBUG] [Thread-126166] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:28:33.411 [DEBUG] [Thread-126166] [transport.py] [_log()] client lang: <none>
2025-11-04T01:28:33.411 [DEBUG] [Thread-126166] [transport.py] [_log()] server lang: <none>
2025-11-04T01:28:33.412 [DEBUG] [Thread-126166] [transport.py] [_log()] kex follows: False
2025-11-04T01:28:33.412 [DEBUG] [Thread-126166] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:28:33.413 [DEBUG] [Thread-126166] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:28:33.413 [DEBUG] [Thread-126166] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:28:33.413 [DEBUG] [Thread-126166] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:28:33.413 [DEBUG] [Thread-126166] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:28:33.413 [DEBUG] [Thread-126166] [transport.py] [_log()] Compression: none
2025-11-04T01:28:33.413 [DEBUG] [Thread-126166] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:28:33.440 [DEBUG] [Thread-126166] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:28:33.445 [DEBUG] [Thread-126166] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:28:33.447 [DEBUG] [Thread-126166] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:28:33.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:28:33.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:28:33.451 [DEBUG] [Thread-126166] [transport.py] [_log()] userauth is OK
2025-11-04T01:28:33.452 [DEBUG] [Thread-126166] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:28:33.452 [DEBUG] [Thread-126166] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:28:33.452 [DEBUG] [Thread-126166] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:28:33.452 [DEBUG] [Thread-126166] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:28:33.488 [INFO] [Thread-126166] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:28:33.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:28:34.141 [DEBUG] [Thread-126166] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:28:34.150 [DEBUG] [Thread-126166] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:28:34.151 [DEBUG] [Thread-126166] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:28:34.182 [DEBUG] [Thread-126166] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:28:34.182 [DEBUG] [Thread-126166] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:28:34.185 [DEBUG] [Thread-126166] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:28:34.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:28:34.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:28:34.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:28:34.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:28:34.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:28:34.206 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:28:34.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:28:34.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:28:34.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:28:34.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.977529 -999.00  +17.40  18.53     19   -6.00 1 1 1 1 1     0    0 22.27 -66.83 ZNESW 15.1 18.5 311.6 20.9 17.8 -23.8 17.7 -22.8 17.4 -22.6 17.7 -23.4
2025-11-04T01:28:34.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:28:34.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:28:34.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.977529
2025-11-04T01:28:34.214 [DEBUG] [Thread-126166] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:28:34.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:28:34.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:28:34.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:28:34.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:28:34.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:28:34.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:28:14', tmtdew=27.53, humidity=14.27, cloud=0.0, wind=18.0, temperature=17.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:28:15', seeing=1.14, atlas_timestamp='2025-11-03T23:27:38.506', atlas_cloud=1, atlas_rain=1, zp_data=[-0.015249999999999986, 0.07525000000000048, 0.03625000000000078, 0.1324999999999985, 0.08549999999999969, 0.03775000000000084, -0.10800000000000054, 0.0002500000000011937, 0.08649999999999913, 0.0860000000000003, 0.11524999999999963, 0.05749999999999922, 0.15899999999999892, -0.2527500000000007, 0.03599999999999959, 0.03399999999999892, 0.08924999999999983, 0.06799999999999962, 0.1374999999999993, 0.16324999999999967, 0.15499999999999936, -0.4872500000000013, 0.03275000000000006, 0.059749999999999304, 0.09699999999999953, 0.2234999999999996, 0.14624999999999844, 0.12950000000000017, 0.16300000000000026, 0.07250000000000156, 0.011000000000001009, 0.0860000000000003, 0.06974999999999909], zp_timestamp='2025-11-03T23:26:00')
2025-11-04T01:28:34.295 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:28:34.308 [DEBUG] [Thread-126169] [transport.py] [_log()] starting thread (client mode): 0x819af20
2025-11-04T01:28:34.308 [DEBUG] [Thread-126169] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:28:34.326 [DEBUG] [Thread-126169] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:28:34.326 [INFO] [Thread-126169] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:28:34.334 [DEBUG] [Thread-126169] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:28:34.334 [DEBUG] [Thread-126169] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:28:34.335 [DEBUG] [Thread-126169] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:28:34.335 [DEBUG] [Thread-126169] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:28:34.335 [DEBUG] [Thread-126169] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:28:34.335 [DEBUG] [Thread-126169] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:28:34.335 [DEBUG] [Thread-126169] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:28:34.335 [DEBUG] [Thread-126169] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:28:34.335 [DEBUG] [Thread-126169] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:28:34.335 [DEBUG] [Thread-126169] [transport.py] [_log()] client lang: <none>
2025-11-04T01:28:34.335 [DEBUG] [Thread-126169] [transport.py] [_log()] server lang: <none>
2025-11-04T01:28:34.335 [DEBUG] [Thread-126169] [transport.py] [_log()] kex follows: False
2025-11-04T01:28:34.335 [DEBUG] [Thread-126169] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:28:34.335 [DEBUG] [Thread-126169] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:28:34.335 [DEBUG] [Thread-126169] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:28:34.335 [DEBUG] [Thread-126169] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:28:34.335 [DEBUG] [Thread-126169] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:28:34.335 [DEBUG] [Thread-126169] [transport.py] [_log()] Compression: none
2025-11-04T01:28:34.335 [DEBUG] [Thread-126169] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:28:34.393 [DEBUG] [Thread-126169] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:28:34.394 [DEBUG] [Thread-126169] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:28:34.394 [DEBUG] [Thread-126169] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:28:34.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:28:34.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:28:34.451 [DEBUG] [Thread-126169] [transport.py] [_log()] userauth is OK
2025-11-04T01:28:34.451 [DEBUG] [Thread-126169] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:28:34.451 [DEBUG] [Thread-126169] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:28:34.451 [DEBUG] [Thread-126169] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:28:34.451 [DEBUG] [Thread-126169] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:28:34.466 [INFO] [Thread-126169] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:28:34.466 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:28:34.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:28:35.311 [DEBUG] [Thread-126169] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:28:35.311 [DEBUG] [Thread-126169] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:28:35.359 [DEBUG] [Thread-126169] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:28:35.359 [DEBUG] [Thread-126169] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:28:35.369 [DEBUG] [Thread-126169] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:28:35.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:28:35.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:28:35.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:28:35.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:28:35.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:28:35.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:28:35.418 [DEBUG] [Thread-126169] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:28:36.684 [DEBUG] [Thread-126171 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:28:42.511 [DEBUG] [Thread-126172 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:28:51.806 [DEBUG] [Thread-126173 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:29:05.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:29:05.444 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:29:05.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:29:06.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 28, 47), 27.45, 14.29, 0.0, 15.92, 17.27, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:29:06.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:28:47
2025-11-04T01:29:06.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:29:06.845 [DEBUG] [Thread-126174 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:29:06.986 [DEBUG] [Thread-126175] [transport.py] [_log()] starting thread (client mode): 0xed04460
2025-11-04T01:29:06.987 [DEBUG] [Thread-126175] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:29:07.001 [DEBUG] [Thread-126175] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:29:07.002 [INFO] [Thread-126175] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:29:07.005 [DEBUG] [Thread-126175] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:29:07.005 [DEBUG] [Thread-126175] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:29:07.005 [DEBUG] [Thread-126175] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:29:07.005 [DEBUG] [Thread-126175] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:29:07.005 [DEBUG] [Thread-126175] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:29:07.005 [DEBUG] [Thread-126175] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:29:07.005 [DEBUG] [Thread-126175] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:29:07.005 [DEBUG] [Thread-126175] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:29:07.005 [DEBUG] [Thread-126175] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:29:07.005 [DEBUG] [Thread-126175] [transport.py] [_log()] client lang: <none>
2025-11-04T01:29:07.005 [DEBUG] [Thread-126175] [transport.py] [_log()] server lang: <none>
2025-11-04T01:29:07.005 [DEBUG] [Thread-126175] [transport.py] [_log()] kex follows: False
2025-11-04T01:29:07.005 [DEBUG] [Thread-126175] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:29:07.005 [DEBUG] [Thread-126175] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:29:07.006 [DEBUG] [Thread-126175] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:29:07.006 [DEBUG] [Thread-126175] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:29:07.006 [DEBUG] [Thread-126175] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:29:07.006 [DEBUG] [Thread-126175] [transport.py] [_log()] Compression: none
2025-11-04T01:29:07.006 [DEBUG] [Thread-126175] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:29:07.022 [DEBUG] [Thread-126175] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:29:07.023 [DEBUG] [Thread-126175] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:29:07.024 [DEBUG] [Thread-126175] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:29:07.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:29:07.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:29:07.065 [DEBUG] [Thread-126175] [transport.py] [_log()] userauth is OK
2025-11-04T01:29:07.065 [DEBUG] [Thread-126175] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:29:07.065 [DEBUG] [Thread-126175] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:29:07.065 [DEBUG] [Thread-126175] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:29:07.065 [DEBUG] [Thread-126175] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:29:07.082 [INFO] [Thread-126175] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:29:07.085 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:29:07.735 [DEBUG] [Thread-126175] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:29:07.735 [DEBUG] [Thread-126175] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:29:07.737 [DEBUG] [Thread-126175] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:29:07.776 [DEBUG] [Thread-126175] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:29:07.776 [DEBUG] [Thread-126175] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:29:07.779 [DEBUG] [Thread-126175] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:29:07.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:29:07.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:29:07.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:29:07.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:29:07.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:29:07.806 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:29:07.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:29:07.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:29:07.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:29:07.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.977876 -999.00  +17.40  15.90     19   -6.10 1 1 1 1 1     0    0 21.55 -73.55 ZNESW 15.0 15.9 311.0 19.8 17.7 -24.0 17.7 -23.0 17.4 -22.7 17.6 -23.5
2025-11-04T01:29:07.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:29:07.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:29:07.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.977876
2025-11-04T01:29:07.815 [DEBUG] [Thread-126175] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:29:07.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:29:07.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:29:07.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:29:07.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:29:07.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:29:07.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:28:47', tmtdew=27.45, humidity=14.29, cloud=0.0, wind=15.92, temperature=17.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:28:47', seeing=1.14, atlas_timestamp='2025-11-03T23:28:08.486', atlas_cloud=1, atlas_rain=1, zp_data=[-0.015249999999999986, 0.07525000000000048, 0.03625000000000078, 0.1324999999999985, 0.08549999999999969, 0.03775000000000084, -0.10800000000000054, 0.0002500000000011937, 0.08649999999999913, 0.0860000000000003, 0.11524999999999963, 0.05749999999999922, 0.15899999999999892, -0.2527500000000007, 0.03599999999999959, 0.03399999999999892, 0.08924999999999983, 0.06799999999999962, 0.1374999999999993, 0.16324999999999967, 0.15499999999999936, -0.4872500000000013, 0.03275000000000006, 0.059749999999999304, 0.09699999999999953, 0.2234999999999996, 0.14624999999999844, 0.12950000000000017, 0.16300000000000026, 0.07250000000000156, 0.011000000000001009, 0.0860000000000003, 0.06974999999999909], zp_timestamp='2025-11-03T23:26:00')
2025-11-04T01:29:07.922 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:29:07.933 [DEBUG] [Thread-126178] [transport.py] [_log()] starting thread (client mode): 0xed059f0
2025-11-04T01:29:07.933 [DEBUG] [Thread-126178] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:29:07.948 [DEBUG] [Thread-126178] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:29:07.948 [INFO] [Thread-126178] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:29:07.956 [DEBUG] [Thread-126178] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:29:07.956 [DEBUG] [Thread-126178] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:29:07.956 [DEBUG] [Thread-126178] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:29:07.956 [DEBUG] [Thread-126178] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:29:07.956 [DEBUG] [Thread-126178] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:29:07.956 [DEBUG] [Thread-126178] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:29:07.956 [DEBUG] [Thread-126178] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:29:07.956 [DEBUG] [Thread-126178] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:29:07.956 [DEBUG] [Thread-126178] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:29:07.956 [DEBUG] [Thread-126178] [transport.py] [_log()] client lang: <none>
2025-11-04T01:29:07.956 [DEBUG] [Thread-126178] [transport.py] [_log()] server lang: <none>
2025-11-04T01:29:07.956 [DEBUG] [Thread-126178] [transport.py] [_log()] kex follows: False
2025-11-04T01:29:07.957 [DEBUG] [Thread-126178] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:29:07.957 [DEBUG] [Thread-126178] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:29:07.957 [DEBUG] [Thread-126178] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:29:07.957 [DEBUG] [Thread-126178] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:29:07.957 [DEBUG] [Thread-126178] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:29:07.957 [DEBUG] [Thread-126178] [transport.py] [_log()] Compression: none
2025-11-04T01:29:07.958 [DEBUG] [Thread-126178] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:29:08.014 [DEBUG] [Thread-126178] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:29:08.014 [DEBUG] [Thread-126178] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:29:08.014 [DEBUG] [Thread-126178] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:29:08.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:29:08.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:29:08.072 [DEBUG] [Thread-126178] [transport.py] [_log()] userauth is OK
2025-11-04T01:29:08.072 [DEBUG] [Thread-126178] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:29:08.072 [DEBUG] [Thread-126178] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:29:08.072 [DEBUG] [Thread-126178] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:29:08.072 [DEBUG] [Thread-126178] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:29:08.092 [INFO] [Thread-126178] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:29:08.092 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:29:08.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:29:08.924 [DEBUG] [Thread-126178] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:29:08.924 [DEBUG] [Thread-126178] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:29:08.973 [DEBUG] [Thread-126178] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:29:08.974 [DEBUG] [Thread-126178] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:29:08.982 [DEBUG] [Thread-126178] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:29:08.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:29:08.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:29:09.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:29:09.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:29:09.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:29:09.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:29:09.018 [DEBUG] [Thread-126178] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:29:21.871 [DEBUG] [Thread-126180 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:29:31.754 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:29:31.755 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:29:36.955 [DEBUG] [Thread-126181 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:29:39.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:29:39.040 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:29:39.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:29:39.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 29, 19), 27.47, 14.27, 0.0, 15.95, 17.27, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:29:39.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:29:19
2025-11-04T01:29:39.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:29:40.086 [DEBUG] [Thread-126182] [transport.py] [_log()] starting thread (client mode): 0xed368f0
2025-11-04T01:29:40.086 [DEBUG] [Thread-126182] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:29:40.107 [DEBUG] [Thread-126182] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:29:40.108 [INFO] [Thread-126182] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:29:40.111 [DEBUG] [Thread-126182] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:29:40.111 [DEBUG] [Thread-126182] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:29:40.111 [DEBUG] [Thread-126182] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:29:40.111 [DEBUG] [Thread-126182] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:29:40.111 [DEBUG] [Thread-126182] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:29:40.111 [DEBUG] [Thread-126182] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:29:40.111 [DEBUG] [Thread-126182] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:29:40.111 [DEBUG] [Thread-126182] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:29:40.111 [DEBUG] [Thread-126182] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:29:40.111 [DEBUG] [Thread-126182] [transport.py] [_log()] client lang: <none>
2025-11-04T01:29:40.111 [DEBUG] [Thread-126182] [transport.py] [_log()] server lang: <none>
2025-11-04T01:29:40.111 [DEBUG] [Thread-126182] [transport.py] [_log()] kex follows: False
2025-11-04T01:29:40.111 [DEBUG] [Thread-126182] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:29:40.111 [DEBUG] [Thread-126182] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:29:40.111 [DEBUG] [Thread-126182] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:29:40.111 [DEBUG] [Thread-126182] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:29:40.111 [DEBUG] [Thread-126182] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:29:40.111 [DEBUG] [Thread-126182] [transport.py] [_log()] Compression: none
2025-11-04T01:29:40.111 [DEBUG] [Thread-126182] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:29:40.131 [DEBUG] [Thread-126182] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:29:40.132 [DEBUG] [Thread-126182] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:29:40.132 [DEBUG] [Thread-126182] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:29:40.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:29:40.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:29:40.134 [DEBUG] [Thread-126182] [transport.py] [_log()] userauth is OK
2025-11-04T01:29:40.135 [DEBUG] [Thread-126182] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:29:40.135 [DEBUG] [Thread-126182] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:29:40.135 [DEBUG] [Thread-126182] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:29:40.135 [DEBUG] [Thread-126182] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:29:40.170 [INFO] [Thread-126182] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:29:40.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:29:40.822 [DEBUG] [Thread-126182] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:29:40.823 [DEBUG] [Thread-126182] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:29:40.823 [DEBUG] [Thread-126182] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:29:40.864 [DEBUG] [Thread-126182] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:29:40.864 [DEBUG] [Thread-126182] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:29:40.866 [DEBUG] [Thread-126182] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:29:40.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:29:40.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:29:40.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:29:40.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:29:40.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:29:40.883 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:29:40.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:29:40.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:29:40.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:29:40.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.978570 -999.00  +17.40  19.69     19   -6.00 1 1 1 1 1     0    0 21.66 -78.35 ZNESW 16.9 19.7 308.4 22.5 17.7 -24.0 17.6 -22.9 17.4 -22.7 17.6 -23.5
2025-11-04T01:29:40.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:29:40.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:29:40.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.978570
2025-11-04T01:29:40.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:29:40.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:29:40.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:29:40.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:29:40.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:29:40.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:29:19', tmtdew=27.47, humidity=14.27, cloud=0.0, wind=15.95, temperature=17.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:29:20', seeing=1.37, atlas_timestamp='2025-11-03T23:29:08.448', atlas_cloud=1, atlas_rain=1, zp_data=[-0.015249999999999986, 0.07525000000000048, 0.03625000000000078, 0.1324999999999985, 0.08549999999999969, 0.03775000000000084, -0.10800000000000054, 0.0002500000000011937, 0.08649999999999913, 0.0860000000000003, 0.11524999999999963, 0.05749999999999922, 0.15899999999999892, -0.2527500000000007, 0.03599999999999959, 0.03399999999999892, 0.08924999999999983, 0.06799999999999962, 0.1374999999999993, 0.16324999999999967, 0.15499999999999936, -0.4872500000000013, 0.03275000000000006, 0.059749999999999304, 0.09699999999999953, 0.2234999999999996, 0.14624999999999844, 0.12950000000000017, 0.16300000000000026, 0.07250000000000156, 0.011000000000001009, 0.0860000000000003, 0.06974999999999909], zp_timestamp='2025-11-03T23:26:00')
2025-11-04T01:29:40.884 [DEBUG] [Thread-126182] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:29:40.958 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:29:40.971 [DEBUG] [Thread-126185] [transport.py] [_log()] starting thread (client mode): 0x8199c60
2025-11-04T01:29:40.971 [DEBUG] [Thread-126185] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:29:40.986 [DEBUG] [Thread-126185] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:29:40.986 [INFO] [Thread-126185] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:29:40.994 [DEBUG] [Thread-126185] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:29:40.994 [DEBUG] [Thread-126185] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:29:40.994 [DEBUG] [Thread-126185] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:29:40.994 [DEBUG] [Thread-126185] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:29:40.994 [DEBUG] [Thread-126185] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:29:40.994 [DEBUG] [Thread-126185] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:29:40.994 [DEBUG] [Thread-126185] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:29:40.994 [DEBUG] [Thread-126185] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:29:40.994 [DEBUG] [Thread-126185] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:29:40.994 [DEBUG] [Thread-126185] [transport.py] [_log()] client lang: <none>
2025-11-04T01:29:40.994 [DEBUG] [Thread-126185] [transport.py] [_log()] server lang: <none>
2025-11-04T01:29:40.994 [DEBUG] [Thread-126185] [transport.py] [_log()] kex follows: False
2025-11-04T01:29:40.994 [DEBUG] [Thread-126185] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:29:40.994 [DEBUG] [Thread-126185] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:29:40.994 [DEBUG] [Thread-126185] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:29:40.994 [DEBUG] [Thread-126185] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:29:40.994 [DEBUG] [Thread-126185] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:29:40.994 [DEBUG] [Thread-126185] [transport.py] [_log()] Compression: none
2025-11-04T01:29:40.994 [DEBUG] [Thread-126185] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:29:41.050 [DEBUG] [Thread-126185] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:29:41.050 [DEBUG] [Thread-126185] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:29:41.050 [DEBUG] [Thread-126185] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:29:41.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:29:41.051 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:29:41.107 [DEBUG] [Thread-126185] [transport.py] [_log()] userauth is OK
2025-11-04T01:29:41.107 [DEBUG] [Thread-126185] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:29:41.107 [DEBUG] [Thread-126185] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:29:41.107 [DEBUG] [Thread-126185] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:29:41.107 [DEBUG] [Thread-126185] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:29:41.121 [INFO] [Thread-126185] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:29:41.121 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:29:41.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:29:41.965 [DEBUG] [Thread-126185] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:29:41.965 [DEBUG] [Thread-126185] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:29:42.014 [DEBUG] [Thread-126185] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:29:42.014 [DEBUG] [Thread-126185] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:29:42.023 [DEBUG] [Thread-126185] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:29:42.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:29:42.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:29:42.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:29:42.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:29:42.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:29:42.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:29:42.062 [DEBUG] [Thread-126185] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:29:42.883 [DEBUG] [Thread-126187 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:29:51.997 [DEBUG] [Thread-126188 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:30:07.081 [DEBUG] [Thread-126189 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:30:12.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:30:12.065 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:30:12.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:30:12.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 29, 52), 27.41, 14.34, 0.0, 18.42, 17.25, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:30:12.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:29:52
2025-11-04T01:30:13.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:30:13.197 [DEBUG] [Thread-126190] [transport.py] [_log()] starting thread (client mode): 0x819afb0
2025-11-04T01:30:13.198 [DEBUG] [Thread-126190] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:30:13.210 [DEBUG] [Thread-126190] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:30:13.210 [INFO] [Thread-126190] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:30:13.214 [DEBUG] [Thread-126190] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:30:13.214 [DEBUG] [Thread-126190] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:30:13.214 [DEBUG] [Thread-126190] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:30:13.214 [DEBUG] [Thread-126190] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:30:13.214 [DEBUG] [Thread-126190] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:30:13.214 [DEBUG] [Thread-126190] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:30:13.215 [DEBUG] [Thread-126190] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:30:13.215 [DEBUG] [Thread-126190] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:30:13.215 [DEBUG] [Thread-126190] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:30:13.215 [DEBUG] [Thread-126190] [transport.py] [_log()] client lang: <none>
2025-11-04T01:30:13.215 [DEBUG] [Thread-126190] [transport.py] [_log()] server lang: <none>
2025-11-04T01:30:13.215 [DEBUG] [Thread-126190] [transport.py] [_log()] kex follows: False
2025-11-04T01:30:13.215 [DEBUG] [Thread-126190] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:30:13.215 [DEBUG] [Thread-126190] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:30:13.215 [DEBUG] [Thread-126190] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:30:13.215 [DEBUG] [Thread-126190] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:30:13.216 [DEBUG] [Thread-126190] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:30:13.216 [DEBUG] [Thread-126190] [transport.py] [_log()] Compression: none
2025-11-04T01:30:13.216 [DEBUG] [Thread-126190] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:30:13.248 [DEBUG] [Thread-126190] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:30:13.252 [DEBUG] [Thread-126190] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:30:13.254 [DEBUG] [Thread-126190] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:30:13.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:30:13.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:30:13.257 [DEBUG] [Thread-126190] [transport.py] [_log()] userauth is OK
2025-11-04T01:30:13.258 [DEBUG] [Thread-126190] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:30:13.258 [DEBUG] [Thread-126190] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:30:13.258 [DEBUG] [Thread-126190] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:30:13.258 [DEBUG] [Thread-126190] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:30:13.275 [INFO] [Thread-126190] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:30:13.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:30:14.744 [DEBUG] [Thread-126190] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:30:14.744 [DEBUG] [Thread-126190] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:30:14.744 [DEBUG] [Thread-126190] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:30:14.784 [DEBUG] [Thread-126190] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:30:14.785 [DEBUG] [Thread-126190] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:30:14.787 [DEBUG] [Thread-126190] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:30:14.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:30:14.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:30:14.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:30:14.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:30:14.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:30:14.890 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:30:14.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:30:14.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:30:14.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:30:14.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.978917 -999.00  +17.30  15.35     19   -6.10 1 1 1 1 1     0    0 21.15 -81.70 ZNESW 17.8 15.3 307.6 19.4 17.7 -24.1 17.6 -22.9 17.4 -22.5 17.6 -23.5
2025-11-04T01:30:14.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:30:14.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:30:14.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.978917
2025-11-04T01:30:14.897 [DEBUG] [Thread-126190] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:30:14.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:30:14.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:30:14.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:30:14.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:30:14.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:30:14.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:29:52', tmtdew=27.41, humidity=14.34, cloud=0.0, wind=18.42, temperature=17.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:29:53', seeing=1.25, atlas_timestamp='2025-11-03T23:29:38.429', atlas_cloud=1, atlas_rain=1, zp_data=[-0.015249999999999986, 0.07525000000000048, 0.03625000000000078, 0.1324999999999985, 0.08549999999999969, 0.03775000000000084, -0.10800000000000054, 0.0002500000000011937, 0.08649999999999913, 0.0860000000000003, 0.11524999999999963, 0.05749999999999922, 0.15899999999999892, -0.2527500000000007, 0.03599999999999959, 0.03399999999999892, 0.08924999999999983, 0.06799999999999962, 0.1374999999999993, 0.16324999999999967, 0.15499999999999936, -0.4872500000000013, 0.03275000000000006, 0.059749999999999304, 0.09699999999999953, 0.2234999999999996, 0.14624999999999844, 0.12950000000000017, 0.16300000000000026, 0.07250000000000156, 0.011000000000001009, 0.0860000000000003, 0.06974999999999909], zp_timestamp='2025-11-03T23:26:00')
2025-11-04T01:30:14.988 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:30:15.000 [DEBUG] [Thread-126193] [transport.py] [_log()] starting thread (client mode): 0x819bb20
2025-11-04T01:30:15.000 [DEBUG] [Thread-126193] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:30:15.015 [DEBUG] [Thread-126193] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:30:15.015 [INFO] [Thread-126193] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:30:15.022 [DEBUG] [Thread-126193] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:30:15.023 [DEBUG] [Thread-126193] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:30:15.023 [DEBUG] [Thread-126193] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:30:15.023 [DEBUG] [Thread-126193] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:30:15.023 [DEBUG] [Thread-126193] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:30:15.023 [DEBUG] [Thread-126193] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:30:15.023 [DEBUG] [Thread-126193] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:30:15.023 [DEBUG] [Thread-126193] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:30:15.023 [DEBUG] [Thread-126193] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:30:15.023 [DEBUG] [Thread-126193] [transport.py] [_log()] client lang: <none>
2025-11-04T01:30:15.023 [DEBUG] [Thread-126193] [transport.py] [_log()] server lang: <none>
2025-11-04T01:30:15.023 [DEBUG] [Thread-126193] [transport.py] [_log()] kex follows: False
2025-11-04T01:30:15.023 [DEBUG] [Thread-126193] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:30:15.023 [DEBUG] [Thread-126193] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:30:15.023 [DEBUG] [Thread-126193] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:30:15.023 [DEBUG] [Thread-126193] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:30:15.023 [DEBUG] [Thread-126193] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:30:15.023 [DEBUG] [Thread-126193] [transport.py] [_log()] Compression: none
2025-11-04T01:30:15.023 [DEBUG] [Thread-126193] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:30:15.078 [DEBUG] [Thread-126193] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:30:15.078 [DEBUG] [Thread-126193] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:30:15.078 [DEBUG] [Thread-126193] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:30:15.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:30:15.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:30:15.135 [DEBUG] [Thread-126193] [transport.py] [_log()] userauth is OK
2025-11-04T01:30:15.135 [DEBUG] [Thread-126193] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:30:15.135 [DEBUG] [Thread-126193] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:30:15.135 [DEBUG] [Thread-126193] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:30:15.135 [DEBUG] [Thread-126193] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:30:15.150 [INFO] [Thread-126193] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:30:15.150 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:30:15.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:30:16.005 [DEBUG] [Thread-126193] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:30:16.006 [DEBUG] [Thread-126193] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:30:16.053 [DEBUG] [Thread-126193] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:30:16.053 [DEBUG] [Thread-126193] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:30:16.062 [DEBUG] [Thread-126193] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:30:16.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:30:16.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:30:16.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:30:16.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:30:16.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:30:16.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:30:16.096 [DEBUG] [Thread-126193] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:30:22.136 [DEBUG] [Thread-126195 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:30:31.969 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:30:31.971 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:30:37.279 [DEBUG] [Thread-126196 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:30:43.164 [DEBUG] [Thread-126197 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:30:46.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:30:46.118 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:30:46.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:30:46.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 30, 24), 27.4, 14.34, 0.0, 18.46, 17.24, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:30:46.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:30:24
2025-11-04T01:30:47.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:30:47.214 [DEBUG] [Thread-126198] [transport.py] [_log()] starting thread (client mode): 0xed37e20
2025-11-04T01:30:47.215 [DEBUG] [Thread-126198] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:30:47.223 [DEBUG] [Thread-126198] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:30:47.223 [INFO] [Thread-126198] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:30:47.230 [DEBUG] [Thread-126198] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:30:47.230 [DEBUG] [Thread-126198] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:30:47.230 [DEBUG] [Thread-126198] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:30:47.230 [DEBUG] [Thread-126198] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:30:47.231 [DEBUG] [Thread-126198] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:30:47.231 [DEBUG] [Thread-126198] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:30:47.231 [DEBUG] [Thread-126198] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:30:47.231 [DEBUG] [Thread-126198] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:30:47.231 [DEBUG] [Thread-126198] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:30:47.231 [DEBUG] [Thread-126198] [transport.py] [_log()] client lang: <none>
2025-11-04T01:30:47.231 [DEBUG] [Thread-126198] [transport.py] [_log()] server lang: <none>
2025-11-04T01:30:47.231 [DEBUG] [Thread-126198] [transport.py] [_log()] kex follows: False
2025-11-04T01:30:47.231 [DEBUG] [Thread-126198] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:30:47.232 [DEBUG] [Thread-126198] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:30:47.232 [DEBUG] [Thread-126198] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:30:47.232 [DEBUG] [Thread-126198] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:30:47.232 [DEBUG] [Thread-126198] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:30:47.232 [DEBUG] [Thread-126198] [transport.py] [_log()] Compression: none
2025-11-04T01:30:47.232 [DEBUG] [Thread-126198] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:30:47.263 [DEBUG] [Thread-126198] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:30:47.266 [DEBUG] [Thread-126198] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:30:47.268 [DEBUG] [Thread-126198] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:30:47.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:30:47.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:30:47.273 [DEBUG] [Thread-126198] [transport.py] [_log()] userauth is OK
2025-11-04T01:30:47.273 [DEBUG] [Thread-126198] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:30:47.273 [DEBUG] [Thread-126198] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:30:47.274 [DEBUG] [Thread-126198] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:30:47.274 [DEBUG] [Thread-126198] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:30:47.312 [INFO] [Thread-126198] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:30:47.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:30:47.934 [DEBUG] [Thread-126198] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:30:47.934 [DEBUG] [Thread-126198] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:30:47.935 [DEBUG] [Thread-126198] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:30:47.975 [DEBUG] [Thread-126198] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:30:47.975 [DEBUG] [Thread-126198] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:30:47.977 [DEBUG] [Thread-126198] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:30:47.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:30:47.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:30:47.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:30:47.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:30:47.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:30:47.996 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:30:47.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:30:47.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:30:47.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:30:47.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.979264 -999.00  +17.30  16.71     19   -6.10 1 1 1 1 1     0    0 20.81 -80.68 ZNESW 16.0 16.7 307.8 19.7 17.7 -24.0 17.6 -23.0 -999.0 -999.0 17.6 -23.6
2025-11-04T01:30:47.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:30:47.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:30:47.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.979264
2025-11-04T01:30:48.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:30:48.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:30:48.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:30:48.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:30:48.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:30:48.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:30:24', tmtdew=27.4, humidity=14.34, cloud=0.0, wind=18.46, temperature=17.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:30:25', seeing=1.25, atlas_timestamp='2025-11-03T23:30:08.410', atlas_cloud=1, atlas_rain=1, zp_data=[-0.015249999999999986, 0.07525000000000048, 0.03625000000000078, 0.1324999999999985, 0.08549999999999969, 0.03775000000000084, -0.10800000000000054, 0.0002500000000011937, 0.08649999999999913, 0.0860000000000003, 0.11524999999999963, 0.05749999999999922, 0.15899999999999892, -0.2527500000000007, 0.03599999999999959, 0.03399999999999892, 0.08924999999999983, 0.06799999999999962, 0.1374999999999993, 0.16324999999999967, 0.15499999999999936, -0.4872500000000013, 0.03275000000000006, 0.059749999999999304, 0.09699999999999953, 0.2234999999999996, 0.14624999999999844, 0.12950000000000017, 0.16300000000000026, 0.07250000000000156, 0.011000000000001009, 0.0860000000000003, 0.06974999999999909], zp_timestamp='2025-11-03T23:26:00')
2025-11-04T01:30:48.004 [DEBUG] [Thread-126198] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:30:48.078 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:30:48.092 [DEBUG] [Thread-126201] [transport.py] [_log()] starting thread (client mode): 0x819ada0
2025-11-04T01:30:48.092 [DEBUG] [Thread-126201] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:30:48.108 [DEBUG] [Thread-126201] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:30:48.108 [INFO] [Thread-126201] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:30:48.117 [DEBUG] [Thread-126201] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:30:48.117 [DEBUG] [Thread-126201] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:30:48.117 [DEBUG] [Thread-126201] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:30:48.117 [DEBUG] [Thread-126201] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:30:48.117 [DEBUG] [Thread-126201] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:30:48.117 [DEBUG] [Thread-126201] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:30:48.117 [DEBUG] [Thread-126201] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:30:48.117 [DEBUG] [Thread-126201] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:30:48.117 [DEBUG] [Thread-126201] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:30:48.117 [DEBUG] [Thread-126201] [transport.py] [_log()] client lang: <none>
2025-11-04T01:30:48.117 [DEBUG] [Thread-126201] [transport.py] [_log()] server lang: <none>
2025-11-04T01:30:48.117 [DEBUG] [Thread-126201] [transport.py] [_log()] kex follows: False
2025-11-04T01:30:48.117 [DEBUG] [Thread-126201] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:30:48.117 [DEBUG] [Thread-126201] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:30:48.117 [DEBUG] [Thread-126201] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:30:48.117 [DEBUG] [Thread-126201] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:30:48.117 [DEBUG] [Thread-126201] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:30:48.117 [DEBUG] [Thread-126201] [transport.py] [_log()] Compression: none
2025-11-04T01:30:48.117 [DEBUG] [Thread-126201] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:30:48.179 [DEBUG] [Thread-126201] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:30:48.180 [DEBUG] [Thread-126201] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:30:48.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:30:48.181 [DEBUG] [Thread-126201] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:30:48.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:30:48.243 [DEBUG] [Thread-126201] [transport.py] [_log()] userauth is OK
2025-11-04T01:30:48.243 [DEBUG] [Thread-126201] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:30:48.243 [DEBUG] [Thread-126201] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:30:48.243 [DEBUG] [Thread-126201] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:30:48.243 [DEBUG] [Thread-126201] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:30:48.265 [INFO] [Thread-126201] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:30:48.265 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:30:48.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:30:49.155 [DEBUG] [Thread-126201] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:30:49.155 [DEBUG] [Thread-126201] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:30:49.197 [DEBUG] [Thread-126201] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:30:49.197 [DEBUG] [Thread-126201] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:30:49.206 [DEBUG] [Thread-126201] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:30:49.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:30:49.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:30:49.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:30:49.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:30:49.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:30:49.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:30:49.238 [DEBUG] [Thread-126201] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:30:52.325 [DEBUG] [Thread-126203 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:31:07.448 [DEBUG] [Thread-126204 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:31:19.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:31:19.276 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:31:19.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:31:20.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 30, 57), 27.4, 14.36, 0.0, 16.66, 17.29, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:31:20.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:30:57
2025-11-04T01:31:20.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:31:20.411 [DEBUG] [Thread-126205] [transport.py] [_log()] starting thread (client mode): 0xed36b30
2025-11-04T01:31:20.412 [DEBUG] [Thread-126205] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:31:20.423 [DEBUG] [Thread-126205] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:31:20.423 [INFO] [Thread-126205] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:31:20.428 [DEBUG] [Thread-126205] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:31:20.428 [DEBUG] [Thread-126205] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:31:20.428 [DEBUG] [Thread-126205] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:31:20.428 [DEBUG] [Thread-126205] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:31:20.428 [DEBUG] [Thread-126205] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:31:20.428 [DEBUG] [Thread-126205] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:31:20.428 [DEBUG] [Thread-126205] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:31:20.428 [DEBUG] [Thread-126205] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:31:20.428 [DEBUG] [Thread-126205] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:31:20.428 [DEBUG] [Thread-126205] [transport.py] [_log()] client lang: <none>
2025-11-04T01:31:20.428 [DEBUG] [Thread-126205] [transport.py] [_log()] server lang: <none>
2025-11-04T01:31:20.428 [DEBUG] [Thread-126205] [transport.py] [_log()] kex follows: False
2025-11-04T01:31:20.428 [DEBUG] [Thread-126205] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:31:20.429 [DEBUG] [Thread-126205] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:31:20.429 [DEBUG] [Thread-126205] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:31:20.429 [DEBUG] [Thread-126205] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:31:20.429 [DEBUG] [Thread-126205] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:31:20.429 [DEBUG] [Thread-126205] [transport.py] [_log()] Compression: none
2025-11-04T01:31:20.429 [DEBUG] [Thread-126205] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:31:20.460 [DEBUG] [Thread-126205] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:31:20.463 [DEBUG] [Thread-126205] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:31:20.465 [DEBUG] [Thread-126205] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:31:20.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:31:20.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:31:20.468 [DEBUG] [Thread-126205] [transport.py] [_log()] userauth is OK
2025-11-04T01:31:20.468 [DEBUG] [Thread-126205] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:31:20.468 [DEBUG] [Thread-126205] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:31:20.468 [DEBUG] [Thread-126205] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:31:20.468 [DEBUG] [Thread-126205] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:31:20.489 [INFO] [Thread-126205] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:31:20.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:31:21.242 [DEBUG] [Thread-126205] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:31:21.244 [DEBUG] [Thread-126205] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:31:21.246 [DEBUG] [Thread-126205] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:31:21.283 [DEBUG] [Thread-126205] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:31:21.283 [DEBUG] [Thread-126205] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:31:21.286 [DEBUG] [Thread-126205] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:31:21.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:31:21.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:31:21.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:31:21.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:31:21.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:31:21.313 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:31:21.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:31:21.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:31:21.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:31:21.315 [DEBUG] [Thread-126205] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:31:21.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.979612 -999.00  +17.30  16.62     19   -6.10 1 1 1 1 1     0    0 22.25 -76.38 ZNESW 18.1 16.6 313.4 20.4 17.7 -24.0 17.6 -23.0 17.4 -22.7 17.6 -23.4
2025-11-04T01:31:21.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:31:21.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:31:21.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.979612
2025-11-04T01:31:21.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:31:21.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:31:21.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:31:21.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:31:21.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:31:21.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:30:57', tmtdew=27.4, humidity=14.36, cloud=0.0, wind=16.66, temperature=17.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:30:58', seeing=1.18, atlas_timestamp='2025-11-03T23:30:38.477', atlas_cloud=1, atlas_rain=1, zp_data=[0.010249999999999204, 0.08225000000000016, 0.07324999999999982, 0.11050000000000004, 0.10050000000000026, -0.03074999999999939, -0.002000000000000668, 0.07175000000000153, 0.12349999999999994, 0.07099999999999973, 0.18475000000000108, 0.08900000000000041, 0.16750000000000043, -0.13874999999999993, 0.0799999999999983, -0.03300000000000125, 0.09525000000000006, 0.10899999999999999, 0.16549999999999976, 0.16524999999999856, 0.15399999999999814, -0.4712500000000013, 0.035250000000001336, 0.05775000000000041, 0.02499999999999858, 0.18549999999999933, 0.13775000000000048, 0.26250000000000107, 0.3320000000000016, 0.05000000000000071, 0.07350000000000101, 0.0810000000000013, 0.15674999999999883], zp_timestamp='2025-11-03T23:30:00')
2025-11-04T01:31:21.427 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:31:21.439 [DEBUG] [Thread-126208] [transport.py] [_log()] starting thread (client mode): 0xed37c10
2025-11-04T01:31:21.439 [DEBUG] [Thread-126208] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:31:21.456 [DEBUG] [Thread-126208] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:31:21.456 [INFO] [Thread-126208] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:31:21.464 [DEBUG] [Thread-126208] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:31:21.464 [DEBUG] [Thread-126208] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:31:21.464 [DEBUG] [Thread-126208] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:31:21.464 [DEBUG] [Thread-126208] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:31:21.464 [DEBUG] [Thread-126208] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:31:21.464 [DEBUG] [Thread-126208] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:31:21.464 [DEBUG] [Thread-126208] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:31:21.465 [DEBUG] [Thread-126208] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:31:21.465 [DEBUG] [Thread-126208] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:31:21.465 [DEBUG] [Thread-126208] [transport.py] [_log()] client lang: <none>
2025-11-04T01:31:21.465 [DEBUG] [Thread-126208] [transport.py] [_log()] server lang: <none>
2025-11-04T01:31:21.465 [DEBUG] [Thread-126208] [transport.py] [_log()] kex follows: False
2025-11-04T01:31:21.465 [DEBUG] [Thread-126208] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:31:21.465 [DEBUG] [Thread-126208] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:31:21.465 [DEBUG] [Thread-126208] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:31:21.465 [DEBUG] [Thread-126208] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:31:21.465 [DEBUG] [Thread-126208] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:31:21.465 [DEBUG] [Thread-126208] [transport.py] [_log()] Compression: none
2025-11-04T01:31:21.465 [DEBUG] [Thread-126208] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:31:21.524 [DEBUG] [Thread-126208] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:31:21.525 [DEBUG] [Thread-126208] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:31:21.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:31:21.526 [DEBUG] [Thread-126208] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:31:21.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:31:21.579 [DEBUG] [Thread-126208] [transport.py] [_log()] userauth is OK
2025-11-04T01:31:21.579 [DEBUG] [Thread-126208] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:31:21.579 [DEBUG] [Thread-126208] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:31:21.580 [DEBUG] [Thread-126208] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:31:21.580 [DEBUG] [Thread-126208] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:31:21.599 [INFO] [Thread-126208] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:31:21.599 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:31:21.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:31:22.433 [DEBUG] [Thread-126208] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:31:22.433 [DEBUG] [Thread-126208] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:31:22.481 [DEBUG] [Thread-126208] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:31:22.481 [DEBUG] [Thread-126208] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:31:22.486 [DEBUG] [Thread-126210 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:31:22.490 [DEBUG] [Thread-126208] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:31:22.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:31:22.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:31:22.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:31:22.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:31:22.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:31:22.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:31:22.527 [DEBUG] [Thread-126208] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:31:32.172 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:31:32.173 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:31:37.613 [DEBUG] [Thread-126211 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:31:43.546 [DEBUG] [Thread-126212 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:31:52.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:31:52.551 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:31:52.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:31:52.647 [DEBUG] [Thread-126213 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:31:53.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 31, 29), 27.4, 14.34, 0.0, 16.22, 17.24, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:31:53.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:31:29
2025-11-04T01:31:53.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:31:53.708 [DEBUG] [Thread-126214] [transport.py] [_log()] starting thread (client mode): 0x117bde10
2025-11-04T01:31:53.708 [DEBUG] [Thread-126214] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:31:53.728 [DEBUG] [Thread-126214] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:31:53.728 [INFO] [Thread-126214] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:31:53.731 [DEBUG] [Thread-126214] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:31:53.731 [DEBUG] [Thread-126214] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:31:53.732 [DEBUG] [Thread-126214] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:31:53.732 [DEBUG] [Thread-126214] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:31:53.732 [DEBUG] [Thread-126214] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:31:53.732 [DEBUG] [Thread-126214] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:31:53.732 [DEBUG] [Thread-126214] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:31:53.732 [DEBUG] [Thread-126214] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:31:53.732 [DEBUG] [Thread-126214] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:31:53.732 [DEBUG] [Thread-126214] [transport.py] [_log()] client lang: <none>
2025-11-04T01:31:53.732 [DEBUG] [Thread-126214] [transport.py] [_log()] server lang: <none>
2025-11-04T01:31:53.732 [DEBUG] [Thread-126214] [transport.py] [_log()] kex follows: False
2025-11-04T01:31:53.732 [DEBUG] [Thread-126214] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:31:53.732 [DEBUG] [Thread-126214] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:31:53.732 [DEBUG] [Thread-126214] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:31:53.732 [DEBUG] [Thread-126214] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:31:53.732 [DEBUG] [Thread-126214] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:31:53.732 [DEBUG] [Thread-126214] [transport.py] [_log()] Compression: none
2025-11-04T01:31:53.732 [DEBUG] [Thread-126214] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:31:53.757 [DEBUG] [Thread-126214] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:31:53.759 [DEBUG] [Thread-126214] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:31:53.761 [DEBUG] [Thread-126214] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:31:53.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:31:53.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:31:53.801 [DEBUG] [Thread-126214] [transport.py] [_log()] userauth is OK
2025-11-04T01:31:53.801 [DEBUG] [Thread-126214] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:31:53.801 [DEBUG] [Thread-126214] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:31:53.802 [DEBUG] [Thread-126214] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:31:53.802 [DEBUG] [Thread-126214] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:31:53.834 [INFO] [Thread-126214] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:31:53.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:31:54.493 [DEBUG] [Thread-126214] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:31:54.493 [DEBUG] [Thread-126214] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:31:54.493 [DEBUG] [Thread-126214] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:31:54.535 [DEBUG] [Thread-126214] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:31:54.535 [DEBUG] [Thread-126214] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:31:54.537 [DEBUG] [Thread-126214] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:31:54.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:31:54.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:31:54.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:31:54.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:31:54.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:31:54.564 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:31:54.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:31:54.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:31:54.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:31:54.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.979959 -999.00  +17.30  15.42     19   -6.00 1 1 1 1 1     0    0 21.56 -71.04 ZNESW 17.0 15.4 301.4 19.7 17.7 -24.0 17.6 -22.9 17.3 -22.6 17.6 -23.5
2025-11-04T01:31:54.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:31:54.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:31:54.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.979959
2025-11-04T01:31:54.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:31:54.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:31:54.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:31:54.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:31:54.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:31:54.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:31:29', tmtdew=27.4, humidity=14.34, cloud=0.0, wind=16.22, temperature=17.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:31:30', seeing=1.12, atlas_timestamp='2025-11-03T23:31:08.458', atlas_cloud=1, atlas_rain=1, zp_data=[0.010249999999999204, 0.08225000000000016, 0.07324999999999982, 0.11050000000000004, 0.10050000000000026, -0.03074999999999939, -0.002000000000000668, 0.07175000000000153, 0.12349999999999994, 0.07099999999999973, 0.18475000000000108, 0.08900000000000041, 0.16750000000000043, -0.13874999999999993, 0.0799999999999983, -0.03300000000000125, 0.09525000000000006, 0.10899999999999999, 0.16549999999999976, 0.16524999999999856, 0.15399999999999814, -0.4712500000000013, 0.035250000000001336, 0.05775000000000041, 0.02499999999999858, 0.18549999999999933, 0.13775000000000048, 0.26250000000000107, 0.3320000000000016, 0.05000000000000071, 0.07350000000000101, 0.0810000000000013, 0.15674999999999883], zp_timestamp='2025-11-03T23:30:00')
2025-11-04T01:31:54.566 [DEBUG] [Thread-126214] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:31:54.639 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:31:54.655 [DEBUG] [Thread-126217] [transport.py] [_log()] starting thread (client mode): 0x117be380
2025-11-04T01:31:54.655 [DEBUG] [Thread-126217] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:31:54.671 [DEBUG] [Thread-126217] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:31:54.671 [INFO] [Thread-126217] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:31:54.680 [DEBUG] [Thread-126217] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:31:54.680 [DEBUG] [Thread-126217] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:31:54.680 [DEBUG] [Thread-126217] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:31:54.680 [DEBUG] [Thread-126217] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:31:54.680 [DEBUG] [Thread-126217] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:31:54.680 [DEBUG] [Thread-126217] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:31:54.680 [DEBUG] [Thread-126217] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:31:54.680 [DEBUG] [Thread-126217] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:31:54.680 [DEBUG] [Thread-126217] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:31:54.680 [DEBUG] [Thread-126217] [transport.py] [_log()] client lang: <none>
2025-11-04T01:31:54.680 [DEBUG] [Thread-126217] [transport.py] [_log()] server lang: <none>
2025-11-04T01:31:54.680 [DEBUG] [Thread-126217] [transport.py] [_log()] kex follows: False
2025-11-04T01:31:54.680 [DEBUG] [Thread-126217] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:31:54.680 [DEBUG] [Thread-126217] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:31:54.680 [DEBUG] [Thread-126217] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:31:54.680 [DEBUG] [Thread-126217] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:31:54.680 [DEBUG] [Thread-126217] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:31:54.680 [DEBUG] [Thread-126217] [transport.py] [_log()] Compression: none
2025-11-04T01:31:54.680 [DEBUG] [Thread-126217] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:31:54.743 [DEBUG] [Thread-126217] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:31:54.743 [DEBUG] [Thread-126217] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:31:54.744 [DEBUG] [Thread-126217] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:31:54.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:31:54.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:31:54.804 [DEBUG] [Thread-126217] [transport.py] [_log()] userauth is OK
2025-11-04T01:31:54.804 [DEBUG] [Thread-126217] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:31:54.804 [DEBUG] [Thread-126217] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:31:54.805 [DEBUG] [Thread-126217] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:31:54.805 [DEBUG] [Thread-126217] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:31:54.829 [INFO] [Thread-126217] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:31:54.829 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:31:54.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:31:55.667 [DEBUG] [Thread-126217] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:31:55.668 [DEBUG] [Thread-126217] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:31:55.721 [DEBUG] [Thread-126217] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:31:55.721 [DEBUG] [Thread-126217] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:31:55.733 [DEBUG] [Thread-126217] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:31:55.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:31:55.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:31:55.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:31:55.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:31:55.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:31:55.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:31:55.775 [DEBUG] [Thread-126217] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:32:07.679 [DEBUG] [Thread-126219 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:32:22.807 [DEBUG] [Thread-126220 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:32:25.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:32:25.807 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:32:25.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:32:26.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 32, 2), 27.37, 14.37, 0.0, 16.78, 17.22, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:32:26.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:32:02
2025-11-04T01:32:26.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:32:26.981 [DEBUG] [Thread-126221] [transport.py] [_log()] starting thread (client mode): 0xed35210
2025-11-04T01:32:26.982 [DEBUG] [Thread-126221] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:32:26.984 [DEBUG] [Thread-126221] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:32:26.984 [INFO] [Thread-126221] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:32:26.988 [DEBUG] [Thread-126221] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:32:26.989 [DEBUG] [Thread-126221] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:32:26.989 [DEBUG] [Thread-126221] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:32:26.989 [DEBUG] [Thread-126221] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:32:26.989 [DEBUG] [Thread-126221] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:32:26.989 [DEBUG] [Thread-126221] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:32:26.989 [DEBUG] [Thread-126221] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:32:26.989 [DEBUG] [Thread-126221] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:32:26.989 [DEBUG] [Thread-126221] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:32:26.989 [DEBUG] [Thread-126221] [transport.py] [_log()] client lang: <none>
2025-11-04T01:32:26.989 [DEBUG] [Thread-126221] [transport.py] [_log()] server lang: <none>
2025-11-04T01:32:26.989 [DEBUG] [Thread-126221] [transport.py] [_log()] kex follows: False
2025-11-04T01:32:26.989 [DEBUG] [Thread-126221] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:32:26.990 [DEBUG] [Thread-126221] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:32:26.990 [DEBUG] [Thread-126221] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:32:26.990 [DEBUG] [Thread-126221] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:32:26.990 [DEBUG] [Thread-126221] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:32:26.990 [DEBUG] [Thread-126221] [transport.py] [_log()] Compression: none
2025-11-04T01:32:26.990 [DEBUG] [Thread-126221] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:32:27.021 [DEBUG] [Thread-126221] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:32:27.027 [DEBUG] [Thread-126221] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:32:27.030 [DEBUG] [Thread-126221] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:32:27.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:32:27.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:32:27.034 [DEBUG] [Thread-126221] [transport.py] [_log()] userauth is OK
2025-11-04T01:32:27.035 [DEBUG] [Thread-126221] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:32:27.035 [DEBUG] [Thread-126221] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:32:27.035 [DEBUG] [Thread-126221] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:32:27.035 [DEBUG] [Thread-126221] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:32:27.061 [INFO] [Thread-126221] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:32:27.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:32:27.647 [DEBUG] [Thread-126221] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:32:27.648 [DEBUG] [Thread-126221] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:32:27.650 [DEBUG] [Thread-126221] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:32:27.689 [DEBUG] [Thread-126221] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:32:27.689 [DEBUG] [Thread-126221] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:32:27.693 [DEBUG] [Thread-126221] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:32:27.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:32:27.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:32:27.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:32:27.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:32:27.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:32:27.720 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:32:27.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:32:27.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:32:27.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:32:27.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.980306 -999.00  +17.30  15.63     19   -6.00 1 1 1 1 1     0    0 22.13 -68.75 ZNESW 16.7 15.6 302.0 19.3 17.6 -23.8 17.6 -22.9 17.4 -22.6 17.6 -23.5
2025-11-04T01:32:27.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:32:27.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:32:27.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.980306
2025-11-04T01:32:27.728 [DEBUG] [Thread-126221] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:32:27.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:32:27.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:32:27.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:32:27.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:32:27.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:32:27.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:32:02', tmtdew=27.37, humidity=14.37, cloud=0.0, wind=16.78, temperature=17.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:32:03', seeing=1.12, atlas_timestamp='2025-11-03T23:31:38.438', atlas_cloud=1, atlas_rain=1, zp_data=[0.010249999999999204, 0.08225000000000016, 0.07324999999999982, 0.11050000000000004, 0.10050000000000026, -0.03074999999999939, -0.002000000000000668, 0.07175000000000153, 0.12349999999999994, 0.07099999999999973, 0.18475000000000108, 0.08900000000000041, 0.16750000000000043, -0.13874999999999993, 0.0799999999999983, -0.03300000000000125, 0.09525000000000006, 0.10899999999999999, 0.16549999999999976, 0.16524999999999856, 0.15399999999999814, -0.4712500000000013, 0.035250000000001336, 0.05775000000000041, 0.02499999999999858, 0.18549999999999933, 0.13775000000000048, 0.26250000000000107, 0.3320000000000016, 0.05000000000000071, 0.07350000000000101, 0.0810000000000013, 0.15674999999999883], zp_timestamp='2025-11-03T23:30:00')
2025-11-04T01:32:27.834 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:32:32.375 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:32:32.376 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:32:37.844 [DEBUG] [Thread-126224 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:32:43.899 [DEBUG] [Thread-126225 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:32:52.918 [DEBUG] [Thread-126226 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:33:07.953 [DEBUG] [Thread-126227 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:33:22.988 [DEBUG] [Thread-126228 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:33:32.578 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:33:32.580 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:33:38.031 [DEBUG] [Thread-126229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:33:44.280 [DEBUG] [Thread-126230 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:33:53.064 [DEBUG] [Thread-126231 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:34:08.103 [DEBUG] [Thread-126232 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:34:12.042 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:34:16.853 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:34:19.893 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:34:23.167 [DEBUG] [Thread-126233 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:34:26.259 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:34:32.792 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:34:32.794 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:34:38.242 [DEBUG] [Thread-126234 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:34:43.305 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-04T01:34:44.632 [DEBUG] [Thread-126235 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:34:53.278 [DEBUG] [Thread-126236 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:35:08.308 [DEBUG] [Thread-126237 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:35:13.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:35:13.351 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:35:13.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:35:14.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 34, 45), 27.38, 14.37, 0.0, 18.33, 17.27, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:35:14.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:34:45
2025-11-04T01:35:14.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:35:14.422 [DEBUG] [Thread-126238] [transport.py] [_log()] starting thread (client mode): 0xed36380
2025-11-04T01:35:14.423 [DEBUG] [Thread-126238] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:35:14.426 [DEBUG] [Thread-126238] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:35:14.426 [INFO] [Thread-126238] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:35:14.430 [DEBUG] [Thread-126238] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:35:14.432 [DEBUG] [Thread-126238] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:35:14.432 [DEBUG] [Thread-126238] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:35:14.432 [DEBUG] [Thread-126238] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:35:14.432 [DEBUG] [Thread-126238] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:35:14.432 [DEBUG] [Thread-126238] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:35:14.432 [DEBUG] [Thread-126238] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:35:14.432 [DEBUG] [Thread-126238] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:35:14.432 [DEBUG] [Thread-126238] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:35:14.432 [DEBUG] [Thread-126238] [transport.py] [_log()] client lang: <none>
2025-11-04T01:35:14.432 [DEBUG] [Thread-126238] [transport.py] [_log()] server lang: <none>
2025-11-04T01:35:14.432 [DEBUG] [Thread-126238] [transport.py] [_log()] kex follows: False
2025-11-04T01:35:14.432 [DEBUG] [Thread-126238] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:35:14.433 [DEBUG] [Thread-126238] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:35:14.433 [DEBUG] [Thread-126238] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:35:14.433 [DEBUG] [Thread-126238] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:35:14.433 [DEBUG] [Thread-126238] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:35:14.433 [DEBUG] [Thread-126238] [transport.py] [_log()] Compression: none
2025-11-04T01:35:14.433 [DEBUG] [Thread-126238] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:35:14.457 [DEBUG] [Thread-126238] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:35:14.460 [DEBUG] [Thread-126238] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:35:14.462 [DEBUG] [Thread-126238] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:35:14.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:35:14.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:35:14.466 [DEBUG] [Thread-126238] [transport.py] [_log()] userauth is OK
2025-11-04T01:35:14.467 [DEBUG] [Thread-126238] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:35:14.467 [DEBUG] [Thread-126238] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:35:14.467 [DEBUG] [Thread-126238] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:35:14.467 [DEBUG] [Thread-126238] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:35:14.493 [INFO] [Thread-126238] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:35:14.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:35:15.191 [DEBUG] [Thread-126238] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:35:15.191 [DEBUG] [Thread-126238] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:35:15.201 [DEBUG] [Thread-126238] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:35:15.232 [DEBUG] [Thread-126238] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:35:15.232 [DEBUG] [Thread-126238] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:35:15.235 [DEBUG] [Thread-126238] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:35:15.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:35:15.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:35:15.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:35:15.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:35:15.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:35:15.253 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:35:15.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:35:15.253 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:35:15.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:35:15.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.982390 -999.00  +17.20  16.77     19   -6.00 1 1 1 1 1     0    0 21.88 -54.70 ZNESW 17.6 16.8 310.2 19.0 17.6 -23.8 17.5 -22.9 17.2 -22.5 17.6 -23.5
2025-11-04T01:35:15.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:35:15.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:35:15.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.982390
2025-11-04T01:35:15.260 [DEBUG] [Thread-126238] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:35:15.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:35:15.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:35:15.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:35:15.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:35:15.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:35:15.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:34:45', tmtdew=27.38, humidity=14.37, cloud=0.0, wind=18.33, temperature=17.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:34:45', seeing=1.33, atlas_timestamp='2025-11-03T23:34:38.496', atlas_cloud=1, atlas_rain=1, zp_data=[0.010249999999999204, 0.08225000000000016, 0.07324999999999982, 0.11050000000000004, 0.10050000000000026, -0.03074999999999939, -0.002000000000000668, 0.07175000000000153, 0.12349999999999994, 0.07099999999999973, 0.18475000000000108, 0.08900000000000041, 0.16750000000000043, -0.13874999999999993, 0.0799999999999983, -0.03300000000000125, 0.09525000000000006, 0.10899999999999999, 0.16549999999999976, 0.16524999999999856, 0.15399999999999814, -0.4712500000000013, 0.035250000000001336, 0.05775000000000041, 0.02499999999999858, 0.18549999999999933, 0.13775000000000048, 0.26250000000000107, 0.3320000000000016, 0.05000000000000071, 0.07350000000000101, 0.0810000000000013, 0.15674999999999883], zp_timestamp='2025-11-03T23:33:00')
2025-11-04T01:35:15.348 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:35:15.361 [DEBUG] [Thread-126241] [transport.py] [_log()] starting thread (client mode): 0xed35cc0
2025-11-04T01:35:15.362 [DEBUG] [Thread-126241] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:35:15.377 [DEBUG] [Thread-126241] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:35:15.377 [INFO] [Thread-126241] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:35:15.385 [DEBUG] [Thread-126241] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:35:15.385 [DEBUG] [Thread-126241] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:35:15.385 [DEBUG] [Thread-126241] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:35:15.385 [DEBUG] [Thread-126241] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:35:15.385 [DEBUG] [Thread-126241] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:35:15.385 [DEBUG] [Thread-126241] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:35:15.385 [DEBUG] [Thread-126241] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:35:15.385 [DEBUG] [Thread-126241] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:35:15.386 [DEBUG] [Thread-126241] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:35:15.386 [DEBUG] [Thread-126241] [transport.py] [_log()] client lang: <none>
2025-11-04T01:35:15.386 [DEBUG] [Thread-126241] [transport.py] [_log()] server lang: <none>
2025-11-04T01:35:15.386 [DEBUG] [Thread-126241] [transport.py] [_log()] kex follows: False
2025-11-04T01:35:15.386 [DEBUG] [Thread-126241] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:35:15.386 [DEBUG] [Thread-126241] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:35:15.386 [DEBUG] [Thread-126241] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:35:15.386 [DEBUG] [Thread-126241] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:35:15.386 [DEBUG] [Thread-126241] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:35:15.386 [DEBUG] [Thread-126241] [transport.py] [_log()] Compression: none
2025-11-04T01:35:15.386 [DEBUG] [Thread-126241] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:35:15.443 [DEBUG] [Thread-126241] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:35:15.443 [DEBUG] [Thread-126241] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:35:15.443 [DEBUG] [Thread-126241] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:35:15.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:35:15.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:35:15.499 [DEBUG] [Thread-126241] [transport.py] [_log()] userauth is OK
2025-11-04T01:35:15.499 [DEBUG] [Thread-126241] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:35:15.499 [DEBUG] [Thread-126241] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:35:15.499 [DEBUG] [Thread-126241] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:35:15.499 [DEBUG] [Thread-126241] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:35:15.514 [INFO] [Thread-126241] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:35:15.514 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:35:15.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:35:16.369 [DEBUG] [Thread-126241] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:35:16.378 [DEBUG] [Thread-126241] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:35:16.418 [DEBUG] [Thread-126241] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:35:16.418 [DEBUG] [Thread-126241] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:35:16.427 [DEBUG] [Thread-126241] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:35:16.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:35:16.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:35:16.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:35:16.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:35:16.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:35:16.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:35:16.465 [DEBUG] [Thread-126241] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:35:23.350 [DEBUG] [Thread-126243 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:35:24.770 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:35:27.920 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:35:32.986 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:35:32.994 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:35:32.995 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:35:38.383 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:35:38.474 [DEBUG] [Thread-126244 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:35:44.978 [DEBUG] [Thread-126245 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:35:46.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:35:46.491 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:35:46.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:35:47.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 35, 18), 27.34, 14.41, 0.0, 18.12, 17.2, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:35:47.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:35:18
2025-11-04T01:35:47.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:35:48.003 [DEBUG] [Thread-126246] [transport.py] [_log()] starting thread (client mode): 0x117bf9d0
2025-11-04T01:35:48.004 [DEBUG] [Thread-126246] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:35:48.015 [DEBUG] [Thread-126246] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:35:48.015 [INFO] [Thread-126246] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:35:48.021 [DEBUG] [Thread-126246] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:35:48.021 [DEBUG] [Thread-126246] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:35:48.021 [DEBUG] [Thread-126246] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:35:48.021 [DEBUG] [Thread-126246] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:35:48.021 [DEBUG] [Thread-126246] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:35:48.021 [DEBUG] [Thread-126246] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:35:48.021 [DEBUG] [Thread-126246] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:35:48.021 [DEBUG] [Thread-126246] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:35:48.021 [DEBUG] [Thread-126246] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:35:48.022 [DEBUG] [Thread-126246] [transport.py] [_log()] client lang: <none>
2025-11-04T01:35:48.022 [DEBUG] [Thread-126246] [transport.py] [_log()] server lang: <none>
2025-11-04T01:35:48.022 [DEBUG] [Thread-126246] [transport.py] [_log()] kex follows: False
2025-11-04T01:35:48.022 [DEBUG] [Thread-126246] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:35:48.023 [DEBUG] [Thread-126246] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:35:48.023 [DEBUG] [Thread-126246] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:35:48.023 [DEBUG] [Thread-126246] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:35:48.023 [DEBUG] [Thread-126246] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:35:48.023 [DEBUG] [Thread-126246] [transport.py] [_log()] Compression: none
2025-11-04T01:35:48.023 [DEBUG] [Thread-126246] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:35:48.053 [DEBUG] [Thread-126246] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:35:48.057 [DEBUG] [Thread-126246] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:35:48.059 [DEBUG] [Thread-126246] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:35:48.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:35:48.061 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:35:48.062 [DEBUG] [Thread-126246] [transport.py] [_log()] userauth is OK
2025-11-04T01:35:48.062 [DEBUG] [Thread-126246] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:35:48.062 [DEBUG] [Thread-126246] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:35:48.062 [DEBUG] [Thread-126246] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:35:48.062 [DEBUG] [Thread-126246] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:35:48.074 [INFO] [Thread-126246] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:35:48.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:35:48.692 [DEBUG] [Thread-126246] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:35:48.701 [DEBUG] [Thread-126246] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:35:48.703 [DEBUG] [Thread-126246] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:35:48.732 [DEBUG] [Thread-126246] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:35:48.732 [DEBUG] [Thread-126246] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:35:48.735 [DEBUG] [Thread-126246] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:35:48.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:35:48.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:35:48.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:35:48.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:35:48.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:35:48.757 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:35:48.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:35:48.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:35:48.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:35:48.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.983084 -999.00  +17.20  16.61     19   -6.00 1 1 1 1 1     0    0 21.98 -48.07 ZNESW 15.5 16.6 304.0 18.6 17.6 -24.0 17.5 -22.8 17.2 -22.4 17.5 -23.5
2025-11-04T01:35:48.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:35:48.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:35:48.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.983084
2025-11-04T01:35:48.764 [DEBUG] [Thread-126246] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:35:48.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:35:48.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:35:48.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:35:48.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:35:48.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:35:48.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:35:18', tmtdew=27.34, humidity=14.41, cloud=0.0, wind=18.12, temperature=17.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:35:19', seeing=1.22, atlas_timestamp='2025-11-03T23:35:38.458', atlas_cloud=1, atlas_rain=1, zp_data=[0.010249999999999204, 0.08225000000000016, 0.07324999999999982, 0.11050000000000004, 0.10050000000000026, -0.03074999999999939, -0.002000000000000668, 0.07175000000000153, 0.12349999999999994, 0.07099999999999973, 0.18475000000000108, 0.08900000000000041, 0.16750000000000043, -0.13874999999999993, 0.0799999999999983, -0.03300000000000125, 0.09525000000000006, 0.10899999999999999, 0.16549999999999976, 0.16524999999999856, 0.15399999999999814, -0.4712500000000013, 0.035250000000001336, 0.05775000000000041, 0.02499999999999858, 0.18549999999999933, 0.13775000000000048, 0.26250000000000107, 0.3320000000000016, 0.05000000000000071, 0.07350000000000101, 0.0810000000000013, 0.15674999999999883], zp_timestamp='2025-11-03T23:33:00')
2025-11-04T01:35:48.856 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:35:48.869 [DEBUG] [Thread-126249] [transport.py] [_log()] starting thread (client mode): 0x117bfd30
2025-11-04T01:35:48.869 [DEBUG] [Thread-126249] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:35:48.888 [DEBUG] [Thread-126249] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:35:48.888 [INFO] [Thread-126249] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:35:48.896 [DEBUG] [Thread-126249] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:35:48.896 [DEBUG] [Thread-126249] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:35:48.896 [DEBUG] [Thread-126249] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:35:48.896 [DEBUG] [Thread-126249] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:35:48.896 [DEBUG] [Thread-126249] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:35:48.896 [DEBUG] [Thread-126249] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:35:48.896 [DEBUG] [Thread-126249] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:35:48.896 [DEBUG] [Thread-126249] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:35:48.896 [DEBUG] [Thread-126249] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:35:48.896 [DEBUG] [Thread-126249] [transport.py] [_log()] client lang: <none>
2025-11-04T01:35:48.896 [DEBUG] [Thread-126249] [transport.py] [_log()] server lang: <none>
2025-11-04T01:35:48.896 [DEBUG] [Thread-126249] [transport.py] [_log()] kex follows: False
2025-11-04T01:35:48.896 [DEBUG] [Thread-126249] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:35:48.896 [DEBUG] [Thread-126249] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:35:48.896 [DEBUG] [Thread-126249] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:35:48.896 [DEBUG] [Thread-126249] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:35:48.896 [DEBUG] [Thread-126249] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:35:48.896 [DEBUG] [Thread-126249] [transport.py] [_log()] Compression: none
2025-11-04T01:35:48.896 [DEBUG] [Thread-126249] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:35:48.955 [DEBUG] [Thread-126249] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:35:48.956 [DEBUG] [Thread-126249] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:35:48.957 [DEBUG] [Thread-126249] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:35:48.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:35:48.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:35:49.011 [DEBUG] [Thread-126249] [transport.py] [_log()] userauth is OK
2025-11-04T01:35:49.012 [DEBUG] [Thread-126249] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:35:49.012 [DEBUG] [Thread-126249] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:35:49.012 [DEBUG] [Thread-126249] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:35:49.012 [DEBUG] [Thread-126249] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:35:49.037 [INFO] [Thread-126249] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:35:49.038 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:35:49.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:35:49.949 [DEBUG] [Thread-126249] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:35:49.949 [DEBUG] [Thread-126249] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:35:49.997 [DEBUG] [Thread-126249] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:35:49.997 [DEBUG] [Thread-126249] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:35:50.006 [DEBUG] [Thread-126249] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:35:50.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:35:50.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:35:50.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:35:50.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:35:50.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:35:50.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:35:50.040 [DEBUG] [Thread-126249] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:35:53.520 [DEBUG] [Thread-126251 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:35:57.736 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:36:02.104 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:36:08.625 [DEBUG] [Thread-126252 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:36:20.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:36:20.050 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:36:20.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:36:20.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 35, 51), 27.26, 14.44, 0.0, 16.29, 17.14, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:36:20.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:35:51
2025-11-04T01:36:20.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:36:21.147 [DEBUG] [Thread-126253] [transport.py] [_log()] starting thread (client mode): 0x117be860
2025-11-04T01:36:21.148 [DEBUG] [Thread-126253] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:36:21.161 [DEBUG] [Thread-126253] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:36:21.161 [INFO] [Thread-126253] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:36:21.166 [DEBUG] [Thread-126253] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:36:21.166 [DEBUG] [Thread-126253] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:36:21.166 [DEBUG] [Thread-126253] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:36:21.166 [DEBUG] [Thread-126253] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:36:21.166 [DEBUG] [Thread-126253] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:36:21.166 [DEBUG] [Thread-126253] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:36:21.167 [DEBUG] [Thread-126253] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:36:21.167 [DEBUG] [Thread-126253] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:36:21.167 [DEBUG] [Thread-126253] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:36:21.167 [DEBUG] [Thread-126253] [transport.py] [_log()] client lang: <none>
2025-11-04T01:36:21.167 [DEBUG] [Thread-126253] [transport.py] [_log()] server lang: <none>
2025-11-04T01:36:21.167 [DEBUG] [Thread-126253] [transport.py] [_log()] kex follows: False
2025-11-04T01:36:21.167 [DEBUG] [Thread-126253] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:36:21.167 [DEBUG] [Thread-126253] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:36:21.167 [DEBUG] [Thread-126253] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:36:21.167 [DEBUG] [Thread-126253] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:36:21.167 [DEBUG] [Thread-126253] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:36:21.168 [DEBUG] [Thread-126253] [transport.py] [_log()] Compression: none
2025-11-04T01:36:21.168 [DEBUG] [Thread-126253] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:36:21.187 [DEBUG] [Thread-126253] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:36:21.192 [DEBUG] [Thread-126253] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:36:21.194 [DEBUG] [Thread-126253] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:36:21.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:36:21.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:36:21.199 [DEBUG] [Thread-126253] [transport.py] [_log()] userauth is OK
2025-11-04T01:36:21.199 [DEBUG] [Thread-126253] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:36:21.199 [DEBUG] [Thread-126253] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:36:21.199 [DEBUG] [Thread-126253] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:36:21.199 [DEBUG] [Thread-126253] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:36:21.218 [INFO] [Thread-126253] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:36:21.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:36:21.494 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:36:21.827 [DEBUG] [Thread-126253] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:36:21.827 [DEBUG] [Thread-126253] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:36:21.828 [DEBUG] [Thread-126253] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:36:21.868 [DEBUG] [Thread-126253] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:36:21.868 [DEBUG] [Thread-126253] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:36:21.870 [DEBUG] [Thread-126253] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:36:21.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:36:21.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:36:21.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:36:21.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:36:21.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:36:21.887 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:36:21.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:36:21.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:36:21.888 [DEBUG] [Thread-126253] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:36:21.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:36:21.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.983432 -999.00  +17.20  17.50     19   -6.00 1 1 1 1 1     0    0 22.06 -47.28 ZNESW 16.4 17.5 310.6 19.0 17.6 -23.9 17.5 -22.9 17.2 -22.6 17.5 -23.4
2025-11-04T01:36:21.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:36:21.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:36:21.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.983432
2025-11-04T01:36:21.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:36:21.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:36:21.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:36:21.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:36:21.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:36:21.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:35:51', tmtdew=27.26, humidity=14.44, cloud=0.0, wind=16.29, temperature=17.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:35:51', seeing=1.22, atlas_timestamp='2025-11-03T23:36:08.525', atlas_cloud=1, atlas_rain=1, zp_data=[0.010249999999999204, 0.08225000000000016, 0.07324999999999982, 0.11050000000000004, 0.10050000000000026, -0.03074999999999939, -0.002000000000000668, 0.07175000000000153, 0.12349999999999994, 0.07099999999999973, 0.18475000000000108, 0.08900000000000041, 0.16750000000000043, -0.13874999999999993, 0.0799999999999983, -0.03300000000000125, 0.09525000000000006, 0.10899999999999999, 0.16549999999999976, 0.16524999999999856, 0.15399999999999814, -0.4712500000000013, 0.035250000000001336, 0.05775000000000041, 0.02499999999999858, 0.18549999999999933, 0.13775000000000048, 0.26250000000000107, 0.3320000000000016, 0.05000000000000071, 0.07350000000000101, 0.0810000000000013, 0.15674999999999883], zp_timestamp='2025-11-03T23:33:00')
2025-11-04T01:36:21.982 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:36:21.994 [DEBUG] [Thread-126256] [transport.py] [_log()] starting thread (client mode): 0xed37c10
2025-11-04T01:36:21.994 [DEBUG] [Thread-126256] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:36:22.008 [DEBUG] [Thread-126256] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:36:22.009 [INFO] [Thread-126256] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:36:22.016 [DEBUG] [Thread-126256] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:36:22.016 [DEBUG] [Thread-126256] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:36:22.016 [DEBUG] [Thread-126256] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:36:22.016 [DEBUG] [Thread-126256] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:36:22.016 [DEBUG] [Thread-126256] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:36:22.016 [DEBUG] [Thread-126256] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:36:22.017 [DEBUG] [Thread-126256] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:36:22.017 [DEBUG] [Thread-126256] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:36:22.017 [DEBUG] [Thread-126256] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:36:22.017 [DEBUG] [Thread-126256] [transport.py] [_log()] client lang: <none>
2025-11-04T01:36:22.017 [DEBUG] [Thread-126256] [transport.py] [_log()] server lang: <none>
2025-11-04T01:36:22.017 [DEBUG] [Thread-126256] [transport.py] [_log()] kex follows: False
2025-11-04T01:36:22.017 [DEBUG] [Thread-126256] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:36:22.017 [DEBUG] [Thread-126256] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:36:22.017 [DEBUG] [Thread-126256] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:36:22.017 [DEBUG] [Thread-126256] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:36:22.017 [DEBUG] [Thread-126256] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:36:22.017 [DEBUG] [Thread-126256] [transport.py] [_log()] Compression: none
2025-11-04T01:36:22.017 [DEBUG] [Thread-126256] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:36:22.076 [DEBUG] [Thread-126256] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:36:22.076 [DEBUG] [Thread-126256] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:36:22.077 [DEBUG] [Thread-126256] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:36:22.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:36:22.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:36:22.132 [DEBUG] [Thread-126256] [transport.py] [_log()] userauth is OK
2025-11-04T01:36:22.132 [DEBUG] [Thread-126256] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:36:22.132 [DEBUG] [Thread-126256] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:36:22.133 [DEBUG] [Thread-126256] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:36:22.133 [DEBUG] [Thread-126256] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:36:22.152 [INFO] [Thread-126256] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:36:22.152 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:36:22.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:36:22.965 [DEBUG] [Thread-126256] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:36:22.965 [DEBUG] [Thread-126256] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:36:23.013 [DEBUG] [Thread-126256] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:36:23.013 [DEBUG] [Thread-126256] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:36:23.021 [DEBUG] [Thread-126256] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:36:23.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:36:23.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:36:23.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:36:23.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:36:23.050 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:36:23.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:36:23.058 [DEBUG] [Thread-126256] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:36:23.650 [DEBUG] [Thread-126258 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:36:25.860 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:36:32.631 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:36:33.205 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:36:33.206 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:36:36.995 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:36:38.748 [DEBUG] [Thread-126259 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:36:45.299 [DEBUG] [Thread-126260 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:36:53.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:36:53.083 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:36:53.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:36:53.783 [DEBUG] [Thread-126261 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:36:53.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 36, 23), 27.25, 14.44, 0.0, 16.89, 17.09, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:36:53.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:36:23
2025-11-04T01:36:53.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:36:54.133 [DEBUG] [Thread-126262] [transport.py] [_log()] starting thread (client mode): 0x117bcf10
2025-11-04T01:36:54.134 [DEBUG] [Thread-126262] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:36:54.147 [DEBUG] [Thread-126262] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:36:54.147 [INFO] [Thread-126262] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:36:54.151 [DEBUG] [Thread-126262] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:36:54.151 [DEBUG] [Thread-126262] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:36:54.151 [DEBUG] [Thread-126262] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:36:54.151 [DEBUG] [Thread-126262] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:36:54.151 [DEBUG] [Thread-126262] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:36:54.152 [DEBUG] [Thread-126262] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:36:54.152 [DEBUG] [Thread-126262] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:36:54.152 [DEBUG] [Thread-126262] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:36:54.152 [DEBUG] [Thread-126262] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:36:54.152 [DEBUG] [Thread-126262] [transport.py] [_log()] client lang: <none>
2025-11-04T01:36:54.152 [DEBUG] [Thread-126262] [transport.py] [_log()] server lang: <none>
2025-11-04T01:36:54.152 [DEBUG] [Thread-126262] [transport.py] [_log()] kex follows: False
2025-11-04T01:36:54.152 [DEBUG] [Thread-126262] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:36:54.152 [DEBUG] [Thread-126262] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:36:54.152 [DEBUG] [Thread-126262] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:36:54.152 [DEBUG] [Thread-126262] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:36:54.153 [DEBUG] [Thread-126262] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:36:54.153 [DEBUG] [Thread-126262] [transport.py] [_log()] Compression: none
2025-11-04T01:36:54.153 [DEBUG] [Thread-126262] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:36:54.182 [DEBUG] [Thread-126262] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:36:54.185 [DEBUG] [Thread-126262] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:36:54.187 [DEBUG] [Thread-126262] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:36:54.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:36:54.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:36:54.189 [DEBUG] [Thread-126262] [transport.py] [_log()] userauth is OK
2025-11-04T01:36:54.190 [DEBUG] [Thread-126262] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:36:54.190 [DEBUG] [Thread-126262] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:36:54.190 [DEBUG] [Thread-126262] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:36:54.190 [DEBUG] [Thread-126262] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:36:54.208 [INFO] [Thread-126262] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:36:54.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:36:54.849 [DEBUG] [Thread-126262] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:36:54.850 [DEBUG] [Thread-126262] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:36:54.850 [DEBUG] [Thread-126262] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:36:54.890 [DEBUG] [Thread-126262] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:36:54.891 [DEBUG] [Thread-126262] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:36:54.892 [DEBUG] [Thread-126262] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:36:54.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:36:54.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:36:54.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:36:54.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:36:54.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:36:54.907 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:36:54.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:36:54.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:36:54.909 [DEBUG] [Thread-126262] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:36:54.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:36:54.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.983432 -999.00  +17.20  17.50     19   -6.00 1 1 1 1 1     0    0 22.06 -47.28 ZNESW 16.4 17.5 310.6 19.0 17.6 -23.9 17.5 -22.9 17.2 -22.6 17.5 -23.4
2025-11-04T01:36:54.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:36:54.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:36:54.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.983432
2025-11-04T01:36:54.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:36:54.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:36:54.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:36:54.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:36:54.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:36:54.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:36:23', tmtdew=27.25, humidity=14.44, cloud=0.0, wind=16.89, temperature=17.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:36:24', seeing=1.03, atlas_timestamp='2025-11-03T23:36:08.525', atlas_cloud=1, atlas_rain=1, zp_data=[0.010249999999999204, 0.08225000000000016, 0.07324999999999982, 0.11050000000000004, 0.10050000000000026, -0.03074999999999939, -0.002000000000000668, 0.07175000000000153, 0.12349999999999994, 0.07099999999999973, 0.18475000000000108, 0.08900000000000041, 0.16750000000000043, -0.13874999999999993, 0.0799999999999983, -0.03300000000000125, 0.09525000000000006, 0.10899999999999999, 0.16549999999999976, 0.16524999999999856, 0.15399999999999814, -0.4712500000000013, 0.035250000000001336, 0.05775000000000041, 0.02499999999999858, 0.18549999999999933, 0.13775000000000048, 0.26250000000000107, 0.3320000000000016, 0.05000000000000071, 0.07350000000000101, 0.0810000000000013, 0.15674999999999883], zp_timestamp='2025-11-03T23:33:00')
2025-11-04T01:36:55.000 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:36:55.013 [DEBUG] [Thread-126265] [transport.py] [_log()] starting thread (client mode): 0x117be9b0
2025-11-04T01:36:55.013 [DEBUG] [Thread-126265] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:36:55.028 [DEBUG] [Thread-126265] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:36:55.028 [INFO] [Thread-126265] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:36:55.036 [DEBUG] [Thread-126265] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:36:55.036 [DEBUG] [Thread-126265] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:36:55.036 [DEBUG] [Thread-126265] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:36:55.036 [DEBUG] [Thread-126265] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:36:55.036 [DEBUG] [Thread-126265] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:36:55.036 [DEBUG] [Thread-126265] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:36:55.036 [DEBUG] [Thread-126265] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:36:55.036 [DEBUG] [Thread-126265] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:36:55.036 [DEBUG] [Thread-126265] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:36:55.036 [DEBUG] [Thread-126265] [transport.py] [_log()] client lang: <none>
2025-11-04T01:36:55.036 [DEBUG] [Thread-126265] [transport.py] [_log()] server lang: <none>
2025-11-04T01:36:55.036 [DEBUG] [Thread-126265] [transport.py] [_log()] kex follows: False
2025-11-04T01:36:55.036 [DEBUG] [Thread-126265] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:36:55.036 [DEBUG] [Thread-126265] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:36:55.036 [DEBUG] [Thread-126265] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:36:55.036 [DEBUG] [Thread-126265] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:36:55.036 [DEBUG] [Thread-126265] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:36:55.036 [DEBUG] [Thread-126265] [transport.py] [_log()] Compression: none
2025-11-04T01:36:55.036 [DEBUG] [Thread-126265] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:36:55.094 [DEBUG] [Thread-126265] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:36:55.094 [DEBUG] [Thread-126265] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:36:55.095 [DEBUG] [Thread-126265] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:36:55.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:36:55.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:36:55.153 [DEBUG] [Thread-126265] [transport.py] [_log()] userauth is OK
2025-11-04T01:36:55.153 [DEBUG] [Thread-126265] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:36:55.153 [DEBUG] [Thread-126265] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:36:55.153 [DEBUG] [Thread-126265] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:36:55.153 [DEBUG] [Thread-126265] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:36:55.168 [INFO] [Thread-126265] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:36:55.169 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:36:55.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:36:56.013 [DEBUG] [Thread-126265] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:36:56.013 [DEBUG] [Thread-126265] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:36:56.064 [DEBUG] [Thread-126265] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:36:56.064 [DEBUG] [Thread-126265] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:36:56.075 [DEBUG] [Thread-126265] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:36:56.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:36:56.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:36:56.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:36:56.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:36:56.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:36:56.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:36:56.119 [DEBUG] [Thread-126265] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:37:08.818 [DEBUG] [Thread-126267 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:37:23.926 [DEBUG] [Thread-126268 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:37:26.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:37:26.146 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:37:26.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:37:27.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 36, 56), 27.23, 14.47, 0.0, 17.93, 17.11, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:37:27.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:36:56
2025-11-04T01:37:27.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:37:27.589 [DEBUG] [Thread-126269] [transport.py] [_log()] starting thread (client mode): 0xed37160
2025-11-04T01:37:27.590 [DEBUG] [Thread-126269] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:37:27.602 [DEBUG] [Thread-126269] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:37:27.602 [INFO] [Thread-126269] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:37:27.607 [DEBUG] [Thread-126269] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:37:27.607 [DEBUG] [Thread-126269] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:37:27.607 [DEBUG] [Thread-126269] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:37:27.607 [DEBUG] [Thread-126269] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:37:27.607 [DEBUG] [Thread-126269] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:37:27.607 [DEBUG] [Thread-126269] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:37:27.607 [DEBUG] [Thread-126269] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:37:27.608 [DEBUG] [Thread-126269] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:37:27.608 [DEBUG] [Thread-126269] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:37:27.608 [DEBUG] [Thread-126269] [transport.py] [_log()] client lang: <none>
2025-11-04T01:37:27.608 [DEBUG] [Thread-126269] [transport.py] [_log()] server lang: <none>
2025-11-04T01:37:27.608 [DEBUG] [Thread-126269] [transport.py] [_log()] kex follows: False
2025-11-04T01:37:27.608 [DEBUG] [Thread-126269] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:37:27.609 [DEBUG] [Thread-126269] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:37:27.609 [DEBUG] [Thread-126269] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:37:27.609 [DEBUG] [Thread-126269] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:37:27.609 [DEBUG] [Thread-126269] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:37:27.609 [DEBUG] [Thread-126269] [transport.py] [_log()] Compression: none
2025-11-04T01:37:27.609 [DEBUG] [Thread-126269] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:37:27.650 [DEBUG] [Thread-126269] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:37:27.655 [DEBUG] [Thread-126269] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:37:27.657 [DEBUG] [Thread-126269] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:37:27.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:37:27.661 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:37:27.664 [DEBUG] [Thread-126269] [transport.py] [_log()] userauth is OK
2025-11-04T01:37:27.664 [DEBUG] [Thread-126269] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:37:27.664 [DEBUG] [Thread-126269] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:37:27.664 [DEBUG] [Thread-126269] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:37:27.664 [DEBUG] [Thread-126269] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:37:27.687 [INFO] [Thread-126269] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:37:27.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:37:28.341 [DEBUG] [Thread-126269] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:37:28.350 [DEBUG] [Thread-126269] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:37:28.352 [DEBUG] [Thread-126269] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:37:28.382 [DEBUG] [Thread-126269] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:37:28.382 [DEBUG] [Thread-126269] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:37:28.386 [DEBUG] [Thread-126269] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:37:28.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:37:28.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:37:28.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:37:28.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:37:28.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:37:28.413 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:37:28.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:37:28.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:37:28.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:37:28.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.983779 -999.00  +17.20  18.37     19   -6.00 1 1 1 1 1     0    0 22.40 -45.64 ZNESW 17.5 18.4 313.0 19.0 17.6 -23.9 17.5 -22.9 17.2 -22.7 17.5 -23.3
2025-11-04T01:37:28.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:37:28.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:37:28.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.983779
2025-11-04T01:37:28.422 [DEBUG] [Thread-126269] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:37:28.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:37:28.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:37:28.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:37:28.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:37:28.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:37:28.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:36:56', tmtdew=27.23, humidity=14.47, cloud=0.0, wind=17.93, temperature=17.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:36:57', seeing=1.1, atlas_timestamp='2025-11-03T23:36:38.506', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010750000000001592, 0.03825000000000145, -0.008749999999999147, 0.1144999999999996, 0.09350000000000058, 0.03375000000000128, -0.04750000000000121, 0.006250000000001421, 0.054999999999999716, 0.04899999999999949, 0.10374999999999979, 0.06600000000000072, 0.08799999999999919, -0.05375000000000085, -0.04800000000000182, -0.05850000000000044, 0.060249999999999915, 0.08150000000000013, 0.14699999999999847, 0.08924999999999983, 0.14149999999999885, -0.36925000000000097, -0.03125, 0.05274999999999963, 0.04399999999999871, 0.17849999999999966, 0.10575000000000045, 0.23550000000000004, 0.2110000000000003, 0.03500000000000014, 0.0840000000000014, 0.0810000000000013, 0.09074999999999989], zp_timestamp='2025-11-03T23:36:00')
2025-11-04T01:37:28.527 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:37:28.539 [DEBUG] [Thread-126272] [transport.py] [_log()] starting thread (client mode): 0x117bf2b0
2025-11-04T01:37:28.539 [DEBUG] [Thread-126272] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:37:28.553 [DEBUG] [Thread-126272] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:37:28.553 [INFO] [Thread-126272] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:37:28.561 [DEBUG] [Thread-126272] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:37:28.561 [DEBUG] [Thread-126272] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:37:28.561 [DEBUG] [Thread-126272] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:37:28.561 [DEBUG] [Thread-126272] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:37:28.561 [DEBUG] [Thread-126272] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:37:28.561 [DEBUG] [Thread-126272] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:37:28.561 [DEBUG] [Thread-126272] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:37:28.561 [DEBUG] [Thread-126272] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:37:28.561 [DEBUG] [Thread-126272] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:37:28.561 [DEBUG] [Thread-126272] [transport.py] [_log()] client lang: <none>
2025-11-04T01:37:28.562 [DEBUG] [Thread-126272] [transport.py] [_log()] server lang: <none>
2025-11-04T01:37:28.562 [DEBUG] [Thread-126272] [transport.py] [_log()] kex follows: False
2025-11-04T01:37:28.562 [DEBUG] [Thread-126272] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:37:28.562 [DEBUG] [Thread-126272] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:37:28.562 [DEBUG] [Thread-126272] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:37:28.562 [DEBUG] [Thread-126272] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:37:28.562 [DEBUG] [Thread-126272] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:37:28.562 [DEBUG] [Thread-126272] [transport.py] [_log()] Compression: none
2025-11-04T01:37:28.562 [DEBUG] [Thread-126272] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:37:28.618 [DEBUG] [Thread-126272] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:37:28.618 [DEBUG] [Thread-126272] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:37:28.618 [DEBUG] [Thread-126272] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:37:28.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:37:28.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:37:28.675 [DEBUG] [Thread-126272] [transport.py] [_log()] userauth is OK
2025-11-04T01:37:28.675 [DEBUG] [Thread-126272] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:37:28.675 [DEBUG] [Thread-126272] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:37:28.675 [DEBUG] [Thread-126272] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:37:28.675 [DEBUG] [Thread-126272] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:37:28.690 [INFO] [Thread-126272] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:37:28.690 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:37:28.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:37:29.530 [DEBUG] [Thread-126272] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:37:29.530 [DEBUG] [Thread-126272] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:37:29.580 [DEBUG] [Thread-126272] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:37:29.580 [DEBUG] [Thread-126272] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:37:29.589 [DEBUG] [Thread-126272] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:37:29.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:37:29.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:37:29.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:37:29.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:37:29.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:37:29.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:37:29.633 [DEBUG] [Thread-126272] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:37:33.407 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:37:33.408 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:37:38.959 [DEBUG] [Thread-126274 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:37:39.910 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:37:42.946 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:37:45.612 [DEBUG] [Thread-126275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:37:54.014 [DEBUG] [Thread-126276 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:37:59.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:37:59.656 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:37:59.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:38:00.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 37, 29), 27.21, 14.47, 0.0, 17.72, 17.02, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:38:00.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:37:29
2025-11-04T01:38:01.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:38:01.197 [DEBUG] [Thread-126277] [transport.py] [_log()] starting thread (client mode): 0x1179a260
2025-11-04T01:38:01.198 [DEBUG] [Thread-126277] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:38:01.211 [DEBUG] [Thread-126277] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:38:01.211 [INFO] [Thread-126277] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:38:01.215 [DEBUG] [Thread-126277] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:38:01.215 [DEBUG] [Thread-126277] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:38:01.215 [DEBUG] [Thread-126277] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:38:01.215 [DEBUG] [Thread-126277] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:38:01.215 [DEBUG] [Thread-126277] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:38:01.215 [DEBUG] [Thread-126277] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:38:01.215 [DEBUG] [Thread-126277] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:38:01.215 [DEBUG] [Thread-126277] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:38:01.216 [DEBUG] [Thread-126277] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:38:01.216 [DEBUG] [Thread-126277] [transport.py] [_log()] client lang: <none>
2025-11-04T01:38:01.216 [DEBUG] [Thread-126277] [transport.py] [_log()] server lang: <none>
2025-11-04T01:38:01.216 [DEBUG] [Thread-126277] [transport.py] [_log()] kex follows: False
2025-11-04T01:38:01.216 [DEBUG] [Thread-126277] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:38:01.217 [DEBUG] [Thread-126277] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:38:01.217 [DEBUG] [Thread-126277] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:38:01.217 [DEBUG] [Thread-126277] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:38:01.217 [DEBUG] [Thread-126277] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:38:01.217 [DEBUG] [Thread-126277] [transport.py] [_log()] Compression: none
2025-11-04T01:38:01.217 [DEBUG] [Thread-126277] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:38:01.243 [DEBUG] [Thread-126277] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:38:01.248 [DEBUG] [Thread-126277] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:38:01.251 [DEBUG] [Thread-126277] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:38:01.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:38:01.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:38:01.257 [DEBUG] [Thread-126277] [transport.py] [_log()] userauth is OK
2025-11-04T01:38:01.257 [DEBUG] [Thread-126277] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:38:01.257 [DEBUG] [Thread-126277] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:38:01.258 [DEBUG] [Thread-126277] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:38:01.258 [DEBUG] [Thread-126277] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:38:01.295 [INFO] [Thread-126277] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:38:01.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:38:01.962 [DEBUG] [Thread-126277] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:38:01.962 [DEBUG] [Thread-126277] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:38:01.962 [DEBUG] [Thread-126277] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:38:02.003 [DEBUG] [Thread-126277] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:38:02.004 [DEBUG] [Thread-126277] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:38:02.006 [DEBUG] [Thread-126277] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:38:02.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:38:02.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:38:02.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:38:02.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:38:02.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:38:02.028 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:38:02.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:38:02.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:38:02.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:38:02.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.984126 -999.00  +17.20  18.76     19   -6.00 1 1 1 1 1     0    0 22.61 -42.84 ZNESW 17.1 18.8 310.8 20.3 17.6 -23.9 17.5 -23.0 17.2 -22.5 17.5 -23.3
2025-11-04T01:38:02.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:38:02.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:38:02.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.984126
2025-11-04T01:38:02.030 [DEBUG] [Thread-126277] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:38:02.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:38:02.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:38:02.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:38:02.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:38:02.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:38:02.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:37:29', tmtdew=27.21, humidity=14.47, cloud=0.0, wind=17.72, temperature=17.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:37:29', seeing=1.1, atlas_timestamp='2025-11-03T23:37:08.486', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010750000000001592, 0.03825000000000145, -0.008749999999999147, 0.1144999999999996, 0.09350000000000058, 0.03375000000000128, -0.04750000000000121, 0.006250000000001421, 0.054999999999999716, 0.04899999999999949, 0.10374999999999979, 0.06600000000000072, 0.08799999999999919, -0.05375000000000085, -0.04800000000000182, -0.05850000000000044, 0.060249999999999915, 0.08150000000000013, 0.14699999999999847, 0.08924999999999983, 0.14149999999999885, -0.36925000000000097, -0.03125, 0.05274999999999963, 0.04399999999999871, 0.17849999999999966, 0.10575000000000045, 0.23550000000000004, 0.2110000000000003, 0.03500000000000014, 0.0840000000000014, 0.0810000000000013, 0.09074999999999989], zp_timestamp='2025-11-03T23:36:00')
2025-11-04T01:38:02.126 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:38:02.138 [DEBUG] [Thread-126280] [transport.py] [_log()] starting thread (client mode): 0x117998d0
2025-11-04T01:38:02.138 [DEBUG] [Thread-126280] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:38:02.155 [DEBUG] [Thread-126280] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:38:02.155 [INFO] [Thread-126280] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:38:02.166 [DEBUG] [Thread-126280] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:38:02.166 [DEBUG] [Thread-126280] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:38:02.166 [DEBUG] [Thread-126280] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:38:02.166 [DEBUG] [Thread-126280] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:38:02.166 [DEBUG] [Thread-126280] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:38:02.166 [DEBUG] [Thread-126280] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:38:02.166 [DEBUG] [Thread-126280] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:38:02.166 [DEBUG] [Thread-126280] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:38:02.166 [DEBUG] [Thread-126280] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:38:02.166 [DEBUG] [Thread-126280] [transport.py] [_log()] client lang: <none>
2025-11-04T01:38:02.166 [DEBUG] [Thread-126280] [transport.py] [_log()] server lang: <none>
2025-11-04T01:38:02.167 [DEBUG] [Thread-126280] [transport.py] [_log()] kex follows: False
2025-11-04T01:38:02.167 [DEBUG] [Thread-126280] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:38:02.167 [DEBUG] [Thread-126280] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:38:02.167 [DEBUG] [Thread-126280] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:38:02.167 [DEBUG] [Thread-126280] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:38:02.167 [DEBUG] [Thread-126280] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:38:02.167 [DEBUG] [Thread-126280] [transport.py] [_log()] Compression: none
2025-11-04T01:38:02.167 [DEBUG] [Thread-126280] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:38:02.228 [DEBUG] [Thread-126280] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:38:02.228 [DEBUG] [Thread-126280] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:38:02.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:38:02.229 [DEBUG] [Thread-126280] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:38:02.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:38:02.291 [DEBUG] [Thread-126280] [transport.py] [_log()] userauth is OK
2025-11-04T01:38:02.292 [DEBUG] [Thread-126280] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:38:02.292 [DEBUG] [Thread-126280] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:38:02.292 [DEBUG] [Thread-126280] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:38:02.292 [DEBUG] [Thread-126280] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:38:02.314 [INFO] [Thread-126280] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:38:02.315 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:38:02.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:38:03.194 [DEBUG] [Thread-126280] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:38:03.194 [DEBUG] [Thread-126280] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:38:03.244 [DEBUG] [Thread-126280] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:38:03.244 [DEBUG] [Thread-126280] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:38:03.256 [DEBUG] [Thread-126280] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:38:03.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:38:03.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:38:03.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:38:03.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:38:03.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:38:03.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:38:03.300 [DEBUG] [Thread-126280] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:38:09.058 [DEBUG] [Thread-126282 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:38:24.158 [DEBUG] [Thread-126283 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:38:33.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:38:33.330 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:38:33.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:38:33.610 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:38:33.610 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:38:34.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 38, 1), 27.18, 14.51, 0.0, 17.45, 17.01, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:38:34.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:38:01
2025-11-04T01:38:34.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:38:34.461 [DEBUG] [Thread-126284] [transport.py] [_log()] starting thread (client mode): 0x1179ae90
2025-11-04T01:38:34.462 [DEBUG] [Thread-126284] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:38:34.473 [DEBUG] [Thread-126284] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:38:34.473 [INFO] [Thread-126284] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:38:34.477 [DEBUG] [Thread-126284] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:38:34.478 [DEBUG] [Thread-126284] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:38:34.478 [DEBUG] [Thread-126284] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:38:34.478 [DEBUG] [Thread-126284] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:38:34.478 [DEBUG] [Thread-126284] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:38:34.478 [DEBUG] [Thread-126284] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:38:34.478 [DEBUG] [Thread-126284] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:38:34.478 [DEBUG] [Thread-126284] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:38:34.478 [DEBUG] [Thread-126284] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:38:34.478 [DEBUG] [Thread-126284] [transport.py] [_log()] client lang: <none>
2025-11-04T01:38:34.478 [DEBUG] [Thread-126284] [transport.py] [_log()] server lang: <none>
2025-11-04T01:38:34.478 [DEBUG] [Thread-126284] [transport.py] [_log()] kex follows: False
2025-11-04T01:38:34.479 [DEBUG] [Thread-126284] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:38:34.479 [DEBUG] [Thread-126284] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:38:34.479 [DEBUG] [Thread-126284] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:38:34.480 [DEBUG] [Thread-126284] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:38:34.480 [DEBUG] [Thread-126284] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:38:34.480 [DEBUG] [Thread-126284] [transport.py] [_log()] Compression: none
2025-11-04T01:38:34.480 [DEBUG] [Thread-126284] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:38:34.517 [DEBUG] [Thread-126284] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:38:34.523 [DEBUG] [Thread-126284] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:38:34.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:38:34.529 [DEBUG] [Thread-126284] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:38:34.529 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:38:34.531 [DEBUG] [Thread-126284] [transport.py] [_log()] userauth is OK
2025-11-04T01:38:34.532 [DEBUG] [Thread-126284] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:38:34.532 [DEBUG] [Thread-126284] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:38:34.532 [DEBUG] [Thread-126284] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:38:34.532 [DEBUG] [Thread-126284] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:38:34.558 [INFO] [Thread-126284] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:38:34.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:38:35.217 [DEBUG] [Thread-126284] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:38:35.217 [DEBUG] [Thread-126284] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:38:35.218 [DEBUG] [Thread-126284] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:38:35.258 [DEBUG] [Thread-126284] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:38:35.258 [DEBUG] [Thread-126284] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:38:35.261 [DEBUG] [Thread-126284] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:38:35.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:38:35.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:38:35.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:38:35.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:38:35.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:38:35.281 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:38:35.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:38:35.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:38:35.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:38:35.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.984473 -999.00  +17.10  18.19     19   -6.10 1 1 1 1 1     0    0 22.17 -43.04 ZNESW 17.9 18.2 316.2 21.2 17.6 -23.9 17.5 -22.9 17.2 -22.5 17.4 -23.4
2025-11-04T01:38:35.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:38:35.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:38:35.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.984473
2025-11-04T01:38:35.290 [DEBUG] [Thread-126284] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:38:35.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:38:35.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:38:35.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:38:35.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:38:35.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:38:35.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:38:01', tmtdew=27.18, humidity=14.51, cloud=0.0, wind=17.45, temperature=17.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:38:02', seeing=1.14, atlas_timestamp='2025-11-03T23:37:38.467', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010750000000001592, 0.03825000000000145, -0.008749999999999147, 0.1144999999999996, 0.09350000000000058, 0.03375000000000128, -0.04750000000000121, 0.006250000000001421, 0.054999999999999716, 0.04899999999999949, 0.10374999999999979, 0.06600000000000072, 0.08799999999999919, -0.05375000000000085, -0.04800000000000182, -0.05850000000000044, 0.060249999999999915, 0.08150000000000013, 0.14699999999999847, 0.08924999999999983, 0.14149999999999885, -0.36925000000000097, -0.03125, 0.05274999999999963, 0.04399999999999871, 0.17849999999999966, 0.10575000000000045, 0.23550000000000004, 0.2110000000000003, 0.03500000000000014, 0.0840000000000014, 0.0810000000000013, 0.09074999999999989], zp_timestamp='2025-11-03T23:36:00')
2025-11-04T01:38:35.382 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:38:35.395 [DEBUG] [Thread-126287] [transport.py] [_log()] starting thread (client mode): 0x1179b880
2025-11-04T01:38:35.395 [DEBUG] [Thread-126287] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:38:35.410 [DEBUG] [Thread-126287] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:38:35.410 [INFO] [Thread-126287] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:38:35.418 [DEBUG] [Thread-126287] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:38:35.418 [DEBUG] [Thread-126287] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:38:35.418 [DEBUG] [Thread-126287] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:38:35.418 [DEBUG] [Thread-126287] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:38:35.418 [DEBUG] [Thread-126287] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:38:35.418 [DEBUG] [Thread-126287] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:38:35.418 [DEBUG] [Thread-126287] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:38:35.418 [DEBUG] [Thread-126287] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:38:35.418 [DEBUG] [Thread-126287] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:38:35.418 [DEBUG] [Thread-126287] [transport.py] [_log()] client lang: <none>
2025-11-04T01:38:35.418 [DEBUG] [Thread-126287] [transport.py] [_log()] server lang: <none>
2025-11-04T01:38:35.418 [DEBUG] [Thread-126287] [transport.py] [_log()] kex follows: False
2025-11-04T01:38:35.418 [DEBUG] [Thread-126287] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:38:35.418 [DEBUG] [Thread-126287] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:38:35.418 [DEBUG] [Thread-126287] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:38:35.418 [DEBUG] [Thread-126287] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:38:35.418 [DEBUG] [Thread-126287] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:38:35.418 [DEBUG] [Thread-126287] [transport.py] [_log()] Compression: none
2025-11-04T01:38:35.418 [DEBUG] [Thread-126287] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:38:35.479 [DEBUG] [Thread-126287] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:38:35.479 [DEBUG] [Thread-126287] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:38:35.479 [DEBUG] [Thread-126287] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:38:35.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:38:35.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:38:35.536 [DEBUG] [Thread-126287] [transport.py] [_log()] userauth is OK
2025-11-04T01:38:35.536 [DEBUG] [Thread-126287] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:38:35.536 [DEBUG] [Thread-126287] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:38:35.536 [DEBUG] [Thread-126287] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:38:35.536 [DEBUG] [Thread-126287] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:38:35.551 [INFO] [Thread-126287] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:38:35.551 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:38:35.552 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:38:36.393 [DEBUG] [Thread-126287] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:38:36.393 [DEBUG] [Thread-126287] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:38:36.441 [DEBUG] [Thread-126287] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:38:36.441 [DEBUG] [Thread-126287] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:38:36.450 [DEBUG] [Thread-126287] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:38:36.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:38:36.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:38:36.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:38:36.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:38:36.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:38:36.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:38:36.484 [DEBUG] [Thread-126287] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:38:39.189 [DEBUG] [Thread-126289 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:38:45.885 [DEBUG] [Thread-126290 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:38:54.254 [DEBUG] [Thread-126291 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:39:06.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:39:06.506 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:39:06.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:39:07.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 38, 34), 27.06, 14.52, 0.0, 14.27, 16.96, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:39:07.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:38:34
2025-11-04T01:39:07.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:39:07.668 [DEBUG] [Thread-126292] [transport.py] [_log()] starting thread (client mode): 0x1179a740
2025-11-04T01:39:07.669 [DEBUG] [Thread-126292] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:39:07.681 [DEBUG] [Thread-126292] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:39:07.681 [INFO] [Thread-126292] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:39:07.684 [DEBUG] [Thread-126292] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:39:07.685 [DEBUG] [Thread-126292] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:39:07.685 [DEBUG] [Thread-126292] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:39:07.685 [DEBUG] [Thread-126292] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:39:07.685 [DEBUG] [Thread-126292] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:39:07.685 [DEBUG] [Thread-126292] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:39:07.685 [DEBUG] [Thread-126292] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:39:07.685 [DEBUG] [Thread-126292] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:39:07.685 [DEBUG] [Thread-126292] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:39:07.685 [DEBUG] [Thread-126292] [transport.py] [_log()] client lang: <none>
2025-11-04T01:39:07.685 [DEBUG] [Thread-126292] [transport.py] [_log()] server lang: <none>
2025-11-04T01:39:07.685 [DEBUG] [Thread-126292] [transport.py] [_log()] kex follows: False
2025-11-04T01:39:07.685 [DEBUG] [Thread-126292] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:39:07.685 [DEBUG] [Thread-126292] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:39:07.685 [DEBUG] [Thread-126292] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:39:07.685 [DEBUG] [Thread-126292] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:39:07.685 [DEBUG] [Thread-126292] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:39:07.685 [DEBUG] [Thread-126292] [transport.py] [_log()] Compression: none
2025-11-04T01:39:07.685 [DEBUG] [Thread-126292] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:39:07.712 [DEBUG] [Thread-126292] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:39:07.714 [DEBUG] [Thread-126292] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:39:07.715 [DEBUG] [Thread-126292] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:39:07.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:39:07.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:39:07.718 [DEBUG] [Thread-126292] [transport.py] [_log()] userauth is OK
2025-11-04T01:39:07.718 [DEBUG] [Thread-126292] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:39:07.718 [DEBUG] [Thread-126292] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:39:07.718 [DEBUG] [Thread-126292] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:39:07.718 [DEBUG] [Thread-126292] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:39:07.735 [INFO] [Thread-126292] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:39:07.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:39:08.378 [DEBUG] [Thread-126292] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:39:08.378 [DEBUG] [Thread-126292] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:39:08.379 [DEBUG] [Thread-126292] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:39:08.420 [DEBUG] [Thread-126292] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:39:08.420 [DEBUG] [Thread-126292] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:39:08.422 [DEBUG] [Thread-126292] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:39:08.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:39:08.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:39:08.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:39:08.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:39:08.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:39:08.444 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:39:08.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:39:08.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:39:08.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:39:08.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.985167 -999.00  +17.10  19.37     19   -6.10 1 1 1 1 1     0    0 22.31 -46.91 ZNESW 18.1 19.4 313.2 21.1 17.6 -23.9 17.4 -22.9 17.2 -22.7 17.4 -23.4
2025-11-04T01:39:08.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:39:08.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:39:08.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.985167
2025-11-04T01:39:08.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:39:08.457 [DEBUG] [Thread-126292] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:39:08.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:39:08.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:39:08.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:39:08.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:39:08.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:38:34', tmtdew=27.06, humidity=14.52, cloud=0.0, wind=14.27, temperature=16.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:38:35', seeing=1.14, atlas_timestamp='2025-11-03T23:38:38.429', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010750000000001592, 0.03825000000000145, -0.008749999999999147, 0.1144999999999996, 0.09350000000000058, 0.03375000000000128, -0.04750000000000121, 0.006250000000001421, 0.054999999999999716, 0.04899999999999949, 0.10374999999999979, 0.06600000000000072, 0.08799999999999919, -0.05375000000000085, -0.04800000000000182, -0.05850000000000044, 0.060249999999999915, 0.08150000000000013, 0.14699999999999847, 0.08924999999999983, 0.14149999999999885, -0.36925000000000097, -0.03125, 0.05274999999999963, 0.04399999999999871, 0.17849999999999966, 0.10575000000000045, 0.23550000000000004, 0.2110000000000003, 0.03500000000000014, 0.0840000000000014, 0.0810000000000013, 0.09074999999999989], zp_timestamp='2025-11-03T23:36:00')
2025-11-04T01:39:08.533 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:39:08.545 [DEBUG] [Thread-126295] [transport.py] [_log()] starting thread (client mode): 0x11798280
2025-11-04T01:39:08.545 [DEBUG] [Thread-126295] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:39:08.561 [DEBUG] [Thread-126295] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:39:08.561 [INFO] [Thread-126295] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:39:08.568 [DEBUG] [Thread-126295] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:39:08.569 [DEBUG] [Thread-126295] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:39:08.569 [DEBUG] [Thread-126295] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:39:08.569 [DEBUG] [Thread-126295] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:39:08.569 [DEBUG] [Thread-126295] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:39:08.569 [DEBUG] [Thread-126295] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:39:08.569 [DEBUG] [Thread-126295] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:39:08.569 [DEBUG] [Thread-126295] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:39:08.569 [DEBUG] [Thread-126295] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:39:08.569 [DEBUG] [Thread-126295] [transport.py] [_log()] client lang: <none>
2025-11-04T01:39:08.569 [DEBUG] [Thread-126295] [transport.py] [_log()] server lang: <none>
2025-11-04T01:39:08.569 [DEBUG] [Thread-126295] [transport.py] [_log()] kex follows: False
2025-11-04T01:39:08.569 [DEBUG] [Thread-126295] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:39:08.569 [DEBUG] [Thread-126295] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:39:08.569 [DEBUG] [Thread-126295] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:39:08.569 [DEBUG] [Thread-126295] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:39:08.569 [DEBUG] [Thread-126295] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:39:08.569 [DEBUG] [Thread-126295] [transport.py] [_log()] Compression: none
2025-11-04T01:39:08.569 [DEBUG] [Thread-126295] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:39:08.625 [DEBUG] [Thread-126295] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:39:08.626 [DEBUG] [Thread-126295] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:39:08.626 [DEBUG] [Thread-126295] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:39:08.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:39:08.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:39:08.683 [DEBUG] [Thread-126295] [transport.py] [_log()] userauth is OK
2025-11-04T01:39:08.683 [DEBUG] [Thread-126295] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:39:08.683 [DEBUG] [Thread-126295] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:39:08.683 [DEBUG] [Thread-126295] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:39:08.684 [DEBUG] [Thread-126295] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:39:08.698 [INFO] [Thread-126295] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:39:08.698 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:39:08.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:39:09.296 [DEBUG] [Thread-126297 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:39:09.530 [DEBUG] [Thread-126295] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:39:09.530 [DEBUG] [Thread-126295] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:39:09.578 [DEBUG] [Thread-126295] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:39:09.578 [DEBUG] [Thread-126295] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:39:09.586 [DEBUG] [Thread-126295] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:39:09.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:39:09.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:39:09.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:39:09.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:39:09.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:39:09.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:39:09.623 [DEBUG] [Thread-126295] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:39:24.353 [DEBUG] [Thread-126298 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:39:33.813 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:39:33.814 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:39:39.383 [DEBUG] [Thread-126299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:39:39.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:39:39.645 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:39:39.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:39:40.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 39, 7), 27.0, 14.59, 0.0, 14.38, 16.91, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:39:40.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:39:07
2025-11-04T01:39:40.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:39:40.696 [DEBUG] [Thread-126300] [transport.py] [_log()] starting thread (client mode): 0x1179b820
2025-11-04T01:39:40.696 [DEBUG] [Thread-126300] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:39:40.716 [DEBUG] [Thread-126300] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:39:40.716 [INFO] [Thread-126300] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:39:40.719 [DEBUG] [Thread-126300] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:39:40.719 [DEBUG] [Thread-126300] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:39:40.719 [DEBUG] [Thread-126300] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:39:40.719 [DEBUG] [Thread-126300] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:39:40.719 [DEBUG] [Thread-126300] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:39:40.719 [DEBUG] [Thread-126300] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:39:40.719 [DEBUG] [Thread-126300] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:39:40.719 [DEBUG] [Thread-126300] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:39:40.719 [DEBUG] [Thread-126300] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:39:40.719 [DEBUG] [Thread-126300] [transport.py] [_log()] client lang: <none>
2025-11-04T01:39:40.719 [DEBUG] [Thread-126300] [transport.py] [_log()] server lang: <none>
2025-11-04T01:39:40.719 [DEBUG] [Thread-126300] [transport.py] [_log()] kex follows: False
2025-11-04T01:39:40.719 [DEBUG] [Thread-126300] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:39:40.719 [DEBUG] [Thread-126300] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:39:40.719 [DEBUG] [Thread-126300] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:39:40.719 [DEBUG] [Thread-126300] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:39:40.719 [DEBUG] [Thread-126300] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:39:40.719 [DEBUG] [Thread-126300] [transport.py] [_log()] Compression: none
2025-11-04T01:39:40.719 [DEBUG] [Thread-126300] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:39:40.735 [DEBUG] [Thread-126300] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:39:40.735 [DEBUG] [Thread-126300] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:39:40.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:39:40.736 [DEBUG] [Thread-126300] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:39:40.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:39:40.736 [DEBUG] [Thread-126300] [transport.py] [_log()] userauth is OK
2025-11-04T01:39:40.736 [DEBUG] [Thread-126300] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:39:40.736 [DEBUG] [Thread-126300] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:39:40.737 [DEBUG] [Thread-126300] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:39:40.737 [DEBUG] [Thread-126300] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:39:40.756 [INFO] [Thread-126300] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:39:40.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:39:41.416 [DEBUG] [Thread-126300] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:39:41.416 [DEBUG] [Thread-126300] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:39:41.416 [DEBUG] [Thread-126300] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:39:41.457 [DEBUG] [Thread-126300] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:39:41.457 [DEBUG] [Thread-126300] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:39:41.459 [DEBUG] [Thread-126300] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:39:41.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:39:41.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:39:41.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:39:41.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:39:41.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:39:41.479 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:39:41.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:39:41.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:39:41.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:39:41.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.985515 -999.00  +17.10  15.51     19   -6.00 1 1 1 1 1     0    0 21.98 -44.57 ZNESW 16.0 15.5 309.0 20.9 17.5 -24.0 17.4 -22.8 17.2 -22.6 17.4 -23.4
2025-11-04T01:39:41.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:39:41.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:39:41.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.985515
2025-11-04T01:39:41.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:39:41.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:39:41.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:39:41.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:39:41.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:39:41.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:39:07', tmtdew=27.0, humidity=14.59, cloud=0.0, wind=14.38, temperature=16.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:39:07', seeing=1.14, atlas_timestamp='2025-11-03T23:39:08.496', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010750000000001592, 0.03825000000000145, -0.008749999999999147, 0.1144999999999996, 0.09350000000000058, 0.03375000000000128, -0.04750000000000121, 0.006250000000001421, 0.054999999999999716, 0.04899999999999949, 0.10374999999999979, 0.06600000000000072, 0.08799999999999919, -0.05375000000000085, -0.04800000000000182, -0.05850000000000044, 0.060249999999999915, 0.08150000000000013, 0.14699999999999847, 0.08924999999999983, 0.14149999999999885, -0.36925000000000097, -0.03125, 0.05274999999999963, 0.04399999999999871, 0.17849999999999966, 0.10575000000000045, 0.23550000000000004, 0.2110000000000003, 0.03500000000000014, 0.0840000000000014, 0.0810000000000013, 0.09074999999999989], zp_timestamp='2025-11-03T23:36:00')
2025-11-04T01:39:41.480 [DEBUG] [Thread-126300] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:39:41.570 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:39:41.582 [DEBUG] [Thread-126303] [transport.py] [_log()] starting thread (client mode): 0x117982e0
2025-11-04T01:39:41.582 [DEBUG] [Thread-126303] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:39:41.597 [DEBUG] [Thread-126303] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:39:41.597 [INFO] [Thread-126303] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:39:41.605 [DEBUG] [Thread-126303] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:39:41.605 [DEBUG] [Thread-126303] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:39:41.605 [DEBUG] [Thread-126303] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:39:41.605 [DEBUG] [Thread-126303] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:39:41.605 [DEBUG] [Thread-126303] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:39:41.605 [DEBUG] [Thread-126303] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:39:41.605 [DEBUG] [Thread-126303] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:39:41.605 [DEBUG] [Thread-126303] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:39:41.605 [DEBUG] [Thread-126303] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:39:41.605 [DEBUG] [Thread-126303] [transport.py] [_log()] client lang: <none>
2025-11-04T01:39:41.605 [DEBUG] [Thread-126303] [transport.py] [_log()] server lang: <none>
2025-11-04T01:39:41.606 [DEBUG] [Thread-126303] [transport.py] [_log()] kex follows: False
2025-11-04T01:39:41.606 [DEBUG] [Thread-126303] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:39:41.606 [DEBUG] [Thread-126303] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:39:41.606 [DEBUG] [Thread-126303] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:39:41.606 [DEBUG] [Thread-126303] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:39:41.606 [DEBUG] [Thread-126303] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:39:41.606 [DEBUG] [Thread-126303] [transport.py] [_log()] Compression: none
2025-11-04T01:39:41.606 [DEBUG] [Thread-126303] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:39:41.661 [DEBUG] [Thread-126303] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:39:41.662 [DEBUG] [Thread-126303] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:39:41.662 [DEBUG] [Thread-126303] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:39:41.662 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:39:41.662 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:39:41.720 [DEBUG] [Thread-126303] [transport.py] [_log()] userauth is OK
2025-11-04T01:39:41.720 [DEBUG] [Thread-126303] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:39:41.720 [DEBUG] [Thread-126303] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:39:41.720 [DEBUG] [Thread-126303] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:39:41.720 [DEBUG] [Thread-126303] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:39:41.738 [INFO] [Thread-126303] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:39:41.738 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:39:41.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:39:42.564 [DEBUG] [Thread-126303] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:39:42.564 [DEBUG] [Thread-126303] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:39:42.611 [DEBUG] [Thread-126303] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:39:42.611 [DEBUG] [Thread-126303] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:39:42.619 [DEBUG] [Thread-126303] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:39:42.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:39:42.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:39:42.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:39:42.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:39:42.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:39:42.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:39:42.652 [DEBUG] [Thread-126303] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:39:46.228 [DEBUG] [Thread-126305 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:39:54.411 [DEBUG] [Thread-126306 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:40:09.515 [DEBUG] [Thread-126307 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:40:12.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:40:12.675 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:40:12.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:40:13.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 39, 39), 27.07, 14.56, 0.0, 17.68, 16.86, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:40:13.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:39:39
2025-11-04T01:40:13.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:40:14.135 [DEBUG] [Thread-126308] [transport.py] [_log()] starting thread (client mode): 0x11798160
2025-11-04T01:40:14.136 [DEBUG] [Thread-126308] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:40:14.148 [DEBUG] [Thread-126308] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:40:14.148 [INFO] [Thread-126308] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:40:14.152 [DEBUG] [Thread-126308] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:40:14.152 [DEBUG] [Thread-126308] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:40:14.152 [DEBUG] [Thread-126308] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:40:14.152 [DEBUG] [Thread-126308] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:40:14.152 [DEBUG] [Thread-126308] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:40:14.152 [DEBUG] [Thread-126308] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:40:14.152 [DEBUG] [Thread-126308] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:40:14.152 [DEBUG] [Thread-126308] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:40:14.152 [DEBUG] [Thread-126308] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:40:14.152 [DEBUG] [Thread-126308] [transport.py] [_log()] client lang: <none>
2025-11-04T01:40:14.152 [DEBUG] [Thread-126308] [transport.py] [_log()] server lang: <none>
2025-11-04T01:40:14.152 [DEBUG] [Thread-126308] [transport.py] [_log()] kex follows: False
2025-11-04T01:40:14.152 [DEBUG] [Thread-126308] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:40:14.153 [DEBUG] [Thread-126308] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:40:14.153 [DEBUG] [Thread-126308] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:40:14.153 [DEBUG] [Thread-126308] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:40:14.153 [DEBUG] [Thread-126308] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:40:14.153 [DEBUG] [Thread-126308] [transport.py] [_log()] Compression: none
2025-11-04T01:40:14.153 [DEBUG] [Thread-126308] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:40:14.182 [DEBUG] [Thread-126308] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:40:14.186 [DEBUG] [Thread-126308] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:40:14.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:40:14.188 [DEBUG] [Thread-126308] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:40:14.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:40:14.190 [DEBUG] [Thread-126308] [transport.py] [_log()] userauth is OK
2025-11-04T01:40:14.190 [DEBUG] [Thread-126308] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:40:14.190 [DEBUG] [Thread-126308] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:40:14.190 [DEBUG] [Thread-126308] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:40:14.190 [DEBUG] [Thread-126308] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:40:14.223 [INFO] [Thread-126308] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:40:14.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:40:14.875 [DEBUG] [Thread-126308] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:40:14.875 [DEBUG] [Thread-126308] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:40:14.876 [DEBUG] [Thread-126308] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:40:14.916 [DEBUG] [Thread-126308] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:40:14.917 [DEBUG] [Thread-126308] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:40:14.919 [DEBUG] [Thread-126308] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:40:14.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:40:14.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:40:14.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:40:14.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:40:14.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:40:14.940 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:40:14.940 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:40:14.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:40:14.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:40:14.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.985862 -999.00  +17.10  17.89     19   -6.10 1 1 1 1 1     0    0 21.82 -41.36 ZNESW 19.9 17.9 310.8 21.5 17.5 -23.9 17.4 -22.8 17.1 -22.5 17.4 -23.4
2025-11-04T01:40:14.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:40:14.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:40:14.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.985862
2025-11-04T01:40:14.947 [DEBUG] [Thread-126308] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:40:14.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:40:14.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:40:14.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:40:14.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:40:14.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:40:14.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:39:39', tmtdew=27.07, humidity=14.56, cloud=0.0, wind=17.68, temperature=16.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:39:40', seeing=1.31, atlas_timestamp='2025-11-03T23:39:38.477', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010750000000001592, 0.03825000000000145, -0.008749999999999147, 0.1144999999999996, 0.09350000000000058, 0.03375000000000128, -0.04750000000000121, 0.006250000000001421, 0.054999999999999716, 0.04899999999999949, 0.10374999999999979, 0.06600000000000072, 0.08799999999999919, -0.05375000000000085, -0.04800000000000182, -0.05850000000000044, 0.060249999999999915, 0.08150000000000013, 0.14699999999999847, 0.08924999999999983, 0.14149999999999885, -0.36925000000000097, -0.03125, 0.05274999999999963, 0.04399999999999871, 0.17849999999999966, 0.10575000000000045, 0.23550000000000004, 0.2110000000000003, 0.03500000000000014, 0.0840000000000014, 0.0810000000000013, 0.09074999999999989], zp_timestamp='2025-11-03T23:36:00')
2025-11-04T01:40:15.033 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:40:15.046 [DEBUG] [Thread-126311] [transport.py] [_log()] starting thread (client mode): 0x1179bac0
2025-11-04T01:40:15.047 [DEBUG] [Thread-126311] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:40:15.061 [DEBUG] [Thread-126311] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:40:15.061 [INFO] [Thread-126311] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:40:15.070 [DEBUG] [Thread-126311] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:40:15.070 [DEBUG] [Thread-126311] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:40:15.070 [DEBUG] [Thread-126311] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:40:15.070 [DEBUG] [Thread-126311] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:40:15.070 [DEBUG] [Thread-126311] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:40:15.070 [DEBUG] [Thread-126311] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:40:15.070 [DEBUG] [Thread-126311] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:40:15.070 [DEBUG] [Thread-126311] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:40:15.070 [DEBUG] [Thread-126311] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:40:15.070 [DEBUG] [Thread-126311] [transport.py] [_log()] client lang: <none>
2025-11-04T01:40:15.070 [DEBUG] [Thread-126311] [transport.py] [_log()] server lang: <none>
2025-11-04T01:40:15.070 [DEBUG] [Thread-126311] [transport.py] [_log()] kex follows: False
2025-11-04T01:40:15.070 [DEBUG] [Thread-126311] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:40:15.070 [DEBUG] [Thread-126311] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:40:15.070 [DEBUG] [Thread-126311] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:40:15.070 [DEBUG] [Thread-126311] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:40:15.070 [DEBUG] [Thread-126311] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:40:15.070 [DEBUG] [Thread-126311] [transport.py] [_log()] Compression: none
2025-11-04T01:40:15.070 [DEBUG] [Thread-126311] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:40:15.128 [DEBUG] [Thread-126311] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:40:15.128 [DEBUG] [Thread-126311] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:40:15.128 [DEBUG] [Thread-126311] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:40:15.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:40:15.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:40:15.188 [DEBUG] [Thread-126311] [transport.py] [_log()] userauth is OK
2025-11-04T01:40:15.189 [DEBUG] [Thread-126311] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:40:15.189 [DEBUG] [Thread-126311] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:40:15.189 [DEBUG] [Thread-126311] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:40:15.189 [DEBUG] [Thread-126311] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:40:15.205 [INFO] [Thread-126311] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:40:15.205 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:40:15.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:40:16.020 [DEBUG] [Thread-126311] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:40:16.020 [DEBUG] [Thread-126311] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:40:16.069 [DEBUG] [Thread-126311] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:40:16.069 [DEBUG] [Thread-126311] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:40:16.079 [DEBUG] [Thread-126311] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:40:16.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:40:16.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:40:16.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:40:16.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:40:16.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:40:16.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:40:16.123 [DEBUG] [Thread-126311] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:40:24.563 [DEBUG] [Thread-126313 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:40:34.015 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:40:34.015 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:40:39.685 [DEBUG] [Thread-126314 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:40:46.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:40:46.143 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:40:46.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:40:46.571 [DEBUG] [Thread-126315 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:40:47.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 40, 12), 27.04, 14.59, 0.0, 17.38, 16.86, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:40:47.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:40:12
2025-11-04T01:40:47.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:40:47.519 [DEBUG] [Thread-126316] [transport.py] [_log()] starting thread (client mode): 0x117bdff0
2025-11-04T01:40:47.520 [DEBUG] [Thread-126316] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:40:47.534 [DEBUG] [Thread-126316] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:40:47.534 [INFO] [Thread-126316] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:40:47.537 [DEBUG] [Thread-126316] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:40:47.538 [DEBUG] [Thread-126316] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:40:47.538 [DEBUG] [Thread-126316] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:40:47.538 [DEBUG] [Thread-126316] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:40:47.538 [DEBUG] [Thread-126316] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:40:47.538 [DEBUG] [Thread-126316] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:40:47.538 [DEBUG] [Thread-126316] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:40:47.538 [DEBUG] [Thread-126316] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:40:47.538 [DEBUG] [Thread-126316] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:40:47.538 [DEBUG] [Thread-126316] [transport.py] [_log()] client lang: <none>
2025-11-04T01:40:47.538 [DEBUG] [Thread-126316] [transport.py] [_log()] server lang: <none>
2025-11-04T01:40:47.538 [DEBUG] [Thread-126316] [transport.py] [_log()] kex follows: False
2025-11-04T01:40:47.538 [DEBUG] [Thread-126316] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:40:47.538 [DEBUG] [Thread-126316] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:40:47.538 [DEBUG] [Thread-126316] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:40:47.538 [DEBUG] [Thread-126316] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:40:47.538 [DEBUG] [Thread-126316] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:40:47.538 [DEBUG] [Thread-126316] [transport.py] [_log()] Compression: none
2025-11-04T01:40:47.538 [DEBUG] [Thread-126316] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:40:47.571 [DEBUG] [Thread-126316] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:40:47.575 [DEBUG] [Thread-126316] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:40:47.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:40:47.577 [DEBUG] [Thread-126316] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:40:47.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:40:47.579 [DEBUG] [Thread-126316] [transport.py] [_log()] userauth is OK
2025-11-04T01:40:47.579 [DEBUG] [Thread-126316] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:40:47.579 [DEBUG] [Thread-126316] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:40:47.579 [DEBUG] [Thread-126316] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:40:47.579 [DEBUG] [Thread-126316] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:40:47.608 [INFO] [Thread-126316] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:40:47.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:40:48.230 [DEBUG] [Thread-126316] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:40:48.231 [DEBUG] [Thread-126316] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:40:48.231 [DEBUG] [Thread-126316] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:40:48.272 [DEBUG] [Thread-126316] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:40:48.272 [DEBUG] [Thread-126316] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:40:48.274 [DEBUG] [Thread-126316] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:40:48.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:40:48.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:40:48.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:40:48.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:40:48.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:40:48.295 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:40:48.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:40:48.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:40:48.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:40:48.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.986209 -999.00  +17.20  18.86     19   -6.00 1 1 1 1 1     0    0 21.95 -41.96 ZNESW 17.3 18.9 313.2 22.2 17.5 -23.8 17.4 -22.8 17.1 -22.4 17.4 -23.3
2025-11-04T01:40:48.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:40:48.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:40:48.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.986209
2025-11-04T01:40:48.302 [DEBUG] [Thread-126316] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:40:48.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:40:48.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:40:48.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:40:48.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:40:48.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:40:48.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:40:12', tmtdew=27.04, humidity=14.59, cloud=0.0, wind=17.38, temperature=16.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:40:45', seeing=1.18, atlas_timestamp='2025-11-03T23:40:08.458', atlas_cloud=1, atlas_rain=1, zp_data=[0.0417500000000004, 0.08225000000000016, 0.07725000000000115, 0.15499999999999936, 0.1565000000000012, 0.10575000000000045, 0.06799999999999962, 0.035250000000001336, 0.08749999999999858, 0.11700000000000088, 0.16525000000000034, 0.11299999999999955, 0.18399999999999928, -0.23925000000000018, 0.010500000000000398, 0.0024999999999995026, 0.09424999999999883, 0.1095000000000006, 0.21099999999999852, 0.12674999999999947, 0.17449999999999832, -0.790750000000001, 0.09925000000000139, 0.12175000000000047, 0.09499999999999886, 0.21700000000000053, 0.13974999999999937, 0.24249999999999972, 0.33750000000000036, 0.0920000000000023, 0.20400000000000063, 0.13000000000000078, 0.14324999999999832], zp_timestamp='2025-11-03T23:39:00')
2025-11-04T01:40:48.395 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:40:48.410 [DEBUG] [Thread-126319] [transport.py] [_log()] starting thread (client mode): 0x117bf160
2025-11-04T01:40:48.410 [DEBUG] [Thread-126319] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:40:48.426 [DEBUG] [Thread-126319] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:40:48.426 [INFO] [Thread-126319] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:40:48.434 [DEBUG] [Thread-126319] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:40:48.434 [DEBUG] [Thread-126319] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:40:48.434 [DEBUG] [Thread-126319] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:40:48.434 [DEBUG] [Thread-126319] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:40:48.434 [DEBUG] [Thread-126319] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:40:48.434 [DEBUG] [Thread-126319] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:40:48.434 [DEBUG] [Thread-126319] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:40:48.434 [DEBUG] [Thread-126319] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:40:48.434 [DEBUG] [Thread-126319] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:40:48.434 [DEBUG] [Thread-126319] [transport.py] [_log()] client lang: <none>
2025-11-04T01:40:48.434 [DEBUG] [Thread-126319] [transport.py] [_log()] server lang: <none>
2025-11-04T01:40:48.434 [DEBUG] [Thread-126319] [transport.py] [_log()] kex follows: False
2025-11-04T01:40:48.435 [DEBUG] [Thread-126319] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:40:48.435 [DEBUG] [Thread-126319] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:40:48.435 [DEBUG] [Thread-126319] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:40:48.435 [DEBUG] [Thread-126319] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:40:48.435 [DEBUG] [Thread-126319] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:40:48.435 [DEBUG] [Thread-126319] [transport.py] [_log()] Compression: none
2025-11-04T01:40:48.435 [DEBUG] [Thread-126319] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:40:48.494 [DEBUG] [Thread-126319] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:40:48.494 [DEBUG] [Thread-126319] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:40:48.495 [DEBUG] [Thread-126319] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:40:48.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:40:48.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:40:48.554 [DEBUG] [Thread-126319] [transport.py] [_log()] userauth is OK
2025-11-04T01:40:48.554 [DEBUG] [Thread-126319] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:40:48.554 [DEBUG] [Thread-126319] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:40:48.554 [DEBUG] [Thread-126319] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:40:48.554 [DEBUG] [Thread-126319] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:40:48.576 [INFO] [Thread-126319] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:40:48.577 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:40:48.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:40:49.486 [DEBUG] [Thread-126319] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:40:49.486 [DEBUG] [Thread-126319] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:40:49.533 [DEBUG] [Thread-126319] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:40:49.533 [DEBUG] [Thread-126319] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:40:49.542 [DEBUG] [Thread-126319] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:40:49.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:40:49.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:40:49.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:40:49.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:40:49.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:40:49.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:40:49.586 [DEBUG] [Thread-126319] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:40:54.725 [DEBUG] [Thread-126321 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:41:09.819 [DEBUG] [Thread-126322 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:41:19.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:41:19.609 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:41:19.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:41:20.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 40, 44), 26.96, 14.64, 0.0, 16.13, 16.87, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:41:20.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:40:44
2025-11-04T01:41:20.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:41:21.018 [DEBUG] [Thread-126323] [transport.py] [_log()] starting thread (client mode): 0x1179ab00
2025-11-04T01:41:21.018 [DEBUG] [Thread-126323] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:41:21.032 [DEBUG] [Thread-126323] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:41:21.032 [INFO] [Thread-126323] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:41:21.036 [DEBUG] [Thread-126323] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:41:21.036 [DEBUG] [Thread-126323] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:41:21.036 [DEBUG] [Thread-126323] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:41:21.036 [DEBUG] [Thread-126323] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:41:21.036 [DEBUG] [Thread-126323] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:41:21.036 [DEBUG] [Thread-126323] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:41:21.036 [DEBUG] [Thread-126323] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:41:21.036 [DEBUG] [Thread-126323] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:41:21.036 [DEBUG] [Thread-126323] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:41:21.036 [DEBUG] [Thread-126323] [transport.py] [_log()] client lang: <none>
2025-11-04T01:41:21.036 [DEBUG] [Thread-126323] [transport.py] [_log()] server lang: <none>
2025-11-04T01:41:21.036 [DEBUG] [Thread-126323] [transport.py] [_log()] kex follows: False
2025-11-04T01:41:21.036 [DEBUG] [Thread-126323] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:41:21.036 [DEBUG] [Thread-126323] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:41:21.036 [DEBUG] [Thread-126323] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:41:21.036 [DEBUG] [Thread-126323] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:41:21.036 [DEBUG] [Thread-126323] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:41:21.036 [DEBUG] [Thread-126323] [transport.py] [_log()] Compression: none
2025-11-04T01:41:21.036 [DEBUG] [Thread-126323] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:41:21.053 [DEBUG] [Thread-126323] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:41:21.054 [DEBUG] [Thread-126323] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:41:21.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:41:21.054 [DEBUG] [Thread-126323] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:41:21.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:41:21.055 [DEBUG] [Thread-126323] [transport.py] [_log()] userauth is OK
2025-11-04T01:41:21.055 [DEBUG] [Thread-126323] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:41:21.055 [DEBUG] [Thread-126323] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:41:21.056 [DEBUG] [Thread-126323] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:41:21.056 [DEBUG] [Thread-126323] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:41:21.065 [INFO] [Thread-126323] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:41:21.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:41:21.695 [DEBUG] [Thread-126323] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:41:21.696 [DEBUG] [Thread-126323] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:41:21.698 [DEBUG] [Thread-126323] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:41:21.737 [DEBUG] [Thread-126323] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:41:21.737 [DEBUG] [Thread-126323] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:41:21.741 [DEBUG] [Thread-126323] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:41:21.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:41:21.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:41:21.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:41:21.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:41:21.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:41:21.764 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:41:21.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:41:21.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:41:21.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:41:21.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.986557 -999.00  +17.10  19.09     19   -6.10 1 1 1 1 1     0    0 22.13 -41.54 ZNESW 16.5 19.1 319.2 22.4 17.5 -23.8 17.4 -22.6 17.1 -22.4 17.4 -23.4
2025-11-04T01:41:21.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:41:21.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:41:21.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.986557
2025-11-04T01:41:21.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:41:21.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:41:21.768 [DEBUG] [Thread-126323] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:41:21.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:41:21.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:41:21.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:41:21.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:40:44', tmtdew=26.96, humidity=14.64, cloud=0.0, wind=16.13, temperature=16.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:41:18', seeing=1.25, atlas_timestamp='2025-11-03T23:40:38.525', atlas_cloud=1, atlas_rain=1, zp_data=[0.0417500000000004, 0.08225000000000016, 0.07725000000000115, 0.15499999999999936, 0.1565000000000012, 0.10575000000000045, 0.06799999999999962, 0.035250000000001336, 0.08749999999999858, 0.11700000000000088, 0.16525000000000034, 0.11299999999999955, 0.18399999999999928, -0.23925000000000018, 0.010500000000000398, 0.0024999999999995026, 0.09424999999999883, 0.1095000000000006, 0.21099999999999852, 0.12674999999999947, 0.17449999999999832, -0.790750000000001, 0.09925000000000139, 0.12175000000000047, 0.09499999999999886, 0.21700000000000053, 0.13974999999999937, 0.24249999999999972, 0.33750000000000036, 0.0920000000000023, 0.20400000000000063, 0.13000000000000078, 0.14324999999999832], zp_timestamp='2025-11-03T23:39:00')
2025-11-04T01:41:21.855 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:41:21.866 [DEBUG] [Thread-126326] [transport.py] [_log()] starting thread (client mode): 0x1179ad40
2025-11-04T01:41:21.866 [DEBUG] [Thread-126326] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:41:21.882 [DEBUG] [Thread-126326] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:41:21.882 [INFO] [Thread-126326] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:41:21.896 [DEBUG] [Thread-126326] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:41:21.896 [DEBUG] [Thread-126326] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:41:21.896 [DEBUG] [Thread-126326] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:41:21.896 [DEBUG] [Thread-126326] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:41:21.896 [DEBUG] [Thread-126326] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:41:21.896 [DEBUG] [Thread-126326] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:41:21.896 [DEBUG] [Thread-126326] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:41:21.896 [DEBUG] [Thread-126326] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:41:21.897 [DEBUG] [Thread-126326] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:41:21.897 [DEBUG] [Thread-126326] [transport.py] [_log()] client lang: <none>
2025-11-04T01:41:21.897 [DEBUG] [Thread-126326] [transport.py] [_log()] server lang: <none>
2025-11-04T01:41:21.897 [DEBUG] [Thread-126326] [transport.py] [_log()] kex follows: False
2025-11-04T01:41:21.897 [DEBUG] [Thread-126326] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:41:21.897 [DEBUG] [Thread-126326] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:41:21.897 [DEBUG] [Thread-126326] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:41:21.897 [DEBUG] [Thread-126326] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:41:21.897 [DEBUG] [Thread-126326] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:41:21.897 [DEBUG] [Thread-126326] [transport.py] [_log()] Compression: none
2025-11-04T01:41:21.897 [DEBUG] [Thread-126326] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:41:21.960 [DEBUG] [Thread-126326] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:41:21.961 [DEBUG] [Thread-126326] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:41:21.962 [DEBUG] [Thread-126326] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:41:21.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:41:21.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:41:22.020 [DEBUG] [Thread-126326] [transport.py] [_log()] userauth is OK
2025-11-04T01:41:22.020 [DEBUG] [Thread-126326] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:41:22.021 [DEBUG] [Thread-126326] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:41:22.021 [DEBUG] [Thread-126326] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:41:22.021 [DEBUG] [Thread-126326] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:41:22.040 [INFO] [Thread-126326] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:41:22.040 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:41:22.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:41:22.895 [DEBUG] [Thread-126326] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:41:22.895 [DEBUG] [Thread-126326] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:41:22.938 [DEBUG] [Thread-126326] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:41:22.938 [DEBUG] [Thread-126326] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:41:22.949 [DEBUG] [Thread-126326] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:41:22.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:41:22.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:41:22.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:41:22.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:41:22.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:41:22.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:41:22.990 [DEBUG] [Thread-126326] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:41:24.851 [DEBUG] [Thread-126328 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:41:34.215 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:41:34.216 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:41:39.899 [DEBUG] [Thread-126329 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:41:46.936 [DEBUG] [Thread-126330 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:41:52.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:41:52.992 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:41:53.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:41:53.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 41, 18), 26.97, 14.62, 0.0, 15.86, 16.86, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:41:53.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:41:18
2025-11-04T01:41:54.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:41:54.209 [DEBUG] [Thread-126331] [transport.py] [_log()] starting thread (client mode): 0x117986a0
2025-11-04T01:41:54.209 [DEBUG] [Thread-126331] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:41:54.223 [DEBUG] [Thread-126331] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:41:54.223 [INFO] [Thread-126331] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:41:54.226 [DEBUG] [Thread-126331] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:41:54.226 [DEBUG] [Thread-126331] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:41:54.226 [DEBUG] [Thread-126331] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:41:54.227 [DEBUG] [Thread-126331] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:41:54.227 [DEBUG] [Thread-126331] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:41:54.227 [DEBUG] [Thread-126331] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:41:54.227 [DEBUG] [Thread-126331] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:41:54.227 [DEBUG] [Thread-126331] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:41:54.227 [DEBUG] [Thread-126331] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:41:54.227 [DEBUG] [Thread-126331] [transport.py] [_log()] client lang: <none>
2025-11-04T01:41:54.227 [DEBUG] [Thread-126331] [transport.py] [_log()] server lang: <none>
2025-11-04T01:41:54.227 [DEBUG] [Thread-126331] [transport.py] [_log()] kex follows: False
2025-11-04T01:41:54.227 [DEBUG] [Thread-126331] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:41:54.228 [DEBUG] [Thread-126331] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:41:54.228 [DEBUG] [Thread-126331] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:41:54.228 [DEBUG] [Thread-126331] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:41:54.228 [DEBUG] [Thread-126331] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:41:54.228 [DEBUG] [Thread-126331] [transport.py] [_log()] Compression: none
2025-11-04T01:41:54.228 [DEBUG] [Thread-126331] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:41:54.250 [DEBUG] [Thread-126331] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:41:54.252 [DEBUG] [Thread-126331] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:41:54.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:41:54.254 [DEBUG] [Thread-126331] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:41:54.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:41:54.293 [DEBUG] [Thread-126331] [transport.py] [_log()] userauth is OK
2025-11-04T01:41:54.293 [DEBUG] [Thread-126331] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:41:54.294 [DEBUG] [Thread-126331] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:41:54.294 [DEBUG] [Thread-126331] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:41:54.294 [DEBUG] [Thread-126331] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:41:54.330 [INFO] [Thread-126331] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:41:54.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:41:54.930 [DEBUG] [Thread-126333 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:41:54.989 [DEBUG] [Thread-126331] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:41:54.989 [DEBUG] [Thread-126331] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:41:54.990 [DEBUG] [Thread-126331] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:41:55.030 [DEBUG] [Thread-126331] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:41:55.030 [DEBUG] [Thread-126331] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:41:55.033 [DEBUG] [Thread-126331] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:41:55.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:41:55.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:41:55.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:41:55.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:41:55.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:41:55.051 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:41:55.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:41:55.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:41:55.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:41:55.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.986903 -999.00  +17.10  18.51     19   -6.00 1 1 1 1 1     0    0 22.15 -43.26 ZNESW 18.5 18.5 316.4 20.5 17.4 -23.7 17.3 -22.8 17.1 -22.4 17.4 -23.3
2025-11-04T01:41:55.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:41:55.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:41:55.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.986903
2025-11-04T01:41:55.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:41:55.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:41:55.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:41:55.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:41:55.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:41:55.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:41:18', tmtdew=26.97, humidity=14.62, cloud=0.0, wind=15.86, temperature=16.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:41:51', seeing=1.25, atlas_timestamp='2025-11-03T23:41:08.419', atlas_cloud=1, atlas_rain=1, zp_data=[0.0417500000000004, 0.08225000000000016, 0.07725000000000115, 0.15499999999999936, 0.1565000000000012, 0.10575000000000045, 0.06799999999999962, 0.035250000000001336, 0.08749999999999858, 0.11700000000000088, 0.16525000000000034, 0.11299999999999955, 0.18399999999999928, -0.23925000000000018, 0.010500000000000398, 0.0024999999999995026, 0.09424999999999883, 0.1095000000000006, 0.21099999999999852, 0.12674999999999947, 0.17449999999999832, -0.790750000000001, 0.09925000000000139, 0.12175000000000047, 0.09499999999999886, 0.21700000000000053, 0.13974999999999937, 0.24249999999999972, 0.33750000000000036, 0.0920000000000023, 0.20400000000000063, 0.13000000000000078, 0.14324999999999832], zp_timestamp='2025-11-03T23:39:00')
2025-11-04T01:41:55.054 [DEBUG] [Thread-126331] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:41:55.127 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:41:55.139 [DEBUG] [Thread-126335] [transport.py] [_log()] starting thread (client mode): 0x117bfc40
2025-11-04T01:41:55.139 [DEBUG] [Thread-126335] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:41:55.155 [DEBUG] [Thread-126335] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:41:55.155 [INFO] [Thread-126335] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:41:55.164 [DEBUG] [Thread-126335] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:41:55.164 [DEBUG] [Thread-126335] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:41:55.164 [DEBUG] [Thread-126335] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:41:55.164 [DEBUG] [Thread-126335] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:41:55.164 [DEBUG] [Thread-126335] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:41:55.164 [DEBUG] [Thread-126335] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:41:55.164 [DEBUG] [Thread-126335] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:41:55.164 [DEBUG] [Thread-126335] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:41:55.164 [DEBUG] [Thread-126335] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:41:55.164 [DEBUG] [Thread-126335] [transport.py] [_log()] client lang: <none>
2025-11-04T01:41:55.164 [DEBUG] [Thread-126335] [transport.py] [_log()] server lang: <none>
2025-11-04T01:41:55.164 [DEBUG] [Thread-126335] [transport.py] [_log()] kex follows: False
2025-11-04T01:41:55.164 [DEBUG] [Thread-126335] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:41:55.164 [DEBUG] [Thread-126335] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:41:55.164 [DEBUG] [Thread-126335] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:41:55.164 [DEBUG] [Thread-126335] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:41:55.164 [DEBUG] [Thread-126335] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:41:55.164 [DEBUG] [Thread-126335] [transport.py] [_log()] Compression: none
2025-11-04T01:41:55.165 [DEBUG] [Thread-126335] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:41:55.218 [DEBUG] [Thread-126335] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:41:55.218 [DEBUG] [Thread-126335] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:41:55.218 [DEBUG] [Thread-126335] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:41:55.218 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:41:55.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:41:55.278 [DEBUG] [Thread-126335] [transport.py] [_log()] userauth is OK
2025-11-04T01:41:55.278 [DEBUG] [Thread-126335] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:41:55.278 [DEBUG] [Thread-126335] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:41:55.279 [DEBUG] [Thread-126335] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:41:55.279 [DEBUG] [Thread-126335] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:41:55.304 [INFO] [Thread-126335] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:41:55.304 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:41:55.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:41:56.134 [DEBUG] [Thread-126335] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:41:56.134 [DEBUG] [Thread-126335] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:41:56.182 [DEBUG] [Thread-126335] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:41:56.182 [DEBUG] [Thread-126335] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:41:56.192 [DEBUG] [Thread-126335] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:41:56.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:41:56.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:41:56.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:41:56.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:41:56.232 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:41:56.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:41:56.243 [DEBUG] [Thread-126335] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:42:09.959 [DEBUG] [Thread-126337 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:42:25.074 [DEBUG] [Thread-126338 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:42:26.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:42:26.265 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:42:26.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:42:27.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 41, 51), 26.94, 14.66, 0.0, 13.8, 16.84, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:42:27.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:41:51
2025-11-04T01:42:27.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:42:27.423 [DEBUG] [Thread-126339] [transport.py] [_log()] starting thread (client mode): 0x117bfbe0
2025-11-04T01:42:27.424 [DEBUG] [Thread-126339] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:42:27.435 [DEBUG] [Thread-126339] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:42:27.436 [INFO] [Thread-126339] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:42:27.449 [DEBUG] [Thread-126339] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:42:27.449 [DEBUG] [Thread-126339] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:42:27.449 [DEBUG] [Thread-126339] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:42:27.449 [DEBUG] [Thread-126339] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:42:27.449 [DEBUG] [Thread-126339] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:42:27.449 [DEBUG] [Thread-126339] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:42:27.449 [DEBUG] [Thread-126339] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:42:27.449 [DEBUG] [Thread-126339] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:42:27.449 [DEBUG] [Thread-126339] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:42:27.449 [DEBUG] [Thread-126339] [transport.py] [_log()] client lang: <none>
2025-11-04T01:42:27.449 [DEBUG] [Thread-126339] [transport.py] [_log()] server lang: <none>
2025-11-04T01:42:27.450 [DEBUG] [Thread-126339] [transport.py] [_log()] kex follows: False
2025-11-04T01:42:27.450 [DEBUG] [Thread-126339] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:42:27.450 [DEBUG] [Thread-126339] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:42:27.451 [DEBUG] [Thread-126339] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:42:27.451 [DEBUG] [Thread-126339] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:42:27.451 [DEBUG] [Thread-126339] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:42:27.451 [DEBUG] [Thread-126339] [transport.py] [_log()] Compression: none
2025-11-04T01:42:27.451 [DEBUG] [Thread-126339] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:42:27.487 [DEBUG] [Thread-126339] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:42:27.492 [DEBUG] [Thread-126339] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:42:27.494 [DEBUG] [Thread-126339] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:42:27.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:42:27.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:42:27.499 [DEBUG] [Thread-126339] [transport.py] [_log()] userauth is OK
2025-11-04T01:42:27.500 [DEBUG] [Thread-126339] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:42:27.500 [DEBUG] [Thread-126339] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:42:27.500 [DEBUG] [Thread-126339] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:42:27.500 [DEBUG] [Thread-126339] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:42:27.529 [INFO] [Thread-126339] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:42:27.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:42:28.176 [DEBUG] [Thread-126339] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:42:28.176 [DEBUG] [Thread-126339] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:42:28.188 [DEBUG] [Thread-126339] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:42:28.216 [DEBUG] [Thread-126339] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:42:28.217 [DEBUG] [Thread-126339] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:42:28.220 [DEBUG] [Thread-126339] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:42:28.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:42:28.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:42:28.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:42:28.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:42:28.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:42:28.245 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:42:28.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:42:28.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:42:28.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:42:28.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.987598 -999.00  +17.20  18.52     19   -6.00 1 1 1 1 1     0    0 22.20 -42.68 ZNESW 19.1 18.5 312.4 23.4 17.4 -23.7 17.3 -22.7 17.1 -22.5 17.4 -23.4
2025-11-04T01:42:28.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:42:28.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:42:28.248 [DEBUG] [Thread-126339] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:42:28.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.987598
2025-11-04T01:42:28.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:42:28.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:42:28.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:42:28.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:42:28.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:42:28.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:41:51', tmtdew=26.94, humidity=14.66, cloud=0.0, wind=13.8, temperature=16.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:42:24', seeing=1.36, atlas_timestamp='2025-11-03T23:42:08.467', atlas_cloud=1, atlas_rain=1, zp_data=[0.0417500000000004, 0.08225000000000016, 0.07725000000000115, 0.15499999999999936, 0.1565000000000012, 0.10575000000000045, 0.06799999999999962, 0.035250000000001336, 0.08749999999999858, 0.11700000000000088, 0.16525000000000034, 0.11299999999999955, 0.18399999999999928, -0.23925000000000018, 0.010500000000000398, 0.0024999999999995026, 0.09424999999999883, 0.1095000000000006, 0.21099999999999852, 0.12674999999999947, 0.17449999999999832, -0.790750000000001, 0.09925000000000139, 0.12175000000000047, 0.09499999999999886, 0.21700000000000053, 0.13974999999999937, 0.24249999999999972, 0.33750000000000036, 0.0920000000000023, 0.20400000000000063, 0.13000000000000078, 0.14324999999999832], zp_timestamp='2025-11-03T23:39:00')
2025-11-04T01:42:28.364 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:42:28.376 [DEBUG] [Thread-126342] [transport.py] [_log()] starting thread (client mode): 0x117bf550
2025-11-04T01:42:28.377 [DEBUG] [Thread-126342] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:42:28.393 [DEBUG] [Thread-126342] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:42:28.393 [INFO] [Thread-126342] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:42:28.410 [DEBUG] [Thread-126342] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:42:28.411 [DEBUG] [Thread-126342] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:42:28.411 [DEBUG] [Thread-126342] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:42:28.411 [DEBUG] [Thread-126342] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:42:28.411 [DEBUG] [Thread-126342] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:42:28.411 [DEBUG] [Thread-126342] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:42:28.411 [DEBUG] [Thread-126342] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:42:28.411 [DEBUG] [Thread-126342] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:42:28.411 [DEBUG] [Thread-126342] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:42:28.411 [DEBUG] [Thread-126342] [transport.py] [_log()] client lang: <none>
2025-11-04T01:42:28.411 [DEBUG] [Thread-126342] [transport.py] [_log()] server lang: <none>
2025-11-04T01:42:28.411 [DEBUG] [Thread-126342] [transport.py] [_log()] kex follows: False
2025-11-04T01:42:28.411 [DEBUG] [Thread-126342] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:42:28.411 [DEBUG] [Thread-126342] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:42:28.412 [DEBUG] [Thread-126342] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:42:28.412 [DEBUG] [Thread-126342] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:42:28.412 [DEBUG] [Thread-126342] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:42:28.412 [DEBUG] [Thread-126342] [transport.py] [_log()] Compression: none
2025-11-04T01:42:28.412 [DEBUG] [Thread-126342] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:42:28.463 [DEBUG] [Thread-126342] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:42:28.464 [DEBUG] [Thread-126342] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:42:28.465 [DEBUG] [Thread-126342] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:42:28.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:42:28.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:42:28.527 [DEBUG] [Thread-126342] [transport.py] [_log()] userauth is OK
2025-11-04T01:42:28.527 [DEBUG] [Thread-126342] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:42:28.527 [DEBUG] [Thread-126342] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:42:28.527 [DEBUG] [Thread-126342] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:42:28.527 [DEBUG] [Thread-126342] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:42:28.545 [INFO] [Thread-126342] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:42:28.545 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:42:28.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:42:29.379 [DEBUG] [Thread-126342] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:42:29.379 [DEBUG] [Thread-126342] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:42:29.419 [DEBUG] [Thread-126342] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:42:29.419 [DEBUG] [Thread-126342] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:42:29.427 [DEBUG] [Thread-126342] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:42:29.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:42:29.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:42:29.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:42:29.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:42:29.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:42:29.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:42:29.463 [DEBUG] [Thread-126342] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:42:34.427 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:42:34.430 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:42:40.148 [DEBUG] [Thread-126344 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:42:47.195 [DEBUG] [Thread-126345 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:42:55.257 [DEBUG] [Thread-126346 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:42:59.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:42:59.479 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:42:59.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:43:00.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 42, 56), 26.93, 14.66, 0.0, 17.89, 16.79, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:43:00.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:42:56
2025-11-04T01:43:00.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:43:00.623 [DEBUG] [Thread-126347] [transport.py] [_log()] starting thread (client mode): 0xed36740
2025-11-04T01:43:00.623 [DEBUG] [Thread-126347] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:43:00.635 [DEBUG] [Thread-126347] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:43:00.635 [INFO] [Thread-126347] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:43:00.639 [DEBUG] [Thread-126347] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:43:00.639 [DEBUG] [Thread-126347] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:43:00.639 [DEBUG] [Thread-126347] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:43:00.639 [DEBUG] [Thread-126347] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:43:00.639 [DEBUG] [Thread-126347] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:43:00.639 [DEBUG] [Thread-126347] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:43:00.639 [DEBUG] [Thread-126347] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:43:00.639 [DEBUG] [Thread-126347] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:43:00.639 [DEBUG] [Thread-126347] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:43:00.640 [DEBUG] [Thread-126347] [transport.py] [_log()] client lang: <none>
2025-11-04T01:43:00.640 [DEBUG] [Thread-126347] [transport.py] [_log()] server lang: <none>
2025-11-04T01:43:00.640 [DEBUG] [Thread-126347] [transport.py] [_log()] kex follows: False
2025-11-04T01:43:00.640 [DEBUG] [Thread-126347] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:43:00.640 [DEBUG] [Thread-126347] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:43:00.640 [DEBUG] [Thread-126347] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:43:00.640 [DEBUG] [Thread-126347] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:43:00.640 [DEBUG] [Thread-126347] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:43:00.640 [DEBUG] [Thread-126347] [transport.py] [_log()] Compression: none
2025-11-04T01:43:00.640 [DEBUG] [Thread-126347] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:43:00.670 [DEBUG] [Thread-126347] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:43:00.673 [DEBUG] [Thread-126347] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:43:00.674 [DEBUG] [Thread-126347] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:43:00.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:43:00.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:43:00.677 [DEBUG] [Thread-126347] [transport.py] [_log()] userauth is OK
2025-11-04T01:43:00.677 [DEBUG] [Thread-126347] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:43:00.677 [DEBUG] [Thread-126347] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:43:00.677 [DEBUG] [Thread-126347] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:43:00.677 [DEBUG] [Thread-126347] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:43:00.698 [INFO] [Thread-126347] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:43:00.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:43:01.296 [DEBUG] [Thread-126347] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:43:01.296 [DEBUG] [Thread-126347] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:43:01.297 [DEBUG] [Thread-126347] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:43:01.338 [DEBUG] [Thread-126347] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:43:01.338 [DEBUG] [Thread-126347] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:43:01.340 [DEBUG] [Thread-126347] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:43:01.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:43:01.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:43:01.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:43:01.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:43:01.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:43:01.362 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:43:01.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:43:01.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:43:01.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:43:01.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.987945 -999.00  +17.20  18.25     19   -6.00 1 1 1 1 1     0    0 22.17 -45.33 ZNESW 19.8 18.2 311.8 22.9 17.4 -23.8 17.4 -22.8 17.1 -22.6 17.4 -23.3
2025-11-04T01:43:01.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:43:01.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:43:01.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.987945
2025-11-04T01:43:01.369 [DEBUG] [Thread-126347] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:43:01.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:43:01.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:43:01.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:43:01.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:43:01.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:43:01.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:42:56', tmtdew=26.93, humidity=14.66, cloud=0.0, wind=17.89, temperature=16.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:42:56', seeing=1.36, atlas_timestamp='2025-11-03T23:42:38.448', atlas_cloud=1, atlas_rain=1, zp_data=[0.0417500000000004, 0.08225000000000016, 0.07725000000000115, 0.15499999999999936, 0.1565000000000012, 0.10575000000000045, 0.06799999999999962, 0.035250000000001336, 0.08749999999999858, 0.11700000000000088, 0.16525000000000034, 0.11299999999999955, 0.18399999999999928, -0.23925000000000018, 0.010500000000000398, 0.0024999999999995026, 0.09424999999999883, 0.1095000000000006, 0.21099999999999852, 0.12674999999999947, 0.17449999999999832, -0.790750000000001, 0.09925000000000139, 0.12175000000000047, 0.09499999999999886, 0.21700000000000053, 0.13974999999999937, 0.24249999999999972, 0.33750000000000036, 0.0920000000000023, 0.20400000000000063, 0.13000000000000078, 0.14324999999999832], zp_timestamp='2025-11-03T23:39:00')
2025-11-04T01:43:01.462 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:43:01.476 [DEBUG] [Thread-126350] [transport.py] [_log()] starting thread (client mode): 0xed34fa0
2025-11-04T01:43:01.477 [DEBUG] [Thread-126350] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:43:01.497 [DEBUG] [Thread-126350] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:43:01.497 [INFO] [Thread-126350] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:43:01.505 [DEBUG] [Thread-126350] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:43:01.505 [DEBUG] [Thread-126350] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:43:01.505 [DEBUG] [Thread-126350] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:43:01.505 [DEBUG] [Thread-126350] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:43:01.505 [DEBUG] [Thread-126350] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:43:01.505 [DEBUG] [Thread-126350] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:43:01.505 [DEBUG] [Thread-126350] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:43:01.505 [DEBUG] [Thread-126350] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:43:01.505 [DEBUG] [Thread-126350] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:43:01.506 [DEBUG] [Thread-126350] [transport.py] [_log()] client lang: <none>
2025-11-04T01:43:01.506 [DEBUG] [Thread-126350] [transport.py] [_log()] server lang: <none>
2025-11-04T01:43:01.506 [DEBUG] [Thread-126350] [transport.py] [_log()] kex follows: False
2025-11-04T01:43:01.506 [DEBUG] [Thread-126350] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:43:01.506 [DEBUG] [Thread-126350] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:43:01.506 [DEBUG] [Thread-126350] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:43:01.506 [DEBUG] [Thread-126350] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:43:01.506 [DEBUG] [Thread-126350] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:43:01.506 [DEBUG] [Thread-126350] [transport.py] [_log()] Compression: none
2025-11-04T01:43:01.506 [DEBUG] [Thread-126350] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:43:01.563 [DEBUG] [Thread-126350] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:43:01.563 [DEBUG] [Thread-126350] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:43:01.563 [DEBUG] [Thread-126350] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:43:01.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:43:01.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:43:01.621 [DEBUG] [Thread-126350] [transport.py] [_log()] userauth is OK
2025-11-04T01:43:01.621 [DEBUG] [Thread-126350] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:43:01.621 [DEBUG] [Thread-126350] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:43:01.621 [DEBUG] [Thread-126350] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:43:01.621 [DEBUG] [Thread-126350] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:43:01.638 [INFO] [Thread-126350] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:43:01.638 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:43:01.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:43:02.544 [DEBUG] [Thread-126350] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:43:02.544 [DEBUG] [Thread-126350] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:43:02.596 [DEBUG] [Thread-126350] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:43:02.596 [DEBUG] [Thread-126350] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:43:02.609 [DEBUG] [Thread-126350] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:43:02.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:43:02.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:43:02.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:43:02.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:43:02.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:43:02.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:43:02.663 [DEBUG] [Thread-126350] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:43:10.285 [DEBUG] [Thread-126352 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:43:25.358 [DEBUG] [Thread-126353 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:43:32.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:43:32.693 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:43:32.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:43:33.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 43, 28), 26.98, 14.61, 0.0, 17.73, 16.82, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:43:33.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:43:28
2025-11-04T01:43:33.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:43:33.817 [DEBUG] [Thread-126354] [transport.py] [_log()] starting thread (client mode): 0xed36e30
2025-11-04T01:43:33.818 [DEBUG] [Thread-126354] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:43:33.831 [DEBUG] [Thread-126354] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:43:33.831 [INFO] [Thread-126354] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:43:33.835 [DEBUG] [Thread-126354] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:43:33.835 [DEBUG] [Thread-126354] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:43:33.835 [DEBUG] [Thread-126354] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:43:33.835 [DEBUG] [Thread-126354] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:43:33.835 [DEBUG] [Thread-126354] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:43:33.835 [DEBUG] [Thread-126354] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:43:33.835 [DEBUG] [Thread-126354] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:43:33.835 [DEBUG] [Thread-126354] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:43:33.835 [DEBUG] [Thread-126354] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:43:33.835 [DEBUG] [Thread-126354] [transport.py] [_log()] client lang: <none>
2025-11-04T01:43:33.835 [DEBUG] [Thread-126354] [transport.py] [_log()] server lang: <none>
2025-11-04T01:43:33.835 [DEBUG] [Thread-126354] [transport.py] [_log()] kex follows: False
2025-11-04T01:43:33.835 [DEBUG] [Thread-126354] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:43:33.836 [DEBUG] [Thread-126354] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:43:33.836 [DEBUG] [Thread-126354] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:43:33.836 [DEBUG] [Thread-126354] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:43:33.836 [DEBUG] [Thread-126354] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:43:33.837 [DEBUG] [Thread-126354] [transport.py] [_log()] Compression: none
2025-11-04T01:43:33.837 [DEBUG] [Thread-126354] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:43:33.875 [DEBUG] [Thread-126354] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:43:33.880 [DEBUG] [Thread-126354] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:43:33.882 [DEBUG] [Thread-126354] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:43:33.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:43:33.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:43:33.888 [DEBUG] [Thread-126354] [transport.py] [_log()] userauth is OK
2025-11-04T01:43:33.888 [DEBUG] [Thread-126354] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:43:33.888 [DEBUG] [Thread-126354] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:43:33.888 [DEBUG] [Thread-126354] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:43:33.888 [DEBUG] [Thread-126354] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:43:33.928 [INFO] [Thread-126354] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:43:33.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:43:34.570 [DEBUG] [Thread-126354] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:43:34.570 [DEBUG] [Thread-126354] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:43:34.572 [DEBUG] [Thread-126354] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:43:34.611 [DEBUG] [Thread-126354] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:43:34.611 [DEBUG] [Thread-126354] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:43:34.615 [DEBUG] [Thread-126354] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:43:34.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:43:34.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:43:34.631 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:43:34.633 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:43:34.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:43:34.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:43:34.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:43:34.644 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:43:34.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:43:34.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:43:34.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:43:34.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.988292 -999.00  +17.10  17.24     19   -6.00 1 1 1 1 1     0    0 22.09 -46.47 ZNESW 19.8 17.2 313.0 21.1 17.4 -23.7 17.3 -22.7 17.1 -22.2 17.4 -23.4
2025-11-04T01:43:34.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:43:34.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:43:34.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.988292
2025-11-04T01:43:34.653 [DEBUG] [Thread-126354] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:43:34.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:43:34.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:43:34.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:43:34.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:43:34.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:43:34.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:43:28', tmtdew=26.98, humidity=14.61, cloud=0.0, wind=17.73, temperature=16.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:43:29', seeing=1.31, atlas_timestamp='2025-11-03T23:43:08.429', atlas_cloud=1, atlas_rain=1, zp_data=[0.0417500000000004, 0.08225000000000016, 0.07725000000000115, 0.15499999999999936, 0.1565000000000012, 0.10575000000000045, 0.06799999999999962, 0.035250000000001336, 0.08749999999999858, 0.11700000000000088, 0.16525000000000034, 0.11299999999999955, 0.18399999999999928, -0.23925000000000018, 0.010500000000000398, 0.0024999999999995026, 0.09424999999999883, 0.1095000000000006, 0.21099999999999852, 0.12674999999999947, 0.17449999999999832, -0.790750000000001, 0.09925000000000139, 0.12175000000000047, 0.09499999999999886, 0.21700000000000053, 0.13974999999999937, 0.24249999999999972, 0.33750000000000036, 0.0920000000000023, 0.20400000000000063, 0.13000000000000078, 0.14324999999999832], zp_timestamp='2025-11-03T23:41:00')
2025-11-04T01:43:34.756 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:43:34.770 [DEBUG] [Thread-126357] [transport.py] [_log()] starting thread (client mode): 0xed37ca0
2025-11-04T01:43:34.770 [DEBUG] [Thread-126357] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:43:34.786 [DEBUG] [Thread-126357] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:43:34.786 [INFO] [Thread-126357] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:43:34.794 [DEBUG] [Thread-126357] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:43:34.794 [DEBUG] [Thread-126357] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:43:34.794 [DEBUG] [Thread-126357] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:43:34.795 [DEBUG] [Thread-126357] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:43:34.795 [DEBUG] [Thread-126357] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:43:34.795 [DEBUG] [Thread-126357] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:43:34.795 [DEBUG] [Thread-126357] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:43:34.795 [DEBUG] [Thread-126357] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:43:34.795 [DEBUG] [Thread-126357] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:43:34.795 [DEBUG] [Thread-126357] [transport.py] [_log()] client lang: <none>
2025-11-04T01:43:34.795 [DEBUG] [Thread-126357] [transport.py] [_log()] server lang: <none>
2025-11-04T01:43:34.795 [DEBUG] [Thread-126357] [transport.py] [_log()] kex follows: False
2025-11-04T01:43:34.795 [DEBUG] [Thread-126357] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:43:34.795 [DEBUG] [Thread-126357] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:43:34.795 [DEBUG] [Thread-126357] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:43:34.795 [DEBUG] [Thread-126357] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:43:34.795 [DEBUG] [Thread-126357] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:43:34.795 [DEBUG] [Thread-126357] [transport.py] [_log()] Compression: none
2025-11-04T01:43:34.795 [DEBUG] [Thread-126357] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:43:34.854 [DEBUG] [Thread-126357] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:43:34.854 [DEBUG] [Thread-126357] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:43:34.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:43:34.855 [DEBUG] [Thread-126357] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:43:34.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:43:34.913 [DEBUG] [Thread-126357] [transport.py] [_log()] userauth is OK
2025-11-04T01:43:34.913 [DEBUG] [Thread-126357] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:43:34.914 [DEBUG] [Thread-126357] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:43:34.914 [DEBUG] [Thread-126357] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:43:34.914 [DEBUG] [Thread-126357] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:43:34.933 [INFO] [Thread-126357] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:43:34.934 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:43:34.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:43:35.793 [DEBUG] [Thread-126357] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:43:35.793 [DEBUG] [Thread-126357] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:43:35.841 [DEBUG] [Thread-126357] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:43:35.841 [DEBUG] [Thread-126357] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:43:35.850 [DEBUG] [Thread-126357] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:43:35.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:43:35.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:43:35.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:43:35.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:43:35.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:43:35.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:43:35.884 [DEBUG] [Thread-126357] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:43:40.389 [DEBUG] [Thread-126359 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:43:47.454 [DEBUG] [Thread-126360 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:43:55.490 [DEBUG] [Thread-126361 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:44:05.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:44:05.911 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:44:05.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:44:06.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 44, 1), 26.96, 14.64, 0.0, 19.29, 16.86, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:44:06.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:44:01
2025-11-04T01:44:06.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:44:07.038 [DEBUG] [Thread-126362] [transport.py] [_log()] starting thread (client mode): 0x117bf5b0
2025-11-04T01:44:07.039 [DEBUG] [Thread-126362] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:44:07.051 [DEBUG] [Thread-126362] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:44:07.051 [INFO] [Thread-126362] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:44:07.056 [DEBUG] [Thread-126362] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:44:07.056 [DEBUG] [Thread-126362] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:44:07.056 [DEBUG] [Thread-126362] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:44:07.056 [DEBUG] [Thread-126362] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:44:07.056 [DEBUG] [Thread-126362] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:44:07.056 [DEBUG] [Thread-126362] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:44:07.056 [DEBUG] [Thread-126362] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:44:07.056 [DEBUG] [Thread-126362] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:44:07.056 [DEBUG] [Thread-126362] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:44:07.057 [DEBUG] [Thread-126362] [transport.py] [_log()] client lang: <none>
2025-11-04T01:44:07.057 [DEBUG] [Thread-126362] [transport.py] [_log()] server lang: <none>
2025-11-04T01:44:07.057 [DEBUG] [Thread-126362] [transport.py] [_log()] kex follows: False
2025-11-04T01:44:07.057 [DEBUG] [Thread-126362] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:44:07.057 [DEBUG] [Thread-126362] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:44:07.058 [DEBUG] [Thread-126362] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:44:07.058 [DEBUG] [Thread-126362] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:44:07.058 [DEBUG] [Thread-126362] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:44:07.059 [DEBUG] [Thread-126362] [transport.py] [_log()] Compression: none
2025-11-04T01:44:07.059 [DEBUG] [Thread-126362] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:44:07.091 [DEBUG] [Thread-126362] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:44:07.095 [DEBUG] [Thread-126362] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:44:07.097 [DEBUG] [Thread-126362] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:44:07.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:44:07.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:44:07.103 [DEBUG] [Thread-126362] [transport.py] [_log()] userauth is OK
2025-11-04T01:44:07.103 [DEBUG] [Thread-126362] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:44:07.103 [DEBUG] [Thread-126362] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:44:07.103 [DEBUG] [Thread-126362] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:44:07.103 [DEBUG] [Thread-126362] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:44:07.129 [INFO] [Thread-126362] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:44:07.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:44:07.765 [DEBUG] [Thread-126362] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:44:07.766 [DEBUG] [Thread-126362] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:44:07.768 [DEBUG] [Thread-126362] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:44:07.807 [DEBUG] [Thread-126362] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:44:07.807 [DEBUG] [Thread-126362] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:44:07.811 [DEBUG] [Thread-126362] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:44:07.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:44:07.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:44:07.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:44:07.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:44:07.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:44:07.835 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:44:07.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:44:07.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:44:07.837 [DEBUG] [Thread-126362] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:44:07.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:44:07.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.988640 -999.00  +17.10  16.14     19   -6.00 1 1 1 1 1     0    0 22.01 -48.74 ZNESW 20.1 16.1 313.6 25.1 17.4 -23.7 17.3 -22.8 17.1 -22.3 17.3 -23.2
2025-11-04T01:44:07.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:44:07.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:44:07.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.988640
2025-11-04T01:44:07.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:44:07.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:44:07.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:44:07.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:44:07.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:44:07.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:44:01', tmtdew=26.96, humidity=14.64, cloud=0.0, wind=19.29, temperature=16.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:44:02', seeing=1.31, atlas_timestamp='2025-11-03T23:43:38.496', atlas_cloud=1, atlas_rain=1, zp_data=[0.0417500000000004, 0.08225000000000016, 0.07725000000000115, 0.15499999999999936, 0.1565000000000012, 0.10575000000000045, 0.06799999999999962, 0.035250000000001336, 0.08749999999999858, 0.11700000000000088, 0.16525000000000034, 0.11299999999999955, 0.18399999999999928, -0.23925000000000018, 0.010500000000000398, 0.0024999999999995026, 0.09424999999999883, 0.1095000000000006, 0.21099999999999852, 0.12674999999999947, 0.17449999999999832, -0.790750000000001, 0.09925000000000139, 0.12175000000000047, 0.09499999999999886, 0.21700000000000053, 0.13974999999999937, 0.24249999999999972, 0.33750000000000036, 0.0920000000000023, 0.20400000000000063, 0.13000000000000078, 0.14324999999999832], zp_timestamp='2025-11-03T23:41:00')
2025-11-04T01:44:07.937 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:44:07.949 [DEBUG] [Thread-126365] [transport.py] [_log()] starting thread (client mode): 0x117be560
2025-11-04T01:44:07.950 [DEBUG] [Thread-126365] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:44:07.965 [DEBUG] [Thread-126365] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:44:07.965 [INFO] [Thread-126365] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:44:07.972 [DEBUG] [Thread-126365] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:44:07.973 [DEBUG] [Thread-126365] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:44:07.973 [DEBUG] [Thread-126365] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:44:07.973 [DEBUG] [Thread-126365] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:44:07.973 [DEBUG] [Thread-126365] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:44:07.973 [DEBUG] [Thread-126365] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:44:07.973 [DEBUG] [Thread-126365] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:44:07.973 [DEBUG] [Thread-126365] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:44:07.973 [DEBUG] [Thread-126365] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:44:07.973 [DEBUG] [Thread-126365] [transport.py] [_log()] client lang: <none>
2025-11-04T01:44:07.974 [DEBUG] [Thread-126365] [transport.py] [_log()] server lang: <none>
2025-11-04T01:44:07.974 [DEBUG] [Thread-126365] [transport.py] [_log()] kex follows: False
2025-11-04T01:44:07.974 [DEBUG] [Thread-126365] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:44:07.974 [DEBUG] [Thread-126365] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:44:07.974 [DEBUG] [Thread-126365] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:44:07.974 [DEBUG] [Thread-126365] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:44:07.974 [DEBUG] [Thread-126365] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:44:07.975 [DEBUG] [Thread-126365] [transport.py] [_log()] Compression: none
2025-11-04T01:44:07.975 [DEBUG] [Thread-126365] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:44:08.036 [DEBUG] [Thread-126365] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:44:08.037 [DEBUG] [Thread-126365] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:44:08.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:44:08.038 [DEBUG] [Thread-126365] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:44:08.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:44:08.091 [DEBUG] [Thread-126365] [transport.py] [_log()] userauth is OK
2025-11-04T01:44:08.091 [DEBUG] [Thread-126365] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:44:08.091 [DEBUG] [Thread-126365] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:44:08.091 [DEBUG] [Thread-126365] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:44:08.091 [DEBUG] [Thread-126365] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:44:08.108 [INFO] [Thread-126365] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:44:08.108 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:44:08.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:44:08.964 [DEBUG] [Thread-126365] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:44:08.964 [DEBUG] [Thread-126365] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:44:09.004 [DEBUG] [Thread-126365] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:44:09.004 [DEBUG] [Thread-126365] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:44:09.013 [DEBUG] [Thread-126365] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:44:09.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:44:09.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:44:09.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:44:09.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:44:09.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:44:09.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:44:09.053 [DEBUG] [Thread-126365] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:44:10.529 [DEBUG] [Thread-126367 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:44:25.607 [DEBUG] [Thread-126368 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:44:34.837 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:44:34.839 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:44:39.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:44:39.077 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:44:39.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:44:39.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 44, 34), 27.03, 14.62, 0.0, 17.77, 16.97, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:44:39.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:44:34
2025-11-04T01:44:40.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:44:40.164 [DEBUG] [Thread-126369] [transport.py] [_log()] starting thread (client mode): 0x1179ab60
2025-11-04T01:44:40.165 [DEBUG] [Thread-126369] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:44:40.183 [DEBUG] [Thread-126369] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:44:40.183 [INFO] [Thread-126369] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:44:40.186 [DEBUG] [Thread-126369] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:44:40.186 [DEBUG] [Thread-126369] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:44:40.186 [DEBUG] [Thread-126369] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:44:40.186 [DEBUG] [Thread-126369] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:44:40.187 [DEBUG] [Thread-126369] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:44:40.187 [DEBUG] [Thread-126369] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:44:40.187 [DEBUG] [Thread-126369] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:44:40.187 [DEBUG] [Thread-126369] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:44:40.187 [DEBUG] [Thread-126369] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:44:40.187 [DEBUG] [Thread-126369] [transport.py] [_log()] client lang: <none>
2025-11-04T01:44:40.187 [DEBUG] [Thread-126369] [transport.py] [_log()] server lang: <none>
2025-11-04T01:44:40.187 [DEBUG] [Thread-126369] [transport.py] [_log()] kex follows: False
2025-11-04T01:44:40.187 [DEBUG] [Thread-126369] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:44:40.187 [DEBUG] [Thread-126369] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:44:40.187 [DEBUG] [Thread-126369] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:44:40.187 [DEBUG] [Thread-126369] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:44:40.187 [DEBUG] [Thread-126369] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:44:40.187 [DEBUG] [Thread-126369] [transport.py] [_log()] Compression: none
2025-11-04T01:44:40.187 [DEBUG] [Thread-126369] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:44:40.205 [DEBUG] [Thread-126369] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:44:40.206 [DEBUG] [Thread-126369] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:44:40.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:44:40.207 [DEBUG] [Thread-126369] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:44:40.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:44:40.249 [DEBUG] [Thread-126369] [transport.py] [_log()] userauth is OK
2025-11-04T01:44:40.250 [DEBUG] [Thread-126369] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:44:40.250 [DEBUG] [Thread-126369] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:44:40.250 [DEBUG] [Thread-126369] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:44:40.250 [DEBUG] [Thread-126369] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:44:40.270 [INFO] [Thread-126369] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:44:40.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:44:40.652 [DEBUG] [Thread-126371 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:44:40.953 [DEBUG] [Thread-126369] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:44:40.953 [DEBUG] [Thread-126369] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:44:40.953 [DEBUG] [Thread-126369] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:44:40.995 [DEBUG] [Thread-126369] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:44:40.995 [DEBUG] [Thread-126369] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:44:40.997 [DEBUG] [Thread-126369] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:44:41.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:44:41.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:44:41.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:44:41.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:44:41.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:44:41.025 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:44:41.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:44:41.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:44:41.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:44:41.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.988987 -999.00  +17.20  19.04     19   -6.00 1 1 1 1 1     0    0 21.55 -45.27 ZNESW 18.7 19.0 314.8 23.2 17.4 -23.8 17.3 -22.6 17.1 -22.4 17.3 -23.3
2025-11-04T01:44:41.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:44:41.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:44:41.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.988987
2025-11-04T01:44:41.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:44:41.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:44:41.027 [DEBUG] [Thread-126369] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:44:41.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:44:41.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:44:41.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:44:41.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:44:34', tmtdew=27.03, humidity=14.62, cloud=0.0, wind=17.77, temperature=16.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:44:35', seeing=1.26, atlas_timestamp='2025-11-03T23:44:08.477', atlas_cloud=1, atlas_rain=1, zp_data=[0.0417500000000004, 0.08225000000000016, 0.07725000000000115, 0.15499999999999936, 0.1565000000000012, 0.10575000000000045, 0.06799999999999962, 0.035250000000001336, 0.08749999999999858, 0.11700000000000088, 0.16525000000000034, 0.11299999999999955, 0.18399999999999928, -0.23925000000000018, 0.010500000000000398, 0.0024999999999995026, 0.09424999999999883, 0.1095000000000006, 0.21099999999999852, 0.12674999999999947, 0.17449999999999832, -0.790750000000001, 0.09925000000000139, 0.12175000000000047, 0.09499999999999886, 0.21700000000000053, 0.13974999999999937, 0.24249999999999972, 0.33750000000000036, 0.0920000000000023, 0.20400000000000063, 0.13000000000000078, 0.14324999999999832], zp_timestamp='2025-11-03T23:41:00')
2025-11-04T01:44:41.100 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:44:41.111 [DEBUG] [Thread-126373] [transport.py] [_log()] starting thread (client mode): 0x117bfd00
2025-11-04T01:44:41.111 [DEBUG] [Thread-126373] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:44:41.126 [DEBUG] [Thread-126373] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:44:41.126 [INFO] [Thread-126373] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:44:41.133 [DEBUG] [Thread-126373] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:44:41.133 [DEBUG] [Thread-126373] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:44:41.133 [DEBUG] [Thread-126373] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:44:41.133 [DEBUG] [Thread-126373] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:44:41.133 [DEBUG] [Thread-126373] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:44:41.133 [DEBUG] [Thread-126373] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:44:41.133 [DEBUG] [Thread-126373] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:44:41.133 [DEBUG] [Thread-126373] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:44:41.133 [DEBUG] [Thread-126373] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:44:41.133 [DEBUG] [Thread-126373] [transport.py] [_log()] client lang: <none>
2025-11-04T01:44:41.133 [DEBUG] [Thread-126373] [transport.py] [_log()] server lang: <none>
2025-11-04T01:44:41.133 [DEBUG] [Thread-126373] [transport.py] [_log()] kex follows: False
2025-11-04T01:44:41.133 [DEBUG] [Thread-126373] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:44:41.133 [DEBUG] [Thread-126373] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:44:41.133 [DEBUG] [Thread-126373] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:44:41.133 [DEBUG] [Thread-126373] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:44:41.133 [DEBUG] [Thread-126373] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:44:41.133 [DEBUG] [Thread-126373] [transport.py] [_log()] Compression: none
2025-11-04T01:44:41.133 [DEBUG] [Thread-126373] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:44:41.190 [DEBUG] [Thread-126373] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:44:41.190 [DEBUG] [Thread-126373] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:44:41.190 [DEBUG] [Thread-126373] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:44:41.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:44:41.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:44:41.247 [DEBUG] [Thread-126373] [transport.py] [_log()] userauth is OK
2025-11-04T01:44:41.247 [DEBUG] [Thread-126373] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:44:41.247 [DEBUG] [Thread-126373] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:44:41.247 [DEBUG] [Thread-126373] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:44:41.247 [DEBUG] [Thread-126373] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:44:41.262 [INFO] [Thread-126373] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:44:41.262 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:44:41.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:44:42.094 [DEBUG] [Thread-126373] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:44:42.095 [DEBUG] [Thread-126373] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:44:42.143 [DEBUG] [Thread-126373] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:44:42.143 [DEBUG] [Thread-126373] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:44:42.152 [DEBUG] [Thread-126373] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:44:42.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:44:42.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:44:42.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:44:42.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:44:42.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:44:42.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:44:42.189 [DEBUG] [Thread-126373] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:44:47.714 [DEBUG] [Thread-126375 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:44:55.681 [DEBUG] [Thread-126376 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:45:10.783 [DEBUG] [Thread-126377 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:45:12.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:45:12.215 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:45:12.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:45:13.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 45, 6), 27.09, 14.56, 0.0, 17.4, 16.99, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:45:13.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:45:06
2025-11-04T01:45:13.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:45:13.352 [DEBUG] [Thread-126378] [transport.py] [_log()] starting thread (client mode): 0xed07a60
2025-11-04T01:45:13.352 [DEBUG] [Thread-126378] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:45:13.365 [DEBUG] [Thread-126378] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:45:13.366 [INFO] [Thread-126378] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:45:13.375 [DEBUG] [Thread-126378] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:45:13.375 [DEBUG] [Thread-126378] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:45:13.375 [DEBUG] [Thread-126378] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:45:13.375 [DEBUG] [Thread-126378] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:45:13.375 [DEBUG] [Thread-126378] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:45:13.375 [DEBUG] [Thread-126378] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:45:13.375 [DEBUG] [Thread-126378] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:45:13.376 [DEBUG] [Thread-126378] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:45:13.376 [DEBUG] [Thread-126378] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:45:13.376 [DEBUG] [Thread-126378] [transport.py] [_log()] client lang: <none>
2025-11-04T01:45:13.376 [DEBUG] [Thread-126378] [transport.py] [_log()] server lang: <none>
2025-11-04T01:45:13.376 [DEBUG] [Thread-126378] [transport.py] [_log()] kex follows: False
2025-11-04T01:45:13.376 [DEBUG] [Thread-126378] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:45:13.377 [DEBUG] [Thread-126378] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:45:13.377 [DEBUG] [Thread-126378] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:45:13.377 [DEBUG] [Thread-126378] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:45:13.377 [DEBUG] [Thread-126378] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:45:13.377 [DEBUG] [Thread-126378] [transport.py] [_log()] Compression: none
2025-11-04T01:45:13.378 [DEBUG] [Thread-126378] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:45:13.408 [DEBUG] [Thread-126378] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:45:13.411 [DEBUG] [Thread-126378] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:45:13.412 [DEBUG] [Thread-126378] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:45:13.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:45:13.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:45:13.417 [DEBUG] [Thread-126378] [transport.py] [_log()] userauth is OK
2025-11-04T01:45:13.417 [DEBUG] [Thread-126378] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:45:13.417 [DEBUG] [Thread-126378] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:45:13.417 [DEBUG] [Thread-126378] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:45:13.417 [DEBUG] [Thread-126378] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:45:13.441 [INFO] [Thread-126378] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:45:13.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:45:14.026 [DEBUG] [Thread-126378] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:45:14.027 [DEBUG] [Thread-126378] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:45:14.037 [DEBUG] [Thread-126378] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:45:14.067 [DEBUG] [Thread-126378] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:45:14.067 [DEBUG] [Thread-126378] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:45:14.070 [DEBUG] [Thread-126378] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:45:14.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:45:14.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:45:14.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:45:14.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:45:14.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:45:14.096 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:45:14.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:45:14.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:45:14.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:45:14.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.989334 -999.00  +17.20  17.69     19   -6.00 1 1 1 1 1     0    0 21.46 -47.52 ZNESW 18.7 17.7 308.2 22.1 17.4 -23.8 17.3 -22.8 17.0 -22.6 17.4 -23.4
2025-11-04T01:45:14.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:45:14.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:45:14.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.989334
2025-11-04T01:45:14.105 [DEBUG] [Thread-126378] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:45:14.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:45:14.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:45:14.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:45:14.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:45:14.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:45:14.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:45:06', tmtdew=27.09, humidity=14.56, cloud=0.0, wind=17.4, temperature=16.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:45:07', seeing=1.26, atlas_timestamp='2025-11-03T23:44:38.458', atlas_cloud=1, atlas_rain=1, zp_data=[0.0417500000000004, 0.08225000000000016, 0.07725000000000115, 0.15499999999999936, 0.1565000000000012, 0.10575000000000045, 0.06799999999999962, 0.035250000000001336, 0.08749999999999858, 0.11700000000000088, 0.16525000000000034, 0.11299999999999955, 0.18399999999999928, -0.23925000000000018, 0.010500000000000398, 0.0024999999999995026, 0.09424999999999883, 0.1095000000000006, 0.21099999999999852, 0.12674999999999947, 0.17449999999999832, -0.790750000000001, 0.09925000000000139, 0.12175000000000047, 0.09499999999999886, 0.21700000000000053, 0.13974999999999937, 0.24249999999999972, 0.33750000000000036, 0.0920000000000023, 0.20400000000000063, 0.13000000000000078, 0.14324999999999832], zp_timestamp='2025-11-03T23:41:00')
2025-11-04T01:45:14.207 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:45:14.219 [DEBUG] [Thread-126381] [transport.py] [_log()] starting thread (client mode): 0xed07070
2025-11-04T01:45:14.219 [DEBUG] [Thread-126381] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:45:14.234 [DEBUG] [Thread-126381] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:45:14.234 [INFO] [Thread-126381] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:45:14.242 [DEBUG] [Thread-126381] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:45:14.242 [DEBUG] [Thread-126381] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:45:14.243 [DEBUG] [Thread-126381] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:45:14.243 [DEBUG] [Thread-126381] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:45:14.243 [DEBUG] [Thread-126381] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:45:14.243 [DEBUG] [Thread-126381] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:45:14.243 [DEBUG] [Thread-126381] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:45:14.243 [DEBUG] [Thread-126381] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:45:14.243 [DEBUG] [Thread-126381] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:45:14.243 [DEBUG] [Thread-126381] [transport.py] [_log()] client lang: <none>
2025-11-04T01:45:14.244 [DEBUG] [Thread-126381] [transport.py] [_log()] server lang: <none>
2025-11-04T01:45:14.244 [DEBUG] [Thread-126381] [transport.py] [_log()] kex follows: False
2025-11-04T01:45:14.244 [DEBUG] [Thread-126381] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:45:14.244 [DEBUG] [Thread-126381] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:45:14.244 [DEBUG] [Thread-126381] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:45:14.244 [DEBUG] [Thread-126381] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:45:14.244 [DEBUG] [Thread-126381] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:45:14.245 [DEBUG] [Thread-126381] [transport.py] [_log()] Compression: none
2025-11-04T01:45:14.245 [DEBUG] [Thread-126381] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:45:14.299 [DEBUG] [Thread-126381] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:45:14.299 [DEBUG] [Thread-126381] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:45:14.299 [DEBUG] [Thread-126381] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:45:14.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:45:14.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:45:14.356 [DEBUG] [Thread-126381] [transport.py] [_log()] userauth is OK
2025-11-04T01:45:14.356 [DEBUG] [Thread-126381] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:45:14.356 [DEBUG] [Thread-126381] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:45:14.356 [DEBUG] [Thread-126381] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:45:14.356 [DEBUG] [Thread-126381] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:45:14.374 [INFO] [Thread-126381] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:45:14.374 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:45:14.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:45:15.199 [DEBUG] [Thread-126381] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:45:15.200 [DEBUG] [Thread-126381] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:45:15.238 [DEBUG] [Thread-126381] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:45:15.238 [DEBUG] [Thread-126381] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:45:15.247 [DEBUG] [Thread-126381] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:45:15.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:45:15.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:45:15.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:45:15.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:45:15.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:45:15.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:45:15.282 [DEBUG] [Thread-126381] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:45:25.814 [DEBUG] [Thread-126383 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:45:35.053 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:45:35.054 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:45:40.850 [DEBUG] [Thread-126384 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:45:45.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:45:45.307 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:45:45.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:45:46.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 45, 39), 27.08, 14.57, 0.0, 13.74, 17.01, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:45:46.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:45:39
2025-11-04T01:45:46.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:45:46.513 [DEBUG] [Thread-126385] [transport.py] [_log()] starting thread (client mode): 0xed04f70
2025-11-04T01:45:46.514 [DEBUG] [Thread-126385] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:45:46.530 [DEBUG] [Thread-126385] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:45:46.530 [INFO] [Thread-126385] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:45:46.534 [DEBUG] [Thread-126385] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:45:46.534 [DEBUG] [Thread-126385] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:45:46.534 [DEBUG] [Thread-126385] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:45:46.534 [DEBUG] [Thread-126385] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:45:46.534 [DEBUG] [Thread-126385] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:45:46.534 [DEBUG] [Thread-126385] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:45:46.534 [DEBUG] [Thread-126385] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:45:46.534 [DEBUG] [Thread-126385] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:45:46.534 [DEBUG] [Thread-126385] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:45:46.534 [DEBUG] [Thread-126385] [transport.py] [_log()] client lang: <none>
2025-11-04T01:45:46.534 [DEBUG] [Thread-126385] [transport.py] [_log()] server lang: <none>
2025-11-04T01:45:46.534 [DEBUG] [Thread-126385] [transport.py] [_log()] kex follows: False
2025-11-04T01:45:46.534 [DEBUG] [Thread-126385] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:45:46.535 [DEBUG] [Thread-126385] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:45:46.535 [DEBUG] [Thread-126385] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:45:46.535 [DEBUG] [Thread-126385] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:45:46.535 [DEBUG] [Thread-126385] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:45:46.535 [DEBUG] [Thread-126385] [transport.py] [_log()] Compression: none
2025-11-04T01:45:46.535 [DEBUG] [Thread-126385] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:45:46.562 [DEBUG] [Thread-126385] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:45:46.563 [DEBUG] [Thread-126385] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:45:46.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:45:46.564 [DEBUG] [Thread-126385] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:45:46.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:45:46.567 [DEBUG] [Thread-126385] [transport.py] [_log()] userauth is OK
2025-11-04T01:45:46.567 [DEBUG] [Thread-126385] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:45:46.567 [DEBUG] [Thread-126385] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:45:46.567 [DEBUG] [Thread-126385] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:45:46.567 [DEBUG] [Thread-126385] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:45:46.591 [INFO] [Thread-126385] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:45:46.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:45:47.245 [DEBUG] [Thread-126385] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:45:47.245 [DEBUG] [Thread-126385] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:45:47.247 [DEBUG] [Thread-126385] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:45:47.286 [DEBUG] [Thread-126385] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:45:47.286 [DEBUG] [Thread-126385] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:45:47.289 [DEBUG] [Thread-126385] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:45:47.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:45:47.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:45:47.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:45:47.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:45:47.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:45:47.310 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:45:47.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:45:47.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:45:47.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:45:47.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.989334 -999.00  +17.20  17.69     19   -6.00 1 1 1 1 1     0    0 21.46 -47.52 ZNESW 18.7 17.7 308.2 22.1 17.4 -23.8 17.3 -22.8 17.0 -22.6 17.4 -23.4
2025-11-04T01:45:47.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:45:47.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:45:47.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.989334
2025-11-04T01:45:47.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:45:47.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:45:47.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:45:47.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:45:47.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:45:47.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:45:39', tmtdew=27.08, humidity=14.57, cloud=0.0, wind=13.74, temperature=17.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:45:41', seeing=1.3, atlas_timestamp='2025-11-03T23:44:38.458', atlas_cloud=1, atlas_rain=1, zp_data=[0.0417500000000004, 0.08225000000000016, 0.07725000000000115, 0.15499999999999936, 0.1565000000000012, 0.10575000000000045, 0.06799999999999962, 0.035250000000001336, 0.08749999999999858, 0.11700000000000088, 0.16525000000000034, 0.11299999999999955, 0.18399999999999928, -0.23925000000000018, 0.010500000000000398, 0.0024999999999995026, 0.09424999999999883, 0.1095000000000006, 0.21099999999999852, 0.12674999999999947, 0.17449999999999832, -0.790750000000001, 0.09925000000000139, 0.12175000000000047, 0.09499999999999886, 0.21700000000000053, 0.13974999999999937, 0.24249999999999972, 0.33750000000000036, 0.0920000000000023, 0.20400000000000063, 0.13000000000000078, 0.14324999999999832], zp_timestamp='2025-11-03T23:41:00')
2025-11-04T01:45:47.321 [DEBUG] [Thread-126385] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:45:47.397 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:45:47.409 [DEBUG] [Thread-126388] [transport.py] [_log()] starting thread (client mode): 0xed350c0
2025-11-04T01:45:47.410 [DEBUG] [Thread-126388] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:45:47.424 [DEBUG] [Thread-126388] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:45:47.425 [INFO] [Thread-126388] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:45:47.433 [DEBUG] [Thread-126388] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:45:47.433 [DEBUG] [Thread-126388] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:45:47.433 [DEBUG] [Thread-126388] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:45:47.433 [DEBUG] [Thread-126388] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:45:47.433 [DEBUG] [Thread-126388] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:45:47.434 [DEBUG] [Thread-126388] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:45:47.434 [DEBUG] [Thread-126388] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:45:47.434 [DEBUG] [Thread-126388] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:45:47.434 [DEBUG] [Thread-126388] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:45:47.434 [DEBUG] [Thread-126388] [transport.py] [_log()] client lang: <none>
2025-11-04T01:45:47.434 [DEBUG] [Thread-126388] [transport.py] [_log()] server lang: <none>
2025-11-04T01:45:47.434 [DEBUG] [Thread-126388] [transport.py] [_log()] kex follows: False
2025-11-04T01:45:47.435 [DEBUG] [Thread-126388] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:45:47.435 [DEBUG] [Thread-126388] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:45:47.435 [DEBUG] [Thread-126388] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:45:47.435 [DEBUG] [Thread-126388] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:45:47.435 [DEBUG] [Thread-126388] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:45:47.435 [DEBUG] [Thread-126388] [transport.py] [_log()] Compression: none
2025-11-04T01:45:47.435 [DEBUG] [Thread-126388] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:45:47.492 [DEBUG] [Thread-126388] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:45:47.493 [DEBUG] [Thread-126388] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:45:47.493 [DEBUG] [Thread-126388] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:45:47.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:45:47.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:45:47.548 [DEBUG] [Thread-126388] [transport.py] [_log()] userauth is OK
2025-11-04T01:45:47.548 [DEBUG] [Thread-126388] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:45:47.548 [DEBUG] [Thread-126388] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:45:47.548 [DEBUG] [Thread-126388] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:45:47.548 [DEBUG] [Thread-126388] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:45:47.567 [INFO] [Thread-126388] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:45:47.568 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:45:47.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:45:48.030 [DEBUG] [Thread-126390 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:45:48.421 [DEBUG] [Thread-126388] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:45:48.421 [DEBUG] [Thread-126388] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:45:48.469 [DEBUG] [Thread-126388] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:45:48.469 [DEBUG] [Thread-126388] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:45:48.479 [DEBUG] [Thread-126388] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:45:48.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:45:48.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:45:48.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:45:48.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:45:48.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:45:48.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:45:48.516 [DEBUG] [Thread-126388] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:45:55.897 [DEBUG] [Thread-126391 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:46:11.028 [DEBUG] [Thread-126392 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:46:18.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:46:18.539 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:46:18.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:46:19.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 46, 13), 27.09, 14.56, 0.0, 13.96, 16.97, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:46:19.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:46:13
2025-11-04T01:46:19.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:46:19.719 [DEBUG] [Thread-126393] [transport.py] [_log()] starting thread (client mode): 0x81988b0
2025-11-04T01:46:19.720 [DEBUG] [Thread-126393] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:46:19.739 [DEBUG] [Thread-126393] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:46:19.739 [INFO] [Thread-126393] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:46:19.741 [DEBUG] [Thread-126393] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:46:19.741 [DEBUG] [Thread-126393] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:46:19.741 [DEBUG] [Thread-126393] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:46:19.741 [DEBUG] [Thread-126393] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:46:19.741 [DEBUG] [Thread-126393] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:46:19.741 [DEBUG] [Thread-126393] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:46:19.741 [DEBUG] [Thread-126393] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:46:19.741 [DEBUG] [Thread-126393] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:46:19.741 [DEBUG] [Thread-126393] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:46:19.741 [DEBUG] [Thread-126393] [transport.py] [_log()] client lang: <none>
2025-11-04T01:46:19.742 [DEBUG] [Thread-126393] [transport.py] [_log()] server lang: <none>
2025-11-04T01:46:19.742 [DEBUG] [Thread-126393] [transport.py] [_log()] kex follows: False
2025-11-04T01:46:19.742 [DEBUG] [Thread-126393] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:46:19.742 [DEBUG] [Thread-126393] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:46:19.742 [DEBUG] [Thread-126393] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:46:19.742 [DEBUG] [Thread-126393] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:46:19.742 [DEBUG] [Thread-126393] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:46:19.742 [DEBUG] [Thread-126393] [transport.py] [_log()] Compression: none
2025-11-04T01:46:19.742 [DEBUG] [Thread-126393] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:46:19.754 [DEBUG] [Thread-126393] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:46:19.754 [DEBUG] [Thread-126393] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:46:19.754 [DEBUG] [Thread-126393] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:46:19.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:46:19.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:46:19.755 [DEBUG] [Thread-126393] [transport.py] [_log()] userauth is OK
2025-11-04T01:46:19.755 [DEBUG] [Thread-126393] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:46:19.755 [DEBUG] [Thread-126393] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:46:19.755 [DEBUG] [Thread-126393] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:46:19.755 [DEBUG] [Thread-126393] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:46:19.764 [INFO] [Thread-126393] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:46:19.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:46:20.392 [DEBUG] [Thread-126393] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:46:20.392 [DEBUG] [Thread-126393] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:46:20.393 [DEBUG] [Thread-126393] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:46:20.433 [DEBUG] [Thread-126393] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:46:20.433 [DEBUG] [Thread-126393] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:46:20.436 [DEBUG] [Thread-126393] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:46:20.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:46:20.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:46:20.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:46:20.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:46:20.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:46:20.453 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:46:20.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:46:20.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:46:20.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:46:20.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.990028 -999.00  +17.20  20.84     19   -5.90 1 1 1 1 1     0    0 21.64 -44.00 ZNESW 18.6 20.8 313.4 24.4 17.4 -23.8 17.3 -22.7 17.1 -22.4 17.4 -23.2
2025-11-04T01:46:20.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:46:20.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:46:20.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.990028
2025-11-04T01:46:20.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:46:20.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:46:20.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:46:20.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:46:20.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:46:20.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:46:13', tmtdew=27.09, humidity=14.56, cloud=0.0, wind=13.96, temperature=16.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:46:13', seeing=1.44, atlas_timestamp='2025-11-03T23:45:38.419', atlas_cloud=1, atlas_rain=1, zp_data=[0.00975000000000037, 0.09425000000000061, 0.07174999999999976, 0.1379999999999999, 0.09149999999999991, 0.10825000000000173, 0.0019999999999988916, 0.02725000000000044, 0.020500000000000185, 0.06400000000000006, 0.16424999999999912, 0.06700000000000017, 0.1559999999999988, -0.05575000000000152, 0.06649999999999778, -0.015499999999999403, 0.1092499999999994, 0.08649999999999913, 0.15249999999999986, 0.13274999999999793, 0.1429999999999989, -0.0652500000000007, 0.1172500000000003, 0.059749999999999304, 0.06299999999999883, 0.21850000000000058, 0.1587499999999995, 0.15350000000000108, 0.22250000000000014, 0.0920000000000023, 0.13500000000000156, 0.08900000000000041, 0.10725000000000051], zp_timestamp='2025-11-03T23:45:00')
2025-11-04T01:46:20.455 [DEBUG] [Thread-126393] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:46:20.529 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:46:20.540 [DEBUG] [Thread-126396] [transport.py] [_log()] starting thread (client mode): 0x8199b70
2025-11-04T01:46:20.540 [DEBUG] [Thread-126396] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:46:20.554 [DEBUG] [Thread-126396] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:46:20.554 [INFO] [Thread-126396] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:46:20.562 [DEBUG] [Thread-126396] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:46:20.562 [DEBUG] [Thread-126396] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:46:20.562 [DEBUG] [Thread-126396] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:46:20.562 [DEBUG] [Thread-126396] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:46:20.562 [DEBUG] [Thread-126396] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:46:20.562 [DEBUG] [Thread-126396] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:46:20.562 [DEBUG] [Thread-126396] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:46:20.563 [DEBUG] [Thread-126396] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:46:20.563 [DEBUG] [Thread-126396] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:46:20.563 [DEBUG] [Thread-126396] [transport.py] [_log()] client lang: <none>
2025-11-04T01:46:20.563 [DEBUG] [Thread-126396] [transport.py] [_log()] server lang: <none>
2025-11-04T01:46:20.563 [DEBUG] [Thread-126396] [transport.py] [_log()] kex follows: False
2025-11-04T01:46:20.563 [DEBUG] [Thread-126396] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:46:20.563 [DEBUG] [Thread-126396] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:46:20.563 [DEBUG] [Thread-126396] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:46:20.563 [DEBUG] [Thread-126396] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:46:20.563 [DEBUG] [Thread-126396] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:46:20.563 [DEBUG] [Thread-126396] [transport.py] [_log()] Compression: none
2025-11-04T01:46:20.563 [DEBUG] [Thread-126396] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:46:20.618 [DEBUG] [Thread-126396] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:46:20.618 [DEBUG] [Thread-126396] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:46:20.619 [DEBUG] [Thread-126396] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:46:20.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:46:20.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:46:20.675 [DEBUG] [Thread-126396] [transport.py] [_log()] userauth is OK
2025-11-04T01:46:20.676 [DEBUG] [Thread-126396] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:46:20.676 [DEBUG] [Thread-126396] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:46:20.676 [DEBUG] [Thread-126396] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:46:20.676 [DEBUG] [Thread-126396] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:46:20.692 [INFO] [Thread-126396] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:46:20.692 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:46:20.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:46:21.584 [DEBUG] [Thread-126396] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:46:21.584 [DEBUG] [Thread-126396] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:46:21.632 [DEBUG] [Thread-126396] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:46:21.632 [DEBUG] [Thread-126396] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:46:21.641 [DEBUG] [Thread-126396] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:46:21.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:46:21.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:46:21.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:46:21.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:46:21.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:46:21.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:46:21.674 [DEBUG] [Thread-126396] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:46:26.097 [DEBUG] [Thread-126398 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:46:35.265 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:46:35.265 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:46:41.243 [DEBUG] [Thread-126399 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:46:48.314 [DEBUG] [Thread-126400 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:46:51.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:46:51.697 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:46:51.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:46:52.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 46, 46), 27.05, 14.61, 0.0, 17.19, 17.02, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:46:52.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:46:46
2025-11-04T01:46:52.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:46:52.995 [DEBUG] [Thread-126401] [transport.py] [_log()] starting thread (client mode): 0xed37160
2025-11-04T01:46:52.995 [DEBUG] [Thread-126401] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:46:53.011 [DEBUG] [Thread-126401] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:46:53.011 [INFO] [Thread-126401] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:46:53.014 [DEBUG] [Thread-126401] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:46:53.014 [DEBUG] [Thread-126401] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:46:53.014 [DEBUG] [Thread-126401] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:46:53.014 [DEBUG] [Thread-126401] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:46:53.014 [DEBUG] [Thread-126401] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:46:53.014 [DEBUG] [Thread-126401] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:46:53.014 [DEBUG] [Thread-126401] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:46:53.014 [DEBUG] [Thread-126401] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:46:53.014 [DEBUG] [Thread-126401] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:46:53.014 [DEBUG] [Thread-126401] [transport.py] [_log()] client lang: <none>
2025-11-04T01:46:53.014 [DEBUG] [Thread-126401] [transport.py] [_log()] server lang: <none>
2025-11-04T01:46:53.014 [DEBUG] [Thread-126401] [transport.py] [_log()] kex follows: False
2025-11-04T01:46:53.015 [DEBUG] [Thread-126401] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:46:53.015 [DEBUG] [Thread-126401] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:46:53.015 [DEBUG] [Thread-126401] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:46:53.015 [DEBUG] [Thread-126401] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:46:53.015 [DEBUG] [Thread-126401] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:46:53.015 [DEBUG] [Thread-126401] [transport.py] [_log()] Compression: none
2025-11-04T01:46:53.015 [DEBUG] [Thread-126401] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:46:53.041 [DEBUG] [Thread-126401] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:46:53.044 [DEBUG] [Thread-126401] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:46:53.044 [DEBUG] [Thread-126401] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:46:53.044 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:46:53.045 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:46:53.085 [DEBUG] [Thread-126401] [transport.py] [_log()] userauth is OK
2025-11-04T01:46:53.086 [DEBUG] [Thread-126401] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:46:53.086 [DEBUG] [Thread-126401] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:46:53.086 [DEBUG] [Thread-126401] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:46:53.086 [DEBUG] [Thread-126401] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:46:53.118 [INFO] [Thread-126401] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:46:53.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:46:53.776 [DEBUG] [Thread-126401] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:46:53.777 [DEBUG] [Thread-126401] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:46:53.787 [DEBUG] [Thread-126401] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:46:53.817 [DEBUG] [Thread-126401] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:46:53.817 [DEBUG] [Thread-126401] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:46:53.821 [DEBUG] [Thread-126401] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:46:53.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:46:53.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:46:53.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:46:53.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:46:53.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:46:53.846 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:46:53.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:46:53.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:46:53.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:46:53.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.990376 -999.00  +17.20  17.40     19   -5.90 1 1 1 1 1     0    0 22.37 -43.76 ZNESW 20.3 17.4 312.2 23.3 17.4 -23.6 17.3 -22.7 17.1 -22.4 17.3 -23.3
2025-11-04T01:46:53.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:46:53.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:46:53.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.990376
2025-11-04T01:46:53.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:46:53.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:46:53.858 [DEBUG] [Thread-126401] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:46:53.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:46:53.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:46:53.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:46:53.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:46:46', tmtdew=27.05, humidity=14.61, cloud=0.0, wind=17.19, temperature=17.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:46:47', seeing=1.44, atlas_timestamp='2025-11-03T23:46:08.486', atlas_cloud=1, atlas_rain=1, zp_data=[0.00975000000000037, 0.09425000000000061, 0.07174999999999976, 0.1379999999999999, 0.09149999999999991, 0.10825000000000173, 0.0019999999999988916, 0.02725000000000044, 0.020500000000000185, 0.06400000000000006, 0.16424999999999912, 0.06700000000000017, 0.1559999999999988, -0.05575000000000152, 0.06649999999999778, -0.015499999999999403, 0.1092499999999994, 0.08649999999999913, 0.15249999999999986, 0.13274999999999793, 0.1429999999999989, -0.0652500000000007, 0.1172500000000003, 0.059749999999999304, 0.06299999999999883, 0.21850000000000058, 0.1587499999999995, 0.15350000000000108, 0.22250000000000014, 0.0920000000000023, 0.13500000000000156, 0.08900000000000041, 0.10725000000000051], zp_timestamp='2025-11-03T23:45:00')
2025-11-04T01:46:53.943 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:46:56.274 [DEBUG] [Thread-126404 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:47:11.311 [DEBUG] [Thread-126405 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:47:26.359 [DEBUG] [Thread-126406 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:47:35.479 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:47:35.482 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:47:41.392 [DEBUG] [Thread-126407 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:47:48.594 [DEBUG] [Thread-126408 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:47:56.421 [DEBUG] [Thread-126409 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:48:11.458 [DEBUG] [Thread-126410 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:48:26.499 [DEBUG] [Thread-126411 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:48:35.686 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:48:35.688 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:48:41.560 [DEBUG] [Thread-126412 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:48:48.904 [DEBUG] [Thread-126413 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:48:56.591 [DEBUG] [Thread-126414 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:49:07.581 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-04T01:49:11.637 [DEBUG] [Thread-126415 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:49:26.690 [DEBUG] [Thread-126416 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:49:35.902 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:49:35.904 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:49:37.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:49:37.632 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:49:37.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:49:38.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 49, 29), 27.09, 14.56, 0.0, 17.54, 17.02, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:49:38.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:49:29
2025-11-04T01:49:38.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:49:38.755 [DEBUG] [Thread-126417] [transport.py] [_log()] starting thread (client mode): 0x11799480
2025-11-04T01:49:38.756 [DEBUG] [Thread-126417] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:49:38.761 [DEBUG] [Thread-126417] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:49:38.761 [INFO] [Thread-126417] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:49:38.765 [DEBUG] [Thread-126417] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:49:38.765 [DEBUG] [Thread-126417] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:49:38.765 [DEBUG] [Thread-126417] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:49:38.766 [DEBUG] [Thread-126417] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:49:38.766 [DEBUG] [Thread-126417] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:49:38.766 [DEBUG] [Thread-126417] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:49:38.766 [DEBUG] [Thread-126417] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:49:38.766 [DEBUG] [Thread-126417] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:49:38.766 [DEBUG] [Thread-126417] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:49:38.766 [DEBUG] [Thread-126417] [transport.py] [_log()] client lang: <none>
2025-11-04T01:49:38.766 [DEBUG] [Thread-126417] [transport.py] [_log()] server lang: <none>
2025-11-04T01:49:38.766 [DEBUG] [Thread-126417] [transport.py] [_log()] kex follows: False
2025-11-04T01:49:38.766 [DEBUG] [Thread-126417] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:49:38.767 [DEBUG] [Thread-126417] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:49:38.767 [DEBUG] [Thread-126417] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:49:38.767 [DEBUG] [Thread-126417] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:49:38.767 [DEBUG] [Thread-126417] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:49:38.767 [DEBUG] [Thread-126417] [transport.py] [_log()] Compression: none
2025-11-04T01:49:38.767 [DEBUG] [Thread-126417] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:49:38.799 [DEBUG] [Thread-126417] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:49:38.803 [DEBUG] [Thread-126417] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:49:38.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:49:38.805 [DEBUG] [Thread-126417] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:49:38.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:49:38.808 [DEBUG] [Thread-126417] [transport.py] [_log()] userauth is OK
2025-11-04T01:49:38.808 [DEBUG] [Thread-126417] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:49:38.808 [DEBUG] [Thread-126417] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:49:38.808 [DEBUG] [Thread-126417] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:49:38.808 [DEBUG] [Thread-126417] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:49:38.829 [INFO] [Thread-126417] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:49:38.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:49:39.447 [DEBUG] [Thread-126417] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:49:39.447 [DEBUG] [Thread-126417] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:49:39.448 [DEBUG] [Thread-126417] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:49:39.487 [DEBUG] [Thread-126417] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:49:39.487 [DEBUG] [Thread-126417] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:49:39.491 [DEBUG] [Thread-126417] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:49:39.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:49:39.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:49:39.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:49:39.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:49:39.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:49:39.513 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:49:39.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:49:39.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:49:39.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:49:39.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.992459 -999.00  +17.20  18.60     19   -5.90 1 1 1 1 1     0    0 21.98 -30.64 ZNESW 16.6 18.6 314.0 21.1 17.4 -23.9 17.2 -22.8 17.0 -22.6 17.3 -23.4
2025-11-04T01:49:39.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:49:39.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:49:39.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.992459
2025-11-04T01:49:39.526 [DEBUG] [Thread-126417] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:49:39.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:49:39.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:49:39.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:49:39.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:49:39.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:49:39.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:49:29', tmtdew=27.09, humidity=14.56, cloud=0.0, wind=17.54, temperature=17.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:49:30', seeing=1.45, atlas_timestamp='2025-11-03T23:49:08.458', atlas_cloud=1, atlas_rain=1, zp_data=[0.00975000000000037, 0.09425000000000061, 0.07174999999999976, 0.1379999999999999, 0.09149999999999991, 0.10825000000000173, 0.0019999999999988916, 0.02725000000000044, 0.020500000000000185, 0.06400000000000006, 0.16424999999999912, 0.06700000000000017, 0.1559999999999988, -0.05575000000000152, 0.06649999999999778, -0.015499999999999403, 0.1092499999999994, 0.08649999999999913, 0.15249999999999986, 0.13274999999999793, 0.1429999999999989, -0.0652500000000007, 0.1172500000000003, 0.059749999999999304, 0.06299999999999883, 0.21850000000000058, 0.1587499999999995, 0.15350000000000108, 0.22250000000000014, 0.0920000000000023, 0.13500000000000156, 0.08900000000000041, 0.10725000000000051], zp_timestamp='2025-11-03T23:48:00')
2025-11-04T01:49:39.611 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:49:39.630 [DEBUG] [Thread-126420] [transport.py] [_log()] starting thread (client mode): 0xed06710
2025-11-04T01:49:39.630 [DEBUG] [Thread-126420] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:49:39.649 [DEBUG] [Thread-126420] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:49:39.649 [INFO] [Thread-126420] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:49:39.662 [DEBUG] [Thread-126420] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:49:39.662 [DEBUG] [Thread-126420] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:49:39.662 [DEBUG] [Thread-126420] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:49:39.662 [DEBUG] [Thread-126420] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:49:39.662 [DEBUG] [Thread-126420] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:49:39.662 [DEBUG] [Thread-126420] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:49:39.662 [DEBUG] [Thread-126420] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:49:39.662 [DEBUG] [Thread-126420] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:49:39.662 [DEBUG] [Thread-126420] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:49:39.662 [DEBUG] [Thread-126420] [transport.py] [_log()] client lang: <none>
2025-11-04T01:49:39.662 [DEBUG] [Thread-126420] [transport.py] [_log()] server lang: <none>
2025-11-04T01:49:39.662 [DEBUG] [Thread-126420] [transport.py] [_log()] kex follows: False
2025-11-04T01:49:39.662 [DEBUG] [Thread-126420] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:49:39.662 [DEBUG] [Thread-126420] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:49:39.662 [DEBUG] [Thread-126420] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:49:39.662 [DEBUG] [Thread-126420] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:49:39.662 [DEBUG] [Thread-126420] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:49:39.662 [DEBUG] [Thread-126420] [transport.py] [_log()] Compression: none
2025-11-04T01:49:39.662 [DEBUG] [Thread-126420] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:49:39.722 [DEBUG] [Thread-126420] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:49:39.723 [DEBUG] [Thread-126420] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:49:39.723 [DEBUG] [Thread-126420] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:49:39.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:49:39.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:49:39.780 [DEBUG] [Thread-126420] [transport.py] [_log()] userauth is OK
2025-11-04T01:49:39.780 [DEBUG] [Thread-126420] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:49:39.780 [DEBUG] [Thread-126420] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:49:39.780 [DEBUG] [Thread-126420] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:49:39.780 [DEBUG] [Thread-126420] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:49:39.795 [INFO] [Thread-126420] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:49:39.795 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:49:39.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:49:40.684 [DEBUG] [Thread-126420] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:49:40.684 [DEBUG] [Thread-126420] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:49:40.733 [DEBUG] [Thread-126420] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:49:40.733 [DEBUG] [Thread-126420] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:49:40.742 [DEBUG] [Thread-126420] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:49:40.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:49:40.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:49:40.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:49:40.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:49:40.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:49:40.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:49:40.777 [DEBUG] [Thread-126420] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:49:41.716 [DEBUG] [Thread-126422 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:49:49.279 [DEBUG] [Thread-126423 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:49:56.819 [DEBUG] [Thread-126424 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:50:10.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:50:10.812 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:50:10.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:50:11.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 50, 2), 27.03, 14.62, 0.0, 17.79, 17.01, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:50:11.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:50:02
2025-11-04T01:50:11.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:50:11.856 [DEBUG] [Thread-126425 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:50:11.965 [DEBUG] [Thread-126426] [transport.py] [_log()] starting thread (client mode): 0xed34790
2025-11-04T01:50:11.965 [DEBUG] [Thread-126426] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:50:11.980 [DEBUG] [Thread-126426] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:50:11.980 [INFO] [Thread-126426] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:50:11.985 [DEBUG] [Thread-126426] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:50:11.985 [DEBUG] [Thread-126426] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:50:11.985 [DEBUG] [Thread-126426] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:50:11.985 [DEBUG] [Thread-126426] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:50:11.985 [DEBUG] [Thread-126426] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:50:11.985 [DEBUG] [Thread-126426] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:50:11.985 [DEBUG] [Thread-126426] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:50:11.985 [DEBUG] [Thread-126426] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:50:11.985 [DEBUG] [Thread-126426] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:50:11.985 [DEBUG] [Thread-126426] [transport.py] [_log()] client lang: <none>
2025-11-04T01:50:11.985 [DEBUG] [Thread-126426] [transport.py] [_log()] server lang: <none>
2025-11-04T01:50:11.985 [DEBUG] [Thread-126426] [transport.py] [_log()] kex follows: False
2025-11-04T01:50:11.985 [DEBUG] [Thread-126426] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:50:11.986 [DEBUG] [Thread-126426] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:50:11.986 [DEBUG] [Thread-126426] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:50:11.986 [DEBUG] [Thread-126426] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:50:11.986 [DEBUG] [Thread-126426] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:50:11.986 [DEBUG] [Thread-126426] [transport.py] [_log()] Compression: none
2025-11-04T01:50:11.986 [DEBUG] [Thread-126426] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:50:12.024 [DEBUG] [Thread-126426] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:50:12.030 [DEBUG] [Thread-126426] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:50:12.032 [DEBUG] [Thread-126426] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:50:12.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:50:12.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:50:12.037 [DEBUG] [Thread-126426] [transport.py] [_log()] userauth is OK
2025-11-04T01:50:12.037 [DEBUG] [Thread-126426] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:50:12.037 [DEBUG] [Thread-126426] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:50:12.037 [DEBUG] [Thread-126426] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:50:12.037 [DEBUG] [Thread-126426] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:50:12.077 [INFO] [Thread-126426] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:50:12.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:50:13.785 [DEBUG] [Thread-126426] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:50:13.785 [DEBUG] [Thread-126426] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:50:13.787 [DEBUG] [Thread-126426] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:50:13.826 [DEBUG] [Thread-126426] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:50:13.826 [DEBUG] [Thread-126426] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:50:13.830 [DEBUG] [Thread-126426] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:50:13.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:50:13.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:50:13.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:50:13.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:50:13.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:50:13.988 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:50:13.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:50:13.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:50:13.991 [DEBUG] [Thread-126426] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:50:13.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:50:13.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.992806 -999.00  +17.20  20.84     19   -5.90 1 1 1 1 1     0    0 21.87 -29.77 ZNESW 22.4 20.8 315.0 23.9 17.3 -23.8 17.3 -22.8 17.0 -22.3 17.3 -23.3
2025-11-04T01:50:13.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:50:13.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:50:13.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.992806
2025-11-04T01:50:14.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:50:14.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:50:14.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:50:14.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:50:14.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:50:14.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:50:02', tmtdew=27.03, humidity=14.62, cloud=0.0, wind=17.79, temperature=17.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:50:03', seeing=1.45, atlas_timestamp='2025-11-03T23:49:38.438', atlas_cloud=1, atlas_rain=1, zp_data=[0.00975000000000037, 0.09425000000000061, 0.07174999999999976, 0.1379999999999999, 0.09149999999999991, 0.10825000000000173, 0.0019999999999988916, 0.02725000000000044, 0.020500000000000185, 0.06400000000000006, 0.16424999999999912, 0.06700000000000017, 0.1559999999999988, -0.05575000000000152, 0.06649999999999778, -0.015499999999999403, 0.1092499999999994, 0.08649999999999913, 0.15249999999999986, 0.13274999999999793, 0.1429999999999989, -0.0652500000000007, 0.1172500000000003, 0.059749999999999304, 0.06299999999999883, 0.21850000000000058, 0.1587499999999995, 0.15350000000000108, 0.22250000000000014, 0.0920000000000023, 0.13500000000000156, 0.08900000000000041, 0.10725000000000051], zp_timestamp='2025-11-03T23:48:00')
2025-11-04T01:50:14.094 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:50:14.108 [DEBUG] [Thread-126429] [transport.py] [_log()] starting thread (client mode): 0xed34400
2025-11-04T01:50:14.108 [DEBUG] [Thread-126429] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:50:14.128 [DEBUG] [Thread-126429] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:50:14.129 [INFO] [Thread-126429] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:50:14.139 [DEBUG] [Thread-126429] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:50:14.139 [DEBUG] [Thread-126429] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:50:14.139 [DEBUG] [Thread-126429] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:50:14.139 [DEBUG] [Thread-126429] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:50:14.140 [DEBUG] [Thread-126429] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:50:14.140 [DEBUG] [Thread-126429] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:50:14.140 [DEBUG] [Thread-126429] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:50:14.140 [DEBUG] [Thread-126429] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:50:14.140 [DEBUG] [Thread-126429] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:50:14.140 [DEBUG] [Thread-126429] [transport.py] [_log()] client lang: <none>
2025-11-04T01:50:14.140 [DEBUG] [Thread-126429] [transport.py] [_log()] server lang: <none>
2025-11-04T01:50:14.140 [DEBUG] [Thread-126429] [transport.py] [_log()] kex follows: False
2025-11-04T01:50:14.140 [DEBUG] [Thread-126429] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:50:14.140 [DEBUG] [Thread-126429] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:50:14.140 [DEBUG] [Thread-126429] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:50:14.140 [DEBUG] [Thread-126429] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:50:14.140 [DEBUG] [Thread-126429] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:50:14.140 [DEBUG] [Thread-126429] [transport.py] [_log()] Compression: none
2025-11-04T01:50:14.140 [DEBUG] [Thread-126429] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:50:14.197 [DEBUG] [Thread-126429] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:50:14.198 [DEBUG] [Thread-126429] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:50:14.198 [DEBUG] [Thread-126429] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:50:14.199 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:50:14.199 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:50:14.260 [DEBUG] [Thread-126429] [transport.py] [_log()] userauth is OK
2025-11-04T01:50:14.260 [DEBUG] [Thread-126429] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:50:14.260 [DEBUG] [Thread-126429] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:50:14.260 [DEBUG] [Thread-126429] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:50:14.260 [DEBUG] [Thread-126429] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:50:14.276 [INFO] [Thread-126429] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:50:14.276 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:50:14.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:50:15.118 [DEBUG] [Thread-126429] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:50:15.118 [DEBUG] [Thread-126429] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:50:15.157 [DEBUG] [Thread-126429] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:50:15.158 [DEBUG] [Thread-126429] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:50:15.167 [DEBUG] [Thread-126429] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:50:15.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:50:15.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:50:15.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:50:15.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:50:15.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:50:15.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:50:15.210 [DEBUG] [Thread-126429] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:50:26.900 [DEBUG] [Thread-126431 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:50:36.106 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:50:36.107 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:50:41.971 [DEBUG] [Thread-126432 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:50:45.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:50:45.231 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:50:45.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:50:46.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 50, 35), 26.97, 14.69, 0.0, 15.99, 16.99, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:50:46.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:50:35
2025-11-04T01:50:46.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:50:46.363 [DEBUG] [Thread-126433] [transport.py] [_log()] starting thread (client mode): 0x819abf0
2025-11-04T01:50:46.363 [DEBUG] [Thread-126433] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:50:46.385 [DEBUG] [Thread-126433] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:50:46.385 [INFO] [Thread-126433] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:50:46.388 [DEBUG] [Thread-126433] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:50:46.388 [DEBUG] [Thread-126433] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:50:46.388 [DEBUG] [Thread-126433] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:50:46.388 [DEBUG] [Thread-126433] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:50:46.388 [DEBUG] [Thread-126433] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:50:46.388 [DEBUG] [Thread-126433] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:50:46.388 [DEBUG] [Thread-126433] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:50:46.388 [DEBUG] [Thread-126433] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:50:46.388 [DEBUG] [Thread-126433] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:50:46.388 [DEBUG] [Thread-126433] [transport.py] [_log()] client lang: <none>
2025-11-04T01:50:46.388 [DEBUG] [Thread-126433] [transport.py] [_log()] server lang: <none>
2025-11-04T01:50:46.388 [DEBUG] [Thread-126433] [transport.py] [_log()] kex follows: False
2025-11-04T01:50:46.388 [DEBUG] [Thread-126433] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:50:46.388 [DEBUG] [Thread-126433] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:50:46.389 [DEBUG] [Thread-126433] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:50:46.389 [DEBUG] [Thread-126433] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:50:46.389 [DEBUG] [Thread-126433] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:50:46.389 [DEBUG] [Thread-126433] [transport.py] [_log()] Compression: none
2025-11-04T01:50:46.389 [DEBUG] [Thread-126433] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:50:46.405 [DEBUG] [Thread-126433] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:50:46.406 [DEBUG] [Thread-126433] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:50:46.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:50:46.407 [DEBUG] [Thread-126433] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:50:46.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:50:46.409 [DEBUG] [Thread-126433] [transport.py] [_log()] userauth is OK
2025-11-04T01:50:46.409 [DEBUG] [Thread-126433] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:50:46.409 [DEBUG] [Thread-126433] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:50:46.410 [DEBUG] [Thread-126433] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:50:46.410 [DEBUG] [Thread-126433] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:50:46.433 [INFO] [Thread-126433] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:50:46.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:50:47.085 [DEBUG] [Thread-126433] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:50:47.085 [DEBUG] [Thread-126433] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:50:47.085 [DEBUG] [Thread-126433] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:50:47.126 [DEBUG] [Thread-126433] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:50:47.126 [DEBUG] [Thread-126433] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:50:47.129 [DEBUG] [Thread-126433] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:50:47.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:50:47.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:50:47.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:50:47.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:50:47.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:50:47.166 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:50:47.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:50:47.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:50:47.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:50:47.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.993153 -999.00  +17.40  21.78     19   -5.90 1 1 1 1 1     0    0 22.68 -24.46 ZNESW 22.3 21.8 310.8 26.8 17.4 -23.6 17.3 -22.7 17.1 -22.4 17.3 -23.2
2025-11-04T01:50:47.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:50:47.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:50:47.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.993153
2025-11-04T01:50:47.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:50:47.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:50:47.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:50:47.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:50:47.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:50:47.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:50:35', tmtdew=26.97, humidity=14.69, cloud=0.0, wind=15.99, temperature=16.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:50:35', seeing=1.49, atlas_timestamp='2025-11-03T23:50:08.419', atlas_cloud=1, atlas_rain=1, zp_data=[0.00975000000000037, 0.09425000000000061, 0.07174999999999976, 0.1379999999999999, 0.09149999999999991, 0.10825000000000173, 0.0019999999999988916, 0.02725000000000044, 0.020500000000000185, 0.06400000000000006, 0.16424999999999912, 0.06700000000000017, 0.1559999999999988, -0.05575000000000152, 0.06649999999999778, -0.015499999999999403, 0.1092499999999994, 0.08649999999999913, 0.15249999999999986, 0.13274999999999793, 0.1429999999999989, -0.0652500000000007, 0.1172500000000003, 0.059749999999999304, 0.06299999999999883, 0.21850000000000058, 0.1587499999999995, 0.15350000000000108, 0.22250000000000014, 0.0920000000000023, 0.13500000000000156, 0.08900000000000041, 0.10725000000000051], zp_timestamp='2025-11-03T23:48:00')
2025-11-04T01:50:47.168 [DEBUG] [Thread-126433] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:50:47.242 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:50:47.258 [DEBUG] [Thread-126436] [transport.py] [_log()] starting thread (client mode): 0x819b2e0
2025-11-04T01:50:47.258 [DEBUG] [Thread-126436] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:50:47.278 [DEBUG] [Thread-126436] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:50:47.278 [INFO] [Thread-126436] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:50:47.292 [DEBUG] [Thread-126436] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:50:47.292 [DEBUG] [Thread-126436] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:50:47.292 [DEBUG] [Thread-126436] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:50:47.292 [DEBUG] [Thread-126436] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:50:47.293 [DEBUG] [Thread-126436] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:50:47.293 [DEBUG] [Thread-126436] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:50:47.293 [DEBUG] [Thread-126436] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:50:47.293 [DEBUG] [Thread-126436] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:50:47.293 [DEBUG] [Thread-126436] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:50:47.293 [DEBUG] [Thread-126436] [transport.py] [_log()] client lang: <none>
2025-11-04T01:50:47.293 [DEBUG] [Thread-126436] [transport.py] [_log()] server lang: <none>
2025-11-04T01:50:47.293 [DEBUG] [Thread-126436] [transport.py] [_log()] kex follows: False
2025-11-04T01:50:47.293 [DEBUG] [Thread-126436] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:50:47.293 [DEBUG] [Thread-126436] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:50:47.293 [DEBUG] [Thread-126436] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:50:47.294 [DEBUG] [Thread-126436] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:50:47.294 [DEBUG] [Thread-126436] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:50:47.294 [DEBUG] [Thread-126436] [transport.py] [_log()] Compression: none
2025-11-04T01:50:47.294 [DEBUG] [Thread-126436] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:50:47.348 [DEBUG] [Thread-126436] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:50:47.349 [DEBUG] [Thread-126436] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:50:47.349 [DEBUG] [Thread-126436] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:50:47.350 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:50:47.350 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:50:47.408 [DEBUG] [Thread-126436] [transport.py] [_log()] userauth is OK
2025-11-04T01:50:47.408 [DEBUG] [Thread-126436] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:50:47.408 [DEBUG] [Thread-126436] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:50:47.408 [DEBUG] [Thread-126436] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:50:47.408 [DEBUG] [Thread-126436] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:50:47.427 [INFO] [Thread-126436] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:50:47.428 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:50:47.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:50:48.328 [DEBUG] [Thread-126436] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:50:48.328 [DEBUG] [Thread-126436] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:50:48.381 [DEBUG] [Thread-126436] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:50:48.381 [DEBUG] [Thread-126436] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:50:48.394 [DEBUG] [Thread-126436] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:50:48.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:50:48.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:50:48.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:50:48.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:50:48.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:50:48.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:50:48.440 [DEBUG] [Thread-126436] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:50:49.608 [DEBUG] [Thread-126438 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:50:57.005 [DEBUG] [Thread-126439 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:51:12.090 [DEBUG] [Thread-126440 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:51:18.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:51:18.445 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:51:18.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:51:19.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 51, 7), 27.02, 14.64, 0.0, 15.46, 17.01, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:51:19.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:51:07
2025-11-04T01:51:19.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:51:19.594 [DEBUG] [Thread-126441] [transport.py] [_log()] starting thread (client mode): 0x819ba90
2025-11-04T01:51:19.595 [DEBUG] [Thread-126441] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:51:19.608 [DEBUG] [Thread-126441] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:51:19.608 [INFO] [Thread-126441] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:51:19.613 [DEBUG] [Thread-126441] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:51:19.614 [DEBUG] [Thread-126441] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:51:19.614 [DEBUG] [Thread-126441] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:51:19.614 [DEBUG] [Thread-126441] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:51:19.614 [DEBUG] [Thread-126441] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:51:19.614 [DEBUG] [Thread-126441] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:51:19.614 [DEBUG] [Thread-126441] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:51:19.614 [DEBUG] [Thread-126441] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:51:19.614 [DEBUG] [Thread-126441] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:51:19.615 [DEBUG] [Thread-126441] [transport.py] [_log()] client lang: <none>
2025-11-04T01:51:19.615 [DEBUG] [Thread-126441] [transport.py] [_log()] server lang: <none>
2025-11-04T01:51:19.615 [DEBUG] [Thread-126441] [transport.py] [_log()] kex follows: False
2025-11-04T01:51:19.615 [DEBUG] [Thread-126441] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:51:19.616 [DEBUG] [Thread-126441] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:51:19.616 [DEBUG] [Thread-126441] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:51:19.616 [DEBUG] [Thread-126441] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:51:19.617 [DEBUG] [Thread-126441] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:51:19.617 [DEBUG] [Thread-126441] [transport.py] [_log()] Compression: none
2025-11-04T01:51:19.617 [DEBUG] [Thread-126441] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:51:19.657 [DEBUG] [Thread-126441] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:51:19.662 [DEBUG] [Thread-126441] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:51:19.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:51:19.665 [DEBUG] [Thread-126441] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:51:19.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:51:19.669 [DEBUG] [Thread-126441] [transport.py] [_log()] userauth is OK
2025-11-04T01:51:19.669 [DEBUG] [Thread-126441] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:51:19.669 [DEBUG] [Thread-126441] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:51:19.669 [DEBUG] [Thread-126441] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:51:19.669 [DEBUG] [Thread-126441] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:51:19.697 [INFO] [Thread-126441] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:51:19.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:51:20.496 [DEBUG] [Thread-126441] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:51:20.496 [DEBUG] [Thread-126441] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:51:20.497 [DEBUG] [Thread-126441] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:51:20.537 [DEBUG] [Thread-126441] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:51:20.537 [DEBUG] [Thread-126441] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:51:20.540 [DEBUG] [Thread-126441] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:51:20.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:51:20.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:51:20.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:51:20.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:51:20.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:51:20.560 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:51:20.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:51:20.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:51:20.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:51:20.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.993501 -999.00  +17.30  17.03     19   -5.90 1 1 1 1 1     0    0 22.57 -23.11 ZNESW 17.7 17.0 312.2 23.3 17.4 -23.8 17.3 -22.7 17.0 -22.3 17.3 -23.4
2025-11-04T01:51:20.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:51:20.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:51:20.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.993501
2025-11-04T01:51:20.568 [DEBUG] [Thread-126441] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:51:20.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:51:20.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:51:20.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:51:20.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:51:20.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:51:20.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:51:07', tmtdew=27.02, humidity=14.64, cloud=0.0, wind=15.46, temperature=17.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:51:08', seeing=1.49, atlas_timestamp='2025-11-03T23:50:38.486', atlas_cloud=1, atlas_rain=1, zp_data=[0.00975000000000037, 0.09425000000000061, 0.07174999999999976, 0.1379999999999999, 0.09149999999999991, 0.10825000000000173, 0.0019999999999988916, 0.02725000000000044, 0.020500000000000185, 0.06400000000000006, 0.16424999999999912, 0.06700000000000017, 0.1559999999999988, -0.05575000000000152, 0.06649999999999778, -0.015499999999999403, 0.1092499999999994, 0.08649999999999913, 0.15249999999999986, 0.13274999999999793, 0.1429999999999989, -0.0652500000000007, 0.1172500000000003, 0.059749999999999304, 0.06299999999999883, 0.21850000000000058, 0.1587499999999995, 0.15350000000000108, 0.22250000000000014, 0.0920000000000023, 0.13500000000000156, 0.08900000000000041, 0.10725000000000051], zp_timestamp='2025-11-03T23:48:00')
2025-11-04T01:51:20.652 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:51:20.663 [DEBUG] [Thread-126444] [transport.py] [_log()] starting thread (client mode): 0xed07610
2025-11-04T01:51:20.663 [DEBUG] [Thread-126444] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:51:20.678 [DEBUG] [Thread-126444] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:51:20.678 [INFO] [Thread-126444] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:51:20.686 [DEBUG] [Thread-126444] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:51:20.686 [DEBUG] [Thread-126444] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:51:20.686 [DEBUG] [Thread-126444] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:51:20.686 [DEBUG] [Thread-126444] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:51:20.686 [DEBUG] [Thread-126444] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:51:20.686 [DEBUG] [Thread-126444] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:51:20.686 [DEBUG] [Thread-126444] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:51:20.686 [DEBUG] [Thread-126444] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:51:20.686 [DEBUG] [Thread-126444] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:51:20.686 [DEBUG] [Thread-126444] [transport.py] [_log()] client lang: <none>
2025-11-04T01:51:20.686 [DEBUG] [Thread-126444] [transport.py] [_log()] server lang: <none>
2025-11-04T01:51:20.686 [DEBUG] [Thread-126444] [transport.py] [_log()] kex follows: False
2025-11-04T01:51:20.686 [DEBUG] [Thread-126444] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:51:20.686 [DEBUG] [Thread-126444] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:51:20.686 [DEBUG] [Thread-126444] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:51:20.686 [DEBUG] [Thread-126444] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:51:20.686 [DEBUG] [Thread-126444] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:51:20.686 [DEBUG] [Thread-126444] [transport.py] [_log()] Compression: none
2025-11-04T01:51:20.686 [DEBUG] [Thread-126444] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:51:20.744 [DEBUG] [Thread-126444] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:51:20.745 [DEBUG] [Thread-126444] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:51:20.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:51:20.746 [DEBUG] [Thread-126444] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:51:20.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:51:20.804 [DEBUG] [Thread-126444] [transport.py] [_log()] userauth is OK
2025-11-04T01:51:20.804 [DEBUG] [Thread-126444] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:51:20.805 [DEBUG] [Thread-126444] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:51:20.805 [DEBUG] [Thread-126444] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:51:20.805 [DEBUG] [Thread-126444] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:51:20.823 [INFO] [Thread-126444] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:51:20.824 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:51:20.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:51:21.630 [DEBUG] [Thread-126444] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:51:21.630 [DEBUG] [Thread-126444] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:51:21.679 [DEBUG] [Thread-126444] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:51:21.679 [DEBUG] [Thread-126444] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:51:21.687 [DEBUG] [Thread-126444] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:51:21.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:51:21.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:51:21.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:51:21.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:51:21.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:51:21.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:51:21.725 [DEBUG] [Thread-126444] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:51:27.161 [DEBUG] [Thread-126446 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:51:36.317 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:51:36.318 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:51:42.271 [DEBUG] [Thread-126447 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:51:49.999 [DEBUG] [Thread-126448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:51:51.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:51:51.722 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:51:51.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:51:52.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 51, 40), 27.1, 14.61, 0.0, 17.24, 17.06, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:51:52.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:51:40
2025-11-04T01:51:52.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:51:53.077 [DEBUG] [Thread-126449] [transport.py] [_log()] starting thread (client mode): 0xed07070
2025-11-04T01:51:53.078 [DEBUG] [Thread-126449] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:51:53.090 [DEBUG] [Thread-126449] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:51:53.091 [INFO] [Thread-126449] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:51:53.095 [DEBUG] [Thread-126449] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:51:53.095 [DEBUG] [Thread-126449] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:51:53.095 [DEBUG] [Thread-126449] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:51:53.095 [DEBUG] [Thread-126449] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:51:53.095 [DEBUG] [Thread-126449] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:51:53.095 [DEBUG] [Thread-126449] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:51:53.095 [DEBUG] [Thread-126449] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:51:53.095 [DEBUG] [Thread-126449] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:51:53.095 [DEBUG] [Thread-126449] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:51:53.095 [DEBUG] [Thread-126449] [transport.py] [_log()] client lang: <none>
2025-11-04T01:51:53.095 [DEBUG] [Thread-126449] [transport.py] [_log()] server lang: <none>
2025-11-04T01:51:53.096 [DEBUG] [Thread-126449] [transport.py] [_log()] kex follows: False
2025-11-04T01:51:53.096 [DEBUG] [Thread-126449] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:51:53.097 [DEBUG] [Thread-126449] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:51:53.097 [DEBUG] [Thread-126449] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:51:53.097 [DEBUG] [Thread-126449] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:51:53.097 [DEBUG] [Thread-126449] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:51:53.097 [DEBUG] [Thread-126449] [transport.py] [_log()] Compression: none
2025-11-04T01:51:53.097 [DEBUG] [Thread-126449] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:51:53.124 [DEBUG] [Thread-126449] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:51:53.125 [DEBUG] [Thread-126449] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:51:53.126 [DEBUG] [Thread-126449] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:51:53.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:51:53.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:51:53.128 [DEBUG] [Thread-126449] [transport.py] [_log()] userauth is OK
2025-11-04T01:51:53.129 [DEBUG] [Thread-126449] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:51:53.129 [DEBUG] [Thread-126449] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:51:53.129 [DEBUG] [Thread-126449] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:51:53.129 [DEBUG] [Thread-126449] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:51:53.152 [INFO] [Thread-126449] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:51:53.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:51:53.786 [DEBUG] [Thread-126449] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:51:53.787 [DEBUG] [Thread-126449] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:51:53.796 [DEBUG] [Thread-126449] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:51:53.828 [DEBUG] [Thread-126449] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:51:53.828 [DEBUG] [Thread-126449] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:51:53.832 [DEBUG] [Thread-126449] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:51:53.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:51:53.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:51:53.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:51:53.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:51:53.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:51:53.860 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:51:53.860 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:51:53.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:51:53.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:51:53.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.993848 -999.00  +17.20  17.06     19   -5.90 1 1 1 1 1     0    0 23.10 -23.19 ZNESW 15.7 17.1 311.8 20.6 17.4 -23.8 17.3 -22.9 17.1 -22.3 17.3 -23.5
2025-11-04T01:51:53.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:51:53.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:51:53.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.993848
2025-11-04T01:51:53.867 [DEBUG] [Thread-126449] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:51:53.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:51:53.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:51:53.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:51:53.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:51:53.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:51:53.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:51:40', tmtdew=27.1, humidity=14.61, cloud=0.0, wind=17.24, temperature=17.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:51:40', seeing=1.26, atlas_timestamp='2025-11-03T23:51:08.467', atlas_cloud=1, atlas_rain=1, zp_data=[0.00975000000000037, 0.09425000000000061, 0.07174999999999976, 0.1379999999999999, 0.09149999999999991, 0.10825000000000173, 0.0019999999999988916, 0.02725000000000044, 0.020500000000000185, 0.06400000000000006, 0.16424999999999912, 0.06700000000000017, 0.1559999999999988, -0.05575000000000152, 0.06649999999999778, -0.015499999999999403, 0.1092499999999994, 0.08649999999999913, 0.15249999999999986, 0.13274999999999793, 0.1429999999999989, -0.0652500000000007, 0.1172500000000003, 0.059749999999999304, 0.06299999999999883, 0.21850000000000058, 0.1587499999999995, 0.15350000000000108, 0.22250000000000014, 0.0920000000000023, 0.13500000000000156, 0.08900000000000041, 0.10725000000000051], zp_timestamp='2025-11-03T23:48:00')
2025-11-04T01:51:53.963 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:51:53.978 [DEBUG] [Thread-126452] [transport.py] [_log()] starting thread (client mode): 0xed049d0
2025-11-04T01:51:53.978 [DEBUG] [Thread-126452] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:51:53.993 [DEBUG] [Thread-126452] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:51:53.994 [INFO] [Thread-126452] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:51:54.005 [DEBUG] [Thread-126452] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:51:54.005 [DEBUG] [Thread-126452] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:51:54.005 [DEBUG] [Thread-126452] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:51:54.006 [DEBUG] [Thread-126452] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:51:54.006 [DEBUG] [Thread-126452] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:51:54.006 [DEBUG] [Thread-126452] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:51:54.006 [DEBUG] [Thread-126452] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:51:54.006 [DEBUG] [Thread-126452] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:51:54.006 [DEBUG] [Thread-126452] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:51:54.006 [DEBUG] [Thread-126452] [transport.py] [_log()] client lang: <none>
2025-11-04T01:51:54.006 [DEBUG] [Thread-126452] [transport.py] [_log()] server lang: <none>
2025-11-04T01:51:54.006 [DEBUG] [Thread-126452] [transport.py] [_log()] kex follows: False
2025-11-04T01:51:54.007 [DEBUG] [Thread-126452] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:51:54.007 [DEBUG] [Thread-126452] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:51:54.007 [DEBUG] [Thread-126452] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:51:54.007 [DEBUG] [Thread-126452] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:51:54.007 [DEBUG] [Thread-126452] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:51:54.007 [DEBUG] [Thread-126452] [transport.py] [_log()] Compression: none
2025-11-04T01:51:54.007 [DEBUG] [Thread-126452] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:51:54.079 [DEBUG] [Thread-126452] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:51:54.080 [DEBUG] [Thread-126452] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:51:54.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:51:54.082 [DEBUG] [Thread-126452] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:51:54.082 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:51:54.141 [DEBUG] [Thread-126452] [transport.py] [_log()] userauth is OK
2025-11-04T01:51:54.141 [DEBUG] [Thread-126452] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:51:54.142 [DEBUG] [Thread-126452] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:51:54.142 [DEBUG] [Thread-126452] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:51:54.142 [DEBUG] [Thread-126452] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:51:54.166 [INFO] [Thread-126452] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:51:54.166 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:51:54.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:51:55.022 [DEBUG] [Thread-126452] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:51:55.022 [DEBUG] [Thread-126452] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:51:55.062 [DEBUG] [Thread-126452] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:51:55.062 [DEBUG] [Thread-126452] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:51:55.072 [DEBUG] [Thread-126452] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:51:55.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:51:55.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:51:55.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:51:55.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:51:55.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:51:55.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:51:55.111 [DEBUG] [Thread-126452] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:51:57.309 [DEBUG] [Thread-126454 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:52:12.351 [DEBUG] [Thread-126455 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:52:25.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:52:25.156 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:52:25.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:52:25.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 52, 12), 27.17, 14.54, 0.0, 17.66, 17.11, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:52:25.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:52:12
2025-11-04T01:52:26.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:52:26.210 [DEBUG] [Thread-126456] [transport.py] [_log()] starting thread (client mode): 0x8199360
2025-11-04T01:52:26.211 [DEBUG] [Thread-126456] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:52:26.220 [DEBUG] [Thread-126456] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:52:26.221 [INFO] [Thread-126456] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:52:26.225 [DEBUG] [Thread-126456] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:52:26.225 [DEBUG] [Thread-126456] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:52:26.225 [DEBUG] [Thread-126456] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:52:26.225 [DEBUG] [Thread-126456] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:52:26.225 [DEBUG] [Thread-126456] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:52:26.225 [DEBUG] [Thread-126456] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:52:26.225 [DEBUG] [Thread-126456] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:52:26.225 [DEBUG] [Thread-126456] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:52:26.225 [DEBUG] [Thread-126456] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:52:26.225 [DEBUG] [Thread-126456] [transport.py] [_log()] client lang: <none>
2025-11-04T01:52:26.225 [DEBUG] [Thread-126456] [transport.py] [_log()] server lang: <none>
2025-11-04T01:52:26.226 [DEBUG] [Thread-126456] [transport.py] [_log()] kex follows: False
2025-11-04T01:52:26.226 [DEBUG] [Thread-126456] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:52:26.226 [DEBUG] [Thread-126456] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:52:26.226 [DEBUG] [Thread-126456] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:52:26.227 [DEBUG] [Thread-126456] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:52:26.227 [DEBUG] [Thread-126456] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:52:26.227 [DEBUG] [Thread-126456] [transport.py] [_log()] Compression: none
2025-11-04T01:52:26.227 [DEBUG] [Thread-126456] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:52:26.262 [DEBUG] [Thread-126456] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:52:26.267 [DEBUG] [Thread-126456] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:52:26.269 [DEBUG] [Thread-126456] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:52:26.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:52:26.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:52:26.274 [DEBUG] [Thread-126456] [transport.py] [_log()] userauth is OK
2025-11-04T01:52:26.275 [DEBUG] [Thread-126456] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:52:26.275 [DEBUG] [Thread-126456] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:52:26.275 [DEBUG] [Thread-126456] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:52:26.275 [DEBUG] [Thread-126456] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:52:26.302 [INFO] [Thread-126456] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:52:26.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:52:26.924 [DEBUG] [Thread-126456] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:52:26.924 [DEBUG] [Thread-126456] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:52:26.933 [DEBUG] [Thread-126456] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:52:26.964 [DEBUG] [Thread-126456] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:52:26.964 [DEBUG] [Thread-126456] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:52:26.967 [DEBUG] [Thread-126456] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:52:26.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:52:26.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:52:26.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:52:26.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:52:26.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:52:26.990 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:52:26.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:52:26.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:52:26.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:52:26.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.994542 -999.00  +17.00  16.62     20   -5.90 1 1 1 1 1     0    0 22.47 -23.47 ZNESW 15.7 16.6 315.2 22.4 17.4 -23.7 17.3 -22.8 17.1 -22.6 17.4 -23.4
2025-11-04T01:52:26.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:52:26.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:52:26.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.994542
2025-11-04T01:52:27.004 [DEBUG] [Thread-126456] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:52:27.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:52:27.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:52:27.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:52:27.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:52:27.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:52:27.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:52:12', tmtdew=27.17, humidity=14.54, cloud=0.0, wind=17.66, temperature=17.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:52:14', seeing=1.26, atlas_timestamp='2025-11-03T23:52:08.429', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01025000000000098, 0.0702499999999997, 0.09425000000000061, 0.08949999999999925, 0.10350000000000037, 0.11625000000000085, 0.03550000000000075, 0.1022500000000015, 0.018499999999999517, 0.07900000000000063, 0.12624999999999886, 0.13000000000000078, 0.25099999999999945, -0.01425000000000054, 0.08000000000000007, -0.025000000000000355, 0.11574999999999847, 0.10400000000000098, 0.19399999999999906, 0.20124999999999815, 0.18249999999999922, -0.619250000000001, 0.020250000000000767, 0.07875000000000121, 0.0804999999999989, 0.19149999999999956, 0.12025000000000041, 0.3125, 0.3260000000000005, -0.18599999999999817, 0.05900000000000105, 0.0860000000000003, 0.12924999999999898], zp_timestamp='2025-11-03T23:51:00')
2025-11-04T01:52:27.100 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:52:27.113 [DEBUG] [Thread-126459] [transport.py] [_log()] starting thread (client mode): 0x8198220
2025-11-04T01:52:27.113 [DEBUG] [Thread-126459] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:52:27.128 [DEBUG] [Thread-126459] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:52:27.129 [INFO] [Thread-126459] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:52:27.136 [DEBUG] [Thread-126459] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:52:27.136 [DEBUG] [Thread-126459] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:52:27.136 [DEBUG] [Thread-126459] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:52:27.136 [DEBUG] [Thread-126459] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:52:27.137 [DEBUG] [Thread-126459] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:52:27.137 [DEBUG] [Thread-126459] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:52:27.137 [DEBUG] [Thread-126459] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:52:27.137 [DEBUG] [Thread-126459] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:52:27.137 [DEBUG] [Thread-126459] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:52:27.137 [DEBUG] [Thread-126459] [transport.py] [_log()] client lang: <none>
2025-11-04T01:52:27.137 [DEBUG] [Thread-126459] [transport.py] [_log()] server lang: <none>
2025-11-04T01:52:27.137 [DEBUG] [Thread-126459] [transport.py] [_log()] kex follows: False
2025-11-04T01:52:27.137 [DEBUG] [Thread-126459] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:52:27.138 [DEBUG] [Thread-126459] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:52:27.138 [DEBUG] [Thread-126459] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:52:27.138 [DEBUG] [Thread-126459] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:52:27.138 [DEBUG] [Thread-126459] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:52:27.139 [DEBUG] [Thread-126459] [transport.py] [_log()] Compression: none
2025-11-04T01:52:27.139 [DEBUG] [Thread-126459] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:52:27.199 [DEBUG] [Thread-126459] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:52:27.200 [DEBUG] [Thread-126459] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:52:27.201 [DEBUG] [Thread-126459] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:52:27.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:52:27.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:52:27.263 [DEBUG] [Thread-126459] [transport.py] [_log()] userauth is OK
2025-11-04T01:52:27.264 [DEBUG] [Thread-126459] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:52:27.264 [DEBUG] [Thread-126459] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:52:27.264 [DEBUG] [Thread-126459] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:52:27.264 [DEBUG] [Thread-126459] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:52:27.284 [INFO] [Thread-126459] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:52:27.284 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:52:27.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:52:27.415 [DEBUG] [Thread-126461 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:52:28.212 [DEBUG] [Thread-126459] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:52:28.212 [DEBUG] [Thread-126459] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:52:28.260 [DEBUG] [Thread-126459] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:52:28.260 [DEBUG] [Thread-126459] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:52:28.270 [DEBUG] [Thread-126459] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:52:28.279 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:52:28.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:52:28.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:52:28.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:52:28.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:52:28.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:52:28.313 [DEBUG] [Thread-126459] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:52:36.530 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:52:36.531 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:52:42.578 [DEBUG] [Thread-126462 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:52:50.354 [DEBUG] [Thread-126463 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:52:57.608 [DEBUG] [Thread-126464 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:52:58.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:52:58.335 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:52:58.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:52:58.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 52, 46), 27.17, 14.44, 0.0, 17.72, 17.12, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:52:58.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:52:46
2025-11-04T01:52:59.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:52:59.263 [DEBUG] [Thread-126465] [transport.py] [_log()] starting thread (client mode): 0xed05870
2025-11-04T01:52:59.264 [DEBUG] [Thread-126465] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:52:59.283 [DEBUG] [Thread-126465] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:52:59.283 [INFO] [Thread-126465] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:52:59.286 [DEBUG] [Thread-126465] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:52:59.286 [DEBUG] [Thread-126465] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:52:59.286 [DEBUG] [Thread-126465] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:52:59.286 [DEBUG] [Thread-126465] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:52:59.287 [DEBUG] [Thread-126465] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:52:59.287 [DEBUG] [Thread-126465] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:52:59.287 [DEBUG] [Thread-126465] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:52:59.287 [DEBUG] [Thread-126465] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:52:59.287 [DEBUG] [Thread-126465] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:52:59.287 [DEBUG] [Thread-126465] [transport.py] [_log()] client lang: <none>
2025-11-04T01:52:59.287 [DEBUG] [Thread-126465] [transport.py] [_log()] server lang: <none>
2025-11-04T01:52:59.287 [DEBUG] [Thread-126465] [transport.py] [_log()] kex follows: False
2025-11-04T01:52:59.287 [DEBUG] [Thread-126465] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:52:59.287 [DEBUG] [Thread-126465] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:52:59.287 [DEBUG] [Thread-126465] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:52:59.287 [DEBUG] [Thread-126465] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:52:59.287 [DEBUG] [Thread-126465] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:52:59.287 [DEBUG] [Thread-126465] [transport.py] [_log()] Compression: none
2025-11-04T01:52:59.287 [DEBUG] [Thread-126465] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:52:59.294 [DEBUG] [Thread-126465] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:52:59.295 [DEBUG] [Thread-126465] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:52:59.295 [DEBUG] [Thread-126465] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:52:59.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:52:59.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:52:59.336 [DEBUG] [Thread-126465] [transport.py] [_log()] userauth is OK
2025-11-04T01:52:59.336 [DEBUG] [Thread-126465] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:52:59.337 [DEBUG] [Thread-126465] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:52:59.337 [DEBUG] [Thread-126465] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:52:59.337 [DEBUG] [Thread-126465] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:52:59.363 [INFO] [Thread-126465] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:52:59.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:53:00.017 [DEBUG] [Thread-126465] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:53:00.017 [DEBUG] [Thread-126465] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:53:00.017 [DEBUG] [Thread-126465] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:53:00.057 [DEBUG] [Thread-126465] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:53:00.057 [DEBUG] [Thread-126465] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:53:00.059 [DEBUG] [Thread-126465] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:53:00.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:53:00.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:53:00.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:53:00.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:53:00.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:53:00.076 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:53:00.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:53:00.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:53:00.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:53:00.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.994889 -999.00  +17.00  15.88     20   -6.00 1 1 1 1 1     0    0 22.23 -24.91 ZNESW 17.9 15.9 324.0 17.6 17.4 -23.8 17.3 -22.7 17.1 -22.6 17.4 -23.6
2025-11-04T01:53:00.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:53:00.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:53:00.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.994889
2025-11-04T01:53:00.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:53:00.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:53:00.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:53:00.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:53:00.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:53:00.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:52:46', tmtdew=27.17, humidity=14.44, cloud=0.0, wind=17.72, temperature=17.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:52:47', seeing=1.23, atlas_timestamp='2025-11-03T23:52:38.410', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01025000000000098, 0.0702499999999997, 0.09425000000000061, 0.08949999999999925, 0.10350000000000037, 0.11625000000000085, 0.03550000000000075, 0.1022500000000015, 0.018499999999999517, 0.07900000000000063, 0.12624999999999886, 0.13000000000000078, 0.25099999999999945, -0.01425000000000054, 0.08000000000000007, -0.025000000000000355, 0.11574999999999847, 0.10400000000000098, 0.19399999999999906, 0.20124999999999815, 0.18249999999999922, -0.619250000000001, 0.020250000000000767, 0.07875000000000121, 0.0804999999999989, 0.19149999999999956, 0.12025000000000041, 0.3125, 0.3260000000000005, -0.18599999999999817, 0.05900000000000105, 0.0860000000000003, 0.12924999999999898], zp_timestamp='2025-11-03T23:51:00')
2025-11-04T01:53:00.077 [DEBUG] [Thread-126465] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:53:00.153 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:53:00.165 [DEBUG] [Thread-126468] [transport.py] [_log()] starting thread (client mode): 0xed042b0
2025-11-04T01:53:00.165 [DEBUG] [Thread-126468] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:53:00.180 [DEBUG] [Thread-126468] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:53:00.181 [INFO] [Thread-126468] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:53:00.189 [DEBUG] [Thread-126468] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:53:00.189 [DEBUG] [Thread-126468] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:53:00.189 [DEBUG] [Thread-126468] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:53:00.189 [DEBUG] [Thread-126468] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:53:00.189 [DEBUG] [Thread-126468] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:53:00.189 [DEBUG] [Thread-126468] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:53:00.189 [DEBUG] [Thread-126468] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:53:00.189 [DEBUG] [Thread-126468] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:53:00.189 [DEBUG] [Thread-126468] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:53:00.189 [DEBUG] [Thread-126468] [transport.py] [_log()] client lang: <none>
2025-11-04T01:53:00.189 [DEBUG] [Thread-126468] [transport.py] [_log()] server lang: <none>
2025-11-04T01:53:00.189 [DEBUG] [Thread-126468] [transport.py] [_log()] kex follows: False
2025-11-04T01:53:00.189 [DEBUG] [Thread-126468] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:53:00.189 [DEBUG] [Thread-126468] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:53:00.189 [DEBUG] [Thread-126468] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:53:00.189 [DEBUG] [Thread-126468] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:53:00.190 [DEBUG] [Thread-126468] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:53:00.190 [DEBUG] [Thread-126468] [transport.py] [_log()] Compression: none
2025-11-04T01:53:00.190 [DEBUG] [Thread-126468] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:53:00.247 [DEBUG] [Thread-126468] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:53:00.248 [DEBUG] [Thread-126468] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:53:00.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:53:00.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:53:00.248 [DEBUG] [Thread-126468] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:53:00.303 [DEBUG] [Thread-126468] [transport.py] [_log()] userauth is OK
2025-11-04T01:53:00.303 [DEBUG] [Thread-126468] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:53:00.303 [DEBUG] [Thread-126468] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:53:00.303 [DEBUG] [Thread-126468] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:53:00.303 [DEBUG] [Thread-126468] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:53:00.321 [INFO] [Thread-126468] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:53:00.321 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:53:00.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:53:01.190 [DEBUG] [Thread-126468] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:53:01.190 [DEBUG] [Thread-126468] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:53:01.239 [DEBUG] [Thread-126468] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:53:01.239 [DEBUG] [Thread-126468] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:53:01.249 [DEBUG] [Thread-126468] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:53:01.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:53:01.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:53:01.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:53:01.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:53:01.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:53:01.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:53:01.283 [DEBUG] [Thread-126468] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:53:12.663 [DEBUG] [Thread-126470 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:53:27.785 [DEBUG] [Thread-126471 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:53:31.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:53:31.308 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:53:31.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:53:32.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 53, 19), 27.14, 14.47, 0.0, 17.31, 17.16, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:53:32.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:53:19
2025-11-04T01:53:32.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:53:32.729 [DEBUG] [Thread-126472] [transport.py] [_log()] starting thread (client mode): 0x819bcd0
2025-11-04T01:53:32.730 [DEBUG] [Thread-126472] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:53:32.741 [DEBUG] [Thread-126472] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:53:32.741 [INFO] [Thread-126472] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:53:32.746 [DEBUG] [Thread-126472] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:53:32.746 [DEBUG] [Thread-126472] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:53:32.746 [DEBUG] [Thread-126472] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:53:32.746 [DEBUG] [Thread-126472] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:53:32.746 [DEBUG] [Thread-126472] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:53:32.746 [DEBUG] [Thread-126472] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:53:32.746 [DEBUG] [Thread-126472] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:53:32.746 [DEBUG] [Thread-126472] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:53:32.746 [DEBUG] [Thread-126472] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:53:32.746 [DEBUG] [Thread-126472] [transport.py] [_log()] client lang: <none>
2025-11-04T01:53:32.746 [DEBUG] [Thread-126472] [transport.py] [_log()] server lang: <none>
2025-11-04T01:53:32.746 [DEBUG] [Thread-126472] [transport.py] [_log()] kex follows: False
2025-11-04T01:53:32.746 [DEBUG] [Thread-126472] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:53:32.747 [DEBUG] [Thread-126472] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:53:32.747 [DEBUG] [Thread-126472] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:53:32.747 [DEBUG] [Thread-126472] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:53:32.747 [DEBUG] [Thread-126472] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:53:32.747 [DEBUG] [Thread-126472] [transport.py] [_log()] Compression: none
2025-11-04T01:53:32.747 [DEBUG] [Thread-126472] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:53:32.785 [DEBUG] [Thread-126472] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:53:32.790 [DEBUG] [Thread-126472] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:53:32.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:53:32.794 [DEBUG] [Thread-126472] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:53:32.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:53:32.798 [DEBUG] [Thread-126472] [transport.py] [_log()] userauth is OK
2025-11-04T01:53:32.798 [DEBUG] [Thread-126472] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:53:32.798 [DEBUG] [Thread-126472] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:53:32.798 [DEBUG] [Thread-126472] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:53:32.798 [DEBUG] [Thread-126472] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:53:32.837 [INFO] [Thread-126472] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:53:32.843 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:53:33.428 [DEBUG] [Thread-126472] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:53:33.428 [DEBUG] [Thread-126472] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:53:33.429 [DEBUG] [Thread-126472] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:53:33.469 [DEBUG] [Thread-126472] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:53:33.469 [DEBUG] [Thread-126472] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:53:33.473 [DEBUG] [Thread-126472] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:53:33.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:53:33.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:53:33.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:53:33.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:53:33.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:53:33.501 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:53:33.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:53:33.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:53:33.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:53:33.504 [DEBUG] [Thread-126472] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:53:33.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.995237 -999.00  +17.00  14.68     20   -6.00 1 1 1 1 1     0    0 22.90 -22.83 ZNESW 15.4 14.7 319.6 19.9 17.4 -23.8 17.3 -22.9 17.1 -22.3 17.4 -23.5
2025-11-04T01:53:33.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:53:33.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:53:33.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.995237
2025-11-04T01:53:33.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:53:33.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:53:33.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:53:33.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:53:33.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:53:33.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:53:19', tmtdew=27.14, humidity=14.47, cloud=0.0, wind=17.31, temperature=17.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:53:19', seeing=1.23, atlas_timestamp='2025-11-03T23:53:08.477', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01025000000000098, 0.0702499999999997, 0.09425000000000061, 0.08949999999999925, 0.10350000000000037, 0.11625000000000085, 0.03550000000000075, 0.1022500000000015, 0.018499999999999517, 0.07900000000000063, 0.12624999999999886, 0.13000000000000078, 0.25099999999999945, -0.01425000000000054, 0.08000000000000007, -0.025000000000000355, 0.11574999999999847, 0.10400000000000098, 0.19399999999999906, 0.20124999999999815, 0.18249999999999922, -0.619250000000001, 0.020250000000000767, 0.07875000000000121, 0.0804999999999989, 0.19149999999999956, 0.12025000000000041, 0.3125, 0.3260000000000005, -0.18599999999999817, 0.05900000000000105, 0.0860000000000003, 0.12924999999999898], zp_timestamp='2025-11-03T23:51:00')
2025-11-04T01:53:33.623 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:53:33.637 [DEBUG] [Thread-126475] [transport.py] [_log()] starting thread (client mode): 0x819bdc0
2025-11-04T01:53:33.637 [DEBUG] [Thread-126475] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:53:33.652 [DEBUG] [Thread-126475] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:53:33.652 [INFO] [Thread-126475] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:53:33.660 [DEBUG] [Thread-126475] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:53:33.660 [DEBUG] [Thread-126475] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:53:33.660 [DEBUG] [Thread-126475] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:53:33.660 [DEBUG] [Thread-126475] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:53:33.660 [DEBUG] [Thread-126475] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:53:33.660 [DEBUG] [Thread-126475] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:53:33.660 [DEBUG] [Thread-126475] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:53:33.660 [DEBUG] [Thread-126475] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:53:33.660 [DEBUG] [Thread-126475] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:53:33.660 [DEBUG] [Thread-126475] [transport.py] [_log()] client lang: <none>
2025-11-04T01:53:33.660 [DEBUG] [Thread-126475] [transport.py] [_log()] server lang: <none>
2025-11-04T01:53:33.660 [DEBUG] [Thread-126475] [transport.py] [_log()] kex follows: False
2025-11-04T01:53:33.660 [DEBUG] [Thread-126475] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:53:33.660 [DEBUG] [Thread-126475] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:53:33.660 [DEBUG] [Thread-126475] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:53:33.660 [DEBUG] [Thread-126475] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:53:33.660 [DEBUG] [Thread-126475] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:53:33.660 [DEBUG] [Thread-126475] [transport.py] [_log()] Compression: none
2025-11-04T01:53:33.660 [DEBUG] [Thread-126475] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:53:33.719 [DEBUG] [Thread-126475] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:53:33.719 [DEBUG] [Thread-126475] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:53:33.719 [DEBUG] [Thread-126475] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:53:33.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:53:33.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:53:33.776 [DEBUG] [Thread-126475] [transport.py] [_log()] userauth is OK
2025-11-04T01:53:33.776 [DEBUG] [Thread-126475] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:53:33.776 [DEBUG] [Thread-126475] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:53:33.776 [DEBUG] [Thread-126475] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:53:33.776 [DEBUG] [Thread-126475] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:53:33.798 [INFO] [Thread-126475] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:53:33.798 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:53:33.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:53:34.714 [DEBUG] [Thread-126475] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:53:34.714 [DEBUG] [Thread-126475] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:53:34.765 [DEBUG] [Thread-126475] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:53:34.765 [DEBUG] [Thread-126475] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:53:34.774 [DEBUG] [Thread-126475] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:53:34.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:53:34.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:53:34.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:53:34.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:53:34.803 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:53:34.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:53:34.815 [DEBUG] [Thread-126475] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:53:36.736 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:53:36.737 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:53:42.814 [DEBUG] [Thread-126477 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:53:50.630 [DEBUG] [Thread-126478 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:53:57.884 [DEBUG] [Thread-126479 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:54:04.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:54:04.831 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:54:04.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:54:05.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 53, 51), 27.32, 14.34, 0.0, 17.1, 17.47, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:54:05.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:53:51
2025-11-04T01:54:05.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:54:06.166 [DEBUG] [Thread-126480] [transport.py] [_log()] starting thread (client mode): 0x819bc40
2025-11-04T01:54:06.167 [DEBUG] [Thread-126480] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:54:06.178 [DEBUG] [Thread-126480] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:54:06.178 [INFO] [Thread-126480] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:54:06.193 [DEBUG] [Thread-126480] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:54:06.193 [DEBUG] [Thread-126480] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:54:06.193 [DEBUG] [Thread-126480] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:54:06.193 [DEBUG] [Thread-126480] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:54:06.193 [DEBUG] [Thread-126480] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:54:06.193 [DEBUG] [Thread-126480] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:54:06.193 [DEBUG] [Thread-126480] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:54:06.194 [DEBUG] [Thread-126480] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:54:06.194 [DEBUG] [Thread-126480] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:54:06.194 [DEBUG] [Thread-126480] [transport.py] [_log()] client lang: <none>
2025-11-04T01:54:06.194 [DEBUG] [Thread-126480] [transport.py] [_log()] server lang: <none>
2025-11-04T01:54:06.194 [DEBUG] [Thread-126480] [transport.py] [_log()] kex follows: False
2025-11-04T01:54:06.194 [DEBUG] [Thread-126480] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:54:06.194 [DEBUG] [Thread-126480] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:54:06.194 [DEBUG] [Thread-126480] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:54:06.194 [DEBUG] [Thread-126480] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:54:06.194 [DEBUG] [Thread-126480] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:54:06.195 [DEBUG] [Thread-126480] [transport.py] [_log()] Compression: none
2025-11-04T01:54:06.195 [DEBUG] [Thread-126480] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:54:06.230 [DEBUG] [Thread-126480] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:54:06.233 [DEBUG] [Thread-126480] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:54:06.234 [DEBUG] [Thread-126480] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:54:06.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:54:06.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:54:06.237 [DEBUG] [Thread-126480] [transport.py] [_log()] userauth is OK
2025-11-04T01:54:06.237 [DEBUG] [Thread-126480] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:54:06.237 [DEBUG] [Thread-126480] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:54:06.237 [DEBUG] [Thread-126480] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:54:06.237 [DEBUG] [Thread-126480] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:54:06.255 [INFO] [Thread-126480] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:54:06.257 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:54:06.928 [DEBUG] [Thread-126480] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:54:06.928 [DEBUG] [Thread-126480] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:54:06.938 [DEBUG] [Thread-126480] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:54:06.968 [DEBUG] [Thread-126480] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:54:06.968 [DEBUG] [Thread-126480] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:54:06.970 [DEBUG] [Thread-126480] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:54:06.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:54:06.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:54:06.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:54:06.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:54:06.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:54:06.989 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:54:06.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:54:06.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:54:06.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:54:06.991 [DEBUG] [Thread-126480] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:54:06.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.995584 -999.00  +16.90  15.16     20   -6.00 1 1 1 1 1     0    0 22.64 -23.53 ZNESW 16.6 15.2 313.4 17.1 17.4 -23.8 17.3 -22.9 17.1 -22.5 17.3 -23.4
2025-11-04T01:54:06.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:54:06.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:54:06.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.995584
2025-11-04T01:54:07.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:54:07.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:54:07.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:54:07.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:54:07.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:54:07.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:53:51', tmtdew=27.32, humidity=14.34, cloud=0.0, wind=17.1, temperature=17.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:53:52', seeing=1.24, atlas_timestamp='2025-11-03T23:53:38.458', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01025000000000098, 0.0702499999999997, 0.09425000000000061, 0.08949999999999925, 0.10350000000000037, 0.11625000000000085, 0.03550000000000075, 0.1022500000000015, 0.018499999999999517, 0.07900000000000063, 0.12624999999999886, 0.13000000000000078, 0.25099999999999945, -0.01425000000000054, 0.08000000000000007, -0.025000000000000355, 0.11574999999999847, 0.10400000000000098, 0.19399999999999906, 0.20124999999999815, 0.18249999999999922, -0.619250000000001, 0.020250000000000767, 0.07875000000000121, 0.0804999999999989, 0.19149999999999956, 0.12025000000000041, 0.3125, 0.3260000000000005, -0.18599999999999817, 0.05900000000000105, 0.0860000000000003, 0.12924999999999898], zp_timestamp='2025-11-03T23:51:00')
2025-11-04T01:54:07.086 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:54:07.099 [DEBUG] [Thread-126483] [transport.py] [_log()] starting thread (client mode): 0x819a5c0
2025-11-04T01:54:07.099 [DEBUG] [Thread-126483] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:54:07.114 [DEBUG] [Thread-126483] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:54:07.114 [INFO] [Thread-126483] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:54:07.121 [DEBUG] [Thread-126483] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:54:07.121 [DEBUG] [Thread-126483] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:54:07.121 [DEBUG] [Thread-126483] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:54:07.121 [DEBUG] [Thread-126483] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:54:07.121 [DEBUG] [Thread-126483] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:54:07.121 [DEBUG] [Thread-126483] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:54:07.121 [DEBUG] [Thread-126483] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:54:07.121 [DEBUG] [Thread-126483] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:54:07.121 [DEBUG] [Thread-126483] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:54:07.121 [DEBUG] [Thread-126483] [transport.py] [_log()] client lang: <none>
2025-11-04T01:54:07.121 [DEBUG] [Thread-126483] [transport.py] [_log()] server lang: <none>
2025-11-04T01:54:07.121 [DEBUG] [Thread-126483] [transport.py] [_log()] kex follows: False
2025-11-04T01:54:07.121 [DEBUG] [Thread-126483] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:54:07.121 [DEBUG] [Thread-126483] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:54:07.121 [DEBUG] [Thread-126483] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:54:07.121 [DEBUG] [Thread-126483] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:54:07.121 [DEBUG] [Thread-126483] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:54:07.121 [DEBUG] [Thread-126483] [transport.py] [_log()] Compression: none
2025-11-04T01:54:07.121 [DEBUG] [Thread-126483] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:54:07.178 [DEBUG] [Thread-126483] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:54:07.178 [DEBUG] [Thread-126483] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:54:07.178 [DEBUG] [Thread-126483] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:54:07.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:54:07.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:54:07.236 [DEBUG] [Thread-126483] [transport.py] [_log()] userauth is OK
2025-11-04T01:54:07.236 [DEBUG] [Thread-126483] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:54:07.236 [DEBUG] [Thread-126483] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:54:07.236 [DEBUG] [Thread-126483] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:54:07.236 [DEBUG] [Thread-126483] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:54:07.251 [INFO] [Thread-126483] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:54:07.251 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:54:07.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:54:08.094 [DEBUG] [Thread-126483] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:54:08.094 [DEBUG] [Thread-126483] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:54:08.142 [DEBUG] [Thread-126483] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:54:08.142 [DEBUG] [Thread-126483] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:54:08.152 [DEBUG] [Thread-126483] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:54:08.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:54:08.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:54:08.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:54:08.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:54:08.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:54:08.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:54:08.193 [DEBUG] [Thread-126483] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:54:12.978 [DEBUG] [Thread-126485 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:54:28.076 [DEBUG] [Thread-126486 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:54:36.947 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:54:36.948 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:54:38.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:54:38.205 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:54:38.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:54:39.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 54, 24), 27.27, 14.36, 0.0, 17.61, 17.3, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:54:39.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:54:24
2025-11-04T01:54:39.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:54:39.301 [DEBUG] [Thread-126487] [transport.py] [_log()] starting thread (client mode): 0xed07af0
2025-11-04T01:54:39.301 [DEBUG] [Thread-126487] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:54:39.317 [DEBUG] [Thread-126487] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:54:39.317 [INFO] [Thread-126487] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:54:39.321 [DEBUG] [Thread-126487] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:54:39.321 [DEBUG] [Thread-126487] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:54:39.321 [DEBUG] [Thread-126487] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:54:39.321 [DEBUG] [Thread-126487] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:54:39.321 [DEBUG] [Thread-126487] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:54:39.321 [DEBUG] [Thread-126487] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:54:39.321 [DEBUG] [Thread-126487] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:54:39.321 [DEBUG] [Thread-126487] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:54:39.321 [DEBUG] [Thread-126487] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:54:39.321 [DEBUG] [Thread-126487] [transport.py] [_log()] client lang: <none>
2025-11-04T01:54:39.321 [DEBUG] [Thread-126487] [transport.py] [_log()] server lang: <none>
2025-11-04T01:54:39.321 [DEBUG] [Thread-126487] [transport.py] [_log()] kex follows: False
2025-11-04T01:54:39.321 [DEBUG] [Thread-126487] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:54:39.321 [DEBUG] [Thread-126487] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:54:39.322 [DEBUG] [Thread-126487] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:54:39.322 [DEBUG] [Thread-126487] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:54:39.322 [DEBUG] [Thread-126487] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:54:39.322 [DEBUG] [Thread-126487] [transport.py] [_log()] Compression: none
2025-11-04T01:54:39.322 [DEBUG] [Thread-126487] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:54:39.339 [DEBUG] [Thread-126487] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:54:39.341 [DEBUG] [Thread-126487] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:54:39.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:54:39.342 [DEBUG] [Thread-126487] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:54:39.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:54:39.344 [DEBUG] [Thread-126487] [transport.py] [_log()] userauth is OK
2025-11-04T01:54:39.344 [DEBUG] [Thread-126487] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:54:39.344 [DEBUG] [Thread-126487] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:54:39.345 [DEBUG] [Thread-126487] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:54:39.345 [DEBUG] [Thread-126487] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:54:39.369 [INFO] [Thread-126487] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:54:39.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:54:40.036 [DEBUG] [Thread-126487] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:54:40.037 [DEBUG] [Thread-126487] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:54:40.037 [DEBUG] [Thread-126487] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:54:40.078 [DEBUG] [Thread-126487] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:54:40.078 [DEBUG] [Thread-126487] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:54:40.081 [DEBUG] [Thread-126487] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:54:40.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:54:40.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:54:40.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:54:40.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:54:40.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:54:40.115 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:54:40.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:54:40.116 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:54:40.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:54:40.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.995931 -999.00  +16.80  13.20     20   -6.00 1 1 1 1 1     0    0 23.02 -22.98 ZNESW 12.2 13.2 319.0 19.7 17.4 -23.9 17.2 -23.0 17.0 -22.4 17.3 -23.4
2025-11-04T01:54:40.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:54:40.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:54:40.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.995931
2025-11-04T01:54:40.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:54:40.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:54:40.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:54:40.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:54:40.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:54:40.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:54:24', tmtdew=27.27, humidity=14.36, cloud=0.0, wind=17.61, temperature=17.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:54:25', seeing=1.24, atlas_timestamp='2025-11-03T23:54:08.438', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01025000000000098, 0.0702499999999997, 0.09425000000000061, 0.08949999999999925, 0.10350000000000037, 0.11625000000000085, 0.03550000000000075, 0.1022500000000015, 0.018499999999999517, 0.07900000000000063, 0.12624999999999886, 0.13000000000000078, 0.25099999999999945, -0.01425000000000054, 0.08000000000000007, -0.025000000000000355, 0.11574999999999847, 0.10400000000000098, 0.19399999999999906, 0.20124999999999815, 0.18249999999999922, -0.619250000000001, 0.020250000000000767, 0.07875000000000121, 0.0804999999999989, 0.19149999999999956, 0.12025000000000041, 0.3125, 0.3260000000000005, -0.18599999999999817, 0.05900000000000105, 0.0860000000000003, 0.12924999999999898], zp_timestamp='2025-11-03T23:51:00')
2025-11-04T01:54:40.118 [DEBUG] [Thread-126487] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:54:40.202 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:54:40.217 [DEBUG] [Thread-126490] [transport.py] [_log()] starting thread (client mode): 0xed36260
2025-11-04T01:54:40.217 [DEBUG] [Thread-126490] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:54:40.231 [DEBUG] [Thread-126490] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:54:40.231 [INFO] [Thread-126490] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:54:40.239 [DEBUG] [Thread-126490] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:54:40.239 [DEBUG] [Thread-126490] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:54:40.240 [DEBUG] [Thread-126490] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:54:40.240 [DEBUG] [Thread-126490] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:54:40.240 [DEBUG] [Thread-126490] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:54:40.240 [DEBUG] [Thread-126490] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:54:40.240 [DEBUG] [Thread-126490] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:54:40.240 [DEBUG] [Thread-126490] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:54:40.240 [DEBUG] [Thread-126490] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:54:40.240 [DEBUG] [Thread-126490] [transport.py] [_log()] client lang: <none>
2025-11-04T01:54:40.240 [DEBUG] [Thread-126490] [transport.py] [_log()] server lang: <none>
2025-11-04T01:54:40.241 [DEBUG] [Thread-126490] [transport.py] [_log()] kex follows: False
2025-11-04T01:54:40.241 [DEBUG] [Thread-126490] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:54:40.241 [DEBUG] [Thread-126490] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:54:40.241 [DEBUG] [Thread-126490] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:54:40.241 [DEBUG] [Thread-126490] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:54:40.241 [DEBUG] [Thread-126490] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:54:40.241 [DEBUG] [Thread-126490] [transport.py] [_log()] Compression: none
2025-11-04T01:54:40.242 [DEBUG] [Thread-126490] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:54:40.304 [DEBUG] [Thread-126490] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:54:40.305 [DEBUG] [Thread-126490] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:54:40.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:54:40.306 [DEBUG] [Thread-126490] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:54:40.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:54:40.368 [DEBUG] [Thread-126490] [transport.py] [_log()] userauth is OK
2025-11-04T01:54:40.369 [DEBUG] [Thread-126490] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:54:40.369 [DEBUG] [Thread-126490] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:54:40.369 [DEBUG] [Thread-126490] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:54:40.369 [DEBUG] [Thread-126490] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:54:40.397 [INFO] [Thread-126490] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:54:40.398 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:54:40.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:54:41.229 [DEBUG] [Thread-126490] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:54:41.229 [DEBUG] [Thread-126490] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:54:41.278 [DEBUG] [Thread-126490] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:54:41.279 [DEBUG] [Thread-126490] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:54:41.291 [DEBUG] [Thread-126490] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:54:41.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:54:41.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:54:41.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:54:41.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:54:41.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:54:41.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:54:41.339 [DEBUG] [Thread-126490] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:54:43.106 [DEBUG] [Thread-126492 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:54:51.004 [DEBUG] [Thread-126493 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:54:58.143 [DEBUG] [Thread-126494 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:55:11.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:55:11.360 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:55:11.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:55:12.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 54, 57), 27.23, 14.34, 0.0, 16.29, 17.24, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:55:12.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:54:57
2025-11-04T01:55:12.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:55:12.387 [DEBUG] [Thread-126495] [transport.py] [_log()] starting thread (client mode): 0xed349d0
2025-11-04T01:55:12.388 [DEBUG] [Thread-126495] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:55:12.411 [DEBUG] [Thread-126495] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:55:12.411 [INFO] [Thread-126495] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:55:12.414 [DEBUG] [Thread-126495] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:55:12.414 [DEBUG] [Thread-126495] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:55:12.414 [DEBUG] [Thread-126495] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:55:12.414 [DEBUG] [Thread-126495] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:55:12.414 [DEBUG] [Thread-126495] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:55:12.414 [DEBUG] [Thread-126495] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:55:12.414 [DEBUG] [Thread-126495] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:55:12.414 [DEBUG] [Thread-126495] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:55:12.414 [DEBUG] [Thread-126495] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:55:12.414 [DEBUG] [Thread-126495] [transport.py] [_log()] client lang: <none>
2025-11-04T01:55:12.414 [DEBUG] [Thread-126495] [transport.py] [_log()] server lang: <none>
2025-11-04T01:55:12.414 [DEBUG] [Thread-126495] [transport.py] [_log()] kex follows: False
2025-11-04T01:55:12.414 [DEBUG] [Thread-126495] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:55:12.414 [DEBUG] [Thread-126495] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:55:12.414 [DEBUG] [Thread-126495] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:55:12.414 [DEBUG] [Thread-126495] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:55:12.414 [DEBUG] [Thread-126495] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:55:12.414 [DEBUG] [Thread-126495] [transport.py] [_log()] Compression: none
2025-11-04T01:55:12.414 [DEBUG] [Thread-126495] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:55:12.431 [DEBUG] [Thread-126495] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:55:12.434 [DEBUG] [Thread-126495] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:55:12.435 [DEBUG] [Thread-126495] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:55:12.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:55:12.437 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:55:12.477 [DEBUG] [Thread-126495] [transport.py] [_log()] userauth is OK
2025-11-04T01:55:12.477 [DEBUG] [Thread-126495] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:55:12.477 [DEBUG] [Thread-126495] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:55:12.477 [DEBUG] [Thread-126495] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:55:12.477 [DEBUG] [Thread-126495] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:55:12.495 [INFO] [Thread-126495] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:55:12.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:55:13.173 [DEBUG] [Thread-126497 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:55:14.598 [DEBUG] [Thread-126495] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:55:14.598 [DEBUG] [Thread-126495] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:55:14.600 [DEBUG] [Thread-126495] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:55:14.639 [DEBUG] [Thread-126495] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:55:14.639 [DEBUG] [Thread-126495] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:55:14.643 [DEBUG] [Thread-126495] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:55:14.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:55:14.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:55:14.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:55:14.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:55:14.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:55:14.668 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:55:14.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:55:14.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:55:14.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:55:14.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.995931 -999.00  +16.80  13.20     20   -6.00 1 1 1 1 1     0    0 23.02 -22.98 ZNESW 12.2 13.2 319.0 19.7 17.4 -23.9 17.2 -23.0 17.0 -22.4 17.3 -23.4
2025-11-04T01:55:14.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:55:14.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:55:14.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.995931
2025-11-04T01:55:14.676 [DEBUG] [Thread-126495] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:55:14.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:55:14.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:55:14.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:55:14.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:55:14.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:55:14.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:54:57', tmtdew=27.23, humidity=14.34, cloud=0.0, wind=16.29, temperature=17.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:54:57', seeing=1.09, atlas_timestamp='2025-11-03T23:54:08.438', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01025000000000098, 0.0702499999999997, 0.09425000000000061, 0.08949999999999925, 0.10350000000000037, 0.11625000000000085, 0.03550000000000075, 0.1022500000000015, 0.018499999999999517, 0.07900000000000063, 0.12624999999999886, 0.13000000000000078, 0.25099999999999945, -0.01425000000000054, 0.08000000000000007, -0.025000000000000355, 0.11574999999999847, 0.10400000000000098, 0.19399999999999906, 0.20124999999999815, 0.18249999999999922, -0.619250000000001, 0.020250000000000767, 0.07875000000000121, 0.0804999999999989, 0.19149999999999956, 0.12025000000000041, 0.3125, 0.3260000000000005, -0.18599999999999817, 0.05900000000000105, 0.0860000000000003, 0.12924999999999898], zp_timestamp='2025-11-03T23:51:00')
2025-11-04T01:55:14.783 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:55:14.795 [DEBUG] [Thread-126499] [transport.py] [_log()] starting thread (client mode): 0xed37460
2025-11-04T01:55:14.795 [DEBUG] [Thread-126499] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:55:14.809 [DEBUG] [Thread-126499] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:55:14.810 [INFO] [Thread-126499] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:55:14.822 [DEBUG] [Thread-126499] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:55:14.822 [DEBUG] [Thread-126499] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:55:14.822 [DEBUG] [Thread-126499] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:55:14.822 [DEBUG] [Thread-126499] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:55:14.822 [DEBUG] [Thread-126499] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:55:14.822 [DEBUG] [Thread-126499] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:55:14.822 [DEBUG] [Thread-126499] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:55:14.822 [DEBUG] [Thread-126499] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:55:14.822 [DEBUG] [Thread-126499] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:55:14.822 [DEBUG] [Thread-126499] [transport.py] [_log()] client lang: <none>
2025-11-04T01:55:14.822 [DEBUG] [Thread-126499] [transport.py] [_log()] server lang: <none>
2025-11-04T01:55:14.822 [DEBUG] [Thread-126499] [transport.py] [_log()] kex follows: False
2025-11-04T01:55:14.822 [DEBUG] [Thread-126499] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:55:14.822 [DEBUG] [Thread-126499] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:55:14.822 [DEBUG] [Thread-126499] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:55:14.822 [DEBUG] [Thread-126499] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:55:14.822 [DEBUG] [Thread-126499] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:55:14.822 [DEBUG] [Thread-126499] [transport.py] [_log()] Compression: none
2025-11-04T01:55:14.822 [DEBUG] [Thread-126499] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:55:14.876 [DEBUG] [Thread-126499] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:55:14.876 [DEBUG] [Thread-126499] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:55:14.877 [DEBUG] [Thread-126499] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:55:14.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:55:14.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:55:14.932 [DEBUG] [Thread-126499] [transport.py] [_log()] userauth is OK
2025-11-04T01:55:14.932 [DEBUG] [Thread-126499] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:55:14.933 [DEBUG] [Thread-126499] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:55:14.933 [DEBUG] [Thread-126499] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:55:14.933 [DEBUG] [Thread-126499] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:55:14.951 [INFO] [Thread-126499] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:55:14.951 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:55:14.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:55:15.785 [DEBUG] [Thread-126499] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:55:15.786 [DEBUG] [Thread-126499] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:55:15.833 [DEBUG] [Thread-126499] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:55:15.833 [DEBUG] [Thread-126499] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:55:15.843 [DEBUG] [Thread-126499] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:55:15.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:55:15.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:55:15.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:55:15.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:55:15.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:55:15.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:55:15.886 [DEBUG] [Thread-126499] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:55:28.218 [DEBUG] [Thread-126501 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:55:37.152 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:55:37.154 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:55:43.316 [DEBUG] [Thread-126502 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:55:45.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:55:45.900 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:55:45.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:55:46.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 55, 29), 27.2, 14.37, 0.0, 16.0, 17.19, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:55:46.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:55:29
2025-11-04T01:55:46.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:55:47.028 [DEBUG] [Thread-126503] [transport.py] [_log()] starting thread (client mode): 0x819aa40
2025-11-04T01:55:47.029 [DEBUG] [Thread-126503] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:55:47.041 [DEBUG] [Thread-126503] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:55:47.041 [INFO] [Thread-126503] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:55:47.046 [DEBUG] [Thread-126503] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:55:47.046 [DEBUG] [Thread-126503] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:55:47.046 [DEBUG] [Thread-126503] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:55:47.046 [DEBUG] [Thread-126503] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:55:47.046 [DEBUG] [Thread-126503] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:55:47.047 [DEBUG] [Thread-126503] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:55:47.047 [DEBUG] [Thread-126503] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:55:47.047 [DEBUG] [Thread-126503] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:55:47.047 [DEBUG] [Thread-126503] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:55:47.047 [DEBUG] [Thread-126503] [transport.py] [_log()] client lang: <none>
2025-11-04T01:55:47.047 [DEBUG] [Thread-126503] [transport.py] [_log()] server lang: <none>
2025-11-04T01:55:47.047 [DEBUG] [Thread-126503] [transport.py] [_log()] kex follows: False
2025-11-04T01:55:47.047 [DEBUG] [Thread-126503] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:55:47.048 [DEBUG] [Thread-126503] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:55:47.048 [DEBUG] [Thread-126503] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:55:47.048 [DEBUG] [Thread-126503] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:55:47.049 [DEBUG] [Thread-126503] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:55:47.049 [DEBUG] [Thread-126503] [transport.py] [_log()] Compression: none
2025-11-04T01:55:47.049 [DEBUG] [Thread-126503] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:55:47.088 [DEBUG] [Thread-126503] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:55:47.093 [DEBUG] [Thread-126503] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:55:47.095 [DEBUG] [Thread-126503] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:55:47.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:55:47.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:55:47.101 [DEBUG] [Thread-126503] [transport.py] [_log()] userauth is OK
2025-11-04T01:55:47.101 [DEBUG] [Thread-126503] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:55:47.101 [DEBUG] [Thread-126503] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:55:47.101 [DEBUG] [Thread-126503] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:55:47.101 [DEBUG] [Thread-126503] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:55:47.128 [INFO] [Thread-126503] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:55:47.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:55:47.776 [DEBUG] [Thread-126503] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:55:47.776 [DEBUG] [Thread-126503] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:55:47.779 [DEBUG] [Thread-126503] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:55:47.818 [DEBUG] [Thread-126503] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:55:47.818 [DEBUG] [Thread-126503] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:55:47.823 [DEBUG] [Thread-126503] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:55:47.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:55:47.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:55:47.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:55:47.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:55:47.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:55:47.849 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:55:47.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:55:47.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:55:47.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:55:47.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.996278 -999.00  +16.80  14.75     20   -6.00 1 1 1 1 1     0    0 22.39 -22.07 ZNESW 14.8 14.8 315.2 18.2 17.3 -23.9 -999.0 -999.0 17.1 -22.5 17.3 -23.4
2025-11-04T01:55:47.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:55:47.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:55:47.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.996278
2025-11-04T01:55:47.858 [DEBUG] [Thread-126503] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:55:47.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:55:47.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:55:47.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:55:47.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:55:47.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:55:47.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:55:29', tmtdew=27.2, humidity=14.37, cloud=0.0, wind=16.0, temperature=17.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:55:30', seeing=1.24, atlas_timestamp='2025-11-03T23:54:38.419', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.10725000000000051, 0.07624999999999993, 0.11400000000000077, 0.10350000000000037, 0.09325000000000117, 0.0029999999999983373, 0.05274999999999963, 0.015499999999999403, 0.06600000000000072, 0.15225000000000044, 0.10800000000000054, 0.192499999999999, 0.08024999999999949, 0.1039999999999992, -0.016000000000000014, 0.10125000000000028, 0.09500000000000064, 0.16199999999999903, 0.20224999999999937, 0.1609999999999996, -0.8412500000000005, 0.09925000000000139, 0.05274999999999963, 0.09399999999999942, 0.2264999999999997, 0.11175000000000068, 0.23550000000000004, 0.2990000000000004, 0.11900000000000155, 0.22500000000000142, 0.05000000000000071, 0.17774999999999963], zp_timestamp='2025-11-03T23:54:00')
2025-11-04T01:55:47.969 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:55:47.983 [DEBUG] [Thread-126506] [transport.py] [_log()] starting thread (client mode): 0xed34880
2025-11-04T01:55:47.983 [DEBUG] [Thread-126506] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:55:47.997 [DEBUG] [Thread-126506] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:55:47.998 [INFO] [Thread-126506] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:55:48.005 [DEBUG] [Thread-126506] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:55:48.005 [DEBUG] [Thread-126506] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:55:48.005 [DEBUG] [Thread-126506] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:55:48.005 [DEBUG] [Thread-126506] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:55:48.005 [DEBUG] [Thread-126506] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:55:48.005 [DEBUG] [Thread-126506] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:55:48.005 [DEBUG] [Thread-126506] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:55:48.005 [DEBUG] [Thread-126506] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:55:48.005 [DEBUG] [Thread-126506] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:55:48.005 [DEBUG] [Thread-126506] [transport.py] [_log()] client lang: <none>
2025-11-04T01:55:48.005 [DEBUG] [Thread-126506] [transport.py] [_log()] server lang: <none>
2025-11-04T01:55:48.006 [DEBUG] [Thread-126506] [transport.py] [_log()] kex follows: False
2025-11-04T01:55:48.006 [DEBUG] [Thread-126506] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:55:48.006 [DEBUG] [Thread-126506] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:55:48.006 [DEBUG] [Thread-126506] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:55:48.006 [DEBUG] [Thread-126506] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:55:48.006 [DEBUG] [Thread-126506] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:55:48.006 [DEBUG] [Thread-126506] [transport.py] [_log()] Compression: none
2025-11-04T01:55:48.006 [DEBUG] [Thread-126506] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:55:48.068 [DEBUG] [Thread-126506] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:55:48.069 [DEBUG] [Thread-126506] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:55:48.070 [DEBUG] [Thread-126506] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:55:48.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:55:48.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:55:48.129 [DEBUG] [Thread-126506] [transport.py] [_log()] userauth is OK
2025-11-04T01:55:48.129 [DEBUG] [Thread-126506] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:55:48.129 [DEBUG] [Thread-126506] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:55:48.129 [DEBUG] [Thread-126506] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:55:48.129 [DEBUG] [Thread-126506] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:55:48.150 [INFO] [Thread-126506] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:55:48.151 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:55:48.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:55:49.062 [DEBUG] [Thread-126506] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:55:49.062 [DEBUG] [Thread-126506] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:55:49.099 [DEBUG] [Thread-126506] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:55:49.100 [DEBUG] [Thread-126506] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:55:49.108 [DEBUG] [Thread-126506] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:55:49.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:55:49.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:55:49.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:55:49.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:55:49.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:55:49.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:55:49.143 [DEBUG] [Thread-126506] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:55:51.368 [DEBUG] [Thread-126508 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:55:58.365 [DEBUG] [Thread-126509 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:56:13.498 [DEBUG] [Thread-126510 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:56:19.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:56:19.137 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:56:19.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:56:20.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 56, 2), 27.22, 14.36, 0.0, 16.48, 17.22, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:56:20.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:56:02
2025-11-04T01:56:20.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:56:20.309 [DEBUG] [Thread-126511] [transport.py] [_log()] starting thread (client mode): 0x819b6d0
2025-11-04T01:56:20.309 [DEBUG] [Thread-126511] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:56:20.320 [DEBUG] [Thread-126511] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:56:20.320 [INFO] [Thread-126511] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:56:20.321 [DEBUG] [Thread-126511] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:56:20.321 [DEBUG] [Thread-126511] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:56:20.321 [DEBUG] [Thread-126511] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:56:20.321 [DEBUG] [Thread-126511] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:56:20.321 [DEBUG] [Thread-126511] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:56:20.321 [DEBUG] [Thread-126511] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:56:20.321 [DEBUG] [Thread-126511] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:56:20.321 [DEBUG] [Thread-126511] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:56:20.321 [DEBUG] [Thread-126511] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:56:20.321 [DEBUG] [Thread-126511] [transport.py] [_log()] client lang: <none>
2025-11-04T01:56:20.322 [DEBUG] [Thread-126511] [transport.py] [_log()] server lang: <none>
2025-11-04T01:56:20.322 [DEBUG] [Thread-126511] [transport.py] [_log()] kex follows: False
2025-11-04T01:56:20.322 [DEBUG] [Thread-126511] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:56:20.322 [DEBUG] [Thread-126511] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:56:20.322 [DEBUG] [Thread-126511] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:56:20.322 [DEBUG] [Thread-126511] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:56:20.322 [DEBUG] [Thread-126511] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:56:20.322 [DEBUG] [Thread-126511] [transport.py] [_log()] Compression: none
2025-11-04T01:56:20.322 [DEBUG] [Thread-126511] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:56:20.331 [DEBUG] [Thread-126511] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:56:20.331 [DEBUG] [Thread-126511] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:56:20.332 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:56:20.332 [DEBUG] [Thread-126511] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:56:20.332 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:56:20.333 [DEBUG] [Thread-126511] [transport.py] [_log()] userauth is OK
2025-11-04T01:56:20.333 [DEBUG] [Thread-126511] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:56:20.333 [DEBUG] [Thread-126511] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:56:20.333 [DEBUG] [Thread-126511] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:56:20.333 [DEBUG] [Thread-126511] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:56:20.346 [INFO] [Thread-126511] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:56:20.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:56:20.905 [DEBUG] [Thread-126511] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:56:20.905 [DEBUG] [Thread-126511] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:56:20.906 [DEBUG] [Thread-126511] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:56:20.946 [DEBUG] [Thread-126511] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:56:20.946 [DEBUG] [Thread-126511] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:56:20.948 [DEBUG] [Thread-126511] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:56:20.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:56:20.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:56:20.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:56:20.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:56:20.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:56:20.970 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:56:20.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:56:20.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:56:20.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:56:20.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.996973 -999.00  +16.90  15.45     20   -6.00 1 1 1 1 1     0    0 22.39 -22.86 ZNESW 15.0 15.4 320.8 20.6 17.4 -23.9 17.3 -23.0 17.0 -22.7 17.3 -23.5
2025-11-04T01:56:20.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:56:20.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:56:20.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.996973
2025-11-04T01:56:20.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:56:20.973 [DEBUG] [Thread-126511] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:56:20.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:56:20.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:56:20.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:56:20.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:56:20.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:56:02', tmtdew=27.22, humidity=14.36, cloud=0.0, wind=16.48, temperature=17.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:56:03', seeing=1.24, atlas_timestamp='2025-11-03T23:55:38.467', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.10725000000000051, 0.07624999999999993, 0.11400000000000077, 0.10350000000000037, 0.09325000000000117, 0.0029999999999983373, 0.05274999999999963, 0.015499999999999403, 0.06600000000000072, 0.15225000000000044, 0.10800000000000054, 0.192499999999999, 0.08024999999999949, 0.1039999999999992, -0.016000000000000014, 0.10125000000000028, 0.09500000000000064, 0.16199999999999903, 0.20224999999999937, 0.1609999999999996, -0.8412500000000005, 0.09925000000000139, 0.05274999999999963, 0.09399999999999942, 0.2264999999999997, 0.11175000000000068, 0.23550000000000004, 0.2990000000000004, 0.11900000000000155, 0.22500000000000142, 0.05000000000000071, 0.17774999999999963], zp_timestamp='2025-11-03T23:54:00')
2025-11-04T01:56:21.049 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:56:21.061 [DEBUG] [Thread-126514] [transport.py] [_log()] starting thread (client mode): 0xed04a30
2025-11-04T01:56:21.062 [DEBUG] [Thread-126514] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:56:21.076 [DEBUG] [Thread-126514] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:56:21.076 [INFO] [Thread-126514] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:56:21.083 [DEBUG] [Thread-126514] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:56:21.083 [DEBUG] [Thread-126514] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:56:21.084 [DEBUG] [Thread-126514] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:56:21.084 [DEBUG] [Thread-126514] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:56:21.084 [DEBUG] [Thread-126514] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:56:21.084 [DEBUG] [Thread-126514] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:56:21.084 [DEBUG] [Thread-126514] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:56:21.084 [DEBUG] [Thread-126514] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:56:21.084 [DEBUG] [Thread-126514] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:56:21.084 [DEBUG] [Thread-126514] [transport.py] [_log()] client lang: <none>
2025-11-04T01:56:21.084 [DEBUG] [Thread-126514] [transport.py] [_log()] server lang: <none>
2025-11-04T01:56:21.084 [DEBUG] [Thread-126514] [transport.py] [_log()] kex follows: False
2025-11-04T01:56:21.084 [DEBUG] [Thread-126514] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:56:21.084 [DEBUG] [Thread-126514] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:56:21.084 [DEBUG] [Thread-126514] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:56:21.084 [DEBUG] [Thread-126514] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:56:21.084 [DEBUG] [Thread-126514] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:56:21.084 [DEBUG] [Thread-126514] [transport.py] [_log()] Compression: none
2025-11-04T01:56:21.084 [DEBUG] [Thread-126514] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:56:21.142 [DEBUG] [Thread-126514] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:56:21.142 [DEBUG] [Thread-126514] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:56:21.143 [DEBUG] [Thread-126514] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:56:21.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:56:21.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:56:21.200 [DEBUG] [Thread-126514] [transport.py] [_log()] userauth is OK
2025-11-04T01:56:21.200 [DEBUG] [Thread-126514] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:56:21.200 [DEBUG] [Thread-126514] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:56:21.200 [DEBUG] [Thread-126514] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:56:21.200 [DEBUG] [Thread-126514] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:56:21.214 [INFO] [Thread-126514] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:56:21.214 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:56:21.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:56:22.049 [DEBUG] [Thread-126514] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:56:22.050 [DEBUG] [Thread-126514] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:56:22.098 [DEBUG] [Thread-126514] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:56:22.098 [DEBUG] [Thread-126514] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:56:22.108 [DEBUG] [Thread-126514] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:56:22.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:56:22.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:56:22.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:56:22.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:56:22.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:56:22.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:56:22.144 [DEBUG] [Thread-126514] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:56:28.565 [DEBUG] [Thread-126516 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:56:37.355 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:56:37.356 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:56:43.651 [DEBUG] [Thread-126517 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:56:51.751 [DEBUG] [Thread-126518 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:56:52.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:56:52.149 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:56:52.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:56:52.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 56, 35), 27.29, 14.32, 0.0, 18.53, 17.25, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:56:52.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:56:35
2025-11-04T01:56:53.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:56:53.220 [DEBUG] [Thread-126519] [transport.py] [_log()] starting thread (client mode): 0xed37370
2025-11-04T01:56:53.220 [DEBUG] [Thread-126519] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:56:53.231 [DEBUG] [Thread-126519] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:56:53.232 [INFO] [Thread-126519] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:56:53.235 [DEBUG] [Thread-126519] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:56:53.235 [DEBUG] [Thread-126519] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:56:53.235 [DEBUG] [Thread-126519] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:56:53.235 [DEBUG] [Thread-126519] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:56:53.235 [DEBUG] [Thread-126519] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:56:53.235 [DEBUG] [Thread-126519] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:56:53.235 [DEBUG] [Thread-126519] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:56:53.235 [DEBUG] [Thread-126519] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:56:53.235 [DEBUG] [Thread-126519] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:56:53.236 [DEBUG] [Thread-126519] [transport.py] [_log()] client lang: <none>
2025-11-04T01:56:53.236 [DEBUG] [Thread-126519] [transport.py] [_log()] server lang: <none>
2025-11-04T01:56:53.236 [DEBUG] [Thread-126519] [transport.py] [_log()] kex follows: False
2025-11-04T01:56:53.236 [DEBUG] [Thread-126519] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:56:53.236 [DEBUG] [Thread-126519] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:56:53.236 [DEBUG] [Thread-126519] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:56:53.236 [DEBUG] [Thread-126519] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:56:53.236 [DEBUG] [Thread-126519] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:56:53.236 [DEBUG] [Thread-126519] [transport.py] [_log()] Compression: none
2025-11-04T01:56:53.236 [DEBUG] [Thread-126519] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:56:53.254 [DEBUG] [Thread-126519] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:56:53.255 [DEBUG] [Thread-126519] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:56:53.256 [DEBUG] [Thread-126519] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:56:53.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:56:53.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:56:53.297 [DEBUG] [Thread-126519] [transport.py] [_log()] userauth is OK
2025-11-04T01:56:53.297 [DEBUG] [Thread-126519] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:56:53.298 [DEBUG] [Thread-126519] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:56:53.298 [DEBUG] [Thread-126519] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:56:53.298 [DEBUG] [Thread-126519] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:56:53.335 [INFO] [Thread-126519] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:56:53.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:56:53.967 [DEBUG] [Thread-126519] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:56:53.967 [DEBUG] [Thread-126519] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:56:53.967 [DEBUG] [Thread-126519] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:56:54.008 [DEBUG] [Thread-126519] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:56:54.008 [DEBUG] [Thread-126519] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:56:54.010 [DEBUG] [Thread-126519] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:56:54.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:56:54.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:56:54.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:56:54.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:56:54.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:56:54.037 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:56:54.037 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:56:54.037 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:56:54.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:56:54.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.997320 -999.00  +16.80  16.14     20   -6.00 1 1 1 1 1     0    0 22.06 -23.87 ZNESW 15.7 16.1 323.4 17.3 17.3 -23.9 17.2 -23.0 17.0 -22.5 17.3 -23.3
2025-11-04T01:56:54.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:56:54.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:56:54.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.997320
2025-11-04T01:56:54.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:56:54.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:56:54.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:56:54.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:56:54.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:56:54.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:56:35', tmtdew=27.29, humidity=14.32, cloud=0.0, wind=18.53, temperature=17.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:56:36', seeing=1.14, atlas_timestamp='2025-11-03T23:56:08.448', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.10725000000000051, 0.07624999999999993, 0.11400000000000077, 0.10350000000000037, 0.09325000000000117, 0.0029999999999983373, 0.05274999999999963, 0.015499999999999403, 0.06600000000000072, 0.15225000000000044, 0.10800000000000054, 0.192499999999999, 0.08024999999999949, 0.1039999999999992, -0.016000000000000014, 0.10125000000000028, 0.09500000000000064, 0.16199999999999903, 0.20224999999999937, 0.1609999999999996, -0.8412500000000005, 0.09925000000000139, 0.05274999999999963, 0.09399999999999942, 0.2264999999999997, 0.11175000000000068, 0.23550000000000004, 0.2990000000000004, 0.11900000000000155, 0.22500000000000142, 0.05000000000000071, 0.17774999999999963], zp_timestamp='2025-11-03T23:54:00')
2025-11-04T01:56:54.038 [DEBUG] [Thread-126519] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:56:54.110 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:56:54.121 [DEBUG] [Thread-126522] [transport.py] [_log()] starting thread (client mode): 0xed066b0
2025-11-04T01:56:54.121 [DEBUG] [Thread-126522] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:56:54.137 [DEBUG] [Thread-126522] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:56:54.137 [INFO] [Thread-126522] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:56:54.145 [DEBUG] [Thread-126522] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:56:54.145 [DEBUG] [Thread-126522] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:56:54.145 [DEBUG] [Thread-126522] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:56:54.145 [DEBUG] [Thread-126522] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:56:54.145 [DEBUG] [Thread-126522] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:56:54.145 [DEBUG] [Thread-126522] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:56:54.145 [DEBUG] [Thread-126522] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:56:54.146 [DEBUG] [Thread-126522] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:56:54.146 [DEBUG] [Thread-126522] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:56:54.146 [DEBUG] [Thread-126522] [transport.py] [_log()] client lang: <none>
2025-11-04T01:56:54.146 [DEBUG] [Thread-126522] [transport.py] [_log()] server lang: <none>
2025-11-04T01:56:54.146 [DEBUG] [Thread-126522] [transport.py] [_log()] kex follows: False
2025-11-04T01:56:54.146 [DEBUG] [Thread-126522] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:56:54.146 [DEBUG] [Thread-126522] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:56:54.146 [DEBUG] [Thread-126522] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:56:54.146 [DEBUG] [Thread-126522] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:56:54.146 [DEBUG] [Thread-126522] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:56:54.146 [DEBUG] [Thread-126522] [transport.py] [_log()] Compression: none
2025-11-04T01:56:54.146 [DEBUG] [Thread-126522] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:56:54.203 [DEBUG] [Thread-126522] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:56:54.203 [DEBUG] [Thread-126522] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:56:54.203 [DEBUG] [Thread-126522] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:56:54.203 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:56:54.204 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:56:54.265 [DEBUG] [Thread-126522] [transport.py] [_log()] userauth is OK
2025-11-04T01:56:54.265 [DEBUG] [Thread-126522] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:56:54.265 [DEBUG] [Thread-126522] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:56:54.265 [DEBUG] [Thread-126522] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:56:54.265 [DEBUG] [Thread-126522] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:56:54.280 [INFO] [Thread-126522] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:56:54.280 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:56:54.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:56:55.136 [DEBUG] [Thread-126522] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:56:55.137 [DEBUG] [Thread-126522] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:56:55.184 [DEBUG] [Thread-126522] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:56:55.185 [DEBUG] [Thread-126522] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:56:55.194 [DEBUG] [Thread-126522] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:56:55.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:56:55.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:56:55.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:56:55.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:56:55.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:56:55.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:56:55.235 [DEBUG] [Thread-126522] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:56:58.702 [DEBUG] [Thread-126524 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:57:13.784 [DEBUG] [Thread-126525 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:57:25.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:57:25.268 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:57:25.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:57:26.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 57, 7), 27.3, 14.31, 0.0, 18.26, 17.22, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:57:26.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:57:07
2025-11-04T01:57:26.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:57:26.374 [DEBUG] [Thread-126526] [transport.py] [_log()] starting thread (client mode): 0x8198640
2025-11-04T01:57:26.375 [DEBUG] [Thread-126526] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:57:26.386 [DEBUG] [Thread-126526] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:57:26.386 [INFO] [Thread-126526] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:57:26.391 [DEBUG] [Thread-126526] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:57:26.391 [DEBUG] [Thread-126526] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:57:26.391 [DEBUG] [Thread-126526] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:57:26.391 [DEBUG] [Thread-126526] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:57:26.391 [DEBUG] [Thread-126526] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:57:26.391 [DEBUG] [Thread-126526] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:57:26.391 [DEBUG] [Thread-126526] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:57:26.391 [DEBUG] [Thread-126526] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:57:26.391 [DEBUG] [Thread-126526] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:57:26.392 [DEBUG] [Thread-126526] [transport.py] [_log()] client lang: <none>
2025-11-04T01:57:26.392 [DEBUG] [Thread-126526] [transport.py] [_log()] server lang: <none>
2025-11-04T01:57:26.392 [DEBUG] [Thread-126526] [transport.py] [_log()] kex follows: False
2025-11-04T01:57:26.392 [DEBUG] [Thread-126526] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:57:26.392 [DEBUG] [Thread-126526] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:57:26.392 [DEBUG] [Thread-126526] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:57:26.392 [DEBUG] [Thread-126526] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:57:26.393 [DEBUG] [Thread-126526] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:57:26.393 [DEBUG] [Thread-126526] [transport.py] [_log()] Compression: none
2025-11-04T01:57:26.393 [DEBUG] [Thread-126526] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:57:26.428 [DEBUG] [Thread-126526] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:57:26.431 [DEBUG] [Thread-126526] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:57:26.433 [DEBUG] [Thread-126526] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:57:26.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:57:26.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:57:26.436 [DEBUG] [Thread-126526] [transport.py] [_log()] userauth is OK
2025-11-04T01:57:26.436 [DEBUG] [Thread-126526] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:57:26.436 [DEBUG] [Thread-126526] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:57:26.436 [DEBUG] [Thread-126526] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:57:26.436 [DEBUG] [Thread-126526] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:57:26.457 [INFO] [Thread-126526] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:57:26.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:57:27.033 [DEBUG] [Thread-126526] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:57:27.033 [DEBUG] [Thread-126526] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:57:27.043 [DEBUG] [Thread-126526] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:57:27.074 [DEBUG] [Thread-126526] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:57:27.074 [DEBUG] [Thread-126526] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:57:27.077 [DEBUG] [Thread-126526] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:57:27.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:57:27.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:57:27.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:57:27.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:57:27.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:57:27.096 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:57:27.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:57:27.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:57:27.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:57:27.098 [DEBUG] [Thread-126526] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:57:27.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.997667 -999.00  +16.80  14.67     20   -5.90 1 1 1 1 1     0    0 22.46 -25.73 ZNESW 16.6 14.7 321.2 21.3 17.3 -23.8 17.2 -22.9 17.0 -22.5 17.2 -23.4
2025-11-04T01:57:27.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:57:27.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:57:27.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.997667
2025-11-04T01:57:27.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:57:27.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:57:27.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:57:27.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:57:27.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:57:27.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:57:07', tmtdew=27.3, humidity=14.31, cloud=0.0, wind=18.26, temperature=17.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:57:08', seeing=1.14, atlas_timestamp='2025-11-03T23:56:38.429', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.10725000000000051, 0.07624999999999993, 0.11400000000000077, 0.10350000000000037, 0.09325000000000117, 0.0029999999999983373, 0.05274999999999963, 0.015499999999999403, 0.06600000000000072, 0.15225000000000044, 0.10800000000000054, 0.192499999999999, 0.08024999999999949, 0.1039999999999992, -0.016000000000000014, 0.10125000000000028, 0.09500000000000064, 0.16199999999999903, 0.20224999999999937, 0.1609999999999996, -0.8412500000000005, 0.09925000000000139, 0.05274999999999963, 0.09399999999999942, 0.2264999999999997, 0.11175000000000068, 0.23550000000000004, 0.2990000000000004, 0.11900000000000155, 0.22500000000000142, 0.05000000000000071, 0.17774999999999963], zp_timestamp='2025-11-03T23:54:00')
2025-11-04T01:57:27.189 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:57:27.201 [DEBUG] [Thread-126529] [transport.py] [_log()] starting thread (client mode): 0xed36740
2025-11-04T01:57:27.201 [DEBUG] [Thread-126529] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:57:27.216 [DEBUG] [Thread-126529] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:57:27.217 [INFO] [Thread-126529] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:57:27.224 [DEBUG] [Thread-126529] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:57:27.224 [DEBUG] [Thread-126529] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:57:27.224 [DEBUG] [Thread-126529] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:57:27.224 [DEBUG] [Thread-126529] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:57:27.224 [DEBUG] [Thread-126529] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:57:27.224 [DEBUG] [Thread-126529] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:57:27.224 [DEBUG] [Thread-126529] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:57:27.224 [DEBUG] [Thread-126529] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:57:27.224 [DEBUG] [Thread-126529] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:57:27.224 [DEBUG] [Thread-126529] [transport.py] [_log()] client lang: <none>
2025-11-04T01:57:27.224 [DEBUG] [Thread-126529] [transport.py] [_log()] server lang: <none>
2025-11-04T01:57:27.224 [DEBUG] [Thread-126529] [transport.py] [_log()] kex follows: False
2025-11-04T01:57:27.224 [DEBUG] [Thread-126529] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:57:27.224 [DEBUG] [Thread-126529] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:57:27.224 [DEBUG] [Thread-126529] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:57:27.224 [DEBUG] [Thread-126529] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:57:27.224 [DEBUG] [Thread-126529] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:57:27.224 [DEBUG] [Thread-126529] [transport.py] [_log()] Compression: none
2025-11-04T01:57:27.224 [DEBUG] [Thread-126529] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:57:27.286 [DEBUG] [Thread-126529] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:57:27.286 [DEBUG] [Thread-126529] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:57:27.286 [DEBUG] [Thread-126529] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:57:27.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:57:27.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:57:27.345 [DEBUG] [Thread-126529] [transport.py] [_log()] userauth is OK
2025-11-04T01:57:27.345 [DEBUG] [Thread-126529] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:57:27.345 [DEBUG] [Thread-126529] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:57:27.345 [DEBUG] [Thread-126529] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:57:27.345 [DEBUG] [Thread-126529] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:57:27.359 [INFO] [Thread-126529] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:57:27.368 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:57:27.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:57:28.216 [DEBUG] [Thread-126529] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:57:28.216 [DEBUG] [Thread-126529] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:57:28.268 [DEBUG] [Thread-126529] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:57:28.268 [DEBUG] [Thread-126529] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:57:28.278 [DEBUG] [Thread-126529] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:57:28.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:57:28.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:57:28.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:57:28.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:57:28.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:57:28.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:57:28.318 [DEBUG] [Thread-126529] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:57:28.835 [DEBUG] [Thread-126531 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:57:37.566 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:57:37.567 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:57:43.923 [DEBUG] [Thread-126532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:57:52.099 [DEBUG] [Thread-126533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:57:58.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:57:58.341 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:57:58.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:57:58.952 [DEBUG] [Thread-126534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:57:59.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 57, 40), 27.34, 14.32, 0.0, 18.39, 17.3, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:57:59.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:57:40
2025-11-04T01:57:59.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:57:59.436 [DEBUG] [Thread-126535] [transport.py] [_log()] starting thread (client mode): 0xed349a0
2025-11-04T01:57:59.436 [DEBUG] [Thread-126535] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:57:59.454 [DEBUG] [Thread-126535] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:57:59.454 [INFO] [Thread-126535] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:57:59.457 [DEBUG] [Thread-126535] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:57:59.457 [DEBUG] [Thread-126535] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:57:59.458 [DEBUG] [Thread-126535] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:57:59.458 [DEBUG] [Thread-126535] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:57:59.458 [DEBUG] [Thread-126535] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:57:59.458 [DEBUG] [Thread-126535] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:57:59.458 [DEBUG] [Thread-126535] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:57:59.458 [DEBUG] [Thread-126535] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:57:59.458 [DEBUG] [Thread-126535] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:57:59.458 [DEBUG] [Thread-126535] [transport.py] [_log()] client lang: <none>
2025-11-04T01:57:59.458 [DEBUG] [Thread-126535] [transport.py] [_log()] server lang: <none>
2025-11-04T01:57:59.458 [DEBUG] [Thread-126535] [transport.py] [_log()] kex follows: False
2025-11-04T01:57:59.458 [DEBUG] [Thread-126535] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:57:59.458 [DEBUG] [Thread-126535] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:57:59.459 [DEBUG] [Thread-126535] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:57:59.459 [DEBUG] [Thread-126535] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:57:59.459 [DEBUG] [Thread-126535] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:57:59.459 [DEBUG] [Thread-126535] [transport.py] [_log()] Compression: none
2025-11-04T01:57:59.459 [DEBUG] [Thread-126535] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:57:59.480 [DEBUG] [Thread-126535] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:57:59.481 [DEBUG] [Thread-126535] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:57:59.483 [DEBUG] [Thread-126535] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:57:59.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:57:59.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:57:59.525 [DEBUG] [Thread-126535] [transport.py] [_log()] userauth is OK
2025-11-04T01:57:59.525 [DEBUG] [Thread-126535] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:57:59.526 [DEBUG] [Thread-126535] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:57:59.526 [DEBUG] [Thread-126535] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:57:59.526 [DEBUG] [Thread-126535] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:57:59.565 [INFO] [Thread-126535] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:57:59.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:58:00.218 [DEBUG] [Thread-126535] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:58:00.218 [DEBUG] [Thread-126535] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:58:00.219 [DEBUG] [Thread-126535] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:58:00.259 [DEBUG] [Thread-126535] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:58:00.260 [DEBUG] [Thread-126535] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:58:00.262 [DEBUG] [Thread-126535] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:58:00.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:58:00.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:58:00.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:58:00.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:58:00.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:58:00.284 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:58:00.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:58:00.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:58:00.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:58:00.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.998014 -999.00  +16.80  15.70     20   -5.90 1 1 1 1 1     0    0 22.19 -26.08 ZNESW 17.3 15.7 323.8 18.8 17.3 -23.8 17.2 -22.7 17.0 -22.7 17.2 -23.3
2025-11-04T01:58:00.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:58:00.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:58:00.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.998014
2025-11-04T01:58:00.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:58:00.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:58:00.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:58:00.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:58:00.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:58:00.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:57:40', tmtdew=27.34, humidity=14.32, cloud=0.0, wind=18.39, temperature=17.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:57:41', seeing=1.11, atlas_timestamp='2025-11-03T23:57:08.410', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.10725000000000051, 0.07624999999999993, 0.11400000000000077, 0.10350000000000037, 0.09325000000000117, 0.0029999999999983373, 0.05274999999999963, 0.015499999999999403, 0.06600000000000072, 0.15225000000000044, 0.10800000000000054, 0.192499999999999, 0.08024999999999949, 0.1039999999999992, -0.016000000000000014, 0.10125000000000028, 0.09500000000000064, 0.16199999999999903, 0.20224999999999937, 0.1609999999999996, -0.8412500000000005, 0.09925000000000139, 0.05274999999999963, 0.09399999999999942, 0.2264999999999997, 0.11175000000000068, 0.23550000000000004, 0.2990000000000004, 0.11900000000000155, 0.22500000000000142, 0.05000000000000071, 0.17774999999999963], zp_timestamp='2025-11-03T23:54:00')
2025-11-04T01:58:00.290 [DEBUG] [Thread-126535] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:58:00.365 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:58:00.378 [DEBUG] [Thread-126538] [transport.py] [_log()] starting thread (client mode): 0xed37190
2025-11-04T01:58:00.378 [DEBUG] [Thread-126538] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:58:00.400 [DEBUG] [Thread-126538] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:58:00.400 [INFO] [Thread-126538] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:58:00.409 [DEBUG] [Thread-126538] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:58:00.409 [DEBUG] [Thread-126538] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:58:00.409 [DEBUG] [Thread-126538] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:58:00.409 [DEBUG] [Thread-126538] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:58:00.409 [DEBUG] [Thread-126538] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:58:00.409 [DEBUG] [Thread-126538] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:58:00.409 [DEBUG] [Thread-126538] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:58:00.409 [DEBUG] [Thread-126538] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:58:00.409 [DEBUG] [Thread-126538] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:58:00.409 [DEBUG] [Thread-126538] [transport.py] [_log()] client lang: <none>
2025-11-04T01:58:00.409 [DEBUG] [Thread-126538] [transport.py] [_log()] server lang: <none>
2025-11-04T01:58:00.409 [DEBUG] [Thread-126538] [transport.py] [_log()] kex follows: False
2025-11-04T01:58:00.409 [DEBUG] [Thread-126538] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:58:00.410 [DEBUG] [Thread-126538] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:58:00.410 [DEBUG] [Thread-126538] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:58:00.410 [DEBUG] [Thread-126538] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:58:00.410 [DEBUG] [Thread-126538] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:58:00.410 [DEBUG] [Thread-126538] [transport.py] [_log()] Compression: none
2025-11-04T01:58:00.410 [DEBUG] [Thread-126538] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:58:00.468 [DEBUG] [Thread-126538] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:58:00.468 [DEBUG] [Thread-126538] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:58:00.468 [DEBUG] [Thread-126538] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:58:00.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:58:00.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:58:00.527 [DEBUG] [Thread-126538] [transport.py] [_log()] userauth is OK
2025-11-04T01:58:00.528 [DEBUG] [Thread-126538] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:58:00.528 [DEBUG] [Thread-126538] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:58:00.528 [DEBUG] [Thread-126538] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:58:00.528 [DEBUG] [Thread-126538] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:58:00.547 [INFO] [Thread-126538] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:58:00.547 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:58:00.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:58:01.410 [DEBUG] [Thread-126538] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:58:01.410 [DEBUG] [Thread-126538] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:58:01.466 [DEBUG] [Thread-126538] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:58:01.466 [DEBUG] [Thread-126538] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:58:01.478 [DEBUG] [Thread-126538] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:58:01.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:58:01.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:58:01.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:58:01.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:58:01.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:58:01.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:58:01.520 [DEBUG] [Thread-126538] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:58:13.981 [DEBUG] [Thread-126540 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:58:29.086 [DEBUG] [Thread-126541 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:58:31.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:58:31.545 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:58:31.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:58:32.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 58, 12), 27.3, 14.34, 0.0, 18.37, 17.19, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:58:32.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:58:12
2025-11-04T01:58:32.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:58:32.604 [DEBUG] [Thread-126542] [transport.py] [_log()] starting thread (client mode): 0x117bf5b0
2025-11-04T01:58:32.605 [DEBUG] [Thread-126542] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:58:32.621 [DEBUG] [Thread-126542] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:58:32.622 [INFO] [Thread-126542] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:58:32.627 [DEBUG] [Thread-126542] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:58:32.627 [DEBUG] [Thread-126542] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:58:32.627 [DEBUG] [Thread-126542] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:58:32.627 [DEBUG] [Thread-126542] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:58:32.627 [DEBUG] [Thread-126542] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:58:32.627 [DEBUG] [Thread-126542] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:58:32.627 [DEBUG] [Thread-126542] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:58:32.628 [DEBUG] [Thread-126542] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:58:32.628 [DEBUG] [Thread-126542] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:58:32.628 [DEBUG] [Thread-126542] [transport.py] [_log()] client lang: <none>
2025-11-04T01:58:32.628 [DEBUG] [Thread-126542] [transport.py] [_log()] server lang: <none>
2025-11-04T01:58:32.628 [DEBUG] [Thread-126542] [transport.py] [_log()] kex follows: False
2025-11-04T01:58:32.628 [DEBUG] [Thread-126542] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:58:32.629 [DEBUG] [Thread-126542] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:58:32.629 [DEBUG] [Thread-126542] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:58:32.629 [DEBUG] [Thread-126542] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:58:32.629 [DEBUG] [Thread-126542] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:58:32.630 [DEBUG] [Thread-126542] [transport.py] [_log()] Compression: none
2025-11-04T01:58:32.630 [DEBUG] [Thread-126542] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:58:32.665 [DEBUG] [Thread-126542] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:58:32.670 [DEBUG] [Thread-126542] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:58:32.672 [DEBUG] [Thread-126542] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:58:32.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:58:32.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:58:32.677 [DEBUG] [Thread-126542] [transport.py] [_log()] userauth is OK
2025-11-04T01:58:32.677 [DEBUG] [Thread-126542] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:58:32.677 [DEBUG] [Thread-126542] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:58:32.677 [DEBUG] [Thread-126542] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:58:32.677 [DEBUG] [Thread-126542] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:58:32.703 [INFO] [Thread-126542] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:58:32.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:58:33.305 [DEBUG] [Thread-126542] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:58:33.305 [DEBUG] [Thread-126542] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:58:33.307 [DEBUG] [Thread-126542] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:58:33.346 [DEBUG] [Thread-126542] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:58:33.347 [DEBUG] [Thread-126542] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:58:33.351 [DEBUG] [Thread-126542] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:58:33.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:58:33.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:58:33.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:58:33.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:58:33.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:58:33.382 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:58:33.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:58:33.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:58:33.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:58:33.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.998709 -999.00  +16.90  15.33     20   -5.90 1 1 1 1 1     0    0 22.55 -27.34 ZNESW 15.8 15.3 334.2 19.3 17.3 -23.9 17.2 -23.0 17.0 -22.7 17.2 -23.5
2025-11-04T01:58:33.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:58:33.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:58:33.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.998709
2025-11-04T01:58:33.390 [DEBUG] [Thread-126542] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:58:33.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:58:33.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:58:33.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:58:33.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:58:33.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:58:33.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:58:12', tmtdew=27.3, humidity=14.34, cloud=0.0, wind=18.37, temperature=17.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:58:13', seeing=1.11, atlas_timestamp='2025-11-03T23:58:08.458', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.10725000000000051, 0.07624999999999993, 0.11400000000000077, 0.10350000000000037, 0.09325000000000117, 0.0029999999999983373, 0.05274999999999963, 0.015499999999999403, 0.06600000000000072, 0.15225000000000044, 0.10800000000000054, 0.192499999999999, 0.08024999999999949, 0.1039999999999992, -0.016000000000000014, 0.10125000000000028, 0.09500000000000064, 0.16199999999999903, 0.20224999999999937, 0.1609999999999996, -0.8412500000000005, 0.09925000000000139, 0.05274999999999963, 0.09399999999999942, 0.2264999999999997, 0.11175000000000068, 0.23550000000000004, 0.2990000000000004, 0.11900000000000155, 0.22500000000000142, 0.05000000000000071, 0.17774999999999963], zp_timestamp='2025-11-03T23:57:00')
2025-11-04T01:58:33.500 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:58:33.514 [DEBUG] [Thread-126545] [transport.py] [_log()] starting thread (client mode): 0x1179b3d0
2025-11-04T01:58:33.514 [DEBUG] [Thread-126545] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:58:33.532 [DEBUG] [Thread-126545] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:58:33.532 [INFO] [Thread-126545] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:58:33.545 [DEBUG] [Thread-126545] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:58:33.545 [DEBUG] [Thread-126545] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:58:33.545 [DEBUG] [Thread-126545] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:58:33.545 [DEBUG] [Thread-126545] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:58:33.545 [DEBUG] [Thread-126545] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:58:33.545 [DEBUG] [Thread-126545] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:58:33.545 [DEBUG] [Thread-126545] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:58:33.545 [DEBUG] [Thread-126545] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:58:33.545 [DEBUG] [Thread-126545] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:58:33.545 [DEBUG] [Thread-126545] [transport.py] [_log()] client lang: <none>
2025-11-04T01:58:33.546 [DEBUG] [Thread-126545] [transport.py] [_log()] server lang: <none>
2025-11-04T01:58:33.546 [DEBUG] [Thread-126545] [transport.py] [_log()] kex follows: False
2025-11-04T01:58:33.546 [DEBUG] [Thread-126545] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:58:33.546 [DEBUG] [Thread-126545] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:58:33.546 [DEBUG] [Thread-126545] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:58:33.546 [DEBUG] [Thread-126545] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:58:33.546 [DEBUG] [Thread-126545] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:58:33.546 [DEBUG] [Thread-126545] [transport.py] [_log()] Compression: none
2025-11-04T01:58:33.546 [DEBUG] [Thread-126545] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:58:33.612 [DEBUG] [Thread-126545] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:58:33.612 [DEBUG] [Thread-126545] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:58:33.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:58:33.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:58:33.615 [DEBUG] [Thread-126545] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:58:33.677 [DEBUG] [Thread-126545] [transport.py] [_log()] userauth is OK
2025-11-04T01:58:33.677 [DEBUG] [Thread-126545] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:58:33.677 [DEBUG] [Thread-126545] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:58:33.677 [DEBUG] [Thread-126545] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:58:33.677 [DEBUG] [Thread-126545] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:58:33.697 [INFO] [Thread-126545] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:58:33.697 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:58:33.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:58:34.539 [DEBUG] [Thread-126545] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:58:34.539 [DEBUG] [Thread-126545] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:58:34.587 [DEBUG] [Thread-126545] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:58:34.587 [DEBUG] [Thread-126545] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:58:34.596 [DEBUG] [Thread-126545] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:58:34.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:58:34.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:58:34.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:58:34.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:58:34.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:58:34.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:58:34.636 [DEBUG] [Thread-126545] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:58:37.770 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:58:37.771 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:58:44.121 [DEBUG] [Thread-126547 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:58:52.454 [DEBUG] [Thread-126548 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:58:59.157 [DEBUG] [Thread-126549 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:59:04.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:59:04.660 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:59:04.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:59:05.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 58, 45), 27.26, 14.41, 0.0, 18.19, 17.19, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:59:05.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:58:45
2025-11-04T01:59:05.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:59:05.633 [DEBUG] [Thread-126550] [transport.py] [_log()] starting thread (client mode): 0xed060e0
2025-11-04T01:59:05.634 [DEBUG] [Thread-126550] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:59:05.650 [DEBUG] [Thread-126550] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:59:05.650 [INFO] [Thread-126550] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:59:05.653 [DEBUG] [Thread-126550] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:59:05.653 [DEBUG] [Thread-126550] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:59:05.653 [DEBUG] [Thread-126550] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:59:05.653 [DEBUG] [Thread-126550] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:59:05.653 [DEBUG] [Thread-126550] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:59:05.653 [DEBUG] [Thread-126550] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:59:05.653 [DEBUG] [Thread-126550] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:59:05.654 [DEBUG] [Thread-126550] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:59:05.654 [DEBUG] [Thread-126550] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:59:05.654 [DEBUG] [Thread-126550] [transport.py] [_log()] client lang: <none>
2025-11-04T01:59:05.654 [DEBUG] [Thread-126550] [transport.py] [_log()] server lang: <none>
2025-11-04T01:59:05.654 [DEBUG] [Thread-126550] [transport.py] [_log()] kex follows: False
2025-11-04T01:59:05.654 [DEBUG] [Thread-126550] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:59:05.654 [DEBUG] [Thread-126550] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:59:05.654 [DEBUG] [Thread-126550] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:59:05.654 [DEBUG] [Thread-126550] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:59:05.654 [DEBUG] [Thread-126550] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:59:05.654 [DEBUG] [Thread-126550] [transport.py] [_log()] Compression: none
2025-11-04T01:59:05.654 [DEBUG] [Thread-126550] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:59:05.680 [DEBUG] [Thread-126550] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:59:05.682 [DEBUG] [Thread-126550] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:59:05.683 [DEBUG] [Thread-126550] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:59:05.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:59:05.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:59:05.725 [DEBUG] [Thread-126550] [transport.py] [_log()] userauth is OK
2025-11-04T01:59:05.725 [DEBUG] [Thread-126550] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:59:05.725 [DEBUG] [Thread-126550] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:59:05.725 [DEBUG] [Thread-126550] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:59:05.725 [DEBUG] [Thread-126550] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:59:05.753 [INFO] [Thread-126550] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:59:05.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:59:06.411 [DEBUG] [Thread-126550] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:59:06.411 [DEBUG] [Thread-126550] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:59:06.412 [DEBUG] [Thread-126550] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:59:06.451 [DEBUG] [Thread-126550] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:59:06.451 [DEBUG] [Thread-126550] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:59:06.454 [DEBUG] [Thread-126550] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:59:06.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:59:06.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:59:06.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:59:06.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:59:06.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:59:06.476 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:59:06.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:59:06.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:59:06.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:59:06.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.999056 -999.00  +16.80  14.05     20   -6.00 1 1 1 1 1     0    0 22.41 -24.98 ZNESW 15.1 14.1 316.4 17.2 -999.0 -999.0 17.2 -23.0 17.0 -22.3 17.2 -23.4
2025-11-04T01:59:06.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:59:06.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:59:06.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.999056
2025-11-04T01:59:06.483 [DEBUG] [Thread-126550] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:59:06.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:59:06.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:59:06.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:59:06.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:59:06.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:59:06.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:58:45', tmtdew=27.26, humidity=14.41, cloud=0.0, wind=18.19, temperature=17.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:58:46', seeing=1.11, atlas_timestamp='2025-11-03T23:58:38.438', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.10725000000000051, 0.07624999999999993, 0.11400000000000077, 0.10350000000000037, 0.09325000000000117, 0.0029999999999983373, 0.05274999999999963, 0.015499999999999403, 0.06600000000000072, 0.15225000000000044, 0.10800000000000054, 0.192499999999999, 0.08024999999999949, 0.1039999999999992, -0.016000000000000014, 0.10125000000000028, 0.09500000000000064, 0.16199999999999903, 0.20224999999999937, 0.1609999999999996, -0.8412500000000005, 0.09925000000000139, 0.05274999999999963, 0.09399999999999942, 0.2264999999999997, 0.11175000000000068, 0.23550000000000004, 0.2990000000000004, 0.11900000000000155, 0.22500000000000142, 0.05000000000000071, 0.17774999999999963], zp_timestamp='2025-11-03T23:57:00')
2025-11-04T01:59:06.573 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:59:06.586 [DEBUG] [Thread-126553] [transport.py] [_log()] starting thread (client mode): 0xed378e0
2025-11-04T01:59:06.586 [DEBUG] [Thread-126553] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:59:06.603 [DEBUG] [Thread-126553] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:59:06.603 [INFO] [Thread-126553] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:59:06.613 [DEBUG] [Thread-126553] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:59:06.614 [DEBUG] [Thread-126553] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:59:06.614 [DEBUG] [Thread-126553] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:59:06.614 [DEBUG] [Thread-126553] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:59:06.614 [DEBUG] [Thread-126553] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:59:06.614 [DEBUG] [Thread-126553] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:59:06.614 [DEBUG] [Thread-126553] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:59:06.614 [DEBUG] [Thread-126553] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:59:06.614 [DEBUG] [Thread-126553] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:59:06.615 [DEBUG] [Thread-126553] [transport.py] [_log()] client lang: <none>
2025-11-04T01:59:06.615 [DEBUG] [Thread-126553] [transport.py] [_log()] server lang: <none>
2025-11-04T01:59:06.615 [DEBUG] [Thread-126553] [transport.py] [_log()] kex follows: False
2025-11-04T01:59:06.615 [DEBUG] [Thread-126553] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:59:06.615 [DEBUG] [Thread-126553] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:59:06.615 [DEBUG] [Thread-126553] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:59:06.615 [DEBUG] [Thread-126553] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:59:06.615 [DEBUG] [Thread-126553] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:59:06.615 [DEBUG] [Thread-126553] [transport.py] [_log()] Compression: none
2025-11-04T01:59:06.616 [DEBUG] [Thread-126553] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:59:06.679 [DEBUG] [Thread-126553] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:59:06.680 [DEBUG] [Thread-126553] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:59:06.680 [DEBUG] [Thread-126553] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:59:06.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:59:06.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:59:06.739 [DEBUG] [Thread-126553] [transport.py] [_log()] userauth is OK
2025-11-04T01:59:06.739 [DEBUG] [Thread-126553] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:59:06.739 [DEBUG] [Thread-126553] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:59:06.739 [DEBUG] [Thread-126553] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:59:06.739 [DEBUG] [Thread-126553] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:59:06.758 [INFO] [Thread-126553] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:59:06.760 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:59:06.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:59:07.604 [DEBUG] [Thread-126553] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:59:07.604 [DEBUG] [Thread-126553] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:59:07.650 [DEBUG] [Thread-126553] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:59:07.650 [DEBUG] [Thread-126553] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:59:07.659 [DEBUG] [Thread-126553] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:59:07.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:59:07.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:59:07.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:59:07.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:59:07.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:59:07.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:59:07.696 [DEBUG] [Thread-126553] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:59:14.200 [DEBUG] [Thread-126555 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:59:29.297 [DEBUG] [Thread-126556 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:59:37.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T01:59:37.718 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T01:59:37.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T01:59:37.973 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:59:37.974 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:59:38.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 59, 18), 27.29, 14.36, 0.0, 18.37, 17.14, 0, 0, 0, 2, 0, 0),)
2025-11-04T01:59:38.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:59:18
2025-11-04T01:59:38.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T01:59:38.771 [DEBUG] [Thread-126557] [transport.py] [_log()] starting thread (client mode): 0xed37190
2025-11-04T01:59:38.771 [DEBUG] [Thread-126557] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:59:38.792 [DEBUG] [Thread-126557] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T01:59:38.792 [INFO] [Thread-126557] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T01:59:38.795 [DEBUG] [Thread-126557] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:59:38.795 [DEBUG] [Thread-126557] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T01:59:38.795 [DEBUG] [Thread-126557] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:59:38.795 [DEBUG] [Thread-126557] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:59:38.795 [DEBUG] [Thread-126557] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:59:38.795 [DEBUG] [Thread-126557] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:59:38.795 [DEBUG] [Thread-126557] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:59:38.795 [DEBUG] [Thread-126557] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:59:38.795 [DEBUG] [Thread-126557] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:59:38.796 [DEBUG] [Thread-126557] [transport.py] [_log()] client lang: <none>
2025-11-04T01:59:38.796 [DEBUG] [Thread-126557] [transport.py] [_log()] server lang: <none>
2025-11-04T01:59:38.796 [DEBUG] [Thread-126557] [transport.py] [_log()] kex follows: False
2025-11-04T01:59:38.796 [DEBUG] [Thread-126557] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:59:38.796 [DEBUG] [Thread-126557] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:59:38.796 [DEBUG] [Thread-126557] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:59:38.796 [DEBUG] [Thread-126557] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:59:38.796 [DEBUG] [Thread-126557] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:59:38.796 [DEBUG] [Thread-126557] [transport.py] [_log()] Compression: none
2025-11-04T01:59:38.796 [DEBUG] [Thread-126557] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:59:38.807 [DEBUG] [Thread-126557] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:59:38.808 [DEBUG] [Thread-126557] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:59:38.808 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T01:59:38.809 [DEBUG] [Thread-126557] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T01:59:38.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:59:38.811 [DEBUG] [Thread-126557] [transport.py] [_log()] userauth is OK
2025-11-04T01:59:38.811 [DEBUG] [Thread-126557] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:59:38.811 [DEBUG] [Thread-126557] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:59:38.811 [DEBUG] [Thread-126557] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T01:59:38.812 [DEBUG] [Thread-126557] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:59:38.830 [INFO] [Thread-126557] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:59:38.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:59:39.459 [DEBUG] [Thread-126557] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:59:39.459 [DEBUG] [Thread-126557] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:59:39.459 [DEBUG] [Thread-126557] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T01:59:39.500 [DEBUG] [Thread-126557] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:59:39.501 [DEBUG] [Thread-126557] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:59:39.503 [DEBUG] [Thread-126557] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:59:39.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:59:39.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T01:59:39.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T01:59:39.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T01:59:39.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:59:39.519 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T01:59:39.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:59:39.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:59:39.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T01:59:39.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.999403 -999.00  +16.80  18.27     20   -6.00 1 1 1 1 1     0    0 22.43 -23.39 ZNESW 16.8 18.3 320.4 20.2 17.3 -23.9 17.2 -22.9 16.9 -22.6 17.2 -23.4
2025-11-04T01:59:39.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T01:59:39.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T01:59:39.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.999403
2025-11-04T01:59:39.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T01:59:39.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T01:59:39.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T01:59:39.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T01:59:39.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T01:59:39.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:59:18', tmtdew=27.29, humidity=14.36, cloud=0.0, wind=18.37, temperature=17.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:59:18', seeing=1.33, atlas_timestamp='2025-11-03T23:59:08.419', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.10725000000000051, 0.07624999999999993, 0.11400000000000077, 0.10350000000000037, 0.09325000000000117, 0.0029999999999983373, 0.05274999999999963, 0.015499999999999403, 0.06600000000000072, 0.15225000000000044, 0.10800000000000054, 0.192499999999999, 0.08024999999999949, 0.1039999999999992, -0.016000000000000014, 0.10125000000000028, 0.09500000000000064, 0.16199999999999903, 0.20224999999999937, 0.1609999999999996, -0.8412500000000005, 0.09925000000000139, 0.05274999999999963, 0.09399999999999942, 0.2264999999999997, 0.11175000000000068, 0.23550000000000004, 0.2990000000000004, 0.11900000000000155, 0.22500000000000142, 0.05000000000000071, 0.17774999999999963], zp_timestamp='2025-11-03T23:57:00')
2025-11-04T01:59:39.520 [DEBUG] [Thread-126557] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:59:39.595 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T01:59:39.606 [DEBUG] [Thread-126560] [transport.py] [_log()] starting thread (client mode): 0x1179b760
2025-11-04T01:59:39.606 [DEBUG] [Thread-126560] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T01:59:39.623 [DEBUG] [Thread-126560] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T01:59:39.623 [INFO] [Thread-126560] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T01:59:39.631 [DEBUG] [Thread-126560] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T01:59:39.631 [DEBUG] [Thread-126560] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T01:59:39.631 [DEBUG] [Thread-126560] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T01:59:39.631 [DEBUG] [Thread-126560] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:59:39.631 [DEBUG] [Thread-126560] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T01:59:39.631 [DEBUG] [Thread-126560] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:59:39.631 [DEBUG] [Thread-126560] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T01:59:39.631 [DEBUG] [Thread-126560] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T01:59:39.631 [DEBUG] [Thread-126560] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T01:59:39.631 [DEBUG] [Thread-126560] [transport.py] [_log()] client lang: <none>
2025-11-04T01:59:39.631 [DEBUG] [Thread-126560] [transport.py] [_log()] server lang: <none>
2025-11-04T01:59:39.631 [DEBUG] [Thread-126560] [transport.py] [_log()] kex follows: False
2025-11-04T01:59:39.631 [DEBUG] [Thread-126560] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T01:59:39.631 [DEBUG] [Thread-126560] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T01:59:39.631 [DEBUG] [Thread-126560] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T01:59:39.631 [DEBUG] [Thread-126560] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T01:59:39.631 [DEBUG] [Thread-126560] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T01:59:39.631 [DEBUG] [Thread-126560] [transport.py] [_log()] Compression: none
2025-11-04T01:59:39.631 [DEBUG] [Thread-126560] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T01:59:39.689 [DEBUG] [Thread-126560] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T01:59:39.689 [DEBUG] [Thread-126560] [transport.py] [_log()] Switch to new keys ...
2025-11-04T01:59:39.689 [DEBUG] [Thread-126560] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T01:59:39.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T01:59:39.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T01:59:39.746 [DEBUG] [Thread-126560] [transport.py] [_log()] userauth is OK
2025-11-04T01:59:39.746 [DEBUG] [Thread-126560] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T01:59:39.746 [DEBUG] [Thread-126560] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T01:59:39.746 [DEBUG] [Thread-126560] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T01:59:39.746 [DEBUG] [Thread-126560] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T01:59:39.760 [INFO] [Thread-126560] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T01:59:39.760 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T01:59:39.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T01:59:40.614 [DEBUG] [Thread-126560] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T01:59:40.614 [DEBUG] [Thread-126560] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T01:59:40.662 [DEBUG] [Thread-126560] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T01:59:40.662 [DEBUG] [Thread-126560] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T01:59:40.671 [DEBUG] [Thread-126560] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T01:59:40.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T01:59:40.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T01:59:40.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T01:59:40.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T01:59:40.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T01:59:40.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T01:59:40.703 [DEBUG] [Thread-126560] [transport.py] [_log()] EOF in transport thread
2025-11-04T01:59:44.322 [DEBUG] [Thread-126562 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:59:52.752 [DEBUG] [Thread-126563 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T01:59:59.361 [DEBUG] [Thread-126564 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:00:10.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:00:10.702 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:00:10.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:00:11.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 1, 59, 51), 27.13, 14.47, 0.0, 20.26, 17.11, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:00:11.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 01:59:51
2025-11-04T02:00:12.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:00:12.251 [DEBUG] [Thread-126565] [transport.py] [_log()] starting thread (client mode): 0x117981f0
2025-11-04T02:00:12.252 [DEBUG] [Thread-126565] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:00:12.264 [DEBUG] [Thread-126565] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:00:12.264 [INFO] [Thread-126565] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:00:12.268 [DEBUG] [Thread-126565] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:00:12.268 [DEBUG] [Thread-126565] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:00:12.268 [DEBUG] [Thread-126565] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:00:12.268 [DEBUG] [Thread-126565] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:00:12.268 [DEBUG] [Thread-126565] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:00:12.268 [DEBUG] [Thread-126565] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:00:12.268 [DEBUG] [Thread-126565] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:00:12.268 [DEBUG] [Thread-126565] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:00:12.268 [DEBUG] [Thread-126565] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:00:12.268 [DEBUG] [Thread-126565] [transport.py] [_log()] client lang: <none>
2025-11-04T02:00:12.268 [DEBUG] [Thread-126565] [transport.py] [_log()] server lang: <none>
2025-11-04T02:00:12.268 [DEBUG] [Thread-126565] [transport.py] [_log()] kex follows: False
2025-11-04T02:00:12.268 [DEBUG] [Thread-126565] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:00:12.269 [DEBUG] [Thread-126565] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:00:12.269 [DEBUG] [Thread-126565] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:00:12.269 [DEBUG] [Thread-126565] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:00:12.269 [DEBUG] [Thread-126565] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:00:12.269 [DEBUG] [Thread-126565] [transport.py] [_log()] Compression: none
2025-11-04T02:00:12.269 [DEBUG] [Thread-126565] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:00:12.299 [DEBUG] [Thread-126565] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:00:12.303 [DEBUG] [Thread-126565] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:00:12.304 [DEBUG] [Thread-126565] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:00:12.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:00:12.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:00:12.308 [DEBUG] [Thread-126565] [transport.py] [_log()] userauth is OK
2025-11-04T02:00:12.308 [DEBUG] [Thread-126565] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:00:12.308 [DEBUG] [Thread-126565] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:00:12.308 [DEBUG] [Thread-126565] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:00:12.308 [DEBUG] [Thread-126565] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:00:12.329 [INFO] [Thread-126565] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:00:12.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:00:14.386 [DEBUG] [Thread-126565] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:00:14.386 [DEBUG] [Thread-126565] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:00:14.396 [DEBUG] [Thread-126565] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:00:14.400 [DEBUG] [Thread-126567 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:00:14.427 [DEBUG] [Thread-126565] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:00:14.428 [DEBUG] [Thread-126565] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:00:14.431 [DEBUG] [Thread-126565] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:00:14.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:00:14.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:00:14.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:00:14.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:00:14.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:00:14.496 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:00:14.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:00:14.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:00:14.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:00:14.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60982.999751 -999.00  +16.70  15.23     20   -6.00 1 1 1 1 1     0    0 22.26 -22.57 ZNESW 15.8 15.2 325.0 18.5 17.3 -23.9 17.2 -23.0 16.9 -22.6 17.2 -23.6
2025-11-04T02:00:14.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:00:14.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:00:14.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60982.999751
2025-11-04T02:00:14.506 [DEBUG] [Thread-126565] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:00:14.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:00:14.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:00:14.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:00:14.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:00:14.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:00:14.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T01:59:51', tmtdew=27.13, humidity=14.47, cloud=0.0, wind=20.26, temperature=17.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T01:59:51', seeing=1.21, atlas_timestamp='2025-11-03T23:59:38.486', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.10725000000000051, 0.07624999999999993, 0.11400000000000077, 0.10350000000000037, 0.09325000000000117, 0.0029999999999983373, 0.05274999999999963, 0.015499999999999403, 0.06600000000000072, 0.15225000000000044, 0.10800000000000054, 0.192499999999999, 0.08024999999999949, 0.1039999999999992, -0.016000000000000014, 0.10125000000000028, 0.09500000000000064, 0.16199999999999903, 0.20224999999999937, 0.1609999999999996, -0.8412500000000005, 0.09925000000000139, 0.05274999999999963, 0.09399999999999942, 0.2264999999999997, 0.11175000000000068, 0.23550000000000004, 0.2990000000000004, 0.11900000000000155, 0.22500000000000142, 0.05000000000000071, 0.17774999999999963], zp_timestamp='2025-11-03T23:57:00')
2025-11-04T02:00:14.617 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:00:14.629 [DEBUG] [Thread-126569] [transport.py] [_log()] starting thread (client mode): 0x117bc520
2025-11-04T02:00:14.630 [DEBUG] [Thread-126569] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:00:14.647 [DEBUG] [Thread-126569] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:00:14.647 [INFO] [Thread-126569] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:00:14.657 [DEBUG] [Thread-126569] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:00:14.657 [DEBUG] [Thread-126569] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:00:14.657 [DEBUG] [Thread-126569] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:00:14.657 [DEBUG] [Thread-126569] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:00:14.658 [DEBUG] [Thread-126569] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:00:14.658 [DEBUG] [Thread-126569] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:00:14.658 [DEBUG] [Thread-126569] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:00:14.658 [DEBUG] [Thread-126569] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:00:14.658 [DEBUG] [Thread-126569] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:00:14.658 [DEBUG] [Thread-126569] [transport.py] [_log()] client lang: <none>
2025-11-04T02:00:14.658 [DEBUG] [Thread-126569] [transport.py] [_log()] server lang: <none>
2025-11-04T02:00:14.658 [DEBUG] [Thread-126569] [transport.py] [_log()] kex follows: False
2025-11-04T02:00:14.658 [DEBUG] [Thread-126569] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:00:14.658 [DEBUG] [Thread-126569] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:00:14.658 [DEBUG] [Thread-126569] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:00:14.658 [DEBUG] [Thread-126569] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:00:14.658 [DEBUG] [Thread-126569] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:00:14.658 [DEBUG] [Thread-126569] [transport.py] [_log()] Compression: none
2025-11-04T02:00:14.658 [DEBUG] [Thread-126569] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:00:14.716 [DEBUG] [Thread-126569] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:00:14.717 [DEBUG] [Thread-126569] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:00:14.718 [DEBUG] [Thread-126569] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:00:14.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:00:14.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:00:14.775 [DEBUG] [Thread-126569] [transport.py] [_log()] userauth is OK
2025-11-04T02:00:14.775 [DEBUG] [Thread-126569] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:00:14.776 [DEBUG] [Thread-126569] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:00:14.776 [DEBUG] [Thread-126569] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:00:14.776 [DEBUG] [Thread-126569] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:00:14.794 [INFO] [Thread-126569] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:00:14.804 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:00:14.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:00:15.627 [DEBUG] [Thread-126569] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:00:15.636 [DEBUG] [Thread-126569] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:00:15.676 [DEBUG] [Thread-126569] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:00:15.676 [DEBUG] [Thread-126569] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:00:15.685 [DEBUG] [Thread-126569] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:00:15.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:00:15.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:00:15.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:00:15.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:00:15.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:00:15.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:00:15.720 [DEBUG] [Thread-126569] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:00:29.438 [DEBUG] [Thread-126571 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:00:38.217 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:00:38.219 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:00:44.585 [DEBUG] [Thread-126572 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:00:45.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:00:45.719 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:00:45.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:00:46.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 0, 23), 27.12, 14.49, 0.0, 19.96, 17.09, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:00:46.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:00:23
2025-11-04T02:00:46.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:00:47.001 [DEBUG] [Thread-126573] [transport.py] [_log()] starting thread (client mode): 0x117bec20
2025-11-04T02:00:47.001 [DEBUG] [Thread-126573] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:00:47.020 [DEBUG] [Thread-126573] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:00:47.020 [INFO] [Thread-126573] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:00:47.023 [DEBUG] [Thread-126573] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:00:47.024 [DEBUG] [Thread-126573] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:00:47.024 [DEBUG] [Thread-126573] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:00:47.024 [DEBUG] [Thread-126573] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:00:47.024 [DEBUG] [Thread-126573] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:00:47.024 [DEBUG] [Thread-126573] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:00:47.024 [DEBUG] [Thread-126573] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:00:47.024 [DEBUG] [Thread-126573] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:00:47.024 [DEBUG] [Thread-126573] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:00:47.024 [DEBUG] [Thread-126573] [transport.py] [_log()] client lang: <none>
2025-11-04T02:00:47.025 [DEBUG] [Thread-126573] [transport.py] [_log()] server lang: <none>
2025-11-04T02:00:47.025 [DEBUG] [Thread-126573] [transport.py] [_log()] kex follows: False
2025-11-04T02:00:47.025 [DEBUG] [Thread-126573] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:00:47.025 [DEBUG] [Thread-126573] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:00:47.025 [DEBUG] [Thread-126573] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:00:47.026 [DEBUG] [Thread-126573] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:00:47.026 [DEBUG] [Thread-126573] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:00:47.026 [DEBUG] [Thread-126573] [transport.py] [_log()] Compression: none
2025-11-04T02:00:47.026 [DEBUG] [Thread-126573] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:00:47.052 [DEBUG] [Thread-126573] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:00:47.055 [DEBUG] [Thread-126573] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:00:47.057 [DEBUG] [Thread-126573] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:00:47.058 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:00:47.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:00:47.097 [DEBUG] [Thread-126573] [transport.py] [_log()] userauth is OK
2025-11-04T02:00:47.098 [DEBUG] [Thread-126573] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:00:47.098 [DEBUG] [Thread-126573] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:00:47.098 [DEBUG] [Thread-126573] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:00:47.099 [DEBUG] [Thread-126573] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:00:47.137 [INFO] [Thread-126573] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:00:47.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:00:47.787 [DEBUG] [Thread-126573] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:00:47.787 [DEBUG] [Thread-126573] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:00:47.796 [DEBUG] [Thread-126573] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:00:47.827 [DEBUG] [Thread-126573] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:00:47.828 [DEBUG] [Thread-126573] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:00:47.830 [DEBUG] [Thread-126573] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:00:47.842 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:00:47.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:00:47.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:00:47.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:00:47.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:00:47.850 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:00:47.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:00:47.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:00:47.851 [DEBUG] [Thread-126573] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:00:47.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:00:47.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.000097 -999.00  +16.70  19.13     20   -6.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 14.5 19.1 322.6 22.6 17.3 -24.0 17.1 -23.0 16.9 -22.6 17.1 -23.5
2025-11-04T02:00:47.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:00:47.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:00:47.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.000097
2025-11-04T02:00:47.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:00:47.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:00:47.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:00:47.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:00:47.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:00:47.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:00:23', tmtdew=27.12, humidity=14.49, cloud=0.0, wind=19.96, temperature=17.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:00:24', seeing=1.21, atlas_timestamp='2025-11-04T00:00:08.381', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.10725000000000051, 0.07624999999999993, 0.11400000000000077, 0.10350000000000037, 0.09325000000000117, 0.0029999999999983373, 0.05274999999999963, 0.015499999999999403, 0.06600000000000072, 0.15225000000000044, 0.10800000000000054, 0.192499999999999, 0.08024999999999949, 0.1039999999999992, -0.016000000000000014, 0.10125000000000028, 0.09500000000000064, 0.16199999999999903, 0.20224999999999937, 0.1609999999999996, -0.8412500000000005, 0.09925000000000139, 0.05274999999999963, 0.09399999999999942, 0.2264999999999997, 0.11175000000000068, 0.23550000000000004, 0.2990000000000004, 0.11900000000000155, 0.22500000000000142, 0.05000000000000071, 0.17774999999999963], zp_timestamp='2025-11-03T23:57:00')
2025-11-04T02:00:47.930 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:00:47.942 [DEBUG] [Thread-126576] [transport.py] [_log()] starting thread (client mode): 0x117bd990
2025-11-04T02:00:47.943 [DEBUG] [Thread-126576] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:00:47.958 [DEBUG] [Thread-126576] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:00:47.958 [INFO] [Thread-126576] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:00:47.966 [DEBUG] [Thread-126576] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:00:47.967 [DEBUG] [Thread-126576] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:00:47.967 [DEBUG] [Thread-126576] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:00:47.967 [DEBUG] [Thread-126576] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:00:47.967 [DEBUG] [Thread-126576] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:00:47.967 [DEBUG] [Thread-126576] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:00:47.967 [DEBUG] [Thread-126576] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:00:47.967 [DEBUG] [Thread-126576] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:00:47.967 [DEBUG] [Thread-126576] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:00:47.967 [DEBUG] [Thread-126576] [transport.py] [_log()] client lang: <none>
2025-11-04T02:00:47.967 [DEBUG] [Thread-126576] [transport.py] [_log()] server lang: <none>
2025-11-04T02:00:47.967 [DEBUG] [Thread-126576] [transport.py] [_log()] kex follows: False
2025-11-04T02:00:47.967 [DEBUG] [Thread-126576] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:00:47.967 [DEBUG] [Thread-126576] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:00:47.967 [DEBUG] [Thread-126576] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:00:47.967 [DEBUG] [Thread-126576] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:00:47.967 [DEBUG] [Thread-126576] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:00:47.967 [DEBUG] [Thread-126576] [transport.py] [_log()] Compression: none
2025-11-04T02:00:47.967 [DEBUG] [Thread-126576] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:00:48.029 [DEBUG] [Thread-126576] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:00:48.030 [DEBUG] [Thread-126576] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:00:48.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:00:48.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:00:48.031 [DEBUG] [Thread-126576] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:00:48.087 [DEBUG] [Thread-126576] [transport.py] [_log()] userauth is OK
2025-11-04T02:00:48.087 [DEBUG] [Thread-126576] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:00:48.087 [DEBUG] [Thread-126576] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:00:48.087 [DEBUG] [Thread-126576] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:00:48.087 [DEBUG] [Thread-126576] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:00:48.107 [INFO] [Thread-126576] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:00:48.107 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:00:48.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:00:48.985 [DEBUG] [Thread-126576] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:00:48.985 [DEBUG] [Thread-126576] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:00:49.025 [DEBUG] [Thread-126576] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:00:49.026 [DEBUG] [Thread-126576] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:00:49.035 [DEBUG] [Thread-126576] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:00:49.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:00:49.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:00:49.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:00:49.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:00:49.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:00:49.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:00:49.068 [DEBUG] [Thread-126576] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:00:53.120 [DEBUG] [Thread-126578 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:00:59.620 [DEBUG] [Thread-126579 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:01:14.752 [DEBUG] [Thread-126580 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:01:19.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:01:19.078 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:01:19.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:01:19.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 0, 55), 27.04, 14.52, 0.0, 21.84, 17.06, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:01:19.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:00:55
2025-11-04T02:01:20.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:01:20.232 [DEBUG] [Thread-126581] [transport.py] [_log()] starting thread (client mode): 0x1179b430
2025-11-04T02:01:20.233 [DEBUG] [Thread-126581] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:01:20.242 [DEBUG] [Thread-126581] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:01:20.242 [INFO] [Thread-126581] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:01:20.248 [DEBUG] [Thread-126581] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:01:20.248 [DEBUG] [Thread-126581] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:01:20.248 [DEBUG] [Thread-126581] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:01:20.248 [DEBUG] [Thread-126581] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:01:20.248 [DEBUG] [Thread-126581] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:01:20.248 [DEBUG] [Thread-126581] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:01:20.248 [DEBUG] [Thread-126581] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:01:20.248 [DEBUG] [Thread-126581] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:01:20.248 [DEBUG] [Thread-126581] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:01:20.248 [DEBUG] [Thread-126581] [transport.py] [_log()] client lang: <none>
2025-11-04T02:01:20.248 [DEBUG] [Thread-126581] [transport.py] [_log()] server lang: <none>
2025-11-04T02:01:20.248 [DEBUG] [Thread-126581] [transport.py] [_log()] kex follows: False
2025-11-04T02:01:20.248 [DEBUG] [Thread-126581] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:01:20.249 [DEBUG] [Thread-126581] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:01:20.249 [DEBUG] [Thread-126581] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:01:20.249 [DEBUG] [Thread-126581] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:01:20.249 [DEBUG] [Thread-126581] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:01:20.249 [DEBUG] [Thread-126581] [transport.py] [_log()] Compression: none
2025-11-04T02:01:20.249 [DEBUG] [Thread-126581] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:01:20.287 [DEBUG] [Thread-126581] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:01:20.292 [DEBUG] [Thread-126581] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:01:20.294 [DEBUG] [Thread-126581] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:01:20.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:01:20.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:01:20.299 [DEBUG] [Thread-126581] [transport.py] [_log()] userauth is OK
2025-11-04T02:01:20.300 [DEBUG] [Thread-126581] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:01:20.300 [DEBUG] [Thread-126581] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:01:20.300 [DEBUG] [Thread-126581] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:01:20.300 [DEBUG] [Thread-126581] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:01:20.328 [INFO] [Thread-126581] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:01:20.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:01:21.077 [DEBUG] [Thread-126581] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:01:21.077 [DEBUG] [Thread-126581] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:01:21.088 [DEBUG] [Thread-126581] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:01:21.118 [DEBUG] [Thread-126581] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:01:21.119 [DEBUG] [Thread-126581] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:01:21.122 [DEBUG] [Thread-126581] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:01:21.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:01:21.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:01:21.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:01:21.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:01:21.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:01:21.149 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:01:21.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:01:21.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:01:21.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:01:21.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.000445 -999.00  +16.70  15.98     20   -6.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 18.3 16.0 326.6 19.0 17.2 -23.8 17.1 -22.9 16.9 -22.6 17.1 -23.3
2025-11-04T02:01:21.152 [DEBUG] [Thread-126581] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:01:21.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:01:21.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:01:21.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.000445
2025-11-04T02:01:21.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:01:21.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:01:21.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:01:21.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:01:21.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:01:21.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:00:55', tmtdew=27.04, humidity=14.52, cloud=0.0, wind=21.84, temperature=17.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:00:56', seeing=1.26, atlas_timestamp='2025-11-04T00:00:38.448', atlas_cloud=1, atlas_rain=1, zp_data=[0.031749999999998835, 0.10725000000000051, 0.07624999999999993, 0.11400000000000077, 0.10350000000000037, 0.09325000000000117, 0.0029999999999983373, 0.05274999999999963, 0.015499999999999403, 0.06600000000000072, 0.15225000000000044, 0.10800000000000054, 0.192499999999999, 0.08024999999999949, 0.1039999999999992, -0.016000000000000014, 0.10125000000000028, 0.09500000000000064, 0.16199999999999903, 0.20224999999999937, 0.1609999999999996, -0.8412500000000005, 0.09925000000000139, 0.05274999999999963, 0.09399999999999942, 0.2264999999999997, 0.11175000000000068, 0.23550000000000004, 0.2990000000000004, 0.11900000000000155, 0.22500000000000142, 0.05000000000000071, 0.17774999999999963], zp_timestamp='2025-11-03T23:57:00')
2025-11-04T02:01:21.255 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:01:21.267 [DEBUG] [Thread-126584] [transport.py] [_log()] starting thread (client mode): 0x11798f10
2025-11-04T02:01:21.267 [DEBUG] [Thread-126584] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:01:21.282 [DEBUG] [Thread-126584] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:01:21.282 [INFO] [Thread-126584] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:01:21.290 [DEBUG] [Thread-126584] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:01:21.290 [DEBUG] [Thread-126584] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:01:21.290 [DEBUG] [Thread-126584] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:01:21.290 [DEBUG] [Thread-126584] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:01:21.290 [DEBUG] [Thread-126584] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:01:21.290 [DEBUG] [Thread-126584] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:01:21.290 [DEBUG] [Thread-126584] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:01:21.290 [DEBUG] [Thread-126584] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:01:21.290 [DEBUG] [Thread-126584] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:01:21.290 [DEBUG] [Thread-126584] [transport.py] [_log()] client lang: <none>
2025-11-04T02:01:21.290 [DEBUG] [Thread-126584] [transport.py] [_log()] server lang: <none>
2025-11-04T02:01:21.290 [DEBUG] [Thread-126584] [transport.py] [_log()] kex follows: False
2025-11-04T02:01:21.290 [DEBUG] [Thread-126584] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:01:21.290 [DEBUG] [Thread-126584] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:01:21.290 [DEBUG] [Thread-126584] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:01:21.290 [DEBUG] [Thread-126584] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:01:21.290 [DEBUG] [Thread-126584] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:01:21.290 [DEBUG] [Thread-126584] [transport.py] [_log()] Compression: none
2025-11-04T02:01:21.290 [DEBUG] [Thread-126584] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:01:21.349 [DEBUG] [Thread-126584] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:01:21.349 [DEBUG] [Thread-126584] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:01:21.349 [DEBUG] [Thread-126584] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:01:21.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:01:21.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:01:21.406 [DEBUG] [Thread-126584] [transport.py] [_log()] userauth is OK
2025-11-04T02:01:21.406 [DEBUG] [Thread-126584] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:01:21.406 [DEBUG] [Thread-126584] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:01:21.406 [DEBUG] [Thread-126584] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:01:21.406 [DEBUG] [Thread-126584] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:01:21.422 [INFO] [Thread-126584] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:01:21.422 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:01:21.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:01:22.302 [DEBUG] [Thread-126584] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:01:22.302 [DEBUG] [Thread-126584] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:01:22.354 [DEBUG] [Thread-126584] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:01:22.354 [DEBUG] [Thread-126584] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:01:22.366 [DEBUG] [Thread-126584] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:01:22.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:01:22.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:01:22.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:01:22.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:01:22.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:01:22.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:01:22.412 [DEBUG] [Thread-126584] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:01:29.818 [DEBUG] [Thread-126586 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:01:38.423 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:01:38.425 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:01:44.902 [DEBUG] [Thread-126587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:01:52.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:01:52.443 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:01:52.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:01:53.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 1, 28), 27.05, 14.51, 0.0, 22.16, 17.02, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:01:53.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:01:28
2025-11-04T02:01:53.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:01:53.392 [DEBUG] [Thread-126588 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:01:53.523 [DEBUG] [Thread-126589] [transport.py] [_log()] starting thread (client mode): 0x11799540
2025-11-04T02:01:53.523 [DEBUG] [Thread-126589] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:01:53.540 [DEBUG] [Thread-126589] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:01:53.540 [INFO] [Thread-126589] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:01:53.543 [DEBUG] [Thread-126589] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:01:53.543 [DEBUG] [Thread-126589] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:01:53.543 [DEBUG] [Thread-126589] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:01:53.543 [DEBUG] [Thread-126589] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:01:53.543 [DEBUG] [Thread-126589] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:01:53.543 [DEBUG] [Thread-126589] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:01:53.543 [DEBUG] [Thread-126589] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:01:53.543 [DEBUG] [Thread-126589] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:01:53.543 [DEBUG] [Thread-126589] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:01:53.543 [DEBUG] [Thread-126589] [transport.py] [_log()] client lang: <none>
2025-11-04T02:01:53.543 [DEBUG] [Thread-126589] [transport.py] [_log()] server lang: <none>
2025-11-04T02:01:53.543 [DEBUG] [Thread-126589] [transport.py] [_log()] kex follows: False
2025-11-04T02:01:53.543 [DEBUG] [Thread-126589] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:01:53.543 [DEBUG] [Thread-126589] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:01:53.543 [DEBUG] [Thread-126589] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:01:53.543 [DEBUG] [Thread-126589] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:01:53.544 [DEBUG] [Thread-126589] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:01:53.544 [DEBUG] [Thread-126589] [transport.py] [_log()] Compression: none
2025-11-04T02:01:53.544 [DEBUG] [Thread-126589] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:01:53.562 [DEBUG] [Thread-126589] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:01:53.563 [DEBUG] [Thread-126589] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:01:53.563 [DEBUG] [Thread-126589] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:01:53.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:01:53.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:01:53.566 [DEBUG] [Thread-126589] [transport.py] [_log()] userauth is OK
2025-11-04T02:01:53.566 [DEBUG] [Thread-126589] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:01:53.566 [DEBUG] [Thread-126589] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:01:53.566 [DEBUG] [Thread-126589] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:01:53.566 [DEBUG] [Thread-126589] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:01:53.581 [INFO] [Thread-126589] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:01:53.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:01:54.239 [DEBUG] [Thread-126589] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:01:54.239 [DEBUG] [Thread-126589] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:01:54.248 [DEBUG] [Thread-126589] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:01:54.279 [DEBUG] [Thread-126589] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:01:54.279 [DEBUG] [Thread-126589] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:01:54.282 [DEBUG] [Thread-126589] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:01:54.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:01:54.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:01:54.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:01:54.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:01:54.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:01:54.303 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:01:54.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:01:54.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:01:54.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:01:54.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.001139 -999.00  +16.60  15.88     20   -6.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 17.0 15.9 322.4 19.1 17.2 -24.0 17.1 -22.8 -999.0 -999.0 17.1 -23.4
2025-11-04T02:01:54.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:01:54.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:01:54.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.001139
2025-11-04T02:01:54.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:01:54.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:01:54.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:01:54.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:01:54.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:01:54.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:01:28', tmtdew=27.05, humidity=14.51, cloud=0.0, wind=22.16, temperature=17.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:01:29', seeing=1.22, atlas_timestamp='2025-11-04T00:01:38.410', atlas_cloud=1, atlas_rain=1, zp_data=[0.07874999999999943, 0.09525000000000006, 0.08125000000000071, 0.11849999999999916, 0.06049999999999933, 0.1322499999999991, 0.02099999999999902, 0.10725000000000051, 0.15249999999999986, 0.10200000000000031, 0.17825000000000024, 0.14149999999999885, 0.2400000000000002, 0.07474999999999987, 0.06850000000000023, -0.021000000000000796, 0.16424999999999912, 0.1404999999999994, 0.2289999999999992, 0.21424999999999983, 0.238999999999999, -0.710250000000002, 0.14425000000000132, 0.10274999999999856, 0.1379999999999999, 0.2394999999999996, 0.13974999999999937, 0.26649999999999885, 0.3335000000000008, -0.26399999999999935, 0.21500000000000163, 0.16600000000000037, 0.14874999999999972], zp_timestamp='2025-11-04T00:00:00')
2025-11-04T02:01:54.313 [DEBUG] [Thread-126589] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:01:54.386 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:01:54.400 [DEBUG] [Thread-126592] [transport.py] [_log()] starting thread (client mode): 0x117988b0
2025-11-04T02:01:54.400 [DEBUG] [Thread-126592] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:01:54.415 [DEBUG] [Thread-126592] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:01:54.415 [INFO] [Thread-126592] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:01:54.423 [DEBUG] [Thread-126592] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:01:54.423 [DEBUG] [Thread-126592] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:01:54.423 [DEBUG] [Thread-126592] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:01:54.423 [DEBUG] [Thread-126592] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:01:54.423 [DEBUG] [Thread-126592] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:01:54.423 [DEBUG] [Thread-126592] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:01:54.423 [DEBUG] [Thread-126592] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:01:54.423 [DEBUG] [Thread-126592] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:01:54.423 [DEBUG] [Thread-126592] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:01:54.423 [DEBUG] [Thread-126592] [transport.py] [_log()] client lang: <none>
2025-11-04T02:01:54.423 [DEBUG] [Thread-126592] [transport.py] [_log()] server lang: <none>
2025-11-04T02:01:54.423 [DEBUG] [Thread-126592] [transport.py] [_log()] kex follows: False
2025-11-04T02:01:54.423 [DEBUG] [Thread-126592] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:01:54.423 [DEBUG] [Thread-126592] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:01:54.423 [DEBUG] [Thread-126592] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:01:54.423 [DEBUG] [Thread-126592] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:01:54.423 [DEBUG] [Thread-126592] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:01:54.423 [DEBUG] [Thread-126592] [transport.py] [_log()] Compression: none
2025-11-04T02:01:54.423 [DEBUG] [Thread-126592] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:01:54.481 [DEBUG] [Thread-126592] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:01:54.481 [DEBUG] [Thread-126592] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:01:54.481 [DEBUG] [Thread-126592] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:01:54.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:01:54.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:01:54.537 [DEBUG] [Thread-126592] [transport.py] [_log()] userauth is OK
2025-11-04T02:01:54.538 [DEBUG] [Thread-126592] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:01:54.538 [DEBUG] [Thread-126592] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:01:54.538 [DEBUG] [Thread-126592] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:01:54.538 [DEBUG] [Thread-126592] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:01:54.551 [INFO] [Thread-126592] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:01:54.552 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:01:54.552 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:01:55.364 [DEBUG] [Thread-126592] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:01:55.364 [DEBUG] [Thread-126592] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:01:55.416 [DEBUG] [Thread-126592] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:01:55.416 [DEBUG] [Thread-126592] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:01:55.429 [DEBUG] [Thread-126592] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:01:55.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:01:55.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:01:55.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:01:55.473 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:01:55.473 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:01:55.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:01:55.485 [DEBUG] [Thread-126592] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:01:59.931 [DEBUG] [Thread-126594 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:02:15.013 [DEBUG] [Thread-126595 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:02:25.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:02:25.505 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:02:25.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:02:26.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 2, 1), 27.11, 14.46, 0.0, 21.91, 17.09, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:02:26.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:02:01
2025-11-04T02:02:26.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:02:26.607 [DEBUG] [Thread-126596] [transport.py] [_log()] starting thread (client mode): 0xed34790
2025-11-04T02:02:26.608 [DEBUG] [Thread-126596] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:02:26.620 [DEBUG] [Thread-126596] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:02:26.620 [INFO] [Thread-126596] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:02:26.635 [DEBUG] [Thread-126596] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:02:26.635 [DEBUG] [Thread-126596] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:02:26.635 [DEBUG] [Thread-126596] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:02:26.635 [DEBUG] [Thread-126596] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:02:26.635 [DEBUG] [Thread-126596] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:02:26.635 [DEBUG] [Thread-126596] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:02:26.635 [DEBUG] [Thread-126596] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:02:26.635 [DEBUG] [Thread-126596] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:02:26.635 [DEBUG] [Thread-126596] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:02:26.635 [DEBUG] [Thread-126596] [transport.py] [_log()] client lang: <none>
2025-11-04T02:02:26.635 [DEBUG] [Thread-126596] [transport.py] [_log()] server lang: <none>
2025-11-04T02:02:26.635 [DEBUG] [Thread-126596] [transport.py] [_log()] kex follows: False
2025-11-04T02:02:26.635 [DEBUG] [Thread-126596] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:02:26.636 [DEBUG] [Thread-126596] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:02:26.636 [DEBUG] [Thread-126596] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:02:26.636 [DEBUG] [Thread-126596] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:02:26.636 [DEBUG] [Thread-126596] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:02:26.636 [DEBUG] [Thread-126596] [transport.py] [_log()] Compression: none
2025-11-04T02:02:26.636 [DEBUG] [Thread-126596] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:02:26.663 [DEBUG] [Thread-126596] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:02:26.665 [DEBUG] [Thread-126596] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:02:26.666 [DEBUG] [Thread-126596] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:02:26.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:02:26.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:02:26.670 [DEBUG] [Thread-126596] [transport.py] [_log()] userauth is OK
2025-11-04T02:02:26.670 [DEBUG] [Thread-126596] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:02:26.670 [DEBUG] [Thread-126596] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:02:26.670 [DEBUG] [Thread-126596] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:02:26.670 [DEBUG] [Thread-126596] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:02:26.683 [INFO] [Thread-126596] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:02:26.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:02:27.308 [DEBUG] [Thread-126596] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:02:27.309 [DEBUG] [Thread-126596] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:02:27.309 [DEBUG] [Thread-126596] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:02:27.349 [DEBUG] [Thread-126596] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:02:27.350 [DEBUG] [Thread-126596] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:02:27.352 [DEBUG] [Thread-126596] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:02:27.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:02:27.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:02:27.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:02:27.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:02:27.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:02:27.371 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:02:27.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:02:27.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:02:27.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:02:27.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.001486 -999.00  +16.60  18.09     20   -6.10 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 18.2 18.1 318.6 22.2 17.1 -23.8 17.1 -22.9 16.8 -22.6 17.1 -23.4
2025-11-04T02:02:27.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:02:27.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:02:27.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.001486
2025-11-04T02:02:27.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:02:27.381 [DEBUG] [Thread-126596] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:02:27.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:02:27.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:02:27.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:02:27.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:02:27.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:02:01', tmtdew=27.11, humidity=14.46, cloud=0.0, wind=21.91, temperature=17.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:02:01', seeing=1.22, atlas_timestamp='2025-11-04T00:02:08.390', atlas_cloud=1, atlas_rain=1, zp_data=[0.07874999999999943, 0.09525000000000006, 0.08125000000000071, 0.11849999999999916, 0.06049999999999933, 0.1322499999999991, 0.02099999999999902, 0.10725000000000051, 0.15249999999999986, 0.10200000000000031, 0.17825000000000024, 0.14149999999999885, 0.2400000000000002, 0.07474999999999987, 0.06850000000000023, -0.021000000000000796, 0.16424999999999912, 0.1404999999999994, 0.2289999999999992, 0.21424999999999983, 0.238999999999999, -0.710250000000002, 0.14425000000000132, 0.10274999999999856, 0.1379999999999999, 0.2394999999999996, 0.13974999999999937, 0.26649999999999885, 0.3335000000000008, -0.26399999999999935, 0.21500000000000163, 0.16600000000000037, 0.14874999999999972], zp_timestamp='2025-11-04T00:00:00')
2025-11-04T02:02:27.461 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:02:27.474 [DEBUG] [Thread-126599] [transport.py] [_log()] starting thread (client mode): 0xedc4460
2025-11-04T02:02:27.474 [DEBUG] [Thread-126599] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:02:27.489 [DEBUG] [Thread-126599] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:02:27.489 [INFO] [Thread-126599] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:02:27.497 [DEBUG] [Thread-126599] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:02:27.497 [DEBUG] [Thread-126599] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:02:27.497 [DEBUG] [Thread-126599] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:02:27.497 [DEBUG] [Thread-126599] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:02:27.497 [DEBUG] [Thread-126599] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:02:27.497 [DEBUG] [Thread-126599] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:02:27.497 [DEBUG] [Thread-126599] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:02:27.497 [DEBUG] [Thread-126599] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:02:27.497 [DEBUG] [Thread-126599] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:02:27.497 [DEBUG] [Thread-126599] [transport.py] [_log()] client lang: <none>
2025-11-04T02:02:27.497 [DEBUG] [Thread-126599] [transport.py] [_log()] server lang: <none>
2025-11-04T02:02:27.497 [DEBUG] [Thread-126599] [transport.py] [_log()] kex follows: False
2025-11-04T02:02:27.497 [DEBUG] [Thread-126599] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:02:27.497 [DEBUG] [Thread-126599] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:02:27.497 [DEBUG] [Thread-126599] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:02:27.497 [DEBUG] [Thread-126599] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:02:27.497 [DEBUG] [Thread-126599] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:02:27.497 [DEBUG] [Thread-126599] [transport.py] [_log()] Compression: none
2025-11-04T02:02:27.497 [DEBUG] [Thread-126599] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:02:27.553 [DEBUG] [Thread-126599] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:02:27.553 [DEBUG] [Thread-126599] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:02:27.553 [DEBUG] [Thread-126599] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:02:27.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:02:27.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:02:27.610 [DEBUG] [Thread-126599] [transport.py] [_log()] userauth is OK
2025-11-04T02:02:27.610 [DEBUG] [Thread-126599] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:02:27.610 [DEBUG] [Thread-126599] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:02:27.610 [DEBUG] [Thread-126599] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:02:27.610 [DEBUG] [Thread-126599] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:02:27.626 [INFO] [Thread-126599] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:02:27.626 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:02:27.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:02:28.516 [DEBUG] [Thread-126599] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:02:28.517 [DEBUG] [Thread-126599] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:02:28.565 [DEBUG] [Thread-126599] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:02:28.566 [DEBUG] [Thread-126599] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:02:28.576 [DEBUG] [Thread-126599] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:02:28.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:02:28.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:02:28.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:02:28.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:02:28.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:02:28.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:02:28.617 [DEBUG] [Thread-126599] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:02:30.069 [DEBUG] [Thread-126601 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:02:38.641 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:02:38.642 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:02:45.169 [DEBUG] [Thread-126602 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:02:53.664 [DEBUG] [Thread-126603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:02:58.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:02:58.624 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:02:58.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:02:59.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 2, 33), 27.06, 14.96, 0.0, 22.13, 17.07, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:02:59.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:02:33
2025-11-04T02:02:59.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:02:59.746 [DEBUG] [Thread-126604] [transport.py] [_log()] starting thread (client mode): 0xedc74c0
2025-11-04T02:02:59.746 [DEBUG] [Thread-126604] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:02:59.756 [DEBUG] [Thread-126604] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:02:59.756 [INFO] [Thread-126604] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:02:59.759 [DEBUG] [Thread-126604] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:02:59.760 [DEBUG] [Thread-126604] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:02:59.760 [DEBUG] [Thread-126604] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:02:59.760 [DEBUG] [Thread-126604] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:02:59.760 [DEBUG] [Thread-126604] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:02:59.760 [DEBUG] [Thread-126604] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:02:59.760 [DEBUG] [Thread-126604] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:02:59.760 [DEBUG] [Thread-126604] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:02:59.760 [DEBUG] [Thread-126604] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:02:59.760 [DEBUG] [Thread-126604] [transport.py] [_log()] client lang: <none>
2025-11-04T02:02:59.760 [DEBUG] [Thread-126604] [transport.py] [_log()] server lang: <none>
2025-11-04T02:02:59.761 [DEBUG] [Thread-126604] [transport.py] [_log()] kex follows: False
2025-11-04T02:02:59.761 [DEBUG] [Thread-126604] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:02:59.761 [DEBUG] [Thread-126604] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:02:59.761 [DEBUG] [Thread-126604] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:02:59.761 [DEBUG] [Thread-126604] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:02:59.761 [DEBUG] [Thread-126604] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:02:59.761 [DEBUG] [Thread-126604] [transport.py] [_log()] Compression: none
2025-11-04T02:02:59.761 [DEBUG] [Thread-126604] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:02:59.780 [DEBUG] [Thread-126604] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:02:59.781 [DEBUG] [Thread-126604] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:02:59.782 [DEBUG] [Thread-126604] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:02:59.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:02:59.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:02:59.784 [DEBUG] [Thread-126604] [transport.py] [_log()] userauth is OK
2025-11-04T02:02:59.785 [DEBUG] [Thread-126604] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:02:59.785 [DEBUG] [Thread-126604] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:02:59.785 [DEBUG] [Thread-126604] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:02:59.785 [DEBUG] [Thread-126604] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:02:59.822 [INFO] [Thread-126604] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:02:59.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:03:00.202 [DEBUG] [Thread-126606 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:03:00.456 [DEBUG] [Thread-126604] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:03:00.456 [DEBUG] [Thread-126604] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:03:00.457 [DEBUG] [Thread-126604] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:03:00.498 [DEBUG] [Thread-126604] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:03:00.498 [DEBUG] [Thread-126604] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:03:00.500 [DEBUG] [Thread-126604] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:03:00.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:03:00.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:03:00.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:03:00.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:03:00.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:03:00.518 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:03:00.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:03:00.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:03:00.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:03:00.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.001834 -999.00  +16.60  15.44     20   -6.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 15.6 15.4 321.8 20.7 17.1 -23.8 17.1 -22.9 16.8 -22.5 17.1 -23.5
2025-11-04T02:03:00.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:03:00.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:03:00.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.001834
2025-11-04T02:03:00.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:03:00.523 [DEBUG] [Thread-126604] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:03:00.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:03:00.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:03:00.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:03:00.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:03:00.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:02:33', tmtdew=27.06, humidity=14.96, cloud=0.0, wind=22.13, temperature=17.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:02:34', seeing=1.21, atlas_timestamp='2025-11-04T00:02:38.458', atlas_cloud=1, atlas_rain=1, zp_data=[0.07874999999999943, 0.09525000000000006, 0.08125000000000071, 0.11849999999999916, 0.06049999999999933, 0.1322499999999991, 0.02099999999999902, 0.10725000000000051, 0.15249999999999986, 0.10200000000000031, 0.17825000000000024, 0.14149999999999885, 0.2400000000000002, 0.07474999999999987, 0.06850000000000023, -0.021000000000000796, 0.16424999999999912, 0.1404999999999994, 0.2289999999999992, 0.21424999999999983, 0.238999999999999, -0.710250000000002, 0.14425000000000132, 0.10274999999999856, 0.1379999999999999, 0.2394999999999996, 0.13974999999999937, 0.26649999999999885, 0.3335000000000008, -0.26399999999999935, 0.21500000000000163, 0.16600000000000037, 0.14874999999999972], zp_timestamp='2025-11-04T00:00:00')
2025-11-04T02:03:00.601 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:03:00.614 [DEBUG] [Thread-126608] [transport.py] [_log()] starting thread (client mode): 0x117be2f0
2025-11-04T02:03:00.614 [DEBUG] [Thread-126608] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:03:00.631 [DEBUG] [Thread-126608] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:03:00.631 [INFO] [Thread-126608] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:03:00.641 [DEBUG] [Thread-126608] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:03:00.641 [DEBUG] [Thread-126608] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:03:00.641 [DEBUG] [Thread-126608] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:03:00.641 [DEBUG] [Thread-126608] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:03:00.641 [DEBUG] [Thread-126608] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:03:00.641 [DEBUG] [Thread-126608] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:03:00.641 [DEBUG] [Thread-126608] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:03:00.641 [DEBUG] [Thread-126608] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:03:00.641 [DEBUG] [Thread-126608] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:03:00.641 [DEBUG] [Thread-126608] [transport.py] [_log()] client lang: <none>
2025-11-04T02:03:00.641 [DEBUG] [Thread-126608] [transport.py] [_log()] server lang: <none>
2025-11-04T02:03:00.641 [DEBUG] [Thread-126608] [transport.py] [_log()] kex follows: False
2025-11-04T02:03:00.641 [DEBUG] [Thread-126608] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:03:00.641 [DEBUG] [Thread-126608] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:03:00.641 [DEBUG] [Thread-126608] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:03:00.641 [DEBUG] [Thread-126608] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:03:00.641 [DEBUG] [Thread-126608] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:03:00.641 [DEBUG] [Thread-126608] [transport.py] [_log()] Compression: none
2025-11-04T02:03:00.641 [DEBUG] [Thread-126608] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:03:00.700 [DEBUG] [Thread-126608] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:03:00.700 [DEBUG] [Thread-126608] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:03:00.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:03:00.700 [DEBUG] [Thread-126608] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:03:00.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:03:00.761 [DEBUG] [Thread-126608] [transport.py] [_log()] userauth is OK
2025-11-04T02:03:00.761 [DEBUG] [Thread-126608] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:03:00.761 [DEBUG] [Thread-126608] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:03:00.761 [DEBUG] [Thread-126608] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:03:00.761 [DEBUG] [Thread-126608] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:03:00.777 [INFO] [Thread-126608] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:03:00.777 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:03:00.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:03:01.633 [DEBUG] [Thread-126608] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:03:01.633 [DEBUG] [Thread-126608] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:03:01.686 [DEBUG] [Thread-126608] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:03:01.686 [DEBUG] [Thread-126608] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:03:01.699 [DEBUG] [Thread-126608] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:03:01.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:03:01.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:03:01.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:03:01.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:03:01.731 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:03:01.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:03:01.742 [DEBUG] [Thread-126608] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:03:15.234 [DEBUG] [Thread-126610 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:03:30.326 [DEBUG] [Thread-126611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:03:31.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:03:31.750 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:03:31.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:03:32.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 3, 6), 27.07, 14.96, 0.0, 21.97, 17.11, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:03:32.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:03:06
2025-11-04T02:03:32.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:03:32.974 [DEBUG] [Thread-126612] [transport.py] [_log()] starting thread (client mode): 0x117bc6a0
2025-11-04T02:03:32.975 [DEBUG] [Thread-126612] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:03:32.991 [DEBUG] [Thread-126612] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:03:32.991 [INFO] [Thread-126612] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:03:32.995 [DEBUG] [Thread-126612] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:03:32.995 [DEBUG] [Thread-126612] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:03:32.995 [DEBUG] [Thread-126612] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:03:32.995 [DEBUG] [Thread-126612] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:03:32.995 [DEBUG] [Thread-126612] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:03:32.996 [DEBUG] [Thread-126612] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:03:32.996 [DEBUG] [Thread-126612] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:03:32.996 [DEBUG] [Thread-126612] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:03:32.996 [DEBUG] [Thread-126612] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:03:32.996 [DEBUG] [Thread-126612] [transport.py] [_log()] client lang: <none>
2025-11-04T02:03:32.996 [DEBUG] [Thread-126612] [transport.py] [_log()] server lang: <none>
2025-11-04T02:03:32.996 [DEBUG] [Thread-126612] [transport.py] [_log()] kex follows: False
2025-11-04T02:03:32.996 [DEBUG] [Thread-126612] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:03:32.996 [DEBUG] [Thread-126612] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:03:32.997 [DEBUG] [Thread-126612] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:03:32.997 [DEBUG] [Thread-126612] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:03:32.997 [DEBUG] [Thread-126612] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:03:32.997 [DEBUG] [Thread-126612] [transport.py] [_log()] Compression: none
2025-11-04T02:03:32.997 [DEBUG] [Thread-126612] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:03:33.029 [DEBUG] [Thread-126612] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:03:33.033 [DEBUG] [Thread-126612] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:03:33.035 [DEBUG] [Thread-126612] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:03:33.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:03:33.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:03:33.038 [DEBUG] [Thread-126612] [transport.py] [_log()] userauth is OK
2025-11-04T02:03:33.039 [DEBUG] [Thread-126612] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:03:33.039 [DEBUG] [Thread-126612] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:03:33.039 [DEBUG] [Thread-126612] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:03:33.039 [DEBUG] [Thread-126612] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:03:33.065 [INFO] [Thread-126612] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:03:33.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:03:33.723 [DEBUG] [Thread-126612] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:03:33.723 [DEBUG] [Thread-126612] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:03:33.734 [DEBUG] [Thread-126612] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:03:33.765 [DEBUG] [Thread-126612] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:03:33.766 [DEBUG] [Thread-126612] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:03:33.769 [DEBUG] [Thread-126612] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:03:33.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:03:33.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:03:33.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:03:33.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:03:33.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:03:33.790 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:03:33.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:03:33.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:03:33.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:03:33.793 [DEBUG] [Thread-126612] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:03:33.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.002181 -999.00  +16.60  16.94     20   -6.10 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 18.2 16.9 319.2 20.1 17.1 -23.8 17.0 -23.0 16.8 -22.6 17.1 -23.5
2025-11-04T02:03:33.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:03:33.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:03:33.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.002181
2025-11-04T02:03:33.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:03:33.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:03:33.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:03:33.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:03:33.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:03:33.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:03:06', tmtdew=27.07, humidity=14.96, cloud=0.0, wind=21.97, temperature=17.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:03:07', seeing=1.15, atlas_timestamp='2025-11-04T00:03:08.438', atlas_cloud=1, atlas_rain=1, zp_data=[0.07874999999999943, 0.09525000000000006, 0.08125000000000071, 0.11849999999999916, 0.06049999999999933, 0.1322499999999991, 0.02099999999999902, 0.10725000000000051, 0.15249999999999986, 0.10200000000000031, 0.17825000000000024, 0.14149999999999885, 0.2400000000000002, 0.07474999999999987, 0.06850000000000023, -0.021000000000000796, 0.16424999999999912, 0.1404999999999994, 0.2289999999999992, 0.21424999999999983, 0.238999999999999, -0.710250000000002, 0.14425000000000132, 0.10274999999999856, 0.1379999999999999, 0.2394999999999996, 0.13974999999999937, 0.26649999999999885, 0.3335000000000008, -0.26399999999999935, 0.21500000000000163, 0.16600000000000037, 0.14874999999999972], zp_timestamp='2025-11-04T00:00:00')
2025-11-04T02:03:33.908 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:03:33.921 [DEBUG] [Thread-126615] [transport.py] [_log()] starting thread (client mode): 0x117bc1f0
2025-11-04T02:03:33.922 [DEBUG] [Thread-126615] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:03:33.939 [DEBUG] [Thread-126615] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:03:33.939 [INFO] [Thread-126615] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:03:33.948 [DEBUG] [Thread-126615] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:03:33.948 [DEBUG] [Thread-126615] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:03:33.948 [DEBUG] [Thread-126615] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:03:33.948 [DEBUG] [Thread-126615] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:03:33.948 [DEBUG] [Thread-126615] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:03:33.948 [DEBUG] [Thread-126615] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:03:33.948 [DEBUG] [Thread-126615] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:03:33.948 [DEBUG] [Thread-126615] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:03:33.948 [DEBUG] [Thread-126615] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:03:33.949 [DEBUG] [Thread-126615] [transport.py] [_log()] client lang: <none>
2025-11-04T02:03:33.949 [DEBUG] [Thread-126615] [transport.py] [_log()] server lang: <none>
2025-11-04T02:03:33.949 [DEBUG] [Thread-126615] [transport.py] [_log()] kex follows: False
2025-11-04T02:03:33.949 [DEBUG] [Thread-126615] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:03:33.949 [DEBUG] [Thread-126615] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:03:33.949 [DEBUG] [Thread-126615] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:03:33.949 [DEBUG] [Thread-126615] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:03:33.949 [DEBUG] [Thread-126615] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:03:33.949 [DEBUG] [Thread-126615] [transport.py] [_log()] Compression: none
2025-11-04T02:03:33.949 [DEBUG] [Thread-126615] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:03:34.005 [DEBUG] [Thread-126615] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:03:34.006 [DEBUG] [Thread-126615] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:03:34.006 [DEBUG] [Thread-126615] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:03:34.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:03:34.008 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:03:34.070 [DEBUG] [Thread-126615] [transport.py] [_log()] userauth is OK
2025-11-04T02:03:34.070 [DEBUG] [Thread-126615] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:03:34.070 [DEBUG] [Thread-126615] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:03:34.071 [DEBUG] [Thread-126615] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:03:34.071 [DEBUG] [Thread-126615] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:03:34.093 [INFO] [Thread-126615] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:03:34.094 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:03:34.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:03:34.954 [DEBUG] [Thread-126615] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:03:34.954 [DEBUG] [Thread-126615] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:03:35.004 [DEBUG] [Thread-126615] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:03:35.004 [DEBUG] [Thread-126615] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:03:35.012 [DEBUG] [Thread-126615] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:03:35.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:03:35.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:03:35.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:03:35.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:03:35.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:03:35.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:03:35.049 [DEBUG] [Thread-126615] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:03:38.852 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:03:38.853 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:03:45.356 [DEBUG] [Thread-126617 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:03:54.020 [DEBUG] [Thread-126618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:04:00.414 [DEBUG] [Thread-126619 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:04:05.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:04:05.072 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:04:05.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:04:05.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 3, 38), 27.16, 14.41, 0.0, 22.21, 17.14, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:04:05.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:03:38
2025-11-04T02:04:06.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:04:06.300 [DEBUG] [Thread-126620] [transport.py] [_log()] starting thread (client mode): 0xedc49a0
2025-11-04T02:04:06.300 [DEBUG] [Thread-126620] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:04:06.317 [DEBUG] [Thread-126620] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:04:06.317 [INFO] [Thread-126620] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:04:06.321 [DEBUG] [Thread-126620] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:04:06.321 [DEBUG] [Thread-126620] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:04:06.321 [DEBUG] [Thread-126620] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:04:06.321 [DEBUG] [Thread-126620] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:04:06.321 [DEBUG] [Thread-126620] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:04:06.321 [DEBUG] [Thread-126620] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:04:06.322 [DEBUG] [Thread-126620] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:04:06.322 [DEBUG] [Thread-126620] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:04:06.322 [DEBUG] [Thread-126620] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:04:06.322 [DEBUG] [Thread-126620] [transport.py] [_log()] client lang: <none>
2025-11-04T02:04:06.322 [DEBUG] [Thread-126620] [transport.py] [_log()] server lang: <none>
2025-11-04T02:04:06.322 [DEBUG] [Thread-126620] [transport.py] [_log()] kex follows: False
2025-11-04T02:04:06.322 [DEBUG] [Thread-126620] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:04:06.322 [DEBUG] [Thread-126620] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:04:06.322 [DEBUG] [Thread-126620] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:04:06.322 [DEBUG] [Thread-126620] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:04:06.322 [DEBUG] [Thread-126620] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:04:06.322 [DEBUG] [Thread-126620] [transport.py] [_log()] Compression: none
2025-11-04T02:04:06.322 [DEBUG] [Thread-126620] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:04:06.339 [DEBUG] [Thread-126620] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:04:06.339 [DEBUG] [Thread-126620] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:04:06.340 [DEBUG] [Thread-126620] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:04:06.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:04:06.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:04:06.342 [DEBUG] [Thread-126620] [transport.py] [_log()] userauth is OK
2025-11-04T02:04:06.342 [DEBUG] [Thread-126620] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:04:06.342 [DEBUG] [Thread-126620] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:04:06.342 [DEBUG] [Thread-126620] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:04:06.342 [DEBUG] [Thread-126620] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:04:06.366 [INFO] [Thread-126620] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:04:06.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:04:07.016 [DEBUG] [Thread-126620] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:04:07.016 [DEBUG] [Thread-126620] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:04:07.016 [DEBUG] [Thread-126620] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:04:07.057 [DEBUG] [Thread-126620] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:04:07.057 [DEBUG] [Thread-126620] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:04:07.059 [DEBUG] [Thread-126620] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:04:07.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:04:07.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:04:07.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:04:07.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:04:07.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:04:07.079 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:04:07.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:04:07.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:04:07.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:04:07.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.002528 -999.00  +16.70  19.15     20   -6.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 17.3 19.1 324.4 21.9 17.1 -23.8 17.0 -22.9 16.8 -22.6 17.0 -23.4
2025-11-04T02:04:07.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:04:07.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:04:07.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.002528
2025-11-04T02:04:07.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:04:07.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:04:07.086 [DEBUG] [Thread-126620] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:04:07.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:04:07.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:04:07.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:04:07.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:03:38', tmtdew=27.16, humidity=14.41, cloud=0.0, wind=22.21, temperature=17.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:03:39', seeing=1.26, atlas_timestamp='2025-11-04T00:03:38.419', atlas_cloud=1, atlas_rain=1, zp_data=[0.07874999999999943, 0.09525000000000006, 0.08125000000000071, 0.11849999999999916, 0.06049999999999933, 0.1322499999999991, 0.02099999999999902, 0.10725000000000051, 0.15249999999999986, 0.10200000000000031, 0.17825000000000024, 0.14149999999999885, 0.2400000000000002, 0.07474999999999987, 0.06850000000000023, -0.021000000000000796, 0.16424999999999912, 0.1404999999999994, 0.2289999999999992, 0.21424999999999983, 0.238999999999999, -0.710250000000002, 0.14425000000000132, 0.10274999999999856, 0.1379999999999999, 0.2394999999999996, 0.13974999999999937, 0.26649999999999885, 0.3335000000000008, -0.26399999999999935, 0.21500000000000163, 0.16600000000000037, 0.14874999999999972], zp_timestamp='2025-11-04T00:00:00')
2025-11-04T02:04:07.160 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:04:07.173 [DEBUG] [Thread-126623] [transport.py] [_log()] starting thread (client mode): 0xedc6320
2025-11-04T02:04:07.173 [DEBUG] [Thread-126623] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:04:07.189 [DEBUG] [Thread-126623] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:04:07.189 [INFO] [Thread-126623] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:04:07.197 [DEBUG] [Thread-126623] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:04:07.197 [DEBUG] [Thread-126623] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:04:07.197 [DEBUG] [Thread-126623] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:04:07.197 [DEBUG] [Thread-126623] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:04:07.197 [DEBUG] [Thread-126623] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:04:07.197 [DEBUG] [Thread-126623] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:04:07.197 [DEBUG] [Thread-126623] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:04:07.197 [DEBUG] [Thread-126623] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:04:07.197 [DEBUG] [Thread-126623] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:04:07.197 [DEBUG] [Thread-126623] [transport.py] [_log()] client lang: <none>
2025-11-04T02:04:07.197 [DEBUG] [Thread-126623] [transport.py] [_log()] server lang: <none>
2025-11-04T02:04:07.197 [DEBUG] [Thread-126623] [transport.py] [_log()] kex follows: False
2025-11-04T02:04:07.197 [DEBUG] [Thread-126623] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:04:07.197 [DEBUG] [Thread-126623] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:04:07.197 [DEBUG] [Thread-126623] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:04:07.197 [DEBUG] [Thread-126623] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:04:07.197 [DEBUG] [Thread-126623] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:04:07.197 [DEBUG] [Thread-126623] [transport.py] [_log()] Compression: none
2025-11-04T02:04:07.198 [DEBUG] [Thread-126623] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:04:07.255 [DEBUG] [Thread-126623] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:04:07.255 [DEBUG] [Thread-126623] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:04:07.256 [DEBUG] [Thread-126623] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:04:07.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:04:07.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:04:07.315 [DEBUG] [Thread-126623] [transport.py] [_log()] userauth is OK
2025-11-04T02:04:07.315 [DEBUG] [Thread-126623] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:04:07.315 [DEBUG] [Thread-126623] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:04:07.315 [DEBUG] [Thread-126623] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:04:07.315 [DEBUG] [Thread-126623] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:04:07.329 [INFO] [Thread-126623] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:04:07.329 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:04:07.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:04:08.168 [DEBUG] [Thread-126623] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:04:08.168 [DEBUG] [Thread-126623] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:04:08.215 [DEBUG] [Thread-126623] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:04:08.216 [DEBUG] [Thread-126623] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:04:08.224 [DEBUG] [Thread-126623] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:04:08.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:04:08.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:04:08.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:04:08.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:04:08.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:04:08.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:04:08.258 [DEBUG] [Thread-126623] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:04:15.449 [DEBUG] [Thread-126625 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:04:30.581 [DEBUG] [Thread-126626 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:04:38.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:04:38.287 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:04:38.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:04:39.057 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:04:39.058 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:04:39.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 4, 11), 27.2, 14.37, 0.0, 22.2, 17.2, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:04:39.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:04:11
2025-11-04T02:04:39.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:04:39.389 [DEBUG] [Thread-126627] [transport.py] [_log()] starting thread (client mode): 0x117bf6d0
2025-11-04T02:04:39.390 [DEBUG] [Thread-126627] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:04:39.392 [DEBUG] [Thread-126627] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:04:39.392 [INFO] [Thread-126627] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:04:39.395 [DEBUG] [Thread-126627] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:04:39.395 [DEBUG] [Thread-126627] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:04:39.395 [DEBUG] [Thread-126627] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:04:39.395 [DEBUG] [Thread-126627] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:04:39.395 [DEBUG] [Thread-126627] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:04:39.395 [DEBUG] [Thread-126627] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:04:39.395 [DEBUG] [Thread-126627] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:04:39.395 [DEBUG] [Thread-126627] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:04:39.395 [DEBUG] [Thread-126627] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:04:39.395 [DEBUG] [Thread-126627] [transport.py] [_log()] client lang: <none>
2025-11-04T02:04:39.396 [DEBUG] [Thread-126627] [transport.py] [_log()] server lang: <none>
2025-11-04T02:04:39.396 [DEBUG] [Thread-126627] [transport.py] [_log()] kex follows: False
2025-11-04T02:04:39.396 [DEBUG] [Thread-126627] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:04:39.396 [DEBUG] [Thread-126627] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:04:39.396 [DEBUG] [Thread-126627] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:04:39.396 [DEBUG] [Thread-126627] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:04:39.397 [DEBUG] [Thread-126627] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:04:39.397 [DEBUG] [Thread-126627] [transport.py] [_log()] Compression: none
2025-11-04T02:04:39.397 [DEBUG] [Thread-126627] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:04:39.436 [DEBUG] [Thread-126627] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:04:39.443 [DEBUG] [Thread-126627] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:04:39.445 [DEBUG] [Thread-126627] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:04:39.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:04:39.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:04:39.452 [DEBUG] [Thread-126627] [transport.py] [_log()] userauth is OK
2025-11-04T02:04:39.452 [DEBUG] [Thread-126627] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:04:39.453 [DEBUG] [Thread-126627] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:04:39.453 [DEBUG] [Thread-126627] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:04:39.453 [DEBUG] [Thread-126627] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:04:39.492 [INFO] [Thread-126627] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:04:39.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:04:40.090 [DEBUG] [Thread-126627] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:04:40.091 [DEBUG] [Thread-126627] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:04:40.092 [DEBUG] [Thread-126627] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:04:40.131 [DEBUG] [Thread-126627] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:04:40.131 [DEBUG] [Thread-126627] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:04:40.134 [DEBUG] [Thread-126627] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:04:40.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:04:40.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:04:40.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:04:40.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:04:40.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:04:40.160 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:04:40.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:04:40.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:04:40.163 [DEBUG] [Thread-126627] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:04:40.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:04:40.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.002875 -999.00  +16.60  15.40     20   -6.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 14.5 15.4 322.0 18.6 17.1 -23.9 17.0 -23.0 16.8 -22.3 17.0 -23.4
2025-11-04T02:04:40.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:04:40.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:04:40.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.002875
2025-11-04T02:04:40.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:04:40.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:04:40.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:04:40.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:04:40.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:04:40.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:04:11', tmtdew=27.2, humidity=14.37, cloud=0.0, wind=22.2, temperature=17.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:04:12', seeing=1.26, atlas_timestamp='2025-11-04T00:04:08.400', atlas_cloud=1, atlas_rain=1, zp_data=[0.07874999999999943, 0.09525000000000006, 0.08125000000000071, 0.11849999999999916, 0.06049999999999933, 0.1322499999999991, 0.02099999999999902, 0.10725000000000051, 0.15249999999999986, 0.10200000000000031, 0.17825000000000024, 0.14149999999999885, 0.2400000000000002, 0.07474999999999987, 0.06850000000000023, -0.021000000000000796, 0.16424999999999912, 0.1404999999999994, 0.2289999999999992, 0.21424999999999983, 0.238999999999999, -0.710250000000002, 0.14425000000000132, 0.10274999999999856, 0.1379999999999999, 0.2394999999999996, 0.13974999999999937, 0.26649999999999885, 0.3335000000000008, -0.26399999999999935, 0.21500000000000163, 0.16600000000000037, 0.14874999999999972], zp_timestamp='2025-11-04T00:03:00')
2025-11-04T02:04:40.265 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:04:40.277 [DEBUG] [Thread-126630] [transport.py] [_log()] starting thread (client mode): 0xedc6f80
2025-11-04T02:04:40.277 [DEBUG] [Thread-126630] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:04:40.291 [DEBUG] [Thread-126630] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:04:40.292 [INFO] [Thread-126630] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:04:40.299 [DEBUG] [Thread-126630] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:04:40.299 [DEBUG] [Thread-126630] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:04:40.299 [DEBUG] [Thread-126630] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:04:40.299 [DEBUG] [Thread-126630] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:04:40.299 [DEBUG] [Thread-126630] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:04:40.299 [DEBUG] [Thread-126630] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:04:40.299 [DEBUG] [Thread-126630] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:04:40.299 [DEBUG] [Thread-126630] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:04:40.300 [DEBUG] [Thread-126630] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:04:40.300 [DEBUG] [Thread-126630] [transport.py] [_log()] client lang: <none>
2025-11-04T02:04:40.300 [DEBUG] [Thread-126630] [transport.py] [_log()] server lang: <none>
2025-11-04T02:04:40.300 [DEBUG] [Thread-126630] [transport.py] [_log()] kex follows: False
2025-11-04T02:04:40.300 [DEBUG] [Thread-126630] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:04:40.300 [DEBUG] [Thread-126630] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:04:40.300 [DEBUG] [Thread-126630] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:04:40.300 [DEBUG] [Thread-126630] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:04:40.300 [DEBUG] [Thread-126630] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:04:40.300 [DEBUG] [Thread-126630] [transport.py] [_log()] Compression: none
2025-11-04T02:04:40.300 [DEBUG] [Thread-126630] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:04:40.361 [DEBUG] [Thread-126630] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:04:40.361 [DEBUG] [Thread-126630] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:04:40.362 [DEBUG] [Thread-126630] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:04:40.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:04:40.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:04:40.421 [DEBUG] [Thread-126630] [transport.py] [_log()] userauth is OK
2025-11-04T02:04:40.422 [DEBUG] [Thread-126630] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:04:40.422 [DEBUG] [Thread-126630] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:04:40.422 [DEBUG] [Thread-126630] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:04:40.423 [DEBUG] [Thread-126630] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:04:40.443 [INFO] [Thread-126630] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:04:40.444 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:04:40.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:04:41.260 [DEBUG] [Thread-126630] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:04:41.261 [DEBUG] [Thread-126630] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:04:41.308 [DEBUG] [Thread-126630] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:04:41.309 [DEBUG] [Thread-126630] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:04:41.317 [DEBUG] [Thread-126630] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:04:41.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:04:41.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:04:41.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:04:41.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:04:41.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:04:41.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:04:41.357 [DEBUG] [Thread-126630] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:04:45.613 [DEBUG] [Thread-126632 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:04:54.289 [DEBUG] [Thread-126633 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:05:00.696 [DEBUG] [Thread-126634 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:05:11.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:05:11.391 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:05:11.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:05:12.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 4, 44), 27.18, 14.34, 0.0, 21.81, 17.17, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:05:12.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:04:44
2025-11-04T02:05:12.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:05:12.492 [DEBUG] [Thread-126635] [transport.py] [_log()] starting thread (client mode): 0x117bf070
2025-11-04T02:05:12.493 [DEBUG] [Thread-126635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:05:12.506 [DEBUG] [Thread-126635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:05:12.506 [INFO] [Thread-126635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:05:12.518 [DEBUG] [Thread-126635] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:05:12.518 [DEBUG] [Thread-126635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:05:12.518 [DEBUG] [Thread-126635] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:05:12.519 [DEBUG] [Thread-126635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:05:12.519 [DEBUG] [Thread-126635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:05:12.519 [DEBUG] [Thread-126635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:05:12.519 [DEBUG] [Thread-126635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:05:12.519 [DEBUG] [Thread-126635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:05:12.519 [DEBUG] [Thread-126635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:05:12.519 [DEBUG] [Thread-126635] [transport.py] [_log()] client lang: <none>
2025-11-04T02:05:12.519 [DEBUG] [Thread-126635] [transport.py] [_log()] server lang: <none>
2025-11-04T02:05:12.519 [DEBUG] [Thread-126635] [transport.py] [_log()] kex follows: False
2025-11-04T02:05:12.519 [DEBUG] [Thread-126635] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:05:12.519 [DEBUG] [Thread-126635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:05:12.520 [DEBUG] [Thread-126635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:05:12.520 [DEBUG] [Thread-126635] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:05:12.520 [DEBUG] [Thread-126635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:05:12.520 [DEBUG] [Thread-126635] [transport.py] [_log()] Compression: none
2025-11-04T02:05:12.520 [DEBUG] [Thread-126635] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:05:12.549 [DEBUG] [Thread-126635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:05:12.552 [DEBUG] [Thread-126635] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:05:12.554 [DEBUG] [Thread-126635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:05:12.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:05:12.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:05:12.558 [DEBUG] [Thread-126635] [transport.py] [_log()] userauth is OK
2025-11-04T02:05:12.558 [DEBUG] [Thread-126635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:05:12.558 [DEBUG] [Thread-126635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:05:12.558 [DEBUG] [Thread-126635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:05:12.559 [DEBUG] [Thread-126635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:05:12.596 [INFO] [Thread-126635] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:05:12.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:05:15.733 [DEBUG] [Thread-126637 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:05:16.162 [DEBUG] [Thread-126635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:05:16.163 [DEBUG] [Thread-126635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:05:16.164 [DEBUG] [Thread-126635] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:05:16.203 [DEBUG] [Thread-126635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:05:16.203 [DEBUG] [Thread-126635] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:05:16.208 [DEBUG] [Thread-126635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:05:16.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:05:16.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:05:16.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:05:16.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:05:16.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:05:16.320 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:05:16.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:05:16.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:05:16.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:05:16.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.002875 -999.00  +16.60  15.40     20   -6.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 14.5 15.4 322.0 18.6 17.1 -23.9 17.0 -23.0 16.8 -22.3 17.0 -23.4
2025-11-04T02:05:16.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:05:16.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:05:16.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.002875
2025-11-04T02:05:16.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:05:16.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:05:16.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:05:16.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:05:16.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:05:16.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:04:44', tmtdew=27.18, humidity=14.34, cloud=0.0, wind=21.81, temperature=17.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:04:45', seeing=1.11, atlas_timestamp='2025-11-04T00:04:08.400', atlas_cloud=1, atlas_rain=1, zp_data=[0.07874999999999943, 0.09525000000000006, 0.08125000000000071, 0.11849999999999916, 0.06049999999999933, 0.1322499999999991, 0.02099999999999902, 0.10725000000000051, 0.15249999999999986, 0.10200000000000031, 0.17825000000000024, 0.14149999999999885, 0.2400000000000002, 0.07474999999999987, 0.06850000000000023, -0.021000000000000796, 0.16424999999999912, 0.1404999999999994, 0.2289999999999992, 0.21424999999999983, 0.238999999999999, -0.710250000000002, 0.14425000000000132, 0.10274999999999856, 0.1379999999999999, 0.2394999999999996, 0.13974999999999937, 0.26649999999999885, 0.3335000000000008, -0.26399999999999935, 0.21500000000000163, 0.16600000000000037, 0.14874999999999972], zp_timestamp='2025-11-04T00:03:00')
2025-11-04T02:05:16.334 [DEBUG] [Thread-126635] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:05:16.409 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:05:16.421 [DEBUG] [Thread-126639] [transport.py] [_log()] starting thread (client mode): 0x117bd6c0
2025-11-04T02:05:16.421 [DEBUG] [Thread-126639] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:05:16.437 [DEBUG] [Thread-126639] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:05:16.437 [INFO] [Thread-126639] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:05:16.445 [DEBUG] [Thread-126639] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:05:16.445 [DEBUG] [Thread-126639] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:05:16.445 [DEBUG] [Thread-126639] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:05:16.445 [DEBUG] [Thread-126639] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:05:16.445 [DEBUG] [Thread-126639] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:05:16.445 [DEBUG] [Thread-126639] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:05:16.445 [DEBUG] [Thread-126639] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:05:16.445 [DEBUG] [Thread-126639] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:05:16.445 [DEBUG] [Thread-126639] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:05:16.445 [DEBUG] [Thread-126639] [transport.py] [_log()] client lang: <none>
2025-11-04T02:05:16.445 [DEBUG] [Thread-126639] [transport.py] [_log()] server lang: <none>
2025-11-04T02:05:16.446 [DEBUG] [Thread-126639] [transport.py] [_log()] kex follows: False
2025-11-04T02:05:16.446 [DEBUG] [Thread-126639] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:05:16.446 [DEBUG] [Thread-126639] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:05:16.446 [DEBUG] [Thread-126639] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:05:16.446 [DEBUG] [Thread-126639] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:05:16.446 [DEBUG] [Thread-126639] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:05:16.446 [DEBUG] [Thread-126639] [transport.py] [_log()] Compression: none
2025-11-04T02:05:16.446 [DEBUG] [Thread-126639] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:05:16.505 [DEBUG] [Thread-126639] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:05:16.506 [DEBUG] [Thread-126639] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:05:16.506 [DEBUG] [Thread-126639] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:05:16.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:05:16.507 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:05:16.564 [DEBUG] [Thread-126639] [transport.py] [_log()] userauth is OK
2025-11-04T02:05:16.565 [DEBUG] [Thread-126639] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:05:16.565 [DEBUG] [Thread-126639] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:05:16.565 [DEBUG] [Thread-126639] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:05:16.565 [DEBUG] [Thread-126639] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:05:16.583 [INFO] [Thread-126639] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:05:16.584 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:05:16.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:05:17.442 [DEBUG] [Thread-126639] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:05:17.443 [DEBUG] [Thread-126639] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:05:17.482 [DEBUG] [Thread-126639] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:05:17.482 [DEBUG] [Thread-126639] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:05:17.492 [DEBUG] [Thread-126639] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:05:17.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:05:17.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:05:17.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:05:17.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:05:17.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:05:17.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:05:17.529 [DEBUG] [Thread-126639] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:05:30.771 [DEBUG] [Thread-126641 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:05:39.260 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:05:39.261 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:05:45.866 [DEBUG] [Thread-126642 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:05:47.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:05:47.552 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:05:47.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:05:48.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 5, 17), 27.2, 14.32, 0.0, 22.21, 17.17, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:05:48.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:05:17
2025-11-04T02:05:48.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:05:48.620 [DEBUG] [Thread-126643] [transport.py] [_log()] starting thread (client mode): 0x117bdb10
2025-11-04T02:05:48.621 [DEBUG] [Thread-126643] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:05:48.635 [DEBUG] [Thread-126643] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:05:48.635 [INFO] [Thread-126643] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:05:48.640 [DEBUG] [Thread-126643] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:05:48.641 [DEBUG] [Thread-126643] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:05:48.641 [DEBUG] [Thread-126643] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:05:48.641 [DEBUG] [Thread-126643] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:05:48.641 [DEBUG] [Thread-126643] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:05:48.641 [DEBUG] [Thread-126643] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:05:48.641 [DEBUG] [Thread-126643] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:05:48.641 [DEBUG] [Thread-126643] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:05:48.641 [DEBUG] [Thread-126643] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:05:48.641 [DEBUG] [Thread-126643] [transport.py] [_log()] client lang: <none>
2025-11-04T02:05:48.641 [DEBUG] [Thread-126643] [transport.py] [_log()] server lang: <none>
2025-11-04T02:05:48.641 [DEBUG] [Thread-126643] [transport.py] [_log()] kex follows: False
2025-11-04T02:05:48.641 [DEBUG] [Thread-126643] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:05:48.643 [DEBUG] [Thread-126643] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:05:48.643 [DEBUG] [Thread-126643] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:05:48.643 [DEBUG] [Thread-126643] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:05:48.643 [DEBUG] [Thread-126643] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:05:48.643 [DEBUG] [Thread-126643] [transport.py] [_log()] Compression: none
2025-11-04T02:05:48.643 [DEBUG] [Thread-126643] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:05:48.679 [DEBUG] [Thread-126643] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:05:48.685 [DEBUG] [Thread-126643] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:05:48.686 [DEBUG] [Thread-126643] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:05:48.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:05:48.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:05:48.690 [DEBUG] [Thread-126643] [transport.py] [_log()] userauth is OK
2025-11-04T02:05:48.690 [DEBUG] [Thread-126643] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:05:48.690 [DEBUG] [Thread-126643] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:05:48.690 [DEBUG] [Thread-126643] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:05:48.690 [DEBUG] [Thread-126643] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:05:48.719 [INFO] [Thread-126643] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:05:48.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:05:49.371 [DEBUG] [Thread-126643] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:05:49.371 [DEBUG] [Thread-126643] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:05:49.372 [DEBUG] [Thread-126643] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:05:49.412 [DEBUG] [Thread-126643] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:05:49.412 [DEBUG] [Thread-126643] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:05:49.415 [DEBUG] [Thread-126643] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:05:49.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:05:49.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:05:49.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:05:49.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:05:49.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:05:49.436 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:05:49.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:05:49.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:05:49.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:05:49.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.003570 -999.00  +16.70  18.40     20   -6.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 16.9 18.4 320.2 20.1 17.1 -23.8 17.0 -22.8 16.7 -22.6 17.0 -23.5
2025-11-04T02:05:49.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:05:49.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:05:49.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.003570
2025-11-04T02:05:49.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:05:49.455 [DEBUG] [Thread-126643] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:05:49.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:05:49.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:05:49.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:05:49.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:05:49.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:05:17', tmtdew=27.2, humidity=14.32, cloud=0.0, wind=22.21, temperature=17.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:05:17', seeing=1.15, atlas_timestamp='2025-11-04T00:05:08.448', atlas_cloud=1, atlas_rain=1, zp_data=[0.07874999999999943, 0.09525000000000006, 0.08125000000000071, 0.11849999999999916, 0.06049999999999933, 0.1322499999999991, 0.02099999999999902, 0.10725000000000051, 0.15249999999999986, 0.10200000000000031, 0.17825000000000024, 0.14149999999999885, 0.2400000000000002, 0.07474999999999987, 0.06850000000000023, -0.021000000000000796, 0.16424999999999912, 0.1404999999999994, 0.2289999999999992, 0.21424999999999983, 0.238999999999999, -0.710250000000002, 0.14425000000000132, 0.10274999999999856, 0.1379999999999999, 0.2394999999999996, 0.13974999999999937, 0.26649999999999885, 0.3335000000000008, -0.26399999999999935, 0.21500000000000163, 0.16600000000000037, 0.14874999999999972], zp_timestamp='2025-11-04T00:03:00')
2025-11-04T02:05:49.530 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:05:49.546 [DEBUG] [Thread-126646] [transport.py] [_log()] starting thread (client mode): 0x117bc130
2025-11-04T02:05:49.546 [DEBUG] [Thread-126646] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:05:49.570 [DEBUG] [Thread-126646] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:05:49.570 [INFO] [Thread-126646] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:05:49.578 [DEBUG] [Thread-126646] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:05:49.578 [DEBUG] [Thread-126646] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:05:49.578 [DEBUG] [Thread-126646] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:05:49.578 [DEBUG] [Thread-126646] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:05:49.578 [DEBUG] [Thread-126646] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:05:49.578 [DEBUG] [Thread-126646] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:05:49.578 [DEBUG] [Thread-126646] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:05:49.578 [DEBUG] [Thread-126646] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:05:49.578 [DEBUG] [Thread-126646] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:05:49.578 [DEBUG] [Thread-126646] [transport.py] [_log()] client lang: <none>
2025-11-04T02:05:49.578 [DEBUG] [Thread-126646] [transport.py] [_log()] server lang: <none>
2025-11-04T02:05:49.578 [DEBUG] [Thread-126646] [transport.py] [_log()] kex follows: False
2025-11-04T02:05:49.578 [DEBUG] [Thread-126646] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:05:49.578 [DEBUG] [Thread-126646] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:05:49.578 [DEBUG] [Thread-126646] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:05:49.578 [DEBUG] [Thread-126646] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:05:49.578 [DEBUG] [Thread-126646] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:05:49.578 [DEBUG] [Thread-126646] [transport.py] [_log()] Compression: none
2025-11-04T02:05:49.578 [DEBUG] [Thread-126646] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:05:49.636 [DEBUG] [Thread-126646] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:05:49.636 [DEBUG] [Thread-126646] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:05:49.637 [DEBUG] [Thread-126646] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:05:49.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:05:49.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:05:49.692 [DEBUG] [Thread-126646] [transport.py] [_log()] userauth is OK
2025-11-04T02:05:49.692 [DEBUG] [Thread-126646] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:05:49.692 [DEBUG] [Thread-126646] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:05:49.692 [DEBUG] [Thread-126646] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:05:49.692 [DEBUG] [Thread-126646] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:05:49.707 [INFO] [Thread-126646] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:05:49.707 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:05:49.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:05:50.567 [DEBUG] [Thread-126646] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:05:50.567 [DEBUG] [Thread-126646] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:05:50.615 [DEBUG] [Thread-126646] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:05:50.615 [DEBUG] [Thread-126646] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:05:50.624 [DEBUG] [Thread-126646] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:05:50.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:05:50.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:05:50.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:05:50.650 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:05:50.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:05:50.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:05:50.663 [DEBUG] [Thread-126646] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:05:54.623 [DEBUG] [Thread-126648 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:06:00.918 [DEBUG] [Thread-126649 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:06:16.023 [DEBUG] [Thread-126650 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:06:20.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:06:20.678 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:06:20.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:06:21.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 5, 49), 27.17, 14.36, 0.0, 21.53, 17.24, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:06:21.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:05:49
2025-11-04T02:06:22.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:06:22.284 [DEBUG] [Thread-126651] [transport.py] [_log()] starting thread (client mode): 0x117981f0
2025-11-04T02:06:22.285 [DEBUG] [Thread-126651] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:06:22.297 [DEBUG] [Thread-126651] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:06:22.297 [INFO] [Thread-126651] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:06:22.301 [DEBUG] [Thread-126651] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:06:22.301 [DEBUG] [Thread-126651] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:06:22.301 [DEBUG] [Thread-126651] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:06:22.301 [DEBUG] [Thread-126651] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:06:22.301 [DEBUG] [Thread-126651] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:06:22.301 [DEBUG] [Thread-126651] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:06:22.301 [DEBUG] [Thread-126651] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:06:22.301 [DEBUG] [Thread-126651] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:06:22.301 [DEBUG] [Thread-126651] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:06:22.302 [DEBUG] [Thread-126651] [transport.py] [_log()] client lang: <none>
2025-11-04T02:06:22.302 [DEBUG] [Thread-126651] [transport.py] [_log()] server lang: <none>
2025-11-04T02:06:22.302 [DEBUG] [Thread-126651] [transport.py] [_log()] kex follows: False
2025-11-04T02:06:22.302 [DEBUG] [Thread-126651] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:06:22.302 [DEBUG] [Thread-126651] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:06:22.302 [DEBUG] [Thread-126651] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:06:22.302 [DEBUG] [Thread-126651] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:06:22.302 [DEBUG] [Thread-126651] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:06:22.302 [DEBUG] [Thread-126651] [transport.py] [_log()] Compression: none
2025-11-04T02:06:22.302 [DEBUG] [Thread-126651] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:06:22.330 [DEBUG] [Thread-126651] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:06:22.333 [DEBUG] [Thread-126651] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:06:22.334 [DEBUG] [Thread-126651] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:06:22.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:06:22.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:06:22.337 [DEBUG] [Thread-126651] [transport.py] [_log()] userauth is OK
2025-11-04T02:06:22.337 [DEBUG] [Thread-126651] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:06:22.337 [DEBUG] [Thread-126651] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:06:22.337 [DEBUG] [Thread-126651] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:06:22.337 [DEBUG] [Thread-126651] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:06:22.353 [INFO] [Thread-126651] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:06:22.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:06:22.956 [DEBUG] [Thread-126651] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:06:22.956 [DEBUG] [Thread-126651] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:06:22.957 [DEBUG] [Thread-126651] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:06:22.998 [DEBUG] [Thread-126651] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:06:22.998 [DEBUG] [Thread-126651] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:06:23.000 [DEBUG] [Thread-126651] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:06:23.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:06:23.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:06:23.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:06:23.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:06:23.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:06:23.022 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:06:23.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:06:23.022 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:06:23.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:06:23.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.003917 -999.00  +16.60  16.90     20   -6.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 15.2 16.9 323.2 18.5 17.1 -23.8 16.9 -22.9 16.7 -22.5 17.0 -23.5
2025-11-04T02:06:23.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:06:23.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:06:23.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.003917
2025-11-04T02:06:23.034 [DEBUG] [Thread-126651] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:06:23.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:06:23.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:06:23.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:06:23.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:06:23.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:06:23.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:05:49', tmtdew=27.17, humidity=14.36, cloud=0.0, wind=21.53, temperature=17.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:05:50', seeing=1.15, atlas_timestamp='2025-11-04T00:05:38.429', atlas_cloud=1, atlas_rain=1, zp_data=[0.07874999999999943, 0.09525000000000006, 0.08125000000000071, 0.11849999999999916, 0.06049999999999933, 0.1322499999999991, 0.02099999999999902, 0.10725000000000051, 0.15249999999999986, 0.10200000000000031, 0.17825000000000024, 0.14149999999999885, 0.2400000000000002, 0.07474999999999987, 0.06850000000000023, -0.021000000000000796, 0.16424999999999912, 0.1404999999999994, 0.2289999999999992, 0.21424999999999983, 0.238999999999999, -0.710250000000002, 0.14425000000000132, 0.10274999999999856, 0.1379999999999999, 0.2394999999999996, 0.13974999999999937, 0.26649999999999885, 0.3335000000000008, -0.26399999999999935, 0.21500000000000163, 0.16600000000000037, 0.14874999999999972], zp_timestamp='2025-11-04T00:03:00')
2025-11-04T02:06:23.118 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:06:23.129 [DEBUG] [Thread-126654] [transport.py] [_log()] starting thread (client mode): 0x1179b790
2025-11-04T02:06:23.129 [DEBUG] [Thread-126654] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:06:23.144 [DEBUG] [Thread-126654] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:06:23.144 [INFO] [Thread-126654] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:06:23.152 [DEBUG] [Thread-126654] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:06:23.152 [DEBUG] [Thread-126654] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:06:23.152 [DEBUG] [Thread-126654] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:06:23.152 [DEBUG] [Thread-126654] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:06:23.152 [DEBUG] [Thread-126654] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:06:23.152 [DEBUG] [Thread-126654] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:06:23.152 [DEBUG] [Thread-126654] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:06:23.152 [DEBUG] [Thread-126654] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:06:23.152 [DEBUG] [Thread-126654] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:06:23.152 [DEBUG] [Thread-126654] [transport.py] [_log()] client lang: <none>
2025-11-04T02:06:23.152 [DEBUG] [Thread-126654] [transport.py] [_log()] server lang: <none>
2025-11-04T02:06:23.152 [DEBUG] [Thread-126654] [transport.py] [_log()] kex follows: False
2025-11-04T02:06:23.152 [DEBUG] [Thread-126654] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:06:23.152 [DEBUG] [Thread-126654] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:06:23.152 [DEBUG] [Thread-126654] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:06:23.152 [DEBUG] [Thread-126654] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:06:23.152 [DEBUG] [Thread-126654] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:06:23.152 [DEBUG] [Thread-126654] [transport.py] [_log()] Compression: none
2025-11-04T02:06:23.152 [DEBUG] [Thread-126654] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:06:23.210 [DEBUG] [Thread-126654] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:06:23.211 [DEBUG] [Thread-126654] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:06:23.211 [DEBUG] [Thread-126654] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:06:23.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:06:23.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:06:23.267 [DEBUG] [Thread-126654] [transport.py] [_log()] userauth is OK
2025-11-04T02:06:23.267 [DEBUG] [Thread-126654] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:06:23.267 [DEBUG] [Thread-126654] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:06:23.267 [DEBUG] [Thread-126654] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:06:23.267 [DEBUG] [Thread-126654] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:06:23.285 [INFO] [Thread-126654] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:06:23.285 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:06:23.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:06:24.105 [DEBUG] [Thread-126654] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:06:24.105 [DEBUG] [Thread-126654] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:06:24.153 [DEBUG] [Thread-126654] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:06:24.153 [DEBUG] [Thread-126654] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:06:24.161 [DEBUG] [Thread-126654] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:06:24.170 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:06:24.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:06:24.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:06:24.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:06:24.187 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:06:24.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:06:24.195 [DEBUG] [Thread-126654] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:06:31.050 [DEBUG] [Thread-126656 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:06:39.462 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:06:39.463 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:06:46.096 [DEBUG] [Thread-126657 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:06:54.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:06:54.228 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:06:54.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:06:54.925 [DEBUG] [Thread-126658 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:06:55.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 6, 21), 27.16, 14.36, 0.0, 21.9, 17.2, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:06:55.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:06:21
2025-11-04T02:06:55.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:06:55.409 [DEBUG] [Thread-126659] [transport.py] [_log()] starting thread (client mode): 0x117980d0
2025-11-04T02:06:55.410 [DEBUG] [Thread-126659] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:06:55.429 [DEBUG] [Thread-126659] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:06:55.429 [INFO] [Thread-126659] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:06:55.432 [DEBUG] [Thread-126659] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:06:55.432 [DEBUG] [Thread-126659] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:06:55.432 [DEBUG] [Thread-126659] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:06:55.432 [DEBUG] [Thread-126659] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:06:55.432 [DEBUG] [Thread-126659] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:06:55.432 [DEBUG] [Thread-126659] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:06:55.432 [DEBUG] [Thread-126659] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:06:55.432 [DEBUG] [Thread-126659] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:06:55.432 [DEBUG] [Thread-126659] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:06:55.432 [DEBUG] [Thread-126659] [transport.py] [_log()] client lang: <none>
2025-11-04T02:06:55.432 [DEBUG] [Thread-126659] [transport.py] [_log()] server lang: <none>
2025-11-04T02:06:55.432 [DEBUG] [Thread-126659] [transport.py] [_log()] kex follows: False
2025-11-04T02:06:55.432 [DEBUG] [Thread-126659] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:06:55.433 [DEBUG] [Thread-126659] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:06:55.433 [DEBUG] [Thread-126659] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:06:55.433 [DEBUG] [Thread-126659] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:06:55.433 [DEBUG] [Thread-126659] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:06:55.433 [DEBUG] [Thread-126659] [transport.py] [_log()] Compression: none
2025-11-04T02:06:55.433 [DEBUG] [Thread-126659] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:06:55.448 [DEBUG] [Thread-126659] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:06:55.449 [DEBUG] [Thread-126659] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:06:55.449 [DEBUG] [Thread-126659] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:06:55.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:06:55.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:06:55.450 [DEBUG] [Thread-126659] [transport.py] [_log()] userauth is OK
2025-11-04T02:06:55.450 [DEBUG] [Thread-126659] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:06:55.450 [DEBUG] [Thread-126659] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:06:55.450 [DEBUG] [Thread-126659] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:06:55.450 [DEBUG] [Thread-126659] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:06:55.466 [INFO] [Thread-126659] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:06:55.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:06:56.062 [DEBUG] [Thread-126659] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:06:56.062 [DEBUG] [Thread-126659] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:06:56.062 [DEBUG] [Thread-126659] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:06:56.103 [DEBUG] [Thread-126659] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:06:56.103 [DEBUG] [Thread-126659] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:06:56.106 [DEBUG] [Thread-126659] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:06:56.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:06:56.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:06:56.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:06:56.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:06:56.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:06:56.125 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:06:56.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:06:56.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:06:56.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:06:56.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.004264 -999.00  +16.60  15.88     20   -6.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 18.5 15.9 324.0 21.7 17.1 -23.9 16.9 -23.0 16.6 -22.6 16.9 -23.4
2025-11-04T02:06:56.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:06:56.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:06:56.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.004264
2025-11-04T02:06:56.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:06:56.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:06:56.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:06:56.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:06:56.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:06:56.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:06:21', tmtdew=27.16, humidity=14.36, cloud=0.0, wind=21.9, temperature=17.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:06:22', seeing=1.14, atlas_timestamp='2025-11-04T00:06:08.410', atlas_cloud=1, atlas_rain=1, zp_data=[0.07874999999999943, 0.09525000000000006, 0.08125000000000071, 0.11849999999999916, 0.06049999999999933, 0.1322499999999991, 0.02099999999999902, 0.10725000000000051, 0.15249999999999986, 0.10200000000000031, 0.17825000000000024, 0.14149999999999885, 0.2400000000000002, 0.07474999999999987, 0.06850000000000023, -0.021000000000000796, 0.16424999999999912, 0.1404999999999994, 0.2289999999999992, 0.21424999999999983, 0.238999999999999, -0.710250000000002, 0.14425000000000132, 0.10274999999999856, 0.1379999999999999, 0.2394999999999996, 0.13974999999999937, 0.26649999999999885, 0.3335000000000008, -0.26399999999999935, 0.21500000000000163, 0.16600000000000037, 0.14874999999999972], zp_timestamp='2025-11-04T00:03:00')
2025-11-04T02:06:56.126 [DEBUG] [Thread-126659] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:06:56.203 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:06:56.215 [DEBUG] [Thread-126662] [transport.py] [_log()] starting thread (client mode): 0xedc6b90
2025-11-04T02:06:56.215 [DEBUG] [Thread-126662] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:06:56.230 [DEBUG] [Thread-126662] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:06:56.230 [INFO] [Thread-126662] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:06:56.237 [DEBUG] [Thread-126662] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:06:56.237 [DEBUG] [Thread-126662] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:06:56.238 [DEBUG] [Thread-126662] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:06:56.238 [DEBUG] [Thread-126662] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:06:56.238 [DEBUG] [Thread-126662] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:06:56.238 [DEBUG] [Thread-126662] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:06:56.238 [DEBUG] [Thread-126662] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:06:56.238 [DEBUG] [Thread-126662] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:06:56.238 [DEBUG] [Thread-126662] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:06:56.238 [DEBUG] [Thread-126662] [transport.py] [_log()] client lang: <none>
2025-11-04T02:06:56.238 [DEBUG] [Thread-126662] [transport.py] [_log()] server lang: <none>
2025-11-04T02:06:56.238 [DEBUG] [Thread-126662] [transport.py] [_log()] kex follows: False
2025-11-04T02:06:56.238 [DEBUG] [Thread-126662] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:06:56.238 [DEBUG] [Thread-126662] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:06:56.238 [DEBUG] [Thread-126662] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:06:56.238 [DEBUG] [Thread-126662] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:06:56.238 [DEBUG] [Thread-126662] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:06:56.238 [DEBUG] [Thread-126662] [transport.py] [_log()] Compression: none
2025-11-04T02:06:56.238 [DEBUG] [Thread-126662] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:06:56.297 [DEBUG] [Thread-126662] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:06:56.298 [DEBUG] [Thread-126662] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:06:56.298 [DEBUG] [Thread-126662] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:06:56.298 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:06:56.298 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:06:56.355 [DEBUG] [Thread-126662] [transport.py] [_log()] userauth is OK
2025-11-04T02:06:56.355 [DEBUG] [Thread-126662] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:06:56.355 [DEBUG] [Thread-126662] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:06:56.355 [DEBUG] [Thread-126662] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:06:56.355 [DEBUG] [Thread-126662] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:06:56.369 [INFO] [Thread-126662] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:06:56.369 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:06:56.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:06:57.207 [DEBUG] [Thread-126662] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:06:57.207 [DEBUG] [Thread-126662] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:06:57.255 [DEBUG] [Thread-126662] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:06:57.256 [DEBUG] [Thread-126662] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:06:57.265 [DEBUG] [Thread-126662] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:06:57.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:06:57.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:06:57.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:06:57.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:06:57.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:06:57.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:06:57.298 [DEBUG] [Thread-126662] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:07:01.127 [DEBUG] [Thread-126664 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:07:16.174 [DEBUG] [Thread-126665 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:07:27.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:07:27.298 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:07:27.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:07:28.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 6, 54), 27.23, 14.32, 0.0, 22.06, 17.12, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:07:28.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:06:54
2025-11-04T02:07:28.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:07:28.655 [DEBUG] [Thread-126666] [transport.py] [_log()] starting thread (client mode): 0xedc6d10
2025-11-04T02:07:28.656 [DEBUG] [Thread-126666] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:07:28.668 [DEBUG] [Thread-126666] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:07:28.668 [INFO] [Thread-126666] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:07:28.672 [DEBUG] [Thread-126666] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:07:28.672 [DEBUG] [Thread-126666] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:07:28.672 [DEBUG] [Thread-126666] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:07:28.672 [DEBUG] [Thread-126666] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:07:28.672 [DEBUG] [Thread-126666] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:07:28.672 [DEBUG] [Thread-126666] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:07:28.672 [DEBUG] [Thread-126666] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:07:28.672 [DEBUG] [Thread-126666] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:07:28.672 [DEBUG] [Thread-126666] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:07:28.672 [DEBUG] [Thread-126666] [transport.py] [_log()] client lang: <none>
2025-11-04T02:07:28.672 [DEBUG] [Thread-126666] [transport.py] [_log()] server lang: <none>
2025-11-04T02:07:28.672 [DEBUG] [Thread-126666] [transport.py] [_log()] kex follows: False
2025-11-04T02:07:28.672 [DEBUG] [Thread-126666] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:07:28.673 [DEBUG] [Thread-126666] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:07:28.673 [DEBUG] [Thread-126666] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:07:28.673 [DEBUG] [Thread-126666] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:07:28.673 [DEBUG] [Thread-126666] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:07:28.673 [DEBUG] [Thread-126666] [transport.py] [_log()] Compression: none
2025-11-04T02:07:28.673 [DEBUG] [Thread-126666] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:07:28.705 [DEBUG] [Thread-126666] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:07:28.709 [DEBUG] [Thread-126666] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:07:28.710 [DEBUG] [Thread-126666] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:07:28.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:07:28.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:07:28.714 [DEBUG] [Thread-126666] [transport.py] [_log()] userauth is OK
2025-11-04T02:07:28.714 [DEBUG] [Thread-126666] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:07:28.714 [DEBUG] [Thread-126666] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:07:28.714 [DEBUG] [Thread-126666] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:07:28.714 [DEBUG] [Thread-126666] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:07:28.732 [INFO] [Thread-126666] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:07:28.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:07:29.383 [DEBUG] [Thread-126666] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:07:29.383 [DEBUG] [Thread-126666] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:07:29.384 [DEBUG] [Thread-126666] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:07:29.424 [DEBUG] [Thread-126666] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:07:29.425 [DEBUG] [Thread-126666] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:07:29.427 [DEBUG] [Thread-126666] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:07:29.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:07:29.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:07:29.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:07:29.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:07:29.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:07:29.448 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:07:29.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:07:29.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:07:29.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:07:29.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.004612 -999.00  +16.60  18.08     20   -6.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 16.4 18.1 318.4 21.2 17.0 -23.9 16.9 -22.9 16.7 -22.4 16.9 -23.5
2025-11-04T02:07:29.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:07:29.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:07:29.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.004612
2025-11-04T02:07:29.455 [DEBUG] [Thread-126666] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:07:29.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:07:29.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:07:29.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:07:29.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:07:29.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:07:29.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:06:54', tmtdew=27.23, humidity=14.32, cloud=0.0, wind=22.06, temperature=17.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:06:55', seeing=1.14, atlas_timestamp='2025-11-04T00:06:38.477', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, 0.09325000000000117, 0.13724999999999987, 0.08899999999999864, 0.08549999999999969, 0.1487500000000015, 0.006999999999999673, 0.035250000000001336, 0.04849999999999888, 0.06799999999999962, 0.161249999999999, 0.09399999999999942, 0.20599999999999952, 0.1432500000000001, 0.013999999999999346, -0.040000000000000924, 0.09775000000000134, 0.07399999999999984, 0.17600000000000016, 0.145249999999999, 0.14499999999999957, -0.3522500000000015, 0.022250000000001435, 0.01774999999999949, 0.08000000000000007, 0.1905000000000001, 0.13175000000000026, 0.21000000000000085, 0.3290000000000006, -0.4299999999999997, 0.2060000000000013, 0.05500000000000149, 0.14874999999999972], zp_timestamp='2025-11-04T00:06:00')
2025-11-04T02:07:29.543 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:07:29.557 [DEBUG] [Thread-126669] [transport.py] [_log()] starting thread (client mode): 0x1179a020
2025-11-04T02:07:29.557 [DEBUG] [Thread-126669] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:07:29.573 [DEBUG] [Thread-126669] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:07:29.573 [INFO] [Thread-126669] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:07:29.581 [DEBUG] [Thread-126669] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:07:29.581 [DEBUG] [Thread-126669] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:07:29.581 [DEBUG] [Thread-126669] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:07:29.581 [DEBUG] [Thread-126669] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:07:29.581 [DEBUG] [Thread-126669] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:07:29.581 [DEBUG] [Thread-126669] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:07:29.581 [DEBUG] [Thread-126669] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:07:29.581 [DEBUG] [Thread-126669] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:07:29.581 [DEBUG] [Thread-126669] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:07:29.581 [DEBUG] [Thread-126669] [transport.py] [_log()] client lang: <none>
2025-11-04T02:07:29.581 [DEBUG] [Thread-126669] [transport.py] [_log()] server lang: <none>
2025-11-04T02:07:29.581 [DEBUG] [Thread-126669] [transport.py] [_log()] kex follows: False
2025-11-04T02:07:29.581 [DEBUG] [Thread-126669] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:07:29.581 [DEBUG] [Thread-126669] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:07:29.581 [DEBUG] [Thread-126669] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:07:29.581 [DEBUG] [Thread-126669] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:07:29.581 [DEBUG] [Thread-126669] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:07:29.581 [DEBUG] [Thread-126669] [transport.py] [_log()] Compression: none
2025-11-04T02:07:29.581 [DEBUG] [Thread-126669] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:07:29.638 [DEBUG] [Thread-126669] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:07:29.638 [DEBUG] [Thread-126669] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:07:29.638 [DEBUG] [Thread-126669] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:07:29.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:07:29.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:07:29.696 [DEBUG] [Thread-126669] [transport.py] [_log()] userauth is OK
2025-11-04T02:07:29.696 [DEBUG] [Thread-126669] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:07:29.696 [DEBUG] [Thread-126669] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:07:29.696 [DEBUG] [Thread-126669] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:07:29.696 [DEBUG] [Thread-126669] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:07:29.710 [INFO] [Thread-126669] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:07:29.710 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:07:29.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:07:30.570 [DEBUG] [Thread-126669] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:07:30.570 [DEBUG] [Thread-126669] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:07:30.618 [DEBUG] [Thread-126669] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:07:30.618 [DEBUG] [Thread-126669] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:07:30.627 [DEBUG] [Thread-126669] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:07:30.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:07:30.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:07:30.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:07:30.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:07:30.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:07:30.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:07:30.666 [DEBUG] [Thread-126669] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:07:31.216 [DEBUG] [Thread-126671 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:07:39.665 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:07:39.666 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:07:46.298 [DEBUG] [Thread-126672 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:07:55.266 [DEBUG] [Thread-126673 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:08:00.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:08:00.690 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:08:00.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:08:01.327 [DEBUG] [Thread-126674 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:08:01.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 7, 26), 27.19, 14.37, 0.0, 22.13, 17.16, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:08:01.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:07:26
2025-11-04T02:08:01.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:08:01.917 [DEBUG] [Thread-126675] [transport.py] [_log()] starting thread (client mode): 0xed37fd0
2025-11-04T02:08:01.918 [DEBUG] [Thread-126675] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:08:01.929 [DEBUG] [Thread-126675] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:08:01.930 [INFO] [Thread-126675] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:08:01.939 [DEBUG] [Thread-126675] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:08:01.939 [DEBUG] [Thread-126675] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:08:01.939 [DEBUG] [Thread-126675] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:08:01.939 [DEBUG] [Thread-126675] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:08:01.939 [DEBUG] [Thread-126675] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:08:01.939 [DEBUG] [Thread-126675] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:08:01.939 [DEBUG] [Thread-126675] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:08:01.939 [DEBUG] [Thread-126675] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:08:01.939 [DEBUG] [Thread-126675] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:08:01.939 [DEBUG] [Thread-126675] [transport.py] [_log()] client lang: <none>
2025-11-04T02:08:01.939 [DEBUG] [Thread-126675] [transport.py] [_log()] server lang: <none>
2025-11-04T02:08:01.939 [DEBUG] [Thread-126675] [transport.py] [_log()] kex follows: False
2025-11-04T02:08:01.939 [DEBUG] [Thread-126675] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:08:01.940 [DEBUG] [Thread-126675] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:08:01.940 [DEBUG] [Thread-126675] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:08:01.940 [DEBUG] [Thread-126675] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:08:01.940 [DEBUG] [Thread-126675] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:08:01.940 [DEBUG] [Thread-126675] [transport.py] [_log()] Compression: none
2025-11-04T02:08:01.940 [DEBUG] [Thread-126675] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:08:01.974 [DEBUG] [Thread-126675] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:08:01.977 [DEBUG] [Thread-126675] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:08:01.978 [DEBUG] [Thread-126675] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:08:01.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:08:01.980 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:08:01.982 [DEBUG] [Thread-126675] [transport.py] [_log()] userauth is OK
2025-11-04T02:08:01.982 [DEBUG] [Thread-126675] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:08:01.982 [DEBUG] [Thread-126675] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:08:01.982 [DEBUG] [Thread-126675] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:08:01.982 [DEBUG] [Thread-126675] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:08:01.999 [INFO] [Thread-126675] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:08:02.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:08:02.649 [DEBUG] [Thread-126675] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:08:02.650 [DEBUG] [Thread-126675] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:08:02.650 [DEBUG] [Thread-126675] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:08:02.691 [DEBUG] [Thread-126675] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:08:02.691 [DEBUG] [Thread-126675] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:08:02.693 [DEBUG] [Thread-126675] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:08:02.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:08:02.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:08:02.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:08:02.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:08:02.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:08:02.716 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:08:02.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:08:02.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:08:02.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:08:02.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.004959 -999.00  +16.60  17.18     20   -6.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 12.3 17.2 323.6 20.6 17.0 -23.9 16.9 -23.0 16.7 -22.5 16.9 -23.5
2025-11-04T02:08:02.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:08:02.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:08:02.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.004959
2025-11-04T02:08:02.723 [DEBUG] [Thread-126675] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:08:02.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:08:02.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:08:02.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:08:02.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:08:02.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:08:02.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:07:26', tmtdew=27.19, humidity=14.37, cloud=0.0, wind=22.13, temperature=17.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:08:00', seeing=1.22, atlas_timestamp='2025-11-04T00:07:08.458', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, 0.09325000000000117, 0.13724999999999987, 0.08899999999999864, 0.08549999999999969, 0.1487500000000015, 0.006999999999999673, 0.035250000000001336, 0.04849999999999888, 0.06799999999999962, 0.161249999999999, 0.09399999999999942, 0.20599999999999952, 0.1432500000000001, 0.013999999999999346, -0.040000000000000924, 0.09775000000000134, 0.07399999999999984, 0.17600000000000016, 0.145249999999999, 0.14499999999999957, -0.3522500000000015, 0.022250000000001435, 0.01774999999999949, 0.08000000000000007, 0.1905000000000001, 0.13175000000000026, 0.21000000000000085, 0.3290000000000006, -0.4299999999999997, 0.2060000000000013, 0.05500000000000149, 0.14874999999999972], zp_timestamp='2025-11-04T00:06:00')
2025-11-04T02:08:02.815 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:08:02.828 [DEBUG] [Thread-126678] [transport.py] [_log()] starting thread (client mode): 0xedc62c0
2025-11-04T02:08:02.828 [DEBUG] [Thread-126678] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:08:02.848 [DEBUG] [Thread-126678] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:08:02.848 [INFO] [Thread-126678] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:08:02.856 [DEBUG] [Thread-126678] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:08:02.856 [DEBUG] [Thread-126678] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:08:02.856 [DEBUG] [Thread-126678] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:08:02.856 [DEBUG] [Thread-126678] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:08:02.856 [DEBUG] [Thread-126678] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:08:02.856 [DEBUG] [Thread-126678] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:08:02.856 [DEBUG] [Thread-126678] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:08:02.856 [DEBUG] [Thread-126678] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:08:02.856 [DEBUG] [Thread-126678] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:08:02.856 [DEBUG] [Thread-126678] [transport.py] [_log()] client lang: <none>
2025-11-04T02:08:02.856 [DEBUG] [Thread-126678] [transport.py] [_log()] server lang: <none>
2025-11-04T02:08:02.856 [DEBUG] [Thread-126678] [transport.py] [_log()] kex follows: False
2025-11-04T02:08:02.856 [DEBUG] [Thread-126678] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:08:02.856 [DEBUG] [Thread-126678] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:08:02.856 [DEBUG] [Thread-126678] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:08:02.856 [DEBUG] [Thread-126678] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:08:02.856 [DEBUG] [Thread-126678] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:08:02.856 [DEBUG] [Thread-126678] [transport.py] [_log()] Compression: none
2025-11-04T02:08:02.856 [DEBUG] [Thread-126678] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:08:02.914 [DEBUG] [Thread-126678] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:08:02.914 [DEBUG] [Thread-126678] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:08:02.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:08:02.914 [DEBUG] [Thread-126678] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:08:02.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:08:02.972 [DEBUG] [Thread-126678] [transport.py] [_log()] userauth is OK
2025-11-04T02:08:02.972 [DEBUG] [Thread-126678] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:08:02.973 [DEBUG] [Thread-126678] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:08:02.973 [DEBUG] [Thread-126678] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:08:02.973 [DEBUG] [Thread-126678] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:08:02.988 [INFO] [Thread-126678] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:08:02.988 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:08:02.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:08:03.882 [DEBUG] [Thread-126678] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:08:03.883 [DEBUG] [Thread-126678] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:08:03.930 [DEBUG] [Thread-126678] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:08:03.930 [DEBUG] [Thread-126678] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:08:03.939 [DEBUG] [Thread-126678] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:08:03.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:08:03.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:08:03.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:08:03.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:08:03.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:08:03.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:08:03.982 [DEBUG] [Thread-126678] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:08:07.401 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:08:11.191 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:08:14.339 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:08:16.368 [DEBUG] [Thread-126680 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:08:20.744 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:08:31.504 [DEBUG] [Thread-126681 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:08:34.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:08:34.005 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:08:34.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:08:34.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 7, 59), 27.2, 14.37, 0.0, 21.99, 17.19, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:08:34.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:07:59
2025-11-04T02:08:35.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:08:35.250 [DEBUG] [Thread-126682] [transport.py] [_log()] starting thread (client mode): 0xedc7d90
2025-11-04T02:08:35.251 [DEBUG] [Thread-126682] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:08:35.263 [DEBUG] [Thread-126682] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:08:35.264 [INFO] [Thread-126682] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:08:35.268 [DEBUG] [Thread-126682] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:08:35.268 [DEBUG] [Thread-126682] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:08:35.268 [DEBUG] [Thread-126682] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:08:35.268 [DEBUG] [Thread-126682] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:08:35.268 [DEBUG] [Thread-126682] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:08:35.268 [DEBUG] [Thread-126682] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:08:35.268 [DEBUG] [Thread-126682] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:08:35.268 [DEBUG] [Thread-126682] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:08:35.268 [DEBUG] [Thread-126682] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:08:35.268 [DEBUG] [Thread-126682] [transport.py] [_log()] client lang: <none>
2025-11-04T02:08:35.269 [DEBUG] [Thread-126682] [transport.py] [_log()] server lang: <none>
2025-11-04T02:08:35.269 [DEBUG] [Thread-126682] [transport.py] [_log()] kex follows: False
2025-11-04T02:08:35.269 [DEBUG] [Thread-126682] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:08:35.269 [DEBUG] [Thread-126682] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:08:35.269 [DEBUG] [Thread-126682] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:08:35.270 [DEBUG] [Thread-126682] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:08:35.270 [DEBUG] [Thread-126682] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:08:35.270 [DEBUG] [Thread-126682] [transport.py] [_log()] Compression: none
2025-11-04T02:08:35.270 [DEBUG] [Thread-126682] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:08:35.292 [DEBUG] [Thread-126682] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:08:35.296 [DEBUG] [Thread-126682] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:08:35.298 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:08:35.298 [DEBUG] [Thread-126682] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:08:35.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:08:35.301 [DEBUG] [Thread-126682] [transport.py] [_log()] userauth is OK
2025-11-04T02:08:35.301 [DEBUG] [Thread-126682] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:08:35.301 [DEBUG] [Thread-126682] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:08:35.301 [DEBUG] [Thread-126682] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:08:35.301 [DEBUG] [Thread-126682] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:08:35.318 [INFO] [Thread-126682] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:08:35.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:08:35.956 [DEBUG] [Thread-126682] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:08:35.956 [DEBUG] [Thread-126682] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:08:35.958 [DEBUG] [Thread-126682] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:08:35.997 [DEBUG] [Thread-126682] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:08:35.997 [DEBUG] [Thread-126682] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:08:36.002 [DEBUG] [Thread-126682] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:08:36.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:08:36.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:08:36.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:08:36.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:08:36.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:08:36.031 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:08:36.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:08:36.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:08:36.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:08:36.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.005653 -999.00  +16.60  15.24     20   -6.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 19.6 15.2 318.2 19.8 17.0 -23.8 16.9 -22.9 16.6 -22.5 16.9 -23.5
2025-11-04T02:08:36.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:08:36.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:08:36.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.005653
2025-11-04T02:08:36.039 [DEBUG] [Thread-126682] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:08:36.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:08:36.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:08:36.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:08:36.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:08:36.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:08:36.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:07:59', tmtdew=27.2, humidity=14.37, cloud=0.0, wind=21.99, temperature=17.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:08:33', seeing=1.18, atlas_timestamp='2025-11-04T00:08:08.419', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, 0.09325000000000117, 0.13724999999999987, 0.08899999999999864, 0.08549999999999969, 0.1487500000000015, 0.006999999999999673, 0.035250000000001336, 0.04849999999999888, 0.06799999999999962, 0.161249999999999, 0.09399999999999942, 0.20599999999999952, 0.1432500000000001, 0.013999999999999346, -0.040000000000000924, 0.09775000000000134, 0.07399999999999984, 0.17600000000000016, 0.145249999999999, 0.14499999999999957, -0.3522500000000015, 0.022250000000001435, 0.01774999999999949, 0.08000000000000007, 0.1905000000000001, 0.13175000000000026, 0.21000000000000085, 0.3290000000000006, -0.4299999999999997, 0.2060000000000013, 0.05500000000000149, 0.14874999999999972], zp_timestamp='2025-11-04T00:06:00')
2025-11-04T02:08:36.153 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:08:36.166 [DEBUG] [Thread-126685] [transport.py] [_log()] starting thread (client mode): 0xedc7370
2025-11-04T02:08:36.166 [DEBUG] [Thread-126685] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:08:36.183 [DEBUG] [Thread-126685] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:08:36.183 [INFO] [Thread-126685] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:08:36.191 [DEBUG] [Thread-126685] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:08:36.191 [DEBUG] [Thread-126685] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:08:36.192 [DEBUG] [Thread-126685] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:08:36.192 [DEBUG] [Thread-126685] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:08:36.192 [DEBUG] [Thread-126685] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:08:36.192 [DEBUG] [Thread-126685] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:08:36.192 [DEBUG] [Thread-126685] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:08:36.192 [DEBUG] [Thread-126685] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:08:36.192 [DEBUG] [Thread-126685] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:08:36.192 [DEBUG] [Thread-126685] [transport.py] [_log()] client lang: <none>
2025-11-04T02:08:36.192 [DEBUG] [Thread-126685] [transport.py] [_log()] server lang: <none>
2025-11-04T02:08:36.192 [DEBUG] [Thread-126685] [transport.py] [_log()] kex follows: False
2025-11-04T02:08:36.192 [DEBUG] [Thread-126685] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:08:36.192 [DEBUG] [Thread-126685] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:08:36.192 [DEBUG] [Thread-126685] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:08:36.192 [DEBUG] [Thread-126685] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:08:36.192 [DEBUG] [Thread-126685] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:08:36.193 [DEBUG] [Thread-126685] [transport.py] [_log()] Compression: none
2025-11-04T02:08:36.193 [DEBUG] [Thread-126685] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:08:36.252 [DEBUG] [Thread-126685] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:08:36.253 [DEBUG] [Thread-126685] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:08:36.254 [DEBUG] [Thread-126685] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:08:36.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:08:36.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:08:36.311 [DEBUG] [Thread-126685] [transport.py] [_log()] userauth is OK
2025-11-04T02:08:36.312 [DEBUG] [Thread-126685] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:08:36.312 [DEBUG] [Thread-126685] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:08:36.312 [DEBUG] [Thread-126685] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:08:36.313 [DEBUG] [Thread-126685] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:08:36.333 [INFO] [Thread-126685] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:08:36.334 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:08:36.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:08:37.249 [DEBUG] [Thread-126685] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:08:37.249 [DEBUG] [Thread-126685] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:08:37.296 [DEBUG] [Thread-126685] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:08:37.296 [DEBUG] [Thread-126685] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:08:37.306 [DEBUG] [Thread-126685] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:08:37.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:08:37.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:08:37.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:08:37.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:08:37.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:08:37.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:08:37.341 [DEBUG] [Thread-126685] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:08:39.876 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:08:39.877 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:08:46.537 [DEBUG] [Thread-126687 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:08:55.581 [DEBUG] [Thread-126688 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:09:01.620 [DEBUG] [Thread-126689 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:09:07.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:09:07.365 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:09:07.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:09:08.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 8, 32), 27.18, 14.84, 0.0, 21.81, 17.21, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:09:08.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:08:32
2025-11-04T02:09:08.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:09:08.563 [DEBUG] [Thread-126690] [transport.py] [_log()] starting thread (client mode): 0x8199390
2025-11-04T02:09:08.564 [DEBUG] [Thread-126690] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:09:08.578 [DEBUG] [Thread-126690] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:09:08.578 [INFO] [Thread-126690] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:09:08.581 [DEBUG] [Thread-126690] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:09:08.582 [DEBUG] [Thread-126690] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:09:08.582 [DEBUG] [Thread-126690] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:09:08.582 [DEBUG] [Thread-126690] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:09:08.582 [DEBUG] [Thread-126690] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:09:08.582 [DEBUG] [Thread-126690] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:09:08.582 [DEBUG] [Thread-126690] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:09:08.582 [DEBUG] [Thread-126690] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:09:08.582 [DEBUG] [Thread-126690] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:09:08.582 [DEBUG] [Thread-126690] [transport.py] [_log()] client lang: <none>
2025-11-04T02:09:08.582 [DEBUG] [Thread-126690] [transport.py] [_log()] server lang: <none>
2025-11-04T02:09:08.582 [DEBUG] [Thread-126690] [transport.py] [_log()] kex follows: False
2025-11-04T02:09:08.582 [DEBUG] [Thread-126690] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:09:08.582 [DEBUG] [Thread-126690] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:09:08.582 [DEBUG] [Thread-126690] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:09:08.582 [DEBUG] [Thread-126690] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:09:08.582 [DEBUG] [Thread-126690] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:09:08.582 [DEBUG] [Thread-126690] [transport.py] [_log()] Compression: none
2025-11-04T02:09:08.582 [DEBUG] [Thread-126690] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:09:08.610 [DEBUG] [Thread-126690] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:09:08.613 [DEBUG] [Thread-126690] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:09:08.614 [DEBUG] [Thread-126690] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:09:08.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:09:08.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:09:08.617 [DEBUG] [Thread-126690] [transport.py] [_log()] userauth is OK
2025-11-04T02:09:08.617 [DEBUG] [Thread-126690] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:09:08.617 [DEBUG] [Thread-126690] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:09:08.617 [DEBUG] [Thread-126690] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:09:08.617 [DEBUG] [Thread-126690] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:09:08.635 [INFO] [Thread-126690] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:09:08.636 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:09:09.249 [DEBUG] [Thread-126690] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:09:09.249 [DEBUG] [Thread-126690] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:09:09.250 [DEBUG] [Thread-126690] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:09:09.290 [DEBUG] [Thread-126690] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:09:09.290 [DEBUG] [Thread-126690] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:09:09.292 [DEBUG] [Thread-126690] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:09:09.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:09:09.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:09:09.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:09:09.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:09:09.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:09:09.314 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:09:09.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:09:09.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:09:09.315 [DEBUG] [Thread-126690] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:09:09.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:09:09.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.006000 -999.00  +16.60  14.30     20   -6.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 15.2 14.3 326.6 23.5 17.0 -23.8 16.9 -22.9 16.6 -22.6 16.9 -23.4
2025-11-04T02:09:09.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:09:09.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:09:09.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.006000
2025-11-04T02:09:09.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:09:09.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:09:09.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:09:09.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:09:09.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:09:09.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:08:32', tmtdew=27.18, humidity=14.84, cloud=0.0, wind=21.81, temperature=17.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:09:05', seeing=1.18, atlas_timestamp='2025-11-04T00:08:38.400', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, 0.09325000000000117, 0.13724999999999987, 0.08899999999999864, 0.08549999999999969, 0.1487500000000015, 0.006999999999999673, 0.035250000000001336, 0.04849999999999888, 0.06799999999999962, 0.161249999999999, 0.09399999999999942, 0.20599999999999952, 0.1432500000000001, 0.013999999999999346, -0.040000000000000924, 0.09775000000000134, 0.07399999999999984, 0.17600000000000016, 0.145249999999999, 0.14499999999999957, -0.3522500000000015, 0.022250000000001435, 0.01774999999999949, 0.08000000000000007, 0.1905000000000001, 0.13175000000000026, 0.21000000000000085, 0.3290000000000006, -0.4299999999999997, 0.2060000000000013, 0.05500000000000149, 0.14874999999999972], zp_timestamp='2025-11-04T00:06:00')
2025-11-04T02:09:09.415 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:09:09.426 [DEBUG] [Thread-126693] [transport.py] [_log()] starting thread (client mode): 0x8199f30
2025-11-04T02:09:09.427 [DEBUG] [Thread-126693] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:09:09.442 [DEBUG] [Thread-126693] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:09:09.442 [INFO] [Thread-126693] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:09:09.449 [DEBUG] [Thread-126693] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:09:09.449 [DEBUG] [Thread-126693] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:09:09.449 [DEBUG] [Thread-126693] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:09:09.449 [DEBUG] [Thread-126693] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:09:09.450 [DEBUG] [Thread-126693] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:09:09.450 [DEBUG] [Thread-126693] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:09:09.450 [DEBUG] [Thread-126693] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:09:09.450 [DEBUG] [Thread-126693] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:09:09.450 [DEBUG] [Thread-126693] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:09:09.450 [DEBUG] [Thread-126693] [transport.py] [_log()] client lang: <none>
2025-11-04T02:09:09.450 [DEBUG] [Thread-126693] [transport.py] [_log()] server lang: <none>
2025-11-04T02:09:09.450 [DEBUG] [Thread-126693] [transport.py] [_log()] kex follows: False
2025-11-04T02:09:09.450 [DEBUG] [Thread-126693] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:09:09.450 [DEBUG] [Thread-126693] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:09:09.450 [DEBUG] [Thread-126693] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:09:09.450 [DEBUG] [Thread-126693] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:09:09.450 [DEBUG] [Thread-126693] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:09:09.450 [DEBUG] [Thread-126693] [transport.py] [_log()] Compression: none
2025-11-04T02:09:09.450 [DEBUG] [Thread-126693] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:09:09.506 [DEBUG] [Thread-126693] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:09:09.506 [DEBUG] [Thread-126693] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:09:09.506 [DEBUG] [Thread-126693] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:09:09.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:09:09.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:09:09.563 [DEBUG] [Thread-126693] [transport.py] [_log()] userauth is OK
2025-11-04T02:09:09.563 [DEBUG] [Thread-126693] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:09:09.563 [DEBUG] [Thread-126693] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:09:09.563 [DEBUG] [Thread-126693] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:09:09.563 [DEBUG] [Thread-126693] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:09:09.578 [INFO] [Thread-126693] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:09:09.578 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:09:09.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:09:10.433 [DEBUG] [Thread-126693] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:09:10.433 [DEBUG] [Thread-126693] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:09:10.482 [DEBUG] [Thread-126693] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:09:10.482 [DEBUG] [Thread-126693] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:09:10.492 [DEBUG] [Thread-126693] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:09:10.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:09:10.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:09:10.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:09:10.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:09:10.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:09:10.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:09:10.530 [DEBUG] [Thread-126693] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:09:16.656 [DEBUG] [Thread-126695 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:09:29.370 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:09:31.742 [DEBUG] [Thread-126696 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:09:32.471 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:09:37.507 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:09:40.078 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:09:40.079 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:09:40.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:09:40.552 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:09:40.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:09:41.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 9, 5), 27.19, 14.82, 0.0, 21.93, 17.17, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:09:41.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:09:05
2025-11-04T02:09:41.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:09:41.759 [DEBUG] [Thread-126697] [transport.py] [_log()] starting thread (client mode): 0x11798760
2025-11-04T02:09:41.760 [DEBUG] [Thread-126697] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:09:41.772 [DEBUG] [Thread-126697] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:09:41.773 [INFO] [Thread-126697] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:09:41.776 [DEBUG] [Thread-126697] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:09:41.776 [DEBUG] [Thread-126697] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:09:41.776 [DEBUG] [Thread-126697] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:09:41.776 [DEBUG] [Thread-126697] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:09:41.776 [DEBUG] [Thread-126697] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:09:41.776 [DEBUG] [Thread-126697] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:09:41.776 [DEBUG] [Thread-126697] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:09:41.776 [DEBUG] [Thread-126697] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:09:41.776 [DEBUG] [Thread-126697] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:09:41.776 [DEBUG] [Thread-126697] [transport.py] [_log()] client lang: <none>
2025-11-04T02:09:41.776 [DEBUG] [Thread-126697] [transport.py] [_log()] server lang: <none>
2025-11-04T02:09:41.777 [DEBUG] [Thread-126697] [transport.py] [_log()] kex follows: False
2025-11-04T02:09:41.777 [DEBUG] [Thread-126697] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:09:41.778 [DEBUG] [Thread-126697] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:09:41.778 [DEBUG] [Thread-126697] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:09:41.778 [DEBUG] [Thread-126697] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:09:41.778 [DEBUG] [Thread-126697] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:09:41.778 [DEBUG] [Thread-126697] [transport.py] [_log()] Compression: none
2025-11-04T02:09:41.778 [DEBUG] [Thread-126697] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:09:41.807 [DEBUG] [Thread-126697] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:09:41.811 [DEBUG] [Thread-126697] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:09:41.813 [DEBUG] [Thread-126697] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:09:41.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:09:41.815 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:09:41.816 [DEBUG] [Thread-126697] [transport.py] [_log()] userauth is OK
2025-11-04T02:09:41.817 [DEBUG] [Thread-126697] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:09:41.817 [DEBUG] [Thread-126697] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:09:41.817 [DEBUG] [Thread-126697] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:09:41.817 [DEBUG] [Thread-126697] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:09:41.842 [INFO] [Thread-126697] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:09:41.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:09:42.464 [DEBUG] [Thread-126697] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:09:42.466 [DEBUG] [Thread-126697] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:09:42.466 [DEBUG] [Thread-126697] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:09:42.505 [DEBUG] [Thread-126697] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:09:42.505 [DEBUG] [Thread-126697] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:09:42.508 [DEBUG] [Thread-126697] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:09:42.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:09:42.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:09:42.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:09:42.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:09:42.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:09:42.528 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:09:42.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:09:42.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:09:42.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:09:42.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.006348 -999.00  +16.60  14.85     20   -6.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 17.9 14.8 328.0 18.1 17.0 -23.8 16.9 -22.8 16.6 -22.5 16.9 -23.5
2025-11-04T02:09:42.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:09:42.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:09:42.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.006348
2025-11-04T02:09:42.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:09:42.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:09:42.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:09:42.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:09:42.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:09:42.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:09:05', tmtdew=27.19, humidity=14.82, cloud=0.0, wind=21.93, temperature=17.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:09:38', seeing=1.25, atlas_timestamp='2025-11-04T00:09:08.467', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, 0.09325000000000117, 0.13724999999999987, 0.08899999999999864, 0.08549999999999969, 0.1487500000000015, 0.006999999999999673, 0.035250000000001336, 0.04849999999999888, 0.06799999999999962, 0.161249999999999, 0.09399999999999942, 0.20599999999999952, 0.1432500000000001, 0.013999999999999346, -0.040000000000000924, 0.09775000000000134, 0.07399999999999984, 0.17600000000000016, 0.145249999999999, 0.14499999999999957, -0.3522500000000015, 0.022250000000001435, 0.01774999999999949, 0.08000000000000007, 0.1905000000000001, 0.13175000000000026, 0.21000000000000085, 0.3290000000000006, -0.4299999999999997, 0.2060000000000013, 0.05500000000000149, 0.14874999999999972], zp_timestamp='2025-11-04T00:06:00')
2025-11-04T02:09:42.531 [DEBUG] [Thread-126697] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:09:42.603 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:09:42.615 [DEBUG] [Thread-126700] [transport.py] [_log()] starting thread (client mode): 0xed356c0
2025-11-04T02:09:42.615 [DEBUG] [Thread-126700] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:09:42.630 [DEBUG] [Thread-126700] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:09:42.630 [INFO] [Thread-126700] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:09:42.638 [DEBUG] [Thread-126700] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:09:42.639 [DEBUG] [Thread-126700] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:09:42.639 [DEBUG] [Thread-126700] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:09:42.639 [DEBUG] [Thread-126700] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:09:42.639 [DEBUG] [Thread-126700] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:09:42.639 [DEBUG] [Thread-126700] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:09:42.639 [DEBUG] [Thread-126700] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:09:42.639 [DEBUG] [Thread-126700] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:09:42.639 [DEBUG] [Thread-126700] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:09:42.639 [DEBUG] [Thread-126700] [transport.py] [_log()] client lang: <none>
2025-11-04T02:09:42.639 [DEBUG] [Thread-126700] [transport.py] [_log()] server lang: <none>
2025-11-04T02:09:42.639 [DEBUG] [Thread-126700] [transport.py] [_log()] kex follows: False
2025-11-04T02:09:42.639 [DEBUG] [Thread-126700] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:09:42.639 [DEBUG] [Thread-126700] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:09:42.639 [DEBUG] [Thread-126700] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:09:42.639 [DEBUG] [Thread-126700] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:09:42.640 [DEBUG] [Thread-126700] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:09:42.640 [DEBUG] [Thread-126700] [transport.py] [_log()] Compression: none
2025-11-04T02:09:42.640 [DEBUG] [Thread-126700] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:09:42.699 [DEBUG] [Thread-126700] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:09:42.700 [DEBUG] [Thread-126700] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:09:42.701 [DEBUG] [Thread-126700] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:09:42.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:09:42.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:09:42.755 [DEBUG] [Thread-126700] [transport.py] [_log()] userauth is OK
2025-11-04T02:09:42.756 [DEBUG] [Thread-126700] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:09:42.756 [DEBUG] [Thread-126700] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:09:42.756 [DEBUG] [Thread-126700] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:09:42.756 [DEBUG] [Thread-126700] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:09:42.775 [INFO] [Thread-126700] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:09:42.776 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:09:42.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:09:42.881 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:09:43.614 [DEBUG] [Thread-126700] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:09:43.614 [DEBUG] [Thread-126700] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:09:43.661 [DEBUG] [Thread-126700] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:09:43.662 [DEBUG] [Thread-126700] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:09:43.672 [DEBUG] [Thread-126700] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:09:43.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:09:43.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:09:43.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:09:43.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:09:43.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:09:43.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:09:43.707 [DEBUG] [Thread-126700] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:09:46.771 [DEBUG] [Thread-126702 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:09:55.935 [DEBUG] [Thread-126703 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:10:01.825 [DEBUG] [Thread-126704 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:10:02.282 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:10:06.719 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:10:13.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:10:13.735 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:10:13.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:10:14.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 9, 37), 27.17, 14.84, 0.0, 19.99, 17.12, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:10:14.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:09:37
2025-11-04T02:10:14.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:10:14.921 [DEBUG] [Thread-126705] [transport.py] [_log()] starting thread (client mode): 0x8199450
2025-11-04T02:10:14.922 [DEBUG] [Thread-126705] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:10:14.932 [DEBUG] [Thread-126705] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:10:14.932 [INFO] [Thread-126705] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:10:14.937 [DEBUG] [Thread-126705] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:10:14.938 [DEBUG] [Thread-126705] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:10:14.938 [DEBUG] [Thread-126705] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:10:14.938 [DEBUG] [Thread-126705] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:10:14.938 [DEBUG] [Thread-126705] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:10:14.938 [DEBUG] [Thread-126705] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:10:14.938 [DEBUG] [Thread-126705] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:10:14.938 [DEBUG] [Thread-126705] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:10:14.938 [DEBUG] [Thread-126705] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:10:14.938 [DEBUG] [Thread-126705] [transport.py] [_log()] client lang: <none>
2025-11-04T02:10:14.938 [DEBUG] [Thread-126705] [transport.py] [_log()] server lang: <none>
2025-11-04T02:10:14.939 [DEBUG] [Thread-126705] [transport.py] [_log()] kex follows: False
2025-11-04T02:10:14.939 [DEBUG] [Thread-126705] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:10:14.939 [DEBUG] [Thread-126705] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:10:14.940 [DEBUG] [Thread-126705] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:10:14.940 [DEBUG] [Thread-126705] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:10:14.940 [DEBUG] [Thread-126705] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:10:14.940 [DEBUG] [Thread-126705] [transport.py] [_log()] Compression: none
2025-11-04T02:10:14.940 [DEBUG] [Thread-126705] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:10:14.981 [DEBUG] [Thread-126705] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:10:14.986 [DEBUG] [Thread-126705] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:10:14.988 [DEBUG] [Thread-126705] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:10:14.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:10:14.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:10:14.994 [DEBUG] [Thread-126705] [transport.py] [_log()] userauth is OK
2025-11-04T02:10:14.994 [DEBUG] [Thread-126705] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:10:14.995 [DEBUG] [Thread-126705] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:10:14.995 [DEBUG] [Thread-126705] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:10:14.995 [DEBUG] [Thread-126705] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:10:15.034 [INFO] [Thread-126705] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:10:15.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:10:16.885 [DEBUG] [Thread-126707 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:10:17.133 [DEBUG] [Thread-126705] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:10:17.133 [DEBUG] [Thread-126705] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:10:17.143 [DEBUG] [Thread-126705] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:10:17.175 [DEBUG] [Thread-126705] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:10:17.175 [DEBUG] [Thread-126705] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:10:17.177 [DEBUG] [Thread-126705] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:10:17.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:10:17.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:10:17.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:10:17.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:10:17.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:10:17.305 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:10:17.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:10:17.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:10:17.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:10:17.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.006695 -999.00  +16.50  16.70     20   -6.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 16.0 16.7 319.4 19.6 17.0 -23.8 16.9 -22.8 16.6 -22.5 16.9 -23.4
2025-11-04T02:10:17.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:10:17.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:10:17.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.006695
2025-11-04T02:10:17.313 [DEBUG] [Thread-126705] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:10:17.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:10:17.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:10:17.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:10:17.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:10:17.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:10:17.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:09:37', tmtdew=27.17, humidity=14.84, cloud=0.0, wind=19.99, temperature=17.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:10:11', seeing=1.25, atlas_timestamp='2025-11-04T00:09:38.448', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, 0.09325000000000117, 0.13724999999999987, 0.08899999999999864, 0.08549999999999969, 0.1487500000000015, 0.006999999999999673, 0.035250000000001336, 0.04849999999999888, 0.06799999999999962, 0.161249999999999, 0.09399999999999942, 0.20599999999999952, 0.1432500000000001, 0.013999999999999346, -0.040000000000000924, 0.09775000000000134, 0.07399999999999984, 0.17600000000000016, 0.145249999999999, 0.14499999999999957, -0.3522500000000015, 0.022250000000001435, 0.01774999999999949, 0.08000000000000007, 0.1905000000000001, 0.13175000000000026, 0.21000000000000085, 0.3290000000000006, -0.4299999999999997, 0.2060000000000013, 0.05500000000000149, 0.14874999999999972], zp_timestamp='2025-11-04T00:06:00')
2025-11-04T02:10:17.397 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:10:17.409 [DEBUG] [Thread-126709] [transport.py] [_log()] starting thread (client mode): 0xed37eb0
2025-11-04T02:10:17.409 [DEBUG] [Thread-126709] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:10:17.423 [DEBUG] [Thread-126709] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:10:17.423 [INFO] [Thread-126709] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:10:17.431 [DEBUG] [Thread-126709] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:10:17.431 [DEBUG] [Thread-126709] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:10:17.431 [DEBUG] [Thread-126709] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:10:17.431 [DEBUG] [Thread-126709] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:10:17.431 [DEBUG] [Thread-126709] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:10:17.432 [DEBUG] [Thread-126709] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:10:17.432 [DEBUG] [Thread-126709] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:10:17.432 [DEBUG] [Thread-126709] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:10:17.432 [DEBUG] [Thread-126709] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:10:17.432 [DEBUG] [Thread-126709] [transport.py] [_log()] client lang: <none>
2025-11-04T02:10:17.432 [DEBUG] [Thread-126709] [transport.py] [_log()] server lang: <none>
2025-11-04T02:10:17.432 [DEBUG] [Thread-126709] [transport.py] [_log()] kex follows: False
2025-11-04T02:10:17.432 [DEBUG] [Thread-126709] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:10:17.432 [DEBUG] [Thread-126709] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:10:17.432 [DEBUG] [Thread-126709] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:10:17.432 [DEBUG] [Thread-126709] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:10:17.432 [DEBUG] [Thread-126709] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:10:17.432 [DEBUG] [Thread-126709] [transport.py] [_log()] Compression: none
2025-11-04T02:10:17.432 [DEBUG] [Thread-126709] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:10:17.495 [DEBUG] [Thread-126709] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:10:17.496 [DEBUG] [Thread-126709] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:10:17.496 [DEBUG] [Thread-126709] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:10:17.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:10:17.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:10:17.556 [DEBUG] [Thread-126709] [transport.py] [_log()] userauth is OK
2025-11-04T02:10:17.557 [DEBUG] [Thread-126709] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:10:17.557 [DEBUG] [Thread-126709] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:10:17.557 [DEBUG] [Thread-126709] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:10:17.557 [DEBUG] [Thread-126709] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:10:17.581 [INFO] [Thread-126709] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:10:17.582 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:10:17.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:10:18.444 [DEBUG] [Thread-126709] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:10:18.444 [DEBUG] [Thread-126709] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:10:18.491 [DEBUG] [Thread-126709] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:10:18.492 [DEBUG] [Thread-126709] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:10:18.501 [DEBUG] [Thread-126709] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:10:18.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:10:18.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:10:18.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:10:18.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:10:18.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:10:18.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:10:18.544 [DEBUG] [Thread-126709] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:10:26.052 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:10:30.445 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:10:31.523 [DEBUG] [Thread-124687 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:10:31.946 [DEBUG] [Thread-126711 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:10:37.393 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:10:40.289 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:10:40.290 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:10:41.780 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:10:47.087 [DEBUG] [Thread-126712 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:10:48.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:10:48.567 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:10:48.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:10:49.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 10, 43), 27.1, 14.89, 0.0, 20.57, 16.99, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:10:49.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:10:43
2025-11-04T02:10:49.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:10:49.714 [DEBUG] [Thread-126713] [transport.py] [_log()] starting thread (client mode): 0x8199ea0
2025-11-04T02:10:49.715 [DEBUG] [Thread-126713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:10:49.727 [DEBUG] [Thread-126713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:10:49.728 [INFO] [Thread-126713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:10:49.742 [DEBUG] [Thread-126713] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:10:49.742 [DEBUG] [Thread-126713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:10:49.742 [DEBUG] [Thread-126713] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:10:49.742 [DEBUG] [Thread-126713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:10:49.742 [DEBUG] [Thread-126713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:10:49.742 [DEBUG] [Thread-126713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:10:49.743 [DEBUG] [Thread-126713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:10:49.743 [DEBUG] [Thread-126713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:10:49.743 [DEBUG] [Thread-126713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:10:49.743 [DEBUG] [Thread-126713] [transport.py] [_log()] client lang: <none>
2025-11-04T02:10:49.743 [DEBUG] [Thread-126713] [transport.py] [_log()] server lang: <none>
2025-11-04T02:10:49.743 [DEBUG] [Thread-126713] [transport.py] [_log()] kex follows: False
2025-11-04T02:10:49.743 [DEBUG] [Thread-126713] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:10:49.744 [DEBUG] [Thread-126713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:10:49.744 [DEBUG] [Thread-126713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:10:49.745 [DEBUG] [Thread-126713] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:10:49.745 [DEBUG] [Thread-126713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:10:49.745 [DEBUG] [Thread-126713] [transport.py] [_log()] Compression: none
2025-11-04T02:10:49.745 [DEBUG] [Thread-126713] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:10:49.784 [DEBUG] [Thread-126713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:10:49.789 [DEBUG] [Thread-126713] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:10:49.791 [DEBUG] [Thread-126713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:10:49.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:10:49.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:10:49.796 [DEBUG] [Thread-126713] [transport.py] [_log()] userauth is OK
2025-11-04T02:10:49.796 [DEBUG] [Thread-126713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:10:49.796 [DEBUG] [Thread-126713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:10:49.796 [DEBUG] [Thread-126713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:10:49.796 [DEBUG] [Thread-126713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:10:49.835 [INFO] [Thread-126713] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:10:49.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:10:50.480 [DEBUG] [Thread-126713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:10:50.481 [DEBUG] [Thread-126713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:10:50.490 [DEBUG] [Thread-126713] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:10:50.522 [DEBUG] [Thread-126713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:10:50.522 [DEBUG] [Thread-126713] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:10:50.524 [DEBUG] [Thread-126713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:10:50.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:10:50.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:10:50.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:10:50.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:10:50.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:10:50.545 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:10:50.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:10:50.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:10:50.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:10:50.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.007042 -999.00  +16.50  15.86     20   -6.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 16.1 15.9 319.6 20.2 16.9 -23.8 16.9 -22.8 16.6 -22.5 16.9 -23.4
2025-11-04T02:10:50.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:10:50.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:10:50.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.007042
2025-11-04T02:10:50.552 [DEBUG] [Thread-126713] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:10:50.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:10:50.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:10:50.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:10:50.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:10:50.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:10:50.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:10:43', tmtdew=27.1, humidity=14.89, cloud=0.0, wind=20.57, temperature=16.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:10:44', seeing=1.3, atlas_timestamp='2025-11-04T00:10:08.429', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, 0.07125000000000092, 0.056750000000000966, 0.11549999999999905, 0.0495000000000001, 0.12325000000000053, 0.009000000000000341, 0.010750000000001592, 0.07649999999999935, 0.08450000000000024, 0.11325000000000074, 0.07600000000000051, 0.18099999999999916, 0.09425000000000061, -0.04300000000000104, 0.013999999999999346, 0.09024999999999928, 0.028499999999999304, 0.16699999999999982, 0.11524999999999963, 0.15699999999999825, -0.3397500000000022, 0.05525000000000091, 0.03175000000000061, 0.07499999999999929, 0.17199999999999882, 0.08125000000000071, 0.21899999999999942, 0.2759999999999998, -0.1169999999999991, 0.1800000000000015, 0.09450000000000003, 0.13574999999999982], zp_timestamp='2025-11-04T00:09:00')
2025-11-04T02:10:50.641 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:10:50.654 [DEBUG] [Thread-126716] [transport.py] [_log()] starting thread (client mode): 0xed07af0
2025-11-04T02:10:50.654 [DEBUG] [Thread-126716] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:10:50.670 [DEBUG] [Thread-126716] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:10:50.670 [INFO] [Thread-126716] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:10:50.677 [DEBUG] [Thread-126716] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:10:50.678 [DEBUG] [Thread-126716] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:10:50.678 [DEBUG] [Thread-126716] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:10:50.678 [DEBUG] [Thread-126716] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:10:50.678 [DEBUG] [Thread-126716] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:10:50.678 [DEBUG] [Thread-126716] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:10:50.678 [DEBUG] [Thread-126716] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:10:50.678 [DEBUG] [Thread-126716] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:10:50.678 [DEBUG] [Thread-126716] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:10:50.678 [DEBUG] [Thread-126716] [transport.py] [_log()] client lang: <none>
2025-11-04T02:10:50.678 [DEBUG] [Thread-126716] [transport.py] [_log()] server lang: <none>
2025-11-04T02:10:50.678 [DEBUG] [Thread-126716] [transport.py] [_log()] kex follows: False
2025-11-04T02:10:50.678 [DEBUG] [Thread-126716] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:10:50.678 [DEBUG] [Thread-126716] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:10:50.678 [DEBUG] [Thread-126716] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:10:50.678 [DEBUG] [Thread-126716] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:10:50.678 [DEBUG] [Thread-126716] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:10:50.679 [DEBUG] [Thread-126716] [transport.py] [_log()] Compression: none
2025-11-04T02:10:50.679 [DEBUG] [Thread-126716] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:10:50.735 [DEBUG] [Thread-126716] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:10:50.736 [DEBUG] [Thread-126716] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:10:50.737 [DEBUG] [Thread-126716] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:10:50.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:10:50.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:10:50.795 [DEBUG] [Thread-126716] [transport.py] [_log()] userauth is OK
2025-11-04T02:10:50.796 [DEBUG] [Thread-126716] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:10:50.796 [DEBUG] [Thread-126716] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:10:50.796 [DEBUG] [Thread-126716] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:10:50.796 [DEBUG] [Thread-126716] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:10:50.816 [INFO] [Thread-126716] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:10:50.817 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:10:50.817 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:10:51.655 [DEBUG] [Thread-126716] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:10:51.655 [DEBUG] [Thread-126716] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:10:51.705 [DEBUG] [Thread-126716] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:10:51.705 [DEBUG] [Thread-126716] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:10:51.718 [DEBUG] [Thread-126716] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:10:51.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:10:51.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:10:51.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:10:51.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:10:51.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:10:51.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:10:51.767 [DEBUG] [Thread-126716] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:10:56.214 [DEBUG] [Thread-126718 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:11:02.145 [DEBUG] [Thread-126719 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:11:17.233 [DEBUG] [Thread-126720 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:11:21.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:11:21.768 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:11:21.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:11:22.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 11, 16), 27.12, 14.87, 0.0, 20.64, 17.01, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:11:22.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:11:16
2025-11-04T02:11:22.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:11:22.837 [DEBUG] [Thread-126721] [transport.py] [_log()] starting thread (client mode): 0x11798640
2025-11-04T02:11:22.837 [DEBUG] [Thread-126721] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:11:22.854 [DEBUG] [Thread-126721] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:11:22.854 [INFO] [Thread-126721] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:11:22.857 [DEBUG] [Thread-126721] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:11:22.858 [DEBUG] [Thread-126721] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:11:22.858 [DEBUG] [Thread-126721] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:11:22.858 [DEBUG] [Thread-126721] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:11:22.858 [DEBUG] [Thread-126721] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:11:22.858 [DEBUG] [Thread-126721] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:11:22.858 [DEBUG] [Thread-126721] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:11:22.858 [DEBUG] [Thread-126721] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:11:22.858 [DEBUG] [Thread-126721] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:11:22.858 [DEBUG] [Thread-126721] [transport.py] [_log()] client lang: <none>
2025-11-04T02:11:22.858 [DEBUG] [Thread-126721] [transport.py] [_log()] server lang: <none>
2025-11-04T02:11:22.858 [DEBUG] [Thread-126721] [transport.py] [_log()] kex follows: False
2025-11-04T02:11:22.858 [DEBUG] [Thread-126721] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:11:22.858 [DEBUG] [Thread-126721] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:11:22.858 [DEBUG] [Thread-126721] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:11:22.858 [DEBUG] [Thread-126721] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:11:22.858 [DEBUG] [Thread-126721] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:11:22.858 [DEBUG] [Thread-126721] [transport.py] [_log()] Compression: none
2025-11-04T02:11:22.858 [DEBUG] [Thread-126721] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:11:22.878 [DEBUG] [Thread-126721] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:11:22.879 [DEBUG] [Thread-126721] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:11:22.880 [DEBUG] [Thread-126721] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:11:22.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:11:22.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:11:22.884 [DEBUG] [Thread-126721] [transport.py] [_log()] userauth is OK
2025-11-04T02:11:22.884 [DEBUG] [Thread-126721] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:11:22.884 [DEBUG] [Thread-126721] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:11:22.884 [DEBUG] [Thread-126721] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:11:22.884 [DEBUG] [Thread-126721] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:11:22.907 [INFO] [Thread-126721] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:11:22.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:11:23.679 [DEBUG] [Thread-126721] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:11:23.679 [DEBUG] [Thread-126721] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:11:23.688 [DEBUG] [Thread-126721] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:11:23.720 [DEBUG] [Thread-126721] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:11:23.720 [DEBUG] [Thread-126721] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:11:23.725 [DEBUG] [Thread-126721] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:11:23.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:11:23.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:11:23.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:11:23.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:11:23.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:11:23.743 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:11:23.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:11:23.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:11:23.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:11:23.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.007389 -999.00  +16.50  16.23     20   -6.10 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 15.7 16.2 317.0 22.9 16.9 -23.7 16.9 -22.8 16.6 -22.6 16.9 -23.4
2025-11-04T02:11:23.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:11:23.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:11:23.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.007389
2025-11-04T02:11:23.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:11:23.745 [DEBUG] [Thread-126721] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:11:23.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:11:23.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:11:23.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:11:23.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:11:23.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:11:16', tmtdew=27.12, humidity=14.87, cloud=0.0, wind=20.64, temperature=17.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:11:17', seeing=1.3, atlas_timestamp='2025-11-04T00:10:38.410', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, 0.07125000000000092, 0.056750000000000966, 0.11549999999999905, 0.0495000000000001, 0.12325000000000053, 0.009000000000000341, 0.010750000000001592, 0.07649999999999935, 0.08450000000000024, 0.11325000000000074, 0.07600000000000051, 0.18099999999999916, 0.09425000000000061, -0.04300000000000104, 0.013999999999999346, 0.09024999999999928, 0.028499999999999304, 0.16699999999999982, 0.11524999999999963, 0.15699999999999825, -0.3397500000000022, 0.05525000000000091, 0.03175000000000061, 0.07499999999999929, 0.17199999999999882, 0.08125000000000071, 0.21899999999999942, 0.2759999999999998, -0.1169999999999991, 0.1800000000000015, 0.09450000000000003, 0.13574999999999982], zp_timestamp='2025-11-04T00:09:00')
2025-11-04T02:11:23.819 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:11:23.831 [DEBUG] [Thread-126724] [transport.py] [_log()] starting thread (client mode): 0x11798cd0
2025-11-04T02:11:23.831 [DEBUG] [Thread-126724] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:11:23.846 [DEBUG] [Thread-126724] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:11:23.846 [INFO] [Thread-126724] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:11:23.854 [DEBUG] [Thread-126724] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:11:23.855 [DEBUG] [Thread-126724] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:11:23.855 [DEBUG] [Thread-126724] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:11:23.855 [DEBUG] [Thread-126724] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:11:23.855 [DEBUG] [Thread-126724] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:11:23.855 [DEBUG] [Thread-126724] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:11:23.855 [DEBUG] [Thread-126724] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:11:23.855 [DEBUG] [Thread-126724] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:11:23.855 [DEBUG] [Thread-126724] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:11:23.855 [DEBUG] [Thread-126724] [transport.py] [_log()] client lang: <none>
2025-11-04T02:11:23.855 [DEBUG] [Thread-126724] [transport.py] [_log()] server lang: <none>
2025-11-04T02:11:23.855 [DEBUG] [Thread-126724] [transport.py] [_log()] kex follows: False
2025-11-04T02:11:23.855 [DEBUG] [Thread-126724] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:11:23.855 [DEBUG] [Thread-126724] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:11:23.855 [DEBUG] [Thread-126724] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:11:23.855 [DEBUG] [Thread-126724] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:11:23.855 [DEBUG] [Thread-126724] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:11:23.855 [DEBUG] [Thread-126724] [transport.py] [_log()] Compression: none
2025-11-04T02:11:23.856 [DEBUG] [Thread-126724] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:11:23.914 [DEBUG] [Thread-126724] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:11:23.914 [DEBUG] [Thread-126724] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:11:23.915 [DEBUG] [Thread-126724] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:11:23.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:11:23.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:11:23.972 [DEBUG] [Thread-126724] [transport.py] [_log()] userauth is OK
2025-11-04T02:11:23.972 [DEBUG] [Thread-126724] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:11:23.973 [DEBUG] [Thread-126724] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:11:23.973 [DEBUG] [Thread-126724] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:11:23.973 [DEBUG] [Thread-126724] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:11:24.007 [INFO] [Thread-126724] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:11:24.008 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:11:24.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:11:24.857 [DEBUG] [Thread-126724] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:11:24.857 [DEBUG] [Thread-126724] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:11:24.896 [DEBUG] [Thread-126724] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:11:24.896 [DEBUG] [Thread-126724] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:11:24.905 [DEBUG] [Thread-126724] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:11:24.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:11:24.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:11:24.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:11:24.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:11:24.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:11:24.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:11:24.939 [DEBUG] [Thread-126724] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:11:32.278 [DEBUG] [Thread-126726 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:11:40.494 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:11:40.495 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:11:40.977 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:11:44.044 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:11:47.391 [DEBUG] [Thread-126727 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:11:54.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:11:54.971 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:11:54.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:11:55.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 11, 49), 27.07, 14.94, 0.0, 20.47, 17.04, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:11:55.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:11:49
2025-11-04T02:11:55.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:11:56.036 [DEBUG] [Thread-126728] [transport.py] [_log()] starting thread (client mode): 0x8198f10
2025-11-04T02:11:56.037 [DEBUG] [Thread-126728] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:11:56.054 [DEBUG] [Thread-126728] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:11:56.054 [INFO] [Thread-126728] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:11:56.057 [DEBUG] [Thread-126728] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:11:56.057 [DEBUG] [Thread-126728] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:11:56.057 [DEBUG] [Thread-126728] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:11:56.057 [DEBUG] [Thread-126728] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:11:56.057 [DEBUG] [Thread-126728] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:11:56.058 [DEBUG] [Thread-126728] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:11:56.058 [DEBUG] [Thread-126728] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:11:56.058 [DEBUG] [Thread-126728] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:11:56.058 [DEBUG] [Thread-126728] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:11:56.058 [DEBUG] [Thread-126728] [transport.py] [_log()] client lang: <none>
2025-11-04T02:11:56.058 [DEBUG] [Thread-126728] [transport.py] [_log()] server lang: <none>
2025-11-04T02:11:56.058 [DEBUG] [Thread-126728] [transport.py] [_log()] kex follows: False
2025-11-04T02:11:56.058 [DEBUG] [Thread-126728] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:11:56.058 [DEBUG] [Thread-126728] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:11:56.058 [DEBUG] [Thread-126728] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:11:56.058 [DEBUG] [Thread-126728] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:11:56.058 [DEBUG] [Thread-126728] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:11:56.058 [DEBUG] [Thread-126728] [transport.py] [_log()] Compression: none
2025-11-04T02:11:56.058 [DEBUG] [Thread-126728] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:11:56.091 [DEBUG] [Thread-126728] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:11:56.094 [DEBUG] [Thread-126728] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:11:56.096 [DEBUG] [Thread-126728] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:11:56.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:11:56.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:11:56.134 [DEBUG] [Thread-126728] [transport.py] [_log()] userauth is OK
2025-11-04T02:11:56.134 [DEBUG] [Thread-126728] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:11:56.134 [DEBUG] [Thread-126728] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:11:56.134 [DEBUG] [Thread-126728] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:11:56.135 [DEBUG] [Thread-126728] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:11:56.174 [INFO] [Thread-126728] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:11:56.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:11:56.558 [DEBUG] [Thread-126730 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:11:56.821 [DEBUG] [Thread-126728] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:11:56.822 [DEBUG] [Thread-126728] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:11:56.822 [DEBUG] [Thread-126728] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:11:56.863 [DEBUG] [Thread-126728] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:11:56.863 [DEBUG] [Thread-126728] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:11:56.866 [DEBUG] [Thread-126728] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:11:56.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:11:56.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:11:56.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:11:56.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:11:56.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:11:56.895 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:11:56.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:11:56.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:11:56.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:11:56.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.008084 -999.00  +16.50  16.96     20   -6.10 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 15.5 17.0 326.8 19.8 17.0 -23.7 16.9 -22.8 16.6 -22.5 16.9 -23.3
2025-11-04T02:11:56.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:11:56.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:11:56.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.008084
2025-11-04T02:11:56.902 [DEBUG] [Thread-126728] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:11:56.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:11:56.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:11:56.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:11:56.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:11:56.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:11:56.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:11:49', tmtdew=27.07, humidity=14.94, cloud=0.0, wind=20.47, temperature=17.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:11:50', seeing=1.21, atlas_timestamp='2025-11-04T00:11:38.458', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, 0.07125000000000092, 0.056750000000000966, 0.11549999999999905, 0.0495000000000001, 0.12325000000000053, 0.009000000000000341, 0.010750000000001592, 0.07649999999999935, 0.08450000000000024, 0.11325000000000074, 0.07600000000000051, 0.18099999999999916, 0.09425000000000061, -0.04300000000000104, 0.013999999999999346, 0.09024999999999928, 0.028499999999999304, 0.16699999999999982, 0.11524999999999963, 0.15699999999999825, -0.3397500000000022, 0.05525000000000091, 0.03175000000000061, 0.07499999999999929, 0.17199999999999882, 0.08125000000000071, 0.21899999999999942, 0.2759999999999998, -0.1169999999999991, 0.1800000000000015, 0.09450000000000003, 0.13574999999999982], zp_timestamp='2025-11-04T00:09:00')
2025-11-04T02:11:56.992 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:12:02.419 [DEBUG] [Thread-126732 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:12:17.491 [DEBUG] [Thread-126733 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:12:32.529 [DEBUG] [Thread-126734 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:12:40.696 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:12:40.698 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:12:47.564 [DEBUG] [Thread-126735 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:12:56.834 [DEBUG] [Thread-126736 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:13:02.599 [DEBUG] [Thread-126737 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:13:07.686 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:13:12.709 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:13:15.774 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:13:17.630 [DEBUG] [Thread-126738 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:13:22.178 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:13:32.671 [DEBUG] [Thread-126739 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:13:40.909 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:13:40.911 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:13:47.718 [DEBUG] [Thread-126740 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:13:57.104 [DEBUG] [Thread-126741 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:14:02.760 [DEBUG] [Thread-126742 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:14:10.794 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-04T02:14:17.791 [DEBUG] [Thread-126743 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:14:32.822 [DEBUG] [Thread-126744 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:14:40.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:14:40.841 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:14:40.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:14:41.119 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:14:41.120 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:14:41.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 14, 32), 26.97, 14.97, 0.0, 20.71, 16.82, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:14:41.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:14:32
2025-11-04T02:14:41.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:14:41.920 [DEBUG] [Thread-126745] [transport.py] [_log()] starting thread (client mode): 0x1179a9e0
2025-11-04T02:14:41.921 [DEBUG] [Thread-126745] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:14:41.933 [DEBUG] [Thread-126745] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:14:41.933 [INFO] [Thread-126745] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:14:41.939 [DEBUG] [Thread-126745] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:14:41.939 [DEBUG] [Thread-126745] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:14:41.939 [DEBUG] [Thread-126745] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:14:41.939 [DEBUG] [Thread-126745] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:14:41.939 [DEBUG] [Thread-126745] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:14:41.940 [DEBUG] [Thread-126745] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:14:41.940 [DEBUG] [Thread-126745] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:14:41.940 [DEBUG] [Thread-126745] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:14:41.940 [DEBUG] [Thread-126745] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:14:41.940 [DEBUG] [Thread-126745] [transport.py] [_log()] client lang: <none>
2025-11-04T02:14:41.940 [DEBUG] [Thread-126745] [transport.py] [_log()] server lang: <none>
2025-11-04T02:14:41.940 [DEBUG] [Thread-126745] [transport.py] [_log()] kex follows: False
2025-11-04T02:14:41.940 [DEBUG] [Thread-126745] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:14:41.941 [DEBUG] [Thread-126745] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:14:41.941 [DEBUG] [Thread-126745] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:14:41.941 [DEBUG] [Thread-126745] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:14:41.941 [DEBUG] [Thread-126745] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:14:41.942 [DEBUG] [Thread-126745] [transport.py] [_log()] Compression: none
2025-11-04T02:14:41.942 [DEBUG] [Thread-126745] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:14:41.982 [DEBUG] [Thread-126745] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:14:41.987 [DEBUG] [Thread-126745] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:14:41.989 [DEBUG] [Thread-126745] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:14:41.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:14:41.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:14:41.994 [DEBUG] [Thread-126745] [transport.py] [_log()] userauth is OK
2025-11-04T02:14:41.995 [DEBUG] [Thread-126745] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:14:41.995 [DEBUG] [Thread-126745] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:14:41.995 [DEBUG] [Thread-126745] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:14:41.995 [DEBUG] [Thread-126745] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:14:42.021 [INFO] [Thread-126745] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:14:42.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:14:42.654 [DEBUG] [Thread-126745] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:14:42.654 [DEBUG] [Thread-126745] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:14:42.665 [DEBUG] [Thread-126745] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:14:42.695 [DEBUG] [Thread-126745] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:14:42.696 [DEBUG] [Thread-126745] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:14:42.699 [DEBUG] [Thread-126745] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:14:42.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:14:42.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:14:42.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:14:42.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:14:42.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:14:42.726 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:14:42.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:14:42.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:14:42.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:14:42.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.009820 -999.00  +16.40  17.05     20   -6.10 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 17.1 17.1 323.0 17.8 16.9 -23.8 16.9 -22.8 16.6 -22.5 16.9 -23.3
2025-11-04T02:14:42.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:14:42.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:14:42.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.009820
2025-11-04T02:14:42.729 [DEBUG] [Thread-126745] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:14:42.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:14:42.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:14:42.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:14:42.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:14:42.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:14:42.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:14:32', tmtdew=26.97, humidity=14.97, cloud=0.0, wind=20.71, temperature=16.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:14:33', seeing=1.19, atlas_timestamp='2025-11-04T00:14:08.448', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, 0.07125000000000092, 0.056750000000000966, 0.11549999999999905, 0.0495000000000001, 0.12325000000000053, 0.009000000000000341, 0.010750000000001592, 0.07649999999999935, 0.08450000000000024, 0.11325000000000074, 0.07600000000000051, 0.18099999999999916, 0.09425000000000061, -0.04300000000000104, 0.013999999999999346, 0.09024999999999928, 0.028499999999999304, 0.16699999999999982, 0.11524999999999963, 0.15699999999999825, -0.3397500000000022, 0.05525000000000091, 0.03175000000000061, 0.07499999999999929, 0.17199999999999882, 0.08125000000000071, 0.21899999999999942, 0.2759999999999998, -0.1169999999999991, 0.1800000000000015, 0.09450000000000003, 0.13574999999999982], zp_timestamp='2025-11-04T00:09:00')
2025-11-04T02:14:42.839 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:14:42.852 [DEBUG] [Thread-126748] [transport.py] [_log()] starting thread (client mode): 0xed36920
2025-11-04T02:14:42.852 [DEBUG] [Thread-126748] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:14:42.867 [DEBUG] [Thread-126748] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:14:42.867 [INFO] [Thread-126748] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:14:42.874 [DEBUG] [Thread-126748] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:14:42.874 [DEBUG] [Thread-126748] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:14:42.875 [DEBUG] [Thread-126748] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:14:42.875 [DEBUG] [Thread-126748] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:14:42.875 [DEBUG] [Thread-126748] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:14:42.875 [DEBUG] [Thread-126748] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:14:42.875 [DEBUG] [Thread-126748] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:14:42.875 [DEBUG] [Thread-126748] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:14:42.875 [DEBUG] [Thread-126748] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:14:42.875 [DEBUG] [Thread-126748] [transport.py] [_log()] client lang: <none>
2025-11-04T02:14:42.875 [DEBUG] [Thread-126748] [transport.py] [_log()] server lang: <none>
2025-11-04T02:14:42.875 [DEBUG] [Thread-126748] [transport.py] [_log()] kex follows: False
2025-11-04T02:14:42.875 [DEBUG] [Thread-126748] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:14:42.875 [DEBUG] [Thread-126748] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:14:42.875 [DEBUG] [Thread-126748] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:14:42.875 [DEBUG] [Thread-126748] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:14:42.875 [DEBUG] [Thread-126748] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:14:42.875 [DEBUG] [Thread-126748] [transport.py] [_log()] Compression: none
2025-11-04T02:14:42.875 [DEBUG] [Thread-126748] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:14:42.932 [DEBUG] [Thread-126748] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:14:42.932 [DEBUG] [Thread-126748] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:14:42.932 [DEBUG] [Thread-126748] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:14:42.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:14:42.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:14:42.990 [DEBUG] [Thread-126748] [transport.py] [_log()] userauth is OK
2025-11-04T02:14:42.990 [DEBUG] [Thread-126748] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:14:42.990 [DEBUG] [Thread-126748] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:14:42.990 [DEBUG] [Thread-126748] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:14:42.990 [DEBUG] [Thread-126748] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:14:43.004 [INFO] [Thread-126748] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:14:43.004 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:14:43.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:14:43.827 [DEBUG] [Thread-126748] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:14:43.828 [DEBUG] [Thread-126748] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:14:43.876 [DEBUG] [Thread-126748] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:14:43.876 [DEBUG] [Thread-126748] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:14:43.886 [DEBUG] [Thread-126748] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:14:43.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:14:43.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:14:43.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:14:43.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:14:43.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:14:43.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:14:43.929 [DEBUG] [Thread-126748] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:14:47.850 [DEBUG] [Thread-126750 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:14:55.507 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:14:57.375 [DEBUG] [Thread-126751 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:14:58.662 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:15:02.975 [DEBUG] [Thread-126752 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:15:03.694 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:15:09.089 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:15:13.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:15:13.957 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:15:13.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:15:14.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 15, 5), 26.97, 14.97, 0.0, 20.64, 16.84, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:15:14.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:15:05
2025-11-04T02:15:14.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:15:15.092 [DEBUG] [Thread-126753] [transport.py] [_log()] starting thread (client mode): 0xed36710
2025-11-04T02:15:15.101 [DEBUG] [Thread-126753] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:15:15.104 [DEBUG] [Thread-126753] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:15:15.104 [INFO] [Thread-126753] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:15:15.108 [DEBUG] [Thread-126753] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:15:15.108 [DEBUG] [Thread-126753] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:15:15.108 [DEBUG] [Thread-126753] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:15:15.108 [DEBUG] [Thread-126753] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:15:15.108 [DEBUG] [Thread-126753] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:15:15.108 [DEBUG] [Thread-126753] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:15:15.108 [DEBUG] [Thread-126753] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:15:15.108 [DEBUG] [Thread-126753] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:15:15.108 [DEBUG] [Thread-126753] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:15:15.108 [DEBUG] [Thread-126753] [transport.py] [_log()] client lang: <none>
2025-11-04T02:15:15.108 [DEBUG] [Thread-126753] [transport.py] [_log()] server lang: <none>
2025-11-04T02:15:15.108 [DEBUG] [Thread-126753] [transport.py] [_log()] kex follows: False
2025-11-04T02:15:15.108 [DEBUG] [Thread-126753] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:15:15.109 [DEBUG] [Thread-126753] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:15:15.109 [DEBUG] [Thread-126753] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:15:15.109 [DEBUG] [Thread-126753] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:15:15.109 [DEBUG] [Thread-126753] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:15:15.109 [DEBUG] [Thread-126753] [transport.py] [_log()] Compression: none
2025-11-04T02:15:15.109 [DEBUG] [Thread-126753] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:15:15.139 [DEBUG] [Thread-126753] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:15:15.142 [DEBUG] [Thread-126753] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:15:15.143 [DEBUG] [Thread-126753] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:15:15.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:15:15.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:15:15.146 [DEBUG] [Thread-126753] [transport.py] [_log()] userauth is OK
2025-11-04T02:15:15.146 [DEBUG] [Thread-126753] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:15:15.146 [DEBUG] [Thread-126753] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:15:15.146 [DEBUG] [Thread-126753] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:15:15.146 [DEBUG] [Thread-126753] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:15:15.166 [INFO] [Thread-126753] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:15:15.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:15:15.889 [DEBUG] [Thread-126753] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:15:15.889 [DEBUG] [Thread-126753] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:15:15.890 [DEBUG] [Thread-126753] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:15:15.931 [DEBUG] [Thread-126753] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:15:15.931 [DEBUG] [Thread-126753] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:15:15.933 [DEBUG] [Thread-126753] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:15:16.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:15:16.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:15:16.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:15:16.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:15:16.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:15:16.035 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:15:16.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:15:16.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:15:16.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:15:16.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.010514 -999.00  +16.40  15.65     20   -6.20 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 15.1 15.7 317.2 19.1 16.9 -23.9 16.8 -23.0 16.6 -22.4 16.8 -23.6
2025-11-04T02:15:16.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:15:16.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:15:16.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.010514
2025-11-04T02:15:16.043 [DEBUG] [Thread-126753] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:15:16.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:15:16.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:15:16.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:15:16.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:15:16.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:15:16.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:15:05', tmtdew=26.97, humidity=14.97, cloud=0.0, wind=20.64, temperature=16.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:15:05', seeing=1.19, atlas_timestamp='2025-11-04T00:15:08.410', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, 0.07125000000000092, 0.056750000000000966, 0.11549999999999905, 0.0495000000000001, 0.12325000000000053, 0.009000000000000341, 0.010750000000001592, 0.07649999999999935, 0.08450000000000024, 0.11325000000000074, 0.07600000000000051, 0.18099999999999916, 0.09425000000000061, -0.04300000000000104, 0.013999999999999346, 0.09024999999999928, 0.028499999999999304, 0.16699999999999982, 0.11524999999999963, 0.15699999999999825, -0.3397500000000022, 0.05525000000000091, 0.03175000000000061, 0.07499999999999929, 0.17199999999999882, 0.08125000000000071, 0.21899999999999942, 0.2759999999999998, -0.1169999999999991, 0.1800000000000015, 0.09450000000000003, 0.13574999999999982], zp_timestamp='2025-11-04T00:09:00')
2025-11-04T02:15:16.135 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:15:16.149 [DEBUG] [Thread-126756] [transport.py] [_log()] starting thread (client mode): 0xed05870
2025-11-04T02:15:16.149 [DEBUG] [Thread-126756] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:15:16.166 [DEBUG] [Thread-126756] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:15:16.167 [INFO] [Thread-126756] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:15:16.177 [DEBUG] [Thread-126756] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:15:16.177 [DEBUG] [Thread-126756] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:15:16.177 [DEBUG] [Thread-126756] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:15:16.177 [DEBUG] [Thread-126756] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:15:16.177 [DEBUG] [Thread-126756] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:15:16.177 [DEBUG] [Thread-126756] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:15:16.177 [DEBUG] [Thread-126756] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:15:16.177 [DEBUG] [Thread-126756] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:15:16.177 [DEBUG] [Thread-126756] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:15:16.177 [DEBUG] [Thread-126756] [transport.py] [_log()] client lang: <none>
2025-11-04T02:15:16.177 [DEBUG] [Thread-126756] [transport.py] [_log()] server lang: <none>
2025-11-04T02:15:16.177 [DEBUG] [Thread-126756] [transport.py] [_log()] kex follows: False
2025-11-04T02:15:16.177 [DEBUG] [Thread-126756] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:15:16.177 [DEBUG] [Thread-126756] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:15:16.177 [DEBUG] [Thread-126756] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:15:16.177 [DEBUG] [Thread-126756] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:15:16.177 [DEBUG] [Thread-126756] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:15:16.177 [DEBUG] [Thread-126756] [transport.py] [_log()] Compression: none
2025-11-04T02:15:16.177 [DEBUG] [Thread-126756] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:15:16.246 [DEBUG] [Thread-126756] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:15:16.246 [DEBUG] [Thread-126756] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:15:16.247 [DEBUG] [Thread-126756] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:15:16.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:15:16.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:15:16.310 [DEBUG] [Thread-126756] [transport.py] [_log()] userauth is OK
2025-11-04T02:15:16.310 [DEBUG] [Thread-126756] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:15:16.310 [DEBUG] [Thread-126756] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:15:16.310 [DEBUG] [Thread-126756] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:15:16.310 [DEBUG] [Thread-126756] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:15:16.328 [INFO] [Thread-126756] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:15:16.329 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:15:16.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:15:17.188 [DEBUG] [Thread-126756] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:15:17.188 [DEBUG] [Thread-126756] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:15:17.236 [DEBUG] [Thread-126756] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:15:17.236 [DEBUG] [Thread-126756] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:15:17.245 [DEBUG] [Thread-126756] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:15:17.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:15:17.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:15:17.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:15:17.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:15:17.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:15:17.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:15:17.281 [DEBUG] [Thread-126756] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:15:18.029 [DEBUG] [Thread-126758 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:15:28.449 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:15:32.849 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:15:33.141 [DEBUG] [Thread-126759 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:15:41.332 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:15:41.334 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:15:47.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:15:47.303 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:15:47.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:15:48.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 15, 37), 27.06, 14.42, 0.0, 20.84, 16.84, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:15:48.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:15:37
2025-11-04T02:15:48.180 [DEBUG] [Thread-126760 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:15:48.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:15:48.435 [DEBUG] [Thread-126761] [transport.py] [_log()] starting thread (client mode): 0x8199600
2025-11-04T02:15:48.435 [DEBUG] [Thread-126761] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:15:48.447 [DEBUG] [Thread-126761] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:15:48.447 [INFO] [Thread-126761] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:15:48.451 [DEBUG] [Thread-126761] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:15:48.451 [DEBUG] [Thread-126761] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:15:48.451 [DEBUG] [Thread-126761] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:15:48.451 [DEBUG] [Thread-126761] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:15:48.451 [DEBUG] [Thread-126761] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:15:48.451 [DEBUG] [Thread-126761] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:15:48.451 [DEBUG] [Thread-126761] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:15:48.451 [DEBUG] [Thread-126761] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:15:48.451 [DEBUG] [Thread-126761] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:15:48.451 [DEBUG] [Thread-126761] [transport.py] [_log()] client lang: <none>
2025-11-04T02:15:48.451 [DEBUG] [Thread-126761] [transport.py] [_log()] server lang: <none>
2025-11-04T02:15:48.451 [DEBUG] [Thread-126761] [transport.py] [_log()] kex follows: False
2025-11-04T02:15:48.451 [DEBUG] [Thread-126761] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:15:48.452 [DEBUG] [Thread-126761] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:15:48.452 [DEBUG] [Thread-126761] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:15:48.452 [DEBUG] [Thread-126761] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:15:48.452 [DEBUG] [Thread-126761] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:15:48.452 [DEBUG] [Thread-126761] [transport.py] [_log()] Compression: none
2025-11-04T02:15:48.452 [DEBUG] [Thread-126761] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:15:48.484 [DEBUG] [Thread-126761] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:15:48.486 [DEBUG] [Thread-126761] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:15:48.486 [DEBUG] [Thread-126761] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:15:48.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:15:48.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:15:48.489 [DEBUG] [Thread-126761] [transport.py] [_log()] userauth is OK
2025-11-04T02:15:48.489 [DEBUG] [Thread-126761] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:15:48.489 [DEBUG] [Thread-126761] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:15:48.489 [DEBUG] [Thread-126761] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:15:48.489 [DEBUG] [Thread-126761] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:15:48.507 [INFO] [Thread-126761] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:15:48.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:15:49.112 [DEBUG] [Thread-126761] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:15:49.113 [DEBUG] [Thread-126761] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:15:49.113 [DEBUG] [Thread-126761] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:15:49.154 [DEBUG] [Thread-126761] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:15:49.154 [DEBUG] [Thread-126761] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:15:49.156 [DEBUG] [Thread-126761] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:15:49.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:15:49.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:15:49.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:15:49.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:15:49.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:15:49.177 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:15:49.177 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:15:49.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:15:49.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:15:49.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.010514 -999.00  +16.40  15.65     20   -6.20 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 15.1 15.7 317.2 19.1 16.9 -23.9 16.8 -23.0 16.6 -22.4 16.8 -23.6
2025-11-04T02:15:49.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:15:49.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:15:49.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.010514
2025-11-04T02:15:49.190 [DEBUG] [Thread-126761] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:15:49.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:15:49.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:15:49.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:15:49.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:15:49.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:15:49.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:15:37', tmtdew=27.06, humidity=14.42, cloud=0.0, wind=20.84, temperature=16.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:15:38', seeing=1.14, atlas_timestamp='2025-11-04T00:15:08.410', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, 0.07125000000000092, 0.056750000000000966, 0.11549999999999905, 0.0495000000000001, 0.12325000000000053, 0.009000000000000341, 0.010750000000001592, 0.07649999999999935, 0.08450000000000024, 0.11325000000000074, 0.07600000000000051, 0.18099999999999916, 0.09425000000000061, -0.04300000000000104, 0.013999999999999346, 0.09024999999999928, 0.028499999999999304, 0.16699999999999982, 0.11524999999999963, 0.15699999999999825, -0.3397500000000022, 0.05525000000000091, 0.03175000000000061, 0.07499999999999929, 0.17199999999999882, 0.08125000000000071, 0.21899999999999942, 0.2759999999999998, -0.1169999999999991, 0.1800000000000015, 0.09450000000000003, 0.13574999999999982], zp_timestamp='2025-11-04T00:09:00')
2025-11-04T02:15:49.274 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:15:49.288 [DEBUG] [Thread-126764] [transport.py] [_log()] starting thread (client mode): 0x1179b880
2025-11-04T02:15:49.288 [DEBUG] [Thread-126764] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:15:49.306 [DEBUG] [Thread-126764] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:15:49.307 [INFO] [Thread-126764] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:15:49.316 [DEBUG] [Thread-126764] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:15:49.316 [DEBUG] [Thread-126764] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:15:49.316 [DEBUG] [Thread-126764] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:15:49.316 [DEBUG] [Thread-126764] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:15:49.316 [DEBUG] [Thread-126764] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:15:49.316 [DEBUG] [Thread-126764] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:15:49.316 [DEBUG] [Thread-126764] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:15:49.316 [DEBUG] [Thread-126764] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:15:49.316 [DEBUG] [Thread-126764] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:15:49.316 [DEBUG] [Thread-126764] [transport.py] [_log()] client lang: <none>
2025-11-04T02:15:49.316 [DEBUG] [Thread-126764] [transport.py] [_log()] server lang: <none>
2025-11-04T02:15:49.316 [DEBUG] [Thread-126764] [transport.py] [_log()] kex follows: False
2025-11-04T02:15:49.316 [DEBUG] [Thread-126764] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:15:49.316 [DEBUG] [Thread-126764] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:15:49.316 [DEBUG] [Thread-126764] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:15:49.316 [DEBUG] [Thread-126764] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:15:49.316 [DEBUG] [Thread-126764] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:15:49.316 [DEBUG] [Thread-126764] [transport.py] [_log()] Compression: none
2025-11-04T02:15:49.316 [DEBUG] [Thread-126764] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:15:49.372 [DEBUG] [Thread-126764] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:15:49.372 [DEBUG] [Thread-126764] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:15:49.372 [DEBUG] [Thread-126764] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:15:49.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:15:49.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:15:49.430 [DEBUG] [Thread-126764] [transport.py] [_log()] userauth is OK
2025-11-04T02:15:49.430 [DEBUG] [Thread-126764] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:15:49.430 [DEBUG] [Thread-126764] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:15:49.430 [DEBUG] [Thread-126764] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:15:49.430 [DEBUG] [Thread-126764] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:15:49.443 [INFO] [Thread-126764] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:15:49.444 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:15:49.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:15:50.277 [DEBUG] [Thread-126764] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:15:50.277 [DEBUG] [Thread-126764] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:15:50.326 [DEBUG] [Thread-126764] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:15:50.326 [DEBUG] [Thread-126764] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:15:50.335 [DEBUG] [Thread-126764] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:15:50.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:15:50.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:15:50.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:15:50.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:15:50.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:15:50.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:15:50.368 [DEBUG] [Thread-126764] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:15:52.224 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:15:56.612 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:15:57.710 [DEBUG] [Thread-126766 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:16:03.230 [DEBUG] [Thread-126767 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:16:03.564 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:16:07.946 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:16:18.357 [DEBUG] [Thread-126768 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:16:20.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:16:20.384 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:16:20.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:16:21.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 16, 10), 27.06, 14.42, 0.0, 20.41, 16.84, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:16:21.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:16:10
2025-11-04T02:16:21.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:16:21.558 [DEBUG] [Thread-126769] [transport.py] [_log()] starting thread (client mode): 0xed04190
2025-11-04T02:16:21.559 [DEBUG] [Thread-126769] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:16:21.572 [DEBUG] [Thread-126769] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:16:21.572 [INFO] [Thread-126769] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:16:21.576 [DEBUG] [Thread-126769] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:16:21.576 [DEBUG] [Thread-126769] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:16:21.576 [DEBUG] [Thread-126769] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:16:21.576 [DEBUG] [Thread-126769] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:16:21.576 [DEBUG] [Thread-126769] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:16:21.576 [DEBUG] [Thread-126769] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:16:21.576 [DEBUG] [Thread-126769] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:16:21.576 [DEBUG] [Thread-126769] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:16:21.576 [DEBUG] [Thread-126769] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:16:21.576 [DEBUG] [Thread-126769] [transport.py] [_log()] client lang: <none>
2025-11-04T02:16:21.576 [DEBUG] [Thread-126769] [transport.py] [_log()] server lang: <none>
2025-11-04T02:16:21.577 [DEBUG] [Thread-126769] [transport.py] [_log()] kex follows: False
2025-11-04T02:16:21.577 [DEBUG] [Thread-126769] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:16:21.577 [DEBUG] [Thread-126769] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:16:21.577 [DEBUG] [Thread-126769] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:16:21.577 [DEBUG] [Thread-126769] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:16:21.577 [DEBUG] [Thread-126769] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:16:21.577 [DEBUG] [Thread-126769] [transport.py] [_log()] Compression: none
2025-11-04T02:16:21.578 [DEBUG] [Thread-126769] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:16:21.613 [DEBUG] [Thread-126769] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:16:21.617 [DEBUG] [Thread-126769] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:16:21.619 [DEBUG] [Thread-126769] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:16:21.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:16:21.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:16:21.624 [DEBUG] [Thread-126769] [transport.py] [_log()] userauth is OK
2025-11-04T02:16:21.625 [DEBUG] [Thread-126769] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:16:21.625 [DEBUG] [Thread-126769] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:16:21.625 [DEBUG] [Thread-126769] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:16:21.625 [DEBUG] [Thread-126769] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:16:21.653 [INFO] [Thread-126769] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:16:21.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:16:22.382 [DEBUG] [Thread-126769] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:16:22.382 [DEBUG] [Thread-126769] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:16:22.384 [DEBUG] [Thread-126769] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:16:22.423 [DEBUG] [Thread-126769] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:16:22.423 [DEBUG] [Thread-126769] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:16:22.427 [DEBUG] [Thread-126769] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:16:22.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:16:22.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:16:22.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:16:22.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:16:22.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:16:22.452 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:16:22.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:16:22.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:16:22.454 [DEBUG] [Thread-126769] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:16:22.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:16:22.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.010861 -999.00  +16.30  14.70     20   -6.20 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 17.4 14.7 328.8 19.2 16.9 -23.8 16.8 -23.0 16.6 -22.5 16.9 -23.6
2025-11-04T02:16:22.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:16:22.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:16:22.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.010861
2025-11-04T02:16:22.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:16:22.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:16:22.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:16:22.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:16:22.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:16:22.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:16:10', tmtdew=27.06, humidity=14.42, cloud=0.0, wind=20.41, temperature=16.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:16:11', seeing=1.17, atlas_timestamp='2025-11-04T00:15:38.390', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, 0.07125000000000092, 0.056750000000000966, 0.11549999999999905, 0.0495000000000001, 0.12325000000000053, 0.009000000000000341, 0.010750000000001592, 0.07649999999999935, 0.08450000000000024, 0.11325000000000074, 0.07600000000000051, 0.18099999999999916, 0.09425000000000061, -0.04300000000000104, 0.013999999999999346, 0.09024999999999928, 0.028499999999999304, 0.16699999999999982, 0.11524999999999963, 0.15699999999999825, -0.3397500000000022, 0.05525000000000091, 0.03175000000000061, 0.07499999999999929, 0.17199999999999882, 0.08125000000000071, 0.21899999999999942, 0.2759999999999998, -0.1169999999999991, 0.1800000000000015, 0.09450000000000003, 0.13574999999999982], zp_timestamp='2025-11-04T00:09:00')
2025-11-04T02:16:22.567 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:16:22.579 [DEBUG] [Thread-126772] [transport.py] [_log()] starting thread (client mode): 0xed06e00
2025-11-04T02:16:22.579 [DEBUG] [Thread-126772] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:16:22.595 [DEBUG] [Thread-126772] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:16:22.595 [INFO] [Thread-126772] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:16:22.604 [DEBUG] [Thread-126772] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:16:22.604 [DEBUG] [Thread-126772] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:16:22.604 [DEBUG] [Thread-126772] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:16:22.604 [DEBUG] [Thread-126772] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:16:22.604 [DEBUG] [Thread-126772] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:16:22.605 [DEBUG] [Thread-126772] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:16:22.605 [DEBUG] [Thread-126772] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:16:22.605 [DEBUG] [Thread-126772] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:16:22.605 [DEBUG] [Thread-126772] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:16:22.605 [DEBUG] [Thread-126772] [transport.py] [_log()] client lang: <none>
2025-11-04T02:16:22.605 [DEBUG] [Thread-126772] [transport.py] [_log()] server lang: <none>
2025-11-04T02:16:22.605 [DEBUG] [Thread-126772] [transport.py] [_log()] kex follows: False
2025-11-04T02:16:22.605 [DEBUG] [Thread-126772] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:16:22.605 [DEBUG] [Thread-126772] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:16:22.605 [DEBUG] [Thread-126772] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:16:22.605 [DEBUG] [Thread-126772] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:16:22.605 [DEBUG] [Thread-126772] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:16:22.605 [DEBUG] [Thread-126772] [transport.py] [_log()] Compression: none
2025-11-04T02:16:22.605 [DEBUG] [Thread-126772] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:16:22.663 [DEBUG] [Thread-126772] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:16:22.663 [DEBUG] [Thread-126772] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:16:22.664 [DEBUG] [Thread-126772] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:16:22.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:16:22.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:16:22.721 [DEBUG] [Thread-126772] [transport.py] [_log()] userauth is OK
2025-11-04T02:16:22.722 [DEBUG] [Thread-126772] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:16:22.722 [DEBUG] [Thread-126772] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:16:22.722 [DEBUG] [Thread-126772] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:16:22.722 [DEBUG] [Thread-126772] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:16:22.740 [INFO] [Thread-126772] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:16:22.741 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:16:22.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:16:23.575 [DEBUG] [Thread-126772] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:16:23.576 [DEBUG] [Thread-126772] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:16:23.625 [DEBUG] [Thread-126772] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:16:23.625 [DEBUG] [Thread-126772] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:16:23.634 [DEBUG] [Thread-126772] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:16:23.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:16:23.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:16:23.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:16:23.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:16:23.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:16:23.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:16:23.684 [DEBUG] [Thread-126772] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:16:33.403 [DEBUG] [Thread-126774 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:16:41.556 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:16:41.558 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:16:48.467 [DEBUG] [Thread-126775 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:16:53.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:16:53.707 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:16:53.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:16:54.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 16, 43), 27.03, 14.46, 0.0, 22.39, 16.79, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:16:54.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:16:43
2025-11-04T02:16:54.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:16:54.813 [DEBUG] [Thread-126776] [transport.py] [_log()] starting thread (client mode): 0xed06920
2025-11-04T02:16:54.813 [DEBUG] [Thread-126776] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:16:54.829 [DEBUG] [Thread-126776] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:16:54.829 [INFO] [Thread-126776] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:16:54.832 [DEBUG] [Thread-126776] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:16:54.832 [DEBUG] [Thread-126776] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:16:54.832 [DEBUG] [Thread-126776] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:16:54.832 [DEBUG] [Thread-126776] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:16:54.832 [DEBUG] [Thread-126776] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:16:54.832 [DEBUG] [Thread-126776] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:16:54.832 [DEBUG] [Thread-126776] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:16:54.832 [DEBUG] [Thread-126776] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:16:54.832 [DEBUG] [Thread-126776] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:16:54.832 [DEBUG] [Thread-126776] [transport.py] [_log()] client lang: <none>
2025-11-04T02:16:54.832 [DEBUG] [Thread-126776] [transport.py] [_log()] server lang: <none>
2025-11-04T02:16:54.832 [DEBUG] [Thread-126776] [transport.py] [_log()] kex follows: False
2025-11-04T02:16:54.832 [DEBUG] [Thread-126776] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:16:54.833 [DEBUG] [Thread-126776] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:16:54.833 [DEBUG] [Thread-126776] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:16:54.833 [DEBUG] [Thread-126776] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:16:54.833 [DEBUG] [Thread-126776] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:16:54.833 [DEBUG] [Thread-126776] [transport.py] [_log()] Compression: none
2025-11-04T02:16:54.833 [DEBUG] [Thread-126776] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:16:54.857 [DEBUG] [Thread-126776] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:16:54.859 [DEBUG] [Thread-126776] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:16:54.861 [DEBUG] [Thread-126776] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:16:54.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:16:54.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:16:54.864 [DEBUG] [Thread-126776] [transport.py] [_log()] userauth is OK
2025-11-04T02:16:54.864 [DEBUG] [Thread-126776] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:16:54.865 [DEBUG] [Thread-126776] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:16:54.865 [DEBUG] [Thread-126776] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:16:54.865 [DEBUG] [Thread-126776] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:16:54.900 [INFO] [Thread-126776] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:16:54.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:16:55.536 [DEBUG] [Thread-126776] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:16:55.536 [DEBUG] [Thread-126776] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:16:55.537 [DEBUG] [Thread-126776] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:16:55.577 [DEBUG] [Thread-126776] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:16:55.578 [DEBUG] [Thread-126776] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:16:55.581 [DEBUG] [Thread-126776] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:16:55.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:16:55.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:16:55.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:16:55.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:16:55.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:16:55.609 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:16:55.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:16:55.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:16:55.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:16:55.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.011209 -999.00  +16.30  14.30     20   -6.20 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 15.1 14.3 317.2 18.7 16.9 -23.8 16.8 -22.9 16.6 -22.5 16.8 -23.5
2025-11-04T02:16:55.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:16:55.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:16:55.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.011209
2025-11-04T02:16:55.617 [DEBUG] [Thread-126776] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:16:55.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:16:55.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:16:55.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:16:55.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:16:55.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:16:55.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:16:43', tmtdew=27.03, humidity=14.46, cloud=0.0, wind=22.39, temperature=16.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:16:44', seeing=1.17, atlas_timestamp='2025-11-04T00:16:08.458', atlas_cloud=1, atlas_rain=1, zp_data=[0.02674999999999983, 0.10975000000000179, 0.12124999999999986, 0.1144999999999996, 0.09950000000000081, 0.08525000000000027, 0.006999999999999673, 0.02725000000000044, 0.0730000000000004, 0.08300000000000018, 0.13724999999999987, 0.12650000000000006, 0.17199999999999882, 0.036249999999999005, 0.0019999999999988916, 0.0030000000000001137, 0.09474999999999945, 0.08349999999999902, 0.17049999999999876, 0.1347499999999986, 0.20999999999999908, -0.2112500000000015, 0.047750000000000625, 0.06274999999999942, 0.08999999999999986, 0.2320000000000011, 0.1437500000000007, 0.19599999999999973, 0.23599999999999977, -0.7624999999999993, 0.1479999999999997, 0.08700000000000152, 0.13625000000000043], zp_timestamp='2025-11-04T00:14:00')
2025-11-04T02:16:55.707 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:16:55.718 [DEBUG] [Thread-126779] [transport.py] [_log()] starting thread (client mode): 0x8199150
2025-11-04T02:16:55.718 [DEBUG] [Thread-126779] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:16:55.733 [DEBUG] [Thread-126779] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:16:55.733 [INFO] [Thread-126779] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:16:55.741 [DEBUG] [Thread-126779] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:16:55.741 [DEBUG] [Thread-126779] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:16:55.741 [DEBUG] [Thread-126779] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:16:55.742 [DEBUG] [Thread-126779] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:16:55.742 [DEBUG] [Thread-126779] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:16:55.742 [DEBUG] [Thread-126779] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:16:55.742 [DEBUG] [Thread-126779] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:16:55.742 [DEBUG] [Thread-126779] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:16:55.742 [DEBUG] [Thread-126779] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:16:55.742 [DEBUG] [Thread-126779] [transport.py] [_log()] client lang: <none>
2025-11-04T02:16:55.742 [DEBUG] [Thread-126779] [transport.py] [_log()] server lang: <none>
2025-11-04T02:16:55.742 [DEBUG] [Thread-126779] [transport.py] [_log()] kex follows: False
2025-11-04T02:16:55.742 [DEBUG] [Thread-126779] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:16:55.742 [DEBUG] [Thread-126779] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:16:55.742 [DEBUG] [Thread-126779] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:16:55.743 [DEBUG] [Thread-126779] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:16:55.743 [DEBUG] [Thread-126779] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:16:55.743 [DEBUG] [Thread-126779] [transport.py] [_log()] Compression: none
2025-11-04T02:16:55.743 [DEBUG] [Thread-126779] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:16:55.801 [DEBUG] [Thread-126779] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:16:55.801 [DEBUG] [Thread-126779] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:16:55.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:16:55.803 [DEBUG] [Thread-126779] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:16:55.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:16:55.857 [DEBUG] [Thread-126779] [transport.py] [_log()] userauth is OK
2025-11-04T02:16:55.857 [DEBUG] [Thread-126779] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:16:55.857 [DEBUG] [Thread-126779] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:16:55.857 [DEBUG] [Thread-126779] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:16:55.857 [DEBUG] [Thread-126779] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:16:55.873 [INFO] [Thread-126779] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:16:55.873 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:16:55.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:16:56.712 [DEBUG] [Thread-126779] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:16:56.712 [DEBUG] [Thread-126779] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:16:56.763 [DEBUG] [Thread-126779] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:16:56.764 [DEBUG] [Thread-126779] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:16:56.777 [DEBUG] [Thread-126779] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:16:56.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:16:56.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:16:56.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:16:56.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:16:56.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:16:56.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:16:56.821 [DEBUG] [Thread-126779] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:16:57.971 [DEBUG] [Thread-126781 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:17:03.498 [DEBUG] [Thread-126782 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:17:07.637 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:17:10.683 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:17:18.579 [DEBUG] [Thread-126783 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:17:26.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:17:26.860 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:17:26.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:17:27.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 17, 16), 27.02, 14.46, 0.0, 22.16, 16.74, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:17:27.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:17:16
2025-11-04T02:17:27.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:17:28.154 [DEBUG] [Thread-126784] [transport.py] [_log()] starting thread (client mode): 0xed359c0
2025-11-04T02:17:28.155 [DEBUG] [Thread-126784] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:17:28.166 [DEBUG] [Thread-126784] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:17:28.167 [INFO] [Thread-126784] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:17:28.172 [DEBUG] [Thread-126784] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:17:28.172 [DEBUG] [Thread-126784] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:17:28.172 [DEBUG] [Thread-126784] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:17:28.172 [DEBUG] [Thread-126784] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:17:28.173 [DEBUG] [Thread-126784] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:17:28.173 [DEBUG] [Thread-126784] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:17:28.173 [DEBUG] [Thread-126784] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:17:28.173 [DEBUG] [Thread-126784] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:17:28.173 [DEBUG] [Thread-126784] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:17:28.173 [DEBUG] [Thread-126784] [transport.py] [_log()] client lang: <none>
2025-11-04T02:17:28.173 [DEBUG] [Thread-126784] [transport.py] [_log()] server lang: <none>
2025-11-04T02:17:28.173 [DEBUG] [Thread-126784] [transport.py] [_log()] kex follows: False
2025-11-04T02:17:28.173 [DEBUG] [Thread-126784] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:17:28.174 [DEBUG] [Thread-126784] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:17:28.174 [DEBUG] [Thread-126784] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:17:28.174 [DEBUG] [Thread-126784] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:17:28.174 [DEBUG] [Thread-126784] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:17:28.174 [DEBUG] [Thread-126784] [transport.py] [_log()] Compression: none
2025-11-04T02:17:28.174 [DEBUG] [Thread-126784] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:17:28.215 [DEBUG] [Thread-126784] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:17:28.220 [DEBUG] [Thread-126784] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:17:28.223 [DEBUG] [Thread-126784] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:17:28.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:17:28.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:17:28.229 [DEBUG] [Thread-126784] [transport.py] [_log()] userauth is OK
2025-11-04T02:17:28.230 [DEBUG] [Thread-126784] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:17:28.230 [DEBUG] [Thread-126784] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:17:28.230 [DEBUG] [Thread-126784] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:17:28.230 [DEBUG] [Thread-126784] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:17:28.257 [INFO] [Thread-126784] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:17:28.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:17:28.863 [DEBUG] [Thread-126784] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:17:28.863 [DEBUG] [Thread-126784] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:17:28.864 [DEBUG] [Thread-126784] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:17:28.905 [DEBUG] [Thread-126784] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:17:28.905 [DEBUG] [Thread-126784] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:17:28.909 [DEBUG] [Thread-126784] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:17:28.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:17:28.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:17:28.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:17:28.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:17:28.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:17:28.932 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:17:28.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:17:28.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:17:28.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:17:28.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.011556 -999.00  +16.30  16.03     20   -6.20 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 18.3 16.0 319.8 19.1 16.9 -23.9 16.8 -23.0 16.6 -22.6 16.8 -23.4
2025-11-04T02:17:28.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:17:28.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:17:28.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.011556
2025-11-04T02:17:28.945 [DEBUG] [Thread-126784] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:17:28.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:17:28.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:17:28.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:17:28.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:17:28.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:17:28.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:17:16', tmtdew=27.02, humidity=14.46, cloud=0.0, wind=22.16, temperature=16.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:17:16', seeing=1.03, atlas_timestamp='2025-11-04T00:16:38.438', atlas_cloud=1, atlas_rain=1, zp_data=[0.02674999999999983, 0.10975000000000179, 0.12124999999999986, 0.1144999999999996, 0.09950000000000081, 0.08525000000000027, 0.006999999999999673, 0.02725000000000044, 0.0730000000000004, 0.08300000000000018, 0.13724999999999987, 0.12650000000000006, 0.17199999999999882, 0.036249999999999005, 0.0019999999999988916, 0.0030000000000001137, 0.09474999999999945, 0.08349999999999902, 0.17049999999999876, 0.1347499999999986, 0.20999999999999908, -0.2112500000000015, 0.047750000000000625, 0.06274999999999942, 0.08999999999999986, 0.2320000000000011, 0.1437500000000007, 0.19599999999999973, 0.23599999999999977, -0.7624999999999993, 0.1479999999999997, 0.08700000000000152, 0.13625000000000043], zp_timestamp='2025-11-04T00:14:00')
2025-11-04T02:17:29.028 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:17:29.040 [DEBUG] [Thread-126787] [transport.py] [_log()] starting thread (client mode): 0xed07e20
2025-11-04T02:17:29.041 [DEBUG] [Thread-126787] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:17:29.056 [DEBUG] [Thread-126787] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:17:29.056 [INFO] [Thread-126787] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:17:29.064 [DEBUG] [Thread-126787] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:17:29.064 [DEBUG] [Thread-126787] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:17:29.064 [DEBUG] [Thread-126787] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:17:29.064 [DEBUG] [Thread-126787] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:17:29.064 [DEBUG] [Thread-126787] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:17:29.064 [DEBUG] [Thread-126787] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:17:29.064 [DEBUG] [Thread-126787] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:17:29.064 [DEBUG] [Thread-126787] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:17:29.064 [DEBUG] [Thread-126787] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:17:29.064 [DEBUG] [Thread-126787] [transport.py] [_log()] client lang: <none>
2025-11-04T02:17:29.064 [DEBUG] [Thread-126787] [transport.py] [_log()] server lang: <none>
2025-11-04T02:17:29.064 [DEBUG] [Thread-126787] [transport.py] [_log()] kex follows: False
2025-11-04T02:17:29.064 [DEBUG] [Thread-126787] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:17:29.064 [DEBUG] [Thread-126787] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:17:29.064 [DEBUG] [Thread-126787] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:17:29.064 [DEBUG] [Thread-126787] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:17:29.064 [DEBUG] [Thread-126787] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:17:29.064 [DEBUG] [Thread-126787] [transport.py] [_log()] Compression: none
2025-11-04T02:17:29.064 [DEBUG] [Thread-126787] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:17:29.120 [DEBUG] [Thread-126787] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:17:29.120 [DEBUG] [Thread-126787] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:17:29.120 [DEBUG] [Thread-126787] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:17:29.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:17:29.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:17:29.177 [DEBUG] [Thread-126787] [transport.py] [_log()] userauth is OK
2025-11-04T02:17:29.177 [DEBUG] [Thread-126787] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:17:29.177 [DEBUG] [Thread-126787] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:17:29.177 [DEBUG] [Thread-126787] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:17:29.177 [DEBUG] [Thread-126787] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:17:29.193 [INFO] [Thread-126787] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:17:29.193 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:17:29.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:17:30.055 [DEBUG] [Thread-126787] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:17:30.055 [DEBUG] [Thread-126787] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:17:30.104 [DEBUG] [Thread-126787] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:17:30.104 [DEBUG] [Thread-126787] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:17:30.112 [DEBUG] [Thread-126787] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:17:30.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:17:30.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:17:30.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:17:30.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:17:30.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:17:30.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:17:30.156 [DEBUG] [Thread-126787] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:17:33.648 [DEBUG] [Thread-126789 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:17:41.769 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:17:41.770 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:17:48.748 [DEBUG] [Thread-126790 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:17:58.280 [DEBUG] [Thread-126791 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:18:00.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:18:00.178 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:18:00.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:18:00.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 17, 48), 26.94, 14.49, 0.0, 20.43, 16.72, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:18:00.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:17:48
2025-11-04T02:18:01.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:18:01.247 [DEBUG] [Thread-126792] [transport.py] [_log()] starting thread (client mode): 0xed343a0
2025-11-04T02:18:01.247 [DEBUG] [Thread-126792] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:18:01.267 [DEBUG] [Thread-126792] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:18:01.267 [INFO] [Thread-126792] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:18:01.270 [DEBUG] [Thread-126792] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:18:01.270 [DEBUG] [Thread-126792] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:18:01.270 [DEBUG] [Thread-126792] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:18:01.270 [DEBUG] [Thread-126792] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:18:01.270 [DEBUG] [Thread-126792] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:18:01.271 [DEBUG] [Thread-126792] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:18:01.271 [DEBUG] [Thread-126792] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:18:01.271 [DEBUG] [Thread-126792] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:18:01.271 [DEBUG] [Thread-126792] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:18:01.271 [DEBUG] [Thread-126792] [transport.py] [_log()] client lang: <none>
2025-11-04T02:18:01.271 [DEBUG] [Thread-126792] [transport.py] [_log()] server lang: <none>
2025-11-04T02:18:01.271 [DEBUG] [Thread-126792] [transport.py] [_log()] kex follows: False
2025-11-04T02:18:01.271 [DEBUG] [Thread-126792] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:18:01.271 [DEBUG] [Thread-126792] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:18:01.271 [DEBUG] [Thread-126792] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:18:01.271 [DEBUG] [Thread-126792] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:18:01.271 [DEBUG] [Thread-126792] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:18:01.271 [DEBUG] [Thread-126792] [transport.py] [_log()] Compression: none
2025-11-04T02:18:01.272 [DEBUG] [Thread-126792] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:18:01.288 [DEBUG] [Thread-126792] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:18:01.288 [DEBUG] [Thread-126792] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:18:01.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:18:01.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:18:01.289 [DEBUG] [Thread-126792] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:18:01.333 [DEBUG] [Thread-126792] [transport.py] [_log()] userauth is OK
2025-11-04T02:18:01.333 [DEBUG] [Thread-126792] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:18:01.333 [DEBUG] [Thread-126792] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:18:01.333 [DEBUG] [Thread-126792] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:18:01.334 [DEBUG] [Thread-126792] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:18:01.356 [INFO] [Thread-126792] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:18:01.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:18:01.994 [DEBUG] [Thread-126792] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:18:01.994 [DEBUG] [Thread-126792] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:18:01.994 [DEBUG] [Thread-126792] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:18:02.036 [DEBUG] [Thread-126792] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:18:02.036 [DEBUG] [Thread-126792] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:18:02.039 [DEBUG] [Thread-126792] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:18:02.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:18:02.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:18:02.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:18:02.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:18:02.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:18:02.057 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:18:02.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:18:02.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:18:02.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:18:02.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.011903 -999.00  +16.30  17.24     20   -6.30 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 15.8 17.2 330.0 19.3 16.9 -23.8 16.8 -23.0 16.5 -22.5 16.8 -23.6
2025-11-04T02:18:02.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:18:02.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:18:02.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.011903
2025-11-04T02:18:02.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:18:02.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:18:02.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:18:02.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:18:02.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:18:02.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:17:48', tmtdew=26.94, humidity=14.49, cloud=0.0, wind=20.43, temperature=16.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:17:49', seeing=1.02, atlas_timestamp='2025-11-04T00:17:08.419', atlas_cloud=1, atlas_rain=1, zp_data=[0.02674999999999983, 0.10975000000000179, 0.12124999999999986, 0.1144999999999996, 0.09950000000000081, 0.08525000000000027, 0.006999999999999673, 0.02725000000000044, 0.0730000000000004, 0.08300000000000018, 0.13724999999999987, 0.12650000000000006, 0.17199999999999882, 0.036249999999999005, 0.0019999999999988916, 0.0030000000000001137, 0.09474999999999945, 0.08349999999999902, 0.17049999999999876, 0.1347499999999986, 0.20999999999999908, -0.2112500000000015, 0.047750000000000625, 0.06274999999999942, 0.08999999999999986, 0.2320000000000011, 0.1437500000000007, 0.19599999999999973, 0.23599999999999977, -0.7624999999999993, 0.1479999999999997, 0.08700000000000152, 0.13625000000000043], zp_timestamp='2025-11-04T00:14:00')
2025-11-04T02:18:02.058 [DEBUG] [Thread-126792] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:18:02.130 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:18:02.142 [DEBUG] [Thread-126795] [transport.py] [_log()] starting thread (client mode): 0xed37670
2025-11-04T02:18:02.142 [DEBUG] [Thread-126795] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:18:02.157 [DEBUG] [Thread-126795] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:18:02.158 [INFO] [Thread-126795] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:18:02.165 [DEBUG] [Thread-126795] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:18:02.165 [DEBUG] [Thread-126795] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:18:02.165 [DEBUG] [Thread-126795] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:18:02.165 [DEBUG] [Thread-126795] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:18:02.165 [DEBUG] [Thread-126795] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:18:02.165 [DEBUG] [Thread-126795] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:18:02.165 [DEBUG] [Thread-126795] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:18:02.165 [DEBUG] [Thread-126795] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:18:02.165 [DEBUG] [Thread-126795] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:18:02.165 [DEBUG] [Thread-126795] [transport.py] [_log()] client lang: <none>
2025-11-04T02:18:02.165 [DEBUG] [Thread-126795] [transport.py] [_log()] server lang: <none>
2025-11-04T02:18:02.165 [DEBUG] [Thread-126795] [transport.py] [_log()] kex follows: False
2025-11-04T02:18:02.165 [DEBUG] [Thread-126795] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:18:02.165 [DEBUG] [Thread-126795] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:18:02.165 [DEBUG] [Thread-126795] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:18:02.165 [DEBUG] [Thread-126795] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:18:02.165 [DEBUG] [Thread-126795] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:18:02.165 [DEBUG] [Thread-126795] [transport.py] [_log()] Compression: none
2025-11-04T02:18:02.165 [DEBUG] [Thread-126795] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:18:02.224 [DEBUG] [Thread-126795] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:18:02.225 [DEBUG] [Thread-126795] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:18:02.225 [DEBUG] [Thread-126795] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:18:02.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:18:02.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:18:02.281 [DEBUG] [Thread-126795] [transport.py] [_log()] userauth is OK
2025-11-04T02:18:02.281 [DEBUG] [Thread-126795] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:18:02.281 [DEBUG] [Thread-126795] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:18:02.281 [DEBUG] [Thread-126795] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:18:02.282 [DEBUG] [Thread-126795] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:18:02.297 [INFO] [Thread-126795] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:18:02.297 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:18:02.298 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:18:03.168 [DEBUG] [Thread-126795] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:18:03.169 [DEBUG] [Thread-126795] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:18:03.216 [DEBUG] [Thread-126795] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:18:03.217 [DEBUG] [Thread-126795] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:18:03.226 [DEBUG] [Thread-126795] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:18:03.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:18:03.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:18:03.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:18:03.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:18:03.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:18:03.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:18:03.268 [DEBUG] [Thread-126795] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:18:03.776 [DEBUG] [Thread-126797 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:18:18.867 [DEBUG] [Thread-126798 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:18:33.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:18:33.287 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:18:33.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:18:33.894 [DEBUG] [Thread-126799 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:18:34.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 18, 21), 27.0, 14.44, 0.0, 20.77, 16.77, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:18:34.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:18:21
2025-11-04T02:18:34.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:18:34.329 [DEBUG] [Thread-126800] [transport.py] [_log()] starting thread (client mode): 0xed346d0
2025-11-04T02:18:34.329 [DEBUG] [Thread-126800] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:18:34.339 [DEBUG] [Thread-126800] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:18:34.340 [INFO] [Thread-126800] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:18:34.344 [DEBUG] [Thread-126800] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:18:34.344 [DEBUG] [Thread-126800] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:18:34.344 [DEBUG] [Thread-126800] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:18:34.344 [DEBUG] [Thread-126800] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:18:34.344 [DEBUG] [Thread-126800] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:18:34.344 [DEBUG] [Thread-126800] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:18:34.344 [DEBUG] [Thread-126800] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:18:34.345 [DEBUG] [Thread-126800] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:18:34.345 [DEBUG] [Thread-126800] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:18:34.345 [DEBUG] [Thread-126800] [transport.py] [_log()] client lang: <none>
2025-11-04T02:18:34.345 [DEBUG] [Thread-126800] [transport.py] [_log()] server lang: <none>
2025-11-04T02:18:34.345 [DEBUG] [Thread-126800] [transport.py] [_log()] kex follows: False
2025-11-04T02:18:34.345 [DEBUG] [Thread-126800] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:18:34.346 [DEBUG] [Thread-126800] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:18:34.346 [DEBUG] [Thread-126800] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:18:34.346 [DEBUG] [Thread-126800] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:18:34.346 [DEBUG] [Thread-126800] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:18:34.346 [DEBUG] [Thread-126800] [transport.py] [_log()] Compression: none
2025-11-04T02:18:34.346 [DEBUG] [Thread-126800] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:18:34.381 [DEBUG] [Thread-126800] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:18:34.385 [DEBUG] [Thread-126800] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:18:34.386 [DEBUG] [Thread-126800] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:18:34.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:18:34.390 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:18:34.392 [DEBUG] [Thread-126800] [transport.py] [_log()] userauth is OK
2025-11-04T02:18:34.393 [DEBUG] [Thread-126800] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:18:34.393 [DEBUG] [Thread-126800] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:18:34.393 [DEBUG] [Thread-126800] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:18:34.393 [DEBUG] [Thread-126800] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:18:34.435 [INFO] [Thread-126800] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:18:34.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:18:35.067 [DEBUG] [Thread-126800] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:18:35.068 [DEBUG] [Thread-126800] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:18:35.068 [DEBUG] [Thread-126800] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:18:35.109 [DEBUG] [Thread-126800] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:18:35.109 [DEBUG] [Thread-126800] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:18:35.111 [DEBUG] [Thread-126800] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:18:35.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:18:35.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:18:35.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:18:35.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:18:35.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:18:35.129 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:18:35.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:18:35.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:18:35.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:18:35.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.012597 -999.00  +16.30  15.46     20   -6.30 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 16.8 15.5 323.0 18.8 16.8 -23.9 16.8 -23.0 16.5 -22.7 16.8 -23.4
2025-11-04T02:18:35.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:18:35.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:18:35.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.012597
2025-11-04T02:18:35.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:18:35.143 [DEBUG] [Thread-126800] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:18:35.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:18:35.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:18:35.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:18:35.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:18:35.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:18:21', tmtdew=27.0, humidity=14.44, cloud=0.0, wind=20.77, temperature=16.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:18:21', seeing=1.02, atlas_timestamp='2025-11-04T00:18:08.381', atlas_cloud=1, atlas_rain=1, zp_data=[0.02674999999999983, 0.10975000000000179, 0.12124999999999986, 0.1144999999999996, 0.09950000000000081, 0.08525000000000027, 0.006999999999999673, 0.02725000000000044, 0.0730000000000004, 0.08300000000000018, 0.13724999999999987, 0.12650000000000006, 0.17199999999999882, 0.036249999999999005, 0.0019999999999988916, 0.0030000000000001137, 0.09474999999999945, 0.08349999999999902, 0.17049999999999876, 0.1347499999999986, 0.20999999999999908, -0.2112500000000015, 0.047750000000000625, 0.06274999999999942, 0.08999999999999986, 0.2320000000000011, 0.1437500000000007, 0.19599999999999973, 0.23599999999999977, -0.7624999999999993, 0.1479999999999997, 0.08700000000000152, 0.13625000000000043], zp_timestamp='2025-11-04T00:14:00')
2025-11-04T02:18:35.215 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:18:35.218 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:18:35.228 [DEBUG] [Thread-126803] [transport.py] [_log()] starting thread (client mode): 0xed07550
2025-11-04T02:18:35.228 [DEBUG] [Thread-126803] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:18:35.243 [DEBUG] [Thread-126803] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:18:35.243 [INFO] [Thread-126803] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:18:35.250 [DEBUG] [Thread-126803] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:18:35.251 [DEBUG] [Thread-126803] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:18:35.251 [DEBUG] [Thread-126803] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:18:35.251 [DEBUG] [Thread-126803] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:18:35.251 [DEBUG] [Thread-126803] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:18:35.251 [DEBUG] [Thread-126803] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:18:35.251 [DEBUG] [Thread-126803] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:18:35.251 [DEBUG] [Thread-126803] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:18:35.252 [DEBUG] [Thread-126803] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:18:35.252 [DEBUG] [Thread-126803] [transport.py] [_log()] client lang: <none>
2025-11-04T02:18:35.252 [DEBUG] [Thread-126803] [transport.py] [_log()] server lang: <none>
2025-11-04T02:18:35.252 [DEBUG] [Thread-126803] [transport.py] [_log()] kex follows: False
2025-11-04T02:18:35.252 [DEBUG] [Thread-126803] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:18:35.252 [DEBUG] [Thread-126803] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:18:35.252 [DEBUG] [Thread-126803] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:18:35.252 [DEBUG] [Thread-126803] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:18:35.253 [DEBUG] [Thread-126803] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:18:35.253 [DEBUG] [Thread-126803] [transport.py] [_log()] Compression: none
2025-11-04T02:18:35.253 [DEBUG] [Thread-126803] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:18:35.314 [DEBUG] [Thread-126803] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:18:35.315 [DEBUG] [Thread-126803] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:18:35.316 [DEBUG] [Thread-126803] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:18:35.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:18:35.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:18:35.375 [DEBUG] [Thread-126803] [transport.py] [_log()] userauth is OK
2025-11-04T02:18:35.375 [DEBUG] [Thread-126803] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:18:35.375 [DEBUG] [Thread-126803] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:18:35.376 [DEBUG] [Thread-126803] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:18:35.376 [DEBUG] [Thread-126803] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:18:35.395 [INFO] [Thread-126803] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:18:35.395 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:18:35.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:18:36.212 [DEBUG] [Thread-126803] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:18:36.212 [DEBUG] [Thread-126803] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:18:36.260 [DEBUG] [Thread-126803] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:18:36.260 [DEBUG] [Thread-126803] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:18:36.269 [DEBUG] [Thread-126803] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:18:36.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:18:36.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:18:36.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:18:36.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:18:36.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:18:36.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:18:36.302 [DEBUG] [Thread-126803] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:18:39.233 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:18:41.981 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:18:41.982 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:18:42.303 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:18:48.706 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:18:48.930 [DEBUG] [Thread-126805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:18:58.639 [DEBUG] [Thread-126806 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:19:04.027 [DEBUG] [Thread-126807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:19:06.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:19:06.326 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:19:06.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:19:07.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 18, 54), 27.16, 14.36, 0.0, 22.51, 16.77, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:19:07.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:18:54
2025-11-04T02:19:07.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:19:07.759 [DEBUG] [Thread-126808] [transport.py] [_log()] starting thread (client mode): 0x117bf730
2025-11-04T02:19:07.760 [DEBUG] [Thread-126808] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:19:07.774 [DEBUG] [Thread-126808] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:19:07.775 [INFO] [Thread-126808] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:19:07.778 [DEBUG] [Thread-126808] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:19:07.778 [DEBUG] [Thread-126808] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:19:07.778 [DEBUG] [Thread-126808] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:19:07.778 [DEBUG] [Thread-126808] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:19:07.778 [DEBUG] [Thread-126808] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:19:07.778 [DEBUG] [Thread-126808] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:19:07.778 [DEBUG] [Thread-126808] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:19:07.778 [DEBUG] [Thread-126808] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:19:07.778 [DEBUG] [Thread-126808] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:19:07.778 [DEBUG] [Thread-126808] [transport.py] [_log()] client lang: <none>
2025-11-04T02:19:07.778 [DEBUG] [Thread-126808] [transport.py] [_log()] server lang: <none>
2025-11-04T02:19:07.778 [DEBUG] [Thread-126808] [transport.py] [_log()] kex follows: False
2025-11-04T02:19:07.778 [DEBUG] [Thread-126808] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:19:07.779 [DEBUG] [Thread-126808] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:19:07.779 [DEBUG] [Thread-126808] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:19:07.779 [DEBUG] [Thread-126808] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:19:07.779 [DEBUG] [Thread-126808] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:19:07.779 [DEBUG] [Thread-126808] [transport.py] [_log()] Compression: none
2025-11-04T02:19:07.779 [DEBUG] [Thread-126808] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:19:07.810 [DEBUG] [Thread-126808] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:19:07.813 [DEBUG] [Thread-126808] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:19:07.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:19:07.814 [DEBUG] [Thread-126808] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:19:07.815 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:19:07.816 [DEBUG] [Thread-126808] [transport.py] [_log()] userauth is OK
2025-11-04T02:19:07.816 [DEBUG] [Thread-126808] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:19:07.816 [DEBUG] [Thread-126808] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:19:07.816 [DEBUG] [Thread-126808] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:19:07.816 [DEBUG] [Thread-126808] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:19:07.833 [INFO] [Thread-126808] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:19:07.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:19:08.477 [DEBUG] [Thread-126808] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:19:08.477 [DEBUG] [Thread-126808] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:19:08.478 [DEBUG] [Thread-126808] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:19:08.518 [DEBUG] [Thread-126808] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:19:08.518 [DEBUG] [Thread-126808] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:19:08.520 [DEBUG] [Thread-126808] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:19:08.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:19:08.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:19:08.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:19:08.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:19:08.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:19:08.539 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:19:08.539 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:19:08.539 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:19:08.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:19:08.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.012945 -999.00  +16.30  16.33     20   -6.30 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 16.4 16.3 319.4 18.1 16.9 -23.8 16.8 -22.9 16.5 -22.5 16.8 -23.5
2025-11-04T02:19:08.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:19:08.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:19:08.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.012945
2025-11-04T02:19:08.546 [DEBUG] [Thread-126808] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:19:08.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:19:08.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:19:08.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:19:08.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:19:08.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:19:08.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:18:54', tmtdew=27.16, humidity=14.36, cloud=0.0, wind=22.51, temperature=16.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:18:54', seeing=1.08, atlas_timestamp='2025-11-04T00:18:38.448', atlas_cloud=1, atlas_rain=1, zp_data=[0.02674999999999983, 0.10975000000000179, 0.12124999999999986, 0.1144999999999996, 0.09950000000000081, 0.08525000000000027, 0.006999999999999673, 0.02725000000000044, 0.0730000000000004, 0.08300000000000018, 0.13724999999999987, 0.12650000000000006, 0.17199999999999882, 0.036249999999999005, 0.0019999999999988916, 0.0030000000000001137, 0.09474999999999945, 0.08349999999999902, 0.17049999999999876, 0.1347499999999986, 0.20999999999999908, -0.2112500000000015, 0.047750000000000625, 0.06274999999999942, 0.08999999999999986, 0.2320000000000011, 0.1437500000000007, 0.19599999999999973, 0.23599999999999977, -0.7624999999999993, 0.1479999999999997, 0.08700000000000152, 0.13625000000000043], zp_timestamp='2025-11-04T00:14:00')
2025-11-04T02:19:08.628 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:19:08.639 [DEBUG] [Thread-126811] [transport.py] [_log()] starting thread (client mode): 0x117bf850
2025-11-04T02:19:08.639 [DEBUG] [Thread-126811] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:19:08.654 [DEBUG] [Thread-126811] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:19:08.654 [INFO] [Thread-126811] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:19:08.662 [DEBUG] [Thread-126811] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:19:08.662 [DEBUG] [Thread-126811] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:19:08.662 [DEBUG] [Thread-126811] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:19:08.662 [DEBUG] [Thread-126811] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:19:08.662 [DEBUG] [Thread-126811] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:19:08.662 [DEBUG] [Thread-126811] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:19:08.662 [DEBUG] [Thread-126811] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:19:08.662 [DEBUG] [Thread-126811] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:19:08.662 [DEBUG] [Thread-126811] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:19:08.662 [DEBUG] [Thread-126811] [transport.py] [_log()] client lang: <none>
2025-11-04T02:19:08.662 [DEBUG] [Thread-126811] [transport.py] [_log()] server lang: <none>
2025-11-04T02:19:08.662 [DEBUG] [Thread-126811] [transport.py] [_log()] kex follows: False
2025-11-04T02:19:08.662 [DEBUG] [Thread-126811] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:19:08.662 [DEBUG] [Thread-126811] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:19:08.662 [DEBUG] [Thread-126811] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:19:08.662 [DEBUG] [Thread-126811] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:19:08.662 [DEBUG] [Thread-126811] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:19:08.662 [DEBUG] [Thread-126811] [transport.py] [_log()] Compression: none
2025-11-04T02:19:08.662 [DEBUG] [Thread-126811] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:19:08.719 [DEBUG] [Thread-126811] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:19:08.720 [DEBUG] [Thread-126811] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:19:08.720 [DEBUG] [Thread-126811] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:19:08.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:19:08.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:19:08.777 [DEBUG] [Thread-126811] [transport.py] [_log()] userauth is OK
2025-11-04T02:19:08.778 [DEBUG] [Thread-126811] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:19:08.778 [DEBUG] [Thread-126811] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:19:08.778 [DEBUG] [Thread-126811] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:19:08.778 [DEBUG] [Thread-126811] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:19:08.795 [INFO] [Thread-126811] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:19:08.795 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:19:08.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:19:09.607 [DEBUG] [Thread-126811] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:19:09.607 [DEBUG] [Thread-126811] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:19:09.654 [DEBUG] [Thread-126811] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:19:09.654 [DEBUG] [Thread-126811] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:19:09.663 [DEBUG] [Thread-126811] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:19:09.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:19:09.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:19:09.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:19:09.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:19:09.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:19:09.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:19:09.697 [DEBUG] [Thread-126811] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:19:19.067 [DEBUG] [Thread-126813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:19:34.213 [DEBUG] [Thread-126814 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:19:39.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:19:39.720 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:19:39.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:19:40.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 19, 26), 27.22, 14.29, 0.0, 22.87, 16.81, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:19:40.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:19:26
2025-11-04T02:19:40.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:19:41.053 [DEBUG] [Thread-126815] [transport.py] [_log()] starting thread (client mode): 0x117bf8b0
2025-11-04T02:19:41.054 [DEBUG] [Thread-126815] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:19:41.068 [DEBUG] [Thread-126815] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:19:41.069 [INFO] [Thread-126815] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:19:41.073 [DEBUG] [Thread-126815] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:19:41.073 [DEBUG] [Thread-126815] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:19:41.073 [DEBUG] [Thread-126815] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:19:41.073 [DEBUG] [Thread-126815] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:19:41.073 [DEBUG] [Thread-126815] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:19:41.073 [DEBUG] [Thread-126815] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:19:41.073 [DEBUG] [Thread-126815] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:19:41.074 [DEBUG] [Thread-126815] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:19:41.074 [DEBUG] [Thread-126815] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:19:41.074 [DEBUG] [Thread-126815] [transport.py] [_log()] client lang: <none>
2025-11-04T02:19:41.074 [DEBUG] [Thread-126815] [transport.py] [_log()] server lang: <none>
2025-11-04T02:19:41.074 [DEBUG] [Thread-126815] [transport.py] [_log()] kex follows: False
2025-11-04T02:19:41.074 [DEBUG] [Thread-126815] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:19:41.075 [DEBUG] [Thread-126815] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:19:41.076 [DEBUG] [Thread-126815] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:19:41.076 [DEBUG] [Thread-126815] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:19:41.076 [DEBUG] [Thread-126815] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:19:41.076 [DEBUG] [Thread-126815] [transport.py] [_log()] Compression: none
2025-11-04T02:19:41.076 [DEBUG] [Thread-126815] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:19:41.103 [DEBUG] [Thread-126815] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:19:41.106 [DEBUG] [Thread-126815] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:19:41.107 [DEBUG] [Thread-126815] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:19:41.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:19:41.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:19:41.113 [DEBUG] [Thread-126815] [transport.py] [_log()] userauth is OK
2025-11-04T02:19:41.113 [DEBUG] [Thread-126815] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:19:41.113 [DEBUG] [Thread-126815] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:19:41.113 [DEBUG] [Thread-126815] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:19:41.113 [DEBUG] [Thread-126815] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:19:41.140 [INFO] [Thread-126815] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:19:41.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:19:41.789 [DEBUG] [Thread-126815] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:19:41.790 [DEBUG] [Thread-126815] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:19:41.791 [DEBUG] [Thread-126815] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:19:41.830 [DEBUG] [Thread-126815] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:19:41.830 [DEBUG] [Thread-126815] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:19:41.834 [DEBUG] [Thread-126815] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:19:41.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:19:41.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:19:41.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:19:41.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:19:41.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:19:41.856 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:19:41.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:19:41.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:19:41.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:19:41.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.013292 -999.00  +16.30  17.60     20   -6.30 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 18.3 17.6 326.8 20.4 16.9 -23.9 16.7 -22.9 16.4 -22.7 16.8 -23.5
2025-11-04T02:19:41.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:19:41.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:19:41.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.013292
2025-11-04T02:19:41.865 [DEBUG] [Thread-126815] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:19:41.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:19:41.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:19:41.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:19:41.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:19:41.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:19:41.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:19:26', tmtdew=27.22, humidity=14.29, cloud=0.0, wind=22.87, temperature=16.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:19:27', seeing=1.08, atlas_timestamp='2025-11-04T00:19:08.429', atlas_cloud=1, atlas_rain=1, zp_data=[0.02674999999999983, 0.10975000000000179, 0.12124999999999986, 0.1144999999999996, 0.09950000000000081, 0.08525000000000027, 0.006999999999999673, 0.02725000000000044, 0.0730000000000004, 0.08300000000000018, 0.13724999999999987, 0.12650000000000006, 0.17199999999999882, 0.036249999999999005, 0.0019999999999988916, 0.0030000000000001137, 0.09474999999999945, 0.08349999999999902, 0.17049999999999876, 0.1347499999999986, 0.20999999999999908, -0.2112500000000015, 0.047750000000000625, 0.06274999999999942, 0.08999999999999986, 0.2320000000000011, 0.1437500000000007, 0.19599999999999973, 0.23599999999999977, -0.7624999999999993, 0.1479999999999997, 0.08700000000000152, 0.13625000000000043], zp_timestamp='2025-11-04T00:17:00')
2025-11-04T02:19:41.969 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:19:41.980 [DEBUG] [Thread-126818] [transport.py] [_log()] starting thread (client mode): 0x819b880
2025-11-04T02:19:41.980 [DEBUG] [Thread-126818] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:19:41.995 [DEBUG] [Thread-126818] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:19:41.995 [INFO] [Thread-126818] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:19:42.003 [DEBUG] [Thread-126818] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:19:42.003 [DEBUG] [Thread-126818] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:19:42.004 [DEBUG] [Thread-126818] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:19:42.004 [DEBUG] [Thread-126818] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:19:42.004 [DEBUG] [Thread-126818] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:19:42.004 [DEBUG] [Thread-126818] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:19:42.004 [DEBUG] [Thread-126818] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:19:42.004 [DEBUG] [Thread-126818] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:19:42.004 [DEBUG] [Thread-126818] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:19:42.005 [DEBUG] [Thread-126818] [transport.py] [_log()] client lang: <none>
2025-11-04T02:19:42.005 [DEBUG] [Thread-126818] [transport.py] [_log()] server lang: <none>
2025-11-04T02:19:42.005 [DEBUG] [Thread-126818] [transport.py] [_log()] kex follows: False
2025-11-04T02:19:42.005 [DEBUG] [Thread-126818] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:19:42.005 [DEBUG] [Thread-126818] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:19:42.005 [DEBUG] [Thread-126818] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:19:42.005 [DEBUG] [Thread-126818] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:19:42.005 [DEBUG] [Thread-126818] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:19:42.006 [DEBUG] [Thread-126818] [transport.py] [_log()] Compression: none
2025-11-04T02:19:42.008 [DEBUG] [Thread-126818] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:19:42.061 [DEBUG] [Thread-126818] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:19:42.062 [DEBUG] [Thread-126818] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:19:42.062 [DEBUG] [Thread-126818] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:19:42.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:19:42.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:19:42.119 [DEBUG] [Thread-126818] [transport.py] [_log()] userauth is OK
2025-11-04T02:19:42.119 [DEBUG] [Thread-126818] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:19:42.119 [DEBUG] [Thread-126818] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:19:42.119 [DEBUG] [Thread-126818] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:19:42.119 [DEBUG] [Thread-126818] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:19:42.138 [INFO] [Thread-126818] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:19:42.139 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:19:42.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:19:42.195 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:19:42.197 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:19:42.993 [DEBUG] [Thread-126818] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:19:42.993 [DEBUG] [Thread-126818] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:19:43.042 [DEBUG] [Thread-126818] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:19:43.042 [DEBUG] [Thread-126818] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:19:43.051 [DEBUG] [Thread-126818] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:19:43.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:19:43.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:19:43.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:19:43.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:19:43.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:19:43.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:19:43.086 [DEBUG] [Thread-126818] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:19:49.244 [DEBUG] [Thread-126820 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:19:58.945 [DEBUG] [Thread-126821 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:20:04.323 [DEBUG] [Thread-126822 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:20:12.308 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:20:13.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:20:13.124 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:20:13.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:20:14.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 19, 59), 27.2, 14.32, 0.0, 21.01, 16.84, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:20:14.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:19:59
2025-11-04T02:20:14.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:20:14.436 [DEBUG] [Thread-126823] [transport.py] [_log()] starting thread (client mode): 0x117be860
2025-11-04T02:20:14.437 [DEBUG] [Thread-126823] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:20:14.451 [DEBUG] [Thread-126823] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:20:14.451 [INFO] [Thread-126823] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:20:14.455 [DEBUG] [Thread-126823] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:20:14.455 [DEBUG] [Thread-126823] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:20:14.455 [DEBUG] [Thread-126823] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:20:14.455 [DEBUG] [Thread-126823] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:20:14.456 [DEBUG] [Thread-126823] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:20:14.456 [DEBUG] [Thread-126823] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:20:14.456 [DEBUG] [Thread-126823] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:20:14.456 [DEBUG] [Thread-126823] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:20:14.456 [DEBUG] [Thread-126823] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:20:14.456 [DEBUG] [Thread-126823] [transport.py] [_log()] client lang: <none>
2025-11-04T02:20:14.456 [DEBUG] [Thread-126823] [transport.py] [_log()] server lang: <none>
2025-11-04T02:20:14.456 [DEBUG] [Thread-126823] [transport.py] [_log()] kex follows: False
2025-11-04T02:20:14.456 [DEBUG] [Thread-126823] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:20:14.457 [DEBUG] [Thread-126823] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:20:14.457 [DEBUG] [Thread-126823] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:20:14.457 [DEBUG] [Thread-126823] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:20:14.458 [DEBUG] [Thread-126823] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:20:14.458 [DEBUG] [Thread-126823] [transport.py] [_log()] Compression: none
2025-11-04T02:20:14.458 [DEBUG] [Thread-126823] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:20:14.493 [DEBUG] [Thread-126823] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:20:14.497 [DEBUG] [Thread-126823] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:20:14.499 [DEBUG] [Thread-126823] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:20:14.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:20:14.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:20:14.504 [DEBUG] [Thread-126823] [transport.py] [_log()] userauth is OK
2025-11-04T02:20:14.504 [DEBUG] [Thread-126823] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:20:14.504 [DEBUG] [Thread-126823] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:20:14.505 [DEBUG] [Thread-126823] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:20:14.505 [DEBUG] [Thread-126823] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:20:14.532 [INFO] [Thread-126823] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:20:14.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:20:15.249 [DEBUG] [Thread-126823] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:20:15.250 [DEBUG] [Thread-126823] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:20:15.260 [DEBUG] [Thread-126823] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:20:15.291 [DEBUG] [Thread-126823] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:20:15.292 [DEBUG] [Thread-126823] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:20:15.297 [DEBUG] [Thread-126823] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:20:15.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:20:15.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:20:15.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:20:15.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:20:15.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:20:15.374 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:20:15.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:20:15.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:20:15.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:20:15.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.013639 -999.00  +16.40  20.98     20   -6.30 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 20.0 21.0 324.2 23.0 16.8 -23.8 16.8 -22.9 16.5 -22.5 16.8 -23.5
2025-11-04T02:20:15.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:20:15.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:20:15.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.013639
2025-11-04T02:20:15.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:20:15.392 [DEBUG] [Thread-126823] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:20:15.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:20:15.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:20:15.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:20:15.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:20:15.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:19:59', tmtdew=27.2, humidity=14.32, cloud=0.0, wind=21.01, temperature=16.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:20:00', seeing=1.14, atlas_timestamp='2025-11-04T00:19:38.410', atlas_cloud=1, atlas_rain=1, zp_data=[0.02674999999999983, 0.10975000000000179, 0.12124999999999986, 0.1144999999999996, 0.09950000000000081, 0.08525000000000027, 0.006999999999999673, 0.02725000000000044, 0.0730000000000004, 0.08300000000000018, 0.13724999999999987, 0.12650000000000006, 0.17199999999999882, 0.036249999999999005, 0.0019999999999988916, 0.0030000000000001137, 0.09474999999999945, 0.08349999999999902, 0.17049999999999876, 0.1347499999999986, 0.20999999999999908, -0.2112500000000015, 0.047750000000000625, 0.06274999999999942, 0.08999999999999986, 0.2320000000000011, 0.1437500000000007, 0.19599999999999973, 0.23599999999999977, -0.7624999999999993, 0.1479999999999997, 0.08700000000000152, 0.13625000000000043], zp_timestamp='2025-11-04T00:17:00')
2025-11-04T02:20:15.475 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:20:15.488 [DEBUG] [Thread-126826] [transport.py] [_log()] starting thread (client mode): 0x117bf550
2025-11-04T02:20:15.488 [DEBUG] [Thread-126826] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:20:15.502 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:20:15.503 [DEBUG] [Thread-126826] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:20:15.504 [INFO] [Thread-126826] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:20:15.512 [DEBUG] [Thread-126826] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:20:15.512 [DEBUG] [Thread-126826] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:20:15.512 [DEBUG] [Thread-126826] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:20:15.512 [DEBUG] [Thread-126826] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:20:15.512 [DEBUG] [Thread-126826] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:20:15.512 [DEBUG] [Thread-126826] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:20:15.512 [DEBUG] [Thread-126826] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:20:15.512 [DEBUG] [Thread-126826] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:20:15.513 [DEBUG] [Thread-126826] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:20:15.513 [DEBUG] [Thread-126826] [transport.py] [_log()] client lang: <none>
2025-11-04T02:20:15.513 [DEBUG] [Thread-126826] [transport.py] [_log()] server lang: <none>
2025-11-04T02:20:15.513 [DEBUG] [Thread-126826] [transport.py] [_log()] kex follows: False
2025-11-04T02:20:15.513 [DEBUG] [Thread-126826] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:20:15.513 [DEBUG] [Thread-126826] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:20:15.513 [DEBUG] [Thread-126826] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:20:15.513 [DEBUG] [Thread-126826] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:20:15.513 [DEBUG] [Thread-126826] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:20:15.513 [DEBUG] [Thread-126826] [transport.py] [_log()] Compression: none
2025-11-04T02:20:15.513 [DEBUG] [Thread-126826] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:20:15.570 [DEBUG] [Thread-126826] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:20:15.570 [DEBUG] [Thread-126826] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:20:15.571 [DEBUG] [Thread-126826] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:20:15.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:20:15.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:20:15.629 [DEBUG] [Thread-126826] [transport.py] [_log()] userauth is OK
2025-11-04T02:20:15.630 [DEBUG] [Thread-126826] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:20:15.630 [DEBUG] [Thread-126826] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:20:15.630 [DEBUG] [Thread-126826] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:20:15.630 [DEBUG] [Thread-126826] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:20:15.649 [INFO] [Thread-126826] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:20:15.649 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:20:15.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:20:16.502 [DEBUG] [Thread-126826] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:20:16.503 [DEBUG] [Thread-126826] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:20:16.542 [DEBUG] [Thread-126826] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:20:16.543 [DEBUG] [Thread-126826] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:20:16.552 [DEBUG] [Thread-126826] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:20:16.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:20:16.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:20:16.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:20:16.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:20:16.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:20:16.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:20:16.591 [DEBUG] [Thread-126826] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:20:19.373 [DEBUG] [Thread-126828 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:20:20.580 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:20:25.957 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:20:34.476 [DEBUG] [Thread-126829 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:20:42.421 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:20:42.422 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:20:45.312 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:20:46.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:20:46.618 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:20:46.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:20:47.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 20, 32), 27.2, 14.31, 0.0, 20.56, 16.79, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:20:47.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:20:32
2025-11-04T02:20:47.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:20:47.758 [DEBUG] [Thread-126830] [transport.py] [_log()] starting thread (client mode): 0x117bda50
2025-11-04T02:20:47.759 [DEBUG] [Thread-126830] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:20:47.763 [DEBUG] [Thread-126830] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:20:47.763 [INFO] [Thread-126830] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:20:47.767 [DEBUG] [Thread-126830] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:20:47.767 [DEBUG] [Thread-126830] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:20:47.767 [DEBUG] [Thread-126830] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:20:47.767 [DEBUG] [Thread-126830] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:20:47.767 [DEBUG] [Thread-126830] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:20:47.767 [DEBUG] [Thread-126830] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:20:47.767 [DEBUG] [Thread-126830] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:20:47.767 [DEBUG] [Thread-126830] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:20:47.767 [DEBUG] [Thread-126830] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:20:47.767 [DEBUG] [Thread-126830] [transport.py] [_log()] client lang: <none>
2025-11-04T02:20:47.767 [DEBUG] [Thread-126830] [transport.py] [_log()] server lang: <none>
2025-11-04T02:20:47.767 [DEBUG] [Thread-126830] [transport.py] [_log()] kex follows: False
2025-11-04T02:20:47.767 [DEBUG] [Thread-126830] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:20:47.768 [DEBUG] [Thread-126830] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:20:47.768 [DEBUG] [Thread-126830] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:20:47.768 [DEBUG] [Thread-126830] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:20:47.768 [DEBUG] [Thread-126830] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:20:47.768 [DEBUG] [Thread-126830] [transport.py] [_log()] Compression: none
2025-11-04T02:20:47.768 [DEBUG] [Thread-126830] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:20:47.806 [DEBUG] [Thread-126830] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:20:47.810 [DEBUG] [Thread-126830] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:20:47.812 [DEBUG] [Thread-126830] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:20:47.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:20:47.815 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:20:47.817 [DEBUG] [Thread-126830] [transport.py] [_log()] userauth is OK
2025-11-04T02:20:47.817 [DEBUG] [Thread-126830] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:20:47.817 [DEBUG] [Thread-126830] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:20:47.817 [DEBUG] [Thread-126830] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:20:47.817 [DEBUG] [Thread-126830] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:20:47.842 [INFO] [Thread-126830] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:20:47.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:20:48.470 [DEBUG] [Thread-126830] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:20:48.470 [DEBUG] [Thread-126830] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:20:48.472 [DEBUG] [Thread-126830] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:20:48.511 [DEBUG] [Thread-126830] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:20:48.512 [DEBUG] [Thread-126830] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:20:48.515 [DEBUG] [Thread-126830] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:20:48.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:20:48.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:20:48.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:20:48.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:20:48.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:20:48.541 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:20:48.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:20:48.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:20:48.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:20:48.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.013986 -999.00  +16.40  17.24     20   -6.40 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 17.9 17.2 322.0 22.5 16.8 -23.8 16.7 -22.8 16.4 -22.5 16.7 -23.5
2025-11-04T02:20:48.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:20:48.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:20:48.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.013986
2025-11-04T02:20:48.549 [DEBUG] [Thread-126830] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:20:48.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:20:48.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:20:48.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:20:48.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:20:48.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:20:48.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:20:32', tmtdew=27.2, humidity=14.31, cloud=0.0, wind=20.56, temperature=16.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:20:33', seeing=1.27, atlas_timestamp='2025-11-04T00:20:08.390', atlas_cloud=1, atlas_rain=1, zp_data=[0.02674999999999983, 0.10975000000000179, 0.12124999999999986, 0.1144999999999996, 0.09950000000000081, 0.08525000000000027, 0.006999999999999673, 0.02725000000000044, 0.0730000000000004, 0.08300000000000018, 0.13724999999999987, 0.12650000000000006, 0.17199999999999882, 0.036249999999999005, 0.0019999999999988916, 0.0030000000000001137, 0.09474999999999945, 0.08349999999999902, 0.17049999999999876, 0.1347499999999986, 0.20999999999999908, -0.2112500000000015, 0.047750000000000625, 0.06274999999999942, 0.08999999999999986, 0.2320000000000011, 0.1437500000000007, 0.19599999999999973, 0.23599999999999977, -0.7624999999999993, 0.1479999999999997, 0.08700000000000152, 0.13625000000000043], zp_timestamp='2025-11-04T00:17:00')
2025-11-04T02:20:48.657 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:20:48.669 [DEBUG] [Thread-126833] [transport.py] [_log()] starting thread (client mode): 0xed04040
2025-11-04T02:20:48.669 [DEBUG] [Thread-126833] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:20:48.685 [DEBUG] [Thread-126833] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:20:48.686 [INFO] [Thread-126833] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:20:48.694 [DEBUG] [Thread-126833] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:20:48.694 [DEBUG] [Thread-126833] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:20:48.694 [DEBUG] [Thread-126833] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:20:48.694 [DEBUG] [Thread-126833] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:20:48.694 [DEBUG] [Thread-126833] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:20:48.695 [DEBUG] [Thread-126833] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:20:48.695 [DEBUG] [Thread-126833] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:20:48.695 [DEBUG] [Thread-126833] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:20:48.695 [DEBUG] [Thread-126833] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:20:48.695 [DEBUG] [Thread-126833] [transport.py] [_log()] client lang: <none>
2025-11-04T02:20:48.695 [DEBUG] [Thread-126833] [transport.py] [_log()] server lang: <none>
2025-11-04T02:20:48.695 [DEBUG] [Thread-126833] [transport.py] [_log()] kex follows: False
2025-11-04T02:20:48.695 [DEBUG] [Thread-126833] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:20:48.696 [DEBUG] [Thread-126833] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:20:48.696 [DEBUG] [Thread-126833] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:20:48.696 [DEBUG] [Thread-126833] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:20:48.696 [DEBUG] [Thread-126833] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:20:48.696 [DEBUG] [Thread-126833] [transport.py] [_log()] Compression: none
2025-11-04T02:20:48.696 [DEBUG] [Thread-126833] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:20:48.754 [DEBUG] [Thread-126833] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:20:48.754 [DEBUG] [Thread-126833] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:20:48.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:20:48.756 [DEBUG] [Thread-126833] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:20:48.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:20:48.814 [DEBUG] [Thread-126833] [transport.py] [_log()] userauth is OK
2025-11-04T02:20:48.814 [DEBUG] [Thread-126833] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:20:48.814 [DEBUG] [Thread-126833] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:20:48.814 [DEBUG] [Thread-126833] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:20:48.814 [DEBUG] [Thread-126833] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:20:48.829 [INFO] [Thread-126833] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:20:48.829 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:20:48.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:20:49.508 [DEBUG] [Thread-126835 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:20:49.688 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:20:49.689 [DEBUG] [Thread-126833] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:20:49.689 [DEBUG] [Thread-126833] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:20:49.727 [DEBUG] [Thread-126833] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:20:49.728 [DEBUG] [Thread-126833] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:20:49.738 [DEBUG] [Thread-126833] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:20:49.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:20:49.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:20:49.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:20:49.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:20:49.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:20:49.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:20:49.775 [DEBUG] [Thread-126833] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:20:59.286 [DEBUG] [Thread-126836 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:21:04.588 [DEBUG] [Thread-126837 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:21:09.065 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:21:13.452 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:21:19.589 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:21:19.629 [DEBUG] [Thread-126838 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:21:19.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:21:19.798 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:21:19.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:21:20.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 21, 4), 27.2, 14.32, 0.0, 20.5, 16.82, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:21:20.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:21:04
2025-11-04T02:21:21.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:21:21.303 [DEBUG] [Thread-126839] [transport.py] [_log()] starting thread (client mode): 0x8199330
2025-11-04T02:21:21.304 [DEBUG] [Thread-126839] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:21:21.318 [DEBUG] [Thread-126839] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:21:21.319 [INFO] [Thread-126839] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:21:21.325 [DEBUG] [Thread-126839] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:21:21.325 [DEBUG] [Thread-126839] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:21:21.325 [DEBUG] [Thread-126839] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:21:21.325 [DEBUG] [Thread-126839] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:21:21.325 [DEBUG] [Thread-126839] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:21:21.326 [DEBUG] [Thread-126839] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:21:21.326 [DEBUG] [Thread-126839] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:21:21.326 [DEBUG] [Thread-126839] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:21:21.326 [DEBUG] [Thread-126839] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:21:21.326 [DEBUG] [Thread-126839] [transport.py] [_log()] client lang: <none>
2025-11-04T02:21:21.326 [DEBUG] [Thread-126839] [transport.py] [_log()] server lang: <none>
2025-11-04T02:21:21.326 [DEBUG] [Thread-126839] [transport.py] [_log()] kex follows: False
2025-11-04T02:21:21.326 [DEBUG] [Thread-126839] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:21:21.327 [DEBUG] [Thread-126839] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:21:21.327 [DEBUG] [Thread-126839] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:21:21.328 [DEBUG] [Thread-126839] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:21:21.328 [DEBUG] [Thread-126839] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:21:21.328 [DEBUG] [Thread-126839] [transport.py] [_log()] Compression: none
2025-11-04T02:21:21.328 [DEBUG] [Thread-126839] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:21:21.365 [DEBUG] [Thread-126839] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:21:21.371 [DEBUG] [Thread-126839] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:21:21.373 [DEBUG] [Thread-126839] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:21:21.374 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:21:21.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:21:21.378 [DEBUG] [Thread-126839] [transport.py] [_log()] userauth is OK
2025-11-04T02:21:21.378 [DEBUG] [Thread-126839] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:21:21.378 [DEBUG] [Thread-126839] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:21:21.378 [DEBUG] [Thread-126839] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:21:21.378 [DEBUG] [Thread-126839] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:21:21.419 [INFO] [Thread-126839] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:21:21.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:21:22.171 [DEBUG] [Thread-126839] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:21:22.171 [DEBUG] [Thread-126839] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:21:22.181 [DEBUG] [Thread-126839] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:21:22.212 [DEBUG] [Thread-126839] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:21:22.212 [DEBUG] [Thread-126839] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:21:22.215 [DEBUG] [Thread-126839] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:21:22.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:21:22.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:21:22.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:21:22.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:21:22.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:21:22.237 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:21:22.237 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:21:22.237 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:21:22.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:21:22.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.014334 -999.00  +16.40  16.01     20   -6.40 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 16.5 16.0 320.2 21.6 16.8 -23.9 16.7 -22.8 16.4 -22.5 16.8 -23.4
2025-11-04T02:21:22.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:21:22.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:21:22.239 [DEBUG] [Thread-126839] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:21:22.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.014334
2025-11-04T02:21:22.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:21:22.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:21:22.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:21:22.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:21:22.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:21:22.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:21:04', tmtdew=27.2, humidity=14.32, cloud=0.0, wind=20.5, temperature=16.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:21:05', seeing=1.27, atlas_timestamp='2025-11-04T00:20:38.458', atlas_cloud=1, atlas_rain=1, zp_data=[0.02674999999999983, 0.10975000000000179, 0.12124999999999986, 0.1144999999999996, 0.09950000000000081, 0.08525000000000027, 0.006999999999999673, 0.02725000000000044, 0.0730000000000004, 0.08300000000000018, 0.13724999999999987, 0.12650000000000006, 0.17199999999999882, 0.036249999999999005, 0.0019999999999988916, 0.0030000000000001137, 0.09474999999999945, 0.08349999999999902, 0.17049999999999876, 0.1347499999999986, 0.20999999999999908, -0.2112500000000015, 0.047750000000000625, 0.06274999999999942, 0.08999999999999986, 0.2320000000000011, 0.1437500000000007, 0.19599999999999973, 0.23599999999999977, -0.7624999999999993, 0.1479999999999997, 0.08700000000000152, 0.13625000000000043], zp_timestamp='2025-11-04T00:17:00')
2025-11-04T02:21:22.343 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:21:22.353 [DEBUG] [Thread-126842] [transport.py] [_log()] starting thread (client mode): 0x117984f0
2025-11-04T02:21:22.353 [DEBUG] [Thread-126842] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:21:22.368 [DEBUG] [Thread-126842] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:21:22.368 [INFO] [Thread-126842] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:21:22.376 [DEBUG] [Thread-126842] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:21:22.377 [DEBUG] [Thread-126842] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:21:22.377 [DEBUG] [Thread-126842] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:21:22.377 [DEBUG] [Thread-126842] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:21:22.377 [DEBUG] [Thread-126842] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:21:22.377 [DEBUG] [Thread-126842] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:21:22.377 [DEBUG] [Thread-126842] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:21:22.377 [DEBUG] [Thread-126842] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:21:22.377 [DEBUG] [Thread-126842] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:21:22.377 [DEBUG] [Thread-126842] [transport.py] [_log()] client lang: <none>
2025-11-04T02:21:22.377 [DEBUG] [Thread-126842] [transport.py] [_log()] server lang: <none>
2025-11-04T02:21:22.377 [DEBUG] [Thread-126842] [transport.py] [_log()] kex follows: False
2025-11-04T02:21:22.377 [DEBUG] [Thread-126842] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:21:22.377 [DEBUG] [Thread-126842] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:21:22.377 [DEBUG] [Thread-126842] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:21:22.377 [DEBUG] [Thread-126842] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:21:22.377 [DEBUG] [Thread-126842] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:21:22.377 [DEBUG] [Thread-126842] [transport.py] [_log()] Compression: none
2025-11-04T02:21:22.377 [DEBUG] [Thread-126842] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:21:22.434 [DEBUG] [Thread-126842] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:21:22.434 [DEBUG] [Thread-126842] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:21:22.435 [DEBUG] [Thread-126842] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:21:22.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:21:22.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:21:22.493 [DEBUG] [Thread-126842] [transport.py] [_log()] userauth is OK
2025-11-04T02:21:22.493 [DEBUG] [Thread-126842] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:21:22.493 [DEBUG] [Thread-126842] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:21:22.493 [DEBUG] [Thread-126842] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:21:22.494 [DEBUG] [Thread-126842] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:21:22.512 [INFO] [Thread-126842] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:21:22.513 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:21:22.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:21:23.361 [DEBUG] [Thread-126842] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:21:23.361 [DEBUG] [Thread-126842] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:21:23.401 [DEBUG] [Thread-126842] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:21:23.401 [DEBUG] [Thread-126842] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:21:23.410 [DEBUG] [Thread-126842] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:21:23.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:21:23.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:21:23.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:21:23.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:21:23.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:21:23.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:21:23.444 [DEBUG] [Thread-126842] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:21:23.972 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:21:34.680 [DEBUG] [Thread-126844 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:21:42.624 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:21:42.624 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:21:49.777 [DEBUG] [Thread-126845 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:21:53.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:21:53.461 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:21:53.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:21:54.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 21, 37), 27.24, 14.26, 0.0, 20.4, 16.71, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:21:54.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:21:37
2025-11-04T02:21:54.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:21:54.524 [DEBUG] [Thread-126846] [transport.py] [_log()] starting thread (client mode): 0xed36620
2025-11-04T02:21:54.524 [DEBUG] [Thread-126846] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:21:54.545 [DEBUG] [Thread-126846] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:21:54.545 [INFO] [Thread-126846] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:21:54.548 [DEBUG] [Thread-126846] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:21:54.548 [DEBUG] [Thread-126846] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:21:54.548 [DEBUG] [Thread-126846] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:21:54.548 [DEBUG] [Thread-126846] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:21:54.548 [DEBUG] [Thread-126846] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:21:54.548 [DEBUG] [Thread-126846] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:21:54.548 [DEBUG] [Thread-126846] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:21:54.548 [DEBUG] [Thread-126846] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:21:54.548 [DEBUG] [Thread-126846] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:21:54.548 [DEBUG] [Thread-126846] [transport.py] [_log()] client lang: <none>
2025-11-04T02:21:54.548 [DEBUG] [Thread-126846] [transport.py] [_log()] server lang: <none>
2025-11-04T02:21:54.548 [DEBUG] [Thread-126846] [transport.py] [_log()] kex follows: False
2025-11-04T02:21:54.548 [DEBUG] [Thread-126846] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:21:54.548 [DEBUG] [Thread-126846] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:21:54.548 [DEBUG] [Thread-126846] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:21:54.548 [DEBUG] [Thread-126846] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:21:54.548 [DEBUG] [Thread-126846] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:21:54.548 [DEBUG] [Thread-126846] [transport.py] [_log()] Compression: none
2025-11-04T02:21:54.548 [DEBUG] [Thread-126846] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:21:54.564 [DEBUG] [Thread-126846] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:21:54.564 [DEBUG] [Thread-126846] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:21:54.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:21:54.564 [DEBUG] [Thread-126846] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:21:54.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:21:54.565 [DEBUG] [Thread-126846] [transport.py] [_log()] userauth is OK
2025-11-04T02:21:54.565 [DEBUG] [Thread-126846] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:21:54.565 [DEBUG] [Thread-126846] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:21:54.565 [DEBUG] [Thread-126846] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:21:54.565 [DEBUG] [Thread-126846] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:21:54.574 [INFO] [Thread-126846] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:21:54.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:21:55.191 [DEBUG] [Thread-126846] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:21:55.191 [DEBUG] [Thread-126846] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:21:55.191 [DEBUG] [Thread-126846] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:21:55.232 [DEBUG] [Thread-126846] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:21:55.232 [DEBUG] [Thread-126846] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:21:55.235 [DEBUG] [Thread-126846] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:21:55.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:21:55.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:21:55.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:21:55.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:21:55.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:21:55.252 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:21:55.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:21:55.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:21:55.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:21:55.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.015028 -999.00  +16.40  19.92     20   -6.40 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 17.0 19.9 320.0 21.6 16.8 -23.9 16.7 -22.9 16.5 -22.4 16.8 -23.5
2025-11-04T02:21:55.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:21:55.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:21:55.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.015028
2025-11-04T02:21:55.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:21:55.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:21:55.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:21:55.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:21:55.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:21:55.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:21:37', tmtdew=27.24, humidity=14.26, cloud=0.0, wind=20.4, temperature=16.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:21:38', seeing=1.12, atlas_timestamp='2025-11-04T00:21:38.419', atlas_cloud=1, atlas_rain=1, zp_data=[0.02674999999999983, 0.10975000000000179, 0.12124999999999986, 0.1144999999999996, 0.09950000000000081, 0.08525000000000027, 0.006999999999999673, 0.02725000000000044, 0.0730000000000004, 0.08300000000000018, 0.13724999999999987, 0.12650000000000006, 0.17199999999999882, 0.036249999999999005, 0.0019999999999988916, 0.0030000000000001137, 0.09474999999999945, 0.08349999999999902, 0.17049999999999876, 0.1347499999999986, 0.20999999999999908, -0.2112500000000015, 0.047750000000000625, 0.06274999999999942, 0.08999999999999986, 0.2320000000000011, 0.1437500000000007, 0.19599999999999973, 0.23599999999999977, -0.7624999999999993, 0.1479999999999997, 0.08700000000000152, 0.13625000000000043], zp_timestamp='2025-11-04T00:17:00')
2025-11-04T02:21:55.253 [DEBUG] [Thread-126846] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:21:55.326 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:21:55.339 [DEBUG] [Thread-126849] [transport.py] [_log()] starting thread (client mode): 0xedc6b30
2025-11-04T02:21:55.339 [DEBUG] [Thread-126849] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:21:55.354 [DEBUG] [Thread-126849] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:21:55.354 [INFO] [Thread-126849] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:21:55.362 [DEBUG] [Thread-126849] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:21:55.362 [DEBUG] [Thread-126849] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:21:55.363 [DEBUG] [Thread-126849] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:21:55.363 [DEBUG] [Thread-126849] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:21:55.363 [DEBUG] [Thread-126849] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:21:55.363 [DEBUG] [Thread-126849] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:21:55.363 [DEBUG] [Thread-126849] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:21:55.363 [DEBUG] [Thread-126849] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:21:55.363 [DEBUG] [Thread-126849] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:21:55.363 [DEBUG] [Thread-126849] [transport.py] [_log()] client lang: <none>
2025-11-04T02:21:55.363 [DEBUG] [Thread-126849] [transport.py] [_log()] server lang: <none>
2025-11-04T02:21:55.363 [DEBUG] [Thread-126849] [transport.py] [_log()] kex follows: False
2025-11-04T02:21:55.363 [DEBUG] [Thread-126849] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:21:55.363 [DEBUG] [Thread-126849] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:21:55.363 [DEBUG] [Thread-126849] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:21:55.363 [DEBUG] [Thread-126849] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:21:55.363 [DEBUG] [Thread-126849] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:21:55.363 [DEBUG] [Thread-126849] [transport.py] [_log()] Compression: none
2025-11-04T02:21:55.363 [DEBUG] [Thread-126849] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:21:55.422 [DEBUG] [Thread-126849] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:21:55.423 [DEBUG] [Thread-126849] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:21:55.424 [DEBUG] [Thread-126849] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:21:55.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:21:55.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:21:55.481 [DEBUG] [Thread-126849] [transport.py] [_log()] userauth is OK
2025-11-04T02:21:55.481 [DEBUG] [Thread-126849] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:21:55.481 [DEBUG] [Thread-126849] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:21:55.481 [DEBUG] [Thread-126849] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:21:55.481 [DEBUG] [Thread-126849] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:21:55.495 [INFO] [Thread-126849] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:21:55.495 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:21:55.495 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:21:56.332 [DEBUG] [Thread-126849] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:21:56.332 [DEBUG] [Thread-126849] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:21:56.384 [DEBUG] [Thread-126849] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:21:56.384 [DEBUG] [Thread-126849] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:21:56.395 [DEBUG] [Thread-126849] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:21:56.406 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:21:56.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:21:56.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:21:56.426 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:21:56.426 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:21:56.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:21:56.436 [DEBUG] [Thread-126849] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:21:59.628 [DEBUG] [Thread-126851 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:22:04.807 [DEBUG] [Thread-126852 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:22:19.880 [DEBUG] [Thread-126853 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:22:26.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:22:26.440 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:22:26.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:22:27.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 22, 10), 27.18, 14.32, 0.0, 20.56, 16.67, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:22:27.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:22:10
2025-11-04T02:22:27.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:22:27.613 [DEBUG] [Thread-126854] [transport.py] [_log()] starting thread (client mode): 0x117bfc40
2025-11-04T02:22:27.614 [DEBUG] [Thread-126854] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:22:27.621 [DEBUG] [Thread-126854] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:22:27.622 [INFO] [Thread-126854] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:22:27.626 [DEBUG] [Thread-126854] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:22:27.626 [DEBUG] [Thread-126854] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:22:27.627 [DEBUG] [Thread-126854] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:22:27.627 [DEBUG] [Thread-126854] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:22:27.627 [DEBUG] [Thread-126854] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:22:27.627 [DEBUG] [Thread-126854] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:22:27.627 [DEBUG] [Thread-126854] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:22:27.627 [DEBUG] [Thread-126854] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:22:27.627 [DEBUG] [Thread-126854] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:22:27.627 [DEBUG] [Thread-126854] [transport.py] [_log()] client lang: <none>
2025-11-04T02:22:27.627 [DEBUG] [Thread-126854] [transport.py] [_log()] server lang: <none>
2025-11-04T02:22:27.627 [DEBUG] [Thread-126854] [transport.py] [_log()] kex follows: False
2025-11-04T02:22:27.627 [DEBUG] [Thread-126854] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:22:27.628 [DEBUG] [Thread-126854] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:22:27.628 [DEBUG] [Thread-126854] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:22:27.628 [DEBUG] [Thread-126854] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:22:27.628 [DEBUG] [Thread-126854] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:22:27.628 [DEBUG] [Thread-126854] [transport.py] [_log()] Compression: none
2025-11-04T02:22:27.628 [DEBUG] [Thread-126854] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:22:27.665 [DEBUG] [Thread-126854] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:22:27.671 [DEBUG] [Thread-126854] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:22:27.672 [DEBUG] [Thread-126854] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:22:27.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:22:27.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:22:27.676 [DEBUG] [Thread-126854] [transport.py] [_log()] userauth is OK
2025-11-04T02:22:27.676 [DEBUG] [Thread-126854] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:22:27.676 [DEBUG] [Thread-126854] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:22:27.676 [DEBUG] [Thread-126854] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:22:27.676 [DEBUG] [Thread-126854] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:22:27.699 [INFO] [Thread-126854] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:22:27.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:22:28.353 [DEBUG] [Thread-126854] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:22:28.354 [DEBUG] [Thread-126854] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:22:28.354 [DEBUG] [Thread-126854] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:22:28.395 [DEBUG] [Thread-126854] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:22:28.395 [DEBUG] [Thread-126854] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:22:28.398 [DEBUG] [Thread-126854] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:22:28.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:22:28.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:22:28.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:22:28.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:22:28.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:22:28.418 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:22:28.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:22:28.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:22:28.420 [DEBUG] [Thread-126854] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:22:28.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:22:28.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.015375 -999.00  +16.50  17.29     20   -6.50 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 18.0 17.3 319.4 20.9 16.9 -23.8 16.7 -22.8 16.5 -22.5 16.8 -23.2
2025-11-04T02:22:28.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:22:28.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:22:28.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.015375
2025-11-04T02:22:28.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:22:28.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:22:28.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:22:28.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:22:28.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:22:28.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:22:10', tmtdew=27.18, humidity=14.32, cloud=0.0, wind=20.56, temperature=16.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:22:11', seeing=1.1, atlas_timestamp='2025-11-04T00:22:08.400', atlas_cloud=1, atlas_rain=1, zp_data=[0.02674999999999983, 0.10975000000000179, 0.12124999999999986, 0.1144999999999996, 0.09950000000000081, 0.08525000000000027, 0.006999999999999673, 0.02725000000000044, 0.0730000000000004, 0.08300000000000018, 0.13724999999999987, 0.12650000000000006, 0.17199999999999882, 0.036249999999999005, 0.0019999999999988916, 0.0030000000000001137, 0.09474999999999945, 0.08349999999999902, 0.17049999999999876, 0.1347499999999986, 0.20999999999999908, -0.2112500000000015, 0.047750000000000625, 0.06274999999999942, 0.08999999999999986, 0.2320000000000011, 0.1437500000000007, 0.19599999999999973, 0.23599999999999977, -0.7624999999999993, 0.1479999999999997, 0.08700000000000152, 0.13625000000000043], zp_timestamp='2025-11-04T00:17:00')
2025-11-04T02:22:28.510 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:22:28.523 [DEBUG] [Thread-126857] [transport.py] [_log()] starting thread (client mode): 0xed077f0
2025-11-04T02:22:28.523 [DEBUG] [Thread-126857] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:22:28.538 [DEBUG] [Thread-126857] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:22:28.538 [INFO] [Thread-126857] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:22:28.547 [DEBUG] [Thread-126857] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:22:28.547 [DEBUG] [Thread-126857] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:22:28.547 [DEBUG] [Thread-126857] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:22:28.547 [DEBUG] [Thread-126857] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:22:28.547 [DEBUG] [Thread-126857] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:22:28.547 [DEBUG] [Thread-126857] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:22:28.547 [DEBUG] [Thread-126857] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:22:28.547 [DEBUG] [Thread-126857] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:22:28.547 [DEBUG] [Thread-126857] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:22:28.547 [DEBUG] [Thread-126857] [transport.py] [_log()] client lang: <none>
2025-11-04T02:22:28.547 [DEBUG] [Thread-126857] [transport.py] [_log()] server lang: <none>
2025-11-04T02:22:28.547 [DEBUG] [Thread-126857] [transport.py] [_log()] kex follows: False
2025-11-04T02:22:28.547 [DEBUG] [Thread-126857] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:22:28.547 [DEBUG] [Thread-126857] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:22:28.547 [DEBUG] [Thread-126857] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:22:28.547 [DEBUG] [Thread-126857] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:22:28.547 [DEBUG] [Thread-126857] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:22:28.547 [DEBUG] [Thread-126857] [transport.py] [_log()] Compression: none
2025-11-04T02:22:28.549 [DEBUG] [Thread-126857] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:22:28.604 [DEBUG] [Thread-126857] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:22:28.604 [DEBUG] [Thread-126857] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:22:28.604 [DEBUG] [Thread-126857] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:22:28.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:22:28.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:22:28.664 [DEBUG] [Thread-126857] [transport.py] [_log()] userauth is OK
2025-11-04T02:22:28.664 [DEBUG] [Thread-126857] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:22:28.664 [DEBUG] [Thread-126857] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:22:28.664 [DEBUG] [Thread-126857] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:22:28.664 [DEBUG] [Thread-126857] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:22:28.684 [INFO] [Thread-126857] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:22:28.684 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:22:28.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:22:29.564 [DEBUG] [Thread-126857] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:22:29.564 [DEBUG] [Thread-126857] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:22:29.612 [DEBUG] [Thread-126857] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:22:29.612 [DEBUG] [Thread-126857] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:22:29.621 [DEBUG] [Thread-126857] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:22:29.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:22:29.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:22:29.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:22:29.650 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:22:29.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:22:29.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:22:29.660 [DEBUG] [Thread-126857] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:22:32.358 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:22:34.914 [DEBUG] [Thread-126859 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:22:36.441 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:22:42.836 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:22:42.838 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:22:49.984 [DEBUG] [Thread-126860 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:22:59.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:22:59.686 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:22:59.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:22:59.919 [DEBUG] [Thread-126861 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:23:00.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 22, 43), 27.35, 14.36, 0.0, 22.37, 16.79, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:23:00.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:22:43
2025-11-04T02:23:00.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:23:01.093 [DEBUG] [Thread-126862] [transport.py] [_log()] starting thread (client mode): 0xed36b90
2025-11-04T02:23:01.094 [DEBUG] [Thread-126862] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:23:01.107 [DEBUG] [Thread-126862] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:23:01.107 [INFO] [Thread-126862] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:23:01.112 [DEBUG] [Thread-126862] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:23:01.112 [DEBUG] [Thread-126862] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:23:01.112 [DEBUG] [Thread-126862] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:23:01.113 [DEBUG] [Thread-126862] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:23:01.113 [DEBUG] [Thread-126862] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:23:01.113 [DEBUG] [Thread-126862] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:23:01.113 [DEBUG] [Thread-126862] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:23:01.113 [DEBUG] [Thread-126862] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:23:01.113 [DEBUG] [Thread-126862] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:23:01.113 [DEBUG] [Thread-126862] [transport.py] [_log()] client lang: <none>
2025-11-04T02:23:01.113 [DEBUG] [Thread-126862] [transport.py] [_log()] server lang: <none>
2025-11-04T02:23:01.113 [DEBUG] [Thread-126862] [transport.py] [_log()] kex follows: False
2025-11-04T02:23:01.114 [DEBUG] [Thread-126862] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:23:01.114 [DEBUG] [Thread-126862] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:23:01.115 [DEBUG] [Thread-126862] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:23:01.115 [DEBUG] [Thread-126862] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:23:01.115 [DEBUG] [Thread-126862] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:23:01.115 [DEBUG] [Thread-126862] [transport.py] [_log()] Compression: none
2025-11-04T02:23:01.115 [DEBUG] [Thread-126862] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:23:01.144 [DEBUG] [Thread-126862] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:23:01.149 [DEBUG] [Thread-126862] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:23:01.150 [DEBUG] [Thread-126862] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:23:01.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:23:01.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:23:01.154 [DEBUG] [Thread-126862] [transport.py] [_log()] userauth is OK
2025-11-04T02:23:01.154 [DEBUG] [Thread-126862] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:23:01.154 [DEBUG] [Thread-126862] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:23:01.154 [DEBUG] [Thread-126862] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:23:01.154 [DEBUG] [Thread-126862] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:23:01.178 [INFO] [Thread-126862] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:23:01.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:23:01.816 [DEBUG] [Thread-126862] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:23:01.816 [DEBUG] [Thread-126862] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:23:01.826 [DEBUG] [Thread-126862] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:23:01.858 [DEBUG] [Thread-126862] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:23:01.858 [DEBUG] [Thread-126862] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:23:01.862 [DEBUG] [Thread-126862] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:23:01.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:23:01.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:23:01.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:23:01.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:23:01.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:23:01.888 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:23:01.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:23:01.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:23:01.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:23:01.891 [DEBUG] [Thread-126862] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:23:01.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.015722 -999.00  +16.50  15.79     20   -6.40 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 15.9 15.8 326.6 20.8 16.9 -23.8 16.8 -22.9 16.5 -22.5 16.8 -23.4
2025-11-04T02:23:01.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:23:01.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:23:01.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.015722
2025-11-04T02:23:01.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:23:01.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:23:01.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:23:01.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:23:01.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:23:01.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:22:43', tmtdew=27.35, humidity=14.36, cloud=0.0, wind=22.37, temperature=16.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:22:44', seeing=1.1, atlas_timestamp='2025-11-04T00:22:38.381', atlas_cloud=1, atlas_rain=1, zp_data=[0.10575000000000045, 0.12725000000000009, 0.1257500000000018, 0.1355000000000004, 0.12449999999999939, 0.16875000000000107, 0.06599999999999895, 0.13125000000000142, 0.12199999999999989, 0.15300000000000047, 0.18825000000000003, 0.16499999999999915, 0.2259999999999991, 0.1432500000000001, 0.12099999999999866, 0.03849999999999909, 0.09224999999999994, 0.1014999999999997, 0.2419999999999991, 0.16075000000000017, 0.23449999999999704, -0.20425000000000182, 0.17025000000000112, 0.11374999999999957, 0.1509999999999998, 0.2665000000000006, 0.15075000000000038, 0.2635000000000005, 0.37100000000000044, -0.24099999999999966, 0.22500000000000142, 0.1700000000000017, 0.22774999999999856], zp_timestamp='2025-11-04T00:21:00')
2025-11-04T02:23:02.004 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:23:02.016 [DEBUG] [Thread-126865] [transport.py] [_log()] starting thread (client mode): 0x11798d90
2025-11-04T02:23:02.016 [DEBUG] [Thread-126865] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:23:02.034 [DEBUG] [Thread-126865] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:23:02.034 [INFO] [Thread-126865] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:23:02.042 [DEBUG] [Thread-126865] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:23:02.042 [DEBUG] [Thread-126865] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:23:02.042 [DEBUG] [Thread-126865] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:23:02.042 [DEBUG] [Thread-126865] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:23:02.042 [DEBUG] [Thread-126865] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:23:02.042 [DEBUG] [Thread-126865] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:23:02.042 [DEBUG] [Thread-126865] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:23:02.042 [DEBUG] [Thread-126865] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:23:02.042 [DEBUG] [Thread-126865] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:23:02.042 [DEBUG] [Thread-126865] [transport.py] [_log()] client lang: <none>
2025-11-04T02:23:02.042 [DEBUG] [Thread-126865] [transport.py] [_log()] server lang: <none>
2025-11-04T02:23:02.043 [DEBUG] [Thread-126865] [transport.py] [_log()] kex follows: False
2025-11-04T02:23:02.043 [DEBUG] [Thread-126865] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:23:02.043 [DEBUG] [Thread-126865] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:23:02.043 [DEBUG] [Thread-126865] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:23:02.043 [DEBUG] [Thread-126865] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:23:02.043 [DEBUG] [Thread-126865] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:23:02.043 [DEBUG] [Thread-126865] [transport.py] [_log()] Compression: none
2025-11-04T02:23:02.043 [DEBUG] [Thread-126865] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:23:02.102 [DEBUG] [Thread-126865] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:23:02.102 [DEBUG] [Thread-126865] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:23:02.103 [DEBUG] [Thread-126865] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:23:02.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:23:02.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:23:02.161 [DEBUG] [Thread-126865] [transport.py] [_log()] userauth is OK
2025-11-04T02:23:02.161 [DEBUG] [Thread-126865] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:23:02.161 [DEBUG] [Thread-126865] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:23:02.161 [DEBUG] [Thread-126865] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:23:02.161 [DEBUG] [Thread-126865] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:23:02.181 [INFO] [Thread-126865] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:23:02.181 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:23:02.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:23:03.044 [DEBUG] [Thread-126865] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:23:03.045 [DEBUG] [Thread-126865] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:23:03.091 [DEBUG] [Thread-126865] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:23:03.091 [DEBUG] [Thread-126865] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:23:03.099 [DEBUG] [Thread-126865] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:23:03.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:23:03.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:23:03.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:23:03.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:23:03.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:23:03.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:23:03.138 [DEBUG] [Thread-126865] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:23:05.032 [DEBUG] [Thread-126867 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:23:20.133 [DEBUG] [Thread-126868 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:23:33.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:23:33.170 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:23:33.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:23:34.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 23, 15), 27.32, 14.37, 0.0, 22.73, 16.71, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:23:34.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:23:15
2025-11-04T02:23:34.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:23:34.359 [DEBUG] [Thread-126869] [transport.py] [_log()] starting thread (client mode): 0x117993c0
2025-11-04T02:23:34.360 [DEBUG] [Thread-126869] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:23:34.372 [DEBUG] [Thread-126869] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:23:34.372 [INFO] [Thread-126869] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:23:34.377 [DEBUG] [Thread-126869] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:23:34.378 [DEBUG] [Thread-126869] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:23:34.378 [DEBUG] [Thread-126869] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:23:34.378 [DEBUG] [Thread-126869] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:23:34.378 [DEBUG] [Thread-126869] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:23:34.378 [DEBUG] [Thread-126869] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:23:34.378 [DEBUG] [Thread-126869] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:23:34.379 [DEBUG] [Thread-126869] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:23:34.379 [DEBUG] [Thread-126869] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:23:34.379 [DEBUG] [Thread-126869] [transport.py] [_log()] client lang: <none>
2025-11-04T02:23:34.379 [DEBUG] [Thread-126869] [transport.py] [_log()] server lang: <none>
2025-11-04T02:23:34.379 [DEBUG] [Thread-126869] [transport.py] [_log()] kex follows: False
2025-11-04T02:23:34.379 [DEBUG] [Thread-126869] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:23:34.380 [DEBUG] [Thread-126869] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:23:34.380 [DEBUG] [Thread-126869] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:23:34.380 [DEBUG] [Thread-126869] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:23:34.380 [DEBUG] [Thread-126869] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:23:34.381 [DEBUG] [Thread-126869] [transport.py] [_log()] Compression: none
2025-11-04T02:23:34.381 [DEBUG] [Thread-126869] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:23:34.425 [DEBUG] [Thread-126869] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:23:34.430 [DEBUG] [Thread-126869] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:23:34.432 [DEBUG] [Thread-126869] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:23:34.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:23:34.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:23:34.437 [DEBUG] [Thread-126869] [transport.py] [_log()] userauth is OK
2025-11-04T02:23:34.437 [DEBUG] [Thread-126869] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:23:34.438 [DEBUG] [Thread-126869] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:23:34.438 [DEBUG] [Thread-126869] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:23:34.438 [DEBUG] [Thread-126869] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:23:34.464 [INFO] [Thread-126869] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:23:34.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:23:35.038 [DEBUG] [Thread-126869] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:23:35.039 [DEBUG] [Thread-126869] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:23:35.049 [DEBUG] [Thread-126869] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:23:35.080 [DEBUG] [Thread-126869] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:23:35.081 [DEBUG] [Thread-126869] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:23:35.084 [DEBUG] [Thread-126869] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:23:35.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:23:35.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:23:35.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:23:35.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:23:35.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:23:35.113 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:23:35.113 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:23:35.113 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:23:35.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:23:35.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.016070 -999.00  +16.40  16.91     20   -6.40 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 16.6 16.9 320.8 21.9 16.8 -23.8 16.8 -23.0 16.5 -22.4 16.8 -23.4
2025-11-04T02:23:35.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:23:35.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:23:35.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.016070
2025-11-04T02:23:35.121 [DEBUG] [Thread-126869] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:23:35.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:23:35.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:23:35.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:23:35.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:23:35.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:23:35.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:23:15', tmtdew=27.32, humidity=14.37, cloud=0.0, wind=22.73, temperature=16.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:23:16', seeing=1.1, atlas_timestamp='2025-11-04T00:23:08.448', atlas_cloud=1, atlas_rain=1, zp_data=[0.10575000000000045, 0.12725000000000009, 0.1257500000000018, 0.1355000000000004, 0.12449999999999939, 0.16875000000000107, 0.06599999999999895, 0.13125000000000142, 0.12199999999999989, 0.15300000000000047, 0.18825000000000003, 0.16499999999999915, 0.2259999999999991, 0.1432500000000001, 0.12099999999999866, 0.03849999999999909, 0.09224999999999994, 0.1014999999999997, 0.2419999999999991, 0.16075000000000017, 0.23449999999999704, -0.20425000000000182, 0.17025000000000112, 0.11374999999999957, 0.1509999999999998, 0.2665000000000006, 0.15075000000000038, 0.2635000000000005, 0.37100000000000044, -0.24099999999999966, 0.22500000000000142, 0.1700000000000017, 0.22774999999999856], zp_timestamp='2025-11-04T00:21:00')
2025-11-04T02:23:35.193 [DEBUG] [Thread-126872 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:23:35.237 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:23:35.248 [DEBUG] [Thread-126873] [transport.py] [_log()] starting thread (client mode): 0x11798f40
2025-11-04T02:23:35.248 [DEBUG] [Thread-126873] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:23:35.263 [DEBUG] [Thread-126873] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:23:35.263 [INFO] [Thread-126873] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:23:35.271 [DEBUG] [Thread-126873] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:23:35.271 [DEBUG] [Thread-126873] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:23:35.271 [DEBUG] [Thread-126873] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:23:35.271 [DEBUG] [Thread-126873] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:23:35.271 [DEBUG] [Thread-126873] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:23:35.272 [DEBUG] [Thread-126873] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:23:35.272 [DEBUG] [Thread-126873] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:23:35.272 [DEBUG] [Thread-126873] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:23:35.272 [DEBUG] [Thread-126873] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:23:35.272 [DEBUG] [Thread-126873] [transport.py] [_log()] client lang: <none>
2025-11-04T02:23:35.272 [DEBUG] [Thread-126873] [transport.py] [_log()] server lang: <none>
2025-11-04T02:23:35.272 [DEBUG] [Thread-126873] [transport.py] [_log()] kex follows: False
2025-11-04T02:23:35.272 [DEBUG] [Thread-126873] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:23:35.272 [DEBUG] [Thread-126873] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:23:35.273 [DEBUG] [Thread-126873] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:23:35.273 [DEBUG] [Thread-126873] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:23:35.273 [DEBUG] [Thread-126873] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:23:35.273 [DEBUG] [Thread-126873] [transport.py] [_log()] Compression: none
2025-11-04T02:23:35.273 [DEBUG] [Thread-126873] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:23:35.328 [DEBUG] [Thread-126873] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:23:35.329 [DEBUG] [Thread-126873] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:23:35.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:23:35.330 [DEBUG] [Thread-126873] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:23:35.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:23:35.385 [DEBUG] [Thread-126873] [transport.py] [_log()] userauth is OK
2025-11-04T02:23:35.385 [DEBUG] [Thread-126873] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:23:35.385 [DEBUG] [Thread-126873] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:23:35.385 [DEBUG] [Thread-126873] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:23:35.385 [DEBUG] [Thread-126873] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:23:35.404 [INFO] [Thread-126873] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:23:35.405 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:23:35.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:23:36.239 [DEBUG] [Thread-126873] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:23:36.240 [DEBUG] [Thread-126873] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:23:36.287 [DEBUG] [Thread-126873] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:23:36.287 [DEBUG] [Thread-126873] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:23:36.297 [DEBUG] [Thread-126873] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:23:36.306 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:23:36.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:23:36.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:23:36.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:23:36.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:23:36.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:23:36.337 [DEBUG] [Thread-126873] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:23:43.050 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:23:43.052 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:23:50.294 [DEBUG] [Thread-126875 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:24:00.019 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:24:00.299 [DEBUG] [Thread-126876 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:24:05.330 [DEBUG] [Thread-126877 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:24:06.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:24:06.363 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:24:06.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:24:07.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 23, 48), 27.2, 14.39, 0.0, 20.2, 16.57, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:24:07.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:23:48
2025-11-04T02:24:07.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:24:07.502 [DEBUG] [Thread-126878] [transport.py] [_log()] starting thread (client mode): 0xedc7a60
2025-11-04T02:24:07.504 [DEBUG] [Thread-126878] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:24:07.517 [DEBUG] [Thread-126878] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:24:07.517 [INFO] [Thread-126878] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:24:07.521 [DEBUG] [Thread-126878] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:24:07.522 [DEBUG] [Thread-126878] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:24:07.522 [DEBUG] [Thread-126878] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:24:07.522 [DEBUG] [Thread-126878] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:24:07.522 [DEBUG] [Thread-126878] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:24:07.522 [DEBUG] [Thread-126878] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:24:07.522 [DEBUG] [Thread-126878] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:24:07.522 [DEBUG] [Thread-126878] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:24:07.522 [DEBUG] [Thread-126878] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:24:07.522 [DEBUG] [Thread-126878] [transport.py] [_log()] client lang: <none>
2025-11-04T02:24:07.523 [DEBUG] [Thread-126878] [transport.py] [_log()] server lang: <none>
2025-11-04T02:24:07.523 [DEBUG] [Thread-126878] [transport.py] [_log()] kex follows: False
2025-11-04T02:24:07.523 [DEBUG] [Thread-126878] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:24:07.524 [DEBUG] [Thread-126878] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:24:07.524 [DEBUG] [Thread-126878] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:24:07.524 [DEBUG] [Thread-126878] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:24:07.524 [DEBUG] [Thread-126878] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:24:07.524 [DEBUG] [Thread-126878] [transport.py] [_log()] Compression: none
2025-11-04T02:24:07.524 [DEBUG] [Thread-126878] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:24:07.562 [DEBUG] [Thread-126878] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:24:07.567 [DEBUG] [Thread-126878] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:24:07.569 [DEBUG] [Thread-126878] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:24:07.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:24:07.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:24:07.574 [DEBUG] [Thread-126878] [transport.py] [_log()] userauth is OK
2025-11-04T02:24:07.574 [DEBUG] [Thread-126878] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:24:07.575 [DEBUG] [Thread-126878] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:24:07.575 [DEBUG] [Thread-126878] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:24:07.575 [DEBUG] [Thread-126878] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:24:07.601 [INFO] [Thread-126878] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:24:07.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:24:08.246 [DEBUG] [Thread-126878] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:24:08.255 [DEBUG] [Thread-126878] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:24:08.256 [DEBUG] [Thread-126878] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:24:08.286 [DEBUG] [Thread-126878] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:24:08.286 [DEBUG] [Thread-126878] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:24:08.289 [DEBUG] [Thread-126878] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:24:08.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:24:08.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:24:08.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:24:08.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:24:08.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:24:08.308 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:24:08.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:24:08.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:24:08.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:24:08.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.016417 -999.00  +16.40  17.32     20   -6.50 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 16.7 17.3 320.2 20.2 16.8 -23.7 16.8 -22.9 16.6 -22.4 16.8 -23.3
2025-11-04T02:24:08.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:24:08.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:24:08.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.016417
2025-11-04T02:24:08.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:24:08.324 [DEBUG] [Thread-126878] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:24:08.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:24:08.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:24:08.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:24:08.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:24:08.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:23:48', tmtdew=27.2, humidity=14.39, cloud=0.0, wind=20.2, temperature=16.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:23:49', seeing=1.1, atlas_timestamp='2025-11-04T00:23:38.429', atlas_cloud=1, atlas_rain=1, zp_data=[0.10575000000000045, 0.12725000000000009, 0.1257500000000018, 0.1355000000000004, 0.12449999999999939, 0.16875000000000107, 0.06599999999999895, 0.13125000000000142, 0.12199999999999989, 0.15300000000000047, 0.18825000000000003, 0.16499999999999915, 0.2259999999999991, 0.1432500000000001, 0.12099999999999866, 0.03849999999999909, 0.09224999999999994, 0.1014999999999997, 0.2419999999999991, 0.16075000000000017, 0.23449999999999704, -0.20425000000000182, 0.17025000000000112, 0.11374999999999957, 0.1509999999999998, 0.2665000000000006, 0.15075000000000038, 0.2635000000000005, 0.37100000000000044, -0.24099999999999966, 0.22500000000000142, 0.1700000000000017, 0.22774999999999856], zp_timestamp='2025-11-04T00:21:00')
2025-11-04T02:24:08.398 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:24:08.411 [DEBUG] [Thread-126881] [transport.py] [_log()] starting thread (client mode): 0x8199330
2025-11-04T02:24:08.411 [DEBUG] [Thread-126881] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:24:08.426 [DEBUG] [Thread-126881] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:24:08.426 [INFO] [Thread-126881] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:24:08.434 [DEBUG] [Thread-126881] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:24:08.435 [DEBUG] [Thread-126881] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:24:08.435 [DEBUG] [Thread-126881] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:24:08.435 [DEBUG] [Thread-126881] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:24:08.435 [DEBUG] [Thread-126881] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:24:08.435 [DEBUG] [Thread-126881] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:24:08.435 [DEBUG] [Thread-126881] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:24:08.435 [DEBUG] [Thread-126881] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:24:08.435 [DEBUG] [Thread-126881] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:24:08.435 [DEBUG] [Thread-126881] [transport.py] [_log()] client lang: <none>
2025-11-04T02:24:08.435 [DEBUG] [Thread-126881] [transport.py] [_log()] server lang: <none>
2025-11-04T02:24:08.435 [DEBUG] [Thread-126881] [transport.py] [_log()] kex follows: False
2025-11-04T02:24:08.435 [DEBUG] [Thread-126881] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:24:08.435 [DEBUG] [Thread-126881] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:24:08.435 [DEBUG] [Thread-126881] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:24:08.435 [DEBUG] [Thread-126881] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:24:08.435 [DEBUG] [Thread-126881] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:24:08.435 [DEBUG] [Thread-126881] [transport.py] [_log()] Compression: none
2025-11-04T02:24:08.435 [DEBUG] [Thread-126881] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:24:08.492 [DEBUG] [Thread-126881] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:24:08.492 [DEBUG] [Thread-126881] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:24:08.492 [DEBUG] [Thread-126881] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:24:08.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:24:08.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:24:08.548 [DEBUG] [Thread-126881] [transport.py] [_log()] userauth is OK
2025-11-04T02:24:08.548 [DEBUG] [Thread-126881] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:24:08.548 [DEBUG] [Thread-126881] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:24:08.548 [DEBUG] [Thread-126881] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:24:08.548 [DEBUG] [Thread-126881] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:24:08.562 [INFO] [Thread-126881] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:24:08.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:24:08.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:24:09.404 [DEBUG] [Thread-126881] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:24:09.404 [DEBUG] [Thread-126881] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:24:09.443 [DEBUG] [Thread-126881] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:24:09.443 [DEBUG] [Thread-126881] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:24:09.452 [DEBUG] [Thread-126881] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:24:09.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:24:09.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:24:09.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:24:09.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:24:09.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:24:09.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:24:09.485 [DEBUG] [Thread-126881] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:24:20.365 [DEBUG] [Thread-126883 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:24:23.318 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:24:27.523 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:24:35.451 [DEBUG] [Thread-126884 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:24:39.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:24:39.518 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:24:39.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:24:40.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 24, 21), 27.21, 14.39, 0.0, 20.75, 16.61, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:24:40.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:24:21
2025-11-04T02:24:40.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:24:40.593 [DEBUG] [Thread-126885] [transport.py] [_log()] starting thread (client mode): 0x117be9b0
2025-11-04T02:24:40.594 [DEBUG] [Thread-126885] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:24:40.609 [DEBUG] [Thread-126885] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:24:40.609 [INFO] [Thread-126885] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:24:40.613 [DEBUG] [Thread-126885] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:24:40.613 [DEBUG] [Thread-126885] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:24:40.613 [DEBUG] [Thread-126885] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:24:40.614 [DEBUG] [Thread-126885] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:24:40.614 [DEBUG] [Thread-126885] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:24:40.614 [DEBUG] [Thread-126885] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:24:40.614 [DEBUG] [Thread-126885] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:24:40.614 [DEBUG] [Thread-126885] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:24:40.614 [DEBUG] [Thread-126885] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:24:40.614 [DEBUG] [Thread-126885] [transport.py] [_log()] client lang: <none>
2025-11-04T02:24:40.614 [DEBUG] [Thread-126885] [transport.py] [_log()] server lang: <none>
2025-11-04T02:24:40.614 [DEBUG] [Thread-126885] [transport.py] [_log()] kex follows: False
2025-11-04T02:24:40.615 [DEBUG] [Thread-126885] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:24:40.615 [DEBUG] [Thread-126885] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:24:40.615 [DEBUG] [Thread-126885] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:24:40.615 [DEBUG] [Thread-126885] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:24:40.616 [DEBUG] [Thread-126885] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:24:40.616 [DEBUG] [Thread-126885] [transport.py] [_log()] Compression: none
2025-11-04T02:24:40.616 [DEBUG] [Thread-126885] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:24:40.649 [DEBUG] [Thread-126885] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:24:40.653 [DEBUG] [Thread-126885] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:24:40.655 [DEBUG] [Thread-126885] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:24:40.657 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:24:40.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:24:40.660 [DEBUG] [Thread-126885] [transport.py] [_log()] userauth is OK
2025-11-04T02:24:40.661 [DEBUG] [Thread-126885] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:24:40.661 [DEBUG] [Thread-126885] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:24:40.661 [DEBUG] [Thread-126885] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:24:40.661 [DEBUG] [Thread-126885] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:24:40.687 [INFO] [Thread-126885] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:24:40.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:24:41.310 [DEBUG] [Thread-126885] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:24:41.310 [DEBUG] [Thread-126885] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:24:41.310 [DEBUG] [Thread-126885] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:24:41.351 [DEBUG] [Thread-126885] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:24:41.351 [DEBUG] [Thread-126885] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:24:41.353 [DEBUG] [Thread-126885] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:24:41.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:24:41.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:24:41.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:24:41.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:24:41.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:24:41.374 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:24:41.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:24:41.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:24:41.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:24:41.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.016764 -999.00  +16.50  19.07     20   -6.50 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 21.9 19.1 315.2 20.7 16.8 -23.7 16.8 -22.8 16.5 -22.4 16.8 -23.5
2025-11-04T02:24:41.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:24:41.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:24:41.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.016764
2025-11-04T02:24:41.381 [DEBUG] [Thread-126885] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:24:41.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:24:41.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:24:41.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:24:41.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:24:41.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:24:41.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:24:21', tmtdew=27.21, humidity=14.39, cloud=0.0, wind=20.75, temperature=16.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:24:21', seeing=1.02, atlas_timestamp='2025-11-04T00:24:08.410', atlas_cloud=1, atlas_rain=1, zp_data=[0.10575000000000045, 0.12725000000000009, 0.1257500000000018, 0.1355000000000004, 0.12449999999999939, 0.16875000000000107, 0.06599999999999895, 0.13125000000000142, 0.12199999999999989, 0.15300000000000047, 0.18825000000000003, 0.16499999999999915, 0.2259999999999991, 0.1432500000000001, 0.12099999999999866, 0.03849999999999909, 0.09224999999999994, 0.1014999999999997, 0.2419999999999991, 0.16075000000000017, 0.23449999999999704, -0.20425000000000182, 0.17025000000000112, 0.11374999999999957, 0.1509999999999998, 0.2665000000000006, 0.15075000000000038, 0.2635000000000005, 0.37100000000000044, -0.24099999999999966, 0.22500000000000142, 0.1700000000000017, 0.22774999999999856], zp_timestamp='2025-11-04T00:21:00')
2025-11-04T02:24:41.460 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:24:41.473 [DEBUG] [Thread-126888] [transport.py] [_log()] starting thread (client mode): 0xed20c70
2025-11-04T02:24:41.473 [DEBUG] [Thread-126888] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:24:41.487 [DEBUG] [Thread-126888] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:24:41.488 [INFO] [Thread-126888] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:24:41.496 [DEBUG] [Thread-126888] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:24:41.496 [DEBUG] [Thread-126888] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:24:41.496 [DEBUG] [Thread-126888] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:24:41.496 [DEBUG] [Thread-126888] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:24:41.496 [DEBUG] [Thread-126888] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:24:41.496 [DEBUG] [Thread-126888] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:24:41.496 [DEBUG] [Thread-126888] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:24:41.496 [DEBUG] [Thread-126888] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:24:41.496 [DEBUG] [Thread-126888] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:24:41.496 [DEBUG] [Thread-126888] [transport.py] [_log()] client lang: <none>
2025-11-04T02:24:41.496 [DEBUG] [Thread-126888] [transport.py] [_log()] server lang: <none>
2025-11-04T02:24:41.496 [DEBUG] [Thread-126888] [transport.py] [_log()] kex follows: False
2025-11-04T02:24:41.496 [DEBUG] [Thread-126888] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:24:41.496 [DEBUG] [Thread-126888] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:24:41.496 [DEBUG] [Thread-126888] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:24:41.496 [DEBUG] [Thread-126888] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:24:41.496 [DEBUG] [Thread-126888] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:24:41.496 [DEBUG] [Thread-126888] [transport.py] [_log()] Compression: none
2025-11-04T02:24:41.496 [DEBUG] [Thread-126888] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:24:41.550 [DEBUG] [Thread-126888] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:24:41.550 [DEBUG] [Thread-126888] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:24:41.550 [DEBUG] [Thread-126888] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:24:41.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:24:41.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:24:41.609 [DEBUG] [Thread-126888] [transport.py] [_log()] userauth is OK
2025-11-04T02:24:41.609 [DEBUG] [Thread-126888] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:24:41.609 [DEBUG] [Thread-126888] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:24:41.609 [DEBUG] [Thread-126888] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:24:41.609 [DEBUG] [Thread-126888] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:24:41.627 [INFO] [Thread-126888] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:24:41.636 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:24:41.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:24:42.422 [DEBUG] [Thread-126888] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:24:42.422 [DEBUG] [Thread-126888] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:24:42.463 [DEBUG] [Thread-126888] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:24:42.463 [DEBUG] [Thread-126888] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:24:42.472 [DEBUG] [Thread-126888] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:24:42.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:24:42.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:24:42.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:24:42.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:24:42.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:24:42.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:24:42.510 [DEBUG] [Thread-126888] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:24:43.263 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:24:43.264 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:24:50.489 [DEBUG] [Thread-126890 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:25:00.649 [DEBUG] [Thread-126891 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:25:05.569 [DEBUG] [Thread-126892 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:25:12.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:25:12.531 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:25:12.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:25:13.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 24, 53), 27.21, 14.37, 0.0, 18.88, 16.56, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:25:13.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:24:53
2025-11-04T02:25:13.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:25:13.533 [DEBUG] [Thread-126893] [transport.py] [_log()] starting thread (client mode): 0xed21750
2025-11-04T02:25:13.533 [DEBUG] [Thread-126893] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:25:13.545 [DEBUG] [Thread-126893] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:25:13.545 [INFO] [Thread-126893] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:25:13.548 [DEBUG] [Thread-126893] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:25:13.548 [DEBUG] [Thread-126893] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:25:13.548 [DEBUG] [Thread-126893] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:25:13.548 [DEBUG] [Thread-126893] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:25:13.548 [DEBUG] [Thread-126893] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:25:13.548 [DEBUG] [Thread-126893] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:25:13.548 [DEBUG] [Thread-126893] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:25:13.548 [DEBUG] [Thread-126893] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:25:13.548 [DEBUG] [Thread-126893] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:25:13.548 [DEBUG] [Thread-126893] [transport.py] [_log()] client lang: <none>
2025-11-04T02:25:13.548 [DEBUG] [Thread-126893] [transport.py] [_log()] server lang: <none>
2025-11-04T02:25:13.548 [DEBUG] [Thread-126893] [transport.py] [_log()] kex follows: False
2025-11-04T02:25:13.548 [DEBUG] [Thread-126893] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:25:13.548 [DEBUG] [Thread-126893] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:25:13.549 [DEBUG] [Thread-126893] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:25:13.549 [DEBUG] [Thread-126893] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:25:13.549 [DEBUG] [Thread-126893] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:25:13.549 [DEBUG] [Thread-126893] [transport.py] [_log()] Compression: none
2025-11-04T02:25:13.549 [DEBUG] [Thread-126893] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:25:13.571 [DEBUG] [Thread-126893] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:25:13.573 [DEBUG] [Thread-126893] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:25:13.574 [DEBUG] [Thread-126893] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:25:13.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:25:13.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:25:13.575 [DEBUG] [Thread-126893] [transport.py] [_log()] userauth is OK
2025-11-04T02:25:13.575 [DEBUG] [Thread-126893] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:25:13.575 [DEBUG] [Thread-126893] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:25:13.575 [DEBUG] [Thread-126893] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:25:13.575 [DEBUG] [Thread-126893] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:25:13.593 [INFO] [Thread-126893] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:25:13.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:25:14.717 [DEBUG] [Thread-126893] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:25:14.717 [DEBUG] [Thread-126893] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:25:14.717 [DEBUG] [Thread-126893] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:25:14.758 [DEBUG] [Thread-126893] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:25:14.758 [DEBUG] [Thread-126893] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:25:14.760 [DEBUG] [Thread-126893] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:25:14.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:25:14.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:25:14.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:25:14.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:25:14.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:25:14.778 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:25:14.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:25:14.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:25:14.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:25:14.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.016764 -999.00  +16.50  19.07     20   -6.50 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 21.9 19.1 315.2 20.7 16.8 -23.7 16.8 -22.8 16.5 -22.4 16.8 -23.5
2025-11-04T02:25:14.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:25:14.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:25:14.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.016764
2025-11-04T02:25:14.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:25:14.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:25:14.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:25:14.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:25:14.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:25:14.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:24:53', tmtdew=27.21, humidity=14.37, cloud=0.0, wind=18.88, temperature=16.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:24:55', seeing=1.02, atlas_timestamp='2025-11-04T00:24:08.410', atlas_cloud=1, atlas_rain=1, zp_data=[0.10575000000000045, 0.12725000000000009, 0.1257500000000018, 0.1355000000000004, 0.12449999999999939, 0.16875000000000107, 0.06599999999999895, 0.13125000000000142, 0.12199999999999989, 0.15300000000000047, 0.18825000000000003, 0.16499999999999915, 0.2259999999999991, 0.1432500000000001, 0.12099999999999866, 0.03849999999999909, 0.09224999999999994, 0.1014999999999997, 0.2419999999999991, 0.16075000000000017, 0.23449999999999704, -0.20425000000000182, 0.17025000000000112, 0.11374999999999957, 0.1509999999999998, 0.2665000000000006, 0.15075000000000038, 0.2635000000000005, 0.37100000000000044, -0.24099999999999966, 0.22500000000000142, 0.1700000000000017, 0.22774999999999856], zp_timestamp='2025-11-04T00:21:00')
2025-11-04T02:25:14.783 [DEBUG] [Thread-126893] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:25:14.857 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:25:14.870 [DEBUG] [Thread-126896] [transport.py] [_log()] starting thread (client mode): 0xedc6860
2025-11-04T02:25:14.870 [DEBUG] [Thread-126896] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:25:14.884 [DEBUG] [Thread-126896] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:25:14.884 [INFO] [Thread-126896] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:25:14.892 [DEBUG] [Thread-126896] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:25:14.892 [DEBUG] [Thread-126896] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:25:14.892 [DEBUG] [Thread-126896] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:25:14.892 [DEBUG] [Thread-126896] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:25:14.892 [DEBUG] [Thread-126896] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:25:14.892 [DEBUG] [Thread-126896] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:25:14.892 [DEBUG] [Thread-126896] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:25:14.892 [DEBUG] [Thread-126896] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:25:14.892 [DEBUG] [Thread-126896] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:25:14.892 [DEBUG] [Thread-126896] [transport.py] [_log()] client lang: <none>
2025-11-04T02:25:14.892 [DEBUG] [Thread-126896] [transport.py] [_log()] server lang: <none>
2025-11-04T02:25:14.892 [DEBUG] [Thread-126896] [transport.py] [_log()] kex follows: False
2025-11-04T02:25:14.892 [DEBUG] [Thread-126896] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:25:14.892 [DEBUG] [Thread-126896] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:25:14.892 [DEBUG] [Thread-126896] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:25:14.892 [DEBUG] [Thread-126896] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:25:14.892 [DEBUG] [Thread-126896] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:25:14.893 [DEBUG] [Thread-126896] [transport.py] [_log()] Compression: none
2025-11-04T02:25:14.893 [DEBUG] [Thread-126896] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:25:14.952 [DEBUG] [Thread-126896] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:25:14.952 [DEBUG] [Thread-126896] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:25:14.952 [DEBUG] [Thread-126896] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:25:14.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:25:14.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:25:15.012 [DEBUG] [Thread-126896] [transport.py] [_log()] userauth is OK
2025-11-04T02:25:15.012 [DEBUG] [Thread-126896] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:25:15.012 [DEBUG] [Thread-126896] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:25:15.012 [DEBUG] [Thread-126896] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:25:15.012 [DEBUG] [Thread-126896] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:25:15.026 [INFO] [Thread-126896] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:25:15.026 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:25:15.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:25:15.870 [DEBUG] [Thread-126896] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:25:15.870 [DEBUG] [Thread-126896] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:25:15.910 [DEBUG] [Thread-126896] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:25:15.910 [DEBUG] [Thread-126896] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:25:15.919 [DEBUG] [Thread-126896] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:25:15.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:25:15.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:25:15.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:25:15.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:25:15.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:25:15.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:25:15.952 [DEBUG] [Thread-126896] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:25:20.596 [DEBUG] [Thread-126898 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:25:35.694 [DEBUG] [Thread-126899 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:25:43.477 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:25:43.479 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:25:45.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:25:45.977 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:25:45.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:25:46.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 25, 27), 27.19, 14.41, 0.0, 18.88, 16.57, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:25:46.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:25:27
2025-11-04T02:25:47.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:25:47.313 [DEBUG] [Thread-126900] [transport.py] [_log()] starting thread (client mode): 0xedc7730
2025-11-04T02:25:47.315 [DEBUG] [Thread-126900] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:25:47.327 [DEBUG] [Thread-126900] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:25:47.327 [INFO] [Thread-126900] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:25:47.333 [DEBUG] [Thread-126900] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:25:47.333 [DEBUG] [Thread-126900] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:25:47.333 [DEBUG] [Thread-126900] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:25:47.333 [DEBUG] [Thread-126900] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:25:47.333 [DEBUG] [Thread-126900] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:25:47.333 [DEBUG] [Thread-126900] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:25:47.333 [DEBUG] [Thread-126900] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:25:47.333 [DEBUG] [Thread-126900] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:25:47.333 [DEBUG] [Thread-126900] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:25:47.334 [DEBUG] [Thread-126900] [transport.py] [_log()] client lang: <none>
2025-11-04T02:25:47.334 [DEBUG] [Thread-126900] [transport.py] [_log()] server lang: <none>
2025-11-04T02:25:47.334 [DEBUG] [Thread-126900] [transport.py] [_log()] kex follows: False
2025-11-04T02:25:47.334 [DEBUG] [Thread-126900] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:25:47.335 [DEBUG] [Thread-126900] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:25:47.335 [DEBUG] [Thread-126900] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:25:47.335 [DEBUG] [Thread-126900] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:25:47.335 [DEBUG] [Thread-126900] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:25:47.335 [DEBUG] [Thread-126900] [transport.py] [_log()] Compression: none
2025-11-04T02:25:47.335 [DEBUG] [Thread-126900] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:25:47.374 [DEBUG] [Thread-126900] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:25:47.380 [DEBUG] [Thread-126900] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:25:47.383 [DEBUG] [Thread-126900] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:25:47.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:25:47.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:25:47.388 [DEBUG] [Thread-126900] [transport.py] [_log()] userauth is OK
2025-11-04T02:25:47.388 [DEBUG] [Thread-126900] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:25:47.388 [DEBUG] [Thread-126900] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:25:47.389 [DEBUG] [Thread-126900] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:25:47.389 [DEBUG] [Thread-126900] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:25:47.429 [INFO] [Thread-126900] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:25:47.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:25:48.094 [DEBUG] [Thread-126900] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:25:48.094 [DEBUG] [Thread-126900] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:25:48.105 [DEBUG] [Thread-126900] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:25:48.135 [DEBUG] [Thread-126900] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:25:48.136 [DEBUG] [Thread-126900] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:25:48.139 [DEBUG] [Thread-126900] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:25:48.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:25:48.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:25:48.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:25:48.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:25:48.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:25:48.168 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:25:48.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:25:48.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:25:48.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:25:48.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.017458 -999.00  +16.50  20.87     19   -6.50 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 23.6 20.9 311.8 23.8 16.9 -23.8 16.8 -22.7 16.6 -22.4 16.8 -23.5
2025-11-04T02:25:48.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:25:48.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:25:48.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.017458
2025-11-04T02:25:48.176 [DEBUG] [Thread-126900] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:25:48.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:25:48.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:25:48.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:25:48.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:25:48.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:25:48.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:25:27', tmtdew=27.19, humidity=14.41, cloud=0.0, wind=18.88, temperature=16.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:25:28', seeing=1.11, atlas_timestamp='2025-11-04T00:25:08.371', atlas_cloud=1, atlas_rain=1, zp_data=[0.019249999999999545, 0.03275000000000006, 0.047250000000000014, 0.0779999999999994, 0.050499999999999545, 0.12125000000000163, 0.004999999999999005, 0.04125000000000156, 0.050499999999999545, 0.08500000000000085, 0.11624999999999908, 0.03700000000000081, 0.19699999999999918, -0.01875000000000071, 0.0030000000000001137, -0.028999999999999915, 0.08724999999999916, 0.05799999999999983, 0.17849999999999966, 0.09474999999999767, 0.1789999999999985, -0.20575000000000188, 0.10725000000000051, 0.0337499999999995, 0.07199999999999918, 0.15799999999999947, 0.09274999999999878, 0.2104999999999997, 0.32200000000000006, -0.4029999999999987, 0.1440000000000019, 0.0705000000000009, 0.16774999999999984], zp_timestamp='2025-11-04T00:24:00')
2025-11-04T02:25:48.278 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:25:48.293 [DEBUG] [Thread-126903] [transport.py] [_log()] starting thread (client mode): 0xedc6f20
2025-11-04T02:25:48.293 [DEBUG] [Thread-126903] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:25:48.307 [DEBUG] [Thread-126903] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:25:48.308 [INFO] [Thread-126903] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:25:48.316 [DEBUG] [Thread-126903] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:25:48.316 [DEBUG] [Thread-126903] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:25:48.316 [DEBUG] [Thread-126903] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:25:48.316 [DEBUG] [Thread-126903] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:25:48.316 [DEBUG] [Thread-126903] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:25:48.316 [DEBUG] [Thread-126903] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:25:48.316 [DEBUG] [Thread-126903] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:25:48.316 [DEBUG] [Thread-126903] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:25:48.316 [DEBUG] [Thread-126903] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:25:48.316 [DEBUG] [Thread-126903] [transport.py] [_log()] client lang: <none>
2025-11-04T02:25:48.316 [DEBUG] [Thread-126903] [transport.py] [_log()] server lang: <none>
2025-11-04T02:25:48.316 [DEBUG] [Thread-126903] [transport.py] [_log()] kex follows: False
2025-11-04T02:25:48.316 [DEBUG] [Thread-126903] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:25:48.316 [DEBUG] [Thread-126903] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:25:48.316 [DEBUG] [Thread-126903] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:25:48.316 [DEBUG] [Thread-126903] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:25:48.316 [DEBUG] [Thread-126903] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:25:48.316 [DEBUG] [Thread-126903] [transport.py] [_log()] Compression: none
2025-11-04T02:25:48.316 [DEBUG] [Thread-126903] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:25:48.375 [DEBUG] [Thread-126903] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:25:48.376 [DEBUG] [Thread-126903] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:25:48.376 [DEBUG] [Thread-126903] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:25:48.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:25:48.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:25:48.432 [DEBUG] [Thread-126903] [transport.py] [_log()] userauth is OK
2025-11-04T02:25:48.432 [DEBUG] [Thread-126903] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:25:48.432 [DEBUG] [Thread-126903] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:25:48.432 [DEBUG] [Thread-126903] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:25:48.432 [DEBUG] [Thread-126903] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:25:48.446 [INFO] [Thread-126903] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:25:48.447 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:25:48.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:25:49.312 [DEBUG] [Thread-126903] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:25:49.312 [DEBUG] [Thread-126903] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:25:49.360 [DEBUG] [Thread-126903] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:25:49.360 [DEBUG] [Thread-126903] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:25:49.369 [DEBUG] [Thread-126903] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:25:49.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:25:49.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:25:49.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:25:49.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:25:49.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:25:49.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:25:49.408 [DEBUG] [Thread-126903] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:25:50.062 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:25:50.740 [DEBUG] [Thread-126905 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:26:00.275 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:26:01.029 [DEBUG] [Thread-126906 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:26:04.347 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:26:05.845 [DEBUG] [Thread-126907 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:26:19.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:26:19.414 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:26:19.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:26:20.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 25, 27), 27.14, 14.41, 0.0, 20.68, 16.52, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:26:20.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:25:27
2025-11-04T02:26:20.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:26:20.592 [DEBUG] [Thread-126908] [transport.py] [_log()] starting thread (client mode): 0xed22200
2025-11-04T02:26:20.593 [DEBUG] [Thread-126908] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:26:20.600 [DEBUG] [Thread-126908] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:26:20.600 [INFO] [Thread-126908] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:26:20.605 [DEBUG] [Thread-126908] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:26:20.605 [DEBUG] [Thread-126908] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:26:20.605 [DEBUG] [Thread-126908] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:26:20.605 [DEBUG] [Thread-126908] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:26:20.605 [DEBUG] [Thread-126908] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:26:20.605 [DEBUG] [Thread-126908] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:26:20.605 [DEBUG] [Thread-126908] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:26:20.605 [DEBUG] [Thread-126908] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:26:20.605 [DEBUG] [Thread-126908] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:26:20.605 [DEBUG] [Thread-126908] [transport.py] [_log()] client lang: <none>
2025-11-04T02:26:20.605 [DEBUG] [Thread-126908] [transport.py] [_log()] server lang: <none>
2025-11-04T02:26:20.605 [DEBUG] [Thread-126908] [transport.py] [_log()] kex follows: False
2025-11-04T02:26:20.605 [DEBUG] [Thread-126908] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:26:20.606 [DEBUG] [Thread-126908] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:26:20.606 [DEBUG] [Thread-126908] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:26:20.606 [DEBUG] [Thread-126908] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:26:20.606 [DEBUG] [Thread-126908] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:26:20.606 [DEBUG] [Thread-126908] [transport.py] [_log()] Compression: none
2025-11-04T02:26:20.606 [DEBUG] [Thread-126908] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:26:20.635 [DEBUG] [Thread-126908] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:26:20.639 [DEBUG] [Thread-126908] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:26:20.641 [DEBUG] [Thread-126908] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:26:20.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:26:20.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:26:20.673 [DEBUG] [Thread-126908] [transport.py] [_log()] userauth is OK
2025-11-04T02:26:20.673 [DEBUG] [Thread-126908] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:26:20.673 [DEBUG] [Thread-126908] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:26:20.673 [DEBUG] [Thread-126908] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:26:20.673 [DEBUG] [Thread-126908] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:26:20.711 [INFO] [Thread-126908] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:26:20.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:26:20.883 [DEBUG] [Thread-126910 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:26:21.311 [DEBUG] [Thread-126908] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:26:21.311 [DEBUG] [Thread-126908] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:26:21.311 [DEBUG] [Thread-126908] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:26:21.353 [DEBUG] [Thread-126908] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:26:21.353 [DEBUG] [Thread-126908] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:26:21.356 [DEBUG] [Thread-126908] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:26:21.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:26:21.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:26:21.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:26:21.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:26:21.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:26:21.380 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:26:21.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:26:21.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:26:21.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:26:21.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.017806 -999.00  +16.60  22.62     19   -6.50 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 23.5 22.6 314.4 24.8 16.9 -23.8 16.8 -22.9 16.6 -22.7 16.8 -23.5
2025-11-04T02:26:21.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:26:21.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:26:21.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.017806
2025-11-04T02:26:21.388 [DEBUG] [Thread-126908] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:26:21.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:26:21.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:26:21.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:26:21.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:26:21.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:26:21.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:25:27', tmtdew=27.14, humidity=14.41, cloud=0.0, wind=20.68, temperature=16.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:26:01', seeing=1.09, atlas_timestamp='2025-11-04T00:25:38.438', atlas_cloud=1, atlas_rain=1, zp_data=[0.019249999999999545, 0.03275000000000006, 0.047250000000000014, 0.0779999999999994, 0.050499999999999545, 0.12125000000000163, 0.004999999999999005, 0.04125000000000156, 0.050499999999999545, 0.08500000000000085, 0.11624999999999908, 0.03700000000000081, 0.19699999999999918, -0.01875000000000071, 0.0030000000000001137, -0.028999999999999915, 0.08724999999999916, 0.05799999999999983, 0.17849999999999966, 0.09474999999999767, 0.1789999999999985, -0.20575000000000188, 0.10725000000000051, 0.0337499999999995, 0.07199999999999918, 0.15799999999999947, 0.09274999999999878, 0.2104999999999997, 0.32200000000000006, -0.4029999999999987, 0.1440000000000019, 0.0705000000000009, 0.16774999999999984], zp_timestamp='2025-11-04T00:24:00')
2025-11-04T02:26:21.490 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:26:21.502 [DEBUG] [Thread-126912] [transport.py] [_log()] starting thread (client mode): 0x11798490
2025-11-04T02:26:21.503 [DEBUG] [Thread-126912] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:26:21.517 [DEBUG] [Thread-126912] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:26:21.517 [INFO] [Thread-126912] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:26:21.525 [DEBUG] [Thread-126912] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:26:21.525 [DEBUG] [Thread-126912] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:26:21.525 [DEBUG] [Thread-126912] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:26:21.525 [DEBUG] [Thread-126912] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:26:21.525 [DEBUG] [Thread-126912] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:26:21.526 [DEBUG] [Thread-126912] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:26:21.526 [DEBUG] [Thread-126912] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:26:21.526 [DEBUG] [Thread-126912] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:26:21.526 [DEBUG] [Thread-126912] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:26:21.526 [DEBUG] [Thread-126912] [transport.py] [_log()] client lang: <none>
2025-11-04T02:26:21.526 [DEBUG] [Thread-126912] [transport.py] [_log()] server lang: <none>
2025-11-04T02:26:21.526 [DEBUG] [Thread-126912] [transport.py] [_log()] kex follows: False
2025-11-04T02:26:21.526 [DEBUG] [Thread-126912] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:26:21.526 [DEBUG] [Thread-126912] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:26:21.527 [DEBUG] [Thread-126912] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:26:21.527 [DEBUG] [Thread-126912] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:26:21.527 [DEBUG] [Thread-126912] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:26:21.527 [DEBUG] [Thread-126912] [transport.py] [_log()] Compression: none
2025-11-04T02:26:21.527 [DEBUG] [Thread-126912] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:26:21.585 [DEBUG] [Thread-126912] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:26:21.585 [DEBUG] [Thread-126912] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:26:21.586 [DEBUG] [Thread-126912] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:26:21.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:26:21.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:26:21.645 [DEBUG] [Thread-126912] [transport.py] [_log()] userauth is OK
2025-11-04T02:26:21.645 [DEBUG] [Thread-126912] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:26:21.645 [DEBUG] [Thread-126912] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:26:21.646 [DEBUG] [Thread-126912] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:26:21.646 [DEBUG] [Thread-126912] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:26:21.664 [INFO] [Thread-126912] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:26:21.665 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:26:21.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:26:22.484 [DEBUG] [Thread-126912] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:26:22.485 [DEBUG] [Thread-126912] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:26:22.531 [DEBUG] [Thread-126912] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:26:22.531 [DEBUG] [Thread-126912] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:26:22.540 [DEBUG] [Thread-126912] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:26:22.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:26:22.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:26:22.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:26:22.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:26:22.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:26:22.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:26:22.573 [DEBUG] [Thread-126912] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:26:35.914 [DEBUG] [Thread-126914 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:26:43.690 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:26:43.692 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:26:51.018 [DEBUG] [Thread-126915 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:26:52.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:26:52.573 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:26:52.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:26:53.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 26, 33), 27.12, 14.47, 0.0, 19.02, 16.52, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:26:53.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:26:33
2025-11-04T02:26:53.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:26:53.691 [DEBUG] [Thread-126916] [transport.py] [_log()] starting thread (client mode): 0xed21690
2025-11-04T02:26:53.692 [DEBUG] [Thread-126916] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:26:53.706 [DEBUG] [Thread-126916] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:26:53.706 [INFO] [Thread-126916] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:26:53.709 [DEBUG] [Thread-126916] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:26:53.709 [DEBUG] [Thread-126916] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:26:53.709 [DEBUG] [Thread-126916] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:26:53.709 [DEBUG] [Thread-126916] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:26:53.709 [DEBUG] [Thread-126916] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:26:53.709 [DEBUG] [Thread-126916] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:26:53.710 [DEBUG] [Thread-126916] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:26:53.710 [DEBUG] [Thread-126916] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:26:53.710 [DEBUG] [Thread-126916] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:26:53.710 [DEBUG] [Thread-126916] [transport.py] [_log()] client lang: <none>
2025-11-04T02:26:53.710 [DEBUG] [Thread-126916] [transport.py] [_log()] server lang: <none>
2025-11-04T02:26:53.710 [DEBUG] [Thread-126916] [transport.py] [_log()] kex follows: False
2025-11-04T02:26:53.710 [DEBUG] [Thread-126916] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:26:53.711 [DEBUG] [Thread-126916] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:26:53.711 [DEBUG] [Thread-126916] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:26:53.711 [DEBUG] [Thread-126916] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:26:53.711 [DEBUG] [Thread-126916] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:26:53.711 [DEBUG] [Thread-126916] [transport.py] [_log()] Compression: none
2025-11-04T02:26:53.711 [DEBUG] [Thread-126916] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:26:53.743 [DEBUG] [Thread-126916] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:26:53.747 [DEBUG] [Thread-126916] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:26:53.749 [DEBUG] [Thread-126916] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:26:53.750 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:26:53.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:26:53.785 [DEBUG] [Thread-126916] [transport.py] [_log()] userauth is OK
2025-11-04T02:26:53.786 [DEBUG] [Thread-126916] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:26:53.787 [DEBUG] [Thread-126916] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:26:53.787 [DEBUG] [Thread-126916] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:26:53.787 [DEBUG] [Thread-126916] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:26:53.827 [INFO] [Thread-126916] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:26:53.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:26:54.447 [DEBUG] [Thread-126916] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:26:54.447 [DEBUG] [Thread-126916] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:26:54.457 [DEBUG] [Thread-126916] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:26:54.489 [DEBUG] [Thread-126916] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:26:54.489 [DEBUG] [Thread-126916] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:26:54.491 [DEBUG] [Thread-126916] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:26:54.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:26:54.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:26:54.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:26:54.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:26:54.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:26:54.512 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:26:54.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:26:54.512 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:26:54.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:26:54.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.018153 -999.00  +16.70  24.42     19   -6.50 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 22.0 24.4 312.0 26.2 16.9 -23.9 16.8 -22.9 16.6 -22.7 16.8 -23.5
2025-11-04T02:26:54.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:26:54.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:26:54.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.018153
2025-11-04T02:26:54.519 [DEBUG] [Thread-126916] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:26:54.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:26:54.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:26:54.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:26:54.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:26:54.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:26:54.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:26:33', tmtdew=27.12, humidity=14.47, cloud=0.0, wind=19.02, temperature=16.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:26:33', seeing=1.06, atlas_timestamp='2025-11-04T00:26:08.419', atlas_cloud=1, atlas_rain=1, zp_data=[0.019249999999999545, 0.03275000000000006, 0.047250000000000014, 0.0779999999999994, 0.050499999999999545, 0.12125000000000163, 0.004999999999999005, 0.04125000000000156, 0.050499999999999545, 0.08500000000000085, 0.11624999999999908, 0.03700000000000081, 0.19699999999999918, -0.01875000000000071, 0.0030000000000001137, -0.028999999999999915, 0.08724999999999916, 0.05799999999999983, 0.17849999999999966, 0.09474999999999767, 0.1789999999999985, -0.20575000000000188, 0.10725000000000051, 0.0337499999999995, 0.07199999999999918, 0.15799999999999947, 0.09274999999999878, 0.2104999999999997, 0.32200000000000006, -0.4029999999999987, 0.1440000000000019, 0.0705000000000009, 0.16774999999999984], zp_timestamp='2025-11-04T00:24:00')
2025-11-04T02:26:54.596 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:26:54.609 [DEBUG] [Thread-126919] [transport.py] [_log()] starting thread (client mode): 0xed23730
2025-11-04T02:26:54.609 [DEBUG] [Thread-126919] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:26:54.624 [DEBUG] [Thread-126919] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:26:54.624 [INFO] [Thread-126919] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:26:54.631 [DEBUG] [Thread-126919] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:26:54.631 [DEBUG] [Thread-126919] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:26:54.631 [DEBUG] [Thread-126919] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:26:54.631 [DEBUG] [Thread-126919] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:26:54.631 [DEBUG] [Thread-126919] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:26:54.631 [DEBUG] [Thread-126919] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:26:54.631 [DEBUG] [Thread-126919] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:26:54.631 [DEBUG] [Thread-126919] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:26:54.631 [DEBUG] [Thread-126919] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:26:54.631 [DEBUG] [Thread-126919] [transport.py] [_log()] client lang: <none>
2025-11-04T02:26:54.631 [DEBUG] [Thread-126919] [transport.py] [_log()] server lang: <none>
2025-11-04T02:26:54.631 [DEBUG] [Thread-126919] [transport.py] [_log()] kex follows: False
2025-11-04T02:26:54.631 [DEBUG] [Thread-126919] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:26:54.631 [DEBUG] [Thread-126919] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:26:54.631 [DEBUG] [Thread-126919] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:26:54.631 [DEBUG] [Thread-126919] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:26:54.632 [DEBUG] [Thread-126919] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:26:54.632 [DEBUG] [Thread-126919] [transport.py] [_log()] Compression: none
2025-11-04T02:26:54.632 [DEBUG] [Thread-126919] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:26:54.688 [DEBUG] [Thread-126919] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:26:54.689 [DEBUG] [Thread-126919] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:26:54.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:26:54.690 [DEBUG] [Thread-126919] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:26:54.691 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:26:54.745 [DEBUG] [Thread-126919] [transport.py] [_log()] userauth is OK
2025-11-04T02:26:54.745 [DEBUG] [Thread-126919] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:26:54.745 [DEBUG] [Thread-126919] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:26:54.746 [DEBUG] [Thread-126919] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:26:54.746 [DEBUG] [Thread-126919] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:26:54.771 [INFO] [Thread-126919] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:26:54.771 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:26:54.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:26:55.570 [DEBUG] [Thread-126919] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:26:55.570 [DEBUG] [Thread-126919] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:26:55.618 [DEBUG] [Thread-126919] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:26:55.618 [DEBUG] [Thread-126919] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:26:55.627 [DEBUG] [Thread-126919] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:26:55.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:26:55.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:26:55.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:26:55.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:26:55.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:26:55.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:26:55.661 [DEBUG] [Thread-126919] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:27:01.372 [DEBUG] [Thread-126921 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:27:06.050 [DEBUG] [Thread-126922 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:27:21.095 [DEBUG] [Thread-126923 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:27:25.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:27:25.676 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:27:25.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:27:26.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 27, 5), 27.08, 14.51, 0.0, 19.25, 16.46, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:27:26.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:27:05
2025-11-04T02:27:26.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:27:26.883 [DEBUG] [Thread-126924] [transport.py] [_log()] starting thread (client mode): 0xed23760
2025-11-04T02:27:26.884 [DEBUG] [Thread-126924] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:27:26.895 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:27:26.897 [DEBUG] [Thread-126924] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:27:26.897 [INFO] [Thread-126924] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:27:26.899 [DEBUG] [Thread-126924] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:27:26.900 [DEBUG] [Thread-126924] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:27:26.900 [DEBUG] [Thread-126924] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:27:26.900 [DEBUG] [Thread-126924] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:27:26.900 [DEBUG] [Thread-126924] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:27:26.900 [DEBUG] [Thread-126924] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:27:26.900 [DEBUG] [Thread-126924] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:27:26.900 [DEBUG] [Thread-126924] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:27:26.900 [DEBUG] [Thread-126924] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:27:26.900 [DEBUG] [Thread-126924] [transport.py] [_log()] client lang: <none>
2025-11-04T02:27:26.900 [DEBUG] [Thread-126924] [transport.py] [_log()] server lang: <none>
2025-11-04T02:27:26.900 [DEBUG] [Thread-126924] [transport.py] [_log()] kex follows: False
2025-11-04T02:27:26.900 [DEBUG] [Thread-126924] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:27:26.901 [DEBUG] [Thread-126924] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:27:26.901 [DEBUG] [Thread-126924] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:27:26.901 [DEBUG] [Thread-126924] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:27:26.901 [DEBUG] [Thread-126924] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:27:26.901 [DEBUG] [Thread-126924] [transport.py] [_log()] Compression: none
2025-11-04T02:27:26.901 [DEBUG] [Thread-126924] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:27:26.920 [DEBUG] [Thread-126924] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:27:26.920 [DEBUG] [Thread-126924] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:27:26.921 [DEBUG] [Thread-126924] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:27:26.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:27:26.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:27:26.923 [DEBUG] [Thread-126924] [transport.py] [_log()] userauth is OK
2025-11-04T02:27:26.923 [DEBUG] [Thread-126924] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:27:26.923 [DEBUG] [Thread-126924] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:27:26.923 [DEBUG] [Thread-126924] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:27:26.923 [DEBUG] [Thread-126924] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:27:26.939 [INFO] [Thread-126924] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:27:26.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:27:27.534 [DEBUG] [Thread-126924] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:27:27.534 [DEBUG] [Thread-126924] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:27:27.536 [DEBUG] [Thread-126924] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:27:27.574 [DEBUG] [Thread-126924] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:27:27.574 [DEBUG] [Thread-126924] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:27:27.577 [DEBUG] [Thread-126924] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:27:27.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:27:27.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:27:27.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:27:27.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:27:27.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:27:27.596 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:27:27.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:27:27.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:27:27.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:27:27.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.018500 -999.00  +16.80  21.38     19   -6.60 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 20.1 21.4 311.8 25.2 16.9 -23.9 16.8 -22.9 16.6 -22.6 16.8 -23.5
2025-11-04T02:27:27.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:27:27.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:27:27.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.018500
2025-11-04T02:27:27.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:27:27.610 [DEBUG] [Thread-126924] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:27:27.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:27:27.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:27:27.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:27:27.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:27:27.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:27:05', tmtdew=27.08, humidity=14.51, cloud=0.0, wind=19.25, temperature=16.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:27:06', seeing=1.06, atlas_timestamp='2025-11-04T00:26:38.400', atlas_cloud=1, atlas_rain=1, zp_data=[0.019249999999999545, 0.03275000000000006, 0.047250000000000014, 0.0779999999999994, 0.050499999999999545, 0.12125000000000163, 0.004999999999999005, 0.04125000000000156, 0.050499999999999545, 0.08500000000000085, 0.11624999999999908, 0.03700000000000081, 0.19699999999999918, -0.01875000000000071, 0.0030000000000001137, -0.028999999999999915, 0.08724999999999916, 0.05799999999999983, 0.17849999999999966, 0.09474999999999767, 0.1789999999999985, -0.20575000000000188, 0.10725000000000051, 0.0337499999999995, 0.07199999999999918, 0.15799999999999947, 0.09274999999999878, 0.2104999999999997, 0.32200000000000006, -0.4029999999999987, 0.1440000000000019, 0.0705000000000009, 0.16774999999999984], zp_timestamp='2025-11-04T00:24:00')
2025-11-04T02:27:27.685 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:27:27.697 [DEBUG] [Thread-126927] [transport.py] [_log()] starting thread (client mode): 0xed233a0
2025-11-04T02:27:27.697 [DEBUG] [Thread-126927] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:27:27.712 [DEBUG] [Thread-126927] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:27:27.712 [INFO] [Thread-126927] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:27:27.720 [DEBUG] [Thread-126927] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:27:27.720 [DEBUG] [Thread-126927] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:27:27.720 [DEBUG] [Thread-126927] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:27:27.720 [DEBUG] [Thread-126927] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:27:27.720 [DEBUG] [Thread-126927] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:27:27.720 [DEBUG] [Thread-126927] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:27:27.720 [DEBUG] [Thread-126927] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:27:27.720 [DEBUG] [Thread-126927] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:27:27.720 [DEBUG] [Thread-126927] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:27:27.720 [DEBUG] [Thread-126927] [transport.py] [_log()] client lang: <none>
2025-11-04T02:27:27.720 [DEBUG] [Thread-126927] [transport.py] [_log()] server lang: <none>
2025-11-04T02:27:27.720 [DEBUG] [Thread-126927] [transport.py] [_log()] kex follows: False
2025-11-04T02:27:27.720 [DEBUG] [Thread-126927] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:27:27.720 [DEBUG] [Thread-126927] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:27:27.720 [DEBUG] [Thread-126927] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:27:27.720 [DEBUG] [Thread-126927] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:27:27.720 [DEBUG] [Thread-126927] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:27:27.720 [DEBUG] [Thread-126927] [transport.py] [_log()] Compression: none
2025-11-04T02:27:27.720 [DEBUG] [Thread-126927] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:27:27.779 [DEBUG] [Thread-126927] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:27:27.779 [DEBUG] [Thread-126927] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:27:27.779 [DEBUG] [Thread-126927] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:27:27.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:27:27.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:27:27.835 [DEBUG] [Thread-126927] [transport.py] [_log()] userauth is OK
2025-11-04T02:27:27.836 [DEBUG] [Thread-126927] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:27:27.836 [DEBUG] [Thread-126927] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:27:27.836 [DEBUG] [Thread-126927] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:27:27.836 [DEBUG] [Thread-126927] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:27:27.849 [INFO] [Thread-126927] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:27:27.850 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:27:27.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:27:28.718 [DEBUG] [Thread-126927] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:27:28.719 [DEBUG] [Thread-126927] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:27:28.767 [DEBUG] [Thread-126927] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:27:28.767 [DEBUG] [Thread-126927] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:27:28.777 [DEBUG] [Thread-126927] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:27:28.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:27:28.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:27:28.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:27:28.815 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:27:28.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:27:28.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:27:28.824 [DEBUG] [Thread-126927] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:27:36.133 [DEBUG] [Thread-126929 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:27:36.928 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:27:41.005 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:27:43.894 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:27:43.895 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:27:51.238 [DEBUG] [Thread-126930 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:27:58.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:27:58.848 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:27:58.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:27:59.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 27, 38), 27.18, 14.51, 0.0, 19.6, 16.51, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:27:59.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:27:38
2025-11-04T02:27:59.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:27:59.948 [DEBUG] [Thread-126931] [transport.py] [_log()] starting thread (client mode): 0xed20b20
2025-11-04T02:27:59.949 [DEBUG] [Thread-126931] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:27:59.959 [DEBUG] [Thread-126931] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:27:59.959 [INFO] [Thread-126931] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:27:59.964 [DEBUG] [Thread-126931] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:27:59.964 [DEBUG] [Thread-126931] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:27:59.964 [DEBUG] [Thread-126931] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:27:59.964 [DEBUG] [Thread-126931] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:27:59.964 [DEBUG] [Thread-126931] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:27:59.964 [DEBUG] [Thread-126931] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:27:59.964 [DEBUG] [Thread-126931] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:27:59.964 [DEBUG] [Thread-126931] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:27:59.964 [DEBUG] [Thread-126931] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:27:59.964 [DEBUG] [Thread-126931] [transport.py] [_log()] client lang: <none>
2025-11-04T02:27:59.964 [DEBUG] [Thread-126931] [transport.py] [_log()] server lang: <none>
2025-11-04T02:27:59.964 [DEBUG] [Thread-126931] [transport.py] [_log()] kex follows: False
2025-11-04T02:27:59.965 [DEBUG] [Thread-126931] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:27:59.965 [DEBUG] [Thread-126931] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:27:59.965 [DEBUG] [Thread-126931] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:27:59.965 [DEBUG] [Thread-126931] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:27:59.965 [DEBUG] [Thread-126931] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:27:59.965 [DEBUG] [Thread-126931] [transport.py] [_log()] Compression: none
2025-11-04T02:27:59.965 [DEBUG] [Thread-126931] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:28:00.001 [DEBUG] [Thread-126931] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:28:00.006 [DEBUG] [Thread-126931] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:28:00.008 [DEBUG] [Thread-126931] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:28:00.009 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:28:00.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:28:00.013 [DEBUG] [Thread-126931] [transport.py] [_log()] userauth is OK
2025-11-04T02:28:00.013 [DEBUG] [Thread-126931] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:28:00.013 [DEBUG] [Thread-126931] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:28:00.013 [DEBUG] [Thread-126931] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:28:00.013 [DEBUG] [Thread-126931] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:28:00.039 [INFO] [Thread-126931] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:28:00.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:28:00.705 [DEBUG] [Thread-126931] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:28:00.705 [DEBUG] [Thread-126931] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:28:00.707 [DEBUG] [Thread-126931] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:28:00.747 [DEBUG] [Thread-126931] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:28:00.747 [DEBUG] [Thread-126931] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:28:00.750 [DEBUG] [Thread-126931] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:28:00.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:28:00.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:28:00.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:28:00.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:28:00.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:28:00.771 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:28:00.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:28:00.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:28:00.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:28:00.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.018847 -999.00  +16.70  20.80     19   -6.60 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 19.7 20.8 315.2 23.1 16.9 -23.8 16.8 -23.0 16.5 -22.7 16.8 -23.5
2025-11-04T02:28:00.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:28:00.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:28:00.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.018847
2025-11-04T02:28:00.778 [DEBUG] [Thread-126931] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:28:00.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:28:00.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:28:00.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:28:00.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:28:00.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:28:00.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:27:38', tmtdew=27.18, humidity=14.51, cloud=0.0, wind=19.6, temperature=16.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:27:39', seeing=1.01, atlas_timestamp='2025-11-04T00:27:08.381', atlas_cloud=1, atlas_rain=1, zp_data=[0.019249999999999545, 0.03275000000000006, 0.047250000000000014, 0.0779999999999994, 0.050499999999999545, 0.12125000000000163, 0.004999999999999005, 0.04125000000000156, 0.050499999999999545, 0.08500000000000085, 0.11624999999999908, 0.03700000000000081, 0.19699999999999918, -0.01875000000000071, 0.0030000000000001137, -0.028999999999999915, 0.08724999999999916, 0.05799999999999983, 0.17849999999999966, 0.09474999999999767, 0.1789999999999985, -0.20575000000000188, 0.10725000000000051, 0.0337499999999995, 0.07199999999999918, 0.15799999999999947, 0.09274999999999878, 0.2104999999999997, 0.32200000000000006, -0.4029999999999987, 0.1440000000000019, 0.0705000000000009, 0.16774999999999984], zp_timestamp='2025-11-04T00:24:00')
2025-11-04T02:28:00.871 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:28:00.886 [DEBUG] [Thread-126934] [transport.py] [_log()] starting thread (client mode): 0x117bf970
2025-11-04T02:28:00.886 [DEBUG] [Thread-126934] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:28:00.901 [DEBUG] [Thread-126934] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:28:00.901 [INFO] [Thread-126934] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:28:00.909 [DEBUG] [Thread-126934] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:28:00.909 [DEBUG] [Thread-126934] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:28:00.915 [DEBUG] [Thread-126934] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:28:00.915 [DEBUG] [Thread-126934] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:28:00.915 [DEBUG] [Thread-126934] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:28:00.915 [DEBUG] [Thread-126934] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:28:00.915 [DEBUG] [Thread-126934] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:28:00.915 [DEBUG] [Thread-126934] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:28:00.915 [DEBUG] [Thread-126934] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:28:00.915 [DEBUG] [Thread-126934] [transport.py] [_log()] client lang: <none>
2025-11-04T02:28:00.915 [DEBUG] [Thread-126934] [transport.py] [_log()] server lang: <none>
2025-11-04T02:28:00.915 [DEBUG] [Thread-126934] [transport.py] [_log()] kex follows: False
2025-11-04T02:28:00.915 [DEBUG] [Thread-126934] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:28:00.915 [DEBUG] [Thread-126934] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:28:00.916 [DEBUG] [Thread-126934] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:28:00.916 [DEBUG] [Thread-126934] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:28:00.916 [DEBUG] [Thread-126934] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:28:00.916 [DEBUG] [Thread-126934] [transport.py] [_log()] Compression: none
2025-11-04T02:28:00.916 [DEBUG] [Thread-126934] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:28:00.967 [DEBUG] [Thread-126934] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:28:00.967 [DEBUG] [Thread-126934] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:28:00.968 [DEBUG] [Thread-126934] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:28:00.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:28:00.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:28:01.025 [DEBUG] [Thread-126934] [transport.py] [_log()] userauth is OK
2025-11-04T02:28:01.025 [DEBUG] [Thread-126934] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:28:01.025 [DEBUG] [Thread-126934] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:28:01.025 [DEBUG] [Thread-126934] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:28:01.025 [DEBUG] [Thread-126934] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:28:01.044 [INFO] [Thread-126934] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:28:01.044 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:28:01.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:28:01.757 [DEBUG] [Thread-126936 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:28:01.937 [DEBUG] [Thread-126934] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:28:01.938 [DEBUG] [Thread-126934] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:28:01.986 [DEBUG] [Thread-126934] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:28:01.987 [DEBUG] [Thread-126934] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:28:01.998 [DEBUG] [Thread-126934] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:28:02.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:28:02.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:28:02.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:28:02.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:28:02.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:28:02.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:28:02.050 [DEBUG] [Thread-126934] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:28:06.284 [DEBUG] [Thread-126937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:28:21.419 [DEBUG] [Thread-126938 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:28:32.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:28:32.071 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:28:32.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:28:33.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 28, 11), 27.14, 14.56, 0.0, 19.09, 16.51, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:28:33.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:28:11
2025-11-04T02:28:33.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:28:33.410 [DEBUG] [Thread-126939] [transport.py] [_log()] starting thread (client mode): 0x117bf790
2025-11-04T02:28:33.410 [DEBUG] [Thread-126939] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:28:33.425 [DEBUG] [Thread-126939] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:28:33.426 [INFO] [Thread-126939] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:28:33.429 [DEBUG] [Thread-126939] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:28:33.429 [DEBUG] [Thread-126939] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:28:33.429 [DEBUG] [Thread-126939] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:28:33.429 [DEBUG] [Thread-126939] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:28:33.429 [DEBUG] [Thread-126939] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:28:33.429 [DEBUG] [Thread-126939] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:28:33.429 [DEBUG] [Thread-126939] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:28:33.429 [DEBUG] [Thread-126939] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:28:33.429 [DEBUG] [Thread-126939] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:28:33.429 [DEBUG] [Thread-126939] [transport.py] [_log()] client lang: <none>
2025-11-04T02:28:33.429 [DEBUG] [Thread-126939] [transport.py] [_log()] server lang: <none>
2025-11-04T02:28:33.429 [DEBUG] [Thread-126939] [transport.py] [_log()] kex follows: False
2025-11-04T02:28:33.429 [DEBUG] [Thread-126939] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:28:33.430 [DEBUG] [Thread-126939] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:28:33.430 [DEBUG] [Thread-126939] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:28:33.430 [DEBUG] [Thread-126939] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:28:33.430 [DEBUG] [Thread-126939] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:28:33.430 [DEBUG] [Thread-126939] [transport.py] [_log()] Compression: none
2025-11-04T02:28:33.430 [DEBUG] [Thread-126939] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:28:33.453 [DEBUG] [Thread-126939] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:28:33.456 [DEBUG] [Thread-126939] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:28:33.458 [DEBUG] [Thread-126939] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:28:33.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:28:33.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:28:33.461 [DEBUG] [Thread-126939] [transport.py] [_log()] userauth is OK
2025-11-04T02:28:33.461 [DEBUG] [Thread-126939] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:28:33.461 [DEBUG] [Thread-126939] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:28:33.461 [DEBUG] [Thread-126939] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:28:33.461 [DEBUG] [Thread-126939] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:28:33.480 [INFO] [Thread-126939] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:28:33.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:28:34.118 [DEBUG] [Thread-126939] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:28:34.118 [DEBUG] [Thread-126939] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:28:34.119 [DEBUG] [Thread-126939] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:28:34.158 [DEBUG] [Thread-126939] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:28:34.158 [DEBUG] [Thread-126939] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:28:34.161 [DEBUG] [Thread-126939] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:28:34.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:28:34.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:28:34.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:28:34.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:28:34.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:28:34.182 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:28:34.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:28:34.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:28:34.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:28:34.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.019542 -999.00  +16.60  19.59     19   -6.60 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 19.7 19.6 308.8 24.2 16.9 -24.0 16.7 -22.9 16.5 -22.6 16.8 -23.6
2025-11-04T02:28:34.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:28:34.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:28:34.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.019542
2025-11-04T02:28:34.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:28:34.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:28:34.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:28:34.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:28:34.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:28:34.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:28:11', tmtdew=27.14, humidity=14.56, cloud=0.0, wind=19.09, temperature=16.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:28:12', seeing=1.01, atlas_timestamp='2025-11-04T00:28:08.429', atlas_cloud=1, atlas_rain=1, zp_data=[0.019249999999999545, 0.03275000000000006, 0.047250000000000014, 0.0779999999999994, 0.050499999999999545, 0.12125000000000163, 0.004999999999999005, 0.04125000000000156, 0.050499999999999545, 0.08500000000000085, 0.11624999999999908, 0.03700000000000081, 0.19699999999999918, -0.01875000000000071, 0.0030000000000001137, -0.028999999999999915, 0.08724999999999916, 0.05799999999999983, 0.17849999999999966, 0.09474999999999767, 0.1789999999999985, -0.20575000000000188, 0.10725000000000051, 0.0337499999999995, 0.07199999999999918, 0.15799999999999947, 0.09274999999999878, 0.2104999999999997, 0.32200000000000006, -0.4029999999999987, 0.1440000000000019, 0.0705000000000009, 0.16774999999999984], zp_timestamp='2025-11-04T00:24:00')
2025-11-04T02:28:34.189 [DEBUG] [Thread-126939] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:28:34.264 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:28:34.288 [DEBUG] [Thread-126942] [transport.py] [_log()] starting thread (client mode): 0xed21600
2025-11-04T02:28:34.288 [DEBUG] [Thread-126942] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:28:34.303 [DEBUG] [Thread-126942] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:28:34.303 [INFO] [Thread-126942] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:28:34.311 [DEBUG] [Thread-126942] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:28:34.311 [DEBUG] [Thread-126942] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:28:34.311 [DEBUG] [Thread-126942] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:28:34.312 [DEBUG] [Thread-126942] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:28:34.312 [DEBUG] [Thread-126942] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:28:34.312 [DEBUG] [Thread-126942] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:28:34.312 [DEBUG] [Thread-126942] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:28:34.312 [DEBUG] [Thread-126942] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:28:34.312 [DEBUG] [Thread-126942] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:28:34.312 [DEBUG] [Thread-126942] [transport.py] [_log()] client lang: <none>
2025-11-04T02:28:34.312 [DEBUG] [Thread-126942] [transport.py] [_log()] server lang: <none>
2025-11-04T02:28:34.312 [DEBUG] [Thread-126942] [transport.py] [_log()] kex follows: False
2025-11-04T02:28:34.312 [DEBUG] [Thread-126942] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:28:34.312 [DEBUG] [Thread-126942] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:28:34.312 [DEBUG] [Thread-126942] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:28:34.312 [DEBUG] [Thread-126942] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:28:34.312 [DEBUG] [Thread-126942] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:28:34.312 [DEBUG] [Thread-126942] [transport.py] [_log()] Compression: none
2025-11-04T02:28:34.312 [DEBUG] [Thread-126942] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:28:34.370 [DEBUG] [Thread-126942] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:28:34.370 [DEBUG] [Thread-126942] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:28:34.370 [DEBUG] [Thread-126942] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:28:34.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:28:34.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:28:34.429 [DEBUG] [Thread-126942] [transport.py] [_log()] userauth is OK
2025-11-04T02:28:34.429 [DEBUG] [Thread-126942] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:28:34.429 [DEBUG] [Thread-126942] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:28:34.429 [DEBUG] [Thread-126942] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:28:34.429 [DEBUG] [Thread-126942] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:28:34.444 [INFO] [Thread-126942] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:28:34.445 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:28:34.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:28:35.300 [DEBUG] [Thread-126942] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:28:35.300 [DEBUG] [Thread-126942] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:28:35.349 [DEBUG] [Thread-126942] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:28:35.349 [DEBUG] [Thread-126942] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:28:35.359 [DEBUG] [Thread-126942] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:28:35.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:28:35.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:28:35.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:28:35.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:28:35.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:28:35.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:28:35.394 [DEBUG] [Thread-126942] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:28:36.451 [DEBUG] [Thread-126944 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:28:44.102 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:28:44.103 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:28:51.556 [DEBUG] [Thread-126945 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:29:02.097 [DEBUG] [Thread-126946 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:29:03.817 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:29:05.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:29:05.421 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:29:05.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:29:06.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 28, 43), 27.19, 14.49, 0.0, 21.16, 16.43, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:29:06.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:28:43
2025-11-04T02:29:06.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:29:06.600 [DEBUG] [Thread-126947 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:29:06.779 [DEBUG] [Thread-126948] [transport.py] [_log()] starting thread (client mode): 0xed20e80
2025-11-04T02:29:06.780 [DEBUG] [Thread-126948] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:29:06.791 [DEBUG] [Thread-126948] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:29:06.792 [INFO] [Thread-126948] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:29:06.797 [DEBUG] [Thread-126948] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:29:06.797 [DEBUG] [Thread-126948] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:29:06.798 [DEBUG] [Thread-126948] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:29:06.798 [DEBUG] [Thread-126948] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:29:06.798 [DEBUG] [Thread-126948] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:29:06.798 [DEBUG] [Thread-126948] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:29:06.798 [DEBUG] [Thread-126948] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:29:06.798 [DEBUG] [Thread-126948] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:29:06.798 [DEBUG] [Thread-126948] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:29:06.798 [DEBUG] [Thread-126948] [transport.py] [_log()] client lang: <none>
2025-11-04T02:29:06.798 [DEBUG] [Thread-126948] [transport.py] [_log()] server lang: <none>
2025-11-04T02:29:06.798 [DEBUG] [Thread-126948] [transport.py] [_log()] kex follows: False
2025-11-04T02:29:06.798 [DEBUG] [Thread-126948] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:29:06.799 [DEBUG] [Thread-126948] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:29:06.799 [DEBUG] [Thread-126948] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:29:06.799 [DEBUG] [Thread-126948] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:29:06.800 [DEBUG] [Thread-126948] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:29:06.800 [DEBUG] [Thread-126948] [transport.py] [_log()] Compression: none
2025-11-04T02:29:06.800 [DEBUG] [Thread-126948] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:29:06.842 [DEBUG] [Thread-126948] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:29:06.847 [DEBUG] [Thread-126948] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:29:06.849 [DEBUG] [Thread-126948] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:29:06.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:29:06.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:29:06.853 [DEBUG] [Thread-126948] [transport.py] [_log()] userauth is OK
2025-11-04T02:29:06.853 [DEBUG] [Thread-126948] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:29:06.854 [DEBUG] [Thread-126948] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:29:06.854 [DEBUG] [Thread-126948] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:29:06.854 [DEBUG] [Thread-126948] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:29:06.880 [INFO] [Thread-126948] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:29:06.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:29:07.518 [DEBUG] [Thread-126948] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:29:07.518 [DEBUG] [Thread-126948] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:29:07.528 [DEBUG] [Thread-126948] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:29:07.560 [DEBUG] [Thread-126948] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:29:07.560 [DEBUG] [Thread-126948] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:29:07.562 [DEBUG] [Thread-126948] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:29:07.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:29:07.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:29:07.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:29:07.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:29:07.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:29:07.581 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:29:07.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:29:07.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:29:07.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:29:07.582 [DEBUG] [Thread-126948] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:29:07.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.019889 -999.00  +16.60  20.73     19   -6.60 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 20.5 20.7 316.4 23.4 16.8 -24.0 16.7 -23.0 16.5 -22.7 16.8 -23.5
2025-11-04T02:29:07.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:29:07.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:29:07.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.019889
2025-11-04T02:29:07.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:29:07.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:29:07.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:29:07.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:29:07.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:29:07.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:28:43', tmtdew=27.19, humidity=14.49, cloud=0.0, wind=21.16, temperature=16.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:28:44', seeing=1.04, atlas_timestamp='2025-11-04T00:28:38.410', atlas_cloud=1, atlas_rain=1, zp_data=[0.019249999999999545, 0.03275000000000006, 0.047250000000000014, 0.0779999999999994, 0.050499999999999545, 0.12125000000000163, 0.004999999999999005, 0.04125000000000156, 0.050499999999999545, 0.08500000000000085, 0.11624999999999908, 0.03700000000000081, 0.19699999999999918, -0.01875000000000071, 0.0030000000000001137, -0.028999999999999915, 0.08724999999999916, 0.05799999999999983, 0.17849999999999966, 0.09474999999999767, 0.1789999999999985, -0.20575000000000188, 0.10725000000000051, 0.0337499999999995, 0.07199999999999918, 0.15799999999999947, 0.09274999999999878, 0.2104999999999997, 0.32200000000000006, -0.4029999999999987, 0.1440000000000019, 0.0705000000000009, 0.16774999999999984], zp_timestamp='2025-11-04T00:27:00')
2025-11-04T02:29:07.677 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:29:07.689 [DEBUG] [Thread-126951] [transport.py] [_log()] starting thread (client mode): 0xedc5810
2025-11-04T02:29:07.689 [DEBUG] [Thread-126951] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:29:07.704 [DEBUG] [Thread-126951] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:29:07.704 [INFO] [Thread-126951] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:29:07.713 [DEBUG] [Thread-126951] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:29:07.713 [DEBUG] [Thread-126951] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:29:07.713 [DEBUG] [Thread-126951] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:29:07.713 [DEBUG] [Thread-126951] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:29:07.713 [DEBUG] [Thread-126951] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:29:07.713 [DEBUG] [Thread-126951] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:29:07.713 [DEBUG] [Thread-126951] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:29:07.713 [DEBUG] [Thread-126951] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:29:07.713 [DEBUG] [Thread-126951] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:29:07.713 [DEBUG] [Thread-126951] [transport.py] [_log()] client lang: <none>
2025-11-04T02:29:07.713 [DEBUG] [Thread-126951] [transport.py] [_log()] server lang: <none>
2025-11-04T02:29:07.713 [DEBUG] [Thread-126951] [transport.py] [_log()] kex follows: False
2025-11-04T02:29:07.713 [DEBUG] [Thread-126951] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:29:07.713 [DEBUG] [Thread-126951] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:29:07.714 [DEBUG] [Thread-126951] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:29:07.714 [DEBUG] [Thread-126951] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:29:07.714 [DEBUG] [Thread-126951] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:29:07.714 [DEBUG] [Thread-126951] [transport.py] [_log()] Compression: none
2025-11-04T02:29:07.714 [DEBUG] [Thread-126951] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:29:07.780 [DEBUG] [Thread-126951] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:29:07.780 [DEBUG] [Thread-126951] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:29:07.780 [DEBUG] [Thread-126951] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:29:07.781 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:29:07.781 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:29:07.836 [DEBUG] [Thread-126951] [transport.py] [_log()] userauth is OK
2025-11-04T02:29:07.836 [DEBUG] [Thread-126951] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:29:07.836 [DEBUG] [Thread-126951] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:29:07.836 [DEBUG] [Thread-126951] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:29:07.836 [DEBUG] [Thread-126951] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:29:07.851 [INFO] [Thread-126951] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:29:07.852 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:29:07.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:29:08.741 [DEBUG] [Thread-126951] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:29:08.742 [DEBUG] [Thread-126951] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:29:08.789 [DEBUG] [Thread-126951] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:29:08.789 [DEBUG] [Thread-126951] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:29:08.799 [DEBUG] [Thread-126951] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:29:08.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:29:08.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:29:08.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:29:08.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:29:08.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:29:08.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:29:08.837 [DEBUG] [Thread-126951] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:29:13.649 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:29:17.723 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:29:21.637 [DEBUG] [Thread-126953 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:29:36.766 [DEBUG] [Thread-126954 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:29:38.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:29:38.865 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:29:38.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:29:39.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 29, 16), 27.18, 14.49, 0.0, 20.66, 16.41, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:29:39.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:29:16
2025-11-04T02:29:39.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:29:39.997 [DEBUG] [Thread-126955] [transport.py] [_log()] starting thread (client mode): 0xed23eb0
2025-11-04T02:29:39.997 [DEBUG] [Thread-126955] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:29:40.013 [DEBUG] [Thread-126955] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:29:40.013 [INFO] [Thread-126955] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:29:40.017 [DEBUG] [Thread-126955] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:29:40.017 [DEBUG] [Thread-126955] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:29:40.017 [DEBUG] [Thread-126955] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:29:40.017 [DEBUG] [Thread-126955] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:29:40.017 [DEBUG] [Thread-126955] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:29:40.017 [DEBUG] [Thread-126955] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:29:40.017 [DEBUG] [Thread-126955] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:29:40.017 [DEBUG] [Thread-126955] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:29:40.017 [DEBUG] [Thread-126955] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:29:40.017 [DEBUG] [Thread-126955] [transport.py] [_log()] client lang: <none>
2025-11-04T02:29:40.017 [DEBUG] [Thread-126955] [transport.py] [_log()] server lang: <none>
2025-11-04T02:29:40.017 [DEBUG] [Thread-126955] [transport.py] [_log()] kex follows: False
2025-11-04T02:29:40.017 [DEBUG] [Thread-126955] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:29:40.017 [DEBUG] [Thread-126955] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:29:40.018 [DEBUG] [Thread-126955] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:29:40.018 [DEBUG] [Thread-126955] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:29:40.018 [DEBUG] [Thread-126955] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:29:40.018 [DEBUG] [Thread-126955] [transport.py] [_log()] Compression: none
2025-11-04T02:29:40.018 [DEBUG] [Thread-126955] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:29:40.040 [DEBUG] [Thread-126955] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:29:40.043 [DEBUG] [Thread-126955] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:29:40.044 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:29:40.045 [DEBUG] [Thread-126955] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:29:40.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:29:40.048 [DEBUG] [Thread-126955] [transport.py] [_log()] userauth is OK
2025-11-04T02:29:40.048 [DEBUG] [Thread-126955] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:29:40.048 [DEBUG] [Thread-126955] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:29:40.048 [DEBUG] [Thread-126955] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:29:40.048 [DEBUG] [Thread-126955] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:29:40.072 [INFO] [Thread-126955] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:29:40.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:29:40.699 [DEBUG] [Thread-126955] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:29:40.699 [DEBUG] [Thread-126955] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:29:40.699 [DEBUG] [Thread-126955] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:29:40.741 [DEBUG] [Thread-126955] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:29:40.741 [DEBUG] [Thread-126955] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:29:40.746 [DEBUG] [Thread-126955] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:29:40.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:29:40.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:29:40.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:29:40.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:29:40.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:29:40.775 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:29:40.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:29:40.775 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:29:40.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:29:40.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.020236 -999.00  +16.60  17.60     19   -6.70 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 16.9 17.6 309.8 23.4 16.9 -24.0 16.7 -23.0 16.4 -22.6 16.8 -23.5
2025-11-04T02:29:40.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:29:40.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:29:40.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.020236
2025-11-04T02:29:40.782 [DEBUG] [Thread-126955] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:29:40.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:29:40.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:29:40.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:29:40.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:29:40.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:29:40.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:29:16', tmtdew=27.18, humidity=14.49, cloud=0.0, wind=20.66, temperature=16.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:29:17', seeing=1.2, atlas_timestamp='2025-11-04T00:29:08.390', atlas_cloud=1, atlas_rain=1, zp_data=[0.019249999999999545, 0.03275000000000006, 0.047250000000000014, 0.0779999999999994, 0.050499999999999545, 0.12125000000000163, 0.004999999999999005, 0.04125000000000156, 0.050499999999999545, 0.08500000000000085, 0.11624999999999908, 0.03700000000000081, 0.19699999999999918, -0.01875000000000071, 0.0030000000000001137, -0.028999999999999915, 0.08724999999999916, 0.05799999999999983, 0.17849999999999966, 0.09474999999999767, 0.1789999999999985, -0.20575000000000188, 0.10725000000000051, 0.0337499999999995, 0.07199999999999918, 0.15799999999999947, 0.09274999999999878, 0.2104999999999997, 0.32200000000000006, -0.4029999999999987, 0.1440000000000019, 0.0705000000000009, 0.16774999999999984], zp_timestamp='2025-11-04T00:27:00')
2025-11-04T02:29:40.862 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:29:40.876 [DEBUG] [Thread-126958] [transport.py] [_log()] starting thread (client mode): 0xed21f30
2025-11-04T02:29:40.876 [DEBUG] [Thread-126958] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:29:40.893 [DEBUG] [Thread-126958] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:29:40.894 [INFO] [Thread-126958] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:29:40.904 [DEBUG] [Thread-126958] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:29:40.904 [DEBUG] [Thread-126958] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:29:40.904 [DEBUG] [Thread-126958] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:29:40.904 [DEBUG] [Thread-126958] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:29:40.905 [DEBUG] [Thread-126958] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:29:40.905 [DEBUG] [Thread-126958] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:29:40.905 [DEBUG] [Thread-126958] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:29:40.905 [DEBUG] [Thread-126958] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:29:40.905 [DEBUG] [Thread-126958] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:29:40.905 [DEBUG] [Thread-126958] [transport.py] [_log()] client lang: <none>
2025-11-04T02:29:40.905 [DEBUG] [Thread-126958] [transport.py] [_log()] server lang: <none>
2025-11-04T02:29:40.905 [DEBUG] [Thread-126958] [transport.py] [_log()] kex follows: False
2025-11-04T02:29:40.905 [DEBUG] [Thread-126958] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:29:40.905 [DEBUG] [Thread-126958] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:29:40.905 [DEBUG] [Thread-126958] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:29:40.905 [DEBUG] [Thread-126958] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:29:40.905 [DEBUG] [Thread-126958] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:29:40.905 [DEBUG] [Thread-126958] [transport.py] [_log()] Compression: none
2025-11-04T02:29:40.905 [DEBUG] [Thread-126958] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:29:40.966 [DEBUG] [Thread-126958] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:29:40.966 [DEBUG] [Thread-126958] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:29:40.967 [DEBUG] [Thread-126958] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:29:40.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:29:40.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:29:41.026 [DEBUG] [Thread-126958] [transport.py] [_log()] userauth is OK
2025-11-04T02:29:41.026 [DEBUG] [Thread-126958] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:29:41.026 [DEBUG] [Thread-126958] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:29:41.026 [DEBUG] [Thread-126958] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:29:41.026 [DEBUG] [Thread-126958] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:29:41.046 [INFO] [Thread-126958] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:29:41.047 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:29:41.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:29:41.875 [DEBUG] [Thread-126958] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:29:41.875 [DEBUG] [Thread-126958] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:29:41.927 [DEBUG] [Thread-126958] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:29:41.927 [DEBUG] [Thread-126958] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:29:41.941 [DEBUG] [Thread-126958] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:29:41.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:29:41.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:29:41.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:29:41.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:29:41.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:29:41.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:29:41.996 [DEBUG] [Thread-126958] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:29:44.305 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:29:44.306 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:29:51.809 [DEBUG] [Thread-126960 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:30:02.408 [DEBUG] [Thread-126961 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:30:06.915 [DEBUG] [Thread-126962 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:30:12.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:30:12.020 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:30:12.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:30:13.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 29, 49), 27.32, 14.46, 0.0, 19.0, 16.49, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:30:13.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:29:49
2025-11-04T02:30:13.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:30:13.639 [DEBUG] [Thread-126963] [transport.py] [_log()] starting thread (client mode): 0x117bc760
2025-11-04T02:30:13.640 [DEBUG] [Thread-126963] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:30:13.660 [DEBUG] [Thread-126963] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:30:13.661 [INFO] [Thread-126963] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:30:13.665 [DEBUG] [Thread-126963] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:30:13.665 [DEBUG] [Thread-126963] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:30:13.665 [DEBUG] [Thread-126963] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:30:13.665 [DEBUG] [Thread-126963] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:30:13.665 [DEBUG] [Thread-126963] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:30:13.665 [DEBUG] [Thread-126963] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:30:13.665 [DEBUG] [Thread-126963] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:30:13.666 [DEBUG] [Thread-126963] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:30:13.666 [DEBUG] [Thread-126963] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:30:13.666 [DEBUG] [Thread-126963] [transport.py] [_log()] client lang: <none>
2025-11-04T02:30:13.666 [DEBUG] [Thread-126963] [transport.py] [_log()] server lang: <none>
2025-11-04T02:30:13.666 [DEBUG] [Thread-126963] [transport.py] [_log()] kex follows: False
2025-11-04T02:30:13.666 [DEBUG] [Thread-126963] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:30:13.667 [DEBUG] [Thread-126963] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:30:13.667 [DEBUG] [Thread-126963] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:30:13.667 [DEBUG] [Thread-126963] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:30:13.668 [DEBUG] [Thread-126963] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:30:13.668 [DEBUG] [Thread-126963] [transport.py] [_log()] Compression: none
2025-11-04T02:30:13.668 [DEBUG] [Thread-126963] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:30:13.703 [DEBUG] [Thread-126963] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:30:13.707 [DEBUG] [Thread-126963] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:30:13.709 [DEBUG] [Thread-126963] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:30:13.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:30:13.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:30:13.714 [DEBUG] [Thread-126963] [transport.py] [_log()] userauth is OK
2025-11-04T02:30:13.714 [DEBUG] [Thread-126963] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:30:13.715 [DEBUG] [Thread-126963] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:30:13.715 [DEBUG] [Thread-126963] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:30:13.715 [DEBUG] [Thread-126963] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:30:13.745 [INFO] [Thread-126963] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:30:13.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:30:14.500 [DEBUG] [Thread-126963] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:30:14.501 [DEBUG] [Thread-126963] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:30:14.511 [DEBUG] [Thread-126963] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:30:14.542 [DEBUG] [Thread-126963] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:30:14.543 [DEBUG] [Thread-126963] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:30:14.546 [DEBUG] [Thread-126963] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:30:14.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:30:14.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:30:14.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:30:14.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:30:14.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:30:14.574 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:30:14.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:30:14.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:30:14.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:30:14.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.020583 -999.00  +16.50  18.63     19   -6.70 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 17.4 18.6 310.8 21.0 16.8 -23.9 16.7 -23.0 16.4 -22.7 16.8 -23.5
2025-11-04T02:30:14.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:30:14.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:30:14.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.020583
2025-11-04T02:30:14.582 [DEBUG] [Thread-126963] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:30:14.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:30:14.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:30:14.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:30:14.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:30:14.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:30:14.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:29:49', tmtdew=27.32, humidity=14.46, cloud=0.0, wind=19.0, temperature=16.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:29:49', seeing=1.2, atlas_timestamp='2025-11-04T00:29:38.371', atlas_cloud=1, atlas_rain=1, zp_data=[0.019249999999999545, 0.03275000000000006, 0.047250000000000014, 0.0779999999999994, 0.050499999999999545, 0.12125000000000163, 0.004999999999999005, 0.04125000000000156, 0.050499999999999545, 0.08500000000000085, 0.11624999999999908, 0.03700000000000081, 0.19699999999999918, -0.01875000000000071, 0.0030000000000001137, -0.028999999999999915, 0.08724999999999916, 0.05799999999999983, 0.17849999999999966, 0.09474999999999767, 0.1789999999999985, -0.20575000000000188, 0.10725000000000051, 0.0337499999999995, 0.07199999999999918, 0.15799999999999947, 0.09274999999999878, 0.2104999999999997, 0.32200000000000006, -0.4029999999999987, 0.1440000000000019, 0.0705000000000009, 0.16774999999999984], zp_timestamp='2025-11-04T00:27:00')
2025-11-04T02:30:14.680 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:30:14.694 [DEBUG] [Thread-126966] [transport.py] [_log()] starting thread (client mode): 0xed05ae0
2025-11-04T02:30:14.694 [DEBUG] [Thread-126966] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:30:14.712 [DEBUG] [Thread-126966] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:30:14.712 [INFO] [Thread-126966] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:30:14.721 [DEBUG] [Thread-126966] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:30:14.721 [DEBUG] [Thread-126966] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:30:14.721 [DEBUG] [Thread-126966] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:30:14.722 [DEBUG] [Thread-126966] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:30:14.722 [DEBUG] [Thread-126966] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:30:14.722 [DEBUG] [Thread-126966] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:30:14.722 [DEBUG] [Thread-126966] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:30:14.722 [DEBUG] [Thread-126966] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:30:14.722 [DEBUG] [Thread-126966] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:30:14.722 [DEBUG] [Thread-126966] [transport.py] [_log()] client lang: <none>
2025-11-04T02:30:14.722 [DEBUG] [Thread-126966] [transport.py] [_log()] server lang: <none>
2025-11-04T02:30:14.723 [DEBUG] [Thread-126966] [transport.py] [_log()] kex follows: False
2025-11-04T02:30:14.723 [DEBUG] [Thread-126966] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:30:14.723 [DEBUG] [Thread-126966] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:30:14.723 [DEBUG] [Thread-126966] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:30:14.723 [DEBUG] [Thread-126966] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:30:14.723 [DEBUG] [Thread-126966] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:30:14.723 [DEBUG] [Thread-126966] [transport.py] [_log()] Compression: none
2025-11-04T02:30:14.723 [DEBUG] [Thread-126966] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:30:14.781 [DEBUG] [Thread-126966] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:30:14.781 [DEBUG] [Thread-126966] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:30:14.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:30:14.782 [DEBUG] [Thread-126966] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:30:14.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:30:14.840 [DEBUG] [Thread-126966] [transport.py] [_log()] userauth is OK
2025-11-04T02:30:14.841 [DEBUG] [Thread-126966] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:30:14.841 [DEBUG] [Thread-126966] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:30:14.841 [DEBUG] [Thread-126966] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:30:14.841 [DEBUG] [Thread-126966] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:30:14.861 [INFO] [Thread-126966] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:30:14.861 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:30:14.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:30:15.717 [DEBUG] [Thread-126966] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:30:15.717 [DEBUG] [Thread-126966] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:30:15.756 [DEBUG] [Thread-126966] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:30:15.756 [DEBUG] [Thread-126966] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:30:15.765 [DEBUG] [Thread-126966] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:30:15.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:30:15.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:30:15.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:30:15.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:30:15.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:30:15.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:30:15.804 [DEBUG] [Thread-126966] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:30:21.948 [DEBUG] [Thread-126968 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:30:36.997 [DEBUG] [Thread-126969 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:30:40.332 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:30:44.509 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:30:44.511 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:30:45.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:30:45.826 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:30:45.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:30:46.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 30, 21), 27.34, 14.44, 0.0, 19.11, 16.53, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:30:46.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:30:21
2025-11-04T02:30:46.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:30:46.934 [DEBUG] [Thread-126970] [transport.py] [_log()] starting thread (client mode): 0xed20be0
2025-11-04T02:30:46.935 [DEBUG] [Thread-126970] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:30:46.953 [DEBUG] [Thread-126970] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:30:46.953 [INFO] [Thread-126970] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:30:46.956 [DEBUG] [Thread-126970] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:30:46.956 [DEBUG] [Thread-126970] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:30:46.956 [DEBUG] [Thread-126970] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:30:46.956 [DEBUG] [Thread-126970] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:30:46.956 [DEBUG] [Thread-126970] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:30:46.956 [DEBUG] [Thread-126970] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:30:46.956 [DEBUG] [Thread-126970] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:30:46.956 [DEBUG] [Thread-126970] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:30:46.956 [DEBUG] [Thread-126970] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:30:46.956 [DEBUG] [Thread-126970] [transport.py] [_log()] client lang: <none>
2025-11-04T02:30:46.956 [DEBUG] [Thread-126970] [transport.py] [_log()] server lang: <none>
2025-11-04T02:30:46.956 [DEBUG] [Thread-126970] [transport.py] [_log()] kex follows: False
2025-11-04T02:30:46.956 [DEBUG] [Thread-126970] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:30:46.957 [DEBUG] [Thread-126970] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:30:46.957 [DEBUG] [Thread-126970] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:30:46.957 [DEBUG] [Thread-126970] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:30:46.957 [DEBUG] [Thread-126970] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:30:46.957 [DEBUG] [Thread-126970] [transport.py] [_log()] Compression: none
2025-11-04T02:30:46.957 [DEBUG] [Thread-126970] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:30:46.976 [DEBUG] [Thread-126970] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:30:46.977 [DEBUG] [Thread-126970] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:30:46.977 [DEBUG] [Thread-126970] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:30:46.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:30:46.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:30:46.979 [DEBUG] [Thread-126970] [transport.py] [_log()] userauth is OK
2025-11-04T02:30:46.979 [DEBUG] [Thread-126970] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:30:46.979 [DEBUG] [Thread-126970] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:30:46.979 [DEBUG] [Thread-126970] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:30:46.979 [DEBUG] [Thread-126970] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:30:46.994 [INFO] [Thread-126970] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:30:46.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:30:47.645 [DEBUG] [Thread-126970] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:30:47.645 [DEBUG] [Thread-126970] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:30:47.646 [DEBUG] [Thread-126970] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:30:47.678 [DEBUG] [Thread-126970] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:30:47.678 [DEBUG] [Thread-126970] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:30:47.680 [DEBUG] [Thread-126970] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:30:47.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:30:47.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:30:47.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:30:47.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:30:47.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:30:47.700 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:30:47.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:30:47.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:30:47.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:30:47.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.020930 -999.00  +16.50  16.02     19   -6.70 1 1 1 1 1     0    0 23.72 23.12 ZNESW 17.2 16.0 306.2 20.2 16.8 -24.0 16.7 -23.0 16.5 -22.8 16.7 -23.6
2025-11-04T02:30:47.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:30:47.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:30:47.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.020930
2025-11-04T02:30:47.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:30:47.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:30:47.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:30:47.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:30:47.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:30:47.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:30:21', tmtdew=27.34, humidity=14.44, cloud=0.0, wind=19.11, temperature=16.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:30:22', seeing=0.95, atlas_timestamp='2025-11-04T00:30:08.352', atlas_cloud=1, atlas_rain=1, zp_data=[0.019249999999999545, 0.03275000000000006, 0.047250000000000014, 0.0779999999999994, 0.050499999999999545, 0.12125000000000163, 0.004999999999999005, 0.04125000000000156, 0.050499999999999545, 0.08500000000000085, 0.11624999999999908, 0.03700000000000081, 0.19699999999999918, -0.01875000000000071, 0.0030000000000001137, -0.028999999999999915, 0.08724999999999916, 0.05799999999999983, 0.17849999999999966, 0.09474999999999767, 0.1789999999999985, -0.20575000000000188, 0.10725000000000051, 0.0337499999999995, 0.07199999999999918, 0.15799999999999947, 0.09274999999999878, 0.2104999999999997, 0.32200000000000006, -0.4029999999999987, 0.1440000000000019, 0.0705000000000009, 0.16774999999999984], zp_timestamp='2025-11-04T00:27:00')
2025-11-04T02:30:47.708 [DEBUG] [Thread-126970] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:30:47.780 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:30:47.794 [DEBUG] [Thread-126973] [transport.py] [_log()] starting thread (client mode): 0xedc5420
2025-11-04T02:30:47.794 [DEBUG] [Thread-126973] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:30:47.811 [DEBUG] [Thread-126973] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:30:47.811 [INFO] [Thread-126973] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:30:47.820 [DEBUG] [Thread-126973] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:30:47.821 [DEBUG] [Thread-126973] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:30:47.821 [DEBUG] [Thread-126973] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:30:47.821 [DEBUG] [Thread-126973] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:30:47.821 [DEBUG] [Thread-126973] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:30:47.821 [DEBUG] [Thread-126973] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:30:47.821 [DEBUG] [Thread-126973] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:30:47.822 [DEBUG] [Thread-126973] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:30:47.822 [DEBUG] [Thread-126973] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:30:47.822 [DEBUG] [Thread-126973] [transport.py] [_log()] client lang: <none>
2025-11-04T02:30:47.822 [DEBUG] [Thread-126973] [transport.py] [_log()] server lang: <none>
2025-11-04T02:30:47.822 [DEBUG] [Thread-126973] [transport.py] [_log()] kex follows: False
2025-11-04T02:30:47.822 [DEBUG] [Thread-126973] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:30:47.822 [DEBUG] [Thread-126973] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:30:47.823 [DEBUG] [Thread-126973] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:30:47.823 [DEBUG] [Thread-126973] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:30:47.823 [DEBUG] [Thread-126973] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:30:47.825 [DEBUG] [Thread-126973] [transport.py] [_log()] Compression: none
2025-11-04T02:30:47.825 [DEBUG] [Thread-126973] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:30:47.881 [DEBUG] [Thread-126973] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:30:47.881 [DEBUG] [Thread-126973] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:30:47.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:30:47.883 [DEBUG] [Thread-126973] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:30:47.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:30:47.940 [DEBUG] [Thread-126973] [transport.py] [_log()] userauth is OK
2025-11-04T02:30:47.941 [DEBUG] [Thread-126973] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:30:47.941 [DEBUG] [Thread-126973] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:30:47.941 [DEBUG] [Thread-126973] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:30:47.941 [DEBUG] [Thread-126973] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:30:47.960 [INFO] [Thread-126973] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:30:47.960 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:30:47.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:30:48.818 [DEBUG] [Thread-126973] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:30:48.819 [DEBUG] [Thread-126973] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:30:48.867 [DEBUG] [Thread-126973] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:30:48.868 [DEBUG] [Thread-126973] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:30:48.878 [DEBUG] [Thread-126973] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:30:48.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:30:48.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:30:48.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:30:48.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:30:48.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:30:48.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:30:48.918 [DEBUG] [Thread-126973] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:30:52.037 [DEBUG] [Thread-126975 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:31:02.752 [DEBUG] [Thread-126976 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:31:07.169 [DEBUG] [Thread-126977 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:31:18.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:31:18.943 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:31:18.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:31:19.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 30, 54), 27.31, 14.42, 0.0, 19.43, 16.51, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:31:19.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:30:54
2025-11-04T02:31:19.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:31:19.908 [DEBUG] [Thread-126978] [transport.py] [_log()] starting thread (client mode): 0xed07eb0
2025-11-04T02:31:19.909 [DEBUG] [Thread-126978] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:31:19.920 [DEBUG] [Thread-126978] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:31:19.920 [INFO] [Thread-126978] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:31:19.924 [DEBUG] [Thread-126978] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:31:19.925 [DEBUG] [Thread-126978] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:31:19.925 [DEBUG] [Thread-126978] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:31:19.925 [DEBUG] [Thread-126978] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:31:19.925 [DEBUG] [Thread-126978] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:31:19.925 [DEBUG] [Thread-126978] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:31:19.925 [DEBUG] [Thread-126978] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:31:19.925 [DEBUG] [Thread-126978] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:31:19.925 [DEBUG] [Thread-126978] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:31:19.925 [DEBUG] [Thread-126978] [transport.py] [_log()] client lang: <none>
2025-11-04T02:31:19.925 [DEBUG] [Thread-126978] [transport.py] [_log()] server lang: <none>
2025-11-04T02:31:19.925 [DEBUG] [Thread-126978] [transport.py] [_log()] kex follows: False
2025-11-04T02:31:19.925 [DEBUG] [Thread-126978] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:31:19.926 [DEBUG] [Thread-126978] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:31:19.926 [DEBUG] [Thread-126978] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:31:19.926 [DEBUG] [Thread-126978] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:31:19.927 [DEBUG] [Thread-126978] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:31:19.927 [DEBUG] [Thread-126978] [transport.py] [_log()] Compression: none
2025-11-04T02:31:19.927 [DEBUG] [Thread-126978] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:31:19.964 [DEBUG] [Thread-126978] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:31:19.968 [DEBUG] [Thread-126978] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:31:19.969 [DEBUG] [Thread-126978] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:31:19.970 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:31:19.971 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:31:19.973 [DEBUG] [Thread-126978] [transport.py] [_log()] userauth is OK
2025-11-04T02:31:19.973 [DEBUG] [Thread-126978] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:31:19.973 [DEBUG] [Thread-126978] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:31:19.973 [DEBUG] [Thread-126978] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:31:19.973 [DEBUG] [Thread-126978] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:31:20.000 [INFO] [Thread-126978] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:31:20.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:31:20.605 [DEBUG] [Thread-126978] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:31:20.606 [DEBUG] [Thread-126978] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:31:20.607 [DEBUG] [Thread-126978] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:31:20.647 [DEBUG] [Thread-126978] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:31:20.648 [DEBUG] [Thread-126978] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:31:20.651 [DEBUG] [Thread-126978] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:31:20.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:31:20.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:31:20.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:31:20.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:31:20.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:31:20.681 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:31:20.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:31:20.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:31:20.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:31:20.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.021278 -999.00  +16.40  17.60     19   -6.70 1 1 1 1 1     0    0 23.57 25.18 ZNESW 18.6 17.6 311.8 20.7 16.8 -23.9 16.7 -22.9 16.4 -22.7 16.7 -23.5
2025-11-04T02:31:20.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:31:20.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:31:20.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.021278
2025-11-04T02:31:20.689 [DEBUG] [Thread-126978] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:31:20.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:31:20.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:31:20.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:31:20.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:31:20.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:31:20.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:30:54', tmtdew=27.31, humidity=14.42, cloud=0.0, wind=19.43, temperature=16.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:30:55', seeing=1.02, atlas_timestamp='2025-11-04T00:30:38.419', atlas_cloud=1, atlas_rain=1, zp_data=[0.019249999999999545, 0.03275000000000006, 0.047250000000000014, 0.0779999999999994, 0.050499999999999545, 0.12125000000000163, 0.004999999999999005, 0.04125000000000156, 0.050499999999999545, 0.08500000000000085, 0.11624999999999908, 0.03700000000000081, 0.19699999999999918, -0.01875000000000071, 0.0030000000000001137, -0.028999999999999915, 0.08724999999999916, 0.05799999999999983, 0.17849999999999966, 0.09474999999999767, 0.1789999999999985, -0.20575000000000188, 0.10725000000000051, 0.0337499999999995, 0.07199999999999918, 0.15799999999999947, 0.09274999999999878, 0.2104999999999997, 0.32200000000000006, -0.4029999999999987, 0.1440000000000019, 0.0705000000000009, 0.16774999999999984], zp_timestamp='2025-11-04T00:27:00')
2025-11-04T02:31:20.799 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:31:20.811 [DEBUG] [Thread-126981] [transport.py] [_log()] starting thread (client mode): 0xed044c0
2025-11-04T02:31:20.811 [DEBUG] [Thread-126981] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:31:20.827 [DEBUG] [Thread-126981] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:31:20.827 [INFO] [Thread-126981] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:31:20.835 [DEBUG] [Thread-126981] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:31:20.835 [DEBUG] [Thread-126981] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:31:20.835 [DEBUG] [Thread-126981] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:31:20.835 [DEBUG] [Thread-126981] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:31:20.835 [DEBUG] [Thread-126981] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:31:20.835 [DEBUG] [Thread-126981] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:31:20.835 [DEBUG] [Thread-126981] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:31:20.835 [DEBUG] [Thread-126981] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:31:20.835 [DEBUG] [Thread-126981] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:31:20.835 [DEBUG] [Thread-126981] [transport.py] [_log()] client lang: <none>
2025-11-04T02:31:20.835 [DEBUG] [Thread-126981] [transport.py] [_log()] server lang: <none>
2025-11-04T02:31:20.835 [DEBUG] [Thread-126981] [transport.py] [_log()] kex follows: False
2025-11-04T02:31:20.835 [DEBUG] [Thread-126981] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:31:20.836 [DEBUG] [Thread-126981] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:31:20.836 [DEBUG] [Thread-126981] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:31:20.836 [DEBUG] [Thread-126981] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:31:20.836 [DEBUG] [Thread-126981] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:31:20.836 [DEBUG] [Thread-126981] [transport.py] [_log()] Compression: none
2025-11-04T02:31:20.836 [DEBUG] [Thread-126981] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:31:20.897 [DEBUG] [Thread-126981] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:31:20.899 [DEBUG] [Thread-126981] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:31:20.899 [DEBUG] [Thread-126981] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:31:20.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:31:20.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:31:20.958 [DEBUG] [Thread-126981] [transport.py] [_log()] userauth is OK
2025-11-04T02:31:20.959 [DEBUG] [Thread-126981] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:31:20.959 [DEBUG] [Thread-126981] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:31:20.959 [DEBUG] [Thread-126981] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:31:20.959 [DEBUG] [Thread-126981] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:31:20.981 [INFO] [Thread-126981] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:31:20.981 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:31:20.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:31:21.827 [DEBUG] [Thread-126981] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:31:21.827 [DEBUG] [Thread-126981] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:31:21.867 [DEBUG] [Thread-126981] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:31:21.867 [DEBUG] [Thread-126981] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:31:21.876 [DEBUG] [Thread-126981] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:31:21.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:31:21.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:31:21.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:31:21.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:31:21.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:31:21.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:31:21.916 [DEBUG] [Thread-126981] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:31:22.222 [DEBUG] [Thread-126983 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:31:37.343 [DEBUG] [Thread-126984 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:31:44.723 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:31:44.724 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:31:51.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:31:51.918 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:31:51.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:31:52.376 [DEBUG] [Thread-126985 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:31:52.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 31, 27), 27.34, 14.39, 0.0, 19.67, 16.51, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:31:52.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:31:27
2025-11-04T02:31:52.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:31:53.172 [DEBUG] [Thread-126986] [transport.py] [_log()] starting thread (client mode): 0x117bd990
2025-11-04T02:31:53.172 [DEBUG] [Thread-126986] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:31:53.190 [DEBUG] [Thread-126986] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:31:53.190 [INFO] [Thread-126986] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:31:53.193 [DEBUG] [Thread-126986] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:31:53.194 [DEBUG] [Thread-126986] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:31:53.194 [DEBUG] [Thread-126986] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:31:53.194 [DEBUG] [Thread-126986] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:31:53.194 [DEBUG] [Thread-126986] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:31:53.194 [DEBUG] [Thread-126986] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:31:53.194 [DEBUG] [Thread-126986] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:31:53.194 [DEBUG] [Thread-126986] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:31:53.194 [DEBUG] [Thread-126986] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:31:53.194 [DEBUG] [Thread-126986] [transport.py] [_log()] client lang: <none>
2025-11-04T02:31:53.194 [DEBUG] [Thread-126986] [transport.py] [_log()] server lang: <none>
2025-11-04T02:31:53.194 [DEBUG] [Thread-126986] [transport.py] [_log()] kex follows: False
2025-11-04T02:31:53.194 [DEBUG] [Thread-126986] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:31:53.195 [DEBUG] [Thread-126986] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:31:53.195 [DEBUG] [Thread-126986] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:31:53.195 [DEBUG] [Thread-126986] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:31:53.195 [DEBUG] [Thread-126986] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:31:53.195 [DEBUG] [Thread-126986] [transport.py] [_log()] Compression: none
2025-11-04T02:31:53.195 [DEBUG] [Thread-126986] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:31:53.225 [DEBUG] [Thread-126986] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:31:53.229 [DEBUG] [Thread-126986] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:31:53.230 [DEBUG] [Thread-126986] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:31:53.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:31:53.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:31:53.234 [DEBUG] [Thread-126986] [transport.py] [_log()] userauth is OK
2025-11-04T02:31:53.235 [DEBUG] [Thread-126986] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:31:53.235 [DEBUG] [Thread-126986] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:31:53.235 [DEBUG] [Thread-126986] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:31:53.235 [DEBUG] [Thread-126986] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:31:53.261 [INFO] [Thread-126986] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:31:53.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:31:53.887 [DEBUG] [Thread-126986] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:31:53.887 [DEBUG] [Thread-126986] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:31:53.888 [DEBUG] [Thread-126986] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:31:53.928 [DEBUG] [Thread-126986] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:31:53.928 [DEBUG] [Thread-126986] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:31:53.931 [DEBUG] [Thread-126986] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:31:53.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:31:53.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:31:53.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:31:53.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:31:53.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:31:53.950 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:31:53.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:31:53.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:31:53.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:31:53.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.021972 -999.00  +16.50  17.23     19   -6.80 1 1 1 1 1     0    0 23.47 27.79 ZNESW 19.9 17.2 306.6 21.5 16.8 -23.7 16.6 -22.7 16.4 -22.2 16.7 -23.5
2025-11-04T02:31:53.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:31:53.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:31:53.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.021972
2025-11-04T02:31:53.957 [DEBUG] [Thread-126986] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:31:53.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:31:53.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:31:53.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:31:53.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:31:53.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:31:53.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:31:27', tmtdew=27.34, humidity=14.39, cloud=0.0, wind=19.67, temperature=16.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:31:27', seeing=0.98, atlas_timestamp='2025-11-04T00:31:38.381', atlas_cloud=1, atlas_rain=1, zp_data=[0.04974999999999952, 0.06575000000000131, 0.12925000000000075, 0.10949999999999882, 0.10300000000000153, 0.1957500000000003, 0.026999999999999247, 0.09825000000000017, 0.1144999999999996, 0.11749999999999972, 0.14624999999999844, 0.15700000000000003, 0.2629999999999999, 0.06825000000000081, 0.09450000000000003, 0.02999999999999936, 0.11574999999999847, 0.13900000000000112, 0.19299999999999962, 0.12524999999999942, 0.2104999999999979, 0.026749999999998053, 0.1332500000000003, 0.1067499999999999, 0.11599999999999966, 0.2004999999999999, 0.17275000000000063, 0.29600000000000115, 0.33999999999999986, -0.5689999999999991, 0.1739999999999995, 0.15100000000000158, 0.1697500000000005], zp_timestamp='2025-11-04T00:30:00')
2025-11-04T02:31:54.038 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:31:54.052 [DEBUG] [Thread-126989] [transport.py] [_log()] starting thread (client mode): 0x117bc850
2025-11-04T02:31:54.052 [DEBUG] [Thread-126989] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:31:54.070 [DEBUG] [Thread-126989] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:31:54.070 [INFO] [Thread-126989] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:31:54.078 [DEBUG] [Thread-126989] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:31:54.078 [DEBUG] [Thread-126989] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:31:54.078 [DEBUG] [Thread-126989] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:31:54.078 [DEBUG] [Thread-126989] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:31:54.078 [DEBUG] [Thread-126989] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:31:54.078 [DEBUG] [Thread-126989] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:31:54.078 [DEBUG] [Thread-126989] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:31:54.078 [DEBUG] [Thread-126989] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:31:54.078 [DEBUG] [Thread-126989] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:31:54.078 [DEBUG] [Thread-126989] [transport.py] [_log()] client lang: <none>
2025-11-04T02:31:54.078 [DEBUG] [Thread-126989] [transport.py] [_log()] server lang: <none>
2025-11-04T02:31:54.078 [DEBUG] [Thread-126989] [transport.py] [_log()] kex follows: False
2025-11-04T02:31:54.078 [DEBUG] [Thread-126989] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:31:54.078 [DEBUG] [Thread-126989] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:31:54.078 [DEBUG] [Thread-126989] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:31:54.078 [DEBUG] [Thread-126989] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:31:54.078 [DEBUG] [Thread-126989] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:31:54.078 [DEBUG] [Thread-126989] [transport.py] [_log()] Compression: none
2025-11-04T02:31:54.078 [DEBUG] [Thread-126989] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:31:54.135 [DEBUG] [Thread-126989] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:31:54.135 [DEBUG] [Thread-126989] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:31:54.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:31:54.135 [DEBUG] [Thread-126989] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:31:54.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:31:54.193 [DEBUG] [Thread-126989] [transport.py] [_log()] userauth is OK
2025-11-04T02:31:54.193 [DEBUG] [Thread-126989] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:31:54.193 [DEBUG] [Thread-126989] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:31:54.193 [DEBUG] [Thread-126989] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:31:54.193 [DEBUG] [Thread-126989] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:31:54.209 [INFO] [Thread-126989] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:31:54.209 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:31:54.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:31:55.126 [DEBUG] [Thread-126989] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:31:55.126 [DEBUG] [Thread-126989] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:31:55.173 [DEBUG] [Thread-126989] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:31:55.173 [DEBUG] [Thread-126989] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:31:55.182 [DEBUG] [Thread-126989] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:31:55.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:31:55.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:31:55.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:31:55.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:31:55.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:31:55.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:31:55.218 [DEBUG] [Thread-126989] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:32:03.054 [DEBUG] [Thread-126991 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:32:07.414 [DEBUG] [Thread-126992 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:32:22.494 [DEBUG] [Thread-126993 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:32:25.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:32:25.243 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:32:25.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:32:26.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 31, 59), 27.34, 14.39, 0.0, 17.17, 16.51, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:32:26.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:31:59
2025-11-04T02:32:26.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:32:26.588 [DEBUG] [Thread-126994] [transport.py] [_log()] starting thread (client mode): 0x11799330
2025-11-04T02:32:26.589 [DEBUG] [Thread-126994] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:32:26.602 [DEBUG] [Thread-126994] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:32:26.602 [INFO] [Thread-126994] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:32:26.606 [DEBUG] [Thread-126994] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:32:26.606 [DEBUG] [Thread-126994] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:32:26.606 [DEBUG] [Thread-126994] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:32:26.606 [DEBUG] [Thread-126994] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:32:26.606 [DEBUG] [Thread-126994] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:32:26.606 [DEBUG] [Thread-126994] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:32:26.606 [DEBUG] [Thread-126994] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:32:26.606 [DEBUG] [Thread-126994] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:32:26.606 [DEBUG] [Thread-126994] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:32:26.606 [DEBUG] [Thread-126994] [transport.py] [_log()] client lang: <none>
2025-11-04T02:32:26.606 [DEBUG] [Thread-126994] [transport.py] [_log()] server lang: <none>
2025-11-04T02:32:26.607 [DEBUG] [Thread-126994] [transport.py] [_log()] kex follows: False
2025-11-04T02:32:26.607 [DEBUG] [Thread-126994] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:32:26.607 [DEBUG] [Thread-126994] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:32:26.607 [DEBUG] [Thread-126994] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:32:26.607 [DEBUG] [Thread-126994] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:32:26.607 [DEBUG] [Thread-126994] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:32:26.607 [DEBUG] [Thread-126994] [transport.py] [_log()] Compression: none
2025-11-04T02:32:26.607 [DEBUG] [Thread-126994] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:32:26.640 [DEBUG] [Thread-126994] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:32:26.646 [DEBUG] [Thread-126994] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:32:26.648 [DEBUG] [Thread-126994] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:32:26.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:32:26.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:32:26.653 [DEBUG] [Thread-126994] [transport.py] [_log()] userauth is OK
2025-11-04T02:32:26.654 [DEBUG] [Thread-126994] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:32:26.654 [DEBUG] [Thread-126994] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:32:26.654 [DEBUG] [Thread-126994] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:32:26.654 [DEBUG] [Thread-126994] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:32:26.681 [INFO] [Thread-126994] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:32:26.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:32:27.321 [DEBUG] [Thread-126994] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:32:27.330 [DEBUG] [Thread-126994] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:32:27.332 [DEBUG] [Thread-126994] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:32:27.362 [DEBUG] [Thread-126994] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:32:27.363 [DEBUG] [Thread-126994] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:32:27.366 [DEBUG] [Thread-126994] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:32:27.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:32:27.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:32:27.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:32:27.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:32:27.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:32:27.393 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:32:27.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:32:27.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:32:27.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:32:27.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.022319 -999.00  +16.50  18.27     19   -6.80 1 1 1 1 1     0    0 23.87 29.62 ZNESW 18.0 18.3 308.6 23.8 16.8 -23.8 16.7 -23.0 16.4 -22.6 16.7 -23.5
2025-11-04T02:32:27.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:32:27.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:32:27.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.022319
2025-11-04T02:32:27.401 [DEBUG] [Thread-126994] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:32:27.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:32:27.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:32:27.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:32:27.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:32:27.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:32:27.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:31:59', tmtdew=27.34, humidity=14.39, cloud=0.0, wind=17.17, temperature=16.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:32:00', seeing=0.98, atlas_timestamp='2025-11-04T00:32:08.362', atlas_cloud=1, atlas_rain=1, zp_data=[0.04974999999999952, 0.06575000000000131, 0.12925000000000075, 0.10949999999999882, 0.10300000000000153, 0.1957500000000003, 0.026999999999999247, 0.09825000000000017, 0.1144999999999996, 0.11749999999999972, 0.14624999999999844, 0.15700000000000003, 0.2629999999999999, 0.06825000000000081, 0.09450000000000003, 0.02999999999999936, 0.11574999999999847, 0.13900000000000112, 0.19299999999999962, 0.12524999999999942, 0.2104999999999979, 0.026749999999998053, 0.1332500000000003, 0.1067499999999999, 0.11599999999999966, 0.2004999999999999, 0.17275000000000063, 0.29600000000000115, 0.33999999999999986, -0.5689999999999991, 0.1739999999999995, 0.15100000000000158, 0.1697500000000005], zp_timestamp='2025-11-04T00:30:00')
2025-11-04T02:32:27.500 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:32:27.511 [DEBUG] [Thread-126997] [transport.py] [_log()] starting thread (client mode): 0xed23910
2025-11-04T02:32:27.512 [DEBUG] [Thread-126997] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:32:27.527 [DEBUG] [Thread-126997] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:32:27.527 [INFO] [Thread-126997] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:32:27.535 [DEBUG] [Thread-126997] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:32:27.535 [DEBUG] [Thread-126997] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:32:27.535 [DEBUG] [Thread-126997] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:32:27.535 [DEBUG] [Thread-126997] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:32:27.535 [DEBUG] [Thread-126997] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:32:27.535 [DEBUG] [Thread-126997] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:32:27.535 [DEBUG] [Thread-126997] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:32:27.535 [DEBUG] [Thread-126997] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:32:27.535 [DEBUG] [Thread-126997] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:32:27.535 [DEBUG] [Thread-126997] [transport.py] [_log()] client lang: <none>
2025-11-04T02:32:27.535 [DEBUG] [Thread-126997] [transport.py] [_log()] server lang: <none>
2025-11-04T02:32:27.535 [DEBUG] [Thread-126997] [transport.py] [_log()] kex follows: False
2025-11-04T02:32:27.535 [DEBUG] [Thread-126997] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:32:27.535 [DEBUG] [Thread-126997] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:32:27.535 [DEBUG] [Thread-126997] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:32:27.535 [DEBUG] [Thread-126997] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:32:27.535 [DEBUG] [Thread-126997] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:32:27.535 [DEBUG] [Thread-126997] [transport.py] [_log()] Compression: none
2025-11-04T02:32:27.535 [DEBUG] [Thread-126997] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:32:27.591 [DEBUG] [Thread-126997] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:32:27.592 [DEBUG] [Thread-126997] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:32:27.593 [DEBUG] [Thread-126997] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:32:27.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:32:27.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:32:27.652 [DEBUG] [Thread-126997] [transport.py] [_log()] userauth is OK
2025-11-04T02:32:27.653 [DEBUG] [Thread-126997] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:32:27.653 [DEBUG] [Thread-126997] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:32:27.653 [DEBUG] [Thread-126997] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:32:27.653 [DEBUG] [Thread-126997] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:32:27.674 [INFO] [Thread-126997] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:32:27.675 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:32:27.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:32:28.514 [DEBUG] [Thread-126997] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:32:28.514 [DEBUG] [Thread-126997] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:32:28.565 [DEBUG] [Thread-126997] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:32:28.565 [DEBUG] [Thread-126997] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:32:28.577 [DEBUG] [Thread-126997] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:32:28.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:32:28.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:32:28.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:32:28.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:32:28.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:32:28.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:32:28.624 [DEBUG] [Thread-126997] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:32:37.525 [DEBUG] [Thread-126999 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:32:44.933 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:32:44.934 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:32:52.614 [DEBUG] [Thread-127000 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:32:58.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:32:58.658 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:32:58.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:32:59.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 32, 32), 27.33, 14.39, 0.0, 17.29, 16.48, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:32:59.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:32:32
2025-11-04T02:32:59.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:32:59.844 [DEBUG] [Thread-127001] [transport.py] [_log()] starting thread (client mode): 0xed07fd0
2025-11-04T02:32:59.844 [DEBUG] [Thread-127001] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:32:59.859 [DEBUG] [Thread-127001] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:32:59.859 [INFO] [Thread-127001] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:32:59.863 [DEBUG] [Thread-127001] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:32:59.863 [DEBUG] [Thread-127001] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:32:59.863 [DEBUG] [Thread-127001] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:32:59.863 [DEBUG] [Thread-127001] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:32:59.863 [DEBUG] [Thread-127001] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:32:59.863 [DEBUG] [Thread-127001] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:32:59.863 [DEBUG] [Thread-127001] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:32:59.863 [DEBUG] [Thread-127001] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:32:59.863 [DEBUG] [Thread-127001] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:32:59.863 [DEBUG] [Thread-127001] [transport.py] [_log()] client lang: <none>
2025-11-04T02:32:59.863 [DEBUG] [Thread-127001] [transport.py] [_log()] server lang: <none>
2025-11-04T02:32:59.863 [DEBUG] [Thread-127001] [transport.py] [_log()] kex follows: False
2025-11-04T02:32:59.863 [DEBUG] [Thread-127001] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:32:59.864 [DEBUG] [Thread-127001] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:32:59.864 [DEBUG] [Thread-127001] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:32:59.864 [DEBUG] [Thread-127001] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:32:59.864 [DEBUG] [Thread-127001] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:32:59.864 [DEBUG] [Thread-127001] [transport.py] [_log()] Compression: none
2025-11-04T02:32:59.864 [DEBUG] [Thread-127001] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:32:59.900 [DEBUG] [Thread-127001] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:32:59.904 [DEBUG] [Thread-127001] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:32:59.907 [DEBUG] [Thread-127001] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:32:59.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:32:59.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:32:59.946 [DEBUG] [Thread-127001] [transport.py] [_log()] userauth is OK
2025-11-04T02:32:59.946 [DEBUG] [Thread-127001] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:32:59.947 [DEBUG] [Thread-127001] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:32:59.947 [DEBUG] [Thread-127001] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:32:59.947 [DEBUG] [Thread-127001] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:32:59.976 [INFO] [Thread-127001] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:32:59.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:33:00.586 [DEBUG] [Thread-127001] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:33:00.586 [DEBUG] [Thread-127001] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:33:00.597 [DEBUG] [Thread-127001] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:33:00.627 [DEBUG] [Thread-127001] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:33:00.627 [DEBUG] [Thread-127001] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:33:00.631 [DEBUG] [Thread-127001] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:33:00.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:33:00.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:33:00.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:33:00.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:33:00.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:33:00.659 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:33:00.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:33:00.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:33:00.662 [DEBUG] [Thread-127001] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:33:00.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:33:00.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.022667 -999.00  +16.50  17.37     19   -6.70 1 1 1 1 1     0    0 24.37 31.14 ZNESW 17.6 17.4 312.2 19.8 -999.0 -999.0 16.6 -22.9 16.4 -22.5 16.7 -23.5
2025-11-04T02:33:00.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:33:00.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:33:00.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.022667
2025-11-04T02:33:00.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:33:00.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:33:00.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:33:00.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:33:00.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:33:00.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:32:32', tmtdew=27.33, humidity=14.39, cloud=0.0, wind=17.29, temperature=16.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:32:33', seeing=1.04, atlas_timestamp='2025-11-04T00:32:38.429', atlas_cloud=1, atlas_rain=1, zp_data=[0.04974999999999952, 0.06575000000000131, 0.12925000000000075, 0.10949999999999882, 0.10300000000000153, 0.1957500000000003, 0.026999999999999247, 0.09825000000000017, 0.1144999999999996, 0.11749999999999972, 0.14624999999999844, 0.15700000000000003, 0.2629999999999999, 0.06825000000000081, 0.09450000000000003, 0.02999999999999936, 0.11574999999999847, 0.13900000000000112, 0.19299999999999962, 0.12524999999999942, 0.2104999999999979, 0.026749999999998053, 0.1332500000000003, 0.1067499999999999, 0.11599999999999966, 0.2004999999999999, 0.17275000000000063, 0.29600000000000115, 0.33999999999999986, -0.5689999999999991, 0.1739999999999995, 0.15100000000000158, 0.1697500000000005], zp_timestamp='2025-11-04T00:30:00')
2025-11-04T02:33:00.758 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:33:00.771 [DEBUG] [Thread-127004] [transport.py] [_log()] starting thread (client mode): 0xed37250
2025-11-04T02:33:00.771 [DEBUG] [Thread-127004] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:33:00.786 [DEBUG] [Thread-127004] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:33:00.786 [INFO] [Thread-127004] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:33:00.794 [DEBUG] [Thread-127004] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:33:00.794 [DEBUG] [Thread-127004] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:33:00.794 [DEBUG] [Thread-127004] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:33:00.794 [DEBUG] [Thread-127004] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:33:00.794 [DEBUG] [Thread-127004] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:33:00.794 [DEBUG] [Thread-127004] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:33:00.794 [DEBUG] [Thread-127004] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:33:00.794 [DEBUG] [Thread-127004] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:33:00.794 [DEBUG] [Thread-127004] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:33:00.794 [DEBUG] [Thread-127004] [transport.py] [_log()] client lang: <none>
2025-11-04T02:33:00.794 [DEBUG] [Thread-127004] [transport.py] [_log()] server lang: <none>
2025-11-04T02:33:00.794 [DEBUG] [Thread-127004] [transport.py] [_log()] kex follows: False
2025-11-04T02:33:00.794 [DEBUG] [Thread-127004] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:33:00.794 [DEBUG] [Thread-127004] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:33:00.794 [DEBUG] [Thread-127004] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:33:00.794 [DEBUG] [Thread-127004] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:33:00.794 [DEBUG] [Thread-127004] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:33:00.794 [DEBUG] [Thread-127004] [transport.py] [_log()] Compression: none
2025-11-04T02:33:00.794 [DEBUG] [Thread-127004] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:33:00.854 [DEBUG] [Thread-127004] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:33:00.855 [DEBUG] [Thread-127004] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:33:00.855 [DEBUG] [Thread-127004] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:33:00.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:33:00.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:33:00.916 [DEBUG] [Thread-127004] [transport.py] [_log()] userauth is OK
2025-11-04T02:33:00.916 [DEBUG] [Thread-127004] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:33:00.916 [DEBUG] [Thread-127004] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:33:00.916 [DEBUG] [Thread-127004] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:33:00.916 [DEBUG] [Thread-127004] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:33:00.942 [INFO] [Thread-127004] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:33:00.943 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:33:00.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:33:01.799 [DEBUG] [Thread-127004] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:33:01.800 [DEBUG] [Thread-127004] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:33:01.841 [DEBUG] [Thread-127004] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:33:01.841 [DEBUG] [Thread-127004] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:33:01.852 [DEBUG] [Thread-127004] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:33:01.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:33:01.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:33:01.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:33:01.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:33:01.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:33:01.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:33:01.902 [DEBUG] [Thread-127004] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:33:03.357 [DEBUG] [Thread-127006 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:33:07.650 [DEBUG] [Thread-127007 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:33:22.717 [DEBUG] [Thread-127008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:33:31.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:33:31.907 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:33:31.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:33:32.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 33, 5), 27.29, 14.42, 0.0, 17.57, 16.43, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:33:32.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:33:05
2025-11-04T02:33:32.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:33:33.052 [DEBUG] [Thread-127009] [transport.py] [_log()] starting thread (client mode): 0xed22fb0
2025-11-04T02:33:33.054 [DEBUG] [Thread-127009] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:33:33.063 [DEBUG] [Thread-127009] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:33:33.063 [INFO] [Thread-127009] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:33:33.068 [DEBUG] [Thread-127009] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:33:33.068 [DEBUG] [Thread-127009] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:33:33.068 [DEBUG] [Thread-127009] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:33:33.068 [DEBUG] [Thread-127009] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:33:33.069 [DEBUG] [Thread-127009] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:33:33.069 [DEBUG] [Thread-127009] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:33:33.069 [DEBUG] [Thread-127009] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:33:33.069 [DEBUG] [Thread-127009] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:33:33.069 [DEBUG] [Thread-127009] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:33:33.069 [DEBUG] [Thread-127009] [transport.py] [_log()] client lang: <none>
2025-11-04T02:33:33.069 [DEBUG] [Thread-127009] [transport.py] [_log()] server lang: <none>
2025-11-04T02:33:33.069 [DEBUG] [Thread-127009] [transport.py] [_log()] kex follows: False
2025-11-04T02:33:33.069 [DEBUG] [Thread-127009] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:33:33.070 [DEBUG] [Thread-127009] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:33:33.070 [DEBUG] [Thread-127009] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:33:33.071 [DEBUG] [Thread-127009] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:33:33.071 [DEBUG] [Thread-127009] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:33:33.071 [DEBUG] [Thread-127009] [transport.py] [_log()] Compression: none
2025-11-04T02:33:33.071 [DEBUG] [Thread-127009] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:33:33.106 [DEBUG] [Thread-127009] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:33:33.111 [DEBUG] [Thread-127009] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:33:33.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:33:33.116 [DEBUG] [Thread-127009] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:33:33.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:33:33.119 [DEBUG] [Thread-127009] [transport.py] [_log()] userauth is OK
2025-11-04T02:33:33.119 [DEBUG] [Thread-127009] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:33:33.120 [DEBUG] [Thread-127009] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:33:33.120 [DEBUG] [Thread-127009] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:33:33.120 [DEBUG] [Thread-127009] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:33:33.146 [INFO] [Thread-127009] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:33:33.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:33:33.762 [DEBUG] [Thread-127009] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:33:33.762 [DEBUG] [Thread-127009] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:33:33.764 [DEBUG] [Thread-127009] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:33:33.803 [DEBUG] [Thread-127009] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:33:33.804 [DEBUG] [Thread-127009] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:33:33.808 [DEBUG] [Thread-127009] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:33:33.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:33:33.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:33:33.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:33:33.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:33:33.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:33:33.837 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:33:33.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:33:33.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:33:33.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:33:33.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.023014 -999.00  +16.50  17.16     19   -6.70 1 1 1 1 1     0    0 24.25 30.66 ZNESW 16.5 17.2 312.6 20.3 16.8 -24.0 16.6 -22.9 16.4 -22.5 16.7 -23.6
2025-11-04T02:33:33.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:33:33.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:33:33.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.023014
2025-11-04T02:33:33.847 [DEBUG] [Thread-127009] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:33:33.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:33:33.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:33:33.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:33:33.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:33:33.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:33:33.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:33:05', tmtdew=27.29, humidity=14.42, cloud=0.0, wind=17.57, temperature=16.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:33:05', seeing=1.04, atlas_timestamp='2025-11-04T00:33:08.410', atlas_cloud=1, atlas_rain=1, zp_data=[0.04974999999999952, 0.06575000000000131, 0.12925000000000075, 0.10949999999999882, 0.10300000000000153, 0.1957500000000003, 0.026999999999999247, 0.09825000000000017, 0.1144999999999996, 0.11749999999999972, 0.14624999999999844, 0.15700000000000003, 0.2629999999999999, 0.06825000000000081, 0.09450000000000003, 0.02999999999999936, 0.11574999999999847, 0.13900000000000112, 0.19299999999999962, 0.12524999999999942, 0.2104999999999979, 0.026749999999998053, 0.1332500000000003, 0.1067499999999999, 0.11599999999999966, 0.2004999999999999, 0.17275000000000063, 0.29600000000000115, 0.33999999999999986, -0.5689999999999991, 0.1739999999999995, 0.15100000000000158, 0.1697500000000005], zp_timestamp='2025-11-04T00:30:00')
2025-11-04T02:33:33.953 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:33:33.968 [DEBUG] [Thread-127012] [transport.py] [_log()] starting thread (client mode): 0x1179a1d0
2025-11-04T02:33:33.969 [DEBUG] [Thread-127012] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:33:33.986 [DEBUG] [Thread-127012] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:33:33.986 [INFO] [Thread-127012] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:33:33.999 [DEBUG] [Thread-127012] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:33:33.999 [DEBUG] [Thread-127012] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:33:33.999 [DEBUG] [Thread-127012] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:33:33.999 [DEBUG] [Thread-127012] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:33:33.999 [DEBUG] [Thread-127012] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:33:34.000 [DEBUG] [Thread-127012] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:33:34.000 [DEBUG] [Thread-127012] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:33:34.000 [DEBUG] [Thread-127012] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:33:34.000 [DEBUG] [Thread-127012] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:33:34.000 [DEBUG] [Thread-127012] [transport.py] [_log()] client lang: <none>
2025-11-04T02:33:34.000 [DEBUG] [Thread-127012] [transport.py] [_log()] server lang: <none>
2025-11-04T02:33:34.000 [DEBUG] [Thread-127012] [transport.py] [_log()] kex follows: False
2025-11-04T02:33:34.000 [DEBUG] [Thread-127012] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:33:34.001 [DEBUG] [Thread-127012] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:33:34.001 [DEBUG] [Thread-127012] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:33:34.001 [DEBUG] [Thread-127012] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:33:34.001 [DEBUG] [Thread-127012] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:33:34.001 [DEBUG] [Thread-127012] [transport.py] [_log()] Compression: none
2025-11-04T02:33:34.005 [DEBUG] [Thread-127012] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:33:34.061 [DEBUG] [Thread-127012] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:33:34.061 [DEBUG] [Thread-127012] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:33:34.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:33:34.063 [DEBUG] [Thread-127012] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:33:34.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:33:34.124 [DEBUG] [Thread-127012] [transport.py] [_log()] userauth is OK
2025-11-04T02:33:34.124 [DEBUG] [Thread-127012] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:33:34.124 [DEBUG] [Thread-127012] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:33:34.124 [DEBUG] [Thread-127012] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:33:34.124 [DEBUG] [Thread-127012] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:33:34.140 [INFO] [Thread-127012] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:33:34.140 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:33:34.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:33:34.990 [DEBUG] [Thread-127012] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:33:34.990 [DEBUG] [Thread-127012] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:33:35.040 [DEBUG] [Thread-127012] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:33:35.040 [DEBUG] [Thread-127012] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:33:35.049 [DEBUG] [Thread-127012] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:33:35.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:33:35.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:33:35.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:33:35.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:33:35.085 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:33:35.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:33:35.093 [DEBUG] [Thread-127012] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:33:37.754 [DEBUG] [Thread-127014 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:33:45.148 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:33:45.150 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:33:50.121 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:33:52.823 [DEBUG] [Thread-127015 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:33:53.270 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:33:58.290 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:34:03.712 [DEBUG] [Thread-127016 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:34:04.690 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:34:05.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:34:05.118 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:34:05.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:34:05.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 33, 38), 27.31, 14.39, 0.0, 19.44, 16.38, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:34:05.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:33:38
2025-11-04T02:34:06.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:34:06.306 [DEBUG] [Thread-127017] [transport.py] [_log()] starting thread (client mode): 0xed371f0
2025-11-04T02:34:06.307 [DEBUG] [Thread-127017] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:34:06.320 [DEBUG] [Thread-127017] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:34:06.321 [INFO] [Thread-127017] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:34:06.324 [DEBUG] [Thread-127017] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:34:06.324 [DEBUG] [Thread-127017] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:34:06.324 [DEBUG] [Thread-127017] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:34:06.324 [DEBUG] [Thread-127017] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:34:06.324 [DEBUG] [Thread-127017] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:34:06.324 [DEBUG] [Thread-127017] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:34:06.324 [DEBUG] [Thread-127017] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:34:06.325 [DEBUG] [Thread-127017] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:34:06.325 [DEBUG] [Thread-127017] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:34:06.325 [DEBUG] [Thread-127017] [transport.py] [_log()] client lang: <none>
2025-11-04T02:34:06.325 [DEBUG] [Thread-127017] [transport.py] [_log()] server lang: <none>
2025-11-04T02:34:06.325 [DEBUG] [Thread-127017] [transport.py] [_log()] kex follows: False
2025-11-04T02:34:06.325 [DEBUG] [Thread-127017] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:34:06.325 [DEBUG] [Thread-127017] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:34:06.325 [DEBUG] [Thread-127017] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:34:06.325 [DEBUG] [Thread-127017] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:34:06.325 [DEBUG] [Thread-127017] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:34:06.325 [DEBUG] [Thread-127017] [transport.py] [_log()] Compression: none
2025-11-04T02:34:06.325 [DEBUG] [Thread-127017] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:34:06.354 [DEBUG] [Thread-127017] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:34:06.358 [DEBUG] [Thread-127017] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:34:06.359 [DEBUG] [Thread-127017] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:34:06.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:34:06.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:34:06.362 [DEBUG] [Thread-127017] [transport.py] [_log()] userauth is OK
2025-11-04T02:34:06.362 [DEBUG] [Thread-127017] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:34:06.363 [DEBUG] [Thread-127017] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:34:06.363 [DEBUG] [Thread-127017] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:34:06.363 [DEBUG] [Thread-127017] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:34:06.380 [INFO] [Thread-127017] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:34:06.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:34:07.008 [DEBUG] [Thread-127017] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:34:07.008 [DEBUG] [Thread-127017] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:34:07.009 [DEBUG] [Thread-127017] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:34:07.049 [DEBUG] [Thread-127017] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:34:07.049 [DEBUG] [Thread-127017] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:34:07.052 [DEBUG] [Thread-127017] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:34:07.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:34:07.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:34:07.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:34:07.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:34:07.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:34:07.081 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:34:07.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:34:07.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:34:07.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:34:07.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.023361 -999.00  +16.40  17.81     19   -6.80 1 1 1 1 1     0    0 23.43 30.91 ZNESW 19.3 17.8 315.0 21.8 16.8 -23.8 16.6 -22.9 16.4 -22.5 16.7 -23.5
2025-11-04T02:34:07.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:34:07.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:34:07.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.023361
2025-11-04T02:34:07.089 [DEBUG] [Thread-127017] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:34:07.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:34:07.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:34:07.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:34:07.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:34:07.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:34:07.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:33:38', tmtdew=27.31, humidity=14.39, cloud=0.0, wind=19.44, temperature=16.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:33:38', seeing=1.11, atlas_timestamp='2025-11-04T00:33:38.390', atlas_cloud=1, atlas_rain=1, zp_data=[0.04974999999999952, 0.06575000000000131, 0.12925000000000075, 0.10949999999999882, 0.10300000000000153, 0.1957500000000003, 0.026999999999999247, 0.09825000000000017, 0.1144999999999996, 0.11749999999999972, 0.14624999999999844, 0.15700000000000003, 0.2629999999999999, 0.06825000000000081, 0.09450000000000003, 0.02999999999999936, 0.11574999999999847, 0.13900000000000112, 0.19299999999999962, 0.12524999999999942, 0.2104999999999979, 0.026749999999998053, 0.1332500000000003, 0.1067499999999999, 0.11599999999999966, 0.2004999999999999, 0.17275000000000063, 0.29600000000000115, 0.33999999999999986, -0.5689999999999991, 0.1739999999999995, 0.15100000000000158, 0.1697500000000005], zp_timestamp='2025-11-04T00:30:00')
2025-11-04T02:34:07.200 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:34:07.211 [DEBUG] [Thread-127020] [transport.py] [_log()] starting thread (client mode): 0xed35600
2025-11-04T02:34:07.211 [DEBUG] [Thread-127020] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:34:07.226 [DEBUG] [Thread-127020] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:34:07.227 [INFO] [Thread-127020] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:34:07.235 [DEBUG] [Thread-127020] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:34:07.235 [DEBUG] [Thread-127020] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:34:07.235 [DEBUG] [Thread-127020] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:34:07.236 [DEBUG] [Thread-127020] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:34:07.236 [DEBUG] [Thread-127020] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:34:07.236 [DEBUG] [Thread-127020] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:34:07.236 [DEBUG] [Thread-127020] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:34:07.236 [DEBUG] [Thread-127020] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:34:07.236 [DEBUG] [Thread-127020] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:34:07.237 [DEBUG] [Thread-127020] [transport.py] [_log()] client lang: <none>
2025-11-04T02:34:07.237 [DEBUG] [Thread-127020] [transport.py] [_log()] server lang: <none>
2025-11-04T02:34:07.237 [DEBUG] [Thread-127020] [transport.py] [_log()] kex follows: False
2025-11-04T02:34:07.237 [DEBUG] [Thread-127020] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:34:07.237 [DEBUG] [Thread-127020] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:34:07.237 [DEBUG] [Thread-127020] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:34:07.237 [DEBUG] [Thread-127020] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:34:07.237 [DEBUG] [Thread-127020] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:34:07.237 [DEBUG] [Thread-127020] [transport.py] [_log()] Compression: none
2025-11-04T02:34:07.237 [DEBUG] [Thread-127020] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:34:07.294 [DEBUG] [Thread-127020] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:34:07.294 [DEBUG] [Thread-127020] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:34:07.295 [DEBUG] [Thread-127020] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:34:07.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:34:07.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:34:07.353 [DEBUG] [Thread-127020] [transport.py] [_log()] userauth is OK
2025-11-04T02:34:07.353 [DEBUG] [Thread-127020] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:34:07.353 [DEBUG] [Thread-127020] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:34:07.353 [DEBUG] [Thread-127020] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:34:07.353 [DEBUG] [Thread-127020] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:34:07.378 [INFO] [Thread-127020] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:34:07.378 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:34:07.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:34:07.877 [DEBUG] [Thread-127022 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:34:08.214 [DEBUG] [Thread-127020] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:34:08.214 [DEBUG] [Thread-127020] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:34:08.262 [DEBUG] [Thread-127020] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:34:08.262 [DEBUG] [Thread-127020] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:34:08.271 [DEBUG] [Thread-127020] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:34:08.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:34:08.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:34:08.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:34:08.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:34:08.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:34:08.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:34:08.310 [DEBUG] [Thread-127020] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:34:23.031 [DEBUG] [Thread-127023 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:34:23.063 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:34:27.481 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:34:38.071 [DEBUG] [Thread-127024 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:34:38.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:34:38.335 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:34:38.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:34:39.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 34, 10), 27.31, 14.41, 0.0, 19.13, 16.43, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:34:39.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:34:10
2025-11-04T02:34:39.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:34:39.451 [DEBUG] [Thread-127025] [transport.py] [_log()] starting thread (client mode): 0x1179a0b0
2025-11-04T02:34:39.452 [DEBUG] [Thread-127025] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:34:39.462 [DEBUG] [Thread-127025] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:34:39.462 [INFO] [Thread-127025] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:34:39.466 [DEBUG] [Thread-127025] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:34:39.466 [DEBUG] [Thread-127025] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:34:39.466 [DEBUG] [Thread-127025] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:34:39.466 [DEBUG] [Thread-127025] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:34:39.466 [DEBUG] [Thread-127025] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:34:39.466 [DEBUG] [Thread-127025] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:34:39.466 [DEBUG] [Thread-127025] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:34:39.466 [DEBUG] [Thread-127025] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:34:39.466 [DEBUG] [Thread-127025] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:34:39.466 [DEBUG] [Thread-127025] [transport.py] [_log()] client lang: <none>
2025-11-04T02:34:39.466 [DEBUG] [Thread-127025] [transport.py] [_log()] server lang: <none>
2025-11-04T02:34:39.466 [DEBUG] [Thread-127025] [transport.py] [_log()] kex follows: False
2025-11-04T02:34:39.466 [DEBUG] [Thread-127025] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:34:39.467 [DEBUG] [Thread-127025] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:34:39.467 [DEBUG] [Thread-127025] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:34:39.467 [DEBUG] [Thread-127025] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:34:39.467 [DEBUG] [Thread-127025] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:34:39.467 [DEBUG] [Thread-127025] [transport.py] [_log()] Compression: none
2025-11-04T02:34:39.467 [DEBUG] [Thread-127025] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:34:39.493 [DEBUG] [Thread-127025] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:34:39.495 [DEBUG] [Thread-127025] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:34:39.496 [DEBUG] [Thread-127025] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:34:39.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:34:39.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:34:39.498 [DEBUG] [Thread-127025] [transport.py] [_log()] userauth is OK
2025-11-04T02:34:39.498 [DEBUG] [Thread-127025] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:34:39.498 [DEBUG] [Thread-127025] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:34:39.498 [DEBUG] [Thread-127025] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:34:39.498 [DEBUG] [Thread-127025] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:34:39.516 [INFO] [Thread-127025] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:34:39.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:34:40.171 [DEBUG] [Thread-127025] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:34:40.171 [DEBUG] [Thread-127025] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:34:40.171 [DEBUG] [Thread-127025] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:34:40.211 [DEBUG] [Thread-127025] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:34:40.211 [DEBUG] [Thread-127025] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:34:40.214 [DEBUG] [Thread-127025] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:34:40.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:34:40.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:34:40.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:34:40.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:34:40.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:34:40.235 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:34:40.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:34:40.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:34:40.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:34:40.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.023708 -999.00  +16.40  16.88     19   -6.80 1 1 1 1 1     0    0 23.58 32.04 ZNESW 16.6 16.9 312.2 21.0 16.8 -23.8 16.6 -22.9 16.4 -22.7 16.6 -23.5
2025-11-04T02:34:40.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:34:40.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:34:40.237 [DEBUG] [Thread-127025] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:34:40.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.023708
2025-11-04T02:34:40.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:34:40.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:34:40.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:34:40.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:34:40.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:34:40.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:34:10', tmtdew=27.31, humidity=14.41, cloud=0.0, wind=19.13, temperature=16.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:34:11', seeing=1.11, atlas_timestamp='2025-11-04T00:34:08.371', atlas_cloud=1, atlas_rain=1, zp_data=[0.04974999999999952, 0.06575000000000131, 0.12925000000000075, 0.10949999999999882, 0.10300000000000153, 0.1957500000000003, 0.026999999999999247, 0.09825000000000017, 0.1144999999999996, 0.11749999999999972, 0.14624999999999844, 0.15700000000000003, 0.2629999999999999, 0.06825000000000081, 0.09450000000000003, 0.02999999999999936, 0.11574999999999847, 0.13900000000000112, 0.19299999999999962, 0.12524999999999942, 0.2104999999999979, 0.026749999999998053, 0.1332500000000003, 0.1067499999999999, 0.11599999999999966, 0.2004999999999999, 0.17275000000000063, 0.29600000000000115, 0.33999999999999986, -0.5689999999999991, 0.1739999999999995, 0.15100000000000158, 0.1697500000000005], zp_timestamp='2025-11-04T00:33:00')
2025-11-04T02:34:40.336 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:34:40.349 [DEBUG] [Thread-127028] [transport.py] [_log()] starting thread (client mode): 0x819bfd0
2025-11-04T02:34:40.350 [DEBUG] [Thread-127028] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:34:40.367 [DEBUG] [Thread-127028] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:34:40.367 [INFO] [Thread-127028] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:34:40.377 [DEBUG] [Thread-127028] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:34:40.377 [DEBUG] [Thread-127028] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:34:40.377 [DEBUG] [Thread-127028] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:34:40.378 [DEBUG] [Thread-127028] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:34:40.378 [DEBUG] [Thread-127028] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:34:40.378 [DEBUG] [Thread-127028] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:34:40.378 [DEBUG] [Thread-127028] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:34:40.378 [DEBUG] [Thread-127028] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:34:40.378 [DEBUG] [Thread-127028] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:34:40.378 [DEBUG] [Thread-127028] [transport.py] [_log()] client lang: <none>
2025-11-04T02:34:40.378 [DEBUG] [Thread-127028] [transport.py] [_log()] server lang: <none>
2025-11-04T02:34:40.378 [DEBUG] [Thread-127028] [transport.py] [_log()] kex follows: False
2025-11-04T02:34:40.378 [DEBUG] [Thread-127028] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:34:40.378 [DEBUG] [Thread-127028] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:34:40.378 [DEBUG] [Thread-127028] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:34:40.378 [DEBUG] [Thread-127028] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:34:40.378 [DEBUG] [Thread-127028] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:34:40.378 [DEBUG] [Thread-127028] [transport.py] [_log()] Compression: none
2025-11-04T02:34:40.378 [DEBUG] [Thread-127028] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:34:40.435 [DEBUG] [Thread-127028] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:34:40.435 [DEBUG] [Thread-127028] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:34:40.435 [DEBUG] [Thread-127028] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:34:40.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:34:40.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:34:40.497 [DEBUG] [Thread-127028] [transport.py] [_log()] userauth is OK
2025-11-04T02:34:40.497 [DEBUG] [Thread-127028] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:34:40.497 [DEBUG] [Thread-127028] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:34:40.497 [DEBUG] [Thread-127028] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:34:40.497 [DEBUG] [Thread-127028] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:34:40.514 [INFO] [Thread-127028] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:34:40.514 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:34:40.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:34:41.342 [DEBUG] [Thread-127028] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:34:41.342 [DEBUG] [Thread-127028] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:34:41.390 [DEBUG] [Thread-127028] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:34:41.391 [DEBUG] [Thread-127028] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:34:41.399 [DEBUG] [Thread-127028] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:34:41.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:34:41.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:34:41.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:34:41.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:34:41.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:34:41.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:34:41.443 [DEBUG] [Thread-127028] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:34:45.356 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:34:45.357 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:34:46.852 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:34:51.228 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:34:53.111 [DEBUG] [Thread-127030 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:34:57.386 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:35:01.752 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:35:04.019 [DEBUG] [Thread-127031 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:35:08.221 [DEBUG] [Thread-127032 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:35:11.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:35:11.439 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:35:11.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:35:12.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 34, 43), 27.45, 14.41, 0.0, 18.6, 16.46, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:35:12.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:34:43
2025-11-04T02:35:12.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:35:13.050 [DEBUG] [Thread-127033] [transport.py] [_log()] starting thread (client mode): 0xed36ad0
2025-11-04T02:35:13.050 [DEBUG] [Thread-127033] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:35:13.064 [DEBUG] [Thread-127033] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:35:13.065 [INFO] [Thread-127033] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:35:13.068 [DEBUG] [Thread-127033] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:35:13.068 [DEBUG] [Thread-127033] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:35:13.068 [DEBUG] [Thread-127033] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:35:13.068 [DEBUG] [Thread-127033] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:35:13.068 [DEBUG] [Thread-127033] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:35:13.068 [DEBUG] [Thread-127033] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:35:13.068 [DEBUG] [Thread-127033] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:35:13.068 [DEBUG] [Thread-127033] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:35:13.068 [DEBUG] [Thread-127033] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:35:13.068 [DEBUG] [Thread-127033] [transport.py] [_log()] client lang: <none>
2025-11-04T02:35:13.068 [DEBUG] [Thread-127033] [transport.py] [_log()] server lang: <none>
2025-11-04T02:35:13.069 [DEBUG] [Thread-127033] [transport.py] [_log()] kex follows: False
2025-11-04T02:35:13.069 [DEBUG] [Thread-127033] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:35:13.069 [DEBUG] [Thread-127033] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:35:13.069 [DEBUG] [Thread-127033] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:35:13.069 [DEBUG] [Thread-127033] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:35:13.069 [DEBUG] [Thread-127033] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:35:13.069 [DEBUG] [Thread-127033] [transport.py] [_log()] Compression: none
2025-11-04T02:35:13.069 [DEBUG] [Thread-127033] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:35:13.097 [DEBUG] [Thread-127033] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:35:13.100 [DEBUG] [Thread-127033] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:35:13.102 [DEBUG] [Thread-127033] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:35:13.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:35:13.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:35:13.104 [DEBUG] [Thread-127033] [transport.py] [_log()] userauth is OK
2025-11-04T02:35:13.104 [DEBUG] [Thread-127033] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:35:13.105 [DEBUG] [Thread-127033] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:35:13.105 [DEBUG] [Thread-127033] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:35:13.105 [DEBUG] [Thread-127033] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:35:13.124 [INFO] [Thread-127033] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:35:13.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:35:14.926 [DEBUG] [Thread-127033] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:35:14.926 [DEBUG] [Thread-127033] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:35:14.928 [DEBUG] [Thread-127033] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:35:14.967 [DEBUG] [Thread-127033] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:35:14.967 [DEBUG] [Thread-127033] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:35:14.972 [DEBUG] [Thread-127033] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:35:15.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:35:15.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:35:15.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:35:15.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:35:15.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:35:15.060 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:35:15.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:35:15.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:35:15.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:35:15.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.023708 -999.00  +16.40  16.88     19   -6.80 1 1 1 1 1     0    0 23.58 32.04 ZNESW 16.6 16.9 312.2 21.0 16.8 -23.8 16.6 -22.9 16.4 -22.7 16.6 -23.5
2025-11-04T02:35:15.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:35:15.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:35:15.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.023708
2025-11-04T02:35:15.068 [DEBUG] [Thread-127033] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:35:15.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:35:15.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:35:15.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:35:15.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:35:15.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:35:15.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:34:43', tmtdew=27.45, humidity=14.41, cloud=0.0, wind=18.6, temperature=16.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:34:44', seeing=0.9, atlas_timestamp='2025-11-04T00:34:08.371', atlas_cloud=1, atlas_rain=1, zp_data=[0.04974999999999952, 0.06575000000000131, 0.12925000000000075, 0.10949999999999882, 0.10300000000000153, 0.1957500000000003, 0.026999999999999247, 0.09825000000000017, 0.1144999999999996, 0.11749999999999972, 0.14624999999999844, 0.15700000000000003, 0.2629999999999999, 0.06825000000000081, 0.09450000000000003, 0.02999999999999936, 0.11574999999999847, 0.13900000000000112, 0.19299999999999962, 0.12524999999999942, 0.2104999999999979, 0.026749999999998053, 0.1332500000000003, 0.1067499999999999, 0.11599999999999966, 0.2004999999999999, 0.17275000000000063, 0.29600000000000115, 0.33999999999999986, -0.5689999999999991, 0.1739999999999995, 0.15100000000000158, 0.1697500000000005], zp_timestamp='2025-11-04T00:33:00')
2025-11-04T02:35:15.166 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:35:15.178 [DEBUG] [Thread-127036] [transport.py] [_log()] starting thread (client mode): 0xed357b0
2025-11-04T02:35:15.179 [DEBUG] [Thread-127036] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:35:15.193 [DEBUG] [Thread-127036] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:35:15.193 [INFO] [Thread-127036] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:35:15.200 [DEBUG] [Thread-127036] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:35:15.201 [DEBUG] [Thread-127036] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:35:15.201 [DEBUG] [Thread-127036] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:35:15.201 [DEBUG] [Thread-127036] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:35:15.201 [DEBUG] [Thread-127036] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:35:15.201 [DEBUG] [Thread-127036] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:35:15.201 [DEBUG] [Thread-127036] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:35:15.201 [DEBUG] [Thread-127036] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:35:15.201 [DEBUG] [Thread-127036] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:35:15.201 [DEBUG] [Thread-127036] [transport.py] [_log()] client lang: <none>
2025-11-04T02:35:15.201 [DEBUG] [Thread-127036] [transport.py] [_log()] server lang: <none>
2025-11-04T02:35:15.201 [DEBUG] [Thread-127036] [transport.py] [_log()] kex follows: False
2025-11-04T02:35:15.201 [DEBUG] [Thread-127036] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:35:15.201 [DEBUG] [Thread-127036] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:35:15.201 [DEBUG] [Thread-127036] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:35:15.201 [DEBUG] [Thread-127036] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:35:15.201 [DEBUG] [Thread-127036] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:35:15.201 [DEBUG] [Thread-127036] [transport.py] [_log()] Compression: none
2025-11-04T02:35:15.202 [DEBUG] [Thread-127036] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:35:15.259 [DEBUG] [Thread-127036] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:35:15.259 [DEBUG] [Thread-127036] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:35:15.260 [DEBUG] [Thread-127036] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:35:15.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:35:15.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:35:15.318 [DEBUG] [Thread-127036] [transport.py] [_log()] userauth is OK
2025-11-04T02:35:15.318 [DEBUG] [Thread-127036] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:35:15.319 [DEBUG] [Thread-127036] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:35:15.319 [DEBUG] [Thread-127036] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:35:15.319 [DEBUG] [Thread-127036] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:35:15.337 [INFO] [Thread-127036] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:35:15.338 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:35:15.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:35:16.177 [DEBUG] [Thread-127036] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:35:16.178 [DEBUG] [Thread-127036] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:35:16.225 [DEBUG] [Thread-127036] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:35:16.225 [DEBUG] [Thread-127036] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:35:16.234 [DEBUG] [Thread-127036] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:35:16.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:35:16.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:35:16.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:35:16.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:35:16.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:35:16.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:35:16.268 [DEBUG] [Thread-127036] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:35:23.274 [DEBUG] [Thread-127038 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:35:38.431 [DEBUG] [Thread-127039 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:35:45.559 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:35:45.560 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:35:46.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:35:46.264 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:35:46.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:35:47.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 35, 16), 27.41, 14.46, 0.0, 19.29, 16.48, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:35:47.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:35:16
2025-11-04T02:35:47.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:35:47.524 [DEBUG] [Thread-127040] [transport.py] [_log()] starting thread (client mode): 0xedc5660
2025-11-04T02:35:47.525 [DEBUG] [Thread-127040] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:35:47.539 [DEBUG] [Thread-127040] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:35:47.540 [INFO] [Thread-127040] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:35:47.543 [DEBUG] [Thread-127040] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:35:47.544 [DEBUG] [Thread-127040] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:35:47.544 [DEBUG] [Thread-127040] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:35:47.544 [DEBUG] [Thread-127040] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:35:47.544 [DEBUG] [Thread-127040] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:35:47.544 [DEBUG] [Thread-127040] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:35:47.544 [DEBUG] [Thread-127040] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:35:47.544 [DEBUG] [Thread-127040] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:35:47.544 [DEBUG] [Thread-127040] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:35:47.544 [DEBUG] [Thread-127040] [transport.py] [_log()] client lang: <none>
2025-11-04T02:35:47.544 [DEBUG] [Thread-127040] [transport.py] [_log()] server lang: <none>
2025-11-04T02:35:47.545 [DEBUG] [Thread-127040] [transport.py] [_log()] kex follows: False
2025-11-04T02:35:47.545 [DEBUG] [Thread-127040] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:35:47.545 [DEBUG] [Thread-127040] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:35:47.546 [DEBUG] [Thread-127040] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:35:47.546 [DEBUG] [Thread-127040] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:35:47.546 [DEBUG] [Thread-127040] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:35:47.546 [DEBUG] [Thread-127040] [transport.py] [_log()] Compression: none
2025-11-04T02:35:47.546 [DEBUG] [Thread-127040] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:35:47.585 [DEBUG] [Thread-127040] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:35:47.589 [DEBUG] [Thread-127040] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:35:47.589 [DEBUG] [Thread-127040] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:35:47.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:35:47.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:35:47.594 [DEBUG] [Thread-127040] [transport.py] [_log()] userauth is OK
2025-11-04T02:35:47.594 [DEBUG] [Thread-127040] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:35:47.594 [DEBUG] [Thread-127040] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:35:47.594 [DEBUG] [Thread-127040] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:35:47.594 [DEBUG] [Thread-127040] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:35:47.621 [INFO] [Thread-127040] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:35:47.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:35:48.303 [DEBUG] [Thread-127040] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:35:48.303 [DEBUG] [Thread-127040] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:35:48.306 [DEBUG] [Thread-127040] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:35:48.345 [DEBUG] [Thread-127040] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:35:48.345 [DEBUG] [Thread-127040] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:35:48.347 [DEBUG] [Thread-127040] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:35:48.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:35:48.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:35:48.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:35:48.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:35:48.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:35:48.368 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:35:48.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:35:48.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:35:48.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:35:48.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.024402 -999.00  +16.40  16.74     19   -6.80 1 1 1 1 1     0    0 23.87 36.76 ZNESW 17.7 16.7 311.6 19.4 16.7 -23.9 16.6 -22.9 16.4 -22.6 16.6 -23.6
2025-11-04T02:35:48.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:35:48.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:35:48.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.024402
2025-11-04T02:35:48.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:35:48.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:35:48.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:35:48.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:35:48.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:35:48.382 [DEBUG] [Thread-127040] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:35:48.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:35:16', tmtdew=27.41, humidity=14.46, cloud=0.0, wind=19.29, temperature=16.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:35:16', seeing=0.92, atlas_timestamp='2025-11-04T00:35:08.333', atlas_cloud=1, atlas_rain=1, zp_data=[0.04974999999999952, 0.06575000000000131, 0.12925000000000075, 0.10949999999999882, 0.10300000000000153, 0.1957500000000003, 0.026999999999999247, 0.09825000000000017, 0.1144999999999996, 0.11749999999999972, 0.14624999999999844, 0.15700000000000003, 0.2629999999999999, 0.06825000000000081, 0.09450000000000003, 0.02999999999999936, 0.11574999999999847, 0.13900000000000112, 0.19299999999999962, 0.12524999999999942, 0.2104999999999979, 0.026749999999998053, 0.1332500000000003, 0.1067499999999999, 0.11599999999999966, 0.2004999999999999, 0.17275000000000063, 0.29600000000000115, 0.33999999999999986, -0.5689999999999991, 0.1739999999999995, 0.15100000000000158, 0.1697500000000005], zp_timestamp='2025-11-04T00:33:00')
2025-11-04T02:35:48.454 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:35:48.467 [DEBUG] [Thread-127043] [transport.py] [_log()] starting thread (client mode): 0xed21060
2025-11-04T02:35:48.467 [DEBUG] [Thread-127043] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:35:48.481 [DEBUG] [Thread-127043] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:35:48.481 [INFO] [Thread-127043] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:35:48.489 [DEBUG] [Thread-127043] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:35:48.489 [DEBUG] [Thread-127043] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:35:48.489 [DEBUG] [Thread-127043] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:35:48.489 [DEBUG] [Thread-127043] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:35:48.489 [DEBUG] [Thread-127043] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:35:48.489 [DEBUG] [Thread-127043] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:35:48.489 [DEBUG] [Thread-127043] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:35:48.489 [DEBUG] [Thread-127043] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:35:48.489 [DEBUG] [Thread-127043] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:35:48.489 [DEBUG] [Thread-127043] [transport.py] [_log()] client lang: <none>
2025-11-04T02:35:48.489 [DEBUG] [Thread-127043] [transport.py] [_log()] server lang: <none>
2025-11-04T02:35:48.489 [DEBUG] [Thread-127043] [transport.py] [_log()] kex follows: False
2025-11-04T02:35:48.489 [DEBUG] [Thread-127043] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:35:48.489 [DEBUG] [Thread-127043] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:35:48.489 [DEBUG] [Thread-127043] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:35:48.489 [DEBUG] [Thread-127043] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:35:48.489 [DEBUG] [Thread-127043] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:35:48.489 [DEBUG] [Thread-127043] [transport.py] [_log()] Compression: none
2025-11-04T02:35:48.489 [DEBUG] [Thread-127043] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:35:48.545 [DEBUG] [Thread-127043] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:35:48.545 [DEBUG] [Thread-127043] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:35:48.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:35:48.545 [DEBUG] [Thread-127043] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:35:48.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:35:48.602 [DEBUG] [Thread-127043] [transport.py] [_log()] userauth is OK
2025-11-04T02:35:48.602 [DEBUG] [Thread-127043] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:35:48.602 [DEBUG] [Thread-127043] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:35:48.602 [DEBUG] [Thread-127043] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:35:48.602 [DEBUG] [Thread-127043] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:35:48.616 [INFO] [Thread-127043] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:35:48.616 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:35:48.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:35:49.467 [DEBUG] [Thread-127043] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:35:49.468 [DEBUG] [Thread-127043] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:35:49.516 [DEBUG] [Thread-127043] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:35:49.516 [DEBUG] [Thread-127043] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:35:49.525 [DEBUG] [Thread-127043] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:35:49.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:35:49.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:35:49.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:35:49.550 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:35:49.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:35:49.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:35:49.559 [DEBUG] [Thread-127043] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:35:53.463 [DEBUG] [Thread-127045 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:36:04.304 [DEBUG] [Thread-127046 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:36:05.001 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:36:08.045 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:36:08.514 [DEBUG] [Thread-127047 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:36:19.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:36:19.618 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:36:19.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:36:20.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 35, 48), 27.42, 14.46, 0.0, 19.13, 16.49, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:36:20.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:35:48
2025-11-04T02:36:20.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:36:20.939 [DEBUG] [Thread-127048] [transport.py] [_log()] starting thread (client mode): 0x819b100
2025-11-04T02:36:20.940 [DEBUG] [Thread-127048] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:36:20.946 [DEBUG] [Thread-127048] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:36:20.947 [INFO] [Thread-127048] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:36:20.953 [DEBUG] [Thread-127048] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:36:20.953 [DEBUG] [Thread-127048] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:36:20.953 [DEBUG] [Thread-127048] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:36:20.953 [DEBUG] [Thread-127048] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:36:20.953 [DEBUG] [Thread-127048] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:36:20.953 [DEBUG] [Thread-127048] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:36:20.953 [DEBUG] [Thread-127048] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:36:20.953 [DEBUG] [Thread-127048] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:36:20.954 [DEBUG] [Thread-127048] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:36:20.954 [DEBUG] [Thread-127048] [transport.py] [_log()] client lang: <none>
2025-11-04T02:36:20.954 [DEBUG] [Thread-127048] [transport.py] [_log()] server lang: <none>
2025-11-04T02:36:20.954 [DEBUG] [Thread-127048] [transport.py] [_log()] kex follows: False
2025-11-04T02:36:20.954 [DEBUG] [Thread-127048] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:36:20.955 [DEBUG] [Thread-127048] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:36:20.955 [DEBUG] [Thread-127048] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:36:20.955 [DEBUG] [Thread-127048] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:36:20.955 [DEBUG] [Thread-127048] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:36:20.955 [DEBUG] [Thread-127048] [transport.py] [_log()] Compression: none
2025-11-04T02:36:20.956 [DEBUG] [Thread-127048] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:36:20.995 [DEBUG] [Thread-127048] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:36:21.000 [DEBUG] [Thread-127048] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:36:21.003 [DEBUG] [Thread-127048] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:36:21.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:36:21.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:36:21.008 [DEBUG] [Thread-127048] [transport.py] [_log()] userauth is OK
2025-11-04T02:36:21.008 [DEBUG] [Thread-127048] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:36:21.008 [DEBUG] [Thread-127048] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:36:21.008 [DEBUG] [Thread-127048] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:36:21.009 [DEBUG] [Thread-127048] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:36:21.035 [INFO] [Thread-127048] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:36:21.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:36:21.680 [DEBUG] [Thread-127048] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:36:21.680 [DEBUG] [Thread-127048] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:36:21.690 [DEBUG] [Thread-127048] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:36:21.721 [DEBUG] [Thread-127048] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:36:21.722 [DEBUG] [Thread-127048] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:36:21.724 [DEBUG] [Thread-127048] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:36:21.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:36:21.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:36:21.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:36:21.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:36:21.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:36:21.746 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:36:21.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:36:21.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:36:21.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:36:21.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.024750 -999.00  +16.50  16.98     19   -6.80 1 1 1 1 1     0    0 23.92 36.23 ZNESW 19.3 17.0 309.8 19.6 16.8 -23.8 16.6 -23.0 16.4 -22.7 16.7 -23.4
2025-11-04T02:36:21.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:36:21.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:36:21.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.024750
2025-11-04T02:36:21.753 [DEBUG] [Thread-127048] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:36:21.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:36:21.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:36:21.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:36:21.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:36:21.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:36:21.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:35:48', tmtdew=27.42, humidity=14.46, cloud=0.0, wind=19.13, temperature=16.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:35:49', seeing=0.92, atlas_timestamp='2025-11-04T00:35:38.400', atlas_cloud=1, atlas_rain=1, zp_data=[0.04974999999999952, 0.06575000000000131, 0.12925000000000075, 0.10949999999999882, 0.10300000000000153, 0.1957500000000003, 0.026999999999999247, 0.09825000000000017, 0.1144999999999996, 0.11749999999999972, 0.14624999999999844, 0.15700000000000003, 0.2629999999999999, 0.06825000000000081, 0.09450000000000003, 0.02999999999999936, 0.11574999999999847, 0.13900000000000112, 0.19299999999999962, 0.12524999999999942, 0.2104999999999979, 0.026749999999998053, 0.1332500000000003, 0.1067499999999999, 0.11599999999999966, 0.2004999999999999, 0.17275000000000063, 0.29600000000000115, 0.33999999999999986, -0.5689999999999991, 0.1739999999999995, 0.15100000000000158, 0.1697500000000005], zp_timestamp='2025-11-04T00:33:00')
2025-11-04T02:36:21.849 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:36:21.861 [DEBUG] [Thread-127051] [transport.py] [_log()] starting thread (client mode): 0x8199480
2025-11-04T02:36:21.861 [DEBUG] [Thread-127051] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:36:21.876 [DEBUG] [Thread-127051] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:36:21.876 [INFO] [Thread-127051] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:36:21.885 [DEBUG] [Thread-127051] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:36:21.885 [DEBUG] [Thread-127051] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:36:21.885 [DEBUG] [Thread-127051] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:36:21.885 [DEBUG] [Thread-127051] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:36:21.885 [DEBUG] [Thread-127051] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:36:21.885 [DEBUG] [Thread-127051] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:36:21.886 [DEBUG] [Thread-127051] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:36:21.886 [DEBUG] [Thread-127051] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:36:21.886 [DEBUG] [Thread-127051] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:36:21.886 [DEBUG] [Thread-127051] [transport.py] [_log()] client lang: <none>
2025-11-04T02:36:21.886 [DEBUG] [Thread-127051] [transport.py] [_log()] server lang: <none>
2025-11-04T02:36:21.886 [DEBUG] [Thread-127051] [transport.py] [_log()] kex follows: False
2025-11-04T02:36:21.886 [DEBUG] [Thread-127051] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:36:21.886 [DEBUG] [Thread-127051] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:36:21.886 [DEBUG] [Thread-127051] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:36:21.887 [DEBUG] [Thread-127051] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:36:21.887 [DEBUG] [Thread-127051] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:36:21.887 [DEBUG] [Thread-127051] [transport.py] [_log()] Compression: none
2025-11-04T02:36:21.891 [DEBUG] [Thread-127051] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:36:21.942 [DEBUG] [Thread-127051] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:36:21.942 [DEBUG] [Thread-127051] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:36:21.942 [DEBUG] [Thread-127051] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:36:21.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:36:21.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:36:22.003 [DEBUG] [Thread-127051] [transport.py] [_log()] userauth is OK
2025-11-04T02:36:22.003 [DEBUG] [Thread-127051] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:36:22.003 [DEBUG] [Thread-127051] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:36:22.003 [DEBUG] [Thread-127051] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:36:22.003 [DEBUG] [Thread-127051] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:36:22.018 [INFO] [Thread-127051] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:36:22.018 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:36:22.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:36:22.859 [DEBUG] [Thread-127051] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:36:22.859 [DEBUG] [Thread-127051] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:36:22.906 [DEBUG] [Thread-127051] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:36:22.906 [DEBUG] [Thread-127051] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:36:22.915 [DEBUG] [Thread-127051] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:36:22.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:36:22.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:36:22.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:36:22.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:36:22.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:36:22.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:36:22.951 [DEBUG] [Thread-127051] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:36:23.558 [DEBUG] [Thread-127053 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:36:38.667 [DEBUG] [Thread-127054 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:36:45.762 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:36:45.762 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:36:52.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:36:52.983 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:36:53.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:36:53.694 [DEBUG] [Thread-127055 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:36:53.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 36, 21), 27.39, 14.49, 0.0, 19.32, 16.48, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:36:53.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:36:21
2025-11-04T02:36:53.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:36:54.081 [DEBUG] [Thread-127056] [transport.py] [_log()] starting thread (client mode): 0x819a770
2025-11-04T02:36:54.081 [DEBUG] [Thread-127056] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:36:54.103 [DEBUG] [Thread-127056] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:36:54.104 [INFO] [Thread-127056] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:36:54.107 [DEBUG] [Thread-127056] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:36:54.107 [DEBUG] [Thread-127056] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:36:54.107 [DEBUG] [Thread-127056] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:36:54.107 [DEBUG] [Thread-127056] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:36:54.107 [DEBUG] [Thread-127056] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:36:54.108 [DEBUG] [Thread-127056] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:36:54.108 [DEBUG] [Thread-127056] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:36:54.108 [DEBUG] [Thread-127056] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:36:54.108 [DEBUG] [Thread-127056] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:36:54.108 [DEBUG] [Thread-127056] [transport.py] [_log()] client lang: <none>
2025-11-04T02:36:54.108 [DEBUG] [Thread-127056] [transport.py] [_log()] server lang: <none>
2025-11-04T02:36:54.108 [DEBUG] [Thread-127056] [transport.py] [_log()] kex follows: False
2025-11-04T02:36:54.108 [DEBUG] [Thread-127056] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:36:54.108 [DEBUG] [Thread-127056] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:36:54.108 [DEBUG] [Thread-127056] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:36:54.108 [DEBUG] [Thread-127056] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:36:54.108 [DEBUG] [Thread-127056] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:36:54.108 [DEBUG] [Thread-127056] [transport.py] [_log()] Compression: none
2025-11-04T02:36:54.108 [DEBUG] [Thread-127056] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:36:54.125 [DEBUG] [Thread-127056] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:36:54.125 [DEBUG] [Thread-127056] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:36:54.126 [DEBUG] [Thread-127056] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:36:54.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:36:54.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:36:54.127 [DEBUG] [Thread-127056] [transport.py] [_log()] userauth is OK
2025-11-04T02:36:54.127 [DEBUG] [Thread-127056] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:36:54.127 [DEBUG] [Thread-127056] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:36:54.127 [DEBUG] [Thread-127056] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:36:54.127 [DEBUG] [Thread-127056] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:36:54.142 [INFO] [Thread-127056] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:36:54.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:36:54.792 [DEBUG] [Thread-127056] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:36:54.792 [DEBUG] [Thread-127056] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:36:54.793 [DEBUG] [Thread-127056] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:36:54.834 [DEBUG] [Thread-127056] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:36:54.834 [DEBUG] [Thread-127056] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:36:54.836 [DEBUG] [Thread-127056] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:36:54.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:36:54.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:36:54.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:36:54.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:36:54.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:36:54.854 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:36:54.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:36:54.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:36:54.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:36:54.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.025097 -999.00  +16.50  18.69     19   -6.80 1 1 1 1 1     0    0 24.36 37.39 ZNESW 18.4 18.7 313.4 21.9 16.8 -23.9 16.6 -22.9 16.4 -22.6 16.7 -23.5
2025-11-04T02:36:54.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:36:54.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:36:54.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.025097
2025-11-04T02:36:54.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:36:54.857 [DEBUG] [Thread-127056] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:36:54.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:36:54.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:36:54.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:36:54.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:36:54.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:36:21', tmtdew=27.39, humidity=14.49, cloud=0.0, wind=19.32, temperature=16.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:36:21', seeing=0.96, atlas_timestamp='2025-11-04T00:36:08.381', atlas_cloud=1, atlas_rain=1, zp_data=[0.04974999999999952, 0.06575000000000131, 0.12925000000000075, 0.10949999999999882, 0.10300000000000153, 0.1957500000000003, 0.026999999999999247, 0.09825000000000017, 0.1144999999999996, 0.11749999999999972, 0.14624999999999844, 0.15700000000000003, 0.2629999999999999, 0.06825000000000081, 0.09450000000000003, 0.02999999999999936, 0.11574999999999847, 0.13900000000000112, 0.19299999999999962, 0.12524999999999942, 0.2104999999999979, 0.026749999999998053, 0.1332500000000003, 0.1067499999999999, 0.11599999999999966, 0.2004999999999999, 0.17275000000000063, 0.29600000000000115, 0.33999999999999986, -0.5689999999999991, 0.1739999999999995, 0.15100000000000158, 0.1697500000000005], zp_timestamp='2025-11-04T00:33:00')
2025-11-04T02:36:54.935 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:36:54.947 [DEBUG] [Thread-127059] [transport.py] [_log()] starting thread (client mode): 0xed36e60
2025-11-04T02:36:54.947 [DEBUG] [Thread-127059] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:36:54.962 [DEBUG] [Thread-127059] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:36:54.962 [INFO] [Thread-127059] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:36:54.970 [DEBUG] [Thread-127059] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:36:54.970 [DEBUG] [Thread-127059] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:36:54.970 [DEBUG] [Thread-127059] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:36:54.970 [DEBUG] [Thread-127059] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:36:54.970 [DEBUG] [Thread-127059] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:36:54.970 [DEBUG] [Thread-127059] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:36:54.970 [DEBUG] [Thread-127059] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:36:54.970 [DEBUG] [Thread-127059] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:36:54.970 [DEBUG] [Thread-127059] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:36:54.970 [DEBUG] [Thread-127059] [transport.py] [_log()] client lang: <none>
2025-11-04T02:36:54.970 [DEBUG] [Thread-127059] [transport.py] [_log()] server lang: <none>
2025-11-04T02:36:54.970 [DEBUG] [Thread-127059] [transport.py] [_log()] kex follows: False
2025-11-04T02:36:54.970 [DEBUG] [Thread-127059] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:36:54.970 [DEBUG] [Thread-127059] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:36:54.970 [DEBUG] [Thread-127059] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:36:54.970 [DEBUG] [Thread-127059] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:36:54.970 [DEBUG] [Thread-127059] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:36:54.970 [DEBUG] [Thread-127059] [transport.py] [_log()] Compression: none
2025-11-04T02:36:54.970 [DEBUG] [Thread-127059] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:36:55.027 [DEBUG] [Thread-127059] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:36:55.027 [DEBUG] [Thread-127059] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:36:55.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:36:55.027 [DEBUG] [Thread-127059] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:36:55.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:36:55.088 [DEBUG] [Thread-127059] [transport.py] [_log()] userauth is OK
2025-11-04T02:36:55.088 [DEBUG] [Thread-127059] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:36:55.088 [DEBUG] [Thread-127059] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:36:55.088 [DEBUG] [Thread-127059] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:36:55.088 [DEBUG] [Thread-127059] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:36:55.103 [INFO] [Thread-127059] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:36:55.103 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:36:55.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:36:55.963 [DEBUG] [Thread-127059] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:36:55.963 [DEBUG] [Thread-127059] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:36:56.015 [DEBUG] [Thread-127059] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:36:56.015 [DEBUG] [Thread-127059] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:36:56.023 [DEBUG] [Thread-127059] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:36:56.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:36:56.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:36:56.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:36:56.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:36:56.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:36:56.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:36:56.057 [DEBUG] [Thread-127059] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:37:04.678 [DEBUG] [Thread-127061 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:37:08.725 [DEBUG] [Thread-127062 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:37:23.851 [DEBUG] [Thread-127063 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:37:26.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:37:26.089 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:37:26.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:37:26.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 36, 53), 27.3, 14.52, 0.0, 16.81, 16.43, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:37:26.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:36:53
2025-11-04T02:37:27.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:37:27.216 [DEBUG] [Thread-127064] [transport.py] [_log()] starting thread (client mode): 0xed22500
2025-11-04T02:37:27.217 [DEBUG] [Thread-127064] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:37:27.228 [DEBUG] [Thread-127064] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:37:27.228 [INFO] [Thread-127064] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:37:27.232 [DEBUG] [Thread-127064] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:37:27.233 [DEBUG] [Thread-127064] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:37:27.233 [DEBUG] [Thread-127064] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:37:27.233 [DEBUG] [Thread-127064] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:37:27.233 [DEBUG] [Thread-127064] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:37:27.233 [DEBUG] [Thread-127064] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:37:27.233 [DEBUG] [Thread-127064] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:37:27.233 [DEBUG] [Thread-127064] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:37:27.233 [DEBUG] [Thread-127064] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:37:27.233 [DEBUG] [Thread-127064] [transport.py] [_log()] client lang: <none>
2025-11-04T02:37:27.233 [DEBUG] [Thread-127064] [transport.py] [_log()] server lang: <none>
2025-11-04T02:37:27.233 [DEBUG] [Thread-127064] [transport.py] [_log()] kex follows: False
2025-11-04T02:37:27.234 [DEBUG] [Thread-127064] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:37:27.234 [DEBUG] [Thread-127064] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:37:27.234 [DEBUG] [Thread-127064] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:37:27.235 [DEBUG] [Thread-127064] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:37:27.235 [DEBUG] [Thread-127064] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:37:27.235 [DEBUG] [Thread-127064] [transport.py] [_log()] Compression: none
2025-11-04T02:37:27.235 [DEBUG] [Thread-127064] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:37:27.279 [DEBUG] [Thread-127064] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:37:27.283 [DEBUG] [Thread-127064] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:37:27.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:37:27.287 [DEBUG] [Thread-127064] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:37:27.288 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:37:27.290 [DEBUG] [Thread-127064] [transport.py] [_log()] userauth is OK
2025-11-04T02:37:27.290 [DEBUG] [Thread-127064] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:37:27.290 [DEBUG] [Thread-127064] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:37:27.290 [DEBUG] [Thread-127064] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:37:27.290 [DEBUG] [Thread-127064] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:37:27.309 [INFO] [Thread-127064] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:37:27.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:37:27.958 [DEBUG] [Thread-127064] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:37:27.959 [DEBUG] [Thread-127064] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:37:27.959 [DEBUG] [Thread-127064] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:37:27.999 [DEBUG] [Thread-127064] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:37:28.000 [DEBUG] [Thread-127064] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:37:28.002 [DEBUG] [Thread-127064] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:37:28.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:37:28.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:37:28.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:37:28.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:37:28.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:37:28.020 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:37:28.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:37:28.020 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:37:28.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:37:28.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.025444 -999.00  +16.50  17.77     19   -6.80 1 1 1 1 1     0    0 24.30 38.92 ZNESW 18.0 17.8 312.8 21.4 16.7 -23.9 16.6 -22.9 16.4 -22.7 16.7 -23.4
2025-11-04T02:37:28.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:37:28.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:37:28.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.025444
2025-11-04T02:37:28.027 [DEBUG] [Thread-127064] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:37:28.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:37:28.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:37:28.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:37:28.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:37:28.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:37:28.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:36:53', tmtdew=27.3, humidity=14.52, cloud=0.0, wind=16.81, temperature=16.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:36:54', seeing=0.94, atlas_timestamp='2025-11-04T00:36:38.362', atlas_cloud=1, atlas_rain=1, zp_data=[0.04974999999999952, 0.06575000000000131, 0.12925000000000075, 0.10949999999999882, 0.10300000000000153, 0.1957500000000003, 0.026999999999999247, 0.09825000000000017, 0.1144999999999996, 0.11749999999999972, 0.14624999999999844, 0.15700000000000003, 0.2629999999999999, 0.06825000000000081, 0.09450000000000003, 0.02999999999999936, 0.11574999999999847, 0.13900000000000112, 0.19299999999999962, 0.12524999999999942, 0.2104999999999979, 0.026749999999998053, 0.1332500000000003, 0.1067499999999999, 0.11599999999999966, 0.2004999999999999, 0.17275000000000063, 0.29600000000000115, 0.33999999999999986, -0.5689999999999991, 0.1739999999999995, 0.15100000000000158, 0.1697500000000005], zp_timestamp='2025-11-04T00:33:00')
2025-11-04T02:37:28.120 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:37:28.131 [DEBUG] [Thread-127067] [transport.py] [_log()] starting thread (client mode): 0x8198880
2025-11-04T02:37:28.131 [DEBUG] [Thread-127067] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:37:28.146 [DEBUG] [Thread-127067] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:37:28.146 [INFO] [Thread-127067] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:37:28.154 [DEBUG] [Thread-127067] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:37:28.154 [DEBUG] [Thread-127067] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:37:28.154 [DEBUG] [Thread-127067] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:37:28.154 [DEBUG] [Thread-127067] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:37:28.155 [DEBUG] [Thread-127067] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:37:28.155 [DEBUG] [Thread-127067] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:37:28.155 [DEBUG] [Thread-127067] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:37:28.155 [DEBUG] [Thread-127067] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:37:28.155 [DEBUG] [Thread-127067] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:37:28.155 [DEBUG] [Thread-127067] [transport.py] [_log()] client lang: <none>
2025-11-04T02:37:28.155 [DEBUG] [Thread-127067] [transport.py] [_log()] server lang: <none>
2025-11-04T02:37:28.155 [DEBUG] [Thread-127067] [transport.py] [_log()] kex follows: False
2025-11-04T02:37:28.155 [DEBUG] [Thread-127067] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:37:28.155 [DEBUG] [Thread-127067] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:37:28.155 [DEBUG] [Thread-127067] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:37:28.155 [DEBUG] [Thread-127067] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:37:28.155 [DEBUG] [Thread-127067] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:37:28.155 [DEBUG] [Thread-127067] [transport.py] [_log()] Compression: none
2025-11-04T02:37:28.155 [DEBUG] [Thread-127067] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:37:28.211 [DEBUG] [Thread-127067] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:37:28.211 [DEBUG] [Thread-127067] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:37:28.211 [DEBUG] [Thread-127067] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:37:28.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:37:28.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:37:28.268 [DEBUG] [Thread-127067] [transport.py] [_log()] userauth is OK
2025-11-04T02:37:28.268 [DEBUG] [Thread-127067] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:37:28.268 [DEBUG] [Thread-127067] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:37:28.268 [DEBUG] [Thread-127067] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:37:28.268 [DEBUG] [Thread-127067] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:37:28.282 [INFO] [Thread-127067] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:37:28.282 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:37:28.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:37:29.108 [DEBUG] [Thread-127067] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:37:29.108 [DEBUG] [Thread-127067] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:37:29.157 [DEBUG] [Thread-127067] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:37:29.157 [DEBUG] [Thread-127067] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:37:29.165 [DEBUG] [Thread-127067] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:37:29.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:37:29.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:37:29.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:37:29.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:37:29.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:37:29.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:37:29.201 [DEBUG] [Thread-127067] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:37:38.879 [DEBUG] [Thread-127069 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:37:45.965 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:37:45.966 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:37:53.936 [DEBUG] [Thread-127070 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:37:59.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:37:59.223 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:37:59.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:38:00.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 37, 26), 27.33, 14.49, 0.0, 17.26, 16.44, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:38:00.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:37:26
2025-11-04T02:38:00.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:38:00.446 [DEBUG] [Thread-127071] [transport.py] [_log()] starting thread (client mode): 0xed23a90
2025-11-04T02:38:00.447 [DEBUG] [Thread-127071] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:38:00.460 [DEBUG] [Thread-127071] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:38:00.460 [INFO] [Thread-127071] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:38:00.463 [DEBUG] [Thread-127071] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:38:00.463 [DEBUG] [Thread-127071] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:38:00.463 [DEBUG] [Thread-127071] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:38:00.464 [DEBUG] [Thread-127071] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:38:00.464 [DEBUG] [Thread-127071] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:38:00.464 [DEBUG] [Thread-127071] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:38:00.464 [DEBUG] [Thread-127071] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:38:00.464 [DEBUG] [Thread-127071] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:38:00.464 [DEBUG] [Thread-127071] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:38:00.464 [DEBUG] [Thread-127071] [transport.py] [_log()] client lang: <none>
2025-11-04T02:38:00.464 [DEBUG] [Thread-127071] [transport.py] [_log()] server lang: <none>
2025-11-04T02:38:00.464 [DEBUG] [Thread-127071] [transport.py] [_log()] kex follows: False
2025-11-04T02:38:00.464 [DEBUG] [Thread-127071] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:38:00.464 [DEBUG] [Thread-127071] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:38:00.465 [DEBUG] [Thread-127071] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:38:00.465 [DEBUG] [Thread-127071] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:38:00.465 [DEBUG] [Thread-127071] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:38:00.465 [DEBUG] [Thread-127071] [transport.py] [_log()] Compression: none
2025-11-04T02:38:00.465 [DEBUG] [Thread-127071] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:38:00.487 [DEBUG] [Thread-127071] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:38:00.491 [DEBUG] [Thread-127071] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:38:00.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:38:00.493 [DEBUG] [Thread-127071] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:38:00.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:38:00.494 [DEBUG] [Thread-127071] [transport.py] [_log()] userauth is OK
2025-11-04T02:38:00.494 [DEBUG] [Thread-127071] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:38:00.494 [DEBUG] [Thread-127071] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:38:00.494 [DEBUG] [Thread-127071] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:38:00.494 [DEBUG] [Thread-127071] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:38:00.515 [INFO] [Thread-127071] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:38:00.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:38:01.124 [DEBUG] [Thread-127071] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:38:01.124 [DEBUG] [Thread-127071] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:38:01.124 [DEBUG] [Thread-127071] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:38:01.166 [DEBUG] [Thread-127071] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:38:01.166 [DEBUG] [Thread-127071] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:38:01.168 [DEBUG] [Thread-127071] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:38:01.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:38:01.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:38:01.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:38:01.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:38:01.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:38:01.184 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:38:01.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:38:01.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:38:01.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:38:01.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.025792 -999.00  +16.50  17.51     19   -6.80 1 1 1 1 1     0    0 23.95 38.32 ZNESW 18.8 17.5 308.2 21.7 16.7 -24.0 16.6 -23.0 16.4 -22.6 16.7 -23.5
2025-11-04T02:38:01.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:38:01.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:38:01.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.025792
2025-11-04T02:38:01.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:38:01.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:38:01.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:38:01.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:38:01.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:38:01.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:37:26', tmtdew=27.33, humidity=14.49, cloud=0.0, wind=17.26, temperature=16.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:37:27', seeing=0.94, atlas_timestamp='2025-11-04T00:37:08.429', atlas_cloud=1, atlas_rain=1, zp_data=[0.04025000000000034, 0.06824999999999903, 0.1277500000000007, 0.02049999999999841, 0.0625, 0.09525000000000006, 0.05299999999999905, 0.06824999999999903, 0.10200000000000031, 0.11400000000000077, 0.14724999999999966, 0.10299999999999976, 0.23300000000000054, -0.03974999999999973, 0.06049999999999933, -0.010999999999999233, 0.1042500000000004, 0.09350000000000058, 0.16299999999999848, 0.15724999999999945, 0.17999999999999972, -0.054250000000001464, 0.12225000000000108, 0.11074999999999946, 0.1269999999999989, 0.20950000000000024, 0.12374999999999936, 0.29300000000000104, 0.2679999999999998, -0.509999999999998, 0.18600000000000172, 0.17900000000000027, 0.1897499999999983], zp_timestamp='2025-11-04T00:36:00')
2025-11-04T02:38:01.186 [DEBUG] [Thread-127071] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:38:01.262 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:38:01.280 [DEBUG] [Thread-127074] [transport.py] [_log()] starting thread (client mode): 0xed22ec0
2025-11-04T02:38:01.280 [DEBUG] [Thread-127074] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:38:01.306 [DEBUG] [Thread-127074] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:38:01.306 [INFO] [Thread-127074] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:38:01.316 [DEBUG] [Thread-127074] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:38:01.316 [DEBUG] [Thread-127074] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:38:01.316 [DEBUG] [Thread-127074] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:38:01.316 [DEBUG] [Thread-127074] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:38:01.316 [DEBUG] [Thread-127074] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:38:01.316 [DEBUG] [Thread-127074] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:38:01.316 [DEBUG] [Thread-127074] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:38:01.317 [DEBUG] [Thread-127074] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:38:01.317 [DEBUG] [Thread-127074] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:38:01.317 [DEBUG] [Thread-127074] [transport.py] [_log()] client lang: <none>
2025-11-04T02:38:01.317 [DEBUG] [Thread-127074] [transport.py] [_log()] server lang: <none>
2025-11-04T02:38:01.317 [DEBUG] [Thread-127074] [transport.py] [_log()] kex follows: False
2025-11-04T02:38:01.317 [DEBUG] [Thread-127074] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:38:01.317 [DEBUG] [Thread-127074] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:38:01.317 [DEBUG] [Thread-127074] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:38:01.317 [DEBUG] [Thread-127074] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:38:01.317 [DEBUG] [Thread-127074] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:38:01.317 [DEBUG] [Thread-127074] [transport.py] [_log()] Compression: none
2025-11-04T02:38:01.317 [DEBUG] [Thread-127074] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:38:01.375 [DEBUG] [Thread-127074] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:38:01.376 [DEBUG] [Thread-127074] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:38:01.376 [DEBUG] [Thread-127074] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:38:01.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:38:01.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:38:01.431 [DEBUG] [Thread-127074] [transport.py] [_log()] userauth is OK
2025-11-04T02:38:01.431 [DEBUG] [Thread-127074] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:38:01.431 [DEBUG] [Thread-127074] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:38:01.431 [DEBUG] [Thread-127074] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:38:01.431 [DEBUG] [Thread-127074] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:38:01.445 [INFO] [Thread-127074] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:38:01.445 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:38:01.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:38:02.349 [DEBUG] [Thread-127074] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:38:02.349 [DEBUG] [Thread-127074] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:38:02.397 [DEBUG] [Thread-127074] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:38:02.397 [DEBUG] [Thread-127074] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:38:02.405 [DEBUG] [Thread-127074] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:38:02.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:38:02.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:38:02.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:38:02.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:38:02.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:38:02.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:38:02.447 [DEBUG] [Thread-127074] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:38:04.967 [DEBUG] [Thread-127076 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:38:08.974 [DEBUG] [Thread-127077 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:38:24.062 [DEBUG] [Thread-127078 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:38:32.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:38:32.443 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:38:32.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:38:33.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 37, 59), 27.3, 14.52, 0.0, 19.02, 16.38, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:38:33.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:37:59
2025-11-04T02:38:33.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:38:33.955 [DEBUG] [Thread-127079] [transport.py] [_log()] starting thread (client mode): 0xed11570
2025-11-04T02:38:33.956 [DEBUG] [Thread-127079] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:38:33.963 [DEBUG] [Thread-127079] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:38:33.963 [INFO] [Thread-127079] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:38:33.966 [DEBUG] [Thread-127079] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:38:33.966 [DEBUG] [Thread-127079] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:38:33.966 [DEBUG] [Thread-127079] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:38:33.966 [DEBUG] [Thread-127079] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:38:33.966 [DEBUG] [Thread-127079] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:38:33.966 [DEBUG] [Thread-127079] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:38:33.966 [DEBUG] [Thread-127079] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:38:33.967 [DEBUG] [Thread-127079] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:38:33.967 [DEBUG] [Thread-127079] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:38:33.967 [DEBUG] [Thread-127079] [transport.py] [_log()] client lang: <none>
2025-11-04T02:38:33.967 [DEBUG] [Thread-127079] [transport.py] [_log()] server lang: <none>
2025-11-04T02:38:33.967 [DEBUG] [Thread-127079] [transport.py] [_log()] kex follows: False
2025-11-04T02:38:33.967 [DEBUG] [Thread-127079] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:38:33.967 [DEBUG] [Thread-127079] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:38:33.967 [DEBUG] [Thread-127079] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:38:33.967 [DEBUG] [Thread-127079] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:38:33.968 [DEBUG] [Thread-127079] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:38:33.968 [DEBUG] [Thread-127079] [transport.py] [_log()] Compression: none
2025-11-04T02:38:33.968 [DEBUG] [Thread-127079] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:38:33.997 [DEBUG] [Thread-127079] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:38:34.001 [DEBUG] [Thread-127079] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:38:34.002 [DEBUG] [Thread-127079] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:38:34.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:38:34.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:38:34.005 [DEBUG] [Thread-127079] [transport.py] [_log()] userauth is OK
2025-11-04T02:38:34.005 [DEBUG] [Thread-127079] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:38:34.005 [DEBUG] [Thread-127079] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:38:34.005 [DEBUG] [Thread-127079] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:38:34.005 [DEBUG] [Thread-127079] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:38:34.027 [INFO] [Thread-127079] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:38:34.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:38:34.662 [DEBUG] [Thread-127079] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:38:34.662 [DEBUG] [Thread-127079] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:38:34.663 [DEBUG] [Thread-127079] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:38:34.702 [DEBUG] [Thread-127079] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:38:34.703 [DEBUG] [Thread-127079] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:38:34.705 [DEBUG] [Thread-127079] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:38:34.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:38:34.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:38:34.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:38:34.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:38:34.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:38:34.726 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:38:34.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:38:34.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:38:34.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:38:34.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.026486 -999.00  +16.60  20.33     19   -6.80 1 1 1 1 1     0    0 24.42 43.12 ZNESW 17.9 20.3 314.0 23.1 16.7 -23.9 16.6 -22.9 16.4 -22.6 16.7 -23.5
2025-11-04T02:38:34.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:38:34.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:38:34.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.026486
2025-11-04T02:38:34.738 [DEBUG] [Thread-127079] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:38:34.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:38:34.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:38:34.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:38:34.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:38:34.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:38:34.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:37:59', tmtdew=27.3, humidity=14.52, cloud=0.0, wind=19.02, temperature=16.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:37:59', seeing=0.96, atlas_timestamp='2025-11-04T00:38:08.390', atlas_cloud=1, atlas_rain=1, zp_data=[0.04025000000000034, 0.06824999999999903, 0.1277500000000007, 0.02049999999999841, 0.0625, 0.09525000000000006, 0.05299999999999905, 0.06824999999999903, 0.10200000000000031, 0.11400000000000077, 0.14724999999999966, 0.10299999999999976, 0.23300000000000054, -0.03974999999999973, 0.06049999999999933, -0.010999999999999233, 0.1042500000000004, 0.09350000000000058, 0.16299999999999848, 0.15724999999999945, 0.17999999999999972, -0.054250000000001464, 0.12225000000000108, 0.11074999999999946, 0.1269999999999989, 0.20950000000000024, 0.12374999999999936, 0.29300000000000104, 0.2679999999999998, -0.509999999999998, 0.18600000000000172, 0.17900000000000027, 0.1897499999999983], zp_timestamp='2025-11-04T00:36:00')
2025-11-04T02:38:34.826 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:38:34.839 [DEBUG] [Thread-127082] [transport.py] [_log()] starting thread (client mode): 0xed102b0
2025-11-04T02:38:34.839 [DEBUG] [Thread-127082] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:38:34.855 [DEBUG] [Thread-127082] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:38:34.855 [INFO] [Thread-127082] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:38:34.865 [DEBUG] [Thread-127082] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:38:34.865 [DEBUG] [Thread-127082] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:38:34.865 [DEBUG] [Thread-127082] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:38:34.865 [DEBUG] [Thread-127082] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:38:34.865 [DEBUG] [Thread-127082] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:38:34.865 [DEBUG] [Thread-127082] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:38:34.865 [DEBUG] [Thread-127082] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:38:34.865 [DEBUG] [Thread-127082] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:38:34.865 [DEBUG] [Thread-127082] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:38:34.865 [DEBUG] [Thread-127082] [transport.py] [_log()] client lang: <none>
2025-11-04T02:38:34.865 [DEBUG] [Thread-127082] [transport.py] [_log()] server lang: <none>
2025-11-04T02:38:34.865 [DEBUG] [Thread-127082] [transport.py] [_log()] kex follows: False
2025-11-04T02:38:34.865 [DEBUG] [Thread-127082] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:38:34.865 [DEBUG] [Thread-127082] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:38:34.865 [DEBUG] [Thread-127082] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:38:34.865 [DEBUG] [Thread-127082] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:38:34.865 [DEBUG] [Thread-127082] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:38:34.865 [DEBUG] [Thread-127082] [transport.py] [_log()] Compression: none
2025-11-04T02:38:34.865 [DEBUG] [Thread-127082] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:38:34.923 [DEBUG] [Thread-127082] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:38:34.923 [DEBUG] [Thread-127082] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:38:34.923 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:38:34.923 [DEBUG] [Thread-127082] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:38:34.923 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:38:34.980 [DEBUG] [Thread-127082] [transport.py] [_log()] userauth is OK
2025-11-04T02:38:34.980 [DEBUG] [Thread-127082] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:38:34.980 [DEBUG] [Thread-127082] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:38:34.980 [DEBUG] [Thread-127082] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:38:34.980 [DEBUG] [Thread-127082] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:38:34.997 [INFO] [Thread-127082] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:38:34.997 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:38:34.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:38:35.872 [DEBUG] [Thread-127082] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:38:35.872 [DEBUG] [Thread-127082] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:38:35.920 [DEBUG] [Thread-127082] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:38:35.920 [DEBUG] [Thread-127082] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:38:35.929 [DEBUG] [Thread-127082] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:38:35.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:38:35.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:38:35.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:38:35.968 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:38:35.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:38:35.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:38:35.977 [DEBUG] [Thread-127082] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:38:39.136 [DEBUG] [Thread-127084 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:38:46.170 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:38:46.171 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:38:54.257 [DEBUG] [Thread-127085 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:39:05.322 [DEBUG] [Thread-127086 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:39:06.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:39:06.002 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:39:06.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:39:06.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 38, 31), 27.34, 14.47, 0.0, 18.77, 16.39, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:39:06.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:38:31
2025-11-04T02:39:07.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:39:07.236 [DEBUG] [Thread-127087] [transport.py] [_log()] starting thread (client mode): 0xed12320
2025-11-04T02:39:07.237 [DEBUG] [Thread-127087] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:39:07.247 [DEBUG] [Thread-127087] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:39:07.247 [INFO] [Thread-127087] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:39:07.252 [DEBUG] [Thread-127087] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:39:07.252 [DEBUG] [Thread-127087] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:39:07.252 [DEBUG] [Thread-127087] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:39:07.252 [DEBUG] [Thread-127087] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:39:07.252 [DEBUG] [Thread-127087] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:39:07.252 [DEBUG] [Thread-127087] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:39:07.252 [DEBUG] [Thread-127087] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:39:07.252 [DEBUG] [Thread-127087] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:39:07.252 [DEBUG] [Thread-127087] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:39:07.252 [DEBUG] [Thread-127087] [transport.py] [_log()] client lang: <none>
2025-11-04T02:39:07.252 [DEBUG] [Thread-127087] [transport.py] [_log()] server lang: <none>
2025-11-04T02:39:07.252 [DEBUG] [Thread-127087] [transport.py] [_log()] kex follows: False
2025-11-04T02:39:07.252 [DEBUG] [Thread-127087] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:39:07.253 [DEBUG] [Thread-127087] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:39:07.253 [DEBUG] [Thread-127087] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:39:07.253 [DEBUG] [Thread-127087] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:39:07.253 [DEBUG] [Thread-127087] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:39:07.253 [DEBUG] [Thread-127087] [transport.py] [_log()] Compression: none
2025-11-04T02:39:07.253 [DEBUG] [Thread-127087] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:39:07.274 [DEBUG] [Thread-127087] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:39:07.277 [DEBUG] [Thread-127087] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:39:07.278 [DEBUG] [Thread-127087] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:39:07.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:39:07.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:39:07.281 [DEBUG] [Thread-127087] [transport.py] [_log()] userauth is OK
2025-11-04T02:39:07.281 [DEBUG] [Thread-127087] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:39:07.282 [DEBUG] [Thread-127087] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:39:07.282 [DEBUG] [Thread-127087] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:39:07.282 [DEBUG] [Thread-127087] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:39:07.298 [INFO] [Thread-127087] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:39:07.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:39:07.881 [DEBUG] [Thread-127087] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:39:07.881 [DEBUG] [Thread-127087] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:39:07.881 [DEBUG] [Thread-127087] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:39:07.921 [DEBUG] [Thread-127087] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:39:07.921 [DEBUG] [Thread-127087] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:39:07.923 [DEBUG] [Thread-127087] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:39:07.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:39:07.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:39:07.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:39:07.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:39:07.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:39:07.945 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:39:07.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:39:07.945 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:39:07.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:39:07.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.026833 -999.00  +16.60  20.90     19   -6.70 1 1 1 1 1     0    0 24.02 45.08 ZNESW 20.1 20.9 312.6 24.2 16.7 -23.9 16.6 -22.8 16.4 -22.5 16.7 -23.6
2025-11-04T02:39:07.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:39:07.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:39:07.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.026833
2025-11-04T02:39:07.952 [DEBUG] [Thread-127087] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:39:07.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:39:07.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:39:07.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:39:07.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:39:07.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:39:07.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:38:31', tmtdew=27.34, humidity=14.47, cloud=0.0, wind=18.77, temperature=16.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:39:05', seeing=1.02, atlas_timestamp='2025-11-04T00:38:38.371', atlas_cloud=1, atlas_rain=1, zp_data=[0.04025000000000034, 0.06824999999999903, 0.1277500000000007, 0.02049999999999841, 0.0625, 0.09525000000000006, 0.05299999999999905, 0.06824999999999903, 0.10200000000000031, 0.11400000000000077, 0.14724999999999966, 0.10299999999999976, 0.23300000000000054, -0.03974999999999973, 0.06049999999999933, -0.010999999999999233, 0.1042500000000004, 0.09350000000000058, 0.16299999999999848, 0.15724999999999945, 0.17999999999999972, -0.054250000000001464, 0.12225000000000108, 0.11074999999999946, 0.1269999999999989, 0.20950000000000024, 0.12374999999999936, 0.29300000000000104, 0.2679999999999998, -0.509999999999998, 0.18600000000000172, 0.17900000000000027, 0.1897499999999983], zp_timestamp='2025-11-04T00:36:00')
2025-11-04T02:39:08.035 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:39:08.049 [DEBUG] [Thread-127090] [transport.py] [_log()] starting thread (client mode): 0xed12e30
2025-11-04T02:39:08.049 [DEBUG] [Thread-127090] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:39:08.065 [DEBUG] [Thread-127090] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:39:08.065 [INFO] [Thread-127090] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:39:08.075 [DEBUG] [Thread-127090] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:39:08.075 [DEBUG] [Thread-127090] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:39:08.075 [DEBUG] [Thread-127090] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:39:08.075 [DEBUG] [Thread-127090] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:39:08.076 [DEBUG] [Thread-127090] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:39:08.076 [DEBUG] [Thread-127090] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:39:08.076 [DEBUG] [Thread-127090] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:39:08.076 [DEBUG] [Thread-127090] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:39:08.076 [DEBUG] [Thread-127090] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:39:08.076 [DEBUG] [Thread-127090] [transport.py] [_log()] client lang: <none>
2025-11-04T02:39:08.076 [DEBUG] [Thread-127090] [transport.py] [_log()] server lang: <none>
2025-11-04T02:39:08.076 [DEBUG] [Thread-127090] [transport.py] [_log()] kex follows: False
2025-11-04T02:39:08.076 [DEBUG] [Thread-127090] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:39:08.076 [DEBUG] [Thread-127090] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:39:08.076 [DEBUG] [Thread-127090] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:39:08.076 [DEBUG] [Thread-127090] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:39:08.076 [DEBUG] [Thread-127090] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:39:08.077 [DEBUG] [Thread-127090] [transport.py] [_log()] Compression: none
2025-11-04T02:39:08.081 [DEBUG] [Thread-127090] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:39:08.132 [DEBUG] [Thread-127090] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:39:08.133 [DEBUG] [Thread-127090] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:39:08.133 [DEBUG] [Thread-127090] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:39:08.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:39:08.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:39:08.193 [DEBUG] [Thread-127090] [transport.py] [_log()] userauth is OK
2025-11-04T02:39:08.193 [DEBUG] [Thread-127090] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:39:08.193 [DEBUG] [Thread-127090] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:39:08.194 [DEBUG] [Thread-127090] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:39:08.194 [DEBUG] [Thread-127090] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:39:08.213 [INFO] [Thread-127090] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:39:08.213 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:39:08.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:39:09.042 [DEBUG] [Thread-127090] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:39:09.042 [DEBUG] [Thread-127090] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:39:09.083 [DEBUG] [Thread-127090] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:39:09.083 [DEBUG] [Thread-127090] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:39:09.094 [DEBUG] [Thread-127090] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:39:09.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:39:09.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:39:09.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:39:09.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:39:09.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:39:09.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:39:09.129 [DEBUG] [Thread-127090] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:39:09.296 [DEBUG] [Thread-127092 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:39:24.351 [DEBUG] [Thread-127093 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:39:39.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:39:39.151 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:39:39.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:39:39.382 [DEBUG] [Thread-127094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:39:39.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 39, 4), 27.32, 14.51, 0.0, 18.99, 16.43, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:39:39.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:39:04
2025-11-04T02:39:40.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:39:40.306 [DEBUG] [Thread-127095] [transport.py] [_log()] starting thread (client mode): 0xed12cb0
2025-11-04T02:39:40.306 [DEBUG] [Thread-127095] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:39:40.316 [DEBUG] [Thread-127095] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:39:40.316 [INFO] [Thread-127095] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:39:40.320 [DEBUG] [Thread-127095] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:39:40.320 [DEBUG] [Thread-127095] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:39:40.320 [DEBUG] [Thread-127095] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:39:40.320 [DEBUG] [Thread-127095] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:39:40.320 [DEBUG] [Thread-127095] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:39:40.320 [DEBUG] [Thread-127095] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:39:40.320 [DEBUG] [Thread-127095] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:39:40.320 [DEBUG] [Thread-127095] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:39:40.320 [DEBUG] [Thread-127095] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:39:40.320 [DEBUG] [Thread-127095] [transport.py] [_log()] client lang: <none>
2025-11-04T02:39:40.320 [DEBUG] [Thread-127095] [transport.py] [_log()] server lang: <none>
2025-11-04T02:39:40.320 [DEBUG] [Thread-127095] [transport.py] [_log()] kex follows: False
2025-11-04T02:39:40.320 [DEBUG] [Thread-127095] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:39:40.320 [DEBUG] [Thread-127095] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:39:40.320 [DEBUG] [Thread-127095] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:39:40.320 [DEBUG] [Thread-127095] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:39:40.320 [DEBUG] [Thread-127095] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:39:40.320 [DEBUG] [Thread-127095] [transport.py] [_log()] Compression: none
2025-11-04T02:39:40.320 [DEBUG] [Thread-127095] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:39:40.348 [DEBUG] [Thread-127095] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:39:40.351 [DEBUG] [Thread-127095] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:39:40.352 [DEBUG] [Thread-127095] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:39:40.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:39:40.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:39:40.354 [DEBUG] [Thread-127095] [transport.py] [_log()] userauth is OK
2025-11-04T02:39:40.355 [DEBUG] [Thread-127095] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:39:40.355 [DEBUG] [Thread-127095] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:39:40.355 [DEBUG] [Thread-127095] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:39:40.355 [DEBUG] [Thread-127095] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:39:40.366 [INFO] [Thread-127095] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:39:40.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:39:41.031 [DEBUG] [Thread-127095] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:39:41.031 [DEBUG] [Thread-127095] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:39:41.033 [DEBUG] [Thread-127095] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:39:41.073 [DEBUG] [Thread-127095] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:39:41.073 [DEBUG] [Thread-127095] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:39:41.077 [DEBUG] [Thread-127095] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:39:41.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:39:41.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:39:41.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:39:41.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:39:41.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:39:41.106 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:39:41.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:39:41.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:39:41.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:39:41.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.027181 -999.00  +16.60  20.64     19   -6.70 1 1 1 1 1     0    0 24.66 47.08 ZNESW 18.9 20.6 309.6 23.1 16.8 -24.0 16.6 -23.0 16.3 -22.7 16.6 -23.5
2025-11-04T02:39:41.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:39:41.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:39:41.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.027181
2025-11-04T02:39:41.116 [DEBUG] [Thread-127095] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:39:41.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:39:41.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:39:41.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:39:41.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:39:41.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:39:41.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:39:04', tmtdew=27.32, humidity=14.51, cloud=0.0, wind=18.99, temperature=16.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:39:38', seeing=0.96, atlas_timestamp='2025-11-04T00:39:08.438', atlas_cloud=1, atlas_rain=1, zp_data=[0.04025000000000034, 0.06824999999999903, 0.1277500000000007, 0.02049999999999841, 0.0625, 0.09525000000000006, 0.05299999999999905, 0.06824999999999903, 0.10200000000000031, 0.11400000000000077, 0.14724999999999966, 0.10299999999999976, 0.23300000000000054, -0.03974999999999973, 0.06049999999999933, -0.010999999999999233, 0.1042500000000004, 0.09350000000000058, 0.16299999999999848, 0.15724999999999945, 0.17999999999999972, -0.054250000000001464, 0.12225000000000108, 0.11074999999999946, 0.1269999999999989, 0.20950000000000024, 0.12374999999999936, 0.29300000000000104, 0.2679999999999998, -0.509999999999998, 0.18600000000000172, 0.17900000000000027, 0.1897499999999983], zp_timestamp='2025-11-04T00:36:00')
2025-11-04T02:39:41.220 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:39:41.233 [DEBUG] [Thread-127098] [transport.py] [_log()] starting thread (client mode): 0xed11330
2025-11-04T02:39:41.234 [DEBUG] [Thread-127098] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:39:41.249 [DEBUG] [Thread-127098] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:39:41.249 [INFO] [Thread-127098] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:39:41.258 [DEBUG] [Thread-127098] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:39:41.258 [DEBUG] [Thread-127098] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:39:41.258 [DEBUG] [Thread-127098] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:39:41.258 [DEBUG] [Thread-127098] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:39:41.258 [DEBUG] [Thread-127098] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:39:41.258 [DEBUG] [Thread-127098] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:39:41.258 [DEBUG] [Thread-127098] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:39:41.258 [DEBUG] [Thread-127098] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:39:41.258 [DEBUG] [Thread-127098] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:39:41.258 [DEBUG] [Thread-127098] [transport.py] [_log()] client lang: <none>
2025-11-04T02:39:41.258 [DEBUG] [Thread-127098] [transport.py] [_log()] server lang: <none>
2025-11-04T02:39:41.258 [DEBUG] [Thread-127098] [transport.py] [_log()] kex follows: False
2025-11-04T02:39:41.258 [DEBUG] [Thread-127098] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:39:41.258 [DEBUG] [Thread-127098] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:39:41.259 [DEBUG] [Thread-127098] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:39:41.259 [DEBUG] [Thread-127098] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:39:41.259 [DEBUG] [Thread-127098] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:39:41.259 [DEBUG] [Thread-127098] [transport.py] [_log()] Compression: none
2025-11-04T02:39:41.259 [DEBUG] [Thread-127098] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:39:41.317 [DEBUG] [Thread-127098] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:39:41.318 [DEBUG] [Thread-127098] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:39:41.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:39:41.319 [DEBUG] [Thread-127098] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:39:41.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:39:41.378 [DEBUG] [Thread-127098] [transport.py] [_log()] userauth is OK
2025-11-04T02:39:41.378 [DEBUG] [Thread-127098] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:39:41.378 [DEBUG] [Thread-127098] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:39:41.378 [DEBUG] [Thread-127098] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:39:41.379 [DEBUG] [Thread-127098] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:39:41.398 [INFO] [Thread-127098] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:39:41.398 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:39:41.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:39:42.227 [DEBUG] [Thread-127098] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:39:42.227 [DEBUG] [Thread-127098] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:39:42.268 [DEBUG] [Thread-127098] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:39:42.268 [DEBUG] [Thread-127098] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:39:42.280 [DEBUG] [Thread-127098] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:39:42.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:39:42.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:39:42.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:39:42.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:39:42.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:39:42.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:39:42.323 [DEBUG] [Thread-127098] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:39:46.375 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:39:46.377 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:39:54.414 [DEBUG] [Thread-127100 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:40:05.607 [DEBUG] [Thread-127101 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:40:09.534 [DEBUG] [Thread-127102 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:40:12.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:40:12.319 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:40:12.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:40:13.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 39, 37), 27.34, 14.49, 0.0, 19.32, 16.43, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:40:13.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:39:37
2025-11-04T02:40:13.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:40:13.475 [DEBUG] [Thread-127103] [transport.py] [_log()] starting thread (client mode): 0xed126e0
2025-11-04T02:40:13.475 [DEBUG] [Thread-127103] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:40:13.490 [DEBUG] [Thread-127103] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:40:13.490 [INFO] [Thread-127103] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:40:13.494 [DEBUG] [Thread-127103] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:40:13.494 [DEBUG] [Thread-127103] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:40:13.494 [DEBUG] [Thread-127103] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:40:13.494 [DEBUG] [Thread-127103] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:40:13.494 [DEBUG] [Thread-127103] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:40:13.494 [DEBUG] [Thread-127103] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:40:13.494 [DEBUG] [Thread-127103] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:40:13.494 [DEBUG] [Thread-127103] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:40:13.494 [DEBUG] [Thread-127103] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:40:13.494 [DEBUG] [Thread-127103] [transport.py] [_log()] client lang: <none>
2025-11-04T02:40:13.494 [DEBUG] [Thread-127103] [transport.py] [_log()] server lang: <none>
2025-11-04T02:40:13.494 [DEBUG] [Thread-127103] [transport.py] [_log()] kex follows: False
2025-11-04T02:40:13.494 [DEBUG] [Thread-127103] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:40:13.494 [DEBUG] [Thread-127103] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:40:13.494 [DEBUG] [Thread-127103] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:40:13.494 [DEBUG] [Thread-127103] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:40:13.494 [DEBUG] [Thread-127103] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:40:13.494 [DEBUG] [Thread-127103] [transport.py] [_log()] Compression: none
2025-11-04T02:40:13.495 [DEBUG] [Thread-127103] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:40:13.517 [DEBUG] [Thread-127103] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:40:13.519 [DEBUG] [Thread-127103] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:40:13.520 [DEBUG] [Thread-127103] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:40:13.521 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:40:13.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:40:13.557 [DEBUG] [Thread-127103] [transport.py] [_log()] userauth is OK
2025-11-04T02:40:13.558 [DEBUG] [Thread-127103] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:40:13.558 [DEBUG] [Thread-127103] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:40:13.558 [DEBUG] [Thread-127103] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:40:13.558 [DEBUG] [Thread-127103] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:40:13.598 [INFO] [Thread-127103] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:40:13.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:40:15.662 [DEBUG] [Thread-127103] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:40:15.663 [DEBUG] [Thread-127103] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:40:15.665 [DEBUG] [Thread-127103] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:40:15.702 [DEBUG] [Thread-127103] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:40:15.703 [DEBUG] [Thread-127103] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:40:15.705 [DEBUG] [Thread-127103] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:40:15.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:40:15.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:40:15.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:40:15.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:40:15.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:40:15.841 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:40:15.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:40:15.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:40:15.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:40:15.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.027528 -999.00  +16.60  21.63     19   -6.80 1 1 1 1 1     0    0 24.81 51.23 ZNESW 20.5 21.6 312.4 23.7 16.7 -23.9 16.6 -23.0 16.4 -22.7 16.7 -23.5
2025-11-04T02:40:15.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:40:15.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:40:15.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.027528
2025-11-04T02:40:15.850 [DEBUG] [Thread-127103] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:40:15.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:40:15.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:40:15.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:40:15.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:40:15.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:40:15.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:39:37', tmtdew=27.34, humidity=14.49, cloud=0.0, wind=19.32, temperature=16.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:40:11', seeing=0.96, atlas_timestamp='2025-11-04T00:39:38.419', atlas_cloud=1, atlas_rain=1, zp_data=[0.04025000000000034, 0.06824999999999903, 0.1277500000000007, 0.02049999999999841, 0.0625, 0.09525000000000006, 0.05299999999999905, 0.06824999999999903, 0.10200000000000031, 0.11400000000000077, 0.14724999999999966, 0.10299999999999976, 0.23300000000000054, -0.03974999999999973, 0.06049999999999933, -0.010999999999999233, 0.1042500000000004, 0.09350000000000058, 0.16299999999999848, 0.15724999999999945, 0.17999999999999972, -0.054250000000001464, 0.12225000000000108, 0.11074999999999946, 0.1269999999999989, 0.20950000000000024, 0.12374999999999936, 0.29300000000000104, 0.2679999999999998, -0.509999999999998, 0.18600000000000172, 0.17900000000000027, 0.1897499999999983], zp_timestamp='2025-11-04T00:36:00')
2025-11-04T02:40:15.949 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:40:15.961 [DEBUG] [Thread-127106] [transport.py] [_log()] starting thread (client mode): 0xed36470
2025-11-04T02:40:15.961 [DEBUG] [Thread-127106] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:40:15.979 [DEBUG] [Thread-127106] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:40:15.979 [INFO] [Thread-127106] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:40:15.989 [DEBUG] [Thread-127106] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:40:15.989 [DEBUG] [Thread-127106] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:40:15.990 [DEBUG] [Thread-127106] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:40:15.990 [DEBUG] [Thread-127106] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:40:15.990 [DEBUG] [Thread-127106] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:40:15.990 [DEBUG] [Thread-127106] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:40:15.990 [DEBUG] [Thread-127106] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:40:15.990 [DEBUG] [Thread-127106] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:40:15.990 [DEBUG] [Thread-127106] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:40:15.990 [DEBUG] [Thread-127106] [transport.py] [_log()] client lang: <none>
2025-11-04T02:40:15.990 [DEBUG] [Thread-127106] [transport.py] [_log()] server lang: <none>
2025-11-04T02:40:15.990 [DEBUG] [Thread-127106] [transport.py] [_log()] kex follows: False
2025-11-04T02:40:15.991 [DEBUG] [Thread-127106] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:40:15.991 [DEBUG] [Thread-127106] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:40:15.991 [DEBUG] [Thread-127106] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:40:15.991 [DEBUG] [Thread-127106] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:40:15.991 [DEBUG] [Thread-127106] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:40:15.992 [DEBUG] [Thread-127106] [transport.py] [_log()] Compression: none
2025-11-04T02:40:15.992 [DEBUG] [Thread-127106] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:40:16.047 [DEBUG] [Thread-127106] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:40:16.048 [DEBUG] [Thread-127106] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:40:16.049 [DEBUG] [Thread-127106] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:40:16.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:40:16.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:40:16.105 [DEBUG] [Thread-127106] [transport.py] [_log()] userauth is OK
2025-11-04T02:40:16.106 [DEBUG] [Thread-127106] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:40:16.106 [DEBUG] [Thread-127106] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:40:16.106 [DEBUG] [Thread-127106] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:40:16.106 [DEBUG] [Thread-127106] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:40:16.125 [INFO] [Thread-127106] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:40:16.126 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:40:16.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:40:16.958 [DEBUG] [Thread-127106] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:40:16.958 [DEBUG] [Thread-127106] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:40:17.007 [DEBUG] [Thread-127106] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:40:17.007 [DEBUG] [Thread-127106] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:40:17.017 [DEBUG] [Thread-127106] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:40:17.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:40:17.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:40:17.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:40:17.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:40:17.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:40:17.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:40:17.058 [DEBUG] [Thread-127106] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:40:24.575 [DEBUG] [Thread-127108 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:40:39.664 [DEBUG] [Thread-127109 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:40:46.578 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:40:46.579 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:40:47.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:40:47.082 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:40:47.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:40:47.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 40, 43), 27.24, 14.59, 0.0, 18.65, 16.38, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:40:47.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:40:43
2025-11-04T02:40:48.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:40:48.195 [DEBUG] [Thread-127110] [transport.py] [_log()] starting thread (client mode): 0xed375b0
2025-11-04T02:40:48.195 [DEBUG] [Thread-127110] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:40:48.209 [DEBUG] [Thread-127110] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:40:48.209 [INFO] [Thread-127110] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:40:48.214 [DEBUG] [Thread-127110] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:40:48.214 [DEBUG] [Thread-127110] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:40:48.214 [DEBUG] [Thread-127110] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:40:48.214 [DEBUG] [Thread-127110] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:40:48.214 [DEBUG] [Thread-127110] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:40:48.214 [DEBUG] [Thread-127110] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:40:48.214 [DEBUG] [Thread-127110] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:40:48.214 [DEBUG] [Thread-127110] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:40:48.214 [DEBUG] [Thread-127110] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:40:48.215 [DEBUG] [Thread-127110] [transport.py] [_log()] client lang: <none>
2025-11-04T02:40:48.215 [DEBUG] [Thread-127110] [transport.py] [_log()] server lang: <none>
2025-11-04T02:40:48.215 [DEBUG] [Thread-127110] [transport.py] [_log()] kex follows: False
2025-11-04T02:40:48.215 [DEBUG] [Thread-127110] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:40:48.215 [DEBUG] [Thread-127110] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:40:48.216 [DEBUG] [Thread-127110] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:40:48.216 [DEBUG] [Thread-127110] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:40:48.216 [DEBUG] [Thread-127110] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:40:48.216 [DEBUG] [Thread-127110] [transport.py] [_log()] Compression: none
2025-11-04T02:40:48.216 [DEBUG] [Thread-127110] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:40:48.257 [DEBUG] [Thread-127110] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:40:48.260 [DEBUG] [Thread-127110] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:40:48.262 [DEBUG] [Thread-127110] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:40:48.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:40:48.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:40:48.266 [DEBUG] [Thread-127110] [transport.py] [_log()] userauth is OK
2025-11-04T02:40:48.267 [DEBUG] [Thread-127110] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:40:48.267 [DEBUG] [Thread-127110] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:40:48.267 [DEBUG] [Thread-127110] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:40:48.267 [DEBUG] [Thread-127110] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:40:48.307 [INFO] [Thread-127110] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:40:48.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:40:48.944 [DEBUG] [Thread-127110] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:40:48.945 [DEBUG] [Thread-127110] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:40:48.948 [DEBUG] [Thread-127110] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:40:48.987 [DEBUG] [Thread-127110] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:40:48.987 [DEBUG] [Thread-127110] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:40:48.991 [DEBUG] [Thread-127110] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:40:49.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:40:49.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:40:49.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:40:49.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:40:49.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:40:49.018 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:40:49.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:40:49.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:40:49.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:40:49.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.027875 -999.00  +16.60  22.44     19   -6.70 1 1 1 1 1     0    0 24.37 48.78 ZNESW 23.8 22.4 314.4 24.2 16.7 -23.9 16.6 -22.9 16.4 -22.6 16.6 -23.6
2025-11-04T02:40:49.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:40:49.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:40:49.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.027875
2025-11-04T02:40:49.026 [DEBUG] [Thread-127110] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:40:49.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:40:49.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:40:49.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:40:49.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:40:49.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:40:49.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:40:43', tmtdew=27.24, humidity=14.59, cloud=0.0, wind=18.65, temperature=16.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:40:43', seeing=0.93, atlas_timestamp='2025-11-04T00:40:08.400', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, 0.04625000000000057, 0.08525000000000027, 0.030999999999998806, 0.0024999999999995026, 0.048250000000001236, 0.04800000000000004, 0.03125, 0.06149999999999878, 0.07649999999999935, 0.12524999999999942, 0.08099999999999952, 0.23099999999999987, -0.0417500000000004, 0.03849999999999909, -0.0045000000000001705, 0.09475000000000122, 0.09249999999999936, 0.18599999999999817, 0.13924999999999876, 0.17999999999999794, 0.023249999999999105, 0.07925000000000182, 0.04574999999999996, 0.09499999999999886, 0.1689999999999987, 0.10174999999999912, 0.2580000000000009, 0.22799999999999976, -0.6059999999999999, 0.16600000000000037, 0.12100000000000044, 0.15524999999999878], zp_timestamp='2025-11-04T00:39:00')
2025-11-04T02:40:49.130 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:40:49.146 [DEBUG] [Thread-127113] [transport.py] [_log()] starting thread (client mode): 0xed127d0
2025-11-04T02:40:49.146 [DEBUG] [Thread-127113] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:40:49.160 [DEBUG] [Thread-127113] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:40:49.160 [INFO] [Thread-127113] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:40:49.173 [DEBUG] [Thread-127113] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:40:49.174 [DEBUG] [Thread-127113] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:40:49.174 [DEBUG] [Thread-127113] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:40:49.174 [DEBUG] [Thread-127113] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:40:49.174 [DEBUG] [Thread-127113] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:40:49.174 [DEBUG] [Thread-127113] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:40:49.174 [DEBUG] [Thread-127113] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:40:49.174 [DEBUG] [Thread-127113] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:40:49.174 [DEBUG] [Thread-127113] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:40:49.174 [DEBUG] [Thread-127113] [transport.py] [_log()] client lang: <none>
2025-11-04T02:40:49.174 [DEBUG] [Thread-127113] [transport.py] [_log()] server lang: <none>
2025-11-04T02:40:49.174 [DEBUG] [Thread-127113] [transport.py] [_log()] kex follows: False
2025-11-04T02:40:49.174 [DEBUG] [Thread-127113] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:40:49.174 [DEBUG] [Thread-127113] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:40:49.174 [DEBUG] [Thread-127113] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:40:49.175 [DEBUG] [Thread-127113] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:40:49.175 [DEBUG] [Thread-127113] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:40:49.175 [DEBUG] [Thread-127113] [transport.py] [_log()] Compression: none
2025-11-04T02:40:49.175 [DEBUG] [Thread-127113] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:40:49.244 [DEBUG] [Thread-127113] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:40:49.245 [DEBUG] [Thread-127113] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:40:49.246 [DEBUG] [Thread-127113] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:40:49.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:40:49.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:40:49.301 [DEBUG] [Thread-127113] [transport.py] [_log()] userauth is OK
2025-11-04T02:40:49.302 [DEBUG] [Thread-127113] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:40:49.302 [DEBUG] [Thread-127113] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:40:49.302 [DEBUG] [Thread-127113] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:40:49.302 [DEBUG] [Thread-127113] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:40:49.323 [INFO] [Thread-127113] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:40:49.323 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:40:49.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:40:50.205 [DEBUG] [Thread-127113] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:40:50.206 [DEBUG] [Thread-127113] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:40:50.245 [DEBUG] [Thread-127113] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:40:50.246 [DEBUG] [Thread-127113] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:40:50.255 [DEBUG] [Thread-127113] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:40:50.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:40:50.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:40:50.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:40:50.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:40:50.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:40:50.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:40:50.294 [DEBUG] [Thread-127113] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:40:54.702 [DEBUG] [Thread-127115 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:41:05.926 [DEBUG] [Thread-127116 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:41:09.831 [DEBUG] [Thread-127117 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:41:20.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:41:20.318 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:41:20.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:41:21.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 41, 15), 27.24, 14.59, 0.0, 18.7, 16.36, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:41:21.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:41:15
2025-11-04T02:41:21.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:41:21.580 [DEBUG] [Thread-127118] [transport.py] [_log()] starting thread (client mode): 0xed07070
2025-11-04T02:41:21.581 [DEBUG] [Thread-127118] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:41:21.595 [DEBUG] [Thread-127118] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:41:21.595 [INFO] [Thread-127118] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:41:21.599 [DEBUG] [Thread-127118] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:41:21.599 [DEBUG] [Thread-127118] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:41:21.599 [DEBUG] [Thread-127118] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:41:21.599 [DEBUG] [Thread-127118] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:41:21.599 [DEBUG] [Thread-127118] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:41:21.599 [DEBUG] [Thread-127118] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:41:21.599 [DEBUG] [Thread-127118] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:41:21.599 [DEBUG] [Thread-127118] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:41:21.599 [DEBUG] [Thread-127118] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:41:21.599 [DEBUG] [Thread-127118] [transport.py] [_log()] client lang: <none>
2025-11-04T02:41:21.599 [DEBUG] [Thread-127118] [transport.py] [_log()] server lang: <none>
2025-11-04T02:41:21.599 [DEBUG] [Thread-127118] [transport.py] [_log()] kex follows: False
2025-11-04T02:41:21.599 [DEBUG] [Thread-127118] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:41:21.600 [DEBUG] [Thread-127118] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:41:21.600 [DEBUG] [Thread-127118] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:41:21.600 [DEBUG] [Thread-127118] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:41:21.600 [DEBUG] [Thread-127118] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:41:21.600 [DEBUG] [Thread-127118] [transport.py] [_log()] Compression: none
2025-11-04T02:41:21.600 [DEBUG] [Thread-127118] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:41:21.626 [DEBUG] [Thread-127118] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:41:21.629 [DEBUG] [Thread-127118] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:41:21.630 [DEBUG] [Thread-127118] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:41:21.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:41:21.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:41:21.633 [DEBUG] [Thread-127118] [transport.py] [_log()] userauth is OK
2025-11-04T02:41:21.633 [DEBUG] [Thread-127118] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:41:21.633 [DEBUG] [Thread-127118] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:41:21.633 [DEBUG] [Thread-127118] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:41:21.633 [DEBUG] [Thread-127118] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:41:21.649 [INFO] [Thread-127118] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:41:21.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:41:22.441 [DEBUG] [Thread-127118] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:41:22.441 [DEBUG] [Thread-127118] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:41:22.441 [DEBUG] [Thread-127118] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:41:22.482 [DEBUG] [Thread-127118] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:41:22.482 [DEBUG] [Thread-127118] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:41:22.484 [DEBUG] [Thread-127118] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:41:22.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:41:22.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:41:22.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:41:22.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:41:22.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:41:22.498 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:41:22.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:41:22.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:41:22.500 [DEBUG] [Thread-127118] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:41:22.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:41:22.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.028222 -999.00  +16.60  21.66     19   -6.80 1 1 1 1 1     0    0 24.60 49.04 ZNESW 20.2 21.7 313.4 25.2 16.7 -23.9 16.6 -22.9 16.4 -22.5 16.7 -23.6
2025-11-04T02:41:22.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:41:22.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:41:22.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.028222
2025-11-04T02:41:22.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:41:22.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:41:22.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:41:22.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:41:22.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:41:22.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:41:15', tmtdew=27.24, humidity=14.59, cloud=0.0, wind=18.7, temperature=16.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:41:16', seeing=0.93, atlas_timestamp='2025-11-04T00:40:38.381', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, 0.04625000000000057, 0.08525000000000027, 0.030999999999998806, 0.0024999999999995026, 0.048250000000001236, 0.04800000000000004, 0.03125, 0.06149999999999878, 0.07649999999999935, 0.12524999999999942, 0.08099999999999952, 0.23099999999999987, -0.0417500000000004, 0.03849999999999909, -0.0045000000000001705, 0.09475000000000122, 0.09249999999999936, 0.18599999999999817, 0.13924999999999876, 0.17999999999999794, 0.023249999999999105, 0.07925000000000182, 0.04574999999999996, 0.09499999999999886, 0.1689999999999987, 0.10174999999999912, 0.2580000000000009, 0.22799999999999976, -0.6059999999999999, 0.16600000000000037, 0.12100000000000044, 0.15524999999999878], zp_timestamp='2025-11-04T00:39:00')
2025-11-04T02:41:22.592 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:41:22.604 [DEBUG] [Thread-127121] [transport.py] [_log()] starting thread (client mode): 0xed06800
2025-11-04T02:41:22.604 [DEBUG] [Thread-127121] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:41:22.624 [DEBUG] [Thread-127121] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:41:22.624 [INFO] [Thread-127121] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:41:22.632 [DEBUG] [Thread-127121] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:41:22.632 [DEBUG] [Thread-127121] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:41:22.632 [DEBUG] [Thread-127121] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:41:22.632 [DEBUG] [Thread-127121] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:41:22.632 [DEBUG] [Thread-127121] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:41:22.632 [DEBUG] [Thread-127121] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:41:22.632 [DEBUG] [Thread-127121] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:41:22.632 [DEBUG] [Thread-127121] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:41:22.632 [DEBUG] [Thread-127121] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:41:22.632 [DEBUG] [Thread-127121] [transport.py] [_log()] client lang: <none>
2025-11-04T02:41:22.632 [DEBUG] [Thread-127121] [transport.py] [_log()] server lang: <none>
2025-11-04T02:41:22.632 [DEBUG] [Thread-127121] [transport.py] [_log()] kex follows: False
2025-11-04T02:41:22.632 [DEBUG] [Thread-127121] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:41:22.632 [DEBUG] [Thread-127121] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:41:22.632 [DEBUG] [Thread-127121] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:41:22.632 [DEBUG] [Thread-127121] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:41:22.632 [DEBUG] [Thread-127121] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:41:22.632 [DEBUG] [Thread-127121] [transport.py] [_log()] Compression: none
2025-11-04T02:41:22.632 [DEBUG] [Thread-127121] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:41:22.697 [DEBUG] [Thread-127121] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:41:22.697 [DEBUG] [Thread-127121] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:41:22.697 [DEBUG] [Thread-127121] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:41:22.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:41:22.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:41:22.754 [DEBUG] [Thread-127121] [transport.py] [_log()] userauth is OK
2025-11-04T02:41:22.754 [DEBUG] [Thread-127121] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:41:22.754 [DEBUG] [Thread-127121] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:41:22.754 [DEBUG] [Thread-127121] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:41:22.754 [DEBUG] [Thread-127121] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:41:22.771 [INFO] [Thread-127121] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:41:22.771 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:41:22.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:41:23.601 [DEBUG] [Thread-127121] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:41:23.602 [DEBUG] [Thread-127121] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:41:23.650 [DEBUG] [Thread-127121] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:41:23.650 [DEBUG] [Thread-127121] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:41:23.659 [DEBUG] [Thread-127121] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:41:23.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:41:23.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:41:23.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:41:23.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:41:23.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:41:23.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:41:23.699 [DEBUG] [Thread-127121] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:41:24.873 [DEBUG] [Thread-127123 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:41:39.979 [DEBUG] [Thread-127124 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:41:46.791 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:41:46.793 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:41:53.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:41:53.733 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:41:53.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:41:54.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 41, 48), 27.1, 14.64, 0.0, 18.88, 16.29, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:41:54.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:41:48
2025-11-04T02:41:54.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:41:55.007 [DEBUG] [Thread-127125] [transport.py] [_log()] starting thread (client mode): 0xed10940
2025-11-04T02:41:55.007 [DEBUG] [Thread-127125] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:41:55.020 [DEBUG] [Thread-127125] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:41:55.021 [INFO] [Thread-127125] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:41:55.024 [DEBUG] [Thread-127127 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:41:55.026 [DEBUG] [Thread-127125] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:41:55.026 [DEBUG] [Thread-127125] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:41:55.026 [DEBUG] [Thread-127125] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:41:55.026 [DEBUG] [Thread-127125] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:41:55.026 [DEBUG] [Thread-127125] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:41:55.026 [DEBUG] [Thread-127125] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:41:55.026 [DEBUG] [Thread-127125] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:41:55.026 [DEBUG] [Thread-127125] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:41:55.026 [DEBUG] [Thread-127125] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:41:55.026 [DEBUG] [Thread-127125] [transport.py] [_log()] client lang: <none>
2025-11-04T02:41:55.026 [DEBUG] [Thread-127125] [transport.py] [_log()] server lang: <none>
2025-11-04T02:41:55.026 [DEBUG] [Thread-127125] [transport.py] [_log()] kex follows: False
2025-11-04T02:41:55.027 [DEBUG] [Thread-127125] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:41:55.027 [DEBUG] [Thread-127125] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:41:55.027 [DEBUG] [Thread-127125] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:41:55.027 [DEBUG] [Thread-127125] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:41:55.027 [DEBUG] [Thread-127125] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:41:55.027 [DEBUG] [Thread-127125] [transport.py] [_log()] Compression: none
2025-11-04T02:41:55.027 [DEBUG] [Thread-127125] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:41:55.061 [DEBUG] [Thread-127125] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:41:55.065 [DEBUG] [Thread-127125] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:41:55.067 [DEBUG] [Thread-127125] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:41:55.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:41:55.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:41:55.072 [DEBUG] [Thread-127125] [transport.py] [_log()] userauth is OK
2025-11-04T02:41:55.072 [DEBUG] [Thread-127125] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:41:55.072 [DEBUG] [Thread-127125] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:41:55.072 [DEBUG] [Thread-127125] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:41:55.072 [DEBUG] [Thread-127125] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:41:55.110 [INFO] [Thread-127125] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:41:55.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:41:55.740 [DEBUG] [Thread-127125] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:41:55.740 [DEBUG] [Thread-127125] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:41:55.741 [DEBUG] [Thread-127125] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:41:55.781 [DEBUG] [Thread-127125] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:41:55.781 [DEBUG] [Thread-127125] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:41:55.783 [DEBUG] [Thread-127125] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:41:55.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:41:55.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:41:55.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:41:55.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:41:55.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:41:55.804 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:41:55.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:41:55.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:41:55.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:41:55.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.028917 -999.00  +16.50  19.58     19   -6.80 1 1 1 1 1     0    0 24.71 50.53 ZNESW 17.8 19.6 313.2 22.4 16.6 -23.7 16.6 -22.9 16.4 -22.6 16.6 -23.5
2025-11-04T02:41:55.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:41:55.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:41:55.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.028917
2025-11-04T02:41:55.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:41:55.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:41:55.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:41:55.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:41:55.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:41:55.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:41:48', tmtdew=27.1, humidity=14.64, cloud=0.0, wind=18.88, temperature=16.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:41:49', seeing=0.9, atlas_timestamp='2025-11-04T00:41:38.429', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, 0.04625000000000057, 0.08525000000000027, 0.030999999999998806, 0.0024999999999995026, 0.048250000000001236, 0.04800000000000004, 0.03125, 0.06149999999999878, 0.07649999999999935, 0.12524999999999942, 0.08099999999999952, 0.23099999999999987, -0.0417500000000004, 0.03849999999999909, -0.0045000000000001705, 0.09475000000000122, 0.09249999999999936, 0.18599999999999817, 0.13924999999999876, 0.17999999999999794, 0.023249999999999105, 0.07925000000000182, 0.04574999999999996, 0.09499999999999886, 0.1689999999999987, 0.10174999999999912, 0.2580000000000009, 0.22799999999999976, -0.6059999999999999, 0.16600000000000037, 0.12100000000000044, 0.15524999999999878], zp_timestamp='2025-11-04T00:39:00')
2025-11-04T02:41:55.814 [DEBUG] [Thread-127125] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:41:55.888 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:41:55.901 [DEBUG] [Thread-127129] [transport.py] [_log()] starting thread (client mode): 0xed342e0
2025-11-04T02:41:55.901 [DEBUG] [Thread-127129] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:41:55.916 [DEBUG] [Thread-127129] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:41:55.916 [INFO] [Thread-127129] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:41:55.924 [DEBUG] [Thread-127129] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:41:55.924 [DEBUG] [Thread-127129] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:41:55.924 [DEBUG] [Thread-127129] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:41:55.924 [DEBUG] [Thread-127129] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:41:55.924 [DEBUG] [Thread-127129] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:41:55.924 [DEBUG] [Thread-127129] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:41:55.924 [DEBUG] [Thread-127129] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:41:55.924 [DEBUG] [Thread-127129] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:41:55.924 [DEBUG] [Thread-127129] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:41:55.924 [DEBUG] [Thread-127129] [transport.py] [_log()] client lang: <none>
2025-11-04T02:41:55.924 [DEBUG] [Thread-127129] [transport.py] [_log()] server lang: <none>
2025-11-04T02:41:55.925 [DEBUG] [Thread-127129] [transport.py] [_log()] kex follows: False
2025-11-04T02:41:55.925 [DEBUG] [Thread-127129] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:41:55.925 [DEBUG] [Thread-127129] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:41:55.925 [DEBUG] [Thread-127129] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:41:55.925 [DEBUG] [Thread-127129] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:41:55.925 [DEBUG] [Thread-127129] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:41:55.927 [DEBUG] [Thread-127129] [transport.py] [_log()] Compression: none
2025-11-04T02:41:55.927 [DEBUG] [Thread-127129] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:41:55.982 [DEBUG] [Thread-127129] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:41:55.982 [DEBUG] [Thread-127129] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:41:55.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:41:55.984 [DEBUG] [Thread-127129] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:41:55.984 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:41:56.042 [DEBUG] [Thread-127129] [transport.py] [_log()] userauth is OK
2025-11-04T02:41:56.042 [DEBUG] [Thread-127129] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:41:56.042 [DEBUG] [Thread-127129] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:41:56.042 [DEBUG] [Thread-127129] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:41:56.042 [DEBUG] [Thread-127129] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:41:56.061 [INFO] [Thread-127129] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:41:56.062 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:41:56.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:41:56.921 [DEBUG] [Thread-127129] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:41:56.921 [DEBUG] [Thread-127129] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:41:56.969 [DEBUG] [Thread-127129] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:41:56.969 [DEBUG] [Thread-127129] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:41:56.979 [DEBUG] [Thread-127129] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:41:56.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:41:56.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:41:56.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:41:57.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:41:57.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:41:57.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:41:57.013 [DEBUG] [Thread-127129] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:42:06.206 [DEBUG] [Thread-127131 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:42:10.077 [DEBUG] [Thread-127132 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:42:25.233 [DEBUG] [Thread-127133 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:42:27.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:42:27.046 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:42:27.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:42:27.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 42, 21), 27.1, 14.62, 0.0, 18.84, 16.26, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:42:27.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:42:21
2025-11-04T02:42:28.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:42:28.303 [DEBUG] [Thread-127134] [transport.py] [_log()] starting thread (client mode): 0xed04040
2025-11-04T02:42:28.304 [DEBUG] [Thread-127134] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:42:28.312 [DEBUG] [Thread-127134] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:42:28.312 [INFO] [Thread-127134] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:42:28.317 [DEBUG] [Thread-127134] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:42:28.317 [DEBUG] [Thread-127134] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:42:28.317 [DEBUG] [Thread-127134] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:42:28.317 [DEBUG] [Thread-127134] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:42:28.317 [DEBUG] [Thread-127134] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:42:28.317 [DEBUG] [Thread-127134] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:42:28.317 [DEBUG] [Thread-127134] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:42:28.317 [DEBUG] [Thread-127134] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:42:28.318 [DEBUG] [Thread-127134] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:42:28.318 [DEBUG] [Thread-127134] [transport.py] [_log()] client lang: <none>
2025-11-04T02:42:28.318 [DEBUG] [Thread-127134] [transport.py] [_log()] server lang: <none>
2025-11-04T02:42:28.318 [DEBUG] [Thread-127134] [transport.py] [_log()] kex follows: False
2025-11-04T02:42:28.318 [DEBUG] [Thread-127134] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:42:28.318 [DEBUG] [Thread-127134] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:42:28.319 [DEBUG] [Thread-127134] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:42:28.319 [DEBUG] [Thread-127134] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:42:28.319 [DEBUG] [Thread-127134] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:42:28.319 [DEBUG] [Thread-127134] [transport.py] [_log()] Compression: none
2025-11-04T02:42:28.319 [DEBUG] [Thread-127134] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:42:28.354 [DEBUG] [Thread-127134] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:42:28.360 [DEBUG] [Thread-127134] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:42:28.361 [DEBUG] [Thread-127134] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:42:28.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:42:28.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:42:28.366 [DEBUG] [Thread-127134] [transport.py] [_log()] userauth is OK
2025-11-04T02:42:28.366 [DEBUG] [Thread-127134] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:42:28.366 [DEBUG] [Thread-127134] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:42:28.366 [DEBUG] [Thread-127134] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:42:28.366 [DEBUG] [Thread-127134] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:42:28.393 [INFO] [Thread-127134] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:42:28.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:42:29.028 [DEBUG] [Thread-127134] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:42:29.028 [DEBUG] [Thread-127134] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:42:29.038 [DEBUG] [Thread-127134] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:42:29.070 [DEBUG] [Thread-127134] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:42:29.070 [DEBUG] [Thread-127134] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:42:29.073 [DEBUG] [Thread-127134] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:42:29.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:42:29.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:42:29.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:42:29.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:42:29.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:42:29.092 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:42:29.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:42:29.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:42:29.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:42:29.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.029264 -999.00  +16.50  20.04     19   -6.80 1 1 1 1 1     0    0 24.22 47.06 ZNESW 19.9 20.0 313.4 23.6 16.7 -23.8 16.6 -22.9 16.4 -22.6 16.6 -23.5
2025-11-04T02:42:29.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:42:29.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:42:29.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.029264
2025-11-04T02:42:29.099 [DEBUG] [Thread-127134] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:42:29.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:42:29.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:42:29.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:42:29.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:42:29.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:42:29.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:42:21', tmtdew=27.1, humidity=14.62, cloud=0.0, wind=18.84, temperature=16.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:42:22', seeing=0.9, atlas_timestamp='2025-11-04T00:42:08.410', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, 0.04625000000000057, 0.08525000000000027, 0.030999999999998806, 0.0024999999999995026, 0.048250000000001236, 0.04800000000000004, 0.03125, 0.06149999999999878, 0.07649999999999935, 0.12524999999999942, 0.08099999999999952, 0.23099999999999987, -0.0417500000000004, 0.03849999999999909, -0.0045000000000001705, 0.09475000000000122, 0.09249999999999936, 0.18599999999999817, 0.13924999999999876, 0.17999999999999794, 0.023249999999999105, 0.07925000000000182, 0.04574999999999996, 0.09499999999999886, 0.1689999999999987, 0.10174999999999912, 0.2580000000000009, 0.22799999999999976, -0.6059999999999999, 0.16600000000000037, 0.12100000000000044, 0.15524999999999878], zp_timestamp='2025-11-04T00:39:00')
2025-11-04T02:42:29.188 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:42:29.201 [DEBUG] [Thread-127137] [transport.py] [_log()] starting thread (client mode): 0x819a500
2025-11-04T02:42:29.201 [DEBUG] [Thread-127137] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:42:29.221 [DEBUG] [Thread-127137] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:42:29.221 [INFO] [Thread-127137] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:42:29.230 [DEBUG] [Thread-127137] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:42:29.230 [DEBUG] [Thread-127137] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:42:29.230 [DEBUG] [Thread-127137] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:42:29.230 [DEBUG] [Thread-127137] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:42:29.231 [DEBUG] [Thread-127137] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:42:29.231 [DEBUG] [Thread-127137] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:42:29.231 [DEBUG] [Thread-127137] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:42:29.231 [DEBUG] [Thread-127137] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:42:29.231 [DEBUG] [Thread-127137] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:42:29.231 [DEBUG] [Thread-127137] [transport.py] [_log()] client lang: <none>
2025-11-04T02:42:29.231 [DEBUG] [Thread-127137] [transport.py] [_log()] server lang: <none>
2025-11-04T02:42:29.231 [DEBUG] [Thread-127137] [transport.py] [_log()] kex follows: False
2025-11-04T02:42:29.231 [DEBUG] [Thread-127137] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:42:29.231 [DEBUG] [Thread-127137] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:42:29.231 [DEBUG] [Thread-127137] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:42:29.231 [DEBUG] [Thread-127137] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:42:29.231 [DEBUG] [Thread-127137] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:42:29.231 [DEBUG] [Thread-127137] [transport.py] [_log()] Compression: none
2025-11-04T02:42:29.231 [DEBUG] [Thread-127137] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:42:29.290 [DEBUG] [Thread-127137] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:42:29.291 [DEBUG] [Thread-127137] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:42:29.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:42:29.292 [DEBUG] [Thread-127137] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:42:29.294 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:42:29.347 [DEBUG] [Thread-127137] [transport.py] [_log()] userauth is OK
2025-11-04T02:42:29.347 [DEBUG] [Thread-127137] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:42:29.348 [DEBUG] [Thread-127137] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:42:29.348 [DEBUG] [Thread-127137] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:42:29.348 [DEBUG] [Thread-127137] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:42:29.368 [INFO] [Thread-127137] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:42:29.368 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:42:29.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:42:30.238 [DEBUG] [Thread-127137] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:42:30.239 [DEBUG] [Thread-127137] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:42:30.278 [DEBUG] [Thread-127137] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:42:30.279 [DEBUG] [Thread-127137] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:42:30.289 [DEBUG] [Thread-127137] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:42:30.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:42:30.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:42:30.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:42:30.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:42:30.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:42:30.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:42:30.328 [DEBUG] [Thread-127137] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:42:40.273 [DEBUG] [Thread-127139 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:42:46.996 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:42:46.997 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:42:55.359 [DEBUG] [Thread-127140 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:43:00.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:43:00.353 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:43:00.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:43:01.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 42, 54), 27.06, 14.62, 0.0, 19.16, 16.31, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:43:01.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:42:54
2025-11-04T02:43:01.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:43:01.445 [DEBUG] [Thread-127141] [transport.py] [_log()] starting thread (client mode): 0xed10730
2025-11-04T02:43:01.446 [DEBUG] [Thread-127141] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:43:01.459 [DEBUG] [Thread-127141] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:43:01.460 [INFO] [Thread-127141] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:43:01.464 [DEBUG] [Thread-127141] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:43:01.464 [DEBUG] [Thread-127141] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:43:01.464 [DEBUG] [Thread-127141] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:43:01.464 [DEBUG] [Thread-127141] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:43:01.464 [DEBUG] [Thread-127141] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:43:01.464 [DEBUG] [Thread-127141] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:43:01.464 [DEBUG] [Thread-127141] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:43:01.464 [DEBUG] [Thread-127141] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:43:01.464 [DEBUG] [Thread-127141] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:43:01.465 [DEBUG] [Thread-127141] [transport.py] [_log()] client lang: <none>
2025-11-04T02:43:01.465 [DEBUG] [Thread-127141] [transport.py] [_log()] server lang: <none>
2025-11-04T02:43:01.465 [DEBUG] [Thread-127141] [transport.py] [_log()] kex follows: False
2025-11-04T02:43:01.465 [DEBUG] [Thread-127141] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:43:01.465 [DEBUG] [Thread-127141] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:43:01.465 [DEBUG] [Thread-127141] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:43:01.466 [DEBUG] [Thread-127141] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:43:01.466 [DEBUG] [Thread-127141] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:43:01.466 [DEBUG] [Thread-127141] [transport.py] [_log()] Compression: none
2025-11-04T02:43:01.466 [DEBUG] [Thread-127141] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:43:01.514 [DEBUG] [Thread-127141] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:43:01.518 [DEBUG] [Thread-127141] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:43:01.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:43:01.522 [DEBUG] [Thread-127141] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:43:01.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:43:01.525 [DEBUG] [Thread-127141] [transport.py] [_log()] userauth is OK
2025-11-04T02:43:01.525 [DEBUG] [Thread-127141] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:43:01.526 [DEBUG] [Thread-127141] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:43:01.526 [DEBUG] [Thread-127141] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:43:01.526 [DEBUG] [Thread-127141] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:43:01.586 [INFO] [Thread-127141] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:43:01.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:43:02.228 [DEBUG] [Thread-127141] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:43:02.228 [DEBUG] [Thread-127141] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:43:02.230 [DEBUG] [Thread-127141] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:43:02.269 [DEBUG] [Thread-127141] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:43:02.270 [DEBUG] [Thread-127141] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:43:02.274 [DEBUG] [Thread-127141] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:43:02.287 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:43:02.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:43:02.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:43:02.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:43:02.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:43:02.300 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:43:02.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:43:02.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:43:02.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:43:02.302 [DEBUG] [Thread-127141] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:43:02.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.029611 -999.00  +16.50  17.65     19   -6.70 1 1 1 1 1     0    0 24.81 47.33 ZNESW 16.6 17.6 308.6 23.4 16.7 -23.9 16.6 -23.0 16.3 -22.7 16.6 -23.5
2025-11-04T02:43:02.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:43:02.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:43:02.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.029611
2025-11-04T02:43:02.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:43:02.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:43:02.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:43:02.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:43:02.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:43:02.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:42:54', tmtdew=27.06, humidity=14.62, cloud=0.0, wind=19.16, temperature=16.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:42:55', seeing=0.96, atlas_timestamp='2025-11-04T00:42:38.390', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, 0.04625000000000057, 0.08525000000000027, 0.030999999999998806, 0.0024999999999995026, 0.048250000000001236, 0.04800000000000004, 0.03125, 0.06149999999999878, 0.07649999999999935, 0.12524999999999942, 0.08099999999999952, 0.23099999999999987, -0.0417500000000004, 0.03849999999999909, -0.0045000000000001705, 0.09475000000000122, 0.09249999999999936, 0.18599999999999817, 0.13924999999999876, 0.17999999999999794, 0.023249999999999105, 0.07925000000000182, 0.04574999999999996, 0.09499999999999886, 0.1689999999999987, 0.10174999999999912, 0.2580000000000009, 0.22799999999999976, -0.6059999999999999, 0.16600000000000037, 0.12100000000000044, 0.15524999999999878], zp_timestamp='2025-11-04T00:39:00')
2025-11-04T02:43:02.391 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:43:02.408 [DEBUG] [Thread-127144] [transport.py] [_log()] starting thread (client mode): 0xed07460
2025-11-04T02:43:02.408 [DEBUG] [Thread-127144] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:43:02.428 [DEBUG] [Thread-127144] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:43:02.429 [INFO] [Thread-127144] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:43:02.442 [DEBUG] [Thread-127144] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:43:02.442 [DEBUG] [Thread-127144] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:43:02.443 [DEBUG] [Thread-127144] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:43:02.443 [DEBUG] [Thread-127144] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:43:02.443 [DEBUG] [Thread-127144] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:43:02.443 [DEBUG] [Thread-127144] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:43:02.444 [DEBUG] [Thread-127144] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:43:02.444 [DEBUG] [Thread-127144] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:43:02.444 [DEBUG] [Thread-127144] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:43:02.444 [DEBUG] [Thread-127144] [transport.py] [_log()] client lang: <none>
2025-11-04T02:43:02.444 [DEBUG] [Thread-127144] [transport.py] [_log()] server lang: <none>
2025-11-04T02:43:02.444 [DEBUG] [Thread-127144] [transport.py] [_log()] kex follows: False
2025-11-04T02:43:02.444 [DEBUG] [Thread-127144] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:43:02.444 [DEBUG] [Thread-127144] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:43:02.444 [DEBUG] [Thread-127144] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:43:02.444 [DEBUG] [Thread-127144] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:43:02.444 [DEBUG] [Thread-127144] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:43:02.444 [DEBUG] [Thread-127144] [transport.py] [_log()] Compression: none
2025-11-04T02:43:02.444 [DEBUG] [Thread-127144] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:43:02.504 [DEBUG] [Thread-127144] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:43:02.505 [DEBUG] [Thread-127144] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:43:02.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:43:02.506 [DEBUG] [Thread-127144] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:43:02.507 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:43:02.570 [DEBUG] [Thread-127144] [transport.py] [_log()] userauth is OK
2025-11-04T02:43:02.570 [DEBUG] [Thread-127144] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:43:02.571 [DEBUG] [Thread-127144] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:43:02.571 [DEBUG] [Thread-127144] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:43:02.571 [DEBUG] [Thread-127144] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:43:02.590 [INFO] [Thread-127144] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:43:02.591 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:43:02.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:43:03.435 [DEBUG] [Thread-127144] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:43:03.436 [DEBUG] [Thread-127144] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:43:03.484 [DEBUG] [Thread-127144] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:43:03.484 [DEBUG] [Thread-127144] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:43:03.494 [DEBUG] [Thread-127144] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:43:03.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:43:03.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:43:03.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:43:03.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:43:03.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:43:03.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:43:03.532 [DEBUG] [Thread-127144] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:43:06.580 [DEBUG] [Thread-127146 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:43:10.395 [DEBUG] [Thread-127147 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:43:25.453 [DEBUG] [Thread-127148 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:43:33.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:43:33.568 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:43:33.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:43:34.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 43, 27), 27.04, 14.64, 0.0, 18.74, 16.28, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:43:34.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:43:27
2025-11-04T02:43:34.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:43:34.656 [DEBUG] [Thread-127149] [transport.py] [_log()] starting thread (client mode): 0xed345b0
2025-11-04T02:43:34.657 [DEBUG] [Thread-127149] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:43:34.667 [DEBUG] [Thread-127149] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:43:34.667 [INFO] [Thread-127149] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:43:34.672 [DEBUG] [Thread-127149] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:43:34.672 [DEBUG] [Thread-127149] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:43:34.672 [DEBUG] [Thread-127149] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:43:34.672 [DEBUG] [Thread-127149] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:43:34.672 [DEBUG] [Thread-127149] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:43:34.672 [DEBUG] [Thread-127149] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:43:34.672 [DEBUG] [Thread-127149] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:43:34.673 [DEBUG] [Thread-127149] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:43:34.673 [DEBUG] [Thread-127149] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:43:34.673 [DEBUG] [Thread-127149] [transport.py] [_log()] client lang: <none>
2025-11-04T02:43:34.673 [DEBUG] [Thread-127149] [transport.py] [_log()] server lang: <none>
2025-11-04T02:43:34.673 [DEBUG] [Thread-127149] [transport.py] [_log()] kex follows: False
2025-11-04T02:43:34.673 [DEBUG] [Thread-127149] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:43:34.673 [DEBUG] [Thread-127149] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:43:34.674 [DEBUG] [Thread-127149] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:43:34.674 [DEBUG] [Thread-127149] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:43:34.674 [DEBUG] [Thread-127149] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:43:34.674 [DEBUG] [Thread-127149] [transport.py] [_log()] Compression: none
2025-11-04T02:43:34.674 [DEBUG] [Thread-127149] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:43:34.698 [DEBUG] [Thread-127149] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:43:34.703 [DEBUG] [Thread-127149] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:43:34.706 [DEBUG] [Thread-127149] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:43:34.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:43:34.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:43:34.711 [DEBUG] [Thread-127149] [transport.py] [_log()] userauth is OK
2025-11-04T02:43:34.711 [DEBUG] [Thread-127149] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:43:34.711 [DEBUG] [Thread-127149] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:43:34.712 [DEBUG] [Thread-127149] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:43:34.712 [DEBUG] [Thread-127149] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:43:34.741 [INFO] [Thread-127149] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:43:34.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:43:35.321 [DEBUG] [Thread-127149] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:43:35.321 [DEBUG] [Thread-127149] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:43:35.331 [DEBUG] [Thread-127149] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:43:35.363 [DEBUG] [Thread-127149] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:43:35.363 [DEBUG] [Thread-127149] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:43:35.365 [DEBUG] [Thread-127149] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:43:35.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:43:35.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:43:35.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:43:35.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:43:35.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:43:35.378 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:43:35.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:43:35.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:43:35.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:43:35.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.029958 -999.00  +16.40  16.70     19   -6.70 1 1 1 1 1     0    0 24.43 44.54 ZNESW 17.3 16.7 313.4 20.4 16.7 -23.9 16.6 -23.0 16.3 -22.7 16.6 -23.5
2025-11-04T02:43:35.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:43:35.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:43:35.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.029958
2025-11-04T02:43:35.385 [DEBUG] [Thread-127149] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:43:35.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:43:35.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:43:35.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:43:35.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:43:35.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:43:35.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:43:27', tmtdew=27.04, humidity=14.64, cloud=0.0, wind=18.74, temperature=16.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:43:27', seeing=1.0, atlas_timestamp='2025-11-04T00:43:08.371', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, 0.04625000000000057, 0.08525000000000027, 0.030999999999998806, 0.0024999999999995026, 0.048250000000001236, 0.04800000000000004, 0.03125, 0.06149999999999878, 0.07649999999999935, 0.12524999999999942, 0.08099999999999952, 0.23099999999999987, -0.0417500000000004, 0.03849999999999909, -0.0045000000000001705, 0.09475000000000122, 0.09249999999999936, 0.18599999999999817, 0.13924999999999876, 0.17999999999999794, 0.023249999999999105, 0.07925000000000182, 0.04574999999999996, 0.09499999999999886, 0.1689999999999987, 0.10174999999999912, 0.2580000000000009, 0.22799999999999976, -0.6059999999999999, 0.16600000000000037, 0.12100000000000044, 0.15524999999999878], zp_timestamp='2025-11-04T00:39:00')
2025-11-04T02:43:35.470 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:43:35.483 [DEBUG] [Thread-127152] [transport.py] [_log()] starting thread (client mode): 0x8199990
2025-11-04T02:43:35.483 [DEBUG] [Thread-127152] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:43:35.501 [DEBUG] [Thread-127152] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:43:35.501 [INFO] [Thread-127152] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:43:35.512 [DEBUG] [Thread-127152] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:43:35.512 [DEBUG] [Thread-127152] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:43:35.512 [DEBUG] [Thread-127152] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:43:35.512 [DEBUG] [Thread-127152] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:43:35.512 [DEBUG] [Thread-127152] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:43:35.512 [DEBUG] [Thread-127152] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:43:35.512 [DEBUG] [Thread-127152] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:43:35.513 [DEBUG] [Thread-127152] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:43:35.513 [DEBUG] [Thread-127152] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:43:35.513 [DEBUG] [Thread-127152] [transport.py] [_log()] client lang: <none>
2025-11-04T02:43:35.513 [DEBUG] [Thread-127152] [transport.py] [_log()] server lang: <none>
2025-11-04T02:43:35.513 [DEBUG] [Thread-127152] [transport.py] [_log()] kex follows: False
2025-11-04T02:43:35.513 [DEBUG] [Thread-127152] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:43:35.513 [DEBUG] [Thread-127152] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:43:35.513 [DEBUG] [Thread-127152] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:43:35.513 [DEBUG] [Thread-127152] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:43:35.513 [DEBUG] [Thread-127152] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:43:35.513 [DEBUG] [Thread-127152] [transport.py] [_log()] Compression: none
2025-11-04T02:43:35.513 [DEBUG] [Thread-127152] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:43:35.569 [DEBUG] [Thread-127152] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:43:35.569 [DEBUG] [Thread-127152] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:43:35.569 [DEBUG] [Thread-127152] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:43:35.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:43:35.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:43:35.626 [DEBUG] [Thread-127152] [transport.py] [_log()] userauth is OK
2025-11-04T02:43:35.626 [DEBUG] [Thread-127152] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:43:35.626 [DEBUG] [Thread-127152] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:43:35.626 [DEBUG] [Thread-127152] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:43:35.626 [DEBUG] [Thread-127152] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:43:35.641 [INFO] [Thread-127152] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:43:35.641 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:43:35.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:43:36.561 [DEBUG] [Thread-127152] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:43:36.561 [DEBUG] [Thread-127152] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:43:36.602 [DEBUG] [Thread-127152] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:43:36.602 [DEBUG] [Thread-127152] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:43:36.612 [DEBUG] [Thread-127152] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:43:36.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:43:36.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:43:36.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:43:36.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:43:36.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:43:36.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:43:36.657 [DEBUG] [Thread-127152] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:43:40.490 [DEBUG] [Thread-127154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:43:47.202 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:43:47.204 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:43:55.548 [DEBUG] [Thread-127155 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:44:06.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:44:06.678 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:44:06.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:44:06.861 [DEBUG] [Thread-127156 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:44:07.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 43, 59), 26.99, 14.64, 0.0, 19.3, 16.23, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:44:07.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:43:59
2025-11-04T02:44:07.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:44:07.712 [DEBUG] [Thread-127157] [transport.py] [_log()] starting thread (client mode): 0xed37370
2025-11-04T02:44:07.713 [DEBUG] [Thread-127157] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:44:07.730 [DEBUG] [Thread-127157] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:44:07.730 [INFO] [Thread-127157] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:44:07.734 [DEBUG] [Thread-127157] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:44:07.734 [DEBUG] [Thread-127157] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:44:07.734 [DEBUG] [Thread-127157] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:44:07.734 [DEBUG] [Thread-127157] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:44:07.734 [DEBUG] [Thread-127157] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:44:07.734 [DEBUG] [Thread-127157] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:44:07.734 [DEBUG] [Thread-127157] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:44:07.734 [DEBUG] [Thread-127157] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:44:07.734 [DEBUG] [Thread-127157] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:44:07.734 [DEBUG] [Thread-127157] [transport.py] [_log()] client lang: <none>
2025-11-04T02:44:07.734 [DEBUG] [Thread-127157] [transport.py] [_log()] server lang: <none>
2025-11-04T02:44:07.734 [DEBUG] [Thread-127157] [transport.py] [_log()] kex follows: False
2025-11-04T02:44:07.734 [DEBUG] [Thread-127157] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:44:07.735 [DEBUG] [Thread-127157] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:44:07.735 [DEBUG] [Thread-127157] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:44:07.735 [DEBUG] [Thread-127157] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:44:07.735 [DEBUG] [Thread-127157] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:44:07.735 [DEBUG] [Thread-127157] [transport.py] [_log()] Compression: none
2025-11-04T02:44:07.735 [DEBUG] [Thread-127157] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:44:07.753 [DEBUG] [Thread-127157] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:44:07.754 [DEBUG] [Thread-127157] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:44:07.755 [DEBUG] [Thread-127157] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:44:07.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:44:07.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:44:07.797 [DEBUG] [Thread-127157] [transport.py] [_log()] userauth is OK
2025-11-04T02:44:07.797 [DEBUG] [Thread-127157] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:44:07.797 [DEBUG] [Thread-127157] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:44:07.797 [DEBUG] [Thread-127157] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:44:07.797 [DEBUG] [Thread-127157] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:44:07.813 [INFO] [Thread-127157] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:44:07.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:44:08.425 [DEBUG] [Thread-127157] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:44:08.425 [DEBUG] [Thread-127157] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:44:08.426 [DEBUG] [Thread-127157] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:44:08.467 [DEBUG] [Thread-127157] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:44:08.467 [DEBUG] [Thread-127157] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:44:08.470 [DEBUG] [Thread-127157] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:44:08.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:44:08.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:44:08.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:44:08.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:44:08.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:44:08.488 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:44:08.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:44:08.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:44:08.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:44:08.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.030305 -999.00  +16.30  19.01     19   -6.70 1 1 1 1 1     0    0 24.40 41.97 ZNESW 16.6 19.0 311.6 20.1 16.6 -24.0 16.5 -22.9 16.3 -22.7 16.6 -23.6
2025-11-04T02:44:08.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:44:08.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:44:08.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.030305
2025-11-04T02:44:08.488 [DEBUG] [Thread-127157] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:44:08.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:44:08.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:44:08.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:44:08.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:44:08.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:44:08.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:43:59', tmtdew=26.99, humidity=14.64, cloud=0.0, wind=19.3, temperature=16.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:44:00', seeing=1.0, atlas_timestamp='2025-11-04T00:43:38.352', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, 0.04625000000000057, 0.08525000000000027, 0.030999999999998806, 0.0024999999999995026, 0.048250000000001236, 0.04800000000000004, 0.03125, 0.06149999999999878, 0.07649999999999935, 0.12524999999999942, 0.08099999999999952, 0.23099999999999987, -0.0417500000000004, 0.03849999999999909, -0.0045000000000001705, 0.09475000000000122, 0.09249999999999936, 0.18599999999999817, 0.13924999999999876, 0.17999999999999794, 0.023249999999999105, 0.07925000000000182, 0.04574999999999996, 0.09499999999999886, 0.1689999999999987, 0.10174999999999912, 0.2580000000000009, 0.22799999999999976, -0.6059999999999999, 0.16600000000000037, 0.12100000000000044, 0.15524999999999878], zp_timestamp='2025-11-04T00:42:00')
2025-11-04T02:44:08.579 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:44:08.591 [DEBUG] [Thread-127160] [transport.py] [_log()] starting thread (client mode): 0x8198220
2025-11-04T02:44:08.591 [DEBUG] [Thread-127160] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:44:08.606 [DEBUG] [Thread-127160] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:44:08.606 [INFO] [Thread-127160] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:44:08.615 [DEBUG] [Thread-127160] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:44:08.615 [DEBUG] [Thread-127160] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:44:08.615 [DEBUG] [Thread-127160] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:44:08.615 [DEBUG] [Thread-127160] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:44:08.615 [DEBUG] [Thread-127160] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:44:08.615 [DEBUG] [Thread-127160] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:44:08.615 [DEBUG] [Thread-127160] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:44:08.615 [DEBUG] [Thread-127160] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:44:08.615 [DEBUG] [Thread-127160] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:44:08.615 [DEBUG] [Thread-127160] [transport.py] [_log()] client lang: <none>
2025-11-04T02:44:08.615 [DEBUG] [Thread-127160] [transport.py] [_log()] server lang: <none>
2025-11-04T02:44:08.615 [DEBUG] [Thread-127160] [transport.py] [_log()] kex follows: False
2025-11-04T02:44:08.615 [DEBUG] [Thread-127160] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:44:08.615 [DEBUG] [Thread-127160] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:44:08.615 [DEBUG] [Thread-127160] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:44:08.615 [DEBUG] [Thread-127160] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:44:08.615 [DEBUG] [Thread-127160] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:44:08.615 [DEBUG] [Thread-127160] [transport.py] [_log()] Compression: none
2025-11-04T02:44:08.615 [DEBUG] [Thread-127160] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:44:08.674 [DEBUG] [Thread-127160] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:44:08.674 [DEBUG] [Thread-127160] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:44:08.674 [DEBUG] [Thread-127160] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:44:08.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:44:08.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:44:08.730 [DEBUG] [Thread-127160] [transport.py] [_log()] userauth is OK
2025-11-04T02:44:08.730 [DEBUG] [Thread-127160] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:44:08.730 [DEBUG] [Thread-127160] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:44:08.730 [DEBUG] [Thread-127160] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:44:08.730 [DEBUG] [Thread-127160] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:44:08.745 [INFO] [Thread-127160] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:44:08.746 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:44:08.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:44:09.568 [DEBUG] [Thread-127160] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:44:09.568 [DEBUG] [Thread-127160] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:44:09.617 [DEBUG] [Thread-127160] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:44:09.618 [DEBUG] [Thread-127160] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:44:09.633 [DEBUG] [Thread-127160] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:44:09.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:44:09.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:44:09.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:44:09.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:44:09.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:44:09.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:44:09.671 [DEBUG] [Thread-127160] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:44:10.596 [DEBUG] [Thread-127162 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:44:25.711 [DEBUG] [Thread-127163 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:44:39.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:44:39.676 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:44:39.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:44:40.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 44, 32), 26.94, 14.69, 0.0, 18.17, 16.16, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:44:40.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:44:32
2025-11-04T02:44:40.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:44:40.744 [DEBUG] [Thread-127164 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:44:40.824 [DEBUG] [Thread-127165] [transport.py] [_log()] starting thread (client mode): 0x81983a0
2025-11-04T02:44:40.825 [DEBUG] [Thread-127165] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:44:40.840 [DEBUG] [Thread-127165] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:44:40.841 [INFO] [Thread-127165] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:44:40.845 [DEBUG] [Thread-127165] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:44:40.845 [DEBUG] [Thread-127165] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:44:40.845 [DEBUG] [Thread-127165] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:44:40.845 [DEBUG] [Thread-127165] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:44:40.845 [DEBUG] [Thread-127165] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:44:40.845 [DEBUG] [Thread-127165] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:44:40.845 [DEBUG] [Thread-127165] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:44:40.845 [DEBUG] [Thread-127165] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:44:40.845 [DEBUG] [Thread-127165] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:44:40.845 [DEBUG] [Thread-127165] [transport.py] [_log()] client lang: <none>
2025-11-04T02:44:40.845 [DEBUG] [Thread-127165] [transport.py] [_log()] server lang: <none>
2025-11-04T02:44:40.845 [DEBUG] [Thread-127165] [transport.py] [_log()] kex follows: False
2025-11-04T02:44:40.845 [DEBUG] [Thread-127165] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:44:40.845 [DEBUG] [Thread-127165] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:44:40.845 [DEBUG] [Thread-127165] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:44:40.846 [DEBUG] [Thread-127165] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:44:40.846 [DEBUG] [Thread-127165] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:44:40.846 [DEBUG] [Thread-127165] [transport.py] [_log()] Compression: none
2025-11-04T02:44:40.846 [DEBUG] [Thread-127165] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:44:40.880 [DEBUG] [Thread-127165] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:44:40.883 [DEBUG] [Thread-127165] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:44:40.884 [DEBUG] [Thread-127165] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:44:40.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:44:40.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:44:40.888 [DEBUG] [Thread-127165] [transport.py] [_log()] userauth is OK
2025-11-04T02:44:40.888 [DEBUG] [Thread-127165] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:44:40.888 [DEBUG] [Thread-127165] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:44:40.888 [DEBUG] [Thread-127165] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:44:40.888 [DEBUG] [Thread-127165] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:44:40.913 [INFO] [Thread-127165] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:44:40.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:44:41.502 [DEBUG] [Thread-127165] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:44:41.503 [DEBUG] [Thread-127165] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:44:41.503 [DEBUG] [Thread-127165] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:44:41.543 [DEBUG] [Thread-127165] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:44:41.544 [DEBUG] [Thread-127165] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:44:41.549 [DEBUG] [Thread-127165] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:44:41.562 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:44:41.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:44:41.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:44:41.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:44:41.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:44:41.569 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:44:41.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:44:41.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:44:41.570 [DEBUG] [Thread-127165] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:44:41.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:44:41.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.030653 -999.00  +16.20  16.36     20   -6.70 1 1 1 1 1     0    0 24.40 39.82 ZNESW 16.1 16.4 310.6 19.7 16.6 -23.9 16.5 -22.9 16.3 -22.7 16.5 -23.4
2025-11-04T02:44:41.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:44:41.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:44:41.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.030653
2025-11-04T02:44:41.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:44:41.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:44:41.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:44:41.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:44:41.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:44:41.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:44:32', tmtdew=26.94, humidity=14.69, cloud=0.0, wind=18.17, temperature=16.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:44:33', seeing=1.05, atlas_timestamp='2025-11-04T00:44:08.419', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, 0.04625000000000057, 0.08525000000000027, 0.030999999999998806, 0.0024999999999995026, 0.048250000000001236, 0.04800000000000004, 0.03125, 0.06149999999999878, 0.07649999999999935, 0.12524999999999942, 0.08099999999999952, 0.23099999999999987, -0.0417500000000004, 0.03849999999999909, -0.0045000000000001705, 0.09475000000000122, 0.09249999999999936, 0.18599999999999817, 0.13924999999999876, 0.17999999999999794, 0.023249999999999105, 0.07925000000000182, 0.04574999999999996, 0.09499999999999886, 0.1689999999999987, 0.10174999999999912, 0.2580000000000009, 0.22799999999999976, -0.6059999999999999, 0.16600000000000037, 0.12100000000000044, 0.15524999999999878], zp_timestamp='2025-11-04T00:42:00')
2025-11-04T02:44:41.662 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:44:41.673 [DEBUG] [Thread-127168] [transport.py] [_log()] starting thread (client mode): 0xed05cc0
2025-11-04T02:44:41.674 [DEBUG] [Thread-127168] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:44:41.692 [DEBUG] [Thread-127168] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:44:41.692 [INFO] [Thread-127168] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:44:41.700 [DEBUG] [Thread-127168] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:44:41.700 [DEBUG] [Thread-127168] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:44:41.700 [DEBUG] [Thread-127168] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:44:41.700 [DEBUG] [Thread-127168] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:44:41.700 [DEBUG] [Thread-127168] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:44:41.700 [DEBUG] [Thread-127168] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:44:41.700 [DEBUG] [Thread-127168] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:44:41.700 [DEBUG] [Thread-127168] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:44:41.700 [DEBUG] [Thread-127168] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:44:41.700 [DEBUG] [Thread-127168] [transport.py] [_log()] client lang: <none>
2025-11-04T02:44:41.700 [DEBUG] [Thread-127168] [transport.py] [_log()] server lang: <none>
2025-11-04T02:44:41.700 [DEBUG] [Thread-127168] [transport.py] [_log()] kex follows: False
2025-11-04T02:44:41.700 [DEBUG] [Thread-127168] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:44:41.700 [DEBUG] [Thread-127168] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:44:41.700 [DEBUG] [Thread-127168] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:44:41.700 [DEBUG] [Thread-127168] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:44:41.700 [DEBUG] [Thread-127168] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:44:41.700 [DEBUG] [Thread-127168] [transport.py] [_log()] Compression: none
2025-11-04T02:44:41.702 [DEBUG] [Thread-127168] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:44:41.757 [DEBUG] [Thread-127168] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:44:41.757 [DEBUG] [Thread-127168] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:44:41.757 [DEBUG] [Thread-127168] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:44:41.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:44:41.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:44:41.814 [DEBUG] [Thread-127168] [transport.py] [_log()] userauth is OK
2025-11-04T02:44:41.814 [DEBUG] [Thread-127168] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:44:41.814 [DEBUG] [Thread-127168] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:44:41.814 [DEBUG] [Thread-127168] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:44:41.814 [DEBUG] [Thread-127168] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:44:41.829 [INFO] [Thread-127168] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:44:41.830 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:44:41.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:44:42.720 [DEBUG] [Thread-127168] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:44:42.720 [DEBUG] [Thread-127168] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:44:42.769 [DEBUG] [Thread-127168] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:44:42.769 [DEBUG] [Thread-127168] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:44:42.777 [DEBUG] [Thread-127168] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:44:42.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:44:42.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:44:42.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:44:42.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:44:42.803 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:44:42.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:44:42.811 [DEBUG] [Thread-127168] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:44:47.407 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:44:47.407 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:44:55.792 [DEBUG] [Thread-127170 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:45:07.131 [DEBUG] [Thread-127171 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:45:10.947 [DEBUG] [Thread-127172 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:45:12.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:45:12.837 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:45:12.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:45:13.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 45, 5), 26.89, 14.76, 0.0, 18.0, 16.19, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:45:13.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:45:05
2025-11-04T02:45:13.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:45:13.947 [DEBUG] [Thread-127173] [transport.py] [_log()] starting thread (client mode): 0xed120b0
2025-11-04T02:45:13.948 [DEBUG] [Thread-127173] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:45:13.962 [DEBUG] [Thread-127173] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:45:13.962 [INFO] [Thread-127173] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:45:13.966 [DEBUG] [Thread-127173] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:45:13.967 [DEBUG] [Thread-127173] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:45:13.967 [DEBUG] [Thread-127173] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:45:13.967 [DEBUG] [Thread-127173] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:45:13.967 [DEBUG] [Thread-127173] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:45:13.967 [DEBUG] [Thread-127173] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:45:13.967 [DEBUG] [Thread-127173] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:45:13.967 [DEBUG] [Thread-127173] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:45:13.967 [DEBUG] [Thread-127173] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:45:13.967 [DEBUG] [Thread-127173] [transport.py] [_log()] client lang: <none>
2025-11-04T02:45:13.967 [DEBUG] [Thread-127173] [transport.py] [_log()] server lang: <none>
2025-11-04T02:45:13.967 [DEBUG] [Thread-127173] [transport.py] [_log()] kex follows: False
2025-11-04T02:45:13.968 [DEBUG] [Thread-127173] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:45:13.968 [DEBUG] [Thread-127173] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:45:13.968 [DEBUG] [Thread-127173] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:45:13.968 [DEBUG] [Thread-127173] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:45:13.968 [DEBUG] [Thread-127173] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:45:13.969 [DEBUG] [Thread-127173] [transport.py] [_log()] Compression: none
2025-11-04T02:45:13.969 [DEBUG] [Thread-127173] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:45:14.006 [DEBUG] [Thread-127173] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:45:14.013 [DEBUG] [Thread-127173] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:45:14.015 [DEBUG] [Thread-127173] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:45:14.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:45:14.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:45:14.019 [DEBUG] [Thread-127173] [transport.py] [_log()] userauth is OK
2025-11-04T02:45:14.019 [DEBUG] [Thread-127173] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:45:14.019 [DEBUG] [Thread-127173] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:45:14.019 [DEBUG] [Thread-127173] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:45:14.019 [DEBUG] [Thread-127173] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:45:14.047 [INFO] [Thread-127173] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:45:14.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:45:14.888 [DEBUG] [Thread-127173] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:45:14.888 [DEBUG] [Thread-127173] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:45:14.898 [DEBUG] [Thread-127173] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:45:14.930 [DEBUG] [Thread-127173] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:45:14.930 [DEBUG] [Thread-127173] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:45:14.932 [DEBUG] [Thread-127173] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:45:14.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:45:14.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:45:14.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:45:14.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:45:14.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:45:14.951 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:45:14.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:45:14.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:45:14.953 [DEBUG] [Thread-127173] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:45:14.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:45:14.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.030653 -999.00  +16.20  16.36     20   -6.70 1 1 1 1 1     0    0 24.40 39.82 ZNESW 16.1 16.4 310.6 19.7 16.6 -23.9 16.5 -22.9 16.3 -22.7 16.5 -23.4
2025-11-04T02:45:14.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:45:14.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:45:14.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.030653
2025-11-04T02:45:14.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:45:14.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:45:14.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:45:14.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:45:14.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:45:14.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:45:05', tmtdew=26.89, humidity=14.76, cloud=0.0, wind=18.0, temperature=16.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:45:06', seeing=1.05, atlas_timestamp='2025-11-04T00:44:08.419', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, 0.04625000000000057, 0.08525000000000027, 0.030999999999998806, 0.0024999999999995026, 0.048250000000001236, 0.04800000000000004, 0.03125, 0.06149999999999878, 0.07649999999999935, 0.12524999999999942, 0.08099999999999952, 0.23099999999999987, -0.0417500000000004, 0.03849999999999909, -0.0045000000000001705, 0.09475000000000122, 0.09249999999999936, 0.18599999999999817, 0.13924999999999876, 0.17999999999999794, 0.023249999999999105, 0.07925000000000182, 0.04574999999999996, 0.09499999999999886, 0.1689999999999987, 0.10174999999999912, 0.2580000000000009, 0.22799999999999976, -0.6059999999999999, 0.16600000000000037, 0.12100000000000044, 0.15524999999999878], zp_timestamp='2025-11-04T00:42:00')
2025-11-04T02:45:15.045 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:45:15.056 [DEBUG] [Thread-127176] [transport.py] [_log()] starting thread (client mode): 0x8198760
2025-11-04T02:45:15.056 [DEBUG] [Thread-127176] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:45:15.075 [DEBUG] [Thread-127176] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:45:15.075 [INFO] [Thread-127176] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:45:15.083 [DEBUG] [Thread-127176] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:45:15.083 [DEBUG] [Thread-127176] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:45:15.083 [DEBUG] [Thread-127176] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:45:15.083 [DEBUG] [Thread-127176] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:45:15.083 [DEBUG] [Thread-127176] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:45:15.083 [DEBUG] [Thread-127176] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:45:15.083 [DEBUG] [Thread-127176] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:45:15.083 [DEBUG] [Thread-127176] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:45:15.083 [DEBUG] [Thread-127176] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:45:15.083 [DEBUG] [Thread-127176] [transport.py] [_log()] client lang: <none>
2025-11-04T02:45:15.083 [DEBUG] [Thread-127176] [transport.py] [_log()] server lang: <none>
2025-11-04T02:45:15.083 [DEBUG] [Thread-127176] [transport.py] [_log()] kex follows: False
2025-11-04T02:45:15.083 [DEBUG] [Thread-127176] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:45:15.083 [DEBUG] [Thread-127176] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:45:15.083 [DEBUG] [Thread-127176] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:45:15.083 [DEBUG] [Thread-127176] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:45:15.083 [DEBUG] [Thread-127176] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:45:15.083 [DEBUG] [Thread-127176] [transport.py] [_log()] Compression: none
2025-11-04T02:45:15.083 [DEBUG] [Thread-127176] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:45:15.148 [DEBUG] [Thread-127176] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:45:15.148 [DEBUG] [Thread-127176] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:45:15.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:45:15.148 [DEBUG] [Thread-127176] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:45:15.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:45:15.206 [DEBUG] [Thread-127176] [transport.py] [_log()] userauth is OK
2025-11-04T02:45:15.206 [DEBUG] [Thread-127176] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:45:15.206 [DEBUG] [Thread-127176] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:45:15.206 [DEBUG] [Thread-127176] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:45:15.206 [DEBUG] [Thread-127176] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:45:15.221 [INFO] [Thread-127176] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:45:15.221 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:45:15.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:45:16.068 [DEBUG] [Thread-127176] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:45:16.068 [DEBUG] [Thread-127176] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:45:16.119 [DEBUG] [Thread-127176] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:45:16.119 [DEBUG] [Thread-127176] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:45:16.130 [DEBUG] [Thread-127176] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:45:16.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:45:16.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:45:16.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:45:16.159 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:45:16.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:45:16.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:45:16.167 [DEBUG] [Thread-127176] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:45:25.977 [DEBUG] [Thread-127178 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:45:41.054 [DEBUG] [Thread-127179 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:45:46.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:45:46.192 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:45:46.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:45:46.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 45, 38), 27.08, 14.76, 0.0, 19.74, 16.21, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:45:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:45:38
2025-11-04T02:45:47.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:45:47.324 [DEBUG] [Thread-127180] [transport.py] [_log()] starting thread (client mode): 0xed13d00
2025-11-04T02:45:47.325 [DEBUG] [Thread-127180] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:45:47.336 [DEBUG] [Thread-127180] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:45:47.336 [INFO] [Thread-127180] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:45:47.341 [DEBUG] [Thread-127180] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:45:47.342 [DEBUG] [Thread-127180] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:45:47.342 [DEBUG] [Thread-127180] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:45:47.342 [DEBUG] [Thread-127180] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:45:47.342 [DEBUG] [Thread-127180] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:45:47.342 [DEBUG] [Thread-127180] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:45:47.342 [DEBUG] [Thread-127180] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:45:47.342 [DEBUG] [Thread-127180] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:45:47.342 [DEBUG] [Thread-127180] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:45:47.342 [DEBUG] [Thread-127180] [transport.py] [_log()] client lang: <none>
2025-11-04T02:45:47.343 [DEBUG] [Thread-127180] [transport.py] [_log()] server lang: <none>
2025-11-04T02:45:47.343 [DEBUG] [Thread-127180] [transport.py] [_log()] kex follows: False
2025-11-04T02:45:47.343 [DEBUG] [Thread-127180] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:45:47.344 [DEBUG] [Thread-127180] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:45:47.344 [DEBUG] [Thread-127180] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:45:47.344 [DEBUG] [Thread-127180] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:45:47.345 [DEBUG] [Thread-127180] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:45:47.345 [DEBUG] [Thread-127180] [transport.py] [_log()] Compression: none
2025-11-04T02:45:47.345 [DEBUG] [Thread-127180] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:45:47.387 [DEBUG] [Thread-127180] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:45:47.390 [DEBUG] [Thread-127180] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:45:47.392 [DEBUG] [Thread-127180] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:45:47.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:45:47.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:45:47.398 [DEBUG] [Thread-127180] [transport.py] [_log()] userauth is OK
2025-11-04T02:45:47.398 [DEBUG] [Thread-127180] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:45:47.398 [DEBUG] [Thread-127180] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:45:47.398 [DEBUG] [Thread-127180] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:45:47.398 [DEBUG] [Thread-127180] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:45:47.436 [INFO] [Thread-127180] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:45:47.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:45:47.610 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:45:47.612 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:45:48.086 [DEBUG] [Thread-127180] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:45:48.086 [DEBUG] [Thread-127180] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:45:48.095 [DEBUG] [Thread-127180] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:45:48.128 [DEBUG] [Thread-127180] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:45:48.128 [DEBUG] [Thread-127180] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:45:48.130 [DEBUG] [Thread-127180] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:45:48.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:45:48.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:45:48.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:45:48.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:45:48.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:45:48.152 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:45:48.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:45:48.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:45:48.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:45:48.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.031347 -999.00  +16.30  17.70     19   -6.80 1 1 1 1 1     0    0 24.10 33.48 ZNESW 16.4 17.7 313.6 20.8 16.6 -23.8 16.5 -22.9 16.3 -22.4 16.6 -23.4
2025-11-04T02:45:48.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:45:48.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:45:48.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.031347
2025-11-04T02:45:48.165 [DEBUG] [Thread-127180] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:45:48.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:45:48.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:45:48.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:45:48.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:45:48.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:45:48.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:45:38', tmtdew=27.08, humidity=14.76, cloud=0.0, wind=19.74, temperature=16.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:45:39', seeing=1.1, atlas_timestamp='2025-11-04T00:45:08.381', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, 0.04625000000000057, 0.08525000000000027, 0.030999999999998806, 0.0024999999999995026, 0.048250000000001236, 0.04800000000000004, 0.03125, 0.06149999999999878, 0.07649999999999935, 0.12524999999999942, 0.08099999999999952, 0.23099999999999987, -0.0417500000000004, 0.03849999999999909, -0.0045000000000001705, 0.09475000000000122, 0.09249999999999936, 0.18599999999999817, 0.13924999999999876, 0.17999999999999794, 0.023249999999999105, 0.07925000000000182, 0.04574999999999996, 0.09499999999999886, 0.1689999999999987, 0.10174999999999912, 0.2580000000000009, 0.22799999999999976, -0.6059999999999999, 0.16600000000000037, 0.12100000000000044, 0.15524999999999878], zp_timestamp='2025-11-04T00:42:00')
2025-11-04T02:45:48.247 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:45:48.260 [DEBUG] [Thread-127183] [transport.py] [_log()] starting thread (client mode): 0x819a0e0
2025-11-04T02:45:48.260 [DEBUG] [Thread-127183] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:45:48.275 [DEBUG] [Thread-127183] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:45:48.275 [INFO] [Thread-127183] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:45:48.282 [DEBUG] [Thread-127183] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:45:48.282 [DEBUG] [Thread-127183] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:45:48.282 [DEBUG] [Thread-127183] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:45:48.282 [DEBUG] [Thread-127183] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:45:48.282 [DEBUG] [Thread-127183] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:45:48.282 [DEBUG] [Thread-127183] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:45:48.282 [DEBUG] [Thread-127183] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:45:48.282 [DEBUG] [Thread-127183] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:45:48.282 [DEBUG] [Thread-127183] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:45:48.282 [DEBUG] [Thread-127183] [transport.py] [_log()] client lang: <none>
2025-11-04T02:45:48.282 [DEBUG] [Thread-127183] [transport.py] [_log()] server lang: <none>
2025-11-04T02:45:48.282 [DEBUG] [Thread-127183] [transport.py] [_log()] kex follows: False
2025-11-04T02:45:48.282 [DEBUG] [Thread-127183] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:45:48.282 [DEBUG] [Thread-127183] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:45:48.282 [DEBUG] [Thread-127183] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:45:48.282 [DEBUG] [Thread-127183] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:45:48.282 [DEBUG] [Thread-127183] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:45:48.282 [DEBUG] [Thread-127183] [transport.py] [_log()] Compression: none
2025-11-04T02:45:48.282 [DEBUG] [Thread-127183] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:45:48.345 [DEBUG] [Thread-127183] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:45:48.346 [DEBUG] [Thread-127183] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:45:48.346 [DEBUG] [Thread-127183] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:45:48.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:45:48.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:45:48.402 [DEBUG] [Thread-127183] [transport.py] [_log()] userauth is OK
2025-11-04T02:45:48.402 [DEBUG] [Thread-127183] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:45:48.402 [DEBUG] [Thread-127183] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:45:48.402 [DEBUG] [Thread-127183] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:45:48.402 [DEBUG] [Thread-127183] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:45:48.416 [INFO] [Thread-127183] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:45:48.425 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:45:48.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:45:49.286 [DEBUG] [Thread-127183] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:45:49.286 [DEBUG] [Thread-127183] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:45:49.325 [DEBUG] [Thread-127183] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:45:49.325 [DEBUG] [Thread-127183] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:45:49.335 [DEBUG] [Thread-127183] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:45:49.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:45:49.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:45:49.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:45:49.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:45:49.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:45:49.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:45:49.375 [DEBUG] [Thread-127183] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:45:56.085 [DEBUG] [Thread-127185 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:46:07.404 [DEBUG] [Thread-127186 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:46:11.163 [DEBUG] [Thread-127187 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:46:19.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:46:19.411 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:46:19.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:46:20.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 46, 11), 27.12, 14.72, 0.0, 19.71, 16.24, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:46:20.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:46:11
2025-11-04T02:46:20.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:46:20.523 [DEBUG] [Thread-127188] [transport.py] [_log()] starting thread (client mode): 0xed07460
2025-11-04T02:46:20.524 [DEBUG] [Thread-127188] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:46:20.528 [DEBUG] [Thread-127188] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:46:20.529 [INFO] [Thread-127188] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:46:20.534 [DEBUG] [Thread-127188] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:46:20.534 [DEBUG] [Thread-127188] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:46:20.534 [DEBUG] [Thread-127188] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:46:20.534 [DEBUG] [Thread-127188] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:46:20.535 [DEBUG] [Thread-127188] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:46:20.535 [DEBUG] [Thread-127188] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:46:20.535 [DEBUG] [Thread-127188] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:46:20.535 [DEBUG] [Thread-127188] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:46:20.535 [DEBUG] [Thread-127188] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:46:20.535 [DEBUG] [Thread-127188] [transport.py] [_log()] client lang: <none>
2025-11-04T02:46:20.535 [DEBUG] [Thread-127188] [transport.py] [_log()] server lang: <none>
2025-11-04T02:46:20.535 [DEBUG] [Thread-127188] [transport.py] [_log()] kex follows: False
2025-11-04T02:46:20.535 [DEBUG] [Thread-127188] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:46:20.536 [DEBUG] [Thread-127188] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:46:20.536 [DEBUG] [Thread-127188] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:46:20.536 [DEBUG] [Thread-127188] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:46:20.536 [DEBUG] [Thread-127188] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:46:20.537 [DEBUG] [Thread-127188] [transport.py] [_log()] Compression: none
2025-11-04T02:46:20.537 [DEBUG] [Thread-127188] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:46:20.571 [DEBUG] [Thread-127188] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:46:20.577 [DEBUG] [Thread-127188] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:46:20.579 [DEBUG] [Thread-127188] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:46:20.581 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:46:20.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:46:20.585 [DEBUG] [Thread-127188] [transport.py] [_log()] userauth is OK
2025-11-04T02:46:20.586 [DEBUG] [Thread-127188] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:46:20.586 [DEBUG] [Thread-127188] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:46:20.586 [DEBUG] [Thread-127188] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:46:20.586 [DEBUG] [Thread-127188] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:46:20.624 [INFO] [Thread-127188] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:46:20.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:46:21.226 [DEBUG] [Thread-127188] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:46:21.227 [DEBUG] [Thread-127188] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:46:21.229 [DEBUG] [Thread-127188] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:46:21.266 [DEBUG] [Thread-127188] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:46:21.267 [DEBUG] [Thread-127188] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:46:21.269 [DEBUG] [Thread-127188] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:46:21.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:46:21.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:46:21.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:46:21.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:46:21.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:46:21.290 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:46:21.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:46:21.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:46:21.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:46:21.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.031694 -999.00  +16.30  17.72     19   -6.90 1 1 1 1 1     0    0 23.75 31.16 ZNESW 18.2 17.7 308.6 21.6 16.6 -23.9 16.5 -22.8 16.3 -22.5 16.6 -23.4
2025-11-04T02:46:21.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:46:21.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:46:21.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.031694
2025-11-04T02:46:21.298 [DEBUG] [Thread-127188] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:46:21.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:46:21.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:46:21.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:46:21.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:46:21.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:46:21.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:46:11', tmtdew=27.12, humidity=14.72, cloud=0.0, wind=19.71, temperature=16.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:46:11', seeing=1.14, atlas_timestamp='2025-11-04T00:45:38.362', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, 0.04625000000000057, 0.08525000000000027, 0.030999999999998806, 0.0024999999999995026, 0.048250000000001236, 0.04800000000000004, 0.03125, 0.06149999999999878, 0.07649999999999935, 0.12524999999999942, 0.08099999999999952, 0.23099999999999987, -0.0417500000000004, 0.03849999999999909, -0.0045000000000001705, 0.09475000000000122, 0.09249999999999936, 0.18599999999999817, 0.13924999999999876, 0.17999999999999794, 0.023249999999999105, 0.07925000000000182, 0.04574999999999996, 0.09499999999999886, 0.1689999999999987, 0.10174999999999912, 0.2580000000000009, 0.22799999999999976, -0.6059999999999999, 0.16600000000000037, 0.12100000000000044, 0.15524999999999878], zp_timestamp='2025-11-04T00:42:00')
2025-11-04T02:46:21.392 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:46:21.404 [DEBUG] [Thread-127191] [transport.py] [_log()] starting thread (client mode): 0x1179a320
2025-11-04T02:46:21.404 [DEBUG] [Thread-127191] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:46:21.424 [DEBUG] [Thread-127191] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:46:21.424 [INFO] [Thread-127191] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:46:21.432 [DEBUG] [Thread-127191] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:46:21.432 [DEBUG] [Thread-127191] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:46:21.432 [DEBUG] [Thread-127191] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:46:21.432 [DEBUG] [Thread-127191] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:46:21.432 [DEBUG] [Thread-127191] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:46:21.432 [DEBUG] [Thread-127191] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:46:21.432 [DEBUG] [Thread-127191] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:46:21.432 [DEBUG] [Thread-127191] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:46:21.432 [DEBUG] [Thread-127191] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:46:21.432 [DEBUG] [Thread-127191] [transport.py] [_log()] client lang: <none>
2025-11-04T02:46:21.432 [DEBUG] [Thread-127191] [transport.py] [_log()] server lang: <none>
2025-11-04T02:46:21.432 [DEBUG] [Thread-127191] [transport.py] [_log()] kex follows: False
2025-11-04T02:46:21.432 [DEBUG] [Thread-127191] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:46:21.432 [DEBUG] [Thread-127191] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:46:21.432 [DEBUG] [Thread-127191] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:46:21.432 [DEBUG] [Thread-127191] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:46:21.432 [DEBUG] [Thread-127191] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:46:21.432 [DEBUG] [Thread-127191] [transport.py] [_log()] Compression: none
2025-11-04T02:46:21.432 [DEBUG] [Thread-127191] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:46:21.489 [DEBUG] [Thread-127191] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:46:21.490 [DEBUG] [Thread-127191] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:46:21.490 [DEBUG] [Thread-127191] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:46:21.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:46:21.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:46:21.547 [DEBUG] [Thread-127191] [transport.py] [_log()] userauth is OK
2025-11-04T02:46:21.547 [DEBUG] [Thread-127191] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:46:21.547 [DEBUG] [Thread-127191] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:46:21.547 [DEBUG] [Thread-127191] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:46:21.547 [DEBUG] [Thread-127191] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:46:21.561 [INFO] [Thread-127191] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:46:21.561 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:46:21.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:46:22.411 [DEBUG] [Thread-127191] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:46:22.411 [DEBUG] [Thread-127191] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:46:22.455 [DEBUG] [Thread-127191] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:46:22.455 [DEBUG] [Thread-127191] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:46:22.465 [DEBUG] [Thread-127191] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:46:22.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:46:22.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:46:22.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:46:22.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:46:22.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:46:22.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:46:22.506 [DEBUG] [Thread-127191] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:46:26.197 [DEBUG] [Thread-127193 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:46:41.326 [DEBUG] [Thread-127194 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:46:47.815 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:46:47.817 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:46:52.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:46:52.528 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:46:52.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:46:53.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 46, 43), 27.18, 14.59, 0.0, 19.73, 16.26, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:46:53.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:46:43
2025-11-04T02:46:53.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:46:53.673 [DEBUG] [Thread-127195] [transport.py] [_log()] starting thread (client mode): 0xed13910
2025-11-04T02:46:53.673 [DEBUG] [Thread-127195] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:46:53.692 [DEBUG] [Thread-127195] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:46:53.693 [INFO] [Thread-127195] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:46:53.696 [DEBUG] [Thread-127195] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:46:53.696 [DEBUG] [Thread-127195] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:46:53.696 [DEBUG] [Thread-127195] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:46:53.696 [DEBUG] [Thread-127195] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:46:53.696 [DEBUG] [Thread-127195] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:46:53.696 [DEBUG] [Thread-127195] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:46:53.696 [DEBUG] [Thread-127195] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:46:53.696 [DEBUG] [Thread-127195] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:46:53.696 [DEBUG] [Thread-127195] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:46:53.696 [DEBUG] [Thread-127195] [transport.py] [_log()] client lang: <none>
2025-11-04T02:46:53.696 [DEBUG] [Thread-127195] [transport.py] [_log()] server lang: <none>
2025-11-04T02:46:53.696 [DEBUG] [Thread-127195] [transport.py] [_log()] kex follows: False
2025-11-04T02:46:53.696 [DEBUG] [Thread-127195] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:46:53.696 [DEBUG] [Thread-127195] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:46:53.696 [DEBUG] [Thread-127195] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:46:53.697 [DEBUG] [Thread-127195] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:46:53.697 [DEBUG] [Thread-127195] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:46:53.697 [DEBUG] [Thread-127195] [transport.py] [_log()] Compression: none
2025-11-04T02:46:53.697 [DEBUG] [Thread-127195] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:46:53.718 [DEBUG] [Thread-127195] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:46:53.719 [DEBUG] [Thread-127195] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:46:53.720 [DEBUG] [Thread-127195] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:46:53.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:46:53.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:46:53.722 [DEBUG] [Thread-127195] [transport.py] [_log()] userauth is OK
2025-11-04T02:46:53.722 [DEBUG] [Thread-127195] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:46:53.722 [DEBUG] [Thread-127195] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:46:53.722 [DEBUG] [Thread-127195] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:46:53.722 [DEBUG] [Thread-127195] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:46:53.748 [INFO] [Thread-127195] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:46:53.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:46:54.378 [DEBUG] [Thread-127195] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:46:54.378 [DEBUG] [Thread-127195] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:46:54.379 [DEBUG] [Thread-127195] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:46:54.419 [DEBUG] [Thread-127195] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:46:54.419 [DEBUG] [Thread-127195] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:46:54.423 [DEBUG] [Thread-127195] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:46:54.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:46:54.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:46:54.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:46:54.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:46:54.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:46:54.449 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:46:54.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:46:54.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:46:54.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:46:54.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.032041 -999.00  +16.40  21.38     19   -6.90 1 1 1 1 1     0    0 24.32 28.50 ZNESW 16.4 21.4 310.8 25.7 16.6 -23.7 16.5 -22.8 16.3 -22.4 16.6 -23.4
2025-11-04T02:46:54.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:46:54.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:46:54.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.032041
2025-11-04T02:46:54.458 [DEBUG] [Thread-127195] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:46:54.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:46:54.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:46:54.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:46:54.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:46:54.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:46:54.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:46:43', tmtdew=27.18, humidity=14.59, cloud=0.0, wind=19.73, temperature=16.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:46:44', seeing=0.98, atlas_timestamp='2025-11-04T00:46:08.342', atlas_cloud=1, atlas_rain=1, zp_data=[0.0467499999999994, 0.09825000000000017, 0.11025000000000063, 0.1745000000000001, 0.05150000000000077, 0.11775000000000091, 0.07149999999999856, 0.03825000000000145, 0.09949999999999903, 0.10849999999999937, 0.14724999999999966, 0.09399999999999942, 0.2129999999999992, 0.08924999999999983, 0.0909999999999993, 0.0024999999999995026, 0.08825000000000038, 0.1385000000000005, 0.19299999999999962, 0.10224999999999973, 0.16699999999999804, 0.16174999999999784, 0.08425000000000082, 0.09924999999999962, 0.13649999999999984, 0.2524999999999995, 0.10324999999999918, 0.30900000000000016, 0.23850000000000016, -1.0959999999999983, 0.1255000000000006, 0.13400000000000034, 0.19374999999999964], zp_timestamp='2025-11-04T00:45:00')
2025-11-04T02:46:54.549 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:46:54.563 [DEBUG] [Thread-127198] [transport.py] [_log()] starting thread (client mode): 0xedc7bb0
2025-11-04T02:46:54.563 [DEBUG] [Thread-127198] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:46:54.579 [DEBUG] [Thread-127198] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:46:54.579 [INFO] [Thread-127198] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:46:54.590 [DEBUG] [Thread-127198] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:46:54.590 [DEBUG] [Thread-127198] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:46:54.591 [DEBUG] [Thread-127198] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:46:54.591 [DEBUG] [Thread-127198] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:46:54.591 [DEBUG] [Thread-127198] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:46:54.591 [DEBUG] [Thread-127198] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:46:54.592 [DEBUG] [Thread-127198] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:46:54.592 [DEBUG] [Thread-127198] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:46:54.592 [DEBUG] [Thread-127198] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:46:54.592 [DEBUG] [Thread-127198] [transport.py] [_log()] client lang: <none>
2025-11-04T02:46:54.592 [DEBUG] [Thread-127198] [transport.py] [_log()] server lang: <none>
2025-11-04T02:46:54.592 [DEBUG] [Thread-127198] [transport.py] [_log()] kex follows: False
2025-11-04T02:46:54.592 [DEBUG] [Thread-127198] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:46:54.592 [DEBUG] [Thread-127198] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:46:54.592 [DEBUG] [Thread-127198] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:46:54.592 [DEBUG] [Thread-127198] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:46:54.592 [DEBUG] [Thread-127198] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:46:54.592 [DEBUG] [Thread-127198] [transport.py] [_log()] Compression: none
2025-11-04T02:46:54.592 [DEBUG] [Thread-127198] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:46:54.648 [DEBUG] [Thread-127198] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:46:54.649 [DEBUG] [Thread-127198] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:46:54.650 [DEBUG] [Thread-127198] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:46:54.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:46:54.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:46:54.712 [DEBUG] [Thread-127198] [transport.py] [_log()] userauth is OK
2025-11-04T02:46:54.712 [DEBUG] [Thread-127198] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:46:54.712 [DEBUG] [Thread-127198] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:46:54.712 [DEBUG] [Thread-127198] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:46:54.712 [DEBUG] [Thread-127198] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:46:54.728 [INFO] [Thread-127198] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:46:54.729 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:46:54.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:46:55.580 [DEBUG] [Thread-127198] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:46:55.580 [DEBUG] [Thread-127198] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:46:55.628 [DEBUG] [Thread-127198] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:46:55.628 [DEBUG] [Thread-127198] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:46:55.637 [DEBUG] [Thread-127198] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:46:55.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:46:55.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:46:55.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:46:55.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:46:55.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:46:55.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:46:55.672 [DEBUG] [Thread-127198] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:46:56.362 [DEBUG] [Thread-127200 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:47:07.791 [DEBUG] [Thread-127201 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:47:11.415 [DEBUG] [Thread-127202 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:47:25.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:47:25.699 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:47:25.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:47:26.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 47, 16), 27.17, 14.62, 0.0, 19.14, 16.33, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:47:26.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:47:16
2025-11-04T02:47:26.466 [DEBUG] [Thread-127203 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:47:26.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:47:26.712 [DEBUG] [Thread-127204] [transport.py] [_log()] starting thread (client mode): 0x1179ada0
2025-11-04T02:47:26.713 [DEBUG] [Thread-127204] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:47:26.732 [DEBUG] [Thread-127204] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:47:26.732 [INFO] [Thread-127204] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:47:26.737 [DEBUG] [Thread-127204] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:47:26.737 [DEBUG] [Thread-127204] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:47:26.737 [DEBUG] [Thread-127204] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:47:26.737 [DEBUG] [Thread-127204] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:47:26.737 [DEBUG] [Thread-127204] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:47:26.737 [DEBUG] [Thread-127204] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:47:26.737 [DEBUG] [Thread-127204] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:47:26.737 [DEBUG] [Thread-127204] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:47:26.737 [DEBUG] [Thread-127204] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:47:26.737 [DEBUG] [Thread-127204] [transport.py] [_log()] client lang: <none>
2025-11-04T02:47:26.737 [DEBUG] [Thread-127204] [transport.py] [_log()] server lang: <none>
2025-11-04T02:47:26.737 [DEBUG] [Thread-127204] [transport.py] [_log()] kex follows: False
2025-11-04T02:47:26.737 [DEBUG] [Thread-127204] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:47:26.738 [DEBUG] [Thread-127204] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:47:26.738 [DEBUG] [Thread-127204] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:47:26.738 [DEBUG] [Thread-127204] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:47:26.738 [DEBUG] [Thread-127204] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:47:26.738 [DEBUG] [Thread-127204] [transport.py] [_log()] Compression: none
2025-11-04T02:47:26.738 [DEBUG] [Thread-127204] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:47:26.769 [DEBUG] [Thread-127204] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:47:26.773 [DEBUG] [Thread-127204] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:47:26.774 [DEBUG] [Thread-127204] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:47:26.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:47:26.776 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:47:26.777 [DEBUG] [Thread-127204] [transport.py] [_log()] userauth is OK
2025-11-04T02:47:26.777 [DEBUG] [Thread-127204] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:47:26.777 [DEBUG] [Thread-127204] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:47:26.777 [DEBUG] [Thread-127204] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:47:26.777 [DEBUG] [Thread-127204] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:47:26.790 [INFO] [Thread-127204] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:47:26.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:47:27.436 [DEBUG] [Thread-127204] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:47:27.436 [DEBUG] [Thread-127204] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:47:27.438 [DEBUG] [Thread-127204] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:47:27.478 [DEBUG] [Thread-127204] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:47:27.478 [DEBUG] [Thread-127204] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:47:27.480 [DEBUG] [Thread-127204] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:47:27.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:47:27.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:47:27.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:47:27.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:47:27.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:47:27.504 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:47:27.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:47:27.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:47:27.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:47:27.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.032389 -999.00  +16.40  17.61     19   -6.90 1 1 1 1 1     0    0 23.72 24.68 ZNESW 18.1 17.6 309.4 19.6 16.6 -23.8 16.5 -22.8 16.3 -22.5 16.6 -23.4
2025-11-04T02:47:27.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:47:27.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:47:27.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.032389
2025-11-04T02:47:27.512 [DEBUG] [Thread-127204] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:47:27.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:47:27.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:47:27.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:47:27.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:47:27.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:47:27.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:47:16', tmtdew=27.17, humidity=14.62, cloud=0.0, wind=19.14, temperature=16.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:47:17', seeing=0.98, atlas_timestamp='2025-11-04T00:46:38.410', atlas_cloud=1, atlas_rain=1, zp_data=[0.0467499999999994, 0.09825000000000017, 0.11025000000000063, 0.1745000000000001, 0.05150000000000077, 0.11775000000000091, 0.07149999999999856, 0.03825000000000145, 0.09949999999999903, 0.10849999999999937, 0.14724999999999966, 0.09399999999999942, 0.2129999999999992, 0.08924999999999983, 0.0909999999999993, 0.0024999999999995026, 0.08825000000000038, 0.1385000000000005, 0.19299999999999962, 0.10224999999999973, 0.16699999999999804, 0.16174999999999784, 0.08425000000000082, 0.09924999999999962, 0.13649999999999984, 0.2524999999999995, 0.10324999999999918, 0.30900000000000016, 0.23850000000000016, -1.0959999999999983, 0.1255000000000006, 0.13400000000000034, 0.19374999999999964], zp_timestamp='2025-11-04T00:45:00')
2025-11-04T02:47:27.602 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:47:27.614 [DEBUG] [Thread-127207] [transport.py] [_log()] starting thread (client mode): 0xed11ea0
2025-11-04T02:47:27.614 [DEBUG] [Thread-127207] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:47:27.632 [DEBUG] [Thread-127207] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:47:27.632 [INFO] [Thread-127207] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:47:27.642 [DEBUG] [Thread-127207] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:47:27.642 [DEBUG] [Thread-127207] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:47:27.642 [DEBUG] [Thread-127207] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:47:27.642 [DEBUG] [Thread-127207] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:47:27.642 [DEBUG] [Thread-127207] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:47:27.642 [DEBUG] [Thread-127207] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:47:27.642 [DEBUG] [Thread-127207] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:47:27.642 [DEBUG] [Thread-127207] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:47:27.642 [DEBUG] [Thread-127207] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:47:27.642 [DEBUG] [Thread-127207] [transport.py] [_log()] client lang: <none>
2025-11-04T02:47:27.642 [DEBUG] [Thread-127207] [transport.py] [_log()] server lang: <none>
2025-11-04T02:47:27.642 [DEBUG] [Thread-127207] [transport.py] [_log()] kex follows: False
2025-11-04T02:47:27.642 [DEBUG] [Thread-127207] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:47:27.642 [DEBUG] [Thread-127207] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:47:27.642 [DEBUG] [Thread-127207] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:47:27.642 [DEBUG] [Thread-127207] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:47:27.642 [DEBUG] [Thread-127207] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:47:27.642 [DEBUG] [Thread-127207] [transport.py] [_log()] Compression: none
2025-11-04T02:47:27.644 [DEBUG] [Thread-127207] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:47:27.698 [DEBUG] [Thread-127207] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:47:27.698 [DEBUG] [Thread-127207] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:47:27.698 [DEBUG] [Thread-127207] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:47:27.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:47:27.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:47:27.755 [DEBUG] [Thread-127207] [transport.py] [_log()] userauth is OK
2025-11-04T02:47:27.755 [DEBUG] [Thread-127207] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:47:27.755 [DEBUG] [Thread-127207] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:47:27.755 [DEBUG] [Thread-127207] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:47:27.755 [DEBUG] [Thread-127207] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:47:27.770 [INFO] [Thread-127207] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:47:27.770 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:47:27.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:47:28.610 [DEBUG] [Thread-127207] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:47:28.610 [DEBUG] [Thread-127207] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:47:28.659 [DEBUG] [Thread-127207] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:47:28.659 [DEBUG] [Thread-127207] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:47:28.667 [DEBUG] [Thread-127207] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:47:28.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:47:28.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:47:28.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:47:28.697 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:47:28.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:47:28.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:47:28.705 [DEBUG] [Thread-127207] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:47:41.527 [DEBUG] [Thread-127209 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:47:48.027 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:47:48.029 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:47:56.658 [DEBUG] [Thread-127210 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:47:58.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:47:58.739 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:47:58.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:47:59.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 47, 49), 27.3, 14.59, 0.0, 20.11, 16.34, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:47:59.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:47:49
2025-11-04T02:47:59.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:47:59.855 [DEBUG] [Thread-127211] [transport.py] [_log()] starting thread (client mode): 0xed04bb0
2025-11-04T02:47:59.855 [DEBUG] [Thread-127211] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:47:59.870 [DEBUG] [Thread-127211] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:47:59.870 [INFO] [Thread-127211] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:47:59.874 [DEBUG] [Thread-127211] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:47:59.874 [DEBUG] [Thread-127211] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:47:59.874 [DEBUG] [Thread-127211] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:47:59.874 [DEBUG] [Thread-127211] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:47:59.874 [DEBUG] [Thread-127211] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:47:59.875 [DEBUG] [Thread-127211] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:47:59.875 [DEBUG] [Thread-127211] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:47:59.875 [DEBUG] [Thread-127211] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:47:59.875 [DEBUG] [Thread-127211] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:47:59.875 [DEBUG] [Thread-127211] [transport.py] [_log()] client lang: <none>
2025-11-04T02:47:59.875 [DEBUG] [Thread-127211] [transport.py] [_log()] server lang: <none>
2025-11-04T02:47:59.875 [DEBUG] [Thread-127211] [transport.py] [_log()] kex follows: False
2025-11-04T02:47:59.875 [DEBUG] [Thread-127211] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:47:59.875 [DEBUG] [Thread-127211] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:47:59.875 [DEBUG] [Thread-127211] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:47:59.875 [DEBUG] [Thread-127211] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:47:59.875 [DEBUG] [Thread-127211] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:47:59.876 [DEBUG] [Thread-127211] [transport.py] [_log()] Compression: none
2025-11-04T02:47:59.876 [DEBUG] [Thread-127211] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:47:59.905 [DEBUG] [Thread-127211] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:47:59.910 [DEBUG] [Thread-127211] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:47:59.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:47:59.914 [DEBUG] [Thread-127211] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:47:59.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:47:59.916 [DEBUG] [Thread-127211] [transport.py] [_log()] userauth is OK
2025-11-04T02:47:59.916 [DEBUG] [Thread-127211] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:47:59.916 [DEBUG] [Thread-127211] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:47:59.916 [DEBUG] [Thread-127211] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:47:59.916 [DEBUG] [Thread-127211] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:47:59.933 [INFO] [Thread-127211] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:47:59.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:48:00.582 [DEBUG] [Thread-127211] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:48:00.582 [DEBUG] [Thread-127211] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:48:00.583 [DEBUG] [Thread-127211] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:48:00.623 [DEBUG] [Thread-127211] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:48:00.623 [DEBUG] [Thread-127211] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:48:00.626 [DEBUG] [Thread-127211] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:48:00.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:48:00.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:48:00.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:48:00.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:48:00.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:48:00.647 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:48:00.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:48:00.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:48:00.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:48:00.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.032736 -999.00  +16.50  17.22     19   -7.10 1 1 1 1 1     0    0 24.28 26.17 ZNESW 21.9 17.2 308.6 21.8 16.6 -23.7 16.6 -22.6 16.3 -22.3 16.6 -23.4
2025-11-04T02:48:00.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:48:00.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:48:00.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.032736
2025-11-04T02:48:00.654 [DEBUG] [Thread-127211] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:48:00.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:48:00.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:48:00.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:48:00.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:48:00.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:48:00.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:47:49', tmtdew=27.3, humidity=14.59, cloud=0.0, wind=20.11, temperature=16.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:47:50', seeing=1.01, atlas_timestamp='2025-11-04T00:47:08.390', atlas_cloud=1, atlas_rain=1, zp_data=[0.0467499999999994, 0.09825000000000017, 0.11025000000000063, 0.1745000000000001, 0.05150000000000077, 0.11775000000000091, 0.07149999999999856, 0.03825000000000145, 0.09949999999999903, 0.10849999999999937, 0.14724999999999966, 0.09399999999999942, 0.2129999999999992, 0.08924999999999983, 0.0909999999999993, 0.0024999999999995026, 0.08825000000000038, 0.1385000000000005, 0.19299999999999962, 0.10224999999999973, 0.16699999999999804, 0.16174999999999784, 0.08425000000000082, 0.09924999999999962, 0.13649999999999984, 0.2524999999999995, 0.10324999999999918, 0.30900000000000016, 0.23850000000000016, -1.0959999999999983, 0.1255000000000006, 0.13400000000000034, 0.19374999999999964], zp_timestamp='2025-11-04T00:45:00')
2025-11-04T02:48:00.747 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:48:00.759 [DEBUG] [Thread-127214] [transport.py] [_log()] starting thread (client mode): 0x819b4f0
2025-11-04T02:48:00.759 [DEBUG] [Thread-127214] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:48:00.773 [DEBUG] [Thread-127214] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:48:00.773 [INFO] [Thread-127214] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:48:00.781 [DEBUG] [Thread-127214] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:48:00.782 [DEBUG] [Thread-127214] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:48:00.782 [DEBUG] [Thread-127214] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:48:00.782 [DEBUG] [Thread-127214] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:48:00.782 [DEBUG] [Thread-127214] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:48:00.782 [DEBUG] [Thread-127214] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:48:00.782 [DEBUG] [Thread-127214] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:48:00.783 [DEBUG] [Thread-127214] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:48:00.783 [DEBUG] [Thread-127214] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:48:00.783 [DEBUG] [Thread-127214] [transport.py] [_log()] client lang: <none>
2025-11-04T02:48:00.783 [DEBUG] [Thread-127214] [transport.py] [_log()] server lang: <none>
2025-11-04T02:48:00.783 [DEBUG] [Thread-127214] [transport.py] [_log()] kex follows: False
2025-11-04T02:48:00.783 [DEBUG] [Thread-127214] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:48:00.783 [DEBUG] [Thread-127214] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:48:00.783 [DEBUG] [Thread-127214] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:48:00.783 [DEBUG] [Thread-127214] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:48:00.783 [DEBUG] [Thread-127214] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:48:00.783 [DEBUG] [Thread-127214] [transport.py] [_log()] Compression: none
2025-11-04T02:48:00.783 [DEBUG] [Thread-127214] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:48:00.840 [DEBUG] [Thread-127214] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:48:00.840 [DEBUG] [Thread-127214] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:48:00.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:48:00.841 [DEBUG] [Thread-127214] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:48:00.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:48:00.896 [DEBUG] [Thread-127214] [transport.py] [_log()] userauth is OK
2025-11-04T02:48:00.896 [DEBUG] [Thread-127214] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:48:00.896 [DEBUG] [Thread-127214] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:48:00.896 [DEBUG] [Thread-127214] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:48:00.897 [DEBUG] [Thread-127214] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:48:00.913 [INFO] [Thread-127214] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:48:00.913 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:48:00.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:48:01.740 [DEBUG] [Thread-127214] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:48:01.740 [DEBUG] [Thread-127214] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:48:01.781 [DEBUG] [Thread-127214] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:48:01.781 [DEBUG] [Thread-127214] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:48:01.792 [DEBUG] [Thread-127214] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:48:01.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:48:01.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:48:01.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:48:01.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:48:01.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:48:01.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:48:01.835 [DEBUG] [Thread-127214] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:48:08.079 [DEBUG] [Thread-127216 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:48:11.693 [DEBUG] [Thread-127217 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:48:26.810 [DEBUG] [Thread-127218 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:48:31.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:48:31.847 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:48:31.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:48:32.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 48, 22), 27.34, 14.54, 0.0, 20.38, 16.36, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:48:32.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:48:22
2025-11-04T02:48:32.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:48:33.056 [DEBUG] [Thread-127219] [transport.py] [_log()] starting thread (client mode): 0xedc6d70
2025-11-04T02:48:33.057 [DEBUG] [Thread-127219] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:48:33.063 [DEBUG] [Thread-127219] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:48:33.063 [INFO] [Thread-127219] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:48:33.067 [DEBUG] [Thread-127219] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:48:33.068 [DEBUG] [Thread-127219] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:48:33.068 [DEBUG] [Thread-127219] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:48:33.068 [DEBUG] [Thread-127219] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:48:33.068 [DEBUG] [Thread-127219] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:48:33.068 [DEBUG] [Thread-127219] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:48:33.068 [DEBUG] [Thread-127219] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:48:33.068 [DEBUG] [Thread-127219] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:48:33.068 [DEBUG] [Thread-127219] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:48:33.068 [DEBUG] [Thread-127219] [transport.py] [_log()] client lang: <none>
2025-11-04T02:48:33.068 [DEBUG] [Thread-127219] [transport.py] [_log()] server lang: <none>
2025-11-04T02:48:33.068 [DEBUG] [Thread-127219] [transport.py] [_log()] kex follows: False
2025-11-04T02:48:33.068 [DEBUG] [Thread-127219] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:48:33.069 [DEBUG] [Thread-127219] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:48:33.069 [DEBUG] [Thread-127219] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:48:33.069 [DEBUG] [Thread-127219] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:48:33.069 [DEBUG] [Thread-127219] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:48:33.069 [DEBUG] [Thread-127219] [transport.py] [_log()] Compression: none
2025-11-04T02:48:33.069 [DEBUG] [Thread-127219] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:48:33.098 [DEBUG] [Thread-127219] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:48:33.100 [DEBUG] [Thread-127219] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:48:33.102 [DEBUG] [Thread-127219] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:48:33.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:48:33.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:48:33.105 [DEBUG] [Thread-127219] [transport.py] [_log()] userauth is OK
2025-11-04T02:48:33.105 [DEBUG] [Thread-127219] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:48:33.105 [DEBUG] [Thread-127219] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:48:33.105 [DEBUG] [Thread-127219] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:48:33.105 [DEBUG] [Thread-127219] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:48:33.126 [INFO] [Thread-127219] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:48:33.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:48:33.724 [DEBUG] [Thread-127219] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:48:33.724 [DEBUG] [Thread-127219] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:48:33.734 [DEBUG] [Thread-127219] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:48:33.765 [DEBUG] [Thread-127219] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:48:33.765 [DEBUG] [Thread-127219] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:48:33.768 [DEBUG] [Thread-127219] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:48:33.781 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:48:33.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:48:33.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:48:33.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:48:33.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:48:33.794 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:48:33.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:48:33.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:48:33.797 [DEBUG] [Thread-127219] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:48:33.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:48:33.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.033430 -999.00  +16.50  15.47     19   -7.00 1 1 1 1 1     0    0 23.86 23.19 ZNESW 16.3 15.5 307.4 22.3 16.6 -23.8 16.6 -22.8 16.4 -22.3 16.6 -23.3
2025-11-04T02:48:33.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:48:33.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:48:33.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.033430
2025-11-04T02:48:33.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:48:33.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:48:33.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:48:33.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:48:33.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:48:33.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:48:22', tmtdew=27.34, humidity=14.54, cloud=0.0, wind=20.38, temperature=16.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:48:23', seeing=1.14, atlas_timestamp='2025-11-04T00:48:08.352', atlas_cloud=1, atlas_rain=1, zp_data=[0.0467499999999994, 0.09825000000000017, 0.11025000000000063, 0.1745000000000001, 0.05150000000000077, 0.11775000000000091, 0.07149999999999856, 0.03825000000000145, 0.09949999999999903, 0.10849999999999937, 0.14724999999999966, 0.09399999999999942, 0.2129999999999992, 0.08924999999999983, 0.0909999999999993, 0.0024999999999995026, 0.08825000000000038, 0.1385000000000005, 0.19299999999999962, 0.10224999999999973, 0.16699999999999804, 0.16174999999999784, 0.08425000000000082, 0.09924999999999962, 0.13649999999999984, 0.2524999999999995, 0.10324999999999918, 0.30900000000000016, 0.23850000000000016, -1.0959999999999983, 0.1255000000000006, 0.13400000000000034, 0.19374999999999964], zp_timestamp='2025-11-04T00:45:00')
2025-11-04T02:48:33.908 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:48:33.920 [DEBUG] [Thread-127222] [transport.py] [_log()] starting thread (client mode): 0x117bc850
2025-11-04T02:48:33.920 [DEBUG] [Thread-127222] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:48:33.934 [DEBUG] [Thread-127222] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:48:33.934 [INFO] [Thread-127222] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:48:33.941 [DEBUG] [Thread-127222] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:48:33.941 [DEBUG] [Thread-127222] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:48:33.941 [DEBUG] [Thread-127222] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:48:33.941 [DEBUG] [Thread-127222] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:48:33.942 [DEBUG] [Thread-127222] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:48:33.942 [DEBUG] [Thread-127222] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:48:33.942 [DEBUG] [Thread-127222] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:48:33.942 [DEBUG] [Thread-127222] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:48:33.942 [DEBUG] [Thread-127222] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:48:33.942 [DEBUG] [Thread-127222] [transport.py] [_log()] client lang: <none>
2025-11-04T02:48:33.942 [DEBUG] [Thread-127222] [transport.py] [_log()] server lang: <none>
2025-11-04T02:48:33.942 [DEBUG] [Thread-127222] [transport.py] [_log()] kex follows: False
2025-11-04T02:48:33.942 [DEBUG] [Thread-127222] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:48:33.942 [DEBUG] [Thread-127222] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:48:33.942 [DEBUG] [Thread-127222] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:48:33.942 [DEBUG] [Thread-127222] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:48:33.942 [DEBUG] [Thread-127222] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:48:33.942 [DEBUG] [Thread-127222] [transport.py] [_log()] Compression: none
2025-11-04T02:48:33.942 [DEBUG] [Thread-127222] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:48:34.004 [DEBUG] [Thread-127222] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:48:34.004 [DEBUG] [Thread-127222] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:48:34.005 [DEBUG] [Thread-127222] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:48:34.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:48:34.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:48:34.064 [DEBUG] [Thread-127222] [transport.py] [_log()] userauth is OK
2025-11-04T02:48:34.064 [DEBUG] [Thread-127222] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:48:34.064 [DEBUG] [Thread-127222] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:48:34.064 [DEBUG] [Thread-127222] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:48:34.064 [DEBUG] [Thread-127222] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:48:34.083 [INFO] [Thread-127222] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:48:34.093 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:48:34.093 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:48:34.959 [DEBUG] [Thread-127222] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:48:34.959 [DEBUG] [Thread-127222] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:48:35.008 [DEBUG] [Thread-127222] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:48:35.008 [DEBUG] [Thread-127222] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:48:35.017 [DEBUG] [Thread-127222] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:48:35.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:48:35.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:48:35.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:48:35.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:48:35.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:48:35.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:48:35.063 [DEBUG] [Thread-127222] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:48:41.901 [DEBUG] [Thread-127224 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:48:48.295 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:48:48.296 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:48:56.980 [DEBUG] [Thread-127225 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:49:05.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:49:05.095 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:49:05.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:49:06.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 48, 55), 27.42, 14.51, 0.0, 21.26, 16.39, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:49:06.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:48:55
2025-11-04T02:49:06.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:49:06.361 [DEBUG] [Thread-127226] [transport.py] [_log()] starting thread (client mode): 0x117bd990
2025-11-04T02:49:06.362 [DEBUG] [Thread-127226] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:49:06.376 [DEBUG] [Thread-127226] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:49:06.376 [INFO] [Thread-127226] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:49:06.381 [DEBUG] [Thread-127226] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:49:06.381 [DEBUG] [Thread-127226] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:49:06.381 [DEBUG] [Thread-127226] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:49:06.381 [DEBUG] [Thread-127226] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:49:06.381 [DEBUG] [Thread-127226] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:49:06.381 [DEBUG] [Thread-127226] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:49:06.381 [DEBUG] [Thread-127226] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:49:06.381 [DEBUG] [Thread-127226] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:49:06.381 [DEBUG] [Thread-127226] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:49:06.382 [DEBUG] [Thread-127226] [transport.py] [_log()] client lang: <none>
2025-11-04T02:49:06.382 [DEBUG] [Thread-127226] [transport.py] [_log()] server lang: <none>
2025-11-04T02:49:06.382 [DEBUG] [Thread-127226] [transport.py] [_log()] kex follows: False
2025-11-04T02:49:06.382 [DEBUG] [Thread-127226] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:49:06.382 [DEBUG] [Thread-127226] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:49:06.383 [DEBUG] [Thread-127226] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:49:06.383 [DEBUG] [Thread-127226] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:49:06.383 [DEBUG] [Thread-127226] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:49:06.383 [DEBUG] [Thread-127226] [transport.py] [_log()] Compression: none
2025-11-04T02:49:06.383 [DEBUG] [Thread-127226] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:49:06.415 [DEBUG] [Thread-127226] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:49:06.417 [DEBUG] [Thread-127226] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:49:06.418 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:49:06.420 [DEBUG] [Thread-127226] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:49:06.420 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:49:06.422 [DEBUG] [Thread-127226] [transport.py] [_log()] userauth is OK
2025-11-04T02:49:06.423 [DEBUG] [Thread-127226] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:49:06.423 [DEBUG] [Thread-127226] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:49:06.423 [DEBUG] [Thread-127226] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:49:06.423 [DEBUG] [Thread-127226] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:49:06.459 [INFO] [Thread-127226] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:49:06.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:49:07.111 [DEBUG] [Thread-127226] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:49:07.111 [DEBUG] [Thread-127226] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:49:07.111 [DEBUG] [Thread-127226] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:49:07.152 [DEBUG] [Thread-127226] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:49:07.152 [DEBUG] [Thread-127226] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:49:07.154 [DEBUG] [Thread-127226] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:49:07.169 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:49:07.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:49:07.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:49:07.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:49:07.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:49:07.177 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:49:07.177 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:49:07.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:49:07.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:49:07.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.033778 -999.00  +16.40  17.67     19   -7.00 1 1 1 1 1     0    0 23.54 24.66 ZNESW 16.1 17.7 308.0 20.3 16.6 -23.7 16.6 -22.8 16.4 -22.5 16.6 -23.5
2025-11-04T02:49:07.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:49:07.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:49:07.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.033778
2025-11-04T02:49:07.185 [DEBUG] [Thread-127226] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:49:07.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:49:07.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:49:07.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:49:07.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:49:07.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:49:07.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:48:55', tmtdew=27.42, humidity=14.51, cloud=0.0, wind=21.26, temperature=16.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:48:55', seeing=1.14, atlas_timestamp='2025-11-04T00:48:38.419', atlas_cloud=1, atlas_rain=1, zp_data=[0.0467499999999994, 0.09825000000000017, 0.11025000000000063, 0.1745000000000001, 0.05150000000000077, 0.11775000000000091, 0.07149999999999856, 0.03825000000000145, 0.09949999999999903, 0.10849999999999937, 0.14724999999999966, 0.09399999999999942, 0.2129999999999992, 0.08924999999999983, 0.0909999999999993, 0.0024999999999995026, 0.08825000000000038, 0.1385000000000005, 0.19299999999999962, 0.10224999999999973, 0.16699999999999804, 0.16174999999999784, 0.08425000000000082, 0.09924999999999962, 0.13649999999999984, 0.2524999999999995, 0.10324999999999918, 0.30900000000000016, 0.23850000000000016, -1.0959999999999983, 0.1255000000000006, 0.13400000000000034, 0.19374999999999964], zp_timestamp='2025-11-04T00:45:00')
2025-11-04T02:49:07.268 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:49:07.280 [DEBUG] [Thread-127229] [transport.py] [_log()] starting thread (client mode): 0x1179a620
2025-11-04T02:49:07.280 [DEBUG] [Thread-127229] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:49:07.295 [DEBUG] [Thread-127229] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:49:07.295 [INFO] [Thread-127229] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:49:07.303 [DEBUG] [Thread-127229] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:49:07.303 [DEBUG] [Thread-127229] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:49:07.304 [DEBUG] [Thread-127229] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:49:07.304 [DEBUG] [Thread-127229] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:49:07.304 [DEBUG] [Thread-127229] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:49:07.304 [DEBUG] [Thread-127229] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:49:07.304 [DEBUG] [Thread-127229] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:49:07.304 [DEBUG] [Thread-127229] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:49:07.304 [DEBUG] [Thread-127229] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:49:07.304 [DEBUG] [Thread-127229] [transport.py] [_log()] client lang: <none>
2025-11-04T02:49:07.305 [DEBUG] [Thread-127229] [transport.py] [_log()] server lang: <none>
2025-11-04T02:49:07.305 [DEBUG] [Thread-127229] [transport.py] [_log()] kex follows: False
2025-11-04T02:49:07.305 [DEBUG] [Thread-127229] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:49:07.305 [DEBUG] [Thread-127229] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:49:07.305 [DEBUG] [Thread-127229] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:49:07.305 [DEBUG] [Thread-127229] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:49:07.306 [DEBUG] [Thread-127229] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:49:07.306 [DEBUG] [Thread-127229] [transport.py] [_log()] Compression: none
2025-11-04T02:49:07.306 [DEBUG] [Thread-127229] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:49:07.363 [DEBUG] [Thread-127229] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:49:07.364 [DEBUG] [Thread-127229] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:49:07.365 [DEBUG] [Thread-127229] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:49:07.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:49:07.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:49:07.426 [DEBUG] [Thread-127229] [transport.py] [_log()] userauth is OK
2025-11-04T02:49:07.426 [DEBUG] [Thread-127229] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:49:07.426 [DEBUG] [Thread-127229] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:49:07.426 [DEBUG] [Thread-127229] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:49:07.426 [DEBUG] [Thread-127229] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:49:07.445 [INFO] [Thread-127229] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:49:07.446 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:49:07.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:49:08.259 [DEBUG] [Thread-127229] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:49:08.259 [DEBUG] [Thread-127229] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:49:08.308 [DEBUG] [Thread-127229] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:49:08.308 [DEBUG] [Thread-127229] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:49:08.317 [DEBUG] [Thread-127229] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:49:08.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:49:08.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:49:08.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:49:08.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:49:08.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:49:08.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:49:08.354 [DEBUG] [Thread-127229] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:49:08.444 [DEBUG] [Thread-127231 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:49:12.022 [DEBUG] [Thread-127232 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:49:27.138 [DEBUG] [Thread-127233 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:49:38.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:49:38.386 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:49:38.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:49:39.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 49, 27), 27.36, 14.57, 0.0, 21.21, 16.41, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:49:39.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:49:27
2025-11-04T02:49:39.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:49:39.470 [DEBUG] [Thread-127234] [transport.py] [_log()] starting thread (client mode): 0x117bf5e0
2025-11-04T02:49:39.470 [DEBUG] [Thread-127234] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:49:39.478 [DEBUG] [Thread-127234] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:49:39.478 [INFO] [Thread-127234] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:49:39.480 [DEBUG] [Thread-127234] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:49:39.480 [DEBUG] [Thread-127234] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:49:39.480 [DEBUG] [Thread-127234] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:49:39.480 [DEBUG] [Thread-127234] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:49:39.480 [DEBUG] [Thread-127234] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:49:39.480 [DEBUG] [Thread-127234] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:49:39.480 [DEBUG] [Thread-127234] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:49:39.480 [DEBUG] [Thread-127234] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:49:39.480 [DEBUG] [Thread-127234] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:49:39.480 [DEBUG] [Thread-127234] [transport.py] [_log()] client lang: <none>
2025-11-04T02:49:39.480 [DEBUG] [Thread-127234] [transport.py] [_log()] server lang: <none>
2025-11-04T02:49:39.481 [DEBUG] [Thread-127234] [transport.py] [_log()] kex follows: False
2025-11-04T02:49:39.481 [DEBUG] [Thread-127234] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:49:39.481 [DEBUG] [Thread-127234] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:49:39.481 [DEBUG] [Thread-127234] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:49:39.481 [DEBUG] [Thread-127234] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:49:39.481 [DEBUG] [Thread-127234] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:49:39.481 [DEBUG] [Thread-127234] [transport.py] [_log()] Compression: none
2025-11-04T02:49:39.481 [DEBUG] [Thread-127234] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:49:39.500 [DEBUG] [Thread-127234] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:49:39.503 [DEBUG] [Thread-127234] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:49:39.504 [DEBUG] [Thread-127234] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:49:39.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:49:39.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:49:39.507 [DEBUG] [Thread-127234] [transport.py] [_log()] userauth is OK
2025-11-04T02:49:39.508 [DEBUG] [Thread-127234] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:49:39.508 [DEBUG] [Thread-127234] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:49:39.508 [DEBUG] [Thread-127234] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:49:39.508 [DEBUG] [Thread-127234] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:49:39.532 [INFO] [Thread-127234] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:49:39.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:49:40.197 [DEBUG] [Thread-127234] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:49:40.197 [DEBUG] [Thread-127234] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:49:40.207 [DEBUG] [Thread-127234] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:49:40.238 [DEBUG] [Thread-127234] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:49:40.239 [DEBUG] [Thread-127234] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:49:40.241 [DEBUG] [Thread-127234] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:49:40.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:49:40.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:49:40.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:49:40.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:49:40.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:49:40.259 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:49:40.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:49:40.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:49:40.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:49:40.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.034125 -999.00  +16.40  16.59     19   -7.00 1 1 1 1 1     0    0 24.21 23.91 ZNESW 15.9 16.6 309.4 25.1 16.6 -23.9 16.6 -22.8 16.3 -22.4 16.6 -23.6
2025-11-04T02:49:40.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:49:40.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:49:40.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.034125
2025-11-04T02:49:40.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:49:40.263 [DEBUG] [Thread-127234] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:49:40.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:49:40.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:49:40.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:49:40.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:49:40.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:49:27', tmtdew=27.36, humidity=14.57, cloud=0.0, wind=21.21, temperature=16.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:49:28', seeing=1.03, atlas_timestamp='2025-11-04T00:49:08.400', atlas_cloud=1, atlas_rain=1, zp_data=[0.0467499999999994, 0.09825000000000017, 0.11025000000000063, 0.1745000000000001, 0.05150000000000077, 0.11775000000000091, 0.07149999999999856, 0.03825000000000145, 0.09949999999999903, 0.10849999999999937, 0.14724999999999966, 0.09399999999999942, 0.2129999999999992, 0.08924999999999983, 0.0909999999999993, 0.0024999999999995026, 0.08825000000000038, 0.1385000000000005, 0.19299999999999962, 0.10224999999999973, 0.16699999999999804, 0.16174999999999784, 0.08425000000000082, 0.09924999999999962, 0.13649999999999984, 0.2524999999999995, 0.10324999999999918, 0.30900000000000016, 0.23850000000000016, -1.0959999999999983, 0.1255000000000006, 0.13400000000000034, 0.19374999999999964], zp_timestamp='2025-11-04T00:45:00')
2025-11-04T02:49:40.343 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:49:40.356 [DEBUG] [Thread-127237] [transport.py] [_log()] starting thread (client mode): 0xedc6a40
2025-11-04T02:49:40.356 [DEBUG] [Thread-127237] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:49:40.371 [DEBUG] [Thread-127237] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:49:40.371 [INFO] [Thread-127237] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:49:40.380 [DEBUG] [Thread-127237] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:49:40.380 [DEBUG] [Thread-127237] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:49:40.380 [DEBUG] [Thread-127237] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:49:40.380 [DEBUG] [Thread-127237] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:49:40.380 [DEBUG] [Thread-127237] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:49:40.380 [DEBUG] [Thread-127237] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:49:40.380 [DEBUG] [Thread-127237] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:49:40.380 [DEBUG] [Thread-127237] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:49:40.380 [DEBUG] [Thread-127237] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:49:40.380 [DEBUG] [Thread-127237] [transport.py] [_log()] client lang: <none>
2025-11-04T02:49:40.380 [DEBUG] [Thread-127237] [transport.py] [_log()] server lang: <none>
2025-11-04T02:49:40.380 [DEBUG] [Thread-127237] [transport.py] [_log()] kex follows: False
2025-11-04T02:49:40.380 [DEBUG] [Thread-127237] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:49:40.380 [DEBUG] [Thread-127237] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:49:40.380 [DEBUG] [Thread-127237] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:49:40.380 [DEBUG] [Thread-127237] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:49:40.380 [DEBUG] [Thread-127237] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:49:40.380 [DEBUG] [Thread-127237] [transport.py] [_log()] Compression: none
2025-11-04T02:49:40.380 [DEBUG] [Thread-127237] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:49:40.438 [DEBUG] [Thread-127237] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:49:40.439 [DEBUG] [Thread-127237] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:49:40.439 [DEBUG] [Thread-127237] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:49:40.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:49:40.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:49:40.496 [DEBUG] [Thread-127237] [transport.py] [_log()] userauth is OK
2025-11-04T02:49:40.496 [DEBUG] [Thread-127237] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:49:40.497 [DEBUG] [Thread-127237] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:49:40.497 [DEBUG] [Thread-127237] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:49:40.497 [DEBUG] [Thread-127237] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:49:40.522 [INFO] [Thread-127237] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:49:40.522 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:49:40.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:49:41.364 [DEBUG] [Thread-127237] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:49:41.364 [DEBUG] [Thread-127237] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:49:41.412 [DEBUG] [Thread-127237] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:49:41.413 [DEBUG] [Thread-127237] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:49:41.422 [DEBUG] [Thread-127237] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:49:41.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:49:41.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:49:41.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:49:41.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:49:41.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:49:41.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:49:41.462 [DEBUG] [Thread-127237] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:49:42.173 [DEBUG] [Thread-127239 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:49:48.501 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:49:48.503 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:49:57.286 [DEBUG] [Thread-127240 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:50:08.718 [DEBUG] [Thread-127241 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:50:11.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:50:11.487 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:50:11.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:50:12.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 49, 27), 27.36, 14.57, 0.0, 21.21, 16.41, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:50:12.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:49:27
2025-11-04T02:50:12.313 [DEBUG] [Thread-127242 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:50:12.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:50:12.559 [DEBUG] [Thread-127243] [transport.py] [_log()] starting thread (client mode): 0x117bcc40
2025-11-04T02:50:12.560 [DEBUG] [Thread-127243] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:50:12.570 [DEBUG] [Thread-127243] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:50:12.571 [INFO] [Thread-127243] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:50:12.576 [DEBUG] [Thread-127243] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:50:12.577 [DEBUG] [Thread-127243] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:50:12.577 [DEBUG] [Thread-127243] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:50:12.577 [DEBUG] [Thread-127243] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:50:12.577 [DEBUG] [Thread-127243] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:50:12.577 [DEBUG] [Thread-127243] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:50:12.577 [DEBUG] [Thread-127243] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:50:12.577 [DEBUG] [Thread-127243] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:50:12.577 [DEBUG] [Thread-127243] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:50:12.577 [DEBUG] [Thread-127243] [transport.py] [_log()] client lang: <none>
2025-11-04T02:50:12.577 [DEBUG] [Thread-127243] [transport.py] [_log()] server lang: <none>
2025-11-04T02:50:12.577 [DEBUG] [Thread-127243] [transport.py] [_log()] kex follows: False
2025-11-04T02:50:12.577 [DEBUG] [Thread-127243] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:50:12.578 [DEBUG] [Thread-127243] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:50:12.578 [DEBUG] [Thread-127243] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:50:12.578 [DEBUG] [Thread-127243] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:50:12.578 [DEBUG] [Thread-127243] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:50:12.578 [DEBUG] [Thread-127243] [transport.py] [_log()] Compression: none
2025-11-04T02:50:12.578 [DEBUG] [Thread-127243] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:50:12.615 [DEBUG] [Thread-127243] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:50:12.620 [DEBUG] [Thread-127243] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:50:12.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:50:12.626 [DEBUG] [Thread-127243] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:50:12.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:50:12.629 [DEBUG] [Thread-127243] [transport.py] [_log()] userauth is OK
2025-11-04T02:50:12.629 [DEBUG] [Thread-127243] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:50:12.629 [DEBUG] [Thread-127243] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:50:12.629 [DEBUG] [Thread-127243] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:50:12.629 [DEBUG] [Thread-127243] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:50:12.656 [INFO] [Thread-127243] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:50:12.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:50:13.932 [DEBUG] [Thread-127243] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:50:13.932 [DEBUG] [Thread-127243] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:50:13.942 [DEBUG] [Thread-127243] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:50:13.974 [DEBUG] [Thread-127243] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:50:13.974 [DEBUG] [Thread-127243] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:50:13.980 [DEBUG] [Thread-127243] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:50:13.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:50:13.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:50:13.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:50:13.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:50:14.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:50:14.092 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:50:14.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:50:14.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:50:14.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:50:14.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.034472 -999.00  +16.50  19.07     19   -7.00 1 1 1 1 1     0    0 24.24 22.11 ZNESW 16.4 19.1 303.8 23.4 16.7 -23.6 16.6 -22.8 16.3 -22.6 16.6 -23.4
2025-11-04T02:50:14.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:50:14.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:50:14.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.034472
2025-11-04T02:50:14.099 [DEBUG] [Thread-127243] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:50:14.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:50:14.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:50:14.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:50:14.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:50:14.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:50:14.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:49:27', tmtdew=27.36, humidity=14.57, cloud=0.0, wind=21.21, temperature=16.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:50:00', seeing=1.09, atlas_timestamp='2025-11-04T00:49:38.381', atlas_cloud=1, atlas_rain=1, zp_data=[0.0467499999999994, 0.09825000000000017, 0.11025000000000063, 0.1745000000000001, 0.05150000000000077, 0.11775000000000091, 0.07149999999999856, 0.03825000000000145, 0.09949999999999903, 0.10849999999999937, 0.14724999999999966, 0.09399999999999942, 0.2129999999999992, 0.08924999999999983, 0.0909999999999993, 0.0024999999999995026, 0.08825000000000038, 0.1385000000000005, 0.19299999999999962, 0.10224999999999973, 0.16699999999999804, 0.16174999999999784, 0.08425000000000082, 0.09924999999999962, 0.13649999999999984, 0.2524999999999995, 0.10324999999999918, 0.30900000000000016, 0.23850000000000016, -1.0959999999999983, 0.1255000000000006, 0.13400000000000034, 0.19374999999999964], zp_timestamp='2025-11-04T00:48:00')
2025-11-04T02:50:14.188 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:50:14.200 [DEBUG] [Thread-127246] [transport.py] [_log()] starting thread (client mode): 0xed213c0
2025-11-04T02:50:14.200 [DEBUG] [Thread-127246] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:50:14.215 [DEBUG] [Thread-127246] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:50:14.215 [INFO] [Thread-127246] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:50:14.223 [DEBUG] [Thread-127246] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:50:14.223 [DEBUG] [Thread-127246] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:50:14.223 [DEBUG] [Thread-127246] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:50:14.223 [DEBUG] [Thread-127246] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:50:14.223 [DEBUG] [Thread-127246] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:50:14.223 [DEBUG] [Thread-127246] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:50:14.223 [DEBUG] [Thread-127246] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:50:14.223 [DEBUG] [Thread-127246] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:50:14.223 [DEBUG] [Thread-127246] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:50:14.223 [DEBUG] [Thread-127246] [transport.py] [_log()] client lang: <none>
2025-11-04T02:50:14.223 [DEBUG] [Thread-127246] [transport.py] [_log()] server lang: <none>
2025-11-04T02:50:14.223 [DEBUG] [Thread-127246] [transport.py] [_log()] kex follows: False
2025-11-04T02:50:14.223 [DEBUG] [Thread-127246] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:50:14.223 [DEBUG] [Thread-127246] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:50:14.223 [DEBUG] [Thread-127246] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:50:14.224 [DEBUG] [Thread-127246] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:50:14.224 [DEBUG] [Thread-127246] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:50:14.224 [DEBUG] [Thread-127246] [transport.py] [_log()] Compression: none
2025-11-04T02:50:14.226 [DEBUG] [Thread-127246] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:50:14.286 [DEBUG] [Thread-127246] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:50:14.286 [DEBUG] [Thread-127246] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:50:14.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:50:14.288 [DEBUG] [Thread-127246] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:50:14.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:50:14.347 [DEBUG] [Thread-127246] [transport.py] [_log()] userauth is OK
2025-11-04T02:50:14.347 [DEBUG] [Thread-127246] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:50:14.347 [DEBUG] [Thread-127246] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:50:14.347 [DEBUG] [Thread-127246] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:50:14.347 [DEBUG] [Thread-127246] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:50:14.366 [INFO] [Thread-127246] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:50:14.367 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:50:14.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:50:15.238 [DEBUG] [Thread-127246] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:50:15.238 [DEBUG] [Thread-127246] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:50:15.280 [DEBUG] [Thread-127246] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:50:15.280 [DEBUG] [Thread-127246] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:50:15.291 [DEBUG] [Thread-127246] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:50:15.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:50:15.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:50:15.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:50:15.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:50:15.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:50:15.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:50:15.332 [DEBUG] [Thread-127246] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:50:27.364 [DEBUG] [Thread-127248 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:50:42.435 [DEBUG] [Thread-127249 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:50:45.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:50:45.341 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:50:45.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:50:45.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 50, 33), 27.54, 13.87, 0.0, 22.5, 16.48, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:50:45.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:50:33
2025-11-04T02:50:46.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:50:46.322 [DEBUG] [Thread-127250] [transport.py] [_log()] starting thread (client mode): 0x117bcc40
2025-11-04T02:50:46.322 [DEBUG] [Thread-127250] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:50:46.343 [DEBUG] [Thread-127250] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:50:46.343 [INFO] [Thread-127250] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:50:46.346 [DEBUG] [Thread-127250] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:50:46.346 [DEBUG] [Thread-127250] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:50:46.346 [DEBUG] [Thread-127250] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:50:46.346 [DEBUG] [Thread-127250] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:50:46.346 [DEBUG] [Thread-127250] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:50:46.346 [DEBUG] [Thread-127250] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:50:46.346 [DEBUG] [Thread-127250] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:50:46.346 [DEBUG] [Thread-127250] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:50:46.346 [DEBUG] [Thread-127250] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:50:46.346 [DEBUG] [Thread-127250] [transport.py] [_log()] client lang: <none>
2025-11-04T02:50:46.346 [DEBUG] [Thread-127250] [transport.py] [_log()] server lang: <none>
2025-11-04T02:50:46.346 [DEBUG] [Thread-127250] [transport.py] [_log()] kex follows: False
2025-11-04T02:50:46.346 [DEBUG] [Thread-127250] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:50:46.346 [DEBUG] [Thread-127250] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:50:46.346 [DEBUG] [Thread-127250] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:50:46.346 [DEBUG] [Thread-127250] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:50:46.346 [DEBUG] [Thread-127250] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:50:46.347 [DEBUG] [Thread-127250] [transport.py] [_log()] Compression: none
2025-11-04T02:50:46.347 [DEBUG] [Thread-127250] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:50:46.362 [DEBUG] [Thread-127250] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:50:46.362 [DEBUG] [Thread-127250] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:50:46.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:50:46.363 [DEBUG] [Thread-127250] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:50:46.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:50:46.363 [DEBUG] [Thread-127250] [transport.py] [_log()] userauth is OK
2025-11-04T02:50:46.363 [DEBUG] [Thread-127250] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:50:46.363 [DEBUG] [Thread-127250] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:50:46.363 [DEBUG] [Thread-127250] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:50:46.363 [DEBUG] [Thread-127250] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:50:46.390 [INFO] [Thread-127250] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:50:46.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:50:47.032 [DEBUG] [Thread-127250] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:50:47.032 [DEBUG] [Thread-127250] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:50:47.033 [DEBUG] [Thread-127250] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:50:47.072 [DEBUG] [Thread-127250] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:50:47.073 [DEBUG] [Thread-127250] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:50:47.075 [DEBUG] [Thread-127250] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:50:47.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:50:47.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:50:47.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:50:47.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:50:47.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:50:47.093 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:50:47.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:50:47.093 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:50:47.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:50:47.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.034819 -999.00  +16.50  21.85     19   -7.00 1 1 1 1 1     0    0 24.06 20.44 ZNESW 16.0 21.9 306.4 24.7 16.7 -23.9 16.6 -22.9 16.4 -22.5 16.6 -23.4
2025-11-04T02:50:47.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:50:47.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:50:47.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.034819
2025-11-04T02:50:47.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:50:47.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:50:47.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:50:47.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:50:47.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:50:47.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:50:33', tmtdew=27.54, humidity=13.87, cloud=0.0, wind=22.5, temperature=16.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:50:33', seeing=1.09, atlas_timestamp='2025-11-04T00:50:08.362', atlas_cloud=1, atlas_rain=1, zp_data=[0.0467499999999994, 0.09825000000000017, 0.11025000000000063, 0.1745000000000001, 0.05150000000000077, 0.11775000000000091, 0.07149999999999856, 0.03825000000000145, 0.09949999999999903, 0.10849999999999937, 0.14724999999999966, 0.09399999999999942, 0.2129999999999992, 0.08924999999999983, 0.0909999999999993, 0.0024999999999995026, 0.08825000000000038, 0.1385000000000005, 0.19299999999999962, 0.10224999999999973, 0.16699999999999804, 0.16174999999999784, 0.08425000000000082, 0.09924999999999962, 0.13649999999999984, 0.2524999999999995, 0.10324999999999918, 0.30900000000000016, 0.23850000000000016, -1.0959999999999983, 0.1255000000000006, 0.13400000000000034, 0.19374999999999964], zp_timestamp='2025-11-04T00:48:00')
2025-11-04T02:50:47.095 [DEBUG] [Thread-127250] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:50:47.170 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:50:47.184 [DEBUG] [Thread-127253] [transport.py] [_log()] starting thread (client mode): 0xedc4850
2025-11-04T02:50:47.184 [DEBUG] [Thread-127253] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:50:47.201 [DEBUG] [Thread-127253] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:50:47.201 [INFO] [Thread-127253] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:50:47.214 [DEBUG] [Thread-127253] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:50:47.214 [DEBUG] [Thread-127253] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:50:47.214 [DEBUG] [Thread-127253] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:50:47.214 [DEBUG] [Thread-127253] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:50:47.214 [DEBUG] [Thread-127253] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:50:47.214 [DEBUG] [Thread-127253] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:50:47.214 [DEBUG] [Thread-127253] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:50:47.214 [DEBUG] [Thread-127253] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:50:47.214 [DEBUG] [Thread-127253] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:50:47.214 [DEBUG] [Thread-127253] [transport.py] [_log()] client lang: <none>
2025-11-04T02:50:47.215 [DEBUG] [Thread-127253] [transport.py] [_log()] server lang: <none>
2025-11-04T02:50:47.215 [DEBUG] [Thread-127253] [transport.py] [_log()] kex follows: False
2025-11-04T02:50:47.215 [DEBUG] [Thread-127253] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:50:47.215 [DEBUG] [Thread-127253] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:50:47.215 [DEBUG] [Thread-127253] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:50:47.215 [DEBUG] [Thread-127253] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:50:47.215 [DEBUG] [Thread-127253] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:50:47.215 [DEBUG] [Thread-127253] [transport.py] [_log()] Compression: none
2025-11-04T02:50:47.215 [DEBUG] [Thread-127253] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:50:47.270 [DEBUG] [Thread-127253] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:50:47.271 [DEBUG] [Thread-127253] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:50:47.271 [DEBUG] [Thread-127253] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:50:47.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:50:47.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:50:47.328 [DEBUG] [Thread-127253] [transport.py] [_log()] userauth is OK
2025-11-04T02:50:47.328 [DEBUG] [Thread-127253] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:50:47.328 [DEBUG] [Thread-127253] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:50:47.328 [DEBUG] [Thread-127253] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:50:47.328 [DEBUG] [Thread-127253] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:50:47.342 [INFO] [Thread-127253] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:50:47.343 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:50:47.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:50:48.188 [DEBUG] [Thread-127253] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:50:48.188 [DEBUG] [Thread-127253] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:50:48.235 [DEBUG] [Thread-127253] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:50:48.235 [DEBUG] [Thread-127253] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:50:48.244 [DEBUG] [Thread-127253] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:50:48.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:50:48.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:50:48.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:50:48.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:50:48.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:50:48.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:50:48.277 [DEBUG] [Thread-127253] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:50:48.716 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:50:48.717 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:50:57.472 [DEBUG] [Thread-127255 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:51:09.026 [DEBUG] [Thread-127256 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:51:12.598 [DEBUG] [Thread-127257 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:51:18.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:51:18.284 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:51:18.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:51:19.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 51, 6), 27.56, 13.86, 0.0, 21.76, 16.46, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:51:19.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:51:06
2025-11-04T02:51:19.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:51:19.498 [DEBUG] [Thread-127258] [transport.py] [_log()] starting thread (client mode): 0xedc7490
2025-11-04T02:51:19.499 [DEBUG] [Thread-127258] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:51:19.511 [DEBUG] [Thread-127258] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:51:19.511 [INFO] [Thread-127258] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:51:19.517 [DEBUG] [Thread-127258] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:51:19.517 [DEBUG] [Thread-127258] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:51:19.517 [DEBUG] [Thread-127258] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:51:19.517 [DEBUG] [Thread-127258] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:51:19.517 [DEBUG] [Thread-127258] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:51:19.517 [DEBUG] [Thread-127258] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:51:19.517 [DEBUG] [Thread-127258] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:51:19.517 [DEBUG] [Thread-127258] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:51:19.518 [DEBUG] [Thread-127258] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:51:19.518 [DEBUG] [Thread-127258] [transport.py] [_log()] client lang: <none>
2025-11-04T02:51:19.518 [DEBUG] [Thread-127258] [transport.py] [_log()] server lang: <none>
2025-11-04T02:51:19.518 [DEBUG] [Thread-127258] [transport.py] [_log()] kex follows: False
2025-11-04T02:51:19.518 [DEBUG] [Thread-127258] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:51:19.519 [DEBUG] [Thread-127258] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:51:19.519 [DEBUG] [Thread-127258] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:51:19.519 [DEBUG] [Thread-127258] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:51:19.519 [DEBUG] [Thread-127258] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:51:19.519 [DEBUG] [Thread-127258] [transport.py] [_log()] Compression: none
2025-11-04T02:51:19.519 [DEBUG] [Thread-127258] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:51:19.569 [DEBUG] [Thread-127258] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:51:19.573 [DEBUG] [Thread-127258] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:51:19.575 [DEBUG] [Thread-127258] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:51:19.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:51:19.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:51:19.580 [DEBUG] [Thread-127258] [transport.py] [_log()] userauth is OK
2025-11-04T02:51:19.581 [DEBUG] [Thread-127258] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:51:19.581 [DEBUG] [Thread-127258] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:51:19.581 [DEBUG] [Thread-127258] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:51:19.581 [DEBUG] [Thread-127258] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:51:19.619 [INFO] [Thread-127258] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:51:19.623 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:51:20.207 [DEBUG] [Thread-127258] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:51:20.207 [DEBUG] [Thread-127258] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:51:20.218 [DEBUG] [Thread-127258] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:51:20.248 [DEBUG] [Thread-127258] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:51:20.249 [DEBUG] [Thread-127258] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:51:20.251 [DEBUG] [Thread-127258] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:51:20.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:51:20.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:51:20.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:51:20.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:51:20.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:51:20.272 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:51:20.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:51:20.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:51:20.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:51:20.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.035166 -999.00  +16.50  18.15     19   -6.90 1 1 1 1 1     0    0 24.14 20.08 ZNESW 19.0 18.1 313.2 25.8 16.7 -23.9 16.6 -22.9 16.4 -22.6 16.6 -23.5
2025-11-04T02:51:20.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:51:20.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:51:20.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.035166
2025-11-04T02:51:20.281 [DEBUG] [Thread-127258] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:51:20.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:51:20.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:51:20.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:51:20.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:51:20.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:51:20.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:51:06', tmtdew=27.56, humidity=13.86, cloud=0.0, wind=21.76, temperature=16.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:51:06', seeing=1.13, atlas_timestamp='2025-11-04T00:50:38.342', atlas_cloud=1, atlas_rain=1, zp_data=[0.0467499999999994, 0.09825000000000017, 0.11025000000000063, 0.1745000000000001, 0.05150000000000077, 0.11775000000000091, 0.07149999999999856, 0.03825000000000145, 0.09949999999999903, 0.10849999999999937, 0.14724999999999966, 0.09399999999999942, 0.2129999999999992, 0.08924999999999983, 0.0909999999999993, 0.0024999999999995026, 0.08825000000000038, 0.1385000000000005, 0.19299999999999962, 0.10224999999999973, 0.16699999999999804, 0.16174999999999784, 0.08425000000000082, 0.09924999999999962, 0.13649999999999984, 0.2524999999999995, 0.10324999999999918, 0.30900000000000016, 0.23850000000000016, -1.0959999999999983, 0.1255000000000006, 0.13400000000000034, 0.19374999999999964], zp_timestamp='2025-11-04T00:48:00')
2025-11-04T02:51:20.386 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:51:20.399 [DEBUG] [Thread-127261] [transport.py] [_log()] starting thread (client mode): 0xed04550
2025-11-04T02:51:20.399 [DEBUG] [Thread-127261] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:51:20.415 [DEBUG] [Thread-127261] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:51:20.416 [INFO] [Thread-127261] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:51:20.423 [DEBUG] [Thread-127261] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:51:20.424 [DEBUG] [Thread-127261] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:51:20.424 [DEBUG] [Thread-127261] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:51:20.424 [DEBUG] [Thread-127261] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:51:20.424 [DEBUG] [Thread-127261] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:51:20.424 [DEBUG] [Thread-127261] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:51:20.424 [DEBUG] [Thread-127261] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:51:20.424 [DEBUG] [Thread-127261] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:51:20.424 [DEBUG] [Thread-127261] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:51:20.424 [DEBUG] [Thread-127261] [transport.py] [_log()] client lang: <none>
2025-11-04T02:51:20.424 [DEBUG] [Thread-127261] [transport.py] [_log()] server lang: <none>
2025-11-04T02:51:20.424 [DEBUG] [Thread-127261] [transport.py] [_log()] kex follows: False
2025-11-04T02:51:20.424 [DEBUG] [Thread-127261] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:51:20.424 [DEBUG] [Thread-127261] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:51:20.424 [DEBUG] [Thread-127261] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:51:20.425 [DEBUG] [Thread-127261] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:51:20.425 [DEBUG] [Thread-127261] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:51:20.425 [DEBUG] [Thread-127261] [transport.py] [_log()] Compression: none
2025-11-04T02:51:20.425 [DEBUG] [Thread-127261] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:51:20.489 [DEBUG] [Thread-127261] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:51:20.490 [DEBUG] [Thread-127261] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:51:20.490 [DEBUG] [Thread-127261] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:51:20.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:51:20.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:51:20.548 [DEBUG] [Thread-127261] [transport.py] [_log()] userauth is OK
2025-11-04T02:51:20.549 [DEBUG] [Thread-127261] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:51:20.549 [DEBUG] [Thread-127261] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:51:20.549 [DEBUG] [Thread-127261] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:51:20.549 [DEBUG] [Thread-127261] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:51:20.568 [INFO] [Thread-127261] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:51:20.569 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:51:20.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:51:21.386 [DEBUG] [Thread-127261] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:51:21.386 [DEBUG] [Thread-127261] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:51:21.433 [DEBUG] [Thread-127261] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:51:21.434 [DEBUG] [Thread-127261] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:51:21.444 [DEBUG] [Thread-127261] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:51:21.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:51:21.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:51:21.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:51:21.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:51:21.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:51:21.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:51:21.493 [DEBUG] [Thread-127261] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:51:27.628 [DEBUG] [Thread-127263 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:51:42.723 [DEBUG] [Thread-127264 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:51:48.929 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:51:48.930 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:51:51.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:51:51.515 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:51:51.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:51:52.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 51, 38), 27.56, 13.86, 0.0, 19.96, 16.51, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:51:52.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:51:38
2025-11-04T02:51:52.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:51:52.610 [DEBUG] [Thread-127265] [transport.py] [_log()] starting thread (client mode): 0xedc7ca0
2025-11-04T02:51:52.611 [DEBUG] [Thread-127265] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:51:52.625 [DEBUG] [Thread-127265] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:51:52.625 [INFO] [Thread-127265] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:51:52.629 [DEBUG] [Thread-127265] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:51:52.629 [DEBUG] [Thread-127265] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:51:52.630 [DEBUG] [Thread-127265] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:51:52.630 [DEBUG] [Thread-127265] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:51:52.630 [DEBUG] [Thread-127265] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:51:52.630 [DEBUG] [Thread-127265] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:51:52.630 [DEBUG] [Thread-127265] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:51:52.630 [DEBUG] [Thread-127265] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:51:52.630 [DEBUG] [Thread-127265] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:51:52.630 [DEBUG] [Thread-127265] [transport.py] [_log()] client lang: <none>
2025-11-04T02:51:52.630 [DEBUG] [Thread-127265] [transport.py] [_log()] server lang: <none>
2025-11-04T02:51:52.630 [DEBUG] [Thread-127265] [transport.py] [_log()] kex follows: False
2025-11-04T02:51:52.630 [DEBUG] [Thread-127265] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:51:52.631 [DEBUG] [Thread-127265] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:51:52.631 [DEBUG] [Thread-127265] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:51:52.631 [DEBUG] [Thread-127265] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:51:52.632 [DEBUG] [Thread-127265] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:51:52.632 [DEBUG] [Thread-127265] [transport.py] [_log()] Compression: none
2025-11-04T02:51:52.632 [DEBUG] [Thread-127265] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:51:52.655 [DEBUG] [Thread-127265] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:51:52.656 [DEBUG] [Thread-127265] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:51:52.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:51:52.657 [DEBUG] [Thread-127265] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:51:52.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:51:52.659 [DEBUG] [Thread-127265] [transport.py] [_log()] userauth is OK
2025-11-04T02:51:52.659 [DEBUG] [Thread-127265] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:51:52.660 [DEBUG] [Thread-127265] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:51:52.660 [DEBUG] [Thread-127265] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:51:52.660 [DEBUG] [Thread-127265] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:51:52.684 [INFO] [Thread-127265] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:51:52.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:51:53.323 [DEBUG] [Thread-127265] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:51:53.323 [DEBUG] [Thread-127265] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:51:53.323 [DEBUG] [Thread-127265] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:51:53.363 [DEBUG] [Thread-127265] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:51:53.363 [DEBUG] [Thread-127265] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:51:53.365 [DEBUG] [Thread-127265] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:51:53.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:51:53.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:51:53.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:51:53.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:51:53.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:51:53.382 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:51:53.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:51:53.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:51:53.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:51:53.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.035861 -999.00  +16.50  19.38     19   -6.90 1 1 1 1 1     0    0 23.41 17.69 ZNESW 21.1 19.4 310.2 22.2 16.7 -23.7 16.6 -22.9 16.4 -22.5 16.6 -23.5
2025-11-04T02:51:53.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:51:53.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:51:53.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.035861
2025-11-04T02:51:53.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:51:53.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:51:53.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:51:53.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:51:53.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:51:53.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:51:38', tmtdew=27.56, humidity=13.86, cloud=0.0, wind=19.96, temperature=16.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:51:39', seeing=1.13, atlas_timestamp='2025-11-04T00:51:38.390', atlas_cloud=1, atlas_rain=1, zp_data=[0.0467499999999994, 0.09825000000000017, 0.11025000000000063, 0.1745000000000001, 0.05150000000000077, 0.11775000000000091, 0.07149999999999856, 0.03825000000000145, 0.09949999999999903, 0.10849999999999937, 0.14724999999999966, 0.09399999999999942, 0.2129999999999992, 0.08924999999999983, 0.0909999999999993, 0.0024999999999995026, 0.08825000000000038, 0.1385000000000005, 0.19299999999999962, 0.10224999999999973, 0.16699999999999804, 0.16174999999999784, 0.08425000000000082, 0.09924999999999962, 0.13649999999999984, 0.2524999999999995, 0.10324999999999918, 0.30900000000000016, 0.23850000000000016, -1.0959999999999983, 0.1255000000000006, 0.13400000000000034, 0.19374999999999964], zp_timestamp='2025-11-04T00:48:00')
2025-11-04T02:51:53.385 [DEBUG] [Thread-127265] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:51:53.459 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:51:53.472 [DEBUG] [Thread-127268] [transport.py] [_log()] starting thread (client mode): 0xed23be0
2025-11-04T02:51:53.472 [DEBUG] [Thread-127268] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:51:53.487 [DEBUG] [Thread-127268] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:51:53.487 [INFO] [Thread-127268] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:51:53.495 [DEBUG] [Thread-127268] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:51:53.496 [DEBUG] [Thread-127268] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:51:53.496 [DEBUG] [Thread-127268] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:51:53.496 [DEBUG] [Thread-127268] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:51:53.496 [DEBUG] [Thread-127268] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:51:53.496 [DEBUG] [Thread-127268] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:51:53.496 [DEBUG] [Thread-127268] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:51:53.496 [DEBUG] [Thread-127268] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:51:53.496 [DEBUG] [Thread-127268] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:51:53.496 [DEBUG] [Thread-127268] [transport.py] [_log()] client lang: <none>
2025-11-04T02:51:53.496 [DEBUG] [Thread-127268] [transport.py] [_log()] server lang: <none>
2025-11-04T02:51:53.496 [DEBUG] [Thread-127268] [transport.py] [_log()] kex follows: False
2025-11-04T02:51:53.496 [DEBUG] [Thread-127268] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:51:53.496 [DEBUG] [Thread-127268] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:51:53.496 [DEBUG] [Thread-127268] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:51:53.497 [DEBUG] [Thread-127268] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:51:53.497 [DEBUG] [Thread-127268] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:51:53.497 [DEBUG] [Thread-127268] [transport.py] [_log()] Compression: none
2025-11-04T02:51:53.497 [DEBUG] [Thread-127268] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:51:53.552 [DEBUG] [Thread-127268] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:51:53.553 [DEBUG] [Thread-127268] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:51:53.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:51:53.554 [DEBUG] [Thread-127268] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:51:53.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:51:53.608 [DEBUG] [Thread-127268] [transport.py] [_log()] userauth is OK
2025-11-04T02:51:53.609 [DEBUG] [Thread-127268] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:51:53.609 [DEBUG] [Thread-127268] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:51:53.609 [DEBUG] [Thread-127268] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:51:53.609 [DEBUG] [Thread-127268] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:51:53.628 [INFO] [Thread-127268] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:51:53.628 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:51:53.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:51:54.483 [DEBUG] [Thread-127268] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:51:54.483 [DEBUG] [Thread-127268] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:51:54.522 [DEBUG] [Thread-127268] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:51:54.522 [DEBUG] [Thread-127268] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:51:54.531 [DEBUG] [Thread-127268] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:51:54.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:51:54.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:51:54.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:51:54.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:51:54.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:51:54.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:51:54.570 [DEBUG] [Thread-127268] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:51:57.757 [DEBUG] [Thread-127270 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:52:09.350 [DEBUG] [Thread-127271 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:52:12.826 [DEBUG] [Thread-127272 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:52:24.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:52:24.577 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:52:24.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:52:25.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 52, 11), 27.56, 13.86, 0.0, 19.96, 16.51, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:52:25.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:52:11
2025-11-04T02:52:25.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:52:25.880 [DEBUG] [Thread-127273] [transport.py] [_log()] starting thread (client mode): 0xed355a0
2025-11-04T02:52:25.881 [DEBUG] [Thread-127273] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:52:25.892 [DEBUG] [Thread-127273] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:52:25.892 [INFO] [Thread-127273] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:52:25.897 [DEBUG] [Thread-127273] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:52:25.898 [DEBUG] [Thread-127273] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:52:25.898 [DEBUG] [Thread-127273] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:52:25.898 [DEBUG] [Thread-127273] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:52:25.898 [DEBUG] [Thread-127273] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:52:25.898 [DEBUG] [Thread-127273] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:52:25.898 [DEBUG] [Thread-127273] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:52:25.898 [DEBUG] [Thread-127273] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:52:25.898 [DEBUG] [Thread-127273] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:52:25.899 [DEBUG] [Thread-127273] [transport.py] [_log()] client lang: <none>
2025-11-04T02:52:25.899 [DEBUG] [Thread-127273] [transport.py] [_log()] server lang: <none>
2025-11-04T02:52:25.899 [DEBUG] [Thread-127273] [transport.py] [_log()] kex follows: False
2025-11-04T02:52:25.899 [DEBUG] [Thread-127273] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:52:25.900 [DEBUG] [Thread-127273] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:52:25.900 [DEBUG] [Thread-127273] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:52:25.900 [DEBUG] [Thread-127273] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:52:25.901 [DEBUG] [Thread-127273] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:52:25.901 [DEBUG] [Thread-127273] [transport.py] [_log()] Compression: none
2025-11-04T02:52:25.901 [DEBUG] [Thread-127273] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:52:25.937 [DEBUG] [Thread-127273] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:52:25.941 [DEBUG] [Thread-127273] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:52:25.943 [DEBUG] [Thread-127273] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:52:25.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:52:25.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:52:25.949 [DEBUG] [Thread-127273] [transport.py] [_log()] userauth is OK
2025-11-04T02:52:25.949 [DEBUG] [Thread-127273] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:52:25.949 [DEBUG] [Thread-127273] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:52:25.949 [DEBUG] [Thread-127273] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:52:25.949 [DEBUG] [Thread-127273] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:52:25.977 [INFO] [Thread-127273] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:52:25.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:52:26.541 [DEBUG] [Thread-127273] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:52:26.541 [DEBUG] [Thread-127273] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:52:26.544 [DEBUG] [Thread-127273] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:52:26.582 [DEBUG] [Thread-127273] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:52:26.583 [DEBUG] [Thread-127273] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:52:26.586 [DEBUG] [Thread-127273] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:52:26.602 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:52:26.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:52:26.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:52:26.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:52:26.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:52:26.617 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:52:26.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:52:26.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:52:26.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:52:26.619 [DEBUG] [Thread-127273] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:52:26.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.036208 -999.00  +16.50  16.16     19   -6.90 1 1 1 1 1     0    0 24.28 20.16 ZNESW 17.5 16.2 311.6 26.5 16.7 -23.9 16.6 -23.0 16.4 -22.6 16.7 -23.7
2025-11-04T02:52:26.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:52:26.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:52:26.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.036208
2025-11-04T02:52:26.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:52:26.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:52:26.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:52:26.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:52:26.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:52:26.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:52:11', tmtdew=27.56, humidity=13.86, cloud=0.0, wind=19.96, temperature=16.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:52:12', seeing=0.92, atlas_timestamp='2025-11-04T00:52:08.371', atlas_cloud=1, atlas_rain=1, zp_data=[0.0467499999999994, 0.09825000000000017, 0.11025000000000063, 0.1745000000000001, 0.05150000000000077, 0.11775000000000091, 0.07149999999999856, 0.03825000000000145, 0.09949999999999903, 0.10849999999999937, 0.14724999999999966, 0.09399999999999942, 0.2129999999999992, 0.08924999999999983, 0.0909999999999993, 0.0024999999999995026, 0.08825000000000038, 0.1385000000000005, 0.19299999999999962, 0.10224999999999973, 0.16699999999999804, 0.16174999999999784, 0.08425000000000082, 0.09924999999999962, 0.13649999999999984, 0.2524999999999995, 0.10324999999999918, 0.30900000000000016, 0.23850000000000016, -1.0959999999999983, 0.1255000000000006, 0.13400000000000034, 0.19374999999999964], zp_timestamp='2025-11-04T00:48:00')
2025-11-04T02:52:26.732 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:52:26.747 [DEBUG] [Thread-127276] [transport.py] [_log()] starting thread (client mode): 0xed37250
2025-11-04T02:52:26.747 [DEBUG] [Thread-127276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:52:26.768 [DEBUG] [Thread-127276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:52:26.769 [INFO] [Thread-127276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:52:26.777 [DEBUG] [Thread-127276] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:52:26.777 [DEBUG] [Thread-127276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:52:26.777 [DEBUG] [Thread-127276] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:52:26.777 [DEBUG] [Thread-127276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:52:26.777 [DEBUG] [Thread-127276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:52:26.777 [DEBUG] [Thread-127276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:52:26.777 [DEBUG] [Thread-127276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:52:26.778 [DEBUG] [Thread-127276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:52:26.778 [DEBUG] [Thread-127276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:52:26.778 [DEBUG] [Thread-127276] [transport.py] [_log()] client lang: <none>
2025-11-04T02:52:26.778 [DEBUG] [Thread-127276] [transport.py] [_log()] server lang: <none>
2025-11-04T02:52:26.778 [DEBUG] [Thread-127276] [transport.py] [_log()] kex follows: False
2025-11-04T02:52:26.778 [DEBUG] [Thread-127276] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:52:26.778 [DEBUG] [Thread-127276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:52:26.778 [DEBUG] [Thread-127276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:52:26.778 [DEBUG] [Thread-127276] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:52:26.778 [DEBUG] [Thread-127276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:52:26.778 [DEBUG] [Thread-127276] [transport.py] [_log()] Compression: none
2025-11-04T02:52:26.778 [DEBUG] [Thread-127276] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:52:26.837 [DEBUG] [Thread-127276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:52:26.838 [DEBUG] [Thread-127276] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:52:26.839 [DEBUG] [Thread-127276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:52:26.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:52:26.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:52:26.897 [DEBUG] [Thread-127276] [transport.py] [_log()] userauth is OK
2025-11-04T02:52:26.898 [DEBUG] [Thread-127276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:52:26.898 [DEBUG] [Thread-127276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:52:26.898 [DEBUG] [Thread-127276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:52:26.898 [DEBUG] [Thread-127276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:52:26.918 [INFO] [Thread-127276] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:52:26.919 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:52:26.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:52:27.842 [DEBUG] [Thread-127276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:52:27.842 [DEBUG] [Thread-127276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:52:27.881 [DEBUG] [Thread-127276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:52:27.881 [DEBUG] [Thread-127276] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:52:27.890 [DEBUG] [Thread-127276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:52:27.897 [DEBUG] [Thread-127278 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:52:27.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:52:27.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:52:27.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:52:27.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:52:27.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:52:27.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:52:27.927 [DEBUG] [Thread-127276] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:52:42.989 [DEBUG] [Thread-127279 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:52:49.134 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:52:49.135 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:52:57.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:52:57.953 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:52:57.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:52:58.014 [DEBUG] [Thread-127280 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:52:58.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 52, 43), 27.58, 14.34, 0.0, 17.01, 16.54, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:52:58.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:52:43
2025-11-04T02:52:58.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:52:59.063 [DEBUG] [Thread-127281] [transport.py] [_log()] starting thread (client mode): 0xed366e0
2025-11-04T02:52:59.064 [DEBUG] [Thread-127281] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:52:59.079 [DEBUG] [Thread-127281] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:52:59.079 [INFO] [Thread-127281] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:52:59.083 [DEBUG] [Thread-127281] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:52:59.083 [DEBUG] [Thread-127281] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:52:59.083 [DEBUG] [Thread-127281] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:52:59.083 [DEBUG] [Thread-127281] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:52:59.083 [DEBUG] [Thread-127281] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:52:59.083 [DEBUG] [Thread-127281] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:52:59.083 [DEBUG] [Thread-127281] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:52:59.083 [DEBUG] [Thread-127281] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:52:59.084 [DEBUG] [Thread-127281] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:52:59.084 [DEBUG] [Thread-127281] [transport.py] [_log()] client lang: <none>
2025-11-04T02:52:59.084 [DEBUG] [Thread-127281] [transport.py] [_log()] server lang: <none>
2025-11-04T02:52:59.084 [DEBUG] [Thread-127281] [transport.py] [_log()] kex follows: False
2025-11-04T02:52:59.084 [DEBUG] [Thread-127281] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:52:59.085 [DEBUG] [Thread-127281] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:52:59.085 [DEBUG] [Thread-127281] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:52:59.085 [DEBUG] [Thread-127281] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:52:59.085 [DEBUG] [Thread-127281] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:52:59.085 [DEBUG] [Thread-127281] [transport.py] [_log()] Compression: none
2025-11-04T02:52:59.085 [DEBUG] [Thread-127281] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:52:59.113 [DEBUG] [Thread-127281] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:52:59.115 [DEBUG] [Thread-127281] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:52:59.116 [DEBUG] [Thread-127281] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:52:59.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:52:59.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:52:59.119 [DEBUG] [Thread-127281] [transport.py] [_log()] userauth is OK
2025-11-04T02:52:59.120 [DEBUG] [Thread-127281] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:52:59.120 [DEBUG] [Thread-127281] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:52:59.120 [DEBUG] [Thread-127281] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:52:59.120 [DEBUG] [Thread-127281] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:52:59.156 [INFO] [Thread-127281] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:52:59.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:52:59.793 [DEBUG] [Thread-127281] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:52:59.793 [DEBUG] [Thread-127281] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:52:59.794 [DEBUG] [Thread-127281] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:52:59.834 [DEBUG] [Thread-127281] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:52:59.835 [DEBUG] [Thread-127281] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:52:59.837 [DEBUG] [Thread-127281] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:52:59.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:52:59.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:52:59.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:52:59.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:52:59.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:52:59.859 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:52:59.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:52:59.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:52:59.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:52:59.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.036555 -999.00  +16.50  19.35     19   -6.90 1 1 1 1 1     0    0 24.27 17.96 ZNESW 16.6 19.4 311.4 25.5 16.7 -23.9 16.6 -22.9 16.4 -22.6 16.6 -23.6
2025-11-04T02:52:59.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:52:59.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:52:59.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.036555
2025-11-04T02:52:59.866 [DEBUG] [Thread-127281] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:52:59.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:52:59.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:52:59.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:52:59.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:52:59.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:52:59.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:52:43', tmtdew=27.58, humidity=14.34, cloud=0.0, wind=17.01, temperature=16.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:52:44', seeing=0.97, atlas_timestamp='2025-11-04T00:52:38.352', atlas_cloud=1, atlas_rain=1, zp_data=[0.03074999999999939, 0.04925000000000068, 0.08725000000000094, 0.06949999999999967, 0.03250000000000064, 0.07025000000000148, 0.046499999999999986, 0.05874999999999986, 0.07249999999999979, 0.05550000000000033, 0.11074999999999946, 0.0860000000000003, 0.2154999999999987, 0.04324999999999868, 0.0045000000000001705, -0.0045000000000001705, 0.07525000000000048, 0.125, 0.176499999999999, 0.1197499999999998, 0.22949999999999804, 0.1112499999999983, 0.09425000000000061, 0.0677500000000002, 0.10899999999999999, 0.27250000000000085, 0.09675000000000011, 0.2375000000000007, 0.27800000000000047, -0.16699999999999982, 0.1460000000000008, 0.14450000000000074, 0.1847499999999993], zp_timestamp='2025-11-04T00:51:00')
2025-11-04T02:52:59.948 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:52:59.961 [DEBUG] [Thread-127284] [transport.py] [_log()] starting thread (client mode): 0xedc7e20
2025-11-04T02:52:59.961 [DEBUG] [Thread-127284] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:52:59.981 [DEBUG] [Thread-127284] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:52:59.981 [INFO] [Thread-127284] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:52:59.990 [DEBUG] [Thread-127284] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:52:59.990 [DEBUG] [Thread-127284] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:52:59.990 [DEBUG] [Thread-127284] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:52:59.990 [DEBUG] [Thread-127284] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:52:59.990 [DEBUG] [Thread-127284] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:52:59.990 [DEBUG] [Thread-127284] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:52:59.990 [DEBUG] [Thread-127284] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:52:59.990 [DEBUG] [Thread-127284] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:52:59.990 [DEBUG] [Thread-127284] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:52:59.990 [DEBUG] [Thread-127284] [transport.py] [_log()] client lang: <none>
2025-11-04T02:52:59.990 [DEBUG] [Thread-127284] [transport.py] [_log()] server lang: <none>
2025-11-04T02:52:59.990 [DEBUG] [Thread-127284] [transport.py] [_log()] kex follows: False
2025-11-04T02:52:59.990 [DEBUG] [Thread-127284] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:52:59.990 [DEBUG] [Thread-127284] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:52:59.990 [DEBUG] [Thread-127284] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:52:59.990 [DEBUG] [Thread-127284] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:52:59.990 [DEBUG] [Thread-127284] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:52:59.990 [DEBUG] [Thread-127284] [transport.py] [_log()] Compression: none
2025-11-04T02:52:59.992 [DEBUG] [Thread-127284] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:53:00.049 [DEBUG] [Thread-127284] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:53:00.049 [DEBUG] [Thread-127284] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:53:00.049 [DEBUG] [Thread-127284] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:53:00.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:53:00.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:53:00.108 [DEBUG] [Thread-127284] [transport.py] [_log()] userauth is OK
2025-11-04T02:53:00.108 [DEBUG] [Thread-127284] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:53:00.108 [DEBUG] [Thread-127284] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:53:00.108 [DEBUG] [Thread-127284] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:53:00.108 [DEBUG] [Thread-127284] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:53:00.123 [INFO] [Thread-127284] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:53:00.123 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:53:00.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:53:00.956 [DEBUG] [Thread-127284] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:53:00.956 [DEBUG] [Thread-127284] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:53:01.004 [DEBUG] [Thread-127284] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:53:01.005 [DEBUG] [Thread-127284] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:53:01.014 [DEBUG] [Thread-127284] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:53:01.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:53:01.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:53:01.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:53:01.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:53:01.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:53:01.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:53:01.053 [DEBUG] [Thread-127284] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:53:09.736 [DEBUG] [Thread-127286 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:53:13.067 [DEBUG] [Thread-127287 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:53:28.200 [DEBUG] [Thread-127288 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:53:31.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:53:31.080 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:53:31.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:53:31.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 53, 16), 27.51, 14.41, 0.0, 17.5, 16.51, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:53:31.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:53:16
2025-11-04T02:53:31.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:53:32.048 [DEBUG] [Thread-127289] [transport.py] [_log()] starting thread (client mode): 0xed23d90
2025-11-04T02:53:32.049 [DEBUG] [Thread-127289] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:53:32.065 [DEBUG] [Thread-127289] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:53:32.065 [INFO] [Thread-127289] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:53:32.068 [DEBUG] [Thread-127289] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:53:32.068 [DEBUG] [Thread-127289] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:53:32.068 [DEBUG] [Thread-127289] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:53:32.068 [DEBUG] [Thread-127289] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:53:32.068 [DEBUG] [Thread-127289] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:53:32.068 [DEBUG] [Thread-127289] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:53:32.068 [DEBUG] [Thread-127289] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:53:32.068 [DEBUG] [Thread-127289] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:53:32.068 [DEBUG] [Thread-127289] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:53:32.068 [DEBUG] [Thread-127289] [transport.py] [_log()] client lang: <none>
2025-11-04T02:53:32.068 [DEBUG] [Thread-127289] [transport.py] [_log()] server lang: <none>
2025-11-04T02:53:32.068 [DEBUG] [Thread-127289] [transport.py] [_log()] kex follows: False
2025-11-04T02:53:32.068 [DEBUG] [Thread-127289] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:53:32.068 [DEBUG] [Thread-127289] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:53:32.068 [DEBUG] [Thread-127289] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:53:32.068 [DEBUG] [Thread-127289] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:53:32.068 [DEBUG] [Thread-127289] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:53:32.068 [DEBUG] [Thread-127289] [transport.py] [_log()] Compression: none
2025-11-04T02:53:32.068 [DEBUG] [Thread-127289] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:53:32.079 [DEBUG] [Thread-127289] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:53:32.080 [DEBUG] [Thread-127289] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:53:32.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:53:32.081 [DEBUG] [Thread-127289] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:53:32.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:53:32.082 [DEBUG] [Thread-127289] [transport.py] [_log()] userauth is OK
2025-11-04T02:53:32.082 [DEBUG] [Thread-127289] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:53:32.082 [DEBUG] [Thread-127289] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:53:32.082 [DEBUG] [Thread-127289] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:53:32.082 [DEBUG] [Thread-127289] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:53:32.096 [INFO] [Thread-127289] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:53:32.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:53:32.675 [DEBUG] [Thread-127289] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:53:32.675 [DEBUG] [Thread-127289] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:53:32.676 [DEBUG] [Thread-127289] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:53:32.715 [DEBUG] [Thread-127289] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:53:32.715 [DEBUG] [Thread-127289] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:53:32.718 [DEBUG] [Thread-127289] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:53:32.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:53:32.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:53:32.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:53:32.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:53:32.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:53:32.735 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:53:32.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:53:32.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:53:32.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:53:32.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.036903 -999.00  +16.50  17.77     19   -6.90 1 1 1 1 1     0    0 23.82 14.88 ZNESW 19.2 17.8 307.4 21.1 16.7 -23.9 16.6 -22.8 16.4 -22.4 16.7 -23.6
2025-11-04T02:53:32.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:53:32.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:53:32.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.036903
2025-11-04T02:53:32.742 [DEBUG] [Thread-127289] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:53:32.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:53:32.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:53:32.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:53:32.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:53:32.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:53:32.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:53:16', tmtdew=27.51, humidity=14.41, cloud=0.0, wind=17.5, temperature=16.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:53:17', seeing=0.97, atlas_timestamp='2025-11-04T00:53:08.419', atlas_cloud=1, atlas_rain=1, zp_data=[0.03074999999999939, 0.04925000000000068, 0.08725000000000094, 0.06949999999999967, 0.03250000000000064, 0.07025000000000148, 0.046499999999999986, 0.05874999999999986, 0.07249999999999979, 0.05550000000000033, 0.11074999999999946, 0.0860000000000003, 0.2154999999999987, 0.04324999999999868, 0.0045000000000001705, -0.0045000000000001705, 0.07525000000000048, 0.125, 0.176499999999999, 0.1197499999999998, 0.22949999999999804, 0.1112499999999983, 0.09425000000000061, 0.0677500000000002, 0.10899999999999999, 0.27250000000000085, 0.09675000000000011, 0.2375000000000007, 0.27800000000000047, -0.16699999999999982, 0.1460000000000008, 0.14450000000000074, 0.1847499999999993], zp_timestamp='2025-11-04T00:51:00')
2025-11-04T02:53:32.834 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:53:32.848 [DEBUG] [Thread-127292] [transport.py] [_log()] starting thread (client mode): 0xed23fd0
2025-11-04T02:53:32.848 [DEBUG] [Thread-127292] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:53:32.866 [DEBUG] [Thread-127292] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:53:32.866 [INFO] [Thread-127292] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:53:32.874 [DEBUG] [Thread-127292] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:53:32.874 [DEBUG] [Thread-127292] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:53:32.874 [DEBUG] [Thread-127292] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:53:32.874 [DEBUG] [Thread-127292] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:53:32.874 [DEBUG] [Thread-127292] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:53:32.874 [DEBUG] [Thread-127292] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:53:32.874 [DEBUG] [Thread-127292] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:53:32.874 [DEBUG] [Thread-127292] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:53:32.874 [DEBUG] [Thread-127292] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:53:32.874 [DEBUG] [Thread-127292] [transport.py] [_log()] client lang: <none>
2025-11-04T02:53:32.874 [DEBUG] [Thread-127292] [transport.py] [_log()] server lang: <none>
2025-11-04T02:53:32.874 [DEBUG] [Thread-127292] [transport.py] [_log()] kex follows: False
2025-11-04T02:53:32.874 [DEBUG] [Thread-127292] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:53:32.874 [DEBUG] [Thread-127292] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:53:32.874 [DEBUG] [Thread-127292] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:53:32.874 [DEBUG] [Thread-127292] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:53:32.875 [DEBUG] [Thread-127292] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:53:32.875 [DEBUG] [Thread-127292] [transport.py] [_log()] Compression: none
2025-11-04T02:53:32.875 [DEBUG] [Thread-127292] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:53:32.930 [DEBUG] [Thread-127292] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:53:32.931 [DEBUG] [Thread-127292] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:53:32.931 [DEBUG] [Thread-127292] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:53:32.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:53:32.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:53:32.991 [DEBUG] [Thread-127292] [transport.py] [_log()] userauth is OK
2025-11-04T02:53:32.991 [DEBUG] [Thread-127292] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:53:32.991 [DEBUG] [Thread-127292] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:53:32.991 [DEBUG] [Thread-127292] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:53:32.991 [DEBUG] [Thread-127292] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:53:33.011 [INFO] [Thread-127292] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:53:33.011 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:53:33.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:53:33.864 [DEBUG] [Thread-127292] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:53:33.864 [DEBUG] [Thread-127292] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:53:33.911 [DEBUG] [Thread-127292] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:53:33.911 [DEBUG] [Thread-127292] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:53:33.919 [DEBUG] [Thread-127292] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:53:33.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:53:33.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:53:33.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:53:33.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:53:33.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:53:33.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:53:33.956 [DEBUG] [Thread-127292] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:53:43.227 [DEBUG] [Thread-127294 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:53:49.339 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:53:49.340 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:53:58.287 [DEBUG] [Thread-127295 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:54:03.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:54:03.988 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:54:04.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:54:04.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 53, 49), 27.41, 14.41, 0.0, 17.24, 16.43, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:54:04.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:53:49
2025-11-04T02:54:04.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:54:05.178 [DEBUG] [Thread-127296] [transport.py] [_log()] starting thread (client mode): 0xed05c00
2025-11-04T02:54:05.179 [DEBUG] [Thread-127296] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:54:05.190 [DEBUG] [Thread-127296] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:54:05.191 [INFO] [Thread-127296] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:54:05.196 [DEBUG] [Thread-127296] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:54:05.197 [DEBUG] [Thread-127296] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:54:05.197 [DEBUG] [Thread-127296] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:54:05.197 [DEBUG] [Thread-127296] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:54:05.197 [DEBUG] [Thread-127296] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:54:05.197 [DEBUG] [Thread-127296] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:54:05.197 [DEBUG] [Thread-127296] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:54:05.197 [DEBUG] [Thread-127296] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:54:05.197 [DEBUG] [Thread-127296] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:54:05.197 [DEBUG] [Thread-127296] [transport.py] [_log()] client lang: <none>
2025-11-04T02:54:05.197 [DEBUG] [Thread-127296] [transport.py] [_log()] server lang: <none>
2025-11-04T02:54:05.197 [DEBUG] [Thread-127296] [transport.py] [_log()] kex follows: False
2025-11-04T02:54:05.197 [DEBUG] [Thread-127296] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:54:05.198 [DEBUG] [Thread-127296] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:54:05.198 [DEBUG] [Thread-127296] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:54:05.198 [DEBUG] [Thread-127296] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:54:05.198 [DEBUG] [Thread-127296] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:54:05.198 [DEBUG] [Thread-127296] [transport.py] [_log()] Compression: none
2025-11-04T02:54:05.198 [DEBUG] [Thread-127296] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:54:05.244 [DEBUG] [Thread-127296] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:54:05.248 [DEBUG] [Thread-127296] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:54:05.250 [DEBUG] [Thread-127296] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:54:05.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:54:05.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:54:05.255 [DEBUG] [Thread-127296] [transport.py] [_log()] userauth is OK
2025-11-04T02:54:05.256 [DEBUG] [Thread-127296] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:54:05.256 [DEBUG] [Thread-127296] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:54:05.256 [DEBUG] [Thread-127296] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:54:05.256 [DEBUG] [Thread-127296] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:54:05.295 [INFO] [Thread-127296] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:54:05.298 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:54:05.955 [DEBUG] [Thread-127296] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:54:05.956 [DEBUG] [Thread-127296] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:54:05.958 [DEBUG] [Thread-127296] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:54:05.996 [DEBUG] [Thread-127296] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:54:05.997 [DEBUG] [Thread-127296] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:54:06.001 [DEBUG] [Thread-127296] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:54:06.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:54:06.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:54:06.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:54:06.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:54:06.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:54:06.029 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:54:06.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:54:06.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:54:06.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:54:06.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.037250 -999.00  +16.50  17.26     19   -6.90 1 1 1 1 1     0    0 23.61 13.32 ZNESW 18.9 17.3 312.2 24.8 16.7 -24.1 16.6 -23.0 16.4 -22.4 16.7 -23.6
2025-11-04T02:54:06.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:54:06.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:54:06.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.037250
2025-11-04T02:54:06.038 [DEBUG] [Thread-127296] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:54:06.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:54:06.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:54:06.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:54:06.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:54:06.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:54:06.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:53:49', tmtdew=27.41, humidity=14.41, cloud=0.0, wind=17.24, temperature=16.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:53:50', seeing=1.23, atlas_timestamp='2025-11-04T00:53:38.400', atlas_cloud=1, atlas_rain=1, zp_data=[0.03074999999999939, 0.04925000000000068, 0.08725000000000094, 0.06949999999999967, 0.03250000000000064, 0.07025000000000148, 0.046499999999999986, 0.05874999999999986, 0.07249999999999979, 0.05550000000000033, 0.11074999999999946, 0.0860000000000003, 0.2154999999999987, 0.04324999999999868, 0.0045000000000001705, -0.0045000000000001705, 0.07525000000000048, 0.125, 0.176499999999999, 0.1197499999999998, 0.22949999999999804, 0.1112499999999983, 0.09425000000000061, 0.0677500000000002, 0.10899999999999999, 0.27250000000000085, 0.09675000000000011, 0.2375000000000007, 0.27800000000000047, -0.16699999999999982, 0.1460000000000008, 0.14450000000000074, 0.1847499999999993], zp_timestamp='2025-11-04T00:51:00')
2025-11-04T02:54:06.146 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:54:06.157 [DEBUG] [Thread-127299] [transport.py] [_log()] starting thread (client mode): 0x81988b0
2025-11-04T02:54:06.157 [DEBUG] [Thread-127299] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:54:06.176 [DEBUG] [Thread-127299] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:54:06.177 [INFO] [Thread-127299] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:54:06.184 [DEBUG] [Thread-127299] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:54:06.185 [DEBUG] [Thread-127299] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:54:06.185 [DEBUG] [Thread-127299] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:54:06.185 [DEBUG] [Thread-127299] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:54:06.185 [DEBUG] [Thread-127299] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:54:06.185 [DEBUG] [Thread-127299] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:54:06.185 [DEBUG] [Thread-127299] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:54:06.185 [DEBUG] [Thread-127299] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:54:06.185 [DEBUG] [Thread-127299] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:54:06.185 [DEBUG] [Thread-127299] [transport.py] [_log()] client lang: <none>
2025-11-04T02:54:06.185 [DEBUG] [Thread-127299] [transport.py] [_log()] server lang: <none>
2025-11-04T02:54:06.185 [DEBUG] [Thread-127299] [transport.py] [_log()] kex follows: False
2025-11-04T02:54:06.185 [DEBUG] [Thread-127299] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:54:06.185 [DEBUG] [Thread-127299] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:54:06.185 [DEBUG] [Thread-127299] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:54:06.185 [DEBUG] [Thread-127299] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:54:06.185 [DEBUG] [Thread-127299] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:54:06.186 [DEBUG] [Thread-127299] [transport.py] [_log()] Compression: none
2025-11-04T02:54:06.186 [DEBUG] [Thread-127299] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:54:06.243 [DEBUG] [Thread-127299] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:54:06.243 [DEBUG] [Thread-127299] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:54:06.243 [DEBUG] [Thread-127299] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:54:06.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:54:06.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:54:06.301 [DEBUG] [Thread-127299] [transport.py] [_log()] userauth is OK
2025-11-04T02:54:06.302 [DEBUG] [Thread-127299] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:54:06.302 [DEBUG] [Thread-127299] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:54:06.302 [DEBUG] [Thread-127299] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:54:06.302 [DEBUG] [Thread-127299] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:54:06.322 [INFO] [Thread-127299] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:54:06.322 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:54:06.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:54:07.202 [DEBUG] [Thread-127299] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:54:07.202 [DEBUG] [Thread-127299] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:54:07.251 [DEBUG] [Thread-127299] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:54:07.251 [DEBUG] [Thread-127299] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:54:07.259 [DEBUG] [Thread-127299] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:54:07.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:54:07.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:54:07.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:54:07.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:54:07.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:54:07.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:54:07.293 [DEBUG] [Thread-127299] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:54:10.029 [DEBUG] [Thread-127301 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:54:13.321 [DEBUG] [Thread-127302 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:54:28.408 [DEBUG] [Thread-127303 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:54:37.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:54:37.316 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:54:37.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:54:38.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 54, 22), 27.37, 14.46, 0.0, 18.23, 16.46, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:54:38.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:54:22
2025-11-04T02:54:38.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:54:38.430 [DEBUG] [Thread-127304] [transport.py] [_log()] starting thread (client mode): 0xedc69e0
2025-11-04T02:54:38.430 [DEBUG] [Thread-127304] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:54:38.444 [DEBUG] [Thread-127304] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:54:38.444 [INFO] [Thread-127304] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:54:38.446 [DEBUG] [Thread-127304] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:54:38.446 [DEBUG] [Thread-127304] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:54:38.446 [DEBUG] [Thread-127304] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:54:38.446 [DEBUG] [Thread-127304] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:54:38.446 [DEBUG] [Thread-127304] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:54:38.446 [DEBUG] [Thread-127304] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:54:38.446 [DEBUG] [Thread-127304] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:54:38.446 [DEBUG] [Thread-127304] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:54:38.446 [DEBUG] [Thread-127304] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:54:38.446 [DEBUG] [Thread-127304] [transport.py] [_log()] client lang: <none>
2025-11-04T02:54:38.446 [DEBUG] [Thread-127304] [transport.py] [_log()] server lang: <none>
2025-11-04T02:54:38.446 [DEBUG] [Thread-127304] [transport.py] [_log()] kex follows: False
2025-11-04T02:54:38.446 [DEBUG] [Thread-127304] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:54:38.446 [DEBUG] [Thread-127304] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:54:38.446 [DEBUG] [Thread-127304] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:54:38.446 [DEBUG] [Thread-127304] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:54:38.446 [DEBUG] [Thread-127304] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:54:38.446 [DEBUG] [Thread-127304] [transport.py] [_log()] Compression: none
2025-11-04T02:54:38.446 [DEBUG] [Thread-127304] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:54:38.454 [DEBUG] [Thread-127304] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:54:38.455 [DEBUG] [Thread-127304] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:54:38.455 [DEBUG] [Thread-127304] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:54:38.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:54:38.456 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:54:38.457 [DEBUG] [Thread-127304] [transport.py] [_log()] userauth is OK
2025-11-04T02:54:38.457 [DEBUG] [Thread-127304] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:54:38.457 [DEBUG] [Thread-127304] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:54:38.457 [DEBUG] [Thread-127304] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:54:38.457 [DEBUG] [Thread-127304] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:54:38.472 [INFO] [Thread-127304] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:54:38.473 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:54:39.114 [DEBUG] [Thread-127304] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:54:39.114 [DEBUG] [Thread-127304] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:54:39.114 [DEBUG] [Thread-127304] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:54:39.154 [DEBUG] [Thread-127304] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:54:39.154 [DEBUG] [Thread-127304] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:54:39.157 [DEBUG] [Thread-127304] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:54:39.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:54:39.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:54:39.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:54:39.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:54:39.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:54:39.167 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:54:39.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:54:39.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:54:39.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:54:39.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.037597 -999.00  +16.50  19.38     19   -6.90 1 1 1 1 1     0    0 23.44 12.36 ZNESW 16.9 19.4 311.8 22.6 16.7 -23.8 16.6 -22.9 16.4 -22.7 16.6 -23.4
2025-11-04T02:54:39.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:54:39.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:54:39.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.037597
2025-11-04T02:54:39.176 [DEBUG] [Thread-127304] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:54:39.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:54:39.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:54:39.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:54:39.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:54:39.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:54:39.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:54:22', tmtdew=27.37, humidity=14.46, cloud=0.0, wind=18.23, temperature=16.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:54:23', seeing=1.23, atlas_timestamp='2025-11-04T00:54:08.381', atlas_cloud=1, atlas_rain=1, zp_data=[0.03074999999999939, 0.04925000000000068, 0.08725000000000094, 0.06949999999999967, 0.03250000000000064, 0.07025000000000148, 0.046499999999999986, 0.05874999999999986, 0.07249999999999979, 0.05550000000000033, 0.11074999999999946, 0.0860000000000003, 0.2154999999999987, 0.04324999999999868, 0.0045000000000001705, -0.0045000000000001705, 0.07525000000000048, 0.125, 0.176499999999999, 0.1197499999999998, 0.22949999999999804, 0.1112499999999983, 0.09425000000000061, 0.0677500000000002, 0.10899999999999999, 0.27250000000000085, 0.09675000000000011, 0.2375000000000007, 0.27800000000000047, -0.16699999999999982, 0.1460000000000008, 0.14450000000000074, 0.1847499999999993], zp_timestamp='2025-11-04T00:51:00')
2025-11-04T02:54:39.249 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:54:39.261 [DEBUG] [Thread-127307] [transport.py] [_log()] starting thread (client mode): 0xed355a0
2025-11-04T02:54:39.262 [DEBUG] [Thread-127307] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:54:39.276 [DEBUG] [Thread-127307] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:54:39.276 [INFO] [Thread-127307] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:54:39.283 [DEBUG] [Thread-127307] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:54:39.283 [DEBUG] [Thread-127307] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:54:39.283 [DEBUG] [Thread-127307] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:54:39.283 [DEBUG] [Thread-127307] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:54:39.283 [DEBUG] [Thread-127307] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:54:39.283 [DEBUG] [Thread-127307] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:54:39.283 [DEBUG] [Thread-127307] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:54:39.283 [DEBUG] [Thread-127307] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:54:39.283 [DEBUG] [Thread-127307] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:54:39.283 [DEBUG] [Thread-127307] [transport.py] [_log()] client lang: <none>
2025-11-04T02:54:39.283 [DEBUG] [Thread-127307] [transport.py] [_log()] server lang: <none>
2025-11-04T02:54:39.283 [DEBUG] [Thread-127307] [transport.py] [_log()] kex follows: False
2025-11-04T02:54:39.283 [DEBUG] [Thread-127307] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:54:39.283 [DEBUG] [Thread-127307] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:54:39.283 [DEBUG] [Thread-127307] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:54:39.283 [DEBUG] [Thread-127307] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:54:39.283 [DEBUG] [Thread-127307] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:54:39.283 [DEBUG] [Thread-127307] [transport.py] [_log()] Compression: none
2025-11-04T02:54:39.283 [DEBUG] [Thread-127307] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:54:39.338 [DEBUG] [Thread-127307] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:54:39.338 [DEBUG] [Thread-127307] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:54:39.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:54:39.338 [DEBUG] [Thread-127307] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:54:39.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:54:39.397 [DEBUG] [Thread-127307] [transport.py] [_log()] userauth is OK
2025-11-04T02:54:39.397 [DEBUG] [Thread-127307] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:54:39.397 [DEBUG] [Thread-127307] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:54:39.397 [DEBUG] [Thread-127307] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:54:39.397 [DEBUG] [Thread-127307] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:54:39.411 [INFO] [Thread-127307] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:54:39.411 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:54:39.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:54:40.289 [DEBUG] [Thread-127307] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:54:40.298 [DEBUG] [Thread-127307] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:54:40.337 [DEBUG] [Thread-127307] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:54:40.337 [DEBUG] [Thread-127307] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:54:40.346 [DEBUG] [Thread-127307] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:54:40.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:54:40.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:54:40.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:54:40.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:54:40.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:54:40.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:54:40.381 [DEBUG] [Thread-127307] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:54:43.446 [DEBUG] [Thread-127309 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:54:49.542 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:54:49.543 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:54:58.530 [DEBUG] [Thread-127310 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:55:10.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:55:10.407 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:55:10.414 [DEBUG] [Thread-127311 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:55:10.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:55:11.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 54, 55), 27.4, 14.42, 0.0, 17.52, 16.44, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:55:11.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:54:55
2025-11-04T02:55:11.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:55:11.577 [DEBUG] [Thread-127312] [transport.py] [_log()] starting thread (client mode): 0x117bd480
2025-11-04T02:55:11.578 [DEBUG] [Thread-127312] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:55:11.591 [DEBUG] [Thread-127312] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:55:11.591 [INFO] [Thread-127312] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:55:11.596 [DEBUG] [Thread-127312] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:55:11.596 [DEBUG] [Thread-127312] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:55:11.596 [DEBUG] [Thread-127312] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:55:11.596 [DEBUG] [Thread-127312] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:55:11.596 [DEBUG] [Thread-127312] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:55:11.597 [DEBUG] [Thread-127312] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:55:11.597 [DEBUG] [Thread-127312] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:55:11.597 [DEBUG] [Thread-127312] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:55:11.597 [DEBUG] [Thread-127312] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:55:11.597 [DEBUG] [Thread-127312] [transport.py] [_log()] client lang: <none>
2025-11-04T02:55:11.597 [DEBUG] [Thread-127312] [transport.py] [_log()] server lang: <none>
2025-11-04T02:55:11.597 [DEBUG] [Thread-127312] [transport.py] [_log()] kex follows: False
2025-11-04T02:55:11.597 [DEBUG] [Thread-127312] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:55:11.598 [DEBUG] [Thread-127312] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:55:11.598 [DEBUG] [Thread-127312] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:55:11.599 [DEBUG] [Thread-127312] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:55:11.599 [DEBUG] [Thread-127312] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:55:11.599 [DEBUG] [Thread-127312] [transport.py] [_log()] Compression: none
2025-11-04T02:55:11.599 [DEBUG] [Thread-127312] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:55:11.639 [DEBUG] [Thread-127312] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:55:11.643 [DEBUG] [Thread-127312] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:55:11.645 [DEBUG] [Thread-127312] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:55:11.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:55:11.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:55:11.650 [DEBUG] [Thread-127312] [transport.py] [_log()] userauth is OK
2025-11-04T02:55:11.651 [DEBUG] [Thread-127312] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:55:11.651 [DEBUG] [Thread-127312] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:55:11.651 [DEBUG] [Thread-127312] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:55:11.651 [DEBUG] [Thread-127312] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:55:11.689 [INFO] [Thread-127312] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:55:11.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:55:13.603 [DEBUG] [Thread-127314 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:55:15.447 [DEBUG] [Thread-127312] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:55:15.447 [DEBUG] [Thread-127312] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:55:15.457 [DEBUG] [Thread-127312] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:55:15.488 [DEBUG] [Thread-127312] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:55:15.488 [DEBUG] [Thread-127312] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:55:15.492 [DEBUG] [Thread-127312] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:55:15.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:55:15.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:55:15.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:55:15.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:55:15.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:55:15.537 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:55:15.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:55:15.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:55:15.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:55:15.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.037597 -999.00  +16.50  19.38     19   -6.90 1 1 1 1 1     0    0 23.44 12.36 ZNESW 16.9 19.4 311.8 22.6 16.7 -23.8 16.6 -22.9 16.4 -22.7 16.6 -23.4
2025-11-04T02:55:15.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:55:15.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:55:15.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.037597
2025-11-04T02:55:15.547 [DEBUG] [Thread-127312] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:55:15.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:55:15.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:55:15.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:55:15.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:55:15.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:55:15.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:54:55', tmtdew=27.4, humidity=14.42, cloud=0.0, wind=17.52, temperature=16.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:54:55', seeing=1.21, atlas_timestamp='2025-11-04T00:54:08.381', atlas_cloud=1, atlas_rain=1, zp_data=[0.03074999999999939, 0.04925000000000068, 0.08725000000000094, 0.06949999999999967, 0.03250000000000064, 0.07025000000000148, 0.046499999999999986, 0.05874999999999986, 0.07249999999999979, 0.05550000000000033, 0.11074999999999946, 0.0860000000000003, 0.2154999999999987, 0.04324999999999868, 0.0045000000000001705, -0.0045000000000001705, 0.07525000000000048, 0.125, 0.176499999999999, 0.1197499999999998, 0.22949999999999804, 0.1112499999999983, 0.09425000000000061, 0.0677500000000002, 0.10899999999999999, 0.27250000000000085, 0.09675000000000011, 0.2375000000000007, 0.27800000000000047, -0.16699999999999982, 0.1460000000000008, 0.14450000000000074, 0.1847499999999993], zp_timestamp='2025-11-04T00:51:00')
2025-11-04T02:55:15.654 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:55:15.666 [DEBUG] [Thread-127316] [transport.py] [_log()] starting thread (client mode): 0xed05cc0
2025-11-04T02:55:15.666 [DEBUG] [Thread-127316] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:55:15.682 [DEBUG] [Thread-127316] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:55:15.682 [INFO] [Thread-127316] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:55:15.689 [DEBUG] [Thread-127316] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:55:15.690 [DEBUG] [Thread-127316] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:55:15.690 [DEBUG] [Thread-127316] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:55:15.690 [DEBUG] [Thread-127316] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:55:15.690 [DEBUG] [Thread-127316] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:55:15.690 [DEBUG] [Thread-127316] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:55:15.690 [DEBUG] [Thread-127316] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:55:15.690 [DEBUG] [Thread-127316] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:55:15.691 [DEBUG] [Thread-127316] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:55:15.691 [DEBUG] [Thread-127316] [transport.py] [_log()] client lang: <none>
2025-11-04T02:55:15.691 [DEBUG] [Thread-127316] [transport.py] [_log()] server lang: <none>
2025-11-04T02:55:15.691 [DEBUG] [Thread-127316] [transport.py] [_log()] kex follows: False
2025-11-04T02:55:15.691 [DEBUG] [Thread-127316] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:55:15.691 [DEBUG] [Thread-127316] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:55:15.691 [DEBUG] [Thread-127316] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:55:15.691 [DEBUG] [Thread-127316] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:55:15.691 [DEBUG] [Thread-127316] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:55:15.692 [DEBUG] [Thread-127316] [transport.py] [_log()] Compression: none
2025-11-04T02:55:15.692 [DEBUG] [Thread-127316] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:55:15.749 [DEBUG] [Thread-127316] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:55:15.749 [DEBUG] [Thread-127316] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:55:15.751 [DEBUG] [Thread-127316] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:55:15.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:55:15.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:55:15.805 [DEBUG] [Thread-127316] [transport.py] [_log()] userauth is OK
2025-11-04T02:55:15.805 [DEBUG] [Thread-127316] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:55:15.805 [DEBUG] [Thread-127316] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:55:15.805 [DEBUG] [Thread-127316] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:55:15.805 [DEBUG] [Thread-127316] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:55:15.824 [INFO] [Thread-127316] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:55:15.824 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:55:15.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:55:16.687 [DEBUG] [Thread-127316] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:55:16.688 [DEBUG] [Thread-127316] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:55:16.735 [DEBUG] [Thread-127316] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:55:16.736 [DEBUG] [Thread-127316] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:55:16.745 [DEBUG] [Thread-127316] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:55:16.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:55:16.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:55:16.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:55:16.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:55:16.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:55:16.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:55:16.794 [DEBUG] [Thread-127316] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:55:28.633 [DEBUG] [Thread-127318 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:55:43.726 [DEBUG] [Thread-127319 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:55:46.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:55:46.820 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:55:46.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:55:47.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 55, 27), 27.36, 14.46, 0.0, 17.79, 16.43, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:55:47.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:55:27
2025-11-04T02:55:47.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:55:48.014 [DEBUG] [Thread-127320] [transport.py] [_log()] starting thread (client mode): 0x819a590
2025-11-04T02:55:48.015 [DEBUG] [Thread-127320] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:55:48.030 [DEBUG] [Thread-127320] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:55:48.030 [INFO] [Thread-127320] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:55:48.034 [DEBUG] [Thread-127320] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:55:48.034 [DEBUG] [Thread-127320] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:55:48.034 [DEBUG] [Thread-127320] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:55:48.034 [DEBUG] [Thread-127320] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:55:48.034 [DEBUG] [Thread-127320] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:55:48.034 [DEBUG] [Thread-127320] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:55:48.034 [DEBUG] [Thread-127320] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:55:48.034 [DEBUG] [Thread-127320] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:55:48.034 [DEBUG] [Thread-127320] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:55:48.034 [DEBUG] [Thread-127320] [transport.py] [_log()] client lang: <none>
2025-11-04T02:55:48.034 [DEBUG] [Thread-127320] [transport.py] [_log()] server lang: <none>
2025-11-04T02:55:48.035 [DEBUG] [Thread-127320] [transport.py] [_log()] kex follows: False
2025-11-04T02:55:48.035 [DEBUG] [Thread-127320] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:55:48.035 [DEBUG] [Thread-127320] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:55:48.035 [DEBUG] [Thread-127320] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:55:48.035 [DEBUG] [Thread-127320] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:55:48.035 [DEBUG] [Thread-127320] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:55:48.035 [DEBUG] [Thread-127320] [transport.py] [_log()] Compression: none
2025-11-04T02:55:48.035 [DEBUG] [Thread-127320] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:55:48.065 [DEBUG] [Thread-127320] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:55:48.068 [DEBUG] [Thread-127320] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:55:48.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:55:48.070 [DEBUG] [Thread-127320] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:55:48.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:55:48.073 [DEBUG] [Thread-127320] [transport.py] [_log()] userauth is OK
2025-11-04T02:55:48.074 [DEBUG] [Thread-127320] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:55:48.074 [DEBUG] [Thread-127320] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:55:48.074 [DEBUG] [Thread-127320] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:55:48.074 [DEBUG] [Thread-127320] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:55:48.099 [INFO] [Thread-127320] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:55:48.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:55:48.751 [DEBUG] [Thread-127320] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:55:48.752 [DEBUG] [Thread-127320] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:55:48.753 [DEBUG] [Thread-127320] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:55:48.793 [DEBUG] [Thread-127320] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:55:48.793 [DEBUG] [Thread-127320] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:55:48.796 [DEBUG] [Thread-127320] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:55:48.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:55:48.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:55:48.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:55:48.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:55:48.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:55:48.822 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:55:48.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:55:48.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:55:48.824 [DEBUG] [Thread-127320] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:55:48.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:55:48.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.038291 -999.00  +16.40  15.19     19   -6.90 1 1 1 1 1     0    0 23.21 10.26 ZNESW 11.4 15.2 313.6 22.6 16.7 -24.0 16.6 -22.9 16.4 -22.6 16.6 -23.6
2025-11-04T02:55:48.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:55:48.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:55:48.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.038291
2025-11-04T02:55:48.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:55:48.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:55:48.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:55:48.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:55:48.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:55:48.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:55:27', tmtdew=27.36, humidity=14.46, cloud=0.0, wind=17.79, temperature=16.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:55:28', seeing=1.21, atlas_timestamp='2025-11-04T00:55:08.342', atlas_cloud=1, atlas_rain=1, zp_data=[0.024750000000000938, 0.02775000000000105, 0.1332500000000003, 0.03849999999999909, 0.09950000000000081, 0.06325000000000003, 0.0, 0.039250000000000895, 0.05149999999999899, 0.027000000000001023, 0.1197499999999998, 0.10899999999999999, 0.14649999999999963, 0.06524999999999892, 0.045999999999999375, -0.018499999999999517, 0.08424999999999905, 0.09149999999999991, 0.1169999999999991, 0.08874999999999922, 0.14999999999999858, -0.028750000000002274, 0.1122500000000013, 0.056250000000000355, 0.08099999999999952, 0.17249999999999943, 0.10725000000000051, 0.25650000000000084, 0.11899999999999977, -0.4449999999999985, 0.20200000000000173, 0.09500000000000064, 0.17524999999999835], zp_timestamp='2025-11-04T00:54:00')
2025-11-04T02:55:48.916 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:55:48.928 [DEBUG] [Thread-127323] [transport.py] [_log()] starting thread (client mode): 0xed36c20
2025-11-04T02:55:48.929 [DEBUG] [Thread-127323] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:55:48.948 [DEBUG] [Thread-127323] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:55:48.949 [INFO] [Thread-127323] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:55:48.960 [DEBUG] [Thread-127323] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:55:48.961 [DEBUG] [Thread-127323] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:55:48.961 [DEBUG] [Thread-127323] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:55:48.961 [DEBUG] [Thread-127323] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:55:48.961 [DEBUG] [Thread-127323] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:55:48.961 [DEBUG] [Thread-127323] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:55:48.961 [DEBUG] [Thread-127323] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:55:48.961 [DEBUG] [Thread-127323] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:55:48.961 [DEBUG] [Thread-127323] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:55:48.961 [DEBUG] [Thread-127323] [transport.py] [_log()] client lang: <none>
2025-11-04T02:55:48.961 [DEBUG] [Thread-127323] [transport.py] [_log()] server lang: <none>
2025-11-04T02:55:48.961 [DEBUG] [Thread-127323] [transport.py] [_log()] kex follows: False
2025-11-04T02:55:48.961 [DEBUG] [Thread-127323] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:55:48.962 [DEBUG] [Thread-127323] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:55:48.962 [DEBUG] [Thread-127323] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:55:48.962 [DEBUG] [Thread-127323] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:55:48.963 [DEBUG] [Thread-127323] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:55:48.963 [DEBUG] [Thread-127323] [transport.py] [_log()] Compression: none
2025-11-04T02:55:48.966 [DEBUG] [Thread-127323] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:55:49.019 [DEBUG] [Thread-127323] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:55:49.019 [DEBUG] [Thread-127323] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:55:49.020 [DEBUG] [Thread-127323] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:55:49.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:55:49.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:55:49.078 [DEBUG] [Thread-127323] [transport.py] [_log()] userauth is OK
2025-11-04T02:55:49.078 [DEBUG] [Thread-127323] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:55:49.078 [DEBUG] [Thread-127323] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:55:49.078 [DEBUG] [Thread-127323] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:55:49.079 [DEBUG] [Thread-127323] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:55:49.098 [INFO] [Thread-127323] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:55:49.098 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:55:49.099 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:55:49.753 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:55:49.755 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:55:49.947 [DEBUG] [Thread-127323] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:55:49.948 [DEBUG] [Thread-127323] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:55:49.997 [DEBUG] [Thread-127323] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:55:49.997 [DEBUG] [Thread-127323] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:55:50.008 [DEBUG] [Thread-127323] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:55:50.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:55:50.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:55:50.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:55:50.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:55:50.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:55:50.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:55:50.051 [DEBUG] [Thread-127323] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:55:58.759 [DEBUG] [Thread-127325 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:56:09.395 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:56:10.710 [DEBUG] [Thread-127326 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:56:13.829 [DEBUG] [Thread-127327 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:56:14.246 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:56:17.309 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:56:20.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:56:20.074 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:56:20.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:56:20.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 55, 27), 27.36, 14.46, 0.0, 17.79, 16.43, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:56:20.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:55:27
2025-11-04T02:56:21.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:56:21.190 [DEBUG] [Thread-127328] [transport.py] [_log()] starting thread (client mode): 0x8198880
2025-11-04T02:56:21.191 [DEBUG] [Thread-127328] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:56:21.202 [DEBUG] [Thread-127328] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:56:21.203 [INFO] [Thread-127328] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:56:21.207 [DEBUG] [Thread-127328] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:56:21.207 [DEBUG] [Thread-127328] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:56:21.207 [DEBUG] [Thread-127328] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:56:21.207 [DEBUG] [Thread-127328] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:56:21.207 [DEBUG] [Thread-127328] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:56:21.207 [DEBUG] [Thread-127328] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:56:21.207 [DEBUG] [Thread-127328] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:56:21.207 [DEBUG] [Thread-127328] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:56:21.207 [DEBUG] [Thread-127328] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:56:21.207 [DEBUG] [Thread-127328] [transport.py] [_log()] client lang: <none>
2025-11-04T02:56:21.207 [DEBUG] [Thread-127328] [transport.py] [_log()] server lang: <none>
2025-11-04T02:56:21.207 [DEBUG] [Thread-127328] [transport.py] [_log()] kex follows: False
2025-11-04T02:56:21.207 [DEBUG] [Thread-127328] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:56:21.208 [DEBUG] [Thread-127328] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:56:21.208 [DEBUG] [Thread-127328] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:56:21.208 [DEBUG] [Thread-127328] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:56:21.208 [DEBUG] [Thread-127328] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:56:21.208 [DEBUG] [Thread-127328] [transport.py] [_log()] Compression: none
2025-11-04T02:56:21.208 [DEBUG] [Thread-127328] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:56:21.242 [DEBUG] [Thread-127328] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:56:21.247 [DEBUG] [Thread-127328] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:56:21.249 [DEBUG] [Thread-127328] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:56:21.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:56:21.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:56:21.254 [DEBUG] [Thread-127328] [transport.py] [_log()] userauth is OK
2025-11-04T02:56:21.255 [DEBUG] [Thread-127328] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:56:21.255 [DEBUG] [Thread-127328] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:56:21.255 [DEBUG] [Thread-127328] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:56:21.255 [DEBUG] [Thread-127328] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:56:21.281 [INFO] [Thread-127328] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:56:21.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:56:21.932 [DEBUG] [Thread-127328] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:56:21.932 [DEBUG] [Thread-127328] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:56:21.933 [DEBUG] [Thread-127328] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:56:21.972 [DEBUG] [Thread-127328] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:56:21.973 [DEBUG] [Thread-127328] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:56:21.975 [DEBUG] [Thread-127328] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:56:21.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:56:21.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:56:21.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:56:21.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:56:21.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:56:21.996 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:56:21.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:56:21.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:56:21.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:56:21.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.038639 -999.00  +16.30  19.20     19   -6.90 1 1 1 1 1     0    0 23.31 8.43 ZNESW 19.5 19.2 314.4 21.9 16.7 -24.1 16.6 -23.0 16.4 -22.8 16.6 -23.6
2025-11-04T02:56:21.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:56:21.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:56:21.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.038639
2025-11-04T02:56:22.009 [DEBUG] [Thread-127328] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:56:22.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:56:22.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:56:22.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:56:22.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:56:22.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:56:22.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:55:27', tmtdew=27.36, humidity=14.46, cloud=0.0, wind=17.79, temperature=16.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:56:00', seeing=1.26, atlas_timestamp='2025-11-04T00:55:38.410', atlas_cloud=1, atlas_rain=1, zp_data=[0.024750000000000938, 0.02775000000000105, 0.1332500000000003, 0.03849999999999909, 0.09950000000000081, 0.06325000000000003, 0.0, 0.039250000000000895, 0.05149999999999899, 0.027000000000001023, 0.1197499999999998, 0.10899999999999999, 0.14649999999999963, 0.06524999999999892, 0.045999999999999375, -0.018499999999999517, 0.08424999999999905, 0.09149999999999991, 0.1169999999999991, 0.08874999999999922, 0.14999999999999858, -0.028750000000002274, 0.1122500000000013, 0.056250000000000355, 0.08099999999999952, 0.17249999999999943, 0.10725000000000051, 0.25650000000000084, 0.11899999999999977, -0.4449999999999985, 0.20200000000000173, 0.09500000000000064, 0.17524999999999835], zp_timestamp='2025-11-04T00:54:00')
2025-11-04T02:56:22.091 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:56:22.104 [DEBUG] [Thread-127331] [transport.py] [_log()] starting thread (client mode): 0xed368f0
2025-11-04T02:56:22.104 [DEBUG] [Thread-127331] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:56:22.119 [DEBUG] [Thread-127331] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:56:22.119 [INFO] [Thread-127331] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:56:22.128 [DEBUG] [Thread-127331] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:56:22.128 [DEBUG] [Thread-127331] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:56:22.128 [DEBUG] [Thread-127331] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:56:22.128 [DEBUG] [Thread-127331] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:56:22.128 [DEBUG] [Thread-127331] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:56:22.128 [DEBUG] [Thread-127331] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:56:22.128 [DEBUG] [Thread-127331] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:56:22.128 [DEBUG] [Thread-127331] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:56:22.128 [DEBUG] [Thread-127331] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:56:22.128 [DEBUG] [Thread-127331] [transport.py] [_log()] client lang: <none>
2025-11-04T02:56:22.128 [DEBUG] [Thread-127331] [transport.py] [_log()] server lang: <none>
2025-11-04T02:56:22.128 [DEBUG] [Thread-127331] [transport.py] [_log()] kex follows: False
2025-11-04T02:56:22.128 [DEBUG] [Thread-127331] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:56:22.128 [DEBUG] [Thread-127331] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:56:22.128 [DEBUG] [Thread-127331] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:56:22.128 [DEBUG] [Thread-127331] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:56:22.128 [DEBUG] [Thread-127331] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:56:22.128 [DEBUG] [Thread-127331] [transport.py] [_log()] Compression: none
2025-11-04T02:56:22.128 [DEBUG] [Thread-127331] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:56:22.185 [DEBUG] [Thread-127331] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:56:22.185 [DEBUG] [Thread-127331] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:56:22.185 [DEBUG] [Thread-127331] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:56:22.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:56:22.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:56:22.244 [DEBUG] [Thread-127331] [transport.py] [_log()] userauth is OK
2025-11-04T02:56:22.244 [DEBUG] [Thread-127331] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:56:22.244 [DEBUG] [Thread-127331] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:56:22.244 [DEBUG] [Thread-127331] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:56:22.244 [DEBUG] [Thread-127331] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:56:22.258 [INFO] [Thread-127331] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:56:22.258 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:56:22.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:56:22.710 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:56:23.088 [DEBUG] [Thread-127331] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:56:23.088 [DEBUG] [Thread-127331] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:56:23.127 [DEBUG] [Thread-127331] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:56:23.127 [DEBUG] [Thread-127331] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:56:23.137 [DEBUG] [Thread-127331] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:56:23.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:56:23.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:56:23.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:56:23.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:56:23.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:56:23.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:56:23.177 [DEBUG] [Thread-127331] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:56:28.886 [DEBUG] [Thread-127333 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:56:43.966 [DEBUG] [Thread-127334 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:56:49.956 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:56:49.957 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:56:53.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:56:53.180 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:56:53.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:56:53.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 56, 32), 27.21, 14.57, 0.0, 17.96, 16.36, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:56:53.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:56:32
2025-11-04T02:56:54.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:56:54.165 [DEBUG] [Thread-127335] [transport.py] [_log()] starting thread (client mode): 0xed37a00
2025-11-04T02:56:54.166 [DEBUG] [Thread-127335] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:56:54.185 [DEBUG] [Thread-127335] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:56:54.185 [INFO] [Thread-127335] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:56:54.188 [DEBUG] [Thread-127335] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:56:54.189 [DEBUG] [Thread-127335] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:56:54.189 [DEBUG] [Thread-127335] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:56:54.189 [DEBUG] [Thread-127335] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:56:54.189 [DEBUG] [Thread-127335] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:56:54.189 [DEBUG] [Thread-127335] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:56:54.189 [DEBUG] [Thread-127335] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:56:54.189 [DEBUG] [Thread-127335] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:56:54.189 [DEBUG] [Thread-127335] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:56:54.189 [DEBUG] [Thread-127335] [transport.py] [_log()] client lang: <none>
2025-11-04T02:56:54.189 [DEBUG] [Thread-127335] [transport.py] [_log()] server lang: <none>
2025-11-04T02:56:54.189 [DEBUG] [Thread-127335] [transport.py] [_log()] kex follows: False
2025-11-04T02:56:54.189 [DEBUG] [Thread-127335] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:56:54.189 [DEBUG] [Thread-127335] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:56:54.189 [DEBUG] [Thread-127335] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:56:54.189 [DEBUG] [Thread-127335] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:56:54.189 [DEBUG] [Thread-127335] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:56:54.189 [DEBUG] [Thread-127335] [transport.py] [_log()] Compression: none
2025-11-04T02:56:54.189 [DEBUG] [Thread-127335] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:56:54.206 [DEBUG] [Thread-127335] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:56:54.206 [DEBUG] [Thread-127335] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:56:54.207 [DEBUG] [Thread-127335] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:56:54.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:56:54.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:56:54.208 [DEBUG] [Thread-127335] [transport.py] [_log()] userauth is OK
2025-11-04T02:56:54.208 [DEBUG] [Thread-127335] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:56:54.208 [DEBUG] [Thread-127335] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:56:54.208 [DEBUG] [Thread-127335] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:56:54.208 [DEBUG] [Thread-127335] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:56:54.239 [INFO] [Thread-127335] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:56:54.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:56:54.874 [DEBUG] [Thread-127335] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:56:54.875 [DEBUG] [Thread-127335] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:56:54.876 [DEBUG] [Thread-127335] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:56:54.915 [DEBUG] [Thread-127335] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:56:54.915 [DEBUG] [Thread-127335] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:56:54.918 [DEBUG] [Thread-127335] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:56:54.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:56:54.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:56:54.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:56:54.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:56:54.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:56:54.946 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:56:54.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:56:54.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:56:54.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:56:54.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.038986 -999.00  +16.40  20.21     19   -6.90 1 1 1 1 1     0    0 23.85 7.56 ZNESW 18.0 20.2 306.8 21.8 16.7 -23.9 16.6 -23.0 16.4 -22.5 16.6 -23.6
2025-11-04T02:56:54.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:56:54.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:56:54.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.038986
2025-11-04T02:56:54.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:56:54.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:56:54.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:56:54.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:56:54.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:56:54.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:56:32', tmtdew=27.21, humidity=14.57, cloud=0.0, wind=17.96, temperature=16.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:56:33', seeing=1.18, atlas_timestamp='2025-11-04T00:56:08.390', atlas_cloud=1, atlas_rain=1, zp_data=[0.024750000000000938, 0.02775000000000105, 0.1332500000000003, 0.03849999999999909, 0.09950000000000081, 0.06325000000000003, 0.0, 0.039250000000000895, 0.05149999999999899, 0.027000000000001023, 0.1197499999999998, 0.10899999999999999, 0.14649999999999963, 0.06524999999999892, 0.045999999999999375, -0.018499999999999517, 0.08424999999999905, 0.09149999999999991, 0.1169999999999991, 0.08874999999999922, 0.14999999999999858, -0.028750000000002274, 0.1122500000000013, 0.056250000000000355, 0.08099999999999952, 0.17249999999999943, 0.10725000000000051, 0.25650000000000084, 0.11899999999999977, -0.4449999999999985, 0.20200000000000173, 0.09500000000000064, 0.17524999999999835], zp_timestamp='2025-11-04T00:54:00')
2025-11-04T02:56:54.950 [DEBUG] [Thread-127335] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:56:55.034 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:56:55.049 [DEBUG] [Thread-127338] [transport.py] [_log()] starting thread (client mode): 0xed375b0
2025-11-04T02:56:55.049 [DEBUG] [Thread-127338] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:56:55.070 [DEBUG] [Thread-127338] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:56:55.070 [INFO] [Thread-127338] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:56:55.081 [DEBUG] [Thread-127338] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:56:55.082 [DEBUG] [Thread-127338] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:56:55.082 [DEBUG] [Thread-127338] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:56:55.082 [DEBUG] [Thread-127338] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:56:55.082 [DEBUG] [Thread-127338] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:56:55.082 [DEBUG] [Thread-127338] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:56:55.082 [DEBUG] [Thread-127338] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:56:55.082 [DEBUG] [Thread-127338] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:56:55.082 [DEBUG] [Thread-127338] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:56:55.083 [DEBUG] [Thread-127338] [transport.py] [_log()] client lang: <none>
2025-11-04T02:56:55.083 [DEBUG] [Thread-127338] [transport.py] [_log()] server lang: <none>
2025-11-04T02:56:55.083 [DEBUG] [Thread-127338] [transport.py] [_log()] kex follows: False
2025-11-04T02:56:55.083 [DEBUG] [Thread-127338] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:56:55.083 [DEBUG] [Thread-127338] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:56:55.083 [DEBUG] [Thread-127338] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:56:55.083 [DEBUG] [Thread-127338] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:56:55.083 [DEBUG] [Thread-127338] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:56:55.083 [DEBUG] [Thread-127338] [transport.py] [_log()] Compression: none
2025-11-04T02:56:55.083 [DEBUG] [Thread-127338] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:56:55.145 [DEBUG] [Thread-127338] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:56:55.145 [DEBUG] [Thread-127338] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:56:55.146 [DEBUG] [Thread-127338] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:56:55.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:56:55.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:56:55.205 [DEBUG] [Thread-127338] [transport.py] [_log()] userauth is OK
2025-11-04T02:56:55.205 [DEBUG] [Thread-127338] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:56:55.205 [DEBUG] [Thread-127338] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:56:55.205 [DEBUG] [Thread-127338] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:56:55.206 [DEBUG] [Thread-127338] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:56:55.229 [INFO] [Thread-127338] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:56:55.229 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:56:55.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:56:56.063 [DEBUG] [Thread-127338] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:56:56.063 [DEBUG] [Thread-127338] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:56:56.112 [DEBUG] [Thread-127338] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:56:56.112 [DEBUG] [Thread-127338] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:56:56.122 [DEBUG] [Thread-127338] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:56:56.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:56:56.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:56:56.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:56:56.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:56:56.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:56:56.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:56:56.158 [DEBUG] [Thread-127338] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:56:58.999 [DEBUG] [Thread-127340 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:57:11.084 [DEBUG] [Thread-127341 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:57:14.106 [DEBUG] [Thread-127342 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:57:26.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:57:26.177 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:57:26.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:57:26.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 57, 5), 27.23, 14.56, 0.0, 18.56, 16.38, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:57:26.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:57:05
2025-11-04T02:57:27.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:57:27.314 [DEBUG] [Thread-127343] [transport.py] [_log()] starting thread (client mode): 0xed126e0
2025-11-04T02:57:27.315 [DEBUG] [Thread-127343] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:57:27.328 [DEBUG] [Thread-127343] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:57:27.328 [INFO] [Thread-127343] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:57:27.334 [DEBUG] [Thread-127343] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:57:27.334 [DEBUG] [Thread-127343] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:57:27.334 [DEBUG] [Thread-127343] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:57:27.334 [DEBUG] [Thread-127343] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:57:27.334 [DEBUG] [Thread-127343] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:57:27.335 [DEBUG] [Thread-127343] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:57:27.335 [DEBUG] [Thread-127343] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:57:27.335 [DEBUG] [Thread-127343] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:57:27.335 [DEBUG] [Thread-127343] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:57:27.335 [DEBUG] [Thread-127343] [transport.py] [_log()] client lang: <none>
2025-11-04T02:57:27.335 [DEBUG] [Thread-127343] [transport.py] [_log()] server lang: <none>
2025-11-04T02:57:27.335 [DEBUG] [Thread-127343] [transport.py] [_log()] kex follows: False
2025-11-04T02:57:27.335 [DEBUG] [Thread-127343] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:57:27.336 [DEBUG] [Thread-127343] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:57:27.336 [DEBUG] [Thread-127343] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:57:27.337 [DEBUG] [Thread-127343] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:57:27.337 [DEBUG] [Thread-127343] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:57:27.337 [DEBUG] [Thread-127343] [transport.py] [_log()] Compression: none
2025-11-04T02:57:27.337 [DEBUG] [Thread-127343] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:57:27.377 [DEBUG] [Thread-127343] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:57:27.382 [DEBUG] [Thread-127343] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:57:27.384 [DEBUG] [Thread-127343] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:57:27.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:57:27.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:57:27.389 [DEBUG] [Thread-127343] [transport.py] [_log()] userauth is OK
2025-11-04T02:57:27.390 [DEBUG] [Thread-127343] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:57:27.390 [DEBUG] [Thread-127343] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:57:27.390 [DEBUG] [Thread-127343] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:57:27.390 [DEBUG] [Thread-127343] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:57:27.428 [INFO] [Thread-127343] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:57:27.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:57:28.196 [DEBUG] [Thread-127343] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:57:28.196 [DEBUG] [Thread-127343] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:57:28.197 [DEBUG] [Thread-127343] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:57:28.237 [DEBUG] [Thread-127343] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:57:28.237 [DEBUG] [Thread-127343] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:57:28.240 [DEBUG] [Thread-127343] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:57:28.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:57:28.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:57:28.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:57:28.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:57:28.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:57:28.266 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:57:28.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:57:28.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:57:28.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:57:28.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.039333 -999.00  +16.40  15.29     19   -6.90 1 1 1 1 1     0    0 23.62 7.20 ZNESW 19.4 15.3 312.7 20.7 16.7 -24.2 16.6 -22.8 16.4 -22.4 16.6 -23.7
2025-11-04T02:57:28.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:57:28.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:57:28.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.039333
2025-11-04T02:57:28.273 [DEBUG] [Thread-127343] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:57:28.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:57:28.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:57:28.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:57:28.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:57:28.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:57:28.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:57:05', tmtdew=27.23, humidity=14.56, cloud=0.0, wind=18.56, temperature=16.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:57:06', seeing=1.18, atlas_timestamp='2025-11-04T00:56:38.371', atlas_cloud=1, atlas_rain=1, zp_data=[0.024750000000000938, 0.02775000000000105, 0.1332500000000003, 0.03849999999999909, 0.09950000000000081, 0.06325000000000003, 0.0, 0.039250000000000895, 0.05149999999999899, 0.027000000000001023, 0.1197499999999998, 0.10899999999999999, 0.14649999999999963, 0.06524999999999892, 0.045999999999999375, -0.018499999999999517, 0.08424999999999905, 0.09149999999999991, 0.1169999999999991, 0.08874999999999922, 0.14999999999999858, -0.028750000000002274, 0.1122500000000013, 0.056250000000000355, 0.08099999999999952, 0.17249999999999943, 0.10725000000000051, 0.25650000000000084, 0.11899999999999977, -0.4449999999999985, 0.20200000000000173, 0.09500000000000064, 0.17524999999999835], zp_timestamp='2025-11-04T00:54:00')
2025-11-04T02:57:28.365 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:57:28.376 [DEBUG] [Thread-127346] [transport.py] [_log()] starting thread (client mode): 0xed11120
2025-11-04T02:57:28.377 [DEBUG] [Thread-127346] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:57:28.392 [DEBUG] [Thread-127346] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:57:28.392 [INFO] [Thread-127346] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:57:28.399 [DEBUG] [Thread-127346] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:57:28.399 [DEBUG] [Thread-127346] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:57:28.399 [DEBUG] [Thread-127346] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:57:28.399 [DEBUG] [Thread-127346] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:57:28.399 [DEBUG] [Thread-127346] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:57:28.399 [DEBUG] [Thread-127346] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:57:28.399 [DEBUG] [Thread-127346] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:57:28.399 [DEBUG] [Thread-127346] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:57:28.399 [DEBUG] [Thread-127346] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:57:28.399 [DEBUG] [Thread-127346] [transport.py] [_log()] client lang: <none>
2025-11-04T02:57:28.399 [DEBUG] [Thread-127346] [transport.py] [_log()] server lang: <none>
2025-11-04T02:57:28.399 [DEBUG] [Thread-127346] [transport.py] [_log()] kex follows: False
2025-11-04T02:57:28.399 [DEBUG] [Thread-127346] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:57:28.399 [DEBUG] [Thread-127346] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:57:28.400 [DEBUG] [Thread-127346] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:57:28.400 [DEBUG] [Thread-127346] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:57:28.400 [DEBUG] [Thread-127346] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:57:28.400 [DEBUG] [Thread-127346] [transport.py] [_log()] Compression: none
2025-11-04T02:57:28.400 [DEBUG] [Thread-127346] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:57:28.459 [DEBUG] [Thread-127346] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:57:28.459 [DEBUG] [Thread-127346] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:57:28.460 [DEBUG] [Thread-127346] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:57:28.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:57:28.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:57:28.518 [DEBUG] [Thread-127346] [transport.py] [_log()] userauth is OK
2025-11-04T02:57:28.519 [DEBUG] [Thread-127346] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:57:28.519 [DEBUG] [Thread-127346] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:57:28.519 [DEBUG] [Thread-127346] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:57:28.519 [DEBUG] [Thread-127346] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:57:28.534 [INFO] [Thread-127346] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:57:28.534 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:57:28.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:57:29.173 [DEBUG] [Thread-127348 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:57:29.427 [DEBUG] [Thread-127346] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:57:29.427 [DEBUG] [Thread-127346] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:57:29.475 [DEBUG] [Thread-127346] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:57:29.475 [DEBUG] [Thread-127346] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:57:29.483 [DEBUG] [Thread-127346] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:57:29.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:57:29.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:57:29.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:57:29.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:57:29.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:57:29.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:57:29.519 [DEBUG] [Thread-127346] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:57:44.263 [DEBUG] [Thread-127349 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:57:50.169 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:57:50.171 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:57:59.306 [DEBUG] [Thread-127350 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:57:59.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:57:59.544 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:57:59.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:58:00.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 57, 38), 27.29, 14.47, 0.0, 19.25, 16.31, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:58:00.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:57:38
2025-11-04T02:58:00.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:58:00.666 [DEBUG] [Thread-127351] [transport.py] [_log()] starting thread (client mode): 0xedc7730
2025-11-04T02:58:00.667 [DEBUG] [Thread-127351] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:58:00.686 [DEBUG] [Thread-127351] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:58:00.686 [INFO] [Thread-127351] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:58:00.689 [DEBUG] [Thread-127351] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:58:00.689 [DEBUG] [Thread-127351] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:58:00.689 [DEBUG] [Thread-127351] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:58:00.689 [DEBUG] [Thread-127351] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:58:00.689 [DEBUG] [Thread-127351] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:58:00.689 [DEBUG] [Thread-127351] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:58:00.689 [DEBUG] [Thread-127351] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:58:00.689 [DEBUG] [Thread-127351] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:58:00.689 [DEBUG] [Thread-127351] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:58:00.689 [DEBUG] [Thread-127351] [transport.py] [_log()] client lang: <none>
2025-11-04T02:58:00.689 [DEBUG] [Thread-127351] [transport.py] [_log()] server lang: <none>
2025-11-04T02:58:00.689 [DEBUG] [Thread-127351] [transport.py] [_log()] kex follows: False
2025-11-04T02:58:00.689 [DEBUG] [Thread-127351] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:58:00.689 [DEBUG] [Thread-127351] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:58:00.690 [DEBUG] [Thread-127351] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:58:00.690 [DEBUG] [Thread-127351] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:58:00.690 [DEBUG] [Thread-127351] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:58:00.690 [DEBUG] [Thread-127351] [transport.py] [_log()] Compression: none
2025-11-04T02:58:00.690 [DEBUG] [Thread-127351] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:58:00.702 [DEBUG] [Thread-127351] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:58:00.703 [DEBUG] [Thread-127351] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:58:00.703 [DEBUG] [Thread-127351] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:58:00.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:58:00.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:58:00.703 [DEBUG] [Thread-127351] [transport.py] [_log()] userauth is OK
2025-11-04T02:58:00.703 [DEBUG] [Thread-127351] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:58:00.703 [DEBUG] [Thread-127351] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:58:00.703 [DEBUG] [Thread-127351] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:58:00.703 [DEBUG] [Thread-127351] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:58:00.718 [INFO] [Thread-127351] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:58:00.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:58:01.328 [DEBUG] [Thread-127351] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:58:01.328 [DEBUG] [Thread-127351] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:58:01.331 [DEBUG] [Thread-127351] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:58:01.369 [DEBUG] [Thread-127351] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:58:01.370 [DEBUG] [Thread-127351] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:58:01.373 [DEBUG] [Thread-127351] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:58:01.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:58:01.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:58:01.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:58:01.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:58:01.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:58:01.402 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:58:01.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:58:01.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:58:01.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:58:01.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.039680 -999.00  +16.30  16.79     19   -6.90 1 1 1 1 1     0    0 23.52 7.36 ZNESW 20.5 16.8 308.6 23.3 16.7 -23.9 16.5 -22.9 16.4 -22.5 16.6 -23.5
2025-11-04T02:58:01.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:58:01.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:58:01.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.039680
2025-11-04T02:58:01.410 [DEBUG] [Thread-127351] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:58:01.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:58:01.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:58:01.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:58:01.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:58:01.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:58:01.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:57:38', tmtdew=27.29, humidity=14.47, cloud=0.0, wind=19.25, temperature=16.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:57:39', seeing=1.27, atlas_timestamp='2025-11-04T00:57:08.352', atlas_cloud=1, atlas_rain=1, zp_data=[0.024750000000000938, 0.02775000000000105, 0.1332500000000003, 0.03849999999999909, 0.09950000000000081, 0.06325000000000003, 0.0, 0.039250000000000895, 0.05149999999999899, 0.027000000000001023, 0.1197499999999998, 0.10899999999999999, 0.14649999999999963, 0.06524999999999892, 0.045999999999999375, -0.018499999999999517, 0.08424999999999905, 0.09149999999999991, 0.1169999999999991, 0.08874999999999922, 0.14999999999999858, -0.028750000000002274, 0.1122500000000013, 0.056250000000000355, 0.08099999999999952, 0.17249999999999943, 0.10725000000000051, 0.25650000000000084, 0.11899999999999977, -0.4449999999999985, 0.20200000000000173, 0.09500000000000064, 0.17524999999999835], zp_timestamp='2025-11-04T00:54:00')
2025-11-04T02:58:01.500 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:58:01.516 [DEBUG] [Thread-127354] [transport.py] [_log()] starting thread (client mode): 0xed20550
2025-11-04T02:58:01.516 [DEBUG] [Thread-127354] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:58:01.533 [DEBUG] [Thread-127354] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T02:58:01.533 [INFO] [Thread-127354] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T02:58:01.545 [DEBUG] [Thread-127354] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:58:01.545 [DEBUG] [Thread-127354] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T02:58:01.545 [DEBUG] [Thread-127354] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:58:01.545 [DEBUG] [Thread-127354] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:58:01.545 [DEBUG] [Thread-127354] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:58:01.545 [DEBUG] [Thread-127354] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:58:01.545 [DEBUG] [Thread-127354] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:58:01.545 [DEBUG] [Thread-127354] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:58:01.545 [DEBUG] [Thread-127354] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:58:01.545 [DEBUG] [Thread-127354] [transport.py] [_log()] client lang: <none>
2025-11-04T02:58:01.545 [DEBUG] [Thread-127354] [transport.py] [_log()] server lang: <none>
2025-11-04T02:58:01.545 [DEBUG] [Thread-127354] [transport.py] [_log()] kex follows: False
2025-11-04T02:58:01.545 [DEBUG] [Thread-127354] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:58:01.545 [DEBUG] [Thread-127354] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:58:01.545 [DEBUG] [Thread-127354] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:58:01.545 [DEBUG] [Thread-127354] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:58:01.545 [DEBUG] [Thread-127354] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:58:01.545 [DEBUG] [Thread-127354] [transport.py] [_log()] Compression: none
2025-11-04T02:58:01.545 [DEBUG] [Thread-127354] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:58:01.604 [DEBUG] [Thread-127354] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:58:01.604 [DEBUG] [Thread-127354] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:58:01.605 [DEBUG] [Thread-127354] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T02:58:01.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T02:58:01.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:58:01.662 [DEBUG] [Thread-127354] [transport.py] [_log()] userauth is OK
2025-11-04T02:58:01.662 [DEBUG] [Thread-127354] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:58:01.662 [DEBUG] [Thread-127354] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:58:01.662 [DEBUG] [Thread-127354] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T02:58:01.662 [DEBUG] [Thread-127354] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:58:01.680 [INFO] [Thread-127354] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:58:01.681 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T02:58:01.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:58:02.563 [DEBUG] [Thread-127354] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:58:02.564 [DEBUG] [Thread-127354] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:58:02.612 [DEBUG] [Thread-127354] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:58:02.612 [DEBUG] [Thread-127354] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:58:02.621 [DEBUG] [Thread-127354] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:58:02.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:58:02.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T02:58:02.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T02:58:02.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:58:02.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:58:02.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:58:02.664 [DEBUG] [Thread-127354] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:58:11.383 [DEBUG] [Thread-127356 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:58:14.359 [DEBUG] [Thread-127357 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:58:29.500 [DEBUG] [Thread-127358 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:58:32.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T02:58:32.687 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T02:58:32.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T02:58:33.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 2, 58, 11), 27.3, 14.47, 0.0, 18.58, 16.38, 0, 0, 0, 2, 0, 0),)
2025-11-04T02:58:33.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 02:58:11
2025-11-04T02:58:33.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T02:58:33.792 [DEBUG] [Thread-127359] [transport.py] [_log()] starting thread (client mode): 0xed137c0
2025-11-04T02:58:33.792 [DEBUG] [Thread-127359] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T02:58:33.805 [DEBUG] [Thread-127359] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T02:58:33.805 [INFO] [Thread-127359] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T02:58:33.809 [DEBUG] [Thread-127359] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T02:58:33.809 [DEBUG] [Thread-127359] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T02:58:33.809 [DEBUG] [Thread-127359] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T02:58:33.809 [DEBUG] [Thread-127359] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:58:33.809 [DEBUG] [Thread-127359] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T02:58:33.809 [DEBUG] [Thread-127359] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:58:33.809 [DEBUG] [Thread-127359] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T02:58:33.809 [DEBUG] [Thread-127359] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T02:58:33.809 [DEBUG] [Thread-127359] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T02:58:33.809 [DEBUG] [Thread-127359] [transport.py] [_log()] client lang: <none>
2025-11-04T02:58:33.809 [DEBUG] [Thread-127359] [transport.py] [_log()] server lang: <none>
2025-11-04T02:58:33.809 [DEBUG] [Thread-127359] [transport.py] [_log()] kex follows: False
2025-11-04T02:58:33.809 [DEBUG] [Thread-127359] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T02:58:33.809 [DEBUG] [Thread-127359] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T02:58:33.809 [DEBUG] [Thread-127359] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T02:58:33.809 [DEBUG] [Thread-127359] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T02:58:33.810 [DEBUG] [Thread-127359] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T02:58:33.810 [DEBUG] [Thread-127359] [transport.py] [_log()] Compression: none
2025-11-04T02:58:33.810 [DEBUG] [Thread-127359] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T02:58:33.834 [DEBUG] [Thread-127359] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T02:58:33.837 [DEBUG] [Thread-127359] [transport.py] [_log()] Switch to new keys ...
2025-11-04T02:58:33.839 [DEBUG] [Thread-127359] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T02:58:33.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T02:58:33.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T02:58:33.844 [DEBUG] [Thread-127359] [transport.py] [_log()] userauth is OK
2025-11-04T02:58:33.844 [DEBUG] [Thread-127359] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T02:58:33.844 [DEBUG] [Thread-127359] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T02:58:33.844 [DEBUG] [Thread-127359] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T02:58:33.844 [DEBUG] [Thread-127359] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T02:58:33.871 [INFO] [Thread-127359] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T02:58:33.874 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T02:58:34.510 [DEBUG] [Thread-127359] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T02:58:34.510 [DEBUG] [Thread-127359] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T02:58:34.519 [DEBUG] [Thread-127359] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T02:58:34.551 [DEBUG] [Thread-127359] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T02:58:34.551 [DEBUG] [Thread-127359] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T02:58:34.554 [DEBUG] [Thread-127359] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T02:58:34.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T02:58:34.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T02:58:34.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T02:58:34.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T02:58:34.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T02:58:34.572 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T02:58:34.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T02:58:34.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T02:58:34.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T02:58:34.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.040375 -999.00  +16.30  19.15     19   -7.00 1 1 1 1 1     0    0 23.54 6.90 ZNESW 18.4 19.1 313.0 20.9 16.7 -23.9 16.6 -23.0 16.3 -22.7 16.6 -23.5
2025-11-04T02:58:34.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T02:58:34.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T02:58:34.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.040375
2025-11-04T02:58:34.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T02:58:34.591 [DEBUG] [Thread-127359] [transport.py] [_log()] EOF in transport thread
2025-11-04T02:58:34.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T02:58:34.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T02:58:34.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T02:58:34.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T02:58:34.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T02:58:11', tmtdew=27.3, humidity=14.47, cloud=0.0, wind=18.58, temperature=16.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T02:58:12', seeing=1.27, atlas_timestamp='2025-11-04T00:58:08.400', atlas_cloud=1, atlas_rain=1, zp_data=[0.024750000000000938, 0.02775000000000105, 0.1332500000000003, 0.03849999999999909, 0.09950000000000081, 0.06325000000000003, 0.0, 0.039250000000000895, 0.05149999999999899, 0.027000000000001023, 0.1197499999999998, 0.10899999999999999, 0.14649999999999963, 0.06524999999999892, 0.045999999999999375, -0.018499999999999517, 0.08424999999999905, 0.09149999999999991, 0.1169999999999991, 0.08874999999999922, 0.14999999999999858, -0.028750000000002274, 0.1122500000000013, 0.056250000000000355, 0.08099999999999952, 0.17249999999999943, 0.10725000000000051, 0.25650000000000084, 0.11899999999999977, -0.4449999999999985, 0.20200000000000173, 0.09500000000000064, 0.17524999999999835], zp_timestamp='2025-11-04T00:54:00')
2025-11-04T02:58:34.666 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T02:58:44.538 [DEBUG] [Thread-127362 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:58:50.373 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:58:50.374 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:58:59.600 [DEBUG] [Thread-127363 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:59:11.667 [DEBUG] [Thread-127364 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:59:14.653 [DEBUG] [Thread-127365 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:59:29.711 [DEBUG] [Thread-127366 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:59:44.744 [DEBUG] [Thread-127367 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:59:50.577 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:59:50.578 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T02:59:59.787 [DEBUG] [Thread-127368 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:00:11.997 [DEBUG] [Thread-127369 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:00:14.821 [DEBUG] [Thread-127370 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:00:29.861 [DEBUG] [Thread-127371 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:00:44.907 [DEBUG] [Thread-127372 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:00:48.364 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-04T03:00:50.779 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:00:50.780 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:00:59.973 [DEBUG] [Thread-127373 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:01:12.285 [DEBUG] [Thread-127374 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:01:15.040 [DEBUG] [Thread-127375 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:01:18.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:01:18.405 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:01:18.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:01:19.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 0, 55), 27.36, 14.36, 0.0, 20.34, 16.38, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:01:19.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:00:55
2025-11-04T03:01:19.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:01:19.565 [DEBUG] [Thread-127376] [transport.py] [_log()] starting thread (client mode): 0xed05b70
2025-11-04T03:01:19.572 [DEBUG] [Thread-127376] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:01:19.579 [DEBUG] [Thread-127376] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:01:19.579 [INFO] [Thread-127376] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:01:19.583 [DEBUG] [Thread-127376] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:01:19.583 [DEBUG] [Thread-127376] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:01:19.583 [DEBUG] [Thread-127376] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:01:19.583 [DEBUG] [Thread-127376] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:01:19.583 [DEBUG] [Thread-127376] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:01:19.583 [DEBUG] [Thread-127376] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:01:19.583 [DEBUG] [Thread-127376] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:01:19.583 [DEBUG] [Thread-127376] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:01:19.583 [DEBUG] [Thread-127376] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:01:19.583 [DEBUG] [Thread-127376] [transport.py] [_log()] client lang: <none>
2025-11-04T03:01:19.583 [DEBUG] [Thread-127376] [transport.py] [_log()] server lang: <none>
2025-11-04T03:01:19.584 [DEBUG] [Thread-127376] [transport.py] [_log()] kex follows: False
2025-11-04T03:01:19.584 [DEBUG] [Thread-127376] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:01:19.584 [DEBUG] [Thread-127376] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:01:19.584 [DEBUG] [Thread-127376] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:01:19.584 [DEBUG] [Thread-127376] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:01:19.584 [DEBUG] [Thread-127376] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:01:19.584 [DEBUG] [Thread-127376] [transport.py] [_log()] Compression: none
2025-11-04T03:01:19.584 [DEBUG] [Thread-127376] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:01:19.618 [DEBUG] [Thread-127376] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:01:19.622 [DEBUG] [Thread-127376] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:01:19.624 [DEBUG] [Thread-127376] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:01:19.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:01:19.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:01:19.629 [DEBUG] [Thread-127376] [transport.py] [_log()] userauth is OK
2025-11-04T03:01:19.630 [DEBUG] [Thread-127376] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:01:19.630 [DEBUG] [Thread-127376] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:01:19.630 [DEBUG] [Thread-127376] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:01:19.630 [DEBUG] [Thread-127376] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:01:19.669 [INFO] [Thread-127376] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:01:19.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:01:20.307 [DEBUG] [Thread-127376] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:01:20.307 [DEBUG] [Thread-127376] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:01:20.317 [DEBUG] [Thread-127376] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:01:20.346 [DEBUG] [Thread-124687 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:01:20.348 [DEBUG] [Thread-127376] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:01:20.349 [DEBUG] [Thread-127376] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:01:20.351 [DEBUG] [Thread-127376] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:01:20.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:01:20.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:01:20.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:01:20.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:01:20.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:01:20.371 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:01:20.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:01:20.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:01:20.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:01:20.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.042111 -999.00  +16.20  19.14     19   -6.90 1 1 1 1 1     0    0 23.09 1.48 ZNESW 17.9 19.1 307.8 24.1 16.6 -23.8 16.5 -22.9 16.2 -22.5 16.5 -23.5
2025-11-04T03:01:20.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:01:20.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:01:20.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.042111
2025-11-04T03:01:20.384 [DEBUG] [Thread-127376] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:01:20.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:01:20.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:01:20.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:01:20.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:01:20.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:01:20.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:00:55', tmtdew=27.36, humidity=14.36, cloud=0.0, wind=20.34, temperature=16.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:00:56', seeing=0.98, atlas_timestamp='2025-11-04T01:00:38.390', atlas_cloud=1, atlas_rain=1, zp_data=[0.024750000000000938, 0.02775000000000105, 0.1332500000000003, 0.03849999999999909, 0.09950000000000081, 0.06325000000000003, 0.0, 0.039250000000000895, 0.05149999999999899, 0.027000000000001023, 0.1197499999999998, 0.10899999999999999, 0.14649999999999963, 0.06524999999999892, 0.045999999999999375, -0.018499999999999517, 0.08424999999999905, 0.09149999999999991, 0.1169999999999991, 0.08874999999999922, 0.14999999999999858, -0.028750000000002274, 0.1122500000000013, 0.056250000000000355, 0.08099999999999952, 0.17249999999999943, 0.10725000000000051, 0.25650000000000084, 0.11899999999999977, -0.4449999999999985, 0.20200000000000173, 0.09500000000000064, 0.17524999999999835], zp_timestamp='2025-11-04T00:57:00')
2025-11-04T03:01:20.468 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:01:20.480 [DEBUG] [Thread-127379] [transport.py] [_log()] starting thread (client mode): 0xed21900
2025-11-04T03:01:20.480 [DEBUG] [Thread-127379] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:01:20.502 [DEBUG] [Thread-127379] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:01:20.502 [INFO] [Thread-127379] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:01:20.509 [DEBUG] [Thread-127379] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:01:20.510 [DEBUG] [Thread-127379] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:01:20.510 [DEBUG] [Thread-127379] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:01:20.510 [DEBUG] [Thread-127379] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:01:20.510 [DEBUG] [Thread-127379] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:01:20.510 [DEBUG] [Thread-127379] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:01:20.510 [DEBUG] [Thread-127379] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:01:20.510 [DEBUG] [Thread-127379] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:01:20.510 [DEBUG] [Thread-127379] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:01:20.510 [DEBUG] [Thread-127379] [transport.py] [_log()] client lang: <none>
2025-11-04T03:01:20.510 [DEBUG] [Thread-127379] [transport.py] [_log()] server lang: <none>
2025-11-04T03:01:20.510 [DEBUG] [Thread-127379] [transport.py] [_log()] kex follows: False
2025-11-04T03:01:20.510 [DEBUG] [Thread-127379] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:01:20.510 [DEBUG] [Thread-127379] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:01:20.510 [DEBUG] [Thread-127379] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:01:20.510 [DEBUG] [Thread-127379] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:01:20.510 [DEBUG] [Thread-127379] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:01:20.510 [DEBUG] [Thread-127379] [transport.py] [_log()] Compression: none
2025-11-04T03:01:20.510 [DEBUG] [Thread-127379] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:01:20.571 [DEBUG] [Thread-127379] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:01:20.571 [DEBUG] [Thread-127379] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:01:20.572 [DEBUG] [Thread-127379] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:01:20.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:01:20.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:01:20.631 [DEBUG] [Thread-127379] [transport.py] [_log()] userauth is OK
2025-11-04T03:01:20.632 [DEBUG] [Thread-127379] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:01:20.632 [DEBUG] [Thread-127379] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:01:20.632 [DEBUG] [Thread-127379] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:01:20.632 [DEBUG] [Thread-127379] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:01:20.655 [INFO] [Thread-127379] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:01:20.655 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:01:20.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:01:21.530 [DEBUG] [Thread-127379] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:01:21.530 [DEBUG] [Thread-127379] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:01:21.578 [DEBUG] [Thread-127379] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:01:21.578 [DEBUG] [Thread-127379] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:01:21.587 [DEBUG] [Thread-127379] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:01:21.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:01:21.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:01:21.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:01:21.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:01:21.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:01:21.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:01:21.623 [DEBUG] [Thread-127379] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:01:30.078 [DEBUG] [Thread-127381 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:01:45.168 [DEBUG] [Thread-127382 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:01:50.984 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:01:50.986 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:01:51.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:01:51.626 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:01:51.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:01:52.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 1, 27), 27.37, 14.36, 0.0, 20.8, 16.41, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:01:52.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:01:27
2025-11-04T03:01:52.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:01:53.059 [DEBUG] [Thread-127383] [transport.py] [_log()] starting thread (client mode): 0xed13760
2025-11-04T03:01:53.060 [DEBUG] [Thread-127383] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:01:53.072 [DEBUG] [Thread-127383] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:01:53.072 [INFO] [Thread-127383] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:01:53.076 [DEBUG] [Thread-127383] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:01:53.076 [DEBUG] [Thread-127383] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:01:53.076 [DEBUG] [Thread-127383] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:01:53.076 [DEBUG] [Thread-127383] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:01:53.076 [DEBUG] [Thread-127383] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:01:53.076 [DEBUG] [Thread-127383] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:01:53.076 [DEBUG] [Thread-127383] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:01:53.076 [DEBUG] [Thread-127383] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:01:53.076 [DEBUG] [Thread-127383] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:01:53.076 [DEBUG] [Thread-127383] [transport.py] [_log()] client lang: <none>
2025-11-04T03:01:53.076 [DEBUG] [Thread-127383] [transport.py] [_log()] server lang: <none>
2025-11-04T03:01:53.076 [DEBUG] [Thread-127383] [transport.py] [_log()] kex follows: False
2025-11-04T03:01:53.076 [DEBUG] [Thread-127383] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:01:53.077 [DEBUG] [Thread-127383] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:01:53.077 [DEBUG] [Thread-127383] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:01:53.077 [DEBUG] [Thread-127383] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:01:53.077 [DEBUG] [Thread-127383] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:01:53.077 [DEBUG] [Thread-127383] [transport.py] [_log()] Compression: none
2025-11-04T03:01:53.077 [DEBUG] [Thread-127383] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:01:53.110 [DEBUG] [Thread-127383] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:01:53.114 [DEBUG] [Thread-127383] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:01:53.116 [DEBUG] [Thread-127383] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:01:53.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:01:53.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:01:53.120 [DEBUG] [Thread-127383] [transport.py] [_log()] userauth is OK
2025-11-04T03:01:53.120 [DEBUG] [Thread-127383] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:01:53.121 [DEBUG] [Thread-127383] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:01:53.121 [DEBUG] [Thread-127383] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:01:53.121 [DEBUG] [Thread-127383] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:01:53.142 [INFO] [Thread-127383] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:01:53.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:01:53.778 [DEBUG] [Thread-127383] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:01:53.778 [DEBUG] [Thread-127383] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:01:53.778 [DEBUG] [Thread-127383] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:01:53.819 [DEBUG] [Thread-127383] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:01:53.819 [DEBUG] [Thread-127383] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:01:53.822 [DEBUG] [Thread-127383] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:01:53.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:01:53.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:01:53.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:01:53.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:01:53.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:01:53.842 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:01:53.842 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:01:53.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:01:53.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:01:53.844 [DEBUG] [Thread-127383] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:01:53.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.042805 -999.00  +16.20  18.17     19   -7.00 1 1 1 1 1     0    0 23.44 -1.40 ZNESW 21.4 18.2 309.4 21.8 16.6 -23.8 16.5 -22.9 16.2 -22.6 16.6 -23.4
2025-11-04T03:01:53.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:01:53.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:01:53.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.042805
2025-11-04T03:01:53.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:01:53.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:01:53.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:01:53.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:01:53.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:01:53.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:01:27', tmtdew=27.37, humidity=14.36, cloud=0.0, wind=20.8, temperature=16.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:01:28', seeing=0.96, atlas_timestamp='2025-11-04T01:01:38.352', atlas_cloud=1, atlas_rain=1, zp_data=[0.0857499999999991, 0.05274999999999963, 0.14425000000000132, 0.08999999999999986, 0.04550000000000054, 0.06725000000000136, 0.026999999999999247, 0.060750000000000526, 0.09549999999999947, 0.08099999999999952, 0.15124999999999922, 0.07499999999999929, 0.25399999999999956, 0.10424999999999862, 0.058999999999999275, 0.021999999999998465, 0.07424999999999926, 0.08649999999999913, 0.16199999999999903, 0.13674999999999926, 0.17499999999999893, 0.13124999999999787, 0.11425000000000018, 0.08375000000000021, 0.09499999999999886, 0.18950000000000067, 0.14675000000000082, 0.28200000000000003, 0.23300000000000054, -0.3114999999999988, 0.23800000000000132, 0.1750000000000007, 0.18874999999999886], zp_timestamp='2025-11-04T01:01:00')
2025-11-04T03:01:53.926 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:01:53.938 [DEBUG] [Thread-127386] [transport.py] [_log()] starting thread (client mode): 0xed113c0
2025-11-04T03:01:53.938 [DEBUG] [Thread-127386] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:01:53.953 [DEBUG] [Thread-127386] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:01:53.953 [INFO] [Thread-127386] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:01:53.961 [DEBUG] [Thread-127386] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:01:53.961 [DEBUG] [Thread-127386] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:01:53.961 [DEBUG] [Thread-127386] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:01:53.961 [DEBUG] [Thread-127386] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:01:53.961 [DEBUG] [Thread-127386] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:01:53.961 [DEBUG] [Thread-127386] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:01:53.961 [DEBUG] [Thread-127386] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:01:53.961 [DEBUG] [Thread-127386] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:01:53.961 [DEBUG] [Thread-127386] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:01:53.961 [DEBUG] [Thread-127386] [transport.py] [_log()] client lang: <none>
2025-11-04T03:01:53.961 [DEBUG] [Thread-127386] [transport.py] [_log()] server lang: <none>
2025-11-04T03:01:53.961 [DEBUG] [Thread-127386] [transport.py] [_log()] kex follows: False
2025-11-04T03:01:53.961 [DEBUG] [Thread-127386] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:01:53.961 [DEBUG] [Thread-127386] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:01:53.961 [DEBUG] [Thread-127386] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:01:53.961 [DEBUG] [Thread-127386] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:01:53.961 [DEBUG] [Thread-127386] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:01:53.961 [DEBUG] [Thread-127386] [transport.py] [_log()] Compression: none
2025-11-04T03:01:53.961 [DEBUG] [Thread-127386] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:01:54.017 [DEBUG] [Thread-127386] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:01:54.018 [DEBUG] [Thread-127386] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:01:54.018 [DEBUG] [Thread-127386] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:01:54.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:01:54.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:01:54.078 [DEBUG] [Thread-127386] [transport.py] [_log()] userauth is OK
2025-11-04T03:01:54.078 [DEBUG] [Thread-127386] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:01:54.078 [DEBUG] [Thread-127386] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:01:54.078 [DEBUG] [Thread-127386] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:01:54.078 [DEBUG] [Thread-127386] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:01:54.096 [INFO] [Thread-127386] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:01:54.097 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:01:54.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:01:54.958 [DEBUG] [Thread-127386] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:01:54.959 [DEBUG] [Thread-127386] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:01:55.007 [DEBUG] [Thread-127386] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:01:55.007 [DEBUG] [Thread-127386] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:01:55.017 [DEBUG] [Thread-127386] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:01:55.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:01:55.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:01:55.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:01:55.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:01:55.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:01:55.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:01:55.054 [DEBUG] [Thread-127386] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:02:00.204 [DEBUG] [Thread-127388 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:02:12.613 [DEBUG] [Thread-127389 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:02:15.242 [DEBUG] [Thread-127390 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:02:25.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:02:25.079 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:02:25.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:02:25.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 2), 27.35, 14.36, 0.0, 20.59, 16.34, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:02:25.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:02:00
2025-11-04T03:02:26.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:02:26.258 [DEBUG] [Thread-127391] [transport.py] [_log()] starting thread (client mode): 0xedc6770
2025-11-04T03:02:26.258 [DEBUG] [Thread-127391] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:02:26.272 [DEBUG] [Thread-127391] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:02:26.272 [INFO] [Thread-127391] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:02:26.276 [DEBUG] [Thread-127391] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:02:26.276 [DEBUG] [Thread-127391] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:02:26.276 [DEBUG] [Thread-127391] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:02:26.276 [DEBUG] [Thread-127391] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:02:26.276 [DEBUG] [Thread-127391] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:02:26.276 [DEBUG] [Thread-127391] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:02:26.276 [DEBUG] [Thread-127391] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:02:26.276 [DEBUG] [Thread-127391] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:02:26.276 [DEBUG] [Thread-127391] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:02:26.276 [DEBUG] [Thread-127391] [transport.py] [_log()] client lang: <none>
2025-11-04T03:02:26.276 [DEBUG] [Thread-127391] [transport.py] [_log()] server lang: <none>
2025-11-04T03:02:26.276 [DEBUG] [Thread-127391] [transport.py] [_log()] kex follows: False
2025-11-04T03:02:26.276 [DEBUG] [Thread-127391] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:02:26.277 [DEBUG] [Thread-127391] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:02:26.277 [DEBUG] [Thread-127391] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:02:26.277 [DEBUG] [Thread-127391] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:02:26.277 [DEBUG] [Thread-127391] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:02:26.277 [DEBUG] [Thread-127391] [transport.py] [_log()] Compression: none
2025-11-04T03:02:26.277 [DEBUG] [Thread-127391] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:02:26.309 [DEBUG] [Thread-127391] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:02:26.313 [DEBUG] [Thread-127391] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:02:26.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:02:26.315 [DEBUG] [Thread-127391] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:02:26.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:02:26.319 [DEBUG] [Thread-127391] [transport.py] [_log()] userauth is OK
2025-11-04T03:02:26.319 [DEBUG] [Thread-127391] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:02:26.319 [DEBUG] [Thread-127391] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:02:26.319 [DEBUG] [Thread-127391] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:02:26.319 [DEBUG] [Thread-127391] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:02:26.344 [INFO] [Thread-127391] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:02:26.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:02:26.972 [DEBUG] [Thread-127391] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:02:26.973 [DEBUG] [Thread-127391] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:02:26.984 [DEBUG] [Thread-127391] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:02:27.014 [DEBUG] [Thread-127391] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:02:27.014 [DEBUG] [Thread-127391] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:02:27.018 [DEBUG] [Thread-127391] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:02:27.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:02:27.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:02:27.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:02:27.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:02:27.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:02:27.045 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:02:27.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:02:27.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:02:27.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:02:27.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.043152 -999.00  +16.30  18.15     19   -7.00 1 1 1 1 1     0    0 22.97 -1.05 ZNESW 17.7 18.1 308.2 23.3 16.6 -23.7 16.5 -22.9 16.3 -22.6 16.6 -23.3
2025-11-04T03:02:27.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:02:27.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:02:27.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.043152
2025-11-04T03:02:27.053 [DEBUG] [Thread-127391] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:02:27.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:02:27.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:02:27.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:02:27.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:02:27.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:02:27.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:02:00', tmtdew=27.35, humidity=14.36, cloud=0.0, wind=20.59, temperature=16.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:02:01', seeing=0.9, atlas_timestamp='2025-11-04T01:02:08.333', atlas_cloud=1, atlas_rain=1, zp_data=[0.0857499999999991, 0.05274999999999963, 0.14425000000000132, 0.08999999999999986, 0.04550000000000054, 0.06725000000000136, 0.026999999999999247, 0.060750000000000526, 0.09549999999999947, 0.08099999999999952, 0.15124999999999922, 0.07499999999999929, 0.25399999999999956, 0.10424999999999862, 0.058999999999999275, 0.021999999999998465, 0.07424999999999926, 0.08649999999999913, 0.16199999999999903, 0.13674999999999926, 0.17499999999999893, 0.13124999999999787, 0.11425000000000018, 0.08375000000000021, 0.09499999999999886, 0.18950000000000067, 0.14675000000000082, 0.28200000000000003, 0.23300000000000054, -0.3114999999999988, 0.23800000000000132, 0.1750000000000007, 0.18874999999999886], zp_timestamp='2025-11-04T01:01:00')
2025-11-04T03:02:27.157 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:02:27.170 [DEBUG] [Thread-127394] [transport.py] [_log()] starting thread (client mode): 0xed13c10
2025-11-04T03:02:27.170 [DEBUG] [Thread-127394] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:02:27.188 [DEBUG] [Thread-127394] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:02:27.188 [INFO] [Thread-127394] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:02:27.398 [DEBUG] [Thread-127394] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:02:27.398 [DEBUG] [Thread-127394] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:02:27.398 [DEBUG] [Thread-127394] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:02:27.398 [DEBUG] [Thread-127394] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:02:27.398 [DEBUG] [Thread-127394] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:02:27.398 [DEBUG] [Thread-127394] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:02:27.398 [DEBUG] [Thread-127394] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:02:27.398 [DEBUG] [Thread-127394] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:02:27.398 [DEBUG] [Thread-127394] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:02:27.398 [DEBUG] [Thread-127394] [transport.py] [_log()] client lang: <none>
2025-11-04T03:02:27.398 [DEBUG] [Thread-127394] [transport.py] [_log()] server lang: <none>
2025-11-04T03:02:27.398 [DEBUG] [Thread-127394] [transport.py] [_log()] kex follows: False
2025-11-04T03:02:27.398 [DEBUG] [Thread-127394] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:02:27.398 [DEBUG] [Thread-127394] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:02:27.398 [DEBUG] [Thread-127394] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:02:27.398 [DEBUG] [Thread-127394] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:02:27.398 [DEBUG] [Thread-127394] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:02:27.398 [DEBUG] [Thread-127394] [transport.py] [_log()] Compression: none
2025-11-04T03:02:27.398 [DEBUG] [Thread-127394] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:02:27.414 [DEBUG] [Thread-127394] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:02:27.414 [DEBUG] [Thread-127394] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:02:27.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:02:27.415 [DEBUG] [Thread-127394] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:02:27.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:02:27.470 [DEBUG] [Thread-127394] [transport.py] [_log()] userauth is OK
2025-11-04T03:02:27.471 [DEBUG] [Thread-127394] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:02:27.471 [DEBUG] [Thread-127394] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:02:27.471 [DEBUG] [Thread-127394] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:02:27.471 [DEBUG] [Thread-127394] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:02:27.492 [INFO] [Thread-127394] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:02:27.493 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:02:27.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:02:28.369 [DEBUG] [Thread-127394] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:02:28.369 [DEBUG] [Thread-127394] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:02:28.418 [DEBUG] [Thread-127394] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:02:28.418 [DEBUG] [Thread-127394] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:02:28.426 [DEBUG] [Thread-127394] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:02:28.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:02:28.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:02:28.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:02:28.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:02:28.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:02:28.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:02:28.474 [DEBUG] [Thread-127394] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:02:30.275 [DEBUG] [Thread-127396 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:02:45.369 [DEBUG] [Thread-127397 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:02:51.188 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:02:51.188 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:02:57.932 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:02:58.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:02:58.497 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:02:58.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:02:59.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 2, 33), 27.48, 14.34, 0.0, 22.39, 16.44, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:02:59.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:02:33
2025-11-04T03:02:59.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:02:59.480 [DEBUG] [Thread-127398] [transport.py] [_log()] starting thread (client mode): 0xed13130
2025-11-04T03:02:59.481 [DEBUG] [Thread-127398] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:02:59.495 [DEBUG] [Thread-127398] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:02:59.495 [INFO] [Thread-127398] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:02:59.500 [DEBUG] [Thread-127398] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:02:59.501 [DEBUG] [Thread-127398] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:02:59.501 [DEBUG] [Thread-127398] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:02:59.501 [DEBUG] [Thread-127398] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:02:59.501 [DEBUG] [Thread-127398] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:02:59.501 [DEBUG] [Thread-127398] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:02:59.501 [DEBUG] [Thread-127398] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:02:59.501 [DEBUG] [Thread-127398] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:02:59.501 [DEBUG] [Thread-127398] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:02:59.502 [DEBUG] [Thread-127398] [transport.py] [_log()] client lang: <none>
2025-11-04T03:02:59.502 [DEBUG] [Thread-127398] [transport.py] [_log()] server lang: <none>
2025-11-04T03:02:59.502 [DEBUG] [Thread-127398] [transport.py] [_log()] kex follows: False
2025-11-04T03:02:59.502 [DEBUG] [Thread-127398] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:02:59.502 [DEBUG] [Thread-127398] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:02:59.502 [DEBUG] [Thread-127398] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:02:59.503 [DEBUG] [Thread-127398] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:02:59.503 [DEBUG] [Thread-127398] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:02:59.503 [DEBUG] [Thread-127398] [transport.py] [_log()] Compression: none
2025-11-04T03:02:59.503 [DEBUG] [Thread-127398] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:02:59.537 [DEBUG] [Thread-127398] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:02:59.540 [DEBUG] [Thread-127398] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:02:59.541 [DEBUG] [Thread-127398] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:02:59.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:02:59.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:02:59.545 [DEBUG] [Thread-127398] [transport.py] [_log()] userauth is OK
2025-11-04T03:02:59.546 [DEBUG] [Thread-127398] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:02:59.546 [DEBUG] [Thread-127398] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:02:59.546 [DEBUG] [Thread-127398] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:02:59.546 [DEBUG] [Thread-127398] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:02:59.583 [INFO] [Thread-127398] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:02:59.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:03:00.248 [DEBUG] [Thread-127398] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:03:00.248 [DEBUG] [Thread-127398] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:03:00.248 [DEBUG] [Thread-127398] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:03:00.290 [DEBUG] [Thread-127398] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:03:00.290 [DEBUG] [Thread-127398] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:03:00.293 [DEBUG] [Thread-127398] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:03:00.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:03:00.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:03:00.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:03:00.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:03:00.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:03:00.314 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:03:00.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:03:00.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:03:00.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:03:00.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.043500 -999.00  +16.30  20.80     19   -7.00 1 1 1 1 1     0    0 23.19 -0.93 ZNESW 18.4 20.8 311.8 24.4 16.6 -23.9 16.5 -22.8 16.3 -22.4 16.6 -23.5
2025-11-04T03:03:00.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:03:00.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:03:00.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.043500
2025-11-04T03:03:00.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:03:00.321 [DEBUG] [Thread-127398] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:03:00.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:03:00.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:03:00.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:03:00.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:03:00.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:02:33', tmtdew=27.48, humidity=14.34, cloud=0.0, wind=22.39, temperature=16.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:02:34', seeing=0.9, atlas_timestamp='2025-11-04T01:02:38.400', atlas_cloud=1, atlas_rain=1, zp_data=[0.0857499999999991, 0.05274999999999963, 0.14425000000000132, 0.08999999999999986, 0.04550000000000054, 0.06725000000000136, 0.026999999999999247, 0.060750000000000526, 0.09549999999999947, 0.08099999999999952, 0.15124999999999922, 0.07499999999999929, 0.25399999999999956, 0.10424999999999862, 0.058999999999999275, 0.021999999999998465, 0.07424999999999926, 0.08649999999999913, 0.16199999999999903, 0.13674999999999926, 0.17499999999999893, 0.13124999999999787, 0.11425000000000018, 0.08375000000000021, 0.09499999999999886, 0.18950000000000067, 0.14675000000000082, 0.28200000000000003, 0.23300000000000054, -0.3114999999999988, 0.23800000000000132, 0.1750000000000007, 0.18874999999999886], zp_timestamp='2025-11-04T01:01:00')
2025-11-04T03:03:00.399 [DEBUG] [Thread-127401 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:03:00.401 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:03:00.413 [DEBUG] [Thread-127402] [transport.py] [_log()] starting thread (client mode): 0xed36e60
2025-11-04T03:03:00.413 [DEBUG] [Thread-127402] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:03:00.428 [DEBUG] [Thread-127402] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:03:00.428 [INFO] [Thread-127402] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:03:00.436 [DEBUG] [Thread-127402] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:03:00.436 [DEBUG] [Thread-127402] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:03:00.436 [DEBUG] [Thread-127402] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:03:00.436 [DEBUG] [Thread-127402] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:03:00.436 [DEBUG] [Thread-127402] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:03:00.436 [DEBUG] [Thread-127402] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:03:00.436 [DEBUG] [Thread-127402] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:03:00.436 [DEBUG] [Thread-127402] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:03:00.436 [DEBUG] [Thread-127402] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:03:00.436 [DEBUG] [Thread-127402] [transport.py] [_log()] client lang: <none>
2025-11-04T03:03:00.436 [DEBUG] [Thread-127402] [transport.py] [_log()] server lang: <none>
2025-11-04T03:03:00.436 [DEBUG] [Thread-127402] [transport.py] [_log()] kex follows: False
2025-11-04T03:03:00.436 [DEBUG] [Thread-127402] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:03:00.436 [DEBUG] [Thread-127402] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:03:00.436 [DEBUG] [Thread-127402] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:03:00.436 [DEBUG] [Thread-127402] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:03:00.436 [DEBUG] [Thread-127402] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:03:00.436 [DEBUG] [Thread-127402] [transport.py] [_log()] Compression: none
2025-11-04T03:03:00.436 [DEBUG] [Thread-127402] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:03:00.501 [DEBUG] [Thread-127402] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:03:00.501 [DEBUG] [Thread-127402] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:03:00.501 [DEBUG] [Thread-127402] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:03:00.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:03:00.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:03:00.558 [DEBUG] [Thread-127402] [transport.py] [_log()] userauth is OK
2025-11-04T03:03:00.558 [DEBUG] [Thread-127402] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:03:00.558 [DEBUG] [Thread-127402] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:03:00.558 [DEBUG] [Thread-127402] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:03:00.558 [DEBUG] [Thread-127402] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:03:00.577 [INFO] [Thread-127402] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:03:00.577 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:03:00.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:03:01.090 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:03:01.440 [DEBUG] [Thread-127402] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:03:01.440 [DEBUG] [Thread-127402] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:03:01.491 [DEBUG] [Thread-127402] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:03:01.491 [DEBUG] [Thread-127402] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:03:01.502 [DEBUG] [Thread-127402] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:03:01.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:03:01.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:03:01.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:03:01.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:03:01.536 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:03:01.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:03:01.546 [DEBUG] [Thread-127402] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:03:06.164 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:03:11.593 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:03:12.990 [DEBUG] [Thread-127404 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:03:15.483 [DEBUG] [Thread-127405 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:03:30.516 [DEBUG] [Thread-127406 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:03:30.943 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:03:31.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:03:31.557 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:03:31.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:03:32.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 3, 6), 27.47, 14.34, 0.0, 22.3, 16.41, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:03:32.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:03:06
2025-11-04T03:03:32.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:03:33.154 [DEBUG] [Thread-127407] [transport.py] [_log()] starting thread (client mode): 0xed11f30
2025-11-04T03:03:33.155 [DEBUG] [Thread-127407] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:03:33.166 [DEBUG] [Thread-127407] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:03:33.167 [INFO] [Thread-127407] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:03:33.172 [DEBUG] [Thread-127407] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:03:33.173 [DEBUG] [Thread-127407] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:03:33.173 [DEBUG] [Thread-127407] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:03:33.173 [DEBUG] [Thread-127407] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:03:33.173 [DEBUG] [Thread-127407] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:03:33.173 [DEBUG] [Thread-127407] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:03:33.173 [DEBUG] [Thread-127407] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:03:33.173 [DEBUG] [Thread-127407] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:03:33.173 [DEBUG] [Thread-127407] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:03:33.173 [DEBUG] [Thread-127407] [transport.py] [_log()] client lang: <none>
2025-11-04T03:03:33.173 [DEBUG] [Thread-127407] [transport.py] [_log()] server lang: <none>
2025-11-04T03:03:33.173 [DEBUG] [Thread-127407] [transport.py] [_log()] kex follows: False
2025-11-04T03:03:33.173 [DEBUG] [Thread-127407] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:03:33.174 [DEBUG] [Thread-127407] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:03:33.174 [DEBUG] [Thread-127407] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:03:33.174 [DEBUG] [Thread-127407] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:03:33.174 [DEBUG] [Thread-127407] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:03:33.174 [DEBUG] [Thread-127407] [transport.py] [_log()] Compression: none
2025-11-04T03:03:33.174 [DEBUG] [Thread-127407] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:03:33.203 [DEBUG] [Thread-127407] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:03:33.206 [DEBUG] [Thread-127407] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:03:33.208 [DEBUG] [Thread-127407] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:03:33.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:03:33.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:03:33.211 [DEBUG] [Thread-127407] [transport.py] [_log()] userauth is OK
2025-11-04T03:03:33.211 [DEBUG] [Thread-127407] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:03:33.211 [DEBUG] [Thread-127407] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:03:33.211 [DEBUG] [Thread-127407] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:03:33.211 [DEBUG] [Thread-127407] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:03:33.229 [INFO] [Thread-127407] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:03:33.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:03:33.838 [DEBUG] [Thread-127407] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:03:33.838 [DEBUG] [Thread-127407] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:03:33.840 [DEBUG] [Thread-127407] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:03:33.880 [DEBUG] [Thread-127407] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:03:33.880 [DEBUG] [Thread-127407] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:03:33.882 [DEBUG] [Thread-127407] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:03:33.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:03:33.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:03:33.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:03:33.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:03:33.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:03:33.903 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:03:33.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:03:33.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:03:33.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:03:33.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.043847 -999.00  +16.30  18.59     19   -7.00 1 1 1 1 1     0    0 23.36 -1.02 ZNESW 18.6 18.6 309.6 21.7 16.6 -23.9 16.6 -23.1 16.3 -22.6 -999.0 -999.0
2025-11-04T03:03:33.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:03:33.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:03:33.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.043847
2025-11-04T03:03:33.910 [DEBUG] [Thread-127407] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:03:33.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:03:33.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:03:33.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:03:33.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:03:33.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:03:33.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:03:06', tmtdew=27.47, humidity=14.34, cloud=0.0, wind=22.3, temperature=16.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:03:07', seeing=0.95, atlas_timestamp='2025-11-04T01:03:08.381', atlas_cloud=1, atlas_rain=1, zp_data=[0.0857499999999991, 0.05274999999999963, 0.14425000000000132, 0.08999999999999986, 0.04550000000000054, 0.06725000000000136, 0.026999999999999247, 0.060750000000000526, 0.09549999999999947, 0.08099999999999952, 0.15124999999999922, 0.07499999999999929, 0.25399999999999956, 0.10424999999999862, 0.058999999999999275, 0.021999999999998465, 0.07424999999999926, 0.08649999999999913, 0.16199999999999903, 0.13674999999999926, 0.17499999999999893, 0.13124999999999787, 0.11425000000000018, 0.08375000000000021, 0.09499999999999886, 0.18950000000000067, 0.14675000000000082, 0.28200000000000003, 0.23300000000000054, -0.3114999999999988, 0.23800000000000132, 0.1750000000000007, 0.18874999999999886], zp_timestamp='2025-11-04T01:01:00')
2025-11-04T03:03:34.005 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:03:34.016 [DEBUG] [Thread-127410] [transport.py] [_log()] starting thread (client mode): 0xed11720
2025-11-04T03:03:34.016 [DEBUG] [Thread-127410] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:03:34.031 [DEBUG] [Thread-127410] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:03:34.031 [INFO] [Thread-127410] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:03:34.039 [DEBUG] [Thread-127410] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:03:34.039 [DEBUG] [Thread-127410] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:03:34.039 [DEBUG] [Thread-127410] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:03:34.039 [DEBUG] [Thread-127410] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:03:34.039 [DEBUG] [Thread-127410] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:03:34.039 [DEBUG] [Thread-127410] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:03:34.039 [DEBUG] [Thread-127410] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:03:34.039 [DEBUG] [Thread-127410] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:03:34.039 [DEBUG] [Thread-127410] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:03:34.039 [DEBUG] [Thread-127410] [transport.py] [_log()] client lang: <none>
2025-11-04T03:03:34.039 [DEBUG] [Thread-127410] [transport.py] [_log()] server lang: <none>
2025-11-04T03:03:34.039 [DEBUG] [Thread-127410] [transport.py] [_log()] kex follows: False
2025-11-04T03:03:34.039 [DEBUG] [Thread-127410] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:03:34.039 [DEBUG] [Thread-127410] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:03:34.039 [DEBUG] [Thread-127410] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:03:34.039 [DEBUG] [Thread-127410] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:03:34.039 [DEBUG] [Thread-127410] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:03:34.039 [DEBUG] [Thread-127410] [transport.py] [_log()] Compression: none
2025-11-04T03:03:34.039 [DEBUG] [Thread-127410] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:03:34.096 [DEBUG] [Thread-127410] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:03:34.096 [DEBUG] [Thread-127410] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:03:34.096 [DEBUG] [Thread-127410] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:03:34.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:03:34.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:03:34.153 [DEBUG] [Thread-127410] [transport.py] [_log()] userauth is OK
2025-11-04T03:03:34.153 [DEBUG] [Thread-127410] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:03:34.153 [DEBUG] [Thread-127410] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:03:34.153 [DEBUG] [Thread-127410] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:03:34.153 [DEBUG] [Thread-127410] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:03:34.167 [INFO] [Thread-127410] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:03:34.168 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:03:34.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:03:35.003 [DEBUG] [Thread-127410] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:03:35.003 [DEBUG] [Thread-127410] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:03:35.050 [DEBUG] [Thread-127410] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:03:35.050 [DEBUG] [Thread-127410] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:03:35.059 [DEBUG] [Thread-127410] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:03:35.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:03:35.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:03:35.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:03:35.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:03:35.085 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:03:35.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:03:35.093 [DEBUG] [Thread-127410] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:03:35.352 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:03:45.573 [DEBUG] [Thread-127412 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:03:51.401 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:03:51.402 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:03:54.724 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:03:59.117 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:04:00.721 [DEBUG] [Thread-127413 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:04:05.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:04:05.128 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:04:05.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:04:05.255 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:04:06.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 3, 38), 27.49, 14.32, 0.0, 20.27, 16.43, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:04:06.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:03:38
2025-11-04T03:04:06.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:04:06.833 [DEBUG] [Thread-127414] [transport.py] [_log()] starting thread (client mode): 0xed118a0
2025-11-04T03:04:06.834 [DEBUG] [Thread-127414] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:04:06.846 [DEBUG] [Thread-127414] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:04:06.846 [INFO] [Thread-127414] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:04:06.851 [DEBUG] [Thread-127414] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:04:06.851 [DEBUG] [Thread-127414] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:04:06.851 [DEBUG] [Thread-127414] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:04:06.851 [DEBUG] [Thread-127414] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:04:06.851 [DEBUG] [Thread-127414] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:04:06.851 [DEBUG] [Thread-127414] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:04:06.851 [DEBUG] [Thread-127414] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:04:06.851 [DEBUG] [Thread-127414] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:04:06.851 [DEBUG] [Thread-127414] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:04:06.851 [DEBUG] [Thread-127414] [transport.py] [_log()] client lang: <none>
2025-11-04T03:04:06.852 [DEBUG] [Thread-127414] [transport.py] [_log()] server lang: <none>
2025-11-04T03:04:06.852 [DEBUG] [Thread-127414] [transport.py] [_log()] kex follows: False
2025-11-04T03:04:06.852 [DEBUG] [Thread-127414] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:04:06.852 [DEBUG] [Thread-127414] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:04:06.852 [DEBUG] [Thread-127414] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:04:06.852 [DEBUG] [Thread-127414] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:04:06.852 [DEBUG] [Thread-127414] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:04:06.852 [DEBUG] [Thread-127414] [transport.py] [_log()] Compression: none
2025-11-04T03:04:06.861 [DEBUG] [Thread-127414] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:04:06.899 [DEBUG] [Thread-127414] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:04:06.904 [DEBUG] [Thread-127414] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:04:06.906 [DEBUG] [Thread-127414] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:04:06.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:04:06.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:04:06.910 [DEBUG] [Thread-127414] [transport.py] [_log()] userauth is OK
2025-11-04T03:04:06.911 [DEBUG] [Thread-127414] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:04:06.911 [DEBUG] [Thread-127414] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:04:06.911 [DEBUG] [Thread-127414] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:04:06.911 [DEBUG] [Thread-127414] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:04:06.938 [INFO] [Thread-127414] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:04:06.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:04:07.551 [DEBUG] [Thread-127414] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:04:07.551 [DEBUG] [Thread-127414] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:04:07.562 [DEBUG] [Thread-127414] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:04:07.592 [DEBUG] [Thread-127414] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:04:07.592 [DEBUG] [Thread-127414] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:04:07.594 [DEBUG] [Thread-127414] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:04:07.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:04:07.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:04:07.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:04:07.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:04:07.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:04:07.616 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:04:07.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:04:07.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:04:07.618 [DEBUG] [Thread-127414] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:04:07.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:04:07.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.044194 -999.00  +16.30  19.40     19   -7.00 1 1 1 1 1     0    0 22.97 -1.42 ZNESW 17.8 19.4 312.0 22.5 16.6 -24.0 16.5 -23.0 16.3 -22.5 16.6 -23.6
2025-11-04T03:04:07.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:04:07.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:04:07.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.044194
2025-11-04T03:04:07.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:04:07.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:04:07.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:04:07.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:04:07.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:04:07.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:03:38', tmtdew=27.49, humidity=14.32, cloud=0.0, wind=20.27, temperature=16.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:03:39', seeing=0.95, atlas_timestamp='2025-11-04T01:03:38.362', atlas_cloud=1, atlas_rain=1, zp_data=[0.0857499999999991, 0.05274999999999963, 0.14425000000000132, 0.08999999999999986, 0.04550000000000054, 0.06725000000000136, 0.026999999999999247, 0.060750000000000526, 0.09549999999999947, 0.08099999999999952, 0.15124999999999922, 0.07499999999999929, 0.25399999999999956, 0.10424999999999862, 0.058999999999999275, 0.021999999999998465, 0.07424999999999926, 0.08649999999999913, 0.16199999999999903, 0.13674999999999926, 0.17499999999999893, 0.13124999999999787, 0.11425000000000018, 0.08375000000000021, 0.09499999999999886, 0.18950000000000067, 0.14675000000000082, 0.28200000000000003, 0.23300000000000054, -0.3114999999999988, 0.23800000000000132, 0.1750000000000007, 0.18874999999999886], zp_timestamp='2025-11-04T01:01:00')
2025-11-04T03:04:07.733 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:04:07.744 [DEBUG] [Thread-127417] [transport.py] [_log()] starting thread (client mode): 0xed06440
2025-11-04T03:04:07.744 [DEBUG] [Thread-127417] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:04:07.759 [DEBUG] [Thread-127417] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:04:07.759 [INFO] [Thread-127417] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:04:07.768 [DEBUG] [Thread-127417] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:04:07.768 [DEBUG] [Thread-127417] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:04:07.768 [DEBUG] [Thread-127417] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:04:07.768 [DEBUG] [Thread-127417] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:04:07.768 [DEBUG] [Thread-127417] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:04:07.768 [DEBUG] [Thread-127417] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:04:07.768 [DEBUG] [Thread-127417] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:04:07.769 [DEBUG] [Thread-127417] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:04:07.769 [DEBUG] [Thread-127417] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:04:07.769 [DEBUG] [Thread-127417] [transport.py] [_log()] client lang: <none>
2025-11-04T03:04:07.769 [DEBUG] [Thread-127417] [transport.py] [_log()] server lang: <none>
2025-11-04T03:04:07.769 [DEBUG] [Thread-127417] [transport.py] [_log()] kex follows: False
2025-11-04T03:04:07.769 [DEBUG] [Thread-127417] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:04:07.769 [DEBUG] [Thread-127417] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:04:07.769 [DEBUG] [Thread-127417] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:04:07.769 [DEBUG] [Thread-127417] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:04:07.770 [DEBUG] [Thread-127417] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:04:07.770 [DEBUG] [Thread-127417] [transport.py] [_log()] Compression: none
2025-11-04T03:04:07.770 [DEBUG] [Thread-127417] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:04:07.828 [DEBUG] [Thread-127417] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:04:07.828 [DEBUG] [Thread-127417] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:04:07.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:04:07.829 [DEBUG] [Thread-127417] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:04:07.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:04:07.886 [DEBUG] [Thread-127417] [transport.py] [_log()] userauth is OK
2025-11-04T03:04:07.886 [DEBUG] [Thread-127417] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:04:07.887 [DEBUG] [Thread-127417] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:04:07.887 [DEBUG] [Thread-127417] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:04:07.887 [DEBUG] [Thread-127417] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:04:07.905 [INFO] [Thread-127417] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:04:07.906 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:04:07.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:04:08.752 [DEBUG] [Thread-127417] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:04:08.753 [DEBUG] [Thread-127417] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:04:08.801 [DEBUG] [Thread-127417] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:04:08.801 [DEBUG] [Thread-127417] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:04:08.810 [DEBUG] [Thread-127417] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:04:08.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:04:08.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:04:08.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:04:08.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:04:08.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:04:08.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:04:08.845 [DEBUG] [Thread-127417] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:04:09.685 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:04:13.289 [DEBUG] [Thread-127419 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:04:15.771 [DEBUG] [Thread-127420 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:04:30.902 [DEBUG] [Thread-127421 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:04:38.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:04:38.848 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:04:38.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:04:39.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 4, 12), 27.48, 14.32, 0.0, 20.1, 16.41, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:04:39.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:04:12
2025-11-04T03:04:39.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:04:39.926 [DEBUG] [Thread-127422] [transport.py] [_log()] starting thread (client mode): 0xed13fd0
2025-11-04T03:04:39.927 [DEBUG] [Thread-127422] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:04:39.939 [DEBUG] [Thread-127422] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:04:39.939 [INFO] [Thread-127422] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:04:39.943 [DEBUG] [Thread-127422] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:04:39.943 [DEBUG] [Thread-127422] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:04:39.943 [DEBUG] [Thread-127422] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:04:39.943 [DEBUG] [Thread-127422] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:04:39.943 [DEBUG] [Thread-127422] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:04:39.943 [DEBUG] [Thread-127422] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:04:39.943 [DEBUG] [Thread-127422] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:04:39.943 [DEBUG] [Thread-127422] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:04:39.943 [DEBUG] [Thread-127422] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:04:39.943 [DEBUG] [Thread-127422] [transport.py] [_log()] client lang: <none>
2025-11-04T03:04:39.943 [DEBUG] [Thread-127422] [transport.py] [_log()] server lang: <none>
2025-11-04T03:04:39.943 [DEBUG] [Thread-127422] [transport.py] [_log()] kex follows: False
2025-11-04T03:04:39.943 [DEBUG] [Thread-127422] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:04:39.944 [DEBUG] [Thread-127422] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:04:39.944 [DEBUG] [Thread-127422] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:04:39.944 [DEBUG] [Thread-127422] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:04:39.944 [DEBUG] [Thread-127422] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:04:39.944 [DEBUG] [Thread-127422] [transport.py] [_log()] Compression: none
2025-11-04T03:04:39.944 [DEBUG] [Thread-127422] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:04:39.967 [DEBUG] [Thread-127422] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:04:39.968 [DEBUG] [Thread-127422] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:04:39.969 [DEBUG] [Thread-127422] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:04:39.969 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:04:39.970 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:04:40.010 [DEBUG] [Thread-127422] [transport.py] [_log()] userauth is OK
2025-11-04T03:04:40.010 [DEBUG] [Thread-127422] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:04:40.010 [DEBUG] [Thread-127422] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:04:40.010 [DEBUG] [Thread-127422] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:04:40.010 [DEBUG] [Thread-127422] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:04:40.040 [INFO] [Thread-127422] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:04:40.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:04:40.640 [DEBUG] [Thread-127422] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:04:40.640 [DEBUG] [Thread-127422] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:04:40.640 [DEBUG] [Thread-127422] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:04:40.689 [DEBUG] [Thread-127422] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:04:40.689 [DEBUG] [Thread-127422] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:04:40.691 [DEBUG] [Thread-127422] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:04:40.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:04:40.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:04:40.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:04:40.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:04:40.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:04:40.714 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:04:40.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:04:40.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:04:40.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:04:40.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.044541 -999.00  +16.20  14.60     19   -7.00 1 1 1 1 1     0    0 22.86 -1.71 ZNESW 15.1 14.6 304.2 22.2 16.6 -23.9 16.5 -23.1 16.3 -22.7 16.5 -23.6
2025-11-04T03:04:40.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:04:40.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:04:40.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.044541
2025-11-04T03:04:40.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:04:40.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:04:40.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:04:40.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:04:40.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:04:40.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:04:12', tmtdew=27.48, humidity=14.32, cloud=0.0, wind=20.1, temperature=16.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:04:12', seeing=0.94, atlas_timestamp='2025-11-04T01:04:08.342', atlas_cloud=1, atlas_rain=1, zp_data=[0.0857499999999991, 0.05274999999999963, 0.14425000000000132, 0.08999999999999986, 0.04550000000000054, 0.06725000000000136, 0.026999999999999247, 0.060750000000000526, 0.09549999999999947, 0.08099999999999952, 0.15124999999999922, 0.07499999999999929, 0.25399999999999956, 0.10424999999999862, 0.058999999999999275, 0.021999999999998465, 0.07424999999999926, 0.08649999999999913, 0.16199999999999903, 0.13674999999999926, 0.17499999999999893, 0.13124999999999787, 0.11425000000000018, 0.08375000000000021, 0.09499999999999886, 0.18950000000000067, 0.14675000000000082, 0.28200000000000003, 0.23300000000000054, -0.3114999999999988, 0.23800000000000132, 0.1750000000000007, 0.18874999999999886], zp_timestamp='2025-11-04T01:01:00')
2025-11-04T03:04:40.720 [DEBUG] [Thread-127422] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:04:40.794 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:04:40.807 [DEBUG] [Thread-127425] [transport.py] [_log()] starting thread (client mode): 0xed10910
2025-11-04T03:04:40.807 [DEBUG] [Thread-127425] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:04:40.822 [DEBUG] [Thread-127425] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:04:40.822 [INFO] [Thread-127425] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:04:40.830 [DEBUG] [Thread-127425] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:04:40.830 [DEBUG] [Thread-127425] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:04:40.830 [DEBUG] [Thread-127425] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:04:40.830 [DEBUG] [Thread-127425] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:04:40.830 [DEBUG] [Thread-127425] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:04:40.830 [DEBUG] [Thread-127425] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:04:40.830 [DEBUG] [Thread-127425] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:04:40.830 [DEBUG] [Thread-127425] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:04:40.830 [DEBUG] [Thread-127425] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:04:40.830 [DEBUG] [Thread-127425] [transport.py] [_log()] client lang: <none>
2025-11-04T03:04:40.830 [DEBUG] [Thread-127425] [transport.py] [_log()] server lang: <none>
2025-11-04T03:04:40.830 [DEBUG] [Thread-127425] [transport.py] [_log()] kex follows: False
2025-11-04T03:04:40.831 [DEBUG] [Thread-127425] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:04:40.831 [DEBUG] [Thread-127425] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:04:40.831 [DEBUG] [Thread-127425] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:04:40.831 [DEBUG] [Thread-127425] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:04:40.831 [DEBUG] [Thread-127425] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:04:40.831 [DEBUG] [Thread-127425] [transport.py] [_log()] Compression: none
2025-11-04T03:04:40.831 [DEBUG] [Thread-127425] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:04:40.889 [DEBUG] [Thread-127425] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:04:40.889 [DEBUG] [Thread-127425] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:04:40.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:04:40.890 [DEBUG] [Thread-127425] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:04:40.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:04:40.946 [DEBUG] [Thread-127425] [transport.py] [_log()] userauth is OK
2025-11-04T03:04:40.946 [DEBUG] [Thread-127425] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:04:40.946 [DEBUG] [Thread-127425] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:04:40.946 [DEBUG] [Thread-127425] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:04:40.946 [DEBUG] [Thread-127425] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:04:40.966 [INFO] [Thread-127425] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:04:40.966 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:04:40.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:04:41.806 [DEBUG] [Thread-127425] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:04:41.807 [DEBUG] [Thread-127425] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:04:41.854 [DEBUG] [Thread-127425] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:04:41.855 [DEBUG] [Thread-127425] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:04:41.864 [DEBUG] [Thread-127425] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:04:41.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:04:41.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:04:41.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:04:41.893 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:04:41.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:04:41.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:04:41.903 [DEBUG] [Thread-127425] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:04:45.933 [DEBUG] [Thread-127427 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:04:51.610 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:04:51.611 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:05:01.021 [DEBUG] [Thread-127428 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:05:11.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:05:11.937 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:05:11.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:05:12.209 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:05:12.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 4, 44), 27.64, 13.76, 0.0, 20.26, 16.43, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:05:12.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:04:44
2025-11-04T03:05:12.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:05:13.066 [DEBUG] [Thread-127429] [transport.py] [_log()] starting thread (client mode): 0xed37970
2025-11-04T03:05:13.067 [DEBUG] [Thread-127429] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:05:13.079 [DEBUG] [Thread-127429] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:05:13.079 [INFO] [Thread-127429] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:05:13.083 [DEBUG] [Thread-127429] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:05:13.083 [DEBUG] [Thread-127429] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:05:13.084 [DEBUG] [Thread-127429] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:05:13.084 [DEBUG] [Thread-127429] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:05:13.084 [DEBUG] [Thread-127429] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:05:13.084 [DEBUG] [Thread-127429] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:05:13.084 [DEBUG] [Thread-127429] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:05:13.084 [DEBUG] [Thread-127429] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:05:13.084 [DEBUG] [Thread-127429] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:05:13.084 [DEBUG] [Thread-127429] [transport.py] [_log()] client lang: <none>
2025-11-04T03:05:13.084 [DEBUG] [Thread-127429] [transport.py] [_log()] server lang: <none>
2025-11-04T03:05:13.084 [DEBUG] [Thread-127429] [transport.py] [_log()] kex follows: False
2025-11-04T03:05:13.084 [DEBUG] [Thread-127429] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:05:13.085 [DEBUG] [Thread-127429] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:05:13.085 [DEBUG] [Thread-127429] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:05:13.085 [DEBUG] [Thread-127429] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:05:13.085 [DEBUG] [Thread-127429] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:05:13.085 [DEBUG] [Thread-127429] [transport.py] [_log()] Compression: none
2025-11-04T03:05:13.085 [DEBUG] [Thread-127429] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:05:13.117 [DEBUG] [Thread-127429] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:05:13.121 [DEBUG] [Thread-127429] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:05:13.123 [DEBUG] [Thread-127429] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:05:13.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:05:13.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:05:13.128 [DEBUG] [Thread-127429] [transport.py] [_log()] userauth is OK
2025-11-04T03:05:13.128 [DEBUG] [Thread-127429] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:05:13.128 [DEBUG] [Thread-127429] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:05:13.128 [DEBUG] [Thread-127429] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:05:13.128 [DEBUG] [Thread-127429] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:05:13.166 [INFO] [Thread-127429] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:05:13.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:05:13.663 [DEBUG] [Thread-127431 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:05:15.291 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:05:16.125 [DEBUG] [Thread-127432 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:05:16.797 [DEBUG] [Thread-127429] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:05:16.798 [DEBUG] [Thread-127429] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:05:16.809 [DEBUG] [Thread-127429] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:05:16.839 [DEBUG] [Thread-127429] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:05:16.839 [DEBUG] [Thread-127429] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:05:16.845 [DEBUG] [Thread-127429] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:05:16.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:05:16.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:05:16.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:05:16.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:05:16.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:05:16.901 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:05:16.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:05:16.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:05:16.904 [DEBUG] [Thread-127429] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:05:16.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:05:16.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.044541 -999.00  +16.20  14.60     19   -7.00 1 1 1 1 1     0    0 22.86 -1.71 ZNESW 15.1 14.6 304.2 22.2 16.6 -23.9 16.5 -23.1 16.3 -22.7 16.5 -23.6
2025-11-04T03:05:16.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:05:16.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:05:16.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.044541
2025-11-04T03:05:16.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:05:16.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:05:16.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:05:16.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:05:16.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:05:16.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:04:44', tmtdew=27.64, humidity=13.76, cloud=0.0, wind=20.26, temperature=16.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:04:44', seeing=0.91, atlas_timestamp='2025-11-04T01:04:08.342', atlas_cloud=1, atlas_rain=1, zp_data=[0.0857499999999991, 0.05274999999999963, 0.14425000000000132, 0.08999999999999986, 0.04550000000000054, 0.06725000000000136, 0.026999999999999247, 0.060750000000000526, 0.09549999999999947, 0.08099999999999952, 0.15124999999999922, 0.07499999999999929, 0.25399999999999956, 0.10424999999999862, 0.058999999999999275, 0.021999999999998465, 0.07424999999999926, 0.08649999999999913, 0.16199999999999903, 0.13674999999999926, 0.17499999999999893, 0.13124999999999787, 0.11425000000000018, 0.08375000000000021, 0.09499999999999886, 0.18950000000000067, 0.14675000000000082, 0.28200000000000003, 0.23300000000000054, -0.3114999999999988, 0.23800000000000132, 0.1750000000000007, 0.18874999999999886], zp_timestamp='2025-11-04T01:03:00')
2025-11-04T03:05:17.012 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:05:17.025 [DEBUG] [Thread-127434] [transport.py] [_log()] starting thread (client mode): 0xedc4850
2025-11-04T03:05:17.025 [DEBUG] [Thread-127434] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:05:17.041 [DEBUG] [Thread-127434] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:05:17.041 [INFO] [Thread-127434] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:05:17.049 [DEBUG] [Thread-127434] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:05:17.049 [DEBUG] [Thread-127434] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:05:17.049 [DEBUG] [Thread-127434] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:05:17.049 [DEBUG] [Thread-127434] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:05:17.049 [DEBUG] [Thread-127434] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:05:17.049 [DEBUG] [Thread-127434] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:05:17.049 [DEBUG] [Thread-127434] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:05:17.049 [DEBUG] [Thread-127434] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:05:17.049 [DEBUG] [Thread-127434] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:05:17.049 [DEBUG] [Thread-127434] [transport.py] [_log()] client lang: <none>
2025-11-04T03:05:17.049 [DEBUG] [Thread-127434] [transport.py] [_log()] server lang: <none>
2025-11-04T03:05:17.049 [DEBUG] [Thread-127434] [transport.py] [_log()] kex follows: False
2025-11-04T03:05:17.049 [DEBUG] [Thread-127434] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:05:17.049 [DEBUG] [Thread-127434] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:05:17.050 [DEBUG] [Thread-127434] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:05:17.050 [DEBUG] [Thread-127434] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:05:17.050 [DEBUG] [Thread-127434] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:05:17.050 [DEBUG] [Thread-127434] [transport.py] [_log()] Compression: none
2025-11-04T03:05:17.050 [DEBUG] [Thread-127434] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:05:17.107 [DEBUG] [Thread-127434] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:05:17.108 [DEBUG] [Thread-127434] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:05:17.108 [DEBUG] [Thread-127434] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:05:17.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:05:17.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:05:17.166 [DEBUG] [Thread-127434] [transport.py] [_log()] userauth is OK
2025-11-04T03:05:17.167 [DEBUG] [Thread-127434] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:05:17.167 [DEBUG] [Thread-127434] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:05:17.167 [DEBUG] [Thread-127434] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:05:17.167 [DEBUG] [Thread-127434] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:05:17.186 [INFO] [Thread-127434] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:05:17.186 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:05:17.187 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:05:18.035 [DEBUG] [Thread-127434] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:05:18.035 [DEBUG] [Thread-127434] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:05:18.083 [DEBUG] [Thread-127434] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:05:18.083 [DEBUG] [Thread-127434] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:05:18.092 [DEBUG] [Thread-127434] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:05:18.099 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:05:18.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:05:18.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:05:18.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:05:18.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:05:18.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:05:18.127 [DEBUG] [Thread-127434] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:05:31.164 [DEBUG] [Thread-127436 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:05:46.260 [DEBUG] [Thread-127437 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:05:48.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:05:48.143 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:05:48.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:05:48.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 5, 16), 27.67, 13.74, 0.0, 19.94, 16.49, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:05:48.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:05:16
2025-11-04T03:05:49.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:05:49.302 [DEBUG] [Thread-127438] [transport.py] [_log()] starting thread (client mode): 0xed11f60
2025-11-04T03:05:49.303 [DEBUG] [Thread-127438] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:05:49.316 [DEBUG] [Thread-127438] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:05:49.316 [INFO] [Thread-127438] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:05:49.323 [DEBUG] [Thread-127438] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:05:49.324 [DEBUG] [Thread-127438] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:05:49.324 [DEBUG] [Thread-127438] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:05:49.324 [DEBUG] [Thread-127438] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:05:49.324 [DEBUG] [Thread-127438] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:05:49.324 [DEBUG] [Thread-127438] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:05:49.324 [DEBUG] [Thread-127438] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:05:49.324 [DEBUG] [Thread-127438] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:05:49.324 [DEBUG] [Thread-127438] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:05:49.324 [DEBUG] [Thread-127438] [transport.py] [_log()] client lang: <none>
2025-11-04T03:05:49.324 [DEBUG] [Thread-127438] [transport.py] [_log()] server lang: <none>
2025-11-04T03:05:49.324 [DEBUG] [Thread-127438] [transport.py] [_log()] kex follows: False
2025-11-04T03:05:49.324 [DEBUG] [Thread-127438] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:05:49.325 [DEBUG] [Thread-127438] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:05:49.325 [DEBUG] [Thread-127438] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:05:49.325 [DEBUG] [Thread-127438] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:05:49.325 [DEBUG] [Thread-127438] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:05:49.325 [DEBUG] [Thread-127438] [transport.py] [_log()] Compression: none
2025-11-04T03:05:49.325 [DEBUG] [Thread-127438] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:05:49.361 [DEBUG] [Thread-127438] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:05:49.367 [DEBUG] [Thread-127438] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:05:49.369 [DEBUG] [Thread-127438] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:05:49.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:05:49.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:05:49.375 [DEBUG] [Thread-127438] [transport.py] [_log()] userauth is OK
2025-11-04T03:05:49.376 [DEBUG] [Thread-127438] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:05:49.376 [DEBUG] [Thread-127438] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:05:49.376 [DEBUG] [Thread-127438] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:05:49.376 [DEBUG] [Thread-127438] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:05:49.405 [INFO] [Thread-127438] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:05:49.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:05:50.039 [DEBUG] [Thread-127438] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:05:50.040 [DEBUG] [Thread-127438] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:05:50.042 [DEBUG] [Thread-127438] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:05:50.080 [DEBUG] [Thread-127438] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:05:50.081 [DEBUG] [Thread-127438] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:05:50.085 [DEBUG] [Thread-127438] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:05:50.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:05:50.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:05:50.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:05:50.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:05:50.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:05:50.113 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:05:50.113 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:05:50.113 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:05:50.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:05:50.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.045235 -999.00  +16.30  18.76     19   -7.00 1 1 1 1 1     0    0 23.18 -2.45 ZNESW 16.4 18.8 311.0 25.6 16.7 -24.0 16.5 -23.0 16.3 -22.7 16.5 -23.5
2025-11-04T03:05:50.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:05:50.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:05:50.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.045235
2025-11-04T03:05:50.121 [DEBUG] [Thread-127438] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:05:50.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:05:50.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:05:50.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:05:50.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:05:50.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:05:50.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:05:16', tmtdew=27.67, humidity=13.74, cloud=0.0, wind=19.94, temperature=16.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:05:17', seeing=0.91, atlas_timestamp='2025-11-04T01:05:08.304', atlas_cloud=1, atlas_rain=1, zp_data=[0.0857499999999991, 0.05274999999999963, 0.14425000000000132, 0.08999999999999986, 0.04550000000000054, 0.06725000000000136, 0.026999999999999247, 0.060750000000000526, 0.09549999999999947, 0.08099999999999952, 0.15124999999999922, 0.07499999999999929, 0.25399999999999956, 0.10424999999999862, 0.058999999999999275, 0.021999999999998465, 0.07424999999999926, 0.08649999999999913, 0.16199999999999903, 0.13674999999999926, 0.17499999999999893, 0.13124999999999787, 0.11425000000000018, 0.08375000000000021, 0.09499999999999886, 0.18950000000000067, 0.14675000000000082, 0.28200000000000003, 0.23300000000000054, -0.3114999999999988, 0.23800000000000132, 0.1750000000000007, 0.18874999999999886], zp_timestamp='2025-11-04T01:03:00')
2025-11-04T03:05:50.211 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:05:50.228 [DEBUG] [Thread-127441] [transport.py] [_log()] starting thread (client mode): 0xed12f50
2025-11-04T03:05:50.228 [DEBUG] [Thread-127441] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:05:50.247 [DEBUG] [Thread-127441] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:05:50.247 [INFO] [Thread-127441] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:05:50.258 [DEBUG] [Thread-127441] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:05:50.259 [DEBUG] [Thread-127441] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:05:50.259 [DEBUG] [Thread-127441] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:05:50.259 [DEBUG] [Thread-127441] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:05:50.259 [DEBUG] [Thread-127441] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:05:50.259 [DEBUG] [Thread-127441] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:05:50.259 [DEBUG] [Thread-127441] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:05:50.259 [DEBUG] [Thread-127441] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:05:50.259 [DEBUG] [Thread-127441] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:05:50.259 [DEBUG] [Thread-127441] [transport.py] [_log()] client lang: <none>
2025-11-04T03:05:50.259 [DEBUG] [Thread-127441] [transport.py] [_log()] server lang: <none>
2025-11-04T03:05:50.259 [DEBUG] [Thread-127441] [transport.py] [_log()] kex follows: False
2025-11-04T03:05:50.259 [DEBUG] [Thread-127441] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:05:50.259 [DEBUG] [Thread-127441] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:05:50.259 [DEBUG] [Thread-127441] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:05:50.259 [DEBUG] [Thread-127441] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:05:50.259 [DEBUG] [Thread-127441] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:05:50.259 [DEBUG] [Thread-127441] [transport.py] [_log()] Compression: none
2025-11-04T03:05:50.261 [DEBUG] [Thread-127441] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:05:50.322 [DEBUG] [Thread-127441] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:05:50.322 [DEBUG] [Thread-127441] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:05:50.323 [DEBUG] [Thread-127441] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:05:50.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:05:50.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:05:50.378 [DEBUG] [Thread-127441] [transport.py] [_log()] userauth is OK
2025-11-04T03:05:50.378 [DEBUG] [Thread-127441] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:05:50.378 [DEBUG] [Thread-127441] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:05:50.378 [DEBUG] [Thread-127441] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:05:50.378 [DEBUG] [Thread-127441] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:05:50.392 [INFO] [Thread-127441] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:05:50.392 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:05:50.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:05:51.218 [DEBUG] [Thread-127441] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:05:51.218 [DEBUG] [Thread-127441] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:05:51.266 [DEBUG] [Thread-127441] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:05:51.266 [DEBUG] [Thread-127441] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:05:51.274 [DEBUG] [Thread-127441] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:05:51.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:05:51.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:05:51.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:05:51.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:05:51.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:05:51.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:05:51.310 [DEBUG] [Thread-127441] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:05:51.814 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:05:51.815 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:06:01.294 [DEBUG] [Thread-127443 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:06:13.942 [DEBUG] [Thread-127444 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:06:16.360 [DEBUG] [Thread-127445 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:06:21.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:06:21.342 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:06:21.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:06:22.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 5, 50), 27.65, 13.78, 0.0, 20.29, 16.53, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:06:22.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:05:50
2025-11-04T03:06:22.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:06:22.452 [DEBUG] [Thread-127446] [transport.py] [_log()] starting thread (client mode): 0xedc7b80
2025-11-04T03:06:22.453 [DEBUG] [Thread-127446] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:06:22.465 [DEBUG] [Thread-127446] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:06:22.465 [INFO] [Thread-127446] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:06:22.471 [DEBUG] [Thread-127446] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:06:22.472 [DEBUG] [Thread-127446] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:06:22.472 [DEBUG] [Thread-127446] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:06:22.472 [DEBUG] [Thread-127446] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:06:22.472 [DEBUG] [Thread-127446] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:06:22.472 [DEBUG] [Thread-127446] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:06:22.472 [DEBUG] [Thread-127446] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:06:22.472 [DEBUG] [Thread-127446] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:06:22.472 [DEBUG] [Thread-127446] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:06:22.472 [DEBUG] [Thread-127446] [transport.py] [_log()] client lang: <none>
2025-11-04T03:06:22.472 [DEBUG] [Thread-127446] [transport.py] [_log()] server lang: <none>
2025-11-04T03:06:22.472 [DEBUG] [Thread-127446] [transport.py] [_log()] kex follows: False
2025-11-04T03:06:22.472 [DEBUG] [Thread-127446] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:06:22.473 [DEBUG] [Thread-127446] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:06:22.473 [DEBUG] [Thread-127446] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:06:22.473 [DEBUG] [Thread-127446] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:06:22.473 [DEBUG] [Thread-127446] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:06:22.473 [DEBUG] [Thread-127446] [transport.py] [_log()] Compression: none
2025-11-04T03:06:22.473 [DEBUG] [Thread-127446] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:06:22.518 [DEBUG] [Thread-127446] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:06:22.524 [DEBUG] [Thread-127446] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:06:22.526 [DEBUG] [Thread-127446] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:06:22.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:06:22.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:06:22.529 [DEBUG] [Thread-127446] [transport.py] [_log()] userauth is OK
2025-11-04T03:06:22.530 [DEBUG] [Thread-127446] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:06:22.530 [DEBUG] [Thread-127446] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:06:22.530 [DEBUG] [Thread-127446] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:06:22.530 [DEBUG] [Thread-127446] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:06:22.556 [INFO] [Thread-127446] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:06:22.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:06:23.138 [DEBUG] [Thread-127446] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:06:23.138 [DEBUG] [Thread-127446] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:06:23.139 [DEBUG] [Thread-127446] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:06:23.180 [DEBUG] [Thread-127446] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:06:23.180 [DEBUG] [Thread-127446] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:06:23.182 [DEBUG] [Thread-127446] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:06:23.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:06:23.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:06:23.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:06:23.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:06:23.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:06:23.204 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:06:23.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:06:23.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:06:23.206 [DEBUG] [Thread-127446] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:06:23.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:06:23.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.045583 -999.00  +16.30  16.75     19   -7.00 1 1 1 1 1     0    0 22.67 -2.59 ZNESW 17.9 16.8 308.2 22.0 16.6 -24.0 16.6 -22.9 16.3 -22.6 16.6 -23.6
2025-11-04T03:06:23.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:06:23.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:06:23.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.045583
2025-11-04T03:06:23.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:06:23.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:06:23.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:06:23.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:06:23.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:06:23.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:05:50', tmtdew=27.65, humidity=13.78, cloud=0.0, wind=20.29, temperature=16.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:05:50', seeing=0.96, atlas_timestamp='2025-11-04T01:05:38.371', atlas_cloud=1, atlas_rain=1, zp_data=[0.0857499999999991, 0.05274999999999963, 0.14425000000000132, 0.08999999999999986, 0.04550000000000054, 0.06725000000000136, 0.026999999999999247, 0.060750000000000526, 0.09549999999999947, 0.08099999999999952, 0.15124999999999922, 0.07499999999999929, 0.25399999999999956, 0.10424999999999862, 0.058999999999999275, 0.021999999999998465, 0.07424999999999926, 0.08649999999999913, 0.16199999999999903, 0.13674999999999926, 0.17499999999999893, 0.13124999999999787, 0.11425000000000018, 0.08375000000000021, 0.09499999999999886, 0.18950000000000067, 0.14675000000000082, 0.28200000000000003, 0.23300000000000054, -0.3114999999999988, 0.23800000000000132, 0.1750000000000007, 0.18874999999999886], zp_timestamp='2025-11-04T01:03:00')
2025-11-04T03:06:23.304 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:06:23.318 [DEBUG] [Thread-127449] [transport.py] [_log()] starting thread (client mode): 0xedc62f0
2025-11-04T03:06:23.318 [DEBUG] [Thread-127449] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:06:23.336 [DEBUG] [Thread-127449] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:06:23.336 [INFO] [Thread-127449] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:06:23.345 [DEBUG] [Thread-127449] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:06:23.345 [DEBUG] [Thread-127449] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:06:23.345 [DEBUG] [Thread-127449] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:06:23.345 [DEBUG] [Thread-127449] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:06:23.345 [DEBUG] [Thread-127449] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:06:23.345 [DEBUG] [Thread-127449] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:06:23.345 [DEBUG] [Thread-127449] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:06:23.345 [DEBUG] [Thread-127449] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:06:23.345 [DEBUG] [Thread-127449] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:06:23.345 [DEBUG] [Thread-127449] [transport.py] [_log()] client lang: <none>
2025-11-04T03:06:23.345 [DEBUG] [Thread-127449] [transport.py] [_log()] server lang: <none>
2025-11-04T03:06:23.345 [DEBUG] [Thread-127449] [transport.py] [_log()] kex follows: False
2025-11-04T03:06:23.345 [DEBUG] [Thread-127449] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:06:23.345 [DEBUG] [Thread-127449] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:06:23.345 [DEBUG] [Thread-127449] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:06:23.346 [DEBUG] [Thread-127449] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:06:23.346 [DEBUG] [Thread-127449] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:06:23.346 [DEBUG] [Thread-127449] [transport.py] [_log()] Compression: none
2025-11-04T03:06:23.346 [DEBUG] [Thread-127449] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:06:23.402 [DEBUG] [Thread-127449] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:06:23.402 [DEBUG] [Thread-127449] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:06:23.402 [DEBUG] [Thread-127449] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:06:23.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:06:23.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:06:23.460 [DEBUG] [Thread-127449] [transport.py] [_log()] userauth is OK
2025-11-04T03:06:23.460 [DEBUG] [Thread-127449] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:06:23.460 [DEBUG] [Thread-127449] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:06:23.460 [DEBUG] [Thread-127449] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:06:23.460 [DEBUG] [Thread-127449] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:06:23.478 [INFO] [Thread-127449] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:06:23.478 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:06:23.478 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:06:24.383 [DEBUG] [Thread-127449] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:06:24.383 [DEBUG] [Thread-127449] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:06:24.432 [DEBUG] [Thread-127449] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:06:24.432 [DEBUG] [Thread-127449] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:06:24.440 [DEBUG] [Thread-127449] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:06:24.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:06:24.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:06:24.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:06:24.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:06:24.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:06:24.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:06:24.474 [DEBUG] [Thread-127449] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:06:31.408 [DEBUG] [Thread-127451 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:06:46.551 [DEBUG] [Thread-127452 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:06:52.019 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:06:52.020 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:06:54.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:06:54.497 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:06:54.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:06:55.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 6, 22), 27.61, 13.81, 0.0, 20.15, 16.46, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:06:55.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:06:22
2025-11-04T03:06:55.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:06:55.635 [DEBUG] [Thread-127453] [transport.py] [_log()] starting thread (client mode): 0xed05720
2025-11-04T03:06:55.635 [DEBUG] [Thread-127453] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:06:55.655 [DEBUG] [Thread-127453] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:06:55.655 [INFO] [Thread-127453] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:06:55.658 [DEBUG] [Thread-127453] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:06:55.658 [DEBUG] [Thread-127453] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:06:55.658 [DEBUG] [Thread-127453] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:06:55.658 [DEBUG] [Thread-127453] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:06:55.658 [DEBUG] [Thread-127453] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:06:55.658 [DEBUG] [Thread-127453] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:06:55.658 [DEBUG] [Thread-127453] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:06:55.658 [DEBUG] [Thread-127453] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:06:55.658 [DEBUG] [Thread-127453] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:06:55.658 [DEBUG] [Thread-127453] [transport.py] [_log()] client lang: <none>
2025-11-04T03:06:55.658 [DEBUG] [Thread-127453] [transport.py] [_log()] server lang: <none>
2025-11-04T03:06:55.658 [DEBUG] [Thread-127453] [transport.py] [_log()] kex follows: False
2025-11-04T03:06:55.658 [DEBUG] [Thread-127453] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:06:55.659 [DEBUG] [Thread-127453] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:06:55.659 [DEBUG] [Thread-127453] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:06:55.659 [DEBUG] [Thread-127453] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:06:55.659 [DEBUG] [Thread-127453] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:06:55.659 [DEBUG] [Thread-127453] [transport.py] [_log()] Compression: none
2025-11-04T03:06:55.659 [DEBUG] [Thread-127453] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:06:55.678 [DEBUG] [Thread-127453] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:06:55.678 [DEBUG] [Thread-127453] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:06:55.679 [DEBUG] [Thread-127453] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:06:55.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:06:55.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:06:55.680 [DEBUG] [Thread-127453] [transport.py] [_log()] userauth is OK
2025-11-04T03:06:55.680 [DEBUG] [Thread-127453] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:06:55.680 [DEBUG] [Thread-127453] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:06:55.680 [DEBUG] [Thread-127453] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:06:55.680 [DEBUG] [Thread-127453] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:06:55.706 [INFO] [Thread-127453] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:06:55.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:06:56.325 [DEBUG] [Thread-127453] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:06:56.325 [DEBUG] [Thread-127453] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:06:56.325 [DEBUG] [Thread-127453] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:06:56.367 [DEBUG] [Thread-127453] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:06:56.367 [DEBUG] [Thread-127453] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:06:56.369 [DEBUG] [Thread-127453] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:06:56.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:06:56.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:06:56.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:06:56.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:06:56.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:06:56.389 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:06:56.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:06:56.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:06:56.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:06:56.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.045930 -999.00  +16.20  17.55     19   -7.00 1 1 1 1 1     0    0 22.79 -2.76 ZNESW 15.6 17.6 311.6 21.4 16.6 -23.9 16.5 -23.0 16.2 -22.3 16.6 -23.6
2025-11-04T03:06:56.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:06:56.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:06:56.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.045930
2025-11-04T03:06:56.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:06:56.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:06:56.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:06:56.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:06:56.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:06:56.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:06:22', tmtdew=27.61, humidity=13.81, cloud=0.0, wind=20.15, temperature=16.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:06:23', seeing=0.96, atlas_timestamp='2025-11-04T01:06:08.352', atlas_cloud=1, atlas_rain=1, zp_data=[0.0857499999999991, 0.05274999999999963, 0.14425000000000132, 0.08999999999999986, 0.04550000000000054, 0.06725000000000136, 0.026999999999999247, 0.060750000000000526, 0.09549999999999947, 0.08099999999999952, 0.15124999999999922, 0.07499999999999929, 0.25399999999999956, 0.10424999999999862, 0.058999999999999275, 0.021999999999998465, 0.07424999999999926, 0.08649999999999913, 0.16199999999999903, 0.13674999999999926, 0.17499999999999893, 0.13124999999999787, 0.11425000000000018, 0.08375000000000021, 0.09499999999999886, 0.18950000000000067, 0.14675000000000082, 0.28200000000000003, 0.23300000000000054, -0.3114999999999988, 0.23800000000000132, 0.1750000000000007, 0.18874999999999886], zp_timestamp='2025-11-04T01:03:00')
2025-11-04T03:06:56.391 [DEBUG] [Thread-127453] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:06:56.466 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:06:56.480 [DEBUG] [Thread-127456] [transport.py] [_log()] starting thread (client mode): 0x1179a2c0
2025-11-04T03:06:56.480 [DEBUG] [Thread-127456] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:06:56.495 [DEBUG] [Thread-127456] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:06:56.495 [INFO] [Thread-127456] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:06:56.504 [DEBUG] [Thread-127456] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:06:56.504 [DEBUG] [Thread-127456] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:06:56.504 [DEBUG] [Thread-127456] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:06:56.504 [DEBUG] [Thread-127456] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:06:56.504 [DEBUG] [Thread-127456] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:06:56.504 [DEBUG] [Thread-127456] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:06:56.504 [DEBUG] [Thread-127456] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:06:56.504 [DEBUG] [Thread-127456] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:06:56.504 [DEBUG] [Thread-127456] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:06:56.504 [DEBUG] [Thread-127456] [transport.py] [_log()] client lang: <none>
2025-11-04T03:06:56.504 [DEBUG] [Thread-127456] [transport.py] [_log()] server lang: <none>
2025-11-04T03:06:56.504 [DEBUG] [Thread-127456] [transport.py] [_log()] kex follows: False
2025-11-04T03:06:56.504 [DEBUG] [Thread-127456] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:06:56.504 [DEBUG] [Thread-127456] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:06:56.504 [DEBUG] [Thread-127456] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:06:56.504 [DEBUG] [Thread-127456] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:06:56.504 [DEBUG] [Thread-127456] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:06:56.504 [DEBUG] [Thread-127456] [transport.py] [_log()] Compression: none
2025-11-04T03:06:56.504 [DEBUG] [Thread-127456] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:06:56.566 [DEBUG] [Thread-127456] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:06:56.566 [DEBUG] [Thread-127456] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:06:56.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:06:56.566 [DEBUG] [Thread-127456] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:06:56.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:06:56.627 [DEBUG] [Thread-127456] [transport.py] [_log()] userauth is OK
2025-11-04T03:06:56.628 [DEBUG] [Thread-127456] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:06:56.628 [DEBUG] [Thread-127456] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:06:56.628 [DEBUG] [Thread-127456] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:06:56.628 [DEBUG] [Thread-127456] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:06:56.649 [INFO] [Thread-127456] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:06:56.649 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:06:56.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:06:57.465 [DEBUG] [Thread-127456] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:06:57.465 [DEBUG] [Thread-127456] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:06:57.513 [DEBUG] [Thread-127456] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:06:57.513 [DEBUG] [Thread-127456] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:06:57.521 [DEBUG] [Thread-127456] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:06:57.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:06:57.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:06:57.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:06:57.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:06:57.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:06:57.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:06:57.554 [DEBUG] [Thread-127456] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:07:01.579 [DEBUG] [Thread-127458 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:07:14.278 [DEBUG] [Thread-127459 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:07:16.652 [DEBUG] [Thread-127460 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:07:27.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:07:27.562 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:07:27.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:07:28.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 6, 55), 27.6, 14.26, 0.0, 20.24, 16.39, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:07:28.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:06:55
2025-11-04T03:07:28.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:07:29.158 [DEBUG] [Thread-127461] [transport.py] [_log()] starting thread (client mode): 0xedc46d0
2025-11-04T03:07:29.159 [DEBUG] [Thread-127461] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:07:29.167 [DEBUG] [Thread-127461] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:07:29.167 [INFO] [Thread-127461] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:07:29.172 [DEBUG] [Thread-127461] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:07:29.172 [DEBUG] [Thread-127461] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:07:29.172 [DEBUG] [Thread-127461] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:07:29.172 [DEBUG] [Thread-127461] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:07:29.172 [DEBUG] [Thread-127461] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:07:29.172 [DEBUG] [Thread-127461] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:07:29.172 [DEBUG] [Thread-127461] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:07:29.172 [DEBUG] [Thread-127461] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:07:29.172 [DEBUG] [Thread-127461] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:07:29.172 [DEBUG] [Thread-127461] [transport.py] [_log()] client lang: <none>
2025-11-04T03:07:29.172 [DEBUG] [Thread-127461] [transport.py] [_log()] server lang: <none>
2025-11-04T03:07:29.172 [DEBUG] [Thread-127461] [transport.py] [_log()] kex follows: False
2025-11-04T03:07:29.172 [DEBUG] [Thread-127461] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:07:29.173 [DEBUG] [Thread-127461] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:07:29.173 [DEBUG] [Thread-127461] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:07:29.173 [DEBUG] [Thread-127461] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:07:29.173 [DEBUG] [Thread-127461] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:07:29.173 [DEBUG] [Thread-127461] [transport.py] [_log()] Compression: none
2025-11-04T03:07:29.173 [DEBUG] [Thread-127461] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:07:29.198 [DEBUG] [Thread-127461] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:07:29.202 [DEBUG] [Thread-127461] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:07:29.204 [DEBUG] [Thread-127461] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:07:29.204 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:07:29.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:07:29.207 [DEBUG] [Thread-127461] [transport.py] [_log()] userauth is OK
2025-11-04T03:07:29.207 [DEBUG] [Thread-127461] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:07:29.207 [DEBUG] [Thread-127461] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:07:29.207 [DEBUG] [Thread-127461] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:07:29.207 [DEBUG] [Thread-127461] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:07:29.223 [INFO] [Thread-127461] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:07:29.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:07:29.869 [DEBUG] [Thread-127461] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:07:29.869 [DEBUG] [Thread-127461] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:07:29.870 [DEBUG] [Thread-127461] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:07:29.911 [DEBUG] [Thread-127461] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:07:29.911 [DEBUG] [Thread-127461] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:07:29.913 [DEBUG] [Thread-127461] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:07:29.925 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:07:29.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:07:29.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:07:29.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:07:29.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:07:29.935 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:07:29.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:07:29.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:07:29.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:07:29.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.046277 -999.00  +16.20  17.65     19   -7.10 1 1 1 1 1     0    0 23.40 -2.77 ZNESW 18.4 17.6 312.0 21.2 16.6 -23.8 16.5 -22.9 16.3 -22.7 16.5 -23.4
2025-11-04T03:07:29.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:07:29.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:07:29.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.046277
2025-11-04T03:07:29.948 [DEBUG] [Thread-127461] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:07:29.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:07:29.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:07:29.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:07:29.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:07:29.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:07:29.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:06:55', tmtdew=27.6, humidity=14.26, cloud=0.0, wind=20.24, temperature=16.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:06:55', seeing=1.06, atlas_timestamp='2025-11-04T01:06:38.333', atlas_cloud=1, atlas_rain=1, zp_data=[0.0857499999999991, 0.05274999999999963, 0.14425000000000132, 0.08999999999999986, 0.04550000000000054, 0.06725000000000136, 0.026999999999999247, 0.060750000000000526, 0.09549999999999947, 0.08099999999999952, 0.15124999999999922, 0.07499999999999929, 0.25399999999999956, 0.10424999999999862, 0.058999999999999275, 0.021999999999998465, 0.07424999999999926, 0.08649999999999913, 0.16199999999999903, 0.13674999999999926, 0.17499999999999893, 0.13124999999999787, 0.11425000000000018, 0.08375000000000021, 0.09499999999999886, 0.18950000000000067, 0.14675000000000082, 0.28200000000000003, 0.23300000000000054, -0.3114999999999988, 0.23800000000000132, 0.1750000000000007, 0.18874999999999886], zp_timestamp='2025-11-04T01:03:00')
2025-11-04T03:07:30.035 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:07:30.047 [DEBUG] [Thread-127464] [transport.py] [_log()] starting thread (client mode): 0xed069e0
2025-11-04T03:07:30.048 [DEBUG] [Thread-127464] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:07:30.063 [DEBUG] [Thread-127464] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:07:30.063 [INFO] [Thread-127464] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:07:30.072 [DEBUG] [Thread-127464] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:07:30.072 [DEBUG] [Thread-127464] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:07:30.072 [DEBUG] [Thread-127464] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:07:30.072 [DEBUG] [Thread-127464] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:07:30.072 [DEBUG] [Thread-127464] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:07:30.072 [DEBUG] [Thread-127464] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:07:30.072 [DEBUG] [Thread-127464] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:07:30.072 [DEBUG] [Thread-127464] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:07:30.072 [DEBUG] [Thread-127464] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:07:30.072 [DEBUG] [Thread-127464] [transport.py] [_log()] client lang: <none>
2025-11-04T03:07:30.072 [DEBUG] [Thread-127464] [transport.py] [_log()] server lang: <none>
2025-11-04T03:07:30.072 [DEBUG] [Thread-127464] [transport.py] [_log()] kex follows: False
2025-11-04T03:07:30.072 [DEBUG] [Thread-127464] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:07:30.072 [DEBUG] [Thread-127464] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:07:30.072 [DEBUG] [Thread-127464] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:07:30.072 [DEBUG] [Thread-127464] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:07:30.072 [DEBUG] [Thread-127464] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:07:30.072 [DEBUG] [Thread-127464] [transport.py] [_log()] Compression: none
2025-11-04T03:07:30.072 [DEBUG] [Thread-127464] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:07:30.129 [DEBUG] [Thread-127464] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:07:30.130 [DEBUG] [Thread-127464] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:07:30.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:07:30.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:07:30.130 [DEBUG] [Thread-127464] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:07:30.190 [DEBUG] [Thread-127464] [transport.py] [_log()] userauth is OK
2025-11-04T03:07:30.190 [DEBUG] [Thread-127464] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:07:30.190 [DEBUG] [Thread-127464] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:07:30.190 [DEBUG] [Thread-127464] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:07:30.190 [DEBUG] [Thread-127464] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:07:30.208 [INFO] [Thread-127464] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:07:30.208 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:07:30.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:07:31.119 [DEBUG] [Thread-127464] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:07:31.119 [DEBUG] [Thread-127464] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:07:31.167 [DEBUG] [Thread-127464] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:07:31.167 [DEBUG] [Thread-127464] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:07:31.179 [DEBUG] [Thread-127464] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:07:31.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:07:31.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:07:31.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:07:31.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:07:31.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:07:31.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:07:31.220 [DEBUG] [Thread-127464] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:07:31.703 [DEBUG] [Thread-127466 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:07:46.830 [DEBUG] [Thread-127467 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:07:52.232 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:07:52.234 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:08:01.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:08:01.232 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:08:01.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:08:01.863 [DEBUG] [Thread-127468 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:08:02.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 7, 28), 27.67, 14.18, 0.0, 20.89, 16.39, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:08:02.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:07:28
2025-11-04T03:08:02.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:08:02.721 [DEBUG] [Thread-127469] [transport.py] [_log()] starting thread (client mode): 0xed37370
2025-11-04T03:08:02.721 [DEBUG] [Thread-127469] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:08:02.738 [DEBUG] [Thread-127469] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:08:02.738 [INFO] [Thread-127469] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:08:02.742 [DEBUG] [Thread-127469] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:08:02.742 [DEBUG] [Thread-127469] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:08:02.742 [DEBUG] [Thread-127469] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:08:02.742 [DEBUG] [Thread-127469] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:08:02.742 [DEBUG] [Thread-127469] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:08:02.742 [DEBUG] [Thread-127469] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:08:02.742 [DEBUG] [Thread-127469] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:08:02.742 [DEBUG] [Thread-127469] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:08:02.742 [DEBUG] [Thread-127469] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:08:02.742 [DEBUG] [Thread-127469] [transport.py] [_log()] client lang: <none>
2025-11-04T03:08:02.742 [DEBUG] [Thread-127469] [transport.py] [_log()] server lang: <none>
2025-11-04T03:08:02.742 [DEBUG] [Thread-127469] [transport.py] [_log()] kex follows: False
2025-11-04T03:08:02.742 [DEBUG] [Thread-127469] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:08:02.742 [DEBUG] [Thread-127469] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:08:02.742 [DEBUG] [Thread-127469] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:08:02.742 [DEBUG] [Thread-127469] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:08:02.742 [DEBUG] [Thread-127469] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:08:02.742 [DEBUG] [Thread-127469] [transport.py] [_log()] Compression: none
2025-11-04T03:08:02.742 [DEBUG] [Thread-127469] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:08:02.771 [DEBUG] [Thread-127469] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:08:02.774 [DEBUG] [Thread-127469] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:08:02.776 [DEBUG] [Thread-127469] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:08:02.776 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:08:02.776 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:08:02.813 [DEBUG] [Thread-127469] [transport.py] [_log()] userauth is OK
2025-11-04T03:08:02.813 [DEBUG] [Thread-127469] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:08:02.813 [DEBUG] [Thread-127469] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:08:02.814 [DEBUG] [Thread-127469] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:08:02.814 [DEBUG] [Thread-127469] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:08:02.843 [INFO] [Thread-127469] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:08:02.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:08:03.490 [DEBUG] [Thread-127469] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:08:03.490 [DEBUG] [Thread-127469] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:08:03.490 [DEBUG] [Thread-127469] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:08:03.531 [DEBUG] [Thread-127469] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:08:03.531 [DEBUG] [Thread-127469] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:08:03.533 [DEBUG] [Thread-127469] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:08:03.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:08:03.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:08:03.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:08:03.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:08:03.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:08:03.553 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:08:03.553 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:08:03.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:08:03.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:08:03.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.046625 -999.00  +16.20  18.24     19   -7.30 1 1 1 1 1     0    0 22.93 -2.40 ZNESW 20.0 18.2 293.4 21.8 16.6 -23.8 16.5 -22.9 16.3 -22.7 16.6 -23.5
2025-11-04T03:08:03.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:08:03.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:08:03.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.046625
2025-11-04T03:08:03.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:08:03.568 [DEBUG] [Thread-127469] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:08:03.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:08:03.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:08:03.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:08:03.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:08:03.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:07:28', tmtdew=27.67, humidity=14.18, cloud=0.0, wind=20.89, temperature=16.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:07:28', seeing=1.23, atlas_timestamp='2025-11-04T01:07:08.400', atlas_cloud=1, atlas_rain=1, zp_data=[0.06625000000000014, 0.02325000000000088, 0.09774999999999956, 0.11149999999999949, 0.042500000000000426, 0.07425000000000104, 0.041999999999999815, 0.07725000000000115, 0.08099999999999952, 0.06300000000000061, 0.12124999999999986, 0.1255000000000006, 0.19399999999999906, 0.02024999999999899, -0.01249999999999929, 0.028999999999999915, 0.07075000000000031, 0.08549999999999969, 0.11799999999999855, 0.09024999999999928, 0.13949999999999818, 0.1372499999999981, 0.13125000000000142, 0.05925000000000047, 0.08099999999999952, 0.25200000000000067, 0.16075000000000017, 0.21250000000000036, 0.20899999999999963, -0.3459999999999983, 0.13100000000000023, 0.0940000000000012, 0.17974999999999852], zp_timestamp='2025-11-04T01:06:00')
2025-11-04T03:08:03.646 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:08:03.661 [DEBUG] [Thread-127472] [transport.py] [_log()] starting thread (client mode): 0xed04a00
2025-11-04T03:08:03.661 [DEBUG] [Thread-127472] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:08:03.679 [DEBUG] [Thread-127472] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:08:03.679 [INFO] [Thread-127472] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:08:03.688 [DEBUG] [Thread-127472] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:08:03.688 [DEBUG] [Thread-127472] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:08:03.688 [DEBUG] [Thread-127472] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:08:03.688 [DEBUG] [Thread-127472] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:08:03.688 [DEBUG] [Thread-127472] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:08:03.688 [DEBUG] [Thread-127472] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:08:03.688 [DEBUG] [Thread-127472] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:08:03.688 [DEBUG] [Thread-127472] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:08:03.688 [DEBUG] [Thread-127472] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:08:03.688 [DEBUG] [Thread-127472] [transport.py] [_log()] client lang: <none>
2025-11-04T03:08:03.688 [DEBUG] [Thread-127472] [transport.py] [_log()] server lang: <none>
2025-11-04T03:08:03.688 [DEBUG] [Thread-127472] [transport.py] [_log()] kex follows: False
2025-11-04T03:08:03.688 [DEBUG] [Thread-127472] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:08:03.688 [DEBUG] [Thread-127472] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:08:03.688 [DEBUG] [Thread-127472] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:08:03.688 [DEBUG] [Thread-127472] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:08:03.688 [DEBUG] [Thread-127472] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:08:03.688 [DEBUG] [Thread-127472] [transport.py] [_log()] Compression: none
2025-11-04T03:08:03.688 [DEBUG] [Thread-127472] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:08:03.747 [DEBUG] [Thread-127472] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:08:03.747 [DEBUG] [Thread-127472] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:08:03.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:08:03.747 [DEBUG] [Thread-127472] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:08:03.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:08:03.805 [DEBUG] [Thread-127472] [transport.py] [_log()] userauth is OK
2025-11-04T03:08:03.805 [DEBUG] [Thread-127472] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:08:03.805 [DEBUG] [Thread-127472] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:08:03.805 [DEBUG] [Thread-127472] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:08:03.805 [DEBUG] [Thread-127472] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:08:03.822 [INFO] [Thread-127472] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:08:03.823 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:08:03.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:08:04.708 [DEBUG] [Thread-127472] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:08:04.709 [DEBUG] [Thread-127472] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:08:04.756 [DEBUG] [Thread-127472] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:08:04.756 [DEBUG] [Thread-127472] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:08:04.765 [DEBUG] [Thread-127472] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:08:04.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:08:04.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:08:04.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:08:04.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:08:04.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:08:04.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:08:04.800 [DEBUG] [Thread-127472] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:08:14.600 [DEBUG] [Thread-127474 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:08:16.895 [DEBUG] [Thread-127475 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:08:32.013 [DEBUG] [Thread-127476 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:08:34.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:08:34.824 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:08:34.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:08:35.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 8), 27.67, 14.18, 0.0, 20.18, 16.39, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:08:35.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:08:00
2025-11-04T03:08:35.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:08:36.021 [DEBUG] [Thread-127477] [transport.py] [_log()] starting thread (client mode): 0xed22470
2025-11-04T03:08:36.022 [DEBUG] [Thread-127477] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:08:36.033 [DEBUG] [Thread-127477] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:08:36.033 [INFO] [Thread-127477] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:08:36.038 [DEBUG] [Thread-127477] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:08:36.039 [DEBUG] [Thread-127477] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:08:36.039 [DEBUG] [Thread-127477] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:08:36.039 [DEBUG] [Thread-127477] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:08:36.039 [DEBUG] [Thread-127477] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:08:36.039 [DEBUG] [Thread-127477] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:08:36.039 [DEBUG] [Thread-127477] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:08:36.039 [DEBUG] [Thread-127477] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:08:36.039 [DEBUG] [Thread-127477] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:08:36.039 [DEBUG] [Thread-127477] [transport.py] [_log()] client lang: <none>
2025-11-04T03:08:36.039 [DEBUG] [Thread-127477] [transport.py] [_log()] server lang: <none>
2025-11-04T03:08:36.039 [DEBUG] [Thread-127477] [transport.py] [_log()] kex follows: False
2025-11-04T03:08:36.039 [DEBUG] [Thread-127477] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:08:36.039 [DEBUG] [Thread-127477] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:08:36.040 [DEBUG] [Thread-127477] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:08:36.040 [DEBUG] [Thread-127477] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:08:36.040 [DEBUG] [Thread-127477] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:08:36.040 [DEBUG] [Thread-127477] [transport.py] [_log()] Compression: none
2025-11-04T03:08:36.040 [DEBUG] [Thread-127477] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:08:36.067 [DEBUG] [Thread-127477] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:08:36.071 [DEBUG] [Thread-127477] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:08:36.072 [DEBUG] [Thread-127477] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:08:36.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:08:36.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:08:36.076 [DEBUG] [Thread-127477] [transport.py] [_log()] userauth is OK
2025-11-04T03:08:36.076 [DEBUG] [Thread-127477] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:08:36.076 [DEBUG] [Thread-127477] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:08:36.076 [DEBUG] [Thread-127477] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:08:36.076 [DEBUG] [Thread-127477] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:08:36.094 [INFO] [Thread-127477] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:08:36.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:08:36.728 [DEBUG] [Thread-127477] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:08:36.729 [DEBUG] [Thread-127477] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:08:36.729 [DEBUG] [Thread-127477] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:08:36.770 [DEBUG] [Thread-127477] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:08:36.770 [DEBUG] [Thread-127477] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:08:36.772 [DEBUG] [Thread-127477] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:08:36.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:08:36.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:08:36.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:08:36.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:08:36.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:08:36.793 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:08:36.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:08:36.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:08:36.795 [DEBUG] [Thread-127477] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:08:36.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:08:36.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.047319 -999.00  +16.40  17.27     18   -7.60 1 1 1 1 1     0    0 23.75 2.02 ZNESW 25.1 17.3 306.2 24.7 16.6 -23.6 16.5 -22.9 16.3 -22.6 16.6 -23.4
2025-11-04T03:08:36.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:08:36.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:08:36.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.047319
2025-11-04T03:08:36.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:08:36.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:08:36.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:08:36.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:08:36.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:08:36.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:08:00', tmtdew=27.67, humidity=14.18, cloud=0.0, wind=20.18, temperature=16.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:08:34', seeing=1.08, atlas_timestamp='2025-11-04T01:08:08.362', atlas_cloud=1, atlas_rain=1, zp_data=[0.06625000000000014, 0.02325000000000088, 0.09774999999999956, 0.11149999999999949, 0.042500000000000426, 0.07425000000000104, 0.041999999999999815, 0.07725000000000115, 0.08099999999999952, 0.06300000000000061, 0.12124999999999986, 0.1255000000000006, 0.19399999999999906, 0.02024999999999899, -0.01249999999999929, 0.028999999999999915, 0.07075000000000031, 0.08549999999999969, 0.11799999999999855, 0.09024999999999928, 0.13949999999999818, 0.1372499999999981, 0.13125000000000142, 0.05925000000000047, 0.08099999999999952, 0.25200000000000067, 0.16075000000000017, 0.21250000000000036, 0.20899999999999963, -0.3459999999999983, 0.13100000000000023, 0.0940000000000012, 0.17974999999999852], zp_timestamp='2025-11-04T01:06:00')
2025-11-04T03:08:36.890 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:08:36.902 [DEBUG] [Thread-127480] [transport.py] [_log()] starting thread (client mode): 0xed110f0
2025-11-04T03:08:36.902 [DEBUG] [Thread-127480] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:08:36.917 [DEBUG] [Thread-127480] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:08:36.917 [INFO] [Thread-127480] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:08:36.925 [DEBUG] [Thread-127480] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:08:36.925 [DEBUG] [Thread-127480] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:08:36.925 [DEBUG] [Thread-127480] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:08:36.925 [DEBUG] [Thread-127480] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:08:36.925 [DEBUG] [Thread-127480] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:08:36.925 [DEBUG] [Thread-127480] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:08:36.925 [DEBUG] [Thread-127480] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:08:36.925 [DEBUG] [Thread-127480] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:08:36.925 [DEBUG] [Thread-127480] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:08:36.925 [DEBUG] [Thread-127480] [transport.py] [_log()] client lang: <none>
2025-11-04T03:08:36.925 [DEBUG] [Thread-127480] [transport.py] [_log()] server lang: <none>
2025-11-04T03:08:36.925 [DEBUG] [Thread-127480] [transport.py] [_log()] kex follows: False
2025-11-04T03:08:36.925 [DEBUG] [Thread-127480] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:08:36.925 [DEBUG] [Thread-127480] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:08:36.925 [DEBUG] [Thread-127480] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:08:36.925 [DEBUG] [Thread-127480] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:08:36.925 [DEBUG] [Thread-127480] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:08:36.925 [DEBUG] [Thread-127480] [transport.py] [_log()] Compression: none
2025-11-04T03:08:36.926 [DEBUG] [Thread-127480] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:08:36.984 [DEBUG] [Thread-127480] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:08:36.984 [DEBUG] [Thread-127480] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:08:36.984 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:08:36.984 [DEBUG] [Thread-127480] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:08:36.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:08:37.041 [DEBUG] [Thread-127480] [transport.py] [_log()] userauth is OK
2025-11-04T03:08:37.042 [DEBUG] [Thread-127480] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:08:37.042 [DEBUG] [Thread-127480] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:08:37.042 [DEBUG] [Thread-127480] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:08:37.042 [DEBUG] [Thread-127480] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:08:37.057 [INFO] [Thread-127480] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:08:37.057 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:08:37.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:08:37.922 [DEBUG] [Thread-127480] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:08:37.922 [DEBUG] [Thread-127480] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:08:37.965 [DEBUG] [Thread-127480] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:08:37.965 [DEBUG] [Thread-127480] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:08:37.977 [DEBUG] [Thread-127480] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:08:37.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:08:37.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:08:38.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:08:38.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:08:38.020 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:08:38.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:08:38.032 [DEBUG] [Thread-127480] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:08:47.048 [DEBUG] [Thread-127482 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:08:52.436 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:08:52.437 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:09:02.112 [DEBUG] [Thread-127483 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:09:08.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:09:08.052 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:09:08.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:09:08.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 8, 34), 28.27, 13.44, 0.0, 20.87, 16.41, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:09:08.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:08:34
2025-11-04T03:09:09.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:09:09.242 [DEBUG] [Thread-127484] [transport.py] [_log()] starting thread (client mode): 0x117bf460
2025-11-04T03:09:09.243 [DEBUG] [Thread-127484] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:09:09.255 [DEBUG] [Thread-127484] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:09:09.255 [INFO] [Thread-127484] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:09:09.259 [DEBUG] [Thread-127484] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:09:09.259 [DEBUG] [Thread-127484] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:09:09.259 [DEBUG] [Thread-127484] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:09:09.259 [DEBUG] [Thread-127484] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:09:09.259 [DEBUG] [Thread-127484] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:09:09.259 [DEBUG] [Thread-127484] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:09:09.259 [DEBUG] [Thread-127484] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:09:09.259 [DEBUG] [Thread-127484] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:09:09.259 [DEBUG] [Thread-127484] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:09:09.259 [DEBUG] [Thread-127484] [transport.py] [_log()] client lang: <none>
2025-11-04T03:09:09.259 [DEBUG] [Thread-127484] [transport.py] [_log()] server lang: <none>
2025-11-04T03:09:09.260 [DEBUG] [Thread-127484] [transport.py] [_log()] kex follows: False
2025-11-04T03:09:09.260 [DEBUG] [Thread-127484] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:09:09.260 [DEBUG] [Thread-127484] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:09:09.260 [DEBUG] [Thread-127484] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:09:09.260 [DEBUG] [Thread-127484] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:09:09.260 [DEBUG] [Thread-127484] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:09:09.260 [DEBUG] [Thread-127484] [transport.py] [_log()] Compression: none
2025-11-04T03:09:09.260 [DEBUG] [Thread-127484] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:09:09.290 [DEBUG] [Thread-127484] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:09:09.292 [DEBUG] [Thread-127484] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:09:09.293 [DEBUG] [Thread-127484] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:09:09.294 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:09:09.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:09:09.297 [DEBUG] [Thread-127484] [transport.py] [_log()] userauth is OK
2025-11-04T03:09:09.297 [DEBUG] [Thread-127484] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:09:09.297 [DEBUG] [Thread-127484] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:09:09.297 [DEBUG] [Thread-127484] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:09:09.297 [DEBUG] [Thread-127484] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:09:09.314 [INFO] [Thread-127484] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:09:09.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:09:09.964 [DEBUG] [Thread-127484] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:09:09.965 [DEBUG] [Thread-127484] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:09:09.965 [DEBUG] [Thread-127484] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:09:10.006 [DEBUG] [Thread-127484] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:09:10.006 [DEBUG] [Thread-127484] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:09:10.008 [DEBUG] [Thread-127484] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:09:10.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:09:10.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:09:10.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:09:10.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:09:10.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:09:10.033 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:09:10.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:09:10.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:09:10.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:09:10.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.047666 -999.00  +16.60  20.40     18   -7.70 1 1 1 1 1     0    0 23.16 6.91 ZNESW 21.1 20.4 304.8 29.3 16.7 -23.9 16.5 -22.7 16.3 -22.3 16.6 -23.5
2025-11-04T03:09:10.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:09:10.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:09:10.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.047666
2025-11-04T03:09:10.040 [DEBUG] [Thread-127484] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:09:10.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:09:10.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:09:10.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:09:10.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:09:10.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:09:10.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:08:34', tmtdew=28.27, humidity=13.44, cloud=0.0, wind=20.87, temperature=16.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:09:07', seeing=1.08, atlas_timestamp='2025-11-04T01:08:38.342', atlas_cloud=1, atlas_rain=1, zp_data=[0.06625000000000014, 0.02325000000000088, 0.09774999999999956, 0.11149999999999949, 0.042500000000000426, 0.07425000000000104, 0.041999999999999815, 0.07725000000000115, 0.08099999999999952, 0.06300000000000061, 0.12124999999999986, 0.1255000000000006, 0.19399999999999906, 0.02024999999999899, -0.01249999999999929, 0.028999999999999915, 0.07075000000000031, 0.08549999999999969, 0.11799999999999855, 0.09024999999999928, 0.13949999999999818, 0.1372499999999981, 0.13125000000000142, 0.05925000000000047, 0.08099999999999952, 0.25200000000000067, 0.16075000000000017, 0.21250000000000036, 0.20899999999999963, -0.3459999999999983, 0.13100000000000023, 0.0940000000000012, 0.17974999999999852], zp_timestamp='2025-11-04T01:06:00')
2025-11-04T03:09:10.130 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:09:10.143 [DEBUG] [Thread-127487] [transport.py] [_log()] starting thread (client mode): 0xed11f30
2025-11-04T03:09:10.143 [DEBUG] [Thread-127487] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:09:10.159 [DEBUG] [Thread-127487] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:09:10.159 [INFO] [Thread-127487] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:09:10.167 [DEBUG] [Thread-127487] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:09:10.167 [DEBUG] [Thread-127487] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:09:10.167 [DEBUG] [Thread-127487] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:09:10.167 [DEBUG] [Thread-127487] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:09:10.168 [DEBUG] [Thread-127487] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:09:10.168 [DEBUG] [Thread-127487] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:09:10.168 [DEBUG] [Thread-127487] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:09:10.168 [DEBUG] [Thread-127487] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:09:10.168 [DEBUG] [Thread-127487] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:09:10.168 [DEBUG] [Thread-127487] [transport.py] [_log()] client lang: <none>
2025-11-04T03:09:10.168 [DEBUG] [Thread-127487] [transport.py] [_log()] server lang: <none>
2025-11-04T03:09:10.168 [DEBUG] [Thread-127487] [transport.py] [_log()] kex follows: False
2025-11-04T03:09:10.168 [DEBUG] [Thread-127487] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:09:10.169 [DEBUG] [Thread-127487] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:09:10.169 [DEBUG] [Thread-127487] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:09:10.169 [DEBUG] [Thread-127487] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:09:10.169 [DEBUG] [Thread-127487] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:09:10.169 [DEBUG] [Thread-127487] [transport.py] [_log()] Compression: none
2025-11-04T03:09:10.169 [DEBUG] [Thread-127487] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:09:10.223 [DEBUG] [Thread-127487] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:09:10.224 [DEBUG] [Thread-127487] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:09:10.224 [DEBUG] [Thread-127487] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:09:10.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:09:10.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:09:10.280 [DEBUG] [Thread-127487] [transport.py] [_log()] userauth is OK
2025-11-04T03:09:10.281 [DEBUG] [Thread-127487] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:09:10.281 [DEBUG] [Thread-127487] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:09:10.281 [DEBUG] [Thread-127487] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:09:10.281 [DEBUG] [Thread-127487] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:09:10.301 [INFO] [Thread-127487] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:09:10.301 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:09:10.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:09:11.155 [DEBUG] [Thread-127487] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:09:11.155 [DEBUG] [Thread-127487] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:09:11.194 [DEBUG] [Thread-127487] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:09:11.194 [DEBUG] [Thread-127487] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:09:11.204 [DEBUG] [Thread-127487] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:09:11.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:09:11.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:09:11.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:09:11.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:09:11.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:09:11.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:09:11.245 [DEBUG] [Thread-127487] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:09:14.866 [DEBUG] [Thread-127489 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:09:17.150 [DEBUG] [Thread-127490 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:09:32.250 [DEBUG] [Thread-127491 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:09:41.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:09:41.267 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:09:41.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:09:42.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 9, 6), 28.34, 13.38, 0.0, 20.77, 16.48, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:09:42.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:09:06
2025-11-04T03:09:42.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:09:42.474 [DEBUG] [Thread-127492] [transport.py] [_log()] starting thread (client mode): 0x117bf970
2025-11-04T03:09:42.474 [DEBUG] [Thread-127492] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:09:42.487 [DEBUG] [Thread-127492] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:09:42.487 [INFO] [Thread-127492] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:09:42.491 [DEBUG] [Thread-127492] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:09:42.491 [DEBUG] [Thread-127492] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:09:42.491 [DEBUG] [Thread-127492] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:09:42.491 [DEBUG] [Thread-127492] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:09:42.491 [DEBUG] [Thread-127492] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:09:42.491 [DEBUG] [Thread-127492] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:09:42.491 [DEBUG] [Thread-127492] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:09:42.491 [DEBUG] [Thread-127492] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:09:42.491 [DEBUG] [Thread-127492] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:09:42.491 [DEBUG] [Thread-127492] [transport.py] [_log()] client lang: <none>
2025-11-04T03:09:42.491 [DEBUG] [Thread-127492] [transport.py] [_log()] server lang: <none>
2025-11-04T03:09:42.491 [DEBUG] [Thread-127492] [transport.py] [_log()] kex follows: False
2025-11-04T03:09:42.491 [DEBUG] [Thread-127492] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:09:42.491 [DEBUG] [Thread-127492] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:09:42.492 [DEBUG] [Thread-127492] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:09:42.492 [DEBUG] [Thread-127492] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:09:42.492 [DEBUG] [Thread-127492] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:09:42.492 [DEBUG] [Thread-127492] [transport.py] [_log()] Compression: none
2025-11-04T03:09:42.492 [DEBUG] [Thread-127492] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:09:42.519 [DEBUG] [Thread-127492] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:09:42.521 [DEBUG] [Thread-127492] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:09:42.522 [DEBUG] [Thread-127492] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:09:42.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:09:42.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:09:42.558 [DEBUG] [Thread-127492] [transport.py] [_log()] userauth is OK
2025-11-04T03:09:42.558 [DEBUG] [Thread-127492] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:09:42.558 [DEBUG] [Thread-127492] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:09:42.558 [DEBUG] [Thread-127492] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:09:42.558 [DEBUG] [Thread-127492] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:09:42.575 [INFO] [Thread-127492] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:09:42.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:09:43.256 [DEBUG] [Thread-127492] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:09:43.256 [DEBUG] [Thread-127492] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:09:43.257 [DEBUG] [Thread-127492] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:09:43.298 [DEBUG] [Thread-127492] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:09:43.298 [DEBUG] [Thread-127492] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:09:43.300 [DEBUG] [Thread-127492] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:09:43.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:09:43.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:09:43.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:09:43.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:09:43.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:09:43.323 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:09:43.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:09:43.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:09:43.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:09:43.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.048013 -999.00  +16.60  20.28     18   -7.70 1 1 1 1 1     0    0 23.82 11.61 ZNESW 19.0 20.3 303.6 28.6 16.7 -23.9 16.6 -22.8 16.4 -22.5 16.6 -23.6
2025-11-04T03:09:43.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:09:43.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:09:43.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.048013
2025-11-04T03:09:43.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:09:43.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:09:43.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:09:43.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:09:43.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:09:43.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:09:06', tmtdew=28.34, humidity=13.38, cloud=0.0, wind=20.77, temperature=16.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:09:40', seeing=1.03, atlas_timestamp='2025-11-04T01:09:08.323', atlas_cloud=1, atlas_rain=1, zp_data=[0.06625000000000014, 0.02325000000000088, 0.09774999999999956, 0.11149999999999949, 0.042500000000000426, 0.07425000000000104, 0.041999999999999815, 0.07725000000000115, 0.08099999999999952, 0.06300000000000061, 0.12124999999999986, 0.1255000000000006, 0.19399999999999906, 0.02024999999999899, -0.01249999999999929, 0.028999999999999915, 0.07075000000000031, 0.08549999999999969, 0.11799999999999855, 0.09024999999999928, 0.13949999999999818, 0.1372499999999981, 0.13125000000000142, 0.05925000000000047, 0.08099999999999952, 0.25200000000000067, 0.16075000000000017, 0.21250000000000036, 0.20899999999999963, -0.3459999999999983, 0.13100000000000023, 0.0940000000000012, 0.17974999999999852], zp_timestamp='2025-11-04T01:06:00')
2025-11-04T03:09:43.327 [DEBUG] [Thread-127492] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:09:43.400 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:09:43.414 [DEBUG] [Thread-127495] [transport.py] [_log()] starting thread (client mode): 0xedc7730
2025-11-04T03:09:43.414 [DEBUG] [Thread-127495] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:09:43.431 [DEBUG] [Thread-127495] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:09:43.431 [INFO] [Thread-127495] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:09:43.439 [DEBUG] [Thread-127495] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:09:43.440 [DEBUG] [Thread-127495] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:09:43.440 [DEBUG] [Thread-127495] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:09:43.440 [DEBUG] [Thread-127495] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:09:43.440 [DEBUG] [Thread-127495] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:09:43.440 [DEBUG] [Thread-127495] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:09:43.440 [DEBUG] [Thread-127495] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:09:43.440 [DEBUG] [Thread-127495] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:09:43.440 [DEBUG] [Thread-127495] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:09:43.440 [DEBUG] [Thread-127495] [transport.py] [_log()] client lang: <none>
2025-11-04T03:09:43.440 [DEBUG] [Thread-127495] [transport.py] [_log()] server lang: <none>
2025-11-04T03:09:43.441 [DEBUG] [Thread-127495] [transport.py] [_log()] kex follows: False
2025-11-04T03:09:43.441 [DEBUG] [Thread-127495] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:09:43.441 [DEBUG] [Thread-127495] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:09:43.441 [DEBUG] [Thread-127495] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:09:43.441 [DEBUG] [Thread-127495] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:09:43.441 [DEBUG] [Thread-127495] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:09:43.441 [DEBUG] [Thread-127495] [transport.py] [_log()] Compression: none
2025-11-04T03:09:43.441 [DEBUG] [Thread-127495] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:09:43.501 [DEBUG] [Thread-127495] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:09:43.502 [DEBUG] [Thread-127495] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:09:43.503 [DEBUG] [Thread-127495] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:09:43.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:09:43.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:09:43.561 [DEBUG] [Thread-127495] [transport.py] [_log()] userauth is OK
2025-11-04T03:09:43.562 [DEBUG] [Thread-127495] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:09:43.562 [DEBUG] [Thread-127495] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:09:43.563 [DEBUG] [Thread-127495] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:09:43.563 [DEBUG] [Thread-127495] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:09:43.591 [INFO] [Thread-127495] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:09:43.591 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:09:43.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:09:44.459 [DEBUG] [Thread-127495] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:09:44.459 [DEBUG] [Thread-127495] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:09:44.510 [DEBUG] [Thread-127495] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:09:44.510 [DEBUG] [Thread-127495] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:09:44.521 [DEBUG] [Thread-127495] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:09:44.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:09:44.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:09:44.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:09:44.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:09:44.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:09:44.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:09:44.561 [DEBUG] [Thread-127495] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:09:47.281 [DEBUG] [Thread-127497 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:09:52.648 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:09:52.650 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:10:02.360 [DEBUG] [Thread-127498 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:10:14.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:10:14.558 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:10:14.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:10:15.153 [DEBUG] [Thread-127499 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:10:15.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 9, 40), 28.65, 12.83, 0.0, 21.16, 16.59, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:10:15.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:09:40
2025-11-04T03:10:15.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:10:15.719 [DEBUG] [Thread-127500] [transport.py] [_log()] starting thread (client mode): 0xed12950
2025-11-04T03:10:15.719 [DEBUG] [Thread-127500] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:10:15.741 [DEBUG] [Thread-127500] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:10:15.741 [INFO] [Thread-127500] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:10:15.744 [DEBUG] [Thread-127500] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:10:15.744 [DEBUG] [Thread-127500] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:10:15.744 [DEBUG] [Thread-127500] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:10:15.744 [DEBUG] [Thread-127500] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:10:15.745 [DEBUG] [Thread-127500] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:10:15.745 [DEBUG] [Thread-127500] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:10:15.745 [DEBUG] [Thread-127500] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:10:15.745 [DEBUG] [Thread-127500] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:10:15.745 [DEBUG] [Thread-127500] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:10:15.745 [DEBUG] [Thread-127500] [transport.py] [_log()] client lang: <none>
2025-11-04T03:10:15.745 [DEBUG] [Thread-127500] [transport.py] [_log()] server lang: <none>
2025-11-04T03:10:15.745 [DEBUG] [Thread-127500] [transport.py] [_log()] kex follows: False
2025-11-04T03:10:15.745 [DEBUG] [Thread-127500] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:10:15.745 [DEBUG] [Thread-127500] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:10:15.745 [DEBUG] [Thread-127500] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:10:15.745 [DEBUG] [Thread-127500] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:10:15.746 [DEBUG] [Thread-127500] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:10:15.746 [DEBUG] [Thread-127500] [transport.py] [_log()] Compression: none
2025-11-04T03:10:15.746 [DEBUG] [Thread-127500] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:10:15.769 [DEBUG] [Thread-127500] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:10:15.769 [DEBUG] [Thread-127500] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:10:15.770 [DEBUG] [Thread-127500] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:10:15.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:10:15.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:10:15.773 [DEBUG] [Thread-127500] [transport.py] [_log()] userauth is OK
2025-11-04T03:10:15.773 [DEBUG] [Thread-127500] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:10:15.773 [DEBUG] [Thread-127500] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:10:15.773 [DEBUG] [Thread-127500] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:10:15.773 [DEBUG] [Thread-127500] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:10:15.806 [INFO] [Thread-127500] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:10:15.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:10:16.450 [DEBUG] [Thread-127500] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:10:16.451 [DEBUG] [Thread-127500] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:10:16.451 [DEBUG] [Thread-127500] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:10:16.491 [DEBUG] [Thread-127500] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:10:16.492 [DEBUG] [Thread-127500] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:10:16.494 [DEBUG] [Thread-127500] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:10:16.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:10:16.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:10:16.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:10:16.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:10:16.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:10:16.511 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:10:16.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:10:16.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:10:16.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:10:16.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.048361 -999.00  +16.60  21.04     18   -7.70 1 1 1 1 1     0    0 24.29 16.92 ZNESW 21.6 21.0 301.0 24.8 16.7 -23.9 16.6 -22.8 16.4 -22.4 16.6 -23.5
2025-11-04T03:10:16.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:10:16.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:10:16.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.048361
2025-11-04T03:10:16.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:10:16.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:10:16.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:10:16.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:10:16.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:10:16.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:09:40', tmtdew=28.65, humidity=12.83, cloud=0.0, wind=21.16, temperature=16.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:10:12', seeing=1.03, atlas_timestamp='2025-11-04T01:09:38.390', atlas_cloud=1, atlas_rain=1, zp_data=[0.06625000000000014, 0.02325000000000088, 0.09774999999999956, 0.11149999999999949, 0.042500000000000426, 0.07425000000000104, 0.041999999999999815, 0.07725000000000115, 0.08099999999999952, 0.06300000000000061, 0.12124999999999986, 0.1255000000000006, 0.19399999999999906, 0.02024999999999899, -0.01249999999999929, 0.028999999999999915, 0.07075000000000031, 0.08549999999999969, 0.11799999999999855, 0.09024999999999928, 0.13949999999999818, 0.1372499999999981, 0.13125000000000142, 0.05925000000000047, 0.08099999999999952, 0.25200000000000067, 0.16075000000000017, 0.21250000000000036, 0.20899999999999963, -0.3459999999999983, 0.13100000000000023, 0.0940000000000012, 0.17974999999999852], zp_timestamp='2025-11-04T01:06:00')
2025-11-04T03:10:16.513 [DEBUG] [Thread-127500] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:10:16.587 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:10:16.599 [DEBUG] [Thread-127503] [transport.py] [_log()] starting thread (client mode): 0xed213c0
2025-11-04T03:10:16.599 [DEBUG] [Thread-127503] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:10:16.614 [DEBUG] [Thread-127503] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:10:16.614 [INFO] [Thread-127503] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:10:16.626 [DEBUG] [Thread-127503] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:10:16.626 [DEBUG] [Thread-127503] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:10:16.626 [DEBUG] [Thread-127503] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:10:16.626 [DEBUG] [Thread-127503] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:10:16.626 [DEBUG] [Thread-127503] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:10:16.626 [DEBUG] [Thread-127503] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:10:16.626 [DEBUG] [Thread-127503] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:10:16.626 [DEBUG] [Thread-127503] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:10:16.626 [DEBUG] [Thread-127503] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:10:16.626 [DEBUG] [Thread-127503] [transport.py] [_log()] client lang: <none>
2025-11-04T03:10:16.626 [DEBUG] [Thread-127503] [transport.py] [_log()] server lang: <none>
2025-11-04T03:10:16.626 [DEBUG] [Thread-127503] [transport.py] [_log()] kex follows: False
2025-11-04T03:10:16.627 [DEBUG] [Thread-127503] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:10:16.627 [DEBUG] [Thread-127503] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:10:16.627 [DEBUG] [Thread-127503] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:10:16.627 [DEBUG] [Thread-127503] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:10:16.627 [DEBUG] [Thread-127503] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:10:16.627 [DEBUG] [Thread-127503] [transport.py] [_log()] Compression: none
2025-11-04T03:10:16.627 [DEBUG] [Thread-127503] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:10:16.682 [DEBUG] [Thread-127503] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:10:16.683 [DEBUG] [Thread-127503] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:10:16.683 [DEBUG] [Thread-127503] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:10:16.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:10:16.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:10:16.739 [DEBUG] [Thread-127503] [transport.py] [_log()] userauth is OK
2025-11-04T03:10:16.739 [DEBUG] [Thread-127503] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:10:16.739 [DEBUG] [Thread-127503] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:10:16.739 [DEBUG] [Thread-127503] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:10:16.739 [DEBUG] [Thread-127503] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:10:16.753 [INFO] [Thread-127503] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:10:16.753 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:10:16.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:10:17.394 [DEBUG] [Thread-127505 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:10:17.615 [DEBUG] [Thread-127503] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:10:17.615 [DEBUG] [Thread-127503] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:10:17.664 [DEBUG] [Thread-127503] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:10:17.664 [DEBUG] [Thread-127503] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:10:17.673 [DEBUG] [Thread-127503] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:10:17.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:10:17.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:10:17.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:10:17.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:10:17.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:10:17.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:10:17.709 [DEBUG] [Thread-127503] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:10:32.466 [DEBUG] [Thread-127506 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:10:47.537 [DEBUG] [Thread-127507 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:10:47.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:10:47.735 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:10:47.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:10:48.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 10, 12), 28.7, 12.78, 0.0, 20.27, 16.59, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:10:48.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:10:12
2025-11-04T03:10:48.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:10:49.010 [DEBUG] [Thread-127508] [transport.py] [_log()] starting thread (client mode): 0x117bfc10
2025-11-04T03:10:49.011 [DEBUG] [Thread-127508] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:10:49.016 [DEBUG] [Thread-127508] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:10:49.016 [INFO] [Thread-127508] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:10:49.020 [DEBUG] [Thread-127508] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:10:49.020 [DEBUG] [Thread-127508] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:10:49.020 [DEBUG] [Thread-127508] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:10:49.020 [DEBUG] [Thread-127508] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:10:49.020 [DEBUG] [Thread-127508] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:10:49.020 [DEBUG] [Thread-127508] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:10:49.020 [DEBUG] [Thread-127508] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:10:49.020 [DEBUG] [Thread-127508] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:10:49.020 [DEBUG] [Thread-127508] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:10:49.020 [DEBUG] [Thread-127508] [transport.py] [_log()] client lang: <none>
2025-11-04T03:10:49.020 [DEBUG] [Thread-127508] [transport.py] [_log()] server lang: <none>
2025-11-04T03:10:49.020 [DEBUG] [Thread-127508] [transport.py] [_log()] kex follows: False
2025-11-04T03:10:49.020 [DEBUG] [Thread-127508] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:10:49.021 [DEBUG] [Thread-127508] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:10:49.021 [DEBUG] [Thread-127508] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:10:49.021 [DEBUG] [Thread-127508] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:10:49.021 [DEBUG] [Thread-127508] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:10:49.021 [DEBUG] [Thread-127508] [transport.py] [_log()] Compression: none
2025-11-04T03:10:49.021 [DEBUG] [Thread-127508] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:10:49.058 [DEBUG] [Thread-127508] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:10:49.062 [DEBUG] [Thread-127508] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:10:49.064 [DEBUG] [Thread-127508] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:10:49.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:10:49.066 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:10:49.069 [DEBUG] [Thread-127508] [transport.py] [_log()] userauth is OK
2025-11-04T03:10:49.069 [DEBUG] [Thread-127508] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:10:49.069 [DEBUG] [Thread-127508] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:10:49.069 [DEBUG] [Thread-127508] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:10:49.069 [DEBUG] [Thread-127508] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:10:49.108 [INFO] [Thread-127508] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:10:49.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:10:49.718 [DEBUG] [Thread-127508] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:10:49.718 [DEBUG] [Thread-127508] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:10:49.720 [DEBUG] [Thread-127508] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:10:49.760 [DEBUG] [Thread-127508] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:10:49.760 [DEBUG] [Thread-127508] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:10:49.763 [DEBUG] [Thread-127508] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:10:49.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:10:49.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:10:49.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:10:49.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:10:49.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:10:49.791 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:10:49.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:10:49.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:10:49.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:10:49.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.048708 -999.00  +16.60  25.66     17   -7.80 1 1 1 1 1     0    0 23.87 21.37 ZNESW 20.5 25.7 304.6 27.4 16.7 -23.9 16.6 -22.9 16.4 -22.1 16.7 -23.6
2025-11-04T03:10:49.794 [DEBUG] [Thread-127508] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:10:49.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:10:49.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:10:49.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.048708
2025-11-04T03:10:49.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:10:49.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:10:49.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:10:49.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:10:49.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:10:49.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:10:12', tmtdew=28.7, humidity=12.78, cloud=0.0, wind=20.27, temperature=16.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:10:45', seeing=0.95, atlas_timestamp='2025-11-04T01:10:08.371', atlas_cloud=1, atlas_rain=1, zp_data=[0.06625000000000014, 0.02325000000000088, 0.09774999999999956, 0.11149999999999949, 0.042500000000000426, 0.07425000000000104, 0.041999999999999815, 0.07725000000000115, 0.08099999999999952, 0.06300000000000061, 0.12124999999999986, 0.1255000000000006, 0.19399999999999906, 0.02024999999999899, -0.01249999999999929, 0.028999999999999915, 0.07075000000000031, 0.08549999999999969, 0.11799999999999855, 0.09024999999999928, 0.13949999999999818, 0.1372499999999981, 0.13125000000000142, 0.05925000000000047, 0.08099999999999952, 0.25200000000000067, 0.16075000000000017, 0.21250000000000036, 0.20899999999999963, -0.3459999999999983, 0.13100000000000023, 0.0940000000000012, 0.17974999999999852], zp_timestamp='2025-11-04T01:06:00')
2025-11-04T03:10:49.915 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:10:49.927 [DEBUG] [Thread-127511] [transport.py] [_log()] starting thread (client mode): 0x1179b7c0
2025-11-04T03:10:49.927 [DEBUG] [Thread-127511] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:10:49.943 [DEBUG] [Thread-127511] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:10:49.943 [INFO] [Thread-127511] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:10:49.953 [DEBUG] [Thread-127511] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:10:49.953 [DEBUG] [Thread-127511] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:10:49.953 [DEBUG] [Thread-127511] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:10:49.953 [DEBUG] [Thread-127511] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:10:49.953 [DEBUG] [Thread-127511] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:10:49.954 [DEBUG] [Thread-127511] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:10:49.954 [DEBUG] [Thread-127511] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:10:49.954 [DEBUG] [Thread-127511] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:10:49.954 [DEBUG] [Thread-127511] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:10:49.954 [DEBUG] [Thread-127511] [transport.py] [_log()] client lang: <none>
2025-11-04T03:10:49.954 [DEBUG] [Thread-127511] [transport.py] [_log()] server lang: <none>
2025-11-04T03:10:49.954 [DEBUG] [Thread-127511] [transport.py] [_log()] kex follows: False
2025-11-04T03:10:49.954 [DEBUG] [Thread-127511] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:10:49.954 [DEBUG] [Thread-127511] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:10:49.955 [DEBUG] [Thread-127511] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:10:49.955 [DEBUG] [Thread-127511] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:10:49.955 [DEBUG] [Thread-127511] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:10:49.955 [DEBUG] [Thread-127511] [transport.py] [_log()] Compression: none
2025-11-04T03:10:49.955 [DEBUG] [Thread-127511] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:10:50.016 [DEBUG] [Thread-127511] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:10:50.017 [DEBUG] [Thread-127511] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:10:50.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:10:50.018 [DEBUG] [Thread-127511] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:10:50.018 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:10:50.076 [DEBUG] [Thread-127511] [transport.py] [_log()] userauth is OK
2025-11-04T03:10:50.076 [DEBUG] [Thread-127511] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:10:50.076 [DEBUG] [Thread-127511] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:10:50.077 [DEBUG] [Thread-127511] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:10:50.077 [DEBUG] [Thread-127511] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:10:50.095 [INFO] [Thread-127511] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:10:50.095 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:10:50.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:10:50.988 [DEBUG] [Thread-127511] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:10:50.989 [DEBUG] [Thread-127511] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:10:51.036 [DEBUG] [Thread-127511] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:10:51.037 [DEBUG] [Thread-127511] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:10:51.047 [DEBUG] [Thread-127511] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:10:51.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:10:51.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:10:51.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:10:51.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:10:51.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:10:51.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:10:51.088 [DEBUG] [Thread-127511] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:10:52.863 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:10:52.865 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:11:02.593 [DEBUG] [Thread-127513 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:11:15.465 [DEBUG] [Thread-127514 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:11:17.685 [DEBUG] [Thread-127515 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:11:21.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:11:21.111 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:11:21.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:11:22.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 10, 45), 28.85, 12.73, 0.0, 20.59, 16.66, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:11:22.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:10:45
2025-11-04T03:11:22.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:11:22.343 [DEBUG] [Thread-127516] [transport.py] [_log()] starting thread (client mode): 0xed23760
2025-11-04T03:11:22.344 [DEBUG] [Thread-127516] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:11:22.356 [DEBUG] [Thread-127516] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:11:22.357 [INFO] [Thread-127516] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:11:22.361 [DEBUG] [Thread-127516] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:11:22.361 [DEBUG] [Thread-127516] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:11:22.361 [DEBUG] [Thread-127516] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:11:22.361 [DEBUG] [Thread-127516] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:11:22.361 [DEBUG] [Thread-127516] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:11:22.361 [DEBUG] [Thread-127516] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:11:22.361 [DEBUG] [Thread-127516] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:11:22.361 [DEBUG] [Thread-127516] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:11:22.361 [DEBUG] [Thread-127516] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:11:22.361 [DEBUG] [Thread-127516] [transport.py] [_log()] client lang: <none>
2025-11-04T03:11:22.361 [DEBUG] [Thread-127516] [transport.py] [_log()] server lang: <none>
2025-11-04T03:11:22.361 [DEBUG] [Thread-127516] [transport.py] [_log()] kex follows: False
2025-11-04T03:11:22.362 [DEBUG] [Thread-127516] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:11:22.362 [DEBUG] [Thread-127516] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:11:22.362 [DEBUG] [Thread-127516] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:11:22.362 [DEBUG] [Thread-127516] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:11:22.362 [DEBUG] [Thread-127516] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:11:22.362 [DEBUG] [Thread-127516] [transport.py] [_log()] Compression: none
2025-11-04T03:11:22.362 [DEBUG] [Thread-127516] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:11:22.398 [DEBUG] [Thread-127516] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:11:22.404 [DEBUG] [Thread-127516] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:11:22.406 [DEBUG] [Thread-127516] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:11:22.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:11:22.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:11:22.409 [DEBUG] [Thread-127516] [transport.py] [_log()] userauth is OK
2025-11-04T03:11:22.410 [DEBUG] [Thread-127516] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:11:22.410 [DEBUG] [Thread-127516] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:11:22.410 [DEBUG] [Thread-127516] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:11:22.410 [DEBUG] [Thread-127516] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:11:22.436 [INFO] [Thread-127516] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:11:22.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:11:23.167 [DEBUG] [Thread-127516] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:11:23.167 [DEBUG] [Thread-127516] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:11:23.169 [DEBUG] [Thread-127516] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:11:23.208 [DEBUG] [Thread-127516] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:11:23.208 [DEBUG] [Thread-127516] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:11:23.210 [DEBUG] [Thread-127516] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:11:23.219 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:11:23.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:11:23.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:11:23.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:11:23.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:11:23.227 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:11:23.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:11:23.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:11:23.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:11:23.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.049055 -999.00  +16.60  19.31     17   -7.90 1 1 1 1 1     0    0 24.60 27.69 ZNESW 26.6 19.3 303.2 26.7 16.8 -23.6 16.6 -23.0 16.4 -22.5 16.7 -23.5
2025-11-04T03:11:23.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:11:23.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:11:23.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.049055
2025-11-04T03:11:23.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:11:23.240 [DEBUG] [Thread-127516] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:11:23.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:11:23.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:11:23.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:11:23.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:11:23.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:10:45', tmtdew=28.85, humidity=12.73, cloud=0.0, wind=20.59, temperature=16.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:11:18', seeing=0.99, atlas_timestamp='2025-11-04T01:10:38.352', atlas_cloud=1, atlas_rain=1, zp_data=[0.05074999999999896, 0.02925000000000111, 0.15525000000000055, 0.048500000000000654, 0.024499999999999744, 0.06425000000000125, -0.0039999999999995595, 0.06375000000000064, 0.06999999999999851, 0.07450000000000045, 0.13924999999999876, 0.11299999999999955, 0.21249999999999858, 0.10224999999999973, 0.00549999999999784, -0.023000000000001464, 0.10324999999999918, 0.09149999999999991, 0.13399999999999856, 0.098749999999999, 0.16249999999999787, 0.09174999999999933, 0.11175000000000068, 0.07675000000000054, 0.11499999999999844, 0.23249999999999993, 0.1532499999999999, 0.21199999999999974, 0.21999999999999886, -0.2895000000000003, 0.20150000000000112, 0.11000000000000121, 0.13074999999999903], zp_timestamp='2025-11-04T01:10:00')
2025-11-04T03:11:23.322 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:11:23.336 [DEBUG] [Thread-127519] [transport.py] [_log()] starting thread (client mode): 0xed21ae0
2025-11-04T03:11:23.336 [DEBUG] [Thread-127519] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:11:23.351 [DEBUG] [Thread-127519] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:11:23.352 [INFO] [Thread-127519] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:11:23.360 [DEBUG] [Thread-127519] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:11:23.360 [DEBUG] [Thread-127519] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:11:23.360 [DEBUG] [Thread-127519] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:11:23.360 [DEBUG] [Thread-127519] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:11:23.360 [DEBUG] [Thread-127519] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:11:23.360 [DEBUG] [Thread-127519] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:11:23.360 [DEBUG] [Thread-127519] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:11:23.360 [DEBUG] [Thread-127519] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:11:23.360 [DEBUG] [Thread-127519] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:11:23.360 [DEBUG] [Thread-127519] [transport.py] [_log()] client lang: <none>
2025-11-04T03:11:23.361 [DEBUG] [Thread-127519] [transport.py] [_log()] server lang: <none>
2025-11-04T03:11:23.361 [DEBUG] [Thread-127519] [transport.py] [_log()] kex follows: False
2025-11-04T03:11:23.361 [DEBUG] [Thread-127519] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:11:23.361 [DEBUG] [Thread-127519] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:11:23.361 [DEBUG] [Thread-127519] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:11:23.361 [DEBUG] [Thread-127519] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:11:23.361 [DEBUG] [Thread-127519] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:11:23.361 [DEBUG] [Thread-127519] [transport.py] [_log()] Compression: none
2025-11-04T03:11:23.361 [DEBUG] [Thread-127519] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:11:23.419 [DEBUG] [Thread-127519] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:11:23.420 [DEBUG] [Thread-127519] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:11:23.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:11:23.421 [DEBUG] [Thread-127519] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:11:23.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:11:23.480 [DEBUG] [Thread-127519] [transport.py] [_log()] userauth is OK
2025-11-04T03:11:23.480 [DEBUG] [Thread-127519] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:11:23.480 [DEBUG] [Thread-127519] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:11:23.481 [DEBUG] [Thread-127519] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:11:23.481 [DEBUG] [Thread-127519] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:11:23.499 [INFO] [Thread-127519] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:11:23.499 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:11:23.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:11:24.372 [DEBUG] [Thread-127519] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:11:24.372 [DEBUG] [Thread-127519] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:11:24.411 [DEBUG] [Thread-127519] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:11:24.411 [DEBUG] [Thread-127519] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:11:24.420 [DEBUG] [Thread-127519] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:11:24.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:11:24.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:11:24.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:11:24.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:11:24.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:11:24.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:11:24.461 [DEBUG] [Thread-127519] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:11:32.729 [DEBUG] [Thread-127521 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:11:47.810 [DEBUG] [Thread-127522 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:11:53.065 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:11:53.066 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:11:54.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:11:54.492 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:11:54.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:11:55.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 11, 51), 28.99, 12.61, 0.0, 21.05, 16.59, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:11:55.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:11:51
2025-11-04T03:11:55.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:11:55.546 [DEBUG] [Thread-127523] [transport.py] [_log()] starting thread (client mode): 0xed11720
2025-11-04T03:11:55.546 [DEBUG] [Thread-127523] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:11:55.567 [DEBUG] [Thread-127523] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:11:55.567 [INFO] [Thread-127523] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:11:55.571 [DEBUG] [Thread-127523] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:11:55.571 [DEBUG] [Thread-127523] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:11:55.571 [DEBUG] [Thread-127523] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:11:55.571 [DEBUG] [Thread-127523] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:11:55.571 [DEBUG] [Thread-127523] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:11:55.571 [DEBUG] [Thread-127523] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:11:55.571 [DEBUG] [Thread-127523] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:11:55.571 [DEBUG] [Thread-127523] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:11:55.571 [DEBUG] [Thread-127523] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:11:55.571 [DEBUG] [Thread-127523] [transport.py] [_log()] client lang: <none>
2025-11-04T03:11:55.571 [DEBUG] [Thread-127523] [transport.py] [_log()] server lang: <none>
2025-11-04T03:11:55.571 [DEBUG] [Thread-127523] [transport.py] [_log()] kex follows: False
2025-11-04T03:11:55.571 [DEBUG] [Thread-127523] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:11:55.571 [DEBUG] [Thread-127523] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:11:55.571 [DEBUG] [Thread-127523] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:11:55.572 [DEBUG] [Thread-127523] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:11:55.572 [DEBUG] [Thread-127523] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:11:55.572 [DEBUG] [Thread-127523] [transport.py] [_log()] Compression: none
2025-11-04T03:11:55.572 [DEBUG] [Thread-127523] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:11:55.603 [DEBUG] [Thread-127523] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:11:55.609 [DEBUG] [Thread-127523] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:11:55.611 [DEBUG] [Thread-127523] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:11:55.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:11:55.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:11:55.615 [DEBUG] [Thread-127523] [transport.py] [_log()] userauth is OK
2025-11-04T03:11:55.615 [DEBUG] [Thread-127523] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:11:55.616 [DEBUG] [Thread-127523] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:11:55.616 [DEBUG] [Thread-127523] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:11:55.616 [DEBUG] [Thread-127523] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:11:55.654 [INFO] [Thread-127523] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:11:55.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:11:56.339 [DEBUG] [Thread-127523] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:11:56.348 [DEBUG] [Thread-127523] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:11:56.348 [DEBUG] [Thread-127523] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:11:56.380 [DEBUG] [Thread-127523] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:11:56.380 [DEBUG] [Thread-127523] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:11:56.382 [DEBUG] [Thread-127523] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:11:56.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:11:56.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:11:56.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:11:56.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:11:56.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:11:56.403 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:11:56.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:11:56.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:11:56.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:11:56.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.049750 -999.00  +16.80  23.42     17   -7.90 1 1 1 1 1     0    0 24.52 35.34 ZNESW 18.2 23.4 298.2 28.1 16.8 -23.9 16.7 -22.8 16.5 -22.5 16.8 -23.6
2025-11-04T03:11:56.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:11:56.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:11:56.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.049750
2025-11-04T03:11:56.410 [DEBUG] [Thread-127523] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:11:56.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:11:56.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:11:56.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:11:56.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:11:56.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:11:56.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:11:51', tmtdew=28.99, humidity=12.61, cloud=0.0, wind=21.05, temperature=16.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:11:51', seeing=0.99, atlas_timestamp='2025-11-04T01:11:38.400', atlas_cloud=1, atlas_rain=1, zp_data=[0.05074999999999896, 0.02925000000000111, 0.15525000000000055, 0.048500000000000654, 0.024499999999999744, 0.06425000000000125, -0.0039999999999995595, 0.06375000000000064, 0.06999999999999851, 0.07450000000000045, 0.13924999999999876, 0.11299999999999955, 0.21249999999999858, 0.10224999999999973, 0.00549999999999784, -0.023000000000001464, 0.10324999999999918, 0.09149999999999991, 0.13399999999999856, 0.098749999999999, 0.16249999999999787, 0.09174999999999933, 0.11175000000000068, 0.07675000000000054, 0.11499999999999844, 0.23249999999999993, 0.1532499999999999, 0.21199999999999974, 0.21999999999999886, -0.2895000000000003, 0.20150000000000112, 0.11000000000000121, 0.13074999999999903], zp_timestamp='2025-11-04T01:10:00')
2025-11-04T03:11:56.493 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:11:56.506 [DEBUG] [Thread-127526] [transport.py] [_log()] starting thread (client mode): 0xed22ce0
2025-11-04T03:11:56.506 [DEBUG] [Thread-127526] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:11:56.522 [DEBUG] [Thread-127526] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:11:56.522 [INFO] [Thread-127526] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:11:56.531 [DEBUG] [Thread-127526] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:11:56.531 [DEBUG] [Thread-127526] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:11:56.531 [DEBUG] [Thread-127526] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:11:56.531 [DEBUG] [Thread-127526] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:11:56.531 [DEBUG] [Thread-127526] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:11:56.531 [DEBUG] [Thread-127526] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:11:56.531 [DEBUG] [Thread-127526] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:11:56.531 [DEBUG] [Thread-127526] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:11:56.531 [DEBUG] [Thread-127526] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:11:56.531 [DEBUG] [Thread-127526] [transport.py] [_log()] client lang: <none>
2025-11-04T03:11:56.531 [DEBUG] [Thread-127526] [transport.py] [_log()] server lang: <none>
2025-11-04T03:11:56.531 [DEBUG] [Thread-127526] [transport.py] [_log()] kex follows: False
2025-11-04T03:11:56.531 [DEBUG] [Thread-127526] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:11:56.531 [DEBUG] [Thread-127526] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:11:56.531 [DEBUG] [Thread-127526] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:11:56.531 [DEBUG] [Thread-127526] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:11:56.532 [DEBUG] [Thread-127526] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:11:56.532 [DEBUG] [Thread-127526] [transport.py] [_log()] Compression: none
2025-11-04T03:11:56.532 [DEBUG] [Thread-127526] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:11:56.593 [DEBUG] [Thread-127526] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:11:56.593 [DEBUG] [Thread-127526] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:11:56.593 [DEBUG] [Thread-127526] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:11:56.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:11:56.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:11:56.651 [DEBUG] [Thread-127526] [transport.py] [_log()] userauth is OK
2025-11-04T03:11:56.652 [DEBUG] [Thread-127526] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:11:56.652 [DEBUG] [Thread-127526] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:11:56.652 [DEBUG] [Thread-127526] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:11:56.652 [DEBUG] [Thread-127526] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:11:56.666 [INFO] [Thread-127526] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:11:56.666 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:11:56.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:11:57.515 [DEBUG] [Thread-127526] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:11:57.516 [DEBUG] [Thread-127526] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:11:57.555 [DEBUG] [Thread-127526] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:11:57.555 [DEBUG] [Thread-127526] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:11:57.565 [DEBUG] [Thread-127526] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:11:57.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:11:57.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:11:57.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:11:57.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:11:57.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:11:57.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:11:57.608 [DEBUG] [Thread-127526] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:12:02.839 [DEBUG] [Thread-127528 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:12:15.776 [DEBUG] [Thread-127529 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:12:17.952 [DEBUG] [Thread-127530 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:12:27.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:12:27.650 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:12:27.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:12:28.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 12, 23), 29.07, 12.55, 0.0, 21.16, 16.68, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:12:28.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:12:23
2025-11-04T03:12:28.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:12:28.778 [DEBUG] [Thread-127531] [transport.py] [_log()] starting thread (client mode): 0xedd7d90
2025-11-04T03:12:28.778 [DEBUG] [Thread-127531] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:12:28.787 [DEBUG] [Thread-127531] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:12:28.787 [INFO] [Thread-127531] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:12:28.791 [DEBUG] [Thread-127531] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:12:28.791 [DEBUG] [Thread-127531] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:12:28.791 [DEBUG] [Thread-127531] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:12:28.791 [DEBUG] [Thread-127531] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:12:28.792 [DEBUG] [Thread-127531] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:12:28.792 [DEBUG] [Thread-127531] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:12:28.792 [DEBUG] [Thread-127531] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:12:28.792 [DEBUG] [Thread-127531] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:12:28.792 [DEBUG] [Thread-127531] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:12:28.792 [DEBUG] [Thread-127531] [transport.py] [_log()] client lang: <none>
2025-11-04T03:12:28.792 [DEBUG] [Thread-127531] [transport.py] [_log()] server lang: <none>
2025-11-04T03:12:28.792 [DEBUG] [Thread-127531] [transport.py] [_log()] kex follows: False
2025-11-04T03:12:28.792 [DEBUG] [Thread-127531] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:12:28.792 [DEBUG] [Thread-127531] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:12:28.792 [DEBUG] [Thread-127531] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:12:28.792 [DEBUG] [Thread-127531] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:12:28.792 [DEBUG] [Thread-127531] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:12:28.793 [DEBUG] [Thread-127531] [transport.py] [_log()] Compression: none
2025-11-04T03:12:28.793 [DEBUG] [Thread-127531] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:12:28.829 [DEBUG] [Thread-127531] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:12:28.834 [DEBUG] [Thread-127531] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:12:28.836 [DEBUG] [Thread-127531] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:12:28.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:12:28.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:12:28.841 [DEBUG] [Thread-127531] [transport.py] [_log()] userauth is OK
2025-11-04T03:12:28.842 [DEBUG] [Thread-127531] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:12:28.842 [DEBUG] [Thread-127531] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:12:28.842 [DEBUG] [Thread-127531] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:12:28.842 [DEBUG] [Thread-127531] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:12:28.870 [INFO] [Thread-127531] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:12:28.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:12:29.440 [DEBUG] [Thread-127531] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:12:29.440 [DEBUG] [Thread-127531] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:12:29.441 [DEBUG] [Thread-127531] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:12:29.482 [DEBUG] [Thread-127531] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:12:29.482 [DEBUG] [Thread-127531] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:12:29.485 [DEBUG] [Thread-127531] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:12:29.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:12:29.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:12:29.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:12:29.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:12:29.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:12:29.513 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:12:29.514 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:12:29.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:12:29.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:12:29.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.050097 -999.00  +16.70  21.12     17   -7.90 1 1 1 1 1     0    0 24.58 38.72 ZNESW 22.4 21.1 300.0 25.3 16.8 -23.7 16.7 -23.1 16.5 -22.7 16.7 -23.5
2025-11-04T03:12:29.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:12:29.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:12:29.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.050097
2025-11-04T03:12:29.522 [DEBUG] [Thread-127531] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:12:29.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:12:29.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:12:29.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:12:29.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:12:29.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:12:29.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:12:23', tmtdew=29.07, humidity=12.55, cloud=0.0, wind=21.16, temperature=16.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:12:24', seeing=1.0, atlas_timestamp='2025-11-04T01:12:08.381', atlas_cloud=1, atlas_rain=1, zp_data=[0.05074999999999896, 0.02925000000000111, 0.15525000000000055, 0.048500000000000654, 0.024499999999999744, 0.06425000000000125, -0.0039999999999995595, 0.06375000000000064, 0.06999999999999851, 0.07450000000000045, 0.13924999999999876, 0.11299999999999955, 0.21249999999999858, 0.10224999999999973, 0.00549999999999784, -0.023000000000001464, 0.10324999999999918, 0.09149999999999991, 0.13399999999999856, 0.098749999999999, 0.16249999999999787, 0.09174999999999933, 0.11175000000000068, 0.07675000000000054, 0.11499999999999844, 0.23249999999999993, 0.1532499999999999, 0.21199999999999974, 0.21999999999999886, -0.2895000000000003, 0.20150000000000112, 0.11000000000000121, 0.13074999999999903], zp_timestamp='2025-11-04T01:10:00')
2025-11-04T03:12:29.640 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:12:29.658 [DEBUG] [Thread-127534] [transport.py] [_log()] starting thread (client mode): 0xed11f60
2025-11-04T03:12:29.658 [DEBUG] [Thread-127534] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:12:29.673 [DEBUG] [Thread-127534] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:12:29.673 [INFO] [Thread-127534] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:12:29.681 [DEBUG] [Thread-127534] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:12:29.681 [DEBUG] [Thread-127534] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:12:29.681 [DEBUG] [Thread-127534] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:12:29.681 [DEBUG] [Thread-127534] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:12:29.681 [DEBUG] [Thread-127534] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:12:29.681 [DEBUG] [Thread-127534] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:12:29.682 [DEBUG] [Thread-127534] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:12:29.682 [DEBUG] [Thread-127534] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:12:29.682 [DEBUG] [Thread-127534] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:12:29.682 [DEBUG] [Thread-127534] [transport.py] [_log()] client lang: <none>
2025-11-04T03:12:29.682 [DEBUG] [Thread-127534] [transport.py] [_log()] server lang: <none>
2025-11-04T03:12:29.682 [DEBUG] [Thread-127534] [transport.py] [_log()] kex follows: False
2025-11-04T03:12:29.682 [DEBUG] [Thread-127534] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:12:29.683 [DEBUG] [Thread-127534] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:12:29.683 [DEBUG] [Thread-127534] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:12:29.683 [DEBUG] [Thread-127534] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:12:29.683 [DEBUG] [Thread-127534] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:12:29.683 [DEBUG] [Thread-127534] [transport.py] [_log()] Compression: none
2025-11-04T03:12:29.683 [DEBUG] [Thread-127534] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:12:29.736 [DEBUG] [Thread-127534] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:12:29.737 [DEBUG] [Thread-127534] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:12:29.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:12:29.737 [DEBUG] [Thread-127534] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:12:29.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:12:29.794 [DEBUG] [Thread-127534] [transport.py] [_log()] userauth is OK
2025-11-04T03:12:29.794 [DEBUG] [Thread-127534] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:12:29.794 [DEBUG] [Thread-127534] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:12:29.794 [DEBUG] [Thread-127534] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:12:29.794 [DEBUG] [Thread-127534] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:12:29.810 [INFO] [Thread-127534] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:12:29.810 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:12:29.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:12:30.674 [DEBUG] [Thread-127534] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:12:30.674 [DEBUG] [Thread-127534] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:12:30.723 [DEBUG] [Thread-127534] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:12:30.723 [DEBUG] [Thread-127534] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:12:30.732 [DEBUG] [Thread-127534] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:12:30.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:12:30.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:12:30.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:12:30.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:12:30.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:12:30.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:12:30.771 [DEBUG] [Thread-127534] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:12:33.005 [DEBUG] [Thread-127536 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:12:48.126 [DEBUG] [Thread-127537 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:12:53.271 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:12:53.272 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:13:00.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:13:00.794 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:13:00.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:13:01.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 12, 56), 29.13, 12.55, 0.0, 18.84, 16.71, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:13:01.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:12:56
2025-11-04T03:13:01.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:13:01.975 [DEBUG] [Thread-127538] [transport.py] [_log()] starting thread (client mode): 0x1179beb0
2025-11-04T03:13:01.975 [DEBUG] [Thread-127538] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:13:01.995 [DEBUG] [Thread-127538] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:13:01.995 [INFO] [Thread-127538] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:13:01.998 [DEBUG] [Thread-127538] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:13:01.998 [DEBUG] [Thread-127538] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:13:01.998 [DEBUG] [Thread-127538] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:13:01.998 [DEBUG] [Thread-127538] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:13:01.998 [DEBUG] [Thread-127538] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:13:01.998 [DEBUG] [Thread-127538] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:13:01.998 [DEBUG] [Thread-127538] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:13:01.998 [DEBUG] [Thread-127538] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:13:01.998 [DEBUG] [Thread-127538] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:13:01.998 [DEBUG] [Thread-127538] [transport.py] [_log()] client lang: <none>
2025-11-04T03:13:01.998 [DEBUG] [Thread-127538] [transport.py] [_log()] server lang: <none>
2025-11-04T03:13:01.999 [DEBUG] [Thread-127538] [transport.py] [_log()] kex follows: False
2025-11-04T03:13:01.999 [DEBUG] [Thread-127538] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:13:01.999 [DEBUG] [Thread-127538] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:13:01.999 [DEBUG] [Thread-127538] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:13:01.999 [DEBUG] [Thread-127538] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:13:01.999 [DEBUG] [Thread-127538] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:13:01.999 [DEBUG] [Thread-127538] [transport.py] [_log()] Compression: none
2025-11-04T03:13:01.999 [DEBUG] [Thread-127538] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:13:02.015 [DEBUG] [Thread-127538] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:13:02.016 [DEBUG] [Thread-127538] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:13:02.016 [DEBUG] [Thread-127538] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:13:02.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:13:02.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:13:02.017 [DEBUG] [Thread-127538] [transport.py] [_log()] userauth is OK
2025-11-04T03:13:02.017 [DEBUG] [Thread-127538] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:13:02.017 [DEBUG] [Thread-127538] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:13:02.017 [DEBUG] [Thread-127538] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:13:02.017 [DEBUG] [Thread-127538] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:13:02.032 [INFO] [Thread-127538] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:13:02.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:13:02.660 [DEBUG] [Thread-127538] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:13:02.660 [DEBUG] [Thread-127538] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:13:02.660 [DEBUG] [Thread-127538] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:13:02.700 [DEBUG] [Thread-127538] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:13:02.700 [DEBUG] [Thread-127538] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:13:02.702 [DEBUG] [Thread-127538] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:13:02.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:13:02.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:13:02.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:13:02.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:13:02.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:13:02.720 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:13:02.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:13:02.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:13:02.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:13:02.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.050444 -999.00  +16.70  23.16     17   -8.10 1 1 1 1 1     0    0 24.81 43.28 ZNESW 21.3 23.2 303.2 27.6 16.8 -23.9 16.7 -22.9 16.5 -22.6 16.8 -23.6
2025-11-04T03:13:02.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:13:02.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:13:02.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.050444
2025-11-04T03:13:02.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:13:02.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:13:02.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:13:02.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:13:02.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:13:02.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:12:56', tmtdew=29.13, humidity=12.55, cloud=0.0, wind=18.84, temperature=16.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:12:56', seeing=1.0, atlas_timestamp='2025-11-04T01:12:38.362', atlas_cloud=1, atlas_rain=1, zp_data=[0.05074999999999896, 0.02925000000000111, 0.15525000000000055, 0.048500000000000654, 0.024499999999999744, 0.06425000000000125, -0.0039999999999995595, 0.06375000000000064, 0.06999999999999851, 0.07450000000000045, 0.13924999999999876, 0.11299999999999955, 0.21249999999999858, 0.10224999999999973, 0.00549999999999784, -0.023000000000001464, 0.10324999999999918, 0.09149999999999991, 0.13399999999999856, 0.098749999999999, 0.16249999999999787, 0.09174999999999933, 0.11175000000000068, 0.07675000000000054, 0.11499999999999844, 0.23249999999999993, 0.1532499999999999, 0.21199999999999974, 0.21999999999999886, -0.2895000000000003, 0.20150000000000112, 0.11000000000000121, 0.13074999999999903], zp_timestamp='2025-11-04T01:10:00')
2025-11-04T03:13:02.721 [DEBUG] [Thread-127538] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:13:02.796 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:13:02.807 [DEBUG] [Thread-127541] [transport.py] [_log()] starting thread (client mode): 0xedd4ee0
2025-11-04T03:13:02.807 [DEBUG] [Thread-127541] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:13:02.822 [DEBUG] [Thread-127541] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:13:02.822 [INFO] [Thread-127541] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:13:02.830 [DEBUG] [Thread-127541] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:13:02.830 [DEBUG] [Thread-127541] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:13:02.830 [DEBUG] [Thread-127541] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:13:02.830 [DEBUG] [Thread-127541] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:13:02.830 [DEBUG] [Thread-127541] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:13:02.830 [DEBUG] [Thread-127541] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:13:02.830 [DEBUG] [Thread-127541] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:13:02.830 [DEBUG] [Thread-127541] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:13:02.830 [DEBUG] [Thread-127541] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:13:02.830 [DEBUG] [Thread-127541] [transport.py] [_log()] client lang: <none>
2025-11-04T03:13:02.830 [DEBUG] [Thread-127541] [transport.py] [_log()] server lang: <none>
2025-11-04T03:13:02.830 [DEBUG] [Thread-127541] [transport.py] [_log()] kex follows: False
2025-11-04T03:13:02.830 [DEBUG] [Thread-127541] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:13:02.830 [DEBUG] [Thread-127541] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:13:02.830 [DEBUG] [Thread-127541] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:13:02.830 [DEBUG] [Thread-127541] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:13:02.830 [DEBUG] [Thread-127541] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:13:02.830 [DEBUG] [Thread-127541] [transport.py] [_log()] Compression: none
2025-11-04T03:13:02.830 [DEBUG] [Thread-127541] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:13:02.892 [DEBUG] [Thread-127541] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:13:02.893 [DEBUG] [Thread-127541] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:13:02.893 [DEBUG] [Thread-127541] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:13:02.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:13:02.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:13:02.949 [DEBUG] [Thread-127541] [transport.py] [_log()] userauth is OK
2025-11-04T03:13:02.949 [DEBUG] [Thread-127541] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:13:02.950 [DEBUG] [Thread-127541] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:13:02.950 [DEBUG] [Thread-127541] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:13:02.950 [DEBUG] [Thread-127541] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:13:02.964 [INFO] [Thread-127541] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:13:02.964 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:13:02.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:13:03.157 [DEBUG] [Thread-127543 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:13:03.831 [DEBUG] [Thread-127541] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:13:03.831 [DEBUG] [Thread-127541] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:13:03.880 [DEBUG] [Thread-127541] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:13:03.880 [DEBUG] [Thread-127541] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:13:03.889 [DEBUG] [Thread-127541] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:13:03.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:13:03.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:13:03.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:13:03.916 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:13:03.916 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:13:03.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:13:03.925 [DEBUG] [Thread-127541] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:13:16.127 [DEBUG] [Thread-127544 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:13:18.193 [DEBUG] [Thread-127545 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:13:33.223 [DEBUG] [Thread-127546 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:13:33.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:13:33.947 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:13:33.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:13:34.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 13, 28), 29.17, 12.5, 0.0, 19.48, 16.68, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:13:34.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:13:28
2025-11-04T03:13:34.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:13:35.090 [DEBUG] [Thread-127547] [transport.py] [_log()] starting thread (client mode): 0xed20040
2025-11-04T03:13:35.091 [DEBUG] [Thread-127547] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:13:35.113 [DEBUG] [Thread-127547] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:13:35.113 [INFO] [Thread-127547] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:13:35.120 [DEBUG] [Thread-127547] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:13:35.120 [DEBUG] [Thread-127547] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:13:35.120 [DEBUG] [Thread-127547] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:13:35.120 [DEBUG] [Thread-127547] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:13:35.120 [DEBUG] [Thread-127547] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:13:35.120 [DEBUG] [Thread-127547] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:13:35.120 [DEBUG] [Thread-127547] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:13:35.120 [DEBUG] [Thread-127547] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:13:35.120 [DEBUG] [Thread-127547] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:13:35.120 [DEBUG] [Thread-127547] [transport.py] [_log()] client lang: <none>
2025-11-04T03:13:35.120 [DEBUG] [Thread-127547] [transport.py] [_log()] server lang: <none>
2025-11-04T03:13:35.120 [DEBUG] [Thread-127547] [transport.py] [_log()] kex follows: False
2025-11-04T03:13:35.120 [DEBUG] [Thread-127547] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:13:35.120 [DEBUG] [Thread-127547] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:13:35.120 [DEBUG] [Thread-127547] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:13:35.120 [DEBUG] [Thread-127547] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:13:35.120 [DEBUG] [Thread-127547] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:13:35.120 [DEBUG] [Thread-127547] [transport.py] [_log()] Compression: none
2025-11-04T03:13:35.120 [DEBUG] [Thread-127547] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:13:35.131 [DEBUG] [Thread-127547] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:13:35.131 [DEBUG] [Thread-127547] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:13:35.132 [DEBUG] [Thread-127547] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:13:35.132 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:13:35.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:13:35.137 [DEBUG] [Thread-127547] [transport.py] [_log()] userauth is OK
2025-11-04T03:13:35.137 [DEBUG] [Thread-127547] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:13:35.137 [DEBUG] [Thread-127547] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:13:35.137 [DEBUG] [Thread-127547] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:13:35.137 [DEBUG] [Thread-127547] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:13:35.158 [INFO] [Thread-127547] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:13:35.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:13:35.719 [DEBUG] [Thread-127547] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:13:35.719 [DEBUG] [Thread-127547] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:13:35.729 [DEBUG] [Thread-127547] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:13:35.760 [DEBUG] [Thread-127547] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:13:35.760 [DEBUG] [Thread-127547] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:13:35.762 [DEBUG] [Thread-127547] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:13:35.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:13:35.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:13:35.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:13:35.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:13:35.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:13:35.776 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:13:35.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:13:35.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:13:35.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:13:35.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.050791 -999.00  +16.70  19.21     17   -8.20 1 1 1 1 1     0    0 24.75 52.44 ZNESW 23.9 19.2 301.8 24.9 16.9 -23.7 16.7 -23.1 16.5 -22.7 16.8 -23.5
2025-11-04T03:13:35.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:13:35.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:13:35.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.050791
2025-11-04T03:13:35.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:13:35.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:13:35.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:13:35.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:13:35.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:13:35.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:13:28', tmtdew=29.17, humidity=12.5, cloud=0.0, wind=19.48, temperature=16.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:13:29', seeing=0.99, atlas_timestamp='2025-11-04T01:13:08.342', atlas_cloud=1, atlas_rain=1, zp_data=[0.05074999999999896, 0.02925000000000111, 0.15525000000000055, 0.048500000000000654, 0.024499999999999744, 0.06425000000000125, -0.0039999999999995595, 0.06375000000000064, 0.06999999999999851, 0.07450000000000045, 0.13924999999999876, 0.11299999999999955, 0.21249999999999858, 0.10224999999999973, 0.00549999999999784, -0.023000000000001464, 0.10324999999999918, 0.09149999999999991, 0.13399999999999856, 0.098749999999999, 0.16249999999999787, 0.09174999999999933, 0.11175000000000068, 0.07675000000000054, 0.11499999999999844, 0.23249999999999993, 0.1532499999999999, 0.21199999999999974, 0.21999999999999886, -0.2895000000000003, 0.20150000000000112, 0.11000000000000121, 0.13074999999999903], zp_timestamp='2025-11-04T01:10:00')
2025-11-04T03:13:35.784 [DEBUG] [Thread-127547] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:13:35.857 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:13:35.871 [DEBUG] [Thread-127550] [transport.py] [_log()] starting thread (client mode): 0xedd5930
2025-11-04T03:13:35.871 [DEBUG] [Thread-127550] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:13:35.888 [DEBUG] [Thread-127550] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:13:35.888 [INFO] [Thread-127550] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:13:35.896 [DEBUG] [Thread-127550] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:13:35.897 [DEBUG] [Thread-127550] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:13:35.897 [DEBUG] [Thread-127550] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:13:35.897 [DEBUG] [Thread-127550] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:13:35.897 [DEBUG] [Thread-127550] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:13:35.897 [DEBUG] [Thread-127550] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:13:35.897 [DEBUG] [Thread-127550] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:13:35.897 [DEBUG] [Thread-127550] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:13:35.897 [DEBUG] [Thread-127550] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:13:35.897 [DEBUG] [Thread-127550] [transport.py] [_log()] client lang: <none>
2025-11-04T03:13:35.897 [DEBUG] [Thread-127550] [transport.py] [_log()] server lang: <none>
2025-11-04T03:13:35.897 [DEBUG] [Thread-127550] [transport.py] [_log()] kex follows: False
2025-11-04T03:13:35.897 [DEBUG] [Thread-127550] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:13:35.897 [DEBUG] [Thread-127550] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:13:35.897 [DEBUG] [Thread-127550] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:13:35.897 [DEBUG] [Thread-127550] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:13:35.898 [DEBUG] [Thread-127550] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:13:35.898 [DEBUG] [Thread-127550] [transport.py] [_log()] Compression: none
2025-11-04T03:13:35.898 [DEBUG] [Thread-127550] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:13:35.965 [DEBUG] [Thread-127550] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:13:35.966 [DEBUG] [Thread-127550] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:13:35.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:13:35.967 [DEBUG] [Thread-127550] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:13:35.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:13:36.022 [DEBUG] [Thread-127550] [transport.py] [_log()] userauth is OK
2025-11-04T03:13:36.022 [DEBUG] [Thread-127550] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:13:36.023 [DEBUG] [Thread-127550] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:13:36.023 [DEBUG] [Thread-127550] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:13:36.023 [DEBUG] [Thread-127550] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:13:36.040 [INFO] [Thread-127550] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:13:36.040 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:13:36.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:13:36.849 [DEBUG] [Thread-127550] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:13:36.849 [DEBUG] [Thread-127550] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:13:36.888 [DEBUG] [Thread-127550] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:13:36.888 [DEBUG] [Thread-127550] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:13:36.897 [DEBUG] [Thread-127550] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:13:36.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:13:36.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:13:36.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:13:36.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:13:36.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:13:36.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:13:36.931 [DEBUG] [Thread-127550] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:13:48.278 [DEBUG] [Thread-127552 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:13:53.484 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:13:53.487 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:14:03.440 [DEBUG] [Thread-127553 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:14:06.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:14:06.956 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:14:06.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:14:07.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 14, 1), 29.36, 12.3, 0.0, 19.39, 16.68, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:14:07.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:14:01
2025-11-04T03:14:07.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:14:08.114 [DEBUG] [Thread-127554] [transport.py] [_log()] starting thread (client mode): 0xedd7130
2025-11-04T03:14:08.114 [DEBUG] [Thread-127554] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:14:08.130 [DEBUG] [Thread-127554] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:14:08.130 [INFO] [Thread-127554] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:14:08.133 [DEBUG] [Thread-127554] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:14:08.133 [DEBUG] [Thread-127554] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:14:08.134 [DEBUG] [Thread-127554] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:14:08.134 [DEBUG] [Thread-127554] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:14:08.134 [DEBUG] [Thread-127554] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:14:08.134 [DEBUG] [Thread-127554] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:14:08.134 [DEBUG] [Thread-127554] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:14:08.134 [DEBUG] [Thread-127554] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:14:08.134 [DEBUG] [Thread-127554] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:14:08.134 [DEBUG] [Thread-127554] [transport.py] [_log()] client lang: <none>
2025-11-04T03:14:08.134 [DEBUG] [Thread-127554] [transport.py] [_log()] server lang: <none>
2025-11-04T03:14:08.134 [DEBUG] [Thread-127554] [transport.py] [_log()] kex follows: False
2025-11-04T03:14:08.134 [DEBUG] [Thread-127554] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:14:08.135 [DEBUG] [Thread-127554] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:14:08.135 [DEBUG] [Thread-127554] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:14:08.135 [DEBUG] [Thread-127554] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:14:08.135 [DEBUG] [Thread-127554] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:14:08.135 [DEBUG] [Thread-127554] [transport.py] [_log()] Compression: none
2025-11-04T03:14:08.135 [DEBUG] [Thread-127554] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:14:08.165 [DEBUG] [Thread-127554] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:14:08.167 [DEBUG] [Thread-127554] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:14:08.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:14:08.169 [DEBUG] [Thread-127554] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:14:08.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:14:08.210 [DEBUG] [Thread-127554] [transport.py] [_log()] userauth is OK
2025-11-04T03:14:08.211 [DEBUG] [Thread-127554] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:14:08.211 [DEBUG] [Thread-127554] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:14:08.211 [DEBUG] [Thread-127554] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:14:08.211 [DEBUG] [Thread-127554] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:14:08.238 [INFO] [Thread-127554] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:14:08.241 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:14:08.881 [DEBUG] [Thread-127554] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:14:08.890 [DEBUG] [Thread-127554] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:14:08.892 [DEBUG] [Thread-127554] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:14:08.922 [DEBUG] [Thread-127554] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:14:08.922 [DEBUG] [Thread-127554] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:14:08.925 [DEBUG] [Thread-127554] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:14:08.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:14:08.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:14:08.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:14:08.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:14:08.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:14:08.955 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:14:08.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:14:08.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:14:08.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:14:08.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.051138 -999.00  +16.80  24.38     16   -8.40 1 1 1 1 1     0    0 25.85 64.04 ZNESW 24.7 24.4 307.4 30.3 16.9 -23.7 16.7 -23.0 16.6 -22.4 16.8 -23.5
2025-11-04T03:14:08.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:14:08.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:14:08.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.051138
2025-11-04T03:14:08.963 [DEBUG] [Thread-127554] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:14:08.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:14:08.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:14:08.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:14:08.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:14:08.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:14:08.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:14:01', tmtdew=29.36, humidity=12.3, cloud=0.0, wind=19.39, temperature=16.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:14:02', seeing=1.03, atlas_timestamp='2025-11-04T01:13:38.323', atlas_cloud=1, atlas_rain=1, zp_data=[0.05074999999999896, 0.02925000000000111, 0.15525000000000055, 0.048500000000000654, 0.024499999999999744, 0.06425000000000125, -0.0039999999999995595, 0.06375000000000064, 0.06999999999999851, 0.07450000000000045, 0.13924999999999876, 0.11299999999999955, 0.21249999999999858, 0.10224999999999973, 0.00549999999999784, -0.023000000000001464, 0.10324999999999918, 0.09149999999999991, 0.13399999999999856, 0.098749999999999, 0.16249999999999787, 0.09174999999999933, 0.11175000000000068, 0.07675000000000054, 0.11499999999999844, 0.23249999999999993, 0.1532499999999999, 0.21199999999999974, 0.21999999999999886, -0.2895000000000003, 0.20150000000000112, 0.11000000000000121, 0.13074999999999903], zp_timestamp='2025-11-04T01:12:00')
2025-11-04T03:14:09.068 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:14:09.080 [DEBUG] [Thread-127557] [transport.py] [_log()] starting thread (client mode): 0xed11ae0
2025-11-04T03:14:09.081 [DEBUG] [Thread-127557] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:14:09.094 [DEBUG] [Thread-127557] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:14:09.095 [INFO] [Thread-127557] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:14:09.103 [DEBUG] [Thread-127557] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:14:09.103 [DEBUG] [Thread-127557] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:14:09.103 [DEBUG] [Thread-127557] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:14:09.103 [DEBUG] [Thread-127557] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:14:09.103 [DEBUG] [Thread-127557] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:14:09.103 [DEBUG] [Thread-127557] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:14:09.104 [DEBUG] [Thread-127557] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:14:09.104 [DEBUG] [Thread-127557] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:14:09.104 [DEBUG] [Thread-127557] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:14:09.104 [DEBUG] [Thread-127557] [transport.py] [_log()] client lang: <none>
2025-11-04T03:14:09.104 [DEBUG] [Thread-127557] [transport.py] [_log()] server lang: <none>
2025-11-04T03:14:09.104 [DEBUG] [Thread-127557] [transport.py] [_log()] kex follows: False
2025-11-04T03:14:09.104 [DEBUG] [Thread-127557] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:14:09.104 [DEBUG] [Thread-127557] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:14:09.104 [DEBUG] [Thread-127557] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:14:09.113 [DEBUG] [Thread-127557] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:14:09.113 [DEBUG] [Thread-127557] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:14:09.114 [DEBUG] [Thread-127557] [transport.py] [_log()] Compression: none
2025-11-04T03:14:09.114 [DEBUG] [Thread-127557] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:14:09.164 [DEBUG] [Thread-127557] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:14:09.165 [DEBUG] [Thread-127557] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:14:09.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:14:09.167 [DEBUG] [Thread-127557] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:14:09.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:14:09.223 [DEBUG] [Thread-127557] [transport.py] [_log()] userauth is OK
2025-11-04T03:14:09.223 [DEBUG] [Thread-127557] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:14:09.224 [DEBUG] [Thread-127557] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:14:09.224 [DEBUG] [Thread-127557] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:14:09.224 [DEBUG] [Thread-127557] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:14:09.246 [INFO] [Thread-127557] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:14:09.246 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:14:09.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:14:10.089 [DEBUG] [Thread-127557] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:14:10.090 [DEBUG] [Thread-127557] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:14:10.138 [DEBUG] [Thread-127557] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:14:10.139 [DEBUG] [Thread-127557] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:14:10.148 [DEBUG] [Thread-127557] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:14:10.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:14:10.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:14:10.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:14:10.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:14:10.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:14:10.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:14:10.193 [DEBUG] [Thread-127557] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:14:16.478 [DEBUG] [Thread-127559 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:14:18.489 [DEBUG] [Thread-127560 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:14:33.598 [DEBUG] [Thread-127561 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:14:40.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:14:40.206 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:14:40.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:14:41.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 14, 34), 29.72, 11.75, 0.0, 21.23, 16.76, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:14:41.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:14:34
2025-11-04T03:14:41.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:14:41.305 [DEBUG] [Thread-127562] [transport.py] [_log()] starting thread (client mode): 0xed21690
2025-11-04T03:14:41.305 [DEBUG] [Thread-127562] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:14:41.321 [DEBUG] [Thread-127562] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:14:41.321 [INFO] [Thread-127562] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:14:41.324 [DEBUG] [Thread-127562] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:14:41.324 [DEBUG] [Thread-127562] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:14:41.324 [DEBUG] [Thread-127562] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:14:41.324 [DEBUG] [Thread-127562] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:14:41.324 [DEBUG] [Thread-127562] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:14:41.324 [DEBUG] [Thread-127562] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:14:41.324 [DEBUG] [Thread-127562] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:14:41.324 [DEBUG] [Thread-127562] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:14:41.324 [DEBUG] [Thread-127562] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:14:41.324 [DEBUG] [Thread-127562] [transport.py] [_log()] client lang: <none>
2025-11-04T03:14:41.324 [DEBUG] [Thread-127562] [transport.py] [_log()] server lang: <none>
2025-11-04T03:14:41.324 [DEBUG] [Thread-127562] [transport.py] [_log()] kex follows: False
2025-11-04T03:14:41.324 [DEBUG] [Thread-127562] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:14:41.325 [DEBUG] [Thread-127562] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:14:41.325 [DEBUG] [Thread-127562] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:14:41.325 [DEBUG] [Thread-127562] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:14:41.325 [DEBUG] [Thread-127562] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:14:41.325 [DEBUG] [Thread-127562] [transport.py] [_log()] Compression: none
2025-11-04T03:14:41.325 [DEBUG] [Thread-127562] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:14:41.345 [DEBUG] [Thread-127562] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:14:41.347 [DEBUG] [Thread-127562] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:14:41.347 [DEBUG] [Thread-127562] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:14:41.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:14:41.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:14:41.351 [DEBUG] [Thread-127562] [transport.py] [_log()] userauth is OK
2025-11-04T03:14:41.351 [DEBUG] [Thread-127562] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:14:41.351 [DEBUG] [Thread-127562] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:14:41.351 [DEBUG] [Thread-127562] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:14:41.352 [DEBUG] [Thread-127562] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:14:41.371 [INFO] [Thread-127562] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:14:41.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:14:41.928 [DEBUG] [Thread-127562] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:14:41.928 [DEBUG] [Thread-127562] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:14:41.937 [DEBUG] [Thread-127562] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:14:41.969 [DEBUG] [Thread-127562] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:14:41.970 [DEBUG] [Thread-127562] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:14:41.973 [DEBUG] [Thread-127562] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:14:41.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:14:41.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:14:41.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:14:41.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:14:41.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:14:41.993 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:14:41.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:14:41.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:14:41.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:14:41.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.051486 -999.00  +16.90  24.88     16   -8.40 1 1 1 1 1     0    0 25.53 64.60 ZNESW 23.4 24.9 302.8 31.5 16.9 -23.9 16.8 -22.9 16.6 -22.6 16.8 -23.7
2025-11-04T03:14:41.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:14:41.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:14:41.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.051486
2025-11-04T03:14:41.999 [DEBUG] [Thread-127562] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:14:42.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:14:42.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:14:42.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:14:42.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:14:42.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:14:42.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:14:34', tmtdew=29.72, humidity=11.75, cloud=0.0, wind=21.23, temperature=16.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:14:35', seeing=1.03, atlas_timestamp='2025-11-04T01:14:08.390', atlas_cloud=1, atlas_rain=1, zp_data=[0.05074999999999896, 0.02925000000000111, 0.15525000000000055, 0.048500000000000654, 0.024499999999999744, 0.06425000000000125, -0.0039999999999995595, 0.06375000000000064, 0.06999999999999851, 0.07450000000000045, 0.13924999999999876, 0.11299999999999955, 0.21249999999999858, 0.10224999999999973, 0.00549999999999784, -0.023000000000001464, 0.10324999999999918, 0.09149999999999991, 0.13399999999999856, 0.098749999999999, 0.16249999999999787, 0.09174999999999933, 0.11175000000000068, 0.07675000000000054, 0.11499999999999844, 0.23249999999999993, 0.1532499999999999, 0.21199999999999974, 0.21999999999999886, -0.2895000000000003, 0.20150000000000112, 0.11000000000000121, 0.13074999999999903], zp_timestamp='2025-11-04T01:12:00')
2025-11-04T03:14:42.080 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:14:42.093 [DEBUG] [Thread-127565] [transport.py] [_log()] starting thread (client mode): 0xed23ee0
2025-11-04T03:14:42.093 [DEBUG] [Thread-127565] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:14:42.107 [DEBUG] [Thread-127565] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:14:42.107 [INFO] [Thread-127565] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:14:42.115 [DEBUG] [Thread-127565] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:14:42.115 [DEBUG] [Thread-127565] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:14:42.115 [DEBUG] [Thread-127565] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:14:42.115 [DEBUG] [Thread-127565] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:14:42.115 [DEBUG] [Thread-127565] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:14:42.115 [DEBUG] [Thread-127565] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:14:42.115 [DEBUG] [Thread-127565] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:14:42.115 [DEBUG] [Thread-127565] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:14:42.115 [DEBUG] [Thread-127565] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:14:42.115 [DEBUG] [Thread-127565] [transport.py] [_log()] client lang: <none>
2025-11-04T03:14:42.115 [DEBUG] [Thread-127565] [transport.py] [_log()] server lang: <none>
2025-11-04T03:14:42.115 [DEBUG] [Thread-127565] [transport.py] [_log()] kex follows: False
2025-11-04T03:14:42.115 [DEBUG] [Thread-127565] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:14:42.115 [DEBUG] [Thread-127565] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:14:42.115 [DEBUG] [Thread-127565] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:14:42.115 [DEBUG] [Thread-127565] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:14:42.115 [DEBUG] [Thread-127565] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:14:42.115 [DEBUG] [Thread-127565] [transport.py] [_log()] Compression: none
2025-11-04T03:14:42.115 [DEBUG] [Thread-127565] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:14:42.172 [DEBUG] [Thread-127565] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:14:42.172 [DEBUG] [Thread-127565] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:14:42.172 [DEBUG] [Thread-127565] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:14:42.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:14:42.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:14:42.230 [DEBUG] [Thread-127565] [transport.py] [_log()] userauth is OK
2025-11-04T03:14:42.230 [DEBUG] [Thread-127565] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:14:42.230 [DEBUG] [Thread-127565] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:14:42.230 [DEBUG] [Thread-127565] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:14:42.230 [DEBUG] [Thread-127565] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:14:42.244 [INFO] [Thread-127565] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:14:42.245 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:14:42.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:14:43.094 [DEBUG] [Thread-127565] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:14:43.094 [DEBUG] [Thread-127565] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:14:43.143 [DEBUG] [Thread-127565] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:14:43.143 [DEBUG] [Thread-127565] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:14:43.154 [DEBUG] [Thread-127565] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:14:43.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:14:43.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:14:43.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:14:43.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:14:43.194 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:14:43.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:14:43.203 [DEBUG] [Thread-127565] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:14:48.644 [DEBUG] [Thread-127567 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:14:53.689 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:14:53.690 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:15:03.744 [DEBUG] [Thread-127568 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:15:13.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:15:13.218 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:15:13.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:15:13.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 15, 7), 29.86, 11.6, 0.0, 21.26, 16.74, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:15:13.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:15:07
2025-11-04T03:15:14.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:15:14.323 [DEBUG] [Thread-127569] [transport.py] [_log()] starting thread (client mode): 0xed20a60
2025-11-04T03:15:14.324 [DEBUG] [Thread-127569] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:15:14.334 [DEBUG] [Thread-127569] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:15:14.334 [INFO] [Thread-127569] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:15:14.339 [DEBUG] [Thread-127569] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:15:14.339 [DEBUG] [Thread-127569] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:15:14.339 [DEBUG] [Thread-127569] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:15:14.339 [DEBUG] [Thread-127569] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:15:14.339 [DEBUG] [Thread-127569] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:15:14.339 [DEBUG] [Thread-127569] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:15:14.339 [DEBUG] [Thread-127569] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:15:14.339 [DEBUG] [Thread-127569] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:15:14.339 [DEBUG] [Thread-127569] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:15:14.339 [DEBUG] [Thread-127569] [transport.py] [_log()] client lang: <none>
2025-11-04T03:15:14.340 [DEBUG] [Thread-127569] [transport.py] [_log()] server lang: <none>
2025-11-04T03:15:14.340 [DEBUG] [Thread-127569] [transport.py] [_log()] kex follows: False
2025-11-04T03:15:14.340 [DEBUG] [Thread-127569] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:15:14.340 [DEBUG] [Thread-127569] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:15:14.340 [DEBUG] [Thread-127569] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:15:14.340 [DEBUG] [Thread-127569] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:15:14.340 [DEBUG] [Thread-127569] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:15:14.340 [DEBUG] [Thread-127569] [transport.py] [_log()] Compression: none
2025-11-04T03:15:14.341 [DEBUG] [Thread-127569] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:15:14.383 [DEBUG] [Thread-127569] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:15:14.389 [DEBUG] [Thread-127569] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:15:14.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:15:14.393 [DEBUG] [Thread-127569] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:15:14.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:15:14.397 [DEBUG] [Thread-127569] [transport.py] [_log()] userauth is OK
2025-11-04T03:15:14.398 [DEBUG] [Thread-127569] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:15:14.398 [DEBUG] [Thread-127569] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:15:14.398 [DEBUG] [Thread-127569] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:15:14.398 [DEBUG] [Thread-127569] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:15:14.439 [INFO] [Thread-127569] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:15:14.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:15:15.401 [DEBUG] [Thread-127569] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:15:15.402 [DEBUG] [Thread-127569] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:15:15.413 [DEBUG] [Thread-127569] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:15:15.443 [DEBUG] [Thread-127569] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:15:15.443 [DEBUG] [Thread-127569] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:15:15.446 [DEBUG] [Thread-127569] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:15:15.522 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:15:15.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:15:15.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:15:15.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:15:15.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:15:15.544 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:15:15.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:15:15.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:15:15.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:15:15.547 [WARNING] [poll_weather_worker] [driver.py] [poll_weather_state()] Unable to get atlas cloud data: list index out of range
2025-11-04T03:15:15.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:15:07', tmtdew=29.86, humidity=11.6, cloud=0.0, wind=21.26, temperature=16.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:15:07', seeing=1.05, atlas_timestamp=None, atlas_cloud=None, atlas_rain=None, zp_data=[0.05074999999999896, 0.02925000000000111, 0.15525000000000055, 0.048500000000000654, 0.024499999999999744, 0.06425000000000125, -0.0039999999999995595, 0.06375000000000064, 0.06999999999999851, 0.07450000000000045, 0.13924999999999876, 0.11299999999999955, 0.21249999999999858, 0.10224999999999973, 0.00549999999999784, -0.023000000000001464, 0.10324999999999918, 0.09149999999999991, 0.13399999999999856, 0.098749999999999, 0.16249999999999787, 0.09174999999999933, 0.11175000000000068, 0.07675000000000054, 0.11499999999999844, 0.23249999999999993, 0.1532499999999999, 0.21199999999999974, 0.21999999999999886, -0.2895000000000003, 0.20150000000000112, 0.11000000000000121, 0.13074999999999903], zp_timestamp='2025-11-04T01:12:00')
2025-11-04T03:15:15.549 [DEBUG] [Thread-127569] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:15:15.634 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:15:15.645 [DEBUG] [Thread-127572] [transport.py] [_log()] starting thread (client mode): 0xed21720
2025-11-04T03:15:15.645 [DEBUG] [Thread-127572] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:15:15.659 [DEBUG] [Thread-127572] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:15:15.659 [INFO] [Thread-127572] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:15:15.667 [DEBUG] [Thread-127572] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:15:15.667 [DEBUG] [Thread-127572] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:15:15.667 [DEBUG] [Thread-127572] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:15:15.667 [DEBUG] [Thread-127572] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:15:15.667 [DEBUG] [Thread-127572] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:15:15.667 [DEBUG] [Thread-127572] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:15:15.667 [DEBUG] [Thread-127572] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:15:15.667 [DEBUG] [Thread-127572] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:15:15.667 [DEBUG] [Thread-127572] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:15:15.667 [DEBUG] [Thread-127572] [transport.py] [_log()] client lang: <none>
2025-11-04T03:15:15.667 [DEBUG] [Thread-127572] [transport.py] [_log()] server lang: <none>
2025-11-04T03:15:15.667 [DEBUG] [Thread-127572] [transport.py] [_log()] kex follows: False
2025-11-04T03:15:15.667 [DEBUG] [Thread-127572] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:15:15.667 [DEBUG] [Thread-127572] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:15:15.667 [DEBUG] [Thread-127572] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:15:15.667 [DEBUG] [Thread-127572] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:15:15.668 [DEBUG] [Thread-127572] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:15:15.668 [DEBUG] [Thread-127572] [transport.py] [_log()] Compression: none
2025-11-04T03:15:15.668 [DEBUG] [Thread-127572] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:15:15.724 [DEBUG] [Thread-127572] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:15:15.724 [DEBUG] [Thread-127572] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:15:15.724 [DEBUG] [Thread-127572] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:15:15.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:15:15.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:15:15.781 [DEBUG] [Thread-127572] [transport.py] [_log()] userauth is OK
2025-11-04T03:15:15.781 [DEBUG] [Thread-127572] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:15:15.781 [DEBUG] [Thread-127572] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:15:15.781 [DEBUG] [Thread-127572] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:15:15.782 [DEBUG] [Thread-127572] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:15:15.800 [INFO] [Thread-127572] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:15:15.800 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:15:15.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:15:16.626 [DEBUG] [Thread-127572] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:15:16.626 [DEBUG] [Thread-127572] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:15:16.675 [DEBUG] [Thread-127572] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:15:16.675 [DEBUG] [Thread-127572] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:15:16.684 [DEBUG] [Thread-127572] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:15:16.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:15:16.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:15:16.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:15:16.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:15:16.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:15:16.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:15:16.723 [DEBUG] [Thread-127572] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:15:16.787 [DEBUG] [Thread-127574 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:15:18.790 [DEBUG] [Thread-127575 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:15:33.914 [DEBUG] [Thread-127576 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:15:46.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:15:46.747 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:15:46.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:15:47.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 15, 39), 29.93, 11.65, 0.0, 19.32, 16.81, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:15:47.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:15:39
2025-11-04T03:15:47.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:15:47.866 [DEBUG] [Thread-127577] [transport.py] [_log()] starting thread (client mode): 0xedd5540
2025-11-04T03:15:47.867 [DEBUG] [Thread-127577] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:15:47.880 [DEBUG] [Thread-127577] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:15:47.880 [INFO] [Thread-127577] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:15:47.886 [DEBUG] [Thread-127577] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:15:47.886 [DEBUG] [Thread-127577] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:15:47.886 [DEBUG] [Thread-127577] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:15:47.886 [DEBUG] [Thread-127577] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:15:47.886 [DEBUG] [Thread-127577] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:15:47.887 [DEBUG] [Thread-127577] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:15:47.887 [DEBUG] [Thread-127577] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:15:47.887 [DEBUG] [Thread-127577] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:15:47.887 [DEBUG] [Thread-127577] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:15:47.887 [DEBUG] [Thread-127577] [transport.py] [_log()] client lang: <none>
2025-11-04T03:15:47.887 [DEBUG] [Thread-127577] [transport.py] [_log()] server lang: <none>
2025-11-04T03:15:47.887 [DEBUG] [Thread-127577] [transport.py] [_log()] kex follows: False
2025-11-04T03:15:47.887 [DEBUG] [Thread-127577] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:15:47.888 [DEBUG] [Thread-127577] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:15:47.888 [DEBUG] [Thread-127577] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:15:47.889 [DEBUG] [Thread-127577] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:15:47.889 [DEBUG] [Thread-127577] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:15:47.889 [DEBUG] [Thread-127577] [transport.py] [_log()] Compression: none
2025-11-04T03:15:47.889 [DEBUG] [Thread-127577] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:15:47.921 [DEBUG] [Thread-127577] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:15:47.924 [DEBUG] [Thread-127577] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:15:47.926 [DEBUG] [Thread-127577] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:15:47.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:15:47.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:15:47.932 [DEBUG] [Thread-127577] [transport.py] [_log()] userauth is OK
2025-11-04T03:15:47.932 [DEBUG] [Thread-127577] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:15:47.932 [DEBUG] [Thread-127577] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:15:47.932 [DEBUG] [Thread-127577] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:15:47.932 [DEBUG] [Thread-127577] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:15:47.957 [INFO] [Thread-127577] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:15:47.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:15:48.591 [DEBUG] [Thread-127577] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:15:48.591 [DEBUG] [Thread-127577] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:15:48.593 [DEBUG] [Thread-127577] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:15:48.634 [DEBUG] [Thread-127577] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:15:48.634 [DEBUG] [Thread-127577] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:15:48.638 [DEBUG] [Thread-127577] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:15:48.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:15:48.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:15:48.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:15:48.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:15:48.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:15:48.666 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:15:48.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:15:48.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:15:48.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:15:48.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.052180 -999.00  +16.80  23.46     16   -8.50 1 1 1 1 1     0    0 25.10 64.77 ZNESW 22.6 23.5 307.2 25.1 16.9 -24.0 16.8 -23.0 16.6 -22.7 16.8 -23.5
2025-11-04T03:15:48.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:15:48.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:15:48.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.052180
2025-11-04T03:15:48.669 [DEBUG] [Thread-127577] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:15:48.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:15:48.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:15:48.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:15:48.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:15:48.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:15:48.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:15:39', tmtdew=29.93, humidity=11.65, cloud=0.0, wind=19.32, temperature=16.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:15:40', seeing=0.97, atlas_timestamp='2025-11-04T01:15:08.352', atlas_cloud=1, atlas_rain=1, zp_data=[0.05074999999999896, 0.02925000000000111, 0.15525000000000055, 0.048500000000000654, 0.024499999999999744, 0.06425000000000125, -0.0039999999999995595, 0.06375000000000064, 0.06999999999999851, 0.07450000000000045, 0.13924999999999876, 0.11299999999999955, 0.21249999999999858, 0.10224999999999973, 0.00549999999999784, -0.023000000000001464, 0.10324999999999918, 0.09149999999999991, 0.13399999999999856, 0.098749999999999, 0.16249999999999787, 0.09174999999999933, 0.11175000000000068, 0.07675000000000054, 0.11499999999999844, 0.23249999999999993, 0.1532499999999999, 0.21199999999999974, 0.21999999999999886, -0.2895000000000003, 0.20150000000000112, 0.11000000000000121, 0.13074999999999903], zp_timestamp='2025-11-04T01:12:00')
2025-11-04T03:15:48.782 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:15:48.799 [DEBUG] [Thread-127580] [transport.py] [_log()] starting thread (client mode): 0xed04a00
2025-11-04T03:15:48.799 [DEBUG] [Thread-127580] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:15:48.816 [DEBUG] [Thread-127580] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:15:48.817 [INFO] [Thread-127580] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:15:48.827 [DEBUG] [Thread-127580] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:15:48.827 [DEBUG] [Thread-127580] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:15:48.828 [DEBUG] [Thread-127580] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:15:48.828 [DEBUG] [Thread-127580] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:15:48.828 [DEBUG] [Thread-127580] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:15:48.828 [DEBUG] [Thread-127580] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:15:48.828 [DEBUG] [Thread-127580] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:15:48.828 [DEBUG] [Thread-127580] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:15:48.828 [DEBUG] [Thread-127580] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:15:48.828 [DEBUG] [Thread-127580] [transport.py] [_log()] client lang: <none>
2025-11-04T03:15:48.828 [DEBUG] [Thread-127580] [transport.py] [_log()] server lang: <none>
2025-11-04T03:15:48.828 [DEBUG] [Thread-127580] [transport.py] [_log()] kex follows: False
2025-11-04T03:15:48.828 [DEBUG] [Thread-127580] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:15:48.828 [DEBUG] [Thread-127580] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:15:48.828 [DEBUG] [Thread-127580] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:15:48.828 [DEBUG] [Thread-127580] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:15:48.829 [DEBUG] [Thread-127580] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:15:48.829 [DEBUG] [Thread-127580] [transport.py] [_log()] Compression: none
2025-11-04T03:15:48.829 [DEBUG] [Thread-127580] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:15:48.887 [DEBUG] [Thread-127580] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:15:48.890 [DEBUG] [Thread-127580] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:15:48.890 [DEBUG] [Thread-127580] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:15:48.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:15:48.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:15:48.944 [DEBUG] [Thread-127582 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:15:48.946 [DEBUG] [Thread-127580] [transport.py] [_log()] userauth is OK
2025-11-04T03:15:48.946 [DEBUG] [Thread-127580] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:15:48.946 [DEBUG] [Thread-127580] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:15:48.946 [DEBUG] [Thread-127580] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:15:48.946 [DEBUG] [Thread-127580] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:15:48.967 [INFO] [Thread-127580] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:15:48.967 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:15:48.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:15:49.848 [DEBUG] [Thread-127580] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:15:49.848 [DEBUG] [Thread-127580] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:15:49.898 [DEBUG] [Thread-127580] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:15:49.898 [DEBUG] [Thread-127580] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:15:49.908 [DEBUG] [Thread-127580] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:15:49.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:15:49.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:15:49.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:15:49.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:15:49.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:15:49.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:15:49.950 [DEBUG] [Thread-127580] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:15:53.902 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:15:53.903 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:16:04.026 [DEBUG] [Thread-127583 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:16:17.105 [DEBUG] [Thread-127584 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:16:19.059 [DEBUG] [Thread-127585 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:16:19.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:16:19.979 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:16:19.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:16:21.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 16, 12), 29.94, 11.63, 0.0, 18.7, 16.81, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:16:21.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:16:12
2025-11-04T03:16:21.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:16:21.369 [DEBUG] [Thread-127586] [transport.py] [_log()] starting thread (client mode): 0xed21ea0
2025-11-04T03:16:21.371 [DEBUG] [Thread-127586] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:16:21.375 [DEBUG] [Thread-127586] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:16:21.376 [INFO] [Thread-127586] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:16:21.379 [DEBUG] [Thread-127586] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:16:21.379 [DEBUG] [Thread-127586] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:16:21.379 [DEBUG] [Thread-127586] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:16:21.379 [DEBUG] [Thread-127586] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:16:21.379 [DEBUG] [Thread-127586] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:16:21.380 [DEBUG] [Thread-127586] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:16:21.380 [DEBUG] [Thread-127586] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:16:21.380 [DEBUG] [Thread-127586] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:16:21.380 [DEBUG] [Thread-127586] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:16:21.380 [DEBUG] [Thread-127586] [transport.py] [_log()] client lang: <none>
2025-11-04T03:16:21.380 [DEBUG] [Thread-127586] [transport.py] [_log()] server lang: <none>
2025-11-04T03:16:21.380 [DEBUG] [Thread-127586] [transport.py] [_log()] kex follows: False
2025-11-04T03:16:21.380 [DEBUG] [Thread-127586] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:16:21.380 [DEBUG] [Thread-127586] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:16:21.380 [DEBUG] [Thread-127586] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:16:21.380 [DEBUG] [Thread-127586] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:16:21.380 [DEBUG] [Thread-127586] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:16:21.380 [DEBUG] [Thread-127586] [transport.py] [_log()] Compression: none
2025-11-04T03:16:21.380 [DEBUG] [Thread-127586] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:16:21.411 [DEBUG] [Thread-127586] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:16:21.415 [DEBUG] [Thread-127586] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:16:21.416 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:16:21.417 [DEBUG] [Thread-127586] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:16:21.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:16:21.419 [DEBUG] [Thread-127586] [transport.py] [_log()] userauth is OK
2025-11-04T03:16:21.419 [DEBUG] [Thread-127586] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:16:21.419 [DEBUG] [Thread-127586] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:16:21.419 [DEBUG] [Thread-127586] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:16:21.419 [DEBUG] [Thread-127586] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:16:21.451 [INFO] [Thread-127586] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:16:21.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:16:22.023 [DEBUG] [Thread-127586] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:16:22.023 [DEBUG] [Thread-127586] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:16:22.024 [DEBUG] [Thread-127586] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:16:22.065 [DEBUG] [Thread-127586] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:16:22.065 [DEBUG] [Thread-127586] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:16:22.067 [DEBUG] [Thread-127586] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:16:22.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:16:22.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:16:22.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:16:22.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:16:22.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:16:22.087 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:16:22.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:16:22.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:16:22.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:16:22.089 [DEBUG] [Thread-127586] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:16:22.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.052527 -999.00  +16.90  20.94     16   -8.60 1 1 1 1 1     0    0 25.76 70.88 ZNESW 20.3 20.9 307.2 27.6 16.9 -24.0 16.8 -23.0 16.6 -22.5 16.9 -23.8
2025-11-04T03:16:22.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:16:22.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:16:22.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.052527
2025-11-04T03:16:22.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:16:22.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:16:22.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:16:22.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:16:22.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:16:22.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:16:12', tmtdew=29.94, humidity=11.63, cloud=0.0, wind=18.7, temperature=16.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:16:12', seeing=0.97, atlas_timestamp='2025-11-04T01:15:38.333', atlas_cloud=1, atlas_rain=1, zp_data=[0.05074999999999896, 0.02925000000000111, 0.15525000000000055, 0.048500000000000654, 0.024499999999999744, 0.06425000000000125, -0.0039999999999995595, 0.06375000000000064, 0.06999999999999851, 0.07450000000000045, 0.13924999999999876, 0.11299999999999955, 0.21249999999999858, 0.10224999999999973, 0.00549999999999784, -0.023000000000001464, 0.10324999999999918, 0.09149999999999991, 0.13399999999999856, 0.098749999999999, 0.16249999999999787, 0.09174999999999933, 0.11175000000000068, 0.07675000000000054, 0.11499999999999844, 0.23249999999999993, 0.1532499999999999, 0.21199999999999974, 0.21999999999999886, -0.2895000000000003, 0.20150000000000112, 0.11000000000000121, 0.13074999999999903], zp_timestamp='2025-11-04T01:12:00')
2025-11-04T03:16:22.182 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:16:22.194 [DEBUG] [Thread-127589] [transport.py] [_log()] starting thread (client mode): 0xedc7220
2025-11-04T03:16:22.194 [DEBUG] [Thread-127589] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:16:22.209 [DEBUG] [Thread-127589] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:16:22.210 [INFO] [Thread-127589] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:16:22.219 [DEBUG] [Thread-127589] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:16:22.219 [DEBUG] [Thread-127589] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:16:22.219 [DEBUG] [Thread-127589] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:16:22.219 [DEBUG] [Thread-127589] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:16:22.219 [DEBUG] [Thread-127589] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:16:22.219 [DEBUG] [Thread-127589] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:16:22.219 [DEBUG] [Thread-127589] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:16:22.219 [DEBUG] [Thread-127589] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:16:22.219 [DEBUG] [Thread-127589] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:16:22.219 [DEBUG] [Thread-127589] [transport.py] [_log()] client lang: <none>
2025-11-04T03:16:22.219 [DEBUG] [Thread-127589] [transport.py] [_log()] server lang: <none>
2025-11-04T03:16:22.219 [DEBUG] [Thread-127589] [transport.py] [_log()] kex follows: False
2025-11-04T03:16:22.219 [DEBUG] [Thread-127589] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:16:22.219 [DEBUG] [Thread-127589] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:16:22.219 [DEBUG] [Thread-127589] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:16:22.219 [DEBUG] [Thread-127589] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:16:22.219 [DEBUG] [Thread-127589] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:16:22.219 [DEBUG] [Thread-127589] [transport.py] [_log()] Compression: none
2025-11-04T03:16:22.219 [DEBUG] [Thread-127589] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:16:22.280 [DEBUG] [Thread-127589] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:16:22.280 [DEBUG] [Thread-127589] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:16:22.280 [DEBUG] [Thread-127589] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:16:22.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:16:22.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:16:22.344 [DEBUG] [Thread-127589] [transport.py] [_log()] userauth is OK
2025-11-04T03:16:22.344 [DEBUG] [Thread-127589] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:16:22.344 [DEBUG] [Thread-127589] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:16:22.344 [DEBUG] [Thread-127589] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:16:22.344 [DEBUG] [Thread-127589] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:16:22.362 [INFO] [Thread-127589] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:16:22.362 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:16:22.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:16:23.233 [DEBUG] [Thread-127589] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:16:23.233 [DEBUG] [Thread-127589] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:16:23.284 [DEBUG] [Thread-127589] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:16:23.284 [DEBUG] [Thread-127589] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:16:23.297 [DEBUG] [Thread-127589] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:16:23.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:16:23.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:16:23.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:16:23.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:16:23.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:16:23.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:16:23.348 [DEBUG] [Thread-127589] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:16:34.109 [DEBUG] [Thread-127591 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:16:49.233 [DEBUG] [Thread-127592 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:16:53.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:16:53.357 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:16:53.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:16:54.105 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:16:54.106 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:16:54.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 16, 44), 30.06, 11.57, 0.0, 20.45, 16.79, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:16:54.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:16:44
2025-11-04T03:16:54.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:16:54.759 [DEBUG] [Thread-127593] [transport.py] [_log()] starting thread (client mode): 0xedd6dd0
2025-11-04T03:16:54.759 [DEBUG] [Thread-127593] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:16:54.773 [DEBUG] [Thread-127593] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:16:54.773 [INFO] [Thread-127593] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:16:54.778 [DEBUG] [Thread-127593] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:16:54.778 [DEBUG] [Thread-127593] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:16:54.778 [DEBUG] [Thread-127593] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:16:54.778 [DEBUG] [Thread-127593] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:16:54.778 [DEBUG] [Thread-127593] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:16:54.778 [DEBUG] [Thread-127593] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:16:54.778 [DEBUG] [Thread-127593] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:16:54.779 [DEBUG] [Thread-127593] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:16:54.779 [DEBUG] [Thread-127593] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:16:54.779 [DEBUG] [Thread-127593] [transport.py] [_log()] client lang: <none>
2025-11-04T03:16:54.779 [DEBUG] [Thread-127593] [transport.py] [_log()] server lang: <none>
2025-11-04T03:16:54.779 [DEBUG] [Thread-127593] [transport.py] [_log()] kex follows: False
2025-11-04T03:16:54.779 [DEBUG] [Thread-127593] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:16:54.779 [DEBUG] [Thread-127593] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:16:54.780 [DEBUG] [Thread-127593] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:16:54.780 [DEBUG] [Thread-127593] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:16:54.780 [DEBUG] [Thread-127593] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:16:54.780 [DEBUG] [Thread-127593] [transport.py] [_log()] Compression: none
2025-11-04T03:16:54.780 [DEBUG] [Thread-127593] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:16:54.814 [DEBUG] [Thread-127593] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:16:54.818 [DEBUG] [Thread-127593] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:16:54.820 [DEBUG] [Thread-127593] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:16:54.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:16:54.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:16:54.827 [DEBUG] [Thread-127593] [transport.py] [_log()] userauth is OK
2025-11-04T03:16:54.828 [DEBUG] [Thread-127593] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:16:54.828 [DEBUG] [Thread-127593] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:16:54.828 [DEBUG] [Thread-127593] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:16:54.828 [DEBUG] [Thread-127593] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:16:54.854 [INFO] [Thread-127593] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:16:54.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:16:55.500 [DEBUG] [Thread-127593] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:16:55.500 [DEBUG] [Thread-127593] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:16:55.510 [DEBUG] [Thread-127593] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:16:55.542 [DEBUG] [Thread-127593] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:16:55.542 [DEBUG] [Thread-127593] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:16:55.545 [DEBUG] [Thread-127593] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:16:55.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:16:55.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:16:55.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:16:55.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:16:55.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:16:55.567 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:16:55.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:16:55.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:16:55.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:16:55.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.052874 -999.00  +16.80  20.31     16   -8.60 1 1 1 1 1     0    0 26.40 78.27 ZNESW 23.2 20.3 305.2 25.0 16.9 -24.0 16.8 -23.1 16.6 -22.8 16.9 -23.8
2025-11-04T03:16:55.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:16:55.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:16:55.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.052874
2025-11-04T03:16:55.574 [DEBUG] [Thread-127593] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:16:55.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:16:55.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:16:55.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:16:55.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:16:55.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:16:55.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:16:44', tmtdew=30.06, humidity=11.57, cloud=0.0, wind=20.45, temperature=16.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:16:45', seeing=1.04, atlas_timestamp='2025-11-04T01:16:08.314', atlas_cloud=1, atlas_rain=1, zp_data=[0.05074999999999896, 0.02925000000000111, 0.15525000000000055, 0.048500000000000654, 0.024499999999999744, 0.06425000000000125, -0.0039999999999995595, 0.06375000000000064, 0.06999999999999851, 0.07450000000000045, 0.13924999999999876, 0.11299999999999955, 0.21249999999999858, 0.10224999999999973, 0.00549999999999784, -0.023000000000001464, 0.10324999999999918, 0.09149999999999991, 0.13399999999999856, 0.098749999999999, 0.16249999999999787, 0.09174999999999933, 0.11175000000000068, 0.07675000000000054, 0.11499999999999844, 0.23249999999999993, 0.1532499999999999, 0.21199999999999974, 0.21999999999999886, -0.2895000000000003, 0.20150000000000112, 0.11000000000000121, 0.13074999999999903], zp_timestamp='2025-11-04T01:12:00')
2025-11-04T03:16:55.675 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:16:55.689 [DEBUG] [Thread-127596] [transport.py] [_log()] starting thread (client mode): 0x11798460
2025-11-04T03:16:55.689 [DEBUG] [Thread-127596] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:16:55.705 [DEBUG] [Thread-127596] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:16:55.705 [INFO] [Thread-127596] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:16:55.714 [DEBUG] [Thread-127596] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:16:55.715 [DEBUG] [Thread-127596] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:16:55.715 [DEBUG] [Thread-127596] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:16:55.715 [DEBUG] [Thread-127596] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:16:55.715 [DEBUG] [Thread-127596] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:16:55.715 [DEBUG] [Thread-127596] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:16:55.715 [DEBUG] [Thread-127596] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:16:55.715 [DEBUG] [Thread-127596] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:16:55.715 [DEBUG] [Thread-127596] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:16:55.716 [DEBUG] [Thread-127596] [transport.py] [_log()] client lang: <none>
2025-11-04T03:16:55.716 [DEBUG] [Thread-127596] [transport.py] [_log()] server lang: <none>
2025-11-04T03:16:55.716 [DEBUG] [Thread-127596] [transport.py] [_log()] kex follows: False
2025-11-04T03:16:55.716 [DEBUG] [Thread-127596] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:16:55.716 [DEBUG] [Thread-127596] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:16:55.716 [DEBUG] [Thread-127596] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:16:55.716 [DEBUG] [Thread-127596] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:16:55.717 [DEBUG] [Thread-127596] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:16:55.717 [DEBUG] [Thread-127596] [transport.py] [_log()] Compression: none
2025-11-04T03:16:55.717 [DEBUG] [Thread-127596] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:16:55.773 [DEBUG] [Thread-127596] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:16:55.773 [DEBUG] [Thread-127596] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:16:55.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:16:55.774 [DEBUG] [Thread-127596] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:16:55.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:16:55.829 [DEBUG] [Thread-127596] [transport.py] [_log()] userauth is OK
2025-11-04T03:16:55.829 [DEBUG] [Thread-127596] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:16:55.829 [DEBUG] [Thread-127596] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:16:55.830 [DEBUG] [Thread-127596] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:16:55.830 [DEBUG] [Thread-127596] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:16:55.853 [INFO] [Thread-127596] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:16:55.853 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:16:55.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:16:56.658 [DEBUG] [Thread-127596] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:16:56.658 [DEBUG] [Thread-127596] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:16:56.707 [DEBUG] [Thread-127596] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:16:56.707 [DEBUG] [Thread-127596] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:16:56.716 [DEBUG] [Thread-127596] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:16:56.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:16:56.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:16:56.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:16:56.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:16:56.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:16:56.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:16:56.751 [DEBUG] [Thread-127596] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:17:04.318 [DEBUG] [Thread-127598 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:17:17.393 [DEBUG] [Thread-127599 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:17:19.456 [DEBUG] [Thread-127600 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:17:26.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:17:26.761 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:17:26.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:17:27.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 17, 17), 30.03, 11.6, 0.0, 20.59, 16.81, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:17:27.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:17:17
2025-11-04T03:17:27.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:17:27.930 [DEBUG] [Thread-127601] [transport.py] [_log()] starting thread (client mode): 0x1179a9b0
2025-11-04T03:17:27.931 [DEBUG] [Thread-127601] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:17:27.942 [DEBUG] [Thread-127601] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:17:27.942 [INFO] [Thread-127601] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:17:27.947 [DEBUG] [Thread-127601] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:17:27.947 [DEBUG] [Thread-127601] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:17:27.947 [DEBUG] [Thread-127601] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:17:27.947 [DEBUG] [Thread-127601] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:17:27.948 [DEBUG] [Thread-127601] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:17:27.948 [DEBUG] [Thread-127601] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:17:27.948 [DEBUG] [Thread-127601] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:17:27.948 [DEBUG] [Thread-127601] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:17:27.948 [DEBUG] [Thread-127601] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:17:27.948 [DEBUG] [Thread-127601] [transport.py] [_log()] client lang: <none>
2025-11-04T03:17:27.948 [DEBUG] [Thread-127601] [transport.py] [_log()] server lang: <none>
2025-11-04T03:17:27.948 [DEBUG] [Thread-127601] [transport.py] [_log()] kex follows: False
2025-11-04T03:17:27.948 [DEBUG] [Thread-127601] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:17:27.949 [DEBUG] [Thread-127601] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:17:27.949 [DEBUG] [Thread-127601] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:17:27.949 [DEBUG] [Thread-127601] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:17:27.949 [DEBUG] [Thread-127601] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:17:27.950 [DEBUG] [Thread-127601] [transport.py] [_log()] Compression: none
2025-11-04T03:17:27.950 [DEBUG] [Thread-127601] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:17:27.984 [DEBUG] [Thread-127601] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:17:27.989 [DEBUG] [Thread-127601] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:17:27.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:17:27.993 [DEBUG] [Thread-127601] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:17:27.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:17:27.998 [DEBUG] [Thread-127601] [transport.py] [_log()] userauth is OK
2025-11-04T03:17:27.998 [DEBUG] [Thread-127601] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:17:27.998 [DEBUG] [Thread-127601] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:17:27.998 [DEBUG] [Thread-127601] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:17:27.998 [DEBUG] [Thread-127601] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:17:28.040 [INFO] [Thread-127601] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:17:28.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:17:28.686 [DEBUG] [Thread-127601] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:17:28.686 [DEBUG] [Thread-127601] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:17:28.697 [DEBUG] [Thread-127601] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:17:28.727 [DEBUG] [Thread-127601] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:17:28.727 [DEBUG] [Thread-127601] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:17:28.731 [DEBUG] [Thread-127601] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:17:28.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:17:28.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:17:28.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:17:28.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:17:28.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:17:28.758 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:17:28.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:17:28.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:17:28.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:17:28.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.053222 -999.00  +16.90  22.26     16   -8.60 1 1 1 1 1     0    0 26.12 80.02 ZNESW 26.4 22.3 300.0 25.7 16.9 -24.0 16.8 -23.1 16.6 -22.8 16.9 -23.7
2025-11-04T03:17:28.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:17:28.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:17:28.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.053222
2025-11-04T03:17:28.766 [DEBUG] [Thread-127601] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:17:28.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:17:28.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:17:28.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:17:28.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:17:28.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:17:28.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:17:17', tmtdew=30.03, humidity=11.6, cloud=0.0, wind=20.59, temperature=16.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:17:18', seeing=1.04, atlas_timestamp='2025-11-04T01:16:38.381', atlas_cloud=1, atlas_rain=1, zp_data=[0.05024999999999835, -0.0017499999999994742, 0.1252500000000012, 0.05299999999999905, -0.010500000000000398, 0.017250000000000654, 0.03399999999999892, 0.07125000000000092, 0.058499999999998664, 0.05400000000000027, 0.145249999999999, 0.08000000000000007, 0.2444999999999986, 0.09224999999999994, -0.014000000000001123, -0.03500000000000014, 0.08724999999999916, 0.08050000000000068, 0.10699999999999932, 0.08874999999999922, 0.19399999999999906, 0.04174999999999862, 0.10975000000000179, 0.059749999999999304, 0.05699999999999861, 0.21250000000000036, 0.1587499999999995, 0.22949999999999982, 0.1999999999999993, -0.26200000000000045, 0.15399999999999991, 0.10250000000000092, 0.15424999999999933], zp_timestamp='2025-11-04T01:15:00')
2025-11-04T03:17:28.874 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:17:28.886 [DEBUG] [Thread-127604] [transport.py] [_log()] starting thread (client mode): 0xedd6e90
2025-11-04T03:17:28.886 [DEBUG] [Thread-127604] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:17:28.901 [DEBUG] [Thread-127604] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:17:28.902 [INFO] [Thread-127604] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:17:28.909 [DEBUG] [Thread-127604] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:17:28.910 [DEBUG] [Thread-127604] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:17:28.910 [DEBUG] [Thread-127604] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:17:28.910 [DEBUG] [Thread-127604] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:17:28.910 [DEBUG] [Thread-127604] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:17:28.910 [DEBUG] [Thread-127604] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:17:28.910 [DEBUG] [Thread-127604] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:17:28.910 [DEBUG] [Thread-127604] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:17:28.910 [DEBUG] [Thread-127604] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:17:28.910 [DEBUG] [Thread-127604] [transport.py] [_log()] client lang: <none>
2025-11-04T03:17:28.910 [DEBUG] [Thread-127604] [transport.py] [_log()] server lang: <none>
2025-11-04T03:17:28.910 [DEBUG] [Thread-127604] [transport.py] [_log()] kex follows: False
2025-11-04T03:17:28.910 [DEBUG] [Thread-127604] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:17:28.910 [DEBUG] [Thread-127604] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:17:28.910 [DEBUG] [Thread-127604] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:17:28.910 [DEBUG] [Thread-127604] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:17:28.911 [DEBUG] [Thread-127604] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:17:28.911 [DEBUG] [Thread-127604] [transport.py] [_log()] Compression: none
2025-11-04T03:17:28.911 [DEBUG] [Thread-127604] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:17:28.974 [DEBUG] [Thread-127604] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:17:28.974 [DEBUG] [Thread-127604] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:17:28.975 [DEBUG] [Thread-127604] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:17:28.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:17:28.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:17:29.032 [DEBUG] [Thread-127604] [transport.py] [_log()] userauth is OK
2025-11-04T03:17:29.032 [DEBUG] [Thread-127604] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:17:29.032 [DEBUG] [Thread-127604] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:17:29.032 [DEBUG] [Thread-127604] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:17:29.032 [DEBUG] [Thread-127604] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:17:29.046 [INFO] [Thread-127604] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:17:29.047 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:17:29.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:17:29.864 [DEBUG] [Thread-127604] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:17:29.865 [DEBUG] [Thread-127604] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:17:29.905 [DEBUG] [Thread-127604] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:17:29.905 [DEBUG] [Thread-127604] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:17:29.914 [DEBUG] [Thread-127604] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:17:29.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:17:29.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:17:29.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:17:29.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:17:29.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:17:29.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:17:29.949 [DEBUG] [Thread-127604] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:17:34.497 [DEBUG] [Thread-127606 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:17:49.570 [DEBUG] [Thread-127607 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:17:54.319 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:17:54.321 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:17:59.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:17:59.969 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:17:59.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:18:00.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 17, 50), 29.95, 11.62, 0.0, 18.3, 16.76, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:18:00.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:17:50
2025-11-04T03:18:00.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:18:01.128 [DEBUG] [Thread-127608] [transport.py] [_log()] starting thread (client mode): 0xed21720
2025-11-04T03:18:01.129 [DEBUG] [Thread-127608] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:18:01.144 [DEBUG] [Thread-127608] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:18:01.144 [INFO] [Thread-127608] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:18:01.147 [DEBUG] [Thread-127608] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:18:01.147 [DEBUG] [Thread-127608] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:18:01.147 [DEBUG] [Thread-127608] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:18:01.148 [DEBUG] [Thread-127608] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:18:01.148 [DEBUG] [Thread-127608] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:18:01.148 [DEBUG] [Thread-127608] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:18:01.148 [DEBUG] [Thread-127608] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:18:01.148 [DEBUG] [Thread-127608] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:18:01.148 [DEBUG] [Thread-127608] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:18:01.148 [DEBUG] [Thread-127608] [transport.py] [_log()] client lang: <none>
2025-11-04T03:18:01.148 [DEBUG] [Thread-127608] [transport.py] [_log()] server lang: <none>
2025-11-04T03:18:01.148 [DEBUG] [Thread-127608] [transport.py] [_log()] kex follows: False
2025-11-04T03:18:01.148 [DEBUG] [Thread-127608] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:18:01.148 [DEBUG] [Thread-127608] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:18:01.148 [DEBUG] [Thread-127608] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:18:01.148 [DEBUG] [Thread-127608] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:18:01.148 [DEBUG] [Thread-127608] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:18:01.148 [DEBUG] [Thread-127608] [transport.py] [_log()] Compression: none
2025-11-04T03:18:01.148 [DEBUG] [Thread-127608] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:18:01.175 [DEBUG] [Thread-127608] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:18:01.177 [DEBUG] [Thread-127608] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:18:01.179 [DEBUG] [Thread-127608] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:18:01.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:18:01.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:18:01.183 [DEBUG] [Thread-127608] [transport.py] [_log()] userauth is OK
2025-11-04T03:18:01.183 [DEBUG] [Thread-127608] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:18:01.183 [DEBUG] [Thread-127608] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:18:01.183 [DEBUG] [Thread-127608] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:18:01.184 [DEBUG] [Thread-127608] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:18:01.211 [INFO] [Thread-127608] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:18:01.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:18:01.888 [DEBUG] [Thread-127608] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:18:01.888 [DEBUG] [Thread-127608] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:18:01.898 [DEBUG] [Thread-127608] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:18:01.929 [DEBUG] [Thread-127608] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:18:01.929 [DEBUG] [Thread-127608] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:18:01.934 [DEBUG] [Thread-127608] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:18:01.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:18:01.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:18:01.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:18:01.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:18:01.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:18:01.955 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:18:01.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:18:01.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:18:01.957 [DEBUG] [Thread-127608] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:18:01.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:18:01.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.053569 -999.00  +17.00  25.61     16   -8.60 1 1 1 1 1     0    0 26.97 90.40 ZNESW 19.5 25.6 304.2 29.6 17.0 -24.1 16.8 -23.0 16.6 -22.8 16.9 -23.7
2025-11-04T03:18:01.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:18:01.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:18:01.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.053569
2025-11-04T03:18:01.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:18:01.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:18:01.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:18:01.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:18:01.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:18:01.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:17:50', tmtdew=29.95, humidity=11.62, cloud=0.0, wind=18.3, temperature=16.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:17:50', seeing=1.05, atlas_timestamp='2025-11-04T01:17:08.362', atlas_cloud=1, atlas_rain=1, zp_data=[0.05024999999999835, -0.0017499999999994742, 0.1252500000000012, 0.05299999999999905, -0.010500000000000398, 0.017250000000000654, 0.03399999999999892, 0.07125000000000092, 0.058499999999998664, 0.05400000000000027, 0.145249999999999, 0.08000000000000007, 0.2444999999999986, 0.09224999999999994, -0.014000000000001123, -0.03500000000000014, 0.08724999999999916, 0.08050000000000068, 0.10699999999999932, 0.08874999999999922, 0.19399999999999906, 0.04174999999999862, 0.10975000000000179, 0.059749999999999304, 0.05699999999999861, 0.21250000000000036, 0.1587499999999995, 0.22949999999999982, 0.1999999999999993, -0.26200000000000045, 0.15399999999999991, 0.10250000000000092, 0.15424999999999933], zp_timestamp='2025-11-04T01:15:00')
2025-11-04T03:18:02.040 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:18:02.052 [DEBUG] [Thread-127611] [transport.py] [_log()] starting thread (client mode): 0xed37370
2025-11-04T03:18:02.052 [DEBUG] [Thread-127611] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:18:02.068 [DEBUG] [Thread-127611] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:18:02.069 [INFO] [Thread-127611] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:18:02.078 [DEBUG] [Thread-127611] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:18:02.078 [DEBUG] [Thread-127611] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:18:02.078 [DEBUG] [Thread-127611] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:18:02.078 [DEBUG] [Thread-127611] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:18:02.078 [DEBUG] [Thread-127611] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:18:02.078 [DEBUG] [Thread-127611] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:18:02.078 [DEBUG] [Thread-127611] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:18:02.078 [DEBUG] [Thread-127611] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:18:02.078 [DEBUG] [Thread-127611] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:18:02.078 [DEBUG] [Thread-127611] [transport.py] [_log()] client lang: <none>
2025-11-04T03:18:02.078 [DEBUG] [Thread-127611] [transport.py] [_log()] server lang: <none>
2025-11-04T03:18:02.078 [DEBUG] [Thread-127611] [transport.py] [_log()] kex follows: False
2025-11-04T03:18:02.078 [DEBUG] [Thread-127611] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:18:02.078 [DEBUG] [Thread-127611] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:18:02.078 [DEBUG] [Thread-127611] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:18:02.079 [DEBUG] [Thread-127611] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:18:02.079 [DEBUG] [Thread-127611] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:18:02.079 [DEBUG] [Thread-127611] [transport.py] [_log()] Compression: none
2025-11-04T03:18:02.079 [DEBUG] [Thread-127611] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:18:02.135 [DEBUG] [Thread-127611] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:18:02.136 [DEBUG] [Thread-127611] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:18:02.136 [DEBUG] [Thread-127611] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:18:02.136 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:18:02.136 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:18:02.192 [DEBUG] [Thread-127611] [transport.py] [_log()] userauth is OK
2025-11-04T03:18:02.192 [DEBUG] [Thread-127611] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:18:02.192 [DEBUG] [Thread-127611] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:18:02.192 [DEBUG] [Thread-127611] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:18:02.192 [DEBUG] [Thread-127611] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:18:02.206 [INFO] [Thread-127611] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:18:02.206 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:18:02.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:18:03.056 [DEBUG] [Thread-127611] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:18:03.056 [DEBUG] [Thread-127611] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:18:03.105 [DEBUG] [Thread-127611] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:18:03.106 [DEBUG] [Thread-127611] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:18:03.117 [DEBUG] [Thread-127611] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:18:03.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:18:03.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:18:03.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:18:03.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:18:03.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:18:03.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:18:03.171 [DEBUG] [Thread-127611] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:18:04.607 [DEBUG] [Thread-127613 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:18:17.708 [DEBUG] [Thread-127614 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:18:19.700 [DEBUG] [Thread-127615 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:18:33.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:18:33.207 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:18:33.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:18:34.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 18, 22), 29.9, 11.66, 0.0, 18.81, 16.76, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:18:34.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:18:22
2025-11-04T03:18:34.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:18:34.335 [DEBUG] [Thread-127616] [transport.py] [_log()] starting thread (client mode): 0xedd68f0
2025-11-04T03:18:34.336 [DEBUG] [Thread-127616] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:18:34.339 [DEBUG] [Thread-127616] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:18:34.339 [INFO] [Thread-127616] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:18:34.344 [DEBUG] [Thread-127616] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:18:34.344 [DEBUG] [Thread-127616] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:18:34.344 [DEBUG] [Thread-127616] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:18:34.344 [DEBUG] [Thread-127616] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:18:34.344 [DEBUG] [Thread-127616] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:18:34.344 [DEBUG] [Thread-127616] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:18:34.344 [DEBUG] [Thread-127616] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:18:34.344 [DEBUG] [Thread-127616] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:18:34.344 [DEBUG] [Thread-127616] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:18:34.344 [DEBUG] [Thread-127616] [transport.py] [_log()] client lang: <none>
2025-11-04T03:18:34.344 [DEBUG] [Thread-127616] [transport.py] [_log()] server lang: <none>
2025-11-04T03:18:34.344 [DEBUG] [Thread-127616] [transport.py] [_log()] kex follows: False
2025-11-04T03:18:34.344 [DEBUG] [Thread-127616] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:18:34.345 [DEBUG] [Thread-127616] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:18:34.345 [DEBUG] [Thread-127616] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:18:34.345 [DEBUG] [Thread-127616] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:18:34.345 [DEBUG] [Thread-127616] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:18:34.345 [DEBUG] [Thread-127616] [transport.py] [_log()] Compression: none
2025-11-04T03:18:34.346 [DEBUG] [Thread-127616] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:18:34.378 [DEBUG] [Thread-127616] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:18:34.381 [DEBUG] [Thread-127616] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:18:34.383 [DEBUG] [Thread-127616] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:18:34.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:18:34.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:18:34.389 [DEBUG] [Thread-127616] [transport.py] [_log()] userauth is OK
2025-11-04T03:18:34.389 [DEBUG] [Thread-127616] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:18:34.389 [DEBUG] [Thread-127616] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:18:34.389 [DEBUG] [Thread-127616] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:18:34.390 [DEBUG] [Thread-127616] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:18:34.410 [INFO] [Thread-127616] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:18:34.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:18:34.756 [DEBUG] [Thread-127618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:18:35.062 [DEBUG] [Thread-127616] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:18:35.062 [DEBUG] [Thread-127616] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:18:35.073 [DEBUG] [Thread-127616] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:18:35.103 [DEBUG] [Thread-127616] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:18:35.104 [DEBUG] [Thread-127616] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:18:35.107 [DEBUG] [Thread-127616] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:18:35.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:18:35.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:18:35.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:18:35.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:18:35.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:18:35.134 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:18:35.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:18:35.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:18:35.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:18:35.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.054263 -999.00  +16.90  21.56     16   -8.50 1 1 1 1 1     0    0 27.26 119.41 ZNESW 21.2 21.6 309.2 28.6 17.0 -24.1 16.9 -23.1 16.6 -22.6 16.9 -23.6
2025-11-04T03:18:35.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:18:35.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:18:35.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.054263
2025-11-04T03:18:35.142 [DEBUG] [Thread-127616] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:18:35.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:18:35.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:18:35.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:18:35.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:18:35.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:18:35.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:18:22', tmtdew=29.9, humidity=11.66, cloud=0.0, wind=18.81, temperature=16.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:18:23', seeing=1.05, atlas_timestamp='2025-11-04T01:18:08.323', atlas_cloud=1, atlas_rain=1, zp_data=[0.05024999999999835, -0.0017499999999994742, 0.1252500000000012, 0.05299999999999905, -0.010500000000000398, 0.017250000000000654, 0.03399999999999892, 0.07125000000000092, 0.058499999999998664, 0.05400000000000027, 0.145249999999999, 0.08000000000000007, 0.2444999999999986, 0.09224999999999994, -0.014000000000001123, -0.03500000000000014, 0.08724999999999916, 0.08050000000000068, 0.10699999999999932, 0.08874999999999922, 0.19399999999999906, 0.04174999999999862, 0.10975000000000179, 0.059749999999999304, 0.05699999999999861, 0.21250000000000036, 0.1587499999999995, 0.22949999999999982, 0.1999999999999993, -0.26200000000000045, 0.15399999999999991, 0.10250000000000092, 0.15424999999999933], zp_timestamp='2025-11-04T01:15:00')
2025-11-04T03:18:35.242 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:18:35.254 [DEBUG] [Thread-127620] [transport.py] [_log()] starting thread (client mode): 0xedd63b0
2025-11-04T03:18:35.255 [DEBUG] [Thread-127620] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:18:35.270 [DEBUG] [Thread-127620] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:18:35.271 [INFO] [Thread-127620] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:18:35.278 [DEBUG] [Thread-127620] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:18:35.278 [DEBUG] [Thread-127620] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:18:35.278 [DEBUG] [Thread-127620] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:18:35.278 [DEBUG] [Thread-127620] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:18:35.278 [DEBUG] [Thread-127620] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:18:35.278 [DEBUG] [Thread-127620] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:18:35.278 [DEBUG] [Thread-127620] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:18:35.279 [DEBUG] [Thread-127620] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:18:35.279 [DEBUG] [Thread-127620] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:18:35.279 [DEBUG] [Thread-127620] [transport.py] [_log()] client lang: <none>
2025-11-04T03:18:35.279 [DEBUG] [Thread-127620] [transport.py] [_log()] server lang: <none>
2025-11-04T03:18:35.279 [DEBUG] [Thread-127620] [transport.py] [_log()] kex follows: False
2025-11-04T03:18:35.279 [DEBUG] [Thread-127620] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:18:35.279 [DEBUG] [Thread-127620] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:18:35.279 [DEBUG] [Thread-127620] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:18:35.279 [DEBUG] [Thread-127620] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:18:35.279 [DEBUG] [Thread-127620] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:18:35.282 [DEBUG] [Thread-127620] [transport.py] [_log()] Compression: none
2025-11-04T03:18:35.282 [DEBUG] [Thread-127620] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:18:35.338 [DEBUG] [Thread-127620] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:18:35.338 [DEBUG] [Thread-127620] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:18:35.339 [DEBUG] [Thread-127620] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:18:35.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:18:35.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:18:35.400 [DEBUG] [Thread-127620] [transport.py] [_log()] userauth is OK
2025-11-04T03:18:35.400 [DEBUG] [Thread-127620] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:18:35.401 [DEBUG] [Thread-127620] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:18:35.401 [DEBUG] [Thread-127620] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:18:35.401 [DEBUG] [Thread-127620] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:18:35.420 [INFO] [Thread-127620] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:18:35.420 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:18:35.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:18:36.245 [DEBUG] [Thread-127620] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:18:36.245 [DEBUG] [Thread-127620] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:18:36.285 [DEBUG] [Thread-127620] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:18:36.285 [DEBUG] [Thread-127620] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:18:36.295 [DEBUG] [Thread-127620] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:18:36.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:18:36.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:18:36.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:18:36.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:18:36.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:18:36.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:18:36.337 [DEBUG] [Thread-127620] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:18:49.810 [DEBUG] [Thread-127622 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:18:54.531 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:18:54.533 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:19:04.902 [DEBUG] [Thread-127623 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:19:06.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:19:06.358 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:19:06.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:19:07.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 18, 55), 29.88, 11.73, 0.0, 22.71, 16.73, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:19:07.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:18:55
2025-11-04T03:19:07.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:19:07.476 [DEBUG] [Thread-127624] [transport.py] [_log()] starting thread (client mode): 0xed11ea0
2025-11-04T03:19:07.476 [DEBUG] [Thread-127624] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:19:07.491 [DEBUG] [Thread-127624] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:19:07.491 [INFO] [Thread-127624] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:19:07.494 [DEBUG] [Thread-127624] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:19:07.494 [DEBUG] [Thread-127624] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:19:07.494 [DEBUG] [Thread-127624] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:19:07.494 [DEBUG] [Thread-127624] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:19:07.494 [DEBUG] [Thread-127624] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:19:07.494 [DEBUG] [Thread-127624] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:19:07.494 [DEBUG] [Thread-127624] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:19:07.494 [DEBUG] [Thread-127624] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:19:07.494 [DEBUG] [Thread-127624] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:19:07.494 [DEBUG] [Thread-127624] [transport.py] [_log()] client lang: <none>
2025-11-04T03:19:07.494 [DEBUG] [Thread-127624] [transport.py] [_log()] server lang: <none>
2025-11-04T03:19:07.494 [DEBUG] [Thread-127624] [transport.py] [_log()] kex follows: False
2025-11-04T03:19:07.494 [DEBUG] [Thread-127624] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:19:07.494 [DEBUG] [Thread-127624] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:19:07.494 [DEBUG] [Thread-127624] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:19:07.495 [DEBUG] [Thread-127624] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:19:07.495 [DEBUG] [Thread-127624] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:19:07.495 [DEBUG] [Thread-127624] [transport.py] [_log()] Compression: none
2025-11-04T03:19:07.495 [DEBUG] [Thread-127624] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:19:07.515 [DEBUG] [Thread-127624] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:19:07.518 [DEBUG] [Thread-127624] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:19:07.519 [DEBUG] [Thread-127624] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:19:07.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:19:07.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:19:07.520 [DEBUG] [Thread-127624] [transport.py] [_log()] userauth is OK
2025-11-04T03:19:07.520 [DEBUG] [Thread-127624] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:19:07.520 [DEBUG] [Thread-127624] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:19:07.520 [DEBUG] [Thread-127624] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:19:07.520 [DEBUG] [Thread-127624] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:19:07.531 [INFO] [Thread-127624] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:19:07.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:19:08.141 [DEBUG] [Thread-127624] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:19:08.141 [DEBUG] [Thread-127624] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:19:08.142 [DEBUG] [Thread-127624] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:19:08.183 [DEBUG] [Thread-127624] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:19:08.183 [DEBUG] [Thread-127624] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:19:08.185 [DEBUG] [Thread-127624] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:19:08.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:19:08.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:19:08.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:19:08.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:19:08.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:19:08.205 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:19:08.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:19:08.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:19:08.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:19:08.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.054611 -999.00  +16.90  26.20     16   -8.60 1 1 1 1 1     0    0 27.29 115.42 ZNESW 23.0 26.2 300.4 28.0 16.9 -23.9 16.8 -23.1 16.7 -22.8 16.9 -23.8
2025-11-04T03:19:08.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:19:08.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:19:08.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.054611
2025-11-04T03:19:08.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:19:08.211 [DEBUG] [Thread-127624] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:19:08.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:19:08.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:19:08.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:19:08.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:19:08.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:18:55', tmtdew=29.88, humidity=11.73, cloud=0.0, wind=22.71, temperature=16.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:18:56', seeing=0.96, atlas_timestamp='2025-11-04T01:18:38.390', atlas_cloud=1, atlas_rain=1, zp_data=[0.05024999999999835, -0.0017499999999994742, 0.1252500000000012, 0.05299999999999905, -0.010500000000000398, 0.017250000000000654, 0.03399999999999892, 0.07125000000000092, 0.058499999999998664, 0.05400000000000027, 0.145249999999999, 0.08000000000000007, 0.2444999999999986, 0.09224999999999994, -0.014000000000001123, -0.03500000000000014, 0.08724999999999916, 0.08050000000000068, 0.10699999999999932, 0.08874999999999922, 0.19399999999999906, 0.04174999999999862, 0.10975000000000179, 0.059749999999999304, 0.05699999999999861, 0.21250000000000036, 0.1587499999999995, 0.22949999999999982, 0.1999999999999993, -0.26200000000000045, 0.15399999999999991, 0.10250000000000092, 0.15424999999999933], zp_timestamp='2025-11-04T01:15:00')
2025-11-04T03:19:08.289 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:19:08.300 [DEBUG] [Thread-127627] [transport.py] [_log()] starting thread (client mode): 0xed12170
2025-11-04T03:19:08.300 [DEBUG] [Thread-127627] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:19:08.315 [DEBUG] [Thread-127627] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:19:08.315 [INFO] [Thread-127627] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:19:08.322 [DEBUG] [Thread-127627] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:19:08.323 [DEBUG] [Thread-127627] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:19:08.323 [DEBUG] [Thread-127627] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:19:08.323 [DEBUG] [Thread-127627] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:19:08.323 [DEBUG] [Thread-127627] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:19:08.323 [DEBUG] [Thread-127627] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:19:08.323 [DEBUG] [Thread-127627] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:19:08.323 [DEBUG] [Thread-127627] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:19:08.323 [DEBUG] [Thread-127627] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:19:08.323 [DEBUG] [Thread-127627] [transport.py] [_log()] client lang: <none>
2025-11-04T03:19:08.323 [DEBUG] [Thread-127627] [transport.py] [_log()] server lang: <none>
2025-11-04T03:19:08.323 [DEBUG] [Thread-127627] [transport.py] [_log()] kex follows: False
2025-11-04T03:19:08.323 [DEBUG] [Thread-127627] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:19:08.323 [DEBUG] [Thread-127627] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:19:08.323 [DEBUG] [Thread-127627] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:19:08.323 [DEBUG] [Thread-127627] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:19:08.323 [DEBUG] [Thread-127627] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:19:08.323 [DEBUG] [Thread-127627] [transport.py] [_log()] Compression: none
2025-11-04T03:19:08.323 [DEBUG] [Thread-127627] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:19:08.378 [DEBUG] [Thread-127627] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:19:08.378 [DEBUG] [Thread-127627] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:19:08.378 [DEBUG] [Thread-127627] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:19:08.379 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:19:08.379 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:19:08.436 [DEBUG] [Thread-127627] [transport.py] [_log()] userauth is OK
2025-11-04T03:19:08.436 [DEBUG] [Thread-127627] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:19:08.436 [DEBUG] [Thread-127627] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:19:08.436 [DEBUG] [Thread-127627] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:19:08.436 [DEBUG] [Thread-127627] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:19:08.451 [INFO] [Thread-127627] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:19:08.451 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:19:08.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:19:09.267 [DEBUG] [Thread-127627] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:19:09.267 [DEBUG] [Thread-127627] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:19:09.315 [DEBUG] [Thread-127627] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:19:09.315 [DEBUG] [Thread-127627] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:19:09.323 [DEBUG] [Thread-127627] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:19:09.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:19:09.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:19:09.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:19:09.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:19:09.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:19:09.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:19:09.356 [DEBUG] [Thread-127627] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:19:18.003 [DEBUG] [Thread-127629 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:19:19.932 [DEBUG] [Thread-127630 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:19:35.018 [DEBUG] [Thread-127631 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:19:39.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:19:39.387 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:19:39.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:19:40.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 19, 28), 29.92, 11.7, 0.0, 22.92, 16.76, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:19:40.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:19:28
2025-11-04T03:19:40.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:19:40.611 [DEBUG] [Thread-127632] [transport.py] [_log()] starting thread (client mode): 0xedd64d0
2025-11-04T03:19:40.612 [DEBUG] [Thread-127632] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:19:40.615 [DEBUG] [Thread-127632] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:19:40.615 [INFO] [Thread-127632] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:19:40.619 [DEBUG] [Thread-127632] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:19:40.619 [DEBUG] [Thread-127632] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:19:40.619 [DEBUG] [Thread-127632] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:19:40.619 [DEBUG] [Thread-127632] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:19:40.619 [DEBUG] [Thread-127632] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:19:40.619 [DEBUG] [Thread-127632] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:19:40.619 [DEBUG] [Thread-127632] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:19:40.619 [DEBUG] [Thread-127632] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:19:40.619 [DEBUG] [Thread-127632] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:19:40.619 [DEBUG] [Thread-127632] [transport.py] [_log()] client lang: <none>
2025-11-04T03:19:40.619 [DEBUG] [Thread-127632] [transport.py] [_log()] server lang: <none>
2025-11-04T03:19:40.619 [DEBUG] [Thread-127632] [transport.py] [_log()] kex follows: False
2025-11-04T03:19:40.619 [DEBUG] [Thread-127632] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:19:40.620 [DEBUG] [Thread-127632] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:19:40.620 [DEBUG] [Thread-127632] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:19:40.620 [DEBUG] [Thread-127632] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:19:40.620 [DEBUG] [Thread-127632] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:19:40.620 [DEBUG] [Thread-127632] [transport.py] [_log()] Compression: none
2025-11-04T03:19:40.620 [DEBUG] [Thread-127632] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:19:40.652 [DEBUG] [Thread-127632] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:19:40.653 [DEBUG] [Thread-127632] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:19:40.654 [DEBUG] [Thread-127632] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:19:40.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:19:40.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:19:40.657 [DEBUG] [Thread-127632] [transport.py] [_log()] userauth is OK
2025-11-04T03:19:40.657 [DEBUG] [Thread-127632] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:19:40.657 [DEBUG] [Thread-127632] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:19:40.657 [DEBUG] [Thread-127632] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:19:40.657 [DEBUG] [Thread-127632] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:19:40.690 [INFO] [Thread-127632] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:19:40.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:19:41.304 [DEBUG] [Thread-127632] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:19:41.304 [DEBUG] [Thread-127632] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:19:41.313 [DEBUG] [Thread-127632] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:19:41.345 [DEBUG] [Thread-127632] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:19:41.345 [DEBUG] [Thread-127632] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:19:41.348 [DEBUG] [Thread-127632] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:19:41.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:19:41.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:19:41.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:19:41.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:19:41.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:19:41.367 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:19:41.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:19:41.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:19:41.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:19:41.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.054958 -999.00  +16.90  23.20     16   -8.60 1 1 1 1 1     0    0 27.92 130.96 ZNESW 19.8 23.2 301.8 29.9 17.0 -24.2 16.9 -23.2 16.7 -22.6 16.9 -23.9
2025-11-04T03:19:41.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:19:41.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:19:41.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.054958
2025-11-04T03:19:41.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:19:41.385 [DEBUG] [Thread-127632] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:19:41.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:19:41.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:19:41.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:19:41.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:19:41.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:19:28', tmtdew=29.92, humidity=11.7, cloud=0.0, wind=22.92, temperature=16.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:19:29', seeing=0.96, atlas_timestamp='2025-11-04T01:19:08.371', atlas_cloud=1, atlas_rain=1, zp_data=[0.05024999999999835, -0.0017499999999994742, 0.1252500000000012, 0.05299999999999905, -0.010500000000000398, 0.017250000000000654, 0.03399999999999892, 0.07125000000000092, 0.058499999999998664, 0.05400000000000027, 0.145249999999999, 0.08000000000000007, 0.2444999999999986, 0.09224999999999994, -0.014000000000001123, -0.03500000000000014, 0.08724999999999916, 0.08050000000000068, 0.10699999999999932, 0.08874999999999922, 0.19399999999999906, 0.04174999999999862, 0.10975000000000179, 0.059749999999999304, 0.05699999999999861, 0.21250000000000036, 0.1587499999999995, 0.22949999999999982, 0.1999999999999993, -0.26200000000000045, 0.15399999999999991, 0.10250000000000092, 0.15424999999999933], zp_timestamp='2025-11-04T01:15:00')
2025-11-04T03:19:41.462 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:19:41.476 [DEBUG] [Thread-127635] [transport.py] [_log()] starting thread (client mode): 0xed35fc0
2025-11-04T03:19:41.476 [DEBUG] [Thread-127635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:19:41.493 [DEBUG] [Thread-127635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:19:41.493 [INFO] [Thread-127635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:19:41.503 [DEBUG] [Thread-127635] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:19:41.503 [DEBUG] [Thread-127635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:19:41.503 [DEBUG] [Thread-127635] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:19:41.504 [DEBUG] [Thread-127635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:19:41.504 [DEBUG] [Thread-127635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:19:41.504 [DEBUG] [Thread-127635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:19:41.504 [DEBUG] [Thread-127635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:19:41.504 [DEBUG] [Thread-127635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:19:41.504 [DEBUG] [Thread-127635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:19:41.504 [DEBUG] [Thread-127635] [transport.py] [_log()] client lang: <none>
2025-11-04T03:19:41.504 [DEBUG] [Thread-127635] [transport.py] [_log()] server lang: <none>
2025-11-04T03:19:41.504 [DEBUG] [Thread-127635] [transport.py] [_log()] kex follows: False
2025-11-04T03:19:41.505 [DEBUG] [Thread-127635] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:19:41.505 [DEBUG] [Thread-127635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:19:41.505 [DEBUG] [Thread-127635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:19:41.505 [DEBUG] [Thread-127635] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:19:41.505 [DEBUG] [Thread-127635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:19:41.505 [DEBUG] [Thread-127635] [transport.py] [_log()] Compression: none
2025-11-04T03:19:41.505 [DEBUG] [Thread-127635] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:19:41.566 [DEBUG] [Thread-127635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:19:41.566 [DEBUG] [Thread-127635] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:19:41.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:19:41.568 [DEBUG] [Thread-127635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:19:41.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:19:41.627 [DEBUG] [Thread-127635] [transport.py] [_log()] userauth is OK
2025-11-04T03:19:41.627 [DEBUG] [Thread-127635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:19:41.628 [DEBUG] [Thread-127635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:19:41.628 [DEBUG] [Thread-127635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:19:41.628 [DEBUG] [Thread-127635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:19:41.648 [INFO] [Thread-127635] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:19:41.648 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:19:41.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:19:42.487 [DEBUG] [Thread-127635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:19:42.487 [DEBUG] [Thread-127635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:19:42.529 [DEBUG] [Thread-127635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:19:42.529 [DEBUG] [Thread-127635] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:19:42.538 [DEBUG] [Thread-127635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:19:42.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:19:42.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:19:42.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:19:42.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:19:42.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:19:42.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:19:42.576 [DEBUG] [Thread-127635] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:19:50.048 [DEBUG] [Thread-127637 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:19:54.736 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:19:54.737 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:20:05.129 [DEBUG] [Thread-127638 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:20:12.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:20:12.610 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:20:12.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:20:13.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 20, 1), 29.91, 11.7, 0.0, 22.21, 16.73, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:20:13.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:20:01
2025-11-04T03:20:13.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:20:13.858 [DEBUG] [Thread-127639] [transport.py] [_log()] starting thread (client mode): 0xed36890
2025-11-04T03:20:13.859 [DEBUG] [Thread-127639] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:20:13.871 [DEBUG] [Thread-127639] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:20:13.871 [INFO] [Thread-127639] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:20:13.876 [DEBUG] [Thread-127639] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:20:13.876 [DEBUG] [Thread-127639] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:20:13.877 [DEBUG] [Thread-127639] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:20:13.877 [DEBUG] [Thread-127639] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:20:13.877 [DEBUG] [Thread-127639] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:20:13.877 [DEBUG] [Thread-127639] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:20:13.877 [DEBUG] [Thread-127639] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:20:13.877 [DEBUG] [Thread-127639] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:20:13.877 [DEBUG] [Thread-127639] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:20:13.877 [DEBUG] [Thread-127639] [transport.py] [_log()] client lang: <none>
2025-11-04T03:20:13.877 [DEBUG] [Thread-127639] [transport.py] [_log()] server lang: <none>
2025-11-04T03:20:13.877 [DEBUG] [Thread-127639] [transport.py] [_log()] kex follows: False
2025-11-04T03:20:13.877 [DEBUG] [Thread-127639] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:20:13.878 [DEBUG] [Thread-127639] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:20:13.878 [DEBUG] [Thread-127639] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:20:13.878 [DEBUG] [Thread-127639] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:20:13.879 [DEBUG] [Thread-127639] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:20:13.879 [DEBUG] [Thread-127639] [transport.py] [_log()] Compression: none
2025-11-04T03:20:13.879 [DEBUG] [Thread-127639] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:20:13.916 [DEBUG] [Thread-127639] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:20:13.921 [DEBUG] [Thread-127639] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:20:13.923 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:20:13.925 [DEBUG] [Thread-127639] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:20:13.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:20:13.929 [DEBUG] [Thread-127639] [transport.py] [_log()] userauth is OK
2025-11-04T03:20:13.929 [DEBUG] [Thread-127639] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:20:13.930 [DEBUG] [Thread-127639] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:20:13.930 [DEBUG] [Thread-127639] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:20:13.930 [DEBUG] [Thread-127639] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:20:13.968 [INFO] [Thread-127639] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:20:13.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:20:15.799 [DEBUG] [Thread-127639] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:20:15.799 [DEBUG] [Thread-127639] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:20:15.808 [DEBUG] [Thread-127639] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:20:15.841 [DEBUG] [Thread-127639] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:20:15.841 [DEBUG] [Thread-127639] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:20:15.843 [DEBUG] [Thread-127639] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:20:15.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:20:15.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:20:15.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:20:15.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:20:15.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:20:15.982 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:20:15.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:20:15.983 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:20:15.985 [DEBUG] [Thread-127639] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:20:15.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:20:15.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.055305 -999.00  +16.80  23.27     16   -8.50 1 1 1 1 1     0    0 27.42 126.86 ZNESW 23.2 23.3 300.6 28.2 17.0 -24.1 16.9 -23.1 16.6 -22.6 16.9 -24.0
2025-11-04T03:20:15.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:20:15.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:20:15.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.055305
2025-11-04T03:20:15.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:20:16.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:20:16.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:20:16.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:20:16.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:20:16.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:20:01', tmtdew=29.91, humidity=11.7, cloud=0.0, wind=22.21, temperature=16.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:20:01', seeing=1.21, atlas_timestamp='2025-11-04T01:19:38.352', atlas_cloud=1, atlas_rain=1, zp_data=[0.05024999999999835, -0.0017499999999994742, 0.1252500000000012, 0.05299999999999905, -0.010500000000000398, 0.017250000000000654, 0.03399999999999892, 0.07125000000000092, 0.058499999999998664, 0.05400000000000027, 0.145249999999999, 0.08000000000000007, 0.2444999999999986, 0.09224999999999994, -0.014000000000001123, -0.03500000000000014, 0.08724999999999916, 0.08050000000000068, 0.10699999999999932, 0.08874999999999922, 0.19399999999999906, 0.04174999999999862, 0.10975000000000179, 0.059749999999999304, 0.05699999999999861, 0.21250000000000036, 0.1587499999999995, 0.22949999999999982, 0.1999999999999993, -0.26200000000000045, 0.15399999999999991, 0.10250000000000092, 0.15424999999999933], zp_timestamp='2025-11-04T01:18:00')
2025-11-04T03:20:16.098 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:20:16.111 [DEBUG] [Thread-127642] [transport.py] [_log()] starting thread (client mode): 0x117997e0
2025-11-04T03:20:16.111 [DEBUG] [Thread-127642] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:20:16.128 [DEBUG] [Thread-127642] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:20:16.128 [INFO] [Thread-127642] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:20:16.136 [DEBUG] [Thread-127642] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:20:16.136 [DEBUG] [Thread-127642] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:20:16.136 [DEBUG] [Thread-127642] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:20:16.136 [DEBUG] [Thread-127642] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:20:16.136 [DEBUG] [Thread-127642] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:20:16.136 [DEBUG] [Thread-127642] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:20:16.136 [DEBUG] [Thread-127642] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:20:16.136 [DEBUG] [Thread-127642] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:20:16.136 [DEBUG] [Thread-127642] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:20:16.137 [DEBUG] [Thread-127642] [transport.py] [_log()] client lang: <none>
2025-11-04T03:20:16.137 [DEBUG] [Thread-127642] [transport.py] [_log()] server lang: <none>
2025-11-04T03:20:16.137 [DEBUG] [Thread-127642] [transport.py] [_log()] kex follows: False
2025-11-04T03:20:16.137 [DEBUG] [Thread-127642] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:20:16.137 [DEBUG] [Thread-127642] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:20:16.137 [DEBUG] [Thread-127642] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:20:16.137 [DEBUG] [Thread-127642] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:20:16.137 [DEBUG] [Thread-127642] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:20:16.137 [DEBUG] [Thread-127642] [transport.py] [_log()] Compression: none
2025-11-04T03:20:16.137 [DEBUG] [Thread-127642] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:20:16.196 [DEBUG] [Thread-127642] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:20:16.197 [DEBUG] [Thread-127642] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:20:16.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:20:16.198 [DEBUG] [Thread-127642] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:20:16.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:20:16.256 [DEBUG] [Thread-127642] [transport.py] [_log()] userauth is OK
2025-11-04T03:20:16.256 [DEBUG] [Thread-127642] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:20:16.257 [DEBUG] [Thread-127642] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:20:16.257 [DEBUG] [Thread-127642] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:20:16.257 [DEBUG] [Thread-127642] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:20:16.281 [INFO] [Thread-127642] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:20:16.282 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:20:16.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:20:17.195 [DEBUG] [Thread-127642] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:20:17.195 [DEBUG] [Thread-127642] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:20:17.235 [DEBUG] [Thread-127642] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:20:17.235 [DEBUG] [Thread-127642] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:20:17.243 [DEBUG] [Thread-127642] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:20:17.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:20:17.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:20:17.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:20:17.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:20:17.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:20:17.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:20:17.280 [DEBUG] [Thread-127642] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:20:18.296 [DEBUG] [Thread-127644 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:20:20.166 [DEBUG] [Thread-127645 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:20:35.224 [DEBUG] [Thread-127646 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:20:47.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:20:47.300 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:20:47.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:20:48.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 20, 34), 29.89, 11.76, 0.0, 20.91, 16.69, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:20:48.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:20:34
2025-11-04T03:20:48.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:20:48.406 [DEBUG] [Thread-127647] [transport.py] [_log()] starting thread (client mode): 0xed23970
2025-11-04T03:20:48.407 [DEBUG] [Thread-127647] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:20:48.422 [DEBUG] [Thread-127647] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:20:48.422 [INFO] [Thread-127647] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:20:48.426 [DEBUG] [Thread-127647] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:20:48.426 [DEBUG] [Thread-127647] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:20:48.426 [DEBUG] [Thread-127647] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:20:48.426 [DEBUG] [Thread-127647] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:20:48.426 [DEBUG] [Thread-127647] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:20:48.427 [DEBUG] [Thread-127647] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:20:48.427 [DEBUG] [Thread-127647] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:20:48.427 [DEBUG] [Thread-127647] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:20:48.427 [DEBUG] [Thread-127647] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:20:48.427 [DEBUG] [Thread-127647] [transport.py] [_log()] client lang: <none>
2025-11-04T03:20:48.427 [DEBUG] [Thread-127647] [transport.py] [_log()] server lang: <none>
2025-11-04T03:20:48.427 [DEBUG] [Thread-127647] [transport.py] [_log()] kex follows: False
2025-11-04T03:20:48.427 [DEBUG] [Thread-127647] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:20:48.428 [DEBUG] [Thread-127647] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:20:48.428 [DEBUG] [Thread-127647] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:20:48.428 [DEBUG] [Thread-127647] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:20:48.428 [DEBUG] [Thread-127647] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:20:48.428 [DEBUG] [Thread-127647] [transport.py] [_log()] Compression: none
2025-11-04T03:20:48.429 [DEBUG] [Thread-127647] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:20:48.467 [DEBUG] [Thread-127647] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:20:48.471 [DEBUG] [Thread-127647] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:20:48.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:20:48.475 [DEBUG] [Thread-127647] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:20:48.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:20:48.478 [DEBUG] [Thread-127647] [transport.py] [_log()] userauth is OK
2025-11-04T03:20:48.479 [DEBUG] [Thread-127647] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:20:48.479 [DEBUG] [Thread-127647] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:20:48.479 [DEBUG] [Thread-127647] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:20:48.479 [DEBUG] [Thread-127647] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:20:48.519 [INFO] [Thread-127647] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:20:48.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:20:49.144 [DEBUG] [Thread-127647] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:20:49.145 [DEBUG] [Thread-127647] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:20:49.146 [DEBUG] [Thread-127647] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:20:49.186 [DEBUG] [Thread-127647] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:20:49.186 [DEBUG] [Thread-127647] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:20:49.189 [DEBUG] [Thread-127647] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:20:49.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:20:49.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:20:49.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:20:49.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:20:49.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:20:49.216 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:20:49.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:20:49.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:20:49.219 [DEBUG] [Thread-127647] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:20:49.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:20:49.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.055652 -999.00  +16.80  22.13     16   -8.60 1 1 1 1 1     0    0 28.26 142.41 ZNESW 23.7 22.1 306.6 30.0 16.9 -24.0 16.9 -23.1 16.7 -22.9 17.0 -23.7
2025-11-04T03:20:49.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:20:49.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:20:49.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.055652
2025-11-04T03:20:49.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:20:49.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:20:49.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:20:49.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:20:49.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:20:49.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:20:34', tmtdew=29.89, humidity=11.76, cloud=0.0, wind=20.91, temperature=16.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:20:34', seeing=1.0, atlas_timestamp='2025-11-04T01:20:08.333', atlas_cloud=1, atlas_rain=1, zp_data=[0.05024999999999835, -0.0017499999999994742, 0.1252500000000012, 0.05299999999999905, -0.010500000000000398, 0.017250000000000654, 0.03399999999999892, 0.07125000000000092, 0.058499999999998664, 0.05400000000000027, 0.145249999999999, 0.08000000000000007, 0.2444999999999986, 0.09224999999999994, -0.014000000000001123, -0.03500000000000014, 0.08724999999999916, 0.08050000000000068, 0.10699999999999932, 0.08874999999999922, 0.19399999999999906, 0.04174999999999862, 0.10975000000000179, 0.059749999999999304, 0.05699999999999861, 0.21250000000000036, 0.1587499999999995, 0.22949999999999982, 0.1999999999999993, -0.26200000000000045, 0.15399999999999991, 0.10250000000000092, 0.15424999999999933], zp_timestamp='2025-11-04T01:18:00')
2025-11-04T03:20:49.325 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:20:49.340 [DEBUG] [Thread-127650] [transport.py] [_log()] starting thread (client mode): 0xedd61d0
2025-11-04T03:20:49.340 [DEBUG] [Thread-127650] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:20:49.355 [DEBUG] [Thread-127650] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:20:49.355 [INFO] [Thread-127650] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:20:49.363 [DEBUG] [Thread-127650] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:20:49.363 [DEBUG] [Thread-127650] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:20:49.363 [DEBUG] [Thread-127650] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:20:49.363 [DEBUG] [Thread-127650] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:20:49.363 [DEBUG] [Thread-127650] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:20:49.363 [DEBUG] [Thread-127650] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:20:49.363 [DEBUG] [Thread-127650] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:20:49.363 [DEBUG] [Thread-127650] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:20:49.363 [DEBUG] [Thread-127650] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:20:49.363 [DEBUG] [Thread-127650] [transport.py] [_log()] client lang: <none>
2025-11-04T03:20:49.363 [DEBUG] [Thread-127650] [transport.py] [_log()] server lang: <none>
2025-11-04T03:20:49.363 [DEBUG] [Thread-127650] [transport.py] [_log()] kex follows: False
2025-11-04T03:20:49.363 [DEBUG] [Thread-127650] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:20:49.363 [DEBUG] [Thread-127650] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:20:49.364 [DEBUG] [Thread-127650] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:20:49.364 [DEBUG] [Thread-127650] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:20:49.364 [DEBUG] [Thread-127650] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:20:49.364 [DEBUG] [Thread-127650] [transport.py] [_log()] Compression: none
2025-11-04T03:20:49.364 [DEBUG] [Thread-127650] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:20:49.427 [DEBUG] [Thread-127650] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:20:49.427 [DEBUG] [Thread-127650] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:20:49.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:20:49.429 [DEBUG] [Thread-127650] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:20:49.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:20:49.487 [DEBUG] [Thread-127650] [transport.py] [_log()] userauth is OK
2025-11-04T03:20:49.488 [DEBUG] [Thread-127650] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:20:49.488 [DEBUG] [Thread-127650] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:20:49.488 [DEBUG] [Thread-127650] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:20:49.488 [DEBUG] [Thread-127650] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:20:49.507 [INFO] [Thread-127650] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:20:49.507 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:20:49.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:20:50.253 [DEBUG] [Thread-127652 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:20:50.339 [DEBUG] [Thread-127650] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:20:50.339 [DEBUG] [Thread-127650] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:20:50.387 [DEBUG] [Thread-127650] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:20:50.387 [DEBUG] [Thread-127650] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:20:50.397 [DEBUG] [Thread-127650] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:20:50.406 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:20:50.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:20:50.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:20:50.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:20:50.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:20:50.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:20:50.439 [DEBUG] [Thread-127650] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:20:54.948 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:20:54.950 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:21:05.336 [DEBUG] [Thread-127653 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:21:18.593 [DEBUG] [Thread-127654 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:21:20.401 [DEBUG] [Thread-127655 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:21:20.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:21:20.463 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:21:20.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:21:21.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 21, 6), 29.89, 11.75, 0.0, 21.7, 16.64, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:21:21.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:21:06
2025-11-04T03:21:21.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:21:21.555 [DEBUG] [Thread-127656] [transport.py] [_log()] starting thread (client mode): 0xed37610
2025-11-04T03:21:21.556 [DEBUG] [Thread-127656] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:21:21.568 [DEBUG] [Thread-127656] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:21:21.568 [INFO] [Thread-127656] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:21:21.575 [DEBUG] [Thread-127656] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:21:21.575 [DEBUG] [Thread-127656] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:21:21.575 [DEBUG] [Thread-127656] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:21:21.575 [DEBUG] [Thread-127656] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:21:21.575 [DEBUG] [Thread-127656] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:21:21.575 [DEBUG] [Thread-127656] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:21:21.575 [DEBUG] [Thread-127656] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:21:21.576 [DEBUG] [Thread-127656] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:21:21.576 [DEBUG] [Thread-127656] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:21:21.576 [DEBUG] [Thread-127656] [transport.py] [_log()] client lang: <none>
2025-11-04T03:21:21.576 [DEBUG] [Thread-127656] [transport.py] [_log()] server lang: <none>
2025-11-04T03:21:21.576 [DEBUG] [Thread-127656] [transport.py] [_log()] kex follows: False
2025-11-04T03:21:21.576 [DEBUG] [Thread-127656] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:21:21.577 [DEBUG] [Thread-127656] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:21:21.577 [DEBUG] [Thread-127656] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:21:21.578 [DEBUG] [Thread-127656] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:21:21.578 [DEBUG] [Thread-127656] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:21:21.578 [DEBUG] [Thread-127656] [transport.py] [_log()] Compression: none
2025-11-04T03:21:21.578 [DEBUG] [Thread-127656] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:21:21.624 [DEBUG] [Thread-127656] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:21:21.629 [DEBUG] [Thread-127656] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:21:21.631 [DEBUG] [Thread-127656] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:21:21.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:21:21.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:21:21.636 [DEBUG] [Thread-127656] [transport.py] [_log()] userauth is OK
2025-11-04T03:21:21.636 [DEBUG] [Thread-127656] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:21:21.637 [DEBUG] [Thread-127656] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:21:21.637 [DEBUG] [Thread-127656] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:21:21.637 [DEBUG] [Thread-127656] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:21:21.663 [INFO] [Thread-127656] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:21:21.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:21:22.440 [DEBUG] [Thread-127656] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:21:22.441 [DEBUG] [Thread-127656] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:21:22.451 [DEBUG] [Thread-127656] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:21:22.482 [DEBUG] [Thread-127656] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:21:22.482 [DEBUG] [Thread-127656] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:21:22.485 [DEBUG] [Thread-127656] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:21:22.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:21:22.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:21:22.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:21:22.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:21:22.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:21:22.504 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:21:22.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:21:22.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:21:22.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:21:22.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.055999 -999.00  +16.80  22.74     16   -8.50 1 1 1 1 1     0    0 28.76 146.86 ZNESW 24.5 22.7 305.8 28.9 17.0 -24.2 16.9 -23.1 16.7 -22.7 16.9 -23.8
2025-11-04T03:21:22.507 [DEBUG] [Thread-127656] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:21:22.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:21:22.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:21:22.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.055999
2025-11-04T03:21:22.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:21:22.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:21:22.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:21:22.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:21:22.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:21:22.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:21:06', tmtdew=29.89, humidity=11.75, cloud=0.0, wind=21.7, temperature=16.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:21:07', seeing=1.0, atlas_timestamp='2025-11-04T01:20:38.314', atlas_cloud=1, atlas_rain=1, zp_data=[0.05024999999999835, -0.0017499999999994742, 0.1252500000000012, 0.05299999999999905, -0.010500000000000398, 0.017250000000000654, 0.03399999999999892, 0.07125000000000092, 0.058499999999998664, 0.05400000000000027, 0.145249999999999, 0.08000000000000007, 0.2444999999999986, 0.09224999999999994, -0.014000000000001123, -0.03500000000000014, 0.08724999999999916, 0.08050000000000068, 0.10699999999999932, 0.08874999999999922, 0.19399999999999906, 0.04174999999999862, 0.10975000000000179, 0.059749999999999304, 0.05699999999999861, 0.21250000000000036, 0.1587499999999995, 0.22949999999999982, 0.1999999999999993, -0.26200000000000045, 0.15399999999999991, 0.10250000000000092, 0.15424999999999933], zp_timestamp='2025-11-04T01:18:00')
2025-11-04T03:21:22.617 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:21:22.629 [DEBUG] [Thread-127659] [transport.py] [_log()] starting thread (client mode): 0xed35f90
2025-11-04T03:21:22.629 [DEBUG] [Thread-127659] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:21:22.644 [DEBUG] [Thread-127659] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:21:22.644 [INFO] [Thread-127659] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:21:22.651 [DEBUG] [Thread-127659] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:21:22.652 [DEBUG] [Thread-127659] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:21:22.652 [DEBUG] [Thread-127659] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:21:22.652 [DEBUG] [Thread-127659] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:21:22.652 [DEBUG] [Thread-127659] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:21:22.652 [DEBUG] [Thread-127659] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:21:22.652 [DEBUG] [Thread-127659] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:21:22.652 [DEBUG] [Thread-127659] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:21:22.652 [DEBUG] [Thread-127659] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:21:22.652 [DEBUG] [Thread-127659] [transport.py] [_log()] client lang: <none>
2025-11-04T03:21:22.652 [DEBUG] [Thread-127659] [transport.py] [_log()] server lang: <none>
2025-11-04T03:21:22.652 [DEBUG] [Thread-127659] [transport.py] [_log()] kex follows: False
2025-11-04T03:21:22.652 [DEBUG] [Thread-127659] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:21:22.652 [DEBUG] [Thread-127659] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:21:22.652 [DEBUG] [Thread-127659] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:21:22.652 [DEBUG] [Thread-127659] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:21:22.652 [DEBUG] [Thread-127659] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:21:22.652 [DEBUG] [Thread-127659] [transport.py] [_log()] Compression: none
2025-11-04T03:21:22.653 [DEBUG] [Thread-127659] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:21:22.709 [DEBUG] [Thread-127659] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:21:22.709 [DEBUG] [Thread-127659] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:21:22.709 [DEBUG] [Thread-127659] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:21:22.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:21:22.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:21:22.771 [DEBUG] [Thread-127659] [transport.py] [_log()] userauth is OK
2025-11-04T03:21:22.771 [DEBUG] [Thread-127659] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:21:22.771 [DEBUG] [Thread-127659] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:21:22.771 [DEBUG] [Thread-127659] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:21:22.771 [DEBUG] [Thread-127659] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:21:22.785 [INFO] [Thread-127659] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:21:22.785 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:21:22.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:21:23.650 [DEBUG] [Thread-127659] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:21:23.651 [DEBUG] [Thread-127659] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:21:23.699 [DEBUG] [Thread-127659] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:21:23.699 [DEBUG] [Thread-127659] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:21:23.709 [DEBUG] [Thread-127659] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:21:23.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:21:23.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:21:23.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:21:23.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:21:23.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:21:23.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:21:23.749 [DEBUG] [Thread-127659] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:21:35.430 [DEBUG] [Thread-127661 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:21:50.548 [DEBUG] [Thread-127662 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:21:53.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:21:53.780 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:21:53.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:21:54.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 21, 39), 29.84, 11.71, 0.0, 23.2, 16.64, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:21:54.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:21:39
2025-11-04T03:21:54.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:21:54.827 [DEBUG] [Thread-127663] [transport.py] [_log()] starting thread (client mode): 0xed10490
2025-11-04T03:21:54.828 [DEBUG] [Thread-127663] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:21:54.843 [DEBUG] [Thread-127663] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:21:54.843 [INFO] [Thread-127663] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:21:54.846 [DEBUG] [Thread-127663] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:21:54.846 [DEBUG] [Thread-127663] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:21:54.846 [DEBUG] [Thread-127663] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:21:54.847 [DEBUG] [Thread-127663] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:21:54.847 [DEBUG] [Thread-127663] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:21:54.847 [DEBUG] [Thread-127663] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:21:54.847 [DEBUG] [Thread-127663] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:21:54.847 [DEBUG] [Thread-127663] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:21:54.847 [DEBUG] [Thread-127663] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:21:54.847 [DEBUG] [Thread-127663] [transport.py] [_log()] client lang: <none>
2025-11-04T03:21:54.847 [DEBUG] [Thread-127663] [transport.py] [_log()] server lang: <none>
2025-11-04T03:21:54.847 [DEBUG] [Thread-127663] [transport.py] [_log()] kex follows: False
2025-11-04T03:21:54.847 [DEBUG] [Thread-127663] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:21:54.848 [DEBUG] [Thread-127663] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:21:54.848 [DEBUG] [Thread-127663] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:21:54.848 [DEBUG] [Thread-127663] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:21:54.848 [DEBUG] [Thread-127663] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:21:54.848 [DEBUG] [Thread-127663] [transport.py] [_log()] Compression: none
2025-11-04T03:21:54.848 [DEBUG] [Thread-127663] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:21:54.875 [DEBUG] [Thread-127663] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:21:54.878 [DEBUG] [Thread-127663] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:21:54.881 [DEBUG] [Thread-127663] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:21:54.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:21:54.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:21:54.885 [DEBUG] [Thread-127663] [transport.py] [_log()] userauth is OK
2025-11-04T03:21:54.886 [DEBUG] [Thread-127663] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:21:54.886 [DEBUG] [Thread-127663] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:21:54.886 [DEBUG] [Thread-127663] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:21:54.886 [DEBUG] [Thread-127663] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:21:54.911 [INFO] [Thread-127663] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:21:54.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:21:55.152 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:21:55.154 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:21:55.571 [DEBUG] [Thread-127663] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:21:55.572 [DEBUG] [Thread-127663] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:21:55.573 [DEBUG] [Thread-127663] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:21:55.612 [DEBUG] [Thread-127663] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:21:55.613 [DEBUG] [Thread-127663] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:21:55.617 [DEBUG] [Thread-127663] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:21:55.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:21:55.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:21:55.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:21:55.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:21:55.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:21:55.636 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:21:55.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:21:55.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:21:55.638 [DEBUG] [Thread-127663] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:21:55.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:21:55.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.056694 -999.00  +16.80  23.21     16   -8.50 1 1 1 1 1     0    0 28.25 158.39 ZNESW 21.1 23.2 298.8 27.7 17.0 -24.2 16.9 -23.2 16.6 -22.9 17.0 -24.0
2025-11-04T03:21:55.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:21:55.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:21:55.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.056694
2025-11-04T03:21:55.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:21:55.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:21:55.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:21:55.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:21:55.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:21:55.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:21:39', tmtdew=29.84, humidity=11.71, cloud=0.0, wind=23.2, temperature=16.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:21:39', seeing=1.17, atlas_timestamp='2025-11-04T01:21:38.362', atlas_cloud=1, atlas_rain=1, zp_data=[0.05024999999999835, -0.0017499999999994742, 0.1252500000000012, 0.05299999999999905, -0.010500000000000398, 0.017250000000000654, 0.03399999999999892, 0.07125000000000092, 0.058499999999998664, 0.05400000000000027, 0.145249999999999, 0.08000000000000007, 0.2444999999999986, 0.09224999999999994, -0.014000000000001123, -0.03500000000000014, 0.08724999999999916, 0.08050000000000068, 0.10699999999999932, 0.08874999999999922, 0.19399999999999906, 0.04174999999999862, 0.10975000000000179, 0.059749999999999304, 0.05699999999999861, 0.21250000000000036, 0.1587499999999995, 0.22949999999999982, 0.1999999999999993, -0.26200000000000045, 0.15399999999999991, 0.10250000000000092, 0.15424999999999933], zp_timestamp='2025-11-04T01:18:00')
2025-11-04T03:21:55.730 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:21:55.745 [DEBUG] [Thread-127666] [transport.py] [_log()] starting thread (client mode): 0xed34a00
2025-11-04T03:21:55.745 [DEBUG] [Thread-127666] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:21:55.761 [DEBUG] [Thread-127666] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:21:55.761 [INFO] [Thread-127666] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:21:55.771 [DEBUG] [Thread-127666] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:21:55.771 [DEBUG] [Thread-127666] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:21:55.771 [DEBUG] [Thread-127666] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:21:55.771 [DEBUG] [Thread-127666] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:21:55.771 [DEBUG] [Thread-127666] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:21:55.771 [DEBUG] [Thread-127666] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:21:55.771 [DEBUG] [Thread-127666] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:21:55.771 [DEBUG] [Thread-127666] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:21:55.771 [DEBUG] [Thread-127666] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:21:55.771 [DEBUG] [Thread-127666] [transport.py] [_log()] client lang: <none>
2025-11-04T03:21:55.771 [DEBUG] [Thread-127666] [transport.py] [_log()] server lang: <none>
2025-11-04T03:21:55.771 [DEBUG] [Thread-127666] [transport.py] [_log()] kex follows: False
2025-11-04T03:21:55.772 [DEBUG] [Thread-127666] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:21:55.772 [DEBUG] [Thread-127666] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:21:55.772 [DEBUG] [Thread-127666] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:21:55.772 [DEBUG] [Thread-127666] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:21:55.772 [DEBUG] [Thread-127666] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:21:55.772 [DEBUG] [Thread-127666] [transport.py] [_log()] Compression: none
2025-11-04T03:21:55.772 [DEBUG] [Thread-127666] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:21:55.828 [DEBUG] [Thread-127666] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:21:55.828 [DEBUG] [Thread-127666] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:21:55.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:21:55.829 [DEBUG] [Thread-127666] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:21:55.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:21:55.888 [DEBUG] [Thread-127666] [transport.py] [_log()] userauth is OK
2025-11-04T03:21:55.888 [DEBUG] [Thread-127666] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:21:55.888 [DEBUG] [Thread-127666] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:21:55.888 [DEBUG] [Thread-127666] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:21:55.889 [DEBUG] [Thread-127666] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:21:55.907 [INFO] [Thread-127666] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:21:55.908 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:21:55.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:21:56.783 [DEBUG] [Thread-127666] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:21:56.783 [DEBUG] [Thread-127666] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:21:56.823 [DEBUG] [Thread-127666] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:21:56.823 [DEBUG] [Thread-127666] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:21:56.832 [DEBUG] [Thread-127666] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:21:56.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:21:56.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:21:56.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:21:56.860 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:21:56.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:21:56.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:21:56.869 [DEBUG] [Thread-127666] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:22:05.588 [DEBUG] [Thread-127668 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:22:18.939 [DEBUG] [Thread-127669 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:22:20.706 [DEBUG] [Thread-127670 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:22:26.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:22:26.875 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:22:26.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:22:27.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 22, 11), 29.89, 11.68, 0.0, 22.18, 16.73, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:22:27.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:22:11
2025-11-04T03:22:27.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:22:28.020 [DEBUG] [Thread-127671] [transport.py] [_log()] starting thread (client mode): 0xedd7f10
2025-11-04T03:22:28.021 [DEBUG] [Thread-127671] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:22:28.034 [DEBUG] [Thread-127671] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:22:28.034 [INFO] [Thread-127671] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:22:28.038 [DEBUG] [Thread-127671] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:22:28.038 [DEBUG] [Thread-127671] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:22:28.038 [DEBUG] [Thread-127671] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:22:28.039 [DEBUG] [Thread-127671] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:22:28.039 [DEBUG] [Thread-127671] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:22:28.039 [DEBUG] [Thread-127671] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:22:28.039 [DEBUG] [Thread-127671] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:22:28.039 [DEBUG] [Thread-127671] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:22:28.039 [DEBUG] [Thread-127671] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:22:28.039 [DEBUG] [Thread-127671] [transport.py] [_log()] client lang: <none>
2025-11-04T03:22:28.039 [DEBUG] [Thread-127671] [transport.py] [_log()] server lang: <none>
2025-11-04T03:22:28.039 [DEBUG] [Thread-127671] [transport.py] [_log()] kex follows: False
2025-11-04T03:22:28.039 [DEBUG] [Thread-127671] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:22:28.039 [DEBUG] [Thread-127671] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:22:28.039 [DEBUG] [Thread-127671] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:22:28.040 [DEBUG] [Thread-127671] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:22:28.040 [DEBUG] [Thread-127671] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:22:28.040 [DEBUG] [Thread-127671] [transport.py] [_log()] Compression: none
2025-11-04T03:22:28.040 [DEBUG] [Thread-127671] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:22:28.073 [DEBUG] [Thread-127671] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:22:28.076 [DEBUG] [Thread-127671] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:22:28.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:22:28.078 [DEBUG] [Thread-127671] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:22:28.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:22:28.080 [DEBUG] [Thread-127671] [transport.py] [_log()] userauth is OK
2025-11-04T03:22:28.080 [DEBUG] [Thread-127671] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:22:28.080 [DEBUG] [Thread-127671] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:22:28.080 [DEBUG] [Thread-127671] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:22:28.080 [DEBUG] [Thread-127671] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:22:28.098 [INFO] [Thread-127671] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:22:28.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:22:28.747 [DEBUG] [Thread-127671] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:22:28.747 [DEBUG] [Thread-127671] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:22:28.747 [DEBUG] [Thread-127671] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:22:28.787 [DEBUG] [Thread-127671] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:22:28.787 [DEBUG] [Thread-127671] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:22:28.789 [DEBUG] [Thread-127671] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:22:28.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:22:28.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:22:28.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:22:28.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:22:28.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:22:28.802 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:22:28.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:22:28.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:22:28.804 [DEBUG] [Thread-127671] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:22:28.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:22:28.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.057041 -999.00  +16.80  21.12     16   -8.70 1 1 1 1 1     0    0 29.77 174.99 ZNESW 16.2 21.1 306.0 26.0 17.0 -24.2 16.9 -23.2 16.7 -23.0 16.9 -23.9
2025-11-04T03:22:28.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:22:28.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:22:28.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.057041
2025-11-04T03:22:28.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:22:28.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:22:28.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:22:28.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:22:28.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:22:28.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:22:11', tmtdew=29.89, humidity=11.68, cloud=0.0, wind=22.18, temperature=16.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:22:12', seeing=1.17, atlas_timestamp='2025-11-04T01:22:08.342', atlas_cloud=1, atlas_rain=1, zp_data=[0.05024999999999835, -0.0017499999999994742, 0.1252500000000012, 0.05299999999999905, -0.010500000000000398, 0.017250000000000654, 0.03399999999999892, 0.07125000000000092, 0.058499999999998664, 0.05400000000000027, 0.145249999999999, 0.08000000000000007, 0.2444999999999986, 0.09224999999999994, -0.014000000000001123, -0.03500000000000014, 0.08724999999999916, 0.08050000000000068, 0.10699999999999932, 0.08874999999999922, 0.19399999999999906, 0.04174999999999862, 0.10975000000000179, 0.059749999999999304, 0.05699999999999861, 0.21250000000000036, 0.1587499999999995, 0.22949999999999982, 0.1999999999999993, -0.26200000000000045, 0.15399999999999991, 0.10250000000000092, 0.15424999999999933], zp_timestamp='2025-11-04T01:18:00')
2025-11-04T03:22:28.890 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:22:35.752 [DEBUG] [Thread-127674 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:22:50.839 [DEBUG] [Thread-127675 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:22:55.354 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:22:55.357 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:23:05.869 [DEBUG] [Thread-127676 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:23:19.238 [DEBUG] [Thread-127677 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:23:20.907 [DEBUG] [Thread-127678 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:23:35.979 [DEBUG] [Thread-127679 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:23:51.012 [DEBUG] [Thread-127680 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:23:55.570 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:23:55.571 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:24:06.042 [DEBUG] [Thread-127681 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:24:19.568 [DEBUG] [Thread-127682 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:24:21.079 [DEBUG] [Thread-127683 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:24:36.105 [DEBUG] [Thread-127684 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:24:41.955 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-04T03:24:51.159 [DEBUG] [Thread-127685 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:24:55.773 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:24:55.774 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:25:06.188 [DEBUG] [Thread-127686 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:25:11.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:25:11.995 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:25:12.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:25:12.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 24, 55), 29.61, 11.78, 0.0, 20.77, 16.51, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:25:12.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:24:55
2025-11-04T03:25:12.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:25:13.143 [DEBUG] [Thread-127687] [transport.py] [_log()] starting thread (client mode): 0xed363e0
2025-11-04T03:25:13.144 [DEBUG] [Thread-127687] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:25:13.155 [DEBUG] [Thread-127687] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:25:13.156 [INFO] [Thread-127687] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:25:13.161 [DEBUG] [Thread-127687] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:25:13.161 [DEBUG] [Thread-127687] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:25:13.161 [DEBUG] [Thread-127687] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:25:13.161 [DEBUG] [Thread-127687] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:25:13.161 [DEBUG] [Thread-127687] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:25:13.161 [DEBUG] [Thread-127687] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:25:13.161 [DEBUG] [Thread-127687] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:25:13.161 [DEBUG] [Thread-127687] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:25:13.161 [DEBUG] [Thread-127687] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:25:13.161 [DEBUG] [Thread-127687] [transport.py] [_log()] client lang: <none>
2025-11-04T03:25:13.161 [DEBUG] [Thread-127687] [transport.py] [_log()] server lang: <none>
2025-11-04T03:25:13.161 [DEBUG] [Thread-127687] [transport.py] [_log()] kex follows: False
2025-11-04T03:25:13.161 [DEBUG] [Thread-127687] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:25:13.162 [DEBUG] [Thread-127687] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:25:13.162 [DEBUG] [Thread-127687] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:25:13.162 [DEBUG] [Thread-127687] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:25:13.162 [DEBUG] [Thread-127687] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:25:13.162 [DEBUG] [Thread-127687] [transport.py] [_log()] Compression: none
2025-11-04T03:25:13.162 [DEBUG] [Thread-127687] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:25:13.200 [DEBUG] [Thread-127687] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:25:13.204 [DEBUG] [Thread-127687] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:25:13.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:25:13.206 [DEBUG] [Thread-127687] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:25:13.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:25:13.208 [DEBUG] [Thread-127687] [transport.py] [_log()] userauth is OK
2025-11-04T03:25:13.208 [DEBUG] [Thread-127687] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:25:13.209 [DEBUG] [Thread-127687] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:25:13.209 [DEBUG] [Thread-127687] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:25:13.209 [DEBUG] [Thread-127687] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:25:13.239 [INFO] [Thread-127687] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:25:13.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:25:15.691 [DEBUG] [Thread-127687] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:25:15.691 [DEBUG] [Thread-127687] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:25:15.693 [DEBUG] [Thread-127687] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:25:15.731 [DEBUG] [Thread-127687] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:25:15.731 [DEBUG] [Thread-127687] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:25:15.734 [DEBUG] [Thread-127687] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:25:15.815 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:25:15.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:25:15.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:25:15.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:25:15.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:25:15.832 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:25:15.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:25:15.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:25:15.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:25:15.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.058430 -999.00  +16.60  21.21     16   -8.60 1 1 1 1 1     0    0 29.59 173.22 ZNESW 15.0 21.2 309.6 27.3 17.0 -24.2 16.8 -23.1 16.6 -22.7 16.9 -23.9
2025-11-04T03:25:15.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:25:15.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:25:15.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.058430
2025-11-04T03:25:15.839 [DEBUG] [Thread-127687] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:25:15.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:25:15.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:25:15.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:25:15.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:25:15.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:25:15.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:24:55', tmtdew=29.61, humidity=11.78, cloud=0.0, wind=20.77, temperature=16.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:24:56', seeing=1.09, atlas_timestamp='2025-11-04T01:24:08.352', atlas_cloud=1, atlas_rain=1, zp_data=[0.029749999999999943, 0.02725000000000044, 0.048250000000001236, 0.06049999999999933, -0.014499999999999957, 0.048250000000001236, 0.025999999999998025, 0.0652500000000007, 0.04049999999999976, 0.053000000000000824, 0.14124999999999943, 0.07000000000000028, 0.20400000000000063, 0.03924999999999912, 0.0004999999999988347, -0.019000000000000128, 0.057749999999998636, 0.08249999999999957, 0.10449999999999982, 0.10624999999999929, 0.18749999999999822, 0.09674999999999834, 0.10525000000000162, 0.03974999999999973, 0.11799999999999855, 0.29349999999999987, 0.16324999999999967, 0.28250000000000064, 0.1645000000000003, -0.30599999999999916, 0.1720000000000006, 0.11950000000000216, 0.1587499999999995], zp_timestamp='2025-11-04T01:21:00')
2025-11-04T03:25:15.931 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:25:15.943 [DEBUG] [Thread-127690] [transport.py] [_log()] starting thread (client mode): 0x8198fd0
2025-11-04T03:25:15.943 [DEBUG] [Thread-127690] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:25:15.957 [DEBUG] [Thread-127690] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:25:15.957 [INFO] [Thread-127690] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:25:15.965 [DEBUG] [Thread-127690] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:25:15.965 [DEBUG] [Thread-127690] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:25:15.965 [DEBUG] [Thread-127690] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:25:15.965 [DEBUG] [Thread-127690] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:25:15.965 [DEBUG] [Thread-127690] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:25:15.965 [DEBUG] [Thread-127690] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:25:15.965 [DEBUG] [Thread-127690] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:25:15.965 [DEBUG] [Thread-127690] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:25:15.965 [DEBUG] [Thread-127690] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:25:15.965 [DEBUG] [Thread-127690] [transport.py] [_log()] client lang: <none>
2025-11-04T03:25:15.965 [DEBUG] [Thread-127690] [transport.py] [_log()] server lang: <none>
2025-11-04T03:25:15.965 [DEBUG] [Thread-127690] [transport.py] [_log()] kex follows: False
2025-11-04T03:25:15.965 [DEBUG] [Thread-127690] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:25:15.965 [DEBUG] [Thread-127690] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:25:15.965 [DEBUG] [Thread-127690] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:25:15.965 [DEBUG] [Thread-127690] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:25:15.965 [DEBUG] [Thread-127690] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:25:15.965 [DEBUG] [Thread-127690] [transport.py] [_log()] Compression: none
2025-11-04T03:25:15.965 [DEBUG] [Thread-127690] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:25:16.021 [DEBUG] [Thread-127690] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:25:16.021 [DEBUG] [Thread-127690] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:25:16.021 [DEBUG] [Thread-127690] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:25:16.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:25:16.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:25:16.078 [DEBUG] [Thread-127690] [transport.py] [_log()] userauth is OK
2025-11-04T03:25:16.079 [DEBUG] [Thread-127690] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:25:16.079 [DEBUG] [Thread-127690] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:25:16.079 [DEBUG] [Thread-127690] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:25:16.079 [DEBUG] [Thread-127690] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:25:16.100 [INFO] [Thread-127690] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:25:16.101 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:25:16.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:25:16.171 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:25:16.969 [DEBUG] [Thread-127690] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:25:16.969 [DEBUG] [Thread-127690] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:25:17.018 [DEBUG] [Thread-127690] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:25:17.018 [DEBUG] [Thread-127690] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:25:17.027 [DEBUG] [Thread-127690] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:25:17.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:25:17.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:25:17.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:25:17.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:25:17.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:25:17.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:25:17.066 [DEBUG] [Thread-127690] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:25:19.857 [DEBUG] [Thread-127692 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:25:21.240 [DEBUG] [Thread-127693 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:25:21.394 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:25:24.434 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:25:29.816 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:25:36.401 [DEBUG] [Thread-127694 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:25:47.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:25:47.076 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:25:47.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:25:47.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 25, 28), 29.67, 11.73, 0.0, 20.89, 16.54, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:25:47.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:25:28
2025-11-04T03:25:48.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:25:48.188 [DEBUG] [Thread-127695] [transport.py] [_log()] starting thread (client mode): 0xed37640
2025-11-04T03:25:48.188 [DEBUG] [Thread-127695] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:25:48.208 [DEBUG] [Thread-127695] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:25:48.209 [INFO] [Thread-127695] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:25:48.212 [DEBUG] [Thread-127695] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:25:48.212 [DEBUG] [Thread-127695] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:25:48.212 [DEBUG] [Thread-127695] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:25:48.212 [DEBUG] [Thread-127695] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:25:48.212 [DEBUG] [Thread-127695] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:25:48.212 [DEBUG] [Thread-127695] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:25:48.212 [DEBUG] [Thread-127695] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:25:48.212 [DEBUG] [Thread-127695] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:25:48.212 [DEBUG] [Thread-127695] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:25:48.212 [DEBUG] [Thread-127695] [transport.py] [_log()] client lang: <none>
2025-11-04T03:25:48.212 [DEBUG] [Thread-127695] [transport.py] [_log()] server lang: <none>
2025-11-04T03:25:48.212 [DEBUG] [Thread-127695] [transport.py] [_log()] kex follows: False
2025-11-04T03:25:48.212 [DEBUG] [Thread-127695] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:25:48.212 [DEBUG] [Thread-127695] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:25:48.212 [DEBUG] [Thread-127695] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:25:48.212 [DEBUG] [Thread-127695] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:25:48.212 [DEBUG] [Thread-127695] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:25:48.212 [DEBUG] [Thread-127695] [transport.py] [_log()] Compression: none
2025-11-04T03:25:48.212 [DEBUG] [Thread-127695] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:25:48.229 [DEBUG] [Thread-127695] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:25:48.230 [DEBUG] [Thread-127695] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:25:48.230 [DEBUG] [Thread-127695] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:25:48.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:25:48.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:25:48.273 [DEBUG] [Thread-127695] [transport.py] [_log()] userauth is OK
2025-11-04T03:25:48.273 [DEBUG] [Thread-127695] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:25:48.273 [DEBUG] [Thread-127695] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:25:48.273 [DEBUG] [Thread-127695] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:25:48.273 [DEBUG] [Thread-127695] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:25:48.289 [INFO] [Thread-127695] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:25:48.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:25:48.928 [DEBUG] [Thread-127695] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:25:48.929 [DEBUG] [Thread-127695] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:25:48.929 [DEBUG] [Thread-127695] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:25:48.970 [DEBUG] [Thread-127695] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:25:48.970 [DEBUG] [Thread-127695] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:25:48.972 [DEBUG] [Thread-127695] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:25:48.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:25:48.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:25:48.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:25:48.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:25:48.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:25:48.992 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:25:48.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:25:48.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:25:48.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:25:48.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.059124 -999.00  +16.50  16.60     17   -8.50 1 1 1 1 1     0    0 29.80 175.03 ZNESW 18.8 16.6 308.2 24.4 16.9 -24.3 16.8 -23.3 16.6 -23.0 16.9 -24.0
2025-11-04T03:25:48.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:25:48.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:25:48.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.059124
2025-11-04T03:25:48.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:25:48.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:25:48.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:25:48.997 [DEBUG] [Thread-127695] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:25:48.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:25:48.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:25:48.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:25:28', tmtdew=29.67, humidity=11.73, cloud=0.0, wind=20.89, temperature=16.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:25:28', seeing=0.97, atlas_timestamp='2025-11-04T01:25:08.314', atlas_cloud=1, atlas_rain=1, zp_data=[0.029749999999999943, 0.02725000000000044, 0.048250000000001236, 0.06049999999999933, -0.014499999999999957, 0.048250000000001236, 0.025999999999998025, 0.0652500000000007, 0.04049999999999976, 0.053000000000000824, 0.14124999999999943, 0.07000000000000028, 0.20400000000000063, 0.03924999999999912, 0.0004999999999988347, -0.019000000000000128, 0.057749999999998636, 0.08249999999999957, 0.10449999999999982, 0.10624999999999929, 0.18749999999999822, 0.09674999999999834, 0.10525000000000162, 0.03974999999999973, 0.11799999999999855, 0.29349999999999987, 0.16324999999999967, 0.28250000000000064, 0.1645000000000003, -0.30599999999999916, 0.1720000000000006, 0.11950000000000216, 0.1587499999999995], zp_timestamp='2025-11-04T01:21:00')
2025-11-04T03:25:49.072 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:25:49.085 [DEBUG] [Thread-127698] [transport.py] [_log()] starting thread (client mode): 0xed13d30
2025-11-04T03:25:49.085 [DEBUG] [Thread-127698] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:25:49.103 [DEBUG] [Thread-127698] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:25:49.103 [INFO] [Thread-127698] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:25:49.113 [DEBUG] [Thread-127698] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:25:49.113 [DEBUG] [Thread-127698] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:25:49.113 [DEBUG] [Thread-127698] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:25:49.113 [DEBUG] [Thread-127698] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:25:49.113 [DEBUG] [Thread-127698] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:25:49.114 [DEBUG] [Thread-127698] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:25:49.114 [DEBUG] [Thread-127698] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:25:49.114 [DEBUG] [Thread-127698] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:25:49.114 [DEBUG] [Thread-127698] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:25:49.114 [DEBUG] [Thread-127698] [transport.py] [_log()] client lang: <none>
2025-11-04T03:25:49.114 [DEBUG] [Thread-127698] [transport.py] [_log()] server lang: <none>
2025-11-04T03:25:49.114 [DEBUG] [Thread-127698] [transport.py] [_log()] kex follows: False
2025-11-04T03:25:49.114 [DEBUG] [Thread-127698] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:25:49.114 [DEBUG] [Thread-127698] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:25:49.114 [DEBUG] [Thread-127698] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:25:49.114 [DEBUG] [Thread-127698] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:25:49.114 [DEBUG] [Thread-127698] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:25:49.114 [DEBUG] [Thread-127698] [transport.py] [_log()] Compression: none
2025-11-04T03:25:49.114 [DEBUG] [Thread-127698] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:25:49.174 [DEBUG] [Thread-127698] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:25:49.175 [DEBUG] [Thread-127698] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:25:49.175 [DEBUG] [Thread-127698] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:25:49.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:25:49.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:25:49.238 [DEBUG] [Thread-127698] [transport.py] [_log()] userauth is OK
2025-11-04T03:25:49.239 [DEBUG] [Thread-127698] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:25:49.239 [DEBUG] [Thread-127698] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:25:49.239 [DEBUG] [Thread-127698] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:25:49.239 [DEBUG] [Thread-127698] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:25:49.255 [INFO] [Thread-127698] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:25:49.255 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:25:49.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:25:50.108 [DEBUG] [Thread-127698] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:25:50.108 [DEBUG] [Thread-127698] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:25:50.158 [DEBUG] [Thread-127698] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:25:50.159 [DEBUG] [Thread-127698] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:25:50.168 [DEBUG] [Thread-127698] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:25:50.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:25:50.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:25:50.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:25:50.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:25:50.194 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:25:50.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:25:50.203 [DEBUG] [Thread-127698] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:25:51.435 [DEBUG] [Thread-127700 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:25:56.010 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:25:56.011 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:26:06.497 [DEBUG] [Thread-127701 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:26:20.134 [DEBUG] [Thread-127702 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:26:20.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:26:20.226 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:26:20.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:26:20.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 26, 1), 29.76, 11.65, 0.0, 20.41, 16.56, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:26:20.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:26:01
2025-11-04T03:26:21.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:26:21.300 [DEBUG] [Thread-127703] [transport.py] [_log()] starting thread (client mode): 0x11762920
2025-11-04T03:26:21.300 [DEBUG] [Thread-127703] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:26:21.312 [DEBUG] [Thread-127703] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:26:21.313 [INFO] [Thread-127703] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:26:21.316 [DEBUG] [Thread-127703] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:26:21.316 [DEBUG] [Thread-127703] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:26:21.316 [DEBUG] [Thread-127703] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:26:21.316 [DEBUG] [Thread-127703] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:26:21.316 [DEBUG] [Thread-127703] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:26:21.316 [DEBUG] [Thread-127703] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:26:21.316 [DEBUG] [Thread-127703] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:26:21.316 [DEBUG] [Thread-127703] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:26:21.316 [DEBUG] [Thread-127703] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:26:21.316 [DEBUG] [Thread-127703] [transport.py] [_log()] client lang: <none>
2025-11-04T03:26:21.317 [DEBUG] [Thread-127703] [transport.py] [_log()] server lang: <none>
2025-11-04T03:26:21.317 [DEBUG] [Thread-127703] [transport.py] [_log()] kex follows: False
2025-11-04T03:26:21.317 [DEBUG] [Thread-127703] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:26:21.317 [DEBUG] [Thread-127703] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:26:21.317 [DEBUG] [Thread-127703] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:26:21.317 [DEBUG] [Thread-127703] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:26:21.317 [DEBUG] [Thread-127703] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:26:21.317 [DEBUG] [Thread-127703] [transport.py] [_log()] Compression: none
2025-11-04T03:26:21.317 [DEBUG] [Thread-127703] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:26:21.350 [DEBUG] [Thread-127703] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:26:21.355 [DEBUG] [Thread-127703] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:26:21.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:26:21.358 [DEBUG] [Thread-127703] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:26:21.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:26:21.362 [DEBUG] [Thread-127703] [transport.py] [_log()] userauth is OK
2025-11-04T03:26:21.362 [DEBUG] [Thread-127703] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:26:21.363 [DEBUG] [Thread-127703] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:26:21.363 [DEBUG] [Thread-127703] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:26:21.363 [DEBUG] [Thread-127703] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:26:21.387 [INFO] [Thread-127703] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:26:21.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:26:21.535 [DEBUG] [Thread-127705 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:26:22.102 [DEBUG] [Thread-127703] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:26:22.102 [DEBUG] [Thread-127703] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:26:22.111 [DEBUG] [Thread-127703] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:26:22.144 [DEBUG] [Thread-127703] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:26:22.144 [DEBUG] [Thread-127703] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:26:22.147 [DEBUG] [Thread-127703] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:26:22.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:26:22.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:26:22.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:26:22.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:26:22.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:26:22.167 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:26:22.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:26:22.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:26:22.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:26:22.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.059472 -999.00  +16.50  17.60     17   -8.50 1 1 1 1 1     0    0 29.94 184.23 ZNESW 19.5 17.6 308.4 24.6 16.9 -24.3 16.9 -23.3 16.6 -23.2 16.9 -24.0
2025-11-04T03:26:22.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:26:22.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:26:22.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.059472
2025-11-04T03:26:22.174 [DEBUG] [Thread-127703] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:26:22.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:26:22.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:26:22.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:26:22.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:26:22.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:26:22.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:26:01', tmtdew=29.76, humidity=11.65, cloud=0.0, wind=20.41, temperature=16.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:26:01', seeing=0.97, atlas_timestamp='2025-11-04T01:25:38.381', atlas_cloud=1, atlas_rain=1, zp_data=[0.06374999999999886, 0.06625000000000014, 0.12025000000000041, 0.08449999999999847, 0.03950000000000031, 0.03825000000000145, 0.019000000000000128, 0.08225000000000016, 0.03249999999999886, 0.030000000000001137, 0.1322499999999991, 0.10099999999999909, 0.17099999999999937, 0.07925000000000004, 0.022499999999999076, 0.022499999999999076, 0.0702499999999997, 0.11849999999999916, 0.14999999999999858, 0.1347499999999986, 0.20999999999999908, 0.08824999999999861, 0.08625000000000149, 0.05025000000000013, 0.125, 0.2784999999999993, 0.11275000000000013, 0.25950000000000095, 0.19899999999999984, -0.16499999999999915, 0.20200000000000173, 0.11300000000000132, 0.13024999999999842], zp_timestamp='2025-11-04T01:24:00')
2025-11-04T03:26:22.252 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:26:36.566 [DEBUG] [Thread-127707 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:26:51.659 [DEBUG] [Thread-127708 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:26:56.221 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:26:56.223 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:27:06.695 [DEBUG] [Thread-127709 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:27:20.435 [DEBUG] [Thread-127710 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:27:21.741 [DEBUG] [Thread-127711 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:27:36.787 [DEBUG] [Thread-127712 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:27:51.850 [DEBUG] [Thread-127713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:27:56.435 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:27:56.436 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:28:06.905 [DEBUG] [Thread-127714 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:28:20.740 [DEBUG] [Thread-127715 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:28:21.934 [DEBUG] [Thread-127716 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:28:35.429 [WARNING] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Unable to open ssh connection for writing weather state to io.saao.ac.za: [Errno 110] Connection timed out
2025-11-04T03:28:36.975 [DEBUG] [Thread-127717 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:28:52.020 [DEBUG] [Thread-127718 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:28:56.639 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:28:56.640 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:29:05.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:29:05.470 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:29:05.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:29:06.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 28, 45), 30.27, 11.5, 0.0, 20.68, 16.69, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:29:06.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:28:45
2025-11-04T03:29:06.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:29:06.917 [DEBUG] [Thread-127719] [transport.py] [_log()] starting thread (client mode): 0xedd5450
2025-11-04T03:29:06.918 [DEBUG] [Thread-127719] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:29:06.929 [DEBUG] [Thread-127719] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:29:06.929 [INFO] [Thread-127719] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:29:06.935 [DEBUG] [Thread-127719] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:29:06.935 [DEBUG] [Thread-127719] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:29:06.935 [DEBUG] [Thread-127719] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:29:06.936 [DEBUG] [Thread-127719] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:29:06.936 [DEBUG] [Thread-127719] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:29:06.936 [DEBUG] [Thread-127719] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:29:06.936 [DEBUG] [Thread-127719] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:29:06.936 [DEBUG] [Thread-127719] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:29:06.936 [DEBUG] [Thread-127719] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:29:06.936 [DEBUG] [Thread-127719] [transport.py] [_log()] client lang: <none>
2025-11-04T03:29:06.936 [DEBUG] [Thread-127719] [transport.py] [_log()] server lang: <none>
2025-11-04T03:29:06.936 [DEBUG] [Thread-127719] [transport.py] [_log()] kex follows: False
2025-11-04T03:29:06.936 [DEBUG] [Thread-127719] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:29:06.937 [DEBUG] [Thread-127719] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:29:06.937 [DEBUG] [Thread-127719] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:29:06.937 [DEBUG] [Thread-127719] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:29:06.937 [DEBUG] [Thread-127719] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:29:06.937 [DEBUG] [Thread-127719] [transport.py] [_log()] Compression: none
2025-11-04T03:29:06.937 [DEBUG] [Thread-127719] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:29:06.978 [DEBUG] [Thread-127719] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:29:06.983 [DEBUG] [Thread-127719] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:29:06.985 [DEBUG] [Thread-127719] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:29:06.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:29:06.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:29:06.990 [DEBUG] [Thread-127719] [transport.py] [_log()] userauth is OK
2025-11-04T03:29:06.990 [DEBUG] [Thread-127719] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:29:06.990 [DEBUG] [Thread-127719] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:29:06.990 [DEBUG] [Thread-127719] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:29:06.991 [DEBUG] [Thread-127719] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:29:07.030 [INFO] [Thread-127719] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:29:07.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:29:07.069 [DEBUG] [Thread-127721 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:29:07.604 [DEBUG] [Thread-127719] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:29:07.604 [DEBUG] [Thread-127719] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:29:07.616 [DEBUG] [Thread-127719] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:29:07.645 [DEBUG] [Thread-127719] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:29:07.645 [DEBUG] [Thread-127719] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:29:07.648 [DEBUG] [Thread-127719] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:29:07.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:29:07.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:29:07.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:29:07.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:29:07.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:29:07.674 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:29:07.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:29:07.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:29:07.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:29:07.677 [DEBUG] [Thread-127719] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:29:07.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.061555 -999.00  +16.50  19.62     16   -8.70 1 1 1 1 1     0    0 28.80 148.74 ZNESW 19.2 19.6 307.0 24.1 16.9 -24.2 16.8 -23.3 16.5 -22.8 16.8 -24.0
2025-11-04T03:29:07.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:29:07.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:29:07.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.061555
2025-11-04T03:29:07.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:29:07.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:29:07.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:29:07.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:29:07.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:29:07.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:28:45', tmtdew=30.27, humidity=11.5, cloud=0.0, wind=20.68, temperature=16.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:28:46', seeing=1.11, atlas_timestamp='2025-11-04T01:28:38.352', atlas_cloud=1, atlas_rain=1, zp_data=[0.06374999999999886, 0.06625000000000014, 0.12025000000000041, 0.08449999999999847, 0.03950000000000031, 0.03825000000000145, 0.019000000000000128, 0.08225000000000016, 0.03249999999999886, 0.030000000000001137, 0.1322499999999991, 0.10099999999999909, 0.17099999999999937, 0.07925000000000004, 0.022499999999999076, 0.022499999999999076, 0.0702499999999997, 0.11849999999999916, 0.14999999999999858, 0.1347499999999986, 0.20999999999999908, 0.08824999999999861, 0.08625000000000149, 0.05025000000000013, 0.125, 0.2784999999999993, 0.11275000000000013, 0.25950000000000095, 0.19899999999999984, -0.16499999999999915, 0.20200000000000173, 0.11300000000000132, 0.13024999999999842], zp_timestamp='2025-11-04T01:27:00')
2025-11-04T03:29:07.791 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:29:07.802 [DEBUG] [Thread-127723] [transport.py] [_log()] starting thread (client mode): 0xed11420
2025-11-04T03:29:07.802 [DEBUG] [Thread-127723] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:29:07.818 [DEBUG] [Thread-127723] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:29:07.819 [INFO] [Thread-127723] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:29:07.827 [DEBUG] [Thread-127723] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:29:07.827 [DEBUG] [Thread-127723] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:29:07.827 [DEBUG] [Thread-127723] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:29:07.827 [DEBUG] [Thread-127723] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:29:07.827 [DEBUG] [Thread-127723] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:29:07.827 [DEBUG] [Thread-127723] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:29:07.828 [DEBUG] [Thread-127723] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:29:07.828 [DEBUG] [Thread-127723] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:29:07.828 [DEBUG] [Thread-127723] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:29:07.828 [DEBUG] [Thread-127723] [transport.py] [_log()] client lang: <none>
2025-11-04T03:29:07.828 [DEBUG] [Thread-127723] [transport.py] [_log()] server lang: <none>
2025-11-04T03:29:07.828 [DEBUG] [Thread-127723] [transport.py] [_log()] kex follows: False
2025-11-04T03:29:07.828 [DEBUG] [Thread-127723] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:29:07.828 [DEBUG] [Thread-127723] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:29:07.828 [DEBUG] [Thread-127723] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:29:07.828 [DEBUG] [Thread-127723] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:29:07.828 [DEBUG] [Thread-127723] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:29:07.828 [DEBUG] [Thread-127723] [transport.py] [_log()] Compression: none
2025-11-04T03:29:07.828 [DEBUG] [Thread-127723] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:29:07.886 [DEBUG] [Thread-127723] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:29:07.887 [DEBUG] [Thread-127723] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:29:07.887 [DEBUG] [Thread-127723] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:29:07.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:29:07.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:29:07.942 [DEBUG] [Thread-127723] [transport.py] [_log()] userauth is OK
2025-11-04T03:29:07.943 [DEBUG] [Thread-127723] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:29:07.943 [DEBUG] [Thread-127723] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:29:07.943 [DEBUG] [Thread-127723] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:29:07.943 [DEBUG] [Thread-127723] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:29:07.968 [INFO] [Thread-127723] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:29:07.969 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:29:07.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:29:08.801 [DEBUG] [Thread-127723] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:29:08.802 [DEBUG] [Thread-127723] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:29:08.849 [DEBUG] [Thread-127723] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:29:08.849 [DEBUG] [Thread-127723] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:29:08.858 [DEBUG] [Thread-127723] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:29:08.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:29:08.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:29:08.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:29:08.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:29:08.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:29:08.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:29:08.893 [DEBUG] [Thread-127723] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:29:21.036 [DEBUG] [Thread-127725 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:29:22.127 [DEBUG] [Thread-127726 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:29:37.219 [DEBUG] [Thread-127727 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:29:38.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:29:38.920 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:29:38.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:29:39.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 29, 18), 30.22, 11.55, 0.0, 20.61, 16.74, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:29:39.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:29:18
2025-11-04T03:29:39.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:29:40.087 [DEBUG] [Thread-127728] [transport.py] [_log()] starting thread (client mode): 0x8198fd0
2025-11-04T03:29:40.088 [DEBUG] [Thread-127728] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:29:40.101 [DEBUG] [Thread-127728] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:29:40.102 [INFO] [Thread-127728] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:29:40.107 [DEBUG] [Thread-127728] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:29:40.107 [DEBUG] [Thread-127728] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:29:40.107 [DEBUG] [Thread-127728] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:29:40.107 [DEBUG] [Thread-127728] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:29:40.107 [DEBUG] [Thread-127728] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:29:40.107 [DEBUG] [Thread-127728] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:29:40.107 [DEBUG] [Thread-127728] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:29:40.108 [DEBUG] [Thread-127728] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:29:40.108 [DEBUG] [Thread-127728] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:29:40.108 [DEBUG] [Thread-127728] [transport.py] [_log()] client lang: <none>
2025-11-04T03:29:40.108 [DEBUG] [Thread-127728] [transport.py] [_log()] server lang: <none>
2025-11-04T03:29:40.108 [DEBUG] [Thread-127728] [transport.py] [_log()] kex follows: False
2025-11-04T03:29:40.108 [DEBUG] [Thread-127728] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:29:40.109 [DEBUG] [Thread-127728] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:29:40.109 [DEBUG] [Thread-127728] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:29:40.109 [DEBUG] [Thread-127728] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:29:40.109 [DEBUG] [Thread-127728] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:29:40.109 [DEBUG] [Thread-127728] [transport.py] [_log()] Compression: none
2025-11-04T03:29:40.110 [DEBUG] [Thread-127728] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:29:40.147 [DEBUG] [Thread-127728] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:29:40.151 [DEBUG] [Thread-127728] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:29:40.154 [DEBUG] [Thread-127728] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:29:40.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:29:40.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:29:40.159 [DEBUG] [Thread-127728] [transport.py] [_log()] userauth is OK
2025-11-04T03:29:40.159 [DEBUG] [Thread-127728] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:29:40.160 [DEBUG] [Thread-127728] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:29:40.160 [DEBUG] [Thread-127728] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:29:40.160 [DEBUG] [Thread-127728] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:29:40.187 [INFO] [Thread-127728] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:29:40.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:29:40.921 [DEBUG] [Thread-127728] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:29:40.921 [DEBUG] [Thread-127728] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:29:40.930 [DEBUG] [Thread-127728] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:29:40.962 [DEBUG] [Thread-127728] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:29:40.962 [DEBUG] [Thread-127728] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:29:40.964 [DEBUG] [Thread-127728] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:29:40.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:29:40.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:29:40.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:29:40.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:29:40.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:29:40.990 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:29:40.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:29:40.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:29:40.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:29:40.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.061902 -999.00  +16.50  19.74     16   -8.80 1 1 1 1 1     0    0 29.44 149.21 ZNESW 21.9 19.7 306.2 25.3 16.9 -24.1 16.8 -23.2 16.6 -22.8 16.8 -23.9
2025-11-04T03:29:40.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:29:40.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:29:40.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.061902
2025-11-04T03:29:40.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:29:40.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:29:40.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:29:40.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:29:40.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:29:41.000 [DEBUG] [Thread-127728] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:29:41.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:29:18', tmtdew=30.22, humidity=11.55, cloud=0.0, wind=20.61, temperature=16.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:29:18', seeing=1.01, atlas_timestamp='2025-11-04T01:29:08.333', atlas_cloud=1, atlas_rain=1, zp_data=[0.06374999999999886, 0.06625000000000014, 0.12025000000000041, 0.08449999999999847, 0.03950000000000031, 0.03825000000000145, 0.019000000000000128, 0.08225000000000016, 0.03249999999999886, 0.030000000000001137, 0.1322499999999991, 0.10099999999999909, 0.17099999999999937, 0.07925000000000004, 0.022499999999999076, 0.022499999999999076, 0.0702499999999997, 0.11849999999999916, 0.14999999999999858, 0.1347499999999986, 0.20999999999999908, 0.08824999999999861, 0.08625000000000149, 0.05025000000000013, 0.125, 0.2784999999999993, 0.11275000000000013, 0.25950000000000095, 0.19899999999999984, -0.16499999999999915, 0.20200000000000173, 0.11300000000000132, 0.13024999999999842], zp_timestamp='2025-11-04T01:27:00')
2025-11-04T03:29:41.075 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:29:41.091 [DEBUG] [Thread-127731] [transport.py] [_log()] starting thread (client mode): 0xedd5a20
2025-11-04T03:29:41.091 [DEBUG] [Thread-127731] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:29:41.107 [DEBUG] [Thread-127731] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:29:41.107 [INFO] [Thread-127731] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:29:41.116 [DEBUG] [Thread-127731] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:29:41.116 [DEBUG] [Thread-127731] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:29:41.117 [DEBUG] [Thread-127731] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:29:41.117 [DEBUG] [Thread-127731] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:29:41.117 [DEBUG] [Thread-127731] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:29:41.117 [DEBUG] [Thread-127731] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:29:41.117 [DEBUG] [Thread-127731] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:29:41.117 [DEBUG] [Thread-127731] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:29:41.117 [DEBUG] [Thread-127731] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:29:41.117 [DEBUG] [Thread-127731] [transport.py] [_log()] client lang: <none>
2025-11-04T03:29:41.117 [DEBUG] [Thread-127731] [transport.py] [_log()] server lang: <none>
2025-11-04T03:29:41.118 [DEBUG] [Thread-127731] [transport.py] [_log()] kex follows: False
2025-11-04T03:29:41.118 [DEBUG] [Thread-127731] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:29:41.118 [DEBUG] [Thread-127731] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:29:41.118 [DEBUG] [Thread-127731] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:29:41.118 [DEBUG] [Thread-127731] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:29:41.118 [DEBUG] [Thread-127731] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:29:41.118 [DEBUG] [Thread-127731] [transport.py] [_log()] Compression: none
2025-11-04T03:29:41.119 [DEBUG] [Thread-127731] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:29:41.187 [DEBUG] [Thread-127731] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:29:41.187 [DEBUG] [Thread-127731] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:29:41.188 [DEBUG] [Thread-127731] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:29:41.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:29:41.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:29:41.251 [DEBUG] [Thread-127731] [transport.py] [_log()] userauth is OK
2025-11-04T03:29:41.251 [DEBUG] [Thread-127731] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:29:41.251 [DEBUG] [Thread-127731] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:29:41.251 [DEBUG] [Thread-127731] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:29:41.252 [DEBUG] [Thread-127731] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:29:41.280 [INFO] [Thread-127731] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:29:41.280 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:29:41.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:29:42.100 [DEBUG] [Thread-127731] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:29:42.100 [DEBUG] [Thread-127731] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:29:42.150 [DEBUG] [Thread-127731] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:29:42.150 [DEBUG] [Thread-127731] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:29:42.159 [DEBUG] [Thread-127731] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:29:42.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:29:42.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:29:42.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:29:42.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:29:42.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:29:42.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:29:42.206 [DEBUG] [Thread-127731] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:29:52.268 [DEBUG] [Thread-127733 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:29:56.843 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:29:56.844 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:30:07.389 [DEBUG] [Thread-127734 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:30:12.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:30:12.229 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:30:12.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:30:13.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 29, 50), 30.14, 11.57, 0.0, 19.11, 16.61, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:30:13.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:29:50
2025-11-04T03:30:13.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:30:13.840 [DEBUG] [Thread-127735] [transport.py] [_log()] starting thread (client mode): 0x141dbcd0
2025-11-04T03:30:13.841 [DEBUG] [Thread-127735] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:30:13.857 [DEBUG] [Thread-127735] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:30:13.857 [INFO] [Thread-127735] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:30:13.860 [DEBUG] [Thread-127735] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:30:13.860 [DEBUG] [Thread-127735] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:30:13.860 [DEBUG] [Thread-127735] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:30:13.860 [DEBUG] [Thread-127735] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:30:13.860 [DEBUG] [Thread-127735] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:30:13.860 [DEBUG] [Thread-127735] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:30:13.860 [DEBUG] [Thread-127735] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:30:13.860 [DEBUG] [Thread-127735] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:30:13.860 [DEBUG] [Thread-127735] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:30:13.860 [DEBUG] [Thread-127735] [transport.py] [_log()] client lang: <none>
2025-11-04T03:30:13.860 [DEBUG] [Thread-127735] [transport.py] [_log()] server lang: <none>
2025-11-04T03:30:13.860 [DEBUG] [Thread-127735] [transport.py] [_log()] kex follows: False
2025-11-04T03:30:13.860 [DEBUG] [Thread-127735] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:30:13.861 [DEBUG] [Thread-127735] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:30:13.861 [DEBUG] [Thread-127735] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:30:13.861 [DEBUG] [Thread-127735] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:30:13.861 [DEBUG] [Thread-127735] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:30:13.861 [DEBUG] [Thread-127735] [transport.py] [_log()] Compression: none
2025-11-04T03:30:13.861 [DEBUG] [Thread-127735] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:30:13.896 [DEBUG] [Thread-127735] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:30:13.899 [DEBUG] [Thread-127735] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:30:13.900 [DEBUG] [Thread-127735] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:30:13.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:30:13.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:30:13.903 [DEBUG] [Thread-127735] [transport.py] [_log()] userauth is OK
2025-11-04T03:30:13.903 [DEBUG] [Thread-127735] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:30:13.903 [DEBUG] [Thread-127735] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:30:13.903 [DEBUG] [Thread-127735] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:30:13.903 [DEBUG] [Thread-127735] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:30:13.920 [INFO] [Thread-127735] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:30:13.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:30:16.081 [DEBUG] [Thread-127735] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:30:16.082 [DEBUG] [Thread-127735] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:30:16.084 [DEBUG] [Thread-127735] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:30:16.121 [DEBUG] [Thread-127735] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:30:16.121 [DEBUG] [Thread-127735] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:30:16.124 [DEBUG] [Thread-127735] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:30:16.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:30:16.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:30:16.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:30:16.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:30:16.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:30:16.282 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:30:16.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:30:16.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:30:16.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:30:16.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.062249 -999.00  +16.50  15.11     16   -8.80 1 1 1 1 1     0    0 28.91 140.82 ZNESW 18.0 15.1 308.4 25.3 16.9 -24.2 16.8 -23.2 16.6 -22.9 16.8 -23.8
2025-11-04T03:30:16.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:30:16.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:30:16.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.062249
2025-11-04T03:30:16.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:30:16.301 [DEBUG] [Thread-127735] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:30:16.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:30:16.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:30:16.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:30:16.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:30:16.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:29:50', tmtdew=30.14, humidity=11.57, cloud=0.0, wind=19.11, temperature=16.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:29:51', seeing=1.1, atlas_timestamp='2025-11-04T01:29:38.314', atlas_cloud=1, atlas_rain=1, zp_data=[0.06374999999999886, 0.06625000000000014, 0.12025000000000041, 0.08449999999999847, 0.03950000000000031, 0.03825000000000145, 0.019000000000000128, 0.08225000000000016, 0.03249999999999886, 0.030000000000001137, 0.1322499999999991, 0.10099999999999909, 0.17099999999999937, 0.07925000000000004, 0.022499999999999076, 0.022499999999999076, 0.0702499999999997, 0.11849999999999916, 0.14999999999999858, 0.1347499999999986, 0.20999999999999908, 0.08824999999999861, 0.08625000000000149, 0.05025000000000013, 0.125, 0.2784999999999993, 0.11275000000000013, 0.25950000000000095, 0.19899999999999984, -0.16499999999999915, 0.20200000000000173, 0.11300000000000132, 0.13024999999999842], zp_timestamp='2025-11-04T01:27:00')
2025-11-04T03:30:16.375 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:30:16.386 [DEBUG] [Thread-127738] [transport.py] [_log()] starting thread (client mode): 0x141da170
2025-11-04T03:30:16.386 [DEBUG] [Thread-127738] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:30:16.401 [DEBUG] [Thread-127738] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:30:16.402 [INFO] [Thread-127738] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:30:16.409 [DEBUG] [Thread-127738] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:30:16.409 [DEBUG] [Thread-127738] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:30:16.409 [DEBUG] [Thread-127738] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:30:16.409 [DEBUG] [Thread-127738] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:30:16.409 [DEBUG] [Thread-127738] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:30:16.409 [DEBUG] [Thread-127738] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:30:16.409 [DEBUG] [Thread-127738] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:30:16.409 [DEBUG] [Thread-127738] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:30:16.409 [DEBUG] [Thread-127738] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:30:16.409 [DEBUG] [Thread-127738] [transport.py] [_log()] client lang: <none>
2025-11-04T03:30:16.409 [DEBUG] [Thread-127738] [transport.py] [_log()] server lang: <none>
2025-11-04T03:30:16.409 [DEBUG] [Thread-127738] [transport.py] [_log()] kex follows: False
2025-11-04T03:30:16.409 [DEBUG] [Thread-127738] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:30:16.409 [DEBUG] [Thread-127738] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:30:16.410 [DEBUG] [Thread-127738] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:30:16.410 [DEBUG] [Thread-127738] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:30:16.410 [DEBUG] [Thread-127738] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:30:16.410 [DEBUG] [Thread-127738] [transport.py] [_log()] Compression: none
2025-11-04T03:30:16.410 [DEBUG] [Thread-127738] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:30:16.464 [DEBUG] [Thread-127738] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:30:16.464 [DEBUG] [Thread-127738] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:30:16.464 [DEBUG] [Thread-127738] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:30:16.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:30:16.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:30:16.521 [DEBUG] [Thread-127738] [transport.py] [_log()] userauth is OK
2025-11-04T03:30:16.521 [DEBUG] [Thread-127738] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:30:16.521 [DEBUG] [Thread-127738] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:30:16.521 [DEBUG] [Thread-127738] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:30:16.521 [DEBUG] [Thread-127738] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:30:16.535 [INFO] [Thread-127738] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:30:16.535 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:30:16.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:30:17.405 [DEBUG] [Thread-127738] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:30:17.405 [DEBUG] [Thread-127738] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:30:17.453 [DEBUG] [Thread-127738] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:30:17.453 [DEBUG] [Thread-127738] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:30:17.463 [DEBUG] [Thread-127738] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:30:17.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:30:17.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:30:17.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:30:17.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:30:17.495 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:30:17.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:30:17.503 [DEBUG] [Thread-127738] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:30:21.405 [DEBUG] [Thread-127740 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:30:22.432 [DEBUG] [Thread-127741 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:30:37.526 [DEBUG] [Thread-127742 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:30:39.253 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:30:42.402 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:30:47.427 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:30:47.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:30:47.505 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:30:47.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:30:48.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 30, 23), 30.1, 11.6, 0.0, 18.84, 16.58, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:30:48.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:30:23
2025-11-04T03:30:48.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:30:48.659 [DEBUG] [Thread-127743] [transport.py] [_log()] starting thread (client mode): 0x11760e20
2025-11-04T03:30:48.660 [DEBUG] [Thread-127743] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:30:48.673 [DEBUG] [Thread-127743] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:30:48.673 [INFO] [Thread-127743] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:30:48.678 [DEBUG] [Thread-127743] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:30:48.678 [DEBUG] [Thread-127743] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:30:48.679 [DEBUG] [Thread-127743] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:30:48.679 [DEBUG] [Thread-127743] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:30:48.679 [DEBUG] [Thread-127743] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:30:48.679 [DEBUG] [Thread-127743] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:30:48.679 [DEBUG] [Thread-127743] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:30:48.679 [DEBUG] [Thread-127743] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:30:48.679 [DEBUG] [Thread-127743] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:30:48.679 [DEBUG] [Thread-127743] [transport.py] [_log()] client lang: <none>
2025-11-04T03:30:48.679 [DEBUG] [Thread-127743] [transport.py] [_log()] server lang: <none>
2025-11-04T03:30:48.680 [DEBUG] [Thread-127743] [transport.py] [_log()] kex follows: False
2025-11-04T03:30:48.680 [DEBUG] [Thread-127743] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:30:48.681 [DEBUG] [Thread-127743] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:30:48.681 [DEBUG] [Thread-127743] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:30:48.681 [DEBUG] [Thread-127743] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:30:48.681 [DEBUG] [Thread-127743] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:30:48.681 [DEBUG] [Thread-127743] [transport.py] [_log()] Compression: none
2025-11-04T03:30:48.681 [DEBUG] [Thread-127743] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:30:48.717 [DEBUG] [Thread-127743] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:30:48.722 [DEBUG] [Thread-127743] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:30:48.724 [DEBUG] [Thread-127743] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:30:48.726 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:30:48.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:30:48.729 [DEBUG] [Thread-127743] [transport.py] [_log()] userauth is OK
2025-11-04T03:30:48.730 [DEBUG] [Thread-127743] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:30:48.730 [DEBUG] [Thread-127743] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:30:48.730 [DEBUG] [Thread-127743] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:30:48.730 [DEBUG] [Thread-127743] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:30:48.769 [INFO] [Thread-127743] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:30:48.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:30:49.418 [DEBUG] [Thread-127743] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:30:49.418 [DEBUG] [Thread-127743] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:30:49.428 [DEBUG] [Thread-127743] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:30:49.460 [DEBUG] [Thread-127743] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:30:49.460 [DEBUG] [Thread-127743] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:30:49.464 [DEBUG] [Thread-127743] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:30:49.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:30:49.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:30:49.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:30:49.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:30:49.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:30:49.490 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:30:49.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:30:49.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:30:49.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:30:49.492 [DEBUG] [Thread-127743] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:30:49.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.062596 -999.00  +16.50  20.73     16   -8.80 1 1 1 1 1     0    0 28.93 140.26 ZNESW 18.1 20.7 307.2 22.0 16.9 -24.2 16.8 -23.2 16.6 -22.9 16.8 -23.8
2025-11-04T03:30:49.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:30:49.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:30:49.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.062596
2025-11-04T03:30:49.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:30:49.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:30:49.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:30:49.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:30:49.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:30:49.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:30:23', tmtdew=30.1, humidity=11.6, cloud=0.0, wind=18.84, temperature=16.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:30:24', seeing=1.1, atlas_timestamp='2025-11-04T01:30:08.294', atlas_cloud=1, atlas_rain=1, zp_data=[0.06374999999999886, 0.06625000000000014, 0.12025000000000041, 0.08449999999999847, 0.03950000000000031, 0.03825000000000145, 0.019000000000000128, 0.08225000000000016, 0.03249999999999886, 0.030000000000001137, 0.1322499999999991, 0.10099999999999909, 0.17099999999999937, 0.07925000000000004, 0.022499999999999076, 0.022499999999999076, 0.0702499999999997, 0.11849999999999916, 0.14999999999999858, 0.1347499999999986, 0.20999999999999908, 0.08824999999999861, 0.08625000000000149, 0.05025000000000013, 0.125, 0.2784999999999993, 0.11275000000000013, 0.25950000000000095, 0.19899999999999984, -0.16499999999999915, 0.20200000000000173, 0.11300000000000132, 0.13024999999999842], zp_timestamp='2025-11-04T01:27:00')
2025-11-04T03:30:49.594 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:30:49.609 [DEBUG] [Thread-127746] [transport.py] [_log()] starting thread (client mode): 0x11761a50
2025-11-04T03:30:49.609 [DEBUG] [Thread-127746] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:30:49.628 [DEBUG] [Thread-127746] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:30:49.628 [INFO] [Thread-127746] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:30:49.637 [DEBUG] [Thread-127746] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:30:49.637 [DEBUG] [Thread-127746] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:30:49.641 [DEBUG] [Thread-127746] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:30:49.641 [DEBUG] [Thread-127746] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:30:49.641 [DEBUG] [Thread-127746] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:30:49.641 [DEBUG] [Thread-127746] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:30:49.641 [DEBUG] [Thread-127746] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:30:49.641 [DEBUG] [Thread-127746] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:30:49.641 [DEBUG] [Thread-127746] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:30:49.641 [DEBUG] [Thread-127746] [transport.py] [_log()] client lang: <none>
2025-11-04T03:30:49.642 [DEBUG] [Thread-127746] [transport.py] [_log()] server lang: <none>
2025-11-04T03:30:49.642 [DEBUG] [Thread-127746] [transport.py] [_log()] kex follows: False
2025-11-04T03:30:49.642 [DEBUG] [Thread-127746] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:30:49.642 [DEBUG] [Thread-127746] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:30:49.642 [DEBUG] [Thread-127746] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:30:49.642 [DEBUG] [Thread-127746] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:30:49.642 [DEBUG] [Thread-127746] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:30:49.642 [DEBUG] [Thread-127746] [transport.py] [_log()] Compression: none
2025-11-04T03:30:49.642 [DEBUG] [Thread-127746] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:30:49.700 [DEBUG] [Thread-127746] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:30:49.701 [DEBUG] [Thread-127746] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:30:49.701 [DEBUG] [Thread-127746] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:30:49.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:30:49.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:30:49.759 [DEBUG] [Thread-127746] [transport.py] [_log()] userauth is OK
2025-11-04T03:30:49.759 [DEBUG] [Thread-127746] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:30:49.759 [DEBUG] [Thread-127746] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:30:49.759 [DEBUG] [Thread-127746] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:30:49.759 [DEBUG] [Thread-127746] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:30:49.777 [INFO] [Thread-127746] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:30:49.777 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:30:49.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:30:50.658 [DEBUG] [Thread-127746] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:30:50.658 [DEBUG] [Thread-127746] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:30:50.710 [DEBUG] [Thread-127746] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:30:50.711 [DEBUG] [Thread-127746] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:30:50.724 [DEBUG] [Thread-127746] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:30:50.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:30:50.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:30:50.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:30:50.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:30:50.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:30:50.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:30:50.785 [DEBUG] [Thread-127746] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:30:52.570 [DEBUG] [Thread-127748 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:30:52.802 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:30:57.059 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:30:57.060 [DEBUG] [Thread-12 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:31:07.679 [DEBUG] [Thread-127749 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:31:12.188 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:31:16.565 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:31:20.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:31:20.816 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:31:20.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:31:21.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 30, 56), 30.15, 11.65, 0.0, 21.3, 16.63, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:31:21.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:30:56
2025-11-04T03:31:21.692 [DEBUG] [Thread-127750 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:31:21.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:31:21.988 [DEBUG] [Thread-127751] [transport.py] [_log()] starting thread (client mode): 0x117bcc40
2025-11-04T03:31:21.989 [DEBUG] [Thread-127751] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:31:22.000 [DEBUG] [Thread-127751] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:31:22.000 [INFO] [Thread-127751] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:31:22.005 [DEBUG] [Thread-127751] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:31:22.005 [DEBUG] [Thread-127751] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:31:22.005 [DEBUG] [Thread-127751] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:31:22.005 [DEBUG] [Thread-127751] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:31:22.005 [DEBUG] [Thread-127751] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:31:22.005 [DEBUG] [Thread-127751] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:31:22.005 [DEBUG] [Thread-127751] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:31:22.005 [DEBUG] [Thread-127751] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:31:22.005 [DEBUG] [Thread-127751] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:31:22.005 [DEBUG] [Thread-127751] [transport.py] [_log()] client lang: <none>
2025-11-04T03:31:22.005 [DEBUG] [Thread-127751] [transport.py] [_log()] server lang: <none>
2025-11-04T03:31:22.005 [DEBUG] [Thread-127751] [transport.py] [_log()] kex follows: False
2025-11-04T03:31:22.005 [DEBUG] [Thread-127751] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:31:22.006 [DEBUG] [Thread-127751] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:31:22.006 [DEBUG] [Thread-127751] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:31:22.006 [DEBUG] [Thread-127751] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:31:22.006 [DEBUG] [Thread-127751] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:31:22.006 [DEBUG] [Thread-127751] [transport.py] [_log()] Compression: none
2025-11-04T03:31:22.006 [DEBUG] [Thread-127751] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:31:22.045 [DEBUG] [Thread-127751] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:31:22.048 [DEBUG] [Thread-127751] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:31:22.050 [DEBUG] [Thread-127751] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-04T03:31:22.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-04T03:31:22.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:31:22.054 [DEBUG] [Thread-127751] [transport.py] [_log()] userauth is OK
2025-11-04T03:31:22.054 [DEBUG] [Thread-127751] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:31:22.054 [DEBUG] [Thread-127751] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:31:22.054 [DEBUG] [Thread-127751] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-04T03:31:22.054 [DEBUG] [Thread-127751] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:31:22.084 [INFO] [Thread-127751] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:31:22.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:31:22.728 [DEBUG] [Thread-127753 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:31:22.861 [DEBUG] [Thread-127751] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:31:22.861 [DEBUG] [Thread-127751] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:31:22.862 [DEBUG] [Thread-127751] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-04T03:31:22.902 [DEBUG] [Thread-127751] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:31:22.902 [DEBUG] [Thread-127751] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:31:22.904 [DEBUG] [Thread-127751] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:31:22.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:31:22.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-04T03:31:22.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-04T03:31:22.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-04T03:31:22.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:31:22.919 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-04T03:31:22.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:31:22.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:31:22.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-04T03:31:22.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60983.062944 -999.00  +16.40  20.65     16   -8.70 1 1 1 1 1     0    0 29.00 133.20 ZNESW 18.7 20.6 314.2 24.7 16.9 -24.1 16.8 -23.1 16.6 -23.0 16.8 -23.7
2025-11-04T03:31:22.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-04T03:31:22.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-04T03:31:22.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60983.062944
2025-11-04T03:31:22.927 [DEBUG] [Thread-127751] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:31:22.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-04T03:31:22.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-04T03:31:22.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-04T03:31:22.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-04T03:31:22.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-04T03:31:22.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-04T03:30:56', tmtdew=30.15, humidity=11.65, cloud=0.0, wind=21.3, temperature=16.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-04T03:30:56', seeing=0.94, atlas_timestamp='2025-11-04T01:30:38.362', atlas_cloud=1, atlas_rain=1, zp_data=[0.06374999999999886, 0.06625000000000014, 0.12025000000000041, 0.08449999999999847, 0.03950000000000031, 0.03825000000000145, 0.019000000000000128, 0.08225000000000016, 0.03249999999999886, 0.030000000000001137, 0.1322499999999991, 0.10099999999999909, 0.17099999999999937, 0.07925000000000004, 0.022499999999999076, 0.022499999999999076, 0.0702499999999997, 0.11849999999999916, 0.14999999999999858, 0.1347499999999986, 0.20999999999999908, 0.08824999999999861, 0.08625000000000149, 0.05025000000000013, 0.125, 0.2784999999999993, 0.11275000000000013, 0.25950000000000095, 0.19899999999999984, -0.16499999999999915, 0.20200000000000173, 0.11300000000000132, 0.13024999999999842], zp_timestamp='2025-11-04T01:27:00')
2025-11-04T03:31:23.017 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-04T03:31:23.030 [DEBUG] [Thread-127755] [transport.py] [_log()] starting thread (client mode): 0x141da170
2025-11-04T03:31:23.030 [DEBUG] [Thread-127755] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:31:23.046 [DEBUG] [Thread-127755] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-04T03:31:23.047 [INFO] [Thread-127755] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-04T03:31:23.058 [DEBUG] [Thread-127755] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:31:23.058 [DEBUG] [Thread-127755] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-04T03:31:23.058 [DEBUG] [Thread-127755] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:31:23.058 [DEBUG] [Thread-127755] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:31:23.058 [DEBUG] [Thread-127755] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:31:23.058 [DEBUG] [Thread-127755] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:31:23.058 [DEBUG] [Thread-127755] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:31:23.058 [DEBUG] [Thread-127755] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:31:23.058 [DEBUG] [Thread-127755] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:31:23.058 [DEBUG] [Thread-127755] [transport.py] [_log()] client lang: <none>
2025-11-04T03:31:23.058 [DEBUG] [Thread-127755] [transport.py] [_log()] server lang: <none>
2025-11-04T03:31:23.058 [DEBUG] [Thread-127755] [transport.py] [_log()] kex follows: False
2025-11-04T03:31:23.058 [DEBUG] [Thread-127755] [transport.py] [_log()] === Key exchange agreements ===
2025-11-04T03:31:23.058 [DEBUG] [Thread-127755] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-04T03:31:23.058 [DEBUG] [Thread-127755] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-04T03:31:23.058 [DEBUG] [Thread-127755] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-04T03:31:23.058 [DEBUG] [Thread-127755] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-04T03:31:23.058 [DEBUG] [Thread-127755] [transport.py] [_log()] Compression: none
2025-11-04T03:31:23.058 [DEBUG] [Thread-127755] [transport.py] [_log()] === End of kex handshake ===
2025-11-04T03:31:23.117 [DEBUG] [Thread-127755] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-04T03:31:23.118 [DEBUG] [Thread-127755] [transport.py] [_log()] Switch to new keys ...
2025-11-04T03:31:23.118 [DEBUG] [Thread-127755] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-04T03:31:23.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-04T03:31:23.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-04T03:31:23.174 [DEBUG] [Thread-127755] [transport.py] [_log()] userauth is OK
2025-11-04T03:31:23.174 [DEBUG] [Thread-127755] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-04T03:31:23.175 [DEBUG] [Thread-127755] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-04T03:31:23.175 [DEBUG] [Thread-127755] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-04T03:31:23.175 [DEBUG] [Thread-127755] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-04T03:31:23.193 [INFO] [Thread-127755] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-04T03:31:23.193 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-04T03:31:23.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-04T03:31:24.020 [DEBUG] [Thread-127755] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-04T03:31:24.020 [DEBUG] [Thread-127755] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-04T03:31:24.070 [DEBUG] [Thread-127755] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-04T03:31:24.070 [DEBUG] [Thread-127755] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-04T03:31:24.080 [DEBUG] [Thread-127755] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-04T03:31:24.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-04T03:31:24.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-04T03:31:24.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-04T03:31:24.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-04T03:31:24.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-04T03:31:24.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-04T03:31:24.115 [DEBUG] [Thread-127755] [transport.py] [_log()] EOF in transport thread
2025-11-04T03:31:35.955 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:31:37.767 [DEBUG] [Thread-127757 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:31:40.375 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:31:46.461 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:31:50.840 [DEBUG] [Thread-45587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:31:52.899 [DEBUG] [Thread-127758 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-04T03:31:54.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-04T03:31:54.138 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-04T03:31:54.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-04T03:31:54.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 4, 3, 31, 28), 30.19, 11.62, 0.0, 21.6, 16.64, 0, 0, 0, 2, 0, 0),)
2025-11-04T03:31:54.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-04 03:31:28
2025-11-04T03:31:55.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-04T03:31:55.194 [DEBUG] [Thread-127759] [transport.py] [_log()] starting thread (client mode): 0x117bd930
2025-11-04T03:31:55.195 [DEBUG] [Thread-127759] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-04T03:31:55.208 [DEBUG] [Thread-127759] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-04T03:31:55.208 [INFO] [Thread-127759] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-04T03:31:55.211 [DEBUG] [Thread-127759] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-04T03:31:55.212 [DEBUG] [Thread-127759] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-04T03:31:55.212 [DEBUG] [Thread-127759] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-04T03:31:55.212 [DEBUG] [Thread-127759] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:31:55.212 [DEBUG] [Thread-127759] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-04T03:31:55.212 [DEBUG] [Thread-127759] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:31:55.212 [DEBUG] [Thread-127759] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-04T03:31:55.212 [DEBUG] [Thread-127759] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-04T03:31:55.212 [DEBUG] [Thread-127759] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-04T03:31:5
[file cut: first 33554432 bytes kept]
[document cut: first 32644900 of 33554432 characters kept]
